From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 6392481F1A for ; Wed, 16 Nov 2016 13:31:19 -0800 (PST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP; 16 Nov 2016 13:31:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,650,1473145200"; d="scan'208";a="192279558" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga004.fm.intel.com with ESMTP; 16 Nov 2016 13:31:24 -0800 Received: from fmsmsx154.amr.corp.intel.com (10.18.116.70) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.248.2; Wed, 16 Nov 2016 13:31:23 -0800 Received: from fmsmsx103.amr.corp.intel.com ([169.254.2.12]) by FMSMSX154.amr.corp.intel.com ([169.254.6.175]) with mapi id 14.03.0248.002; Wed, 16 Nov 2016 13:31:23 -0800 From: "Carsey, Jaben" To: Leif Lindholm CC: Marcin Wojtas , Ard Biesheuvel , linaro-uefi , Neta Zur Hershkovits , Yehuda Yitschak , Haim Boot , Jan Dabros , Bartosz Szczepanek , edk2-devel-01 , "Ni, Ruiyu" , "Carsey, Jaben" Thread-Topic: [PATCH v6 21/23] Applications/FirmwareUpdate: Add 'fupdate' comand to shell Thread-Index: AQHSQCRxJgZKoOAOZUaEITsc+jwr1aDb0sOggACS0oD//7fq0A== Date: Wed, 16 Nov 2016 21:31:22 +0000 Message-ID: References: <1468110107-18979-1-git-send-email-mw@semihalf.com> <1468110107-18979-22-git-send-email-mw@semihalf.com> <20161116173553.GB27644@bivouac.eciton.net> In-Reply-To: <20161116173553.GB27644@bivouac.eciton.net> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNTQ2ODgwYmUtY2IxZC00ODY0LTkyYTMtNjVkYzAyMjI4NzU5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6ImdQZnM5K0tJKzVqek9DS1lKWUoyMnhWeHNuVkwzUWIzTWlyY1lFMGFBamc9In0= x-ctpclassification: CTP_IC x-originating-ip: [10.1.200.106] MIME-Version: 1.0 Subject: Re: [PATCH v6 21/23] Applications/FirmwareUpdate: Add 'fupdate' comand to shell X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Nov 2016 21:31:19 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGVpZiwNCg0KSSBhZ3JlZSBvbiBFQkwsIGJ1dCBJIGhhdmUgdmVyeSBsaXR0bGUgZXhwZXJpZW5j ZSB3aXRoIEVCTCBzbyBJIGRvbuKAmXQgd2FudCB0byBkaXNjdXNzIGluIGRldGFpbCBhcyBJIGFt IG5vdCB0aGUgcmlnaHQgcGVyc29uIHdpdGhvdXQgbW9yZSByZXNlYXJjaC4gIFNwZWNpZmljYWxs eSwgbXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgbmVlZGluZyBhIHBsYXRmb3JtIHNwZWNpZmljIGJv b3QgbG9hZGVyIGluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBoYXMgYWxyZWFkeSBnb25lIHdyb25n IG9uIHRoYXQgcGxhdGZvcm0uDQoNCkhvd2V2ZXIsIHRoaXMgZG9lcyBub3Qgc2VlbSBsaWtlIGEg Ym9vdCBsb2FkZXIgb3IgYW4gYXBwbGljYXRpb24gYXQgYWxsLiAgdGhpcyBpcyBhbiBpbnRlcm5h bCBzaGVsbCBjb21tYW5kLiBUaGUgZ29hbCBoZXJlIHNlZW1zIHRvIGJlIHRvIGNyZWF0ZSBhIE5V TEwgbGlicmFyeSB0byBhZGQgYSBuZXcgaW50ZXJuYWwgY29tbWFuZCB0byB0aGUgVUVGSSBTaGVs bC4gIFRoaXMgbGlicmFyeSBnZXRzIGNvbXBpbGVkL2xpbmtlZCBpbnRvIHRoZSBzaGVsbCBpdHNl bGYuDQoNCkkgZmVlbCB0aGF0IHdlIGhhdmUgZm91bmQgYSAibmV3IiB1c2UgY2FzZSB0aGF0IEkg ZW5jb3VudGVyZWQsIGJ1dCB3b3JrZWQgYXJvdW5kIGluIHRoZSBwYXN0IGJlY2F1c2UgYWxsIHBy ZXZpb3VzIGNhc2VzIGludm9sdmVkIGNvbW1hbmRzIGluIHRoZSBzYW1lIGxpYnJhcnkgKHRoZXJl IGFyZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBSZWNvbm5lY3QgYW5kIERpc2Nvbm5lY3QvQ29ubmVj dCkuDQoNCkkgd291bGQgc2F5IHRoYXQgYSBuZXcgQVBJIGluIHRoZSBTaGVsbENvbW1hbmRMaWIg dGhhdCBsaW5rcyB0aGUgVUVGSSBTaGVsbCBBcHBsaWNhdGlvbiB0byB0aGUgTlVMTCBsaWJyYXJp ZXMgdGhhdCBtYWtlIHVwIHRoZSBpbnRlcm5hbCBjb21tYW5kcyB3b3VsZCBiZSBteSBmaXJzdCBj aG9pY2UgZm9yIGltcGxlbWVudGF0aW9uLiAgSSB3b3VsZCBsZWFuIHRvIHNvbWV0aGluZyBsaWtl IHRoZSBmdW5jdGlvbiB0aGF0IE1hcmNpbiBhbHJlYWR5IGNhbGxlZC4gIE1heWJlIHRoaXM/DQoN CkVGSUFQSQ0KUnVuUmVnaXN0ZXJlZENvbW1hbmQoDQogIENIQVIxNiogQ29tbWFuZExpbmUsIA0K ICBFRklfU1RBVFVTICpDb21tYW5kUmV0dXJuVmFsdWUNCikNCg0KLUphYmVuDQoNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGVpZiBMaW5kaG9sbSBbbWFpbHRvOmxlaWYu bGluZGhvbG1AbGluYXJvLm9yZ10NCj4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAxNiwgMjAx NiA5OjM2IEFNDQo+IFRvOiBDYXJzZXksIEphYmVuIDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0K PiBDYzogTWFyY2luIFdvanRhcyA8bXdAc2VtaWhhbGYuY29tPjsgQXJkIEJpZXNoZXV2ZWwNCj4g PGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+OyBsaW5hcm8tdWVmaSA8bGluYXJvLXVlZmlAbGlz dHMubGluYXJvLm9yZz47IE5ldGENCj4gWnVyIEhlcnNoa292aXRzIDxuZXRhQG1hcnZlbGwuY29t PjsgWWVodWRhIFlpdHNjaGFrDQo+IDx5ZWh1ZGF5QG1hcnZlbGwuY29tPjsgSGFpbSBCb290IDxo YXlpbUBtYXJ2ZWxsLmNvbT47IEphbiBEYWJyb3MNCj4gPGpzZEBzZW1paGFsZi5jb20+OyBCYXJ0 b3N6IFN6Y3plcGFuZWsgPGJzekBzZW1paGFsZi5jb20+OyBlZGsyLWRldmVsLQ0KPiAwMSA8ZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmc+OyBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT4NCj4g U3ViamVjdDogUmU6IFtQQVRDSCB2NiAyMS8yM10gQXBwbGljYXRpb25zL0Zpcm13YXJlVXBkYXRl OiBBZGQgJ2Z1cGRhdGUnDQo+IGNvbWFuZCB0byBzaGVsbA0KPiBJbXBvcnRhbmNlOiBIaWdoDQo+ IA0KPiBIaSBKYWJlbiwNCj4gDQo+IEkndmUgc2VlbiBhIGZldyBkaWZmZXJlbnQgc29sdXRpb25z IHRvIHRoZSBzYW1lIHByb2JsZW0gb2YgcHJvdmlkaW5nDQo+IHBsYXRmb3JtLXNwZWNpZmljICJz aG9ydGhhbmQiIGNvbW1hbmRzLCBteSBsZWFzdCBmYXZvdXJpdGUgb25lIGJlaW5nDQo+IGVtYmVk ZGluZyBhIGxvY2FsbHkgaGFja2VkIEVCTC4NCj4gDQo+IEkgZ3Vlc3Mgd2UncmUgZW5kaW5nIHVw IHdpdGggc29tZXRoaW5nIGhhbGZ3YXkgYmV0d2VlbiBhbiBhcHBsaWNhdGlvbg0KPiBhbmQgYSBz Y3JpcHQuDQo+IA0KPiBJcyBpdCB5b3VyIHZpZXcgdGhhdCB0aGlzIHNob3VsZCBhbHdheXMgYmUg aW1wbGVtZW50ZWQgYXMgYSBzdGFuZGFsb25lDQo+IGFwcGxpY2F0aW9uLCB0byBiZSBjYWxsZWQg ZnJvbSB0aGUgVUkgY29uZmlnIG1lbnVzPw0KPiANCj4gQmFzaWNhbGx5LCBpcyB0aGVyZSBhbiBl eHBlY3RlZCB1c2FnZSBwYXR0ZXJuIHRoYXQgcGVvcGxlIGtlZXANCj4gbWlzc2luZz8NCj4gDQo+ IFJlZ2FyZHMsDQo+IA0KPiBMZWlmDQo+IA0KPiBPbiBXZWQsIE5vdiAxNiwgMjAxNiBhdCAwNTow NTozNlBNICswMDAwLCBDYXJzZXksIEphYmVuIHdyb3RlOg0KPiA+IE1hcmNpbiBhbmQgQXJkLA0K PiA+DQo+ID4gSXQgc291bmRzIGxpa2UgdGhlcmUgaXMgYSBnb2FsIHRvIGhhdmUgYSBVRUZJIEFw cGxpY2F0aW9uIGNhbGwgaW50byBhbiBpbnRlcm5hbA0KPiBzaGVsbCBjb21tYW5kLg0KPiA+DQo+ ID4gVGhlcmUgaXMgbm8gZG9jdW1lbnRlZCBtZXRob2QgdG8gcHJvZ3JhbW1hdGljYWxseSBjYWxs IGFuIGludGVybmFsDQo+ID4gY29tbWFuZC4gVGhpcyBpcyBub3QgYSBnb2FsIG9mIHRoZSBjdXJy ZW50IHNoZWxsDQo+ID4gaW1wbGVtZW50YXRpb24uIFNoZWxsRXhlY3V0ZSBleHBsaWNpdGx5IGRv ZXMgbm90IGFsbG93IHJ1bm5pbmcgb2YNCj4gPiBpbnRlcm5hbCBjb21tYW5kcyAocGVyIFVFRkkg U2hlbGwgU3BlY2lmaWNhdGlvbiAyLjIpLg0KPiA+DQo+ID4gVGh1cyBJIGRvbuKAmXQgdGhpbmsg dXNpbmcgU2hlbGxEeW5hbWljQ29tbWFuZFByb3RvY29sIHdpbGwgaGVscC4NCj4gPiBUaGF0IHBy b3RvY29sIGlzIGZvciBhbGxvd2luZyBhIGRyaXZlciBhZGQgYSBjb21tYW5kIHRvIHRoZSBzaGVs bCdzDQo+ID4gbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuDQo+ID4NCj4gPiAtSmFiZW4NCj4g Pg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IE1hcmNpbiBX b2p0YXMgW21haWx0bzptd0BzZW1paGFsZi5jb21dDQo+ID4gPiBTZW50OiBXZWRuZXNkYXksIE5v dmVtYmVyIDE2LCAyMDE2IDg6MTMgQU0NCj4gPiA+IFRvOiBBcmQgQmllc2hldXZlbCA8YXJkLmJp ZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiA+IENjOiBsaW5hcm8tdWVmaSA8bGluYXJvLXVlZmlA bGlzdHMubGluYXJvLm9yZz47IExlaWYgTGluZGhvbG0NCj4gPiA+IDxsZWlmLmxpbmRob2xtQGxp bmFyby5vcmc+OyBOZXRhIFp1ciBIZXJzaGtvdml0cyA8bmV0YUBtYXJ2ZWxsLmNvbT47DQo+ID4g PiBZZWh1ZGEgWWl0c2NoYWsgPHllaHVkYXlAbWFydmVsbC5jb20+OyBIYWltIEJvb3QNCj4gPiA+ IDxoYXlpbUBtYXJ2ZWxsLmNvbT47IEphbiBExIVicm/FmyA8anNkQHNlbWloYWxmLmNvbT47IEJh cnRvc3oNCj4gPiA+IFN6Y3plcGFuZWsgPGJzekBzZW1paGFsZi5jb20+OyBlZGsyLWRldmVsLTAx IDxlZGsyLQ0KPiBkZXZlbEBsaXN0cy4wMS5vcmc+Ow0KPiA+ID4gQ2Fyc2V5LCBKYWJlbiA8amFi ZW4uY2Fyc2V5QGludGVsLmNvbT47IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPg0KPiA+ ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2NiAyMS8yM10gQXBwbGljYXRpb25zL0Zpcm13YXJlVXBk YXRlOiBBZGQNCj4gJ2Z1cGRhdGUnDQo+ID4gPiBjb21hbmQgdG8gc2hlbGwNCj4gPiA+IEltcG9y dGFuY2U6IEhpZ2gNCj4gPiA+DQo+ID4gPiArIEphYmVuLCBSdWl5dSBhbmQgZWRrMiBsaXN0DQo+ ID4gPg0KPiA+ID4gSGkgQXJkLA0KPiA+ID4NCj4gPiA+IEludGVybmFsIFNoZWxsIGhlYWRlciAo Ii4uLy4uLy4uL1NoZWxsUGtnL0FwcGxpY2F0aW9uL1NoZWxsL1NoZWxsLmgiKQ0KPiA+ID4gd2Fz IGFkZGVkIE9OTFkgZm9yIGJlaW5nIGFibGUgdG8gZXhlY3V0ZSBzaGVsbCBjb21tYW5kcyAodGZ0 cCBhbmQgb3VyDQo+ID4gPiBjdXN0b20gU1BJIGZsYXNoIGNvbnRyb2wpIGZyb20gd2l0aGluIGEg bmV3IGNvbW1hbmQuIFRoaXMgaXMgbm93IGRvbmUNCj4gPiA+IHdpdGg6DQo+ID4gPiBSdW5TaGVs bENvbW1hbmQgKFRmdHBDbWQsICZTdGF0dXMpOw0KPiA+ID4gQW5kIGl0IHdvcmtzIGZpbmUuDQo+ ID4gPg0KPiA+ID4gUmVwbGFjaW5nIGFib3ZlIHdpdGg6DQo+ID4gPiBTaGVsbEV4ZWN1dGUgKCZJ bWFnZUhhbmRsZSwgVGZ0cENtZCwgRkFMU0UsIE5VTEwsICZTdGF0dXMpOw0KPiA+ID4gYWxsb3cg dG8gZ2V0IHJpZCBvZiByZWxhdGl2ZSBpbmNsdWRlIGFuZCBzZWVtcyBtb3JlIGFwcHJvcHJpYXRl LCBidXQNCj4gPiA+IHRoZXJlIGlzIGNvbXBsZXRlbHkgbm8gZWZmZWN0IG9mIGNhbGxpbmcgaXQu DQo+ID4gPg0KPiA+ID4gSSBjaGVja2VkIGluIGVkazIgc291cmNlcyBhbmQgc2VlIG5vIHJlbGF0 aW9uIGJldHdlZW4gYWJvdmUgcHJvYmxlbQ0KPiA+ID4gYW5kIHJlZ2lzdGVyaW5nIG91ciBjb21t YW5kIHdpdGggaGVscCBvZiBTaGVsbER5bmFtaWNDb21tYW5kDQo+IHByb3RvY29sLg0KPiA+ID4g VW5sZXNzIEkgZG9uJ3Qga25vdyBzb21ldGhpbmcuIEFueXdheSwgSSdsbCBhcHJlY2lhdGUgYW55 IGhpbnQsIGhvdyB0bw0KPiA+ID4gc29sdmUgdGhlIGlzc3VlIGluIGEgbmljZSB3YXkuDQo+ID4g Pg0KPiA+ID4gQmVzdCByZWdhcmRzLA0KPiA+ID4gTWFyY2luDQo+ID4gPg0KPiA+ID4gMjAxNi0x MS0xNSAxNzowOSBHTVQrMDE6MDAgQXJkIEJpZXNoZXV2ZWwNCj4gPGFyZC5iaWVzaGV1dmVsQGxp bmFyby5vcmc+Og0KPiA+ID4gPiBPbiAxMCBKdWx5IDIwMTYgYXQgMDA6MjEsIE1hcmNpbiBXb2p0 YXMgPG13QHNlbWloYWxmLmNvbT4gd3JvdGU6DQo+ID4gPiA+PiBGcm9tOiBKYW4gRMSFYnJvxZsg PGpzZEBzZW1paGFsZi5jb20+DQo+ID4gPiA+Pg0KPiA+ID4gPj4gJ2Z1cGRhdGUnIGNvbW1hbmQg cGVyZm9ybXMgdXBkYXRpbmcgZmlybXdhcmUgZnJvbSBmaWxlIHBsYWNlZCBvbg0KPiBsb2NhbA0K PiA+ID4gPj4gZmlsZXN5c3RlbSBvciBvbiBURlRQIHNlcnZlci4NCj4gPiA+ID4+IEl0IHVzZXMg dGZ0cCBhbmQgc2YgY29tbWFuZHMuDQo+ID4gPiA+Pg0KPiA+ID4gPj4gQ29udHJpYnV0ZWQtdW5k ZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMA0KPiA+ID4gPj4gU2lnbmVk LW9mZi1ieTogSmFuIERhYnJvcyA8anNkQHNlbWloYWxmLmNvbT4NCj4gPiA+ID4+IFNpZ25lZC1v ZmYtYnk6IE1hcmNpbiBXb2p0YXMgPG13QHNlbWloYWxmLmNvbT4NCj4gPiA+ID4NCj4gPiA+ID4g UGxlYXNlIHVzZSB0aGUgU2hlbGwgZHluYW1pYyBjb21tYW5kIHByb3RvY29sIHRvIGFkZCBjb21t YW5kcyB0bw0KPiB0aGUNCj4gPiA+ID4gc2hlbGwuIFRoaXMgd2lsbCByZW1vdmUgdGhlIG5lZWQg Zm9yIGluY2x1ZGluZyBpbnRlcm5hbCBTaGVsbCBoZWFkZXJzLA0KPiA+ID4gPiBhbmQgZXZlbiBh bGxvdyB5b3VyIGNvbW1hbmRzIHRvIHdvcmsgd2l0aCBwcmVidWlsdCBTaGVsbCBiaW5hcmllcy4N Cj4gPiA+ID4NCj4gPiA+ID4gTWRlUGtnL0luY2x1ZGUvUHJvdG9jb2wvU2hlbGxEeW5hbWljQ29t bWFuZC5oDQo+ID4gPiA+DQo+ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4gQXJkLg0KPiA+ID4gPg0K PiA+ID4gPg0KPiA+ID4gPj4gLS0tDQo+ID4gPiA+PiAgQXBwbGljYXRpb25zL0Zpcm13YXJlVXBk YXRlL0ZVcGRhdGUuYyAgIHwgNDQ4DQo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPiA+ID4gPj4gIEFwcGxpY2F0aW9ucy9GaXJtd2FyZVVwZGF0ZS9GVXBkYXRlLmluZiB8 ICA2OCArKysrKw0KPiA+ID4gPj4gIEFwcGxpY2F0aW9ucy9GaXJtd2FyZVVwZGF0ZS9GVXBkYXRl LnVuaSB8IEJpbiAwIC0+IDU4MzggYnl0ZXMNCj4gPiA+ID4+ICBQbGF0Zm9ybXMvTWFydmVsbC9N YXJ2ZWxsLmRlYyAgICAgICAgICAgfCAgIDEgKw0KPiA+ID4gPj4gIDQgZmlsZXMgY2hhbmdlZCwg NTE3IGluc2VydGlvbnMoKykNCj4gPiA+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQXBwbGljYXRp b25zL0Zpcm13YXJlVXBkYXRlL0ZVcGRhdGUuYw0KPiA+ID4gPj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBBcHBsaWNhdGlvbnMvRmlybXdhcmVVcGRhdGUvRlVwZGF0ZS5pbmYNCj4gPiA+ID4+ICBjcmVh dGUgbW9kZSAxMDA2NDQgQXBwbGljYXRpb25zL0Zpcm13YXJlVXBkYXRlL0ZVcGRhdGUudW5pDQo+ ID4gPiA+Pg0KPiA+ID4gPj4gZGlmZiAtLWdpdCBhL0FwcGxpY2F0aW9ucy9GaXJtd2FyZVVwZGF0 ZS9GVXBkYXRlLmMNCj4gPiA+IGIvQXBwbGljYXRpb25zL0Zpcm13YXJlVXBkYXRlL0ZVcGRhdGUu Yw0KPiA+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4+IGluZGV4IDAwMDAwMDAu LjM1OWE0YWMNCj4gPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4+ICsrKyBiL0FwcGxpY2F0 aW9ucy9GaXJtd2FyZVVwZGF0ZS9GVXBkYXRlLmMNCj4gPiA+ID4+IEBAIC0wLDAgKzEsNDQ4IEBA DQo+ID4gPiA+Pg0KPiA+ID4NCj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioNCj4gPiA+ICoqKioqKioqKioqKioqKioqKioqKioNCj4g PiA+ID4+ICtDb3B5cmlnaHQgKEMpIDIwMTYgTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4NCj4g PiA+ID4+ICsNCj4gPiA+ID4+ICtNYXJ2ZWxsIEJTRCBMaWNlbnNlIE9wdGlvbg0KPiA+ID4gPj4g Kw0KPiA+ID4gPj4gK0lmIHlvdSByZWNlaXZlZCB0aGlzIEZpbGUgZnJvbSBNYXJ2ZWxsLCB5b3Ug bWF5IG9wdCB0byB1c2UsDQo+IHJlZGlzdHJpYnV0ZQ0KPiA+ID4gYW5kL29yDQo+ID4gPiA+PiAr bW9kaWZ5IHRoaXMgRmlsZSB1bmRlciB0aGUgZm9sbG93aW5nIGxpY2Vuc2luZyB0ZXJtcy4NCj4g PiA+ID4+ICtSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQNCj4gPiA+IG1vZGlmaWNhdGlvbiwNCj4gPiA+ID4+ICthcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+ ID4gPiA+PiArDQo+ID4gPiA+PiArKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiBub3RpY2UsDQo+ID4gPiA+PiArICB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiA+ID4g Pj4gKw0KPiA+ID4gPj4gKyogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gPiA+ID4+ICsgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4gPiA+ ID4+ICsgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo IHRoZQ0KPiBkaXN0cmlidXRpb24uDQo+ID4gPiA+PiArDQo+ID4gPiA+PiArKiBOZWl0aGVyIHRo ZSBuYW1lIG9mIE1hcnZlbGwgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQ0K PiBiZQ0KPiA+ID4gPj4gKyAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUNCj4gPiA+IHdpdGhvdXQNCj4gPiA+ID4+ICsgIHNwZWNp ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICtUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gPiA+ IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORA0KPiA+ID4gPj4gK0FOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQo+IExJTUlURUQNCj4gPiA+IFRPLCBU SEUgSU1QTElFRA0KPiA+ID4gPj4gK1dBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG SVRORVNTIEZPUiBBDQo+IFBBUlRJQ1VMQVINCj4gPiA+IFBVUlBPU0UgQVJFDQo+ID4gPiA+PiAr RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUg0KPiA+ ID4gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1INCj4gPiA+ID4+ICtBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KPiA+ID4gQ09OU0VRVUVO VElBTCBEQU1BR0VTDQo+ID4gPiA+PiArKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFDQo+ID4gPiBHT09EUyBPUiBTRVJWSUNFUzsNCj4gPiA+ ID4+ICtMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKQ0KPiA+ID4gSE9XRVZFUiBDQVVTRUQgQU5EIE9ODQo+ID4gPiA+PiArQU5ZIFRIRU9SWSBP RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksDQo+IE9S DQo+ID4gPiBUT1JUDQo+ID4gPiA+PiArKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkgQVJJU0lORyBJTiBBTlkgV0FZDQo+IE9VVCBPRg0KPiA+ID4gVEhFIFVTRSBPRiBUSElTDQo+ ID4gPiA+PiArU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuDQo+ID4gPiA+PiArDQo+ID4gPiA+Pg0KPiA+ID4NCj4gKyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiA+ID4gKioq KioqKioqKioqKioqKioqKioqKi8NCj4gPiA+ID4+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ID4g Pj4gKyNpbmNsdWRlIDxTaGVsbEJhc2UuaD4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsjaW5jbHVk ZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCj4gPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+ DQo+ID4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxDb21tYW5kTGliLmg+DQo+ID4gPiA+ PiArI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4NCj4gPiA+ID4+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpTGliLmg+DQo+ID4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4N Cj4gPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gPiA+PiArI2luY2x1 ZGUgPExpYnJhcnkvU2hlbGxDRW50cnlMaWIuaD4NCj4gPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFy eS9IaWlMaWIuaD4NCj4gPiA+ID4+ICsjaW5jbHVkZSA8R3VpZC9TaGVsbExpYkhpaUd1aWQuaD4N Cj4gPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4N Cj4gPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9GaWxlSGFuZGxlTGliLmg+DQo+ID4gPiA+PiAr Ly8gRklYTUU6IFJlbW92ZSBpbmNsdWRpbmcgcmVsYXRpdmUgcGF0aA0KPiA+ID4gPj4gKyNpbmNs dWRlICIuLi8uLi8uLi9TaGVsbFBrZy9BcHBsaWNhdGlvbi9TaGVsbC9TaGVsbC5oIg0KPiA+ID4g Pj4gKw0KPiA+ID4gPj4gKyNkZWZpbmUgQ01EX05BTUVfU1RSSU5HICAgICAgIEwiZnVwZGF0ZSIN Cj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsjZGVmaW5lIFRGVFBfQ01EX1NUUklORyAgICAgICBMInRm dHAgIg0KPiA+ID4gPj4gKyNkZWZpbmUgU1BBQ0VfU1RSSU5HICAgICAgICAgIEwiICINCj4gPiA+ ID4+ICsjZGVmaW5lIFNGX1BST0JFX0NNRF9TVFJJTkcgICBMInNmIHByb2JlIg0KPiA+ID4gPj4g KyNkZWZpbmUgU0ZfV1JJVEVfQ01EX1NUUklORyAgIEwic2YgdXBkYXRlZmlsZSAiDQo+ID4gPiA+ PiArI2RlZmluZSBTRl9MT0FEX0FERFJfU1RSSU5HICAgTCIweDAiDQo+ID4gPiA+PiArDQo+ID4g PiA+PiArI2RlZmluZSBNQUlOX0hEUl9NQUdJQyAgICAgICAgMHhCMTA1QjAwMg0KPiA+ID4gPj4g Kw0KPiA+ID4gPj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ID4+ICsgIFVJTlQzMiAgTWFnaWM7 ICAgICAgICAgICAgICAvLyAgMC0zDQo+ID4gPiA+PiArICBVSU5UMzIgIFByb2xvZ1NpemU7ICAg ICAgICAgLy8gIDQtNw0KPiA+ID4gPj4gKyAgVUlOVDMyICBQcm9sb2dDaGVja3N1bTsgICAgIC8v ICA4LTExDQo+ID4gPiA+PiArICBVSU5UMzIgIEJvb3RJbWFnZVNpemU7ICAgICAgLy8gMTItMTUN Cj4gPiA+ID4+ICsgIFVJTlQzMiAgQm9vdEltYWdlQ2hlY2tzdW07ICAvLyAxNi0xOQ0KPiA+ID4g Pj4gKyAgVUlOVDMyICBSZXNlcnZlZDA7ICAgICAgICAgIC8vIDIwLTIzDQo+ID4gPiA+PiArICBV SU5UMzIgIExvYWRBZGRyOyAgICAgICAgICAgLy8gMjQtMjcNCj4gPiA+ID4+ICsgIFVJTlQzMiAg RXhlY0FkZHI7ICAgICAgICAgICAvLyAyOC0zMQ0KPiA+ID4gPj4gKyAgVUlOVDggICBVYXJ0Q29u ZmlnOyAgICAgICAgIC8vICAzMg0KPiA+ID4gPj4gKyAgVUlOVDggICBCYXVkcmF0ZTsgICAgICAg ICAgIC8vICAzMw0KPiA+ID4gPj4gKyAgVUlOVDggICBFeHRDb3VudDsgICAgICAgICAgIC8vICAz NA0KPiA+ID4gPj4gKyAgVUlOVDggICBBdXhGbGFnczsgICAgICAgICAgIC8vICAzNQ0KPiA+ID4g Pj4gKyAgVUlOVDMyICBJb0FyZzA7ICAgICAgICAgICAgIC8vIDM2LTM5DQo+ID4gPiA+PiArICBV SU5UMzIgIElvQXJnMTsgICAgICAgICAgICAgLy8gNDAtNDMNCj4gPiA+ID4+ICsgIFVJTlQzMiAg SW9BcmcyOyAgICAgICAgICAgICAvLyA0My00Nw0KPiA+ID4gPj4gKyAgVUlOVDMyICBJb0FyZzM7 ICAgICAgICAgICAgIC8vIDQ4LTUxDQo+ID4gPiA+PiArICBVSU5UMzIgIFJlc2VydmVkMTsgICAg ICAgICAgLy8gNTItNTUNCj4gPiA+ID4+ICsgIFVJTlQzMiAgUmVzZXJ2ZWQyOyAgICAgICAgICAv LyA1Ni01OQ0KPiA+ID4gPj4gKyAgVUlOVDMyICBSZXNlcnZlZDM7ICAgICAgICAgIC8vIDYwLTYz DQo+ID4gPiA+PiArfSBNVl9JTUFHRV9IRUFERVI7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArU1RB VElDDQo+ID4gPiA+PiArVUlOVDMyDQo+ID4gPiA+PiArQ291bnRDaGVja3N1bSAoDQo+ID4gPiA+ PiArICBVSU5UMzIgKlN0YXJ0LA0KPiA+ID4gPj4gKyAgVUlOVDMyIExlbmd0aA0KPiA+ID4gPj4g KyAgKQ0KPiA+ID4gPj4gK3sNCj4gPiA+ID4+ICsgIFVJTlQzMiBTdW0gPSAwOw0KPiA+ID4gPj4g KyAgVUlOVDMyICpTdGFydHAgPSBTdGFydDsNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIGRvIHsN Cj4gPiA+ID4+ICsgICAgU3VtICs9ICpTdGFydHA7DQo+ID4gPiA+PiArICAgIFN0YXJ0cCsrOw0K PiA+ID4gPj4gKyAgICBMZW5ndGggLT0gNDsNCj4gPiA+ID4+ICsgIH0gd2hpbGUgKExlbmd0aCA+ IDApOw0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgcmV0dXJuIFN1bTsNCj4gPiA+ID4+ICt9DQo+ ID4gPiA+PiArDQo+ID4gPiA+PiArU1RBVElDDQo+ID4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4g Pj4gK0NoZWNrSW1hZ2VIZWFkZXIgKA0KPiA+ID4gPj4gKyAgSU4gVk9JRCAqSW1hZ2VIZWFkZXIN Cj4gPiA+ID4+ICsgICkNCj4gPiA+ID4+ICt7DQo+ID4gPiA+PiArICBNVl9JTUFHRV9IRUFERVIg KkhlYWRlcjsNCj4gPiA+ID4+ICsgIFVJTlQzMiBIZWFkZXJMZW5ndGgsIENoZWNrc3VtLCBDaGVj a3N1bUJhY2t1cDsNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIEhlYWRlciA9IChNVl9JTUFHRV9I RUFERVIgKikgSW1hZ2VIZWFkZXI7DQo+ID4gPiA+PiArICBIZWFkZXJMZW5ndGggPSBIZWFkZXIt PlByb2xvZ1NpemU7DQo+ID4gPiA+PiArICBDaGVja3N1bUJhY2t1cCA9IEhlYWRlci0+UHJvbG9n Q2hlY2tzdW07DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICAvLyBDb21wYXJlIG1hZ2ljIG51bWJl cg0KPiA+ID4gPj4gKyAgaWYgKEhlYWRlci0+TWFnaWMgIT0gTUFJTl9IRFJfTUFHSUMpIHsNCj4g PiA+ID4+ICsgICAgUHJpbnQgKEwiJXM6IEJhZCBJbWFnZSBtYWdpYyAweCUwOHggIT0gMHglMDh4 XG4iLA0KPiA+ID4gQ01EX05BTUVfU1RSSU5HLA0KPiA+ID4gPj4gKyAgICAgIEhlYWRlci0+TWFn aWMsIE1BSU5fSERSX01BR0lDKTsNCj4gPiA+ID4+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJS T1I7DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICAvLyBUaGUgY2hlY2tz dW0gZmllbGQgaXMgZGlzY2FyZGVkIGZyb20gY2FsY3VsYXRpb24NCj4gPiA+ID4+ICsgIEhlYWRl ci0+UHJvbG9nQ2hlY2tzdW0gPSAwOw0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgQ2hlY2tzdW0g PSBDb3VudENoZWNrc3VtKChVSU5UMzIgKilIZWFkZXIsIEhlYWRlckxlbmd0aCk7DQo+ID4gPiA+ PiArICBpZiAoQ2hlY2tzdW0gIT0gQ2hlY2tzdW1CYWNrdXApIHsNCj4gPiA+ID4+ICsgICAgUHJp bnQgKEwiJXM6IEJhZCBJbWFnZSBjaGVja3N1bS4gMHgleCAhPSAweCV4XG4iLA0KPiA+ID4gQ01E X05BTUVfU1RSSU5HLCBDaGVja3N1bSwNCj4gPiA+ID4+ICsgICAgICBDaGVja3N1bUJhY2t1cCk7 DQo+ID4gPiA+PiArICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ID4gPj4gKyAgfQ0K PiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgLy8gUmVzdG9yZSBjaGVja3N1bSBiYWNrdXANCj4gPiA+ ID4+ICsgIEhlYWRlci0+UHJvbG9nQ2hlY2tzdW0gPSBDaGVja3N1bUJhY2t1cDsNCj4gPiA+ID4+ ICsNCj4gPiA+ID4+ICsgIHJldHVybiAwOw0KPiA+ID4gPj4gK30NCj4gPiA+ID4+ICsNCj4gPiA+ ID4+ICtTVEFUSUMNCj4gPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPiA+PiArQ2hlY2tGaXJtd2Fy ZUltYWdlICgNCj4gPiA+ID4+ICsgIENPTlNUIENIQVIxNiogRmlybXdhcmVJbWFnZQ0KPiA+ID4g Pj4gKyAgKQ0KPiA+ID4gPj4gK3sNCj4gPiA+ID4+ICsgIEVGSV9TVEFUVVMgU3RhdHVzOw0KPiA+ ID4gPj4gKyAgVk9JRCAqRmlsZUJ1ZmZlcjsNCj4gPiA+ID4+ICsgIFVJTlQ2NCBPcGVuTW9kZTsN Cj4gPiA+ID4+ICsgIFVJTlROIEZpbGVTaXplOw0KPiA+ID4gPj4gKyAgU0hFTExfRklMRV9IQU5E TEUgRmlsZUhhbmRsZSA9IE5VTEw7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBPcGVuTW9kZSA9 IEVGSV9GSUxFX01PREVfUkVBRDsNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIFN0YXR1cyA9IFNo ZWxsT3BlbkZpbGVCeU5hbWUgKEZpcm13YXJlSW1hZ2UsICZGaWxlSGFuZGxlLA0KPiA+ID4gT3Bl bk1vZGUsIDApOw0KPiA+ID4gPj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g PiA+PiArICAgICAgUHJpbnQgKEwiJXM6IENhbm5vdCBvcGVuIEltYWdlIGZpbGVcbiIsIENNRF9O QU1FX1NUUklORyk7DQo+ID4gPiA+PiArICAgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ ID4gPiA+PiArICAgIH0NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIFN0YXR1cyA9IEZpbGVIYW5k bGVHZXRTaXplIChGaWxlSGFuZGxlLCAmRmlsZVNpemUpOw0KPiA+ID4gPj4gKyAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+PiArICAgICAgUHJpbnQgKEwiJXM6IENhbm5vdCBn ZXQgSW1hZ2UgZmlsZSBzaXplXG4iLCBDTURfTkFNRV9TVFJJTkcpOw0KPiA+ID4gPj4gKyAgICB9 DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBGaWxlQnVmZmVyID0gQWxsb2NhdGVaZXJvUG9vbCAo RmlsZVNpemUpOw0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgLy8gUmVhZCBJbWFnZSBoZWFkZXIg aW50byBidWZmZXINCj4gPiA+ID4+ICsgIFN0YXR1cyA9IEZpbGVIYW5kbGVSZWFkIChGaWxlSGFu ZGxlLCAmRmlsZVNpemUsIEZpbGVCdWZmZXIpOw0KPiA+ID4gPj4gKyAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gPiA+PiArICAgICAgUHJpbnQgKEwiJXM6IENhbm5vdCByZWFkIElt YWdlIGZpbGUgaGVhZGVyXG4iLA0KPiBDTURfTkFNRV9TVFJJTkcpOw0KPiA+ID4gPj4gKyAgICAg IFNoZWxsQ2xvc2VGaWxlICgmRmlsZUhhbmRsZSk7DQo+ID4gPiA+PiArICAgICAgRnJlZVBvb2wg KEZpbGVCdWZmZXIpOw0KPiA+ID4gPj4gKyAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0K PiA+ID4gPj4gKyAgICB9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBTdGF0dXMgPSBDaGVja0lt YWdlSGVhZGVyIChGaWxlQnVmZmVyKTsNCj4gPiA+ID4+ICsgIGlmIChFRklfRVJST1IoU3RhdHVz KSkgew0KPiA+ID4gPj4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiA+ID4+ICsg IH0NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIEZyZWVQb29sIChGaWxlQnVmZmVyKTsNCj4gPiA+ ID4+ICsNCj4gPiA+ID4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ID4+ICt9DQo+ID4g PiA+PiArDQo+ID4gPiA+PiArU1RBVElDDQo+ID4gPiA+PiArQ09OU1QgQ0hBUjE2ICoNCj4gPiA+ ID4+ICtGaWxlTmFtZUZyb21GaWxlUGF0aCAoDQo+ID4gPiA+PiArICBDT05TVCBDSEFSMTYgKlJl bW90ZUZpbGVQYXRoDQo+ID4gPiA+PiArICApDQo+ID4gPiA+PiArew0KPiA+ID4gPj4gKyAgQ09O U1QgQ0hBUjE2ICpXYWxrZXI7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICAvLyBHYXRoZXIgRmls ZU5hbWUgZnJvbSBGaWxlUGF0aA0KPiA+ID4gPj4gKyAgV2Fsa2VyID0gUmVtb3RlRmlsZVBhdGgg KyBTdHJMZW4gKFJlbW90ZUZpbGVQYXRoKTsNCj4gPiA+ID4+ICsgIHdoaWxlICgoLS1XYWxrZXIp ID49IFJlbW90ZUZpbGVQYXRoKSB7DQo+ID4gPiA+PiArICAgIGlmICgoKldhbGtlciA9PSBMJ1xc JykgfHwgKCpXYWxrZXIgPT0gTCcvJykpIHsNCj4gPiA+ID4+ICsgICAgICBicmVhazsNCj4gPiA+ ID4+ICsgICAgfQ0KPiA+ID4gPj4gKyAgfQ0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgcmV0dXJu IChXYWxrZXIgKyAxKTsNCj4gPiA+ID4+ICt9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArU1RBVElD DQo+ID4gPiA+PiArQ09OU1QgQ0hBUjE2Kg0KPiA+ID4gPj4gK1ByZXBhcmVGaWxlICgNCj4gPiA+ ID4+ICsgIExJU1RfRU5UUlkgKkNoZWNrUGFja2FnZQ0KPiA+ID4gPj4gKyAgKQ0KPiA+ID4gPj4g K3sNCj4gPiA+ID4+ICsgIEVGSV9TVEFUVVMgU3RhdHVzOw0KPiA+ID4gPj4gKyAgQ09OU1QgQ0hB UjE2ICAqVmFsdWVTdHI7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBWYWx1ZVN0ciA9IFNoZWxs Q29tbWFuZExpbmVHZXRWYWx1ZSAoQ2hlY2tQYWNrYWdlLCBMIi1mIik7DQo+ID4gPiA+PiArICBp ZiAoVmFsdWVTdHIgPT0gTlVMTCkgew0KPiA+ID4gPj4gKyAgICBQcmludCAoTCIlczogTm8gTG9j YWxGaWxlUGF0aCBwYXJhbWV0ZXIhXG4iLA0KPiBDTURfTkFNRV9TVFJJTkcpOw0KPiA+ID4gPj4g KyAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4+ICsgIH0gZWxzZSB7DQo+ID4gPiA+PiArICAgIFN0 YXR1cyA9IFNoZWxsSXNGaWxlIChWYWx1ZVN0cik7DQo+ID4gPiA+PiArICAgIGlmIChFRklfRVJS T1IoU3RhdHVzKSkgew0KPiA+ID4gPj4gKyAgICAgIFByaW50IChMIiVzOiBXcm9uZyBMb2NhbEZp bGVQYXRoIHBhcmFtZXRlciFcbiIsDQo+ID4gPiBDTURfTkFNRV9TVFJJTkcpOw0KPiA+ID4gPj4g KyAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPj4gKyAgICB9DQo+ID4gPiA+PiArICB9DQo+ID4g PiA+PiArICByZXR1cm4gVmFsdWVTdHI7DQo+ID4gPiA+PiArfQ0KPiA+ID4gPj4gKw0KPiA+ID4g Pj4gK0NPTlNUIENIQVIxNiBnU2hlbGxGVXBkYXRlRmlsZU5hbWVbXSA9IEwiU2hlbGxDb21tYW5k IjsNCj4gPiA+ID4+ICtFRklfSEFORExFIGdTaGVsbEZVcGRhdGVIaWlIYW5kbGUgPSBOVUxMOw0K PiA+ID4gPj4gK0VGSV9IQU5ETEUgZ1NoZWxsRlVwZGF0ZUhpaUhhbmRsZTsNCj4gPiA+ID4+ICsN Cj4gPiA+ID4+ICtTVEFUSUMgQ09OU1QgU0hFTExfUEFSQU1fSVRFTSBQYXJhbUxpc3RbXSA9IHsN Cj4gPiA+ID4+ICsgIHtMImhlbHAiLCBUeXBlRmxhZ30sDQo+ID4gPiA+PiArICB7TCItdCIsIFR5 cGVGbGFnfSwNCj4gPiA+ID4+ICsgIHtMIi1mIiwgVHlwZVZhbHVlfSwNCj4gPiA+ID4+ICsgIHtO VUxMICwgVHlwZU1heH0NCj4gPiA+ID4+ICsgIH07DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArLyoq DQo+ID4gPiA+PiArICBSZXR1cm4gdGhlIGZpbGUgbmFtZSBvZiB0aGUgaGVscCB0ZXh0IGZpbGUg aWYgbm90IHVzaW5nIEhJSS4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIEByZXR1cm4gVGhlIHN0 cmluZyBwb2ludGVyIHRvIHRoZSBmaWxlIG5hbWUuDQo+ID4gPiA+PiArKiovDQo+ID4gPiA+PiAr Q09OU1QgQ0hBUjE2Kg0KPiA+ID4gPj4gK0VGSUFQSQ0KPiA+ID4gPj4gK1NoZWxsQ29tbWFuZEdl dE1hbkZpbGVOYW1lRlVwZGF0ZSAoDQo+ID4gPiA+PiArICBWT0lEDQo+ID4gPiA+PiArICApDQo+ ID4gPiA+PiArew0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgcmV0dXJuIGdTaGVsbEZVcGRhdGVG aWxlTmFtZTsNCj4gPiA+ID4+ICt9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArVk9JRA0KPiA+ID4g Pj4gK0ZVcGRhdGVVc2FnZSAoDQo+ID4gPiA+PiArICBWT0lEDQo+ID4gPiA+PiArICApDQo+ID4g PiA+PiArew0KPiA+ID4gPj4gKyAgUHJpbnQgKEwiXG5GaXJtd2FyZSB1cGRhdGUgY29tbWFuZFxu Ig0KPiA+ID4gPj4gKyAgICAgICAgICJmdXBkYXRlIFstZiA8TG9jYWxGaWxlUGF0aD5dIFstdCA8 SG9zdD4NCj4gPFJlbW90ZUZpbGVQYXRoPl1cblxuIg0KPiA+ID4gPj4gKyAgICAgICAgICJMb2Nh bEZpbGVQYXRoICAtIHBhdGggdG8gbG9jYWwgZmlybXdhcmUgaW1hZ2UgZmlsZVxuIg0KPiA+ID4g Pj4gKyAgICAgICAgICJIb3N0ICAgICAgICAgICAtIElQIG51bWJlciBvZiBURlRQIHNlcnZlclxu Ig0KPiA+ID4gPj4gKyAgICAgICAgICJSZW1vdGVGaWxlUGF0aCAtIHBhdGggdG8gZmlybXdhcmUg aW1hZ2UgZmlsZSBvbiBURlRQIHNlcnZlclxuIg0KPiA+ID4gPj4gKyAgICAgICAgICJFeGFtcGxl czpcbiINCj4gPiA+ID4+ICsgICAgICAgICAiVXBkYXRlIGZpcm13YXJlIGZyb20gZmlsZSBmczI6 VWVmaS5pbWdcbiINCj4gPiA+ID4+ICsgICAgICAgICAiICBmdXBkYXRlIC1mIGZzMjpVZWZpLmlt Z1xuIg0KPiA+ID4gPj4gKyAgICAgICAgICJVcGRhdGUgZmlybXdhcmUgZnJvbSBmaWxlIHBhdGgv VWVmaS5pbWcgVEZUUCBzZXJ2ZXIgd2l0aCBJUCAiDQo+ID4gPiA+PiArICAgICAgICAgImFkZHJl c3MgMTAuMC4wLjIwMFxuIg0KPiA+ID4gPj4gKyAgICAgICAgICIgIGZ1cGRhdGUgLXQgMTAuMC4w LjIwMCBwYXRoL1VlZmkuaW1nXG4iDQo+ID4gPiA+PiArICApOw0KPiA+ID4gPj4gK30NCj4gPiA+ ID4+ICsNCj4gPiA+ID4+ICtTSEVMTF9TVEFUVVMNCj4gPiA+ID4+ICtFRklBUEkNCj4gPiA+ID4+ ICtTaGVsbENvbW1hbmRSdW5GVXBkYXRlICgNCj4gPiA+ID4+ICsgIElOIEVGSV9IQU5ETEUgICAg ICAgIEltYWdlSGFuZGxlLA0KPiA+ID4gPj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3Rl bVRhYmxlDQo+ID4gPiA+PiArICApDQo+ID4gPiA+PiArew0KPiA+ID4gPj4gKyAgRUZJX1NUQVRV UyAgICBTdGF0dXM7DQo+ID4gPiA+PiArICBMSVNUX0VOVFJZICAgICpDaGVja1BhY2thZ2U7DQo+ ID4gPiA+PiArICBDSEFSMTYgICAgICAgICpQcm9ibGVtUGFyYW0sICpUZnRwQ21kID0gTlVMTCwg KlNmQ21kID0gTlVMTDsNCj4gPiA+ID4+ICsgIENPTlNUIENIQVIxNiAgKlJlbW90ZUZpbGVQYXRo LCAqSG9zdCwgKkZpbGVUb1dyaXRlOw0KPiA+ID4gPj4gKyAgVUlOVDggICAgICAgICBDbWRMZW47 DQo+ID4gPiA+PiArICBCT09MRUFOICAgICAgIEZpbGVGbGFnLCBUZnRwRmxhZzsNCj4gPiA+ID4+ ICsNCj4gPiA+ID4+ICsgIFN0YXR1cyA9IFNoZWxsSW5pdGlhbGl6ZSAoKTsNCj4gPiA+ID4+ICsg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4+ICsgICAgUHJpbnQgKEwiJXM6IEVy cm9yIHdoaWxlIGluaXRpYWxpemluZiBTaGVsbFxuIiwgQ01EX05BTUVfU1RSSU5HKTsNCj4gPiA+ ID4+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ID4+ICsgICAgcmV0dXJu IFNIRUxMX0FCT1JURUQ7DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBT dGF0dXMgPSBTaGVsbENvbW1hbmRMaW5lUGFyc2UgKFBhcmFtTGlzdCwgJkNoZWNrUGFja2FnZSwN Cj4gPiA+ICZQcm9ibGVtUGFyYW0sDQo+ID4gPiA+PiArICAgIFRSVUUpOw0KPiA+ID4gPj4gKyAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPj4gKyAgICBQcmludCAoTCJQYXJzZSBl cnJvciFcbiIpOw0KPiA+ID4gPj4gKyAgfQ0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgaWYgKFNo ZWxsQ29tbWFuZExpbmVHZXRGbGFnIChDaGVja1BhY2thZ2UsIEwiaGVscCIpKSB7DQo+ID4gPiA+ PiArICAgIEZVcGRhdGVVc2FnZSgpOw0KPiA+ID4gPj4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBGaWxlRmxhZyA9IFNoZWxs Q29tbWFuZExpbmVHZXRGbGFnIChDaGVja1BhY2thZ2UsIEwiLWYiKTsNCj4gPiA+ID4+ICsgIFRm dHBGbGFnID0gU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKENoZWNrUGFja2FnZSwgTCItdCIpOw0K PiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgaWYgKCFGaWxlRmxhZyAmJiAhVGZ0cEZsYWcpIHsNCj4g PiA+ID4+ICsgICAgUHJpbnQgKEwiJXM6IFBsZWFzZSBzcGVjaWZ5IC1mIG9yIC10IGZsYWdcbiIs IENNRF9OQU1FX1NUUklORyk7DQo+ID4gPiA+PiArICAgIHJldHVybiBTSEVMTF9BQk9SVEVEOw0K PiA+ID4gPj4gKyAgfSBlbHNlIGlmIChGaWxlRmxhZyAmJiAhVGZ0cEZsYWcpIHsNCj4gPiA+ID4+ ICsgICAgLy8gUHJlcGFyZSBsb2NhbCBmaWxlIHRvIGJlIGJ1cm5lZCBpbnRvIGZsYXNoDQo+ID4g PiA+PiArICAgIEZpbGVUb1dyaXRlID0gUHJlcGFyZUZpbGUgKENoZWNrUGFja2FnZSk7DQo+ID4g PiA+PiArICAgIGlmIChGaWxlVG9Xcml0ZSA9PSBOVUxMKSB7DQo+ID4gPiA+PiArICAgICAgUHJp bnQgKEwiJXM6IEVycm9yIHdoaWxlIHByZXBhcmluZyBmaWxlIGZvciBidXJuXG4iLA0KPiA+ID4g Q01EX05BTUVfU1RSSU5HKTsNCj4gPiA+ID4+ICsgICAgICByZXR1cm4gU0hFTExfQUJPUlRFRDsN Cj4gPiA+ID4+ICsgICAgfQ0KPiA+ID4gPj4gKyAgfSBlbHNlIGlmIChUZnRwRmxhZyAmJiAhRmls ZUZsYWcpIHsNCj4gPiA+ID4+ICsgICAgSG9zdCA9IFNoZWxsQ29tbWFuZExpbmVHZXRSYXdWYWx1 ZSAoQ2hlY2tQYWNrYWdlLCAxKTsNCj4gPiA+ID4+ICsgICAgaWYgKEhvc3QgPT0gTlVMTCkgew0K PiA+ID4gPj4gKyAgICAgIFByaW50IChMIiVzOiBObyBIb3N0IHBhcmFtZXRlciFcbiIsIENNRF9O QU1FX1NUUklORyk7DQo+ID4gPiA+PiArICAgICAgcmV0dXJuIFNIRUxMX0FCT1JURUQ7DQo+ID4g PiA+PiArICAgIH0NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgICAgUmVtb3RlRmlsZVBhdGggPSBT aGVsbENvbW1hbmRMaW5lR2V0UmF3VmFsdWUNCj4gKENoZWNrUGFja2FnZSwgMik7DQo+ID4gPiA+ PiArICAgIGlmIChSZW1vdGVGaWxlUGF0aCA9PSBOVUxMKSB7DQo+ID4gPiA+PiArICAgICAgUHJp bnQgKEwiJXM6IE5vIHJlbW90ZV9maWxlX3BhdGggcGFyYW1ldGVyIVxuIiwNCj4gPiA+IENNRF9O QU1FX1NUUklORyk7DQo+ID4gPiA+PiArICAgICAgcmV0dXJuIFNIRUxMX0FCT1JURUQ7DQo+ID4g PiA+PiArICAgIH0NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgICAgLy8gR2F0aGVyIGZpcm13YXJl IGltYWdlIG5hbWUgZnJvbSByZW1vdGUgZmlsZXBhdGgNCj4gPiA+ID4+ICsgICAgRmlsZVRvV3Jp dGUgPSBGaWxlTmFtZUZyb21GaWxlUGF0aCAoUmVtb3RlRmlsZVBhdGgpOw0KPiA+ID4gPj4gKw0K PiA+ID4gPj4gKyAgICAvLyBBbGxvY2F0ZSBidWZmZXIgZm9yIHRmdHAgY29tbWFuZCBzdHJpbmcN Cj4gPiA+ID4+ICsgICAgQ21kTGVuID0gU3RyU2l6ZSAoVEZUUF9DTURfU1RSSU5HKSArIFN0clNp emUgKFNQQUNFX1NUUklORykNCj4gKw0KPiA+ID4gPj4gKyAgICAgIFN0clNpemUgKEhvc3QpICsg U3RyU2l6ZSAoUmVtb3RlRmlsZVBhdGgpOw0KPiA+ID4gPj4gKyAgICBUZnRwQ21kID0gKENIQVIx NiAqKSBBbGxvY2F0ZVplcm9Qb29sIChDbWRMZW4gKw0KPiBzaXplb2YoQ0hBUjE2KSk7DQo+ID4g PiA+PiArICAgIGlmIChUZnRwQ21kID09IE5VTEwpIHsNCj4gPiA+ID4+ICsgICAgICBQcmludCAo TCIlczogQ2Fubm90IGFsbG9jYXRlIG1lbW9yeVxuIiwgQ01EX05BTUVfU1RSSU5HKTsNCj4gPiA+ ID4+ICsgICAgICByZXR1cm4gU0hFTExfQUJPUlRFRDsNCj4gPiA+ID4+ICsgICAgfQ0KPiA+ID4g Pj4gKw0KPiA+ID4gPj4gKyAgICAvLyBDb25jYXRlbmF0ZSBwYXJhbWV0ZXJzIGFuZCBmb3JtIHRm dHAgY29tbWFuZCBzdHJpbmcNCj4gPiA+ID4+ICsgICAgU3RyQ2F0UyAoVGZ0cENtZCwgQ21kTGVu IC8gc2l6ZW9mKENIQVIxNiksIFRGVFBfQ01EX1NUUklORyk7DQo+ID4gPiA+PiArICAgIFN0ckNh dFMgKFRmdHBDbWQsIENtZExlbiAvIHNpemVvZihDSEFSMTYpLCAoQ0hBUjE2ICopSG9zdCk7DQo+ ID4gPiA+PiArICAgIC8vIEluc2VydCBzcGFjZQ0KPiA+ID4gPj4gKyAgICBTdHJDYXRTIChUZnRw Q21kLCBDbWRMZW4gLyBzaXplb2YoQ0hBUjE2KSwgU1BBQ0VfU1RSSU5HKTsNCj4gPiA+ID4+ICsg ICAgU3RyQ2F0UyAoVGZ0cENtZCwgQ21kTGVuIC8gc2l6ZW9mKENIQVIxNiksIChDSEFSMTYNCj4g PiA+ICopUmVtb3RlRmlsZVBhdGgpOw0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgICBSdW5TaGVs bENvbW1hbmQgKFRmdHBDbWQsICZTdGF0dXMpOw0KPiA+ID4gPj4gKyAgICBGcmVlUG9vbCAoVGZ0 cENtZCk7DQo+ID4gPiA+PiArICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiA+ID4gPj4g KyAgICAgIFByaW50IChMIiVzOiBFcnJvciB3aGlsZSBwZXJmb3JtaW5nIHRmdHAgY29tbWFuZFxu IiwNCj4gPiA+IENNRF9OQU1FX1NUUklORyk7DQo+ID4gPiA+PiArICAgICAgcmV0dXJuIFNIRUxM X0FCT1JURUQ7DQo+ID4gPiA+PiArICAgIH0NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIH0gZWxz ZSB7DQo+ID4gPiA+PiArICAgIFByaW50IChMIiVzOiBCb3RoIC1mIGFuZCAtdCBmbGFnIHNwZWNp ZmllZCwgcGxlYXNlIGNob29zZSBvbmVcbiIsDQo+ID4gPiA+PiArICAgICAgQ01EX05BTUVfU1RS SU5HKTsNCj4gPiA+ID4+ICsgICAgcmV0dXJuIFNIRUxMX0FCT1JURUQ7DQo+ID4gPiA+PiArICB9 DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICAvLyBDaGVjayBpbWFnZSBjaGVja3N1bSBhbmQgbWFn aWMNCj4gPiA+ID4+ICsgIFN0YXR1cyA9IENoZWNrRmlybXdhcmVJbWFnZSAoRmlsZVRvV3JpdGUp Ow0KPiA+ID4gPj4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ID4gPiA+PiArICAgIFBy aW50IChMIiVzOiBXcm9uZyBmaXJtd2FyZSBJbWFnZVxuIiwgQ01EX05BTUVfU1RSSU5HKTsNCj4g PiA+ID4+ICsgICAgcmV0dXJuIFNIRUxMX0FCT1JURUQ7DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+ PiArDQo+ID4gPiA+PiArICAvLyBQcm9iZSBzcGkgYnVzDQo+ID4gPiA+PiArICBSdW5TaGVsbENv bW1hbmQgKFNGX1BST0JFX0NNRF9TVFJJTkcsICZTdGF0dXMpOw0KPiA+ID4gPj4gKyAgaWYgKEVG SV9FUlJPUihTdGF0dXMpKSB7DQo+ID4gPiA+PiArICAgIFByaW50IChMIiVzOiBFcnJvciB3aGls ZSBwZXJmb3JtaW5nIHNmIHByb2JlXG4iLA0KPiA+ID4gQ01EX05BTUVfU1RSSU5HKTsNCj4gPiA+ ID4+ICsgICAgcmV0dXJuIFNIRUxMX0FCT1JURUQ7DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+PiAr DQo+ID4gPiA+PiArICAvLyBBbGxvY2F0ZSBidWZmZXIgZm9yIHNmIGNvbW1hbmQgc3RyaW5nDQo+ ID4gPiA+PiArICBDbWRMZW4gPSBTdHJTaXplIChTRl9XUklURV9DTURfU1RSSU5HKSArIFN0clNp emUgKEZpbGVUb1dyaXRlKQ0KPiArDQo+ID4gPiA+PiArICAgIFN0clNpemUgKFNQQUNFX1NUUklO RykgKyBTdHJTaXplIChTRl9MT0FEX0FERFJfU1RSSU5HKTsNCj4gPiA+ID4+ICsgIFNmQ21kID0g KENIQVIxNiAqKSBBbGxvY2F0ZVplcm9Qb29sIChDbWRMZW4gKyBzaXplb2YoQ0hBUjE2KSk7DQo+ ID4gPiA+PiArICBpZiAoU2ZDbWQgPT0gTlVMTCkgew0KPiA+ID4gPj4gKyAgICBQcmludCAoTCIl czogQ2Fubm90IGFsbG9jYXRlIG1lbW9yeVxuIik7DQo+ID4gPiA+PiArICAgIHJldHVybiBTSEVM TF9BQk9SVEVEOw0KPiA+ID4gPj4gKyAgfQ0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgLy8gQ29u Y2F0ZW5hdGUgcGFyYW1ldGVycyBhbmQgZm9ybSBjb21tYW5kIHN0cmluZw0KPiA+ID4gPj4gKyAg U3RyQ2F0UyAoU2ZDbWQsIENtZExlbiAvIHNpemVvZihDSEFSMTYpLA0KPiBTRl9XUklURV9DTURf U1RSSU5HKTsNCj4gPiA+ID4+ICsgIFN0ckNhdFMgKFNmQ21kLCBDbWRMZW4gLyBzaXplb2YoQ0hB UjE2KSwgKENIQVIxNiAqKUZpbGVUb1dyaXRlKTsNCj4gPiA+ID4+ICsgIFN0ckNhdFMgKFNmQ21k LCBDbWRMZW4gLyBzaXplb2YoQ0hBUjE2KSwgU1BBQ0VfU1RSSU5HKTsNCj4gPiA+ID4+ICsgIFN0 ckNhdFMgKFNmQ21kLCBDbWRMZW4gLyBzaXplb2YoQ0hBUjE2KSwNCj4gU0ZfTE9BRF9BRERSX1NU UklORyk7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICAvLyBVcGRhdGUgZmlybXdhcmUgaW1hZ2Ug aW4gZmxhc2gNCj4gPiA+ID4+ICsgIFJ1blNoZWxsQ29tbWFuZCAoU2ZDbWQsICZTdGF0dXMpOw0K PiA+ID4gPj4gKyAgRnJlZVBvb2wgKFNmQ21kKTsNCj4gPiA+ID4+ICsgIGlmIChFRklfRVJST1Io U3RhdHVzKSkgew0KPiA+ID4gPj4gKyAgICBQcmludCAoTCIlczogRXJyb3Igd2hpbGUgcGVyZm9y bWluZyBzZiB1cGRhdGVcbiIsDQo+ID4gPiBDTURfTkFNRV9TVFJJTkcpOw0KPiA+ID4gPj4gKyAg ICByZXR1cm4gU0hFTExfQUJPUlRFRDsNCj4gPiA+ID4+ICsgIH0NCj4gPiA+ID4+ICsNCj4gPiA+ ID4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ID4+ICt9DQo+ID4gPiA+PiArDQo+ID4g PiA+PiArRUZJX1NUQVRVUw0KPiA+ID4gPj4gK0VGSUFQSQ0KPiA+ID4gPj4gK1NoZWxsRlVwZGF0 ZUNvbW1hbmRDb25zdHJ1Y3RvciAoDQo+ID4gPiA+PiArICBJTiBFRklfSEFORExFICAgICAgICBJ bWFnZUhhbmRsZSwNCj4gPiA+ID4+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJs ZQ0KPiA+ID4gPj4gKyAgKQ0KPiA+ID4gPj4gK3sNCj4gPiA+ID4+ICsgIEVGSV9TVEFUVVMgU3Rh dHVzOw0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgZ1NoZWxsRlVwZGF0ZUhpaUhhbmRsZSA9IE5V TEw7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBnU2hlbGxGVXBkYXRlSGlpSGFuZGxlID0gSGlp QWRkUGFja2FnZXMgKA0KPiA+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmdTaGVs bEZVcGRhdGVIaWlHdWlkLCBnSW1hZ2VIYW5kbGUsDQo+ID4gPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICBVZWZpU2hlbGxGVXBkYXRlQ29tbWFuZExpYlN0cmluZ3MsIE5VTEwNCj4gPiA+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+PiArICBpZiAoZ1NoZWxs RlVwZGF0ZUhpaUhhbmRsZSA9PSBOVUxMKSB7DQo+ID4gPiA+PiArICAgIFByaW50IChMIiVzOiBD YW5ub3QgYWRkIEhpaSBwYWNrYWdlXG4iLCBDTURfTkFNRV9TVFJJTkcpOw0KPiA+ID4gPj4gKyAg ICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiA+ID4+ICsgIH0NCj4gPiA+ID4+ICsNCj4g PiA+ID4+ICsgIFN0YXR1cyA9IFNoZWxsQ29tbWFuZFJlZ2lzdGVyQ29tbWFuZE5hbWUgKA0KPiA+ ID4gPj4gKyAgICAgQ01EX05BTUVfU1RSSU5HLCBTaGVsbENvbW1hbmRSdW5GVXBkYXRlLA0KPiA+ ID4gU2hlbGxDb21tYW5kR2V0TWFuRmlsZU5hbWVGVXBkYXRlLA0KPiA+ID4gPj4gKyAgICAgMCwg Q01EX05BTUVfU1RSSU5HLCBUUlVFICwgZ1NoZWxsRlVwZGF0ZUhpaUhhbmRsZSwNCj4gPiA+ID4+ ICsgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFVF9IRUxQX0ZVUERBVEUpDQo+ID4gPiA+PiArICAg ICApOw0KPiA+ID4gPj4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ID4gPiA+PiArICAg IFByaW50IChMIiVzOiBFcnJvciB3aGlsZSByZWdpc3RlcmluZyBjb21tYW5kXG4iLA0KPiA+ID4g Q01EX05BTUVfU1RSSU5HKTsNCj4gPiA+ID4+ICsgICAgcmV0dXJuIFNIRUxMX0FCT1JURUQ7DQo+ ID4gPiA+PiArICB9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4gPiA+PiArfQ0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+ID4+ ICtFRklBUEkNCj4gPiA+ID4+ICtTaGVsbEZVcGRhdGVDb21tYW5kRGVzdHJ1Y3RvciAoDQo+ID4g PiA+PiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ID4+ICsgIElO IEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiA+ID4gPj4gKyAgKQ0KPiA+ID4gPj4g K3sNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIGlmIChnU2hlbGxGVXBkYXRlSGlpSGFuZGxlICE9 IE5VTEwpIHsNCj4gPiA+ID4+ICsgICAgSGlpUmVtb3ZlUGFja2FnZXMgKGdTaGVsbEZVcGRhdGVI aWlIYW5kbGUpOw0KPiA+ID4gPj4gKyAgfQ0KPiA+ID4gPj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiA+ID4gPj4gK30NCj4gPiA+ID4+IGRpZmYgLS1naXQgYS9BcHBsaWNhdGlvbnMvRmlybXdh cmVVcGRhdGUvRlVwZGF0ZS5pbmYNCj4gPiA+IGIvQXBwbGljYXRpb25zL0Zpcm13YXJlVXBkYXRl L0ZVcGRhdGUuaW5mDQo+ID4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPj4gaW5k ZXggMDAwMDAwMC4uNTNiNTMwNQ0KPiA+ID4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPj4gKysr IGIvQXBwbGljYXRpb25zL0Zpcm13YXJlVXBkYXRlL0ZVcGRhdGUuaW5mDQo+ID4gPiA+PiBAQCAt MCwwICsxLDY4IEBADQo+ID4gPiA+PiArIw0KPiA+ID4gPj4gKyMgTWFydmVsbCBCU0QgTGljZW5z ZSBPcHRpb24NCj4gPiA+ID4+ICsjDQo+ID4gPiA+PiArIyBJZiB5b3UgcmVjZWl2ZWQgdGhpcyBG aWxlIGZyb20gTWFydmVsbCwgeW91IG1heSBvcHQgdG8gdXNlLA0KPiByZWRpc3RyaWJ1dGUNCj4g PiA+ID4+ICsjIGFuZC9vciBtb2RpZnkgdGhpcyBGaWxlIHVuZGVyIHRoZSBmb2xsb3dpbmcgbGlj ZW5zaW5nIHRlcm1zLg0KPiA+ID4gPj4gKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+ID4gPiA+PiArIyBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMNCj4gYXJlDQo+ID4gPiBtZXQ6DQo+ID4gPiA+PiArIw0KPiA+ID4gPj4gKyMgKiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0K PiA+ID4gbm90aWNlLA0KPiA+ID4gPj4gKyMgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gPiA+ID4+ICsjDQo+ID4gPiA+PiArIyAqIFJlZGlz dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gY29w eXJpZ2h0DQo+ID4gPiA+PiArIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQo+ID4gPiA+PiArIyBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gZGlzdHJpYnV0aW9u Lg0KPiA+ID4gPj4gKyMNCj4gPiA+ID4+ICsjICogTmVpdGhlciB0aGUgbmFtZSBvZiBNYXJ2ZWxs IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycw0KPiBtYXkNCj4gPiA+IGJlDQo+ID4g PiA+PiArIyB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g dGhpcyBzb2Z0d2FyZQ0KPiA+ID4gd2l0aG91dA0KPiA+ID4gPj4gKyMgc3BlY2lmaWMgcHJpb3Ig d3JpdHRlbiBwZXJtaXNzaW9uLg0KPiA+ID4gPj4gKyMNCj4gPiA+ID4+ICsjIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiA+ID4gQ09OVFJJ QlVUT1JTICJBUyBJUyINCj4gPiA+ID4+ICsjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB UlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiA+ID4gTElNSVRFRCBUTywgVEhFDQo+ ID4gPiA+PiArIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBDQo+ID4gPiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ID4gPiA+PiArIyBESVND TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SDQo+ID4gPiBD T05UUklCVVRPUlMgQkUgTElBQkxFDQo+ID4gPiA+PiArIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCj4gPiA+IENPTlNFUVVFTlRJ QUwNCj4gPiA+ID4+ICsjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ Uk9DVVJFTUVOVCBPRg0KPiA+ID4gU1VCU1RJVFVURSBHT09EUyBPUg0KPiA+ID4gPj4gKyMgU0VS VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPiA+ID4g SU5URVJSVVBUSU9OKSBIT1dFVkVSDQo+ID4gPiA+PiArIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQo+IENPTlRSQUNULA0KPiA+ID4gU1RSSUNUIExJ QUJJTElUWSwNCj4gPiA+ID4+ICsjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkgQVJJU0lORyBJTg0KPiBBTlkNCj4gPiA+IFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiA+ ID4gPj4gKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ TElUWSBPRiBTVUNIDQo+ID4gPiBEQU1BR0UuDQo+ID4gPiA+PiArIw0KPiA+ID4gPj4gKw0KPiA+ ID4gPj4gK1tEZWZpbmVzXQ0KPiA+ID4gPj4gKyAgSU5GX1ZFUlNJT04gPSAweDAwMDEwMDA2DQo+ ID4gPiA+PiArICBCQVNFX05BTUUgPSBVZWZpU2hlbGxGVXBkYXRlQ29tbWFuZExpYg0KPiA+ID4g Pj4gKyAgRklMRV9HVUlEID0gNDcwMjkyYjItOTI2Yi00ZWQ4LTgwODAtYmU3YTI2MGRiNjI3DQo+ ID4gPiA+PiArICBNT0RVTEVfVFlQRSA9IFVFRklfQVBQTElDQVRJT04NCj4gPiA+ID4+ICsgIFZF UlNJT05fU1RSSU5HID0gMC4xDQo+ID4gPiA+PiArICBMSUJSQVJZX0NMQVNTID0gTlVMTHxVRUZJ X0FQUExJQ0FUSU9OIFVFRklfRFJJVkVSDQo+ID4gPiA+PiArICBDT05TVFJVQ1RPUiA9IFNoZWxs RlVwZGF0ZUNvbW1hbmRDb25zdHJ1Y3Rvcg0KPiA+ID4gPj4gKyAgREVTVFJVQ1RPUiA9IFNoZWxs RlVwZGF0ZUNvbW1hbmREZXN0cnVjdG9yDQo+ID4gPiA+PiArDQo+ID4gPiA+PiArW1NvdXJjZXNd DQo+ID4gPiA+PiArICBGVXBkYXRlLmMNCj4gPiA+ID4+ICsgIEZVcGRhdGUudW5pDQo+ID4gPiA+ PiArDQo+ID4gPiA+PiArW1BhY2thZ2VzXQ0KPiA+ID4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMN Cj4gPiA+ID4+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+ID4gPj4gKyAgTWRlTW9kdWxl UGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+ID4+ICsgIE9wZW5QbGF0Zm9ybVBrZy9QbGF0Zm9y bXMvTWFydmVsbC9NYXJ2ZWxsLmRlYw0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gPiA+ID4+ICsgIFVlZmlMaWINCj4gPiA+ID4+ICsgIFVlZmlCb290U2VydmljZXNU YWJsZUxpYg0KPiA+ID4gPj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+ID4gPj4gKyAgQmFz ZUxpYg0KPiA+ID4gPj4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ID4gPj4gKyAgRGVidWdMaWINCj4g PiA+ID4+ICsgIFNoZWxsQ29tbWFuZExpYg0KPiA+ID4gPj4gKyAgU2hlbGxMaWINCj4gPiA+ID4+ ICsgIFVlZmlMaWINCj4gPiA+ID4+ICsgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KPiA+ ID4gPj4gKyAgUGNkTGliDQo+ID4gPiA+PiArICBIaWlMaWINCj4gPiA+ID4+ICsgIEZpbGVIYW5k bGVMaWINCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICtbR3VpZHNdDQo+ID4gPiA+PiArICBnU2hlbGxG VXBkYXRlSGlpR3VpZA0KPiA+ID4gPj4gZGlmZiAtLWdpdCBhL0FwcGxpY2F0aW9ucy9GaXJtd2Fy ZVVwZGF0ZS9GVXBkYXRlLnVuaQ0KPiA+ID4gYi9BcHBsaWNhdGlvbnMvRmlybXdhcmVVcGRhdGUv RlVwZGF0ZS51bmkNCj4gPiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+PiBpbmRl eA0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE0 M2MwNTgwZjFkMWVmOGNlNGZlNjE5YTENCj4gPiA+IGRmMWNlMzgwYWRmMmMwDQo+ID4gPiA+PiBH SVQgYmluYXJ5IHBhdGNoDQo+ID4gPiA+PiBsaXRlcmFsIDU4MzgNCj4gPiA+ID4+DQo+ID4gPg0K PiB6Y21kNnI/TjF2PTVYU2QmclR6fm1AK0ZPdUsmekBCWGRCNUc2T2hiSGVJXygmcykqUD9FWDY+ TERkTH0NCj4gPiA+IFJgfX00WQ0KPiA+ID4gPj4gel9GaW0pQjJ8aGBfVEJFeSZPWTxaJWtKTDR8 RSM4R1UtDQo+ID4gPiBrOEVgWCtWTE1ZPkc0WF9oQUdFUFlKI1JIVWNze1o5OEUNCj4gPiA+ID4+ DQo+ID4gPg0KPiB6KHB2Z0h7aUxWZWJTI08jKEBGWkl0NEtUUFQjX2cxSkoqfUojJE1QSEBBXyh3 KTYwWiplJEJCUHNaNShESCUNCj4gPiA+IFRNdQ0KPiA+ID4gPj4gekk4UnNsRlZlbm5ncipwfmxU UCpLUkAkJDFwR2w0cDZHSmpxJnM+Tm44ZWdPPi0NCj4gPiA+IDlNUzBRXntTVnNydT9PS1VZc14N Cj4gPiA+ID4+IHpuaE4hOytTcmM4YjNHTkIxMD17WCk3VWk2XipsKSpeYlVJcWpYVCR5Um1zb0h4 flpPIUpULQ0KPiA+ID4gbGJATGJ5bnhOXktgDQo+ID4gPiA+PiB6SW5ea2J5aHR9MWRvSmIrd0s1 O2s9TndPayVsUkJFI08zUzx3eT5peCY0dEZvLQ0KPiA+ID4gcHJXR0c5VDxNVVdFdG4lKjVIMQ0K PiA+ID4gPj4NCj4gPiA+DQo+IHpTcX47R2ZnZXl1OCRHYTxaM2Mxbnw4cnZtbyFFRyhle2BZP0pN aDx+ZE1ATz5pQ1cmbkpaTn5Cbn5fR3INCj4gPiA+IEpHJElqDQo+ID4gPiA+Pg0KPiA+ID4NCj4g emQ+JTdSckU4d24/PDIwenlYeTUhdCVzT0gqTSZ0fG9oeFBxQ2woVk1wdjFQaFgyd0dxXlJYZlh5 TzNwDQo+ID4gPiA2R28jTWMNCj4gPiA+ID4+DQo+IHoyWGRtPFMqcWZUPU52dTZnM3NyO21lfiZ7 OE81VGdAK2NsRHkxKSFtdnIyQnAleUVBVlEqUWE8Xy0NCj4gPiA+IFFpYnt2TH14DQo+ID4gPiA+ Pg0KPiA+ID4NCj4gekVZQzxFPThOblBNQWR0cE1jM3hwfE5ydDhuU181JUVYdH49OygwNnxrN093 dlF5cF8mTUFtdUxBbDYoDQo+ID4gPiBIeGtWLU4NCj4gPiA+ID4+IHpFVDhEPGxmMXF0T0NrZF5n WUR8JWQ2RGFHO0VGckctDQo+ID4gPiA0aXk/P1JxXztpaTExeXBrNnIoKzJmVkthbnBBQm9IPU52 DQo+ID4gPiA+PiB6PCZqI2dudkNSNClaN21iYU9mNC1XMTVOI2xra2NMTSthdmZSYTdDYiQ8LQ0K PiA+ID4gKXg2bDUpUm5+WCRUVUs0VlRrP1dfQA0KPiA+ID4gPj4NCj4gPiA+DQo+IHphM2ZwMVZn PGB5PWF4bWBsfnVOcHc0ZHJYeTJBdGVVTXJjYEQ7XmFoU0hVYVUoRGN6VFpFR3pwQzBBPHcrDQo+ ID4gPiBlKlc5DQo+ID4gPiA+PiB6bHNjK2FKQHQ3MWZtLXxOamFyLVAtQmtaWmRhSGolQkd1S34x Tjk2ZkBtaFVEXj0rJUtafUoxdi0NCj4gPiA+IEkzb0ppUl8qdg0KPiA+ID4gPj4gemtsamQhZGZM fUJ2Iyk0WT8jI0tPeU5gZVlvfHZ6ZmUlQ3g4REB+Ry0NCj4gPiA+ICRuVURSdWUpUCZeYUMzO3dC RktJbHBTZzUNCj4gPiA+ID4+DQo+ID4gPg0KPiB6TzcyaU5jeiRpWWopQUQkSHs5c2kpbyp5RzRT Y018VlFZT2gmQEd5ZW95MysjP01sbCl2dUB2Xj5CIzBDISMNCj4gPiA+IFhzSg0KPiA+ID4gPj4N Cj4gPiA+DQo+IHpmfFZfc2FxciU7RW5AYF4zZllEP3UlcypPZVFWS3NzTk1zfmxeVFU0eW5xTW1P MCVAMUNsRzleK1ENCj4gPiA+IFFTR3s7P0EjDQo+ID4gPiA+PiB6LXteLQ0KPiA+ID4NCj4gUUBI KilGeTBWcHZKaTBHU0s/dnYwe0JtRHpOUkQwRGp4PXhSUFJuaG9gVip2fT9nfEdTZ0skd19TOHM/ cw0KPiA+ID4gPj4gekBQWldDUW5vWGE4TjckKz0tDQo+ID4gPiB0SHZZYGl0T0RwSHZHT314MSNB NlpDcU4yNUI1MmpVOFJQWXViSiRCTzMqLW9pUk8NCj4gPiA+ID4+IHo7N29mPWw8SF55aUFSVGVD ZWpNY3pPUVJqe2xQQTEyYk9oUkooY05hIWA3RW5MX1pPQnM4LQ0KPiA+ID4gSmAjU1p2XjlrPCRY DQo+ID4gPiA+Pg0KPiA+ID4NCj4gemN4Kjh+YGljM3tZPlo1VGQya0dMOWcxMTdrKkRteSQ+Ynh3 QlZ6RDxTOUFFUjxhMHpZKHBCR2p6SlA8d2I7fg0KPiA+ID4gMGoNCj4gPiA+ID4+DQo+ID4gPg0K PiB6YXQ0NilOSGc+X0JtYlZ5I0ElTUwmVjc4cThGaG5yJDxiQlU9OVlVXjg3fW9FZEMoSypBajBv ZDJFNT4tDQo+ID4gPiBzUldNWg0KPiA+ID4gPj4NCj4gPiA+DQo+IHpOYmxobjkqOE1nVU9PVjZx QmM8bCspX0xtN0R2QF56Tik9d2cwRSlIZ158Y2s9RF4xdCNSYihEQnlqRioNCj4gPiA+IGhIa0Zg DQo+ID4gPiA+PiB6O0h1WV85QnRIfWRZdERLYHMrUiZ0e08tDQo+ID4gPiAxdzM+Y1JQd3JiIVkl akB+ZztrZEc4NWIrezN5ViF3Nkl5Mz5xUGZ6Wg0KPiA+ID4gPj4gelh7OW9qVGBlbzVwTHNtMC1k aHxEKHxoeExVcGVxeis+O0JRUzQybnEkfmRtSWZ9ZCY1Q0pMVy0NCj4gTUhMdS0NCj4gPiA+IHU/ eDc/DQo+ID4gPiA+PiB6ZE9WaTI/O0Y8Q3gxeU9RTE51LQ0KPiA+ID4gSDB9ZzlhPn1hTzhkdG9v flFYfTM7eyslcXlgbDtpQEhQeCl3ZFNCUGF1QXgzKA0KPiA+ID4gPj4NCj4gej5ebmYlS0UpMSZh NDBTfiQrND9wUHMxTDU4SCFUNXopRXZxYEJKdnppZElqUG1wfGw1e1E4Uz5sc3pyYFFkcmBBDQo+ ID4gPiA+Pg0KPiA+ID4NCj4gemVQSFo7T3N+P1BsMGI1OWxHfkVSeDM4P2xYKUU/O2kkKlRQNCho MFhrM21qVUpUI1hfJT9uOF9YMGdpbjwoKn5oDQo+ID4gPiA+Pg0KPiA+ID4NCj4genZEdGdGQDRT KGhJaSgrfm1HfEQrT1gwYnVKPyZeKyk+RG0wPTc2bmdiaFExOXJlSiVTKTxTK15vbzRzeEpKDQo+ ID4gPiBubVkNCj4gPiA+ID4+IHpHWTYlYGtWZ2BnP20kdVhxYT82JXRvY3ZtT1RJWlF2VEohdjFS Q2EhSTAtDQo+ID4gPiBnayhJZCRAdWlEN0BpcW5EVGFJbzgrDQo+ID4gPiA+PiB6eVY+KG43THNA REtGQjxGcU83Vi0NCj4gPiA+IHhwdUBpTjM2SFRkQGc3Nmk2WmJ+Kk9rN1J0KmRmVDdib0hteVV0 cD07aTtLKA0KPiA+ID4gPj4gem9eZy0NCj4gPiA+DQo+IFdARm5PWHpFQGxMcyp6RXhHNU8xbiQ0 RTBpM1ZqYDFsYT13fmQqUnc2dCkqJSM4cUpBYGB1dEk9JmdYYXgNCj4gPiA+ID4+IHp8RmhGJEgj Ym4tZCF0QztvYms5Z3NFI2FaVzdgcGQqTkNeQ14hSyR3djZ0LUgtDQo+IG9eS1g1Jmd+ayg3cWJM LQ0KPiA+ID4gQUghJQ0KPiA+ID4gPj4gejJAcXpGNilrPlZwMn11d1lrVmQxSClQPm9UQ3ZEUWYz cjlydEMtDQo+ID4gPiBtRnZ5WH1zUjhQNmc3cV4qYXgpRnw4VUhydCUNCj4gPiA+ID4+IFFIeUo7 YmBmNk5YPkZRYlo5fSpUYDAwMDAwDQo+ID4gPiA+Pg0KPiA+ID4gPj4gbGl0ZXJhbCAwDQo+ID4g PiA+PiBIY21WP2QwMDAwMQ0KPiA+ID4gPj4NCj4gPiA+ID4+IGRpZmYgLS1naXQgYS9QbGF0Zm9y bXMvTWFydmVsbC9NYXJ2ZWxsLmRlYw0KPiA+ID4gYi9QbGF0Zm9ybXMvTWFydmVsbC9NYXJ2ZWxs LmRlYw0KPiA+ID4gPj4gaW5kZXggZTYzYWRkNC4uZjlkMjY2MCAxMDA2NDQNCj4gPiA+ID4+IC0t LSBhL1BsYXRmb3Jtcy9NYXJ2ZWxsL01hcnZlbGwuZGVjDQo+ID4gPiA+PiArKysgYi9QbGF0Zm9y bXMvTWFydmVsbC9NYXJ2ZWxsLmRlYw0KPiA+ID4gPj4gQEAgLTU0LDYgKzU0LDcgQEANCj4gPiA+ ID4+DQo+ID4gPiA+PiAgICBnU2hlbGxFZXByb21IaWlHdWlkID0geyAweGIyZjRjNzE0LCAweDE0 N2YsIDB4NGZmNywgeyAweDgyLCAweDFiLA0KPiAweGNlLA0KPiA+ID4gMHg3YiwgMHg5MSwgMHg3 ZiwgMHg1ZiwgMHgyZiB9IH0NCj4gPiA+ID4+ICAgIGdTaGVsbFNmSGlpR3VpZCA9IHsgMHgwM2E2 Nzc1NiwgMHg4Y2RlLCAweDQ2MzgsIHsgMHg4MiwgMHgzNCwgMHg0YSwNCj4gMHgwZiwNCj4gPiA+ IDB4NmQsIDB4NTgsIDB4ODEsIDB4MzkgfSB9DQo+ID4gPiA+PiArICBnU2hlbGxGVXBkYXRlSGlp R3VpZCA9IHsgMHg5YjVkMjE3NiwgMHg1OTBhLCAweDQ5ZGIsIHsgMHg4OSwgMHg1ZCwNCj4gPiA+ IDB4NGEsIDB4NzAsIDB4ZmUsIDB4YWQsIDB4YmUsIDB4MjQgfSB9DQo+ID4gPiA+Pg0KPiA+ID4g Pj4gIFtQY2RzRml4ZWRBdEJ1aWxkLmNvbW1vbl0NCj4gPiA+ID4+ICAjTVBQDQo+ID4gPiA+PiAt LQ0KPiA+ID4gPj4gMS44LjMuMQ0KPiA+ID4gPj4NCg==