From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: david.y.wei@intel.com) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by groups.io with SMTP; Fri, 23 Aug 2019 09:58:02 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Aug 2019 09:58:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,422,1559545200"; d="scan'208";a="173533632" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga008.jf.intel.com with ESMTP; 23 Aug 2019 09:58:00 -0700 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 23 Aug 2019 09:58:00 -0700 Received: from fmsmsx121.amr.corp.intel.com ([169.254.6.244]) by FMSMSX102.amr.corp.intel.com ([169.254.10.170]) with mapi id 14.03.0439.000; Fri, 23 Aug 2019 09:58:00 -0700 From: "David Wei" To: "Kubacki, Michael A" , "devel@edk2.groups.io" CC: "Wu, Hao A" , "Gao, Liming" , "Sinha, Ankit" , "Agyeman, Prince" , "Desimone, Nathaniel L" , "Kinney, Michael D" Subject: Re: [edk2-platform patch 3/7] SimicsOpenBoardPkg: Add SimicsOpenBoardPkg and its modules Thread-Topic: [edk2-platform patch 3/7] SimicsOpenBoardPkg: Add SimicsOpenBoardPkg and its modules Thread-Index: AQHVTwRbNBQtNSGVkEmrTNKCArWbCqcDMtKQgAXSJhA= Date: Fri, 23 Aug 2019 16:57:59 +0000 Message-ID: References: <28fad95137c6aecfbf593a14191bdb4d0819951e.1565389186.git.david.y.wei@intel.com> <49AB4ACB9627B8468F29D589A27B745588A5001E@ORSMSX122.amr.corp.intel.com> In-Reply-To: <49AB4ACB9627B8468F29D589A27B745588A5001E@ORSMSX122.amr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDYzYzAzYTUtZmE2Yi00ODU1LWJlNTctOWNmMmI2NjVkYzczIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiR01cL3ZHaEFRSEM3cndRWUF5RUNGU0oyVlpQekIrMkJPczlydTVoZHFsZ25YRlF5QWRVV2hqWDhqRVZ3N21RdXAifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.1.200.106] MIME-Version: 1.0 Return-Path: david.y.wei@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWlrZSwNClBsZWFzZSBzZWUgdGhlIHVwZGF0ZXMgb25saW5lIGJlbG93LiBQbGVhc2UgbGV0 IG1lIGtub3cgaWYgeW91IGhhdmUgYW55IG1vcmUgY29tbWVudHMuDQoNClRoYW5rcw0KRGF2aWQN Cg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEt1YmFja2ksIE1pY2hhZWwgQSAN ClNlbnQ6IE1vbmRheSwgQXVndXN0IDE5LCAyMDE5IDY6MDQgUE0NClRvOiBXZWksIERhdmlkIFkg PGRhdmlkLnkud2VpQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQpDYzogV3UsIEhh byBBIDxoYW8uYS53dUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5j b20+OyBTaW5oYSwgQW5raXQgPGFua2l0LnNpbmhhQGludGVsLmNvbT47IEFneWVtYW4sIFByaW5j ZSA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29tPjsgRGVzaW1vbmUsIE5hdGhhbmllbCBMIDxuYXRo YW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5k Lmtpbm5leUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSRTogW2VkazItcGxhdGZvcm0gcGF0Y2ggMy83 XSBTaW1pY3NPcGVuQm9hcmRQa2c6IEFkZCBTaW1pY3NPcGVuQm9hcmRQa2cgYW5kIGl0cyBtb2R1 bGVzDQoNCkZlZWRiYWNrIEkgY291bGQgbm90IGZpbmQgYWxyZWFkeSBjb3ZlcmVkIGVsc2V3aGVy ZToNCg0KMS4gRHNkdC5hc2w6IENoYW5nZSAiT1ZNRiIgaW4gdGhlIGZvbGxvd2luZyBsaW5lIHRv IHNvbWV0aGluZyBlbHNlIHVuaXF1ZSB0byB0aGlzIGltcGxlbWVudGF0aW9uOg0KICAgICAiRGVm aW5pdGlvbkJsb2NrICgiRHNkdC5hbWwiLCAiRFNEVCIsIDEsICJJTlRFTCAiLCAiT1ZNRiAgICAi LCA0KSB7Ig0KWWR3ZWk6IGRvbmUNCjIuIEJhc2VQY2hTcGlDb21tb25MaWIuaW5mOiBUaGlzIHNp bGljb24gcGFja2FnZSBzaG91bGQgbm90IGhhdmUgYSBkZXBlbmRlbmN5IG9uIFNpbWljc09wZW5C b2FyZFBrZy5kZWMuDQpZZHdlaTogZG9uZQ0KMy4gUGxhdGZvcm0uaDogVGhpcyBoZWFkZXIgZ3Vh cmQgZGVmaW5pdGlvbiBpcyB1bnVzdWFsIGluIHN0eWxlIGFuZCBjb252ZW50aW9uLCBwbGVhc2Ug Y29ycmVjdDogIl9QbGF0Zm9ybV9oX0lOQ0xVREVEXyINCllkd2VpOiBkb25lDQo0LiBQbGF0Zm9y bS5oOiBQbGVhc2UgdXBkYXRlIHVzYWdlIG9mICJPVk1GIiBpbiB2YXJpb3VzIHNpZ25hdHVyZXMg dGhyb3VnaG91dCB0aGUgZmlsZSB0byBzb21ldGhpbmcgcGFja2FnZSB1bmlxdWUuDQpZZHdlaTog ZG9uZQ0KNS4gU2ltaWNzWDU4UGxhdGZvcm1Db25maWcuaDogV2h5IGlzIHRoaXMgZmlsZSBub3Qg aW4gU2ltaWNzWDU4U2t0UGtnPw0KWWR3ZWk6IGRvbmUNCjYuIFNpbWljc1g1OFBsYXRmb3JtQ29u ZmlnLmg6IENoYW5nZSAiT1ZNRiIgaW4gY29weXJpZ2h0IGhlYWRlciB0byAiU2ltaWNzIFg1OCIN Cllkd2VpOiBkb25lDQo3LiBTaW1pY3NQbGF0Zm9ybXMuaDogQ2hhbmdlICJPVk1GIiBpbiBjb3B5 cmlnaHQgaGVhZGVyIHRvICJTaW1pY3MiDQpZZHdlaTogZG9uZQ0KOC4gU2ltaWNzUGxhdGZvcm1z LmggLSBMaW5lIDE2OiBGb2xsb3cgdXAgb24gVE9ETyANCllkd2VpOiBkb25lDQo5LiBYNThJY2gx MC5oOiBXaHkgaXMgdGhpcyBmaWxlIGluIHRoZSBTaW1pY3MgYm9hcmQgcGFja2FnZT8gSXQgc2hv dWxkIGJlIGluIHRoZSBzaWxpY29uIHBhY2thZ2UuDQpZZHdlaTogZG9uZQ0KMTAuIExvYWRMaW51 eExpYi5pbmY6IFRoaXMgcGFja2FnZSBzaG91bGQgYXZvaWQgYSBkZXBkZW5jeSBvbiBPdm1mUGtn LmRlYw0KWWR3ZWk6IGRvbmUNCjExLiBMb2FkTGludXhMaWIuaW5mOiBMaWJyYXJ5IG5hbWUgZG9l cyBub3QgZm9sbG93aW5nIG5hbWluZyBjb252ZW50aW9uLiBJLmUuIHNob3VsZCBiZSBCYXNlTG9h ZExpbnV4TGliLmluZi4NCllkd2VpOiBUaGlzIGRyaXZlciBpcyBmcm9tIGVkazJcT3ZtZlBrZ1xM aWJyYXJ5XExvYWRMaW51eExpYi4gSSBkaWRuJ3QgbWFrZSBjaGFuZ2UuDQoxMi4gTG9hZExpbnV4 TGliLmluZjogVGhpcyBpcyBub3QgdHJ1bHkgYSBCQVNFIGxpYnJhcnkuIEZvciBleGFtcGxlLCBn QlMgKGJvb3Qgc2VydmljZXMpIGFyZSB1bmF2YWlsYWJsZSBpbiBSdW50aW1lIERYRS4NCllkd2Vp OiBUaGlzIGRyaXZlciBpcyBmcm9tIGVkazJcT3ZtZlBrZ1xMaWJyYXJ5XExvYWRMaW51eExpYi4g SSB0aGluayBpdCBpcyBqdXN0IHVzZWQgYnkgTGludXggTG9hZGVyLiANCjEzLiBQbGF0Zm9ybS5j OiBDaGFuZ2UgIk9WTUYiIHJlZmVyZW5jZSBpbiBjb3B5cmlnaHQgaGVhZGVyLg0KWWR3ZWk6IGRv bmUNCjE0LiBQbGF0Zm9ybS5oOiBDaGFuZ2UgIk9WTUYiIHJlZmVyZW5jZSBpbiBjb3B5cmlnaHQg aGVhZGVyLg0KWWR3ZWk6IGRvbmUNCjE1LiBDbW9zLmM6IEl0IHNlZW1zIENtb3NBY2Nlc3NMaWIg aW4gQm9hcmRNb2R1bGVQa2cgY291bGQgYmUgdXNlZCBoZXJlIHRvIGF2b2lkIGR1cGxpY2F0aW9u Lg0KWWR3ZWk6IEkgdHJpZWQgQ21vc0FjY2Vzc0xpYiBpbiBCb2FyZE1vZHVsZVBrZyBhbmQgaXQg Y2F1c2UgYnVpbGQgZXJyb3IuIEkgZGlkbid0IG1ha2UgY2hhbmdlLg0KMTYuIEZ2LmM6IEluIE1p blBsYXRmb3JtLCBhIG1vcmUgaW50dWl0aXZlIHBsYWNlIHRvIG1hbmFnZSBGVnMgaXMgaW4gYSBi b2FyZC1zcGVjaWZpYyBpbnN0YW5jZSBvZiBQZWlSZXBvcnRGdkxpYg0KWWR3ZWk6IEl0IGlzIHVz ZWQgZm9yIFNJTUlDUyBTMyByZXN1bWUuIERpZmZlcmVudCBwdXJwb3NlLiAgDQoxNy4gR2VuZXJh bCBjb21tZW50OiBUaGUgbW9kdWxlcyAiUGxhdGZvcm1QZWkiIGFuZCAiUGxhdGZvcm1EeGUiIHNo b3VsZCBiZSBhdm9pZGVkIGluIGEgTWluUGxhdGZvcm0uDQogICAgICAgIE1pblBsYXRmb3JtUGtn IGlzIGNvbnNpZGVyZWQgdGhlICJwbGF0Zm9ybSIgYW5kIFNpbWljc09wZW5Cb2FyZFBrZyBpcyBj b25zaWRlcmVkIHRoZSAiYm9hcmQiLCB0aGVyZWZvcmUgdGhpcw0KICAgICAgICBjb2RlIHNob3Vs ZCBsaWtlbHkgYmUgaW4gYSBib2FyZCBsaWJyYXJ5IGxpbmtlZCBhZ2FpbnN0IGEgUGxhdGZvcm1J bml0IG1vZHVsZSBpbiBNaW5QbGF0Zm9ybVBrZy4gU3VjaCBhcyBCb2FyZEluaXRMaWINCiAgICAg ICAgd2hpY2ggaXMgdmVyeSBlbXB0eSBhdCB0aGUgbW9tZW50LiBBdCBhIG1pbmltdW0sIGlmIGtl cHQgYXMgYSBtb2R1bGUgZm9yIGRpc3BhdGNoLCB0aGUgbmFtZSBzaG91bGQgbm90IGxlYWQgdG8g Y29uZnVzaW9uDQogICAgICAgIHdpdGggcGxhdGZvcm0gbW9kdWxlcyBpbiBNaW5QbGF0Zm9ybVBr Zy4NCllkd2VpOiBUaGV5IGFyZSBTSU1JQ1Mgc3BlY2lmaWNhbC4gU28gSSBjaGFuZ2UgdGhlaXIg bmFtZSBhcyBTaW1pY3NQZWkgYW5kIFNpbWljc0R4ZQ0KMTguIFBsYXRmb3JtUGVpLmluZjogVGhp cyBwYWNrYWdlIHNob3VsZCBhdm9pZCBhIGRlcGRlbmN5IG9uIE92bWZQa2cuZGVjDQpZZHdlaTog ZG9uZQ0KMTkuIFg1OFNtYW1TYXZlU3RhdGVNYXAuaDogSWYgWDU4LXNwZWNpZmljLCBpdCBzaG91 bGQgZ28gdG8gU2ltaWNzWDU4U2t0UGtnLg0KWWR3ZWk6IGRvbmUNCjIwLiBTZXJpYWxpemVWYXJp YWJsZXNMaWIuaW5mOiBUaGlzIHBhY2thZ2Ugc2hvdWxkIGF2b2lkIGEgZGVwZGVuY3kgb24gT3Zt ZlBrZy5kZWMNCllkd2VpOiBkb25lDQoyMS4gU2ltaWNzT3BlbkJvYXJkUGtnLmRlYzogUGNkcyBp biB0aGUgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkIHRva2VuIHNwYWNlIHNob3VsZCBiZSBk ZWNsYXJlZCBpbiBhIERFQyBmaWxlDQogICAgICAgaW4gdGhlIFNpbWljc1g1OFNrdFBrZy4gU2lt aWNzT3BlbkJvYXJkUGtnIHNob3VsZCBub3QgYmUgaGFyZGNvZGVkIHRvIHRoaXMgcGFydGljdWxh ciBzaWxpY29uIGRlc2lnbi4NCllkd2VpOiBkb25lDQoyMi4gU2ltaWNzT3BlbkJvYXJkUGtnLmRl YzogIlg1OCIgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgY29weXJpZ2h0IGhlYWRlciBhcyB0 aGUgREVDIGlzIGF0IHRoZSBwYWNrYWdlLWxldmVsDQogICAgICAgYW5kIG5vdCB0aGUgYm9hcmQg bGV2ZWwuDQpZZHdlaTogZG9uZQ0KMjMuIFNpbWljc09wZW5Cb2FyZFBrZy5kZWM6IFRoZSBQQUNL QUdFX05BTUUgc2hvdWxkIG5vdCBiZSAiIFNpbWljc1g1OFBrZyIgYXMgdGhlIERFQyBpcyBhdCBw YWNrYWdlLWxldmVsIGFuZA0KICAgICAgIG5vdCBTaW1pY3MgYm9hcmQtc3BlY2lmaWMuDQpZZHdl aTogZG9uZQ0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXZWksIERhdmlk IFkNCj4gU2VudDogRnJpZGF5LCBBdWd1c3QgOSwgMjAxOSAzOjQ3IFBNDQo+IFRvOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPiBDYzogV3UsIEhhbyBBIDxoYW8uYS53dUBpbnRlbC5jb20+OyBHYW8s IExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+Ow0KPiBTaW5oYSwgQW5raXQgPGFua2l0LnNp bmhhQGludGVsLmNvbT47IEFneWVtYW4sIFByaW5jZQ0KPiA8cHJpbmNlLmFneWVtYW5AaW50ZWwu Y29tPjsgS3ViYWNraSwgTWljaGFlbCBBDQo+IDxtaWNoYWVsLmEua3ViYWNraUBpbnRlbC5jb20+ OyBEZXNpbW9uZSwgTmF0aGFuaWVsIEwNCj4gPG5hdGhhbmllbC5sLmRlc2ltb25lQGludGVsLmNv bT47IEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4g U3ViamVjdDogW2VkazItcGxhdGZvcm0gcGF0Y2ggMy83XSBTaW1pY3NPcGVuQm9hcmRQa2c6IEFk ZA0KPiBTaW1pY3NPcGVuQm9hcmRQa2cgYW5kIGl0cyBtb2R1bGVzDQo+IA0KPiBBZGQgbW9kdWxl cyBBY3BpVGFibGVzLCBJbmNsdWRlLCBMaWJyYXJ5LCBQbGF0Zm9ybUR4ZSwgUGxhdGZvcm1QZWks IFBvbGljeSwNCj4gU21iaW9zUGxhdGZvcm1EeGUNCj4gZm9yIFNpbWljcyBRU1AgcGxhdGZvcm0g c3VwcG9ydA0KPiANCj4gQ2M6IEhhbyBXdSA8aGFvLmEud3VAaW50ZWwuY29tPg0KPiBDYzogTGlt aW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IENjOiBBbmtpdCBTaW5oYSA8YW5raXQu c2luaGFAaW50ZWwuY29tPg0KPiBDYzogQWd5ZW1hbiBQcmluY2UgPHByaW5jZS5hZ3llbWFuQGlu dGVsLmNvbT4NCj4gQ2M6IEt1YmFja2kgTWljaGFlbCBBIDxtaWNoYWVsLmEua3ViYWNraUBpbnRl bC5jb20+DQo+IENjOiBOYXRlIERlU2ltb25lIDxuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5j b20+DQo+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4N Cj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEu MA0KPiANCj4gU2lnbmVkLW9mZi1ieTogRGF2aWQgV2VpIDxkYXZpZC55LndlaUBpbnRlbC5jb20+ DQo+IC0tLQ0KPiAgLi4uL0xpYnJhcnkvTG9hZExpbnV4TGliL0xpbnV4LmMgICAgICAgICAgICAg ICAgICAgfCA2NjIgKysrKysrKysrKysrKysrKw0KPiAgLi4uL0xpYnJhcnkvTG9hZExpbnV4TGli L0xpbnV4R2R0LmMgICAgICAgICAgICAgICAgfCAxNzUgKysrKysNCj4gIC4uLi9MaWJyYXJ5L052 VmFyc0ZpbGVMaWIvRnNBY2Nlc3MuYyAgICAgICAgICAgICAgIHwgNTA3ICsrKysrKysrKysrKw0K PiAgLi4uL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmMgICAgICAgICAgfCAg NzcgKysNCj4gIC4uLi9TZXJpYWxpemVWYXJpYWJsZXNMaWIvU2VyaWFsaXplVmFyaWFibGVzTGli LmMgIHwgODY5DQo+ICsrKysrKysrKysrKysrKysrKysrKw0KPiAgLi4uL1NpbWljc09wZW5Cb2Fy ZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5jICAgICAgfCA4NjUNCj4gKysrKysrKysrKysrKysr KysrKysNCj4gIC4uLi9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUNvbmZpZy5jICAgICAgICAgICAgICAg ICAgIHwgMTIzICsrKw0KPiAgLi4uL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBl aS9DbW9zLmMgICAgfCAgNTcgKysNCj4gIC4uLi9QbGF0Zm9ybVBlaS9GZWF0dXJlQ29udHJvbC5j ICAgICAgICAgICAgICAgICAgIHwgMTE0ICsrKw0KPiAgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Z2LmMgfCAxMDAgKysrDQo+ICAuLi4vU2ltaWNzT3BlbkJv YXJkUGtnL1BsYXRmb3JtUGVpL01lbURldGVjdC5jICAgICB8IDU2OCArKysrKysrKysrKysrKw0K PiAgLi4uL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jICAgICAgfCA2 MzEgKysrKysrKysrKysrKysrDQo+ICAuLi4vU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvblBv bGljeUluaXRMaWIuYyAgICB8IDEwOCArKysNCj4gIC4uLi9TaWxpY29uUG9saWN5VXBkYXRlTGli LmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDcwICsrDQo+ICAuLi4vU21iaW9zUGxhdGZvcm1E eGUvU21iaW9zUGxhdGZvcm1EeGUuYyAgICAgICAgICB8IDE0OCArKysrDQo+ICAuLi4vU2ltaWNz T3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvQWNwaVRhYmxlcy5pbmYgICB8ICAzMSArDQo+ICAuLi4v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvRHNkdC5hc2wgICB8IDgyMQ0KPiAr KysrKysrKysrKysrKysrKysrDQo+ICAuLi4vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlU YWJsZXMvUGxhdGZvcm0uaCB8ICA3NSArKw0KPiAgLi4uL0luY2x1ZGUvR3VpZC9TaW1pY3NYNThQ bGF0Zm9ybUNvbmZpZy5oICAgICAgICAgfCAgMTcgKw0KPiAgLi4uL0luY2x1ZGUvSW5kdXN0cnlT dGFuZGFyZC9YNThJY2gxMC5oICAgICAgICAgICAgfCAxMDYgKysrDQo+ICAuLi4vU2ltaWNzT3Bl bkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvSXNhQWNwaS5oICB8IDI5OCArKysrKysrDQo+ICAu Li4vU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvSXNhSW8uaCAgICB8IDM1NiAr KysrKysrKysNCj4gIC4uLi9JbmNsdWRlL1Byb3RvY29sL0xlZ2FjeTgyNTkuaCAgICAgICAgICAg ICAgICAgIHwgMjkxICsrKysrKysNCj4gIC4uLi9JbmNsdWRlL1JlZ2lzdGVyL1g1OFNtcmFtU2F2 ZVN0YXRlTWFwLmggICAgICAgIHwgMTc4ICsrKysrDQo+ICAuLi4vU2ltaWNzT3BlbkJvYXJkUGtn L0luY2x1ZGUvU2ltaWNzUGxhdGZvcm1zLmggICB8ICA1NCArKw0KPiAgLi4uL0xpYnJhcnkvTG9h ZExpbnV4TGliL0lhMzIvSnVtcFRvS2VybmVsLm5hc20gICAgfCAgNDEgKw0KPiAgLi4uL0xpYnJh cnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5oICAgICAgICAgICAgfCAgNTIgKysNCj4gIC4u Li9MaWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGludXhMaWIuaW5mICAgICAgICAgIHwgIDQyICsN Cj4gIC4uLi9MaWJyYXJ5L0xvYWRMaW51eExpYi9YNjQvSnVtcFRvS2VybmVsLm5hc20gICAgIHwg IDg1ICsrDQo+ICAuLi4vTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaCAgICAg ICAgICB8ICA1NSArKw0KPiAgLi4uL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGli LmluZiAgICAgICAgfCAgNTMgKysNCj4gIC4uLi9TZXJpYWxpemVWYXJpYWJsZXNMaWIvU2VyaWFs aXplVmFyaWFibGVzTGliLmggIHwgIDMzICsNCj4gIC4uLi9TZXJpYWxpemVWYXJpYWJsZXNMaWIu aW5mICAgICAgICAgICAgICAgICAgICAgIHwgIDM2ICsNCj4gIC4uLi9TaW1pY3NPcGVuQm9hcmRQ a2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uaCAgICAgIHwgIDM3ICsNCj4gIC4uLi9TaW1pY3NPcGVu Qm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uaW5mICAgIHwgIDY1ICsrDQo+ICAuLi4vU2lt aWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLnVuaSAgICB8ICAzMSArDQo+ICAu Li4vUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuaCAgICAgICAgICAgICAgICAgICB8ICA1MSAr Kw0KPiAgLi4uL1BsYXRmb3JtRHhlL1BsYXRmb3JtRm9ybXMudmZyICAgICAgICAgICAgICAgICAg fCAgNjcgKysNCj4gIC4uLi9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvQ21v cy5oICAgIHwgIDUwICsrDQo+ICAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1Bs YXRmb3JtLmggICAgICB8ICA5MyArKysNCj4gIC4uLi9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZv cm1QZWkvUGxhdGZvcm1QZWkuaW5mIHwgMTA5ICsrKw0KPiAgLi4uL1NpbGljb25Qb2xpY3lJbml0 TGliL1NpbGljb25Qb2xpY3lJbml0TGliLmluZiAgfCAgMzggKw0KPiAgLi4uL1NpbGljb25Qb2xp Y3lVcGRhdGVMaWIuaW5mICAgICAgICAgICAgICAgICAgICAgfCAgMzUgKw0KPiAgLi4uL1NpbWlj c09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVjICAgICAgfCAxNjggKysrKw0KPiAg Li4uL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlLmggICAgICAgICAgfCAgMzgg Kw0KPiAgLi4uL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlLmluZiAgICAgICAg fCAgNTEgKysNCj4gIDQ2IGZpbGVzIGNoYW5nZWQsIDg1MzEgaW5zZXJ0aW9ucygrKQ0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJy YXJ5L0xvYWRMaW51eExpYi9MaW51eC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xpbnV4R2R0 LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL0ZzQWNjZXNzLmMNCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNG aWxlTGliL052VmFyc0ZpbGVMaWIuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9T ZXJpYWxpemVWYXJpYQ0KPiBibGVzTGliLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uYw0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q bGF0Zm9ybUR4ZS9QbGF0Zm9ybUNvbmZpZy5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYw0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9y bVBlaS9GZWF0dXJlQ29udHJvbC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Z2LmMNCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvTWVt RGV0ZWN0LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxp Y29uUG9saWN5SW5pdExpYi9TaWxpY29uUA0KPiBvbGljeUluaXRMaWIuYw0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGli cmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1NpbGljDQo+IG9uUG9saWN5VXBkYXRlTGliLmMN Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUuYw0KPiAgY3JlYXRlIG1vZGUg MTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL0Fj cGlUYWJsZXMuaW5mDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNz T3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvRHNkdC5hc2wNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0K PiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9QbGF0Zm9ybS5o DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0luY2x1ZGUvR3VpZC9TaW1pY3NYNThQbGF0Zm9ybUNvbmZpZy5oDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvSW5k dXN0cnlTdGFuZGFyZC9YNThJY2gxMC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvSXNhQWNwaS5oDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L0luY2x1ZGUvUHJvdG9jb2wvSXNhSW8uaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0xlZ2FjeTgyNTku aA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9JbmNsdWRlL1JlZ2lzdGVyL1g1OFNtcmFtU2F2ZVN0YXRlTWFwDQo+IC5oDQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1 ZGUvU2ltaWNzUGxhdGZvcm1zLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvSWEzMi9KdW1wVG9L ZXJuZWwuDQo+IG5hc20NCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4TGliLmgNCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv TGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4TGliLmluZg0KPiAgY3JlYXRlIG1vZGUgMTAw NjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51 eExpYi9YNjQvSnVtcFRvS2VybmVsLg0KPiBuYXNtDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4g UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9O dlZhcnNGaWxlTGliLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaW5m DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliL1NlcmlhbGl6ZVZhcmlhDQo+IGJsZXNM aWIuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYXJpYQ0KPiBi bGVzTGliLmluZg0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRm b3JtLmluZg0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS51bmkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZv cm1Db25maWcuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUZvcm1zLnZmcg0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9D bW9zLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBl aS5pbmYNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvblANCj4g b2xpY3lJbml0TGliLmluZg0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGli L1NpbGljDQo+IG9uUG9saWN5VXBkYXRlTGliLmluZg0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVj DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlLmgNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZv cm1EeGUvU21iaW9zUGxhdGZvcm1EeGUuaQ0KPiBuZg0KPiANCj4gZGlmZiAtLWdpdCBhL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9MaW51eC5j DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4 TGliL0xpbnV4LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4u NDNhMmRlZTlmNg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9MaW51eC5jDQo+IEBAIC0wLDAgKzEs NjYyIEBADQo+ICsvKiogQGZpbGUNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAxNCBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiAr I2luY2x1ZGUgIkxvYWRMaW51eExpYi5oIg0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBBIHNpbXBs ZSBjaGVjayBvZiB0aGUga2VybmVsIHNldHVwIGltYWdlDQo+ICsNCj4gKyAgQW4gYXNzdW1wdGlv biBpcyBtYWRlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRhdGEgaXMgYXQgbGVhc3QgdGhlDQo+ICsg IHNpemUgb2Ygc3RydWN0IGJvb3RfcGFyYW1zLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gICAgS2Vy bmVsU2V0dXAgLSBUaGUga2VybmVsIHNldHVwIGltYWdlDQo+ICsNCj4gKyAgQHJldHZhbCAgICBF RklfU1VDQ0VTUyAtIFRoZSBrZXJuZWwgc2V0dXAgbG9va3MgdmFsaWQgYW5kIHN1cHBvcnRlZA0K PiArICBAcmV0dmFsICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAtIEtlcm5lbFNldHVwIHdhcyBO VUxMDQo+ICsgIEByZXR2YWwgICAgRUZJX1VOU1VQUE9SVEVEIC0gVGhlIGtlcm5lbCBzZXR1cCBp cyBub3QgdmFsaWQgb3Igc3VwcG9ydGVkDQo+ICsNCj4gKyoqLw0KPiArU1RBVElDDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0Jhc2ljS2VybmVsU2V0dXBDaGVjayAoDQo+ICsgIElOIFZP SUQgICAgICAgICpLZXJuZWxTZXR1cA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBMb2FkTGlu dXhDaGVja0tlcm5lbFNldHVwKEtlcm5lbFNldHVwLCBzaXplb2YgKHN0cnVjdA0KPiBib290X3Bh cmFtcykpOw0KPiArfQ0KPiArDQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArTG9h ZExpbnV4Q2hlY2tLZXJuZWxTZXR1cCAoDQo+ICsgIElOIFZPSUQgICAgICAgICpLZXJuZWxTZXR1 cCwNCj4gKyAgSU4gVUlOVE4gICAgICAgS2VybmVsU2V0dXBTaXplDQo+ICsgICkNCj4gK3sNCj4g KyAgc3RydWN0IGJvb3RfcGFyYW1zICAgICAgICAqQnA7DQo+ICsNCj4gKyAgaWYgKEtlcm5lbFNl dHVwID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiAr ICB9DQo+ICsNCj4gKyAgaWYgKEtlcm5lbFNldHVwU2l6ZSA8IHNpemVvZiAoKkJwKSkgew0KPiAr ICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ICsgIH0NCj4gKw0KPiArICBCcCA9IChzdHJ1 Y3QgYm9vdF9wYXJhbXMqKSBLZXJuZWxTZXR1cDsNCj4gKw0KPiArICBpZiAoKEJwLT5oZHIuc2ln bmF0dXJlICE9IDB4QUE1NSkgfHwgLy8gQ2hlY2sgYm9vdCBzZWN0b3Igc2lnbmF0dXJlDQo+ICsg ICAgICAoQnAtPmhkci5oZWFkZXIgIT0gU0VUVVBfSERSKSB8fA0KPiArICAgICAgKEJwLT5oZHIu dmVyc2lvbiA8IDB4MjA1KSB8fCAvLyBXZSBvbmx5IHN1cHBvcnQgcmVsb2NhdGFibGUga2VybmVs cw0KPiArICAgICAgKCFCcC0+aGRyLnJlbG9jYXRhYmxlX2tlcm5lbCkNCj4gKyAgICAgKSB7DQo+ ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICByZXR1 cm4gRUZJX1NVQ0NFU1M7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArDQo+ICtVSU5UTg0KPiArRUZJ QVBJDQo+ICtMb2FkTGludXhHZXRLZXJuZWxTaXplICgNCj4gKyAgSU4gVk9JRCAgICAgICAgKktl cm5lbFNldHVwLA0KPiArICBJTiBVSU5UTiAgICAgICBLZXJuZWxTaXplDQo+ICsgICkNCj4gK3sN Cj4gKyAgc3RydWN0IGJvb3RfcGFyYW1zICAgICAgICAqQnA7DQo+ICsNCj4gKyAgaWYgKEVGSV9F UlJPUiAoQmFzaWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCkpKSB7DQo+ICsgICAgcmV0 dXJuIDA7DQo+ICsgIH0NCj4gKw0KPiArICBCcCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMqKSBLZXJu ZWxTZXR1cDsNCj4gKw0KPiArICBpZiAoQnAtPmhkci52ZXJzaW9uID4gMHgyMGEpIHsNCj4gKyAg ICByZXR1cm4gQnAtPmhkci5pbml0X3NpemU7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgLy8NCj4g KyAgICAvLyBBZGQgZXh0cmEgc2l6ZSBmb3Iga2VybmVsIGRlY29tcHJlc3Npb24NCj4gKyAgICAv Lw0KPiArICAgIHJldHVybiAzICogS2VybmVsU2l6ZTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsN Cj4gK1ZPSUQqDQo+ICtFRklBUEkNCj4gK0xvYWRMaW51eEFsbG9jYXRlS2VybmVsU2V0dXBQYWdl cyAoDQo+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgUGFnZXMNCj4gKyAgKQ0KPiArew0K PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1BIWVNJQ0FM X0FERFJFU1MgICAgICBBZGRyZXNzOw0KPiArDQo+ICsgIEFkZHJlc3MgPSBCQVNFXzFHQjsNCj4g KyAgU3RhdHVzID0gZ0JTLT5BbGxvY2F0ZVBhZ2VzICgNCj4gKyAgICAgICAgICAgICAgICAgIEFs bG9jYXRlTWF4QWRkcmVzcywNCj4gKyAgICAgICAgICAgICAgICAgIEVmaUxvYWRlckRhdGEsDQo+ ICsgICAgICAgICAgICAgICAgICBQYWdlcywNCj4gKyAgICAgICAgICAgICAgICAgICZBZGRyZXNz DQo+ICsgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiArICAgIHJldHVybiAoVk9JRCopKFVJTlROKSBBZGRyZXNzOw0KPiArICB9IGVsc2Ugew0K PiArICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4g K0VGSUFQSQ0KPiArTG9hZExpbnV4SW5pdGlhbGl6ZUtlcm5lbFNldHVwICgNCj4gKyAgSU4gVk9J RCAgICAgICAgKktlcm5lbFNldHVwDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgU2V0dXBF bmQ7DQo+ICsgIHN0cnVjdCBib290X3BhcmFtcyAgICAgICAgKkJwOw0KPiArDQo+ICsgIFN0YXR1 cyA9IEJhc2ljS2VybmVsU2V0dXBDaGVjayAoS2VybmVsU2V0dXApOw0KPiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsg IEJwID0gKHN0cnVjdCBib290X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KPiArDQo+ICsgIFNldHVw RW5kID0gMHgyMDIgKyAoQnAtPmhkci5qdW1wICYgMHhmZik7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gQ2xlYXIgYWxsIGJ1dCB0aGUgc2V0dXBfaGVhZGVyDQo+ICsgIC8vDQo+ICsgIFplcm9NZW0g KEtlcm5lbFNldHVwLCAweDFmMSk7DQo+ICsgIFplcm9NZW0gKCgoVUlOVDggKilLZXJuZWxTZXR1 cCkgKyBTZXR1cEVuZCwgNDA5NiAtIFNldHVwRW5kKTsNCj4gKyAgREVCVUcgKChFRklfRF9JTkZP LCAiQ2xlYXJlZCBrZXJuZWwgc2V0dXAgMC0weDFmMSwgMHglTHgtMHgxMDAwXG4iLA0KPiArICAg IChVSU5UNjQpU2V0dXBFbmQpKTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9 DQo+ICsNCj4gK1ZPSUQqDQo+ICtFRklBUEkNCj4gK0xvYWRMaW51eEFsbG9jYXRlS2VybmVsUGFn ZXMgKA0KPiArICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICpLZXJuZWxTZXR1cCwNCj4gKyAg SU4gVUlOVE4gICAgICAgICAgICAgICAgICBQYWdlcw0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAg ICAgIEtlcm5lbEFkZHJlc3M7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgTG9vcDsN Cj4gKyAgc3RydWN0IGJvb3RfcGFyYW1zICAgICAgICAqQnA7DQo+ICsNCj4gKyAgaWYgKEVGSV9F UlJPUiAoQmFzaWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCkpKSB7DQo+ICsgICAgcmV0 dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0KPiArICBCcCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMqKSBL ZXJuZWxTZXR1cDsNCj4gKw0KPiArICBmb3IgKExvb3AgPSAxOyBMb29wIDwgNTEyOyBMb29wKysp IHsNCj4gKyAgICBLZXJuZWxBZGRyZXNzID0gTXVsdFU2NHgzMiAoDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgMiAqIEJwLT5oZHIua2VybmVsX2FsaWdubWVudCwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICBMb29wDQo+ICsgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgICBTdGF0dXMg PSBnQlMtPkFsbG9jYXRlUGFnZXMgKA0KPiArICAgICAgICAgICAgICAgICAgICBBbGxvY2F0ZUFk ZHJlc3MsDQo+ICsgICAgICAgICAgICAgICAgICAgIEVmaUxvYWRlckRhdGEsDQo+ICsgICAgICAg ICAgICAgICAgICAgIFBhZ2VzLA0KPiArICAgICAgICAgICAgICAgICAgICAmS2VybmVsQWRkcmVz cw0KPiArICAgICAgICAgICAgICAgICAgICApOw0KPiArICAgIGlmICghRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ICsgICAgICByZXR1cm4gKFZPSUQqKShVSU5UTikgS2VybmVsQWRkcmVzczsNCj4g KyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gTlVMTDsNCj4gK30NCj4gKw0KPiArDQo+ ICtWT0lEKg0KPiArRUZJQVBJDQo+ICtMb2FkTGludXhBbGxvY2F0ZUNvbW1hbmRMaW5lUGFnZXMg KA0KPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgIFBhZ2VzDQo+ICsgICkNCj4gK3sNCj4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9QSFlTSUNBTF9B RERSRVNTICAgICAgQWRkcmVzczsNCj4gKw0KPiArICBBZGRyZXNzID0gMHhhMDAwMDsNCj4gKyAg U3RhdHVzID0gZ0JTLT5BbGxvY2F0ZVBhZ2VzICgNCj4gKyAgICAgICAgICAgICAgICAgIEFsbG9j YXRlTWF4QWRkcmVzcywNCj4gKyAgICAgICAgICAgICAgICAgIEVmaUxvYWRlckRhdGEsDQo+ICsg ICAgICAgICAgICAgICAgICBQYWdlcywNCj4gKyAgICAgICAgICAgICAgICAgICZBZGRyZXNzDQo+ ICsgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiArICAgIHJldHVybiAoVk9JRCopKFVJTlROKSBBZGRyZXNzOw0KPiArICB9IGVsc2Ugew0KPiAr ICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKw0KPiArVk9JRCoNCj4gK0VG SUFQSQ0KPiArTG9hZExpbnV4QWxsb2NhdGVJbml0cmRQYWdlcyAoDQo+ICsgIElOIFZPSUQgICAg ICAgICAgICAgICAgICAgKktlcm5lbFNldHVwLA0KPiArICBJTiBVSU5UTiAgICAgICAgICAgICAg ICAgIFBhZ2VzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBT dGF0dXM7DQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgQWRkcmVzczsNCj4gKw0KPiAr ICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcDsNCj4gKw0KPiArICBpZiAoRUZJX0VSUk9S IChCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKEtlcm5lbFNldHVwKSkpIHsNCj4gKyAgICByZXR1cm4g TlVMTDsNCj4gKyAgfQ0KPiArDQo+ICsgIEJwID0gKHN0cnVjdCBib290X3BhcmFtcyopIEtlcm5l bFNldHVwOw0KPiArDQo+ICsgIEFkZHJlc3MgPSAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpKFVJTlRO KSBCcC0+aGRyLnJhbWRpc2tfbWF4Ow0KPiArICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUGFnZXMg KA0KPiArICAgICAgICAgICAgICAgICAgQWxsb2NhdGVNYXhBZGRyZXNzLA0KPiArICAgICAgICAg ICAgICAgICAgRWZpTG9hZGVyRGF0YSwNCj4gKyAgICAgICAgICAgICAgICAgIFBhZ2VzLA0KPiAr ICAgICAgICAgICAgICAgICAgJkFkZHJlc3MNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsg IGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIChWT0lEKikoVUlOVE4p IEFkZHJlc3M7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4g K30NCj4gKw0KPiArDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1NldHVwTGludXhNZW1tYXAgKA0K PiArICBJTiBPVVQgc3RydWN0IGJvb3RfcGFyYW1zICAgICAgICAqQnANCj4gKyAgKQ0KPiArew0K PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG1wTWVtb3J5TWFwWzFdOw0KPiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwS2V5Ow0KPiArICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRvclNpemU7DQo+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdG9yVmVyc2lvbjsNCj4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU1hcFNpemU7DQo+ ICsgIEVGSV9NRU1PUllfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAqTWVtb3J5TWFwOw0KPiAr ICBFRklfTUVNT1JZX0RFU0NSSVBUT1IgICAgICAgICAgICAgICAgKk1lbW9yeU1hcFB0cjsNCj4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiArICBzdHJ1 Y3QgZWZpX2luZm8gICAgICAgICAgICAgICAgICAgICAgKkVmaTsNCj4gKyAgc3RydWN0IGU4MjBf ZW50cnkgICAgICAgICAgICAgICAgICAgICpMYXN0RTgyMDsNCj4gKyAgc3RydWN0IGU4MjBfZW50 cnkgICAgICAgICAgICAgICAgICAgICpFODIwOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRTgyMEVudHJ5Q291bnQ7DQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNT ICAgICAgICAgICAgICAgICBMYXN0RW5kQWRkcjsNCj4gKw0KPiArICAvLw0KPiArICAvLyBHZXQg U3lzdGVtIE1lbW9yeU1hcFNpemUNCj4gKyAgLy8NCj4gKyAgTWVtb3J5TWFwU2l6ZSA9IHNpemVv ZiAoVG1wTWVtb3J5TWFwKTsNCj4gKyAgU3RhdHVzID0gZ0JTLT5HZXRNZW1vcnlNYXAgKA0KPiAr ICAgICAgICAgICAgICAgICAgJk1lbW9yeU1hcFNpemUsDQo+ICsgICAgICAgICAgICAgICAgICAo RUZJX01FTU9SWV9ERVNDUklQVE9SICopVG1wTWVtb3J5TWFwLA0KPiArICAgICAgICAgICAgICAg ICAgJk1hcEtleSwNCj4gKyAgICAgICAgICAgICAgICAgICZEZXNjcmlwdG9yU2l6ZSwNCj4gKyAg ICAgICAgICAgICAgICAgICZEZXNjcmlwdG9yVmVyc2lvbg0KPiArICAgICAgICAgICAgICAgICAg KTsNCj4gKyAgQVNTRVJUIChTdGF0dXMgPT0gRUZJX0JVRkZFUl9UT09fU01BTEwpOw0KPiArICAv Lw0KPiArICAvLyBFbmxhcmdlIHNwYWNlIGhlcmUsIGJlY2F1c2Ugd2Ugd2lsbCBhbGxvY2F0ZSBw b29sIG5vdy4NCj4gKyAgLy8NCj4gKyAgTWVtb3J5TWFwU2l6ZSArPSBFRklfUEFHRV9TSVpFOw0K PiArICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUG9vbCAoDQo+ICsgICAgICAgICAgICAgICAgICBF ZmlMb2FkZXJEYXRhLA0KPiArICAgICAgICAgICAgICAgICAgTWVtb3J5TWFwU2l6ZSwNCj4gKyAg ICAgICAgICAgICAgICAgIChWT0lEICoqKSAmTWVtb3J5TWFwDQo+ICsgICAgICAgICAgICAgICAg ICApOw0KPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIEdldCBTeXN0ZW0gTWVtb3J5TWFwDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IGdCUy0+R2V0 TWVtb3J5TWFwICgNCj4gKyAgICAgICAgICAgICAgICAgICZNZW1vcnlNYXBTaXplLA0KPiArICAg ICAgICAgICAgICAgICAgTWVtb3J5TWFwLA0KPiArICAgICAgICAgICAgICAgICAgJk1hcEtleSwN Cj4gKyAgICAgICAgICAgICAgICAgICZEZXNjcmlwdG9yU2l6ZSwNCj4gKyAgICAgICAgICAgICAg ICAgICZEZXNjcmlwdG9yVmVyc2lvbg0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gKw0KPiArICBMYXN0RTgyMCA9IE5VTEw7DQo+ICsg IEU4MjAgPSAmQnAtPmU4MjBfbWFwWzBdOw0KPiArICBFODIwRW50cnlDb3VudCA9IDA7DQo+ICsg IExhc3RFbmRBZGRyID0gMDsNCj4gKyAgTWVtb3J5TWFwUHRyID0gTWVtb3J5TWFwOw0KPiArICBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCAoTWVtb3J5TWFwU2l6ZSAvIERlc2NyaXB0b3JTaXplKTsg SW5kZXgrKykgew0KPiArICAgIFVJTlROIEU4MjBUeXBlID0gMDsNCj4gKw0KPiArICAgIGlmIChN ZW1vcnlNYXAtPk51bWJlck9mUGFnZXMgPT0gMCkgew0KPiArICAgICAgY29udGludWU7DQo+ICsg ICAgfQ0KPiArDQo+ICsgICAgc3dpdGNoKE1lbW9yeU1hcC0+VHlwZSkgew0KPiArICAgIGNhc2Ug RWZpUmVzZXJ2ZWRNZW1vcnlUeXBlOg0KPiArICAgIGNhc2UgRWZpUnVudGltZVNlcnZpY2VzQ29k ZToNCj4gKyAgICBjYXNlIEVmaVJ1bnRpbWVTZXJ2aWNlc0RhdGE6DQo+ICsgICAgY2FzZSBFZmlN ZW1vcnlNYXBwZWRJTzoNCj4gKyAgICBjYXNlIEVmaU1lbW9yeU1hcHBlZElPUG9ydFNwYWNlOg0K PiArICAgIGNhc2UgRWZpUGFsQ29kZToNCj4gKyAgICAgIEU4MjBUeXBlID0gRTgyMF9SRVNFUlZF RDsNCj4gKyAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgY2FzZSBFZmlVbnVzYWJsZU1lbW9yeToN Cj4gKyAgICAgIEU4MjBUeXBlID0gRTgyMF9VTlVTQUJMRTsNCj4gKyAgICAgIGJyZWFrOw0KPiAr DQo+ICsgICAgY2FzZSBFZmlBQ1BJUmVjbGFpbU1lbW9yeToNCj4gKyAgICAgIEU4MjBUeXBlID0g RTgyMF9BQ1BJOw0KPiArICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIEVmaUxvYWRlckNv ZGU6DQo+ICsgICAgY2FzZSBFZmlMb2FkZXJEYXRhOg0KPiArICAgIGNhc2UgRWZpQm9vdFNlcnZp Y2VzQ29kZToNCj4gKyAgICBjYXNlIEVmaUJvb3RTZXJ2aWNlc0RhdGE6DQo+ICsgICAgY2FzZSBF ZmlDb252ZW50aW9uYWxNZW1vcnk6DQo+ICsgICAgICBFODIwVHlwZSA9IEU4MjBfUkFNOw0KPiAr ICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIEVmaUFDUElNZW1vcnlOVlM6DQo+ICsgICAg ICBFODIwVHlwZSA9IEU4MjBfTlZTOw0KPiArICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBkZWZh dWx0Og0KPiArICAgICAgREVCVUcgKCgNCj4gKyAgICAgICAgRUZJX0RfRVJST1IsDQo+ICsgICAg ICAgICJJbnZhbGlkIEVGSSBtZW1vcnkgZGVzY3JpcHRvciB0eXBlICgweCV4KSFcbiIsDQo+ICsg ICAgICAgIE1lbW9yeU1hcC0+VHlwZQ0KPiArICAgICAgICApKTsNCj4gKyAgICAgIGNvbnRpbnVl Ow0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmICgoTGFzdEU4MjAgIT0gTlVMTCkgJiYNCj4gKyAg ICAgICAgKExhc3RFODIwLT50eXBlID09IChVSU5UMzIpIEU4MjBUeXBlKSAmJg0KPiArICAgICAg ICAoTWVtb3J5TWFwLT5QaHlzaWNhbFN0YXJ0ID09IExhc3RFbmRBZGRyKSkgew0KPiArICAgICAg TGFzdEU4MjAtPnNpemUgKz0gRUZJX1BBR0VTX1RPX1NJWkUgKChVSU5UTikgTWVtb3J5TWFwLQ0K PiA+TnVtYmVyT2ZQYWdlcyk7DQo+ICsgICAgICBMYXN0RW5kQWRkciArPSBFRklfUEFHRVNfVE9f U0laRSAoKFVJTlROKSBNZW1vcnlNYXAtDQo+ID5OdW1iZXJPZlBhZ2VzKTsNCj4gKyAgICB9IGVs c2Ugew0KPiArICAgICAgaWYgKEU4MjBFbnRyeUNvdW50ID49IChzaXplb2YgKEJwLT5lODIwX21h cCkgLyBzaXplb2YgKEJwLQ0KPiA+ZTgyMF9tYXBbMF0pKSkgew0KPiArICAgICAgICBicmVhazsN Cj4gKyAgICAgIH0NCj4gKyAgICAgIEU4MjAtPnR5cGUgPSAoVUlOVDMyKSBFODIwVHlwZTsNCj4g KyAgICAgIEU4MjAtPmFkZHIgPSBNZW1vcnlNYXAtPlBoeXNpY2FsU3RhcnQ7DQo+ICsgICAgICBF ODIwLT5zaXplID0gRUZJX1BBR0VTX1RPX1NJWkUgKChVSU5UTikgTWVtb3J5TWFwLQ0KPiA+TnVt YmVyT2ZQYWdlcyk7DQo+ICsgICAgICBMYXN0RTgyMCA9IEU4MjA7DQo+ICsgICAgICBMYXN0RW5k QWRkciA9IEU4MjAtPmFkZHIgKyBFODIwLT5zaXplOw0KPiArICAgICAgRTgyMCsrOw0KPiArICAg ICAgRTgyMEVudHJ5Q291bnQrKzsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8v IEdldCBuZXh0IGl0ZW0NCj4gKyAgICAvLw0KPiArICAgIE1lbW9yeU1hcCA9IChFRklfTUVNT1JZ X0RFU0NSSVBUT1IgKikoKFVJTlROKU1lbW9yeU1hcCArDQo+IERlc2NyaXB0b3JTaXplKTsNCj4g KyAgfQ0KPiArICBCcC0+ZTgyMF9lbnRyaWVzID0gKFVJTlQ4KSBFODIwRW50cnlDb3VudDsNCj4g Kw0KPiArICBFZmkgPSAmQnAtPmVmaV9pbmZvOw0KPiArICBFZmktPmVmaV9zeXN0YWIgPSAoVUlO VDMyKShVSU5UTikgZ1NUOw0KPiArICBFZmktPmVmaV9tZW1kZXNjX3NpemUgPSAoVUlOVDMyKSBE ZXNjcmlwdG9yU2l6ZTsNCj4gKyAgRWZpLT5lZmlfbWVtZGVzY192ZXJzaW9uID0gRGVzY3JpcHRv clZlcnNpb247DQo+ICsgIEVmaS0+ZWZpX21lbW1hcCA9IChVSU5UMzIpKFVJTlROKSBNZW1vcnlN YXBQdHI7DQo+ICsgIEVmaS0+ZWZpX21lbW1hcF9zaXplID0gKFVJTlQzMikgTWVtb3J5TWFwU2l6 ZTsNCj4gKyNpZmRlZiBNREVfQ1BVX0lBMzINCj4gKyAgRWZpLT5lZmlfbG9hZGVyX3NpZ25hdHVy ZSA9IFNJR05BVFVSRV8zMiAoJ0UnLCAnTCcsICczJywgJzInKTsNCj4gKyNlbHNlDQo+ICsgIEVm aS0+ZWZpX3N5c3RhYl9oaSA9IChVSU5UMzIpICgoKFVJTlQ2NCkoVUlOVE4pIGdTVCkgPj4gMzIp Ow0KPiArICBFZmktPmVmaV9tZW1tYXBfaGkgPSAoVUlOVDMyKSAoKChVSU5UNjQpKFVJTlROKSBN ZW1vcnlNYXBQdHIpID4+IDMyKTsNCj4gKyAgRWZpLT5lZmlfbG9hZGVyX3NpZ25hdHVyZSA9IFNJ R05BVFVSRV8zMiAoJ0UnLCAnTCcsICc2JywgJzQnKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsgIGdC Uy0+RXhpdEJvb3RTZXJ2aWNlcyAoZ0ltYWdlSGFuZGxlLCBNYXBLZXkpOw0KPiArfQ0KPiArDQo+ ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArTG9hZExpbnV4U2V0Q29tbWFuZExpbmUg KA0KPiArICBJTiBPVVQgVk9JRCAgICAqS2VybmVsU2V0dXAsDQo+ICsgIElOIENIQVI4ICAgICAg ICpDb21tYW5kTGluZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAg U3RhdHVzOw0KPiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICpCcDsNCj4gKw0KPiArICBTdGF0 dXMgPSBCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKEtlcm5lbFNldHVwKTsNCj4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiAr ICBCcCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMqKSBLZXJuZWxTZXR1cDsNCj4gKw0KPiArICBCcC0+ aGRyLmNtZF9saW5lX3B0ciA9IChVSU5UMzIpKFVJTlROKSBDb21tYW5kTGluZTsNCj4gKw0KPiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtMb2FkTGludXhTZXRJbml0cmQgKA0KPiArICBJTiBPVVQgVk9JRCAgICAqS2Vy bmVsU2V0dXAsDQo+ICsgIElOIFZPSUQgICAgICAgICpJbml0cmQsDQo+ICsgIElOIFVJTlROICAg ICAgIEluaXRyZFNpemUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAg IFN0YXR1czsNCj4gKyAgc3RydWN0IGJvb3RfcGFyYW1zICAgICAqQnA7DQo+ICsNCj4gKyAgU3Rh dHVzID0gQmFzaWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCk7DQo+ICsgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4g KyAgQnAgPSAoc3RydWN0IGJvb3RfcGFyYW1zKikgS2VybmVsU2V0dXA7DQo+ICsNCj4gKyAgQnAt Pmhkci5yYW1kaXNrX3N0YXJ0ID0gKFVJTlQzMikoVUlOVE4pIEluaXRyZDsNCj4gKyAgQnAtPmhk ci5yYW1kaXNrX2xlbiA9IChVSU5UMzIpIEluaXRyZFNpemU7DQo+ICsNCj4gKyAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQyBWT0lEDQo+ICtGaW5kQml0cyAo DQo+ICsgIHVuc2lnbmVkIGxvbmcgTWFzaywNCj4gKyAgVUlOVDggKlBvcywNCj4gKyAgVUlOVDgg KlNpemUNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UOCBGaXJzdCwgTGVuOw0KPiArDQo+ICsgIEZp cnN0ID0gMDsNCj4gKyAgTGVuID0gMDsNCj4gKw0KPiArICBpZiAoTWFzaykgew0KPiArICAgIHdo aWxlICghKE1hc2sgJiAweDEpKSB7DQo+ICsgICAgICBNYXNrID0gTWFzayA+PiAxOw0KPiArICAg ICAgRmlyc3QrKzsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICB3aGlsZSAoTWFzayAmIDB4MSkgew0K PiArICAgICAgTWFzayA9IE1hc2sgPj4gMTsNCj4gKyAgICAgIExlbisrOw0KPiArICAgIH0NCj4g KyAgfQ0KPiArICAqUG9zID0gRmlyc3Q7DQo+ICsgICpTaXplID0gTGVuOw0KPiArfQ0KPiArDQo+ ICsNCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArU2V0dXBHcmFwaGljc0Zyb21Hb3AgKA0K PiArICBzdHJ1Y3Qgc2NyZWVuX2luZm8gICAgICAgICAgICpTaSwNCj4gKyAgRUZJX0dSQVBISUNT X09VVFBVVF9QUk9UT0NPTCAqR29wDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX0dSQVBISUNTX09V VFBVVF9NT0RFX0lORk9STUFUSU9OICpJbmZvOw0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU2l6ZTsNCj4gKw0KPiArICBTdGF0dXMgPSBHb3AtPlF1ZXJ5TW9kZShHb3AsIEdv cC0+TW9kZS0+TW9kZSwgJlNpemUsICZJbmZvKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvKiBXZSBmb3Vu ZCBhIEdPUCAqLw0KPiArDQo+ICsgIC8qIEVGSSBmcmFtZWJ1ZmZlciAqLw0KPiArICBTaS0+b3Jp Z192aWRlb19pc1ZHQSA9IDB4NzA7DQo+ICsNCj4gKyAgU2ktPm9yaWdfeCA9IDA7DQo+ICsgIFNp LT5vcmlnX3kgPSAwOw0KPiArICBTaS0+b3JpZ192aWRlb19wYWdlID0gMDsNCj4gKyAgU2ktPm9y aWdfdmlkZW9fbW9kZSA9IDA7DQo+ICsgIFNpLT5vcmlnX3ZpZGVvX2NvbHMgPSAwOw0KPiArICBT aS0+b3JpZ192aWRlb19saW5lcyA9IDA7DQo+ICsgIFNpLT5vcmlnX3ZpZGVvX2VnYV9ieCA9IDA7 DQo+ICsgIFNpLT5vcmlnX3ZpZGVvX3BvaW50cyA9IDA7DQo+ICsNCj4gKyAgU2ktPmxmYl9iYXNl ID0gKFVJTlQzMikgR29wLT5Nb2RlLT5GcmFtZUJ1ZmZlckJhc2U7DQo+ICsgIFNpLT5sZmJfc2l6 ZSA9IChVSU5UMzIpIEdvcC0+TW9kZS0+RnJhbWVCdWZmZXJTaXplOw0KPiArICBTaS0+bGZiX3dp ZHRoID0gKFVJTlQxNikgSW5mby0+SG9yaXpvbnRhbFJlc29sdXRpb247DQo+ICsgIFNpLT5sZmJf aGVpZ2h0ID0gKFVJTlQxNikgSW5mby0+VmVydGljYWxSZXNvbHV0aW9uOw0KPiArICBTaS0+cGFn ZXMgPSAxOw0KPiArICBTaS0+dmVzYXBtX3NlZyA9IDA7DQo+ICsgIFNpLT52ZXNhcG1fb2ZmID0g MDsNCj4gKw0KPiArICBpZiAoSW5mby0+UGl4ZWxGb3JtYXQgPT0gUGl4ZWxSZWRHcmVlbkJsdWVS ZXNlcnZlZDhCaXRQZXJDb2xvcikgew0KPiArICAgIFNpLT5sZmJfZGVwdGggPSAzMjsNCj4gKyAg ICBTaS0+cmVkX3NpemUgPSA4Ow0KPiArICAgIFNpLT5yZWRfcG9zID0gMDsNCj4gKyAgICBTaS0+ Z3JlZW5fc2l6ZSA9IDg7DQo+ICsgICAgU2ktPmdyZWVuX3BvcyA9IDg7DQo+ICsgICAgU2ktPmJs dWVfc2l6ZSA9IDg7DQo+ICsgICAgU2ktPmJsdWVfcG9zID0gMTY7DQo+ICsgICAgU2ktPnJzdmRf c2l6ZSA9IDg7DQo+ICsgICAgU2ktPnJzdmRfcG9zID0gMjQ7DQo+ICsgICAgU2ktPmxmYl9saW5l bGVuZ3RoID0gKFVJTlQxNikgKEluZm8tPlBpeGVsc1BlclNjYW5MaW5lICogNCk7DQo+ICsNCj4g KyAgfSBlbHNlIGlmIChJbmZvLT5QaXhlbEZvcm1hdCA9PSBQaXhlbEJsdWVHcmVlblJlZFJlc2Vy dmVkOEJpdFBlckNvbG9yKSB7DQo+ICsgICAgU2ktPmxmYl9kZXB0aCA9IDMyOw0KPiArICAgIFNp LT5yZWRfc2l6ZSA9IDg7DQo+ICsgICAgU2ktPnJlZF9wb3MgPSAxNjsNCj4gKyAgICBTaS0+Z3Jl ZW5fc2l6ZSA9IDg7DQo+ICsgICAgU2ktPmdyZWVuX3BvcyA9IDg7DQo+ICsgICAgU2ktPmJsdWVf c2l6ZSA9IDg7DQo+ICsgICAgU2ktPmJsdWVfcG9zID0gMDsNCj4gKyAgICBTaS0+cnN2ZF9zaXpl ID0gODsNCj4gKyAgICBTaS0+cnN2ZF9wb3MgPSAyNDsNCj4gKyAgICBTaS0+bGZiX2xpbmVsZW5n dGggPSAoVUlOVDE2KSAoSW5mby0+UGl4ZWxzUGVyU2NhbkxpbmUgKiA0KTsNCj4gKyAgfSBlbHNl IGlmIChJbmZvLT5QaXhlbEZvcm1hdCA9PSBQaXhlbEJpdE1hc2spIHsNCj4gKyAgICBGaW5kQml0 cyhJbmZvLT5QaXhlbEluZm9ybWF0aW9uLlJlZE1hc2ssDQo+ICsgICAgICAgICZTaS0+cmVkX3Bv cywgJlNpLT5yZWRfc2l6ZSk7DQo+ICsgICAgRmluZEJpdHMoSW5mby0+UGl4ZWxJbmZvcm1hdGlv bi5HcmVlbk1hc2ssDQo+ICsgICAgICAgICZTaS0+Z3JlZW5fcG9zLCAmU2ktPmdyZWVuX3NpemUp Ow0KPiArICAgIEZpbmRCaXRzKEluZm8tPlBpeGVsSW5mb3JtYXRpb24uQmx1ZU1hc2ssDQo+ICsg ICAgICAgICZTaS0+Ymx1ZV9wb3MsICZTaS0+Ymx1ZV9zaXplKTsNCj4gKyAgICBGaW5kQml0cyhJ bmZvLT5QaXhlbEluZm9ybWF0aW9uLlJlc2VydmVkTWFzaywNCj4gKyAgICAgICAgJlNpLT5yc3Zk X3BvcywgJlNpLT5yc3ZkX3NpemUpOw0KPiArICAgIFNpLT5sZmJfZGVwdGggPSBTaS0+cmVkX3Np emUgKyBTaS0+Z3JlZW5fc2l6ZSArDQo+ICsgICAgICBTaS0+Ymx1ZV9zaXplICsgU2ktPnJzdmRf c2l6ZTsNCj4gKyAgICBTaS0+bGZiX2xpbmVsZW5ndGggPSAoVUlOVDE2KSAoKEluZm8tPlBpeGVs c1BlclNjYW5MaW5lICogU2ktPmxmYl9kZXB0aCkgLyA4KTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAg ICBTaS0+bGZiX2RlcHRoID0gNDsNCj4gKyAgICBTaS0+cmVkX3NpemUgPSAwOw0KPiArICAgIFNp LT5yZWRfcG9zID0gMDsNCj4gKyAgICBTaS0+Z3JlZW5fc2l6ZSA9IDA7DQo+ICsgICAgU2ktPmdy ZWVuX3BvcyA9IDA7DQo+ICsgICAgU2ktPmJsdWVfc2l6ZSA9IDA7DQo+ICsgICAgU2ktPmJsdWVf cG9zID0gMDsNCj4gKyAgICBTaS0+cnN2ZF9zaXplID0gMDsNCj4gKyAgICBTaS0+cnN2ZF9wb3Mg PSAwOw0KPiArICAgIFNpLT5sZmJfbGluZWxlbmd0aCA9IFNpLT5sZmJfd2lkdGggLyAyOw0KPiAr ICB9DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArDQo+ICtTVEFUSUMN Cj4gK0VGSV9TVEFUVVMNCj4gK1NldHVwR3JhcGhpY3MgKA0KPiArICBJTiBPVVQgc3RydWN0IGJv b3RfcGFyYW1zICpCcA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICpI YW5kbGVCdWZmZXI7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxl Q291bnQ7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ICsg IEVGSV9HUkFQSElDU19PVVRQVVRfUFJPVE9DT0wgICAgKkdvcDsNCj4gKw0KPiArICBaZXJvTWVt ICgoVk9JRCopJkJwLT5zY3JlZW5faW5mbywgc2l6ZW9mKEJwLT5zY3JlZW5faW5mbykpOw0KPiAr DQo+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRlSGFuZGxlQnVmZmVyICgNCj4gKyAgICAgICAgICAg ICAgICAgIEJ5UHJvdG9jb2wsDQo+ICsgICAgICAgICAgICAgICAgICAmZ0VmaUdyYXBoaWNzT3V0 cHV0UHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAg ICAgICAgICAgICZIYW5kbGVDb3VudCwNCj4gKyAgICAgICAgICAgICAgICAgICZIYW5kbGVCdWZm ZXINCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgSGFuZGxlQ291bnQ7IEluZGV4Kysp IHsNCj4gKyAgICAgIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiArICAgICAgICAg ICAgICAgICAgICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgJmdFZmlHcmFwaGljc091dHB1dFByb3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAoVk9JRCopICZHb3ANCj4gKyAgICAgICAgICAgICAgICAgICAgICApOw0KPiArICAgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgICBjb250aW51ZTsNCj4gKyAgICAg IH0NCj4gKw0KPiArICAgICAgU3RhdHVzID0gU2V0dXBHcmFwaGljc0Zyb21Hb3AgKCZCcC0+c2Ny ZWVuX2luZm8sIEdvcCk7DQo+ICsgICAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiAr ICAgICAgICBGcmVlUG9vbCAoSGFuZGxlQnVmZmVyKTsNCj4gKyAgICAgICAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICAgIEZyZWVQb29sIChIYW5k bGVCdWZmZXIpOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICt9 DQo+ICsNCj4gKw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtTZXR1cExpbnV4Qm9vdFBh cmFtcyAoDQo+ICsgIElOIE9VVCBzdHJ1Y3QgYm9vdF9wYXJhbXMgKkJwDQo+ICsgICkNCj4gK3sN Cj4gKyAgU2V0dXBHcmFwaGljcyAoQnApOw0KPiArDQo+ICsgIFNldHVwTGludXhNZW1tYXAgKEJw KTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArRUZJ X1NUQVRVUw0KPiArRUZJQVBJDQo+ICtMb2FkTGludXggKA0KPiArICBJTiBWT0lEICAgICAgKktl cm5lbCwNCj4gKyAgSU4gT1VUIFZPSUQgICpLZXJuZWxTZXR1cA0KPiArICApDQo+ICt7DQo+ICsg IEVGSV9TVEFUVVMgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMg ICpCcDsNCj4gKw0KPiArICBTdGF0dXMgPSBCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKEtlcm5lbFNl dHVwKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0 dXM7DQo+ICsgIH0NCj4gKw0KPiArICBCcCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMgKikgS2VybmVs U2V0dXA7DQo+ICsNCj4gKyAgaWYgKEJwLT5oZHIudmVyc2lvbiA8IDB4MjA1IHx8ICFCcC0+aGRy LnJlbG9jYXRhYmxlX2tlcm5lbCkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gV2Ugb25seSBzdXBw b3J0IHJlbG9jYXRhYmxlIGtlcm5lbHMNCj4gKyAgICAvLw0KPiArICAgIHJldHVybiBFRklfVU5T VVBQT1JURUQ7DQo+ICsgIH0NCj4gKw0KPiArICBJbml0TGludXhEZXNjcmlwdG9yVGFibGVzICgp Ow0KPiArDQo+ICsgIEJwLT5oZHIuY29kZTMyX3N0YXJ0ID0gKFVJTlQzMikoVUlOVE4pIEtlcm5l bDsNCj4gKyAgaWYgKEJwLT5oZHIudmVyc2lvbiA+PSAweDIwYyAmJiBCcC0+aGRyLmhhbmRvdmVy X29mZnNldCAmJg0KPiArICAgICAgKEJwLT5oZHIueGxvYWRmbGFncyAmIChzaXplb2YgKFVJTlRO KSA9PSA0ID8gQklUMiA6IEJJVDMpKSkgew0KPiArICAgIERFQlVHICgoRUZJX0RfSU5GTywgIkp1 bXBpbmcgdG8ga2VybmVsIEVGSSBoYW5kb3ZlciBwb2ludCBhdCBvZnMgJXhcbiIsDQo+IEJwLT5o ZHIuaGFuZG92ZXJfb2Zmc2V0KSk7DQo+ICsNCj4gKyAgICBEaXNhYmxlSW50ZXJydXB0cyAoKTsN Cj4gKyAgICBKdW1wVG9VZWZpS2VybmVsICgoVk9JRCopIGdJbWFnZUhhbmRsZSwgKFZPSUQqKSBn U1QsIEtlcm5lbFNldHVwLA0KPiBLZXJuZWwpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gT2xkIGtlcm5lbHMgd2l0aG91dCBFRkkgaGFuZG92ZXIgcHJvdG9jb2wNCj4gKyAgLy8NCj4g KyAgU2V0dXBMaW51eEJvb3RQYXJhbXMgKEtlcm5lbFNldHVwKTsNCj4gKw0KPiArICBERUJVRyAo KEVGSV9EX0lORk8sICJKdW1waW5nIHRvIGtlcm5lbFxuIikpOw0KPiArICBEaXNhYmxlSW50ZXJy dXB0cyAoKTsNCj4gKyAgU2V0TGludXhEZXNjcmlwdG9yVGFibGVzICgpOw0KPiArICBKdW1wVG9L ZXJuZWwgKEtlcm5lbCwgKFZPSUQqKSBLZXJuZWxTZXR1cCk7DQo+ICsNCj4gKyAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTGludXhHZHQuYw0KPiBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9MaW51 eEdkdC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjYyNGZi YzM3Y2INCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTGludXhHZHQuYw0KPiBAQCAtMCwwICsxLDE3 NSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEluaXRpYWxpemUgR0RUIGZvciBMaW51eC4NCj4gKw0K PiArICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSAiTG9hZExpbnV4TGli LmgiDQo+ICsNCj4gKw0KPiArLy8NCj4gKy8vIExvY2FsIHN0cnVjdHVyZSBkZWZpbml0aW9ucw0K PiArLy8NCj4gKw0KPiArI3ByYWdtYSBwYWNrICgxKQ0KPiArDQo+ICsvLw0KPiArLy8gR2xvYmFs IERlc2NyaXB0b3IgRW50cnkgc3RydWN0dXJlcw0KPiArLy8NCj4gKw0KPiArdHlwZWRlZiBzdHJ1 Y3QgX0dEVF9FTlRSWSB7DQo+ICsgIFVJTlQxNiBMaW1pdDE1XzA7DQo+ICsgIFVJTlQxNiBCYXNl MTVfMDsNCj4gKyAgVUlOVDggIEJhc2UyM18xNjsNCj4gKyAgVUlOVDggIFR5cGU7DQo+ICsgIFVJ TlQ4ICBMaW1pdDE5XzE2X2FuZF9mbGFnczsNCj4gKyAgVUlOVDggIEJhc2UzMV8yNDsNCj4gK30g R0RUX0VOVFJZOw0KPiArDQo+ICt0eXBlZGVmDQo+ICtzdHJ1Y3QgX0dEVF9FTlRSSUVTIHsNCj4g KyAgR0RUX0VOVFJZIE51bGw7DQo+ICsgIEdEVF9FTlRSWSBOdWxsMjsNCj4gKyAgR0RUX0VOVFJZ IExpbmVhcjsNCj4gKyAgR0RUX0VOVFJZIExpbmVhckNvZGU7DQo+ICsgIEdEVF9FTlRSWSBUYXNr U2VnbWVudDsNCj4gKyAgR0RUX0VOVFJZIFNwYXJlNDsNCj4gKyAgR0RUX0VOVFJZIFNwYXJlNTsN Cj4gK30gR0RUX0VOVFJJRVM7DQo+ICsNCj4gKyNwcmFnbWEgcGFjayAoKQ0KPiArDQo+ICtTVEFU SUMgR0RUX0VOVFJJRVMgKm1HZHQgPSBOVUxMOw0KPiArDQo+ICsvLw0KPiArLy8gR2xvYmFsIGRl c2NyaXB0b3IgdGFibGUgKEdEVCkgVGVtcGxhdGUNCj4gKy8vDQo+ICtTVEFUSUMgR0RUX0VOVFJJ RVMgR2R0VGVtcGxhdGUgPSB7DQo+ICsgIC8vDQo+ICsgIC8vIE51bGwNCj4gKyAgLy8NCj4gKyAg ew0KPiArICAgIDB4MCwgICAgICAgICAgICAvLyBsaW1pdCAxNTowDQo+ICsgICAgMHgwLCAgICAg ICAgICAgIC8vIGJhc2UgMTU6MA0KPiArICAgIDB4MCwgICAgICAgICAgICAvLyBiYXNlIDIzOjE2 DQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIHR5cGUNCj4gKyAgICAweDAsICAgICAgICAgICAg Ly8gbGltaXQgMTk6MTYsIGZsYWdzDQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMzE6 MjQNCj4gKyAgfSwNCj4gKyAgLy8NCj4gKyAgLy8gTnVsbDINCj4gKyAgLy8NCj4gKyAgew0KPiAr ICAgIDB4MCwgICAgICAgICAgICAvLyBsaW1pdCAxNTowDQo+ICsgICAgMHgwLCAgICAgICAgICAg IC8vIGJhc2UgMTU6MA0KPiArICAgIDB4MCwgICAgICAgICAgICAvLyBiYXNlIDIzOjE2DQo+ICsg ICAgMHgwLCAgICAgICAgICAgIC8vIHR5cGUNCj4gKyAgICAweDAsICAgICAgICAgICAgLy8gbGlt aXQgMTk6MTYsIGZsYWdzDQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMzE6MjQNCj4g KyAgfSwNCj4gKyAgLy8NCj4gKyAgLy8gTGluZWFyDQo+ICsgIC8vDQo+ICsgIHsNCj4gKyAgICAw eDBGRkZGLCAgICAgICAgLy8gbGltaXQgMHhGRkZGRg0KPiArICAgIDB4MCwgICAgICAgICAgICAv LyBiYXNlIDANCj4gKyAgICAweDAsDQo+ICsgICAgMHgwOUEsICAgICAgICAgIC8vIHByZXNlbnQs IHJpbmcgMCwgZGF0YSwgZXhwYW5kLXVwLCB3cml0YWJsZQ0KPiArICAgIDB4MENGLCAgICAgICAg ICAvLyBwYWdlLWdyYW51bGFyLCAzMi1iaXQNCj4gKyAgICAweDAsDQo+ICsgIH0sDQo+ICsgIC8v DQo+ICsgIC8vIExpbmVhckNvZGUNCj4gKyAgLy8NCj4gKyAgew0KPiArICAgIDB4MEZGRkYsICAg ICAgICAvLyBsaW1pdCAweEZGRkZGDQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMA0K PiArICAgIDB4MCwNCj4gKyAgICAweDA5MiwgICAgICAgICAgLy8gcHJlc2VudCwgcmluZyAwLCBk YXRhLCBleHBhbmQtdXAsIHdyaXRhYmxlDQo+ICsgICAgMHgwQ0YsICAgICAgICAgIC8vIHBhZ2Ut Z3JhbnVsYXIsIDMyLWJpdA0KPiArICAgIDB4MCwNCj4gKyAgfSwNCj4gKyAgLy8NCj4gKyAgLy8g VGFza1NlZ21lbnQNCj4gKyAgLy8NCj4gKyAgew0KPiArICAgIDB4MCwgICAgICAgICAgICAvLyBs aW1pdCAwDQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMA0KPiArICAgIDB4MCwNCj4g KyAgICAweDA4OSwgICAgICAgICAgLy8gPw0KPiArICAgIDB4MDgwLCAgICAgICAgICAvLyA/DQo+ ICsgICAgMHgwLA0KPiArICB9LA0KPiArICAvLw0KPiArICAvLyBTcGFyZTQNCj4gKyAgLy8NCj4g KyAgew0KPiArICAgIDB4MCwgICAgICAgICAgICAvLyBsaW1pdCAwDQo+ICsgICAgMHgwLCAgICAg ICAgICAgIC8vIGJhc2UgMA0KPiArICAgIDB4MCwNCj4gKyAgICAweDAsICAgICAgICAgICAgLy8g cHJlc2VudCwgcmluZyAwLCBkYXRhLCBleHBhbmQtdXAsIHdyaXRhYmxlDQo+ICsgICAgMHgwLCAg ICAgICAgICAgIC8vIHBhZ2UtZ3JhbnVsYXIsIDMyLWJpdA0KPiArICAgIDB4MCwNCj4gKyAgfSwN Cj4gKyAgLy8NCj4gKyAgLy8gU3BhcmU1DQo+ICsgIC8vDQo+ICsgIHsNCj4gKyAgICAweDAsICAg ICAgICAgICAgLy8gbGltaXQgMA0KPiArICAgIDB4MCwgICAgICAgICAgICAvLyBiYXNlIDANCj4g KyAgICAweDAsDQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIHByZXNlbnQsIHJpbmcgMCwgZGF0 YSwgZXhwYW5kLXVwLCB3cml0YWJsZQ0KPiArICAgIDB4MCwgICAgICAgICAgICAvLyBwYWdlLWdy YW51bGFyLCAzMi1iaXQNCj4gKyAgICAweDAsDQo+ICsgIH0sDQo+ICt9Ow0KPiArDQo+ICsvKioN Cj4gKyAgSW5pdGlhbGl6ZSBHbG9iYWwgRGVzY3JpcHRvciBUYWJsZS4NCj4gKw0KPiArKiovDQo+ ICtWT0lEDQo+ICtJbml0TGludXhEZXNjcmlwdG9yVGFibGVzICgNCj4gKyAgVk9JRA0KPiArICAp DQo+ICt7DQo+ICsgIC8vDQo+ICsgIC8vIEFsbG9jYXRlIFJ1bnRpbWUgRGF0YSBmb3IgdGhlIEdE VA0KPiArICAvLw0KPiArICBtR2R0ID0gQWxsb2NhdGVSdW50aW1lUG9vbCAoc2l6ZW9mIChHZHRU ZW1wbGF0ZSkgKyA4KTsNCj4gKyAgQVNTRVJUIChtR2R0ICE9IE5VTEwpOw0KPiArICBtR2R0ID0g QUxJR05fUE9JTlRFUiAobUdkdCwgOCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSW5pdGlhbGl6 ZSBhbGwgR0RUIGVudHJpZXMNCj4gKyAgLy8NCj4gKyAgQ29weU1lbSAobUdkdCwgJkdkdFRlbXBs YXRlLCBzaXplb2YgKEdkdFRlbXBsYXRlKSk7DQo+ICsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsg IEluaXRpYWxpemUgR2xvYmFsIERlc2NyaXB0b3IgVGFibGUuDQo+ICsNCj4gKyoqLw0KPiArVk9J RA0KPiArU2V0TGludXhEZXNjcmlwdG9yVGFibGVzICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7 DQo+ICsgIElBMzJfREVTQ1JJUFRPUiBHZHRQdHI7DQo+ICsgIElBMzJfREVTQ1JJUFRPUiBJZHRQ dHI7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gV3JpdGUgR0RUIHJlZ2lzdGVyDQo+ICsgIC8vDQo+ ICsgIEdkdFB0ci5CYXNlID0gKFVJTlQzMikoVUlOVE4pKFZPSUQqKSBtR2R0Ow0KPiArICBHZHRQ dHIuTGltaXQgPSAoVUlOVDE2KSAoc2l6ZW9mIChHZHRUZW1wbGF0ZSkgLSAxKTsNCj4gKyAgQXNt V3JpdGVHZHRyICgmR2R0UHRyKTsNCj4gKw0KPiArICBJZHRQdHIuQmFzZSA9IChVSU5UMzIpIDA7 DQo+ICsgIElkdFB0ci5MaW1pdCA9IChVSU5UMTYpIDA7DQo+ICsgIEFzbVdyaXRlSWR0ciAoJklk dFB0cik7DQo+ICt9DQo+ICsNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvRnNBY2Nlc3MuYw0KPiBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvRnNBY2Nl c3MuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi42YmE4Nzg0 Y2YzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9Gc0FjY2Vzcy5jDQo+IEBAIC0wLDAgKzEsNTA3 IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgRmlsZSBTeXN0ZW0gQWNjZXNzIGZvciBOdlZhcnNGaWxl TGliDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDA0IC0gMjAxNCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgIk52 VmFyc0ZpbGVMaWIuaCINCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5o Pg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgT3BlbiB0aGUg TnZWYXJzIGZpbGUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZw0KPiArDQo+ICsgIEBwYXJhbVtpbl0g IEZzSGFuZGxlIC0gSGFuZGxlIGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlk DQo+IGluc3RhbmNlDQo+ICsgIEBwYXJhbVtpbl0gIFJlYWRpbmdGaWxlIC0gVFJVRTogb3BlbiB0 aGUgZmlsZSBmb3IgcmVhZGluZy4gIEZBTFNFOiB3cml0aW5nDQo+ICsgIEBwYXJhbVtvdXRdIE52 VmFyc0ZpbGUgLSBJZiBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZCwgdGhlbiB0aGlzIGlzIHVwZGF0 ZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG9wZW5lZCBOdlZhcnMg ZmlsZS4NCj4gKw0KPiArICBAcmV0dXJuICAgICBFRklfU1VDQ0VTUyBpZiB0aGUgZmlsZSB3YXMg b3BlbmVkDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArR2V0TnZWYXJzRmlsZSAoDQo+ ICsgIElOICBFRklfSEFORExFICAgICAgICAgICAgRnNIYW5kbGUsDQo+ICsgIElOICBCT09MRUFO ICAgICAgICAgICAgICAgUmVhZGluZ0ZpbGUsDQo+ICsgIE9VVCBFRklfRklMRV9IQU5ETEUgICAg ICAgKk52VmFyc0ZpbGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1NJTVBMRV9GSUxFX1NZU1RFTV9QUk9U T0NPTCAgICAgICAqRnM7DQo+ICsgIEVGSV9GSUxFX0hBTkRMRSAgICAgICAgICAgICAgICAgICAg ICAgUm9vdDsNCj4gKw0KPiArICAvLw0KPiArICAvLyBHZXQgdGhlIEZpbGVTeXN0ZW0gcHJvdG9j b2wgb24gdGhhdCBoYW5kbGUNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90 b2NvbCAoDQo+ICsgICAgICAgICAgICAgICAgICBGc0hhbmRsZSwNCj4gKyAgICAgICAgICAgICAg ICAgICZnRWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAg ICAgIChWT0lEICoqKSZGcw0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiAr ICAvLw0KPiArICAvLyBHZXQgdGhlIHZvbHVtZSAodGhlIHJvb3QgZGlyZWN0b3J5KQ0KPiArICAv Lw0KPiArICBTdGF0dXMgPSBGcy0+T3BlblZvbHVtZSAoRnMsICZSb290KTsNCj4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0K PiArICAvLw0KPiArICAvLyBBdHRlbXB0IHRvIG9wZW4gdGhlIE52VmFycyBmaWxlIGluIHRoZSBy b290IGRpcmVjdG9yeQ0KPiArICAvLw0KPiArICBTdGF0dXMgPSBSb290LT5PcGVuICgNCj4gKyAg ICAgICAgICAgICAgICAgICBSb290LA0KPiArICAgICAgICAgICAgICAgICAgIE52VmFyc0ZpbGUs DQo+ICsgICAgICAgICAgICAgICAgICAgTCJOdlZhcnMiLA0KPiArICAgICAgICAgICAgICAgICAg IFJlYWRpbmdGaWxlID8NCj4gKyAgICAgICAgICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfUkVB RCA6DQo+ICsgICAgICAgICAgICAgICAgICAgICAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg IEVGSV9GSUxFX01PREVfQ1JFQVRFIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZJ TEVfTU9ERV9SRUFEIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9X UklURQ0KPiArICAgICAgICAgICAgICAgICAgICAgKSwNCj4gKyAgICAgICAgICAgICAgICAgICAw DQo+ICsgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiAr fQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBPcGVuIHRoZSBOdlZhcnMgZmlsZSBmb3IgcmVhZGlu ZyBvciB3cml0aW5nDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgRmlsZSAtIFRoZSBmaWxlIHRvIGlu c3BlY3QNCj4gKyAgQHBhcmFtW291dF0gRXhpc3RzIC0gUmV0dXJucyB3aGV0aGVyIHRoZSBmaWxl IGV4aXN0cw0KPiArICBAcGFyYW1bb3V0XSBTaXplIC0gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUg ZmlsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgKDAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhp c3QpDQo+ICsNCj4gKyoqLw0KPiArVk9JRA0KPiArTnZWYXJzRmlsZVJlYWRDaGVja3VwICgNCj4g KyAgSU4gIEVGSV9GSUxFX0hBTkRMRSAgICAgICAgRmlsZSwNCj4gKyAgT1VUIEJPT0xFQU4gICAg ICAgICAgICAgICAgKkV4aXN0cywNCj4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgKlNp emUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfRklMRV9JTkZPICAgICAgICAgICAgICAgKkZpbGVJ bmZvOw0KPiArDQo+ICsgICpFeGlzdHMgPSBGQUxTRTsNCj4gKyAgKlNpemUgPSAwOw0KPiArDQo+ ICsgIEZpbGVJbmZvID0gRmlsZUhhbmRsZUdldEluZm8gKEZpbGUpOw0KPiArICBpZiAoRmlsZUlu Zm8gPT0gTlVMTCkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICgoRmls ZUluZm8tPkF0dHJpYnV0ZSAmIEVGSV9GSUxFX0RJUkVDVE9SWSkgIT0gMCkgew0KPiArICAgIEZy ZWVQb29sIChGaWxlSW5mbyk7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgKkV4 aXN0cyA9IFRSVUU7DQo+ICsgICpTaXplID0gKFVJTlROKSBGaWxlSW5mby0+RmlsZVNpemU7DQo+ ICsNCj4gKyAgRnJlZVBvb2wgKEZpbGVJbmZvKTsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4g KyAgT3BlbiB0aGUgTnZWYXJzIGZpbGUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZw0KPiArDQo+ICsg IEBwYXJhbVtpbl0gIEZpbGUgLSBUaGUgZmlsZSB0byBpbnNwZWN0DQo+ICsgIEBwYXJhbVtvdXRd IEV4aXN0cyAtIFJldHVybnMgd2hldGhlciB0aGUgZmlsZSBleGlzdHMNCj4gKyAgQHBhcmFtW291 dF0gU2l6ZSAtIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGZpbGUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICgwIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0KQ0KPiArDQo+ICsqKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0ZpbGVIYW5kbGVFbXB0eSAoDQo+ICsgIElOICBFRklfRklMRV9IQU5ETEUg ICAgICAgIEZpbGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KPiArICBFRklfRklMRV9JTkZPICAgICAgICAgICAgICAgKkZpbGVJbmZvOw0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIFJldHJpZXZlIHRoZSBGaWxlSW5mbyBzdHJ1Y3R1cmUNCj4g KyAgLy8NCj4gKyAgRmlsZUluZm8gPSBGaWxlSGFuZGxlR2V0SW5mbyAoRmlsZSk7DQo+ICsgIGlm IChGaWxlSW5mbyA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIElmIHRoZSBwYXRoIGlzIGEgZGlyZWN0 b3J5LCB0aGVuIHJldHVybiBhbiBlcnJvcg0KPiArICAvLw0KPiArICBpZiAoKEZpbGVJbmZvLT5B dHRyaWJ1dGUgJiBFRklfRklMRV9ESVJFQ1RPUlkpICE9IDApIHsNCj4gKyAgICBGcmVlUG9vbCAo RmlsZUluZm8pOw0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0N Cj4gKw0KPiArICAvLw0KPiArICAvLyBJZiB0aGUgZmlsZSBzaXplIGlzIGFscmVhZHkgMCwgdGhl biBpdCBpcyBlbXB0eSwgc28NCj4gKyAgLy8gd2UgY2FuIHJldHVybiBzdWNjZXNzLg0KPiArICAv Lw0KPiArICBpZiAoRmlsZUluZm8tPkZpbGVTaXplID09IDApIHsNCj4gKyAgICBGcmVlUG9vbCAo RmlsZUluZm8pOw0KPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgfQ0KPiArDQo+ICsg IC8vDQo+ICsgIC8vIFNldCB0aGUgZmlsZSBzaXplIHRvIDAuDQo+ICsgIC8vDQo+ICsgIEZpbGVJ bmZvLT5GaWxlU2l6ZSA9IDA7DQo+ICsgIFN0YXR1cyA9IEZpbGVIYW5kbGVTZXRJbmZvIChGaWxl LCBGaWxlSW5mbyk7DQo+ICsNCj4gKyAgRnJlZVBvb2wgKEZpbGVJbmZvKTsNCj4gKw0KPiArICBy ZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBSZWFkcyBhIGZpbGUg dG8gYSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgRmlsZSAt IFRoZSBmaWxlIHRvIHJlYWQNCj4gKyAgQHBhcmFtW2luXSAgUmVhZFNpemUgLSBUaGUgc2l6ZSBv ZiBkYXRhIHRvIHJlYWQgZnJvbSB0aGUgZmlsZQ0KPiArDQo+ICsgIEByZXR1cm4gICAgIFBvaW50 ZXIgdG8gYnVmZmVyIGFsbG9jYXRlZCB0byBob2xkIHRoZSBmaWxlDQo+ICsgICAgICAgICAgICAg IGNvbnRlbnRzLiAgTlVMTCBpZiBhbiBlcnJvciBvY2N1cnJlZC4NCj4gKw0KPiArKiovDQo+ICtW T0lEKg0KPiArRmlsZUhhbmRsZVJlYWRUb05ld0J1ZmZlciAoDQo+ICsgIElOIEVGSV9GSUxFX0hB TkRMRSAgICAgICAgICAgIEZpbGVIYW5kbGUsDQo+ICsgIElOIFVJTlROICAgICAgICAgICAgICAg ICAgICAgIFJlYWRTaXplDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgIEFjdHVhbFJl YWRTaXplOw0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgKkZpbGVDb250ZW50czsN Cj4gKw0KPiArICBBY3R1YWxSZWFkU2l6ZSA9IFJlYWRTaXplOw0KPiArICBGaWxlQ29udGVudHMg PSBBbGxvY2F0ZVBvb2wgKFJlYWRTaXplKTsNCj4gKyAgaWYgKEZpbGVDb250ZW50cyAhPSBOVUxM KSB7DQo+ICsgICAgU3RhdHVzID0gRmlsZUhhbmRsZVJlYWQgKA0KPiArICAgICAgICAgICAgICAg RmlsZUhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICZSZWFkU2l6ZSwNCj4gKyAgICAgICAgICAg ICAgIEZpbGVDb250ZW50cw0KPiArICAgICAgICAgICAgICAgKTsNCj4gKyAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpIHx8IChBY3R1YWxSZWFkU2l6ZSAhPSBSZWFkU2l6ZSkpIHsNCj4gKyAgICAg IEZyZWVQb29sIChGaWxlQ29udGVudHMpOw0KPiArICAgICAgcmV0dXJuIE5VTEw7DQo+ICsgICAg fQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEZpbGVDb250ZW50czsNCj4gK30NCj4gKw0KPiAr DQo+ICsvKioNCj4gKyAgUmVhZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBOdlZhcnMgZmlsZSBvbiB0 aGUgZmlsZSBzeXN0ZW0NCj4gKw0KPiArICBAcGFyYW1baW5dICBGc0hhbmRsZSAtIEhhbmRsZSBm b3IgYSBnRWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZA0KPiBpbnN0YW5jZQ0KPiArDQo+ ICsgIEByZXR1cm4gICAgIEVGSV9TVEFUVVMgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVy ZSBvZiB0aGUgZmlsZSByZWFkDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArUmVhZE52 VmFyc0ZpbGUgKA0KPiArICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgIEZzSGFuZGxlDQo+ICsg ICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAg RUZJX0ZJTEVfSEFORExFICAgICAgICAgICAgIEZpbGU7DQo+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICBGaWxlU2l6ZTsNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIEZp bGVFeGlzdHM7DQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAqRmlsZUNvbnRlbnRz Ow0KPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFZhcmlhYmxlczsN Cj4gKw0KPiArICBTdGF0dXMgPSBHZXROdlZhcnNGaWxlIChGc0hhbmRsZSwgVFJVRSwgJkZpbGUp Ow0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKChFRklfRF9J TkZPLCAiRnNBY2Nlc3MuYzogQ291bGQgbm90IG9wZW4gTlYgVmFyaWFibGVzIGZpbGUgb24gdGhp cw0KPiBmaWxlIHN5c3RlbVxuIikpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4g Kw0KPiArICBOdlZhcnNGaWxlUmVhZENoZWNrdXAgKEZpbGUsICZGaWxlRXhpc3RzLCAmRmlsZVNp emUpOw0KPiArICBpZiAoRmlsZVNpemUgPT0gMCkgew0KPiArICAgIEZpbGVIYW5kbGVDbG9zZSAo RmlsZSk7DQo+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgfQ0KPiArDQo+ICsg IEZpbGVDb250ZW50cyA9IEZpbGVIYW5kbGVSZWFkVG9OZXdCdWZmZXIgKEZpbGUsIEZpbGVTaXpl KTsNCj4gKyAgaWYgKEZpbGVDb250ZW50cyA9PSBOVUxMKSB7DQo+ICsgICAgRmlsZUhhbmRsZUNs b3NlIChGaWxlKTsNCj4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiArICB9DQo+ICsN Cj4gKyAgREVCVUcgKCgNCj4gKyAgICBFRklfRF9JTkZPLA0KPiArICAgICJGc0FjY2Vzcy5jOiBS ZWFkICVMdSBieXRlcyBmcm9tIE5WIFZhcmlhYmxlcyBmaWxlXG4iLA0KPiArICAgIChVSU5UNjQp RmlsZVNpemUNCj4gKyAgICApKTsNCj4gKw0KPiArICBTdGF0dXMgPSBTZXJpYWxpemVWYXJpYWJs ZXNOZXdJbnN0YW5jZUZyb21CdWZmZXIgKA0KPiArICAgICAgICAgICAgICZTZXJpYWxpemVkVmFy aWFibGVzLA0KPiArICAgICAgICAgICAgIEZpbGVDb250ZW50cywNCj4gKyAgICAgICAgICAgICBG aWxlU2l6ZQ0KPiArICAgICAgICAgICAgICk7DQo+ICsgIGlmICghUkVUVVJOX0VSUk9SIChTdGF0 dXMpKSB7DQo+ICsgICAgU3RhdHVzID0gU2VyaWFsaXplVmFyaWFibGVzU2V0U2VyaWFsaXplZFZh cmlhYmxlcyAoU2VyaWFsaXplZFZhcmlhYmxlcyk7DQo+ICsgIH0NCj4gKw0KPiArICBGcmVlUG9v bCAoRmlsZUNvbnRlbnRzKTsNCj4gKyAgRmlsZUhhbmRsZUNsb3NlIChGaWxlKTsNCj4gKw0KPiAr ICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBXcml0ZXMgYSB2 YXJpYWJsZSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBOViB2YXJpYWJsZXMNCj4gKyAgaGF2ZSBiZWVu IGxvYWRlZCBmcm9tIHRoZSBmaWxlIHN5c3RlbS4NCj4gKw0KPiArKiovDQo+ICtTVEFUSUMNCj4g K1ZPSUQNCj4gK1NldE52VmFyc1ZhcmlhYmxlICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICBWYXJEYXRhOw0KPiArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBXcml0 ZSBhIHZhcmlhYmxlIHRvIGluZGljYXRlIHdlJ3ZlIGFscmVhZHkgbG9hZGVkIHRoZQ0KPiArICAv LyB2YXJpYWJsZSBkYXRhLiAgSWYgaXQgaXMgZm91bmQsIHdlIHNraXAgdGhlIGxvYWRpbmcgb24N Cj4gKyAgLy8gc3Vic2VxdWVudCBhdHRlbXB0cy4NCj4gKyAgLy8NCj4gKyAgU2l6ZSA9IHNpemVv ZiAoVmFyRGF0YSk7DQo+ICsgIFZhckRhdGEgPSBUUlVFOw0KPiArICBnUlQtPlNldFZhcmlhYmxl ICgNCj4gKyAgICAgICAgIEwiTnZWYXJzIiwNCj4gKyAgICAgICAgICZnRWZpU2ltcGxlRmlsZVN5 c3RlbVByb3RvY29sR3VpZCwNCj4gKyAgICAgICAgIEVGSV9WQVJJQUJMRV9OT05fVk9MQVRJTEUg fA0KPiArICAgICAgICAgICBFRklfVkFSSUFCTEVfQk9PVFNFUlZJQ0VfQUNDRVNTIHwNCj4gKyAg ICAgICAgICAgRUZJX1ZBUklBQkxFX1JVTlRJTUVfQUNDRVNTLA0KPiArICAgICAgICAgU2l6ZSwN Cj4gKyAgICAgICAgIChWT0lEKikgJlZhckRhdGENCj4gKyAgICAgICAgICk7DQo+ICt9DQo+ICsN Cj4gKw0KPiArLyoqDQo+ICsgIExvYWRzIHRoZSBub24tdm9sYXRpbGUgdmFyaWFibGVzIGZyb20g dGhlIE52VmFycyBmaWxlIG9uIHRoZQ0KPiArICBnaXZlbiBmaWxlIHN5c3RlbS4NCj4gKw0KPiAr ICBAcGFyYW1baW5dICBGc0hhbmRsZSAtIEhhbmRsZSBmb3IgYSBnRWZpU2ltcGxlRmlsZVN5c3Rl bVByb3RvY29sR3VpZA0KPiBpbnN0YW5jZQ0KPiArDQo+ICsgIEByZXR1cm4gICAgIEVGSV9TVEFU VVMgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiBsb2FkIG9wZXJhdGlvbg0KPiAr DQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0xvYWROdlZhcnNGcm9tRnMgKA0KPiArICBFRklf SEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZzSGFuZGxlDQo+ICsgICkNCj4gK3sN Cj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgQk9PTEVB TiAgICAgICAgICAgICAgICAgICAgICAgIFZhckRhdGE7DQo+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICBTaXplOw0KPiArDQo+ICsgIERFQlVHICgoRUZJX0RfSU5GTywgIkZzQWNj ZXNzLmM6IExvYWROdlZhcnNGcm9tRnNcbiIpKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBXZSB3 cml0ZSBhIHZhcmlhYmxlIHRvIGluZGljYXRlIHdlJ3ZlIGFscmVhZHkgbG9hZGVkIHRoZQ0KPiAr ICAvLyB2YXJpYWJsZSBkYXRhLiAgSWYgaXQgaXMgZm91bmQsIHdlIHNraXAgdGhlIGxvYWRpbmcu DQo+ICsgIC8vDQo+ICsgIC8vIFRoaXMgaXMgcmVsZXZhbnQgaWYgdGhlIG5vbi12b2xhdGlsZSB2 YXJpYWJsZSBoYXZlIGJlZW4NCj4gKyAgLy8gYWJsZSB0byBzdXJ2aXZlIGEgcmVib290IG9wZXJh dGlvbi4gIEluIHRoYXQgY2FzZSwgd2UgZG9uJ3QNCj4gKyAgLy8gd2FudCB0byByZS1sb2FkIHRo ZSBmaWxlIGFzIGl0IHdvdWxkIG92ZXJ3cml0ZSBuZXdlciBjaGFuZ2VzDQo+ICsgIC8vIG1hZGUg dG8gdGhlIHZhcmlhYmxlcy4NCj4gKyAgLy8NCj4gKyAgU2l6ZSA9IHNpemVvZiAoVmFyRGF0YSk7 DQo+ICsgIFZhckRhdGEgPSBUUlVFOw0KPiArICBTdGF0dXMgPSBnUlQtPkdldFZhcmlhYmxlICgN Cj4gKyAgICAgICAgICAgICAgICAgIEwiTnZWYXJzIiwNCj4gKyAgICAgICAgICAgICAgICAgICZn RWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgIE5V TEwsDQo+ICsgICAgICAgICAgICAgICAgICAmU2l6ZSwNCj4gKyAgICAgICAgICAgICAgICAgIChW T0lEKikgJlZhckRhdGENCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChTdGF0dXMg PT0gRUZJX1NVQ0NFU1MpIHsNCj4gKyAgICBERUJVRyAoKEVGSV9EX0lORk8sICJOViBWYXJpYWJs ZXMgd2VyZSBhbHJlYWR5IGxvYWRlZFxuIikpOw0KPiArICAgIHJldHVybiBFRklfQUxSRUFEWV9T VEFSVEVEOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQXR0ZW1wdCB0byByZXN0b3Jl IHRoZSB2YXJpYWJsZXMgZnJvbSB0aGUgTnZWYXJzIGZpbGUuDQo+ICsgIC8vDQo+ICsgIFN0YXR1 cyA9IFJlYWROdlZhcnNGaWxlIChGc0hhbmRsZSk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gKyAgICBERUJVRyAoKEVGSV9EX0lORk8sICJFcnJvciB3aGlsZSByZXN0b3Jpbmcg TlYgdmFyaWFibGUgZGF0YVxuIikpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4g Kw0KPiArICAvLw0KPiArICAvLyBXcml0ZSBhIHZhcmlhYmxlIHRvIGluZGljYXRlIHdlJ3ZlIGFs cmVhZHkgbG9hZGVkIHRoZQ0KPiArICAvLyB2YXJpYWJsZSBkYXRhLiAgSWYgaXQgaXMgZm91bmQs IHdlIHNraXAgdGhlIGxvYWRpbmcgb24NCj4gKyAgLy8gc3Vic2VxdWVudCBhdHRlbXB0cy4NCj4g KyAgLy8NCj4gKyAgU2V0TnZWYXJzVmFyaWFibGUoKTsNCj4gKw0KPiArICBERUJVRyAoKA0KPiAr ICAgIEVGSV9EX0lORk8sDQo+ICsgICAgIkZzQWNjZXNzLmM6IFJlYWQgTlYgVmFyaWFibGVzIGZp bGUgKHNpemU9JUx1KVxuIiwNCj4gKyAgICAoVUlOVDY0KVNpemUNCj4gKyAgICApKTsNCj4gKw0K PiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArUkVUVVJO X1NUQVRVUw0KPiArRUZJQVBJDQo+ICtJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tBZGRBbGxOdlZh cmlhYmxlcyAoDQo+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0 LA0KPiArICBJTiAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0K PiArICBJTiAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAqVmVuZG9yR3VpZCwNCj4gKyAg SU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcywNCj4gKyAgSU4gIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUsDQo+ICsgIElOICBWT0lEICAgICAg ICAgICAgICAgICAgICAgICAgICpEYXRhDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX0hBTkRMRSAg SW5zdGFuY2U7DQo+ICsNCj4gKyAgSW5zdGFuY2UgPSAoRUZJX0hBTkRMRSkgQ29udGV4dDsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBPbmx5IHNhdmUgbm9uLXZvbGF0aWxlIHZhcmlhYmxlcw0KPiAr ICAvLw0KPiArICBpZiAoKEF0dHJpYnV0ZXMgJiBFRklfVkFSSUFCTEVfTk9OX1ZPTEFUSUxFKSA9 PSAwKSB7DQo+ICsgICAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArICB9DQo+ICsNCj4gKyAg cmV0dXJuIFNlcmlhbGl6ZVZhcmlhYmxlc0FkZFZhcmlhYmxlICgNCj4gKyAgICAgICAgICAgSW5z dGFuY2UsDQo+ICsgICAgICAgICAgIFZhcmlhYmxlTmFtZSwNCj4gKyAgICAgICAgICAgVmVuZG9y R3VpZCwNCj4gKyAgICAgICAgICAgQXR0cmlidXRlcywNCj4gKyAgICAgICAgICAgRGF0YVNpemUs DQo+ICsgICAgICAgICAgIERhdGENCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArDQo+ ICsvKioNCj4gKyAgU2F2ZXMgdGhlIG5vbi12b2xhdGlsZSB2YXJpYWJsZXMgaW50byB0aGUgTnZW YXJzIGZpbGUgb24gdGhlDQo+ICsgIGdpdmVuIGZpbGUgc3lzdGVtLg0KPiArDQo+ICsgIEBwYXJh bVtpbl0gIEZzSGFuZGxlIC0gSGFuZGxlIGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9j b2xHdWlkDQo+IGluc3RhbmNlDQo+ICsNCj4gKyAgQHJldHVybiAgICAgRUZJX1NUQVRVUyBiYXNl ZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIGxvYWQgb3BlcmF0aW9uDQo+ICsNCj4gKyoq Lw0KPiArRUZJX1NUQVRVUw0KPiArU2F2ZU52VmFyc1RvRnMgKA0KPiArICBFRklfSEFORExFICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZzSGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX0ZJTEVfSEFORExFICAg ICAgICAgICAgIEZpbGU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBXcml0ZVNp emU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZURhdGFTaXplOw0K PiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgKlZhcmlhYmxlRGF0YTsNCj4gKyAgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRWYXJpYWJsZXM7DQo+ICsNCj4gKyAg U2VyaWFsaXplZFZhcmlhYmxlcyA9IE5VTEw7DQo+ICsNCj4gKyAgU3RhdHVzID0gU2VyaWFsaXpl VmFyaWFibGVzTmV3SW5zdGFuY2UgKCZTZXJpYWxpemVkVmFyaWFibGVzKTsNCj4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0K PiArICBTdGF0dXMgPSBTZXJpYWxpemVWYXJpYWJsZXNJdGVyYXRlU3lzdGVtVmFyaWFibGVzICgN Cj4gKyAgICAgICAgICAgICBJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tBZGRBbGxOdlZhcmlhYmxl cywNCj4gKyAgICAgICAgICAgICAoVk9JRCopIFNlcmlhbGl6ZWRWYXJpYWJsZXMNCj4gKyAgICAg ICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJu IFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIFZhcmlhYmxlRGF0YSA9IE5VTEw7DQo+ICsgIFZh cmlhYmxlRGF0YVNpemUgPSAwOw0KPiArICBTdGF0dXMgPSBTZXJpYWxpemVWYXJpYWJsZXNUb0J1 ZmZlciAoDQo+ICsgICAgICAgICAgICAgU2VyaWFsaXplZFZhcmlhYmxlcywNCj4gKyAgICAgICAg ICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICZWYXJpYWJsZURhdGFTaXplDQo+ICsgICAgICAg ICAgICAgKTsNCj4gKyAgaWYgKFN0YXR1cyA9PSBSRVRVUk5fQlVGRkVSX1RPT19TTUFMTCkgew0K PiArICAgIFZhcmlhYmxlRGF0YSA9IEFsbG9jYXRlUG9vbCAoVmFyaWFibGVEYXRhU2l6ZSk7DQo+ ICsgICAgaWYgKFZhcmlhYmxlRGF0YSA9PSBOVUxMKSB7DQo+ICsgICAgICBTdGF0dXMgPSBFRklf T1VUX09GX1JFU09VUkNFUzsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgU3RhdHVzID0gU2Vy aWFsaXplVmFyaWFibGVzVG9CdWZmZXIgKA0KPiArICAgICAgICAgICAgICAgICBTZXJpYWxpemVk VmFyaWFibGVzLA0KPiArICAgICAgICAgICAgICAgICBWYXJpYWJsZURhdGEsDQo+ICsgICAgICAg ICAgICAgICAgICZWYXJpYWJsZURhdGFTaXplDQo+ICsgICAgICAgICAgICAgICAgICk7DQo+ICsg ICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgU2VyaWFsaXplVmFyaWFibGVzRnJlZUluc3RhbmNlIChT ZXJpYWxpemVkVmFyaWFibGVzKTsNCj4gKw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIE9w ZW4gdGhlIE52VmFycyBmaWxlIGZvciB3cml0aW5nLg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBH ZXROdlZhcnNGaWxlIChGc0hhbmRsZSwgRkFMU0UsICZGaWxlKTsNCj4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoRUZJX0RfSU5GTywgIkZzQWNjZXNzLmM6IFVu YWJsZSB0byBvcGVuIGZpbGUgdG8gc2F2ZWQgTlYNCj4gVmFyaWFibGVzXG4iKSk7DQo+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEVtcHR5IHRoZSBz dGFydGluZyBmaWxlIGNvbnRlbnRzLg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBGaWxlSGFuZGxl RW1wdHkgKEZpbGUpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgRmls ZUhhbmRsZUNsb3NlIChGaWxlKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsN Cj4gKyAgV3JpdGVTaXplID0gVmFyaWFibGVEYXRhU2l6ZTsNCj4gKyAgU3RhdHVzID0gRmlsZUhh bmRsZVdyaXRlIChGaWxlLCAmV3JpdGVTaXplLCBWYXJpYWJsZURhdGEpOw0KPiArICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ ICsgIEZpbGVIYW5kbGVDbG9zZSAoRmlsZSk7DQo+ICsNCj4gKyAgaWYgKCFFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIFdyaXRlIGEgdmFyaWFibGUgdG8gaW5kaWNh dGUgd2UndmUgYWxyZWFkeSBsb2FkZWQgdGhlDQo+ICsgICAgLy8gdmFyaWFibGUgZGF0YS4gIElm IGl0IGlzIGZvdW5kLCB3ZSBza2lwIHRoZSBsb2FkaW5nIG9uDQo+ICsgICAgLy8gc3Vic2VxdWVu dCBhdHRlbXB0cy4NCj4gKyAgICAvLw0KPiArICAgIFNldE52VmFyc1ZhcmlhYmxlKCk7DQo+ICsN Cj4gKwlERUJVRyAoKEVGSV9EX0lORk8sICJTYXZlZCBOViBWYXJpYWJsZXMgdG8gTnZWYXJzIGZp bGVcbiIpKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4g Kw0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xp YnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mNjBmYmM2MTEyDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmMNCj4gQEAgLTAsMCArMSw3 NyBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFNhdmUgTm9uLVZvbGF0aWxlIFZhcmlhYmxlcyB0byBh IGZpbGUgc3lzdGVtLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAwOSBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUg Ik52VmFyc0ZpbGVMaWIuaCINCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9OdlZhcnNGaWxlTGliLmg+DQo+ICsNCj4gK0VGSV9IQU5ETEUgICAg bU52VmFyc0ZpbGVMaWJGc0hhbmRsZSA9IE5VTEw7DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIEF0 dGVtcHRzIHRvIGNvbm5lY3QgdGhlIE52VmFyc0ZpbGVMaWIgdG8gdGhlIHNwZWNpZmllZCBmaWxl IHN5c3RlbS4NCj4gKw0KPiArICBAcGFyYW1baW5dICBGc0hhbmRsZSAtIEhhbmRsZSBmb3IgYSBn RWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZA0KPiBpbnN0YW5jZQ0KPiArDQo+ICsgIEBy ZXR1cm4gICAgIFRoZSBFRklfU1RBVFVTIHdoaWxlIGF0dGVtcHRpbmcgdG8gY29ubmVjdCB0aGUg TnZWYXJzRmlsZUxpYg0KPiArICAgICAgICAgICAgICB0byB0aGUgZmlsZSBzeXN0ZW0gaW5zdGFu Y2UuDQo+ICsgIEByZXR2YWwgICAgIEVGSV9TVUNDRVNTIC0gVGhlIGdpdmVuIGZpbGUgc3lzdGVt IHdhcyBjb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5DQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0K PiArRUZJQVBJDQo+ICtDb25uZWN0TnZWYXJzVG9GaWxlU3lzdGVtICgNCj4gKyAgSU4gRUZJX0hB TkRMRSAgICBGc0hhbmRsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgU3RhdHVzOw0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIFdlIG1pZ2h0IGZhaWwgdG8gbG9hZCB0aGUgdmFyaWFibGUs IHNpbmNlIHRoZSBmaWxlIHN5c3RlbSBpbml0aWFsbHkNCj4gKyAgLy8gd2lsbCBub3QgaGF2ZSB0 aGUgTnZWYXJzIGZpbGUuDQo+ICsgIC8vDQo+ICsgIExvYWROdlZhcnNGcm9tRnMgKEZzSGFuZGxl KTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBXZSBtdXN0IGJlIGFibGUgdG8gc2F2ZSB0aGUgdmFy aWFibGVzIHN1Y2Nlc3NmdWxseSB0byB0aGUgZmlsZSBzeXN0ZW0NCj4gKyAgLy8gdG8gaGF2ZSBj b25uZWN0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBTYXZlTnZWYXJz VG9GcyAoRnNIYW5kbGUpOw0KPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAg IG1OdlZhcnNGaWxlTGliRnNIYW5kbGUgPSBGc0hhbmRsZTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJl dHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFVwZGF0ZSBub24tdm9s YXRpbGUgdmFyaWFibGVzIHN0b3JlZCBvbiB0aGUgZmlsZSBzeXN0ZW0uDQo+ICsNCj4gKyAgQHJl dHVybiAgICAgVGhlIEVGSV9TVEFUVVMgd2hpbGUgYXR0ZW1wdGluZyB0byB1cGRhdGUgdGhlIHZh cmlhYmxlIG9uDQo+ICsgICAgICAgICAgICAgIHRoZSBjb25uZWN0ZWQgZmlsZSBzeXN0ZW0uDQo+ ICsgIEByZXR2YWwgICAgIEVGSV9TVUNDRVNTIC0gVGhlIG5vbi12b2xhdGlsZSB2YXJpYWJsZXMg d2VyZSBzYXZlZCB0byB0aGUgZGlzaw0KPiArICBAcmV0dmFsICAgICBFRklfTk9UX1NUQVJURUQg LSBBIGZpbGUgc3lzdGVtIGhhcyBub3QgYmVlbiBjb25uZWN0ZWQNCj4gKw0KPiArKiovDQo+ICtF RklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1VwZGF0ZU52VmFyc09uRmlsZVN5c3RlbSAoDQo+ICsg ICkNCj4gK3sNCj4gKyAgaWYgKG1OdlZhcnNGaWxlTGliRnNIYW5kbGUgPT0gTlVMTCkgew0KPiAr ICAgIC8vDQo+ICsgICAgLy8gQSBmaWxlIHN5c3RlbSBoYWQgbm90IGJlZW4gY29ubmVjdGVkIHRv IHRoZSBsaWJyYXJ5Lg0KPiArICAgIC8vDQo+ICsgICAgcmV0dXJuIEVGSV9OT1RfU1RBUlRFRDsN Cj4gKyAgfSBlbHNlIHsNCj4gKyAgICByZXR1cm4gU2F2ZU52VmFyc1RvRnMgKG1OdlZhcnNGaWxl TGliRnNIYW5kbGUpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEv UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFi bGVzTGliL1NlcmlhbGl6ZVZhDQo+IHJpYWJsZXNMaWIuYw0KPiBiL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVW YQ0KPiByaWFibGVzTGliLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uYzMyYTk3ODU1MA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJp YWxpemVWYQ0KPiByaWFibGVzTGliLmMNCj4gQEAgLTAsMCArMSw4NjkgQEANCj4gKy8qKiBAZmls ZQ0KPiArICBTZXJpYWxpemUgVmFyaWFibGVzIExpYnJhcnkgaW1wbGVtZW50YXRpb24NCj4gKw0K PiArICBDb3B5cmlnaHQgKGMpIDIwMDQgLSAyMDExIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSAiU2VyaWFsaXplVmFy aWFibGVzTGliLmgiDQo+ICsNCj4gKy8qKg0KPiArICBTZXJpYWxpemF0aW9uIGZvcm1hdDoNCj4g Kw0KPiArICBUaGUgU2VyaWFsaXplVmFyaWFibGVzTGliIGludGVyZmFjZSBkb2VzIG5vdCBzcGVj aWZ5IGEgZm9ybWF0DQo+ICsgIGZvciB0aGUgc2VyaWFsaXphdGlvbiBvZiB0aGUgdmFyaWFibGUg ZGF0YS4gIFRoaXMgbGlicmFyeSB1c2VzDQo+ICsgIGEgcGFja2VkIGFycmF5IG9mIGEgbm9uLXVu aWZvcm1seSBzaXplZCBkYXRhIHN0cnVjdHVyZSBlbGVtZW50cy4NCj4gKw0KPiArICBFYWNoIHZh cmlhYmxlIGlzIHN0b3JlZCAocGFja2VkKSBhczoNCj4gKyAgICBVSU5UMzIgICBWZW5kb3JOYW1l U2l6ZTsgIC8vIE5hbWUgc2l6ZSBpbiBieXRlcw0KPiArICAgIENIQVIxNiAgIFZlbmRvck5hbWVb P107ICAgLy8gVGhlIHZhcmlhYmxlIHVuaWNvZGUgbmFtZSBpbmNsdWRpbmcgdGhlDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudWxsIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4N Cj4gKyAgICBFRklfR1VJRCBWZW5kb3JHdWlkOyAgICAgIC8vIFRoZSB2YXJpYWJsZSBHVUlEDQo+ ICsgICAgVUlOVDMyICAgRGF0YVNpemU7ICAgICAgICAvLyBUaGUgc2l6ZSBvZiB2YXJpYWJsZSBk YXRhIGluIGJ5dGVzDQo+ICsgICAgVUlOVDggICAgRGF0YVs/XTsgICAgICAgICAvLyBUaGUgdmFy aWFibGUgZGF0YQ0KPiArDQo+ICsqKi8NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgVW5wYWNrcyB0 aGUgbmV4dCB2YXJpYWJsZSBmcm9tIHRoZSBidWZmZXINCj4gKw0KPiArICBAcGFyYW1baW5dICBC dWZmZXIgLSBCdWZmZXIgcG9pbnRpbmcgdG8gdGhlIG5leHQgdmFyaWFibGUgaW5zdGFuY2UNCj4g KyAgICAgICAgICAgICAgICBPbiBzdWJzZXF1ZW50IGNhbGxzLCB0aGUgcG9pbnRlciBzaG91bGQg YmUgaW5jcmVtZW50ZWQNCj4gKyAgICAgICAgICAgICAgICBieSB0aGUgcmV0dXJuZWQgU2l6ZVVz ZWQgdmFsdWUuDQo+ICsgIEBwYXJhbVtpbl0gIE1heFNpemUgLSBNYXggYWxsb3dhYmxlIHNpemUg Zm9yIHRoZSB2YXJpYWJsZSBkYXRhDQo+ICsgICAgICAgICAgICAgICAgT24gc3Vic2VxdWVudCBj YWxscywgdGhpcyBzaG91bGQgYmUgZGVjcmVtZW50ZWQNCj4gKyAgICAgICAgICAgICAgICBieSB0 aGUgcmV0dXJuZWQgU2l6ZVVzZWQgdmFsdWUuDQo+ICsgIEBwYXJhbVtvdXRdIE5hbWUgLSBWYXJp YWJsZSBuYW1lIHN0cmluZyAoYWRkcmVzcyBpbiBCdWZmZXIpDQo+ICsgIEBwYXJhbVtvdXRdIE5h bWVTaXplIC0gU2l6ZSBvZiBOYW1lIGluIGJ5dGVzDQo+ICsgIEBwYXJhbVtvdXRdIEd1aWQgLSBH VUlEIG9mIHZhcmlhYmxlIChhZGRyZXNzIGluIEJ1ZmZlcikNCj4gKyAgQHBhcmFtW291dF0gQXR0 cmlidXRlcyAtIEF0dHJpYnV0ZXMgb2YgdmFyaWFibGUNCj4gKyAgQHBhcmFtW291dF0gRGF0YSAt IEJ1ZmZlciBjb250YWluaW5nIERhdGEgZm9yIHZhcmlhYmxlIChhZGRyZXNzIGluIEJ1ZmZlcikN Cj4gKyAgQHBhcmFtW291dF0gRGF0YVNpemUgLSBTaXplIG9mIERhdGEgaW4gYnl0ZXMNCj4gKyAg QHBhcmFtW291dF0gU2l6ZVVzZWQgLSBUb3RhbCBzaXplIHVzZWQgZm9yIHRoaXMgdmFyaWFibGUg aW5zdGFuY2UgaW4gQnVmZmVyDQo+ICsNCj4gKyAgQHJldHVybiAgICAgRUZJX1NUQVRVUyBiYXNl ZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBvcGVyYXRpb24NCj4gKw0KPiArKiov DQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK1VucGFja1ZhcmlhYmxlRnJvbUJ1ZmZlciAo DQo+ICsgIElOICBWT0lEICAgICAqQnVmZmVyLA0KPiArICBJTiAgVUlOVE4gICAgTWF4U2l6ZSwN Cj4gKyAgT1VUIENIQVIxNiAgICoqTmFtZSwNCj4gKyAgT1VUIFVJTlQzMiAgICpOYW1lU2l6ZSwN Cj4gKyAgT1VUIEVGSV9HVUlEICoqR3VpZCwNCj4gKyAgT1VUIFVJTlQzMiAgICpBdHRyaWJ1dGVz LA0KPiArICBPVVQgVUlOVDMyICAgKkRhdGFTaXplLA0KPiArICBPVVQgVk9JRCAgICAgKipEYXRh LA0KPiArICBPVVQgVUlOVE4gICAgKlNpemVVc2VkDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDgg ICpCeXRlUHRyOw0KPiArICBVSU5UTiAgT2Zmc2V0Ow0KPiArDQo+ICsgIEJ5dGVQdHIgPSAoVUlO VDgqKUJ1ZmZlcjsNCj4gKyAgT2Zmc2V0ID0gMDsNCj4gKw0KPiArICAqTmFtZVNpemUgPSAqKFVJ TlQzMiopIChCeXRlUHRyICsgT2Zmc2V0KTsNCj4gKyAgT2Zmc2V0ID0gT2Zmc2V0ICsgc2l6ZW9m IChVSU5UMzIpOw0KPiArDQo+ICsgIGlmIChPZmZzZXQgPiBNYXhTaXplKSB7DQo+ICsgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgICpOYW1lID0gKENI QVIxNiopIChCeXRlUHRyICsgT2Zmc2V0KTsNCj4gKyAgT2Zmc2V0ID0gT2Zmc2V0ICsgKihVSU5U MzIqKUJ5dGVQdHI7DQo+ICsgIGlmIChPZmZzZXQgPiBNYXhTaXplKSB7DQo+ICsgICAgcmV0dXJu IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgICpHdWlkID0gKEVGSV9H VUlEKikgKEJ5dGVQdHIgKyBPZmZzZXQpOw0KPiArICBPZmZzZXQgPSBPZmZzZXQgKyBzaXplb2Yg KEVGSV9HVUlEKTsNCj4gKyAgaWYgKE9mZnNldCA+IE1heFNpemUpIHsNCj4gKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgKkF0dHJpYnV0ZXMgPSAq KFVJTlQzMiopIChCeXRlUHRyICsgT2Zmc2V0KTsNCj4gKyAgT2Zmc2V0ID0gT2Zmc2V0ICsgc2l6 ZW9mIChVSU5UMzIpOw0KPiArICBpZiAoT2Zmc2V0ID4gTWF4U2l6ZSkgew0KPiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICAqRGF0YVNpemUgPSAq KFVJTlQzMiopIChCeXRlUHRyICsgT2Zmc2V0KTsNCj4gKyAgT2Zmc2V0ID0gT2Zmc2V0ICsgc2l6 ZW9mIChVSU5UMzIpOw0KPiArICBpZiAoT2Zmc2V0ID4gTWF4U2l6ZSkgew0KPiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICAqRGF0YSA9IChWT0lE KikgKEJ5dGVQdHIgKyBPZmZzZXQpOw0KPiArICBPZmZzZXQgPSBPZmZzZXQgKyAqRGF0YVNpemU7 DQo+ICsgIGlmIChPZmZzZXQgPiBNYXhTaXplKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgICpTaXplVXNlZCA9IE9mZnNldDsNCj4gKw0K PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIEl0 ZXJhdGVzIHRocm91Z2ggdGhlIHZhcmlhYmxlcyBpbiB0aGUgYnVmZmVyLCBhbmQgY2FsbHMgYSBj YWxsYmFjaw0KPiArICBmdW5jdGlvbiBmb3IgZWFjaCB2YXJpYWJsZSBmb3VuZC4NCj4gKw0KPiAr ICBAcGFyYW1baW5dICBDYWxsYmFja0Z1bmN0aW9uIC0gRnVuY3Rpb24gY2FsbGVkIGZvciBlYWNo IHZhcmlhYmxlIGluc3RhbmNlDQo+ICsgIEBwYXJhbVtpbl0gIENvbnRleHQgLSBQYXNzZWQgdG8g ZWFjaCBjYWxsIG9mIENhbGxiYWNrRnVuY3Rpb24NCj4gKyAgQHBhcmFtW2luXSAgQnVmZmVyIC0g QnVmZmVyIGNvbnRhaW5pbmcgc2VyaWFsaXplZCB2YXJpYWJsZXMNCj4gKyAgQHBhcmFtW2luXSAg TWF4U2l6ZSAtIFNpemUgb2YgQnVmZmVyIGluIGJ5dGVzDQo+ICsNCj4gKyAgQHJldHVybiAgICAg RUZJX1NUQVRVUyBiYXNlZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBvcGVyYXRp b24NCj4gKw0KPiArKiovDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0l0ZXJhdGVWYXJp YWJsZXNJbkJ1ZmZlciAoDQo+ICsgIElOIFZBUklBQkxFX1NFUklBTElaQVRJT05fSVRFUkFUSU9O X0NBTExCQUNLICBDYWxsYmFja0Z1bmN0aW9uLA0KPiArICBJTiBWT0lEICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKkNhbGxiYWNrQ29udGV4dCwNCj4gKyAgSU4gVk9JRCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXIsDQo+ICsgIElOIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhTaXplDQo+ICsgICkN Cj4gK3sNCj4gKyAgUkVUVVJOX1NUQVRVUyBTdGF0dXM7DQo+ICsgIFVJTlROICAgICAgICAgVG90 YWxTaXplVXNlZDsNCj4gKyAgVUlOVE4gICAgICAgICBTaXplVXNlZDsNCj4gKw0KPiArICBDSEFS MTYgICAgICAgICpOYW1lOw0KPiArICBVSU5UMzIgICAgICAgIE5hbWVTaXplOw0KPiArICBDSEFS MTYgICAgICAgICpBbGlnbmVkTmFtZTsNCj4gKyAgVUlOVDMyICAgICAgICBBbGlnbmVkTmFtZU1h eFNpemU7DQo+ICsgIEVGSV9HVUlEICAgICAgKkd1aWQ7DQo+ICsgIFVJTlQzMiAgICAgICAgQXR0 cmlidXRlczsNCj4gKyAgVUlOVDMyICAgICAgICBEYXRhU2l6ZTsNCj4gKyAgVk9JRCAgICAgICAg ICAqRGF0YTsNCj4gKw0KPiArICBTaXplVXNlZCA9IDA7DQo+ICsgIEFsaWduZWROYW1lID0gTlVM TDsNCj4gKyAgQWxpZ25lZE5hbWVNYXhTaXplID0gMDsNCj4gKyAgTmFtZSA9IE5VTEw7DQo+ICsg IEd1aWQgPSBOVUxMOw0KPiArICBBdHRyaWJ1dGVzID0gMDsNCj4gKyAgRGF0YVNpemUgPSAwOw0K PiArICBEYXRhID0gTlVMTDsNCj4gKw0KPiArICBmb3IgKA0KPiArICAgIFN0YXR1cyA9IEVGSV9T VUNDRVNTLCBUb3RhbFNpemVVc2VkID0gMDsNCj4gKyAgICAhRUZJX0VSUk9SIChTdGF0dXMpICYm IChUb3RhbFNpemVVc2VkIDwgTWF4U2l6ZSk7DQo+ICsgICAgKSB7DQo+ICsgICAgU3RhdHVzID0g VW5wYWNrVmFyaWFibGVGcm9tQnVmZmVyICgNCj4gKyAgICAgICAgICAgICAgIChWT0lEKikgKChV SU5UOCopIEJ1ZmZlciArIFRvdGFsU2l6ZVVzZWQpLA0KPiArICAgICAgICAgICAgICAgKE1heFNp emUgLSBUb3RhbFNpemVVc2VkKSwNCj4gKyAgICAgICAgICAgICAgICZOYW1lLA0KPiArICAgICAg ICAgICAgICAgJk5hbWVTaXplLA0KPiArICAgICAgICAgICAgICAgJkd1aWQsDQo+ICsgICAgICAg ICAgICAgICAmQXR0cmlidXRlcywNCj4gKyAgICAgICAgICAgICAgICZEYXRhU2l6ZSwNCj4gKyAg ICAgICAgICAgICAgICZEYXRhLA0KPiArICAgICAgICAgICAgICAgJlNpemVVc2VkDQo+ICsgICAg ICAgICAgICAgICApOw0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAg IHJldHVybiBTdGF0dXM7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBXZSBj b3B5IHRoZSBuYW1lIHRvIGEgc2VwYXJhdGVseSBhbGxvY2F0ZWQgYnVmZmVyLA0KPiArICAgIC8v IHRvIGJlIHN1cmUgaXQgaXMgMTYtYml0IGFsaWduZWQuDQo+ICsgICAgLy8NCj4gKyAgICBpZiAo TmFtZVNpemUgPiBBbGlnbmVkTmFtZU1heFNpemUpIHsNCj4gKyAgICAgIGlmIChBbGlnbmVkTmFt ZSAhPSBOVUxMKSB7DQo+ICsgICAgICAgIEZyZWVQb29sIChBbGlnbmVkTmFtZSk7DQo+ICsgICAg ICB9DQo+ICsgICAgICBBbGlnbmVkTmFtZSA9IEFsbG9jYXRlUG9vbCAoTmFtZVNpemUpOw0KPiAr ICAgIH0NCj4gKyAgICBpZiAoQWxpZ25lZE5hbWUgPT0gTlVMTCkgew0KPiArICAgICAgcmV0dXJu IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICAgIH0NCj4gKyAgICBDb3B5TWVtIChBbGlnbmVk TmFtZSwgTmFtZSwgTmFtZVNpemUpOw0KPiArDQo+ICsgICAgVG90YWxTaXplVXNlZCA9IFRvdGFs U2l6ZVVzZWQgKyBTaXplVXNlZDsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gUnVuIHRoZSBj YWxsYmFjayBmdW5jdGlvbg0KPiArICAgIC8vDQo+ICsgICAgU3RhdHVzID0gKCpDYWxsYmFja0Z1 bmN0aW9uKSAoDQo+ICsgICAgICAgICAgICAgICBDYWxsYmFja0NvbnRleHQsDQo+ICsgICAgICAg ICAgICAgICBBbGlnbmVkTmFtZSwNCj4gKyAgICAgICAgICAgICAgIEd1aWQsDQo+ICsgICAgICAg ICAgICAgICBBdHRyaWJ1dGVzLA0KPiArICAgICAgICAgICAgICAgRGF0YVNpemUsDQo+ICsgICAg ICAgICAgICAgICBEYXRhDQo+ICsgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIH0NCj4gKw0K PiArICBpZiAoQWxpZ25lZE5hbWUgIT0gTlVMTCkgew0KPiArICAgIEZyZWVQb29sIChBbGlnbmVk TmFtZSk7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBNYWtlIHN1cmUgdGhlIGVudGly ZSBidWZmZXIgd2FzIHVzZWQsIG9yIGVsc2UgcmV0dXJuIGFuIGVycm9yDQo+ICsgIC8vDQo+ICsg IGlmIChUb3RhbFNpemVVc2VkICE9IE1heFNpemUpIHsNCj4gKyAgICBERUJVRyAoKA0KPiArICAg ICAgRUZJX0RfRVJST1IsDQo+ICsgICAgICAiRGVzZXJpYWxpemUgdmFyaWFibGVzIGVycm9yOiBU b3RhbFNpemVVc2VkKCVMdSkgIT0gTWF4U2l6ZSglTHUpXG4iLA0KPiArICAgICAgKFVJTlQ2NClU b3RhbFNpemVVc2VkLA0KPiArICAgICAgKFVJTlQ2NClNYXhTaXplDQo+ICsgICAgICApKTsNCj4g KyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArUkVUVVJOX1NU QVRVUw0KPiArRUZJQVBJDQo+ICtJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tOb3AgKA0KPiArICBJ TiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dCwNCj4gKyAgSU4gIENIQVIx NiAgICAgICAgICAgICAgICAgICAgICAgKlZhcmlhYmxlTmFtZSwNCj4gKyAgSU4gIEVGSV9HVUlE ICAgICAgICAgICAgICAgICAgICAgKlZlbmRvckd1aWQsDQo+ICsgIElOICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMsDQo+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgIERhdGFTaXplLA0KPiArICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAg ICAqRGF0YQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30N Cj4gKw0KPiArDQo+ICtTVEFUSUMNCj4gK1JFVFVSTl9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArSXRl cmF0ZVZhcmlhYmxlc0NhbGxiYWNrU2V0SW5JbnN0YW5jZSAoDQo+ICsgIElOICBWT0lEICAgICAg ICAgICAgICAgICAgICAgICAgICpDb250ZXh0LA0KPiArICBJTiAgQ0hBUjE2ICAgICAgICAgICAg ICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0KPiArICBJTiAgRUZJX0dVSUQgICAgICAgICAgICAg ICAgICAgICAqVmVuZG9yR3VpZCwNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICAgQXR0cmlidXRlcywNCj4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgRGF0 YVNpemUsDQo+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICpEYXRhDQo+ICsg ICkNCj4gK3sNCj4gKyAgRUZJX0hBTkRMRSAgSW5zdGFuY2U7DQo+ICsNCj4gKyAgSW5zdGFuY2Ug PSAoRUZJX0hBTkRMRSkgQ29udGV4dDsNCj4gKw0KPiArICByZXR1cm4gU2VyaWFsaXplVmFyaWFi bGVzQWRkVmFyaWFibGUgKA0KPiArICAgICAgICAgICBJbnN0YW5jZSwNCj4gKyAgICAgICAgICAg VmFyaWFibGVOYW1lLA0KPiArICAgICAgICAgICBWZW5kb3JHdWlkLA0KPiArICAgICAgICAgICBB dHRyaWJ1dGVzLA0KPiArICAgICAgICAgICBEYXRhU2l6ZSwNCj4gKyAgICAgICAgICAgRGF0YQ0K PiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArUkVUVVJOX1NU QVRVUw0KPiArRUZJQVBJDQo+ICtJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tTZXRTeXN0ZW1WYXJp YWJsZSAoDQo+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0LA0K PiArICBJTiAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0KPiAr ICBJTiAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAqVmVuZG9yR3VpZCwNCj4gKyAgSU4g IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcywNCj4gKyAgSU4gIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUsDQo+ICsgIElOICBWT0lEICAgICAgICAg ICAgICAgICAgICAgICAgICpEYXRhDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICBTdGF0dXM7DQo+ICsgIFNUQVRJQyBDT05TVCBVSU5UMzIgQXV0aE1hc2sgPQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgRUZJX1ZBUklBQkxFX0FVVEhFTlRJQ0FURURfV1JJVEVfQUND RVNTIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9WQVJJQUJMRV9USU1FX0JBU0VE X0FVVEhFTlRJQ0FURURfV1JJVEVfQUNDRVNTOw0KPiArDQo+ICsgIFN0YXR1cyA9IGdSVC0+U2V0 VmFyaWFibGUgKA0KPiArICAgICAgICAgICAgIFZhcmlhYmxlTmFtZSwNCj4gKyAgICAgICAgICAg ICBWZW5kb3JHdWlkLA0KPiArICAgICAgICAgICAgIEF0dHJpYnV0ZXMsDQo+ICsgICAgICAgICAg ICAgRGF0YVNpemUsDQo+ICsgICAgICAgICAgICAgRGF0YQ0KPiArICAgICAgICAgICAgICk7DQo+ ICsNCj4gKyAgaWYgKFN0YXR1cyA9PSBFRklfU0VDVVJJVFlfVklPTEFUSU9OICYmIChBdHRyaWJ1 dGVzICYgQXV0aE1hc2spICE9IDApIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX1dBUk4sICIlYTog c2V0dGluZyBhdXRoZW50aWNhdGVkIHZhcmlhYmxlIFwiJXNcIiAiDQo+ICsgICAgICAgICAgICAi ZmFpbGVkIHdpdGggRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiwgaWdub3JpbmdcbiIsIF9fRlVOQ1RJ T05fXywNCj4gKyAgICAgICAgICAgIFZhcmlhYmxlTmFtZSkpOw0KPiArICAgIFN0YXR1cyA9IEVG SV9TVUNDRVNTOw0KPiArICB9IGVsc2UgaWYgKFN0YXR1cyA9PSBFRklfV1JJVEVfUFJPVEVDVEVE KSB7DQo+ICsgICAgREVCVUcgKChERUJVR19XQVJOLCAiJWE6IHNldHRpbmcgUmVhZE9ubHkgdmFy aWFibGUgXCIlc1wiICINCj4gKyAgICAgICAgICAgICJmYWlsZWQgd2l0aCBFRklfV1JJVEVfUFJP VEVDVEVELCBpZ25vcmluZ1xuIiwgX19GVU5DVElPTl9fLA0KPiArICAgICAgICAgICAgVmFyaWFi bGVOYW1lKSk7DQo+ICsgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ICsgIH0NCj4gKyAgcmV0 dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArDQo+ICtTVEFUSUMNCj4gK1JFVFVSTl9TVEFUVVMN Cj4gK0Vuc3VyZUV4dHJhQnVmZmVyU3BhY2UgKA0KPiArICBJTiAgU1ZfSU5TVEFOQ0UgICpJbnN0 YW5jZSwNCj4gKyAgSU4gIFVJTlROICAgICAgICBTaXplDQo+ICsgICkNCj4gK3sNCj4gKyAgVk9J RCAqTmV3QnVmZmVyOw0KPiArICBVSU5UTiBOZXdTaXplOw0KPiArDQo+ICsgIE5ld1NpemUgPSBJ bnN0YW5jZS0+RGF0YVNpemUgKyBTaXplOw0KPiArICBpZiAoTmV3U2l6ZSA8PSBJbnN0YW5jZS0+ QnVmZmVyU2l6ZSkgew0KPiArICAgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gKyAgfQ0KPiAr DQo+ICsgIC8vDQo+ICsgIC8vIERvdWJsZSB0aGUgcmVxdWlyZWQgc2l6ZSB0byBsZXNzZW4gdGhl IG5lZWQgdG8gcmUtYWxsb2NhdGUgaW4gdGhlIGZ1dHVyZQ0KPiArICAvLw0KPiArICBOZXdTaXpl ID0gMiAqIE5ld1NpemU7DQo+ICsNCj4gKyAgTmV3QnVmZmVyID0gQWxsb2NhdGVQb29sIChOZXdT aXplKTsNCj4gKyAgaWYgKE5ld0J1ZmZlciA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIFJFVFVS Tl9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKEluc3RhbmNlLT5CdWZm ZXJQdHIgIT0gTlVMTCkgew0KPiArICAgIENvcHlNZW0gKE5ld0J1ZmZlciwgSW5zdGFuY2UtPkJ1 ZmZlclB0ciwgSW5zdGFuY2UtPkRhdGFTaXplKTsNCj4gKyAgICBGcmVlUG9vbCAoSW5zdGFuY2Ut PkJ1ZmZlclB0cik7DQo+ICsgIH0NCj4gKw0KPiArICBJbnN0YW5jZS0+QnVmZmVyUHRyID0gTmV3 QnVmZmVyOw0KPiArICBJbnN0YW5jZS0+QnVmZmVyU2l6ZSA9IE5ld1NpemU7DQo+ICsNCj4gKyAg cmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArVk9J RA0KPiArQXBwZW5kVG9CdWZmZXIgKA0KPiArICBJTiAgU1ZfSU5TVEFOQ0UgICpJbnN0YW5jZSwN Cj4gKyAgSU4gIFZPSUQgICAgICAgICAqRGF0YSwNCj4gKyAgSU4gIFVJTlROICAgICAgICBTaXpl DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4gTmV3U2l6ZTsNCj4gKw0KPiArICBBU1NFUlQgKElu c3RhbmNlICE9IE5VTEwpOw0KPiArICBBU1NFUlQgKERhdGEgIT0gTlVMTCk7DQo+ICsNCj4gKyAg TmV3U2l6ZSA9IEluc3RhbmNlLT5EYXRhU2l6ZSArIFNpemU7DQo+ICsgIEFTU0VSVCAoKEluc3Rh bmNlLT5EYXRhU2l6ZSArIFNpemUpIDw9IEluc3RhbmNlLT5CdWZmZXJTaXplKTsNCj4gKw0KPiAr ICBDb3B5TWVtICgNCj4gKyAgICAoVk9JRCopICgoKFVJTlQ4KikgKEluc3RhbmNlLT5CdWZmZXJQ dHIpKSArIEluc3RhbmNlLT5EYXRhU2l6ZSksDQo+ICsgICAgRGF0YSwNCj4gKyAgICBTaXplDQo+ ICsgICAgKTsNCj4gKw0KPiArICBJbnN0YW5jZS0+RGF0YVNpemUgPSBOZXdTaXplOw0KPiArfQ0K PiArDQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVzIGEgbmV3IHZhcmlhYmxlIHNlcmlhbGl6YXRp b24gaW5zdGFuY2UNCj4gKw0KPiArICBAcGFyYW1bb3V0XSAgSGFuZGxlIC0gSGFuZGxlIGZvciBh IHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gKw0KPiArICBAcmV0dmFsICAgICAg UkVUVVJOX1NVQ0NFU1MgLSBUaGUgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZSB3YXMN Cj4gKyAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQuDQo+ICsgIEByZXR2YWwg ICAgICBSRVRVUk5fT1VUX09GX1JFU09VUkNFUyAtIFRoZXJlIHdlIG5vdCBlbm91Z2ggcmVzb3Vy Y2VzDQo+IHRvDQo+ICsgICAgICAgICAgICAgICAgIGNyZWF0ZSB0aGUgdmFyaWFibGUgc2VyaWFs aXphdGlvbiBpbnN0YW5jZS4NCj4gKw0KPiArKiovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklB UEkNCj4gK1NlcmlhbGl6ZVZhcmlhYmxlc05ld0luc3RhbmNlICgNCj4gKyAgT1VUIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgICAgICAgKkhhbmRsZQ0KPiArICApDQo+ICt7DQo+ICsgIFNWX0lO U1RBTkNFICAqTmV3Ow0KPiArDQo+ICsgIE5ldyA9IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAo Kk5ldykpOw0KPiArICBpZiAoTmV3ID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gUkVUVVJOX09V VF9PRl9SRVNPVVJDRVM7DQo+ICsgIH0NCj4gKw0KPiArICBOZXctPlNpZ25hdHVyZSA9IFNWX1NJ R05BVFVSRTsNCj4gKw0KPiArICAqSGFuZGxlID0gKEVGSV9IQU5ETEUpIE5ldzsNCj4gKyAgcmV0 dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBGcmVlIG1l bW9yeSBhc3NvY2lhdGVkIHdpdGggYSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQo+ ICsNCj4gKyAgQHBhcmFtW2luXSAgSGFuZGxlIC0gSGFuZGxlIGZvciBhIHZhcmlhYmxlIHNlcmlh bGl6YXRpb24gaW5zdGFuY2UNCj4gKw0KPiArICBAcmV0dmFsICAgICAgUkVUVVJOX1NVQ0NFU1Mg LSBUaGUgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZSB3YXMNCj4gKyAgICAgICAgICAg ICAgICAgc3VjY2Vzc2Z1bGx5IGZyZWVkLg0KPiArICBAcmV0dmFsICAgICAgUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSIC0gSGFuZGxlIHdhcyBub3QgYSB2YWxpZA0KPiArICAgICAgICAgICAgICAg ICB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlLg0KPiArDQo+ICsqKi8NCj4gK1JFVFVS Tl9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2VyaWFsaXplVmFyaWFibGVzRnJlZUluc3RhbmNlICgN Cj4gKyAgSU4gRUZJX0hBTkRMRSBIYW5kbGUNCj4gKyAgKQ0KPiArew0KPiArICBTVl9JTlNUQU5D RSAgICAqSW5zdGFuY2U7DQo+ICsNCj4gKyAgSW5zdGFuY2UgPSBTVl9GUk9NX0hBTkRMRSAoSGFu ZGxlKTsNCj4gKw0KPiArICBpZiAoSW5zdGFuY2UtPlNpZ25hdHVyZSAhPSBTVl9TSUdOQVRVUkUp IHsNCj4gKyAgICByZXR1cm4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsN Cj4gKyAgSW5zdGFuY2UtPlNpZ25hdHVyZSA9IDA7DQo+ICsNCj4gKyAgaWYgKEluc3RhbmNlLT5C dWZmZXJQdHIgIT0gTlVMTCkgew0KPiArICAgIEZyZWVQb29sIChJbnN0YW5jZS0+QnVmZmVyUHRy KTsNCj4gKyAgfQ0KPiArDQo+ICsgIEZyZWVQb29sIChJbnN0YW5jZSk7DQo+ICsNCj4gKyAgcmV0 dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGVz IGEgbmV3IHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UgdXNpbmcgdGhlIGdpdmVuDQo+ ICsgIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFyaWFibGVzIHRvIGZpbGwgdGhlIG5l dyBpbnN0YW5jZQ0KPiArDQo+ICsgIEBwYXJhbVtvdXRdIEhhbmRsZSAtIEhhbmRsZSBmb3IgYSB2 YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQo+ICsgIEBwYXJhbVtpbl0gIEJ1ZmZlciAt IEEgYnVmZmVyIHdpdGggdGhlIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24NCj4gKyAgICAgICAg ICAgICAgICBvZiB0aGUgdmFyaWFibGVzLiAgTXVzdCBiZSB0aGUgc2FtZSBmb3JtYXQgYXMgcHJv ZHVjZWQNCj4gKyAgICAgICAgICAgICAgICBieSBTZXJpYWxpemVWYXJpYWJsZXNUb0J1ZmZlci4N Cj4gKyAgQHBhcmFtW2luXSAgU2l6ZSAtIFRoaXMgaXMgdGhlIHNpemUgb2YgdGhlIGJpbmFyeSBy ZXByZXNlbnRhdGlvbg0KPiArICAgICAgICAgICAgICAgIG9mIHRoZSB2YXJpYWJsZXMuDQo+ICsN Cj4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9TVUNDRVNTIC0gVGhlIGJpbmFyeSByZXByZXNlbnRh dGlvbiB3YXMgc3VjY2Vzc2Z1bGx5DQo+ICsgICAgICAgICAgICAgICAgIGltcG9ydGVkIGludG8g YSBuZXcgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiArICBAcmV0dmFsICAgICAg UkVUVVJOX09VVF9PRl9SRVNPVVJDRVMgLSBUaGVyZSB3ZSBub3QgZW5vdWdoIHJlc291cmNlcw0K PiB0bw0KPiArICAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIG5ldyB2YXJpYWJsZSBzZXJpYWxp emF0aW9uIGluc3RhbmNlDQo+ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJ DQo+ICtTZXJpYWxpemVWYXJpYWJsZXNOZXdJbnN0YW5jZUZyb21CdWZmZXIgKA0KPiArICBPVVQg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAgKkhhbmRsZSwNCj4gKyAgSU4gIFZP SUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXIsDQo+ICsgIElOICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplDQo+ICsgICkNCj4gK3sNCj4gKyAg UkVUVVJOX1NUQVRVUyBTdGF0dXM7DQo+ICsNCj4gKyAgU3RhdHVzID0gU2VyaWFsaXplVmFyaWFi bGVzTmV3SW5zdGFuY2UgKEhhbmRsZSk7DQo+ICsgIGlmIChSRVRVUk5fRVJST1IgKFN0YXR1cykp IHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gSXRl cmF0ZVZhcmlhYmxlc0luQnVmZmVyICgNCj4gKyAgICAgICAgICAgICBJdGVyYXRlVmFyaWFibGVz Q2FsbGJhY2tOb3AsDQo+ICsgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICBCdWZm ZXIsDQo+ICsgICAgICAgICAgICAgU2l6ZQ0KPiArICAgICAgICAgICAgICk7DQo+ICsgIGlmIChS RVRVUk5fRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBTZXJpYWxpemVWYXJpYWJsZXNGcmVlSW5z dGFuY2UgKCpIYW5kbGUpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiAr ICBTdGF0dXMgPSBJdGVyYXRlVmFyaWFibGVzSW5CdWZmZXIgKA0KPiArICAgICAgICAgICAgIEl0 ZXJhdGVWYXJpYWJsZXNDYWxsYmFja1NldEluSW5zdGFuY2UsDQo+ICsgICAgICAgICAgICAgKFZP SUQqKSAqSGFuZGxlLA0KPiArICAgICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICBT aXplDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKFJFVFVSTl9FUlJPUiAoU3RhdHVzKSkg ew0KPiArICAgIFNlcmlhbGl6ZVZhcmlhYmxlc0ZyZWVJbnN0YW5jZSAoKkhhbmRsZSk7DQo+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9 DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIEl0ZXJhdGVzIGFsbCB2YXJpYWJsZXMgZm91bmQgd2l0 aCBSdW50aW1lU2VydmljZXMgR2V0TmV4dFZhcmlhYmxlTmFtZQ0KPiArDQo+ICsgIEBwYXJhbVtp bl0gICBDYWxsYmFja0Z1bmN0aW9uIC0gRnVuY3Rpb24gY2FsbGVkIGZvciBlYWNoIHZhcmlhYmxl IGluc3RhbmNlDQo+ICsgIEBwYXJhbVtpbl0gICBDb250ZXh0IC0gUGFzc2VkIHRvIGVhY2ggY2Fs bCBvZiBDYWxsYmFja0Z1bmN0aW9uDQo+ICsNCj4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9TVUND RVNTIC0gQWxsIHZhcmlhYmxlcyB3ZXJlIGl0ZXJhdGVkIHdpdGhvdXQgdGhlDQo+ICsgICAgICAg ICAgICAgICAgIENhbGxiYWNrRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGVycm9yDQo+ICsgIEByZXR2 YWwgICAgICBSRVRVUk5fT1VUX09GX1JFU09VUkNFUyAtIFRoZXJlIHdlIG5vdCBlbm91Z2ggcmVz b3VyY2VzDQo+IHRvDQo+ICsgICAgICAgICAgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFy aWFibGVzDQo+ICsgIEByZXR1cm4gICAgICBBbnkgb2YgUkVUVVJOX0VSUk9SIGluZGljYXRlcyBh biBlcnJvciByZWFkaW5nIHRoZSB2YXJpYWJsZQ0KPiArICAgICAgICAgICAgICAgICBvciBhbiBl cnJvciB3YXMgcmV0dXJuZWQgZnJvbSBDYWxsYmFja0Z1bmN0aW9uDQo+ICsNCj4gKyoqLw0KPiAr UkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxpemVWYXJpYWJsZXNJdGVyYXRlU3lz dGVtVmFyaWFibGVzICgNCj4gKyAgSU4gVkFSSUFCTEVfU0VSSUFMSVpBVElPTl9JVEVSQVRJT05f Q0FMTEJBQ0sgQ2FsbGJhY2tGdW5jdGlvbiwNCj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBSRVRVUk5f U1RBVFVTICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgVmFyaWFibGVOYW1lQnVmZmVyU2l6ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgIFZhcmlhYmxlTmFtZVNpemU7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAg ICAqVmFyaWFibGVOYW1lOw0KPiArICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgVmVuZG9y R3VpZDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlRGF0YUJ1ZmZl clNpemU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZURhdGFTaXpl Ow0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgKlZhcmlhYmxlRGF0YTsNCj4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQXR0cmlidXRlczsNCj4gKyAgVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICpOZXdCdWZmZXI7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gSW5pdGlhbGl6ZSB0aGUgdmFyaWFibGUgbmFtZSBhbmQgZGF0YSBidWZmZXIgdmFyaWFibGVz Lg0KPiArICAvLw0KPiArICBWYXJpYWJsZU5hbWVCdWZmZXJTaXplID0gc2l6ZW9mIChDSEFSMTYp Ow0KPiArICBWYXJpYWJsZU5hbWUgPSBBbGxvY2F0ZVplcm9Qb29sIChWYXJpYWJsZU5hbWVCdWZm ZXJTaXplKTsNCj4gKw0KPiArICBWYXJpYWJsZURhdGFCdWZmZXJTaXplID0gMDsNCj4gKyAgVmFy aWFibGVEYXRhID0gTlVMTDsNCj4gKw0KPiArICBmb3IgKDs7KSB7DQo+ICsgICAgLy8NCj4gKyAg ICAvLyBHZXQgdGhlIG5leHQgdmFyaWFibGUgbmFtZSBhbmQgZ3VpZA0KPiArICAgIC8vDQo+ICsg ICAgVmFyaWFibGVOYW1lU2l6ZSA9IFZhcmlhYmxlTmFtZUJ1ZmZlclNpemU7DQo+ICsgICAgU3Rh dHVzID0gZ1JULT5HZXROZXh0VmFyaWFibGVOYW1lICgNCj4gKyAgICAgICAgICAgICAgICAgICAg JlZhcmlhYmxlTmFtZVNpemUsDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlTmFtZSwN Cj4gKyAgICAgICAgICAgICAgICAgICAgJlZlbmRvckd1aWQNCj4gKyAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgICBpZiAoU3RhdHVzID09IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSB7DQo+ICsg ICAgICAvLw0KPiArICAgICAgLy8gVGhlIGN1cnJlbnRseSBhbGxvY2F0ZWQgVmFyaWFibGVOYW1l IGJ1ZmZlciBpcyB0b28gc21hbGwsDQo+ICsgICAgICAvLyBzbyB3ZSBhbGxvY2F0ZSBhIGxhcmdl ciBidWZmZXIsIGFuZCBjb3B5IHRoZSBvbGQgYnVmZmVyDQo+ICsgICAgICAvLyB0byBpdC4NCj4g KyAgICAgIC8vDQo+ICsgICAgICBOZXdCdWZmZXIgPSBBbGxvY2F0ZVBvb2wgKFZhcmlhYmxlTmFt ZVNpemUpOw0KPiArICAgICAgaWYgKE5ld0J1ZmZlciA9PSBOVUxMKSB7DQo+ICsgICAgICAgIFN0 YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAg IH0NCj4gKyAgICAgIENvcHlNZW0gKE5ld0J1ZmZlciwgVmFyaWFibGVOYW1lLCBWYXJpYWJsZU5h bWVCdWZmZXJTaXplKTsNCj4gKyAgICAgIGlmIChWYXJpYWJsZU5hbWUgIT0gTlVMTCkgew0KPiAr ICAgICAgICBGcmVlUG9vbCAoVmFyaWFibGVOYW1lKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFZh cmlhYmxlTmFtZSA9IE5ld0J1ZmZlcjsNCj4gKyAgICAgIFZhcmlhYmxlTmFtZUJ1ZmZlclNpemUg PSBWYXJpYWJsZU5hbWVTaXplOw0KPiArDQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gVHJ5IHRv IGdldCB0aGUgbmV4dCB2YXJpYWJsZSBuYW1lIGFnYWluIHdpdGggdGhlIGxhcmdlciBidWZmZXIu DQo+ICsgICAgICAvLw0KPiArICAgICAgU3RhdHVzID0gZ1JULT5HZXROZXh0VmFyaWFibGVOYW1l ICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAmVmFyaWFibGVOYW1lU2l6ZSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg JlZlbmRvckd1aWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICApOw0KPiArICAgIH0NCj4gKw0K PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIGlmIChTdGF0dXMgPT0g RUZJX05PVF9GT1VORCkgew0KPiArICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gKyAg ICAgIH0NCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8vDQo+ICsgICAg Ly8gR2V0IHRoZSB2YXJpYWJsZSBkYXRhIGFuZCBhdHRyaWJ1dGVzDQo+ICsgICAgLy8NCj4gKyAg ICBWYXJpYWJsZURhdGFTaXplID0gVmFyaWFibGVEYXRhQnVmZmVyU2l6ZTsNCj4gKyAgICBTdGF0 dXMgPSBnUlQtPkdldFZhcmlhYmxlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVO YW1lLA0KPiArICAgICAgICAgICAgICAgICAgICAmVmVuZG9yR3VpZCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgJlZhcmlhYmxlQXR0cmlidXRlcywNCj4gKyAgICAgICAgICAgICAgICAgICAgJlZh cmlhYmxlRGF0YVNpemUsDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlRGF0YQ0KPiAr ICAgICAgICAgICAgICAgICAgICApOw0KPiArICAgIGlmIChTdGF0dXMgPT0gRUZJX0JVRkZFUl9U T09fU01BTEwpIHsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBUaGUgY3VycmVudGx5IGFsbG9j YXRlZCBWYXJpYWJsZURhdGEgYnVmZmVyIGlzIHRvbyBzbWFsbCwNCj4gKyAgICAgIC8vIHNvIHdl IGFsbG9jYXRlIGEgbGFyZ2VyIGJ1ZmZlci4NCj4gKyAgICAgIC8vDQo+ICsgICAgICBpZiAoVmFy aWFibGVEYXRhQnVmZmVyU2l6ZSAhPSAwKSB7DQo+ICsgICAgICAgIEZyZWVQb29sIChWYXJpYWJs ZURhdGEpOw0KPiArICAgICAgICBWYXJpYWJsZURhdGEgPSBOVUxMOw0KPiArICAgICAgICBWYXJp YWJsZURhdGFCdWZmZXJTaXplID0gMDsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFZhcmlhYmxlRGF0 YSA9IEFsbG9jYXRlUG9vbCAoVmFyaWFibGVEYXRhU2l6ZSk7DQo+ICsgICAgICBpZiAoVmFyaWFi bGVEYXRhID09IE5VTEwpIHsNCj4gKyAgICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgfQ0KPiArICAgICAgVmFyaWFibGVEYXRh QnVmZmVyU2l6ZSA9IFZhcmlhYmxlRGF0YVNpemU7DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAg ICAvLyBUcnkgdG8gcmVhZCB0aGUgdmFyaWFibGUgYWdhaW4gd2l0aCB0aGUgbGFyZ2VyIGJ1ZmZl ci4NCj4gKyAgICAgIC8vDQo+ICsgICAgICBTdGF0dXMgPSBnUlQtPkdldFZhcmlhYmxlICgNCj4g KyAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgJlZlbmRvckd1aWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgJlZhcmlhYmxlQXR0 cmlidXRlcywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAmVmFyaWFibGVEYXRhU2l6ZSwNCj4g KyAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZURhdGENCj4gKyAgICAgICAgICAgICAgICAg ICAgICApOw0KPiArICAgIH0NCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsg ICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIFJ1biB0aGUg Y2FsbGJhY2sgZnVuY3Rpb24NCj4gKyAgICAvLw0KPiArICAgIFN0YXR1cyA9ICgqQ2FsbGJhY2tG dW5jdGlvbikgKA0KPiArICAgICAgICAgICAgICAgQ29udGV4dCwNCj4gKyAgICAgICAgICAgICAg IFZhcmlhYmxlTmFtZSwNCj4gKyAgICAgICAgICAgICAgICZWZW5kb3JHdWlkLA0KPiArICAgICAg ICAgICAgICAgVmFyaWFibGVBdHRyaWJ1dGVzLA0KPiArICAgICAgICAgICAgICAgVmFyaWFibGVE YXRhU2l6ZSwNCj4gKyAgICAgICAgICAgICAgIFZhcmlhYmxlRGF0YQ0KPiArICAgICAgICAgICAg ICAgKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBicmVhazsN Cj4gKyAgICB9DQo+ICsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChWYXJpYWJsZU5hbWUgIT0gTlVM TCkgew0KPiArICAgIEZyZWVQb29sIChWYXJpYWJsZU5hbWUpOw0KPiArICB9DQo+ICsNCj4gKyAg aWYgKFZhcmlhYmxlRGF0YSAhPSBOVUxMKSB7DQo+ICsgICAgRnJlZVBvb2wgKFZhcmlhYmxlRGF0 YSk7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsNCj4g Ky8qKg0KPiArICBJdGVyYXRlcyBhbGwgdmFyaWFibGVzIGZvdW5kIGluIHRoZSB2YXJpYWJsZSBz ZXJpYWxpemF0aW9uIGluc3RhbmNlDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgIEhhbmRsZSAtIEhh bmRsZSBmb3IgYSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQo+ICsgIEBwYXJhbVtp bl0gICBDYWxsYmFja0Z1bmN0aW9uIC0gRnVuY3Rpb24gY2FsbGVkIGZvciBlYWNoIHZhcmlhYmxl IGluc3RhbmNlDQo+ICsgIEBwYXJhbVtpbl0gICBDb250ZXh0IC0gUGFzc2VkIHRvIGVhY2ggY2Fs bCBvZiBDYWxsYmFja0Z1bmN0aW9uDQo+ICsNCj4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9TVUND RVNTIC0gQWxsIHZhcmlhYmxlcyB3ZXJlIGl0ZXJhdGVkIHdpdGhvdXQgdGhlDQo+ICsgICAgICAg ICAgICAgICAgIENhbGxiYWNrRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGVycm9yDQo+ICsgIEByZXR2 YWwgICAgICBSRVRVUk5fT1VUX09GX1JFU09VUkNFUyAtIFRoZXJlIHdlIG5vdCBlbm91Z2ggcmVz b3VyY2VzDQo+IHRvDQo+ICsgICAgICAgICAgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFy aWFibGVzDQo+ICsgIEByZXR1cm4gICAgICBBbnkgb2YgUkVUVVJOX0VSUk9SIGluZGljYXRlcyBh biBlcnJvciByZWFkaW5nIHRoZSB2YXJpYWJsZQ0KPiArICAgICAgICAgICAgICAgICBvciBhbiBl cnJvciB3YXMgcmV0dXJuZWQgZnJvbSBDYWxsYmFja0Z1bmN0aW9uDQo+ICsNCj4gKyoqLw0KPiAr UkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxpemVWYXJpYWJsZXNJdGVyYXRlSW5z dGFuY2VWYXJpYWJsZXMgKA0KPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBIYW5kbGUsDQo+ICsgIElOIFZBUklBQkxFX1NFUklBTElaQVRJT05fSVRFUkFU SU9OX0NBTExCQUNLIENhbGxiYWNrRnVuY3Rpb24sDQo+ICsgIElOIFZPSUQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgU1Zf SU5TVEFOQ0UgICAgKkluc3RhbmNlOw0KPiArDQo+ICsgIEluc3RhbmNlID0gU1ZfRlJPTV9IQU5E TEUgKEhhbmRsZSk7DQo+ICsNCj4gKyAgaWYgKChJbnN0YW5jZS0+QnVmZmVyUHRyICE9IE5VTEwp ICYmIChJbnN0YW5jZS0+RGF0YVNpemUgIT0gMCkpIHsNCj4gKyAgICByZXR1cm4gSXRlcmF0ZVZh cmlhYmxlc0luQnVmZmVyICgNCj4gKyAgICAgICAgICAgICBDYWxsYmFja0Z1bmN0aW9uLA0KPiAr ICAgICAgICAgICAgIENvbnRleHQsDQo+ICsgICAgICAgICAgICAgSW5zdGFuY2UtPkJ1ZmZlclB0 ciwNCj4gKyAgICAgICAgICAgICBJbnN0YW5jZS0+RGF0YVNpemUNCj4gKyAgICAgICAgICAgICAp Ow0KPiArICB9IGVsc2Ugew0KPiArICAgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gKyAgfQ0K PiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBTZXRzIGFsbCB2YXJpYWJsZXMgZm91bmQgaW4g dGhlIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gKw0KPiArICBAcGFyYW1baW5d ICAgSGFuZGxlIC0gSGFuZGxlIGZvciBhIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UN Cj4gKw0KPiArICBAcmV0dmFsICAgICAgUkVUVVJOX1NVQ0NFU1MgLSBBbGwgdmFyaWFibGVzIHdl cmUgc2V0IHN1Y2Nlc3NmdWxseQ0KPiArICBAcmV0dmFsICAgICAgUkVUVVJOX09VVF9PRl9SRVNP VVJDRVMgLSBUaGVyZSB3ZSBub3QgZW5vdWdoIHJlc291cmNlcw0KPiB0bw0KPiArICAgICAgICAg ICAgICAgICBzZXQgYWxsIHRoZSB2YXJpYWJsZXMNCj4gKyAgQHJldHVybiAgICAgIEFueSBvZiBS RVRVUk5fRVJST1IgaW5kaWNhdGVzIGFuIGVycm9yIHJlYWRpbmcgdGhlIHZhcmlhYmxlcw0KPiAr ICAgICAgICAgICAgICAgICBvciBpbiBhdHRlbXB0aW5nIHRvIHNldCBhIHZhcmlhYmxlDQo+ICsN Cj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxpemVWYXJpYWJs ZXNTZXRTZXJpYWxpemVkVmFyaWFibGVzICgNCj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICAgICAgICAgSGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFNlcmlhbGl6ZVZh cmlhYmxlc0l0ZXJhdGVJbnN0YW5jZVZhcmlhYmxlcyAoDQo+ICsgICAgICAgICAgIEhhbmRsZSwN Cj4gKyAgICAgICAgICAgSXRlcmF0ZVZhcmlhYmxlc0NhbGxiYWNrU2V0U3lzdGVtVmFyaWFibGUs DQo+ICsgICAgICAgICAgIE5VTEwNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArDQo+ ICsvKioNCj4gKyAgQWRkcyBhIHZhcmlhYmxlIHRvIHRoZSB2YXJpYWJsZSBzZXJpYWxpemF0aW9u IGluc3RhbmNlDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBIYW5kbGUgLSBIYW5kbGUgZm9yIGEgdmFy aWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiArICBAcGFyYW1baW5dIFZhcmlhYmxlTmFt ZSAtIFJlZmVyIHRvIFJ1bnRpbWVTZXJ2aWNlcyBHZXRWYXJpYWJsZQ0KPiArICBAcGFyYW1baW5d IFZlbmRvckd1aWQgLSBSZWZlciB0byBSdW50aW1lU2VydmljZXMgR2V0VmFyaWFibGUNCj4gKyAg QHBhcmFtW2luXSBBdHRyaWJ1dGVzIC0gUmVmZXIgdG8gUnVudGltZVNlcnZpY2VzIEdldFZhcmlh YmxlDQo+ICsgIEBwYXJhbVtpbl0gRGF0YVNpemUgLSBSZWZlciB0byBSdW50aW1lU2VydmljZXMg R2V0VmFyaWFibGUNCj4gKyAgQHBhcmFtW2luXSBEYXRhIC0gUmVmZXIgdG8gUnVudGltZVNlcnZp Y2VzIEdldFZhcmlhYmxlDQo+ICsNCj4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9TVUNDRVNTIC0g QWxsIHZhcmlhYmxlcyB3ZXJlIHNldCBzdWNjZXNzZnVsbHkNCj4gKyAgQHJldHZhbCAgICAgIFJF VFVSTl9PVVRfT0ZfUkVTT1VSQ0VTIC0gVGhlcmUgd2Ugbm90IGVub3VnaCByZXNvdXJjZXMNCj4g dG8NCj4gKyAgICAgICAgICAgICAgICAgYWRkIHRoZSB2YXJpYWJsZQ0KPiArICBAcmV0dmFsICAg ICAgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSIC0gSGFuZGxlIHdhcyBub3QgYSB2YWxpZA0KPiAr ICAgICAgICAgICAgICAgICB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlIG9yDQo+ICsg ICAgICAgICAgICAgICAgIFZhcmlhYmxlTmFtZSwgVmFyaWFibGVHdWlkIG9yIERhdGEgYXJlIE5V TEwuDQo+ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxp emVWYXJpYWJsZXNBZGRWYXJpYWJsZSAoDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgICAgSGFuZGxlLA0KPiArICBJTiBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICpWYXJp YWJsZU5hbWUsDQo+ICsgIElOIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgICAgKlZlbmRvckd1 aWQsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcywNCj4g KyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSwNCj4gKyAgSU4gVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YQ0KPiArICApDQo+ICt7DQo+ICsgIFJFVFVS Tl9TVEFUVVMgIFN0YXR1czsNCj4gKyAgU1ZfSU5TVEFOQ0UgICAgKkluc3RhbmNlOw0KPiArICBV SU5UMzIgICAgICAgICBTZXJpYWxpemVkTmFtZVNpemU7DQo+ICsgIFVJTlQzMiAgICAgICAgIFNl cmlhbGl6ZWREYXRhU2l6ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgU2VyaWFsaXplZFNpemU7DQo+ ICsNCj4gKyAgSW5zdGFuY2UgPSBTVl9GUk9NX0hBTkRMRSAoSGFuZGxlKTsNCj4gKw0KPiArICBp ZiAoKEluc3RhbmNlLT5TaWduYXR1cmUgIT0gU1ZfU0lHTkFUVVJFKSB8fA0KPiArICAgICAgKFZh cmlhYmxlTmFtZSA9PSBOVUxMKSB8fCAoVmVuZG9yR3VpZCA9PSBOVUxMKSB8fCAoRGF0YSA9PSBO VUxMKSkgew0KPiArICB9DQo+ICsNCj4gKyAgU2VyaWFsaXplZE5hbWVTaXplID0gKFVJTlQzMikg U3RyU2l6ZSAoVmFyaWFibGVOYW1lKTsNCj4gKw0KPiArICBTZXJpYWxpemVkU2l6ZSA9DQo+ICsg ICAgc2l6ZW9mIChTZXJpYWxpemVkTmFtZVNpemUpICsNCj4gKyAgICBTZXJpYWxpemVkTmFtZVNp emUgKw0KPiArICAgIHNpemVvZiAoKlZlbmRvckd1aWQpICsNCj4gKyAgICBzaXplb2YgKEF0dHJp YnV0ZXMpICsNCj4gKyAgICBzaXplb2YgKFNlcmlhbGl6ZWREYXRhU2l6ZSkgKw0KPiArICAgIERh dGFTaXplOw0KPiArDQo+ICsgIFN0YXR1cyA9IEVuc3VyZUV4dHJhQnVmZmVyU3BhY2UgKA0KPiAr ICAgICAgICAgICAgIEluc3RhbmNlLA0KPiArICAgICAgICAgICAgIFNlcmlhbGl6ZWRTaXplDQo+ ICsgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKFJFVFVSTl9FUlJPUiAoU3RhdHVzKSkgew0KPiAr ICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBBZGQgbmFt ZSBzaXplIChVSU5UMzIpDQo+ICsgIC8vDQo+ICsgIEFwcGVuZFRvQnVmZmVyIChJbnN0YW5jZSwg KFZPSUQqKSAmU2VyaWFsaXplZE5hbWVTaXplLCBzaXplb2YNCj4gKFNlcmlhbGl6ZWROYW1lU2l6 ZSkpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEFkZCB2YXJpYWJsZSB1bmljb2RlIG5hbWUgc3Ry aW5nDQo+ICsgIC8vDQo+ICsgIEFwcGVuZFRvQnVmZmVyIChJbnN0YW5jZSwgKFZPSUQqKSBWYXJp YWJsZU5hbWUsIFNlcmlhbGl6ZWROYW1lU2l6ZSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQWRk IHZhcmlhYmxlIEdVSUQNCj4gKyAgLy8NCj4gKyAgQXBwZW5kVG9CdWZmZXIgKEluc3RhbmNlLCAo Vk9JRCopIFZlbmRvckd1aWQsIHNpemVvZiAoKlZlbmRvckd1aWQpKTsNCj4gKw0KPiArICAvLw0K PiArICAvLyBBZGQgdmFyaWFibGUgYXR0cmlidXRlcw0KPiArICAvLw0KPiArICBBcHBlbmRUb0J1 ZmZlciAoSW5zdGFuY2UsIChWT0lEKikgJkF0dHJpYnV0ZXMsIHNpemVvZiAoQXR0cmlidXRlcykp Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEFkZCB2YXJpYWJsZSBkYXRhIHNpemUgKFVJTlQzMikN Cj4gKyAgLy8NCj4gKyAgU2VyaWFsaXplZERhdGFTaXplID0gKFVJTlQzMikgRGF0YVNpemU7DQo+ ICsgIEFwcGVuZFRvQnVmZmVyIChJbnN0YW5jZSwgKFZPSUQqKSAmU2VyaWFsaXplZERhdGFTaXpl LCBzaXplb2YNCj4gKFNlcmlhbGl6ZWREYXRhU2l6ZSkpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8v IEFkZCB2YXJpYWJsZSBkYXRhDQo+ICsgIC8vDQo+ICsgIEFwcGVuZFRvQnVmZmVyIChJbnN0YW5j ZSwgRGF0YSwgRGF0YVNpemUpOw0KPiArDQo+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4g K30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgU2VyaWFsaXplcyB0aGUgdmFyaWFibGVzIGtub3du IHRvIHRoaXMgaW5zdGFuY2UgaW50byB0aGUNCj4gKyAgcHJvdmlkZWQgYnVmZmVyLg0KPiArDQo+ ICsgIEBwYXJhbVtpbl0gICAgIEhhbmRsZSAtIEhhbmRsZSBmb3IgYSB2YXJpYWJsZSBzZXJpYWxp emF0aW9uIGluc3RhbmNlDQo+ICsgIEBwYXJhbVtvdXRdICAgIEJ1ZmZlciAtIEEgYnVmZmVyIHRv IHN0b3JlIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24NCj4gKyAgICAgICAgICAgICAgICAgICBv ZiB0aGUgdmFyaWFibGVzLg0KPiArICBAcGFyYW1baW4sb3V0XSBTaXplIC0gT24gaW5wdXQgdGhp cyBpcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLg0KPiArICAgICAgICAgICAgICAgICAgIE9uIG91 dHB1dCB0aGlzIGlzIHRoZSBzaXplIG9mIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24NCj4gKyAg ICAgICAgICAgICAgICAgICBvZiB0aGUgdmFyaWFibGVzLg0KPiArDQo+ICsgIEByZXR2YWwgICAg ICBSRVRVUk5fU1VDQ0VTUyAtIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gd2FzIHN1Y2Nlc3Nm dWxseQ0KPiArICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgYW5kIHJldHVybmVkIGluIHRoZSBi dWZmZXIuDQo+ICsgIEByZXR2YWwgICAgICBSRVRVUk5fT1VUX09GX1JFU09VUkNFUyAtIFRoZXJl IHdlIG5vdCBlbm91Z2ggcmVzb3VyY2VzDQo+IHRvDQo+ICsgICAgICAgICAgICAgICAgIHNhdmUg dGhlIHZhcmlhYmxlcyB0byB0aGUgYnVmZmVyLg0KPiArICBAcmV0dmFsICAgICAgUkVUVVJOX0lO VkFMSURfUEFSQU1FVEVSIC0gSGFuZGxlIHdhcyBub3QgYSB2YWxpZA0KPiArICAgICAgICAgICAg ICAgICB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlIG9yDQo+ICsgICAgICAgICAgICAg ICAgIFNpemUgb3IgQnVmZmVyIHdlcmUgTlVMTC4NCj4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9C VUZGRVJfVE9PX1NNQUxMIC0gVGhlIEJ1ZmZlciBzaXplIGFzIGluZGljYXRlZCBieQ0KPiArICAg ICAgICAgICAgICAgICB0aGUgU2l6ZSBwYXJhbWV0ZXIgd2FzIHRvbyBzbWFsbCBmb3IgdGhlIHNl cmlhbGl6ZWQNCj4gKyAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGF0YS4gIFNpemUgaXMgcmV0 dXJuZWQgd2l0aCB0aGUgcmVxdWlyZWQgc2l6ZS4NCj4gKw0KPiArKiovDQo+ICtSRVRVUk5fU1RB VFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbGl6ZVZhcmlhYmxlc1RvQnVmZmVyICgNCj4gKyAgSU4g ICAgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZSwNCj4gKyAgT1VUICAg IFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXIsDQo+ICsgIElOIE9VVCBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU2l6ZQ0KPiArICApDQo+ICt7DQo+ICsg IFNWX0lOU1RBTkNFICAgICpJbnN0YW5jZTsNCj4gKw0KPiArICBJbnN0YW5jZSA9IFNWX0ZST01f SEFORExFIChIYW5kbGUpOw0KPiArDQo+ICsgIGlmIChTaXplID09IE5VTEwpIHsNCj4gKyAgICBy ZXR1cm4gUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKCpT aXplIDwgSW5zdGFuY2UtPkRhdGFTaXplKSB7DQo+ICsgICAgKlNpemUgPSBJbnN0YW5jZS0+RGF0 YVNpemU7DQo+ICsgICAgcmV0dXJuIFJFVFVSTl9CVUZGRVJfVE9PX1NNQUxMOw0KPiArICB9DQo+ ICsNCj4gKyAgaWYgKEJ1ZmZlciA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIFJFVFVSTl9JTlZB TElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgICpTaXplID0gSW5zdGFuY2UtPkRhdGFT aXplOw0KPiArICBDb3B5TWVtIChCdWZmZXIsIEluc3RhbmNlLT5CdWZmZXJQdHIsIEluc3RhbmNl LT5EYXRhU2l6ZSk7DQo+ICsNCj4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiAr DQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZv cm1EeGUvUGxhdGZvcm0uYw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q bGF0Zm9ybUR4ZS9QbGF0Zm9ybS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAuLjdiZWRlMTQ5NmQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uYw0KPiBAQCAtMCww ICsxLDg2NSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFRoaXMgZHJpdmVyIGVmZmVjdHVhdGVzIE9W TUYncyBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFuZCBleHBvc2VzDQo+ICsgIHRo ZW0gdmlhIEhJSS4NCj4gKw0KPiArICBDb3B5cmlnaHQgKEMpIDIwMTQsIFJlZCBIYXQsIEluYy4N Cj4gKyAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFz ZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RldmljZVBhdGhM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvVWVmaUhpaVNlcnZpY2VzTGliLmg+DQo+ICsjaW5jbHVkZSA8UHJv dG9jb2wvRGV2aWNlUGF0aC5oPg0KPiArI2luY2x1ZGUgPFByb3RvY29sL0dyYXBoaWNzT3V0cHV0 Lmg+DQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvSGlpQ29uZmlnQWNjZXNzLmg+DQo+ICsjaW5jbHVk ZSA8R3VpZC9NZGVNb2R1bGVIaWkuaD4NCj4gKyNpbmNsdWRlIDxHdWlkL1NpbWljc1g1OFBsYXRm b3JtQ29uZmlnLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJQbGF0Zm9ybS5oIg0KPiArI2luY2x1ZGUg IlBsYXRmb3JtQ29uZmlnLmgiDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EeGVTZXJ2aWNlc1RhYmxl TGliLmg+DQo+ICsvLw0KPiArLy8gVGhlIEhpaUFkZFBhY2thZ2VzKCkgbGlicmFyeSBmdW5jdGlv biByZXF1aXJlcyB0aGF0IGFueSBjb250cm9sbGVyIChvcg0KPiArLy8gaW1hZ2UpIGhhbmRsZSwg dG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBISUkgcGFja2FnZXMgdW5kZXIgaW5zdGFsbGF0aW9u LCBiZQ0KPiArLy8gImRlY29yYXRlZCIgd2l0aCBhIGRldmljZSBwYXRoLiBUaGUgdHJhZGl0aW9u IHNlZW1zIHRvIGJlIGEgdmVuZG9yIGRldmljZQ0KPiArLy8gcGF0aC4NCj4gKy8vDQo+ICsvLyBX ZSdkIGxpa2UgdG8gYXNzb2NpYXRlIG91ciBISUkgcGFja2FnZXMgd2l0aCB0aGUgZHJpdmVyJ3Mg aW1hZ2UgaGFuZGxlLiBUaGUNCj4gKy8vIGZpcnN0IGlkZWEgaXMgdG8gdXNlIHRoZSBkcml2ZXIg aW1hZ2UncyBkZXZpY2UgcGF0aC4gVW5mb3J0dW5hdGVseSwgbG9hZGVkDQo+ICsvLyBpbWFnZXMg b25seSBjb21lIHdpdGggYW4gRUZJX0xPQURFRF9JTUFHRV9ERVZJQ0VfUEFUSF9QUk9UT0NPTA0K PiAobm90IHRoZQ0KPiArLy8gdXN1YWwgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKSwgaWUuIGEg ZGlmZmVyZW50IEdVSUQuIEluIGFkZGl0aW9uLCBldmVuDQo+IHRoZQ0KPiArLy8gRUZJX0xPQURF RF9JTUFHRV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCBpbnRlcmZhY2UgbWF5IGJlIE5VTEwsIGlmDQo+ IHRoZSBpbWFnZQ0KPiArLy8gaGFzIGJlZW4gbG9hZGVkIGZyb20gYW4gInVubmFtZWQiIG1lbW9y eSBzb3VyY2UgYnVmZmVyLg0KPiArLy8NCj4gKy8vIEhlbmNlIGxldCdzIGp1c3Qgc3RpY2sgd2l0 aCB0aGUgdHJhZGl0aW9uIC0tIHVzZSBhIGRlZGljYXRlZCB2ZW5kb3IgZGV2aWNlDQo+ICsvLyBw YXRoLCB3aXRoIHRoZSBkcml2ZXIncyBGSUxFX0dVSUQuDQo+ICsvLw0KPiArI3ByYWdtYSBwYWNr KDEpDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFZFTkRPUl9ERVZJQ0VfUEFUSCAgICAgICBW ZW5kb3JEZXZpY2VQYXRoOw0KPiArICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgRW5kOw0KPiAr fSBQS0dfREVWSUNFX1BBVEg7DQo+ICsjcHJhZ21hIHBhY2soKQ0KPiArDQo+ICtTVEFUSUMgUEtH X0RFVklDRV9QQVRIIG1Qa2dEZXZpY2VQYXRoID0gew0KPiArICB7DQo+ICsgICAgew0KPiArICAg ICAgSEFSRFdBUkVfREVWSUNFX1BBVEgsDQo+ICsgICAgICBIV19WRU5ET1JfRFAsDQo+ICsgICAg ICB7DQo+ICsgICAgICAgIChVSU5UOCkgKHNpemVvZiAoVkVORE9SX0RFVklDRV9QQVRIKSAgICAg KSwNCj4gKyAgICAgICAgKFVJTlQ4KSAoc2l6ZW9mIChWRU5ET1JfREVWSUNFX1BBVEgpID4+IDgp DQo+ICsgICAgICB9DQo+ICsgICAgfSwNCj4gKyAgICBFRklfQ0FMTEVSX0lEX0dVSUQNCj4gKyAg fSwNCj4gKyAgew0KPiArICAgIEVORF9ERVZJQ0VfUEFUSF9UWVBFLA0KPiArICAgIEVORF9FTlRJ UkVfREVWSUNFX1BBVEhfU1VCVFlQRSwNCj4gKyAgICB7DQo+ICsgICAgICAoVUlOVDgpIChFTkRf REVWSUNFX1BBVEhfTEVOR1RIICAgICApLA0KPiArICAgICAgKFVJTlQ4KSAoRU5EX0RFVklDRV9Q QVRIX0xFTkdUSCA+PiA4KQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArfTsNCj4gKw0KPiArLy8NCj4g Ky8vIFRoZSBjb25maWd1cmF0aW9uIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBISUkgZW5naW5lIChm b3JtIGRpc3BsYXkgZXRjKSBhbmQNCj4gKy8vIHRoaXMgZHJpdmVyLg0KPiArLy8NCj4gK1NUQVRJ QyBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgbUNvbmZpZ0FjY2VzczsNCj4gKw0KPiAr Ly8NCj4gKy8vIFRoZSBoYW5kbGUgcmVwcmVzZW50aW5nIG91ciBsaXN0IG9mIHBhY2thZ2VzIGFm dGVyIGluc3RhbGxhdGlvbi4NCj4gKy8vDQo+ICtTVEFUSUMgRUZJX0hJSV9IQU5ETEUgbUluc3Rh bGxlZFBhY2thZ2VzOw0KPiArDQo+ICsvLw0KPiArLy8gVGhlIGFycmF5cyBiZWxvdyBjb25zdGl0 dXRlIG91ciBISUkgcGFja2FnZSBsaXN0LiBUaGV5IGFyZSBhdXRvLWdlbmVyYXRlZCBieQ0KPiAr Ly8gdGhlIFZGUiBjb21waWxlciBhbmQgbGlua2VkIGludG8gdGhlIGRyaXZlciBpbWFnZSBkdXJp bmcgdGhlIGJ1aWxkLg0KPiArLy8NCj4gKy8vIC0gVGhlIHN0cmluZ3MgcGFja2FnZSByZWNlaXZl cyBpdHMgQyBpZGVudGlmaWVyIGZyb20gdGhlIGRyaXZlcidzIEJBU0VfTkFNRSwNCj4gKy8vICAg cGx1cyAiU3RyaW5ncyIuDQo+ICsvLw0KPiArLy8gLSBUaGUgZm9ybXMgcGFja2FnZSByZWNlaXZl cyBpdHMgQyBpZGVudGlmaWVyIGZyb20gdGhlIFZGUiBmaWxlJ3MgYmFzZW5hbWUsDQo+ICsvLyAg IHBsdXMgIkJpbiIuDQo+ICsvLw0KPiArLy8NCj4gK2V4dGVybiBVSU5UOCBQbGF0Zm9ybUR4ZVN0 cmluZ3NbXTsNCj4gK2V4dGVybiBVSU5UOCBQbGF0Zm9ybUZvcm1zQmluW107DQo+ICsNCj4gKy8v DQo+ICsvLyBXZSB3YW50IHRvIGJlIG5vdGlmaWVkIGFib3V0IEdPUCBpbnN0YWxsYXRpb25zIHVu dGlsIHdlIGZpbmQgb25lIEdPUA0KPiArLy8gaW50ZXJmYWNlIHRoYXQgbGV0cyB1cyBwb3B1bGF0 ZSB0aGUgZm9ybS4NCj4gKy8vDQo+ICtTVEFUSUMgRUZJX0VWRU5UIG1Hb3BFdmVudDsNCj4gKw0K PiArLy8NCj4gKy8vIFRoZSByZWdpc3RyYXRpb24gcmVjb3JkIHVuZGVybmVhdGggdGhpcyBwb2lu dGVyIGFsbG93cyB1cyB0byBpdGVyYXRlIHRocm91Z2gNCj4gKy8vIHRoZSBHT1AgaW5zdGFuY2Vz IG9uZSBieSBvbmUuDQo+ICsvLw0KPiArU1RBVElDIFZPSUQgKm1Hb3BUcmFja2VyOw0KPiArDQo+ ICsvLw0KPiArLy8gQ2FjaGUgdGhlIHJlc29sdXRpb25zIHdlIGdldCBmcm9tIHRoZSBHT1AuDQo+ ICsvLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5UMzIgWDsNCj4gKyAgVUlOVDMyIFk7 DQo+ICt9IEdPUF9NT0RFOw0KPiArDQo+ICtTVEFUSUMgVUlOVE4gICAgbU51bUdvcE1vZGVzOw0K PiArU1RBVElDIEdPUF9NT0RFICptR29wTW9kZXM7DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIExv YWQgdGhlIHBlcnNpc3RlbnQgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBhbmQgdHJhbnNsYXRlIGl0 IHRvIGJpbmFyeSBmb3JtDQo+ICsgIHN0YXRlLg0KPiArDQo+ICsgIElmIHRoZSBwbGF0Zm9ybSBj b25maWd1cmF0aW9uIGlzIG1pc3NpbmcsIHRoZW4gdGhlIGZ1bmN0aW9uIGZpbGxzIGluIGENCj4g KyAgZGVmYXVsdCBzdGF0ZS4NCj4gKw0KPiArICBAcGFyYW1bb3V0XSBNYWluRm9ybVN0YXRlICBC aW5hcnkgZm9ybS93aWRnZXQgc3RhdGUgYWZ0ZXIgdHJhbnNsYXRpb24uDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgRm9ybS93aWRnZXQgc3RhdGUgcmVhZHkuDQo+ICsgIEByZXR1cm4g ICAgICAgICAgICAgIEVycm9yIGNvZGVzIGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMuDQo+ICsq Ki8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtQbGF0Zm9ybUNvbmZp Z1RvRm9ybVN0YXRlICgNCj4gKyAgT1VUIE1BSU5fRk9STV9TVEFURSAqTWFpbkZvcm1TdGF0ZQ0K PiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICBTdGF0dXM7DQo+ICsgIFBMQVRGT1JN X0NPTkZJRyBQbGF0Zm9ybUNvbmZpZzsNCj4gKyAgVUlOVDY0ICAgICAgICAgIE9wdGlvbmFsRWxl bWVudHM7DQo+ICsgIFVJTlROICAgICAgICAgICBNb2RlTnVtYmVyOw0KPiArDQo+ICsgIFplcm9N ZW0gKE1haW5Gb3JtU3RhdGUsIHNpemVvZiAqTWFpbkZvcm1TdGF0ZSk7DQo+ICsNCj4gKyAgU3Rh dHVzID0gUGxhdGZvcm1Db25maWdMb2FkICgmUGxhdGZvcm1Db25maWcsICZPcHRpb25hbEVsZW1l bnRzKTsNCj4gKyAgc3dpdGNoIChTdGF0dXMpIHsNCj4gKyAgY2FzZSBFRklfU1VDQ0VTUzoNCj4g KyAgICBpZiAoT3B0aW9uYWxFbGVtZW50cyAmIFBMQVRGT1JNX0NPTkZJR19GX0dSQVBISUNTX1JF U09MVVRJT04pIHsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBGb3JtYXQgdGhlIHByZWZlcnJl ZCByZXNvbHV0aW9uIGFzIHRleHQuDQo+ICsgICAgICAvLw0KPiArICAgICAgVW5pY29kZVNQcmlu dEFzY2lpRm9ybWF0ICgNCj4gKyAgICAgICAgKENIQVIxNiAqKSBNYWluRm9ybVN0YXRlLT5DdXJy ZW50UHJlZmVycmVkUmVzb2x1dGlvbiwNCj4gKyAgICAgICAgc2l6ZW9mIE1haW5Gb3JtU3RhdGUt PkN1cnJlbnRQcmVmZXJyZWRSZXNvbHV0aW9uLA0KPiArICAgICAgICAiJUxkeCVMZCIsDQo+ICsg ICAgICAgIChJTlQ2NCkgUGxhdGZvcm1Db25maWcuSG9yaXpvbnRhbFJlc29sdXRpb24sDQo+ICsg ICAgICAgIChJTlQ2NCkgUGxhdGZvcm1Db25maWcuVmVydGljYWxSZXNvbHV0aW9uKTsNCj4gKw0K PiArICAgICAgLy8NCj4gKyAgICAgIC8vIFRyeSB0byBsb2NhdGUgaXQgaW4gdGhlIGRyb3AtZG93 biBsaXN0IHRvby4gVGhpcyBtYXkgbm90IHN1Y2NlZWQsIGJ1dA0KPiArICAgICAgLy8gdGhhdCdz IGZpbmUuDQo+ICsgICAgICAvLw0KPiArICAgICAgZm9yIChNb2RlTnVtYmVyID0gMDsgTW9kZU51 bWJlciA8IG1OdW1Hb3BNb2RlczsNCj4gKytNb2RlTnVtYmVyKSB7DQo+ICsgICAgICAgIGlmICht R29wTW9kZXNbTW9kZU51bWJlcl0uWCA9PSBQbGF0Zm9ybUNvbmZpZy5Ib3Jpem9udGFsUmVzb2x1 dGlvbg0KPiAmJg0KPiArICAgICAgICAgICAgbUdvcE1vZGVzW01vZGVOdW1iZXJdLlkgPT0gUGxh dGZvcm1Db25maWcuVmVydGljYWxSZXNvbHV0aW9uKSB7DQo+ICsgICAgICAgICAgTWFpbkZvcm1T dGF0ZS0+TmV4dFByZWZlcnJlZFJlc29sdXRpb24gPSAoVUlOVDMyKSBNb2RlTnVtYmVyOw0KPiAr ICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAg IGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICAvLw0KPiArICAgIC8vIGZhbGwgdGhyb3VnaCBvdGhl cndpc2UNCj4gKyAgICAvLw0KPiArDQo+ICsgIGNhc2UgRUZJX05PVF9GT1VORDoNCj4gKyAgICBV bmljb2RlU1ByaW50QXNjaWlGb3JtYXQgKA0KPiArICAgICAgKENIQVIxNiAqKSBNYWluRm9ybVN0 YXRlLT5DdXJyZW50UHJlZmVycmVkUmVzb2x1dGlvbiwNCj4gKyAgICAgIHNpemVvZiBNYWluRm9y bVN0YXRlLT5DdXJyZW50UHJlZmVycmVkUmVzb2x1dGlvbiwNCj4gKyAgICAgICJVbnNldCIpOw0K PiArICAgIGJyZWFrOw0KPiArDQo+ICsgIGRlZmF1bHQ6DQo+ICsgICAgcmV0dXJuIFN0YXR1czsN Cj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArDQo+ ICsvKioNCj4gKyAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIEhJSSBtYWNoaW5lcnkg d2hlbiBpdCBmZXRjaGVzIHRoZSBmb3JtIHN0YXRlLg0KPiArDQo+ICsgIFNlZSB0aGUgcHJlY2lz ZSBkb2N1bWVudGF0aW9uIGluIHRoZSBVRUZJIHNwZWMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAg VGhpcyAgICAgIFRoZSBDb25maWcgQWNjZXNzIFByb3RvY29sIGluc3RhbmNlLg0KPiArDQo+ICsg IEBwYXJhbVtpbl0gIFJlcXVlc3QgICBBIDxDb25maWdSZXF1ZXN0PiBmb3JtYXQgVUNTLTIgc3Ry aW5nIGRlc2NyaWJpbmcgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeS4NCj4g Kw0KPiArICBAcGFyYW1bb3V0XSBQcm9ncmVzcyAgQSBwb2ludGVyIGludG8gUmVxdWVzdCBvbiBv dXRwdXQsIGlkZW50aWZ5aW5nIHRoZQ0KPiBxdWVyeQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgZWxlbWVudCB3aGVyZSBwcm9jZXNzaW5nIGZhaWxlZC4NCj4gKw0KPiArICBAcGFyYW1bb3V0 XSBSZXN1bHRzICAgQSA8TXVsdGlDb25maWdBbHRSZXNwPiBmb3JtYXQgVUNTLTIgc3RyaW5nIHRo YXQgaGFzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBhbGwgdmFsdWVzIGZpbGxlZCBpbiBm b3IgdGhlIG5hbWVzIGluIHRoZSBSZXF1ZXN0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBz dHJpbmcuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgRXh0cmFjdGlvbiBvZiBmb3Jt IHN0YXRlIGluIDxNdWx0aUNvbmZpZ0FsdFJlc3A+DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IGVuY29kaW5nIHN1Y2Nlc3NmdWwuDQo+ICsgIEByZXR1cm4gICAgICAgICAgICAgIFN0YXR1cyBj b2RlcyBmcm9tIHVuZGVybHlpbmcgZnVuY3Rpb25zLg0KPiArDQo+ICsqKi8NCj4gK1NUQVRJQw0K PiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtFeHRyYWN0Q29uZmlnICgNCj4gKyAgSU4gQ09O U1QgIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgKlRoaXMsDQo+ICsgIElOIENPTlNU ICBFRklfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3QsDQo+ICsgIE9VVCAgICAg ICBFRklfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgICpQcm9ncmVzcywNCj4gKyAgT1VUICAg ICAgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICAgICAgKlJlc3VsdHMNCj4gKykNCj4gK3sN Cj4gKyAgTUFJTl9GT1JNX1NUQVRFIE1haW5Gb3JtU3RhdGU7DQo+ICsgIEVGSV9TVEFUVVMgICAg ICBTdGF0dXM7DQo+ICsNCj4gKyAgREVCVUcgKChFRklfRF9WRVJCT1NFLCAiJWE6IFJlcXVlc3Q9 XCIlc1wiXG4iLCBfX0ZVTkNUSU9OX18sDQo+IFJlcXVlc3QpKTsNCj4gKw0KPiArICBTdGF0dXMg PSBQbGF0Zm9ybUNvbmZpZ1RvRm9ybVN0YXRlICgmTWFpbkZvcm1TdGF0ZSk7DQo+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAqUHJvZ3Jlc3MgPSBSZXF1ZXN0Ow0KPiArICAg IHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBBbnN3ZXIgdGhl IHRleHR1YWwgcmVxdWVzdCBrZXlpbmcgb2ZmIHRoZSBiaW5hcnkgZm9ybSBzdGF0ZS4NCj4gKyAg Ly8NCj4gKyAgU3RhdHVzID0gZ0hpaUNvbmZpZ1JvdXRpbmctPkJsb2NrVG9Db25maWcgKGdIaWlD b25maWdSb3V0aW5nLCBSZXF1ZXN0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoVk9JRCAqKSAmTWFpbkZvcm1TdGF0ZSwgc2l6ZW9mIE1haW5Gb3JtU3RhdGUsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdHMsIFByb2dyZXNzKTsNCj4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIlYTog QmxvY2tUb0NvbmZpZygpOiAlciwgUHJvZ3Jlc3M9XCIlc1wiXG4iLA0KPiArICAgICAgX19GVU5D VElPTl9fLCBTdGF0dXMsIChTdGF0dXMgPT0gRUZJX0RFVklDRV9FUlJPUikgPyBOVUxMIDoNCj4g KlByb2dyZXNzKSk7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgREVCVUcgKChFRklfRF9WRVJCT1NF LCAiJWE6IFJlc3VsdHM9XCIlc1wiXG4iLCBfX0ZVTkNUSU9OX18sDQo+ICpSZXN1bHRzKSk7DQo+ ICsgIH0NCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAg SW50ZXJwcmV0IHRoZSBiaW5hcnkgZm9ybSBzdGF0ZSBhbmQgc2F2ZSBpdCBhcyBwZXJzaXN0ZW50 IHBsYXRmb3JtDQo+ICsgIGNvbmZpZ3VyYXRpb24uDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBNYWlu Rm9ybVN0YXRlICBCaW5hcnkgZm9ybS93aWRnZXQgc3RhdGUgdG8gdmVyaWZ5IGFuZCBzYXZlLg0K PiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIFBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gc2F2 ZWQuDQo+ICsgIEByZXR1cm4gICAgICAgICAgICAgIEVycm9yIGNvZGVzIGZyb20gdW5kZXJseWlu ZyBmdW5jdGlvbnMuDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJ DQo+ICtGb3JtU3RhdGVUb1BsYXRmb3JtQ29uZmlnICgNCj4gKyAgSU4gQ09OU1QgTUFJTl9GT1JN X1NUQVRFICpNYWluRm9ybVN0YXRlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAg IFN0YXR1czsNCj4gKyAgUExBVEZPUk1fQ09ORklHIFBsYXRmb3JtQ29uZmlnOw0KPiArICBDT05T VCBHT1BfTU9ERSAgKkdvcE1vZGU7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gVGhlcmUncyBub3Ro aW5nIHRvIGRvIHdpdGggdGhlIHRleHR1YWwgQ3VycmVudFByZWZlcnJlZFJlc29sdXRpb24gZmll bGQuDQo+ICsgIC8vIFdlIHZlcmlmeSBhbmQgdHJhbnNsYXRlIHRoZSBzZWxlY3Rpb24gaW4gdGhl IGRyb3AtZG93biBsaXN0Lg0KPiArICAvLw0KPiArICBpZiAoTWFpbkZvcm1TdGF0ZS0+TmV4dFBy ZWZlcnJlZFJlc29sdXRpb24gPj0gbU51bUdvcE1vZGVzKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArICBHb3BNb2RlID0gbUdvcE1vZGVzICsgTWFp bkZvcm1TdGF0ZS0+TmV4dFByZWZlcnJlZFJlc29sdXRpb247DQo+ICsNCj4gKyAgWmVyb01lbSAo JlBsYXRmb3JtQ29uZmlnLCBzaXplb2YgUGxhdGZvcm1Db25maWcpOw0KPiArICBQbGF0Zm9ybUNv bmZpZy5Ib3Jpem9udGFsUmVzb2x1dGlvbiA9IEdvcE1vZGUtPlg7DQo+ICsgIFBsYXRmb3JtQ29u ZmlnLlZlcnRpY2FsUmVzb2x1dGlvbiAgID0gR29wTW9kZS0+WTsNCj4gKw0KPiArICBTdGF0dXMg PSBQbGF0Zm9ybUNvbmZpZ1NhdmUgKCZQbGF0Zm9ybUNvbmZpZyk7DQo+ICsgIHJldHVybiBTdGF0 dXM7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk IGJ5IHRoZSBISUkgbWFjaGluZXJ5IHdoZW4gaXQgd2FudHMgdGhlIGRyaXZlciB0bw0KPiArICBp bnRlcnByZXQgYW5kIHBlcnNpc3QgdGhlIGZvcm0gc3RhdGUuDQo+ICsNCj4gKyAgU2VlIHRoZSBw cmVjaXNlIGRvY3VtZW50YXRpb24gaW4gdGhlIFVFRkkgc3BlYy4NCj4gKw0KPiArICBAcGFyYW1b aW5dICBUaGlzICAgICAgICAgICBUaGUgQ29uZmlnIEFjY2VzcyBQcm90b2NvbCBpbnN0YW5jZS4N Cj4gKw0KPiArICBAcGFyYW1baW5dICBDb25maWd1cmF0aW9uICBBIDxDb25maWdSZXNwPiBmb3Jt YXQgVUNTLTIgc3RyaW5nIGRlc2NyaWJpbmcNCj4gdGhlDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZvcm0gc3RhdGUuDQo+ICsNCj4gKyAgQHBhcmFtW291dF0gUHJvZ3Jlc3MgICAg ICAgQSBwb2ludGVyIGludG8gQ29uZmlndXJhdGlvbiBvbiBvdXRwdXQsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlkZW50aWZ5aW5nIHRoZSBlbGVtZW50IHdoZXJlIHByb2Nlc3Np bmcgZmFpbGVkLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIENvbmZpZ3VyYXRpb24g dmVyaWZpZWQsIHN0YXRlIHBlcm1hbmVudC4NCj4gKw0KPiArICBAcmV0dXJuICAgICAgICAgICAg ICBTdGF0dXMgY29kZXMgZnJvbSB1bmRlcmx5aW5nIGZ1bmN0aW9ucy4NCj4gKyoqLw0KPiArU1RB VElDDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1JvdXRlQ29uZmlnICgNCj4gKyAgSU4g Q09OU1QgIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgKlRoaXMsDQo+ICsgIElOIENP TlNUICBFRklfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24sDQo+ICsg IE9VVCAgICAgICBFRklfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgICpQcm9ncmVzcw0KPiAr KQ0KPiArew0KPiArICBNQUlOX0ZPUk1fU1RBVEUgTWFpbkZvcm1TdGF0ZTsNCj4gKyAgVUlOVE4g ICAgICAgICAgIEJsb2NrU2l6ZTsNCj4gKyAgRUZJX1NUQVRVUyAgICAgIFN0YXR1czsNCj4gKw0K PiArICBERUJVRyAoKEVGSV9EX1ZFUkJPU0UsICIlYTogQ29uZmlndXJhdGlvbj1cIiVzXCJcbiIs IF9fRlVOQ1RJT05fXywNCj4gKyAgICBDb25maWd1cmF0aW9uKSk7DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gdGhlICJyZWFkIiBzdGVwIGluIFJNVw0KPiArICAvLw0KPiArICBTdGF0dXMgPSBQbGF0 Zm9ybUNvbmZpZ1RvRm9ybVN0YXRlICgmTWFpbkZvcm1TdGF0ZSk7DQo+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICAqUHJvZ3Jlc3MgPSBDb25maWd1cmF0aW9uOw0KPiArICAg IHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyB0aGUgIm1vZGlm eSIgc3RlcCBpbiBSTVcNCj4gKyAgLy8NCj4gKyAgLy8gKFVwZGF0ZSB0aGUgYmluYXJ5IGZvcm0g c3RhdGUuIFRoaXMgdXBkYXRlIG1heSBiZSBwYXJ0aWFsLCB3aGljaCBpcyB3aHkgaW4NCj4gKyAg Ly8gZ2VuZXJhbCB3ZSBtdXN0IHByZS1sb2FkIHRoZSBmb3JtIHN0YXRlIGZyb20gdGhlIHBsYXRm b3JtIGNvbmZpZy4pDQo+ICsgIC8vDQo+ICsgIEJsb2NrU2l6ZSA9IHNpemVvZiBNYWluRm9ybVN0 YXRlOw0KPiArICBTdGF0dXMgPSBnSGlpQ29uZmlnUm91dGluZy0+Q29uZmlnVG9CbG9jayAoZ0hp aUNvbmZpZ1JvdXRpbmcsIENvbmZpZ3VyYXRpb24sDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChWT0lEICopICZNYWluRm9ybVN0YXRlLCAmQmxvY2tTaXplLCBQcm9ncmVzcyk7 DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKEVGSV9EX0VS Uk9SLCAiJWE6IENvbmZpZ1RvQmxvY2soKTogJXIsIFByb2dyZXNzPVwiJXNcIlxuIiwNCj4gKyAg ICAgIF9fRlVOQ1RJT05fXywgU3RhdHVzLA0KPiArICAgICAgKFN0YXR1cyA9PSBFRklfQlVGRkVS X1RPT19TTUFMTCkgPyBOVUxMIDogKlByb2dyZXNzKSk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsN Cj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIHRoZSAid3JpdGUiIHN0ZXAgaW4gUk1XDQo+ ICsgIC8vDQo+ICsgIFN0YXR1cyA9IEZvcm1TdGF0ZVRvUGxhdGZvcm1Db25maWcgKCZNYWluRm9y bVN0YXRlKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICpQcm9ncmVz cyA9IENvbmZpZ3VyYXRpb247DQo+ICsgIH0NCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4g Kw0KPiArDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQ2FsbGJhY2sg KA0KPiArICBJTiAgICAgQ09OU1QgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgKlRo aXMsDQo+ICsgIElOICAgICBFRklfQlJPV1NFUl9BQ1RJT04gICAgICAgICAgICAgICAgICAgICBB Y3Rpb24sDQo+ICsgIElOICAgICBFRklfUVVFU1RJT05fSUQgICAgICAgICAgICAgICAgICAgICAg ICBRdWVzdGlvbklkLA0KPiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVHlwZSwNCj4gKyAgSU4gT1VUIEVGSV9JRlJfVFlQRV9WQUxVRSAgICAgICAgICAg ICAgICAgICAgICpWYWx1ZSwNCj4gKyAgT1VUICAgIEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNU ICAgICAgICAgICAgICpBY3Rpb25SZXF1ZXN0DQo+ICsgICkNCj4gK3sNCj4gKyAgREVCVUcgKChF RklfRF9WRVJCT1NFLCAiJWE6IEFjdGlvbj0weCVMeCBRdWVzdGlvbklkPSVkIFR5cGU9JWRcbiIs DQo+ICsgICAgX19GVU5DVElPTl9fLCAoVUlOVDY0KSBBY3Rpb24sIFF1ZXN0aW9uSWQsIFR5cGUp KTsNCj4gKw0KPiArICBpZiAoQWN0aW9uICE9IEVGSV9CUk9XU0VSX0FDVElPTl9DSEFOR0VEKSB7 DQo+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgfQ0KPiArDQo+ICsgIHN3aXRj aCAoUXVlc3Rpb25JZCkgew0KPiArICBjYXNlIFFVRVNUSU9OX1NBVkVfRVhJVDoNCj4gKyAgICAq QWN0aW9uUmVxdWVzdCA9IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUX0ZPUk1fU1VCTUlUX0VY SVQ7DQo+ICsgICAgYnJlYWs7DQo+ICsNCj4gKyAgY2FzZSBRVUVTVElPTl9ESVNDQVJEX0VYSVQ6 DQo+ICsgICAgKkFjdGlvblJlcXVlc3QgPSBFRklfQlJPV1NFUl9BQ1RJT05fUkVRVUVTVF9GT1JN X0RJU0NBUkRfRVhJVDsNCj4gKyAgICBicmVhazsNCj4gKw0KPiArICBkZWZhdWx0Og0KPiArICAg IGJyZWFrOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiAr DQo+ICsNCj4gKy8qKg0KPiArICBRdWVyeSBhbmQgc2F2ZSBhbGwgcmVzb2x1dGlvbnMgc3VwcG9y dGVkIGJ5IHRoZSBHT1AuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgR29wICAgICAgICAgIFRoZSBH cmFwaGljcyBPdXRwdXQgUHJvdG9jb2wgaW5zdGFuY2UgdG8gcXVlcnkuDQo+ICsNCj4gKyAgQHBh cmFtW291dF0gTnVtR29wTW9kZXMgIFRoZSBudW1iZXIgb2YgbW9kZXMgc3VwcG9ydGVkIGJ5IHRo ZSBHT1AuDQo+IE9uIG91dHB1dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMg cGFyYW1ldGVyIHdpbGwgYmUgcG9zaXRpdmUuDQo+ICsNCj4gKyAgQHBhcmFtW291dF0gR29wTW9k ZXMgICAgIE9uIG91dHB1dCwgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkNCj4gY29udGFp bmluZw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlc29sdXRpb25zIHJldHVy bmVkIGJ5IHRoZSBHT1AuIFRoZSBjYWxsZXIgaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBhcnJheSBhZnRlciB1c2UuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgTm8gbW9kZXMgZm91bmQuDQo+ICsgIEBy ZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIEZhaWxlZCB0byBhbGxvY2F0ZSBHb3BNb2Rlcy4N Cj4gKyAgQHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgY29kZXMgZnJvbSBHb3At PlF1ZXJ5TW9kZSgpLg0KPiArDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtRdWVyeUdvcE1vZGVzICgNCj4gKyAgSU4gIEVGSV9HUkFQSElDU19PVVRQVVRf UFJPVE9DT0wgKkdvcCwNCj4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgKk51 bUdvcE1vZGVzLA0KPiArICBPVVQgR09QX01PREUgICAgICAgICAgICAgICAgICAgICAqKkdvcE1v ZGVzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ICsgIFVJTlQzMiAg ICAgTW9kZU51bWJlcjsNCj4gKw0KPiArICBpZiAoR29wLT5Nb2RlLT5NYXhNb2RlID09IDApIHsN Cj4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiArICB9DQo+ICsgICpOdW1Hb3BNb2Rl cyA9IEdvcC0+TW9kZS0+TWF4TW9kZTsNCj4gKw0KPiArICAqR29wTW9kZXMgPSBBbGxvY2F0ZVBv b2wgKEdvcC0+TW9kZS0+TWF4TW9kZSAqIHNpemVvZiAqKkdvcE1vZGVzKTsNCj4gKyAgaWYgKCpH b3BNb2RlcyA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0K PiArICB9DQo+ICsNCj4gKyAgZm9yIChNb2RlTnVtYmVyID0gMDsgTW9kZU51bWJlciA8IEdvcC0+ TW9kZS0+TWF4TW9kZTsNCj4gKytNb2RlTnVtYmVyKSB7DQo+ICsgICAgRUZJX0dSQVBISUNTX09V VFBVVF9NT0RFX0lORk9STUFUSU9OICpJbmZvOw0KPiArICAgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTaXplT2ZJbmZvOw0KPiArDQo+ICsgICAgU3RhdHVzID0gR29wLT5R dWVyeU1vZGUgKEdvcCwgTW9kZU51bWJlciwgJlNpemVPZkluZm8sICZJbmZvKTsNCj4gKyAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBnb3RvIEZyZWVHb3BNb2RlczsNCj4g KyAgICB9DQo+ICsNCj4gKyAgICAoKkdvcE1vZGVzKVtNb2RlTnVtYmVyXS5YID0gSW5mby0+SG9y aXpvbnRhbFJlc29sdXRpb247DQo+ICsgICAgKCpHb3BNb2RlcylbTW9kZU51bWJlcl0uWSA9IElu Zm8tPlZlcnRpY2FsUmVzb2x1dGlvbjsNCj4gKyAgICBGcmVlUG9vbCAoSW5mbyk7DQo+ICsgIH0N Cj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsNCj4gK0ZyZWVHb3BNb2RlczoNCj4g KyAgRnJlZVBvb2wgKCpHb3BNb2Rlcyk7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30N Cj4gKw0KPiArDQo+ICsvKioNCj4gKyAgQ3JlYXRlIGEgc2V0IG9mICJvbmUtb2YtbWFueSIgKGll LiAiZHJvcCBkb3duIGxpc3QiKSBvcHRpb24gSUZSIG9wY29kZXMsDQo+ICsgIGJhc2VkIG9uIGF2 YWlsYWJsZSBHT1AgcmVzb2x1dGlvbnMsIHRvIGJlIHBsYWNlZCB1bmRlciBhICJvbmUtb2YtbWFu eSIgKGllLg0KPiArICAiZHJvcCBkb3duIGxpc3QiKSBvcGNvZGUuDQo+ICsNCj4gKyAgQHBhcmFt W2luXSAgUGFja2FnZUxpc3QgICBUaGUgcGFja2FnZSBsaXN0IHdpdGggdGhlIGZvcm1zZXQgYW5k IGZvcm0gZm9yDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdGhlIGRyb3Ag ZG93biBvcHRpb25zIGFyZSBwcm9kdWNlZC4gT3B0aW9uDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmFtZXMgYXJlIGFkZGVkIGFzIG5ldyBzdHJpbmdzIHRvIFBhY2thZ2VMaXN0Lg0K PiArDQo+ICsgIEBwYXJhbVtvdXRdIE9wQ29kZUJ1ZmZlciAgT24gb3V0cHV0LCBhIGR5bmFtaWNh bGx5IGFsbG9jYXRlZCBvcGNvZGUNCj4gYnVmZmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2l0aCBkcm9wIGRvd24gbGlzdCBvcHRpb25zIGNvcnJlc3BvbmRpbmcgdG8gR09QDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x1dGlvbnMuIFRoZSBjYWxsZXIgaXMg cmVzcG9uc2libGUgZm9yIGZyZWVpbmcNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBP cENvZGVCdWZmZXIgd2l0aCBIaWlGcmVlT3BDb2RlSGFuZGxlKCkgYWZ0ZXIgdXNlLg0KPiArDQo+ ICsgIEBwYXJhbVtpbl0gIE51bUdvcE1vZGVzICAgTnVtYmVyIG9mIGVudHJpZXMgaW4gR29wTW9k ZXMuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgR29wTW9kZXMgICAgICBBcnJheSBvZiByZXNvbHV0 aW9ucyByZXRyaWV2ZWQgZnJvbSB0aGUgR09QLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0VT UyAgT3Bjb2RlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHByb2R1Y2VkLg0KPiArDQo+ICsgIEBy ZXR1cm4gICAgICAgICAgICAgU3RhdHVzIGNvZGVzIGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMu IFBhY2thZ2VMaXN0IG1heQ0KPiArICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYmVlbiBleHRl bmRlZCB3aXRoIG5ldyBzdHJpbmdzLiBPcENvZGVCdWZmZXIgaXMNCj4gKyAgICAgICAgICAgICAg ICAgICAgICB1bmNoYW5nZWQuDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtDcmVhdGVSZXNvbHV0aW9uT3B0aW9ucyAoDQo+ICsgIElOICBFRklfSElJX0hB TkRMRSAgKlBhY2thZ2VMaXN0LA0KPiArICBPVVQgVk9JRCAgICAgICAgICAgICoqT3BDb2RlQnVm ZmVyLA0KPiArICBJTiAgVUlOVE4gICAgICAgICAgIE51bUdvcE1vZGVzLA0KPiArICBJTiAgR09Q X01PREUgICAgICAgICpHb3BNb2Rlcw0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgU3Rh dHVzOw0KPiArICBWT0lEICAgICAgICpPdXRwdXRCdWZmZXI7DQo+ICsgIFVJTlROICAgICAgTW9k ZU51bWJlcjsNCj4gKw0KPiArICBPdXRwdXRCdWZmZXIgPSBIaWlBbGxvY2F0ZU9wQ29kZUhhbmRs ZSAoKTsNCj4gKyAgaWYgKE91dHB1dEJ1ZmZlciA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIEVG SV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICB9DQo+ICsNCj4gKyAgZm9yIChNb2RlTnVtYmVyID0g MDsgTW9kZU51bWJlciA8IE51bUdvcE1vZGVzOyArK01vZGVOdW1iZXIpIHsNCj4gKyAgICBDSEFS MTYgICAgICAgIERlc2NbTUFYU0laRV9SRVNfQ1VSXTsNCj4gKyAgICBFRklfU1RSSU5HX0lEIE5l d1N0cmluZzsNCj4gKyAgICBWT0lEICAgICAgICAgICpPcENvZGU7DQo+ICsNCj4gKyAgICBVbmlj b2RlU1ByaW50QXNjaWlGb3JtYXQgKERlc2MsIHNpemVvZiBEZXNjLCAiJUxkeCVMZCIsDQo+ICsg ICAgICAoSU5UNjQpIEdvcE1vZGVzW01vZGVOdW1iZXJdLlgsIChJTlQ2NCkNCj4gR29wTW9kZXNb TW9kZU51bWJlcl0uWSk7DQo+ICsgICAgTmV3U3RyaW5nID0gSGlpU2V0U3RyaW5nIChQYWNrYWdl TGlzdCwgMCAvKiBuZXcgc3RyaW5nICovLCBEZXNjLA0KPiArICAgICAgICAgICAgICAgICAgTlVM TCAvKiBmb3IgYWxsIGxhbmd1YWdlcyAqLyk7DQo+ICsgICAgaWYgKE5ld1N0cmluZyA9PSAwKSB7 DQo+ICsgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gKyAgICAgIGdvdG8g RnJlZU91dHB1dEJ1ZmZlcjsNCj4gKyAgICB9DQo+ICsgICAgT3BDb2RlID0gSGlpQ3JlYXRlT25l T2ZPcHRpb25PcENvZGUgKE91dHB1dEJ1ZmZlciwgTmV3U3RyaW5nLA0KPiArICAgICAgICAgICAg ICAgMCAvKiBGbGFncyAqLywgRUZJX0lGUl9OVU1FUklDX1NJWkVfNCwgTW9kZU51bWJlcik7DQo+ ICsgICAgaWYgKE9wQ29kZSA9PSBOVUxMKSB7DQo+ICsgICAgICBTdGF0dXMgPSBFRklfT1VUX09G X1JFU09VUkNFUzsNCj4gKyAgICAgIGdvdG8gRnJlZU91dHB1dEJ1ZmZlcjsNCj4gKyAgICB9DQo+ ICsgIH0NCj4gKw0KPiArICAqT3BDb2RlQnVmZmVyID0gT3V0cHV0QnVmZmVyOw0KPiArICByZXR1 cm4gRUZJX1NVQ0NFU1M7DQo+ICsNCj4gK0ZyZWVPdXRwdXRCdWZmZXI6DQo+ICsgIEhpaUZyZWVP cENvZGVIYW5kbGUgKE91dHB1dEJ1ZmZlcik7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4g K30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgUG9wdWxhdGUgdGhlIGZvcm0gaWRlbnRpZmllZCBi eSB0aGUgKFBhY2thZ2VMaXN0LCBGb3JtU2V0R3VpZCwgRm9ybUlkKQ0KPiArICB0cmlwbGV0Lg0K PiArDQo+ICsgIFRoZSBkcm9wIGRvd24gbGlzdCBvZiB2aWRlbyByZXNvbHV0aW9ucyBpcyBnZW5l cmF0ZWQgZnJvbSAoTnVtR29wTW9kZXMsDQo+ICsgIEdvcE1vZGVzKS4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNFU1MgIEZvcm0gc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuDQo+ICsgIEByZXR1cm4g ICAgICAgICAgICAgU3RhdHVzIGNvZGVzIGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMuDQo+ICsN Cj4gKyoqLw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1BvcHVsYXRl Rm9ybSAoDQo+ICsgIElOICBFRklfSElJX0hBTkRMRSAgKlBhY2thZ2VMaXN0LA0KPiArICBJTiAg RUZJX0dVSUQgICAgICAgICpGb3JtU2V0R3VpZCwNCj4gKyAgSU4gIEVGSV9GT1JNX0lEICAgICBG b3JtSWQsDQo+ICsgIElOICBVSU5UTiAgICAgICAgICAgTnVtR29wTW9kZXMsDQo+ICsgIElOICBH T1BfTU9ERSAgICAgICAgKkdvcE1vZGVzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAg ICAgICAgIFN0YXR1czsNCj4gKyAgVk9JRCAgICAgICAgICAgICAgICpPcENvZGVCdWZmZXI7DQo+ ICsgIFZPSUQgICAgICAgICAgICAgICAqT3BDb2RlOw0KPiArICBFRklfSUZSX0dVSURfTEFCRUwg KkFuY2hvcjsNCj4gKyAgVk9JRCAgICAgICAgICAgICAgICpPcENvZGVCdWZmZXIyOw0KPiArDQo+ ICsgIE9wQ29kZUJ1ZmZlcjIgPSBOVUxMOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIDEuIEFsbG9j YXRlIGFuIGVtcHR5IG9wY29kZSBidWZmZXIuDQo+ICsgIC8vDQo+ICsgIE9wQ29kZUJ1ZmZlciA9 IEhpaUFsbG9jYXRlT3BDb2RlSGFuZGxlICgpOw0KPiArICBpZiAoT3BDb2RlQnVmZmVyID09IE5V TEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgIH0NCj4gKw0K PiArICAvLw0KPiArICAvLyAyLiBDcmVhdGUgYSBsYWJlbCBvcGNvZGUgKHdoaWNoIGlzIGEgVGlh bm8gZXh0ZW5zaW9uKSBpbnNpZGUgdGhlIGJ1ZmZlci4NCj4gKyAgLy8gVGhlIGxhYmVsJ3MgbnVt YmVyIG11c3QgbWF0Y2ggdGhlICJhbmNob3IiIGxhYmVsIGluIHRoZSBmb3JtLg0KPiArICAvLw0K PiArICBPcENvZGUgPSBIaWlDcmVhdGVHdWlkT3BDb2RlIChPcENvZGVCdWZmZXIsICZnRWZpSWZy VGlhbm9HdWlkLA0KPiArICAgICAgICAgICAgIE5VTEwgLyogb3B0aW9uYWwgY29weSBvcmlnaW4g Ki8sIHNpemVvZiAqQW5jaG9yKTsNCj4gKyAgaWYgKE9wQ29kZSA9PSBOVUxMKSB7DQo+ICsgICAg U3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgICAgZ290byBGcmVlT3BDb2RlQnVm ZmVyOw0KPiArICB9DQo+ICsgIEFuY2hvciAgICAgICAgICAgICAgID0gT3BDb2RlOw0KPiArICBB bmNob3ItPkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09QX0xBQkVMOw0KPiArICBBbmNo b3ItPk51bWJlciAgICAgICA9IExBQkVMX1JFU19ORVhUOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8v IDMuIENyZWF0ZSB0aGUgb3Bjb2RlcyBpbnNpZGUgdGhlIGJ1ZmZlciB0aGF0IGFyZSB0byBiZSBp bnNlcnRlZCBpbnRvIHRoZQ0KPiArICAvLyBmb3JtLg0KPiArICAvLw0KPiArICAvLyAzLjEuIEdl dCBhIGxpc3Qgb2YgcmVzb2x1dGlvbnMuDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IENyZWF0ZVJl c29sdXRpb25PcHRpb25zIChQYWNrYWdlTGlzdCwgJk9wQ29kZUJ1ZmZlcjIsDQo+ICsgICAgICAg ICAgICAgTnVtR29wTW9kZXMsIEdvcE1vZGVzKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiArICAgIGdvdG8gRnJlZU9wQ29kZUJ1ZmZlcjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIDMuMi4gQ3JlYXRlIGEgb25lLW9mLW1hbnkgcXVlc3Rpb24gd2l0aCB0aGUgYWJv dmUgb3B0aW9ucy4NCj4gKyAgLy8NCj4gKyAgT3BDb2RlID0gSGlpQ3JlYXRlT25lT2ZPcENvZGUg KA0KPiArICAgICAgICAgICAgIE9wQ29kZUJ1ZmZlciwgICAgICAgICAgICAgICAgICAgICAgICAv LyBjcmVhdGUgb3Bjb2RlIGluc2lkZSB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgb3Bjb2RlIGJ1ZmZlciwNCj4gKyAgICAgICAg ICAgICBRVUVTVElPTl9SRVNfTkVYVCwgICAgICAgICAgICAgICAgICAgLy8gSUQgb2YgcXVlc3Rp b24sDQo+ICsgICAgICAgICAgICAgRk9STVNUQVRFSURfTUFJTl9GT1JNLCAgICAgICAgICAgICAg IC8vIGlkZW50aWZpZXMgZm9ybSBzdGF0ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN0b3JhZ2UsDQo+ICsgICAgICAgICAgICAgKFVJ TlQxNikgT0ZGU0VUX09GIChNQUlOX0ZPUk1fU1RBVEUsIC8vIHZhbHVlIG9mIHF1ZXN0aW9uIHN0 b3JlZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTmV4dFByZWZlcnJlZFJlc29sdXRpb24p LCAvLyAgIGF0IHRoaXMgb2Zmc2V0LA0KPiArICAgICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RS X1JFU19ORVhUKSwgICAgICAgICAvLyBQcm9tcHQsDQo+ICsgICAgICAgICAgICAgU1RSSU5HX1RP S0VOIChTVFJfUkVTX05FWFRfSEVMUCksICAgIC8vIEhlbHAsDQo+ICsgICAgICAgICAgICAgMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFF1ZXN0aW9uRmxhZ3MsDQo+ICsg ICAgICAgICAgICAgRUZJX0lGUl9OVU1FUklDX1NJWkVfNCwgICAgICAgICAgICAgIC8vIHNlZSBz aXplb2YNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gICBOZXh0UHJlZmVycmVkUmVzb2x1dGlvbiwNCj4gKyAgICAgICAgICAgICBPcENvZGVC dWZmZXIyLCAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHdpdGggcG9zc2libGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBj aG9pY2VzLA0KPiArICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBERUZBVUxUIG9wY29kZXMNCj4gKyAgICAgICAgICAgICApOw0KPiArICBpZiAoT3BD b2RlID09IE5VTEwpIHsNCj4gKyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4g KyAgICBnb3RvIEZyZWVPcENvZGVCdWZmZXIyOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gNC4gVXBkYXRlIHRoZSBmb3JtIHdpdGggdGhlIG9wY29kZSBidWZmZXIuDQo+ICsgIC8vDQo+ ICsgIFN0YXR1cyA9IEhpaVVwZGF0ZUZvcm0gKFBhY2thZ2VMaXN0LCBGb3JtU2V0R3VpZCwgRm9y bUlkLA0KPiArICAgICAgICAgICAgIE9wQ29kZUJ1ZmZlciwgLy8gYnVmZmVyIHdpdGggaGVhZCBh bmNob3IsIGFuZCBuZXcgY29udGVudHMgdG8gYmUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIGluc2VydGVkIGF0IGl0DQo+ICsgICAgICAgICAgICAgTlVMTCAgICAgICAgICAvLyBi dWZmZXIgd2l0aCB0YWlsIGFuY2hvciwgZm9yIGRlbGV0aW5nIG9sZA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gY29udGVudHMgdXAgdG8gaXQNCj4gKyAgICAgICAgICAgICApOw0K PiArDQo+ICtGcmVlT3BDb2RlQnVmZmVyMjoNCj4gKyAgSGlpRnJlZU9wQ29kZUhhbmRsZSAoT3BD b2RlQnVmZmVyMik7DQo+ICsNCj4gK0ZyZWVPcENvZGVCdWZmZXI6DQo+ICsgIEhpaUZyZWVPcENv ZGVIYW5kbGUgKE9wQ29kZUJ1ZmZlcik7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30N Cj4gKw0KPiArDQo+ICsvKioNCj4gKyAgTG9hZCBhbmQgZXhlY3V0ZSB0aGUgcGxhdGZvcm0gY29u ZmlndXJhdGlvbi4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgQ29u ZmlndXJhdGlvbiBsb2FkZWQgYW5kIGV4ZWN1dGVkLg0KPiArICBAcmV0dXJuICAgICAgICAgICAg ICAgICAgICAgICAgU3RhdHVzIGNvZGVzIGZyb20gUGxhdGZvcm1Db25maWdMb2FkKCkuDQo+ICsq Ki8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtFeGVjdXRlUGxhdGZv cm1Db25maWcgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAg IFN0YXR1czsNCj4gKyAgUExBVEZPUk1fQ09ORklHIFBsYXRmb3JtQ29uZmlnOw0KPiArICBVSU5U NjQgICAgICAgICAgT3B0aW9uYWxFbGVtZW50czsNCj4gKw0KPiArICBTdGF0dXMgPSBQbGF0Zm9y bUNvbmZpZ0xvYWQgKCZQbGF0Zm9ybUNvbmZpZywgJk9wdGlvbmFsRWxlbWVudHMpOw0KPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKCgoU3RhdHVzID09IEVGSV9O T1RfRk9VTkQpID8gRUZJX0RfVkVSQk9TRSA6IEVGSV9EX0VSUk9SLA0KPiArICAgICAgIiVhOiBm YWlsZWQgdG8gbG9hZCBwbGF0Zm9ybSBjb25maWc6ICVyXG4iLCBfX0ZVTkNUSU9OX18sIFN0YXR1 cykpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoT3B0aW9u YWxFbGVtZW50cyAmIFBMQVRGT1JNX0NPTkZJR19GX0dSQVBISUNTX1JFU09MVVRJT04pIHsNCj4g KyAgICAvLw0KPiArICAgIC8vIFBhc3MgdGhlIHByZWZlcnJlZCByZXNvbHV0aW9uIHRvIEdyYXBo aWNzQ29uc29sZUR4ZSB2aWEgZHluYW1pYyBQQ0RzLg0KPiArICAgIC8vDQo+ICsgICAgUGNkU2V0 MzIgKFBjZFZpZGVvSG9yaXpvbnRhbFJlc29sdXRpb24sDQo+ICsgICAgICBQbGF0Zm9ybUNvbmZp Zy5Ib3Jpem9udGFsUmVzb2x1dGlvbik7DQo+ICsgICAgUGNkU2V0MzIgKFBjZFZpZGVvVmVydGlj YWxSZXNvbHV0aW9uLA0KPiArICAgICAgUGxhdGZvcm1Db25maWcuVmVydGljYWxSZXNvbHV0aW9u KTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiAr DQo+ICsvKioNCj4gKyAgTm90aWZpY2F0aW9uIGNhbGxiYWNrIGZvciBHT1AgaW50ZXJmYWNlIGlu c3RhbGxhdGlvbi4NCj4gKw0KPiArICBAcGFyYW1baW5dIEV2ZW50ICAgIEV2ZW50IHdob3NlIG5v dGlmaWNhdGlvbiBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkLg0KPiArDQo+ICsgIEBwYXJhbVtp bl0gQ29udGV4dCAgVGhlIHBvaW50ZXIgdG8gdGhlIG5vdGlmaWNhdGlvbiBmdW5jdGlvbidzIGNv bnRleHQsIHdoaWNoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgaXMgaW1wbGVtZW50YXRpb24t ZGVwZW5kZW50Lg0KPiArKiovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArR29w SW5zdGFsbGVkICgNCj4gKyAgSU4gRUZJX0VWRU5UIEV2ZW50LA0KPiArICBJTiBWT0lEICAgICAg KkNvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg IFN0YXR1czsNCj4gKyAgRUZJX0dSQVBISUNTX09VVFBVVF9QUk9UT0NPTCAqR29wOw0KPiArDQo+ ICsgIEFTU0VSVCAoRXZlbnQgPT0gbUdvcEV2ZW50KTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBD aGVjayBmdXJ0aGVyIEdPUHMuDQo+ICsgIC8vDQo+ICsgIGZvciAoOzspIHsNCj4gKyAgICBtTnVt R29wTW9kZXMgPSAwOw0KPiArICAgIG1Hb3BNb2RlcyA9IE5VTEw7DQo+ICsNCj4gKyAgICBTdGF0 dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgmZ0VmaUdyYXBoaWNzT3V0cHV0UHJvdG9jb2xHdWlk LA0KPiBtR29wVHJhY2tlciwNCj4gKyAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZHb3Ap Ow0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIHJldHVybjsNCj4g KyAgICB9DQo+ICsNCj4gKyAgICBTdGF0dXMgPSBRdWVyeUdvcE1vZGVzIChHb3AsICZtTnVtR29w TW9kZXMsICZtR29wTW9kZXMpOw0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g KyAgICAgIGNvbnRpbnVlOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFN0YXR1cyA9IFBvcHVsYXRl Rm9ybSAobUluc3RhbGxlZFBhY2thZ2VzLA0KPiAmZ1NpbWljc1g1OFBsYXRmb3JtQ29uZmlnR3Vp ZCwNCj4gKyAgICAgICAgICAgICAgIEZPUk1JRF9NQUlOX0ZPUk0sIG1OdW1Hb3BNb2RlcywgbUdv cE1vZGVzKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBGcmVl UG9vbCAobUdvcE1vZGVzKTsNCj4gKyAgICAgIGNvbnRpbnVlOw0KPiArICAgIH0NCj4gKw0KPiAr ICAgIGJyZWFrOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gU3VjY2VzcyAtLSBzbyB1 bmluc3RhbGwgdGhpcyBjYWxsYmFjay4gQ2xvc2luZyB0aGUgZXZlbnQgcmVtb3ZlcyBhbGwNCj4g KyAgLy8gcGVuZGluZyBub3RpZmljYXRpb25zIGFuZCBhbGwgcHJvdG9jb2wgcmVnaXN0cmF0aW9u cy4NCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gZ0JTLT5DbG9zZUV2ZW50IChtR29wRXZlbnQpOw0K PiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArICBtR29wRXZlbnQgPSBOVUxMOw0K PiArICBtR29wVHJhY2tlciA9IE5VTEw7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIEVu dHJ5IHBvaW50IGZvciB0aGlzIGRyaXZlci4NCj4gKw0KPiArICBAcGFyYW1baW5dIEltYWdlSGFu ZGxlICBJbWFnZSBoYW5kbGUgb2YgdGhpcyBkcml2ZXIuDQo+ICsgIEBwYXJhbVtpbl0gU3lzdGVt VGFibGUgIFBvaW50ZXIgdG8gU3lzdGVtVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VD RVNTICAgICAgICAgICAgRHJpdmVyIGhhcyBsb2FkZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0 dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBGYWlsZWQgdG8gaW5zdGFsbCBISUkgcGFja2FnZXMu DQo+ICsgIEByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgIEVycm9yIGNvZGVzIGZyb20gbG93 ZXIgbGV2ZWwgZnVuY3Rpb25zLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQ SQ0KPiArUGxhdGZvcm1Jbml0ICgNCj4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFu ZGxlLA0KPiArICBJTiAgRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ICsgICkNCj4g K3sNCj4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ICsNCj4gKyAgRXhlY3V0ZVBsYXRmb3JtQ29u ZmlnICgpOw0KPiArDQo+ICsgIG1Db25maWdBY2Nlc3MuRXh0cmFjdENvbmZpZyA9ICZFeHRyYWN0 Q29uZmlnOw0KPiArICBtQ29uZmlnQWNjZXNzLlJvdXRlQ29uZmlnICAgPSAmUm91dGVDb25maWc7 DQo+ICsgIG1Db25maWdBY2Nlc3MuQ2FsbGJhY2sgICAgICA9ICZDYWxsYmFjazsNCj4gKw0KPiAr ICAvLw0KPiArICAvLyBEZWNsYXJlIG91cnNlbHZlcyBzdWl0YWJsZSBmb3IgSElJIGNvbW11bmlj YXRpb24uDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IGdCUy0+SW5zdGFsbE11bHRpcGxlUHJvdG9j b2xJbnRlcmZhY2VzICgmSW1hZ2VIYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAmZ0VmaURl dmljZVBhdGhQcm90b2NvbEd1aWQsICAgICAgJm1Qa2dEZXZpY2VQYXRoLA0KPiArICAgICAgICAg ICAgICAgICAgJmdFZmlIaWlDb25maWdBY2Nlc3NQcm90b2NvbEd1aWQsICZtQ29uZmlnQWNjZXNz LA0KPiArICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gUHVibGlzaCB0aGUgSElJIHBhY2thZ2UgbGlzdCB0byBISUkgRGF0YWJhc2UuDQo+ICsgIC8v DQo+ICsgIG1JbnN0YWxsZWRQYWNrYWdlcyA9IEhpaUFkZFBhY2thZ2VzICgNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAmZ0VmaUNhbGxlcklkR3VpZCwgIC8vIFBhY2thZ2VMaXN0R3VpZA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLCAgICAgICAgLy8gYXNzb2Np YXRlZCBEZXZpY2VIYW5kbGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUR4 ZVN0cmluZ3MsIC8vIDFzdCBwYWNrYWdlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUGxh dGZvcm1Gb3Jtc0JpbiwgICAvLyAybmQgcGFja2FnZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwgICAgICAgICAgICAgICAgLy8gdGVybWluYXRvcg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQo+ICsgIGlmIChtSW5zdGFsbGVkUGFja2FnZXMgPT0gTlVMTCkgew0KPiAr ICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICAgIGdvdG8gVW5pbnN0YWxs UHJvdG9jb2xzOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAo RVZUX05PVElGWV9TSUdOQUwsIFRQTF9DQUxMQkFDSywNCj4gJkdvcEluc3RhbGxlZCwNCj4gKyAg ICAgICAgICAgICAgICAgIE5VTEwgLyogQ29udGV4dCAqLywgJm1Hb3BFdmVudCk7DQo+ICsgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBnb3RvIFJlbW92ZVBhY2thZ2VzOw0KPiAr ICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gZ0JTLT5SZWdpc3RlclByb3RvY29sTm90aWZ5ICgmZ0Vm aUdyYXBoaWNzT3V0cHV0UHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgbUdvcEV2 ZW50LCAmbUdvcFRyYWNrZXIpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsg ICAgZ290byBDbG9zZUdvcEV2ZW50Ow0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2hl Y2sgYWxyZWFkeSBpbnN0YWxsZWQgR09Qcy4NCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gZ0JTLT5T aWduYWxFdmVudCAobUdvcEV2ZW50KTsNCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsN Cj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsNCj4gK0Nsb3NlR29wRXZlbnQ6DQo+ ICsgIGdCUy0+Q2xvc2VFdmVudCAobUdvcEV2ZW50KTsNCj4gKw0KPiArUmVtb3ZlUGFja2FnZXM6 DQo+ICsgIEhpaVJlbW92ZVBhY2thZ2VzIChtSW5zdGFsbGVkUGFja2FnZXMpOw0KPiArDQo+ICtV bmluc3RhbGxQcm90b2NvbHM6DQo+ICsgIGdCUy0+VW5pbnN0YWxsTXVsdGlwbGVQcm90b2NvbElu dGVyZmFjZXMgKEltYWdlSGFuZGxlLA0KPiArICAgICAgICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9j b2xHdWlkLCAgICAgICZtUGtnRGV2aWNlUGF0aCwNCj4gKyAgICAgICAgICZnRWZpSGlpQ29uZmln QWNjZXNzUHJvdG9jb2xHdWlkLCAmbUNvbmZpZ0FjY2VzcywNCj4gKyAgICAgICAgIE5VTEwpOw0K PiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgVW5sb2FkIHRoZSBk cml2ZXIuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgSW1hZ2VIYW5kbGUgIEhhbmRsZSB0aGF0IGlk ZW50aWZpZXMgdGhlIGltYWdlIHRvIGV2aWN0Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgIFRoZSBpbWFnZSBoYXMgYmVlbiB1bmxvYWRlZC4NCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0K PiArRUZJQVBJDQo+ICtQbGF0Zm9ybVVubG9hZCAoDQo+ICsgIElOICBFRklfSEFORExFICBJbWFn ZUhhbmRsZQ0KPiArICApDQo+ICt7DQo+ICsgIGlmIChtR29wRXZlbnQgPT0gTlVMTCkgew0KPiAr ICAgIC8vDQo+ICsgICAgLy8gVGhlIEdPUCBjYWxsYmFjayByYW4gc3VjY2Vzc2Z1bGx5IGFuZCB1 bnJlZ2lzdGVyZWQgaXRzZWxmLiBSZWxlYXNlIHRoZQ0KPiArICAgIC8vIHJlc291cmNlcyBhbGxv Y2F0ZWQgdGhlcmUuDQo+ICsgICAgLy8NCj4gKyAgICBBU1NFUlQgKG1Hb3BNb2RlcyAhPSBOVUxM KTsNCj4gKyAgICBGcmVlUG9vbCAobUdvcE1vZGVzKTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICAv Lw0KPiArICAgIC8vIE90aGVyd2lzZSB3ZSBuZWVkIHRvIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNr Lg0KPiArICAgIC8vDQo+ICsgICAgQVNTRVJUIChtR29wTW9kZXMgPT0gTlVMTCk7DQo+ICsgICAg Z0JTLT5DbG9zZUV2ZW50IChtR29wRXZlbnQpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gUmVsZWFzZSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IHRoZSBlbnRyeSBwb2ludC4NCj4gKyAg Ly8NCj4gKyAgSGlpUmVtb3ZlUGFja2FnZXMgKG1JbnN0YWxsZWRQYWNrYWdlcyk7DQo+ICsgIGdC Uy0+VW5pbnN0YWxsTXVsdGlwbGVQcm90b2NvbEludGVyZmFjZXMgKEltYWdlSGFuZGxlLA0KPiAr ICAgICAgICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLCAgICAgICZtUGtnRGV2aWNlUGF0 aCwNCj4gKyAgICAgICAgICZnRWZpSGlpQ29uZmlnQWNjZXNzUHJvdG9jb2xHdWlkLCAmbUNvbmZp Z0FjY2VzcywNCj4gKyAgICAgICAgIE5VTEwpOw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxh dGZvcm1EeGUvUGxhdGZvcm1Db25maWcuYw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUNvbmZpZy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmIzYjJiMzQwNjQNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZv cm1Db25maWcuYw0KPiBAQCAtMCwwICsxLDEyMyBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFV0aWxp dHkgZnVuY3Rpb25zIGZvciBzZXJpYWxpemluZyAocGVyc2lzdGVudGx5IHN0b3JpbmcpIGFuZCBk ZXNlcmlhbGl6aW5nDQo+ICsgIE9WTUYncyBwbGF0Zm9ybSBjb25maWd1cmF0aW9uLg0KPiArDQo+ ICsgIENvcHlyaWdodCAoQykgMjAxNCwgUmVkIEhhdCwgSW5jLg0KPiArDQo+ICsgIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVi dWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlS dW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0KPiArI2luY2x1ZGUgPEd1aWQvU2ltaWNzWDU4UGxh dGZvcm1Db25maWcuaD4NCj4gKw0KPiArI2luY2x1ZGUgIlBsYXRmb3JtQ29uZmlnLmgiDQo+ICsN Cj4gKy8vDQo+ICsvLyBOYW1lIG9mIHRoZSBVRUZJIHZhcmlhYmxlIHRoYXQgd2UgdXNlIGZvciBw ZXJzaXN0ZW50IHN0b3JhZ2UuDQo+ICsvLw0KPiArU1RBVElDIENIQVIxNiBtVmFyaWFibGVOYW1l W10gPSBMIlBsYXRmb3JtQ29uZmlnIjsNCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgU2VyaWFsaXpl IGFuZCBwZXJzaXN0ZW50bHkgc2F2ZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uLg0KPiArDQo+ICsg IEBwYXJhbVtpbl0gUGxhdGZvcm1Db25maWcgIFRoZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHRv IHNlcmlhbGl6ZSBhbmQgc2F2ZS4NCj4gKw0KPiArICBAcmV0dXJuICBTdGF0dXMgY29kZXMgcmV0 dXJuZWQgYnkgZ1JULT5TZXRWYXJpYWJsZSgpLg0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtF RklBUEkNCj4gK1BsYXRmb3JtQ29uZmlnU2F2ZSAoDQo+ICsgIElOIFBMQVRGT1JNX0NPTkZJRyAq UGxhdGZvcm1Db25maWcNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBXZSBjb3VsZCBpbXBsZW1lbnQgYW55IGtpbmQgb2YgdHJhbnNs YXRpb24gaGVyZSwgYXMgcGFydCBvZiBzZXJpYWxpemF0aW9uLg0KPiArICAvLyBGb3IgZXhhbXBs ZSwgd2UgY291bGQgZXhwb3NlIHRoZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGluIHNlcGFyYXRl DQo+ICsgIC8vIHZhcmlhYmxlcyB3aXRoIGh1bWFuLXJlYWRhYmxlIGNvbnRlbnRzLCBhbGxvd2lu ZyBvdGhlciB0b29scyB0byBhY2Nlc3MNCj4gKyAgLy8gdGhlbSBtb3JlIGVhc2lseS4gRm9yIG5v dywganVzdCBzYXZlIGEgYmluYXJ5IGR1bXAuDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IGdSVC0+ U2V0VmFyaWFibGUgKG1WYXJpYWJsZU5hbWUsICZnU2ltaWNzWDU4UGxhdGZvcm1Db25maWdHdWlk LA0KPiArICAgICAgICAgICAgICAgICAgRUZJX1ZBUklBQkxFX05PTl9WT0xBVElMRSB8DQo+IEVG SV9WQVJJQUJMRV9CT09UU0VSVklDRV9BQ0NFU1MgfA0KPiArICAgICAgICAgICAgICAgICAgICBF RklfVkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MsDQo+ICsgICAgICAgICAgICAgICAgICBzaXplb2Yg KlBsYXRmb3JtQ29uZmlnLCBQbGF0Zm9ybUNvbmZpZyk7DQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIExvYWQgYW5kIGRlc2VyaWFsaXplIHBsYXRmb3Jt IGNvbmZpZ3VyYXRpb24uDQo+ICsNCj4gKyAgV2hlbiB0aGUgZnVuY3Rpb24gZmFpbHMsIG91dHB1 dCBwYXJhbWV0ZXJzIGFyZSBpbmRldGVybWluYXRlLg0KPiArDQo+ICsgIEBwYXJhbVtvdXRdIFBs YXRmb3JtQ29uZmlnICAgIFRoZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHRvIHJlY2VpdmUgdGhl DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZCBkYXRhLg0KPiArDQo+ ICsgIEBwYXJhbVtvdXRdIE9wdGlvbmFsRWxlbWVudHMgIFRoaXMgYml0bWFwIGRlc2NyaWJlcyB0 aGUgcHJlc2VuY2Ugb2YNCj4gb3B0aW9uYWwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uZmlndXJhdGlvbiBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBsb2FkZWQuDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBMQVRGT1JNX0NPTkZJR19GX0RPV05HUkFE RSBtZWFucyB0aGF0IHNvbWUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5r bm93biBlbGVtZW50cywgcHJlc2VudCBpbiB0aGUgd2lyZSBmb3JtYXQsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYmVlbiBpZ25vcmVkLg0KPiArDQo+ICsgIEByZXR2 YWwgIEVGSV9TVUNDRVNTICAgICAgICAgTG9hZGluZyAmIGRlc2VyaWFsaXphdGlvbiBzdWNjZXNz ZnVsLg0KPiArICBAcmV0dXJuICAgICAgICAgICAgICAgICAgICAgIEVycm9yIGNvZGVzIHJldHVy bmVkIGJ5IEdldFZhcmlhYmxlMigpLg0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkN Cj4gK1BsYXRmb3JtQ29uZmlnTG9hZCAoDQo+ICsgIE9VVCBQTEFURk9STV9DT05GSUcgKlBsYXRm b3JtQ29uZmlnLA0KPiArICBPVVQgVUlOVDY0ICAgICAgICAgICpPcHRpb25hbEVsZW1lbnRzDQo+ ICsgICkNCj4gK3sNCj4gKyAgVk9JRCAgICAgICAqRGF0YTsNCj4gKyAgVUlOVE4gICAgICBEYXRh U2l6ZTsNCj4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQW55 IHRyYW5zbGF0aW9uIGRvbmUgaW4gUGxhdGZvcm1Db25maWdTYXZlKCkgd291bGQgaGF2ZSB0byBi ZSBtaXJyb3JlZA0KPiArICAvLyBoZXJlLiBGb3Igbm93LCBqdXN0IGxvYWQgdGhlIGJpbmFyeSBk dW1wLg0KPiArICAvLw0KPiArICAvLyBWZXJzaW9uaW5nIG9mIHRoZSBiaW5hcnkgd2lyZSBmb3Jt YXQgaXMgaW1wbGVtZW50ZWQgYmFzZWQgb24gc2l6ZQ0KPiArICAvLyAob25seSBpbmNyZW1lbnRh bCBjaGFuZ2VzLCBpZS4gbmV3IGZpZWxkcyksIGFuZCBvbiBHVUlELg0KPiArICAvLyAoSW5jb21w YXRpYmxlIGNoYW5nZXMgcmVxdWlyZSBhIEdVSUQgY2hhbmdlLikNCj4gKyAgLy8NCj4gKyAgU3Rh dHVzID0gR2V0VmFyaWFibGUyIChtVmFyaWFibGVOYW1lLCAmZ1NpbWljc1g1OFBsYXRmb3JtQ29u ZmlnR3VpZCwNCj4gJkRhdGEsDQo+ICsgICAgICAgICAgICAgJkRhdGFTaXplKTsNCj4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4g Kw0KPiArICAqT3B0aW9uYWxFbGVtZW50cyA9IDA7DQo+ICsgIGlmIChEYXRhU2l6ZSA+IHNpemVv ZiAqUGxhdGZvcm1Db25maWcpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIEhhbmRsZSBmaXJtd2Fy ZSBkb3duZ3JhZGUgLS0ga2VlcCBvbmx5IGxlYWRpbmcgcGFydC4NCj4gKyAgICAvLw0KPiArICAg IENvcHlNZW0gKFBsYXRmb3JtQ29uZmlnLCBEYXRhLCBzaXplb2YgKlBsYXRmb3JtQ29uZmlnKTsN Cj4gKyAgICAqT3B0aW9uYWxFbGVtZW50cyB8PSBQTEFURk9STV9DT05GSUdfRl9ET1dOR1JBREU7 DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgQ29weU1lbSAoUGxhdGZvcm1Db25maWcsIERhdGEsIERh dGFTaXplKTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gSGFuZGxlIGZpcm13YXJlIHVwZ3Jh ZGUgLS0gemVybyBvdXQgbWlzc2luZyBmaWVsZHMuDQo+ICsgICAgLy8NCj4gKyAgICBaZXJvTWVt ICgoVUlOVDggKilQbGF0Zm9ybUNvbmZpZyArIERhdGFTaXplLA0KPiArICAgICAgc2l6ZW9mICpQ bGF0Zm9ybUNvbmZpZyAtIERhdGFTaXplKTsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8v IEJhc2VkIG9uIERhdGFTaXplLCByZXBvcnQgdGhlIG9wdGlvbmFsIGZlYXR1cmVzIHRoYXQgd2Ug cmVjb2duaXplLg0KPiArICAvLw0KPiArICBpZiAoRGF0YVNpemUgPj0gKE9GRlNFVF9PRiAoUExB VEZPUk1fQ09ORklHLCBWZXJ0aWNhbFJlc29sdXRpb24pICsNCj4gKyAgICAgICAgICAgICAgICAg ICBzaXplb2YgUGxhdGZvcm1Db25maWctPlZlcnRpY2FsUmVzb2x1dGlvbikpIHsNCj4gKyAgICAq T3B0aW9uYWxFbGVtZW50cyB8PSBQTEFURk9STV9DT05GSUdfRl9HUkFQSElDU19SRVNPTFVUSU9O Ow0KPiArICB9DQo+ICsNCj4gKyAgRnJlZVBvb2wgKERhdGEpOw0KPiArICByZXR1cm4gRUZJX1NV Q0NFU1M7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvUGxhdGZvcm1QZWkvQ21vcy5jDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwLi5mYTJjMjIxMTZjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYw0KPiBAQCAtMCww ICsxLDU3IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgUEMvQVQgQ01PUyBhY2Nlc3Mgcm91dGluZXMN Cj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDA5IEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSAiQ21vcy5o Ig0KPiArI2luY2x1ZGUgIkxpYnJhcnkvSW9MaWIuaCINCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRz IDgtYml0cyBvZiBDTU9TIGRhdGEuDQo+ICsNCj4gKyAgUmVhZHMgdGhlIDgtYml0cyBvZiBDTU9T IGRhdGEgYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSBJbmRleC4NCj4gKyAgVGhlIDgtYml0 IHJlYWQgdmFsdWUgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBJbmRleCAgVGhlIENN T1MgbG9jYXRpb24gdG8gcmVhZC4NCj4gKw0KPiArICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0K PiArDQo+ICsqKi8NCj4gK1VJTlQ4DQo+ICtFRklBUEkNCj4gK0Ntb3NSZWFkOCAoDQo+ICsgIElO ICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleA0KPiArICApDQo+ICt7DQo+ICsg IElvV3JpdGU4ICgweDcwLCAoVUlOVDgpIEluZGV4KTsNCj4gKyAgcmV0dXJuIElvUmVhZDggKDB4 NzEpOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBXcml0ZXMgOC1iaXRzIG9mIENNT1Mg ZGF0YS4NCj4gKw0KPiArICBXcml0ZXMgOC1iaXRzIG9mIENNT1MgZGF0YSB0byB0aGUgbG9jYXRp b24gc3BlY2lmaWVkIGJ5IEluZGV4DQo+ICsgIHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZCBieSBW YWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4NCj4gKw0KPiArICBAcGFyYW0gIEluZGV4ICBUaGUgQ01P UyBsb2NhdGlvbiB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBWYWx1ZSAgVGhlIHZhbHVlIHRvIHdy aXRlIHRvIENNT1MuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDTU9T Lg0KPiArDQo+ICsqKi8NCj4gK1VJTlQ4DQo+ICtFRklBUEkNCj4gK0Ntb3NXcml0ZTggKA0KPiAr ICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ICsgIElOICAgICAg VUlOVDggICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiArICApDQo+ICt7DQo+ICsgIElvV3Jp dGU4ICgweDcwLCAoVUlOVDgpIEluZGV4KTsNCj4gKyAgSW9Xcml0ZTggKDB4NzEsIFZhbHVlKTsN Cj4gKyAgcmV0dXJuIFZhbHVlOw0KPiArfQ0KPiArDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvRmVhdHVyZUNvbnRyb2wuYw0KPiBi L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9GZWF0dXJlQ29u dHJvbC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjY5MjQw NWU0MTcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvUGxhdGZvcm1QZWkvRmVhdHVyZUNvbnRyb2wuYw0KPiBAQCAtMCwwICsxLDExNCBA QA0KPiArLyoqIEBmaWxlDQo+ICsgIEluc3RhbGwgYSBjYWxsYmFjayB3aGVuIG5lY2Vzc2FyeSBm b3Igc2V0dGluZyB0aGUgRmVhdHVyZSBDb250cm9sIE1TUiBvbiBhbGwNCj4gKyAgcHJvY2Vzc29y cy4NCj4gKw0KPiArICBDb3B5cmlnaHQgKEMpIDIwMTYsIFJlZCBIYXQsIEluYy4NCj4gKw0KPiAr ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9QZWlTZXJ2aWNlc0xpYi5oPg0KPiArI2luY2x1ZGUgPFBwaS9NcFNlcnZpY2VzLmg+DQo+ICsj aW5jbHVkZSA8UmVnaXN0ZXIvSW50ZWwvTXNyL0NvcmUyTXNyLmg+DQo+ICsNCj4gKyNpbmNsdWRl ICJQbGF0Zm9ybS5oIg0KPiArDQo+ICsvLw0KPiArLy8gVGhlIHZhbHVlIHRvIGJlIHdyaXR0ZW4g dG8gdGhlIEZlYXR1cmUgQ29udHJvbCBNU1IsIHJldHJpZXZlZCBmcm9tIGZ3X2NmZy4NCj4gKy8v DQo+ICtTVEFUSUMgVUlOVDY0IG1GZWF0dXJlQ29udHJvbFZhbHVlID0gMHgwMDAwMDAwNTsNCj4g Kw0KPiArLyoqDQo+ICsgIFdyaXRlIHRoZSBGZWF0dXJlIENvbnRyb2wgTVNSIG9uIGFuIEFwcGxp Y2F0aW9uIFByb2Nlc3NvciBvciB0aGUgQm9vdA0KPiArICBQcm9jZXNzb3IuDQo+ICsNCj4gKyAg QWxsIEFQcyBleGVjdXRlIHRoaXMgZnVuY3Rpb24gaW4gcGFyYWxsZWwuIFRoZSBCU1AgZXhlY3V0 ZXMgdGhlIGZ1bmN0aW9uDQo+ICsgIHNlcGFyYXRlbHkuDQo+ICsNCj4gKyAgQHBhcmFtW2luLG91 dF0gV29ya1NwYWNlICBQb2ludGVyIHRvIHRoZSBpbnB1dC9vdXRwdXQgYXJndW1lbnQNCj4gd29y a3NwYWNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGJ5IGFsbCBwcm9j ZXNzb3JzLg0KPiArKiovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArV3JpdGVG ZWF0dXJlQ29udHJvbCAoDQo+ICsgIElOIE9VVCBWT0lEICpXb3JrU3BhY2UNCj4gKyAgKQ0KPiAr ew0KPiArICBBc21Xcml0ZU1zcjY0IChNU1JfQ09SRTJfRkVBVFVSRV9DT05UUk9MLCBtRmVhdHVy ZUNvbnRyb2xWYWx1ZSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBOb3RpZmljYXRpb24gZnVu Y3Rpb24gY2FsbGVkIHdoZW4gRUZJX1BFSV9NUF9TRVJWSUNFU19QUEkgYmVjb21lcw0KPiBhdmFp bGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQZWlTZXJ2aWNlcyAgICAgIEluZGlyZWN0IHJl ZmVyZW5jZSB0byB0aGUgUEVJIFNlcnZpY2VzIFRhYmxlLg0KPiArICBAcGFyYW1baW5dIE5vdGlm eURlc2NyaXB0b3IgQWRkcmVzcyBvZiB0aGUgbm90aWZpY2F0aW9uIGRlc2NyaXB0b3IgZGF0YQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLg0KPiArICBAcGFyYW1b aW5dIFBwaSAgICAgICAgICAgICAgQWRkcmVzcyBvZiB0aGUgUFBJIHRoYXQgd2FzIGluc3RhbGxl ZC4NCj4gKw0KPiArICBAcmV0dXJuICBTdGF0dXMgb2YgdGhlIG5vdGlmaWNhdGlvbi4gVGhlIHN0 YXR1cyBjb2RlIHJldHVybmVkIGZyb20gdGhpcw0KPiArICAgICAgICAgICBmdW5jdGlvbiBpcyBp Z25vcmVkLg0KPiArKiovDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiAr T25NcFNlcnZpY2VzQXZhaWxhYmxlICgNCj4gKyAgSU4gRUZJX1BFSV9TRVJWSUNFUyAgICAgICAg ICAgKipQZWlTZXJ2aWNlcywNCj4gKyAgSU4gRUZJX1BFSV9OT1RJRllfREVTQ1JJUFRPUiAgKk5v dGlmeURlc2NyaXB0b3IsDQo+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICpQcGkN Cj4gKyAgKQ0KPiArew0KPiArICBFRklfUEVJX01QX1NFUlZJQ0VTX1BQSSAqTXBTZXJ2aWNlczsN Cj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgU3RhdHVzOw0KPiArDQo+ICsgIERFQlVHICgo RUZJX0RfVkVSQk9TRSwgIiVhOiAlYVxuIiwgZ0VmaUNhbGxlckJhc2VOYW1lLA0KPiBfX0ZVTkNU SU9OX18pKTsNCj4gKyAgLy8NCj4gKyAgLy8gV3JpdGUgdGhlIE1TUiBvbiBhbGwgdGhlIEFQcyBp biBwYXJhbGxlbC4NCj4gKyAgLy8NCj4gKyAgTXBTZXJ2aWNlcyA9IFBwaTsNCj4gKyAgU3RhdHVz ID0gTXBTZXJ2aWNlcy0+U3RhcnR1cEFsbEFQcyAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgKENPTlNUIEVGSV9QRUlfU0VSVklDRVMgKiopUGVpU2VydmljZXMsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgTXBTZXJ2aWNlcywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBX cml0ZUZlYXR1cmVDb250cm9sLCAvLyBQcm9jZWR1cmUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICBGQUxTRSwgICAgICAgICAgICAgICAvLyBTaW5nbGVUaHJlYWQNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAvLyBUaW1lb3V0SW5NaWNyb1NlY29u ZHM6IGluZi4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAg ICAvLyBQcm9jZWR1cmVBcmd1bWVudA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykgJiYgU3RhdHVzICE9IEVGSV9OT1RfU1RBUlRFRCkg ew0KPiArICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIlYTogU3RhcnR1cEFsbEFwcygpOiAlclxu IiwgX19GVU5DVElPTl9fLA0KPiBTdGF0dXMpKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiAr ICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gTm93IHdyaXRlIHRoZSBNU1Igb24gdGhlIEJTUCB0 b28uDQo+ICsgIC8vDQo+ICsgIFdyaXRlRmVhdHVyZUNvbnRyb2wgKE5VTEwpOw0KPiArDQo+ICsg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLy8NCj4gKy8vIE5vdGlmaWNhdGlv biBvYmplY3QgZm9yIHJlZ2lzdGVyaW5nIHRoZSBjYWxsYmFjaywgZm9yIHdoZW4NCj4gKy8vIEVG SV9QRUlfTVBfU0VSVklDRVNfUFBJIGJlY29tZXMgYXZhaWxhYmxlLg0KPiArLy8NCj4gK1NUQVRJ QyBDT05TVCBFRklfUEVJX05PVElGWV9ERVNDUklQVE9SIG1NcFNlcnZpY2VzTm90aWZ5ID0gew0K PiArICBFRklfUEVJX1BQSV9ERVNDUklQVE9SX05PVElGWV9DQUxMQkFDSyB8IC8vIEZsYWdzDQo+ ICsgIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1JfVEVSTUlOQVRFX0xJU1QsDQo+ICsgICZnRWZpUGVp TXBTZXJ2aWNlc1BwaUd1aWQsICAgICAgICAgICAgICAgLy8gR3VpZA0KPiArICBPbk1wU2Vydmlj ZXNBdmFpbGFibGUgICAgICAgICAgICAgICAgICAgIC8vIE5vdGlmeQ0KPiArfTsNCj4gKw0KPiAr Vk9JRA0KPiArSW5zdGFsbEZlYXR1cmVDb250cm9sQ2FsbGJhY2sgKA0KPiArICBWT0lEDQo+ICsg ICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgU3RhdHVzOw0KPiArDQo+ICsgIFN0 YXR1cyA9IFBlaVNlcnZpY2VzTm90aWZ5UHBpICgmbU1wU2VydmljZXNOb3RpZnkpOw0KPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIiVh OiBmYWlsZWQgdG8gc2V0IHVwIE1QIFNlcnZpY2VzIGNhbGxiYWNrOiAlclxuIiwNCj4gKyAgICAg IF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7DQo+ICsgIH0NCj4gK30NCj4gZGlmZiAtLWdpdCBhL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9Gdi5jDQo+IGIvUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Z2LmMNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uODE4ZDEzNWM5NQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9y bVBlaS9Gdi5jDQo+IEBAIC0wLDAgKzEsMTAwIEBADQo+ICsvKiogQGZpbGUNCj4gKyAgQnVpbGQg RlYgcmVsYXRlZCBob2JzIGZvciBwbGF0Zm9ybS4NCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIw MDYgLSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g KyoqLw0KPiArDQo+ICsjaW5jbHVkZSAiUGlQZWkuaCINCj4gKyNpbmNsdWRlICJQbGF0Zm9ybS5o Ig0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0hvYkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUGVpU2VydmljZXNMaWIuaD4NCj4gKyNp bmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBQdWJsaXNo IFBFSSAmIERYRSAoRGVjb21wcmVzc2VkKSBNZW1vcnkgYmFzZWQgRlZzIHRvIGxldCBQRUkNCj4g KyAgYW5kIERYRSBrbm93IGFib3V0IHRoZW0uDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgIFBsYXRmb3JtIFBFSSBGVnMgd2VyZSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ICsN Cj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArUGVpRnZJbml0aWFsaXphdGlvbiAoDQo+ICsgIFZP SUQNCj4gKyAgKQ0KPiArew0KPiArICBCT09MRUFOIFNlY3VyZVMzTmVlZGVkOw0KPiArDQo+ICsg IERFQlVHICgoRUZJX0RfSU5GTywgIlBsYXRmb3JtIFBFSSBGaXJtd2FyZSBWb2x1bWUgSW5pdGlh bGl6YXRpb25cbiIpKTsNCj4gKw0KPiArICBERUJVRyAoDQo+ICsgICAgKEVGSV9EX0VSUk9SLCAi RmlybXdhcmUgVm9sdW1lIEhPQjogMHgleCAweCV4XG4iLA0KPiArICAgICAgUGNkR2V0MzIgKFBj ZFNpbWljc1BlaU1lbUZ2QmFzZSksDQo+ICsgICAgICBQY2RHZXQzMiAoUGNkU2ltaWNzUGVpTWVt RnZTaXplKQ0KPiArICAgICAgKQ0KPiArICAgICk7DQo+ICsgIC8vDQo+ICsgIC8vIENyZWF0ZSBh IG1lbW9yeSBhbGxvY2F0aW9uIEhPQiBmb3IgdGhlIFBFSSBGVi4NCj4gKyAgLy8NCj4gKyAgLy8g QWxsb2NhdGUgYXMgQUNQSSBOVlMgaXMgUzMgaXMgc3VwcG9ydGVkDQo+ICsgIC8vDQo+ICsgIEJ1 aWxkTWVtb3J5QWxsb2NhdGlvbkhvYiAoDQo+ICsgICAgUGNkR2V0MzIgKFBjZFNpbWljc1BlaU1l bUZ2QmFzZSksDQo+ICsgICAgUGNkR2V0MzIgKFBjZFNpbWljc1BlaU1lbUZ2U2l6ZSksDQo+ICsg ICAgbVMzU3VwcG9ydGVkID8gRWZpQUNQSU1lbW9yeU5WUyA6IEVmaUJvb3RTZXJ2aWNlc0RhdGEN Cj4gKyAgICApOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIExldCBEWEUga25vdyBhYm91dCB0aGUg RFhFIEZWDQo+ICsgIC8vDQo+ICsgIEJ1aWxkRnZIb2IgKFBjZEdldDMyIChQY2RTaW1pY3NEeGVN ZW1GdkJhc2UpLCBQY2RHZXQzMg0KPiAoUGNkU2ltaWNzRHhlTWVtRnZTaXplKSk7DQo+ICsNCj4g KyAgU2VjdXJlUzNOZWVkZWQgPSBtUzNTdXBwb3J0ZWQgJiYgRmVhdHVyZVBjZEdldA0KPiAoUGNk U21tU21yYW1SZXF1aXJlKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBDcmVhdGUgYSBtZW1vcnkg YWxsb2NhdGlvbiBIT0IgZm9yIHRoZSBEWEUgRlYuDQo+ICsgIC8vDQo+ICsgIC8vIElmICJzZWN1 cmUiIFMzIGlzIG5lZWRlZCwgdGhlbiBTRUMgd2lsbCBkZWNvbXByZXNzIGJvdGggUEVJIGFuZCBE WEUNCj4gKyAgLy8gZmlybXdhcmUgdm9sdW1lcyBhdCBTMyByZXN1bWUgdG9vLCBoZW5jZSB3ZSBu ZWVkIHRvIGtlZXAgYXdheSB0aGUgT1MNCj4gZnJvbQ0KPiArICAvLyBEWEVGViBhcyB3ZWxsLiBP dGhlcndpc2Ugd2Ugb25seSBuZWVkIHRvIGtlZXAgYXdheSBEWEUgaXRzZWxmIGZyb20gdGhlDQo+ ICsgIC8vIERYRUZWIGFyZWEuDQo+ICsgIC8vDQo+ICsgIEJ1aWxkTWVtb3J5QWxsb2NhdGlvbkhv YiAoDQo+ICsgICAgUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2QmFzZSksDQo+ICsgICAgUGNk R2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2U2l6ZSksDQo+ICsgICAgU2VjdXJlUzNOZWVkZWQgPyBF ZmlBQ1BJTWVtb3J5TlZTIDogRWZpQm9vdFNlcnZpY2VzRGF0YQ0KPiArICAgICk7DQo+ICsNCj4g KyAgLy8NCj4gKyAgLy8gQWRkaXRpb25hbGx5LCBzYWlkIGRlY29tcHJlc3Npb24gd2lsbCB1c2Ug dGVtcG9yYXJ5IG1lbW9yeSBhYm92ZSB0aGUNCj4gZW5kDQo+ICsgIC8vIG9mIERYRUZWLCBzbyBs ZXQncyBrZWVwIGF3YXkgdGhlIE9TIGZyb20gdGhlcmUgdG9vLg0KPiArICAvLw0KPiArICBpZiAo U2VjdXJlUzNOZWVkZWQpIHsNCj4gKyAgICBVSU5UMzIgRHhlTWVtRnZFbmQ7DQo+ICsNCj4gKyAg ICBEeGVNZW1GdkVuZCA9IFBjZEdldDMyIChQY2RTaW1pY3NEeGVNZW1GdkJhc2UpICsNCj4gKyAg ICAgICAgICAgICAgICAgIFBjZEdldDMyIChQY2RTaW1pY3NEeGVNZW1GdlNpemUpOw0KPiArICAg IEJ1aWxkTWVtb3J5QWxsb2NhdGlvbkhvYiAoDQo+ICsgICAgICBEeGVNZW1GdkVuZCwNCj4gKyAg ICAgIFBjZEdldDMyIChQY2RTaW1pY3NEZWNvbXByZXNzaW9uU2NyYXRjaEVuZCkgLSBEeGVNZW1G dkVuZCwNCj4gKyAgICAgIEVmaUFDUElNZW1vcnlOVlMNCj4gKyAgICAgICk7DQo+ICsgIH0NCj4g Kw0KPiArICAvLw0KPiArICAvLyBMZXQgUEVJIGtub3cgYWJvdXQgdGhlIERYRSBGViBzbyBpdCBj YW4gZmluZCB0aGUgRFhFIENvcmUNCj4gKyAgLy8NCj4gKyAgUGVpU2VydmljZXNJbnN0YWxsRnZJ bmZvUHBpICgNCj4gKyAgICBOVUxMLA0KPiArICAgIChWT0lEICopKFVJTlROKSBQY2RHZXQzMiAo UGNkU2ltaWNzRHhlTWVtRnZCYXNlKSwNCj4gKyAgICBQY2RHZXQzMiAoUGNkU2ltaWNzRHhlTWVt RnZTaXplKSwNCj4gKyAgICBOVUxMLA0KPiArICAgIE5VTEwNCj4gKyAgICApOw0KPiArDQo+ICsg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL01lbURldGVjdC5jDQo+IGIvUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL01lbURldGVjdC5jDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjRjNTI3YmFlZjINCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv UGxhdGZvcm1QZWkvTWVtRGV0ZWN0LmMNCj4gQEAgLTAsMCArMSw1NjggQEANCj4gKy8qKiBAZmls ZQ0KPiArICBNZW1vcnkgRGV0ZWN0aW9uIGZvciBWaXJ0dWFsIE1hY2hpbmVzLg0KPiArDQo+ICsg IENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuIDxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKy8vDQo+ICsvLyBUaGUgcGFja2FnZSBsZXZl bCBoZWFkZXIgZmlsZXMgdGhpcyBtb2R1bGUgdXNlcw0KPiArLy8NCj4gKyNpbmNsdWRlIDxQaVBl aS5oPg0KPiArDQo+ICsvLw0KPiArLy8gVGhlIExpYnJhcnkgY2xhc3NlcyB0aGlzIG1vZHVsZSBj b25zdW1lcw0KPiArLy8NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Ib2JM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9QY2RMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaW1FbnRyeVBvaW50Lmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9SZXNvdXJjZVB1YmxpY2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9NdHJyTGliLmg+DQo+ICsjaW5jbHVkZSA8U2ltaWNzUGxhdGZvcm1zLmg+DQo+ICsj aW5jbHVkZSA8R3VpZC9TbXJhbU1lbW9yeVJlc2VydmUuaD4NCj4gKw0KPiArI2luY2x1ZGUgIlBs YXRmb3JtLmgiDQo+ICsjaW5jbHVkZSAiQ21vcy5oIg0KPiArDQo+ICtVSU5UOCBtUGh5c01lbUFk ZHJlc3NXaWR0aDsNCj4gKw0KPiArU1RBVElDIFVJTlQzMiBtUzNBY3BpUmVzZXJ2ZWRNZW1vcnlC YXNlOw0KPiArU1RBVElDIFVJTlQzMiBtUzNBY3BpUmVzZXJ2ZWRNZW1vcnlTaXplOw0KPiArDQo+ ICtTVEFUSUMgVUlOVDE2IG1YNThUc2VnTWJ5dGVzOw0KPiArDQo+ICtWT0lEDQo+ICtYNThUc2Vn TWJ5dGVzSW5pdGlhbGl6YXRpb24oDQo+ICsgIFZPSUQNCj4gKykNCj4gK3sNCj4gKw0KPiArICBp ZiAobUhvc3RCcmlkZ2VEZXZJZCAhPSBJTlRFTF9JQ0gxMF9ERVZJQ0VfSUQpIHsNCj4gKyAgICBE RUJVRyAoKA0KPiArICAgICAgREVCVUdfRVJST1IsDQo+ICsgICAgICAiJWE6IG5vIFRTRUcgKFNN UkFNKSBvbiBob3N0IGJyaWRnZSBESUQ9MHglMDR4OyAiDQo+ICsgICAgICAib25seSBESUQ9MHgl MDR4IChYNTgpIGlzIHN1cHBvcnRlZFxuIiwNCj4gKyAgICAgIF9fRlVOQ1RJT05fXywNCj4gKyAg ICAgIG1Ib3N0QnJpZGdlRGV2SWQsDQo+ICsgICAgICBJTlRFTF9JQ0gxMF9ERVZJQ0VfSUQNCj4g KyAgICAgICkpOw0KPiArICAgIEFTU0VSVCAoRkFMU0UpOw0KPiArICAgIENwdURlYWRMb29wICgp Ow0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2hlY2sgaWYgUUVNVSBvZmZlcnMgYW4g ZXh0ZW5kZWQgVFNFRy4NCj4gKyAgLy8NCj4gKyAgLy8gVGhpcyBjYW4gYmUgc2VlbiBmcm9tIHdy aXRpbmcgTUNIX0VYVF9UU0VHX01CX1FVRVJZIHRvIHRoZQ0KPiBNQ0hfRVhUX1RTRUdfTUINCj4g KyAgLy8gcmVnaXN0ZXIsIGFuZCByZWFkaW5nIGJhY2sgdGhlIHJlZ2lzdGVyLg0KPiArICAvLw0K PiArICAvLyBPbiBhIFFFTVUgbWFjaGluZSB0eXBlIHRoYXQgZG9lcyBub3Qgb2ZmZXIgYW4gZXh0 ZW5kZWQgVFNFRywgdGhlIGluaXRpYWwNCj4gKyAgLy8gd3JpdGUgb3ZlcndyaXRlcyB3aGF0ZXZl ciB2YWx1ZSBhIG1hbGljaW91cyBndWVzdCBPUyBtYXkgaGF2ZSBwbGFjZWQgaW4NCj4gKyAgLy8g dGhlICh1bmltcGxlbWVudGVkKSByZWdpc3RlciwgYmVmb3JlIGVudGVyaW5nIFMzIG9yIHJlYm9v dGluZy4NCj4gKyAgLy8gU3Vic2VxdWVudGx5LCB0aGUgcmVhZCByZXR1cm5zIE1DSF9FWFRfVFNF R19NQl9RVUVSWSB1bmNoYW5nZWQuDQo+ICsgIC8vDQo+ICsgIC8vIE9uIGEgUUVNVSBtYWNoaW5l IHR5cGUgdGhhdCBvZmZlcnMgYW4gZXh0ZW5kZWQgVFNFRywgdGhlIGluaXRpYWwgd3JpdGUNCj4g KyAgLy8gdHJpZ2dlcnMgYW4gdXBkYXRlIHRvIHRoZSByZWdpc3Rlci4gU3Vic2VxdWVudGx5LCB0 aGUgdmFsdWUgcmVhZCBiYWNrDQo+ICsgIC8vICh3aGljaCBpcyBndWFyYW50ZWVkIHRvIGRpZmZl ciBmcm9tIE1DSF9FWFRfVFNFR19NQl9RVUVSWSkgdGVsbHMgdXMNCj4gdGhlDQo+ICsgIC8vIG51 bWJlciBvZiBtZWdhYnl0ZXMuDQo+ICsgIC8vDQo+ICsgIG1YNThUc2VnTWJ5dGVzID0gRml4ZWRQ Y2RHZXQ4KFBjZFg1OFRzZWdNYnl0ZXMpOw0KPiArICByZXR1cm47DQo+ICt9DQo+ICsNCj4gKw0K PiArVUlOVDMyDQo+ICtHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IgKA0KPiArICBWT0lEDQo+ ICsgICkNCj4gK3sNCj4gKyAgVUlOVDggQ21vczB4MzQ7DQo+ICsgIFVJTlQ4IENtb3MweDM1Ow0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIENNT1MgMHgzNC8weDM1IHNwZWNpZmllcyB0aGUgc3lzdGVt IG1lbW9yeSBhYm92ZSAxNiBNQi4NCj4gKyAgLy8gKiBDTU9TKDB4MzUpIGlzIHRoZSBoaWdoIGJ5 dGUNCj4gKyAgLy8gKiBDTU9TKDB4MzQpIGlzIHRoZSBsb3cgYnl0ZQ0KPiArICAvLyAqIFRoZSBz aXplIGlzIHNwZWNpZmllZCBpbiA2NGtiIGNodW5rcw0KPiArICAvLyAqIFNpbmNlIHRoaXMgaXMg bWVtb3J5IGFib3ZlIDE2TUIsIHRoZSAxNk1CIG11c3QgYmUgYWRkZWQNCj4gKyAgLy8gICBpbnRv IHRoZSBjYWxjdWxhdGlvbiB0byBnZXQgdGhlIHRvdGFsIG1lbW9yeSBzaXplLg0KPiArICAvLw0K PiArDQo+ICsgIENtb3MweDM0ID0gKFVJTlQ4KSBDbW9zUmVhZDggKDB4MzQpOw0KPiArICBDbW9z MHgzNSA9IChVSU5UOCkgQ21vc1JlYWQ4ICgweDM1KTsNCj4gKw0KPiArICByZXR1cm4gKFVJTlQz MikgKCgoVUlOVE4pKChDbW9zMHgzNSA8PCA4KSArIENtb3MweDM0KSA8PCAxNikgKw0KPiBTSVpF XzE2TUIpOw0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArVUlOVDY0DQo+ICtHZXRTeXN0 ZW1NZW1vcnlTaXplQWJvdmU0Z2IgKA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBTaXplOw0K PiArICBVSU5UTiAgQ21vc0luZGV4Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENNT1MgMHg1Yi0w eDVkIHNwZWNpZmllcyB0aGUgc3lzdGVtIG1lbW9yeSBhYm92ZSA0R0IgTUIuDQo+ICsgIC8vICog Q01PUygweDVkKSBpcyB0aGUgbW9zdCBzaWduaWZpY2FudCBzaXplIGJ5dGUNCj4gKyAgLy8gKiBD TU9TKDB4NWMpIGlzIHRoZSBtaWRkbGUgc2l6ZSBieXRlDQo+ICsgIC8vICogQ01PUygweDViKSBp cyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2l6ZSBieXRlDQo+ICsgIC8vICogVGhlIHNpemUgaXMg c3BlY2lmaWVkIGluIDY0a2IgY2h1bmtzDQo+ICsgIC8vDQo+ICsNCj4gKyAgU2l6ZSA9IDA7DQo+ ICsgIGZvciAoQ21vc0luZGV4ID0gMHg1ZDsgQ21vc0luZGV4ID49IDB4NWI7IENtb3NJbmRleC0t KSB7DQo+ICsgICAgU2l6ZSA9IChVSU5UMzIpIChTaXplIDw8IDgpICsgKFVJTlQzMikgQ21vc1Jl YWQ4IChDbW9zSW5kZXgpOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIExTaGlmdFU2NCAoU2l6 ZSwgMTYpOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBSZXR1cm4gdGhlIGhpZ2hlc3Qg YWRkcmVzcyB0aGF0IERYRSBjb3VsZCBwb3NzaWJseSB1c2UsIHBsdXMgb25lLg0KPiArKiovDQo+ ICtTVEFUSUMNCj4gK1VJTlQ2NA0KPiArR2V0Rmlyc3ROb25BZGRyZXNzICgNCj4gKyAgVk9JRA0K PiArICApDQo+ICt7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgIEZpcnN0Tm9uQWRkcmVzczsN Cj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgUGNpNjRCYXNlLCBQY2k2NFNpemU7DQo+ICsNCj4g KyAgRmlyc3ROb25BZGRyZXNzID0gQkFTRV80R0IgKyBHZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0 Z2IgKCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSWYgRFhFIGlzIDMyLWJpdCwgdGhlbiB3ZSdy ZSBkb25lOyBQY2lCdXNEeGUgd2lsbCBkZWdyYWRlIDY0LWJpdCBNTUlPDQo+ICsgIC8vIHJlc291 cmNlcyB0byAzMi1iaXQgYW55d2F5LiBTZWUgRGVncmFkZVJlc291cmNlKCkgaW4NCj4gKyAgLy8g IlBjaVJlc291cmNlU3VwcG9ydC5jIi4NCj4gKyAgLy8NCj4gKyNpZmRlZiBNREVfQ1BVX0lBMzIN Cj4gKyAgaWYgKCFGZWF0dXJlUGNkR2V0IChQY2REeGVJcGxTd2l0Y2hUb0xvbmdNb2RlKSkgew0K PiArICAgIHJldHVybiBGaXJzdE5vbkFkZHJlc3M7DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiArDQo+ ICsgIC8vDQo+ICsgIC8vIE90aGVyd2lzZSwgaW4gb3JkZXIgdG8gY2FsY3VsYXRlIHRoZSBoaWdo ZXN0IGFkZHJlc3MgcGx1cyBvbmUsIHdlIG11c3QNCj4gKyAgLy8gY29uc2lkZXIgdGhlIDY0LWJp dCBQQ0kgaG9zdCBhcGVydHVyZSB0b28uIEZldGNoIHRoZSBkZWZhdWx0IHNpemUuDQo+ICsgIC8v DQo+ICsgIFBjaTY0U2l6ZSA9IFBjZEdldDY0IChQY2RQY2lNbWlvNjRTaXplKTsNCj4gKw0KPiAr ICBpZiAoUGNpNjRTaXplID09IDApIHsNCj4gKyAgICBpZiAobUJvb3RNb2RlICE9IEJPT1RfT05f UzNfUkVTVU1FKSB7DQo+ICsgICAgICBERUJVRyAoKEVGSV9EX0lORk8sICIlYTogZGlzYWJsaW5n IDY0LWJpdCBQQ0kgaG9zdCBhcGVydHVyZVxuIiwNCj4gKyAgICAgICAgX19GVU5DVElPTl9fKSk7 DQo+ICsgICAgICBQY2RTZXQ2NCAoUGNkUGNpTW1pbzY0U2l6ZSwgMCk7DQo+ICsgICAgfQ0KPiAr DQo+ICsgICAgLy8NCj4gKyAgICAvLyBUaGVyZSdzIG5vdGhpbmcgbW9yZSB0byBkbzsgdGhlIGFt b3VudCBvZiBtZW1vcnkgYWJvdmUgNEdCIGZ1bGx5DQo+ICsgICAgLy8gZGV0ZXJtaW5lcyB0aGUg aGlnaGVzdCBhZGRyZXNzIHBsdXMgb25lLiBUaGUgbWVtb3J5IGhvdHBsdWcgYXJlYSAoc2VlDQo+ ICsgICAgLy8gYmVsb3cpIHBsYXlzIG5vIHJvbGUgZm9yIHRoZSBmaXJtd2FyZSBpbiB0aGlzIGNh c2UuDQo+ICsgICAgLy8NCj4gKyAgICByZXR1cm4gRmlyc3ROb25BZGRyZXNzOw0KPiArICB9DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gU2VhQklPUyBhbGlnbnMgYm90aCBib3VuZGFyaWVzIG9mIHRo ZSA2NC1iaXQgUENJIGhvc3QgYXBlcnR1cmUgdG8gMUdCLCBzbw0KPiArICAvLyB0aGF0IHRoZSBo b3N0IGNhbiBtYXAgaXQgd2l0aCAxR0IgaHVnZXBhZ2VzLiBGb2xsb3cgc3VpdC4NCj4gKyAgLy8N Cj4gKyAgUGNpNjRCYXNlID0gQUxJR05fVkFMVUUgKEZpcnN0Tm9uQWRkcmVzcywgKFVJTlQ2NClT SVpFXzFHQik7DQo+ICsgIFBjaTY0U2l6ZSA9IEFMSUdOX1ZBTFVFIChQY2k2NFNpemUsIChVSU5U NjQpU0laRV8xR0IpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFRoZSA2NC1iaXQgUENJIGhvc3Qg YXBlcnR1cmUgc2hvdWxkIGFsc28gYmUgIm5hdHVyYWxseSIgYWxpZ25lZC4gVGhlDQo+ICsgIC8v IGFsaWdubWVudCBpcyBkZXRlcm1pbmVkIGJ5IHJvdW5kaW5nIHRoZSBzaXplIG9mIHRoZSBhcGVy dHVyZSBkb3duIHRvIHRoZQ0KPiArICAvLyBuZXh0IHNtYWxsZXIgb3IgZXF1YWwgcG93ZXIgb2Yg dHdvLiBUaGF0IGlzLCBhbGlnbiB0aGUgYXBlcnR1cmUgYnkgdGhlDQo+ICsgIC8vIGxhcmdlc3Qg QkFSIHNpemUgdGhhdCBjYW4gZml0IGludG8gaXQuDQo+ICsgIC8vDQo+ICsgIFBjaTY0QmFzZSA9 IEFMSUdOX1ZBTFVFIChQY2k2NEJhc2UsIEdldFBvd2VyT2ZUd282NCAoUGNpNjRTaXplKSk7DQo+ ICsNCj4gKyAgaWYgKG1Cb290TW9kZSAhPSBCT09UX09OX1MzX1JFU1VNRSkgew0KPiArICAgIC8v DQo+ICsgICAgLy8gVGhlIGNvcmUgUGNpSG9zdEJyaWRnZUR4ZSBkcml2ZXIgd2lsbCBhdXRvbWF0 aWNhbGx5IGFkZCB0aGlzIHJhbmdlIHRvDQo+ICsgICAgLy8gdGhlIEdDRCBtZW1vcnkgc3BhY2Ug bWFwIHRocm91Z2ggb3VyIFBjaUhvc3RCcmlkZ2VMaWIgaW5zdGFuY2U7IGhlcmUNCj4gd2UNCj4g KyAgICAvLyBvbmx5IG5lZWQgdG8gc2V0IHRoZSBQQ0RzLg0KPiArICAgIC8vDQo+ICsgICAgUGNk U2V0NjQgKFBjZFBjaU1taW82NEJhc2UsIFBjaTY0QmFzZSk7DQo+ICsgICAgUGNkU2V0NjQgKFBj ZFBjaU1taW82NFNpemUsIFBjaTY0U2l6ZSk7DQo+ICsgICAgREVCVUcgKChFRklfRF9JTkZPLCAi JWE6IFBjaTY0QmFzZT0weCVMeCBQY2k2NFNpemU9MHglTHhcbiIsDQo+ICsgICAgICBfX0ZVTkNU SU9OX18sIFBjaTY0QmFzZSwgUGNpNjRTaXplKSk7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiAr ICAvLyBUaGUgdXNlZnVsIGFkZHJlc3Mgc3BhY2UgZW5kcyB3aXRoIHRoZSA2NC1iaXQgUENJIGhv c3QgYXBlcnR1cmUuDQo+ICsgIC8vDQo+ICsgIEZpcnN0Tm9uQWRkcmVzcyA9IFBjaTY0QmFzZSAr IFBjaTY0U2l6ZTsNCj4gKyAgcmV0dXJuIEZpcnN0Tm9uQWRkcmVzczsNCj4gK30NCj4gKw0KPiAr DQo+ICsvKioNCj4gKyAgSW5pdGlhbGl6ZSB0aGUgbVBoeXNNZW1BZGRyZXNzV2lkdGggdmFyaWFi bGUsIGJhc2VkIG9uIGd1ZXN0IFJBTSBzaXplLg0KPiArKiovDQo+ICtWT0lEDQo+ICtBZGRyZXNz V2lkdGhJbml0aWFsaXphdGlvbiAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5U NjQgRmlyc3ROb25BZGRyZXNzOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEFzIGd1ZXN0LXBoeXNp Y2FsIG1lbW9yeSBzaXplIGdyb3dzLCB0aGUgcGVybWFuZW50IFBFSSBSQU0NCj4gcmVxdWlyZW1l bnRzDQo+ICsgIC8vIGFyZSBkb21pbmF0ZWQgYnkgdGhlIGlkZW50aXR5LW1hcHBpbmcgcGFnZSB0 YWJsZXMgYnVpbHQgYnkgdGhlIERYRSBJUEwuDQo+ICsgIC8vIFRoZSBEWEwgSVBMIGtleXMgb2Zm IG9mIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGJpdHMgYWR2ZXJ0aXplZCBpbiB0aGUgQ1BVDQo+ICsg IC8vIEhPQi4gVG8gY29uc2VydmUgbWVtb3J5LCB3ZSBjYWxjdWxhdGUgdGhlIG1pbmltdW0gYWRk cmVzcyB3aWR0aCBoZXJlLg0KPiArICAvLw0KPiArICBGaXJzdE5vbkFkZHJlc3MgICAgICA9IEdl dEZpcnN0Tm9uQWRkcmVzcyAoKTsNCj4gKyAgbVBoeXNNZW1BZGRyZXNzV2lkdGggPSAoVUlOVDgp SGlnaEJpdFNldDY0IChGaXJzdE5vbkFkZHJlc3MpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIElm IEZpcnN0Tm9uQWRkcmVzcyBpcyBub3QgYW4gaW50ZWdyYWwgcG93ZXIgb2YgdHdvLCB0aGVuIHdl IG5lZWQgYW4NCj4gKyAgLy8gYWRkaXRpb25hbCBiaXQuDQo+ICsgIC8vDQo+ICsgIGlmICgoRmly c3ROb25BZGRyZXNzICYgKEZpcnN0Tm9uQWRkcmVzcyAtIDEpKSAhPSAwKSB7DQo+ICsgICAgKytt UGh5c01lbUFkZHJlc3NXaWR0aDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFRoZSBt aW5pbXVtIGFkZHJlc3Mgd2lkdGggaXMgMzYgKGNvdmVycyB1cCB0byBhbmQgZXhjbHVkaW5nIDY0 IEdCLCB3aGljaA0KPiArICAvLyBpcyB0aGUgbWF4aW11bSBmb3IgSWEzMiArIFBBRSkuIFRoZSB0 aGVvcmV0aWNhbCBhcmNoaXRlY3R1cmUgbWF4aW11bSBmb3INCj4gKyAgLy8gWDY0IGxvbmcgbW9k ZSBpcyA1MiBiaXRzLCBidXQgdGhlIERYRSBJUEwgY2xhbXBzIHRoYXQgZG93biB0byA0OCBiaXRz LiBXZQ0KPiArICAvLyBjYW4gc2ltcGx5IGFzc2VydCB0aGF0IGhlcmUsIHNpbmNlIDQ4IGJpdHMg YXJlIGdvb2QgZW5vdWdoIGZvciAyNTYgVEIuDQo+ICsgIC8vDQo+ICsgIGlmIChtUGh5c01lbUFk ZHJlc3NXaWR0aCA8PSAzNikgew0KPiArICAgIG1QaHlzTWVtQWRkcmVzc1dpZHRoID0gMzY7DQo+ ICsgIH0NCj4gKyAgQVNTRVJUIChtUGh5c01lbUFkZHJlc3NXaWR0aCA8PSA0OCk7DQo+ICt9DQo+ ICsNCj4gKw0KPiArLyoqDQo+ICsgIENhbGN1bGF0ZSB0aGUgY2FwIGZvciB0aGUgcGVybWFuZW50 IFBFSSBtZW1vcnkuDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArVUlOVDMyDQo+ICtHZXRQZWlNZW1v cnlDYXAgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgQk9PTEVBTiBQYWdlMUdTdXBw b3J0Ow0KPiArICBVSU5UMzIgIFJlZ0VheDsNCj4gKyAgVUlOVDMyICBSZWdFZHg7DQo+ICsgIFVJ TlQzMiAgUG1sNEVudHJpZXM7DQo+ICsgIFVJTlQzMiAgUGRwRW50cmllczsNCj4gKyAgVUlOVE4g ICBUb3RhbFBhZ2VzOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIElmIERYRSBpcyAzMi1iaXQsIHRo ZW4ganVzdCByZXR1cm4gdGhlIHRyYWRpdGlvbmFsIDY0IE1CIGNhcC4NCj4gKyAgLy8NCj4gKyNp ZmRlZiBNREVfQ1BVX0lBMzINCj4gKyAgaWYgKCFGZWF0dXJlUGNkR2V0IChQY2REeGVJcGxTd2l0 Y2hUb0xvbmdNb2RlKSkgew0KPiArICAgIHJldHVybiBTSVpFXzY0TUI7DQo+ICsgIH0NCj4gKyNl bmRpZg0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIERlcGVuZGVudCBvbiBwaHlzaWNhbCBhZGRyZXNz IHdpZHRoLCBQRUkgbWVtb3J5IGFsbG9jYXRpb25zIGNhbiBiZQ0KPiArICAvLyBkb21pbmF0ZWQg YnkgdGhlIHBhZ2UgdGFibGVzIGJ1aWx0IGZvciA2NC1iaXQgRFhFLiBTbyB3ZSBrZXkgdGhlIGNh cCBvZmYNCj4gKyAgLy8gb2YgdGhvc2UuIFRoZSBjb2RlIGJlbG93IGlzIGJhc2VkIG9uIENyZWF0 ZUlkZW50aXR5TWFwcGluZ1BhZ2VUYWJsZXMoKSBpbg0KPiArICAvLyAiTWRlTW9kdWxlUGtnL0Nv cmUvRHhlSXBsUGVpbS9YNjQvVmlydHVhbE1lbW9yeS5jIi4NCj4gKyAgLy8NCj4gKyAgUGFnZTFH U3VwcG9ydCA9IEZBTFNFOw0KPiArICBpZiAoUGNkR2V0Qm9vbCAoUGNkVXNlMUdQYWdlVGFibGUp KSB7DQo+ICsgICAgQXNtQ3B1aWQgKDB4ODAwMDAwMDAsICZSZWdFYXgsIE5VTEwsIE5VTEwsIE5V TEwpOw0KPiArICAgIGlmIChSZWdFYXggPj0gMHg4MDAwMDAwMSkgew0KPiArICAgICAgQXNtQ3B1 aWQgKDB4ODAwMDAwMDEsIE5VTEwsIE5VTEwsIE5VTEwsICZSZWdFZHgpOw0KPiArICAgICAgaWYg KChSZWdFZHggJiBCSVQyNikgIT0gMCkgew0KPiArICAgICAgICBQYWdlMUdTdXBwb3J0ID0gVFJV RTsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICBpZiAobVBoeXNNZW1B ZGRyZXNzV2lkdGggPD0gMzkpIHsNCj4gKyAgICBQbWw0RW50cmllcyA9IDE7DQo+ICsgICAgUGRw RW50cmllcyA9IDEgPDwgKG1QaHlzTWVtQWRkcmVzc1dpZHRoIC0gMzApOw0KPiArICAgIEFTU0VS VCAoUGRwRW50cmllcyA8PSAweDIwMCk7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgUG1sNEVudHJp ZXMgPSAxIDw8IChtUGh5c01lbUFkZHJlc3NXaWR0aCAtIDM5KTsNCj4gKyAgICBBU1NFUlQgKFBt bDRFbnRyaWVzIDw9IDB4MjAwKTsNCj4gKyAgICBQZHBFbnRyaWVzID0gNTEyOw0KPiArICB9DQo+ ICsNCj4gKyAgVG90YWxQYWdlcyA9IFBhZ2UxR1N1cHBvcnQgPyBQbWw0RW50cmllcyArIDEgOg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQZHBFbnRyaWVzICsgMSkgKiBQbWw0 RW50cmllcyArIDE7DQo+ICsgIEFTU0VSVCAoVG90YWxQYWdlcyA8PSAweDQwMjAxKTsNCj4gKw0K PiArICAvLw0KPiArICAvLyBBZGQgNjQgTUIgZm9yIG1pc2NlbGxhbmVvdXMgYWxsb2NhdGlvbnMu IE5vdGUgdGhhdCBmb3INCj4gKyAgLy8gbVBoeXNNZW1BZGRyZXNzV2lkdGggdmFsdWVzIGNsb3Nl IHRvIDM2LCB0aGUgY2FwIHdpbGwgYWN0dWFsbHkgYmUNCj4gKyAgLy8gZG9taW5hdGVkIGJ5IHRo aXMgaW5jcmVtZW50Lg0KPiArICAvLw0KPiArICByZXR1cm4gKFVJTlQzMikoRUZJX1BBR0VTX1RP X1NJWkUgKFRvdGFsUGFnZXMpICsgU0laRV82NE1CKTsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioN Cj4gKyAgUHVibGlzaCBQRUkgY29yZSBtZW1vcnkNCj4gKw0KPiArICBAcmV0dXJuIEVGSV9TVUND RVNTICAgICBUaGUgUEVJTSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ICsNCj4gKyoqLw0K PiArRUZJX1NUQVRVUw0KPiArUHVibGlzaFBlaU1lbW9yeSAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0K PiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklf UEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZTsNCj4gKyAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICAgIE1lbW9yeVNpemU7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICBMb3dlck1lbW9yeVNpemU7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICBQZWlN ZW1vcnlDYXA7DQo+ICsNCj4gKyAgTG93ZXJNZW1vcnlTaXplID0gR2V0U3lzdGVtTWVtb3J5U2l6 ZUJlbG93NGdiICgpOw0KPiArICBpZiAoRmVhdHVyZVBjZEdldCAoUGNkU21tU21yYW1SZXF1aXJl KSkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gVFNFRyBpcyBjaGlwcGVkIGZyb20gdGhlIGVuZCBv ZiBsb3cgUkFNDQo+ICsgICAgLy8NCj4gKyAgICBMb3dlck1lbW9yeVNpemUgLT0gbVg1OFRzZWdN Ynl0ZXMgKiBTSVpFXzFNQjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIElmIFMzIGlz IHN1cHBvcnRlZCwgdGhlbiB0aGUgUzMgcGVybWFuZW50IFBFSSBtZW1vcnkgaXMgcGxhY2VkIG5l eHQsDQo+ICsgIC8vIGRvd253YXJkcy4gSXRzIHNpemUgaXMgcHJpbWFyaWx5IGRpY3RhdGVkIGJ5 IENwdU1wUGVpLiBUaGUgZm9ybXVsYSBiZWxvdw0KPiArICAvLyBpcyBhbiBhcHByb3hpbWF0aW9u Lg0KPiArICAvLw0KPiArICBpZiAobVMzU3VwcG9ydGVkKSB7DQo+ICsgICAgbVMzQWNwaVJlc2Vy dmVkTWVtb3J5U2l6ZSA9IFNJWkVfNTEyS0IgKw0KPiArICAgICAgbU1heENwdUNvdW50ICoNCj4g KyAgICAgIFBjZEdldDMyIChQY2RDcHVBcFN0YWNrU2l6ZSk7DQo+ICsgICAgbVMzQWNwaVJlc2Vy dmVkTWVtb3J5QmFzZSA9IExvd2VyTWVtb3J5U2l6ZSAtDQo+IG1TM0FjcGlSZXNlcnZlZE1lbW9y eVNpemU7DQo+ICsgICAgTG93ZXJNZW1vcnlTaXplID0gbVMzQWNwaVJlc2VydmVkTWVtb3J5QmFz ZTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChtQm9vdE1vZGUgPT0gQk9PVF9PTl9TM19SRVNVTUUp IHsNCj4gKyAgICBNZW1vcnlCYXNlID0gbVMzQWNwaVJlc2VydmVkTWVtb3J5QmFzZTsNCj4gKyAg ICBNZW1vcnlTaXplID0gbVMzQWNwaVJlc2VydmVkTWVtb3J5U2l6ZTsNCj4gKyAgfSBlbHNlIHsN Cj4gKyAgICBQZWlNZW1vcnlDYXAgPSBHZXRQZWlNZW1vcnlDYXAgKCk7DQo+ICsgICAgREVCVUcg KChFRklfRF9JTkZPLCAiJWE6IG1QaHlzTWVtQWRkcmVzc1dpZHRoPSVkDQo+IFBlaU1lbW9yeUNh cD0ldSBLQlxuIiwNCj4gKyAgICAgIF9fRlVOQ1RJT05fXywgbVBoeXNNZW1BZGRyZXNzV2lkdGgs IFBlaU1lbW9yeUNhcCA+PiAxMCkpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBEZXRlcm1p bmUgdGhlIHJhbmdlIG9mIG1lbW9yeSB0byB1c2UgZHVyaW5nIFBFSQ0KPiArICAgIC8vDQo+ICsg ICAgLy8gVGVjaG5pY2FsbHkgd2UgY291bGQgbGF5IHRoZSBwZXJtYW5lbnQgUEVJIFJBTSBvdmVy IFNFQydzIHRlbXBvcmFyeQ0KPiArICAgIC8vIGRlY29tcHJlc3Npb24gYW5kIHNjcmF0Y2ggYnVm ZmVyIGV2ZW4gaWYgInNlY3VyZSBTMyIgaXMgbmVlZGVkLCBzaW5jZQ0KPiArICAgIC8vIHRoZWly IGxpZmV0aW1lcyBkb24ndCBvdmVybGFwLiBIb3dldmVyLCBQZWlGdkluaXRpYWxpemF0aW9uKCkg d2lsbCBjb3Zlcg0KPiArICAgIC8vIFJBTSB1cCB0byBQY2RPdm1mRGVjb21wcmVzc2lvblNjcmF0 Y2hFbmQgd2l0aCBhbg0KPiBFZmlBQ1BJTWVtb3J5TlZTIG1lbW9yeQ0KPiArICAgIC8vIGFsbG9j YXRpb24gSE9CLCBhbmQgb3RoZXIgYWxsb2NhdGlvbnMgc2VydmVkIGZyb20gdGhlIHBlcm1hbmVu dCBQRUkgUkFNDQo+ICsgICAgLy8gc2hvdWxkbid0IG92ZXJsYXAgd2l0aCB0aGF0IEhPQi4NCj4g KyAgICAvLw0KPiArICAgIE1lbW9yeUJhc2UgPSBtUzNTdXBwb3J0ZWQgJiYgRmVhdHVyZVBjZEdl dCAoUGNkU21tU21yYW1SZXF1aXJlKQ0KPiA/DQo+ICsgICAgICBQY2RHZXQzMiAoUGNkU2ltaWNz RGVjb21wcmVzc2lvblNjcmF0Y2hFbmQpIDoNCj4gKyAgICAgIFBjZEdldDMyIChQY2RTaW1pY3NE eGVNZW1GdkJhc2UpICsgUGNkR2V0MzINCj4gKFBjZFNpbWljc0R4ZU1lbUZ2U2l6ZSk7DQo+ICsg ICAgTWVtb3J5U2l6ZSA9IExvd2VyTWVtb3J5U2l6ZSAtIE1lbW9yeUJhc2U7DQo+ICsgIH0NCj4g KyAgREVCVUcoKEVGSV9EX0lORk8sICJNZW1vcnlCYXNlPTB4JWx4IE1lbW9yeVNpemU9MHglbHhc biIsDQo+IE1lbW9yeUJhc2UsIE1lbW9yeVNpemUpKTsNCj4gKyAgLy8NCj4gKyAgLy8gUHVibGlz aCB0aGlzIG1lbW9yeSB0byB0aGUgUEVJIENvcmUNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gUHVi bGlzaFN5c3RlbU1lbW9yeShNZW1vcnlCYXNlLCBNZW1vcnlTaXplKTsNCj4gKyAgQVNTRVJUX0VG SV9FUlJPUiAoU3RhdHVzKTsNCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ ICsNCj4gKy8qKg0KPiArICBQZWZvcm0gTWVtb3J5IERldGVjdGlvbiBmb3IgUUVNVSAvIEtWTQ0K PiArDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArUWVtdUluaXRpYWxpemVSYW0gKA0K PiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExvd2VyTWVtb3J5U2l6ZTsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFVwcGVyTWVtb3J5U2l6ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBCdWZmZXJTaXplOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNtcmFtSW5kZXg7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU21yYW1SYW5nZXM7DQo+ICsgIEVGSV9QRUlfSE9CX1BPSU5URVJTICAg ICAgICAgICAgICAgICAgSG9iOw0KPiArICBFRklfU01SQU1fSE9CX0RFU0NSSVBUT1JfQkxPQ0sg ICAgICAgICpTbXJhbUhvYkRlc2NyaXB0b3JCbG9jazsNCj4gKyAgVUlOVDggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gKw0KPiArICBERUJVRyAoKEVGSV9EX0lORk8s ICIlYSBjYWxsZWRcbiIsIF9fRlVOQ1RJT05fXykpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIERl dGVybWluZSB0b3RhbCBtZW1vcnkgc2l6ZSBhdmFpbGFibGUNCj4gKyAgLy8NCj4gKyAgTG93ZXJN ZW1vcnlTaXplID0gR2V0U3lzdGVtTWVtb3J5U2l6ZUJlbG93NGdiICgpOw0KPiArICBVcHBlck1l bW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0Z2IgKCk7DQo+ICsNCj4gKyAgaWYg KG1Cb290TW9kZSA9PSBCT09UX09OX1MzX1JFU1VNRSkgew0KPiArICAgIC8vDQo+ICsgICAgLy8g Q3JlYXRlIHRoZSBmb2xsb3dpbmcgbWVtb3J5IEhPQiBhcyBhbiBleGNlcHRpb24gb24gdGhlIFMz IGJvb3QgcGF0aC4NCj4gKyAgICAvLw0KPiArICAgIC8vIE5vcm1hbGx5IHdlJ2QgY3JlYXRlIG1l bW9yeSBIT0JzIG9ubHkgb24gdGhlIG5vcm1hbCBib290IHBhdGguDQo+IEhvd2V2ZXIsDQo+ICsg ICAgLy8gQ3B1TXBQZWkgc3BlY2lmaWNhbGx5IG5lZWRzIHN1Y2ggYSBsb3ctbWVtb3J5IEhPQiBv biB0aGUgUzMgcGF0aCBhcw0KPiArICAgIC8vIHdlbGwsIGZvciAiYm9ycm93aW5nIiBhIHN1YnNl dCBvZiBpdCB0ZW1wb3JhcmlseSwgZm9yIHRoZSBBUCBzdGFydHVwDQo+ICsgICAgLy8gdmVjdG9y Lg0KPiArICAgIC8vDQo+ICsgICAgLy8gQ3B1TXBQZWkgc2F2ZXMgdGhlIG9yaWdpbmFsIGNvbnRl bnRzIG9mIHRoZSBib3Jyb3dlZCBhcmVhIGluIHBlcm1hbmVudA0KPiArICAgIC8vIFBFSSBSQU0s IGluIGEgYmFja3VwIGJ1ZmZlciBhbGxvY2F0ZWQgd2l0aCB0aGUgbm9ybWFsIFBFSSBzZXJ2aWNl cy4NCj4gKyAgICAvLyBDcHVNcFBlaSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgY29udGVudHMgKCJy ZXR1cm5zIiB0aGUgYm9ycm93ZWQgYXJlYSkgYXQNCj4gKyAgICAvLyBFbmQtb2YtUEVJLiBFbmQt b2YtUEVJIGluIHR1cm4gaXMgZW1pdHRlZCBieSBTM1Jlc3VtZTJQZWkgYmVmb3JlDQo+ICsgICAg Ly8gdHJhbnNmZXJyaW5nIGNvbnRyb2wgdG8gdGhlIE9TJ3Mgd2FrZXVwIHZlY3RvciBpbiB0aGUg RkFDUy4NCj4gKyAgICAvLw0KPiArICAgIC8vIFdlIGV4cGVjdCBhbnkgb3RoZXIgUEVJTXMgdGhh dCAiYm9ycm93IiBtZW1vcnkgc2ltaWxhcmx5IHRvIENwdU1wUGVpDQo+IHRvDQo+ICsgICAgLy8g cmVzdG9yZSB0aGUgb3JpZ2luYWwgY29udGVudHMuIEZ1cnRoZXJtb3JlLCB3ZSBleHBlY3QgYWxs IHN1Y2ggUEVJTXMNCj4gKyAgICAvLyAoQ3B1TXBQZWkgaW5jbHVkZWQpIHRvIGNsYWltIHRoZSBi b3Jyb3dlZCBhcmVhcyBieSBwcm9kdWNpbmcgbWVtb3J5DQo+ICsgICAgLy8gYWxsb2NhdGlvbiBI T0JzLCBhbmQgdG8gaG9ub3IgcHJlZXhpc3RlbnQgbWVtb3J5IGFsbG9jYXRpb24gSE9CcyB3aGVu DQo+ICsgICAgLy8gbG9va2luZyBmb3IgYW4gYXJlYSB0byBib3Jyb3cuDQo+ICsgICAgLy8NCj4g KyAgICBBZGRNZW1vcnlSYW5nZUhvYiAoMCwgQkFTRV81MTJLQiArIEJBU0VfMTI4S0IpOw0KPiAr ICB9IGVsc2Ugew0KPiArICAgIC8vDQo+ICsgICAgLy8gQ3JlYXRlIG1lbW9yeSBIT0JzDQo+ICsg ICAgLy8NCj4gKyAgICBBZGRNZW1vcnlSYW5nZUhvYiAoMCwgQkFTRV81MTJLQiArIEJBU0VfMTI4 S0IpOw0KPiArDQo+ICsgICAgaWYgKEZlYXR1cmVQY2RHZXQgKFBjZFNtbVNtcmFtUmVxdWlyZSkp IHsNCj4gKyAgICAgIFVJTlQzMiBUc2VnU2l6ZTsNCj4gKw0KPiArICAgICAgVHNlZ1NpemUgPSBt WDU4VHNlZ01ieXRlcyAqIFNJWkVfMU1COw0KPiArICAgICAgQWRkTWVtb3J5UmFuZ2VIb2IgKEJB U0VfMU1CLCBMb3dlck1lbW9yeVNpemUgLSBUc2VnU2l6ZSk7DQo+ICsgICAgICBBZGRSZXNlcnZl ZE1lbW9yeUJhc2VTaXplSG9iIChMb3dlck1lbW9yeVNpemUgLSBUc2VnU2l6ZSwgVHNlZ1NpemUs DQo+ICsgICAgICAgIFRSVUUpOw0KPiArDQo+ICsJICBCdWZmZXJTaXplID0gc2l6ZW9mKEVGSV9T TVJBTV9IT0JfREVTQ1JJUFRPUl9CTE9DSyk7DQo+ICsJICBTbXJhbVJhbmdlcyA9IDE7DQo+ICsN Cj4gKyAgICAgIEhvYi5SYXcgPSBCdWlsZEd1aWRIb2IoDQo+ICsgICAgICAgICAgJmdFZmlTbW1Q ZWlTbXJhbU1lbW9yeVJlc2VydmVHdWlkLA0KPiArICAgICAgICAgIEJ1ZmZlclNpemUNCj4gKyAg ICAgICk7DQo+ICsgICAgICBBU1NFUlQoSG9iLlJhdyk7DQo+ICsNCj4gKyAgICAgIFNtcmFtSG9i RGVzY3JpcHRvckJsb2NrID0gKEVGSV9TTVJBTV9IT0JfREVTQ1JJUFRPUl9CTE9DSw0KPiAqKShI b2IuUmF3KTsNCj4gKyAgICAgIFNtcmFtSG9iRGVzY3JpcHRvckJsb2NrLT5OdW1iZXJPZlNtbVJl c2VydmVkUmVnaW9ucyA9DQo+IFNtcmFtUmFuZ2VzOw0KPiArDQo+ICsgICAgICBTbXJhbUluZGV4 ID0gMDsNCj4gKyAgICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFNtcmFtUmFuZ2VzOyBJbmRl eCsrKSB7DQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFRoaXMgaXMgYW4gU01SQU0gcmFu Z2UsIGNyZWF0ZSBhbiBTTVJBTSBkZXNjcmlwdG9yDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAg IFNtcmFtSG9iRGVzY3JpcHRvckJsb2NrLT5EZXNjcmlwdG9yW1NtcmFtSW5kZXhdLlBoeXNpY2Fs U3RhcnQgPQ0KPiBMb3dlck1lbW9yeVNpemUgLSBUc2VnU2l6ZTsNCj4gKyAgICAgICAgU21yYW1I b2JEZXNjcmlwdG9yQmxvY2stPkRlc2NyaXB0b3JbU21yYW1JbmRleF0uQ3B1U3RhcnQgPQ0KPiBM b3dlck1lbW9yeVNpemUgLSBUc2VnU2l6ZTsNCj4gKyAgICAgICAgU21yYW1Ib2JEZXNjcmlwdG9y QmxvY2stPkRlc2NyaXB0b3JbU21yYW1JbmRleF0uUGh5c2ljYWxTaXplID0NCj4gVHNlZ1NpemU7 DQo+ICsgICAgICAgIFNtcmFtSG9iRGVzY3JpcHRvckJsb2NrLT5EZXNjcmlwdG9yW1NtcmFtSW5k ZXhdLlJlZ2lvblN0YXRlID0NCj4gRUZJX1NNUkFNX0NMT1NFRCB8IEVGSV9DQUNIRUFCTEU7DQo+ ICsgICAgICAgIFNtcmFtSW5kZXgrKzsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgIH0gZWxzZSB7 DQo+ICsgICAgICBBZGRNZW1vcnlSYW5nZUhvYiAoQkFTRV8xTUIsIExvd2VyTWVtb3J5U2l6ZSk7 DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBJZiBRRU1VIHByZXNlbnRzIGFu IEU4MjAgbWFwLCB0aGVuIGNyZWF0ZSBtZW1vcnkgSE9CcyBmb3IgdGhlID49NEdCDQo+IFJBTQ0K PiArICAgIC8vIGVudHJpZXMuIE90aGVyd2lzZSwgY3JlYXRlIGEgc2luZ2xlIG1lbW9yeSBIT0Ig d2l0aCB0aGUgZmxhdCA+PTRHQg0KPiArICAgIC8vIG1lbW9yeSBzaXplIHJlYWQgZnJvbSB0aGUg Q01PUy4NCj4gKyAgICAvLw0KPiArICAgIGlmIChVcHBlck1lbW9yeVNpemUgIT0gMCkgew0KPiAr ICAgICAgQWRkTWVtb3J5QmFzZVNpemVIb2IgKEJBU0VfNEdCLCBVcHBlck1lbW9yeVNpemUpOw0K PiArICAgIH0NCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUHVibGlzaCBzeXN0ZW0g UkFNIGFuZCByZXNlcnZlIG1lbW9yeSByZWdpb25zDQo+ICsNCj4gKyoqLw0KPiArVk9JRA0KPiAr SW5pdGlhbGl6ZVJhbVJlZ2lvbnMgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgUWVt dUluaXRpYWxpemVSYW0gKCk7DQo+ICsNCj4gKyAgaWYgKG1TM1N1cHBvcnRlZCAmJiBtQm9vdE1v ZGUgIT0gQk9PVF9PTl9TM19SRVNVTUUpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIFRoaXMgaXMg dGhlIG1lbW9yeSByYW5nZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgUEVJIG9uIFMzIHJlc3VtZQ0K PiArICAgIC8vDQo+ICsgICAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4gKyAgICAgIG1T M0FjcGlSZXNlcnZlZE1lbW9yeUJhc2UsDQo+ICsgICAgICBtUzNBY3BpUmVzZXJ2ZWRNZW1vcnlT aXplLA0KPiArICAgICAgRWZpQUNQSU1lbW9yeU5WUw0KPiArICAgICAgKTsNCj4gKw0KPiArICAg IC8vDQo+ICsgICAgLy8gQ292ZXIgdGhlIGluaXRpYWwgUkFNIGFyZWEgdXNlZCBhcyBzdGFjayBh bmQgdGVtcG9yYXJ5IFBFSSBoZWFwLg0KPiArICAgIC8vDQo+ICsgICAgLy8gVGhpcyBpcyByZXNl cnZlZCBhcyBBQ1BJIE5WUyBzbyBpdCBjYW4gYmUgdXNlZCBvbiBTMyByZXN1bWUuDQo+ICsgICAg Ly8NCj4gKyAgICBCdWlsZE1lbW9yeUFsbG9jYXRpb25Ib2IgKA0KPiArICAgICAgUGNkR2V0MzIg KFBjZFNpbWljc1NlY1BlaVRlbXBSYW1CYXNlKSwNCj4gKyAgICAgIFBjZEdldDMyIChQY2RTaW1p Y3NTZWNQZWlUZW1wUmFtU2l6ZSksDQo+ICsgICAgICBFZmlBQ1BJTWVtb3J5TlZTDQo+ICsgICAg ICApOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBTRUMgc3RvcmVzIGl0cyB0YWJsZSBvZiBH VUlEZWQgc2VjdGlvbiBoYW5kbGVycyBoZXJlLg0KPiArICAgIC8vDQo+ICsgICAgQnVpbGRNZW1v cnlBbGxvY2F0aW9uSG9iICgNCj4gKyAgICAgIFBjZEdldDY0IChQY2RHdWlkZWRFeHRyYWN0SGFu ZGxlclRhYmxlQWRkcmVzcyksDQo+ICsgICAgICBQY2RHZXQzMiAoUGNkR3VpZGVkRXh0cmFjdEhh bmRsZXJUYWJsZVNpemUpLA0KPiArICAgICAgRWZpQUNQSU1lbW9yeU5WUw0KPiArICAgICAgKTsN Cj4gKw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKG1Cb290TW9kZSAhPSBCT09UX09OX1MzX1JFU1VN RSkgew0KPiArICAgIGlmICghRmVhdHVyZVBjZEdldCAoUGNkU21tU21yYW1SZXF1aXJlKSkgew0K PiArICAgICAgLy8NCj4gKyAgICAgIC8vIFJlc2VydmUgdGhlIGxvY2sgYm94IHN0b3JhZ2UgYXJl YQ0KPiArICAgICAgLy8NCj4gKyAgICAgIC8vIFNpbmNlIHRoaXMgbWVtb3J5IHJhbmdlIHdpbGwg YmUgdXNlZCBvbiBTMyByZXN1bWUsIGl0IG11c3QgYmUNCj4gKyAgICAgIC8vIHJlc2VydmVkIGFz IEFDUEkgTlZTLg0KPiArICAgICAgLy8NCj4gKyAgICAgIC8vIElmIFMzIGlzIHVuc3VwcG9ydGVk LCB0aGVuIHZhcmlvdXMgZHJpdmVycyBtaWdodCBzdGlsbCB3cml0ZSB0byB0aGUNCj4gKyAgICAg IC8vIExvY2tCb3ggYXJlYS4gV2Ugb3VnaHQgdG8gcHJldmVudCBEWEUgZnJvbSBzZXJ2aW5nIGFs bG9jYXRpb24gcmVxdWVzdHMNCj4gKyAgICAgIC8vIHN1Y2ggdGhhdCB0aGV5IHdvdWxkIG92ZXJs YXAgdGhlIExvY2tCb3ggc3RvcmFnZS4NCj4gKyAgICAgIC8vDQo+ICsgICAgICBaZXJvTWVtICgN Cj4gKyAgICAgICAgKFZPSUQqKShVSU5UTikgUGNkR2V0MzIgKFBjZFNpbWljc0xvY2tCb3hTdG9y YWdlQmFzZSksDQo+ICsgICAgICAgIChVSU5UTikgUGNkR2V0MzIgKFBjZFNpbWljc0xvY2tCb3hT dG9yYWdlU2l6ZSkNCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIEJ1aWxkTWVtb3J5QWxsb2NhdGlv bkhvYiAoDQo+ICsgICAgICAgIChFRklfUEhZU0lDQUxfQUREUkVTUykoVUlOVE4pIFBjZEdldDMy DQo+IChQY2RTaW1pY3NMb2NrQm94U3RvcmFnZUJhc2UpLA0KPiArICAgICAgICAoVUlOVDY0KShV SU5UTikgUGNkR2V0MzIgKFBjZFNpbWljc0xvY2tCb3hTdG9yYWdlU2l6ZSksDQo+ICsgICAgICAg IG1TM1N1cHBvcnRlZCA/IEVmaUFDUElNZW1vcnlOVlMgOiBFZmlCb290U2VydmljZXNEYXRhDQo+ ICsgICAgICAgICk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKEZlYXR1cmVQY2RHZXQgKFBj ZFNtbVNtcmFtUmVxdWlyZSkpIHsNCj4gKyAgICAgIFVJTlQzMiBUc2VnU2l6ZTsNCj4gKw0KPiAr ICAgICAgLy8NCj4gKyAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgVFNFRyBhcmVhIHRoYXQgd2UgcmVw b3J0ZWQgYXMgYSByZXNlcnZlZCBtZW1vcnkNCj4gcmVzb3VyY2UNCj4gKyAgICAgIC8vIGNhbm5v dCBiZSB1c2VkIGZvciByZXNlcnZlZCBtZW1vcnkgYWxsb2NhdGlvbnMuDQo+ICsgICAgICAvLw0K PiArICAgICAgVHNlZ1NpemUgPSBtWDU4VHNlZ01ieXRlcyAqIFNJWkVfMU1COw0KPiArICAgICAg QnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4gKyAgICAgICAgR2V0U3lzdGVtTWVtb3J5U2l6 ZUJlbG93NGdiKCkgLSBUc2VnU2l6ZSwNCj4gKyAgICAgICAgVHNlZ1NpemUsDQo+ICsgICAgICAg IEVmaVJlc2VydmVkTWVtb3J5VHlwZQ0KPiArICAgICAgICApOw0KPiArICAgIH0NCj4gKyAgfQ0K PiArfQ0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1Bs YXRmb3JtUGVpL1BsYXRmb3JtLmMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwLi5lNjRiZGM3YzU2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmMNCj4gQEAg LTAsMCArMSw2MzEgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAy MDE2LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgIENv cHlyaWdodCAoYykgMjAxMSwgQW5kcmVpIFdhcmtlbnRpbiA8YW5kcmVpd0Btb3Rvcm9sYS5jb20+ DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gKyoqLw0KPiArDQo+ICsvLw0KPiArLy8gVGhlIHBhY2thZ2UgbGV2ZWwgaGVhZGVyIGZpbGVz IHRoaXMgbW9kdWxlIHVzZXMNCj4gKy8vDQo+ICsjaW5jbHVkZSA8UGlQZWkuaD4NCj4gKw0KPiAr Ly8NCj4gKy8vIFRoZSBMaWJyYXJ5IGNsYXNzZXMgdGhpcyBtb2R1bGUgY29uc3VtZXMNCj4gKy8v DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv SG9iTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUGNkTGli Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9QY2lMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L1BlaW1FbnRyeVBvaW50Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9QZWlTZXJ2aWNlc0xpYi5o Pg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUmVzb3VyY2VQdWJsaWNhdGlvbkxpYi5oPg0KPiArI2lu Y2x1ZGUgPEd1aWQvTWVtb3J5VHlwZUluZm9ybWF0aW9uLmg+DQo+ICsjaW5jbHVkZSA8UHBpL01h c3RlckJvb3RNb2RlLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9QY2kyMi5oPg0K PiArI2luY2x1ZGUgPFNpbWljc1BsYXRmb3Jtcy5oPg0KPiArDQo+ICsjaW5jbHVkZSAiUGxhdGZv cm0uaCINCj4gKyNpbmNsdWRlICJDbW9zLmgiDQo+ICsNCj4gK0VGSV9NRU1PUllfVFlQRV9JTkZP Uk1BVElPTiBtRGVmYXVsdE1lbW9yeVR5cGVJbmZvcm1hdGlvbltdID0gew0KPiArICB7IEVmaUFD UElNZW1vcnlOVlMsICAgICAgIDB4MDA0IH0sDQo+ICsgIHsgRWZpQUNQSVJlY2xhaW1NZW1vcnks ICAgMHgwMDggfSwNCj4gKyAgeyBFZmlSZXNlcnZlZE1lbW9yeVR5cGUsICAweDAwNCB9LA0KPiAr ICB7IEVmaVJ1bnRpbWVTZXJ2aWNlc0RhdGEsIDB4MDI0IH0sDQo+ICsgIHsgRWZpUnVudGltZVNl cnZpY2VzQ29kZSwgMHgwMzAgfSwNCj4gKyAgeyBFZmlCb290U2VydmljZXNDb2RlLCAgICAweDE4 MCB9LA0KPiArICB7IEVmaUJvb3RTZXJ2aWNlc0RhdGEsICAgIDB4RjAwIH0sDQo+ICsgIHsgRWZp TWF4TWVtb3J5VHlwZSwgICAgICAgMHgwMDAgfQ0KPiArfTsNCj4gKw0KPiArDQo+ICtFRklfUEVJ X1BQSV9ERVNDUklQVE9SICAgbVBwaUJvb3RNb2RlW10gPSB7DQo+ICsgIHsNCj4gKyAgICBFRklf UEVJX1BQSV9ERVNDUklQVE9SX1BQSSB8DQo+IEVGSV9QRUlfUFBJX0RFU0NSSVBUT1JfVEVSTUlO QVRFX0xJU1QsDQo+ICsgICAgJmdFZmlQZWlNYXN0ZXJCb290TW9kZVBwaUd1aWQsDQo+ICsgICAg TlVMTA0KPiArICB9DQo+ICt9Ow0KPiArDQo+ICsNCj4gK1VJTlQxNiBtSG9zdEJyaWRnZURldklk Ow0KPiArDQo+ICtFRklfQk9PVF9NT0RFIG1Cb290TW9kZSA9IEJPT1RfV0lUSF9GVUxMX0NPTkZJ R1VSQVRJT047DQo+ICsNCj4gK0JPT0xFQU4gbVMzU3VwcG9ydGVkID0gRkFMU0U7DQo+ICsNCj4g K1VJTlQzMiBtTWF4Q3B1Q291bnQ7DQo+ICsNCj4gK1ZPSUQNCj4gK0FkZElvTWVtb3J5QmFzZVNp emVIb2IgKA0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4g KyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeVNpemUNCj4gKyAgKQ0KPiArew0K PiArICBCdWlsZFJlc291cmNlRGVzY3JpcHRvckhvYiAoDQo+ICsgICAgRUZJX1JFU09VUkNFX01F TU9SWV9NQVBQRURfSU8sDQo+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1BSRVNFTlQg ICAgIHwNCj4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfSU5JVElBTElaRUQgfA0KPiAr ICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9VTkNBQ0hFQUJMRSB8DQo+ICsgICAgICBFRklf UkVTT1VSQ0VfQVRUUklCVVRFX1RFU1RFRCwNCj4gKyAgICBNZW1vcnlCYXNlLA0KPiArICAgIE1l bW9yeVNpemUNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICtWT0lEDQo+ICtBZGRSZXNlcnZlZE1l bW9yeUJhc2VTaXplSG9iICgNCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9y eUJhc2UsDQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlTaXplLA0KPiAr ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgQ2FjaGVhYmxlDQo+ICsgICkNCj4gK3sNCj4g KyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKA0KPiArICAgIEVGSV9SRVNPVVJDRV9NRU1P UllfUkVTRVJWRUQsDQo+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1BSRVNFTlQgICAg IHwNCj4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfSU5JVElBTElaRUQgfA0KPiArICAg ICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9VTkNBQ0hFQUJMRSB8DQo+ICsgICAgICAoQ2FjaGVh YmxlID8NCj4gKyAgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0NPTUJJTkVBQkxF IHwNCj4gKyAgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX1RIUk9VR0hfQ0FDSEVB QkxFIHwNCj4gKyAgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0JBQ0tfQ0FDSEVB QkxFIDoNCj4gKyAgICAgICAwDQo+ICsgICAgICAgKSB8DQo+ICsgICAgICBFRklfUkVTT1VSQ0Vf QVRUUklCVVRFX1RFU1RFRCwNCj4gKyAgICBNZW1vcnlCYXNlLA0KPiArICAgIE1lbW9yeVNpemUN Cj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICtWT0lEDQo+ICtBZGRJb01lbW9yeVJhbmdlSG9iICgN Cj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2UsDQo+ICsgIEVGSV9Q SFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlMaW1pdA0KPiArICApDQo+ICt7DQo+ICsgIEFk ZElvTWVtb3J5QmFzZVNpemVIb2IgKE1lbW9yeUJhc2UsIChVSU5UNjQpKE1lbW9yeUxpbWl0IC0N Cj4gTWVtb3J5QmFzZSkpOw0KPiArfQ0KPiArDQo+ICsNCj4gK1ZPSUQNCj4gK0FkZE1lbW9yeUJh c2VTaXplSG9iICgNCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2Us DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlTaXplDQo+ICsgICkNCj4g K3sNCj4gKyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKA0KPiArICAgIEVGSV9SRVNPVVJD RV9TWVNURU1fTUVNT1JZLA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9QUkVTRU5U IHwNCj4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfSU5JVElBTElaRUQgfA0KPiArICAg ICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9VTkNBQ0hFQUJMRSB8DQo+ICsgICAgICBFRklfUkVT T1VSQ0VfQVRUUklCVVRFX1dSSVRFX0NPTUJJTkVBQkxFIHwNCj4gKyAgICAgIEVGSV9SRVNPVVJD RV9BVFRSSUJVVEVfV1JJVEVfVEhST1VHSF9DQUNIRUFCTEUgfA0KPiArICAgICAgRUZJX1JFU09V UkNFX0FUVFJJQlVURV9XUklURV9CQUNLX0NBQ0hFQUJMRSB8DQo+ICsgICAgICBFRklfUkVTT1VS Q0VfQVRUUklCVVRFX1RFU1RFRCwNCj4gKyAgICBNZW1vcnlCYXNlLA0KPiArICAgIE1lbW9yeVNp emUNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsNCj4gK1ZPSUQNCj4gK0FkZE1lbW9yeVJhbmdl SG9iICgNCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2UsDQo+ICsg IEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlMaW1pdA0KPiArICApDQo+ICt7DQo+ ICsgIEFkZE1lbW9yeUJhc2VTaXplSG9iIChNZW1vcnlCYXNlLCAoVUlOVDY0KShNZW1vcnlMaW1p dCAtDQo+IE1lbW9yeUJhc2UpKTsNCj4gK30NCj4gKw0KPiArDQo+ICtWT0lEDQo+ICtBZGRVbnRl c3RlZE1lbW9yeUJhc2VTaXplSG9iICgNCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAg IE1lbW9yeUJhc2UsDQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlTaXpl DQo+ICsgICkNCj4gK3sNCj4gKyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKA0KPiArICAg IEVGSV9SRVNPVVJDRV9TWVNURU1fTUVNT1JZLA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJ QlVURV9QUkVTRU5UIHwNCj4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfSU5JVElBTEla RUQgfA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9VTkNBQ0hFQUJMRSB8DQo+ICsg ICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0NPTUJJTkVBQkxFIHwNCj4gKyAgICAg IEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVfVEhST1VHSF9DQUNIRUFCTEUgfA0KPiArICAg ICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9CQUNLX0NBQ0hFQUJMRSwNCj4gKyAgICBN ZW1vcnlCYXNlLA0KPiArICAgIE1lbW9yeVNpemUNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsN Cj4gK1ZPSUQNCj4gK0FkZFVudGVzdGVkTWVtb3J5UmFuZ2VIb2IgKA0KPiArICBFRklfUEhZU0lD QUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1Mg ICAgICAgIE1lbW9yeUxpbWl0DQo+ICsgICkNCj4gK3sNCj4gKyAgQWRkVW50ZXN0ZWRNZW1vcnlC YXNlU2l6ZUhvYiAoTWVtb3J5QmFzZSwgKFVJTlQ2NCkoTWVtb3J5TGltaXQgLQ0KPiBNZW1vcnlC YXNlKSk7DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK0FkZEZsYXNoRGV2aWNlUmFuZ2UgKA0KPiAr ICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gKyAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICAgIE1lbW9yeVNpemUNCj4gKyAgKQ0KPiArew0KPiArICBCdWlsZFJl c291cmNlRGVzY3JpcHRvckhvYiAoDQo+ICsgICAgRUZJX1JFU09VUkNFX0ZJUk1XQVJFX0RFVklD RSwNCj4gKyAgICAoRUZJX1JFU09VUkNFX0FUVFJJQlVURV9QUkVTRU5UICAgIHwNCj4gKyAgICAg IEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfSU5JVElBTElaRUQgfA0KPiArICAgICAgRUZJX1JFU09V UkNFX0FUVFJJQlVURV9VTkNBQ0hFQUJMRSksDQo+ICsgICAgTWVtb3J5QmFzZSwNCj4gKyAgICBN ZW1vcnlTaXplDQo+ICsgICAgKTsNCj4gKw0KPiArICBCdWlsZE1lbW9yeUFsbG9jYXRpb25Ib2Ig KA0KPiArICAgIE1lbW9yeUJhc2UsDQo+ICsgICAgTWVtb3J5U2l6ZSwNCj4gKyAgICBFZmlNZW1v cnlNYXBwZWRJTw0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK01lbU1hcEluaXRp YWxpemF0aW9uICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ2NCBQY2lJb0Jh c2U7DQo+ICsgIFVJTlQ2NCBQY2lJb1NpemU7DQo+ICsNCj4gKyAgVUlOVDMyICBUb3BPZkxvd1Jh bTsNCj4gKyAgVUlOVDY0ICBQY2lFeEJhckJhc2U7DQo+ICsgIFVJTlQzMiAgUGNpQmFzZTsNCj4g KyAgVUlOVDMyICBQY2lTaXplOw0KPiArDQo+ICsgIFBjaUlvQmFzZSA9IDB4QzAwMDsNCj4gKyAg UGNpSW9TaXplID0gMHg0MDAwOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENyZWF0ZSBNZW1vcnkg VHlwZSBJbmZvcm1hdGlvbiBIT0INCj4gKyAgLy8NCj4gKyAgQnVpbGRHdWlkRGF0YUhvYiAoDQo+ ICsgICAgJmdFZmlNZW1vcnlUeXBlSW5mb3JtYXRpb25HdWlkLA0KPiArICAgIG1EZWZhdWx0TWVt b3J5VHlwZUluZm9ybWF0aW9uLA0KPiArICAgIHNpemVvZihtRGVmYXVsdE1lbW9yeVR5cGVJbmZv cm1hdGlvbikNCj4gKyAgICApOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFZpZGVvIG1lbW9yeSAr IExlZ2FjeSBCSU9TIHJlZ2lvbg0KPiArICAvLw0KPiArICBBZGRJb01lbW9yeVJhbmdlSG9iICgw eDBBMDAwMCwgQkFTRV8xTUIpOw0KPiArDQo+ICsgIFRvcE9mTG93UmFtID0gR2V0U3lzdGVtTWVt b3J5U2l6ZUJlbG93NGdiICgpOw0KPiArICBQY2lFeEJhckJhc2UgPSAwOw0KPiArICBpZiAobUhv c3RCcmlkZ2VEZXZJZCA9PSBJTlRFTF9JQ0gxMF9ERVZJQ0VfSUQpIHsNCj4gKyAgICAvLw0KPiAr ICAgIC8vIFRoZSBNTUNPTkZJRyBhcmVhIGlzIGV4cGVjdGVkIHRvIGZhbGwgYmV0d2VlbiB0aGUg dG9wIG9mIGxvdyBSQU0gYW5kDQo+ICsgICAgLy8gdGhlIGJhc2Ugb2YgdGhlIDMyLWJpdCBQQ0kg aG9zdCBhcGVydHVyZS4NCj4gKyAgICAvLw0KPiArICAgIFBjaUV4QmFyQmFzZSA9IEZpeGVkUGNk R2V0NjQgKFBjZFBjaUV4cHJlc3NCYXNlQWRkcmVzcyk7DQo+ICsgICAgQVNTRVJUIChUb3BPZkxv d1JhbSA8PSBQY2lFeEJhckJhc2UpOw0KPiArICAgIEFTU0VSVCAoUGNpRXhCYXJCYXNlIDw9IE1B WF9VSU5UMzIgLSBTSVpFXzI1Nk1CKTsNCj4gKyAgICBQY2lCYXNlID0gKFVJTlQzMikoUGNpRXhC YXJCYXNlICsgU0laRV8yNTZNQik7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgUGNpQmFzZSA9IChU b3BPZkxvd1JhbSA8IEJBU0VfMkdCKSA/IEJBU0VfMkdCIDogVG9wT2ZMb3dSYW07DQo+ICsgIH0N Cj4gKw0KPiArICAvLw0KPiArICAvLyBhZGRyZXNzICAgICAgIHB1cnBvc2UgICBzaXplDQo+ICsg IC8vIC0tLS0tLS0tLS0tLSAgLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g KyAgLy8gMHgwMDAwMDAwMCAgICBUb3BPZkxvd1JhbSAgIDB4REYwMDAwMDANCj4gKyAgLy8gMHhE RjAwMDAwMCAgICBUc2VnK1VNQSAgICAgIDB4MDEwMDAwMDANCj4gKyAgLy8gMHhFMDAwMDAwMCAg ICBQY2lFeEJhckJhc2UgIDB4MTAwMDAwMDANCj4gKyAgLy8gMHhGMDAwMDAwMCAgICBQY2lCYXNl ICAgICAgIDB4MEMwMDAwMDANCj4gKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArICAvLyBtYXgodG9wLCAyZykgIFBDSSBNTUlPICAweEZD MDAwMDAwIC0gbWF4KHRvcCwgMmcpDQo+ICsgIC8vIDB4RkMwMDAwMDAgICAgZ2FwICAgICAgICAg ICAgICAgICAgICAgICAgICAgNDQgTUINCj4gKyAgLy8gMHhGRUMwMDAwMCAgICBJTy1BUElDICAg ICAgICAgICAgICAgICAgICAgICAgNCBLQg0KPiArICAvLyAweEZFQzAxMDAwICAgIGdhcCAgICAg ICAgICAgICAgICAgICAgICAgICAxMDIwIEtCDQo+ICsgIC8vIDB4RkVEMDAwMDAgICAgSFBFVCAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEgS0INCj4gKyAgLy8gMHhGRUQwMDQwMCAgICBnYXAg ICAgICAgICAgICAgICAgICAgICAgICAgIDExMSBLQg0KPiArICAvLyAweEZFRDFDMDAwICAgIGdh cCAoUElJWDQpIC8gUkNSQiAoSUNIOSkgICAgIDE2IEtCDQo+ICsgIC8vIDB4RkVEMjAwMDAgICAg Z2FwICAgICAgICAgICAgICAgICAgICAgICAgICA4OTYgS0INCj4gKyAgLy8gMHhGRUUwMDAwMCAg ICBMQVBJQyAgICAgICAgICAgICAgICAgICAgICAgICAgMSBNQg0KPiArICAvLw0KPiArICBQY2lT aXplID0gMHhGQzAwMDAwMCAtIFBjaUJhc2U7DQo+ICsgIEFkZElvTWVtb3J5QmFzZVNpemVIb2Ig KFBjaUJhc2UsIFBjaVNpemUpOw0KPiArICBQY2RTZXQ2NCAoUGNkUGNpTW1pbzMyQmFzZSwgUGNp QmFzZSk7DQo+ICsgIFBjZFNldDY0IChQY2RQY2lNbWlvMzJTaXplLCBQY2lTaXplKTsNCj4gKyAg QWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoMHhGRUMwMDAwMCwgU0laRV80S0IpOw0KPiArICBBZGRJ b01lbW9yeUJhc2VTaXplSG9iICgweEZFRDAwMDAwLCBTSVpFXzFLQik7DQo+ICsgIGlmIChtSG9z dEJyaWRnZURldklkID09IElOVEVMX0lDSDEwX0RFVklDRV9JRCkgew0KPiArICAgIEFkZElvTWVt b3J5QmFzZVNpemVIb2IgKElDSDEwX1JPT1RfQ09NUExFWF9CQVNFLCBTSVpFXzE2S0IpOw0KPiAr ICAgIC8vDQo+ICsgICAgLy8gTm90ZTogdGhlcmUgc2hvdWxkIGJlIGFuDQo+ICsgICAgLy8NCj4g KyAgICAvLyAgIEFkZElvTWVtb3J5QmFzZVNpemVIb2IgKFBjaUV4QmFyQmFzZSwgU0laRV8yNTZN Qik7DQo+ICsgICAgLy8gICBCdWlsZE1lbW9yeUFsbG9jYXRpb25Ib2IgKFBjaUV4QmFyQmFzZSwg U0laRV8yNTZNQiwNCj4gRWZpTWVtb3J5TWFwcGVkSU8pOw0KPiArICAgIC8vDQo+ICsgICAgLy8g Y2FsbCBiZWxvdywganVzdCBsaWtlIHRoZSBvbmUgYWJvdmUgZm9yIFJDQkEuIEhvd2V2ZXIsIExp bnV4IGluc2lzdHMNCj4gKyAgICAvLyB0aGF0IHRoZSBNTUNPTkZJRyBhcmVhIGJlIG1hcmtlZCBp biB0aGUgRTgyMCBvciBVRUZJIG1lbW9yeSBtYXAgYXMNCj4gKyAgICAvLyAicmVzZXJ2ZWQgbWVt b3J5IiAtLSBMaW51eCBkb2VzIG5vdCBjb250ZW50IGl0c2VsZiB3aXRoIGEgc2ltcGxlIGdhcA0K PiArICAgIC8vIGluIHRoZSBtZW1vcnkgbWFwIHdoZXJldmVyIHRoZSBNQ0ZHIEFDUEkgdGFibGUg cG9pbnRzIHRvLg0KPiArICAgIC8vDQo+ICsgICAgLy8gVGhpcyBhcHBlYXJzIHRvIGJlIGEgc2Fm ZXR5IG1lYXN1cmUuIFRoZSBQQ0kgRmlybXdhcmUgU3BlY2lmaWNhdGlvbg0KPiArICAgIC8vIChy ZXYgMy4xKSBzYXlzIGluIDQuMS4yLiAiTUNGRyBUYWJsZSBEZXNjcmlwdGlvbiI6ICJUaGUgcmVz b3VyY2VzIGNhbg0KPiArICAgIC8vICpvcHRpb25hbGx5KiBiZSByZXR1cm5lZCBpbiBbLi4uXSBF RklHZXRNZW1vcnlNYXAgYXMgcmVzZXJ2ZWQgbWVtb3J5DQo+ICsgICAgLy8gWy4uLl0iLiAoRW1w aGFzaXMgYWRkZWQgaGVyZS4pDQo+ICsgICAgLy8NCj4gKyAgICAvLyBOb3JtYWxseSB3ZSBhZGQg bWVtb3J5IHJlc291cmNlIGRlc2NyaXB0b3IgSE9CcyBpbg0KPiArICAgIC8vIFFlbXVJbml0aWFs aXplUmFtKCksIGFuZCBwcmUtYWxsb2NhdGUgZnJvbSB0aG9zZSB3aXRoIG1lbW9yeQ0KPiArICAg IC8vIGFsbG9jYXRpb24gSE9CcyBpbiBJbml0aWFsaXplUmFtUmVnaW9ucygpLiBIb3dldmVyLCB0 aGUgTU1DT05GSUcgYXJlYQ0KPiArICAgIC8vIGlzIG1vc3QgZGVmaW5pdGVseSBub3QgUkFNOyBz bywgYXMgYW4gZXhjZXB0aW9uLCBjb3ZlciBpdCB3aXRoDQo+ICsgICAgLy8gdW5jYWNoZWFibGUg cmVzZXJ2ZWQgbWVtb3J5IHJpZ2h0IGhlcmUuDQo+ICsgICAgLy8NCj4gKyAgICAgIEFkZFJlc2Vy dmVkTWVtb3J5QmFzZVNpemVIb2IgKFBjaUV4QmFyQmFzZSwgU0laRV8yNTZNQiwgRkFMU0UpOw0K PiArICAgICAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iIChQY2lFeEJhckJhc2UsIFNJWkVfMjU2 TUIsDQo+ICsgICAgICAgIEVmaVJlc2VydmVkTWVtb3J5VHlwZSk7DQo+ICsgIH0NCj4gKyAgQWRk SW9NZW1vcnlCYXNlU2l6ZUhvYiAoUGNkR2V0MzIoUGNkQ3B1TG9jYWxBcGljQmFzZUFkZHJlc3Mp LA0KPiBTSVpFXzFNQik7DQo+ICsNCj4gKyAgLy8gQWRkIFBDSSBJTyBQb3J0IHNwYWNlIGF2YWls YWJsZSBmb3IgUENJIHJlc291cmNlIGFsbG9jYXRpb25zLg0KPiArICAvLw0KPiArICBCdWlsZFJl c291cmNlRGVzY3JpcHRvckhvYiAoDQo+ICsgICAgRUZJX1JFU09VUkNFX0lPLA0KPiArICAgIEVG SV9SRVNPVVJDRV9BVFRSSUJVVEVfUFJFU0VOVCAgICAgfA0KPiArICAgIEVGSV9SRVNPVVJDRV9B VFRSSUJVVEVfSU5JVElBTElaRUQsDQo+ICsgICAgUGNpSW9CYXNlLA0KPiArICAgIFBjaUlvU2l6 ZQ0KPiArICAgICk7DQo+ICsgIFBjZFNldDY0IChQY2RQY2lJb0Jhc2UsIFBjaUlvQmFzZSk7DQo+ ICsgIFBjZFNldDY0IChQY2RQY2lJb1NpemUsIFBjaUlvU2l6ZSk7DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gQWRkIGZsYXNoIHJhbmdlLg0KPiArICAvLw0KPiArICBBZGRGbGFzaERldmljZVJhbmdl IChQY2RHZXQzMihQY2RGbGFzaEFyZWFCYXNlQWRkcmVzcyksDQo+IFBjZEdldDMyKFBjZEZsYXNo QXJlYVNpemUpKTsNCj4gKyAgLy8NCj4gKyAgLy8gVmlkZW8gbWVtb3J5IC8gQUJTRUcNCj4gKyAg Ly8NCj4gKyAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoMHgwQTAwMDAsIDB4MjAwMDApOw0KPiAr ICAvLw0KPiArICAvLyBMZWdhY3kgQklPUyByZWdpb24uDQo+ICsgIC8vDQo+ICsgIEFkZFJlc2Vy dmVkTWVtb3J5QmFzZVNpemVIb2IgKDB4QzAwMDAsIDB4NDAwMDAsIFRSVUUpOw0KPiArfQ0KPiAr DQo+ICtWT0lEDQo+ICtNaXNjSW5pdGlhbGl6YXRpb24gKA0KPiArICBWT0lEDQo+ICsgICkNCj4g K3sNCj4gKyAgVUlOVE4gICAgICAgICBQbUNtZDsNCj4gKyAgVUlOVE4gICAgICAgICBQbWJhOw0K PiArICBVSU5UMzIgICAgICAgIFBtYmFBbmRWYWw7DQo+ICsgIFVJTlQzMiAgICAgICAgUG1iYU9y VmFsOw0KPiArICBVSU5UTiAgICAgICAgIEFjcGlDdGxSZWc7DQo+ICsgIFVJTlQ4ICAgICAgICAg QWNwaUVuQml0Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIERpc2FibGUgQTIwIE1hc2sNCj4gKyAg Ly8NCj4gKyAgSW9PcjggKDB4OTIsIEJJVDEpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEJ1aWxk IHRoZSBDUFUgSE9CIHdpdGggZ3Vlc3QgUkFNIHNpemUgZGVwZW5kZW50IGFkZHJlc3Mgd2lkdGgg YW5kIDE2LQ0KPiBiaXRzDQo+ICsgIC8vIG9mIElPIHNwYWNlLiAoU2lkZSBub3RlOiB1bmxpa2Ug b3RoZXIgSE9CcywgdGhlIENQVSBIT0IgaXMgbmVlZGVkIGR1cmluZw0KPiArICAvLyBTMyByZXN1 bWUgYXMgd2VsbCwgc28gd2UgYnVpbGQgaXQgdW5jb25kaXRpb25hbGx5LikNCj4gKyAgLy8NCj4g KyAgQnVpbGRDcHVIb2IgKG1QaHlzTWVtQWRkcmVzc1dpZHRoLCAxNik7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gRGV0ZXJtaW5lIHBsYXRmb3JtIHR5cGUgYW5kIHNhdmUgSG9zdCBCcmlkZ2UgRElE IHRvIFBDRA0KPiArICAvLw0KPiArICBzd2l0Y2ggKG1Ib3N0QnJpZGdlRGV2SWQpIHsNCj4gKyAg ICBjYXNlIElOVEVMXzgyNDQxX0RFVklDRV9JRDoNCj4gKyAgICAgIFBtQ21kICAgICAgPSBQT1dF Ul9NR01UX1JFR0lTVEVSX1BJSVg0IChQQ0lfQ09NTUFORF9PRkZTRVQpOw0KPiArICAgICAgUG1i YSAgICAgICA9IFBPV0VSX01HTVRfUkVHSVNURVJfUElJWDQgKFBJSVg0X1BNQkEpOw0KPiArICAg ICAgUG1iYUFuZFZhbCA9IH4oVUlOVDMyKVBJSVg0X1BNQkFfTUFTSzsNCj4gKyAgICAgIFBtYmFP clZhbCAgPSBQSUlYNF9QTUJBX1ZBTFVFOw0KPiArICAgICAgQWNwaUN0bFJlZyA9IFBPV0VSX01H TVRfUkVHSVNURVJfUElJWDQgKFBJSVg0X1BNUkVHTUlTQyk7DQo+ICsgICAgICBBY3BpRW5CaXQg ID0gUElJWDRfUE1SRUdNSVNDX1BNSU9TRTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGNhc2Ug SU5URUxfSUNIMTBfREVWSUNFX0lEOg0KPiArICAgICAgUG1DbWQgICAgICA9IFBPV0VSX01HTVRf UkVHSVNURVJfSUNIMTAgKFBDSV9DT01NQU5EX09GRlNFVCk7DQo+ICsgICAgICBQbWJhICAgICAg ID0gUE9XRVJfTUdNVF9SRUdJU1RFUl9JQ0gxMCAoSUNIMTBfUE1CQVNFKTsNCj4gKyAgICAgIFBt YmFBbmRWYWwgPSB+KFVJTlQzMilJQ0gxMF9QTUJBU0VfTUFTSzsNCj4gKyAgICAgIFBtYmFPclZh bCAgPSBJQ0gxMF9QTUJBU0VfVkFMVUU7DQo+ICsgICAgICBBY3BpQ3RsUmVnID0gUE9XRVJfTUdN VF9SRUdJU1RFUl9JQ0gxMCAoSUNIMTBfQUNQSV9DTlRMKTsNCj4gKyAgICAgIEFjcGlFbkJpdCAg PSBJQ0gxMF9BQ1BJX0NOVExfQUNQSV9FTjsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGRlZmF1 bHQ6DQo+ICsgICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiJWE6IFVua25vd24gSG9zdCBCcmlk Z2UgRGV2aWNlIElEOiAweCUwNHhcbiIsDQo+ICsgICAgICAgIF9fRlVOQ1RJT05fXywgbUhvc3RC cmlkZ2VEZXZJZCkpOw0KPiArICAgICAgQVNTRVJUIChGQUxTRSk7DQo+ICsgICAgICByZXR1cm47 DQo+ICsgIH0NCj4gKyAgUGNkU2V0MTYgKFBjZFNpbWljc1g1OEhvc3RCcmlkZ2VQY2lEZXZJZCwg bUhvc3RCcmlkZ2VEZXZJZCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSWYgdGhlIGFwcHJvcHJp YXRlIElPc3BhY2UgZW5hYmxlIGJpdCBpcyBzZXQsIGFzc3VtZSB0aGUgQUNQSSBQTUJBDQo+ICsg IC8vIGhhcyBiZWVuIGNvbmZpZ3VyZWQgYW5kIHNraXAgdGhlIHNldHVwIGhlcmUuDQo+ICsgIC8v IFRoaXMgbWF0Y2hlcyB0aGUgbG9naWMgaW4gQWNwaVRpbWVyTGliQ29uc3RydWN0b3IgKCkuDQo+ ICsgIC8vDQo+ICsgIGlmICgoUGNpUmVhZDggKEFjcGlDdGxSZWcpICYgQWNwaUVuQml0KSA9PSAw KSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBUaGUgUEVJIHBoYXNlIHNob3VsZCBiZSBleGl0ZWQg d2l0aCBmdWxseSBhY2Nlc3NpYmUgQUNQSSBQTSBJTyBzcGFjZToNCj4gKyAgICAvLyAxLiBzZXQg UE1CQQ0KPiArICAgIC8vDQo+ICsgICAgUGNpQW5kVGhlbk9yMzIgKFBtYmEsIFBtYmFBbmRWYWws IFBtYmFPclZhbCk7DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIDIuIHNldCBQQ0lDTUQvSU9T RQ0KPiArICAgIC8vDQo+ICsgICAgUGNpT3I4IChQbUNtZCwgRUZJX1BDSV9DT01NQU5EX0lPX1NQ QUNFKTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gMy4gc2V0IEFDUEkgUE0gSU8gZW5hYmxl IGJpdCAoUE1SRUdNSVNDOlBNSU9TRSBvcg0KPiBBQ1BJX0NOVEw6QUNQSV9FTikNCj4gKyAgICAv Lw0KPiArICAgIFBjaU9yOCAoQWNwaUN0bFJlZywgQWNwaUVuQml0KTsNCj4gKyAgfQ0KPiArDQo+ ICsgIGlmIChtSG9zdEJyaWRnZURldklkID09IElOVEVMX0lDSDEwX0RFVklDRV9JRCkgew0KPiAr ICAgIC8vDQo+ICsgICAgLy8gU2V0IFJvb3QgQ29tcGxleCBSZWdpc3RlciBCbG9jayBCQVINCj4g KyAgICAvLw0KPiArICAgIFBjaVdyaXRlMzIgKA0KPiArICAgICAgUE9XRVJfTUdNVF9SRUdJU1RF Ul9JQ0gxMCAoSUNIMTBfUkNCQSksDQo+ICsgICAgICBJQ0gxMF9ST09UX0NPTVBMRVhfQkFTRSB8 IElDSDEwX1JDQkFfRU4NCj4gKyAgICAgICk7DQo+ICsNCj4gKyAgfQ0KPiArICAvLw0KPiArICAv LyBTZXQgdGhlIFBNIEkvTyBiYXNlIGFkZHJlc3MgdG8gMHg0MDANCj4gKyAgLy8NCj4gKyAgUGNp QW5kVGhlbk9yMzIgKA0KPiArICAgIFBDSV9MSUJfQUREUkVTUyAoDQo+ICsgICAgICAwLA0KPiAr ICAgICAgMzEsDQo+ICsgICAgICAwLA0KPiArICAgICAgMHg0MA0KPiArICAgICAgKSwNCj4gKyAg ICAoVUlOVDMyKSB+MHhmYzAsIElDSDEwX1BNQkFTRV9WQUxVRQ0KPiArICAgICk7DQo+ICsgIC8v DQo+ICsgIC8vIEVuYWJsZSBBSENJIGFuZCBhbGwgcG9ydHMgb24gdGhlIFNBVEEgY29udHJvbGxl ci4NCj4gKyAgLy8NCj4gKyAgLy8gQWRkcmVzcyBNQVAgUmVnLCBzZXR0aW5nIEFIQ0kgbW9kZQ0K PiArICAvLw0KPiArICBQY2lPcjE2IChQQ0lfTElCX0FERFJFU1MgKDAsIDMxLCAyLCAweDkwKSwg MHgwMDYwKTsNCj4gKyAgLy8NCj4gKyAgLy9FbmFibGluZyBQb3J0cyAwLTUNCj4gKyAgLy8NCj4g KyAgUGNpT3IxNiAoUENJX0xJQl9BRERSRVNTICgwLCAzMSwgMiwgMHg5MiksIDB4MDAzRik7DQo+ ICsgIC8vDQo+ICsgIC8vRGlzYWJsaW5nIFNhdGEgQ29udHJvbGxlciAyLCBiaXQgMjUgPSAxLCBi aXQgMCA9IDENCj4gKyAgLy8NCj4gKyAgTW1pb1dyaXRlMzIoMHhGRUQxRjQxOCwgMHgwMjAwMDAw MSk7DQo+ICsgIC8vDQo+ICsgIC8vRW5hYmxlIEhQRVQgYXQgRkVEMF8wMDAwaCDigJMgRkVEMF8w M0ZGaA0KPiArICAvLw0KPiArICBNbWlvV3JpdGU4KElDSDEwX1JPT1RfQ09NUExFWF9CQVNFICsg MHgzNDA0LCAweDgwKTsNCj4gKyAgLy8NCj4gKyAgLy9Db25maWcgYW5kIGVuYWJsZSBBUElDDQo+ ICsgIC8vDQo+ICsgIE1taW9Xcml0ZTMyKDB4RkVDMDAwMDAgKyAwWDAsIDApOw0KPiArICBNbWlv V3JpdGUzMigweEZFQzAwMDAwICsgMFgxMCwgUGNkR2V0OChQY2RJb0FwaWNJZCk8PDI0KTsNCj4g KyAgTW1pb1dyaXRlOChJQ0gxMF9ST09UX0NPTVBMRVhfQkFTRSArIDB4MzFGRiwgMHgwMSk7DQo+ ICt9DQo+ICsNCj4gKw0KPiArVk9JRA0KPiArQm9vdE1vZGVJbml0aWFsaXphdGlvbiAoDQo+ICsg IFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgIFN0YXR1czsNCj4gKw0KPiAr IERFQlVHKChFRklfRF9JTkZPLCAibW9kZVZhbHVlID0gJXhcbiIsDQo+IElvQml0RmllbGRSZWFk MTYoSUNIMTBfUE1CQVNFX0lPICsgNCwgMTAsIDEyKSkpOw0KPiArICBpZiAoSW9CaXRGaWVsZFJl YWQxNihJQ0gxMF9QTUJBU0VfSU8gKyA0LCAxMCwgMTIpID09IDB4NSkgew0KPiArICAgIG1Cb290 TW9kZSA9IEJPT1RfT05fUzNfUkVTVU1FOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gUGVp U2VydmljZXNTZXRCb290TW9kZSAobUJvb3RNb2RlKTsNCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAo U3RhdHVzKTsNCj4gKw0KPiArICBTdGF0dXMgPSBQZWlTZXJ2aWNlc0luc3RhbGxQcGkgKG1QcGlC b290TW9kZSk7DQo+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ICt9DQo+ICsNCj4g Kw0KPiArVk9JRA0KPiArUmVzZXJ2ZUVtdVZhcmlhYmxlTnZTdG9yZSAoDQo+ICsgICkNCj4gK3sN Cj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgVmFyaWFibGVTdG9yZTsNCj4gKw0KPiArICAvLw0K PiArICAvLyBBbGxvY2F0ZSBzdG9yYWdlIGZvciBOViB2YXJpYWJsZXMgZWFybHkgb24gc28gaXQg d2lsbCBiZQ0KPiArICAvLyBhdCBhIGNvbnNpc3RlbnQgYWRkcmVzcy4gIFNpbmNlIFZNIG1lbW9y eSBpcyBwcmVzZXJ2ZWQNCj4gKyAgLy8gYWNyb3NzIHJlYm9vdHMsIHRoaXMgYWxsb3dzIHRoZSBO ViB2YXJpYWJsZSBzdG9yYWdlIHRvIHN1cnZpdmUNCj4gKyAgLy8gYSBWTSByZWJvb3QuDQo+ICsg IC8vDQo+ICsgIFZhcmlhYmxlU3RvcmUgPQ0KPiArICAgIChFRklfUEhZU0lDQUxfQUREUkVTUyko VUlOVE4pDQo+ICsgICAgICBBbGxvY2F0ZVJ1bnRpbWVQYWdlcyAoDQo+ICsgICAgICAgIEVGSV9T SVpFX1RPX1BBR0VTICgyICogUGNkR2V0MzIgKFBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVTaXpl KSkNCj4gKyAgICAgICAgKTsNCj4gKyAgREVCVUcgKChFRklfRF9JTkZPLA0KPiArICAgICAgICAg ICJSZXNlcnZlZCB2YXJpYWJsZSBzdG9yZSBtZW1vcnk6IDB4JWxYOyBzaXplOiAlZGtiXG4iLA0K PiArICAgICAgICAgIFZhcmlhYmxlU3RvcmUsDQo+ICsgICAgICAgICAgKDIgKiBQY2RHZXQzMiAo UGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUpKSAvIDEwMjQNCj4gKyAgICAgICAgKSk7DQo+ ICsgIFBjZFNldDY0IChQY2RFbXVWYXJpYWJsZU52U3RvcmVSZXNlcnZlZCwgVmFyaWFibGVTdG9y ZSk7DQo+ICt9DQo+ICsNCj4gKw0KPiArVk9JRA0KPiArU2ltaWNzVmVyc2lvbkNoZWNrKA0KPiAr ICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKw0KPiArICBVSU5UTiAgICAgICAgICAgUGNpQWRkclB0 cjsNCj4gKyAgVUlOVDggICAgICAgICAgIENhcE9mZnNldDsNCj4gKyAgU1RBVElDIENIQVI4ICAg IFNpbWljc1N0clsweDEwMF07DQo+ICsgIFVJTlROICAgICAgICAgICBpOw0KPiArICBVSU5UMzIg ICAgICAgICAgTWFqb3JWZXJzaW9uOw0KPiArICBVSU5UMzIgICAgICAgICAgTWlub3JWZXJzaW9u Ow0KPiArICBVSU5UMzIgICAgICAgICAgTW9kZWxOdW1iZXI7DQo+ICsNCj4gKyAgUGNpQWRkclB0 ciA9IFBDSV9MSUJfQUREUkVTUygwLCBTSU1JQ1NfU0lERUJBTkRQQ0lfREVWLA0KPiBTSU1JQ1Nf U0lERUJBTkRQQ0lfRlVOQywgMCk7DQo+ICsgIENhcE9mZnNldCA9IFBjaVJlYWQ4KFBjaUFkZHJQ dHIgKyBQQ0lfQ0FQQklMSVRZX1BPSU5URVJfT0ZGU0VUKTsNCj4gKyAgaWYgKENhcE9mZnNldCAh PSAweEZGKSB7DQo+ICsgICAgTW9kZWxOdW1iZXIgPSBQY2lSZWFkMzIoUGNpQWRkclB0ciArIENh cE9mZnNldCArIDQpOw0KPiArICAgIE1ham9yVmVyc2lvbiA9IFBjaVJlYWQzMihQY2lBZGRyUHRy ICsgQ2FwT2Zmc2V0ICsgOCk7DQo+ICsgICAgTWlub3JWZXJzaW9uID0gUGNpUmVhZDMyKFBjaUFk ZHJQdHIgKyBDYXBPZmZzZXQgKyAweGMpOw0KPiArICAgIGZvciAoaSA9IDA7IGkgPCAweDgwOyBp KyspIHsNCj4gKyAgICAgIFNpbWljc1N0cltpXSA9IFBjaVJlYWQ4KFBjaUFkZHJQdHIgKyBDYXBP ZmZzZXQgKyAweDEwICsgaSk7DQo+ICsgICAgfQ0KPiArICAgIERFQlVHKChFRklfRF9JTkZPLCAi PT09PT09PT09PT09PVNJTUlDUyBWZXJzaW9uDQo+IGluZm89PT09PT09PT09PT09XG4iKSk7DQo+ ICsgICAgREVCVUcoKEVGSV9EX0lORk8sICJNb2RlbCBudW1iZXIgPSAlZFxuIiwgTW9kZWxOdW1i ZXIpKTsNCj4gKyAgICBERUJVRygoRUZJX0RfSU5GTywgIk1ham9yIHZlcnNpb24gPSAlZFxuIiwg TWFqb3JWZXJzaW9uKSk7DQo+ICsgICAgREVCVUcoKEVGSV9EX0lORk8sICJNaW5vciB2ZXJzaW9u ID0gJWRcbiIsIE1pbm9yVmVyc2lvbikpOw0KPiArICAgIERFQlVHKChFRklfRF9JTkZPLCAiJWFc biIsIFNpbWljc1N0cikpOw0KPiArICAgIERFQlVHKChFRklfRF9JTkZPLA0KPiAiPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKSk7DQo+ICsgIH0NCj4gK30N Cj4gKw0KPiArVk9JRA0KPiArRGVidWdEdW1wQ21vcyAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiAr ew0KPiArICBVSU5UMzIgTG9vcDsNCj4gKw0KPiArICBERUJVRyAoKEVGSV9EX0lORk8sICJDTU9T OlxuIikpOw0KPiArDQo+ICsgIGZvciAoTG9vcCA9IDA7IExvb3AgPCAweDgwOyBMb29wKyspIHsN Cj4gKyAgICBpZiAoKExvb3AgJSAweDEwKSA9PSAwKSB7DQo+ICsgICAgICBERUJVRyAoKEVGSV9E X0lORk8sICIlMDJ4OiIsIExvb3ApKTsNCj4gKyAgICB9DQo+ICsgICAgREVCVUcgKChFRklfRF9J TkZPLCAiICUwMngiLCBDbW9zUmVhZDggKExvb3ApKSk7DQo+ICsgICAgaWYgKChMb29wICUgMHgx MCkgPT0gMHhmKSB7DQo+ICsgICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJcbiIpKTsNCj4gKyAg ICB9DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgRmV0Y2ggdGhlIG51bWJl ciBvZiBib290IENQVXMgZnJvbSBRRU1VIGFuZCBleHBvc2UgaXQgdG8gVWVmaUNwdVBrZw0KPiBt b2R1bGVzLg0KPiArICBTZXQgdGhlIG1NYXhDcHVDb3VudCB2YXJpYWJsZS4NCj4gKyoqLw0KPiAr Vk9JRA0KPiArTWF4Q3B1Q291bnRJbml0aWFsaXphdGlvbiAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0K PiArew0KPiArICBtTWF4Q3B1Q291bnQgPSBQY2RHZXQzMiAoUGNkQ3B1TWF4TG9naWNhbFByb2Nl c3Nvck51bWJlcik7DQo+ICsgIHJldHVybjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIERldGVy bWluZSBpZiBTMyBzdXBwb3J0IGlzIGV4cGxpY2l0bHkgZW5hYmxlZC4NCj4gKw0KPiArICBAcmV0 dmFsICBUUlVFICAgSWYgUzMgc3VwcG9ydCBpcyBleHBsaWNpdGx5IGVuYWJsZWQuIE90aGVyIGZ1 bmN0aW9ucyBpbiB0aGlzDQo+ICsgIGxpYnJhcnkgbWF5IGJlIGNhbGxlZCAoc3ViamVjdCB0byB0 aGVpciBpbmRpdmlkdWFsDQo+ICsgIHJlc3RyaWN0aW9ucykuDQo+ICsNCj4gKyAgRkFMU0UgIE90 aGVyd2lzZS4gVGhpcyBpbmNsdWRlcyB1bmF2YWlsYWJpbGl0eSBvZiB0aGUgZmlybXdhcmUNCj4g KyAgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIE5vIG90aGVyIGZ1bmN0aW9uIGluIHRoaXMgbGli cmFyeQ0KPiArICBtdXN0IGJlIGNhbGxlZC4NCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArRUZJQVBJ DQo+ICtRZW11RndDZmdTM0VuYWJsZWQoDQo+ICsgIFZPSUQNCj4gKykNCj4gK3sNCj4gKyAgLy9U TyBETyBJRiBORUVERUQNCj4gKyAgcmV0dXJuIFRSVUU7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiAr ICBQZXJmb3JtIFBsYXRmb3JtIFBFSSBpbml0aWFsaXphdGlvbi4NCj4gKw0KPiArICBAcGFyYW0g IEZpbGVIYW5kbGUgICAgICBIYW5kbGUgb2YgdGhlIGZpbGUgYmVpbmcgaW52b2tlZC4NCj4gKyAg QHBhcmFtICBQZWlTZXJ2aWNlcyAgICAgRGVzY3JpYmVzIHRoZSBsaXN0IG9mIHBvc3NpYmxlIFBF SSBTZXJ2aWNlcy4NCj4gKw0KPiArICBAcmV0dXJuIEVGSV9TVUNDRVNTICAgICBUaGUgUEVJTSBp bml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtJbml0aWFsaXplUGxhdGZvcm0gKA0KPiArICBJTiAgICAgICBFRklfUEVJX0ZJ TEVfSEFORExFICBGaWxlSGFuZGxlLA0KPiArICBJTiBDT05TVCBFRklfUEVJX1NFUlZJQ0VTICAg ICAqKlBlaVNlcnZpY2VzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICBTdGF0dXM7 DQo+ICsNCj4gKyAgREVCVUcgKChFRklfRF9FUlJPUiwgIlBsYXRmb3JtIFBFSU0gTG9hZGVkXG4i KSk7DQo+ICsNCj4gKyAgU2ltaWNzVmVyc2lvbkNoZWNrICgpOw0KPiArICBEZWJ1Z0R1bXBDbW9z ICgpOw0KPiArDQo+ICsgIGlmIChRZW11RndDZmdTM0VuYWJsZWQgKCkpIHsNCj4gKyAgICBERUJV RyAoKEVGSV9EX0lORk8sICJTMyBzdXBwb3J0IHdhcyBkZXRlY3RlZCBvbiBTSU1JQ1NcbiIpKTsN Cj4gKyAgICBtUzNTdXBwb3J0ZWQgPSBUUlVFOw0KPiArICAgIFN0YXR1cyA9IFBjZFNldEJvb2xT IChQY2RBY3BpUzNFbmFibGUsIFRSVUUpOw0KPiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+ICsgIH0NCj4gKyAgQWRkcmVzc1dpZHRoSW5pdGlhbGl6YXRpb24gKCk7DQo+ICsgIE1h eENwdUNvdW50SW5pdGlhbGl6YXRpb24gKCk7DQo+ICsNCj4gKyAgbUhvc3RCcmlkZ2VEZXZJZCA9 IFBjaVJlYWQxNihTSU1JQ1NfSE9TVEJSSURHRV9ESUQpOw0KPiArDQo+ICsgIGlmIChGZWF0dXJl UGNkR2V0IChQY2RTbW1TbXJhbVJlcXVpcmUpKSB7DQo+ICsgICAgWDU4VHNlZ01ieXRlc0luaXRp YWxpemF0aW9uICgpOw0KPiArICB9DQo+ICsNCj4gKyAgUHVibGlzaFBlaU1lbW9yeSAoKTsNCj4g Kw0KPiArICBJbml0aWFsaXplUmFtUmVnaW9ucyAoKTsNCj4gKw0KPiArICBpZiAobUJvb3RNb2Rl ICE9IEJPT1RfT05fUzNfUkVTVU1FKSB7DQo+ICsgICAgaWYgKCFGZWF0dXJlUGNkR2V0IChQY2RT bW1TbXJhbVJlcXVpcmUpKSB7DQo+ICsgICAgICBSZXNlcnZlRW11VmFyaWFibGVOdlN0b3JlICgp Ow0KPiArICAgIH0NCj4gKyAgICBQZWlGdkluaXRpYWxpemF0aW9uICgpOw0KPiArICAgIE1lbU1h cEluaXRpYWxpemF0aW9uICgpOw0KPiArICB9DQo+ICsNCj4gKyAgTWlzY0luaXRpYWxpemF0aW9u ICgpOw0KPiArICBJbnN0YWxsRmVhdHVyZUNvbnRyb2xDYWxsYmFjayAoKTsNCj4gKw0KPiArICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIv U2lsaWNvbg0KPiBQb2xpY3lJbml0TGliLmMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvbg0KPiBQ b2xpY3lJbml0TGliLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MC4uMDFhOWVkNDBkNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExpYi9T aWxpY29uDQo+IFBvbGljeUluaXRMaWIuYw0KPiBAQCAtMCwwICsxLDEwOCBAQA0KPiArLyoqIEBm aWxlDQo+ICsgIENvcHlyaWdodCAoYykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9QZWlTZXJ2aWNlc0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlv bkxpYi5oPg0KPiArDQo+ICsvKioNCj4gKyAgUGVyZm9ybXMgc2lsaWNvbiBwcmUtbWVtIHBvbGlj eSBpbml0aWFsaXphdGlvbi4NCj4gKw0KPiArICBUaGUgbWVhbmluZyBvZiBQb2xpY3kgaXMgZGVm aW5lZCBieSBzaWxpY29uIGNvZGUuDQo+ICsgIEl0IGNvdWxkIGJlIHRoZSByYXcgZGF0YSwgYSBo YW5kbGUsIGEgUFBJLCBldGMuDQo+ICsNCj4gKyAgVGhlIHJldHVybmVkIGRhdGEgbXVzdCBiZSB1 c2VkIGFzIGlucHV0IGRhdGEgZm9yIFNpbGljb25Qb2xpY3lEb25lUHJlTWVtKCksDQo+ICsgIGFu ZCBTaWxpY29uUG9saWN5VXBkYXRlTGliLlNpbGljb25Qb2xpY3lVcGRhdGVQcmVNZW0oKS4NCj4g Kw0KPiArICAxKSBJbiBGU1AgcGF0aCwgdGhlIGlucHV0IFBvbGljeSBzaG91bGQgYmUgRnNwbVVw ZC4NCj4gKyAgVmFsdWUgb2YgRnNwbVVwZCBoYXMgYmVlbiBpbml0aWFsaXplZCBieSBGU1AgYmlu YXJ5IGRlZmF1bHQgdmFsdWUuDQo+ICsgIE9ubHkgYSBzdWJzZXQgb2YgRnNwbVVwZCBuZWVkcyB0 byBiZSB1cGRhdGVkIGZvciBkaWZmZXJlbnQgc2lsaWNvbiBza3UuDQo+ICsgIFRoZSByZXR1cm4g ZGF0YSBpcyBzYW1lIEZzcG1VcGQuDQo+ICsNCj4gKyAgMikgSW4gbm9uLUZTUCBwYXRoLCB0aGUg aW5wdXQgcG9saWN5IGNvdWxkIGJlIE5VTEwuDQo+ICsgIFRoZSByZXR1cm4gZGF0YSBpcyB0aGUg aW5pdGlhbGl6ZWQgcG9saWN5Lg0KPiArDQo+ICsgIEBwYXJhbVtpbiwgb3V0XSBQb2xpY3kgICAg ICAgUG9pbnRlciB0byBwb2xpY3kuDQo+ICsNCj4gKyAgQHJldHVybiB0aGUgaW5pdGlhbGl6ZWQg cG9saWN5Lg0KPiArKiovDQo+ICtWT0lEICoNCj4gK0VGSUFQSQ0KPiArU2lsaWNvblBvbGljeUlu aXRQcmVNZW0gKA0KPiArICBJTiBPVVQgVk9JRCAqUG9saWN5IE9QVElPTkFMDQo+ICsgICkNCj4g K3sNCj4gKyAgcmV0dXJuIFBvbGljeTsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAgVGhlIHNpbGlj b24gcHJlLW1lbSBwb2xpY3kgaXMgZmluYWxpemVkLg0KPiArICBTaWxpY29uIGNvZGUgY2FuIGRv IGluaXRpYWxpemF0aW9uIGJhc2VkIHVwb24gdGhlIHBvbGljeSBkYXRhLg0KPiArDQo+ICsgIFRo ZSBpbnB1dCBQb2xpY3kgbXVzdCBiZSByZXR1cm5lZCBieSBTaWxpY29uUG9saWN5SW5pdFByZU1l bSgpLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gUG9saWN5ICAgICAgIFBvaW50ZXIgdG8gcG9saWN5 Lg0KPiArDQo+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgVGhlIHBvbGljeSBpcyBoYW5kbGVk IGNvbnN1bWVkIGJ5IHNpbGljb24gY29kZS4NCj4gKyovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtF RklBUEkNCj4gK1NpbGljb25Qb2xpY3lEb25lUHJlTWVtICgNCj4gKyAgSU4gVk9JRCAqUG9saWN5 DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ ICsvKioNCj4gKyAgUGVyZm9ybXMgc2lsaWNvbiBwb3N0LW1lbSBwb2xpY3kgaW5pdGlhbGl6YXRp b24uDQo+ICsNCj4gKyAgVGhlIG1lYW5pbmcgb2YgUG9saWN5IGlzIGRlZmluZWQgYnkgc2lsaWNv biBjb2RlLg0KPiArICBJdCBjb3VsZCBiZSB0aGUgcmF3IGRhdGEsIGEgaGFuZGxlLCBhIFBQSSwg ZXRjLg0KPiArDQo+ICsgIFRoZSByZXR1cm5lZCBkYXRhIG11c3QgYmUgdXNlZCBhcyBpbnB1dCBk YXRhIGZvcg0KPiBTaWxpY29uUG9saWN5RG9uZVBvc3RNZW0oKSwNCj4gKyAgYW5kIFNpbGljb25Q b2xpY3lVcGRhdGVMaWIuU2lsaWNvblBvbGljeVVwZGF0ZVBvc3RNZW0oKS4NCj4gKw0KPiArICAx KSBJbiBGU1AgcGF0aCwgdGhlIGlucHV0IFBvbGljeSBzaG91bGQgYmUgRnNwc1VwZC4NCj4gKyAg VmFsdWUgb2YgRnNwc1VwZCBoYXMgYmVlbiBpbml0aWFsaXplZCBieSBGU1AgYmluYXJ5IGRlZmF1 bHQgdmFsdWUuDQo+ICsgIE9ubHkgYSBzdWJzZXQgb2YgRnNwc1VwZCBuZWVkcyB0byBiZSB1cGRh dGVkIGZvciBkaWZmZXJlbnQgc2lsaWNvbiBza3UuDQo+ICsgIFRoZSByZXR1cm4gZGF0YSBpcyBz YW1lIEZzcHNVcGQuDQo+ICsNCj4gKyAgMikgSW4gbm9uLUZTUCBwYXRoLCB0aGUgaW5wdXQgcG9s aWN5IGNvdWxkIGJlIE5VTEwuDQo+ICsgIFRoZSByZXR1cm4gZGF0YSBpcyB0aGUgaW5pdGlhbGl6 ZWQgcG9saWN5Lg0KPiArDQo+ICsgIEBwYXJhbVtpbiwgb3V0XSBQb2xpY3kgICAgICAgUG9pbnRl ciB0byBwb2xpY3kuDQo+ICsNCj4gKyAgQHJldHVybiB0aGUgaW5pdGlhbGl6ZWQgcG9saWN5Lg0K PiArKiovDQo+ICtWT0lEICoNCj4gK0VGSUFQSQ0KPiArU2lsaWNvblBvbGljeUluaXRQb3N0TWVt ICgNCj4gKyAgSU4gT1VUIFZPSUQgKlBvbGljeSBPUFRJT05BTA0KPiArICApDQo+ICt7DQo+ICsg IHJldHVybiBQb2xpY3k7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgIFRoZSBzaWxpY29uIHBvc3Qt bWVtIHBvbGljeSBpcyBmaW5hbGl6ZWQuDQo+ICsgIFNpbGljb24gY29kZSBjYW4gZG8gaW5pdGlh bGl6YXRpb24gYmFzZWQgdXBvbiB0aGUgcG9saWN5IGRhdGEuDQo+ICsNCj4gKyAgVGhlIGlucHV0 IFBvbGljeSBtdXN0IGJlIHJldHVybmVkIGJ5IFNpbGljb25Qb2xpY3lJbml0UG9zdE1lbSgpLg0K PiArDQo+ICsgIEBwYXJhbVtpbl0gUG9saWN5ICAgICAgIFBvaW50ZXIgdG8gcG9saWN5Lg0KPiAr DQo+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgVGhlIHBvbGljeSBpcyBoYW5kbGVkIGNvbnN1 bWVkIGJ5IHNpbGljb24gY29kZS4NCj4gKyovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkN Cj4gK1NpbGljb25Qb2xpY3lEb25lUG9zdE1lbSAoDQo+ICsgIElOIFZPSUQgKlBvbGljeQ0KPiAr ICApDQo+ICt7DQo+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdp dA0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9T aWxpY29uUG9saWN5VXBkYXRlTGliL1NpbA0KPiBpY29uUG9saWN5VXBkYXRlTGliLmMNCj4gYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBv bGljeVVwZGF0ZUxpYi9TaWwNCj4gaWNvblBvbGljeVVwZGF0ZUxpYi5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjZkOWRhNjc5NzUNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5L0xp YnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWwNCj4gaWNvblBvbGljeVVwZGF0ZUxpYi5j DQo+IEBAIC0wLDAgKzEsNzAgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBDb3B5cmlnaHQgKGMpIDIw MTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKw0KPiAr ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ ICsNCj4gKyNpbmNsdWRlIDxQaVBlaS5oPg0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1 Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4gKyNpbmNsdWRlIDxQcGkv UmVhZE9ubHlWYXJpYWJsZTIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzTGli Lmg+DQo+ICsNCj4gKy8qKg0KPiArICBQZXJmb3JtcyBzaWxpY29uIHByZS1tZW0gcG9saWN5IHVw ZGF0ZS4NCj4gKw0KPiArICBUaGUgbWVhbmluZyBvZiBQb2xpY3kgaXMgZGVmaW5lZCBieSBzaWxp Y29uIGNvZGUuDQo+ICsgIEl0IGNvdWxkIGJlIHRoZSByYXcgZGF0YSwgYSBoYW5kbGUsIGEgUFBJ LCBldGMuDQo+ICsNCj4gKyAgVGhlIGlucHV0IFBvbGljeSBtdXN0IGJlIHJldHVybmVkIGJ5IFNp bGljb25Qb2xpY3lEb25lUHJlTWVtKCkuDQo+ICsNCj4gKyAgMSkgSW4gRlNQIHBhdGgsIHRoZSBp bnB1dCBQb2xpY3kgc2hvdWxkIGJlIEZzcG1VcGQuDQo+ICsgIEEgcGxhdGZvcm0gbWF5IHVzZSB0 aGlzIEFQSSB0byB1cGRhdGUgdGhlIEZTUE0gVVBEIHBvbGljeSBpbml0aWFsaXplZA0KPiArICBi eSB0aGUgc2lsaWNvbiBtb2R1bGUgb3IgdGhlIGRlZmF1bHQgVVBEIGRhdGEuDQo+ICsgIFRoZSBv dXRwdXQgb2YgRlNQTSBVUEQgZGF0YSBmcm9tIHRoaXMgQVBJIGlzIHRoZSBmaW5hbCBVUEQgZGF0 YS4NCj4gKw0KPiArICAyKSBJbiBub24tRlNQIHBhdGgsIHRoZSBib2FyZCBtYXkgdXNlIGFkZGl0 aW9uYWwgd2F5IHRvIGdldA0KPiArICB0aGUgc2lsaWNvbiBwb2xpY3kgZGF0YSBmaWVsZCBiYXNl ZCB1cG9uIHRoZSBpbnB1dCBQb2xpY3kuDQo+ICsNCj4gKyAgQHBhcmFtW2luLCBvdXRdIFBvbGlj eSAgICAgICBQb2ludGVyIHRvIHBvbGljeS4NCj4gKw0KPiArICBAcmV0dXJuIHRoZSB1cGRhdGVk IHBvbGljeS4NCj4gKyoqLw0KPiArVk9JRCAqDQo+ICtFRklBUEkNCj4gK1NpbGljb25Qb2xpY3lV cGRhdGVQcmVNZW0gKA0KPiArICBJTiBPVVQgVk9JRCAqUG9saWN5DQo+ICsgICkNCj4gK3sNCj4g KyAgcmV0dXJuIFBvbGljeTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFBlcmZvcm1zIHNpbGlj b24gcG9zdC1tZW0gcG9saWN5IHVwZGF0ZS4NCj4gKw0KPiArICBUaGUgbWVhbmluZyBvZiBQb2xp Y3kgaXMgZGVmaW5lZCBieSBzaWxpY29uIGNvZGUuDQo+ICsgIEl0IGNvdWxkIGJlIHRoZSByYXcg ZGF0YSwgYSBoYW5kbGUsIGEgUFBJLCBldGMuDQo+ICsNCj4gKyAgVGhlIGlucHV0IFBvbGljeSBt dXN0IGJlIHJldHVybmVkIGJ5IFNpbGljb25Qb2xpY3lEb25lUG9zdE1lbSgpLg0KPiArDQo+ICsg IDEpIEluIEZTUCBwYXRoLCB0aGUgaW5wdXQgUG9saWN5IHNob3VsZCBiZSBGc3BzVXBkLg0KPiAr ICBBIHBsYXRmb3JtIG1heSB1c2UgdGhpcyBBUEkgdG8gdXBkYXRlIHRoZSBGU1BTIFVQRCBwb2xp Y3kgaW5pdGlhbGl6ZWQNCj4gKyAgYnkgdGhlIHNpbGljb24gbW9kdWxlIG9yIHRoZSBkZWZhdWx0 IFVQRCBkYXRhLg0KPiArICBUaGUgb3V0cHV0IG9mIEZTUFMgVVBEIGRhdGEgZnJvbSB0aGlzIEFQ SSBpcyB0aGUgZmluYWwgVVBEIGRhdGEuDQo+ICsNCj4gKyAgMikgSW4gbm9uLUZTUCBwYXRoLCB0 aGUgYm9hcmQgbWF5IHVzZSBhZGRpdGlvbmFsIHdheSB0byBnZXQNCj4gKyAgdGhlIHNpbGljb24g cG9saWN5IGRhdGEgZmllbGQgYmFzZWQgdXBvbiB0aGUgaW5wdXQgUG9saWN5Lg0KPiArDQo+ICsg IEBwYXJhbVtpbiwgb3V0XSBQb2xpY3kgICAgICAgUG9pbnRlciB0byBwb2xpY3kuDQo+ICsNCj4g KyAgQHJldHVybiB0aGUgdXBkYXRlZCBwb2xpY3kuDQo+ICsqKi8NCj4gK1ZPSUQgKg0KPiArRUZJ QVBJDQo+ICtTaWxpY29uUG9saWN5VXBkYXRlUG9zdE1lbSAoDQo+ICsgIElOIE9VVCBWT0lEICpQ b2xpY3kNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUG9saWN5Ow0KPiArfQ0KPiBkaWZmIC0t Z2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1NtYmlvc1BsYXRmb3Jt RHhlL1NtYmlvc1BsYXRmb3JtRHhlDQo+IC5jDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlDQo+IC5jDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjgyYTJkNjA5NTkNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv U21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUNCj4gLmMNCj4gQEAgLTAsMCArMSwx NDggQEANCj4gKy8qKiBAZmlsZQ0KPiArICBUaGlzIGRyaXZlciBpbnN0YWxscyBTTUJJT1MgaW5m b3JtYXRpb24gZm9yIE9WTUYNCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTEsIEJlaSBHdWFu IDxnYnRqdTg1QGdtYWlsLmNvbT4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAxNSwgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArDQo+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiAr I2luY2x1ZGUgIlNtYmlvc1BsYXRmb3JtRHhlLmgiDQo+ICsNCj4gKw0KPiArLyoqDQo+ICtSZWFk cyA4LWJpdHMgb2YgQ01PUyBkYXRhLg0KPiArDQo+ICtSZWFkcyB0aGUgOC1iaXRzIG9mIENNT1Mg ZGF0YSBhdCB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5IEluZGV4Lg0KPiArVGhlIDgtYml0IHJl YWQgdmFsdWUgaXMgcmV0dXJuZWQuDQo+ICsNCj4gK0BwYXJhbSAgSW5kZXggIFRoZSBDTU9TIGxv Y2F0aW9uIHRvIHJlYWQuDQo+ICsNCj4gK0ByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ICsNCj4g KyoqLw0KPiArVUlOVDgNCj4gK0VGSUFQSQ0KPiArQ21vc1JlYWQ4KA0KPiArICBJTiAgICAgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgSW5kZXgNCj4gKyAgKQ0KPiArew0KPiArICBJb1dyaXRl OCgweDcwLCAoVUlOVDgpSW5kZXgpOw0KPiArICByZXR1cm4gSW9SZWFkOCgweDcxKTsNCj4gK30N Cj4gKw0KPiArVUlOVDMyDQo+ICtHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IoDQo+ICsgIFZP SUQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UOCBDbW9zMHgzNDsNCj4gKyAgVUlOVDggQ21vczB4 MzU7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ01PUyAweDM0LzB4MzUgc3BlY2lmaWVzIHRoZSBz eXN0ZW0gbWVtb3J5IGFib3ZlIDE2IE1CLg0KPiArICAvLyAqIENNT1MoMHgzNSkgaXMgdGhlIGhp Z2ggYnl0ZQ0KPiArICAvLyAqIENNT1MoMHgzNCkgaXMgdGhlIGxvdyBieXRlDQo+ICsgIC8vICog VGhlIHNpemUgaXMgc3BlY2lmaWVkIGluIDY0a2IgY2h1bmtzDQo+ICsgIC8vICogU2luY2UgdGhp cyBpcyBtZW1vcnkgYWJvdmUgMTZNQiwgdGhlIDE2TUIgbXVzdCBiZSBhZGRlZA0KPiArICAvLyAg IGludG8gdGhlIGNhbGN1bGF0aW9uIHRvIGdldCB0aGUgdG90YWwgbWVtb3J5IHNpemUuDQo+ICsg IC8vDQo+ICsNCj4gKyAgQ21vczB4MzQgPSAoVUlOVDgpQ21vc1JlYWQ4KDB4MzQpOw0KPiArICBD bW9zMHgzNSA9IChVSU5UOClDbW9zUmVhZDgoMHgzNSk7DQo+ICsNCj4gKyAgcmV0dXJuIChVSU5U MzIpKCgoVUlOVE4pKChDbW9zMHgzNSA8PCA4KSArIENtb3MweDM0KSA8PCAxNikgKw0KPiBTSVpF XzE2TUIpOw0KPiArfQ0KPiArDQo+ICtTVEFUSUMNCj4gK1VJTlQ2NA0KPiArR2V0U3lzdGVtTWVt b3J5U2l6ZUFib3ZlNGdiKA0KPiArICBWT0lEDQo+ICspDQo+ICt7DQo+ICsgIFVJTlQzMiBTaXpl Ow0KPiArICBVSU5UTiAgQ21vc0luZGV4Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENNT1MgMHg1 Yi0weDVkIHNwZWNpZmllcyB0aGUgc3lzdGVtIG1lbW9yeSBhYm92ZSA0R0IgTUIuDQo+ICsgIC8v ICogQ01PUygweDVkKSBpcyB0aGUgbW9zdCBzaWduaWZpY2FudCBzaXplIGJ5dGUNCj4gKyAgLy8g KiBDTU9TKDB4NWMpIGlzIHRoZSBtaWRkbGUgc2l6ZSBieXRlDQo+ICsgIC8vICogQ01PUygweDVi KSBpcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2l6ZSBieXRlDQo+ICsgIC8vICogVGhlIHNpemUg aXMgc3BlY2lmaWVkIGluIDY0a2IgY2h1bmtzDQo+ICsgIC8vDQo+ICsNCj4gKyAgU2l6ZSA9IDA7 DQo+ICsgIGZvciAoQ21vc0luZGV4ID0gMHg1ZDsgQ21vc0luZGV4ID49IDB4NWI7IENtb3NJbmRl eC0tKSB7DQo+ICsgICAgU2l6ZSA9IChVSU5UMzIpKFNpemUgPDwgOCkgKyAoVUlOVDMyKUNtb3NS ZWFkOChDbW9zSW5kZXgpOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIExTaGlmdFU2NChTaXpl LCAxNik7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBJbnN0YWxscyBTTUJJT1MgaW5mb3JtYXRp b24gZm9yIE9WTUYNCj4gKw0KPiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgIE1vZHVsZSdzIGlt YWdlIGhhbmRsZQ0KPiArICBAcGFyYW0gU3lzdGVtVGFibGUgICAgIFBvaW50ZXIgb2YgRUZJX1NZ U1RFTV9UQUJMRQ0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgU21iaW9zIGRhdGEg c3VjY2Vzc2Z1bGx5IGluc3RhbGxlZA0KPiArICBAcmV0dmFsIE90aGVyICAgICAgICAgIFNtYmlv cyBkYXRhIHdhcyBub3QgaW5zdGFsbGVkDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtTbWJpb3NUYWJsZVB1Ymxpc2hFbnRyeSAoDQo+ICsgIElOIEVGSV9IQU5ETEUg ICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAgICAqU3lz dGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0 YXR1czsNCj4gKyAgRUZJX1NNQklPU19QUk9UT0NPTCAgICAgICAqU21iaW9zOw0KPiArICBTTUJJ T1NfVEFCTEVfVFlQRTE5ICAgICAgICpUeXBlMTlSZWNvcmQ7DQo+ICsgIEVGSV9TTUJJT1NfSEFO RExFICAgICAgICAgTWVtQXJyYXlNYXBwZWRBZGRyU21iaW9zSGFuZGxlOw0KPiArICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgIE51bVNsb3RzOw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAg ICAgIFRvdGFsTWVtb3J5U2l6ZTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBGaW5kIHRoZSBTTUJJ T1MgcHJvdG9jb2wNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAo DQo+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVNtYmlvc1Byb3RvY29sR3VpZCwNCj4gKyAgICAg ICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAoVk9JRCoqKSZTbWJpb3MN Cj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsgIC8vDQo+ICsgIC8vIEdlbmVyYXRl IE1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBpbmZvDQo+ICsgIC8vDQo+ICsgIE51bVNsb3Rz ID0gMjsNCj4gKyAgVG90YWxNZW1vcnlTaXplID0gMDsNCj4gKyAgVG90YWxNZW1vcnlTaXplID0g R2V0U3lzdGVtTWVtb3J5U2l6ZUJlbG93NGdiKCk7DQo+ICsgIFR5cGUxOVJlY29yZCA9IEFsbG9j YXRlUG9vbChzaXplb2YoU01CSU9TX1RBQkxFX1RZUEUxOSkpOw0KPiArICBaZXJvTWVtKFR5cGUx OVJlY29yZCwgc2l6ZW9mKFNNQklPU19UQUJMRV9UWVBFMTkpKTsNCj4gKyAgVHlwZTE5UmVjb3Jk LT5IZHIuVHlwZSA9DQo+IEVGSV9TTUJJT1NfVFlQRV9NRU1PUllfQVJSQVlfTUFQUEVEX0FERFJF U1M7DQo+ICsgIFR5cGUxOVJlY29yZC0+SGRyLkxlbmd0aCA9IHNpemVvZihTTUJJT1NfVEFCTEVf VFlQRTE5KTsNCj4gKyAgVHlwZTE5UmVjb3JkLT5IZHIuSGFuZGxlID0gMDsNCj4gKyAgVHlwZTE5 UmVjb3JkLT5TdGFydGluZ0FkZHJlc3MgPSAwOw0KPiArICBUeXBlMTlSZWNvcmQtPkVuZGluZ0Fk ZHJlc3MgPSAoVUlOVDMyKVJTaGlmdFU2NChUb3RhbE1lbW9yeVNpemUsIDEwKSAtDQo+IDE7DQo+ ICsgIFR5cGUxOVJlY29yZC0+TWVtb3J5QXJyYXlIYW5kbGUgPSBTTUJJT1NfSEFORExFX1BJX1JF U0VSVkVEOw0KPiArICBUeXBlMTlSZWNvcmQtPlBhcnRpdGlvbldpZHRoID0gKFVJTlQ4KShOdW1T bG90cyk7DQo+ICsNCj4gKyAgTWVtQXJyYXlNYXBwZWRBZGRyU21iaW9zSGFuZGxlID0gU01CSU9T X0hBTkRMRV9QSV9SRVNFUlZFRDsNCj4gKyAgU3RhdHVzID0gU21iaW9zLT5BZGQoU21iaW9zLCBO VUxMLA0KPiAmTWVtQXJyYXlNYXBwZWRBZGRyU21iaW9zSGFuZGxlLA0KPiAoRUZJX1NNQklPU19U QUJMRV9IRUFERVIqKVR5cGUxOVJlY29yZCk7DQo+ICsgIEFTU0VSVF9FRklfRVJST1IoU3RhdHVz KTsNCj4gKw0KPiArICBUb3RhbE1lbW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0 Z2IoKTsNCj4gKyAgVHlwZTE5UmVjb3JkLT5TdGFydGluZ0FkZHJlc3MgPSAweEZGRkZGRkZGOw0K PiArICBUeXBlMTlSZWNvcmQtPkV4dGVuZGVkU3RhcnRpbmdBZGRyZXNzID0gMHhGRkZGRkZGRjsN Cj4gKyAgVHlwZTE5UmVjb3JkLT5FeHRlbmRlZEVuZGluZ0FkZHJlc3MgPSBUb3RhbE1lbW9yeVNp emUgKyAweEZGRkZGRkZGIC0NCj4gMTsNCj4gKw0KPiArICBNZW1BcnJheU1hcHBlZEFkZHJTbWJp b3NIYW5kbGUgPSBTTUJJT1NfSEFORExFX1BJX1JFU0VSVkVEOw0KPiArICBTdGF0dXMgPSBTbWJp b3MtPkFkZChTbWJpb3MsIE5VTEwsDQo+ICZNZW1BcnJheU1hcHBlZEFkZHJTbWJpb3NIYW5kbGUs DQo+IChFRklfU01CSU9TX1RBQkxFX0hFQURFUiopVHlwZTE5UmVjb3JkKTsNCj4gKyAgRnJlZVBv b2woVHlwZTE5UmVjb3JkKTsNCj4gKyAgQVNTRVJUX0VGSV9FUlJPUihTdGF0dXMpOw0KPiArDQo+ ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9BY3BpVGFibGVzLmluZg0KPiBiL1BsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL0FjcGlUYWJsZXMuaW5mDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjgzOTYyNmViODYNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNw aVRhYmxlcy9BY3BpVGFibGVzLmluZg0KPiBAQCAtMCwwICsxLDMxIEBADQo+ICsjIyBAZmlsZQ0K PiArIyAgQ29tcG9uZW50IGRlc2NyaXB0aW9uIGZpbGUgZm9yIFBsYXRmb3JtQWNwaVRhYmxlcyBt b2R1bGUuDQo+ICsjDQo+ICsjICBBQ1BJIHRhYmxlIGRhdGEgYW5kIEFTTCBzb3VyY2VzIHJlcXVp cmVkIHRvIGJvb3QgdGhlIHBsYXRmb3JtLg0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMDgg LSAyMDE4IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsj DQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsj DQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAg ICAgICAgID0gMHgwMDAxMDAwNQ0KPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAg PSBQbGF0Zm9ybUFjcGlUYWJsZXMNCj4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAg ID0gN0UzNzRFMjUtOEUwMS00RkVFLTg3RjItMzkwQzIzQzYwNkNEDQo+ICsgIE1PRFVMRV9UWVBF ICAgICAgICAgICAgICAgICAgICA9IFVTRVJfREVGSU5FRA0KPiArICBWRVJTSU9OX1NUUklORyAg ICAgICAgICAgICAgICAgPSAxLjANCj4gKw0KPiArIw0KPiArIyBUaGUgZm9sbG93aW5nIGluZm9y bWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZSBidWls ZA0KPiB0b29scy4NCj4gKyMNCj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0g SUEzMiBYNjQgRUJDDQo+ICsjDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBQbGF0Zm9ybS5oDQo+ ICsgIERzZHQuYXNsDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMN Cj4gKw0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0Fj cGlUYWJsZXMvRHNkdC5hc2wNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv QWNwaVRhYmxlcy9Ec2R0LmFzbA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwLi43NmE4ZmJjMDgxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvRHNkdC5hc2wNCj4gQEAgLTAsMCArMSw4 MjEgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBDb250YWlucyByb290IGxldmVsIG5hbWUgc3BhY2Ug b2JqZWN0cyBmb3IgdGhlIHBsYXRmb3JtDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDA4IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ ICtEZWZpbml0aW9uQmxvY2sgKCJEc2R0LmFtbCIsICJEU0RUIiwgMSwgIklOVEVMICIsICJPVk1G ICAgICIsIDQpIHsNCj4gKyAgLy8NCj4gKyAgLy8gU3lzdGVtIFNsZWVwIFN0YXRlcw0KPiArICAv Lw0KPiArICBOYW1lIChcX1MzLCBQYWNrYWdlICgpIHs1LCA1LCAwLCAwfSkNCj4gKyAgTmFtZSAo XF9TNCwgUGFja2FnZSAoKSB7NiwgNiwgMCwgMH0pDQo+ICsgIE5hbWUgKFxfUzUsIFBhY2thZ2Ug KCkgezcsIDcsIDAsIDB9KQ0KPiArDQo+ICsgIE5hbWUgKEdQSUMsIFplcm8pDQo+ICsgIE1ldGhv ZCAoX1BJQywgMSwgTm90U2VyaWFsaXplZCkgIC8vIF9QSUM6IEludGVycnVwdCBNb2RlbA0KPiAr ICB7DQo+ICsgICAgICBHUElDID0gQXJnMA0KPiArICB9DQo+ICsgIC8vDQo+ICsgIC8vICBTeXN0 ZW0gQnVzDQo+ICsgIC8vDQo+ICsgIFNjb3BlIChcX1NCKSB7DQo+ICsgICAgLy8NCj4gKyAgICAv LyBQQ0kgUm9vdCBCcmlkZ2UNCj4gKyAgICAvLw0KPiArICAgIERldmljZSAoUENJMCkgew0KPiAr ICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMEEwMyIpKQ0KPiArICAgICAgTmFtZSAoX0FE UiwgMHgwMDAwMDAwMCkNCj4gKyAgICAgIE5hbWUgKF9CQk4sIDB4MDApDQo+ICsgICAgICBOYW1l IChfVUlELCAweDAwKQ0KPiArDQo+ICsNCj4gKyAgICAgIC8vIEN1cnJlbnQgcmVzb3VyY2Ugc2V0 dGluZ3MNCj4gKyAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgew0KPiArICAg ICAgICBXT1JEQnVzTnVtYmVyICggICAgICAgICAgLy8gQnVzIG51bWJlciByZXNvdXJjZSAoMCk7 IHRoZSBicmlkZ2UgcHJvZHVjZXMNCj4gYnVzIG51bWJlcnMgZm9yIGl0cyBzdWJzZXF1ZW50IGJ1 c2VzDQo+ICsgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwgICAgICAvLyBiaXQgMCBvZiBnZW5l cmFsIGZsYWdzIGlzIDENCj4gKyAgICAgICAgICBNaW5GaXhlZCwgICAgICAgICAgICAgIC8vIFJh bmdlIGlzIGZpeGVkDQo+ICsgICAgICAgICAgTWF4Rml4ZWQsICAgICAgICAgICAgICAvLyBSYW5n ZSBpcyBmaXhlZA0KPiArICAgICAgICAgIFBvc0RlY29kZSwgICAgICAgICAgICAgLy8gUG9zRGVj b2RlDQo+ICsgICAgICAgICAgMHgwMDAwLCAgICAgICAgICAgICAgICAvLyBHcmFudWxhcml0eQ0K PiArICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8gTWluDQo+ICsgICAgICAgICAg MHgwMEZGLCAgICAgICAgICAgICAgICAvLyBNYXgNCj4gKyAgICAgICAgICAweDAwMDAsICAgICAg ICAgICAgICAgIC8vIFRyYW5zbGF0aW9uDQo+ICsgICAgICAgICAgMHgwMTAwICAgICAgICAgICAg ICAgICAvLyBSYW5nZSBMZW5ndGggPSBNYXgtTWluKzENCj4gKyAgICAgICAgICApDQo+ICsNCj4g KyAgICAgICAgSU8gKERlY29kZTE2LCAweENGOCwgMHhDRjgsIDB4MDEsIDB4MDgpICAgICAgIC8v Q29uc3VtZWQgcmVzb3VyY2UNCj4gKDB4Q0Y4LTB4Q0ZGKQ0KPiArDQo+ICsgICAgICAgIFdPUkRJ TyAoICAgICAgICAgICAgICAgICAvLyBDb25zdW1lZC1hbmQtcHJvZHVjZWQgcmVzb3VyY2UgKGFs bCBJL08gYmVsb3cNCj4gQ0Y4KQ0KPiArICAgICAgICAgIFJlc291cmNlUHJvZHVjZXIsICAgICAg Ly8gYml0IDAgb2YgZ2VuZXJhbCBmbGFncyBpcyAwDQo+ICsgICAgICAgICAgTWluRml4ZWQsICAg ICAgICAgICAgICAvLyBSYW5nZSBpcyBmaXhlZA0KPiArICAgICAgICAgIE1heEZpeGVkLCAgICAg ICAgICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gKyAgICAgICAgICBQb3NEZWNvZGUsDQo+ICsg ICAgICAgICAgRW50aXJlUmFuZ2UsDQo+ICsgICAgICAgICAgMHgwMDAwLCAgICAgICAgICAgICAg ICAvLyBHcmFudWxhcml0eQ0KPiArICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8g TWluDQo+ICsgICAgICAgICAgMHgwQ0Y3LCAgICAgICAgICAgICAgICAvLyBNYXgNCj4gKyAgICAg ICAgICAweDAwMDAsICAgICAgICAgICAgICAgIC8vIFRyYW5zbGF0aW9uDQo+ICsgICAgICAgICAg MHgwQ0Y4ICAgICAgICAgICAgICAgICAvLyBSYW5nZSBMZW5ndGgNCj4gKyAgICAgICAgICApDQo+ ICsNCj4gKyAgICAgICAgV09SRElPICggICAgICAgICAgICAgICAgIC8vIENvbnN1bWVkLWFuZC1w cm9kdWNlZCByZXNvdXJjZSAoYWxsIEkvTyBhYm92ZQ0KPiBDRkYpDQo+ICsgICAgICAgICAgUmVz b3VyY2VQcm9kdWNlciwgICAgICAvLyBiaXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDANCj4gKyAg ICAgICAgICBNaW5GaXhlZCwgICAgICAgICAgICAgIC8vIFJhbmdlIGlzIGZpeGVkDQo+ICsgICAg ICAgICAgTWF4Rml4ZWQsICAgICAgICAgICAgICAvLyBSYW5nZSBpcyBmaXhlZA0KPiArICAgICAg ICAgIFBvc0RlY29kZSwNCj4gKyAgICAgICAgICBFbnRpcmVSYW5nZSwNCj4gKyAgICAgICAgICAw eDAwMDAsICAgICAgICAgICAgICAgIC8vIEdyYW51bGFyaXR5DQo+ICsgICAgICAgICAgMHgwRDAw LCAgICAgICAgICAgICAgICAvLyBNaW4NCj4gKyAgICAgICAgICAweEZGRkYsICAgICAgICAgICAg ICAgIC8vIE1heA0KPiArICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8gVHJhbnNs YXRpb24NCj4gKyAgICAgICAgICAweEYzMDAgICAgICAgICAgICAgICAgIC8vIFJhbmdlIExlbmd0 aA0KPiArICAgICAgICAgICkNCj4gKw0KPiArICAgICAgICBEV09SRE1FTU9SWSAoICAgICAgICAg ICAgLy8gRGVzY3JpcHRvciBmb3IgbGVnYWN5IFZHQSB2aWRlbyBSQU0NCj4gKyAgICAgICAgICBS ZXNvdXJjZVByb2R1Y2VyLCAgICAgIC8vIGJpdCAwIG9mIGdlbmVyYWwgZmxhZ3MgaXMgMA0KPiAr ICAgICAgICAgIFBvc0RlY29kZSwNCj4gKyAgICAgICAgICBNaW5GaXhlZCwgICAgICAgICAgICAg IC8vIFJhbmdlIGlzIGZpeGVkDQo+ICsgICAgICAgICAgTWF4Rml4ZWQsICAgICAgICAgICAgICAv LyBSYW5nZSBpcyBGaXhlZA0KPiArICAgICAgICAgIENhY2hlYWJsZSwNCj4gKyAgICAgICAgICBS ZWFkV3JpdGUsDQo+ICsgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAgICAvLyBHcmFudWxh cml0eQ0KPiArICAgICAgICAgIDB4MDAwQTAwMDAsICAgICAgICAgICAgLy8gTWluDQo+ICsgICAg ICAgICAgMHgwMDBCRkZGRiwgICAgICAgICAgICAvLyBNYXgNCj4gKyAgICAgICAgICAweDAwMDAw MDAwLCAgICAgICAgICAgIC8vIFRyYW5zbGF0aW9uDQo+ICsgICAgICAgICAgMHgwMDAyMDAwMCAg ICAgICAgICAgICAvLyBSYW5nZSBMZW5ndGgNCj4gKyAgICAgICAgICApDQo+ICsNCj4gKyAgICAg ICAgRFdPUkRNRU1PUlkgKCAgICAgICAgICAgIC8vIERlc2NyaXB0b3IgZm9yIDMyLWJpdCBNTUlP DQo+ICsgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwgICAgICAvLyBiaXQgMCBvZiBnZW5lcmFs IGZsYWdzIGlzIDANCj4gKyAgICAgICAgICBQb3NEZWNvZGUsDQo+ICsgICAgICAgICAgTWluRml4 ZWQsICAgICAgICAgICAgICAvLyBSYW5nZSBpcyBmaXhlZA0KPiArICAgICAgICAgIE1heEZpeGVk LCAgICAgICAgICAgICAgLy8gUmFuZ2UgaXMgRml4ZWQNCj4gKyAgICAgICAgICBOb25DYWNoZWFi bGUsDQo+ICsgICAgICAgICAgUmVhZFdyaXRlLA0KPiArICAgICAgICAgIDB4MDAwMDAwMDAsICAg ICAgICAgICAgLy8gR3JhbnVsYXJpdHkNCj4gKyAgICAgICAgICAweEYwMDAwMDAwLCAgICAgICAg ICAgIC8vIE1pbg0KPiArICAgICAgICAgIDB4RkJGRkZGRkYsICAgICAgICAgICAgLy8gTWF4DQo+ ICsgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAgICAvLyBUcmFuc2xhdGlvbg0KPiArICAg ICAgICAgIDB4MEMwMDAwMDAsICAgICAgICAgICAgLy8gUmFuZ2UgTGVuZ3RoDQo+ICsgICAgICAg ICAgLCAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZVNvdXJjZUluZGV4DQo+ICsgICAg ICAgICAgLCAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZVNvdXJjZQ0KPiArICAgICAg ICAgIFBXMzIgICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRvck5hbWUNCj4gKyAgICAgICAg ICApDQo+ICsgICAgICB9KQ0KPiArDQo+ICsJLy8NCj4gKyAgICAgIC8vIFBDSSBJbnRlcnJ1cHQg Um91dGluZyBUYWJsZSAtIFBJQyBNb2RlIE9ubHkNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBJ ZiB5b3UgY2hhbmdlIHRoZSBJUlEgbWFwcGluZyBoZXJlIHlvdSBhbHNvIG5lZWQNCj4gKyAgICAg IC8vIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBpbiB0aGUgc291dGggYnJpZGdlDQo+ICsgICAgICAv LyAocGNpLWNvbmYucHkpIGFuZCBpbiB0aGUgQklPUy4NCj4gKyAgICAgIC8vIElOVEEgLT4gMHhh ICgxMCkNCj4gKyAgICAgIC8vIElOVEIgLT4gMHhiICgxMSkNCj4gKyAgICAgIC8vIElOVEMgLT4g MHhhICgxMCkNCj4gKyAgICAgIC8vIElOVEQgLT4gMHhiICgxMSkNCj4gKw0KPiArICAgICAgIE1l dGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgew0KPiArICAgICAgICAgICBJZiAoR1BJQykg ew0KPiArICAgICAgICAgICAgIFJldHVybiAoQVIwMCkgLy8gQVBJQyBNb2RlDQo+ICsgICAgICAg ICAgIH0NCj4gKyAgICAgICAgICAgUmV0dXJuIChQUjAwKSAvLyBQSUMgTW9kZQ0KPiArICAgICAg fQ0KPiArDQo+ICsgICAgICBOYW1lIChQUjAwLCBQYWNrYWdlKCl7DQo+ICsJICAgIFBhY2thZ2Ug KCkgezB4MDAwRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAw eDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRiwgMHgwMiwgXF9TQi5Q Q0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZG RiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gKw0KPiArICAgICAgICAgICAg Ly8NCj4gKyAgICAgICAgICAgIC8vIEJ1cyAwLCBEZXZpY2UgMQ0KPiArICAgICAgICAgICAgLy8N Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkYsIDB4MDAsIFxfU0IuUENJMC5M UEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAw eDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwg MHgwMH0sDQo+ICsNCj4gKwkgICAgUGFja2FnZSAoKSB7MHgwMDAyRkZGRiwgMHgwMCwgXF9TQi5Q Q0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMkZG RkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDJGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAyRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5M TktELCAweDAwfSwNCj4gKyAgICAgICAgICAgIC8vDQo+ICsgICAgICAgICAgICAvLyBCdXMgMCwg RGV2aWNlIDMNCj4gKyAgICAgICAgICAgIC8vDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMDNGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAw fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwM0ZGRkYsIDB4MDIsIFxfU0IuUENJ MC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDNGRkZG LCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDRGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0K PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA0RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQ Qy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNEZGRkYsIDB4 MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDRGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxO S0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA1RkZGRiwgMHgwMSwg XF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwNUZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDVGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9 LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDZGRkZGLCAweDAwLCBcX1NC LlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2 RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDZGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBD LkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZG LCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDA3RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwN0ZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5L QywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZGLCAweDAzLCBc X1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDhGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDA4RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAw eDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOEZGRkYsIDB4MDIsIFxfU0Iu UENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhG RkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDlGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9 LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwgMHgwMSwgXF9TQi5QQ0kw LkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYs IDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDlGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEFGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBD LkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgw MSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwQUZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMEFGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4 MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEJGRkZGLCAweDAwLCBc X1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDBCRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwQkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0s DQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEJGRkZGLCAweDAzLCBcX1NCLlBDSTAu TFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMENG RkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDBDRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQ0ZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMu TE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMENGRkZGLCAweDAz LCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMERGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBERkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktC LCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwREZGRkYsIDB4MDIsIFxf U0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MERGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4 MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBFRkZGRiwgMHgwMSwgXF9TQi5Q Q0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRUZG RkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMEVGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiAr DQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAwLCBcX1NCLlBDSTAu TFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGRiwg MHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwRkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0Qs IDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgw MCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMTBGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywg MHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgwMywgXF9T Qi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxMUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDExRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAw eDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTFGRkZGLCAweDAyLCBcX1NC LlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx MUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4 MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDEsIFxfU0Iu UENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEy RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0K PiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMCwgXF9TQi5Q Q0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTNG RkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxM0ZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQ Qy5MTktELCAweDAwfSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZG RkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDE0RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTRGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBD LkxOS0MsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4 MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwMTVGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMu TE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE1RkZGRiwgMHgw MiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMTVGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE2RkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5M TktBLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAx LCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxNkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDE2RkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAw eDAwfSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDAs IFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMDE3RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMTdGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4 MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDMsIFxfU0Iu UENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwMThGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgw MH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE4RkZGRiwgMHgwMiwgXF9TQi5Q Q0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMThG RkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDFFRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAw fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUVGRkZGLCAweDAxLCBcX1NCLlBD STAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRUZG RkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDFFRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4g Kw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDAsIFxfU0IuUENJ MC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE5RkZG RiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwMTlGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMu TE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUFGRkZG LCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxQUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFBRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5M TktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAz LCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDFCRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUJGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxO S0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQkZGRkYsIDB4MDIs IFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMDFCRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gKw0KPiArICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5L QSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFDRkZGRiwgMHgwMSwg XF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwMUNGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgw MH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMURGRkZGLCAweDAwLCBc X1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAxREZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDFERkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAw fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMURGRkZGLCAweDAzLCBcX1NCLlBD STAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDFGRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMUZGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9 LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRkYsIDB4MDIsIFxfU0IuUENJ MC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZG RiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gKyAgICAgICAgICB9DQo+ICsg ICAgICAgICkNCj4gKw0KPiArICAgICAgTmFtZShBUjAwLCBQYWNrYWdlKCl7DQo+ICsNCj4gKwkg ICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMEZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDBGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIC8vDQo+ICsg ICAgICAgICAgICAvLyBCdXMgMCwgRGV2aWNlIDENCj4gKyAgICAgICAgICAgIC8vDQo+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAyLCAwLCAxOH0sDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKwkgICAgUGFja2Fn ZSAoKSB7MHgwMDAyRkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAyRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAyRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAyRkZGRiwgMHgwMywgMCwgMTl9LA0KPiArICAgICAgICAgICAgLy8NCj4gKyAgICAgICAgICAg IC8vIEJ1cyAwLCBEZXZpY2UgMw0KPiArICAgICAgICAgICAgLy8NCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwM0ZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwM0ZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwM0ZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwM0ZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDA0RkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDA0RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDA0RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA0 RkZGRiwgMHgwMywgMCwgMTl9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDVGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVG RkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVGRkZG LCAweDAyLCAwLCAxOH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVGRkZGLCAw eDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYs IDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4 MDEsIDAsIDE3fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDIs IDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDMsIDAs IDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA3RkZGRiwgMHgwMCwg MCwgMTZ9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA3RkZGRiwgMHgwMSwgMCwg MTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA3RkZGRiwgMHgwMiwgMCwgMTh9 LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA3RkZGRiwgMHgwMywgMCwgMTl9LA0K PiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAwLCAwLCAxNn0s DQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAxLCAwLCAxN30sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAyLCAwLCAxOH0sDQo+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgwMywgMCwgMTl9LA0KPiArDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMEJGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMEJGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMEJGRkZGLCAweDAyLCAwLCAxOH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMEJGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwQ0ZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwQ0ZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwQ0ZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw Q0ZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDBERkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBE RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBERkZG RiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBERkZGRiwg MHgwMywgMCwgMTl9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZG LCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAw eDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAweDAy LCAwQywgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBFRkZGRiwgMHgwMywg MCwgMTl9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAw LCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAxLCAw LCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAyLCAwLCAx OH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAzLCAwLCAxOX0s DQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTBGRkZGLCAweDAwLCAwLCAx Nn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgwMSwgMCwgMTd9 LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4MDIsIDAsIDE4fSwN Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTBGRkZGLCAweDAzLCAwLCAxOX0sDQo+ ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTFGRkZGLCAweDAwLCAwLCAxNn0s DQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDExRkZGRiwgMHgwMSwgMCwgMTd9LA0K PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTFGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsN Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAwLCAwLCAxNn0sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEyRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTNGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxM0ZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTNGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTRGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE0RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMTRGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTVGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDE1RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMTVGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDE2RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxNkZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMTdGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDE3RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwMTdGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwMThGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDE4RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwMThGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwMUVGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDFFRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxRUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMUVGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwMTlGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDE5RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxOUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwMTlGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMUFGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMDFBRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAxQUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MUFGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwMUJGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDFCRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx QkZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUJG RkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MUNGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFD RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQ0ZG RkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUNGRkZG LCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMURG RkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFERkZG RiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxREZGRkYs IDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMURGRkZGLCAw eDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkZG LCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGRiwg MHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRkYsIDB4 MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkZGLCAweDAz LCAwLCAxOX0sDQo+ICsgICAgICAgICAgfQ0KPiArICAgICAgICApDQo+ICsNCj4gKyAgICAgIC8v DQo+ICsgICAgICAvLyBQQ0kgdG8gSVNBIEJyaWRnZSAoQnVzIDAsIERldmljZSA3LCBGdW5jdGlv biAwKQ0KPiArICAgICAgLy8NCj4gKyAgICAgIERldmljZSAoTFBDKSB7DQo+ICsgICAgICAgIE5h bWUgKF9BRFIsIDB4MDAxRjAwMDApDQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8g UENJIEludGVycnVwdCBSb3V0aW5nIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzDQo+ICsgICAgICAg IC8vDQo+ICsgICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoUFJSMCwgUENJX0NvbmZpZywgMHg2MCwg MHgwQykNCj4gKyAgICAgICAgRmllbGQgKFBSUjAsIEFOWUFDQywgTk9MT0NLLCBQUkVTRVJWRSkg ew0KPiArICAgICAgICAgIFBJUkEsIDgsDQo+ICsgICAgICAgICAgUElSQiwgOCwNCj4gKyAgICAg ICAgICBQSVJDLCA4LA0KPiArICAgICAgICAgIFBJUkQsIDgsDQo+ICsgICAgICAgICAgT2Zmc2V0 ICgweDA0KSwNCj4gKyAgICAgICAgICBQSVJFLCA4LA0KPiArICAgICAgICAgIFBJUkYsIDgsDQo+ ICsgICAgICAgICAgUElSRywgOCwNCj4gKyAgICAgICAgICBQSVJILCA4DQo+ICsgICAgICAgIH0N Cj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBfU1RBIG1ldGhvZCBmb3IgTE5LQSwg TE5LQiwgTE5LQywgTE5LRCwgTE5LRSwgTE5LRiwgTE5LRywgTE5LSA0KPiArICAgICAgICAvLw0K PiArICAgICAgICBNZXRob2QgKFBTVEEsIDEsIE5vdFNlcmlhbGl6ZWQpIHsNCj4gKyAgICAgICAg ICBJZiAoQW5kIChBcmcwLCAweDgwKSkgew0KPiArICAgICAgICAgICAgUmV0dXJuICgweDkpDQo+ ICsgICAgICAgICAgfSBFbHNlIHsNCj4gKyAgICAgICAgICAgIFJldHVybiAoMHhCKQ0KPiArICAg ICAgICAgIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8v IF9ESVMgbWV0aG9kIGZvciBMTktBLCBMTktCLCBMTktDLCBMTktELCBMTktFLCBMTktGLCBMTktH LCBMTktIDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIE1ldGhvZCAoUERJUywgMSwgTm90U2Vy aWFsaXplZCkgew0KPiArICAgICAgICAgIE9yIChBcmcwLCAweDgwLCBBcmcwKQ0KPiArICAgICAg ICB9DQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gX0NSUyBtZXRob2QgZm9yIExO S0EsIExOS0IsIExOS0MsIExOS0QsIExOS0UsIExOS0YsIExOS0csIExOS0gNCj4gKyAgICAgICAg Ly8NCj4gKyAgICAgICAgTWV0aG9kIChQQ1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7DQo+ICsgICAg ICAgICAgTmFtZSAoQlVGMCwgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7SVJRIChMZXZlbCwgQWN0aXZl TG93LCBTaGFyZWQpezB9fSkNCj4gKyAgICAgICAgICAvLw0KPiArICAgICAgICAgIC8vIERlZmlu ZSByZWZlcmVuY2VzIHRvIGJ1ZmZlciBlbGVtZW50cw0KPiArICAgICAgICAgIC8vDQo+ICsgICAg ICAgICAgQ3JlYXRlV29yZEZpZWxkIChCVUYwLCAweDAxLCBJUlFXKSAgLy8gSVJRIGxvdw0KPiAr ICAgICAgICAgIC8vDQo+ICsgICAgICAgICAgLy8gV3JpdGUgY3VycmVudCBzZXR0aW5ncyBpbnRv IElSUSBkZXNjcmlwdG9yDQo+ICsgICAgICAgICAgLy8NCj4gKyAgICAgICAgICBJZiAoQW5kIChB cmcwLCAweDgwKSkgew0KPiArICAgICAgICAgICAgU3RvcmUgKFplcm8sIExvY2FsMCkNCj4gKyAg ICAgICAgICB9IEVsc2Ugew0KPiArICAgICAgICAgICAgU3RvcmUgKE9uZSwgTG9jYWwwKQ0KPiAr ICAgICAgICAgIH0NCj4gKyAgICAgICAgICAvLw0KPiArICAgICAgICAgIC8vIFNoaWZ0IDEgYnkg dmFsdWUgaW4gcmVnaXN0ZXIgNzANCj4gKyAgICAgICAgICAvLw0KPiArICAgICAgICAgIFNoaWZ0 TGVmdCAoTG9jYWwwLCBBbmQgKEFyZzAsIDB4MEYpLCBJUlFXKSAgIC8vIFNhdmUgaW4gYnVmZmVy DQo+ICsgICAgICAgICAgUmV0dXJuIChCVUYwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gUmV0dXJuIEJ1ZjANCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsg ICAgICAgIC8vIF9QUlMgcmVzb3VyY2UgZm9yIExOS0EsIExOS0IsIExOS0MsIExOS0QsIExOS0Us IExOS0YsIExOS0csIExOS0gNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgTmFtZSAoUFBSUywg UmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ICsgICAgICAgICAgSVJRIChMZXZlbCwgQWN0aXZlTG93 LCBTaGFyZWQpIHszLCA0LCA1LCA3LCA5LCAxMCwgMTEsIDEyLCAxNCwgMTV9DQo+ICsgICAgICAg IH0pDQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gX1NSUyBtZXRob2QgZm9yIExO S0EsIExOS0IsIExOS0MsIExOS0QsIExOS0UsIExOS0YsIExOS0csIExOS0gNCj4gKyAgICAgICAg Ly8NCj4gKyAgICAgICAgTWV0aG9kIChQU1JTLCAyLCBOb3RTZXJpYWxpemVkKSB7DQo+ICsgICAg ICAgICAgQ3JlYXRlV29yZEZpZWxkIChBcmcxLCAweDAxLCBJUlFXKSAgICAgIC8vIElSUSBsb3cN Cj4gKyAgICAgICAgICBGaW5kU2V0UmlnaHRCaXQgKElSUVcsIExvY2FsMCkgICAgICAgICAgLy8g U2V0IElSUQ0KPiArICAgICAgICAgIElmIChMTm90RXF1YWwgKElSUVcsIFplcm8pKSB7DQo+ICsg ICAgICAgICAgICBBbmQgKExvY2FsMCwgMHg3RiwgTG9jYWwwKQ0KPiArICAgICAgICAgICAgRGVj cmVtZW50IChMb2NhbDApDQo+ICsgICAgICAgICAgfSBFbHNlIHsNCj4gKyAgICAgICAgICAgIE9y IChMb2NhbDAsIDB4ODAsIExvY2FsMCkNCj4gKyAgICAgICAgICB9DQo+ICsgICAgICAgICAgU3Rv cmUgKExvY2FsMCwgQXJnMCkNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsg ICAgICAgIC8vIFBDSSBJUlEgTGluayBBDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIERldmlj ZSAoTE5LQSkgew0KPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIpKQ0K PiArICAgICAgICAgIE5hbWUgKF9VSUQsIDEpDQo+ICsNCj4gKyAgICAgICAgICBNZXRob2QgKF9T VEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RBIChQSVJBKSkgfQ0KPiArICAgICAg ICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJBKSAgfQ0KPiAr ICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBDUlMg KFBJUkEpKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7 IFJldHVybiAoUFBSUykgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFs aXplZCkgeyBQU1JTIChQSVJBLCBBcmcwKSB9DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAg ICAvLw0KPiArICAgICAgICAvLyBQQ0kgSVJRIExpbmsgQg0KPiArICAgICAgICAvLw0KPiArICAg ICAgICBEZXZpY2UgKExOS0IpIHsNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBO UDBDMEYiKSkNCj4gKyAgICAgICAgICBOYW1lIChfVUlELCAyKQ0KPiArDQo+ICsgICAgICAgICAg TWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSQikpIH0N Cj4gKyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUERJUyAoUElS QikgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1 cm4gKFBDUlMgKFBJUkIpKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJp YWxpemVkKSB7IFJldHVybiAoUFBSUykgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwg Tm90U2VyaWFsaXplZCkgeyBQU1JTIChQSVJCLCBBcmcwKSB9DQo+ICsgICAgICAgIH0NCj4gKw0K PiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBQQ0kgSVJRIExpbmsgQw0KPiArICAgICAgICAv Lw0KPiArICAgICAgICBEZXZpY2UgKExOS0MpIHsNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBF SVNBSUQoIlBOUDBDMEYiKSkNCj4gKyAgICAgICAgICBOYW1lIChfVUlELCAzKQ0KPiArDQo+ICsg ICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAo UElSQykpIH0NCj4gKyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsg UERJUyAoUElSQykgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXpl ZCkgeyBSZXR1cm4gKFBDUlMgKFBJUkMpKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAw LCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFBSUykgfQ0KPiArICAgICAgICAgIE1ldGhvZCAo X1NSUywgMSwgTm90U2VyaWFsaXplZCkgeyBQU1JTIChQSVJDLCBBcmcwKSB9DQo+ICsgICAgICAg IH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBQQ0kgSVJRIExpbmsgRA0KPiAr ICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2UgKExOS0QpIHsNCj4gKyAgICAgICAgICBOYW1l IChfSElELCBFSVNBSUQoIlBOUDBDMEYiKSkNCj4gKyAgICAgICAgICBOYW1lIChfVUlELCA0KQ0K PiArDQo+ICsgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVy biAoUFNUQSAoUElSRCkpIH0NCj4gKyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlh bGl6ZWQpIHsgUERJUyAoUElSRCkgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90 U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBDUlMgKFBJUkQpKSB9DQo+ICsgICAgICAgICAgTWV0aG9k IChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFBSUykgfQ0KPiArICAgICAgICAg IE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgeyBQU1JTIChQSVJELCBBcmcwKSB9DQo+ ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBQQ0kgSVJRIExp bmsgRQ0KPiArICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2UgKExOS0UpIHsNCj4gKyAgICAg ICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBDMEYiKSkNCj4gKyAgICAgICAgICBOYW1lIChf VUlELCA1KQ0KPiArDQo+ICsgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVk KSB7IFJldHVybiAoUFNUQSAoUElSRSkpIH0NCj4gKyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAs IE5vdFNlcmlhbGl6ZWQpIHsgUERJUyAoUElSRSkgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0NS UywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBDUlMgKFBJUkUpKSB9DQo+ICsgICAgICAg ICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFBSUykgfQ0KPiAr ICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgeyBQU1JTIChQSVJFLCBB cmcwKSB9DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBQ Q0kgSVJRIExpbmsgRg0KPiArICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2UgKExOS0YpIHsN Cj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBDMEYiKSkNCj4gKyAgICAgICAg ICBOYW1lIChfVUlELCA2KQ0KPiArDQo+ICsgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RT ZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSRikpIH0NCj4gKyAgICAgICAgICBNZXRob2Qg KF9ESVMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUERJUyAoUElSRikgfQ0KPiArICAgICAgICAgIE1l dGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBDUlMgKFBJUkYpKSB9DQo+ ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFBS UykgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgeyBQU1JT IChQSVJGLCBBcmcwKSB9DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAg ICAgICAvLyBQQ0kgSVJRIExpbmsgRw0KPiArICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2Ug KExOS0cpIHsNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBDMEYiKSkNCj4g KyAgICAgICAgICBOYW1lIChfVUlELCA3KQ0KPiArDQo+ICsgICAgICAgICAgTWV0aG9kIChfU1RB LCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSRykpIH0NCj4gKyAgICAgICAg ICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUERJUyAoUElSRykgfQ0KPiArICAg ICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBDUlMgKFBJ UkcpKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJl dHVybiAoUFBSUykgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXpl ZCkgeyBQU1JTIChQSVJHLCBBcmcwKSB9DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAv Lw0KPiArICAgICAgICAvLyBQQ0kgSVJRIExpbmsgSA0KPiArICAgICAgICAvLw0KPiArICAgICAg ICBEZXZpY2UgKExOS0gpIHsNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBD MEYiKSkNCj4gKyAgICAgICAgICBOYW1lIChfVUlELCA4KQ0KPiArDQo+ICsgICAgICAgICAgTWV0 aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSSCkpIH0NCj4g KyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUERJUyAoUElSSCkg fQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4g KFBDUlMgKFBJUkgpKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxp emVkKSB7IFJldHVybiAoUFBSUykgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwgTm90 U2VyaWFsaXplZCkgeyBQU1JTIChQSVJILCBBcmcwKSB9DQo+ICsgICAgICAgIH0NCj4gKw0KPiAr ICAgICAgICAvLw0KPiArICAgICAgICAvLyBQcm9ncmFtbWFibGUgSW50ZXJydXB0IENvbnRyb2xs ZXIgKFBJQykNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNlKFBJQykgew0KPiArICAg ICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCAoIlBOUDAwMDAiKSkNCj4gKyAgICAgICAgICBOYW1l IChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUx NiwgMHgwMjAsIDB4MDIwLCAweDAwLCAweDAyKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2 LCAweDBBMCwgMHgwQTAsIDB4MDAsIDB4MDIpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYs IDB4NEQwLCAweDREMCwgMHgwMCwgMHgwMikNCj4gKyAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkg ezJ9DQo+ICsgICAgICAgICAgfSkNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ ICsgICAgICAgIC8vIElTQSBETUENCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNlIChE TUFDKSB7DQo+ICsgICAgICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMDIwMCIpKQ0KPiAr ICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgew0KPiArICAgICAgICAg ICAgSU8gKERlY29kZTE2LCAweDAwLCAweDAwLCAwLCAweDEwKQ0KPiArICAgICAgICAgICAgSU8g KERlY29kZTE2LCAweDgxLCAweDgxLCAwLCAweDAzKQ0KPiArICAgICAgICAgICAgSU8gKERlY29k ZTE2LCAweDg3LCAweDg3LCAwLCAweDAxKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAw eDg5LCAweDg5LCAwLCAweDAzKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDhmLCAw eDhmLCAwLCAweDAxKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweGMwLCAweGMwLCAw LCAweDIwKQ0KPiArICAgICAgICAgICAgRE1BIChDb21wYXRpYmlsaXR5LCBOb3RCdXNNYXN0ZXIs IFRyYW5zZmVyOCkgezR9DQo+ICsgICAgICAgICAgfSkNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsg ICAgICAgIC8vDQo+ICsgICAgICAgIC8vIDgyNTQgVGltZXINCj4gKyAgICAgICAgLy8NCj4gKyAg ICAgICAgRGV2aWNlKFRNUikgew0KPiArICAgICAgICAgIE5hbWUoX0hJRCxFSVNBSUQoIlBOUDAx MDAiKSkNCj4gKyAgICAgICAgICBOYW1lKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgew0KPiAr ICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDQwLCAweDQwLCAweDAwLCAweDA0KQ0KPiArICAg ICAgICAgICAgSVJRTm9GbGFncyAoKSB7MH0NCj4gKyAgICAgICAgICB9KQ0KPiArICAgICAgICB9 DQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gUmVhbCBUaW1lIENsb2NrDQo+ICsg ICAgICAgIC8vDQo+ICsgICAgICAgIERldmljZSAoUlRDKSB7DQo+ICsgICAgICAgICAgTmFtZSAo X0hJRCwgRUlTQUlEICgiUE5QMEIwMCIpKQ0KPiArICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291 cmNlVGVtcGxhdGUgKCkgew0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDcwLCAweDcw LCAweDAwLCAweDAyKQ0KPiArICAgICAgICAgICAgSVJRTm9GbGFncyAoKSB7OH0NCj4gKyAgICAg ICAgICB9KQ0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8g UENBVCBTcGVha2VyDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIERldmljZShTUEtSKSB7DQo+ ICsgICAgICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEKCJQTlAwODAwIikpDQo+ICsgICAgICAgICAg TmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ICsgICAgICAgICAgICBJTyAoRGVj b2RlMTYsIDB4NjEsIDB4NjEsIDB4MDEsIDB4MDEpDQo+ICsgICAgICAgICAgfSkNCj4gKyAgICAg ICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIEZsb2F0aW5nIFBvaW50IENv cHJvY2Vzc29yDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIERldmljZShGUFUpIHsNCj4gKyAg ICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBDMDQiKSkNCj4gKyAgICAgICAgICBOYW1l IChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUx NiwgMHhGMCwgMHhGMCwgMHgwMCwgMHgxMCkNCj4gKyAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkg ezEzfQ0KPiArICAgICAgICAgIH0pDQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0K PiArICAgICAgICAvLyBHZW5lcmljIG1vdGhlcmJvYXJkIGRldmljZXMgYW5kIHBpZWNlcyB0aGF0 IGRvbid0IGZpdCBhbnl3aGVyZSBlbHNlDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIERldmlj ZShYVFJBKSB7DQo+ICsgICAgICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMEMwMiIpKQ0K PiArICAgICAgICAgIE5hbWUgKF9VSUQsIDB4MDEpDQo+ICsgICAgICAgICAgTmFtZSAoX0NSUywg UmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDEw LCAweDAxMCwgMHgwMCwgMHgxMCkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwMjIs IDB4MDIyLCAweDAwLCAweDFFKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDA0NCwg MHgwNDQsIDB4MDAsIDB4MUMpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDYyLCAw eDA2MiwgMHgwMCwgMHgwMikNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwNjUsIDB4 MDY1LCAweDAwLCAweDBCKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDA3MiwgMHgw NzIsIDB4MDAsIDB4MEUpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDgwLCAweDA4 MCwgMHgwMCwgMHgwMSkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwODQsIDB4MDg0 LCAweDAwLCAweDAzKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDA4OCwgMHgwODgs IDB4MDAsIDB4MDEpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDhjLCAweDA4Yywg MHgwMCwgMHgwMykNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwOTAsIDB4MDkwLCAw eDAwLCAweDEwKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDBBMiwgMHgwQTIsIDB4 MDAsIDB4MUUpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MEUwLCAweDBFMCwgMHgw MCwgMHgxMCkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgxRTAsIDB4MUUwLCAweDAw LCAweDEwKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDE2MCwgMHgxNjAsIDB4MDAs IDB4MTApDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4Mjc4LCAweDI3OCwgMHgwMCwg MHgwOCkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgzNzAsIDB4MzcwLCAweDAwLCAw eDAyKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDM3OCwgMHgzNzgsIDB4MDAsIDB4 MDgpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4NDAwLCAweDQwMCwgMHgwMCwgMHg0 MCkgICAgICAgLy8gUE1CTEsxDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4NDQwLCAw eDQ0MCwgMHgwMCwgMHgxMCkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHg2NzgsIDB4 Njc4LCAweDAwLCAweDA4KQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDc3OCwgMHg3 NzgsIDB4MDAsIDB4MDgpDQo+ICsgICAgICAgICAgICBNZW1vcnkzMkZpeGVkIChSZWFkT25seSwg MHhGRUMwMDAwMCwgMHgxMDAwKSAgLy8gSU8gQVBJQw0KPiArICAgICAgICAgICAgTWVtb3J5MzJG aXhlZCAoUmVhZE9ubHksIDB4RkVFMDAwMDAsIDB4MTAwMDAwKSAvLyBMQVBJQw0KPiArICAgICAg ICAgIH0pDQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBQ Uy8yIEtleWJvYXJkIGFuZCBQQy9BVCBFbmhhbmNlZCBLZXlib2FyZCAxMDEvMTAyDQo+ICsgICAg ICAgIC8vDQo+ICsgICAgICAgIERldmljZSAoUFMySykgew0KPiArICAgICAgICAgIE5hbWUgKF9I SUQsIEVJU0FJRCAoIlBOUDAzMDMiKSkNCj4gKyAgICAgICAgICBOYW1lIChfQ0lELCBFSVNBSUQg KCJQTlAwMzBCIikpDQo+ICsgICAgICAgICAgTmFtZShfQ1JTLFJlc291cmNlVGVtcGxhdGUoKSB7 DQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4NjAsIDB4NjAsIDB4MDAsIDB4MDEpDQo+ ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4NjQsIDB4NjQsIDB4MDAsIDB4MDEpDQo+ICsg ICAgICAgICAgICBJUlFOb0ZsYWdzICgpIHsxfQ0KPiArICAgICAgICAgIH0pDQo+ICsgICAgICAg IH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBQUy8yIE1vdXNlIGFuZCBNaWNy b3NvZnQgTW91c2UNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNlIChQUzJNKSB7ICAv LyBQUy8yIHN0eXBlIG1vdXNlIHBvcnQNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQg KCJQTlAwRjAzIikpDQo+ICsgICAgICAgICAgTmFtZSAoX0NJRCwgRUlTQUlEICgiUE5QMEYxMyIp KQ0KPiArICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUoKSB7DQo+ICsgICAg ICAgICAgICBJUlFOb0ZsYWdzICgpIHsxMn0NCj4gKyAgICAgICAgICB9KQ0KPiArICAgICAgICB9 DQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gVUFSVCBTZXJpYWwgUG9ydCAtIENP TTENCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNlIChVQVIxKSB7DQo+ICsgICAgICAg ICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMDUwMSIpKQ0KPiArICAgICAgICAgIE5hbWUgKF9E RE4sICJDT00xIikNCj4gKyAgICAgICAgICBOYW1lIChfVUlELCAweDAxKQ0KPiArICAgICAgICAg IE5hbWUoX0NSUyxSZXNvdXJjZVRlbXBsYXRlKCkgew0KPiArICAgICAgICAgICAgSU8gKERlY29k ZTE2LCAweDNGOCwgMHgzRjgsIDB4MDAsIDB4MDgpDQo+ICsgICAgICAgICAgICBJUlEgKEVkZ2Us IEFjdGl2ZUhpZ2gsIEV4Y2x1c2l2ZSwgKSB7NH0NCj4gKyAgICAgICAgICB9KQ0KPiArICAgICAg ICB9DQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gVUFSVCBTZXJpYWwgUG9ydCAt IENPTTINCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNlIChVQVIyKSB7DQo+ICsgICAg ICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMDUwMSIpKQ0KPiArICAgICAgICAgIE5hbWUg KF9ERE4sICJDT00yIikNCj4gKyAgICAgICAgICBOYW1lIChfVUlELCAweDAyKQ0KPiArICAgICAg ICAgIE5hbWUoX0NSUyxSZXNvdXJjZVRlbXBsYXRlKCkgew0KPiArICAgICAgICAgICAgSU8gKERl Y29kZTE2LCAweDJGOCwgMHgyRjgsIDB4MDAsIDB4MDgpDQo+ICsgICAgICAgICAgICBJUlEgKEVk Z2UsIEFjdGl2ZUhpZ2gsIEV4Y2x1c2l2ZSwgKSB7M30NCj4gKyAgICAgICAgICB9KQ0KPiArICAg ICAgICB9DQo+ICsgICAgICB9DQo+ICsJfQ0KPiArICB9DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9QbGF0Zm9ybS5oDQo+ IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvUGxhdGZvcm0u aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi42Mzk1ZWMxMWUy DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0FjcGlUYWJsZXMvUGxhdGZvcm0uaA0KPiBAQCAtMCwwICsxLDc1IEBADQo+ICsvKiogQGZp bGUNCj4gKyAgUGxhdGZvcm0gc3BlY2lmaWMgZGVmaW5lcyBmb3IgY29uc3RydWN0aW5nIEFDUEkg dGFibGVzDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDEzIC0gMjAwOCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBf UGxhdGZvcm1faF9JTkNMVURFRF8NCj4gKyNkZWZpbmUgX1BsYXRmb3JtX2hfSU5DTFVERURfDQo+ ICsNCj4gKyNpbmNsdWRlIDxQaUR4ZS5oPg0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQv QWNwaS5oPg0KPiArDQo+ICsvLw0KPiArLy8gQUNQSSB0YWJsZSBpbmZvcm1hdGlvbiB1c2VkIHRv IGluaXRpYWxpemUgdGFibGVzLg0KPiArLy8NCj4gKyNkZWZpbmUgRUZJX0FDUElfT0VNX0lEICAg ICAgICAgICAnTycsJ1YnLCdNJywnRicsJyAnLCcgJyAgIC8vIE9FTUlEIDYgYnl0ZXMgbG9uZw0K PiArI2RlZmluZSBFRklfQUNQSV9PRU1fVEFCTEVfSUQNCj4gU0lHTkFUVVJFXzY0KCdPJywnVics J00nLCdGJywnRScsJ0QnLCdLJywnMicpIC8vIE9FTSB0YWJsZSBpZCA4IGJ5dGVzIGxvbmcNCj4g KyNkZWZpbmUgRUZJX0FDUElfT0VNX1JFVklTSU9OICAgICAweDAyMDAwODIwDQo+ICsjZGVmaW5l IEVGSV9BQ1BJX0NSRUFUT1JfSUQgICAgICAgU0lHTkFUVVJFXzMyKCdPJywnVicsJ00nLCdGJykN Cj4gKyNkZWZpbmUgRUZJX0FDUElfQ1JFQVRPUl9SRVZJU0lPTiAweDAwMDAwMDk3DQo+ICsNCj4g KyNkZWZpbmUgSU5UX01PREVMICAgICAgIDB4MDENCj4gKyNkZWZpbmUgU0NJX0lOVF9WRUNUT1Ig IDB4MDAwOQ0KPiArI2RlZmluZSBTTUlfQ01EX0lPX1BPUlQgMHhCMg0KPiArI2RlZmluZSBBQ1BJ X0VOQUJMRSAgICAgMHgwRTENCj4gKyNkZWZpbmUgQUNQSV9ESVNBQkxFICAgIDB4MDFFDQo+ICsj ZGVmaW5lIFM0QklPU19SRVEgICAgICAweDAwDQo+ICsjZGVmaW5lIFBNMWFfRVZUX0JMSyAgICAw eDAwMDAwNDAwDQo+ICsjZGVmaW5lIFBNMWJfRVZUX0JMSyAgICAweDAwMDAwMDAwDQo+ICsjZGVm aW5lIFBNMWFfQ05UX0JMSyAgICAweDAwMDAwNDA0DQo+ICsjZGVmaW5lIFBNMWJfQ05UX0JMSyAg ICAweDAwMDAwMDAwDQo+ICsjZGVmaW5lIFBNMl9DTlRfQkxLICAgICAweDAwMDAwNDUwDQo+ICsj ZGVmaW5lIFBNX1RNUl9CTEsgICAgICAweDAwMDAwNDA4DQo+ICsjZGVmaW5lIEdQRTBfQkxLICAg ICAgICAweDAwMDAwNDIwDQo+ICsjZGVmaW5lIEdQRTFfQkxLICAgICAgICAweDAwMDAwMDAwDQo+ ICsjZGVmaW5lIFBNMV9FVlRfTEVOICAgICAweDA0DQo+ICsjZGVmaW5lIFBNMV9DTlRfTEVOICAg ICAweDA0DQo+ICsjZGVmaW5lIFBNMl9DTlRfTEVOICAgICAweDAxDQo+ICsjZGVmaW5lIFBNX1RN X0xFTiAgICAgICAweDA0DQo+ICsjZGVmaW5lIEdQRTBfQkxLX0xFTiAgICAweDEwDQo+ICsjZGVm aW5lIEdQRTFfQkxLX0xFTiAgICAweDAwDQo+ICsjZGVmaW5lIEdQRTFfQkFTRSAgICAgICAweDAw DQo+ICsjZGVmaW5lIFJFU0VSVkVEICAgICAgICAweDAwDQo+ICsjZGVmaW5lIFBfTFZMMl9MQVQg ICAgICAweDAwNjUNCj4gKyNkZWZpbmUgUF9MVkwzX0xBVCAgICAgIDB4MDNFOQ0KPiArI2RlZmlu ZSBGTFVTSF9TSVpFICAgICAgMHgwNDAwDQo+ICsjZGVmaW5lIEZMVVNIX1NUUklERSAgICAweDAw MTANCj4gKyNkZWZpbmUgRFVUWV9PRkZTRVQgICAgIDB4MDANCj4gKyNkZWZpbmUgRFVUWV9XSURU SCAgICAgIDB4MDANCj4gKyNkZWZpbmUgREFZX0FMUk0gICAgICAgIDB4MEQNCj4gKyNkZWZpbmUg TU9OX0FMUk0gICAgICAgIDB4MDANCj4gKyNkZWZpbmUgQ0VOVFVSWSAgICAgICAgIDB4MDANCj4g KyNkZWZpbmUgRkxBRyAgICAgICAgICAgIChFRklfQUNQSV8yXzBfV0JJTlZEIHwgXA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgIEVGSV9BQ1BJXzJfMF9QUk9DX0MxIHwgXA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9BQ1BJXzJfMF9TTFBfQlVUVE9OIHwgXA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9BQ1BJXzJfMF9SVENfUzQgfCBcDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgRUZJX0FDUElfMl8wX1JFU0VUX1JFR19TVVApDQo+ICsjZGVmaW5lIFJF U0VUX1JFRyAgICAgICAweENGOQ0KPiArI2RlZmluZSBSRVNFVF9WQUxVRSAgICAgKEJJVDIgfCBC SVQxKSAvLyBQSUlYMyBSZXNldCBDUFUgKyBTeXN0ZW0gUmVzZXQNCj4gKw0KPiArLy8NCj4gKy8v IEJ5dGUtYWxpZ25lZCBJTyBwb3J0IHJlZ2lzdGVyIGJsb2NrIGluaXRpYWxpemVyIGZvcg0KPiAr Ly8gRUZJX0FDUElfMl8wX0dFTkVSSUNfQUREUkVTU19TVFJVQ1RVUkUNCj4gKy8vDQo+ICsjZGVm aW5lIEdBUzJfSU8oQmFzZSwgU2l6ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgICAgICAgIEVGSV9BQ1BJXzJfMF9TWVNURU1fSU8sIC8qIEFkZHJlc3NTcGFjZUlkICAg ICovIFwNCj4gKyAgICAgICAgICAoU2l6ZSkgKiA4LCAgICAgICAgICAgICAvKiBSZWdpc3RlckJp dFdpZHRoICAqLyBcDQo+ICsgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogUmVn aXN0ZXJCaXRPZmZzZXQgKi8gXA0KPiArICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg IC8qIFJlc2VydmVkICAgICAgICAgICovIFwNCj4gKyAgICAgICAgICAoQmFzZSkgICAgICAgICAg ICAgICAgICAvKiBBZGRyZXNzICAgICAgICAgICAqLyBcDQo+ICsgICAgICAgICAgfQ0KPiArDQo+ ICsjZW5kaWYNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9JbmNsdWRlL0d1aWQvU2ltaWNzWDU4UGxhdGZvcm1Db25maWcuDQo+IGgNCj4gYi9QbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9HdWlkL1NpbWljc1g1OFBsYXRm b3JtQ29uZmlnLg0KPiBoDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAuLmY2NWY2MWQ3NGQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9HdWlkL1NpbWljc1g1OFBsYXRmb3JtQ29uZmln Lg0KPiBoDQo+IEBAIC0wLDAgKzEsMTcgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBHVUlEIGZvciBV RUZJIHZhcmlhYmxlcyB0aGF0IGFyZSBzcGVjaWZpYyB0byBPVk1GIGNvbmZpZ3VyYXRpb24uDQo+ ICsNCj4gKyAgQ29weXJpZ2h0IChDKSAyMDE0LCBSZWQgSGF0LCBJbmMuDQo+ICsNCj4gKyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ ICsjaWZuZGVmIF9fU0lNSUNTWDU4X1BMQVRGT1JNX0NPTkZJR19IX18NCj4gKyNkZWZpbmUgX19T SU1JQ1NYNThfUExBVEZPUk1fQ09ORklHX0hfXw0KPiArDQo+ICsjZGVmaW5lIFNJTUlDU1g1OF9Q TEFURk9STV9DT05GSUdfR1VJRCBcDQo+ICt7MHhlZWQzNWY1NywgMHg0ZmYyLCAweDQyNDQsIHsw eGI4LCAweDNhLCAweGVhLCAweDcxLCAweDVmLCAweGQzLCAweDU5LA0KPiAweGE1fX0NCj4gKw0K PiArZXh0ZXJuIEVGSV9HVUlEIGdTaW1pY3NYNThQbGF0Zm9ybUNvbmZpZ0d1aWQ7DQo+ICsNCj4g KyNlbmRpZg0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YNThJY2gxMC5oDQo+IGIvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YNThJY2gxMC5o DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjM2YzA4MTc2ZDEN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1g1OEljaDEwLmgNCj4gQEAgLTAsMCArMSwx MDYgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBWYXJpb3VzIHJlZ2lzdGVyIG51bWJlcnMgYW5kIHZh bHVlIGJpdHMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBwdWJsaWNhdGlvbnM6DQo+ICsgIC0gSW50 ZWwoUikgZGF0YXNoZWV0IDMxOTk3My0wMDMNCj4gKyAgLSBJbnRlbChSKSBkYXRhc2hlZXQgMzE5 OTc0LTAxN1VTDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChDKSAyMDE1LCBSZWQgSGF0LCBJbmMuDQo+ ICsgIENvcHlyaWdodCAoYykgMjAxNCwgR2FicmllbCBMLiBTb21sbyA8c29tbG9AY211LmVkdT4N Cj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiArKiovDQo+ICsNCj4gKyNpZm5kZWYgX19YNThfSUNIMTBfSF9fDQo+ICsjZGVmaW5lIF9fWDU4 X0lDSDEwX0hfXw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9QY2lMaWIuaD4NCj4gKw0KPiAr Ly8NCj4gKy8vIEhvc3QgQnJpZGdlIERldmljZSBJRCAoRElEKSB2YWx1ZSBmb3IgSUNIMTANCj4g Ky8vDQo+ICsjZGVmaW5lIElOVEVMX0lDSDEwX0RFVklDRV9JRCAweDM0MDANCj4gKw0KPiArLy8N Cj4gKy8vIEIvRC9GL1R5cGU6IDAvMC8wL1BDSQ0KPiArLy8NCj4gKyNkZWZpbmUgRFJBTUNfUkVH SVNURVJfUTM1KE9mZnNldCkgUENJX0xJQl9BRERSRVNTICgwLCAwLCAwLCAoT2Zmc2V0KSkNCj4g KyNkZWZpbmUgRFJBTUNfUkVHSVNURVJfWDU4KE9mZnNldCkgUENJX0xJQl9BRERSRVNTICgwLCAy MCwgMCwgKE9mZnNldCkpDQo+ICsjZGVmaW5lIE1DSF9HR0MgICAgICAgICAgICAgICAgIDB4NTIN Cj4gKyNkZWZpbmUgTUNIX0dHQ19JVkQgICAgICAgICAgICAgQklUMQ0KPiArDQo+ICsjZGVmaW5l IE1DSF9QQ0lFWEJBUl9MT1cgICAgICAgIDB4MTBDDQo+ICsjZGVmaW5lIE1DSF9QQ0lFWEJBUl9M SUQgICAgICAgIDB4MTBFDQo+ICsjZGVmaW5lIE1DSF9QQ0lFWEJBUl9TSElGVCAgICAgIDE2DQo+ ICsjZGVmaW5lIE1DSF9QQ0lFWEJBUl9MT1dNQVNLICAgIDB4MEZGRkZGRkYNCj4gKyNkZWZpbmUg TUNIX1BDSUVYQkFSX0JVU19GRiAgICAgMA0KPiArI2RlZmluZSBNQ0hfUENJRVhCQVJfRU4gICAg ICAgICBCSVQwDQo+ICsNCj4gKyNkZWZpbmUgTUNIX1BDSUVYQkFSX0hJR0ggICAgICAgMHg2NA0K PiArI2RlZmluZSBNQ0hfUENJRVhCQVJfSElHSE1BU0sgICAweEZGRkZGRkYwDQo+ICsNCj4gKyNk ZWZpbmUgTUNIX1NNUkFNICAgICAgICAgICAgIDB4OUQNCj4gKyNkZWZpbmUgTUNIX1NNUkFNX0Rf TENLICAgICAgICAgQklUNA0KPiArI2RlZmluZSBNQ0hfU01SQU1fR19TTVJBTUUgICAgICBCSVQz DQo+ICsNCj4gKyNkZWZpbmUgTUNIX0VTTVJBTUMgICAgICAgICAgIDB4OUUNCj4gKyNkZWZpbmUg TUNIX0VTTVJBTUNfSF9TTVJBTUUgICAgQklUNw0KPiArI2RlZmluZSBNQ0hfRVNNUkFNQ19FX1NN RVJSICAgICBCSVQ2DQo+ICsjZGVmaW5lIE1DSF9FU01SQU1DX1NNX0NBQ0hFICAgIEJJVDUNCj4g KyNkZWZpbmUgTUNIX0VTTVJBTUNfU01fTDEgICAgICAgQklUNA0KPiArI2RlZmluZSBNQ0hfRVNN UkFNQ19TTV9MMiAgICAgICBCSVQzDQo+ICsjZGVmaW5lIE1DSF9FU01SQU1DX1RTRUdfOE1CICAg IEJJVDMNCj4gKyNkZWZpbmUgTUNIX0VTTVJBTUNfVFNFR18yTUIgICAgQklUMg0KPiArI2RlZmlu ZSBNQ0hfRVNNUkFNQ19UU0VHXzFNQiAgICBCSVQxDQo+ICsjZGVmaW5lIE1DSF9FU01SQU1DX1RT RUdfTUFTSyAgIChCSVQzIHwgQklUMiB8IEJJVDEpDQo+ICsjZGVmaW5lIE1DSF9FU01SQU1DX1Rf RU4gICAgICAgIEJJVDANCj4gKw0KPiArI2RlZmluZSBNQ0hfR0JTTSAgICAgICAgICAgICAgMHhB NA0KPiArI2RlZmluZSBNQ0hfR0JTTV9NQl9TSElGVCAgICAgICAyMA0KPiArDQo+ICsjZGVmaW5l IE1DSF9CR1NNICAgICAgICAgICAgICAweEE4DQo+ICsjZGVmaW5lIE1DSF9CR1NNX01CX1NISUZU ICAgICAgIDIwDQo+ICsNCj4gKyNkZWZpbmUgTUNIX1RTRUdNQiAgICAgICAgICAgIDB4QTgNCj4g KyNkZWZpbmUgTUNIX1RTRUdNQl9NQl9TSElGVCAgICAgMjANCj4gKw0KPiArI2RlZmluZSBNQ0hf VE9MVUQgICAgICAgICAgICAgMHhEMA0KPiArDQo+ICsvLw0KPiArLy8gQi9EL0YvVHlwZTogMC8w eDFmLzAvUENJDQo+ICsvLw0KPiArI2RlZmluZSBQT1dFUl9NR01UX1JFR0lTVEVSX0lDSDEwKE9m ZnNldCkgXA0KPiArICBQQ0lfTElCX0FERFJFU1MgKDAsIDB4MWYsIDAsIChPZmZzZXQpKQ0KPiAr DQo+ICsjZGVmaW5lIElDSDEwX1BNQkFTRSAgICAgICAgICAgICAgIDB4NDANCj4gKyNkZWZpbmUg SUNIMTBfUE1CQVNFX01BU0sgICAgICAgICAgICAoQklUMTUgfCBCSVQxNCB8IEJJVDEzIHwgQklU MTIgfCBCSVQxMSB8DQo+IFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCSVQxMCB8IEJJVDkgIHwgQklUOCAgfCBCSVQ3KQ0KPiArDQo+ICsjZGVmaW5lIElDSDEwX0FD UElfQ05UTCAgICAgICAgICAgIDB4NDQNCj4gKyNkZWZpbmUgSUNIMTBfQUNQSV9DTlRMX0FDUElf RU4gICAgICBCSVQ3DQo+ICsNCj4gKyNkZWZpbmUgSUNIMTBfR0VOX1BNQ09OXzEgICAgICAgICAg MHhBMA0KPiArI2RlZmluZSBJQ0gxMF9HRU5fUE1DT05fMV9TTUlfTE9DSyAgIEJJVDQNCj4gKw0K PiArI2RlZmluZSBJQ0gxMF9SQ0JBICAgICAgICAgICAgICAgICAweEYwDQo+ICsjZGVmaW5lIElD SDEwX1JDQkFfRU4gICAgICAgICAgICAgICAgQklUMA0KPiArDQo+ICsjZGVmaW5lIElDSDEwX1BN QkFTRV9JTyAgICAgICAgICAgIDB4NDAwDQo+ICsvLw0KPiArLy8gSU8gcG9ydHMNCj4gKy8vDQo+ ICsjZGVmaW5lIElDSDEwX0FQTV9DTlQgMHhCMg0KPiArI2RlZmluZSBJQ0gxMF9BUE1fU1RTIDB4 QjMNCj4gKw0KPiArLy8NCj4gKy8vIElPIHBvcnRzIHJlbGF0aXZlIHRvIFBNQkFTRQ0KPiArLy8N Cj4gKyNkZWZpbmUgSUNIMTBfUE1CQVNFX09GU19TTUlfRU4gICAweDMwDQo+ICsjZGVmaW5lIElD SDEwX1NNSV9FTl9BUE1DX0VOICAgICAgQklUNQ0KPiArI2RlZmluZSBJQ0gxMF9TTUlfRU5fR0JM X1NNSV9FTiAgIEJJVDANCj4gKyNkZWZpbmUgSUNIMTBfU01JX0VOX0VPUyAgICAgICAgICBCSVQx ICAvLyBFbmQgb2YgU01JDQo+ICsNCj4gKyNkZWZpbmUgSUNIMTBfUE1CQVNFX09GU19TTUlfU1RT ICAweDM0DQo+ICsjZGVmaW5lIElDSDEwX1NNSV9TVFNfQVBNICAgICAgICAgQklUNSAgLy8gQVBN IFN0YXR1cw0KPiArDQo+ICsjZGVmaW5lIElDSDEwX1JPT1RfQ09NUExFWF9CQVNFIDB4RkVEMUMw MDANCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FBY3BpLmgNCj4gYi9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FBY3BpLmgNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uMTJhZWIxMjI3Yw0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRl L1Byb3RvY29sL0lzYUFjcGkuaA0KPiBAQCAtMCwwICsxLDI5OCBAQA0KPiArLyoqIEBmaWxlDQo+ ICsgIEVGSSBJU0EgQUNQSSBQcm90b2NvbCBpcyB1c2VkIHRvIGVudW1lcmF0ZSBhbmQgbWFuYWdl IGFsbCB0aGUgSVNBIGNvbnRyb2xsZXJzDQo+IG9uDQo+ICsgIHRoZSBwbGF0Zm9ybSdzIElTQSBC dXMuDQo+ICsNCj4gK0NvcHlyaWdodCAoYykgMjAwNiAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9fSVNBX0FD UElfSF8NCj4gKyNkZWZpbmUgX19JU0FfQUNQSV9IXw0KPiArDQo+ICsvLy8NCj4gKy8vLyBHbG9i YWwgSUQgZm9yIHRoZSBFRkkgSVNBIEFDUEkgUHJvdG9jb2wuDQo+ICsvLy8NCj4gKyNkZWZpbmUg RUZJX0lTQV9BQ1BJX1BST1RPQ09MX0dVSUQgXA0KPiArICB7IFwNCj4gKyAgICAweDY0YTg5MmRj LCAweDU1NjEsIDB4NDUzNiwgeyAweDkyLCAweGM3LCAweDc5LCAweDliLCAweGZjLCAweDE4LCAw eDMzLA0KPiAweDU1IH0gXA0KPiArICB9DQo+ICsNCj4gKy8vLw0KPiArLy8vIEZvcndhcmQgZGVj bGFyYXRpb24gZm8gdGhlIEVGSSBJU0EgQUNQSSBQcm90b2NvbA0KPiArLy8vDQo+ICt0eXBlZGVm IHN0cnVjdCBfRUZJX0lTQV9BQ1BJX1BST1RPQ09MIEVGSV9JU0FfQUNQSV9QUk9UT0NPTDsNCj4g Kw0KPiArLy8vDQo+ICsvLy8gSVNBIEFDUEkgUHJvdG9jb2wgaW50ZXJydXB0IHJlc291cmNlIGF0 dHJpYnV0ZXMuDQo+ICsvLy8NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX0lSUV9UWVBFX0hJR0hf VFJVRV9FREdFX1NFTlNJVElWRSAgIDB4MDEgICAvLy88DQo+IEVkZ2UgdHJpZ2dlcmVkIGludGVy cnVwdCBvbiBhIHJpc2luZyBlZGdlLg0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfSVJRX1RZUEVf TE9XX1RSVUVfRURHRV9TRU5TSVRJVkUgICAgMHgwMiAgIC8vLzwNCj4gRWRnZSB0cmlnZ2VyZWQg aW50ZXJydXB0IG9uIGEgZmFsbGluZyBlZGdlLg0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfSVJR X1RZUEVfSElHSF9UUlVFX0xFVkVMX1NFTlNJVElWRSAgMHgwNCAgIC8vLzwNCj4gTGV2ZWwgc2Vu c2l0aXZlIGludGVycnVwdCBhY3RpdmUgaGlnaC4NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX0lS UV9UWVBFX0xPV19UUlVFX0xFVkVMX1NFTlNJVElWRSAgIDB4MDggICAvLy88DQo+IExldmVsIHNl bnNpdGl2ZSBpbnRlcnJ1cHQgYWN0aXZlIGxvdy4NCj4gKw0KPiArLy8vDQo+ICsvLy8gSVNBIEFD UEkgUHJvdG9jb2wgRE1BIHJlc291cmNlIGF0dHJpYnV0ZXMuDQo+ICsvLy8NCj4gKyNkZWZpbmUg RUZJX0lTQV9BQ1BJX0RNQV9TUEVFRF9UWVBFX01BU0sgICAgICAgICAgICAgICAgIDB4MDMgICAv Ly88IEJpdCBtYXNrDQo+IG9mIHN1cHBvcnRlZCBETUEgc3BlZWQgYXR0cmlidXRlcy4NCj4gKyNk ZWZpbmUgRUZJX0lTQV9BQ1BJX0RNQV9TUEVFRF9UWVBFX0NPTVBBVElCSUxJVFkgICAgICAgIDB4 MDAgICAvLy88IElTQQ0KPiBjb250cm9sbGVyIHN1cHBvcnRzIGNvbXBhdGliaWxpdHkgbW9kZSBE TUEgdHJhbnNmZXJzLg0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX1NQRUVEX1RZUEVfQSAg ICAgICAgICAgICAgICAgICAgMHgwMSAgIC8vLzwgSVNBDQo+IGNvbnRyb2xsZXIgc3VwcG9ydHMg dHlwZSBBIERNQSB0cmFuc2ZlcnMuDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfU1BFRURf VFlQRV9CICAgICAgICAgICAgICAgICAgICAweDAyICAgLy8vPCBJU0ENCj4gY29udHJvbGxlciBz dXBwb3J0cyB0eXBlIEIgRE1BIHRyYW5zZmVycy4NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX0RN QV9TUEVFRF9UWVBFX0YgICAgICAgICAgICAgICAgICAgIDB4MDMgICAvLy88IElTQQ0KPiBjb250 cm9sbGVyIHN1cHBvcnRzIHR5cGUgRiBETUEgdHJhbnNmZXJzLg0KPiArI2RlZmluZSBFRklfSVNB X0FDUElfRE1BX0NPVU5UX0JZX0JZVEUgICAgICAgICAgICAgICAgICAgMHgwNCAgIC8vLzwgSVNB DQo+IGNvbnRyb2xsZXIgaW5jcmVtZW50cyBETUEgYWRkcmVzcyBieSBieXRlcyAoOC1iaXQpLg0K PiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX0NPVU5UX0JZX1dPUkQgICAgICAgICAgICAgICAg ICAgMHgwOCAgIC8vLzwgSVNBDQo+IGNvbnRyb2xsZXIgaW5jcmVtZW50cyBETUEgYWRkcmVzcyBi eSB3b3JkcyAoMTYtYml0KS4NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX0RNQV9CVVNfTUFTVEVS ICAgICAgICAgICAgICAgICAgICAgIDB4MTAgICAvLy88IElTQQ0KPiBjb250cm9sbGVyIGlzIGEg RE1BIGJ1cyBtYXN0ZXIuDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfVFJBTlNGRVJfVFlQ RV84X0JJVCAgICAgICAgICAgICAweDIwICAgLy8vPCBJU0ENCj4gY29udHJvbGxlciBvbmx5IHN1 cHBvcnRzIDgtYml0IERNQSB0cmFuc2ZlcnMuDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFf VFJBTlNGRVJfVFlQRV84X0JJVF9BTkRfMTZfQklUICAweDQwDQo+IC8vLzwgSVNBIGNvbnRyb2xs ZXIgYm90aCA4LWJpdCBhbmQgMTYtYml0IERNQSB0cmFuc2ZlcnMuDQo+ICsjZGVmaW5lIEVGSV9J U0FfQUNQSV9ETUFfVFJBTlNGRVJfVFlQRV8xNl9CSVQgICAgICAgICAgICAweDgwICAgLy8vPCBJ U0ENCj4gY29udHJvbGxlciBvbmx5IHN1cHBvcnRzIDE2LWJpdCBETUEgdHJhbnNmZXJzLg0KPiAr DQo+ICsvLy8NCj4gKy8vLyBJU0EgQUNQSSBQcm90b2NvbCBNTUlPIHJlc291cmNlIGF0dHJpYnV0 ZXMNCj4gKy8vLw0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfTUVNT1JZX1dJRFRIX01BU0sgICAg ICAgICAgICAgICAgICAgMHgwMyAgIC8vLzwgQml0IG1hc2sNCj4gb2Ygc3VwcG9ydGVkIElTQSBt ZW1vcnkgd2lkdGggYXR0cmlidXRlcy4NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9X SURUSF84X0JJVCAgICAgICAgICAgICAgICAgIDB4MDAgICAvLy88IElTQQ0KPiBNTUlPIHJlZ2lv biBvbmx5IHN1cHBvcnRzIDgtYml0IGFjY2Vzcy4NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01F TU9SWV9XSURUSF8xNl9CSVQgICAgICAgICAgICAgICAgIDB4MDEgICAvLy88IElTQQ0KPiBNTUlP IHJlZ2lvbiBvbmx5IHN1cHBvcnRzIDE2LWJpdCBhY2Nlc3MuDQo+ICsjZGVmaW5lIEVGSV9JU0Ff QUNQSV9NRU1PUllfV0lEVEhfOF9CSVRfQU5EXzE2X0JJVCAgICAgICAweDAyICAgLy8vPA0KPiBJ U0EgTU1JTyByZWdpb24gc3VwcG9ydHMgYm90aCA4LWJpdCBhbmQgMTYtYml0IGFjY2Vzcy4NCj4g KyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9XUklURUFCTEUgICAgICAgICAgICAgICAgICAg IDB4MDQgICAvLy88IElTQSBNTUlPDQo+IHJlZ2lvbiBzdXBwb3J0cyB3cml0ZSB0cmFuc2FjdGlv bnMuDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9NRU1PUllfQ0FDSEVBQkxFICAgICAgICAgICAg ICAgICAgICAweDA4ICAgLy8vPCBJU0EgTU1JTw0KPiByZWdpb24gc3VwcG9ydHMgYmVpbmcgY2Fj aGVkLg0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfTUVNT1JZX1NIQURPV0FCTEUgICAgICAgICAg ICAgICAgICAgMHgxMCAgIC8vLzwgSVNBDQo+IE1NSU8gcmVnaW9uIG1heSBiZSBzaGFkb3dlZC4N Cj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9FWFBBTlNJT05fUk9NICAgICAgICAgICAg ICAgIDB4MjAgICAvLy88IElTQQ0KPiBNTUlPIHJlZ2lvbiBpcyBhbiBleHBhbnNpb24gUk9NLg0K PiArDQo+ICsvLy8NCj4gKy8vLyBJU0EgQUNQSSBQcm90b2NvbCBJL08gcmVzb3VyY2UgYXR0cmli dXRlcw0KPiArLy8vDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9JT19ERUNPREVfMTBfQklUUyAg ICAgICAgICAgICAgICAgICAweDAxICAgIC8vLzwgSVNBDQo+IGNvbnRyb2xsZXJzIHVzZXMgYSAx MC1iaXQgYWRkcmVzcyBkZWNvZGVyIGZvciBJL08gY3ljbGVzLg0KPiArI2RlZmluZSBFRklfSVNB X0FDUElfSU9fREVDT0RFXzE2X0JJVFMgICAgICAgICAgICAgICAgICAgMHgwMiAgICAvLy88IElT QQ0KPiBjb250cm9sbGVycyB1c2VzIGEgMTYtYml0IGFkZHJlc3MgZGVjb2RlciBmb3IgSS9PIGN5 Y2xlcy4NCj4gKw0KPiArLy8vDQo+ICsvLy8gRUZJIElTQSBBQ1BJIHJlc291cmNlIHR5cGUNCj4g Ky8vLw0KPiArdHlwZWRlZiBlbnVtIHsNCj4gKyAgRWZpSXNhQWNwaVJlc291cmNlRW5kT2ZMaXN0 LCAgICAvLy88IE1hcmtzIHRoZSBlbmQgaWYgYSByZXNvdXJjZSBsaXN0Lg0KPiArICBFZmlJc2FB Y3BpUmVzb3VyY2VJbywgICAgICAgICAgIC8vLzwgSVNBIEkvTyBwb3J0IHJlc291cmNlIHJhbmdl Lg0KPiArICBFZmlJc2FBY3BpUmVzb3VyY2VNZW1vcnksICAgICAgIC8vLzwgSVNBIE1NSU8gcmVz b3VyY2UgcmFuZ2UuDQo+ICsgIEVmaUlzYUFjcGlSZXNvdXJjZURtYSwgICAgICAgICAgLy8vPCBJ U0EgRE1BIHJlc291cmNlLg0KPiArICBFZmlJc2FBY3BpUmVzb3VyY2VJbnRlcnJ1cHQgICAgIC8v LzwgSVNBIGludGVycnVwdCByZXNvdXJjZS4NCj4gK30gRUZJX0lTQV9BQ1BJX1JFU09VUkNFX1RZ UEU7DQo+ICsNCj4gKy8vLw0KPiArLy8vIEVGSSBJU0EgQUNQSSBnZW5lcmljIHJlc291cmNlIHN0 cnVjdHVyZQ0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9JU0FfQUNQSV9S RVNPVVJDRV9UWVBFICBUeXBlOyAgICAgICAgIC8vLzwgVGhlIHR5cGUgb2YgcmVzb3VyY2UgKEkv TywNCj4gTU1JTywgRE1BLCBJbnRlcnJ1cHQpLg0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgICAgQXR0cmlidXRlOyAgICAvLy88IEJpdCBtYXNrIG9mIGF0dHJpYnV0ZXMgYXNzb2NpYXRl ZCB3aXRoIHRoaXMNCj4gcmVzb3VyY2UuICBTZWUgRUZJX0lTQV9BQ1BJX3h4eCBtYWNyb3MgZm9y IHZhbGlkIGNvbWJpbmF0aW9ucy4NCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgIFN0 YXJ0UmFuZ2U7ICAgLy8vPCBUaGUgc3RhcnQgb2YgdGhlIHJlc291cmNlIHJhbmdlLg0KPiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgRW5kUmFuZ2U7ICAgICAvLy88IFRoZSBlbmQgb2Yg dGhlIHJlc291cmNlIHJhbmdlLg0KPiArfSBFRklfSVNBX0FDUElfUkVTT1VSQ0U7DQo+ICsNCj4g Ky8vLw0KPiArLy8vIEVGSSBJU0EgQUNQSSByZXNvdXJjZSBkZXZpY2UgaWRlbnRpZmllcg0KPiAr Ly8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQzMiAgSElEOyAgIC8vLzwgVGhlIEFD UEkgSGFyZHdhcmUgSWRlbnRpZmllciB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYW4gSVNBDQo+IGNv bnRyb2xsZXIuICBNYXRjaHMgQUNQSSBEU0RUIGNvbnRlbnRzLg0KPiArICBVSU5UMzIgIFVJRDsg ICAvLy88IFRoZSBBQ1BJIFVuaXF1ZSBJZGVudGlmaWVyIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBh biBJU0ENCj4gY29udHJvbGxlci4gIE1hdGNoZXMgQUNQSSBEU0RUIGNvbnRlbnRzLg0KPiArfSBF RklfSVNBX0FDUElfREVWSUNFX0lEOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBFRkkgSVNBIEFDUEkg cmVzb3VyY2UgbGlzdA0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIEVGSV9JU0Ff QUNQSV9ERVZJQ0VfSUQgIERldmljZTsgICAgICAgICAgLy8vPCBUaGUgQUNQSSBISUQvVUlEIGFz c29jaWF0ZWQgd2l0aA0KPiBhbiBJU0EgY29udHJvbGxlci4NCj4gKyAgRUZJX0lTQV9BQ1BJX1JF U09VUkNFICAgKlJlc291cmNlSXRlbTsgICAvLy88IEEgcG9pbnRlciB0byB0aGUgbGlzdCBvZg0K PiByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIElTQSBjb250cm9sbGVyLg0KPiArfSBFRklf SVNBX0FDUElfUkVTT1VSQ0VfTElTVDsNCj4gKw0KPiArLyoqDQo+ICsgIEVudW1lcmF0ZXMgdGhl IElTQSBjb250cm9sbGVycyBvbiBhbiBJU0EgYnVzLg0KPiArDQo+ICsgIFRoaXMgc2VydmljZSBh bGxvd3MgYWxsIHRoZSBJU0EgY29udHJvbGxlcnMgb24gYW4gSVNBIGJ1cyB0byBiZSBlbnVtZXJh dGVkLiAgSWYNCj4gKyAgRGV2aWNlIGlzIGEgcG9pbnRlciB0byBhIE5VTEwgdmFsdWUsIHRoZW4g dGhlIGZpcnN0IElTQSBjb250cm9sbGVyIG9uIHRoZSBJU0ENCj4gKyAgYnVzIGlzIHJldHVybmVk IGluIERldmljZSBhbmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuICBJZiBEZXZpY2UgaXMgYSBw b2ludGVyDQo+ICsgIHRvIGEgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgb24gYSBwcmlvciBjYWxs IHRvIERldmljZUVudW1lcmF0ZSgpLCB0aGVuIHRoZQ0KPiBuZXh0DQo+ICsgIElTQSBjb250cm9s bGVyIG9uIHRoZSBJU0EgYnVzIGlzIHJldHVybmVkIGluIERldmljZSBhbmQgRUZJX1NVQ0NFU1Mg aXMNCj4gcmV0dXJuZWQuDQo+ICsgIElmIERldmljZSBpcyBhIHBvaW50ZXIgdG8gdGhlIGxhc3Qg SVNBIGNvbnRyb2xsZXIgb24gdGhlIElTQSBidXMsIHRoZW4NCj4gKyAgRUZJX05PVF9GT1VORCBp cyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW1baW5dICBUaGlzICAgICBUaGUgcG9pbnRlciB0 byB0aGUgRUZJX0lTQV9BQ1BJX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1bb3V0XSBE ZXZpY2UgICBUaGUgcG9pbnRlciB0byBhbiBJU0EgY29udHJvbGxlciBuYW1lZCBieSBBQ1BJDQo+ IEhJRC9VSUQuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICBUaGUgbmV4dCBJU0Eg Y29udHJvbGxlciBvbiB0aGUgSVNBIGJ1cyB3YXMgcmV0dXJuZWQuDQo+ICsgIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgTm8gZGV2aWNlIGZvdW5kLg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4g K0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKkVGSV9JU0FfQUNQSV9ERVZJQ0VfRU5VTUVSQVRFKSgN Cj4gKyAgSU4gIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAgICpUaGlzLA0KPiArICBPVVQgRUZJX0lT QV9BQ1BJX0RFVklDRV9JRCAgKipEZXZpY2UNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFNl dHMgdGhlIHBvd2VyIHN0YXRlIG9mIGFuIElTQSBjb250cm9sbGVyLg0KPiArDQo+ICsgIFRoaXMg c2VydmljZXMgc2V0cyB0aGUgcG93ZXIgc3RhdGUgb2YgdGhlIElTQSBjb250cm9sbGVyIHNwZWNp ZmllZCBieSBEZXZpY2UgdG8NCj4gKyAgdGhlIHBvd2VyIHN0YXRlIHNwZWNpZmllZCBieSBPbk9m Zi4gIFRSVUUgZGVub3RlcyBvbiwgRkFMU0UgZGVub3RlcyBvZmYuDQo+ICsgIElmIHRoZSBwb3dl ciBzdGF0ZSBpcyBzdWNlc3NmdWxseSBzZXQgb24gdGhlIElTQSBDb250cm9sbGVyLCB0aGVuDQo+ ICsgIEVGSV9TVUNDRVNTIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gVGhpcyAg ICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4g KyAgQHBhcmFtW2luXSBEZXZpY2UgICBUaGUgcG9pbnRlciB0byBhbiBJU0EgY29udHJvbGxlciBu YW1lZCBieSBBQ1BJIEhJRC9VSUQuDQo+ICsgIEBwYXJhbVtpbl0gT25PZmYgICAgVFJVRSBkZW5v dGVzIG9uLCBGQUxTRSBkZW5vdGVzIG9mZi4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgU3VjY2Vzc2Z1bGx5IHNldCB0aGUgcG93ZXIgc3RhdGUgb2YgdGhlIElTQSBjb250cm9sbGVy Lg0KPiArICBAcmV0dmFsIE90aGVyICAgICAgICAgVGhlIElTQSBjb250cm9sbGVyIGNvdWxkIG5v dCBiZSBwbGFjZWQgaW4gdGhlIHJlcXVlc3RlZA0KPiBwb3dlciBzdGF0ZS4NCj4gKw0KPiArKiov DQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfSVNBX0FDUElfU0VU X0RFVklDRV9QT1dFUikoDQo+ICsgIElOIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAgICpUaGlzLA0K PiArICBJTiBFRklfSVNBX0FDUElfREVWSUNFX0lEICAqRGV2aWNlLA0KPiArICBJTiBCT09MRUFO ICAgICAgICAgICAgICAgICBPbk9mZg0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgUmV0cmll dmVzIHRoZSBjdXJyZW50IHNldCBvZiByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIElTQSBj b250cm9sbGVyLg0KPiArDQo+ICsgIFJldHJpZXZlcyB0aGUgc2V0IG9mIEkvTywgTU1JTywgRE1B LCBhbmQgaW50ZXJydXB0IHJlc291cmNlcyBjdXJyZW50bHkNCj4gKyAgYXNzaWduZWQgdG8gdGhl IElTQSBjb250cm9sbGVyIHNwZWNpZmllZCBieSBEZXZpY2UuICBUaGVzZSByZXNvdXJjZXMNCj4g KyAgYXJlIHJldHVybmVkIGluIFJlc291cmNlTGlzdC4NCj4gKw0KPiArICBAcGFyYW1baW5dICBU aGlzICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0FDUElfUFJPVE9DT0wgaW5z dGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gIERldmljZSAgICAgICAgVGhlIHBvaW50ZXIgdG8gYW4g SVNBIGNvbnRyb2xsZXIgbmFtZWQgYnkgQUNQSQ0KPiBISUQvVUlELg0KPiArICBAcGFyYW1bb3V0 XSBSZXNvdXJjZUxpc3QgIFRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHJlc291cmNlIGxpc3Qg Zm9yIERldmljZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgIFN1Y2Nlc3NmdWxs eSByZXRyaWV2ZWQgdGhlIGN1cnJlbnQgcmVzb3VyY2UgbGlzdC4NCj4gKyAgQHJldHZhbCBFRklf Tk9UX0ZPVU5EICBUaGUgcmVzb3VyY2UgbGlzdCBjb3VsZCBub3QgYmUgcmV0cmlldmVkLg0KPiAr DQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKkVGSV9JU0Ff QUNQSV9HRVRfQ1VSX1JFU09VUkNFKSgNCj4gKyAgSU4gIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAg ICAgICAqVGhpcywNCj4gKyAgSU4gIEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQgICAgICAqRGV2aWNl LA0KPiArICBPVVQgRUZJX0lTQV9BQ1BJX1JFU09VUkNFX0xJU1QgICoqUmVzb3VyY2VMaXN0DQo+ ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBSZXRyaWV2ZXMgdGhlIHNldCBvZiBwb3NzaWJsZSBy ZXNvdXJjZXMgdGhhdCBtYXkgYmUgYXNzaWduZWQgdG8gYW4gSVNBDQo+IGNvbnRyb2xsZXINCj4g KyAgd2l0aCBTZXRSZXNvdXJjZSgpLg0KPiArDQo+ICsgIFJldHJpZXZlcyB0aGUgcG9zc2libGUg c2V0cyBvZiBJL08sIE1NSU8sIERNQSwgYW5kIGludGVycnVwdCByZXNvdXJjZXMgZm9yDQo+IHRo ZQ0KPiArICBJU0EgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgRGV2aWNlLiAgVGhlIHNldHMgYXJl IHJldHVybmVkIGluIFJlc291cmNlTGlzdC4NCj4gKw0KPiArICBAcGFyYW1baW5dICBUaGlzICAg ICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9BQ1BJX1BST1RPQ09MIGluc3RhbmNl Lg0KPiArICBAcGFyYW1baW5dICBEZXZpY2UgICAgICAgICBUaGUgcG9pbnRlciB0byBhbiBJU0Eg Y29udHJvbGxlciBuYW1lZCBieSBBQ1BJDQo+IEhJRC9VSUQuDQo+ICsgIEBwYXJhbVtvdXRdIFJl c291cmNlTGlzdCAgIFRoZSBwb2ludGVyIHRvIHRoZSByZXR1cm5lZCBsaXN0IG9mIHJlc291cmNl IGxpc3RzLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICBUaGlzIHNlcnZpY2Ug aXMgbm90IHN1cHBvcnRlZC4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVT DQo+ICsoRUZJQVBJICpFRklfSVNBX0FDUElfR0VUX1BPU19SRVNPVVJDRSkoDQo+ICsgIElOIEVG SV9JU0FfQUNQSV9QUk9UT0NPTCAgICAgICAgKlRoaXMsDQo+ICsgIElOIEVGSV9JU0FfQUNQSV9E RVZJQ0VfSUQgICAgICAgKkRldmljZSwNCj4gKyAgT1VUIEVGSV9JU0FfQUNQSV9SRVNPVVJDRV9M SVNUICAqKlJlc291cmNlTGlzdA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgQXNzaWducyBy ZXNvdXJjZXMgdG8gYW4gSVNBIGNvbnRyb2xsZXIuDQo+ICsNCj4gKyAgQXNzaWducyB0aGUgSS9P LCBNTUlPLCBETUEsIGFuZCBpbnRlcnJ1cHQgcmVzb3VyY2VzIHNwZWNpZmllZCBieQ0KPiBSZXNv dXJjZUxpc3QNCj4gKyAgdG8gdGhlIElTQSBjb250cm9sbGVyIHNwZWNpZmllZCBieSBEZXZpY2Uu ICBSZXNvdXJjZUxpc3QgbXVzdCBtYXRjaCBhIHJlc291cmNlDQo+IGxpc3QgcmV0dXJuZWQgYnkg R2V0UG9zUmVzb3VyY2UoKSBmb3IgdGhlIHNhbWUgSVNBIGNvbnRyb2xsZXIuDQo+ICsNCj4gKyAg QHBhcmFtW2luXSBUaGlzICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9BQ1BJ X1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIERldmljZSAgICAgICAgIFRoZSBw b2ludGVyIHRvIGFuIElTQSBjb250cm9sbGVyIG5hbWVkIGJ5IEFDUEkNCj4gSElEL1VJRC4NCj4g KyAgQHBhcmFtW2luXSBSZXNvdXJjZUxpc3QgICBUaGUgcG9pbnRlciB0byBhIHJlc291cmNlcyBs aXN0IHRoYXQgbXVzdCBiZSBvbmUgb2YNCj4gdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzb3VyY2UgbGlzdHMgcmV0dXJuZWQgYnkgR2V0UG9zUmVzb3VyY2UoKSBmb3IgdGhl DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNBIGNvbnRyb2xsZXIgc3BlY2lmaWVk IGJ5IERldmljZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICBTdWNjZXNzZnVsbHkg c2V0IHJlc291cmNlcyBvbiB0aGUgSVNBIGNvbnRyb2xsZXIuDQo+ICsgIEByZXR2YWwgT3RoZXIg ICAgICAgIFRoZSByZXNvdXJjZXMgY291bGQgbm90IGJlIHNldCBmb3IgdGhlIElTQSBjb250cm9s bGVyLg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkg KkVGSV9JU0FfQUNQSV9TRVRfUkVTT1VSQ0UpKA0KPiArICBJTiBFRklfSVNBX0FDUElfUFJPVE9D T0wgICAgICAgKlRoaXMsDQo+ICsgIElOIEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQgICAgICAqRGV2 aWNlLA0KPiArICBJTiBFRklfSVNBX0FDUElfUkVTT1VSQ0VfTElTVCAgKlJlc291cmNlTGlzdA0K PiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgRW5hYmxlcyBvciBkaXNhYmxlcyBhbiBJU0EgY29u dHJvbGxlci4NCj4gKw0KPiArICBAcGFyYW1baW5dIFRoaXMgICAgIFRoZSBwb2ludGVyIHRvIHRo ZSBFRklfSVNBX0FDUElfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gRGV2aWNl ICAgVGhlIHBvaW50ZXIgdG8gdGhlIElTQSBjb250cm9sbGVyIHRvIGVuYWJsZS9kaXNhYmxlLg0K PiArICBAcGFyYW1baW5dIEVuYWJsZSAgIFRSVUUgdG8gZW5hYmxlIHRoZSBJU0EgY29udHJvbGxl ci4gIEZBTFNFIHRvIGRpc2FibGUgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgSVNBIGNv bnRyb2xsZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFN1Y2Nlc3NmdWxseSBl bmFibGVkL2Rpc2FibGVkIHRoZSBJU0EgY29udHJvbGxlci4NCj4gKyAgQHJldHZhbCBPdGhlciAg ICAgICAgIFRoZSBJU0EgY29udHJvbGxlciBjb3VsZCBub3QgYmUgcGxhY2VkIGluIHRoZSByZXF1 ZXN0ZWQNCj4gc3RhdGUuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0K PiArKEVGSUFQSSAqRUZJX0lTQV9BQ1BJX0VOQUJMRV9ERVZJQ0UpKA0KPiArICBJTiBFRklfSVNB X0FDUElfUFJPVE9DT0wgICAqVGhpcywNCj4gKyAgSU4gRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAg KkRldmljZSwNCj4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgRW5hYmxlDQo+ICsgICk7 DQo+ICsNCj4gKy8qKg0KPiArICBJbml0aWFsaXplcyBhbiBJU0EgY29udHJvbGxlciwgc28gdGhh dCBpdCBjYW4gYmUgdXNlZC4gIFRoaXMgc2VydmljZSBtdXN0IGJlIGNhbGxlZA0KPiArICBiZWZv cmUgU2V0UmVzb3VyY2UoKSwgRW5hYmxlRGV2aWNlKCksIG9yIFNldFBvd2VyKCkgd2lsbCBiZWhh dmUgYXMgZXhwZWN0ZWQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBUaGlzICAgICBUaGUgcG9pbnRl ciB0byB0aGUgRUZJX0lTQV9BQ1BJX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5d IERldmljZSAgIFRoZSBwb2ludGVyIHRvIGFuIElTQSBjb250cm9sbGVyIG5hbWVkIGJ5IEFDUEkg SElEL1VJRC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgU3VjY2Vzc2Z1bGx5IGlu aXRpYWxpemVkIGFuIElTQSBjb250cm9sbGVyLg0KPiArICBAcmV0dmFsIE90aGVyICAgICAgICAg VGhlIElTQSBjb250cm9sbGVyIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4NCj4gKw0KPiArKiov DQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfSVNBX0FDUElfSU5J VF9ERVZJQ0UpKA0KPiArICBJTiBFRklfSVNBX0FDUElfUFJPVE9DT0wgICAqVGhpcywNCj4gKyAg SU4gRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAgKkRldmljZQ0KPiArICApOw0KPiArDQo+ICsvKioN Cj4gKyAgSW5pdGlhbGl6ZXMgYWxsIHRoZSBIVyBzdGF0ZXMgcmVxdWlyZWQgZm9yIHRoZSBJU0Eg Y29udHJvbGxlcnMgb24gdGhlIElTQSBidXMNCj4gKyAgdG8gYmUgZW51bWVyYXRlZCBhbmQgbWFu YWdlZCBieSB0aGUgcmVzdCBvZiB0aGUgc2VydmljZXMgaW4gdGhpcyBwcm9yb3RvbC4NCj4gKyAg VGhpcyBzZXJ2aWNlIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb2YgdGhlIG90aGVyIHNlcnZp Y2VzIGluIHRoaXMNCj4gKyAgcHJvdG9jb2wgd2lsbCBmdW5jdGlvbiBhcyBleHBlY3RlZC4NCj4g Kw0KPiArICBAcGFyYW1baW5dIFRoaXMgIFRoZSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0FDUElf UFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFN1Y2Nl c3NmdWxseSBpbml0aWFsaXplZCBhbGwgcmVxdWlyZWQgaGFyZHdhcmUgc3RhdGVzLg0KPiArICBA cmV0dmFsIE90aGVyICAgICAgICAgVGhlIElTQSBpbnRlcmZhY2UgY291bGQgbm90IGJlIGluaXRp YWxpemVkLg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklB UEkgKkVGSV9JU0FfQUNQSV9JTlRFUkZBQ0VfSU5JVCkoDQo+ICsgIElOIEVGSV9JU0FfQUNQSV9Q Uk9UT0NPTCAgKlRoaXMNCj4gKyAgKTsNCj4gKw0KPiArLy8vDQo+ICsvLy8gVGhlIEVGSV9JU0Ff QUNQSV9QUk9UT0NPTCBwcm92aWRlcyB0aGUgc2VydmljZXMgdG8gZW51bWVyYXRlIGFuZA0KPiBt YW5hZ2UNCj4gKy8vLyBJU0EgY29udHJvbGxlcnMgb24gYW4gSVNBIGJ1cy4gIFRoZXNlIHNlcnZp Y2VzIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gaW5pdGlhbGl6ZSwNCj4gKy8vLyBlbmFibGUsIGRp c2FibGUsIGFuZCBtYW5hZ2UgdGhlIHBvd2VyIHN0YXRlIG9mIElTQSBjb250cm9sbGVycy4gIEl0 IGFsc28NCj4gKy8vLyBpbmNsdWRlcyBzZXJ2aWNlcyB0byBxdWVyeSBjdXJyZW50IHJlc291cmNl cywgcXVlcnkgcG9zc2libGUgcmVzb3VyY2VzLA0KPiArLy8vIGFuZCBhc3NpZ24gcmVzb3VyY2Vz IHRvIGFuIElTQSBjb250cm9sbGVyLg0KPiArLy8vDQo+ICtzdHJ1Y3QgX0VGSV9JU0FfQUNQSV9Q Uk9UT0NPTCB7DQo+ICsgIEVGSV9JU0FfQUNQSV9ERVZJQ0VfRU5VTUVSQVRFICBEZXZpY2VFbnVt ZXJhdGU7DQo+ICsgIEVGSV9JU0FfQUNQSV9TRVRfREVWSUNFX1BPV0VSICBTZXRQb3dlcjsNCj4g KyAgRUZJX0lTQV9BQ1BJX0dFVF9DVVJfUkVTT1VSQ0UgIEdldEN1clJlc291cmNlOw0KPiArICBF RklfSVNBX0FDUElfR0VUX1BPU19SRVNPVVJDRSAgR2V0UG9zUmVzb3VyY2U7DQo+ICsgIEVGSV9J U0FfQUNQSV9TRVRfUkVTT1VSQ0UgICAgICBTZXRSZXNvdXJjZTsNCj4gKyAgRUZJX0lTQV9BQ1BJ X0VOQUJMRV9ERVZJQ0UgICAgIEVuYWJsZURldmljZTsNCj4gKyAgRUZJX0lTQV9BQ1BJX0lOSVRf REVWSUNFICAgICAgIEluaXREZXZpY2U7DQo+ICsgIEVGSV9JU0FfQUNQSV9JTlRFUkZBQ0VfSU5J VCAgICBJbnRlcmZhY2VJbml0Ow0KPiArfTsNCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdFZmlJ c2FBY3BpUHJvdG9jb2xHdWlkOw0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUlvLmgNCj4g Yi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FJ by5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjMwMDAwMzA1 ZmINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FJby5oDQo+IEBAIC0wLDAgKzEsMzU2IEBADQo+ICsv KiogQGZpbGUNCj4gKyAgSVNBIEkvTyBQcm90b2NvbCBpcyB1c2VkIGJ5IElTQSBkZXZpY2UgZHJp dmVycyB0byBwZXJmb3JtIEkvTywgTU1JTyBhbmQgRE1BDQo+ICsgIG9wZXJhdGlvbnMgb24gdGhl IElTQSBjb250cm9sbGVycyB0aGV5IG1hbmFnZS4NCj4gKw0KPiArQ29weXJpZ2h0IChjKSAyMDA2 IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAr U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0KPiArKiov DQo+ICsNCj4gKyNpZm5kZWYgX0VGSV9JU0FfSU9fSF8NCj4gKyNkZWZpbmUgX0VGSV9JU0FfSU9f SF8NCj4gKw0KPiArI2luY2x1ZGUgPFByb3RvY29sL0lzYUFjcGkuaD4NCj4gKw0KPiArLy8vDQo+ ICsvLy8gR2xvYmFsIElEIGZvciB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTA0KPiArLy8vDQo+ICsj ZGVmaW5lIEVGSV9JU0FfSU9fUFJPVE9DT0xfR1VJRCBcDQo+ICsgIHsgXA0KPiArICAgIDB4N2Vl MmJkNDQsIDB4M2RhMCwgMHgxMWQ0LCB7IDB4OWEsIDB4MzgsIDB4MCwgMHg5MCwgMHgyNywgMHgz ZiwgMHhjMSwNCj4gMHg0ZCB9IFwNCj4gKyAgfQ0KPiArDQo+ICsvLy8NCj4gKy8vLyBGb3J3YXJk IGRlY2xhcmF0aW9uIGZvciB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTC4NCj4gKy8vLw0KPiArdHlw ZWRlZiBzdHJ1Y3QgX0VGSV9JU0FfSU9fUFJPVE9DT0wgRUZJX0lTQV9JT19QUk9UT0NPTDsNCj4g Kw0KPiArLy8vDQo+ICsvLy8gV2lkdGggb2YgRUZJX0lTQV9JT19QUk9UT0NPTCBJL08gUG9ydCBh bmQgTU1JTyBvcGVyYXRpb25zLg0KPiArLy8vDQo+ICt0eXBlZGVmIGVudW0gew0KPiArICBFZmlJ c2FJb1dpZHRoVWludDggPSAwLCAgICAgIC8vLzwgOC1iaXQgb3BlcmF0aW9uLg0KPiArICBFZmlJ c2FJb1dpZHRoVWludDE2LCAgICAgICAgIC8vLzwgMTYtYml0IG9wZXJhdGlvbi4NCj4gKyAgRWZp SXNhSW9XaWR0aFVpbnQzMiwgICAgICAgICAvLy88IDMyLWJpdCBvcGVyYXRpb24NCj4gKyAgRWZp SXNhSW9XaWR0aFJlc2VydmVkLA0KPiArICBFZmlJc2FJb1dpZHRoRmlmb1VpbnQ4LCAgICAgIC8v LzwgOC1iaXQgRklGTyBvcGVyYXRpb24uDQo+ICsgIEVmaUlzYUlvV2lkdGhGaWZvVWludDE2LCAg ICAgLy8vPCAxNi1iaXQgRklGTyBvcGVyYXRpb24uDQo+ICsgIEVmaUlzYUlvV2lkdGhGaWZvVWlu dDMyLCAgICAgLy8vPCAzMi1iaXQgRklGTyBvcGVyYXRpb24uDQo+ICsgIEVmaUlzYUlvV2lkdGhG aWZvUmVzZXJ2ZWQsDQo+ICsgIEVmaUlzYUlvV2lkdGhGaWxsVWludDgsICAgICAgLy8vPCA4LWJp dCBGaWxsIG9wZXJhdGlvbi4NCj4gKyAgRWZpSXNhSW9XaWR0aEZpbGxVaW50MTYsICAgICAvLy88 IDE2LWJpdCBGaWxsIG9wZXJhdGlvbi4NCj4gKyAgRWZpSXNhSW9XaWR0aEZpbGxVaW50MzIsICAg ICAvLy88IDMyLWJpdCBGaWxsIG9wZXJhdGlvbi4NCj4gKyAgRWZpSXNhSW9XaWR0aEZpbGxSZXNl cnZlZCwNCj4gKyAgRWZpSXNhSW9XaWR0aE1heGltdW0NCj4gK30gRUZJX0lTQV9JT19QUk9UT0NP TF9XSURUSDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gQXR0cmlidXRlcyBmb3IgdGhlIEVGSV9JU0Ff SU9fUFJPVE9DT0wgY29tbW9uIERNQSBidWZmZXIgYWxsb2NhdGlvbnMuDQo+ICsvLy8NCj4gKyNk ZWZpbmUgRUZJX0lTQV9JT19BVFRSSUJVVEVfTUVNT1JZX1dSSVRFX0NPTUJJTkUgIDB4MDgwICAg IC8vLzwNCj4gTWFwIGEgbWVtb3J5IHJhbmdlIHNvIHdyaXRlIGFyZSBjb21iaW5lZC4NCj4gKyNk ZWZpbmUgRUZJX0lTQV9JT19BVFRSSUJVVEVfTUVNT1JZX0NBQ0hFRCAgICAgICAgIDB4ODAwICAg IC8vLzwgTWFwIGENCj4gbWVtb3J5IHJhbmdlIHNvIGFsbCByZWFkIGFuZCB3cml0ZSBhY2Nlc3Nl cyBhcmUgY2FjaGVkLg0KPiArI2RlZmluZSBFRklfSVNBX0lPX0FUVFJJQlVURV9NRU1PUllfRElT QUJMRSAgICAgICAgMHgxMDAwICAgLy8vPCBEaXNhYmxlDQo+IGEgbWVtb3J5IHJhbmdlLg0KPiAr DQo+ICsvLy8NCj4gKy8vLyBDaGFubmVsIGF0dHJpYnV0ZSBmb3IgRUZJX0lTQV9JT19QUk9UT0NP TCBzbGF2ZSBETUEgcmVxdWVzdHMNCj4gKy8vLw0KPiArI2RlZmluZSBFRklfSVNBX0lPX1NMQVZF X0RNQV9BVFRSSUJVVEVfU1BFRURfQ09NUEFUSUJMRSAgMHgwMDENCj4gLy8vPCBTZXQgdGhlIHNw ZWVkIG9mIHRoZSBETUEgdHJhbnNmZXIgaW4gY29tcGF0aWJsZSBtb2RlLg0KPiArI2RlZmluZSBF RklfSVNBX0lPX1NMQVZFX0RNQV9BVFRSSUJVVEVfU1BFRURfQSAgICAgICAgICAgMHgwMDIgICAv Ly88IE5vdA0KPiBzdXBwb3J0ZWQuDQo+ICsjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FU VFJJQlVURV9TUEVFRF9CICAgICAgICAgICAweDAwNCAgIC8vLzwgTm90DQo+IHN1cHBvcnRlZC4N Cj4gKyNkZWZpbmUgRUZJX0lTQV9JT19TTEFWRV9ETUFfQVRUUklCVVRFX1NQRUVEX0MgICAgICAg ICAgIDB4MDA4ICAgLy8vPCBOb3QNCj4gc3VwcG9ydGVkLg0KPiArI2RlZmluZSBFRklfSVNBX0lP X1NMQVZFX0RNQV9BVFRSSUJVVEVfV0lEVEhfOCAgICAgICAgICAgMHgwMTAgICAvLy88DQo+IFJl cXVlc3QgOC1iaXQgRE1BIHRyYW5zZmVycy4gIE9ubHkgYXZhaWxhYmxlIG9uIGNoYW5uZWxzIDAu LjMuDQo+ICsjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9XSURUSF8xNiAg ICAgICAgICAweDAyMCAgIC8vLzwNCj4gUmVxdWVzdCAxNi1iaXQgRE1BIHRyYW5zZmVycy4gIE9u bHkgYXZhaWxhYmxlIG9uIGNoYW5uZWxzIDQuLjcuDQo+ICsjZGVmaW5lIEVGSV9JU0FfSU9fU0xB VkVfRE1BX0FUVFJJQlVURV9TSU5HTEVfTU9ERSAgICAgICAweDA0MCAgIC8vLzwNCj4gUmVxdWVz dCBhIHNpbmdsZSBETUEgdHJhbnNmZXIuDQo+ICsjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1B X0FUVFJJQlVURV9ERU1BTkRfTU9ERSAgICAgICAweDA4MA0KPiAvLy88IFJlcXVlc3QgbXVsdGlw bGUgRE1BIHRyYW5zZmVycyB1bnRpbCBUQyAoVGVybWluYWwgQ291bnQpIG9yIEVPUCAoRW5kIG9m DQo+IFByb2Nlc3MpLg0KPiArI2RlZmluZSBFRklfSVNBX0lPX1NMQVZFX0RNQV9BVFRSSUJVVEVf QVVUT19JTklUSUFMSVpFICAgMHgxMDAgICAvLy88DQo+IEF1dG9tYXRpY2FsbHkgcmVsb2FkIGJh c2UgYW5kIGNvdW50IGF0IHRoZSBlbmQgb2YgdGhlIERNQSB0cmFuc2Zlci4NCj4gKw0KPiArLy8v DQo+ICsvLy8gVGhlIERNQSBvcHJlcmF0aW9uIHR5cGUgZm9yIEVGSV9JU0FfSU9fUFJPVE9DT0wg RE1BIHJlcXVlc3RzLg0KPiArLy8vDQo+ICt0eXBlZGVmIGVudW0gew0KPiArICAvLy8NCj4gKyAg Ly8vIEEgcmVhZCBvcGVyYXRpb24gZnJvbSBzeXN0ZW0gbWVtb3J5IGJ5IGEgYnVzIG1hc3Rlci4N Cj4gKyAgLy8vDQo+ICsgIEVmaUlzYUlvT3BlcmF0aW9uQnVzTWFzdGVyUmVhZCwNCj4gKyAgLy8v DQo+ICsgIC8vLyBBIHdyaXRlIG9wZXJhdGlvbiB0byBzeXN0ZW0gbWVtb3J5IGJ5IGEgYnVzIG1h c3Rlci4NCj4gKyAgLy8vDQo+ICsgIEVmaUlzYUlvT3BlcmF0aW9uQnVzTWFzdGVyV3JpdGUsDQo+ ICsgIC8vLw0KPiArICAvLy8gUHJvdmlkZXMgYm90aCByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8g c3lzdGVtIG1lbW9yeSBieSBib3RoIHRoZQ0KPiBwcm9jZXNzb3INCj4gKyAgLy8vIGFuZCBhIGJ1 cyBtYXN0ZXIuIFRoZSBidWZmZXIgaXMgY29oZXJlbnQgZnJvbSBib3RoIHRoZSBwcm9jZXNzb3In cyBhbmQNCj4gdGhlDQo+ICsgIC8vLyBidXMgbWFzdGVyJ3MgcG9pbnQgb2Ygdmlldy4NCj4gKyAg Ly8vDQo+ICsgIEVmaUlzYUlvT3BlcmF0aW9uQnVzTWFzdGVyQ29tbW9uQnVmZmVyLA0KPiArICAv Ly8NCj4gKyAgLy8vIEEgcmVhZCBvcGVyYXRpb24gZnJvbSBzeXN0ZW0gbWVtb3J5IGJ5IGEgc2xh dmUgZGV2aWNlLg0KPiArICAvLy8NCj4gKyAgRWZpSXNhSW9PcGVyYXRpb25TbGF2ZVJlYWQsDQo+ ICsgIC8vLw0KPiArICAvLy8gQSB3cml0ZSBvcGVyYXRpb24gdG8gc3lzdGVtIG1lbW9yeSBieSBh IHNsYXZlIG1hc3Rlci4NCj4gKyAgLy8vDQo+ICsgIEVmaUlzYUlvT3BlcmF0aW9uU2xhdmVXcml0 ZSwNCj4gKyAgRWZpSXNhSW9PcGVyYXRpb25NYXhpbXVtDQo+ICt9IEVGSV9JU0FfSU9fUFJPVE9D T0xfT1BFUkFUSU9OOw0KPiArDQo+ICsvKioNCj4gKyAgUGVyZm9ybXMgSVNBIEkvTyBhbmQgTU1J TyBSZWFkL1dyaXRlIEN5Y2xlcw0KPiArDQo+ICsgIEBwYXJhbVtpbl0gICAgICBUaGlzICAgICBB IHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJh bVtpbl0gICAgICBXaWR0aCAgICBTcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBJL08gb3IgTU1J TyBvcGVyYXRpb24uDQo+ICsgIEBwYXJhbVtpbl0gICAgICBPZmZzZXQgICBUaGUgb2Zmc2V0IGlu dG8gdGhlIElTQSBJL08gb3IgTU1JTyBzcGFjZSB0byBzdGFydCB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9wZXJhdGlvbi4NCj4gKyAgQHBhcmFtW2luXSAgICAgIENvdW50ICAg IFRoZSBudW1iZXIgb2YgSS9PIG9yIE1NSU8gb3BlcmF0aW9ucyB0byBwZXJmb3JtLg0KPiArICBA cGFyYW1baW4sIG91dF0gQnVmZmVyICAgRm9yIHJlYWQgb3BlcmF0aW9ucywgdGhlIGRlc3RpbmF0 aW9uIGJ1ZmZlciB0byBzdG9yZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJl c3VsdHMuIEZvciB3cml0ZSBvcGVyYXRpb25zLCB0aGUgc291cmNlIGJ1ZmZlciB0bw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgZGF0YSBmcm9tLg0KPiArDQo+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSByZWFk IGZyb20gb3Igd3JpdHRlbiB0bw0KPiB0aGUgZGV2aWNlLg0KPiArICBAcmV0dmFsIEVGSV9VTlNV UFBPUlRFRCAgICAgICAgIFRoZSBPZmZzZXQgaXMgbm90IHZhbGlkIGZvciB0aGlzIGRldmljZS4N Cj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBXaWR0aCBvciBDb3VudCwgb3Ig Ym90aCwgd2VyZSBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAg IFRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgZHVlDQo+IHRvIGEgbGFjayBvZiBy ZXNvdXJjZXMuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVG SUFQSSAqRUZJX0lTQV9JT19QUk9UT0NPTF9JT19NRU0pKA0KPiArICBJTiAgICAgRUZJX0lTQV9J T19QUk9UT0NPTCAgICAgICAgKlRoaXMsDQo+ICsgIElOICAgICBFRklfSVNBX0lPX1BST1RPQ09M X1dJRFRIICBXaWR0aCwNCj4gKyAgSU4gICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgIE9m ZnNldCwNCj4gKyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgIENvdW50LA0KPiAr ICBJTiBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcg0KPiArICApOw0KPiAr DQo+ICsvLy8NCj4gKy8vLyBTdHJ1Y3R1cmUgb2YgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgSVNB IEkvTyBhbmQgTU1JTyBzcGFjZS4NCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICAv Ly8NCj4gKyAgLy8vIFJlYWQgZnJvbSBJU0EgSS9PIG9yIE1NSU8gc3BhY2UuDQo+ICsgIC8vLw0K PiArICBFRklfSVNBX0lPX1BST1RPQ09MX0lPX01FTSAgUmVhZDsNCj4gKyAgLy8vDQo+ICsgIC8v LyBXcml0ZSB0byBJU0EgSS9PIG9yIE1NSU8gc3BhY2UuDQo+ICsgIC8vLw0KPiArICBFRklfSVNB X0lPX1BST1RPQ09MX0lPX01FTSAgV3JpdGU7DQo+ICt9IEVGSV9JU0FfSU9fUFJPVE9DT0xfQUND RVNTOw0KPiArDQo+ICsvKioNCj4gKyAgQ29waWVzIGRhdGEgZnJvbSBvbmUgcmVnaW9uIG9mIElT QSBNTUlPIHNwYWNlIHRvIGFub3RoZXIgcmVnaW9uIG9mIElTQQ0KPiArICBNTUlPIHNwYWNlLg0K PiArDQo+ICsgIEBwYXJhbVtpbl0gVGhpcyAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lT QV9JT19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBXaWR0aCAgICAgICAgU3Bl Y2lmaWVzIHRoZSB3aWR0aCBvZiB0aGUgTU1JTyBjb3B5IG9wZXJhdGlvbi4NCj4gKyAgQHBhcmFt W2luXSBEZXN0T2Zmc2V0ICAgVGhlIG9mZnNldCBvZiB0aGUgZGVzdGluYXRpb24gaW4gSVNBIE1N SU8gc3BhY2UuDQo+ICsgIEBwYXJhbVtpbl0gU3JjT2Zmc2V0ICAgIFRoZSBvZmZzZXQgb2YgdGhl IHNvdXJjZSBpbiBJU0EgTU1JTyBzcGFjZS4NCj4gKyAgQHBhcmFtW2luXSBDb3VudCAgICAgICAg VGhlIG51bWJlciB0cmFuZmVycyB0byBwZXJmb3JtIGZvciB0aGlzIGNvcHkNCj4gb3BlcmF0aW9u Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIGRhdGEgd2Fz IGNvcGllZCBzdWNlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAg ICBUaGUgRGVzdE9mZnNldCBvciBTcmNPZmZzZXQgaXMgbm90IHZhbGlkIGZvcg0KPiB0aGlzIGRl dmljZS4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBXaWR0aCBvciBDb3Vu dCwgb3IgYm90aCwgd2VyZSBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTICAgIFRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgZHVlDQo+IHRvIGEgbGFj ayBvZiByZXNvdXJjZXMuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0K PiArKEVGSUFQSSAqRUZJX0lTQV9JT19QUk9UT0NPTF9DT1BZX01FTSkoDQo+ICsgIElOIEVGSV9J U0FfSU9fUFJPVE9DT0wgICAgICAgICAqVGhpcywNCj4gKyAgSU4gRUZJX0lTQV9JT19QUk9UT0NP TF9XSURUSCAgIFdpZHRoLA0KPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgRGVz dE9mZnNldCwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgIFNyY09mZnNldCwN Cj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgIENvdW50DQo+ICsgICk7DQo+ICsN Cj4gKy8qKg0KPiArICBNYXBzIGEgbWVtb3J5IHJlZ2lvbiBmb3IgRE1BLg0KPiArDQo+ICsgIFRo aXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgZGV2aWNlLXNwZWNpZmljIGFkZHJlc3NlcyByZXF1aXJl ZCB0byBhY2Nlc3Mgc3lzdGVtDQo+IG1lbW9yeS4NCj4gKyAgVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIG1hcCBzeXN0ZW0gbWVtb3J5IGZvciBJU0EgRE1BIG9wZXJhdGlvbnMuICBBbGwgSVNBDQo+ IERNQQ0KPiArICBvcGVyYXRpb25zIG11c3QgYmUgcGVyZm9ybWVkIHRocm91Z2ggdGhlaXIgbWFw cGVkIGFkZHJlc3NlcywgYW5kIHN1Y2gNCj4gbWFwcGluZ3MgbXVzdA0KPiArICBiZSBmcmVlZCB3 aXRoIEVGSV9JU0FfSU9fUFJPVE9DT0wuVW5tYXAoKSBhZnRlciB0aGUgRE1BIG9wZXJhdGlvbiBp cw0KPiBjb21wbGV0ZWQuDQo+ICsNCj4gKyAgSWYgdGhlIERNQSBvcGVyYXRpb24gaXMgYSBzaW5n bGUgcmVhZCBvciB3cml0ZSBkYXRhIHRyYW5zZmVyIHRocm91Z2ggYW4gSVNBIGJ1cw0KPiArICBt YXN0ZXIsIHRoZW4gRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJSZWFkIG9yDQo+IEVmaUlzYUlv T3BlcmF0aW9uQnVzTWFzdGVyV3JpdGUNCj4gKyAgaXMgdXNlZCBhbmQgdGhlIHJhbmdlIGlzIHVu bWFwcGVkIHRvIGNvbXBsZXRlIHRoZSBvcGVyYXRpb24uIElmIHRoZSBETUENCj4gb3BlcmF0aW9u DQo+ICsgIGlzIGEgc2luZ2xlIHJlYWQgb3Igd3JpdGUgZGF0YSB0cmFuc2ZlciB0aHJvdWdoIGFu IElTQSBzbGF2ZSBjb250cm9sbGVyLCB0aGVuDQo+ICsgIEVmaUlzYUlvT3BlcmF0aW9uU2xhdmVS ZWFkIG9yIEVmaUlzYUlvT3BlcmF0aW9uU2xhdmVXcml0ZSBpcyB1c2VkIGFuZCB0aGUNCj4gcmFu Z2UNCj4gKyAgaXMgdW5tYXBwZWQgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlvbi4NCj4gKw0KPiAr ICBJZiBwZXJmb3JtaW5nIGEgRE1BIHJlYWQgb3BlcmF0aW9uLCBhbGwgdGhlIGRhdGEgbXVzdCBi ZSBwcmVzZW50IGluIHN5c3RlbQ0KPiBtZW1vcnkgYmVmb3JlIHRoZSBNYXAoKSBpcyBwZXJmb3Jt ZWQuICBTaW1pbGFybHksDQo+ICsgIGlmIHBlcmZvcm1pbmcgYSBETUEgd3JpdGUgb3BlcmF0aW9u LCB0aGUgZGF0YSBtdXN0IG5vdCBiZSBhY2Nlc3NlZCBpbiBzeXN0ZW0NCj4gKyAgbWVtb3J5IHVu dGlsIEVGSV9JU0FfSU9fUFJPVE9DT0wuVW5tYXAoKSBpcyBwZXJmb3JtZWQuICBCdXMgbWFzdGVy DQo+IG9wZXJhdGlvbnMgdGhhdA0KPiArICByZXF1aXJlIGJvdGggcmVhZCBhbmQgd3JpdGUgYWNj ZXNzIG9yIHJlcXVpcmUgbXVsdGlwbGUgaG9zdCBkZXZpY2UNCj4gaW50ZXJhY3Rpb25zDQo+ICsg IHdpdGhpbiB0aGUgc2FtZSBtYXBwZWQgcmVnaW9uIG11c3QgdXNlDQo+IEVmaUlzYUlvT3BlcmF0 aW9uQnVzTWFzdGVyQ29tbW9uQnVmZmVyLg0KPiArICBIb3dldmVyLCBvbmx5IG1lbW9yeSBhbGxv Y2F0ZWQgdmlhIHRoZQ0KPiBFRklfSVNBX0lPX1BST1RPQ09MLkFsbG9jYXRlQnVmZmVyKCkgaW50 ZXJmYWNlDQo+ICsgIGlzIGd1YXJhbnRlZWQgdG8gYmUgYWJsZSB0byBiZSBtYXBwZWQgZm9yIHRo aXMgb3BlcmF0aW9uIHR5cGUuICBJbiBhbGwgbWFwcGluZw0KPiArICByZXF1ZXN0cyB0aGUgTnVt YmVyT2ZCeXRlcyByZXR1cm5lZCBtYXkgYmUgbGVzcyB0aGFuIG9yaWdpbmFsbHkgcmVxdWVzdGVk Lg0KPiBJdCBpcw0KPiArICB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gbWFrZSBhZGRp dGlvbmFsIHJlcXVlc3RzIHRvIGNvbXBsZXRlIHRoZSBlbnRpcmUNCj4gKyAgdHJhbnNmZXIuDQo+ ICsNCj4gKyAgQHBhcmFtW2luXSAgICAgIFRoaXMgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRv IHRoZSBFRklfSVNBX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dICAgICAg T3BlcmF0aW9uICAgICAgICAgICBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgRE1BIChzbGF2ZSBvciBi dXMNCj4gbWFzdGVyKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YW5kIGlmIHRoZSBETUEgb3BlcmF0aW9uIGlzIGdvaW5nIHRvIHJlYWQgb3INCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgdG8gc3lzdGVtIG1lbW9yeS4NCj4g KyAgQHBhcmFtW2luXSAgICAgIENoYW5uZWxOdW1iZXIgICAgICAgVGhlIHNsYXZlIGNoYW5uZWwg bnVtYmVyIHRvIHVzZSBmb3IgdGhpcw0KPiBETUENCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb3BlcmF0aW9uLiAgSWYgT3BlcmF0aW9uIGFuZCBDaGFubmVsQXR0cmli dXRlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93cyB0aGF0 IHRoaXMgZGV2aWNlIHBlcmZvcm1zIGJ1cyBtYXN0ZXJpbmcNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRE1BLCB0aGVuIHRoaXMgZmllbGQgaXMgaWdub3JlZC4gIFRo ZSBsZWdhbA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSBm b3IgdGhpcyBmaWVsZCBpcyAwLi43Lg0KPiArICBAcGFyYW1baW5dICAgICAgQ2hhbm5lbEF0dHJp YnV0ZXMgICBBIGJpdG1hc2sgb2YgdGhlIGF0dHJpYnV0ZXMgdXNlZCB0bw0KPiBjb25maWd1cmUN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNsYXZlIERNQSBj aGFubmVsIGZvciB0aGlzIERNQSBvcGVyYXRpb24uDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNlZSBFRklfSVNBX0lPX1NMQVZFX0RNQV9BVFRSSUJVVEVfKiBmb3Ig dGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FsIGJpdCBj b21iaW5hdGlvbnMuDQo+ICsgIEBwYXJhbVtpbl0gICAgICBIb3N0QWRkcmVzcyAgICAgICAgIFRo ZSBzeXN0ZW0gbWVtb3J5IGFkZHJlc3MgdG8gbWFwIHRvIHRoZQ0KPiBkZXZpY2UuDQo+ICsgIEBw YXJhbVtpbiwgb3V0XSBOdW1iZXJPZkJ5dGVzICAgICAgIE9uIGlucHV0IHRoZSBudW1iZXIgb2Yg Ynl0ZXMgdG8gbWFwLg0KPiBPbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvdXRwdXQgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUgbWFwcGVkLg0KPiArICBA cGFyYW1bb3V0XSAgICAgRGV2aWNlQWRkcmVzcyAgICAgICBUaGUgcmVzdWx0aW5nIG1hcCBhZGRy ZXNzIGZvciB0aGUgYnVzDQo+IG1hc3Rlcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXZpY2UgdG8gdXNlIHRvIGFjY2VzcyB0aGUgaG9zdHMgSG9zdEFkZHJlc3Mu DQo+ICsgIEBwYXJhbVtvdXRdICAgICBNYXBwaW5nICAgICAgICAgICAgIEEgcmV0dXJuZWQgdmFs dWUgdGhhdCBtdXN0IGJlIHBhc3NlZCB0byBpbnRvDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVGSV9JU0FfSU9fUFJPVE9DT0wuVW5tYXAoKSB0byBmcmVlIGFsbCB0 aGUgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNl cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtYXAgcmVxdWVzdC4NCj4gKw0KPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICAgIFRoZSByYW5nZSB3YXMgbWFwcGVkIGZvciB0aGUgcmV0dXJu ZWQNCj4gTnVtYmVyT2ZCeXRlcy4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg ICBUaGUgT3BlcmF0aW9uIGlzIHVuZGVmaW5lZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgICBUaGUgSG9zdEFkZHJlc3MgaXMgdW5kZWZpbmVkLg0KPiArICBAcmV0dmFsIEVG SV9VTlNVUFBPUlRFRCAgICAgICAgIFRoZSBIb3N0QWRkcmVzcyBjYW4gbm90IGJlIG1hcHBlZCBh cyBhDQo+IGNvbW1vbiBidWZmZXIuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAg ICAgVGhlIHN5c3RlbSBoYXJkd2FyZSBjb3VsZCBub3QgbWFwIHRoZQ0KPiByZXF1ZXN0ZWQgYWRk cmVzcy4NCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgICBUaGUgbWVtb3J5IHBh Z2VzIGNvdWxkIG5vdCBiZQ0KPiBhbGxvY2F0ZWQuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0K PiArRUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0lTQV9JT19QUk9UT0NPTF9NQVApKA0KPiAr ICBJTiAgICAgRUZJX0lTQV9JT19QUk9UT0NPTCAgICAgICAgICAgICpUaGlzLA0KPiArICBJTiAg ICAgRUZJX0lTQV9JT19QUk9UT0NPTF9PUEVSQVRJT04gIE9wZXJhdGlvbiwNCj4gKyAgSU4gICAg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFubmVsTnVtYmVyICAgICAgT1BUSU9O QUwsDQo+ICsgIElOICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbm5lbEF0 dHJpYnV0ZXMsDQo+ICsgIElOICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgKkhv c3RBZGRyZXNzLA0KPiArICBJTiBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICpO dW1iZXJPZkJ5dGVzLA0KPiArICBPVVQgICAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICAg ICpEZXZpY2VBZGRyZXNzLA0KPiArICBPVVQgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAg ICAgICoqTWFwcGluZw0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgVW5tYXBzIGEgbWVtb3J5 IHJlZ2lvbiB0aGF0IHdhcyBwcmV2aW91c2x5IG1hcHBlZCB3aXRoDQo+IEVGSV9JU0FfSU9fUFJP VE9DT0wuTWFwKCkuDQo+ICsNCj4gKyAgVGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wuTWFwKCkgb3Bl cmF0aW9uIGlzIGNvbXBsZXRlZCBhbmQgYW55DQo+IGNvcnJlc3BvbmRpbmcNCj4gKyAgcmVzb3Vy Y2VzIGFyZSByZWxlYXNlZC4gIElmIHRoZSBvcGVyYXRpb24gd2FzIEVmaUlzYUlvT3BlcmF0aW9u U2xhdmVXcml0ZQ0KPiArICBvciBFZmlJc2FJb09wZXJhdGlvbkJ1c01hc3RlcldyaXRlLCB0aGUg ZGF0YSBpcyBjb21taXR0ZWQgdG8gc3lzdGVtDQo+IG1lbW9yeS4NCj4gKyAgQW55IHJlc291cmNl cyB1c2VkIGZvciB0aGUgbWFwcGluZyBhcmUgZnJlZWQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBU aGlzICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5zdGFu Y2UuDQo+ICsgIEBwYXJhbVtpbl0gTWFwcGluZyAgICAgICAgVGhlIG1hcHBpbmcgdmFsdWUgcmV0 dXJuZWQgZnJvbQ0KPiBFRklfSVNBX0lPX1BST1RPQ09MLk1hcCgpLg0KPiArDQo+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG1lbW9yeSByZWdpb24gd2FzIHVubWFwcGVkLg0KPiAr ICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgIFRoZSBkYXRhIHdhcyBub3QgY29tbWl0dGVkIHRv IHRoZSB0YXJnZXQNCj4gc3lzdGVtIG1lbW9yeS4NCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJ X1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0lTQV9JT19QUk9UT0NPTF9VTk1BUCkoDQo+ICsgIElO ICBFRklfSVNBX0lPX1BST1RPQ09MICAqVGhpcywNCj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAg ICAgICpNYXBwaW5nDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBBbGxvY2F0ZXMgcGFnZXMg dGhhdCBhcmUgc3VpdGFibGUgZm9yIGFuDQo+IEVmaUlzYUlvT3BlcmF0aW9uQnVzTWFzdGVyQ29t bW9uQnVmZmVyDQo+ICsgIG1hcHBpbmcuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAg ICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsg IEBwYXJhbVtpbl0gIFR5cGUgICAgICAgICAgVGhlIHR5cGUgYWxsb2NhdGlvbiB0byBwZXJmb3Jt Lg0KPiArICBAcGFyYW1baW5dICBNZW1vcnlUeXBlICAgIFRoZSB0eXBlIG9mIG1lbW9yeSB0byBh bGxvY2F0ZS4NCj4gKyAgQHBhcmFtW2luXSAgUGFnZXMgICAgICAgICBUaGUgbnVtYmVyIG9mIHBh Z2VzIHRvIGFsbG9jYXRlLg0KPiArICBAcGFyYW1bb3V0XSBIb3N0QWRkcmVzcyAgIEEgcG9pbnRl ciB0byBzdG9yZSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQ0KPiBhbGxvY2F0ZWQgcmFuZ2UuDQo+ ICsgIEBwYXJhbVtpbl0gIEF0dHJpYnV0ZXMgICAgVGhlIHJlcXVlc3RlZCBiaXQgbWFzayBvZiBh dHRyaWJ1dGVzIGZvciB0aGUNCj4gYWxsb2NhdGVkIHJhbmdlLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIHJlcXVlc3RlZCBtZW1vcnkgcGFnZXMgd2VyZSBh bGxvY2F0ZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgVHlwZSBpcyBp bnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIE1lbW9yeVR5cGUg aXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBIb3N0QWRk cmVzcyBpcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgIEF0dHJp YnV0ZXMgaXMgdW5zdXBwb3J0ZWQuDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAg ICAgVGhlIG1lbW9yeSByYW5nZSBzcGVjaWZpZWQgYnkNCj4gSG9zdEFkZHJlc3MsIFBhZ2VzLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBUeXBlIGlzIG5vdCBhdmFp bGFibGUgZm9yIGNvbW1vbiBidWZmZXIgdXNlLg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICAgIFRoZSBtZW1vcnkgcGFnZXMgY291bGQgbm90IGJlDQo+IGFsbG9jYXRlZC4NCj4g Kw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfSVNB X0lPX1BST1RPQ09MX0FMTE9DQVRFX0JVRkZFUikoDQo+ICsgIElOICBFRklfSVNBX0lPX1BST1RP Q09MICAqVGhpcywNCj4gKyAgSU4gIEVGSV9BTExPQ0FURV9UWVBFICAgIFR5cGUsDQo+ICsgIElO ICBFRklfTUVNT1JZX1RZUEUgICAgICBNZW1vcnlUeXBlLA0KPiArICBJTiAgVUlOVE4gICAgICAg ICAgICAgICAgUGFnZXMsDQo+ICsgIE9VVCBWT0lEICAgICAgICAgICAgICAgICAqKkhvc3RBZGRy ZXNzLA0KPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgQXR0cmlidXRlcw0KPiArICApOw0K PiArDQo+ICsvKioNCj4gKyAgRnJlZXMgYSBjb21tb24gYnVmZmVyIHRoYXQgd2FzIGFsbG9jYXRl ZCB3aXRoDQo+IEVGSV9JU0FfSU9fUFJPVE9DT0wuQWxsb2NhdGVCdWZmZXIoKS4NCj4gKw0KPiAr ICBAcGFyYW1baW5dIFRoaXMgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0lPX1BS T1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFBhZ2VzICAgICAgICAgVGhlIG51bWJl ciBvZiBwYWdlcyB0byBmcmVlIGZyb20gdGhlIHByZXZpb3VzbHkNCj4gYWxsb2NhdGVkIGNvbW1v biBidWZmZXIuDQo+ICsgIEBwYXJhbVtpbl0gSG9zdEFkZHJlc3MgICBUaGUgYmFzZSBhZGRyZXNz IG9mIHRoZSBwcmV2aW91c2x5IGFsbG9jYXRlZA0KPiBjb21tb24gYnVmZmVyLg0KPiArDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgcmVxdWVzdGVkIG1lbW9y eSBwYWdlcyB3ZXJlIGZyZWVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAg IFRoZSBtZW1vcnkgd2FzIG5vdCBhbGxvY2F0ZWQgd2l0aA0KPiBFRklfSVNBX0lPLkFsbG9jYXRl QnVmZXIoKS4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJ QVBJICpFRklfSVNBX0lPX1BST1RPQ09MX0ZSRUVfQlVGRkVSKSgNCj4gKyAgSU4gIEVGSV9JU0Ff SU9fUFJPVE9DT0wgICpUaGlzLA0KPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgUGFnZXMs DQo+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAqSG9zdEFkZHJlc3MNCj4gKyAgKTsNCj4g Kw0KPiArLyoqDQo+ICsgIEZsdXNoZXMgYSBETUEgYnVmZmVyLCB3aGljaCBmb3JjZXMgYWxsIERN QSBwb3N0ZWQgd3JpdGUgdHJhbnNhY3Rpb25zIHRvDQo+IGNvbXBsZXRlLg0KPiArDQo+ICsgIEBw YXJhbVtpbl0gVGhpcyAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTCBpbnN0 YW5jZS4NCj4gKw0KPiArICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgICAgICAgVGhlIERNQSBidWZm ZXJzIHdlcmUgZmx1c2hlZC4NCj4gKyAgQHJldHZhbCAgRUZJX0RFVklDRV9FUlJPUiAgIFRoZSBi dWZmZXJzIHdlcmUgbm90IGZsdXNoZWQgZHVlIHRvIGENCj4gaGFyZHdhcmUgZXJyb3IuDQo+ICsN Cj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0lTQV9J T19QUk9UT0NPTF9GTFVTSCkoDQo+ICsgIElOIEVGSV9JU0FfSU9fUFJPVE9DT0wgICpUaGlzDQo+ ICsgICk7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFRoZSBFRklfSVNBX0lPX1BST1RPQ09MIHByb3Zp ZGVzIHRoZSBiYXNpYyBNZW1vcnksIEkvTywgYW5kIERNQQ0KPiBpbnRlcmZhY2VzDQo+ICsvLy8g dXNlZCB0byBhYnN0cmFjdCBhY2Nlc3NlcyB0byBJU0EgY29udHJvbGxlcnMuICBUaGVyZSBpcyBv bmUNCj4gRUZJX0lTQV9JT19QUk9UT0NPTA0KPiArLy8vIGluc3RhbmNlIGZvciBlYWNoIElTQSBj b250cm9sbGVyIG9uIGEgSVNBIGJ1cy4gQSBkZXZpY2UgZHJpdmVyIHRoYXQgd2lzaGVzDQo+ICsv Ly8gdG8gbWFuYWdlIGFuIElTQSBjb250cm9sbGVyIGluIGEgc3lzdGVtIHdpbGwgaGF2ZSB0byBy ZXRyaWV2ZSB0aGUNCj4gKy8vLyBJU0FfUENJX0lPX1BST1RPQ09MIGluc3RhbmNlIGFzc29jaWF0 ZWQgd2l0aCB0aGUgSVNBIGNvbnRyb2xsZXIuDQo+ICsvLy8NCj4gK3N0cnVjdCBfRUZJX0lTQV9J T19QUk9UT0NPTCB7DQo+ICsgIEVGSV9JU0FfSU9fUFJPVE9DT0xfQUNDRVNTICAgICAgICAgICBN ZW07DQo+ICsgIEVGSV9JU0FfSU9fUFJPVE9DT0xfQUNDRVNTICAgICAgICAgICBJbzsNCj4gKyAg RUZJX0lTQV9JT19QUk9UT0NPTF9DT1BZX01FTSAgICAgICAgIENvcHlNZW07DQo+ICsgIEVGSV9J U0FfSU9fUFJPVE9DT0xfTUFQICAgICAgICAgICAgICBNYXA7DQo+ICsgIEVGSV9JU0FfSU9fUFJP VE9DT0xfVU5NQVAgICAgICAgICAgICBVbm1hcDsNCj4gKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9B TExPQ0FURV9CVUZGRVIgIEFsbG9jYXRlQnVmZmVyOw0KPiArICBFRklfSVNBX0lPX1BST1RPQ09M X0ZSRUVfQlVGRkVSICAgICAgRnJlZUJ1ZmZlcjsNCj4gKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9G TFVTSCAgICAgICAgICAgIEZsdXNoOw0KPiArICAvLy8NCj4gKyAgLy8vIFRoZSBsaXN0IG9mIEkv TyAsIE1NSU8sIERNQSwgYW5kIEludGVycnVwdCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRo ZQ0KPiArICAvLy8gSVNBIGNvbnRyb2xsZXIgYWJzdHJhY3RlZCBieSB0aGlzIGluc3RhbmNlIG9m IHRoZSBFRklfSVNBX0lPX1BST1RPQ09MLg0KPiArICAvLy8NCj4gKyAgRUZJX0lTQV9BQ1BJX1JF U09VUkNFX0xJU1QgICAgICAgICAgICpSZXNvdXJjZUxpc3Q7DQo+ICsgIC8vLw0KPiArICAvLy8g VGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgUk9NIGltYWdlLg0KPiArICAvLy8NCj4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbVNpemU7DQo+ICsgIC8vLw0KPiAr ICAvLy8gQSBwb2ludGVyIHRvIHRoZSBpbiBtZW1vcnkgY29weSBvZiB0aGUgUk9NIGltYWdlLiBU aGUgSVNBIEJ1cyBEcml2ZXIgaXMNCj4gcmVzcG9uc2libGUNCj4gKyAgLy8vIGZvciBhbGxvY2F0 aW5nIG1lbW9yeSBmb3IgdGhlIFJPTSBpbWFnZSwgYW5kIGNvcHlpbmcgdGhlIGNvbnRlbnRzIG9m IHRoZQ0KPiBST00gdG8gbWVtb3J5DQo+ICsgIC8vLyBkdXJpbmcgSVNBIEJ1cyBpbml0aWFsaXph dGlvbi4NCj4gKyAgLy8vDQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqUm9tSW1hZ2U7DQo+ICt9Ow0KPiArDQo+ICtleHRlcm4gRUZJX0dVSUQgZ0VmaUlzYUlvUHJv dG9jb2xHdWlkOw0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0xlZ2FjeTgyNTkuaA0KPiBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0xlZ2FjeTgy NTkuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5jMzhmMmZl YmE3DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvTGVnYWN5ODI1OS5oDQo+IEBAIC0wLDAgKzEsMjkxIEBA DQo+ICsvKiogQGZpbGUNCj4gKyAgVGhpcyBwcm90b2NvbCBhYnN0cmFjdHMgdGhlIDgyNTkgaW50 ZXJydXB0IGNvbnRyb2xsZXIuIFRoaXMgaW5jbHVkZXMNCj4gKyAgUENJIElSUSByb3V0aW5nIG5l ZWRlZCB0byBwcm9ncmFtIHRoZSBQQ0kgSW50ZXJydXB0IExpbmUgcmVnaXN0ZXIuDQo+ICsNCj4g KyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiArDQo+ICsgIEBwYXIgUmV2aXNpb24gUmVmZXJlbmNlOg0KPiArICBUaGlz IHByb3RvY29sIGlzIGRlZmluZWQgaW4gRnJhbWV3b3JrIGZvciBFRkkgQ29tcGF0aWJpbGl0eSBT dXBwb3J0IE1vZHVsZQ0KPiBzcGVjDQo+ICsgIFZlcnNpb24gMC45Ny4NCj4gKw0KPiArKiovDQo+ ICsNCj4gKyNpZm5kZWYgX0VGSV9MRUdBQ1lfODI1OV9IXw0KPiArI2RlZmluZSBfRUZJX0xFR0FD WV84MjU5X0hfDQo+ICsNCj4gKw0KPiArI2RlZmluZSBFRklfTEVHQUNZXzgyNTlfUFJPVE9DT0xf R1VJRCBcDQo+ICsgIHsgXA0KPiArICAgIDB4MzgzMjFkYmEsIDB4NGZlMCwgMHg0ZTE3LCB7MHg4 YSwgMHhlYywgMHg0MSwgMHgzMCwgMHg1NSwgMHhlYSwgMHhlZCwNCj4gMHhjMSB9IFwNCj4gKyAg fQ0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBfRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MDQo+IEVG SV9MRUdBQ1lfODI1OV9QUk9UT0NPTDsNCj4gKw0KPiArdHlwZWRlZiBlbnVtIHsNCj4gKyAgRWZp ODI1OUlycTAsDQo+ICsgIEVmaTgyNTlJcnExLA0KPiArICBFZmk4MjU5SXJxMiwNCj4gKyAgRWZp ODI1OUlycTMsDQo+ICsgIEVmaTgyNTlJcnE0LA0KPiArICBFZmk4MjU5SXJxNSwNCj4gKyAgRWZp ODI1OUlycTYsDQo+ICsgIEVmaTgyNTlJcnE3LA0KPiArICBFZmk4MjU5SXJxOCwNCj4gKyAgRWZp ODI1OUlycTksDQo+ICsgIEVmaTgyNTlJcnExMCwNCj4gKyAgRWZpODI1OUlycTExLA0KPiArICBF Zmk4MjU5SXJxMTIsDQo+ICsgIEVmaTgyNTlJcnExMywNCj4gKyAgRWZpODI1OUlycTE0LA0KPiAr ICBFZmk4MjU5SXJxMTUsDQo+ICsgIEVmaTgyNTlJcnFNYXgNCj4gK30gRUZJXzgyNTlfSVJROw0K PiArDQo+ICt0eXBlZGVmIGVudW0gew0KPiArICBFZmk4MjU5TGVnYWN5TW9kZSwNCj4gKyAgRWZp ODI1OVByb3RlY3RlZE1vZGUsDQo+ICsgIEVmaTgyNTlNYXhNb2RlDQo+ICt9IEVGSV84MjU5X01P REU7DQo+ICsNCj4gKy8qKg0KPiArICBHZXQgdGhlIDgyNTkgaW50ZXJydXB0IG1hc2tzIGZvciBJ cnEwIC0gSXJxMTUuIEEgZGlmZmVyZW50IG1hc2sgZXhpc3RzIGZvcg0KPiArICB0aGUgbGVnYWN5 IG1vZGUgbWFzayBhbmQgdGhlIHByb3RlY3RlZCBtb2RlIG1hc2suIFRoZSBiYXNlIGFkZHJlc3Mg Zm9yDQo+IHRoZSA4MjU5DQo+ICsgIGlzIGRpZmZlcmVudCBmb3IgbGVnYWN5IGFuZCBwcm90ZWN0 ZWQgbW9kZSwgc28gdHdvIG1hc2tzIGFyZSByZXF1aXJlZC4NCj4gKw0KPiArICBAcGFyYW0gIFRo aXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCj4gKyAg QHBhcmFtICBNYXN0ZXJCYXNlICAgICAgICAgICAgVGhlIGJhc2UgdmVjdG9yIGZvciB0aGUgTWFz dGVyIFBJQyBpbiB0aGUgODI1OQ0KPiBjb250cm9sbGVyLg0KPiArICBAcGFyYW0gIFNsYXZlQmFz ZSAgICAgICAgICAgICBUaGUgYmFzZSB2ZWN0b3IgZm9yIHRoZSBTbGF2ZSBQSUMgaW4gdGhlIDgy NTkNCj4gY29udHJvbGxlci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgbmV3IGJhc2VzIHdlcmUgcHJvZ3JhbW1lZC4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNF X0VSUk9SICAgICAgQSBkZXZpY2UgZXJyb3Igb2NjdXJlZCBwcm9ncmFtbWluZyB0aGUNCj4gdmVj dG9yIGJhc2VzLg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhF RklBUEkgKkVGSV9MRUdBQ1lfODI1OV9TRVRfVkVDVE9SX0JBU0UpKA0KPiArICBJTiBFRklfTEVH QUNZXzgyNTlfUFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KPiArICBJTiAgVUlOVDggICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1hc3RlckJhc2UsDQo+ICsgIElOICBVSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU2xhdmVCYXNlDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiAr ICBHZXQgdGhlIDgyNTkgaW50ZXJydXB0IG1hc2tzIGZvciBJcnEwIC0gSXJxMTUuIEEgZGlmZmVy ZW50IG1hc2sgZXhpc3RzIGZvcg0KPiArICB0aGUgbGVnYWN5IG1vZGUgbWFzayBhbmQgdGhlIHBy b3RlY3RlZCBtb2RlIG1hc2suIFRoZSBiYXNlIGFkZHJlc3MgZm9yDQo+IHRoZSA4MjU5DQo+ICsg IGlzIGRpZmZlcmVudCBmb3IgbGVnYWN5IGFuZCBwcm90ZWN0ZWQgbW9kZSwgc28gdHdvIG1hc2tz IGFyZSByZXF1aXJlZC4NCj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBU aGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCj4gKyAgQHBhcmFtICBMZWdhY3lNYXNrICAg ICAgICAgICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBpcyBJcnExNS4NCj4gKyAgQHBhcmFtICBM ZWdhY3lFZGdlTGV2ZWwgICAgICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBpcyBJcnExNS4NCj4g KyAgQHBhcmFtICBQcm90ZWN0ZWRNYXNrICAgICAgICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBp cyBJcnExNS4NCj4gKyAgQHBhcmFtICBQcm90ZWN0ZWRFZGdlTGV2ZWwgICAgQml0IDAgaXMgSXJx MCAtIEJpdCAxNSBpcyBJcnExNS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICA4MjU5IHN0YXR1cyByZXR1cm5lZC4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9S ICAgICAgRXJyb3IgcmVhZGluZyA4MjU5Lg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VG SV9TVEFUVVMNCj4gKyhFRklBUEkgKkVGSV9MRUdBQ1lfODI1OV9HRVRfTUFTSykoDQo+ICsgIElO IEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQo+ICsgIE9VVCBVSU5U MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxlZ2FjeU1hc2ssIE9QVElPTkFMDQo+ICsg IE9VVCBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxlZ2FjeUVkZ2VMZXZlbCwg T1BUSU9OQUwNCj4gKyAgT1VUIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUHJv dGVjdGVkTWFzaywgT1BUSU9OQUwNCj4gKyAgT1VUIFVJTlQxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqUHJvdGVjdGVkRWRnZUxldmVsIE9QVElPTkFMDQo+ICsgICk7DQo+ICsNCj4gKy8q Kg0KPiArICBTZXQgdGhlIDgyNTkgaW50ZXJydXB0IG1hc2tzIGZvciBJcnEwIC0gSXJxMTUuIEEg ZGlmZmVyZW50IG1hc2sgZXhpc3RzIGZvcg0KPiArICB0aGUgbGVnYWN5IG1vZGUgbWFzayBhbmQg dGhlIHByb3RlY3RlZCBtb2RlIG1hc2suIFRoZSBiYXNlIGFkZHJlc3MgZm9yDQo+IHRoZSA4MjU5 DQo+ICsgIGlzIGRpZmZlcmVudCBmb3IgbGVnYWN5IGFuZCBwcm90ZWN0ZWQgbW9kZSwgc28gdHdv IG1hc2tzIGFyZSByZXF1aXJlZC4NCj4gKyAgQWxzbyBzZXQgdGhlIGVkZ2UvbGV2ZWwgbWFza3Mu DQo+ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgVGhlIHByb3RvY29sIGlu c3RhbmNlIHBvaW50ZXIuDQo+ICsgIEBwYXJhbSAgTGVnYWN5TWFzayAgICAgICAgICAgIEJpdCAw IGlzIElycTAgLSBCaXQgMTUgaXMgSXJxMTUuDQo+ICsgIEBwYXJhbSAgTGVnYWN5RWRnZUxldmVs ICAgICAgIEJpdCAwIGlzIElycTAgLSBCaXQgMTUgaXMgSXJxMTUuDQo+ICsgIEBwYXJhbSAgUHJv dGVjdGVkTWFzayAgICAgICAgIEJpdCAwIGlzIElycTAgLSBCaXQgMTUgaXMgSXJxMTUuDQo+ICsg IEBwYXJhbSAgUHJvdGVjdGVkRWRnZUxldmVsICAgIEJpdCAwIGlzIElycTAgLSBCaXQgMTUgaXMg SXJxMTUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgODI1OSBzdGF0 dXMgcmV0dXJuZWQuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIEVycm9yIHdy aXRpbmcgODI1OS4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICso RUZJQVBJICpFRklfTEVHQUNZXzgyNTlfU0VUX01BU0spKA0KPiArICBJTiBFRklfTEVHQUNZXzgy NTlfUFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KPiArICBJTiAgVUlOVDE2ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpMZWdhY3lNYXNrLCBPUFRJT05BTA0KPiArICBJTiAgVUlOVDE2ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpMZWdhY3lFZGdlTGV2ZWwsIE9QVElPTkFMDQo+ICsg IElOICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlByb3RlY3RlZE1hc2ssIE9Q VElPTkFMDQo+ICsgIElOICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlByb3Rl Y3RlZEVkZ2VMZXZlbCBPUFRJT05BTA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgU2V0IHRo ZSA4MjU5IG1vZGUgb2Ygb3BlcmF0aW9uLiBUaGUgYmFzZSBhZGRyZXNzIGZvciB0aGUgODI1OSBp cyBkaWZmZXJlbnQNCj4gZm9yDQo+ICsgIGxlZ2FjeSBhbmQgcHJvdGVjdGVkIG1vZGUuIFRoZSBs ZWdhY3kgbW9kZSByZXF1aXJlcyB0aGUgbWFzdGVyIDgyNTkgdG8NCj4gaGF2ZSBhDQo+ICsgIG1h c3RlciBiYXNlIG9mIDB4MDggYW5kIHRoZSBzbGF2ZSBiYXNlIG9mIDB4NzAuIFRoZSBwcm90ZWN0 ZWQgbW9kZSBiYXNlDQo+IGxvY2F0aW9ucw0KPiArICBhcmUgbm90IGRlZmluZWQuIEludGVycnVw dHMgbXVzdCBiZSBtYXNrZWQgYnkgdGhlIGNhbGxlciBiZWZvcmUgdGhpcyBmdW5jdGlvbg0KPiAr ICBpcyBjYWxsZWQuIFRoZSBpbnRlcnJ1cHQgbWFzayBmcm9tIHRoZSBjdXJyZW50IG1vZGUgaXMg c2F2ZWQuIFRoZSBpbnRlcnJ1cHQNCj4gKyAgbWFzayBmb3IgdGhlIG5ldyBtb2RlIGlzIE1hc2ss IG9yIGlmIE1hc2sgZG9lcyBub3QgZXhpc3QgdGhlIHByZXZpb3VzbHkgc2F2ZWQNCj4gKyAgbWFz ayBpcyB1c2VkLg0KPiArDQo+ICsgIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBw cm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KPiArICBAcGFyYW0gIE1vZGUgICAgICAgICAgICAg ICAgICBUaGUgbW9kZSBvZiBvcGVyYXRpb24uIGkuZS4gdGhlIHJlYWwgbW9kZSBvcg0KPiBwcm90 ZWN0ZWQgbW9kZS4NCj4gKyAgQHBhcmFtICBNYXNrICAgICAgICAgICAgICAgICAgT3B0aW9uYWwg aW50ZXJ1cHQgbWFzayBmb3IgdGhlIG5ldyBtb2RlLg0KPiArICBAcGFyYW0gIEVkZ2VMZXZlbCAg ICAgICAgICAgICBPcHRpb25hbCB0cmlnZ2VyIG1hc2sgZm9yIHRoZSBuZXcgbW9kZS4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICA4MjU5IHByb2dyYW1tZWQuDQo+ICsg IEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIEVycm9yIHdyaXRpbmcgdG8gODI1OS4NCj4g Kw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfTEVH QUNZXzgyNTlfU0VUX01PREUpKA0KPiArICBJTiBFRklfTEVHQUNZXzgyNTlfUFJPVE9DT0wgICAg ICAgICAqVGhpcywNCj4gKyAgSU4gIEVGSV84MjU5X01PREUgICAgICAgICAgICAgICAgICAgTW9k ZSwNCj4gKyAgSU4gIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgKk1hc2ssIE9QVElP TkFMDQo+ICsgIElOICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICpFZGdlTGV2ZWwg T1BUSU9OQUwNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIENvbnZlcnQgZnJvbSBJUlEgdG8g cHJvY2Vzc29yIGludGVycnVwdCB2ZWN0b3IgbnVtYmVyLg0KPiArDQo+ICsgIEBwYXJhbSAgVGhp cyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KPiArICBA cGFyYW0gIElycSAgICAgICAgICAgICAgICAgICA4MjU5IElSUTAgLSBJUlExNS4NCj4gKyAgQHBh cmFtICBWZWN0b3IgICAgICAgICAgICAgICAgVGhlIHByb2Nlc3NvciB2ZWN0b3IgbnVtYmVyIHRo YXQgbWF0Y2hlcyBhbiBJcnEuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIFZlY3RvciBtYXRjaGluZyBJcnEgaXMgcmV0dXJuZWQuDQo+ICsgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSIFRoZSBJcnEgbm90IHZhbGlkLg0KPiArDQo+ICsqKi8NCj4gK3R5 cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKkVGSV9MRUdBQ1lfODI1OV9HRVRfVkVD VE9SKSgNCj4gKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MICAgICAgICAgICAqVGhpcywN Cj4gKyAgSU4gIEVGSV84MjU5X0lSUSAgICAgICAgICAgICAgICAgICAgICBJcnEsDQo+ICsgIE9V VCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlZlY3Rvcg0KPiArICApOw0KPiAr DQo+ICsvKioNCj4gKyAgRW5hYmxlIElycSBieSB1bm1hc2tpbmcgaW50ZXJydXB0IGluIDgyNTkN Cj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5z dGFuY2UgcG9pbnRlci4NCj4gKyAgQHBhcmFtICBJcnEgICAgICAgICAgICAgICAgICAgODI1OSBJ UlEwIC0gSVJRMTUuDQo+ICsgIEBwYXJhbSAgTGV2ZWxUcmlnZ2VyZWQgICAgICAgIFRSVUUgaWYg bGV2ZWwgdHJpZ2dlcmVkLiBGQUxTRSBpZiBlZGdlIHRyaWdnZXJlZC4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgSXJxIHdhcyBlbmFibGVkIG9uIDgyNTkuDQo+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFRoZSBJcnEgaXMgbm90IHZhbGlkLg0K PiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKkVGSV9M RUdBQ1lfODI1OV9FTkFCTEVfSVJRKSgNCj4gKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09M ICAgICAgICAgICAqVGhpcywNCj4gKyAgSU4gIEVGSV84MjU5X0lSUSAgICAgICAgICAgICAgICAg ICAgICBJcnEsDQo+ICsgIElOICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgTGV2 ZWxUcmlnZ2VyZWQNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIERpc2FibGUgSXJxIGJ5IG1h c2tpbmcgaW50ZXJydXB0IGluIDgyNTkNCj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAg ICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCj4gKyAgQHBhcmFtICBJcnEg ICAgICAgICAgICAgICAgICAgODI1OSBJUlEwIC0gSVJRMTUuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgVGhlIElycSB3YXMgZGlzYWJsZWQgb24gODI1OS4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIElycSBpcyBub3QgdmFsaWQuDQo+ICsN Cj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0xFR0FD WV84MjU5X0RJU0FCTEVfSVJRKSgNCj4gKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MICAg ICAgICAgICAqVGhpcywNCj4gKyAgSU4gIEVGSV84MjU5X0lSUSAgICAgICAgICAgICAgICAgICAg ICBJcnENCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFBjaUhhbmRsZSByZXByZXNlbnRzIGEg UENJIGNvbmZpZyBzcGFjZSBvZiBhIFBDSSBmdW5jdGlvbi4gVmVjdG9yDQo+ICsgIHJlcHJlc2Vu dHMgSW50ZXJydXB0IFBpbiAoZnJvbSBQQ0kgY29uZmlnIHNwYWNlKSBhbmQgaXQgaXMgdGhlIGRh dGENCj4gKyAgdGhhdCBpcyBwcm9ncmFtbWVkIGludG8gdGhlIEludGVycnVwdCBMaW5lIChmcm9t IHRoZSBQQ0kgY29uZmlnIHNwYWNlKQ0KPiArICByZWdpc3Rlci4NCj4gKw0KPiArICBAcGFyYW0g IFRoaXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCj4g KyAgQHBhcmFtICBQY2lIYW5kbGUgICAgICAgICAgICAgVGhlIFBDSSBmdW5jdGlvbiB0byByZXR1 cm4gdGhlIHZlY3RvciBmb3IuDQo+ICsgIEBwYXJhbSAgVmVjdG9yICAgICAgICAgICAgICAgIFRo ZSB2ZWN0b3IgZm9yIHRoZSBmdW5jdGlvbiBpdCBtYXRjaGVzLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIEEgdmFsaWQgVmVjdG9yIHdhcyByZXR1cm5lZC4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgUGNpSGFuZGxlIG5vdCB2YWxpZC4NCj4gKw0K PiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfTEVHQUNZ XzgyNTlfR0VUX0lOVEVSUlVQVF9MSU5FKSgNCj4gKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RP Q09MICAgICAgICAgICAqVGhpcywNCj4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg ICAgICAgICBQY2lIYW5kbGUsDQo+ICsgIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKlZlY3Rvcg0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgU2VuZCBhbiBFT0kgdG8g ODI1OQ0KPiArDQo+ICsgIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2Nv bCBpbnN0YW5jZSBwb2ludGVyLg0KPiArICBAcGFyYW0gIElycSAgICAgICAgICAgICAgICAgICA4 MjU5IElSUTAgLSBJUlExNS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBFT0kgd2FzIHN1Y2Nlc3NmdWxseSBzZW50IHRvIDgyNTkuDQo+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIFRoZSBJcnEgaXNub3QgdmFsaWQuDQo+ICsNCj4gKyoqLw0KPiArdHlw ZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0xFR0FDWV84MjU5X0VORF9PRl9J TlRFUlJVUFQpKA0KPiArICBJTiBFRklfTEVHQUNZXzgyNTlfUFJPVE9DT0wgICAgICAgICAgICpU aGlzLA0KPiArICBJTiAgRUZJXzgyNTlfSVJRICAgICAgICAgICAgICAgICAgICAgIElycQ0KPiAr ICApOw0KPiArDQo+ICsvKioNCj4gKyAgQHBhciBQcm90b2NvbCBEZXNjcmlwdGlvbjoNCj4gKyAg QWJzdHJhY3RzIHRoZSA4MjU5IGFuZCBBUElDIGhhcmR3YXJlIGNvbnRyb2wgYmV0d2VlbiBFRkkg dXNhZ2UgYW5kDQo+ICsgIENvbXBhdGliaWxpdHkxNiB1c2FnZS4NCj4gKw0KPiArICBAcGFyYW0g U2V0VmVjdG9yQmFzZQ0KPiArICBTZXRzIHRoZSB2ZWN0b3IgYmFzZXMgZm9yIG1hc3RlciBhbmQg c2xhdmUgUElDcy4NCj4gKw0KPiArICBAcGFyYW0gR2V0TWFzaw0KPiArICBHZXRzIElSUSBhbmQg ZWRnZS9sZXZlbCBtYXNrcyBmb3IgMTYtYml0IHJlYWwgbW9kZSBhbmQgMzItYml0IHByb3RlY3Rl ZA0KPiBtb2RlLg0KPiArDQo+ICsgIEBwYXJhbSBTZXRNYXNrDQo+ICsgIFNldHMgdGhlIElSUSBh bmQgZWRnZVxsZXZlbCBtYXNrcyBmb3IgMTYtYml0IHJlYWwgbW9kZSBhbmQgMzItYml0IHByb3Rl Y3RlZA0KPiBtb2RlLg0KPiArDQo+ICsgIEBwYXJhbSBTZXRNb2RlDQo+ICsgIFNldHMgUElDIG1v ZGUgdG8gMTYtYml0IHJlYWwgbW9kZSBvciAzMi1iaXQgcHJvdGVjdGVkIG1vZGUuDQo+ICsNCj4g KyAgQHBhcmFtIEdldFZlY3Rvcg0KPiArICBHZXRzIHRoZSBiYXNlIHZlY3RvciBhc3NpZ25lZCB0 byBhbiBJUlEuDQo+ICsNCj4gKyAgQHBhcmFtIEVuYWJsZUlycQ0KPiArICBFbmFibGVzIGFuIElS US4NCj4gKw0KPiArICBAcGFyYW0gRGlzYWJsZUlycQ0KPiArICBEaXNhYmxlcyBhbiBJUlEuDQo+ ICsNCj4gKyAgQHBhcmFtIEdldEludGVycnVwdExpbmUNCj4gKyAgR2V0cyBhbiBJUlEgdGhhdCBp cyBhc3NpZ25lZCB0byBhIFBDSSBkZXZpY2UuDQo+ICsNCj4gKyAgQHBhcmFtIEVuZE9mSW50ZXJy dXB0DQo+ICsgIElzc3VlcyB0aGUgZW5kIG9mIGludGVycnVwdCBjb21tYW5kLg0KPiArDQo+ICsq Ki8NCj4gK3N0cnVjdCBfRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MIHsNCj4gKyAgRUZJX0xFR0FD WV84MjU5X1NFVF9WRUNUT1JfQkFTRSAgICAgU2V0VmVjdG9yQmFzZTsNCj4gKyAgRUZJX0xFR0FD WV84MjU5X0dFVF9NQVNLICAgICAgICAgICAgR2V0TWFzazsNCj4gKyAgRUZJX0xFR0FDWV84MjU5 X1NFVF9NQVNLICAgICAgICAgICAgU2V0TWFzazsNCj4gKyAgRUZJX0xFR0FDWV84MjU5X1NFVF9N T0RFICAgICAgICAgICAgU2V0TW9kZTsNCj4gKyAgRUZJX0xFR0FDWV84MjU5X0dFVF9WRUNUT1Ig ICAgICAgICAgR2V0VmVjdG9yOw0KPiArICBFRklfTEVHQUNZXzgyNTlfRU5BQkxFX0lSUSAgICAg ICAgICBFbmFibGVJcnE7DQo+ICsgIEVGSV9MRUdBQ1lfODI1OV9ESVNBQkxFX0lSUSAgICAgICAg IERpc2FibGVJcnE7DQo+ICsgIEVGSV9MRUdBQ1lfODI1OV9HRVRfSU5URVJSVVBUX0xJTkUgIEdl dEludGVycnVwdExpbmU7DQo+ICsgIEVGSV9MRUdBQ1lfODI1OV9FTkRfT0ZfSU5URVJSVVBUICAg IEVuZE9mSW50ZXJydXB0Ow0KPiArfTsNCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdFZmlMZWdh Y3k4MjU5UHJvdG9jb2xHdWlkOw0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdA0KPiBhL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1JlZ2lzdGVyL1g1OFNtcmFt U2F2ZVN0YXRlTQ0KPiBhcC5oDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L0luY2x1ZGUvUmVnaXN0ZXIvWDU4U21yYW1TYXZlU3RhdGVNDQo+IGFwLmgNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNjQwYWM0OTQzZA0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRl L1JlZ2lzdGVyL1g1OFNtcmFtU2F2ZVN0YXRlTQ0KPiBhcC5oDQo+IEBAIC0wLDAgKzEsMTc4IEBA DQo+ICsvKiogQGZpbGUNCj4gK1NNUkFNIFNhdmUgU3RhdGUgTWFwIERlZmluaXRpb25zLg0KPiAr DQo+ICtTTVJBTSBTYXZlIFN0YXRlIE1hcCBkZWZpbml0aW9ucyBiYXNlZCBvbiBjb250ZW50cyBv ZiB0aGUNCj4gK0ludGVsKFIpIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERl dmVsb3BlcidzIE1hbnVhbA0KPiArICBWb2x1bWUgM0MsIFNlY3Rpb24gMzQuNCBTTVJBTQ0KPiAr ICBWb2x1bWUgM0MsIFNlY3Rpb24gMzQuNSBTTUkgSGFuZGxlciBFeGVjdXRpb24gRW52aXJvbm1l bnQNCj4gKyAgVm9sdW1lIDNDLCBTZWN0aW9uIDM0LjcgTWFuYWdpbmcgU3luY2hyb25vdXMgYW5k IEFzeW5jaHJvbm91cyBTTUlzDQo+ICsNCj4gK2FuZCB0aGUgQU1ENjQgQXJjaGl0ZWN0dXJlIFBy b2dyYW1tZXIncyBNYW51YWwNCj4gKyAgVm9sdW1lIDIsIFNlY3Rpb24gMTAuMiBTTU0gUmVzb3Vy Y2VzDQo+ICsNCj4gK0NvcHlyaWdodCAoYykgMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArQ29weXJpZ2h0IChjKSAyMDE1LCBSZWQgSGF0LCBJbmMu PEJSPg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfX1g1OF9TTVJBTV9TQVZFX1NUQVRFX01BUF9I X18NCj4gKyNkZWZpbmUgX19YNThfU01SQU1fU0FWRV9TVEFURV9NQVBfSF9fDQo+ICsNCj4gKyNw cmFnbWEgcGFjayAoMSkNCj4gKw0KPiArLy8vDQo+ICsvLy8gMzItYml0IFNNUkFNIFNhdmUgU3Rh dGUgTWFwDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDggICBSZXNlcnZl ZDBbMHgyMDBdOyAvLyA3YzAwaA0KPiArICBVSU5UOCAgIFJlc2VydmVkMVsweGY4XTsgIC8vIDdl MDBoDQo+ICsgIFVJTlQzMiAgU01CQVNFOyAgICAgICAgICAgLy8gN2VmOGgNCj4gKyAgVUlOVDMy ICBTTU1SZXZJZDsgICAgICAgICAvLyA3ZWZjaA0KPiArICBVSU5UMTYgIElPUmVzdGFydDsgICAg ICAgIC8vIDdmMDBoDQo+ICsgIFVJTlQxNiAgQXV0b0hBTFRSZXN0YXJ0OyAgLy8gN2YwMmgNCj4g KyAgVUlOVDggICBSZXNlcnZlZDJbMHg5Q107ICAvLyA3ZjA4aA0KPiArICBVSU5UMzIgIElPTWVt QWRkcjsgICAgICAgIC8vIDdmYTBoDQo+ICsgIFVJTlQzMiAgSU9NaXNjOyAgICAgICAgICAgLy8g N2ZhNGgNCj4gKyAgVUlOVDMyICBfRVM7ICAgICAgICAgICAgICAvLyA3ZmE4aA0KPiArICBVSU5U MzIgIF9DUzsgICAgICAgICAgICAgIC8vIDdmYWNoDQo+ICsgIFVJTlQzMiAgX1NTOyAgICAgICAg ICAgICAgLy8gN2ZiMGgNCj4gKyAgVUlOVDMyICBfRFM7ICAgICAgICAgICAgICAvLyA3ZmI0aA0K PiArICBVSU5UMzIgIF9GUzsgICAgICAgICAgICAgIC8vIDdmYjhoDQo+ICsgIFVJTlQzMiAgX0dT OyAgICAgICAgICAgICAgLy8gN2ZiY2gNCj4gKyAgVUlOVDMyICBSZXNlcnZlZDM7ICAgICAgICAv LyA3ZmMwaA0KPiArICBVSU5UMzIgIF9UUjsgICAgICAgICAgICAgIC8vIDdmYzRoDQo+ICsgIFVJ TlQzMiAgX0RSNzsgICAgICAgICAgICAgLy8gN2ZjOGgNCj4gKyAgVUlOVDMyICBfRFI2OyAgICAg ICAgICAgICAvLyA3ZmNjaA0KPiArICBVSU5UMzIgIF9FQVg7ICAgICAgICAgICAgIC8vIDdmZDBo DQo+ICsgIFVJTlQzMiAgX0VDWDsgICAgICAgICAgICAgLy8gN2ZkNGgNCj4gKyAgVUlOVDMyICBf RURYOyAgICAgICAgICAgICAvLyA3ZmQ4aA0KPiArICBVSU5UMzIgIF9FQlg7ICAgICAgICAgICAg IC8vIDdmZGNoDQo+ICsgIFVJTlQzMiAgX0VTUDsgICAgICAgICAgICAgLy8gN2ZlMGgNCj4gKyAg VUlOVDMyICBfRUJQOyAgICAgICAgICAgICAvLyA3ZmU0aA0KPiArICBVSU5UMzIgIF9FU0k7ICAg ICAgICAgICAgIC8vIDdmZThoDQo+ICsgIFVJTlQzMiAgX0VESTsgICAgICAgICAgICAgLy8gN2Zl Y2gNCj4gKyAgVUlOVDMyICBfRUlQOyAgICAgICAgICAgICAvLyA3ZmYwaA0KPiArICBVSU5UMzIg IF9FRkxBR1M7ICAgICAgICAgIC8vIDdmZjRoDQo+ICsgIFVJTlQzMiAgX0NSMzsgICAgICAgICAg ICAgLy8gN2ZmOGgNCj4gKyAgVUlOVDMyICBfQ1IwOyAgICAgICAgICAgICAvLyA3ZmZjaA0KPiAr fSBYNThfU01SQU1fU0FWRV9TVEFURV9NQVAzMjsNCj4gKw0KPiArLy8vDQo+ICsvLy8gNjQtYml0 IFNNUkFNIFNhdmUgU3RhdGUgTWFwDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAg VUlOVDggICBSZXNlcnZlZDBbMHgyMDBdOyAgLy8gN2MwMGgNCj4gKw0KPiArICBVSU5UMTYgIF9F UzsgICAgICAgICAgICAgICAvLyA3ZTAwaA0KPiArICBVSU5UMTYgIF9FU0FjY2Vzc1JpZ2h0czsg ICAvLyA3ZTAyaA0KPiArICBVSU5UMzIgIF9FU0xpbWl0OyAgICAgICAgICAvLyA3ZTA0aA0KPiAr ICBVSU5UNjQgIF9FU0Jhc2U7ICAgICAgICAgICAvLyA3ZTA4aA0KPiArDQo+ICsgIFVJTlQxNiAg X0NTOyAgICAgICAgICAgICAgIC8vIDdlMTBoDQo+ICsgIFVJTlQxNiAgX0NTQWNjZXNzUmlnaHRz OyAgIC8vIDdlMTJoDQo+ICsgIFVJTlQzMiAgX0NTTGltaXQ7ICAgICAgICAgIC8vIDdlMTRoDQo+ ICsgIFVJTlQ2NCAgX0NTQmFzZTsgICAgICAgICAgIC8vIDdlMThoDQo+ICsNCj4gKyAgVUlOVDE2 ICBfU1M7ICAgICAgICAgICAgICAgLy8gN2UyMGgNCj4gKyAgVUlOVDE2ICBfU1NBY2Nlc3NSaWdo dHM7ICAgLy8gN2UyMmgNCj4gKyAgVUlOVDMyICBfU1NMaW1pdDsgICAgICAgICAgLy8gN2UyNGgN Cj4gKyAgVUlOVDY0ICBfU1NCYXNlOyAgICAgICAgICAgLy8gN2UyOGgNCj4gKw0KPiArICBVSU5U MTYgIF9EUzsgICAgICAgICAgICAgICAvLyA3ZTMwaA0KPiArICBVSU5UMTYgIF9EU0FjY2Vzc1Jp Z2h0czsgICAvLyA3ZTMyaA0KPiArICBVSU5UMzIgIF9EU0xpbWl0OyAgICAgICAgICAvLyA3ZTM0 aA0KPiArICBVSU5UNjQgIF9EU0Jhc2U7ICAgICAgICAgICAvLyA3ZTM4aA0KPiArDQo+ICsgIFVJ TlQxNiAgX0ZTOyAgICAgICAgICAgICAgIC8vIDdlNDBoDQo+ICsgIFVJTlQxNiAgX0ZTQWNjZXNz UmlnaHRzOyAgIC8vIDdlNDJoDQo+ICsgIFVJTlQzMiAgX0ZTTGltaXQ7ICAgICAgICAgIC8vIDdl NDRoDQo+ICsgIFVJTlQ2NCAgX0ZTQmFzZTsgICAgICAgICAgIC8vIDdlNDhoDQo+ICsNCj4gKyAg VUlOVDE2ICBfR1M7ICAgICAgICAgICAgICAgLy8gN2U1MGgNCj4gKyAgVUlOVDE2ICBfR1NBY2Nl c3NSaWdodHM7ICAgLy8gN2U1MmgNCj4gKyAgVUlOVDMyICBfR1NMaW1pdDsgICAgICAgICAgLy8g N2U1NGgNCj4gKyAgVUlOVDY0ICBfR1NCYXNlOyAgICAgICAgICAgLy8gN2U1OGgNCj4gKw0KPiAr ICBVSU5UMzIgIF9HRFRSUmVzZXJ2ZWQxOyAgICAvLyA3ZTYwaA0KPiArICBVSU5UMTYgIF9HRFRS TGltaXQ7ICAgICAgICAvLyA3ZTY0aA0KPiArICBVSU5UMTYgIF9HRFRSUmVzZXJ2ZWQyOyAgICAv LyA3ZTY2aA0KPiArICBVSU5UNjQgIF9HRFRSQmFzZTsgICAgICAgICAvLyA3ZTY4aA0KPiArDQo+ ICsgIFVJTlQxNiAgX0xEVFI7ICAgICAgICAgICAgIC8vIDdlNzBoDQo+ICsgIFVJTlQxNiAgX0xE VFJBY2Nlc3NSaWdodHM7IC8vIDdlNzJoDQo+ICsgIFVJTlQzMiAgX0xEVFJMaW1pdDsgICAgICAg IC8vIDdlNzRoDQo+ICsgIFVJTlQ2NCAgX0xEVFJCYXNlOyAgICAgICAgIC8vIDdlNzhoDQo+ICsN Cj4gKyAgVUlOVDMyICBfSURUUlJlc2VydmVkMTsgICAgLy8gN2U4MGgNCj4gKyAgVUlOVDE2ICBf SURUUkxpbWl0OyAgICAgICAgLy8gN2U4NGgNCj4gKyAgVUlOVDE2ICBfSURUUlJlc2VydmVkMjsg ICAgLy8gN2U4NmgNCj4gKyAgVUlOVDY0ICBfSURUUkJhc2U7ICAgICAgICAgLy8gN2U4OGgNCj4g Kw0KPiArICBVSU5UMTYgIF9UUjsgICAgICAgICAgICAgICAvLyA3ZTkwaA0KPiArICBVSU5UMTYg IF9UUkFjY2Vzc1JpZ2h0czsgICAvLyA3ZTkyaA0KPiArICBVSU5UMzIgIF9UUkxpbWl0OyAgICAg ICAgICAvLyA3ZTk0aA0KPiArICBVSU5UNjQgIF9UUkJhc2U7ICAgICAgICAgICAvLyA3ZTk4aA0K PiArDQo+ICsgIFVJTlQ2NCAgSU9fUklQOyAgICAgICAgICAgIC8vIDdlYTBoDQo+ICsgIFVJTlQ2 NCAgSU9fUkNYOyAgICAgICAgICAgIC8vIDdlYThoDQo+ICsgIFVJTlQ2NCAgSU9fUlNJOyAgICAg ICAgICAgIC8vIDdlYjBoDQo+ICsgIFVJTlQ2NCAgSU9fUkRJOyAgICAgICAgICAgIC8vIDdlYjho DQo+ICsgIFVJTlQzMiAgSU9fRFdvcmQ7ICAgICAgICAgIC8vIDdlYzBoDQo+ICsgIFVJTlQ4ICAg UmVzZXJ2ZWQxWzB4MDRdOyAgIC8vIDdlYzRoDQo+ICsgIFVJTlQ4ICAgSU9SZXN0YXJ0OyAgICAg ICAgIC8vIDdlYzhoDQo+ICsgIFVJTlQ4ICAgQXV0b0hBTFRSZXN0YXJ0OyAgIC8vIDdlYzloDQo+ ICsgIFVJTlQ4ICAgUmVzZXJ2ZWQyWzB4MDZdOyAgIC8vIDdlY2FoDQo+ICsNCj4gKyAgVUlOVDY0 ICBJQTMyX0VGRVI7ICAgICAgICAgLy8gN2VkMGgNCj4gKyAgVUlOVDY0ICBTVk1fR3Vlc3Q7ICAg ICAgICAgLy8gN2VkOGgNCj4gKyAgVUlOVDY0ICBTVk1fR3Vlc3RWTUNCOyAgICAgLy8gN2VlMGgN Cj4gKyAgVUlOVDY0ICBTVk1fR3Vlc3RWSW50cjsgICAgLy8gN2VlOGgNCj4gKyAgVUlOVDggICBS ZXNlcnZlZDNbMHgwY107ICAgLy8gN2VmMGgNCj4gKw0KPiArICBVSU5UMzIgIFNNTVJldklkOyAg ICAgICAgICAvLyA3ZWZjaA0KPiArICBVSU5UMzIgIFNNQkFTRTsgICAgICAgICAgICAvLyA3ZjAw aA0KPiArDQo+ICsgIFVJTlQ4ICAgUmVzZXJ2ZWQ0WzB4MWNdOyAgIC8vIDdmMDRoDQo+ICsgIFVJ TlQ2NCAgU1ZNX0d1ZXN0UEFUOyAgICAgIC8vIDdmMjBoDQo+ICsgIFVJTlQ2NCAgU1ZNX0hvc3RJ QTMyX0VGRVI7IC8vIDdmMjhoDQo+ICsgIFVJTlQ2NCAgU1ZNX0hvc3RDUjQ7ICAgICAgIC8vIDdm MzBoDQo+ICsgIFVJTlQ2NCAgU1ZNX0hvc3RDUjM7ICAgICAgIC8vIDdmMzhoDQo+ICsgIFVJTlQ2 NCAgU1ZNX0hvc3RDUjA7ICAgICAgIC8vIDdmNDBoDQo+ICsNCj4gKyAgVUlOVDY0ICBfQ1I0OyAg ICAgICAgICAgICAgLy8gN2Y0OGgNCj4gKyAgVUlOVDY0ICBfQ1IzOyAgICAgICAgICAgICAgLy8g N2Y1MGgNCj4gKyAgVUlOVDY0ICBfQ1IwOyAgICAgICAgICAgICAgLy8gN2Y1OGgNCj4gKyAgVUlO VDY0ICBfRFI3OyAgICAgICAgICAgICAgLy8gN2Y2MGgNCj4gKyAgVUlOVDY0ICBfRFI2OyAgICAg ICAgICAgICAgLy8gN2Y2OGgNCj4gKyAgVUlOVDY0ICBfUkZMQUdTOyAgICAgICAgICAgLy8gN2Y3 MGgNCj4gKyAgVUlOVDY0ICBfUklQOyAgICAgICAgICAgICAgLy8gN2Y3OGgNCj4gKyAgVUlOVDY0 ICBfUjE1OyAgICAgICAgICAgICAgLy8gN2Y4MGgNCj4gKyAgVUlOVDY0ICBfUjE0OyAgICAgICAg ICAgICAgLy8gN2Y4OGgNCj4gKyAgVUlOVDY0ICBfUjEzOyAgICAgICAgICAgICAgLy8gN2Y5MGgN Cj4gKyAgVUlOVDY0ICBfUjEyOyAgICAgICAgICAgICAgLy8gN2Y5OGgNCj4gKyAgVUlOVDY0ICBf UjExOyAgICAgICAgICAgICAgLy8gN2ZhMGgNCj4gKyAgVUlOVDY0ICBfUjEwOyAgICAgICAgICAg ICAgLy8gN2ZhOGgNCj4gKyAgVUlOVDY0ICBfUjk7ICAgICAgICAgICAgICAgLy8gN2ZiMGgNCj4g KyAgVUlOVDY0ICBfUjg7ICAgICAgICAgICAgICAgLy8gN2ZiOGgNCj4gKyAgVUlOVDY0ICBfUkRJ OyAgICAgICAgICAgICAgLy8gN2ZjMGgNCj4gKyAgVUlOVDY0ICBfUlNJOyAgICAgICAgICAgICAg Ly8gN2ZjOGgNCj4gKyAgVUlOVDY0ICBfUkJQOyAgICAgICAgICAgICAgLy8gN2ZkMGgNCj4gKyAg VUlOVDY0ICBfUlNQOyAgICAgICAgICAgICAgLy8gN2ZkOGgNCj4gKyAgVUlOVDY0ICBfUkJYOyAg ICAgICAgICAgICAgLy8gN2ZlMGgNCj4gKyAgVUlOVDY0ICBfUkRYOyAgICAgICAgICAgICAgLy8g N2ZlOGgNCj4gKyAgVUlOVDY0ICBfUkNYOyAgICAgICAgICAgICAgLy8gN2ZmMGgNCj4gKyAgVUlO VDY0ICBfUkFYOyAgICAgICAgICAgICAgLy8gN2ZmOGgNCj4gK30gWDU4X1NNUkFNX1NBVkVfU1RB VEVfTUFQNjQ7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFVuaW9uIG9mIDMyLWJpdCBhbmQgNjQtYml0 IFNNUkFNIFNhdmUgU3RhdGUgTWFwcw0KPiArLy8vDQo+ICt0eXBlZGVmIHVuaW9uICB7DQo+ICsg IFg1OF9TTVJBTV9TQVZFX1NUQVRFX01BUDMyICB4ODY7DQo+ICsgIFg1OF9TTVJBTV9TQVZFX1NU QVRFX01BUDY0ICB4NjQ7DQo+ICt9IFg1OF9TTVJBTV9TQVZFX1NUQVRFX01BUDsNCj4gKw0KPiAr I3ByYWdtYSBwYWNrICgpDQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvU2ltaWNzUGxhdGZvcm1zLmgNCj4gYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9TaW1pY3NQbGF0Zm9ybXMu aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5jNzkxMTFkODEx DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0luY2x1ZGUvU2ltaWNzUGxhdGZvcm1zLmgNCj4gQEAgLTAsMCArMSw1NCBAQA0KPiArLyoq IEBmaWxlDQo+ICsgIE9WTUYgUGxhdGZvcm0gZGVmaW5pdGlvbnMNCj4gKw0KPiArICBDb3B5cmln aHQgKEMpIDIwMTUsIFJlZCBIYXQsIEluYy4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE0LCBHYWJy aWVsIEwuIFNvbWxvIDxzb21sb0BjbXUuZWR1Pg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfX09W TUZfUExBVEZPUk1TX0hfXw0KPiArI2RlZmluZSBfX09WTUZfUExBVEZPUk1TX0hfXw0KPiArDQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9QY2lMaWIuaD4NCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5k YXJkL1BjaTIyLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9YNThJY2gxMC5oPg0K PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvSTQ0MEZ4UGlpeDQuaD4gLy8gVE9ETzogcmVt b3ZlDQo+ICsNCj4gKy8vDQo+ICsvLyBTaW1pY3MgSG9zdCBCcmlkZ2UgRElEIEFkZHJlc3MNCj4g Ky8vDQo+ICsjZGVmaW5lIFNJTUlDU19IT1NUQlJJREdFX0RJRCBcDQo+ICsgIFBDSV9MSUJfQURE UkVTUyAoMCwgMCwgMCwgUENJX0RFVklDRV9JRF9PRkZTRVQpDQo+ICsNCj4gKy8vDQo+ICsvLyBT aW1pY3MgU2lkZUJhbmQgUENJIGRldmljZSByZWdpc3RlcnMNCj4gKy8vDQo+ICsjZGVmaW5lIFNJ TUlDU19TSURFQkFORFBDSV9ERVYgIDANCj4gKyNkZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX0ZV TkMgNw0KPiArI2RlZmluZSBTSU1JQ1NfU0lERUJBTkRQQ0lfU1ZJRCBcDQo+ICsgIFBDSV9MSUJf QUREUkVTUyAoMCwgMCwgNywgUENJX1NWSURfT0ZGU0VUKQ0KPiArI2RlZmluZSBTSU1JQ1NfU0lE RUJBTkRQQ0lfU0RJRCBcDQo+ICsgIFBDSV9MSUJfQUREUkVTUyAoMCwgMCwgNywgUENJX1NJRF9P RkZTRVQpDQo+ICsjZGVmaW5lIFNJTUlDU19TSURFQkFORFBDSV9DQVAgXA0KPiArICBQQ0lfTElC X0FERFJFU1MgKDAsIDAsIDcsIFBDSV9DQVBCSUxJVFlfUE9JTlRFUl9PRkZTRVQpDQo+ICsjZGVm aW5lIFNJTUlDU19TSURFQkFORFBDSV9DQVBfT2Zmc2V0IDB4NDANCj4gKyNkZWZpbmUgU0lNSUNT X1NJREVCQU5EUENJX0NBUF9JRCAgICAgMHhGRg0KPiArDQo+ICsvLw0KPiArLy8gVmFsdWVzIHdl IHByb2dyYW0gaW50byB0aGUgUE0gYmFzZSBhZGRyZXNzIHJlZ2lzdGVycw0KPiArLy8NCj4gKyNk ZWZpbmUgUElJWDRfUE1CQV9WQUxVRSAgMHhCMDAwDQo+ICsjZGVmaW5lIElDSDEwX1BNQkFTRV9W QUxVRSAweDA0MDANCj4gKw0KPiArLy8NCj4gKy8vIENvbW1vbiBiaXRzIGluIHNhbWUtcHVycG9z ZSByZWdpc3RlcnMNCj4gKy8vDQo+ICsjZGVmaW5lIFBNQkFfUlRFIEJJVDANCj4gKw0KPiArLy8N Cj4gKy8vIENvbW1vbiBJTyBwb3J0cyByZWxhdGl2ZSB0byB0aGUgUG93ZXIgTWFuYWdlbWVudCBC YXNlIEFkZHJlc3MNCj4gKy8vDQo+ICsjZGVmaW5lIEFDUElfVElNRVJfT0ZGU0VUIDB4OA0KPiAr DQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9JYTMyL0p1bXBUb0tlcm4NCj4gZWwubmFzbQ0K PiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExp Yi9JYTMyL0p1bXBUb0tlcm4NCj4gZWwubmFzbQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwLi4zZjNjZDMzYzhhDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIv UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0lh MzIvSnVtcFRvS2Vybg0KPiBlbC5uYXNtDQo+IEBAIC0wLDAgKzEsNDEgQEANCj4gKzsgQGZpbGUN Cj4gKzsgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC4gPEJSPg0KPiArOw0KPiArOyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiArOw0KPiArDQo+ICsgIFNFQ1RJT04gLnRleHQNCj4gKw0K PiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArOyBWT0lEDQo+ICs7IEVGSUFQSQ0KPiArOyBK dW1wVG9LZXJuZWwgKA0KPiArOyAgIFZPSUQgKktlcm5lbFN0YXJ0LA0KPiArOyAgIFZPSUQgKktl cm5lbEJvb3RQYXJhbXMNCj4gKzsgICApOw0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAr Z2xvYmFsIEFTTV9QRlgoSnVtcFRvS2VybmVsKQ0KPiArQVNNX1BGWChKdW1wVG9LZXJuZWwpOg0K PiArDQo+ICsgICAgbW92ICAgICBlc2ksIFtlc3AgKyA4XQ0KPiArICAgIGNhbGwgICAgRFdPUkQg W2VzcCArIDRdDQo+ICsgICAgcmV0DQo+ICsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g KzsgVk9JRA0KPiArOyBFRklBUEkNCj4gKzsgSnVtcFRvVWVmaUtlcm5lbCAoDQo+ICs7ICAgRUZJ X0hBTkRMRSBJbWFnZUhhbmRsZSwNCj4gKzsgICBFRklfU1lTVEVNX1RBQkxFICpTeXN0ZW1UYWJs ZSwNCj4gKzsgICBWT0lEICpLZXJuZWxCb290UGFyYW1zLA0KPiArOyAgIFZPSUQgKktlcm5lbFN0 YXJ0DQo+ICs7ICAgKTsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gK2dsb2JhbCBBU01f UEZYKEp1bXBUb1VlZmlLZXJuZWwpDQo+ICtBU01fUEZYKEp1bXBUb1VlZmlLZXJuZWwpOg0KPiAr DQo+ICsgICAgbW92ICAgICBlYXgsIFtlc3AgKyAxMl0NCj4gKyAgICBtb3YgICAgIGVheCwgW2Vh eCArIDB4MjY0XQ0KPiArICAgIGFkZCAgICAgZWF4LCBbZXNwICsgMTZdDQo+ICsgICAgam1wICAg ICBlYXgNCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5oDQo+IGIvUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExp Yi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmM0Y2M0ZGQ4 ZTcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4TGliLmgNCj4gQEAgLTAsMCAr MSw1MiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEJvb3QgVUVGSSBMaW51eC4NCj4gKw0KPiArICBD b3B5cmlnaHQgKGMpIDIwMDggLSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9MT0FEX0xJTlVYX0xJQl9JTkNM VURFRF8NCj4gKyNkZWZpbmUgX0xPQURfTElOVVhfTElCX0lOQ0xVREVEXw0KPiArDQo+ICsjaW5j bHVkZSA8VWVmaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvTG9hZExpbnV4TGliLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVt b3J5TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGlt ZVNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQv TGludXhCemltYWdlLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9HcmFwaGljc091dHB1 dC5oPg0KPiArDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0p1bXBUb0tlcm5lbCAoDQo+ICsgIFZP SUQgKktlcm5lbFN0YXJ0LA0KPiArICBWT0lEICpLZXJuZWxCb290UGFyYW1zDQo+ICsgICk7DQo+ ICsNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArSnVtcFRvVWVmaUtlcm5lbCAoDQo+ICsgIEVGSV9I QU5ETEUgSW1hZ2VIYW5kbGUsDQo+ICsgIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlLA0K PiArICBWT0lEICpLZXJuZWxCb290UGFyYW1zLA0KPiArICBWT0lEICpLZXJuZWxTdGFydA0KPiAr ICApOw0KPiArDQo+ICtWT0lEDQo+ICtJbml0TGludXhEZXNjcmlwdG9yVGFibGVzICgNCj4gKyAg Vk9JRA0KPiArICApOw0KPiArDQo+ICtWT0lEDQo+ICtTZXRMaW51eERlc2NyaXB0b3JUYWJsZXMg KA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZg0KPiArDQo+IGRpZmYgLS1naXQN Cj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhM aWIvTG9hZExpbnV4TGliLmluZg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9MaWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGludXhMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjg5NjY0ZjRlNDINCj4gLS0tIC9kZXYvbnVsbA0K PiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2Fk TGludXhMaWIvTG9hZExpbnV4TGliLmluZg0KPiBAQCAtMCwwICsxLDQyIEBADQo+ICsjIyBAZmls ZQ0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMDggLSAyMDEyIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsjDQo+ICsjIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsjDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5l c10NCj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiAr ICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBMb2FkTGludXhMaWINCj4gKyAgRklM RV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gNjNDQzg0OTctQzlEMC00NkE4LUFDMDgtNDlE RjkyQTJGRjYyDQo+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IEJBU0UNCj4g KyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIExJQlJBUllfQ0xB U1MgICAgICAgICAgICAgICAgICA9IExvYWRMaW51eExpYg0KPiArDQo+ICsjDQo+ICsjIFRoZSBm b2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWly ZWQgYnkgdGhlIGJ1aWxkDQo+IHRvb2xzLg0KPiArIw0KPiArIyAgVkFMSURfQVJDSElURUNUVVJF UyAgICAgICAgICAgPSBJQTMyIFg2NA0KPiArIw0KPiArDQo+ICtbU291cmNlcy5jb21tb25dDQo+ ICsgIExpbnV4LmMNCj4gKyAgTGludXhHZHQuYw0KPiArDQo+ICtbU291cmNlcy5JQTMyXQ0KPiAr ICBJYTMyL0p1bXBUb0tlcm5lbC5uYXNtDQo+ICsNCj4gK1tTb3VyY2VzLlg2NF0NCj4gKyAgWDY0 L0p1bXBUb0tlcm5lbC5uYXNtDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBr Zy5kZWMNCj4gKyAgT3ZtZlBrZy9Pdm1mUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNd DQo+ICsgIEJhc2VMaWINCj4gKyAgRGVidWdMaWINCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0K PiArICBCYXNlTWVtb3J5TGliDQo+ICsNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9YNjQvSnVtcFRvS2VybmUN Cj4gbC5uYXNtDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkv TG9hZExpbnV4TGliL1g2NC9KdW1wVG9LZXJuZQ0KPiBsLm5hc20NCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNzllNmI4ZTdiYQ0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRM aW51eExpYi9YNjQvSnVtcFRvS2VybmUNCj4gbC5uYXNtDQo+IEBAIC0wLDAgKzEsODUgQEANCj4g KzsgQGZpbGUNCj4gKzsgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxMyBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArOw0KPiArOyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArOw0KPiArDQo+ICsgIERFRkFVTFQgUkVM DQo+ICsgIFNFQ1RJT04gLnRleHQNCj4gKw0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAr OyBWT0lEDQo+ICs7IEVGSUFQSQ0KPiArOyBKdW1wVG9LZXJuZWwgKA0KPiArOyAgIFZPSUQgKktl cm5lbFN0YXJ0LCAgICAgICAgIC8vIHJjeA0KPiArOyAgIFZPSUQgKktlcm5lbEJvb3RQYXJhbXMg ICAgIC8vIHJkeA0KPiArOyAgICk7DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICtnbG9i YWwgQVNNX1BGWChKdW1wVG9LZXJuZWwpDQo+ICtBU01fUEZYKEp1bXBUb0tlcm5lbCk6DQo+ICsN Cj4gKyAgICA7IFNldCB1cCBmb3IgZXhlY3V0aW5nIGtlcm5lbC4gQlAgaW4gJWVzaSwgZW50cnkg cG9pbnQgb24gdGhlIHN0YWNrDQo+ICsgICAgOyAoNjQtYml0IHdoZW4gdGhlICdyZXQnIHdpbGwg dXNlIGl0IGFzIDMyLWJpdCwgYnV0IHdlJ3JlIGxpdHRsZS1lbmRpYW4pDQo+ICsgICAgbW92ICAg IHJzaSwgcmR4DQo+ICsgICAgcHVzaCAgIHJjeA0KPiArDQo+ICsgICAgOyBKdW1wIGludG8gdGhl IGNvbXBhdGliaWxpdHkgbW9kZSBDUw0KPiArICAgIHB1c2ggICAgMHgxMA0KPiArICAgIGxlYSAg ICAgcmF4LCBbLjBdDQo+ICsgICAgcHVzaCAgICByYXgNCj4gKyAgICBEQiAweDQ4LCAweGNiICAg ICAgICAgICAgICAgICAgICAgIDsgcmV0ZnENCj4gKw0KPiArLjA6DQo+ICsgICAgOyBOb3cgaW4g Y29tcGF0aWJpbGl0eSBtb2RlLg0KPiArDQo+ICsgICAgREIgMHhiOCwgMHgxOCwgMHgwLCAweDAs IDB4MCAgICA7IG1vdmwgICAgJDB4MTgsICVlYXgNCj4gKyAgICBEQiAweDhlLCAweGQ4ICAgICAg ICAgICAgICAgICAgICAgIDsgbW92bCAgICAlZWF4LCAlZHMNCj4gKyAgICBEQiAweDhlLCAweGMw ICAgICAgICAgICAgICAgICAgICAgIDsgbW92bCAgICAlZWF4LCAlZXMNCj4gKyAgICBEQiAweDhl LCAweGUwICAgICAgICAgICAgICAgICAgICAgIDsgbW92bCAgICAlZWF4LCAlZnMNCj4gKyAgICBE QiAweDhlLCAweGU4ICAgICAgICAgICAgICAgICAgICAgIDsgbW92bCAgICAlZWF4LCAlZ3MNCj4g KyAgICBEQiAweDhlLCAweGQwICAgICAgICAgICAgICAgICAgICAgIDsgbW92bCAgICAlZWF4LCAl c3MNCj4gKw0KPiArICAgIDsgRGlzYWJsZSBwYWdpbmcNCj4gKyAgICBEQiAweGYsIDB4MjAsIDB4 YzAgICAgICAgICAgICAgICAgOyBtb3ZsICAgICVjcjAsICVlYXgNCj4gKyAgICBEQiAweGYsIDB4 YmEsIDB4ZjgsIDB4MWYgICAgICAgICAgOyBidGNsICAgICQzMSwgJWVheA0KPiArICAgIERCIDB4 ZiwgMHgyMiwgMHhjMCAgICAgICAgICAgICAgICA7IG1vdmwgICAgJWVheCwgJWNyMA0KPiArDQo+ ICsgICAgOyBEaXNhYmxlIGxvbmcgbW9kZSBpbiBFRkVSDQo+ICsgICAgREIgMHhiOSwgMHg4MCwg MHgwLCAweDAsIDB4YzAgICAgOyBtb3ZsICAgICQweDBjMDAwMDA4MCwgJWVjeA0KPiArICAgIERC IDB4ZiwgMHgzMiAgICAgICAgICAgICAgICAgICAgICA7IHJkbXNyDQo+ICsgICAgREIgMHhmLCAw eGJhLCAweGY4LCAweDggICAgICAgICAgOyBidGNsICAgICQ4LCAlZWF4DQo+ICsgICAgREIgMHhm LCAweDMwICAgICAgICAgICAgICAgICAgICAgIDsgd3Jtc3INCj4gKw0KPiArICAgIDsgRGlzYWJs ZSBQQUUNCj4gKyAgICBEQiAweGYsIDB4MjAsIDB4ZTAgICAgICAgICAgICAgICAgOyBtb3ZsICAg ICVjcjQsICVlYXgNCj4gKyAgICBEQiAweGYsIDB4YmEsIDB4ZjgsIDB4NSAgICAgICAgICA7IGJ0 Y2wgICAgJDUsICVlYXgNCj4gKyAgICBEQiAweGYsIDB4MjIsIDB4ZTAgICAgICAgICAgICAgICAg OyBtb3ZsICAgICVlYXgsICVjcjQNCj4gKw0KPiArICAgIERCIDB4MzEsIDB4ZWQgICAgICAgICAg ICAgICAgICAgICAgOyB4b3IgICAgICVlYnAsICVlYnANCj4gKyAgICBEQiAweDMxLCAweGZmICAg ICAgICAgICAgICAgICAgICAgIDsgeG9yICAgICAlZWRpLCAlZWRpDQo+ICsgICAgREIgMHgzMSwg MHhkYiAgICAgICAgICAgICAgICAgICAgICA7IHhvciAgICAgJWVieCwgJWVieA0KPiArICAgIERC IDB4YzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyByZXQNCj4gKw0KPiArOy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiArOyBWT0lEDQo+ICs7IEVGSUFQSQ0KPiArOyBKdW1wVG9VZWZpS2Vy bmVsICgNCj4gKzsgICBFRklfSEFORExFIEltYWdlSGFuZGxlLCAgICAgICAgLy8gcmN4DQo+ICs7 ICAgRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUsIC8vIHJkeA0KPiArOyAgIFZPSUQgKktl cm5lbEJvb3RQYXJhbXMgICAgICAgICAvLyByOA0KPiArOyAgIFZPSUQgKktlcm5lbFN0YXJ0LCAg ICAgICAgICAgICAvLyByOQ0KPiArOyAgICk7DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ ICtnbG9iYWwgQVNNX1BGWChKdW1wVG9VZWZpS2VybmVsKQ0KPiArQVNNX1BGWChKdW1wVG9VZWZp S2VybmVsKToNCj4gKw0KPiArICAgIG1vdiAgICAgcmRpLCByY3gNCj4gKyAgICBtb3YgICAgIHJz aSwgcmR4DQo+ICsgICAgbW92ICAgICByZHgsIHI4DQo+ICsgICAgeG9yICAgICByYXgsIHJheA0K PiArICAgIG1vdiAgICAgZWF4LCBbcjggKyAweDI2NF0NCj4gKyAgICBhZGQgICAgIHI5LCByYXgN Cj4gKyAgICBhZGQgICAgIHI5LCAweDIwMA0KPiArICAgIGNhbGwgICAgcjkNCj4gKyAgICByZXQN Cj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmgNCj4gYi9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIu aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi45MmFhMDM4Y2Rk DQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmgNCj4gQEAgLTAsMCAr MSw1NSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFNhdmUgTm9uLVZvbGF0aWxlIFZhcmlhYmxlcyB0 byBhIGZpbGUgc3lzdGVtLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTEgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKw0KPiArICBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4g KyNpZm5kZWYgX19OVl9WQVJTX0ZJTEVfTElCX0lOU1RBTkNFX18NCj4gKyNkZWZpbmUgX19OVl9W QVJTX0ZJTEVfTElCX0lOU1RBTkNFX18NCj4gKw0KPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gKw0K PiArI2luY2x1ZGUgPEd1aWQvRmlsZUluZm8uaD4NCj4gKw0KPiArI2luY2x1ZGUgPFByb3RvY29s L1NpbXBsZUZpbGVTeXN0ZW0uaD4NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5o Pg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRmlsZUhhbmRsZUxpYi5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZp Qm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlSdW50aW1l U2VydmljZXNUYWJsZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiAr DQo+ICsvKioNCj4gKyAgTG9hZHMgdGhlIG5vbi12b2xhdGlsZSB2YXJpYWJsZXMgZnJvbSB0aGUg TnZWYXJzIGZpbGUgb24gdGhlDQo+ICsgIGdpdmVuIGZpbGUgc3lzdGVtLg0KPiArDQo+ICsgIEBw YXJhbVtpbl0gIEZzSGFuZGxlIC0gSGFuZGxlIGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJv dG9jb2xHdWlkDQo+IGluc3RhbmNlDQo+ICsNCj4gKyAgQHJldHVybiAgICAgRUZJX1NUQVRVUyBi YXNlZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIGxvYWQgb3BlcmF0aW9uDQo+ICsNCj4g KyoqLw0KPiArRUZJX1NUQVRVUw0KPiArTG9hZE52VmFyc0Zyb21GcyAoDQo+ICsgIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnNIYW5kbGUNCj4gKyAgKTsNCj4gKw0KPiAr DQo+ICsvKioNCj4gKyAgU2F2ZXMgdGhlIG5vbi12b2xhdGlsZSB2YXJpYWJsZXMgaW50byB0aGUg TnZWYXJzIGZpbGUgb24gdGhlDQo+ICsgIGdpdmVuIGZpbGUgc3lzdGVtLg0KPiArDQo+ICsgIEBw YXJhbVtpbl0gIEZzSGFuZGxlIC0gSGFuZGxlIGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJv dG9jb2xHdWlkDQo+IGluc3RhbmNlDQo+ICsNCj4gKyAgQHJldHVybiAgICAgRUZJX1NUQVRVUyBi YXNlZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIGxvYWQgb3BlcmF0aW9uDQo+ICsNCj4g KyoqLw0KPiArRUZJX1NUQVRVUw0KPiArU2F2ZU52VmFyc1RvRnMgKA0KPiArICBFRklfSEFORExF ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZzSGFuZGxlDQo+ICsgICk7DQo+ICsNCj4gKyNl bmRpZg0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaW5mDQo+IGIvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNG aWxlTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5l NGMzYjdjY2ZmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmluZg0K PiBAQCAtMCwwICsxLDUzIEBADQo+ICsjIyBAZmlsZQ0KPiArIyAgTnZWYXJzRmlsZUxpYg0KPiAr Iw0KPiArIyAgVGhpcyBsaWJyYXJ5IHNhdmVzIGFuZCByZXN0b3JlcyBub24tdm9sYXRpbGUgdmFy aWFibGVzIGluIGENCj4gKyMgIGZpbGUgd2l0aGluIGEgZmlsZSBzeXN0ZW0uDQo+ICsjDQo+ICsj IENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuIDxCUj4NCj4gKyMNCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gKyMNCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZf VkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ICsgIEJBU0VfTkFNRSAg ICAgICAgICAgICAgICAgICAgICA9IE52VmFyc0ZpbGVMaWINCj4gKyAgRklMRV9HVUlEICAgICAg ICAgICAgICAgICAgICAgID0gOEVDRDRDQzAtMTc3Mi00NTgzLThBNzQtODM2MzNBMTVGQUEwDQo+ ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFVFRklfRFJJVkVSDQo+ICsgIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiArICBMSUJSQVJZX0NMQVNTICAg ICAgICAgICAgICAgICAgPSBOdlZhcnNGaWxlTGlifERYRV9EUklWRVINCj4gRFhFX1JVTlRJTUVf RFJJVkVSIFVFRklfRFJJVkVSDQo+ICsNCj4gKyMNCj4gKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1h dGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUgYnVpbGQN Cj4gdG9vbHMuDQo+ICsjDQo+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElB MzIgWDY0IEVCQw0KPiArIw0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgRnNBY2Nlc3MuYw0KPiAr ICBOdlZhcnNGaWxlTGliLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtn LmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9T aGVsbFBrZy5kZWMNCj4gKyAgT3ZtZlBrZy9Pdm1mUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNs YXNzZXNdDQo+ICsgIEJhc2VMaWINCj4gKyAgQmFzZU1lbW9yeUxpYg0KPiArICBEZWJ1Z0xpYg0K PiArICBGaWxlSGFuZGxlTGliDQo+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gKyAgU2VyaWFs aXplVmFyaWFibGVzTGliDQo+ICsNCj4gK1tQcm90b2NvbHNdDQo+ICsgIGdFZmlTaW1wbGVGaWxl U3lzdGVtUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiArDQo+ICtbR3Vp ZHNdDQo+ICsgIGdFZmlGaWxlSW5mb0d1aWQNCj4gKw0KPiArW0RlcGV4XQ0KPiArICBnRWZpVmFy aWFibGVXcml0ZUFyY2hQcm90b2NvbEd1aWQNCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGli L1NlcmlhbGl6ZVZhDQo+IHJpYWJsZXNMaWIuaA0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYQ0KPiBy aWFibGVzTGliLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4u N2U3OGNkNGIyMQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVW YQ0KPiByaWFibGVzTGliLmgNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArLyoqIEBmaWxlDQo+ICsg IFNlcmlhbGl6ZSBWYXJpYWJsZXMgTGlicmFyeSBpbXBsZW1lbnRhdGlvbg0KPiArDQo+ICsgIENv cHlyaWdodCAoYykgMjAwOSAtIDIwMTEgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuIDxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgX19TRVJJQUxJWkVfVkFSSUFCTEVT X0xJQl9JTlNUQU5DRV9fDQo+ICsjZGVmaW5lIF9fU0VSSUFMSVpFX1ZBUklBQkxFU19MSUJfSU5T VEFOQ0VfXw0KPiArDQo+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiArDQo+ICsjaW5jbHVkZSA8TGli cmFyeS9CYXNlTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvTWVt b3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvU2VyaWFsaXplVmFyaWFi bGVzTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0K PiArDQo+ICsjZGVmaW5lIFNWX0ZST01fSEFORExFKGEpICAgICAgIENSIChhLCBTVl9JTlNUQU5D RSwgU2lnbmF0dXJlLA0KPiBTVl9TSUdOQVRVUkUpDQo+ICsjZGVmaW5lIFNWX1NJR05BVFVSRSAg ICAgICAgICAgIFNJR05BVFVSRV8zMiAoJ1MnLCAnVicsICdBJywgJ1InKQ0KPiArDQo+ICt0eXBl ZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNp Z25hdHVyZTsNCj4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZl clB0cjsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyU2l6 ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemU7DQo+ ICt9IFNWX0lOU1RBTkNFOw0KPiArDQo+ICsjZW5kaWYNCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEv UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFi bGVzTGliL1NlcmlhbGl6ZVZhDQo+IHJpYWJsZXNMaWIuaW5mDQo+IGIvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliL1NlcmlhbGl6 ZVZhDQo+IHJpYWJsZXNMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAuLjI1OTAxMTkyYjINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJpYWxpemVWYXJpYWJsZXNMaWIv U2VyaWFsaXplVmENCj4gcmlhYmxlc0xpYi5pbmYNCj4gQEAgLTAsMCArMSwzNiBAQA0KPiArIyMg QGZpbGUNCj4gKyMgIFNlcmlhbGl6ZSBWYXJpYWJsZXMgTGlicmFyeSBpbXBsZW1lbnRhdGlvbg0K PiArIw0KPiArIyAgVGhpcyBsaWJyYXJ5IHNlcmlhbGl6ZXMgYW5kIGRlc2VyaWFsaXplcyBVRUZJ IHZhcmlhYmxlcw0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4IEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsjDQo+ICsjIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsjDQo+ICsjIw0KPiArDQo+ ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAx MDAwNQ0KPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBEeGVTZXJpYWxpemVW YXJpYWJsZXNMaWINCj4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gMjY2QTE0 MzQtNkIyMi00NDFGLUE4RDItRDU0QUE4RkRGOTVDDQo+ICsgIE1PRFVMRV9UWVBFICAgICAgICAg ICAgICAgICAgICA9IFVFRklfRFJJVkVSDQo+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAg ICAgICA9IDEuMA0KPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBTZXJpYWxp emVWYXJpYWJsZXNMaWJ8RFhFX0RSSVZFUg0KPiBEWEVfUlVOVElNRV9EUklWRVIgVUVGSV9EUklW RVINCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFNlcmlhbGl6ZVZhcmlhYmxlc0xpYi5jDQo+ICsN Cj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE92bWZQ a2cvT3ZtZlBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBCYXNlTGliDQo+ ICsgIEJhc2VNZW1vcnlMaWINCj4gKyAgRGVidWdMaWINCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxp Yg0KPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNl c1RhYmxlTGliDQo+ICsNCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5oDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNz T3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNjNiNWU1MjU3NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9y bS5oDQo+IEBAIC0wLDAgKzEsMzcgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBUaGlzIGRyaXZlciBl ZmZlY3R1YXRlcyBPVk1GJ3MgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgZXhw b3Nlcw0KPiArICB0aGVtIHZpYSBISUkuDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChDKSAyMDE0LCBS ZWQgSGF0LCBJbmMuDQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9QTEFURk9STV9IXw0KPiArI2Rl ZmluZSBfUExBVEZPUk1fSF8NCj4gKw0KPiArLy8NCj4gKy8vIE1hY3JvIGFuZCB0eXBlIGRlZmlu aXRpb25zIHRoYXQgY29ubmVjdCB0aGUgZm9ybSB3aXRoIHRoZSBISUkgZHJpdmVyIGNvZGUuDQo+ ICsvLw0KPiArI2RlZmluZSBGT1JNU1RBVEVJRF9NQUlOX0ZPUk0gIDENCj4gKyNkZWZpbmUgRk9S TUlEX01BSU5fRk9STSAgICAgICAxDQo+ICsNCj4gKyNkZWZpbmUgUVVFU1RJT05fUkVTX0NVUiAg ICAgICAxDQo+ICsjZGVmaW5lIE1BWFNJWkVfUkVTX0NVUiAgICAgICAxNg0KPiArDQo+ICsjZGVm aW5lIExBQkVMX1JFU19ORVhUICAgICAgICAgMQ0KPiArI2RlZmluZSBRVUVTVElPTl9SRVNfTkVY VCAgICAgIDINCj4gKw0KPiArI2RlZmluZSBRVUVTVElPTl9TQVZFX0VYSVQgICAgIDMNCj4gKyNk ZWZpbmUgUVVFU1RJT05fRElTQ0FSRF9FWElUICA0DQo+ICsNCj4gKy8vDQo+ICsvLyBUaGlzIHN0 cnVjdHVyZSBkZXNjcmliZXMgdGhlIGZvcm0gc3RhdGUuIEl0cyBmaWVsZHMgcmVsYXRlIHN0cmlj dGx5IHRvIHRoZQ0KPiArLy8gdmlzdWFsIHdpZGdldHMgb24gdGhlIGZvcm0uDQo+ICsvLw0KPiAr dHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5UMTYgQ3VycmVudFByZWZlcnJlZFJlc29sdXRpb25b TUFYU0laRV9SRVNfQ1VSXTsNCj4gKyAgVUlOVDMyIE5leHRQcmVmZXJyZWRSZXNvbHV0aW9uOw0K PiArfSBNQUlOX0ZPUk1fU1RBVEU7DQo+ICsNCj4gKyNlbmRpZiAvLyBfUExBVEZPUk1fSF8NCj4g ZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4 ZS9QbGF0Zm9ybS5pbmYNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxh dGZvcm1EeGUvUGxhdGZvcm0uaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAuLjgwNGFiNTk2MTANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uaW5mDQo+IEBAIC0w LDAgKzEsNjUgQEANCj4gKyMjIEBmaWxlDQo+ICsjICBUaGlzIGRyaXZlciBlZmZlY3R1YXRlcyBT aW1pY3MgWDU4IHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kDQo+IGV4cG9zZXMN Cj4gKyMgIHRoZW0gdmlhIEhJSS4NCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoQykgMjAxNCwgUmVk IEhhdCwgSW5jLg0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMCwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIw0KPiArIyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArIw0KPiArIyMNCj4gKw0KPiArW0Rl ZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUN Cj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gUGxhdGZvcm1EeGUNCj4gKyAg RklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gNzRCNjREQzEtQjBCNi00ODUzLUE2QkQt QzY0MjYwNTlBQjFFDQo+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IERYRV9E UklWRVINCj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIEVO VFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICA9IFBsYXRmb3JtSW5pdA0KPiArICBVTkxPQURf SU1BR0UgICAgICAgICAgICAgICAgICAgPSBQbGF0Zm9ybVVubG9hZA0KPiArDQo+ICtbU291cmNl c10NCj4gKyAgUGxhdGZvcm0uYw0KPiArICBQbGF0Zm9ybS51bmkNCj4gKyAgUGxhdGZvcm1Db25m aWcuYw0KPiArICBQbGF0Zm9ybUZvcm1zLnZmcg0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1k ZVBrZy9NZGVQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsg IFNpbWljc09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVjDQo+ICsgIE1pblBsYXRm b3JtUGtnL01pblBsYXRmb3JtUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsg IEJhc2VMaWINCj4gKyAgQmFzZU1lbW9yeUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBEZXZpY2VQ YXRoTGliDQo+ICsgIEhpaUxpYg0KPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIFByaW50 TGliDQo+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiArICBVZWZpSGlpU2VydmljZXNM aWINCj4gKyAgVWVmaUxpYg0KPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gKyAg VWVmaURyaXZlckVudHJ5UG9pbnQNCj4gKyAgRHhlU2VydmljZXNUYWJsZUxpYg0KPiArDQo+ICtb UGNkXQ0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmlkZW9Ib3Jpem9u dGFsUmVzb2x1dGlvbg0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmlk ZW9WZXJ0aWNhbFJlc29sdXRpb24NCj4gKw0KPiArW1Byb3RvY29sc10NCj4gKyAgZ0VmaURldmlj ZVBhdGhQcm90b2NvbEd1aWQgICAgICAjIyBQUk9EVUNFUw0KPiArICBnRWZpR3JhcGhpY3NPdXRw dXRQcm90b2NvbEd1aWQgICMjIENPTlNVTUVTDQo+ICsgIGdFZmlIaWlDb25maWdBY2Nlc3NQcm90 b2NvbEd1aWQgIyMgUFJPRFVDRVMNCj4gKw0KPiArW0d1aWRzXQ0KPiArICBnRWZpSWZyVGlhbm9H dWlkDQo+ICsgIGdTaW1pY3NYNThQbGF0Zm9ybUNvbmZpZ0d1aWQNCj4gKw0KPiArW0RlcGV4XQ0K PiArICBnRWZpSGlpQ29uZmlnUm91dGluZ1Byb3RvY29sR3VpZCAgQU5EDQo+ICsgIGdFZmlIaWlE YXRhYmFzZVByb3RvY29sR3VpZCAgICAgICBBTkQNCj4gKyAgZ0VmaVZhcmlhYmxlQXJjaFByb3Rv Y29sR3VpZCAgICAgIEFORA0KPiArICBnRWZpVmFyaWFibGVXcml0ZUFyY2hQcm90b2NvbEd1aWQN Cj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9y bUR4ZS9QbGF0Zm9ybS51bmkNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv UGxhdGZvcm1EeGUvUGxhdGZvcm0udW5pDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAuLjZkNjhjYmViNGYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0udW5pDQo+IEBA IC0wLDAgKzEsMzEgQEANCj4gKy8vICorKw0KPiArLy8NCj4gKy8vIENvcHlyaWdodCAoQykgMjAx NCwgUmVkIEhhdCwgSW5jLg0KPiArLy8gQ29weXJpZ2h0IChjKSAyMDA5LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsvLw0KPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKy8vDQo+ICsvLyBNb2R1bGUgTmFt ZToNCj4gKy8vDQo+ICsvLyAgIFBsYXRmb3JtLnVuaQ0KPiArLy8NCj4gKy8vIEFic3RyYWN0Og0K PiArLy8NCj4gKy8vICAgU3RyaW5nIGRlZmluaXRpb25zIGZvciBQbGF0Zm9ybUZvcm1zLnZmcg0K PiArLy8NCj4gKy8vIC0tKi8NCj4gKw0KPiArLz0jDQo+ICsNCj4gKyNsYW5nZGVmIGVuLVVTICJF bmdsaXNoIg0KPiArDQo+ICsjc3RyaW5nIFNUUl9GT1JNU0VUX1RJVExFICAgICAgICAjbGFuZ3Vh Z2UgZW4tVVMgIlFTUCBQbGF0Zm9ybQ0KPiBDb25maWd1cmF0aW9uIg0KPiArI3N0cmluZyBTVFJf Rk9STVNFVF9IRUxQICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJDaGFuZ2UgdmFyaW91cyBRU1AN Cj4gcGxhdGZvcm0gc2V0dGluZ3MuIg0KPiArI3N0cmluZyBTVFJfTUFJTl9GT1JNX1RJVExFICAg ICAgI2xhbmd1YWdlIGVuLVVTICJRU1AgU2V0dGluZ3MiDQo+ICsjc3RyaW5nIFNUUl9SRVNfQ1VS ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlByZWZlcnJlZCBSZXNvbHV0aW9uIGF0IE5l eHQNCj4gQm9vdCINCj4gKyNzdHJpbmcgU1RSX1JFU19DVVJfSEVMUCAgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAiVGhlIHByZWZlcnJlZCByZXNvbHV0aW9uIG9mDQo+IHRoZSBHcmFwaGljcyBDb25z b2xlIGF0IG5leHQgYm9vdC4gSXQgbWlnaHQgYmUgdW5zZXQsIG9yIGV2ZW4gaW52YWxpZCAoaGVu Y2UNCj4gaWdub3JlZCkgd3J0LiB0aGUgdmlkZW8gUkFNIHNpemUuIg0KPiArI3N0cmluZyBTVFJf UkVTX05FWFQgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJDaGFuZ2UgUHJlZmVycmVkIFJl c29sdXRpb24NCj4gZm9yIE5leHQgQm9vdCINCj4gKyNzdHJpbmcgU1RSX1JFU19ORVhUX0hFTFAg ICAgICAgICNsYW5ndWFnZSBlbi1VUyAiWW91IGNhbiBzcGVjaWZ5IGEgbmV3DQo+IHByZWZlcmVu Y2UgZm9yIHRoZSBHcmFwaGljcyBDb25zb2xlIGhlcmUuIFRoZSBsaXN0IGlzIGZpbHRlcmVkIGFn YWluc3QgdGhlIHZpZGVvDQo+IFJBTSBzaXplLiINCj4gKyNzdHJpbmcgU1RSX1NBVkVfRVhJVCAg ICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiQ29tbWl0IENoYW5nZXMgYW5kIEV4aXQiDQo+ICsj c3RyaW5nIFNUUl9ESVNDQVJEX0VYSVQgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIkRpc2NhcmQg Q2hhbmdlcyBhbmQgRXhpdCINCj4gKw0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmgNCj4gYi9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5kM2YwNDFkZGVhDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmgNCj4gQEAgLTAsMCArMSw1MSBAQA0KPiArLyoq IEBmaWxlDQo+ICsgIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBzZXJpYWxpemluZyAocGVyc2lzdGVu dGx5IHN0b3JpbmcpIGFuZCBkZXNlcmlhbGl6aW5nDQo+ICsgIE9WTUYncyBwbGF0Zm9ybSBjb25m aWd1cmF0aW9uLg0KPiArDQo+ICsgIENvcHlyaWdodCAoQykgMjAxNCwgUmVkIEhhdCwgSW5jLg0K PiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfUExBVEZPUk1fQ09ORklHX0hfDQo+ICsjZGVmaW5lIF9Q TEFURk9STV9DT05GSUdfSF8NCj4gKw0KPiArI2luY2x1ZGUgPEJhc2UuaD4NCj4gKw0KPiArLy8N Cj4gKy8vIFRoaXMgc3RydWN0dXJlIHBhcnRpY2lwYXRlcyBpbiBkcml2ZXIgY29uZmlndXJhdGlv bi4gSXQgZG9lcyBub3QNCj4gKy8vIChuZWNlc3NhcmlseSkgcmVmbGVjdCB0aGUgd2lyZSBmb3Jt YXQgaW4gdGhlIHBlcnNpc3RlbnQgc3RvcmUuDQo+ICsvLw0KPiArI3ByYWdtYSBwYWNrKDEpDQo+ ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIC8vDQo+ICsgIC8vIHByZWZlcnJlZCBncmFwaGljcyBj b25zb2xlIHJlc29sdXRpb24gd2hlbiBib290aW5nDQo+ICsgIC8vDQo+ICsgIFVJTlQzMiBIb3Jp em9udGFsUmVzb2x1dGlvbjsNCj4gKyAgVUlOVDMyIFZlcnRpY2FsUmVzb2x1dGlvbjsNCj4gK30g UExBVEZPUk1fQ09ORklHOw0KPiArI3ByYWdtYSBwYWNrKCkNCj4gKw0KPiArLy8NCj4gKy8vIFBs ZWFzZSBzZWUgdGhlIEFQSSBkb2N1bWVudGF0aW9uIG5lYXIgdGhlIGZ1bmN0aW9uIGRlZmluaXRp b25zLg0KPiArLy8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArUGxhdGZvcm1Db25maWdT YXZlICgNCj4gKyAgSU4gUExBVEZPUk1fQ09ORklHICpQbGF0Zm9ybUNvbmZpZw0KPiArICApOw0K PiArDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1BsYXRmb3JtQ29uZmlnTG9hZCAoDQo+ ICsgIE9VVCBQTEFURk9STV9DT05GSUcgKlBsYXRmb3JtQ29uZmlnLA0KPiArICBPVVQgVUlOVDY0 ICAgICAgICAgICpPcHRpb25hbEVsZW1lbnRzDQo+ICsgICk7DQo+ICsNCj4gKy8vDQo+ICsvLyBG ZWF0dXJlIGZsYWdzIGZvciBPcHRpb25hbEVsZW1lbnRzLg0KPiArLy8NCj4gKyNkZWZpbmUgUExB VEZPUk1fQ09ORklHX0ZfR1JBUEhJQ1NfUkVTT0xVVElPTiBCSVQwDQo+ICsjZGVmaW5lIFBMQVRG T1JNX0NPTkZJR19GX0RPV05HUkFERSAgICAgICAgICAgQklUNjMNCj4gKw0KPiArI2VuZGlmIC8v IF9QTEFURk9STV9DT05GSUdfSF8NCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUZvcm1zLnZmcg0KPiBiL1BsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUZvcm1zLnZmcg0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi4xYzAyNTY1ZWJiDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L1BsYXRmb3JtRHhlL1BsYXRmb3JtRm9ybXMudmZyDQo+IEBAIC0wLDAgKzEsNjcgQEANCj4gKy8v ICorKw0KPiArLy8NCj4gKy8vIENvcHlyaWdodCAoQykgMjAxNCwgUmVkIEhhdCwgSW5jLg0KPiAr Ly8gQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiArLy8NCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsvLw0KPiArLy8gTW9kdWxlIE5hbWU6DQo+ICsvLw0KPiAr Ly8gICBQbGF0Zm9ybUZvcm1zLnZmcg0KPiArLy8NCj4gKy8vIEFic3RyYWN0Og0KPiArLy8NCj4g Ky8vICAgRm9ybSBkZWZpbml0aW9ucyBmb3IgZXhwb3Npbmcgc29tZSBvZiBPVk1GJ3MgcGxhdGZv cm0ga25vYnMgdmlhIEhJSS4NCj4gKy8vDQo+ICsvLyAtLSovDQo+ICsNCj4gKyNpbmNsdWRlIDxH dWlkL1NpbWljc1g1OFBsYXRmb3JtQ29uZmlnLmg+DQo+ICsjaW5jbHVkZSAiUGxhdGZvcm0uaCIN Cj4gKw0KPiArZm9ybXNldA0KPiArICBndWlkICA9IFNJTUlDU1g1OF9QTEFURk9STV9DT05GSUdf R1VJRCwNCj4gKyAgdGl0bGUgPSBTVFJJTkdfVE9LRU4oU1RSX0ZPUk1TRVRfVElUTEUpLA0KPiAr ICBoZWxwICA9IFNUUklOR19UT0tFTihTVFJfRk9STVNFVF9IRUxQKSwNCj4gKw0KPiArICB2YXJz dG9yZSBNQUlOX0ZPUk1fU1RBVEUsDQo+ICsgICAgdmFyaWQgPSBGT1JNU1RBVEVJRF9NQUlOX0ZP Uk0sDQo+ICsgICAgbmFtZSAgPSBNYWluRm9ybVN0YXRlLA0KPiArICAgIGd1aWQgID0gU0lNSUNT WDU4X1BMQVRGT1JNX0NPTkZJR19HVUlEOw0KPiArDQo+ICsgIGZvcm0NCj4gKyAgICBmb3JtaWQg PSBGT1JNSURfTUFJTl9GT1JNLA0KPiArICAgIHRpdGxlICA9IFNUUklOR19UT0tFTihTVFJfTUFJ Tl9GT1JNX1RJVExFKTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gRGlzcGxheSB0aGUgY3Vy cmVudCBwcmVmZXJlbmNlIGluIGEgcmVhZC1vbmx5IHN0cmluZyBmaWVsZC4NCj4gKyAgICAvLw0K PiArICAgIHN0cmluZw0KPiArICAgICAgdmFyaWQgICAgICA9IE1haW5Gb3JtU3RhdGUuQ3VycmVu dFByZWZlcnJlZFJlc29sdXRpb24sDQo+ICsgICAgICBxdWVzdGlvbmlkID0gUVVFU1RJT05fUkVT X0NVUiwNCj4gKyAgICAgIHByb21wdCAgICAgPSBTVFJJTkdfVE9LRU4oU1RSX1JFU19DVVIpLA0K PiArICAgICAgaGVscCAgICAgICA9IFNUUklOR19UT0tFTihTVFJfUkVTX0NVUl9IRUxQKSwNCj4g KyAgICAgIGZsYWdzICAgICAgPSBSRUFEX09OTFksDQo+ICsgICAgICBtaW5zaXplICAgID0gMCwN Cj4gKyAgICAgIG1heHNpemUgICAgPSBNQVhTSVpFX1JFU19DVVIsDQo+ICsgICAgZW5kc3RyaW5n Ow0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBXZSdsbCBkeW5hbWljYWxseSBnZW5lcmF0ZSBh IG9uZS1vZi1tYW55IHNlbGVjdGlvbiBhdCB0aGlzIGxhYmVsLg0KPiArICAgIC8vDQo+ICsgICAg bGFiZWwgTEFCRUxfUkVTX05FWFQ7DQo+ICsNCj4gKyAgICB0ZXh0DQo+ICsgICAgICBoZWxwICA9 IFNUUklOR19UT0tFTihTVFJfU0FWRV9FWElUKSwNCj4gKyAgICAgIHRleHQgID0gU1RSSU5HX1RP S0VOKFNUUl9TQVZFX0VYSVQpLA0KPiArICAgICAgZmxhZ3MgPSBJTlRFUkFDVElWRSwNCj4gKyAg ICAgIGtleSAgID0gUVVFU1RJT05fU0FWRV9FWElUOw0KPiArDQo+ICsgICAgdGV4dA0KPiArICAg ICAgaGVscCAgPSBTVFJJTkdfVE9LRU4oU1RSX0RJU0NBUkRfRVhJVCksDQo+ICsgICAgICB0ZXh0 ICA9IFNUUklOR19UT0tFTihTVFJfRElTQ0FSRF9FWElUKSwNCj4gKyAgICAgIGZsYWdzID0gSU5U RVJBQ1RJVkUsDQo+ICsgICAgICBrZXkgICA9IFFVRVNUSU9OX0RJU0NBUkRfRVhJVDsNCj4gKw0K PiArICBlbmRmb3JtOw0KPiArDQo+ICtlbmRmb3Jtc2V0Ow0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuaA0KPiBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9DbW9zLmgNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNjE2ZDJkNzRjYg0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9y bVBlaS9DbW9zLmgNCj4gQEAgLTAsMCArMSw1MCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFBDL0FU IENNT1MgYWNjZXNzIHJvdXRpbmVzDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAw OSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4g Kw0KPiArI2lmbmRlZiBfX0NNT1NfSF9fDQo+ICsjZGVmaW5lIF9fQ01PU19IX18NCj4gKw0KPiAr LyoqDQo+ICsgIFJlYWRzIDgtYml0cyBvZiBDTU9TIGRhdGEuDQo+ICsNCj4gKyAgUmVhZHMgdGhl IDgtYml0cyBvZiBDTU9TIGRhdGEgYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSBJbmRleC4N Cj4gKyAgVGhlIDgtYml0IHJlYWQgdmFsdWUgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgQHBhcmFt ICBJbmRleCAgVGhlIENNT1MgbG9jYXRpb24gdG8gcmVhZC4NCj4gKw0KPiArICBAcmV0dXJuIFRo ZSB2YWx1ZSByZWFkLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQ4DQo+ICtFRklBUEkNCj4gK0Ntb3NS ZWFkOCAoDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleA0KPiAr ICApOw0KPiArDQo+ICsvKioNCj4gKyAgV3JpdGVzIDgtYml0cyBvZiBDTU9TIGRhdGEuDQo+ICsN Cj4gKyAgV3JpdGVzIDgtYml0cyBvZiBDTU9TIGRhdGEgdG8gdGhlIGxvY2F0aW9uIHNwZWNpZmll ZCBieSBJbmRleA0KPiArICB3aXRoIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgVmFsdWUgYW5kIHJl dHVybnMgVmFsdWUuDQo+ICsNCj4gKyAgQHBhcmFtICBJbmRleCAgVGhlIENNT1MgbG9jYXRpb24g dG8gd3JpdGUuDQo+ICsgIEBwYXJhbSAgVmFsdWUgIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDTU9T Lg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ01PUy4NCj4gKw0KPiAr KiovDQo+ICtVSU5UOA0KPiArRUZJQVBJDQo+ICtDbW9zV3JpdGU4ICgNCj4gKyAgSU4gICAgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4LA0KPiArICBJTiAgICAgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgVmFsdWUNCj4gKyAgKTsNCj4gKw0KPiArDQo+ICsjZW5kaWYNCj4gKw0K PiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3Jt UGVpL1BsYXRmb3JtLmgNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxh dGZvcm1QZWkvUGxhdGZvcm0uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwLi41YjFhOWI1ZjU3DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmgNCj4gQEAgLTAsMCAr MSw5MyBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFBsYXRmb3JtIFBFSSBtb2R1bGUgaW5jbHVkZSBm aWxlLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTYgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgX1BM QVRGT1JNX1BFSV9IX0lOQ0xVREVEXw0KPiArI2RlZmluZSBfUExBVEZPUk1fUEVJX0hfSU5DTFVE RURfDQo+ICsNCj4gK1ZPSUQNCj4gK0FkZElvTWVtb3J5QmFzZVNpemVIb2IgKA0KPiArICBFRklf UEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gKyAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICAgIE1lbW9yeVNpemUNCj4gKyAgKTsNCj4gKw0KPiArVk9JRA0KPiArQWRkSW9N ZW1vcnlSYW5nZUhvYiAoDQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlC YXNlLA0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5TGltaXQNCj4gKyAg KTsNCj4gKw0KPiArVk9JRA0KPiArQWRkTWVtb3J5QmFzZVNpemVIb2IgKA0KPiArICBFRklfUEhZ U0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gKyAgVUlOVDY0ICAgICAgICAgICAg ICAgICAgICAgIE1lbW9yeVNpemUNCj4gKyAgKTsNCj4gKw0KPiArVk9JRA0KPiArQWRkTWVtb3J5 UmFuZ2VIb2IgKA0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwN Cj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUxpbWl0DQo+ICsgICk7DQo+ ICsNCj4gK1ZPSUQNCj4gK0FkZFVudGVzdGVkTWVtb3J5QmFzZVNpemVIb2IgKA0KPiArICBFRklf UEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gKyAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICAgIE1lbW9yeVNpemUNCj4gKyAgKTsNCj4gKw0KPiArVk9JRA0KPiArQWRkUmVz ZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoDQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAg ICBNZW1vcnlCYXNlLA0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6 ZSwNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIENhY2hlYWJsZQ0KPiArICApOw0K PiArDQo+ICtWT0lEDQo+ICtBZGRyZXNzV2lkdGhJbml0aWFsaXphdGlvbiAoDQo+ICsgIFZPSUQN Cj4gKyAgKTsNCj4gKw0KPiArVk9JRA0KPiArWDU4VHNlZ01ieXRlc0luaXRpYWxpemF0aW9uICgN Cj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtQdWJsaXNoUGVpTWVt b3J5ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICtVSU5UMzINCj4gK0dldFN5c3RlbU1l bW9yeVNpemVCZWxvdzRnYiAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArVk9JRA0KPiAr SW5pdGlhbGl6ZVJhbVJlZ2lvbnMgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9T VEFUVVMNCj4gK1BlaUZ2SW5pdGlhbGl6YXRpb24gKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsN Cj4gK1ZPSUQNCj4gK0luc3RhbGxGZWF0dXJlQ29udHJvbENhbGxiYWNrICgNCj4gKyAgVk9JRA0K PiArICApOw0KPiArDQo+ICtleHRlcm4gRUZJX0JPT1RfTU9ERSBtQm9vdE1vZGU7DQo+ICsNCj4g K2V4dGVybiBCT09MRUFOIG1TM1N1cHBvcnRlZDsNCj4gKw0KPiArZXh0ZXJuIFVJTlQ4IG1QaHlz TWVtQWRkcmVzc1dpZHRoOw0KPiArDQo+ICtleHRlcm4gVUlOVDMyIG1NYXhDcHVDb3VudDsNCj4g Kw0KPiArZXh0ZXJuIFVJTlQxNiBtSG9zdEJyaWRnZURldklkOw0KPiArI2VuZGlmIC8vIF9QTEFU Rk9STV9QRUlfSF9JTkNMVURFRF8NCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5pbmYNCj4gYi9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm1QZWkuaW5mDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmViODA0OGM2NTUNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxh dGZvcm1QZWkvUGxhdGZvcm1QZWkuaW5mDQo+IEBAIC0wLDAgKzEsMTA5IEBADQo+ICsjIyBAZmls ZQ0KPiArIyAgUGxhdGZvcm0gUEVJIGRyaXZlcg0KPiArIw0KPiArIyAgVGhpcyBtb2R1bGUgcHJv dmlkZXMgcGxhdGZvcm0gc3BlY2lmaWMgZnVuY3Rpb24gdG8gZGV0ZWN0IGJvb3QgbW9kZS4NCj4g KyMgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4gPEJSPg0KPiArIw0KPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiArIw0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElO Rl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCj4gKyAgQkFTRV9OQU1F ICAgICAgICAgICAgICAgICAgICAgID0gUGxhdGZvcm1QZWkNCj4gKyAgRklMRV9HVUlEICAgICAg ICAgICAgICAgICAgICAgID0gMDUxMTYyMTgtZjlmMS00MWY4LThkMTctYzIyMDcwMDZmZmZmDQo+ ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFBFSU0NCj4gKyAgVkVSU0lPTl9T VFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAg ICAgICAgICA9IEluaXRpYWxpemVQbGF0Zm9ybQ0KPiArDQo+ICsjDQo+ICsjIFRoZSBmb2xsb3dp bmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkg dGhlIGJ1aWxkDQo+IHRvb2xzLg0KPiArIw0KPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAg ICAgICAgPSBJQTMyIFg2NCBFQkMNCj4gKyMNCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIENtb3Mu Yw0KPiArICBGZWF0dXJlQ29udHJvbC5jDQo+ICsgIEZ2LmMNCj4gKyAgTWVtRGV0ZWN0LmMNCj4g KyAgUGxhdGZvcm0uYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVj DQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsgIFVlZmlDcHVQa2cvVWVm aUNwdVBrZy5kZWMNCj4gKyAgU2ltaWNzT3BlbkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5k ZWMNCj4gKyAgTWluUGxhdGZvcm1Qa2cvTWluUGxhdGZvcm1Qa2cuZGVjDQo+ICsgIE92bWZQa2cv T3ZtZlBrZy5kZWMNCj4gKw0KPiArW0d1aWRzXQ0KPiArICBnRWZpTWVtb3J5VHlwZUluZm9ybWF0 aW9uR3VpZA0KPiArICBnRWZpU21tUGVpU21yYW1NZW1vcnlSZXNlcnZlR3VpZCAgICAgICAgICAg ICAgIyMgQ09OU1VNRVMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBCYXNlTGliDQo+ ICsgIERlYnVnTGliDQo+ICsgIEhvYkxpYg0KPiArICBJb0xpYg0KPiArICBQY2lMaWINCj4gKyAg UGVpUmVzb3VyY2VQdWJsaWNhdGlvbkxpYg0KPiArICBQZWlTZXJ2aWNlc0xpYg0KPiArICBQZWlT ZXJ2aWNlc1RhYmxlUG9pbnRlckxpYg0KPiArICBQZWltRW50cnlQb2ludA0KPiArICBNdHJyTGli DQo+ICsgIFBjZExpYg0KPiArDQo+ICtbUGNkXQ0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFj ZUd1aWQuUGNkU2ltaWNzUGVpTWVtRnZCYXNlDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNl R3VpZC5QY2RTaW1pY3NQZWlNZW1GdlNpemUNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VH dWlkLlBjZFNpbWljc0R4ZU1lbUZ2QmFzZQ0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1 aWQuUGNkU2ltaWNzRHhlTWVtRnZTaXplDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3Vp ZC5QY2RTaW1pY3NMb2NrQm94U3RvcmFnZUJhc2UNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZFNpbWljc0xvY2tCb3hTdG9yYWdlU2l6ZQ0KPiArICBnU2ltaWNzWDU4UGtnVG9r ZW5TcGFjZUd1aWQuUGNkU2ltaWNzUGVpTWVtRnZCYXNlDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tl blNwYWNlR3VpZC5QY2RTaW1pY3NQZWlNZW1GdlNpemUNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2Vu U3BhY2VHdWlkLlBjZFNpbWljc0R4ZU1lbUZ2QmFzZQ0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5T cGFjZUd1aWQuUGNkU2ltaWNzRHhlTWVtRnZTaXplDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNw YWNlR3VpZC5QY2RTaW1pY3NTZWNQYWdlVGFibGVzQmFzZQ0KPiArICBnU2ltaWNzWDU4UGtnVG9r ZW5TcGFjZUd1aWQuUGNkU2ltaWNzU2VjUGVpVGVtcFJhbUJhc2UNCj4gKyAgZ1NpbWljc1g1OFBr Z1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc1NlY1BlaVRlbXBSYW1TaXplDQo+ICsgIGdFZmlNZGVQ a2dUb2tlblNwYWNlR3VpZC5QY2RHdWlkZWRFeHRyYWN0SGFuZGxlclRhYmxlQWRkcmVzcw0KPiAr ICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkR3VpZGVkRXh0cmFjdEhhbmRsZXJUYWJs ZVNpemUNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0RlY29tcHJl c3Npb25TY3JhdGNoRW5kDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1p Y3NYNThIb3N0QnJpZGdlUGNpRGV2SWQNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlk LlBjZFBjaUlvQmFzZQ0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpSW9T aXplDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvMzJCYXNlDQo+ ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvMzJTaXplDQo+ICsgIGdT aW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvNjRCYXNlDQo+ICsgIGdTaW1pY3NY NThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvNjRTaXplDQo+ICsgIGdTaW1pY3NYNThQa2dU b2tlblNwYWNlR3VpZC5QY2RTaW1pY3NEZWNvbXByZXNzaW9uU2NyYXRjaEVuZA0KPiArICBnU2lt aWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkWDU4VHNlZ01ieXRlcw0KPiArICBnU2ltaWNzWDU4 UGtnVG9rZW5TcGFjZUd1aWQuUGNkU21tU21yYW1SZXF1aXJlDQo+ICsgIGdFZmlNZGVNb2R1bGVQ a2dUb2tlblNwYWNlR3VpZC5QY2RWYXJpYWJsZVN0b3JlU2l6ZQ0KPiArICBnRWZpTWRlTW9kdWxl UGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUNCj4gKyAgZ0Vm aU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZTdG9yYWdlVmFyaWFibGVTaXpl DQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RFbXVWYXJpYWJsZU52U3Rv cmVSZXNlcnZlZA0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRHhlSXBs U3dpdGNoVG9Mb25nTW9kZQ0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNk VXNlMUdQYWdlVGFibGUNCj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEFj cGlTM0VuYWJsZQ0KPiArICBnVWVmaUNwdVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdUxvY2FsQXBp Y0Jhc2VBZGRyZXNzDQo+ICsgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3B1TWF4TG9n aWNhbFByb2Nlc3Nvck51bWJlcg0KPiArICBnVWVmaUNwdVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENw dUFwSW5pdFRpbWVPdXRJbk1pY3JvU2Vjb25kcw0KPiArICBnVWVmaUNwdVBrZ1Rva2VuU3BhY2VH dWlkLlBjZENwdUFwU3RhY2tTaXplDQo+ICsgIGdNaW5QbGF0Zm9ybVBrZ1Rva2VuU3BhY2VHdWlk LlBjZEZsYXNoQXJlYUJhc2VBZGRyZXNzICAjIyBDT05TVU1FUw0KPiArICBnTWluUGxhdGZvcm1Q a2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaEFyZWFTaXplICAgICAgICAgIyMgQ09OU1VNRVMNCj4g KyAgZ01pblBsYXRmb3JtUGtnVG9rZW5TcGFjZUd1aWQuUGNkSW9BcGljSWQNCj4gKw0KPiArW0Zp eGVkUGNkXQ0KPiArICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpRXhwcmVzc0Jhc2VB ZGRyZXNzDQo+ICsNCj4gKw0KPiArW1BwaXNdDQo+ICsgIGdFZmlQZWlNYXN0ZXJCb290TW9kZVBw aUd1aWQNCj4gKyAgZ0VmaVBlaU1wU2VydmljZXNQcGlHdWlkDQo+ICsNCj4gK1tEZXBleF0NCj4g KyAgVFJVRQ0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvbg0KPiBQ b2xpY3lJbml0TGliLmluZg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q b2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExpYi9TaWxpY29uDQo+IFBvbGljeUluaXRM aWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmI5YmNi NWQyYmQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvbg0K PiBQb2xpY3lJbml0TGliLmluZg0KPiBAQCAtMCwwICsxLDM4IEBADQo+ICsjIyBAZmlsZQ0KPiAr Iw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuIDxCUj4NCj4gKyMNCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gKyMNCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZf VkVSU0lPTiAgICAgICAgICA9IDB4MDAwMTAwMDUNCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAg PSBTaWxpY29uUG9saWN5SW5pdExpYg0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICA9IEI0OTRE RjM5LUE1RjgtNDhBMS1CMkQwLUVGNTIzQUQ5MUM1NQ0KPiArICBNT0RVTEVfVFlQRSAgICAgICAg ICA9IFBFSU0NCj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9D TEFTUyAgICAgICAgPSBTaWxpY29uUG9saWN5SW5pdExpYg0KPiArDQo+ICtbU291cmNlc10NCj4g KyAgU2lsaWNvblBvbGljeUluaXRMaWIuYw0KPiArDQo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gIyMjIyMjIyMjIyMjIyMj IyMjIyMNCj4gKyMNCj4gKyMgUGFja2FnZSBEZXBlbmRlbmN5IFNlY3Rpb24gLSBsaXN0IG9mIFBh Y2thZ2UgZmlsZXMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yDQo+ICsjICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhpcyBtb2R1bGUuDQo+ICsjDQo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gIyMjIyMjIyMjIyMjIyMj IyMjIyMNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKw0KPiArW0xp YnJhcnlDbGFzc2VzXQ0KPiArICBCYXNlTWVtb3J5TGliDQo+ICsgIEJhc2VMaWINCj4gKyAgRGVi dWdMaWINCj4gKyAgRGVidWdQcmludEVycm9yTGV2ZWxMaWINCj4gKyAgSG9iTGliDQo+ICsgIElv TGliDQo+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gKyAgUGVpU2VydmljZXNMaWINCj4gKw0K PiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGlj eS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lVcGRhdGVMaWIvU2lsDQo+IGljb25Qb2xpY3lVcGRhdGVM aWIuaW5mDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJy YXJ5L1NpbGljb25Qb2xpY3lVcGRhdGVMaWIvU2lsDQo+IGljb25Qb2xpY3lVcGRhdGVMaWIuaW5m DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmRhMTY1YWM5NDcN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWwNCj4gaWNvblBv bGljeVVwZGF0ZUxpYi5pbmYNCj4gQEAgLTAsMCArMSwzNSBAQA0KPiArIyMgQGZpbGUNCj4gKyMN Cj4gKyMgQ29weXJpZ2h0IChjKSAyMDE4IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLiA8QlI+DQo+ICsjDQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ICsjDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZF UlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiArICBCQVNFX05BTUUgICAg ICAgICAgICAgICAgICAgICAgPSBTaWxpY29uUG9saWN5VXBkYXRlTGliDQo+ICsgIEZJTEVfR1VJ RCAgICAgICAgICAgICAgICAgICAgICA9IDZFQTk1ODVDLTNDMTUtNDdkYS05RkZDLTI1RTlFNEVB NEQwQw0KPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBQRUlNDQo+ICsgIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiArICBMSUJSQVJZX0NMQVNTICAg ICAgICAgICAgICAgICAgPSBTaWxpY29uUG9saWN5VXBkYXRlTGliDQo+ICsNCj4gK1tTb3VyY2Vz XQ0KPiArICBTaWxpY29uUG9saWN5VXBkYXRlTGliLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiAr ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0K PiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIEhvYkxpYg0KPiArICBJb0xpYg0KPiArICBQ Y2RMaWINCj4gKw0KPiArW1BjZF0NCj4gKw0KPiArW0ZpeGVkUGNkXQ0KPiArDQo+ICtbUHBpc10N Cj4gKw0KPiArW0d1aWRzXQ0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5kZWMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvU2ltaWNzT3BlbkJvYXJkUGtnLmRlYw0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi4xN2M4N2FjYThjDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBr Zy5kZWMNCj4gQEAgLTAsMCArMSwxNjggQEANCj4gKyMjIEBmaWxlDQo+ICsjICBFRkkvRnJhbWV3 b3JrIFNpbWljcyBYNTggcGxhdGZvcm0NCj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSAyMDE4IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsjDQo+ICsjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsjDQo+ICsjIw0K PiArDQo+ICtbRGVmaW5lc10NCj4gKyAgREVDX1NQRUNJRklDQVRJT04gICAgICAgICAgICAgID0g MHgwMDAxMDAwNQ0KPiArICBQQUNLQUdFX05BTUUgICAgICAgICAgICAgICAgICAgPSBTaW1pY3NY NThQa2cNCj4gKyAgUEFDS0FHRV9HVUlEICAgICAgICAgICAgICAgICAgID0gRTZBMDNFMEQtNTk0 NC00ZGM2LTkyOTItMDkwRDYwOUVERDNBDQo+ICsgIFBBQ0tBR0VfVkVSU0lPTiAgICAgICAgICAg ICAgICA9IDAuMQ0KPiArDQo+ICtbSW5jbHVkZXNdDQo+ICsgIEluY2x1ZGUNCj4gKw0KPiArW0d1 aWRzXQ0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQgICA9IHsweDViMjc2ZDIwLCAw eDM3ZDAsIDB4NGFmMCwgezB4OGQsDQo+IDB4MDQsIDB4NDcsIDB4OTEsIDB4MmIsIDB4N2MsIDB4 MWQsIDB4NDR9fQ0KPiArICBnU2ltaWNzWDU4UGxhdGZvcm1Db25maWdHdWlkICA9IHsweGVlZDM1 ZjU3LCAweDRmZjIsIDB4NDI0NCwgezB4YjgsIDB4M2EsDQo+IDB4ZWEsIDB4NzEsIDB4NWYsIDB4 ZDMsIDB4NTksIDB4YTV9fQ0KPiArDQo+ICtbUHJvdG9jb2xzXQ0KPiArICBnRWZpTGVnYWN5ODI1 OVByb3RvY29sR3VpZCAgICAgICAgICA9IHsweDM4MzIxZGJhLCAweDRmZTAsIDB4NGUxNywgezB4 OGEsDQo+IDB4ZWMsIDB4NDEsIDB4MzAsIDB4NTUsIDB4ZWEsIDB4ZWQsIDB4YzF9fQ0KPiArICBn RWZpSXNhQWNwaVByb3RvY29sR3VpZCAgICAgICAgICAgICA9IHsweDY0YTg5MmRjLCAweDU1NjEs IDB4NDUzNiwgezB4OTIsIDB4YzcsDQo+IDB4NzksIDB4OWIsIDB4ZmMsIDB4MTgsIDB4MzMsIDB4 NTV9fQ0KPiArICBnRWZpSXNhSW9Qcm90b2NvbEd1aWQgICAgICAgICAgICAgICA9IHsweDdlZTJi ZDQ0LCAweDNkYTAsIDB4MTFkNCwgezB4OWEsIDB4MzgsDQo+IDB4MCwgMHg5MCwgMHgyNywgMHgz ZiwgMHhjMSwgMHg0ZH19DQo+ICsNCj4gK1tQY2RzRml4ZWRBdEJ1aWxkXQ0KPiArICBnU2ltaWNz WDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzUGVpTWVtRnZCYXNlfDB4MHxVSU5UMzJ8MA0K PiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzUGVpTWVtRnZTaXplfDB4 MHxVSU5UMzJ8MQ0KPiArDQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NE eGVNZW1GdkJhc2V8MHgwfFVJTlQzMnwweDE1DQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNl R3VpZC5QY2RTaW1pY3NEeGVNZW1GdlNpemV8MHgwfFVJTlQzMnwweDE2DQo+ICsNCj4gKyAgI1RP RE86IFJlbW92ZSB0aGVzZSB0d28gd2hlbiB3ZSBpbnRlZ3JhdGUgbmV3IFBsYXRmb3JtUGVpDQo+ ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc01lbUZ2QmFzZXwweDAw ODAwMDAwfFVJTlQzMnwyDQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNp bWljc01lbUZ2U2l6ZXwweDAwNTAwMDAwfFVJTlQzMnwzDQo+ICsNCj4gKyAgIyMgVGhlIGZvbGxv d2luZyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBtYW55IG1lZ2FieXRlcyB3ZSBjb25maWd1cmUgYXMg VFNFRw0KPiBvbg0KPiArICAjICBYNTgsIGZvciBTTVJBTSBwdXJwb3Nlcy4gUGVybWl0dGVkIHZh bHVlcyBhcmU6IDEsIDIsIDguIE90aGVyIHZhbHVlcw0KPiBjYXVzZQ0KPiArICAjICB1bmRlZmlu ZWQgYmVoYXZpb3IuDQo+ICsgICMNCj4gKyAgIyAgVGhpcyBQQ0QgaXMgb25seSBjb25zdWx0ZWQg aWYgUGNkU21tU21yYW1SZXF1aXJlIGlzIFRSVUUgKHNlZSBiZWxvdykuDQo+ICsgIGdTaW1pY3NY NThQa2dUb2tlblNwYWNlR3VpZC5QY2RYNThUc2VnTWJ5dGVzfDh8VUlOVDh8MHgyMA0KPiArDQo+ ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0ZsYXNoTnZTdG9yYWdl RXZlbnRMb2dCYXNlfDB4MHxVSQ0KPiBOVDMyfDB4OA0KPiArDQo+IGdTaW1pY3NYNThQa2dUb2tl blNwYWNlR3VpZC5QY2RTaW1pY3NGbGFzaE52U3RvcmFnZUV2ZW50TG9nU2l6ZXwweDB8VUkNCj4g TlQzMnwweDkNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0Zpcm13 YXJlRmRTaXplfDB4MHxVSU5UMzJ8MHhhDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3Vp ZC5QY2RTaW1pY3NGaXJtd2FyZUJsb2NrU2l6ZXwwfFVJTlQzMnwweGINCj4gKw0KPiBnU2ltaWNz WDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZUJhc2V8 MHgwfFVJDQo+IE5UMzJ8MHhjDQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBj ZFNpbWljc0ZsYXNoTnZTdG9yYWdlRnR3U3BhcmVCYXNlfDB4MHxVSQ0KPiBOVDMyfDB4ZA0KPiAr DQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NGbGFzaE52U3RvcmFnZUZ0 d1dvcmtpbmdCYXNlfDB4MA0KPiB8VUlOVDMyfDB4ZQ0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5T cGFjZUd1aWQuUGNkU2ltaWNzRmRCYXNlQWRkcmVzc3wweDB8VUlOVDMyfDB4Zg0KPiArDQo+IGdT aW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NTZWNQYWdlVGFibGVzQmFzZXwweDB8 VUlOVDMyfDB4MQ0KPiAxDQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNp bWljc1NlY1BhZ2VUYWJsZXNTaXplfDB4MHxVSU5UMzJ8MHgxDQo+IDINCj4gKw0KPiBnU2ltaWNz WDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzU2VjUGVpVGVtcFJhbUJhc2V8MHgwfFVJTlQz MnwwDQo+IHgxMw0KPiArDQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NT ZWNQZWlUZW1wUmFtU2l6ZXwweDB8VUlOVDMyfDB4DQo+IDE0DQo+ICsNCj4gZ1NpbWljc1g1OFBr Z1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0xvY2tCb3hTdG9yYWdlQmFzZXwweDB8VUlOVDMyfDB4 DQo+IDE4DQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0xvY2tC b3hTdG9yYWdlU2l6ZXwweDB8VUlOVDMyfDB4DQo+IDE5DQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rv a2VuU3BhY2VHdWlkLlBjZEd1aWRlZEV4dHJhY3RIYW5kbGVyVGFibGVTaXplfDB4MHxVSU5UMw0K PiAyfDB4MWENCj4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRGVj b21wcmVzc2lvblNjcmF0Y2hFbmR8MHgwfFVJTlQNCj4gMzJ8MHgxZg0KPiArDQo+ICtbUGNkc0R5 bmFtaWMsIFBjZHNEeW5hbWljRXhdDQo+ICsNCj4gKyAgIyBUT0RPOiBpbnZlc3RpZ2F0ZSB3aGV0 aGVyIG5leHQgdHdvIFBjZHMgYXJlIG5lZWRlZA0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFj ZUd1aWQuUGNkRW11VmFyaWFibGVFdmVudHwwfFVJTlQ2NHwweDI4DQo+ICsNCj4gZ1NpbWljc1g1 OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZE92bWZGbGFzaFZhcmlhYmxlc0VuYWJsZXxGQUxTRXxCT09M RUENCj4gTnwweDEwDQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWlj c1g1OEhvc3RCcmlkZ2VQY2lEZXZJZHwwfFVJTlQxNnwwDQo+IHgxYg0KPiArDQo+ICsgICMjIFRo ZSBJTyBwb3J0IGFwZXJ0dXJlIHNoYXJlZCBieSBhbGwgUENJIHJvb3QgYnJpZGdlcy4NCj4gKyAg Iw0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpSW9CYXNlfDB4MHxVSU5U NjR8MHgyMg0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpSW9TaXplfDB4 MHxVSU5UNjR8MHgyMw0KPiArDQo+ICsgICMjIFRoZSAzMi1iaXQgTU1JTyBhcGVydHVyZSBzaGFy ZWQgYnkgYWxsIFBDSSByb290IGJyaWRnZXMuDQo+ICsgICMNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFBjaU1taW8zMkJhc2V8MHgwfFVJTlQ2NHwweDI0DQo+ICsgIGdTaW1p Y3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvMzJTaXplfDB4MHxVSU5UNjR8MHgyNQ0K PiArDQo+ICsgICMjIFRoZSA2NC1iaXQgTU1JTyBhcGVydHVyZSBzaGFyZWQgYnkgYWxsIFBDSSBy b290IGJyaWRnZXMuDQo+ICsgICMNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBj ZFBjaU1taW82NEJhc2V8MHgwfFVJTlQ2NHwweDI2DQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNw YWNlR3VpZC5QY2RQY2lNbWlvNjRTaXplfDB4MHxVSU5UNjR8MHgyNw0KPiArDQo+ICtbUGNkc0Zl YXR1cmVGbGFnXQ0KPiArICAjIyBUaGlzIGZlYXR1cmUgZmxhZyBlbmFibGVzIFNNTS9TTVJBTSBz dXBwb3J0LiBOb3RlIHRoYXQgaXQgYWxzbyByZXF1aXJlcw0KPiArICAjICBzdWNoIHN1cHBvcnQg ZnJvbSB0aGUgdW5kZXJseWluZyBRRU1VIGluc3RhbmNlOyBpZiB0aGF0IHN1cHBvcnQgaXMgbm90 DQo+ICsgICMgIHByZXNlbnQsIHRoZSBmaXJtd2FyZSB3aWxsIHJlamVjdCBjb250aW51aW5nIGFm dGVyIGEgY2VydGFpbiBwb2ludC4NCj4gKyAgIw0KPiArICAjICBUaGUgZmxhZyBhbHNvIGFjdHMg YXMgYSBnZW5lcmFsICJzZWN1cml0eSBzd2l0Y2giOyB3aGVuIFRSVUUsIG1hbnkNCj4gKyAgIyAg Y29tcG9uZW50cyB3aWxsIGNoYW5nZSBiZWhhdmlvciwgd2l0aCB0aGUgZ29hbCBvZiBwcmV2ZW50 aW5nIGEgbWFsaWNpb3VzDQo+ICsgICMgIHJ1bnRpbWUgT1MgZnJvbSB0YW1wZXJpbmcgd2l0aCBm aXJtd2FyZSBzdHJ1Y3R1cmVzIChzcGVjaWFsIG1lbW9yeQ0KPiByYW5nZXMNCj4gKyAgIyAgdXNl ZCBieSBPVk1GLCB0aGUgdmFyc3RvcmUgcGZsYXNoIGNoaXAsIExvY2tCb3ggZXRjKS4NCj4gKw0K PiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU21tU21yYW1SZXF1aXJlfEZBTFNFfEJP T0xFQU58MHgxDQo+IGUNCj4gKw0KPiArDQo+ICtbUGNkc0ZpeGVkQXRCdWlsZCwgUGNkc0R5bmFt aWMsIFBjZHNEeW5hbWljRXgsIFBjZHNQYXRjaGFibGVJbk1vZHVsZV0NCj4gKyAgIyMgUGNkODI1 OUxlZ2FjeU1vZGVNYXNrIGRlZmluZXMgdGhlIGRlZmF1bHQgbWFzayB2YWx1ZSBmb3IgcGxhdGZv cm0uDQo+IFRoaXMgdmFsdWUgaXMgZGV0ZXJtaW5lZDxCUj48QlI+DQo+ICsgICMgIDEpIElmIHBs YXRmb3JtIG9ubHkgc3VwcG9ydCBwdXJlIFVFRkksIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gMHhG RkZGIG9yDQo+IDB4RkZGRTsNCj4gKyAgIyAgICAgQmVjYXVzZSBvbmx5IGNsb2NrIGludGVycnVw dCBpcyBhbGxvd2VkIGluIGxlZ2FjeSBtb2RlIGluIHB1cmUgVUVGSQ0KPiBwbGF0Zm9ybS48QlI+ DQo+ICsgICMgIDIpIElmIHBsYXRmb3JtIGluc3RhbGwgQ1NNIGFuZCB1c2UgdGh1bmsgbW9kdWxl OjxCUj4NCj4gKyAgIyAgICAgYSkgSWYgdGh1bmsgY2FsbCBwcm92aWRlZCBieSBDU00gYmluYXJ5 IHJlcXVpcmVzIHNvbWUgbGVnYWN5IGludGVycnVwdA0KPiBzdXBwb3J0LCB0aGUgY29ycmVzcG9u ZGluZyBiaXQNCj4gKyAgIyAgICAgICAgc2hvdWxkIGJlIG9wZW5lZCBhcyAwLjxCUj4NCj4gKyAg IyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGtleWJvYXJkIGludGVyZmFjZXMgcHJvdmlkZWQgQ1NN IGJpbmFyeSB1c2UgbGVnYWN5DQo+IGtleWJvYXJkIGludGVycnVwdCBpbiA4MjU5IGJpdCAxLCB0 aGVuDQo+ICsgICMgICAgICAgIHRoZSB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIDB4RkZGQy48QlI+ DQo+ICsgICMgICAgIGIpIElmIGFsbCB0aHVuayBjYWxsIHByb3ZpZWQgYnkgQ1NNIGJpbmFyeSBk byBub3QgcmVxdWlyZSBsZWdhY3kgaW50ZXJydXB0DQo+IHN1cHBvcnQsIHZhbHVlIHNob3VsZCBi ZSBzZXQNCj4gKyAgIyAgICAgICAgdG8gMHhGRkZGIG9yIDB4RkZGRS48QlI+DQo+ICsgICMNCj4g KyAgIyAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgbGVnYWN5IG1vZGUgbWFzayBjb3VsZCBiZSBjaGFu Z2VkIGJ5DQo+IEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTC0+U2V0TWFzaygpLiBCdXQgaXQgaXMg cmFyZWx5DQo+ICsgICMgIG5lZWQgY2hhbmdlIGl0IGV4Y2VwdCBzb21lIHNwZWNpYWwgY2FzZXMg c3VjaCBhcyB3aGVuIGluaXRpYWxpemluZyB0aGUgQ1NNDQo+IGJpbmFyeSwgaXQgc2hvdWxkIGJl IHNldCB0byAweEZGRkYgdG8NCj4gKyAgIyAgbWFzayBhbGwgbGVnYWN5IGludGVycnVwdC4gUGxl YXNlIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGxlZ2FjeSBtYXNrIHZhbHVlIGlmDQo+IGNoYW5naW5n IGlzIG1hZGUgZm9yIHRoZXNlIHNwZWNpYWwgY2FzZS48QlI+DQo+ICsgICMgQFByb21wdCA4MjU5 IExlZ2FjeSBNb2RlIG1hc2suDQo+ICsNCj4gZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQu UGNkODI1OUxlZ2FjeU1vZGVNYXNrfDB4RkZGRnxVSU5UMTZ8DQo+IDB4MDAwMDAwMDENCj4gKw0K PiArICAjIyBQY2Q4MjU5TGVnYWN5TW9kZUVkZ2VMZXZlbCBkZWZpbmVzIHRoZSBkZWZhdWx0IGVk Z2UgbGV2ZWwgZm9yIGxlZ2FjeQ0KPiBtb2RlJ3MgaW50ZXJycnVwdCBjb250cm9sbGVyLg0KPiAr ICAjICBGb3IgdGhlIGNvcnJlc3BvbmRpbmcgYml0cywgMCA9IEVkZ2UgdHJpZ2dlcmVkIGFuZCAx ID0gTGV2ZWwgdHJpZ2dlcmVkLg0KPiArICAjIEBQcm9tcHQgODI1OSBMZWdhY3kgTW9kZSBlZGdl IGxldmVsLg0KPiArDQo+IGdQY0F0Q2hpcHNldFBrZ1Rva2VuU3BhY2VHdWlkLlBjZDgyNTlMZWdh Y3lNb2RlRWRnZUxldmVsfDB4MDAwMHxVSU4NCj4gVDE2fDB4MDAwMDAwMDINCj4gKw0KPiArICAj IyBJbmRpY2F0ZXMgaWYgd2UgbmVlZCBlbmFibGUgSXNhQWNwaUNvbTEgZGV2aWNlLjxCUj48QlI+ DQo+ICsgICMgICBUUlVFICAtIEVuYWJsZXMgSXNhQWNwaUNvbTEgZGV2aWNlLjxCUj4NCj4gKyAg IyAgIEZBTFNFIC0gRG9lc24ndCBlbmFibGUgSXNhQWNwaUNvbTEgZGV2aWNlLjxCUj4NCj4gKyAg IyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpQ29tMSBkZXZpY2UuDQo+ICsNCj4gZ1BjQXRDaGlwc2V0 UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNhQWNwaUNvbTFFbmFibGV8VFJVRXxCT09MRUFOfDB4MA0K PiAwMDAwMDAzDQo+ICsNCj4gKyAgIyMgSW5kaWNhdGVzIGlmIHdlIG5lZWQgZW5hYmxlIElzYUFj cGlDb20yIGRldmljZS48QlI+PEJSPg0KPiArICAjICAgVFJVRSAgLSBFbmFibGVzIElzYUFjcGlD b20yIGRldmljZS48QlI+DQo+ICsgICMgICBGQUxTRSAtIERvZXNuJ3QgZW5hYmxlIElzYUFjcGlD b20yIGRldmljZS48QlI+DQo+ICsgICMgQFByb21wdCBFbmFibGUgSXNhQWNwaUNvbTEyIGRldmlj ZS4NCj4gKw0KPiBnUGNBdENoaXBzZXRQa2dUb2tlblNwYWNlR3VpZC5QY2RJc2FBY3BpQ29tMkVu YWJsZXxUUlVFfEJPT0xFQU58MHgwDQo+IDAwMDAwMDQNCj4gKw0KPiArICAjIyBJbmRpY2F0ZXMg aWYgd2UgbmVlZCBlbmFibGUgSXNhQWNwaVBzMktleWJvYXJkIGRldmljZS48QlI+PEJSPg0KPiAr ICAjICAgVFJVRSAgLSBFbmFibGVzIElzYUFjcGlQczJLZXlib2FyZCBkZXZpY2UuPEJSPg0KPiAr ICAjICAgRkFMU0UgLSBEb2Vzbid0IGVuYWJsZSBJc2FBY3BpUHMyS2V5Ym9hcmQgZGV2aWNlLjxC Uj4NCj4gKyAgIyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpUHMyS2V5Ym9hcmQgZGV2aWNlLg0KPiAr DQo+IGdQY0F0Q2hpcHNldFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUFjcGlQczJLZXlib2FyZEVu YWJsZXxUUlVFfEJPT0xFDQo+IEFOfDB4MDAwMDAwMDUNCj4gKw0KPiArICAjIyBJbmRpY2F0ZXMg aWYgd2UgbmVlZCBlbmFibGUgSXNhQWNwaVBzMk1vdXNlIGRldmljZS48QlI+PEJSPg0KPiArICAj ICAgVFJVRSAgLSBFbmFibGVzIElzYUFjcGlQczJNb3VzZSBkZXZpY2UuPEJSPg0KPiArICAjICAg RkFMU0UgLSBEb2Vzbid0IGVuYWJsZSBJc2FBY3BpUHMyTW91c2UgZGV2aWNlLjxCUj4NCj4gKyAg IyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpUHMyTW91c2UgZGV2aWNlLg0KPiArDQo+IGdQY0F0Q2hp cHNldFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUFjcGlQczJNb3VzZUVuYWJsZXxUUlVFfEJPT0xF QU4NCj4gfDB4MDAwMDAwMDYNCj4gKw0KPiArICAjIyBJbmRpY2F0ZXMgaWYgd2UgbmVlZCBlbmFi bGUgSXNhQWNwaUZsb3BweUEgZGV2aWNlLjxCUj48QlI+DQo+ICsgICMgICBUUlVFICAtIEVuYWJs ZXMgSXNhQWNwaUZsb3BweUEgZGV2aWNlLjxCUj4NCj4gKyAgIyAgIEZBTFNFIC0gRG9lc24ndCBl bmFibGUgSXNhQWNwaUZsb3BweUEgZGV2aWNlLjxCUj4NCj4gKyAgIyBAUHJvbXB0IEVuYWJsZSBJ c2FBY3BpRmxvcHB5QSBkZXZpY2UuDQo+ICsNCj4gZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1 aWQuUGNkSXNhQWNwaUZsb3BweUFFbmFibGV8VFJVRXxCT09MRUFOfDANCj4geDAwMDAwMDA3DQo+ ICsNCj4gKyAgIyMgSW5kaWNhdGVzIGlmIHdlIG5lZWQgZW5hYmxlIElzYUFjcGlGbG9wcHlCIGRl dmljZS48QlI+PEJSPg0KPiArICAjICAgVFJVRSAgLSBFbmFibGVzIElzYUFjcGlGbG9wcHlCIGRl dmljZS48QlI+DQo+ICsgICMgICBGQUxTRSAtIERvZXNuJ3QgZW5hYmxlIElzYUFjcGlGbG9wcHlC IGRldmljZS48QlI+DQo+ICsgICMgQFByb21wdCBFbmFibGUgSXNhQWNwaUZsb3BweUIgZGV2aWNl Lg0KPiArDQo+IGdQY0F0Q2hpcHNldFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUFjcGlGbG9wcHlC RW5hYmxlfFRSVUV8Qk9PTEVBTnwwDQo+IHgwMDAwMDAwOA0KPiArDQo+ICtbUGNkc0ZpeGVkQXRC dWlsZCwgUGNkc1BhdGNoYWJsZUluTW9kdWxlXQ0KPiArICAjIyBGRlMgZmlsZW5hbWUgdG8gZmlu ZCB0aGUgc2hlbGwgYXBwbGljYXRpb24uDQo+ICsgICMgQFByb21wdCBGRlMgTmFtZSBvZiBTaGVs bCBBcHBsaWNhdGlvbg0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2hlbGxG aWxlfHsgMHg4MywgMHhBNSwgMHgwNCwgMHg3QywgMHgzRSwNCj4gMHg5RSwgMHgxQywgMHg0Riwg MHhBRCwgMHg2NSwgMHhFMCwgMHg1MiwgMHg2OCwgMHhEMCwgMHhCNCwgMHhEMQ0KPiB9fFZPSUQq fDB4NDAwMDAwMDQNCj4gKw0KPiArICAjIyBJU0EgQnVzIGZlYXR1cmVzIHRvIHN1cHBvcnQgRE1B LCBTbGF2ZURNQSBhbmQgSVNBIE1lbW9yeS4gPEJSPjxCUj4NCj4gKyAgIyAgQklUMCBpbmRpY2F0 ZXMgaWYgRE1BIGlzIHN1cHBvcnRlZDxCUj4NCj4gKyAgIyAgQklUMSBpbmRpY2F0ZXMgaWYgb25s eSBzbGF2ZSBETUEgaXMgc3VwcG9ydGVkPEJSPg0KPiArICAjICBCSVQyIGluZGljYXRlcyBpZiBJ U0EgbWVtb3J5IGlzIHN1cHBvcnRlZDxCUj4NCj4gKyAgIyAgT3RoZXIgQklUcyBhcmUgcmVzZXZl ZCBhbmQgbXVzdCBiZSB6ZXJvLg0KPiArICAjICBJZiBtb3JlIHRoYW4gb25lIGZlYXR1cmVzIGFy ZSBzdXBwb3J0ZWQsIHRoZSBkaWZmZXJlbnQgQklUIHdpbGwgYmUgZW5hYmxlZA0KPiBhdCB0aGUg c2FtZSB0aW1lLg0KPiArICAjIEBQcm9tcHQgSVNBIEJ1cyBGZWF0dXJlcw0KPiArICAjIEBFeHBy ZXNzaW9uIDB4ODAwMDAwMDIgfA0KPiAoZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElz YUJ1c1N1cHBvcnRlZEZlYXR1cmVzICYgMHhGOCkgPT0gMA0KPiArDQo+IGdTaW1pY3NYNThQa2dU b2tlblNwYWNlR3VpZC5QY2RJc2FCdXNTdXBwb3J0ZWRGZWF0dXJlc3wweDA1fFVJTlQ4fDB4MA0K PiAwMDEwMDQwDQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiBkaWZmIC0tZ2l0DQo+ IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1NtYmlvc1BsYXRmb3JtRHhlL1Nt Ymlvc1BsYXRmb3JtRHhlDQo+IC5oDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlDQo+IC5oDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjM4YTcxYTM1MjcNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU21iaW9z UGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUNCj4gLmgNCj4gQEAgLTAsMCArMSwzOCBAQA0K PiArLyoqIEBmaWxlDQo+ICsgIFRoaXMgZHJpdmVyIGluc3RhbGxzIFNNQklPUyBpbmZvcm1hdGlv biBmb3IgT1ZNRg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxMSwgQmVpIEd1YW4gPGdidGp1 ODVAZ21haWwuY29tPg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTEsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgX1NNQklP U19QTEFURk9STV9EWEVfSF8NCj4gKyNkZWZpbmUgX1NNQklPU19QTEFURk9STV9EWEVfSF8NCj4g Kw0KPiArI2luY2x1ZGUgPFBpRHhlLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9TbWJp b3MuaD4NCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1NtQmlvcy5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvTWVt b3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4gKw0K PiArLyoqDQo+ICsgIFZhbGlkYXRlcyB0aGUgU01CSU9TIGVudHJ5IHBvaW50IHN0cnVjdHVyZQ0K PiArDQo+ICsgIEBwYXJhbSAgRW50cnlQb2ludFN0cnVjdHVyZSAgU01CSU9TIGVudHJ5IHBvaW50 IHN0cnVjdHVyZQ0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSAgIFRoZSBlbnRyeSBwb2ludCBzdHJ1 Y3R1cmUgaXMgdmFsaWQNCj4gKyAgQHJldHZhbCBGQUxTRSAgVGhlIGVudHJ5IHBvaW50IHN0cnVj dHVyZSBpcyBub3QgdmFsaWQNCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtJc0VudHJ5UG9p bnRTdHJ1Y3R1cmVWYWxpZCAoDQo+ICsgIElOIFNNQklPU19UQUJMRV9FTlRSWV9QT0lOVCAgKkVu dHJ5UG9pbnRTdHJ1Y3R1cmUNCj4gKyAgKTsNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQN Cj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUv U21iaW9zUGxhdGZvcm1EeGUNCj4gLmluZg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZQ0KPiAuaW5mDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjZhZGFmMGJlYjcNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv U21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUNCj4gLmluZg0KPiBAQCAtMCwwICsx LDUxIEBADQo+ICsjIyBAZmlsZQ0KPiArIyAgVGhpcyBkcml2ZXIgaW5zdGFsbHMgU01CSU9TIGlu Zm9ybWF0aW9uIGZvciBPVk1GDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTEsIEJlaSBH dWFuIDxnYnRqdTg1QGdtYWlsLmNvbT4NCj4gKyMgIENvcHlyaWdodCAoYykgMjAxMSAtIDIwMTgs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMNCj4gKyMg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyMNCj4gKyMj DQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAg PSAweDAwMDEwMDA1DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFNtYmlv c1BsYXRmb3JtRHhlDQo+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDRiMTgz MjNkLTJkNDItNGFmYS1iOWU1LTkxNTE2YTZmZTUwNQ0KPiArICBNT0RVTEVfVFlQRSAgICAgICAg ICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAg ICAgICA9IDEuMA0KPiArDQo+ICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICA9IFNt Ymlvc1RhYmxlUHVibGlzaEVudHJ5DQo+ICsNCj4gKyMNCj4gKyMgVGhlIGZvbGxvd2luZyBpbmZv cm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUgYnVp bGQNCj4gdG9vbHMuDQo+ICsjDQo+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9 IElBMzIgWDY0IEVCQyBBUk0gQUFSQ0g2NA0KPiArIw0KPiArDQo+ICtbU291cmNlc10NCj4gKyAg U21iaW9zUGxhdGZvcm1EeGUuaA0KPiArICBTbWJpb3NQbGF0Zm9ybUR4ZS5jDQo+ICsNCj4gK1tQ YWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1v ZHVsZVBrZy5kZWMNCj4gKyAgU2ltaWNzT3BlbkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5k ZWMNCj4gKyAgQWR2YW5jZWRGZWF0dXJlUGtnL0FkdmFuY2VkRmVhdHVyZVBrZy5kZWMNCj4gKw0K PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gKyAg QmFzZU1lbW9yeUxpYg0KPiArICBCYXNlTGliDQo+ICsgIFVlZmlEcml2ZXJFbnRyeVBvaW50DQo+ ICsgIERlYnVnTGliDQo+ICsgIEhvYkxpYg0KPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsg IElvTGliDQo+ICsNCj4gK1tQcm90b2NvbHNdDQo+ICsgIGdFZmlTbWJpb3NQcm90b2NvbEd1aWQg ICAgICAgICAgICAgICAgICAgICAgIyBQUk9UT0NPTCBBTFdBWVNfQ09OU1VNRUQNCj4gKw0KPiAr W0RlcGV4XQ0KPiArICBnRWZpU21iaW9zUHJvdG9jb2xHdWlkDQo+ICsNCj4gLS0NCj4gMi4xNi4y LndpbmRvd3MuMQ0KDQo=