From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.88; helo=mga01.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 81A8822512148 for ; Fri, 20 Apr 2018 00:49:44 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Apr 2018 00:49:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,300,1520924400"; d="scan'208";a="221960440" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga006.fm.intel.com with ESMTP; 20 Apr 2018 00:49:44 -0700 Received: from fmsmsx123.amr.corp.intel.com (10.18.125.38) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 20 Apr 2018 00:49:43 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx123.amr.corp.intel.com (10.18.125.38) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 20 Apr 2018 00:49:42 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.240]) by shsmsx102.ccr.corp.intel.com ([169.254.2.79]) with mapi id 14.03.0319.002; Fri, 20 Apr 2018 15:49:37 +0800 From: "Ni, Ruiyu" To: Sami Mujawar , "Carsey, Jaben" CC: Stephanie Hughes-Fitt , Ard Biesheuvel , "bugzilla-daemon@bugzilla.tianocore.org" , "edk2-devel@lists.01.org" , Leif Lindholm , "Yao, Jiewen" , nd Thread-Topic: [edk2] [PATCH v5] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTtvo1sTa3Eccne0i0y3PmqqUAVKPRKEmAgAFV44CANUm3gIABwhkQ Date: Fri, 20 Apr 2018 07:49:36 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BC7742D@SHSMSX104.ccr.corp.intel.com> References: <20180308162602.28152-1-sami.mujawar@arm.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v5] ShellPkg: Add acpiview tool to dump ACPI tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Apr 2018 07:49:45 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U29ycnkuDQpJIHRob3VnaHQgdGhlIHBhdGNoIHdhcyBhbHJlYWR5IGNoZWNrZWQgaW4uDQoNCkxl dCBtZSBnbyB0aHJvdWdoIHNvbWUgaW50ZXJuYWwgcHJvY2Vzc2VzIGFuZCB0aGVuIGNoZWNrIHRo ZW0gaW4gZm9yIHlvdS4NCg0KVGhhbmtzL1JheQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IGVkazItZGV2ZWwgPGVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmc+ IE9uIEJlaGFsZiBPZiBTYW1pDQo+IE11amF3YXINCj4gU2VudDogVGh1cnNkYXksIEFwcmlsIDE5 LCAyMDE4IDg6NTggUE0NCj4gVG86IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgQ2Fy c2V5LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT4NCj4gQ2M6IFN0ZXBoYW5pZSBIdWdo ZXMtRml0dCA8U3RlcGhhbmllLkh1Z2hlcy1GaXR0QGFybS5jb20+OyBBcmQgQmllc2hldXZlbA0K PiA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47IGJ1Z3ppbGxhLWRhZW1vbkBidWd6aWxsYS50 aWFub2NvcmUub3JnOyBlZGsyLQ0KPiBkZXZlbEBsaXN0cy4wMS5vcmc7IExlaWYgTGluZGhvbG0g PGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz47IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGlu dGVsLmNvbT47IG5kIDxuZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCB2 NV0gU2hlbGxQa2c6IEFkZCBhY3BpdmlldyB0b29sIHRvIGR1bXAgQUNQSSB0YWJsZXMNCj4gDQo+ IEhpIEphYmVuLCBSYXksDQo+IA0KPiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIG5lZWRlZCBiZWZv cmUgdGhpcyBwYXRjaCBjYW4gYmUgbWVyZ2VkIGluIFNoZWxsUGtnPw0KPiANCj4gVGhlIHBhdGNo IGlzIGN1cnJlbnRseToNCj4gU2lnbmVkLW9mZi1ieTogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3 YXJAYXJtLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogRXZhbiBMbG95ZCA8ZXZhbi5sbG95ZEBhcm0u Y29tPg0KPiBSZXZpZXdlZC1ieTogSmFiZW4gQ2Fyc2V5IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29t Pg0KPiBSZXZpZXdlZC1ieTogUnVpeXUgTmkgPHJ1aXl1Lm5pQGludGVsLmNvbT4NCj4gVGVzdGVk LWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gDQo+IFJl Z2FyZHMsDQo+IA0KPiBTYW1pIE11amF3YXINCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IE5pLCBSdWl5dSA8cnVpeXUubmlASW50ZWwuY29tPg0KPiBTZW50OiAxNiBN YXJjaCAyMDE4IDA3OjEyIEFNDQo+IFRvOiBTYW1pIE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0u Y29tPjsgamFiZW4uY2Fyc2V5QGludGVsLmNvbQ0KPiBDYzogbGVpZi5saW5kaG9sbUBsaW5hcm8u b3JnOyBTdGVwaGFuaWUgSHVnaGVzLUZpdHQgPFN0ZXBoYW5pZS5IdWdoZXMtDQo+IEZpdHRAYXJt LmNvbT47IGppZXdlbi55YW9AaW50ZWwuY29tOyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgbmQN Cj4gPG5kQGFybS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIHY1XSBTaGVsbFBr ZzogQWRkIGFjcGl2aWV3IHRvb2wgdG8gZHVtcCBBQ1BJIHRhYmxlcw0KPiANCj4gT24gMy8xNi8y MDE4IDI6NDggQU0sIFNhbWkgTXVqYXdhciB3cm90ZToNCj4gPiBIaSwNCj4gPg0KPiA+IFBsZWFz ZSBsZXQgbWUga25vdyBpZiB0aGVyZSBpcyBhbnl0aGluZyBtb3JlIHlvdSBuZWVkIGZyb20gbWUg YmVmb3JlIHlvdSBjYW4NCj4gYWNjZXB0IHRoaXMgcGF0Y2guDQo+ID4NCj4gPiBSZWdhcmRzLA0K PiA+DQo+ID4gU2FtaSBNdWphd2FyDQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMu MDEub3JnXSBPbiBCZWhhbGYgT2YNCj4gU2FtaSBNdWphd2FyDQo+ID4gU2VudDogMDggTWFyY2gg MjAxOCAwNDoyNiBQTQ0KPiA+IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+IENjOiBy dWl5dS5uaUBpbnRlbC5jb207IGxlaWYubGluZGhvbG1AbGluYXJvLm9yZzsgU3RlcGhhbmllIEh1 Z2hlcy1GaXR0DQo+IDxTdGVwaGFuaWUuSHVnaGVzLUZpdHRAYXJtLmNvbT47IGppZXdlbi55YW9A aW50ZWwuY29tOw0KPiBqYWJlbi5jYXJzZXlAaW50ZWwuY29tOyBuZCA8bmRAYXJtLmNvbT4NCj4g PiBTdWJqZWN0OiBbZWRrMl0gW1BBVENIIHY1XSBTaGVsbFBrZzogQWRkIGFjcGl2aWV3IHRvb2wg dG8gZHVtcCBBQ1BJIHRhYmxlcw0KPiA+DQo+ID4gW1RoaXMgc2VuZGVyIGZhaWxlZCBvdXIgZnJh dWQgZGV0ZWN0aW9uIGNoZWNrcyBhbmQgbWF5IG5vdCBiZSB3aG8gdGhleQ0KPiBhcHBlYXIgdG8g YmUuIExlYXJuIGFib3V0IHNwb29maW5nIGF0IGh0dHA6Ly9ha2EubXMvTGVhcm5BYm91dFNwb29m aW5nXQ0KPiA+DQo+ID4gVGhpcyBwcm9ncmFtIGlzIHByb3ZpZGVkIHRvIGFsbG93IGV4YW1pbmF0 aW9uIG9mIEFDUEkgdGFibGUgY29udGVudHMNCj4gPiBmcm9tIHRoZSBVRUZJIFNoZWxsLiAgVGhp cyBjYW4gaGVscCB3aXRoIGludmVzdGlnYXRpb25zLCBlc3BlY2lhbGx5IGF0DQo+ID4gdGhhdCBz dGFnZSB3aGVyZSB0aGUgdGFibGVzIGFyZSBub3QgZW5hYmxpbmcgYW4gT1MgdG8gYm9vdC4NCj4g PiBUaGUgcHJvZ3JhbSBpcyBub3QgZXhoYXVzdGl2ZSwgYW5kIG9ubHkgZW5jYXBzdWxhdGVzIGRl dGFpbGVkIGtub3dsZWRnZQ0KPiA+IG9mIGEgbGltaXRlZCBudW1iZXIgb2YgdGFibGUgdHlwZXMu DQo+ID4NCj4gPiBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBkaXNwbGF5IHRoZSBjb250ZW50IG9m IGFsbCB0YWJsZXMgaW5zdGFsbGVkLg0KPiA+ICdLbm93bicgdGFibGUgdHlwZXMgd2lsbCBiZSBw YXJzZWQgYW5kIGRpc3BsYXllZCB3aXRoIGRlc2NyaXB0aW9ucyBhbmQNCj4gPiBmaWVsZCB2YWx1 ZXMuICBXaGVyZSBhcHByb3ByaWF0ZSBhIGRlZ3JlZSBvZiBjb25zaXN0ZW5jeSBjaGVja2luZyBp cw0KPiA+IGRvbmUgYW5kIGVycm9ycyBtYXkgYmUgcmVwb3J0ZWQgaW4gdGhlIG91dHB1dC4NCj4g PiBPdGhlciB0YWJsZSB0eXBlcyB3aWxsIGJlIGRpc3BsYXllZCBhcyBhbiBhcnJheSBvZiBIZXhh ZGVjaW1hbCBieXRlcy4NCj4gPg0KPiA+IFRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLCB0aGUgLXMg YW5kIC1kIG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgYQ0KPiA+IGJpbmFyeSBmaWxl IGltYWdlIG9mIGEgdGFibGUgdGhhdCBjYW4gYmUgY29waWVkIGVsc2V3aGVyZSBmb3INCj4gPiBp bnZlc3RpZ2F0aW9uIHVzaW5nIHRvb2xzIHN1Y2ggYXMgdGhvc2UgcHJvdmlkZWQgYnkgYWNwaWNh Lm9yZy4gIFRoaXMgaXMNCj4gPiBlc3BlY2lhbGx5IHJlbGV2YW50IGZvciBBTUwgdHlwZSB0YWJs ZXMgbGlrZSBEU0RUIGFuZCBTU0RULg0KPiA+DQo+ID4gVGhlIGluc3BpcmF0aW9uIGZvciB0aGlz IGlzIHRoZSBleGlzdGluZyBzbWJpb3N2aWV3IERlYnVnMSBTaGVsbA0KPiA+IGNvbW1hbmQuDQo+ ID4NCj4gPiBNYW55IHRhYmxlcyBhcmUgbm90IGV4cGxpY2l0bHkgaGFuZGxlZCwgaW4gcGFydCBi ZWNhdXNlIG5vIGV4YW1wbGVzIGFyZQ0KPiA+IGF2YWlsYWJsZSBmb3Igb3VyIHRlc3RpbmcuDQo+ ID4NCj4gPiBUaGUgcHJvZ3JhbSBpcyBkZXNpZ25lZCB0byBiZSBleHRlbmRlZCB0byBuZXcgdGFi bGVzIHdpdGggbWluaW1hbA0KPiA+IGVmZm9ydCwgYW5kIGNvbnRyaWJ1dGlvbnMgYXJlIGludml0 ZWQuDQo+ID4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBB Z3JlZW1lbnQgMS4xDQo+ID4gU2lnbmVkLW9mZi1ieTogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3 YXJAYXJtLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBFdmFuIExsb3lkIDxldmFuLmxsb3lkQGFy bS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IEphYmVuIENhcnNleSA8amFiZW4uY2Fyc2V5QGludGVs LmNvbT4NCj4gPiAtLS0NCj4gPg0KPiA+IFRoZSB1cGRhdGVkIGNoYW5nZXMgY2FuIGJlIHZpZXdl ZCBhdDoNCj4gPiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zYW1pbXVqYXdhci9lZGsyL3RyZWUvMTg4 X2FjcGl2aWV3X3Y1DQo+ID4NCj4gPiBOb3RlczoNCj4gPiAgICAgIHY1Og0KPiA+ICAgICAgLSBC dXQgZm9yIG5vdywgbGV0J3MgcmVtb3ZlIGFueSBwdWJsaWMgbGlicmFyeSBBUElzLg0KPiA+ICAg ICAgICBBZGRpbmcgcHVibGljIEFQSXMgaXMgdmVyeSBlYXN5LiBCdXQgcmVtb3ZpbmcgdGhlbSBp cw0KPiA+ICAgICAgICBhbG1vc3QgaW1wb3NzaWJsZS4NCj4gPiAgICAgICAgSWYgd2UgdGhpbmsg aXQncyB2YWx1YWJsZSB0byBhZGQgdGhlbSwgd2UgY2FuIGFkZCB0aGVtDQo+ID4gICAgICAgIGlu IGZ1dHVyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgW1JBWV0NCj4gPiAgICAgIC0gUmVtb3ZlZCBwdWJsaWMgbGlicmFyeSBBUEkncy4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTQU1JXQ0KPiA+DQo+ID4gICAgICB2NDoN Cj4gPiAgICAgIC0gRmlyc3RseSwgcHVibGljIGxpYnJhcnkgQVBJcyBzaG91bGQgaGF2ZSAiRUZJ QVBJIiBkZWNvcmF0b3IuICAgICBbUkFZXQ0KPiA+ICAgICAgLSBSZXN1Ym1pdHRpbmcgdXBkYXRl ZCBwYXRjaCB3aXRoICJFRklBUEkiIGRlY29yYXRvci4gICAgICAgICAgICAgW1NBTUldDQo+ID4N Cj4gPiAgICAgIC0gU2Vjb25kbHksIEkgYW0gd29uZGVyaW5nIGlmIGl0J3MgcG9zc2libGUgdG8g bm90IGV4cG9zZSBhbnkNCj4gPiAgICAgICAgbGlicmFyeSBjbGFzc2VzIGZvciBoYW5kbGluZyBv ZiBtb3JlIEFDUEkgdGFibGVzLg0KPiA+ICAgICAgICBJIGFncmVlIHRvIGltcGxlbWVudCBVZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIgaW4gYSB3YXkgZm9yIGVhc3kNCj4gPiAgICAgICAgZXh0 ZW5zaW9uIGZvciBoYW5kbGluZyBvZiBtb3JlIEFDUEkgdGFibGVzLCBidXQgSSBwcmVmZXIgdG8g a2VlcCB0aGUNCj4gPiAgICAgICAgaW50ZXJmYWNlcyBpbnRlcm5hbGx5IGluc2lkZSB0aGUgVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLiAgICBbUkFZXQ0KPiA+ICAgICAgLSBVcGRhdGVkIGFz IHN1Z2dlc3RlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NB TUldDQo+ID4NCj4gPiAgICAgIHYzOg0KPiA+ICAgICAgLSBDYW4gdGhlIGluZGl2aWR1YWwgImNo aWxkIiBsaWJyYXJpZXMgYmUgcGxhY2VkIGludG8NCj4gPiAgICAgICAgc3ViZGlyZWN0b3JpZXMg dW5kZXIgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliIGRpcmVjdG9yeQ0KPiA+ICAgICAgICBm b3IgY2xlYXIgc2VwYXJhdGlvbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbSkFCRU5dDQo+ID4gICAgICAtIFBhdGNoIHVwZGF0ZWQgdG8gbW92ZSBpbmRpdmlkdWFs ICJjaGlsZCIgbGlicmFyaWVzIGludG8NCj4gPiAgICAgICAgc3ViZGlyZWN0b3JpZXMuICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTQU1JXQ0KPiA+DQo+ ID4gICAgICAtIEluIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYixjIHdoYXQncyB0aGUgbW90 aXZhdGlvbiBmb3IgYWxsDQo+ID4gICAgICAgIHRoZSB3cmFwcGVycyBhcm91bmQgcHJpbnQ/IEkg c2VlIHRoYXQgc29tZSBhcmUgZm9yIG1lbW9yeSBhY2Nlc3MNCj4gPiAgICAgICAgcmVzdHJpY3Rp b25zLCBidXQgdGhlIHJlc3Q/ICBQcmludEd1aWQsIGxvb2tzIHRoZSBzYW1lIGFzIHVzaW5nDQo+ ID4gICAgICAgICVnIHdpdGggUHJpbnQoKS4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFtKQUJFTl0NCj4gPiAgICAgIC0gVGhlIHByaW50IHdyYXBwZXJzIGVu YWJsZSBhIGNvbW1vbiBzdHlsZWQgZm9ybWF0dGVkIHByaW50aW5nIGZvcg0KPiA+ICAgICAgICB0 aGUgQUNQSSBmaWVsZHMuIFRoZSBBQ1BJdmlldyB0YWJsZSBwYXJzaW5nIGZyYW1ld29yayB1dGls aXplcyBhDQo+ID4gICAgICAgIHRhYmxlLWRyaXZlbiBhcHByb2FjaCBmb3IgcGFyc2luZyB0aGUg dGFibGVzIGFuZCB0aGVzZSBmdW5jdGlvbnMNCj4gPiAgICAgICAgYXJlIGludm9rZWQgYnkgdGhl IGZyYW1ld29yayBiYXNlZCBvbiB0aGUgZmllbGQgc2l6ZSBhbmQgdHlwZS4NCj4gPiAgICAgICAg SG93ZXZlciB5b3UgYXJlIHJpZ2h0LCBpdCBpcyBzdXBlcmZsdW91cyBpbiB0aGUgY2FzZSBvZiBQ cmludEd1aWQNCj4gPiAgICAgICAgKFdoaWNoIGhhcyBub3cgYmVlbiByZW1vdmVkIGluIHRoZSB1 cGRhdGVkIHBhdGNoKS4gICAgICAgICAgICAgIFtTQU1JXQ0KPiA+DQo+ID4gICAgICAtIERvIHdl IHdhbnQgdG8gY2hhbmdlIHRoZSBtYWluIGVudHJ5cG9pbnQgdG8gYSBEeW5hbWljQ29tbWFuZA0K PiA+ICAgICAgICBzaW5jZSB0aGlzIGNvbW1hbmQgaXMgbm90IGluIHRoZSBzaGVsbCBzcGVjPyBJ ZiB5ZXMsIGRvIHdlIHdhbnQNCj4gPiAgICAgICAgdG8gZG8gdGhhdCBmaXJzdCBvciBhZnRlcj8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0pBQkVOXQ0KPiA+ICAgICAgLSBU aGUgRUNSIDE3ODQgZm9yIEFDUEl2aWV3IGFwcGVhcnMgdG8gYmUgJ0FwcHJvdmVkIGFzIG5ldyBj b250ZW50DQo+ID4gICAgICAgIGZvciB0aGUgU2hlbGwgU3BlYy4nIGluIE1hbnRpcywNCj4gPiAg ICAgICAgc2VlIGh0dHBzOi8vbWFudGlzLnVlZmkub3JnL21hbnRpcy92aWV3LnBocD9pZD0xNzg0 Lg0KPiA+ICAgICAgICBBcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSBFQ1IgY2hhbmdlIG5lZWRzIHRv IGJlIHByb3BhZ2F0ZWQgdG8gdGhlDQo+ID4gICAgICAgIFNoZWxsIHNwZWNpZmljYXRpb24gYW5k IGlzIHBlbmRpbmcuIEluIGxpZ2h0IG9mIHRoZSBhYm92ZSwgSSB0aGluaw0KPiA+ICAgICAgICB0 aGF0IGFkZGluZyBEeW5hbWljQ29tbWFuZCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkuIFBsZWFz ZSBsZXQgbWUNCj4gPiAgICAgICAga25vdyBpZiB5b3UgZmVlbCBvdGhlcndpc2UuICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTQU1JXQ0KPiA+DQo+ID4gICBTaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMgICAgICAgICAg ICAgICAgICAgIHwNCj4gNjYyICsrKysrKysrKysrKysrKysrDQo+ID4gICBTaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmggICAgICAgICAgICAg ICAgICAgIHwNCj4gNzU5ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gICBTaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIuYyAgICAgICAg ICAgICAgIHwNCj4gMjE1ICsrKysrKw0KPiA+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmggICAgICAgICAgICAgICB8DQo+IDEy NiArKysrDQo+ID4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9BY3BpVmlldy5jICAgICAgICAgICAgICAgICAgICAgIHwgNjAxDQo+ICsrKysrKysrKysrKysr KysNCj4gPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0Fj cGlWaWV3LmggICAgICAgICAgICAgICAgICAgICAgfCAxMDMNCj4gKysrDQo+ID4gICBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBh cnNlci5jDQo+IHwgIDY5ICsrDQo+ID4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jDQo+IHwgMjQyICsrKysrKysN Cj4gPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvRHNkdC9Ec2R0UGFyc2VyLmMNCj4gfCAgNDcgKysNCj4gPiAgIFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLmMNCj4g fCAyNjEgKysrKysrKw0KPiA+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0KPiB8IDI5MyArKysrKysrKw0KPiA+ ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9J b3J0L0lvcnRQYXJzZXIuYw0KPiB8IDcwMCArKysrKysrKysrKysrKysrKysNCj4gPiAgIFNoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0 UGFyc2VyLmMNCj4gfCAzMTMgKysrKysrKysNCj4gPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMNCj4gfCAgOTQg KysrDQo+ID4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL1JzZHAvUnNkcFBhcnNlci5jDQo+IHwgMTY5ICsrKysrDQo+ID4gICBTaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNl ci5jICAgICAgIHwNCj4gMTQyICsrKysNCj4gPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4gfCAxNjggKysr KysNCj4gPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvU3JhdC9TcmF0UGFyc2VyLmMNCj4gfCAzMzAgKysrKysrKysrDQo+ID4gICBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBh cnNlci5jDQo+IHwgIDQ3ICsrDQo+ID4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci5jDQo+IHwgMTUzICsrKysNCj4g Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWINCj4gLmMgICB8IDE2NyArKysrKw0KPiA+DQo+IFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYg0KPiAuaCAgIHwgIDMyICsNCj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gLmluZiB8 ICA3NCArKw0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiAudW5pIHwgMTI3ICsrKysNCj4gPiAg IFNoZWxsUGtnL1NoZWxsUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0NCj4gPiAgIDI1IGZpbGVzIGNoYW5nZWQsIDU4 OTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuYw0K PiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJz ZXIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE4ZjM4NmZkYTE2NTE0NmJhZDQ5ZjllZA0K PiBiYzExMWQ0ZTIxOGRiOTgNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5jDQo+ID4gQEAg LTAsMCArMSw2NjIgQEANCj4gPiArLyoqDQo+ID4gKyAgQUNQSSBwYXJzZXINCj4gPiArDQo+ID4g KyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQo+ID4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cw0KPiA+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiA+ICsgIHdoaWNoIGFjY29t cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBt YXkgYmUNCj4gZm91bmQgYXQNCj4gPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+ID4gKw0KPiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsgIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0K PiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFVl ZmkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiArI2luY2x1ZGUgIkFjcGlQ YXJzZXIuaCINCj4gPiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ID4gKw0KPiA+ICtTVEFUSUMg VUlOVDMyICAgZ0luZGVudDsNCj4gPiArU1RBVElDIFVJTlQzMiAgIG1UYWJsZUVycm9yQ291bnQ7 DQo+ID4gK1NUQVRJQyBVSU5UMzIgICBtVGFibGVXYXJuaW5nQ291bnQ7DQo+ID4gKw0KPiA+ICsv KiogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnRlciB0byBa ZXJvLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK1Jlc2V0RXJyb3JDb3VudCAoDQo+ID4gKyAg Vk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1UYWJsZUVycm9yQ291bnQgPSAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxl IGVycm9yIGNvdW50Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9m IGVycm9ycyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMuDQo+ID4gKyovDQo+ID4gK1VJTlQz Mg0KPiA+ICtHZXRFcnJvckNvdW50ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgcmV0dXJuIG1UYWJsZUVycm9yQ291bnQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBU aGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIgdG8gWmVy by4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtSZXNldFdhcm5pbmdDb3VudCAoDQo+ID4gKyAg Vk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1UYWJsZVdhcm5pbmdDb3VudCA9IDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFi bGUgd2FybmluZyBjb3VudC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3Vu dCBvZiB3YXJuaW5nIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gPiArKi8NCj4gPiAr VUlOVDMyDQo+ID4gK0dldFdhcm5pbmdDb3VudCAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIHJldHVybiBtVGFibGVXYXJuaW5nQ291bnQ7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291 bnRlci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArSW5jcmVtZW50RXJy b3JDb3VudCAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1UYWJsZUVy cm9yQ291bnQrKzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVt ZW50cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIuDQo+ID4gKyovDQo+ID4gK1ZPSUQN Cj4gPiArRUZJQVBJDQo+ID4gK0luY3JlbWVudFdhcm5pbmdDb3VudCAoDQo+ID4gKyAgVk9JRA0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIG1UYWJsZVdhcm5pbmdDb3VudCsrOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBjaGVj a3N1bS4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgY2hlY2tzdW0g Zm9yIHRoZSBBQ1BJIHRhYmxlIGFuZCBvcHRpb25hbGx5DQo+ID4gKyAgcHJpbnRzIHRoZSBzdGF0 dXMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIExvZyAgICAgSWYgVFJVRSBsb2cgdGhlIHN0 YXR1cyBvZiB0aGUgY2hlY2tzdW0uDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIExl bmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRS VUUgICAgICAgIFRoZSBjaGVja3N1bSBpcyBPSy4NCj4gPiArICBAcmV0dmFsIEZBTFNFICAgICAg IFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ID4gKyovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJ DQo+ID4gK1ZlcmlmeUNoZWNrc3VtICgNCj4gPiArICBJTiBCT09MRUFOIExvZywNCj4gPiArICBJ TiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIgIExlbmd0aA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIFVJTlROIEJ5dGVDb3VudCA9IDA7DQo+ID4gKyAgVUlOVDggQ2hlY2tzdW0gPSAw Ow0KPiA+ICsgIFVJTlROIE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+ICsNCj4gPiArICB3aGlsZSAo Qnl0ZUNvdW50IDwgTGVuZ3RoKSB7DQo+ID4gKyAgICBDaGVja3N1bSArPSAqKFB0cisrKTsNCj4g PiArICAgIEJ5dGVDb3VudCsrOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKExvZykgew0K PiA+ICsgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0cmlidXRl Ow0KPiA+ICsgICAgaWYgKENoZWNrc3VtID09IDApIHsNCj4gPiArICAgICAgaWYgKEdldENvbG91 ckhpZ2hsaWdodGluZyAoKSkgew0KPiA+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1 dGUgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKEVGSV9HUkVFTiwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+ PjQpKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICAgIH0NCj4gPiAr ICAgICAgUHJpbnQgKEwiXG5cblRhYmxlIENoZWNrc3VtIDogT0tcblxuIik7DQo+ID4gKyAgICB9 IGVsc2Ugew0KPiA+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgICBp ZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ID4gKyAgICAgICAgZ1NULT5Db25PdXQt PlNldEF0dHJpYnV0ZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUiAoRUZJX1JFRCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklU NXxCSVQ2KSk+PjQpKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICAg IH0NCj4gPiArICAgICAgUHJpbnQgKEwiXG5cblRhYmxlIENoZWNrc3VtIDogRkFJTEVEICgweCVY KVxuXG4iLCBDaGVja3N1bSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBpZiAoR2V0Q29sb3VySGln aGxpZ2h0aW5nICgpKSB7DQo+ID4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdT VC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICByZXR1cm4gKENoZWNrc3VtID09IDApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KiogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBhIHJhdyBkYXRhIGR1bXAgb2YgdGhlIEFDUEkgdGFi bGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIHRhYmxlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBMZW5ndGggIFRoZSBs ZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4g PiArRHVtcFJhdyAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiArICBJTiBVSU5UMzIgTGVu Z3RoDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVE4gQnl0ZUNvdW50ID0gMDsNCj4gPiAr ICBVSU5UTiBQYXJ0TGluZUNoYXJzOw0KPiA+ICsgIFVJTlROIEFzY2lpQnVmZmVySW5kZXggPSAw Ow0KPiA+ICsgIENIQVI4IEFzY2lpQnVmZmVyWzE3XTsNCj4gPiArDQo+ID4gKyAgUHJpbnQgKEwi QWRkcmVzcyAgOiAweCVwXG4iLCBQdHIpOw0KPiA+ICsgIFByaW50IChMIkxlbmd0aCAgIDogJWRc biIsIExlbmd0aCk7DQo+ID4gKw0KPiA+ICsgIHdoaWxlIChCeXRlQ291bnQgPCBMZW5ndGgpIHsN Cj4gPiArICAgIGlmICgoQnl0ZUNvdW50ICYgMHgwRikgPT0gMCkgew0KPiA+ICsgICAgICBBc2Np aUJ1ZmZlcltBc2NpaUJ1ZmZlckluZGV4XSA9ICdcMCc7DQo+ID4gKyAgICAgIFByaW50IChMIiAg JWFcbiUwOFggOiAiLCBBc2NpaUJ1ZmZlciwgQnl0ZUNvdW50KTsNCj4gPiArICAgICAgQXNjaWlC dWZmZXJJbmRleCA9IDA7DQo+ID4gKyAgICB9IGVsc2UgaWYgKChCeXRlQ291bnQgJiAweDA3KSA9 PSAwKSB7DQo+ID4gKyAgICAgIFByaW50IChMIi0gIik7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ ICsgICAgaWYgKCgqUHRyID49ICcgJykgJiYgKCpQdHIgPCAweDdGKSkgew0KPiA+ICsgICAgICBB c2NpaUJ1ZmZlcltBc2NpaUJ1ZmZlckluZGV4KytdID0gKlB0cjsNCj4gPiArICAgIH0gZWxzZSB7 DQo+ID4gKyAgICAgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXgrK10gPSAnLic7DQo+ID4g KyAgICB9DQo+ID4gKw0KPiA+ICsgICAgUHJpbnQgKEwiJTAyWCAiLCAqUHRyKyspOw0KPiA+ICsN Cj4gPiArICAgIEJ5dGVDb3VudCsrOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gSnVzdGlm eSB0aGUgZmluYWwgbGluZSB1c2luZyBzcGFjZXMgYmVmb3JlIHByaW50aW5nDQo+ID4gKyAgLy8g dGhlIEFTQ0lJIGRhdGEuDQo+ID4gKyAgUGFydExpbmVDaGFycyA9IChMZW5ndGggJiAweDBGKTsN Cj4gPiArICBpZiAoUGFydExpbmVDaGFycyAhPSAwKSB7DQo+ID4gKyAgICBQYXJ0TGluZUNoYXJz ID0gNDggLSAoUGFydExpbmVDaGFycyAqIDMpOw0KPiA+ICsgICAgaWYgKChMZW5ndGggJiAweDBG KSA8PSA4KSB7DQo+ID4gKyAgICAgIFBhcnRMaW5lQ2hhcnMgKz0gMjsNCj4gPiArICAgIH0NCj4g PiArICAgIHdoaWxlIChQYXJ0TGluZUNoYXJzID4gMCkgew0KPiA+ICsgICAgICBQcmludCAoTCIg Iik7DQo+ID4gKyAgICAgIFBhcnRMaW5lQ2hhcnMtLTsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIC8vIFByaW50IEFTQ0lJIGRhdGEgZm9yIHRoZSBmaW5hbCBsaW5lLg0KPiA+ ICsgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXhdID0gJ1wwJzsNCj4gPiArICBQcmludCAo TCIgICVhIiwgQXNjaWlCdWZmZXIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5j dGlvbiB0cmFjZXMgMSBieXRlIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiA+ICsgICAg Zm9ybWF0IHN0cmluZy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9y bWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyovDQo+ID4gK1ZP SUQNCj4gPiArRUZJQVBJDQo+ID4gK0R1bXBVaW50OCAoDQo+ID4gKyAgSU4gQ09OU1QgQ0hBUjE2 KiBGb3JtYXQsDQo+ID4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBQcmludCAoRm9ybWF0LCAqUHRyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRo aXMgZnVuY3Rpb24gdHJhY2VzIDIgYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhlDQo+ ID4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBGb3JtYXQg IFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArKi8N Cj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRHVtcFVpbnQxNiAoDQo+ID4gKyAgSU4gQ09O U1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBQcmludCAoRm9ybWF0LCAqKFVJTlQxNiopUHRyKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgYnl0ZXMgb2YgZGF0YSBhcyBz cGVjaWZpZWQgaW4gdGhlDQo+ID4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRh Lg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRHVtcFVpbnQz MiAoDQo+ID4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4gKyAgSU4gVUlOVDgqICAg ICAgICBQdHINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBQcmludCAoRm9ybWF0LCAqKFVJTlQz MiopUHRyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDgg Ynl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ID4gKyAgICBmb3JtYXQgc3RyaW5n Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZv ciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklB UEkNCj4gPiArRHVtcFVpbnQ2NCAoDQo+ID4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ ID4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICAvLyBT b21lIGZpZWxkcyBhcmUgbm90IGFsaWduZWQgYW5kIHRoaXMgY2F1c2VzIGFsaWdubWVudCBmYXVs dHMNCj4gPiArICAvLyBvbiBBUk0gcGxhdGZvcm1zIGlmIHRoZSBjb21waWxlciBnZW5lcmF0ZXMg TERSRCBpbnN0cnVjdGlvbnMuDQo+ID4gKyAgLy8gUGVyZm9ybSB3b3JkIGFjY2VzcyBzbyB0aGF0 IExEUkQgaW5zdHJ1Y3Rpb25zIGFyZSBub3QgZ2VuZXJhdGVkLg0KPiA+ICsgIFVJTlQ2NCBWYWwg PSAqKFVJTlQzMiopKFB0ciArIHNpemVvZiAoVUlOVDMyKSk7DQo+ID4gKyAgVmFsIDw8PSAzMjsN Cj4gPiArICBWYWwgfD0gKihVSU5UMzIqKVB0cjsNCj4gPiArDQo+ID4gKyAgUHJpbnQgKEZvcm1h dCwgVmFsKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDMg Y2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiA+ICsgICBmb3JtYXRlZCB1c2lu ZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4gKw0KPiA+ICsgIElmIG5vIGZv cm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KPiA+ICsN Cj4gPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRy YWNpbmcgdGhlIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0K PiA+ICtEdW1wM0NoYXJzICgNCj4gPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05B TCwNCj4gPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IFByaW50ICgNCj4gPiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyIs DQo+ID4gKyAgICBQdHJbMF0sDQo+ID4gKyAgICBQdHJbMV0sDQo+ID4gKyAgICBQdHJbMl0NCj4g PiArICAgICk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0 IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gPiArICAgZm9ybWF0ZWQgdXNp bmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiA+ICsNCj4gPiArICBJZiBubyBm b3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0 cmFjaW5nIHRoZSBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkN Cj4gPiArRHVtcDRDaGFycyAoDQo+ID4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9O QUwsDQo+ID4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBQcmludCAoDQo+ID4gKyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMl YyIsDQo+ID4gKyAgICBQdHJbMF0sDQo+ID4gKyAgICBQdHJbMV0sDQo+ID4gKyAgICBQdHJbMl0s DQo+ID4gKyAgICBQdHJbM10NCj4gPiArICAgICk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBU aGlzIGZ1bmN0aW9uIHRyYWNlcyA2IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkN Cj4gPiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0K PiA+ICsNCj4gPiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0 IG11c3QgYmUgTlVMTC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25h bCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArKi8NCj4g PiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRHVtcDZDaGFycyAoDQo+ID4gKyAgSU4gQ09OU1Qg Q0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBQcmludCAoDQo+ID4gKyAgICAoRm9ybWF0ICE9IE5VTEwp ID8gRm9ybWF0IDogTCIlYyVjJWMlYyVjJWMiLA0KPiA+ICsgICAgUHRyWzBdLA0KPiA+ICsgICAg UHRyWzFdLA0KPiA+ICsgICAgUHRyWzJdLA0KPiA+ICsgICAgUHRyWzNdLA0KPiA+ICsgICAgUHRy WzRdLA0KPiA+ICsgICAgUHRyWzVdDQo+ID4gKyAgICApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25h bGx5DQo+ID4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmll ZC4NCj4gPiArDQo+ID4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZv cm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0 aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiArICBAcGFyYW0g W2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyov DQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0R1bXA4Q2hhcnMgKA0KPiA+ICsgIElOIENP TlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRy DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgUHJpbnQgKA0KPiA+ICsgICAgKEZvcm1hdCAhPSBO VUxMKSA/IEZvcm1hdCA6IEwiJWMlYyVjJWMlYyVjJWMlYyIsDQo+ID4gKyAgICBQdHJbMF0sDQo+ ID4gKyAgICBQdHJbMV0sDQo+ID4gKyAgICBQdHJbMl0sDQo+ID4gKyAgICBQdHJbM10sDQo+ID4g KyAgICBQdHJbNF0sDQo+ID4gKyAgICBQdHJbNV0sDQo+ID4gKyAgICBQdHJbNl0sDQo+ID4gKyAg ICBQdHJbN10NCj4gPiArICAgICk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0 aW9uIGluZGVudHMgYW5kIHByaW50cyB0aGUgQUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiA+ICsN Cj4gPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0 byB0aGUgZ2xvYmFsIHRhYmxlIGluZGVudC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBUaGUgZ2xvYmFsIHRhYmxlIGluZGVudCBpcyAwIGJ5IGRlZmF1bHQ7IGhvd2V2ZXINCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHZhbHVlIGlzIHVwZGF0ZWQgb24gZW50cnkg dG8gdGhlIFBhcnNlQWNwaSgpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgYWRk aW5nIHRoZSBpbmRlbnQgdmFsdWUgcHJvdmlkZWQgdG8gUGFyc2VBY3BpKCkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBhbmQgcmVzdG9yZWQgYmFjayBvbiBleGl0Lg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFRoZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50IGluIHRoZSBv dXRwdXQgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbnQgb24gZnJv bSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4NCj4gPiArICBAcGFyYW0gW2luXSBGaWVs ZE5hbWUgICBQb2ludGVyIHRvIHRoZSBGaWVsZCBOYW1lLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ ID4gK0VGSUFQSQ0KPiA+ICtQcmludEZpZWxkTmFtZSAoDQo+ID4gKyAgSU4gVUlOVDMyICAgICAg ICAgSW5kZW50LA0KPiA+ICsgIElOIENPTlNUIENIQVIxNiogIEZpZWxkTmFtZQ0KPiA+ICspDQo+ ID4gK3sNCj4gPiArICBQcmludCAoDQo+ID4gKyAgICBMIiUqYSUtKnMgOiAiLA0KPiA+ICsgICAg Z0luZGVudCArIEluZGVudCwNCj4gPiArICAgICIiLA0KPiA+ICsgICAgKE9VVFBVVF9GSUVMRF9D T0xVTU5fV0lEVEggLSBnSW5kZW50IC0gSW5kZW50KSwNCj4gPiArICAgIEZpZWxkTmFtZQ0KPiA+ ICsgICAgKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0 byBwYXJzZSBhbiBBQ1BJIHRhYmxlIGJ1ZmZlci4NCj4gPiArDQo+ID4gKyAgVGhlIEFDUEkgdGFi bGUgYnVmZmVyIGlzIHBhcnNlZCB1c2luZyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRp b24NCj4gPiArICBzcGVjaWZpZWQgYnkgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEFDUElfUEFS U0VSIGVsZW1lbnRzLiBUaGlzIHBhcnNlcg0KPiA+ICsgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91 Z2ggZWFjaCBpdGVtIG9uIHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBhbmQgbG9ncyB0aGUNCj4gPiAr ICBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBjYW4gb3B0 aW9uYWxseSBiZSB1c2VkIHRvIHBhcnNlIEFDUEkgdGFibGVzIGFuZCBmZXRjaCBzcGVjaWZpYw0K PiA+ICsgIGZpZWxkIHZhbHVlcy4gVGhlIEl0ZW1QdHIgbWVtYmVyIG9mIHRoZSBBQ1BJX1BBUlNF UiBzdHJ1Y3R1cmUgKHdoZXJlIHVzZWQpDQo+ID4gKyAgaXMgdXBkYXRlZCBieSB0aGlzIHBhcnNl ciBmdW5jdGlvbiB0byBwb2ludCB0byB0aGUgc2VsZWN0ZWQgZmllbGQgZGF0YQ0KPiA+ICsgIChl LmcuIHVzZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3RlZCBmaWVsZHMpLg0KPiA+ICsNCj4g PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgVHJhY2UgdGhlIEFDUEkgZmllbGRzIFRSVUUg ZWxzZSBvbmx5IHBhcnNlIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJs ZS4NCj4gPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICAgTnVtYmVyIG9mIHNwYWNlcyB0byBp bmRlbnQgdGhlIG91dHB1dC4NCj4gPiArICBAcGFyYW0gW2luXSBBc2NpaU5hbWUgICAgT3B0aW9u YWwgcG9pbnRlciB0byBhbiBBU0NJSSBzdHJpbmcgdGhhdCBkZXNjcmliZXMNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gPiArICBAcGFy YW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4N Cj4gPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIgcG9p bnRlZCBieSBQdHIuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyICAgICAgIFBvaW50ZXIgdG8g YW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgc3RydWN0dXJlIHRoYXQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSB0YWJsZSBiZWluZyBwYXJzZWQuDQo+ID4gKyAg QHBhcmFtIFtpbl0gUGFyc2VySXRlbXMgIE51bWJlciBvZiBpdGVtcyBpbiB0aGUgQUNQSV9QQVJT RVIgYXJyYXkuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4N Cj4gPiArKi8NCj4gPiArVUlOVDMyDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGkgKA0KPiA+ ICsgIElOIEJPT0xFQU4gICAgICAgICAgICBUcmFjZSwNCj4gPiArICBJTiBVSU5UMzIgICAgICAg ICAgICAgSW5kZW50LA0KPiA+ICsgIElOIENPTlNUIENIQVI4KiAgICAgICBBc2NpaU5hbWUgT1BU SU9OQUwsDQo+ID4gKyAgSU4gVUlOVDgqICAgICAgICAgICAgIFB0ciwNCj4gPiArICBJTiBVSU5U MzIgICAgICAgICAgICAgTGVuZ3RoLA0KPiA+ICsgIElOIENPTlNUIEFDUElfUEFSU0VSKiBQYXJz ZXIsDQo+ID4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIFBhcnNlckl0ZW1zDQo+ID4gKykNCj4g PiArew0KPiA+ICsgIFVJTlQzMiAgSW5kZXg7DQo+ID4gKyAgVUlOVDMyICBPZmZzZXQgPSAwOw0K PiA+ICsNCj4gPiArICAvLyBJbmNyZW1lbnQgdGhlIEluZGVudA0KPiA+ICsgIGdJbmRlbnQgKz0g SW5kZW50Ow0KPiA+ICsNCj4gPiArICBpZiAoVHJhY2UgJiYgKEFzY2lpTmFtZSAhPSBOVUxMKSl7 DQo+ID4gKyAgICBCT09MRUFOIEhpZ2hMaWdodCA9IEdldENvbG91ckhpZ2hsaWdodGluZyAoKTsN Cj4gPiArICAgIFVJTlROICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ID4gKw0KPiA+ICsgICAgaWYg KEhpZ2hMaWdodCkgew0KPiA+ICsgICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0 LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ID4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUg KA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfWUVMTE9XLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgUHJpbnQgKA0K PiA+ICsgICAgICBMIiUqYSUtKmEgOlxuIiwNCj4gPiArICAgICAgZ0luZGVudCwNCj4gPiArICAg ICAgIiIsDQo+ID4gKyAgICAgIChPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRIIC0gZ0luZGVudCks DQo+ID4gKyAgICAgIEFzY2lpTmFtZQ0KPiA+ICsgICAgICApOw0KPiA+ICsgICAgaWYgKEhpZ2hM aWdodCkgew0KPiA+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91 dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgUGFyc2VySXRlbXM7IEluZGV4KyspIHsNCj4gPiAr ICAgIGlmICgoT2Zmc2V0ICsgUGFyc2VyW0luZGV4XS5MZW5ndGgpID4gTGVuZ3RoKSB7DQo+ID4g KyAgICAgIC8vIFdlIGRvbid0IHBhcnNlIHBhc3QgdGhlIGVuZCBvZiB0aGUgbWF4IGxlbmd0aCBz cGVjaWZpZWQNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAg aWYgKE9mZnNldCAhPSBQYXJzZXJbSW5kZXhdLk9mZnNldCkgew0KPiA+ICsgICAgICBJbmNyZW1l bnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgICBQcmludCAoDQo+ID4gKyAgICAgICAgTCJcbkVS Uk9SOiAlYTogT2Zmc2V0IE1pc21hdGNoIGZvciAlc1xuIg0KPiA+ICsgICAgICAgICAgIkN1cnJl bnRPZmZzZXQgPSAlZCBGaWVsZE9mZnNldCA9ICVkXG4iLA0KPiA+ICsgICAgICAgIEFzY2lpTmFt ZSwNCj4gPiArICAgICAgICBQYXJzZXJbSW5kZXhdLk5hbWVTdHIsDQo+ID4gKyAgICAgICAgT2Zm c2V0LA0KPiA+ICsgICAgICAgIFBhcnNlcltJbmRleF0uT2Zmc2V0DQo+ID4gKyAgICAgICAgKTsN Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoVHJhY2UpIHsNCj4gPiArICAgICAgLy8g aWYgdGhlcmUgaXMgYSBGb3JtYXR0ZXIgZnVuY3Rpb24gbGV0IHRoZSBmdW5jdGlvbiBoYW5kbGUN Cj4gPiArICAgICAgLy8gdGhlIHByaW50aW5nIGVsc2UgaWYgYSBGb3JtYXQgaXMgc3BlY2lmaWVk IGluIHRoZSB0YWJsZSB1c2UNCj4gPiArICAgICAgLy8gdGhlIEZvcm1hdCBmb3IgcHJpbnRpbmcN Cj4gPiArICAgICAgUHJpbnRGaWVsZE5hbWUgKDIsIFBhcnNlcltJbmRleF0uTmFtZVN0cik7DQo+ ID4gKyAgICAgIGlmIChQYXJzZXJbSW5kZXhdLlByaW50Rm9ybWF0dGVyICE9IE5VTEwpIHsNCj4g PiArICAgICAgICBQYXJzZXJbSW5kZXhdLlByaW50Rm9ybWF0dGVyIChQYXJzZXJbSW5kZXhdLkZv cm1hdCwgUHRyKTsNCj4gPiArICAgICAgfSBlbHNlIGlmIChQYXJzZXJbSW5kZXhdLkZvcm1hdCAh PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgc3dpdGNoIChQYXJzZXJbSW5kZXhdLkxlbmd0aCkgew0K PiA+ICsgICAgICAgICAgY2FzZSAxOg0KPiA+ICsgICAgICAgICAgICBEdW1wVWludDggKFBhcnNl cltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiA+ICsgICAgICAgICAgICBicmVhazsNCj4gPiArICAg ICAgICAgIGNhc2UgMjoNCj4gPiArICAgICAgICAgICAgRHVtcFVpbnQxNiAoUGFyc2VyW0luZGV4 XS5Gb3JtYXQsIFB0cik7DQo+ID4gKyAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAg Y2FzZSA0Og0KPiA+ICsgICAgICAgICAgICBEdW1wVWludDMyIChQYXJzZXJbSW5kZXhdLkZvcm1h dCwgUHRyKTsNCj4gPiArICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICBjYXNlIDg6 DQo+ID4gKyAgICAgICAgICAgIER1bXBVaW50NjQgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIp Ow0KPiA+ICsgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgIGRlZmF1bHQ6DQo+ID4g KyAgICAgICAgICAgIFByaW50ICgNCj4gPiArICAgICAgICAgICAgICBMIlxuRVJST1I6ICVhOiBD QU5OT1QgUEFSU0UgVEhJUyBGSUVMRCwgRmllbGQgTGVuZ3RoID0gJWRcbiIsDQo+ID4gKyAgICAg ICAgICAgICAgQXNjaWlOYW1lLA0KPiA+ICsgICAgICAgICAgICAgIFBhcnNlcltJbmRleF0uTGVu Z3RoDQo+ID4gKyAgICAgICAgICAgICAgKTsNCj4gPiArICAgICAgICB9IC8vIHN3aXRjaA0KPiA+ ICsNCj4gPiArICAgICAgICAvLyBWYWxpZGF0aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgd2UgYXJl IHRyYWNpbmcNCj4gPiArICAgICAgICAvLyB0aGUgcGFyc2VkIHRhYmxlIGVudHJpZXMsIHRvIHJl cG9ydCBieSB0YWJsZSBuYW1lLg0KPiA+ICsgICAgICAgIGlmIChQYXJzZXJbSW5kZXhdLkZpZWxk VmFsaWRhdG9yICE9IE5VTEwpIHsNCj4gPiArICAgICAgICAgIFBhcnNlcltJbmRleF0uRmllbGRW YWxpZGF0b3IgKFB0ciwgUGFyc2VyW0luZGV4XS5Db250ZXh0KTsNCj4gPiArICAgICAgICB9DQo+ ID4gKyAgICAgIH0NCj4gPiArICAgICAgUHJpbnQgKEwiXG4iKTsNCj4gPiArICAgIH0gLy8gaWYg KFRyYWNlKQ0KPiA+ICsNCj4gPiArICAgIGlmIChQYXJzZXJbSW5kZXhdLkl0ZW1QdHIgIT0gTlVM TCkgew0KPiA+ICsgICAgICAqUGFyc2VyW0luZGV4XS5JdGVtUHRyID0gKFZPSUQqKVB0cjsNCj4g PiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBQdHIgKz0gUGFyc2VyW0luZGV4XS5MZW5ndGg7DQo+ ID4gKyAgICBPZmZzZXQgKz0gUGFyc2VyW0luZGV4XS5MZW5ndGg7DQo+ID4gKyAgfSAvLyBmb3IN Cj4gPiArDQo+ID4gKyAgLy8gRGVjcmVtZW50IHRoZSBJbmRlbnQNCj4gPiArICBnSW5kZW50IC09 IEluZGVudDsNCj4gPiArICByZXR1cm4gT2Zmc2V0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiog QW4gYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBHZW5lcmljIEFkZHJlc3MgU3RydWN0dXJlLg0K PiA+ICsgIFRoZSBHYXNQYXJzZXIgYXJyYXkgaXMgdXNlZCBieSB0aGUgUGFyc2VBY3BpIGZ1bmN0 aW9uIHRvIHBhcnNlIGFuZC9vciB0cmFjZQ0KPiA+ICsgIHRoZSBHQVMgc3RydWN0dXJlLg0KPiA+ ICsqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2FzUGFyc2VyW10gPSB7DQo+ID4g KyAge0wiQWRkcmVzcyBTcGFjZSBJRCIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIlJlZ2lzdGVyIEJpdCBXaWR0aCIsIDEsIDEsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJlZ2lzdGVyIEJpdCBPZmZzZXQiLCAx LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJBZGRyZXNz IFNpemUiLCAxLCAzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7 TCJBZGRyZXNzIiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4g K307DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCB0cmFjZXMgdGhl IEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkDQo+ID4gKyAgICBieSB0aGUgR2FzUGFyc2VyLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICBOdW1iZXIgb2Ygc3BhY2Vz IHRvIGluZGVudCB0aGUgb3V0cHV0Lg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0K PiA+ICtEdW1wR2FzU3RydWN0ICgNCj4gPiArICBJTiBVSU5UOCogICAgICAgIFB0ciwNCj4gPiAr ICBJTiBVSU5UMzIgICAgICAgIEluZGVudA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFByaW50 IChMIlxuIik7DQo+ID4gKyAgUGFyc2VBY3BpICgNCj4gPiArICAgIFRSVUUsDQo+ID4gKyAgICBJ bmRlbnQsDQo+ID4gKyAgICBOVUxMLA0KPiA+ICsgICAgUHRyLA0KPiA+ICsgICAgR0FTX0xFTkdU SCwNCj4gPiArICAgIFBBUlNFUl9QQVJBTVMgKEdhc1BhcnNlcikNCj4gPiArICAgICk7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgR0FTIHN0cnVjdHVy ZSBhcyBkZXNjcmliZWQgYnkgdGhlIEdhc1BhcnNlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtp bl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0K PiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRHVtcEdhcyAoDQo+ ID4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4gKyAgSU4gVUlOVDgq ICAgICAgICBQdHINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBEdW1wR2FzU3RydWN0IChQdHIs IDIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFD UEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRlclBhcnNlci4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNl ZC4NCj4gPiArKi8NCj4gPiArVUlOVDMyDQo+ID4gK0VGSUFQSQ0KPiA+ICtEdW1wQWNwaUhlYWRl ciAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0cg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFDUElf REVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ID4gKyAgQUNQSV9QQVJTRVIg QWNwaUhlYWRlclBhcnNlcltdID0gew0KPiA+ICsgICAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3Bp SGRySW5mbykNCj4gPiArICB9Ow0KPiA+ICsNCj4gPiArICByZXR1cm4gUGFyc2VBY3BpICgNCj4g PiArICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgIDAsDQo+ID4gKyAgICAgICAgICAg IkFDUEkgVGFibGUgSGVhZGVyIiwNCj4gPiArICAgICAgICAgICBQdHIsDQo+ID4gKyAgICAgICAg ICAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RILA0KPiA+ICsgICAgICAgICAgIFBBUlNF Ul9QQVJBTVMgKEFjcGlIZWFkZXJQYXJzZXIpDQo+ID4gKyAgICAgICAgICAgKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIGhlYWRlciBhcyBk ZXNjcmliZWQgYnkgdGhlDQo+IEFjcGlIZWFkZXJQYXJzZXIuDQo+ID4gKw0KPiA+ICsgIFRoaXMg ZnVuY3Rpb24gb3B0aW9uYWxseSByZXR1cm5zIHRoZSBzaWduYXR1cmUsIGxlbmd0aCBhbmQgcmV2 aXNpb24gb2YgdGhlDQo+ID4gKyAgQUNQSSB0YWJsZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtp bl0gIFB0ciAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiAr ICBAcGFyYW0gW291dF0gU2lnbmF0dXJlICBHZXRzIGxvY2F0aW9uIG9mIHRoZSBBQ1BJIHRhYmxl IHNpZ25hdHVyZS4NCj4gPiArICBAcGFyYW0gW291dF0gTGVuZ3RoICAgICBHZXRzIGxvY2F0aW9u IG9mIHRoZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBhcmFtIFtvdXRdIFJl dmlzaW9uICAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgcmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPiArKi8N Cj4gPiArVUlOVDMyDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlIZWFkZXIgKA0KPiA+ICsg IElOICBVSU5UOCogICAgICAgICBQdHIsDQo+ID4gKyAgT1VUIENPTlNUIFVJTlQzMioqIFNpZ25h dHVyZSwNCj4gPiArICBPVVQgQ09OU1QgVUlOVDMyKiogTGVuZ3RoLA0KPiA+ICsgIE9VVCBDT05T VCBVSU5UOCoqICBSZXZpc2lvbg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICAgIEJ5dGVzUGFyc2VkOw0KPiA+ICsgIEFDUElfREVTQ1JJUFRJT05f SEVBREVSX0lORk8gIEFjcGlIZHJJbmZvOw0KPiA+ICsgIEFDUElfUEFSU0VSIEFjcGlIZWFkZXJQ YXJzZXJbXSA9IHsNCj4gPiArICAgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pDQo+ ID4gKyAgfTsNCj4gPiArDQo+ID4gKyAgQnl0ZXNQYXJzZWQgPSBQYXJzZUFjcGkgKA0KPiA+ICsg ICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gPiArICAgICAgICAgICAgICAgICAgMCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgUHRyLA0KPiA+ ICsgICAgICAgICAgICAgICAgICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgsDQo+ID4g KyAgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEFjcGlIZWFkZXJQYXJzZXIpDQo+ID4g KyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgICpTaWduYXR1cmUgPSBBY3BpSGRy SW5mby5TaWduYXR1cmU7DQo+ID4gKyAgKkxlbmd0aCA9IEFjcGlIZHJJbmZvLkxlbmd0aDsNCj4g PiArICAqUmV2aXNpb24gPSBBY3BpSGRySW5mby5SZXZpc2lvbjsNCj4gPiArDQo+ID4gKyAgcmV0 dXJuIEJ5dGVzUGFyc2VkOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuaA0KPiBiL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuaA0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uNGRhZGQ0ZDEwNDIzY2I2MGNhMTdjMWIxDQo+IGQyODVjNTVlMmU1 OGEwZTANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oDQo+ID4gQEAgLTAsMCArMSw3NTkg QEANCj4gPiArLyoqDQo+ID4gKyAgSGVhZGVyIGZpbGUgZm9yIEFDUEkgcGFyc2VyDQo+ID4gKw0K PiA+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gPiArICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklC VVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiAr ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYg QUNQSVBBUlNFUl9IXw0KPiA+ICsjZGVmaW5lIEFDUElQQVJTRVJfSF8NCj4gPiArDQo+ID4gKyNk ZWZpbmUgT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAgMzYNCj4gPiArDQo+ID4gKy8vLyBUaGUg UlNEUCB0YWJsZSBzaWduYXR1cmUgaXMgIlJTRCBQVFIgIiAoOCBieXRlcykNCj4gPiArLy8vIEhv d2V2ZXIgVGhlIHNpZ25hdHVyZSBmb3IgQUNQSSB0YWJsZXMgaXMgNCBieXRlcy4NCj4gPiArLy8v IFRvIHdvcmsgYXJvdW5kIHRoaXMgb2RkaXR5IGRlZmluZSBhIHNpZ25hdHVyZSB0eXBlDQo+ID4g Ky8vLyB0aGF0IGFsbG93cyB1cyB0byBwcm9jZXNzIHRoZSBsb2cgb3B0aW9ucy4NCj4gPiArI2Rl ZmluZSBSU0RQX1RBQkxFX0lORk8gIFNJR05BVFVSRV8zMignUicsICdTJywgJ0QnLCAnUCcpDQo+ ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIGVy cm9yIGNvdW50ZXIuDQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0luY3Jl bWVudEVycm9yQ291bnQgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoq IFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIu DQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0luY3JlbWVudFdhcm5pbmdD b3VudCAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5j dGlvbiB2ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBjaGVja3N1bS4NCj4gPiArDQo+ID4gKyAgVGhp cyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgY2hlY2tzdW0gZm9yIHRoZSBBQ1BJIHRhYmxlIGFuZCBv cHRpb25hbGx5DQo+ID4gKyAgcHJpbnRzIHRoZSBzdGF0dXMuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bSBbaW5dIExvZyAgICAgSWYgVFJVRSBsb2cgdGhlIHN0YXR1cyBvZiB0aGUgY2hlY2tzdW0uDQo+ ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFi bGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUg YnVmZmVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICBUaGUgY2hlY2tzdW0g aXMgT0suDQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgVGhlIGNoZWNrc3VtIGZhaWxlZC4N Cj4gPiArKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArVmVyaWZ5Q2hlY2tzdW0g KA0KPiA+ICsgIElOIEJPT0xFQU4gTG9nLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ICsg IElOIFVJTlQzMiAgTGVuZ3RoDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHBlcmZvcm1zIGEgcmF3IGRhdGEgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFi bGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUg YnVmZmVyLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtEdW1wUmF3ICgN Cj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFVJTlQzMiBMZW5ndGgNCj4gPiArICAp Ow0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDEgYnl0ZSBvZiBkYXR1bSBh cyBzcGVjaWZpZWQgaW4gdGhlDQo+ID4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBk YXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRHVtcFVp bnQ4ICgNCj4gPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gPiArICBJTiBVSU5UOCog ICAgICAgIFB0cg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFj ZXMgMiBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gPiArICAgIGZvcm1hdCBz dHJpbmcuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJp bmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4g K0VGSUFQSQ0KPiA+ICtEdW1wVWludDE2ICgNCj4gPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1h dCwNCj4gPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0 aGUNCj4gPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIEZv cm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtEdW1wVWludDMyICgNCj4gPiArICBJ TiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBieXRlcyBvZiBk YXRhIGFzIHNwZWNpZmllZCBieSB0aGUNCj4gPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcg dGhlIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtE dW1wVWludDY0ICgNCj4gPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gPiArICBJTiBV SU5UOCogICAgICAgIFB0cg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlv biB0cmFjZXMgMyBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4gKyAgIGZv cm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gPiArDQo+ID4g KyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5V TEwuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0 cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4g PiArRUZJQVBJDQo+ID4gK0R1bXAzQ2hhcnMgKA0KPiA+ICsgIElOIENPTlNUIENIQVIxNiogRm9y bWF0IE9QVElPTkFMLA0KPiA+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGNoYXJhY3RlcnMgd2hpY2ggY2Fu IGJlIG9wdGlvbmFsbHkNCj4gPiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcg aWYgc3BlY2lmaWVkLg0KPiA+ICsNCj4gPiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNp ZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0g Rm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRHVtcDRDaGFycyAoDQo+ ID4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4gKyAgSU4gVUlOVDgq ICAgICAgICBQdHINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJh Y2VzIDYgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiA+ICsgICBmb3JtYXRl ZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4gKw0KPiA+ICsgIElm IG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcg Zm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtEdW1wNkNoYXJzICgNCj4gPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBP UFRJT05BTCwNCj4gPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+ICsgICk7DQo+ID4gKw0K PiA+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBv cHRpb25hbGx5DQo+ID4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNw ZWNpZmllZC4NCj4gPiArDQo+ID4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQg dGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIEZvcm1h dCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0R1bXA4Q2hhcnMgKA0KPiA+ICsg IElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+ICsgIElOIFVJTlQ4KiAgICAg ICAgUHRyDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluZGVudHMg YW5kIHByaW50cyB0aGUgQUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiA+ICsNCj4gPiArICBAcGFy YW0gW2luXSBJbmRlbnQgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFs IHRhYmxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LiBUaGUgZ2xvYmFs IHRhYmxlIGluZGVudCBpcyAwIGJ5IGRlZmF1bHQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaG93ZXZlciB0aGlzIHZhbHVlIGlzIHVwZGF0ZWQgb24gZW50cnkgdG8gdGhlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRl bnQgdmFsdWUgcHJvdmlkZWQgdG8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJz ZUFjcGkoKSBhbmQgcmVzdG9yZWQgYmFjayBvbiBleGl0LiBUaGVyZWZvcmUNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGUgdG90YWwgaW5kZW50IGluIHRoZSBvdXRwdXQgaXMgZGVw ZW5kZW50IG9uIGZyb20NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGlz IGZ1bmN0aW9uIGlzIGNhbGxlZC4NCj4gPiArICBAcGFyYW0gW2luXSBGaWVsZE5hbWUgICBQb2lu dGVyIHRvIHRoZSBGaWVsZCBOYW1lLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0K PiA+ICtQcmludEZpZWxkTmFtZSAoDQo+ID4gKyAgSU4gVUlOVDMyICAgICAgICAgSW5kZW50LA0K PiA+ICsgIElOIENPTlNUIENIQVIxNiogIEZpZWxkTmFtZQ0KPiA+ICspOw0KPiA+ICsNCj4gPiAr LyoqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgdGVtcGxhdGUgZm9yIGN1c3RvbWl6aW5n IHRoZSB0cmFjZSBvdXRwdXQNCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBGb3Jt YXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhIGFzIHNwZWNpZmllZCBieQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgdGhlICdGb3JtYXQnIG1lbWJlciBvZiBBQ1BJX1BBUlNFUi4NCj4g PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ID4gKyovDQo+ID4gK3R5cGVkZWYgVk9JRCAoRUZJQVBJICpGTlBUUl9QUklOVF9GT1JN QVRURVIpKENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiBVSU5UOCogUHRyKTsNCj4gPiArDQo+ID4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgaXMgdGhlIHRlbXBsYXRlIGZvciB2YWxpZGF0aW5n IGFuIEFDUEkgdGFibGUgZmllbGQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtp bl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gYXMgc3Bl Y2lmaWVkIGJ5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgJ0NvbnRleHQnIG1lbWJl ciBvZiB0aGUgQUNQSV9QQVJTRVIuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBlLmcuIHRo aXMgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiArKi8N Cj4gPiArdHlwZWRlZiBWT0lEIChFRklBUEkgKkZOUFRSX0ZJRUxEX1ZBTElEQVRPUikoVUlOVDgq IFB0ciwgVk9JRCoNCj4gQ29udGV4dCk7DQo+ID4gKw0KPiA+ICsvKiogVGhlIEFDUElfUEFSU0VS IHN0cnVjdHVyZSBkZXNjcmliZXMgdGhlIGZpZWxkcyBvZiBhbiBBQ1BJIHRhYmxlIGFuZA0KPiA+ ICsgICAgcHJvdmlkZXMgbWVhbnMgZm9yIHRoZSBwYXJzZXIgdG8gaW50ZXJwcmV0IGFuZCB0cmFj ZSBhcHByb3ByaWF0ZWx5Lg0KPiA+ICsNCj4gPiArICBUaGUgZmlyc3QgdGhyZWUgbWVtYmVycyBh cmUgcG9wdWxhdGVkIGJhc2VkIG9uIGluZm9ybWF0aW9uIHByZXNlbnQgaW4NCj4gPiArICBpbiB0 aGUgQUNQSSB0YWJsZSBzcGVjaWZpY2F0aW9ucy4gVGhlIHJlbWFpbmluZyBtZW1iZXJzIGRlc2Ny aWJlIGhvdw0KPiA+ICsgIHRoZSBwYXJzZXIgc2hvdWxkIHJlcG9ydCB0aGUgZmllbGQgaW5mb3Jt YXRpb24sIHZhbGlkYXRlIHRoZSBmaWVsZCBkYXRhDQo+ID4gKyAgYW5kL29yIHVwZGF0ZSBhbiBl eHRlcm5hbCBwb2ludGVyIHRvIHRoZSBmaWVsZCAoSXRlbVB0cikuDQo+ID4gKw0KPiA+ICsgIFBh cnNlQWNwaSgpIHVzZXMgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWVkIGJ5ICdGb3JtYXQnIGZv ciB0cmFjaW5nDQo+ID4gKyAgdGhlIGZpZWxkIGRhdGEuIElmIHRoZSBmaWVsZCBpcyBtb3JlIGNv bXBsZXggYW5kIHJlcXVpcmVzIGFkZGl0aW9uYWwNCj4gPiArICBwcm9jZXNzaW5nIGZvciBmb3Jt YXR0aW5nIGFuZCByZXByZXNlbnRhdGlvbiBhIHByaW50IGZvcm1hdHRlciBmdW5jdGlvbg0KPiA+ ICsgIGNhbiBiZSBzcGVjaWZpZWQgaW4gJ1ByaW50Rm9ybWF0dGVyJy4NCj4gPiArICBUaGUgUHJp bnRGb3JtYXR0ZXIgZnVuY3Rpb24gbWF5IGNob29zZSB0byB1c2UgdGhlIGZvcm1hdCBzdHJpbmcN Cj4gPiArICBzcGVjaWZpZWQgYnkgJ0Zvcm1hdCcgb3IgdXNlIGl0cyBvd24gaW50ZXJuYWwgZm9y bWF0IHN0cmluZy4NCj4gPiArDQo+ID4gKyAgVGhlICdGb3JtYXQnIGFuZCAnUHJpbnRGb3JtYXR0 ZXInIG1lbWJlcnMgYWxsb3cgZmxleGliaWxpdHkgZm9yDQo+ID4gKyAgcmVwcmVzZW50aW5nIHRo ZSBmaWVsZCBkYXRhLg0KPiA+ICsqLw0KPiA+ICt0eXBlZGVmIHN0cnVjdCBBY3BpUGFyc2VyIHsN Cj4gPiArDQo+ID4gKyAgLy8vIFN0cmluZyBkZXNjcmliaW5nIHRoZSBBQ1BJIHRhYmxlIGZpZWxk DQo+ID4gKyAgLy8vIChGaWVsZCBjb2x1bW4gZnJvbSBBQ1BJIHRhYmxlIHNwZWMpDQo+ID4gKyAg Q09OU1QgQ0hBUjE2KiAgICAgICAgIE5hbWVTdHI7DQo+ID4gKw0KPiA+ICsgIC8vLyBUaGUgbGVu Z3RoIG9mIHRoZSBmaWVsZC4NCj4gPiArICAvLy8gKEJ5dGUgTGVuZ3RoIGNvbHVtbiBmcm9tIEFD UEkgdGFibGUgc3BlYykNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgTGVuZ3RoOw0KPiA+ ICsNCj4gPiArICAvLy8gVGhlIG9mZnNldCBvZiB0aGUgZmllbGQgZnJvbSB0aGUgc3RhcnQgb2Yg dGhlIHRhYmxlLg0KPiA+ICsgIC8vLyAoQnl0ZSBPZmZzZXQgY29sdW1uIGZyb20gQUNQSSB0YWJs ZSBzcGVjKQ0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICBPZmZzZXQ7DQo+ID4gKw0KPiA+ ICsgIC8vLyBPcHRpb25hbCBQcmludCgpIHN0eWxlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcg dGhlIGRhdGEuIElmIG5vdA0KPiA+ICsgIC8vLyB1c2VkIHRoaXMgbXVzdCBiZSBzZXQgdG8gTlVM TC4NCj4gPiArICBDT05TVCBDSEFSMTYqICAgICAgICAgRm9ybWF0Ow0KPiA+ICsNCj4gPiArICAv Ly8gT3B0aW9uYWwgcG9pbnRlciB0byBhIHByaW50IGZvcm1hdHRlciBmdW5jdGlvbiB3aGljaA0K PiA+ICsgIC8vLyBpcyB0eXBpY2FsbHkgdXNlZCB0byB0cmFjZSBjb21wbGV4IGZpZWxkIGluZm9y bWF0aW9uLg0KPiA+ICsgIC8vLyBJZiBub3QgdXNlZCB0aGlzIG11c3QgYmUgc2V0IHRvIE5VTEwu DQo+ID4gKyAgLy8vIFRoZSBGb3JtYXQgc3RyaW5nIGlzIHBhc3NlZCB0byB0aGUgUHJpbnRGb3Jt YXR0ZXIgZnVuY3Rpb24NCj4gPiArICAvLy8gYnV0IG1heSBiZSBpZ25vcmVkIGJ5IHRoZSBpbXBs ZW1lbnRhdGlvbiBjb2RlLg0KPiA+ICsgIEZOUFRSX1BSSU5UX0ZPUk1BVFRFUiBQcmludEZvcm1h dHRlcjsNCj4gPiArDQo+ID4gKyAgLy8vIE9wdGlvbmFsIHBvaW50ZXIgd2hpY2ggbWF5IGJlIHNl dCB0byByZXF1ZXN0IHRoZSBwYXJzZXIgdG8gdXBkYXRlDQo+ID4gKyAgLy8vIGEgcG9pbnRlciB0 byB0aGUgZmllbGQgZGF0YS4gSWYgdW51c2VkIHRoaXMgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4g PiArICBWT0lEKiogICAgICAgICAgICAgICAgSXRlbVB0cjsNCj4gPiArDQo+ID4gKyAgLy8vIE9w dGlvbmFsIHBvaW50ZXIgdG8gYSBmaWVsZCB2YWxpZGF0b3IgZnVuY3Rpb24uDQo+ID4gKyAgLy8v IFRoZSBmdW5jdGlvbiBzaG91bGQgZGlyZWN0bHkgcmVwb3J0IGFueSBhcHByb3ByaWF0ZSBlcnJv ciBvciB3YXJuaW5nDQo+ID4gKyAgLy8vIGFuZCBpbnZva2UgdGhlIGFwcHJvcHJpYXRlIGNvdW50 ZXIgdXBkYXRlIGZ1bmN0aW9uLg0KPiA+ICsgIC8vLyBJZiBub3QgdXNlZCB0aGlzIHBhcmFtZXRl ciBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiA+ICsgIEZOUFRSX0ZJRUxEX1ZBTElEQVRPUiBGaWVs ZFZhbGlkYXRvcjsNCj4gPiArDQo+ID4gKyAgLy8vIE9wdGlvbmFsIHBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiwNCj4gPiArICAvLy8gd2hpY2ggdGhlIEZpZWxkIFZhbGlk YXRvciBmdW5jdGlvbiBjYW4gdXNlIHRvIGRldGVybWluZQ0KPiA+ICsgIC8vLyBhZGRpdGlvbmFs IGluZm9ybWF0aW9uIGFib3V0IHRoZSBBQ1BJIHRhYmxlIGFuZCBtYWtlDQo+ID4gKyAgLy8vIGRl Y2lzaW9ucyBhYm91dCB0aGUgZmllbGQgYmVpbmcgdmFsaWRhdGVkLg0KPiA+ICsgIC8vLyBlLmcu IHRoaXMgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlcg0KPiA+ICsg IFZPSUQqICAgICAgICAgICAgICAgICBDb250ZXh0Ow0KPiA+ICt9IEFDUElfUEFSU0VSOw0KPiA+ ICsNCj4gPiArLyoqIEEgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgdGhlIHBvaW50ZXJzIHRvIHRo ZSBtZW1iZXJzIG9mIHRoZQ0KPiA+ICsgICAgQUNQSSBkZXNjcmlwdGlvbiBoZWFkZXIgc3RydWN0 dXJlIHRoYXQgd2FzIHBhcnNlZC4NCj4gPiArKi8NCj4gPiArdHlwZWRlZiBzdHJ1Y3QgQWNwaURl c2NyaXB0aW9uSGVhZGVySW5mbyB7DQo+ID4gKyAgLy8vIEFDUEkgdGFibGUgc2lnbmF0dXJlDQo+ ID4gKyAgVUlOVDMyKiBTaWduYXR1cmU7DQo+ID4gKyAgLy8vIExlbmd0aCBvZiB0aGUgQUNQSSB0 YWJsZQ0KPiA+ICsgIFVJTlQzMiogTGVuZ3RoOw0KPiA+ICsgIC8vLyBSZXZpc2lvbg0KPiA+ICsg IFVJTlQ4KiAgUmV2aXNpb247DQo+ID4gKyAgLy8vIENoZWNrc3VtDQo+ID4gKyAgVUlOVDgqICBD aGVja3N1bTsNCj4gPiArICAvLy8gT0VNIElkIC0gbGVuZ3RoIGlzIDYgYnl0ZXMNCj4gPiArICBV SU5UOCogIE9lbUlkOw0KPiA+ICsgIC8vLyBPRU0gdGFibGUgSWQNCj4gPiArICBVSU5UNjQqIE9l bVRhYmxlSWQ7DQo+ID4gKyAgLy8vIE9FTSByZXZpc2lvbiBJZA0KPiA+ICsgIFVJTlQzMiogT2Vt UmV2aXNpb247DQo+ID4gKyAgLy8vIENyZWF0b3IgSWQNCj4gPiArICBVSU5UMzIqIENyZWF0b3JJ ZDsNCj4gPiArICAvLy8gQ3JlYXRvciByZXZpc2lvbg0KPiA+ICsgIFVJTlQzMiogQ3JlYXRvclJl dmlzaW9uOw0KPiA+ICt9IEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk87DQo+ID4gKw0KPiA+ ICsvKiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGFuIEFDUEkgdGFibGUgYnVmZmVy Lg0KPiA+ICsNCj4gPiArICBUaGUgQUNQSSB0YWJsZSBidWZmZXIgaXMgcGFyc2VkIHVzaW5nIHRo ZSBBQ1BJIHRhYmxlIHBhcnNlciBpbmZvcm1hdGlvbg0KPiA+ICsgIHNwZWNpZmllZCBieSBhIHBv aW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgZWxlbWVudHMuIFRoaXMgcGFyc2VyDQo+ ID4gKyAgZnVuY3Rpb24gaXRlcmF0ZXMgdGhyb3VnaCBlYWNoIGl0ZW0gb24gdGhlIEFDUElfUEFS U0VSIGFycmF5IGFuZCBsb2dzIHRoZQ0KPiA+ICsgIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsN Cj4gPiArICBUaGlzIGZ1bmN0aW9uIGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgdG8gcGFyc2UgQUNQ SSB0YWJsZXMgYW5kIGZldGNoIHNwZWNpZmljDQo+ID4gKyAgZmllbGQgdmFsdWVzLiBUaGUgSXRl bVB0ciBtZW1iZXIgb2YgdGhlIEFDUElfUEFSU0VSIHN0cnVjdHVyZSAod2hlcmUgdXNlZCkNCj4g PiArICBpcyB1cGRhdGVkIGJ5IHRoaXMgcGFyc2VyIGZ1bmN0aW9uIHRvIHBvaW50IHRvIHRoZSBz ZWxlY3RlZCBmaWVsZCBkYXRhDQo+ID4gKyAgKGUuZy4gdXNlZnVsIGZvciB2YXJpYWJsZSBsZW5n dGggbmVzdGVkIGZpZWxkcykuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAg ICBUcmFjZSB0aGUgQUNQSSBmaWVsZHMgVFJVRSBlbHNlIG9ubHkgcGFyc2UgdGhlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEluZGVu dCAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgb3V0cHV0Lg0KPiA+ICsgIEBw YXJhbSBbaW5dIEFzY2lpTmFtZSAgICBPcHRpb25hbCBwb2ludGVyIHRvIGFuIEFTQ0lJIHN0cmlu ZyB0aGF0IGRlc2NyaWJlcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFi bGUgYmVpbmcgcGFyc2VkLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAg ICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlciBwb2ludGVkIGJ5IFB0ci4NCj4gPiArICBAcGFyYW0g W2luXSBQYXJzZXIgICAgICAgUG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBzdHJ1 Y3R1cmUgdGhhdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgdGhl IHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gPiArICBAcGFyYW0gW2luXSBQYXJzZXJJdGVtcyAgTnVt YmVyIG9mIGl0ZW1zIGluIHRoZSBBQ1BJX1BBUlNFUiBhcnJheS4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBOdW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiA+ICsqLw0KPiA+ICtVSU5UMzINCj4gPiAr RUZJQVBJDQo+ID4gK1BhcnNlQWNwaSAoDQo+ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgIFRy YWNlLA0KPiA+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBJbmRlbnQsDQo+ID4gKyAgSU4gQ09O U1QgQ0hBUjgqICAgICAgIEFzY2lpTmFtZSBPUFRJT05BTCwNCj4gPiArICBJTiBVSU5UOCogICAg ICAgICAgICAgUHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBMZW5ndGgsDQo+ID4g KyAgSU4gQ09OU1QgQUNQSV9QQVJTRVIqIFBhcnNlciwNCj4gPiArICBJTiBVSU5UMzIgICAgICAg ICAgICAgUGFyc2VySXRlbXMNCj4gPiArKTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGlzIGEgaGVs cGVyIG1hY3JvIHRvIHBhc3MgcGFyYW1ldGVycyB0byB0aGUgUGFyc2VyIGZ1bmN0aW9ucy4NCj4g PiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyIFRoZSBuYW1lIG9mIHRoZSBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZQ0KPiA+ICsgICAgICAgICAgICAgIEFDUEkgdGFibGUgZmll bGRzLg0KPiA+ICsqLw0KPiA+ICsjZGVmaW5lIFBBUlNFUl9QQVJBTVMoUGFyc2VyKSBQYXJzZXIs IHNpemVvZiAoUGFyc2VyKSAvIHNpemVvZiAoUGFyc2VyWzBdKQ0KPiA+ICsNCj4gPiArLyoqIFRo aXMgaXMgYSBoZWxwZXIgbWFjcm8gZm9yIGRlc2NyaWJpbmcgdGhlIEFDUEkgaGVhZGVyIGZpZWxk cy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtvdXRdIEluZm8gIFBvaW50ZXIgdG8gcmV0cmlldmUg dGhlIEFDUEkgdGFibGUgaGVhZGVyIGluZm9ybWF0aW9uLg0KPiA+ICsqLw0KPiA+ICsjZGVmaW5l IFBBUlNFX0FDUElfSEVBREVSKEluZm8pICAgICAgICAgICAgICAgICAgIFwNCj4gPiArICB7IEwi U2lnbmF0dXJlIiwgNCwgMCwgTlVMTCwgRHVtcDRDaGFycywgICAgICAgICBcDQo+ID4gKyAgICAo Vk9JRCoqKSYoSW5mbyktPlNpZ25hdHVyZSAsIE5VTEwsIE5VTEwgfSwgICAgXA0KPiA+ICsgIHsg TCJMZW5ndGgiLCA0LCA0LCBMIiVkIiwgTlVMTCwgICAgICAgICAgICAgICAgIFwNCj4gPiArICAg IChWT0lEKiopJihJbmZvKS0+TGVuZ3RoLCBOVUxMLCBOVUxMIH0sICAgICAgICBcDQo+ID4gKyAg eyBMIlJldmlzaW9uIiwgMSwgOCwgTCIlZCIsIE5VTEwsICAgICAgICAgICAgICAgXA0KPiA+ICsg ICAgKFZPSUQqKikmKEluZm8pLT5SZXZpc2lvbiwgTlVMTCwgTlVMTCB9LCAgICAgIFwNCj4gPiAr ICB7IEwiQ2hlY2tzdW0iLCAxLCA5LCBMIjB4JVgiLCBOVUxMLCAgICAgICAgICAgICBcDQo+ID4g KyAgICAoVk9JRCoqKSYoSW5mbyktPkNoZWNrc3VtLCBOVUxMLCBOVUxMIH0sICAgICAgXA0KPiA+ ICsgIHsgTCJPZW0gSUQiLCA2LCAxMCwgTlVMTCwgRHVtcDZDaGFycywgICAgICAgICAgIFwNCj4g PiArICAgIChWT0lEKiopJihJbmZvKS0+T2VtSWQsIE5VTEwsIE5VTEwgfSwgICAgICAgICBcDQo+ ID4gKyAgeyBMIk9lbSBUYWJsZSBJRCIsIDgsIDE2LCBOVUxMLCBEdW1wOENoYXJzLCAgICAgXA0K PiA+ICsgICAgKFZPSUQqKikmKEluZm8pLT5PZW1UYWJsZUlkLCBOVUxMLCBOVUxMIH0sICAgIFwN Cj4gPiArICB7IEwiT2VtIFJldmlzaW9uIiwgNCwgMjQsIEwiMHglWCIsIE5VTEwsICAgICAgICBc DQo+ID4gKyAgICAoVk9JRCoqKSYoSW5mbyktPk9lbVJldmlzaW9uLCBOVUxMLCBOVUxMIH0sICAg XA0KPiA+ICsgIHsgTCJDcmVhdG9yIElEIiwgNCwgMjgsIE5VTEwsIER1bXA0Q2hhcnMsICAgICAg IFwNCj4gPiArICAgIChWT0lEKiopJihJbmZvKS0+Q3JlYXRvcklkLCBOVUxMLCBOVUxMIH0sICAg ICBcDQo+ID4gKyAgeyBMIkNyZWF0b3IgUmV2aXNpb24iLCA0LCAzMiwgTCIweCVYIiwgTlVMTCwg ICAgXA0KPiA+ICsgICAgKFZPSUQqKikmKEluZm8pLT5DcmVhdG9yUmV2aXNpb24sIE5VTEwsIE5V TEwgfQ0KPiA+ICsNCj4gPiArLyoqIExlbmd0aCBvZiB0aGUgQUNQSSBHQVMgc3RydWN0dXJlLg0K PiA+ICsNCj4gPiArICBOT1RFOiBUaGlzIG1pZ2h0IG5vcm1hbGx5IGJlIGRlZmluZWQgYXMNCj4g PiArICAgICAgICBzaXplb2YgKEVGSV9BQ1BJXzZfMl9HRU5FUklDX0FERFJFU1NfU1RSVUNUVVJF KS4NCj4gPiArICAgICAgICBIb3dldmVyLCB3ZSBkZWxpYmVyYXRlbHkgbWluaW1pc2UgYW55IHJl ZmVyZW5jZSB0byB0aGUgRURLMiBBQ1BJDQo+ID4gKyAgICAgICAgaGVhZGVycyBpbiBhbiBhdHRl bXB0IHRvIHByb3ZpZGUgY3Jvc3MgY2hlY2tpbmcuDQo+ID4gKyovDQo+ID4gKyNkZWZpbmUgR0FT X0xFTkdUSCAgICAgICAgICAgICAgICAgICAgIDEyDQo+ID4gKw0KPiA+ICsvKiogTGVuZ3RoIG9m IHRoZSBBQ1BJIEhlYWRlciBzdHJ1Y3R1cmUuDQo+ID4gKw0KPiA+ICsgIE5PVEU6IFRoaXMgbWln aHQgbm9ybWFsbHkgYmUgZGVmaW5lZCBhcw0KPiA+ICsgICAgICAgIHNpemVvZiAoRUZJX0FDUElf REVTQ1JJUFRJT05fSEVBREVSKS4NCj4gPiArICAgICAgICBIb3dldmVyLCB3ZSBkZWxpYmVyYXRl bHkgbWluaW1pc2UgYW55IHJlZmVyZW5jZSB0byB0aGUgRURLMiBBQ1BJDQo+ID4gKyAgICAgICAg aGVhZGVycyBpbiBhbiBhdHRlbXB0IHRvIHByb3ZpZGUgY3Jvc3MgY2hlY2tpbmcuDQo+ID4gKyov DQo+ID4gKyNkZWZpbmUgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RIICAzNg0KPiA+ICsN Cj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgdHJhY2VzIHRoZSBHQVMgc3RydWN0 dXJlIGFzIGRlc2NyaWJlZA0KPiA+ICsgICAgYnkgdGhlIEdhc1BhcnNlci4NCj4gPiArDQo+ID4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiA+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAgTnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQg dGhlIG91dHB1dC4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRHVtcEdh c1N0cnVjdCAoDQo+ID4gKyAgSU4gVUlOVDgqICAgICAgICBQdHIsDQo+ID4gKyAgSU4gVUlOVDMy ICAgICAgICBJbmRlbnQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24g dHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJlZCBieSB0aGUgR2FzUGFyc2VyLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcg Zm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtEdW1wR2FzICgNCj4gPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJ T05BTCwNCj4gPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBi eSB0aGUNCj4gQWNwaUhlYWRlclBhcnNlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPiArKi8NCj4gPiArVUlOVDMy DQo+ID4gK0VGSUFQSQ0KPiA+ICtEdW1wQWNwaUhlYWRlciAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0 cg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFD UEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRlclBhcnNlci4NCj4gPiAr DQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHJldHVybnMgdGhlIFNpZ25hdHVyZSwg TGVuZ3RoIGFuZCByZXZpc2lvbiBvZiB0aGUNCj4gPiArICBBQ1BJIHRhYmxlLg0KPiA+ICsNCj4g PiArICBAcGFyYW0gW2luXSAgUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2Yg dGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggICAg IEdldHMgbG9jYXRpb24gb2YgdGhlIGxlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArICBA cGFyYW0gW291dF0gUmV2aXNpb24gICBHZXRzIGxvY2F0aW9uIG9mIHRoZSByZXZpc2lvbiBvZiB0 aGUgQUNQSSB0YWJsZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBOdW1iZXIgb2YgYnl0ZXMgcGFy c2VkLg0KPiA+ICsqLw0KPiA+ICtVSU5UMzINCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNwaUhl YWRlciAoDQo+ID4gKyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCj4gPiArICBPVVQgQ09OU1Qg VUlOVDMyKiogU2lnbmF0dXJlLA0KPiA+ICsgIE9VVCBDT05TVCBVSU5UMzIqKiBMZW5ndGgsDQo+ ID4gKyAgT1VUIENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBCR1JUIHRhYmxlLg0KPiA+ICsgIFdo ZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQkdSVCB0YWJsZSBh bmQNCj4gPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBU aGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBm aWVsZHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBU UlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAg ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkg dGFibGUuDQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNwaUJn cnQgKA0KPiA+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDggICBBY3Bp VGFibGVSZXZpc2lvbg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBw YXJzZXMgdGhlIEFDUEkgREJHMiB0YWJsZS4NCj4gPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQg dGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIERCRzIgdGFibGUgYW5kDQo+ID4gKyAgdHJhY2VzIHRo ZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBl cmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkg ZmllbGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxl bmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsqLw0KPiA+ ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlEYmcyICgNCj4gPiArICBJTiBCT09M RUFOIFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgQWNw aVRhYmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIERTRFQg dGFibGUuDQo+ID4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBEU0RUIHRhYmxlIGFuZA0KPiA+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMu DQo+ID4gKyAgRm9yIHRoZSBEU0RUIHRhYmxlIG9ubHkgdGhlIEFDUEkgaGVhZGVyIGZpZWxkcyBh cmUgcGFyc2VkIGFuZA0KPiA+ICsgIHRyYWNlZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0g VHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3Ro IG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9u ICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtF RklBUEkNCj4gPiArUGFyc2VBY3BpRHNkdCAoDQo+ID4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4g PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4gKyAgKTsNCj4gPiArDQo+ ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBGQURUIHRhYmxlLg0KPiA+ICsg IFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBGQURUIHRhYmxlIGFuZCBvcHRpb25hbGx5IHRyYWNl cyB0aGUgQUNQSQ0KPiA+ICsgIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5j dGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJh Y2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlGYWR0ICgNCj4g PiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ICsgIElO IFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2 aXNpb24NCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBBQ1BJIEdURFQgdGFibGUuDQo+ID4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBHVERUIHRhYmxlIGFuZA0KPiA+ICsgIHRyYWNlcyB0aGUgQUNQSSB0 YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhl IGZvbGxvd2luZyBwbGF0Zm9ybSB0aW1lciBzdHJ1Y3R1cmVzOg0KPiA+ICsgICAgLSBHVCBCbG9j ayB0aW1lcg0KPiA+ICsgICAgLSBXYXRjaGRvZyB0aW1lcg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1 bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0 cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUu DQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNwaUd0ZHQgKA0K PiA+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gKyAg SU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVS ZXZpc2lvbg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgSU9SVCB0YWJsZS4NCj4gPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgdGFibGUgYW5kDQo+ID4gKyAgdHJhY2VzIHRoZSBBQ1BJ IGZpZWxkcy4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUgZm9s bG93aW5nIG5vZGVzOg0KPiA+ICsgICAgLSBJVFMgR3JvdXANCj4gPiArICAgIC0gTmFtZWQgQ29t cG9uZW50DQo+ID4gKyAgICAtIFJvb3QgQ29tcGxleA0KPiA+ICsgICAgLSBTTU1VdjEvMg0KPiA+ ICsgICAgLSBTTU1VdjMNCj4gPiArICAgIC0gUE1DRw0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0 aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFj ZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFtIFtpbl0g QWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArICBAcGFy YW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNwaUlvcnQgKA0KPiA+ ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gKyAgSU4g VUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZp c2lvbg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IEFDUEkgTUFEVCB0YWJsZS4NCj4gPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIE1BRFQgdGFibGUgYW5kDQo+ID4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRh YmxlIGZpZWxkcy4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBjdXJyZW50bHkgcGFyc2Vz IHRoZSBmb2xsb3dpbmcgSW50ZXJydXB0IENvbnRyb2xsZXINCj4gPiArICBTdHJ1Y3R1cmVzOg0K PiA+ICsgICAgLSBHSUNDDQo+ID4gKyAgICAtIEdJQ0QNCj4gPiArICAgIC0gR0lDIE1TSSBGcmFt ZQ0KPiA+ICsgICAgLSBHSUNSDQo+ID4gKyAgICAtIEdJQyBJVFMNCj4gPiArDQo+ID4gKyAgVGhp cyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmll bGRzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJV RSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4g KyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlNYWR0 ICgNCj4gPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4ICAgQWNwaVRh YmxlUmV2aXNpb24NCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFy c2VzIHRoZSBBQ1BJIE1DRkcgdGFibGUuDQo+ID4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBNQ0ZHIHRhYmxlIGFuZA0KPiA+ICsgIHRyYWNlcyB0aGUg QUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJm b3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ID4gKyAg QHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZp ZWxkcy4NCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5n dGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlU YWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8NCj4gPiAr Vk9JRA0KPiA+ICtFRklBUEkNCj4gPiArUGFyc2VBY3BpTWNmZyAoDQo+ID4gKyAgSU4gQk9PTEVB TiBUcmFjZSwNCj4gPiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIgIEFjcGlU YWJsZUxlbmd0aCwNCj4gPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4gKyAg KTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBSU0RQIHRh YmxlLg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGludm9rZXMgdGhlIHBhcnNlciBmb3Ig dGhlIFhTRFQgdGFibGUuDQo+ID4gKyAgKiBOb3RlIC0gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBz dXBwb3J0IHBhcnNpbmcgb2YgUlNEVCB0YWJsZS4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlv biBhbHNvIHBlcmZvcm1zIGEgUkFXIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUgYW5kDQo+ID4gKyAg dmFsaWRhdGVzIHRoZSBjaGVja3N1bS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gVHJhY2Ug ICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiArICBAcGFy YW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZp c2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkN Cj4gPiArUGFyc2VBY3BpUnNkcCAoDQo+ID4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPiArICBJ TiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiAr ICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8q KiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTTElUIHRhYmxlLg0KPiA+ICsgIFdoZW4g dHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU0xJVCB0YWJsZSBhbmQN Cj4gPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBUaGlz IGZ1bmN0aW9uIGFsc28gdmFsaWRhdGVzIFN5c3RlbSBMb2NhbGl0aWVzIGZvciB0aGUgZm9sbG93 aW5nOg0KPiA+ICsgICAgLSBEaWFnb25hbCBlbGVtZW50cyBoYXZlIGEgbm9ybWFsaXplZCB2YWx1 ZSBvZiAxMA0KPiA+ICsgICAgLSBSZWxhdGl2ZSBkaXN0YW5jZSBmcm9tIFN5c3RlbSBMb2NhbGl0 eSBhdCBpKk4raiBpcyBzYW1lIGFzDQo+ID4gKyAgICAgIGoqTitpDQo+ID4gKw0KPiA+ICsgIEBw YXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVs ZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3Ro ICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyovDQo+ID4gK1ZP SUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNwaVNsaXQgKA0KPiA+ICsgIElOIEJPT0xFQU4g VHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFi bGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+ICsgICk7 DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU1BDUiB0YWJs ZS4NCj4gPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IFNQQ1IgdGFibGUgYW5kDQo+ID4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4g PiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb25zIG9mIHRo ZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAg ICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiArICBAcGFyYW0g W2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBB Q1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lv biBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4g PiArUGFyc2VBY3BpU3BjciAoDQo+ID4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPiArICBJTiBV SU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICBJ TiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKiBU aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTUkFUIHRhYmxlLg0KPiA+ICsgIFdoZW4gdHJh Y2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1JBVCB0YWJsZSBhbmQNCj4g PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1 bmN0aW9uIHBhcnNlcyB0aGUgZm9sbG93aW5nIFJlc291cmNlIEFsbG9jYXRpb24gU3RydWN0dXJl czoNCj4gPiArICAgIC0gUHJvY2Vzc29yIExvY2FsIEFQSUMvU0FQSUMgQWZmaW5pdHkgU3RydWN0 dXJlDQo+ID4gKyAgICAtIE1lbW9yeSBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gPiArICAgIC0gUHJv Y2Vzc29yIExvY2FsIHgyQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gPiArICAgIC0gR0lDQyBB ZmZpbml0eSBTdHJ1Y3R1cmUNCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZv cm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmll bGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0 aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRh YmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsqLw0KPiA+ICtW T0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlTcmF0ICgNCj4gPiArICBJTiBCT09MRUFO IFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgQWNwaVRh YmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiArICAp Ow0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNTRFQgdGFi bGUuDQo+ID4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBTU0RUIHRhYmxlIGFuZA0KPiA+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ ID4gKyAgRm9yIHRoZSBTU0RUIHRhYmxlIG9ubHkgdGhlIEFDUEkgaGVhZGVyIGZpZWxkcyBhcmUN Cj4gPiArICBwYXJzZWQgYW5kIHRyYWNlZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gVHJh Y2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9m IHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBS ZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklB UEkNCj4gPiArUGFyc2VBY3BpU3NkdCAoDQo+ID4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPiAr ICBJTiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4g PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBYU0RUIHRhYmxlDQo+ID4gKyAgYW5k IG9wdGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ID4gKyAg VGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIFhTRFQgdGFibGUu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0 cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUu DQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNwaVhzZHQgKA0K PiA+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gKyAg SU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVS ZXZpc2lvbg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsjZW5kaWYgLy8gQUNQSVBBUlNFUl9IXw0K PiA+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9BY3BpVGFibGVQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li4xNGE4YjE0NDExNDNkMWUzNWZiNTk0ZjVmDQo+IDFhMjA0ODFjYmExZWYyMA0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9BY3BpVGFibGVQYXJzZXIuYw0KPiA+IEBAIC0wLDAgKzEsMjE1IEBADQo+ID4gKy8q Kg0KPiA+ICsgIEFDUEkgdGFibGUgcGFyc2VyDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykg MjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiArICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3Ry aWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0 DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K PiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBM SUVELg0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4gKyNpbmNs dWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUxpYi5oPg0KPiA+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiA+ICsjaW5jbHVkZSAiQWNw aVRhYmxlUGFyc2VyLmgiDQo+ID4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiA+ICsNCj4gPiAr LyoqIEEgbGlzdCBvZiByZWdpc3RlcmVkIEFDUEkgdGFibGUgcGFyc2Vycy4NCj4gPiArKi8NCj4g PiArU1RBVElDIEFDUElfVEFCTEVfUEFSU0VSIG1UYWJsZVBhcnNlckxpc3RbTUFYX0FDUElfVEFC TEVfUEFSU0VSU107DQo+ID4gKw0KPiA+ICsvKiogUmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFy c2VyDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIHRoZSBBQ1BJIHRhYmxl IHBhcnNlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAgVGhlIEFDUEkg dGFibGUgc2lnbmF0dXJlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFBhcnNlclByb2MgIFRoZSBBQ1BJ IHRhYmxlIHBhcnNlci4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfQUxS RUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIFRhYmxlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPiArICBAcmV0 dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ID4gKyovDQo+ID4gK0VG SV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1JlZ2lzdGVyUGFyc2VyICgNCj4gPiArICBJTiAg VUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLA0KPiA+ICsgIElOICBQQVJTRV9BQ1BJ X1RBQkxFX1BST0MgICBQYXJzZXJQcm9jDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMy IGluZGV4Ow0KPiA+ICsNCj4gPiArICBpZiAoKFBhcnNlclByb2MgPT0gTlVMTCkgfHwgKFNpZ25h dHVyZSA9PSBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTCkpDQo+IHsNCj4gPiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBTZWFy Y2ggaWYgYSBwYXJzZXIgaXMgYWxyZWFkeSBpbnN0YWxsZWQNCj4gPiArICBmb3IgKGluZGV4ID0g MDsNCj4gPiArICAgICAgIGluZGV4IDwgKHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdCkgLyBzaXpl b2YgKG1UYWJsZVBhcnNlckxpc3RbMF0pKTsNCj4gPiArICAgICAgIGluZGV4KyspDQo+ID4gKyAg ew0KPiA+ICsgICAgaWYgKFNpZ25hdHVyZSA9PSBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWdu YXR1cmUpIHsNCj4gPiArICAgICAgaWYgKG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciAh PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgcmV0dXJuIEVGSV9BTFJFQURZX1NUQVJURUQ7DQo+ID4g KyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIEZpbmQgdGhl IGZpcnN0IGZyZWUgc2xvdCBhbmQgcmVnaXN0ZXIgdGhlIHBhcnNlcg0KPiA+ICsgIGZvciAoaW5k ZXggPSAwOw0KPiA+ICsgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8g c2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ID4gKyAgICAgIGluZGV4KyspDQo+ID4g KyAgew0KPiA+ICsgICAgaWYgKG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSA9PSBB Q1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTCkNCj4gew0KPiA+ICsgICAgICBtVGFibGVQYXJzZXJM aXN0W2luZGV4XS5TaWduYXR1cmUgPSBTaWduYXR1cmU7DQo+ID4gKyAgICAgIG1UYWJsZVBhcnNl ckxpc3RbaW5kZXhdLlBhcnNlciA9IFBhcnNlclByb2M7DQo+ID4gKyAgICAgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIE5vIGZyZWUg c2xvdCBmb3VuZA0KPiA+ICsgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqIERlcmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ID4gKw0K PiA+ICsgIFRoaXMgZnVuY3Rpb24gZGVyZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBTaWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBzaWdu YXR1cmUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBw YXJzZXIgd2FzIGRlcmVnaXN0ZXJlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VO RCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2FzIG5vdCBmb3VuZC4NCj4gPiArKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRGVyZWdpc3RlclBhcnNlciAoDQo+ID4g KyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZQ0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIFVJTlQzMiBpbmRleDsNCj4gPiArDQo+ID4gKyAgaWYgKFNpZ25hdHVyZSA9PSBB Q1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGZvciAoaW5kZXggPSAwOw0KPiA+ ICsgICAgICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRh YmxlUGFyc2VyTGlzdFswXSkpOw0KPiA+ICsgICAgICAgaW5kZXgrKykNCj4gPiArICB7DQo+ID4g KyAgICBpZiAoU2lnbmF0dXJlID09IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSkg ew0KPiA+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUgPSBBQ1BJX1BB UlNFUl9TSUdOQVRVUkVfTlVMTDsNCj4gPiArICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0u UGFyc2VyID0gTlVMTDsNCj4gPiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICsgICAg fQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gTm8gbWF0Y2hpbmcgcmVnaXN0ZXJlZCBwYXJz ZXIgZm91bmQuDQo+ID4gKyAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKiBHZXQgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVu Y3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYyBmcm9tIHRoZSBsaXN0IG9m DQo+ID4gKyAgcmVnaXN0ZXJlZCBwYXJzZXJzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSAg U2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+ICsgIEBwYXJhbSBbb3V0 XSBQYXJzZXJQcm9jICBQb2ludGVyIHRvIGEgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYy4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgcmV0 dXJuZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS IEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAg ICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiA+ICsqLw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtHZXRQYXJzZXIgKA0KPiA+ICsgIElOICBVSU5U MzIgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLA0KPiA+ICsgIE9VVCBQQVJTRV9BQ1BJX1RB QkxFX1BST0MgKiAgUGFyc2VyUHJvYw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQzMiBp bmRleDsNCj4gPiArDQo+ID4gKyAgaWYgKChQYXJzZXJQcm9jID09IE5VTEwpIHx8IChTaWduYXR1 cmUgPT0gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwpKQ0KPiB7DQo+ID4gKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgZm9yIChpbmRl eCA9IDA7DQo+ID4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8g c2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ID4gKyAgICAgICBpbmRleCsrKQ0KPiA+ ICsgIHsNCj4gPiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0u U2lnbmF0dXJlKSB7DQo+ID4gKyAgICAgICpQYXJzZXJQcm9jID0gbVRhYmxlUGFyc2VyTGlzdFtp bmRleF0uUGFyc2VyOw0KPiA+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgICB9 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBObyBtYXRjaGluZyByZWdpc3RlcmVkIHBhcnNl ciBmb3VuZC4NCj4gPiArICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBBQ1BJIHRhYmxlcy4NCj4gPiArICBU aGlzIGZ1bmN0aW9uIGNhbGxzIFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMoKSB0byBsaXN0IHRo ZSBBQ1BJDQo+ID4gKyAgdGFibGVzLCBwZXJmb3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMg YW5kIGRldGVybWluZSBpZiB0aGUNCj4gPiArICBBQ1BJIGZpZWxkcyBzaG91bGQgYmUgdHJhY2Vk Lg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZv ciB0aGUgQUNQSSB0YWJsZXMuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJm b3JtcyBhIFJBVyBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGluY2x1ZGluZw0KPiA+ICsgIHRoZSB1 bmtub3duL3VucGFyc2VkIEFDUEkgdGFibGVzIGFuZCB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIEFDUEkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFibGUgZGF0YSBidWZmZXIuDQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ ID4gK1Byb2Nlc3NBY3BpVGFibGUgKA0KPiA+ICsgIElOIFVJTlQ4KiBQdHINCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgIFN0YXR1czsNCj4gPiArICBCT09MRUFOICAgICAg IFRyYWNlOw0KPiA+ICsgIENPTlNUIFVJTlQzMiogQWNwaVRhYmxlU2lnbmF0dXJlOw0KPiA+ICsg IENPTlNUIFVJTlQzMiogQWNwaVRhYmxlTGVuZ3RoOw0KPiA+ICsgIENPTlNUIFVJTlQ4KiAgQWNw aVRhYmxlUmV2aXNpb247DQo+ID4gKyAgUEFSU0VfQUNQSV9UQUJMRV9QUk9DIFBhcnNlclByb2M7 DQo+ID4gKw0KPiA+ICsgIFBhcnNlQWNwaUhlYWRlciAoDQo+ID4gKyAgICBQdHIsDQo+ID4gKyAg ICAmQWNwaVRhYmxlU2lnbmF0dXJlLA0KPiA+ICsgICAgJkFjcGlUYWJsZUxlbmd0aCwNCj4gPiAr ICAgICZBY3BpVGFibGVSZXZpc2lvbg0KPiA+ICsgICAgKTsNCj4gPiArDQo+ID4gKyAgVHJhY2Ug PSBQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zICgNCj4gPiArICAgICAgICAgICAgKkFjcGlUYWJs ZVNpZ25hdHVyZSwNCj4gPiArICAgICAgICAgICAgUHRyLA0KPiA+ICsgICAgICAgICAgICAqQWNw aVRhYmxlTGVuZ3RoDQo+ID4gKyAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgIGlmIChUcmFj ZSkgew0KPiA+ICsgICAgRHVtcFJhdyAoUHRyLCAqQWNwaVRhYmxlTGVuZ3RoKTsNCj4gPiArICAg IFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQdHIsICpBY3BpVGFibGVMZW5ndGgpOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgU3RhdHVzID0gR2V0UGFyc2VyICgqQWNwaVRhYmxlU2lnbmF0dXJlLCAm UGFyc2VyUHJvYyk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg Ly8gTm8gcmVnaXN0ZXJlZCBwYXJzZXIgZm91bmQsIGRvIGRlZmF1bHQgaGFuZGxpbmcuDQo+ID4g KyAgICBpZiAoVHJhY2UpIHsNCj4gPiArICAgICAgRHVtcEFjcGlIZWFkZXIgKFB0cik7DQo+ID4g KyAgICB9DQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQYXJzZXJQ cm9jICgNCj4gPiArICAgIFRyYWNlLA0KPiA+ICsgICAgUHRyLA0KPiA+ICsgICAgKkFjcGlUYWJs ZUxlbmd0aCwNCj4gPiArICAgICpBY3BpVGFibGVSZXZpc2lvbg0KPiA+ICsgICAgKTsNCj4gPiAr fQ0KPiA+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9BY3BpVGFibGVQYXJzZXIuaA0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5oDQo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi5hNjlkNTZkYTZjZjcyOGJiOThkZjI2NWRlDQo+IDNhZTAzMGQ4NTEyMDQ5NA0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIuaA0KPiA+IEBAIC0wLDAgKzEsMTI2IEBADQo+ID4g Ky8qKg0KPiA+ICsgIEhlYWRlciBmaWxlIGZvciBBQ1BJIHRhYmxlIHBhcnNlcg0KPiA+ICsNCj4g PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzDQo+ID4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ID4gKyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAg V0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVS DQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIEFD UElUQUJMRVBBUlNFUl9IXw0KPiA+ICsjZGVmaW5lIEFDUElUQUJMRVBBUlNFUl9IXw0KPiA+ICsN Cj4gPiArLyoqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBBQ1BJIHRhYmxlIHBhcnNlcnMuDQo+ID4g KyovDQo+ID4gKyNkZWZpbmUgTUFYX0FDUElfVEFCTEVfUEFSU0VSUyAgICAgICAgICAxNg0KPiA+ ICsNCj4gPiArLyoqIEFuIGludmFsaWQvTlVMTCBzaWduYXR1cmUgdmFsdWUuDQo+ID4gKyovDQo+ ID4gKyNkZWZpbmUgQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwgICAgICAwDQo+ID4gKw0KPiA+ ICsvKiogQSBmdW5jdGlvbiB0aGF0IHBhcnNlcyB0aGUgQUNQSSB0YWJsZS4NCj4gPiArDQo+ID4g KyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJ IGZpZWxkcy4NCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVM ZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8NCj4g PiArdHlwZWRlZg0KPiA+ICtWT0lEDQo+ID4gKyhFRklBUEkgKiBQQVJTRV9BQ1BJX1RBQkxFX1BS T0MpICgNCj4gPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0K PiA+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4ICAgQWNw aVRhYmxlUmV2aXNpb24NCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqIFRoZSBBQ1BJIHRhYmxl IHBhcnNlciBpbmZvcm1hdGlvbg0KPiA+ICsqLw0KPiA+ICt0eXBlZGVmIHN0cnVjdCBBY3BpVGFi bGVQYXJzZXIgew0KPiA+ICsgIC8vLyBBQ1BJIHRhYmxlIHNpZ25hdHVyZQ0KPiA+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCj4gPiArDQo+ID4gKyAgLy8vIFRoZSBBQ1BJ IHRhYmxlIHBhcnNlciBmdW5jdGlvbi4NCj4gPiArICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQ YXJzZXI7DQo+ID4gK30gQUNQSV9UQUJMRV9QQVJTRVI7DQo+ID4gKw0KPiA+ICsvKiogUmVnaXN0 ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcmVn aXN0ZXJzIHRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0g U2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+ICsgIEBwYXJhbSBbaW5d IFBhcnNlclByb2MgIFRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiA+ICsg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ ID4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIFRh YmxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVn aXN0ZXJlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0 byByZWdpc3RlciB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJz ZXIuDQo+ID4gKyovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1JlZ2lzdGVy UGFyc2VyICgNCj4gPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLA0K PiA+ICsgIElOICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQYXJzZXJQcm9jDQo+ID4gKyk7DQo+ ID4gKw0KPiA+ICsvKiogRGVyZWdpc3RlciB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gPiArDQo+ ID4gKyAgVGhpcyBmdW5jdGlvbiBkZXJlZ2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25h dHVyZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBh cnNlciB3YXMgZGVyZWdpc3RlcmVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5E ICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiA+ICsqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPiAr ICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlDQo+ID4gKyk7DQo+ID4gKw0K PiA+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIEFDUEkgdGFibGVzLg0KPiA+ICsg IFRoaXMgZnVuY3Rpb24gY2FsbHMgUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucygpIHRvIGxpc3Qg dGhlIEFDUEkNCj4gPiArICB0YWJsZXMsIHBlcmZvcm0gYmluYXJ5IGR1bXAgb2YgdGhlIHRhYmxl cyBhbmQgZGV0ZXJtaW5lIGlmIHRoZQ0KPiA+ICsgIEFDUEkgZmllbGRzIHNob3VsZCBiZSB0cmFj ZWQuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBpbnZva2VzIHRoZSBwYXJzZXIg Zm9yIHRoZSBBQ1BJIHRhYmxlcy4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBl cmZvcm1zIGEgUkFXIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUgaW5jbHVkaW5nDQo+ID4gKyAgdGhl IHVua25vd24vdW5wYXJzZWQgQUNQSSB0YWJsZXMgYW5kIHZhbGlkYXRlcyB0aGUgY2hlY2tzdW0u DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgQUNQSQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YWJsZSBkYXRhIGJ1ZmZlci4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkN Cj4gPiArUHJvY2Vzc0FjcGlUYWJsZSAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0cg0KPiA+ICsgICk7 DQo+ID4gKw0KPiA+ICsvKiogR2V0IHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiA+ICsNCj4gPiAr ICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyIHByb2MgZnJvbSB0 aGUgbGlzdCBvZg0KPiA+ICsgIHJlZ2lzdGVyZWQgcGFyc2Vycy4NCj4gPiArDQo+ID4gKyAgQHBh cmFtIFtpbl0gIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPiArICBA cGFyYW0gW291dF0gUGFyc2VyUHJvYyAgUG9pbnRlciB0byBhIEFDUEkgdGFibGUgcGFyc2VyIHBy b2MuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJz ZXIgd2FzIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJX05P VF9GT1VORCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2FzIG5vdCBmb3VuZC4NCj4gPiAr Ki8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArR2V0UGFyc2VyICgNCj4gPiAr ICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gPiArICBPVVQgUEFS U0VfQUNQSV9UQUJMRV9QUk9DICogIFBhcnNlclByb2MNCj4gPiArICApOw0KPiA+ICsNCj4gPiAr I2VuZGlmIC8vIEFDUElUQUJMRVBBUlNFUl9IXw0KPiA+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5jDQo+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYw0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uM2JiMTQyNTM4YzAwOTlkY2RkMmRmYTNkDQo+IDIwOGQzMzUwYzQy NWFjY2INCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYw0KPiA+IEBAIC0wLDAgKzEsNjAxIEBA DQo+ID4gKy8qKg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNl bnNlDQo+ID4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArKiovDQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxsTGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIu aD4NCj4gPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gPiArI2luY2x1ZGUgIkFjcGlUYWJs ZVBhcnNlci5oIg0KPiA+ICsjaW5jbHVkZSAiQWNwaVZpZXcuaCINCj4gPiArI2luY2x1ZGUgIlVl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIg0KPiA+ICsNCj4gPiArRUZJX0hJSV9IQU5ETEUg Z1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPSBOVUxMOw0KPiA+ICsNCj4gPiArLy8gUmVwb3J0IHZh cmlhYmxlcw0KPiA+ICtTVEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJs ZTsNCj4gPiArU1RBVElDIENPTlNUIENIQVIxNiogICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1l Ow0KPiA+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5k Ow0KPiA+ICtTVEFUSUMgRVJFUE9SVF9PUFRJT04gICAgIG1SZXBvcnRUeXBlOw0KPiA+ICtTVEFU SUMgVUlOVDMyICAgICAgICAgICAgIG1UYWJsZUNvdW50Ow0KPiA+ICtTVEFUSUMgVUlOVDMyICAg ICAgICAgICAgIG1CaW5UYWJsZUNvdW50Ow0KPiA+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAg IG1WZXJib3NlOw0KPiA+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1Db25zaXN0ZW5jeUNo ZWNrOw0KPiA+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1Db2xvdXJIaWdobGlnaHRpbmc7 DQo+ID4gKw0KPiA+ICsvKiogQW4gYXJyYXkgb2YgYWNwaXZpZXcgY29tbWFuZCBsaW5lIHBhcmFt ZXRlcnMuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBTSEVMTF9QQVJBTV9JVEVNIFBhcmFt TGlzdFtdID0gew0KPiA+ICsgIHtMIi8/IiwgVHlwZUZsYWd9LA0KPiA+ICsgIHtMIi1jIiwgVHlw ZUZsYWd9LA0KPiA+ICsgIHtMIi1kIiwgVHlwZUZsYWd9LA0KPiA+ICsgIHtMIi1oIiwgVHlwZVZh bHVlfSwNCj4gPiArICB7TCItbCIsIFR5cGVGbGFnfSwNCj4gPiArICB7TCItcyIsIFR5cGVWYWx1 ZX0sDQo+ID4gKyAge0wiLXYiLCBUeXBlRmxhZ30sDQo+ID4gKyAge05VTEwsIFR5cGVNYXh9DQo+ ID4gK307DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2xvdXIg aGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBUUlVFIGlmIGNvbG91 ciBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gPiArKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtH ZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICByZXR1cm4gbUNvbG91ckhpZ2hsaWdodGluZzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq IFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgY29sb3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ID4g Kw0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK1NldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ID4g KyAgQk9PTEVBTiBIaWdobGlnaHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBtQ29sb3VySGln aGxpZ2h0aW5nID0gSGlnaGxpZ2h0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5j dGlvbiByZXR1cm5zIHRoZSByZXBvcnQgb3B0aW9ucy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBS ZXR1cm5zIHRoZSByZXBvcnQgb3B0aW9uLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMNCj4gPiArRVJF UE9SVF9PUFRJT04NCj4gPiArR2V0UmVwb3J0T3B0aW9uICgNCj4gPiArICBWT0lEDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIG1SZXBvcnRUeXBlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIFJldHVybnMgc2lnbmF0dXJlIG9mIHRoZSBzZWxlY3RlZCBBQ1BJ IHRhYmxlLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMNCj4gPiArVUlOVDMyDQo+ID4gK0dldFNlbGVj dGVkQWNwaVRhYmxlICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0 dXJuIG1TZWxlY3RlZEFjcGlUYWJsZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVu Y3Rpb24gZHVtcHMgdGhlIEFDUEkgdGFibGUgdG8gYSBmaWxlLg0KPiA+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgICBQb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEuDQo+ID4gKyAgQHBhcmFt IFtpbl0gTGVuZ3RoICAgIFRoZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBTdWNjZXNzLg0KPiA+ICsgIEByZXR2YWwgRkFMU0Ug ICAgICAgICBGYWlsdXJlLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMNCj4gPiArQk9PTEVBTg0KPiA+ ICtEdW1wQWNwaVRhYmxlVG9GaWxlICgNCj4gPiArICBJTiBDT05TVCBVSU5UOCogIFB0ciwNCj4g PiArICBJTiBDT05TVCBVSU5UTiAgIExlbmd0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVG SV9TVEFUVVMgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgQ0hBUjE2ICAgICAgICAgICAgIEZpbGVO YW1lQnVmZmVyW01BWF9GSUxFX05BTUVfTEVOXTsNCj4gPiArICBTSEVMTF9GSUxFX0hBTkRMRSAg RHVtcEZpbGVIYW5kbGUgPSBOVUxMOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICBUcmFuc2Zl ckJ5dGVzID0gTGVuZ3RoOw0KPiA+ICsNCj4gPiArICBVbmljb2RlU1ByaW50ICgNCj4gPiArICAg IEZpbGVOYW1lQnVmZmVyLA0KPiA+ICsgICAgc2l6ZW9mIChGaWxlTmFtZUJ1ZmZlciksDQo+ID4g KyAgICBMIi5cXCVzJTA0ZC5iaW4iLA0KPiA+ICsgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSwN Cj4gPiArICAgIG1CaW5UYWJsZUNvdW50KysNCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ICsgIFN0 YXR1cyA9IFNoZWxsT3BlbkZpbGVCeU5hbWUgKA0KPiA+ICsgICAgICAgICAgICAgRmlsZU5hbWVC dWZmZXIsDQo+ID4gKyAgICAgICAgICAgICAmRHVtcEZpbGVIYW5kbGUsDQo+ID4gKyAgICAgICAg ICAgICBFRklfRklMRV9NT0RFX1JFQUQgfCBFRklfRklMRV9NT0RFX1dSSVRFIHwNCj4gRUZJX0ZJ TEVfTU9ERV9DUkVBVEUsDQo+ID4gKyAgICAgICAgICAgICAwDQo+ID4gKyAgICAgICAgICAgICAp Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIFNoZWxsUHJpbnRI aWlFeCAoDQo+ID4gKyAgICAgIC0xLA0KPiA+ICsgICAgICAtMSwNCj4gPiArICAgICAgTlVMTCwN Cj4gPiArICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1JFQURPTkxZX01FRElBKSwNCj4gPiAr ICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ID4gKyAgICAgIEwiYWNwaXZpZXciDQo+ ID4gKyAgICAgICk7DQo+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBQcmludCAoTCJEdW1waW5nIEFDUEkgdGFibGUgdG8gOiAlcyAuLi4gIiwgRmlsZU5hbWVC dWZmZXIpOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBTaGVsbFdyaXRlRmlsZSAoDQo+ID4gKyAg ICAgICAgICAgICBEdW1wRmlsZUhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICZUcmFuc2ZlckJ5 dGVzLA0KPiA+ICsgICAgICAgICAgICAgKFZPSUQqKVB0cg0KPiA+ICsgICAgICAgICAgICAgKTsN Cj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBQcmludCAoTCJFUlJP UjogRmFpbGVkIHRvIGR1bXAgdGFibGUgdG8gYmluYXJ5IGZpbGUuXG4iKTsNCj4gPiArICAgIFRy YW5zZmVyQnl0ZXMgPSAwOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBQcmludCAoTCJET05F LlxuIik7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTaGVsbENsb3NlRmlsZSAoJkR1bXBGaWxl SGFuZGxlKTsNCj4gPiArICByZXR1cm4gKExlbmd0aCA9PSBUcmFuc2ZlckJ5dGVzKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSB0YWJsZSByZXBv cnRpbmcgb3B0aW9ucyBmb3IgdGhlIEFDUEkgdGFibGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBb aW5dIFNpZ25hdHVyZSBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ID4gKyAgQHBhcmFtIFtp bl0gVGFibGVQdHIgIFBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgZGF0YS4NCj4gPiArICBAcGFy YW0gW2luXSBMZW5ndGggICAgVGhlIGxlbmd0aCBmbyB0aGUgQUNQSSB0YWJsZS4NCj4gPiArDQo+ ID4gKyAgQHJldHZhbCBSZXR1cm5zIFRSVUUgaWYgdGhlIEFDUEkgdGFibGUgc2hvdWxkIGJlIHRy YWNlZC4NCj4gPiArKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtQcm9jZXNzVGFibGVSZXBvcnRPcHRp b25zICgNCj4gPiArICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCj4gPiArICBJTiBDT05T VCBVSU5UOCogIFRhYmxlUHRyLA0KPiA+ICsgIElOIENPTlNUIFVJTlQzMiAgTGVuZ3RoDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVE4gICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gPiArICBV SU5UOCogIFNpZ25hdHVyZVB0ciA9IChVSU5UOCopKFVJTlROKSZTaWduYXR1cmU7DQo+ID4gKyAg Qk9PTEVBTiBMb2cgPSBGQUxTRTsNCj4gPiArICBCT09MRUFOIEhpZ2hMaWdodCA9IEdldENvbG91 ckhpZ2hsaWdodGluZyAoKTsNCj4gPiArICBzd2l0Y2ggKEdldFJlcG9ydE9wdGlvbiAoKSkgew0K PiA+ICsgICAgY2FzZSBFUkVQT1JUX0FMTDoNCj4gPiArICAgICAgTG9nID0gVFJVRTsNCj4gPiAr ICAgICAgYnJlYWs7DQo+ID4gKyAgICBjYXNlIEVSRVBPUlRfU0VMRUNURUQ6DQo+ID4gKyAgICAg IGlmIChTaWduYXR1cmUgPT0gR2V0U2VsZWN0ZWRBY3BpVGFibGUgKCkpIHsNCj4gPiArICAgICAg ICBMb2cgPSBUUlVFOw0KPiA+ICsgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kID0gVFJV RTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIGNhc2UgRVJFUE9S VF9UQUJMRV9MSVNUOg0KPiA+ICsgICAgICBpZiAobVRhYmxlQ291bnQgPT0gMCkgew0KPiA+ICsg ICAgICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gPiArICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRl ID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gPiArICAgICAgICAgIGdTVC0+Q29u T3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgZ1NULT5D b25PdXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSKEVGSV9D WUFOLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRl JihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICk7 DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICAgIFByaW50IChMIlxuSW5zdGFsbGVkIFRhYmxl KHMpOlxuIik7DQo+ID4gKyAgICAgICAgaWYgKEhpZ2hMaWdodCkgew0KPiA+ICsgICAgICAgICAg Z1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFsQXR0cmlidXRl KTsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgUHJpbnQgKA0KPiA+ ICsgICAgICAgIEwiXHQlNGQuICVjJWMlYyVjXG4iLA0KPiA+ICsgICAgICAgICsrbVRhYmxlQ291 bnQsDQo+ID4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzBdLA0KPiA+ICsgICAgICAgIFNpZ25hdHVy ZVB0clsxXSwNCj4gPiArICAgICAgICBTaWduYXR1cmVQdHJbMl0sDQo+ID4gKyAgICAgICAgU2ln bmF0dXJlUHRyWzNdDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAg ICBjYXNlIEVSRVBPUlRfRFVNUF9CSU5fRklMRToNCj4gPiArICAgICAgaWYgKFNpZ25hdHVyZSA9 PSBHZXRTZWxlY3RlZEFjcGlUYWJsZSAoKSkgew0KPiA+ICsgICAgICAgIG1TZWxlY3RlZEFjcGlU YWJsZUZvdW5kID0gVFJVRTsNCj4gPiArICAgICAgICBEdW1wQWNwaVRhYmxlVG9GaWxlIChUYWJs ZVB0ciwgTGVuZ3RoKTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAg IGNhc2UgRVJFUE9SVF9NQVg6DQo+ID4gKyAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBoZXJl Lg0KPiA+ICsgICAgICAvLyBUaGlzIGNhc2UgaXMgb25seSBwcmVzZW50IHRvIHByZXZlbnQgY29t cGlsZXIgd2FybmluZy4NCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgfSAvLyBzd2l0Y2gNCj4g PiArDQo+ID4gKyAgaWYgKExvZykgew0KPiA+ICsgICAgaWYgKEhpZ2hMaWdodCkgew0KPiA+ICsg ICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ ID4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBnU1QtPkNvbk91dCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRf QVRUUihFRklfTElHSFRCTFVFLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2lu YWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICApOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgUHJpbnQgKA0KPiA+ICsgICAgICBMIlxuXG4g LS0tLS0tLS0tLS0tLS0tICVjJWMlYyVjIFRhYmxlIC0tLS0tLS0tLS0tLS0tLSBcblxuIiwNCj4g PiArICAgICAgU2lnbmF0dXJlUHRyWzBdLA0KPiA+ICsgICAgICBTaWduYXR1cmVQdHJbMV0sDQo+ ID4gKyAgICAgIFNpZ25hdHVyZVB0clsyXSwNCj4gPiArICAgICAgU2lnbmF0dXJlUHRyWzNdDQo+ ID4gKyAgICAgICk7DQo+ID4gKyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ID4gKyAgICAgIGdTVC0+ Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gTG9nOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBhIHN0cmluZyB0byBBQ1BJIHRh YmxlIHNpZ25hdHVyZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gU3RyICAgUG9pbnRlciB0 byB0aGUgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZCB0byB0aGUNCj4gPiArICAgICAgICAgICAgICAg ICAgICBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBUaGUgQUNQ SSB0YWJsZSBzaWduYXR1cmUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ICtVSU5UMzINCj4g PiArQ29udmVydFN0clRvQWNwaVNpZ25hdHVyZSAoDQo+ID4gKyAgSU4gIENPTlNUIENIQVIxNiog U3RyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDggSW5kZXggPSAwOw0KPiA+ICsgIENI QVI4IFB0cls0XTsNCj4gPiArDQo+ID4gKyAgLy8gQ29udmVydCB0byBVcHBlciBjYXNlIGFuZCBj b252ZXJ0IHRvIEFTQ0lJDQo+ID4gKyAgd2hpbGUgKChJbmRleCA8IDQpICYmIChTdHJbSW5kZXhd ICE9IDApKSB7DQo+ID4gKyAgICBpZiAoU3RyW0luZGV4XSA+PSBMJ2EnICYmIFN0cltJbmRleF0g PD0gTCd6Jykgew0KPiA+ICsgICAgICBQdHJbSW5kZXhdID0gKENIQVI4KShTdHJbSW5kZXhdIC0g KEwnYScgLSBMJ0EnKSk7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICBQdHJbSW5kZXhd ID0gKENIQVI4KVN0cltJbmRleF07DQo+ID4gKyAgICB9DQo+ID4gKyAgICBJbmRleCsrOw0KPiA+ ICsgIH0NCj4gPiArICByZXR1cm4gKihVSU5UMzIqKVB0cjsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gdGFibGUgZW50cmll cyBpbiB0aGUNCj4gPiArICAgIHN5c3RlbSB0YWJsZSwgcmV0cmlldmVzIHRoZSBSU0RQIHBvaW50 ZXIgYW5kIHN0YXJ0cyBwYXJzaW5nDQo+ID4gKyAgICB0aGUgQUNQSSB0YWJsZXMuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbSBbaW5dIFN5c3RlbVRhYmxlIFBvaW50ZXIgdG8gdGhlIEVGSSBzeXN0ZW0g dGFibGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUmV0dXJucyBFRklfTk9UX0ZPVU5EICAgaWYg dGhlIFJTRFAgcG9pbnRlciBpcyBub3QgZm91bmQuDQo+ID4gKyAgICAgICAgICBSZXR1cm5zIEVG SV9VTlNVUFBPUlRFRCBpZiB0aGUgUlNEUCB2ZXJzaW9uIGlzIGxlc3MgdGhhbiAyLg0KPiA+ICsg ICAgICAgICAgUmV0dXJucyBFRklfU1VDQ0VTUyAgICAgaWYgc3VjY2Vzc2Z1bC4NCj4gPiArKi8N Cj4gPiArU1RBVElDDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0FjcGlWaWV3 ICgNCj4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFKiBTeXN0ZW1UYWJsZQ0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsgIEVGSV9DT05GSUdVUkFUSU9OX1RB QkxFKiBFZmlDb25maWd1cmF0aW9uVGFibGU7DQo+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAg ICAgIEZvdW5kQWNwaVRhYmxlOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICBPcmln aW5hbEF0dHJpYnV0ZTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgUHJpbnRBdHRy aWJ1dGU7DQo+ID4gKyAgRVJFUE9SVF9PUFRJT04gICAgICAgICAgIFJlcG9ydE9wdGlvbjsNCj4g PiArICBVSU5UOCogICAgICAgICAgICAgICAgICAgUnNkcFB0cjsNCj4gPiArICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgUnNkcExlbmd0aDsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgUnNkcFJldmlzaW9uOw0KPiA+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgICBSc2RwUGFy c2VyUHJvYzsNCj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgVHJhY2U7DQo+ID4gKw0K PiA+ICsgIC8vIFNlYXJjaCB0aGUgdGFibGUgZm9yIGFuIGVudHJ5IHRoYXQgbWF0Y2hlcyB0aGUg QUNQSSBUYWJsZSBHdWlkDQo+ID4gKyAgRm91bmRBY3BpVGFibGUgPSBGQUxTRTsNCj4gPiArICBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCBTeXN0ZW1UYWJsZS0+TnVtYmVyT2ZUYWJsZUVudHJpZXM7 IEluZGV4KyspIHsNCj4gPiArICAgIGlmIChDb21wYXJlR3VpZCAoJmdFZmlBY3BpVGFibGVHdWlk LA0KPiA+ICsgICAgICAgICAgJihTeXN0ZW1UYWJsZS0+Q29uZmlndXJhdGlvblRhYmxlW0luZGV4 XS5WZW5kb3JHdWlkKSkpIHsNCj4gPiArICAgICAgRWZpQ29uZmlndXJhdGlvblRhYmxlID0gJlN5 c3RlbVRhYmxlLT5Db25maWd1cmF0aW9uVGFibGVbSW5kZXhdOw0KPiA+ICsgICAgICBGb3VuZEFj cGlUYWJsZSA9IFRSVUU7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgaWYgKEZvdW5kQWNwaVRhYmxlKSB7DQo+ID4gKyAgICBSc2RwUHRyID0g KFVJTlQ4KilFZmlDb25maWd1cmF0aW9uVGFibGUtPlZlbmRvclRhYmxlOw0KPiA+ICsNCj4gPiAr ICAgIC8vIFRoZSBSU0RQIHJldmlzaW9uIGlzIDEgYnl0ZSBzdGFydGluZyBhdCBvZmZzZXQgMTUN Cj4gPiArICAgIFJzZHBSZXZpc2lvbiA9ICooUnNkcFB0ciArIFJTRFBfUkVWSVNJT05fT0ZGU0VU KTsNCj4gPiArDQo+ID4gKyAgICBpZiAoUnNkcFJldmlzaW9uIDwgMikgew0KPiA+ICsgICAgICBQ cmludCAoDQo+ID4gKyAgICAgICAgTCJFUlJPUjogUlNEUCB2ZXJzaW9uIGxlc3MgdGhhbiAyIGlz IG5vdCBzdXBwb3J0ZWQuXG4iDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgcmV0dXJuIEVG SV9VTlNVUFBPUlRFRDsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICAvLyBUaGUgUlNEUCBs ZW5ndGggaXMgNCBieXRlcyBzdGFydGluZyBhdCBvZmZzZXQgMjANCj4gPiArICAgIFJzZHBMZW5n dGggPSAqKFVJTlQzMiopKFJzZHBQdHIgKyBSU0RQX0xFTkdUSF9PRkZTRVQpOw0KPiA+ICsNCj4g PiArICAgIFRyYWNlID0gUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAoUlNEUF9UQUJMRV9JTkZP LCBSc2RwUHRyLA0KPiBSc2RwTGVuZ3RoKTsNCj4gPiArDQo+ID4gKyAgICBTdGF0dXMgPSBHZXRQ YXJzZXIgKFJTRFBfVEFCTEVfSU5GTywgJlJzZHBQYXJzZXJQcm9jKTsNCj4gPiArICAgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgUHJpbnQgKA0KPiA+ICsgICAgICAgIEwi RVJST1I6IE5vIHJlZ2lzdGVyZWQgcGFyc2VyIGZvdW5kIGZvciBSU0RQLlxuIg0KPiA+ICsgICAg ICAgICk7DQo+ID4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ ICsgICAgUnNkcFBhcnNlclByb2MgKA0KPiA+ICsgICAgICBUcmFjZSwNCj4gPiArICAgICAgUnNk cFB0ciwNCj4gPiArICAgICAgUnNkcExlbmd0aCwNCj4gPiArICAgICAgUnNkcFJldmlzaW9uDQo+ ID4gKyAgICAgICk7DQo+ID4gKw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBJbmNyZW1lbnRF cnJvckNvdW50ICgpOw0KPiA+ICsgICAgUHJpbnQgKA0KPiA+ICsgICAgICBMIkVSUk9SOiBGYWls ZWQgdG8gZmluZCBBQ1BJIFRhYmxlIEd1aWQgaW4gU3lzdGVtIENvbmZpZ3VyYXRpb24gVGFibGUu XG4iDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIFJlcG9ydE9wdGlvbiA9IEdldFJlcG9ydE9wdGlvbiAoKTsNCj4g PiArICBpZiAoRVJFUE9SVF9UQUJMRV9MSVNUICE9IFJlcG9ydE9wdGlvbikgew0KPiA+ICsgICAg aWYgKCgoRVJFUE9SVF9TRUxFQ1RFRCA9PSBSZXBvcnRPcHRpb24pICB8fA0KPiA+ICsgICAgICAg ICAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFID09IFJlcG9ydE9wdGlvbikpICYmDQo+ID4gKyAgICAg ICAgKCFtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZCkpIHsNCj4gPiArICAgICAgUHJpbnQgKEwiXG5S ZXF1ZXN0ZWQgQUNQSSBUYWJsZSBub3QgZm91bmQuXG4iKTsNCj4gPiArICAgIH0gZWxzZSBpZiAo RVJFUE9SVF9EVU1QX0JJTl9GSUxFICE9IFJlcG9ydE9wdGlvbikgew0KPiA+ICsgICAgICBPcmln aW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ID4gKw0KPiA+ ICsgICAgICBQcmludCAoTCJcblRhYmxlIFN0YXRpc3RpY3M6XG4iKTsNCj4gPiArDQo+ID4gKyAg ICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gPiArICAgICAgICBQcmludEF0 dHJpYnV0ZSA9IChHZXRFcnJvckNvdW50ICgpID4gMCkgPw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRUZJX1RFWFRfQVRUUiAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9SRUQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoT3Jp Z2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICkgOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3Jp Z2luYWxBdHRyaWJ1dGU7DQo+ID4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAo Z1NULT5Db25PdXQsIFByaW50QXR0cmlidXRlKTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBQ cmludCAoTCJcdCVkIEVycm9yKHMpXG4iLCBHZXRFcnJvckNvdW50ICgpKTsNCj4gPiArDQo+ID4g KyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gPiArICAgICAgICBQcmlu dEF0dHJpYnV0ZSA9IChHZXRXYXJuaW5nQ291bnQgKCkgPiAwKSA/DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSICgNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRUZJX1JFRCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKSA6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gPiArDQo+ID4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNl dEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIFByaW50QXR0cmlidXRlKTsNCj4gPiArICAgICAgfQ0K PiA+ICsgICAgICBQcmludCAoTCJcdCVkIFdhcm5pbmcocylcbiIsIEdldFdhcm5pbmdDb3VudCAo KSk7DQo+ID4gKw0KPiA+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ ID4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdp bmFsQXR0cmlidXRlKTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZ1 bmN0aW9uIGZvciAnYWNwaXZpZXcnIGNvbW1hbmQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0g SW1hZ2VIYW5kbGUgIEhhbmRsZSB0byB0aGUgSW1hZ2UgKE5VTEwgaWYgSW50ZXJuYWwpLg0KPiA+ ICsgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZSAo TlVMTCBpZiBJbnRlcm5hbCkuDQo+ID4gKyovDQo+ID4gK1NIRUxMX1NUQVRVUw0KPiA+ICtFRklB UEkNCj4gPiArU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcgKA0KPiA+ICsgIElOIEVGSV9IQU5ETEUg ICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUqIFN5c3RlbVRh YmxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgIFN0YXR1czsN Cj4gPiArICBTSEVMTF9TVEFUVVMgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9TVUNDRVNTOw0K PiA+ICsgIExJU1RfRU5UUlkqICAgICAgICBQYWNrYWdlID0gTlVMTDsNCj4gPiArICBDSEFSMTYq ICAgICAgICAgICAgUHJvYmxlbVBhcmFtOw0KPiA+ICsgIENPTlNUIENIQVIxNiogICAgICBUZW1w Ow0KPiA+ICsgIENIQVI4ICAgICAgICAgICAgICBDb2xvdXJPcHRpb25bOF07DQo+ID4gKyAgU0hF TExfRklMRV9IQU5ETEUgIFRtcER1bXBGaWxlSGFuZGxlID0gTlVMTDsNCj4gPiArDQo+ID4gKyAg Ly8gU2V0IERlZmF1bHRzDQo+ID4gKyAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX0FMTDsNCj4gPiAr ICBtVGFibGVDb3VudCA9IDA7DQo+ID4gKyAgbUJpblRhYmxlQ291bnQgPSAwOw0KPiA+ICsgIG1T ZWxlY3RlZEFjcGlUYWJsZSA9IDA7DQo+ID4gKyAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSA9IE5V TEw7DQo+ID4gKyAgbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQgPSBGQUxTRTsNCj4gPiArICBtVmVy Ym9zZSA9IFRSVUU7DQo+ID4gKyAgbUNvbnNpc3RlbmN5Q2hlY2sgPSBUUlVFOw0KPiA+ICsNCj4g PiArICAvLyBSZXNldCBUaGUgZXJyb3Ivd2FybmluZyBjb3VudGVycw0KPiA+ICsgIFJlc2V0RXJy b3JDb3VudCAoKTsNCj4gPiArICBSZXNldFdhcm5pbmdDb3VudCAoKTsNCj4gPiArDQo+ID4gKyAg U3RhdHVzID0gU2hlbGxDb21tYW5kTGluZVBhcnNlIChQYXJhbUxpc3QsICZQYWNrYWdlLCAmUHJv YmxlbVBhcmFtLA0KPiBUUlVFKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4gKyAgICBpZiAoU3RhdHVzID09IEVGSV9WT0xVTUVfQ09SUlVQVEVEICYmIFByb2JsZW1QYXJh bSAhPSBOVUxMKSB7DQo+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gKyAgICAgICAg LTEsDQo+ID4gKyAgICAgICAgLTEsDQo+ID4gKyAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICBT VFJJTkdfVE9LRU4gKFNUUl9HRU5fUFJPQkxFTSksDQo+ID4gKyAgICAgICAgZ1NoZWxsQWNwaVZp ZXdIaWlIYW5kbGUsDQo+ID4gKyAgICAgICAgTCJhY3BpdmlldyIsDQo+ID4gKyAgICAgICAgUHJv YmxlbVBhcmFtDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgRnJlZVBvb2wgKFByb2JsZW1Q YXJhbSk7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICBQcmludCAoTCJhY3Bpdmlldzog RXJyb3IgcHJvY2Vzc2luZyBpbnB1dCBwYXJhbWV0ZXIocylcbiIpOw0KPiA+ICsgICAgfQ0KPiA+ ICsgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9IGVs c2Ugew0KPiA+ICsgICAgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRDb3VudCAoUGFja2FnZSkgPiAx KSB7DQo+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gKyAgICAgICAgLTEsDQo+ID4g KyAgICAgICAgLTEsDQo+ID4gKyAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICBTVFJJTkdfVE9L RU4gKFNUUl9HRU5fVE9PX01BTlkpLA0KPiA+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFu ZGxlLA0KPiA+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAg ICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICAgIH0gZWxz ZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLT8iKSkgew0KPiA+ICsg ICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ICsgICAgICAgIC0xLA0KPiA+ICsgICAgICAgIC0x LA0KPiA+ICsgICAgICAgIE5VTEwsDQo+ID4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VU X0hFTFBfQUNQSVZJRVcpLA0KPiA+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0K PiA+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgIH0gZWxz ZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLXMiKSAmJg0KPiA+ICsg ICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLXMiKSA9 PSBOVUxMKSB7DQo+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gKyAgICAgICAgLTEs DQo+ID4gKyAgICAgICAgLTEsDQo+ID4gKyAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICBTVFJJ TkdfVE9LRU4gKFNUUl9HRU5fTk9fVkFMVUUpLA0KPiA+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3 SGlpSGFuZGxlLA0KPiA+ICsgICAgICAgIEwiYWNwaXZpZXciLA0KPiA+ICsgICAgICAgIEwiLXMi DQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPiArICAgIH0gZWxzZSBpZiAoKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFn IChQYWNrYWdlLCBMIi1zIikgJiYNCj4gPiArICAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExp bmVHZXRGbGFnIChQYWNrYWdlLCBMIi1sIikpKSB7DQo+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlF eCAoDQo+ID4gKyAgICAgICAgLTEsDQo+ID4gKyAgICAgICAgLTEsDQo+ID4gKyAgICAgICAgTlVM TCwNCj4gPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fVE9PX01BTlkpLA0KPiA+ICsg ICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiA+ICsgICAgICAgIEwiYWNwaXZpZXci DQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcg KFBhY2thZ2UsIEwiLWgiKSAmJg0KPiA+ICsgICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5l R2V0VmFsdWUgKFBhY2thZ2UsIEwiLWgiKSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgU2hlbGxQ cmludEhpaUV4ICgNCj4gPiArICAgICAgICAgIC0xLA0KPiA+ICsgICAgICAgICAgLTEsDQo+ID4g KyAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX05P X1ZBTFVFKSwNCj4gPiArICAgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiA+ICsg ICAgICAgICAgTCJhY3BpdmlldyIsDQo+ID4gKyAgICAgICAgICBMIi1oIg0KPiA+ICsgICAgICAg ICAgKTsNCj4gPiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVS Ow0KPiA+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwg TCItZCIpICYmDQo+ID4gKyAgICAgICAgICAgICAgICFTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAo UGFja2FnZSwgTCItcyIpKSB7DQo+ID4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiAr ICAgICAgICAgIC0xLA0KPiA+ICsgICAgICAgICAgLTEsDQo+ID4gKyAgICAgICAgICBOVUxMLA0K PiA+ICsgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX01JU1NJTkdfT1BUSU9OKSwNCj4g PiArICAgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiA+ICsgICAgICAgICAgTCJh Y3BpdmlldyIsDQo+ID4gKyAgICAgICAgICBMIi1zIiwNCj4gPiArICAgICAgICAgIEwiLWQiDQo+ ID4gKyAgICAgICAgICApOw0KPiA+ICsgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJ RF9QQVJBTUVURVI7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAvLyBDaGVjayBpZiB0 aGUgY29sb3VyIG9wdGlvbiBpcyBzZXQNCj4gPiArICAgICAgVGVtcCA9IFNoZWxsQ29tbWFuZExp bmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItaCIpOw0KPiA+ICsgICAgICBpZiAoVGVtcCAhPSBOVUxM KSB7DQo+ID4gKyAgICAgICAgVW5pY29kZVN0clRvQXNjaWlTdHJTIChUZW1wLCBDb2xvdXJPcHRp b24sIHNpemVvZiAoQ29sb3VyT3B0aW9uKSk7DQo+ID4gKyAgICAgICAgaWYgKChBc2NpaVN0cmlD bXAgKENvbG91ck9wdGlvbiwgIk9OIikgPT0gMCkgfHwNCj4gPiArICAgICAgICAgICAgKEFzY2lp U3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiVFJVRSIpID09IDApKSB7DQo+ID4gKyAgICAgICAgICBT ZXRDb2xvdXJIaWdobGlnaHRpbmcgKFRSVUUpOw0KPiA+ICsgICAgICAgIH0gZWxzZSBpZiAoKEFz Y2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiT0ZGIikgPT0gMCkgfHwNCj4gPiArICAgICAgICAg ICAgICAgICAgIChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIkZBTFNFIikgPT0gMCkpIHsN Cj4gPiArICAgICAgICAgIFNldENvbG91ckhpZ2hsaWdodGluZyAoRkFMU0UpOw0KPiA+ICsgICAg ICAgIH0NCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgaWYgKFNoZWxsQ29tbWFuZExp bmVHZXRGbGFnIChQYWNrYWdlLCBMIi1sIikpIHsNCj4gPiArICAgICAgICBtUmVwb3J0VHlwZSA9 IEVSRVBPUlRfVEFCTEVfTElTVDsNCj4gPiArICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICBt U2VsZWN0ZWRBY3BpVGFibGVOYW1lID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNrYWdl LCBMIi1zIik7DQo+ID4gKyAgICAgICAgaWYgKG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUgIT0gTlVM TCkgew0KPiA+ICsgICAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlID0gKFVJTlQzMilDb252ZXJ0 U3RyVG9BY3BpU2lnbmF0dXJlICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICAgICAgICAgIG1SZXBvcnRUeXBlID0g RVJFUE9SVF9TRUxFQ1RFRDsNCj4gPiArDQo+ID4gKyAgICAgICAgICBpZiAoU2hlbGxDb21tYW5k TGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWQiKSkgIHsNCj4gPiArICAgICAgICAgICAgLy8gQ3Jl YXRlIGEgdGVtcG9yYXJ5IGZpbGUgdG8gY2hlY2sgaWYgdGhlIG1lZGlhIGlzIHdyaXRhYmxlLg0K PiA+ICsgICAgICAgICAgICBDSEFSMTYgRmlsZU5hbWVCdWZmZXJbTUFYX0ZJTEVfTkFNRV9MRU5d Ow0KPiA+ICsgICAgICAgICAgICBtUmVwb3J0VHlwZSA9IEVSRVBPUlRfRFVNUF9CSU5fRklMRTsN Cj4gPiArDQo+ID4gKyAgICAgICAgICAgIFVuaWNvZGVTUHJpbnQgKA0KPiA+ICsgICAgICAgICAg ICAgIEZpbGVOYW1lQnVmZmVyLA0KPiA+ICsgICAgICAgICAgICAgIHNpemVvZiAoRmlsZU5hbWVC dWZmZXIpLA0KPiA+ICsgICAgICAgICAgICAgIEwiLlxcJXMlMDRkLnRtcCIsDQo+ID4gKyAgICAg ICAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSwNCj4gPiArICAgICAgICAgICAgICBtQmlu VGFibGVDb3VudA0KPiA+ICsgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBGaWxlTmFtZUJ1ZmZlciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAmVG1wRHVt cEZpbGVIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9S RUFEIHwgRUZJX0ZJTEVfTU9ERV9XUklURSB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg RUZJX0ZJTEVfTU9ERV9DUkVBVEUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgMA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgICAgICAgICAgU2hlbGxTdGF0dXMgPSBT SEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICAgICAgICAgICAgICBUbXBEdW1wRmlsZUhh bmRsZSA9IE5VTEw7DQo+ID4gKyAgICAgICAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiAr ICAgICAgICAgICAgICAgIC0xLA0KPiA+ICsgICAgICAgICAgICAgICAgLTEsDQo+ID4gKyAgICAg ICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJf R0VOX1JFQURPTkxZX01FRElBKSwNCj4gPiArICAgICAgICAgICAgICAgIGdTaGVsbEFjcGlWaWV3 SGlpSGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgTCJhY3BpdmlldyINCj4gPiArICAgICAg ICAgICAgICAgICk7DQo+ID4gKyAgICAgICAgICAgICAgZ290byBEb25lOw0KPiA+ICsgICAgICAg ICAgICB9DQo+ID4gKyAgICAgICAgICAgIC8vIERlbGV0ZSBUZW1wb3JhcnkgZmlsZS4NCj4gPiAr ICAgICAgICAgICAgU2hlbGxEZWxldGVGaWxlICgmVG1wRHVtcEZpbGVIYW5kbGUpOw0KPiA+ICsg ICAgICAgICAgfSAvLyAtZA0KPiA+ICsgICAgICAgIH0gLy8gLXMNCj4gPiArICAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAgLy8gUGFyc2UgQUNQSSBUYWJsZSBpbmZvcm1hdGlvbg0KPiA+ICsgICAg ICBTdGF0dXMgPSBBY3BpVmlldyAoU3lzdGVtVGFibGUpOw0KPiA+ICsgICAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9OT1RfRk9V TkQ7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICtEb25l Og0KPiA+ICsgIGlmIChQYWNrYWdlICE9IE5VTEwpIHsNCj4gPiArICAgIFNoZWxsQ29tbWFuZExp bmVGcmVlVmFyTGlzdCAoUGFja2FnZSk7DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBTaGVsbFN0 YXR1czsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5oDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uMDM1NjFlYTgxNjg2ODIxZTM3YzA1ZDkwDQo+IGYwNTM3MzFmZGU2M2ZiYjUNCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvQWNwaVZpZXcuaA0KPiA+IEBAIC0wLDAgKzEsMTAzIEBADQo+ID4gKy8qKg0KPiA+ ICsgIEhlYWRlciBmaWxlIGZvciBBY3BpVmlldw0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMp IDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ID4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBh dA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAN Cj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIEFDUElWSUVXX0hfDQo+ID4gKyNk ZWZpbmUgQUNQSVZJRVdfSF8NCj4gPiArDQo+ID4gKy8qKiBBIG1hY3JvIHRvIGRlZmluZSB0aGUg bWF4IGZpbGUgbmFtZSBsZW5ndGgNCj4gPiArKi8NCj4gPiArI2RlZmluZSBNQVhfRklMRV9OQU1F X0xFTiAgICAxMjgNCj4gPiArDQo+ID4gKy8qKiBPZmZzZXQgdG8gdGhlIFJTRFAgcmV2aXNpb24g ZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFJTRFANCj4gPiArKi8NCj4gPiArI2RlZmluZSBSU0RQX1JF VklTSU9OX09GRlNFVCAxNQ0KPiA+ICsNCj4gPiArLyoqIE9mZnNldCB0byB0aGUgUlNEUCBsZW5n dGggZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFJTRFANCj4gPiArKi8NCj4gPiArI2RlZmluZSBSU0RQ X0xFTkdUSF9PRkZTRVQgICAyMA0KPiA+ICsNCj4gPiArLyoqIFRoZSBFUkVQT1JUX09QVElPTiBl bnVtIGRlc2NyaWJlcyBBQ1BJIHRhYmxlIFJlcG9ydGluZyBvcHRpb25zLg0KPiA+ICsqLw0KPiA+ ICt0eXBlZGVmIGVudW0gUmVwb3J0T3B0aW9uIHsNCj4gPiArICBFUkVQT1JUX0FMTCwgICAgICAg ICAgICAvLy88IFJlcG9ydCBBbGwgdGFibGVzLg0KPiA+ICsgIEVSRVBPUlRfU0VMRUNURUQsICAg ICAgIC8vLzwgUmVwb3J0IFNlbGVjdGVkIHRhYmxlLg0KPiA+ICsgIEVSRVBPUlRfVEFCTEVfTElT VCwgICAgIC8vLzwgUmVwb3J0IExpc3Qgb2YgdGFibGVzLg0KPiA+ICsgIEVSRVBPUlRfRFVNUF9C SU5fRklMRSwgIC8vLzwgRHVtcCBzZWxlY3RlZCB0YWJsZSB0byBhIGZpbGUuDQo+ID4gKyAgRVJF UE9SVF9NQVgNCj4gPiArfSBFUkVQT1JUX09QVElPTjsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyIHRvIFplcm8uDQo+ID4g KyovDQo+ID4gK1ZPSUQNCj4gPiArUmVzZXRFcnJvckNvdW50ICgNCj4gPiArICBWT0lEDQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFi bGUgZXJyb3IgY291bnQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQg b2YgZXJyb3JzIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gPiArKi8NCj4gPiArVUlO VDMyDQo+ID4gK0dldEVycm9yQ291bnQgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsN Cj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291 bnRlciB0byBaZXJvLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK1Jlc2V0V2FybmluZ0NvdW50 ICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudC4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRh Ymxlcy4NCj4gPiArKi8NCj4gPiArVUlOVDMyDQo+ID4gK0dldFdhcm5pbmdDb3VudCAoDQo+ID4g KyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBU UlVFIGlmIGNvbG91ciBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gPiArKi8NCj4gPiArQk9P TEVBTg0KPiA+ICtHZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiA+ICsgIFZPSUQNCj4gPiArICAp Ow0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgY29sb3VyIGhpZ2hsaWdo dGluZyBzdGF0dXMuDQo+ID4gKw0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK1NldENvbG91ckhp Z2hsaWdodGluZyAoDQo+ID4gKyAgQk9PTEVBTiBIaWdobGlnaHQNCj4gPiArICApOw0KPiA+ICsN Cj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSB0YWJsZSByZXBvcnRpbmcgb3B0 aW9ucyBmb3IgdGhlIEFDUEkgdGFibGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFNpZ25h dHVyZSBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gVGFibGVQ dHIgIFBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgZGF0YS4NCj4gPiArICBAcGFyYW0gW2luXSBM ZW5ndGggICAgVGhlIGxlbmd0aCBmbyB0aGUgQUNQSSB0YWJsZS4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBSZXR1cm5zIFRSVUUgaWYgdGhlIEFDUEkgdGFibGUgc2hvdWxkIGJlIHRyYWNlZC4NCj4g PiArKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zICgNCj4g PiArICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCj4gPiArICBJTiBDT05TVCBVSU5UOCog IFRhYmxlUHRyLA0KPiA+ICsgIElOIENPTlNUIFVJTlQzMiAgTGVuZ3RoDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKyNlbmRpZiAvLyBBQ1BJVklFV19IXw0KPiA+IGRpZmYgLS1naXQNCj4gYS9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdy dFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIz ZjlhNzkwMTJhOTdkMDNkODhlYjNlDQo+IDE2MGI3N2Q4NjlmY2UzOTQNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXIuYw0KPiA+IEBAIC0wLDAgKzEsNjkgQEANCj4g PiArLyoqDQo+ID4gKyAgQkdSVCB0YWJsZSBwYXJzZXINCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0 IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4g KyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ICsgIGFy ZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiA+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91 bmQgYXQNCj4gPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ID4gKw0KPiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ID4gKw0KPiA+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ICsgICAgLSBB Q1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ID4gKyoq Lw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgi DQo+ID4gKyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCINCj4gPiArDQo+ID4gKy8vIExvY2Fs IHZhcmlhYmxlcw0KPiA+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3Bp SGRySW5mbzsNCj4gPiArDQo+ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBBQ1BJIEJEUlQgVGFibGUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBCZ3J0UGFyc2VyW10gPSB7DQo+ID4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRy SW5mbyksDQo+ID4gKyAge0wiVmVyc2lvbiIsIDIsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPiArICB7TCJTdGF0dXMiLCAxLCAzOCwgTCIweCV4IiwgTlVMTCwgIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkltYWdlIFR5cGUiLCAxLCAzOSwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiSW1hZ2UgQWRkcmVzcyIsIDgsIDQw LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiSW1hZ2UgT2Zm c2V0IFgiLCA0LCA0OCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtM IkltYWdlIE9mZnNldCBZIiwgNCwgNTIsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEJH UlQgdGFibGUuDQo+ID4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFy c2VzIHRoZSBCR1JUIHRhYmxlIGFuZA0KPiA+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVs ZHMuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9u IG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gVHJh Y2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9m IHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBS ZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8NCj4gPiArVk9JRA0KPiA+ICtFRklB UEkNCj4gPiArUGFyc2VBY3BpQmdydCAoDQo+ID4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPiAr ICBJTiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4g PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgaWYgKCFUcmFjZSkgew0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgUGFyc2VBY3BpICgNCj4gPiArICAgIFRyYWNlLA0KPiA+ICsgICAgMCwNCj4gPiArICAgICJC R1JUIiwNCj4gPiArICAgIFB0ciwNCj4gPiArICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICAg IFBBUlNFUl9QQVJBTVMgKEJncnRQYXJzZXIpDQo+ID4gKyAgICApOw0KPiA+ICt9DQo+ID4gZGlm ZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi5mNzBhMTMyOGNjOTc2NTZmNWQ2NTFlYjAxDQo+IGU4MGRmMzIzNjI5MWE0 YQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jDQo+ID4gQEAg LTAsMCArMSwyNDIgQEANCj4gPiArLyoqDQo+ID4gKyAgREJHMiB0YWJsZSBwYXJzZXINCj4gPiAr DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+ID4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiA+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiA+ICsgIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gKw0KPiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RS SUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gKw0KPiA+ICsgIEBwYXIgUmVmZXJlbmNl KHMpOg0KPiA+ICsgICAgLSBNaWNyb3NvZnQgRGVidWcgUG9ydCBUYWJsZSAyIChEQkcyKSBTcGVj aWZpY2F0aW9uIC0gRGVjZW1iZXIgMTAsIDIwMTUuDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvRGVidWdQb3J0MlRhYmxlLmg+DQo+ID4gKyNpbmNsdWRl IDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gPiAr I2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiA+ICsNCj4gPiArLy8gTG9jYWwgdmFyaWFi bGVzIHBvaW50aW5nIHRvIHRoZSB0YWJsZSBmaWVsZHMNCj4gPiArU1RBVElDIENPTlNUIFVJTlQz MiogT2Zmc2V0RGJnRGV2aWNlSW5mbzsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQzMiogTnVtYmVy RGJnRGV2aWNlSW5mbzsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQxNiogRGJnRGV2SW5mb0xlbjsN Cj4gPiArU1RBVElDIENPTlNUIFVJTlQ4KiAgR2FzQ291bnQ7DQo+ID4gK1NUQVRJQyBDT05TVCBV SU5UMTYqIE5hbWVTcGFjZVN0cmluZ0xlbmd0aDsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQxNiog TmFtZVNwYWNlU3RyaW5nT2Zmc2V0Ow0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBPRU1EYXRh TGVuZ3RoOw0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBPRU1EYXRhT2Zmc2V0Ow0KPiA+ICtT VEFUSUMgQ09OU1QgVUlOVDE2KiBCYXNlQWRkclJlZ09mZnNldDsNCj4gPiArU1RBVElDIENPTlNU IFVJTlQxNiogQWRkclNpemVPZmZzZXQ7DQo+ID4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hF QURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gVmFs aWRhdGVzIHRoZSBOYW1lU3BhY2Ugc3RyaW5nIGxlbmd0aC4NCj4gPiArDQo+ID4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsg IEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0 aW9uIGUuZy4gdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4g K1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlkYXRlTmFtZVNwYWNlU3RyTGVuICgNCj4gPiAr ICBJTiAgVUlOVDgqIFB0ciwNCj4gPiArICBJTiAgVk9JRCogIENvbnRleHQNCj4gPiArICApOw0K PiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBkZWJ1ZyBkZXZpY2UgaW5m b3JtYXRpb24gc3RydWN0dXJlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSAgUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbb3V0XSBM ZW5ndGggIFBvaW50ZXIgaW4gd2hpY2ggdGhlIGxlbmd0aCBvZiB0aGUgZGVidWcNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBkZXZpY2UgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQuDQo+ID4g KyovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtEdW1wRGJnRGV2 aWNlSW5mbyAoDQo+ID4gKyAgSU4gIFVJTlQ4KiAgUHRyLA0KPiA+ICsgIE9VVCBVSU5UMzIqIExl bmd0aA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvLy8gQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVz Y3JpYmluZyB0aGUgQUNQSSBEQkcyIHRhYmxlLg0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJT RVIgRGJnMlBhcnNlcltdID0gew0KPiA+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkcklu Zm8pLA0KPiA+ICsgIHtMIk9mZnNldERiZ0RldmljZUluZm8iLCA0LCAzNiwgTCIweCV4IiwgTlVM TCwNCj4gPiArICAgKFZPSUQqKikmT2Zmc2V0RGJnRGV2aWNlSW5mbywgTlVMTCwgTlVMTH0sDQo+ ID4gKyAge0wiTnVtYmVyRGJnRGV2aWNlSW5mbyIsIDQsIDQwLCBMIiVkIiwgTlVMTCwNCj4gPiAr ICAgKFZPSUQqKikmTnVtYmVyRGJnRGV2aWNlSW5mbywgTlVMTCwgTlVMTH0NCj4gPiArfTsNCj4g PiArDQo+ID4gKy8vLyBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBkZWJ1ZyBk ZXZpY2UgaW5mb3JtYXRpb24uDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBEYmdEZXZJ bmZvUGFyc2VyW10gPSB7DQo+ID4gKyAge0wiUmV2aXNpb24iLCAxLCAwLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVM TCwgKFZPSUQqKikmRGJnRGV2SW5mb0xlbiwgTlVMTCwgTlVMTH0sDQo+ID4gKw0KPiA+ICsgIHtM IkdlbmVyaWMgQWRkcmVzcyBSZWdpc3RlcnMgQ291bnQiLCAxLCAzLCBMIjB4JXgiLCBOVUxMLA0K PiA+ICsgICAoVk9JRCoqKSZHYXNDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiTmFtZVNw YWNlIFN0cmluZyBMZW5ndGgiLCAyLCA0LCBMIiVkIiwgTlVMTCwNCj4gPiArICAgKFZPSUQqKikm TmFtZVNwYWNlU3RyaW5nTGVuZ3RoLCBWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiwgTlVMTH0sDQo+ ID4gKyAge0wiTmFtZVNwYWNlIFN0cmluZyBPZmZzZXQiLCAyLCA2LCBMIjB4JXgiLCBOVUxMLA0K PiA+ICsgICAoVk9JRCoqKSZOYW1lU3BhY2VTdHJpbmdPZmZzZXQsIE5VTEwsIE5VTEx9LA0KPiA+ ICsgIHtMIk9FTSBEYXRhIExlbmd0aCIsIDIsIDgsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZPRU1E YXRhTGVuZ3RoLA0KPiA+ICsgICBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJPRU0gRGF0YSBPZmZz ZXQiLCAyLCAxMCwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmT0VNRGF0YU9mZnNldCwNCj4gPiAr ICAgTlVMTCwgTlVMTH0sDQo+ID4gKw0KPiA+ICsgIHtMIlBvcnQgVHlwZSIsIDIsIDEyLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQb3J0IFN1YlR5cGUiLCAy LCAxNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmVzZXJ2 ZWQiLCAyLCAxNiwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsNCj4gPiAr ICB7TCJCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgT2Zmc2V0IiwgMiwgMTgsIEwiMHgleCIsIE5VTEws DQo+ID4gKyAgIChWT0lEKiopJkJhc2VBZGRyUmVnT2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gPiAr ICB7TCJBZGRyZXNzIFNpemUgT2Zmc2V0IiwgMiwgMjAsIEwiMHgleCIsIE5VTEwsDQo+ID4gKyAg IChWT0lEKiopJkFkZHJTaXplT2Zmc2V0LCBOVUxMLCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBOYW1lU3BhY2Ugc3RyaW5nIGxlbmd0 aC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBj b250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4g PiArKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlkYXRl TmFtZVNwYWNlU3RyTGVuICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFZPSUQq ICBDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDE2IE5hbWVTcGFjZVN0ckxl biA9ICooVUlOVDE2KilQdHI7DQo+ID4gKyAgaWYgKE5hbWVTcGFjZVN0ckxlbiA8IDIpIHsNCj4g PiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gKyAgICBQcmludCAoDQo+ID4gKyAg ICAgIEwiXG5FUlJPUjogTmFtZXNwYWNlU3RyaW5nIExlbmd0aCA9ICVkLiBJZiBubyBOYW1lc3Bh Y2UgZGV2aWNlDQo+IGV4aXN0cyxcbiINCj4gPiArICAgICAgICIgICAgdGhlbiBOYW1lc3BhY2VT dHJpbmdbXSBtdXN0IGNvbnRhaW4gYSBwZXJpb2QgJy4nIiwNCj4gPiArICAgICAgTmFtZVNwYWNl U3RyTGVuDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiog VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIGRlYnVnIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1 cmUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dICBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFtIFtvdXRdIFB0ciAgICAgUG9pbnRlciBp biB3aGljaCB0aGUgbGVuZ3RoIG9mIHRoZSBkZWJ1Zw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGRldmljZSBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZC4NCj4gPiArKi8NCj4gPiArU1RBVElD DQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0R1bXBEYmdEZXZpY2VJbmZvICgNCj4gPiAr ICBJTiAgVUlOVDgqICBQdHIsDQo+ID4gKyAgT1VUIFVJTlQzMiogTGVuZ3RoDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgVUlOVDE2ICBJbmRleDsNCj4gPiArICBVSU5UOCogIERhdGFQdHI7DQo+ ID4gKyAgVUlOVDMyKiBBZGRyU2l6ZTsNCj4gPiArDQo+ID4gKyAgLy8gUGFyc2UgdGhlIGRlYnVn IGRldmljZSBpbmZvIHRvIGdldCB0aGUgTGVuZ3RoDQo+ID4gKyAgUGFyc2VBY3BpICgNCj4gPiAr ICAgIEZBTFNFLA0KPiA+ICsgICAgMCwNCj4gPiArICAgICJEZWJ1ZyBEZXZpY2UgSW5mbyIsDQo+ ID4gKyAgICBQdHIsDQo+ID4gKyAgICAzLCAgLy8gTGVuZ3RoIGlzIDIgYnl0ZXMgc3RhcnRpbmcg YXQgb2Zmc2V0IDENCj4gPiArICAgIFBBUlNFUl9QQVJBTVMgKERiZ0RldkluZm9QYXJzZXIpDQo+ ID4gKyAgICApOw0KPiA+ICsNCj4gPiArICBQYXJzZUFjcGkgKA0KPiA+ICsgICAgVFJVRSwNCj4g PiArICAgIDIsDQo+ID4gKyAgICAiRGVidWcgRGV2aWNlIEluZm8iLA0KPiA+ICsgICAgUHRyLA0K PiA+ICsgICAgKkRiZ0RldkluZm9MZW4sDQo+ID4gKyAgICBQQVJTRVJfUEFSQU1TIChEYmdEZXZJ bmZvUGFyc2VyKQ0KPiA+ICsgICAgKTsNCj4gPiArDQo+ID4gKyAgLy8gR0FTIGFuZCBBZGRyZXNz IFNpemUNCj4gPiArICBJbmRleCA9IDA7DQo+ID4gKyAgRGF0YVB0ciA9IFB0ciArICgqQmFzZUFk ZHJSZWdPZmZzZXQpOw0KPiA+ICsgIEFkZHJTaXplID0gKFVJTlQzMiopKFB0ciArICgqQWRkclNp emVPZmZzZXQpKTsNCj4gPiArICB3aGlsZSAoSW5kZXggPCAoKkdhc0NvdW50KSkgew0KPiA+ICsg ICAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiQmFzZUFkZHJlc3NSZWdpc3RlciIpOw0KPiA+ICsgICAg RHVtcEdhc1N0cnVjdCAoRGF0YVB0ciwgNCk7DQo+ID4gKyAgICBQcmludEZpZWxkTmFtZSAoNCwg TCJBZGRyZXNzIFNpemUiKTsNCj4gPiArICAgIFByaW50IChMIjB4JXhcbiIsIEFkZHJTaXplW0lu ZGV4XSk7DQo+ID4gKyAgICBEYXRhUHRyICs9IEdBU19MRU5HVEg7DQo+ID4gKyAgICBJbmRleCsr Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gTmFtZVNwYWNlIFN0cmluZw0KPiA+ICsgIElu ZGV4ID0gMDsNCj4gPiArICBEYXRhUHRyID0gUHRyICsgKCpOYW1lU3BhY2VTdHJpbmdPZmZzZXQp Ow0KPiA+ICsgIFByaW50RmllbGROYW1lICg0LCBMIk5hbWVTcGFjZSBTdHJpbmciKTsNCj4gPiAr ICB3aGlsZSAoSW5kZXggPCAoKk5hbWVTcGFjZVN0cmluZ0xlbmd0aCkpIHsNCj4gPiArICAgIFBy aW50IChMIiVjIiwgRGF0YVB0cltJbmRleCsrXSk7DQo+ID4gKyAgfQ0KPiA+ICsgIFByaW50IChM IlxuIik7DQo+ID4gKw0KPiA+ICsgIC8vIE9FTSBEYXRhDQo+ID4gKyAgSW5kZXggPSAwOw0KPiA+ ICsgIERhdGFQdHIgPSBQdHIgKyAoKk9FTURhdGFPZmZzZXQpOw0KPiA+ICsgIFByaW50RmllbGRO YW1lICg0LCBMIk9FTSBEYXRhIik7DQo+ID4gKyAgd2hpbGUgKEluZGV4IDwgKCpPRU1EYXRhTGVu Z3RoKSkgew0KPiA+ICsgICAgUHJpbnQgKEwiJXggIiwgRGF0YVB0cltJbmRleCsrXSk7DQo+ID4g KyAgICBpZiAoKEluZGV4ICYgNykgPT0gMCkgew0KPiA+ICsgICAgICBQcmludCAoTCJcbiUtKnMg ICAiLCBPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRILCBMIiIpOw0KPiA+ICsgICAgfQ0KPiA+ICsg IH0NCj4gPiArDQo+ID4gKyAgKkxlbmd0aCA9ICpEYmdEZXZJbmZvTGVuOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgREJHMiB0YWJsZS4NCj4g PiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIERCRzIg dGFibGUgYW5kDQo+ID4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ ID4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkg dGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAg ICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFi bGUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJz ZUFjcGlEYmcyICgNCj4gPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAg UHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4 ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UMzIgT2Zm c2V0Ow0KPiA+ICsgIFVJTlQzMiBEYmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiA+ICsgIFVJTlQ4KiBE ZXZJbmZvUHRyOw0KPiA+ICsNCj4gPiArICBpZiAoIVRyYWNlKSB7DQo+ID4gKyAgICByZXR1cm47 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+ICsgICAg ICAgICAgICAgVFJVRSwNCj4gPiArICAgICAgICAgICAgIDAsDQo+ID4gKyAgICAgICAgICAgICAi REJHMiIsDQo+ID4gKyAgICAgICAgICAgICBQdHIsDQo+ID4gKyAgICAgICAgICAgICBBY3BpVGFi bGVMZW5ndGgsDQo+ID4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChEYmcyUGFyc2VyKQ0K PiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArICBEZXZJbmZvUHRyID0gUHRyICsgT2Zmc2V0Ow0K PiA+ICsNCj4gPiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ID4gKyAg ICBEdW1wRGJnRGV2aWNlSW5mbyAoDQo+ID4gKyAgICAgIERldkluZm9QdHIsDQo+ID4gKyAgICAg ICZEYmdEZXZpY2VJbmZvTGVuZ3RoDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgICBPZmZzZXQgKz0g RGJnRGV2aWNlSW5mb0xlbmd0aDsNCj4gPiArICAgIERldkluZm9QdHIgKz0gRGJnRGV2aWNlSW5m b0xlbmd0aDsNCj4gPiArICB9DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJz ZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvRHNkdC9Ec2R0UGFyc2VyLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNDU5YTEy MDk5Y2FlODg4Njc2MTIzZQ0KPiA4ZDU2OTQ2MGZkNjg0ZGIyDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyLmMNCj4gPiBAQCAtMCwwICsxLDQ3IEBADQo+ID4gKy8q Kg0KPiA+ICsgIERTRFQgdGFibGUgcGFyc2VyDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykg MjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiArICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3Ry aWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0 DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K PiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBM SUVELg0KPiA+ICsNCj4gPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gPiArICAgIC0gQUNQSSA2 LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+ICsqKi8NCj4g PiArDQo+ID4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPiArI2luY2x1 ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiA+ ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIEFDUEkgRFNEVCB0YWJsZS4NCj4gPiArICBXaGVuIHRyYWNlIGlzIGVu YWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIERTRFQgdGFibGUgYW5kDQo+ID4gKyAgdHJh Y2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArICBGb3IgdGhlIERTRFQgdGFibGUgb25s eSB0aGUgQUNQSSBoZWFkZXIgZmllbGRzIGFyZSBwYXJzZWQgYW5kDQo+ID4gKyAgdHJhY2VkLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJh Y2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlEc2R0ICgNCj4g PiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ICsgIElO IFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2 aXNpb24NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAoIVRyYWNlKSB7DQo+ID4gKyAgICBy ZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBEdW1wQWNwaUhlYWRlciAoUHRyKTsNCj4g PiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXIu Yw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRjY2IyYWMzYmQ3Njk4YmJlMWNlMDY3OQ0KPiA2 NGJlNTM1MTk4MTNkYjENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJz ZXIuYw0KPiA+IEBAIC0wLDAgKzEsMjYxIEBADQo+ID4gKy8qKg0KPiA+ICsgIEZBRFQgdGFibGUg cGFyc2VyDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UN Cj4gPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRl eHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0K PiBCQVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArICBA cGFyIFJlZmVyZW5jZShzKToNCj4gPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVy cmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxJ bmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5o Pg0KPiA+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiA+ICsjaW5jbHVkZSAiQWNwaVRhYmxl UGFyc2VyLmgiDQo+ID4gKw0KPiA+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gPiArU1RBVElDIENP TlNUIFVJTlQzMiogRHNkdEFkZHJlc3M7DQo+ID4gK1NUQVRJQyBDT05TVCBVSU5UNjQqIFhfRHNk dEFkZHJlc3M7DQo+ID4gK1NUQVRJQyBDT05TVCBVSU5UOCogIEZhZHRNaW5vclJldmlzaW9uOw0K PiA+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4g PiArDQo+ID4gKy8qKiBBIG1hY3JvIGRlZmluaW5nIHRoZSBIYXJkd2FyZSByZWR1Y2VkIEFDUEkg ZmxhZw0KPiA+ICsqLw0KPiA+ICsjZGVmaW5lIEhXX1JFRFVDRURfQUNQSSAgIEJJVDIwDQo+ID4g Kw0KPiA+ICsvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucw0KPiA+ICtDT05TVCBBQ1BJX0RFU0NSSVBU SU9OX0hFQURFUl9JTkZPKiBDT05TVA0KPiA+ICtFRklBUEkNCj4gPiArR2V0QWNwaVhzZHRIZWFk ZXJJbmZvICgNCj4gPiArICBWT0lEDQo+ID4gKyk7DQo+ID4gKw0KPiA+ICtTVEFUSUMNCj4gPiAr Vk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVmFsaWRhdGVGaXJtd2FyZUN0cmwgKA0KPiA+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPiArKTsNCj4gPiArDQo+ ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtWYWxpZGF0ZVhGaXJtd2Fy ZUN0cmwgKA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVk9JRCogIENvbnRleHQN Cj4gPiArKTsNCj4gPiArDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ ICtWYWxpZGF0ZUZsYWdzICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFZPSUQq ICBDb250ZXh0DQo+ID4gKyk7DQo+ID4gKw0KPiA+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkg ZGVzY3JpYmluZyB0aGUgQUNQSSBGQURUIFRhYmxlLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgRmFkdFBhcnNlcltdID0gew0KPiA+ICsgIFBBUlNFX0FDUElfSEVBREVS ICgmQWNwaUhkckluZm8pLA0KPiA+ICsgIHtMIkZJUk1XQVJFX0NUUkwiLCA0LCAzNiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVGaXJtd2FyZUN0cmwsDQo+IE5VTEx9LA0KPiA+ICsgIHtM IkRTRFQiLCA0LCA0MCwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmRHNkdEFkZHJlc3MsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwgMSwgNDQsIEwiJXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPiArICB7TCJQcmVmZXJyZWRfUE1fUHJvZmlsZSIsIDEsIDQ1LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJTQ0lfSU5UIiwgMiwgNDYs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlNNSV9DTUQiLCA0 LCA0OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiQUNQSV9F TkFCTEUiLCAxLCA1MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAg e0wiQUNQSV9ESVNBQkxFIiwgMSwgNTMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+ICsgIHtMIlM0QklPU19SRVEiLCAxLCA1NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gKyAge0wiUFNUQVRFX0NOVCIsIDEsIDU1LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQTTFhX0VWVF9CTEsiLCA0LCA1NiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUE0xYl9FVlRfQkxLIiwgNCwg NjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlBNMWFfQ05U X0JMSyIsIDQsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7 TCJQTTFiX0NOVF9CTEsiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4gKyAge0wiUE0yX0NOVF9CTEsiLCA0LCA3MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gKyAge0wiUE1fVE1SX0JMSyIsIDQsIDc2LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJHUEUwX0JMSyIsIDQsIDgwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJHUEUxX0JMSyIsIDQsIDg0LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQTTFfRVZUX0xFTiIsIDEs IDg4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQTTFfQ05U X0xFTiIsIDEsIDg5LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7 TCJQTTJfQ05UX0xFTiIsIDEsIDkwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPiArICB7TCJQTV9UTVJfTEVOIiwgMSwgOTEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIkdQRTBfQkxLX0xFTiIsIDEsIDkyLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJHUEUxX0JMS19MRU4iLCAxLCA5MywgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiR1BFMV9CQVNFIiwgMSwgOTQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkNTVF9DTlQiLCAx LCA5NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUF9MVkwy X0xBVCIsIDIsIDk2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7 TCJQX0xWTDNfTEFUIiwgMiwgOTgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ICsgIHtMIkZMVVNIX1NJWkUiLCAyLCAxMDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIkZMVVNIX1NUUklERSIsIDIsIDEwMiwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiRFVUWV9PRkZTRVQiLCAxLCAxMDQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkRVVFlfV0lEVEgiLCAxLCAx MDUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkRBWV9BTFJN IiwgMSwgMTA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJN T05fQUxSTSIsIDEsIDEwNywgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g KyAge0wiQ0VOVFVSWSIsIDEsIDEwOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4gKyAge0wiSUFQQ19CT09UX0FSQ0giLCAyLCAxMDksIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwgMSwgMTExLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJGbGFncyIsIDQsIDExMiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgVmFsaWRhdGVGbGFncywgTlVMTH0sDQo+ID4gKyAge0wiUkVTRVRfUkVHIiwg MTIsIDExNiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUkVT RVRfVkFMVUUiLCAxLCAxMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ ICsgIHtMIkFSTV9CT09UX0FSQ0giLCAyLCAxMjksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIkZBRFQgTWlub3IgVmVyc2lvbiIsIDEsIDEzMSwgTCIweCV4Iiwg TlVMTCwNCj4gKFZPSUQqKikmRmFkdE1pbm9yUmV2aXNpb24sDQo+ID4gKyAgICBOVUxMLCBOVUxM fSwNCj4gPiArICB7TCJYX0ZJUk1XQVJFX0NUUkwiLCA4LCAxMzIsIEwiMHglbHgiLCBOVUxMLCBO VUxMLA0KPiA+ICsgICAgVmFsaWRhdGVYRmlybXdhcmVDdHJsLCBOVUxMfSwNCj4gPiArICB7TCJY X0RTRFQiLCA4LCAxNDAsIEwiMHglbHgiLCBOVUxMLCAoVk9JRCoqKSZYX0RzZHRBZGRyZXNzLCBO VUxMLA0KPiBOVUxMfSwNCj4gPiArICB7TCJYX1BNMWFfRVZUX0JMSyIsIDEyLCAxNDgsIE5VTEws IER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlhfUE0xYl9FVlRfQkxLIiwg MTIsIDE2MCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiWF9Q TTFhX0NOVF9CTEsiLCAxMiwgMTcyLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPiArICB7TCJYX1BNMWJfQ05UX0JMSyIsIDEyLCAxODQsIE5VTEwsIER1bXBHYXMsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlhfUE0yX0NOVF9CTEsiLCAxMiwgMTk2LCBOVUxMLCBE dW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJYX1BNX1RNUl9CTEsiLCAxMiwg MjA4LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJYX0dQRTBf QkxLIiwgMTIsIDIyMCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAg e0wiWF9HUEUxX0JMSyIsIDEyLCAyMzIsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+ICsgIHtMIlNMRUVQX0NPTlRST0xfUkVHIiwgMTIsIDI0NCwgTlVMTCwgRHVtcEdhcywg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiU0xFRVBfU1RBVFVTX1JFRyIsIDEyLCAyNTYs IE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkh5cGVydmlzb3Ig VmVuZG9ySWRlbnRpdHkiLCA4LCAyNjgsIEwiJWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0N Cj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgRmly bXdhcmUgQ29udHJvbCBGaWVsZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiArICBAcGFyYW0gW2lu XSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRo aXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUg QUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4g K0VGSUFQSQ0KPiA+ICtWYWxpZGF0ZUZpcm13YXJlQ3RybCAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ICspDQo+ID4gK3sNCj4gPiArI2lmIGRl ZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ID4gKyAg aWYgKCooVUlOVDMyKilQdHIgIT0gMCkgew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAo KTsNCj4gPiArICAgIFByaW50ICgNCj4gPiArICAgICAgTCJcbkVSUk9SOiBGaXJtd2FyZSBDb250 cm9sIG11c3QgYmUgemVybyBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ID4gKyAgICApOw0KPiA+ICsg IH0NCj4gPiArI2VuZGlmDQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZh bGlkYXRlcyB0aGUgWF9GaXJtd2FyZSBDb250cm9sIEZpZWxkLg0KPiA+ICsNCj4gPiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0K PiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGlu Zm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUg YSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiArKi8NCj4gPiArU1RBVElD DQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlkYXRlWEZpcm13YXJlQ3RybCAoDQo+ ID4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ICspDQo+ ID4gK3sNCj4gPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BV X0FBUkNINjQpDQo+ID4gKyAgaWYgKCooVUlOVDY0KilQdHIgIT0gMCkgew0KPiA+ICsgICAgSW5j cmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50ICgNCj4gPiArICAgICAgTCJcbkVS Uk9SOiBYIEZpcm13YXJlIENvbnRyb2wgbXVzdCBiZSB6ZXJvIGZvciBBUk0gcGxhdGZvcm1zLiIN Cj4gPiArICAgICk7DQo+ID4gKyAgfQ0KPiA+ICsjZW5kaWYNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBmbGFncy4NCj4gPiArDQo+ID4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4N Cj4gPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJl IGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJ Qw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtWYWxpZGF0ZUZsYWdzICgNCj4gPiArICBJ TiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gKykNCj4gPiArew0K PiA+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2 NCkNCj4gPiArICBpZiAoKCgqKFVJTlQzMiopUHRyKSAmIEhXX1JFRFVDRURfQUNQSSkgPT0gMCkg ew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50ICgNCj4g PiArICAgICAgTCJcbkVSUk9SOiBIV19SRURVQ0VEX0FDUEkgZmxhZyBtdXN0IGJlIHNldCBmb3Ig QVJNIHBsYXRmb3Jtcy4iDQo+ID4gKyAgICApOw0KPiA+ICsgIH0NCj4gPiArI2VuZGlmDQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBGQURUIHRh YmxlLg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBGQURUIHRhYmxlIGFuZCBvcHRp b25hbGx5IHRyYWNlcyB0aGUgQUNQSQ0KPiA+ICsgIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ID4g KyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAg SWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsg IEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUu DQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBB Q1BJIHRhYmxlLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFj cGlGYWR0ICgNCj4gPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRy LA0KPiA+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4ICAg QWNwaVRhYmxlUmV2aXNpb24NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UOCogIERzZHRQ dHI7DQo+ID4gKw0KPiA+ICsgIFBhcnNlQWNwaSAoDQo+ID4gKyAgICBUcmFjZSwNCj4gPiArICAg IDAsDQo+ID4gKyAgICAiRkFEVCIsDQo+ID4gKyAgICBQdHIsDQo+ID4gKyAgICBBY3BpVGFibGVM ZW5ndGgsDQo+ID4gKyAgICBQQVJTRVJfUEFSQU1TIChGYWR0UGFyc2VyKQ0KPiA+ICsgICAgKTsN Cj4gPiArDQo+ID4gKyAgaWYgKFRyYWNlKSB7DQo+ID4gKyAgICBQcmludCAoTCJcblN1bW1hcnk6 XG4iKTsNCj4gPiArICAgIFByaW50RmllbGROYW1lICgyLCBMIkZBRFQgVmVyc2lvbiIpOw0KPiA+ ICsgICAgUHJpbnQgKEwiJWQuJWRcbiIsICAqQWNwaUhkckluZm8uUmV2aXNpb24sICpGYWR0TWlu b3JSZXZpc2lvbik7DQo+ID4gKw0KPiA+ICsgICAgaWYgKCpHZXRBY3BpWHNkdEhlYWRlckluZm8g KCktPk9lbVRhYmxlSWQgIT0gKkFjcGlIZHJJbmZvLk9lbVRhYmxlSWQpIHsNCj4gPiArICAgICAg SW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgICAgUHJpbnQgKEwiRVJST1I6IE9FTSBU YWJsZSBJZCBkb2VzIG5vdCBtYXRjaCB3aXRoIFJTRFQvWFNEVC5cbiIpOw0KPiA+ICsgICAgfQ0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gSWYgWF9EU0RUIGlzIG5vdCB6ZXJvIHRoZW4gdXNl IFhfRFNEVCBhbmQgaWdub3JlIERTRFQsDQo+ID4gKyAgLy8gZWxzZSB1c2UgRFNEVC4NCj4gPiAr ICBpZiAoKlhfRHNkdEFkZHJlc3MgIT0gMCkgew0KPiA+ICsgICAgRHNkdFB0ciA9IChVSU5UOCop KFVJTlROKSgqWF9Ec2R0QWRkcmVzcyk7DQo+ID4gKyAgfSBlbHNlIGlmICgqRHNkdEFkZHJlc3Mg IT0gMCkgew0KPiA+ICsgICAgRHNkdFB0ciA9IChVSU5UOCopKFVJTlROKSgqRHNkdEFkZHJlc3Mp Ow0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICAvLyBCb3RoIERTRFQgYW5kIFhfRFNEVCBjYW5u b3QgYmUgemVyby4NCj4gPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChN REVfQ1BVX0FBUkNINjQpDQo+ID4gKyAgICBpZiAoVHJhY2UpIHsNCj4gPiArICAgICAgLy8gVGhl IERTRFQgVGFibGUgaXMgbWFuZGF0b3J5IGZvciBBUk0gc3lzdGVtcw0KPiA+ICsgICAgICAvLyBh cyB0aGUgQ1BVIGluZm9ybWF0aW9uIE1VU1QgYmUgcHJlc2VudGVkIGluDQo+ID4gKyAgICAgIC8v IHRoZSBEU0RULg0KPiA+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAg ICBQcmludCAoTCJFUlJPUjogQm90aCBYX0RTRFQgYW5kIERTRFQgYXJlIE5VTEwuXG4iKTsNCj4g PiArICAgIH0NCj4gPiArI2VuZGlmDQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICBQcm9jZXNzQWNwaVRhYmxlIChEc2R0UHRyKTsNCj4gPiArfQ0KPiA+IGRpZmYgLS1n aXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL0d0ZHQvR3RkdFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uY2U5NjYwNGVlNmY4MDBhZGZiZDg2MTY5MQ0KPiBmZmE3MDkzYjliZDgyMzkNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0KPiA+IEBAIC0wLDAg KzEsMjkzIEBADQo+ID4gKy8qKg0KPiA+ICsgIEdURFQgdGFibGUgcGFyc2VyDQo+ID4gKw0KPiA+ ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gPiArICB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz L2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArICBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIN Cj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArICBAcGFyIFJlZmVyZW5jZShzKToN Cj4gPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIg MjAxNw0KPiA+ICsgICoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQv QWNwaS5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gKyNpbmNsdWRl ICJBY3BpUGFyc2VyLmgiDQo+ID4gKyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCINCj4gPiAr DQo+ID4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdGR0 UGxhdGZvcm1UaW1lckNvdW50Ow0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdGR0UGxhdGZv cm1UaW1lck9mZnNldDsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQ4KiAgUGxhdGZvcm1UaW1lclR5 cGU7DQo+ID4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIFBsYXRmb3JtVGltZXJMZW5ndGg7DQo+ID4g K1NUQVRJQyBDT05TVCBVSU5UMzIqIEd0QmxvY2tUaW1lckNvdW50Ow0KPiA+ICtTVEFUSUMgQ09O U1QgVUlOVDMyKiBHdEJsb2NrVGltZXJPZmZzZXQ7DQo+ID4gK1NUQVRJQyBDT05TVCBVSU5UMTYq IEd0QmxvY2tMZW5ndGg7DQo+ID4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZP IEFjcGlIZHJJbmZvOw0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRo ZSBHVCBCbG9jayB0aW1lciBjb3VudC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiArICBAcGFyYW0g W2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcu IHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0 aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ ID4gK0VGSUFQSQ0KPiA+ICtWYWxpZGF0ZUd0QmxvY2tUaW1lckNvdW50ICgNCj4gPiArICBJTiBV SU5UOCogUHRyLA0KPiA+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gKyAgKTsNCj4gPiArDQo+ ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEdURFQgVGFi bGUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHdGR0UGFyc2VyW10g PSB7DQo+ID4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ID4gKyAge0wi Q250Q29udHJvbEJhc2UgUGh5c2ljYWwgQWRkcmVzcyIsIDgsIDM2LCBMIjB4JWx4IiwgTlVMTCwg TlVMTCwNCj4gPiArICAgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA0NCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiU2VjdXJlIEVMMSB0 aW1lciBHU0lWIiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ ICsgIHtMIlNlY3VyZSBFTDEgdGltZXIgRkxBR1MiLCA0LCA1MiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gKw0KPiA+ICsgIHtMIk5vbi1TZWN1cmUgRUwxIHRpbWVyIEdT SVYiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wi Tm9uLVNlY3VyZSBFTDEgdGltZXIgRkxBR1MiLCA0LCA2MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4gKw0KPiA+ICsgIHtMIlZpcnR1YWwgdGltZXIgR1NJViIsIDQsIDY0 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJWaXJ0dWFsIHRp bWVyIEZMQUdTIiwgNCwgNjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ ICsNCj4gPiArICB7TCJOb24tU2VjdXJlIEVMMiB0aW1lciBHU0lWIiwgNCwgNzIsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIk5vbi1TZWN1cmUgRUwyIHRpbWVy IEZMQUdTIiwgNCwgNzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsN Cj4gPiArICB7TCJDbnRSZWFkQmFzZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwgODAsIEwiMHglbHgi LCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gPiArICB7TCJQbGF0Zm9ybSBUaW1lciBD b3VudCIsIDQsIDg4LCBMIiVkIiwgTlVMTCwNCj4gPiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3Jt VGltZXJDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUGxhdGZvcm0gVGltZXIgT2Zmc2V0 IiwgNCwgOTIsIEwiMHgleCIsIE5VTEwsDQo+ID4gKyAgIChWT0lEKiopJkd0ZHRQbGF0Zm9ybVRp bWVyT2Zmc2V0LCBOVUxMLCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFBsYXRmb3JtIHRpbWVyIGhlYWRlci4NCj4gPiAr Ki8NCj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0UGxhdGZvcm1UaW1lckhlYWRlclBh cnNlcltdID0gew0KPiA+ICsgIHtMIlR5cGUiLCAxLCAwLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZQ bGF0Zm9ybVRpbWVyVHlwZSwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiTGVuZ3RoIiwgMiwgMSwg TlVMTCwgTlVMTCwgKFZPSUQqKikmUGxhdGZvcm1UaW1lckxlbmd0aCwgTlVMTCwNCj4gTlVMTH0s DQo+ID4gKyAge0wiUmVzZXJ2ZWQiLCAxLCAzLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJp bmcgdGhlIFBsYXRmb3JtIEdUIEJsb2NrLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgR3RCbG9ja1BhcnNlcltdID0gew0KPiA+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTCIl ZCIsIE5VTEwsIChWT0lEKiopJkd0QmxvY2tMZW5ndGgsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtM IlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsg IHtMIlBoeXNpY2FsIGFkZHJlc3MgKENudEN0bEJhc2UpIiwgOCwgNCwgTCIweCVseCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlRpbWVyIENvdW50IiwgNCwgMTIsIEwiJWQi LCBOVUxMLCAoVk9JRCoqKSZHdEJsb2NrVGltZXJDb3VudCwNCj4gPiArICAgVmFsaWRhdGVHdEJs b2NrVGltZXJDb3VudCwgTlVMTH0sDQo+ID4gKyAge0wiVGltZXIgT2Zmc2V0IiwgNCwgMTYsIEwi JWQiLCBOVUxMLCAoVk9JRCoqKSZHdEJsb2NrVGltZXJPZmZzZXQsIE5VTEwsDQo+ID4gKyAgICBO VUxMfQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIEdUIEJsb2NrIHRpbWVyLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgR3RCbG9ja1RpbWVyUGFyc2VyW10gPSB7DQo+ID4gKyAge0wiRnJhbWUgTnVtYmVy IiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJlc2Vy dmVkIiwgMywgMSwgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ICsgIHtMIlBoeXNpY2FsIGFkZHJlc3MgKENudEJhc2VYKSIsIDgsIDQsIEwiMHglbHgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRF TDBCYXNlWCkiLCA4LCAxMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ID4gKyAgICBO VUxMfSwNCj4gPiArICB7TCJQaHlzaWNhbCBUaW1lciBHU0lWIiwgNCwgMjAsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlBoeXNpY2FsIFRpbWVyIEZsYWdzIiwg NCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlZpcnR1 YWwgVGltZXIgR1NJViIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPiArICB7TCJWaXJ0dWFsIFRpbWVyIEZsYWdzIiwgNCwgMzIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkNvbW1vbiBGbGFncyIsIDQsIDM2LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqIEFuIEFD UElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFBsYXRmb3JtIFdhdGNoZG9nLg0KPiA+ICsq Lw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNl cltdID0gew0KPiA+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJlZnJlc2hGcmFtZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwg NCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9LA0KPiA+ICsgIHtMIkNvbnRy b2xGcmFtZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwgMTIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLA0KPiBOVUxMfSwNCj4gPiArICB7TCJXYXRjaGRvZyBUaW1lciBHU0lWIiwgNCwgMjAsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIldhdGNoZG9nIFRpbWVy IEZsYWdzIiwgNCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gK307 DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIEdUIEJsb2NrIHRp bWVyIGNvdW50Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQg UG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxl IGhlYWRlci4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ ID4gK1ZhbGlkYXRlR3RCbG9ja1RpbWVyQ291bnQgKA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ ID4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UMzIg QmxvY2tUaW1lckNvdW50ID0gKihVSU5UMzIqKVB0cjsNCj4gPiArICBpZiAoQmxvY2tUaW1lckNv dW50ID4gOCkgew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFBy aW50ICgNCj4gPiArICAgICAgTCJcbkVSUk9SOiBUaW1lciBDb3VudCA9ICVkLiBNYXggVGltZXIg Q291bnQgaXMgOC4iLA0KPiA+ICsgICAgICBCbG9ja1RpbWVyQ291bnQNCj4gPiArICAgICAgKTsN Cj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgUGxhdGZvcm0gR1QgQmxvY2suDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIEdUIEJsb2NrIGRhdGEuDQo+ID4gKyAgQHBhcmFt IFtpbl0gTGVuZ3RoICBMZW5ndGggb2YgdGhlIEdUIEJsb2NrIHN0cnVjdHVyZS4NCj4gPiArKi8N Cj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRHVtcEdUQmxvY2sgKA0KPiA+ICsgIElOIFVJ TlQ4KiBQdHIsDQo+ID4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIFVJTlQzMiBJbmRleDsNCj4gPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiA+ICsgIFVJTlQxNiBH VEJsb2NrVGltZXJMZW5ndGg7DQo+ID4gKw0KPiA+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ ID4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgICAgMiwNCj4gPiArICAgICAg ICAgICAgICJHVCBCbG9jayIsDQo+ID4gKyAgICAgICAgICAgICBQdHIsDQo+ID4gKyAgICAgICAg ICAgICBMZW5ndGgsDQo+ID4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHdEJsb2NrUGFy c2VyKQ0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArICBHVEJsb2NrVGltZXJMZW5ndGggPSAo Kkd0QmxvY2tMZW5ndGggLSBPZmZzZXQpIC8gKCpHdEJsb2NrVGltZXJDb3VudCk7DQo+ID4gKyAg TGVuZ3RoIC09IE9mZnNldDsNCj4gPiArDQo+ID4gKyAgaWYgKCpHdEJsb2NrVGltZXJDb3VudCAh PSAwKSB7DQo+ID4gKyAgICBQdHIgKz0gKCpHdEJsb2NrVGltZXJPZmZzZXQpOw0KPiA+ICsgICAg SW5kZXggPSAwOw0KPiA+ICsgICAgd2hpbGUgKChJbmRleCA8ICgqR3RCbG9ja1RpbWVyQ291bnQp KSAmJiAoTGVuZ3RoID49IEdUQmxvY2tUaW1lckxlbmd0aCkpDQo+IHsNCj4gPiArICAgICAgT2Zm c2V0ID0gUGFyc2VBY3BpICgNCj4gPiArICAgICAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAg ICAgICAgICAgICAgIDIsDQo+ID4gKyAgICAgICAgICAgICAgICAgIkdUIEJsb2NrIFRpbWVyIiwN Cj4gPiArICAgICAgICAgICAgICAgICBQdHIsDQo+ID4gKyAgICAgICAgICAgICAgICAgR1RCbG9j a1RpbWVyTGVuZ3RoLA0KPiA+ICsgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0Qmxv Y2tUaW1lclBhcnNlcikNCj4gPiArICAgICAgICAgICAgICAgICApOw0KPiA+ICsgICAgICAvLyBJ bmNyZW1lbnQgYnkgR1QgQmxvY2sgVGltZXIgc3RydWN0dXJlIHNpemUNCj4gPiArICAgICAgUHRy ICs9IE9mZnNldDsNCj4gPiArICAgICAgTGVuZ3RoIC09IE9mZnNldDsNCj4gPiArICAgICAgSW5k ZXgrKzsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoTGVuZ3RoICE9IDApIHsNCj4g PiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgICAgUHJpbnQgKA0KPiA+ ICsgICAgICAgIEwiRVJST1I6R1QgQmxvY2sgVGltZXIgbGVuZ3RoIG1pc21hdGNoLiBVbnBhcnNl ZCAlZCBieXRlcy5cbiIsDQo+ID4gKyAgICAgICAgTGVuZ3RoDQo+ID4gKyAgICAgICAgKTsNCj4g PiArICAgIH0NCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cgdGltZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHdhdGNoZG9nIHRpbWVy IGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBMZW5ndGggb2YgdGhlIHdhdGNoZG9n IHRpbWVyIHN0cnVjdHVyZS4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiAr RHVtcFdhdGNoZG9nVGltZXIgKA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVUlO VDE2IExlbmd0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFBhcnNlQWNwaSAoDQo+ID4gKyAg ICBUUlVFLA0KPiA+ICsgICAgMiwNCj4gPiArICAgICJTQlNBIEdlbmVyaWMgV2F0Y2hkb2ciLA0K PiA+ICsgICAgUHRyLA0KPiA+ICsgICAgTGVuZ3RoLA0KPiA+ICsgICAgUEFSU0VSX1BBUkFNUyAo U0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNlcikNCj4gPiArICAgICk7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBHVERUIHRhYmxlLg0KPiA+ICsg IFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgR1REVCB0YWJs ZSBhbmQNCj4gPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiAr ICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFyc2VzIHRoZSBmb2xsb3dpbmcgcGxhdGZvcm0gdGltZXIg c3RydWN0dXJlczoNCj4gPiArICAgIC0gR1QgQmxvY2sgdGltZXINCj4gPiArICAgIC0gV2F0Y2hk b2cgdGltZXINCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlk YXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2lu XSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5n dGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNp b24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4g K0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlHdGR0ICgNCj4gPiArICBJTiBCT09MRUFOIFRyYWNlLA0K PiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3Ro LA0KPiA+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBVSU5UMzIgSW5kZXg7DQo+ID4gKyAgVUlOVDgqIFRpbWVyUHRyOw0KPiA+ICsNCj4g PiArICBpZiAoIVRyYWNlKSB7DQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBQYXJzZUFjcGkgKA0KPiA+ICsgICAgVFJVRSwNCj4gPiArICAgIDAsDQo+ID4gKyAgICAi R1REVCIsDQo+ID4gKyAgICBQdHIsDQo+ID4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAg ICBQQVJTRVJfUEFSQU1TIChHdGR0UGFyc2VyKQ0KPiA+ICsgICAgKTsNCj4gPiArDQo+ID4gKyAg aWYgKCpHdGR0UGxhdGZvcm1UaW1lckNvdW50ICE9IDApIHsNCj4gPiArICAgIFRpbWVyUHRyID0g UHRyICsgKCpHdGR0UGxhdGZvcm1UaW1lck9mZnNldCk7DQo+ID4gKyAgICBJbmRleCA9IDA7DQo+ ID4gKyAgICBkbyB7DQo+ID4gKyAgICAgIC8vIFBhcnNlIHRoZSBQbGF0Zm9ybSBUaW1lciBIZWFk ZXINCj4gPiArICAgICAgUGFyc2VBY3BpICgNCj4gPiArICAgICAgICBGQUxTRSwNCj4gPiArICAg ICAgICAwLA0KPiA+ICsgICAgICAgIE5VTEwsDQo+ID4gKyAgICAgICAgVGltZXJQdHIsDQo+ID4g KyAgICAgICAgNCwgIC8vIEdUIFBsYXRmb3JtIFRpbWVyIHN0cnVjdHVyZSBoZWFkZXIgbGVuZ3Ro Lg0KPiA+ICsgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0UGxhdGZvcm1UaW1lckhlYWRlclBhcnNl cikNCj4gPiArICAgICAgICApOw0KPiA+ICsgICAgICBzd2l0Y2ggKCpQbGF0Zm9ybVRpbWVyVHlw ZSkgew0KPiA+ICsgICAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dURFRfR1RfQkxPQ0s6DQo+ID4g KyAgICAgICAgICBEdW1wR1RCbG9jayAoVGltZXJQdHIsICpQbGF0Zm9ybVRpbWVyTGVuZ3RoKTsN Cj4gPiArICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dU RFRfU0JTQV9HRU5FUklDX1dBVENIRE9HOg0KPiA+ICsgICAgICAgICAgRHVtcFdhdGNoZG9nVGlt ZXIgKFRpbWVyUHRyLCAqUGxhdGZvcm1UaW1lckxlbmd0aCk7DQo+ID4gKyAgICAgICAgICBicmVh azsNCj4gPiArICAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gPiArICAgICAgICAgIFByaW50ICgNCj4gPiArICAgICAgICAgICAgTCJFUlJP UjogSU5WQUxJRCBQbGF0Zm9ybSBUaW1lciBUeXBlID0gJWRcbiIsDQo+ID4gKyAgICAgICAgICAg ICpQbGF0Zm9ybVRpbWVyVHlwZQ0KPiA+ICsgICAgICAgICAgICApOw0KPiA+ICsgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgIH0gLy8gc3dpdGNoDQo+ID4gKyAgICAgIFRpbWVyUHRyICs9ICgq UGxhdGZvcm1UaW1lckxlbmd0aCk7DQo+ID4gKyAgICAgIEluZGV4Kys7DQo+ID4gKyAgICB9IHdo aWxlIChJbmRleCA8ICpHdGR0UGxhdGZvcm1UaW1lckNvdW50KTsNCj4gPiArICB9DQo+ID4gK30N Cj4gPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwM2E3NDU3MThkMjMwODJjN2JjNGIwYg0KPiBjOTIwMzU1 YTgzOWZjODk1DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMN Cj4gPiBAQCAtMCwwICsxLDcwMCBAQA0KPiA+ICsvKioNCj4gPiArICBJT1JUIHRhYmxlIHBhcnNl cg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ID4g KyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFT SVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ID4gKyAgQHBhciBS ZWZlcmVuY2Uocyk6DQo+ID4gKyAgICAtIElPIFJlbWFwcGluZyBUYWJsZSwgUGxhdGZvcm0gRGVz aWduIERvY3VtZW50LCBSZXZpc2lvbiBDLCAxNSBNYXkgMjAxNw0KPiA+ICsqKi8NCj4gPiArDQo+ ID4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0lvUmVtYXBwaW5nVGFibGUuaD4NCj4gPiAr I2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUxpYi5oPg0KPiA+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiA+ICsjaW5jbHVkZSAiQWNw aVRhYmxlUGFyc2VyLmgiDQo+ID4gKw0KPiA+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gPiArU1RB VElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ID4gKw0KPiA+ ICsvKiogVGhlIEVJT1JUX05PREUgZW51bSBkZXNjcmliZXMgdGhlIElPUlQgTm9kZSB0eXBlcy4N Cj4gPiArKi8NCj4gPiArdHlwZWRlZiBlbnVtIElvcnROb2RlIHsNCj4gPiArICBFSU9SVF9OT0RF X0lUU19HUk9VUCwgICAgICAgIC8vLzwgSVRTIEdyb3VwIG5vZGUNCj4gPiArICBFSU9SVF9OT0RF X05BTUVEX0NPTVBPTkVOVCwgIC8vLzwgTmFtZWQgQ29tcG9uZW50IG5vZGUNCj4gPiArICBFSU9S VF9OT0RFX1JPT1RfQ09NUExFWCwgICAgIC8vLzwgUm9vdCBDb21wbGV4IG5vZGUNCj4gPiArICBF SU9SVF9OT0RFX1NNTVVWMV9WMiwgICAgICAgIC8vLzwgU01NVSB2MS92MiBub2RlDQo+ID4gKyAg RUlPUlRfTk9ERV9TTU1VVjMsICAgICAgICAgICAvLy88IFNNTVUgdjMgbm9kZQ0KPiA+ICsgIEVJ T1JUX05PREVfUE1DRywgICAgICAgICAgICAgLy8vPCBQTUMgZ3JvdXAgbm9kZQ0KPiA+ICsgIEVJ T1JUX05PREVfTUFYDQo+ID4gK30gRUlPUlRfTk9ERTsNCj4gPiArDQo+ID4gKy8vIExvY2FsIFZh cmlhYmxlcw0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZUNvdW50Ow0KPiA+ICtT VEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZU9mZnNldDsNCj4gPiArDQo+ID4gK1NUQVRJQyBD T05TVCBVSU5UOCogSW9ydE5vZGVUeXBlOw0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBJb3J0 Tm9kZUxlbmd0aDsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQzMiogSW9ydElkTWFwcGluZ0NvdW50 Ow0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0SWRNYXBwaW5nT2Zmc2V0Ow0KPiA+ICsN Cj4gPiArU1RBVElDIENPTlNUIFVJTlQzMiogSW50ZXJydXB0Q29udGV4dENvdW50Ow0KPiA+ICtT VEFUSUMgQ09OU1QgVUlOVDMyKiBJbnRlcnJ1cHRDb250ZXh0T2Zmc2V0Ow0KPiA+ICtTVEFUSUMg Q09OU1QgVUlOVDMyKiBQbXVJbnRlcnJ1cHRDb3VudDsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQz MiogUG11SW50ZXJydXB0T2Zmc2V0Ow0KPiA+ICsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQzMiog SXRzQ291bnQ7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElE IE1hcHBpbmcgYXJyYXkgY291bnQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gPiArDQo+ID4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4N Cj4gPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJl IGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJ Qw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtWYWxpZGF0ZUl0c0lkTWFwcGluZ0NvdW50 ICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFw cGluZyBhcnJheSBvZmZzZXQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4g PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZv cm1hdGlvbiBlLmcuIHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEg cG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0K PiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2Ug KA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLyoqIEhlbHBlciBNYWNybyBmb3IgcG9wdWxhdGluZyB0aGUgSU9S VCBOb2RlIGhlYWRlciBpbiB0aGUgQUNQSV9QQVJTRVINCj4gPiArICAgIGFycmF5Lg0KPiA+ICsN Cj4gPiArICBAcGFyYW0gW291dF0gVmFsaWRhdGVJZE1hcHBpbmdDb3VudCAgICBPcHRpb25hbCBw b2ludGVyIHRvIGEgZnVuY3Rpb24gZm9yDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRhdGluZyB0aGUgSUQgTWFwcGluZyBjb3VudC4NCj4gPiArICBA cGFyYW0gW291dF0gVmFsaWRhdGVJZEFycmF5UmVmZXJlbmNlICBPcHRpb25hbCBwb2ludGVyIHRv IGEgZnVuY3Rpb24gZm9yDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRhdGluZyB0aGUgSUQgQXJyYXkgcmVmZXJlbmNlLg0KPiA+ICsqLw0KPiA+ICsj ZGVmaW5lIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIoVmFsaWRhdGVJZE1hcHBpbmdDb3VudCwgICAg ICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs aWRhdGVJZEFycmF5UmVmZXJlbmNlKSAgICAgICAgICAgICAgICAgXA0KPiA+ICsgIHsgTCJUeXBl IiwgMSwgMCwgTCIlZCIsIE5VTEwsIChWT0lEKiopJklvcnROb2RlVHlwZSwgTlVMTCwgTlVMTCB9 LCAgICAgXA0KPiA+ICsgIHsgTCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikm SW9ydE5vZGVMZW5ndGgsIE5VTEwsIE5VTEwgfSwgXA0KPiA+ICsgIHsgTCJSZXZpc2lvbiIsIDEs IDMsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sICAgICAgICAgICAgICAgICAgXA0K PiA+ICsgIHsgTCJSZXNlcnZlZCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEwgfSwgICAgICAgICAgICAgICAgXA0KPiA+ICsgIHsgTCJOdW1iZXIgb2YgSUQgbWFwcGluZ3Mi LCA0LCA4LCBMIiVkIiwgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAg KFZPSUQqKikmSW9ydElkTWFwcGluZ0NvdW50LCBWYWxpZGF0ZUlkTWFwcGluZ0NvdW50LCBOVUxM IH0sICAgICAgICAgXA0KPiA+ICsgIHsgTCJSZWZlcmVuY2UgdG8gSUQgQXJyYXkiLCA0LCAxMiwg TCIweCV4IiwgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgKFZPSUQqKikm SW9ydElkTWFwcGluZ09mZnNldCwgVmFsaWRhdGVJZEFycmF5UmVmZXJlbmNlLCBOVUxMIH0NCj4g PiArDQo+ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIElP UlQgVGFibGUNCj4gPiArKi8NCj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRQYXJz ZXJbXSA9IHsNCj4gPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gPiAr ICB7TCJOdW1iZXIgb2YgSU9SVCBOb2RlcyIsIDQsIDM2LCBMIiVkIiwgTlVMTCwNCj4gPiArICAg KFZPSUQqKikmSW9ydE5vZGVDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiT2Zmc2V0IHRv IEFycmF5IG9mIElPUlQgTm9kZXMiLCA0LCA0MCwgTCIweCV4IiwgTlVMTCwNCj4gPiArICAgKFZP SUQqKikmSW9ydE5vZGVPZmZzZXQsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwg NCwgNDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gK307DQo+ID4gKw0K PiA+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBub2RlIGhl YWRlciBzdHJ1Y3R1cmUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJ b3J0Tm9kZUhlYWRlclBhcnNlcltdID0gew0KPiA+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIg KE5VTEwsIE5VTEwpDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0KPiA+ICsqLw0KPiA+ICtTVEFU SUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVTbW11VjFWMlBhcnNlcltdID0gew0KPiA+ICsg IFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KPiA+ICsgIHtMIkJhc2UgQWRk cmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAg e0wiU3BhbiIsIDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g KyAge0wiTW9kZWwiLCA0LCAzMiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ ICsgIHtMIkZsYWdzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ICsgIHtMIlJlZmVyZW5jZSB0byBHbG9iYWwgSW50ZXJydXB0IEFycmF5IiwgNCwgNDAsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ID4gKyAgIE5VTEx9LA0KPiA+ICsgIHtMIk51bWJl ciBvZiBjb250ZXh0IGludGVycnVwdHMiLCA0LCA0NCwgTCIlZCIsIE5VTEwsDQo+ID4gKyAgIChW T0lEKiopJkludGVycnVwdENvbnRleHRDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmVm ZXJlbmNlIHRvIENvbnRleHQgSW50ZXJydXB0IEFycmF5IiwgNCwgNDgsIEwiMHgleCIsIE5VTEws DQo+ID4gKyAgIChWT0lEKiopJkludGVycnVwdENvbnRleHRPZmZzZXQsIE5VTEwsIE5VTEx9LA0K PiA+ICsgIHtMIk51bWJlciBvZiBQTVUgSW50ZXJydXB0cyIsIDQsIDUyLCBMIiVkIiwgTlVMTCwN Cj4gPiArICAgKFZPSUQqKikmUG11SW50ZXJydXB0Q291bnQsIE5VTEwsIE5VTEx9LA0KPiA+ICsg IHtMIlJlZmVyZW5jZSB0byBQTVUgSW50ZXJydXB0IEFycmF5IiwgNCwgNTYsIEwiMHgleCIsIE5V TEwsDQo+ID4gKyAgIChWT0lEKiopJlBtdUludGVycnVwdE9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ ID4gKw0KPiA+ICsgIC8vIEludGVycnVwdCBBcnJheQ0KPiA+ICsgIHtMIlNNTVVfTlNnSXJwdCIs IDQsIDYwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJTTU1V X05TZ0lycHQgaW50ZXJydXB0IGZsYWdzIiwgNCwgNjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsDQo+IE5VTEx9LA0KPiA+ICsgIHtMIlNNTVVfTlNnQ2ZnSXJwdCIsIDQsIDY4LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJTTU1VX05TZ0NmZ0lycHQgaW50 ZXJydXB0IGZsYWdzIiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgU01NVXYxLzIgTm9kZSBJbnRlcnJ1cHQgQXJyYXkuDQo+ID4gKyovDQo+ID4gK1NUQVRJ QyBDT05TVCBBQ1BJX1BBUlNFUiBJbnRlcnJ1cHRBcnJheVBhcnNlcltdID0gew0KPiA+ICsgIHtM IiAgSW50ZXJydXB0IEdTSVYiLCA0LCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPiArICB7TCIgIEZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNj cmliaW5nIHRoZSBJT1JUIElEIE1hcHBpbmcuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBB Q1BJX1BBUlNFUiBJb3J0Tm9kZUlkTWFwcGluZ1BhcnNlcltdID0gew0KPiA+ICsgIHtMIiAgSW5w dXQgYmFzZSIsIDQsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsg IHtMIiAgTnVtYmVyIG9mIElEcyIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+ICsgIHtMIiAgT3V0cHV0IGJhc2UiLCA0LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCIgIE91dHB1dCByZWZlcmVuY2UiLCA0LCAxMiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiICBGbGFncyIsIDQsIDE2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr LyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgU01NVXYzIG5vZGUu DQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVWM1Bh cnNlcltdID0gew0KPiA+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0K PiA+ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gKyAge0wiRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAyOCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiVkFUT1MgQWRkcmVzcyIsIDgsIDMyLCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiTW9kZWwiLCA0LCA0MCwg TCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkV2ZW50IiwgNCwgNDQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlBSSSIsIDQsIDQ4 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJHRVJSIiwgNCwg NTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlN5bmMiLCA0 LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPiArfTsNCj4gPiArDQo+ ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIElUUyBub2Rl Lg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVJdHNQYXJz ZXJbXSA9IHsNCj4gPiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSICgNCj4gPiArICAgIFZhbGlk YXRlSXRzSWRNYXBwaW5nQ291bnQsDQo+ID4gKyAgICBWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVu Y2UNCj4gPiArICAgICksDQo+ID4gKyAge0wiICBOdW1iZXIgb2YgSVRTcyIsIDQsIDE2LCBMIiVk IiwgTlVMTCwgKFZPSUQqKikmSXRzQ291bnQsIE5VTEx9DQo+ID4gK307DQo+ID4gKw0KPiA+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSVRTIElELg0KPiA+ICsqLw0K PiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSXRzSWRQYXJzZXJbXSA9IHsNCj4gPiArICB7 IEwiICBHSUMgSVRTIElkZW50aWZpZXIiLCA0LCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCB9 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgSU9SVCBOYW1lcyBDb21wb25lbnQgbm9kZS4NCj4gPiArKi8NCj4gPiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSIElvcnROb2RlTmFtZWRDb21wb25lbnRQYXJzZXJbXSA9IHsNCj4gPiAr ICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gPiArICB7TCJOb2RlIEZs YWdzIiwgNCwgMTYsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJN ZW1vcnkgYWNjZXNzIHByb3BlcnRpZXMiLCA4LCAyMCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+ICsgIHtMIkRldmljZSBtZW1vcnkgYWRkcmVzcyBzaXplIGxpbWl0Iiwg MSwgMjgsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgUm9vdCBD b21wbGV4IG5vZGUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0 Tm9kZVJvb3RDb21wbGV4UGFyc2VyW10gPSB7DQo+ID4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURF UiAoTlVMTCwgTlVMTCksDQo+ID4gKyAge0wiTWVtb3J5IGFjY2VzcyBwcm9wZXJ0aWVzIiwgOCwg MTYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJBVFMgQXR0 cmlidXRlIiwgNCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsg IHtMIlBDSSBTZWdtZW50IG51bWJlciIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRl c2NyaWJpbmcgdGhlIElPUlQgUE1DRyBub2RlLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgSW9ydE5vZGVQbWNnUGFyc2VyW10gPSB7DQo+ID4gKyAgUEFSU0VfSU9SVF9O T0RFX0hFQURFUiAoTlVMTCwgTlVMTCksDQo+ID4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYs IEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJPdmVyZmxvdyBp bnRlcnJ1cHQgR1NJViIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPiArICB7TCJOb2RlIHJlZmVyZW5jZSIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlk YXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBjb3VudCBmb3IgdGhlIElUUyBub2RlLg0KPiA+ICsN Cj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBm aWVsZCBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0 IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiArKi8N Cj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlkYXRlSXRzSWRN YXBwaW5nQ291bnQgKA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgVk9JRCogICAgIENv bnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7 DQo+ID4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgUHJpbnQgKEwiXG5F UlJPUjogSU9SVCBJRCBNYXBwaW5nIGNvdW50IG11c3QgYmUgemVyby4iKTsNCj4gPiArICB9DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFw cGluZyBhcnJheSBvZmZzZXQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4g PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZv cm1hdGlvbiBlLmcuIHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEg cG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0K PiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2Ug KA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ID4gKyAgICBJ bmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgUHJpbnQgKEwiXG5FUlJPUjogSU9SVCBJ RCBNYXBwaW5nIG9mZnNldCBtdXN0IGJlIHplcm8uIik7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgTm9kZSBJZCBNYXBwaW5n IGFycmF5Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgSU9SVCBUYWJsZS4NCj4gPiArICBAcGFyYW0gW2luXSBNYXBw aW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gPiArICBAcGFyYW0gW2luXSBNYXBw aW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUu DQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0R1bXBJb3J0Tm9kZUlkTWFw cGluZ3MgKA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVUlOVDMyIE1hcHBpbmdD b3VudCwNCj4gPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIFVJTlQ4KiBJZE1hcHBpbmdQdHI7DQo+ID4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+ICsg IFVJTlQzMiBPZmZzZXQ7DQo+ID4gKyAgQ0hBUjggIEJ1ZmZlcls0MF07ICAvLyBVc2VkIGZvciBB c2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ID4gKw0KPiA+ICsgIElkTWFwcGluZ1B0ciA9 IFB0ciArIE1hcHBpbmdPZmZzZXQ7DQo+ID4gKyAgSW5kZXggPSAwOw0KPiA+ICsgIHdoaWxlIChJ bmRleCA8IE1hcHBpbmdDb3VudCkgew0KPiA+ICsgICAgQXNjaWlTUHJpbnQgKA0KPiA+ICsgICAg ICBCdWZmZXIsDQo+ID4gKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gPiArICAgICAgIklEIE1h cHBpbmcgWyVkXSIsDQo+ID4gKyAgICAgIEluZGV4DQo+ID4gKyAgICAgICk7DQo+ID4gKyAgICBP ZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAg ICAgICAgICAgICA0LA0KPiA+ICsgICAgICAgICAgICAgICBCdWZmZXIsDQo+ID4gKyAgICAgICAg ICAgICAgIElkTWFwcGluZ1B0ciwNCj4gPiArICAgICAgICAgICAgICAgMjAsDQo+ID4gKyAgICAg ICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlSWRNYXBwaW5nUGFyc2VyKQ0KPiA+ICsg ICAgICAgICAgICAgICApOw0KPiA+ICsgICAgSWRNYXBwaW5nUHRyICs9IE9mZnNldDsNCj4gPiAr ICAgIEluZGV4Kys7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIElPUlQgU01NVXYxLzIgbm9kZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4N Cj4gPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4N Cj4gPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4N Cj4gPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJRCBN YXBwaW5nIGFycmF5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUg c3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lE DQo+ID4gK0R1bXBJb3J0Tm9kZVNtbXVWMVYyICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4g PiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJ TlQzMiBJbmRleDsNCj4gPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiA+ICsgIENIQVI4ICBCdWZmZXJb NTBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KPiA+ICsNCj4g PiArICBVSU5UOCogQXJyYXlQdHI7DQo+ID4gKw0KPiA+ICsgIFBhcnNlQWNwaSAoDQo+ID4gKyAg ICBUUlVFLA0KPiA+ICsgICAgMiwNCj4gPiArICAgICJTTU1VdjEgb3IgU01NVXYyIE5vZGUiLA0K PiA+ICsgICAgUHRyLA0KPiA+ICsgICAgTGVuZ3RoLA0KPiA+ICsgICAgUEFSU0VSX1BBUkFNUyAo SW9ydE5vZGVTbW11VjFWMlBhcnNlcikNCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ICsgIEFycmF5 UHRyID0gUHRyICsgKkludGVycnVwdENvbnRleHRPZmZzZXQ7DQo+ID4gKyAgSW5kZXggPSAwOw0K PiA+ICsgIHdoaWxlIChJbmRleCA8ICpJbnRlcnJ1cHRDb250ZXh0Q291bnQpIHsNCj4gPiArICAg IEFzY2lpU1ByaW50ICgNCj4gPiArICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICBzaXplb2YgKEJ1 ZmZlciksDQo+ID4gKyAgICAgICJDb250ZXh0IEludGVycnVwdHMgQXJyYXkgWyVkXSIsDQo+ID4g KyAgICAgIEluZGV4DQo+ID4gKyAgICAgICk7DQo+ID4gKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkg KA0KPiA+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgICAgICA0LA0KPiA+ ICsgICAgICAgICAgICAgICBCdWZmZXIsDQo+ID4gKyAgICAgICAgICAgICAgIEFycmF5UHRyLA0K PiA+ICsgICAgICAgICAgICAgICA4LA0KPiA+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1T IChJbnRlcnJ1cHRBcnJheVBhcnNlcikNCj4gPiArICAgICAgICAgICAgICAgKTsNCj4gPiArICAg IEFycmF5UHRyICs9IE9mZnNldDsNCj4gPiArICAgIEluZGV4Kys7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICBBcnJheVB0ciA9IFB0ciArICpQbXVJbnRlcnJ1cHRPZmZzZXQ7DQo+ID4gKyAgSW5k ZXggPSAwOw0KPiA+ICsgIHdoaWxlIChJbmRleCA8ICpQbXVJbnRlcnJ1cHRDb3VudCkgew0KPiA+ ICsgICAgQXNjaWlTUHJpbnQgKA0KPiA+ICsgICAgICBCdWZmZXIsDQo+ID4gKyAgICAgIHNpemVv ZiAoQnVmZmVyKSwNCj4gPiArICAgICAgIlBNVSBJbnRlcnJ1cHRzIEFycmF5IFslZF0iLA0KPiA+ ICsgICAgICBJbmRleA0KPiA+ICsgICAgICApOw0KPiA+ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3Bp ICgNCj4gPiArICAgICAgICAgICAgICAgVFJVRSwNCj4gPiArICAgICAgICAgICAgICAgNCwNCj4g PiArICAgICAgICAgICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICAgICAgICAgICBBcnJheVB0ciwN Cj4gPiArICAgICAgICAgICAgICAgOCwNCj4gPiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoSW50ZXJydXB0QXJyYXlQYXJzZXIpDQo+ID4gKyAgICAgICAgICAgICAgICk7DQo+ID4gKyAg ICBBcnJheVB0ciArPSBPZmZzZXQ7DQo+ID4gKyAgICBJbmRleCsrOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KPiA+ICsgICAgRHVtcElv cnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiA+ ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJ T1JUIFNNTVV2MyBub2RlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5d IExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5d IE1hcHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KPiA+ICsgIEBwYXJhbSBbaW5d IE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0 YWJsZS4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRHVtcElvcnROb2Rl U21tdVYzICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFVJTlQxNiBMZW5ndGgs DQo+ID4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gPiArICBJTiBVSU5UMzIgTWFwcGlu Z09mZnNldA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFBhcnNlQWNwaSAoDQo+ID4gKyAgICBU UlVFLA0KPiA+ICsgICAgMiwNCj4gPiArICAgICJTTU1VVjMgTm9kZSIsDQo+ID4gKyAgICBQdHIs DQo+ID4gKyAgICBMZW5ndGgsDQo+ID4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVNtbXVW M1BhcnNlcikNCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ICsgIGlmICgqSW9ydElkTWFwcGluZ0Nv dW50ICE9IDApIHsNCj4gPiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGlu Z0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q KiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBJVFMgbm9kZS4NCj4gPiArDQo+ID4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1 ZmZlci4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRHVtcElvcnROb2Rl SXRzICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFVJTlQxNiBMZW5ndGgNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiA+ICsgIFVJTlQzMiBJbmRl eDsNCj4gPiArICBVSU5UOCogSXRzSWRQdHI7DQo+ID4gKyAgQ0hBUjggIEJ1ZmZlcls4MF07ICAv LyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ID4gKw0KPiA+ICsgIE9m ZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAg ICAgICAgMiwNCj4gPiArICAgICAgICAgICAgICJJVFMgTm9kZSIsDQo+ID4gKyAgICAgICAgICAg ICBQdHIsDQo+ID4gKyAgICAgICAgICAgICBMZW5ndGgsDQo+ID4gKyAgICAgICAgICAgICBQQVJT RVJfUEFSQU1TIChJb3J0Tm9kZUl0c1BhcnNlcikNCj4gPiArICAgICAgICAgICAgICk7DQo+ID4g Kw0KPiA+ICsgIEl0c0lkUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+ICsgIEluZGV4ID0gMDsNCj4g PiArICB3aGlsZSAoSW5kZXggPCAqSXRzQ291bnQpIHsNCj4gPiArICAgIEFzY2lpU1ByaW50ICgN Cj4gPiArICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4gKyAg ICAgICJHSUMgSVRTIElkZW50aWZpZXIgQXJyYXkgWyVkXSIsDQo+ID4gKyAgICAgIEluZGV4DQo+ ID4gKyAgICAgICk7DQo+ID4gKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+ICsgICAgICAg ICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgICAgICA0LA0KPiA+ICsgICAgICAgICAgICAg ICBCdWZmZXIsDQo+ID4gKyAgICAgICAgICAgICAgIEl0c0lkUHRyLA0KPiA+ICsgICAgICAgICAg ICAgICA0LA0KPiA+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJdHNJZFBhcnNlcikN Cj4gPiArICAgICAgICAgICAgICAgKTsNCj4gPiArICAgIEl0c0lkUHRyICs9IE9mZnNldDsNCj4g PiArICAgIEluZGV4Kys7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBOb3RlOiBJVFMgZG9l cyBub3QgaGF2ZSB0aGUgSUQgTWFwcGluZ3MgQXJyYXkNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq IFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIE5hbWVkIENvbXBvbmVudCBub2RlLg0KPiA+ ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0 aCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJ RCBNYXBwaW5nIGNvdW50Lg0KPiA+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBv ZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gPiArKi8NCj4gPiAr U1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRHVtcElvcnROb2RlTmFtZWRDb21wb25lbnQgKA0KPiA+ ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gPiArICBJTiBV SU5UMzIgTWFwcGluZ0NvdW50LA0KPiA+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyIE9mZnNldDsNCj4gPiArICBVSU5UMzIgSW5kZXg7 DQo+ID4gKyAgVUlOVDgqIERldmljZU5hbWVQdHI7DQo+ID4gKyAgVUlOVDMyIERldmljZU5hbWVM ZW5ndGg7DQo+ID4gKw0KPiA+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4gKyAgICAgICAg ICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgICAgMiwNCj4gPiArICAgICAgICAgICAgICJOYW1l ZCBDb21wb25lbnQgTm9kZSIsDQo+ID4gKyAgICAgICAgICAgICBQdHIsDQo+ID4gKyAgICAgICAg ICAgICBMZW5ndGgsDQo+ID4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZU5h bWVkQ29tcG9uZW50UGFyc2VyKQ0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArDQo+ID4gKyAg RGV2aWNlTmFtZVB0ciA9IFB0ciArIE9mZnNldDsNCj4gPiArICAvLyBFc3RpbWF0ZSB0aGUgRGV2 aWNlIE5hbWUgbGVuZ3RoDQo+ID4gKyAgRGV2aWNlTmFtZUxlbmd0aCA9IExlbmd0aCAtIE9mZnNl dCAtIChNYXBwaW5nQ291bnQgKiAyMCk7DQo+ID4gKyAgUHJpbnRGaWVsZE5hbWUgKDIsIEwiRGV2 aWNlIE9iamVjdCBOYW1lIik7DQo+ID4gKyAgSW5kZXggPSAwOw0KPiA+ICsgIHdoaWxlICgoSW5k ZXggPCBEZXZpY2VOYW1lTGVuZ3RoKSAmJiAoRGV2aWNlTmFtZVB0cltJbmRleF0gIT0gMCkpIHsN Cj4gPiArICAgIFByaW50IChMIiVjIiwgRGV2aWNlTmFtZVB0cltJbmRleCsrXSk7DQo+ID4gKyAg fQ0KPiA+ICsgIFByaW50IChMIlxuIik7DQo+ID4gKw0KPiA+ICsgIGlmICgqSW9ydElkTWFwcGlu Z0NvdW50ICE9IDApIHsNCj4gPiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFw cGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBSb290IENvbXBsZXggbm9kZS4NCj4g PiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBMZW5n dGggb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUg SUQgTWFwcGluZyBjb3VudC4NCj4gPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUg b2Zmc2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ID4gKyovDQo+ID4g K1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0R1bXBJb3J0Tm9kZVJvb3RDb21wbGV4ICgNCj4gPiAr ICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ID4gKyAgSU4gVUlO VDMyIE1hcHBpbmdDb3VudCwNCj4gPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIFBhcnNlQWNwaSAoDQo+ID4gKyAgICBUUlVFLA0KPiA+ICsgICAg MiwNCj4gPiArICAgICJSb290IENvbXBsZXggTm9kZSIsDQo+ID4gKyAgICBQdHIsDQo+ID4gKyAg ICBMZW5ndGgsDQo+ID4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVJvb3RDb21wbGV4UGFy c2VyKQ0KPiA+ICsgICAgKTsNCj4gPiArDQo+ID4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQg IT0gMCkgew0KPiA+ICsgICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291 bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFBNQ0cgbm9kZS4NCj4gPiArDQo+ID4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZl ci4NCj4gPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3Vu dC4NCj4gPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJ RCBNYXBwaW5nIGFycmF5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ICtW T0lEDQo+ID4gK0R1bXBJb3J0Tm9kZVBtY2cgKA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4g KyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gPiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiA+ ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ID4gKykNCj4gPiArew0KPiA+ICsgIFBhcnNl QWNwaSAoDQo+ID4gKyAgICBUUlVFLA0KPiA+ICsgICAgMiwNCj4gPiArICAgICJQTUNHIE5vZGUi LA0KPiA+ICsgICAgUHRyLA0KPiA+ICsgICAgTGVuZ3RoLA0KPiA+ICsgICAgUEFSU0VSX1BBUkFN UyAoSW9ydE5vZGVQbWNnUGFyc2VyKQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsgIGlmICgqSW9y dElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gPiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3Mg KFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ID4gMSkgew0KPiA+ICsgICAgSW5jcmVtZW50RXJy b3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50ICgNCj4gPiArICAgICAgTCJFUlJPUjogSUQgbWFw cGluZyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMS4gSWQgTWFwcGluZyBDb3VudA0KPiA9JWRc biIsDQo+ID4gKyAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQNCj4gPiArICAgICAgKTsNCj4gPiAr ICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQ SSBJT1JUIHRhYmxlLg0KPiA+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgSU9SVCB0YWJsZSBhbmQNCj4gPiArICB0cmFjZXMgdGhlIEFDUEkgZmllbGRz Lg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFyc2VzIHRoZSBmb2xsb3dpbmcg bm9kZXM6DQo+ID4gKyAgICAtIElUUyBHcm91cA0KPiA+ICsgICAgLSBOYW1lZCBDb21wb25lbnQN Cj4gPiArICAgIC0gUm9vdCBDb21wbGV4DQo+ID4gKyAgICAtIFNNTVV2MS8yDQo+ID4gKyAgICAt IFNNTVV2Mw0KPiA+ICsgICAgLSBQTUNHDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gYWxz byBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBB Q1BJIGZpZWxkcy4NCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8N Cj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArUGFyc2VBY3BpSW9ydCAoDQo+ID4gKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCj4gPiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIg IEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyIE9mZnNldDsNCj4gPiArICBVSU5UMzIgSW5k ZXg7DQo+ID4gKyAgVUlOVDgqIE5vZGVQdHI7DQo+ID4gKw0KPiA+ICsgIGlmICghVHJhY2UpIHsN Cj4gPiArICAgIHJldHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFBhcnNlQWNwaSAoDQo+ ID4gKyAgICBUUlVFLA0KPiA+ICsgICAgMCwNCj4gPiArICAgICJJT1JUIiwNCj4gPiArICAgIFB0 ciwNCj4gPiArICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICAgIFBBUlNFUl9QQVJBTVMgKElv cnRQYXJzZXIpDQo+ID4gKyAgICApOw0KPiA+ICsgIE9mZnNldCA9ICpJb3J0Tm9kZU9mZnNldDsN Cj4gPiArICBOb2RlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+ICsgIEluZGV4ID0gMDsNCj4gPiAr DQo+ID4gKyAgd2hpbGUgKChJbmRleCA8ICpJb3J0Tm9kZUNvdW50KSAmJiAoT2Zmc2V0IDwgQWNw aVRhYmxlTGVuZ3RoKSkgew0KPiA+ICsgICAgLy8gUGFyc2UgdGhlIElPUlQgTm9kZSBIZWFkZXIN Cj4gPiArICAgIFBhcnNlQWNwaSAoDQo+ID4gKyAgICAgIEZBTFNFLA0KPiA+ICsgICAgICAwLA0K PiA+ICsgICAgICAiSU9SVCBOb2RlIEhlYWRlciIsDQo+ID4gKyAgICAgIE5vZGVQdHIsDQo+ID4g KyAgICAgIDE2LA0KPiA+ICsgICAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZUhlYWRlclBhcnNl cikNCj4gPiArICAgICAgKTsNCj4gPiArICAgIGlmICgqSW9ydE5vZGVMZW5ndGggPT0gMCkgew0K PiA+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgICBQcmludCAoTCJF UlJPUjogUGFyc2VyIGVycm9yLiBJbnZhbGlkIHRhYmxlIGRhdGEuXG4iKTsNCj4gPiArICAgICAg cmV0dXJuOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFByaW50RmllbGROYW1lICgyLCBM IiogTm9kZSBPZmZzZXQgKiIpOw0KPiA+ICsgICAgUHJpbnQgKEwiMHgleFxuIiwgT2Zmc2V0KTsN Cj4gPiArDQo+ID4gKyAgICBzd2l0Y2ggKCpJb3J0Tm9kZVR5cGUpIHsNCj4gPiArICAgICAgY2Fz ZSBFSU9SVF9OT0RFX0lUU19HUk9VUDoNCj4gPiArICAgICAgICBEdW1wSW9ydE5vZGVJdHMgKA0K PiA+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aA0K PiA+ICsgICAgICAgICAgKTsNCj4gPiArICAgICAgICBicmVhazsNCj4gPiArICAgICAgY2FzZSBF SU9SVF9OT0RFX05BTUVEX0NPTVBPTkVOVDoNCj4gPiArICAgICAgICBEdW1wSW9ydE5vZGVOYW1l ZENvbXBvbmVudCAoDQo+ID4gKyAgICAgICAgICBOb2RlUHRyLA0KPiA+ICsgICAgICAgICAgKklv cnROb2RlTGVuZ3RoLA0KPiA+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCj4gPiAr ICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ID4gKyAgICAgICAgICApOw0KPiA+ICsg ICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICBjYXNlIEVJT1JUX05PREVfUk9PVF9DT01QTEVYOg0K PiA+ICsgICAgICAgIER1bXBJb3J0Tm9kZVJvb3RDb21wbGV4ICgNCj4gPiArICAgICAgICAgIE5v ZGVQdHIsDQo+ID4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ID4gKyAgICAgICAgICAq SW9ydElkTWFwcGluZ0NvdW50LA0KPiA+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQN Cj4gPiArICAgICAgICAgICk7DQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgIGNhc2Ug RUlPUlRfTk9ERV9TTU1VVjFfVjI6DQo+ID4gKyAgICAgICAgRHVtcElvcnROb2RlU21tdVYxVjIg KA0KPiA+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0 aCwNCj4gPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ID4gKyAgICAgICAgICAq SW9ydElkTWFwcGluZ09mZnNldA0KPiA+ICsgICAgICAgICAgKTsNCj4gPiArICAgICAgICBicmVh azsNCj4gPiArICAgICAgY2FzZSBFSU9SVF9OT0RFX1NNTVVWMzoNCj4gPiArICAgICAgICBEdW1w SW9ydE5vZGVTbW11VjMgKA0KPiA+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gPiArICAgICAgICAg ICpJb3J0Tm9kZUxlbmd0aCwNCj4gPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ ID4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiA+ICsgICAgICAgICAgKTsNCj4g PiArICAgICAgICBicmVhazsNCj4gPiArICAgICAgY2FzZSBFSU9SVF9OT0RFX1BNQ0c6DQo+ID4g KyAgICAgICAgRHVtcElvcnROb2RlUG1jZyAoDQo+ID4gKyAgICAgICAgICBOb2RlUHRyLA0KPiA+ ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiA+ICsgICAgICAgICAgKklvcnRJZE1hcHBp bmdDb3VudCwNCj4gPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ID4gKyAgICAg ICAgKTsNCj4gPiArICAgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICAgIGRlZmF1bHQ6DQo+ ID4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgICAgICBQcmludCAo TCJFUlJPUjogVW5zdXBwb3J0ZWQgSU9SVCBOb2RlIHR5cGUgPSAlZFxuIiwgKklvcnROb2RlVHlw ZSk7DQo+ID4gKyAgICB9IC8vIHN3aXRjaA0KPiA+ICsNCj4gPiArICAgIE5vZGVQdHIgKz0gKCpJ b3J0Tm9kZUxlbmd0aCk7DQo+ID4gKyAgICBPZmZzZXQgKz0gKCpJb3J0Tm9kZUxlbmd0aCk7DQo+ ID4gKyAgfSAvLyB3aGlsZQ0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFyc2Vy LmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL01hZHQvTWFkdFBhcnNlci5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2NiYjdiODBl ZGMzYjRjMWU1MWE1NWINCj4gNDE2YmRlMTFhMTQ1ZjI1ZA0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL01hZHQvTWFkdFBhcnNlci5jDQo+ID4gQEAgLTAsMCArMSwzMTMgQEANCj4gPiArLyoq DQo+ID4gKyAgTUFEVCB0YWJsZSBwYXJzZXINCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAy MDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyAgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ICsgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QNCj4gTGljZW5zZQ0KPiA+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJp YnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQN Cj4gPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ID4gKw0KPiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4gKw0KPiA+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ICsgICAgLSBBQ1BJIDYu MiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ID4gKyoqLw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ID4g KyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCINCj4gPiArDQo+ID4gKy8vIExvY2FsIFZhcmlh Ymxlcw0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDgqIE1hZHRJbnRlcnJ1cHRDb250cm9sbGVyVHlw ZTsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0 aDsNCj4gPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87 DQo+ID4gKw0KPiA+ICsvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucw0KPiA+ICtTVEFUSUMNCj4gPiAr Vk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVmFsaWRhdGVHSUNEU3lzdGVtVmVjdG9yQmFzZSAoDQo+ ID4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ICspOw0K PiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ0Mg SW50ZXJydXB0DQo+ID4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gPiArKi8NCj4gPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0NQYXJzZXJbXSA9IHsNCj4gPiArICB7TCJUeXBl IiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiTGVu Z3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJl c2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKw0K PiA+ICsgIHtMIkNQVSBJbnRlcmZhY2UgTnVtYmVyIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiQUNQSSBQcm9jZXNzb3IgVUlEIiwgNCwgOCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiRmxhZ3MiLCA0LCAxMiwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUGFya2luZyBQcm90 b2NvbCBWZXJzaW9uIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ICsNCj4gPiArICB7TCJQZXJmb3JtYW5jZSBJbnRlcnJ1cHQgR1NJViIsIDQsIDIwLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQYXJrZWQgQWRkcmVzcyIs IDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUGh5 c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPiArICB7TCJHSUNWIiwgOCwgNDAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPiArICB7TCJHSUNIIiwgOCwgNDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPiArICB7TCJWR0lDIE1haW50ZW5hbmNlIGludGVycnVwdCIsIDQsIDU2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJHSUNSIEJhc2Ug QWRkcmVzcyIsIDgsIDYwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g KyAge0wiTVBJRFIiLCA4LCA2OCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ICsgIHtMIlByb2Nlc3NvciBQb3dlciBFZmZpY2llbmN5IENsYXNzIiwgMSwgNzYsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ID4gKyAgIE5VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVk IiwgMywgNzcsIEwiJXggJXggJXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEdJQ0QgSW50ZXJydXB0DQo+ID4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gPiArKi8N Cj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0RQYXJzZXJbXSA9IHsNCj4gPiArICB7 TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAg e0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsg IHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4gKw0KPiA+ICsgIHtMIkdJQyBJRCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVzcyIsIDgsIDgsIEwiMHglbHgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJTeXN0ZW0gVmVjdG9yIEJhc2Ui LCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwNCj4gPiArICAgIFZhbGlkYXRlR0lDRFN5c3Rl bVZlY3RvckJhc2UsIE5VTEx9LA0KPiA+ICsgIHtMIkdJQyBWZXJzaW9uIiwgMSwgMjAsIEwiJWQi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJSZXNlcnZlZCIsIDMsIDIxLCBM IiV4ICV4ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPiArfTsNCj4gPiAr DQo+ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBNU0kgRnJhbWUg SW50ZXJydXB0DQo+ID4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gPiArKi8NCj4gPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY01TSUZyYW1lUGFyc2VyW10gPSB7DQo+ID4gKyAg e0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsg IHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiAr ICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ICsNCj4gPiArICB7TCJNU0kgRnJhbWUgSUQiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3MiLCA4LCA4LCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiRmxhZ3MiLCA0LCAx NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKw0KPiA+ICsgIHtMIlNQ SSBDb3VudCIsIDIsIDIwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAg e0wiU1BJIEJhc2UiLCAyLCAyMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4g PiArfTsNCj4gPiArDQo+ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRo ZSBHSUNSIEludGVycnVwdA0KPiA+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ID4gKyov DQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHaWNSUGFyc2VyW10gPSB7DQo+ID4gKyAg e0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsg IHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiAr ICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ICsNCj4gPiArICB7TCJEaXNjb3ZlcnkgUmFuZ2UgQmFzZSBBZGRyZXNzIiwgOCwgNCwgTCIw eCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ID4gKyAgIE5VTEx9LA0KPiA+ICsgIHtMIkRpc2Nv dmVyeSBSYW5nZSBMZW5ndGgiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBHSUMgSVRTIEludGVycnVwdA0KPiA+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUu DQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHaWNJVFNQYXJzZXJbXSA9 IHsNCj4gPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ID4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gKw0KPiA+ICsgIHtMIkdJQyBJVFMgSUQiLCA0LCA0LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3Mi LCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmVz ZXJ2ZWQiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPiArfTsN Cj4gPiArDQo+ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJ IE1BRFQgVGFibGUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBNYWR0 UGFyc2VyW10gPSB7DQo+ID4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ ID4gKyAge0wiTG9jYWwgSW50ZXJydXB0IENvbnRyb2xsZXIgQWRkcmVzcyIsIDQsIDM2LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiA+ICsgICBOVUxMfSwNCj4gPiArICB7TCJGbGFncyIs IDQsIDQwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1BRFQgSW50ZXJy dXB0DQo+ID4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZSBIZWFkZXIgU3RydWN0dXJlLg0KPiA+ ICsqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWFkdEludGVycnVwdENvbnRyb2xs ZXJIZWFkZXJQYXJzZXJbXSA9IHsNCj4gPiArICB7TlVMTCwgMSwgMCwgTlVMTCwgTlVMTCwgKFZP SUQqKikmTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlLCBOVUxMLA0KPiBOVUxMfSwNCj4gPiAr ICB7TCJMZW5ndGgiLCAxLCAxLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZNYWR0SW50ZXJydXB0Q29u dHJvbGxlckxlbmd0aCwNCj4gTlVMTCwNCj4gPiArICAgTlVMTH0sDQo+ID4gKyAge0wiUmVzZXJ2 ZWQiLCAyLCAyLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBTeXN0ZW0gVmVjdG9yIEJhc2Ug aW4gdGhlIEdJQ0QuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQ29udGV4 dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFi bGUgaGVhZGVyLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtFRklBUEkN Cj4gPiArVmFsaWRhdGVHSUNEU3lzdGVtVmVjdG9yQmFzZSAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ICspDQo+ID4gK3sNCj4gPiArICBpZiAo KihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ID4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiA+ICsgICAgUHJpbnQgKA0KPiA+ICsgICAgICBMIlxuRVJST1I6IFN5c3RlbSBWZWN0b3IgQmFz ZSBtdXN0IGJlIHplcm8uIg0KPiA+ICsgICAgKTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBNQURUIHRhYmxlLg0KPiA+ICsg IFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUFEVCB0YWJs ZSBhbmQNCj4gPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiAr ICBUaGlzIGZ1bmN0aW9uIGN1cnJlbnRseSBwYXJzZXMgdGhlIGZvbGxvd2luZyBJbnRlcnJ1cHQg Q29udHJvbGxlcg0KPiA+ICsgIFN0cnVjdHVyZXM6DQo+ID4gKyAgICAtIEdJQ0MNCj4gPiArICAg IC0gR0lDRA0KPiA+ICsgICAgLSBHSUMgTVNJIEZyYW1lDQo+ID4gKyAgICAtIEdJQ1INCj4gPiAr ICAgIC0gR0lDIElUUw0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMg dmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMu DQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAg IExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVS ZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyovDQo+ID4gK1ZPSUQN Cj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNwaU1hZHQgKA0KPiA+ICsgIElOIEJPT0xFQU4gVHJh Y2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVM ZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4gKyAgVUlOVDgqIEludGVycnVwdENvbnRv bGxlclB0cjsNCj4gPiArICBVSU5UMzIgR0lDRENvdW50ID0gMDsNCj4gPiArDQo+ID4gKyAgaWYg KCFUcmFjZSkgew0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgT2Zm c2V0ID0gUGFyc2VBY3BpICgNCj4gPiArICAgICAgICAgICAgIFRSVUUsDQo+ID4gKyAgICAgICAg ICAgICAwLA0KPiA+ICsgICAgICAgICAgICAgIk1BRFQiLA0KPiA+ICsgICAgICAgICAgICAgUHRy LA0KPiA+ICsgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgICAgICAgICAgICAg UEFSU0VSX1BBUkFNUyAoTWFkdFBhcnNlcikNCj4gPiArICAgICAgICAgICAgICk7DQo+ID4gKyAg SW50ZXJydXB0Q29udG9sbGVyUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+ICsNCj4gPiArICB3aGls ZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ID4gKyAgICAvLyBQYXJzZSBJbnRlcnJ1 cHQgQ29udHJvbGxlciBTdHJ1Y3R1cmUgdG8gb2J0YWluIExlbmd0aC4NCj4gPiArICAgIFBhcnNl QWNwaSAoDQo+ID4gKyAgICAgIEZBTFNFLA0KPiA+ICsgICAgICAwLA0KPiA+ICsgICAgICBOVUxM LA0KPiA+ICsgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ID4gKyAgICAgIDIsICAvLyAg TGVuZ3RoIGlzIDEgYnl0ZSBhdCBvZmZzZXQgMQ0KPiA+ICsgICAgICBQQVJTRVJfUEFSQU1TIChN YWR0SW50ZXJydXB0Q29udHJvbGxlckhlYWRlclBhcnNlcikNCj4gPiArICAgICAgKTsNCj4gPiAr DQo+ID4gKyAgICBpZiAoKChPZmZzZXQgKyAoKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3Ro KSkgPiBBY3BpVGFibGVMZW5ndGgpIHx8DQo+ID4gKyAgICAgICAgKCpNYWR0SW50ZXJydXB0Q29u dHJvbGxlckxlbmd0aCA8IDQpKSB7DQo+ID4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7 DQo+ID4gKyAgICAgIFByaW50ICgNCj4gPiArICAgICAgICAgTCJFUlJPUjogSW52YWxpZCBJbnRl cnJ1cHQgQ29udHJvbGxlciBMZW5ndGgsIg0KPiA+ICsgICAgICAgICAgIiBUeXBlID0gJWQsIExl bmd0aCA9ICVkXG4iLA0KPiA+ICsgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBl LA0KPiA+ICsgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgNCj4gPiArICAg ICAgICAgKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAg c3dpdGNoICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlKSB7DQo+ID4gKyAgICAgIGNhc2Ug RUZJX0FDUElfNl8yX0dJQzogew0KPiA+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4gKyAgICAg ICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgMiwNCj4gPiArICAgICAgICAgICJHSUNDIiwNCj4g PiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gPiArICAgICAgICAgICpNYWR0 SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMg KEdpY0NQYXJzZXIpDQo+ID4gKyAgICAgICAgICApOw0KPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNEOiB7DQo+ ID4gKyAgICAgICAgaWYgKCsrR0lDRENvdW50ID4gMSkgew0KPiA+ICsgICAgICAgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgICAgICAgIFByaW50ICgNCj4gPiArICAgICAgICAg ICAgTCJFUlJPUjogT25seSBvbmUgR0lDRCBtdXN0IGJlIHByZXNlbnQsIg0KPiA+ICsgICAgICAg ICAgICAgICIgR0lDRENvdW50ID0gJWRcbiIsDQo+ID4gKyAgICAgICAgICAgIEdJQ0RDb3VudA0K PiA+ICsgICAgICAgICAgICApOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgICBQYXJzZUFj cGkgKA0KPiA+ICsgICAgICAgICAgVFJVRSwNCj4gPiArICAgICAgICAgIDIsDQo+ID4gKyAgICAg ICAgICAiR0lDRCIsDQo+ID4gKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ID4g KyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ID4gKyAgICAgICAg ICBQQVJTRVJfUEFSQU1TIChHaWNEUGFyc2VyKQ0KPiA+ICsgICAgICAgICAgKTsNCj4gPiArICAg ICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgY2FzZSBFRklfQUNQ SV82XzJfR0lDX01TSV9GUkFNRTogew0KPiA+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4gKyAg ICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgMiwNCj4gPiArICAgICAgICAgICJHSUMgTVNJ IEZyYW1lIiwNCj4gPiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gPiArICAg ICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gPiArICAgICAgICAgIFBB UlNFUl9QQVJBTVMgKEdpY01TSUZyYW1lUGFyc2VyKQ0KPiA+ICsgICAgICAgICAgKTsNCj4gPiAr ICAgICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgY2FzZSBFRklf QUNQSV82XzJfR0lDUjogew0KPiA+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4gKyAgICAgICAg ICBUUlVFLA0KPiA+ICsgICAgICAgICAgMiwNCj4gPiArICAgICAgICAgICJHSUNSIiwNCj4gPiAr ICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gPiArICAgICAgICAgICpNYWR0SW50 ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdp Y1JQYXJzZXIpDQo+ID4gKyAgICAgICAgICApOw0KPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ICsg ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNfSVRTOiB7DQo+ ID4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gPiArICAgICAgICAgIFRSVUUsDQo+ID4gKyAgICAg ICAgICAyLA0KPiA+ICsgICAgICAgICAgIkdJQyBJVFMiLA0KPiA+ICsgICAgICAgICAgSW50ZXJy dXB0Q29udG9sbGVyUHRyLA0KPiA+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVy TGVuZ3RoLA0KPiA+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2ljSVRTUGFyc2VyKQ0KPiA+ ICsgICAgICAgICAgKTsNCj4gPiArICAgICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgZGVmYXVsdDogew0KPiA+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ID4gKyAgICAgICAgUHJpbnQgKA0KPiA+ICsgICAgICAgICAgTCJFUlJPUjogVW5rbm93 biBJbnRlcnJ1cHQgQ29udHJvbGxlciBTdHJ1Y3R1cmUsIg0KPiA+ICsgICAgICAgICAgICAiIFR5 cGUgPSAlZCwgTGVuZ3RoID0gJWRcbiIsDQo+ID4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENv bnRyb2xsZXJUeXBlLA0KPiA+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVu Z3RoDQo+ID4gKyAgICAgICAgICApOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9IC8vIHN3aXRj aA0KPiA+ICsNCj4gPiArICAgIEludGVycnVwdENvbnRvbGxlclB0ciArPSAqTWFkdEludGVycnVw dENvbnRyb2xsZXJMZW5ndGg7DQo+ID4gKyAgICBPZmZzZXQgKz0gKk1hZHRJbnRlcnJ1cHRDb250 cm9sbGVyTGVuZ3RoOw0KPiA+ICsgIH0gLy8gd2hpbGUNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQN Cj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L01jZmcvTWNmZ1BhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXIuYw0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uYTIxYjMwZGMwZDViNjAxMDg0ZTRmZmNkMA0KPiA3ZTczYjY2ZDExOGIzMjYNCj4gPiAt LS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXIuYw0KPiA+IEBAIC0wLDAgKzEs OTQgQEANCj4gPiArLyoqDQo+ID4gKyAgTUNGRyB0YWJsZSBwYXJzZXINCj4gPiArDQo+ID4gKyAg Q29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ID4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiA+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiA+ICsgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUNCj4gZm91bmQgYXQNCj4gPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNk LWxpY2Vuc2UucGhwDQo+ID4gKw0KPiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ID4gKw0KPiA+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ ICsgICAgLSBQQ0kgRmlybXdhcmUgU3BlY2lmaWNhdGlvbiAtIFJldmlzaW9uIDMuMiwgSmFudWFy eSAyNiwgMjAxNS4NCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFu ZGFyZC9BY3BpLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiArI2lu Y2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0K PiA+ICsNCj4gPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ID4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBU SU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFS U0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgTUNGRyBUYWJsZS4NCj4gPiArKi8NCj4gPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIE1jZmdQYXJzZXJbXSA9IHsNCj4gPiArICBQQVJTRV9B Q1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gPiArICB7TCJSZXNlcnZlZCIsIDgsIDM2LCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24g U3BhY2UNCj4gPiArICAgIEJhc2UgQWRkcmVzcyBzdHJ1Y3R1cmUuDQo+ID4gKyovDQo+ID4gK1NU QVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBQY2lDZmdTcGFjZUJhc2VBZGRyUGFyc2VyW10gPSB7DQo+ ID4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIlBDSSBTZWdtZW50IEdyb3VwIE5vLiIsIDIsIDgsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlN0YXJ0IEJ1cyBOby4iLCAxLCAx MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiRW5kIEJ1cyBO by4iLCAxLCAxMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wi UmVzZXJ2ZWQiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPiAr fTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBNQ0ZHIHRh YmxlLg0KPiA+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgTUNGRyB0YWJsZSBhbmQNCj4gPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0K PiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0 aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAg ICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUg QUNQSSB0YWJsZS4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNp b24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ ID4gK1BhcnNlQWNwaU1jZmcgKA0KPiA+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gKyAgSU4g VUlOVDgqICBQdHIsDQo+ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAg SU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJ TlQzMiBPZmZzZXQ7DQo+ID4gKyAgVUlOVDMyIFBjaUNmZ09mZnNldDsNCj4gPiArICBVSU5UOCog UGNpQ2ZnU3BhY2VQdHI7DQo+ID4gKw0KPiA+ICsgIGlmICghVHJhY2UpIHsNCj4gPiArICAgIHJl dHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4g KyAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgICAgMCwNCj4gPiArICAgICAgICAg ICAgICJNQ0ZHIiwNCj4gPiArICAgICAgICAgICAgIFB0ciwNCj4gPiArICAgICAgICAgICAgIEFj cGlUYWJsZUxlbmd0aCwNCj4gPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKE1jZmdQYXJz ZXIpDQo+ID4gKyAgICAgICAgICAgICApOw0KPiA+ICsNCj4gPiArICBQY2lDZmdTcGFjZVB0ciA9 IFB0ciArIE9mZnNldDsNCj4gPiArDQo+ID4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxl bmd0aCkgew0KPiA+ICsgICAgUGNpQ2ZnT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgVFJVRSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgMiwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIlBDSSBDb25maWd1cmF0aW9uIFNwYWNlIiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgUGNpQ2ZnU3BhY2VQdHIsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIChBY3BpVGFibGVMZW5ndGggLSBPZmZzZXQpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICBQQVJTRVJfUEFSQU1TIChQY2lDZmdTcGFjZUJhc2VBZGRyUGFyc2VyKQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICApOw0KPiA+ICsgICAgUGNpQ2ZnU3BhY2VQdHIgKz0gUGNpQ2ZnT2Zmc2V0 Ow0KPiA+ICsgICAgT2Zmc2V0ICs9IFBjaUNmZ09mZnNldDsNCj4gPiArICB9DQo+ID4gK30NCj4g PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyLmMNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjlkM2ZlN2EyNTkxNDIyNjRhZDU3NWFiMw0KPiA5ZTIxMmEyZDll OGRhNjMzDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyLmMNCj4g PiBAQCAtMCwwICsxLDE2OSBAQA0KPiA+ICsvKioNCj4gPiArICBSU0RQIHRhYmxlIHBhcnNlcg0K PiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ID4gKyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMs DQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ID4gKyAgQHBhciBSZWZl cmVuY2Uocyk6DQo+ID4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwg U2VwdGVtYmVyIDIwMTcNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9V ZWZpTGliLmg+DQo+ID4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ID4gKyNpbmNsdWRlICJB Y3BpVGFibGVQYXJzZXIuaCINCj4gPiArDQo+ID4gKy8vIExvY2FsIFZhcmlhYmxlcw0KPiA+ICtT VEFUSUMgQ09OU1QgVUlOVDY0KiBYc2R0QWRkcmVzczsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHZhbGlkYXRlcyB0aGUgUlNEVCBBZGRyZXNzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0g W2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9y bWF0aW9uIGUuZy4gdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBw b2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlkYXRlUnNkdEFkZHJlc3MgKA0KPiA+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPiArICApOw0KPiA+ ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYU0RUIEFkZHJlc3MuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGZpZWxkIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNv bnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+ ICsqLw0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVmFsaWRhdGVY c2R0QWRkcmVzcyAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiArICBJTiBWT0lEKiAgQ29u dGV4dA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogQW4gYXJyYXkgZGVzY3JpYmluZyB0aGUg QUNQSSBSU0RQIFRhYmxlLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIg UnNkcFBhcnNlcltdID0gew0KPiA+ICsgIHtMIlNpZ25hdHVyZSIsIDgsIDAsIE5VTEwsIER1bXA4 Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkNoZWNrc3VtIiwgMSwgOCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiT2VtIElEIiwgNiwgOSwg TlVMTCwgRHVtcDZDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmV2aXNpb24i LCAxLCAxNSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJTRFQg QWRkcmVzcyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZVJzZHRBZGRyZXNz LCBOVUxMfSwNCj4gPiArICB7TCJMZW5ndGgiLCA0LCAyMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+ICsgIHtMIlhTRFQgQWRkcmVzcyIsIDgsIDI0LCBMIjB4JWx4IiwgTlVM TCwgKFZPSUQqKikmWHNkdEFkZHJlc3MsDQo+ID4gKyAgIFZhbGlkYXRlWHNkdEFkZHJlc3MsIE5V TEx9LA0KPiA+ICsgIHtMIkV4dGVuZGVkIENoZWNrc3VtIiwgMSwgMzIsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwgMywgMzMsIEwiJXggJXgg JXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr LyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBSU0RUIEFkZHJlc3MuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxk IGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3Bl Y2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBj b3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+ICsqLw0KPiA+ ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArVmFsaWRhdGVSc2R0QWRkcmVz cyAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ ICsgICkNCj4gPiArew0KPiA+ICsjaWYgZGVmaW5lZChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAo TURFX0NQVV9BQVJDSDY0KQ0KPiA+ICsgIC8vIFJlZmVyZW5jZTogU2VydmVyIEJhc2UgQm9vdCBS ZXF1aXJlbWVudHMgU3lzdGVtIFNvZnR3YXJlIG9uIEFSTQ0KPiBQbGF0Zm9ybXMNCj4gPiArICAv LyBTZWN0aW9uOiA0LjIuMS4xIFJTRFANCj4gPiArICAvLyBSb290IFN5c3RlbSBEZXNjcmlwdGlv biBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUuDQo+ID4gKyAgLy8gICAtIFdpdGhpbiB0 aGUgUlNEUCwgdGhlIFJzZHRBZGRyZXNzIGZpZWxkIG11c3QgYmUgbnVsbCAoemVybykgYW5kIHRo ZQ0KPiA+ICsgIC8vICAgICBYc2R0QWRkcmVzc3MgTVVTVCBiZSBhIHZhbGlkLCBub24tbnVsbCwg NjQtYml0IHZhbHVlLg0KPiA+ICsgIFVJTlQzMiBSc2R0QWRkciA9ICooVUlOVDMyKilQdHI7DQo+ ID4gKyAgaWYgKFJzZHRBZGRyICE9IDApIHsNCj4gPiArICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ID4gKyAgICBQcmludCAoDQo+ID4gKyAgICAgIEwiXG5FUlJPUjogUnNkdCBBZGRyZXNz ID0gMHglcC4gVGhpcyBtdXN0IGJlIE5VTEwgb24gQVJNIFBsYXRmb3Jtcy4iLA0KPiA+ICsgICAg ICBSc2R0QWRkcg0KPiA+ICsgICAgICApOw0KPiA+ICsgIH0NCj4gPiArI2VuZGlmDQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWFNEVCBBZGRyZXNz Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0 byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4N Cj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlk YXRlWHNkdEFkZHJlc3MgKA0KPiA+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gKyAgSU4gVk9JRCog IENvbnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArI2lmIGRlZmluZWQoTURFX0NQVV9BUk0p IHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gPiArICAvLyBSZWZlcmVuY2U6IFNlcnZl ciBCYXNlIEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBTb2Z0d2FyZSBvbiBBUk0NCj4gUGxhdGZv cm1zDQo+ID4gKyAgLy8gU2VjdGlvbjogNC4yLjEuMSBSU0RQDQo+ID4gKyAgLy8gUm9vdCBTeXN0 ZW0gRGVzY3JpcHRpb24gUG9pbnRlciAoUlNEUCksIEFDUEkg77+9IDUuMi41Lg0KPiA+ICsgIC8v ICAgLSBXaXRoaW4gdGhlIFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0IGJlIG51bGwg KHplcm8pIGFuZCB0aGUNCj4gPiArICAvLyAgICAgWHNkdEFkZHJlc3NzIE1VU1QgYmUgYSB2YWxp ZCwgbm9uLW51bGwsIDY0LWJpdCB2YWx1ZS4NCj4gPiArICBVSU5UNjQgWHNkdEFkZHIgPSAqKFVJ TlQ2NCopUHRyOw0KPiA+ICsgIGlmIChYc2R0QWRkciA9PSAwKSB7DQo+ID4gKyAgICBJbmNyZW1l bnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgUHJpbnQgKA0KPiA+ICsgICAgICBMIlxuRVJST1I6 IFhzZHQgQWRkcmVzcyA9IDB4JXAuIFRoaXMgbXVzdCBub3QgYmUgTlVMTCBvbiBBUk0NCj4gUGxh dGZvcm1zLiIsDQo+ID4gKyAgICAgIFhzZHRBZGRyDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfQ0K PiA+ICsjZW5kaWYNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBBQ1BJIFJTRFAgdGFibGUuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gaW52b2tl cyB0aGUgcGFyc2VyIGZvciB0aGUgWFNEVCB0YWJsZS4NCj4gPiArICAqIE5vdGUgLSBUaGlzIGZ1 bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgcGFyc2luZyBvZiBSU0RUIHRhYmxlLg0KPiA+ICsNCj4g PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgYSBSQVcgZHVtcCBvZiB0aGUgQUNQSSB0 YWJsZSBhbmQNCj4gPiArICB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmll bGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0 aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRh YmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsqLw0KPiA+ICtW T0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlSc2RwICgNCj4gPiArICBJTiBCT09MRUFO IFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgQWNwaVRh YmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBpZiAoVHJhY2UpIHsNCj4gPiArICAgIER1bXBSYXcgKFB0ciwgQWNw aVRhYmxlTGVuZ3RoKTsNCj4gPiArICAgIFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQdHIsIEFjcGlU YWJsZUxlbmd0aCk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQYXJzZUFjcGkgKFRyYWNlLCAw LCAiUlNEUCIsIFB0ciwgQWNwaVRhYmxlTGVuZ3RoLCBQQVJTRVJfUEFSQU1TDQo+IChSc2RwUGFy c2VyKSk7DQo+ID4gKw0KPiA+ICsgIC8vIFRoaXMgY29kZSBjdXJyZW50bHkgc3VwcG9ydHMgcGFy c2luZyBvZiBYU0RUIHRhYmxlIG9ubHkNCj4gPiArICAvLyBhbmQgZG9lcyBub3QgcGFyc2UgdGhl IFJTRFQgdGFibGUuIFBsYXRmb3JtcyBwcm92aWRlIHRoZQ0KPiA+ICsgIC8vIFJTRFQgdG8gZW5h YmxlIGNvbXBhdGliaWxpdHkgd2l0aCBBQ1BJIDEuMCBvcGVyYXRpbmcgc3lzdGVtcy4NCj4gPiAr ICAvLyBUaGVyZWZvcmUgdGhlIFJTRFQgc2hvdWxkIG5vdCBiZSB1c2VkIG9uIEFSTSBwbGF0Zm9y bXMuDQo+ID4gKyAgaWYgKCgqWHNkdEFkZHJlc3MpID09IDApIHsNCj4gPiArICAgIEluY3JlbWVu dEVycm9yQ291bnQgKCk7DQo+ID4gKyAgICBQcmludCAoTCJFUlJPUjogWFNEVCBQb2ludGVyIGlz IG5vdCBzZXQuXG4iKTsNCj4gPiArICAgIHJldHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IFByb2Nlc3NBY3BpVGFibGUgKChVSU5UOCopKFVJTlROKSgqWHNkdEFkZHJlc3MpKTsNCj4gPiAr fQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIuYw0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY5OWZkNDZhMDNhY2M0MTRiNzIyMTJjYQ0KPiA5ZjU1 NmU4YWEyMzI5ODUNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIu Yw0KPiA+IEBAIC0wLDAgKzEsMTQyIEBADQo+ID4gKy8qKg0KPiA+ICsgIFNMSVQgdGFibGUgcGFy c2VyDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMNCj4gPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4g PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JB TSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBC QVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArICBAcGFy IFJlZmVyZW5jZShzKToNCj4gPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0 YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxJbmR1 c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4N Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ICsjaW5jbHVkZSAiQWNwaVBh cnNlci5oIg0KPiA+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ID4gKw0KPiA+ICsv LyBMb2NhbCBWYXJpYWJsZXMNCj4gPiArU1RBVElDIENPTlNUIFVJTlQ2NCogU2xpdFN5c3RlbUxv Y2FsaXR5Q291bnQ7DQo+ID4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFj cGlIZHJJbmZvOw0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJp bmcgdGhlIEFDUEkgU0xJVCB0YWJsZS4NCj4gPiArKi8NCj4gPiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIFNsaXRQYXJzZXJbXSA9IHsNCj4gPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlI ZHJJbmZvKSwNCj4gPiArICB7TCJOdW1iZXIgb2YgU3lzdGVtIExvY2FsaXRpZXMiLCA4LCAzNiwg TCIweCVseCIsIE5VTEwsDQo+ID4gKyAgIChWT0lEKiopJlNsaXRTeXN0ZW1Mb2NhbGl0eUNvdW50 LCBOVUxMLCBOVUxMfQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqIE1hY3JvIHRvIGdldCB0aGUg dmFsdWUgb2YgYSBTeXN0ZW0gTG9jYWxpdHkNCj4gPiArKi8NCj4gPiArI2RlZmluZSBTTElUX0VM RU1FTlQoUHRyLCBpLCBqKSAqKFB0ciArIChpICogTG9jYWxpdHlDb3VudCkgKyBqKQ0KPiA+ICsN Cj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNMSVQgdGFibGUuDQo+ID4g KyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTTElUIHRh YmxlIGFuZA0KPiA+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyB2YWxpZGF0ZXMgU3lzdGVtIExvY2FsaXRpZXMgZm9yIHRo ZSBmb2xsb3dpbmc6DQo+ID4gKyAgICAtIERpYWdvbmFsIGVsZW1lbnRzIGhhdmUgYSBub3JtYWxp emVkIHZhbHVlIG9mIDEwDQo+ID4gKyAgICAtIFJlbGF0aXZlIGRpc3RhbmNlIGZyb20gU3lzdGVt IExvY2FsaXR5IGF0IGkqTitqIGlzIHNhbWUgYXMNCj4gPiArICAgICAgaipOK2kNCj4gPiArDQo+ ID4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBB Q1BJIGZpZWxkcy4NCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArKi8N Cj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArUGFyc2VBY3BpU2xpdCAoDQo+ID4gKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCj4gPiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5UMzIg IEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyIE9mZnNldDsNCj4gPiArICBVSU5UNjQgaTsN Cj4gPiArICBVSU5UNjQgajsNCj4gPiArICBVSU5UNjQgTG9jYWxpdHlDb3VudDsNCj4gPiArICBV SU5UOCogTG9jYWxpdHlQdHI7DQo+ID4gKyAgQ0hBUjE2IEJ1ZmZlcls4MF07ICAvLyBVc2VkIGZv ciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ID4gKw0KPiA+ICsgIGlmICghVHJhY2Up IHsNCj4gPiArICAgIHJldHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIE9mZnNldCA9IFBh cnNlQWNwaSAoDQo+ID4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgICAgMCwN Cj4gPiArICAgICAgICAgICAgICJTTElUIiwNCj4gPiArICAgICAgICAgICAgIFB0ciwNCj4gPiAr ICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICAgICAgICAgICAgIFBBUlNFUl9Q QVJBTVMgKFNsaXRQYXJzZXIpDQo+ID4gKyAgICAgICAgICAgICApOw0KPiA+ICsgIExvY2FsaXR5 UHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+ICsNCj4gPiArICBMb2NhbGl0eUNvdW50ID0gKlNsaXRT eXN0ZW1Mb2NhbGl0eUNvdW50Ow0KPiA+ICsgIC8vIFdlIG9ubHkgcHJpbnQgdGhlIExvY2FsaXRp ZXMgaWYgdGhlIGNvdW50IGlzIGxlc3MgdGhhbiAxNg0KPiA+ICsgIC8vIElmIHRoZSBsb2NhbGl0 eSBjb3VudCBpcyBtb3JlIHRoYW4gMTYgdGhlbiByZWZlciB0byB0aGUNCj4gPiArICAvLyByYXcg ZGF0YSBkdW1wLg0KPiA+ICsgIGlmIChMb2NhbGl0eUNvdW50IDwgMTYpIHsNCj4gPiArICAgIFVu aWNvZGVTUHJpbnQgKA0KPiA+ICsgICAgICBCdWZmZXIsDQo+ID4gKyAgICAgIHNpemVvZiAoQnVm ZmVyKSwNCj4gPiArICAgICAgTCJFbnRyeVsweCVseF1bMHglbHhdIiwNCj4gPiArICAgICAgTG9j YWxpdHlDb3VudCwNCj4gPiArICAgICAgTG9jYWxpdHlDb3VudA0KPiA+ICsgICAgICApOw0KPiA+ ICsgICAgUHJpbnRGaWVsZE5hbWUgKDAsIEJ1ZmZlcik7DQo+ID4gKyAgICBQcmludCAoTCJcbiIp Ow0KPiA+ICsgICAgUHJpbnQgKEwiICAgICAgICIpOw0KPiA+ICsgICAgZm9yIChqID0gMDsgaiA8 IExvY2FsaXR5Q291bnQ7IGorKykgew0KPiA+ICsgICAgICBQcmludCAoTCIgKCUzZCkgIiwgaik7 DQo+ID4gKyAgICB9DQo+ID4gKyAgICBQcmludCAoTCJcbiIpOw0KPiA+ICsgICAgZm9yIChpID0g MDsgaSA8IExvY2FsaXR5Q291bnQ7IGkrKykgew0KPiA+ICsgICAgICBQcmludCAoTCIgKCUzZCkg IiwgaSk7DQo+ID4gKyAgICAgIGZvciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsN Cj4gPiArICAgICAgICBQcmludCAoTCIgICUzZCAgIiwgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0 ciwgaSwgaikpOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICAgIFByaW50IChMIlxuIik7DQo+ID4g KyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBWYWxpZGF0ZQ0KPiA+ICsgIGZvciAo aSA9IDA7IGkgPCBMb2NhbGl0eUNvdW50OyBpKyspIHsNCj4gPiArICAgIGZvciAoaiA9IDA7IGog PCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gPiArICAgICAgLy8gRWxlbWVudFt4XVt4XSBtdXN0 IGJlIGVxdWFsIHRvIDEwDQo+ID4gKyAgICAgIGlmICgoaSA9PSBqKSAmJiAoU0xJVF9FTEVNRU5U IChMb2NhbGl0eVB0ciwgaSwgaikgIT0gMTApKSB7DQo+ID4gKyAgICAgICAgSW5jcmVtZW50RXJy b3JDb3VudCAoKTsNCj4gPiArICAgICAgICBQcmludCAoDQo+ID4gKyAgICAgICAgICBMIkVSUk9S OiBEaWFnb25hbCBFbGVtZW50WzB4JWx4XVsweCVseF0gKCUzZCkuIg0KPiA+ICsgICAgICAgICAg ICAiIE5vcm1hbGl6ZWQgVmFsdWUgaXMgbm90IDEwXG4iLA0KPiA+ICsgICAgICAgICAgaSwNCj4g PiArICAgICAgICAgIGosDQo+ID4gKyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRy LCBpLCBqKQ0KPiA+ICsgICAgICAgICAgKTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICAvLyBF bGVtZW50W2ldW2pdIG11c3QgYmUgZXF1YWwgdG8gRWxlbWVudFtqXVtpXQ0KPiA+ICsgICAgICBp ZiAoU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikgIT0NCj4gPiArICAgICAgICAgIFNM SVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGosIGkpKSB7DQo+ID4gKyAgICAgICAgSW5jcmVtZW50 RXJyb3JDb3VudCAoKTsNCj4gPiArICAgICAgICBQcmludCAoDQo+ID4gKyAgICAgICAgICBMIkVS Uk9SOiBSZWxhdGl2ZSBkaXN0YW5jZXMgZm9yIEVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNkKSBh bmQgXG4iDQo+ID4gKyAgICAgICAgICAgIkVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNkKSBkbyBu b3QgbWF0Y2guXG4iLA0KPiA+ICsgICAgICAgICAgaSwNCj4gPiArICAgICAgICAgIGosDQo+ID4g KyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSwNCj4gPiArICAgICAg ICAgIGosDQo+ID4gKyAgICAgICAgICBpLA0KPiA+ICsgICAgICAgICAgU0xJVF9FTEVNRU5UIChM b2NhbGl0eVB0ciwgaiwgaSkNCj4gPiArICAgICAgICAgICk7DQo+ID4gKyAgICAgIH0NCj4gPiAr ICAgIH0NCj4gPiArICB9DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXIu Yw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4 DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MWEyN2ZmZGZh Yjc4MjEwNTQ1ZDBiZTkNCj4gNWUxMDFmNjhiZWNmZWZjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4gPiBAQCAtMCwwICsxLDE2OCBAQA0KPiA+ICsvKioN Cj4gPiArICBTUENSIHRhYmxlIHBhcnNlcg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIw MTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRA0KPiBMaWNlbnNlDQo+ID4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0K PiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4g PiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gPiArDQo+ID4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4gKyAgICAtIE1pY3Jvc29m dCBTZXJpYWwgUG9ydCBDb25zb2xlIFJlZGlyZWN0aW9uIFRhYmxlDQo+ID4gKyAgICAgIFNwZWNp ZmljYXRpb24gLSBWZXJzaW9uIDEuMDMgLSBBdWd1c3QgMTAsIDIwMTUuDQo+ID4gKyoqLw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+ICsjaW5jbHVk ZSA8SW5kdXN0cnlTdGFuZGFyZC9TZXJpYWxQb3J0Q29uc29sZVJlZGlyZWN0aW9uVGFibGUuaD4N Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ICsjaW5jbHVkZSAiQWNwaVBh cnNlci5oIg0KPiA+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ID4gKw0KPiA+ICsv LyBMb2NhbCB2YXJpYWJsZXMNCj4gPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lO Rk8gQWNwaUhkckluZm87DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMg dGhlIEludGVycnVwdCBUeXBlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5d IENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhp cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBB Q1BJIHRhYmxlIGhlYWRlci4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiAr RUZJQVBJDQo+ID4gK1ZhbGlkYXRlSW50ZXJydXB0VHlwZSAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiog VGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElycS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiAr ICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1h dGlvbiBlLmcuIHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9p bnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtWYWxpZGF0ZUlycSAoDQo+ID4gKyAgSU4gVUlOVDgq IFB0ciwNCj4gPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBTUENSIFRhYmxlLg0K PiA+ICsqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3BjclBhcnNlcltdID0gew0K PiA+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiA+ICsgIHtMIkludGVy ZmFjZSBUeXBlIiwgMSwgMzYsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiAr ICB7TCJSZXNlcnZlZCIsIDMsIDM3LCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gKyAge0wiQmFzZSBBZGRyZXNzIiwgMTIsIDQwLCBOVUxMLCBEdW1wR2Fz LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJJbnRlcnJ1cHQgVHlwZSIsIDEsIDUyLCBM IiVkIiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVJbnRlcnJ1cHRUeXBlLCBOVUxMfSwNCj4gPiArICB7 TCJJUlEiLCAxLCA1MywgTCIlZCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlSXJxLCBOVUxMfSwNCj4g PiArICB7TCJHbG9iYWwgU3lzdGVtIEludGVycnVwdCIsIDQsIDU0LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJCYXVkIFJhdGUiLCAxLCA1OCwgTCIlZCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlBhcml0eSIsIDEsIDU5LCBMIiVkIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiU3RvcCBCaXRzIiwgMSwgNjAsIEwi JWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJGbG93IENvbnRyb2wiLCAx LCA2MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiVGVybWlu YWwgVHlwZSIsIDEsIDYyLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAg e0wiUmVzZXJ2ZWQiLCAxLCA2MywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ ICsNCj4gPiArICB7TCJQQ0kgRGV2aWNlIElEIiwgMiwgNjQsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlBDSSBWZW5kb3IgSUQiLCAyLCA2NiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUENJIEJ1cyBOdW1iZXIiLCAxLCA2 OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUENJIERldmlj ZSBOdW1iZXIiLCAxLCA2OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g KyAge0wiUENJIEZ1bmN0aW9uIE51bWJlciIsIDEsIDcwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPiArICB7TCJQQ0kgRmxhZ3MiLCA0LCA3MSwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUENJIFNlZ21lbnQiLCAxLCA3NSwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA3Niwg TCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiog VGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIEludGVycnVwdCBUeXBlLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBk YXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNp ZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY291 bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiArKi8NCj4gPiAr U1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlkYXRlSW50ZXJydXB0VHlw ZSAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ ICsgICkNCj4gPiArew0KPiA+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQg KE1ERV9DUFVfQUFSQ0g2NCkNCj4gPiArICBVSU5UOCBJbnRlcnJ1cHRUeXBlID0gKlB0cjsNCj4g PiArICBpZiAoSW50ZXJydXB0VHlwZSAhPQ0KPiA+ICsNCj4gRUZJX0FDUElfU0VSSUFMX1BPUlRf Q09OU09MRV9SRURJUkVDVElPTl9UQUJMRV9JTlRFUlJVUFRfVFlQRV9HSQ0KPiBDKSB7DQo+ID4g KyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgUHJpbnQgKA0KPiA+ICsgICAg ICBMIlxuRVJST1I6IEludGVycnVwdFR5cGUgPSAlZC4gVGhpcyBtdXN0IGJlIDggb24gQVJNIFBs YXRmb3JtcyIsDQo+ID4gKyAgICAgIEludGVycnVwdFR5cGUNCj4gPiArICAgICAgKTsNCj4gPiAr ICB9DQo+ID4gKyNlbmRpZg0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB2 YWxpZGF0ZXMgdGhlIElycS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiArICBAcGFyYW0gW2luXSBD b250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQ SSB0YWJsZSBoZWFkZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtWYWxpZGF0ZUlycSAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiArICBJ TiBWT0lEKiAgQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsjaWYgZGVmaW5lZCAoTURF X0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gPiArICBVSU5UOCBJcnEg PSAqUHRyOw0KPiA+ICsgIGlmIChJcnEgIT0gMCkgew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gPiArICAgIFByaW50ICgNCj4gPiArICAgICAgTCJcbkVSUk9SOiBJcnEgPSAl ZC4gVGhpcyBtdXN0IGJlIHplcm8gb24gQVJNIFBsYXRmb3Jtc1xuIiwNCj4gPiArICAgICAgSXJx DQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfQ0KPiA+ICsjZW5kaWYNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNQQ1IgdGFibGUuDQo+ID4gKyAg V2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTUENSIHRhYmxl IGFuZA0KPiA+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsg IFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9ucyBvZiB0aGUgQUNQSSB0YWJs ZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJ ZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAg QHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFD UEkgdGFibGUuDQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNw aVNwY3IgKA0KPiA+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQdHIs DQo+ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDggICBB Y3BpVGFibGVSZXZpc2lvbg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGlmICghVHJhY2UpIHsN Cj4gPiArICAgIHJldHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIER1bXAgdGhlIFNQ Q1INCj4gPiArICBQYXJzZUFjcGkgKA0KPiA+ICsgICAgVFJVRSwNCj4gPiArICAgIDAsDQo+ID4g KyAgICAiU1BDUiIsDQo+ID4gKyAgICBQdHIsDQo+ID4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ ID4gKyAgICBQQVJTRVJfUEFSQU1TIChTcGNyUGFyc2VyKQ0KPiA+ICsgICAgKTsNCj4gPiArfQ0K PiA+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYw0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkYTU1OTM1YzgzNTM5NjkxZjUzZTBiDQo+IDRjNTdhNjM1 NjIxMGJiZGMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYw0K PiA+IEBAIC0wLDAgKzEsMzMwIEBADQo+ID4gKy8qKg0KPiA+ICsgIFNSQVQgdGFibGUgcGFyc2Vy DQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gPiAr ICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2Yg dGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJ UyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJ UywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBL SU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArICBAcGFyIFJl ZmVyZW5jZShzKToNCj4gPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBB LCBTZXB0ZW1iZXIgMjAxNw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxJbmR1c3Ry eVN0YW5kYXJkL0FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4g PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ICsjaW5jbHVkZSAiQWNwaVBhcnNl ci5oIg0KPiA+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ID4gKw0KPiA+ICsvLyBM b2NhbCBWYXJpYWJsZXMNCj4gPiArU1RBVElDIENPTlNUIFVJTlQ4KiBTcmF0UkFUeXBlOw0KPiA+ ICtTVEFUSUMgQ09OU1QgVUlOVDgqIFNyYXRSQUxlbmd0aDsNCj4gPiArU1RBVElDIEFDUElfREVT Q1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBm dW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJlc2VydmVkIGZpZWxkIGluIHRoZSBTUkFUIHRhYmxlIGhl YWRlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50 ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFk ZXIuDQo+ID4gKyovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtW YWxpZGF0ZVNyYXRSZXNlcnZlZCAoDQo+ID4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiArICBJTiBW T0lEKiAgQ29udGV4dA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB0 cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERvbWFpbiBmaWVsZC4NCj4gPiArDQo+ID4gKyAgQHBh cmFtIFtpbl0gRm9ybWF0ICBGb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRHVtcFNyYXRBcGljUHJv eGltaXR5ICgNCj4gPiArICBJTiAgQ09OU1QgQ0hBUjE2KiAgRm9ybWF0LA0KPiA+ICsgIElOICBV SU5UOCogICAgICAgICBQdHINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFS U0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFNSQVQgVGFibGUuDQo+ID4gKyovDQo+ID4gK1NUQVRJ QyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0UGFyc2VyW10gPSB7DQo+ID4gKyAgUEFSU0VfQUNQSV9I RUFERVIgKCZBY3BpSGRySW5mbyksDQo+ID4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAzNiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVTcmF0UmVzZXJ2ZWQsIE5VTEx9LA0KPiA+ICsgIHtMIlJl c2VydmVkIiwgOCwgNDAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFJl c291cmNlIEFsbG9jYXRpb24NCj4gPiArICAgIHN0cnVjdHVyZSBoZWFkZXIuDQo+ID4gKyovDQo+ ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0UmVzb3VyY2VBbGxvY2F0aW9uUGFyc2Vy W10gPSB7DQo+ID4gKyAge0wiVHlwZSIsIDEsIDAsIE5VTEwsIE5VTEwsIChWT0lEKiopJlNyYXRS QVR5cGUsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIE5VTEwsIE5VTEws IChWT0lEKiopJlNyYXRSQUxlbmd0aCwgTlVMTCwgTlVMTH0NCj4gPiArfTsNCj4gPiArDQo+ID4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHSUNDIEFmZmluaXR5IHN0 cnVjdHVyZS4NCj4gPiArKi8NCj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRHaWND QWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKw0KPiA+ICsgIHtMIlByb3hpbWl0eSBEb21h aW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJB Q1BJIFByb2Nlc3NvciBVSUQiLCA0LCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPiArICB7TCJGbGFncyIsIDQsIDEwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPiArICB7TCJDbG9jayBEb21haW4iLCA0LCAxNCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBh cnJheSBkZXNjcmliaW5nIHRoZSBHSUMgSVRTIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gPiArKi8N Cj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRHaWNJVFNBZmZpbml0eVBhcnNlcltd ID0gew0KPiA+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPiArDQo+ID4gKyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDIsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwgMiwgNiwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiSVRTIElkIiwgNCwg OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gK307DQo+ID4gKw0KPiA+ ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgTWVtb3J5IEFmZmluaXR5 IHN0cnVjdHVyZS4NCj4gPiArKi8NCj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRN ZW1BZmZpbml0eVBhcnNlcltdID0gew0KPiA+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArDQo+ID4gKyAge0wiUHJveGltaXR5IERv bWFpbiIsIDQsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtM IlJlc2VydmVkIiwgMiwgNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g KyAge0wiQmFzZSBBZGRyZXNzIExvdyIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ICsgIHtMIkJhc2UgQWRkcmVzcyBIaWdoIiwgNCwgMTIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkxlbmd0aCBMb3ciLCA0LCAxNiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiTGVuZ3RoIEhpZ2giLCA0 LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmVzZXJ2 ZWQiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wi RmxhZ3MiLCA0LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAg e0wiUmVzZXJ2ZWQiLCA4LCAzMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ ID4gK307DQo+ID4gKw0KPiA+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0 aGUgQVBJQy9TQVBJQyBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBD T05TVCBBQ1BJX1BBUlNFUiBTcmF0QXBjaVNhcGljQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gPiAr ICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g KyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4gKw0KPiA+ICsgIHtMIlByb3hpbWl0eSBEb21haW4gWzc6MF0iLCAxLCAyLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJBUElDIElEIiwgMSwgMywgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiRmxhZ3MiLCA0LCA0LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJMb2NhbCBTQVBJQyBFSUQi LCAxLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQcm94 aW1pdHkgRG9tYWluIFszMTo4XSIsIDMsIDksIEwiMHgleCIsIER1bXBTcmF0QXBpY1Byb3hpbWl0 eSwNCj4gPiArICAgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiQ2xvY2sgRG9tYWluIiwg NCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gK307DQo+ID4gKw0K PiA+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUHJvY2Vzc29yIExv Y2FsIHgyQVBJQw0KPiA+ICsgICAgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiA+ICsqLw0KPiA+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdFgyQXBjaUFmZmluaXR5UGFyc2VyW10gPSB7DQo+ ID4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+ICsNCj4gPiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCA0LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJYMkFQSUMgSUQiLCA0LCA4LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJGbGFncyIsIDQsIDEy LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJDbG9jayBEb21h aW4iLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wi UmVzZXJ2ZWQiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPiAr fTsNCj4gPiArDQo+ID4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgUmVzZXJ2ZWQg ZmllbGQgaW4gdGhlIFNSQVQgdGFibGUgaGVhZGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ICsg IEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0 aW9uIGUuZy4gdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ID4g K1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlkYXRlU3JhdFJlc2VydmVkICgNCj4gPiArICBJ TiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0gMSkgew0KPiA+ICsgICAgSW5jcmVtZW50RXJy b3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50IChMIlxuRVJST1I6IFJlc2VydmVkIHNob3VsZCBi ZSAxIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuIik7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERv bWFpbiBmaWVsZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBGb3JtYXQgc3Ry aW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArKi8NCj4gPiArU1RBVElDDQo+ ID4gK1ZPSUQNCj4gPiArRHVtcFNyYXRBcGljUHJveGltaXR5ICgNCj4gPiArIElOIENPTlNUIENI QVIxNiogRm9ybWF0LA0KPiA+ICsgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPiArICkNCj4gPiAr ew0KPiA+ICsgIFVJTlQzMiBQcm94aW1pdHlEb21haW4gPSBQdHJbMF0gfCAoUHRyWzFdIDw8IDgp IHwgKFB0clsyXSA8PCAxNik7DQo+ID4gKyAgUHJpbnQgKEZvcm1hdCwgUHJveGltaXR5RG9tYWlu KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJ IFNSQVQgdGFibGUuDQo+ID4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBTUkFUIHRhYmxlIGFuZA0KPiA+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBm aWVsZHMuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBmb2xsb3dpbmcg UmVzb3VyY2UgQWxsb2NhdGlvbiBTdHJ1Y3R1cmVzOg0KPiA+ICsgICAgLSBQcm9jZXNzb3IgTG9j YWwgQVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gPiArICAgIC0gTWVtb3J5IEFmZmlu aXR5IFN0cnVjdHVyZQ0KPiA+ICsgICAgLSBQcm9jZXNzb3IgTG9jYWwgeDJBUElDIEFmZmluaXR5 IFN0cnVjdHVyZQ0KPiA+ICsgICAgLSBHSUNDIEFmZmluaXR5IFN0cnVjdHVyZQ0KPiA+ICsNCj4g PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0 YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAg ICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4g KyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJs ZS4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhl IEFDUEkgdGFibGUuDQo+ID4gKyovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNl QWNwaVNyYXQgKA0KPiA+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQ dHIsDQo+ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDgg ICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQzMiBPZmZz ZXQ7DQo+ID4gKyAgVUlOVDgqIFJlc291cmNlUHRyOw0KPiA+ICsgIFVJTlQzMiBHaWNDQWZmaW5p dHlJbmRleCA9IDA7DQo+ID4gKyAgVUlOVDMyIEdpY0lUU0FmZmluaXR5SW5kZXggPSAwOw0KPiA+ ICsgIFVJTlQzMiBNZW1vcnlBZmZpbml0eUluZGV4ID0gMDsNCj4gPiArICBVSU5UMzIgQXBpY1Nh cGljQWZmaW5pdHlJbmRleCA9IDA7DQo+ID4gKyAgVUlOVDMyIFgyQXBpY0FmZmluaXR5SW5kZXgg PSAwOw0KPiA+ICsgIENIQVI4ICBCdWZmZXJbODBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBh cmFtIG9mIFBhcnNlQWNwaQ0KPiA+ICsNCj4gPiArICBpZiAoIVRyYWNlKSB7DQo+ID4gKyAgICBy ZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+ ICsgICAgICAgICAgICAgVFJVRSwNCj4gPiArICAgICAgICAgICAgIDAsDQo+ID4gKyAgICAgICAg ICAgICAiU1JBVCIsDQo+ID4gKyAgICAgICAgICAgICBQdHIsDQo+ID4gKyAgICAgICAgICAgICBB Y3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0UGFy c2VyKQ0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArICBSZXNvdXJjZVB0ciA9IFB0ciArIE9m ZnNldDsNCj4gPiArDQo+ID4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkgew0K PiA+ICsgICAgUGFyc2VBY3BpICgNCj4gPiArICAgICAgRkFMU0UsDQo+ID4gKyAgICAgIDAsDQo+ ID4gKyAgICAgIE5VTEwsDQo+ID4gKyAgICAgIFJlc291cmNlUHRyLA0KPiA+ICsgICAgICAyLCAg Ly8gVGhlIGxlbmd0aCBpcyAxIGJ5dGUgYXQgb2Zmc2V0IDENCj4gPiArICAgICAgUEFSU0VSX1BB UkFNUyAoU3JhdFJlc291cmNlQWxsb2NhdGlvblBhcnNlcikNCj4gPiArICAgICAgKTsNCj4gPiAr DQo+ID4gKyAgICBzd2l0Y2ggKCpTcmF0UkFUeXBlKSB7DQo+ID4gKyAgICAgIGNhc2UgRUZJX0FD UElfNl8yX0dJQ0NfQUZGSU5JVFk6DQo+ID4gKyAgICAgICAgQXNjaWlTUHJpbnQgKA0KPiA+ICsg ICAgICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+ICsg ICAgICAgICAgIkdJQ0MgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiA+ICsgICAgICAgICAg R2ljQ0FmZmluaXR5SW5kZXgrKw0KPiA+ICsgICAgICAgICAgKTsNCj4gPiArICAgICAgICBQYXJz ZUFjcGkgKA0KPiA+ICsgICAgICAgICAgVFJVRSwNCj4gPiArICAgICAgICAgIDIsDQo+ID4gKyAg ICAgICAgICBCdWZmZXIsDQo+ID4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gPiArICAgICAg ICAgICpTcmF0UkFMZW5ndGgsDQo+ID4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0R2lj Q0FmZmluaXR5UGFyc2VyKQ0KPiA+ICsgICAgICAgICAgKTsNCj4gPiArICAgICAgICBicmVhazsN Cj4gPiArDQo+ID4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ19JVFNfQUZGSU5JVFk6DQo+ ID4gKyAgICAgICAgQXNjaWlTUHJpbnQgKA0KPiA+ICsgICAgICAgICAgQnVmZmVyLA0KPiA+ICsg ICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+ICsgICAgICAgICAgIkdJQyBJVFMgQWZmaW5p dHkgU3RydWN0dXJlIFslZF0iLA0KPiA+ICsgICAgICAgICAgR2ljSVRTQWZmaW5pdHlJbmRleCsr DQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+ICsgICAgICAg ICAgVFJVRSwNCj4gPiArICAgICAgICAgIDIsDQo+ID4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4g KyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gPiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ ID4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0R2ljSVRTQWZmaW5pdHlQYXJzZXIpDQo+ ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICAgIGNh c2UgRUZJX0FDUElfNl8yX01FTU9SWV9BRkZJTklUWToNCj4gPiArICAgICAgICBBc2NpaVNQcmlu dCAoDQo+ID4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4gKyAgICAgICAgICBzaXplb2YgKEJ1ZmZl ciksDQo+ID4gKyAgICAgICAgICAiTWVtb3J5IEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4g PiArICAgICAgICAgIE1lbW9yeUFmZmluaXR5SW5kZXgrKw0KPiA+ICsgICAgICAgICAgKTsNCj4g PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+ICsgICAgICAgICAgVFJVRSwNCj4gPiArICAgICAg ICAgIDIsDQo+ID4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4gKyAgICAgICAgICBSZXNvdXJjZVB0 ciwNCj4gPiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ID4gKyAgICAgICAgICBQQVJTRVJf UEFSQU1TIChTcmF0TWVtQWZmaW5pdHlQYXJzZXIpDQo+ID4gKyAgICAgICAgICApOw0KPiA+ICsg ICAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfUFJPQ0VT U09SX0xPQ0FMX0FQSUNfU0FQSUNfQUZGSU5JVFk6DQo+ID4gKyAgICAgICAgQXNjaWlTUHJpbnQg KA0KPiA+ICsgICAgICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIp LA0KPiA+ICsgICAgICAgICAgIkFQSUMvU0FQSUMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0K PiA+ICsgICAgICAgICAgQXBpY1NhcGljQWZmaW5pdHlJbmRleCsrDQo+ID4gKyAgICAgICAgICAp Ow0KPiA+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4gKyAgICAgICAgICBUUlVFLA0KPiA+ICsg ICAgICAgICAgMiwNCj4gPiArICAgICAgICAgIEJ1ZmZlciwNCj4gPiArICAgICAgICAgIFJlc291 cmNlUHRyLA0KPiA+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gPiArICAgICAgICAgIFBB UlNFUl9QQVJBTVMgKFNyYXRBcGNpU2FwaWNBZmZpbml0eVBhcnNlcikNCj4gPiArICAgICAgICAg ICk7DQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKw0KPiA+ICsgICAgICBjYXNlIEVGSV9BQ1BJ XzZfMl9QUk9DRVNTT1JfTE9DQUxfWDJBUElDX0FGRklOSVRZOg0KPiA+ICsgICAgICAgIEFzY2lp U1ByaW50ICgNCj4gPiArICAgICAgICAgIEJ1ZmZlciwNCj4gPiArICAgICAgICAgIHNpemVvZiAo QnVmZmVyKSwNCj4gPiArICAgICAgICAgICJYMkFQSUMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0i LA0KPiA+ICsgICAgICAgICAgWDJBcGljQWZmaW5pdHlJbmRleCsrDQo+ID4gKyAgICAgICAgICAp Ow0KPiA+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4gKyAgICAgICAgICBUUlVFLA0KPiA+ICsg ICAgICAgICAgMiwNCj4gPiArICAgICAgICAgIEJ1ZmZlciwNCj4gPiArICAgICAgICAgIFJlc291 cmNlUHRyLA0KPiA+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gPiArICAgICAgICAgIFBB UlNFUl9QQVJBTVMgKFNyYXRYMkFwY2lBZmZpbml0eVBhcnNlcikNCj4gPiArICAgICAgICAgICk7 DQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKw0KPiA+ICsgICAgICBkZWZhdWx0Og0KPiA+ICsg ICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gKyAgICAgICAgUHJpbnQgKEwiRVJS T1I6IFVua25vd24gU1JBVCBBZmZpbml0eSB0eXBlID0gMHgleFxuIiwgKlNyYXRSQVR5cGUpOw0K PiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFJlc291cmNl UHRyICs9ICgqU3JhdFJBTGVuZ3RoKTsNCj4gPiArICAgIE9mZnNldCArPSAoKlNyYXRSQUxlbmd0 aCk7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyLmMN Cj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L1NzZHQvU3NkdFBhcnNlci5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleA0K PiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzdjY2JlMDYwNjhl NWRhNDdmZjU0ODhjDQo+IGY5YWJjOTRjNTU4M2M5Yw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NzZHQvU3NkdFBhcnNlci5jDQo+ID4gQEAgLTAsMCArMSw0NyBAQA0KPiA+ICsvKioNCj4g PiArICBTU0RUIHRhYmxlIHBhcnNlcg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTYg LSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEJTRA0KPiBMaWNlbnNlDQo+ID4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiAr DQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4N Cj4gPiArDQo+ID4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4gKyAgICAtIEFDUEkgNi4yIFNw ZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gPiArKiovDQo+ID4gKw0K PiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gPiArI2lu Y2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiA+ICsNCj4gPiArLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBBQ1BJIFNTRFQgdGFibGUuDQo+ID4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVk IHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTU0RUIHRhYmxlIGFuZA0KPiA+ICsgIHRyYWNlcyB0 aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gKyAgRm9yIHRoZSBTU0RUIHRhYmxlIG9ubHkgdGhl IEFDUEkgaGVhZGVyIGZpZWxkcyBhcmUNCj4gPiArICBwYXJzZWQgYW5kIHRyYWNlZC4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRo ZSBBQ1BJIGZpZWxkcy4NCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBwYXJhbSBb aW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiAr Ki8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArUGFyc2VBY3BpU3NkdCAoDQo+ID4gKyAg SU4gQk9PTEVBTiBUcmFjZSwNCj4gPiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiArICBJTiBVSU5U MzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9u DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgaWYgKCFUcmFjZSkgew0KPiA+ICsgICAgcmV0dXJu Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgRHVtcEFjcGlIZWFkZXIgKFB0cik7DQo+ID4gK30N Cj4gPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyLmMNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlZDY1ZDJlNzJjZDIxM2FkNzY5NWZlZmQNCj4gNGE1YTBj MDZmOTZmZjJjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyLmMN Cj4gPiBAQCAtMCwwICsxLDE1MyBAQA0KPiA+ICsvKioNCj4gPiArICBYU0RUIHRhYmxlIHBhcnNl cg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ID4g KyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFT SVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ID4gKyAgQHBhciBS ZWZlcmVuY2Uocyk6DQo+ID4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEg QSwgU2VwdGVtYmVyIDIwMTcNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0 cnlTdGFuZGFyZC9BY3BpLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4g PiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPiArI2luY2x1ZGUgIkFjcGlQYXJz ZXIuaCINCj4gPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiA+ICsNCj4gPiArLy8g TG9jYWwgdmFyaWFibGVzDQo+ID4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZP IEFjcGlIZHJJbmZvOw0KPiA+ICsNCj4gPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIEFDUEkgWFNEVCB0YWJsZS4NCj4gPiArKi8NCj4gPiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIFhzZHRQYXJzZXJbXSA9IHsNCj4gPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFj cGlIZHJJbmZvKQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArQ09OU1QgQUNQSV9ERVNDUklQVElPTl9I RUFERVJfSU5GTyogQ09OU1QNCj4gPiArRUZJQVBJDQo+ID4gK0dldEFjcGlYc2R0SGVhZGVySW5m byAoDQo+ID4gKyAgVk9JRA0KPiA+ICspDQo+ID4gK3sNCj4gPiArICByZXR1cm4gJkFjcGlIZHJJ bmZvOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFD UEkgWFNEVCB0YWJsZQ0KPiA+ICsgIGFuZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUgQUNQSSB0YWJs ZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxp ZGF0aW9uIG9mIHRoZSBYU0RUIHRhYmxlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBUcmFj ZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2Yg dGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJl dmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQ SQ0KPiA+ICtQYXJzZUFjcGlYc2R0ICgNCj4gPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ICsg IElOIFVJTlQ4KiAgUHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBVSU5UMzIgICAgICAgIE9mZnNldDsNCj4gPiArICBVSU5UMzIgICAgICAgIFRhYmxlT2Zmc2V0 Ow0KPiA+ICsgIFVJTlQ2NCogICAgICAgVGFibGVQb2ludGVyOw0KPiA+ICsgIFVJTlROICAgICAg ICAgRW50cnlJbmRleDsNCj4gPiArICBDSEFSMTYgICAgICAgIEJ1ZmZlclszMl07DQo+ID4gKw0K PiA+ICsgIC8vIFBhcnNlIHRoZSBBQ1BJIGhlYWRlciB0byBnZXQgdGhlIGxlbmd0aA0KPiA+ICsg IFBhcnNlQWNwaSAoDQo+ID4gKyAgICBGQUxTRSwNCj4gPiArICAgIDAsDQo+ID4gKyAgICAiWFNE VCIsDQo+ID4gKyAgICBQdHIsDQo+ID4gKyAgICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5H VEgsDQo+ID4gKyAgICBQQVJTRVJfUEFSQU1TIChYc2R0UGFyc2VyKQ0KPiA+ICsgICAgKTsNCj4g PiArDQo+ID4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPiArICAgICAgICAgICAgIFRyYWNl LA0KPiA+ICsgICAgICAgICAgICAgMCwNCj4gPiArICAgICAgICAgICAgICJYU0RUIiwNCj4gPiAr ICAgICAgICAgICAgIFB0ciwNCj4gPiArICAgICAgICAgICAgICpBY3BpSGRySW5mby5MZW5ndGgs DQo+ID4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChYc2R0UGFyc2VyKQ0KPiA+ICsgICAg ICAgICAgICAgKTsNCj4gPiArDQo+ID4gKyAgVGFibGVPZmZzZXQgPSBPZmZzZXQ7DQo+ID4gKw0K PiA+ICsgIGlmIChUcmFjZSkgew0KPiA+ICsgICAgRW50cnlJbmRleCA9IDA7DQo+ID4gKyAgICBU YWJsZVBvaW50ZXIgPSAoVUlOVDY0KikoUHRyICsgVGFibGVPZmZzZXQpOw0KPiA+ICsgICAgd2hp bGUgKE9mZnNldCA8ICgqQWNwaUhkckluZm8uTGVuZ3RoKSkgew0KPiA+ICsgICAgICBDT05TVCBV SU5UMzIqIFNpZ25hdHVyZTsNCj4gPiArICAgICAgQ09OU1QgVUlOVDMyKiBMZW5ndGg7DQo+ID4g KyAgICAgIENPTlNUIFVJTlQ4KiAgUmV2aXNpb247DQo+ID4gKw0KPiA+ICsgICAgICBpZiAoKFVJ TlQ2NCopKFVJTlROKSgqVGFibGVQb2ludGVyKSAhPSBOVUxMKSB7DQo+ID4gKyAgICAgICAgVUlO VDgqICAgICAgUHRyOw0KPiA+ICsNCj4gPiArICAgICAgICBQYXJzZUFjcGlIZWFkZXIgKA0KPiA+ ICsgICAgICAgICAgKFVJTlQ4KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpLA0KPiA+ICsgICAgICAg ICAgJlNpZ25hdHVyZSwNCj4gPiArICAgICAgICAgICZMZW5ndGgsDQo+ID4gKyAgICAgICAgICAm UmV2aXNpb24NCj4gPiArICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgICAgICAgIFB0ciA9IChV SU5UOCopU2lnbmF0dXJlOw0KPiA+ICsNCj4gPiArICAgICAgICBVbmljb2RlU1ByaW50ICgNCj4g PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4g PiArICAgICAgICAgIEwiRW50cnlbJWRdIC0gJWMlYyVjJWMiLA0KPiA+ICsgICAgICAgICAgRW50 cnlJbmRleCsrLA0KPiA+ICsgICAgICAgICAgUHRyWzBdLA0KPiA+ICsgICAgICAgICAgUHRyWzFd LA0KPiA+ICsgICAgICAgICAgUHRyWzJdLA0KPiA+ICsgICAgICAgICAgUHRyWzNdDQo+ID4gKyAg ICAgICAgICApOw0KPiA+ICsgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIFVuaWNvZGVTUHJp bnQgKA0KPiA+ICsgICAgICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICAgICAgc2l6ZW9mIChCdWZm ZXIpLA0KPiA+ICsgICAgICAgICAgTCJFbnRyeVslZF0iLA0KPiA+ICsgICAgICAgICAgRW50cnlJ bmRleCsrDQo+ID4gKyAgICAgICAgICApOw0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICBQcmludEZpZWxkTmFtZSAoMiwgQnVmZmVyKTsNCj4gPiArICAgICAgUHJpbnQgKEwiMHglbHhc biIsICpUYWJsZVBvaW50ZXIpOw0KPiA+ICsNCj4gPiArICAgICAgLy8gVmFsaWRhdGUgdGhlIHRh YmxlIHBvaW50ZXJzIGFyZSBub3QgTlVMTA0KPiA+ICsgICAgICBpZiAoKFVJTlQ2NCopKFVJTlRO KSgqVGFibGVQb2ludGVyKSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gPiArICAgICAgICBQcmludCAoDQo+ID4gKyAgICAgICAgICBMIkVSUk9SOiBJ bnZhbGlkIHRhYmxlIGVudHJ5IGF0IDB4JWx4LCB0YWJsZSBhZGRyZXNzIGlzIDB4JWx4XG4iLA0K PiA+ICsgICAgICAgICAgVGFibGVQb2ludGVyLA0KPiA+ICsgICAgICAgICAgKlRhYmxlUG9pbnRl cg0KPiA+ICsgICAgICAgICAgKTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBPZmZzZXQgKz0g c2l6ZW9mIChVSU5UNjQpOw0KPiA+ICsgICAgICBUYWJsZVBvaW50ZXIrKzsNCj4gPiArICAgIH0g Ly8gd2hpbGUNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIFByb2Nlc3MgdGhlIHRhYmxlcw0K PiA+ICsgIE9mZnNldCA9IFRhYmxlT2Zmc2V0Ow0KPiA+ICsgIFRhYmxlUG9pbnRlciA9IChVSU5U NjQqKShQdHIgKyBUYWJsZU9mZnNldCk7DQo+ID4gKyAgd2hpbGUgKE9mZnNldCA8ICgqQWNwaUhk ckluZm8uTGVuZ3RoKSkgew0KPiA+ICsgICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRhYmxlUG9p bnRlcikgIT0gTlVMTCkgew0KPiA+ICsgICAgICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShV SU5UTikoKlRhYmxlUG9pbnRlcikpOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgT2Zmc2V0ICs9IHNp emVvZiAoVUlOVDY0KTsNCj4gPiArICAgIFRhYmxlUG9pbnRlcisrOw0KPiA+ICsgIH0gLy8gd2hp bGUNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmQNCj4gTGliLmMNCj4g Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmQNCj4gTGliLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZTI4Njkx YmUyNmJjMTRlMjZjNGMyOA0KPiA0ZTQwNjcwMDY2OWM3N2NmDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuYw0KPiA+IEBAIC0wLDAgKzEsMTY3IEBA DQo+ID4gKy8qKg0KPiA+ICsgIE1haW4gZmlsZSBmb3IgJ2FjcGl2aWV3JyBTaGVsbCBjb21tYW5k IGZ1bmN0aW9uLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4g TGljZW5zZQ0KPiA+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPiArICBodHRw Oi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gKw0KPiA+ICsg IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gKyoq Lw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPEd1aWQvU2hlbGxMaWJIaWlHdWlkLmg+DQo+ID4gKyNp bmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkv SGlpTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxsQ29tbWFuZExpYi5oPg0KPiA+ ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1Vl ZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ICsj aW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiA+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgi DQo+ID4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiA+ICsjaW5jbHVkZSAiVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliLmgiDQo+ID4gKw0KPiA+ICtDT05TVCBDSEFSMTYgZ1NoZWxsQWNwaVZp ZXdGaWxlTmFtZVtdID0gTCJTaGVsbENvbW1hbmQiOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg QSBsaXN0IG9mIGF2YWlsYWJsZSB0YWJsZSBwYXJzZXJzLg0KPiA+ICsqLw0KPiA+ICtTVEFUSUMN Cj4gPiArQ09OU1QNCj4gPiArQUNQSV9UQUJMRV9QQVJTRVIgUGFyc2VyTGlzdFtdID0gew0KPiA+ ICsgIHtFRklfQUNQSV82XzJfQk9PVF9HUkFQSElDU19SRVNPVVJDRV9UQUJMRV9TSUdOQVRVUkUs DQo+IFBhcnNlQWNwaUJncnR9LA0KPiA+ICsgIHtFRklfQUNQSV82XzJfREVCVUdfUE9SVF8yX1RB QkxFX1NJR05BVFVSRSwgUGFyc2VBY3BpRGJnMn0sDQo+ID4gKw0KPiB7RUZJX0FDUElfNl8yX0RJ RkZFUkVOVElBVEVEX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ID4gKyAg IFBhcnNlQWNwaURzZHR9LA0KPiA+ICsgIHtFRklfQUNQSV82XzJfRklYRURfQUNQSV9ERVNDUklQ VElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+IFBhcnNlQWNwaUZhZHR9LA0KPiA+ICsgIHtFRklfQUNQ SV82XzJfR0VORVJJQ19USU1FUl9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+IFBhcnNl QWNwaUd0ZHR9LA0KPiA+ICsgIHtFRklfQUNQSV82XzJfSU9fUkVNQVBQSU5HX1RBQkxFX1NJR05B VFVSRSwgUGFyc2VBY3BpSW9ydH0sDQo+ID4gKyAge0VGSV9BQ1BJXzZfMl9NVUxUSVBMRV9BUElD X0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gUGFyc2VBY3BpTWFkdH0sDQo+ID4gKw0K PiB7RUZJX0FDUElfNl8yX1BDSV9FWFBSRVNTX01FTU9SWV9NQVBQRURfQ09ORklHVVJBVElPTl9T UEFDRV9CQQ0KPiBTRV9BRERSRVNTX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPiAr ICAgUGFyc2VBY3BpTWNmZ30sDQo+ID4gKyAge1JTRFBfVEFCTEVfSU5GTywgUGFyc2VBY3BpUnNk cH0sDQo+ID4gKyAge0VGSV9BQ1BJXzZfMl9TWVNURU1fTE9DQUxJVFlfSU5GT1JNQVRJT05fVEFC TEVfU0lHTkFUVVJFLA0KPiBQYXJzZUFjcGlTbGl0fSwNCj4gPiArICB7RUZJX0FDUElfNl8yX1NF UklBTF9QT1JUX0NPTlNPTEVfUkVESVJFQ1RJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiBQYXJzZUFj cGlTcGNyfSwNCj4gPiArICB7RUZJX0FDUElfNl8yX1NZU1RFTV9SRVNPVVJDRV9BRkZJTklUWV9U QUJMRV9TSUdOQVRVUkUsDQo+IFBhcnNlQWNwaVNyYXR9LA0KPiA+ICsgIHtFRklfQUNQSV82XzJf U0VDT05EQVJZX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+IFBhcnNlQWNw aVNzZHR9LA0KPiA+ICsgIHtFRklfQUNQSV82XzJfRVhURU5ERURfU1lTVEVNX0RFU0NSSVBUSU9O X1RBQkxFX1NJR05BVFVSRSwNCj4gUGFyc2VBY3BpWHNkdH0NCj4gPiArfTsNCj4gPiArDQo+ID4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhbGwgdGhlIGF2YWlsYWJsZSB0YWJsZSBwYXJz ZXJzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFy c2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAg VGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBF RklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+ICsqLw0KPiA+ICtFRklfU1RB VFVTDQo+ID4gK1JlZ2lzdGVyQWxsUGFyc2VycyAoDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg RUZJX1NUQVRVUyBTdGF0dXM7DQo+ID4gKyAgVUlOVE4gQ291bnQgPSBzaXplb2YgKFBhcnNlckxp c3QpIC8gc2l6ZW9mIChQYXJzZXJMaXN0WzBdKTsNCj4gPiArICB3aGlsZSAoQ291bnQtLSAhPSAw KSB7DQo+ID4gKyAgICBTdGF0dXMgPSBSZWdpc3RlclBhcnNlciAoDQo+ID4gKyAgICAgICAgICAg ICAgIFBhcnNlckxpc3RbQ291bnRdLlNpZ25hdHVyZSwNCj4gPiArICAgICAgICAgICAgICAgUGFy c2VyTGlzdFtDb3VudF0uUGFyc2VyDQo+ID4gKyAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4g KyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIFJldHVybiB0aGUgZmlsZSBuYW1lIG9mIHRoZSBoZWxwIHRleHQgZmls ZSBpZiBub3QgdXNpbmcgSElJLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSBzdHJpbmcgcG9p bnRlciB0byB0aGUgZmlsZSBuYW1lLg0KPiA+ICsqLw0KPiA+ICtDT05TVCBDSEFSMTYqDQo+ID4g K0VGSUFQSQ0KPiA+ICtTaGVsbENvbW1hbmRHZXRNYW5GaWxlTmFtZUFjcGlWaWV3ICgNCj4gPiAr ICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIGdTaGVsbEFjcGlWaWV3Rmls ZU5hbWU7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIENvbnN0cnVjdG9yIGZvciB0 aGUgU2hlbGwgQWNwaVZpZXcgQ29tbWFuZCBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiArICBJbnN0YWxs IHRoZSBoYW5kbGVycyBmb3IgYWNwaXZpZXcgVUVGSSBTaGVsbCBjb21tYW5kLg0KPiA+ICsNCj4g PiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgICAgICAgICBUaGUgaW1hZ2UgaGFuZGxlIG9mIHRo ZSBwcm9jZXNzLg0KPiA+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkg U3lzdGVtIFRhYmxlIHBvaW50ZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBTaGVsbCBjb21tYW5kIGhhbmRsZXJzIHdlcmUgaW5zdGFsbGVkDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEBy ZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIEhpaSBwYWNrYWdlIGZhaWxlZCB0byBpbnN0YWxs Lg0KPiA+ICsqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWJDb25zdHJ1Y3RvciAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxl DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ID4gKyAgZ1No ZWxsQWNwaVZpZXdIaWlIYW5kbGUgPSBOVUxMOw0KPiA+ICsNCj4gPiArICAvLyBDaGVjayBTaGVs bCBQcm9maWxlIERlYnVnMSBiaXQgb2YgdGhlIHByb2ZpbGVzIG1hc2sNCj4gPiArICBpZiAoKEZp eGVkUGNkR2V0OCAoUGNkU2hlbGxQcm9maWxlTWFzaykgJiBCSVQxKSA9PSAwKSB7DQo+ID4gKyAg ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBS ZWdpc3RlckFsbFBhcnNlcnMgKCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ICsgICAgUHJpbnQgKEwiYWNwaXZpZXc6IEVycm9yIGZhaWxlZCB0byByZWdpc3RlciBwYXJz ZXIuXG4iKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IEhpaUFkZFBhY2thZ2VzICgNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmdTaGVsbEFjcGlWaWV3SGlpR3VpZCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0ltYWdlSGFuZGxlLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJTdHJpbmdzLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxl ID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ICsgIH0N Cj4gPiArICAvLyBJbnN0YWxsIG91ciBTaGVsbCBjb21tYW5kIGhhbmRsZXINCj4gPiArICBTaGVs bENvbW1hbmRSZWdpc3RlckNvbW1hbmROYW1lICgNCj4gPiArICAgIEwiYWNwaXZpZXciLA0KPiA+ ICsgICAgU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcsDQo+ID4gKyAgICBTaGVsbENvbW1hbmRHZXRN YW5GaWxlTmFtZUFjcGlWaWV3LA0KPiA+ICsgICAgMCwNCj4gPiArICAgIEwiYWNwaXZpZXciLA0K PiA+ICsgICAgVFJVRSwNCj4gPiArICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiA+ICsg ICAgU1RSSU5HX1RPS0VOIChTVFJfR0VUX0hFTFBfQUNQSVZJRVcpDQo+ID4gKyAgICApOw0KPiA+ ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIERlc3RydWN0b3IgZm9yIHRoZSBsaWJyYXJ5LiBmcmVlIGFueSByZXNvdXJjZXMuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5k bGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4gKyAgQHBhcmFtIFN5c3RlbVRhYmxlICAgICAgICAgICAg VGhlIEVGSSBTeXN0ZW0gVGFibGUgcG9pbnRlci4NCj4gPiArKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtFRklBUEkNCj4gPiArVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliRGVzdHJ1Y3RvciAo DQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgSU4gRUZJ X1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgaWYg KGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlICE9IE5VTEwpIHsNCj4gPiArICAgIEhpaVJlbW92ZVBh Y2thZ2VzIChnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSk7DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVy biBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmQN Cj4gTGliLmgNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmQNCj4gTGliLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjU5YzhlMjE1NDRkNjgyOWFjODcyOTU4Zg0KPiA2Yjg0MzU4ZTFmOTFiMDJmDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuaA0KPiA+IEBAIC0w LDAgKzEsMzIgQEANCj4gPiArLyoqDQo+ID4gKyAgSGVhZGVyIGZpbGUgZm9yICdhY3Bpdmlldycg U2hlbGwgY29tbWFuZCBmdW5jdGlvbnMuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAx NiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ID4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBh dA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAN Cj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIFVFRklfU0hFTExfQUNQSVZJRVdf Q09NTUFORF9MSUJfSF8NCj4gPiArI2RlZmluZSBVRUZJX1NIRUxMX0FDUElWSUVXX0NPTU1BTkRf TElCX0hfDQo+ID4gKw0KPiA+ICtleHRlcm4gRUZJX0hJSV9IQU5ETEUgZ1NoZWxsQWNwaVZpZXdI aWlIYW5kbGU7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiBmb3IgJ2FjcGl2aWV3 JyBjb21tYW5kLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICBIYW5kbGUg dG8gdGhlIEltYWdlIChOVUxMIGlmIEludGVybmFsKS4NCj4gPiArICBAcGFyYW1baW5dIFN5c3Rl bVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUgKE5VTEwgaWYgSW50ZXJuYWwpLg0K PiA+ICsqLw0KPiA+ICtTSEVMTF9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NoZWxsQ29tbWFu ZFJ1bkFjcGlWaWV3ICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4gPiArICApOw0KPiA+ ICsNCj4gPiArI2VuZGlmIC8vIFVFRklfU0hFTExfQUNQSVZJRVdfQ09NTUFORF9MSUJfSF8NCj4g PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kDQo+IExpYi5pbmYNCj4gYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmQNCj4gTGliLmluZg0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJkYjdlMzAxYjRhNTNlNTM4 ODZlOWExDQo+IGYwNWIzZmIyOTIxYTkwZDkNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+ IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kDQo+IExpYi5pbmYNCj4gPiBAQCAtMCwwICsxLDc0IEBADQo+ID4gKyMj ICBAZmlsZQ0KPiA+ICsjIFByb3ZpZGVzIFNoZWxsICdhY3BpdmlldycgY29tbWFuZCBmdW5jdGlv bnMNCj4gPiArIw0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIw0KPiA+ICsjICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyMgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QN Cj4gTGljZW5zZQ0KPiA+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPiArIyAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsjICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiBCQVNJUywNCj4gPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArIw0K PiA+ICsjDQo+ID4gKyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiArICBJTkZfVkVSU0lP TiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDE5DQo+ID4gKyAgQkFTRV9OQU1FICAgICAg ICAgICAgICAgICAgICAgID0gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4gKyAgRklM RV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gRkI1QjMwNUUtODRGNS00NjFGLTk0MEQtODJE MzQ1NzU3QUZBDQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9B UFBMSUNBVElPTg0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0K PiA+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IE5VTEx8VUVGSV9BUFBMSUNB VElPTiBVRUZJX0RSSVZFUg0KPiA+ICsgIENPTlNUUlVDVE9SICAgICAgICAgICAgICAgICAgICA9 IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkNvbnN0cnVjdG9yDQo+ID4gKyAgREVTVFJVQ1RP UiAgICAgICAgICAgICAgICAgICAgID0gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliRGVzdHJ1 Y3Rvcg0KPiA+ICsNCj4gPiArW1NvdXJjZXMuY29tbW9uXQ0KPiA+ICsgIFVlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi51bmkNCj4gPiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuYw0K PiA+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oDQo+ID4gKyAgQWNwaVBhcnNlci5j DQo+ID4gKyAgQWNwaVRhYmxlUGFyc2VyLmMNCj4gPiArICBBY3BpVmlldy5jDQo+ID4gKyAgUGFy c2Vycy9CZ3J0L0JncnRQYXJzZXIuYw0KPiA+ICsgIFBhcnNlcnMvRGJnMi9EYmcyUGFyc2VyLmMN Cj4gPiArICBQYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5jDQo+ID4gKyAgUGFyc2Vycy9GYWR0L0Zh ZHRQYXJzZXIuYw0KPiA+ICsgIFBhcnNlcnMvR3RkdC9HdGR0UGFyc2VyLmMNCj4gPiArICBQYXJz ZXJzL0lvcnQvSW9ydFBhcnNlci5jDQo+ID4gKyAgUGFyc2Vycy9NYWR0L01hZHRQYXJzZXIuYw0K PiA+ICsgIFBhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMNCj4gPiArICBQYXJzZXJzL1JzZHAvUnNk cFBhcnNlci5jDQo+ID4gKyAgUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIuYw0KPiA+ICsgIFBhcnNl cnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4gPiArICBQYXJzZXJzL1NyYXQvU3JhdFBhcnNlci5jDQo+ ID4gKyAgUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXIuYw0KPiA+ICsgIFBhcnNlcnMvWHNkdC9Yc2R0 UGFyc2VyLmMNCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRl Yw0KPiA+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gKyAgTWVtb3J5 QWxsb2NhdGlvbkxpYg0KPiA+ICsgIEJhc2VMaWINCj4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4g KyAgRGVidWdMaWINCj4gPiArICBTaGVsbENvbW1hbmRMaWINCj4gPiArICBTaGVsbExpYg0KPiA+ ICsgIFVlZmlMaWINCj4gPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gPiArICBV ZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiArICBQY2RMaWINCj4gPiArICBIaWlMaWINCj4g PiArICBQcmludExpYg0KPiA+ICsgIEZpbGVIYW5kbGVMaWINCj4gPiArDQo+ID4gKw0KPiA+ICtb Rml4ZWRQY2RdDQo+ID4gKyAgZ0VmaVNoZWxsUGtnVG9rZW5TcGFjZUd1aWQuUGNkU2hlbGxQcm9m aWxlTWFzayAjIyBDT05TVU1FUw0KPiA+ICsNCj4gPiArW0d1aWRzXQ0KPiA+ICsgIGdTaGVsbEFj cGlWaWV3SGlpR3VpZCAgICAgICAgICAgIyMgQ09OU1VNRVMgIyMgSElJDQo+ID4gKyAgZ0VmaUFj cGlUYWJsZUd1aWQgICAgICAgICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMgIyMgU3lzdGVt VGFibGUNCj4gPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kDQo+IExpYi51bmkNCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmQNCj4gTGliLnVuaQ0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5k ZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM0ZDY2ZTFm ZjUwNzA1NGQ0YWE0MmJkNA0KPiA3YmZhZTg4MjRjMjE4ZTYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kDQo+IExpYi51bmkNCj4gPiBAQCAtMCwwICsxLDEyNyBA QA0KPiA+ICsvLyAvKioNCj4gPiArLy8NCj4gPiArLy8gQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx NywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsvLyBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKy8vIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZSBCU0QNCj4gTGljZW5zZQ0KPiA+ICsvLyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4g PiArLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ ICsvLw0KPiA+ICsvLyBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArLy8gV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gPiArLy8NCj4gPiArLy8gTW9kdWxlIE5hbWU6DQo+ID4gKy8vDQo+ID4gKy8vIFVl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkNCj4gPiArLy8NCj4gPiArLy8gQWJzdHJhY3Q6 DQo+ID4gKy8vDQo+ID4gKy8vIFN0cmluZyBkZWZpbml0aW9ucyBmb3IgVUVGSSBTaGVsbCBhY3Bp dmlldyBjb21tYW5kDQo+ID4gKy8vDQo+ID4gKy8vDQo+ID4gKy8vICovDQo+ID4gKw0KPiA+ICsv PSMNCj4gPiArDQo+ID4gKyNsYW5nZGVmICAgZW4tVVMgImVuZ2xpc2giDQo+ID4gKw0KPiA+ICsj c3RyaW5nIFNUUl9HRU5fUFJPQkxFTSAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46 IFVua25vd24gZmxhZw0KPiAtICclSCVzJU4nXHJcbiINCj4gPiArI3N0cmluZyBTVFJfR0VOX05P X1ZBTFVFICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBNaXNzaW5nDQo+IGFyZ3Vt ZW50IGZvciBmbGFnIC0gJyVIJXMlTidcclxuIg0KPiA+ICsjc3RyaW5nIFNUUl9HRU5fVE9PX01B TlkgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IFRvbyBtYW55DQo+IGFyZ3VtZW50 cy5cclxuIg0KPiA+ICsjc3RyaW5nIFNUUl9HRU5fTUlTU0lOR19PUFRJT04gICAgI2xhbmd1YWdl IGVuLVVTICIlSCVzJU46IE1pc3NpbmcNCj4gb3B0aW9uICclSCVzJU4nIHJlcXVpcmVkIGJ5IGZs YWcgLSAnJUglcyVOJ1xyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX0dFTl9SRUFET05MWV9NRURJQSAg ICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjogVW5hYmxlDQo+IHRvIHdyaXRlIHRvIHRoZSBjdXJy ZW50IGRpcmVjdG9yeSwgY2hlY2sgaWYgbWVkaWEgaXMgd3JpdGFibGUuXHJcbiINCj4gPiArDQo+ ID4gKyNzdHJpbmcgU1RSX0dFVF9IRUxQX0FDUElWSUVXICAgI2xhbmd1YWdlIGVuLVVTICIiDQo+ ID4gKyIuVEggYWNwaXZpZXcgMCAiRGlzcGxheSBBQ1BJIGluZm9ybWF0aW9uLiJcclxuIg0KPiA+ ICsiLlNIIE5BTUVcclxuIg0KPiA+ICsiRGlzcGxheSBBQ1BJIFRhYmxlIGluZm9ybWF0aW9uLlxy XG4iDQo+ID4gKyIuU0ggU1lOT1BTSVNcclxuIg0KPiA+ICsiIFxyXG4iDQo+ID4gKyJBQ1BJVklF VyBbWy0/XSB8IFtbLWxdIHwgWy1zIEFjcGlUYWJsZSBbLWRdXV0gWy1jXSBbLXZdIFstaCBIaWdo bGlnaHRdXVxyXG4iDQo+ID4gKyIgXHJcbiINCj4gPiArIi5TSCBPUFRJT05TXHJcbiINCj4gPiAr IiBcclxuIg0KPiA+ICsiICAtbCAtIERpc3BsYXkgbGlzdCBvZiBpbnN0YWxsZWQgQUNQSSBUYWJs ZXMuXHJcbiINCj4gPiArIiAgLXMgLSBEaXNwbGF5IG9ubHkgdGhlIHNwZWNpZmllZCBBY3BpVGFi bGUgdHlwZS5cclxuIg0KPiA+ICsiICAgICAgICAgQWNwaVRhYmxlICAgIDogVGhlIHJlcXVpcmVk IEFDUEkgVGFibGUgdHlwZS5cclxuIg0KPiA+ICsiICAtZCAtIEdlbmVyYXRlIGEgYmluYXJ5IGZp bGUgZHVtcCBvZiB0aGUgc3BlY2lmaWVkIEFjcGlUYWJsZS5cclxuIg0KPiA+ICsiICAtYyAtIENv bnNpc3RlbmN5IGNoZWNraW5nIChlbmFibGVkIGJ5IGRlZmF1bHQpLlxyXG4iDQo+ID4gKyIgIC12 IC0gRGlzcGxheSB2ZXJib3NlIGRhdGEgKGVuYWJsZWQgYnkgZGVmYXVsdCkuXHJcbiINCj4gPiAr IiAgLWggLSBFbmFibGUvRGlzYWJsZSBDb2xvdXIgSGlnaGxpZ2h0aW5nLlxyXG4iDQo+ID4gKyIg ICAgICAgICBIaWdobGlnaHQgICAgOiBUUlVFL09OIGVuYWJsZXMgaGlnaGxpZ2h0aW5nO1xyXG4i DQo+ID4gKyIgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRS9PRkYgKGRlZmF1bHQpIGRpc2Fi bGVzIGhpZ2hsaWdodGluZy5cclxuIg0KPiA+ICsiICAtPyAtIFNob3cgaGVscC5cclxuIg0KPiA+ ICsiIFxyXG4iDQo+ID4gKyIuU0ggREVTQ1JJUFRJT05cclxuIg0KPiA+ICsiIFxyXG4iDQo+ID4g KyIgIFRoaXMgcHJvZ3JhbSBpcyBwcm92aWRlZCB0byBhbGxvdyBleGFtaW5hdGlvbiBvZiBBQ1BJ IHRhYmxlIHZhbHVlcyBmcm9tDQo+IHRoZVxyXG4iDQo+ID4gKyIgIFVFRkkgU2hlbGwuICBUaGlz IGNhbiBoZWxwIHdpdGggaW52ZXN0aWdhdGlvbnMsIGVzcGVjaWFsbHkgYXQgdGhhdCBzdGFnZQ0K PiB3aGVyZVxyXG4iDQo+ID4gKyIgIHRoZSB0YWJsZXMgYXJlIG5vdCBlbmFibGluZyBhbiBPUyB0 byBib290LlxyXG4iDQo+ID4gKyIgIFRoZSBwcm9ncmFtIGlzIG5vdCBleGhhdXN0aXZlLCBhbmQg b25seSBlbmNhcHN1bGF0ZXMgZGV0YWlsZWQga25vd2xlZGdlDQo+IG9mIGFcclxuIg0KPiA+ICsi ICBsaW1pdGVkIG51bWJlciBvZiB0YWJsZSB0eXBlcy5cclxuIg0KPiA+ICsiIFxyXG4iDQo+ID4g KyIgIERlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGRpc3BsYXkgdGhlIGNvbnRlbnQgb2YgYWxsIHRh YmxlcyBpbnN0YWxsZWQuXHJcbiINCj4gPiArIiAgJ0tub3duJyB0YWJsZSB0eXBlcyAobGlzdGVk IGluIE5PVEVTIGJlbG93KSB3aWxsIGJlIHBhcnNlZCBhbmQNCj4gZGlzcGxheWVkXHJcbiINCj4g PiArIiAgd2l0aCBkZXNjcmlwdGlvbnMgYW5kIGZpZWxkIHZhbHVlcy4gIFdoZXJlIGFwcHJvcHJp YXRlIGEgZGVncmVlIG9mDQo+IGNvbnNpc3RlbmN5XHJcbiINCj4gPiArIiAgY2hlY2tpbmcgaXMg ZG9uZSBhbmQgZXJyb3JzIG1heSBiZSByZXBvcnRlZCBpbiB0aGUgb3V0cHV0LlxyXG4iDQo+ID4g KyIgIE90aGVyIHRhYmxlIHR5cGVzIHdpbGwgYmUgZGlzcGxheWVkIGFzIGFuIGFycmF5IG9mIEhl eGFkZWNpbWFsIGJ5dGVzLlxyXG4iDQo+ID4gKyIgXHJcbiINCj4gPiArIiAgVG8gZmFjaWxpdGF0 ZSBkZWJ1Z2dpbmcsIHRoZSAtcyBhbmQgLWQgb3B0aW9ucyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0 ZQ0KPiBhXHJcbiINCj4gPiArIiAgYmluYXJ5IGZpbGUgaW1hZ2Ugb2YgYSB0YWJsZSB0aGF0IGNh biBiZSBjb3BpZWQgZWxzZXdoZXJlIGZvcg0KPiBpbnZlc3RpZ2F0aW9uXHJcbiINCj4gPiArIiAg dXNpbmcgdG9vbHMgc3VjaCBhcyB0aG9zZSBwcm92aWRlZCBieSBhY3BpY2Eub3JnLiAgVGhpcyBp cyBlc3BlY2lhbGx5DQo+IHJlbGV2YW50XHJcbiINCj4gPiArIiAgZm9yIEFNTCB0eXBlIHRhYmxl cyBsaWtlIERTRFQgYW5kIFNTRFQuXHJcbiINCj4gPiArIiBcclxuIg0KPiA+ICsiTk9URVM6XHJc biINCj4gPiArIiAgMS4gVGhlIEFjcGlUYWJsZSBwYXJhbWV0ZXIgY2FuIG1hdGNoIGFueSBpbnN0 YWxsZWQgdGFibGUgdHlwZS5cclxuIg0KPiA+ICsiICAgICBUYWJsZXMgd2l0aG91dCBzcGVjaWZp YyBoYW5kbGluZyB3aWxsIGJlIGRpc3BsYXllZCBhcyBhIHJhdyBoZXggZHVtcA0KPiAob3Jcclxu Ig0KPiA+ICsiICAgICBkdW1wZWQgdG8gYSBmaWxlIGlmIC1kIGlzIHVzZWQpLlxyXG4iDQo+ID4g KyIgIDIuIEZvcm1hdHRlZCBkaXNwbGF5IGFuZCBjaGVja2luZyBpcyBwcm92aWRlZCBmb3IgdGhl c2Ugc2lnbmF0dXJlDQo+IHR5cGVzOlxyXG4iDQo+ID4gKyIgICAgICAgQVBJQyAgLSBNdWx0aXBs ZSBBUElDIERlc2NyaXB0aW9uIFRhYmxlIChNQURUKVxyXG4iDQo+ID4gKyIgICAgICAgQkdSVCAg LSBCb290IEdyYXBoaWNzIFJlc291cmNlIFRhYmxlXHJcbiINCj4gPiArIiAgICAgICBEQkcyICAt IERlYnVnIFBvcnQgVGFibGUgMlxyXG4iDQo+ID4gKyIgICAgICAgRkFDUCAgLSBGaXhlZCBBQ1BJ IERlc2NyaXB0aW9uIFRhYmxlIChGQURUKVxyXG4iDQo+ID4gKyIgICAgICAgR1REVCAgLSBHZW5l cmljIFRpbWVyIERlc2NyaXB0aW9uIFRhYmxlXHJcbiINCj4gPiArIiAgICAgICBJT1JUICAtIElP IFJlbWFwcGluZyBUYWJsZVxyXG4iDQo+ID4gKyIgICAgICAgTUNGRyAgLSBNZW1vcnkgTWFwcGVk IENvbmZpZyBTcGFjZSBCYXNlIEFkZHJlc3MgRGVzY3JpcHRpb24NCj4gVGFibGVcclxuIg0KPiA+ ICsiICAgICAgIFJTRFAgIC0gUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlclxyXG4iDQo+ ID4gKyIgICAgICAgU0xJVCAgLSBTeXN0ZW0gTG9jYWxpdHkgSW5mb3JtYXRpb24gVGFibGVcclxu Ig0KPiA+ICsiICAgICAgIFNQQ1IgIC0gU2VyaWFsIFBvcnQgQ29uc29sZSBSZWRpcmVjdGlvbiBU YWJsZVxyXG4iDQo+ID4gKyIgICAgICAgU1JBVCAgLSBTeXN0ZW0gUmVzb3VyY2UgQWZmaW5pdHkg VGFibGVcclxuIg0KPiA+ICsiICAgICAgIFhTRFQgIC0gRXh0ZW5kZWQgU3lzdGVtIERlc2NyaXB0 aW9uIFRhYmxlXHJcbiINCj4gPiArIiBcclxuIg0KPiA+ICsiLlNIIFNUQU5EQVJEU1xyXG4iDQo+ ID4gKyIgXHJcbiINCj4gPiArIiAgVGFibGUgZGV0YWlscyBjb3JyZXNwb25kIHRvIHRob3NlIGlu ICdBZHZhbmNlZCBDb25maWd1cmF0aW9uIGFuZA0KPiBQb3dlclxyXG4iDQo+ID4gKyIgIEludGVy ZmFjZSBTcGVjaWZpY2F0aW9uJyBWZXJzaW9uIDYuMiBFcnJhdGEgQSwgW1NlcHRlbWJlciAyMDE3 XVxyXG4iDQo+ID4gKyINCj4gKGh0dHA6Ly93d3cudWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxl cy9yZXNvdXJjZXMvQUNQSSUyMDZfMl9BX1NlcHQyOS5wZGYpXA0KPiByXG4iDQo+ID4gKyIgXHJc biINCj4gPiArIiAgTk9URTogVGhlIG5hdHVyZSBvZiB0aGUgQUNQSSBzdGFuZGFyZCBtZWFucyB0 aGF0IGFsbW9zdCBhbGwgdGFibGVzIGluIDYuMQ0KPiB3aWxsXHJcbiINCj4gPiArIiAgICAgICAg YmUgJ2JhY2t3YXJkcyBjb21wYXRpYmxlJyB3aXRoIHByaW9yIHZlcnNpb24gb2YgdGhlIHNwZWNp ZmljYXRpb24gaW5cclxuIg0KPiA+ICsiICAgICAgICB0ZXJtcyBvZiBzdHJ1Y3R1cmUsIHNvIGZv cm1hdHRlZCBvdXRwdXQgc2hvdWxkIGJlIGNvcnJlY3QuICBUaGUNCj4gbWFpblxyXG4iDQo+ID4g KyIgICAgICAgIGV4Y2VwdGlvbiB3aWxsIGJlIHRoYXQgcHJldmlvdXNseSAncmVzZXJ2ZWQnIGZp ZWxkcyB3aWxsIGJlIHJlcG9ydGVkXHJcbiINCj4gPiArIiAgICAgICAgd2l0aCBuZXcgbmFtZXMs IHdoZXJlIHRoZXkgaGF2ZSBiZWVuIGFkZGVkIGluIGxhdGVyIHZlcnNpb25zIG9mDQo+IHRoZVxy XG4iDQo+ID4gKyIgICAgICAgIHNwZWNpZmljYXRpb24uXHJcbiINCj4gPiArIiBcclxuIg0KPiA+ ICsiLlNIIEVYQU1QTEVTXHJcbiINCj4gPiArIiBcclxuIg0KPiA+ICsiIFxyXG4iDQo+ID4gKyJF WEFNUExFUzpcclxuIg0KPiA+ICsiICAqIFRvIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBpbnN0YWxs ZWQgdGFibGUgdHlwZXM6XHJcbiINCj4gPiArIiAgICBmczA6XD4gYWNwaXZpZXcgLWxcclxuIg0K PiA+ICsiIFxyXG4iDQo+ID4gKyIgICogVG8gcGFyc2UgYW5kIGRpc3BsYXkgYSBzcGVjaWZpYyB0 YWJsZSB0eXBlOlxyXG4iDQo+ID4gKyIgICAgZnMwOlw+IGFjcGl2aWV3IC1zIEdURFRcclxuIg0K PiA+ICsiIFxyXG4iDQo+ID4gKyIgICogVG8gc2F2ZSBhIGJpbmFyeSBkdW1wIG9mIHRoZSBjb250 ZW50cyBvZiBhIHRhYmxlIHRvIGEgZmlsZVxyXG4iDQo+ID4gKyIgICAgaW4gdGhlIGN1cnJlbnQg d29ya2luZyBkaXJlY3Rvcnk6XHJcbiINCj4gPiArIiAgICBmczA6XD4gYWNwaXZpZXcgLXMgRFNE VCAtZFxyXG4iDQo+ID4gKyIgXHJcbiINCj4gPiArIiAgKiBUbyBkaXNwbGF5IGNvbnRlbnRzIG9m IGFsbCBBQ1BJIHRhYmxlczpcclxuIg0KPiA+ICsiICAgIGZzMDpcPiBhY3Bpdmlld1xyXG4iDQo+ ID4gKyIgXHJcbiINCj4gPiArIi5TSCBSRVRVUk5WQUxVRVNcclxuIg0KPiA+ICsiIFxyXG4iDQo+ ID4gKyJSRVRVUk4gVkFMVUVTOlxyXG4iDQo+ID4gKyIgIFNIRUxMX1NVQ0NFU1MgICAgICAgICAg ICAgRGF0YSB3YXMgZGlzcGxheWVkIGFzIHJlcXVlc3RlZC5cclxuIg0KPiA+ICsiICBTSEVMTF9J TlZBTElEX1BBUkFNRVRFUiAgIEFDUEkgVGFibGUgcGFyc2luZyBmYWlsZWQuXHJcbiINCj4gPiAr IiBcclxuIg0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVjIGIv U2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gaW5kZXgNCj4gMGM0Zjc0ZmY0MTcyNmM0YTI4ZWQw ODI4NDljMWI4NjRiMWM0ODc1Mi4uYzA5MGFhNGQwOGJlM2FhZDRkOWFlZGI1NA0KPiAyYzAxMDU2 YmNlNDY5NjkgMTAwNjQ0DQo+ID4gLS0tIGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gKysr IGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gQEAgLTMsNiArMyw3IEBADQo+ID4gICAjDQo+ ID4gICAjIChDKSBDb3B5cmlnaHQgMjAxMy0yMDE0IEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVu dCBDb21wYW55LCBMLlAuPEJSPg0KPiA+ICAgIyBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE4LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMgQ29weXJp Z2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ICAgIw0KPiA+ICAgIyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiBhdmFpbGFibGUgdW5kZXINCj4gPiAgICMg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBh bmllcyB0aGlzDQo+IGRpc3RyaWJ1dGlvbi4NCj4gPiBAQCAtNTYsNyArNTcsNyBAQCBbR3VpZHNd DQo+ID4gICAgIGdTaGVsbE5ldHdvcmsySGlpR3VpZCAgICAgICAgICAgPSB7MHgxNzRiMmI1LCAw eGY1MDUsIDB4NGIxMiwgezB4YWEsIDB4NjAsDQo+IDB4NTksIDB4ZGYsIDB4ZjgsIDB4ZDYsIDB4 ZWEsIDB4Mzd9fQ0KPiA+ICAgICBnU2hlbGxUZnRwSGlpR3VpZCAgICAgICAgICAgICAgID0gezB4 NzM4YTkzMTQsIDB4ODJjMSwgMHg0NTkyLCB7MHg4ZiwgMHhmNywgMHhjMSwNCj4gMHhiZCwgMHhm MSwgMHhiMiwgMHgwZSwgMHhkNH19DQo+ID4gICAgIGdTaGVsbEJjZmdIaWlHdWlkICAgICAgICAg ICAgICAgPSB7MHg1ZjVmNjA1ZCwgMHgxNTgzLCAweDRhMmQsIHsweGE2LCAweGIyLCAweGViLA0K PiAweDEyLCAweGRhLCAweGI0LCAweGEyLCAweGI2fX0NCj4gPiAtDQo+ID4gKyAgZ1NoZWxsQWNw aVZpZXdIaWlHdWlkICAgICAgICAgICA9IHsweGRhOGNjZGY0LCAweGVkOGYsIDB4NGZmYywgezB4 YjUsIDB4ZWYsIDB4MmUsDQo+IDB4ZjUsIDB4NWUsIDB4MjQsIDB4OTMsIDB4MmF9fQ0KPiA+ICAg ICAjIEZJTEVfR1VJRCBhcyBkZWZpbmVkIGluIFNoZWxsUGtnL0FwcGxpY2F0aW9uL1NoZWxsL1No ZWxsLmluZg0KPiA+ICAgICBnVWVmaVNoZWxsRmlsZUd1aWQgICAgICAgICAgICAgID0gezB4N2Mw NGE1ODMsIDB4OWUzZSwgMHg0ZjFjLCB7MHhhZCwgMHg2NSwgMHhlMCwNCj4gMHg1MiwgMHg2OCwg MHhkMCwgMHhiNCwgMHhkMX19DQo+ID4NCj4gPiAtLQ0KPiA+ICdHdWlkKENFMTY1NjY5LTNFRjMt NDkzRi1CODVELTYxOTBFRTVCOTc1OSknDQo+ID4NCj4gPg0KPiBTYW1pLA0KPiBUaGFuayB5b3Ug dmVyeSBtdWNoIGZvciB0aGUgYmlnIGZlYXR1cmUgZW5hYmxpbmcuDQo+IFJldmlld2VkLWJ5OiBS dWl5dSBOaSA8cnVpeXUubmlAaW50ZWwuY29tPg0KPiANCj4gTWF5YmUgbWlub3IgYnVncyBleGlz dC4gTGV0J3MgZml4IHRoZW0gYWZ0ZXIgY2hlY2tpbmcgdGhlIGJpZyBwYXRjaCBpbi4NCj4gDQo+ IC0tDQo+IFRoYW5rcywNCj4gUmF5DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fDQo+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnDQo+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRr Mi1kZXZlbA0K