From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: jiewen.yao@intel.com) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by groups.io with SMTP; Thu, 03 Oct 2019 17:10:36 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Oct 2019 17:10:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,254,1566889200"; d="scan'208";a="221973708" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga002.fm.intel.com with ESMTP; 03 Oct 2019 17:10:35 -0700 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 3 Oct 2019 17:10:34 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.176]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.225]) with mapi id 14.03.0439.000; Fri, 4 Oct 2019 08:10:33 +0800 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "lersek@redhat.com" , Achin Gupta , Supreeth Venkatesh Subject: Re: [edk2-devel] [PATCH 33/35] StandaloneMmPkg/Core: stop abusing EFI_HANDLE for FwVolHeader tracking Thread-Topic: [edk2-devel] [PATCH 33/35] StandaloneMmPkg/Core: stop abusing EFI_HANDLE for FwVolHeader tracking Thread-Index: AQHVeds/YxE4vr9iNECflkndtylU9qdJnERA Date: Fri, 4 Oct 2019 00:10:32 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503F7EBE99@shsmsx102.ccr.corp.intel.com> References: <20190917194935.24322-1-lersek@redhat.com> <20190917194935.24322-34-lersek@redhat.com> <86cfd468-7fd4-e7b0-dcd5-cc183abd076d@redhat.com> In-Reply-To: <86cfd468-7fd4-e7b0-dcd5-cc183abd076d@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzY4ODg3YjItN2EyMS00ZjBjLTg2OWYtZjIzYWU2NWIxMmU3IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoid1BwQngwSnI5ZFIxaFBxYjJRZXF5QlwvWDNVczVwcXpHMk1lMUg5YnpPamttQ0loK1BMVkFCNlZyYUtHYVdESDEifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: jiewen.yao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 R29vZCBjYXRjaC4NCg0KUmV2aWV3ZWQtYnk6IEppZXdlbiBZYW8gPEppZXdlbi55YW9AaW50ZWwu Y29tPg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIu Z3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIExhc3psbyBFcnNl aw0KPiBTZW50OiBUaHVyc2RheSwgT2N0b2JlciAzLCAyMDE5IDc6MTEgUE0NCj4gVG86IEFjaGlu IEd1cHRhIDxhY2hpbi5ndXB0YUBhcm0uY29tPjsgWWFvLCBKaWV3ZW4NCj4gPGppZXdlbi55YW9A aW50ZWwuY29tPjsgU3VwcmVldGggVmVua2F0ZXNoIDxzdXByZWV0aC52ZW5rYXRlc2hAYXJtLmNv bT4NCj4gQ2M6IGVkazItZGV2ZWwtZ3JvdXBzLWlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4g U3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggMzMvMzVdIFN0YW5kYWxvbmVNbVBrZy9D b3JlOiBzdG9wIGFidXNpbmcNCj4gRUZJX0hBTkRMRSBmb3IgRndWb2xIZWFkZXIgdHJhY2tpbmcN Cj4gDQo+IFBpbmdpbmcgU3RhbmRhbG9uZU1tUGtnIG1haW50YWluZXJzIGFnYWluLCBmb3IgcmV2 aWV3aW5nIHRoaXMgcGF0Y2guDQo+IA0KPiBUaGFua3MNCj4gTGFzemxvDQo+IA0KPiBPbiAwOS8y Ni8xOSAxNDo0OCwgTGFzemxvIEVyc2VrIHdyb3RlOg0KPiA+IEFjaGluLCBKaWV3ZW4sIFN1cHJl ZXRoLA0KPiA+DQo+ID4gY2FuIG9uZSBvZiB5b3UgZ3V5cyBwbGVhc2UgcmV2aWV3IHRoaXMgcGF0 Y2g/DQo+ID4NCj4gPiBUaGFua3MNCj4gPiBMYXN6bG8NCj4gPg0KPiA+IE9uIDA5LzE3LzE5IDIx OjQ5LCBMYXN6bG8gRXJzZWsgd3JvdGU6DQo+ID4+IFRoZSBGdkhhc0JlZW5Qcm9jZXNzZWQoKSBh bmQgRnZJc0JlaW5nUHJvY2Vzc3NlZCgpIGZ1bmN0aW9ucyBtYWtlIHN1cmUNCj4gPj4gdGhhdCBl dmVyeSBmaXJtd2FyZSB2b2x1bWUgaXMgcHJvY2Vzc2VkIG9ubHkgb25jZSAoZXZlcnkgZHJpdmVy IGluIGV2ZXJ5DQo+ID4+IGZpcm13YXJlIHZvbHVtZSBzaG91bGQgYmUgZGlzY292ZXJlZCBvbmx5 IG9uY2UpLiBGb3IgdGhpcywgdGhlIGZ1bmN0aW9ucw0KPiA+PiB1c2UgYSBsaW5rZWQgbGlzdC4N Cj4gPj4NCj4gPj4gSW4gTWRlTW9kdWxlUGtnJ3MgRFhFIENvcmUgYW5kIFNNTSBDb3JlLCB0aGUg a2V5IHVzZWQgZm9yIGlkZW50aWZ5aW5nDQo+ID4+IHRob3NlIGZpcm13YXJlIHZvbHVtZXMgdGhh dCBoYXZlIGJlZW4gcHJvY2Vzc2VkIGlzIHRoZSBFRklfSEFORExFIG9uDQo+IHdoaWNoDQo+ID4+ IHRoZSBEWEUgb3IgU01NIGZpcm13YXJlIHZvbHVtZSBwcm90b2NvbCBpcyBpbnN0YWxsZWQuIElu IHRoZQ0KPiA+PiBTdGFuZGFsb25lTW1Qa2cgY29yZSBob3dldmVyLCB0aGUga2V5IGlzIHRoZSBh ZGRyZXNzIG9mIHRoZSBmaXJtd2FyZQ0KPiA+PiB2b2x1bWUgaGVhZGVyOyB0aGF0IGlzLCBpdCBo YXMgdHlwZSAoRUZJX0ZJUk1XQVJFX1ZPTFVNRV9IRUFERVIqKS4NCj4gPj4NCj4gPj4gKEVGSV9G SVJNV0FSRV9WT0xVTUVfSEVBREVSKikgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBFRklfSEFORExF Lg0KPiA+PiBFRklfSEFORExFIGp1c3QgaGFwcGVucyB0byBiZSBzcGVjaWZpZWQgYXMgKFZPSUQq KSwgYW5kIHRoZXJlZm9yZSB0aGUNCj4gPj4gY29udmVyc2lvbiBiZXR3ZWVuIChFRklfRklSTVdB UkVfVk9MVU1FX0hFQURFUiopIGFuZCBFRklfSEFORExFDQo+IGlzIHNpbGVudC4NCj4gPj4NCj4g Pj4gKFRoZSBGdkhhc0JlZW5Qcm9jZXNzZWQoKSBhbmQgRnZJc0JlaW5nUHJvY2Vzc3NlZCgpIGZ1 bmN0aW9ucyB3ZXJlIGxpa2VseQ0KPiA+PiBjb3BpZWQgdmVyYmF0aW0gZnJvbSBNZGVNb2R1bGVQ a2cncyBEWEUgQ29yZSBhbmQvb3IgdGhlIFNNTSBDb3JlLCBhbmQNCj4gbm90DQo+ID4+IGZsYWdn ZWQgYnkgdGhlIGNvbXBpbGVyIGluIFN0YW5kYWxvbmVNbVBrZyBkdWUgdG8gVUVGSSByZWdyZXR0 YWJseQ0KPiA+PiBzcGVjaWZ5aW5nIEVGSV9IQU5ETEUgYXMgKFZPSUQqKSwgdGhlcmVieSBlbmFi bGluZyB0aGUgYWJvdmUgaW1wbGljaXQNCj4gPj4gY29udmVyc2lvbi4pDQo+ID4+DQo+ID4+IFdl IHNob3VsZCBub3QgZXhwbG9pdCB0aGlzIGNpcmN1bXN0YW5jZS4gUmVwcmVzZW50IHRoZSBrZXkg dHlwZSBmYWl0aGZ1bGx5DQo+ID4+IGluc3RlYWQuDQo+ID4+DQo+ID4+IFRoaXMgaXMgYSBzZW1h bnRpYyBmaXg7IHRoZXJlIGlzIG5vIGNoYW5nZSBpbiBvcGVyYXRpb24uDQo+ID4+DQo+ID4+IENj OiBBY2hpbiBHdXB0YSA8YWNoaW4uZ3VwdGFAYXJtLmNvbT4NCj4gPj4gQ2M6IEppZXdlbiBZYW8g PGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+PiBDYzogU3VwcmVldGggVmVua2F0ZXNoIDxzdXBy ZWV0aC52ZW5rYXRlc2hAYXJtLmNvbT4NCj4gPj4gU2lnbmVkLW9mZi1ieTogTGFzemxvIEVyc2Vr IDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPj4gLS0tDQo+ID4+DQo+ID4+IE5vdGVzOg0KPiA+PiAg ICAgYnVpbGQtdGVzdGVkIG9ubHkNCj4gPj4NCj4gPj4gIFN0YW5kYWxvbmVNbVBrZy9Db3JlL1N0 YW5kYWxvbmVNbUNvcmUuaCB8ICAyICstDQo+ID4+ICBTdGFuZGFsb25lTW1Qa2cvQ29yZS9EaXNw YXRjaGVyLmMgICAgICAgfCA4MCArKysrKysrKysrKy0tLS0tLS0tLQ0KPiA+PiAgU3RhbmRhbG9u ZU1tUGtnL0NvcmUvRndWb2wuYyAgICAgICAgICAgIHwgMTYgKystLQ0KPiA+PiAgMyBmaWxlcyBj aGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkNCj4gPj4NCj4gPj4gZGlm ZiAtLWdpdCBhL1N0YW5kYWxvbmVNbVBrZy9Db3JlL1N0YW5kYWxvbmVNbUNvcmUuaA0KPiBiL1N0 YW5kYWxvbmVNbVBrZy9Db3JlL1N0YW5kYWxvbmVNbUNvcmUuaA0KPiA+PiBpbmRleCBkY2Y5MWJj NWU5MTYuLjIzZGRiZTE2OWZhZiAxMDA2NDQNCj4gPj4gLS0tIGEvU3RhbmRhbG9uZU1tUGtnL0Nv cmUvU3RhbmRhbG9uZU1tQ29yZS5oDQo+ID4+ICsrKyBiL1N0YW5kYWxvbmVNbVBrZy9Db3JlL1N0 YW5kYWxvbmVNbUNvcmUuaA0KPiA+PiBAQCAtNjcsNyArNjcsNyBAQCB0eXBlZGVmIHN0cnVjdCB7 DQo+ID4+DQo+ID4+ICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgICAgICAgICAgU2NoZWR1bGVk TGluazsgICAgLy8gbVNjaGVkdWxlZFF1ZXVlDQo+ID4+DQo+ID4+IC0gIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICAgICAgICAgRnZIYW5kbGU7DQo+ID4+ICsgIEVGSV9GSVJNV0FSRV9WT0xVTUVf SEVBREVSICAgICAgKkZ3Vm9sSGVhZGVyOw0KPiA+PiAgICBFRklfR1VJRCAgICAgICAgICAgICAg ICAgICAgICAgIEZpbGVOYW1lOw0KPiA+PiAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpQZTMyRGF0YTsNCj4gPj4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBQ ZTMyRGF0YVNpemU7DQo+ID4+IGRpZmYgLS1naXQgYS9TdGFuZGFsb25lTW1Qa2cvQ29yZS9EaXNw YXRjaGVyLmMNCj4gYi9TdGFuZGFsb25lTW1Qa2cvQ29yZS9EaXNwYXRjaGVyLmMNCj4gPj4gaW5k ZXggMzc4ODM4OWY5NWVkLi45ODUzNDQ1YTY0YTEgMTAwNjQ0DQo+ID4+IC0tLSBhL1N0YW5kYWxv bmVNbVBrZy9Db3JlL0Rpc3BhdGNoZXIuYw0KPiA+PiArKysgYi9TdGFuZGFsb25lTW1Qa2cvQ29y ZS9EaXNwYXRjaGVyLmMNCj4gPj4gQEAgLTUsNyArNSw3IEBADQo+ID4+ICAgICAgICAgICAgICBp cyBhZGRlZCB0byB0aGUgbURpc2NvdmVyZWRMaXN0LiBUaGUgQmVmb3JlLCBhbmQgQWZ0ZXIgRGVw ZXggYXJlDQo+ID4+ICAgICAgICAgICAgICBwcmUtcHJvY2Vzc2VkIGFzIGRyaXZlcnMgYXJlIGFk ZGVkIHRvIHRoZSBtRGlzY292ZXJlZExpc3QuIElmIGFuDQo+IEFwcmlvcmkNCj4gPj4gICAgICAg ICAgICAgIGZpbGUgZXhpc3RzIGluIHRoZSBGViB0aG9zZSBkcml2ZXJzIGFyZSBhZGRlZGVkIHRv IHRoZQ0KPiA+PiAtICAgICAgICAgICAgbVNjaGVkdWxlZFF1ZXVlLiBUaGUgbUZ2SGFuZGxlTGlz dCBpcyB1c2VkIHRvIG1ha2Ugc3VyZSBhDQo+ID4+ICsgICAgICAgICAgICBtU2NoZWR1bGVkUXVl dWUuIFRoZSBtRndWb2xMaXN0IGlzIHVzZWQgdG8gbWFrZSBzdXJlIGENCj4gPj4gICAgICAgICAg ICAgIEZWIGlzIG9ubHkgcHJvY2Vzc2VkIG9uY2UuDQo+ID4+DQo+ID4+ICAgIFN0ZXAgIzIgLSBE aXNwYXRjaC4gUmVtb3ZlIGRyaXZlciBmcm9tIHRoZSBtU2NoZWR1bGVkUXVldWUgYW5kIGxvYWQg YW5kDQo+ID4+IEBAIC00MCwxMyArNDAsMTMgQEANCj4gPj4gIC8vDQo+ID4+ICAvLyBNTSBEaXNw YXRjaGVyIERhdGEgc3RydWN0dXJlcw0KPiA+PiAgLy8NCj4gPj4gLSNkZWZpbmUgS05PV05fSEFO RExFX1NJR05BVFVSRSAgU0lHTkFUVVJFXzMyKCdrJywnbicsJ28nLCd3JykNCj4gPj4gKyNkZWZp bmUgS05PV05fRldWT0xfU0lHTkFUVVJFICBTSUdOQVRVUkVfMzIoJ2snLCduJywnbycsJ3cnKQ0K PiA+Pg0KPiA+PiAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+PiAtICBVSU5UTiAgICAgICAgICAgU2ln bmF0dXJlOw0KPiA+PiAtICBMSVNUX0VOVFJZICAgICAgTGluazsgICAgICAgICAvLyBtRnZIYW5k bGVMaXN0DQo+ID4+IC0gIEVGSV9IQU5ETEUgICAgICBIYW5kbGU7DQo+ID4+IC19IEtOT1dOX0hB TkRMRTsNCj4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiA+ PiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICBMaW5rOyAgICAgICAgIC8vIG1Gd1ZvbExp c3QNCj4gPj4gKyAgRUZJX0ZJUk1XQVJFX1ZPTFVNRV9IRUFERVIgKkZ3Vm9sSGVhZGVyOw0KPiA+ PiArfSBLTk9XTl9GV1ZPTDsNCj4gPj4NCj4gPj4gIC8vDQo+ID4+ICAvLyBGdW5jdGlvbiBQcm90 b3R5cGVzDQo+ID4+IEBAIC04Niw5ICs4NiwxMCBAQCBMSVNUX0VOVFJZICBtRGlzY292ZXJlZExp c3QgPQ0KPiBJTklUSUFMSVpFX0xJU1RfSEVBRF9WQVJJQUJMRSAobURpc2NvdmVyZWRMaXN0KTsN Cj4gPj4gIExJU1RfRU5UUlkgIG1TY2hlZHVsZWRRdWV1ZSA9IElOSVRJQUxJWkVfTElTVF9IRUFE X1ZBUklBQkxFDQo+IChtU2NoZWR1bGVkUXVldWUpOw0KPiA+Pg0KPiA+PiAgLy8NCj4gPj4gLS8v IExpc3Qgb2YgaGFuZGxlcyB3aG8ncyBGdidzIGhhdmUgYmVlbiBwYXJzZWQgYW5kIGFkZGVkIHRv IHRoZQ0KPiBtRndEcml2ZXJMaXN0Lg0KPiA+PiArLy8gTGlzdCBvZiBmaXJtd2FyZSB2b2x1bWUg aGVhZGVycyB3aG9zZSBjb250YWluaW5nIGZpcm13YXJlIHZvbHVtZXMNCj4gaGF2ZSBiZWVuDQo+ ID4+ICsvLyBwYXJzZWQgYW5kIGFkZGVkIHRvIHRoZSBtRndEcml2ZXJMaXN0Lg0KPiA+PiAgLy8N Cj4gPj4gLUxJU1RfRU5UUlkgIG1GdkhhbmRsZUxpc3QgPSBJTklUSUFMSVpFX0xJU1RfSEVBRF9W QVJJQUJMRQ0KPiAobUZ2SGFuZGxlTGlzdCk7DQo+ID4+ICtMSVNUX0VOVFJZICBtRndWb2xMaXN0 ID0gSU5JVElBTElaRV9MSVNUX0hFQURfVkFSSUFCTEUgKG1Gd1ZvbExpc3QpOw0KPiA+Pg0KPiA+ PiAgLy8NCj4gPj4gIC8vIEZsYWcgZm9yIHRoZSBNTSBEaXNwYWNoZXIuICBUUlVFIGlmIGRpc3Bh dGNoZXIgaXMgZXhlY3VpbmcuDQo+ID4+IEBAIC03NjksMjYgKzc3MCwzMCBAQA0KPiBNbUluc2Vy dE9uU2NoZWR1bGVkUXVldWVXaGlsZVByb2Nlc3NpbmdCZWZvcmVBbmRBZnRlciAoDQo+ID4+ICB9 DQo+ID4+DQo+ID4+ICAvKioNCj4gPj4gLSAgUmV0dXJuIFRSVUUgaWYgdGhlIEZ2IGhhcyBiZWVu IHByb2Nlc3NlZCwgRkFMU0UgaWYgbm90Lg0KPiA+PiArICBSZXR1cm4gVFJVRSBpZiB0aGUgZmly bXdhcmUgdm9sdW1lIGhhcyBiZWVuIHByb2Nlc3NlZCwgRkFMU0UgaWYgbm90Lg0KPiA+Pg0KPiA+ PiAtICBAcGFyYW0gIEZ2SGFuZGxlICAgICAgICAgICAgICBUaGUgaGFuZGxlIG9mIGEgRlYgdGhh dCdzIGJlaW5nIHRlc3RlZA0KPiA+PiArICBAcGFyYW0gIEZ3Vm9sSGVhZGVyICAgICAgICAgICBU aGUgaGVhZGVyIG9mIHRoZSBmaXJtd2FyZSB2b2x1bWUgdGhhdCdzDQo+IGJlaW5nDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlZC4NCj4gPj4NCj4gPj4gLSAgQHJl dHZhbCBUUlVFICAgICAgICAgICAgICAgICAgRnYgcHJvdG9jb2wgb24gRnZIYW5kbGUgaGFzIGJl ZW4gcHJvY2Vzc2VkDQo+ID4+IC0gIEByZXR2YWwgRkFMU0UgICAgICAgICAgICAgICAgIEZ2IHBy b3RvY29sIG9uIEZ2SGFuZGxlIGhhcyBub3QgeWV0IGJlZW4NCj4gPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkDQo+ID4+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICAgICAgICAgIFRoZSBmaXJtd2FyZSB2b2x1bWUgZGVub3RlZCBieSBGd1ZvbEhlYWRlciBoYXMN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBwcm9jZXNzZWQNCj4g Pj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgICAgICAgICAgVGhlIGZpcm13YXJlIHZvbHVtZSBk ZW5vdGVkIGJ5IEZ3Vm9sSGVhZGVyIGhhcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBub3QgeWV0IGJlZW4gcHJvY2Vzc2VkDQo+ID4+DQo+ID4+ICAqKi8NCj4gPj4gIEJP T0xFQU4NCj4gPj4gIEZ2SGFzQmVlblByb2Nlc3NlZCAoDQo+ID4+IC0gIElOIEVGSV9IQU5ETEUg IEZ2SGFuZGxlDQo+ID4+ICsgIElOIEVGSV9GSVJNV0FSRV9WT0xVTUVfSEVBREVSICpGd1ZvbEhl YWRlcg0KPiA+PiAgICApDQo+ID4+ICB7DQo+ID4+ICAgIExJU1RfRU5UUlkgICAgKkxpbms7DQo+ ID4+IC0gIEtOT1dOX0hBTkRMRSAgKktub3duSGFuZGxlOw0KPiA+PiArICBLTk9XTl9GV1ZPTCAg ICpLbm93bkZ3Vm9sOw0KPiA+Pg0KPiA+PiAtICBmb3IgKExpbmsgPSBtRnZIYW5kbGVMaXN0LkZv cndhcmRMaW5rOyBMaW5rICE9ICZtRnZIYW5kbGVMaXN0OyBMaW5rID0gTGluay0NCj4gPkZvcndh cmRMaW5rKSB7DQo+ID4+IC0gICAgS25vd25IYW5kbGUgPSBDUiAoTGluaywgS05PV05fSEFORExF LCBMaW5rLA0KPiBLTk9XTl9IQU5ETEVfU0lHTkFUVVJFKTsNCj4gPj4gLSAgICBpZiAoS25vd25I YW5kbGUtPkhhbmRsZSA9PSBGdkhhbmRsZSkgew0KPiA+PiArICBmb3IgKExpbmsgPSBtRndWb2xM aXN0LkZvcndhcmRMaW5rOw0KPiA+PiArICAgICAgIExpbmsgIT0gJm1Gd1ZvbExpc3Q7DQo+ID4+ ICsgICAgICAgTGluayA9IExpbmstPkZvcndhcmRMaW5rKSB7DQo+ID4+ICsgICAgS25vd25Gd1Zv bCA9IENSIChMaW5rLCBLTk9XTl9GV1ZPTCwgTGluaywNCj4gS05PV05fRldWT0xfU0lHTkFUVVJF KTsNCj4gPj4gKyAgICBpZiAoS25vd25Gd1ZvbC0+RndWb2xIZWFkZXIgPT0gRndWb2xIZWFkZXIp IHsNCj4gPj4gICAgICAgIHJldHVybiBUUlVFOw0KPiA+PiAgICAgIH0NCj4gPj4gICAgfQ0KPiA+ PiBAQCAtNzk2LDI4ICs4MDEsMjkgQEAgRnZIYXNCZWVuUHJvY2Vzc2VkICgNCj4gPj4gIH0NCj4g Pj4NCj4gPj4gIC8qKg0KPiA+PiAtICBSZW1lbWJlciB0aGF0IEZ2IHByb3RvY29sIG9uIEZ2SGFu ZGxlIGhhcyBoYWQgaXQncyBkcml2ZXJzIHBsYWNlZCBvbiB0aGUNCj4gPj4gLSAgbURpc2NvdmVy ZWRMaXN0LiBUaGlzIGZ1Y250aW9uIGFkZHMgZW50cmllcyBvbiB0aGUgbUZ2SGFuZGxlTGlzdC4g SXRlbXMNCj4gYXJlDQo+ID4+IC0gIG5ldmVyIHJlbW92ZWQvZnJlZWQgZnJvbSB0aGUgbUZ2SGFu ZGxlTGlzdC4NCj4gPj4gKyAgUmVtZW1iZXIgdGhhdCB0aGUgZmlybXdhcmUgdm9sdW1lIGRlbm90 ZWQgYnkgRndWb2xIZWFkZXIgaGFzIGhhZCBpdHMNCj4gZHJpdmVycw0KPiA+PiArICBwbGFjZWQg b24gbURpc2NvdmVyZWRMaXN0LiBUaGlzIGZ1bmN0aW9uIGFkZHMgZW50cmllcyB0byBtRndWb2xM aXN0LiBJdGVtcw0KPiA+PiArICBhcmUgbmV2ZXIgcmVtb3ZlZC9mcmVlZCBmcm9tIG1Gd1ZvbExp c3QuDQo+ID4+DQo+ID4+IC0gIEBwYXJhbSAgRnZIYW5kbGUgICAgICAgICAgICAgIFRoZSBoYW5k bGUgb2YgYSBGViB0aGF0IGhhcyBiZWVuIHByb2Nlc3NlZA0KPiA+PiArICBAcGFyYW0gIEZ3Vm9s SGVhZGVyICAgICAgICAgICBUaGUgaGVhZGVyIG9mIHRoZSBmaXJtd2FyZSB2b2x1bWUgdGhhdCdz DQo+IGJlaW5nDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nl ZC4NCj4gPj4NCj4gPj4gICoqLw0KPiA+PiAgVk9JRA0KPiA+PiAgRnZJc0JlaW5nUHJvY2Vzc3Nl ZCAoDQo+ID4+IC0gIElOIEVGSV9IQU5ETEUgIEZ2SGFuZGxlDQo+ID4+ICsgIElOIEVGSV9GSVJN V0FSRV9WT0xVTUVfSEVBREVSICpGd1ZvbEhlYWRlcg0KPiA+PiAgICApDQo+ID4+ICB7DQo+ID4+ IC0gIEtOT1dOX0hBTkRMRSAgKktub3duSGFuZGxlOw0KPiA+PiArICBLTk9XTl9GV1ZPTCAgICpL bm93bkZ3Vm9sOw0KPiA+Pg0KPiA+PiAtICBERUJVRyAoKERFQlVHX0lORk8sICJGdklzQmVpbmdQ cm9jZXNzc2VkIC0gMHglMDh4XG4iLCBGdkhhbmRsZSkpOw0KPiA+PiArICBERUJVRyAoKERFQlVH X0lORk8sICJGdklzQmVpbmdQcm9jZXNzc2VkIC0gMHglMDh4XG4iLCBLbm93bkZ3Vm9sKSk7DQo+ ID4+DQo+ID4+IC0gIEtub3duSGFuZGxlID0gQWxsb2NhdGVQb29sIChzaXplb2YgKEtOT1dOX0hB TkRMRSkpOw0KPiA+PiAtICBBU1NFUlQgKEtub3duSGFuZGxlICE9IE5VTEwpOw0KPiA+PiArICBL bm93bkZ3Vm9sID0gQWxsb2NhdGVQb29sIChzaXplb2YgKEtOT1dOX0ZXVk9MKSk7DQo+ID4+ICsg IEFTU0VSVCAoS25vd25Gd1ZvbCAhPSBOVUxMKTsNCj4gPj4NCj4gPj4gLSAgS25vd25IYW5kbGUt PlNpZ25hdHVyZSA9IEtOT1dOX0hBTkRMRV9TSUdOQVRVUkU7DQo+ID4+IC0gIEtub3duSGFuZGxl LT5IYW5kbGUgPSBGdkhhbmRsZTsNCj4gPj4gLSAgSW5zZXJ0VGFpbExpc3QgKCZtRnZIYW5kbGVM aXN0LCAmS25vd25IYW5kbGUtPkxpbmspOw0KPiA+PiArICBLbm93bkZ3Vm9sLT5TaWduYXR1cmUg PSBLTk9XTl9GV1ZPTF9TSUdOQVRVUkU7DQo+ID4+ICsgIEtub3duRndWb2wtPkZ3Vm9sSGVhZGVy ID0gRndWb2xIZWFkZXI7DQo+ID4+ICsgIEluc2VydFRhaWxMaXN0ICgmbUZ3Vm9sTGlzdCwgJktu b3duRndWb2wtPkxpbmspOw0KPiA+PiAgfQ0KPiA+Pg0KPiA+PiAgLyoqDQo+ID4+IEBAIC04NDIs MTIgKzg0OCwxMiBAQCBGdklzQmVpbmdQcm9jZXNzc2VkICgNCj4gPj4gICoqLw0KPiA+PiAgRUZJ X1NUQVRVUw0KPiA+PiAgTW1BZGRUb0RyaXZlckxpc3QgKA0KPiA+PiAtICBJTiBFRklfSEFORExF ICAgRnZIYW5kbGUsDQo+ID4+IC0gIElOIFZPSUQgICAgICAgICAqUGUzMkRhdGEsDQo+ID4+IC0g IElOIFVJTlROICAgICAgICBQZTMyRGF0YVNpemUsDQo+ID4+IC0gIElOIFZPSUQgICAgICAgICAq RGVwZXgsDQo+ID4+IC0gIElOIFVJTlROICAgICAgICBEZXBleFNpemUsDQo+ID4+IC0gIElOIEVG SV9HVUlEICAgICAqRHJpdmVyTmFtZQ0KPiA+PiArICBJTiBFRklfRklSTVdBUkVfVk9MVU1FX0hF QURFUiAqRndWb2xIZWFkZXIsDQo+ID4+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAg ICpQZTMyRGF0YSwNCj4gPj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgUGUzMkRh dGFTaXplLA0KPiA+PiArICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICAqRGVwZXgsDQo+ ID4+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgIERlcGV4U2l6ZSwNCj4gPj4gKyAg SU4gRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgKkRyaXZlck5hbWUNCj4gPj4gICAgKQ0KPiA+ PiAgew0KPiA+PiAgICBFRklfTU1fRFJJVkVSX0VOVFJZICAqRHJpdmVyRW50cnk7DQo+ID4+IEBA IC04NjMsNyArODY5LDcgQEAgTW1BZGRUb0RyaXZlckxpc3QgKA0KPiA+Pg0KPiA+PiAgICBEcml2 ZXJFbnRyeS0+U2lnbmF0dXJlICAgICAgICA9IEVGSV9NTV9EUklWRVJfRU5UUllfU0lHTkFUVVJF Ow0KPiA+PiAgICBDb3B5R3VpZCAoJkRyaXZlckVudHJ5LT5GaWxlTmFtZSwgRHJpdmVyTmFtZSk7 DQo+ID4+IC0gIERyaXZlckVudHJ5LT5GdkhhbmRsZSAgICAgICAgID0gRnZIYW5kbGU7DQo+ID4+ ICsgIERyaXZlckVudHJ5LT5Gd1ZvbEhlYWRlciAgICAgID0gRndWb2xIZWFkZXI7DQo+ID4+ICAg IERyaXZlckVudHJ5LT5QZTMyRGF0YSAgICAgICAgID0gUGUzMkRhdGE7DQo+ID4+ICAgIERyaXZl ckVudHJ5LT5QZTMyRGF0YVNpemUgICAgID0gUGUzMkRhdGFTaXplOw0KPiA+PiAgICBEcml2ZXJF bnRyeS0+RGVwZXggICAgICAgICAgICA9IERlcGV4Ow0KPiA+PiBkaWZmIC0tZ2l0IGEvU3RhbmRh bG9uZU1tUGtnL0NvcmUvRndWb2wuYw0KPiBiL1N0YW5kYWxvbmVNbVBrZy9Db3JlL0Z3Vm9sLmMN Cj4gPj4gaW5kZXggOWZlMGMyNTdhNDNhLi45OWVjZjRhZjQ3MTQgMTAwNjQ0DQo+ID4+IC0tLSBh L1N0YW5kYWxvbmVNbVBrZy9Db3JlL0Z3Vm9sLmMNCj4gPj4gKysrIGIvU3RhbmRhbG9uZU1tUGtn L0NvcmUvRndWb2wuYw0KPiA+PiBAQCAtMjQsMjIgKzI0LDIyIEBAIEVGSV9GVl9GSUxFVFlQRSBt TW1GaWxlVHlwZXNbXSA9IHsNCj4gPj4NCj4gPj4gIEVGSV9TVEFUVVMNCj4gPj4gIE1tQWRkVG9E cml2ZXJMaXN0ICgNCj4gPj4gLSAgSU4gRUZJX0hBTkRMRSAgIEZ2SGFuZGxlLA0KPiA+PiAtICBJ TiBWT0lEICAgICAgICAgKlBlMzJEYXRhLA0KPiA+PiAtICBJTiBVSU5UTiAgICAgICAgUGUzMkRh dGFTaXplLA0KPiA+PiAtICBJTiBWT0lEICAgICAgICAgKkRlcGV4LA0KPiA+PiAtICBJTiBVSU5U TiAgICAgICAgRGVwZXhTaXplLA0KPiA+PiAtICBJTiBFRklfR1VJRCAgICAgKkRyaXZlck5hbWUN Cj4gPj4gKyAgSU4gRUZJX0ZJUk1XQVJFX1ZPTFVNRV9IRUFERVIgKkZ3Vm9sSGVhZGVyLA0KPiA+ PiArICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICAqUGUzMkRhdGEsDQo+ID4+ICsgIElO IFVJTlROICAgICAgICAgICAgICAgICAgICAgIFBlMzJEYXRhU2l6ZSwNCj4gPj4gKyAgSU4gVk9J RCAgICAgICAgICAgICAgICAgICAgICAgKkRlcGV4LA0KPiA+PiArICBJTiBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICBEZXBleFNpemUsDQo+ID4+ICsgIElOIEVGSV9HVUlEICAgICAgICAgICAg ICAgICAgICpEcml2ZXJOYW1lDQo+ID4+ICAgICk7DQo+ID4+DQo+ID4+ICBCT09MRUFODQo+ID4+ ICBGdkhhc0JlZW5Qcm9jZXNzZWQgKA0KPiA+PiAtICBJTiBFRklfSEFORExFICBGdkhhbmRsZQ0K PiA+PiArICBJTiBFRklfRklSTVdBUkVfVk9MVU1FX0hFQURFUiAqRndWb2xIZWFkZXINCj4gPj4g ICAgKTsNCj4gPj4NCj4gPj4gIFZPSUQNCj4gPj4gIEZ2SXNCZWluZ1Byb2Nlc3NzZWQgKA0KPiA+ PiAtICBJTiBFRklfSEFORExFICBGdkhhbmRsZQ0KPiA+PiArICBJTiBFRklfRklSTVdBUkVfVk9M VU1FX0hFQURFUiAqRndWb2xIZWFkZXINCj4gPj4gICAgKTsNCj4gPj4NCj4gPj4gIEVGSV9TVEFU VVMNCj4gPj4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiANCj4gDQo+IA0KDQo=