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.115; helo=mga14.intel.com; envelope-from=star.zeng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 415622194D3AE for ; Wed, 26 Sep 2018 17:48:21 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Sep 2018 17:48:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,308,1534834800"; d="scan'208";a="236242983" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga004.jf.intel.com with ESMTP; 26 Sep 2018 17:48:19 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 26 Sep 2018 17:48:19 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.140]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.220]) with mapi id 14.03.0319.002; Thu, 27 Sep 2018 08:48:18 +0800 From: "Zeng, Star" To: "Kinney, Michael D" , Ard Biesheuvel CC: "edk2-devel@lists.01.org" , "Zimmer, Vincent" , "Richardson, Brian" , Andrew Fish , Leif Lindholm , "Dong, Eric" , "Ni, Ruiyu" , "Gao, Liming" , "Carsey, Jaben" , "Shi, Steven" , "Zeng, Star" Thread-Topic: [PATCH v3 1/7] MdeModulePkg: introduce PE/COFF image emulator protocol Thread-Index: AQHUVb7cRVFYbeiXpkin2nDWr1hK5KUDSyWA Date: Thu, 27 Sep 2018 00:48:17 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103BBF1D27@shsmsx102.ccr.corp.intel.com> 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: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] 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: Thu, 27 Sep 2018 00:48:21 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 WWVzLiBUaGlzIGlkZWEgYWxzbyBjYW1lIHRvIG15IG1pbmQgbGFzdCBuaWdodCwgdGhlbiBubyBu ZWVkIGludHJvZHVjZSBQZUNvZmZFbXVsYXRvckR4ZSBhbmQgbm8gcGxhdGZvcm0gY2hhbmdlIGlz IG5lZWRlZC4NCg0KVGhhbmtzLA0KU3Rhcg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZy b206IEtpbm5leSwgTWljaGFlbCBEIA0KU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyNywgMjAx OCAxOjMyIEFNDQpUbzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+ OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBa aW1tZXIsIFZpbmNlbnQgPHZpbmNlbnQuemltbWVyQGludGVsLmNvbT47IFJpY2hhcmRzb24sIEJy aWFuIDxicmlhbi5yaWNoYXJkc29uQGludGVsLmNvbT47IEFuZHJldyBGaXNoIDxhZmlzaEBhcHBs ZS5jb20+OyBMZWlmIExpbmRob2xtIDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+OyBEb25nLCBF cmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+ OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBDYXJzZXksIEphYmVuIDxqYWJl bi5jYXJzZXlAaW50ZWwuY29tPjsgU2hpLCBTdGV2ZW4gPHN0ZXZlbi5zaGlAaW50ZWwuY29tPg0K U3ViamVjdDogUkU6IFtQQVRDSCB2MyAxLzddIE1kZU1vZHVsZVBrZzogaW50cm9kdWNlIFBFL0NP RkYgaW1hZ2UgZW11bGF0b3IgcHJvdG9jb2wNCg0KSGkgQXJkLA0KDQpJIHRoaW5rIHRoaXMgcmVn aXN0cmF0aW9uIHByb3RvY29sIHdvdWxkIGJlIGEgbmV3IHByb3RvY29sIGluIHRoZSBNZGVNb2R1 bGVQa2cgYW5kIHRoZSBwcm90b2NvbCB3b3VsZCBiZSBwcm9kdWNlZCBieSB0aGUgRFhFIENvcmUu ICBUaGUgZW11bGF0aW9uIGRyaXZlcnMsIGluY2x1ZGluZyBFQkMgd291bGQgY29uc3VtZSB0aGlz IHByb3RvY29sIHRvIHJlZ2lzdGVyIHRoZWlyIHNlcnZpY2VzLiAgVGhpcyByZW1vdmVzIHRoZSBu ZWVkIGZvciB0aGUgRFhFIENvcmUgdG8gZG8gYSBSZWdpc3RlciBQcm90b2NvbCBOb3RpZnkgZXZl bnQgZm9yIHRoZSBlbXVsYXRvciBwcm90b2NvbC4gIFRoZSBEWEUgQ29yZSB3b3VsZCBidWlsZCBh IHRhYmxlIG9mIHJlZ2lzdGVyZWQgc2VydmljZXMsIHNvIGl0IGNhbiBxdWlja2x5IGxvb3AgdGhy b3VnaCB0aGVtIHRvIGNoZWNrIGlmIGFuIGVtdWxhdG9yIHN1cHBvcnRzIGEgc3BlY2lmaWMgUEUv Q09GRiBpbWFnZSBvciBub3QuDQoNCkJlc3QgcmVnYXJkcywNCg0KTWlrZQ0KDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFyZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJp ZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMjYsIDIw MTggMzoxNCBBTQ0KPiBUbzogWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gQ2M6 IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBaaW1tZXIsIFZpbmNlbnQgDQo+IDx2aW5jZW50Lnpp bW1lckBpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBCcmlhbiANCj4gPGJyaWFuLnJpY2hhcmRzb25A aW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT47IEFuZHJldyBGaXNoIDxhZmlzaEBhcHBsZS5jb20+OyBMZWlmIA0KPiBMaW5kaG9sbSA8 bGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnPjsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNv bT47IA0KPiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1p bmcuZ2FvQGludGVsLmNvbT47IA0KPiBDYXJzZXksIEphYmVuIDxqYWJlbi5jYXJzZXlAaW50ZWwu Y29tPjsgU2hpLCBTdGV2ZW4gDQo+IDxzdGV2ZW4uc2hpQGludGVsLmNvbT4NCj4gU3ViamVjdDog UmU6IFtQQVRDSCB2MyAxLzddIE1kZU1vZHVsZVBrZzogaW50cm9kdWNlIFBFL0NPRkYgaW1hZ2Ug DQo+IGVtdWxhdG9yIHByb3RvY29sDQo+IA0KPiBPbiBXZWQsIDI2IFNlcCAyMDE4IGF0IDEyOjA3 LCBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPiB3cm90ZToNCj4gPg0KPiA+IEEgbGl0 dGxlIGxhdGUgZmVlZGJhY2suIEp1c3QgYW4gaWRlYS4NCj4gPg0KPiA+IERvIHlvdSB0aGluayB3 aGV0aGVyIGl0IGNhbiBtYWtlIHRoZSBjb25zdW1lciBzaW1wbGVyDQo+IGxpa2UgYmVsb3cgb3Ig bm90Pw0KPiA+DQo+ID4gQWRkIGEgbmV3IEFQSSBSZWdpc3RlckludGVyZmFjZXMgaW4gdGhlIHBy b3RvY29sIGFuZA0KPiBhZGQgYSB3cmFwcGVyIGRyaXZlciBQZUNvZmZFbXVsYXRvckR4ZS4NCj4g PiBUaGUgZW11bGF0b3JzIGNhbiBjYWxsIFJlZ2lzdGVySW50ZXJmYWNlcywgYW5kDQo+IGNvbnN1 bWVyIHdpbGwgY2FsbCBvdGhlciBBUElzIHNpbXBseSwgUGVDb2ZmRW11bGF0b3JEeGUgd2lsbCBi ZSBhIA0KPiB3cmFwcGVyIGFzIG1hbmFnZXIuDQo+ID4NCj4gPiB0eXBlZGVmDQo+ID4gRUZJX1NU QVRVUw0KPiA+IChFRklBUEkNCj4gKkVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9SRUdJU1RF Ul9JTlRFUkZBQ0VTKSAoDQo+ID4gICBJTiBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJP VE9DT0wgICAgKlRoaXMsDQo+ID4gICBJTiBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfSVNf SU1BR0VfU1VQUE9SVEVEDQo+IElzSW1hZ2VTdXBwb3J0ZWQsDQo+ID4gICBJTiBFREtJSV9QRUNP RkZfSU1BR0VfRU1VTEFUT1JfUkVHSVNURVJfSU1BR0UNCj4gUmVnaXN0ZXJJbWFnZSwNCj4gPiAg IElOIEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9VTlJFR0lTVEVSX0lNQUdFDQo+IFVucmVn aXN0ZXJJbWFnZQ0KPiA+ICAgKTsNCj4gPg0KPiA+IHR5cGVkZWYgc3RydWN0IF9FREtJSV9QRUNP RkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0wgew0KPiA+ICAgRURLSUlfUEVDT0ZGX0lNQUdFX0VN VUxBVE9SX1JFR0lTVEVSX0lOVEVSRkFDRVMNCj4gUmVnaXN0ZXJJbnRlcmZhY2VzOw0KPiA+ICAg RURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX0lTX0lNQUdFX1NVUFBPUlRFRA0KPiBJc0ltYWdl U3VwcG9ydGVkOw0KPiA+ICAgRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1JFR0lTVEVSX0lN QUdFDQo+IFJlZ2lzdGVySW1hZ2U7DQo+ID4gICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1Jf VU5SRUdJU1RFUl9JTUFHRQ0KPiBVbnJlZ2lzdGVySW1hZ2U7DQo+ID4gfSBFREtJSV9QRUNPRkZf SU1BR0VfRU1VTEFUT1JfUFJPVE9DT0w7DQo+ID4NCj4gDQo+IEhpIFN0YXIsDQo+IA0KPiBUaGFu a3MgZm9yIHRha2luZyBhIGxvb2suDQo+IA0KPiBJIHRyaWVkIHRvIGF2b2lkIGludHJvZHVjaW5n IG5ldyBkcml2ZXJzIG9yIGxpYnJhcnkgY2xhc3NlcyBiZWNhdXNlIGl0IA0KPiB3aWxsIGJyZWFr IGV4aXN0aW5nIHBsYXRmb3JtcyB0aGF0IGluY29ycG9yYXRlIEViY0R4ZS4NCj4gRG8geW91IHRo aW5rDQo+IHRoaXMgaXMgbm90IGFuIGlzc3VlPw0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+IEZyb206IEFyZCBCaWVzaGV1dmVsDQo+IFttYWlsdG86YXJkLmJpZXNoZXV2 ZWxAbGluYXJvLm9yZ10NCj4gPiBTZW50OiBGcmlkYXksIFNlcHRlbWJlciAyMSwgMjAxOCA3OjAy IEFNDQo+ID4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gQ2M6IEFyZCBCaWVzaGV1 dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsNCj4gWmltbWVyLCBWaW5jZW50IDx2aW5j ZW50LnppbW1lckBpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBCcmlhbiANCj4gPGJyaWFuLnJpY2hh cmRzb25AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgDQo+IDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT47IEFuZHJldyBGaXNoIDxhZmlzaEBhcHBsZS5jb20+OyBMZWlmIA0KPiBMaW5k aG9sbSA8bGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnPjsgWmVuZywgU3RhciA8c3Rhci56ZW5nQGlu dGVsLmNvbT47IA0KPiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgTmksIFJ1aXl1 IDxydWl5dS5uaUBpbnRlbC5jb20+OyBHYW8sIA0KPiBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwu Y29tPjsgQ2Fyc2V5LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT47IA0KPiBTaGksIFN0 ZXZlbiA8c3RldmVuLnNoaUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogW1BBVENIIHYzIDEvN10g TWRlTW9kdWxlUGtnOiBpbnRyb2R1Y2UNCj4gUEUvQ09GRiBpbWFnZSBlbXVsYXRvciBwcm90b2Nv bA0KPiA+DQo+ID4gSW50cm9kdWNlIGEgcHJvdG9jb2wgdGhhdCBjYW4gYmUgaW52b2tlZCBieSB0 aGUgaW1hZ2UNCj4gbG9hZGluZyBzZXJ2aWNlcyB0byBleGVjdXRlIGZvcmVpZ24gYXJjaGl0ZWN0 dXJlIFBFL0NPRkYgaW1hZ2VzIHZpYSBhbiANCj4gZW11bGF0b3IuDQo+ID4NCj4gPiBDb250cmli dXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQNCj4gMS4xDQo+ID4g U2lnbmVkLW9mZi1ieTogQXJkIEJpZXNoZXV2ZWwNCj4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5v cmc+DQo+ID4gLS0tDQo+ID4gIE1kZU1vZHVsZVBrZy9JbmNsdWRlL1Byb3RvY29sL1BlQ29mZklt YWdlRW11bGF0b3IuaCB8DQo+IDEwMiArKysrKysrKysrKysrKysrKysrKw0KPiA+ICBNZGVNb2R1 bGVQa2cvTWRlTW9kdWxlUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA0ICsNCj4g PiAgMiBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdp dA0KPiBhL01kZU1vZHVsZVBrZy9JbmNsdWRlL1Byb3RvY29sL1BlQ29mZkltYWdlRW11bGF0b3Iu aA0KPiBiL01kZU1vZHVsZVBrZy9JbmNsdWRlL1Byb3RvY29sL1BlQ29mZkltYWdlRW11bGF0b3Iu aA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yN2Jh ZDU1NjIwOWMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvTWRlTW9kdWxlUGtnL0lu Y2x1ZGUvUHJvdG9jb2wvUGVDb2ZmSW1hZ2VFbXVsYXRvci5oDQo+ID4gQEAgLTAsMCArMSwxMDIg QEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8sIEx0 ZC4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlDQo+IGxpY2Vuc2VkIGFuZCBtYWRl DQo+ID4gKyBhdmFpbGFibGUgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUg QlNEDQo+IExpY2Vuc2Ugd2hpY2gNCj4gPiArIGFjY29tcGFuaWVzIHRoaXMgIGRpc3RyaWJ1dGlv bi4gIFRoZSBmdWxsIHRleHQgb2YNCj4gdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ID4gKyBmb3VuZCBh dCAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC0NCj4gbGljZW5zZS5waHANCj4g PiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9ODQo+IEFOICJBUyBJUyIgQkFTSVMsDQo+ID4gKyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELA0KPiBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIFBFQ09GRl9JTUFHRV9FTVVM QVRPUl9QUk9UT0NPTF9HVUlEX0gNCj4gPiArI2RlZmluZSBQRUNPRkZfSU1BR0VfRU1VTEFUT1Jf UFJPVE9DT0xfR1VJRF9IDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEVES0lJX1BFQ09GRl9JTUFHRV9F TVVMQVRPUl9QUk9UT0NPTF9HVUlEIFwNCj4gPiArICB7IDB4OTZGNDYxNTMsIDB4OTdBNywgMHg0 NzkzLCB7IDB4QUMsIDB4QzEsIDB4RkEsDQo+IDB4MTksIDB4QkYsIDB4NzgsDQo+ID4gKzB4RUEs IDB4OTcgfSB9DQo+ID4gKw0KPiA+ICt0eXBlZGVmIHN0cnVjdCBfRURLSUlfUEVDT0ZGX0lNQUdF X0VNVUxBVE9SX1BST1RPQ09MDQo+ID4gK0VES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9U T0NPTDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIENoZWNrIHdoZXRoZXIgdGhlIGVtdWxhdG9y IHN1cHBvcnRzIGV4ZWN1dGluZyBhDQo+IGNlcnRhaW4gUEUvQ09GRiBpbWFnZQ0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dIFRoaXMgICAgICAgICBUaGlzIHBvaW50ZXIgZm9yDQo+IEVES0lJX1BF Q09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdHVyZSAgQHBhcmFtW2luXSBNYWNoaW5lVHlwZSAgVGhlIA0KPiA+ICsgbWFjaGlu ZSB0eXBlIGZvciB3aGljaA0KPiB0aGUgaW1hZ2Ugd2FzIGJ1aWx0DQo+ID4gKyAgQHBhcmFtW2lu XSBJbWFnZVR5cGUgICAgV2hldGhlciB0aGUgaW1hZ2UgaXMgYW4NCj4gYXBwbGljYXRpb24sIGEg Ym9vdCB0aW1lDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIG9yIGEgcnVu dGltZSBkcml2ZXIuDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZpY2VQYXRoICAgUGF0aCB0byBkZXZp Y2Ugd2hlcmUgdGhlDQo+IGltYWdlIG9yaWdpbmF0ZWQNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAoZS5nLiwgYSBQQ0kgb3B0aW9uIFJPTSkNCj4gPiArDQo+ID4gKyAgQHJldHZhbCBU UlVFICAgICAgICAgICAgVGhlIGltYWdlIGlzIHN1cHBvcnRlZCBieQ0KPiB0aGUgZW11bGF0b3IN Cj4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgICBUaGUgaW1hZ2UgaXMgbm90IHN1cHBvcnRl ZA0KPiBieSB0aGUgZW11bGF0b3IuDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK0JPT0xF QU4NCj4gPiArKEVGSUFQSQ0KPiAqRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX0lTX0lNQUdF X1NVUFBPUlRFRCkgKA0KPiA+ICsgIElOICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJP VE9DT0wgICAgKlRoaXMsDQo+ID4gKyAgSU4gIFVJTlQxNg0KPiBNYWNoaW5lVHlwZSwNCj4gPiAr ICBJTiAgVUlOVDE2DQo+IEltYWdlVHlwZSwNCj4gPiArICBJTiAgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MDQo+ICpEZXZpY2VQYXRoICAgT1BUSU9OQUwNCj4gPiArICApOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgUmVnaXN0ZXIgYSBzdXBwb3J0ZWQgUEUvQ09GRiBpbWFnZSB3aXRoIHRoZQ0K PiBlbXVsYXRvci4gQWZ0ZXIgdGhpcyBjYWxsDQo+ID4gKyAgY29tcGxldGVzIHN1Y2Nlc3NmdWxs eSwgdGhlIFBFL0NPRkYgaW1hZ2UgbWF5IGJlDQo+IHN0YXJ0ZWQgYXMgdXN1YWwsDQo+ID4gK2Fu ZA0KPiA+ICsgIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgZW11bGF0b3INCj4gaW1w bGVtZW50YXRpb24gdGhhdCBhbnkNCj4gPiArYnJhbmNoDQo+ID4gKyAgaW50byB0aGUgY29kZSBz ZWN0aW9uIG9mIHRoZSBpbWFnZSAoaW5jbHVkaW5nDQo+IHJldHVybnMgZnJvbSBmdW5jdGlvbnMN Cj4gPiArY2FsbGVkDQo+ID4gKyAgZnJvbSB0aGUgZm9yZWlnbiBjb2RlKSBpcyBleGVjdXRlZCBh cyBpZiBpdCB3ZXJlDQo+IHJ1bm5pbmcgb24gdGhlDQo+ID4gK21hY2hpbmUNCj4gPiArICB0eXBl IGl0IHdhcyBidWlsdCBmb3IuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBUaGlzICAg ICAgICAgIFRoaXMgcG9pbnRlciBmb3INCj4gPiArDQo+IEVES0lJX1BFQ09GRl9JTUFHRV9FTVVM QVRPUl9QUk9UT0NPTCBzdHJ1Y3R1cmUNCj4gPiArICBAcGFyYW1baW5dICAgICAgSW1hZ2VCYXNl ICAgICBUaGUgYmFzZSBhZGRyZXNzIGluDQo+IG1lbW9yeSBvZiB0aGUgUEUvQ09GRiBpbWFnZQ0K PiA+ICsgIEBwYXJhbVtpbl0gICAgICBJbWFnZVNpemUgICAgIFRoZSBzaXplIGluIG1lbW9yeSBv Zg0KPiB0aGUgUEUvQ09GRiBpbWFnZQ0KPiA+ICsgIEBwYXJhbVtpbixvdXRdICBFbnRyeVBvaW50 ICAgIFRoZSBlbnRyeSBwb2ludCBvZg0KPiB0aGUgUEUvQ09GRiBpbWFnZS4gUGFzc2VkIGJ5DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIHNvIHRoYXQgdGhl DQo+IGVtdWxhdG9yIG1heSBtb2RpZnkgaXQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFRoZSBpbWFnZSB3YXMNCj4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBlbXVs YXRvciBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgc3Rh cnRlZCBhcw0KPiB1c3VhbC4NCj4gPiArICBAcmV0dmFsIG90aGVyICAgICAgICAgICAgICAgICBU aGUgaW1hZ2UgY291bGQgbm90DQo+IGJlIHJlZ2lzdGVyZWQuDQo+ID4gKw0KPiA+ICsgIElmIHRo ZSBQRS9DT0ZGIG1hY2hpbmUgdHlwZSBvciBpbWFnZSB0eXBlIGFyZSBub3QNCj4gc3VwcG9ydGVk IGJ5IHRoZQ0KPiA+ICtlbXVsYXRvciwNCj4gPiArICB0aGVuIEFTU0VSVCgpLg0KPiA+ICsqKi8N Cj4gPiArdHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKkVES0lJX1BFQ09G Rl9JTUFHRV9FTVVMQVRPUl9SRUdJU1RFUl9JTUFHRSkNCj4gKA0KPiA+ICsgIElOICAgICAgRURL SUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1BST1RPQ09MDQo+ICpUaGlzLA0KPiA+ICsgIElOICAg ICAgRUZJX1BIWVNJQ0FMX0FERFJFU1MNCj4gSW1hZ2VCYXNlLA0KPiA+ICsgIElOICAgICAgVUlO VDY0DQo+IEltYWdlU2l6ZSwNCj4gPiArICBJTiAgT1VUIEVGSV9JTUFHRV9FTlRSWV9QT0lOVA0K PiAqRW50cnlQb2ludA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBVbnJlZ2lz dGVyIGEgUEUvQ09GRiBpbWFnZSB0aGF0IGhhcyBiZWVuIHJlZ2lzdGVyZWQNCj4gd2l0aCB0aGUg ZW11bGF0b3IuDQo+ID4gKyAgVGhpcyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgdGhlIGltYWdlIGlz IHVubG9hZGVkDQo+IGZyb20gbWVtb3J5Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFRoaXMg ICAgICAgICBUaGlzIHBvaW50ZXIgZm9yDQo+IEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9Q Uk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZQ0KPiA+ICsg IEBwYXJhbVtpbl0gSW1hZ2VCYXNlICAgIFRoZSBiYXNlIGFkZHJlc3MgaW4gbWVtb3J5DQo+IG9m IHRoZSBQRS9DT0ZGIGltYWdlDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg IFRoZSBpbWFnZSB3YXMgdW5yZWdpc3RlcmVkDQo+IHdpdGggdGhlIGVtdWxhdG9yLg0KPiA+ICsg IEByZXR2YWwgb3RoZXIgICAgICAgICAgIEltYWdlIGNvdWxkIG5vdCBiZQ0KPiB1bmxvYWRlZC4N Cj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJDQo+ ICpFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfVU5SRUdJU1RFUl9JTUFHRSkgKA0KPiA+ICsg IElOICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfUFJPVE9DT0wgICAgKlRoaXMsDQo+ID4g KyAgSU4gIEVGSV9QSFlTSUNBTF9BRERSRVNTDQo+IEltYWdlQmFzZQ0KPiA+ICsgICk7DQo+ID4g Kw0KPiA+ICt0eXBlZGVmIHN0cnVjdCBfRURLSUlfUEVDT0ZGX0lNQUdFX0VNVUxBVE9SX1BST1RP Q09MDQo+IHsNCj4gPiArICBFREtJSV9QRUNPRkZfSU1BR0VfRU1VTEFUT1JfSVNfSU1BR0VfU1VQ UE9SVEVEDQo+IElzSW1hZ2VTdXBwb3J0ZWQ7DQo+ID4gKyAgRURLSUlfUEVDT0ZGX0lNQUdFX0VN VUxBVE9SX1JFR0lTVEVSX0lNQUdFDQo+IFJlZ2lzdGVySW1hZ2U7DQo+ID4gKyAgRURLSUlfUEVD T0ZGX0lNQUdFX0VNVUxBVE9SX1VOUkVHSVNURVJfSU1BR0UNCj4gVW5yZWdpc3RlckltYWdlOw0K PiA+ICt9IEVES0lJX1BFQ09GRl9JTUFHRV9FTVVMQVRPUl9QUk9UT0NPTDsNCj4gPiArDQo+ID4g K2V4dGVybiBFRklfR1VJRA0KPiBnRWRraWlQZUNvZmZJbWFnZUVtdWxhdG9yUHJvdG9jb2xHdWlk Ow0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQo+IGIvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMgaW5kZXgNCj4g NmE2ZDk2NjBlZGMyLi5iZTMwNzMyOWY5MDEgMTAwNjQ0DQo+ID4gLS0tIGEvTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kZWMNCj4gPiArKysgYi9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRl Yw0KPiA+IEBAIC02MTcsNiArNjE3LDEwIEBADQo+ID4NCj4gPiAgICAjIyBJbmNsdWRlL1Byb3Rv Y29sL0F0YUF0YXBpUG9saWN5LmgNCj4gPiAgICBnRWRraWlBdGFBdGFwaVBvbGljeVByb3RvY29s R3VpZCA9IHsgMHhlNTljZDc2OSwNCj4gMHg1MDgzLCAweDRmMjYseyAweDkwLCAweDk0LCAweDZj LCAweDkxLCAweDlmLCAweDkxLCAweDZjLCAweDRlIH0gfQ0KPiA+ICsNCj4gPiArICAjIyBJbmNs dWRlL1Byb3RvY29sL1BlQ29mZkltYWdlRW11bGF0b3IuaA0KPiA+ICsgIGdFZGtpaVBlQ29mZklt YWdlRW11bGF0b3JQcm90b2NvbEd1aWQgPSB7DQo+IDB4OTZmNDYxNTMsIDB4OTdhNywgMHg0Nzkz LA0KPiA+ICsgeyAweGFjLCAweGMxLCAweGZhLCAweDE5LCAweGJmLCAweDc4LCAweGVhLCAweDk3 IH0gfQ0KPiA+ICsNCj4gPiAgIw0KPiA+ICAjIFtFcnJvci5nRWZpTWRlTW9kdWxlUGtnVG9rZW5T cGFjZUd1aWRdDQo+ID4gICMgICAweDgwMDAwMDAxIHwgSW52YWxpZCB2YWx1ZSBwcm92aWRlZC4N Cj4gPiAtLQ0KPiA+IDIuMTcuMQ0KPiA+DQo=