From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: michael.d.kinney@intel.com) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by groups.io with SMTP; Mon, 12 Aug 2019 16:22:32 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Aug 2019 16:22:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,379,1559545200"; d="scan'208";a="259945744" Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by orsmga001.jf.intel.com with ESMTP; 12 Aug 2019 16:22:31 -0700 Received: from orsmsx156.amr.corp.intel.com (10.22.240.22) by ORSMSX103.amr.corp.intel.com (10.22.225.130) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 12 Aug 2019 16:22:31 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.177]) by ORSMSX156.amr.corp.intel.com ([169.254.8.12]) with mapi id 14.03.0439.000; Mon, 12 Aug 2019 16:22:31 -0700 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "Gao, Liming" , "Kinney, Michael D" CC: Mike Turner , "Wang, Jian J" , "Wu, Hao A" , "Bi, Dandan" Subject: Re: [edk2-devel] [Patch] MdeModulePkg DxeCore: Fix for missing MAT update Thread-Topic: [edk2-devel] [Patch] MdeModulePkg DxeCore: Fix for missing MAT update Thread-Index: AQHVT4VhqtttrgyZOUWKVm1+M80d96b4KxSA///jy8A= Date: Mon, 12 Aug 2019 23:22:31 +0000 Message-ID: References: <20190810141022.18228-1-liming.gao@intel.com> <66665886-fff1-248a-77e5-6b8fb6966f86@redhat.com> In-Reply-To: <66665886-fff1-248a-77e5-6b8fb6966f86@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Return-Path: michael.d.kinney@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91 cHMuaW8gW21haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pb10NCj4gT24gQmVoYWxmIE9mIExhc3ps byBFcnNlaw0KPiBTZW50OiBNb25kYXksIEF1Z3VzdCAxMiwgMjAxOSA5OjI0IEFNDQo+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsgR2FvLCBMaW1pbmcNCj4gPGxpbWluZy5nYW9AaW50ZWwuY29t Pg0KPiBDYzogTWlrZSBUdXJuZXIgPG1pa2V0dXJAbWljcm9zb2Z0LmNvbT47IFdhbmcsIEppYW4g Sg0KPiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgV3UsIEhhbyBBIDxoYW8uYS53dUBpbnRlbC5j b20+Ow0KPiBCaSwgRGFuZGFuIDxkYW5kYW4uYmlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTog W2VkazItZGV2ZWxdIFtQYXRjaF0gTWRlTW9kdWxlUGtnIER4ZUNvcmU6DQo+IEZpeCBmb3IgbWlz c2luZyBNQVQgdXBkYXRlDQo+IA0KPiBPbiAwOC8xMC8xOSAxNjoxMCwgTGltaW5nIEdhbyB3cm90 ZToNCj4gPiBGcm9tOiBNaWtlIFR1cm5lciA8bWlrZXR1ckBtaWNyb3NvZnQuY29tPg0KPiA+DQo+ ID4gVGhlIEZwZHQgZHJpdmVyIChGaXJtd2FyZVBlcmZvcm1hbmNlRHhlKSBzYXZlcyBhIG1lbW9y eQ0KPiBhZGRyZXNzIGFjcm9zcw0KPiA+IHJlYm9vdHMsIGFuZCB0aGVuIGRvZXMgYW4gQWxsb2Nh dGVQYWdlIGZvciB0aGF0IG1lbW9yeQ0KPiBhZGRyZXNzLg0KPiA+IElmLCBvbiB0aGlzIGJvb3Qs IHRoYXQgbWVtb3J5IGNvbWVzIGZyb20gYSBSdW50aW1lDQo+IG1lbW9yeSBidWNrZXQsIHRoZQ0K PiA+IE1BVCB0YWJsZSBpcyBub3QgdXBkYXRlZC4gVGhpcyBjYXVzZXMgV2luZG93cyB0byBib290 DQo+IGludG8gUmVjb3ZlcnkuDQo+IA0KPiAoMSkgV2hhdCBpcyAiTUFUIj8NCg0KTWVtb3J5IEF0 dHJpYnV0ZXMgVGFibGUgKEVGSV9NRU1PUllfQVRUUklCVVRFU19UQUJMRSkNCg0KPiANCj4gPiBU aGlzIHBhdGNoIGJsb2NrcyB0aGUgbWVtb3J5IG1hbmFnZXIgZnJvbSBjaGFuZ2luZyB0aGUNCj4g cGFnZSBmcm9tIGENCj4gPiBzcGVjaWFsIGJ1Y2tldCB0byBhIGRpZmZlcmVudCBtZW1vcnkgdHlw ZS4gIE9uY2UgdGhlDQo+IGJ1Y2tldHMgYXJlDQo+ID4gYWxsb2NhdGVkLCB3ZSBmcmVlemUgdGhl IG1lbW9yeSByYW5nZXMgZm9yIHRoZSBPUywgYW5kDQo+IGZyYWdtZW50aW5nIHRoZQ0KPiA+IHNw ZWNpYWwgYnVja2V0cyB3aWxsIGNhdXNlIGVycm9ycyByZXN1bWluZyBmcm9tDQo+IGhpYmVybmF0 ZS4NCj4gDQo+ICgyKSBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgQ29yZUNvbnZlcnRQYWdlcygp IHdpbGwgb25seQ0KPiBoYW5kIG91dCB0aGUgcmVxdWVzdGVkIHBhZ2VzIGlmIHRob3NlIHBhZ2Vz IGFyZSBjdXJyZW50bHkNCj4gZnJlZS4gSSBzdWdnZXN0IGNsYXJpZnlpbmcgdGhlIGNvbW1pdCBt ZXNzYWdlIHRoYXQgdGhlDQo+IGludGVudCBpcyB0byBwcmV2ZW50IHRoZSBhbGxvY2F0aW9uIG9m IG90aGVyd2lzZSAqZnJlZSoNCj4gcGFnZXMsIGlmIHRoZSBhbGxvY2F0aW9uIHdvdWxkIGZyYWdt ZW50IHNwZWNpYWwgYnVja2V0cy4NCj4gDQo+ICgzKSBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIGNv bmp1bmN0aW9uICJhbmQiLiBJIHdvdWxkDQo+IHVuZGVyc3RhbmQgaWYgdGhlIHN0YXRlbWVudCB3 ZXJlOg0KPiANCj4gICAgIE9uY2UgdGhlIGJ1Y2tldHMgYXJlIGFsbG9jYXRlZCwgd2UgZnJlZXpl IHRoZSBtZW1vcnkNCj4gcmFuZ2VzIGZvciB0aGUNCj4gICAgIE9TLCAqYmVjYXVzZSogZnJhZ21l bnRpbmcgdGhlIHNwZWNpYWwgYnVja2V0cyAqd291bGQqDQo+IGNhdXNlIGVycm9ycw0KPiAgICAg cmVzdW1pbmcgZnJvbSBoaWJlcm5hdGUuDQo+IA0KPiBJcyB0aGlzIHRoZSBpbnRlbnQ/DQo+IA0K PiA+DQo+ID4gVGhpcyBwYXRjaCBpcyBjaGVycnkgcGljayBmcm9tIFByb2plY3QgTXU6DQo+ID4N Cj4gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9tdV9iYXNlY29yZS9jb21taXQvYTliZTc2 N2Q5DQo+IGJlOTZhZjk0MDE2ZWINCj4gPiBkMzkxZWE2ZjM0MDkyMDczNWENCj4gPiBXaXRoIHRo ZSBtaW5vciBjaGFuZ2UsDQo+ID4gMS4gVXBkYXRlIGNvbW1pdCBtZXNzYWdlIGZvcm1hdCB0byBr ZWVwIHRoZSBtZXNzYWdlIGluDQo+IDgwIGNoYXJhY3RlcnMgb25lIGxpbmUuDQo+ID4gMi4gUmVt b3ZlIC8vIE1VX0NIQU5HRSBjb21tZW50cyBpbiBzb3VyY2UgY29kZS4NCj4gPg0KPiA+IENjOiBK aWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+IENjOiBIYW8gQSBXdSA8aGFv LmEud3VAaW50ZWwuY29tPg0KPiA+IENjOiBEYW5kYW4gQmkgPGRhbmRhbi5iaUBpbnRlbC5jb20+ DQo+ID4gU2lnbmVkLW9mZi1ieTogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ ID4gLS0tDQo+ID4gIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZS9NZW0vUGFnZS5jIHwgNDMNCj4gPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQo+ID4gIDEgZmlsZSBjaGFu Z2VkLCAzNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL01kZU1vZHVsZVBrZy9Db3JlL0R4ZS9NZW0vUGFnZS5jDQo+ID4gYi9NZGVNb2R1bGVQa2cv Q29yZS9EeGUvTWVtL1BhZ2UuYw0KPiA+IGluZGV4IGJkOWUxMTZhYTUuLjYzNzUxODg4OWQgMTAw NjQ0DQo+ID4gLS0tIGEvTWRlTW9kdWxlUGtnL0NvcmUvRHhlL01lbS9QYWdlLmMNCj4gPiArKysg Yi9NZGVNb2R1bGVQa2cvQ29yZS9EeGUvTWVtL1BhZ2UuYw0KPiA+IEBAIC0xMjY1LDEyICsxMjY1 LDEzIEBAIENvcmVJbnRlcm5hbEFsbG9jYXRlUGFnZXMgKA0KPiA+ICAgIElOIEJPT0xFQU4gICAg ICAgICAgICAgICAgTmVlZEd1YXJkDQo+ID4gICAgKQ0KPiA+ICB7DQo+ID4gLSAgRUZJX1NUQVRV UyAgICAgIFN0YXR1czsNCj4gPiAtICBVSU5UNjQgICAgICAgICAgU3RhcnQ7DQo+ID4gLSAgVUlO VDY0ICAgICAgICAgIE51bWJlck9mQnl0ZXM7DQo+ID4gLSAgVUlOVDY0ICAgICAgICAgIEVuZDsN Cj4gPiAtICBVSU5UNjQgICAgICAgICAgTWF4QWRkcmVzczsNCj4gPiAtICBVSU5UTiAgICAgICAg ICAgQWxpZ25tZW50Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJ TlQ2NCAgICAgICAgICAgU3RhcnQ7DQo+ID4gKyAgVUlOVDY0ICAgICAgICAgICBOdW1iZXJPZkJ5 dGVzOw0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgRW5kOw0KPiA+ICsgIFVJTlQ2NCAgICAgICAg ICAgTWF4QWRkcmVzczsNCj4gPiArICBVSU5UTiAgICAgICAgICAgIEFsaWdubWVudDsNCj4gPiAr ICBFRklfTUVNT1JZX1RZUEUgIENoZWNrVHlwZTsNCj4gPg0KPiA+ICAgIGlmICgoVUlOVDMyKVR5 cGUgPj0gTWF4QWxsb2NhdGVUeXBlKSB7DQo+ID4gICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+IEBAIC0xMzIxLDYgKzEzMjIsNyBAQCBDb3JlSW50ZXJuYWxBbGxvY2F0ZVBh Z2VzICgNCj4gPiAgICAvLyBpZiAoU3RhcnQgKyBOdW1iZXJPZkJ5dGVzKSByb2xscyBvdmVyIDAg b3INCj4gPiAgICAvLyBpZiBTdGFydCBpcyBhYm92ZSBNQVhfQUxMT0NfQUREUkVTUyBvcg0KPiA+ ICAgIC8vIGlmIEVuZCBpcyBhYm92ZSBNQVhfQUxMT0NfQUREUkVTUywNCj4gPiArICAvLyBpZiBT dGFydC4uRW5kIG92ZXJsYXBzIGFueSB0cmFja2VkDQo+IE1lbW9yeVR5cGVTdGF0aXN0aWNzIHJh bmdlDQo+ID4gICAgLy8gcmV0dXJuIEVGSV9OT1RfRk9VTkQuDQo+ID4gICAgLy8NCj4gPiAgICBp ZiAoVHlwZSA9PSBBbGxvY2F0ZUFkZHJlc3MpIHsNCj4gPiBAQCAtMTMzNiw2ICsxMzM4LDM1IEBA IENvcmVJbnRlcm5hbEFsbG9jYXRlUGFnZXMgKA0KPiA+ICAgICAgICAgIChFbmQgPiBNYXhBZGRy ZXNzKSkgew0KPiA+ICAgICAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiAgICAgIH0NCj4g PiArDQo+ID4gKyAgICAvLyBQcm9ibGVtIHN1bW1hcnkNCj4gPiArDQo+ID4gKyAgICAvKg0KPiA+ ICsgICAgQSBkcml2ZXIgaXMgYWxsb3dlZCB0byBjYWxsIEFsbG9jYXRlUGFnZXMgdXNpbmcgYW4N Cj4gQWxsb2NhdGVBZGRyZXNzIHR5cGUuICBUaGlzIHR5cGUgb2YNCj4gPiArICAgIEFsbG9jYXRl UGFnZSByZXF1ZXN0IHRoZSBleGFjdCBwaHlzaWNhbCBhZGRyZXNzIGlmDQo+IGl0IGlzIG5vdCB1 c2VkLiAgVGhlIGV4aXN0aW5nIGNvZGUNCj4gPiArICAgIHdpbGwgYWxsb3cgdGhpcyByZXF1ZXN0 IGV2ZW4gaW4gJ3NwZWNpYWwnIHBhZ2VzLg0KPiBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgaXMgdGhh dCB0aGUNCj4gPiArICAgIHJlYXNvbiB0byBoYXZlICdzcGVjaWFsJyBwYWdlcyBmb3IgT1MNCj4g aGliZXJuYXRlL3Jlc3VtZSBpcyBkZWZlYXRlZCBhcyBtZW1vcnkgaXMNCj4gPiArICAgIGZyYWdt ZW50ZWQuDQo+ID4gKyAgICAqLw0KPiANCj4gKDQpIFRoaXMgY29tbWVudCBzdHlsZSBpcyBub3Qg bmF0aXZlIHRvIGVkazIuDQo+IA0KPiBJIHRoaW5rIHRoZSAicHJvYmxlbSBzdW1tYXJ5IiBsaW5l IHNob3VsZCBiZSByZW1vdmVkLCBhbmQNCj4gdGhlIGFjdHVhbCBwcm9ibGVtIHN0YXRlbWVudCBz aG91bGQgdXNlIHRoZSBmb2xsb3dpbmcNCj4gY29tbWVudCBzdHlsZToNCj4gDQo+ICAgLy8NCj4g ICAvLyBibGFoDQo+ICAgLy8NCj4gDQo+IA0KPiA+ICsNCj4gPiArICAgIGZvciAoQ2hlY2tUeXBl ID0gKEVGSV9NRU1PUllfVFlQRSkgMDsgQ2hlY2tUeXBlIDwNCj4gRWZpTWF4TWVtb3J5VHlwZTsg Q2hlY2tUeXBlKyspIHsNCj4gPiArICAgICAgaWYgKE1lbW9yeVR5cGUgIT0gQ2hlY2tUeXBlICYm DQo+ID4gKyAgICAgICAgICBtTWVtb3J5VHlwZVN0YXRpc3RpY3NbQ2hlY2tUeXBlXS5TcGVjaWFs ICYmDQo+ID4gKw0KPiBtTWVtb3J5VHlwZVN0YXRpc3RpY3NbQ2hlY2tUeXBlXS5OdW1iZXJPZlBh Z2VzID4gMCkgew0KPiA+ICsgICAgICAgIGlmIChTdGFydCA+PQ0KPiBtTWVtb3J5VHlwZVN0YXRp c3RpY3NbQ2hlY2tUeXBlXS5CYXNlQWRkcmVzcyAmJg0KPiA+ICsgICAgICAgICAgICBTdGFydCA8 PQ0KPiBtTWVtb3J5VHlwZVN0YXRpc3RpY3NbQ2hlY2tUeXBlXS5NYXhpbXVtQWRkcmVzcykgew0K PiA+ICsgICAgICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4gKyAgICAgICAgfQ0KPiA+ ICsgICAgICAgIGlmIChFbmQgPj0NCj4gbU1lbW9yeVR5cGVTdGF0aXN0aWNzW0NoZWNrVHlwZV0u QmFzZUFkZHJlc3MgJiYNCj4gPiArICAgICAgICAgICAgRW5kIDw9DQo+IG1NZW1vcnlUeXBlU3Rh dGlzdGljc1tDaGVja1R5cGVdLk1heGltdW1BZGRyZXNzKSB7DQo+ID4gKyAgICAgICAgICByZXR1 cm4gRUZJX05PVF9GT1VORDsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgICAgaWYgKFN0YXJ0 IDwNCj4gbU1lbW9yeVR5cGVTdGF0aXN0aWNzW0NoZWNrVHlwZV0uQmFzZUFkZHJlc3MgJiYNCj4g PiArICAgICAgICAgICAgRW5kICAgPg0KPiBtTWVtb3J5VHlwZVN0YXRpc3RpY3NbQ2hlY2tUeXBl XS5NYXhpbXVtQWRkcmVzcykgew0KPiA+ICsgICAgICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7 DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9DQo+ID4gICAgfQ0KPiAN Cj4gKDUpIENoZWNraW5nIGZvciBvdmVybGFwIChpLmUuLCB3aGV0aGVyIHRoZSBpbnRlcnNlY3Rp b24NCj4gaXMgbm9uLWVtcHR5KSBjYW4gYmUgZG9uZSBtb3JlIHNpbXBseSAoaS5lLiwgd2l0aCBm ZXdlcg0KPiBjb21wYXJpc29ucyBpbiB0aGUgd29yc3QgY2FzZSwgYW5kIHdpdGggbGVzcyBjb2Rl KToNCj4gDQo+ICAgaWYgKE1BWCAoU3RhcnQsDQo+IG1NZW1vcnlUeXBlU3RhdGlzdGljc1tDaGVj a1R5cGVdLkJhc2VBZGRyZXNzKSA8PQ0KPiAgICAgICBNSU4gKEVuZCwNCj4gbU1lbW9yeVR5cGVT dGF0aXN0aWNzW0NoZWNrVHlwZV0uTWF4aW11bUFkZHJlc3MpKSB7DQo+ICAgICByZXR1cm4gRUZJ X05PVF9GT1VORDsNCj4gICB9DQo+IA0KPiBidXQgdGhlIHByb3Bvc2VkIGludGVyc2VjdGlvbiBj aGVjayBpcyB0ZWNobmljYWxseSByaWdodA0KPiBhbHJlYWR5LCBJTU8sIHNvIHRoZXJlJ3Mgbm8g c3Ryb25nIG5lZWQgdG8gdXBkYXRlIGl0Lg0KPiANCj4gKFNvbWV3aGF0IHVudXN1YWxseSBmb3Ig dGhpcyBraW5kIG9mIGNvbXBhcmlzb24sIGFsbCBmb3VyDQo+IGJvdW5kYXJpZXMgYXJlIGluY2x1 c2l2ZSBoZXJlLikNCj4gDQo+ICg2KSBCb3RoIHRoZSBjb21taXQgbWVzc2FnZSBhbmQgdGhlIGNv ZGUgY29tbWVudCBzdGF0ZQ0KPiB0aGF0IHRoaXMgcHJvYmxlbSBpcyBzcGVjaWZpYyB0byBTNC4g VGhlcmVmb3JlLCB3ZSBjYW4NCj4gZGlzdGluZ3Vpc2ggdGhyZWUgY2FzZXM6DQo+IA0KPiAoNmEp IFBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCAob3IgZG9lc24ndCBlbmFibGUpIFM0IGF0DQo+IGFs bC4NCj4gDQo+ICg2YikgUGxhdGZvcm0gc3VwcG9ydHMgJiBlbmFibGVzIFM0LCBhbmQgdGhpcyBp cyBhIG5vcm1hbA0KPiBib290Lg0KPiANCj4gKDZjKSBQbGF0Zm9ybSBzdXBwb3J0cyAmIGVuYWJs ZXMgUzQsIGFuZCB0aGlzIGlzIGFjdHVhbGx5DQo+IGFuIFM0IHJlc3VtZS4NCj4gDQo+IFRoZSBj b2RlIGJlaW5nIHByb3Bvc2VkIGFwcGxpZXMgdG8gYWxsIHRocmVlIGNhc2VzLiBJcw0KPiB0aGF0 IHRoZSBpbnRlbnQ/DQo+IFNob3VsZG4ndCB0aGUgbmV3IGNoZWNrIGJlIG1hZGUgY29uZGl0aW9u YWwgb24gKDZjKSAtLQ0KPiBmcm9tIHRoZSBib290IG1vZGUgSE9CIC0tLCBvciBhdCBsZWFzdCBv biAoNmIpfHwoNmMpIC0tDQo+IGkuZS4gdGhlIGNoZWNrIHNob3VsZCBiZSBkaXNhYmxlZCBpZiBT NCBpcyBhYnNlbnQNCj4gZW50aXJlbHk/DQoNCkhpIExhc3psbywNCg0KSSB0aGluayB0aGlzIGNo ZWNrIHNob3VsZCBiZSBhZGRlZCBmb3IgYWxsIGNhc2VzLiBXaXRob3V0DQp0aGlzIGNoYW5nZSwg bWVtb3J5IGFsbG9jYXRpb25zIHVzaW5nIHR5cGUgQWxsb2NhdGVBZGRyZXNzDQpJcyBhbGxvd2Vk IHRvIGFsbG9jYXRlIGluIHRoZSB1bnVzZWQgcG9ydGlvbiBvZiBhIGJpbi4gIFRoaXMNCm1lYW5z IHRoZSBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIG5vdCBjb25zaXN0IHdpdGggdGhlIG1lbW9yeQ0K bWFwIHJldHVybmVkIGJ5IEdldE1lbW9yeU1hcCgpIHRoYXQgc2hvd3MgdGhlIGVudGlyZSBiaW4g YXMNCmFsbG9jYXRlZC4gIFRoZSBvbmx5IGV4Y2VwdGlvbiB0aGF0IGlzIGFsbG93ZWQgaXMgaWYg YW4NCkFsbG9jYXRlQWRkcmVzcyByZXF1ZXN0IGlzIG1hZGUgdG8gdGhlIHVudXNlZCBwb3J0aW9u IG9mIGENCmJpbiB3aGVyZSB0aGUgcmVxdWVzdCBhbmQgdGhlIGJpbiBoYXZlIHRoZSBzYW1lIE1l bW9yeVR5cGUuDQoNClRoZSByZWZlcmVuY2VzIHRvIFM0IGhlcmUgYXJlIHRoZSB1c2UgY2FzZSB0 aGF0IGZhaWxzLiAgVGhpcw0KZmFpbHVyZSBpcyByb290IGNhdXNlZCB0byBhbiBpbmNvbnNpc3Rl bnQgYmVoYXZpb3Igb2YgdGhlIA0KY29yZSBtZW1vcnkgc2VydmljZXMgdGhlbXNlbHZlcyB3aGVu IHR5cGUgQWxsb2NhdGVBZGRyZXNzIGlzDQp1c2VkLiAgDQoNClRoZSBvbmx5IHRpbWUgdGhlc2Ug dHlwZXMgb2YgY2hlY2sgY2FuIGJlIGRpc2FibGVkIGlzIGlmIHRoZQ0KTWVtb3J5IFR5cGUgSW5m b3JtYXRpb24gZmVhdHVyZSBpcyBkaXNhYmxlZC4NCg0KVGhhbmtzLA0KDQpNaWtlDQoNCj4gDQo+ IFRoYW5rcywNCj4gTGFzemxvDQo+IA0KPiANCj4gPg0KPiA+ICAgIGlmIChUeXBlID09IEFsbG9j YXRlTWF4QWRkcmVzcykgew0KPiA+DQo+IA0KPiANCj4gDQoNCg==