From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.2478.1571207432884038436 for ; Tue, 15 Oct 2019 23:30:33 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: ray.ni@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Oct 2019 23:30:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,302,1566889200"; d="scan'208";a="199961221" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga006.jf.intel.com with ESMTP; 15 Oct 2019 23:30:30 -0700 Received: from fmsmsx154.amr.corp.intel.com (10.18.116.70) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 15 Oct 2019 23:30:30 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX154.amr.corp.intel.com (10.18.116.70) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 15 Oct 2019 23:30:30 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.166]) by SHSMSX151.ccr.corp.intel.com ([10.239.6.50]) with mapi id 14.03.0439.000; Wed, 16 Oct 2019 14:30:28 +0800 From: "Ni, Ray" To: "Kubacki, Michael A" , "devel@edk2.groups.io" CC: "Chaganty, Rangasai V" Subject: Re: [edk2-platforms][PATCH V1 1/1] IntelSiliconPkg/BootMediaLib: Reduce library API Thread-Topic: [edk2-platforms][PATCH V1 1/1] IntelSiliconPkg/BootMediaLib: Reduce library API Thread-Index: AQHVgtYIOTkrtkYpnka2pkFh7v6JB6da6TAggAALuWCAAC6TEIAAv33wgADkFcA= Date: Wed, 16 Oct 2019 06:30:27 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C3249F2@SHSMSX104.ccr.corp.intel.com> References: <20191014212616.18376-1-michael.a.kubacki@intel.com> <734D49CCEBEEF84792F5B80ED585239D5C322E81@SHSMSX104.ccr.corp.intel.com> <734D49CCEBEEF84792F5B80ED585239D5C32317E@SHSMSX104.ccr.corp.intel.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 Return-Path: ray.ni@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiBNeSBjb25jZXJucyB3aXRoIHRoYXQgYXBwcm9hY2g6DQo+IA0KPiAxLiBJbiBnZW5lcmFsLCBJ IGJlbGlldmUgaXQgaXMgYmV0dGVyIGlmIHRoZSBsaWJyYXJ5IHJlYWRzIHRoZSB2YWx1ZSBvbmNl IGFuZA0KPiBjYWNoZXMgaXQuIFRoZSBmaXJtd2FyZSBib290IG1lZGlhIGlzIGZpeGVkIGFmdGVy IHBvd2VyLW9uIGJ5IG5hdHVyZSBhbmQgaW4NCj4gc29tZSBwbGF0Zm9ybXMsIGJvb3QgbWVkaWEg aW5mb3JtYXRpb24gbWF5IGJlIHByb3ZpZGVkIHRvIHRoZSBJQkIgaW4gYQ0KPiB0ZW1wb3Jhcnkg U1JBTSAob3Igb3RoZXIgdm9sYXRpbGUgbWVtb3J5KSBlYXJseSBpbiB0aGUgYm9vdCBmbG93IHRo YXQgaXMNCj4gdGVtcG9yYXJ5IChlLmcuIG5vdCBhY2Nlc3NpYmxlIGFmdGVyIG1haW4gbWVtb3J5 IGluaXRpYWxpemF0aW9uKS4gSGVyZSB0aGUNCj4gSE9CIHRvIGdsb2JhbCB2YXJpYWJsZSB0cmFu c2l0aW9uIGluIERYRSwgUnVudGltZSBEWEUsIFNNTSBpcyBhIHRyYW5zcGFyZW50DQo+IG1lY2hh bmlzbSB0byB0aGUgbGlicmFyeSBjb25zdW1lcnMgdG8gZ2V0IHRoZSBib290IG1lZGlhIGluZm9y bWF0aW9uDQo+IHJlZ2FyZGxlc3Mgb2YgZWFybHkgYm9vdCBtZW1vcnkgcHJvcGVydGllcy4NCg0K SSBqdXN0IGZlZWwgdGhhdCBoYXZpbmcgdHdvIGxpYnJhcnkgaW5zdGFuY2VzIGluY3JlYXNlcyB0 aGUgY29tcGxleGl0eS4NClRoZXJlIHdlcmUgYWxyZWFkeSBhcmd1bWVudHMgYXJvdW5kIEVES0lJ IGxpa2UgdGhlcmUgYXJlIHNvIG1hbnkgaW5zdGFuY2VzDQpmb3IgYSBsaWJyYXJ5IGNsYXNzIGFu ZCBwZW9wbGUgZG9uJ3Qga25vdyB3aGljaCBvbmUgaXMgYmVpbmcgdXNlZC4NCkJ1dCBpZiB5b3Ug aW5zaXN0LCBJIGFtIG9rIHdpdGggdGhhdC4gUmVtb3ZpbmcgdW5uZWNlc3NhcnkgQVBJcyByZXNv bHZlZCBtb3N0DQpvZiBteSBjb25jZXJucy4NCg0KPiANCj4gMi4gRm9yY2luZyBsaWJyYXJ5IGNv bnN1bWVycyB0byBjYWNoZSBwdXRzIHVubmVjZXNzYXJ5IGJ1cmRlbiBvbiBhIGxhcmdlDQo+IG51 bWJlciBvZiBsaWJyYXJ5IGNvbnN1bWVycyB0bzoNCj4gICAxLmEuIFVuZGVyc3RhbmQgdGhlIGxp YnJhcnkgaW1wbGVtZW50YXRpb24gKGxhY2sgb2YgZW5jYXBzdWxhdGlvbikuDQoNCkluIGZhY3Qg dGhlIHZhbHVlIG9mIHNpbmdsZSBsaWJyYXJ5IGluc3RhbmNlIEkgY2FuIHNlZSBpcyBjYWxsZXIg ZG9lc24ndCBuZWVkIHRvIGRpZw0KaW50byB0aGUgZGV0YWlscyBvZiB0aGUgbGlicmFyeSBpbXBs ZW1lbnRhdGlvbi4gQWxsIHRoZXkgbmVlZCB0byBrbm93IGlzIHRoZSBsaWJyYXJ5DQpnZXRzIHRo ZSBpbmZvIGZyb20gSE9CIGV2ZXJ5IHRpbWUgdGhlIEFQSSBpcyBjYWxsZWQuDQpXaXRoIHRoZSB0 d28gbGliIGluc3RhbmNlcywgY29uc3VtZXJzIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGRpZmZl cmVudCBpbXBsZW1lbnRhdGlvbnMuDQpJIGFtIG5vdCB1c2luZyB0aGlzIHRvIHN1cHBvcnQgbXkg cG9pbnQuIEp1c3QgcHJvdmlkaW5nIG15IHRob3VnaHQuDQoNCj4gICAxLmIuIFVuZGVyc3RhbmQg dGhlIG51YW5jZXMgb2YgdGhlaXIgZHJpdmVyIHR5cGUgaW4gcmVsYXRpb24gdG8gdGhlIGxpYnJh cnkNCj4gaW1wbGVtZW50YXRpb24uDQoNCkkgdGhpbmsgaGF2aW5nIGEgc2luZ2xlIGluc3RhbmNl IGF2b2lkcyBEU0Mgd3JpdGVycyB0byBzdXBwbHkgdHdvIGluc3RhbmNlcw0KZm9yIGRpZmZlcmVu dCBtb2R1bGVzLiBNaWdodCBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0IHlvdSB0aGlua/CfmIoNCg0K DQo+ICAgMS5jLiBQZXJmb3JtIHRoaXMgZXZhbHVhdGlvbiBldmVyeSB0aW1lIHRoZSBsaWJyYXJ5 IGlzIHVzZWQuDQoNCkFncmVlLg0KDQo+ICAgMS5kLiBJbXBsZW1lbnQgb3ZlcmhlYWQgdG8gbWFu YWdlIHRoZSBkYXRhIGluIGEgZ2xvYmFsIHZhcmlhYmxlIHdoZW4gdGhpcw0KPiBjb3VsZCBhdXRv bWF0aWNhbGx5IGJlIGxpbmtlZCBieSB0aGUgbGlicmFyeS4NClNvbWUgY2FsbGVycyBtYXkgbm90 IGJlIGF3YXJlIG9mIHRoZSBsaWIgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU28gdGhleSBtYXkN CnN0aWxsIGNob29zZSB0byBjYWNoZSB0byBnbG9iYWwgdmFyaWFibGVzLg0KU29tZSBjYWxsZXJz IG1heSB1c2UgaXQgb25seSBvbmNlLiBIYXZpbmcgYSBsaWIgZ2xvYmFsIHZhcmlhYmxlIGlzIGFs c28gYSB3YXN0ZS4NCg0KPiANCj4gMy4gSWYgdGhlIEhPQiBpcyB1c2VkLCBpdCBibHVycyB0aGUg aW1wbGVtZW50YXRpb24gYmV0d2VlbiB0aGUgSE9CIHByb2R1Y2VyDQo+IHBoYXNlIChQRUkpIGFu ZCBIT0IgY29uc3VtZXIgcGhhc2UgKERYRSkuDQoNCkRvbid0IHVuZGVyc3RhbmQuDQoNCj4gDQo+ IFdlIGhhdmUgbWFueSBsaWJyYXJpZXMgd2l0aCBwaGFzZS1zcGVjaWZpYyBpbnN0YW5jZXMuIFdo ZW4gaXQgcmVkdWNlcw0KPiBwcm9ncmFtbWluZyBtaXN0YWtlcyBhbmQgZWFzZXMgaW50ZWdyYXRp b24gSSBiZWxpZXZlIHRoaXMgaXMgYmVuZWZpY2lhbC4gSW4NCj4gdGhpcyBjYXNlLCBJIGZlZWwg dGhlIG5ldCByZXN1bHQgZm9yIGxpYnJhcnkgY29uc3VtZXJzIGlzIGJldHRlciBpZiB0aGV5IHNp bXBseQ0KPiBtYW5hZ2UgdGhlIGluc3RhbmNlIGluIHRoZSBEU0MgYXMgb3Bwb3NlZCB0byBtb2Rp Znlpbmcgc291cmNlIGluIGRyaXZlcnMgb24NCj4gYSBjYXNlLWJ5LWNhc2UgYmFzaXMgZGVwZW5k ZW50IG9uIHRoZSBsaWJyYXJ5IGltcGxlbWVudGF0aW9uLg0KDQpJZiBhIHNpbmdsZSBpbnN0YW5j ZSBjYW4gc3VwcG9ydCB0aGUgcmVhbCBuZWVkcyBJIHRlbmQgdG8gdXNlIHNpbmdsZSBpbnN0YW5j ZXMuDQpJdCBtYWtlcyB0aGUgY29kZSBsb2dpYyBlYXN5IHRvIHRyYWNlLiBJIGxpa2UgdGhlIG11 bHRpcGxlIGluc3RhbmNlcyBpZGVhIGJ1dCB3YW50DQp0byBhdm9pZCBvdmVyLXVzaW5nIHRoZW0u DQoNCkFnYWluIEkgYW0ganVzdCBwcm92aWRpbmcgd2hhdCBJIHRoaW5rLiBUaGV5IGFyZSBub3Qg aGVyZSB0byBzdXBwb3J0IG15IHBvaW50Lg0KSSBhbSBvayB3aXRoIGN1cnJlbnQgaW1wbGVtZW50 YXRpb24uIPCfmIoNCg0KPiANCj4gVGhhbmtzLA0KPiBNaWNoYWVsDQo+IA0KPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4N Cj4gPiBTZW50OiBNb25kYXksIE9jdG9iZXIgMTQsIDIwMTkgOTo1OSBQTQ0KPiA+IFRvOiBLdWJh Y2tpLCBNaWNoYWVsIEEgPG1pY2hhZWwuYS5rdWJhY2tpQGludGVsLmNvbT47DQo+ID4gZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogQ2hhZ2FudHksIFJhbmdhc2FpIFYgPHJhbmdhc2FpLnYu Y2hhZ2FudHlAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1wbGF0Zm9ybXNdW1BB VENIIFYxIDEvMV0gSW50ZWxTaWxpY29uUGtnL0Jvb3RNZWRpYUxpYjoNCj4gPiBSZWR1Y2UgbGli cmFyeSBBUEkNCj4gPg0KPiA+IE1pa2UsDQo+ID4gSSBkb24ndCB0aGluayB0aGUgbGlicmFyeSBu ZWVkcyB0byBjYWNoZSB0aGUgYm9vdCBtZWRpYSB0eXBlIGZvciBSVCBhbmQNCj4gU01NLg0KPiA+ IFJUIGFuZCBTTU0gbW9kdWxlcyBjYW4gaGF2ZSBhIG1vZHVsZSBsb2NhbCB2YXJpYWJsZSB0byBj YWNoZSB0aGUgYm9vdA0KPiA+IG1lZGlhIHR5cGUuDQo+ID4gSXQgc2ltcGxpZmllcyB0aGUgaW1w bGVtZW50YXRpb24gb2YgdGhpcyBsaWJyYXJ5IGFuZCBhbHNvIHRoZSBwbGF0Zm9ybQ0KPiA+IERT QyBiZWNhdXNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hvb3NlIGRpZmZlcmVudCBsaWJyYXJ5IGlu c3RhbmNlcyBmb3INCj4gPiBkaWZmZXJlbnQgbW9kdWxlcy4NCj4gPg0KPiA+IEluIGFub3RoZXIg d29yZCwgSSB0aGluayB5b3UgY2FuIGtlZXAgdGhlIFBFSSB2ZXJzaW9uIGFzIGEgYmFzZQ0KPiA+ IGxpYnJhcnkgaW5zdGFuY2VzIGFuZCBhbGwgbW9kdWxlcyBjYW4gdXNlIHRoYXQgaW5zdGFuY2Uu DQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gUmF5DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBLdWJhY2tpLCBNaWNoYWVsIEEgPG1pY2hhZWwuYS5rdWJh Y2tpQGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMTUsIDIwMTkgMTA6 MjIgQU0NCj4gPiA+IFRvOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gPiA+IENjOiBDaGFnYW50eSwgUmFuZ2FzYWkgViA8cmFuZ2FzYWkudi5jaGFn YW50eUBpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSRTogW2VkazItcGxhdGZvcm1zXVtQQVRD SCBWMSAxLzFdDQo+IEludGVsU2lsaWNvblBrZy9Cb290TWVkaWFMaWI6DQo+ID4gPiBSZWR1Y2Ug bGlicmFyeSBBUEkNCj4gPiA+DQo+ID4gPiBUaGUgdHdvIGxpYnJhcnkgaW5zdGFuY2VzIHdvcmsg d2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBQRUksIERYRSwNCj4gPiA+IFJ1bnRpbWUgRFhFLCBh bmQgU01NLg0KPiA+ID4NCj4gPiA+IEkgY2Fubm90IGZpbmQgaG93IGEgc2luZ2xlIGluc3RhbmNl IGNhbiBzdXBwb3J0IGFsbCB0aGVzZQ0KPiA+ID4gZW52aXJvbm1lbnRzIChpbiBhcyBjbGVhbiBh IG1hbm5lcikgYXMgaXMgZG9uZSB3aXRoIHRoZSB0d28gaW5zdGFuY2VzLg0KPiA+ID4NCj4gPiA+ IFJlbGV2YW50IGNvbnN0cmFpbnRzOg0KPiA+ID4gKiBQRUk6IENhbm5vdCB3cml0ZSB0byBnbG9i YWwgdmFyaWFibGUNCj4gPiA+ICogUnVudGltZSBEWEUgLyBTTU06IEJvb3QgU2VydmljZXMgYXJl IG5vdCBhdmFpbGFibGUgb3V0c2lkZSBtb2R1bGUNCj4gPiA+IGVudHJ5IHBvaW50DQo+ID4gPg0K PiA+ID4gU29sdXRpb246DQo+ID4gPiAqIFBFSSBpbnN0YW5jZTogQWx3YXlzIHJldHJpZXZlIHRo ZSB2YWx1ZSBmcm9tIGEgSE9CICh1c2UgaGVhcCBmb3IgUi9XKS4NCj4gPiA+ICogRFhFLCBSdW50 aW1lIERYRSwgU01NIGluc3RhbmNlOiBSZXRyaWV2ZSB0aGUgdmFsdWUgZnJvbSB0aGUgSE9CIGlu DQo+ID4gPiB0aGUgZW50cnkgcG9pbnQNCj4gPiA+IChjb25zdHJ1Y3Rvcikgd2hlbiB0aGUgZHJp dmVyIGlzIGRpc3BhdGNoZWQgYW5kIEJvb3QgU2VydmljZXMgYXJlDQo+ID4gPiBhdmFpbGFibGUg YW5kIHN0b3JlIHRoZSB2YWx1ZSBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyBpdCBjYW4gYmUNCj4g PiA+IGFjY2Vzc2VkIGluIFJ1bnRpbWUgRFhFIGFuZCBTTU0uDQo+ID4gPg0KPiA+ID4gVHdvIHNl cGFyYXRlIGluc3RhbmNlcyByZXNvbHZlIHRoZXNlIHJlcXVpcmVtZW50cyBxdWl0ZSBuYXR1cmFs bHkuDQo+ID4gPg0KPiA+ID4gSG93IHdvdWxkIHlvdSBwcm9wb3NlIG1lZXRpbmcgdGhlIHNhbWUg bGV2ZWwgb2Ygc3VwcG9ydCB3aXRoIG9uZQ0KPiA+ID4gaW5zdGFuY2U/DQo+ID4gPg0KPiA+ID4g VGhhbmtzLA0KPiA+ID4gTWljaGFlbA0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+ ID4gU2VudDogTW9uZGF5LCBPY3RvYmVyIDE0LCAyMDE5IDY6MzAgUE0NCj4gPiA+ID4gVG86IEt1 YmFja2ksIE1pY2hhZWwgQSA8bWljaGFlbC5hLmt1YmFja2lAaW50ZWwuY29tPjsNCj4gPiA+ID4g ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4gQ2M6IENoYWdhbnR5LCBSYW5nYXNhaSBWIDxy YW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT4NCj4gPiA+ID4gU3ViamVjdDogUkU6IFtlZGsy LXBsYXRmb3Jtc11bUEFUQ0ggVjEgMS8xXQ0KPiA+IEludGVsU2lsaWNvblBrZy9Cb290TWVkaWFM aWI6DQo+ID4gPiA+IFJlZHVjZSBsaWJyYXJ5IEFQSQ0KPiA+ID4gPg0KPiA+ID4gPiBSZXZpZXdl ZC1ieTogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+ID4gPg0KPiA+ID4gPiBNaWtlLA0K PiA+ID4gPiBUaGFua3MgZm9yIHJlZHVjaW5nIHRoZSBBUEkuDQo+ID4gPiA+DQo+ID4gPiA+IEZv ciB0aGUgb3RoZXIgY29tbWVudHMgSSByYWlzZWQgKHNpbmdsZSBsaWJyYXJ5IGluc3RhbmNlIHVz YWJsZQ0KPiA+ID4gPiBmb3IgUEVJIGFuZCBEWEUpLCBkbyB5b3UgaGF2ZSBhbnkgY29tbWVudHM/ DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiA+ID4gPiBGcm9tOiBLdWJhY2tpLCBNaWNoYWVsIEEgPG1pY2hhZWwuYS5rdWJhY2tpQGlu dGVsLmNvbT4NCj4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDE1LCAyMDE5IDU6MjYg QU0NCj4gPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4gPiBDYzogQ2hh Z2FudHksIFJhbmdhc2FpIFYgPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50ZWwuY29tPjsgTmksDQo+ ID4gPiA+ID4gUmF5IDxyYXkubmlAaW50ZWwuY29tPg0KPiA+ID4gPiA+IFN1YmplY3Q6IFtlZGsy LXBsYXRmb3Jtc11bUEFUQ0ggVjEgMS8xXQ0KPiBJbnRlbFNpbGljb25Qa2cvQm9vdE1lZGlhTGli Og0KPiA+ID4gPiA+IFJlZHVjZSBsaWJyYXJ5IEFQSQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gUmVt b3ZlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBmcm9tIEZpcm13YXJlQm9vdE1lZGlhTGliLmg6 DQo+ID4gPiA+ID4gICogRmlybXdhcmVCb290TWVkaWFJc1NwaSAoKQ0KPiA+ID4gPiA+ICAqIEZp cm13YXJlQm9vdE1lZGlhSXNVZnMgKCkNCj4gPiA+ID4gPiAgKiBGaXJtd2FyZUJvb3RNZWRpYUlz RW1tYyAoKQ0KPiA+ID4gPiA+ICAqIEZpcm13YXJlQm9vdE1lZGlhSXNOdm1lICgpDQo+ID4gPiA+ ID4NCj4gPiA+ID4gPiBJdCBpcyBwcmVmZXJyZWQgdG8gaGF2ZSBhIHNpbmdsZSBtZXRob2QgdG8g cmV0cmlldmUgdGhlIGZpcm13YXJlDQo+ID4gPiA+ID4gYm9vdA0KPiA+ID4gPiBtZWRpYS4NCj4g PiA+ID4gPiBUbyByZWR1Y2Ugb3ZlcmFsbCBtYWludGVuYW5jZSBlZmZvcnQgb3ZlciB0aW1lLCB0 aGUNCj4gPiA+ID4gPiBGaXJtd2FyZUJvb3RNZWRpYUlzWHh4ICgpIHBhdHRlcm4gaXMgcmVtb3Zl ZCBpbiBmYXZvciBvZg0KPiA+ID4gPiA+IHJldHVybmluZyB0aGUgZmlybXdhcmUgYm9vdCBtZWRp YSB0eXBlIHZpYQ0KPiBHZXRGaXJtd2FyZUJvb3RNZWRpYVR5cGUgKCkuDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBDYzogU2FpIENoYWdhbnR5IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT4N Cj4gPiA+ID4gPiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+ID4gPiA+IFNpZ25l ZC1vZmYtYnk6IE1pY2hhZWwgS3ViYWNraSA8bWljaGFlbC5hLmt1YmFja2lAaW50ZWwuY29tPg0K PiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+ID4N Cj4gU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvTGlicmFyeS9QZWlEeGVTbW1Cb290TWVk aWFMaWIvRHhlU21tRmlybQ0KPiA+ID4gPiA+IHdhcmVCb290TWVkaWFMaWIuaW5mIHwgICAxIC0N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+IFNpbGljb24vSW50ZWwvSW50ZWxTaWxpY29u UGtnL0xpYnJhcnkvUGVpRHhlU21tQm9vdE1lZGlhTGliL1BlaUZpcg0KPiA+ID4gPiBtdw0KPiA+ ID4gPiBhcg0KPiA+ID4gPiBlQg0KPiA+ID4gPiA+IG9vdE1lZGlhTGliLmluZiAgICB8ICAgMSAt DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBTaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbmNs dWRlL0xpYnJhcnkvRmlybXdhcmVCb290TWVkaWFMDQo+ID4gPiA+ID4gaWINCj4gPiA+ID4gPiAu aA0KPiA+ID4gPiA+IHwgIDQ4IC0tLS0tLS0tLQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ ID4gU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvTGlicmFyeS9QZWlEeGVTbW1Cb290TWVk aWFMaWIvRmlybXdhDQo+ID4gPiA+IHJlDQo+ID4gPiA+IEJvDQo+ID4gPiA+IG8NCj4gPiA+ID4g PiB0TWVkaWFMaWIuYyAgICAgICAgIHwgMTA5IC0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiA+ ID4gIDQgZmlsZXMgY2hhbmdlZCwgMTU5IGRlbGV0aW9ucygtKQ0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPg0KPiA+DQo+IGEvU2lsaWNv bi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvTGlicmFyeS9QZWlEeGVTbW1Cb290TWVkaWFMaWIvRHhl U21tRmkNCj4gPiA+ID4gPiByDQo+ID4gPiA+ID4gbXdhcmVCb290TWVkaWFMaWIuaW5mDQo+ID4g PiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+ID4NCj4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNv blBrZy9MaWJyYXJ5L1BlaUR4ZVNtbUJvb3RNZWRpYUxpYi9EeGVTbW1GaQ0KPiA+ID4gPiA+IHIN Cj4gPiA+ID4gPiBtd2FyZUJvb3RNZWRpYUxpYi5pbmYNCj4gPiA+ID4gPiBpbmRleCA4M2VkNWYw NGFmLi43ZTEwYjVmN2E3IDEwMDY0NA0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+DQo+ID4gPiA+ DQo+ID4gPg0KPiA+DQo+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvTGlicmFyeS9Q ZWlEeGVTbW1Cb290TWVkaWFMaWIvRHhlU21tRmkNCj4gPiA+ID4gPiByDQo+ID4gPiA+ID4gbXdh cmVCb290TWVkaWFMaWIuaW5mDQo+ID4gPiA+ID4gKysrDQo+ID4gPiA+ID4NCj4gPiA+DQo+IGIv U2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvTGlicmFyeS9QZWlEeGVTbW1Cb290TWVkaWFM aWIvRHhlU21tDQo+ID4gPiA+ID4gKysrIEZpcm13YXJlQm9vdE1lZGlhTGliLmluZg0KPiA+ID4g PiA+IEBAIC0yNyw3ICsyNyw2IEBADQo+ID4gPiA+ID4gICMNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ ICBbU291cmNlc10NCj4gPiA+ID4gPiAtICBGaXJtd2FyZUJvb3RNZWRpYUxpYi5jDQo+ID4gPiA+ ID4gICAgRHhlU21tRmlybXdhcmVCb290TWVkaWFMaWIuYw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g IFtQYWNrYWdlc10NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+ID4gYS9TaWxpY29uL0lu dGVsL0ludGVsU2lsaWNvblBrZy9MaWJyYXJ5L1BlaUR4ZVNtbUJvb3RNZWRpYUxpYi9QZQ0KPiA+ ID4gPiA+IGlGDQo+ID4gPiA+ID4gaXINCj4gPiA+ID4gPiBtdw0KPiA+ID4gPiA+IGFyDQo+ID4g PiA+ID4gZUJvb3RNZWRpYUxpYi5pbmYNCj4gPiA+ID4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxT aWxpY29uUGtnL0xpYnJhcnkvUGVpRHhlU21tQm9vdE1lZGlhTGliL1BlDQo+ID4gPiA+ID4gaUYN Cj4gPiA+ID4gPiBpcg0KPiA+ID4gPiA+IG13DQo+ID4gPiA+ID4gYXINCj4gPiA+ID4gPiBlQm9v dE1lZGlhTGliLmluZg0KPiA+ID4gPiA+IGluZGV4IDA2M2M0MDI3ZDMuLmZmMWRhMzEzODcgMTAw NjQ0DQo+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNv blBrZy9MaWJyYXJ5L1BlaUR4ZVNtbUJvb3RNZWRpYUxpYi9QZQ0KPiA+ID4gPiA+IGlGDQo+ID4g PiA+ID4gaXINCj4gPiA+ID4gPiBtdw0KPiA+ID4gPiA+IGFyDQo+ID4gPiA+ID4gZUJvb3RNZWRp YUxpYi5pbmYNCj4gPiA+ID4gPiArKysgYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9M aWJyYXJ5L1BlaUR4ZVNtbUJvb3RNZWRpYUxpDQo+ID4gPiA+ID4gKysrIGIvDQo+ID4gPiA+ID4g KysrIFBlDQo+ID4gPiA+ID4gKysrIGlGDQo+ID4gPiA+ID4gKysrIGlyDQo+ID4gPiA+ID4gKysr IG13YXJlQm9vdE1lZGlhTGliLmluZg0KPiA+ID4gPiA+IEBAIC0yMiw3ICsyMiw2IEBADQo+ID4g PiA+ID4gICAgTElCUkFSWV9DTEFTUyAgICAgICAgPSBGaXJtd2FyZUJvb3RNZWRpYUxpYg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gIFtTb3VyY2VzXQ0KPiA+ID4gPiA+IC0gIEZpcm13YXJlQm9vdE1l ZGlhTGliLmMNCj4gPiA+ID4gPiAgICBQZWlGaXJtd2FyZUJvb3RNZWRpYUxpYi5jDQo+ID4gPiA+ ID4NCj4gPiA+ID4gPiAgW1BhY2thZ2VzXQ0KPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4g PiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0luY2x1ZGUvTGlicmFyeS9GaXJtd2Fy ZUJvb3RNZWRpDQo+ID4gPiA+ID4gYUwNCj4gPiA+ID4gPiBpYg0KPiA+ID4gPiA+IC5oDQo+ID4g PiA+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbmNsdWRlL0xpYnJhcnkvRmly bXdhcmVCb290TWVkaQ0KPiA+ID4gPiA+IGFMDQo+ID4gPiA+ID4gaWINCj4gPiA+ID4gPiAuaA0K PiA+ID4gPiA+IGluZGV4IGFjYTk1OTNhODQuLmIzNmViYWNmMzAgMTAwNjQ0DQo+ID4gPiA+ID4g LS0tDQo+ID4gPiA+ID4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9JbmNsdWRlL0xp YnJhcnkvRmlybXdhcmVCb290TWVkaQ0KPiA+ID4gPiA+IGFMDQo+ID4gPiA+ID4gaWINCj4gPiA+ ID4gPiAuaA0KPiA+ID4gPiA+ICsrKyBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0lu Y2x1ZGUvTGlicmFyeS9GaXJtd2FyZUJvb3QNCj4gPiA+ID4gPiArKysgTWUNCj4gPiA+ID4gPiAr KysgZGkNCj4gPiA+ID4gPiArKysgYUwNCj4gPiA+ID4gPiArKysgaWINCj4gPiA+ID4gPiArKysg LmgNCj4gPiA+ID4gPiBAQCAtNTUsNTIgKzU1LDQgQEAgRmlybXdhcmVCb290TWVkaWFJc0tub3du ICgNCj4gPiA+ID4gPiAgICBWT0lEDQo+ID4gPiA+ID4gICAgKTsNCj4gPiA+ID4gPg0KPiA+ID4g PiA+IC0vKioNCj4gPiA+ID4gPiAtICBEZXRlcm1pbmVzIGlmIHRoZSBwbGF0Zm9ybSBmaXJtd2Fy ZSBpcyBib290aW5nIGZyb20gU1BJLg0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICBAcmV0dmFs IFRSVUUgICAgICAgIFBsYXRmb3JtIGZpcm13YXJlIGlzIGJvb3RpbmcgZnJvbSBTUEkNCj4gPiA+ ID4gPiAtICBAcmV0dmFsIEZBTFNFICAgICAgIFBsYXRmb3JtIGZpcm13YXJlIGlzIGJvb3Rpbmcg ZnJvbSBhIG5vbi1TUEkNCj4gZGV2aWNlDQo+ID4gb3INCj4gPiA+ID4gdGhlDQo+ID4gPiA+ID4g Ym9vdCBtZWRpYSBpcyB1bmtub3duDQo+ID4gPiA+ID4gLSoqLw0KPiA+ID4gPiA+IC1CT09MRUFO DQo+ID4gPiA+ID4gLUVGSUFQSQ0KPiA+ID4gPiA+IC1GaXJtd2FyZUJvb3RNZWRpYUlzU3BpICgN Cj4gPiA+ID4gPiAtICBWT0lEDQo+ID4gPiA+ID4gLSAgKTsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ ID4gLS8qKg0KPiA+ID4gPiA+IC0gIERldGVybWluZXMgaWYgdGhlIHBsYXRmb3JtIGZpcm13YXJl IGlzIGJvb3RpbmcgZnJvbSBVRlMuDQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIEByZXR2YWwg VFJVRSAgICAgICAgUGxhdGZvcm0gZmlybXdhcmUgaXMgYm9vdGluZyBmcm9tIFVGUw0KPiA+ID4g PiA+IC0gIEByZXR2YWwgRkFMU0UgICAgICAgUGxhdGZvcm0gZmlybXdhcmUgaXMgYm9vdGluZyBm cm9tIGEgbm9uLVVGUw0KPiBkZXZpY2UNCj4gPiA+IG9yDQo+ID4gPiA+ID4gdGhlIGJvb3QgbWVk aWEgaXMgdW5rbm93bg0KPiA+ID4gPiA+IC0qKi8NCj4gPiA+ID4gPiAtQk9PTEVBTg0KPiA+ID4g PiA+IC1FRklBUEkNCj4gPiA+ID4gPiAtRmlybXdhcmVCb290TWVkaWFJc1VmcyAoDQo+ID4gPiA+ ID4gLSAgVk9JRA0KPiA+ID4gPiA+IC0gICk7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0vKioN Cj4gPiA+ID4gPiAtICBEZXRlcm1pbmVzIGlmIHRoZSBwbGF0Zm9ybSBmaXJtd2FyZSBpcyBib290 aW5nIGZyb20gZU1NQy4NCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgQHJldHZhbCBUUlVFICAg ICAgICBQbGF0Zm9ybSBmaXJtd2FyZSBpcyBib290aW5nIGZyb20gZU1NQw0KPiA+ID4gPiA+IC0g IEByZXR2YWwgRkFMU0UgICAgICAgUGxhdGZvcm0gZmlybXdhcmUgaXMgYm9vdGluZyBmcm9tIGEg bm9uLWVNTUMNCj4gPiA+IGRldmljZQ0KPiA+ID4gPiBvcg0KPiA+ID4gPiA+IHRoZSBib290IG1l ZGlhIGlzIHVua25vd24NCj4gPiA+ID4gPiAtKiovDQo+ID4gPiA+ID4gLUJPT0xFQU4NCj4gPiA+ ID4gPiAtRUZJQVBJDQo+ID4gPiA+ID4gLUZpcm13YXJlQm9vdE1lZGlhSXNFbW1jICgNCj4gPiA+ ID4gPiAtICBWT0lEDQo+ID4gPiA+ID4gLSAgKTsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLS8q Kg0KPiA+ID4gPiA+IC0gIERldGVybWluZXMgaWYgdGhlIHBsYXRmb3JtIGZpcm13YXJlIGlzIGJv b3RpbmcgZnJvbSBOVk1lLg0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICBAcmV0dmFsIFRSVUUg ICAgICAgIFBsYXRmb3JtIGZpcm13YXJlIGlzIGJvb3RpbmcgZnJvbSBOVk1lLg0KPiA+ID4gPiA+ IC0gIEByZXR2YWwgRkFMU0UgICAgICAgUGxhdGZvcm0gZmlybXdhcmUgaXMgYm9vdGluZyBmcm9t IGEgbm9uLU5WTWUNCj4gPiA+IGRldmljZQ0KPiA+ID4gPiBvcg0KPiA+ID4gPiA+IHRoZSBib290 IG1lZGlhIGlzIHVua25vd24NCj4gPiA+ID4gPiAtKiovDQo+ID4gPiA+ID4gLUJPT0xFQU4NCj4g PiA+ID4gPiAtRUZJQVBJDQo+ID4gPiA+ID4gLUZpcm13YXJlQm9vdE1lZGlhSXNOdm1lICgNCj4g PiA+ID4gPiAtICBWT0lEDQo+ID4gPiA+ID4gLSAgKTsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4g ICNlbmRpZg0KPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gPiBhL1NpbGljb24vSW50ZWwv SW50ZWxTaWxpY29uUGtnL0xpYnJhcnkvUGVpRHhlU21tQm9vdE1lZGlhTGliL0ZpDQo+ID4gPiA+ ID4gcm0NCj4gPiA+ID4gPiB3YQ0KPiA+ID4gPiA+IHJlDQo+ID4gPiA+ID4gQg0KPiA+ID4gPiA+ IG9vdE1lZGlhTGliLmMNCj4gPiA+ID4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtn L0xpYnJhcnkvUGVpRHhlU21tQm9vdE1lZGlhTGliL0ZpDQo+ID4gPiA+ID4gcm0NCj4gPiA+ID4g PiB3YQ0KPiA+ID4gPiA+IHJlDQo+ID4gPiA+ID4gQg0KPiA+ID4gPiA+IG9vdE1lZGlhTGliLmMN Cj4gPiA+ID4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiBpbmRleCAxMWEx NGQxNzJkLi4wMDAwMDAwMDAwDQo+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gYS9TaWxpY29uL0lu dGVsL0ludGVsU2lsaWNvblBrZy9MaWJyYXJ5L1BlaUR4ZVNtbUJvb3RNZWRpYUxpYi9GaQ0KPiA+ ID4gPiA+IHJtDQo+ID4gPiA+ID4gd2ENCj4gPiA+ID4gPiByZQ0KPiA+ID4gPiA+IEINCj4gPiA+ ID4gPiBvb3RNZWRpYUxpYi5jDQo+ID4gPiA+ID4gKysrIC9kZXYvbnVsbA0KPiA+ID4gPiA+IEBA IC0xLDEwOSArMCwwIEBADQo+ID4gPiA+ID4gLS8qKiBAZmlsZQ0KPiA+ID4gPiA+IC0gIFRoaXMg bGlicmFyeSBpZGVudGlmaWVzIHRoZSBmaXJtd2FyZSBib290IG1lZGlhIGRldmljZS4NCj4gPiA+ ID4gPiAtDQo+ID4gPiA+ID4gLSAgVGhlIGZpcm13YXJlIGJvb3QgbWVkaWEgZGV2aWNlIGlzIHVz ZWQgdG8gbWFrZSBzeXN0ZW0NCj4gPiA+ID4gPiBpbml0aWFsaXphdGlvbiBkZWNpc2lvbnMgaW4g dGhlIGJvb3QgZmxvdyBkZXBlbmRlbnQNCj4gPiA+ID4gPiAtICB1cG9uIGZpcm13YXJlIGJvb3Qg bWVkaWEuIE5vdGUgdGhhdCB0aGUgZmlybXdhcmUgYm9vdCBtZWRpYQ0KPiA+ID4gPiA+IGlzIHRo ZSBzdG9yYWdlIG1lZGlhIHRoYXQgdGhlIGJvb3QgZmlybXdhcmUgaXMgc3RvcmVkIG9uLg0KPiA+ ID4gPiA+IC0gIEl0IGlzIG5vdCB0aGUgT1Mgc3RvcmFnZSBtZWRpYSB3aGljaCBtYXkgYmUgc3Rv cmVkIHVwb24gYQ0KPiA+ID4gPiA+IGRpZmZlcmVudA0KPiA+ID4gPiA+IG5vbi0gdm9sYXRpbGUg c3RvcmFnZSBkZXZpY2UuDQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIFRoaXMgZmlsZSBjb250 YWlucyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGNvbW1vbiB0byBhbGwgYm9vdCBwaGFzZXMuDQo+ ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC1Db3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiAtU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSoq Lw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0K PiA+ID4gPiA+IC0jaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ID4gPiA+IC0jaW5j bHVkZSA8TGlicmFyeS9GaXJtd2FyZUJvb3RNZWRpYUxpYi5oPg0KPiA+ID4gPiA+IC0NCj4gPiA+ ID4gPiAtLyoqDQo+ID4gPiA+ID4gLSAgRGV0ZXJtaW5lcyBpZiB0aGUgcGxhdGZvcm0gZmlybXdh cmUgaXMgYm9vdGluZyBmcm9tIFNQSS4NCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgQHJldHZh bCBUUlVFICAgICAgICBQbGF0Zm9ybSBmaXJtd2FyZSBpcyBib290aW5nIGZyb20gU1BJDQo+ID4g PiA+ID4gLSAgQHJldHZhbCBGQUxTRSAgICAgICBQbGF0Zm9ybSBmaXJtd2FyZSBpcyBib290aW5n IGZyb20gYSBub24tU1BJDQo+IGRldmljZQ0KPiA+IG9yDQo+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ IGJvb3QgbWVkaWEgaXMgdW5rbm93bg0KPiA+ID4gPiA+IC0qKi8NCj4gPiA+ID4gPiAtQk9PTEVB Tg0KPiA+ID4gPiA+IC1FRklBUEkNCj4gPiA+ID4gPiAtRmlybXdhcmVCb290TWVkaWFJc1NwaSAo DQo+ID4gPiA+ID4gLSAgVk9JRA0KPiA+ID4gPiA+IC0gICkNCj4gPiA+ID4gPiAtew0KPiA+ID4g PiA+IC0gIEVGSV9TVEFUVVMgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+IC0gIEZXX0JPT1Rf TUVESUFfVFlQRSAgQm9vdE1lZGlhOw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtICBTdGF0dXMg PSBHZXRGaXJtd2FyZUJvb3RNZWRpYVR5cGUgKCZCb290TWVkaWEpOw0KPiA+ID4gPiA+IC0gIGlm IChFRklfRVJST1IgKFN0YXR1cykgfHwgQm9vdE1lZGlhICE9IEZ3Qm9vdE1lZGlhU3BpKSB7DQo+ ID4gPiA+ID4gLSAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gLSAgfSBlbHNlIHsNCj4gPiA+ ID4gPiAtICAgIHJldHVybiBUUlVFOw0KPiA+ID4gPiA+IC0gIH0NCj4gPiA+ID4gPiAtfQ0KPiA+ ID4gPiA+IC0NCj4gPiA+ID4gPiAtLyoqDQo+ID4gPiA+ID4gLSAgRGV0ZXJtaW5lcyBpZiB0aGUg cGxhdGZvcm0gZmlybXdhcmUgaXMgYm9vdGluZyBmcm9tIFVGUy4NCj4gPiA+ID4gPiAtDQo+ID4g PiA+ID4gLSAgQHJldHZhbCBUUlVFICAgICAgICBQbGF0Zm9ybSBmaXJtd2FyZSBpcyBib290aW5n IGZyb20gVUZTDQo+ID4gPiA+ID4gLSAgQHJldHZhbCBGQUxTRSAgICAgICBQbGF0Zm9ybSBmaXJt d2FyZSBpcyBib290aW5nIGZyb20gYSBub24tVUZTDQo+IGRldmljZQ0KPiA+ID4gb3INCj4gPiA+ ID4gPiB0aGUgYm9vdCBtZWRpYSBpcyB1bmtub3duDQo+ID4gPiA+ID4gLSoqLw0KPiA+ID4gPiA+ IC1CT09MRUFODQo+ID4gPiA+ID4gLUVGSUFQSQ0KPiA+ID4gPiA+IC1GaXJtd2FyZUJvb3RNZWRp YUlzVWZzICgNCj4gPiA+ID4gPiAtICBWT0lEDQo+ID4gPiA+ID4gLSAgKQ0KPiA+ID4gPiA+IC17 DQo+ID4gPiA+ID4gLSAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+ID4gPiA+ID4gLSAg RldfQk9PVF9NRURJQV9UWVBFICBCb290TWVkaWE7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0g IFN0YXR1cyA9IEdldEZpcm13YXJlQm9vdE1lZGlhVHlwZSAoJkJvb3RNZWRpYSk7DQo+ID4gPiA+ ID4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSB8fCBCb290TWVkaWEgIT0gRndCb290TWVkaWFV ZnMpIHsNCj4gPiA+ID4gPiAtICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiAtICB9IGVsc2Ug ew0KPiA+ID4gPiA+IC0gICAgcmV0dXJuIFRSVUU7DQo+ID4gPiA+ID4gLSAgfQ0KPiA+ID4gPiA+ IC19DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0vKioNCj4gPiA+ID4gPiAtICBEZXRlcm1pbmVz IGlmIHRoZSBwbGF0Zm9ybSBmaXJtd2FyZSBpcyBib290aW5nIGZyb20gZU1NQy4NCj4gPiA+ID4g PiAtDQo+ID4gPiA+ID4gLSAgQHJldHZhbCBUUlVFICAgICAgICBQbGF0Zm9ybSBmaXJtd2FyZSBp cyBib290aW5nIGZyb20gZU1NQw0KPiA+ID4gPiA+IC0gIEByZXR2YWwgRkFMU0UgICAgICAgUGxh dGZvcm0gZmlybXdhcmUgaXMgYm9vdGluZyBmcm9tIGEgbm9uLWVNTUMNCj4gPiA+IGRldmljZQ0K PiA+ID4gPiBvcg0KPiA+ID4gPiA+IHRoZSBib290IG1lZGlhIGlzIHVua25vd24NCj4gPiA+ID4g PiAtKiovDQo+ID4gPiA+ID4gLUJPT0xFQU4NCj4gPiA+ID4gPiAtRUZJQVBJDQo+ID4gPiA+ID4g LUZpcm13YXJlQm9vdE1lZGlhSXNFbW1jICgNCj4gPiA+ID4gPiAtICBWT0lEDQo+ID4gPiA+ID4g LSAgKQ0KPiA+ID4gPiA+IC17DQo+ID4gPiA+ID4gLSAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0 dXM7DQo+ID4gPiA+ID4gLSAgRldfQk9PVF9NRURJQV9UWVBFICBCb290TWVkaWE7DQo+ID4gPiA+ ID4gLQ0KPiA+ID4gPiA+IC0gIFN0YXR1cyA9IEdldEZpcm13YXJlQm9vdE1lZGlhVHlwZSAoJkJv b3RNZWRpYSk7DQo+ID4gPiA+ID4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSB8fCBCb290TWVk aWEgIT0gRndCb290TWVkaWFFbW1jKSB7DQo+ID4gPiA+ID4gLSAgICByZXR1cm4gRkFMU0U7DQo+ ID4gPiA+ID4gLSAgfSBlbHNlIHsNCj4gPiA+ID4gPiAtICAgIHJldHVybiBUUlVFOw0KPiA+ID4g PiA+IC0gIH0NCj4gPiA+ID4gPiAtfQ0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtLyoqDQo+ID4g PiA+ID4gLSAgRGV0ZXJtaW5lcyBpZiB0aGUgcGxhdGZvcm0gZmlybXdhcmUgaXMgYm9vdGluZyBm cm9tIE5WTWUuDQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0gIEByZXR2YWwgVFJVRSAgICAgICAg UGxhdGZvcm0gZmlybXdhcmUgaXMgYm9vdGluZyBmcm9tIE5WTWUuDQo+ID4gPiA+ID4gLSAgQHJl dHZhbCBGQUxTRSAgICAgICBQbGF0Zm9ybSBmaXJtd2FyZSBpcyBib290aW5nIGZyb20gYSBub24t TlZNZQ0KPiA+ID4gZGV2aWNlDQo+ID4gPiA+IG9yDQo+ID4gPiA+ID4gdGhlIGJvb3QgbWVkaWEg aXMgdW5rbm93bg0KPiA+ID4gPiA+IC0qKi8NCj4gPiA+ID4gPiAtQk9PTEVBTg0KPiA+ID4gPiA+ IC1FRklBUEkNCj4gPiA+ID4gPiAtRmlybXdhcmVCb290TWVkaWFJc052bWUgKA0KPiA+ID4gPiA+ IC0gIFZPSUQNCj4gPiA+ID4gPiAtICApDQo+ID4gPiA+ID4gLXsNCj4gPiA+ID4gPiAtICBFRklf U1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiAtICBGV19CT09UX01FRElBX1RZUEUg IEJvb3RNZWRpYTsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgU3RhdHVzID0gR2V0RmlybXdh cmVCb290TWVkaWFUeXBlICgmQm9vdE1lZGlhKTsNCj4gPiA+ID4gPiAtICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpIHx8IEJvb3RNZWRpYSAhPSBGd0Jvb3RNZWRpYU52bWUpIHsNCj4gPiA+ID4gPiAt ICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiAtICB9IGVsc2Ugew0KPiA+ID4gPiA+IC0gICAg cmV0dXJuIFRSVUU7DQo+ID4gPiA+ID4gLSAgfQ0KPiA+ID4gPiA+IC19DQo+ID4gPiA+ID4gLS0N Cj4gPiA+ID4gPiAyLjE2LjIud2luZG93cy4xDQo+ID4gPiA+DQo+ID4gPg0KPiA+DQo+IA0KDQo=