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.126; helo=mga18.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (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 4C45A21159C83 for ; Wed, 24 Oct 2018 21:25:00 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Oct 2018 21:24:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,422,1534834800"; d="scan'208";a="81410205" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga008.fm.intel.com with ESMTP; 24 Oct 2018 21:24:59 -0700 Received: from FMSMSX110.amr.corp.intel.com (10.18.116.10) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 24 Oct 2018 21:24:59 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx110.amr.corp.intel.com (10.18.116.10) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 24 Oct 2018 21:24:58 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.161]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.102]) with mapi id 14.03.0415.000; Thu, 25 Oct 2018 12:24:56 +0800 From: "Wang, Jian J" To: "Zeng, Star" , "edk2-devel@lists.01.org" CC: "Kinney, Michael D" , "Ni, Ruiyu" , "Yao, Jiewen" , Laszlo Ersek Thread-Topic: [edk2] [PATCH v3 5/6] MdeModulePkg/Core: prevent re-acquire GCD memory lock Thread-Index: AQHUa1pH9iCjAf4lvki1tODXkfQcmKUuxzwAgACXB6A= Date: Thu, 25 Oct 2018 04:24:56 +0000 Message-ID: References: <20181024052620.4088-1-jian.j.wang@intel.com> <20181024052620.4088-6-jian.j.wang@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTI4MzE3NTYtZTU4Mi00MzEwLTk0NmEtZTI3MTcyNWI0YTViIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoid1JQS0dvejIxOGg3c3JWajNHbzdsWURGZ2c5OVwvY3N3TlwvT2NWSGMreEpONDZsK2o5NEZjUndpMTlHbTFGME5lIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v3 5/6] MdeModulePkg/Core: prevent re-acquire GCD memory lock 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, 25 Oct 2018 04:25:00 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U3VyZS4gSSdsbCBjaGFuZ2UgdGhlbS4gVGhhbmtzLg0KDQpSZWdhcmRzLA0KSmlhbg0KDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWmVuZywgU3Rhcg0KPiBTZW50OiBU aHVyc2RheSwgT2N0b2JlciAyNSwgMjAxOCAxMToyMyBBTQ0KPiBUbzogV2FuZywgSmlhbiBKIDxq aWFuLmoud2FuZ0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiBDYzogS2lu bmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgTmksIFJ1aXl1DQo+ IDxydWl5dS5uaUBpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+ OyBMYXN6bG8gRXJzZWsNCj4gPGxlcnNla0ByZWRoYXQuY29tPjsgWmVuZywgU3RhciA8c3Rhci56 ZW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggdjMgNS82XSBNZGVN b2R1bGVQa2cvQ29yZTogcHJldmVudCByZS1hY3F1aXJlDQo+IEdDRCBtZW1vcnkgbG9jaw0KPiAN Cj4gU29tZSBtaW5vciBjb21tZW50cyBhcmUgYWRkZWQgYmVsb3cuDQo+IFdpdGggdGhlbSBhZGRy ZXNzZWQsIFJldmlld2VkLWJ5OiBTdGFyIFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb20+Lg0KPiAN Cj4gT24gMjAxOC8xMC8yNCAxMzoyNiwgSmlhbiBKIFdhbmcgd3JvdGU6DQo+ID4+IHYzIGNoYW5n ZXM6DQo+ID4+IGEuIGRyb3AgdGhlIGNoYW5nZXMgdG8gQ29yZUdldElvU3BhY2VNYXAoKSBiZWNh dXNlIGl0IHdvbid0IGNhdXNlDQo+ID4+ICAgICBwcm9ibGVtDQo+ID4+IGIuIHJlZmluZSB0aGUg bG9naWMgaW4gY2hhbmdlcyBvZiBDb3JlR2V0TWVtb3J5U3BhY2VNYXAoKQ0KPiA+PiAgICAgYW5k IGFkZCBtb3JlIGNvbW1lbnRzDQo+ID4NCj4gPiBUaGlzIGlzc3VlIGlzIGhpZGRlbiBpbiBjdXJy ZW50IGNvZGUgYnV0IGV4cG9zZWQgYnkgaW50cm9kdWN0aW9uDQo+ID4gb2YgZnJlZWQtbWVtb3J5 IGd1YXJkIGZlYXR1cmUgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIGZlYXR1cmUNCj4gPiB3aWxs IHR1cm4gYWxsIHBvb2wgYWxsb2NhdGlvbiB0byBwYWdlIGFsbG9jYXRpb24uDQo+ID4NCj4gPiBU aGUgc29sdXRpb24gaXMgbW92ZSB0aGUgbWVtb3J5IGFsbG9jYXRpb24gaW4gQ29yZUdldE1lbW9y eVNwYWNlTWFwKCkNCj4gDQo+IFVzZSAnbW92aW5nJyBpbnN0ZWFkIG9mICdtb3ZlJz8NCj4gDQo+ ID4gYW5kIENvcmVHZXRJb1NwYWNlTWFwKCkgdG8gYmUgb3V0IG9mIHRoZSBHQ0QgbWVtb3J5IG1h cCBsb2NrLg0KPiANCj4gUGxlYXNlIHJlbW92ZSBDb3JlR2V0SW9TcGFjZU1hcCgpIGFzIHRoZSBj b2RlIGRvZXMgbm90IHRvdWNoIGl0IGF0IGFsbC4NCj4gDQo+ID4NCj4gPiBBbHRob3VnaCBpdCdz IHJhcmUsIGEgd2hpbGUtbG9vcCBpcyBhZGRlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY291bnQN Cj4gPiBvZiBkZXNjcmlwdG9yIG9mIG1lbW9yeSBtYXAgaXMgdGhlIHNhbWUgYWZ0ZXIgbWVtb3J5 IGFsbG9jYXRpb24sIGJlY2F1c2UNCj4gPiBpdCdzIGV4ZWN1dGVkIG91dHNpZGUgdGhlIEdDRCBt ZW1vcnkgbG9jay4NCj4gPg0KPiA+ICAgICBDb3JlRHVtcEdjZE1lbW9yeVNwYWNlTWFwKCkNCj4g PiA9PiBDb3JlR2V0TWVtb3J5U3BhY2VNYXAoKQ0KPiA+ID0+IENvcmVBY3F1aXJlR2NkTWVtb3J5 TG9jayAoKSAqDQo+ID4gICAgIEFsbG9jYXRlUG9vbCgpDQo+ID4gPT4gSW50ZXJuYWxBbGxvY2F0 ZVBvb2woKQ0KPiA+ID0+IENvcmVBbGxvY2F0ZVBvb2woKQ0KPiA+ID0+IENvcmVBbGxvY2F0ZVBv b2xJKCkNCj4gPiA9PiBDb3JlQWxsb2NhdGVQb29sUGFnZXNJKCkNCj4gPiA9PiBDb3JlQWxsb2Nh dGVQb29sUGFnZXMoKQ0KPiA+ID0+IEZpbmRGcmVlUGFnZXMoKQ0KPiA+ID0+IFByb21vdGVNZW1v cnlSZXNvdXJjZSgpDQo+ID4gPT4gQ29yZUFjcXVpcmVHY2RNZW1vcnlMb2NrKCkgICoqDQo+ID4N Cj4gPiBDYzogU3RhciBaZW5nIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiA+IENjOiBNaWNoYWVs IEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDYzogSmlld2VuIFlh byA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gQ2M6IFJ1aXl1IE5pIDxydWl5dS5uaUBpbnRl bC5jb20+DQo+ID4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4gQ29u dHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+ IFNpZ25lZC1vZmYtYnk6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4g LS0tDQo+ID4gICBNZGVNb2R1bGVQa2cvQ29yZS9EeGUvR2NkL0djZC5jIHwgODAgKysrKysrKysr KysrKysrKysrKysrKysrKysrLQ0KPiAtLS0tLS0tLS0tLS0tDQo+ID4gICAxIGZpbGUgY2hhbmdl ZCwgNTQgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0djZC9HY2QuYw0KPiBiL01kZU1vZHVsZVBrZy9Db3Jl L0R4ZS9HY2QvR2NkLmMNCj4gPiBpbmRleCBkOWM2NWE4MDQ1Li5iYzAyOTQ1NzIxIDEwMDY0NA0K PiA+IC0tLSBhL01kZU1vZHVsZVBrZy9Db3JlL0R4ZS9HY2QvR2NkLmMNCj4gPiArKysgYi9NZGVN b2R1bGVQa2cvQ29yZS9EeGUvR2NkL0djZC5jDQo+ID4gQEAgLTE2OTEsMTAgKzE2OTEsMTAgQEAg Q29yZUdldE1lbW9yeVNwYWNlTWFwICgNCj4gPiAgICAgT1VUIEVGSV9HQ0RfTUVNT1JZX1NQQUNF X0RFU0NSSVBUT1IgICoqTWVtb3J5U3BhY2VNYXANCj4gPiAgICAgKQ0KPiA+ICAgew0KPiA+IC0g IEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiAgICAgTElTVF9F TlRSWSAgICAgICAgICAgICAgICAgICAgICAgKkxpbms7DQo+ID4gICAgIEVGSV9HQ0RfTUFQX0VO VFJZICAgICAgICAgICAgICAgICpFbnRyeTsNCj4gPiAgICAgRUZJX0dDRF9NRU1PUllfU1BBQ0Vf REVTQ1JJUFRPUiAgKkRlc2NyaXB0b3I7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgRGVzY3JpcHRvckNvdW50Ow0KPiA+DQo+ID4gICAgIC8vDQo+ID4gICAgIC8vIE1h a2Ugc3VyZSBwYXJhbWV0ZXJzIGFyZSB2YWxpZA0KPiA+IEBAIC0xNzA2LDM4ICsxNzA2LDY2IEBA IENvcmVHZXRNZW1vcnlTcGFjZU1hcCAoDQo+ID4gICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPiAgICAgfQ0KPiA+DQo+ID4gKyAgKk51bWJlck9mRGVzY3JpcHRvcnMgID0g MDsNCj4gPiArICAqTWVtb3J5U3BhY2VNYXAgICAgICAgPSBOVUxMOw0KPiA+ICsNCj4gPiAgICAg Q29yZUFjcXVpcmVHY2RNZW1vcnlMb2NrICgpOw0KPiANCj4gQmV0dGVyIHRvIGFkZCBjb21tZW50 IGZvciBpdCBsaWtlIGJlbG93IHF1b3RlZCBmcm9tIHRoZSBleGFtcGxlIGF0DQo+IGh0dHBzOi8v bGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRldmVsLzIwMTgtT2N0b2Jlci8wMzEyNzkuaHRt bCBnaXZlbg0KPiBieSBMYXN6bG8uDQo+IA0KPiAvLw0KPiAvLyBUYWtlIHRoZSBsb2NrLCBmb3Ig ZW50ZXJpbmcgdGhlIGxvb3Agd2l0aCB0aGUgbG9jayBoZWxkLg0KPiAvLw0KPiANCj4gPg0KPiA+ IC0gIC8vDQo+ID4gLSAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBkZXNjcmlwdG9ycw0KPiA+IC0g IC8vDQo+ID4gLSAgKk51bWJlck9mRGVzY3JpcHRvcnMgPSBDb3JlQ291bnRHY2RNYXBFbnRyeQ0K PiAoJm1HY2RNZW1vcnlTcGFjZU1hcCk7DQo+ID4gKyAgd2hpbGUgKFRSVUUpIHsNCj4gPiArICAg IC8vDQo+ID4gKyAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIGRlc2NyaXB0b3JzLiBJdCBtaWdo dCBiZSBkb25lIG1vcmUgdGhhbiBvbmNlDQo+IGJlY2F1c2UNCj4gDQo+IFVzZSAnY291bnQnIGlu c3RlYWQgb2YgJ251bWJlcicgdG8gbWF0Y2ggdGhlIHZhcmlhYmxlIG5hbWU/DQo+IA0KPiA+ICsg ICAgLy8gdGhlcmUncyBjb2RlIHdoaWNoIGhhcyB0byBiZSBydW5uaW5nIG91dHNpZGUgdGhlIEdD RCBsb2NrLg0KPiANCj4gVXNlICJBbGxvY2F0ZVBvb2woKSBjYWxsaW5nIGNvZGUgYmVsb3ciIGlu c3RlYWQgb2YgInRoZXJlJ3MgY29kZSI/DQo+IA0KPiA+ICsgICAgLy8NCj4gPiArICAgIERlc2Ny aXB0b3JDb3VudCA9IENvcmVDb3VudEdjZE1hcEVudHJ5ICgmbUdjZE1lbW9yeVNwYWNlTWFwKTsN Cj4gPiArICAgIGlmIChEZXNjcmlwdG9yQ291bnQgPT0gKk51bWJlck9mRGVzY3JpcHRvcnMpIHsN Cj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gRmlsbCBpbiB0aGUgTWVtb3J5U3BhY2VNYXAg aWYgbm8gbWVtb3J5IHNwYWNlIG1hcCBjaGFuZ2UuDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAg IERlc2NyaXB0b3IgPSAqTWVtb3J5U3BhY2VNYXA7DQo+ID4gKyAgICAgIExpbmsgPSBtR2NkTWVt b3J5U3BhY2VNYXAuRm9yd2FyZExpbms7DQo+ID4gKyAgICAgIHdoaWxlIChMaW5rICE9ICZtR2Nk TWVtb3J5U3BhY2VNYXApIHsNCj4gPiArICAgICAgICBFbnRyeSA9IENSIChMaW5rLCBFRklfR0NE X01BUF9FTlRSWSwgTGluaywNCj4gRUZJX0dDRF9NQVBfU0lHTkFUVVJFKTsNCj4gPiArICAgICAg ICBCdWlsZE1lbW9yeURlc2NyaXB0b3IgKERlc2NyaXB0b3IsIEVudHJ5KTsNCj4gPiArICAgICAg ICBEZXNjcmlwdG9yKys7DQo+ID4gKyAgICAgICAgTGluayA9IExpbmstPkZvcndhcmRMaW5rOw0K PiA+ICsgICAgICB9DQo+ID4NCj4gPiAtICAvLw0KPiA+IC0gIC8vIEFsbG9jYXRlIHRoZSBNZW1v cnlTcGFjZU1hcA0KPiA+IC0gIC8vDQo+ID4gLSAgKk1lbW9yeVNwYWNlTWFwID0gQWxsb2NhdGVQ b29sICgqTnVtYmVyT2ZEZXNjcmlwdG9ycyAqIHNpemVvZg0KPiAoRUZJX0dDRF9NRU1PUllfU1BB Q0VfREVTQ1JJUFRPUikpOw0KPiA+IC0gIGlmICgqTWVtb3J5U3BhY2VNYXAgPT0gTlVMTCkgew0K PiA+IC0gICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gLSAgICBnb3RvIERv bmU7DQo+ID4gLSAgfQ0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPg0KPiA+IC0g IC8vDQo+ID4gLSAgLy8gRmlsbCBpbiB0aGUgTWVtb3J5U3BhY2VNYXANCj4gPiAtICAvLw0KPiA+ IC0gIERlc2NyaXB0b3IgPSAqTWVtb3J5U3BhY2VNYXA7DQo+ID4gLSAgTGluayA9IG1HY2RNZW1v cnlTcGFjZU1hcC5Gb3J3YXJkTGluazsNCj4gPiAtICB3aGlsZSAoTGluayAhPSAmbUdjZE1lbW9y eVNwYWNlTWFwKSB7DQo+ID4gLSAgICBFbnRyeSA9IENSIChMaW5rLCBFRklfR0NEX01BUF9FTlRS WSwgTGluaywgRUZJX0dDRF9NQVBfU0lHTkFUVVJFKTsNCj4gPiAtICAgIEJ1aWxkTWVtb3J5RGVz Y3JpcHRvciAoRGVzY3JpcHRvciwgRW50cnkpOw0KPiA+IC0gICAgRGVzY3JpcHRvcisrOw0KPiA+ IC0gICAgTGluayA9IExpbmstPkZvcndhcmRMaW5rOw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8v IFJlbGVhc2UgdGhlIGxvY2sgYmVmb3JlIG1lbW9yeSBhbGxvY2F0aW9uLCBiZWNhdXNlIGl0IG1p Z2h0IGNhdXNlDQo+ID4gKyAgICAvLyBHQ0QgbG9jayBjb25mbGljdCBpbiBvbmUgb2YgY2FsbGlu ZyBwYXRoIGluIEFsbG9jYXRQb29sKCkuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgQ29yZVJlbGVh c2VHY2RNZW1vcnlMb2NrICgpOw0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBBbGxv Y2F0ZSBtZW1vcnkgdG8gc3RvcmUgdGhlIE1lbW9yeVNwYWNlTWFwLiBOb3RlIGl0IG1pZ2h0IGJl DQo+IGFscmVhZHkNCj4gPiArICAgIC8vIGFsbG9jYXRlZCBpZiB0aGVyZSdzIG1hcCBkZXNjcmlw dG9yIGNoYW5nZSBkdXJpbmcgbWVtb3J5IGFsbG9jYXRpb24gYXQNCj4gPiArICAgIC8vIGxhc3Qg dGltZS4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoKk1lbW9yeVNwYWNlTWFwICE9IE5VTEwp IHsNCj4gPiArICAgICAgRnJlZVBvb2wgKCpNZW1vcnlTcGFjZU1hcCk7DQo+ID4gKyAgICB9DQo+ ID4gKw0KPiA+ICsgICAgKk1lbW9yeVNwYWNlTWFwID0gQWxsb2NhdGVQb29sIChEZXNjcmlwdG9y Q291bnQgKg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yg KEVGSV9HQ0RfTUVNT1JZX1NQQUNFX0RFU0NSSVBUT1IpKTsNCj4gPiArICAgIGlmICgqTWVtb3J5 U3BhY2VNYXAgPT0gTlVMTCkgew0KPiA+ICsgICAgICAqTnVtYmVyT2ZEZXNjcmlwdG9ycyA9IDA7 DQo+ID4gKyAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArICAgIH0NCj4g PiArDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gU2F2ZSB0aGUgZGVzY3JpcHRvciBudW1iZXIg Z290IGJlZm9yZSBmb3IgYW5vdGhlciByb3VuZCBvZiBjaGVjayB0bw0KPiBtYWtlDQo+IA0KPiBV c2UgJ2NvdW50JyBpbnN0ZWFkIG9mICdudW1iZXInIHRvIG1hdGNoIHRoZSB2YXJpYWJsZSBuYW1l Pw0KPiANCj4gPiArICAgIC8vIHN1cmUgd2Ugd29uJ3QgbWlzcyBhbnksIHNpbmNlIHdlIGhhdmUg Y29kZSBydW5uaW5nIG91dHNpZGUgdGhlIEdDRA0KPiBsb2NrLg0KPiA+ICsgICAgLy8NCj4gPiAr ICAgICpOdW1iZXJPZkRlc2NyaXB0b3JzID0gRGVzY3JpcHRvckNvdW50Ow0KPiA+ICsgICAgQ29y ZUFjcXVpcmVHY2RNZW1vcnlMb2NrICgpOw0KPiANCj4gQmV0dGVyIHRvIGFkZCBjb21tZW50IGZv ciBpdCBsaWtlIGJlbG93IHF1b3RlZCBmcm9tIHRoZSBleGFtcGxlIGF0DQo+IGh0dHBzOi8vbGlz dHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRldmVsLzIwMTgtT2N0b2Jlci8wMzEyNzkuaHRtbCBn aXZlbg0KPiBieSBMYXN6bG8uDQo+IA0KPiAvLw0KPiAvLyBSZS1hY3F1aXJlIHRoZSBsb2NrLCBm b3IgdGhlIG5leHQgaXRlcmF0aW9uLg0KPiAvLw0KPiANCj4gPiAgICAgfQ0KPiA+IC0gIFN0YXR1 cyA9IEVGSV9TVUNDRVNTOw0KPiA+DQo+ID4gLURvbmU6DQo+ID4gICAgIENvcmVSZWxlYXNlR2Nk TWVtb3J5TG9jayAoKTsNCj4gDQo+IEJldHRlciB0byBhZGQgY29tbWVudCBmb3IgaXQgbGlrZSBi ZWxvdyBxdW90ZWQgZnJvbSB0aGUgZXhhbXBsZSBhdA0KPiBodHRwczovL2xpc3RzLjAxLm9yZy9w aXBlcm1haWwvZWRrMi1kZXZlbC8yMDE4LU9jdG9iZXIvMDMxMjc5Lmh0bWwgZ2l2ZW4NCj4gYnkg TGFzemxvLg0KPiANCj4gLy8NCj4gLy8gV2UgZXhpdGVkIHRoZSBsb29wIHdpdGggdGhlIGxvY2sg aGVsZCwgcmVsZWFzZSBpdC4NCj4gLy8NCj4gDQo+IA0KPiBUaGFua3MsDQo+IFN0YXINCj4gDQo+ ID4gLSAgcmV0dXJuIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+ICAgfQ0KPiA+DQo+ID4NCj4gPg0KDQo=