From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 BF77F211518FD for ; Wed, 26 Sep 2018 10:34:21 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Sep 2018 10:34:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,307,1534834800"; d="scan'208";a="93486946" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by fmsmga001.fm.intel.com with ESMTP; 26 Sep 2018 10:32:10 -0700 Received: from orsmsx154.amr.corp.intel.com (10.22.226.12) by ORSMSX102.amr.corp.intel.com (10.22.225.129) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 26 Sep 2018 10:32:10 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.89]) by ORSMSX154.amr.corp.intel.com ([169.254.11.186]) with mapi id 14.03.0319.002; Wed, 26 Sep 2018 10:32:10 -0700 From: "Kinney, Michael D" To: Ard Biesheuvel , "Zeng, Star" , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , "Zimmer, Vincent" , "Richardson, Brian" , Andrew Fish , Leif Lindholm , "Dong, Eric" , "Ni, Ruiyu" , "Gao, Liming" , "Carsey, Jaben" , "Shi, Steven" Thread-Topic: [PATCH v3 1/7] MdeModulePkg: introduce PE/COFF image emulator protocol Thread-Index: AQHUUTXz0NqA/Q/BQEWYhQW1rqT7SaUC0gOAgAAEKoCAAACYUA== Date: Wed, 26 Sep 2018 17:32:09 +0000 Message-ID: References: <20180920230145.7565-1-ard.biesheuvel@linaro.org> <20180920230145.7565-2-ard.biesheuvel@linaro.org> <0C09AFA07DD0434D9E2A0C6AEB0483103BBF0A34@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Subject: Re: [PATCH v3 1/7] MdeModulePkg: introduce PE/COFF image emulator protocol X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 Sep 2018 17:34:22 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQXJkLA0KDQpJIHRoaW5rIHRoaXMgcmVnaXN0cmF0aW9uIHByb3RvY29sIHdvdWxkIGJlIGEg bmV3DQpwcm90b2NvbCBpbiB0aGUgTWRlTW9kdWxlUGtnIGFuZCB0aGUgcHJvdG9jb2wgd291bGQN CmJlIHByb2R1Y2VkIGJ5IHRoZSBEWEUgQ29yZS4gIFRoZSBlbXVsYXRpb24gZHJpdmVycywNCmlu Y2x1ZGluZyBFQkMgd291bGQgY29uc3VtZSB0aGlzIHByb3RvY29sIHRvIHJlZ2lzdGVyDQp0aGVp ciBzZXJ2aWNlcy4gIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIERYRQ0KQ29yZSB0byBk byBhIFJlZ2lzdGVyIFByb3RvY29sIE5vdGlmeSBldmVudCBmb3IgdGhlIA0KZW11bGF0b3IgcHJv dG9jb2wuICBUaGUgRFhFIENvcmUgd291bGQgYnVpbGQgYSB0YWJsZQ0Kb2YgcmVnaXN0ZXJlZCBz ZXJ2aWNlcywgc28gaXQgY2FuIHF1aWNrbHkgbG9vcCANCnRocm91Z2ggdGhlbSB0byBjaGVjayBp ZiBhbiBlbXVsYXRvciBzdXBwb3J0cyBhDQpzcGVjaWZpYyBQRS9DT0ZGIGltYWdlIG9yIG5vdC4N Cg0KQmVzdCByZWdhcmRzLA0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3Jn XQ0KPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAyNiwgMjAxOCAzOjE0IEFNDQo+IFRvOiBa ZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiBDYzogZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmc7IFppbW1lciwgVmluY2VudA0KPiA8dmluY2VudC56aW1tZXJAaW50ZWwuY29tPjsgUmlj aGFyZHNvbiwgQnJpYW4NCj4gPGJyaWFuLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgS2lubmV5LCBN aWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgQW5kcmV3IEZpc2gNCj4g PGFmaXNoQGFwcGxlLmNvbT47IExlaWYgTGluZGhvbG0NCj4gPGxlaWYubGluZGhvbG1AbGluYXJv Lm9yZz47IERvbmcsIEVyaWMNCj4gPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBOaSwgUnVpeXUgPHJ1 aXl1Lm5pQGludGVsLmNvbT47DQo+IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47 IENhcnNleSwgSmFiZW4NCj4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+OyBTaGksIFN0ZXZlbg0K PiA8c3RldmVuLnNoaUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS83XSBN ZGVNb2R1bGVQa2c6IGludHJvZHVjZQ0KPiBQRS9DT0ZGIGltYWdlIGVtdWxhdG9yIHByb3RvY29s DQo+IA0KPiBPbiBXZWQsIDI2IFNlcCAyMDE4IGF0IDEyOjA3LCBaZW5nLCBTdGFyDQo+IDxzdGFy LnplbmdAaW50ZWwuY29tPiB3cm90ZToNCj4gPg0KPiA+IEEgbGl0dGxlIGxhdGUgZmVlZGJhY2su IEp1c3QgYW4gaWRlYS4NCj4gPg0KPiA+IERvIHlvdSB0aGluayB3aGV0aGVyIGl0IGNhbiBtYWtl IHRoZSBjb25zdW1lciBzaW1wbGVyDQo+IGxpa2UgYmVsb3cgb3Igbm90Pw0KPiA+DQo+ID4gQWRk IGEgbmV3IEFQSSBSZWdpc3RlckludGVyZmFjZXMgaW4gdGhlIHByb3RvY29sIGFuZA0KPiBhZGQg YSB3cmFwcGVyIGRyaXZlciBQZUNvZmZFbXVsYXRvckR4ZS4NCj4gPiBUaGUgZW11bGF0b3JzIGNh biBjYWxsIFJlZ2lzdGVySW50ZXJmYWNlcywgYW5kDQo+IGNvbnN1bWVyIHdpbGwgY2FsbCBvdGhl ciBBUElzIHNpbXBseSwgUGVDb2ZmRW11bGF0b3JEeGUNCj4gd2lsbCBiZSBhIHdyYXBwZXIgYXMg bWFuYWdlci4NCj4gPg0KPiA+IHR5cGVkZWYNCj4gPiBFRklfU1RBVFVTDQo+ID4gKEVGSUFQSQ0K PiAqRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1JFR0lTVEVSX0lOVEVSRkFDRVMpICgNCj4g PiAgIElOIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTCAgICAqVGhpcywNCj4g PiAgIElOIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9JU19JTUFHRV9TVVBQT1JURUQNCj4g SXNJbWFnZVN1cHBvcnRlZCwNCj4gPiAgIElOIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9S RUdJU1RFUl9JTUFHRQ0KPiBSZWdpc3RlckltYWdlLA0KPiA+ICAgSU4gRURLSUlfUEVDT0ZGX0lN QUdFX0VNVUxBVE9SX1VOUkVHSVNURVJfSU1BR0UNCj4gVW5yZWdpc3RlckltYWdlDQo+ID4gICAp Ow0KPiA+DQo+ID4gdHlwZWRlZiBzdHJ1Y3QgX0VES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9Q Uk9UT0NPTCB7DQo+ID4gICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUkVHSVNURVJfSU5U RVJGQUNFUw0KPiBSZWdpc3RlckludGVyZmFjZXM7DQo+ID4gICBFREtJSV9QRUNPRkZfSU1BR0Vf RU1VTEFUT1JfSVNfSU1BR0VfU1VQUE9SVEVEDQo+IElzSW1hZ2VTdXBwb3J0ZWQ7DQo+ID4gICBF REtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUkVHSVNURVJfSU1BR0UNCj4gUmVnaXN0ZXJJbWFn ZTsNCj4gPiAgIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9VTlJFR0lTVEVSX0lNQUdFDQo+ IFVucmVnaXN0ZXJJbWFnZTsNCj4gPiB9IEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9U T0NPTDsNCj4gPg0KPiANCj4gSGkgU3RhciwNCj4gDQo+IFRoYW5rcyBmb3IgdGFraW5nIGEgbG9v ay4NCj4gDQo+IEkgdHJpZWQgdG8gYXZvaWQgaW50cm9kdWNpbmcgbmV3IGRyaXZlcnMgb3IgbGli cmFyeQ0KPiBjbGFzc2VzIGJlY2F1c2UgaXQNCj4gd2lsbCBicmVhayBleGlzdGluZyBwbGF0Zm9y bXMgdGhhdCBpbmNvcnBvcmF0ZSBFYmNEeGUuDQo+IERvIHlvdSB0aGluaw0KPiB0aGlzIGlzIG5v dCBhbiBpc3N1ZT8NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9t OiBBcmQgQmllc2hldXZlbA0KPiBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmddDQo+ ID4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjEsIDIwMTggNzowMiBBTQ0KPiA+IFRvOiBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+IENjOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2 ZWxAbGluYXJvLm9yZz47DQo+IFppbW1lciwgVmluY2VudCA8dmluY2VudC56aW1tZXJAaW50ZWwu Y29tPjsgUmljaGFyZHNvbiwNCj4gQnJpYW4gPGJyaWFuLnJpY2hhcmRzb25AaW50ZWwuY29tPjsg S2lubmV5LCBNaWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgQW5kcmV3 IEZpc2gNCj4gPGFmaXNoQGFwcGxlLmNvbT47IExlaWYgTGluZGhvbG0NCj4gPGxlaWYubGluZGhv bG1AbGluYXJvLm9yZz47IFplbmcsIFN0YXINCj4gPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBEb25n LCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsNCj4gTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRl bC5jb20+OyBHYW8sIExpbWluZw0KPiA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBDYXJzZXksIEph YmVuDQo+IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPjsgU2hpLCBTdGV2ZW4NCj4gPHN0ZXZlbi5z aGlAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFtQQVRDSCB2MyAxLzddIE1kZU1vZHVsZVBrZzog aW50cm9kdWNlDQo+IFBFL0NPRkYgaW1hZ2UgZW11bGF0b3IgcHJvdG9jb2wNCj4gPg0KPiA+IElu dHJvZHVjZSBhIHByb3RvY29sIHRoYXQgY2FuIGJlIGludm9rZWQgYnkgdGhlIGltYWdlDQo+IGxv YWRpbmcgc2VydmljZXMgdG8gZXhlY3V0ZSBmb3JlaWduIGFyY2hpdGVjdHVyZSBQRS9DT0ZGDQo+ IGltYWdlcyB2aWEgYW4gZW11bGF0b3IuDQo+ID4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlh bm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQNCj4gMS4xDQo+ID4gU2lnbmVkLW9mZi1ieTog QXJkIEJpZXNoZXV2ZWwNCj4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+ID4gLS0tDQo+ ID4gIE1kZU1vZHVsZVBrZy9JbmNsdWRlL1Byb3RvY29sL1BlQ29mZkltYWdlRW11bGF0b3IuaCB8 DQo+IDEwMiArKysrKysrKysrKysrKysrKysrKw0KPiA+ICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxl UGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA0ICsNCj4gPiAgMiBmaWxlcyBjaGFu Z2VkLCAxMDYgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiBhL01kZU1vZHVs ZVBrZy9JbmNsdWRlL1Byb3RvY29sL1BlQ29mZkltYWdlRW11bGF0b3IuaA0KPiBiL01kZU1vZHVs ZVBrZy9JbmNsdWRlL1Byb3RvY29sL1BlQ29mZkltYWdlRW11bGF0b3IuaA0KPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yN2JhZDU1NjIwOWMNCj4gPiAt LS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvTWRlTW9kdWxlUGtnL0luY2x1ZGUvUHJvdG9jb2wv UGVDb2ZmSW1hZ2VFbXVsYXRvci5oDQo+ID4gQEAgLTAsMCArMSwxMDIgQEANCj4gPiArLyoqIEBm aWxlDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8sIEx0ZC4gQWxsIHJpZ2h0cw0K PiByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMgYXJlDQo+IGxpY2Vuc2VkIGFuZCBtYWRlDQo+ID4gKyBhdmFpbGFi bGUgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2Ug d2hpY2gNCj4gPiArIGFjY29tcGFuaWVzIHRoaXMgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRl eHQgb2YNCj4gdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ID4gKyBmb3VuZCBhdCAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC0NCj4gbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9ODQo+IEFOICJB UyBJUyIgQkFTSVMsDQo+ID4gKyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELA0KPiBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIFBFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTF9H VUlEX0gNCj4gPiArI2RlZmluZSBQRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0xfR1VJRF9I DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NP TF9HVUlEIFwNCj4gPiArICB7IDB4OTZGNDYxNTMsIDB4OTdBNywgMHg0NzkzLCB7IDB4QUMsIDB4 QzEsIDB4RkEsDQo+IDB4MTksIDB4QkYsIDB4NzgsDQo+ID4gKzB4RUEsIDB4OTcgfSB9DQo+ID4g Kw0KPiA+ICt0eXBlZGVmIHN0cnVjdCBfRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1BST1RP Q09MDQo+ID4gK0VES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTDsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIENoZWNrIHdoZXRoZXIgdGhlIGVtdWxhdG9yIHN1cHBvcnRzIGV4ZWN1 dGluZyBhDQo+IGNlcnRhaW4gUEUvQ09GRiBpbWFnZQ0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d IFRoaXMgICAgICAgICBUaGlzIHBvaW50ZXIgZm9yDQo+IEVES0lJX1BFQ09GRl9JTUFHRV9FTVVM QVRPUl9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZQ0K PiA+ICsgIEBwYXJhbVtpbl0gTWFjaGluZVR5cGUgIFRoZSBtYWNoaW5lIHR5cGUgZm9yIHdoaWNo DQo+IHRoZSBpbWFnZSB3YXMgYnVpbHQNCj4gPiArICBAcGFyYW1baW5dIEltYWdlVHlwZSAgICBX aGV0aGVyIHRoZSBpbWFnZSBpcyBhbg0KPiBhcHBsaWNhdGlvbiwgYSBib290IHRpbWUNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgb3IgYSBydW50aW1lIGRyaXZlci4NCj4g PiArICBAcGFyYW1baW5dIERldmljZVBhdGggICBQYXRoIHRvIGRldmljZSB3aGVyZSB0aGUNCj4g aW1hZ2Ugb3JpZ2luYXRlZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCBh IFBDSSBvcHRpb24gUk9NKQ0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgICBU aGUgaW1hZ2UgaXMgc3VwcG9ydGVkIGJ5DQo+IHRoZSBlbXVsYXRvcg0KPiA+ICsgIEByZXR2YWwg RkFMU0UgICAgICAgICAgIFRoZSBpbWFnZSBpcyBub3Qgc3VwcG9ydGVkDQo+IGJ5IHRoZSBlbXVs YXRvci4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArQk9PTEVBTg0KPiA+ICsoRUZJQVBJ DQo+ICpFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfSVNfSU1BR0VfU1VQUE9SVEVEKSAoDQo+ ID4gKyAgSU4gIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTCAgICAqVGhpcywN Cj4gPiArICBJTiAgVUlOVDE2DQo+IE1hY2hpbmVUeXBlLA0KPiA+ICsgIElOICBVSU5UMTYNCj4g SW1hZ2VUeXBlLA0KPiA+ICsgIElOICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wNCj4gKkRldmlj ZVBhdGggICBPUFRJT05BTA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWdp c3RlciBhIHN1cHBvcnRlZCBQRS9DT0ZGIGltYWdlIHdpdGggdGhlDQo+IGVtdWxhdG9yLiBBZnRl ciB0aGlzIGNhbGwNCj4gPiArICBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCB0aGUgUEUvQ09GRiBp bWFnZSBtYXkgYmUNCj4gc3RhcnRlZCBhcyB1c3VhbCwNCj4gPiArYW5kDQo+ID4gKyAgaXQgaXMg dGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBlbXVsYXRvcg0KPiBpbXBsZW1lbnRhdGlvbiB0aGF0 IGFueQ0KPiA+ICticmFuY2gNCj4gPiArICBpbnRvIHRoZSBjb2RlIHNlY3Rpb24gb2YgdGhlIGlt YWdlIChpbmNsdWRpbmcNCj4gcmV0dXJucyBmcm9tIGZ1bmN0aW9ucw0KPiA+ICtjYWxsZWQNCj4g PiArICBmcm9tIHRoZSBmb3JlaWduIGNvZGUpIGlzIGV4ZWN1dGVkIGFzIGlmIGl0IHdlcmUNCj4g cnVubmluZyBvbiB0aGUNCj4gPiArbWFjaGluZQ0KPiA+ICsgIHR5cGUgaXQgd2FzIGJ1aWx0IGZv ci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIFRoaXMgICAgICAgICAgVGhpcyBwb2lu dGVyIGZvcg0KPiA+ICsNCj4gRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1BST1RPQ09MIHN0 cnVjdHVyZQ0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBJbWFnZUJhc2UgICAgIFRoZSBiYXNlIGFk ZHJlc3MgaW4NCj4gbWVtb3J5IG9mIHRoZSBQRS9DT0ZGIGltYWdlDQo+ID4gKyAgQHBhcmFtW2lu XSAgICAgIEltYWdlU2l6ZSAgICAgVGhlIHNpemUgaW4gbWVtb3J5IG9mDQo+IHRoZSBQRS9DT0ZG IGltYWdlDQo+ID4gKyAgQHBhcmFtW2luLG91dF0gIEVudHJ5UG9pbnQgICAgVGhlIGVudHJ5IHBv aW50IG9mDQo+IHRoZSBQRS9DT0ZGIGltYWdlLiBQYXNzZWQgYnkNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2Ugc28gdGhhdCB0aGUNCj4gZW11bGF0b3IgbWF5 IG1vZGlmeSBpdC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg VGhlIGltYWdlIHdhcw0KPiByZWdpc3RlcmVkIHdpdGggdGhlIGVtdWxhdG9yIGFuZA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBzdGFydGVkIGFzDQo+IHVzdWFs Lg0KPiA+ICsgIEByZXR2YWwgb3RoZXIgICAgICAgICAgICAgICAgIFRoZSBpbWFnZSBjb3VsZCBu b3QNCj4gYmUgcmVnaXN0ZXJlZC4NCj4gPiArDQo+ID4gKyAgSWYgdGhlIFBFL0NPRkYgbWFjaGlu ZSB0eXBlIG9yIGltYWdlIHR5cGUgYXJlIG5vdA0KPiBzdXBwb3J0ZWQgYnkgdGhlDQo+ID4gK2Vt dWxhdG9yLA0KPiA+ICsgIHRoZW4gQVNTRVJUKCkuDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ ID4gK0VGSV9TVEFUVVMNCj4gPiArKEVGSUFQSSAqRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9S X1JFR0lTVEVSX0lNQUdFKQ0KPiAoDQo+ID4gKyAgSU4gICAgICBFREtJSV9QRUNPRkZfSU1BR0Vf RU1VTEFUT1JfUFJPVE9DT0wNCj4gKlRoaXMsDQo+ID4gKyAgSU4gICAgICBFRklfUEhZU0lDQUxf QUREUkVTUw0KPiBJbWFnZUJhc2UsDQo+ID4gKyAgSU4gICAgICBVSU5UNjQNCj4gSW1hZ2VTaXpl LA0KPiA+ICsgIElOICBPVVQgRUZJX0lNQUdFX0VOVFJZX1BPSU5UDQo+ICpFbnRyeVBvaW50DQo+ ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFVucmVnaXN0ZXIgYSBQRS9DT0ZGIGlt YWdlIHRoYXQgaGFzIGJlZW4gcmVnaXN0ZXJlZA0KPiB3aXRoIHRoZSBlbXVsYXRvci4NCj4gPiAr ICBUaGlzIHNob3VsZCBiZSBkb25lIGJlZm9yZSB0aGUgaW1hZ2UgaXMgdW5sb2FkZWQNCj4gZnJv bSBtZW1vcnkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gVGhpcyAgICAgICAgIFRoaXMgcG9p bnRlciBmb3INCj4gRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1BST1RPQ09MDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlDQo+ID4gKyAgQHBhcmFtW2luXSBJbWFn ZUJhc2UgICAgVGhlIGJhc2UgYWRkcmVzcyBpbiBtZW1vcnkNCj4gb2YgdGhlIFBFL0NPRkYgaW1h Z2UNCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgVGhlIGltYWdlIHdhcyB1 bnJlZ2lzdGVyZWQNCj4gd2l0aCB0aGUgZW11bGF0b3IuDQo+ID4gKyAgQHJldHZhbCBvdGhlciAg ICAgICAgICAgSW1hZ2UgY291bGQgbm90IGJlDQo+IHVubG9hZGVkLg0KPiA+ICsqKi8NCj4gPiAr dHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkNCj4gKkVES0lJX1BFQ09GRl9J TUFHRV9FTVVMQVRPUl9VTlJFR0lTVEVSX0lNQUdFKSAoDQo+ID4gKyAgSU4gIEVES0lJX1BFQ09G Rl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTCAgICAqVGhpcywNCj4gPiArICBJTiAgRUZJX1BIWVNJ Q0FMX0FERFJFU1MNCj4gSW1hZ2VCYXNlDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gK3R5cGVkZWYg c3RydWN0IF9FREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0wNCj4gew0KPiA+ICsg IEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9JU19JTUFHRV9TVVBQT1JURUQNCj4gSXNJbWFn ZVN1cHBvcnRlZDsNCj4gPiArICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUkVHSVNURVJf SU1BR0UNCj4gUmVnaXN0ZXJJbWFnZTsNCj4gPiArICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFU T1JfVU5SRUdJU1RFUl9JTUFHRQ0KPiBVbnJlZ2lzdGVySW1hZ2U7DQo+ID4gK30gRURLSUlfUEVD T0ZGX0lNQUdFX0VNVUxBVE9SX1BST1RPQ09MOw0KPiA+ICsNCj4gPiArZXh0ZXJuIEVGSV9HVUlE DQo+IGdFZGtpaVBlQ29mZkltYWdlRW11bGF0b3JQcm90b2NvbEd1aWQ7DQo+ID4gKw0KPiA+ICsj ZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4g Yi9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYyBpbmRleA0KPiA2YTZkOTY2MGVkYzIuLmJl MzA3MzI5ZjkwMSAxMDA2NDQNCj4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRl Yw0KPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gQEAgLTYxNyw2 ICs2MTcsMTAgQEANCj4gPg0KPiA+ICAgICMjIEluY2x1ZGUvUHJvdG9jb2wvQXRhQXRhcGlQb2xp Y3kuaA0KPiA+ICAgIGdFZGtpaUF0YUF0YXBpUG9saWN5UHJvdG9jb2xHdWlkID0geyAweGU1OWNk NzY5LA0KPiAweDUwODMsIDB4NGYyNix7IDB4OTAsIDB4OTQsIDB4NmMsIDB4OTEsIDB4OWYsIDB4 OTEsDQo+IDB4NmMsIDB4NGUgfSB9DQo+ID4gKw0KPiA+ICsgICMjIEluY2x1ZGUvUHJvdG9jb2wv UGVDb2ZmSW1hZ2VFbXVsYXRvci5oDQo+ID4gKyAgZ0Vka2lpUGVDb2ZmSW1hZ2VFbXVsYXRvclBy b3RvY29sR3VpZCA9IHsNCj4gMHg5NmY0NjE1MywgMHg5N2E3LCAweDQ3OTMsDQo+ID4gKyB7IDB4 YWMsIDB4YzEsIDB4ZmEsIDB4MTksIDB4YmYsIDB4NzgsIDB4ZWEsIDB4OTcgfSB9DQo+ID4gKw0K PiA+ICAjDQo+ID4gICMgW0Vycm9yLmdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZF0NCj4g PiAgIyAgIDB4ODAwMDAwMDEgfCBJbnZhbGlkIHZhbHVlIHByb3ZpZGVkLg0KPiA+IC0tDQo+ID4g Mi4xNy4xDQo+ID4NCg==