From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 4/6] xen/arm: zynqmp: eemi access control Date: Fri, 10 Aug 2018 17:01:48 -0700 Message-ID: <1533945710-15159-4-git-send-email-sstabellini@kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: edgar.iglesias@xilinx.com, Stefano Stabellini , julien.grall@arm.com, sstabellini@kernel.org List-Id: xen-devel@lists.xenproject.org RnJvbTogIkVkZ2FyIEUuIElnbGVzaWFzIiA8ZWRnYXIuaWdsZXNpYXNAeGlsaW54LmNvbT4KCkZy b206IEVkZ2FyIEUuIElnbGVzaWFzIDxlZGdhci5pZ2xlc2lhc0B4aWxpbnguY29tPgoKSW50cm9k dWNlIGRhdGEgc3RydWN0cyB0byBpbXBsZW1lbnQgYmFzaWMgYWNjZXNzIGNvbnRyb2xzLgpJbnRy b2R1Y2UgdGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnM6Cgpkb21haW5faGFzX25vZGVfYWNj ZXNzOiBjaGVjayBhY2Nlc3MgdG8gdGhlIG5vZGUKZG9tYWluX2hhc19yZXNldF9hY2Nlc3M6IGNo ZWNrIGFjY2VzcyB0byB0aGUgcmVzZXQgbGluZQpkb21haW5faGFzX21taW9fYWNjZXNzOiBjaGVj ayBhY2Nlc3MgdG8gdGhlIHJlZ2lzdGVyCgpTaWduZWQtb2ZmLWJ5OiBFZGdhciBFLiBJZ2xlc2lh cyA8ZWRnYXIuaWdsZXNpYXNAeGlsaW54LmNvbT4KU2lnbmVkLW9mZi1ieTogU3RlZmFubyBTdGFi ZWxsaW5pIDxzdGVmYW5vc0B4aWxpbnguY29tPgotLS0KIHhlbi9hcmNoL2FybS9wbGF0Zm9ybXMv eGlsaW54LXp5bnFtcC1lZW1pLmMgfCA3ODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDc4MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv YXJtL3BsYXRmb3Jtcy94aWxpbngtenlucW1wLWVlbWkuYyBiL3hlbi9hcmNoL2FybS9wbGF0Zm9y bXMveGlsaW54LXp5bnFtcC1lZW1pLmMKaW5kZXggYzNhMTllOS4uNjJjYzE1YyAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy94aWxpbngtenlucW1wLWVlbWkuYworKysgYi94ZW4v YXJjaC9hcm0vcGxhdGZvcm1zL3hpbGlueC16eW5xbXAtZWVtaS5jCkBAIC0xNiw2ICsxNiw3NCBA QAogICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqLwog CisvKgorICogIEVFTUkgUG93ZXIgTWFuYWdlbWVudCBBUEkgYWNjZXNzCisgKgorICogUmVmczoK KyAqIGh0dHBzOi8vd3d3LnhpbGlueC5jb20vc3VwcG9ydC9kb2N1bWVudGF0aW9uL3VzZXJfZ3Vp ZGVzL3VnMTIwMC1lZW1pLWFwaS5wZGYKKyAqCisgKiBCYWNrZ3JvdW5kOgorICogVGhlIFp5bnFN UCBoYXMgYSBzdWJzeXN0ZW0gbmFtZWQgdGhlIFBNVSB3aXRoIGEgQ1BVIGFuZCBzcGVjaWFsIGRl dmljZXMKKyAqIGRlZGljYXRlZCB0byBydW5uaW5nIFBvd2VyIE1hbmFnZW1lbnQgRmlybXdhcmUu IE90aGVyIG1hc3RlcnMgaW4gdGhlCisgKiBzeXN0ZW0gbmVlZCB0byBzZW5kIHJlcXVlc3RzIHRv IHRoZSBQTVUgaW4gb3JkZXIgdG8gZm9yIGV4YW1wbGU6CisgKiAqIE1hbmFnZSBwb3dlciBzdGF0 ZQorICogKiBDb25maWd1cmUgY2xvY2tzCisgKiAqIFByb2dyYW0gYml0c3RyZWFtcyBmb3IgdGhl IHByb2dyYW1tYWJsZSBsb2dpYworICogKiBldGMKKyAqCisgKiBBbHRob3VnaCB0aGUgZGV0YWls cyBvZiB0aGUgc2V0dXAgYXJlIGNvbmZpZ3VyYWJsZSwgaW4gdGhlIGNvbW1vbiBjYXNlCisgKiB0 aGUgUE1VIGxpdmVzIGluIHRoZSBTZWN1cmUgd29ybGQuIE5TIFdvcmxkIGNhbm5vdCBkaXJlY3Rs eSBjb21tdW5pY2F0ZQorICogd2l0aCBpdCBhbmQgbXVzdCB1c2UgcHJveHkgc2VydmljZXMgZnJv bSBBUk0gVHJ1c3RlZCBGaXJtd2FyZSB0byByZWFjaAorICogdGhlIFBNVS4KKyAqCisgKiBQb3dl ciBNYW5hZ2VtZW50IG9uIHRoZSBaeW5xTVAgaXMgaW1wbGVtZW50ZWQgaW4gYSBsYXllcmVkIG1h bm5lci4KKyAqIFRoZSBQTVUga25vd3MgYWJvdXQgdmFyaW91cyBtYXN0ZXJzIGFuZCB3aWxsIGVu Zm9yY2UgYWNjZXNzIGNvbnRyb2xzCisgKiBiYXNlZCBvbiBhIHByZS1jb25maWd1cmVkIHBhcnRp dGlvbmluZy4gVGhpcyBjb25maWd1cmF0aW9uIGRpY3RhdGVzCisgKiB3aGljaCBkZXZpY2VzIGFy ZSBvd25lZCBieSB0aGUgdmFyaW91cyBtYXN0ZXJzIGFuZCB0aGUgUE1VIEZXIG1ha2VzIHN1cmUK KyAqIHRoYXQgYSBnaXZlbiBtYXN0ZXIgY2Fubm90IHR1cm4gb2ZmIGEgZGV2aWNlIHRoYXQgaXQg ZG9lcyBub3Qgb3duIG9yIHRoYXQKKyAqIGlzIGluIHVzZSBieSBvdGhlciBtYXN0ZXJzLgorICoK KyAqIFRoZSBQTVUgaXMgbm90IGF3YXJlIG9mIG11bHRpcGxlIGV4ZWN1dGlvbiBzdGF0ZXMgaW4g bWFzdGVycy4KKyAqIEZvciBleGFtcGxlLCBpdCB0cmVhdHMgdGhlIEFSTXY4IGNvcmVzIGFzIHNp bmdsZSB1bml0cyBhbmQgZG9lcyBub3QKKyAqIGRpc3Rpbmd1aXNoIGJldHdlZW4gU2VjdXJlIHZz IE5TIE9TJ3Mgbm9yIGRvZXMgaXQga25vdyBhYm91dCBIeXBlcnZpc29ycworICogYW5kIG11bHRp cGxlIGd1ZXN0cy4gSXQgaXMgdXAgdG8gc29mdHdhcmUgb24gdGhlIEFSTXY4IGNvcmVzIHRvIHBy ZXNlbnQKKyAqIGEgdW5pZmllZCB2aWV3IG9mIGl0cyBwb3dlciByZXF1aXJlbWVudHMuCisgKgor ICogVG8gaW1wbGVtZW50IHRoaXMgdW5pZmllZCB2aWV3LCBBUk0gVHJ1c3RlZCBGaXJtd2FyZSBh dCBFTDMgcHJvdmlkZXMKKyAqIGFjY2VzcyB0byB0aGUgUE0gQVBJIHZpYSBTTUMgY2FsbHMuIEFS TSBUcnVzdGVkIEZpcm13YXJlIGlzIHJlc3BvbnNpYmxlCisgKiBmb3IgbWVkaWF0aW5nIGJldHdl ZW4gdGhlIFNlY3VyZSBhbmQgdGhlIE5TIHdvcmxkLCByZWplY3RpbmcgU01DIGNhbGxzCisgKiB0 aGF0IHJlcXVlc3QgY2hhbmdlcyB0aGF0IGFyZSBub3QgYWxsb3dlZC4KKyAqCisgKiBYZW4gcnVu bmluZyBhYm92ZSBBVEYgb3ducyB0aGUgTlMgd29ybGQgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBw cmVzZW50aW5nCisgKiB1bmlmaWVkIFBNIHJlcXVlc3RzIHRha2luZyBhbGwgZ3Vlc3RzIGFuZCB0 aGUgaHlwZXJ2aXNvciBpbnRvIGFjY291bnQuCisgKgorICogSW1wbGVtZW50YXRpb246CisgKiBU aGUgUE0gQVBJIGNvbnRhaW5zIGRpZmZlcmVudCBjbGFzc2VzIG9mIGNhbGxzLgorICogQ2VydGFp biBjYWxscyBhcmUgaGFybWxlc3MgdG8gZXhwb3NlIHRvIGFueSBndWVzdC4KKyAqIFRoZXNlIGlu Y2x1ZGUgY2FsbHMgdG8gZ2V0IHRoZSBQTSBBUEkgVmVyc2lvbiwgb3IgdG8gcmVhZCBvdXQgdGhl IHZlcnNpb24KKyAqIG9mIHRoZSBjaGlwIHdlJ3JlIHJ1bm5pbmcgb24uCisgKgorICogSW4gb3Jk ZXIgdG8gY29ycmVjdGx5IHZpcnR1YWxpemUgdGhlc2UgY2FsbHMsIHdlIG5lZWQgdG8ga25vdyBp ZgorICogZ3Vlc3RzIGlzc3VpbmcgdGhlc2UgY2FsbHMgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIGdp dmVuIGRldmljZS4KKyAqIFRoZSBhcHByb2FjaCB0YWtlbiBoZXJlIGlzIHRvIG1hcCBQTSBBUEkg Tm9kZXMgaWRlbnRpZnlpbmcKKyAqIGEgZGV2aWNlIGludG8gYmFzZSBhZGRyZXNzZXMgZm9yIHJl Z2lzdGVycyB0aGF0IGJlbG9uZyB0byB0aGF0CisgKiBzYW1lIGRldmljZS4KKyAqCisgKiBJZiB0 aGUgZ3Vlc3QgaGFzIGFjY2VzcyB0byBkZXZpY2VzIHJlZ2lzdGVycywgd2UgZ2l2ZSB0aGUgZ3Vl c3QKKyAqIGFjY2VzcyB0byBQTSBBUEkgY2FsbHMgdGhhdCBhZmZlY3QgdGhhdCBkZXZpY2UuIFRo aXMgaXMgaW1wbGVtZW50ZWQKKyAqIGJ5IHBtX25vZGVfYWNjZXNzIGFuZCBkb21haW5faGFzX25v ZGVfYWNjZXNzKCkuCisgKgorICogTU1JTyBhY2Nlc3M6CisgKiBUaGVzZSBjYWxscyBhbGxvdyBn dWVzdHMgdG8gYWNjZXNzIGNlcnRhaW4gbWVtb3J5IHJhbmdlcy4gVGhlc2UgcmFuZ2VzCisgKiBh cmUgdHlwaWNhbGx5IHByb3RlY3RlZCBmb3Igc2VjdXJlLXdvcmxkIGFjY2VzcyBvbmx5IGFuZCBh bHNvIGZyb20KKyAqIGNlcnRhaW4gbWFzdGVycyBvbmx5LCBzbyBndWVzdHMgY2Fubm90IGFjY2Vz cyB0aGVtIGRpcmVjdGx5LgorICogUmVnaXN0ZXJzIHdpdGhpbiB0aGUgbWVtb3J5IHJlZ2lvbnMg YWZmZWN0IGNlcnRhaW4gbm9kZXMuIEluIHRoaXMgY2FzZSwKKyAqIG91ciBpbnB1dCBpcyBhbiBh ZGRyZXNzIGFuZCB3ZSBtYXAgdGhhdCBhZGRyZXNzIGludG8gYSBub2RlLiBJZiB0aGUKKyAqIGd1 ZXN0IGhhcyBvd25lcnNoaXAgb2YgdGhhdCBub2RlLCB0aGUgYWNjZXNzIGlzIGFsbG93ZWQuCisg KiBTb21lIHJlZ2lzdGVycyBjb250YWluIGJpdGZpZWxkcyBhbmQgYSBzaW5nbGUgcmVnaXN0ZXIg bWF5IGNvbnRhaW4KKyAqIGJpdHMgdGhhdCBhZmZlY3QgbXVsdGlwbGUgbm9kZXMuCisgKi8KKwog I2luY2x1ZGUgPHhlbi9pb2NhcC5oPgogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUg PHhlbi90eXBlcy5oPgpAQCAtMjMsNiArOTEsNzIxIEBACiAjaW5jbHVkZSA8YXNtL3JlZ3MuaD4K ICNpbmNsdWRlIDxhc20vcGxhdGZvcm1zL3hpbGlueC16eW5xbXAtZWVtaS5oPgogCitzdHJ1Y3Qg cG1fYWNjZXNzCit7CisgICAgcGFkZHJfdCBhZGRyOworICAgIGJvb2wgaHdkb21fYWNjZXNzOyAg ICAvKiBIVyBkb21haW4gZ2V0cyBhY2Nlc3MgcmVnYXJkbGVzcy4gICovCit9OworCisvKgorICog VGhpcyB0YWJsZSBtYXBzIGEgbm9kZSBpbnRvIGEgbWVtb3J5IGFkZHJlc3MuCisgKiBJZiBhIGd1 ZXN0IGhhcyBhY2Nlc3MgdG8gdGhlIGFkZHJlc3MsIGl0IGhhcyBlbm91Z2ggY29udHJvbAorICog b3ZlciB0aGUgbm9kZSB0byBncmFudCBpdCBhY2Nlc3MgdG8gRUVNSSBjYWxscyBmb3IgdGhhdCBu b2RlLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHBtX2FjY2VzcyBwbV9ub2RlX2FjY2Vzc1td ID0geworICAgIC8qIE1NX1JQVSBncmFudHMgYWNjZXNzIHRvIGFsbCBSUFUgTm9kZXMuICAqLwor ICAgIFtOT0RFX1JQVV0gPSB7IE1NX1JQVSB9LAorICAgIFtOT0RFX1JQVV8wXSA9IHsgTU1fUlBV IH0sCisgICAgW05PREVfUlBVXzFdID0geyBNTV9SUFUgfSwKKyAgICBbTk9ERV9JUElfUlBVXzBd ID0geyBNTV9SUFUgfSwKKworICAgIC8qIEdQVSBub2Rlcy4gICovCisgICAgW05PREVfR1BVXSA9 IHsgTU1fR1BVIH0sCisgICAgW05PREVfR1BVX1BQXzBdID0geyBNTV9HUFUgfSwKKyAgICBbTk9E RV9HUFVfUFBfMV0gPSB7IE1NX0dQVSB9LAorCisgICAgW05PREVfVVNCXzBdID0geyBNTV9VU0Iz XzBfWEhDSSB9LAorICAgIFtOT0RFX1VTQl8xXSA9IHsgTU1fVVNCM18xX1hIQ0kgfSwKKyAgICBb Tk9ERV9UVENfMF0gPSB7IE1NX1RUQzAgfSwKKyAgICBbTk9ERV9UVENfMV0gPSB7IE1NX1RUQzEg fSwKKyAgICBbTk9ERV9UVENfMl0gPSB7IE1NX1RUQzIgfSwKKyAgICBbTk9ERV9UVENfM10gPSB7 IE1NX1RUQzMgfSwKKyAgICBbTk9ERV9TQVRBXSA9IHsgTU1fU0FUQV9BSENJX0hCQSB9LAorICAg IFtOT0RFX0VUSF8wXSA9IHsgTU1fR0VNMCB9LAorICAgIFtOT0RFX0VUSF8xXSA9IHsgTU1fR0VN MSB9LAorICAgIFtOT0RFX0VUSF8yXSA9IHsgTU1fR0VNMiB9LAorICAgIFtOT0RFX0VUSF8zXSA9 IHsgTU1fR0VNMyB9LAorICAgIFtOT0RFX1VBUlRfMF0gPSB7IE1NX1VBUlQwIH0sCisgICAgW05P REVfVUFSVF8xXSA9IHsgTU1fVUFSVDEgfSwKKyAgICBbTk9ERV9TUElfMF0gPSB7IE1NX1NQSTAg fSwKKyAgICBbTk9ERV9TUElfMV0gPSB7IE1NX1NQSTEgfSwKKyAgICBbTk9ERV9JMkNfMF0gPSB7 IE1NX0kyQzAgfSwKKyAgICBbTk9ERV9JMkNfMV0gPSB7IE1NX0kyQzEgfSwKKyAgICBbTk9ERV9T RF8wXSA9IHsgTU1fU0QwIH0sCisgICAgW05PREVfU0RfMV0gPSB7IE1NX1NEMSB9LAorICAgIFtO T0RFX0RQXSA9IHsgTU1fRFAgfSwKKworICAgIC8qIEd1ZXN0IHdpdGggR0RNQSBDaGFubmVsIDAg Z2V0cyBQTSBhY2Nlc3MuIE90aGVyIGd1ZXN0cyBkb24ndC4gICovCisgICAgW05PREVfR0RNQV0g PSB7IE1NX0dETUFfQ0gwIH0sCisgICAgLyogR3Vlc3Qgd2l0aCBBRE1BIENoYW5uZWwgMCBnZXRz IFBNIGFjY2Vzcy4gT3RoZXIgZ3Vlc3RzIGRvbid0LiAgKi8KKyAgICBbTk9ERV9BRE1BXSA9IHsg TU1fQURNQV9DSDAgfSwKKworICAgIFtOT0RFX05BTkRdID0geyBNTV9OQU5EIH0sCisgICAgW05P REVfUVNQSV0gPSB7IE1NX1FTUEkgfSwKKyAgICBbTk9ERV9HUElPXSA9IHsgTU1fR1BJTyB9LAor ICAgIFtOT0RFX0NBTl8wXSA9IHsgTU1fQ0FOMCB9LAorICAgIFtOT0RFX0NBTl8xXSA9IHsgTU1f Q0FOMSB9LAorCisgICAgLyogT25seSBmb3IgdGhlIGhhcmR3YXJlIGRvbWFpbi4gICovCisgICAg W05PREVfQUZJXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbTk9ERV9BUExMXSA9 IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbTk9ERV9WUExMXSA9IHsgLmh3ZG9tX2Fj Y2VzcyA9IHRydWUgfSwKKyAgICBbTk9ERV9EUExMXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUg fSwKKyAgICBbTk9ERV9SUExMXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbTk9E RV9JT1BMTF0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW05PREVfRERSXSA9IHsg Lmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbTk9ERV9JUElfQVBVXSA9IHsgLmh3ZG9tX2Fj Y2VzcyA9IHRydWUgfSwKKyAgICBbTk9ERV9QQ0FQXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUg fSwKKworICAgIFtOT0RFX1BDSUVdID0geyBNTV9QQ0lFX0FUVFJJQiB9LAorICAgIFtOT0RFX1JU Q10gPSB7IE1NX1JUQyB9LAorfTsKKworLyoKKyAqIFRoaXMgdGFibGUgbWFwcyByZXNldCBsaW5l IElEcyBpbnRvIGEgbWVtb3J5IGFkZHJlc3MuCisgKiBJZiBhIGd1ZXN0IGhhcyBhY2Nlc3MgdG8g dGhlIGFkZHJlc3MsIGl0IGhhcyBlbm91Z2ggY29udHJvbAorICogb3ZlciB0aGUgYWZmZWN0ZWQg bm9kZSB0byBncmFudCBpdCBhY2Nlc3MgdG8gRUVNSSBjYWxscyBmb3IKKyAqIHJlc2V0dGluZyB0 aGF0IG5vZGUuCisgKi8KKyNkZWZpbmUgWElMUE1fUkVTRVRfSURYKG4pIChuIC0gWElMUE1fUkVT RVRfUENJRV9DRkcpCitzdGF0aWMgY29uc3Qgc3RydWN0IHBtX2FjY2VzcyBwbV9yZXNldF9hY2Nl c3NbXSA9IHsKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX1BDSUVfQ0ZHKV0gPSB7 IE1NX0FYSVBDSUVfTUFJTiB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfUENJ RV9CUklER0UpXSA9IHsgTU1fUENJRV9BVFRSSUIgfSwKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJ TFBNX1JFU0VUX1BDSUVfQ1RSTCldID0geyBNTV9QQ0lFX0FUVFJJQiB9LAorCisgICAgW1hJTFBN X1JFU0VUX0lEWChYSUxQTV9SRVNFVF9EUCldID0geyBNTV9EUCB9LAorICAgIFtYSUxQTV9SRVNF VF9JRFgoWElMUE1fUkVTRVRfU1dEVF9DUkYpXSA9IHsgTU1fU1dEVCB9LAorICAgIFtYSUxQTV9S RVNFVF9JRFgoWElMUE1fUkVTRVRfQUZJX0ZNNSldID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9 LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfQUZJX0ZNNCldID0geyAuaHdkb21f YWNjZXNzID0gdHJ1ZSB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfQUZJX0ZN MyldID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElM UE1fUkVTRVRfQUZJX0ZNMildID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9LAorICAgIFtYSUxQ TV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfQUZJX0ZNMSldID0geyAuaHdkb21fYWNjZXNzID0gdHJ1 ZSB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfQUZJX0ZNMCldID0geyAuaHdk b21fYWNjZXNzID0gdHJ1ZSB9LAorCisgICAgLyogQ2hhbm5lbCAwIGdyYW50cyBQTSBhY2Nlc3Mu ICAqLworICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfR0RNQSldID0geyBNTV9HRE1B X0NIMCB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfR1BVX1BQMSldID0geyBN TV9HUFUgfSwKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX0dQVV9QUDApXSA9IHsg TU1fR1BVIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HVCldID0geyAuaHdk b21fYWNjZXNzID0gdHJ1ZSB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfU0FU QSldID0geyBNTV9TQVRBX0FIQ0lfSEJBIH0sCisKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBN X1JFU0VUX0FQTV9GUEQpXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbWElMUE1f UkVTRVRfSURYKFhJTFBNX1JFU0VUX1NPRlQpXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwK KworICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfR0VNMCldID0geyBNTV9HRU0wIH0s CisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HRU0xKV0gPSB7IE1NX0dFTTEgfSwK KyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX0dFTTIpXSA9IHsgTU1fR0VNMiB9LAor ICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfR0VNMyldID0geyBNTV9HRU0zIH0sCisK KyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX1FTUEkpXSA9IHsgTU1fUVNQSSB9LAor ICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfVUFSVDApXSA9IHsgTU1fVUFSVDAgfSwK KyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX1VBUlQxKV0gPSB7IE1NX1VBUlQxIH0s CisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9TUEkwKV0gPSB7IE1NX1NQSTAgfSwK KyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX1NQSTEpXSA9IHsgTU1fU1BJMSB9LAor ICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfU0RJTzApXSA9IHsgTU1fU0QwIH0sCisg ICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9TRElPMSldID0geyBNTV9TRDEgfSwKKyAg ICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX0NBTjApXSA9IHsgTU1fQ0FOMCB9LAorICAg IFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfQ0FOMSldID0geyBNTV9DQU4xIH0sCisgICAg W1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9JMkMwKV0gPSB7IE1NX0kyQzAgfSwKKyAgICBb WElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX0kyQzEpXSA9IHsgTU1fSTJDMSB9LAorICAgIFtY SUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfVFRDMCldID0geyBNTV9UVEMwIH0sCisgICAgW1hJ TFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9UVEMxKV0gPSB7IE1NX1RUQzEgfSwKKyAgICBbWElM UE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX1RUQzIpXSA9IHsgTU1fVFRDMiB9LAorICAgIFtYSUxQ TV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfVFRDMyldID0geyBNTV9UVEMzIH0sCisgICAgW1hJTFBN X1JFU0VUX0lEWChYSUxQTV9SRVNFVF9TV0RUX0NSTCldID0geyBNTV9TV0RUIH0sCisgICAgW1hJ TFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9OQU5EKV0gPSB7IE1NX05BTkQgfSwKKyAgICBbWElM UE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX0FETUEpXSA9IHsgTU1fQURNQV9DSDAgfSwKKyAgICBb WElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX0dQSU8pXSA9IHsgTU1fR1BJTyB9LAorICAgIFtY SUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfSU9VX0NDKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0 cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9USU1FU1RBTVApXSA9IHsg Lmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VU X1JQVV9SNTApXSA9IHsgTU1fUlBVIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNF VF9SUFVfUjUxKV0gPSB7IE1NX1JQVSB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVT RVRfUlBVX0FNQkEpXSA9IHsgTU1fUlBVIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9S RVNFVF9PQ00pXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbWElMUE1fUkVTRVRf SURYKFhJTFBNX1JFU0VUX1JQVV9QR0UpXSA9IHsgTU1fUlBVIH0sCisKKyAgICBbWElMUE1fUkVT RVRfSURYKFhJTFBNX1JFU0VUX1VTQjBfQ09SRVJFU0VUKV0gPSB7IE1NX1VTQjNfMF9YSENJIH0s CisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9VU0IwX0hJQkVSUkVTRVQpXSA9IHsg TU1fVVNCM18wX1hIQ0kgfSwKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX1VTQjBf QVBCKV0gPSB7IE1NX1VTQjNfMF9YSENJIH0sCisKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBN X1JFU0VUX1VTQjFfQ09SRVJFU0VUKV0gPSB7IE1NX1VTQjNfMV9YSENJIH0sCisgICAgW1hJTFBN X1JFU0VUX0lEWChYSUxQTV9SRVNFVF9VU0IxX0hJQkVSUkVTRVQpXSA9IHsgTU1fVVNCM18xX1hI Q0kgfSwKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX1VTQjFfQVBCKV0gPSB7IE1N X1VTQjNfMV9YSENJIH0sCisKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JFU0VUX0lQSSld ID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1f UkVTRVRfQVBNX0xQRCldID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9LAorICAgIFtYSUxQTV9S RVNFVF9JRFgoWElMUE1fUkVTRVRfUlRDKV0gPSB7IE1NX1JUQyB9LAorICAgIFtYSUxQTV9SRVNF VF9JRFgoWElMUE1fUkVTRVRfU1lTTU9OKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisg ICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9BRklfRk02KV0gPSB7IC5od2RvbV9hY2Nl c3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9MUERfU1dEVCld ID0geyBNTV9TV0RUIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9GUEQpXSA9 IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBNX1JF U0VUX1JQVV9EQkcxKV0gPSB7IE1NX1JQVSB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1f UkVTRVRfUlBVX0RCRzApXSA9IHsgTU1fUlBVIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQ TV9SRVNFVF9EQkdfTFBEKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBN X1JFU0VUX0lEWChYSUxQTV9SRVNFVF9EQkdfRlBEKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVl IH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9BUExMKV0gPSB7IC5od2RvbV9h Y2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9EUExMKV0g PSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9S RVNFVF9WUExMKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VU X0lEWChYSUxQTV9SRVNFVF9JT1BMTCldID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9LAorICAg IFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfUlBMTCldID0geyAuaHdkb21fYWNjZXNzID0g dHJ1ZSB9LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfR1BPM19QTF8wKV0gPSB7 IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNF VF9HUE8zX1BMXzEpXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbWElMUE1fUkVT RVRfSURYKFhJTFBNX1JFU0VUX0dQTzNfUExfMildID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9 LAorICAgIFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfR1BPM19QTF8zKV0gPSB7IC5od2Rv bV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8z X1BMXzQpXSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbWElMUE1fUkVTRVRfSURY KFhJTFBNX1JFU0VUX0dQTzNfUExfNSldID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9LAorICAg IFtYSUxQTV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfR1BPM19QTF82KV0gPSB7IC5od2RvbV9hY2Nl c3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzcp XSA9IHsgLmh3ZG9tX2FjY2VzcyA9IHRydWUgfSwKKyAgICBbWElMUE1fUkVTRVRfSURYKFhJTFBN X1JFU0VUX0dQTzNfUExfOCldID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9LAorICAgIFtYSUxQ TV9SRVNFVF9JRFgoWElMUE1fUkVTRVRfR1BPM19QTF85KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0 cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzEwKV0gPSB7 IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNF VF9HUE8zX1BMXzExKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JF U0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzEyKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVl IH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzEzKV0gPSB7IC5o d2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9H UE8zX1BMXzE0KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VU X0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzE1KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0s CisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzE2KV0gPSB7IC5od2Rv bV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8z X1BMXzE3KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lE WChYSUxQTV9SRVNFVF9HUE8zX1BMXzE4KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisg ICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzE5KV0gPSB7IC5od2RvbV9h Y2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BM XzIwKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChY SUxQTV9SRVNFVF9HUE8zX1BMXzIxKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAg W1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzIyKV0gPSB7IC5od2RvbV9hY2Nl c3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzIz KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQ TV9SRVNFVF9HUE8zX1BMXzI0KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJ TFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzI1KV0gPSB7IC5od2RvbV9hY2Nlc3Mg PSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzI2KV0g PSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9S RVNFVF9HUE8zX1BMXzI3KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBN X1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzI4KV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0 cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzI5KV0gPSB7 IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNF VF9HUE8zX1BMXzMwKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JF U0VUX0lEWChYSUxQTV9SRVNFVF9HUE8zX1BMXzMxKV0gPSB7IC5od2RvbV9hY2Nlc3MgPSB0cnVl IH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9SUFVfTFMpXSA9IHsgTU1fUlBV IH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9QU19PTkxZKV0gPSB7IC5od2Rv bV9hY2Nlc3MgPSB0cnVlIH0sCisgICAgW1hJTFBNX1JFU0VUX0lEWChYSUxQTV9SRVNFVF9QTCld ID0geyAuaHdkb21fYWNjZXNzID0gdHJ1ZSB9LAorfTsKKworLyoKKyAqIFRoaXMgdGFibGUgbWFw cyByZXNldCBsaW5lIElEcyBpbnRvIGEgbWVtb3J5IGFkZHJlc3MuCisgKiBJZiBhIGd1ZXN0IGhh cyBhY2Nlc3MgdG8gdGhlIGFkZHJlc3MsIGl0IGhhcyBlbm91Z2ggY29udHJvbAorICogb3ZlciB0 aGUgYWZmZWN0ZWQgbm9kZSB0byBncmFudCBpdCBhY2Nlc3MgdG8gRUVNSSBjYWxscyBmb3IKKyAq IHJlc2V0dGluZyB0aGF0IG5vZGUuCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgIHBh ZGRyX3Qgc3RhcnQ7CisgICAgcGFkZHJfdCBzaXplOworICAgIHVpbnQzMl90IG1hc2s7ICAgLyog WmVybyBtZWFucyBubyBtYXNrLCBpLmUgYWxsIGJpdHMuICAqLworICAgIGVudW0gcG1fbm9kZV9p ZCBub2RlOworICAgIGJvb2wgaHdkb21fYWNjZXNzOworICAgIGJvb2wgcmVhZG9ubHk7Cit9IHBt X21taW9fYWNjZXNzW10gPSB7CisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkZfQVBCICsg Ul9DUkZfQVBMTF9DVFJMLAorICAgICAgICAuc2l6ZSA9IFJfQ1JGX0FDUFVfQ1RSTCwKKyAgICAg ICAgLmh3ZG9tX2FjY2VzcyA9IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0g TU1fQ1JMX0FQQiArIFJfQ1JMX0lPUExMX0NUUkwsCisgICAgICAgIC5zaXplID0gUl9DUkxfUlBM TF9UT19GUERfQ1RSTCwKKyAgICAgICAgLmh3ZG9tX2FjY2VzcyA9IHRydWUKKyAgICB9LAorICAg IHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JGX0FQQiArIFJfQ1JGX0RQX1ZJREVPX1JFRl9DVFJM LAorICAgICAgICAuc2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9EUAorICAgIH0sCisgICAgeworICAg ICAgICAuc3RhcnQgPSBNTV9DUkZfQVBCICsgUl9DUkZfRFBfQVVESU9fUkVGX0NUUkwsCisgICAg ICAgIC5zaXplID0gNCwgLm5vZGUgPSBOT0RFX0RQCisgICAgfSwKKyAgICB7CisgICAgICAgIC5z dGFydCA9IE1NX0NSRl9BUEIgKyBSX0NSRl9EUF9TVENfUkVGX0NUUkwsCisgICAgICAgIC5zaXpl ID0gNCwgLm5vZGUgPSBOT0RFX0RQCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1N X0NSRl9BUEIgKyBSX0NSRl9HUFVfUkVGX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLm5vZGUg PSBOT0RFX0dQVQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkZfQVBCICsg Ul9DUkZfU0FUQV9SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfU0FU QQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkZfQVBCICsgUl9DUkZfUENJ RV9SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfUENJRQorICAgIH0s CisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkZfQVBCICsgUl9DUkZfR0RNQV9SRUZfQ1RS TCwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfR0RNQQorICAgIH0sCisgICAgewor ICAgICAgICAuc3RhcnQgPSBNTV9DUkZfQVBCICsgUl9DUkZfRFBETUFfUkVGX0NUUkwsCisgICAg ICAgIC5zaXplID0gNCwgLm5vZGUgPSBOT0RFX0RQCisgICAgfSwKKyAgICB7CisgICAgICAgIC5z dGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9VU0IzX0RVQUxfUkVGX0NUUkwsCisgICAgICAgIC5z aXplID0gNCwgLm5vZGUgPSBOT0RFX1VTQl8wCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFy dCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9VU0IwX0JVU19SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUg PSA0LCAubm9kZSA9IE5PREVfVVNCXzAKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0g TU1fQ1JMX0FQQiArIFJfQ1JMX1VTQjFfQlVTX1JFRl9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQs IC5ub2RlID0gTk9ERV9VU0JfMQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9D UkxfQVBCICsgUl9DUkxfVVNCMV9CVVNfUkVGX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLm5v ZGUgPSBOT0RFX1VTQl8xCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9B UEIgKyBSX0NSTF9HRU0wX1JFRl9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5ub2RlID0gTk9E RV9FVEhfMAorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkxfQVBCICsgUl9D UkxfR0VNMV9SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfRVRIXzEK KyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JMX0FQQiArIFJfQ1JMX0dFTTJf UkVGX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLm5vZGUgPSBOT0RFX0VUSF8yCisgICAgfSwK KyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9HRU0zX1JFRl9DVFJM LAorICAgICAgICAuc2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9FVEhfMworICAgIH0sCisgICAgewor ICAgICAgICAuc3RhcnQgPSBNTV9DUkxfQVBCICsgUl9DUkxfUVNQSV9SRUZfQ1RSTCwKKyAgICAg ICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfUVNQSQorICAgIH0sCisgICAgeworICAgICAgICAu c3RhcnQgPSBNTV9DUkxfQVBCICsgUl9DUkxfU0RJTzBfUkVGX0NUUkwsCisgICAgICAgIC5zaXpl ID0gNCwgLm5vZGUgPSBOT0RFX1NEXzAKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0g TU1fQ1JMX0FQQiArIFJfQ1JMX1NESU8xX1JFRl9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5u b2RlID0gTk9ERV9TRF8xCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9B UEIgKyBSX0NSTF9VQVJUMF9SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5P REVfVUFSVF8wCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBS X0NSTF9VQVJUMV9SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfVUFS VF8xCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9T UEkwX1JFRl9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9TUElfMAorICAg IH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkxfQVBCICsgUl9DUkxfU1BJMV9SRUZf Q1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfU1BJXzEKKyAgICB9LAorICAg IHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JMX0FQQiArIFJfQ1JMX0NBTjBfUkVGX0NUUkwsCisg ICAgICAgIC5zaXplID0gNCwgLm5vZGUgPSBOT0RFX0NBTl8wCisgICAgfSwKKyAgICB7CisgICAg ICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9DQU4xX1JFRl9DVFJMLAorICAgICAgICAu c2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9DQU5fMQorICAgIH0sCisgICAgeworICAgICAgICAuc3Rh cnQgPSBNTV9DUkxfQVBCICsgUl9DUkxfQ1BVX1I1X0NUUkwsCisgICAgICAgIC5zaXplID0gNCwg Lm5vZGUgPSBOT0RFX1JQVQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkxf QVBCICsgUl9DUkxfSU9VX1NXSVRDSF9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5od2RvbV9h Y2Nlc3MgPSB0cnVlCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIg KyBSX0NSTF9DU1VfUExMX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLmh3ZG9tX2FjY2VzcyA9 IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JMX0FQQiArIFJfQ1JM X1BDQVBfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAuaHdkb21fYWNjZXNzID0gdHJ1ZQorICAg IH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkxfQVBCICsgUl9DUkxfTFBEX1NXSVRD SF9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5od2RvbV9hY2Nlc3MgPSB0cnVlCisgICAgfSwK KyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9MUERfTFNCVVNfQ1RS TCwKKyAgICAgICAgLnNpemUgPSA0LCAuaHdkb21fYWNjZXNzID0gdHJ1ZQorICAgIH0sCisgICAg eworICAgICAgICAuc3RhcnQgPSBNTV9DUkxfQVBCICsgUl9DUkxfREJHX0xQRF9DVFJMLAorICAg ICAgICAuc2l6ZSA9IDQsIC5od2RvbV9hY2Nlc3MgPSB0cnVlCisgICAgfSwKKyAgICB7CisgICAg ICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9OQU5EX1JFRl9DVFJMLAorICAgICAgICAu c2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9OQU5ECisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFy dCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9BRE1BX1JFRl9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQs IC5ub2RlID0gTk9ERV9BRE1BCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NS TF9BUEIgKyBSX0NSTF9QTDBfUkVGX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLmh3ZG9tX2Fj Y2VzcyA9IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JMX0FQQiAr IFJfQ1JMX1BMMV9SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAuaHdkb21fYWNjZXNzID0g dHJ1ZQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkxfQVBCICsgUl9DUkxf UEwyX1JFRl9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5od2RvbV9hY2Nlc3MgPSB0cnVlCisg ICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9QTDNfUkVG X0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLmh3ZG9tX2FjY2VzcyA9IHRydWUKKyAgICB9LAor ICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JMX0FQQiArIFJfQ1JMX1BMMF9USFJfQ1RSTCwK KyAgICAgICAgLnNpemUgPSA0LCAuaHdkb21fYWNjZXNzID0gdHJ1ZQorICAgIH0sCisgICAgewor ICAgICAgICAuc3RhcnQgPSBNTV9DUkxfQVBCICsgUl9DUkxfUEwxX1RIUl9DVFJMLAorICAgICAg ICAuc2l6ZSA9IDQsIC5od2RvbV9hY2Nlc3MgPSB0cnVlCisgICAgfSwKKyAgICB7CisgICAgICAg IC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9QTDJfVEhSX0NUUkwsCisgICAgICAgIC5zaXpl ID0gNCwgLmh3ZG9tX2FjY2VzcyA9IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0 ID0gTU1fQ1JMX0FQQiArIFJfQ1JMX1BMM19USFJfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAu aHdkb21fYWNjZXNzID0gdHJ1ZQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9D UkxfQVBCICsgUl9DUkxfUEwwX1RIUl9DTlQsCisgICAgICAgIC5zaXplID0gNCwgLmh3ZG9tX2Fj Y2VzcyA9IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JMX0FQQiAr IFJfQ1JMX1BMMV9USFJfQ05ULAorICAgICAgICAuc2l6ZSA9IDQsIC5od2RvbV9hY2Nlc3MgPSB0 cnVlCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9Q TDJfVEhSX0NOVCwKKyAgICAgICAgLnNpemUgPSA0LCAuaHdkb21fYWNjZXNzID0gdHJ1ZQorICAg IH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9DUkxfQVBCICsgUl9DUkxfUEwzX1RIUl9D TlQsCisgICAgICAgIC5zaXplID0gNCwgLmh3ZG9tX2FjY2VzcyA9IHRydWUKKyAgICB9LAorICAg IHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JMX0FQQiArIFJfQ1JMX0dFTV9UU1VfUkVGX0NUUkws CisgICAgICAgIC5zaXplID0gNCwgLm5vZGUgPSBOT0RFX0VUSF8wCisgICAgfSwKKyAgICB7Cisg ICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBSX0NSTF9ETExfUkVGX0NUUkwsCisgICAgICAg IC5zaXplID0gNCwgLmh3ZG9tX2FjY2VzcyA9IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAg LnN0YXJ0ID0gTU1fQ1JMX0FQQiArIFJfQ1JMX0FNU19SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUg PSA0LCAuaHdkb21fYWNjZXNzID0gdHJ1ZQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQg PSBNTV9DUkxfQVBCICsgUl9DUkxfSTJDMF9SRUZfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAu bm9kZSA9IE5PREVfSTJDXzAKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fQ1JM X0FQQiArIFJfQ1JMX0kyQzFfUkVGX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLm5vZGUgPSBO T0RFX0kyQ18xCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0NSTF9BUEIgKyBS X0NSTF9USU1FU1RBTVBfUkVGX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLmh3ZG9tX2FjY2Vz cyA9IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBS X0lPVV9TTENSX01JT19QSU5fMCwKKyAgICAgICAgLnNpemUgPSBSX0lPVV9TTENSX01JT19NU1Rf VFJJMiwKKyAgICAgICAgLmh3ZG9tX2FjY2VzcyA9IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAg ICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX1dEVF9DTEtfU0VMLAorICAgICAg ICAuaHdkb21fYWNjZXNzID0gdHJ1ZQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBN TV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfQ0FOX01JT19DVFJMLAorICAgICAgICAuc2l6ZSA9IDQs IC5tYXNrID0gMHgxZmYsIC5ub2RlID0gTk9ERV9DQU5fMAorICAgIH0sCisgICAgeworICAgICAg ICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfQ0FOX01JT19DVFJMLAorICAgICAg ICAuc2l6ZSA9IDQsIC5tYXNrID0gMHgxZmYgPDwgMTUsIC5ub2RlID0gTk9ERV9DQU5fMQorICAg IH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfR0VN X0NMS19DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5tYXNrID0gMHhmLCAubm9kZSA9IE5PREVf RVRIXzAKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lP VV9TTENSX0dFTV9DTEtfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubWFzayA9IDB4ZiA8PCA1 LCAubm9kZSA9IE5PREVfRVRIXzEKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1f SU9VX1NMQ1IgKyBSX0lPVV9TTENSX0dFTV9DTEtfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAu bWFzayA9IDB4ZiA8PCAxMCwgLm5vZGUgPSBOT0RFX0VUSF8yCisgICAgfSwKKyAgICB7CisgICAg ICAgIC5zdGFydCA9IE1NX0lPVV9TTENSICsgUl9JT1VfU0xDUl9HRU1fQ0xLX0NUUkwsCisgICAg ICAgIC5zaXplID0gNCwgLm1hc2sgPSAweGYgPDwgMTUsIC5ub2RlID0gTk9ERV9FVEhfMworICAg IH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfR0VN X0NMS19DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5tYXNrID0gMHg3IDw8IDIwLCAuaHdkb21f YWNjZXNzID0gdHJ1ZQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xD UiArIFJfSU9VX1NMQ1JfU0RJT19DTEtfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubWFzayA9 IDB4NywgLm5vZGUgPSBOT0RFX1NEXzAKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0g TU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX1NESU9fQ0xLX0NUUkwsCisgICAgICAgIC5zaXplID0g NCwgLm1hc2sgPSAweDcgPDwgMTcsIC5ub2RlID0gTk9ERV9TRF8xCisgICAgfSwKKyAgICB7Cisg ICAgICAgIC5zdGFydCA9IE1NX0lPVV9TTENSICsgUl9JT1VfU0xDUl9DVFJMX1JFR19TRCwKKyAg ICAgICAgLnNpemUgPSA0LCAubWFzayA9IDB4MSwgLm5vZGUgPSBOT0RFX1NEXzAKKyAgICB9LAor ICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX0NUUkxfUkVH X1NELAorICAgICAgICAuc2l6ZSA9IDQsIC5tYXNrID0gMHgxIDw8IDE1LCAubm9kZSA9IE5PREVf U0RfMQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9V X1NMQ1JfU0RfSVRBUERMWSwKKyAgICAgICAgLnNpemUgPSBSX0lPVV9TTENSX1NEX0NETl9DVFJM LAorICAgICAgICAubWFzayA9IDB4M2ZmIDw8IDAsIC5ub2RlID0gTk9ERV9TRF8wCisgICAgfSwK KyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0lPVV9TTENSICsgUl9JT1VfU0xDUl9TRF9JVEFQ RExZLAorICAgICAgICAuc2l6ZSA9IFJfSU9VX1NMQ1JfU0RfQ0ROX0NUUkwsCisgICAgICAgIC5t YXNrID0gMHgzZmYgPDwgMTYsIC5ub2RlID0gTk9ERV9TRF8xCisgICAgfSwKKyAgICB7CisgICAg ICAgIC5zdGFydCA9IE1NX0lPVV9TTENSICsgUl9JT1VfU0xDUl9HRU1fQ1RSTCwKKyAgICAgICAg LnNpemUgPSA0LCAubWFzayA9IDB4MyA8PCAwLCAubm9kZSA9IE5PREVfRVRIXzAKKyAgICB9LAor ICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX0dFTV9DVFJM LAorICAgICAgICAuc2l6ZSA9IDQsIC5tYXNrID0gMHgzIDw8IDIsIC5ub2RlID0gTk9ERV9FVEhf MQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NM Q1JfR0VNX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLm1hc2sgPSAweDMgPDwgNCwgLm5vZGUg PSBOT0RFX0VUSF8yCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0lPVV9TTENS ICsgUl9JT1VfU0xDUl9HRU1fQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubWFzayA9IDB4MyA8 PCA2LCAubm9kZSA9IE5PREVfRVRIXzMKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0g TU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX0lPVV9UVENfQVBCX0NMSywKKyAgICAgICAgLnNpemUg PSA0LCAubWFzayA9IDB4MyA8PCAwLCAubm9kZSA9IE5PREVfVFRDXzAKKyAgICB9LAorICAgIHsK KyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX0lPVV9UVENfQVBCX0NM SywKKyAgICAgICAgLnNpemUgPSA0LCAubWFzayA9IDB4MyA8PCAyLCAubm9kZSA9IE5PREVfVFRD XzEKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9T TENSX0lPVV9UVENfQVBCX0NMSywKKyAgICAgICAgLnNpemUgPSA0LCAubWFzayA9IDB4MyA8PCA0 LCAubm9kZSA9IE5PREVfVFRDXzIKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1f SU9VX1NMQ1IgKyBSX0lPVV9TTENSX0lPVV9UVENfQVBCX0NMSywKKyAgICAgICAgLnNpemUgPSA0 LCAubWFzayA9IDB4MyA8PCA2LCAubm9kZSA9IE5PREVfVFRDXzMKKyAgICB9LAorICAgIHsKKyAg ICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX0lPVV9UQVBETFlfQllQQVNT LAorICAgICAgICAuc2l6ZSA9IDQsIC5tYXNrID0gMHgzLCAubm9kZSA9IE5PREVfTkFORAorICAg IH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfSU9V X1RBUERMWV9CWVBBU1MsCisgICAgICAgIC5zaXplID0gNCwgLm1hc2sgPSAweDEgPDwgMiwgLm5v ZGUgPSBOT0RFX1FTUEkKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NM Q1IgKyBSX0lPVV9TTENSX0lPVV9DT0hFUkVOVF9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5t YXNrID0gMHhmIDw8IDAsIC5ub2RlID0gTk9ERV9FVEhfMAorICAgIH0sCisgICAgeworICAgICAg ICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfSU9VX0NPSEVSRU5UX0NUUkwsCisg ICAgICAgIC5zaXplID0gNCwgLm1hc2sgPSAweGYgPDwgNCwgLm5vZGUgPSBOT0RFX0VUSF8xCisg ICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0lPVV9TTENSICsgUl9JT1VfU0xDUl9J T1VfQ09IRVJFTlRfQ1RSTCwKKyAgICAgICAgLnNpemUgPSA0LCAubWFzayA9IDB4ZiA8PCA4LCAu bm9kZSA9IE5PREVfRVRIXzIKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9V X1NMQ1IgKyBSX0lPVV9TTENSX0lPVV9DT0hFUkVOVF9DVFJMLAorICAgICAgICAuc2l6ZSA9IDQs IC5tYXNrID0gMHhmIDw8IDEyLCAubm9kZSA9IE5PREVfRVRIXzMKKyAgICB9LAorICAgIHsKKyAg ICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX0lPVV9DT0hFUkVOVF9DVFJM LAorICAgICAgICAuc2l6ZSA9IDQsIC5tYXNrID0gMHhmIDw8IDE2LCAubm9kZSA9IE5PREVfU0Rf MAorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NM Q1JfSU9VX0NPSEVSRU5UX0NUUkwsCisgICAgICAgIC5zaXplID0gNCwgLm1hc2sgPSAweGYgPDwg MjAsIC5ub2RlID0gTk9ERV9TRF8xCisgICAgfSwKKyAgICB7CisgICAgICAgIC5zdGFydCA9IE1N X0lPVV9TTENSICsgUl9JT1VfU0xDUl9JT1VfQ09IRVJFTlRfQ1RSTCwKKyAgICAgICAgLnNpemUg PSA0LCAubWFzayA9IDB4ZiA8PCAyNCwgLm5vZGUgPSBOT0RFX05BTkQKKyAgICB9LAorICAgIHsK KyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX0lPVV9DT0hFUkVOVF9D VFJMLAorICAgICAgICAuc2l6ZSA9IDQsIC5tYXNrID0gMHhmIDw8IDI4LCAubm9kZSA9IE5PREVf UVNQSQorICAgIH0sCisgICAgeworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9V X1NMQ1JfVklERU9fUFNTX0NMS19TRUwsCisgICAgICAgIC5zaXplID0gNCwgLmh3ZG9tX2FjY2Vz cyA9IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBS X0lPVV9TTENSX0lPVV9SQU1fR0VNMCwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVf RVRIXzAKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lP VV9TTENSX0lPVV9SQU1fR0VNMSwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfRVRI XzEKKyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9T TENSX0lPVV9SQU1fR0VNMiwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfRVRIXzIK KyAgICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENS X0lPVV9SQU1fR0VNMywKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfRVRIXzMKKyAg ICB9LAorICAgIHsKKyAgICAgICAgLnN0YXJ0ID0gTU1fSU9VX1NMQ1IgKyBSX0lPVV9TTENSX0lP VV9SQU1fU0QwLAorICAgICAgICAuc2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9TRF8wCisgICAgfSwK KyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX0lPVV9TTENSICsgUl9JT1VfU0xDUl9JT1VfUkFN X1NEMSwKKyAgICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfU0RfMQorICAgIH0sCisgICAg eworICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfSU9VX1JBTV9DQU4w LAorICAgICAgICAuc2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9DQU5fMAorICAgIH0sCisgICAgewor ICAgICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfSU9VX1JBTV9DQU4xLAor ICAgICAgICAuc2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9DQU5fMQorICAgIH0sCisgICAgeworICAg ICAgICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfSU9VX1JBTV9MUVNQSSwKKyAg ICAgICAgLnNpemUgPSA0LCAubm9kZSA9IE5PREVfUVNQSQorICAgIH0sCisgICAgeworICAgICAg ICAuc3RhcnQgPSBNTV9JT1VfU0xDUiArIFJfSU9VX1NMQ1JfSU9VX1JBTV9OQU5ELAorICAgICAg ICAuc2l6ZSA9IDQsIC5ub2RlID0gTk9ERV9OQU5ECisgICAgfSwKKyAgICB7CisgICAgICAgIC5z dGFydCA9IE1NX1BNVV9HTE9CQUwgKyBSX1BNVV9HTE9CQUxfUFdSX1NUQVRFLAorICAgICAgICAu c2l6ZSA9IDQsIC5yZWFkb25seSA9IHRydWUsIC5od2RvbV9hY2Nlc3MgPSB0cnVlCisgICAgfSwK KyAgICB7CisgICAgICAgIC5zdGFydCA9IE1NX1BNVV9HTE9CQUwgKyBSX1BNVV9HTE9CQUxfR0xP QkFMX0dFTl9TVE9SQUdFMCwKKyAgICAgICAgLnNpemUgPSBSX1BNVV9HTE9CQUxfUEVSU19HTE9C X0dFTl9TVE9SQUdFNywKKyAgICAgICAgLnJlYWRvbmx5ID0gdHJ1ZSwgLmh3ZG9tX2FjY2VzcyA9 IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgLyogVW5pdmVyc2FsIHJlYWQtb25seSBhY2Nl c3MgdG8gQ1JGLiBMaW51eCBDQ0YgbmVlZHMgdGhpcy4gICovCisgICAgICAgIC5zdGFydCA9IE1N X0NSRl9BUEIsIC5zaXplID0gMHgxMDQsIC5yZWFkb25seSA9IHRydWUsCisgICAgICAgIC5od2Rv bV9hY2Nlc3MgPSB0cnVlCisgICAgfSwKKyAgICB7CisgICAgICAgIC8qIFVuaXZlcnNhbCByZWFk LW9ubHkgYWNjZXNzIHRvIENSTC4gTGludXggQ0NGIG5lZWRzIHRoaXMuICAqLworICAgICAgICAu c3RhcnQgPSBNTV9DUkxfQVBCLCAuc2l6ZSA9IDB4Mjg0LCAucmVhZG9ubHkgPSB0cnVlLAorICAg ICAgICAuaHdkb21fYWNjZXNzID0gdHJ1ZQorICAgIH0KK307CisKK3N0YXRpYyBib29sIHBtX2No ZWNrX2FjY2Vzcyhjb25zdCBzdHJ1Y3QgcG1fYWNjZXNzICphY2wsIHN0cnVjdCBkb21haW4gKmQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaWR4KQoreworICAgIHVuc2ln bmVkIGxvbmcgbWZuOworCisgICAgaWYgKCBhY2xbaWR4XS5od2RvbV9hY2Nlc3MgJiYgaXNfaGFy ZHdhcmVfZG9tYWluKGQpICkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoICFhY2xb aWR4XS5hZGRyICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWZuID0gUEZOX0RPV04o YWNsW2lkeF0uYWRkcik7CisgICAgcmV0dXJuIGlvbWVtX2FjY2Vzc19wZXJtaXR0ZWQoZCwgbWZu LCBtZm4pOworfQorCisvKiBDaGVjayBpZiBhIGRvbWFpbiBoYXMgYWNjZXNzIHRvIGEgbm9kZS4g ICovCitzdGF0aWMgYm9vbCBkb21haW5faGFzX25vZGVfYWNjZXNzKHN0cnVjdCBkb21haW4gKmQs IHVpbnQzMl90IG5vZGVpZCkKK3sKKyAgICBpZiAoIG5vZGVpZCA+IEFSUkFZX1NJWkUocG1fbm9k ZV9hY2Nlc3MpICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHBtX2NoZWNr X2FjY2VzcyhwbV9ub2RlX2FjY2VzcywgZCwgbm9kZWlkKTsKK30KKworLyogQ2hlY2sgaWYgYSBk b21haW4gaGFzIGFjY2VzcyB0byBhIHJlc2V0IGxpbmUuICAqLworc3RhdGljIGJvb2wgZG9tYWlu X2hhc19yZXNldF9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgcnN0KQoreworICAg IGlmICggcnN0IDwgWElMUE1fUkVTRVRfUENJRV9DRkcgKQorICAgICAgICByZXR1cm4gZmFsc2U7 CisKKyAgICByc3QgLT0gWElMUE1fUkVTRVRfUENJRV9DRkc7CisKKyAgICBpZiAoIHJzdCA+IEFS UkFZX1NJWkUocG1fcmVzZXRfYWNjZXNzKSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg IHJldHVybiBwbV9jaGVja19hY2Nlc3MocG1fcmVzZXRfYWNjZXNzLCBkLCByc3QpOworfQorCisv KgorICogQ2hlY2sgaWYgYSBnaXZlbiBkb21haW4gaGFzIGFjY2VzcyB0byBwZXJmb3JtIGFuIGlu ZGlyZWN0CisgKiBNTUlPIGFjY2Vzcy4KKyAqCisgKiBJZiB0aGUgcHJvdmlkZWQgbWFzayBpcyBp bnZhbGlkLCBpdCB3aWxsIGJlIGZpeGVkIHVwLgorICovCitzdGF0aWMgYm9vbCBkb21haW5faGFz X21taW9fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgd3JpdGUsIHBhZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgKm1hc2spCit7CisgICAgdW5zaWduZWQgaW50IGk7Cisg ICAgYm9vbCByZXQgPSBmYWxzZTsKKyAgICB1aW50MzJfdCBwcm90X21hc2sgPSAwOworCisgICAg LyoKKyAgICAgKiBUaGUgaGFyZHdhcmUgZG9tYWluIGdldHMgcmVhZCBhY2Nlc3MgdG8gZXZlcnl0 aGluZy4KKyAgICAgKiBMb3dlciBsYXllcnMgd2lsbCBkbyBmdXJ0aGVyIGZpbHRlcmluZy4KKyAg ICAgKi8KKyAgICBpZiAoICF3cml0ZSAmJiBpc19oYXJkd2FyZV9kb21haW4oZCkgKQorICAgICAg ICByZXR1cm4gdHJ1ZTsKKworICAgIC8qIFNjYW4gdGhlIEFDTC4gICovCisgICAgZm9yICggaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHBtX21taW9fYWNjZXNzKTsgaSsrICkKKyAgICB7CisgICAgICAg IGlmICggYWRkciA8IHBtX21taW9fYWNjZXNzW2ldLnN0YXJ0ICkKKyAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgICAgaWYgKCBhZGRyID4gcG1fbW1pb19hY2Nlc3NbaV0uc3RhcnQgKyBw bV9tbWlvX2FjY2Vzc1tpXS5zaXplICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg IGlmICggd3JpdGUgJiYgcG1fbW1pb19hY2Nlc3NbaV0ucmVhZG9ubHkgKQorICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIHBtX21taW9fYWNjZXNzW2ldLmh3ZG9tX2FjY2Vz cyAmJiAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgaWYgKCAhZG9tYWluX2hhc19ub2RlX2FjY2VzcyhkLCBwbV9tbWlvX2FjY2Vzc1tp XS5ub2RlKSApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLyogV2UndmUg Z290IGFjY2VzcyB0byB0aGlzIHJlZyAob3IgcGFydHMgb2YgaXQpLiAgKi8KKyAgICAgICAgcmV0 ID0gdHJ1ZTsKKworICAgICAgICAvKiBQZXJtaXQgd3JpdGUgYWNjZXNzIHRvIHNlbGVjdGVkIGJp dHMuICAqLworICAgICAgICBwcm90X21hc2sgfD0gcG1fbW1pb19hY2Nlc3NbaV0ubWFzayA/OiAw eEZGRkZGRkZGOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBNYXNraW5nIG9ubHkg YXBwbGllcyB0byB3cml0ZXMuICAqLworICAgIGlmICggd3JpdGUgKQorICAgICAgICAqbWFzayAm PSBwcm90X21hc2s7CisKKyAgICByZXR1cm4gcmV0OworfQorCiBib29sIHp5bnFtcF9lZW1pKHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAgIHJldHVybiBmYWxzZTsKLS0gCjEuOS4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==