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.31, mailfrom: michael.a.kubacki@intel.com) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by groups.io with SMTP; Mon, 19 Aug 2019 18:04:23 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Aug 2019 18:04:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,407,1559545200"; d="scan'208";a="207190039" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by fmsmga002.fm.intel.com with ESMTP; 19 Aug 2019 18:04:19 -0700 Received: from orsmsx122.amr.corp.intel.com ([169.254.11.68]) by ORSMSX102.amr.corp.intel.com ([169.254.3.11]) with mapi id 14.03.0439.000; Mon, 19 Aug 2019 18:04:19 -0700 From: "Kubacki, Michael A" To: "Wei, David Y" , "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: AQHVTwRbNBQtNSGVkEmrTNKCArWbCqcDMtKQ Date: Tue, 20 Aug 2019 01:04:18 +0000 Message-ID: <49AB4ACB9627B8468F29D589A27B745588A5001E@ORSMSX122.amr.corp.intel.com> References: <28fad95137c6aecfbf593a14191bdb4d0819951e.1565389186.git.david.y.wei@intel.com> In-Reply-To: <28fad95137c6aecfbf593a14191bdb4d0819951e.1565389186.git.david.y.wei@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.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.139] MIME-Version: 1.0 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RmVlZGJhY2sgSSBjb3VsZCBub3QgZmluZCBhbHJlYWR5IGNvdmVyZWQgZWxzZXdoZXJlOg0KDQox LiBEc2R0LmFzbDogQ2hhbmdlICJPVk1GIiBpbiB0aGUgZm9sbG93aW5nIGxpbmUgdG8gc29tZXRo aW5nIGVsc2UgdW5pcXVlIHRvIHRoaXMgaW1wbGVtZW50YXRpb246DQogICAgICJEZWZpbml0aW9u QmxvY2sgKCJEc2R0LmFtbCIsICJEU0RUIiwgMSwgIklOVEVMICIsICJPVk1GICAgICIsIDQpIHsi DQoyLiBCYXNlUGNoU3BpQ29tbW9uTGliLmluZjogVGhpcyBzaWxpY29uIHBhY2thZ2Ugc2hvdWxk IG5vdCBoYXZlIGEgZGVwZW5kZW5jeSBvbiBTaW1pY3NPcGVuQm9hcmRQa2cuZGVjLg0KMy4gUGxh dGZvcm0uaDogVGhpcyBoZWFkZXIgZ3VhcmQgZGVmaW5pdGlvbiBpcyB1bnVzdWFsIGluIHN0eWxl IGFuZCBjb252ZW50aW9uLCBwbGVhc2UgY29ycmVjdDogIl9QbGF0Zm9ybV9oX0lOQ0xVREVEXyIN CjQuIFBsYXRmb3JtLmg6IFBsZWFzZSB1cGRhdGUgdXNhZ2Ugb2YgIk9WTUYiIGluIHZhcmlvdXMg c2lnbmF0dXJlcyB0aHJvdWdob3V0IHRoZSBmaWxlIHRvIHNvbWV0aGluZyBwYWNrYWdlIHVuaXF1 ZS4NCjUuIFNpbWljc1g1OFBsYXRmb3JtQ29uZmlnLmg6IFdoeSBpcyB0aGlzIGZpbGUgbm90IGlu IFNpbWljc1g1OFNrdFBrZz8NCjYuIFNpbWljc1g1OFBsYXRmb3JtQ29uZmlnLmg6IENoYW5nZSAi T1ZNRiIgaW4gY29weXJpZ2h0IGhlYWRlciB0byAiU2ltaWNzIFg1OCINCjcuIFNpbWljc1BsYXRm b3Jtcy5oOiBDaGFuZ2UgIk9WTUYiIGluIGNvcHlyaWdodCBoZWFkZXIgdG8gIlNpbWljcyINCjgu IFNpbWljc1BsYXRmb3Jtcy5oIC0gTGluZSAxNjogRm9sbG93IHVwIG9uIFRPRE8gDQo5LiBYNThJ Y2gxMC5oOiBXaHkgaXMgdGhpcyBmaWxlIGluIHRoZSBTaW1pY3MgYm9hcmQgcGFja2FnZT8gSXQg c2hvdWxkIGJlIGluIHRoZSBzaWxpY29uIHBhY2thZ2UuDQoxMC4gTG9hZExpbnV4TGliLmluZjog VGhpcyBwYWNrYWdlIHNob3VsZCBhdm9pZCBhIGRlcGRlbmN5IG9uIE92bWZQa2cuZGVjDQoxMS4g TG9hZExpbnV4TGliLmluZjogTGlicmFyeSBuYW1lIGRvZXMgbm90IGZvbGxvd2luZyBuYW1pbmcg Y29udmVudGlvbi4gSS5lLiBzaG91bGQgYmUgQmFzZUxvYWRMaW51eExpYi5pbmYuDQoxMi4gTG9h ZExpbnV4TGliLmluZjogVGhpcyBpcyBub3QgdHJ1bHkgYSBCQVNFIGxpYnJhcnkuIEZvciBleGFt cGxlLCBnQlMgKGJvb3Qgc2VydmljZXMpIGFyZSB1bmF2YWlsYWJsZSBpbiBSdW50aW1lIERYRS4N CjEzLiBQbGF0Zm9ybS5jOiBDaGFuZ2UgIk9WTUYiIHJlZmVyZW5jZSBpbiBjb3B5cmlnaHQgaGVh ZGVyLg0KMTQuIFBsYXRmb3JtLmg6IENoYW5nZSAiT1ZNRiIgcmVmZXJlbmNlIGluIGNvcHlyaWdo dCBoZWFkZXIuDQoxNS4gQ21vcy5jOiBJdCBzZWVtcyBDbW9zQWNjZXNzTGliIGluIEJvYXJkTW9k dWxlUGtnIGNvdWxkIGJlIHVzZWQgaGVyZSB0byBhdm9pZCBkdXBsaWNhdGlvbi4NCjE2LiBGdi5j OiBJbiBNaW5QbGF0Zm9ybSwgYSBtb3JlIGludHVpdGl2ZSBwbGFjZSB0byBtYW5hZ2UgRlZzIGlz IGluIGEgYm9hcmQtc3BlY2lmaWMgaW5zdGFuY2Ugb2YgUGVpUmVwb3J0RnZMaWINCjE3LiBHZW5l cmFsIGNvbW1lbnQ6IFRoZSBtb2R1bGVzICJQbGF0Zm9ybVBlaSIgYW5kICJQbGF0Zm9ybUR4ZSIg c2hvdWxkIGJlIGF2b2lkZWQgaW4gYSBNaW5QbGF0Zm9ybS4NCiAgICAgICAgTWluUGxhdGZvcm1Q a2cgaXMgY29uc2lkZXJlZCB0aGUgInBsYXRmb3JtIiBhbmQgU2ltaWNzT3BlbkJvYXJkUGtnIGlz IGNvbnNpZGVyZWQgdGhlICJib2FyZCIsIHRoZXJlZm9yZSB0aGlzDQogICAgICAgIGNvZGUgc2hv dWxkIGxpa2VseSBiZSBpbiBhIGJvYXJkIGxpYnJhcnkgbGlua2VkIGFnYWluc3QgYSBQbGF0Zm9y bUluaXQgbW9kdWxlIGluIE1pblBsYXRmb3JtUGtnLiBTdWNoIGFzIEJvYXJkSW5pdExpYg0KICAg ICAgICB3aGljaCBpcyB2ZXJ5IGVtcHR5IGF0IHRoZSBtb21lbnQuIEF0IGEgbWluaW11bSwgaWYg a2VwdCBhcyBhIG1vZHVsZSBmb3IgZGlzcGF0Y2gsIHRoZSBuYW1lIHNob3VsZCBub3QgbGVhZCB0 byBjb25mdXNpb24NCiAgICAgICAgd2l0aCBwbGF0Zm9ybSBtb2R1bGVzIGluIE1pblBsYXRmb3Jt UGtnLg0KMTguIFBsYXRmb3JtUGVpLmluZjogVGhpcyBwYWNrYWdlIHNob3VsZCBhdm9pZCBhIGRl cGRlbmN5IG9uIE92bWZQa2cuZGVjDQoxOS4gWDU4U21hbVNhdmVTdGF0ZU1hcC5oOiBJZiBYNTgt c3BlY2lmaWMsIGl0IHNob3VsZCBnbyB0byBTaW1pY3NYNThTa3RQa2cuDQoyMC4gU2VyaWFsaXpl VmFyaWFibGVzTGliLmluZjogVGhpcyBwYWNrYWdlIHNob3VsZCBhdm9pZCBhIGRlcGRlbmN5IG9u IE92bWZQa2cuZGVjDQoyMS4gU2ltaWNzT3BlbkJvYXJkUGtnLmRlYzogUGNkcyBpbiB0aGUgZ1Np bWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkIHRva2VuIHNwYWNlIHNob3VsZCBiZSBkZWNsYXJlZCBp biBhIERFQyBmaWxlDQogICAgICAgaW4gdGhlIFNpbWljc1g1OFNrdFBrZy4gU2ltaWNzT3BlbkJv YXJkUGtnIHNob3VsZCBub3QgYmUgaGFyZGNvZGVkIHRvIHRoaXMgcGFydGljdWxhciBzaWxpY29u IGRlc2lnbi4NCjIyLiBTaW1pY3NPcGVuQm9hcmRQa2cuZGVjOiAiWDU4IiBzaG91bGQgYmUgcmVt b3ZlZCBmcm9tIHRoZSBjb3B5cmlnaHQgaGVhZGVyIGFzIHRoZSBERUMgaXMgYXQgdGhlIHBhY2th Z2UtbGV2ZWwNCiAgICAgICBhbmQgbm90IHRoZSBib2FyZCBsZXZlbC4NCjIzLiBTaW1pY3NPcGVu Qm9hcmRQa2cuZGVjOiBUaGUgUEFDS0FHRV9OQU1FIHNob3VsZCBub3QgYmUgIiBTaW1pY3NYNThQ a2ciIGFzIHRoZSBERUMgaXMgYXQgcGFja2FnZS1sZXZlbCBhbmQNCiAgICAgICBub3QgU2ltaWNz IGJvYXJkLXNwZWNpZmljLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IFdlaSwgRGF2aWQgWQ0KPiBTZW50OiBGcmlkYXksIEF1Z3VzdCA5LCAyMDE5IDM6NDcgUE0NCj4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVs LmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47DQo+IFNpbmhhLCBBbmtp dCA8YW5raXQuc2luaGFAaW50ZWwuY29tPjsgQWd5ZW1hbiwgUHJpbmNlDQo+IDxwcmluY2UuYWd5 ZW1hbkBpbnRlbC5jb20+OyBLdWJhY2tpLCBNaWNoYWVsIEENCj4gPG1pY2hhZWwuYS5rdWJhY2tp QGludGVsLmNvbT47IERlc2ltb25lLCBOYXRoYW5pZWwgTA0KPiA8bmF0aGFuaWVsLmwuZGVzaW1v bmVAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPiBTdWJqZWN0OiBbZWRrMi1wbGF0Zm9ybSBwYXRjaCAzLzddIFNpbWljc09wZW5C b2FyZFBrZzogQWRkDQo+IFNpbWljc09wZW5Cb2FyZFBrZyBhbmQgaXRzIG1vZHVsZXMNCj4gDQo+ IEFkZCBtb2R1bGVzIEFjcGlUYWJsZXMsIEluY2x1ZGUsIExpYnJhcnksIFBsYXRmb3JtRHhlLCBQ bGF0Zm9ybVBlaSwgUG9saWN5LA0KPiBTbWJpb3NQbGF0Zm9ybUR4ZQ0KPiBmb3IgU2ltaWNzIFFT UCBwbGF0Zm9ybSBzdXBwb3J0DQo+IA0KPiBDYzogSGFvIFd1IDxoYW8uYS53dUBpbnRlbC5jb20+ DQo+IENjOiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gQ2M6IEFua2l0IFNp bmhhIDxhbmtpdC5zaW5oYUBpbnRlbC5jb20+DQo+IENjOiBBZ3llbWFuIFByaW5jZSA8cHJpbmNl LmFneWVtYW5AaW50ZWwuY29tPg0KPiBDYzogS3ViYWNraSBNaWNoYWVsIEEgPG1pY2hhZWwuYS5r dWJhY2tpQGludGVsLmNvbT4NCj4gQ2M6IE5hdGUgRGVTaW1vbmUgPG5hdGhhbmllbC5sLmRlc2lt b25lQGludGVsLmNvbT4NCj4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPg0KPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBB Z3JlZW1lbnQgMS4wDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXZWkgPGRhdmlkLnkud2Vp QGludGVsLmNvbT4NCj4gLS0tDQo+ICAuLi4vTGlicmFyeS9Mb2FkTGludXhMaWIvTGludXguYyAg ICAgICAgICAgICAgICAgICB8IDY2MiArKysrKysrKysrKysrKysrDQo+ICAuLi4vTGlicmFyeS9M b2FkTGludXhMaWIvTGludXhHZHQuYyAgICAgICAgICAgICAgICB8IDE3NSArKysrKw0KPiAgLi4u L0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9Gc0FjY2Vzcy5jICAgICAgICAgICAgICAgfCA1MDcgKysr KysrKysrKysrDQo+ICAuLi4vTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuYyAg ICAgICAgICB8ICA3NyArKw0KPiAgLi4uL1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVW YXJpYWJsZXNMaWIuYyAgfCA4NjkNCj4gKysrKysrKysrKysrKysrKysrKysrDQo+ICAuLi4vU2lt aWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmMgICAgICB8IDg2NQ0KPiArKysr KysrKysrKysrKysrKysrKw0KPiAgLi4uL1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmMgICAg ICAgICAgICAgICAgICAgfCAxMjMgKysrDQo+ICAuLi4vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L1BsYXRmb3JtUGVpL0Ntb3MuYyAgICB8ICA1NyArKw0KPiAgLi4uL1BsYXRmb3JtUGVpL0ZlYXR1 cmVDb250cm9sLmMgICAgICAgICAgICAgICAgICAgfCAxMTQgKysrDQo+ICBQbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvRnYuYyB8IDEwMCArKysNCj4gIC4uLi9T aW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvTWVtRGV0ZWN0LmMgICAgIHwgNTY4ICsrKysr KysrKysrKysrDQo+ICAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3Jt LmMgICAgICB8IDYzMSArKysrKysrKysrKysrKysNCj4gIC4uLi9TaWxpY29uUG9saWN5SW5pdExp Yi9TaWxpY29uUG9saWN5SW5pdExpYi5jICAgIHwgMTA4ICsrKw0KPiAgLi4uL1NpbGljb25Qb2xp Y3lVcGRhdGVMaWIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNzAgKysNCj4gIC4uLi9TbWJp b3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5jICAgICAgICAgIHwgMTQ4ICsrKysNCj4g IC4uLi9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9BY3BpVGFibGVzLmluZiAgIHwgIDMx ICsNCj4gIC4uLi9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9Ec2R0LmFzbCAg IHwgODIxDQo+ICsrKysrKysrKysrKysrKysrKysNCj4gIC4uLi9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvQWNwaVRhYmxlcy9QbGF0Zm9ybS5oIHwgIDc1ICsrDQo+ICAuLi4vSW5jbHVkZS9HdWlk L1NpbWljc1g1OFBsYXRmb3JtQ29uZmlnLmggICAgICAgICB8ICAxNyArDQo+ICAuLi4vSW5jbHVk ZS9JbmR1c3RyeVN0YW5kYXJkL1g1OEljaDEwLmggICAgICAgICAgICB8IDEwNiArKysNCj4gIC4u Li9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FBY3BpLmggIHwgMjk4ICsr KysrKysNCj4gIC4uLi9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FJby5o ICAgIHwgMzU2ICsrKysrKysrKw0KPiAgLi4uL0luY2x1ZGUvUHJvdG9jb2wvTGVnYWN5ODI1OS5o ICAgICAgICAgICAgICAgICAgfCAyOTEgKysrKysrKw0KPiAgLi4uL0luY2x1ZGUvUmVnaXN0ZXIv WDU4U21yYW1TYXZlU3RhdGVNYXAuaCAgICAgICAgfCAxNzggKysrKysNCj4gIC4uLi9TaW1pY3NP cGVuQm9hcmRQa2cvSW5jbHVkZS9TaW1pY3NQbGF0Zm9ybXMuaCAgIHwgIDU0ICsrDQo+ICAuLi4v TGlicmFyeS9Mb2FkTGludXhMaWIvSWEzMi9KdW1wVG9LZXJuZWwubmFzbSAgICB8ICA0MSArDQo+ ICAuLi4vTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4TGliLmggICAgICAgICAgICB8ICA1 MiArKw0KPiAgLi4uL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5pbmYgICAgICAg ICAgfCAgNDIgKw0KPiAgLi4uL0xpYnJhcnkvTG9hZExpbnV4TGliL1g2NC9KdW1wVG9LZXJuZWwu bmFzbSAgICAgfCAgODUgKysNCj4gIC4uLi9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmls ZUxpYi5oICAgICAgICAgIHwgIDU1ICsrDQo+ICAuLi4vTGlicmFyeS9OdlZhcnNGaWxlTGliL052 VmFyc0ZpbGVMaWIuaW5mICAgICAgICB8ICA1MyArKw0KPiAgLi4uL1NlcmlhbGl6ZVZhcmlhYmxl c0xpYi9TZXJpYWxpemVWYXJpYWJsZXNMaWIuaCAgfCAgMzMgKw0KPiAgLi4uL1NlcmlhbGl6ZVZh cmlhYmxlc0xpYi5pbmYgICAgICAgICAgICAgICAgICAgICAgfCAgMzYgKw0KPiAgLi4uL1NpbWlj c09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5oICAgICAgfCAgMzcgKw0KPiAgLi4u L1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5pbmYgICAgfCAgNjUgKysN Cj4gIC4uLi9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0udW5pICAgIHwg IDMxICsNCj4gIC4uLi9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUNvbmZpZy5oICAgICAgICAgICAgICAg ICAgIHwgIDUxICsrDQo+ICAuLi4vUGxhdGZvcm1EeGUvUGxhdGZvcm1Gb3Jtcy52ZnIgICAgICAg ICAgICAgICAgICB8ICA2NyArKw0KPiAgLi4uL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0 Zm9ybVBlaS9DbW9zLmggICAgfCAgNTAgKysNCj4gIC4uLi9TaW1pY3NPcGVuQm9hcmRQa2cvUGxh dGZvcm1QZWkvUGxhdGZvcm0uaCAgICAgIHwgIDkzICsrKw0KPiAgLi4uL1NpbWljc09wZW5Cb2Fy ZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5pbmYgfCAxMDkgKysrDQo+ICAuLi4vU2lsaWNv blBvbGljeUluaXRMaWIvU2lsaWNvblBvbGljeUluaXRMaWIuaW5mICB8ICAzOCArDQo+ICAuLi4v U2lsaWNvblBvbGljeVVwZGF0ZUxpYi5pbmYgICAgICAgICAgICAgICAgICAgICB8ICAzNSArDQo+ ICAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5kZWMgICAgICB8IDE2 OCArKysrDQo+ICAuLi4vU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUuaCAgICAg ICAgICB8ICAzOCArDQo+ICAuLi4vU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUu aW5mICAgICAgICB8ICA1MSArKw0KPiAgNDYgZmlsZXMgY2hhbmdlZCwgODUzMSBpbnNlcnRpb25z KCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xpbnV4LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhM aWIvTGludXhHZHQuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvRnNBY2Nlc3MuYw0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJy YXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmlsZUxpYi5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQN Cj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFy aWFibGVzTGliL1NlcmlhbGl6ZVZhcmlhDQo+IGJsZXNMaWIuYw0KPiAgY3JlYXRlIG1vZGUgMTAw NjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0 Zm9ybS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmMNCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvQ21vcy5j DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtUGVpL0ZlYXR1cmVDb250cm9sLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBQ bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvRnYuYw0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0 Zm9ybVBlaS9NZW1EZXRlY3QuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9M aWJyYXJ5L1NpbGljb25Qb2xpY3lJbml0TGliL1NpbGljb25QDQo+IG9saWN5SW5pdExpYi5jDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lVcGRhdGVMaWIvU2lsaWMNCj4gb25Qb2xpY3lV cGRhdGVMaWIuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5jDQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0Fj cGlUYWJsZXMvQWNwaVRhYmxlcy5pbmYNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9Ec2R0LmFzbA0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVz L1BsYXRmb3JtLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9HdWlkL1NpbWljc1g1OFBsYXRmb3JtQ29uZmlnLmgNCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv SW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1g1OEljaDEwLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9J c2FBY3BpLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FJby5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wv TGVnYWN5ODI1OS5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUmVnaXN0ZXIvWDU4U21yYW1TYXZlU3RhdGVNYXANCj4g LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvSW5jbHVkZS9TaW1pY3NQbGF0Zm9ybXMuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9J YTMyL0p1bXBUb0tlcm5lbC4NCj4gbmFzbQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGlu dXhMaWIuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGludXhMaWIuaW5mDQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJh cnkvTG9hZExpbnV4TGliL1g2NC9KdW1wVG9LZXJuZWwuDQo+IG5hc20NCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZh cnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJz RmlsZUxpYi5pbmYNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJpYWxpemVWYXJpYWJsZXNMaWIvU2VyaWFsaXplVmFy aWENCj4gYmxlc0xpYi5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliL1NlcmlhbGl6 ZVZhcmlhDQo+IGJsZXNMaWIuaW5mDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmgNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZv cm1EeGUvUGxhdGZvcm0uaW5mDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLnVuaQ0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9y bUR4ZS9QbGF0Zm9ybUNvbmZpZy5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtRm9ybXMudmZyDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1Bs YXRmb3JtUGVpL0Ntb3MuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5oDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVp L1BsYXRmb3JtUGVpLmluZg0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExpYi9T aWxpY29uUA0KPiBvbGljeUluaXRMaWIuaW5mDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xp Y3lVcGRhdGVMaWIvU2lsaWMNCj4gb25Qb2xpY3lVcGRhdGVMaWIuaW5mDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1NpbWljc09wZW5C b2FyZFBrZy5kZWMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUuaA0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9T bWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5pDQo+IG5mDQo+IA0KPiBkaWZmIC0t Z2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4 TGliL0xpbnV4LmMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFy eS9Mb2FkTGludXhMaWIvTGludXguYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwLi40M2EyZGVlOWY2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xpbnV4LmMNCj4g QEAgLTAsMCArMSw2NjIgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTEg LSAyMDE0IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsN Cj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoq Lw0KPiArDQo+ICsjaW5jbHVkZSAiTG9hZExpbnV4TGliLmgiDQo+ICsNCj4gKw0KPiArLyoqDQo+ ICsgIEEgc2ltcGxlIGNoZWNrIG9mIHRoZSBrZXJuZWwgc2V0dXAgaW1hZ2UNCj4gKw0KPiArICBB biBhc3N1bXB0aW9uIGlzIG1hZGUgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBpcyBhdCBsZWFz dCB0aGUNCj4gKyAgc2l6ZSBvZiBzdHJ1Y3QgYm9vdF9wYXJhbXMuDQo+ICsNCj4gKyAgQHBhcmFt W2luXSAgICBLZXJuZWxTZXR1cCAtIFRoZSBrZXJuZWwgc2V0dXAgaW1hZ2UNCj4gKw0KPiArICBA cmV0dmFsICAgIEVGSV9TVUNDRVNTIC0gVGhlIGtlcm5lbCBzZXR1cCBsb29rcyB2YWxpZCBhbmQg c3VwcG9ydGVkDQo+ICsgIEByZXR2YWwgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSIC0gS2VybmVs U2V0dXAgd2FzIE5VTEwNCj4gKyAgQHJldHZhbCAgICBFRklfVU5TVVBQT1JURUQgLSBUaGUga2Vy bmVsIHNldHVwIGlzIG5vdCB2YWxpZCBvciBzdXBwb3J0ZWQNCj4gKw0KPiArKiovDQo+ICtTVEFU SUMNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQmFzaWNLZXJuZWxTZXR1cENoZWNrICgN Cj4gKyAgSU4gVk9JRCAgICAgICAgKktlcm5lbFNldHVwDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0 dXJuIExvYWRMaW51eENoZWNrS2VybmVsU2V0dXAoS2VybmVsU2V0dXAsIHNpemVvZiAoc3RydWN0 DQo+IGJvb3RfcGFyYW1zKSk7DQo+ICt9DQo+ICsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArRUZJ QVBJDQo+ICtMb2FkTGludXhDaGVja0tlcm5lbFNldHVwICgNCj4gKyAgSU4gVk9JRCAgICAgICAg Kktlcm5lbFNldHVwLA0KPiArICBJTiBVSU5UTiAgICAgICBLZXJuZWxTZXR1cFNpemUNCj4gKyAg KQ0KPiArew0KPiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcDsNCj4gKw0KPiArICBp ZiAoS2VybmVsU2V0dXAgPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoS2VybmVsU2V0dXBTaXplIDwgc2l6ZW9mICgq QnApKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgfQ0KPiArDQo+ICsg IEJwID0gKHN0cnVjdCBib290X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KPiArDQo+ICsgIGlmICgo QnAtPmhkci5zaWduYXR1cmUgIT0gMHhBQTU1KSB8fCAvLyBDaGVjayBib290IHNlY3RvciBzaWdu YXR1cmUNCj4gKyAgICAgIChCcC0+aGRyLmhlYWRlciAhPSBTRVRVUF9IRFIpIHx8DQo+ICsgICAg ICAoQnAtPmhkci52ZXJzaW9uIDwgMHgyMDUpIHx8IC8vIFdlIG9ubHkgc3VwcG9ydCByZWxvY2F0 YWJsZSBrZXJuZWxzDQo+ICsgICAgICAoIUJwLT5oZHIucmVsb2NhdGFibGVfa2VybmVsKQ0KPiAr ICAgICApIHsNCj4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiArICB9IGVsc2Ugew0K PiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsNCj4gK1VJ TlRODQo+ICtFRklBUEkNCj4gK0xvYWRMaW51eEdldEtlcm5lbFNpemUgKA0KPiArICBJTiBWT0lE ICAgICAgICAqS2VybmVsU2V0dXAsDQo+ICsgIElOIFVJTlROICAgICAgIEtlcm5lbFNpemUNCj4g KyAgKQ0KPiArew0KPiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcDsNCj4gKw0KPiAr ICBpZiAoRUZJX0VSUk9SIChCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKEtlcm5lbFNldHVwKSkpIHsN Cj4gKyAgICByZXR1cm4gMDsNCj4gKyAgfQ0KPiArDQo+ICsgIEJwID0gKHN0cnVjdCBib290X3Bh cmFtcyopIEtlcm5lbFNldHVwOw0KPiArDQo+ICsgIGlmIChCcC0+aGRyLnZlcnNpb24gPiAweDIw YSkgew0KPiArICAgIHJldHVybiBCcC0+aGRyLmluaXRfc2l6ZTsNCj4gKyAgfSBlbHNlIHsNCj4g KyAgICAvLw0KPiArICAgIC8vIEFkZCBleHRyYSBzaXplIGZvciBrZXJuZWwgZGVjb21wcmVzc2lv bg0KPiArICAgIC8vDQo+ICsgICAgcmV0dXJuIDMgKiBLZXJuZWxTaXplOw0KPiArICB9DQo+ICt9 DQo+ICsNCj4gKw0KPiArVk9JRCoNCj4gK0VGSUFQSQ0KPiArTG9hZExpbnV4QWxsb2NhdGVLZXJu ZWxTZXR1cFBhZ2VzICgNCj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBQYWdlcw0KPiAr ICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBF RklfUEhZU0lDQUxfQUREUkVTUyAgICAgIEFkZHJlc3M7DQo+ICsNCj4gKyAgQWRkcmVzcyA9IEJB U0VfMUdCOw0KPiArICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUGFnZXMgKA0KPiArICAgICAgICAg ICAgICAgICAgQWxsb2NhdGVNYXhBZGRyZXNzLA0KPiArICAgICAgICAgICAgICAgICAgRWZpTG9h ZGVyRGF0YSwNCj4gKyAgICAgICAgICAgICAgICAgIFBhZ2VzLA0KPiArICAgICAgICAgICAgICAg ICAgJkFkZHJlc3MNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmICghRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIChWT0lEKikoVUlOVE4pIEFkZHJlc3M7DQo+ICsg IH0gZWxzZSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArRUZJ X1NUQVRVUw0KPiArRUZJQVBJDQo+ICtMb2FkTGludXhJbml0aWFsaXplS2VybmVsU2V0dXAgKA0K PiArICBJTiBWT0lEICAgICAgICAqS2VybmVsU2V0dXANCj4gKyAgKQ0KPiArew0KPiArICBFRklf U1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICBTZXR1cEVuZDsNCj4gKyAgc3RydWN0IGJvb3RfcGFyYW1zICAgICAgICAqQnA7DQo+ICsN Cj4gKyAgU3RhdHVzID0gQmFzaWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCk7DQo+ICsg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9 DQo+ICsNCj4gKyAgQnAgPSAoc3RydWN0IGJvb3RfcGFyYW1zKikgS2VybmVsU2V0dXA7DQo+ICsN Cj4gKyAgU2V0dXBFbmQgPSAweDIwMiArIChCcC0+aGRyLmp1bXAgJiAweGZmKTsNCj4gKw0KPiAr ICAvLw0KPiArICAvLyBDbGVhciBhbGwgYnV0IHRoZSBzZXR1cF9oZWFkZXINCj4gKyAgLy8NCj4g KyAgWmVyb01lbSAoS2VybmVsU2V0dXAsIDB4MWYxKTsNCj4gKyAgWmVyb01lbSAoKChVSU5UOCAq KUtlcm5lbFNldHVwKSArIFNldHVwRW5kLCA0MDk2IC0gU2V0dXBFbmQpOw0KPiArICBERUJVRyAo KEVGSV9EX0lORk8sICJDbGVhcmVkIGtlcm5lbCBzZXR1cCAwLTB4MWYxLCAweCVMeC0weDEwMDBc biIsDQo+ICsgICAgKFVJTlQ2NClTZXR1cEVuZCkpOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gK30NCj4gKw0KPiArVk9JRCoNCj4gK0VGSUFQSQ0KPiArTG9hZExpbnV4QWxsb2Nh dGVLZXJuZWxQYWdlcyAoDQo+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgKktlcm5lbFNl dHVwLA0KPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgIFBhZ2VzDQo+ICsgICkNCj4gK3sN Cj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9QSFlTSUNB TF9BRERSRVNTICAgICAgS2VybmVsQWRkcmVzczsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBMb29wOw0KPiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcDsNCj4gKw0KPiAr ICBpZiAoRUZJX0VSUk9SIChCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKEtlcm5lbFNldHVwKSkpIHsN Cj4gKyAgICByZXR1cm4gTlVMTDsNCj4gKyAgfQ0KPiArDQo+ICsgIEJwID0gKHN0cnVjdCBib290 X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KPiArDQo+ICsgIGZvciAoTG9vcCA9IDE7IExvb3AgPCA1 MTI7IExvb3ArKykgew0KPiArICAgIEtlcm5lbEFkZHJlc3MgPSBNdWx0VTY0eDMyICgNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAyICogQnAtPmhkci5rZXJuZWxfYWxpZ25tZW50LA0KPiArICAg ICAgICAgICAgICAgICAgICAgIExvb3ANCj4gKyAgICAgICAgICAgICAgICAgICAgICApOw0KPiAr ICAgIFN0YXR1cyA9IGdCUy0+QWxsb2NhdGVQYWdlcyAoDQo+ICsgICAgICAgICAgICAgICAgICAg IEFsbG9jYXRlQWRkcmVzcywNCj4gKyAgICAgICAgICAgICAgICAgICAgRWZpTG9hZGVyRGF0YSwN Cj4gKyAgICAgICAgICAgICAgICAgICAgUGFnZXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICZL ZXJuZWxBZGRyZXNzDQo+ICsgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgaWYgKCFFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIHJldHVybiAoVk9JRCopKFVJTlROKSBLZXJuZWxB ZGRyZXNzOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBOVUxMOw0KPiArfQ0K PiArDQo+ICsNCj4gK1ZPSUQqDQo+ICtFRklBUEkNCj4gK0xvYWRMaW51eEFsbG9jYXRlQ29tbWFu ZExpbmVQYWdlcyAoDQo+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgUGFnZXMNCj4gKyAg KQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJ X1BIWVNJQ0FMX0FERFJFU1MgICAgICBBZGRyZXNzOw0KPiArDQo+ICsgIEFkZHJlc3MgPSAweGEw MDAwOw0KPiArICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUGFnZXMgKA0KPiArICAgICAgICAgICAg ICAgICAgQWxsb2NhdGVNYXhBZGRyZXNzLA0KPiArICAgICAgICAgICAgICAgICAgRWZpTG9hZGVy RGF0YSwNCj4gKyAgICAgICAgICAgICAgICAgIFBhZ2VzLA0KPiArICAgICAgICAgICAgICAgICAg JkFkZHJlc3MNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmICghRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIChWT0lEKikoVUlOVE4pIEFkZHJlc3M7DQo+ICsgIH0g ZWxzZSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArDQo+ICtW T0lEKg0KPiArRUZJQVBJDQo+ICtMb2FkTGludXhBbGxvY2F0ZUluaXRyZFBhZ2VzICgNCj4gKyAg SU4gVk9JRCAgICAgICAgICAgICAgICAgICAqS2VybmVsU2V0dXAsDQo+ICsgIElOIFVJTlROICAg ICAgICAgICAgICAgICAgUGFnZXMNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICBBZGRyZXNz Ow0KPiArDQo+ICsgIHN0cnVjdCBib290X3BhcmFtcyAgICAgICAgKkJwOw0KPiArDQo+ICsgIGlm IChFRklfRVJST1IgKEJhc2ljS2VybmVsU2V0dXBDaGVjayAoS2VybmVsU2V0dXApKSkgew0KPiAr ICAgIHJldHVybiBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAgQnAgPSAoc3RydWN0IGJvb3RfcGFy YW1zKikgS2VybmVsU2V0dXA7DQo+ICsNCj4gKyAgQWRkcmVzcyA9IChFRklfUEhZU0lDQUxfQURE UkVTUykoVUlOVE4pIEJwLT5oZHIucmFtZGlza19tYXg7DQo+ICsgIFN0YXR1cyA9IGdCUy0+QWxs b2NhdGVQYWdlcyAoDQo+ICsgICAgICAgICAgICAgICAgICBBbGxvY2F0ZU1heEFkZHJlc3MsDQo+ ICsgICAgICAgICAgICAgICAgICBFZmlMb2FkZXJEYXRhLA0KPiArICAgICAgICAgICAgICAgICAg UGFnZXMsDQo+ICsgICAgICAgICAgICAgICAgICAmQWRkcmVzcw0KPiArICAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gKFZP SUQqKShVSU5UTikgQWRkcmVzczsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICByZXR1cm4gTlVMTDsN Cj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArU2V0dXBMaW51 eE1lbW1hcCAoDQo+ICsgIElOIE9VVCBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcA0KPiAr ICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbXBNZW1vcnlN YXBbMV07DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBLZXk7 DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdG9yU2l6 ZTsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0b3JW ZXJzaW9uOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5 TWFwU2l6ZTsNCj4gKyAgRUZJX01FTU9SWV9ERVNDUklQVE9SICAgICAgICAgICAgICAgICpNZW1v cnlNYXA7DQo+ICsgIEVGSV9NRU1PUllfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAqTWVtb3J5 TWFwUHRyOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7 DQo+ICsgIHN0cnVjdCBlZmlfaW5mbyAgICAgICAgICAgICAgICAgICAgICAqRWZpOw0KPiArICBz dHJ1Y3QgZTgyMF9lbnRyeSAgICAgICAgICAgICAgICAgICAgKkxhc3RFODIwOw0KPiArICBzdHJ1 Y3QgZTgyMF9lbnRyeSAgICAgICAgICAgICAgICAgICAgKkU4MjA7DQo+ICsgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFODIwRW50cnlDb3VudDsNCj4gKyAgRUZJX1BIWVNJ Q0FMX0FERFJFU1MgICAgICAgICAgICAgICAgIExhc3RFbmRBZGRyOw0KPiArDQo+ICsgIC8vDQo+ ICsgIC8vIEdldCBTeXN0ZW0gTWVtb3J5TWFwU2l6ZQ0KPiArICAvLw0KPiArICBNZW1vcnlNYXBT aXplID0gc2l6ZW9mIChUbXBNZW1vcnlNYXApOw0KPiArICBTdGF0dXMgPSBnQlMtPkdldE1lbW9y eU1hcCAoDQo+ICsgICAgICAgICAgICAgICAgICAmTWVtb3J5TWFwU2l6ZSwNCj4gKyAgICAgICAg ICAgICAgICAgIChFRklfTUVNT1JZX0RFU0NSSVBUT1IgKilUbXBNZW1vcnlNYXAsDQo+ICsgICAg ICAgICAgICAgICAgICAmTWFwS2V5LA0KPiArICAgICAgICAgICAgICAgICAgJkRlc2NyaXB0b3JT aXplLA0KPiArICAgICAgICAgICAgICAgICAgJkRlc2NyaXB0b3JWZXJzaW9uDQo+ICsgICAgICAg ICAgICAgICAgICApOw0KPiArICBBU1NFUlQgKFN0YXR1cyA9PSBFRklfQlVGRkVSX1RPT19TTUFM TCk7DQo+ICsgIC8vDQo+ICsgIC8vIEVubGFyZ2Ugc3BhY2UgaGVyZSwgYmVjYXVzZSB3ZSB3aWxs IGFsbG9jYXRlIHBvb2wgbm93Lg0KPiArICAvLw0KPiArICBNZW1vcnlNYXBTaXplICs9IEVGSV9Q QUdFX1NJWkU7DQo+ICsgIFN0YXR1cyA9IGdCUy0+QWxsb2NhdGVQb29sICgNCj4gKyAgICAgICAg ICAgICAgICAgIEVmaUxvYWRlckRhdGEsDQo+ICsgICAgICAgICAgICAgICAgICBNZW1vcnlNYXBT aXplLA0KPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZNZW1vcnlNYXANCj4gKyAgICAg ICAgICAgICAgICAgICk7DQo+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ICsNCj4g KyAgLy8NCj4gKyAgLy8gR2V0IFN5c3RlbSBNZW1vcnlNYXANCj4gKyAgLy8NCj4gKyAgU3RhdHVz ID0gZ0JTLT5HZXRNZW1vcnlNYXAgKA0KPiArICAgICAgICAgICAgICAgICAgJk1lbW9yeU1hcFNp emUsDQo+ICsgICAgICAgICAgICAgICAgICBNZW1vcnlNYXAsDQo+ICsgICAgICAgICAgICAgICAg ICAmTWFwS2V5LA0KPiArICAgICAgICAgICAgICAgICAgJkRlc2NyaXB0b3JTaXplLA0KPiArICAg ICAgICAgICAgICAgICAgJkRlc2NyaXB0b3JWZXJzaW9uDQo+ICsgICAgICAgICAgICAgICAgICAp Ow0KPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArDQo+ICsgIExhc3RFODIwID0g TlVMTDsNCj4gKyAgRTgyMCA9ICZCcC0+ZTgyMF9tYXBbMF07DQo+ICsgIEU4MjBFbnRyeUNvdW50 ID0gMDsNCj4gKyAgTGFzdEVuZEFkZHIgPSAwOw0KPiArICBNZW1vcnlNYXBQdHIgPSBNZW1vcnlN YXA7DQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IChNZW1vcnlNYXBTaXplIC8gRGVzY3Jp cHRvclNpemUpOyBJbmRleCsrKSB7DQo+ICsgICAgVUlOVE4gRTgyMFR5cGUgPSAwOw0KPiArDQo+ ICsgICAgaWYgKE1lbW9yeU1hcC0+TnVtYmVyT2ZQYWdlcyA9PSAwKSB7DQo+ICsgICAgICBjb250 aW51ZTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBzd2l0Y2goTWVtb3J5TWFwLT5UeXBlKSB7DQo+ ICsgICAgY2FzZSBFZmlSZXNlcnZlZE1lbW9yeVR5cGU6DQo+ICsgICAgY2FzZSBFZmlSdW50aW1l U2VydmljZXNDb2RlOg0KPiArICAgIGNhc2UgRWZpUnVudGltZVNlcnZpY2VzRGF0YToNCj4gKyAg ICBjYXNlIEVmaU1lbW9yeU1hcHBlZElPOg0KPiArICAgIGNhc2UgRWZpTWVtb3J5TWFwcGVkSU9Q b3J0U3BhY2U6DQo+ICsgICAgY2FzZSBFZmlQYWxDb2RlOg0KPiArICAgICAgRTgyMFR5cGUgPSBF ODIwX1JFU0VSVkVEOw0KPiArICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIEVmaVVudXNh YmxlTWVtb3J5Og0KPiArICAgICAgRTgyMFR5cGUgPSBFODIwX1VOVVNBQkxFOw0KPiArICAgICAg YnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIEVmaUFDUElSZWNsYWltTWVtb3J5Og0KPiArICAgICAg RTgyMFR5cGUgPSBFODIwX0FDUEk7DQo+ICsgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2Ug RWZpTG9hZGVyQ29kZToNCj4gKyAgICBjYXNlIEVmaUxvYWRlckRhdGE6DQo+ICsgICAgY2FzZSBF ZmlCb290U2VydmljZXNDb2RlOg0KPiArICAgIGNhc2UgRWZpQm9vdFNlcnZpY2VzRGF0YToNCj4g KyAgICBjYXNlIEVmaUNvbnZlbnRpb25hbE1lbW9yeToNCj4gKyAgICAgIEU4MjBUeXBlID0gRTgy MF9SQU07DQo+ICsgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2UgRWZpQUNQSU1lbW9yeU5W UzoNCj4gKyAgICAgIEU4MjBUeXBlID0gRTgyMF9OVlM7DQo+ICsgICAgICBicmVhazsNCj4gKw0K PiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICBERUJVRyAoKA0KPiArICAgICAgICBFRklfRF9FUlJP UiwNCj4gKyAgICAgICAgIkludmFsaWQgRUZJIG1lbW9yeSBkZXNjcmlwdG9yIHR5cGUgKDB4JXgp IVxuIiwNCj4gKyAgICAgICAgTWVtb3J5TWFwLT5UeXBlDQo+ICsgICAgICAgICkpOw0KPiArICAg ICAgY29udGludWU7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKChMYXN0RTgyMCAhPSBOVUxM KSAmJg0KPiArICAgICAgICAoTGFzdEU4MjAtPnR5cGUgPT0gKFVJTlQzMikgRTgyMFR5cGUpICYm DQo+ICsgICAgICAgIChNZW1vcnlNYXAtPlBoeXNpY2FsU3RhcnQgPT0gTGFzdEVuZEFkZHIpKSB7 DQo+ICsgICAgICBMYXN0RTgyMC0+c2l6ZSArPSBFRklfUEFHRVNfVE9fU0laRSAoKFVJTlROKSBN ZW1vcnlNYXAtDQo+ID5OdW1iZXJPZlBhZ2VzKTsNCj4gKyAgICAgIExhc3RFbmRBZGRyICs9IEVG SV9QQUdFU19UT19TSVpFICgoVUlOVE4pIE1lbW9yeU1hcC0NCj4gPk51bWJlck9mUGFnZXMpOw0K PiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBpZiAoRTgyMEVudHJ5Q291bnQgPj0gKHNpemVvZiAo QnAtPmU4MjBfbWFwKSAvIHNpemVvZiAoQnAtDQo+ID5lODIwX21hcFswXSkpKSB7DQo+ICsgICAg ICAgIGJyZWFrOw0KPiArICAgICAgfQ0KPiArICAgICAgRTgyMC0+dHlwZSA9IChVSU5UMzIpIEU4 MjBUeXBlOw0KPiArICAgICAgRTgyMC0+YWRkciA9IE1lbW9yeU1hcC0+UGh5c2ljYWxTdGFydDsN Cj4gKyAgICAgIEU4MjAtPnNpemUgPSBFRklfUEFHRVNfVE9fU0laRSAoKFVJTlROKSBNZW1vcnlN YXAtDQo+ID5OdW1iZXJPZlBhZ2VzKTsNCj4gKyAgICAgIExhc3RFODIwID0gRTgyMDsNCj4gKyAg ICAgIExhc3RFbmRBZGRyID0gRTgyMC0+YWRkciArIEU4MjAtPnNpemU7DQo+ICsgICAgICBFODIw Kys7DQo+ICsgICAgICBFODIwRW50cnlDb3VudCsrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8v DQo+ICsgICAgLy8gR2V0IG5leHQgaXRlbQ0KPiArICAgIC8vDQo+ICsgICAgTWVtb3J5TWFwID0g KEVGSV9NRU1PUllfREVTQ1JJUFRPUiAqKSgoVUlOVE4pTWVtb3J5TWFwICsNCj4gRGVzY3JpcHRv clNpemUpOw0KPiArICB9DQo+ICsgIEJwLT5lODIwX2VudHJpZXMgPSAoVUlOVDgpIEU4MjBFbnRy eUNvdW50Ow0KPiArDQo+ICsgIEVmaSA9ICZCcC0+ZWZpX2luZm87DQo+ICsgIEVmaS0+ZWZpX3N5 c3RhYiA9IChVSU5UMzIpKFVJTlROKSBnU1Q7DQo+ICsgIEVmaS0+ZWZpX21lbWRlc2Nfc2l6ZSA9 IChVSU5UMzIpIERlc2NyaXB0b3JTaXplOw0KPiArICBFZmktPmVmaV9tZW1kZXNjX3ZlcnNpb24g PSBEZXNjcmlwdG9yVmVyc2lvbjsNCj4gKyAgRWZpLT5lZmlfbWVtbWFwID0gKFVJTlQzMikoVUlO VE4pIE1lbW9yeU1hcFB0cjsNCj4gKyAgRWZpLT5lZmlfbWVtbWFwX3NpemUgPSAoVUlOVDMyKSBN ZW1vcnlNYXBTaXplOw0KPiArI2lmZGVmIE1ERV9DUFVfSUEzMg0KPiArICBFZmktPmVmaV9sb2Fk ZXJfc2lnbmF0dXJlID0gU0lHTkFUVVJFXzMyICgnRScsICdMJywgJzMnLCAnMicpOw0KPiArI2Vs c2UNCj4gKyAgRWZpLT5lZmlfc3lzdGFiX2hpID0gKFVJTlQzMikgKCgoVUlOVDY0KShVSU5UTikg Z1NUKSA+PiAzMik7DQo+ICsgIEVmaS0+ZWZpX21lbW1hcF9oaSA9IChVSU5UMzIpICgoKFVJTlQ2 NCkoVUlOVE4pIE1lbW9yeU1hcFB0cikgPj4gMzIpOw0KPiArICBFZmktPmVmaV9sb2FkZXJfc2ln bmF0dXJlID0gU0lHTkFUVVJFXzMyICgnRScsICdMJywgJzYnLCAnNCcpOw0KPiArI2VuZGlmDQo+ ICsNCj4gKyAgZ0JTLT5FeGl0Qm9vdFNlcnZpY2VzIChnSW1hZ2VIYW5kbGUsIE1hcEtleSk7DQo+ ICt9DQo+ICsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtMb2FkTGludXhTZXRD b21tYW5kTGluZSAoDQo+ICsgIElOIE9VVCBWT0lEICAgICpLZXJuZWxTZXR1cCwNCj4gKyAgSU4g Q0hBUjggICAgICAgKkNvbW1hbmRMaW5lDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAg ICAgICAgICAgICBTdGF0dXM7DQo+ICsgIHN0cnVjdCBib290X3BhcmFtcyAgICAgKkJwOw0KPiAr DQo+ICsgIFN0YXR1cyA9IEJhc2ljS2VybmVsU2V0dXBDaGVjayAoS2VybmVsU2V0dXApOw0KPiAr ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAg fQ0KPiArDQo+ICsgIEJwID0gKHN0cnVjdCBib290X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KPiAr DQo+ICsgIEJwLT5oZHIuY21kX2xpbmVfcHRyID0gKFVJTlQzMikoVUlOVE4pIENvbW1hbmRMaW5l Ow0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0xvYWRMaW51eFNldEluaXRyZCAoDQo+ICsgIElOIE9VVCBW T0lEICAgICpLZXJuZWxTZXR1cCwNCj4gKyAgSU4gVk9JRCAgICAgICAgKkluaXRyZCwNCj4gKyAg SU4gVUlOVE4gICAgICAgSW5pdHJkU2l6ZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgU3RhdHVzOw0KPiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICpCcDsNCj4g Kw0KPiArICBTdGF0dXMgPSBCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKEtlcm5lbFNldHVwKTsNCj4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsg IH0NCj4gKw0KPiArICBCcCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMqKSBLZXJuZWxTZXR1cDsNCj4g Kw0KPiArICBCcC0+aGRyLnJhbWRpc2tfc3RhcnQgPSAoVUlOVDMyKShVSU5UTikgSW5pdHJkOw0K PiArICBCcC0+aGRyLnJhbWRpc2tfbGVuID0gKFVJTlQzMikgSW5pdHJkU2l6ZTsNCj4gKw0KPiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArU1RBVElDIFZPSUQNCj4g K0ZpbmRCaXRzICgNCj4gKyAgdW5zaWduZWQgbG9uZyBNYXNrLA0KPiArICBVSU5UOCAqUG9zLA0K PiArICBVSU5UOCAqU2l6ZQ0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ4IEZpcnN0LCBMZW47DQo+ ICsNCj4gKyAgRmlyc3QgPSAwOw0KPiArICBMZW4gPSAwOw0KPiArDQo+ICsgIGlmIChNYXNrKSB7 DQo+ICsgICAgd2hpbGUgKCEoTWFzayAmIDB4MSkpIHsNCj4gKyAgICAgIE1hc2sgPSBNYXNrID4+ IDE7DQo+ICsgICAgICBGaXJzdCsrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHdoaWxlIChNYXNr ICYgMHgxKSB7DQo+ICsgICAgICBNYXNrID0gTWFzayA+PiAxOw0KPiArICAgICAgTGVuKys7DQo+ ICsgICAgfQ0KPiArICB9DQo+ICsgICpQb3MgPSBGaXJzdDsNCj4gKyAgKlNpemUgPSBMZW47DQo+ ICt9DQo+ICsNCj4gKw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtTZXR1cEdyYXBoaWNz RnJvbUdvcCAoDQo+ICsgIHN0cnVjdCBzY3JlZW5faW5mbyAgICAgICAgICAgKlNpLA0KPiArICBF RklfR1JBUEhJQ1NfT1VUUFVUX1BST1RPQ09MICpHb3ANCj4gKyAgKQ0KPiArew0KPiArICBFRklf R1JBUEhJQ1NfT1VUUFVUX01PREVfSU5GT1JNQVRJT04gKkluZm87DQo+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTaXplOw0KPiArDQo+ICsgIFN0YXR1cyA9IEdvcC0+UXVlcnlN b2RlKEdvcCwgR29wLT5Nb2RlLT5Nb2RlLCAmU2l6ZSwgJkluZm8pOw0KPiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsg IC8qIFdlIGZvdW5kIGEgR09QICovDQo+ICsNCj4gKyAgLyogRUZJIGZyYW1lYnVmZmVyICovDQo+ ICsgIFNpLT5vcmlnX3ZpZGVvX2lzVkdBID0gMHg3MDsNCj4gKw0KPiArICBTaS0+b3JpZ194ID0g MDsNCj4gKyAgU2ktPm9yaWdfeSA9IDA7DQo+ICsgIFNpLT5vcmlnX3ZpZGVvX3BhZ2UgPSAwOw0K PiArICBTaS0+b3JpZ192aWRlb19tb2RlID0gMDsNCj4gKyAgU2ktPm9yaWdfdmlkZW9fY29scyA9 IDA7DQo+ICsgIFNpLT5vcmlnX3ZpZGVvX2xpbmVzID0gMDsNCj4gKyAgU2ktPm9yaWdfdmlkZW9f ZWdhX2J4ID0gMDsNCj4gKyAgU2ktPm9yaWdfdmlkZW9fcG9pbnRzID0gMDsNCj4gKw0KPiArICBT aS0+bGZiX2Jhc2UgPSAoVUlOVDMyKSBHb3AtPk1vZGUtPkZyYW1lQnVmZmVyQmFzZTsNCj4gKyAg U2ktPmxmYl9zaXplID0gKFVJTlQzMikgR29wLT5Nb2RlLT5GcmFtZUJ1ZmZlclNpemU7DQo+ICsg IFNpLT5sZmJfd2lkdGggPSAoVUlOVDE2KSBJbmZvLT5Ib3Jpem9udGFsUmVzb2x1dGlvbjsNCj4g KyAgU2ktPmxmYl9oZWlnaHQgPSAoVUlOVDE2KSBJbmZvLT5WZXJ0aWNhbFJlc29sdXRpb247DQo+ ICsgIFNpLT5wYWdlcyA9IDE7DQo+ICsgIFNpLT52ZXNhcG1fc2VnID0gMDsNCj4gKyAgU2ktPnZl c2FwbV9vZmYgPSAwOw0KPiArDQo+ICsgIGlmIChJbmZvLT5QaXhlbEZvcm1hdCA9PSBQaXhlbFJl ZEdyZWVuQmx1ZVJlc2VydmVkOEJpdFBlckNvbG9yKSB7DQo+ICsgICAgU2ktPmxmYl9kZXB0aCA9 IDMyOw0KPiArICAgIFNpLT5yZWRfc2l6ZSA9IDg7DQo+ICsgICAgU2ktPnJlZF9wb3MgPSAwOw0K PiArICAgIFNpLT5ncmVlbl9zaXplID0gODsNCj4gKyAgICBTaS0+Z3JlZW5fcG9zID0gODsNCj4g KyAgICBTaS0+Ymx1ZV9zaXplID0gODsNCj4gKyAgICBTaS0+Ymx1ZV9wb3MgPSAxNjsNCj4gKyAg ICBTaS0+cnN2ZF9zaXplID0gODsNCj4gKyAgICBTaS0+cnN2ZF9wb3MgPSAyNDsNCj4gKyAgICBT aS0+bGZiX2xpbmVsZW5ndGggPSAoVUlOVDE2KSAoSW5mby0+UGl4ZWxzUGVyU2NhbkxpbmUgKiA0 KTsNCj4gKw0KPiArICB9IGVsc2UgaWYgKEluZm8tPlBpeGVsRm9ybWF0ID09IFBpeGVsQmx1ZUdy ZWVuUmVkUmVzZXJ2ZWQ4Qml0UGVyQ29sb3IpIHsNCj4gKyAgICBTaS0+bGZiX2RlcHRoID0gMzI7 DQo+ICsgICAgU2ktPnJlZF9zaXplID0gODsNCj4gKyAgICBTaS0+cmVkX3BvcyA9IDE2Ow0KPiAr ICAgIFNpLT5ncmVlbl9zaXplID0gODsNCj4gKyAgICBTaS0+Z3JlZW5fcG9zID0gODsNCj4gKyAg ICBTaS0+Ymx1ZV9zaXplID0gODsNCj4gKyAgICBTaS0+Ymx1ZV9wb3MgPSAwOw0KPiArICAgIFNp LT5yc3ZkX3NpemUgPSA4Ow0KPiArICAgIFNpLT5yc3ZkX3BvcyA9IDI0Ow0KPiArICAgIFNpLT5s ZmJfbGluZWxlbmd0aCA9IChVSU5UMTYpIChJbmZvLT5QaXhlbHNQZXJTY2FuTGluZSAqIDQpOw0K PiArICB9IGVsc2UgaWYgKEluZm8tPlBpeGVsRm9ybWF0ID09IFBpeGVsQml0TWFzaykgew0KPiAr ICAgIEZpbmRCaXRzKEluZm8tPlBpeGVsSW5mb3JtYXRpb24uUmVkTWFzaywNCj4gKyAgICAgICAg JlNpLT5yZWRfcG9zLCAmU2ktPnJlZF9zaXplKTsNCj4gKyAgICBGaW5kQml0cyhJbmZvLT5QaXhl bEluZm9ybWF0aW9uLkdyZWVuTWFzaywNCj4gKyAgICAgICAgJlNpLT5ncmVlbl9wb3MsICZTaS0+ Z3JlZW5fc2l6ZSk7DQo+ICsgICAgRmluZEJpdHMoSW5mby0+UGl4ZWxJbmZvcm1hdGlvbi5CbHVl TWFzaywNCj4gKyAgICAgICAgJlNpLT5ibHVlX3BvcywgJlNpLT5ibHVlX3NpemUpOw0KPiArICAg IEZpbmRCaXRzKEluZm8tPlBpeGVsSW5mb3JtYXRpb24uUmVzZXJ2ZWRNYXNrLA0KPiArICAgICAg ICAmU2ktPnJzdmRfcG9zLCAmU2ktPnJzdmRfc2l6ZSk7DQo+ICsgICAgU2ktPmxmYl9kZXB0aCA9 IFNpLT5yZWRfc2l6ZSArIFNpLT5ncmVlbl9zaXplICsNCj4gKyAgICAgIFNpLT5ibHVlX3NpemUg KyBTaS0+cnN2ZF9zaXplOw0KPiArICAgIFNpLT5sZmJfbGluZWxlbmd0aCA9IChVSU5UMTYpICgo SW5mby0+UGl4ZWxzUGVyU2NhbkxpbmUgKiBTaS0+bGZiX2RlcHRoKSAvIDgpOw0KPiArICB9IGVs c2Ugew0KPiArICAgIFNpLT5sZmJfZGVwdGggPSA0Ow0KPiArICAgIFNpLT5yZWRfc2l6ZSA9IDA7 DQo+ICsgICAgU2ktPnJlZF9wb3MgPSAwOw0KPiArICAgIFNpLT5ncmVlbl9zaXplID0gMDsNCj4g KyAgICBTaS0+Z3JlZW5fcG9zID0gMDsNCj4gKyAgICBTaS0+Ymx1ZV9zaXplID0gMDsNCj4gKyAg ICBTaS0+Ymx1ZV9wb3MgPSAwOw0KPiArICAgIFNpLT5yc3ZkX3NpemUgPSAwOw0KPiArICAgIFNp LT5yc3ZkX3BvcyA9IDA7DQo+ICsgICAgU2ktPmxmYl9saW5lbGVuZ3RoID0gU2ktPmxmYl93aWR0 aCAvIDI7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsN Cj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArU2V0dXBHcmFwaGljcyAoDQo+ICsgIElOIE9V VCBzdHJ1Y3QgYm9vdF9wYXJhbXMgKkJwDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgICAgICAgKkhhbmRsZUJ1ZmZlcjsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAgICBIYW5kbGVDb3VudDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleDsNCj4gKyAgRUZJX0dSQVBISUNTX09VVFBVVF9QUk9UT0NPTCAgICAqR29wOw0KPiArDQo+ ICsgIFplcm9NZW0gKChWT0lEKikmQnAtPnNjcmVlbl9pbmZvLCBzaXplb2YoQnAtPnNjcmVlbl9p bmZvKSk7DQo+ICsNCj4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVIYW5kbGVCdWZmZXIgKA0KPiAr ICAgICAgICAgICAgICAgICAgQnlQcm90b2NvbCwNCj4gKyAgICAgICAgICAgICAgICAgICZnRWZp R3JhcGhpY3NPdXRwdXRQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0K PiArICAgICAgICAgICAgICAgICAgJkhhbmRsZUNvdW50LA0KPiArICAgICAgICAgICAgICAgICAg JkhhbmRsZUJ1ZmZlcg0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKCFFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBIYW5kbGVDb3Vu dDsgSW5kZXgrKykgew0KPiArICAgICAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlQnVmZmVyW0luZGV4XSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAmZ0VmaUdyYXBoaWNzT3V0cHV0UHJvdG9jb2xHdWlkLA0KPiArICAgICAg ICAgICAgICAgICAgICAgIChWT0lEKikgJkdvcA0KPiArICAgICAgICAgICAgICAgICAgICAgICk7 DQo+ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICAgIGNvbnRpbnVl Ow0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgICBTdGF0dXMgPSBTZXR1cEdyYXBoaWNzRnJvbUdv cCAoJkJwLT5zY3JlZW5faW5mbywgR29wKTsNCj4gKyAgICAgIGlmICghRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ICsgICAgICAgIEZyZWVQb29sIChIYW5kbGVCdWZmZXIpOw0KPiArICAgICAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgRnJl ZVBvb2wgKEhhbmRsZUJ1ZmZlcik7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gRUZJX05PVF9G T1VORDsNCj4gK30NCj4gKw0KPiArDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK1NldHVw TGludXhCb290UGFyYW1zICgNCj4gKyAgSU4gT1VUIHN0cnVjdCBib290X3BhcmFtcyAqQnANCj4g KyAgKQ0KPiArew0KPiArICBTZXR1cEdyYXBoaWNzIChCcCk7DQo+ICsNCj4gKyAgU2V0dXBMaW51 eE1lbW1hcCAoQnApOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0K PiArDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0xvYWRMaW51eCAoDQo+ICsgIElOIFZP SUQgICAgICAqS2VybmVsLA0KPiArICBJTiBPVVQgVk9JRCAgKktlcm5lbFNldHVwDQo+ICsgICkN Cj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIHN0cnVjdCBi b290X3BhcmFtcyAgKkJwOw0KPiArDQo+ICsgIFN0YXR1cyA9IEJhc2ljS2VybmVsU2V0dXBDaGVj ayAoS2VybmVsU2V0dXApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIEJwID0gKHN0cnVjdCBib290X3BhcmFt cyAqKSBLZXJuZWxTZXR1cDsNCj4gKw0KPiArICBpZiAoQnAtPmhkci52ZXJzaW9uIDwgMHgyMDUg fHwgIUJwLT5oZHIucmVsb2NhdGFibGVfa2VybmVsKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBX ZSBvbmx5IHN1cHBvcnQgcmVsb2NhdGFibGUga2VybmVscw0KPiArICAgIC8vDQo+ICsgICAgcmV0 dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgfQ0KPiArDQo+ICsgIEluaXRMaW51eERlc2NyaXB0 b3JUYWJsZXMgKCk7DQo+ICsNCj4gKyAgQnAtPmhkci5jb2RlMzJfc3RhcnQgPSAoVUlOVDMyKShV SU5UTikgS2VybmVsOw0KPiArICBpZiAoQnAtPmhkci52ZXJzaW9uID49IDB4MjBjICYmIEJwLT5o ZHIuaGFuZG92ZXJfb2Zmc2V0ICYmDQo+ICsgICAgICAoQnAtPmhkci54bG9hZGZsYWdzICYgKHNp emVvZiAoVUlOVE4pID09IDQgPyBCSVQyIDogQklUMykpKSB7DQo+ICsgICAgREVCVUcgKChFRklf RF9JTkZPLCAiSnVtcGluZyB0byBrZXJuZWwgRUZJIGhhbmRvdmVyIHBvaW50IGF0IG9mcyAleFxu IiwNCj4gQnAtPmhkci5oYW5kb3Zlcl9vZmZzZXQpKTsNCj4gKw0KPiArICAgIERpc2FibGVJbnRl cnJ1cHRzICgpOw0KPiArICAgIEp1bXBUb1VlZmlLZXJuZWwgKChWT0lEKikgZ0ltYWdlSGFuZGxl LCAoVk9JRCopIGdTVCwgS2VybmVsU2V0dXAsDQo+IEtlcm5lbCk7DQo+ICsgIH0NCj4gKw0KPiAr ICAvLw0KPiArICAvLyBPbGQga2VybmVscyB3aXRob3V0IEVGSSBoYW5kb3ZlciBwcm90b2NvbA0K PiArICAvLw0KPiArICBTZXR1cExpbnV4Qm9vdFBhcmFtcyAoS2VybmVsU2V0dXApOw0KPiArDQo+ ICsgIERFQlVHICgoRUZJX0RfSU5GTywgIkp1bXBpbmcgdG8ga2VybmVsXG4iKSk7DQo+ICsgIERp c2FibGVJbnRlcnJ1cHRzICgpOw0KPiArICBTZXRMaW51eERlc2NyaXB0b3JUYWJsZXMgKCk7DQo+ ICsgIEp1bXBUb0tlcm5lbCAoS2VybmVsLCAoVk9JRCopIEtlcm5lbFNldHVwKTsNCj4gKw0KPiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9MaW51eEdk dC5jDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExp bnV4TGliL0xpbnV4R2R0LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uNjI0ZmJjMzdjYg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9MaW51eEdkdC5jDQo+IEBA IC0wLDAgKzEsMTc1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5pdGlhbGl6ZSBHRFQgZm9yIExp bnV4Lg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTIgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJM b2FkTGludXhMaWIuaCINCj4gKw0KPiArDQo+ICsvLw0KPiArLy8gTG9jYWwgc3RydWN0dXJlIGRl ZmluaXRpb25zDQo+ICsvLw0KPiArDQo+ICsjcHJhZ21hIHBhY2sgKDEpDQo+ICsNCj4gKy8vDQo+ ICsvLyBHbG9iYWwgRGVzY3JpcHRvciBFbnRyeSBzdHJ1Y3R1cmVzDQo+ICsvLw0KPiArDQo+ICt0 eXBlZGVmIHN0cnVjdCBfR0RUX0VOVFJZIHsNCj4gKyAgVUlOVDE2IExpbWl0MTVfMDsNCj4gKyAg VUlOVDE2IEJhc2UxNV8wOw0KPiArICBVSU5UOCAgQmFzZTIzXzE2Ow0KPiArICBVSU5UOCAgVHlw ZTsNCj4gKyAgVUlOVDggIExpbWl0MTlfMTZfYW5kX2ZsYWdzOw0KPiArICBVSU5UOCAgQmFzZTMx XzI0Ow0KPiArfSBHRFRfRU5UUlk7DQo+ICsNCj4gK3R5cGVkZWYNCj4gK3N0cnVjdCBfR0RUX0VO VFJJRVMgew0KPiArICBHRFRfRU5UUlkgTnVsbDsNCj4gKyAgR0RUX0VOVFJZIE51bGwyOw0KPiAr ICBHRFRfRU5UUlkgTGluZWFyOw0KPiArICBHRFRfRU5UUlkgTGluZWFyQ29kZTsNCj4gKyAgR0RU X0VOVFJZIFRhc2tTZWdtZW50Ow0KPiArICBHRFRfRU5UUlkgU3BhcmU0Ow0KPiArICBHRFRfRU5U UlkgU3BhcmU1Ow0KPiArfSBHRFRfRU5UUklFUzsNCj4gKw0KPiArI3ByYWdtYSBwYWNrICgpDQo+ ICsNCj4gK1NUQVRJQyBHRFRfRU5UUklFUyAqbUdkdCA9IE5VTEw7DQo+ICsNCj4gKy8vDQo+ICsv LyBHbG9iYWwgZGVzY3JpcHRvciB0YWJsZSAoR0RUKSBUZW1wbGF0ZQ0KPiArLy8NCj4gK1NUQVRJ QyBHRFRfRU5UUklFUyBHZHRUZW1wbGF0ZSA9IHsNCj4gKyAgLy8NCj4gKyAgLy8gTnVsbA0KPiAr ICAvLw0KPiArICB7DQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGxpbWl0IDE1OjANCj4gKyAg ICAweDAsICAgICAgICAgICAgLy8gYmFzZSAxNTowDQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8v IGJhc2UgMjM6MTYNCj4gKyAgICAweDAsICAgICAgICAgICAgLy8gdHlwZQ0KPiArICAgIDB4MCwg ICAgICAgICAgICAvLyBsaW1pdCAxOToxNiwgZmxhZ3MNCj4gKyAgICAweDAsICAgICAgICAgICAg Ly8gYmFzZSAzMToyNA0KPiArICB9LA0KPiArICAvLw0KPiArICAvLyBOdWxsMg0KPiArICAvLw0K PiArICB7DQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGxpbWl0IDE1OjANCj4gKyAgICAweDAs ICAgICAgICAgICAgLy8gYmFzZSAxNTowDQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2Ug MjM6MTYNCj4gKyAgICAweDAsICAgICAgICAgICAgLy8gdHlwZQ0KPiArICAgIDB4MCwgICAgICAg ICAgICAvLyBsaW1pdCAxOToxNiwgZmxhZ3MNCj4gKyAgICAweDAsICAgICAgICAgICAgLy8gYmFz ZSAzMToyNA0KPiArICB9LA0KPiArICAvLw0KPiArICAvLyBMaW5lYXINCj4gKyAgLy8NCj4gKyAg ew0KPiArICAgIDB4MEZGRkYsICAgICAgICAvLyBsaW1pdCAweEZGRkZGDQo+ICsgICAgMHgwLCAg ICAgICAgICAgIC8vIGJhc2UgMA0KPiArICAgIDB4MCwNCj4gKyAgICAweDA5QSwgICAgICAgICAg Ly8gcHJlc2VudCwgcmluZyAwLCBkYXRhLCBleHBhbmQtdXAsIHdyaXRhYmxlDQo+ICsgICAgMHgw Q0YsICAgICAgICAgIC8vIHBhZ2UtZ3JhbnVsYXIsIDMyLWJpdA0KPiArICAgIDB4MCwNCj4gKyAg fSwNCj4gKyAgLy8NCj4gKyAgLy8gTGluZWFyQ29kZQ0KPiArICAvLw0KPiArICB7DQo+ICsgICAg MHgwRkZGRiwgICAgICAgIC8vIGxpbWl0IDB4RkZGRkYNCj4gKyAgICAweDAsICAgICAgICAgICAg Ly8gYmFzZSAwDQo+ICsgICAgMHgwLA0KPiArICAgIDB4MDkyLCAgICAgICAgICAvLyBwcmVzZW50 LCByaW5nIDAsIGRhdGEsIGV4cGFuZC11cCwgd3JpdGFibGUNCj4gKyAgICAweDBDRiwgICAgICAg ICAgLy8gcGFnZS1ncmFudWxhciwgMzItYml0DQo+ICsgICAgMHgwLA0KPiArICB9LA0KPiArICAv Lw0KPiArICAvLyBUYXNrU2VnbWVudA0KPiArICAvLw0KPiArICB7DQo+ICsgICAgMHgwLCAgICAg ICAgICAgIC8vIGxpbWl0IDANCj4gKyAgICAweDAsICAgICAgICAgICAgLy8gYmFzZSAwDQo+ICsg ICAgMHgwLA0KPiArICAgIDB4MDg5LCAgICAgICAgICAvLyA/DQo+ICsgICAgMHgwODAsICAgICAg ICAgIC8vID8NCj4gKyAgICAweDAsDQo+ICsgIH0sDQo+ICsgIC8vDQo+ICsgIC8vIFNwYXJlNA0K PiArICAvLw0KPiArICB7DQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGxpbWl0IDANCj4gKyAg ICAweDAsICAgICAgICAgICAgLy8gYmFzZSAwDQo+ICsgICAgMHgwLA0KPiArICAgIDB4MCwgICAg ICAgICAgICAvLyBwcmVzZW50LCByaW5nIDAsIGRhdGEsIGV4cGFuZC11cCwgd3JpdGFibGUNCj4g KyAgICAweDAsICAgICAgICAgICAgLy8gcGFnZS1ncmFudWxhciwgMzItYml0DQo+ICsgICAgMHgw LA0KPiArICB9LA0KPiArICAvLw0KPiArICAvLyBTcGFyZTUNCj4gKyAgLy8NCj4gKyAgew0KPiAr ICAgIDB4MCwgICAgICAgICAgICAvLyBsaW1pdCAwDQo+ICsgICAgMHgwLCAgICAgICAgICAgIC8v IGJhc2UgMA0KPiArICAgIDB4MCwNCj4gKyAgICAweDAsICAgICAgICAgICAgLy8gcHJlc2VudCwg cmluZyAwLCBkYXRhLCBleHBhbmQtdXAsIHdyaXRhYmxlDQo+ICsgICAgMHgwLCAgICAgICAgICAg IC8vIHBhZ2UtZ3JhbnVsYXIsIDMyLWJpdA0KPiArICAgIDB4MCwNCj4gKyAgfSwNCj4gK307DQo+ ICsNCj4gKy8qKg0KPiArICBJbml0aWFsaXplIEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlLg0KPiAr DQo+ICsqKi8NCj4gK1ZPSUQNCj4gK0luaXRMaW51eERlc2NyaXB0b3JUYWJsZXMgKA0KPiArICBW T0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgLy8NCj4gKyAgLy8gQWxsb2NhdGUgUnVudGltZSBEYXRh IGZvciB0aGUgR0RUDQo+ICsgIC8vDQo+ICsgIG1HZHQgPSBBbGxvY2F0ZVJ1bnRpbWVQb29sIChz aXplb2YgKEdkdFRlbXBsYXRlKSArIDgpOw0KPiArICBBU1NFUlQgKG1HZHQgIT0gTlVMTCk7DQo+ ICsgIG1HZHQgPSBBTElHTl9QT0lOVEVSIChtR2R0LCA4KTsNCj4gKw0KPiArICAvLw0KPiArICAv LyBJbml0aWFsaXplIGFsbCBHRFQgZW50cmllcw0KPiArICAvLw0KPiArICBDb3B5TWVtIChtR2R0 LCAmR2R0VGVtcGxhdGUsIHNpemVvZiAoR2R0VGVtcGxhdGUpKTsNCj4gKw0KPiArfQ0KPiArDQo+ ICsvKioNCj4gKyAgSW5pdGlhbGl6ZSBHbG9iYWwgRGVzY3JpcHRvciBUYWJsZS4NCj4gKw0KPiAr KiovDQo+ICtWT0lEDQo+ICtTZXRMaW51eERlc2NyaXB0b3JUYWJsZXMgKA0KPiArICBWT0lEDQo+ ICsgICkNCj4gK3sNCj4gKyAgSUEzMl9ERVNDUklQVE9SIEdkdFB0cjsNCj4gKyAgSUEzMl9ERVND UklQVE9SIElkdFB0cjsNCj4gKw0KPiArICAvLw0KPiArICAvLyBXcml0ZSBHRFQgcmVnaXN0ZXIN Cj4gKyAgLy8NCj4gKyAgR2R0UHRyLkJhc2UgPSAoVUlOVDMyKShVSU5UTikoVk9JRCopIG1HZHQ7 DQo+ICsgIEdkdFB0ci5MaW1pdCA9IChVSU5UMTYpIChzaXplb2YgKEdkdFRlbXBsYXRlKSAtIDEp Ow0KPiArICBBc21Xcml0ZUdkdHIgKCZHZHRQdHIpOw0KPiArDQo+ICsgIElkdFB0ci5CYXNlID0g KFVJTlQzMikgMDsNCj4gKyAgSWR0UHRyLkxpbWl0ID0gKFVJTlQxNikgMDsNCj4gKyAgQXNtV3Jp dGVJZHRyICgmSWR0UHRyKTsNCj4gK30NCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9Gc0FjY2Vzcy5j DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmls ZUxpYi9Gc0FjY2Vzcy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAuLjZiYTg3ODRjZjMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL0ZzQWNjZXNzLmMNCj4gQEAg LTAsMCArMSw1MDcgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBGaWxlIFN5c3RlbSBBY2Nlc3MgZm9y IE52VmFyc0ZpbGVMaWINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMDQgLSAyMDE0IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsj aW5jbHVkZSAiTnZWYXJzRmlsZUxpYi5oIg0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNl TWVtb3J5TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArDQo+ICsNCj4gKy8qKg0KPiAr ICBPcGVuIHRoZSBOdlZhcnMgZmlsZSBmb3IgcmVhZGluZyBvciB3cml0aW5nDQo+ICsNCj4gKyAg QHBhcmFtW2luXSAgRnNIYW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Q cm90b2NvbEd1aWQNCj4gaW5zdGFuY2UNCj4gKyAgQHBhcmFtW2luXSAgUmVhZGluZ0ZpbGUgLSBU UlVFOiBvcGVuIHRoZSBmaWxlIGZvciByZWFkaW5nLiAgRkFMU0U6IHdyaXRpbmcNCj4gKyAgQHBh cmFtW291dF0gTnZWYXJzRmlsZSAtIElmIEVGSV9TVUNDRVNTIGlzIHJldHVybmVkLCB0aGVuIHRo aXMgaXMgdXBkYXRlZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgb3Bl bmVkIE52VmFycyBmaWxlLg0KPiArDQo+ICsgIEByZXR1cm4gICAgIEVGSV9TVUNDRVNTIGlmIHRo ZSBmaWxlIHdhcyBvcGVuZWQNCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtHZXROdlZh cnNGaWxlICgNCj4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICBGc0hhbmRsZSwNCj4gKyAg SU4gIEJPT0xFQU4gICAgICAgICAgICAgICBSZWFkaW5nRmlsZSwNCj4gKyAgT1VUIEVGSV9GSUxF X0hBTkRMRSAgICAgICAqTnZWYXJzRmlsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfU0lNUExFX0ZJTEVf U1lTVEVNX1BST1RPQ09MICAgICAgICpGczsNCj4gKyAgRUZJX0ZJTEVfSEFORExFICAgICAgICAg ICAgICAgICAgICAgICBSb290Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCB0aGUgRmlsZVN5 c3RlbSBwcm90b2NvbCBvbiB0aGF0IGhhbmRsZQ0KPiArICAvLw0KPiArICBTdGF0dXMgPSBnQlMt PkhhbmRsZVByb3RvY29sICgNCj4gKyAgICAgICAgICAgICAgICAgIEZzSGFuZGxlLA0KPiArICAg ICAgICAgICAgICAgICAgJmdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkLA0KPiArICAg ICAgICAgICAgICAgICAgKFZPSUQgKiopJkZzDQo+ICsgICAgICAgICAgICAgICAgICApOw0KPiAr ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAg fQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCB0aGUgdm9sdW1lICh0aGUgcm9vdCBkaXJlY3Rv cnkpDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IEZzLT5PcGVuVm9sdW1lIChGcywgJlJvb3QpOw0K PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g KyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEF0dGVtcHQgdG8gb3BlbiB0aGUgTnZWYXJzIGZp bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5DQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IFJvb3QtPk9w ZW4gKA0KPiArICAgICAgICAgICAgICAgICAgIFJvb3QsDQo+ICsgICAgICAgICAgICAgICAgICAg TnZWYXJzRmlsZSwNCj4gKyAgICAgICAgICAgICAgICAgICBMIk52VmFycyIsDQo+ICsgICAgICAg ICAgICAgICAgICAgUmVhZGluZ0ZpbGUgPw0KPiArICAgICAgICAgICAgICAgICAgICAgRUZJX0ZJ TEVfTU9ERV9SRUFEIDoNCj4gKyAgICAgICAgICAgICAgICAgICAgICgNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9DUkVBVEUgfA0KPiArICAgICAgICAgICAgICAgICAg ICAgICBFRklfRklMRV9NT0RFX1JFQUQgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICBFRklf RklMRV9NT0RFX1dSSVRFDQo+ICsgICAgICAgICAgICAgICAgICAgICApLA0KPiArICAgICAgICAg ICAgICAgICAgIDANCj4gKyAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIHJldHVybiBT dGF0dXM7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIE9wZW4gdGhlIE52VmFycyBmaWxl IGZvciByZWFkaW5nIG9yIHdyaXRpbmcNCj4gKw0KPiArICBAcGFyYW1baW5dICBGaWxlIC0gVGhl IGZpbGUgdG8gaW5zcGVjdA0KPiArICBAcGFyYW1bb3V0XSBFeGlzdHMgLSBSZXR1cm5zIHdoZXRo ZXIgdGhlIGZpbGUgZXhpc3RzDQo+ICsgIEBwYXJhbVtvdXRdIFNpemUgLSBSZXR1cm5zIHRoZSBz aXplIG9mIHRoZSBmaWxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAoMCBpZiB0aGUgZmlsZSBk b2VzIG5vdCBleGlzdCkNCj4gKw0KPiArKiovDQo+ICtWT0lEDQo+ICtOdlZhcnNGaWxlUmVhZENo ZWNrdXAgKA0KPiArICBJTiAgRUZJX0ZJTEVfSEFORExFICAgICAgICBGaWxlLA0KPiArICBPVVQg Qk9PTEVBTiAgICAgICAgICAgICAgICAqRXhpc3RzLA0KPiArICBPVVQgVUlOVE4gICAgICAgICAg ICAgICAgICAqU2l6ZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9GSUxFX0lORk8gICAgICAgICAg ICAgICAqRmlsZUluZm87DQo+ICsNCj4gKyAgKkV4aXN0cyA9IEZBTFNFOw0KPiArICAqU2l6ZSA9 IDA7DQo+ICsNCj4gKyAgRmlsZUluZm8gPSBGaWxlSGFuZGxlR2V0SW5mbyAoRmlsZSk7DQo+ICsg IGlmIChGaWxlSW5mbyA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4g KyAgaWYgKChGaWxlSW5mby0+QXR0cmlidXRlICYgRUZJX0ZJTEVfRElSRUNUT1JZKSAhPSAwKSB7 DQo+ICsgICAgRnJlZVBvb2wgKEZpbGVJbmZvKTsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4g Kw0KPiArICAqRXhpc3RzID0gVFJVRTsNCj4gKyAgKlNpemUgPSAoVUlOVE4pIEZpbGVJbmZvLT5G aWxlU2l6ZTsNCj4gKw0KPiArICBGcmVlUG9vbCAoRmlsZUluZm8pOw0KPiArfQ0KPiArDQo+ICsN Cj4gKy8qKg0KPiArICBPcGVuIHRoZSBOdlZhcnMgZmlsZSBmb3IgcmVhZGluZyBvciB3cml0aW5n DQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgRmlsZSAtIFRoZSBmaWxlIHRvIGluc3BlY3QNCj4gKyAg QHBhcmFtW291dF0gRXhpc3RzIC0gUmV0dXJucyB3aGV0aGVyIHRoZSBmaWxlIGV4aXN0cw0KPiAr ICBAcGFyYW1bb3V0XSBTaXplIC0gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZmlsZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgKDAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QpDQo+ICsNCj4g KyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRmlsZUhhbmRsZUVtcHR5ICgNCj4gKyAgSU4gIEVGSV9G SUxFX0hBTkRMRSAgICAgICAgRmlsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9GSUxFX0lORk8gICAgICAgICAgICAgICAq RmlsZUluZm87DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUmV0cmlldmUgdGhlIEZpbGVJbmZvIHN0 cnVjdHVyZQ0KPiArICAvLw0KPiArICBGaWxlSW5mbyA9IEZpbGVIYW5kbGVHZXRJbmZvIChGaWxl KTsNCj4gKyAgaWYgKEZpbGVJbmZvID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFM SURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSWYgdGhlIHBhdGgg aXMgYSBkaXJlY3RvcnksIHRoZW4gcmV0dXJuIGFuIGVycm9yDQo+ICsgIC8vDQo+ICsgIGlmICgo RmlsZUluZm8tPkF0dHJpYnV0ZSAmIEVGSV9GSUxFX0RJUkVDVE9SWSkgIT0gMCkgew0KPiArICAg IEZyZWVQb29sIChGaWxlSW5mbyk7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIElmIHRoZSBmaWxlIHNpemUgaXMgYWxy ZWFkeSAwLCB0aGVuIGl0IGlzIGVtcHR5LCBzbw0KPiArICAvLyB3ZSBjYW4gcmV0dXJuIHN1Y2Nl c3MuDQo+ICsgIC8vDQo+ICsgIGlmIChGaWxlSW5mby0+RmlsZVNpemUgPT0gMCkgew0KPiArICAg IEZyZWVQb29sIChGaWxlSW5mbyk7DQo+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArICB9 DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gU2V0IHRoZSBmaWxlIHNpemUgdG8gMC4NCj4gKyAgLy8N Cj4gKyAgRmlsZUluZm8tPkZpbGVTaXplID0gMDsNCj4gKyAgU3RhdHVzID0gRmlsZUhhbmRsZVNl dEluZm8gKEZpbGUsIEZpbGVJbmZvKTsNCj4gKw0KPiArICBGcmVlUG9vbCAoRmlsZUluZm8pOw0K PiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFJl YWRzIGEgZmlsZSB0byBhIG5ld2x5IGFsbG9jYXRlZCBidWZmZXINCj4gKw0KPiArICBAcGFyYW1b aW5dICBGaWxlIC0gVGhlIGZpbGUgdG8gcmVhZA0KPiArICBAcGFyYW1baW5dICBSZWFkU2l6ZSAt IFRoZSBzaXplIG9mIGRhdGEgdG8gcmVhZCBmcm9tIHRoZSBmaWxlDQo+ICsNCj4gKyAgQHJldHVy biAgICAgUG9pbnRlciB0byBidWZmZXIgYWxsb2NhdGVkIHRvIGhvbGQgdGhlIGZpbGUNCj4gKyAg ICAgICAgICAgICAgY29udGVudHMuICBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkLg0KPiArDQo+ ICsqKi8NCj4gK1ZPSUQqDQo+ICtGaWxlSGFuZGxlUmVhZFRvTmV3QnVmZmVyICgNCj4gKyAgSU4g RUZJX0ZJTEVfSEFORExFICAgICAgICAgICAgRmlsZUhhbmRsZSwNCj4gKyAgSU4gVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgUmVhZFNpemUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVT ICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgQWN0dWFsUmVhZFNpemU7DQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAqRmls ZUNvbnRlbnRzOw0KPiArDQo+ICsgIEFjdHVhbFJlYWRTaXplID0gUmVhZFNpemU7DQo+ICsgIEZp bGVDb250ZW50cyA9IEFsbG9jYXRlUG9vbCAoUmVhZFNpemUpOw0KPiArICBpZiAoRmlsZUNvbnRl bnRzICE9IE5VTEwpIHsNCj4gKyAgICBTdGF0dXMgPSBGaWxlSGFuZGxlUmVhZCAoDQo+ICsgICAg ICAgICAgICAgICBGaWxlSGFuZGxlLA0KPiArICAgICAgICAgICAgICAgJlJlYWRTaXplLA0KPiAr ICAgICAgICAgICAgICAgRmlsZUNvbnRlbnRzDQo+ICsgICAgICAgICAgICAgICApOw0KPiArICAg IGlmIChFRklfRVJST1IgKFN0YXR1cykgfHwgKEFjdHVhbFJlYWRTaXplICE9IFJlYWRTaXplKSkg ew0KPiArICAgICAgRnJlZVBvb2wgKEZpbGVDb250ZW50cyk7DQo+ICsgICAgICByZXR1cm4gTlVM TDsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gRmlsZUNvbnRlbnRzOw0KPiAr fQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBSZWFkcyB0aGUgY29udGVudHMgb2YgdGhlIE52VmFy cyBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbQ0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIEZzSGFuZGxl IC0gSGFuZGxlIGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkDQo+IGluc3Rh bmNlDQo+ICsNCj4gKyAgQHJldHVybiAgICAgRUZJX1NUQVRVUyBiYXNlZCBvbiB0aGUgc3VjY2Vz cyBvciBmYWlsdXJlIG9mIHRoZSBmaWxlIHJlYWQNCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVT DQo+ICtSZWFkTnZWYXJzRmlsZSAoDQo+ICsgIElOICBFRklfSEFORExFICAgICAgICAgICAgRnNI YW5kbGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiArICBFRklfRklMRV9IQU5ETEUgICAgICAgICAgICAgRmlsZTsNCj4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgIEZpbGVTaXplOw0KPiArICBCT09MRUFOICAgICAgICAgICAg ICAgICAgICAgRmlsZUV4aXN0czsNCj4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICpG aWxlQ29udGVudHM7DQo+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICBTZXJpYWxpemVk VmFyaWFibGVzOw0KPiArDQo+ICsgIFN0YXR1cyA9IEdldE52VmFyc0ZpbGUgKEZzSGFuZGxlLCBU UlVFLCAmRmlsZSk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJV RyAoKEVGSV9EX0lORk8sICJGc0FjY2Vzcy5jOiBDb3VsZCBub3Qgb3BlbiBOViBWYXJpYWJsZXMg ZmlsZSBvbiB0aGlzDQo+IGZpbGUgc3lzdGVtXG4iKSk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsN Cj4gKyAgfQ0KPiArDQo+ICsgIE52VmFyc0ZpbGVSZWFkQ2hlY2t1cCAoRmlsZSwgJkZpbGVFeGlz dHMsICZGaWxlU2l6ZSk7DQo+ICsgIGlmIChGaWxlU2l6ZSA9PSAwKSB7DQo+ICsgICAgRmlsZUhh bmRsZUNsb3NlIChGaWxlKTsNCj4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiArICB9 DQo+ICsNCj4gKyAgRmlsZUNvbnRlbnRzID0gRmlsZUhhbmRsZVJlYWRUb05ld0J1ZmZlciAoRmls ZSwgRmlsZVNpemUpOw0KPiArICBpZiAoRmlsZUNvbnRlbnRzID09IE5VTEwpIHsNCj4gKyAgICBG aWxlSGFuZGxlQ2xvc2UgKEZpbGUpOw0KPiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ ICsgIH0NCj4gKw0KPiArICBERUJVRyAoKA0KPiArICAgIEVGSV9EX0lORk8sDQo+ICsgICAgIkZz QWNjZXNzLmM6IFJlYWQgJUx1IGJ5dGVzIGZyb20gTlYgVmFyaWFibGVzIGZpbGVcbiIsDQo+ICsg ICAgKFVJTlQ2NClGaWxlU2l6ZQ0KPiArICAgICkpOw0KPiArDQo+ICsgIFN0YXR1cyA9IFNlcmlh bGl6ZVZhcmlhYmxlc05ld0luc3RhbmNlRnJvbUJ1ZmZlciAoDQo+ICsgICAgICAgICAgICAgJlNl cmlhbGl6ZWRWYXJpYWJsZXMsDQo+ICsgICAgICAgICAgICAgRmlsZUNvbnRlbnRzLA0KPiArICAg ICAgICAgICAgIEZpbGVTaXplDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKCFSRVRVUk5f RVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBTdGF0dXMgPSBTZXJpYWxpemVWYXJpYWJsZXNTZXRT ZXJpYWxpemVkVmFyaWFibGVzIChTZXJpYWxpemVkVmFyaWFibGVzKTsNCj4gKyAgfQ0KPiArDQo+ ICsgIEZyZWVQb29sIChGaWxlQ29udGVudHMpOw0KPiArICBGaWxlSGFuZGxlQ2xvc2UgKEZpbGUp Ow0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsg IFdyaXRlcyBhIHZhcmlhYmxlIHRvIGluZGljYXRlIHRoYXQgdGhlIE5WIHZhcmlhYmxlcw0KPiAr ICBoYXZlIGJlZW4gbG9hZGVkIGZyb20gdGhlIGZpbGUgc3lzdGVtLg0KPiArDQo+ICsqKi8NCj4g K1NUQVRJQw0KPiArVk9JRA0KPiArU2V0TnZWYXJzVmFyaWFibGUgKA0KPiArICBWT0lEDQo+ICsg ICkNCj4gK3sNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgIFZhckRhdGE7DQo+ ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplOw0KPiArDQo+ICsgIC8vDQo+ ICsgIC8vIFdyaXRlIGEgdmFyaWFibGUgdG8gaW5kaWNhdGUgd2UndmUgYWxyZWFkeSBsb2FkZWQg dGhlDQo+ICsgIC8vIHZhcmlhYmxlIGRhdGEuICBJZiBpdCBpcyBmb3VuZCwgd2Ugc2tpcCB0aGUg bG9hZGluZyBvbg0KPiArICAvLyBzdWJzZXF1ZW50IGF0dGVtcHRzLg0KPiArICAvLw0KPiArICBT aXplID0gc2l6ZW9mIChWYXJEYXRhKTsNCj4gKyAgVmFyRGF0YSA9IFRSVUU7DQo+ICsgIGdSVC0+ U2V0VmFyaWFibGUgKA0KPiArICAgICAgICAgTCJOdlZhcnMiLA0KPiArICAgICAgICAgJmdFZmlT aW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgRUZJX1ZBUklBQkxFX05P Tl9WT0xBVElMRSB8DQo+ICsgICAgICAgICAgIEVGSV9WQVJJQUJMRV9CT09UU0VSVklDRV9BQ0NF U1MgfA0KPiArICAgICAgICAgICBFRklfVkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MsDQo+ICsgICAg ICAgICBTaXplLA0KPiArICAgICAgICAgKFZPSUQqKSAmVmFyRGF0YQ0KPiArICAgICAgICAgKTsN Cj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgTG9hZHMgdGhlIG5vbi12b2xhdGlsZSB2YXJp YWJsZXMgZnJvbSB0aGUgTnZWYXJzIGZpbGUgb24gdGhlDQo+ICsgIGdpdmVuIGZpbGUgc3lzdGVt Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIEZzSGFuZGxlIC0gSGFuZGxlIGZvciBhIGdFZmlTaW1w bGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkDQo+IGluc3RhbmNlDQo+ICsNCj4gKyAgQHJldHVybiAg ICAgRUZJX1NUQVRVUyBiYXNlZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIGxvYWQgb3Bl cmF0aW9uDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArTG9hZE52VmFyc0Zyb21GcyAo DQo+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnNIYW5kbGUNCj4g KyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgVmFyRGF0YTsNCj4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIFNpemU7DQo+ICsNCj4gKyAgREVCVUcgKChFRklfRF9J TkZPLCAiRnNBY2Nlc3MuYzogTG9hZE52VmFyc0Zyb21Gc1xuIikpOw0KPiArDQo+ICsgIC8vDQo+ ICsgIC8vIFdlIHdyaXRlIGEgdmFyaWFibGUgdG8gaW5kaWNhdGUgd2UndmUgYWxyZWFkeSBsb2Fk ZWQgdGhlDQo+ICsgIC8vIHZhcmlhYmxlIGRhdGEuICBJZiBpdCBpcyBmb3VuZCwgd2Ugc2tpcCB0 aGUgbG9hZGluZy4NCj4gKyAgLy8NCj4gKyAgLy8gVGhpcyBpcyByZWxldmFudCBpZiB0aGUgbm9u LXZvbGF0aWxlIHZhcmlhYmxlIGhhdmUgYmVlbg0KPiArICAvLyBhYmxlIHRvIHN1cnZpdmUgYSBy ZWJvb3Qgb3BlcmF0aW9uLiAgSW4gdGhhdCBjYXNlLCB3ZSBkb24ndA0KPiArICAvLyB3YW50IHRv IHJlLWxvYWQgdGhlIGZpbGUgYXMgaXQgd291bGQgb3ZlcndyaXRlIG5ld2VyIGNoYW5nZXMNCj4g KyAgLy8gbWFkZSB0byB0aGUgdmFyaWFibGVzLg0KPiArICAvLw0KPiArICBTaXplID0gc2l6ZW9m IChWYXJEYXRhKTsNCj4gKyAgVmFyRGF0YSA9IFRSVUU7DQo+ICsgIFN0YXR1cyA9IGdSVC0+R2V0 VmFyaWFibGUgKA0KPiArICAgICAgICAgICAgICAgICAgTCJOdlZhcnMiLA0KPiArICAgICAgICAg ICAgICAgICAgJmdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAg ICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICZTaXplLA0KPiArICAgICAgICAg ICAgICAgICAgKFZPSUQqKSAmVmFyRGF0YQ0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAg aWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KPiArICAgIERFQlVHICgoRUZJX0RfSU5GTywg Ik5WIFZhcmlhYmxlcyB3ZXJlIGFscmVhZHkgbG9hZGVkXG4iKSk7DQo+ICsgICAgcmV0dXJuIEVG SV9BTFJFQURZX1NUQVJURUQ7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBBdHRlbXB0 IHRvIHJlc3RvcmUgdGhlIHZhcmlhYmxlcyBmcm9tIHRoZSBOdlZhcnMgZmlsZS4NCj4gKyAgLy8N Cj4gKyAgU3RhdHVzID0gUmVhZE52VmFyc0ZpbGUgKEZzSGFuZGxlKTsNCj4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoRUZJX0RfSU5GTywgIkVycm9yIHdoaWxl IHJlc3RvcmluZyBOViB2YXJpYWJsZSBkYXRhXG4iKSk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsN Cj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFdyaXRlIGEgdmFyaWFibGUgdG8gaW5kaWNh dGUgd2UndmUgYWxyZWFkeSBsb2FkZWQgdGhlDQo+ICsgIC8vIHZhcmlhYmxlIGRhdGEuICBJZiBp dCBpcyBmb3VuZCwgd2Ugc2tpcCB0aGUgbG9hZGluZyBvbg0KPiArICAvLyBzdWJzZXF1ZW50IGF0 dGVtcHRzLg0KPiArICAvLw0KPiArICBTZXROdlZhcnNWYXJpYWJsZSgpOw0KPiArDQo+ICsgIERF QlVHICgoDQo+ICsgICAgRUZJX0RfSU5GTywNCj4gKyAgICAiRnNBY2Nlc3MuYzogUmVhZCBOViBW YXJpYWJsZXMgZmlsZSAoc2l6ZT0lTHUpXG4iLA0KPiArICAgIChVSU5UNjQpU2l6ZQ0KPiArICAg ICkpOw0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKw0KPiArU1RBVElD DQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK0l0ZXJhdGVWYXJpYWJsZXNDYWxsYmFj a0FkZEFsbE52VmFyaWFibGVzICgNCj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAg ICAgKkNvbnRleHQsDQo+ICsgIElOICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICpWYXJp YWJsZU5hbWUsDQo+ICsgIElOICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICpWZW5kb3JH dWlkLA0KPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzLA0K PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSwNCj4gKyAgSU4g IFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgKkRhdGENCj4gKyAgKQ0KPiArew0KPiArICBF RklfSEFORExFICBJbnN0YW5jZTsNCj4gKw0KPiArICBJbnN0YW5jZSA9IChFRklfSEFORExFKSBD b250ZXh0Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIE9ubHkgc2F2ZSBub24tdm9sYXRpbGUgdmFy aWFibGVzDQo+ICsgIC8vDQo+ICsgIGlmICgoQXR0cmlidXRlcyAmIEVGSV9WQVJJQUJMRV9OT05f Vk9MQVRJTEUpID09IDApIHsNCj4gKyAgICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICsgIH0N Cj4gKw0KPiArICByZXR1cm4gU2VyaWFsaXplVmFyaWFibGVzQWRkVmFyaWFibGUgKA0KPiArICAg ICAgICAgICBJbnN0YW5jZSwNCj4gKyAgICAgICAgICAgVmFyaWFibGVOYW1lLA0KPiArICAgICAg ICAgICBWZW5kb3JHdWlkLA0KPiArICAgICAgICAgICBBdHRyaWJ1dGVzLA0KPiArICAgICAgICAg ICBEYXRhU2l6ZSwNCj4gKyAgICAgICAgICAgRGF0YQ0KPiArICAgICAgICAgICApOw0KPiArfQ0K PiArDQo+ICsNCj4gKy8qKg0KPiArICBTYXZlcyB0aGUgbm9uLXZvbGF0aWxlIHZhcmlhYmxlcyBp bnRvIHRoZSBOdlZhcnMgZmlsZSBvbiB0aGUNCj4gKyAgZ2l2ZW4gZmlsZSBzeXN0ZW0uDQo+ICsN Cj4gKyAgQHBhcmFtW2luXSAgRnNIYW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0VmaVNpbXBsZUZpbGVT eXN0ZW1Qcm90b2NvbEd1aWQNCj4gaW5zdGFuY2UNCj4gKw0KPiArICBAcmV0dXJuICAgICBFRklf U1RBVFVTIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgbG9hZCBvcGVyYXRpb24N Cj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtTYXZlTnZWYXJzVG9GcyAoDQo+ICsgIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnNIYW5kbGUNCj4gKyAgKQ0KPiAr ew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfRklM RV9IQU5ETEUgICAgICAgICAgICAgRmlsZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgIFdyaXRlU2l6ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxl RGF0YVNpemU7DQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVEYXRh Ow0KPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFZhcmlhYmxlczsN Cj4gKw0KPiArICBTZXJpYWxpemVkVmFyaWFibGVzID0gTlVMTDsNCj4gKw0KPiArICBTdGF0dXMg PSBTZXJpYWxpemVWYXJpYWJsZXNOZXdJbnN0YW5jZSAoJlNlcmlhbGl6ZWRWYXJpYWJsZXMpOw0K PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g KyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IFNlcmlhbGl6ZVZhcmlhYmxlc0l0ZXJhdGVTeXN0ZW1W YXJpYWJsZXMgKA0KPiArICAgICAgICAgICAgIEl0ZXJhdGVWYXJpYWJsZXNDYWxsYmFja0FkZEFs bE52VmFyaWFibGVzLA0KPiArICAgICAgICAgICAgIChWT0lEKikgU2VyaWFsaXplZFZhcmlhYmxl cw0KPiArICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgVmFyaWFibGVEYXRhID0gTlVM TDsNCj4gKyAgVmFyaWFibGVEYXRhU2l6ZSA9IDA7DQo+ICsgIFN0YXR1cyA9IFNlcmlhbGl6ZVZh cmlhYmxlc1RvQnVmZmVyICgNCj4gKyAgICAgICAgICAgICBTZXJpYWxpemVkVmFyaWFibGVzLA0K PiArICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgJlZhcmlhYmxlRGF0YVNpemUN Cj4gKyAgICAgICAgICAgICApOw0KPiArICBpZiAoU3RhdHVzID09IFJFVFVSTl9CVUZGRVJfVE9P X1NNQUxMKSB7DQo+ICsgICAgVmFyaWFibGVEYXRhID0gQWxsb2NhdGVQb29sIChWYXJpYWJsZURh dGFTaXplKTsNCj4gKyAgICBpZiAoVmFyaWFibGVEYXRhID09IE5VTEwpIHsNCj4gKyAgICAgIFN0 YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBT dGF0dXMgPSBTZXJpYWxpemVWYXJpYWJsZXNUb0J1ZmZlciAoDQo+ICsgICAgICAgICAgICAgICAg IFNlcmlhbGl6ZWRWYXJpYWJsZXMsDQo+ICsgICAgICAgICAgICAgICAgIFZhcmlhYmxlRGF0YSwN Cj4gKyAgICAgICAgICAgICAgICAgJlZhcmlhYmxlRGF0YVNpemUNCj4gKyAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICBTZXJpYWxpemVWYXJpYWJsZXNGcmVl SW5zdGFuY2UgKFNlcmlhbGl6ZWRWYXJpYWJsZXMpOw0KPiArDQo+ICsgIGlmIChFRklfRVJST1Ig KFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gT3BlbiB0aGUgTnZWYXJzIGZpbGUgZm9yIHdyaXRpbmcuDQo+ICsgIC8vDQo+ICsg IFN0YXR1cyA9IEdldE52VmFyc0ZpbGUgKEZzSGFuZGxlLCBGQUxTRSwgJkZpbGUpOw0KPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKChFRklfRF9JTkZPLCAiRnNB Y2Nlc3MuYzogVW5hYmxlIHRvIG9wZW4gZmlsZSB0byBzYXZlZCBOVg0KPiBWYXJpYWJsZXNcbiIp KTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8g RW1wdHkgdGhlIHN0YXJ0aW5nIGZpbGUgY29udGVudHMuDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9 IEZpbGVIYW5kbGVFbXB0eSAoRmlsZSk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gKyAgICBGaWxlSGFuZGxlQ2xvc2UgKEZpbGUpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ ICsgIH0NCj4gKw0KPiArICBXcml0ZVNpemUgPSBWYXJpYWJsZURhdGFTaXplOw0KPiArICBTdGF0 dXMgPSBGaWxlSGFuZGxlV3JpdGUgKEZpbGUsICZXcml0ZVNpemUsIFZhcmlhYmxlRGF0YSk7DQo+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiAr ICB9DQo+ICsNCj4gKyAgRmlsZUhhbmRsZUNsb3NlIChGaWxlKTsNCj4gKw0KPiArICBpZiAoIUVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gV3JpdGUgYSB2YXJpYWJs ZSB0byBpbmRpY2F0ZSB3ZSd2ZSBhbHJlYWR5IGxvYWRlZCB0aGUNCj4gKyAgICAvLyB2YXJpYWJs ZSBkYXRhLiAgSWYgaXQgaXMgZm91bmQsIHdlIHNraXAgdGhlIGxvYWRpbmcgb24NCj4gKyAgICAv LyBzdWJzZXF1ZW50IGF0dGVtcHRzLg0KPiArICAgIC8vDQo+ICsgICAgU2V0TnZWYXJzVmFyaWFi bGUoKTsNCj4gKw0KPiArCURFQlVHICgoRUZJX0RfSU5GTywgIlNhdmVkIE5WIFZhcmlhYmxlcyB0 byBOdlZhcnMgZmlsZVxuIikpOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4g K30NCj4gKw0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuYw0KPiBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJz RmlsZUxpYi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmY2 MGZiYzYxMTINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuYw0KPiBA QCAtMCwwICsxLDc3IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgU2F2ZSBOb24tVm9sYXRpbGUgVmFy aWFibGVzIHRvIGEgZmlsZSBzeXN0ZW0uDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDA5IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ ICsjaW5jbHVkZSAiTnZWYXJzRmlsZUxpYi5oIg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L052VmFyc0ZpbGVMaWIuaD4NCj4gKw0KPiArRUZJ X0hBTkRMRSAgICBtTnZWYXJzRmlsZUxpYkZzSGFuZGxlID0gTlVMTDsNCj4gKw0KPiArDQo+ICsv KioNCj4gKyAgQXR0ZW1wdHMgdG8gY29ubmVjdCB0aGUgTnZWYXJzRmlsZUxpYiB0byB0aGUgc3Bl Y2lmaWVkIGZpbGUgc3lzdGVtLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIEZzSGFuZGxlIC0gSGFu ZGxlIGZvciBhIGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkDQo+IGluc3RhbmNlDQo+ ICsNCj4gKyAgQHJldHVybiAgICAgVGhlIEVGSV9TVEFUVVMgd2hpbGUgYXR0ZW1wdGluZyB0byBj b25uZWN0IHRoZSBOdlZhcnNGaWxlTGliDQo+ICsgICAgICAgICAgICAgIHRvIHRoZSBmaWxlIHN5 c3RlbSBpbnN0YW5jZS4NCj4gKyAgQHJldHZhbCAgICAgRUZJX1NVQ0NFU1MgLSBUaGUgZ2l2ZW4g ZmlsZSBzeXN0ZW0gd2FzIGNvbm5lY3RlZCBzdWNjZXNzZnVsbHkNCj4gKw0KPiArKiovDQo+ICtF RklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0Nvbm5lY3ROdlZhcnNUb0ZpbGVTeXN0ZW0gKA0KPiAr ICBJTiBFRklfSEFORExFICAgIEZzSGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRV UyBTdGF0dXM7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gV2UgbWlnaHQgZmFpbCB0byBsb2FkIHRo ZSB2YXJpYWJsZSwgc2luY2UgdGhlIGZpbGUgc3lzdGVtIGluaXRpYWxseQ0KPiArICAvLyB3aWxs IG5vdCBoYXZlIHRoZSBOdlZhcnMgZmlsZS4NCj4gKyAgLy8NCj4gKyAgTG9hZE52VmFyc0Zyb21G cyAoRnNIYW5kbGUpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFdlIG11c3QgYmUgYWJsZSB0byBz YXZlIHRoZSB2YXJpYWJsZXMgc3VjY2Vzc2Z1bGx5IHRvIHRoZSBmaWxlIHN5c3RlbQ0KPiArICAv LyB0byBoYXZlIGNvbm5lY3RlZCBzdWNjZXNzZnVsbHkuDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9 IFNhdmVOdlZhcnNUb0ZzIChGc0hhbmRsZSk7DQo+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgbU52VmFyc0ZpbGVMaWJGc0hhbmRsZSA9IEZzSGFuZGxlOw0KPiArICB9DQo+ ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgVXBk YXRlIG5vbi12b2xhdGlsZSB2YXJpYWJsZXMgc3RvcmVkIG9uIHRoZSBmaWxlIHN5c3RlbS4NCj4g Kw0KPiArICBAcmV0dXJuICAgICBUaGUgRUZJX1NUQVRVUyB3aGlsZSBhdHRlbXB0aW5nIHRvIHVw ZGF0ZSB0aGUgdmFyaWFibGUgb24NCj4gKyAgICAgICAgICAgICAgdGhlIGNvbm5lY3RlZCBmaWxl IHN5c3RlbS4NCj4gKyAgQHJldHZhbCAgICAgRUZJX1NVQ0NFU1MgLSBUaGUgbm9uLXZvbGF0aWxl IHZhcmlhYmxlcyB3ZXJlIHNhdmVkIHRvIHRoZSBkaXNrDQo+ICsgIEByZXR2YWwgICAgIEVGSV9O T1RfU1RBUlRFRCAtIEEgZmlsZSBzeXN0ZW0gaGFzIG5vdCBiZWVuIGNvbm5lY3RlZA0KPiArDQo+ ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArVXBkYXRlTnZWYXJzT25GaWxlU3lz dGVtICgNCj4gKyAgKQ0KPiArew0KPiArICBpZiAobU52VmFyc0ZpbGVMaWJGc0hhbmRsZSA9PSBO VUxMKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBBIGZpbGUgc3lzdGVtIGhhZCBub3QgYmVlbiBj b25uZWN0ZWQgdG8gdGhlIGxpYnJhcnkuDQo+ICsgICAgLy8NCj4gKyAgICByZXR1cm4gRUZJX05P VF9TVEFSVEVEOw0KPiArICB9IGVsc2Ugew0KPiArICAgIHJldHVybiBTYXZlTnZWYXJzVG9GcyAo bU52VmFyc0ZpbGVMaWJGc0hhbmRsZSk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArDQo+IGRpZmYg LS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJp YWxpemVWYXJpYWJsZXNMaWIvU2VyaWFsaXplVmENCj4gcmlhYmxlc0xpYi5jDQo+IGIvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGli L1NlcmlhbGl6ZVZhDQo+IHJpYWJsZXNMaWIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwLi5jMzJhOTc4NTUwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIv UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFi bGVzTGliL1NlcmlhbGl6ZVZhDQo+IHJpYWJsZXNMaWIuYw0KPiBAQCAtMCwwICsxLDg2OSBAQA0K PiArLyoqIEBmaWxlDQo+ICsgIFNlcmlhbGl6ZSBWYXJpYWJsZXMgTGlicmFyeSBpbXBsZW1lbnRh dGlvbg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAwNCAtIDIwMTEgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJT ZXJpYWxpemVWYXJpYWJsZXNMaWIuaCINCj4gKw0KPiArLyoqDQo+ICsgIFNlcmlhbGl6YXRpb24g Zm9ybWF0Og0KPiArDQo+ICsgIFRoZSBTZXJpYWxpemVWYXJpYWJsZXNMaWIgaW50ZXJmYWNlIGRv ZXMgbm90IHNwZWNpZnkgYSBmb3JtYXQNCj4gKyAgZm9yIHRoZSBzZXJpYWxpemF0aW9uIG9mIHRo ZSB2YXJpYWJsZSBkYXRhLiAgVGhpcyBsaWJyYXJ5IHVzZXMNCj4gKyAgYSBwYWNrZWQgYXJyYXkg b2YgYSBub24tdW5pZm9ybWx5IHNpemVkIGRhdGEgc3RydWN0dXJlIGVsZW1lbnRzLg0KPiArDQo+ ICsgIEVhY2ggdmFyaWFibGUgaXMgc3RvcmVkIChwYWNrZWQpIGFzOg0KPiArICAgIFVJTlQzMiAg IFZlbmRvck5hbWVTaXplOyAgLy8gTmFtZSBzaXplIGluIGJ5dGVzDQo+ICsgICAgQ0hBUjE2ICAg VmVuZG9yTmFtZVs/XTsgICAvLyBUaGUgdmFyaWFibGUgdW5pY29kZSBuYW1lIGluY2x1ZGluZyB0 aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bGwgdGVybWluYXRpbmcg Y2hhcmFjdGVyLg0KPiArICAgIEVGSV9HVUlEIFZlbmRvckd1aWQ7ICAgICAgLy8gVGhlIHZhcmlh YmxlIEdVSUQNCj4gKyAgICBVSU5UMzIgICBEYXRhU2l6ZTsgICAgICAgIC8vIFRoZSBzaXplIG9m IHZhcmlhYmxlIGRhdGEgaW4gYnl0ZXMNCj4gKyAgICBVSU5UOCAgICBEYXRhWz9dOyAgICAgICAg IC8vIFRoZSB2YXJpYWJsZSBkYXRhDQo+ICsNCj4gKyoqLw0KPiArDQo+ICsNCj4gKy8qKg0KPiAr ICBVbnBhY2tzIHRoZSBuZXh0IHZhcmlhYmxlIGZyb20gdGhlIGJ1ZmZlcg0KPiArDQo+ICsgIEBw YXJhbVtpbl0gIEJ1ZmZlciAtIEJ1ZmZlciBwb2ludGluZyB0byB0aGUgbmV4dCB2YXJpYWJsZSBp bnN0YW5jZQ0KPiArICAgICAgICAgICAgICAgIE9uIHN1YnNlcXVlbnQgY2FsbHMsIHRoZSBwb2lu dGVyIHNob3VsZCBiZSBpbmNyZW1lbnRlZA0KPiArICAgICAgICAgICAgICAgIGJ5IHRoZSByZXR1 cm5lZCBTaXplVXNlZCB2YWx1ZS4NCj4gKyAgQHBhcmFtW2luXSAgTWF4U2l6ZSAtIE1heCBhbGxv d2FibGUgc2l6ZSBmb3IgdGhlIHZhcmlhYmxlIGRhdGENCj4gKyAgICAgICAgICAgICAgICBPbiBz dWJzZXF1ZW50IGNhbGxzLCB0aGlzIHNob3VsZCBiZSBkZWNyZW1lbnRlZA0KPiArICAgICAgICAg ICAgICAgIGJ5IHRoZSByZXR1cm5lZCBTaXplVXNlZCB2YWx1ZS4NCj4gKyAgQHBhcmFtW291dF0g TmFtZSAtIFZhcmlhYmxlIG5hbWUgc3RyaW5nIChhZGRyZXNzIGluIEJ1ZmZlcikNCj4gKyAgQHBh cmFtW291dF0gTmFtZVNpemUgLSBTaXplIG9mIE5hbWUgaW4gYnl0ZXMNCj4gKyAgQHBhcmFtW291 dF0gR3VpZCAtIEdVSUQgb2YgdmFyaWFibGUgKGFkZHJlc3MgaW4gQnVmZmVyKQ0KPiArICBAcGFy YW1bb3V0XSBBdHRyaWJ1dGVzIC0gQXR0cmlidXRlcyBvZiB2YXJpYWJsZQ0KPiArICBAcGFyYW1b b3V0XSBEYXRhIC0gQnVmZmVyIGNvbnRhaW5pbmcgRGF0YSBmb3IgdmFyaWFibGUgKGFkZHJlc3Mg aW4gQnVmZmVyKQ0KPiArICBAcGFyYW1bb3V0XSBEYXRhU2l6ZSAtIFNpemUgb2YgRGF0YSBpbiBi eXRlcw0KPiArICBAcGFyYW1bb3V0XSBTaXplVXNlZCAtIFRvdGFsIHNpemUgdXNlZCBmb3IgdGhp cyB2YXJpYWJsZSBpbnN0YW5jZSBpbiBCdWZmZXINCj4gKw0KPiArICBAcmV0dXJuICAgICBFRklf U1RBVFVTIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIG9wZXJhdGlvbg0K PiArDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArVW5wYWNrVmFyaWFibGVG cm9tQnVmZmVyICgNCj4gKyAgSU4gIFZPSUQgICAgICpCdWZmZXIsDQo+ICsgIElOICBVSU5UTiAg ICBNYXhTaXplLA0KPiArICBPVVQgQ0hBUjE2ICAgKipOYW1lLA0KPiArICBPVVQgVUlOVDMyICAg Kk5hbWVTaXplLA0KPiArICBPVVQgRUZJX0dVSUQgKipHdWlkLA0KPiArICBPVVQgVUlOVDMyICAg KkF0dHJpYnV0ZXMsDQo+ICsgIE9VVCBVSU5UMzIgICAqRGF0YVNpemUsDQo+ICsgIE9VVCBWT0lE ICAgICAqKkRhdGEsDQo+ICsgIE9VVCBVSU5UTiAgICAqU2l6ZVVzZWQNCj4gKyAgKQ0KPiArew0K PiArICBVSU5UOCAgKkJ5dGVQdHI7DQo+ICsgIFVJTlROICBPZmZzZXQ7DQo+ICsNCj4gKyAgQnl0 ZVB0ciA9IChVSU5UOCopQnVmZmVyOw0KPiArICBPZmZzZXQgPSAwOw0KPiArDQo+ICsgICpOYW1l U2l6ZSA9ICooVUlOVDMyKikgKEJ5dGVQdHIgKyBPZmZzZXQpOw0KPiArICBPZmZzZXQgPSBPZmZz ZXQgKyBzaXplb2YgKFVJTlQzMik7DQo+ICsNCj4gKyAgaWYgKE9mZnNldCA+IE1heFNpemUpIHsN Cj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAg Kk5hbWUgPSAoQ0hBUjE2KikgKEJ5dGVQdHIgKyBPZmZzZXQpOw0KPiArICBPZmZzZXQgPSBPZmZz ZXQgKyAqKFVJTlQzMiopQnl0ZVB0cjsNCj4gKyAgaWYgKE9mZnNldCA+IE1heFNpemUpIHsNCj4g KyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgKkd1 aWQgPSAoRUZJX0dVSUQqKSAoQnl0ZVB0ciArIE9mZnNldCk7DQo+ICsgIE9mZnNldCA9IE9mZnNl dCArIHNpemVvZiAoRUZJX0dVSUQpOw0KPiArICBpZiAoT2Zmc2V0ID4gTWF4U2l6ZSkgew0KPiAr ICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICAqQXR0 cmlidXRlcyA9ICooVUlOVDMyKikgKEJ5dGVQdHIgKyBPZmZzZXQpOw0KPiArICBPZmZzZXQgPSBP ZmZzZXQgKyBzaXplb2YgKFVJTlQzMik7DQo+ICsgIGlmIChPZmZzZXQgPiBNYXhTaXplKSB7DQo+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgICpE YXRhU2l6ZSA9ICooVUlOVDMyKikgKEJ5dGVQdHIgKyBPZmZzZXQpOw0KPiArICBPZmZzZXQgPSBP ZmZzZXQgKyBzaXplb2YgKFVJTlQzMik7DQo+ICsgIGlmIChPZmZzZXQgPiBNYXhTaXplKSB7DQo+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgICpE YXRhID0gKFZPSUQqKSAoQnl0ZVB0ciArIE9mZnNldCk7DQo+ICsgIE9mZnNldCA9IE9mZnNldCAr ICpEYXRhU2l6ZTsNCj4gKyAgaWYgKE9mZnNldCA+IE1heFNpemUpIHsNCj4gKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgKlNpemVVc2VkID0gT2Zm c2V0Ow0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArDQo+ICsv KioNCj4gKyAgSXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFyaWFibGVzIGluIHRoZSBidWZmZXIsIGFu ZCBjYWxscyBhIGNhbGxiYWNrDQo+ICsgIGZ1bmN0aW9uIGZvciBlYWNoIHZhcmlhYmxlIGZvdW5k Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIENhbGxiYWNrRnVuY3Rpb24gLSBGdW5jdGlvbiBjYWxs ZWQgZm9yIGVhY2ggdmFyaWFibGUgaW5zdGFuY2UNCj4gKyAgQHBhcmFtW2luXSAgQ29udGV4dCAt IFBhc3NlZCB0byBlYWNoIGNhbGwgb2YgQ2FsbGJhY2tGdW5jdGlvbg0KPiArICBAcGFyYW1baW5d ICBCdWZmZXIgLSBCdWZmZXIgY29udGFpbmluZyBzZXJpYWxpemVkIHZhcmlhYmxlcw0KPiArICBA cGFyYW1baW5dICBNYXhTaXplIC0gU2l6ZSBvZiBCdWZmZXIgaW4gYnl0ZXMNCj4gKw0KPiArICBA cmV0dXJuICAgICBFRklfU1RBVFVTIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2Yg dGhlIG9wZXJhdGlvbg0KPiArDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiAr SXRlcmF0ZVZhcmlhYmxlc0luQnVmZmVyICgNCj4gKyAgSU4gVkFSSUFCTEVfU0VSSUFMSVpBVElP Tl9JVEVSQVRJT05fQ0FMTEJBQ0sgIENhbGxiYWNrRnVuY3Rpb24sDQo+ICsgIElOIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQ2FsbGJhY2tDb250ZXh0LA0KPiAr ICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlciwN Cj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heFNp emUNCj4gKyAgKQ0KPiArew0KPiArICBSRVRVUk5fU1RBVFVTIFN0YXR1czsNCj4gKyAgVUlOVE4g ICAgICAgICBUb3RhbFNpemVVc2VkOw0KPiArICBVSU5UTiAgICAgICAgIFNpemVVc2VkOw0KPiAr DQo+ICsgIENIQVIxNiAgICAgICAgKk5hbWU7DQo+ICsgIFVJTlQzMiAgICAgICAgTmFtZVNpemU7 DQo+ICsgIENIQVIxNiAgICAgICAgKkFsaWduZWROYW1lOw0KPiArICBVSU5UMzIgICAgICAgIEFs aWduZWROYW1lTWF4U2l6ZTsNCj4gKyAgRUZJX0dVSUQgICAgICAqR3VpZDsNCj4gKyAgVUlOVDMy ICAgICAgICBBdHRyaWJ1dGVzOw0KPiArICBVSU5UMzIgICAgICAgIERhdGFTaXplOw0KPiArICBW T0lEICAgICAgICAgICpEYXRhOw0KPiArDQo+ICsgIFNpemVVc2VkID0gMDsNCj4gKyAgQWxpZ25l ZE5hbWUgPSBOVUxMOw0KPiArICBBbGlnbmVkTmFtZU1heFNpemUgPSAwOw0KPiArICBOYW1lID0g TlVMTDsNCj4gKyAgR3VpZCA9IE5VTEw7DQo+ICsgIEF0dHJpYnV0ZXMgPSAwOw0KPiArICBEYXRh U2l6ZSA9IDA7DQo+ICsgIERhdGEgPSBOVUxMOw0KPiArDQo+ICsgIGZvciAoDQo+ICsgICAgU3Rh dHVzID0gRUZJX1NVQ0NFU1MsIFRvdGFsU2l6ZVVzZWQgPSAwOw0KPiArICAgICFFRklfRVJST1Ig KFN0YXR1cykgJiYgKFRvdGFsU2l6ZVVzZWQgPCBNYXhTaXplKTsNCj4gKyAgICApIHsNCj4gKyAg ICBTdGF0dXMgPSBVbnBhY2tWYXJpYWJsZUZyb21CdWZmZXIgKA0KPiArICAgICAgICAgICAgICAg KFZPSUQqKSAoKFVJTlQ4KikgQnVmZmVyICsgVG90YWxTaXplVXNlZCksDQo+ICsgICAgICAgICAg ICAgICAoTWF4U2l6ZSAtIFRvdGFsU2l6ZVVzZWQpLA0KPiArICAgICAgICAgICAgICAgJk5hbWUs DQo+ICsgICAgICAgICAgICAgICAmTmFtZVNpemUsDQo+ICsgICAgICAgICAgICAgICAmR3VpZCwN Cj4gKyAgICAgICAgICAgICAgICZBdHRyaWJ1dGVzLA0KPiArICAgICAgICAgICAgICAgJkRhdGFT aXplLA0KPiArICAgICAgICAgICAgICAgJkRhdGEsDQo+ICsgICAgICAgICAgICAgICAmU2l6ZVVz ZWQNCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0KPiAr ICAgIC8vIFdlIGNvcHkgdGhlIG5hbWUgdG8gYSBzZXBhcmF0ZWx5IGFsbG9jYXRlZCBidWZmZXIs DQo+ICsgICAgLy8gdG8gYmUgc3VyZSBpdCBpcyAxNi1iaXQgYWxpZ25lZC4NCj4gKyAgICAvLw0K PiArICAgIGlmIChOYW1lU2l6ZSA+IEFsaWduZWROYW1lTWF4U2l6ZSkgew0KPiArICAgICAgaWYg KEFsaWduZWROYW1lICE9IE5VTEwpIHsNCj4gKyAgICAgICAgRnJlZVBvb2wgKEFsaWduZWROYW1l KTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIEFsaWduZWROYW1lID0gQWxsb2NhdGVQb29sIChOYW1l U2l6ZSk7DQo+ICsgICAgfQ0KPiArICAgIGlmIChBbGlnbmVkTmFtZSA9PSBOVUxMKSB7DQo+ICsg ICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgICAgfQ0KPiArICAgIENvcHlN ZW0gKEFsaWduZWROYW1lLCBOYW1lLCBOYW1lU2l6ZSk7DQo+ICsNCj4gKyAgICBUb3RhbFNpemVV c2VkID0gVG90YWxTaXplVXNlZCArIFNpemVVc2VkOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAv LyBSdW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uDQo+ICsgICAgLy8NCj4gKyAgICBTdGF0dXMgPSAo KkNhbGxiYWNrRnVuY3Rpb24pICgNCj4gKyAgICAgICAgICAgICAgIENhbGxiYWNrQ29udGV4dCwN Cj4gKyAgICAgICAgICAgICAgIEFsaWduZWROYW1lLA0KPiArICAgICAgICAgICAgICAgR3VpZCwN Cj4gKyAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMsDQo+ICsgICAgICAgICAgICAgICBEYXRhU2l6 ZSwNCj4gKyAgICAgICAgICAgICAgIERhdGENCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsNCj4g KyAgfQ0KPiArDQo+ICsgIGlmIChBbGlnbmVkTmFtZSAhPSBOVUxMKSB7DQo+ICsgICAgRnJlZVBv b2wgKEFsaWduZWROYW1lKTsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIE1ha2Ugc3Vy ZSB0aGUgZW50aXJlIGJ1ZmZlciB3YXMgdXNlZCwgb3IgZWxzZSByZXR1cm4gYW4gZXJyb3INCj4g KyAgLy8NCj4gKyAgaWYgKFRvdGFsU2l6ZVVzZWQgIT0gTWF4U2l6ZSkgew0KPiArICAgIERFQlVH ICgoDQo+ICsgICAgICBFRklfRF9FUlJPUiwNCj4gKyAgICAgICJEZXNlcmlhbGl6ZSB2YXJpYWJs ZXMgZXJyb3I6IFRvdGFsU2l6ZVVzZWQoJUx1KSAhPSBNYXhTaXplKCVMdSlcbiIsDQo+ICsgICAg ICAoVUlOVDY0KVRvdGFsU2l6ZVVzZWQsDQo+ICsgICAgICAoVUlOVDY0KU1heFNpemUNCj4gKyAg ICAgICkpOw0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4g Kw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArU1RBVElDDQo+ ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK0l0ZXJhdGVWYXJpYWJsZXNDYWxsYmFja05v cCAoDQo+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0LA0KPiAr ICBJTiAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0KPiArICBJ TiAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAqVmVuZG9yR3VpZCwNCj4gKyAgSU4gIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcywNCj4gKyAgSU4gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUsDQo+ICsgIElOICBWT0lEICAgICAgICAgICAg ICAgICAgICAgICAgICpEYXRhDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJFVFVSTl9TVUND RVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJ QVBJDQo+ICtJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tTZXRJbkluc3RhbmNlICgNCj4gKyAgSU4g IFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQsDQo+ICsgIElOICBDSEFSMTYg ICAgICAgICAgICAgICAgICAgICAgICpWYXJpYWJsZU5hbWUsDQo+ICsgIElOICBFRklfR1VJRCAg ICAgICAgICAgICAgICAgICAgICpWZW5kb3JHdWlkLA0KPiArICBJTiAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICAgICBBdHRyaWJ1dGVzLA0KPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICBEYXRhU2l6ZSwNCj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAg KkRhdGENCj4gKyAgKQ0KPiArew0KPiArICBFRklfSEFORExFICBJbnN0YW5jZTsNCj4gKw0KPiAr ICBJbnN0YW5jZSA9IChFRklfSEFORExFKSBDb250ZXh0Ow0KPiArDQo+ICsgIHJldHVybiBTZXJp YWxpemVWYXJpYWJsZXNBZGRWYXJpYWJsZSAoDQo+ICsgICAgICAgICAgIEluc3RhbmNlLA0KPiAr ICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQo+ICsgICAgICAgICAgIFZlbmRvckd1aWQsDQo+ICsg ICAgICAgICAgIEF0dHJpYnV0ZXMsDQo+ICsgICAgICAgICAgIERhdGFTaXplLA0KPiArICAgICAg ICAgICBEYXRhDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKw0KPiArU1RBVElDDQo+ ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK0l0ZXJhdGVWYXJpYWJsZXNDYWxsYmFja1Nl dFN5c3RlbVZhcmlhYmxlICgNCj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAg KkNvbnRleHQsDQo+ICsgIElOICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICpWYXJpYWJs ZU5hbWUsDQo+ICsgIElOICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICpWZW5kb3JHdWlk LA0KPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzLA0KPiAr ICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSwNCj4gKyAgSU4gIFZP SUQgICAgICAgICAgICAgICAgICAgICAgICAgKkRhdGENCj4gKyAgKQ0KPiArew0KPiArICBFRklf U1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gKyAgU1RBVElDIENPTlNUIFVJTlQzMiBBdXRoTWFz ayA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBFRklfVkFSSUFCTEVfQVVUSEVOVElDQVRF RF9XUklURV9BQ0NFU1MgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1ZBUklBQkxF X1RJTUVfQkFTRURfQVVUSEVOVElDQVRFRF9XUklURV9BQ0NFU1M7DQo+ICsNCj4gKyAgU3RhdHVz ID0gZ1JULT5TZXRWYXJpYWJsZSAoDQo+ICsgICAgICAgICAgICAgVmFyaWFibGVOYW1lLA0KPiAr ICAgICAgICAgICAgIFZlbmRvckd1aWQsDQo+ICsgICAgICAgICAgICAgQXR0cmlidXRlcywNCj4g KyAgICAgICAgICAgICBEYXRhU2l6ZSwNCj4gKyAgICAgICAgICAgICBEYXRhDQo+ICsgICAgICAg ICAgICAgKTsNCj4gKw0KPiArICBpZiAoU3RhdHVzID09IEVGSV9TRUNVUklUWV9WSU9MQVRJT04g JiYgKEF0dHJpYnV0ZXMgJiBBdXRoTWFzaykgIT0gMCkgew0KPiArICAgIERFQlVHICgoREVCVUdf V0FSTiwgIiVhOiBzZXR0aW5nIGF1dGhlbnRpY2F0ZWQgdmFyaWFibGUgXCIlc1wiICINCj4gKyAg ICAgICAgICAgICJmYWlsZWQgd2l0aCBFRklfU0VDVVJJVFlfVklPTEFUSU9OLCBpZ25vcmluZ1xu IiwgX19GVU5DVElPTl9fLA0KPiArICAgICAgICAgICAgVmFyaWFibGVOYW1lKSk7DQo+ICsgICAg U3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ICsgIH0gZWxzZSBpZiAoU3RhdHVzID09IEVGSV9XUklU RV9QUk9URUNURUQpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX1dBUk4sICIlYTogc2V0dGluZyBS ZWFkT25seSB2YXJpYWJsZSBcIiVzXCIgIg0KPiArICAgICAgICAgICAgImZhaWxlZCB3aXRoIEVG SV9XUklURV9QUk9URUNURUQsIGlnbm9yaW5nXG4iLCBfX0ZVTkNUSU9OX18sDQo+ICsgICAgICAg ICAgICBWYXJpYWJsZU5hbWUpKTsNCj4gKyAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gKyAg fQ0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArUkVU VVJOX1NUQVRVUw0KPiArRW5zdXJlRXh0cmFCdWZmZXJTcGFjZSAoDQo+ICsgIElOICBTVl9JTlNU QU5DRSAgKkluc3RhbmNlLA0KPiArICBJTiAgVUlOVE4gICAgICAgIFNpemUNCj4gKyAgKQ0KPiAr ew0KPiArICBWT0lEICpOZXdCdWZmZXI7DQo+ICsgIFVJTlROIE5ld1NpemU7DQo+ICsNCj4gKyAg TmV3U2l6ZSA9IEluc3RhbmNlLT5EYXRhU2l6ZSArIFNpemU7DQo+ICsgIGlmIChOZXdTaXplIDw9 IEluc3RhbmNlLT5CdWZmZXJTaXplKSB7DQo+ICsgICAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0K PiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gRG91YmxlIHRoZSByZXF1aXJlZCBzaXplIHRv IGxlc3NlbiB0aGUgbmVlZCB0byByZS1hbGxvY2F0ZSBpbiB0aGUgZnV0dXJlDQo+ICsgIC8vDQo+ ICsgIE5ld1NpemUgPSAyICogTmV3U2l6ZTsNCj4gKw0KPiArICBOZXdCdWZmZXIgPSBBbGxvY2F0 ZVBvb2wgKE5ld1NpemUpOw0KPiArICBpZiAoTmV3QnVmZmVyID09IE5VTEwpIHsNCj4gKyAgICBy ZXR1cm4gUkVUVVJOX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoSW5z dGFuY2UtPkJ1ZmZlclB0ciAhPSBOVUxMKSB7DQo+ICsgICAgQ29weU1lbSAoTmV3QnVmZmVyLCBJ bnN0YW5jZS0+QnVmZmVyUHRyLCBJbnN0YW5jZS0+RGF0YVNpemUpOw0KPiArICAgIEZyZWVQb29s IChJbnN0YW5jZS0+QnVmZmVyUHRyKTsNCj4gKyAgfQ0KPiArDQo+ICsgIEluc3RhbmNlLT5CdWZm ZXJQdHIgPSBOZXdCdWZmZXI7DQo+ICsgIEluc3RhbmNlLT5CdWZmZXJTaXplID0gTmV3U2l6ZTsN Cj4gKw0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArU1RB VElDDQo+ICtWT0lEDQo+ICtBcHBlbmRUb0J1ZmZlciAoDQo+ICsgIElOICBTVl9JTlNUQU5DRSAg Kkluc3RhbmNlLA0KPiArICBJTiAgVk9JRCAgICAgICAgICpEYXRhLA0KPiArICBJTiAgVUlOVE4g ICAgICAgIFNpemUNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UTiBOZXdTaXplOw0KPiArDQo+ICsg IEFTU0VSVCAoSW5zdGFuY2UgIT0gTlVMTCk7DQo+ICsgIEFTU0VSVCAoRGF0YSAhPSBOVUxMKTsN Cj4gKw0KPiArICBOZXdTaXplID0gSW5zdGFuY2UtPkRhdGFTaXplICsgU2l6ZTsNCj4gKyAgQVNT RVJUICgoSW5zdGFuY2UtPkRhdGFTaXplICsgU2l6ZSkgPD0gSW5zdGFuY2UtPkJ1ZmZlclNpemUp Ow0KPiArDQo+ICsgIENvcHlNZW0gKA0KPiArICAgIChWT0lEKikgKCgoVUlOVDgqKSAoSW5zdGFu Y2UtPkJ1ZmZlclB0cikpICsgSW5zdGFuY2UtPkRhdGFTaXplKSwNCj4gKyAgICBEYXRhLA0KPiAr ICAgIFNpemUNCj4gKyAgICApOw0KPiArDQo+ICsgIEluc3RhbmNlLT5EYXRhU2l6ZSA9IE5ld1Np emU7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIENyZWF0ZXMgYSBuZXcgdmFyaWFibGUg c2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiArDQo+ICsgIEBwYXJhbVtvdXRdICBIYW5kbGUgLSBI YW5kbGUgZm9yIGEgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiArDQo+ICsgIEBy ZXR2YWwgICAgICBSRVRVUk5fU1VDQ0VTUyAtIFRoZSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGlu c3RhbmNlIHdhcw0KPiArICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkgY3JlYXRlZC4NCj4g KyAgQHJldHZhbCAgICAgIFJFVFVSTl9PVVRfT0ZfUkVTT1VSQ0VTIC0gVGhlcmUgd2Ugbm90IGVu b3VnaCByZXNvdXJjZXMNCj4gdG8NCj4gKyAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSB2YXJp YWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlLg0KPiArDQo+ICsqKi8NCj4gK1JFVFVSTl9TVEFU VVMNCj4gK0VGSUFQSQ0KPiArU2VyaWFsaXplVmFyaWFibGVzTmV3SW5zdGFuY2UgKA0KPiArICBP VVQgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAqSGFuZGxlDQo+ICsgICkNCj4gK3sN Cj4gKyAgU1ZfSU5TVEFOQ0UgICpOZXc7DQo+ICsNCj4gKyAgTmV3ID0gQWxsb2NhdGVaZXJvUG9v bCAoc2l6ZW9mICgqTmV3KSk7DQo+ICsgIGlmIChOZXcgPT0gTlVMTCkgew0KPiArICAgIHJldHVy biBSRVRVUk5fT1VUX09GX1JFU09VUkNFUzsNCj4gKyAgfQ0KPiArDQo+ICsgIE5ldy0+U2lnbmF0 dXJlID0gU1ZfU0lHTkFUVVJFOw0KPiArDQo+ICsgICpIYW5kbGUgPSAoRUZJX0hBTkRMRSkgTmV3 Ow0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ ICsgIEZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24g aW5zdGFuY2UNCj4gKw0KPiArICBAcGFyYW1baW5dICBIYW5kbGUgLSBIYW5kbGUgZm9yIGEgdmFy aWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiArDQo+ICsgIEByZXR2YWwgICAgICBSRVRV Uk5fU1VDQ0VTUyAtIFRoZSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlIHdhcw0KPiAr ICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkgZnJlZWQuDQo+ICsgIEByZXR2YWwgICAgICBS RVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgLSBIYW5kbGUgd2FzIG5vdCBhIHZhbGlkDQo+ICsgICAg ICAgICAgICAgICAgIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UuDQo+ICsNCj4gKyoq Lw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxpemVWYXJpYWJsZXNGcmVl SW5zdGFuY2UgKA0KPiArICBJTiBFRklfSEFORExFIEhhbmRsZQ0KPiArICApDQo+ICt7DQo+ICsg IFNWX0lOU1RBTkNFICAgICpJbnN0YW5jZTsNCj4gKw0KPiArICBJbnN0YW5jZSA9IFNWX0ZST01f SEFORExFIChIYW5kbGUpOw0KPiArDQo+ICsgIGlmIChJbnN0YW5jZS0+U2lnbmF0dXJlICE9IFNW X1NJR05BVFVSRSkgew0KPiArICAgIHJldHVybiBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVI7DQo+ ICsgIH0NCj4gKw0KPiArICBJbnN0YW5jZS0+U2lnbmF0dXJlID0gMDsNCj4gKw0KPiArICBpZiAo SW5zdGFuY2UtPkJ1ZmZlclB0ciAhPSBOVUxMKSB7DQo+ICsgICAgRnJlZVBvb2wgKEluc3RhbmNl LT5CdWZmZXJQdHIpOw0KPiArICB9DQo+ICsNCj4gKyAgRnJlZVBvb2wgKEluc3RhbmNlKTsNCj4g Kw0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ ICsgIENyZWF0ZXMgYSBuZXcgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZSB1c2luZyB0 aGUgZ2l2ZW4NCj4gKyAgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YXJpYWJsZXMgdG8g ZmlsbCB0aGUgbmV3IGluc3RhbmNlDQo+ICsNCj4gKyAgQHBhcmFtW291dF0gSGFuZGxlIC0gSGFu ZGxlIGZvciBhIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gKyAgQHBhcmFtW2lu XSAgQnVmZmVyIC0gQSBidWZmZXIgd2l0aCB0aGUgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbg0K PiArICAgICAgICAgICAgICAgIG9mIHRoZSB2YXJpYWJsZXMuICBNdXN0IGJlIHRoZSBzYW1lIGZv cm1hdCBhcyBwcm9kdWNlZA0KPiArICAgICAgICAgICAgICAgIGJ5IFNlcmlhbGl6ZVZhcmlhYmxl c1RvQnVmZmVyLg0KPiArICBAcGFyYW1baW5dICBTaXplIC0gVGhpcyBpcyB0aGUgc2l6ZSBvZiB0 aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uDQo+ICsgICAgICAgICAgICAgICAgb2YgdGhlIHZhcmlh Ymxlcy4NCj4gKw0KPiArICBAcmV0dmFsICAgICAgUkVUVVJOX1NVQ0NFU1MgLSBUaGUgYmluYXJ5 IHJlcHJlc2VudGF0aW9uIHdhcyBzdWNjZXNzZnVsbHkNCj4gKyAgICAgICAgICAgICAgICAgaW1w b3J0ZWQgaW50byBhIG5ldyB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQo+ICsgIEBy ZXR2YWwgICAgICBSRVRVUk5fT1VUX09GX1JFU09VUkNFUyAtIFRoZXJlIHdlIG5vdCBlbm91Z2gg cmVzb3VyY2VzDQo+IHRvDQo+ICsgICAgICAgICAgICAgICAgIGNyZWF0ZSB0aGUgbmV3IHZhcmlh YmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gKw0KPiArKiovDQo+ICtSRVRVUk5fU1RBVFVT DQo+ICtFRklBUEkNCj4gK1NlcmlhbGl6ZVZhcmlhYmxlc05ld0luc3RhbmNlRnJvbUJ1ZmZlciAo DQo+ICsgIE9VVCBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAqSGFuZGxlLA0K PiArICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlciwNCj4g KyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUNCj4gKyAgKQ0K PiArew0KPiArICBSRVRVUk5fU1RBVFVTIFN0YXR1czsNCj4gKw0KPiArICBTdGF0dXMgPSBTZXJp YWxpemVWYXJpYWJsZXNOZXdJbnN0YW5jZSAoSGFuZGxlKTsNCj4gKyAgaWYgKFJFVFVSTl9FUlJP UiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBT dGF0dXMgPSBJdGVyYXRlVmFyaWFibGVzSW5CdWZmZXIgKA0KPiArICAgICAgICAgICAgIEl0ZXJh dGVWYXJpYWJsZXNDYWxsYmFja05vcCwNCj4gKyAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAg ICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICBTaXplDQo+ICsgICAgICAgICAgICAgKTsN Cj4gKyAgaWYgKFJFVFVSTl9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIFNlcmlhbGl6ZVZhcmlh Ymxlc0ZyZWVJbnN0YW5jZSAoKkhhbmRsZSk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAg fQ0KPiArDQo+ICsgIFN0YXR1cyA9IEl0ZXJhdGVWYXJpYWJsZXNJbkJ1ZmZlciAoDQo+ICsgICAg ICAgICAgICAgSXRlcmF0ZVZhcmlhYmxlc0NhbGxiYWNrU2V0SW5JbnN0YW5jZSwNCj4gKyAgICAg ICAgICAgICAoVk9JRCopICpIYW5kbGUsDQo+ICsgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAg ICAgICAgICAgIFNpemUNCj4gKyAgICAgICAgICAgICApOw0KPiArICBpZiAoUkVUVVJOX0VSUk9S IChTdGF0dXMpKSB7DQo+ICsgICAgU2VyaWFsaXplVmFyaWFibGVzRnJlZUluc3RhbmNlICgqSGFu ZGxlKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFN0 YXR1czsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgSXRlcmF0ZXMgYWxsIHZhcmlhYmxl cyBmb3VuZCB3aXRoIFJ1bnRpbWVTZXJ2aWNlcyBHZXROZXh0VmFyaWFibGVOYW1lDQo+ICsNCj4g KyAgQHBhcmFtW2luXSAgIENhbGxiYWNrRnVuY3Rpb24gLSBGdW5jdGlvbiBjYWxsZWQgZm9yIGVh Y2ggdmFyaWFibGUgaW5zdGFuY2UNCj4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgLSBQYXNzZWQg dG8gZWFjaCBjYWxsIG9mIENhbGxiYWNrRnVuY3Rpb24NCj4gKw0KPiArICBAcmV0dmFsICAgICAg UkVUVVJOX1NVQ0NFU1MgLSBBbGwgdmFyaWFibGVzIHdlcmUgaXRlcmF0ZWQgd2l0aG91dCB0aGUN Cj4gKyAgICAgICAgICAgICAgICAgQ2FsbGJhY2tGdW5jdGlvbiByZXR1cm5pbmcgYW4gZXJyb3IN Cj4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9PVVRfT0ZfUkVTT1VSQ0VTIC0gVGhlcmUgd2Ugbm90 IGVub3VnaCByZXNvdXJjZXMNCj4gdG8NCj4gKyAgICAgICAgICAgICAgICAgaXRlcmF0ZSB0aHJv dWdoIHRoZSB2YXJpYWJsZXMNCj4gKyAgQHJldHVybiAgICAgIEFueSBvZiBSRVRVUk5fRVJST1Ig aW5kaWNhdGVzIGFuIGVycm9yIHJlYWRpbmcgdGhlIHZhcmlhYmxlDQo+ICsgICAgICAgICAgICAg ICAgIG9yIGFuIGVycm9yIHdhcyByZXR1cm5lZCBmcm9tIENhbGxiYWNrRnVuY3Rpb24NCj4gKw0K PiArKiovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbGl6ZVZhcmlhYmxl c0l0ZXJhdGVTeXN0ZW1WYXJpYWJsZXMgKA0KPiArICBJTiBWQVJJQUJMRV9TRVJJQUxJWkFUSU9O X0lURVJBVElPTl9DQUxMQkFDSyBDYWxsYmFja0Z1bmN0aW9uLA0KPiArICBJTiBWT0lEICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dA0KPiArICApDQo+ICt7DQo+ ICsgIFJFVFVSTl9TVEFUVVMgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICBWYXJpYWJsZU5hbWVCdWZmZXJTaXplOw0KPiArICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgVmFyaWFibGVOYW1lU2l6ZTsNCj4gKyAgQ0hBUjE2ICAgICAgICAg ICAgICAgICAgICAgICpWYXJpYWJsZU5hbWU7DQo+ICsgIEVGSV9HVUlEICAgICAgICAgICAgICAg ICAgICBWZW5kb3JHdWlkOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFi bGVEYXRhQnVmZmVyU2l6ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgIFZhcmlh YmxlRGF0YVNpemU7DQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVE YXRhOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBdHRyaWJ1dGVz Ow0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgKk5ld0J1ZmZlcjsNCj4gKw0KPiAr ICAvLw0KPiArICAvLyBJbml0aWFsaXplIHRoZSB2YXJpYWJsZSBuYW1lIGFuZCBkYXRhIGJ1ZmZl ciB2YXJpYWJsZXMuDQo+ICsgIC8vDQo+ICsgIFZhcmlhYmxlTmFtZUJ1ZmZlclNpemUgPSBzaXpl b2YgKENIQVIxNik7DQo+ICsgIFZhcmlhYmxlTmFtZSA9IEFsbG9jYXRlWmVyb1Bvb2wgKFZhcmlh YmxlTmFtZUJ1ZmZlclNpemUpOw0KPiArDQo+ICsgIFZhcmlhYmxlRGF0YUJ1ZmZlclNpemUgPSAw Ow0KPiArICBWYXJpYWJsZURhdGEgPSBOVUxMOw0KPiArDQo+ICsgIGZvciAoOzspIHsNCj4gKyAg ICAvLw0KPiArICAgIC8vIEdldCB0aGUgbmV4dCB2YXJpYWJsZSBuYW1lIGFuZCBndWlkDQo+ICsg ICAgLy8NCj4gKyAgICBWYXJpYWJsZU5hbWVTaXplID0gVmFyaWFibGVOYW1lQnVmZmVyU2l6ZTsN Cj4gKyAgICBTdGF0dXMgPSBnUlQtPkdldE5leHRWYXJpYWJsZU5hbWUgKA0KPiArICAgICAgICAg ICAgICAgICAgICAmVmFyaWFibGVOYW1lU2l6ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgVmFy aWFibGVOYW1lLA0KPiArICAgICAgICAgICAgICAgICAgICAmVmVuZG9yR3VpZA0KPiArICAgICAg ICAgICAgICAgICAgICApOw0KPiArICAgIGlmIChTdGF0dXMgPT0gRUZJX0JVRkZFUl9UT09fU01B TEwpIHsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBUaGUgY3VycmVudGx5IGFsbG9jYXRlZCBW YXJpYWJsZU5hbWUgYnVmZmVyIGlzIHRvbyBzbWFsbCwNCj4gKyAgICAgIC8vIHNvIHdlIGFsbG9j YXRlIGEgbGFyZ2VyIGJ1ZmZlciwgYW5kIGNvcHkgdGhlIG9sZCBidWZmZXINCj4gKyAgICAgIC8v IHRvIGl0Lg0KPiArICAgICAgLy8NCj4gKyAgICAgIE5ld0J1ZmZlciA9IEFsbG9jYXRlUG9vbCAo VmFyaWFibGVOYW1lU2l6ZSk7DQo+ICsgICAgICBpZiAoTmV3QnVmZmVyID09IE5VTEwpIHsNCj4g KyAgICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgICAgICAgIGJyZWFr Ow0KPiArICAgICAgfQ0KPiArICAgICAgQ29weU1lbSAoTmV3QnVmZmVyLCBWYXJpYWJsZU5hbWUs IFZhcmlhYmxlTmFtZUJ1ZmZlclNpemUpOw0KPiArICAgICAgaWYgKFZhcmlhYmxlTmFtZSAhPSBO VUxMKSB7DQo+ICsgICAgICAgIEZyZWVQb29sIChWYXJpYWJsZU5hbWUpOw0KPiArICAgICAgfQ0K PiArICAgICAgVmFyaWFibGVOYW1lID0gTmV3QnVmZmVyOw0KPiArICAgICAgVmFyaWFibGVOYW1l QnVmZmVyU2l6ZSA9IFZhcmlhYmxlTmFtZVNpemU7DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAg ICAvLyBUcnkgdG8gZ2V0IHRoZSBuZXh0IHZhcmlhYmxlIG5hbWUgYWdhaW4gd2l0aCB0aGUgbGFy Z2VyIGJ1ZmZlci4NCj4gKyAgICAgIC8vDQo+ICsgICAgICBTdGF0dXMgPSBnUlQtPkdldE5leHRW YXJpYWJsZU5hbWUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICZWYXJpYWJsZU5hbWVTaXpl LA0KPiArICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlTmFtZSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAmVmVuZG9yR3VpZA0KPiArICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsg ICAgfQ0KPiArDQo+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgaWYg KFN0YXR1cyA9PSBFRklfTk9UX0ZPVU5EKSB7DQo+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9TVUND RVNTOw0KPiArICAgICAgfQ0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAg Ly8NCj4gKyAgICAvLyBHZXQgdGhlIHZhcmlhYmxlIGRhdGEgYW5kIGF0dHJpYnV0ZXMNCj4gKyAg ICAvLw0KPiArICAgIFZhcmlhYmxlRGF0YVNpemUgPSBWYXJpYWJsZURhdGFCdWZmZXJTaXplOw0K PiArICAgIFN0YXR1cyA9IGdSVC0+R2V0VmFyaWFibGUgKA0KPiArICAgICAgICAgICAgICAgICAg ICBWYXJpYWJsZU5hbWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICZWZW5kb3JHdWlkLA0KPiAr ICAgICAgICAgICAgICAgICAgICAmVmFyaWFibGVBdHRyaWJ1dGVzLA0KPiArICAgICAgICAgICAg ICAgICAgICAmVmFyaWFibGVEYXRhU2l6ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgVmFyaWFi bGVEYXRhDQo+ICsgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgaWYgKFN0YXR1cyA9PSBF RklfQlVGRkVSX1RPT19TTUFMTCkgew0KPiArICAgICAgLy8NCj4gKyAgICAgIC8vIFRoZSBjdXJy ZW50bHkgYWxsb2NhdGVkIFZhcmlhYmxlRGF0YSBidWZmZXIgaXMgdG9vIHNtYWxsLA0KPiArICAg ICAgLy8gc28gd2UgYWxsb2NhdGUgYSBsYXJnZXIgYnVmZmVyLg0KPiArICAgICAgLy8NCj4gKyAg ICAgIGlmIChWYXJpYWJsZURhdGFCdWZmZXJTaXplICE9IDApIHsNCj4gKyAgICAgICAgRnJlZVBv b2wgKFZhcmlhYmxlRGF0YSk7DQo+ICsgICAgICAgIFZhcmlhYmxlRGF0YSA9IE5VTEw7DQo+ICsg ICAgICAgIFZhcmlhYmxlRGF0YUJ1ZmZlclNpemUgPSAwOw0KPiArICAgICAgfQ0KPiArICAgICAg VmFyaWFibGVEYXRhID0gQWxsb2NhdGVQb29sIChWYXJpYWJsZURhdGFTaXplKTsNCj4gKyAgICAg IGlmIChWYXJpYWJsZURhdGEgPT0gTlVMTCkgew0KPiArICAgICAgICBTdGF0dXMgPSBFRklfT1VU X09GX1JFU09VUkNFUzsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsgICAgICBW YXJpYWJsZURhdGFCdWZmZXJTaXplID0gVmFyaWFibGVEYXRhU2l6ZTsNCj4gKw0KPiArICAgICAg Ly8NCj4gKyAgICAgIC8vIFRyeSB0byByZWFkIHRoZSB2YXJpYWJsZSBhZ2FpbiB3aXRoIHRoZSBs YXJnZXIgYnVmZmVyLg0KPiArICAgICAgLy8NCj4gKyAgICAgIFN0YXR1cyA9IGdSVC0+R2V0VmFy aWFibGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlTmFtZSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAmVmVuZG9yR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAm VmFyaWFibGVBdHRyaWJ1dGVzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICZWYXJpYWJsZURh dGFTaXplLA0KPiArICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlRGF0YQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICk7DQo+ICsgICAgfQ0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8vDQo+ICsgICAg Ly8gUnVuIHRoZSBjYWxsYmFjayBmdW5jdGlvbg0KPiArICAgIC8vDQo+ICsgICAgU3RhdHVzID0g KCpDYWxsYmFja0Z1bmN0aW9uKSAoDQo+ICsgICAgICAgICAgICAgICBDb250ZXh0LA0KPiArICAg ICAgICAgICAgICAgVmFyaWFibGVOYW1lLA0KPiArICAgICAgICAgICAgICAgJlZlbmRvckd1aWQs DQo+ICsgICAgICAgICAgICAgICBWYXJpYWJsZUF0dHJpYnV0ZXMsDQo+ICsgICAgICAgICAgICAg ICBWYXJpYWJsZURhdGFTaXplLA0KPiArICAgICAgICAgICAgICAgVmFyaWFibGVEYXRhDQo+ICsg ICAgICAgICAgICAgICApOw0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAg ICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKFZhcmlhYmxl TmFtZSAhPSBOVUxMKSB7DQo+ICsgICAgRnJlZVBvb2wgKFZhcmlhYmxlTmFtZSk7DQo+ICsgIH0N Cj4gKw0KPiArICBpZiAoVmFyaWFibGVEYXRhICE9IE5VTEwpIHsNCj4gKyAgICBGcmVlUG9vbCAo VmFyaWFibGVEYXRhKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ ICsNCj4gKw0KPiArLyoqDQo+ICsgIEl0ZXJhdGVzIGFsbCB2YXJpYWJsZXMgZm91bmQgaW4gdGhl IHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gKw0KPiArICBAcGFyYW1baW5dICAg SGFuZGxlIC0gSGFuZGxlIGZvciBhIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4g KyAgQHBhcmFtW2luXSAgIENhbGxiYWNrRnVuY3Rpb24gLSBGdW5jdGlvbiBjYWxsZWQgZm9yIGVh Y2ggdmFyaWFibGUgaW5zdGFuY2UNCj4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgLSBQYXNzZWQg dG8gZWFjaCBjYWxsIG9mIENhbGxiYWNrRnVuY3Rpb24NCj4gKw0KPiArICBAcmV0dmFsICAgICAg UkVUVVJOX1NVQ0NFU1MgLSBBbGwgdmFyaWFibGVzIHdlcmUgaXRlcmF0ZWQgd2l0aG91dCB0aGUN Cj4gKyAgICAgICAgICAgICAgICAgQ2FsbGJhY2tGdW5jdGlvbiByZXR1cm5pbmcgYW4gZXJyb3IN Cj4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9PVVRfT0ZfUkVTT1VSQ0VTIC0gVGhlcmUgd2Ugbm90 IGVub3VnaCByZXNvdXJjZXMNCj4gdG8NCj4gKyAgICAgICAgICAgICAgICAgaXRlcmF0ZSB0aHJv dWdoIHRoZSB2YXJpYWJsZXMNCj4gKyAgQHJldHVybiAgICAgIEFueSBvZiBSRVRVUk5fRVJST1Ig aW5kaWNhdGVzIGFuIGVycm9yIHJlYWRpbmcgdGhlIHZhcmlhYmxlDQo+ICsgICAgICAgICAgICAg ICAgIG9yIGFuIGVycm9yIHdhcyByZXR1cm5lZCBmcm9tIENhbGxiYWNrRnVuY3Rpb24NCj4gKw0K PiArKiovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbGl6ZVZhcmlhYmxl c0l0ZXJhdGVJbnN0YW5jZVZhcmlhYmxlcyAoDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZSwNCj4gKyAgSU4gVkFSSUFCTEVfU0VSSUFMSVpB VElPTl9JVEVSQVRJT05fQ0FMTEJBQ0sgQ2FsbGJhY2tGdW5jdGlvbiwNCj4gKyAgSU4gVk9JRCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQNCj4gKyAgKQ0KPiAr ew0KPiArICBTVl9JTlNUQU5DRSAgICAqSW5zdGFuY2U7DQo+ICsNCj4gKyAgSW5zdGFuY2UgPSBT Vl9GUk9NX0hBTkRMRSAoSGFuZGxlKTsNCj4gKw0KPiArICBpZiAoKEluc3RhbmNlLT5CdWZmZXJQ dHIgIT0gTlVMTCkgJiYgKEluc3RhbmNlLT5EYXRhU2l6ZSAhPSAwKSkgew0KPiArICAgIHJldHVy biBJdGVyYXRlVmFyaWFibGVzSW5CdWZmZXIgKA0KPiArICAgICAgICAgICAgIENhbGxiYWNrRnVu Y3Rpb24sDQo+ICsgICAgICAgICAgICAgQ29udGV4dCwNCj4gKyAgICAgICAgICAgICBJbnN0YW5j ZS0+QnVmZmVyUHRyLA0KPiArICAgICAgICAgICAgIEluc3RhbmNlLT5EYXRhU2l6ZQ0KPiArICAg ICAgICAgICAgICk7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgcmV0dXJuIFJFVFVSTl9TVUNDRVNT Ow0KPiArICB9DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFNldHMgYWxsIHZhcmlhYmxl cyBmb3VuZCBpbiB0aGUgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiArDQo+ICsg IEBwYXJhbVtpbl0gICBIYW5kbGUgLSBIYW5kbGUgZm9yIGEgdmFyaWFibGUgc2VyaWFsaXphdGlv biBpbnN0YW5jZQ0KPiArDQo+ICsgIEByZXR2YWwgICAgICBSRVRVUk5fU1VDQ0VTUyAtIEFsbCB2 YXJpYWJsZXMgd2VyZSBzZXQgc3VjY2Vzc2Z1bGx5DQo+ICsgIEByZXR2YWwgICAgICBSRVRVUk5f T1VUX09GX1JFU09VUkNFUyAtIFRoZXJlIHdlIG5vdCBlbm91Z2ggcmVzb3VyY2VzDQo+IHRvDQo+ ICsgICAgICAgICAgICAgICAgIHNldCBhbGwgdGhlIHZhcmlhYmxlcw0KPiArICBAcmV0dXJuICAg ICAgQW55IG9mIFJFVFVSTl9FUlJPUiBpbmRpY2F0ZXMgYW4gZXJyb3IgcmVhZGluZyB0aGUgdmFy aWFibGVzDQo+ICsgICAgICAgICAgICAgICAgIG9yIGluIGF0dGVtcHRpbmcgdG8gc2V0IGEgdmFy aWFibGUNCj4gKw0KPiArKiovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK1Nlcmlh bGl6ZVZhcmlhYmxlc1NldFNlcmlhbGl6ZWRWYXJpYWJsZXMgKA0KPiArICBJTiBFRklfSEFORExF ICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4g U2VyaWFsaXplVmFyaWFibGVzSXRlcmF0ZUluc3RhbmNlVmFyaWFibGVzICgNCj4gKyAgICAgICAg ICAgSGFuZGxlLA0KPiArICAgICAgICAgICBJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tTZXRTeXN0 ZW1WYXJpYWJsZSwNCj4gKyAgICAgICAgICAgTlVMTA0KPiArICAgICAgICAgICApOw0KPiArfQ0K PiArDQo+ICsNCj4gKy8qKg0KPiArICBBZGRzIGEgdmFyaWFibGUgdG8gdGhlIHZhcmlhYmxlIHNl cmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gKw0KPiArICBAcGFyYW1baW5dIEhhbmRsZSAtIEhhbmRs ZSBmb3IgYSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQo+ICsgIEBwYXJhbVtpbl0g VmFyaWFibGVOYW1lIC0gUmVmZXIgdG8gUnVudGltZVNlcnZpY2VzIEdldFZhcmlhYmxlDQo+ICsg IEBwYXJhbVtpbl0gVmVuZG9yR3VpZCAtIFJlZmVyIHRvIFJ1bnRpbWVTZXJ2aWNlcyBHZXRWYXJp YWJsZQ0KPiArICBAcGFyYW1baW5dIEF0dHJpYnV0ZXMgLSBSZWZlciB0byBSdW50aW1lU2Vydmlj ZXMgR2V0VmFyaWFibGUNCj4gKyAgQHBhcmFtW2luXSBEYXRhU2l6ZSAtIFJlZmVyIHRvIFJ1bnRp bWVTZXJ2aWNlcyBHZXRWYXJpYWJsZQ0KPiArICBAcGFyYW1baW5dIERhdGEgLSBSZWZlciB0byBS dW50aW1lU2VydmljZXMgR2V0VmFyaWFibGUNCj4gKw0KPiArICBAcmV0dmFsICAgICAgUkVUVVJO X1NVQ0NFU1MgLSBBbGwgdmFyaWFibGVzIHdlcmUgc2V0IHN1Y2Nlc3NmdWxseQ0KPiArICBAcmV0 dmFsICAgICAgUkVUVVJOX09VVF9PRl9SRVNPVVJDRVMgLSBUaGVyZSB3ZSBub3QgZW5vdWdoIHJl c291cmNlcw0KPiB0bw0KPiArICAgICAgICAgICAgICAgICBhZGQgdGhlIHZhcmlhYmxlDQo+ICsg IEByZXR2YWwgICAgICBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgLSBIYW5kbGUgd2FzIG5vdCBh IHZhbGlkDQo+ICsgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFu Y2Ugb3INCj4gKyAgICAgICAgICAgICAgICAgVmFyaWFibGVOYW1lLCBWYXJpYWJsZUd1aWQgb3Ig RGF0YSBhcmUgTlVMTC4NCj4gKw0KPiArKiovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtFRklBUEkN Cj4gK1NlcmlhbGl6ZVZhcmlhYmxlc0FkZFZhcmlhYmxlICgNCj4gKyAgSU4gRUZJX0hBTkRMRSAg ICAgICAgICAgICAgICAgICBIYW5kbGUsDQo+ICsgIElOIENIQVIxNiAgICAgICAgICAgICAgICAg ICAgICAgKlZhcmlhYmxlTmFtZSwNCj4gKyAgSU4gRUZJX0dVSUQgICAgICAgICAgICAgICAgICAg ICAqVmVuZG9yR3VpZCwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICBBdHRy aWJ1dGVzLA0KPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXplLA0K PiArICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICpEYXRhDQo+ICsgICkNCj4gK3sN Cj4gKyAgUkVUVVJOX1NUQVRVUyAgU3RhdHVzOw0KPiArICBTVl9JTlNUQU5DRSAgICAqSW5zdGFu Y2U7DQo+ICsgIFVJTlQzMiAgICAgICAgIFNlcmlhbGl6ZWROYW1lU2l6ZTsNCj4gKyAgVUlOVDMy ICAgICAgICAgU2VyaWFsaXplZERhdGFTaXplOw0KPiArICBVSU5UTiAgICAgICAgICBTZXJpYWxp emVkU2l6ZTsNCj4gKw0KPiArICBJbnN0YW5jZSA9IFNWX0ZST01fSEFORExFIChIYW5kbGUpOw0K PiArDQo+ICsgIGlmICgoSW5zdGFuY2UtPlNpZ25hdHVyZSAhPSBTVl9TSUdOQVRVUkUpIHx8DQo+ ICsgICAgICAoVmFyaWFibGVOYW1lID09IE5VTEwpIHx8IChWZW5kb3JHdWlkID09IE5VTEwpIHx8 IChEYXRhID09IE5VTEwpKSB7DQo+ICsgIH0NCj4gKw0KPiArICBTZXJpYWxpemVkTmFtZVNpemUg PSAoVUlOVDMyKSBTdHJTaXplIChWYXJpYWJsZU5hbWUpOw0KPiArDQo+ICsgIFNlcmlhbGl6ZWRT aXplID0NCj4gKyAgICBzaXplb2YgKFNlcmlhbGl6ZWROYW1lU2l6ZSkgKw0KPiArICAgIFNlcmlh bGl6ZWROYW1lU2l6ZSArDQo+ICsgICAgc2l6ZW9mICgqVmVuZG9yR3VpZCkgKw0KPiArICAgIHNp emVvZiAoQXR0cmlidXRlcykgKw0KPiArICAgIHNpemVvZiAoU2VyaWFsaXplZERhdGFTaXplKSAr DQo+ICsgICAgRGF0YVNpemU7DQo+ICsNCj4gKyAgU3RhdHVzID0gRW5zdXJlRXh0cmFCdWZmZXJT cGFjZSAoDQo+ICsgICAgICAgICAgICAgSW5zdGFuY2UsDQo+ICsgICAgICAgICAgICAgU2VyaWFs aXplZFNpemUNCj4gKyAgICAgICAgICAgICApOw0KPiArICBpZiAoUkVUVVJOX0VSUk9SIChTdGF0 dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIEFkZCBuYW1lIHNpemUgKFVJTlQzMikNCj4gKyAgLy8NCj4gKyAgQXBwZW5kVG9CdWZmZXIg KEluc3RhbmNlLCAoVk9JRCopICZTZXJpYWxpemVkTmFtZVNpemUsIHNpemVvZg0KPiAoU2VyaWFs aXplZE5hbWVTaXplKSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQWRkIHZhcmlhYmxlIHVuaWNv ZGUgbmFtZSBzdHJpbmcNCj4gKyAgLy8NCj4gKyAgQXBwZW5kVG9CdWZmZXIgKEluc3RhbmNlLCAo Vk9JRCopIFZhcmlhYmxlTmFtZSwgU2VyaWFsaXplZE5hbWVTaXplKTsNCj4gKw0KPiArICAvLw0K PiArICAvLyBBZGQgdmFyaWFibGUgR1VJRA0KPiArICAvLw0KPiArICBBcHBlbmRUb0J1ZmZlciAo SW5zdGFuY2UsIChWT0lEKikgVmVuZG9yR3VpZCwgc2l6ZW9mICgqVmVuZG9yR3VpZCkpOw0KPiAr DQo+ICsgIC8vDQo+ICsgIC8vIEFkZCB2YXJpYWJsZSBhdHRyaWJ1dGVzDQo+ICsgIC8vDQo+ICsg IEFwcGVuZFRvQnVmZmVyIChJbnN0YW5jZSwgKFZPSUQqKSAmQXR0cmlidXRlcywgc2l6ZW9mIChB dHRyaWJ1dGVzKSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQWRkIHZhcmlhYmxlIGRhdGEgc2l6 ZSAoVUlOVDMyKQ0KPiArICAvLw0KPiArICBTZXJpYWxpemVkRGF0YVNpemUgPSAoVUlOVDMyKSBE YXRhU2l6ZTsNCj4gKyAgQXBwZW5kVG9CdWZmZXIgKEluc3RhbmNlLCAoVk9JRCopICZTZXJpYWxp emVkRGF0YVNpemUsIHNpemVvZg0KPiAoU2VyaWFsaXplZERhdGFTaXplKSk7DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gQWRkIHZhcmlhYmxlIGRhdGENCj4gKyAgLy8NCj4gKyAgQXBwZW5kVG9CdWZm ZXIgKEluc3RhbmNlLCBEYXRhLCBEYXRhU2l6ZSk7DQo+ICsNCj4gKyAgcmV0dXJuIFJFVFVSTl9T VUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBTZXJpYWxpemVzIHRoZSB2YXJp YWJsZXMga25vd24gdG8gdGhpcyBpbnN0YW5jZSBpbnRvIHRoZQ0KPiArICBwcm92aWRlZCBidWZm ZXIuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgICAgSGFuZGxlIC0gSGFuZGxlIGZvciBhIHZhcmlh YmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gKyAgQHBhcmFtW291dF0gICAgQnVmZmVyIC0g QSBidWZmZXIgdG8gc3RvcmUgdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbg0KPiArICAgICAgICAg ICAgICAgICAgIG9mIHRoZSB2YXJpYWJsZXMuDQo+ICsgIEBwYXJhbVtpbixvdXRdIFNpemUgLSBP biBpbnB1dCB0aGlzIGlzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIuDQo+ICsgICAgICAgICAgICAg ICAgICAgT24gb3V0cHV0IHRoaXMgaXMgdGhlIHNpemUgb2YgdGhlIGJpbmFyeSByZXByZXNlbnRh dGlvbg0KPiArICAgICAgICAgICAgICAgICAgIG9mIHRoZSB2YXJpYWJsZXMuDQo+ICsNCj4gKyAg QHJldHZhbCAgICAgIFJFVFVSTl9TVUNDRVNTIC0gVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiB3 YXMgc3VjY2Vzc2Z1bGx5DQo+ICsgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCBhbmQgcmV0dXJu ZWQgaW4gdGhlIGJ1ZmZlci4NCj4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9PVVRfT0ZfUkVTT1VS Q0VTIC0gVGhlcmUgd2Ugbm90IGVub3VnaCByZXNvdXJjZXMNCj4gdG8NCj4gKyAgICAgICAgICAg ICAgICAgc2F2ZSB0aGUgdmFyaWFibGVzIHRvIHRoZSBidWZmZXIuDQo+ICsgIEByZXR2YWwgICAg ICBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgLSBIYW5kbGUgd2FzIG5vdCBhIHZhbGlkDQo+ICsg ICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2Ugb3INCj4gKyAg ICAgICAgICAgICAgICAgU2l6ZSBvciBCdWZmZXIgd2VyZSBOVUxMLg0KPiArICBAcmV0dmFsICAg ICAgUkVUVVJOX0JVRkZFUl9UT09fU01BTEwgLSBUaGUgQnVmZmVyIHNpemUgYXMgaW5kaWNhdGVk IGJ5DQo+ICsgICAgICAgICAgICAgICAgIHRoZSBTaXplIHBhcmFtZXRlciB3YXMgdG9vIHNtYWxs IGZvciB0aGUgc2VyaWFsaXplZA0KPiArICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkYXRhLiAg U2l6ZSBpcyByZXR1cm5lZCB3aXRoIHRoZSByZXF1aXJlZCBzaXplLg0KPiArDQo+ICsqKi8NCj4g K1JFVFVSTl9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2VyaWFsaXplVmFyaWFibGVzVG9CdWZmZXIg KA0KPiArICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlLA0K PiArICBPVVQgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlciwNCj4g KyAgSU4gT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICpTaXplDQo+ICsgICkN Cj4gK3sNCj4gKyAgU1ZfSU5TVEFOQ0UgICAgKkluc3RhbmNlOw0KPiArDQo+ICsgIEluc3RhbmNl ID0gU1ZfRlJPTV9IQU5ETEUgKEhhbmRsZSk7DQo+ICsNCj4gKyAgaWYgKFNpemUgPT0gTlVMTCkg ew0KPiArICAgIHJldHVybiBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0K PiArICBpZiAoKlNpemUgPCBJbnN0YW5jZS0+RGF0YVNpemUpIHsNCj4gKyAgICAqU2l6ZSA9IElu c3RhbmNlLT5EYXRhU2l6ZTsNCj4gKyAgICByZXR1cm4gUkVUVVJOX0JVRkZFUl9UT09fU01BTEw7 DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoQnVmZmVyID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4g UkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgKlNpemUgPSBJbnN0 YW5jZS0+RGF0YVNpemU7DQo+ICsgIENvcHlNZW0gKEJ1ZmZlciwgSW5zdGFuY2UtPkJ1ZmZlclB0 ciwgSW5zdGFuY2UtPkRhdGFTaXplKTsNCj4gKw0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7 DQo+ICt9DQo+ICsNCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5jDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMC4uN2JlZGUxNDk2ZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5j DQo+IEBAIC0wLDAgKzEsODY1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgVGhpcyBkcml2ZXIgZWZm ZWN0dWF0ZXMgT1ZNRidzIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIGV4cG9z ZXMNCj4gKyAgdGhlbSB2aWEgSElJLg0KPiArDQo+ICsgIENvcHlyaWdodCAoQykgMjAxNCwgUmVk IEhhdCwgSW5jLg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE0LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9CYXNlTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv RGV2aWNlUGF0aExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSGlpTGliLmg+DQo+ICsjaW5j bHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9QcmludExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxl TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpSGlpU2VydmljZXNMaWIuaD4NCj4gKyNp bmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRoLmg+DQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvR3Jh cGhpY3NPdXRwdXQuaD4NCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9IaWlDb25maWdBY2Nlc3MuaD4N Cj4gKyNpbmNsdWRlIDxHdWlkL01kZU1vZHVsZUhpaS5oPg0KPiArI2luY2x1ZGUgPEd1aWQvU2lt aWNzWDU4UGxhdGZvcm1Db25maWcuaD4NCj4gKw0KPiArI2luY2x1ZGUgIlBsYXRmb3JtLmgiDQo+ ICsjaW5jbHVkZSAiUGxhdGZvcm1Db25maWcuaCINCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0R4ZVNl cnZpY2VzVGFibGVMaWIuaD4NCj4gKy8vDQo+ICsvLyBUaGUgSGlpQWRkUGFja2FnZXMoKSBsaWJy YXJ5IGZ1bmN0aW9uIHJlcXVpcmVzIHRoYXQgYW55IGNvbnRyb2xsZXIgKG9yDQo+ICsvLyBpbWFn ZSkgaGFuZGxlLCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIEhJSSBwYWNrYWdlcyB1bmRlciBp bnN0YWxsYXRpb24sIGJlDQo+ICsvLyAiZGVjb3JhdGVkIiB3aXRoIGEgZGV2aWNlIHBhdGguIFRo ZSB0cmFkaXRpb24gc2VlbXMgdG8gYmUgYSB2ZW5kb3IgZGV2aWNlDQo+ICsvLyBwYXRoLg0KPiAr Ly8NCj4gKy8vIFdlJ2QgbGlrZSB0byBhc3NvY2lhdGUgb3VyIEhJSSBwYWNrYWdlcyB3aXRoIHRo ZSBkcml2ZXIncyBpbWFnZSBoYW5kbGUuIFRoZQ0KPiArLy8gZmlyc3QgaWRlYSBpcyB0byB1c2Ug dGhlIGRyaXZlciBpbWFnZSdzIGRldmljZSBwYXRoLiBVbmZvcnR1bmF0ZWx5LCBsb2FkZWQNCj4g Ky8vIGltYWdlcyBvbmx5IGNvbWUgd2l0aCBhbiBFRklfTE9BREVEX0lNQUdFX0RFVklDRV9QQVRI X1BST1RPQ09MDQo+IChub3QgdGhlDQo+ICsvLyB1c3VhbCBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wpLCBpZS4gYSBkaWZmZXJlbnQgR1VJRC4gSW4gYWRkaXRpb24sIGV2ZW4NCj4gdGhlDQo+ICsv LyBFRklfTE9BREVEX0lNQUdFX0RFVklDRV9QQVRIX1BST1RPQ09MIGludGVyZmFjZSBtYXkgYmUg TlVMTCwgaWYNCj4gdGhlIGltYWdlDQo+ICsvLyBoYXMgYmVlbiBsb2FkZWQgZnJvbSBhbiAidW5u YW1lZCIgbWVtb3J5IHNvdXJjZSBidWZmZXIuDQo+ICsvLw0KPiArLy8gSGVuY2UgbGV0J3MganVz dCBzdGljayB3aXRoIHRoZSB0cmFkaXRpb24gLS0gdXNlIGEgZGVkaWNhdGVkIHZlbmRvciBkZXZp Y2UNCj4gKy8vIHBhdGgsIHdpdGggdGhlIGRyaXZlcidzIEZJTEVfR1VJRC4NCj4gKy8vDQo+ICsj cHJhZ21hIHBhY2soMSkNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVkVORE9SX0RFVklDRV9Q QVRIICAgICAgIFZlbmRvckRldmljZVBhdGg7DQo+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NP TCBFbmQ7DQo+ICt9IFBLR19ERVZJQ0VfUEFUSDsNCj4gKyNwcmFnbWEgcGFjaygpDQo+ICsNCj4g K1NUQVRJQyBQS0dfREVWSUNFX1BBVEggbVBrZ0RldmljZVBhdGggPSB7DQo+ICsgIHsNCj4gKyAg ICB7DQo+ICsgICAgICBIQVJEV0FSRV9ERVZJQ0VfUEFUSCwNCj4gKyAgICAgIEhXX1ZFTkRPUl9E UCwNCj4gKyAgICAgIHsNCj4gKyAgICAgICAgKFVJTlQ4KSAoc2l6ZW9mIChWRU5ET1JfREVWSUNF X1BBVEgpICAgICApLA0KPiArICAgICAgICAoVUlOVDgpIChzaXplb2YgKFZFTkRPUl9ERVZJQ0Vf UEFUSCkgPj4gOCkNCj4gKyAgICAgIH0NCj4gKyAgICB9LA0KPiArICAgIEVGSV9DQUxMRVJfSURf R1VJRA0KPiArICB9LA0KPiArICB7DQo+ICsgICAgRU5EX0RFVklDRV9QQVRIX1RZUEUsDQo+ICsg ICAgRU5EX0VOVElSRV9ERVZJQ0VfUEFUSF9TVUJUWVBFLA0KPiArICAgIHsNCj4gKyAgICAgIChV SU5UOCkgKEVORF9ERVZJQ0VfUEFUSF9MRU5HVEggICAgICksDQo+ICsgICAgICAoVUlOVDgpIChF TkRfREVWSUNFX1BBVEhfTEVOR1RIID4+IDgpDQo+ICsgICAgfQ0KPiArICB9DQo+ICt9Ow0KPiAr DQo+ICsvLw0KPiArLy8gVGhlIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGJldHdlZW4gdGhlIEhJ SSBlbmdpbmUgKGZvcm0gZGlzcGxheSBldGMpIGFuZA0KPiArLy8gdGhpcyBkcml2ZXIuDQo+ICsv Lw0KPiArU1RBVElDIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCBtQ29uZmlnQWNjZXNz Ow0KPiArDQo+ICsvLw0KPiArLy8gVGhlIGhhbmRsZSByZXByZXNlbnRpbmcgb3VyIGxpc3Qgb2Yg cGFja2FnZXMgYWZ0ZXIgaW5zdGFsbGF0aW9uLg0KPiArLy8NCj4gK1NUQVRJQyBFRklfSElJX0hB TkRMRSBtSW5zdGFsbGVkUGFja2FnZXM7DQo+ICsNCj4gKy8vDQo+ICsvLyBUaGUgYXJyYXlzIGJl bG93IGNvbnN0aXR1dGUgb3VyIEhJSSBwYWNrYWdlIGxpc3QuIFRoZXkgYXJlIGF1dG8tZ2VuZXJh dGVkIGJ5DQo+ICsvLyB0aGUgVkZSIGNvbXBpbGVyIGFuZCBsaW5rZWQgaW50byB0aGUgZHJpdmVy IGltYWdlIGR1cmluZyB0aGUgYnVpbGQuDQo+ICsvLw0KPiArLy8gLSBUaGUgc3RyaW5ncyBwYWNr YWdlIHJlY2VpdmVzIGl0cyBDIGlkZW50aWZpZXIgZnJvbSB0aGUgZHJpdmVyJ3MgQkFTRV9OQU1F LA0KPiArLy8gICBwbHVzICJTdHJpbmdzIi4NCj4gKy8vDQo+ICsvLyAtIFRoZSBmb3JtcyBwYWNr YWdlIHJlY2VpdmVzIGl0cyBDIGlkZW50aWZpZXIgZnJvbSB0aGUgVkZSIGZpbGUncyBiYXNlbmFt ZSwNCj4gKy8vICAgcGx1cyAiQmluIi4NCj4gKy8vDQo+ICsvLw0KPiArZXh0ZXJuIFVJTlQ4IFBs YXRmb3JtRHhlU3RyaW5nc1tdOw0KPiArZXh0ZXJuIFVJTlQ4IFBsYXRmb3JtRm9ybXNCaW5bXTsN Cj4gKw0KPiArLy8NCj4gKy8vIFdlIHdhbnQgdG8gYmUgbm90aWZpZWQgYWJvdXQgR09QIGluc3Rh bGxhdGlvbnMgdW50aWwgd2UgZmluZCBvbmUgR09QDQo+ICsvLyBpbnRlcmZhY2UgdGhhdCBsZXRz IHVzIHBvcHVsYXRlIHRoZSBmb3JtLg0KPiArLy8NCj4gK1NUQVRJQyBFRklfRVZFTlQgbUdvcEV2 ZW50Ow0KPiArDQo+ICsvLw0KPiArLy8gVGhlIHJlZ2lzdHJhdGlvbiByZWNvcmQgdW5kZXJuZWF0 aCB0aGlzIHBvaW50ZXIgYWxsb3dzIHVzIHRvIGl0ZXJhdGUgdGhyb3VnaA0KPiArLy8gdGhlIEdP UCBpbnN0YW5jZXMgb25lIGJ5IG9uZS4NCj4gKy8vDQo+ICtTVEFUSUMgVk9JRCAqbUdvcFRyYWNr ZXI7DQo+ICsNCj4gKy8vDQo+ICsvLyBDYWNoZSB0aGUgcmVzb2x1dGlvbnMgd2UgZ2V0IGZyb20g dGhlIEdPUC4NCj4gKy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQzMiBYOw0KPiAr ICBVSU5UMzIgWTsNCj4gK30gR09QX01PREU7DQo+ICsNCj4gK1NUQVRJQyBVSU5UTiAgICBtTnVt R29wTW9kZXM7DQo+ICtTVEFUSUMgR09QX01PREUgKm1Hb3BNb2RlczsNCj4gKw0KPiArDQo+ICsv KioNCj4gKyAgTG9hZCB0aGUgcGVyc2lzdGVudCBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGFuZCB0 cmFuc2xhdGUgaXQgdG8gYmluYXJ5IGZvcm0NCj4gKyAgc3RhdGUuDQo+ICsNCj4gKyAgSWYgdGhl IHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gaXMgbWlzc2luZywgdGhlbiB0aGUgZnVuY3Rpb24gZmls bHMgaW4gYQ0KPiArICBkZWZhdWx0IHN0YXRlLg0KPiArDQo+ICsgIEBwYXJhbVtvdXRdIE1haW5G b3JtU3RhdGUgIEJpbmFyeSBmb3JtL3dpZGdldCBzdGF0ZSBhZnRlciB0cmFuc2xhdGlvbi4NCj4g Kw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICBGb3JtL3dpZGdldCBzdGF0ZSByZWFkeS4NCj4g KyAgQHJldHVybiAgICAgICAgICAgICAgRXJyb3IgY29kZXMgZnJvbSB1bmRlcmx5aW5nIGZ1bmN0 aW9ucy4NCj4gKyoqLw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1Bs YXRmb3JtQ29uZmlnVG9Gb3JtU3RhdGUgKA0KPiArICBPVVQgTUFJTl9GT1JNX1NUQVRFICpNYWlu Rm9ybVN0YXRlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgIFN0YXR1czsNCj4g KyAgUExBVEZPUk1fQ09ORklHIFBsYXRmb3JtQ29uZmlnOw0KPiArICBVSU5UNjQgICAgICAgICAg T3B0aW9uYWxFbGVtZW50czsNCj4gKyAgVUlOVE4gICAgICAgICAgIE1vZGVOdW1iZXI7DQo+ICsN Cj4gKyAgWmVyb01lbSAoTWFpbkZvcm1TdGF0ZSwgc2l6ZW9mICpNYWluRm9ybVN0YXRlKTsNCj4g Kw0KPiArICBTdGF0dXMgPSBQbGF0Zm9ybUNvbmZpZ0xvYWQgKCZQbGF0Zm9ybUNvbmZpZywgJk9w dGlvbmFsRWxlbWVudHMpOw0KPiArICBzd2l0Y2ggKFN0YXR1cykgew0KPiArICBjYXNlIEVGSV9T VUNDRVNTOg0KPiArICAgIGlmIChPcHRpb25hbEVsZW1lbnRzICYgUExBVEZPUk1fQ09ORklHX0Zf R1JBUEhJQ1NfUkVTT0xVVElPTikgew0KPiArICAgICAgLy8NCj4gKyAgICAgIC8vIEZvcm1hdCB0 aGUgcHJlZmVycmVkIHJlc29sdXRpb24gYXMgdGV4dC4NCj4gKyAgICAgIC8vDQo+ICsgICAgICBV bmljb2RlU1ByaW50QXNjaWlGb3JtYXQgKA0KPiArICAgICAgICAoQ0hBUjE2ICopIE1haW5Gb3Jt U3RhdGUtPkN1cnJlbnRQcmVmZXJyZWRSZXNvbHV0aW9uLA0KPiArICAgICAgICBzaXplb2YgTWFp bkZvcm1TdGF0ZS0+Q3VycmVudFByZWZlcnJlZFJlc29sdXRpb24sDQo+ICsgICAgICAgICIlTGR4 JUxkIiwNCj4gKyAgICAgICAgKElOVDY0KSBQbGF0Zm9ybUNvbmZpZy5Ib3Jpem9udGFsUmVzb2x1 dGlvbiwNCj4gKyAgICAgICAgKElOVDY0KSBQbGF0Zm9ybUNvbmZpZy5WZXJ0aWNhbFJlc29sdXRp b24pOw0KPiArDQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gVHJ5IHRvIGxvY2F0ZSBpdCBpbiB0 aGUgZHJvcC1kb3duIGxpc3QgdG9vLiBUaGlzIG1heSBub3Qgc3VjY2VlZCwgYnV0DQo+ICsgICAg ICAvLyB0aGF0J3MgZmluZS4NCj4gKyAgICAgIC8vDQo+ICsgICAgICBmb3IgKE1vZGVOdW1iZXIg PSAwOyBNb2RlTnVtYmVyIDwgbU51bUdvcE1vZGVzOw0KPiArK01vZGVOdW1iZXIpIHsNCj4gKyAg ICAgICAgaWYgKG1Hb3BNb2Rlc1tNb2RlTnVtYmVyXS5YID09IFBsYXRmb3JtQ29uZmlnLkhvcml6 b250YWxSZXNvbHV0aW9uDQo+ICYmDQo+ICsgICAgICAgICAgICBtR29wTW9kZXNbTW9kZU51bWJl cl0uWSA9PSBQbGF0Zm9ybUNvbmZpZy5WZXJ0aWNhbFJlc29sdXRpb24pIHsNCj4gKyAgICAgICAg ICBNYWluRm9ybVN0YXRlLT5OZXh0UHJlZmVycmVkUmVzb2x1dGlvbiA9IChVSU5UMzIpIE1vZGVO dW1iZXI7DQo+ICsgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgIH0NCj4g Kw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAgIC8vDQo+ICsgICAgLy8gZmFsbCB0 aHJvdWdoIG90aGVyd2lzZQ0KPiArICAgIC8vDQo+ICsNCj4gKyAgY2FzZSBFRklfTk9UX0ZPVU5E Og0KPiArICAgIFVuaWNvZGVTUHJpbnRBc2NpaUZvcm1hdCAoDQo+ICsgICAgICAoQ0hBUjE2ICop IE1haW5Gb3JtU3RhdGUtPkN1cnJlbnRQcmVmZXJyZWRSZXNvbHV0aW9uLA0KPiArICAgICAgc2l6 ZW9mIE1haW5Gb3JtU3RhdGUtPkN1cnJlbnRQcmVmZXJyZWRSZXNvbHV0aW9uLA0KPiArICAgICAg IlVuc2V0Iik7DQo+ICsgICAgYnJlYWs7DQo+ICsNCj4gKyAgZGVmYXVsdDoNCj4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0K PiArDQo+ICsNCj4gKy8qKg0KPiArICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgSElJ IG1hY2hpbmVyeSB3aGVuIGl0IGZldGNoZXMgdGhlIGZvcm0gc3RhdGUuDQo+ICsNCj4gKyAgU2Vl IHRoZSBwcmVjaXNlIGRvY3VtZW50YXRpb24gaW4gdGhlIFVFRkkgc3BlYy4NCj4gKw0KPiArICBA cGFyYW1baW5dICBUaGlzICAgICAgVGhlIENvbmZpZyBBY2Nlc3MgUHJvdG9jb2wgaW5zdGFuY2Uu DQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgUmVxdWVzdCAgIEEgPENvbmZpZ1JlcXVlc3Q+IGZvcm1h dCBVQ1MtMiBzdHJpbmcgZGVzY3JpYmluZyB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHF1ZXJ5Lg0KPiArDQo+ICsgIEBwYXJhbVtvdXRdIFByb2dyZXNzICBBIHBvaW50ZXIgaW50byBS ZXF1ZXN0IG9uIG91dHB1dCwgaWRlbnRpZnlpbmcgdGhlDQo+IHF1ZXJ5DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBlbGVtZW50IHdoZXJlIHByb2Nlc3NpbmcgZmFpbGVkLg0KPiArDQo+ICsg IEBwYXJhbVtvdXRdIFJlc3VsdHMgICBBIDxNdWx0aUNvbmZpZ0FsdFJlc3A+IGZvcm1hdCBVQ1Mt MiBzdHJpbmcgdGhhdCBoYXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbCB2YWx1ZXMg ZmlsbGVkIGluIGZvciB0aGUgbmFtZXMgaW4gdGhlIFJlcXVlc3QNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmluZy4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICBFeHRyYWN0 aW9uIG9mIGZvcm0gc3RhdGUgaW4gPE11bHRpQ29uZmlnQWx0UmVzcD4NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZW5jb2Rpbmcgc3VjY2Vzc2Z1bC4NCj4gKyAgQHJldHVybiAgICAgICAgICAg ICAgU3RhdHVzIGNvZGVzIGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMuDQo+ICsNCj4gKyoqLw0K PiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0V4dHJhY3RDb25maWcgKA0K PiArICBJTiBDT05TVCAgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAqVGhpcywNCj4g KyAgSU4gQ09OU1QgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICAgICAgUmVxdWVzdCwNCj4g KyAgT1VUICAgICAgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICAgICAgKlByb2dyZXNzLA0K PiArICBPVVQgICAgICAgRUZJX1NUUklORyAgICAgICAgICAgICAgICAgICAgICAqUmVzdWx0cw0K PiArKQ0KPiArew0KPiArICBNQUlOX0ZPUk1fU1RBVEUgTWFpbkZvcm1TdGF0ZTsNCj4gKyAgRUZJ X1NUQVRVUyAgICAgIFN0YXR1czsNCj4gKw0KPiArICBERUJVRyAoKEVGSV9EX1ZFUkJPU0UsICIl YTogUmVxdWVzdD1cIiVzXCJcbiIsIF9fRlVOQ1RJT05fXywNCj4gUmVxdWVzdCkpOw0KPiArDQo+ ICsgIFN0YXR1cyA9IFBsYXRmb3JtQ29uZmlnVG9Gb3JtU3RhdGUgKCZNYWluRm9ybVN0YXRlKTsN Cj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICpQcm9ncmVzcyA9IFJlcXVl c3Q7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8v IEFuc3dlciB0aGUgdGV4dHVhbCByZXF1ZXN0IGtleWluZyBvZmYgdGhlIGJpbmFyeSBmb3JtIHN0 YXRlLg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBnSGlpQ29uZmlnUm91dGluZy0+QmxvY2tUb0Nv bmZpZyAoZ0hpaUNvbmZpZ1JvdXRpbmcsIFJlcXVlc3QsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChWT0lEICopICZNYWluRm9ybVN0YXRlLCBzaXplb2YgTWFpbkZvcm1TdGF0 ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0cywgUHJvZ3Jlc3Mp Ow0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKChFRklfRF9F UlJPUiwgIiVhOiBCbG9ja1RvQ29uZmlnKCk6ICVyLCBQcm9ncmVzcz1cIiVzXCJcbiIsDQo+ICsg ICAgICBfX0ZVTkNUSU9OX18sIFN0YXR1cywgKFN0YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSA/ IE5VTEwgOg0KPiAqUHJvZ3Jlc3MpKTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBERUJVRyAoKEVG SV9EX1ZFUkJPU0UsICIlYTogUmVzdWx0cz1cIiVzXCJcbiIsIF9fRlVOQ1RJT05fXywNCj4gKlJl c3VsdHMpKTsNCj4gKyAgfQ0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsNCj4g Ky8qKg0KPiArICBJbnRlcnByZXQgdGhlIGJpbmFyeSBmb3JtIHN0YXRlIGFuZCBzYXZlIGl0IGFz IHBlcnNpc3RlbnQgcGxhdGZvcm0NCj4gKyAgY29uZmlndXJhdGlvbi4NCj4gKw0KPiArICBAcGFy YW1baW5dIE1haW5Gb3JtU3RhdGUgIEJpbmFyeSBmb3JtL3dpZGdldCBzdGF0ZSB0byB2ZXJpZnkg YW5kIHNhdmUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgUGxhdGZvcm0gY29uZmln dXJhdGlvbiBzYXZlZC4NCj4gKyAgQHJldHVybiAgICAgICAgICAgICAgRXJyb3IgY29kZXMgZnJv bSB1bmRlcmx5aW5nIGZ1bmN0aW9ucy4NCj4gKyoqLw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVT DQo+ICtFRklBUEkNCj4gK0Zvcm1TdGF0ZVRvUGxhdGZvcm1Db25maWcgKA0KPiArICBJTiBDT05T VCBNQUlOX0ZPUk1fU1RBVEUgKk1haW5Gb3JtU3RhdGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklf U1RBVFVTICAgICAgU3RhdHVzOw0KPiArICBQTEFURk9STV9DT05GSUcgUGxhdGZvcm1Db25maWc7 DQo+ICsgIENPTlNUIEdPUF9NT0RFICAqR29wTW9kZTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBU aGVyZSdzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgdGV4dHVhbCBDdXJyZW50UHJlZmVycmVkUmVz b2x1dGlvbiBmaWVsZC4NCj4gKyAgLy8gV2UgdmVyaWZ5IGFuZCB0cmFuc2xhdGUgdGhlIHNlbGVj dGlvbiBpbiB0aGUgZHJvcC1kb3duIGxpc3QuDQo+ICsgIC8vDQo+ICsgIGlmIChNYWluRm9ybVN0 YXRlLT5OZXh0UHJlZmVycmVkUmVzb2x1dGlvbiA+PSBtTnVtR29wTW9kZXMpIHsNCj4gKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsgIEdvcE1vZGUgPSBtR29w TW9kZXMgKyBNYWluRm9ybVN0YXRlLT5OZXh0UHJlZmVycmVkUmVzb2x1dGlvbjsNCj4gKw0KPiAr ICBaZXJvTWVtICgmUGxhdGZvcm1Db25maWcsIHNpemVvZiBQbGF0Zm9ybUNvbmZpZyk7DQo+ICsg IFBsYXRmb3JtQ29uZmlnLkhvcml6b250YWxSZXNvbHV0aW9uID0gR29wTW9kZS0+WDsNCj4gKyAg UGxhdGZvcm1Db25maWcuVmVydGljYWxSZXNvbHV0aW9uICAgPSBHb3BNb2RlLT5ZOw0KPiArDQo+ ICsgIFN0YXR1cyA9IFBsYXRmb3JtQ29uZmlnU2F2ZSAoJlBsYXRmb3JtQ29uZmlnKTsNCj4gKyAg cmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgVGhpcyBmdW5jdGlv biBpcyBjYWxsZWQgYnkgdGhlIEhJSSBtYWNoaW5lcnkgd2hlbiBpdCB3YW50cyB0aGUgZHJpdmVy IHRvDQo+ICsgIGludGVycHJldCBhbmQgcGVyc2lzdCB0aGUgZm9ybSBzdGF0ZS4NCj4gKw0KPiAr ICBTZWUgdGhlIHByZWNpc2UgZG9jdW1lbnRhdGlvbiBpbiB0aGUgVUVGSSBzcGVjLg0KPiArDQo+ ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgIFRoZSBDb25maWcgQWNjZXNzIFByb3RvY29s IGluc3RhbmNlLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIENvbmZpZ3VyYXRpb24gIEEgPENvbmZp Z1Jlc3A+IGZvcm1hdCBVQ1MtMiBzdHJpbmcgZGVzY3JpYmluZw0KPiB0aGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZm9ybSBzdGF0ZS4NCj4gKw0KPiArICBAcGFyYW1bb3V0XSBQ cm9ncmVzcyAgICAgICBBIHBvaW50ZXIgaW50byBDb25maWd1cmF0aW9uIG9uIG91dHB1dCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZnlpbmcgdGhlIGVsZW1lbnQgd2hl cmUgcHJvY2Vzc2luZyBmYWlsZWQuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgQ29u ZmlndXJhdGlvbiB2ZXJpZmllZCwgc3RhdGUgcGVybWFuZW50Lg0KPiArDQo+ICsgIEByZXR1cm4g ICAgICAgICAgICAgIFN0YXR1cyBjb2RlcyBmcm9tIHVuZGVybHlpbmcgZnVuY3Rpb25zLg0KPiAr KiovDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArUm91dGVDb25maWcg KA0KPiArICBJTiBDT05TVCAgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAqVGhpcywN Cj4gKyAgSU4gQ09OU1QgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJh dGlvbiwNCj4gKyAgT1VUICAgICAgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICAgICAgKlBy b2dyZXNzDQo+ICspDQo+ICt7DQo+ICsgIE1BSU5fRk9STV9TVEFURSBNYWluRm9ybVN0YXRlOw0K PiArICBVSU5UTiAgICAgICAgICAgQmxvY2tTaXplOw0KPiArICBFRklfU1RBVFVTICAgICAgU3Rh dHVzOw0KPiArDQo+ICsgIERFQlVHICgoRUZJX0RfVkVSQk9TRSwgIiVhOiBDb25maWd1cmF0aW9u PVwiJXNcIlxuIiwgX19GVU5DVElPTl9fLA0KPiArICAgIENvbmZpZ3VyYXRpb24pKTsNCj4gKw0K PiArICAvLw0KPiArICAvLyB0aGUgInJlYWQiIHN0ZXAgaW4gUk1XDQo+ICsgIC8vDQo+ICsgIFN0 YXR1cyA9IFBsYXRmb3JtQ29uZmlnVG9Gb3JtU3RhdGUgKCZNYWluRm9ybVN0YXRlKTsNCj4gKyAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICpQcm9ncmVzcyA9IENvbmZpZ3VyYXRp b247DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8v IHRoZSAibW9kaWZ5IiBzdGVwIGluIFJNVw0KPiArICAvLw0KPiArICAvLyAoVXBkYXRlIHRoZSBi aW5hcnkgZm9ybSBzdGF0ZS4gVGhpcyB1cGRhdGUgbWF5IGJlIHBhcnRpYWwsIHdoaWNoIGlzIHdo eSBpbg0KPiArICAvLyBnZW5lcmFsIHdlIG11c3QgcHJlLWxvYWQgdGhlIGZvcm0gc3RhdGUgZnJv bSB0aGUgcGxhdGZvcm0gY29uZmlnLikNCj4gKyAgLy8NCj4gKyAgQmxvY2tTaXplID0gc2l6ZW9m IE1haW5Gb3JtU3RhdGU7DQo+ICsgIFN0YXR1cyA9IGdIaWlDb25maWdSb3V0aW5nLT5Db25maWdU b0Jsb2NrIChnSGlpQ29uZmlnUm91dGluZywgQ29uZmlndXJhdGlvbiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKikgJk1haW5Gb3JtU3RhdGUsICZCbG9ja1NpemUs IFByb2dyZXNzKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVH ICgoRUZJX0RfRVJST1IsICIlYTogQ29uZmlnVG9CbG9jaygpOiAlciwgUHJvZ3Jlc3M9XCIlc1wi XG4iLA0KPiArICAgICAgX19GVU5DVElPTl9fLCBTdGF0dXMsDQo+ICsgICAgICAoU3RhdHVzID09 IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSA/IE5VTEwgOiAqUHJvZ3Jlc3MpKTsNCj4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gdGhlICJ3cml0ZSIgc3Rl cCBpbiBSTVcNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gRm9ybVN0YXRlVG9QbGF0Zm9ybUNvbmZp ZyAoJk1haW5Gb3JtU3RhdGUpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsg ICAgKlByb2dyZXNzID0gQ29uZmlndXJhdGlvbjsNCj4gKyAgfQ0KPiArICByZXR1cm4gU3RhdHVz Ow0KPiArfQ0KPiArDQo+ICsNCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ ICtDYWxsYmFjayAoDQo+ICsgIElOICAgICBDT05TVCBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJP VE9DT0wgICAqVGhpcywNCj4gKyAgSU4gICAgIEVGSV9CUk9XU0VSX0FDVElPTiAgICAgICAgICAg ICAgICAgICAgIEFjdGlvbiwNCj4gKyAgSU4gICAgIEVGSV9RVUVTVElPTl9JRCAgICAgICAgICAg ICAgICAgICAgICAgIFF1ZXN0aW9uSWQsDQo+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUeXBlLA0KPiArICBJTiBPVVQgRUZJX0lGUl9UWVBFX1ZBTFVF ICAgICAgICAgICAgICAgICAgICAgKlZhbHVlLA0KPiArICBPVVQgICAgRUZJX0JST1dTRVJfQUNU SU9OX1JFUVVFU1QgICAgICAgICAgICAgKkFjdGlvblJlcXVlc3QNCj4gKyAgKQ0KPiArew0KPiAr ICBERUJVRyAoKEVGSV9EX1ZFUkJPU0UsICIlYTogQWN0aW9uPTB4JUx4IFF1ZXN0aW9uSWQ9JWQg VHlwZT0lZFxuIiwNCj4gKyAgICBfX0ZVTkNUSU9OX18sIChVSU5UNjQpIEFjdGlvbiwgUXVlc3Rp b25JZCwgVHlwZSkpOw0KPiArDQo+ICsgIGlmIChBY3Rpb24gIT0gRUZJX0JST1dTRVJfQUNUSU9O X0NIQU5HRUQpIHsNCj4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiArICB9DQo+ICsN Cj4gKyAgc3dpdGNoIChRdWVzdGlvbklkKSB7DQo+ICsgIGNhc2UgUVVFU1RJT05fU0FWRV9FWElU Og0KPiArICAgICpBY3Rpb25SZXF1ZXN0ID0gRUZJX0JST1dTRVJfQUNUSU9OX1JFUVVFU1RfRk9S TV9TVUJNSVRfRVhJVDsNCj4gKyAgICBicmVhazsNCj4gKw0KPiArICBjYXNlIFFVRVNUSU9OX0RJ U0NBUkRfRVhJVDoNCj4gKyAgICAqQWN0aW9uUmVxdWVzdCA9IEVGSV9CUk9XU0VSX0FDVElPTl9S RVFVRVNUX0ZPUk1fRElTQ0FSRF9FWElUOw0KPiArICAgIGJyZWFrOw0KPiArDQo+ICsgIGRlZmF1 bHQ6DQo+ICsgICAgYnJlYWs7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFF1ZXJ5IGFuZCBzYXZlIGFsbCByZXNvbHV0 aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIEdPUC4NCj4gKw0KPiArICBAcGFyYW1baW5dICBHb3AgICAg ICAgICAgVGhlIEdyYXBoaWNzIE91dHB1dCBQcm90b2NvbCBpbnN0YW5jZSB0byBxdWVyeS4NCj4g Kw0KPiArICBAcGFyYW1bb3V0XSBOdW1Hb3BNb2RlcyAgVGhlIG51bWJlciBvZiBtb2RlcyBzdXBw b3J0ZWQgYnkgdGhlIEdPUC4NCj4gT24gb3V0cHV0LA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhpcyBwYXJhbWV0ZXIgd2lsbCBiZSBwb3NpdGl2ZS4NCj4gKw0KPiArICBAcGFyYW1b b3V0XSBHb3BNb2RlcyAgICAgT24gb3V0cHV0LCBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJh eQ0KPiBjb250YWluaW5nDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVzb2x1 dGlvbnMgcmV0dXJuZWQgYnkgdGhlIEdPUC4gVGhlIGNhbGxlciBpcw0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIGFycmF5IGFmdGVyIHVz ZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBObyBtb2RlcyBmb3Vu ZC4NCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgRmFpbGVkIHRvIGFsbG9jYXRl IEdvcE1vZGVzLg0KPiArICBAcmV0dXJuICAgICAgICAgICAgICAgICAgICAgICBFcnJvciBjb2Rl cyBmcm9tIEdvcC0+UXVlcnlNb2RlKCkuDQo+ICsNCj4gKyoqLw0KPiArU1RBVElDDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK1F1ZXJ5R29wTW9kZXMgKA0KPiArICBJTiAgRUZJX0dSQVBI SUNTX09VVFBVVF9QUk9UT0NPTCAqR29wLA0KPiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAqTnVtR29wTW9kZXMsDQo+ICsgIE9VVCBHT1BfTU9ERSAgICAgICAgICAgICAgICAg ICAgICoqR29wTW9kZXMNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4g KyAgVUlOVDMyICAgICBNb2RlTnVtYmVyOw0KPiArDQo+ICsgIGlmIChHb3AtPk1vZGUtPk1heE1v ZGUgPT0gMCkgew0KPiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ICsgIH0NCj4gKyAg Kk51bUdvcE1vZGVzID0gR29wLT5Nb2RlLT5NYXhNb2RlOw0KPiArDQo+ICsgICpHb3BNb2RlcyA9 IEFsbG9jYXRlUG9vbCAoR29wLT5Nb2RlLT5NYXhNb2RlICogc2l6ZW9mICoqR29wTW9kZXMpOw0K PiArICBpZiAoKkdvcE1vZGVzID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9S RVNPVVJDRVM7DQo+ICsgIH0NCj4gKw0KPiArICBmb3IgKE1vZGVOdW1iZXIgPSAwOyBNb2RlTnVt YmVyIDwgR29wLT5Nb2RlLT5NYXhNb2RlOw0KPiArK01vZGVOdW1iZXIpIHsNCj4gKyAgICBFRklf R1JBUEhJQ1NfT1VUUFVUX01PREVfSU5GT1JNQVRJT04gKkluZm87DQo+ICsgICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemVPZkluZm87DQo+ICsNCj4gKyAgICBTdGF0 dXMgPSBHb3AtPlF1ZXJ5TW9kZSAoR29wLCBNb2RlTnVtYmVyLCAmU2l6ZU9mSW5mbywgJkluZm8p Ow0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIGdvdG8gRnJlZUdv cE1vZGVzOw0KPiArICAgIH0NCj4gKw0KPiArICAgICgqR29wTW9kZXMpW01vZGVOdW1iZXJdLlgg PSBJbmZvLT5Ib3Jpem9udGFsUmVzb2x1dGlvbjsNCj4gKyAgICAoKkdvcE1vZGVzKVtNb2RlTnVt YmVyXS5ZID0gSW5mby0+VmVydGljYWxSZXNvbHV0aW9uOw0KPiArICAgIEZyZWVQb29sIChJbmZv KTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKw0KPiArRnJlZUdv cE1vZGVzOg0KPiArICBGcmVlUG9vbCAoKkdvcE1vZGVzKTsNCj4gKw0KPiArICByZXR1cm4gU3Rh dHVzOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBDcmVhdGUgYSBzZXQgb2YgIm9uZS1v Zi1tYW55IiAoaWUuICJkcm9wIGRvd24gbGlzdCIpIG9wdGlvbiBJRlIgb3Bjb2RlcywNCj4gKyAg YmFzZWQgb24gYXZhaWxhYmxlIEdPUCByZXNvbHV0aW9ucywgdG8gYmUgcGxhY2VkIHVuZGVyIGEg Im9uZS1vZi1tYW55IiAoaWUuDQo+ICsgICJkcm9wIGRvd24gbGlzdCIpIG9wY29kZS4NCj4gKw0K PiArICBAcGFyYW1baW5dICBQYWNrYWdlTGlzdCAgIFRoZSBwYWNrYWdlIGxpc3Qgd2l0aCB0aGUg Zm9ybXNldCBhbmQgZm9ybSBmb3INCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlj aCB0aGUgZHJvcCBkb3duIG9wdGlvbnMgYXJlIHByb2R1Y2VkLiBPcHRpb24NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lcyBhcmUgYWRkZWQgYXMgbmV3IHN0cmluZ3MgdG8gUGFj a2FnZUxpc3QuDQo+ICsNCj4gKyAgQHBhcmFtW291dF0gT3BDb2RlQnVmZmVyICBPbiBvdXRwdXQs IGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIG9wY29kZQ0KPiBidWZmZXINCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3aXRoIGRyb3AgZG93biBsaXN0IG9wdGlvbnMgY29ycmVzcG9uZGlu ZyB0byBHT1ANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHV0aW9ucy4gVGhl IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZw0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9wQ29kZUJ1ZmZlciB3aXRoIEhpaUZyZWVPcENvZGVIYW5kbGUoKSBhZnRlciB1 c2UuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgTnVtR29wTW9kZXMgICBOdW1iZXIgb2YgZW50cmll cyBpbiBHb3BNb2Rlcy4NCj4gKw0KPiArICBAcGFyYW1baW5dICBHb3BNb2RlcyAgICAgIEFycmF5 IG9mIHJlc29sdXRpb25zIHJldHJpZXZlZCBmcm9tIHRoZSBHT1AuDQo+ICsNCj4gKyAgQHJldHZh bCBFRklfU1VDRVNTICBPcGNvZGVzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcHJvZHVjZWQuDQo+ ICsNCj4gKyAgQHJldHVybiAgICAgICAgICAgICBTdGF0dXMgY29kZXMgZnJvbSB1bmRlcmx5aW5n IGZ1bmN0aW9ucy4gUGFja2FnZUxpc3QgbWF5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgaGF2 ZSBiZWVuIGV4dGVuZGVkIHdpdGggbmV3IHN0cmluZ3MuIE9wQ29kZUJ1ZmZlciBpcw0KPiArICAg ICAgICAgICAgICAgICAgICAgIHVuY2hhbmdlZC4NCj4gKyoqLw0KPiArU1RBVElDDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0NyZWF0ZVJlc29sdXRpb25PcHRpb25zICgNCj4gKyAgSU4g IEVGSV9ISUlfSEFORExFICAqUGFja2FnZUxpc3QsDQo+ICsgIE9VVCBWT0lEICAgICAgICAgICAg KipPcENvZGVCdWZmZXIsDQo+ICsgIElOICBVSU5UTiAgICAgICAgICAgTnVtR29wTW9kZXMsDQo+ ICsgIElOICBHT1BfTU9ERSAgICAgICAgKkdvcE1vZGVzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJ X1NUQVRVUyBTdGF0dXM7DQo+ICsgIFZPSUQgICAgICAgKk91dHB1dEJ1ZmZlcjsNCj4gKyAgVUlO VE4gICAgICBNb2RlTnVtYmVyOw0KPiArDQo+ICsgIE91dHB1dEJ1ZmZlciA9IEhpaUFsbG9jYXRl T3BDb2RlSGFuZGxlICgpOw0KPiArICBpZiAoT3V0cHV0QnVmZmVyID09IE5VTEwpIHsNCj4gKyAg ICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgIH0NCj4gKw0KPiArICBmb3IgKE1v ZGVOdW1iZXIgPSAwOyBNb2RlTnVtYmVyIDwgTnVtR29wTW9kZXM7ICsrTW9kZU51bWJlcikgew0K PiArICAgIENIQVIxNiAgICAgICAgRGVzY1tNQVhTSVpFX1JFU19DVVJdOw0KPiArICAgIEVGSV9T VFJJTkdfSUQgTmV3U3RyaW5nOw0KPiArICAgIFZPSUQgICAgICAgICAgKk9wQ29kZTsNCj4gKw0K PiArICAgIFVuaWNvZGVTUHJpbnRBc2NpaUZvcm1hdCAoRGVzYywgc2l6ZW9mIERlc2MsICIlTGR4 JUxkIiwNCj4gKyAgICAgIChJTlQ2NCkgR29wTW9kZXNbTW9kZU51bWJlcl0uWCwgKElOVDY0KQ0K PiBHb3BNb2Rlc1tNb2RlTnVtYmVyXS5ZKTsNCj4gKyAgICBOZXdTdHJpbmcgPSBIaWlTZXRTdHJp bmcgKFBhY2thZ2VMaXN0LCAwIC8qIG5ldyBzdHJpbmcgKi8sIERlc2MsDQo+ICsgICAgICAgICAg ICAgICAgICBOVUxMIC8qIGZvciBhbGwgbGFuZ3VhZ2VzICovKTsNCj4gKyAgICBpZiAoTmV3U3Ry aW5nID09IDApIHsNCj4gKyAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiAr ICAgICAgZ290byBGcmVlT3V0cHV0QnVmZmVyOw0KPiArICAgIH0NCj4gKyAgICBPcENvZGUgPSBI aWlDcmVhdGVPbmVPZk9wdGlvbk9wQ29kZSAoT3V0cHV0QnVmZmVyLCBOZXdTdHJpbmcsDQo+ICsg ICAgICAgICAgICAgICAwIC8qIEZsYWdzICovLCBFRklfSUZSX05VTUVSSUNfU0laRV80LCBNb2Rl TnVtYmVyKTsNCj4gKyAgICBpZiAoT3BDb2RlID09IE5VTEwpIHsNCj4gKyAgICAgIFN0YXR1cyA9 IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICAgICAgZ290byBGcmVlT3V0cHV0QnVmZmVyOw0K PiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgICpPcENvZGVCdWZmZXIgPSBPdXRwdXRCdWZmZXI7 DQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKw0KPiArRnJlZU91dHB1dEJ1ZmZlcjoNCj4g KyAgSGlpRnJlZU9wQ29kZUhhbmRsZSAoT3V0cHV0QnVmZmVyKTsNCj4gKw0KPiArICByZXR1cm4g U3RhdHVzOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBQb3B1bGF0ZSB0aGUgZm9ybSBp ZGVudGlmaWVkIGJ5IHRoZSAoUGFja2FnZUxpc3QsIEZvcm1TZXRHdWlkLCBGb3JtSWQpDQo+ICsg IHRyaXBsZXQuDQo+ICsNCj4gKyAgVGhlIGRyb3AgZG93biBsaXN0IG9mIHZpZGVvIHJlc29sdXRp b25zIGlzIGdlbmVyYXRlZCBmcm9tIChOdW1Hb3BNb2RlcywNCj4gKyAgR29wTW9kZXMpLg0KPiAr DQo+ICsgIEByZXR2YWwgRUZJX1NVQ0VTUyAgRm9ybSBzdWNjZXNzZnVsbHkgdXBkYXRlZC4NCj4g KyAgQHJldHVybiAgICAgICAgICAgICBTdGF0dXMgY29kZXMgZnJvbSB1bmRlcmx5aW5nIGZ1bmN0 aW9ucy4NCj4gKw0KPiArKiovDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0K PiArUG9wdWxhdGVGb3JtICgNCj4gKyAgSU4gIEVGSV9ISUlfSEFORExFICAqUGFja2FnZUxpc3Qs DQo+ICsgIElOICBFRklfR1VJRCAgICAgICAgKkZvcm1TZXRHdWlkLA0KPiArICBJTiAgRUZJX0ZP Uk1fSUQgICAgIEZvcm1JZCwNCj4gKyAgSU4gIFVJTlROICAgICAgICAgICBOdW1Hb3BNb2RlcywN Cj4gKyAgSU4gIEdPUF9NT0RFICAgICAgICAqR29wTW9kZXMNCj4gKyAgKQ0KPiArew0KPiArICBF RklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiArICBWT0lEICAgICAgICAgICAgICAgKk9wQ29k ZUJ1ZmZlcjsNCj4gKyAgVk9JRCAgICAgICAgICAgICAgICpPcENvZGU7DQo+ICsgIEVGSV9JRlJf R1VJRF9MQUJFTCAqQW5jaG9yOw0KPiArICBWT0lEICAgICAgICAgICAgICAgKk9wQ29kZUJ1ZmZl cjI7DQo+ICsNCj4gKyAgT3BDb2RlQnVmZmVyMiA9IE5VTEw7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gMS4gQWxsb2NhdGUgYW4gZW1wdHkgb3Bjb2RlIGJ1ZmZlci4NCj4gKyAgLy8NCj4gKyAgT3BD b2RlQnVmZmVyID0gSGlpQWxsb2NhdGVPcENvZGVIYW5kbGUgKCk7DQo+ICsgIGlmIChPcENvZGVC dWZmZXIgPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4g KyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIDIuIENyZWF0ZSBhIGxhYmVsIG9wY29kZSAod2hp Y2ggaXMgYSBUaWFubyBleHRlbnNpb24pIGluc2lkZSB0aGUgYnVmZmVyLg0KPiArICAvLyBUaGUg bGFiZWwncyBudW1iZXIgbXVzdCBtYXRjaCB0aGUgImFuY2hvciIgbGFiZWwgaW4gdGhlIGZvcm0u DQo+ICsgIC8vDQo+ICsgIE9wQ29kZSA9IEhpaUNyZWF0ZUd1aWRPcENvZGUgKE9wQ29kZUJ1ZmZl ciwgJmdFZmlJZnJUaWFub0d1aWQsDQo+ICsgICAgICAgICAgICAgTlVMTCAvKiBvcHRpb25hbCBj b3B5IG9yaWdpbiAqLywgc2l6ZW9mICpBbmNob3IpOw0KPiArICBpZiAoT3BDb2RlID09IE5VTEwp IHsNCj4gKyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gKyAgICBnb3RvIEZy ZWVPcENvZGVCdWZmZXI7DQo+ICsgIH0NCj4gKyAgQW5jaG9yICAgICAgICAgICAgICAgPSBPcENv ZGU7DQo+ICsgIEFuY2hvci0+RXh0ZW5kT3BDb2RlID0gRUZJX0lGUl9FWFRFTkRfT1BfTEFCRUw7 DQo+ICsgIEFuY2hvci0+TnVtYmVyICAgICAgID0gTEFCRUxfUkVTX05FWFQ7DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gMy4gQ3JlYXRlIHRoZSBvcGNvZGVzIGluc2lkZSB0aGUgYnVmZmVyIHRoYXQg YXJlIHRvIGJlIGluc2VydGVkIGludG8gdGhlDQo+ICsgIC8vIGZvcm0uDQo+ICsgIC8vDQo+ICsg IC8vIDMuMS4gR2V0IGEgbGlzdCBvZiByZXNvbHV0aW9ucy4NCj4gKyAgLy8NCj4gKyAgU3RhdHVz ID0gQ3JlYXRlUmVzb2x1dGlvbk9wdGlvbnMgKFBhY2thZ2VMaXN0LCAmT3BDb2RlQnVmZmVyMiwN Cj4gKyAgICAgICAgICAgICBOdW1Hb3BNb2RlcywgR29wTW9kZXMpOw0KPiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ICsgICAgZ290byBGcmVlT3BDb2RlQnVmZmVyOw0KPiArICB9DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gMy4yLiBDcmVhdGUgYSBvbmUtb2YtbWFueSBxdWVzdGlvbiB3 aXRoIHRoZSBhYm92ZSBvcHRpb25zLg0KPiArICAvLw0KPiArICBPcENvZGUgPSBIaWlDcmVhdGVP bmVPZk9wQ29kZSAoDQo+ICsgICAgICAgICAgICAgT3BDb2RlQnVmZmVyLCAgICAgICAgICAgICAg ICAgICAgICAgIC8vIGNyZWF0ZSBvcGNvZGUgaW5zaWRlIHRoaXMNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBvcGNvZGUgYnVmZmVyLA0K PiArICAgICAgICAgICAgIFFVRVNUSU9OX1JFU19ORVhULCAgICAgICAgICAgICAgICAgICAvLyBJ RCBvZiBxdWVzdGlvbiwNCj4gKyAgICAgICAgICAgICBGT1JNU1RBVEVJRF9NQUlOX0ZPUk0sICAg ICAgICAgICAgICAgLy8gaWRlbnRpZmllcyBmb3JtIHN0YXRlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgc3RvcmFnZSwNCj4gKyAgICAg ICAgICAgICAoVUlOVDE2KSBPRkZTRVRfT0YgKE1BSU5fRk9STV9TVEFURSwgLy8gdmFsdWUgb2Yg cXVlc3Rpb24gc3RvcmVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBOZXh0UHJlZmVycmVk UmVzb2x1dGlvbiksIC8vICAgYXQgdGhpcyBvZmZzZXQsDQo+ICsgICAgICAgICAgICAgU1RSSU5H X1RPS0VOIChTVFJfUkVTX05FWFQpLCAgICAgICAgIC8vIFByb21wdCwNCj4gKyAgICAgICAgICAg ICBTVFJJTkdfVE9LRU4gKFNUUl9SRVNfTkVYVF9IRUxQKSwgICAgLy8gSGVscCwNCj4gKyAgICAg ICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUXVlc3Rpb25G bGFncywNCj4gKyAgICAgICAgICAgICBFRklfSUZSX05VTUVSSUNfU0laRV80LCAgICAgICAgICAg ICAgLy8gc2VlIHNpemVvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyAgIE5leHRQcmVmZXJyZWRSZXNvbHV0aW9uLA0KPiArICAgICAgICAg ICAgIE9wQ29kZUJ1ZmZlcjIsICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgd2l0aCBw b3NzaWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyAgIGNob2ljZXMsDQo+ICsgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIERFRkFVTFQgb3Bjb2Rlcw0KPiArICAgICAgICAgICAgICk7DQo+ ICsgIGlmIChPcENvZGUgPT0gTlVMTCkgew0KPiArICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVT T1VSQ0VTOw0KPiArICAgIGdvdG8gRnJlZU9wQ29kZUJ1ZmZlcjI7DQo+ICsgIH0NCj4gKw0KPiAr ICAvLw0KPiArICAvLyA0LiBVcGRhdGUgdGhlIGZvcm0gd2l0aCB0aGUgb3Bjb2RlIGJ1ZmZlci4N Cj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gSGlpVXBkYXRlRm9ybSAoUGFja2FnZUxpc3QsIEZvcm1T ZXRHdWlkLCBGb3JtSWQsDQo+ICsgICAgICAgICAgICAgT3BDb2RlQnVmZmVyLCAvLyBidWZmZXIg d2l0aCBoZWFkIGFuY2hvciwgYW5kIG5ldyBjb250ZW50cyB0byBiZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gaW5zZXJ0ZWQgYXQgaXQNCj4gKyAgICAgICAgICAgICBOVUxMICAg ICAgICAgIC8vIGJ1ZmZlciB3aXRoIHRhaWwgYW5jaG9yLCBmb3IgZGVsZXRpbmcgb2xkDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZW50cyB1cCB0byBpdA0KPiArICAgICAg ICAgICAgICk7DQo+ICsNCj4gK0ZyZWVPcENvZGVCdWZmZXIyOg0KPiArICBIaWlGcmVlT3BDb2Rl SGFuZGxlIChPcENvZGVCdWZmZXIyKTsNCj4gKw0KPiArRnJlZU9wQ29kZUJ1ZmZlcjoNCj4gKyAg SGlpRnJlZU9wQ29kZUhhbmRsZSAoT3BDb2RlQnVmZmVyKTsNCj4gKw0KPiArICByZXR1cm4gU3Rh dHVzOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBMb2FkIGFuZCBleGVjdXRlIHRoZSBw bGF0Zm9ybSBjb25maWd1cmF0aW9uLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgICBDb25maWd1cmF0aW9uIGxvYWRlZCBhbmQgZXhlY3V0ZWQuDQo+ICsgIEByZXR1cm4g ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMgY29kZXMgZnJvbSBQbGF0Zm9ybUNvbmZpZ0xv YWQoKS4NCj4gKyoqLw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0V4 ZWN1dGVQbGF0Zm9ybUNvbmZpZyAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBFRklf U1RBVFVTICAgICAgU3RhdHVzOw0KPiArICBQTEFURk9STV9DT05GSUcgUGxhdGZvcm1Db25maWc7 DQo+ICsgIFVJTlQ2NCAgICAgICAgICBPcHRpb25hbEVsZW1lbnRzOw0KPiArDQo+ICsgIFN0YXR1 cyA9IFBsYXRmb3JtQ29uZmlnTG9hZCAoJlBsYXRmb3JtQ29uZmlnLCAmT3B0aW9uYWxFbGVtZW50 cyk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKChTdGF0 dXMgPT0gRUZJX05PVF9GT1VORCkgPyBFRklfRF9WRVJCT1NFIDogRUZJX0RfRVJST1IsDQo+ICsg ICAgICAiJWE6IGZhaWxlZCB0byBsb2FkIHBsYXRmb3JtIGNvbmZpZzogJXJcbiIsIF9fRlVOQ1RJ T05fXywgU3RhdHVzKSk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsg IGlmIChPcHRpb25hbEVsZW1lbnRzICYgUExBVEZPUk1fQ09ORklHX0ZfR1JBUEhJQ1NfUkVTT0xV VElPTikgew0KPiArICAgIC8vDQo+ICsgICAgLy8gUGFzcyB0aGUgcHJlZmVycmVkIHJlc29sdXRp b24gdG8gR3JhcGhpY3NDb25zb2xlRHhlIHZpYSBkeW5hbWljIFBDRHMuDQo+ICsgICAgLy8NCj4g KyAgICBQY2RTZXQzMiAoUGNkVmlkZW9Ib3Jpem9udGFsUmVzb2x1dGlvbiwNCj4gKyAgICAgIFBs YXRmb3JtQ29uZmlnLkhvcml6b250YWxSZXNvbHV0aW9uKTsNCj4gKyAgICBQY2RTZXQzMiAoUGNk VmlkZW9WZXJ0aWNhbFJlc29sdXRpb24sDQo+ICsgICAgICBQbGF0Zm9ybUNvbmZpZy5WZXJ0aWNh bFJlc29sdXRpb24pOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiAr fQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBOb3RpZmljYXRpb24gY2FsbGJhY2sgZm9yIEdPUCBp bnRlcmZhY2UgaW5zdGFsbGF0aW9uLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gRXZlbnQgICAgRXZl bnQgd2hvc2Ugbm90aWZpY2F0aW9uIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuDQo+ICsNCj4g KyAgQHBhcmFtW2luXSBDb250ZXh0ICBUaGUgcG9pbnRlciB0byB0aGUgbm90aWZpY2F0aW9uIGZ1 bmN0aW9uJ3MgY29udGV4dCwgd2hpY2gNCj4gKyAgICAgICAgICAgICAgICAgICAgICBpcyBpbXBs ZW1lbnRhdGlvbi1kZXBlbmRlbnQuDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJ QVBJDQo+ICtHb3BJbnN0YWxsZWQgKA0KPiArICBJTiBFRklfRVZFTlQgRXZlbnQsDQo+ICsgIElO IFZPSUQgICAgICAqQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAg ICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfR1JBUEhJQ1NfT1VUUFVUX1BST1RPQ09MICpH b3A7DQo+ICsNCj4gKyAgQVNTRVJUIChFdmVudCA9PSBtR29wRXZlbnQpOw0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIENoZWNrIGZ1cnRoZXIgR09Qcy4NCj4gKyAgLy8NCj4gKyAgZm9yICg7Oykgew0K PiArICAgIG1OdW1Hb3BNb2RlcyA9IDA7DQo+ICsgICAgbUdvcE1vZGVzID0gTlVMTDsNCj4gKw0K PiArICAgIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9jb2wgKCZnRWZpR3JhcGhpY3NPdXRwdXRQ cm90b2NvbEd1aWQsDQo+IG1Hb3BUcmFja2VyLA0KPiArICAgICAgICAgICAgICAgICAgICAoVk9J RCAqKikgJkdvcCk7DQo+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAg cmV0dXJuOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFN0YXR1cyA9IFF1ZXJ5R29wTW9kZXMgKEdv cCwgJm1OdW1Hb3BNb2RlcywgJm1Hb3BNb2Rlcyk7DQo+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiArICAgICAgY29udGludWU7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgU3RhdHVz ID0gUG9wdWxhdGVGb3JtIChtSW5zdGFsbGVkUGFja2FnZXMsDQo+ICZnU2ltaWNzWDU4UGxhdGZv cm1Db25maWdHdWlkLA0KPiArICAgICAgICAgICAgICAgRk9STUlEX01BSU5fRk9STSwgbU51bUdv cE1vZGVzLCBtR29wTW9kZXMpOw0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g KyAgICAgIEZyZWVQb29sIChtR29wTW9kZXMpOw0KPiArICAgICAgY29udGludWU7DQo+ICsgICAg fQ0KPiArDQo+ICsgICAgYnJlYWs7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBTdWNj ZXNzIC0tIHNvIHVuaW5zdGFsbCB0aGlzIGNhbGxiYWNrLiBDbG9zaW5nIHRoZSBldmVudCByZW1v dmVzIGFsbA0KPiArICAvLyBwZW5kaW5nIG5vdGlmaWNhdGlvbnMgYW5kIGFsbCBwcm90b2NvbCBy ZWdpc3RyYXRpb25zLg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBnQlMtPkNsb3NlRXZlbnQgKG1H b3BFdmVudCk7DQo+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ICsgIG1Hb3BFdmVu dCA9IE5VTEw7DQo+ICsgIG1Hb3BUcmFja2VyID0gTlVMTDsNCj4gK30NCj4gKw0KPiArDQo+ICsv KioNCj4gKyAgRW50cnkgcG9pbnQgZm9yIHRoaXMgZHJpdmVyLg0KPiArDQo+ICsgIEBwYXJhbVtp bl0gSW1hZ2VIYW5kbGUgIEltYWdlIGhhbmRsZSBvZiB0aGlzIGRyaXZlci4NCj4gKyAgQHBhcmFt W2luXSBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byBTeXN0ZW1UYWJsZS4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNFU1MgICAgICAgICAgICBEcml2ZXIgaGFzIGxvYWRlZCBzdWNjZXNzZnVsbHku DQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIEZhaWxlZCB0byBpbnN0YWxsIEhJ SSBwYWNrYWdlcy4NCj4gKyAgQHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgY29k ZXMgZnJvbSBsb3dlciBsZXZlbCBmdW5jdGlvbnMuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRV Uw0KPiArRUZJQVBJDQo+ICtQbGF0Zm9ybUluaXQgKA0KPiArICBJTiAgRUZJX0hBTkRMRSAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUN Cj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4gKw0KPiArICBFeGVjdXRl UGxhdGZvcm1Db25maWcgKCk7DQo+ICsNCj4gKyAgbUNvbmZpZ0FjY2Vzcy5FeHRyYWN0Q29uZmln ID0gJkV4dHJhY3RDb25maWc7DQo+ICsgIG1Db25maWdBY2Nlc3MuUm91dGVDb25maWcgICA9ICZS b3V0ZUNvbmZpZzsNCj4gKyAgbUNvbmZpZ0FjY2Vzcy5DYWxsYmFjayAgICAgID0gJkNhbGxiYWNr Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIERlY2xhcmUgb3Vyc2VsdmVzIHN1aXRhYmxlIGZvciBI SUkgY29tbXVuaWNhdGlvbi4NCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsTXVs dGlwbGVQcm90b2NvbEludGVyZmFjZXMgKCZJbWFnZUhhbmRsZSwNCj4gKyAgICAgICAgICAgICAg ICAgICZnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCwgICAgICAmbVBrZ0RldmljZVBhdGgsDQo+ ICsgICAgICAgICAgICAgICAgICAmZ0VmaUhpaUNvbmZpZ0FjY2Vzc1Byb3RvY29sR3VpZCwgJm1D b25maWdBY2Nlc3MsDQo+ICsgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiAr ICAvLw0KPiArICAvLyBQdWJsaXNoIHRoZSBISUkgcGFja2FnZSBsaXN0IHRvIEhJSSBEYXRhYmFz ZS4NCj4gKyAgLy8NCj4gKyAgbUluc3RhbGxlZFBhY2thZ2VzID0gSGlpQWRkUGFja2FnZXMgKA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICZnRWZpQ2FsbGVySWRHdWlkLCAgLy8gUGFja2Fn ZUxpc3RHdWlkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsICAgICAg ICAvLyBhc3NvY2lhdGVkIERldmljZUhhbmRsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg IFBsYXRmb3JtRHhlU3RyaW5ncywgLy8gMXN0IHBhY2thZ2UNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICBQbGF0Zm9ybUZvcm1zQmluLCAgIC8vIDJuZCBwYWNrYWdlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAvLyB0ZXJtaW5hdG9yDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKG1JbnN0YWxsZWRQYWNrYWdlcyA9PSBO VUxMKSB7DQo+ICsgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgICAgZ290 byBVbmluc3RhbGxQcm90b2NvbHM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBnQlMtPkNy ZWF0ZUV2ZW50IChFVlRfTk9USUZZX1NJR05BTCwgVFBMX0NBTExCQUNLLA0KPiAmR29wSW5zdGFs bGVkLA0KPiArICAgICAgICAgICAgICAgICAgTlVMTCAvKiBDb250ZXh0ICovLCAmbUdvcEV2ZW50 KTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIGdvdG8gUmVtb3ZlUGFj a2FnZXM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBnQlMtPlJlZ2lzdGVyUHJvdG9jb2xO b3RpZnkgKCZnRWZpR3JhcGhpY3NPdXRwdXRQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAgICAg ICAgICBtR29wRXZlbnQsICZtR29wVHJhY2tlcik7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gKyAgICBnb3RvIENsb3NlR29wRXZlbnQ7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0K PiArICAvLyBDaGVjayBhbHJlYWR5IGluc3RhbGxlZCBHT1BzLg0KPiArICAvLw0KPiArICBTdGF0 dXMgPSBnQlMtPlNpZ25hbEV2ZW50IChtR29wRXZlbnQpOw0KPiArICBBU1NFUlRfRUZJX0VSUk9S IChTdGF0dXMpOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKw0KPiArQ2xvc2VH b3BFdmVudDoNCj4gKyAgZ0JTLT5DbG9zZUV2ZW50IChtR29wRXZlbnQpOw0KPiArDQo+ICtSZW1v dmVQYWNrYWdlczoNCj4gKyAgSGlpUmVtb3ZlUGFja2FnZXMgKG1JbnN0YWxsZWRQYWNrYWdlcyk7 DQo+ICsNCj4gK1VuaW5zdGFsbFByb3RvY29sczoNCj4gKyAgZ0JTLT5Vbmluc3RhbGxNdWx0aXBs ZVByb3RvY29sSW50ZXJmYWNlcyAoSW1hZ2VIYW5kbGUsDQo+ICsgICAgICAgICAmZ0VmaURldmlj ZVBhdGhQcm90b2NvbEd1aWQsICAgICAgJm1Qa2dEZXZpY2VQYXRoLA0KPiArICAgICAgICAgJmdF ZmlIaWlDb25maWdBY2Nlc3NQcm90b2NvbEd1aWQsICZtQ29uZmlnQWNjZXNzLA0KPiArICAgICAg ICAgTlVMTCk7DQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBV bmxvYWQgdGhlIGRyaXZlci4NCj4gKw0KPiArICBAcGFyYW1baW5dICBJbWFnZUhhbmRsZSAgSGFu ZGxlIHRoYXQgaWRlbnRpZmllcyB0aGUgaW1hZ2UgdG8gZXZpY3QuDQo+ICsNCj4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgVGhlIGltYWdlIGhhcyBiZWVuIHVubG9hZGVkLg0KPiArKiovDQo+ICtF RklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1BsYXRmb3JtVW5sb2FkICgNCj4gKyAgSU4gIEVGSV9I QU5ETEUgIEltYWdlSGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKG1Hb3BFdmVudCA9PSBO VUxMKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBUaGUgR09QIGNhbGxiYWNrIHJhbiBzdWNjZXNz ZnVsbHkgYW5kIHVucmVnaXN0ZXJlZCBpdHNlbGYuIFJlbGVhc2UgdGhlDQo+ICsgICAgLy8gcmVz b3VyY2VzIGFsbG9jYXRlZCB0aGVyZS4NCj4gKyAgICAvLw0KPiArICAgIEFTU0VSVCAobUdvcE1v ZGVzICE9IE5VTEwpOw0KPiArICAgIEZyZWVQb29sIChtR29wTW9kZXMpOw0KPiArICB9IGVsc2Ug ew0KPiArICAgIC8vDQo+ICsgICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gdW5yZWdpc3RlciB0 aGUgY2FsbGJhY2suDQo+ICsgICAgLy8NCj4gKyAgICBBU1NFUlQgKG1Hb3BNb2RlcyA9PSBOVUxM KTsNCj4gKyAgICBnQlMtPkNsb3NlRXZlbnQgKG1Hb3BFdmVudCk7DQo+ICsgIH0NCj4gKw0KPiAr ICAvLw0KPiArICAvLyBSZWxlYXNlIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgdGhlIGVudHJ5IHBv aW50Lg0KPiArICAvLw0KPiArICBIaWlSZW1vdmVQYWNrYWdlcyAobUluc3RhbGxlZFBhY2thZ2Vz KTsNCj4gKyAgZ0JTLT5Vbmluc3RhbGxNdWx0aXBsZVByb3RvY29sSW50ZXJmYWNlcyAoSW1hZ2VI YW5kbGUsDQo+ICsgICAgICAgICAmZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQsICAgICAgJm1Q a2dEZXZpY2VQYXRoLA0KPiArICAgICAgICAgJmdFZmlIaWlDb25maWdBY2Nlc3NQcm90b2NvbEd1 aWQsICZtQ29uZmlnQWNjZXNzLA0KPiArICAgICAgICAgTlVMTCk7DQo+ICsgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUNvbmZpZy5jDQo+IGIvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmMNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uYjNiMmIzNDA2NA0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9y bUR4ZS9QbGF0Zm9ybUNvbmZpZy5jDQo+IEBAIC0wLDAgKzEsMTIzIEBADQo+ICsvKiogQGZpbGUN Cj4gKyAgVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHNlcmlhbGl6aW5nIChwZXJzaXN0ZW50bHkgc3Rv cmluZykgYW5kIGRlc2VyaWFsaXppbmcNCj4gKyAgT1ZNRidzIHBsYXRmb3JtIGNvbmZpZ3VyYXRp b24uDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChDKSAyMDE0LCBSZWQgSGF0LCBJbmMuDQo+ICsNCj4g KyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0K PiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlv bkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsjaW5jbHVkZSA8R3VpZC9T aW1pY3NYNThQbGF0Zm9ybUNvbmZpZy5oPg0KPiArDQo+ICsjaW5jbHVkZSAiUGxhdGZvcm1Db25m aWcuaCINCj4gKw0KPiArLy8NCj4gKy8vIE5hbWUgb2YgdGhlIFVFRkkgdmFyaWFibGUgdGhhdCB3 ZSB1c2UgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZS4NCj4gKy8vDQo+ICtTVEFUSUMgQ0hBUjE2IG1W YXJpYWJsZU5hbWVbXSA9IEwiUGxhdGZvcm1Db25maWciOw0KPiArDQo+ICsNCj4gKy8qKg0KPiAr ICBTZXJpYWxpemUgYW5kIHBlcnNpc3RlbnRseSBzYXZlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24u DQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQbGF0Zm9ybUNvbmZpZyAgVGhlIHBsYXRmb3JtIGNvbmZp Z3VyYXRpb24gdG8gc2VyaWFsaXplIGFuZCBzYXZlLg0KPiArDQo+ICsgIEByZXR1cm4gIFN0YXR1 cyBjb2RlcyByZXR1cm5lZCBieSBnUlQtPlNldFZhcmlhYmxlKCkuDQo+ICsqKi8NCj4gK0VGSV9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArUGxhdGZvcm1Db25maWdTYXZlICgNCj4gKyAgSU4gUExBVEZP Uk1fQ09ORklHICpQbGF0Zm9ybUNvbmZpZw0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMg U3RhdHVzOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFdlIGNvdWxkIGltcGxlbWVudCBhbnkga2lu ZCBvZiB0cmFuc2xhdGlvbiBoZXJlLCBhcyBwYXJ0IG9mIHNlcmlhbGl6YXRpb24uDQo+ICsgIC8v IEZvciBleGFtcGxlLCB3ZSBjb3VsZCBleHBvc2UgdGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24g aW4gc2VwYXJhdGUNCj4gKyAgLy8gdmFyaWFibGVzIHdpdGggaHVtYW4tcmVhZGFibGUgY29udGVu dHMsIGFsbG93aW5nIG90aGVyIHRvb2xzIHRvIGFjY2Vzcw0KPiArICAvLyB0aGVtIG1vcmUgZWFz aWx5LiBGb3Igbm93LCBqdXN0IHNhdmUgYSBiaW5hcnkgZHVtcC4NCj4gKyAgLy8NCj4gKyAgU3Rh dHVzID0gZ1JULT5TZXRWYXJpYWJsZSAobVZhcmlhYmxlTmFtZSwgJmdTaW1pY3NYNThQbGF0Zm9y bUNvbmZpZ0d1aWQsDQo+ICsgICAgICAgICAgICAgICAgICBFRklfVkFSSUFCTEVfTk9OX1ZPTEFU SUxFIHwNCj4gRUZJX1ZBUklBQkxFX0JPT1RTRVJWSUNFX0FDQ0VTUyB8DQo+ICsgICAgICAgICAg ICAgICAgICAgIEVGSV9WQVJJQUJMRV9SVU5USU1FX0FDQ0VTUywNCj4gKyAgICAgICAgICAgICAg ICAgIHNpemVvZiAqUGxhdGZvcm1Db25maWcsIFBsYXRmb3JtQ29uZmlnKTsNCj4gKyAgcmV0dXJu IFN0YXR1czsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgTG9hZCBhbmQgZGVzZXJpYWxp emUgcGxhdGZvcm0gY29uZmlndXJhdGlvbi4NCj4gKw0KPiArICBXaGVuIHRoZSBmdW5jdGlvbiBm YWlscywgb3V0cHV0IHBhcmFtZXRlcnMgYXJlIGluZGV0ZXJtaW5hdGUuDQo+ICsNCj4gKyAgQHBh cmFtW291dF0gUGxhdGZvcm1Db25maWcgICAgVGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gdG8g cmVjZWl2ZSB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkIGRh dGEuDQo+ICsNCj4gKyAgQHBhcmFtW291dF0gT3B0aW9uYWxFbGVtZW50cyAgVGhpcyBiaXRtYXAg ZGVzY3JpYmVzIHRoZSBwcmVzZW5jZSBvZg0KPiBvcHRpb25hbA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGxv YWRlZC4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExBVEZPUk1fQ09ORklH X0ZfRE9XTkdSQURFIG1lYW5zIHRoYXQgc29tZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bmtub3duIGVsZW1lbnRzLCBwcmVzZW50IGluIHRoZSB3aXJlIGZvcm1hdCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGlnbm9yZWQuDQo+ICsN Cj4gKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICAgICBMb2FkaW5nICYgZGVzZXJpYWxpemF0 aW9uIHN1Y2Nlc3NmdWwuDQo+ICsgIEByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgRXJyb3Ig Y29kZXMgcmV0dXJuZWQgYnkgR2V0VmFyaWFibGUyKCkuDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMN Cj4gK0VGSUFQSQ0KPiArUGxhdGZvcm1Db25maWdMb2FkICgNCj4gKyAgT1VUIFBMQVRGT1JNX0NP TkZJRyAqUGxhdGZvcm1Db25maWcsDQo+ICsgIE9VVCBVSU5UNjQgICAgICAgICAgKk9wdGlvbmFs RWxlbWVudHMNCj4gKyAgKQ0KPiArew0KPiArICBWT0lEICAgICAgICpEYXRhOw0KPiArICBVSU5U TiAgICAgIERhdGFTaXplOw0KPiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4gKw0KPiArICAvLw0K PiArICAvLyBBbnkgdHJhbnNsYXRpb24gZG9uZSBpbiBQbGF0Zm9ybUNvbmZpZ1NhdmUoKSB3b3Vs ZCBoYXZlIHRvIGJlIG1pcnJvcmVkDQo+ICsgIC8vIGhlcmUuIEZvciBub3csIGp1c3QgbG9hZCB0 aGUgYmluYXJ5IGR1bXAuDQo+ICsgIC8vDQo+ICsgIC8vIFZlcnNpb25pbmcgb2YgdGhlIGJpbmFy eSB3aXJlIGZvcm1hdCBpcyBpbXBsZW1lbnRlZCBiYXNlZCBvbiBzaXplDQo+ICsgIC8vIChvbmx5 IGluY3JlbWVudGFsIGNoYW5nZXMsIGllLiBuZXcgZmllbGRzKSwgYW5kIG9uIEdVSUQuDQo+ICsg IC8vIChJbmNvbXBhdGlibGUgY2hhbmdlcyByZXF1aXJlIGEgR1VJRCBjaGFuZ2UuKQ0KPiArICAv Lw0KPiArICBTdGF0dXMgPSBHZXRWYXJpYWJsZTIgKG1WYXJpYWJsZU5hbWUsICZnU2ltaWNzWDU4 UGxhdGZvcm1Db25maWdHdWlkLA0KPiAmRGF0YSwNCj4gKyAgICAgICAgICAgICAmRGF0YVNpemUp Ow0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsN Cj4gKyAgfQ0KPiArDQo+ICsgICpPcHRpb25hbEVsZW1lbnRzID0gMDsNCj4gKyAgaWYgKERhdGFT aXplID4gc2l6ZW9mICpQbGF0Zm9ybUNvbmZpZykgew0KPiArICAgIC8vDQo+ICsgICAgLy8gSGFu ZGxlIGZpcm13YXJlIGRvd25ncmFkZSAtLSBrZWVwIG9ubHkgbGVhZGluZyBwYXJ0Lg0KPiArICAg IC8vDQo+ICsgICAgQ29weU1lbSAoUGxhdGZvcm1Db25maWcsIERhdGEsIHNpemVvZiAqUGxhdGZv cm1Db25maWcpOw0KPiArICAgICpPcHRpb25hbEVsZW1lbnRzIHw9IFBMQVRGT1JNX0NPTkZJR19G X0RPV05HUkFERTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBDb3B5TWVtIChQbGF0Zm9ybUNvbmZp ZywgRGF0YSwgRGF0YVNpemUpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBIYW5kbGUgZmly bXdhcmUgdXBncmFkZSAtLSB6ZXJvIG91dCBtaXNzaW5nIGZpZWxkcy4NCj4gKyAgICAvLw0KPiAr ICAgIFplcm9NZW0gKChVSU5UOCAqKVBsYXRmb3JtQ29uZmlnICsgRGF0YVNpemUsDQo+ICsgICAg ICBzaXplb2YgKlBsYXRmb3JtQ29uZmlnIC0gRGF0YVNpemUpOw0KPiArICB9DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gQmFzZWQgb24gRGF0YVNpemUsIHJlcG9ydCB0aGUgb3B0aW9uYWwgZmVhdHVy ZXMgdGhhdCB3ZSByZWNvZ25pemUuDQo+ICsgIC8vDQo+ICsgIGlmIChEYXRhU2l6ZSA+PSAoT0ZG U0VUX09GIChQTEFURk9STV9DT05GSUcsIFZlcnRpY2FsUmVzb2x1dGlvbikgKw0KPiArICAgICAg ICAgICAgICAgICAgIHNpemVvZiBQbGF0Zm9ybUNvbmZpZy0+VmVydGljYWxSZXNvbHV0aW9uKSkg ew0KPiArICAgICpPcHRpb25hbEVsZW1lbnRzIHw9IFBMQVRGT1JNX0NPTkZJR19GX0dSQVBISUNT X1JFU09MVVRJT047DQo+ICsgIH0NCj4gKw0KPiArICBGcmVlUG9vbCAoRGF0YSk7DQo+ICsgIHJl dHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9DbW9zLmMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvQ21vcy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmZhMmMyMjExNmMNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvQ21vcy5j DQo+IEBAIC0wLDAgKzEsNTcgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBQQy9BVCBDTU9TIGFjY2Vz cyByb3V0aW5lcw0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMDkgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpbmNs dWRlICJDbW9zLmgiDQo+ICsjaW5jbHVkZSAiTGlicmFyeS9Jb0xpYi5oIg0KPiArDQo+ICsvKioN Cj4gKyAgUmVhZHMgOC1iaXRzIG9mIENNT1MgZGF0YS4NCj4gKw0KPiArICBSZWFkcyB0aGUgOC1i aXRzIG9mIENNT1MgZGF0YSBhdCB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5IEluZGV4Lg0KPiAr ICBUaGUgOC1iaXQgcmVhZCB2YWx1ZSBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcGFyYW0gIElu ZGV4ICBUaGUgQ01PUyBsb2NhdGlvbiB0byByZWFkLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZh bHVlIHJlYWQuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDgNCj4gK0VGSUFQSQ0KPiArQ21vc1JlYWQ4 ICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4DQo+ICsgICkN Cj4gK3sNCj4gKyAgSW9Xcml0ZTggKDB4NzAsIChVSU5UOCkgSW5kZXgpOw0KPiArICByZXR1cm4g SW9SZWFkOCAoMHg3MSk7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFdyaXRlcyA4LWJp dHMgb2YgQ01PUyBkYXRhLg0KPiArDQo+ICsgIFdyaXRlcyA4LWJpdHMgb2YgQ01PUyBkYXRhIHRv IHRoZSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgSW5kZXgNCj4gKyAgd2l0aCB0aGUgdmFsdWUgc3Bl Y2lmaWVkIGJ5IFZhbHVlIGFuZCByZXR1cm5zIFZhbHVlLg0KPiArDQo+ICsgIEBwYXJhbSAgSW5k ZXggIFRoZSBDTU9TIGxvY2F0aW9uIHRvIHdyaXRlLg0KPiArICBAcGFyYW0gIFZhbHVlICBUaGUg dmFsdWUgdG8gd3JpdGUgdG8gQ01PUy4NCj4gKw0KPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0 dGVuIHRvIENNT1MuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDgNCj4gK0VGSUFQSQ0KPiArQ21vc1dy aXRlOCAoDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4g KyAgSU4gICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ICsgICkNCj4gK3sN Cj4gKyAgSW9Xcml0ZTggKDB4NzAsIChVSU5UOCkgSW5kZXgpOw0KPiArICBJb1dyaXRlOCAoMHg3 MSwgVmFsdWUpOw0KPiArICByZXR1cm4gVmFsdWU7DQo+ICt9DQo+ICsNCj4gZGlmZiAtLWdpdCBh L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9GZWF0dXJlQ29u dHJvbC5jDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVp L0ZlYXR1cmVDb250cm9sLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uNjkyNDA1ZTQxNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9GZWF0dXJlQ29udHJvbC5jDQo+IEBAIC0w LDAgKzEsMTE0IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgSW5zdGFsbCBhIGNhbGxiYWNrIHdoZW4g bmVjZXNzYXJ5IGZvciBzZXR0aW5nIHRoZSBGZWF0dXJlIENvbnRyb2wgTVNSIG9uIGFsbA0KPiAr ICBwcm9jZXNzb3JzLg0KPiArDQo+ICsgIENvcHlyaWdodCAoQykgMjAxNiwgUmVkIEhhdCwgSW5j Lg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzTGliLmg+DQo+ICsjaW5jbHVkZSA8UHBpL01wU2Vydmlj ZXMuaD4NCj4gKyNpbmNsdWRlIDxSZWdpc3Rlci9JbnRlbC9Nc3IvQ29yZTJNc3IuaD4NCj4gKw0K PiArI2luY2x1ZGUgIlBsYXRmb3JtLmgiDQo+ICsNCj4gKy8vDQo+ICsvLyBUaGUgdmFsdWUgdG8g YmUgd3JpdHRlbiB0byB0aGUgRmVhdHVyZSBDb250cm9sIE1TUiwgcmV0cmlldmVkIGZyb20gZndf Y2ZnLg0KPiArLy8NCj4gK1NUQVRJQyBVSU5UNjQgbUZlYXR1cmVDb250cm9sVmFsdWUgPSAweDAw MDAwMDA1Ow0KPiArDQo+ICsvKioNCj4gKyAgV3JpdGUgdGhlIEZlYXR1cmUgQ29udHJvbCBNU1Ig b24gYW4gQXBwbGljYXRpb24gUHJvY2Vzc29yIG9yIHRoZSBCb290DQo+ICsgIFByb2Nlc3Nvci4N Cj4gKw0KPiArICBBbGwgQVBzIGV4ZWN1dGUgdGhpcyBmdW5jdGlvbiBpbiBwYXJhbGxlbC4gVGhl IEJTUCBleGVjdXRlcyB0aGUgZnVuY3Rpb24NCj4gKyAgc2VwYXJhdGVseS4NCj4gKw0KPiArICBA cGFyYW1baW4sb3V0XSBXb3JrU3BhY2UgIFBvaW50ZXIgdG8gdGhlIGlucHV0L291dHB1dCBhcmd1 bWVudA0KPiB3b3Jrc3BhY2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQg YnkgYWxsIHByb2Nlc3NvcnMuDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJ DQo+ICtXcml0ZUZlYXR1cmVDb250cm9sICgNCj4gKyAgSU4gT1VUIFZPSUQgKldvcmtTcGFjZQ0K PiArICApDQo+ICt7DQo+ICsgIEFzbVdyaXRlTXNyNjQgKE1TUl9DT1JFMl9GRUFUVVJFX0NPTlRS T0wsIG1GZWF0dXJlQ29udHJvbFZhbHVlKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIE5vdGlm aWNhdGlvbiBmdW5jdGlvbiBjYWxsZWQgd2hlbiBFRklfUEVJX01QX1NFUlZJQ0VTX1BQSSBiZWNv bWVzDQo+IGF2YWlsYWJsZS4NCj4gKw0KPiArICBAcGFyYW1baW5dIFBlaVNlcnZpY2VzICAgICAg SW5kaXJlY3QgcmVmZXJlbmNlIHRvIHRoZSBQRUkgU2VydmljZXMgVGFibGUuDQo+ICsgIEBwYXJh bVtpbl0gTm90aWZ5RGVzY3JpcHRvciBBZGRyZXNzIG9mIHRoZSBub3RpZmljYXRpb24gZGVzY3Jp cHRvciBkYXRhDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUuDQo+ ICsgIEBwYXJhbVtpbl0gUHBpICAgICAgICAgICAgICBBZGRyZXNzIG9mIHRoZSBQUEkgdGhhdCB3 YXMgaW5zdGFsbGVkLg0KPiArDQo+ICsgIEByZXR1cm4gIFN0YXR1cyBvZiB0aGUgbm90aWZpY2F0 aW9uLiBUaGUgc3RhdHVzIGNvZGUgcmV0dXJuZWQgZnJvbSB0aGlzDQo+ICsgICAgICAgICAgIGZ1 bmN0aW9uIGlzIGlnbm9yZWQuDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtPbk1wU2VydmljZXNBdmFpbGFibGUgKA0KPiArICBJTiBFRklfUEVJX1NFUlZJ Q0VTICAgICAgICAgICAqKlBlaVNlcnZpY2VzLA0KPiArICBJTiBFRklfUEVJX05PVElGWV9ERVND UklQVE9SICAqTm90aWZ5RGVzY3JpcHRvciwNCj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAg ICAgICAgKlBwaQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9QRUlfTVBfU0VSVklDRVNfUFBJICpN cFNlcnZpY2VzOw0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsNCj4g KyAgREVCVUcgKChFRklfRF9WRVJCT1NFLCAiJWE6ICVhXG4iLCBnRWZpQ2FsbGVyQmFzZU5hbWUs DQo+IF9fRlVOQ1RJT05fXykpOw0KPiArICAvLw0KPiArICAvLyBXcml0ZSB0aGUgTVNSIG9uIGFs bCB0aGUgQVBzIGluIHBhcmFsbGVsLg0KPiArICAvLw0KPiArICBNcFNlcnZpY2VzID0gUHBpOw0K PiArICBTdGF0dXMgPSBNcFNlcnZpY2VzLT5TdGFydHVwQWxsQVBzICgNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAoQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAqKilQZWlTZXJ2aWNlcywNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICBNcFNlcnZpY2VzLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgIFdyaXRlRmVhdHVyZUNvbnRyb2wsIC8vIFByb2NlZHVyZQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgIEZBTFNFLCAgICAgICAgICAgICAgIC8vIFNpbmdsZVRocmVhZA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgIC8vIFRpbWVvdXRJ bk1pY3JvU2Vjb25kczogaW5mLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgICAg ICAgICAgICAgICAgIC8vIFByb2NlZHVyZUFyZ3VtZW50DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSAmJiBTdGF0dXMgIT0gRUZJX05P VF9TVEFSVEVEKSB7DQo+ICsgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIiVhOiBTdGFydHVwQWxs QXBzKCk6ICVyXG4iLCBfX0ZVTkNUSU9OX18sDQo+IFN0YXR1cykpOw0KPiArICAgIHJldHVybiBT dGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBOb3cgd3JpdGUgdGhlIE1TUiBv biB0aGUgQlNQIHRvby4NCj4gKyAgLy8NCj4gKyAgV3JpdGVGZWF0dXJlQ29udHJvbCAoTlVMTCk7 DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvLw0KPiArLy8g Tm90aWZpY2F0aW9uIG9iamVjdCBmb3IgcmVnaXN0ZXJpbmcgdGhlIGNhbGxiYWNrLCBmb3Igd2hl bg0KPiArLy8gRUZJX1BFSV9NUF9TRVJWSUNFU19QUEkgYmVjb21lcyBhdmFpbGFibGUuDQo+ICsv Lw0KPiArU1RBVElDIENPTlNUIEVGSV9QRUlfTk9USUZZX0RFU0NSSVBUT1IgbU1wU2VydmljZXNO b3RpZnkgPSB7DQo+ICsgIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1JfTk9USUZZX0NBTExCQUNLIHwg Ly8gRmxhZ3MNCj4gKyAgRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9URVJNSU5BVEVfTElTVCwNCj4g KyAgJmdFZmlQZWlNcFNlcnZpY2VzUHBpR3VpZCwgICAgICAgICAgICAgICAvLyBHdWlkDQo+ICsg IE9uTXBTZXJ2aWNlc0F2YWlsYWJsZSAgICAgICAgICAgICAgICAgICAgLy8gTm90aWZ5DQo+ICt9 Ow0KPiArDQo+ICtWT0lEDQo+ICtJbnN0YWxsRmVhdHVyZUNvbnRyb2xDYWxsYmFjayAoDQo+ICsg IFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICBTdGF0dXM7DQo+ ICsNCj4gKyAgU3RhdHVzID0gUGVpU2VydmljZXNOb3RpZnlQcGkgKCZtTXBTZXJ2aWNlc05vdGlm eSk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKEVGSV9E X0VSUk9SLCAiJWE6IGZhaWxlZCB0byBzZXQgdXAgTVAgU2VydmljZXMgY2FsbGJhY2s6ICVyXG4i LA0KPiArICAgICAgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNCj4gKyAgfQ0KPiArfQ0KPiBkaWZm IC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Z2 LmMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvRnYu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi44MThkMTM1Yzk1 DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtUGVpL0Z2LmMNCj4gQEAgLTAsMCArMSwxMDAgQEANCj4gKy8qKiBAZmlsZQ0K PiArICBCdWlsZCBGViByZWxhdGVkIGhvYnMgZm9yIHBsYXRmb3JtLg0KPiArDQo+ICsgIENvcHly aWdodCAoYykgMjAwNiAtIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuIDxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJQaVBlaS5oIg0KPiArI2luY2x1ZGUg IlBsYXRmb3JtLmgiDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvSG9iTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9QZWlTZXJ2aWNlc0xp Yi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+DQo+ICsNCj4gKw0KPiArLyoqDQo+ ICsgIFB1Ymxpc2ggUEVJICYgRFhFIChEZWNvbXByZXNzZWQpIE1lbW9yeSBiYXNlZCBGVnMgdG8g bGV0IFBFSQ0KPiArICBhbmQgRFhFIGtub3cgYWJvdXQgdGhlbS4NCj4gKw0KPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgUGxhdGZvcm0gUEVJIEZWcyB3ZXJlIGluaXRpYWxpemVkIHN1Y2Nlc3Nm dWxseS4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtQZWlGdkluaXRpYWxpemF0aW9u ICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIEJPT0xFQU4gU2VjdXJlUzNOZWVkZWQ7 DQo+ICsNCj4gKyAgREVCVUcgKChFRklfRF9JTkZPLCAiUGxhdGZvcm0gUEVJIEZpcm13YXJlIFZv bHVtZSBJbml0aWFsaXphdGlvblxuIikpOw0KPiArDQo+ICsgIERFQlVHICgNCj4gKyAgICAoRUZJ X0RfRVJST1IsICJGaXJtd2FyZSBWb2x1bWUgSE9COiAweCV4IDB4JXhcbiIsDQo+ICsgICAgICBQ Y2RHZXQzMiAoUGNkU2ltaWNzUGVpTWVtRnZCYXNlKSwNCj4gKyAgICAgIFBjZEdldDMyIChQY2RT aW1pY3NQZWlNZW1GdlNpemUpDQo+ICsgICAgICApDQo+ICsgICAgKTsNCj4gKyAgLy8NCj4gKyAg Ly8gQ3JlYXRlIGEgbWVtb3J5IGFsbG9jYXRpb24gSE9CIGZvciB0aGUgUEVJIEZWLg0KPiArICAv Lw0KPiArICAvLyBBbGxvY2F0ZSBhcyBBQ1BJIE5WUyBpcyBTMyBpcyBzdXBwb3J0ZWQNCj4gKyAg Ly8NCj4gKyAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4gKyAgICBQY2RHZXQzMiAoUGNk U2ltaWNzUGVpTWVtRnZCYXNlKSwNCj4gKyAgICBQY2RHZXQzMiAoUGNkU2ltaWNzUGVpTWVtRnZT aXplKSwNCj4gKyAgICBtUzNTdXBwb3J0ZWQgPyBFZmlBQ1BJTWVtb3J5TlZTIDogRWZpQm9vdFNl cnZpY2VzRGF0YQ0KPiArICAgICk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gTGV0IERYRSBrbm93 IGFib3V0IHRoZSBEWEUgRlYNCj4gKyAgLy8NCj4gKyAgQnVpbGRGdkhvYiAoUGNkR2V0MzIgKFBj ZFNpbWljc0R4ZU1lbUZ2QmFzZSksIFBjZEdldDMyDQo+IChQY2RTaW1pY3NEeGVNZW1GdlNpemUp KTsNCj4gKw0KPiArICBTZWN1cmVTM05lZWRlZCA9IG1TM1N1cHBvcnRlZCAmJiBGZWF0dXJlUGNk R2V0DQo+IChQY2RTbW1TbXJhbVJlcXVpcmUpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENyZWF0 ZSBhIG1lbW9yeSBhbGxvY2F0aW9uIEhPQiBmb3IgdGhlIERYRSBGVi4NCj4gKyAgLy8NCj4gKyAg Ly8gSWYgInNlY3VyZSIgUzMgaXMgbmVlZGVkLCB0aGVuIFNFQyB3aWxsIGRlY29tcHJlc3MgYm90 aCBQRUkgYW5kIERYRQ0KPiArICAvLyBmaXJtd2FyZSB2b2x1bWVzIGF0IFMzIHJlc3VtZSB0b28s IGhlbmNlIHdlIG5lZWQgdG8ga2VlcCBhd2F5IHRoZSBPUw0KPiBmcm9tDQo+ICsgIC8vIERYRUZW IGFzIHdlbGwuIE90aGVyd2lzZSB3ZSBvbmx5IG5lZWQgdG8ga2VlcCBhd2F5IERYRSBpdHNlbGYg ZnJvbSB0aGUNCj4gKyAgLy8gRFhFRlYgYXJlYS4NCj4gKyAgLy8NCj4gKyAgQnVpbGRNZW1vcnlB bGxvY2F0aW9uSG9iICgNCj4gKyAgICBQY2RHZXQzMiAoUGNkU2ltaWNzRHhlTWVtRnZCYXNlKSwN Cj4gKyAgICBQY2RHZXQzMiAoUGNkU2ltaWNzRHhlTWVtRnZTaXplKSwNCj4gKyAgICBTZWN1cmVT M05lZWRlZCA/IEVmaUFDUElNZW1vcnlOVlMgOiBFZmlCb290U2VydmljZXNEYXRhDQo+ICsgICAg KTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBBZGRpdGlvbmFsbHksIHNhaWQgZGVjb21wcmVzc2lv biB3aWxsIHVzZSB0ZW1wb3JhcnkgbWVtb3J5IGFib3ZlIHRoZQ0KPiBlbmQNCj4gKyAgLy8gb2Yg RFhFRlYsIHNvIGxldCdzIGtlZXAgYXdheSB0aGUgT1MgZnJvbSB0aGVyZSB0b28uDQo+ICsgIC8v DQo+ICsgIGlmIChTZWN1cmVTM05lZWRlZCkgew0KPiArICAgIFVJTlQzMiBEeGVNZW1GdkVuZDsN Cj4gKw0KPiArICAgIER4ZU1lbUZ2RW5kID0gUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2QmFz ZSkgKw0KPiArICAgICAgICAgICAgICAgICAgUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2U2l6 ZSk7DQo+ICsgICAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4gKyAgICAgIER4ZU1lbUZ2 RW5kLA0KPiArICAgICAgUGNkR2V0MzIgKFBjZFNpbWljc0RlY29tcHJlc3Npb25TY3JhdGNoRW5k KSAtIER4ZU1lbUZ2RW5kLA0KPiArICAgICAgRWZpQUNQSU1lbW9yeU5WUw0KPiArICAgICAgKTsN Cj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIExldCBQRUkga25vdyBhYm91dCB0aGUgRFhF IEZWIHNvIGl0IGNhbiBmaW5kIHRoZSBEWEUgQ29yZQ0KPiArICAvLw0KPiArICBQZWlTZXJ2aWNl c0luc3RhbGxGdkluZm9QcGkgKA0KPiArICAgIE5VTEwsDQo+ICsgICAgKFZPSUQgKikoVUlOVE4p IFBjZEdldDMyIChQY2RTaW1pY3NEeGVNZW1GdkJhc2UpLA0KPiArICAgIFBjZEdldDMyIChQY2RT aW1pY3NEeGVNZW1GdlNpemUpLA0KPiArICAgIE5VTEwsDQo+ICsgICAgTlVMTA0KPiArICAgICk7 DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+IGRpZmYgLS1naXQg YS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvTWVtRGV0ZWN0 LmMNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvTWVt RGV0ZWN0LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNGM1 MjdiYWVmMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9NZW1EZXRlY3QuYw0KPiBAQCAtMCwwICsxLDU2OCBAQA0K PiArLyoqIEBmaWxlDQo+ICsgIE1lbW9yeSBEZXRlY3Rpb24gZm9yIFZpcnR1YWwgTWFjaGluZXMu DQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArLy8NCj4gKy8vIFRoZSBw YWNrYWdlIGxldmVsIGhlYWRlciBmaWxlcyB0aGlzIG1vZHVsZSB1c2VzDQo+ICsvLw0KPiArI2lu Y2x1ZGUgPFBpUGVpLmg+DQo+ICsNCj4gKy8vDQo+ICsvLyBUaGUgTGlicmFyeSBjbGFzc2VzIHRo aXMgbW9kdWxlIGNvbnN1bWVzDQo+ICsvLw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9y eUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0hvYkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUGVpbUVudHJ5UG9p bnQuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1Jlc291cmNlUHVibGljYXRpb25MaWIuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L010cnJMaWIuaD4NCj4gKyNpbmNsdWRlIDxTaW1pY3NQbGF0Zm9y bXMuaD4NCj4gKyNpbmNsdWRlIDxHdWlkL1NtcmFtTWVtb3J5UmVzZXJ2ZS5oPg0KPiArDQo+ICsj aW5jbHVkZSAiUGxhdGZvcm0uaCINCj4gKyNpbmNsdWRlICJDbW9zLmgiDQo+ICsNCj4gK1VJTlQ4 IG1QaHlzTWVtQWRkcmVzc1dpZHRoOw0KPiArDQo+ICtTVEFUSUMgVUlOVDMyIG1TM0FjcGlSZXNl cnZlZE1lbW9yeUJhc2U7DQo+ICtTVEFUSUMgVUlOVDMyIG1TM0FjcGlSZXNlcnZlZE1lbW9yeVNp emU7DQo+ICsNCj4gK1NUQVRJQyBVSU5UMTYgbVg1OFRzZWdNYnl0ZXM7DQo+ICsNCj4gK1ZPSUQN Cj4gK1g1OFRzZWdNYnl0ZXNJbml0aWFsaXphdGlvbigNCj4gKyAgVk9JRA0KPiArKQ0KPiArew0K PiArDQo+ICsgIGlmIChtSG9zdEJyaWRnZURldklkICE9IElOVEVMX0lDSDEwX0RFVklDRV9JRCkg ew0KPiArICAgIERFQlVHICgoDQo+ICsgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICIlYTog bm8gVFNFRyAoU01SQU0pIG9uIGhvc3QgYnJpZGdlIERJRD0weCUwNHg7ICINCj4gKyAgICAgICJv bmx5IERJRD0weCUwNHggKFg1OCkgaXMgc3VwcG9ydGVkXG4iLA0KPiArICAgICAgX19GVU5DVElP Tl9fLA0KPiArICAgICAgbUhvc3RCcmlkZ2VEZXZJZCwNCj4gKyAgICAgIElOVEVMX0lDSDEwX0RF VklDRV9JRA0KPiArICAgICAgKSk7DQo+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ICsgICAgQ3B1 RGVhZExvb3AgKCk7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBDaGVjayBpZiBRRU1V IG9mZmVycyBhbiBleHRlbmRlZCBUU0VHLg0KPiArICAvLw0KPiArICAvLyBUaGlzIGNhbiBiZSBz ZWVuIGZyb20gd3JpdGluZyBNQ0hfRVhUX1RTRUdfTUJfUVVFUlkgdG8gdGhlDQo+IE1DSF9FWFRf VFNFR19NQg0KPiArICAvLyByZWdpc3RlciwgYW5kIHJlYWRpbmcgYmFjayB0aGUgcmVnaXN0ZXIu DQo+ICsgIC8vDQo+ICsgIC8vIE9uIGEgUUVNVSBtYWNoaW5lIHR5cGUgdGhhdCBkb2VzIG5vdCBv ZmZlciBhbiBleHRlbmRlZCBUU0VHLCB0aGUgaW5pdGlhbA0KPiArICAvLyB3cml0ZSBvdmVyd3Jp dGVzIHdoYXRldmVyIHZhbHVlIGEgbWFsaWNpb3VzIGd1ZXN0IE9TIG1heSBoYXZlIHBsYWNlZCBp bg0KPiArICAvLyB0aGUgKHVuaW1wbGVtZW50ZWQpIHJlZ2lzdGVyLCBiZWZvcmUgZW50ZXJpbmcg UzMgb3IgcmVib290aW5nLg0KPiArICAvLyBTdWJzZXF1ZW50bHksIHRoZSByZWFkIHJldHVybnMg TUNIX0VYVF9UU0VHX01CX1FVRVJZIHVuY2hhbmdlZC4NCj4gKyAgLy8NCj4gKyAgLy8gT24gYSBR RU1VIG1hY2hpbmUgdHlwZSB0aGF0IG9mZmVycyBhbiBleHRlbmRlZCBUU0VHLCB0aGUgaW5pdGlh bCB3cml0ZQ0KPiArICAvLyB0cmlnZ2VycyBhbiB1cGRhdGUgdG8gdGhlIHJlZ2lzdGVyLiBTdWJz ZXF1ZW50bHksIHRoZSB2YWx1ZSByZWFkIGJhY2sNCj4gKyAgLy8gKHdoaWNoIGlzIGd1YXJhbnRl ZWQgdG8gZGlmZmVyIGZyb20gTUNIX0VYVF9UU0VHX01CX1FVRVJZKSB0ZWxscyB1cw0KPiB0aGUN Cj4gKyAgLy8gbnVtYmVyIG9mIG1lZ2FieXRlcy4NCj4gKyAgLy8NCj4gKyAgbVg1OFRzZWdNYnl0 ZXMgPSBGaXhlZFBjZEdldDgoUGNkWDU4VHNlZ01ieXRlcyk7DQo+ICsgIHJldHVybjsNCj4gK30N Cj4gKw0KPiArDQo+ICtVSU5UMzINCj4gK0dldFN5c3RlbU1lbW9yeVNpemVCZWxvdzRnYiAoDQo+ ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UOCBDbW9zMHgzNDsNCj4gKyAgVUlOVDgg Q21vczB4MzU7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ01PUyAweDM0LzB4MzUgc3BlY2lmaWVz IHRoZSBzeXN0ZW0gbWVtb3J5IGFib3ZlIDE2IE1CLg0KPiArICAvLyAqIENNT1MoMHgzNSkgaXMg dGhlIGhpZ2ggYnl0ZQ0KPiArICAvLyAqIENNT1MoMHgzNCkgaXMgdGhlIGxvdyBieXRlDQo+ICsg IC8vICogVGhlIHNpemUgaXMgc3BlY2lmaWVkIGluIDY0a2IgY2h1bmtzDQo+ICsgIC8vICogU2lu Y2UgdGhpcyBpcyBtZW1vcnkgYWJvdmUgMTZNQiwgdGhlIDE2TUIgbXVzdCBiZSBhZGRlZA0KPiAr ICAvLyAgIGludG8gdGhlIGNhbGN1bGF0aW9uIHRvIGdldCB0aGUgdG90YWwgbWVtb3J5IHNpemUu DQo+ICsgIC8vDQo+ICsNCj4gKyAgQ21vczB4MzQgPSAoVUlOVDgpIENtb3NSZWFkOCAoMHgzNCk7 DQo+ICsgIENtb3MweDM1ID0gKFVJTlQ4KSBDbW9zUmVhZDggKDB4MzUpOw0KPiArDQo+ICsgIHJl dHVybiAoVUlOVDMyKSAoKChVSU5UTikoKENtb3MweDM1IDw8IDgpICsgQ21vczB4MzQpIDw8IDE2 KSArDQo+IFNJWkVfMTZNQik7DQo+ICt9DQo+ICsNCj4gKw0KPiArU1RBVElDDQo+ICtVSU5UNjQN Cj4gK0dldFN5c3RlbU1lbW9yeVNpemVBYm92ZTRnYiAoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlO VDMyIFNpemU7DQo+ICsgIFVJTlROICBDbW9zSW5kZXg7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8g Q01PUyAweDViLTB4NWQgc3BlY2lmaWVzIHRoZSBzeXN0ZW0gbWVtb3J5IGFib3ZlIDRHQiBNQi4N Cj4gKyAgLy8gKiBDTU9TKDB4NWQpIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IHNpemUgYnl0ZQ0K PiArICAvLyAqIENNT1MoMHg1YykgaXMgdGhlIG1pZGRsZSBzaXplIGJ5dGUNCj4gKyAgLy8gKiBD TU9TKDB4NWIpIGlzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBzaXplIGJ5dGUNCj4gKyAgLy8gKiBU aGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gNjRrYiBjaHVua3MNCj4gKyAgLy8NCj4gKw0KPiArICBT aXplID0gMDsNCj4gKyAgZm9yIChDbW9zSW5kZXggPSAweDVkOyBDbW9zSW5kZXggPj0gMHg1Yjsg Q21vc0luZGV4LS0pIHsNCj4gKyAgICBTaXplID0gKFVJTlQzMikgKFNpemUgPDwgOCkgKyAoVUlO VDMyKSBDbW9zUmVhZDggKENtb3NJbmRleCk7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gTFNo aWZ0VTY0IChTaXplLCAxNik7DQo+ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFJldHVybiB0 aGUgaGlnaGVzdCBhZGRyZXNzIHRoYXQgRFhFIGNvdWxkIHBvc3NpYmx5IHVzZSwgcGx1cyBvbmUu DQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArVUlOVDY0DQo+ICtHZXRGaXJzdE5vbkFkZHJlc3MgKA0K PiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgRmlyc3RO b25BZGRyZXNzOw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICBQY2k2NEJhc2UsIFBjaTY0U2l6 ZTsNCj4gKw0KPiArICBGaXJzdE5vbkFkZHJlc3MgPSBCQVNFXzRHQiArIEdldFN5c3RlbU1lbW9y eVNpemVBYm92ZTRnYiAoKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBJZiBEWEUgaXMgMzItYml0 LCB0aGVuIHdlJ3JlIGRvbmU7IFBjaUJ1c0R4ZSB3aWxsIGRlZ3JhZGUgNjQtYml0IE1NSU8NCj4g KyAgLy8gcmVzb3VyY2VzIHRvIDMyLWJpdCBhbnl3YXkuIFNlZSBEZWdyYWRlUmVzb3VyY2UoKSBp bg0KPiArICAvLyAiUGNpUmVzb3VyY2VTdXBwb3J0LmMiLg0KPiArICAvLw0KPiArI2lmZGVmIE1E RV9DUFVfSUEzMg0KPiArICBpZiAoIUZlYXR1cmVQY2RHZXQgKFBjZER4ZUlwbFN3aXRjaFRvTG9u Z01vZGUpKSB7DQo+ICsgICAgcmV0dXJuIEZpcnN0Tm9uQWRkcmVzczsNCj4gKyAgfQ0KPiArI2Vu ZGlmDQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gT3RoZXJ3aXNlLCBpbiBvcmRlciB0byBjYWxjdWxh dGUgdGhlIGhpZ2hlc3QgYWRkcmVzcyBwbHVzIG9uZSwgd2UgbXVzdA0KPiArICAvLyBjb25zaWRl ciB0aGUgNjQtYml0IFBDSSBob3N0IGFwZXJ0dXJlIHRvby4gRmV0Y2ggdGhlIGRlZmF1bHQgc2l6 ZS4NCj4gKyAgLy8NCj4gKyAgUGNpNjRTaXplID0gUGNkR2V0NjQgKFBjZFBjaU1taW82NFNpemUp Ow0KPiArDQo+ICsgIGlmIChQY2k2NFNpemUgPT0gMCkgew0KPiArICAgIGlmIChtQm9vdE1vZGUg IT0gQk9PVF9PTl9TM19SRVNVTUUpIHsNCj4gKyAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIiVh OiBkaXNhYmxpbmcgNjQtYml0IFBDSSBob3N0IGFwZXJ0dXJlXG4iLA0KPiArICAgICAgICBfX0ZV TkNUSU9OX18pKTsNCj4gKyAgICAgIFBjZFNldDY0IChQY2RQY2lNbWlvNjRTaXplLCAwKTsNCj4g KyAgICB9DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIFRoZXJlJ3Mgbm90aGluZyBtb3JlIHRv IGRvOyB0aGUgYW1vdW50IG9mIG1lbW9yeSBhYm92ZSA0R0IgZnVsbHkNCj4gKyAgICAvLyBkZXRl cm1pbmVzIHRoZSBoaWdoZXN0IGFkZHJlc3MgcGx1cyBvbmUuIFRoZSBtZW1vcnkgaG90cGx1ZyBh cmVhIChzZWUNCj4gKyAgICAvLyBiZWxvdykgcGxheXMgbm8gcm9sZSBmb3IgdGhlIGZpcm13YXJl IGluIHRoaXMgY2FzZS4NCj4gKyAgICAvLw0KPiArICAgIHJldHVybiBGaXJzdE5vbkFkZHJlc3M7 DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBTZWFCSU9TIGFsaWducyBib3RoIGJvdW5k YXJpZXMgb2YgdGhlIDY0LWJpdCBQQ0kgaG9zdCBhcGVydHVyZSB0byAxR0IsIHNvDQo+ICsgIC8v IHRoYXQgdGhlIGhvc3QgY2FuIG1hcCBpdCB3aXRoIDFHQiBodWdlcGFnZXMuIEZvbGxvdyBzdWl0 Lg0KPiArICAvLw0KPiArICBQY2k2NEJhc2UgPSBBTElHTl9WQUxVRSAoRmlyc3ROb25BZGRyZXNz LCAoVUlOVDY0KVNJWkVfMUdCKTsNCj4gKyAgUGNpNjRTaXplID0gQUxJR05fVkFMVUUgKFBjaTY0 U2l6ZSwgKFVJTlQ2NClTSVpFXzFHQik7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gVGhlIDY0LWJp dCBQQ0kgaG9zdCBhcGVydHVyZSBzaG91bGQgYWxzbyBiZSAibmF0dXJhbGx5IiBhbGlnbmVkLiBU aGUNCj4gKyAgLy8gYWxpZ25tZW50IGlzIGRldGVybWluZWQgYnkgcm91bmRpbmcgdGhlIHNpemUg b2YgdGhlIGFwZXJ0dXJlIGRvd24gdG8gdGhlDQo+ICsgIC8vIG5leHQgc21hbGxlciBvciBlcXVh bCBwb3dlciBvZiB0d28uIFRoYXQgaXMsIGFsaWduIHRoZSBhcGVydHVyZSBieSB0aGUNCj4gKyAg Ly8gbGFyZ2VzdCBCQVIgc2l6ZSB0aGF0IGNhbiBmaXQgaW50byBpdC4NCj4gKyAgLy8NCj4gKyAg UGNpNjRCYXNlID0gQUxJR05fVkFMVUUgKFBjaTY0QmFzZSwgR2V0UG93ZXJPZlR3bzY0IChQY2k2 NFNpemUpKTsNCj4gKw0KPiArICBpZiAobUJvb3RNb2RlICE9IEJPT1RfT05fUzNfUkVTVU1FKSB7 DQo+ICsgICAgLy8NCj4gKyAgICAvLyBUaGUgY29yZSBQY2lIb3N0QnJpZGdlRHhlIGRyaXZlciB3 aWxsIGF1dG9tYXRpY2FsbHkgYWRkIHRoaXMgcmFuZ2UgdG8NCj4gKyAgICAvLyB0aGUgR0NEIG1l bW9yeSBzcGFjZSBtYXAgdGhyb3VnaCBvdXIgUGNpSG9zdEJyaWRnZUxpYiBpbnN0YW5jZTsgaGVy ZQ0KPiB3ZQ0KPiArICAgIC8vIG9ubHkgbmVlZCB0byBzZXQgdGhlIFBDRHMuDQo+ICsgICAgLy8N Cj4gKyAgICBQY2RTZXQ2NCAoUGNkUGNpTW1pbzY0QmFzZSwgUGNpNjRCYXNlKTsNCj4gKyAgICBQ Y2RTZXQ2NCAoUGNkUGNpTW1pbzY0U2l6ZSwgUGNpNjRTaXplKTsNCj4gKyAgICBERUJVRyAoKEVG SV9EX0lORk8sICIlYTogUGNpNjRCYXNlPTB4JUx4IFBjaTY0U2l6ZT0weCVMeFxuIiwNCj4gKyAg ICAgIF9fRlVOQ1RJT05fXywgUGNpNjRCYXNlLCBQY2k2NFNpemUpKTsNCj4gKyAgfQ0KPiArDQo+ ICsgIC8vDQo+ICsgIC8vIFRoZSB1c2VmdWwgYWRkcmVzcyBzcGFjZSBlbmRzIHdpdGggdGhlIDY0 LWJpdCBQQ0kgaG9zdCBhcGVydHVyZS4NCj4gKyAgLy8NCj4gKyAgRmlyc3ROb25BZGRyZXNzID0g UGNpNjRCYXNlICsgUGNpNjRTaXplOw0KPiArICByZXR1cm4gRmlyc3ROb25BZGRyZXNzOw0KPiAr fQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBJbml0aWFsaXplIHRoZSBtUGh5c01lbUFkZHJlc3NX aWR0aCB2YXJpYWJsZSwgYmFzZWQgb24gZ3Vlc3QgUkFNIHNpemUuDQo+ICsqKi8NCj4gK1ZPSUQN Cj4gK0FkZHJlc3NXaWR0aEluaXRpYWxpemF0aW9uICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7 DQo+ICsgIFVJTlQ2NCBGaXJzdE5vbkFkZHJlc3M7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQXMg Z3Vlc3QtcGh5c2ljYWwgbWVtb3J5IHNpemUgZ3Jvd3MsIHRoZSBwZXJtYW5lbnQgUEVJIFJBTQ0K PiByZXF1aXJlbWVudHMNCj4gKyAgLy8gYXJlIGRvbWluYXRlZCBieSB0aGUgaWRlbnRpdHktbWFw cGluZyBwYWdlIHRhYmxlcyBidWlsdCBieSB0aGUgRFhFIElQTC4NCj4gKyAgLy8gVGhlIERYTCBJ UEwga2V5cyBvZmYgb2YgdGhlIHBoeXNpY2FsIGFkZHJlc3MgYml0cyBhZHZlcnRpemVkIGluIHRo ZSBDUFUNCj4gKyAgLy8gSE9CLiBUbyBjb25zZXJ2ZSBtZW1vcnksIHdlIGNhbGN1bGF0ZSB0aGUg bWluaW11bSBhZGRyZXNzIHdpZHRoIGhlcmUuDQo+ICsgIC8vDQo+ICsgIEZpcnN0Tm9uQWRkcmVz cyAgICAgID0gR2V0Rmlyc3ROb25BZGRyZXNzICgpOw0KPiArICBtUGh5c01lbUFkZHJlc3NXaWR0 aCA9IChVSU5UOClIaWdoQml0U2V0NjQgKEZpcnN0Tm9uQWRkcmVzcyk7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gSWYgRmlyc3ROb25BZGRyZXNzIGlzIG5vdCBhbiBpbnRlZ3JhbCBwb3dlciBvZiB0 d28sIHRoZW4gd2UgbmVlZCBhbg0KPiArICAvLyBhZGRpdGlvbmFsIGJpdC4NCj4gKyAgLy8NCj4g KyAgaWYgKChGaXJzdE5vbkFkZHJlc3MgJiAoRmlyc3ROb25BZGRyZXNzIC0gMSkpICE9IDApIHsN Cj4gKyAgICArK21QaHlzTWVtQWRkcmVzc1dpZHRoOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gVGhlIG1pbmltdW0gYWRkcmVzcyB3aWR0aCBpcyAzNiAoY292ZXJzIHVwIHRvIGFuZCBl eGNsdWRpbmcgNjQgR0IsIHdoaWNoDQo+ICsgIC8vIGlzIHRoZSBtYXhpbXVtIGZvciBJYTMyICsg UEFFKS4gVGhlIHRoZW9yZXRpY2FsIGFyY2hpdGVjdHVyZSBtYXhpbXVtIGZvcg0KPiArICAvLyBY NjQgbG9uZyBtb2RlIGlzIDUyIGJpdHMsIGJ1dCB0aGUgRFhFIElQTCBjbGFtcHMgdGhhdCBkb3du IHRvIDQ4IGJpdHMuIFdlDQo+ICsgIC8vIGNhbiBzaW1wbHkgYXNzZXJ0IHRoYXQgaGVyZSwgc2lu Y2UgNDggYml0cyBhcmUgZ29vZCBlbm91Z2ggZm9yIDI1NiBUQi4NCj4gKyAgLy8NCj4gKyAgaWYg KG1QaHlzTWVtQWRkcmVzc1dpZHRoIDw9IDM2KSB7DQo+ICsgICAgbVBoeXNNZW1BZGRyZXNzV2lk dGggPSAzNjsNCj4gKyAgfQ0KPiArICBBU1NFUlQgKG1QaHlzTWVtQWRkcmVzc1dpZHRoIDw9IDQ4 KTsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgQ2FsY3VsYXRlIHRoZSBjYXAgZm9yIHRo ZSBwZXJtYW5lbnQgUEVJIG1lbW9yeS4NCj4gKyoqLw0KPiArU1RBVElDDQo+ICtVSU5UMzINCj4g K0dldFBlaU1lbW9yeUNhcCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBCT09MRUFO IFBhZ2UxR1N1cHBvcnQ7DQo+ICsgIFVJTlQzMiAgUmVnRWF4Ow0KPiArICBVSU5UMzIgIFJlZ0Vk eDsNCj4gKyAgVUlOVDMyICBQbWw0RW50cmllczsNCj4gKyAgVUlOVDMyICBQZHBFbnRyaWVzOw0K PiArICBVSU5UTiAgIFRvdGFsUGFnZXM7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSWYgRFhFIGlz IDMyLWJpdCwgdGhlbiBqdXN0IHJldHVybiB0aGUgdHJhZGl0aW9uYWwgNjQgTUIgY2FwLg0KPiAr ICAvLw0KPiArI2lmZGVmIE1ERV9DUFVfSUEzMg0KPiArICBpZiAoIUZlYXR1cmVQY2RHZXQgKFBj ZER4ZUlwbFN3aXRjaFRvTG9uZ01vZGUpKSB7DQo+ICsgICAgcmV0dXJuIFNJWkVfNjRNQjsNCj4g KyAgfQ0KPiArI2VuZGlmDQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gRGVwZW5kZW50IG9uIHBoeXNp Y2FsIGFkZHJlc3Mgd2lkdGgsIFBFSSBtZW1vcnkgYWxsb2NhdGlvbnMgY2FuIGJlDQo+ICsgIC8v IGRvbWluYXRlZCBieSB0aGUgcGFnZSB0YWJsZXMgYnVpbHQgZm9yIDY0LWJpdCBEWEUuIFNvIHdl IGtleSB0aGUgY2FwIG9mZg0KPiArICAvLyBvZiB0aG9zZS4gVGhlIGNvZGUgYmVsb3cgaXMgYmFz ZWQgb24gQ3JlYXRlSWRlbnRpdHlNYXBwaW5nUGFnZVRhYmxlcygpIGluDQo+ICsgIC8vICJNZGVN b2R1bGVQa2cvQ29yZS9EeGVJcGxQZWltL1g2NC9WaXJ0dWFsTWVtb3J5LmMiLg0KPiArICAvLw0K PiArICBQYWdlMUdTdXBwb3J0ID0gRkFMU0U7DQo+ICsgIGlmIChQY2RHZXRCb29sIChQY2RVc2Ux R1BhZ2VUYWJsZSkpIHsNCj4gKyAgICBBc21DcHVpZCAoMHg4MDAwMDAwMCwgJlJlZ0VheCwgTlVM TCwgTlVMTCwgTlVMTCk7DQo+ICsgICAgaWYgKFJlZ0VheCA+PSAweDgwMDAwMDAxKSB7DQo+ICsg ICAgICBBc21DcHVpZCAoMHg4MDAwMDAwMSwgTlVMTCwgTlVMTCwgTlVMTCwgJlJlZ0VkeCk7DQo+ ICsgICAgICBpZiAoKFJlZ0VkeCAmIEJJVDI2KSAhPSAwKSB7DQo+ICsgICAgICAgIFBhZ2UxR1N1 cHBvcnQgPSBUUlVFOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIGlm IChtUGh5c01lbUFkZHJlc3NXaWR0aCA8PSAzOSkgew0KPiArICAgIFBtbDRFbnRyaWVzID0gMTsN Cj4gKyAgICBQZHBFbnRyaWVzID0gMSA8PCAobVBoeXNNZW1BZGRyZXNzV2lkdGggLSAzMCk7DQo+ ICsgICAgQVNTRVJUIChQZHBFbnRyaWVzIDw9IDB4MjAwKTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAg ICBQbWw0RW50cmllcyA9IDEgPDwgKG1QaHlzTWVtQWRkcmVzc1dpZHRoIC0gMzkpOw0KPiArICAg IEFTU0VSVCAoUG1sNEVudHJpZXMgPD0gMHgyMDApOw0KPiArICAgIFBkcEVudHJpZXMgPSA1MTI7 DQo+ICsgIH0NCj4gKw0KPiArICBUb3RhbFBhZ2VzID0gUGFnZTFHU3VwcG9ydCA/IFBtbDRFbnRy aWVzICsgMSA6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBkcEVudHJpZXMg KyAxKSAqIFBtbDRFbnRyaWVzICsgMTsNCj4gKyAgQVNTRVJUIChUb3RhbFBhZ2VzIDw9IDB4NDAy MDEpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEFkZCA2NCBNQiBmb3IgbWlzY2VsbGFuZW91cyBh bGxvY2F0aW9ucy4gTm90ZSB0aGF0IGZvcg0KPiArICAvLyBtUGh5c01lbUFkZHJlc3NXaWR0aCB2 YWx1ZXMgY2xvc2UgdG8gMzYsIHRoZSBjYXAgd2lsbCBhY3R1YWxseSBiZQ0KPiArICAvLyBkb21p bmF0ZWQgYnkgdGhpcyBpbmNyZW1lbnQuDQo+ICsgIC8vDQo+ICsgIHJldHVybiAoVUlOVDMyKShF RklfUEFHRVNfVE9fU0laRSAoVG90YWxQYWdlcykgKyBTSVpFXzY0TUIpOw0KPiArfQ0KPiArDQo+ ICsNCj4gKy8qKg0KPiArICBQdWJsaXNoIFBFSSBjb3JlIG1lbW9yeQ0KPiArDQo+ICsgIEByZXR1 cm4gRUZJX1NVQ0NFU1MgICAgIFRoZSBQRUlNIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4NCj4g Kw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtQdWJsaXNoUGVpTWVtb3J5ICgNCj4gKyAgVk9J RA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlOw0KPiArICBVSU5U NjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZTsNCj4gKyAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICAgIExvd2VyTWVtb3J5U2l6ZTsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICAgIFBlaU1lbW9yeUNhcDsNCj4gKw0KPiArICBMb3dlck1lbW9yeVNpemUgPSBHZXRTeXN0 ZW1NZW1vcnlTaXplQmVsb3c0Z2IgKCk7DQo+ICsgIGlmIChGZWF0dXJlUGNkR2V0IChQY2RTbW1T bXJhbVJlcXVpcmUpKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBUU0VHIGlzIGNoaXBwZWQgZnJv bSB0aGUgZW5kIG9mIGxvdyBSQU0NCj4gKyAgICAvLw0KPiArICAgIExvd2VyTWVtb3J5U2l6ZSAt PSBtWDU4VHNlZ01ieXRlcyAqIFNJWkVfMU1COw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gSWYgUzMgaXMgc3VwcG9ydGVkLCB0aGVuIHRoZSBTMyBwZXJtYW5lbnQgUEVJIG1lbW9yeSBp cyBwbGFjZWQgbmV4dCwNCj4gKyAgLy8gZG93bndhcmRzLiBJdHMgc2l6ZSBpcyBwcmltYXJpbHkg ZGljdGF0ZWQgYnkgQ3B1TXBQZWkuIFRoZSBmb3JtdWxhIGJlbG93DQo+ICsgIC8vIGlzIGFuIGFw cHJveGltYXRpb24uDQo+ICsgIC8vDQo+ICsgIGlmIChtUzNTdXBwb3J0ZWQpIHsNCj4gKyAgICBt UzNBY3BpUmVzZXJ2ZWRNZW1vcnlTaXplID0gU0laRV81MTJLQiArDQo+ICsgICAgICBtTWF4Q3B1 Q291bnQgKg0KPiArICAgICAgUGNkR2V0MzIgKFBjZENwdUFwU3RhY2tTaXplKTsNCj4gKyAgICBt UzNBY3BpUmVzZXJ2ZWRNZW1vcnlCYXNlID0gTG93ZXJNZW1vcnlTaXplIC0NCj4gbVMzQWNwaVJl c2VydmVkTWVtb3J5U2l6ZTsNCj4gKyAgICBMb3dlck1lbW9yeVNpemUgPSBtUzNBY3BpUmVzZXJ2 ZWRNZW1vcnlCYXNlOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKG1Cb290TW9kZSA9PSBCT09UX09O X1MzX1JFU1VNRSkgew0KPiArICAgIE1lbW9yeUJhc2UgPSBtUzNBY3BpUmVzZXJ2ZWRNZW1vcnlC YXNlOw0KPiArICAgIE1lbW9yeVNpemUgPSBtUzNBY3BpUmVzZXJ2ZWRNZW1vcnlTaXplOw0KPiAr ICB9IGVsc2Ugew0KPiArICAgIFBlaU1lbW9yeUNhcCA9IEdldFBlaU1lbW9yeUNhcCAoKTsNCj4g KyAgICBERUJVRyAoKEVGSV9EX0lORk8sICIlYTogbVBoeXNNZW1BZGRyZXNzV2lkdGg9JWQNCj4g UGVpTWVtb3J5Q2FwPSV1IEtCXG4iLA0KPiArICAgICAgX19GVU5DVElPTl9fLCBtUGh5c01lbUFk ZHJlc3NXaWR0aCwgUGVpTWVtb3J5Q2FwID4+IDEwKSk7DQo+ICsNCj4gKyAgICAvLw0KPiArICAg IC8vIERldGVybWluZSB0aGUgcmFuZ2Ugb2YgbWVtb3J5IHRvIHVzZSBkdXJpbmcgUEVJDQo+ICsg ICAgLy8NCj4gKyAgICAvLyBUZWNobmljYWxseSB3ZSBjb3VsZCBsYXkgdGhlIHBlcm1hbmVudCBQ RUkgUkFNIG92ZXIgU0VDJ3MgdGVtcG9yYXJ5DQo+ICsgICAgLy8gZGVjb21wcmVzc2lvbiBhbmQg c2NyYXRjaCBidWZmZXIgZXZlbiBpZiAic2VjdXJlIFMzIiBpcyBuZWVkZWQsIHNpbmNlDQo+ICsg ICAgLy8gdGhlaXIgbGlmZXRpbWVzIGRvbid0IG92ZXJsYXAuIEhvd2V2ZXIsIFBlaUZ2SW5pdGlh bGl6YXRpb24oKSB3aWxsIGNvdmVyDQo+ICsgICAgLy8gUkFNIHVwIHRvIFBjZE92bWZEZWNvbXBy ZXNzaW9uU2NyYXRjaEVuZCB3aXRoIGFuDQo+IEVmaUFDUElNZW1vcnlOVlMgbWVtb3J5DQo+ICsg ICAgLy8gYWxsb2NhdGlvbiBIT0IsIGFuZCBvdGhlciBhbGxvY2F0aW9ucyBzZXJ2ZWQgZnJvbSB0 aGUgcGVybWFuZW50IFBFSSBSQU0NCj4gKyAgICAvLyBzaG91bGRuJ3Qgb3ZlcmxhcCB3aXRoIHRo YXQgSE9CLg0KPiArICAgIC8vDQo+ICsgICAgTWVtb3J5QmFzZSA9IG1TM1N1cHBvcnRlZCAmJiBG ZWF0dXJlUGNkR2V0IChQY2RTbW1TbXJhbVJlcXVpcmUpDQo+ID8NCj4gKyAgICAgIFBjZEdldDMy IChQY2RTaW1pY3NEZWNvbXByZXNzaW9uU2NyYXRjaEVuZCkgOg0KPiArICAgICAgUGNkR2V0MzIg KFBjZFNpbWljc0R4ZU1lbUZ2QmFzZSkgKyBQY2RHZXQzMg0KPiAoUGNkU2ltaWNzRHhlTWVtRnZT aXplKTsNCj4gKyAgICBNZW1vcnlTaXplID0gTG93ZXJNZW1vcnlTaXplIC0gTWVtb3J5QmFzZTsN Cj4gKyAgfQ0KPiArICBERUJVRygoRUZJX0RfSU5GTywgIk1lbW9yeUJhc2U9MHglbHggTWVtb3J5 U2l6ZT0weCVseFxuIiwNCj4gTWVtb3J5QmFzZSwgTWVtb3J5U2l6ZSkpOw0KPiArICAvLw0KPiAr ICAvLyBQdWJsaXNoIHRoaXMgbWVtb3J5IHRvIHRoZSBQRUkgQ29yZQ0KPiArICAvLw0KPiArICBT dGF0dXMgPSBQdWJsaXNoU3lzdGVtTWVtb3J5KE1lbW9yeUJhc2UsIE1lbW9yeVNpemUpOw0KPiAr ICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ ICt9DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFBlZm9ybSBNZW1vcnkgRGV0ZWN0aW9uIGZvciBR RU1VIC8gS1ZNDQo+ICsNCj4gKyoqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtRZW11SW5pdGlh bGl6ZVJhbSAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTG93ZXJNZW1vcnlTaXplOw0KPiArICBVSU5UNjQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVXBwZXJNZW1vcnlTaXplOw0KPiArICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclNpemU7DQo+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU21yYW1JbmRleDsNCj4gKyAgVUlOVDggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTbXJhbVJhbmdlczsNCj4gKyAgRUZJX1BFSV9IT0Jf UE9JTlRFUlMgICAgICAgICAgICAgICAgICBIb2I7DQo+ICsgIEVGSV9TTVJBTV9IT0JfREVTQ1JJ UFRPUl9CTE9DSyAgICAgICAgKlNtcmFtSG9iRGVzY3JpcHRvckJsb2NrOw0KPiArICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiArDQo+ICsgIERFQlVHICgo RUZJX0RfSU5GTywgIiVhIGNhbGxlZFxuIiwgX19GVU5DVElPTl9fKSk7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gRGV0ZXJtaW5lIHRvdGFsIG1lbW9yeSBzaXplIGF2YWlsYWJsZQ0KPiArICAvLw0K PiArICBMb3dlck1lbW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IgKCk7DQo+ ICsgIFVwcGVyTWVtb3J5U2l6ZSA9IEdldFN5c3RlbU1lbW9yeVNpemVBYm92ZTRnYiAoKTsNCj4g Kw0KPiArICBpZiAobUJvb3RNb2RlID09IEJPT1RfT05fUzNfUkVTVU1FKSB7DQo+ICsgICAgLy8N Cj4gKyAgICAvLyBDcmVhdGUgdGhlIGZvbGxvd2luZyBtZW1vcnkgSE9CIGFzIGFuIGV4Y2VwdGlv biBvbiB0aGUgUzMgYm9vdCBwYXRoLg0KPiArICAgIC8vDQo+ICsgICAgLy8gTm9ybWFsbHkgd2Un ZCBjcmVhdGUgbWVtb3J5IEhPQnMgb25seSBvbiB0aGUgbm9ybWFsIGJvb3QgcGF0aC4NCj4gSG93 ZXZlciwNCj4gKyAgICAvLyBDcHVNcFBlaSBzcGVjaWZpY2FsbHkgbmVlZHMgc3VjaCBhIGxvdy1t ZW1vcnkgSE9CIG9uIHRoZSBTMyBwYXRoIGFzDQo+ICsgICAgLy8gd2VsbCwgZm9yICJib3Jyb3dp bmciIGEgc3Vic2V0IG9mIGl0IHRlbXBvcmFyaWx5LCBmb3IgdGhlIEFQIHN0YXJ0dXANCj4gKyAg ICAvLyB2ZWN0b3IuDQo+ICsgICAgLy8NCj4gKyAgICAvLyBDcHVNcFBlaSBzYXZlcyB0aGUgb3Jp Z2luYWwgY29udGVudHMgb2YgdGhlIGJvcnJvd2VkIGFyZWEgaW4gcGVybWFuZW50DQo+ICsgICAg Ly8gUEVJIFJBTSwgaW4gYSBiYWNrdXAgYnVmZmVyIGFsbG9jYXRlZCB3aXRoIHRoZSBub3JtYWwg UEVJIHNlcnZpY2VzLg0KPiArICAgIC8vIENwdU1wUGVpIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBj b250ZW50cyAoInJldHVybnMiIHRoZSBib3Jyb3dlZCBhcmVhKSBhdA0KPiArICAgIC8vIEVuZC1v Zi1QRUkuIEVuZC1vZi1QRUkgaW4gdHVybiBpcyBlbWl0dGVkIGJ5IFMzUmVzdW1lMlBlaSBiZWZv cmUNCj4gKyAgICAvLyB0cmFuc2ZlcnJpbmcgY29udHJvbCB0byB0aGUgT1MncyB3YWtldXAgdmVj dG9yIGluIHRoZSBGQUNTLg0KPiArICAgIC8vDQo+ICsgICAgLy8gV2UgZXhwZWN0IGFueSBvdGhl ciBQRUlNcyB0aGF0ICJib3Jyb3ciIG1lbW9yeSBzaW1pbGFybHkgdG8gQ3B1TXBQZWkNCj4gdG8N Cj4gKyAgICAvLyByZXN0b3JlIHRoZSBvcmlnaW5hbCBjb250ZW50cy4gRnVydGhlcm1vcmUsIHdl IGV4cGVjdCBhbGwgc3VjaCBQRUlNcw0KPiArICAgIC8vIChDcHVNcFBlaSBpbmNsdWRlZCkgdG8g Y2xhaW0gdGhlIGJvcnJvd2VkIGFyZWFzIGJ5IHByb2R1Y2luZyBtZW1vcnkNCj4gKyAgICAvLyBh bGxvY2F0aW9uIEhPQnMsIGFuZCB0byBob25vciBwcmVleGlzdGVudCBtZW1vcnkgYWxsb2NhdGlv biBIT0JzIHdoZW4NCj4gKyAgICAvLyBsb29raW5nIGZvciBhbiBhcmVhIHRvIGJvcnJvdy4NCj4g KyAgICAvLw0KPiArICAgIEFkZE1lbW9yeVJhbmdlSG9iICgwLCBCQVNFXzUxMktCICsgQkFTRV8x MjhLQik7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBDcmVhdGUgbWVtb3J5 IEhPQnMNCj4gKyAgICAvLw0KPiArICAgIEFkZE1lbW9yeVJhbmdlSG9iICgwLCBCQVNFXzUxMktC ICsgQkFTRV8xMjhLQik7DQo+ICsNCj4gKyAgICBpZiAoRmVhdHVyZVBjZEdldCAoUGNkU21tU21y YW1SZXF1aXJlKSkgew0KPiArICAgICAgVUlOVDMyIFRzZWdTaXplOw0KPiArDQo+ICsgICAgICBU c2VnU2l6ZSA9IG1YNThUc2VnTWJ5dGVzICogU0laRV8xTUI7DQo+ICsgICAgICBBZGRNZW1vcnlS YW5nZUhvYiAoQkFTRV8xTUIsIExvd2VyTWVtb3J5U2l6ZSAtIFRzZWdTaXplKTsNCj4gKyAgICAg IEFkZFJlc2VydmVkTWVtb3J5QmFzZVNpemVIb2IgKExvd2VyTWVtb3J5U2l6ZSAtIFRzZWdTaXpl LCBUc2VnU2l6ZSwNCj4gKyAgICAgICAgVFJVRSk7DQo+ICsNCj4gKwkgIEJ1ZmZlclNpemUgPSBz aXplb2YoRUZJX1NNUkFNX0hPQl9ERVNDUklQVE9SX0JMT0NLKTsNCj4gKwkgIFNtcmFtUmFuZ2Vz ID0gMTsNCj4gKw0KPiArICAgICAgSG9iLlJhdyA9IEJ1aWxkR3VpZEhvYigNCj4gKyAgICAgICAg ICAmZ0VmaVNtbVBlaVNtcmFtTWVtb3J5UmVzZXJ2ZUd1aWQsDQo+ICsgICAgICAgICAgQnVmZmVy U2l6ZQ0KPiArICAgICAgKTsNCj4gKyAgICAgIEFTU0VSVChIb2IuUmF3KTsNCj4gKw0KPiArICAg ICAgU21yYW1Ib2JEZXNjcmlwdG9yQmxvY2sgPSAoRUZJX1NNUkFNX0hPQl9ERVNDUklQVE9SX0JM T0NLDQo+ICopKEhvYi5SYXcpOw0KPiArICAgICAgU21yYW1Ib2JEZXNjcmlwdG9yQmxvY2stPk51 bWJlck9mU21tUmVzZXJ2ZWRSZWdpb25zID0NCj4gU21yYW1SYW5nZXM7DQo+ICsNCj4gKyAgICAg IFNtcmFtSW5kZXggPSAwOw0KPiArICAgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgU21yYW1S YW5nZXM7IEluZGV4KyspIHsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gVGhpcyBpcyBh biBTTVJBTSByYW5nZSwgY3JlYXRlIGFuIFNNUkFNIGRlc2NyaXB0b3INCj4gKyAgICAgICAgLy8N Cj4gKyAgICAgICAgU21yYW1Ib2JEZXNjcmlwdG9yQmxvY2stPkRlc2NyaXB0b3JbU21yYW1JbmRl eF0uUGh5c2ljYWxTdGFydCA9DQo+IExvd2VyTWVtb3J5U2l6ZSAtIFRzZWdTaXplOw0KPiArICAg ICAgICBTbXJhbUhvYkRlc2NyaXB0b3JCbG9jay0+RGVzY3JpcHRvcltTbXJhbUluZGV4XS5DcHVT dGFydCA9DQo+IExvd2VyTWVtb3J5U2l6ZSAtIFRzZWdTaXplOw0KPiArICAgICAgICBTbXJhbUhv YkRlc2NyaXB0b3JCbG9jay0+RGVzY3JpcHRvcltTbXJhbUluZGV4XS5QaHlzaWNhbFNpemUgPQ0K PiBUc2VnU2l6ZTsNCj4gKyAgICAgICAgU21yYW1Ib2JEZXNjcmlwdG9yQmxvY2stPkRlc2NyaXB0 b3JbU21yYW1JbmRleF0uUmVnaW9uU3RhdGUgPQ0KPiBFRklfU01SQU1fQ0xPU0VEIHwgRUZJX0NB Q0hFQUJMRTsNCj4gKyAgICAgICAgU21yYW1JbmRleCsrOw0KPiArICAgICAgfQ0KPiArDQo+ICsg ICAgfSBlbHNlIHsNCj4gKyAgICAgIEFkZE1lbW9yeVJhbmdlSG9iIChCQVNFXzFNQiwgTG93ZXJN ZW1vcnlTaXplKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIElmIFFFTVUg cHJlc2VudHMgYW4gRTgyMCBtYXAsIHRoZW4gY3JlYXRlIG1lbW9yeSBIT0JzIGZvciB0aGUgPj00 R0INCj4gUkFNDQo+ICsgICAgLy8gZW50cmllcy4gT3RoZXJ3aXNlLCBjcmVhdGUgYSBzaW5nbGUg bWVtb3J5IEhPQiB3aXRoIHRoZSBmbGF0ID49NEdCDQo+ICsgICAgLy8gbWVtb3J5IHNpemUgcmVh ZCBmcm9tIHRoZSBDTU9TLg0KPiArICAgIC8vDQo+ICsgICAgaWYgKFVwcGVyTWVtb3J5U2l6ZSAh PSAwKSB7DQo+ICsgICAgICBBZGRNZW1vcnlCYXNlU2l6ZUhvYiAoQkFTRV80R0IsIFVwcGVyTWVt b3J5U2l6ZSk7DQo+ICsgICAgfQ0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBQdWJs aXNoIHN5c3RlbSBSQU0gYW5kIHJlc2VydmUgbWVtb3J5IHJlZ2lvbnMNCj4gKw0KPiArKiovDQo+ ICtWT0lEDQo+ICtJbml0aWFsaXplUmFtUmVnaW9ucyAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiAr ew0KPiArICBRZW11SW5pdGlhbGl6ZVJhbSAoKTsNCj4gKw0KPiArICBpZiAobVMzU3VwcG9ydGVk ICYmIG1Cb290TW9kZSAhPSBCT09UX09OX1MzX1JFU1VNRSkgew0KPiArICAgIC8vDQo+ICsgICAg Ly8gVGhpcyBpcyB0aGUgbWVtb3J5IHJhbmdlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBQRUkgb24g UzMgcmVzdW1lDQo+ICsgICAgLy8NCj4gKyAgICBCdWlsZE1lbW9yeUFsbG9jYXRpb25Ib2IgKA0K PiArICAgICAgbVMzQWNwaVJlc2VydmVkTWVtb3J5QmFzZSwNCj4gKyAgICAgIG1TM0FjcGlSZXNl cnZlZE1lbW9yeVNpemUsDQo+ICsgICAgICBFZmlBQ1BJTWVtb3J5TlZTDQo+ICsgICAgICApOw0K PiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBDb3ZlciB0aGUgaW5pdGlhbCBSQU0gYXJlYSB1c2Vk IGFzIHN0YWNrIGFuZCB0ZW1wb3JhcnkgUEVJIGhlYXAuDQo+ICsgICAgLy8NCj4gKyAgICAvLyBU aGlzIGlzIHJlc2VydmVkIGFzIEFDUEkgTlZTIHNvIGl0IGNhbiBiZSB1c2VkIG9uIFMzIHJlc3Vt ZS4NCj4gKyAgICAvLw0KPiArICAgIEJ1aWxkTWVtb3J5QWxsb2NhdGlvbkhvYiAoDQo+ICsgICAg ICBQY2RHZXQzMiAoUGNkU2ltaWNzU2VjUGVpVGVtcFJhbUJhc2UpLA0KPiArICAgICAgUGNkR2V0 MzIgKFBjZFNpbWljc1NlY1BlaVRlbXBSYW1TaXplKSwNCj4gKyAgICAgIEVmaUFDUElNZW1vcnlO VlMNCj4gKyAgICAgICk7DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIFNFQyBzdG9yZXMgaXRz IHRhYmxlIG9mIEdVSURlZCBzZWN0aW9uIGhhbmRsZXJzIGhlcmUuDQo+ICsgICAgLy8NCj4gKyAg ICBCdWlsZE1lbW9yeUFsbG9jYXRpb25Ib2IgKA0KPiArICAgICAgUGNkR2V0NjQgKFBjZEd1aWRl ZEV4dHJhY3RIYW5kbGVyVGFibGVBZGRyZXNzKSwNCj4gKyAgICAgIFBjZEdldDMyIChQY2RHdWlk ZWRFeHRyYWN0SGFuZGxlclRhYmxlU2l6ZSksDQo+ICsgICAgICBFZmlBQ1BJTWVtb3J5TlZTDQo+ ICsgICAgICApOw0KPiArDQo+ICsgIH0NCj4gKw0KPiArICBpZiAobUJvb3RNb2RlICE9IEJPT1Rf T05fUzNfUkVTVU1FKSB7DQo+ICsgICAgaWYgKCFGZWF0dXJlUGNkR2V0IChQY2RTbW1TbXJhbVJl cXVpcmUpKSB7DQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gUmVzZXJ2ZSB0aGUgbG9jayBib3gg c3RvcmFnZSBhcmVhDQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gU2luY2UgdGhpcyBtZW1vcnkg cmFuZ2Ugd2lsbCBiZSB1c2VkIG9uIFMzIHJlc3VtZSwgaXQgbXVzdCBiZQ0KPiArICAgICAgLy8g cmVzZXJ2ZWQgYXMgQUNQSSBOVlMuDQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gSWYgUzMgaXMg dW5zdXBwb3J0ZWQsIHRoZW4gdmFyaW91cyBkcml2ZXJzIG1pZ2h0IHN0aWxsIHdyaXRlIHRvIHRo ZQ0KPiArICAgICAgLy8gTG9ja0JveCBhcmVhLiBXZSBvdWdodCB0byBwcmV2ZW50IERYRSBmcm9t IHNlcnZpbmcgYWxsb2NhdGlvbiByZXF1ZXN0cw0KPiArICAgICAgLy8gc3VjaCB0aGF0IHRoZXkg d291bGQgb3ZlcmxhcCB0aGUgTG9ja0JveCBzdG9yYWdlLg0KPiArICAgICAgLy8NCj4gKyAgICAg IFplcm9NZW0gKA0KPiArICAgICAgICAoVk9JRCopKFVJTlROKSBQY2RHZXQzMiAoUGNkU2ltaWNz TG9ja0JveFN0b3JhZ2VCYXNlKSwNCj4gKyAgICAgICAgKFVJTlROKSBQY2RHZXQzMiAoUGNkU2lt aWNzTG9ja0JveFN0b3JhZ2VTaXplKQ0KPiArICAgICAgICApOw0KPiArICAgICAgQnVpbGRNZW1v cnlBbGxvY2F0aW9uSG9iICgNCj4gKyAgICAgICAgKEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5U TikgUGNkR2V0MzINCj4gKFBjZFNpbWljc0xvY2tCb3hTdG9yYWdlQmFzZSksDQo+ICsgICAgICAg IChVSU5UNjQpKFVJTlROKSBQY2RHZXQzMiAoUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VTaXplKSwN Cj4gKyAgICAgICAgbVMzU3VwcG9ydGVkID8gRWZpQUNQSU1lbW9yeU5WUyA6IEVmaUJvb3RTZXJ2 aWNlc0RhdGENCj4gKyAgICAgICAgKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoRmVhdHVy ZVBjZEdldCAoUGNkU21tU21yYW1SZXF1aXJlKSkgew0KPiArICAgICAgVUlOVDMyIFRzZWdTaXpl Ow0KPiArDQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gTWFrZSBzdXJlIHRoZSBUU0VHIGFyZWEg dGhhdCB3ZSByZXBvcnRlZCBhcyBhIHJlc2VydmVkIG1lbW9yeQ0KPiByZXNvdXJjZQ0KPiArICAg ICAgLy8gY2Fubm90IGJlIHVzZWQgZm9yIHJlc2VydmVkIG1lbW9yeSBhbGxvY2F0aW9ucy4NCj4g KyAgICAgIC8vDQo+ICsgICAgICBUc2VnU2l6ZSA9IG1YNThUc2VnTWJ5dGVzICogU0laRV8xTUI7 DQo+ICsgICAgICBCdWlsZE1lbW9yeUFsbG9jYXRpb25Ib2IgKA0KPiArICAgICAgICBHZXRTeXN0 ZW1NZW1vcnlTaXplQmVsb3c0Z2IoKSAtIFRzZWdTaXplLA0KPiArICAgICAgICBUc2VnU2l6ZSwN Cj4gKyAgICAgICAgRWZpUmVzZXJ2ZWRNZW1vcnlUeXBlDQo+ICsgICAgICAgICk7DQo+ICsgICAg fQ0KPiArICB9DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmU2NGJkYzdjNTYNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZv cm0uYw0KPiBAQCAtMCwwICsxLDYzMSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIENvcHlyaWdodCAo YykgMjAwNiAtIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDExLCBBbmRyZWkgV2Fya2VudGluIDxhbmRyZWl3QG1v dG9yb2xhLmNvbT4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKy8vDQo+ICsvLyBUaGUgcGFja2FnZSBsZXZlbCBo ZWFkZXIgZmlsZXMgdGhpcyBtb2R1bGUgdXNlcw0KPiArLy8NCj4gKyNpbmNsdWRlIDxQaVBlaS5o Pg0KPiArDQo+ICsvLw0KPiArLy8gVGhlIExpYnJhcnkgY2xhc3NlcyB0aGlzIG1vZHVsZSBjb25z dW1lcw0KPiArLy8NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICsjaW5jbHVk ZSA8TGlicmFyeS9Ib2JMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9QY2RMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BjaUxpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvUGVpbUVudHJ5UG9pbnQuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaVNl cnZpY2VzTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9SZXNvdXJjZVB1YmxpY2F0aW9uTGli Lmg+DQo+ICsjaW5jbHVkZSA8R3VpZC9NZW1vcnlUeXBlSW5mb3JtYXRpb24uaD4NCj4gKyNpbmNs dWRlIDxQcGkvTWFzdGVyQm9vdE1vZGUuaD4NCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L1BjaTIyLmg+DQo+ICsjaW5jbHVkZSA8U2ltaWNzUGxhdGZvcm1zLmg+DQo+ICsNCj4gKyNpbmNs dWRlICJQbGF0Zm9ybS5oIg0KPiArI2luY2x1ZGUgIkNtb3MuaCINCj4gKw0KPiArRUZJX01FTU9S WV9UWVBFX0lORk9STUFUSU9OIG1EZWZhdWx0TWVtb3J5VHlwZUluZm9ybWF0aW9uW10gPSB7DQo+ ICsgIHsgRWZpQUNQSU1lbW9yeU5WUywgICAgICAgMHgwMDQgfSwNCj4gKyAgeyBFZmlBQ1BJUmVj bGFpbU1lbW9yeSwgICAweDAwOCB9LA0KPiArICB7IEVmaVJlc2VydmVkTWVtb3J5VHlwZSwgIDB4 MDA0IH0sDQo+ICsgIHsgRWZpUnVudGltZVNlcnZpY2VzRGF0YSwgMHgwMjQgfSwNCj4gKyAgeyBF ZmlSdW50aW1lU2VydmljZXNDb2RlLCAweDAzMCB9LA0KPiArICB7IEVmaUJvb3RTZXJ2aWNlc0Nv ZGUsICAgIDB4MTgwIH0sDQo+ICsgIHsgRWZpQm9vdFNlcnZpY2VzRGF0YSwgICAgMHhGMDAgfSwN Cj4gKyAgeyBFZmlNYXhNZW1vcnlUeXBlLCAgICAgICAweDAwMCB9DQo+ICt9Ow0KPiArDQo+ICsN Cj4gK0VGSV9QRUlfUFBJX0RFU0NSSVBUT1IgICBtUHBpQm9vdE1vZGVbXSA9IHsNCj4gKyAgew0K PiArICAgIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1JfUFBJIHwNCj4gRUZJX1BFSV9QUElfREVTQ1JJ UFRPUl9URVJNSU5BVEVfTElTVCwNCj4gKyAgICAmZ0VmaVBlaU1hc3RlckJvb3RNb2RlUHBpR3Vp ZCwNCj4gKyAgICBOVUxMDQo+ICsgIH0NCj4gK307DQo+ICsNCj4gKw0KPiArVUlOVDE2IG1Ib3N0 QnJpZGdlRGV2SWQ7DQo+ICsNCj4gK0VGSV9CT09UX01PREUgbUJvb3RNb2RlID0gQk9PVF9XSVRI X0ZVTExfQ09ORklHVVJBVElPTjsNCj4gKw0KPiArQk9PTEVBTiBtUzNTdXBwb3J0ZWQgPSBGQUxT RTsNCj4gKw0KPiArVUlOVDMyIG1NYXhDcHVDb3VudDsNCj4gKw0KPiArVk9JRA0KPiArQWRkSW9N ZW1vcnlCYXNlU2l6ZUhvYiAoDQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1v cnlCYXNlLA0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KPiAr ICApDQo+ICt7DQo+ICsgIEJ1aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9iICgNCj4gKyAgICBFRklf UkVTT1VSQ0VfTUVNT1JZX01BUFBFRF9JTywNCj4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJV VEVfUFJFU0VOVCAgICAgfA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9JTklUSUFM SVpFRCB8DQo+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1VOQ0FDSEVBQkxFIHwNCj4g KyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfVEVTVEVELA0KPiArICAgIE1lbW9yeUJhc2Us DQo+ICsgICAgTWVtb3J5U2l6ZQ0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK0Fk ZFJlc2VydmVkTWVtb3J5QmFzZVNpemVIb2IgKA0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAg ICAgICAgTWVtb3J5QmFzZSwNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgIE1lbW9y eVNpemUsDQo+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBDYWNoZWFibGUNCj4gKyAg KQ0KPiArew0KPiArICBCdWlsZFJlc291cmNlRGVzY3JpcHRvckhvYiAoDQo+ICsgICAgRUZJX1JF U09VUkNFX01FTU9SWV9SRVNFUlZFRCwNCj4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVf UFJFU0VOVCAgICAgfA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9JTklUSUFMSVpF RCB8DQo+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1VOQ0FDSEVBQkxFIHwNCj4gKyAg ICAgIChDYWNoZWFibGUgPw0KPiArICAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVf Q09NQklORUFCTEUgfA0KPiArICAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVfVEhS T1VHSF9DQUNIRUFCTEUgfA0KPiArICAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVf QkFDS19DQUNIRUFCTEUgOg0KPiArICAgICAgIDANCj4gKyAgICAgICApIHwNCj4gKyAgICAgIEVG SV9SRVNPVVJDRV9BVFRSSUJVVEVfVEVTVEVELA0KPiArICAgIE1lbW9yeUJhc2UsDQo+ICsgICAg TWVtb3J5U2l6ZQ0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK0FkZElvTWVtb3J5 UmFuZ2VIb2IgKA0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwN Cj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUxpbWl0DQo+ICsgICkNCj4g K3sNCj4gKyAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoTWVtb3J5QmFzZSwgKFVJTlQ2NCkoTWVt b3J5TGltaXQgLQ0KPiBNZW1vcnlCYXNlKSk7DQo+ICt9DQo+ICsNCj4gKw0KPiArVk9JRA0KPiAr QWRkTWVtb3J5QmFzZVNpemVIb2IgKA0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAg TWVtb3J5QmFzZSwNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeVNpemUN Cj4gKyAgKQ0KPiArew0KPiArICBCdWlsZFJlc291cmNlRGVzY3JpcHRvckhvYiAoDQo+ICsgICAg RUZJX1JFU09VUkNFX1NZU1RFTV9NRU1PUlksDQo+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklC VVRFX1BSRVNFTlQgfA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9JTklUSUFMSVpF RCB8DQo+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1VOQ0FDSEVBQkxFIHwNCj4gKyAg ICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVfQ09NQklORUFCTEUgfA0KPiArICAgICAg RUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9USFJPVUdIX0NBQ0hFQUJMRSB8DQo+ICsgICAg ICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0JBQ0tfQ0FDSEVBQkxFIHwNCj4gKyAgICAg IEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfVEVTVEVELA0KPiArICAgIE1lbW9yeUJhc2UsDQo+ICsg ICAgTWVtb3J5U2l6ZQ0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gKw0KPiArVk9JRA0KPiArQWRk TWVtb3J5UmFuZ2VIb2IgKA0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5 QmFzZSwNCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUxpbWl0DQo+ICsg ICkNCj4gK3sNCj4gKyAgQWRkTWVtb3J5QmFzZVNpemVIb2IgKE1lbW9yeUJhc2UsIChVSU5UNjQp KE1lbW9yeUxpbWl0IC0NCj4gTWVtb3J5QmFzZSkpOw0KPiArfQ0KPiArDQo+ICsNCj4gK1ZPSUQN Cj4gK0FkZFVudGVzdGVkTWVtb3J5QmFzZVNpemVIb2IgKA0KPiArICBFRklfUEhZU0lDQUxfQURE UkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAg IE1lbW9yeVNpemUNCj4gKyAgKQ0KPiArew0KPiArICBCdWlsZFJlc291cmNlRGVzY3JpcHRvckhv YiAoDQo+ICsgICAgRUZJX1JFU09VUkNFX1NZU1RFTV9NRU1PUlksDQo+ICsgICAgICBFRklfUkVT T1VSQ0VfQVRUUklCVVRFX1BSRVNFTlQgfA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVU RV9JTklUSUFMSVpFRCB8DQo+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1VOQ0FDSEVB QkxFIHwNCj4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVfQ09NQklORUFCTEUg fA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9USFJPVUdIX0NBQ0hFQUJM RSB8DQo+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0JBQ0tfQ0FDSEVBQkxF LA0KPiArICAgIE1lbW9yeUJhc2UsDQo+ICsgICAgTWVtb3J5U2l6ZQ0KPiArICAgICk7DQo+ICt9 DQo+ICsNCj4gKw0KPiArVk9JRA0KPiArQWRkVW50ZXN0ZWRNZW1vcnlSYW5nZUhvYiAoDQo+ICsg IEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiArICBFRklfUEhZU0lD QUxfQUREUkVTUyAgICAgICAgTWVtb3J5TGltaXQNCj4gKyAgKQ0KPiArew0KPiArICBBZGRVbnRl c3RlZE1lbW9yeUJhc2VTaXplSG9iIChNZW1vcnlCYXNlLCAoVUlOVDY0KShNZW1vcnlMaW1pdCAt DQo+IE1lbW9yeUJhc2UpKTsNCj4gK30NCj4gKw0KPiArVk9JRA0KPiArQWRkRmxhc2hEZXZpY2VS YW5nZSAoDQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiAr ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KPiArICApDQo+ICt7DQo+ ICsgIEJ1aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9iICgNCj4gKyAgICBFRklfUkVTT1VSQ0VfRklS TVdBUkVfREVWSUNFLA0KPiArICAgIChFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1BSRVNFTlQgICAg fA0KPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9JTklUSUFMSVpFRCB8DQo+ICsgICAg ICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1VOQ0FDSEVBQkxFKSwNCj4gKyAgICBNZW1vcnlCYXNl LA0KPiArICAgIE1lbW9yeVNpemUNCj4gKyAgICApOw0KPiArDQo+ICsgIEJ1aWxkTWVtb3J5QWxs b2NhdGlvbkhvYiAoDQo+ICsgICAgTWVtb3J5QmFzZSwNCj4gKyAgICBNZW1vcnlTaXplLA0KPiAr ICAgIEVmaU1lbW9yeU1hcHBlZElPDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArVk9JRA0KPiAr TWVtTWFwSW5pdGlhbGl6YXRpb24gKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlO VDY0IFBjaUlvQmFzZTsNCj4gKyAgVUlOVDY0IFBjaUlvU2l6ZTsNCj4gKw0KPiArICBVSU5UMzIg IFRvcE9mTG93UmFtOw0KPiArICBVSU5UNjQgIFBjaUV4QmFyQmFzZTsNCj4gKyAgVUlOVDMyICBQ Y2lCYXNlOw0KPiArICBVSU5UMzIgIFBjaVNpemU7DQo+ICsNCj4gKyAgUGNpSW9CYXNlID0gMHhD MDAwOw0KPiArICBQY2lJb1NpemUgPSAweDQwMDA7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ3Jl YXRlIE1lbW9yeSBUeXBlIEluZm9ybWF0aW9uIEhPQg0KPiArICAvLw0KPiArICBCdWlsZEd1aWRE YXRhSG9iICgNCj4gKyAgICAmZ0VmaU1lbW9yeVR5cGVJbmZvcm1hdGlvbkd1aWQsDQo+ICsgICAg bURlZmF1bHRNZW1vcnlUeXBlSW5mb3JtYXRpb24sDQo+ICsgICAgc2l6ZW9mKG1EZWZhdWx0TWVt b3J5VHlwZUluZm9ybWF0aW9uKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gVmlk ZW8gbWVtb3J5ICsgTGVnYWN5IEJJT1MgcmVnaW9uDQo+ICsgIC8vDQo+ICsgIEFkZElvTWVtb3J5 UmFuZ2VIb2IgKDB4MEEwMDAwLCBCQVNFXzFNQik7DQo+ICsNCj4gKyAgVG9wT2ZMb3dSYW0gPSBH ZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IgKCk7DQo+ICsgIFBjaUV4QmFyQmFzZSA9IDA7DQo+ ICsgIGlmIChtSG9zdEJyaWRnZURldklkID09IElOVEVMX0lDSDEwX0RFVklDRV9JRCkgew0KPiAr ICAgIC8vDQo+ICsgICAgLy8gVGhlIE1NQ09ORklHIGFyZWEgaXMgZXhwZWN0ZWQgdG8gZmFsbCBi ZXR3ZWVuIHRoZSB0b3Agb2YgbG93IFJBTSBhbmQNCj4gKyAgICAvLyB0aGUgYmFzZSBvZiB0aGUg MzItYml0IFBDSSBob3N0IGFwZXJ0dXJlLg0KPiArICAgIC8vDQo+ICsgICAgUGNpRXhCYXJCYXNl ID0gRml4ZWRQY2RHZXQ2NCAoUGNkUGNpRXhwcmVzc0Jhc2VBZGRyZXNzKTsNCj4gKyAgICBBU1NF UlQgKFRvcE9mTG93UmFtIDw9IFBjaUV4QmFyQmFzZSk7DQo+ICsgICAgQVNTRVJUIChQY2lFeEJh ckJhc2UgPD0gTUFYX1VJTlQzMiAtIFNJWkVfMjU2TUIpOw0KPiArICAgIFBjaUJhc2UgPSAoVUlO VDMyKShQY2lFeEJhckJhc2UgKyBTSVpFXzI1Nk1CKTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBQ Y2lCYXNlID0gKFRvcE9mTG93UmFtIDwgQkFTRV8yR0IpID8gQkFTRV8yR0IgOiBUb3BPZkxvd1Jh bTsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIGFkZHJlc3MgICAgICAgcHVycG9zZSAg IHNpemUNCj4gKyAgLy8gLS0tLS0tLS0tLS0tICAtLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiArICAvLyAweDAwMDAwMDAwICAgIFRvcE9mTG93UmFtICAgMHhERjAwMDAwMA0K PiArICAvLyAweERGMDAwMDAwICAgIFRzZWcrVU1BICAgICAgMHgwMTAwMDAwMA0KPiArICAvLyAw eEUwMDAwMDAwICAgIFBjaUV4QmFyQmFzZSAgMHgxMDAwMDAwMA0KPiArICAvLyAweEYwMDAwMDAw ICAgIFBjaUJhc2UgICAgICAgMHgwQzAwMDAwMA0KPiArICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsgIC8vIG1heCh0b3AsIDJnKSAgUENJ IE1NSU8gIDB4RkMwMDAwMDAgLSBtYXgodG9wLCAyZykNCj4gKyAgLy8gMHhGQzAwMDAwMCAgICBn YXAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NCBNQg0KPiArICAvLyAweEZFQzAwMDAwICAg IElPLUFQSUMgICAgICAgICAgICAgICAgICAgICAgICA0IEtCDQo+ICsgIC8vIDB4RkVDMDEwMDAg ICAgZ2FwICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjAgS0INCj4gKyAgLy8gMHhGRUQwMDAw MCAgICBIUEVUICAgICAgICAgICAgICAgICAgICAgICAgICAgMSBLQg0KPiArICAvLyAweEZFRDAw NDAwICAgIGdhcCAgICAgICAgICAgICAgICAgICAgICAgICAgMTExIEtCDQo+ICsgIC8vIDB4RkVE MUMwMDAgICAgZ2FwIChQSUlYNCkgLyBSQ1JCIChJQ0g5KSAgICAgMTYgS0INCj4gKyAgLy8gMHhG RUQyMDAwMCAgICBnYXAgICAgICAgICAgICAgICAgICAgICAgICAgIDg5NiBLQg0KPiArICAvLyAw eEZFRTAwMDAwICAgIExBUElDICAgICAgICAgICAgICAgICAgICAgICAgICAxIE1CDQo+ICsgIC8v DQo+ICsgIFBjaVNpemUgPSAweEZDMDAwMDAwIC0gUGNpQmFzZTsNCj4gKyAgQWRkSW9NZW1vcnlC YXNlU2l6ZUhvYiAoUGNpQmFzZSwgUGNpU2l6ZSk7DQo+ICsgIFBjZFNldDY0IChQY2RQY2lNbWlv MzJCYXNlLCBQY2lCYXNlKTsNCj4gKyAgUGNkU2V0NjQgKFBjZFBjaU1taW8zMlNpemUsIFBjaVNp emUpOw0KPiArICBBZGRJb01lbW9yeUJhc2VTaXplSG9iICgweEZFQzAwMDAwLCBTSVpFXzRLQik7 DQo+ICsgIEFkZElvTWVtb3J5QmFzZVNpemVIb2IgKDB4RkVEMDAwMDAsIFNJWkVfMUtCKTsNCj4g KyAgaWYgKG1Ib3N0QnJpZGdlRGV2SWQgPT0gSU5URUxfSUNIMTBfREVWSUNFX0lEKSB7DQo+ICsg ICAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoSUNIMTBfUk9PVF9DT01QTEVYX0JBU0UsIFNJWkVf MTZLQik7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBOb3RlOiB0aGVyZSBzaG91bGQgYmUgYW4NCj4g KyAgICAvLw0KPiArICAgIC8vICAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoUGNpRXhCYXJCYXNl LCBTSVpFXzI1Nk1CKTsNCj4gKyAgICAvLyAgIEJ1aWxkTWVtb3J5QWxsb2NhdGlvbkhvYiAoUGNp RXhCYXJCYXNlLCBTSVpFXzI1Nk1CLA0KPiBFZmlNZW1vcnlNYXBwZWRJTyk7DQo+ICsgICAgLy8N Cj4gKyAgICAvLyBjYWxsIGJlbG93LCBqdXN0IGxpa2UgdGhlIG9uZSBhYm92ZSBmb3IgUkNCQS4g SG93ZXZlciwgTGludXggaW5zaXN0cw0KPiArICAgIC8vIHRoYXQgdGhlIE1NQ09ORklHIGFyZWEg YmUgbWFya2VkIGluIHRoZSBFODIwIG9yIFVFRkkgbWVtb3J5IG1hcCBhcw0KPiArICAgIC8vICJy ZXNlcnZlZCBtZW1vcnkiIC0tIExpbnV4IGRvZXMgbm90IGNvbnRlbnQgaXRzZWxmIHdpdGggYSBz aW1wbGUgZ2FwDQo+ICsgICAgLy8gaW4gdGhlIG1lbW9yeSBtYXAgd2hlcmV2ZXIgdGhlIE1DRkcg QUNQSSB0YWJsZSBwb2ludHMgdG8uDQo+ICsgICAgLy8NCj4gKyAgICAvLyBUaGlzIGFwcGVhcnMg dG8gYmUgYSBzYWZldHkgbWVhc3VyZS4gVGhlIFBDSSBGaXJtd2FyZSBTcGVjaWZpY2F0aW9uDQo+ ICsgICAgLy8gKHJldiAzLjEpIHNheXMgaW4gNC4xLjIuICJNQ0ZHIFRhYmxlIERlc2NyaXB0aW9u IjogIlRoZSByZXNvdXJjZXMgY2FuDQo+ICsgICAgLy8gKm9wdGlvbmFsbHkqIGJlIHJldHVybmVk IGluIFsuLi5dIEVGSUdldE1lbW9yeU1hcCBhcyByZXNlcnZlZCBtZW1vcnkNCj4gKyAgICAvLyBb Li4uXSIuIChFbXBoYXNpcyBhZGRlZCBoZXJlLikNCj4gKyAgICAvLw0KPiArICAgIC8vIE5vcm1h bGx5IHdlIGFkZCBtZW1vcnkgcmVzb3VyY2UgZGVzY3JpcHRvciBIT0JzIGluDQo+ICsgICAgLy8g UWVtdUluaXRpYWxpemVSYW0oKSwgYW5kIHByZS1hbGxvY2F0ZSBmcm9tIHRob3NlIHdpdGggbWVt b3J5DQo+ICsgICAgLy8gYWxsb2NhdGlvbiBIT0JzIGluIEluaXRpYWxpemVSYW1SZWdpb25zKCku IEhvd2V2ZXIsIHRoZSBNTUNPTkZJRyBhcmVhDQo+ICsgICAgLy8gaXMgbW9zdCBkZWZpbml0ZWx5 IG5vdCBSQU07IHNvLCBhcyBhbiBleGNlcHRpb24sIGNvdmVyIGl0IHdpdGgNCj4gKyAgICAvLyB1 bmNhY2hlYWJsZSByZXNlcnZlZCBtZW1vcnkgcmlnaHQgaGVyZS4NCj4gKyAgICAvLw0KPiArICAg ICAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoUGNpRXhCYXJCYXNlLCBTSVpFXzI1Nk1C LCBGQUxTRSk7DQo+ICsgICAgICBCdWlsZE1lbW9yeUFsbG9jYXRpb25Ib2IgKFBjaUV4QmFyQmFz ZSwgU0laRV8yNTZNQiwNCj4gKyAgICAgICAgRWZpUmVzZXJ2ZWRNZW1vcnlUeXBlKTsNCj4gKyAg fQ0KPiArICBBZGRJb01lbW9yeUJhc2VTaXplSG9iIChQY2RHZXQzMihQY2RDcHVMb2NhbEFwaWNC YXNlQWRkcmVzcyksDQo+IFNJWkVfMU1CKTsNCj4gKw0KPiArICAvLyBBZGQgUENJIElPIFBvcnQg c3BhY2UgYXZhaWxhYmxlIGZvciBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbnMuDQo+ICsgIC8vDQo+ ICsgIEJ1aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9iICgNCj4gKyAgICBFRklfUkVTT1VSQ0VfSU8s DQo+ICsgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9QUkVTRU5UICAgICB8DQo+ICsgICAgRUZJ X1JFU09VUkNFX0FUVFJJQlVURV9JTklUSUFMSVpFRCwNCj4gKyAgICBQY2lJb0Jhc2UsDQo+ICsg ICAgUGNpSW9TaXplDQo+ICsgICAgKTsNCj4gKyAgUGNkU2V0NjQgKFBjZFBjaUlvQmFzZSwgUGNp SW9CYXNlKTsNCj4gKyAgUGNkU2V0NjQgKFBjZFBjaUlvU2l6ZSwgUGNpSW9TaXplKTsNCj4gKw0K PiArICAvLw0KPiArICAvLyBBZGQgZmxhc2ggcmFuZ2UuDQo+ICsgIC8vDQo+ICsgIEFkZEZsYXNo RGV2aWNlUmFuZ2UgKFBjZEdldDMyKFBjZEZsYXNoQXJlYUJhc2VBZGRyZXNzKSwNCj4gUGNkR2V0 MzIoUGNkRmxhc2hBcmVhU2l6ZSkpOw0KPiArICAvLw0KPiArICAvLyBWaWRlbyBtZW1vcnkgLyBB QlNFRw0KPiArICAvLw0KPiArICBBZGRJb01lbW9yeUJhc2VTaXplSG9iICgweDBBMDAwMCwgMHgy MDAwMCk7DQo+ICsgIC8vDQo+ICsgIC8vIExlZ2FjeSBCSU9TIHJlZ2lvbi4NCj4gKyAgLy8NCj4g KyAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoMHhDMDAwMCwgMHg0MDAwMCwgVFJVRSk7 DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK01pc2NJbml0aWFsaXphdGlvbiAoDQo+ICsgIFZPSUQN Cj4gKyAgKQ0KPiArew0KPiArICBVSU5UTiAgICAgICAgIFBtQ21kOw0KPiArICBVSU5UTiAgICAg ICAgIFBtYmE7DQo+ICsgIFVJTlQzMiAgICAgICAgUG1iYUFuZFZhbDsNCj4gKyAgVUlOVDMyICAg ICAgICBQbWJhT3JWYWw7DQo+ICsgIFVJTlROICAgICAgICAgQWNwaUN0bFJlZzsNCj4gKyAgVUlO VDggICAgICAgICBBY3BpRW5CaXQ7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gRGlzYWJsZSBBMjAg TWFzaw0KPiArICAvLw0KPiArICBJb09yOCAoMHg5MiwgQklUMSk7DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gQnVpbGQgdGhlIENQVSBIT0Igd2l0aCBndWVzdCBSQU0gc2l6ZSBkZXBlbmRlbnQgYWRk cmVzcyB3aWR0aCBhbmQgMTYtDQo+IGJpdHMNCj4gKyAgLy8gb2YgSU8gc3BhY2UuIChTaWRlIG5v dGU6IHVubGlrZSBvdGhlciBIT0JzLCB0aGUgQ1BVIEhPQiBpcyBuZWVkZWQgZHVyaW5nDQo+ICsg IC8vIFMzIHJlc3VtZSBhcyB3ZWxsLCBzbyB3ZSBidWlsZCBpdCB1bmNvbmRpdGlvbmFsbHkuKQ0K PiArICAvLw0KPiArICBCdWlsZENwdUhvYiAobVBoeXNNZW1BZGRyZXNzV2lkdGgsIDE2KTsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBEZXRlcm1pbmUgcGxhdGZvcm0gdHlwZSBhbmQgc2F2ZSBIb3N0 IEJyaWRnZSBESUQgdG8gUENEDQo+ICsgIC8vDQo+ICsgIHN3aXRjaCAobUhvc3RCcmlkZ2VEZXZJ ZCkgew0KPiArICAgIGNhc2UgSU5URUxfODI0NDFfREVWSUNFX0lEOg0KPiArICAgICAgUG1DbWQg ICAgICA9IFBPV0VSX01HTVRfUkVHSVNURVJfUElJWDQgKFBDSV9DT01NQU5EX09GRlNFVCk7DQo+ ICsgICAgICBQbWJhICAgICAgID0gUE9XRVJfTUdNVF9SRUdJU1RFUl9QSUlYNCAoUElJWDRfUE1C QSk7DQo+ICsgICAgICBQbWJhQW5kVmFsID0gfihVSU5UMzIpUElJWDRfUE1CQV9NQVNLOw0KPiAr ICAgICAgUG1iYU9yVmFsICA9IFBJSVg0X1BNQkFfVkFMVUU7DQo+ICsgICAgICBBY3BpQ3RsUmVn ID0gUE9XRVJfTUdNVF9SRUdJU1RFUl9QSUlYNCAoUElJWDRfUE1SRUdNSVNDKTsNCj4gKyAgICAg IEFjcGlFbkJpdCAgPSBQSUlYNF9QTVJFR01JU0NfUE1JT1NFOw0KPiArICAgICAgYnJlYWs7DQo+ ICsgICAgY2FzZSBJTlRFTF9JQ0gxMF9ERVZJQ0VfSUQ6DQo+ICsgICAgICBQbUNtZCAgICAgID0g UE9XRVJfTUdNVF9SRUdJU1RFUl9JQ0gxMCAoUENJX0NPTU1BTkRfT0ZGU0VUKTsNCj4gKyAgICAg IFBtYmEgICAgICAgPSBQT1dFUl9NR01UX1JFR0lTVEVSX0lDSDEwIChJQ0gxMF9QTUJBU0UpOw0K PiArICAgICAgUG1iYUFuZFZhbCA9IH4oVUlOVDMyKUlDSDEwX1BNQkFTRV9NQVNLOw0KPiArICAg ICAgUG1iYU9yVmFsICA9IElDSDEwX1BNQkFTRV9WQUxVRTsNCj4gKyAgICAgIEFjcGlDdGxSZWcg PSBQT1dFUl9NR01UX1JFR0lTVEVSX0lDSDEwIChJQ0gxMF9BQ1BJX0NOVEwpOw0KPiArICAgICAg QWNwaUVuQml0ICA9IElDSDEwX0FDUElfQ05UTF9BQ1BJX0VOOw0KPiArICAgICAgYnJlYWs7DQo+ ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIlYTogVW5rbm93 biBIb3N0IEJyaWRnZSBEZXZpY2UgSUQ6IDB4JTA0eFxuIiwNCj4gKyAgICAgICAgX19GVU5DVElP Tl9fLCBtSG9zdEJyaWRnZURldklkKSk7DQo+ICsgICAgICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAg ICAgIHJldHVybjsNCj4gKyAgfQ0KPiArICBQY2RTZXQxNiAoUGNkU2ltaWNzWDU4SG9zdEJyaWRn ZVBjaURldklkLCBtSG9zdEJyaWRnZURldklkKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBJZiB0 aGUgYXBwcm9wcmlhdGUgSU9zcGFjZSBlbmFibGUgYml0IGlzIHNldCwgYXNzdW1lIHRoZSBBQ1BJ IFBNQkENCj4gKyAgLy8gaGFzIGJlZW4gY29uZmlndXJlZCBhbmQgc2tpcCB0aGUgc2V0dXAgaGVy ZS4NCj4gKyAgLy8gVGhpcyBtYXRjaGVzIHRoZSBsb2dpYyBpbiBBY3BpVGltZXJMaWJDb25zdHJ1 Y3RvciAoKS4NCj4gKyAgLy8NCj4gKyAgaWYgKChQY2lSZWFkOCAoQWNwaUN0bFJlZykgJiBBY3Bp RW5CaXQpID09IDApIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIFRoZSBQRUkgcGhhc2Ugc2hvdWxk IGJlIGV4aXRlZCB3aXRoIGZ1bGx5IGFjY2Vzc2liZSBBQ1BJIFBNIElPIHNwYWNlOg0KPiArICAg IC8vIDEuIHNldCBQTUJBDQo+ICsgICAgLy8NCj4gKyAgICBQY2lBbmRUaGVuT3IzMiAoUG1iYSwg UG1iYUFuZFZhbCwgUG1iYU9yVmFsKTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gMi4gc2V0 IFBDSUNNRC9JT1NFDQo+ICsgICAgLy8NCj4gKyAgICBQY2lPcjggKFBtQ21kLCBFRklfUENJX0NP TU1BTkRfSU9fU1BBQ0UpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyAzLiBzZXQgQUNQSSBQ TSBJTyBlbmFibGUgYml0IChQTVJFR01JU0M6UE1JT1NFIG9yDQo+IEFDUElfQ05UTDpBQ1BJX0VO KQ0KPiArICAgIC8vDQo+ICsgICAgUGNpT3I4IChBY3BpQ3RsUmVnLCBBY3BpRW5CaXQpOw0KPiAr ICB9DQo+ICsNCj4gKyAgaWYgKG1Ib3N0QnJpZGdlRGV2SWQgPT0gSU5URUxfSUNIMTBfREVWSUNF X0lEKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBTZXQgUm9vdCBDb21wbGV4IFJlZ2lzdGVyIEJs b2NrIEJBUg0KPiArICAgIC8vDQo+ICsgICAgUGNpV3JpdGUzMiAoDQo+ICsgICAgICBQT1dFUl9N R01UX1JFR0lTVEVSX0lDSDEwIChJQ0gxMF9SQ0JBKSwNCj4gKyAgICAgIElDSDEwX1JPT1RfQ09N UExFWF9CQVNFIHwgSUNIMTBfUkNCQV9FTg0KPiArICAgICAgKTsNCj4gKw0KPiArICB9DQo+ICsg IC8vDQo+ICsgIC8vIFNldCB0aGUgUE0gSS9PIGJhc2UgYWRkcmVzcyB0byAweDQwMA0KPiArICAv Lw0KPiArICBQY2lBbmRUaGVuT3IzMiAoDQo+ICsgICAgUENJX0xJQl9BRERSRVNTICgNCj4gKyAg ICAgIDAsDQo+ICsgICAgICAzMSwNCj4gKyAgICAgIDAsDQo+ICsgICAgICAweDQwDQo+ICsgICAg ICApLA0KPiArICAgIChVSU5UMzIpIH4weGZjMCwgSUNIMTBfUE1CQVNFX1ZBTFVFDQo+ICsgICAg KTsNCj4gKyAgLy8NCj4gKyAgLy8gRW5hYmxlIEFIQ0kgYW5kIGFsbCBwb3J0cyBvbiB0aGUgU0FU QSBjb250cm9sbGVyLg0KPiArICAvLw0KPiArICAvLyBBZGRyZXNzIE1BUCBSZWcsIHNldHRpbmcg QUhDSSBtb2RlDQo+ICsgIC8vDQo+ICsgIFBjaU9yMTYgKFBDSV9MSUJfQUREUkVTUyAoMCwgMzEs IDIsIDB4OTApLCAweDAwNjApOw0KPiArICAvLw0KPiArICAvL0VuYWJsaW5nIFBvcnRzIDAtNQ0K PiArICAvLw0KPiArICBQY2lPcjE2IChQQ0lfTElCX0FERFJFU1MgKDAsIDMxLCAyLCAweDkyKSwg MHgwMDNGKTsNCj4gKyAgLy8NCj4gKyAgLy9EaXNhYmxpbmcgU2F0YSBDb250cm9sbGVyIDIsIGJp dCAyNSA9IDEsIGJpdCAwID0gMQ0KPiArICAvLw0KPiArICBNbWlvV3JpdGUzMigweEZFRDFGNDE4 LCAweDAyMDAwMDAxKTsNCj4gKyAgLy8NCj4gKyAgLy9FbmFibGUgSFBFVCBhdCBGRUQwXzAwMDBo IOKAkyBGRUQwXzAzRkZoDQo+ICsgIC8vDQo+ICsgIE1taW9Xcml0ZTgoSUNIMTBfUk9PVF9DT01Q TEVYX0JBU0UgKyAweDM0MDQsIDB4ODApOw0KPiArICAvLw0KPiArICAvL0NvbmZpZyBhbmQgZW5h YmxlIEFQSUMNCj4gKyAgLy8NCj4gKyAgTW1pb1dyaXRlMzIoMHhGRUMwMDAwMCArIDBYMCwgMCk7 DQo+ICsgIE1taW9Xcml0ZTMyKDB4RkVDMDAwMDAgKyAwWDEwLCBQY2RHZXQ4KFBjZElvQXBpY0lk KTw8MjQpOw0KPiArICBNbWlvV3JpdGU4KElDSDEwX1JPT1RfQ09NUExFWF9CQVNFICsgMHgzMUZG LCAweDAxKTsNCj4gK30NCj4gKw0KPiArDQo+ICtWT0lEDQo+ICtCb290TW9kZUluaXRpYWxpemF0 aW9uICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVz Ow0KPiArDQo+ICsgREVCVUcoKEVGSV9EX0lORk8sICJtb2RlVmFsdWUgPSAleFxuIiwNCj4gSW9C aXRGaWVsZFJlYWQxNihJQ0gxMF9QTUJBU0VfSU8gKyA0LCAxMCwgMTIpKSk7DQo+ICsgIGlmIChJ b0JpdEZpZWxkUmVhZDE2KElDSDEwX1BNQkFTRV9JTyArIDQsIDEwLCAxMikgPT0gMHg1KSB7DQo+ ICsgICAgbUJvb3RNb2RlID0gQk9PVF9PTl9TM19SRVNVTUU7DQo+ICsgIH0NCj4gKw0KPiArICBT dGF0dXMgPSBQZWlTZXJ2aWNlc1NldEJvb3RNb2RlIChtQm9vdE1vZGUpOw0KPiArICBBU1NFUlRf RUZJX0VSUk9SIChTdGF0dXMpOw0KPiArDQo+ICsgIFN0YXR1cyA9IFBlaVNlcnZpY2VzSW5zdGFs bFBwaSAobVBwaUJvb3RNb2RlKTsNCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4g K30NCj4gKw0KPiArDQo+ICtWT0lEDQo+ICtSZXNlcnZlRW11VmFyaWFibGVOdlN0b3JlICgNCj4g KyAgKQ0KPiArew0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyBWYXJpYWJsZVN0b3JlOw0KPiAr DQo+ICsgIC8vDQo+ICsgIC8vIEFsbG9jYXRlIHN0b3JhZ2UgZm9yIE5WIHZhcmlhYmxlcyBlYXJs eSBvbiBzbyBpdCB3aWxsIGJlDQo+ICsgIC8vIGF0IGEgY29uc2lzdGVudCBhZGRyZXNzLiAgU2lu Y2UgVk0gbWVtb3J5IGlzIHByZXNlcnZlZA0KPiArICAvLyBhY3Jvc3MgcmVib290cywgdGhpcyBh bGxvd3MgdGhlIE5WIHZhcmlhYmxlIHN0b3JhZ2UgdG8gc3Vydml2ZQ0KPiArICAvLyBhIFZNIHJl Ym9vdC4NCj4gKyAgLy8NCj4gKyAgVmFyaWFibGVTdG9yZSA9DQo+ICsgICAgKEVGSV9QSFlTSUNB TF9BRERSRVNTKShVSU5UTikNCj4gKyAgICAgIEFsbG9jYXRlUnVudGltZVBhZ2VzICgNCj4gKyAg ICAgICAgRUZJX1NJWkVfVE9fUEFHRVMgKDIgKiBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3JhZ2VG dHdTcGFyZVNpemUpKQ0KPiArICAgICAgICApOw0KPiArICBERUJVRyAoKEVGSV9EX0lORk8sDQo+ ICsgICAgICAgICAgIlJlc2VydmVkIHZhcmlhYmxlIHN0b3JlIG1lbW9yeTogMHglbFg7IHNpemU6 ICVka2JcbiIsDQo+ICsgICAgICAgICAgVmFyaWFibGVTdG9yZSwNCj4gKyAgICAgICAgICAoMiAq IFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6ZSkpIC8gMTAyNA0KPiArICAg ICAgICApKTsNCj4gKyAgUGNkU2V0NjQgKFBjZEVtdVZhcmlhYmxlTnZTdG9yZVJlc2VydmVkLCBW YXJpYWJsZVN0b3JlKTsNCj4gK30NCj4gKw0KPiArDQo+ICtWT0lEDQo+ICtTaW1pY3NWZXJzaW9u Q2hlY2soDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArDQo+ICsgIFVJTlROICAgICAgICAg ICBQY2lBZGRyUHRyOw0KPiArICBVSU5UOCAgICAgICAgICAgQ2FwT2Zmc2V0Ow0KPiArICBTVEFU SUMgQ0hBUjggICAgU2ltaWNzU3RyWzB4MTAwXTsNCj4gKyAgVUlOVE4gICAgICAgICAgIGk7DQo+ ICsgIFVJTlQzMiAgICAgICAgICBNYWpvclZlcnNpb247DQo+ICsgIFVJTlQzMiAgICAgICAgICBN aW5vclZlcnNpb247DQo+ICsgIFVJTlQzMiAgICAgICAgICBNb2RlbE51bWJlcjsNCj4gKw0KPiAr ICBQY2lBZGRyUHRyID0gUENJX0xJQl9BRERSRVNTKDAsIFNJTUlDU19TSURFQkFORFBDSV9ERVYs DQo+IFNJTUlDU19TSURFQkFORFBDSV9GVU5DLCAwKTsNCj4gKyAgQ2FwT2Zmc2V0ID0gUGNpUmVh ZDgoUGNpQWRkclB0ciArIFBDSV9DQVBCSUxJVFlfUE9JTlRFUl9PRkZTRVQpOw0KPiArICBpZiAo Q2FwT2Zmc2V0ICE9IDB4RkYpIHsNCj4gKyAgICBNb2RlbE51bWJlciA9IFBjaVJlYWQzMihQY2lB ZGRyUHRyICsgQ2FwT2Zmc2V0ICsgNCk7DQo+ICsgICAgTWFqb3JWZXJzaW9uID0gUGNpUmVhZDMy KFBjaUFkZHJQdHIgKyBDYXBPZmZzZXQgKyA4KTsNCj4gKyAgICBNaW5vclZlcnNpb24gPSBQY2lS ZWFkMzIoUGNpQWRkclB0ciArIENhcE9mZnNldCArIDB4Yyk7DQo+ICsgICAgZm9yIChpID0gMDsg aSA8IDB4ODA7IGkrKykgew0KPiArICAgICAgU2ltaWNzU3RyW2ldID0gUGNpUmVhZDgoUGNpQWRk clB0ciArIENhcE9mZnNldCArIDB4MTAgKyBpKTsNCj4gKyAgICB9DQo+ICsgICAgREVCVUcoKEVG SV9EX0lORk8sICI9PT09PT09PT09PT09U0lNSUNTIFZlcnNpb24NCj4gaW5mbz09PT09PT09PT09 PT1cbiIpKTsNCj4gKyAgICBERUJVRygoRUZJX0RfSU5GTywgIk1vZGVsIG51bWJlciA9ICVkXG4i LCBNb2RlbE51bWJlcikpOw0KPiArICAgIERFQlVHKChFRklfRF9JTkZPLCAiTWFqb3IgdmVyc2lv biA9ICVkXG4iLCBNYWpvclZlcnNpb24pKTsNCj4gKyAgICBERUJVRygoRUZJX0RfSU5GTywgIk1p bm9yIHZlcnNpb24gPSAlZFxuIiwgTWlub3JWZXJzaW9uKSk7DQo+ICsgICAgREVCVUcoKEVGSV9E X0lORk8sICIlYVxuIiwgU2ltaWNzU3RyKSk7DQo+ICsgICAgREVCVUcoKEVGSV9EX0lORk8sDQo+ ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpKTsNCj4g KyAgfQ0KPiArfQ0KPiArDQo+ICtWT0lEDQo+ICtEZWJ1Z0R1bXBDbW9zICgNCj4gKyAgVk9JRA0K PiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBMb29wOw0KPiArDQo+ICsgIERFQlVHICgoRUZJX0Rf SU5GTywgIkNNT1M6XG4iKSk7DQo+ICsNCj4gKyAgZm9yIChMb29wID0gMDsgTG9vcCA8IDB4ODA7 IExvb3ArKykgew0KPiArICAgIGlmICgoTG9vcCAlIDB4MTApID09IDApIHsNCj4gKyAgICAgIERF QlVHICgoRUZJX0RfSU5GTywgIiUwMng6IiwgTG9vcCkpOw0KPiArICAgIH0NCj4gKyAgICBERUJV RyAoKEVGSV9EX0lORk8sICIgJTAyeCIsIENtb3NSZWFkOCAoTG9vcCkpKTsNCj4gKyAgICBpZiAo KExvb3AgJSAweDEwKSA9PSAweGYpIHsNCj4gKyAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIlxu IikpOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBGZXRj aCB0aGUgbnVtYmVyIG9mIGJvb3QgQ1BVcyBmcm9tIFFFTVUgYW5kIGV4cG9zZSBpdCB0byBVZWZp Q3B1UGtnDQo+IG1vZHVsZXMuDQo+ICsgIFNldCB0aGUgbU1heENwdUNvdW50IHZhcmlhYmxlLg0K PiArKiovDQo+ICtWT0lEDQo+ICtNYXhDcHVDb3VudEluaXRpYWxpemF0aW9uICgNCj4gKyAgVk9J RA0KPiArICApDQo+ICt7DQo+ICsgIG1NYXhDcHVDb3VudCA9IFBjZEdldDMyIChQY2RDcHVNYXhM b2dpY2FsUHJvY2Vzc29yTnVtYmVyKTsNCj4gKyAgcmV0dXJuOw0KPiArfQ0KPiArDQo+ICsvKioN Cj4gKyAgRGV0ZXJtaW5lIGlmIFMzIHN1cHBvcnQgaXMgZXhwbGljaXRseSBlbmFibGVkLg0KPiAr DQo+ICsgIEByZXR2YWwgIFRSVUUgICBJZiBTMyBzdXBwb3J0IGlzIGV4cGxpY2l0bHkgZW5hYmxl ZC4gT3RoZXIgZnVuY3Rpb25zIGluIHRoaXMNCj4gKyAgbGlicmFyeSBtYXkgYmUgY2FsbGVkIChz dWJqZWN0IHRvIHRoZWlyIGluZGl2aWR1YWwNCj4gKyAgcmVzdHJpY3Rpb25zKS4NCj4gKw0KPiAr ICBGQUxTRSAgT3RoZXJ3aXNlLiBUaGlzIGluY2x1ZGVzIHVuYXZhaWxhYmlsaXR5IG9mIHRoZSBm aXJtd2FyZQ0KPiArICBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gTm8gb3RoZXIgZnVuY3Rpb24g aW4gdGhpcyBsaWJyYXJ5DQo+ICsgIG11c3QgYmUgY2FsbGVkLg0KPiArKiovDQo+ICtCT09MRUFO DQo+ICtFRklBUEkNCj4gK1FlbXVGd0NmZ1MzRW5hYmxlZCgNCj4gKyAgVk9JRA0KPiArKQ0KPiAr ew0KPiArICAvL1RPIERPIElGIE5FRURFRA0KPiArICByZXR1cm4gVFJVRTsNCj4gK30NCj4gKw0K PiArLyoqDQo+ICsgIFBlcmZvcm0gUGxhdGZvcm0gUEVJIGluaXRpYWxpemF0aW9uLg0KPiArDQo+ ICsgIEBwYXJhbSAgRmlsZUhhbmRsZSAgICAgIEhhbmRsZSBvZiB0aGUgZmlsZSBiZWluZyBpbnZv a2VkLg0KPiArICBAcGFyYW0gIFBlaVNlcnZpY2VzICAgICBEZXNjcmliZXMgdGhlIGxpc3Qgb2Yg cG9zc2libGUgUEVJIFNlcnZpY2VzLg0KPiArDQo+ICsgIEByZXR1cm4gRUZJX1NVQ0NFU1MgICAg IFRoZSBQRUlNIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4NCj4gKw0KPiArKiovDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0luaXRpYWxpemVQbGF0Zm9ybSAoDQo+ICsgIElOICAgICAg IEVGSV9QRUlfRklMRV9IQU5ETEUgIEZpbGVIYW5kbGUsDQo+ICsgIElOIENPTlNUIEVGSV9QRUlf U0VSVklDRVMgICAgICoqUGVpU2VydmljZXMNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVT ICAgIFN0YXR1czsNCj4gKw0KPiArICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiUGxhdGZvcm0gUEVJ TSBMb2FkZWRcbiIpKTsNCj4gKw0KPiArICBTaW1pY3NWZXJzaW9uQ2hlY2sgKCk7DQo+ICsgIERl YnVnRHVtcENtb3MgKCk7DQo+ICsNCj4gKyAgaWYgKFFlbXVGd0NmZ1MzRW5hYmxlZCAoKSkgew0K PiArICAgIERFQlVHICgoRUZJX0RfSU5GTywgIlMzIHN1cHBvcnQgd2FzIGRldGVjdGVkIG9uIFNJ TUlDU1xuIikpOw0KPiArICAgIG1TM1N1cHBvcnRlZCA9IFRSVUU7DQo+ICsgICAgU3RhdHVzID0g UGNkU2V0Qm9vbFMgKFBjZEFjcGlTM0VuYWJsZSwgVFJVRSk7DQo+ICsgICAgQVNTRVJUX0VGSV9F UlJPUiAoU3RhdHVzKTsNCj4gKyAgfQ0KPiArICBBZGRyZXNzV2lkdGhJbml0aWFsaXphdGlvbiAo KTsNCj4gKyAgTWF4Q3B1Q291bnRJbml0aWFsaXphdGlvbiAoKTsNCj4gKw0KPiArICBtSG9zdEJy aWRnZURldklkID0gUGNpUmVhZDE2KFNJTUlDU19IT1NUQlJJREdFX0RJRCk7DQo+ICsNCj4gKyAg aWYgKEZlYXR1cmVQY2RHZXQgKFBjZFNtbVNtcmFtUmVxdWlyZSkpIHsNCj4gKyAgICBYNThUc2Vn TWJ5dGVzSW5pdGlhbGl6YXRpb24gKCk7DQo+ICsgIH0NCj4gKw0KPiArICBQdWJsaXNoUGVpTWVt b3J5ICgpOw0KPiArDQo+ICsgIEluaXRpYWxpemVSYW1SZWdpb25zICgpOw0KPiArDQo+ICsgIGlm IChtQm9vdE1vZGUgIT0gQk9PVF9PTl9TM19SRVNVTUUpIHsNCj4gKyAgICBpZiAoIUZlYXR1cmVQ Y2RHZXQgKFBjZFNtbVNtcmFtUmVxdWlyZSkpIHsNCj4gKyAgICAgIFJlc2VydmVFbXVWYXJpYWJs ZU52U3RvcmUgKCk7DQo+ICsgICAgfQ0KPiArICAgIFBlaUZ2SW5pdGlhbGl6YXRpb24gKCk7DQo+ ICsgICAgTWVtTWFwSW5pdGlhbGl6YXRpb24gKCk7DQo+ICsgIH0NCj4gKw0KPiArICBNaXNjSW5p dGlhbGl6YXRpb24gKCk7DQo+ICsgIEluc3RhbGxGZWF0dXJlQ29udHJvbENhbGxiYWNrICgpOw0K PiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9s aWN5SW5pdExpYi9TaWxpY29uDQo+IFBvbGljeUluaXRMaWIuYw0KPiBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExpYi9T aWxpY29uDQo+IFBvbGljeUluaXRMaWIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwLi4wMWE5ZWQ0MGQ1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xp Y3lJbml0TGliL1NpbGljb24NCj4gUG9saWN5SW5pdExpYi5jDQo+IEBAIC0wLDAgKzEsMTA4IEBA DQo+ICsvKiogQGZpbGUNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE4IEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8TGli cmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1v cnlBbGxvY2F0aW9uTGliLmg+DQo+ICsNCj4gKy8qKg0KPiArICBQZXJmb3JtcyBzaWxpY29uIHBy ZS1tZW0gcG9saWN5IGluaXRpYWxpemF0aW9uLg0KPiArDQo+ICsgIFRoZSBtZWFuaW5nIG9mIFBv bGljeSBpcyBkZWZpbmVkIGJ5IHNpbGljb24gY29kZS4NCj4gKyAgSXQgY291bGQgYmUgdGhlIHJh dyBkYXRhLCBhIGhhbmRsZSwgYSBQUEksIGV0Yy4NCj4gKw0KPiArICBUaGUgcmV0dXJuZWQgZGF0 YSBtdXN0IGJlIHVzZWQgYXMgaW5wdXQgZGF0YSBmb3IgU2lsaWNvblBvbGljeURvbmVQcmVNZW0o KSwNCj4gKyAgYW5kIFNpbGljb25Qb2xpY3lVcGRhdGVMaWIuU2lsaWNvblBvbGljeVVwZGF0ZVBy ZU1lbSgpLg0KPiArDQo+ICsgIDEpIEluIEZTUCBwYXRoLCB0aGUgaW5wdXQgUG9saWN5IHNob3Vs ZCBiZSBGc3BtVXBkLg0KPiArICBWYWx1ZSBvZiBGc3BtVXBkIGhhcyBiZWVuIGluaXRpYWxpemVk IGJ5IEZTUCBiaW5hcnkgZGVmYXVsdCB2YWx1ZS4NCj4gKyAgT25seSBhIHN1YnNldCBvZiBGc3Bt VXBkIG5lZWRzIHRvIGJlIHVwZGF0ZWQgZm9yIGRpZmZlcmVudCBzaWxpY29uIHNrdS4NCj4gKyAg VGhlIHJldHVybiBkYXRhIGlzIHNhbWUgRnNwbVVwZC4NCj4gKw0KPiArICAyKSBJbiBub24tRlNQ IHBhdGgsIHRoZSBpbnB1dCBwb2xpY3kgY291bGQgYmUgTlVMTC4NCj4gKyAgVGhlIHJldHVybiBk YXRhIGlzIHRoZSBpbml0aWFsaXplZCBwb2xpY3kuDQo+ICsNCj4gKyAgQHBhcmFtW2luLCBvdXRd IFBvbGljeSAgICAgICBQb2ludGVyIHRvIHBvbGljeS4NCj4gKw0KPiArICBAcmV0dXJuIHRoZSBp bml0aWFsaXplZCBwb2xpY3kuDQo+ICsqKi8NCj4gK1ZPSUQgKg0KPiArRUZJQVBJDQo+ICtTaWxp Y29uUG9saWN5SW5pdFByZU1lbSAoDQo+ICsgIElOIE9VVCBWT0lEICpQb2xpY3kgT1BUSU9OQUwN Cj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUG9saWN5Ow0KPiArfQ0KPiArDQo+ICsvKg0KPiAr ICBUaGUgc2lsaWNvbiBwcmUtbWVtIHBvbGljeSBpcyBmaW5hbGl6ZWQuDQo+ICsgIFNpbGljb24g Y29kZSBjYW4gZG8gaW5pdGlhbGl6YXRpb24gYmFzZWQgdXBvbiB0aGUgcG9saWN5IGRhdGEuDQo+ ICsNCj4gKyAgVGhlIGlucHV0IFBvbGljeSBtdXN0IGJlIHJldHVybmVkIGJ5IFNpbGljb25Qb2xp Y3lJbml0UHJlTWVtKCkuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQb2xpY3kgICAgICAgUG9pbnRl ciB0byBwb2xpY3kuDQo+ICsNCj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyBUaGUgcG9saWN5 IGlzIGhhbmRsZWQgY29uc3VtZWQgYnkgc2lsaWNvbiBjb2RlLg0KPiArKi8NCj4gK1JFVFVSTl9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArU2lsaWNvblBvbGljeURvbmVQcmVNZW0gKA0KPiArICBJTiBW T0lEICpQb2xpY3kNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ ICt9DQo+ICsNCj4gKy8qKg0KPiArICBQZXJmb3JtcyBzaWxpY29uIHBvc3QtbWVtIHBvbGljeSBp bml0aWFsaXphdGlvbi4NCj4gKw0KPiArICBUaGUgbWVhbmluZyBvZiBQb2xpY3kgaXMgZGVmaW5l ZCBieSBzaWxpY29uIGNvZGUuDQo+ICsgIEl0IGNvdWxkIGJlIHRoZSByYXcgZGF0YSwgYSBoYW5k bGUsIGEgUFBJLCBldGMuDQo+ICsNCj4gKyAgVGhlIHJldHVybmVkIGRhdGEgbXVzdCBiZSB1c2Vk IGFzIGlucHV0IGRhdGEgZm9yDQo+IFNpbGljb25Qb2xpY3lEb25lUG9zdE1lbSgpLA0KPiArICBh bmQgU2lsaWNvblBvbGljeVVwZGF0ZUxpYi5TaWxpY29uUG9saWN5VXBkYXRlUG9zdE1lbSgpLg0K PiArDQo+ICsgIDEpIEluIEZTUCBwYXRoLCB0aGUgaW5wdXQgUG9saWN5IHNob3VsZCBiZSBGc3Bz VXBkLg0KPiArICBWYWx1ZSBvZiBGc3BzVXBkIGhhcyBiZWVuIGluaXRpYWxpemVkIGJ5IEZTUCBi aW5hcnkgZGVmYXVsdCB2YWx1ZS4NCj4gKyAgT25seSBhIHN1YnNldCBvZiBGc3BzVXBkIG5lZWRz IHRvIGJlIHVwZGF0ZWQgZm9yIGRpZmZlcmVudCBzaWxpY29uIHNrdS4NCj4gKyAgVGhlIHJldHVy biBkYXRhIGlzIHNhbWUgRnNwc1VwZC4NCj4gKw0KPiArICAyKSBJbiBub24tRlNQIHBhdGgsIHRo ZSBpbnB1dCBwb2xpY3kgY291bGQgYmUgTlVMTC4NCj4gKyAgVGhlIHJldHVybiBkYXRhIGlzIHRo ZSBpbml0aWFsaXplZCBwb2xpY3kuDQo+ICsNCj4gKyAgQHBhcmFtW2luLCBvdXRdIFBvbGljeSAg ICAgICBQb2ludGVyIHRvIHBvbGljeS4NCj4gKw0KPiArICBAcmV0dXJuIHRoZSBpbml0aWFsaXpl ZCBwb2xpY3kuDQo+ICsqKi8NCj4gK1ZPSUQgKg0KPiArRUZJQVBJDQo+ICtTaWxpY29uUG9saWN5 SW5pdFBvc3RNZW0gKA0KPiArICBJTiBPVVQgVk9JRCAqUG9saWN5IE9QVElPTkFMDQo+ICsgICkN Cj4gK3sNCj4gKyAgcmV0dXJuIFBvbGljeTsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAgVGhlIHNp bGljb24gcG9zdC1tZW0gcG9saWN5IGlzIGZpbmFsaXplZC4NCj4gKyAgU2lsaWNvbiBjb2RlIGNh biBkbyBpbml0aWFsaXphdGlvbiBiYXNlZCB1cG9uIHRoZSBwb2xpY3kgZGF0YS4NCj4gKw0KPiAr ICBUaGUgaW5wdXQgUG9saWN5IG11c3QgYmUgcmV0dXJuZWQgYnkgU2lsaWNvblBvbGljeUluaXRQ b3N0TWVtKCkuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBQb2xpY3kgICAgICAgUG9pbnRlciB0byBw b2xpY3kuDQo+ICsNCj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyBUaGUgcG9saWN5IGlzIGhh bmRsZWQgY29uc3VtZWQgYnkgc2lsaWNvbiBjb2RlLg0KPiArKi8NCj4gK1JFVFVSTl9TVEFUVVMN Cj4gK0VGSUFQSQ0KPiArU2lsaWNvblBvbGljeURvbmVQb3N0TWVtICgNCj4gKyAgSU4gVk9JRCAq UG9saWN5DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0K PiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGlj eS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lVcGRhdGVMaWIvU2lsDQo+IGljb25Qb2xpY3lVcGRhdGVM aWIuYw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFy eS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1NpbA0KPiBpY29uUG9saWN5VXBkYXRlTGliLmMNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNmQ5ZGE2Nzk3NQ0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1NpbA0KPiBpY29uUG9saWN5 VXBkYXRlTGliLmMNCj4gQEAgLTAsMCArMSw3MCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIENvcHly aWdodCAoYykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJS Pg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPFBpUGVpLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0RlYnVnTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KPiArI2lu Y2x1ZGUgPFBwaS9SZWFkT25seVZhcmlhYmxlMi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUGVp U2VydmljZXNMaWIuaD4NCj4gKw0KPiArLyoqDQo+ICsgIFBlcmZvcm1zIHNpbGljb24gcHJlLW1l bSBwb2xpY3kgdXBkYXRlLg0KPiArDQo+ICsgIFRoZSBtZWFuaW5nIG9mIFBvbGljeSBpcyBkZWZp bmVkIGJ5IHNpbGljb24gY29kZS4NCj4gKyAgSXQgY291bGQgYmUgdGhlIHJhdyBkYXRhLCBhIGhh bmRsZSwgYSBQUEksIGV0Yy4NCj4gKw0KPiArICBUaGUgaW5wdXQgUG9saWN5IG11c3QgYmUgcmV0 dXJuZWQgYnkgU2lsaWNvblBvbGljeURvbmVQcmVNZW0oKS4NCj4gKw0KPiArICAxKSBJbiBGU1Ag cGF0aCwgdGhlIGlucHV0IFBvbGljeSBzaG91bGQgYmUgRnNwbVVwZC4NCj4gKyAgQSBwbGF0Zm9y bSBtYXkgdXNlIHRoaXMgQVBJIHRvIHVwZGF0ZSB0aGUgRlNQTSBVUEQgcG9saWN5IGluaXRpYWxp emVkDQo+ICsgIGJ5IHRoZSBzaWxpY29uIG1vZHVsZSBvciB0aGUgZGVmYXVsdCBVUEQgZGF0YS4N Cj4gKyAgVGhlIG91dHB1dCBvZiBGU1BNIFVQRCBkYXRhIGZyb20gdGhpcyBBUEkgaXMgdGhlIGZp bmFsIFVQRCBkYXRhLg0KPiArDQo+ICsgIDIpIEluIG5vbi1GU1AgcGF0aCwgdGhlIGJvYXJkIG1h eSB1c2UgYWRkaXRpb25hbCB3YXkgdG8gZ2V0DQo+ICsgIHRoZSBzaWxpY29uIHBvbGljeSBkYXRh IGZpZWxkIGJhc2VkIHVwb24gdGhlIGlucHV0IFBvbGljeS4NCj4gKw0KPiArICBAcGFyYW1baW4s IG91dF0gUG9saWN5ICAgICAgIFBvaW50ZXIgdG8gcG9saWN5Lg0KPiArDQo+ICsgIEByZXR1cm4g dGhlIHVwZGF0ZWQgcG9saWN5Lg0KPiArKiovDQo+ICtWT0lEICoNCj4gK0VGSUFQSQ0KPiArU2ls aWNvblBvbGljeVVwZGF0ZVByZU1lbSAoDQo+ICsgIElOIE9VVCBWT0lEICpQb2xpY3kNCj4gKyAg KQ0KPiArew0KPiArICByZXR1cm4gUG9saWN5Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUGVy Zm9ybXMgc2lsaWNvbiBwb3N0LW1lbSBwb2xpY3kgdXBkYXRlLg0KPiArDQo+ICsgIFRoZSBtZWFu aW5nIG9mIFBvbGljeSBpcyBkZWZpbmVkIGJ5IHNpbGljb24gY29kZS4NCj4gKyAgSXQgY291bGQg YmUgdGhlIHJhdyBkYXRhLCBhIGhhbmRsZSwgYSBQUEksIGV0Yy4NCj4gKw0KPiArICBUaGUgaW5w dXQgUG9saWN5IG11c3QgYmUgcmV0dXJuZWQgYnkgU2lsaWNvblBvbGljeURvbmVQb3N0TWVtKCku DQo+ICsNCj4gKyAgMSkgSW4gRlNQIHBhdGgsIHRoZSBpbnB1dCBQb2xpY3kgc2hvdWxkIGJlIEZz cHNVcGQuDQo+ICsgIEEgcGxhdGZvcm0gbWF5IHVzZSB0aGlzIEFQSSB0byB1cGRhdGUgdGhlIEZT UFMgVVBEIHBvbGljeSBpbml0aWFsaXplZA0KPiArICBieSB0aGUgc2lsaWNvbiBtb2R1bGUgb3Ig dGhlIGRlZmF1bHQgVVBEIGRhdGEuDQo+ICsgIFRoZSBvdXRwdXQgb2YgRlNQUyBVUEQgZGF0YSBm cm9tIHRoaXMgQVBJIGlzIHRoZSBmaW5hbCBVUEQgZGF0YS4NCj4gKw0KPiArICAyKSBJbiBub24t RlNQIHBhdGgsIHRoZSBib2FyZCBtYXkgdXNlIGFkZGl0aW9uYWwgd2F5IHRvIGdldA0KPiArICB0 aGUgc2lsaWNvbiBwb2xpY3kgZGF0YSBmaWVsZCBiYXNlZCB1cG9uIHRoZSBpbnB1dCBQb2xpY3ku DQo+ICsNCj4gKyAgQHBhcmFtW2luLCBvdXRdIFBvbGljeSAgICAgICBQb2ludGVyIHRvIHBvbGlj eS4NCj4gKw0KPiArICBAcmV0dXJuIHRoZSB1cGRhdGVkIHBvbGljeS4NCj4gKyoqLw0KPiArVk9J RCAqDQo+ICtFRklBUEkNCj4gK1NpbGljb25Qb2xpY3lVcGRhdGVQb3N0TWVtICgNCj4gKyAgSU4g T1VUIFZPSUQgKlBvbGljeQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBQb2xpY3k7DQo+ICt9 DQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU21i aW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUNCj4gLmMNCj4gYi9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUN Cj4gLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uODJhMmQ2 MDk1OQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZQ0KPiAuYw0KPiBA QCAtMCwwICsxLDE0OCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFRoaXMgZHJpdmVyIGluc3RhbGxz IFNNQklPUyBpbmZvcm1hdGlvbiBmb3IgT1ZNRg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAx MSwgQmVpIEd1YW4gPGdidGp1ODVAZ21haWwuY29tPg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTEg LSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsN Cj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoq Lw0KPiArDQo+ICsjaW5jbHVkZSAiU21iaW9zUGxhdGZvcm1EeGUuaCINCj4gKw0KPiArDQo+ICsv KioNCj4gK1JlYWRzIDgtYml0cyBvZiBDTU9TIGRhdGEuDQo+ICsNCj4gK1JlYWRzIHRoZSA4LWJp dHMgb2YgQ01PUyBkYXRhIGF0IHRoZSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ICtU aGUgOC1iaXQgcmVhZCB2YWx1ZSBpcyByZXR1cm5lZC4NCj4gKw0KPiArQHBhcmFtICBJbmRleCAg VGhlIENNT1MgbG9jYXRpb24gdG8gcmVhZC4NCj4gKw0KPiArQHJldHVybiBUaGUgdmFsdWUgcmVh ZC4NCj4gKw0KPiArKiovDQo+ICtVSU5UOA0KPiArRUZJQVBJDQo+ICtDbW9zUmVhZDgoDQo+ICsg IElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleA0KPiArICApDQo+ICt7DQo+ ICsgIElvV3JpdGU4KDB4NzAsIChVSU5UOClJbmRleCk7DQo+ICsgIHJldHVybiBJb1JlYWQ4KDB4 NzEpOw0KPiArfQ0KPiArDQo+ICtVSU5UMzINCj4gK0dldFN5c3RlbU1lbW9yeVNpemVCZWxvdzRn YigNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ4IENtb3MweDM0Ow0KPiArICBV SU5UOCBDbW9zMHgzNTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBDTU9TIDB4MzQvMHgzNSBzcGVj aWZpZXMgdGhlIHN5c3RlbSBtZW1vcnkgYWJvdmUgMTYgTUIuDQo+ICsgIC8vICogQ01PUygweDM1 KSBpcyB0aGUgaGlnaCBieXRlDQo+ICsgIC8vICogQ01PUygweDM0KSBpcyB0aGUgbG93IGJ5dGUN Cj4gKyAgLy8gKiBUaGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gNjRrYiBjaHVua3MNCj4gKyAgLy8g KiBTaW5jZSB0aGlzIGlzIG1lbW9yeSBhYm92ZSAxNk1CLCB0aGUgMTZNQiBtdXN0IGJlIGFkZGVk DQo+ICsgIC8vICAgaW50byB0aGUgY2FsY3VsYXRpb24gdG8gZ2V0IHRoZSB0b3RhbCBtZW1vcnkg c2l6ZS4NCj4gKyAgLy8NCj4gKw0KPiArICBDbW9zMHgzNCA9IChVSU5UOClDbW9zUmVhZDgoMHgz NCk7DQo+ICsgIENtb3MweDM1ID0gKFVJTlQ4KUNtb3NSZWFkOCgweDM1KTsNCj4gKw0KPiArICBy ZXR1cm4gKFVJTlQzMikoKChVSU5UTikoKENtb3MweDM1IDw8IDgpICsgQ21vczB4MzQpIDw8IDE2 KSArDQo+IFNJWkVfMTZNQik7DQo+ICt9DQo+ICsNCj4gK1NUQVRJQw0KPiArVUlOVDY0DQo+ICtH ZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0Z2IoDQo+ICsgIFZPSUQNCj4gKykNCj4gK3sNCj4gKyAg VUlOVDMyIFNpemU7DQo+ICsgIFVJTlROICBDbW9zSW5kZXg7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gQ01PUyAweDViLTB4NWQgc3BlY2lmaWVzIHRoZSBzeXN0ZW0gbWVtb3J5IGFib3ZlIDRHQiBN Qi4NCj4gKyAgLy8gKiBDTU9TKDB4NWQpIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IHNpemUgYnl0 ZQ0KPiArICAvLyAqIENNT1MoMHg1YykgaXMgdGhlIG1pZGRsZSBzaXplIGJ5dGUNCj4gKyAgLy8g KiBDTU9TKDB4NWIpIGlzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBzaXplIGJ5dGUNCj4gKyAgLy8g KiBUaGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gNjRrYiBjaHVua3MNCj4gKyAgLy8NCj4gKw0KPiAr ICBTaXplID0gMDsNCj4gKyAgZm9yIChDbW9zSW5kZXggPSAweDVkOyBDbW9zSW5kZXggPj0gMHg1 YjsgQ21vc0luZGV4LS0pIHsNCj4gKyAgICBTaXplID0gKFVJTlQzMikoU2l6ZSA8PCA4KSArIChV SU5UMzIpQ21vc1JlYWQ4KENtb3NJbmRleCk7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gTFNo aWZ0VTY0KFNpemUsIDE2KTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIEluc3RhbGxzIFNNQklP UyBpbmZvcm1hdGlvbiBmb3IgT1ZNRg0KPiArDQo+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAg TW9kdWxlJ3MgaW1hZ2UgaGFuZGxlDQo+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgUG9pbnRl ciBvZiBFRklfU1lTVEVNX1RBQkxFDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICBT bWJpb3MgZGF0YSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkDQo+ICsgIEByZXR2YWwgT3RoZXIgICAg ICAgICAgU21iaW9zIGRhdGEgd2FzIG5vdCBpbnN0YWxsZWQNCj4gKw0KPiArKiovDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK1NtYmlvc1RhYmxlUHVibGlzaEVudHJ5ICgNCj4gKyAgSU4g RUZJX0hBTkRMRSAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOIEVGSV9TWVNURU1fVEFC TEUgICAgICpTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfU01CSU9TX1BST1RPQ09MICAgICAgICpTbWJpb3M7 DQo+ICsgIFNNQklPU19UQUJMRV9UWVBFMTkgICAgICAgKlR5cGUxOVJlY29yZDsNCj4gKyAgRUZJ X1NNQklPU19IQU5ETEUgICAgICAgICBNZW1BcnJheU1hcHBlZEFkZHJTbWJpb3NIYW5kbGU7DQo+ ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgTnVtU2xvdHM7DQo+ICsgIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgVG90YWxNZW1vcnlTaXplOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEZp bmQgdGhlIFNNQklPUyBwcm90b2NvbA0KPiArICAvLw0KPiArICBTdGF0dXMgPSBnQlMtPkxvY2F0 ZVByb3RvY29sICgNCj4gKyAgICAgICAgICAgICAgICAgICZnRWZpU21iaW9zUHJvdG9jb2xHdWlk LA0KPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgIChWT0lE KiopJlNtYmlvcw0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKyAgLy8NCj4gKyAg Ly8gR2VuZXJhdGUgTWVtb3J5IEFycmF5IE1hcHBlZCBBZGRyZXNzIGluZm8NCj4gKyAgLy8NCj4g KyAgTnVtU2xvdHMgPSAyOw0KPiArICBUb3RhbE1lbW9yeVNpemUgPSAwOw0KPiArICBUb3RhbE1l bW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IoKTsNCj4gKyAgVHlwZTE5UmVj b3JkID0gQWxsb2NhdGVQb29sKHNpemVvZihTTUJJT1NfVEFCTEVfVFlQRTE5KSk7DQo+ICsgIFpl cm9NZW0oVHlwZTE5UmVjb3JkLCBzaXplb2YoU01CSU9TX1RBQkxFX1RZUEUxOSkpOw0KPiArICBU eXBlMTlSZWNvcmQtPkhkci5UeXBlID0NCj4gRUZJX1NNQklPU19UWVBFX01FTU9SWV9BUlJBWV9N QVBQRURfQUREUkVTUzsNCj4gKyAgVHlwZTE5UmVjb3JkLT5IZHIuTGVuZ3RoID0gc2l6ZW9mKFNN QklPU19UQUJMRV9UWVBFMTkpOw0KPiArICBUeXBlMTlSZWNvcmQtPkhkci5IYW5kbGUgPSAwOw0K PiArICBUeXBlMTlSZWNvcmQtPlN0YXJ0aW5nQWRkcmVzcyA9IDA7DQo+ICsgIFR5cGUxOVJlY29y ZC0+RW5kaW5nQWRkcmVzcyA9IChVSU5UMzIpUlNoaWZ0VTY0KFRvdGFsTWVtb3J5U2l6ZSwgMTAp IC0NCj4gMTsNCj4gKyAgVHlwZTE5UmVjb3JkLT5NZW1vcnlBcnJheUhhbmRsZSA9IFNNQklPU19I QU5ETEVfUElfUkVTRVJWRUQ7DQo+ICsgIFR5cGUxOVJlY29yZC0+UGFydGl0aW9uV2lkdGggPSAo VUlOVDgpKE51bVNsb3RzKTsNCj4gKw0KPiArICBNZW1BcnJheU1hcHBlZEFkZHJTbWJpb3NIYW5k bGUgPSBTTUJJT1NfSEFORExFX1BJX1JFU0VSVkVEOw0KPiArICBTdGF0dXMgPSBTbWJpb3MtPkFk ZChTbWJpb3MsIE5VTEwsDQo+ICZNZW1BcnJheU1hcHBlZEFkZHJTbWJpb3NIYW5kbGUsDQo+IChF RklfU01CSU9TX1RBQkxFX0hFQURFUiopVHlwZTE5UmVjb3JkKTsNCj4gKyAgQVNTRVJUX0VGSV9F UlJPUihTdGF0dXMpOw0KPiArDQo+ICsgIFRvdGFsTWVtb3J5U2l6ZSA9IEdldFN5c3RlbU1lbW9y eVNpemVBYm92ZTRnYigpOw0KPiArICBUeXBlMTlSZWNvcmQtPlN0YXJ0aW5nQWRkcmVzcyA9IDB4 RkZGRkZGRkY7DQo+ICsgIFR5cGUxOVJlY29yZC0+RXh0ZW5kZWRTdGFydGluZ0FkZHJlc3MgPSAw eEZGRkZGRkZGOw0KPiArICBUeXBlMTlSZWNvcmQtPkV4dGVuZGVkRW5kaW5nQWRkcmVzcyA9IFRv dGFsTWVtb3J5U2l6ZSArIDB4RkZGRkZGRkYgLQ0KPiAxOw0KPiArDQo+ICsgIE1lbUFycmF5TWFw cGVkQWRkclNtYmlvc0hhbmRsZSA9IFNNQklPU19IQU5ETEVfUElfUkVTRVJWRUQ7DQo+ICsgIFN0 YXR1cyA9IFNtYmlvcy0+QWRkKFNtYmlvcywgTlVMTCwNCj4gJk1lbUFycmF5TWFwcGVkQWRkclNt Ymlvc0hhbmRsZSwNCj4gKEVGSV9TTUJJT1NfVEFCTEVfSEVBREVSKilUeXBlMTlSZWNvcmQpOw0K PiArICBGcmVlUG9vbChUeXBlMTlSZWNvcmQpOw0KPiArICBBU1NFUlRfRUZJX0VSUk9SKFN0YXR1 cyk7DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL0FjcGlUYWJsZXMuaW5mDQo+ IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvQWNwaVRhYmxl cy5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uODM5NjI2 ZWI4Ng0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9BY3BpVGFibGVzL0FjcGlUYWJsZXMuaW5mDQo+IEBAIC0wLDAgKzEsMzEgQEANCj4g KyMjIEBmaWxlDQo+ICsjICBDb21wb25lbnQgZGVzY3JpcHRpb24gZmlsZSBmb3IgUGxhdGZvcm1B Y3BpVGFibGVzIG1vZHVsZS4NCj4gKyMNCj4gKyMgIEFDUEkgdGFibGUgZGF0YSBhbmQgQVNMIHNv dXJjZXMgcmVxdWlyZWQgdG8gYm9vdCB0aGUgcGxhdGZvcm0uDQo+ICsjDQo+ICsjIENvcHlyaWdo dCAoYykgMjAwOCAtIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu IDxCUj4NCj4gKyMNCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gKyMNCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAg ICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAg ICAgICAgICAgICA9IFBsYXRmb3JtQWNwaVRhYmxlcw0KPiArICBGSUxFX0dVSUQgICAgICAgICAg ICAgICAgICAgICAgPSA3RTM3NEUyNS04RTAxLTRGRUUtODdGMi0zOTBDMjNDNjA2Q0QNCj4gKyAg TU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gVVNFUl9ERUZJTkVEDQo+ICsgIFZFUlNJ T05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiArDQo+ICsjDQo+ICsjIFRoZSBmb2xs b3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQg YnkgdGhlIGJ1aWxkDQo+IHRvb2xzLg0KPiArIw0KPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAg ICAgICAgICAgPSBJQTMyIFg2NCBFQkMNCj4gKyMNCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFBs YXRmb3JtLmgNCj4gKyAgRHNkdC5hc2wNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cv TWRlUGtnLmRlYw0KPiArDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvQWNwaVRhYmxlcy9Ec2R0LmFzbA0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9BY3BpVGFibGVzL0RzZHQuYXNsDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAuLjc2YThmYmMwODENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9Ec2R0LmFzbA0KPiBA QCAtMCwwICsxLDgyMSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIENvbnRhaW5zIHJvb3QgbGV2ZWwg bmFtZSBzcGFjZSBvYmplY3RzIGZvciB0aGUgcGxhdGZvcm0NCj4gKw0KPiArICBDb3B5cmlnaHQg KGMpIDIwMDggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4g Kw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiAr KiovDQo+ICsNCj4gK0RlZmluaXRpb25CbG9jayAoIkRzZHQuYW1sIiwgIkRTRFQiLCAxLCAiSU5U RUwgIiwgIk9WTUYgICAgIiwgNCkgew0KPiArICAvLw0KPiArICAvLyBTeXN0ZW0gU2xlZXAgU3Rh dGVzDQo+ICsgIC8vDQo+ICsgIE5hbWUgKFxfUzMsIFBhY2thZ2UgKCkgezUsIDUsIDAsIDB9KQ0K PiArICBOYW1lIChcX1M0LCBQYWNrYWdlICgpIHs2LCA2LCAwLCAwfSkNCj4gKyAgTmFtZSAoXF9T NSwgUGFja2FnZSAoKSB7NywgNywgMCwgMH0pDQo+ICsNCj4gKyAgTmFtZSAoR1BJQywgWmVybykN Cj4gKyAgTWV0aG9kIChfUElDLCAxLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BJQzogSW50ZXJydXB0 IE1vZGVsDQo+ICsgIHsNCj4gKyAgICAgIEdQSUMgPSBBcmcwDQo+ICsgIH0NCj4gKyAgLy8NCj4g KyAgLy8gIFN5c3RlbSBCdXMNCj4gKyAgLy8NCj4gKyAgU2NvcGUgKFxfU0IpIHsNCj4gKyAgICAv Lw0KPiArICAgIC8vIFBDSSBSb290IEJyaWRnZQ0KPiArICAgIC8vDQo+ICsgICAgRGV2aWNlIChQ Q0kwKSB7DQo+ICsgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQTlAwQTAzIikpDQo+ICsgICAg ICBOYW1lIChfQURSLCAweDAwMDAwMDAwKQ0KPiArICAgICAgTmFtZSAoX0JCTiwgMHgwMCkNCj4g KyAgICAgIE5hbWUgKF9VSUQsIDB4MDApDQo+ICsNCj4gKw0KPiArICAgICAgLy8gQ3VycmVudCBy ZXNvdXJjZSBzZXR0aW5ncw0KPiArICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAo KSB7DQo+ICsgICAgICAgIFdPUkRCdXNOdW1iZXIgKCAgICAgICAgICAvLyBCdXMgbnVtYmVyIHJl c291cmNlICgwKTsgdGhlIGJyaWRnZSBwcm9kdWNlcw0KPiBidXMgbnVtYmVycyBmb3IgaXRzIHN1 YnNlcXVlbnQgYnVzZXMNCj4gKyAgICAgICAgICBSZXNvdXJjZVByb2R1Y2VyLCAgICAgIC8vIGJp dCAwIG9mIGdlbmVyYWwgZmxhZ3MgaXMgMQ0KPiArICAgICAgICAgIE1pbkZpeGVkLCAgICAgICAg ICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gKyAgICAgICAgICBNYXhGaXhlZCwgICAgICAgICAg ICAgIC8vIFJhbmdlIGlzIGZpeGVkDQo+ICsgICAgICAgICAgUG9zRGVjb2RlLCAgICAgICAgICAg ICAvLyBQb3NEZWNvZGUNCj4gKyAgICAgICAgICAweDAwMDAsICAgICAgICAgICAgICAgIC8vIEdy YW51bGFyaXR5DQo+ICsgICAgICAgICAgMHgwMDAwLCAgICAgICAgICAgICAgICAvLyBNaW4NCj4g KyAgICAgICAgICAweDAwRkYsICAgICAgICAgICAgICAgIC8vIE1heA0KPiArICAgICAgICAgIDB4 MDAwMCwgICAgICAgICAgICAgICAgLy8gVHJhbnNsYXRpb24NCj4gKyAgICAgICAgICAweDAxMDAg ICAgICAgICAgICAgICAgIC8vIFJhbmdlIExlbmd0aCA9IE1heC1NaW4rMQ0KPiArICAgICAgICAg ICkNCj4gKw0KPiArICAgICAgICBJTyAoRGVjb2RlMTYsIDB4Q0Y4LCAweENGOCwgMHgwMSwgMHgw OCkgICAgICAgLy9Db25zdW1lZCByZXNvdXJjZQ0KPiAoMHhDRjgtMHhDRkYpDQo+ICsNCj4gKyAg ICAgICAgV09SRElPICggICAgICAgICAgICAgICAgIC8vIENvbnN1bWVkLWFuZC1wcm9kdWNlZCBy ZXNvdXJjZSAoYWxsIEkvTyBiZWxvdw0KPiBDRjgpDQo+ICsgICAgICAgICAgUmVzb3VyY2VQcm9k dWNlciwgICAgICAvLyBiaXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDANCj4gKyAgICAgICAgICBN aW5GaXhlZCwgICAgICAgICAgICAgIC8vIFJhbmdlIGlzIGZpeGVkDQo+ICsgICAgICAgICAgTWF4 Rml4ZWQsICAgICAgICAgICAgICAvLyBSYW5nZSBpcyBmaXhlZA0KPiArICAgICAgICAgIFBvc0Rl Y29kZSwNCj4gKyAgICAgICAgICBFbnRpcmVSYW5nZSwNCj4gKyAgICAgICAgICAweDAwMDAsICAg ICAgICAgICAgICAgIC8vIEdyYW51bGFyaXR5DQo+ICsgICAgICAgICAgMHgwMDAwLCAgICAgICAg ICAgICAgICAvLyBNaW4NCj4gKyAgICAgICAgICAweDBDRjcsICAgICAgICAgICAgICAgIC8vIE1h eA0KPiArICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8gVHJhbnNsYXRpb24NCj4g KyAgICAgICAgICAweDBDRjggICAgICAgICAgICAgICAgIC8vIFJhbmdlIExlbmd0aA0KPiArICAg ICAgICAgICkNCj4gKw0KPiArICAgICAgICBXT1JESU8gKCAgICAgICAgICAgICAgICAgLy8gQ29u c3VtZWQtYW5kLXByb2R1Y2VkIHJlc291cmNlIChhbGwgSS9PIGFib3ZlDQo+IENGRikNCj4gKyAg ICAgICAgICBSZXNvdXJjZVByb2R1Y2VyLCAgICAgIC8vIGJpdCAwIG9mIGdlbmVyYWwgZmxhZ3Mg aXMgMA0KPiArICAgICAgICAgIE1pbkZpeGVkLCAgICAgICAgICAgICAgLy8gUmFuZ2UgaXMgZml4 ZWQNCj4gKyAgICAgICAgICBNYXhGaXhlZCwgICAgICAgICAgICAgIC8vIFJhbmdlIGlzIGZpeGVk DQo+ICsgICAgICAgICAgUG9zRGVjb2RlLA0KPiArICAgICAgICAgIEVudGlyZVJhbmdlLA0KPiAr ICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8gR3JhbnVsYXJpdHkNCj4gKyAgICAg ICAgICAweDBEMDAsICAgICAgICAgICAgICAgIC8vIE1pbg0KPiArICAgICAgICAgIDB4RkZGRiwg ICAgICAgICAgICAgICAgLy8gTWF4DQo+ICsgICAgICAgICAgMHgwMDAwLCAgICAgICAgICAgICAg ICAvLyBUcmFuc2xhdGlvbg0KPiArICAgICAgICAgIDB4RjMwMCAgICAgICAgICAgICAgICAgLy8g UmFuZ2UgTGVuZ3RoDQo+ICsgICAgICAgICAgKQ0KPiArDQo+ICsgICAgICAgIERXT1JETUVNT1JZ ICggICAgICAgICAgICAvLyBEZXNjcmlwdG9yIGZvciBsZWdhY3kgVkdBIHZpZGVvIFJBTQ0KPiAr ICAgICAgICAgIFJlc291cmNlUHJvZHVjZXIsICAgICAgLy8gYml0IDAgb2YgZ2VuZXJhbCBmbGFn cyBpcyAwDQo+ICsgICAgICAgICAgUG9zRGVjb2RlLA0KPiArICAgICAgICAgIE1pbkZpeGVkLCAg ICAgICAgICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gKyAgICAgICAgICBNYXhGaXhlZCwgICAg ICAgICAgICAgIC8vIFJhbmdlIGlzIEZpeGVkDQo+ICsgICAgICAgICAgQ2FjaGVhYmxlLA0KPiAr ICAgICAgICAgIFJlYWRXcml0ZSwNCj4gKyAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgICAg IC8vIEdyYW51bGFyaXR5DQo+ICsgICAgICAgICAgMHgwMDBBMDAwMCwgICAgICAgICAgICAvLyBN aW4NCj4gKyAgICAgICAgICAweDAwMEJGRkZGLCAgICAgICAgICAgIC8vIE1heA0KPiArICAgICAg ICAgIDB4MDAwMDAwMDAsICAgICAgICAgICAgLy8gVHJhbnNsYXRpb24NCj4gKyAgICAgICAgICAw eDAwMDIwMDAwICAgICAgICAgICAgIC8vIFJhbmdlIExlbmd0aA0KPiArICAgICAgICAgICkNCj4g Kw0KPiArICAgICAgICBEV09SRE1FTU9SWSAoICAgICAgICAgICAgLy8gRGVzY3JpcHRvciBmb3Ig MzItYml0IE1NSU8NCj4gKyAgICAgICAgICBSZXNvdXJjZVByb2R1Y2VyLCAgICAgIC8vIGJpdCAw IG9mIGdlbmVyYWwgZmxhZ3MgaXMgMA0KPiArICAgICAgICAgIFBvc0RlY29kZSwNCj4gKyAgICAg ICAgICBNaW5GaXhlZCwgICAgICAgICAgICAgIC8vIFJhbmdlIGlzIGZpeGVkDQo+ICsgICAgICAg ICAgTWF4Rml4ZWQsICAgICAgICAgICAgICAvLyBSYW5nZSBpcyBGaXhlZA0KPiArICAgICAgICAg IE5vbkNhY2hlYWJsZSwNCj4gKyAgICAgICAgICBSZWFkV3JpdGUsDQo+ICsgICAgICAgICAgMHgw MDAwMDAwMCwgICAgICAgICAgICAvLyBHcmFudWxhcml0eQ0KPiArICAgICAgICAgIDB4RjAwMDAw MDAsICAgICAgICAgICAgLy8gTWluDQo+ICsgICAgICAgICAgMHhGQkZGRkZGRiwgICAgICAgICAg ICAvLyBNYXgNCj4gKyAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgICAgIC8vIFRyYW5zbGF0 aW9uDQo+ICsgICAgICAgICAgMHgwQzAwMDAwMCwgICAgICAgICAgICAvLyBSYW5nZSBMZW5ndGgN Cj4gKyAgICAgICAgICAsICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc291cmNlU291cmNlSW5k ZXgNCj4gKyAgICAgICAgICAsICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc291cmNlU291cmNl DQo+ICsgICAgICAgICAgUFczMiAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdG9yTmFtZQ0K PiArICAgICAgICAgICkNCj4gKyAgICAgIH0pDQo+ICsNCj4gKwkvLw0KPiArICAgICAgLy8gUENJ IEludGVycnVwdCBSb3V0aW5nIFRhYmxlIC0gUElDIE1vZGUgT25seQ0KPiArICAgICAgLy8NCj4g KyAgICAgIC8vIElmIHlvdSBjaGFuZ2UgdGhlIElSUSBtYXBwaW5nIGhlcmUgeW91IGFsc28gbmVl ZA0KPiArICAgICAgLy8gdG8gY2hhbmdlIHRoZSBtYXBwaW5nIGluIHRoZSBzb3V0aCBicmlkZ2UN Cj4gKyAgICAgIC8vIChwY2ktY29uZi5weSkgYW5kIGluIHRoZSBCSU9TLg0KPiArICAgICAgLy8g SU5UQSAtPiAweGEgKDEwKQ0KPiArICAgICAgLy8gSU5UQiAtPiAweGIgKDExKQ0KPiArICAgICAg Ly8gSU5UQyAtPiAweGEgKDEwKQ0KPiArICAgICAgLy8gSU5URCAtPiAweGIgKDExKQ0KPiArDQo+ ICsgICAgICAgTWV0aG9kIChfUFJULCAwLCBOb3RTZXJpYWxpemVkKSB7DQo+ICsgICAgICAgICAg IElmIChHUElDKSB7DQo+ICsgICAgICAgICAgICAgUmV0dXJuIChBUjAwKSAvLyBBUElDIE1vZGUN Cj4gKyAgICAgICAgICAgfQ0KPiArICAgICAgICAgICBSZXR1cm4gKFBSMDApIC8vIFBJQyBNb2Rl DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIE5hbWUgKFBSMDAsIFBhY2thZ2UoKXsNCj4gKwkg ICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9 LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGLCAweDAxLCBcX1NCLlBDSTAu TFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGLCAw eDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDBGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsg ICAgICAgICAgICAvLw0KPiArICAgICAgICAgICAgLy8gQnVzIDAsIERldmljZSAxDQo+ICsgICAg ICAgICAgICAvLw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRiwgMHgwMCwg XF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwMUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9 LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRiwgMHgwMywgXF9TQi5QQ0kw LkxQQy5MTktELCAweDAwfSwNCj4gKw0KPiArCSAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAw eDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAyRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywg MHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAweDAzLCBcX1NC LlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArICAgICAgICAgICAgLy8NCj4gKyAgICAgICAgICAg IC8vIEJ1cyAwLCBEZXZpY2UgMw0KPiArICAgICAgICAgICAgLy8NCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwM0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDNGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBD LkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgw MiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwM0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNEZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5L QSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDRGRkZGLCAweDAxLCBc X1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDA0RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwNEZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0s DQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNUZGRkYsIDB4MDAsIFxfU0Iu UENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVG RkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDA1RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMu TE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYs IDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDZGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktD LCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDMsIFxf U0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwN0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4 MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA3RkZGRiwgMHgwMiwgXF9TQi5Q Q0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwN0ZG RkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwOEZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0s DQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAxLCBcX1NCLlBDSTAu TFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA4RkZGRiwg MHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwOEZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMu TE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDlGRkZGLCAweDAx LCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDA5RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwOUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgw MH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQUZGRkYsIDB4MDAsIFxf U0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MEFGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDBBRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwN Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQUZGRkYsIDB4MDMsIFxfU0IuUENJMC5M UEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQkZG RkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMEJGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBCRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5M TktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQkZGRkYsIDB4MDMs IFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwQ0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMENGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0Is IDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBDRkZGRiwgMHgwMiwgXF9T Qi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw Q0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwREZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgw MH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMERGRkZGLCAweDAxLCBcX1NCLlBD STAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBERkZG RiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwREZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsN Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRUZGRkYsIDB4MDAsIFxfU0IuUENJMC5M UEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAw eDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDBFRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwg MHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRkYsIDB4MDAs IFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMEZGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAw fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRkYsIDB4MDMsIFxfU0IuUENJ MC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MTBGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0s DQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgwMiwgXF9TQi5QQ0kw LkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTBGRkZG LCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDExRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwN Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTFGRkZGLCAweDAxLCBcX1NCLlBDSTAu TFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYs IDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDExRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gKw0K PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDAsIFxfU0IuUENJMC5M UEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEyRkZGRiwg MHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwMTJGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiArICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5L RCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTNGRkZGLCAw eDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxM0ZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktD LCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTNGRkZGLCAweDAzLCBc X1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDE0RkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTRGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0Is IDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDIsIFxf U0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDE0RkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gKw0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwg MHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE1RkZGRiwgMHgwMSwgXF9T Qi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MTVGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0s DQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAwLCBcX1NC LlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx NkZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDE2RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwN Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAzLCBcX1NCLlBDSTAu TFBDLkxOS0QsIDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE3 RkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwMTdGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0K PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDIsIFxfU0IuUENJMC5M UEMuTE5LQywgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE3RkZGRiwg MHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gKw0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE4RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQ Qy5MTktCLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMThGRkZGLCAw eDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxOEZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUVGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBD LkxOS0EsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4 MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDFFRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUVGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0Qs IDB4MDB9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE5RkZGRiwgMHgw MCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMTlGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywg MHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE5RkZGRiwgMHgwMywgXF9T Qi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxQUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDFBRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAw eDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAyLCBcX1NC LlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx QUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMUJGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4 MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQkZGRkYsIDB4MDEsIFxfU0Iu UENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFC RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwMUJGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0K PiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFDRkZGRiwgMHgwMCwgXF9TQi5Q Q0kwLkxQQy5MTktBLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUNG RkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFDRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQ Qy5MTktELCAweDAwfSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxREZG RkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDFERkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMURGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBD LkxOS0MsIDB4MDB9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxREZGRkYsIDB4 MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwMUZGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMu TE5LQiwgMHgwMH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGRiwgMHgw MiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMUZGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiArICAgICAg ICAgIH0NCj4gKyAgICAgICAgKQ0KPiArDQo+ICsgICAgICBOYW1lKEFSMDAsIFBhY2thZ2UoKXsN Cj4gKw0KPiArCSAgICBQYWNrYWdlICgpIHsweDAwMEZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGLCAweDAyLCAwLCAxOH0sDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMEZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAg ICAgLy8NCj4gKyAgICAgICAgICAgIC8vIEJ1cyAwLCBEZXZpY2UgMQ0KPiArICAgICAgICAgICAg Ly8NCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkYsIDB4MDAsIDAsIDE2fSwN Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkYsIDB4MDEsIDAsIDE3fSwNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiAr CSAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDJGRkZGLCAweDAyLCAwLCAxOH0sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDJGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsgICAgICAgICAgICAvLw0KPiAr ICAgICAgICAgICAgLy8gQnVzIDAsIERldmljZSAzDQo+ICsgICAgICAgICAgICAvLw0KPiArICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMywgMCwgMTl9LA0KPiArDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDRGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDRGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDRGRkZGLCAweDAyLCAwLCAxOH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDRGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwNUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwNUZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwNUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwNUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDA2RkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDA2RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2 RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2RkZG RiwgMHgwMywgMCwgMTl9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdG RkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZG LCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZGLCAw eDAyLCAwLCAxOH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZGLCAweDAz LCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOEZGRkYsIDB4 MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOEZGRkYsIDB4MDEs IDAsIDE3fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOEZGRkYsIDB4MDIsIDAs IDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOEZGRkYsIDB4MDMsIDAsIDE5 fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwgMHgwMCwgMCwg MTZ9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwgMHgwMSwgMCwgMTd9 LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwgMHgwMiwgMCwgMTh9LA0K PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwgMHgwMywgMCwgMTl9LA0KPiAr DQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEFGRkZGLCAweDAwLCAwLCAxNn0sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEFGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEFGRkZGLCAweDAyLCAwLCAxOH0sDQo+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMEFGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQkZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQkZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwQkZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwQkZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDBDRkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDBDRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDBDRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDBDRkZGRiwgMHgwMywgMCwgMTl9LA0KPiArDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMERGRkZGLCAweDAwLCAwLCAxNn0sDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMERGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMERGRkZGLCAweDAyLCAwLCAxOH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMERGRkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwRUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwRUZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw RUZGRkYsIDB4MDIsIDBDLCAxOH0sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVG RkZGLCAweDAzLCAwLCAxOX0sDQo+ICsNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw RkZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZG RkYsIDB4MDEsIDAsIDE3fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRkYs IDB4MDIsIDAsIDE4fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRkYsIDB4 MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYs IDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTBGRkZGLCAw eDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgw MiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4MDMs IDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4 MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTFGRkZGLCAweDAx LCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDExRkZGRiwgMHgwMiwg MCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDMsIDAs IDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDAs IDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAxLCAw LCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEyRkZGRiwgMHgwMiwgMCwg MTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4MDMsIDAsIDE5 fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxM0ZGRkYsIDB4MDAsIDAs IDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTNGRkZGLCAweDAxLCAwLCAx N30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMiwgMCwgMTh9 LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxM0ZGRkYsIDB4MDMsIDAsIDE5fSwN Cj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDAsIDAsIDE2 fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTRGRkZGLCAweDAxLCAwLCAxN30s DQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE0RkZGRiwgMHgwMiwgMCwgMTh9LA0K PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDMsIDAsIDE5fSwNCj4g Kw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDAsIDAsIDE2fSwN Cj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTVGRkZGLCAweDAxLCAwLCAxN30sDQo+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE1RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0K PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNkZGRkYsIDB4MDAsIDAsIDE2fSwNCj4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE2RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNkZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTdGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE3RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAg ICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMThGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDE4RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMUVGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDFFRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMTlGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDE5RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxQUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDFBRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxQUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxQkZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwMUJGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDFCRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxQkZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwMUNGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDFDRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxQ0ZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxREZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMURGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMDFERkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAxREZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKw0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxRkZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwMUZGRkZGLCAweDAxLCAwLCAxN30sDQo+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDFGRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx RkZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gKyAgICAgICAgICB9DQo+ICsgICAgICAgICkNCj4gKw0K PiArICAgICAgLy8NCj4gKyAgICAgIC8vIFBDSSB0byBJU0EgQnJpZGdlIChCdXMgMCwgRGV2aWNl IDcsIEZ1bmN0aW9uIDApDQo+ICsgICAgICAvLw0KPiArICAgICAgRGV2aWNlIChMUEMpIHsNCj4g KyAgICAgICAgTmFtZSAoX0FEUiwgMHgwMDFGMDAwMCkNCj4gKw0KPiArICAgICAgICAvLw0KPiAr ICAgICAgICAvLyBQQ0kgSW50ZXJydXB0IFJvdXRpbmcgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMN Cj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChQUlIwLCBQQ0lfQ29u ZmlnLCAweDYwLCAweDBDKQ0KPiArICAgICAgICBGaWVsZCAoUFJSMCwgQU5ZQUNDLCBOT0xPQ0ss IFBSRVNFUlZFKSB7DQo+ICsgICAgICAgICAgUElSQSwgOCwNCj4gKyAgICAgICAgICBQSVJCLCA4 LA0KPiArICAgICAgICAgIFBJUkMsIDgsDQo+ICsgICAgICAgICAgUElSRCwgOCwNCj4gKyAgICAg ICAgICBPZmZzZXQgKDB4MDQpLA0KPiArICAgICAgICAgIFBJUkUsIDgsDQo+ICsgICAgICAgICAg UElSRiwgOCwNCj4gKyAgICAgICAgICBQSVJHLCA4LA0KPiArICAgICAgICAgIFBJUkgsIDgNCj4g KyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIF9TVEEgbWV0aG9k IGZvciBMTktBLCBMTktCLCBMTktDLCBMTktELCBMTktFLCBMTktGLCBMTktHLCBMTktIDQo+ICsg ICAgICAgIC8vDQo+ICsgICAgICAgIE1ldGhvZCAoUFNUQSwgMSwgTm90U2VyaWFsaXplZCkgew0K PiArICAgICAgICAgIElmIChBbmQgKEFyZzAsIDB4ODApKSB7DQo+ICsgICAgICAgICAgICBSZXR1 cm4gKDB4OSkNCj4gKyAgICAgICAgICB9IEVsc2Ugew0KPiArICAgICAgICAgICAgUmV0dXJuICgw eEIpDQo+ICsgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgLy8NCj4g KyAgICAgICAgLy8gX0RJUyBtZXRob2QgZm9yIExOS0EsIExOS0IsIExOS0MsIExOS0QsIExOS0Us IExOS0YsIExOS0csIExOS0gNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgTWV0aG9kIChQRElT LCAxLCBOb3RTZXJpYWxpemVkKSB7DQo+ICsgICAgICAgICAgT3IgKEFyZzAsIDB4ODAsIEFyZzAp DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBfQ1JTIG1l dGhvZCBmb3IgTE5LQSwgTE5LQiwgTE5LQywgTE5LRCwgTE5LRSwgTE5LRiwgTE5LRywgTE5LSA0K PiArICAgICAgICAvLw0KPiArICAgICAgICBNZXRob2QgKFBDUlMsIDEsIE5vdFNlcmlhbGl6ZWQp IHsNCj4gKyAgICAgICAgICBOYW1lIChCVUYwLCBSZXNvdXJjZVRlbXBsYXRlICgpIHtJUlEgKExl dmVsLCBBY3RpdmVMb3csIFNoYXJlZCl7MH19KQ0KPiArICAgICAgICAgIC8vDQo+ICsgICAgICAg ICAgLy8gRGVmaW5lIHJlZmVyZW5jZXMgdG8gYnVmZmVyIGVsZW1lbnRzDQo+ICsgICAgICAgICAg Ly8NCj4gKyAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEJVRjAsIDB4MDEsIElSUVcpICAvLyBJ UlEgbG93DQo+ICsgICAgICAgICAgLy8NCj4gKyAgICAgICAgICAvLyBXcml0ZSBjdXJyZW50IHNl dHRpbmdzIGludG8gSVJRIGRlc2NyaXB0b3INCj4gKyAgICAgICAgICAvLw0KPiArICAgICAgICAg IElmIChBbmQgKEFyZzAsIDB4ODApKSB7DQo+ICsgICAgICAgICAgICBTdG9yZSAoWmVybywgTG9j YWwwKQ0KPiArICAgICAgICAgIH0gRWxzZSB7DQo+ICsgICAgICAgICAgICBTdG9yZSAoT25lLCBM b2NhbDApDQo+ICsgICAgICAgICAgfQ0KPiArICAgICAgICAgIC8vDQo+ICsgICAgICAgICAgLy8g U2hpZnQgMSBieSB2YWx1ZSBpbiByZWdpc3RlciA3MA0KPiArICAgICAgICAgIC8vDQo+ICsgICAg ICAgICAgU2hpZnRMZWZ0IChMb2NhbDAsIEFuZCAoQXJnMCwgMHgwRiksIElSUVcpICAgLy8gU2F2 ZSBpbiBidWZmZXINCj4gKyAgICAgICAgICBSZXR1cm4gKEJVRjApICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBSZXR1cm4gQnVmMA0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAg ICAgLy8NCj4gKyAgICAgICAgLy8gX1BSUyByZXNvdXJjZSBmb3IgTE5LQSwgTE5LQiwgTE5LQywg TE5LRCwgTE5LRSwgTE5LRiwgTE5LRywgTE5LSA0KPiArICAgICAgICAvLw0KPiArICAgICAgICBO YW1lIChQUFJTLCBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCj4gKyAgICAgICAgICBJUlEgKExldmVs LCBBY3RpdmVMb3csIFNoYXJlZCkgezMsIDQsIDUsIDcsIDksIDEwLCAxMSwgMTIsIDE0LCAxNX0N Cj4gKyAgICAgICAgfSkNCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBfU1JTIG1l dGhvZCBmb3IgTE5LQSwgTE5LQiwgTE5LQywgTE5LRCwgTE5LRSwgTE5LRiwgTE5LRywgTE5LSA0K PiArICAgICAgICAvLw0KPiArICAgICAgICBNZXRob2QgKFBTUlMsIDIsIE5vdFNlcmlhbGl6ZWQp IHsNCj4gKyAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEFyZzEsIDB4MDEsIElSUVcpICAgICAg Ly8gSVJRIGxvdw0KPiArICAgICAgICAgIEZpbmRTZXRSaWdodEJpdCAoSVJRVywgTG9jYWwwKSAg ICAgICAgICAvLyBTZXQgSVJRDQo+ICsgICAgICAgICAgSWYgKExOb3RFcXVhbCAoSVJRVywgWmVy bykpIHsNCj4gKyAgICAgICAgICAgIEFuZCAoTG9jYWwwLCAweDdGLCBMb2NhbDApDQo+ICsgICAg ICAgICAgICBEZWNyZW1lbnQgKExvY2FsMCkNCj4gKyAgICAgICAgICB9IEVsc2Ugew0KPiArICAg ICAgICAgICAgT3IgKExvY2FsMCwgMHg4MCwgTG9jYWwwKQ0KPiArICAgICAgICAgIH0NCj4gKyAg ICAgICAgICBTdG9yZSAoTG9jYWwwLCBBcmcwKQ0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAg ICAgLy8NCj4gKyAgICAgICAgLy8gUENJIElSUSBMaW5rIEENCj4gKyAgICAgICAgLy8NCj4gKyAg ICAgICAgRGV2aWNlIChMTktBKSB7DQo+ICsgICAgICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEKCJQ TlAwQzBGIikpDQo+ICsgICAgICAgICAgTmFtZSAoX1VJRCwgMSkNCj4gKw0KPiArICAgICAgICAg IE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBTVEEgKFBJUkEpKSB9 DQo+ICsgICAgICAgICAgTWV0aG9kIChfRElTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFBESVMgKFBJ UkEpICB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJl dHVybiAoUENSUyAoUElSQSkpIH0NCj4gKyAgICAgICAgICBNZXRob2QgKF9QUlMsIDAsIE5vdFNl cmlhbGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfU1JTLCAx LCBOb3RTZXJpYWxpemVkKSB7IFBTUlMgKFBJUkEsIEFyZzApIH0NCj4gKyAgICAgICAgfQ0KPiAr DQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFBDSSBJUlEgTGluayBCDQo+ICsgICAgICAg IC8vDQo+ICsgICAgICAgIERldmljZSAoTE5LQikgew0KPiArICAgICAgICAgIE5hbWUgKF9ISUQs IEVJU0FJRCgiUE5QMEMwRiIpKQ0KPiArICAgICAgICAgIE5hbWUgKF9VSUQsIDIpDQo+ICsNCj4g KyAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RB IChQSVJCKSkgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkg eyBQRElTIChQSVJCKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxp emVkKSB7IFJldHVybiAoUENSUyAoUElSQikpIH0NCj4gKyAgICAgICAgICBNZXRob2QgKF9QUlMs IDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQo+ICsgICAgICAgICAgTWV0aG9k IChfU1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7IFBTUlMgKFBJUkIsIEFyZzApIH0NCj4gKyAgICAg ICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFBDSSBJUlEgTGluayBDDQo+ ICsgICAgICAgIC8vDQo+ICsgICAgICAgIERldmljZSAoTE5LQykgew0KPiArICAgICAgICAgIE5h bWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIpKQ0KPiArICAgICAgICAgIE5hbWUgKF9VSUQsIDMp DQo+ICsNCj4gKyAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0 dXJuIChQU1RBIChQSVJDKSkgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2Vy aWFsaXplZCkgeyBQRElTIChQSVJDKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBO b3RTZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAoUElSQykpIH0NCj4gKyAgICAgICAgICBNZXRo b2QgKF9QUlMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQo+ICsgICAgICAg ICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7IFBTUlMgKFBJUkMsIEFyZzApIH0N Cj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFBDSSBJUlEg TGluayBEDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIERldmljZSAoTE5LRCkgew0KPiArICAg ICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIpKQ0KPiArICAgICAgICAgIE5hbWUg KF9VSUQsIDQpDQo+ICsNCj4gKyAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6 ZWQpIHsgUmV0dXJuIChQU1RBIChQSVJEKSkgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0RJUywg MCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJEKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChf Q1JTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAoUElSRCkpIH0NCj4gKyAgICAg ICAgICBNZXRob2QgKF9QUlMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQo+ ICsgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7IFBTUlMgKFBJUkQs IEFyZzApIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8v IFBDSSBJUlEgTGluayBFDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIERldmljZSAoTE5LRSkg ew0KPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIpKQ0KPiArICAgICAg ICAgIE5hbWUgKF9VSUQsIDUpDQo+ICsNCj4gKyAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5v dFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RBIChQSVJFKSkgfQ0KPiArICAgICAgICAgIE1ldGhv ZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJFKSB9DQo+ICsgICAgICAgICAg TWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAoUElSRSkpIH0N Cj4gKyAgICAgICAgICBNZXRob2QgKF9QUlMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQ UFJTKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7IFBT UlMgKFBJUkUsIEFyZzApIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsg ICAgICAgIC8vIFBDSSBJUlEgTGluayBGDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIERldmlj ZSAoTE5LRikgew0KPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIpKQ0K PiArICAgICAgICAgIE5hbWUgKF9VSUQsIDYpDQo+ICsNCj4gKyAgICAgICAgICBNZXRob2QgKF9T VEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RBIChQSVJGKSkgfQ0KPiArICAgICAg ICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJGKSB9DQo+ICsg ICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAo UElSRikpIH0NCj4gKyAgICAgICAgICBNZXRob2QgKF9QUlMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsg UmV0dXJuIChQUFJTKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxp emVkKSB7IFBTUlMgKFBJUkYsIEFyZzApIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAg IC8vDQo+ICsgICAgICAgIC8vIFBDSSBJUlEgTGluayBHDQo+ICsgICAgICAgIC8vDQo+ICsgICAg ICAgIERldmljZSAoTE5LRykgew0KPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5Q MEMwRiIpKQ0KPiArICAgICAgICAgIE5hbWUgKF9VSUQsIDcpDQo+ICsNCj4gKyAgICAgICAgICBN ZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RBIChQSVJHKSkgfQ0K PiArICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJH KSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVy biAoUENSUyAoUElSRykpIH0NCj4gKyAgICAgICAgICBNZXRob2QgKF9QUlMsIDAsIE5vdFNlcmlh bGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBO b3RTZXJpYWxpemVkKSB7IFBTUlMgKFBJUkcsIEFyZzApIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFBDSSBJUlEgTGluayBIDQo+ICsgICAgICAgIC8v DQo+ICsgICAgICAgIERldmljZSAoTE5LSCkgew0KPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJ U0FJRCgiUE5QMEMwRiIpKQ0KPiArICAgICAgICAgIE5hbWUgKF9VSUQsIDgpDQo+ICsNCj4gKyAg ICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RBIChQ SVJIKSkgfQ0KPiArICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQ RElTIChQSVJIKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVk KSB7IFJldHVybiAoUENSUyAoUElSSCkpIH0NCj4gKyAgICAgICAgICBNZXRob2QgKF9QUlMsIDAs IE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQo+ICsgICAgICAgICAgTWV0aG9kIChf U1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7IFBTUlMgKFBJUkgsIEFyZzApIH0NCj4gKyAgICAgICAg fQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFByb2dyYW1tYWJsZSBJbnRlcnJ1 cHQgQ29udHJvbGxlciAoUElDKQ0KPiArICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2UoUElD KSB7DQo+ICsgICAgICAgICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMDAwMCIpKQ0KPiArICAg ICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgew0KPiArICAgICAgICAgICAg SU8gKERlY29kZTE2LCAweDAyMCwgMHgwMjAsIDB4MDAsIDB4MDIpDQo+ICsgICAgICAgICAgICBJ TyAoRGVjb2RlMTYsIDB4MEEwLCAweDBBMCwgMHgwMCwgMHgwMikNCj4gKyAgICAgICAgICAgIElP IChEZWNvZGUxNiwgMHg0RDAsIDB4NEQwLCAweDAwLCAweDAyKQ0KPiArICAgICAgICAgICAgSVJR Tm9GbGFncyAoKSB7Mn0NCj4gKyAgICAgICAgICB9KQ0KPiArICAgICAgICB9DQo+ICsNCj4gKyAg ICAgICAgLy8NCj4gKyAgICAgICAgLy8gSVNBIERNQQ0KPiArICAgICAgICAvLw0KPiArICAgICAg ICBEZXZpY2UgKERNQUMpIHsNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQTlAw MjAwIikpDQo+ICsgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDAsIDB4MDAsIDAsIDB4MTApDQo+ICsgICAg ICAgICAgICBJTyAoRGVjb2RlMTYsIDB4ODEsIDB4ODEsIDAsIDB4MDMpDQo+ICsgICAgICAgICAg ICBJTyAoRGVjb2RlMTYsIDB4ODcsIDB4ODcsIDAsIDB4MDEpDQo+ICsgICAgICAgICAgICBJTyAo RGVjb2RlMTYsIDB4ODksIDB4ODksIDAsIDB4MDMpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2Rl MTYsIDB4OGYsIDB4OGYsIDAsIDB4MDEpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4 YzAsIDB4YzAsIDAsIDB4MjApDQo+ICsgICAgICAgICAgICBETUEgKENvbXBhdGliaWxpdHksIE5v dEJ1c01hc3RlciwgVHJhbnNmZXI4KSB7NH0NCj4gKyAgICAgICAgICB9KQ0KPiArICAgICAgICB9 DQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gODI1NCBUaW1lcg0KPiArICAgICAg ICAvLw0KPiArICAgICAgICBEZXZpY2UoVE1SKSB7DQo+ICsgICAgICAgICAgTmFtZShfSElELEVJ U0FJRCgiUE5QMDEwMCIpKQ0KPiArICAgICAgICAgIE5hbWUoX0NSUywgUmVzb3VyY2VUZW1wbGF0 ZSAoKSB7DQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4NDAsIDB4NDAsIDB4MDAsIDB4 MDQpDQo+ICsgICAgICAgICAgICBJUlFOb0ZsYWdzICgpIHswfQ0KPiArICAgICAgICAgIH0pDQo+ ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBSZWFsIFRpbWUg Q2xvY2sNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNlIChSVEMpIHsNCj4gKyAgICAg ICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQTlAwQjAwIikpDQo+ICsgICAgICAgICAgTmFtZSAo X0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYs IDB4NzAsIDB4NzAsIDB4MDAsIDB4MDIpDQo+ICsgICAgICAgICAgICBJUlFOb0ZsYWdzICgpIHs4 fQ0KPiArICAgICAgICAgIH0pDQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiAr ICAgICAgICAvLyBQQ0FUIFNwZWFrZXINCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNl KFNQS1IpIHsNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDA4MDAiKSkNCj4g KyAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCj4gKyAgICAgICAg ICAgIElPIChEZWNvZGUxNiwgMHg2MSwgMHg2MSwgMHgwMSwgMHgwMSkNCj4gKyAgICAgICAgICB9 KQ0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gRmxvYXRp bmcgUG9pbnQgQ29wcm9jZXNzb3INCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNlKEZQ VSkgew0KPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwNCIpKQ0KPiArICAg ICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgew0KPiArICAgICAgICAgICAg SU8gKERlY29kZTE2LCAweEYwLCAweEYwLCAweDAwLCAweDEwKQ0KPiArICAgICAgICAgICAgSVJR Tm9GbGFncyAoKSB7MTN9DQo+ICsgICAgICAgICAgfSkNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsg ICAgICAgIC8vDQo+ICsgICAgICAgIC8vIEdlbmVyaWMgbW90aGVyYm9hcmQgZGV2aWNlcyBhbmQg cGllY2VzIHRoYXQgZG9uJ3QgZml0IGFueXdoZXJlIGVsc2UNCj4gKyAgICAgICAgLy8NCj4gKyAg ICAgICAgRGV2aWNlKFhUUkEpIHsNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQ TlAwQzAyIikpDQo+ICsgICAgICAgICAgTmFtZSAoX1VJRCwgMHgwMSkNCj4gKyAgICAgICAgICBO YW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCj4gKyAgICAgICAgICAgIElPIChEZWNv ZGUxNiwgMHgwMTAsIDB4MDEwLCAweDAwLCAweDEwKQ0KPiArICAgICAgICAgICAgSU8gKERlY29k ZTE2LCAweDAyMiwgMHgwMjIsIDB4MDAsIDB4MUUpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2Rl MTYsIDB4MDQ0LCAweDA0NCwgMHgwMCwgMHgxQykNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUx NiwgMHgwNjIsIDB4MDYyLCAweDAwLCAweDAyKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2 LCAweDA2NSwgMHgwNjUsIDB4MDAsIDB4MEIpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYs IDB4MDcyLCAweDA3MiwgMHgwMCwgMHgwRSkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwg MHgwODAsIDB4MDgwLCAweDAwLCAweDAxKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAw eDA4NCwgMHgwODQsIDB4MDAsIDB4MDMpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4 MDg4LCAweDA4OCwgMHgwMCwgMHgwMSkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgw OGMsIDB4MDhjLCAweDAwLCAweDAzKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDA5 MCwgMHgwOTAsIDB4MDAsIDB4MTApDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MEEy LCAweDBBMiwgMHgwMCwgMHgxRSkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwRTAs IDB4MEUwLCAweDAwLCAweDEwKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDFFMCwg MHgxRTAsIDB4MDAsIDB4MTApDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MTYwLCAw eDE2MCwgMHgwMCwgMHgxMCkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgyNzgsIDB4 Mjc4LCAweDAwLCAweDA4KQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDM3MCwgMHgz NzAsIDB4MDAsIDB4MDIpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4Mzc4LCAweDM3 OCwgMHgwMCwgMHgwOCkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHg0MDAsIDB4NDAw LCAweDAwLCAweDQwKSAgICAgICAvLyBQTUJMSzENCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUx NiwgMHg0NDAsIDB4NDQwLCAweDAwLCAweDEwKQ0KPiArICAgICAgICAgICAgSU8gKERlY29kZTE2 LCAweDY3OCwgMHg2NzgsIDB4MDAsIDB4MDgpDQo+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYs IDB4Nzc4LCAweDc3OCwgMHgwMCwgMHgwOCkNCj4gKyAgICAgICAgICAgIE1lbW9yeTMyRml4ZWQg KFJlYWRPbmx5LCAweEZFQzAwMDAwLCAweDEwMDApICAvLyBJTyBBUElDDQo+ICsgICAgICAgICAg ICBNZW1vcnkzMkZpeGVkIChSZWFkT25seSwgMHhGRUUwMDAwMCwgMHgxMDAwMDApIC8vIExBUElD DQo+ICsgICAgICAgICAgfSkNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsg ICAgICAgIC8vIFBTLzIgS2V5Ym9hcmQgYW5kIFBDL0FUIEVuaGFuY2VkIEtleWJvYXJkIDEwMS8x MDINCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgRGV2aWNlIChQUzJLKSB7DQo+ICsgICAgICAg ICAgTmFtZSAoX0hJRCwgRUlTQUlEICgiUE5QMDMwMyIpKQ0KPiArICAgICAgICAgIE5hbWUgKF9D SUQsIEVJU0FJRCAoIlBOUDAzMEIiKSkNCj4gKyAgICAgICAgICBOYW1lKF9DUlMsUmVzb3VyY2VU ZW1wbGF0ZSgpIHsNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHg2MCwgMHg2MCwgMHgw MCwgMHgwMSkNCj4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHg2NCwgMHg2NCwgMHgwMCwg MHgwMSkNCj4gKyAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkgezF9DQo+ICsgICAgICAgICAgfSkN Cj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFBTLzIgTW91 c2UgYW5kIE1pY3Jvc29mdCBNb3VzZQ0KPiArICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2Ug KFBTMk0pIHsgIC8vIFBTLzIgc3R5cGUgbW91c2UgcG9ydA0KPiArICAgICAgICAgIE5hbWUgKF9I SUQsIEVJU0FJRCAoIlBOUDBGMDMiKSkNCj4gKyAgICAgICAgICBOYW1lIChfQ0lELCBFSVNBSUQg KCJQTlAwRjEzIikpDQo+ICsgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSgp IHsNCj4gKyAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkgezEyfQ0KPiArICAgICAgICAgIH0pDQo+ ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBVQVJUIFNlcmlh bCBQb3J0IC0gQ09NMQ0KPiArICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2UgKFVBUjEpIHsN Cj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQTlAwNTAxIikpDQo+ICsgICAgICAg ICAgTmFtZSAoX0RETiwgIkNPTTEiKQ0KPiArICAgICAgICAgIE5hbWUgKF9VSUQsIDB4MDEpDQo+ ICsgICAgICAgICAgTmFtZShfQ1JTLFJlc291cmNlVGVtcGxhdGUoKSB7DQo+ICsgICAgICAgICAg ICBJTyAoRGVjb2RlMTYsIDB4M0Y4LCAweDNGOCwgMHgwMCwgMHgwOCkNCj4gKyAgICAgICAgICAg IElSUSAoRWRnZSwgQWN0aXZlSGlnaCwgRXhjbHVzaXZlLCApIHs0fQ0KPiArICAgICAgICAgIH0p DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBVQVJUIFNl cmlhbCBQb3J0IC0gQ09NMg0KPiArICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2UgKFVBUjIp IHsNCj4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQTlAwNTAxIikpDQo+ICsgICAg ICAgICAgTmFtZSAoX0RETiwgIkNPTTIiKQ0KPiArICAgICAgICAgIE5hbWUgKF9VSUQsIDB4MDIp DQo+ICsgICAgICAgICAgTmFtZShfQ1JTLFJlc291cmNlVGVtcGxhdGUoKSB7DQo+ICsgICAgICAg ICAgICBJTyAoRGVjb2RlMTYsIDB4MkY4LCAweDJGOCwgMHgwMCwgMHgwOCkNCj4gKyAgICAgICAg ICAgIElSUSAoRWRnZSwgQWN0aXZlSGlnaCwgRXhjbHVzaXZlLCApIHszfQ0KPiArICAgICAgICAg IH0pDQo+ICsgICAgICAgIH0NCj4gKyAgICAgIH0NCj4gKwl9DQo+ICsgIH0NCj4gK30NCj4gZGlm ZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL1Bs YXRmb3JtLmgNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxl cy9QbGF0Zm9ybS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAu LjYzOTVlYzExZTINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9QbGF0Zm9ybS5oDQo+IEBAIC0wLDAgKzEsNzUgQEAN Cj4gKy8qKiBAZmlsZQ0KPiArICBQbGF0Zm9ybSBzcGVjaWZpYyBkZWZpbmVzIGZvciBjb25zdHJ1 Y3RpbmcgQUNQSSB0YWJsZXMNCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTMgLSAyMDA4IElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsNCj4gKyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ ICsjaWZuZGVmIF9QbGF0Zm9ybV9oX0lOQ0xVREVEXw0KPiArI2RlZmluZSBfUGxhdGZvcm1faF9J TkNMVURFRF8NCj4gKw0KPiArI2luY2x1ZGUgPFBpRHhlLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0 cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsNCj4gKy8vDQo+ICsvLyBBQ1BJIHRhYmxlIGluZm9ybWF0 aW9uIHVzZWQgdG8gaW5pdGlhbGl6ZSB0YWJsZXMuDQo+ICsvLw0KPiArI2RlZmluZSBFRklfQUNQ SV9PRU1fSUQgICAgICAgICAgICdPJywnVicsJ00nLCdGJywnICcsJyAnICAgLy8gT0VNSUQgNiBi eXRlcyBsb25nDQo+ICsjZGVmaW5lIEVGSV9BQ1BJX09FTV9UQUJMRV9JRA0KPiBTSUdOQVRVUkVf NjQoJ08nLCdWJywnTScsJ0YnLCdFJywnRCcsJ0snLCcyJykgLy8gT0VNIHRhYmxlIGlkIDggYnl0 ZXMgbG9uZw0KPiArI2RlZmluZSBFRklfQUNQSV9PRU1fUkVWSVNJT04gICAgIDB4MDIwMDA4MjAN Cj4gKyNkZWZpbmUgRUZJX0FDUElfQ1JFQVRPUl9JRCAgICAgICBTSUdOQVRVUkVfMzIoJ08nLCdW JywnTScsJ0YnKQ0KPiArI2RlZmluZSBFRklfQUNQSV9DUkVBVE9SX1JFVklTSU9OIDB4MDAwMDAw OTcNCj4gKw0KPiArI2RlZmluZSBJTlRfTU9ERUwgICAgICAgMHgwMQ0KPiArI2RlZmluZSBTQ0lf SU5UX1ZFQ1RPUiAgMHgwMDA5DQo+ICsjZGVmaW5lIFNNSV9DTURfSU9fUE9SVCAweEIyDQo+ICsj ZGVmaW5lIEFDUElfRU5BQkxFICAgICAweDBFMQ0KPiArI2RlZmluZSBBQ1BJX0RJU0FCTEUgICAg MHgwMUUNCj4gKyNkZWZpbmUgUzRCSU9TX1JFUSAgICAgIDB4MDANCj4gKyNkZWZpbmUgUE0xYV9F VlRfQkxLICAgIDB4MDAwMDA0MDANCj4gKyNkZWZpbmUgUE0xYl9FVlRfQkxLICAgIDB4MDAwMDAw MDANCj4gKyNkZWZpbmUgUE0xYV9DTlRfQkxLICAgIDB4MDAwMDA0MDQNCj4gKyNkZWZpbmUgUE0x Yl9DTlRfQkxLICAgIDB4MDAwMDAwMDANCj4gKyNkZWZpbmUgUE0yX0NOVF9CTEsgICAgIDB4MDAw MDA0NTANCj4gKyNkZWZpbmUgUE1fVE1SX0JMSyAgICAgIDB4MDAwMDA0MDgNCj4gKyNkZWZpbmUg R1BFMF9CTEsgICAgICAgIDB4MDAwMDA0MjANCj4gKyNkZWZpbmUgR1BFMV9CTEsgICAgICAgIDB4 MDAwMDAwMDANCj4gKyNkZWZpbmUgUE0xX0VWVF9MRU4gICAgIDB4MDQNCj4gKyNkZWZpbmUgUE0x X0NOVF9MRU4gICAgIDB4MDQNCj4gKyNkZWZpbmUgUE0yX0NOVF9MRU4gICAgIDB4MDENCj4gKyNk ZWZpbmUgUE1fVE1fTEVOICAgICAgIDB4MDQNCj4gKyNkZWZpbmUgR1BFMF9CTEtfTEVOICAgIDB4 MTANCj4gKyNkZWZpbmUgR1BFMV9CTEtfTEVOICAgIDB4MDANCj4gKyNkZWZpbmUgR1BFMV9CQVNF ICAgICAgIDB4MDANCj4gKyNkZWZpbmUgUkVTRVJWRUQgICAgICAgIDB4MDANCj4gKyNkZWZpbmUg UF9MVkwyX0xBVCAgICAgIDB4MDA2NQ0KPiArI2RlZmluZSBQX0xWTDNfTEFUICAgICAgMHgwM0U5 DQo+ICsjZGVmaW5lIEZMVVNIX1NJWkUgICAgICAweDA0MDANCj4gKyNkZWZpbmUgRkxVU0hfU1RS SURFICAgIDB4MDAxMA0KPiArI2RlZmluZSBEVVRZX09GRlNFVCAgICAgMHgwMA0KPiArI2RlZmlu ZSBEVVRZX1dJRFRIICAgICAgMHgwMA0KPiArI2RlZmluZSBEQVlfQUxSTSAgICAgICAgMHgwRA0K PiArI2RlZmluZSBNT05fQUxSTSAgICAgICAgMHgwMA0KPiArI2RlZmluZSBDRU5UVVJZICAgICAg ICAgMHgwMA0KPiArI2RlZmluZSBGTEFHICAgICAgICAgICAgKEVGSV9BQ1BJXzJfMF9XQklOVkQg fCBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0FDUElfMl8wX1BST0NfQzEgfCBc DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0FDUElfMl8wX1NMUF9CVVRUT04gfCBc DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0FDUElfMl8wX1JUQ19TNCB8IFwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICBFRklfQUNQSV8yXzBfUkVTRVRfUkVHX1NVUCkNCj4g KyNkZWZpbmUgUkVTRVRfUkVHICAgICAgIDB4Q0Y5DQo+ICsjZGVmaW5lIFJFU0VUX1ZBTFVFICAg ICAoQklUMiB8IEJJVDEpIC8vIFBJSVgzIFJlc2V0IENQVSArIFN5c3RlbSBSZXNldA0KPiArDQo+ ICsvLw0KPiArLy8gQnl0ZS1hbGlnbmVkIElPIHBvcnQgcmVnaXN0ZXIgYmxvY2sgaW5pdGlhbGl6 ZXIgZm9yDQo+ICsvLyBFRklfQUNQSV8yXzBfR0VORVJJQ19BRERSRVNTX1NUUlVDVFVSRQ0KPiAr Ly8NCj4gKyNkZWZpbmUgR0FTMl9JTyhCYXNlLCBTaXplKSB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgICAgICAgICAgRUZJX0FDUElfMl8wX1NZU1RFTV9JTywgLyogQWRkcmVz c1NwYWNlSWQgICAgKi8gXA0KPiArICAgICAgICAgIChTaXplKSAqIDgsICAgICAgICAgICAgIC8q IFJlZ2lzdGVyQml0V2lkdGggICovIFwNCj4gKyAgICAgICAgICAwLCAgICAgICAgICAgICAgICAg ICAgICAvKiBSZWdpc3RlckJpdE9mZnNldCAqLyBcDQo+ICsgICAgICAgICAgMCwgICAgICAgICAg ICAgICAgICAgICAgLyogUmVzZXJ2ZWQgICAgICAgICAgKi8gXA0KPiArICAgICAgICAgIChCYXNl KSAgICAgICAgICAgICAgICAgIC8qIEFkZHJlc3MgICAgICAgICAgICovIFwNCj4gKyAgICAgICAg ICB9DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvR3VpZC9TaW1pY3NYNThQbGF0Zm9ybUNvbmZpZy4NCj4g aA0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL0d1aWQvU2lt aWNzWDU4UGxhdGZvcm1Db25maWcuDQo+IGgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMC4uZjY1ZjYxZDc0ZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL0d1aWQvU2ltaWNzWDU4UGxh dGZvcm1Db25maWcuDQo+IGgNCj4gQEAgLTAsMCArMSwxNyBAQA0KPiArLyoqIEBmaWxlDQo+ICsg IEdVSUQgZm9yIFVFRkkgdmFyaWFibGVzIHRoYXQgYXJlIHNwZWNpZmljIHRvIE9WTUYgY29uZmln dXJhdGlvbi4NCj4gKw0KPiArICBDb3B5cmlnaHQgKEMpIDIwMTQsIFJlZCBIYXQsIEluYy4NCj4g Kw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiAr KiovDQo+ICsNCj4gKyNpZm5kZWYgX19TSU1JQ1NYNThfUExBVEZPUk1fQ09ORklHX0hfXw0KPiAr I2RlZmluZSBfX1NJTUlDU1g1OF9QTEFURk9STV9DT05GSUdfSF9fDQo+ICsNCj4gKyNkZWZpbmUg U0lNSUNTWDU4X1BMQVRGT1JNX0NPTkZJR19HVUlEIFwNCj4gK3sweGVlZDM1ZjU3LCAweDRmZjIs IDB4NDI0NCwgezB4YjgsIDB4M2EsIDB4ZWEsIDB4NzEsIDB4NWYsIDB4ZDMsIDB4NTksDQo+IDB4 YTV9fQ0KPiArDQo+ICtleHRlcm4gRUZJX0dVSUQgZ1NpbWljc1g1OFBsYXRmb3JtQ29uZmlnR3Vp ZDsNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1g1OEljaDEwLmgNCj4gYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJk L1g1OEljaDEwLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4u MzZjMDgxNzZkMQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvWDU4SWNoMTAuaA0KPiBA QCAtMCwwICsxLDEwNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFZhcmlvdXMgcmVnaXN0ZXIgbnVt YmVycyBhbmQgdmFsdWUgYml0cyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHB1YmxpY2F0aW9uczoN Cj4gKyAgLSBJbnRlbChSKSBkYXRhc2hlZXQgMzE5OTczLTAwMw0KPiArICAtIEludGVsKFIpIGRh dGFzaGVldCAzMTk5NzQtMDE3VVMNCj4gKw0KPiArICBDb3B5cmlnaHQgKEMpIDIwMTUsIFJlZCBI YXQsIEluYy4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE0LCBHYWJyaWVsIEwuIFNvbWxvIDxzb21s b0BjbXUuZWR1Pg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfX1g1OF9JQ0gxMF9IX18NCj4gKyNk ZWZpbmUgX19YNThfSUNIMTBfSF9fDQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BjaUxpYi5o Pg0KPiArDQo+ICsvLw0KPiArLy8gSG9zdCBCcmlkZ2UgRGV2aWNlIElEIChESUQpIHZhbHVlIGZv ciBJQ0gxMA0KPiArLy8NCj4gKyNkZWZpbmUgSU5URUxfSUNIMTBfREVWSUNFX0lEIDB4MzQwMA0K PiArDQo+ICsvLw0KPiArLy8gQi9EL0YvVHlwZTogMC8wLzAvUENJDQo+ICsvLw0KPiArI2RlZmlu ZSBEUkFNQ19SRUdJU1RFUl9RMzUoT2Zmc2V0KSBQQ0lfTElCX0FERFJFU1MgKDAsIDAsIDAsIChP ZmZzZXQpKQ0KPiArI2RlZmluZSBEUkFNQ19SRUdJU1RFUl9YNTgoT2Zmc2V0KSBQQ0lfTElCX0FE RFJFU1MgKDAsIDIwLCAwLCAoT2Zmc2V0KSkNCj4gKyNkZWZpbmUgTUNIX0dHQyAgICAgICAgICAg ICAgICAgMHg1Mg0KPiArI2RlZmluZSBNQ0hfR0dDX0lWRCAgICAgICAgICAgICBCSVQxDQo+ICsN Cj4gKyNkZWZpbmUgTUNIX1BDSUVYQkFSX0xPVyAgICAgICAgMHgxMEMNCj4gKyNkZWZpbmUgTUNI X1BDSUVYQkFSX0xJRCAgICAgICAgMHgxMEUNCj4gKyNkZWZpbmUgTUNIX1BDSUVYQkFSX1NISUZU ICAgICAgMTYNCj4gKyNkZWZpbmUgTUNIX1BDSUVYQkFSX0xPV01BU0sgICAgMHgwRkZGRkZGRg0K PiArI2RlZmluZSBNQ0hfUENJRVhCQVJfQlVTX0ZGICAgICAwDQo+ICsjZGVmaW5lIE1DSF9QQ0lF WEJBUl9FTiAgICAgICAgIEJJVDANCj4gKw0KPiArI2RlZmluZSBNQ0hfUENJRVhCQVJfSElHSCAg ICAgICAweDY0DQo+ICsjZGVmaW5lIE1DSF9QQ0lFWEJBUl9ISUdITUFTSyAgIDB4RkZGRkZGRjAN Cj4gKw0KPiArI2RlZmluZSBNQ0hfU01SQU0gICAgICAgICAgICAgMHg5RA0KPiArI2RlZmluZSBN Q0hfU01SQU1fRF9MQ0sgICAgICAgICBCSVQ0DQo+ICsjZGVmaW5lIE1DSF9TTVJBTV9HX1NNUkFN RSAgICAgIEJJVDMNCj4gKw0KPiArI2RlZmluZSBNQ0hfRVNNUkFNQyAgICAgICAgICAgMHg5RQ0K PiArI2RlZmluZSBNQ0hfRVNNUkFNQ19IX1NNUkFNRSAgICBCSVQ3DQo+ICsjZGVmaW5lIE1DSF9F U01SQU1DX0VfU01FUlIgICAgIEJJVDYNCj4gKyNkZWZpbmUgTUNIX0VTTVJBTUNfU01fQ0FDSEUg ICAgQklUNQ0KPiArI2RlZmluZSBNQ0hfRVNNUkFNQ19TTV9MMSAgICAgICBCSVQ0DQo+ICsjZGVm aW5lIE1DSF9FU01SQU1DX1NNX0wyICAgICAgIEJJVDMNCj4gKyNkZWZpbmUgTUNIX0VTTVJBTUNf VFNFR184TUIgICAgQklUMw0KPiArI2RlZmluZSBNQ0hfRVNNUkFNQ19UU0VHXzJNQiAgICBCSVQy DQo+ICsjZGVmaW5lIE1DSF9FU01SQU1DX1RTRUdfMU1CICAgIEJJVDENCj4gKyNkZWZpbmUgTUNI X0VTTVJBTUNfVFNFR19NQVNLICAgKEJJVDMgfCBCSVQyIHwgQklUMSkNCj4gKyNkZWZpbmUgTUNI X0VTTVJBTUNfVF9FTiAgICAgICAgQklUMA0KPiArDQo+ICsjZGVmaW5lIE1DSF9HQlNNICAgICAg ICAgICAgICAweEE0DQo+ICsjZGVmaW5lIE1DSF9HQlNNX01CX1NISUZUICAgICAgIDIwDQo+ICsN Cj4gKyNkZWZpbmUgTUNIX0JHU00gICAgICAgICAgICAgIDB4QTgNCj4gKyNkZWZpbmUgTUNIX0JH U01fTUJfU0hJRlQgICAgICAgMjANCj4gKw0KPiArI2RlZmluZSBNQ0hfVFNFR01CICAgICAgICAg ICAgMHhBOA0KPiArI2RlZmluZSBNQ0hfVFNFR01CX01CX1NISUZUICAgICAyMA0KPiArDQo+ICsj ZGVmaW5lIE1DSF9UT0xVRCAgICAgICAgICAgICAweEQwDQo+ICsNCj4gKy8vDQo+ICsvLyBCL0Qv Ri9UeXBlOiAwLzB4MWYvMC9QQ0kNCj4gKy8vDQo+ICsjZGVmaW5lIFBPV0VSX01HTVRfUkVHSVNU RVJfSUNIMTAoT2Zmc2V0KSBcDQo+ICsgIFBDSV9MSUJfQUREUkVTUyAoMCwgMHgxZiwgMCwgKE9m ZnNldCkpDQo+ICsNCj4gKyNkZWZpbmUgSUNIMTBfUE1CQVNFICAgICAgICAgICAgICAgMHg0MA0K PiArI2RlZmluZSBJQ0gxMF9QTUJBU0VfTUFTSyAgICAgICAgICAgIChCSVQxNSB8IEJJVDE0IHwg QklUMTMgfCBCSVQxMiB8IEJJVDExIHwNCj4gXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJJVDEwIHwgQklUOSAgfCBCSVQ4ICB8IEJJVDcpDQo+ICsNCj4gKyNkZWZp bmUgSUNIMTBfQUNQSV9DTlRMICAgICAgICAgICAgMHg0NA0KPiArI2RlZmluZSBJQ0gxMF9BQ1BJ X0NOVExfQUNQSV9FTiAgICAgIEJJVDcNCj4gKw0KPiArI2RlZmluZSBJQ0gxMF9HRU5fUE1DT05f MSAgICAgICAgICAweEEwDQo+ICsjZGVmaW5lIElDSDEwX0dFTl9QTUNPTl8xX1NNSV9MT0NLICAg QklUNA0KPiArDQo+ICsjZGVmaW5lIElDSDEwX1JDQkEgICAgICAgICAgICAgICAgIDB4RjANCj4g KyNkZWZpbmUgSUNIMTBfUkNCQV9FTiAgICAgICAgICAgICAgICBCSVQwDQo+ICsNCj4gKyNkZWZp bmUgSUNIMTBfUE1CQVNFX0lPICAgICAgICAgICAgMHg0MDANCj4gKy8vDQo+ICsvLyBJTyBwb3J0 cw0KPiArLy8NCj4gKyNkZWZpbmUgSUNIMTBfQVBNX0NOVCAweEIyDQo+ICsjZGVmaW5lIElDSDEw X0FQTV9TVFMgMHhCMw0KPiArDQo+ICsvLw0KPiArLy8gSU8gcG9ydHMgcmVsYXRpdmUgdG8gUE1C QVNFDQo+ICsvLw0KPiArI2RlZmluZSBJQ0gxMF9QTUJBU0VfT0ZTX1NNSV9FTiAgIDB4MzANCj4g KyNkZWZpbmUgSUNIMTBfU01JX0VOX0FQTUNfRU4gICAgICBCSVQ1DQo+ICsjZGVmaW5lIElDSDEw X1NNSV9FTl9HQkxfU01JX0VOICAgQklUMA0KPiArI2RlZmluZSBJQ0gxMF9TTUlfRU5fRU9TICAg ICAgICAgIEJJVDEgIC8vIEVuZCBvZiBTTUkNCj4gKw0KPiArI2RlZmluZSBJQ0gxMF9QTUJBU0Vf T0ZTX1NNSV9TVFMgIDB4MzQNCj4gKyNkZWZpbmUgSUNIMTBfU01JX1NUU19BUE0gICAgICAgICBC SVQ1ICAvLyBBUE0gU3RhdHVzDQo+ICsNCj4gKyNkZWZpbmUgSUNIMTBfUk9PVF9DT01QTEVYX0JB U0UgMHhGRUQxQzAwMA0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUFjcGkuaA0KPiBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUFjcGku aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi4xMmFlYjEyMjdj DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0luY2x1ZGUvUHJvdG9jb2wvSXNhQWNwaS5oDQo+IEBAIC0wLDAgKzEsMjk4IEBADQo+ICsv KiogQGZpbGUNCj4gKyAgRUZJIElTQSBBQ1BJIFByb3RvY29sIGlzIHVzZWQgdG8gZW51bWVyYXRl IGFuZCBtYW5hZ2UgYWxsIHRoZSBJU0EgY29udHJvbGxlcnMNCj4gb24NCj4gKyAgdGhlIHBsYXRm b3JtJ3MgSVNBIEJ1cy4NCj4gKw0KPiArQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpZm5k ZWYgX19JU0FfQUNQSV9IXw0KPiArI2RlZmluZSBfX0lTQV9BQ1BJX0hfDQo+ICsNCj4gKy8vLw0K PiArLy8vIEdsb2JhbCBJRCBmb3IgdGhlIEVGSSBJU0EgQUNQSSBQcm90b2NvbC4NCj4gKy8vLw0K PiArI2RlZmluZSBFRklfSVNBX0FDUElfUFJPVE9DT0xfR1VJRCBcDQo+ICsgIHsgXA0KPiArICAg IDB4NjRhODkyZGMsIDB4NTU2MSwgMHg0NTM2LCB7IDB4OTIsIDB4YzcsIDB4NzksIDB4OWIsIDB4 ZmMsIDB4MTgsIDB4MzMsDQo+IDB4NTUgfSBcDQo+ICsgIH0NCj4gKw0KPiArLy8vDQo+ICsvLy8g Rm9yd2FyZCBkZWNsYXJhdGlvbiBmbyB0aGUgRUZJIElTQSBBQ1BJIFByb3RvY29sDQo+ICsvLy8N Cj4gK3R5cGVkZWYgc3RydWN0IF9FRklfSVNBX0FDUElfUFJPVE9DT0wgRUZJX0lTQV9BQ1BJX1BS T1RPQ09MOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBJU0EgQUNQSSBQcm90b2NvbCBpbnRlcnJ1cHQg cmVzb3VyY2UgYXR0cmlidXRlcy4NCj4gKy8vLw0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfSVJR X1RZUEVfSElHSF9UUlVFX0VER0VfU0VOU0lUSVZFICAgMHgwMSAgIC8vLzwNCj4gRWRnZSB0cmln Z2VyZWQgaW50ZXJydXB0IG9uIGEgcmlzaW5nIGVkZ2UuDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQ SV9JUlFfVFlQRV9MT1dfVFJVRV9FREdFX1NFTlNJVElWRSAgICAweDAyICAgLy8vPA0KPiBFZGdl IHRyaWdnZXJlZCBpbnRlcnJ1cHQgb24gYSBmYWxsaW5nIGVkZ2UuDQo+ICsjZGVmaW5lIEVGSV9J U0FfQUNQSV9JUlFfVFlQRV9ISUdIX1RSVUVfTEVWRUxfU0VOU0lUSVZFICAweDA0ICAgLy8vPA0K PiBMZXZlbCBzZW5zaXRpdmUgaW50ZXJydXB0IGFjdGl2ZSBoaWdoLg0KPiArI2RlZmluZSBFRklf SVNBX0FDUElfSVJRX1RZUEVfTE9XX1RSVUVfTEVWRUxfU0VOU0lUSVZFICAgMHgwOCAgIC8vLzwN Cj4gTGV2ZWwgc2Vuc2l0aXZlIGludGVycnVwdCBhY3RpdmUgbG93Lg0KPiArDQo+ICsvLy8NCj4g Ky8vLyBJU0EgQUNQSSBQcm90b2NvbCBETUEgcmVzb3VyY2UgYXR0cmlidXRlcy4NCj4gKy8vLw0K PiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX1NQRUVEX1RZUEVfTUFTSyAgICAgICAgICAgICAg ICAgMHgwMyAgIC8vLzwgQml0IG1hc2sNCj4gb2Ygc3VwcG9ydGVkIERNQSBzcGVlZCBhdHRyaWJ1 dGVzLg0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX1NQRUVEX1RZUEVfQ09NUEFUSUJJTElU WSAgICAgICAgMHgwMCAgIC8vLzwgSVNBDQo+IGNvbnRyb2xsZXIgc3VwcG9ydHMgY29tcGF0aWJp bGl0eSBtb2RlIERNQSB0cmFuc2ZlcnMuDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfU1BF RURfVFlQRV9BICAgICAgICAgICAgICAgICAgICAweDAxICAgLy8vPCBJU0ENCj4gY29udHJvbGxl ciBzdXBwb3J0cyB0eXBlIEEgRE1BIHRyYW5zZmVycy4NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJ X0RNQV9TUEVFRF9UWVBFX0IgICAgICAgICAgICAgICAgICAgIDB4MDIgICAvLy88IElTQQ0KPiBj b250cm9sbGVyIHN1cHBvcnRzIHR5cGUgQiBETUEgdHJhbnNmZXJzLg0KPiArI2RlZmluZSBFRklf SVNBX0FDUElfRE1BX1NQRUVEX1RZUEVfRiAgICAgICAgICAgICAgICAgICAgMHgwMyAgIC8vLzwg SVNBDQo+IGNvbnRyb2xsZXIgc3VwcG9ydHMgdHlwZSBGIERNQSB0cmFuc2ZlcnMuDQo+ICsjZGVm aW5lIEVGSV9JU0FfQUNQSV9ETUFfQ09VTlRfQllfQllURSAgICAgICAgICAgICAgICAgICAweDA0 ICAgLy8vPCBJU0ENCj4gY29udHJvbGxlciBpbmNyZW1lbnRzIERNQSBhZGRyZXNzIGJ5IGJ5dGVz ICg4LWJpdCkuDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfQ09VTlRfQllfV09SRCAgICAg ICAgICAgICAgICAgICAweDA4ICAgLy8vPCBJU0ENCj4gY29udHJvbGxlciBpbmNyZW1lbnRzIERN QSBhZGRyZXNzIGJ5IHdvcmRzICgxNi1iaXQpLg0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1B X0JVU19NQVNURVIgICAgICAgICAgICAgICAgICAgICAgMHgxMCAgIC8vLzwgSVNBDQo+IGNvbnRy b2xsZXIgaXMgYSBETUEgYnVzIG1hc3Rlci4NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX0RNQV9U UkFOU0ZFUl9UWVBFXzhfQklUICAgICAgICAgICAgIDB4MjAgICAvLy88IElTQQ0KPiBjb250cm9s bGVyIG9ubHkgc3VwcG9ydHMgOC1iaXQgRE1BIHRyYW5zZmVycy4NCj4gKyNkZWZpbmUgRUZJX0lT QV9BQ1BJX0RNQV9UUkFOU0ZFUl9UWVBFXzhfQklUX0FORF8xNl9CSVQgIDB4NDANCj4gLy8vPCBJ U0EgY29udHJvbGxlciBib3RoIDgtYml0IGFuZCAxNi1iaXQgRE1BIHRyYW5zZmVycy4NCj4gKyNk ZWZpbmUgRUZJX0lTQV9BQ1BJX0RNQV9UUkFOU0ZFUl9UWVBFXzE2X0JJVCAgICAgICAgICAgIDB4 ODAgICAvLy88IElTQQ0KPiBjb250cm9sbGVyIG9ubHkgc3VwcG9ydHMgMTYtYml0IERNQSB0cmFu c2ZlcnMuDQo+ICsNCj4gKy8vLw0KPiArLy8vIElTQSBBQ1BJIFByb3RvY29sIE1NSU8gcmVzb3Vy Y2UgYXR0cmlidXRlcw0KPiArLy8vDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9NRU1PUllfV0lE VEhfTUFTSyAgICAgICAgICAgICAgICAgICAweDAzICAgLy8vPCBCaXQgbWFzaw0KPiBvZiBzdXBw b3J0ZWQgSVNBIG1lbW9yeSB3aWR0aCBhdHRyaWJ1dGVzLg0KPiArI2RlZmluZSBFRklfSVNBX0FD UElfTUVNT1JZX1dJRFRIXzhfQklUICAgICAgICAgICAgICAgICAgMHgwMCAgIC8vLzwgSVNBDQo+ IE1NSU8gcmVnaW9uIG9ubHkgc3VwcG9ydHMgOC1iaXQgYWNjZXNzLg0KPiArI2RlZmluZSBFRklf SVNBX0FDUElfTUVNT1JZX1dJRFRIXzE2X0JJVCAgICAgICAgICAgICAgICAgMHgwMSAgIC8vLzwg SVNBDQo+IE1NSU8gcmVnaW9uIG9ubHkgc3VwcG9ydHMgMTYtYml0IGFjY2Vzcy4NCj4gKyNkZWZp bmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9XSURUSF84X0JJVF9BTkRfMTZfQklUICAgICAgIDB4MDIg ICAvLy88DQo+IElTQSBNTUlPIHJlZ2lvbiBzdXBwb3J0cyBib3RoIDgtYml0IGFuZCAxNi1iaXQg YWNjZXNzLg0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfTUVNT1JZX1dSSVRFQUJMRSAgICAgICAg ICAgICAgICAgICAgMHgwNCAgIC8vLzwgSVNBIE1NSU8NCj4gcmVnaW9uIHN1cHBvcnRzIHdyaXRl IHRyYW5zYWN0aW9ucy4NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9DQUNIRUFCTEUg ICAgICAgICAgICAgICAgICAgIDB4MDggICAvLy88IElTQSBNTUlPDQo+IHJlZ2lvbiBzdXBwb3J0 cyBiZWluZyBjYWNoZWQuDQo+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9NRU1PUllfU0hBRE9XQUJM RSAgICAgICAgICAgICAgICAgICAweDEwICAgLy8vPCBJU0ENCj4gTU1JTyByZWdpb24gbWF5IGJl IHNoYWRvd2VkLg0KPiArI2RlZmluZSBFRklfSVNBX0FDUElfTUVNT1JZX0VYUEFOU0lPTl9ST00g ICAgICAgICAgICAgICAgMHgyMCAgIC8vLzwgSVNBDQo+IE1NSU8gcmVnaW9uIGlzIGFuIGV4cGFu c2lvbiBST00uDQo+ICsNCj4gKy8vLw0KPiArLy8vIElTQSBBQ1BJIFByb3RvY29sIEkvTyByZXNv dXJjZSBhdHRyaWJ1dGVzDQo+ICsvLy8NCj4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX0lPX0RFQ09E RV8xMF9CSVRTICAgICAgICAgICAgICAgICAgIDB4MDEgICAgLy8vPCBJU0ENCj4gY29udHJvbGxl cnMgdXNlcyBhIDEwLWJpdCBhZGRyZXNzIGRlY29kZXIgZm9yIEkvTyBjeWNsZXMuDQo+ICsjZGVm aW5lIEVGSV9JU0FfQUNQSV9JT19ERUNPREVfMTZfQklUUyAgICAgICAgICAgICAgICAgICAweDAy ICAgIC8vLzwgSVNBDQo+IGNvbnRyb2xsZXJzIHVzZXMgYSAxNi1iaXQgYWRkcmVzcyBkZWNvZGVy IGZvciBJL08gY3ljbGVzLg0KPiArDQo+ICsvLy8NCj4gKy8vLyBFRkkgSVNBIEFDUEkgcmVzb3Vy Y2UgdHlwZQ0KPiArLy8vDQo+ICt0eXBlZGVmIGVudW0gew0KPiArICBFZmlJc2FBY3BpUmVzb3Vy Y2VFbmRPZkxpc3QsICAgIC8vLzwgTWFya3MgdGhlIGVuZCBpZiBhIHJlc291cmNlIGxpc3QuDQo+ ICsgIEVmaUlzYUFjcGlSZXNvdXJjZUlvLCAgICAgICAgICAgLy8vPCBJU0EgSS9PIHBvcnQgcmVz b3VyY2UgcmFuZ2UuDQo+ICsgIEVmaUlzYUFjcGlSZXNvdXJjZU1lbW9yeSwgICAgICAgLy8vPCBJ U0EgTU1JTyByZXNvdXJjZSByYW5nZS4NCj4gKyAgRWZpSXNhQWNwaVJlc291cmNlRG1hLCAgICAg ICAgICAvLy88IElTQSBETUEgcmVzb3VyY2UuDQo+ICsgIEVmaUlzYUFjcGlSZXNvdXJjZUludGVy cnVwdCAgICAgLy8vPCBJU0EgaW50ZXJydXB0IHJlc291cmNlLg0KPiArfSBFRklfSVNBX0FDUElf UkVTT1VSQ0VfVFlQRTsNCj4gKw0KPiArLy8vDQo+ICsvLy8gRUZJIElTQSBBQ1BJIGdlbmVyaWMg cmVzb3VyY2Ugc3RydWN0dXJlDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJ X0lTQV9BQ1BJX1JFU09VUkNFX1RZUEUgIFR5cGU7ICAgICAgICAgLy8vPCBUaGUgdHlwZSBvZiBy ZXNvdXJjZSAoSS9PLA0KPiBNTUlPLCBETUEsIEludGVycnVwdCkuDQo+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICBBdHRyaWJ1dGU7ICAgIC8vLzwgQml0IG1hc2sgb2YgYXR0cmlidXRl cyBhc3NvY2lhdGVkIHdpdGggdGhpcw0KPiByZXNvdXJjZS4gIFNlZSBFRklfSVNBX0FDUElfeHh4 IG1hY3JvcyBmb3IgdmFsaWQgY29tYmluYXRpb25zLg0KPiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgU3RhcnRSYW5nZTsgICAvLy88IFRoZSBzdGFydCBvZiB0aGUgcmVzb3VyY2UgcmFu Z2UuDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICBFbmRSYW5nZTsgICAgIC8vLzwg VGhlIGVuZCBvZiB0aGUgcmVzb3VyY2UgcmFuZ2UuDQo+ICt9IEVGSV9JU0FfQUNQSV9SRVNPVVJD RTsNCj4gKw0KPiArLy8vDQo+ICsvLy8gRUZJIElTQSBBQ1BJIHJlc291cmNlIGRldmljZSBpZGVu dGlmaWVyDQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDMyICBISUQ7ICAg Ly8vPCBUaGUgQUNQSSBIYXJkd2FyZSBJZGVudGlmaWVyIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBh biBJU0ENCj4gY29udHJvbGxlci4gIE1hdGNocyBBQ1BJIERTRFQgY29udGVudHMuDQo+ICsgIFVJ TlQzMiAgVUlEOyAgIC8vLzwgVGhlIEFDUEkgVW5pcXVlIElkZW50aWZpZXIgdmFsdWUgYXNzb2Np YXRlZCB3aXRoIGFuIElTQQ0KPiBjb250cm9sbGVyLiAgTWF0Y2hlcyBBQ1BJIERTRFQgY29udGVu dHMuDQo+ICt9IEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQ7DQo+ICsNCj4gKy8vLw0KPiArLy8vIEVG SSBJU0EgQUNQSSByZXNvdXJjZSBsaXN0DQo+ICsvLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4g KyAgRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAgRGV2aWNlOyAgICAgICAgICAvLy88IFRoZSBBQ1BJ IEhJRC9VSUQgYXNzb2NpYXRlZCB3aXRoDQo+IGFuIElTQSBjb250cm9sbGVyLg0KPiArICBFRklf SVNBX0FDUElfUkVTT1VSQ0UgICAqUmVzb3VyY2VJdGVtOyAgIC8vLzwgQSBwb2ludGVyIHRvIHRo ZSBsaXN0IG9mDQo+IHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYW4gSVNBIGNvbnRyb2xsZXIu DQo+ICt9IEVGSV9JU0FfQUNQSV9SRVNPVVJDRV9MSVNUOw0KPiArDQo+ICsvKioNCj4gKyAgRW51 bWVyYXRlcyB0aGUgSVNBIGNvbnRyb2xsZXJzIG9uIGFuIElTQSBidXMuDQo+ICsNCj4gKyAgVGhp cyBzZXJ2aWNlIGFsbG93cyBhbGwgdGhlIElTQSBjb250cm9sbGVycyBvbiBhbiBJU0EgYnVzIHRv IGJlIGVudW1lcmF0ZWQuICBJZg0KPiArICBEZXZpY2UgaXMgYSBwb2ludGVyIHRvIGEgTlVMTCB2 YWx1ZSwgdGhlbiB0aGUgZmlyc3QgSVNBIGNvbnRyb2xsZXIgb24gdGhlIElTQQ0KPiArICBidXMg aXMgcmV0dXJuZWQgaW4gRGV2aWNlIGFuZCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4gIElmIERl dmljZSBpcyBhIHBvaW50ZXINCj4gKyAgdG8gYSB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBvbiBh IHByaW9yIGNhbGwgdG8gRGV2aWNlRW51bWVyYXRlKCksIHRoZW4gdGhlDQo+IG5leHQNCj4gKyAg SVNBIGNvbnRyb2xsZXIgb24gdGhlIElTQSBidXMgaXMgcmV0dXJuZWQgaW4gRGV2aWNlIGFuZCBF RklfU1VDQ0VTUyBpcw0KPiByZXR1cm5lZC4NCj4gKyAgSWYgRGV2aWNlIGlzIGEgcG9pbnRlciB0 byB0aGUgbGFzdCBJU0EgY29udHJvbGxlciBvbiB0aGUgSVNBIGJ1cywgdGhlbg0KPiArICBFRklf Tk9UX0ZPVU5EIGlzIHJldHVybmVkLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgIFRo ZSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0FDUElfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBw YXJhbVtvdXRdIERldmljZSAgIFRoZSBwb2ludGVyIHRvIGFuIElTQSBjb250cm9sbGVyIG5hbWVk IGJ5IEFDUEkNCj4gSElEL1VJRC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgIFRo ZSBuZXh0IElTQSBjb250cm9sbGVyIG9uIHRoZSBJU0EgYnVzIHdhcyByZXR1cm5lZC4NCj4gKyAg QHJldHZhbCBFRklfTk9UX0ZPVU5EICBObyBkZXZpY2UgZm91bmQuDQo+ICsNCj4gKyoqLw0KPiAr dHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0lTQV9BQ1BJX0RFVklDRV9F TlVNRVJBVEUpKA0KPiArICBJTiAgRUZJX0lTQV9BQ1BJX1BST1RPQ09MICAgKlRoaXMsDQo+ICsg IE9VVCBFRklfSVNBX0FDUElfREVWSUNFX0lEICAqKkRldmljZQ0KPiArICApOw0KPiArDQo+ICsv KioNCj4gKyAgU2V0cyB0aGUgcG93ZXIgc3RhdGUgb2YgYW4gSVNBIGNvbnRyb2xsZXIuDQo+ICsN Cj4gKyAgVGhpcyBzZXJ2aWNlcyBzZXRzIHRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgSVNBIGNvbnRy b2xsZXIgc3BlY2lmaWVkIGJ5IERldmljZSB0bw0KPiArICB0aGUgcG93ZXIgc3RhdGUgc3BlY2lm aWVkIGJ5IE9uT2ZmLiAgVFJVRSBkZW5vdGVzIG9uLCBGQUxTRSBkZW5vdGVzIG9mZi4NCj4gKyAg SWYgdGhlIHBvd2VyIHN0YXRlIGlzIHN1Y2Vzc2Z1bGx5IHNldCBvbiB0aGUgSVNBIENvbnRyb2xs ZXIsIHRoZW4NCj4gKyAgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAgQHBhcmFt W2luXSBUaGlzICAgICBUaGUgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9BQ1BJX1BST1RPQ09MIGlu c3RhbmNlLg0KPiArICBAcGFyYW1baW5dIERldmljZSAgIFRoZSBwb2ludGVyIHRvIGFuIElTQSBj b250cm9sbGVyIG5hbWVkIGJ5IEFDUEkgSElEL1VJRC4NCj4gKyAgQHBhcmFtW2luXSBPbk9mZiAg ICBUUlVFIGRlbm90ZXMgb24sIEZBTFNFIGRlbm90ZXMgb2ZmLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICBTdWNjZXNzZnVsbHkgc2V0IHRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgSVNB IGNvbnRyb2xsZXIuDQo+ICsgIEByZXR2YWwgT3RoZXIgICAgICAgICBUaGUgSVNBIGNvbnRyb2xs ZXIgY291bGQgbm90IGJlIHBsYWNlZCBpbiB0aGUgcmVxdWVzdGVkDQo+IHBvd2VyIHN0YXRlLg0K PiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKkVGSV9J U0FfQUNQSV9TRVRfREVWSUNFX1BPV0VSKSgNCj4gKyAgSU4gRUZJX0lTQV9BQ1BJX1BST1RPQ09M ICAgKlRoaXMsDQo+ICsgIElOIEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQgICpEZXZpY2UsDQo+ICsg IElOIEJPT0xFQU4gICAgICAgICAgICAgICAgIE9uT2ZmDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0K PiArICBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgc2V0IG9mIHJlc291cmNlcyBhc3NvY2lhdGVkIHdp dGggYW4gSVNBIGNvbnRyb2xsZXIuDQo+ICsNCj4gKyAgUmV0cmlldmVzIHRoZSBzZXQgb2YgSS9P LCBNTUlPLCBETUEsIGFuZCBpbnRlcnJ1cHQgcmVzb3VyY2VzIGN1cnJlbnRseQ0KPiArICBhc3Np Z25lZCB0byB0aGUgSVNBIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IERldmljZS4gIFRoZXNlIHJl c291cmNlcw0KPiArICBhcmUgcmV0dXJuZWQgaW4gUmVzb3VyY2VMaXN0Lg0KPiArDQo+ICsgIEBw YXJhbVtpbl0gIFRoaXMgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9Q Uk9UT0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSAgRGV2aWNlICAgICAgICBUaGUgcG9p bnRlciB0byBhbiBJU0EgY29udHJvbGxlciBuYW1lZCBieSBBQ1BJDQo+IEhJRC9VSUQuDQo+ICsg IEBwYXJhbVtvdXRdIFJlc291cmNlTGlzdCAgVGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgcmVz b3VyY2UgbGlzdCBmb3IgRGV2aWNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg U3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCB0aGUgY3VycmVudCByZXNvdXJjZSBsaXN0Lg0KPiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgIFRoZSByZXNvdXJjZSBsaXN0IGNvdWxkIG5vdCBiZSByZXRy aWV2ZWQuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQ SSAqRUZJX0lTQV9BQ1BJX0dFVF9DVVJfUkVTT1VSQ0UpKA0KPiArICBJTiAgRUZJX0lTQV9BQ1BJ X1BST1RPQ09MICAgICAgICpUaGlzLA0KPiArICBJTiAgRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAg ICAgICpEZXZpY2UsDQo+ICsgIE9VVCBFRklfSVNBX0FDUElfUkVTT1VSQ0VfTElTVCAgKipSZXNv dXJjZUxpc3QNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFJldHJpZXZlcyB0aGUgc2V0IG9m IHBvc3NpYmxlIHJlc291cmNlcyB0aGF0IG1heSBiZSBhc3NpZ25lZCB0byBhbiBJU0ENCj4gY29u dHJvbGxlcg0KPiArICB3aXRoIFNldFJlc291cmNlKCkuDQo+ICsNCj4gKyAgUmV0cmlldmVzIHRo ZSBwb3NzaWJsZSBzZXRzIG9mIEkvTywgTU1JTywgRE1BLCBhbmQgaW50ZXJydXB0IHJlc291cmNl cyBmb3INCj4gdGhlDQo+ICsgIElTQSBjb250cm9sbGVyIHNwZWNpZmllZCBieSBEZXZpY2UuICBU aGUgc2V0cyBhcmUgcmV0dXJuZWQgaW4gUmVzb3VyY2VMaXN0Lg0KPiArDQo+ICsgIEBwYXJhbVtp bl0gIFRoaXMgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0FDUElfUFJPVE9D T0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gIERldmljZSAgICAgICAgIFRoZSBwb2ludGVy IHRvIGFuIElTQSBjb250cm9sbGVyIG5hbWVkIGJ5IEFDUEkNCj4gSElEL1VJRC4NCj4gKyAgQHBh cmFtW291dF0gUmVzb3VyY2VMaXN0ICAgVGhlIHBvaW50ZXIgdG8gdGhlIHJldHVybmVkIGxpc3Qg b2YgcmVzb3VyY2UgbGlzdHMuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgIFRo aXMgc2VydmljZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4g K0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKkVGSV9JU0FfQUNQSV9HRVRfUE9TX1JFU09VUkNFKSgN Cj4gKyAgSU4gRUZJX0lTQV9BQ1BJX1BST1RPQ09MICAgICAgICAqVGhpcywNCj4gKyAgSU4gRUZJ X0lTQV9BQ1BJX0RFVklDRV9JRCAgICAgICAqRGV2aWNlLA0KPiArICBPVVQgRUZJX0lTQV9BQ1BJ X1JFU09VUkNFX0xJU1QgICoqUmVzb3VyY2VMaXN0DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiAr ICBBc3NpZ25zIHJlc291cmNlcyB0byBhbiBJU0EgY29udHJvbGxlci4NCj4gKw0KPiArICBBc3Np Z25zIHRoZSBJL08sIE1NSU8sIERNQSwgYW5kIGludGVycnVwdCByZXNvdXJjZXMgc3BlY2lmaWVk IGJ5DQo+IFJlc291cmNlTGlzdA0KPiArICB0byB0aGUgSVNBIGNvbnRyb2xsZXIgc3BlY2lmaWVk IGJ5IERldmljZS4gIFJlc291cmNlTGlzdCBtdXN0IG1hdGNoIGEgcmVzb3VyY2UNCj4gbGlzdCBy ZXR1cm5lZCBieSBHZXRQb3NSZXNvdXJjZSgpIGZvciB0aGUgc2FtZSBJU0EgY29udHJvbGxlci4N Cj4gKw0KPiArICBAcGFyYW1baW5dIFRoaXMgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBF RklfSVNBX0FDUElfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gRGV2aWNlICAg ICAgICAgVGhlIHBvaW50ZXIgdG8gYW4gSVNBIGNvbnRyb2xsZXIgbmFtZWQgYnkgQUNQSQ0KPiBI SUQvVUlELg0KPiArICBAcGFyYW1baW5dIFJlc291cmNlTGlzdCAgIFRoZSBwb2ludGVyIHRvIGEg cmVzb3VyY2VzIGxpc3QgdGhhdCBtdXN0IGJlIG9uZSBvZg0KPiB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNvdXJjZSBsaXN0cyByZXR1cm5lZCBieSBHZXRQb3NSZXNvdXJj ZSgpIGZvciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU0EgY29udHJvbGxl ciBzcGVjaWZpZWQgYnkgRGV2aWNlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIFN1 Y2Nlc3NmdWxseSBzZXQgcmVzb3VyY2VzIG9uIHRoZSBJU0EgY29udHJvbGxlci4NCj4gKyAgQHJl dHZhbCBPdGhlciAgICAgICAgVGhlIHJlc291cmNlcyBjb3VsZCBub3QgYmUgc2V0IGZvciB0aGUg SVNBIGNvbnRyb2xsZXIuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0K PiArKEVGSUFQSSAqRUZJX0lTQV9BQ1BJX1NFVF9SRVNPVVJDRSkoDQo+ICsgIElOIEVGSV9JU0Ff QUNQSV9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gKyAgSU4gRUZJX0lTQV9BQ1BJX0RFVklDRV9J RCAgICAgICpEZXZpY2UsDQo+ICsgIElOIEVGSV9JU0FfQUNQSV9SRVNPVVJDRV9MSVNUICAqUmVz b3VyY2VMaXN0DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBFbmFibGVzIG9yIGRpc2FibGVz IGFuIElTQSBjb250cm9sbGVyLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gVGhpcyAgICAgVGhlIHBv aW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFt W2luXSBEZXZpY2UgICBUaGUgcG9pbnRlciB0byB0aGUgSVNBIGNvbnRyb2xsZXIgdG8gZW5hYmxl L2Rpc2FibGUuDQo+ICsgIEBwYXJhbVtpbl0gRW5hYmxlICAgVFJVRSB0byBlbmFibGUgdGhlIElT QSBjb250cm9sbGVyLiAgRkFMU0UgdG8gZGlzYWJsZSB0aGUNCj4gKyAgICAgICAgICAgICAgICAg ICAgICBJU0EgY29udHJvbGxlci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgU3Vj Y2Vzc2Z1bGx5IGVuYWJsZWQvZGlzYWJsZWQgdGhlIElTQSBjb250cm9sbGVyLg0KPiArICBAcmV0 dmFsIE90aGVyICAgICAgICAgVGhlIElTQSBjb250cm9sbGVyIGNvdWxkIG5vdCBiZSBwbGFjZWQg aW4gdGhlIHJlcXVlc3RlZA0KPiBzdGF0ZS4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtF RklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfSVNBX0FDUElfRU5BQkxFX0RFVklDRSkoDQo+ICsg IElOIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAgICpUaGlzLA0KPiArICBJTiBFRklfSVNBX0FDUElf REVWSUNFX0lEICAqRGV2aWNlLA0KPiArICBJTiBCT09MRUFOICAgICAgICAgICAgICAgICBFbmFi bGUNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIEluaXRpYWxpemVzIGFuIElTQSBjb250cm9s bGVyLCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkLiAgVGhpcyBzZXJ2aWNlIG11c3QgYmUgY2FsbGVk DQo+ICsgIGJlZm9yZSBTZXRSZXNvdXJjZSgpLCBFbmFibGVEZXZpY2UoKSwgb3IgU2V0UG93ZXIo KSB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4NCj4gKw0KPiArICBAcGFyYW1baW5dIFRoaXMgICAg IFRoZSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0FDUElfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsg IEBwYXJhbVtpbl0gRGV2aWNlICAgVGhlIHBvaW50ZXIgdG8gYW4gSVNBIGNvbnRyb2xsZXIgbmFt ZWQgYnkgQUNQSSBISUQvVUlELg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICBTdWNj ZXNzZnVsbHkgaW5pdGlhbGl6ZWQgYW4gSVNBIGNvbnRyb2xsZXIuDQo+ICsgIEByZXR2YWwgT3Ro ZXIgICAgICAgICBUaGUgSVNBIGNvbnRyb2xsZXIgY291bGQgbm90IGJlIGluaXRpYWxpemVkLg0K PiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKkVGSV9J U0FfQUNQSV9JTklUX0RFVklDRSkoDQo+ICsgIElOIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAgICpU aGlzLA0KPiArICBJTiBFRklfSVNBX0FDUElfREVWSUNFX0lEICAqRGV2aWNlDQo+ICsgICk7DQo+ ICsNCj4gKy8qKg0KPiArICBJbml0aWFsaXplcyBhbGwgdGhlIEhXIHN0YXRlcyByZXF1aXJlZCBm b3IgdGhlIElTQSBjb250cm9sbGVycyBvbiB0aGUgSVNBIGJ1cw0KPiArICB0byBiZSBlbnVtZXJh dGVkIGFuZCBtYW5hZ2VkIGJ5IHRoZSByZXN0IG9mIHRoZSBzZXJ2aWNlcyBpbiB0aGlzIHByb3Jv dG9sLg0KPiArICBUaGlzIHNlcnZpY2UgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvZiB0aGUg b3RoZXIgc2VydmljZXMgaW4gdGhpcw0KPiArICBwcm90b2NvbCB3aWxsIGZ1bmN0aW9uIGFzIGV4 cGVjdGVkLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gVGhpcyAgVGhlIHBvaW50ZXIgdG8gdGhlIEVG SV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgU3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFsbCByZXF1aXJlZCBoYXJkd2FyZSBzdGF0 ZXMuDQo+ICsgIEByZXR2YWwgT3RoZXIgICAgICAgICBUaGUgSVNBIGludGVyZmFjZSBjb3VsZCBu b3QgYmUgaW5pdGlhbGl6ZWQuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRV Uw0KPiArKEVGSUFQSSAqRUZJX0lTQV9BQ1BJX0lOVEVSRkFDRV9JTklUKSgNCj4gKyAgSU4gRUZJ X0lTQV9BQ1BJX1BST1RPQ09MICAqVGhpcw0KPiArICApOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBU aGUgRUZJX0lTQV9BQ1BJX1BST1RPQ09MIHByb3ZpZGVzIHRoZSBzZXJ2aWNlcyB0byBlbnVtZXJh dGUgYW5kDQo+IG1hbmFnZQ0KPiArLy8vIElTQSBjb250cm9sbGVycyBvbiBhbiBJU0EgYnVzLiAg VGhlc2Ugc2VydmljZXMgaW5jbHVkZSB0aGUgYWJpbGl0eSB0byBpbml0aWFsaXplLA0KPiArLy8v IGVuYWJsZSwgZGlzYWJsZSwgYW5kIG1hbmFnZSB0aGUgcG93ZXIgc3RhdGUgb2YgSVNBIGNvbnRy b2xsZXJzLiAgSXQgYWxzbw0KPiArLy8vIGluY2x1ZGVzIHNlcnZpY2VzIHRvIHF1ZXJ5IGN1cnJl bnQgcmVzb3VyY2VzLCBxdWVyeSBwb3NzaWJsZSByZXNvdXJjZXMsDQo+ICsvLy8gYW5kIGFzc2ln biByZXNvdXJjZXMgdG8gYW4gSVNBIGNvbnRyb2xsZXIuDQo+ICsvLy8NCj4gK3N0cnVjdCBfRUZJ X0lTQV9BQ1BJX1BST1RPQ09MIHsNCj4gKyAgRUZJX0lTQV9BQ1BJX0RFVklDRV9FTlVNRVJBVEUg IERldmljZUVudW1lcmF0ZTsNCj4gKyAgRUZJX0lTQV9BQ1BJX1NFVF9ERVZJQ0VfUE9XRVIgIFNl dFBvd2VyOw0KPiArICBFRklfSVNBX0FDUElfR0VUX0NVUl9SRVNPVVJDRSAgR2V0Q3VyUmVzb3Vy Y2U7DQo+ICsgIEVGSV9JU0FfQUNQSV9HRVRfUE9TX1JFU09VUkNFICBHZXRQb3NSZXNvdXJjZTsN Cj4gKyAgRUZJX0lTQV9BQ1BJX1NFVF9SRVNPVVJDRSAgICAgIFNldFJlc291cmNlOw0KPiArICBF RklfSVNBX0FDUElfRU5BQkxFX0RFVklDRSAgICAgRW5hYmxlRGV2aWNlOw0KPiArICBFRklfSVNB X0FDUElfSU5JVF9ERVZJQ0UgICAgICAgSW5pdERldmljZTsNCj4gKyAgRUZJX0lTQV9BQ1BJX0lO VEVSRkFDRV9JTklUICAgIEludGVyZmFjZUluaXQ7DQo+ICt9Ow0KPiArDQo+ICtleHRlcm4gRUZJ X0dVSUQgZ0VmaUlzYUFjcGlQcm90b2NvbEd1aWQ7DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0t Z2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wv SXNhSW8uaA0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1By b3RvY29sL0lzYUlvLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MC4uMzAwMDAzMDVmYg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUlvLmgNCj4gQEAgLTAsMCArMSwz NTYgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBJU0EgSS9PIFByb3RvY29sIGlzIHVzZWQgYnkgSVNB IGRldmljZSBkcml2ZXJzIHRvIHBlcmZvcm0gSS9PLCBNTUlPIGFuZCBETUENCj4gKyAgb3BlcmF0 aW9ucyBvbiB0aGUgSVNBIGNvbnRyb2xsZXJzIHRoZXkgbWFuYWdlLg0KPiArDQo+ICtDb3B5cmln aHQgKGMpIDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfRUZJX0lTQV9JT19IXw0KPiArI2RlZmluZSBf RUZJX0lTQV9JT19IXw0KPiArDQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvSXNhQWNwaS5oPg0KPiAr DQo+ICsvLy8NCj4gKy8vLyBHbG9iYWwgSUQgZm9yIHRoZSBFRklfSVNBX0lPX1BST1RPQ09MDQo+ ICsvLy8NCj4gKyNkZWZpbmUgRUZJX0lTQV9JT19QUk9UT0NPTF9HVUlEIFwNCj4gKyAgeyBcDQo+ ICsgICAgMHg3ZWUyYmQ0NCwgMHgzZGEwLCAweDExZDQsIHsgMHg5YSwgMHgzOCwgMHgwLCAweDkw LCAweDI3LCAweDNmLCAweGMxLA0KPiAweDRkIH0gXA0KPiArICB9DQo+ICsNCj4gKy8vLw0KPiAr Ly8vIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHRoZSBFRklfSVNBX0lPX1BST1RPQ09MLg0KPiAr Ly8vDQo+ICt0eXBlZGVmIHN0cnVjdCBfRUZJX0lTQV9JT19QUk9UT0NPTCBFRklfSVNBX0lPX1BS T1RPQ09MOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBXaWR0aCBvZiBFRklfSVNBX0lPX1BST1RPQ09M IEkvTyBQb3J0IGFuZCBNTUlPIG9wZXJhdGlvbnMuDQo+ICsvLy8NCj4gK3R5cGVkZWYgZW51bSB7 DQo+ICsgIEVmaUlzYUlvV2lkdGhVaW50OCA9IDAsICAgICAgLy8vPCA4LWJpdCBvcGVyYXRpb24u DQo+ICsgIEVmaUlzYUlvV2lkdGhVaW50MTYsICAgICAgICAgLy8vPCAxNi1iaXQgb3BlcmF0aW9u Lg0KPiArICBFZmlJc2FJb1dpZHRoVWludDMyLCAgICAgICAgIC8vLzwgMzItYml0IG9wZXJhdGlv bg0KPiArICBFZmlJc2FJb1dpZHRoUmVzZXJ2ZWQsDQo+ICsgIEVmaUlzYUlvV2lkdGhGaWZvVWlu dDgsICAgICAgLy8vPCA4LWJpdCBGSUZPIG9wZXJhdGlvbi4NCj4gKyAgRWZpSXNhSW9XaWR0aEZp Zm9VaW50MTYsICAgICAvLy88IDE2LWJpdCBGSUZPIG9wZXJhdGlvbi4NCj4gKyAgRWZpSXNhSW9X aWR0aEZpZm9VaW50MzIsICAgICAvLy88IDMyLWJpdCBGSUZPIG9wZXJhdGlvbi4NCj4gKyAgRWZp SXNhSW9XaWR0aEZpZm9SZXNlcnZlZCwNCj4gKyAgRWZpSXNhSW9XaWR0aEZpbGxVaW50OCwgICAg ICAvLy88IDgtYml0IEZpbGwgb3BlcmF0aW9uLg0KPiArICBFZmlJc2FJb1dpZHRoRmlsbFVpbnQx NiwgICAgIC8vLzwgMTYtYml0IEZpbGwgb3BlcmF0aW9uLg0KPiArICBFZmlJc2FJb1dpZHRoRmls bFVpbnQzMiwgICAgIC8vLzwgMzItYml0IEZpbGwgb3BlcmF0aW9uLg0KPiArICBFZmlJc2FJb1dp ZHRoRmlsbFJlc2VydmVkLA0KPiArICBFZmlJc2FJb1dpZHRoTWF4aW11bQ0KPiArfSBFRklfSVNB X0lPX1BST1RPQ09MX1dJRFRIOw0KPiArDQo+ICsvLy8NCj4gKy8vLyBBdHRyaWJ1dGVzIGZvciB0 aGUgRUZJX0lTQV9JT19QUk9UT0NPTCBjb21tb24gRE1BIGJ1ZmZlciBhbGxvY2F0aW9ucy4NCj4g Ky8vLw0KPiArI2RlZmluZSBFRklfSVNBX0lPX0FUVFJJQlVURV9NRU1PUllfV1JJVEVfQ09NQklO RSAgMHgwODAgICAgLy8vPA0KPiBNYXAgYSBtZW1vcnkgcmFuZ2Ugc28gd3JpdGUgYXJlIGNvbWJp bmVkLg0KPiArI2RlZmluZSBFRklfSVNBX0lPX0FUVFJJQlVURV9NRU1PUllfQ0FDSEVEICAgICAg ICAgMHg4MDAgICAgLy8vPCBNYXAgYQ0KPiBtZW1vcnkgcmFuZ2Ugc28gYWxsIHJlYWQgYW5kIHdy aXRlIGFjY2Vzc2VzIGFyZSBjYWNoZWQuDQo+ICsjZGVmaW5lIEVGSV9JU0FfSU9fQVRUUklCVVRF X01FTU9SWV9ESVNBQkxFICAgICAgICAweDEwMDAgICAvLy88IERpc2FibGUNCj4gYSBtZW1vcnkg cmFuZ2UuDQo+ICsNCj4gKy8vLw0KPiArLy8vIENoYW5uZWwgYXR0cmlidXRlIGZvciBFRklfSVNB X0lPX1BST1RPQ09MIHNsYXZlIERNQSByZXF1ZXN0cw0KPiArLy8vDQo+ICsjZGVmaW5lIEVGSV9J U0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9TUEVFRF9DT01QQVRJQkxFICAweDAwMQ0KPiAvLy88 IFNldCB0aGUgc3BlZWQgb2YgdGhlIERNQSB0cmFuc2ZlciBpbiBjb21wYXRpYmxlIG1vZGUuDQo+ ICsjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9TUEVFRF9BICAgICAgICAg ICAweDAwMiAgIC8vLzwgTm90DQo+IHN1cHBvcnRlZC4NCj4gKyNkZWZpbmUgRUZJX0lTQV9JT19T TEFWRV9ETUFfQVRUUklCVVRFX1NQRUVEX0IgICAgICAgICAgIDB4MDA0ICAgLy8vPCBOb3QNCj4g c3VwcG9ydGVkLg0KPiArI2RlZmluZSBFRklfSVNBX0lPX1NMQVZFX0RNQV9BVFRSSUJVVEVfU1BF RURfQyAgICAgICAgICAgMHgwMDggICAvLy88IE5vdA0KPiBzdXBwb3J0ZWQuDQo+ICsjZGVmaW5l IEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJQlVURV9XSURUSF84ICAgICAgICAgICAweDAxMCAg IC8vLzwNCj4gUmVxdWVzdCA4LWJpdCBETUEgdHJhbnNmZXJzLiAgT25seSBhdmFpbGFibGUgb24g Y2hhbm5lbHMgMC4uMy4NCj4gKyNkZWZpbmUgRUZJX0lTQV9JT19TTEFWRV9ETUFfQVRUUklCVVRF X1dJRFRIXzE2ICAgICAgICAgIDB4MDIwICAgLy8vPA0KPiBSZXF1ZXN0IDE2LWJpdCBETUEgdHJh bnNmZXJzLiAgT25seSBhdmFpbGFibGUgb24gY2hhbm5lbHMgNC4uNy4NCj4gKyNkZWZpbmUgRUZJ X0lTQV9JT19TTEFWRV9ETUFfQVRUUklCVVRFX1NJTkdMRV9NT0RFICAgICAgIDB4MDQwICAgLy8v PA0KPiBSZXF1ZXN0IGEgc2luZ2xlIERNQSB0cmFuc2Zlci4NCj4gKyNkZWZpbmUgRUZJX0lTQV9J T19TTEFWRV9ETUFfQVRUUklCVVRFX0RFTUFORF9NT0RFICAgICAgIDB4MDgwDQo+IC8vLzwgUmVx dWVzdCBtdWx0aXBsZSBETUEgdHJhbnNmZXJzIHVudGlsIFRDIChUZXJtaW5hbCBDb3VudCkgb3Ig RU9QIChFbmQgb2YNCj4gUHJvY2VzcykuDQo+ICsjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1B X0FUVFJJQlVURV9BVVRPX0lOSVRJQUxJWkUgICAweDEwMCAgIC8vLzwNCj4gQXV0b21hdGljYWxs eSByZWxvYWQgYmFzZSBhbmQgY291bnQgYXQgdGhlIGVuZCBvZiB0aGUgRE1BIHRyYW5zZmVyLg0K PiArDQo+ICsvLy8NCj4gKy8vLyBUaGUgRE1BIG9wcmVyYXRpb24gdHlwZSBmb3IgRUZJX0lTQV9J T19QUk9UT0NPTCBETUEgcmVxdWVzdHMuDQo+ICsvLy8NCj4gK3R5cGVkZWYgZW51bSB7DQo+ICsg IC8vLw0KPiArICAvLy8gQSByZWFkIG9wZXJhdGlvbiBmcm9tIHN5c3RlbSBtZW1vcnkgYnkgYSBi dXMgbWFzdGVyLg0KPiArICAvLy8NCj4gKyAgRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJSZWFk LA0KPiArICAvLy8NCj4gKyAgLy8vIEEgd3JpdGUgb3BlcmF0aW9uIHRvIHN5c3RlbSBtZW1vcnkg YnkgYSBidXMgbWFzdGVyLg0KPiArICAvLy8NCj4gKyAgRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0 ZXJXcml0ZSwNCj4gKyAgLy8vDQo+ICsgIC8vLyBQcm92aWRlcyBib3RoIHJlYWQgYW5kIHdyaXRl IGFjY2VzcyB0byBzeXN0ZW0gbWVtb3J5IGJ5IGJvdGggdGhlDQo+IHByb2Nlc3Nvcg0KPiArICAv Ly8gYW5kIGEgYnVzIG1hc3Rlci4gVGhlIGJ1ZmZlciBpcyBjb2hlcmVudCBmcm9tIGJvdGggdGhl IHByb2Nlc3NvcidzIGFuZA0KPiB0aGUNCj4gKyAgLy8vIGJ1cyBtYXN0ZXIncyBwb2ludCBvZiB2 aWV3Lg0KPiArICAvLy8NCj4gKyAgRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJDb21tb25CdWZm ZXIsDQo+ICsgIC8vLw0KPiArICAvLy8gQSByZWFkIG9wZXJhdGlvbiBmcm9tIHN5c3RlbSBtZW1v cnkgYnkgYSBzbGF2ZSBkZXZpY2UuDQo+ICsgIC8vLw0KPiArICBFZmlJc2FJb09wZXJhdGlvblNs YXZlUmVhZCwNCj4gKyAgLy8vDQo+ICsgIC8vLyBBIHdyaXRlIG9wZXJhdGlvbiB0byBzeXN0ZW0g bWVtb3J5IGJ5IGEgc2xhdmUgbWFzdGVyLg0KPiArICAvLy8NCj4gKyAgRWZpSXNhSW9PcGVyYXRp b25TbGF2ZVdyaXRlLA0KPiArICBFZmlJc2FJb09wZXJhdGlvbk1heGltdW0NCj4gK30gRUZJX0lT QV9JT19QUk9UT0NPTF9PUEVSQVRJT047DQo+ICsNCj4gKy8qKg0KPiArICBQZXJmb3JtcyBJU0Eg SS9PIGFuZCBNTUlPIFJlYWQvV3JpdGUgQ3ljbGVzDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgICAg IFRoaXMgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTCBpbnN0YW5jZS4N Cj4gKyAgQHBhcmFtW2luXSAgICAgIFdpZHRoICAgIFNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhl IEkvTyBvciBNTUlPIG9wZXJhdGlvbi4NCj4gKyAgQHBhcmFtW2luXSAgICAgIE9mZnNldCAgIFRo ZSBvZmZzZXQgaW50byB0aGUgSVNBIEkvTyBvciBNTUlPIHNwYWNlIHRvIHN0YXJ0IHRoZQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLg0KPiArICBAcGFyYW1baW5dICAg ICAgQ291bnQgICAgVGhlIG51bWJlciBvZiBJL08gb3IgTU1JTyBvcGVyYXRpb25zIHRvIHBlcmZv cm0uDQo+ICsgIEBwYXJhbVtpbiwgb3V0XSBCdWZmZXIgICBGb3IgcmVhZCBvcGVyYXRpb25zLCB0 aGUgZGVzdGluYXRpb24gYnVmZmVyIHRvIHN0b3JlDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGUgcmVzdWx0cy4gRm9yIHdyaXRlIG9wZXJhdGlvbnMsIHRoZSBzb3VyY2UgYnVmZmVy IHRvDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSBkYXRhIGZyb20uDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgZGF0YSB3YXMgc3VjY2Vz c2Z1bGx5IHJlYWQgZnJvbSBvciB3cml0dGVuIHRvDQo+IHRoZSBkZXZpY2UuDQo+ICsgIEByZXR2 YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgVGhlIE9mZnNldCBpcyBub3QgdmFsaWQgZm9yIHRo aXMgZGV2aWNlLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFdpZHRoIG9y IENvdW50LCBvciBib3RoLCB3ZXJlIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9S RVNPVVJDRVMgICAgVGhlIHJlcXVlc3QgY291bGQgbm90IGJlIGNvbXBsZXRlZCBkdWUNCj4gdG8g YSBsYWNrIG9mIHJlc291cmNlcy4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RB VFVTDQo+ICsoRUZJQVBJICpFRklfSVNBX0lPX1BST1RPQ09MX0lPX01FTSkoDQo+ICsgIElOICAg ICBFRklfSVNBX0lPX1BST1RPQ09MICAgICAgICAqVGhpcywNCj4gKyAgSU4gICAgIEVGSV9JU0Ff SU9fUFJPVE9DT0xfV0lEVEggIFdpZHRoLA0KPiArICBJTiAgICAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgT2Zmc2V0LA0KPiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg Q291bnQsDQo+ICsgIElOIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVyDQo+ ICsgICk7DQo+ICsNCj4gKy8vLw0KPiArLy8vIFN0cnVjdHVyZSBvZiBmdW5jdGlvbnMgZm9yIGFj Y2Vzc2luZyBJU0EgSS9PIGFuZCBNTUlPIHNwYWNlLg0KPiArLy8vDQo+ICt0eXBlZGVmIHN0cnVj dCB7DQo+ICsgIC8vLw0KPiArICAvLy8gUmVhZCBmcm9tIElTQSBJL08gb3IgTU1JTyBzcGFjZS4N Cj4gKyAgLy8vDQo+ICsgIEVGSV9JU0FfSU9fUFJPVE9DT0xfSU9fTUVNICBSZWFkOw0KPiArICAv Ly8NCj4gKyAgLy8vIFdyaXRlIHRvIElTQSBJL08gb3IgTU1JTyBzcGFjZS4NCj4gKyAgLy8vDQo+ ICsgIEVGSV9JU0FfSU9fUFJPVE9DT0xfSU9fTUVNICBXcml0ZTsNCj4gK30gRUZJX0lTQV9JT19Q Uk9UT0NPTF9BQ0NFU1M7DQo+ICsNCj4gKy8qKg0KPiArICBDb3BpZXMgZGF0YSBmcm9tIG9uZSBy ZWdpb24gb2YgSVNBIE1NSU8gc3BhY2UgdG8gYW5vdGhlciByZWdpb24gb2YgSVNBDQo+ICsgIE1N SU8gc3BhY2UuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBUaGlzICAgICAgICAgQSBwb2ludGVyIHRv IHRoZSBFRklfSVNBX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dIFdpZHRo ICAgICAgICBTcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBNTUlPIGNvcHkgb3BlcmF0aW9uLg0K PiArICBAcGFyYW1baW5dIERlc3RPZmZzZXQgICBUaGUgb2Zmc2V0IG9mIHRoZSBkZXN0aW5hdGlv biBpbiBJU0EgTU1JTyBzcGFjZS4NCj4gKyAgQHBhcmFtW2luXSBTcmNPZmZzZXQgICAgVGhlIG9m ZnNldCBvZiB0aGUgc291cmNlIGluIElTQSBNTUlPIHNwYWNlLg0KPiArICBAcGFyYW1baW5dIENv dW50ICAgICAgICBUaGUgbnVtYmVyIHRyYW5mZXJzIHRvIHBlcmZvcm0gZm9yIHRoaXMgY29weQ0K PiBvcGVyYXRpb24uDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBU aGUgZGF0YSB3YXMgY29waWVkIHN1Y2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBP UlRFRCAgICAgICAgIFRoZSBEZXN0T2Zmc2V0IG9yIFNyY09mZnNldCBpcyBub3QgdmFsaWQgZm9y DQo+IHRoaXMgZGV2aWNlLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFdp ZHRoIG9yIENvdW50LCBvciBib3RoLCB3ZXJlIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX09V VF9PRl9SRVNPVVJDRVMgICAgVGhlIHJlcXVlc3QgY291bGQgbm90IGJlIGNvbXBsZXRlZCBkdWUN Cj4gdG8gYSBsYWNrIG9mIHJlc291cmNlcy4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtF RklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfSVNBX0lPX1BST1RPQ09MX0NPUFlfTUVNKSgNCj4g KyAgSU4gRUZJX0lTQV9JT19QUk9UT0NPTCAgICAgICAgICpUaGlzLA0KPiArICBJTiBFRklfSVNB X0lPX1BST1RPQ09MX1dJRFRIICAgV2lkdGgsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICBEZXN0T2Zmc2V0LA0KPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAg U3JjT2Zmc2V0LA0KPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgQ291bnQNCj4g KyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIE1hcHMgYSBtZW1vcnkgcmVnaW9uIGZvciBETUEuDQo+ ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBkZXZpY2Utc3BlY2lmaWMgYWRkcmVz c2VzIHJlcXVpcmVkIHRvIGFjY2VzcyBzeXN0ZW0NCj4gbWVtb3J5Lg0KPiArICBUaGlzIGZ1bmN0 aW9uIGlzIHVzZWQgdG8gbWFwIHN5c3RlbSBtZW1vcnkgZm9yIElTQSBETUEgb3BlcmF0aW9ucy4g IEFsbCBJU0ENCj4gRE1BDQo+ICsgIG9wZXJhdGlvbnMgbXVzdCBiZSBwZXJmb3JtZWQgdGhyb3Vn aCB0aGVpciBtYXBwZWQgYWRkcmVzc2VzLCBhbmQgc3VjaA0KPiBtYXBwaW5ncyBtdXN0DQo+ICsg IGJlIGZyZWVkIHdpdGggRUZJX0lTQV9JT19QUk9UT0NPTC5Vbm1hcCgpIGFmdGVyIHRoZSBETUEg b3BlcmF0aW9uIGlzDQo+IGNvbXBsZXRlZC4NCj4gKw0KPiArICBJZiB0aGUgRE1BIG9wZXJhdGlv biBpcyBhIHNpbmdsZSByZWFkIG9yIHdyaXRlIGRhdGEgdHJhbnNmZXIgdGhyb3VnaCBhbiBJU0Eg YnVzDQo+ICsgIG1hc3RlciwgdGhlbiBFZmlJc2FJb09wZXJhdGlvbkJ1c01hc3RlclJlYWQgb3IN Cj4gRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJXcml0ZQ0KPiArICBpcyB1c2VkIGFuZCB0aGUg cmFuZ2UgaXMgdW5tYXBwZWQgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlvbi4gSWYgdGhlIERNQQ0K PiBvcGVyYXRpb24NCj4gKyAgaXMgYSBzaW5nbGUgcmVhZCBvciB3cml0ZSBkYXRhIHRyYW5zZmVy IHRocm91Z2ggYW4gSVNBIHNsYXZlIGNvbnRyb2xsZXIsIHRoZW4NCj4gKyAgRWZpSXNhSW9PcGVy YXRpb25TbGF2ZVJlYWQgb3IgRWZpSXNhSW9PcGVyYXRpb25TbGF2ZVdyaXRlIGlzIHVzZWQgYW5k IHRoZQ0KPiByYW5nZQ0KPiArICBpcyB1bm1hcHBlZCB0byBjb21wbGV0ZSB0aGUgb3BlcmF0aW9u Lg0KPiArDQo+ICsgIElmIHBlcmZvcm1pbmcgYSBETUEgcmVhZCBvcGVyYXRpb24sIGFsbCB0aGUg ZGF0YSBtdXN0IGJlIHByZXNlbnQgaW4gc3lzdGVtDQo+IG1lbW9yeSBiZWZvcmUgdGhlIE1hcCgp IGlzIHBlcmZvcm1lZC4gIFNpbWlsYXJseSwNCj4gKyAgaWYgcGVyZm9ybWluZyBhIERNQSB3cml0 ZSBvcGVyYXRpb24sIHRoZSBkYXRhIG11c3Qgbm90IGJlIGFjY2Vzc2VkIGluIHN5c3RlbQ0KPiAr ICBtZW1vcnkgdW50aWwgRUZJX0lTQV9JT19QUk9UT0NPTC5Vbm1hcCgpIGlzIHBlcmZvcm1lZC4g IEJ1cyBtYXN0ZXINCj4gb3BlcmF0aW9ucyB0aGF0DQo+ICsgIHJlcXVpcmUgYm90aCByZWFkIGFu ZCB3cml0ZSBhY2Nlc3Mgb3IgcmVxdWlyZSBtdWx0aXBsZSBob3N0IGRldmljZQ0KPiBpbnRlcmFj dGlvbnMNCj4gKyAgd2l0aGluIHRoZSBzYW1lIG1hcHBlZCByZWdpb24gbXVzdCB1c2UNCj4gRWZp SXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJDb21tb25CdWZmZXIuDQo+ICsgIEhvd2V2ZXIsIG9ubHkg bWVtb3J5IGFsbG9jYXRlZCB2aWEgdGhlDQo+IEVGSV9JU0FfSU9fUFJPVE9DT0wuQWxsb2NhdGVC dWZmZXIoKSBpbnRlcmZhY2UNCj4gKyAgaXMgZ3VhcmFudGVlZCB0byBiZSBhYmxlIHRvIGJlIG1h cHBlZCBmb3IgdGhpcyBvcGVyYXRpb24gdHlwZS4gIEluIGFsbCBtYXBwaW5nDQo+ICsgIHJlcXVl c3RzIHRoZSBOdW1iZXJPZkJ5dGVzIHJldHVybmVkIG1heSBiZSBsZXNzIHRoYW4gb3JpZ2luYWxs eSByZXF1ZXN0ZWQuDQo+IEl0IGlzDQo+ICsgIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0 byBtYWtlIGFkZGl0aW9uYWwgcmVxdWVzdHMgdG8gY29tcGxldGUgdGhlIGVudGlyZQ0KPiArICB0 cmFuc2Zlci4NCj4gKw0KPiArICBAcGFyYW1baW5dICAgICAgVGhpcyAgICAgICAgICAgICAgICBB IHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJh bVtpbl0gICAgICBPcGVyYXRpb24gICAgICAgICAgIEluZGljYXRlcyB0aGUgdHlwZSBvZiBETUEg KHNsYXZlIG9yIGJ1cw0KPiBtYXN0ZXIpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhbmQgaWYgdGhlIERNQSBvcGVyYXRpb24gaXMgZ29pbmcgdG8gcmVhZCBvcg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSB0byBzeXN0ZW0g bWVtb3J5Lg0KPiArICBAcGFyYW1baW5dICAgICAgQ2hhbm5lbE51bWJlciAgICAgICBUaGUgc2xh dmUgY2hhbm5lbCBudW1iZXIgdG8gdXNlIGZvciB0aGlzDQo+IERNQQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24uICBJZiBPcGVyYXRpb24gYW5kIENo YW5uZWxBdHRyaWJ1dGVzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNob3dzIHRoYXQgdGhpcyBkZXZpY2UgcGVyZm9ybXMgYnVzIG1hc3RlcmluZw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEsIHRoZW4gdGhpcyBmaWVsZCBpcyBp Z25vcmVkLiAgVGhlIGxlZ2FsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJhbmdlIGZvciB0aGlzIGZpZWxkIGlzIDAuLjcuDQo+ICsgIEBwYXJhbVtpbl0gICAgICBD aGFubmVsQXR0cmlidXRlcyAgIEEgYml0bWFzayBvZiB0aGUgYXR0cmlidXRlcyB1c2VkIHRvDQo+ IGNvbmZpZ3VyZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUg c2xhdmUgRE1BIGNoYW5uZWwgZm9yIHRoaXMgRE1BIG9wZXJhdGlvbi4NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FUVFJJ QlVURV8qIGZvciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGVnYWwgYml0IGNvbWJpbmF0aW9ucy4NCj4gKyAgQHBhcmFtW2luXSAgICAgIEhvc3RBZGRyZXNz ICAgICAgICAgVGhlIHN5c3RlbSBtZW1vcnkgYWRkcmVzcyB0byBtYXAgdG8gdGhlDQo+IGRldmlj ZS4NCj4gKyAgQHBhcmFtW2luLCBvdXRdIE51bWJlck9mQnl0ZXMgICAgICAgT24gaW5wdXQgdGhl IG51bWJlciBvZiBieXRlcyB0byBtYXAuDQo+IE9uDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG91dHB1dCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2VyZSBtYXBw ZWQuDQo+ICsgIEBwYXJhbVtvdXRdICAgICBEZXZpY2VBZGRyZXNzICAgICAgIFRoZSByZXN1bHRp bmcgbWFwIGFkZHJlc3MgZm9yIHRoZSBidXMNCj4gbWFzdGVyDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRldmljZSB0byB1c2UgdG8gYWNjZXNzIHRoZSBob3N0cyBI b3N0QWRkcmVzcy4NCj4gKyAgQHBhcmFtW291dF0gICAgIE1hcHBpbmcgICAgICAgICAgICAgQSBy ZXR1cm5lZCB2YWx1ZSB0aGF0IG11c3QgYmUgcGFzc2VkIHRvIGludG8NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lTQV9JT19QUk9UT0NPTC5Vbm1hcCgpIHRv IGZyZWUgYWxsIHRoZSB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1hcCByZXF1ZXN0Lg0KPiArDQo+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIHJhbmdlIHdhcyBtYXBwZWQgZm9y IHRoZSByZXR1cm5lZA0KPiBOdW1iZXJPZkJ5dGVzLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgIFRoZSBPcGVyYXRpb24gaXMgdW5kZWZpbmVkLg0KPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgIFRoZSBIb3N0QWRkcmVzcyBpcyB1bmRlZmluZWQuDQo+ICsg IEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgVGhlIEhvc3RBZGRyZXNzIGNhbiBub3Qg YmUgbWFwcGVkIGFzIGENCj4gY29tbW9uIGJ1ZmZlci4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNF X0VSUk9SICAgICAgICBUaGUgc3lzdGVtIGhhcmR3YXJlIGNvdWxkIG5vdCBtYXAgdGhlDQo+IHJl cXVlc3RlZCBhZGRyZXNzLg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgIFRo ZSBtZW1vcnkgcGFnZXMgY291bGQgbm90IGJlDQo+IGFsbG9jYXRlZC4NCj4gKw0KPiArKiovDQo+ ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfSVNBX0lPX1BST1RPQ09M X01BUCkoDQo+ICsgIElOICAgICBFRklfSVNBX0lPX1BST1RPQ09MICAgICAgICAgICAgKlRoaXMs DQo+ICsgIElOICAgICBFRklfSVNBX0lPX1BST1RPQ09MX09QRVJBVElPTiAgT3BlcmF0aW9uLA0K PiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5uZWxOdW1iZXIg ICAgICBPUFRJT05BTCwNCj4gKyAgSU4gICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICBDaGFubmVsQXR0cmlidXRlcywNCj4gKyAgSU4gICAgIFZPSUQgICAgICAgICAgICAgICAgICAg ICAgICAgICAqSG9zdEFkZHJlc3MsDQo+ICsgIElOIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgKk51bWJlck9mQnl0ZXMsDQo+ICsgIE9VVCAgICBFRklfUEhZU0lDQUxfQUREUkVT UyAgICAgICAgICAgKkRldmljZUFkZHJlc3MsDQo+ICsgIE9VVCAgICBWT0lEICAgICAgICAgICAg ICAgICAgICAgICAgICAgKipNYXBwaW5nDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBVbm1h cHMgYSBtZW1vcnkgcmVnaW9uIHRoYXQgd2FzIHByZXZpb3VzbHkgbWFwcGVkIHdpdGgNCj4gRUZJ X0lTQV9JT19QUk9UT0NPTC5NYXAoKS4NCj4gKw0KPiArICBUaGUgRUZJX0lTQV9JT19QUk9UT0NP TC5NYXAoKSBvcGVyYXRpb24gaXMgY29tcGxldGVkIGFuZCBhbnkNCj4gY29ycmVzcG9uZGluZw0K PiArICByZXNvdXJjZXMgYXJlIHJlbGVhc2VkLiAgSWYgdGhlIG9wZXJhdGlvbiB3YXMgRWZpSXNh SW9PcGVyYXRpb25TbGF2ZVdyaXRlDQo+ICsgIG9yIEVmaUlzYUlvT3BlcmF0aW9uQnVzTWFzdGVy V3JpdGUsIHRoZSBkYXRhIGlzIGNvbW1pdHRlZCB0byBzeXN0ZW0NCj4gbWVtb3J5Lg0KPiArICBB bnkgcmVzb3VyY2VzIHVzZWQgZm9yIHRoZSBtYXBwaW5nIGFyZSBmcmVlZC4NCj4gKw0KPiArICBA cGFyYW1baW5dIFRoaXMgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9JT19QUk9U T0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBNYXBwaW5nICAgICAgICBUaGUgbWFwcGlu ZyB2YWx1ZSByZXR1cm5lZCBmcm9tDQo+IEVGSV9JU0FfSU9fUFJPVE9DT0wuTWFwKCkuDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgbWVtb3J5IHJlZ2lvbiB3YXMgdW5t YXBwZWQuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgVGhlIGRhdGEgd2FzIG5vdCBj b21taXR0ZWQgdG8gdGhlIHRhcmdldA0KPiBzeXN0ZW0gbWVtb3J5Lg0KPiArKiovDQo+ICt0eXBl ZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfSVNBX0lPX1BST1RPQ09MX1VOTUFQ KSgNCj4gKyAgSU4gIEVGSV9JU0FfSU9fUFJPVE9DT0wgICpUaGlzLA0KPiArICBJTiAgVk9JRCAg ICAgICAgICAgICAgICAgKk1hcHBpbmcNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIEFsbG9j YXRlcyBwYWdlcyB0aGF0IGFyZSBzdWl0YWJsZSBmb3IgYW4NCj4gRWZpSXNhSW9PcGVyYXRpb25C dXNNYXN0ZXJDb21tb25CdWZmZXINCj4gKyAgbWFwcGluZy4NCj4gKw0KPiArICBAcGFyYW1baW5d ICBUaGlzICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTCBpbnN0 YW5jZS4NCj4gKyAgQHBhcmFtW2luXSAgVHlwZSAgICAgICAgICBUaGUgdHlwZSBhbGxvY2F0aW9u IHRvIHBlcmZvcm0uDQo+ICsgIEBwYXJhbVtpbl0gIE1lbW9yeVR5cGUgICAgVGhlIHR5cGUgb2Yg bWVtb3J5IHRvIGFsbG9jYXRlLg0KPiArICBAcGFyYW1baW5dICBQYWdlcyAgICAgICAgIFRoZSBu dW1iZXIgb2YgcGFnZXMgdG8gYWxsb2NhdGUuDQo+ICsgIEBwYXJhbVtvdXRdIEhvc3RBZGRyZXNz ICAgQSBwb2ludGVyIHRvIHN0b3JlIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQo+IGFsbG9jYXRl ZCByYW5nZS4NCj4gKyAgQHBhcmFtW2luXSAgQXR0cmlidXRlcyAgICBUaGUgcmVxdWVzdGVkIGJp dCBtYXNrIG9mIGF0dHJpYnV0ZXMgZm9yIHRoZQ0KPiBhbGxvY2F0ZWQgcmFuZ2UuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgcmVxdWVzdGVkIG1lbW9yeSBw YWdlcyB3ZXJlIGFsbG9jYXRlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg ICBUeXBlIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAg TWVtb3J5VHlwZSBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiAgIEhvc3RBZGRyZXNzIGlzIE5VTEwuDQo+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAg ICAgICAgQXR0cmlidXRlcyBpcyB1bnN1cHBvcnRlZC4NCj4gKyAgQHJldHZhbCBFRklfVU5TVVBQ T1JURUQgICAgICAgICBUaGUgbWVtb3J5IHJhbmdlIHNwZWNpZmllZCBieQ0KPiBIb3N0QWRkcmVz cywgUGFnZXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFR5cGUg aXMgbm90IGF2YWlsYWJsZSBmb3IgY29tbW9uIGJ1ZmZlciB1c2UuDQo+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgICAgVGhlIG1lbW9yeSBwYWdlcyBjb3VsZCBub3QgYmUNCj4gYWxs b2NhdGVkLg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklB UEkgKkVGSV9JU0FfSU9fUFJPVE9DT0xfQUxMT0NBVEVfQlVGRkVSKSgNCj4gKyAgSU4gIEVGSV9J U0FfSU9fUFJPVE9DT0wgICpUaGlzLA0KPiArICBJTiAgRUZJX0FMTE9DQVRFX1RZUEUgICAgVHlw ZSwNCj4gKyAgSU4gIEVGSV9NRU1PUllfVFlQRSAgICAgIE1lbW9yeVR5cGUsDQo+ICsgIElOICBV SU5UTiAgICAgICAgICAgICAgICBQYWdlcywNCj4gKyAgT1VUIFZPSUQgICAgICAgICAgICAgICAg ICoqSG9zdEFkZHJlc3MsDQo+ICsgIElOICBVSU5UNjQgICAgICAgICAgICAgICBBdHRyaWJ1dGVz DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBGcmVlcyBhIGNvbW1vbiBidWZmZXIgdGhhdCB3 YXMgYWxsb2NhdGVkIHdpdGgNCj4gRUZJX0lTQV9JT19QUk9UT0NPTC5BbGxvY2F0ZUJ1ZmZlcigp Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gVGhpcyAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVG SV9JU0FfSU9fUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gUGFnZXMgICAgICAg ICBUaGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGZyZWUgZnJvbSB0aGUgcHJldmlvdXNseQ0KPiBhbGxv Y2F0ZWQgY29tbW9uIGJ1ZmZlci4NCj4gKyAgQHBhcmFtW2luXSBIb3N0QWRkcmVzcyAgIFRoZSBi YXNlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzbHkgYWxsb2NhdGVkDQo+IGNvbW1vbiBidWZmZXIu DQo+ICsNCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFRoZSByZXF1 ZXN0ZWQgbWVtb3J5IHBhZ2VzIHdlcmUgZnJlZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSICAgVGhlIG1lbW9yeSB3YXMgbm90IGFsbG9jYXRlZCB3aXRoDQo+IEVGSV9JU0Ff SU8uQWxsb2NhdGVCdWZlcigpLg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFU VVMNCj4gKyhFRklBUEkgKkVGSV9JU0FfSU9fUFJPVE9DT0xfRlJFRV9CVUZGRVIpKA0KPiArICBJ TiAgRUZJX0lTQV9JT19QUk9UT0NPTCAgKlRoaXMsDQo+ICsgIElOICBVSU5UTiAgICAgICAgICAg ICAgICBQYWdlcywNCj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICpIb3N0QWRkcmVzcw0K PiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgRmx1c2hlcyBhIERNQSBidWZmZXIsIHdoaWNoIGZv cmNlcyBhbGwgRE1BIHBvc3RlZCB3cml0ZSB0cmFuc2FjdGlvbnMgdG8NCj4gY29tcGxldGUuDQo+ ICsNCj4gKyAgQHBhcmFtW2luXSBUaGlzICAgQSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0lPX1BS T1RPQ09MIGluc3RhbmNlLg0KPiArDQo+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICBU aGUgRE1BIGJ1ZmZlcnMgd2VyZSBmbHVzaGVkLg0KPiArICBAcmV0dmFsICBFRklfREVWSUNFX0VS Uk9SICAgVGhlIGJ1ZmZlcnMgd2VyZSBub3QgZmx1c2hlZCBkdWUgdG8gYQ0KPiBoYXJkd2FyZSBl cnJvci4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJ ICpFRklfSVNBX0lPX1BST1RPQ09MX0ZMVVNIKSgNCj4gKyAgSU4gRUZJX0lTQV9JT19QUk9UT0NP TCAgKlRoaXMNCj4gKyAgKTsNCj4gKw0KPiArLy8vDQo+ICsvLy8gVGhlIEVGSV9JU0FfSU9fUFJP VE9DT0wgcHJvdmlkZXMgdGhlIGJhc2ljIE1lbW9yeSwgSS9PLCBhbmQgRE1BDQo+IGludGVyZmFj ZXMNCj4gKy8vLyB1c2VkIHRvIGFic3RyYWN0IGFjY2Vzc2VzIHRvIElTQSBjb250cm9sbGVycy4g IFRoZXJlIGlzIG9uZQ0KPiBFRklfSVNBX0lPX1BST1RPQ09MDQo+ICsvLy8gaW5zdGFuY2UgZm9y IGVhY2ggSVNBIGNvbnRyb2xsZXIgb24gYSBJU0EgYnVzLiBBIGRldmljZSBkcml2ZXIgdGhhdCB3 aXNoZXMNCj4gKy8vLyB0byBtYW5hZ2UgYW4gSVNBIGNvbnRyb2xsZXIgaW4gYSBzeXN0ZW0gd2ls bCBoYXZlIHRvIHJldHJpZXZlIHRoZQ0KPiArLy8vIElTQV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFu Y2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBJU0EgY29udHJvbGxlci4NCj4gKy8vLw0KPiArc3RydWN0 IF9FRklfSVNBX0lPX1BST1RPQ09MIHsNCj4gKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9BQ0NFU1Mg ICAgICAgICAgIE1lbTsNCj4gKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9BQ0NFU1MgICAgICAgICAg IElvOw0KPiArICBFRklfSVNBX0lPX1BST1RPQ09MX0NPUFlfTUVNICAgICAgICAgQ29weU1lbTsN Cj4gKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9NQVAgICAgICAgICAgICAgIE1hcDsNCj4gKyAgRUZJ X0lTQV9JT19QUk9UT0NPTF9VTk1BUCAgICAgICAgICAgIFVubWFwOw0KPiArICBFRklfSVNBX0lP X1BST1RPQ09MX0FMTE9DQVRFX0JVRkZFUiAgQWxsb2NhdGVCdWZmZXI7DQo+ICsgIEVGSV9JU0Ff SU9fUFJPVE9DT0xfRlJFRV9CVUZGRVIgICAgICBGcmVlQnVmZmVyOw0KPiArICBFRklfSVNBX0lP X1BST1RPQ09MX0ZMVVNIICAgICAgICAgICAgRmx1c2g7DQo+ICsgIC8vLw0KPiArICAvLy8gVGhl IGxpc3Qgb2YgSS9PICwgTU1JTywgRE1BLCBhbmQgSW50ZXJydXB0IHJlc291cmNlcyBhc3NvY2lh dGVkIHdpdGggdGhlDQo+ICsgIC8vLyBJU0EgY29udHJvbGxlciBhYnN0cmFjdGVkIGJ5IHRoaXMg aW5zdGFuY2Ugb2YgdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wuDQo+ICsgIC8vLw0KPiArICBFRklf SVNBX0FDUElfUkVTT1VSQ0VfTElTVCAgICAgICAgICAgKlJlc291cmNlTGlzdDsNCj4gKyAgLy8v DQo+ICsgIC8vLyBUaGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBST00gaW1hZ2UuDQo+ICsgIC8v Lw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9tU2l6ZTsNCj4g KyAgLy8vDQo+ICsgIC8vLyBBIHBvaW50ZXIgdG8gdGhlIGluIG1lbW9yeSBjb3B5IG9mIHRoZSBS T00gaW1hZ2UuIFRoZSBJU0EgQnVzIERyaXZlciBpcw0KPiByZXNwb25zaWJsZQ0KPiArICAvLy8g Zm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciB0aGUgUk9NIGltYWdlLCBhbmQgY29weWluZyB0aGUg Y29udGVudHMgb2YgdGhlDQo+IFJPTSB0byBtZW1vcnkNCj4gKyAgLy8vIGR1cmluZyBJU0EgQnVz IGluaXRpYWxpemF0aW9uLg0KPiArICAvLy8NCj4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpSb21JbWFnZTsNCj4gK307DQo+ICsNCj4gK2V4dGVybiBFRklfR1VJRCBn RWZpSXNhSW9Qcm90b2NvbEd1aWQ7DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvTGVnYWN5ODI1 OS5oDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9j b2wvTGVnYWN5ODI1OS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAuLmMzOGYyZmViYTcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9MZWdhY3k4MjU5LmgNCj4gQEAgLTAs MCArMSwyOTEgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBUaGlzIHByb3RvY29sIGFic3RyYWN0cyB0 aGUgODI1OSBpbnRlcnJ1cHQgY29udHJvbGxlci4gVGhpcyBpbmNsdWRlcw0KPiArICBQQ0kgSVJR IHJvdXRpbmcgbmVlZGVkIHRvIHByb2dyYW0gdGhlIFBDSSBJbnRlcnJ1cHQgTGluZSByZWdpc3Rl ci4NCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyAgQHBhciBSZXZpc2lvbiBSZWZlcmVuY2U6 DQo+ICsgIFRoaXMgcHJvdG9jb2wgaXMgZGVmaW5lZCBpbiBGcmFtZXdvcmsgZm9yIEVGSSBDb21w YXRpYmlsaXR5IFN1cHBvcnQgTW9kdWxlDQo+IHNwZWMNCj4gKyAgVmVyc2lvbiAwLjk3Lg0KPiAr DQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfRUZJX0xFR0FDWV84MjU5X0hfDQo+ICsjZGVmaW5l IF9FRklfTEVHQUNZXzgyNTlfSF8NCj4gKw0KPiArDQo+ICsjZGVmaW5lIEVGSV9MRUdBQ1lfODI1 OV9QUk9UT0NPTF9HVUlEIFwNCj4gKyAgeyBcDQo+ICsgICAgMHgzODMyMWRiYSwgMHg0ZmUwLCAw eDRlMTcsIHsweDhhLCAweGVjLCAweDQxLCAweDMwLCAweDU1LCAweGVhLCAweGVkLA0KPiAweGMx IH0gXA0KPiArICB9DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IF9FRklfTEVHQUNZXzgyNTlfUFJP VE9DT0wNCj4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MOw0KPiArDQo+ICt0eXBlZGVmIGVudW0g ew0KPiArICBFZmk4MjU5SXJxMCwNCj4gKyAgRWZpODI1OUlycTEsDQo+ICsgIEVmaTgyNTlJcnEy LA0KPiArICBFZmk4MjU5SXJxMywNCj4gKyAgRWZpODI1OUlycTQsDQo+ICsgIEVmaTgyNTlJcnE1 LA0KPiArICBFZmk4MjU5SXJxNiwNCj4gKyAgRWZpODI1OUlycTcsDQo+ICsgIEVmaTgyNTlJcnE4 LA0KPiArICBFZmk4MjU5SXJxOSwNCj4gKyAgRWZpODI1OUlycTEwLA0KPiArICBFZmk4MjU5SXJx MTEsDQo+ICsgIEVmaTgyNTlJcnExMiwNCj4gKyAgRWZpODI1OUlycTEzLA0KPiArICBFZmk4MjU5 SXJxMTQsDQo+ICsgIEVmaTgyNTlJcnExNSwNCj4gKyAgRWZpODI1OUlycU1heA0KPiArfSBFRklf ODI1OV9JUlE7DQo+ICsNCj4gK3R5cGVkZWYgZW51bSB7DQo+ICsgIEVmaTgyNTlMZWdhY3lNb2Rl LA0KPiArICBFZmk4MjU5UHJvdGVjdGVkTW9kZSwNCj4gKyAgRWZpODI1OU1heE1vZGUNCj4gK30g RUZJXzgyNTlfTU9ERTsNCj4gKw0KPiArLyoqDQo+ICsgIEdldCB0aGUgODI1OSBpbnRlcnJ1cHQg bWFza3MgZm9yIElycTAgLSBJcnExNS4gQSBkaWZmZXJlbnQgbWFzayBleGlzdHMgZm9yDQo+ICsg IHRoZSBsZWdhY3kgbW9kZSBtYXNrIGFuZCB0aGUgcHJvdGVjdGVkIG1vZGUgbWFzay4gVGhlIGJh c2UgYWRkcmVzcyBmb3INCj4gdGhlIDgyNTkNCj4gKyAgaXMgZGlmZmVyZW50IGZvciBsZWdhY3kg YW5kIHByb3RlY3RlZCBtb2RlLCBzbyB0d28gbWFza3MgYXJlIHJlcXVpcmVkLg0KPiArDQo+ICsg IEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2lu dGVyLg0KPiArICBAcGFyYW0gIE1hc3RlckJhc2UgICAgICAgICAgICBUaGUgYmFzZSB2ZWN0b3Ig Zm9yIHRoZSBNYXN0ZXIgUElDIGluIHRoZSA4MjU5DQo+IGNvbnRyb2xsZXIuDQo+ICsgIEBwYXJh bSAgU2xhdmVCYXNlICAgICAgICAgICAgIFRoZSBiYXNlIHZlY3RvciBmb3IgdGhlIFNsYXZlIFBJ QyBpbiB0aGUgODI1OQ0KPiBjb250cm9sbGVyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBuZXcgYmFzZXMgd2VyZSBwcm9ncmFtbWVkLg0KPiArICBAcmV0dmFs IEVGSV9ERVZJQ0VfRVJST1IgICAgICBBIGRldmljZSBlcnJvciBvY2N1cmVkIHByb2dyYW1taW5n IHRoZQ0KPiB2ZWN0b3IgYmFzZXMuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NU QVRVUw0KPiArKEVGSUFQSSAqRUZJX0xFR0FDWV84MjU5X1NFVF9WRUNUT1JfQkFTRSkoDQo+ICsg IElOIEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQo+ICsgIElOICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFzdGVyQmFzZSwNCj4gKyAgSU4gIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbGF2ZUJhc2UNCj4gKyAgKTsNCj4gKw0K PiArLyoqDQo+ICsgIEdldCB0aGUgODI1OSBpbnRlcnJ1cHQgbWFza3MgZm9yIElycTAgLSBJcnEx NS4gQSBkaWZmZXJlbnQgbWFzayBleGlzdHMgZm9yDQo+ICsgIHRoZSBsZWdhY3kgbW9kZSBtYXNr IGFuZCB0aGUgcHJvdGVjdGVkIG1vZGUgbWFzay4gVGhlIGJhc2UgYWRkcmVzcyBmb3INCj4gdGhl IDgyNTkNCj4gKyAgaXMgZGlmZmVyZW50IGZvciBsZWdhY3kgYW5kIHByb3RlY3RlZCBtb2RlLCBz byB0d28gbWFza3MgYXJlIHJlcXVpcmVkLg0KPiArDQo+ICsgIEBwYXJhbSAgVGhpcyAgICAgICAg ICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KPiArICBAcGFyYW0gIExl Z2FjeU1hc2sgICAgICAgICAgICBCaXQgMCBpcyBJcnEwIC0gQml0IDE1IGlzIElycTE1Lg0KPiAr ICBAcGFyYW0gIExlZ2FjeUVkZ2VMZXZlbCAgICAgICBCaXQgMCBpcyBJcnEwIC0gQml0IDE1IGlz IElycTE1Lg0KPiArICBAcGFyYW0gIFByb3RlY3RlZE1hc2sgICAgICAgICBCaXQgMCBpcyBJcnEw IC0gQml0IDE1IGlzIElycTE1Lg0KPiArICBAcGFyYW0gIFByb3RlY3RlZEVkZ2VMZXZlbCAgICBC aXQgMCBpcyBJcnEwIC0gQml0IDE1IGlzIElycTE1Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIDgyNTkgc3RhdHVzIHJldHVybmVkLg0KPiArICBAcmV0dmFsIEVGSV9E RVZJQ0VfRVJST1IgICAgICBFcnJvciByZWFkaW5nIDgyNTkuDQo+ICsNCj4gKyoqLw0KPiArdHlw ZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0xFR0FDWV84MjU5X0dFVF9NQVNL KSgNCj4gKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MICAgICAgICAgICAqVGhpcywNCj4g KyAgT1VUIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTGVnYWN5TWFzaywgT1BU SU9OQUwNCj4gKyAgT1VUIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTGVnYWN5 RWRnZUxldmVsLCBPUFRJT05BTA0KPiArICBPVVQgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpQcm90ZWN0ZWRNYXNrLCBPUFRJT05BTA0KPiArICBPVVQgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpQcm90ZWN0ZWRFZGdlTGV2ZWwgT1BUSU9OQUwNCj4gKyAgKTsN Cj4gKw0KPiArLyoqDQo+ICsgIFNldCB0aGUgODI1OSBpbnRlcnJ1cHQgbWFza3MgZm9yIElycTAg LSBJcnExNS4gQSBkaWZmZXJlbnQgbWFzayBleGlzdHMgZm9yDQo+ICsgIHRoZSBsZWdhY3kgbW9k ZSBtYXNrIGFuZCB0aGUgcHJvdGVjdGVkIG1vZGUgbWFzay4gVGhlIGJhc2UgYWRkcmVzcyBmb3IN Cj4gdGhlIDgyNTkNCj4gKyAgaXMgZGlmZmVyZW50IGZvciBsZWdhY3kgYW5kIHByb3RlY3RlZCBt b2RlLCBzbyB0d28gbWFza3MgYXJlIHJlcXVpcmVkLg0KPiArICBBbHNvIHNldCB0aGUgZWRnZS9s ZXZlbCBtYXNrcy4NCj4gKw0KPiArICBAcGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBUaGUg cHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCj4gKyAgQHBhcmFtICBMZWdhY3lNYXNrICAgICAg ICAgICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBpcyBJcnExNS4NCj4gKyAgQHBhcmFtICBMZWdh Y3lFZGdlTGV2ZWwgICAgICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBpcyBJcnExNS4NCj4gKyAg QHBhcmFtICBQcm90ZWN0ZWRNYXNrICAgICAgICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBpcyBJ cnExNS4NCj4gKyAgQHBhcmFtICBQcm90ZWN0ZWRFZGdlTGV2ZWwgICAgQml0IDAgaXMgSXJxMCAt IEJpdCAxNSBpcyBJcnExNS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICA4MjU5IHN0YXR1cyByZXR1cm5lZC4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAg ICAgRXJyb3Igd3JpdGluZyA4MjU5Lg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9T VEFUVVMNCj4gKyhFRklBUEkgKkVGSV9MRUdBQ1lfODI1OV9TRVRfTUFTSykoDQo+ICsgIElOIEVG SV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQo+ICsgIElOICBVSU5UMTYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxlZ2FjeU1hc2ssIE9QVElPTkFMDQo+ICsgIElO ICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxlZ2FjeUVkZ2VMZXZlbCwgT1BU SU9OQUwNCj4gKyAgSU4gIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUHJvdGVj dGVkTWFzaywgT1BUSU9OQUwNCj4gKyAgSU4gIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqUHJvdGVjdGVkRWRnZUxldmVsIE9QVElPTkFMDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0K PiArICBTZXQgdGhlIDgyNTkgbW9kZSBvZiBvcGVyYXRpb24uIFRoZSBiYXNlIGFkZHJlc3MgZm9y IHRoZSA4MjU5IGlzIGRpZmZlcmVudA0KPiBmb3INCj4gKyAgbGVnYWN5IGFuZCBwcm90ZWN0ZWQg bW9kZS4gVGhlIGxlZ2FjeSBtb2RlIHJlcXVpcmVzIHRoZSBtYXN0ZXIgODI1OSB0bw0KPiBoYXZl IGENCj4gKyAgbWFzdGVyIGJhc2Ugb2YgMHgwOCBhbmQgdGhlIHNsYXZlIGJhc2Ugb2YgMHg3MC4g VGhlIHByb3RlY3RlZCBtb2RlIGJhc2UNCj4gbG9jYXRpb25zDQo+ICsgIGFyZSBub3QgZGVmaW5l ZC4gSW50ZXJydXB0cyBtdXN0IGJlIG1hc2tlZCBieSB0aGUgY2FsbGVyIGJlZm9yZSB0aGlzIGZ1 bmN0aW9uDQo+ICsgIGlzIGNhbGxlZC4gVGhlIGludGVycnVwdCBtYXNrIGZyb20gdGhlIGN1cnJl bnQgbW9kZSBpcyBzYXZlZC4gVGhlIGludGVycnVwdA0KPiArICBtYXNrIGZvciB0aGUgbmV3IG1v ZGUgaXMgTWFzaywgb3IgaWYgTWFzayBkb2VzIG5vdCBleGlzdCB0aGUgcHJldmlvdXNseSBzYXZl ZA0KPiArICBtYXNrIGlzIHVzZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAg ICAgICAgVGhlIHByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQo+ICsgIEBwYXJhbSAgTW9kZSAg ICAgICAgICAgICAgICAgIFRoZSBtb2RlIG9mIG9wZXJhdGlvbi4gaS5lLiB0aGUgcmVhbCBtb2Rl IG9yDQo+IHByb3RlY3RlZCBtb2RlLg0KPiArICBAcGFyYW0gIE1hc2sgICAgICAgICAgICAgICAg ICBPcHRpb25hbCBpbnRlcnVwdCBtYXNrIGZvciB0aGUgbmV3IG1vZGUuDQo+ICsgIEBwYXJhbSAg RWRnZUxldmVsICAgICAgICAgICAgIE9wdGlvbmFsIHRyaWdnZXIgbWFzayBmb3IgdGhlIG5ldyBt b2RlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIDgyNTkgcHJvZ3Jh bW1lZC4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgRXJyb3Igd3JpdGluZyB0 byA4MjU5Lg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklB UEkgKkVGSV9MRUdBQ1lfODI1OV9TRVRfTU9ERSkoDQo+ICsgIElOIEVGSV9MRUdBQ1lfODI1OV9Q Uk9UT0NPTCAgICAgICAgICpUaGlzLA0KPiArICBJTiAgRUZJXzgyNTlfTU9ERSAgICAgICAgICAg ICAgICAgICBNb2RlLA0KPiArICBJTiAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAq TWFzaywgT1BUSU9OQUwNCj4gKyAgSU4gIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAg KkVkZ2VMZXZlbCBPUFRJT05BTA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgQ29udmVydCBm cm9tIElSUSB0byBwcm9jZXNzb3IgaW50ZXJydXB0IHZlY3RvciBudW1iZXIuDQo+ICsNCj4gKyAg QHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgVGhlIHByb3RvY29sIGluc3RhbmNlIHBvaW50 ZXIuDQo+ICsgIEBwYXJhbSAgSXJxICAgICAgICAgICAgICAgICAgIDgyNTkgSVJRMCAtIElSUTE1 Lg0KPiArICBAcGFyYW0gIFZlY3RvciAgICAgICAgICAgICAgICBUaGUgcHJvY2Vzc29yIHZlY3Rv ciBudW1iZXIgdGhhdCBtYXRjaGVzIGFuIElycS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBUaGUgVmVjdG9yIG1hdGNoaW5nIElycSBpcyByZXR1cm5lZC4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIElycSBub3QgdmFsaWQuDQo+ICsNCj4g KyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0xFR0FDWV84 MjU5X0dFVF9WRUNUT1IpKA0KPiArICBJTiBFRklfTEVHQUNZXzgyNTlfUFJPVE9DT0wgICAgICAg ICAgICpUaGlzLA0KPiArICBJTiAgRUZJXzgyNTlfSVJRICAgICAgICAgICAgICAgICAgICAgIEly cSwNCj4gKyAgT1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVmVjdG9yDQo+ ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBFbmFibGUgSXJxIGJ5IHVubWFza2luZyBpbnRlcnJ1 cHQgaW4gODI1OQ0KPiArDQo+ICsgIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBw cm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KPiArICBAcGFyYW0gIElycSAgICAgICAgICAgICAg ICAgICA4MjU5IElSUTAgLSBJUlExNS4NCj4gKyAgQHBhcmFtICBMZXZlbFRyaWdnZXJlZCAgICAg ICAgVFJVRSBpZiBsZXZlbCB0cmlnZ2VyZWQuIEZBTFNFIGlmIGVkZ2UgdHJpZ2dlcmVkLg0KPiAr DQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBJcnEgd2FzIGVuYWJsZWQg b24gODI1OS4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIElycSBpcyBu b3QgdmFsaWQuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVG SUFQSSAqRUZJX0xFR0FDWV84MjU5X0VOQUJMRV9JUlEpKA0KPiArICBJTiBFRklfTEVHQUNZXzgy NTlfUFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KPiArICBJTiAgRUZJXzgyNTlfSVJRICAgICAg ICAgICAgICAgICAgICAgIElycSwNCj4gKyAgSU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICBMZXZlbFRyaWdnZXJlZA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgRGlzYWJs ZSBJcnEgYnkgbWFza2luZyBpbnRlcnJ1cHQgaW4gODI1OQ0KPiArDQo+ICsgIEBwYXJhbSAgVGhp cyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KPiArICBA cGFyYW0gIElycSAgICAgICAgICAgICAgICAgICA4MjU5IElSUTAgLSBJUlExNS4NCj4gKw0KPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgSXJxIHdhcyBkaXNhYmxlZCBvbiA4 MjU5Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBUaGUgSXJxIGlzIG5vdCB2 YWxpZC4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJ ICpFRklfTEVHQUNZXzgyNTlfRElTQUJMRV9JUlEpKA0KPiArICBJTiBFRklfTEVHQUNZXzgyNTlf UFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KPiArICBJTiAgRUZJXzgyNTlfSVJRICAgICAgICAg ICAgICAgICAgICAgIElycQ0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgUGNpSGFuZGxlIHJl cHJlc2VudHMgYSBQQ0kgY29uZmlnIHNwYWNlIG9mIGEgUENJIGZ1bmN0aW9uLiBWZWN0b3INCj4g KyAgcmVwcmVzZW50cyBJbnRlcnJ1cHQgUGluIChmcm9tIFBDSSBjb25maWcgc3BhY2UpIGFuZCBp dCBpcyB0aGUgZGF0YQ0KPiArICB0aGF0IGlzIHByb2dyYW1tZWQgaW50byB0aGUgSW50ZXJydXB0 IExpbmUgKGZyb20gdGhlIFBDSSBjb25maWcgc3BhY2UpDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ ICsgIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBw b2ludGVyLg0KPiArICBAcGFyYW0gIFBjaUhhbmRsZSAgICAgICAgICAgICBUaGUgUENJIGZ1bmN0 aW9uIHRvIHJldHVybiB0aGUgdmVjdG9yIGZvci4NCj4gKyAgQHBhcmFtICBWZWN0b3IgICAgICAg ICAgICAgICAgVGhlIHZlY3RvciBmb3IgdGhlIGZ1bmN0aW9uIGl0IG1hdGNoZXMuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgQSB2YWxpZCBWZWN0b3Igd2FzIHJldHVy bmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBQY2lIYW5kbGUgbm90IHZh bGlkLg0KPiArDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkg KkVGSV9MRUdBQ1lfODI1OV9HRVRfSU5URVJSVVBUX0xJTkUpKA0KPiArICBJTiBFRklfTEVHQUNZ XzgyNTlfUFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KPiArICBJTiAgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICAgICAgICAgIFBjaUhhbmRsZSwNCj4gKyAgT1VUIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqVmVjdG9yDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBTZW5k IGFuIEVPSSB0byA4MjU5DQo+ICsNCj4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAg VGhlIHByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQo+ICsgIEBwYXJhbSAgSXJxICAgICAgICAg ICAgICAgICAgIDgyNTkgSVJRMCAtIElSUTE1Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIEVPSSB3YXMgc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gODI1OS4NCj4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIElycSBpc25vdCB2YWxpZC4NCj4gKw0KPiAr KiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfTEVHQUNZXzgy NTlfRU5EX09GX0lOVEVSUlVQVCkoDQo+ICsgIElOIEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAg ICAgICAgICAgKlRoaXMsDQo+ICsgIElOICBFRklfODI1OV9JUlEgICAgICAgICAgICAgICAgICAg ICAgSXJxDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBAcGFyIFByb3RvY29sIERlc2NyaXB0 aW9uOg0KPiArICBBYnN0cmFjdHMgdGhlIDgyNTkgYW5kIEFQSUMgaGFyZHdhcmUgY29udHJvbCBi ZXR3ZWVuIEVGSSB1c2FnZSBhbmQNCj4gKyAgQ29tcGF0aWJpbGl0eTE2IHVzYWdlLg0KPiArDQo+ ICsgIEBwYXJhbSBTZXRWZWN0b3JCYXNlDQo+ICsgIFNldHMgdGhlIHZlY3RvciBiYXNlcyBmb3Ig bWFzdGVyIGFuZCBzbGF2ZSBQSUNzLg0KPiArDQo+ICsgIEBwYXJhbSBHZXRNYXNrDQo+ICsgIEdl dHMgSVJRIGFuZCBlZGdlL2xldmVsIG1hc2tzIGZvciAxNi1iaXQgcmVhbCBtb2RlIGFuZCAzMi1i aXQgcHJvdGVjdGVkDQo+IG1vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFNldE1hc2sNCj4gKyAgU2V0 cyB0aGUgSVJRIGFuZCBlZGdlXGxldmVsIG1hc2tzIGZvciAxNi1iaXQgcmVhbCBtb2RlIGFuZCAz Mi1iaXQgcHJvdGVjdGVkDQo+IG1vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFNldE1vZGUNCj4gKyAg U2V0cyBQSUMgbW9kZSB0byAxNi1iaXQgcmVhbCBtb2RlIG9yIDMyLWJpdCBwcm90ZWN0ZWQgbW9k ZS4NCj4gKw0KPiArICBAcGFyYW0gR2V0VmVjdG9yDQo+ICsgIEdldHMgdGhlIGJhc2UgdmVjdG9y IGFzc2lnbmVkIHRvIGFuIElSUS4NCj4gKw0KPiArICBAcGFyYW0gRW5hYmxlSXJxDQo+ICsgIEVu YWJsZXMgYW4gSVJRLg0KPiArDQo+ICsgIEBwYXJhbSBEaXNhYmxlSXJxDQo+ICsgIERpc2FibGVz IGFuIElSUS4NCj4gKw0KPiArICBAcGFyYW0gR2V0SW50ZXJydXB0TGluZQ0KPiArICBHZXRzIGFu IElSUSB0aGF0IGlzIGFzc2lnbmVkIHRvIGEgUENJIGRldmljZS4NCj4gKw0KPiArICBAcGFyYW0g RW5kT2ZJbnRlcnJ1cHQNCj4gKyAgSXNzdWVzIHRoZSBlbmQgb2YgaW50ZXJydXB0IGNvbW1hbmQu DQo+ICsNCj4gKyoqLw0KPiArc3RydWN0IF9FRklfTEVHQUNZXzgyNTlfUFJPVE9DT0wgew0KPiAr ICBFRklfTEVHQUNZXzgyNTlfU0VUX1ZFQ1RPUl9CQVNFICAgICBTZXRWZWN0b3JCYXNlOw0KPiAr ICBFRklfTEVHQUNZXzgyNTlfR0VUX01BU0sgICAgICAgICAgICBHZXRNYXNrOw0KPiArICBFRklf TEVHQUNZXzgyNTlfU0VUX01BU0sgICAgICAgICAgICBTZXRNYXNrOw0KPiArICBFRklfTEVHQUNZ XzgyNTlfU0VUX01PREUgICAgICAgICAgICBTZXRNb2RlOw0KPiArICBFRklfTEVHQUNZXzgyNTlf R0VUX1ZFQ1RPUiAgICAgICAgICBHZXRWZWN0b3I7DQo+ICsgIEVGSV9MRUdBQ1lfODI1OV9FTkFC TEVfSVJRICAgICAgICAgIEVuYWJsZUlycTsNCj4gKyAgRUZJX0xFR0FDWV84MjU5X0RJU0FCTEVf SVJRICAgICAgICAgRGlzYWJsZUlycTsNCj4gKyAgRUZJX0xFR0FDWV84MjU5X0dFVF9JTlRFUlJV UFRfTElORSAgR2V0SW50ZXJydXB0TGluZTsNCj4gKyAgRUZJX0xFR0FDWV84MjU5X0VORF9PRl9J TlRFUlJVUFQgICAgRW5kT2ZJbnRlcnJ1cHQ7DQo+ICt9Ow0KPiArDQo+ICtleHRlcm4gRUZJX0dV SUQgZ0VmaUxlZ2FjeTgyNTlQcm90b2NvbEd1aWQ7DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0t Z2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUmVnaXN0 ZXIvWDU4U21yYW1TYXZlU3RhdGVNDQo+IGFwLmgNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvSW5jbHVkZS9SZWdpc3Rlci9YNThTbXJhbVNhdmVTdGF0ZU0NCj4gYXAuaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi42NDBhYzQ5NDNkDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0luY2x1ZGUvUmVnaXN0ZXIvWDU4U21yYW1TYXZlU3RhdGVNDQo+IGFwLmgNCj4gQEAgLTAs MCArMSwxNzggQEANCj4gKy8qKiBAZmlsZQ0KPiArU01SQU0gU2F2ZSBTdGF0ZSBNYXAgRGVmaW5p dGlvbnMuDQo+ICsNCj4gK1NNUkFNIFNhdmUgU3RhdGUgTWFwIGRlZmluaXRpb25zIGJhc2VkIG9u IGNvbnRlbnRzIG9mIHRoZQ0KPiArSW50ZWwoUikgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMg U29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsDQo+ICsgIFZvbHVtZSAzQywgU2VjdGlvbiAzNC40 IFNNUkFNDQo+ICsgIFZvbHVtZSAzQywgU2VjdGlvbiAzNC41IFNNSSBIYW5kbGVyIEV4ZWN1dGlv biBFbnZpcm9ubWVudA0KPiArICBWb2x1bWUgM0MsIFNlY3Rpb24gMzQuNyBNYW5hZ2luZyBTeW5j aHJvbm91cyBhbmQgQXN5bmNocm9ub3VzIFNNSXMNCj4gKw0KPiArYW5kIHRoZSBBTUQ2NCBBcmNo aXRlY3R1cmUgUHJvZ3JhbW1lcidzIE1hbnVhbA0KPiArICBWb2x1bWUgMiwgU2VjdGlvbiAxMC4y IFNNTSBSZXNvdXJjZXMNCj4gKw0KPiArQ29weXJpZ2h0IChjKSAyMDE1LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICtDb3B5cmlnaHQgKGMpIDIwMTUsIFJl ZCBIYXQsIEluYy48QlI+DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9fWDU4X1NNUkFNX1NBVkVf U1RBVEVfTUFQX0hfXw0KPiArI2RlZmluZSBfX1g1OF9TTVJBTV9TQVZFX1NUQVRFX01BUF9IX18N Cj4gKw0KPiArI3ByYWdtYSBwYWNrICgxKQ0KPiArDQo+ICsvLy8NCj4gKy8vLyAzMi1iaXQgU01S QU0gU2F2ZSBTdGF0ZSBNYXANCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5U OCAgIFJlc2VydmVkMFsweDIwMF07IC8vIDdjMDBoDQo+ICsgIFVJTlQ4ICAgUmVzZXJ2ZWQxWzB4 ZjhdOyAgLy8gN2UwMGgNCj4gKyAgVUlOVDMyICBTTUJBU0U7ICAgICAgICAgICAvLyA3ZWY4aA0K PiArICBVSU5UMzIgIFNNTVJldklkOyAgICAgICAgIC8vIDdlZmNoDQo+ICsgIFVJTlQxNiAgSU9S ZXN0YXJ0OyAgICAgICAgLy8gN2YwMGgNCj4gKyAgVUlOVDE2ICBBdXRvSEFMVFJlc3RhcnQ7ICAv LyA3ZjAyaA0KPiArICBVSU5UOCAgIFJlc2VydmVkMlsweDlDXTsgIC8vIDdmMDhoDQo+ICsgIFVJ TlQzMiAgSU9NZW1BZGRyOyAgICAgICAgLy8gN2ZhMGgNCj4gKyAgVUlOVDMyICBJT01pc2M7ICAg ICAgICAgICAvLyA3ZmE0aA0KPiArICBVSU5UMzIgIF9FUzsgICAgICAgICAgICAgIC8vIDdmYTho DQo+ICsgIFVJTlQzMiAgX0NTOyAgICAgICAgICAgICAgLy8gN2ZhY2gNCj4gKyAgVUlOVDMyICBf U1M7ICAgICAgICAgICAgICAvLyA3ZmIwaA0KPiArICBVSU5UMzIgIF9EUzsgICAgICAgICAgICAg IC8vIDdmYjRoDQo+ICsgIFVJTlQzMiAgX0ZTOyAgICAgICAgICAgICAgLy8gN2ZiOGgNCj4gKyAg VUlOVDMyICBfR1M7ICAgICAgICAgICAgICAvLyA3ZmJjaA0KPiArICBVSU5UMzIgIFJlc2VydmVk MzsgICAgICAgIC8vIDdmYzBoDQo+ICsgIFVJTlQzMiAgX1RSOyAgICAgICAgICAgICAgLy8gN2Zj NGgNCj4gKyAgVUlOVDMyICBfRFI3OyAgICAgICAgICAgICAvLyA3ZmM4aA0KPiArICBVSU5UMzIg IF9EUjY7ICAgICAgICAgICAgIC8vIDdmY2NoDQo+ICsgIFVJTlQzMiAgX0VBWDsgICAgICAgICAg ICAgLy8gN2ZkMGgNCj4gKyAgVUlOVDMyICBfRUNYOyAgICAgICAgICAgICAvLyA3ZmQ0aA0KPiAr ICBVSU5UMzIgIF9FRFg7ICAgICAgICAgICAgIC8vIDdmZDhoDQo+ICsgIFVJTlQzMiAgX0VCWDsg ICAgICAgICAgICAgLy8gN2ZkY2gNCj4gKyAgVUlOVDMyICBfRVNQOyAgICAgICAgICAgICAvLyA3 ZmUwaA0KPiArICBVSU5UMzIgIF9FQlA7ICAgICAgICAgICAgIC8vIDdmZTRoDQo+ICsgIFVJTlQz MiAgX0VTSTsgICAgICAgICAgICAgLy8gN2ZlOGgNCj4gKyAgVUlOVDMyICBfRURJOyAgICAgICAg ICAgICAvLyA3ZmVjaA0KPiArICBVSU5UMzIgIF9FSVA7ICAgICAgICAgICAgIC8vIDdmZjBoDQo+ ICsgIFVJTlQzMiAgX0VGTEFHUzsgICAgICAgICAgLy8gN2ZmNGgNCj4gKyAgVUlOVDMyICBfQ1Iz OyAgICAgICAgICAgICAvLyA3ZmY4aA0KPiArICBVSU5UMzIgIF9DUjA7ICAgICAgICAgICAgIC8v IDdmZmNoDQo+ICt9IFg1OF9TTVJBTV9TQVZFX1NUQVRFX01BUDMyOw0KPiArDQo+ICsvLy8NCj4g Ky8vLyA2NC1iaXQgU01SQU0gU2F2ZSBTdGF0ZSBNYXANCj4gKy8vLw0KPiArdHlwZWRlZiBzdHJ1 Y3Qgew0KPiArICBVSU5UOCAgIFJlc2VydmVkMFsweDIwMF07ICAvLyA3YzAwaA0KPiArDQo+ICsg IFVJTlQxNiAgX0VTOyAgICAgICAgICAgICAgIC8vIDdlMDBoDQo+ICsgIFVJTlQxNiAgX0VTQWNj ZXNzUmlnaHRzOyAgIC8vIDdlMDJoDQo+ICsgIFVJTlQzMiAgX0VTTGltaXQ7ICAgICAgICAgIC8v IDdlMDRoDQo+ICsgIFVJTlQ2NCAgX0VTQmFzZTsgICAgICAgICAgIC8vIDdlMDhoDQo+ICsNCj4g KyAgVUlOVDE2ICBfQ1M7ICAgICAgICAgICAgICAgLy8gN2UxMGgNCj4gKyAgVUlOVDE2ICBfQ1NB Y2Nlc3NSaWdodHM7ICAgLy8gN2UxMmgNCj4gKyAgVUlOVDMyICBfQ1NMaW1pdDsgICAgICAgICAg Ly8gN2UxNGgNCj4gKyAgVUlOVDY0ICBfQ1NCYXNlOyAgICAgICAgICAgLy8gN2UxOGgNCj4gKw0K PiArICBVSU5UMTYgIF9TUzsgICAgICAgICAgICAgICAvLyA3ZTIwaA0KPiArICBVSU5UMTYgIF9T U0FjY2Vzc1JpZ2h0czsgICAvLyA3ZTIyaA0KPiArICBVSU5UMzIgIF9TU0xpbWl0OyAgICAgICAg ICAvLyA3ZTI0aA0KPiArICBVSU5UNjQgIF9TU0Jhc2U7ICAgICAgICAgICAvLyA3ZTI4aA0KPiAr DQo+ICsgIFVJTlQxNiAgX0RTOyAgICAgICAgICAgICAgIC8vIDdlMzBoDQo+ICsgIFVJTlQxNiAg X0RTQWNjZXNzUmlnaHRzOyAgIC8vIDdlMzJoDQo+ICsgIFVJTlQzMiAgX0RTTGltaXQ7ICAgICAg ICAgIC8vIDdlMzRoDQo+ICsgIFVJTlQ2NCAgX0RTQmFzZTsgICAgICAgICAgIC8vIDdlMzhoDQo+ ICsNCj4gKyAgVUlOVDE2ICBfRlM7ICAgICAgICAgICAgICAgLy8gN2U0MGgNCj4gKyAgVUlOVDE2 ICBfRlNBY2Nlc3NSaWdodHM7ICAgLy8gN2U0MmgNCj4gKyAgVUlOVDMyICBfRlNMaW1pdDsgICAg ICAgICAgLy8gN2U0NGgNCj4gKyAgVUlOVDY0ICBfRlNCYXNlOyAgICAgICAgICAgLy8gN2U0OGgN Cj4gKw0KPiArICBVSU5UMTYgIF9HUzsgICAgICAgICAgICAgICAvLyA3ZTUwaA0KPiArICBVSU5U MTYgIF9HU0FjY2Vzc1JpZ2h0czsgICAvLyA3ZTUyaA0KPiArICBVSU5UMzIgIF9HU0xpbWl0OyAg ICAgICAgICAvLyA3ZTU0aA0KPiArICBVSU5UNjQgIF9HU0Jhc2U7ICAgICAgICAgICAvLyA3ZTU4 aA0KPiArDQo+ICsgIFVJTlQzMiAgX0dEVFJSZXNlcnZlZDE7ICAgIC8vIDdlNjBoDQo+ICsgIFVJ TlQxNiAgX0dEVFJMaW1pdDsgICAgICAgIC8vIDdlNjRoDQo+ICsgIFVJTlQxNiAgX0dEVFJSZXNl cnZlZDI7ICAgIC8vIDdlNjZoDQo+ICsgIFVJTlQ2NCAgX0dEVFJCYXNlOyAgICAgICAgIC8vIDdl NjhoDQo+ICsNCj4gKyAgVUlOVDE2ICBfTERUUjsgICAgICAgICAgICAgLy8gN2U3MGgNCj4gKyAg VUlOVDE2ICBfTERUUkFjY2Vzc1JpZ2h0czsgLy8gN2U3MmgNCj4gKyAgVUlOVDMyICBfTERUUkxp bWl0OyAgICAgICAgLy8gN2U3NGgNCj4gKyAgVUlOVDY0ICBfTERUUkJhc2U7ICAgICAgICAgLy8g N2U3OGgNCj4gKw0KPiArICBVSU5UMzIgIF9JRFRSUmVzZXJ2ZWQxOyAgICAvLyA3ZTgwaA0KPiAr ICBVSU5UMTYgIF9JRFRSTGltaXQ7ICAgICAgICAvLyA3ZTg0aA0KPiArICBVSU5UMTYgIF9JRFRS UmVzZXJ2ZWQyOyAgICAvLyA3ZTg2aA0KPiArICBVSU5UNjQgIF9JRFRSQmFzZTsgICAgICAgICAv LyA3ZTg4aA0KPiArDQo+ICsgIFVJTlQxNiAgX1RSOyAgICAgICAgICAgICAgIC8vIDdlOTBoDQo+ ICsgIFVJTlQxNiAgX1RSQWNjZXNzUmlnaHRzOyAgIC8vIDdlOTJoDQo+ICsgIFVJTlQzMiAgX1RS TGltaXQ7ICAgICAgICAgIC8vIDdlOTRoDQo+ICsgIFVJTlQ2NCAgX1RSQmFzZTsgICAgICAgICAg IC8vIDdlOThoDQo+ICsNCj4gKyAgVUlOVDY0ICBJT19SSVA7ICAgICAgICAgICAgLy8gN2VhMGgN Cj4gKyAgVUlOVDY0ICBJT19SQ1g7ICAgICAgICAgICAgLy8gN2VhOGgNCj4gKyAgVUlOVDY0ICBJ T19SU0k7ICAgICAgICAgICAgLy8gN2ViMGgNCj4gKyAgVUlOVDY0ICBJT19SREk7ICAgICAgICAg ICAgLy8gN2ViOGgNCj4gKyAgVUlOVDMyICBJT19EV29yZDsgICAgICAgICAgLy8gN2VjMGgNCj4g KyAgVUlOVDggICBSZXNlcnZlZDFbMHgwNF07ICAgLy8gN2VjNGgNCj4gKyAgVUlOVDggICBJT1Jl c3RhcnQ7ICAgICAgICAgLy8gN2VjOGgNCj4gKyAgVUlOVDggICBBdXRvSEFMVFJlc3RhcnQ7ICAg Ly8gN2VjOWgNCj4gKyAgVUlOVDggICBSZXNlcnZlZDJbMHgwNl07ICAgLy8gN2VjYWgNCj4gKw0K PiArICBVSU5UNjQgIElBMzJfRUZFUjsgICAgICAgICAvLyA3ZWQwaA0KPiArICBVSU5UNjQgIFNW TV9HdWVzdDsgICAgICAgICAvLyA3ZWQ4aA0KPiArICBVSU5UNjQgIFNWTV9HdWVzdFZNQ0I7ICAg ICAvLyA3ZWUwaA0KPiArICBVSU5UNjQgIFNWTV9HdWVzdFZJbnRyOyAgICAvLyA3ZWU4aA0KPiAr ICBVSU5UOCAgIFJlc2VydmVkM1sweDBjXTsgICAvLyA3ZWYwaA0KPiArDQo+ICsgIFVJTlQzMiAg U01NUmV2SWQ7ICAgICAgICAgIC8vIDdlZmNoDQo+ICsgIFVJTlQzMiAgU01CQVNFOyAgICAgICAg ICAgIC8vIDdmMDBoDQo+ICsNCj4gKyAgVUlOVDggICBSZXNlcnZlZDRbMHgxY107ICAgLy8gN2Yw NGgNCj4gKyAgVUlOVDY0ICBTVk1fR3Vlc3RQQVQ7ICAgICAgLy8gN2YyMGgNCj4gKyAgVUlOVDY0 ICBTVk1fSG9zdElBMzJfRUZFUjsgLy8gN2YyOGgNCj4gKyAgVUlOVDY0ICBTVk1fSG9zdENSNDsg ICAgICAgLy8gN2YzMGgNCj4gKyAgVUlOVDY0ICBTVk1fSG9zdENSMzsgICAgICAgLy8gN2YzOGgN Cj4gKyAgVUlOVDY0ICBTVk1fSG9zdENSMDsgICAgICAgLy8gN2Y0MGgNCj4gKw0KPiArICBVSU5U NjQgIF9DUjQ7ICAgICAgICAgICAgICAvLyA3ZjQ4aA0KPiArICBVSU5UNjQgIF9DUjM7ICAgICAg ICAgICAgICAvLyA3ZjUwaA0KPiArICBVSU5UNjQgIF9DUjA7ICAgICAgICAgICAgICAvLyA3ZjU4 aA0KPiArICBVSU5UNjQgIF9EUjc7ICAgICAgICAgICAgICAvLyA3ZjYwaA0KPiArICBVSU5UNjQg IF9EUjY7ICAgICAgICAgICAgICAvLyA3ZjY4aA0KPiArICBVSU5UNjQgIF9SRkxBR1M7ICAgICAg ICAgICAvLyA3ZjcwaA0KPiArICBVSU5UNjQgIF9SSVA7ICAgICAgICAgICAgICAvLyA3Zjc4aA0K PiArICBVSU5UNjQgIF9SMTU7ICAgICAgICAgICAgICAvLyA3ZjgwaA0KPiArICBVSU5UNjQgIF9S MTQ7ICAgICAgICAgICAgICAvLyA3Zjg4aA0KPiArICBVSU5UNjQgIF9SMTM7ICAgICAgICAgICAg ICAvLyA3ZjkwaA0KPiArICBVSU5UNjQgIF9SMTI7ICAgICAgICAgICAgICAvLyA3Zjk4aA0KPiAr ICBVSU5UNjQgIF9SMTE7ICAgICAgICAgICAgICAvLyA3ZmEwaA0KPiArICBVSU5UNjQgIF9SMTA7 ICAgICAgICAgICAgICAvLyA3ZmE4aA0KPiArICBVSU5UNjQgIF9SOTsgICAgICAgICAgICAgICAv LyA3ZmIwaA0KPiArICBVSU5UNjQgIF9SODsgICAgICAgICAgICAgICAvLyA3ZmI4aA0KPiArICBV SU5UNjQgIF9SREk7ICAgICAgICAgICAgICAvLyA3ZmMwaA0KPiArICBVSU5UNjQgIF9SU0k7ICAg ICAgICAgICAgICAvLyA3ZmM4aA0KPiArICBVSU5UNjQgIF9SQlA7ICAgICAgICAgICAgICAvLyA3 ZmQwaA0KPiArICBVSU5UNjQgIF9SU1A7ICAgICAgICAgICAgICAvLyA3ZmQ4aA0KPiArICBVSU5U NjQgIF9SQlg7ICAgICAgICAgICAgICAvLyA3ZmUwaA0KPiArICBVSU5UNjQgIF9SRFg7ICAgICAg ICAgICAgICAvLyA3ZmU4aA0KPiArICBVSU5UNjQgIF9SQ1g7ICAgICAgICAgICAgICAvLyA3ZmYw aA0KPiArICBVSU5UNjQgIF9SQVg7ICAgICAgICAgICAgICAvLyA3ZmY4aA0KPiArfSBYNThfU01S QU1fU0FWRV9TVEFURV9NQVA2NDsNCj4gKw0KPiArLy8vDQo+ICsvLy8gVW5pb24gb2YgMzItYml0 IGFuZCA2NC1iaXQgU01SQU0gU2F2ZSBTdGF0ZSBNYXBzDQo+ICsvLy8NCj4gK3R5cGVkZWYgdW5p b24gIHsNCj4gKyAgWDU4X1NNUkFNX1NBVkVfU1RBVEVfTUFQMzIgIHg4NjsNCj4gKyAgWDU4X1NN UkFNX1NBVkVfU1RBVEVfTUFQNjQgIHg2NDsNCj4gK30gWDU4X1NNUkFNX1NBVkVfU1RBVEVfTUFQ Ow0KPiArDQo+ICsjcHJhZ21hIHBhY2sgKCkNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQg YS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9TaW1pY3NQbGF0Zm9y bXMuaA0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1NpbWlj c1BsYXRmb3Jtcy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAu LmM3OTExMWQ4MTENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9TaW1pY3NQbGF0Zm9ybXMuaA0KPiBAQCAtMCwwICsxLDU0 IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgT1ZNRiBQbGF0Zm9ybSBkZWZpbml0aW9ucw0KPiArDQo+ ICsgIENvcHlyaWdodCAoQykgMjAxNSwgUmVkIEhhdCwgSW5jLg0KPiArICBDb3B5cmlnaHQgKGMp IDIwMTQsIEdhYnJpZWwgTC4gU29tbG8gPHNvbWxvQGNtdS5lZHU+DQo+ICsNCj4gKyAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsj aWZuZGVmIF9fT1ZNRl9QTEFURk9STVNfSF9fDQo+ICsjZGVmaW5lIF9fT1ZNRl9QTEFURk9STVNf SF9fDQo+ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BjaUxpYi5oPg0KPiArI2luY2x1ZGUgPElu ZHVzdHJ5U3RhbmRhcmQvUGNpMjIuaD4NCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1g1 OEljaDEwLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9JNDQwRnhQaWl4NC5oPiAv LyBUT0RPOiByZW1vdmUNCj4gKw0KPiArLy8NCj4gKy8vIFNpbWljcyBIb3N0IEJyaWRnZSBESUQg QWRkcmVzcw0KPiArLy8NCj4gKyNkZWZpbmUgU0lNSUNTX0hPU1RCUklER0VfRElEIFwNCj4gKyAg UENJX0xJQl9BRERSRVNTICgwLCAwLCAwLCBQQ0lfREVWSUNFX0lEX09GRlNFVCkNCj4gKw0KPiAr Ly8NCj4gKy8vIFNpbWljcyBTaWRlQmFuZCBQQ0kgZGV2aWNlIHJlZ2lzdGVycw0KPiArLy8NCj4g KyNkZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX0RFViAgMA0KPiArI2RlZmluZSBTSU1JQ1NfU0lE RUJBTkRQQ0lfRlVOQyA3DQo+ICsjZGVmaW5lIFNJTUlDU19TSURFQkFORFBDSV9TVklEIFwNCj4g KyAgUENJX0xJQl9BRERSRVNTICgwLCAwLCA3LCBQQ0lfU1ZJRF9PRkZTRVQpDQo+ICsjZGVmaW5l IFNJTUlDU19TSURFQkFORFBDSV9TRElEIFwNCj4gKyAgUENJX0xJQl9BRERSRVNTICgwLCAwLCA3 LCBQQ0lfU0lEX09GRlNFVCkNCj4gKyNkZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX0NBUCBcDQo+ ICsgIFBDSV9MSUJfQUREUkVTUyAoMCwgMCwgNywgUENJX0NBUEJJTElUWV9QT0lOVEVSX09GRlNF VCkNCj4gKyNkZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX0NBUF9PZmZzZXQgMHg0MA0KPiArI2Rl ZmluZSBTSU1JQ1NfU0lERUJBTkRQQ0lfQ0FQX0lEICAgICAweEZGDQo+ICsNCj4gKy8vDQo+ICsv LyBWYWx1ZXMgd2UgcHJvZ3JhbSBpbnRvIHRoZSBQTSBiYXNlIGFkZHJlc3MgcmVnaXN0ZXJzDQo+ ICsvLw0KPiArI2RlZmluZSBQSUlYNF9QTUJBX1ZBTFVFICAweEIwMDANCj4gKyNkZWZpbmUgSUNI MTBfUE1CQVNFX1ZBTFVFIDB4MDQwMA0KPiArDQo+ICsvLw0KPiArLy8gQ29tbW9uIGJpdHMgaW4g c2FtZS1wdXJwb3NlIHJlZ2lzdGVycw0KPiArLy8NCj4gKyNkZWZpbmUgUE1CQV9SVEUgQklUMA0K PiArDQo+ICsvLw0KPiArLy8gQ29tbW9uIElPIHBvcnRzIHJlbGF0aXZlIHRvIHRoZSBQb3dlciBN YW5hZ2VtZW50IEJhc2UgQWRkcmVzcw0KPiArLy8NCj4gKyNkZWZpbmUgQUNQSV9USU1FUl9PRkZT RVQgMHg4DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0lhMzIvSnVtcFRvS2Vybg0K PiBlbC5uYXNtDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkv TG9hZExpbnV4TGliL0lhMzIvSnVtcFRvS2Vybg0KPiBlbC5uYXNtDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjNmM2NkMzNjOGENCj4gLS0tIC9kZXYvbnVsbA0K PiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2Fk TGludXhMaWIvSWEzMi9KdW1wVG9LZXJuDQo+IGVsLm5hc20NCj4gQEAgLTAsMCArMSw0MSBAQA0K PiArOyBAZmlsZQ0KPiArOyBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDEzIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICs7DQo+ICs7IFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICs7DQo+ICsNCj4gKyAgU0VDVElPTiAu dGV4dA0KPiArDQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICs7IFZPSUQNCj4gKzsgRUZJ QVBJDQo+ICs7IEp1bXBUb0tlcm5lbCAoDQo+ICs7ICAgVk9JRCAqS2VybmVsU3RhcnQsDQo+ICs7 ICAgVk9JRCAqS2VybmVsQm9vdFBhcmFtcw0KPiArOyAgICk7DQo+ICs7LS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ICtnbG9iYWwgQVNNX1BGWChKdW1wVG9LZXJuZWwpDQo+ICtBU01fUEZYKEp1bXBU b0tlcm5lbCk6DQo+ICsNCj4gKyAgICBtb3YgICAgIGVzaSwgW2VzcCArIDhdDQo+ICsgICAgY2Fs bCAgICBEV09SRCBbZXNwICsgNF0NCj4gKyAgICByZXQNCj4gKw0KPiArOy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiArOyBWT0lEDQo+ICs7IEVGSUFQSQ0KPiArOyBKdW1wVG9VZWZpS2VybmVsICgN Cj4gKzsgICBFRklfSEFORExFIEltYWdlSGFuZGxlLA0KPiArOyAgIEVGSV9TWVNURU1fVEFCTEUg KlN5c3RlbVRhYmxlLA0KPiArOyAgIFZPSUQgKktlcm5lbEJvb3RQYXJhbXMsDQo+ICs7ICAgVk9J RCAqS2VybmVsU3RhcnQNCj4gKzsgICApOw0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAr Z2xvYmFsIEFTTV9QRlgoSnVtcFRvVWVmaUtlcm5lbCkNCj4gK0FTTV9QRlgoSnVtcFRvVWVmaUtl cm5lbCk6DQo+ICsNCj4gKyAgICBtb3YgICAgIGVheCwgW2VzcCArIDEyXQ0KPiArICAgIG1vdiAg ICAgZWF4LCBbZWF4ICsgMHgyNjRdDQo+ICsgICAgYWRkICAgICBlYXgsIFtlc3AgKyAxNl0NCj4g KyAgICBqbXAgICAgIGVheA0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4TGliLmgNCj4g Yi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIv TG9hZExpbnV4TGliLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MC4uYzRjYzRkZDhlNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGludXhMaWIuaA0K PiBAQCAtMCwwICsxLDUyIEBADQo+ICsvKiogQGZpbGUNCj4gKyAgQm9vdCBVRUZJIExpbnV4Lg0K PiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAwOCAtIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgX0xPQURfTElO VVhfTElCX0lOQ0xVREVEXw0KPiArI2RlZmluZSBfTE9BRF9MSU5VWF9MSUJfSU5DTFVERURfDQo+ ICsNCj4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Mb2FkTGludXhM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0 cnlTdGFuZGFyZC9MaW51eEJ6aW1hZ2UuaD4NCj4gKw0KPiArI2luY2x1ZGUgPFByb3RvY29sL0dy YXBoaWNzT3V0cHV0Lmg+DQo+ICsNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArSnVtcFRvS2VybmVs ICgNCj4gKyAgVk9JRCAqS2VybmVsU3RhcnQsDQo+ICsgIFZPSUQgKktlcm5lbEJvb3RQYXJhbXMN Cj4gKyAgKTsNCj4gKw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtKdW1wVG9VZWZpS2VybmVsICgN Cj4gKyAgRUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwNCj4gKyAgRUZJX1NZU1RFTV9UQUJMRSAqU3lz dGVtVGFibGUsDQo+ICsgIFZPSUQgKktlcm5lbEJvb3RQYXJhbXMsDQo+ICsgIFZPSUQgKktlcm5l bFN0YXJ0DQo+ICsgICk7DQo+ICsNCj4gK1ZPSUQNCj4gK0luaXRMaW51eERlc2NyaXB0b3JUYWJs ZXMgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gK1ZPSUQNCj4gK1NldExpbnV4RGVzY3Jp cHRvclRhYmxlcyAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArI2VuZGlmDQo+ICsNCj4g ZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5 L0xvYWRMaW51eExpYi9Mb2FkTGludXhMaWIuaW5mDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNz T3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5pbmYNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uODk2NjRmNGU0Mg0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9M aWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGludXhMaWIuaW5mDQo+IEBAIC0wLDAgKzEsNDIgQEAN Cj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjIENvcHlyaWdodCAoYykgMjAwOCAtIDIwMTIgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKyMNCj4gKyMgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyMNCj4gKyMjDQo+ICsN Cj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAw MDEwMDA1DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IExvYWRMaW51eExp Yg0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA2M0NDODQ5Ny1DOUQwLTQ2 QTgtQUMwOC00OURGOTJBMkZGNjINCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAg ID0gQkFTRQ0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAg TElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gTG9hZExpbnV4TGliDQo+ICsNCj4gKyMN Cj4gKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5k IG5vdCByZXF1aXJlZCBieSB0aGUgYnVpbGQNCj4gdG9vbHMuDQo+ICsjDQo+ICsjICBWQUxJRF9B UkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0DQo+ICsjDQo+ICsNCj4gK1tTb3VyY2Vz LmNvbW1vbl0NCj4gKyAgTGludXguYw0KPiArICBMaW51eEdkdC5jDQo+ICsNCj4gK1tTb3VyY2Vz LklBMzJdDQo+ICsgIElhMzIvSnVtcFRvS2VybmVsLm5hc20NCj4gKw0KPiArW1NvdXJjZXMuWDY0 XQ0KPiArICBYNjQvSnVtcFRvS2VybmVsLm5hc20NCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBN ZGVQa2cvTWRlUGtnLmRlYw0KPiArICBPdm1mUGtnL092bWZQa2cuZGVjDQo+ICsNCj4gK1tMaWJy YXJ5Q2xhc3Nlc10NCj4gKyAgQmFzZUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBNZW1vcnlBbGxv Y2F0aW9uTGliDQo+ICsgIEJhc2VNZW1vcnlMaWINCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL1g2NC9K dW1wVG9LZXJuZQ0KPiBsLm5hc20NCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvTGlicmFyeS9Mb2FkTGludXhMaWIvWDY0L0p1bXBUb0tlcm5lDQo+IGwubmFzbQ0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi43OWU2YjhlN2JhDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xp YnJhcnkvTG9hZExpbnV4TGliL1g2NC9KdW1wVG9LZXJuZQ0KPiBsLm5hc20NCj4gQEAgLTAsMCAr MSw4NSBAQA0KPiArOyBAZmlsZQ0KPiArOyBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDEzIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICs7DQo+ICs7IFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICs7DQo+ICsNCj4gKyAg REVGQVVMVCBSRUwNCj4gKyAgU0VDVElPTiAudGV4dA0KPiArDQo+ICs7LS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ICs7IFZPSUQNCj4gKzsgRUZJQVBJDQo+ICs7IEp1bXBUb0tlcm5lbCAoDQo+ICs7 ICAgVk9JRCAqS2VybmVsU3RhcnQsICAgICAgICAgLy8gcmN4DQo+ICs7ICAgVk9JRCAqS2VybmVs Qm9vdFBhcmFtcyAgICAgLy8gcmR4DQo+ICs7ICAgKTsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gK2dsb2JhbCBBU01fUEZYKEp1bXBUb0tlcm5lbCkNCj4gK0FTTV9QRlgoSnVtcFRvS2Vy bmVsKToNCj4gKw0KPiArICAgIDsgU2V0IHVwIGZvciBleGVjdXRpbmcga2VybmVsLiBCUCBpbiAl ZXNpLCBlbnRyeSBwb2ludCBvbiB0aGUgc3RhY2sNCj4gKyAgICA7ICg2NC1iaXQgd2hlbiB0aGUg J3JldCcgd2lsbCB1c2UgaXQgYXMgMzItYml0LCBidXQgd2UncmUgbGl0dGxlLWVuZGlhbikNCj4g KyAgICBtb3YgICAgcnNpLCByZHgNCj4gKyAgICBwdXNoICAgcmN4DQo+ICsNCj4gKyAgICA7IEp1 bXAgaW50byB0aGUgY29tcGF0aWJpbGl0eSBtb2RlIENTDQo+ICsgICAgcHVzaCAgICAweDEwDQo+ ICsgICAgbGVhICAgICByYXgsIFsuMF0NCj4gKyAgICBwdXNoICAgIHJheA0KPiArICAgIERCIDB4 NDgsIDB4Y2IgICAgICAgICAgICAgICAgICAgICAgOyByZXRmcQ0KPiArDQo+ICsuMDoNCj4gKyAg ICA7IE5vdyBpbiBjb21wYXRpYmlsaXR5IG1vZGUuDQo+ICsNCj4gKyAgICBEQiAweGI4LCAweDE4 LCAweDAsIDB4MCwgMHgwICAgIDsgbW92bCAgICAkMHgxOCwgJWVheA0KPiArICAgIERCIDB4OGUs IDB4ZDggICAgICAgICAgICAgICAgICAgICAgOyBtb3ZsICAgICVlYXgsICVkcw0KPiArICAgIERC IDB4OGUsIDB4YzAgICAgICAgICAgICAgICAgICAgICAgOyBtb3ZsICAgICVlYXgsICVlcw0KPiAr ICAgIERCIDB4OGUsIDB4ZTAgICAgICAgICAgICAgICAgICAgICAgOyBtb3ZsICAgICVlYXgsICVm cw0KPiArICAgIERCIDB4OGUsIDB4ZTggICAgICAgICAgICAgICAgICAgICAgOyBtb3ZsICAgICVl YXgsICVncw0KPiArICAgIERCIDB4OGUsIDB4ZDAgICAgICAgICAgICAgICAgICAgICAgOyBtb3Zs ICAgICVlYXgsICVzcw0KPiArDQo+ICsgICAgOyBEaXNhYmxlIHBhZ2luZw0KPiArICAgIERCIDB4 ZiwgMHgyMCwgMHhjMCAgICAgICAgICAgICAgICA7IG1vdmwgICAgJWNyMCwgJWVheA0KPiArICAg IERCIDB4ZiwgMHhiYSwgMHhmOCwgMHgxZiAgICAgICAgICA7IGJ0Y2wgICAgJDMxLCAlZWF4DQo+ ICsgICAgREIgMHhmLCAweDIyLCAweGMwICAgICAgICAgICAgICAgIDsgbW92bCAgICAlZWF4LCAl Y3IwDQo+ICsNCj4gKyAgICA7IERpc2FibGUgbG9uZyBtb2RlIGluIEVGRVINCj4gKyAgICBEQiAw eGI5LCAweDgwLCAweDAsIDB4MCwgMHhjMCAgICA7IG1vdmwgICAgJDB4MGMwMDAwMDgwLCAlZWN4 DQo+ICsgICAgREIgMHhmLCAweDMyICAgICAgICAgICAgICAgICAgICAgIDsgcmRtc3INCj4gKyAg ICBEQiAweGYsIDB4YmEsIDB4ZjgsIDB4OCAgICAgICAgICA7IGJ0Y2wgICAgJDgsICVlYXgNCj4g KyAgICBEQiAweGYsIDB4MzAgICAgICAgICAgICAgICAgICAgICAgOyB3cm1zcg0KPiArDQo+ICsg ICAgOyBEaXNhYmxlIFBBRQ0KPiArICAgIERCIDB4ZiwgMHgyMCwgMHhlMCAgICAgICAgICAgICAg ICA7IG1vdmwgICAgJWNyNCwgJWVheA0KPiArICAgIERCIDB4ZiwgMHhiYSwgMHhmOCwgMHg1ICAg ICAgICAgIDsgYnRjbCAgICAkNSwgJWVheA0KPiArICAgIERCIDB4ZiwgMHgyMiwgMHhlMCAgICAg ICAgICAgICAgICA7IG1vdmwgICAgJWVheCwgJWNyNA0KPiArDQo+ICsgICAgREIgMHgzMSwgMHhl ZCAgICAgICAgICAgICAgICAgICAgICA7IHhvciAgICAgJWVicCwgJWVicA0KPiArICAgIERCIDB4 MzEsIDB4ZmYgICAgICAgICAgICAgICAgICAgICAgOyB4b3IgICAgICVlZGksICVlZGkNCj4gKyAg ICBEQiAweDMxLCAweGRiICAgICAgICAgICAgICAgICAgICAgIDsgeG9yICAgICAlZWJ4LCAlZWJ4 DQo+ICsgICAgREIgMHhjMyAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJldA0KPiArDQo+ ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICs7IFZPSUQNCj4gKzsgRUZJQVBJDQo+ICs7IEp1 bXBUb1VlZmlLZXJuZWwgKA0KPiArOyAgIEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUsICAgICAgICAv LyByY3gNCj4gKzsgICBFRklfU1lTVEVNX1RBQkxFICpTeXN0ZW1UYWJsZSwgLy8gcmR4DQo+ICs7 ICAgVk9JRCAqS2VybmVsQm9vdFBhcmFtcyAgICAgICAgIC8vIHI4DQo+ICs7ICAgVk9JRCAqS2Vy bmVsU3RhcnQsICAgICAgICAgICAgIC8vIHI5DQo+ICs7ICAgKTsNCj4gKzstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gK2dsb2JhbCBBU01fUEZYKEp1bXBUb1VlZmlLZXJuZWwpDQo+ICtBU01fUEZY KEp1bXBUb1VlZmlLZXJuZWwpOg0KPiArDQo+ICsgICAgbW92ICAgICByZGksIHJjeA0KPiArICAg IG1vdiAgICAgcnNpLCByZHgNCj4gKyAgICBtb3YgICAgIHJkeCwgcjgNCj4gKyAgICB4b3IgICAg IHJheCwgcmF4DQo+ICsgICAgbW92ICAgICBlYXgsIFtyOCArIDB4MjY0XQ0KPiArICAgIGFkZCAg ICAgcjksIHJheA0KPiArICAgIGFkZCAgICAgcjksIDB4MjAwDQo+ICsgICAgY2FsbCAgICByOQ0K PiArICAgIHJldA0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaA0KPiBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZW YXJzRmlsZUxpYi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAu LjkyYWEwMzhjZGQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaA0K PiBAQCAtMCwwICsxLDU1IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgU2F2ZSBOb24tVm9sYXRpbGUg VmFyaWFibGVzIHRvIGEgZmlsZSBzeXN0ZW0uDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDA5 IC0gMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiAr DQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsq Ki8NCj4gKw0KPiArI2lmbmRlZiBfX05WX1ZBUlNfRklMRV9MSUJfSU5TVEFOQ0VfXw0KPiArI2Rl ZmluZSBfX05WX1ZBUlNfRklMRV9MSUJfSU5TVEFOQ0VfXw0KPiArDQo+ICsjaW5jbHVkZSA8VWVm aS5oPg0KPiArDQo+ICsjaW5jbHVkZSA8R3VpZC9GaWxlSW5mby5oPg0KPiArDQo+ICsjaW5jbHVk ZSA8UHJvdG9jb2wvU2ltcGxlRmlsZVN5c3RlbS5oPg0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFy eS9CYXNlTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9GaWxlSGFuZGxlTGliLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9TZXJpYWxpemVWYXJpYWJsZXNMaWIuaD4NCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv VWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZp TGliLmg+DQo+ICsNCj4gKy8qKg0KPiArICBMb2FkcyB0aGUgbm9uLXZvbGF0aWxlIHZhcmlhYmxl cyBmcm9tIHRoZSBOdlZhcnMgZmlsZSBvbiB0aGUNCj4gKyAgZ2l2ZW4gZmlsZSBzeXN0ZW0uDQo+ ICsNCj4gKyAgQHBhcmFtW2luXSAgRnNIYW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0VmaVNpbXBsZUZp bGVTeXN0ZW1Qcm90b2NvbEd1aWQNCj4gaW5zdGFuY2UNCj4gKw0KPiArICBAcmV0dXJuICAgICBF RklfU1RBVFVTIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgbG9hZCBvcGVyYXRp b24NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtMb2FkTnZWYXJzRnJvbUZzICgNCj4g KyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGc0hhbmRsZQ0KPiArICAp Ow0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBTYXZlcyB0aGUgbm9uLXZvbGF0aWxlIHZhcmlhYmxl cyBpbnRvIHRoZSBOdlZhcnMgZmlsZSBvbiB0aGUNCj4gKyAgZ2l2ZW4gZmlsZSBzeXN0ZW0uDQo+ ICsNCj4gKyAgQHBhcmFtW2luXSAgRnNIYW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0VmaVNpbXBsZUZp bGVTeXN0ZW1Qcm90b2NvbEd1aWQNCj4gaW5zdGFuY2UNCj4gKw0KPiArICBAcmV0dXJuICAgICBF RklfU1RBVFVTIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgbG9hZCBvcGVyYXRp b24NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtTYXZlTnZWYXJzVG9GcyAoDQo+ICsg IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnNIYW5kbGUNCj4gKyAgKTsN Cj4gKw0KPiArI2VuZGlmDQo+ICsNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmlsZUxpYi5pbmYN Cj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxl TGliL052VmFyc0ZpbGVMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAuLmU0YzNiN2NjZmYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0Zp bGVMaWIuaW5mDQo+IEBAIC0wLDAgKzEsNTMgQEANCj4gKyMjIEBmaWxlDQo+ICsjICBOdlZhcnNG aWxlTGliDQo+ICsjDQo+ICsjICBUaGlzIGxpYnJhcnkgc2F2ZXMgYW5kIHJlc3RvcmVzIG5vbi12 b2xhdGlsZSB2YXJpYWJsZXMgaW4gYQ0KPiArIyAgZmlsZSB3aXRoaW4gYSBmaWxlIHN5c3RlbS4N Cj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArIw0KPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArIw0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNd DQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCj4gKyAg QkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gTnZWYXJzRmlsZUxpYg0KPiArICBGSUxF X0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA4RUNENENDMC0xNzcyLTQ1ODMtOEE3NC04MzYz M0ExNUZBQTANCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9EUklW RVINCj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIExJQlJB UllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IE52VmFyc0ZpbGVMaWJ8RFhFX0RSSVZFUg0KPiBE WEVfUlVOVElNRV9EUklWRVIgVUVGSV9EUklWRVINCj4gKw0KPiArIw0KPiArIyBUaGUgZm9sbG93 aW5nIGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVpcmVkIGJ5 IHRoZSBidWlsZA0KPiB0b29scy4NCj4gKyMNCj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAg ICAgICAgID0gSUEzMiBYNjQgRUJDDQo+ICsjDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBGc0Fj Y2Vzcy5jDQo+ICsgIE52VmFyc0ZpbGVMaWIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1k ZVBrZy9NZGVQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsg IFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBPdm1mUGtnL092bWZQa2cuZGVjDQo+ICsNCj4g K1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQmFzZUxpYg0KPiArICBCYXNlTWVtb3J5TGliDQo+ICsg IERlYnVnTGliDQo+ICsgIEZpbGVIYW5kbGVMaWINCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0K PiArICBTZXJpYWxpemVWYXJpYWJsZXNMaWINCj4gKw0KPiArW1Byb3RvY29sc10NCj4gKyAgZ0Vm aVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1aWQgICAgICAgICAgICAgICMjIENPTlNVTUVTDQo+ ICsNCj4gK1tHdWlkc10NCj4gKyAgZ0VmaUZpbGVJbmZvR3VpZA0KPiArDQo+ICtbRGVwZXhdDQo+ ICsgIGdFZmlWYXJpYWJsZVdyaXRlQXJjaFByb3RvY29sR3VpZA0KPiArDQo+IGRpZmYgLS1naXQN Cj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJpYWxpemVW YXJpYWJsZXNMaWIvU2VyaWFsaXplVmENCj4gcmlhYmxlc0xpYi5oDQo+IGIvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliL1Nlcmlh bGl6ZVZhDQo+IHJpYWJsZXNMaWIuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwLi43ZTc4Y2Q0YjIxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGli L1NlcmlhbGl6ZVZhDQo+IHJpYWJsZXNMaWIuaA0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsvKiog QGZpbGUNCj4gKyAgU2VyaWFsaXplIFZhcmlhYmxlcyBMaWJyYXJ5IGltcGxlbWVudGF0aW9uDQo+ ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfX1NFUklBTEla RV9WQVJJQUJMRVNfTElCX0lOU1RBTkNFX18NCj4gKyNkZWZpbmUgX19TRVJJQUxJWkVfVkFSSUFC TEVTX0xJQl9JTlNUQU5DRV9fDQo+ICsNCj4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ICsNCj4gKyNp bmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1v cnlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9TZXJp YWxpemVWYXJpYWJsZXNMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2Vydmlj ZXNUYWJsZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaVJ1bnRpbWVTZXJ2aWNlc1Rh YmxlTGliLmg+DQo+ICsNCj4gKyNkZWZpbmUgU1ZfRlJPTV9IQU5ETEUoYSkgICAgICAgQ1IgKGEs IFNWX0lOU1RBTkNFLCBTaWduYXR1cmUsDQo+IFNWX1NJR05BVFVSRSkNCj4gKyNkZWZpbmUgU1Zf U0lHTkFUVVJFICAgICAgICAgICAgU0lHTkFUVVJFXzMyICgnUycsICdWJywgJ0EnLCAnUicpDQo+ ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU2lnbmF0dXJlOw0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqQnVmZmVyUHRyOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCdWZmZXJTaXplOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE YXRhU2l6ZTsNCj4gK30gU1ZfSU5TVEFOQ0U7DQo+ICsNCj4gKyNlbmRpZg0KPiArDQo+IGRpZmYg LS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJp YWxpemVWYXJpYWJsZXNMaWIvU2VyaWFsaXplVmENCj4gcmlhYmxlc0xpYi5pbmYNCj4gYi9QbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJpYWxpemVWYXJpYWJsZXNM aWIvU2VyaWFsaXplVmENCj4gcmlhYmxlc0xpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMC4uMjU5MDExOTJiMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0K PiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZh cmlhYmxlc0xpYi9TZXJpYWxpemVWYQ0KPiByaWFibGVzTGliLmluZg0KPiBAQCAtMCwwICsxLDM2 IEBADQo+ICsjIyBAZmlsZQ0KPiArIyAgU2VyaWFsaXplIFZhcmlhYmxlcyBMaWJyYXJ5IGltcGxl bWVudGF0aW9uDQo+ICsjDQo+ICsjICBUaGlzIGxpYnJhcnkgc2VyaWFsaXplcyBhbmQgZGVzZXJp YWxpemVzIFVFRkkgdmFyaWFibGVzDQo+ICsjDQo+ICsjIENvcHlyaWdodCAoYykgMjAwNiAtIDIw MTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKyMNCj4g KyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyMNCj4g KyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAg ICAgPSAweDAwMDEwMDA1DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IER4 ZVNlcmlhbGl6ZVZhcmlhYmxlc0xpYg0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAg ICAgPSAyNjZBMTQzNC02QjIyLTQ0MUYtQThEMi1ENTRBQThGREY5NUMNCj4gKyAgTU9EVUxFX1RZ UEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9EUklWRVINCj4gKyAgVkVSU0lPTl9TVFJJTkcg ICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAg ICA9IFNlcmlhbGl6ZVZhcmlhYmxlc0xpYnxEWEVfRFJJVkVSDQo+IERYRV9SVU5USU1FX0RSSVZF UiBVRUZJX0RSSVZFUg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgU2VyaWFsaXplVmFyaWFibGVz TGliLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBN ZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMN Cj4gKyAgT3ZtZlBrZy9Pdm1mUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsg IEJhc2VMaWINCj4gKyAgQmFzZU1lbW9yeUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArICBNZW1vcnlB bGxvY2F0aW9uTGliDQo+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiArICBVZWZpUnVu dGltZVNlcnZpY2VzVGFibGVMaWINCj4gKw0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmgNCj4gYi9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uaA0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi42M2I1ZTUyNTc1DQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3Jt RHhlL1BsYXRmb3JtLmgNCj4gQEAgLTAsMCArMSwzNyBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFRo aXMgZHJpdmVyIGVmZmVjdHVhdGVzIE9WTUYncyBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHNldHRp bmdzIGFuZCBleHBvc2VzDQo+ICsgIHRoZW0gdmlhIEhJSS4NCj4gKw0KPiArICBDb3B5cmlnaHQg KEMpIDIwMTQsIFJlZCBIYXQsIEluYy4NCj4gKw0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgX1BMQVRGT1JN X0hfDQo+ICsjZGVmaW5lIF9QTEFURk9STV9IXw0KPiArDQo+ICsvLw0KPiArLy8gTWFjcm8gYW5k IHR5cGUgZGVmaW5pdGlvbnMgdGhhdCBjb25uZWN0IHRoZSBmb3JtIHdpdGggdGhlIEhJSSBkcml2 ZXIgY29kZS4NCj4gKy8vDQo+ICsjZGVmaW5lIEZPUk1TVEFURUlEX01BSU5fRk9STSAgMQ0KPiAr I2RlZmluZSBGT1JNSURfTUFJTl9GT1JNICAgICAgIDENCj4gKw0KPiArI2RlZmluZSBRVUVTVElP Tl9SRVNfQ1VSICAgICAgIDENCj4gKyNkZWZpbmUgTUFYU0laRV9SRVNfQ1VSICAgICAgIDE2DQo+ ICsNCj4gKyNkZWZpbmUgTEFCRUxfUkVTX05FWFQgICAgICAgICAxDQo+ICsjZGVmaW5lIFFVRVNU SU9OX1JFU19ORVhUICAgICAgMg0KPiArDQo+ICsjZGVmaW5lIFFVRVNUSU9OX1NBVkVfRVhJVCAg ICAgMw0KPiArI2RlZmluZSBRVUVTVElPTl9ESVNDQVJEX0VYSVQgIDQNCj4gKw0KPiArLy8NCj4g Ky8vIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyB0aGUgZm9ybSBzdGF0ZS4gSXRzIGZpZWxkcyBy ZWxhdGUgc3RyaWN0bHkgdG8gdGhlDQo+ICsvLyB2aXN1YWwgd2lkZ2V0cyBvbiB0aGUgZm9ybS4N Cj4gKy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQxNiBDdXJyZW50UHJlZmVycmVk UmVzb2x1dGlvbltNQVhTSVpFX1JFU19DVVJdOw0KPiArICBVSU5UMzIgTmV4dFByZWZlcnJlZFJl c29sdXRpb247DQo+ICt9IE1BSU5fRk9STV9TVEFURTsNCj4gKw0KPiArI2VuZGlmIC8vIF9QTEFU Rk9STV9IXw0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L1BsYXRmb3JtRHhlL1BsYXRmb3JtLmluZg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMC4uODA0YWI1OTYxMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5p bmYNCj4gQEAgLTAsMCArMSw2NSBAQA0KPiArIyMgQGZpbGUNCj4gKyMgIFRoaXMgZHJpdmVyIGVm ZmVjdHVhdGVzIFNpbWljcyBYNTggcGxhdGZvcm0gY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQN Cj4gZXhwb3Nlcw0KPiArIyAgdGhlbSB2aWEgSElJLg0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChD KSAyMDE0LCBSZWQgSGF0LCBJbmMuDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEwLCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsjDQo+ICsjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsjDQo+ICsjIw0K PiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0g MHgwMDAxMDAwNQ0KPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBQbGF0Zm9y bUR4ZQ0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA3NEI2NERDMS1CMEI2 LTQ4NTMtQTZCRC1DNjQyNjA1OUFCMUUNCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAg ICAgID0gRFhFX0RSSVZFUg0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAx LjANCj4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gUGxhdGZvcm1Jbml0DQo+ ICsgIFVOTE9BRF9JTUFHRSAgICAgICAgICAgICAgICAgICA9IFBsYXRmb3JtVW5sb2FkDQo+ICsN Cj4gK1tTb3VyY2VzXQ0KPiArICBQbGF0Zm9ybS5jDQo+ICsgIFBsYXRmb3JtLnVuaQ0KPiArICBQ bGF0Zm9ybUNvbmZpZy5jDQo+ICsgIFBsYXRmb3JtRm9ybXMudmZyDQo+ICsNCj4gK1tQYWNrYWdl c10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBr Zy5kZWMNCj4gKyAgU2ltaWNzT3BlbkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5kZWMNCj4g KyAgTWluUGxhdGZvcm1Qa2cvTWluUGxhdGZvcm1Qa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gKyAgQmFzZUxpYg0KPiArICBCYXNlTWVtb3J5TGliDQo+ICsgIERlYnVnTGliDQo+ ICsgIERldmljZVBhdGhMaWINCj4gKyAgSGlpTGliDQo+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWIN Cj4gKyAgUHJpbnRMaWINCj4gKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFVlZmlI aWlTZXJ2aWNlc0xpYg0KPiArICBVZWZpTGliDQo+ICsgIFVlZmlSdW50aW1lU2VydmljZXNUYWJs ZUxpYg0KPiArICBVZWZpRHJpdmVyRW50cnlQb2ludA0KPiArICBEeGVTZXJ2aWNlc1RhYmxlTGli DQo+ICsNCj4gK1tQY2RdDQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RW aWRlb0hvcml6b250YWxSZXNvbHV0aW9uDQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNl R3VpZC5QY2RWaWRlb1ZlcnRpY2FsUmVzb2x1dGlvbg0KPiArDQo+ICtbUHJvdG9jb2xzXQ0KPiAr ICBnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCAgICAgICMjIFBST0RVQ0VTDQo+ICsgIGdFZmlH cmFwaGljc091dHB1dFByb3RvY29sR3VpZCAgIyMgQ09OU1VNRVMNCj4gKyAgZ0VmaUhpaUNvbmZp Z0FjY2Vzc1Byb3RvY29sR3VpZCAjIyBQUk9EVUNFUw0KPiArDQo+ICtbR3VpZHNdDQo+ICsgIGdF ZmlJZnJUaWFub0d1aWQNCj4gKyAgZ1NpbWljc1g1OFBsYXRmb3JtQ29uZmlnR3VpZA0KPiArDQo+ ICtbRGVwZXhdDQo+ICsgIGdFZmlIaWlDb25maWdSb3V0aW5nUHJvdG9jb2xHdWlkICBBTkQNCj4g KyAgZ0VmaUhpaURhdGFiYXNlUHJvdG9jb2xHdWlkICAgICAgIEFORA0KPiArICBnRWZpVmFyaWFi bGVBcmNoUHJvdG9jb2xHdWlkICAgICAgQU5EDQo+ICsgIGdFZmlWYXJpYWJsZVdyaXRlQXJjaFBy b3RvY29sR3VpZA0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLnVuaQ0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS51bmkNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNmQ2OGNiZWI0Zg0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9y bS51bmkNCj4gQEAgLTAsMCArMSwzMSBAQA0KPiArLy8gKisrDQo+ICsvLw0KPiArLy8gQ29weXJp Z2h0IChDKSAyMDE0LCBSZWQgSGF0LCBJbmMuDQo+ICsvLyBDb3B5cmlnaHQgKGMpIDIwMDksIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKy8vDQo+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArLy8NCj4gKy8v IE1vZHVsZSBOYW1lOg0KPiArLy8NCj4gKy8vICAgUGxhdGZvcm0udW5pDQo+ICsvLw0KPiArLy8g QWJzdHJhY3Q6DQo+ICsvLw0KPiArLy8gICBTdHJpbmcgZGVmaW5pdGlvbnMgZm9yIFBsYXRmb3Jt Rm9ybXMudmZyDQo+ICsvLw0KPiArLy8gLS0qLw0KPiArDQo+ICsvPSMNCj4gKw0KPiArI2xhbmdk ZWYgZW4tVVMgIkVuZ2xpc2giDQo+ICsNCj4gKyNzdHJpbmcgU1RSX0ZPUk1TRVRfVElUTEUgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAiUVNQIFBsYXRmb3JtDQo+IENvbmZpZ3VyYXRpb24iDQo+ICsj c3RyaW5nIFNUUl9GT1JNU0VUX0hFTFAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIkNoYW5nZSB2 YXJpb3VzIFFTUA0KPiBwbGF0Zm9ybSBzZXR0aW5ncy4iDQo+ICsjc3RyaW5nIFNUUl9NQUlOX0ZP Uk1fVElUTEUgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlFTUCBTZXR0aW5ncyINCj4gKyNzdHJpbmcg U1RSX1JFU19DVVIgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiUHJlZmVycmVkIFJlc29s dXRpb24gYXQgTmV4dA0KPiBCb290Ig0KPiArI3N0cmluZyBTVFJfUkVTX0NVUl9IRUxQICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICJUaGUgcHJlZmVycmVkIHJlc29sdXRpb24gb2YNCj4gdGhlIEdy YXBoaWNzIENvbnNvbGUgYXQgbmV4dCBib290LiBJdCBtaWdodCBiZSB1bnNldCwgb3IgZXZlbiBp bnZhbGlkIChoZW5jZQ0KPiBpZ25vcmVkKSB3cnQuIHRoZSB2aWRlbyBSQU0gc2l6ZS4iDQo+ICsj c3RyaW5nIFNUUl9SRVNfTkVYVCAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIkNoYW5nZSBQ cmVmZXJyZWQgUmVzb2x1dGlvbg0KPiBmb3IgTmV4dCBCb290Ig0KPiArI3N0cmluZyBTVFJfUkVT X05FWFRfSEVMUCAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJZb3UgY2FuIHNwZWNpZnkgYSBuZXcN Cj4gcHJlZmVyZW5jZSBmb3IgdGhlIEdyYXBoaWNzIENvbnNvbGUgaGVyZS4gVGhlIGxpc3QgaXMg ZmlsdGVyZWQgYWdhaW5zdCB0aGUgdmlkZW8NCj4gUkFNIHNpemUuIg0KPiArI3N0cmluZyBTVFJf U0FWRV9FWElUICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJDb21taXQgQ2hhbmdlcyBhbmQg RXhpdCINCj4gKyNzdHJpbmcgU1RSX0RJU0NBUkRfRVhJVCAgICAgICAgICNsYW5ndWFnZSBlbi1V UyAiRGlzY2FyZCBDaGFuZ2VzIGFuZCBFeGl0Ig0KPiArDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuaA0K PiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9y bUNvbmZpZy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmQz ZjA0MWRkZWENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuaA0KPiBAQCAtMCwwICsxLDUx IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHNlcmlhbGl6aW5n IChwZXJzaXN0ZW50bHkgc3RvcmluZykgYW5kIGRlc2VyaWFsaXppbmcNCj4gKyAgT1ZNRidzIHBs YXRmb3JtIGNvbmZpZ3VyYXRpb24uDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChDKSAyMDE0LCBSZWQg SGF0LCBJbmMuDQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9QTEFURk9STV9DT05GSUdfSF8NCj4g KyNkZWZpbmUgX1BMQVRGT1JNX0NPTkZJR19IXw0KPiArDQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0K PiArDQo+ICsvLw0KPiArLy8gVGhpcyBzdHJ1Y3R1cmUgcGFydGljaXBhdGVzIGluIGRyaXZlciBj b25maWd1cmF0aW9uLiBJdCBkb2VzIG5vdA0KPiArLy8gKG5lY2Vzc2FyaWx5KSByZWZsZWN0IHRo ZSB3aXJlIGZvcm1hdCBpbiB0aGUgcGVyc2lzdGVudCBzdG9yZS4NCj4gKy8vDQo+ICsjcHJhZ21h IHBhY2soMSkNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgLy8NCj4gKyAgLy8gcHJlZmVycmVk IGdyYXBoaWNzIGNvbnNvbGUgcmVzb2x1dGlvbiB3aGVuIGJvb3RpbmcNCj4gKyAgLy8NCj4gKyAg VUlOVDMyIEhvcml6b250YWxSZXNvbHV0aW9uOw0KPiArICBVSU5UMzIgVmVydGljYWxSZXNvbHV0 aW9uOw0KPiArfSBQTEFURk9STV9DT05GSUc7DQo+ICsjcHJhZ21hIHBhY2soKQ0KPiArDQo+ICsv Lw0KPiArLy8gUGxlYXNlIHNlZSB0aGUgQVBJIGRvY3VtZW50YXRpb24gbmVhciB0aGUgZnVuY3Rp b24gZGVmaW5pdGlvbnMuDQo+ICsvLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtQbGF0 Zm9ybUNvbmZpZ1NhdmUgKA0KPiArICBJTiBQTEFURk9STV9DT05GSUcgKlBsYXRmb3JtQ29uZmln DQo+ICsgICk7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArUGxhdGZvcm1Db25m aWdMb2FkICgNCj4gKyAgT1VUIFBMQVRGT1JNX0NPTkZJRyAqUGxhdGZvcm1Db25maWcsDQo+ICsg IE9VVCBVSU5UNjQgICAgICAgICAgKk9wdGlvbmFsRWxlbWVudHMNCj4gKyAgKTsNCj4gKw0KPiAr Ly8NCj4gKy8vIEZlYXR1cmUgZmxhZ3MgZm9yIE9wdGlvbmFsRWxlbWVudHMuDQo+ICsvLw0KPiAr I2RlZmluZSBQTEFURk9STV9DT05GSUdfRl9HUkFQSElDU19SRVNPTFVUSU9OIEJJVDANCj4gKyNk ZWZpbmUgUExBVEZPUk1fQ09ORklHX0ZfRE9XTkdSQURFICAgICAgICAgICBCSVQ2Mw0KPiArDQo+ ICsjZW5kaWYgLy8gX1BMQVRGT1JNX0NPTkZJR19IXw0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtRm9ybXMudmZyDQo+ IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3Jt Rm9ybXMudmZyDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjFj MDI1NjVlYmINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Gb3Jtcy52ZnINCj4gQEAgLTAsMCArMSw2 NyBAQA0KPiArLy8gKisrDQo+ICsvLw0KPiArLy8gQ29weXJpZ2h0IChDKSAyMDE0LCBSZWQgSGF0 LCBJbmMuDQo+ICsvLyBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsvLw0KPiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKy8vDQo+ICsvLyBNb2R1bGUgTmFtZToN Cj4gKy8vDQo+ICsvLyAgIFBsYXRmb3JtRm9ybXMudmZyDQo+ICsvLw0KPiArLy8gQWJzdHJhY3Q6 DQo+ICsvLw0KPiArLy8gICBGb3JtIGRlZmluaXRpb25zIGZvciBleHBvc2luZyBzb21lIG9mIE9W TUYncyBwbGF0Zm9ybSBrbm9icyB2aWEgSElJLg0KPiArLy8NCj4gKy8vIC0tKi8NCj4gKw0KPiAr I2luY2x1ZGUgPEd1aWQvU2ltaWNzWDU4UGxhdGZvcm1Db25maWcuaD4NCj4gKyNpbmNsdWRlICJQ bGF0Zm9ybS5oIg0KPiArDQo+ICtmb3Jtc2V0DQo+ICsgIGd1aWQgID0gU0lNSUNTWDU4X1BMQVRG T1JNX0NPTkZJR19HVUlELA0KPiArICB0aXRsZSA9IFNUUklOR19UT0tFTihTVFJfRk9STVNFVF9U SVRMRSksDQo+ICsgIGhlbHAgID0gU1RSSU5HX1RPS0VOKFNUUl9GT1JNU0VUX0hFTFApLA0KPiAr DQo+ICsgIHZhcnN0b3JlIE1BSU5fRk9STV9TVEFURSwNCj4gKyAgICB2YXJpZCA9IEZPUk1TVEFU RUlEX01BSU5fRk9STSwNCj4gKyAgICBuYW1lICA9IE1haW5Gb3JtU3RhdGUsDQo+ICsgICAgZ3Vp ZCAgPSBTSU1JQ1NYNThfUExBVEZPUk1fQ09ORklHX0dVSUQ7DQo+ICsNCj4gKyAgZm9ybQ0KPiAr ICAgIGZvcm1pZCA9IEZPUk1JRF9NQUlOX0ZPUk0sDQo+ICsgICAgdGl0bGUgID0gU1RSSU5HX1RP S0VOKFNUUl9NQUlOX0ZPUk1fVElUTEUpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBEaXNw bGF5IHRoZSBjdXJyZW50IHByZWZlcmVuY2UgaW4gYSByZWFkLW9ubHkgc3RyaW5nIGZpZWxkLg0K PiArICAgIC8vDQo+ICsgICAgc3RyaW5nDQo+ICsgICAgICB2YXJpZCAgICAgID0gTWFpbkZvcm1T dGF0ZS5DdXJyZW50UHJlZmVycmVkUmVzb2x1dGlvbiwNCj4gKyAgICAgIHF1ZXN0aW9uaWQgPSBR VUVTVElPTl9SRVNfQ1VSLA0KPiArICAgICAgcHJvbXB0ICAgICA9IFNUUklOR19UT0tFTihTVFJf UkVTX0NVUiksDQo+ICsgICAgICBoZWxwICAgICAgID0gU1RSSU5HX1RPS0VOKFNUUl9SRVNfQ1VS X0hFTFApLA0KPiArICAgICAgZmxhZ3MgICAgICA9IFJFQURfT05MWSwNCj4gKyAgICAgIG1pbnNp emUgICAgPSAwLA0KPiArICAgICAgbWF4c2l6ZSAgICA9IE1BWFNJWkVfUkVTX0NVUiwNCj4gKyAg ICBlbmRzdHJpbmc7DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIFdlJ2xsIGR5bmFtaWNhbGx5 IGdlbmVyYXRlIGEgb25lLW9mLW1hbnkgc2VsZWN0aW9uIGF0IHRoaXMgbGFiZWwuDQo+ICsgICAg Ly8NCj4gKyAgICBsYWJlbCBMQUJFTF9SRVNfTkVYVDsNCj4gKw0KPiArICAgIHRleHQNCj4gKyAg ICAgIGhlbHAgID0gU1RSSU5HX1RPS0VOKFNUUl9TQVZFX0VYSVQpLA0KPiArICAgICAgdGV4dCAg PSBTVFJJTkdfVE9LRU4oU1RSX1NBVkVfRVhJVCksDQo+ICsgICAgICBmbGFncyA9IElOVEVSQUNU SVZFLA0KPiArICAgICAga2V5ICAgPSBRVUVTVElPTl9TQVZFX0VYSVQ7DQo+ICsNCj4gKyAgICB0 ZXh0DQo+ICsgICAgICBoZWxwICA9IFNUUklOR19UT0tFTihTVFJfRElTQ0FSRF9FWElUKSwNCj4g KyAgICAgIHRleHQgID0gU1RSSU5HX1RPS0VOKFNUUl9ESVNDQVJEX0VYSVQpLA0KPiArICAgICAg ZmxhZ3MgPSBJTlRFUkFDVElWRSwNCj4gKyAgICAgIGtleSAgID0gUVVFU1RJT05fRElTQ0FSRF9F WElUOw0KPiArDQo+ICsgIGVuZGZvcm07DQo+ICsNCj4gK2VuZGZvcm1zZXQ7DQo+IGRpZmYgLS1n aXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvQ21vcy5o DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3Mu aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi42MTZkMmQ3NGNi DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtUGVpL0Ntb3MuaA0KPiBAQCAtMCwwICsxLDUwIEBADQo+ICsvKiogQGZpbGUN Cj4gKyAgUEMvQVQgQ01PUyBhY2Nlc3Mgcm91dGluZXMNCj4gKw0KPiArICBDb3B5cmlnaHQgKGMp IDIwMDYgLSAyMDA5IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+ DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9fQ01PU19IX18NCj4gKyNkZWZpbmUgX19DTU9TX0hf Xw0KPiArDQo+ICsvKioNCj4gKyAgUmVhZHMgOC1iaXRzIG9mIENNT1MgZGF0YS4NCj4gKw0KPiAr ICBSZWFkcyB0aGUgOC1iaXRzIG9mIENNT1MgZGF0YSBhdCB0aGUgbG9jYXRpb24gc3BlY2lmaWVk IGJ5IEluZGV4Lg0KPiArICBUaGUgOC1iaXQgcmVhZCB2YWx1ZSBpcyByZXR1cm5lZC4NCj4gKw0K PiArICBAcGFyYW0gIEluZGV4ICBUaGUgQ01PUyBsb2NhdGlvbiB0byByZWFkLg0KPiArDQo+ICsg IEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDgNCj4gK0VGSUFQ SQ0KPiArQ21vc1JlYWQ4ICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAg IEluZGV4DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBXcml0ZXMgOC1iaXRzIG9mIENNT1Mg ZGF0YS4NCj4gKw0KPiArICBXcml0ZXMgOC1iaXRzIG9mIENNT1MgZGF0YSB0byB0aGUgbG9jYXRp b24gc3BlY2lmaWVkIGJ5IEluZGV4DQo+ICsgIHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZCBieSBW YWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4NCj4gKw0KPiArICBAcGFyYW0gIEluZGV4ICBUaGUgQ01P UyBsb2NhdGlvbiB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBWYWx1ZSAgVGhlIHZhbHVlIHRvIHdy aXRlIHRvIENNT1MuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDTU9T Lg0KPiArDQo+ICsqKi8NCj4gK1VJTlQ4DQo+ICtFRklBUEkNCj4gK0Ntb3NXcml0ZTggKA0KPiAr ICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ICsgIElOICAgICAg VUlOVDggICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiArICApOw0KPiArDQo+ICsNCj4gKyNl bmRpZg0KPiArDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uaA0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAuLjViMWE5YjVmNTcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uaA0K PiBAQCAtMCwwICsxLDkzIEBADQo+ICsvKiogQGZpbGUNCj4gKyAgUGxhdGZvcm0gUEVJIG1vZHVs ZSBpbmNsdWRlIGZpbGUuDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNiBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArDQo+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiAr I2lmbmRlZiBfUExBVEZPUk1fUEVJX0hfSU5DTFVERURfDQo+ICsjZGVmaW5lIF9QTEFURk9STV9Q RUlfSF9JTkNMVURFRF8NCj4gKw0KPiArVk9JRA0KPiArQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAo DQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiArICBVSU5U NjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KPiArICApOw0KPiArDQo+ICtWT0lE DQo+ICtBZGRJb01lbW9yeVJhbmdlSG9iICgNCj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAg ICAgIE1lbW9yeUJhc2UsDQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlM aW1pdA0KPiArICApOw0KPiArDQo+ICtWT0lEDQo+ICtBZGRNZW1vcnlCYXNlU2l6ZUhvYiAoDQo+ ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiArICBVSU5UNjQg ICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KPiArICApOw0KPiArDQo+ICtWT0lEDQo+ ICtBZGRNZW1vcnlSYW5nZUhvYiAoDQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBN ZW1vcnlCYXNlLA0KPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5TGltaXQN Cj4gKyAgKTsNCj4gKw0KPiArVk9JRA0KPiArQWRkVW50ZXN0ZWRNZW1vcnlCYXNlU2l6ZUhvYiAo DQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiArICBVSU5U NjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KPiArICApOw0KPiArDQo+ICtWT0lE DQo+ICtBZGRSZXNlcnZlZE1lbW9yeUJhc2VTaXplSG9iICgNCj4gKyAgRUZJX1BIWVNJQ0FMX0FE RFJFU1MgICAgICAgIE1lbW9yeUJhc2UsDQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAg ICBNZW1vcnlTaXplLA0KPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgQ2FjaGVhYmxl DQo+ICsgICk7DQo+ICsNCj4gK1ZPSUQNCj4gK0FkZHJlc3NXaWR0aEluaXRpYWxpemF0aW9uICgN Cj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICtWT0lEDQo+ICtYNThUc2VnTWJ5dGVzSW5pdGlh bGl6YXRpb24gKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK1B1 Ymxpc2hQZWlNZW1vcnkgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gK1VJTlQzMg0KPiAr R2V0U3lzdGVtTWVtb3J5U2l6ZUJlbG93NGdiICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ ICtWT0lEDQo+ICtJbml0aWFsaXplUmFtUmVnaW9ucyAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4g Kw0KPiArRUZJX1NUQVRVUw0KPiArUGVpRnZJbml0aWFsaXphdGlvbiAoDQo+ICsgIFZPSUQNCj4g KyAgKTsNCj4gKw0KPiArVk9JRA0KPiArSW5zdGFsbEZlYXR1cmVDb250cm9sQ2FsbGJhY2sgKA0K PiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gK2V4dGVybiBFRklfQk9PVF9NT0RFIG1Cb290TW9k ZTsNCj4gKw0KPiArZXh0ZXJuIEJPT0xFQU4gbVMzU3VwcG9ydGVkOw0KPiArDQo+ICtleHRlcm4g VUlOVDggbVBoeXNNZW1BZGRyZXNzV2lkdGg7DQo+ICsNCj4gK2V4dGVybiBVSU5UMzIgbU1heENw dUNvdW50Ow0KPiArDQo+ICtleHRlcm4gVUlOVDE2IG1Ib3N0QnJpZGdlRGV2SWQ7DQo+ICsjZW5k aWYgLy8gX1BMQVRGT1JNX1BFSV9IX0lOQ0xVREVEXw0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0v SW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtUGVpLmluZg0KPiBi L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBl aS5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZWI4MDQ4 YzY1NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5pbmYNCj4gQEAgLTAsMCArMSwxMDkgQEAN Cj4gKyMjIEBmaWxlDQo+ICsjICBQbGF0Zm9ybSBQRUkgZHJpdmVyDQo+ICsjDQo+ICsjICBUaGlz IG1vZHVsZSBwcm92aWRlcyBwbGF0Zm9ybSBzcGVjaWZpYyBmdW5jdGlvbiB0byBkZXRlY3QgYm9v dCBtb2RlLg0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4IEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ICsjDQo+ICsjIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsjDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5l c10NCj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiAr ICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBQbGF0Zm9ybVBlaQ0KPiArICBGSUxF X0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSAwNTExNjIxOC1mOWYxLTQxZjgtOGQxNy1jMjIw NzAwNmZmZmYNCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gUEVJTQ0KPiAr ICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgRU5UUllfUE9JTlQg ICAgICAgICAgICAgICAgICAgID0gSW5pdGlhbGl6ZVBsYXRmb3JtDQo+ICsNCj4gKyMNCj4gKyMg VGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCBy ZXF1aXJlZCBieSB0aGUgYnVpbGQNCj4gdG9vbHMuDQo+ICsjDQo+ICsjICBWQUxJRF9BUkNISVRF Q1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0IEVCQw0KPiArIw0KPiArDQo+ICtbU291cmNlc10N Cj4gKyAgQ21vcy5jDQo+ICsgIEZlYXR1cmVDb250cm9sLmMNCj4gKyAgRnYuYw0KPiArICBNZW1E ZXRlY3QuYw0KPiArICBQbGF0Zm9ybS5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtn L01kZVBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKyAgVWVm aUNwdVBrZy9VZWZpQ3B1UGtnLmRlYw0KPiArICBTaW1pY3NPcGVuQm9hcmRQa2cvU2ltaWNzT3Bl bkJvYXJkUGtnLmRlYw0KPiArICBNaW5QbGF0Zm9ybVBrZy9NaW5QbGF0Zm9ybVBrZy5kZWMNCj4g KyAgT3ZtZlBrZy9Pdm1mUGtnLmRlYw0KPiArDQo+ICtbR3VpZHNdDQo+ICsgIGdFZmlNZW1vcnlU eXBlSW5mb3JtYXRpb25HdWlkDQo+ICsgIGdFZmlTbW1QZWlTbXJhbU1lbW9yeVJlc2VydmVHdWlk ICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsg IEJhc2VMaWINCj4gKyAgRGVidWdMaWINCj4gKyAgSG9iTGliDQo+ICsgIElvTGliDQo+ICsgIFBj aUxpYg0KPiArICBQZWlSZXNvdXJjZVB1YmxpY2F0aW9uTGliDQo+ICsgIFBlaVNlcnZpY2VzTGli DQo+ICsgIFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliDQo+ICsgIFBlaW1FbnRyeVBvaW50DQo+ ICsgIE10cnJMaWINCj4gKyAgUGNkTGliDQo+ICsNCj4gK1tQY2RdDQo+ICsgIGdTaW1pY3NYNThQ a2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NQZWlNZW1GdkJhc2UNCj4gKyAgZ1NpbWljc1g1OFBr Z1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc1BlaU1lbUZ2U2l6ZQ0KPiArICBnU2ltaWNzWDU4UGtn VG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRHhlTWVtRnZCYXNlDQo+ICsgIGdTaW1pY3NYNThQa2dU b2tlblNwYWNlR3VpZC5QY2RTaW1pY3NEeGVNZW1GdlNpemUNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFNpbWljc0xvY2tCb3hTdG9yYWdlQmFzZQ0KPiArICBnU2ltaWNzWDU4 UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VTaXplDQo+ICsgIGdTaW1p Y3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NQZWlNZW1GdkJhc2UNCj4gKyAgZ1NpbWlj c1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc1BlaU1lbUZ2U2l6ZQ0KPiArICBnU2ltaWNz WDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRHhlTWVtRnZCYXNlDQo+ICsgIGdTaW1pY3NY NThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NEeGVNZW1GdlNpemUNCj4gKyAgZ1NpbWljc1g1 OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc1NlY1BhZ2VUYWJsZXNCYXNlDQo+ICsgIGdTaW1p Y3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NTZWNQZWlUZW1wUmFtQmFzZQ0KPiArICBn U2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzU2VjUGVpVGVtcFJhbVNpemUNCj4g KyAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEd1aWRlZEV4dHJhY3RIYW5kbGVyVGFibGVB ZGRyZXNzDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RHdWlkZWRFeHRyYWN0 SGFuZGxlclRhYmxlU2l6ZQ0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2lt aWNzRGVjb21wcmVzc2lvblNjcmF0Y2hFbmQNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VH dWlkLlBjZFNpbWljc1g1OEhvc3RCcmlkZ2VQY2lEZXZJZA0KPiArICBnU2ltaWNzWDU4UGtnVG9r ZW5TcGFjZUd1aWQuUGNkUGNpSW9CYXNlDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3Vp ZC5QY2RQY2lJb1NpemUNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1t aW8zMkJhc2UNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW8zMlNp emUNCj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW82NEJhc2UNCj4g KyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW82NFNpemUNCj4gKyAgZ1Np bWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0RlY29tcHJlc3Npb25TY3JhdGNoRW5k DQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RYNThUc2VnTWJ5dGVzDQo+ICsg IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTbW1TbXJhbVJlcXVpcmUNCj4gKyAgZ0Vm aU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFZhcmlhYmxlU3RvcmVTaXplDQo+ICsgIGdF ZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6 ZQ0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0b3JhZ2VW YXJpYWJsZVNpemUNCj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEVtdVZh cmlhYmxlTnZTdG9yZVJlc2VydmVkDQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2REeGVJcGxTd2l0Y2hUb0xvbmdNb2RlDQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNw YWNlR3VpZC5QY2RVc2UxR1BhZ2VUYWJsZQ0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFj ZUd1aWQuUGNkQWNwaVMzRW5hYmxlDQo+ICsgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNk Q3B1TG9jYWxBcGljQmFzZUFkZHJlc3MNCj4gKyAgZ1VlZmlDcHVQa2dUb2tlblNwYWNlR3VpZC5Q Y2RDcHVNYXhMb2dpY2FsUHJvY2Vzc29yTnVtYmVyDQo+ICsgIGdVZWZpQ3B1UGtnVG9rZW5TcGFj ZUd1aWQuUGNkQ3B1QXBJbml0VGltZU91dEluTWljcm9TZWNvbmRzDQo+ICsgIGdVZWZpQ3B1UGtn VG9rZW5TcGFjZUd1aWQuUGNkQ3B1QXBTdGFja1NpemUNCj4gKyAgZ01pblBsYXRmb3JtUGtnVG9r ZW5TcGFjZUd1aWQuUGNkRmxhc2hBcmVhQmFzZUFkZHJlc3MgICMjIENPTlNVTUVTDQo+ICsgIGdN aW5QbGF0Zm9ybVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoQXJlYVNpemUgICAgICAgICAjIyBD T05TVU1FUw0KPiArICBnTWluUGxhdGZvcm1Qa2dUb2tlblNwYWNlR3VpZC5QY2RJb0FwaWNJZA0K PiArDQo+ICtbRml4ZWRQY2RdDQo+ICsgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lF eHByZXNzQmFzZUFkZHJlc3MNCj4gKw0KPiArDQo+ICtbUHBpc10NCj4gKyAgZ0VmaVBlaU1hc3Rl ckJvb3RNb2RlUHBpR3VpZA0KPiArICBnRWZpUGVpTXBTZXJ2aWNlc1BwaUd1aWQNCj4gKw0KPiAr W0RlcGV4XQ0KPiArICBUUlVFDQo+ICsNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExpYi9T aWxpY29uDQo+IFBvbGljeUluaXRMaWIuaW5mDQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lJbml0TGliL1NpbGljb24NCj4g UG9saWN5SW5pdExpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uYjliY2I1ZDJiZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExp Yi9TaWxpY29uDQo+IFBvbGljeUluaXRMaWIuaW5mDQo+IEBAIC0wLDAgKzEsMzggQEANCj4gKyMj IEBmaWxlDQo+ICsjDQo+ICsjIENvcHlyaWdodCAoYykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiArIw0KPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArIw0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNd DQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiArICBCQVNFX05BTUUg ICAgICAgICAgICA9IFNpbGljb25Qb2xpY3lJbml0TGliDQo+ICsgIEZJTEVfR1VJRCAgICAgICAg ICAgID0gQjQ5NERGMzktQTVGOC00OEExLUIyRDAtRUY1MjNBRDkxQzU1DQo+ICsgIE1PRFVMRV9U WVBFICAgICAgICAgID0gUEVJTQ0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICA9IDEuMA0KPiAr ICBMSUJSQVJZX0NMQVNTICAgICAgICA9IFNpbGljb25Qb2xpY3lJbml0TGliDQo+ICsNCj4gK1tT b3VyY2VzXQ0KPiArICBTaWxpY29uUG9saWN5SW5pdExpYi5jDQo+ICsNCj4gKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiAjIyMj IyMjIyMjIyMjIyMjIyMjIw0KPiArIw0KPiArIyBQYWNrYWdlIERlcGVuZGVuY3kgU2VjdGlvbiAt IGxpc3Qgb2YgUGFja2FnZSBmaWxlcyB0aGF0IGFyZSByZXF1aXJlZCBmb3INCj4gKyMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGlzIG1vZHVsZS4NCj4gKyMNCj4gKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiAjIyMj IyMjIyMjIyMjIyMjIyMjIw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0K PiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIEJhc2VNZW1vcnlMaWINCj4gKyAgQmFzZUxp Yg0KPiArICBEZWJ1Z0xpYg0KPiArICBEZWJ1Z1ByaW50RXJyb3JMZXZlbExpYg0KPiArICBIb2JM aWINCj4gKyAgSW9MaWINCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArICBQZWlTZXJ2aWNl c0xpYg0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWwNCj4gaWNvblBv bGljeVVwZGF0ZUxpYi5pbmYNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv UG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWwNCj4gaWNvblBvbGljeVVw ZGF0ZUxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4u ZGExNjVhYzk0Nw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1Np bA0KPiBpY29uUG9saWN5VXBkYXRlTGliLmluZg0KPiBAQCAtMCwwICsxLDM1IEBADQo+ICsjIyBA ZmlsZQ0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gKyMNCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyMNCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0K PiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ICsgIEJB U0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFNpbGljb25Qb2xpY3lVcGRhdGVMaWINCj4g KyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gNkVBOTU4NUMtM0MxNS00N2RhLTlG RkMtMjVFOUU0RUE0RDBDDQo+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFBF SU0NCj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIExJQlJB UllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IFNpbGljb25Qb2xpY3lVcGRhdGVMaWINCj4gKw0K PiArW1NvdXJjZXNdDQo+ICsgIFNpbGljb25Qb2xpY3lVcGRhdGVMaWIuYw0KPiArDQo+ICtbUGFj a2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1 bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgSG9iTGliDQo+ICsgIElv TGliDQo+ICsgIFBjZExpYg0KPiArDQo+ICtbUGNkXQ0KPiArDQo+ICtbRml4ZWRQY2RdDQo+ICsN Cj4gK1tQcGlzXQ0KPiArDQo+ICtbR3VpZHNdDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvU2ltaWNzT3BlbkJvYXJkUGtnLmRlYw0KPiBiL1BsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVjDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjE3Yzg3YWNhOGMNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU2ltaWNz T3BlbkJvYXJkUGtnLmRlYw0KPiBAQCAtMCwwICsxLDE2OCBAQA0KPiArIyMgQGZpbGUNCj4gKyMg IEVGSS9GcmFtZXdvcmsgU2ltaWNzIFg1OCBwbGF0Zm9ybQ0KPiArIw0KPiArIyBDb3B5cmlnaHQg KGMpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4g KyMNCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g KyMNCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBERUNfU1BFQ0lGSUNBVElPTiAgICAg ICAgICAgICAgPSAweDAwMDEwMDA1DQo+ICsgIFBBQ0tBR0VfTkFNRSAgICAgICAgICAgICAgICAg ICA9IFNpbWljc1g1OFBrZw0KPiArICBQQUNLQUdFX0dVSUQgICAgICAgICAgICAgICAgICAgPSBF NkEwM0UwRC01OTQ0LTRkYzYtOTI5Mi0wOTBENjA5RUREM0ENCj4gKyAgUEFDS0FHRV9WRVJTSU9O ICAgICAgICAgICAgICAgID0gMC4xDQo+ICsNCj4gK1tJbmNsdWRlc10NCj4gKyAgSW5jbHVkZQ0K PiArDQo+ICtbR3VpZHNdDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZCAgID0gezB4 NWIyNzZkMjAsIDB4MzdkMCwgMHg0YWYwLCB7MHg4ZCwNCj4gMHgwNCwgMHg0NywgMHg5MSwgMHgy YiwgMHg3YywgMHgxZCwgMHg0NH19DQo+ICsgIGdTaW1pY3NYNThQbGF0Zm9ybUNvbmZpZ0d1aWQg ID0gezB4ZWVkMzVmNTcsIDB4NGZmMiwgMHg0MjQ0LCB7MHhiOCwgMHgzYSwNCj4gMHhlYSwgMHg3 MSwgMHg1ZiwgMHhkMywgMHg1OSwgMHhhNX19DQo+ICsNCj4gK1tQcm90b2NvbHNdDQo+ICsgIGdF ZmlMZWdhY3k4MjU5UHJvdG9jb2xHdWlkICAgICAgICAgID0gezB4MzgzMjFkYmEsIDB4NGZlMCwg MHg0ZTE3LCB7MHg4YSwNCj4gMHhlYywgMHg0MSwgMHgzMCwgMHg1NSwgMHhlYSwgMHhlZCwgMHhj MX19DQo+ICsgIGdFZmlJc2FBY3BpUHJvdG9jb2xHdWlkICAgICAgICAgICAgID0gezB4NjRhODky ZGMsIDB4NTU2MSwgMHg0NTM2LCB7MHg5MiwgMHhjNywNCj4gMHg3OSwgMHg5YiwgMHhmYywgMHgx OCwgMHgzMywgMHg1NX19DQo+ICsgIGdFZmlJc2FJb1Byb3RvY29sR3VpZCAgICAgICAgICAgICAg ID0gezB4N2VlMmJkNDQsIDB4M2RhMCwgMHgxMWQ0LCB7MHg5YSwgMHgzOCwNCj4gMHgwLCAweDkw LCAweDI3LCAweDNmLCAweGMxLCAweDRkfX0NCj4gKw0KPiArW1BjZHNGaXhlZEF0QnVpbGRdDQo+ ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NQZWlNZW1GdkJhc2V8MHgw fFVJTlQzMnwwDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NQZWlN ZW1GdlNpemV8MHgwfFVJTlQzMnwxDQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlk LlBjZFNpbWljc0R4ZU1lbUZ2QmFzZXwweDB8VUlOVDMyfDB4MTUNCj4gKyAgZ1NpbWljc1g1OFBr Z1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0R4ZU1lbUZ2U2l6ZXwweDB8VUlOVDMyfDB4MTYNCj4g Kw0KPiArICAjVE9ETzogUmVtb3ZlIHRoZXNlIHR3byB3aGVuIHdlIGludGVncmF0ZSBuZXcgUGxh dGZvcm1QZWkNCj4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzTWVt RnZCYXNlfDB4MDA4MDAwMDB8VUlOVDMyfDINCj4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFj ZUd1aWQuUGNkU2ltaWNzTWVtRnZTaXplfDB4MDA1MDAwMDB8VUlOVDMyfDMNCj4gKw0KPiArICAj IyBUaGUgZm9sbG93aW5nIHNldHRpbmcgY29udHJvbHMgaG93IG1hbnkgbWVnYWJ5dGVzIHdlIGNv bmZpZ3VyZSBhcyBUU0VHDQo+IG9uDQo+ICsgICMgIFg1OCwgZm9yIFNNUkFNIHB1cnBvc2VzLiBQ ZXJtaXR0ZWQgdmFsdWVzIGFyZTogMSwgMiwgOC4gT3RoZXIgdmFsdWVzDQo+IGNhdXNlDQo+ICsg ICMgIHVuZGVmaW5lZCBiZWhhdmlvci4NCj4gKyAgIw0KPiArICAjICBUaGlzIFBDRCBpcyBvbmx5 IGNvbnN1bHRlZCBpZiBQY2RTbW1TbXJhbVJlcXVpcmUgaXMgVFJVRSAoc2VlIGJlbG93KS4NCj4g KyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFg1OFRzZWdNYnl0ZXN8OHxVSU5UOHww eDIwDQo+ICsNCj4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRmxh c2hOdlN0b3JhZ2VFdmVudExvZ0Jhc2V8MHgwfFVJDQo+IE5UMzJ8MHg4DQo+ICsNCj4gZ1NpbWlj c1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0ZsYXNoTnZTdG9yYWdlRXZlbnRMb2dTaXpl fDB4MHxVSQ0KPiBOVDMyfDB4OQ0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNk U2ltaWNzRmlybXdhcmVGZFNpemV8MHgwfFVJTlQzMnwweGENCj4gKyAgZ1NpbWljc1g1OFBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFNpbWljc0Zpcm13YXJlQmxvY2tTaXplfDB8VUlOVDMyfDB4Yg0KPiAr DQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NGbGFzaE52U3RvcmFnZVZh cmlhYmxlQmFzZXwweDB8VUkNCj4gTlQzMnwweGMNCj4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5T cGFjZUd1aWQuUGNkU2ltaWNzRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZUJhc2V8MHgwfFVJDQo+IE5U MzJ8MHhkDQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0ZsYXNo TnZTdG9yYWdlRnR3V29ya2luZ0Jhc2V8MHgwDQo+IHxVSU5UMzJ8MHhlDQo+ICsgIGdTaW1pY3NY NThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NGZEJhc2VBZGRyZXNzfDB4MHxVSU5UMzJ8MHhm DQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc1NlY1BhZ2VUYWJs ZXNCYXNlfDB4MHxVSU5UMzJ8MHgxDQo+IDENCj4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFj ZUd1aWQuUGNkU2ltaWNzU2VjUGFnZVRhYmxlc1NpemV8MHgwfFVJTlQzMnwweDENCj4gMg0KPiAr DQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NTZWNQZWlUZW1wUmFtQmFz ZXwweDB8VUlOVDMyfDANCj4geDEzDQo+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlk LlBjZFNpbWljc1NlY1BlaVRlbXBSYW1TaXplfDB4MHxVSU5UMzJ8MHgNCj4gMTQNCj4gKw0KPiBn U2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VCYXNlfDB4 MHxVSU5UMzJ8MHgNCj4gMTgNCj4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNk U2ltaWNzTG9ja0JveFN0b3JhZ2VTaXplfDB4MHxVSU5UMzJ8MHgNCj4gMTkNCj4gKw0KPiBnU2lt aWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkR3VpZGVkRXh0cmFjdEhhbmRsZXJUYWJsZVNpemV8 MHgwfFVJTlQzDQo+IDJ8MHgxYQ0KPiArDQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5Q Y2RTaW1pY3NEZWNvbXByZXNzaW9uU2NyYXRjaEVuZHwweDB8VUlOVA0KPiAzMnwweDFmDQo+ICsN Cj4gK1tQY2RzRHluYW1pYywgUGNkc0R5bmFtaWNFeF0NCj4gKw0KPiArICAjIFRPRE86IGludmVz dGlnYXRlIHdoZXRoZXIgbmV4dCB0d28gUGNkcyBhcmUgbmVlZGVkDQo+ICsgIGdTaW1pY3NYNThQ a2dUb2tlblNwYWNlR3VpZC5QY2RFbXVWYXJpYWJsZUV2ZW50fDB8VUlOVDY0fDB4MjgNCj4gKw0K PiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkT3ZtZkZsYXNoVmFyaWFibGVzRW5hYmxl fEZBTFNFfEJPT0xFQQ0KPiBOfDB4MTANCj4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1 aWQuUGNkU2ltaWNzWDU4SG9zdEJyaWRnZVBjaURldklkfDB8VUlOVDE2fDANCj4geDFiDQo+ICsN Cj4gKyAgIyMgVGhlIElPIHBvcnQgYXBlcnR1cmUgc2hhcmVkIGJ5IGFsbCBQQ0kgcm9vdCBicmlk Z2VzLg0KPiArICAjDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lJb0Jh c2V8MHgwfFVJTlQ2NHwweDIyDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQ Y2lJb1NpemV8MHgwfFVJTlQ2NHwweDIzDQo+ICsNCj4gKyAgIyMgVGhlIDMyLWJpdCBNTUlPIGFw ZXJ0dXJlIHNoYXJlZCBieSBhbGwgUENJIHJvb3QgYnJpZGdlcy4NCj4gKyAgIw0KPiArICBnU2lt aWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpTW1pbzMyQmFzZXwweDB8VUlOVDY0fDB4MjQN Cj4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW8zMlNpemV8MHgwfFVJ TlQ2NHwweDI1DQo+ICsNCj4gKyAgIyMgVGhlIDY0LWJpdCBNTUlPIGFwZXJ0dXJlIHNoYXJlZCBi eSBhbGwgUENJIHJvb3QgYnJpZGdlcy4NCj4gKyAgIw0KPiArICBnU2ltaWNzWDU4UGtnVG9rZW5T cGFjZUd1aWQuUGNkUGNpTW1pbzY0QmFzZXwweDB8VUlOVDY0fDB4MjYNCj4gKyAgZ1NpbWljc1g1 OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW82NFNpemV8MHgwfFVJTlQ2NHwweDI3DQo+ICsN Cj4gK1tQY2RzRmVhdHVyZUZsYWddDQo+ICsgICMjIFRoaXMgZmVhdHVyZSBmbGFnIGVuYWJsZXMg U01NL1NNUkFNIHN1cHBvcnQuIE5vdGUgdGhhdCBpdCBhbHNvIHJlcXVpcmVzDQo+ICsgICMgIHN1 Y2ggc3VwcG9ydCBmcm9tIHRoZSB1bmRlcmx5aW5nIFFFTVUgaW5zdGFuY2U7IGlmIHRoYXQgc3Vw cG9ydCBpcyBub3QNCj4gKyAgIyAgcHJlc2VudCwgdGhlIGZpcm13YXJlIHdpbGwgcmVqZWN0IGNv bnRpbnVpbmcgYWZ0ZXIgYSBjZXJ0YWluIHBvaW50Lg0KPiArICAjDQo+ICsgICMgIFRoZSBmbGFn IGFsc28gYWN0cyBhcyBhIGdlbmVyYWwgInNlY3VyaXR5IHN3aXRjaCI7IHdoZW4gVFJVRSwgbWFu eQ0KPiArICAjICBjb21wb25lbnRzIHdpbGwgY2hhbmdlIGJlaGF2aW9yLCB3aXRoIHRoZSBnb2Fs IG9mIHByZXZlbnRpbmcgYSBtYWxpY2lvdXMNCj4gKyAgIyAgcnVudGltZSBPUyBmcm9tIHRhbXBl cmluZyB3aXRoIGZpcm13YXJlIHN0cnVjdHVyZXMgKHNwZWNpYWwgbWVtb3J5DQo+IHJhbmdlcw0K PiArICAjICB1c2VkIGJ5IE9WTUYsIHRoZSB2YXJzdG9yZSBwZmxhc2ggY2hpcCwgTG9ja0JveCBl dGMpLg0KPiArDQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTbW1TbXJhbVJlcXVp cmV8RkFMU0V8Qk9PTEVBTnwweDENCj4gZQ0KPiArDQo+ICsNCj4gK1tQY2RzRml4ZWRBdEJ1aWxk LCBQY2RzRHluYW1pYywgUGNkc0R5bmFtaWNFeCwgUGNkc1BhdGNoYWJsZUluTW9kdWxlXQ0KPiAr ICAjIyBQY2Q4MjU5TGVnYWN5TW9kZU1hc2sgZGVmaW5lcyB0aGUgZGVmYXVsdCBtYXNrIHZhbHVl IGZvciBwbGF0Zm9ybS4NCj4gVGhpcyB2YWx1ZSBpcyBkZXRlcm1pbmVkPEJSPjxCUj4NCj4gKyAg IyAgMSkgSWYgcGxhdGZvcm0gb25seSBzdXBwb3J0IHB1cmUgVUVGSSwgdmFsdWUgc2hvdWxkIGJl IHNldCB0byAweEZGRkYgb3INCj4gMHhGRkZFOw0KPiArICAjICAgICBCZWNhdXNlIG9ubHkgY2xv Y2sgaW50ZXJydXB0IGlzIGFsbG93ZWQgaW4gbGVnYWN5IG1vZGUgaW4gcHVyZSBVRUZJDQo+IHBs YXRmb3JtLjxCUj4NCj4gKyAgIyAgMikgSWYgcGxhdGZvcm0gaW5zdGFsbCBDU00gYW5kIHVzZSB0 aHVuayBtb2R1bGU6PEJSPg0KPiArICAjICAgICBhKSBJZiB0aHVuayBjYWxsIHByb3ZpZGVkIGJ5 IENTTSBiaW5hcnkgcmVxdWlyZXMgc29tZSBsZWdhY3kgaW50ZXJydXB0DQo+IHN1cHBvcnQsIHRo ZSBjb3JyZXNwb25kaW5nIGJpdA0KPiArICAjICAgICAgICBzaG91bGQgYmUgb3BlbmVkIGFzIDAu PEJSPg0KPiArICAjICAgICAgICBGb3IgZXhhbXBsZSwgaWYga2V5Ym9hcmQgaW50ZXJmYWNlcyBw cm92aWRlZCBDU00gYmluYXJ5IHVzZSBsZWdhY3kNCj4ga2V5Ym9hcmQgaW50ZXJydXB0IGluIDgy NTkgYml0IDEsIHRoZW4NCj4gKyAgIyAgICAgICAgdGhlIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8g MHhGRkZDLjxCUj4NCj4gKyAgIyAgICAgYikgSWYgYWxsIHRodW5rIGNhbGwgcHJvdmllZCBieSBD U00gYmluYXJ5IGRvIG5vdCByZXF1aXJlIGxlZ2FjeSBpbnRlcnJ1cHQNCj4gc3VwcG9ydCwgdmFs dWUgc2hvdWxkIGJlIHNldA0KPiArICAjICAgICAgICB0byAweEZGRkYgb3IgMHhGRkZFLjxCUj4N Cj4gKyAgIw0KPiArICAjICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBsZWdhY3kgbW9kZSBtYXNrIGNv dWxkIGJlIGNoYW5nZWQgYnkNCj4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MLT5TZXRNYXNrKCku IEJ1dCBpdCBpcyByYXJlbHkNCj4gKyAgIyAgbmVlZCBjaGFuZ2UgaXQgZXhjZXB0IHNvbWUgc3Bl Y2lhbCBjYXNlcyBzdWNoIGFzIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBDU00NCj4gYmluYXJ5LCBp dCBzaG91bGQgYmUgc2V0IHRvIDB4RkZGRiB0bw0KPiArICAjICBtYXNrIGFsbCBsZWdhY3kgaW50 ZXJydXB0LiBQbGVhc2UgcmVzdG9yZSB0aGUgb3JpZ2luYWwgbGVnYWN5IG1hc2sgdmFsdWUgaWYN Cj4gY2hhbmdpbmcgaXMgbWFkZSBmb3IgdGhlc2Ugc3BlY2lhbCBjYXNlLjxCUj4NCj4gKyAgIyBA UHJvbXB0IDgyNTkgTGVnYWN5IE1vZGUgbWFzay4NCj4gKw0KPiBnUGNBdENoaXBzZXRQa2dUb2tl blNwYWNlR3VpZC5QY2Q4MjU5TGVnYWN5TW9kZU1hc2t8MHhGRkZGfFVJTlQxNnwNCj4gMHgwMDAw MDAwMQ0KPiArDQo+ICsgICMjIFBjZDgyNTlMZWdhY3lNb2RlRWRnZUxldmVsIGRlZmluZXMgdGhl IGRlZmF1bHQgZWRnZSBsZXZlbCBmb3IgbGVnYWN5DQo+IG1vZGUncyBpbnRlcnJydXB0IGNvbnRy b2xsZXIuDQo+ICsgICMgIEZvciB0aGUgY29ycmVzcG9uZGluZyBiaXRzLCAwID0gRWRnZSB0cmln Z2VyZWQgYW5kIDEgPSBMZXZlbCB0cmlnZ2VyZWQuDQo+ICsgICMgQFByb21wdCA4MjU5IExlZ2Fj eSBNb2RlIGVkZ2UgbGV2ZWwuDQo+ICsNCj4gZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQu UGNkODI1OUxlZ2FjeU1vZGVFZGdlTGV2ZWx8MHgwMDAwfFVJTg0KPiBUMTZ8MHgwMDAwMDAwMg0K PiArDQo+ICsgICMjIEluZGljYXRlcyBpZiB3ZSBuZWVkIGVuYWJsZSBJc2FBY3BpQ29tMSBkZXZp Y2UuPEJSPjxCUj4NCj4gKyAgIyAgIFRSVUUgIC0gRW5hYmxlcyBJc2FBY3BpQ29tMSBkZXZpY2Uu PEJSPg0KPiArICAjICAgRkFMU0UgLSBEb2Vzbid0IGVuYWJsZSBJc2FBY3BpQ29tMSBkZXZpY2Uu PEJSPg0KPiArICAjIEBQcm9tcHQgRW5hYmxlIElzYUFjcGlDb20xIGRldmljZS4NCj4gKw0KPiBn UGNBdENoaXBzZXRQa2dUb2tlblNwYWNlR3VpZC5QY2RJc2FBY3BpQ29tMUVuYWJsZXxUUlVFfEJP T0xFQU58MHgwDQo+IDAwMDAwMDMNCj4gKw0KPiArICAjIyBJbmRpY2F0ZXMgaWYgd2UgbmVlZCBl bmFibGUgSXNhQWNwaUNvbTIgZGV2aWNlLjxCUj48QlI+DQo+ICsgICMgICBUUlVFICAtIEVuYWJs ZXMgSXNhQWNwaUNvbTIgZGV2aWNlLjxCUj4NCj4gKyAgIyAgIEZBTFNFIC0gRG9lc24ndCBlbmFi bGUgSXNhQWNwaUNvbTIgZGV2aWNlLjxCUj4NCj4gKyAgIyBAUHJvbXB0IEVuYWJsZSBJc2FBY3Bp Q29tMTIgZGV2aWNlLg0KPiArDQo+IGdQY0F0Q2hpcHNldFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElz YUFjcGlDb20yRW5hYmxlfFRSVUV8Qk9PTEVBTnwweDANCj4gMDAwMDAwNA0KPiArDQo+ICsgICMj IEluZGljYXRlcyBpZiB3ZSBuZWVkIGVuYWJsZSBJc2FBY3BpUHMyS2V5Ym9hcmQgZGV2aWNlLjxC Uj48QlI+DQo+ICsgICMgICBUUlVFICAtIEVuYWJsZXMgSXNhQWNwaVBzMktleWJvYXJkIGRldmlj ZS48QlI+DQo+ICsgICMgICBGQUxTRSAtIERvZXNuJ3QgZW5hYmxlIElzYUFjcGlQczJLZXlib2Fy ZCBkZXZpY2UuPEJSPg0KPiArICAjIEBQcm9tcHQgRW5hYmxlIElzYUFjcGlQczJLZXlib2FyZCBk ZXZpY2UuDQo+ICsNCj4gZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNhQWNwaVBz MktleWJvYXJkRW5hYmxlfFRSVUV8Qk9PTEUNCj4gQU58MHgwMDAwMDAwNQ0KPiArDQo+ICsgICMj IEluZGljYXRlcyBpZiB3ZSBuZWVkIGVuYWJsZSBJc2FBY3BpUHMyTW91c2UgZGV2aWNlLjxCUj48 QlI+DQo+ICsgICMgICBUUlVFICAtIEVuYWJsZXMgSXNhQWNwaVBzMk1vdXNlIGRldmljZS48QlI+ DQo+ICsgICMgICBGQUxTRSAtIERvZXNuJ3QgZW5hYmxlIElzYUFjcGlQczJNb3VzZSBkZXZpY2Uu PEJSPg0KPiArICAjIEBQcm9tcHQgRW5hYmxlIElzYUFjcGlQczJNb3VzZSBkZXZpY2UuDQo+ICsN Cj4gZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNhQWNwaVBzMk1vdXNlRW5hYmxl fFRSVUV8Qk9PTEVBTg0KPiB8MHgwMDAwMDAwNg0KPiArDQo+ICsgICMjIEluZGljYXRlcyBpZiB3 ZSBuZWVkIGVuYWJsZSBJc2FBY3BpRmxvcHB5QSBkZXZpY2UuPEJSPjxCUj4NCj4gKyAgIyAgIFRS VUUgIC0gRW5hYmxlcyBJc2FBY3BpRmxvcHB5QSBkZXZpY2UuPEJSPg0KPiArICAjICAgRkFMU0Ug LSBEb2Vzbid0IGVuYWJsZSBJc2FBY3BpRmxvcHB5QSBkZXZpY2UuPEJSPg0KPiArICAjIEBQcm9t cHQgRW5hYmxlIElzYUFjcGlGbG9wcHlBIGRldmljZS4NCj4gKw0KPiBnUGNBdENoaXBzZXRQa2dU b2tlblNwYWNlR3VpZC5QY2RJc2FBY3BpRmxvcHB5QUVuYWJsZXxUUlVFfEJPT0xFQU58MA0KPiB4 MDAwMDAwMDcNCj4gKw0KPiArICAjIyBJbmRpY2F0ZXMgaWYgd2UgbmVlZCBlbmFibGUgSXNhQWNw aUZsb3BweUIgZGV2aWNlLjxCUj48QlI+DQo+ICsgICMgICBUUlVFICAtIEVuYWJsZXMgSXNhQWNw aUZsb3BweUIgZGV2aWNlLjxCUj4NCj4gKyAgIyAgIEZBTFNFIC0gRG9lc24ndCBlbmFibGUgSXNh QWNwaUZsb3BweUIgZGV2aWNlLjxCUj4NCj4gKyAgIyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpRmxv cHB5QiBkZXZpY2UuDQo+ICsNCj4gZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNh QWNwaUZsb3BweUJFbmFibGV8VFJVRXxCT09MRUFOfDANCj4geDAwMDAwMDA4DQo+ICsNCj4gK1tQ Y2RzRml4ZWRBdEJ1aWxkLCBQY2RzUGF0Y2hhYmxlSW5Nb2R1bGVdDQo+ICsgICMjIEZGUyBmaWxl bmFtZSB0byBmaW5kIHRoZSBzaGVsbCBhcHBsaWNhdGlvbi4NCj4gKyAgIyBAUHJvbXB0IEZGUyBO YW1lIG9mIFNoZWxsIEFwcGxpY2F0aW9uDQo+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3Vp ZC5QY2RTaGVsbEZpbGV8eyAweDgzLCAweEE1LCAweDA0LCAweDdDLCAweDNFLA0KPiAweDlFLCAw eDFDLCAweDRGLCAweEFELCAweDY1LCAweEUwLCAweDUyLCAweDY4LCAweEQwLCAweEI0LCAweEQx DQo+IH18Vk9JRCp8MHg0MDAwMDAwNA0KPiArDQo+ICsgICMjIElTQSBCdXMgZmVhdHVyZXMgdG8g c3VwcG9ydCBETUEsIFNsYXZlRE1BIGFuZCBJU0EgTWVtb3J5LiA8QlI+PEJSPg0KPiArICAjICBC SVQwIGluZGljYXRlcyBpZiBETUEgaXMgc3VwcG9ydGVkPEJSPg0KPiArICAjICBCSVQxIGluZGlj YXRlcyBpZiBvbmx5IHNsYXZlIERNQSBpcyBzdXBwb3J0ZWQ8QlI+DQo+ICsgICMgIEJJVDIgaW5k aWNhdGVzIGlmIElTQSBtZW1vcnkgaXMgc3VwcG9ydGVkPEJSPg0KPiArICAjICBPdGhlciBCSVRz IGFyZSByZXNldmVkIGFuZCBtdXN0IGJlIHplcm8uDQo+ICsgICMgIElmIG1vcmUgdGhhbiBvbmUg ZmVhdHVyZXMgYXJlIHN1cHBvcnRlZCwgdGhlIGRpZmZlcmVudCBCSVQgd2lsbCBiZSBlbmFibGVk DQo+IGF0IHRoZSBzYW1lIHRpbWUuDQo+ICsgICMgQFByb21wdCBJU0EgQnVzIEZlYXR1cmVzDQo+ ICsgICMgQEV4cHJlc3Npb24gMHg4MDAwMDAwMiB8DQo+IChnU2ltaWNzWDU4UGtnVG9rZW5TcGFj ZUd1aWQuUGNkSXNhQnVzU3VwcG9ydGVkRmVhdHVyZXMgJiAweEY4KSA9PSAwDQo+ICsNCj4gZ1Np bWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUJ1c1N1cHBvcnRlZEZlYXR1cmVzfDB4MDV8 VUlOVDh8MHgwDQo+IDAwMTAwNDANCj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQo+IGRp ZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU21iaW9zUGxh dGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUNCj4gLmgNCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUNCj4gLmgN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uMzhhNzFhMzUyNw0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZQ0KPiAuaA0KPiBAQCAtMCww ICsxLDM4IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgVGhpcyBkcml2ZXIgaW5zdGFsbHMgU01CSU9T IGluZm9ybWF0aW9uIGZvciBPVk1GDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDExLCBCZWkg R3VhbiA8Z2J0anU4NUBnbWFpbC5jb20+DQo+ICsgIENvcHlyaWdodCAoYykgMjAxMSwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArDQo+ICsgIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKw0KPiArI2lm bmRlZiBfU01CSU9TX1BMQVRGT1JNX0RYRV9IXw0KPiArI2RlZmluZSBfU01CSU9TX1BMQVRGT1JN X0RYRV9IXw0KPiArDQo+ICsjaW5jbHVkZSA8UGlEeGUuaD4NCj4gKw0KPiArI2luY2x1ZGUgPFBy b3RvY29sL1NtYmlvcy5oPg0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvU21CaW9zLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv QmFzZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Jb0xp Yi5oPg0KPiArDQo+ICsvKioNCj4gKyAgVmFsaWRhdGVzIHRoZSBTTUJJT1MgZW50cnkgcG9pbnQg c3RydWN0dXJlDQo+ICsNCj4gKyAgQHBhcmFtICBFbnRyeVBvaW50U3RydWN0dXJlICBTTUJJT1Mg ZW50cnkgcG9pbnQgc3RydWN0dXJlDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgVGhlIGVudHJ5 IHBvaW50IHN0cnVjdHVyZSBpcyB2YWxpZA0KPiArICBAcmV0dmFsIEZBTFNFICBUaGUgZW50cnkg cG9pbnQgc3RydWN0dXJlIGlzIG5vdCB2YWxpZA0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4g K0lzRW50cnlQb2ludFN0cnVjdHVyZVZhbGlkICgNCj4gKyAgSU4gU01CSU9TX1RBQkxFX0VOVFJZ X1BPSU5UICAqRW50cnlQb2ludFN0cnVjdHVyZQ0KPiArICApOw0KPiArDQo+ICsjZW5kaWYNCj4g ZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TbWJpb3NQ bGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZQ0KPiAuaW5mDQo+IGIvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlDQo+ IC5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNmFkYWYw YmViNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZQ0KPiAuaW5mDQo+ IEBAIC0wLDAgKzEsNTEgQEANCj4gKyMjIEBmaWxlDQo+ICsjICBUaGlzIGRyaXZlciBpbnN0YWxs cyBTTUJJT1MgaW5mb3JtYXRpb24gZm9yIE9WTUYNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykg MjAxMSwgQmVpIEd1YW4gPGdidGp1ODVAZ21haWwuY29tPg0KPiArIyAgQ29weXJpZ2h0IChjKSAy MDExIC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiArIw0KPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiArIw0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAg ICAgICAgICAgICA9IDB4MDAwMTAwMDUNCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAg ICAgID0gU21iaW9zUGxhdGZvcm1EeGUNCj4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAg ICAgID0gNGIxODMyM2QtMmQ0Mi00YWZhLWI5ZTUtOTE1MTZhNmZlNTA1DQo+ICsgIE1PRFVMRV9U WVBFICAgICAgICAgICAgICAgICAgICA9IERYRV9EUklWRVINCj4gKyAgVkVSU0lPTl9TVFJJTkcg ICAgICAgICAgICAgICAgID0gMS4wDQo+ICsNCj4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAg ICAgICAgID0gU21iaW9zVGFibGVQdWJsaXNoRW50cnkNCj4gKw0KPiArIw0KPiArIyBUaGUgZm9s bG93aW5nIGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVpcmVk IGJ5IHRoZSBidWlsZA0KPiB0b29scy4NCj4gKyMNCj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMg ICAgICAgICAgID0gSUEzMiBYNjQgRUJDIEFSTSBBQVJDSDY0DQo+ICsjDQo+ICsNCj4gK1tTb3Vy Y2VzXQ0KPiArICBTbWJpb3NQbGF0Zm9ybUR4ZS5oDQo+ICsgIFNtYmlvc1BsYXRmb3JtRHhlLmMN Cj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBNZGVNb2R1 bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArICBTaW1pY3NPcGVuQm9hcmRQa2cvU2ltaWNzT3Bl bkJvYXJkUGtnLmRlYw0KPiArICBBZHZhbmNlZEZlYXR1cmVQa2cvQWR2YW5jZWRGZWF0dXJlUGtn LmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFVlZmlCb290U2VydmljZXNUYWJs ZUxpYg0KPiArICBCYXNlTWVtb3J5TGliDQo+ICsgIEJhc2VMaWINCj4gKyAgVWVmaURyaXZlckVu dHJ5UG9pbnQNCj4gKyAgRGVidWdMaWINCj4gKyAgSG9iTGliDQo+ICsgIE1lbW9yeUFsbG9jYXRp b25MaWINCj4gKyAgSW9MaWINCj4gKw0KPiArW1Byb3RvY29sc10NCj4gKyAgZ0VmaVNtYmlvc1By b3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAjIFBST1RPQ09MIEFMV0FZU19DT05TVU1F RA0KPiArDQo+ICtbRGVwZXhdDQo+ICsgIGdFZmlTbWJpb3NQcm90b2NvbEd1aWQNCj4gKw0KPiAt LQ0KPiAyLjE2LjIud2luZG93cy4xDQoNCg==