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.88; helo=mga01.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 C71E32118847D for ; Wed, 7 Nov 2018 06:53:43 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Nov 2018 06:53:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,475,1534834800"; d="scan'208";a="106234562" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga001.jf.intel.com with ESMTP; 07 Nov 2018 06:53:42 -0800 Received: from fmsmsx118.amr.corp.intel.com (10.18.116.18) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 7 Nov 2018 06:53:42 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx118.amr.corp.intel.com (10.18.116.18) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 7 Nov 2018 06:53:42 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.117]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.102]) with mapi id 14.03.0415.000; Wed, 7 Nov 2018 22:53:40 +0800 From: "Ni, Ruiyu" To: Laszlo Ersek , "edk2-devel@lists.01.org" CC: "Gao, Liming" , "Kinney, Michael D" , =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , Andrew Fish Thread-Topic: [PATCH] MdePkg/BaseSynchronizationLib XCODE: fix InternalSync[De|In]crement Thread-Index: AQHUdqaplFNysce9u0iekejFD1a0bqVEZI7g Date: Wed, 7 Nov 2018 14:53:39 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BEF58AB@SHSMSX104.ccr.corp.intel.com> References: <20181107040346.153720-1-ruiyu.ni@intel.com> <555b0649-a067-472e-2b81-b52457deb67b@redhat.com> In-Reply-To: <555b0649-a067-472e-2b81-b52457deb67b@redhat.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZmJlNmMxZDUtMjMwMS00N2U1LTg0NTUtYzM4MzNkYTA5MDlhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiclZMeTJkVlFwRG05Y3dVUzlueHRuMGh2NENXTjdOTmx6QWFaQXBRNWFnd2VRZTlXTSt6S2Qzd09oNkpWZFd0NCJ9 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] MdePkg/BaseSynchronizationLib XCODE: fix InternalSync[De|In]crement 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, 07 Nov 2018 14:53:44 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFtt YWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgNywg MjAxOCAxMDozMiBQTQ0KPiBUbzogTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+OyBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZw0KPiBDYzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwu Y29tPjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsg UGhpbGlwcGUgTWF0aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPjsNCj4gQW5kcmV3IEZp c2ggPGFmaXNoQGFwcGxlLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSF0gTWRlUGtnL0Jhc2VT eW5jaHJvbml6YXRpb25MaWIgWENPREU6IGZpeA0KPiBJbnRlcm5hbFN5bmNbRGV8SW5dY3JlbWVu dA0KPiANCj4gKCtBbmRyZXcpDQo+IA0KPiBIaSBSYXksDQo+IA0KPiBPbiAxMS8wNy8xOCAwNTow MywgUnVpeXUgTmkgd3JvdGU6DQo+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5v cmcvc2hvd19idWcuY2dpP2lkPTEzMDMNCj4gPg0KPiA+IFhDT0RFIGRpc2Fzc2VtYmx5IGNvZGUg b2YgSW50ZXJuYWxTeW5jRGVjcmVtZW50IHdpdGggdG9kYXkncyBjb2RlIGlzOg0KPiA+DQo+ID4g ICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gICAgICJtb3ZsICAgICQxLCAlJWVheCAgXG5c dCINCj4gPiAgICAgImxvY2sgICAgICAgICAgICAgICBcblx0Ig0KPiA+ICAgICAieGFkZCAgICAl JWVheCwgJTEgIFxuXHQiDQo+ID4gICAgICJpbmMgICAgICUlZWF4ICAgICAgXG5cdCINCj4gPiAg ICAgOiAiPWEiIChSZXN1bHQpLCAgICAgICAgICAvLyAlMA0KPiA+ICAgICAgICIrbSIgKCpWYWx1 ZSkgICAgICAgICAgIC8vICUxDQo+ID4gICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgLy8g bm8gaW5wdXRzIHRoYXQgYXJlbid0IGFsc28gb3V0cHV0cw0KPiA+ICAgICA6ICJtZW1vcnkiLA0K PiA+ICAgICAgICJjYyINCj4gPiAgICAgKTsNCj4gPg0KPiA+ICAwOiAgICAgICA1NSAgICAgIHB1 c2hsICAgJWVicA0KPiA+ICAxOiAgICAgICA4OSBlNSAgIG1vdmwgICAgJWVzcCwgJWVicA0KPiA+ ICAzOiAgICAgICA4YiA0NSAwOCAgICAgICAgbW92bCAgICA4KCVlYnApLCAlZWF4DQo+ID4gIDY6 ICAgICAgIGI4IDAxIDAwIDAwIDAwICBtb3ZsICAgICQxLCAlZWF4DQo+ID4gIGI6ICAgICAgIGYw ICAgICAgbG9jaw0KPiA+ICBjOiAgICAgICAwZiBjMSAwMCAgICAgICAgeGFkZGwgICAlZWF4LCBf SW50ZXJuYWxTeW5jSW5jcmVtZW50KCVlYXgpDQo+ID4gIGY6ICAgICAgIDQwICAgICAgaW5jbCAg ICAlZWF4DQo+ID4gMTA6ICAgICAgIDVkICAgICAgcG9wbCAgICAlZWJwDQo+ID4gMTE6ICAgICAg IGMzICAgICAgcmV0bA0KPiA+DQo+ID4gJUVBWCB2YWx1ZSByZXRyaWV2ZWQgaW4gbGluZSAjMyBp cyBvdmVyd3JpdHRlbiBpbiBsaW5lICM2Lg0KPiANCj4gKGEpIFRoaXMgbG9va3MgbGlrZSBhbiBY Q09ERSBidWcgdG8gbWUuIFRoZSAiPWEiIGNvbnN0cmFpbnQgb24gb3BlcmFuZA0KPiAlMCBtZWFu cyB0aGF0IFJlc3VsdCBzaG91bGQgYmUgc2V0IGZyb20gZWF4L3JheCwgYW5kIHRoYXQgdGhpcyBv cGVyYW5kIGlzICJ3cml0ZQ0KPiBvbmx5Ii4gSGVyZSdzIHRoZSBnY2MgZG9jdW1lbnRhdGlvbjoN Cj4gDQo+ICJUaGUgb3JkaW5hcnkgb3V0cHV0IG9wZXJhbmRzIG11c3QgYmUgd3JpdGUtb25seTsg R0NDIGFzc3VtZXMgdGhhdCB0aGUgdmFsdWVzDQo+IGluIHRoZXNlIG9wZXJhbmRzIGJlZm9yZSB0 aGUgaW5zdHJ1Y3Rpb24gYXJlIGRlYWQgYW5kIG5lZWQgbm90IGJlIGdlbmVyYXRlZC4iDQoNCkFj dHVhbGx5IEkgYW0gYSBiaXQgY29uZnVzZWQgYWJvdXQgIj1hIiBoZXJlLg0KIj1hIihSZXN1bHQp IHRlbGxzIEdDQyB0aGF0IFJlc3VsdCBzaG91bGQgYmUgc2V0IGZyb20gZWF4LiBCdXQgaW4gdGhl IGZpbmFsIGdlbmVyYXRlZA0KYXNzZW1ibHkgY29kZSBJIGNhbm5vdCBzZWUgdGhlIGluc3RydWN0 aW9uICJtb3YgJWVheCwgUmVzdWx0Ii4NCg0KPiANCj4gRnVydGhlcm1vcmUsIGlmIGEgcmVnaXN0 ZXIgaXMgbmFtZWQgaW4gYW55IG9wZXJhbmQgY29uc3RyYWludCAoc3VjaCBhcyBpbnB1dCwNCj4g b3V0cHV0LCBpbnB1dC1vdXRwdXQpLCB0aGVuIGl0IGNhbm5vdCwgYnkgZGVmaW5pdGlvbiwgYmUg bGlzdGVkIGluIHRoZSAiY2xvYmJlciBsaXN0Ig0KPiAtLSBpdCBpcyAqb2J2aW91cyogdGhhdCB0 aGUgaW5saW5lIGFzc2VtYmx5IHdpbGwgd29yayB3aXRoIHRoYXQgcmVnaXN0ZXIuIEluIGNhc2Ug b2YNCj4gYW4gb3V0cHV0LW9ubHkgb3BlcmFuZCwgaXQncyBvYnZpb3VzIHRoYXQgdGhlIGlubGlu ZSBhc3NlbWJseSB3aWxsICpvdmVyd3JpdGUqDQo+IHRoYXQgcmVnaXN0ZXIsIGFuZCB0aGUgY29t cGlsZXIgY2Fubm90IGFzc3VtZSAqd2hlbiogdGhhdCBvdmVyd3JpdGUgd2lsbA0KPiBoYXBwZW4u IEhlcmUncyB0aGUgZ2NjDQo+IGRvY3VtZW50YXRpb246DQo+IA0KPiAiWW91IG1heSBub3Qgd3Jp dGUgYSBjbG9iYmVyIGRlc2NyaXB0aW9uIGluIGEgd2F5IHRoYXQgb3ZlcmxhcHMgd2l0aCBhbiBp bnB1dCBvcg0KPiBvdXRwdXQgb3BlcmFuZC4gIEZvciBleGFtcGxlLCB5b3UgbWF5IG5vdCBoYXZl IGFuIG9wZXJhbmQgZGVzY3JpYmluZyBhDQo+IHJlZ2lzdGVyIGNsYXNzIHdpdGggb25lIG1lbWJl ciBpZiB5b3UgbWVudGlvbiB0aGF0IHJlZ2lzdGVyIGluIHRoZSBjbG9iYmVyIGxpc3QuDQo+IFZh cmlhYmxlcyBkZWNsYXJlZCB0byBsaXZlIGluIHNwZWNpZmljIHJlZ2lzdGVycyBbLi4uXSBhbmQg dXNlZCBhcyBhc20gaW5wdXQgb3INCj4gb3V0cHV0IG9wZXJhbmRzIG11c3QgaGF2ZSBubyBwYXJ0 IG1lbnRpb25lZCBpbiB0aGUgY2xvYmJlciBkZXNjcmlwdGlvbi4iIFsxXQ0KPiANCj4gSG93ZXZl ciwgWENPREUgZ2VuZXJhdGVzIHN1Y2ggY29kZSB0aGF0IGRlcGVuZHMgb24gRUFYIGFzIGFuICpp bnB1dCoNCj4gb3BlcmFuZC4gVGhhdCdzIGNsZWFybHkgd3JvbmcgYW5kIHZpb2xhdGVzIHRoZSBj b25zdHJhaW50cyBpbiB0aGUgb3BlcmFuZCBsaXN0Lg0KPiBUaGlzIGlzIGFuIFhDT0RFIGJ1Zy4N Cg0KQWdyZWUuIEJ1dCBJIHRob3VnaHQgSSBtaXN1bmRlcnN0b29kIHRoZSBHQ0MgZG9jdW1lbnRz Lg0KDQo+IA0KPiBJbiBmYWN0OiB0aGUgc2l0dWF0aW9uIGlzIHdvcnNlIHRoYW4gdGhhdC4gSW4g dGhlIGNvbW1pdCBtZXNzYWdlIHlvdSBzcGVsbCBvdXQNCj4gdGhhdCB0aGUgTU9WIGluc3RydWN0 aW9uIGF0IG9mZnNldCA2IG92ZXJ3cml0ZXMgdGhlIHZhbHVlIGluIEVBWCB0aGF0IHdhcyBqdXN0 DQo+IGxvYWRlZCBhdCBvZmZzZXQgMy4gQnV0IHRoaXMgaXMganVzdCB0aGUgc21hbGwgcHJvYmxl bTsgdGhlICpsYXJnZSogcHJvYmxlbSBpcyB0aGUNCj4gZ2VuZXJhdGVkIFhBREQgaW5zdHJ1Y3Rp b24gaXRzZWxmLCBhdCBvZmZzZXQgMHhiIGFuZCAweGMuIFRoZSBiaW5hcnkgZW5jb2RpbmcgaXMs DQo+IGZyb20geW91ciBjb21taXQgbWVzc2FnZToNCj4gDQo+ICAgZjAgMGYgYzEgMDANCj4gDQo+ IGFuZCB0aGlzIGlzICpleGFjdGx5KiB0aGUgcHJvYmxlbSB0aGF0IG15IGNvbW1pdCA4YTk0ZWI5 MjgzZmEgZml4ZWQgZm9yIGdjYyENCj4gRnJvbSBteSBjb21taXQgbWVzc2FnZToNCj4gDQo+ICAg ICA+ICAgICA0MzljOiAgICAgICBmMCAwZiBjMSAwMCAgICAgICAgICAgICBsb2NrIHhhZGQgJWVh eCwoJXJheCkNCj4gDQo+IEJlY2F1c2UsIGl0IG1ha2VzICpubyBzZW5zZSogZm9yIFhBREQgdG8g dXNlIHRoZSBBWCByZWdpc3RlciBmb3IgKmJvdGgqDQo+IHBvaW50ZXItdG8tbWVtb3J5IChpLmUu IGFkZHJlc3Mgb2YgdGhlIGRlc3RpbmF0aW9uIGxvY2F0aW9uIHRoYXQgcmVjZWl2ZXMgdGhlDQo+ IHN1bSkgKmFuZCogYXMgdGhlIG90aGVyIGFkZGVuZCENCg0KQWdyZWUuIEkganVzdCByZWFsaXpl ZCB0aGF0LiBCdXQgd2l0aCBteSBwYXRjaCB0aGUgaXNzdWUgd2FzIGdvbmUuDQoNCkkgc2F3IHlv dXIgc2Vjb25kIG1haWwuIExldCBtZSBjaGVjayB0aGF0Lg0KDQo+IA0KPiBJbiBvdGhlciB3b3Jk cywgcmVnYXJkbGVzcyBvZiBob3cgd2UgZmlsbCB0aGUgQVggcmVnaXN0ZXIgdXAtZnJvbnQsIGFu IFhBREQNCj4gaW5zdHJ1Y3Rpb24gZ2VuZXJhdGVkIGxpa2UgdGhpcyAqY2Fubm90KiBiZSByaWdo dC4NCj4gDQo+ID4gVGhlIHBhdGNoIHVzZXMgdGhlIGNsb2JiZXIgbGlzdCB0byB0ZWxsIEdDQyB0 aGF0IEVBWCBpcyB1c2VkIGluIEFTTS4NCj4gPg0KPiA+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFu b0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gPiBTaWduZWQtb2ZmLWJ5OiBSdWl5 dSBOaSA8cnVpeXUubmlAaW50ZWwuY29tPg0KPiA+IENjOiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2Fv QGludGVsLmNvbT4NCj4gPiBDYzogTWljaGFlbCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPiA+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+IENj OiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+DQo+ID4gLS0tDQo+ ID4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9HY2NJbmxpbmUu YyB8IDEyDQo+ID4gKysrKysrKystLS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJh cnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0djY0lubGluZS5jDQo+ID4gYi9NZGVQa2cv TGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0lhMzIvR2NjSW5saW5lLmMNCj4gPiBpbmRl eCBhZjM5YmRlYjUxLi4wYTk4NTUyOWZkIDEwMDY0NA0KPiA+IC0tLSBhL01kZVBrZy9MaWJyYXJ5 L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9HY2NJbmxpbmUuYw0KPiA+ICsrKyBiL01kZVBr Zy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9HY2NJbmxpbmUuYw0KPiA+IEBA IC00MCwxMSArNDAsMTMgQEAgSW50ZXJuYWxTeW5jSW5jcmVtZW50ICgNCj4gPiAgICAgICJsb2Nr ICAgICAgICAgICAgICAgXG5cdCINCj4gPiAgICAgICJ4YWRkICAgICUlZWF4LCAlMSAgXG5cdCIN Cj4gPiAgICAgICJpbmMgICAgICUlZWF4ICAgICAgXG5cdCINCj4gPiAtICAgIDogIj1hIiAoUmVz dWx0KSwgICAgICAgICAgLy8gJTANCj4gPiArICAgICJtb3YgICAgICUlZWF4LCAlMCAgXG5cdCIN Cj4gPiArICAgIDogIj1yIiAoUmVzdWx0KSwgICAgICAgICAgLy8gJTANCj4gPiAgICAgICAgIitt IiAoKlZhbHVlKSAgICAgICAgICAgLy8gJTENCj4gPiAgICAgIDogICAgICAgICAgICAgICAgICAg ICAgICAgLy8gbm8gaW5wdXRzIHRoYXQgYXJlbid0IGFsc28gb3V0cHV0cw0KPiA+ICAgICAgOiAi bWVtb3J5IiwNCj4gPiAtICAgICAgImNjIg0KPiA+ICsgICAgICAiY2MiLA0KPiA+ICsgICAgICAi ZWF4Ig0KPiA+ICAgICAgKTsNCj4gPg0KPiA+ICAgIHJldHVybiBSZXN1bHQ7DQo+IA0KPiAoYikg VGhpcyBjaGFuZ2UgaXMgaW52YWxpZCwgZm9yIHR3byBzZXBhcmF0ZSByZWFzb25zLg0KPiANCj4g UmVhc29uICMxOiBvbiB0aGUgY2xvYmJlciBsaXN0LCB0aGUgQVggcmVnaXN0ZXIgc2hvdWxkIGJl IGxpc3RlZCBhcyAiYSIsIG5vdCBhcw0KPiAiZWF4Ii4NCj4gDQo+IFJlYXNvbiAjMjoNCj4gDQo+ IC0gRm9yIG9wZXJhbmQgJTAsIHdlIHNheSAidXNlIGFueSByZWdpc3RlciBpbiB0aGUgJ3InIGNs YXNzIGFzIHdyaXRlLW9ubHkiLiAoVGhlDQo+IGNsYXNzICJyIiBtZWFucyAiZ2VuZXJhbCByZWdp c3RlciIuKSBBbmQsIGF0IHRoZSBlbmQgb2YgdGhlIGlubGluZSBhc3NlbWJseSwgd2UNCj4gc3Rv cmUgRUFYIG1hbnVhbGx5IHRvIHRoYXQgJ3InIGNsYXNzIHJlZ2lzdGVyLiBBbmQgd2UgcmVseSBv biB0aGUgY29tcGlsZXIgdG8gc3RvcmUNCj4gdGhhdCBvdGhlciBnZW5lcmFsIHJlZ2lzdGVyIGlu dG8gUmVzdWx0Lg0KPiANCj4gLSBXZSBhcHBlbmQgdGhlIEFYIHJlZ2lzdGVyICh3aGljaCBzaG91 bGQgYmUgc3BlbGxlZCBhcyAiYSIpIHRvIHRoZSBjbG9iYmVyIGxpc3QuDQo+IEhvd2V2ZXIsIHRo ZSAiYSIgcmVnaXN0ZXIgaXMgaXRzZWxmIGluIHRoZSAiZ2VuZXJhbCByZWdpc3RlciIgY2xhc3Ms IGFuZCB0aGVyZWZvcmUNCj4gdGhpcyBjbG9iYmVyIGxpc3QgYnJlYWtzIHRoZSBwYXNzYWdlIHRo YXQgSSBxdW90ZWQgYWJvdmUsIG1hcmtlZCBhcyBbMV0hDQo+IA0KPiANCj4gPiBAQCAtNzYsMTEg Kzc4LDEzIEBAIEludGVybmFsU3luY0RlY3JlbWVudCAoDQo+ID4gICAgICAibG9jayAgICAgICAg ICAgICAgICBcblx0Ig0KPiA+ICAgICAgInhhZGQgICAgJSVlYXgsICUxICAgXG5cdCINCj4gPiAg ICAgICJkZWMgICAgICUlZWF4ICAgICAgIFxuXHQiDQo+ID4gLSAgICA6ICI9YSIgKFJlc3VsdCks ICAgICAgICAgICAvLyAlMA0KPiA+ICsgICAgIm1vdiAgICAgJSVlYXgsICUwICBcblx0Ig0KPiA+ ICsgICAgOiAiPXIiIChSZXN1bHQpLCAgICAgICAgICAgLy8gJTANCj4gPiAgICAgICAgIittIiAo KlZhbHVlKSAgICAgICAgICAgIC8vICUxDQo+ID4gICAgICA6ICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBubyBpbnB1dHMgdGhhdCBhcmVuJ3QgYWxzbyBvdXRwdXRzDQo+ID4gICAgICA6ICJt ZW1vcnkiLA0KPiA+IC0gICAgICAiY2MiDQo+ID4gKyAgICAgICJjYyIsDQo+ID4gKyAgICAgICJl YXgiDQo+ID4gICAgICApOw0KPiA+DQo+ID4gICAgcmV0dXJuIFJlc3VsdDsNCj4gPg0KPiANCj4g KGMpIFRoZSBwYXRjaCBkb2Vzbid0IHVwZGF0ZSB0aGUgWDY0IHZhcmlhbnQuDQo+IA0KPiBJIHRo aW5rIHdlIHNob3VsZCBiZSBjbGVhciBoZXJlIHRoYXQgd2UgYXJlIHdvcmtpbmcgYXJvdW5kIGFu IFhDT0RFIGJ1Zy4NCj4gQ29tbWl0IDhhOTRlYjkyODNmYSB3YXMgZGlmZmVyZW50LCBiZWNhdXNl IHRoZSBjb2RlIGJlZm9yZSB0aGF0IHZpb2xhdGVkIHRoZQ0KPiBnY2MgZG9jdW1lbnRhdGlvbiwg YW5kIHNvIHRoZSBpc3N1ZSB3YXMgaW4gdGhlIGNvZGUuDQo+IA0KPiANCj4gSSdsbCBjb21tZW50 IG1vcmUgb24geW91ciBzZWNvbmQgZW1haWwuDQo+IA0KPiBUaGFua3MsDQo+IExhc3psbw0K