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.100; helo=mga07.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 93569211DC087 for ; Thu, 14 Mar 2019 15:27:14 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Mar 2019 15:27:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,479,1544515200"; d="scan'208,217";a="214284632" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga001.jf.intel.com with ESMTP; 14 Mar 2019 15:27:13 -0700 Received: from fmsmsx154.amr.corp.intel.com (10.18.116.70) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 14 Mar 2019 15:27:13 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX154.amr.corp.intel.com (10.18.116.70) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 14 Mar 2019 15:27:12 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.74]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.26]) with mapi id 14.03.0415.000; Fri, 15 Mar 2019 06:27:10 +0800 From: "Gao, Liming" To: "afish@apple.com" , "Kinney, Michael D" CC: "Yao, Jiewen" , edk2-devel-01 Thread-Topic: [edk2] [PATCH 3/3] MdePkg/BaseSynchronizationLib: Remove inline X86 assembly code Thread-Index: AQHU0vSE94gh21G/NUi0Z1yYhGmykqX9ACSAgACMrPD//5DuAIACKyZQ//+IAwCAAA4IgIAAPDAAgAAN1ACAAAOnAIAAChCAgACN4ED//307AABVSIWAAABHrQABOpCYsA== Date: Thu, 14 Mar 2019 22:27:09 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E403C38@SHSMSX104.ccr.corp.intel.com> References: <20190305014059.17988-1-shenglei.zhang@intel.com> <20190305014059.17988-4-shenglei.zhang@intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3FBBC2@SHSMSX104.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3FCC47@SHSMSX104.ccr.corp.intel.com> <47E8FE4A-4BDC-48A3-B7E6-02F1682C0990@apple.com> <74D8A39837DF1E4DA445A8C0B3885C503F556F4E@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F55722E@shsmsx102.ccr.corp.intel.com> <0F79F0FC-123A-4862-926D-DFE08CF5740F@apple.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3FCFF0@SHSMSX104.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F55769F@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZWI5NTM3OWQtMmRkZS00YjZhLWJiNTctNTE0NGJlODExYTJmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiMWVqeU9yK2xPUEtUTG1uZWpQWVhpXC96ZEpjZGVjcTJPY01qRUt1cGJJWmdUYzFQU1wvR2tmN1ZPY3hCRFY5QzhDIn0= 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 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [PATCH 3/3] MdePkg/BaseSynchronizationLib: Remove inline X86 assembly code 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, 14 Mar 2019 22:27:14 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QW5kcmV3Og0KICBJIGRvbuKAmXQga25vdyB3aG8gc3RpbGwgdXNlcyBJbnRlbCBjb21waWxlci4g SSBwcm9wb3NlIHRvIHJlbW92ZSBJTlRFTCB0b29sIGNoYWluIChJQ0M5IGFuZCBJQ0MxMSkgZnJv bSB0b29sc19kZWYudHh0IGlmIG5vIG9uZSByZWplY3RzIGl0LiBBZnRlciBJTlRFTCB0b29sIGNo YWluIGlzIHJlbW92ZWQsIGlmIGFsbCBjb21waWxlcnMgKFZTLCBHQ0MsIFhDT0RFLCBhbmQgQ0xB TkcpIHN1cHBvcnRzIHRoZSBpbmxpbmUgWDg2IGFzc2VtYmx5IGNvZGUsIEkgd2lsbCBwcm9wb3Nl IHRvIHJlbW92ZSB0aG9zZSBuYXNtIGZpbGVzIG9ubHkgZm9yIElOVEVMIGNvbXBpbGVyLg0KDQpU aGFua3MNCkxpbWluZw0KRnJvbTogYWZpc2hAYXBwbGUuY29tIFttYWlsdG86YWZpc2hAYXBwbGUu Y29tXQ0KU2VudDogRnJpZGF5LCBNYXJjaCA4LCAyMDE5IDQ6MTUgUE0NClRvOiBLaW5uZXksIE1p Y2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQpDYzogWWFvLCBKaWV3ZW4gPGpp ZXdlbi55YW9AaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsg ZWRrMi1kZXZlbC0wMSA8ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQpTdWJqZWN0OiBSZTogW2Vk azJdIFtQQVRDSCAzLzNdIE1kZVBrZy9CYXNlU3luY2hyb25pemF0aW9uTGliOiBSZW1vdmUgaW5s aW5lIFg4NiBhc3NlbWJseSBjb2RlDQoNCg0KDQoNCk9uIE1hciA4LCAyMDE5LCBhdCA0OjA3IFBN LCBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRvOm1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4gd3JvdGU6DQoNCkppZXdlbiwNCg0KVGhlcmUgYXJl IG5vdCBtYW55IG9mIHRob3NlIGZ1bmN0aW9ucyBhbmQgdGhleSBjYW4gYmUgb24gc3BlZWQgcGF0 aHMuDQoNCkkgZG8gbm90IHJlY29tbWVuZCBjb252ZXJ0aW5nIHRoZW0gdG8gb25seSBOQVNNLg0K DQpJIGRvIHJlY29tbWVuZCB3ZSBhZGQgY29tbWVudHMgdG8gTkFTTSBmaWxlcyBhbmQgQyBmaWxl cyB3aXRoIGluY2x1ZGUgYXNzZW1ibHkgdGhhdCBzdGF0ZSB0aGF0IHVwZGF0ZXMgdG8gb25lIHJl cXVpcmUgdXBkYXRlcyB0byB0aGUgb3RoZXJzLg0KDQoNCk1pa2UsDQoNCkl0IGxvb2tzIGxpa2Ug TkFTTSBmaWxlcyBvbmx5IGV4aXN0IHRvIHN1cHBvcnQgdGhlIElOVEVMIGNvbXBpbGVyLiBDb3Vs ZCB0aGF0IGJlIGFuIG91dGRhdGVkIGFzc3VtcHRpb24/IE92ZXJ0aW1lIGhhcyB0aGUgSU5URUwg Y29tcGlsZXIgYWRkZWQgbW9yZSBjb21wYXRpYmlsaXR5IHdpdGggR0NDIGlubGluZSBhc3NlbWJs eSwgb3IgVkMrKyBpbnRyaW5zaWNzPyBJIGFzc3VtZSBwZW9wbGUgYXJlIHN0aWxsIHVzaW5nIHRo ZSBJTlRFTCBjb21waWxlcj8NCg0KVGhhbmtzLA0KDQpBbmRyZXcgRmlzaA0KDQoNCg0KTWlrZQ0K DQpGcm9tOiBZYW8sIEppZXdlbg0KU2VudDogV2VkbmVzZGF5LCBNYXJjaCA2LCAyMDE5IDExOjI1 IFBNDQpUbzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPG1haWx0bzpsaW1pbmcu Z2FvQGludGVsLmNvbT4+OyBhZmlzaEBhcHBsZS5jb208bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT4N CkNjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRv Om1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj47IGVkazItZGV2ZWwtMDEgPGVkazItZGV2ZWxA bGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4+DQpTdWJqZWN0OiBS RTogW2VkazJdIFtQQVRDSCAzLzNdIE1kZVBrZy9CYXNlU3luY2hyb25pemF0aW9uTGliOiBSZW1v dmUgaW5saW5lIFg4NiBhc3NlbWJseSBjb2RlDQoNClRoYW5rcy4NCg0KSSBhbHNvIHJlY29tbWVu ZCB0byB0YWtlIGEgbG9vayBhdCBNZGVQa2dcTGlicmFyeVxCYXNlU3luY2hyb25pemF0aW9uTGli Lg0KDQpUaGF0IGlzIGFsc28gY29tcGxpY2F0ZWQgYW5kIG5vdCBzbyByZWFkYWJsZSBmb3IgbWUu DQoNCkFuZCB3ZSBoYXZlIDggcGF0Y2hlcyB0byAqZml4KiB0aGUgcmVhbCBwcm9ibGVtIGluIDIw MTguDQoNClRoYW5rIHlvdQ0KWWFvIEppZXdlbg0KDQoNCkZyb206IEdhbywgTGltaW5nDQpTZW50 OiBXZWRuZXNkYXksIE1hcmNoIDYsIDIwMTkgMTE6MTUgUE0NClRvOiBhZmlzaEBhcHBsZS5jb208 bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNv bTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+Pg0KQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+PjsgZWRrMi1kZXZlbC0wMSA8ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazIt ZGV2ZWxAbGlzdHMuMDEub3JnPj4NClN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDMvM10gTWRl UGtnL0Jhc2VTeW5jaHJvbml6YXRpb25MaWI6IFJlbW92ZSBpbmxpbmUgWDg2IGFzc2VtYmx5IGNv ZGUNCg0KVGhhbmtzIGZvciB5b3VyIGNsYXJpZmljYXRpb24uIE5vdywgd2Ugd2lsbCBmb2N1cyBv biBTZXRKdW1wL0xvbmdKdW1wKCkgZmlyc3QuDQoNClRoYW5rcw0KTGltaW5nDQpGcm9tOiBhZmlz aEBhcHBsZS5jb208bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT4gW21haWx0bzphZmlzaEBhcHBsZS5j b21dDQpTZW50OiBXZWRuZXNkYXksIE1hcmNoIDYsIDIwMTkgMTA6NDUgUE0NClRvOiBZYW8sIEpp ZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj4N CkNjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRv Om1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGlu dGVsLmNvbTxtYWlsdG86bGltaW5nLmdhb0BpbnRlbC5jb20+PjsgZWRrMi1kZXZlbC0wMSA8ZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPj4NClN1 YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDMvM10gTWRlUGtnL0Jhc2VTeW5jaHJvbml6YXRpb25M aWI6IFJlbW92ZSBpbmxpbmUgWDg2IGFzc2VtYmx5IGNvZGUNCg0KDQoNCk9uIE1hciA2LCAyMDE5 LCBhdCAxMDowOSBQTSwgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpq aWV3ZW4ueWFvQGludGVsLmNvbT4+IHdyb3RlOg0KDQpUaGFua3MgQW5kcmV3Lg0KTm93IEkgMTAw JSBhZ3JlZSB3aXRoIHlvdSAtIEkgdGhpbmsgaXQgaXMgZmluZSB0byByZXN0cmljdCBuZXcgQyBp bmxpbmUgYXNzZW1ibGVyLCBvciBhdCBsZWFzdCBoYXZlIGEgdmVyeSBoaWdoIGJhciB0byBhZGQg YW55dGhpbmcgbmV3LiBBbnkgbmV3IGlubGluZSBhc3NlbWJsZXIgKnNob3VsZCBhbHNvIGJlIHNp bXBsZSBhbmQganVzdCBiZSBhIGZ1bmN0aW9uIGFic3RyYWN0aW5nIGEgQ1BVIG9wLWNvZGUqIHRo YXQgaXMgbm90IGF2YWlsYWJsZSB0byBDLiBUaGlzIGlzIGhvdyB3ZSBwcmV2ZW50IHRoZSBtYWlu dGVuYW5jZSBpc3N1ZXMgeW91IGFyZSB3b3JyeWluZyBhYm91dC4NCg0KQW5kIEkgYWxzbyBhZ3Jl ZSB3aXRoIHlvdXIgY2FzZS4NCg0KTGV04oCZcyBkaXNjdXNzIGFub3RoZXIgY2FzZS4gQmVsb3cg MiBmdW5jdGlvbnMgU2V0SnVtcC9Mb25nSnVtcCBhcmUgdXBkYXRlZCByZWNlbnRseSwgYnkgbWUg dW5mb3J0dW5hdGVseS4NCg0KSXQgaXMgdW5jbGVhciB0byBtZSB3aGF0IGlzIHRoZSBzaXplIG9w dGltaXphdGlvbiB3ZSBjYW4gZ2V0IGJ5IGlubGluZSBTZXRKdW1wL0xvbmdKdW1wLg0KQnV0IG9i dmlvdXNseSwgaXQgYnJpbmdzIHRoZSBtYWludGVuYW5jZSBpc3N1ZSB0byBtZS4NCkFuZCBJIGRv buKAmXQgYmVsaWV2ZSBpdCBtZWV0cyB0aGUgY3JpdGVyaWEgeW91IG1lbnRpb25lZCBhYm92ZS4N Cg0KDQpKaWV3ZW4sDQoNCkkgYWdyZWUgaXQgc2VlbXMgbGlrZSBnaXZlbiB0aGUgcnVsZXMgd2Ug YWdyZWUgb24gdGhpcyBjb2RlIHNob3VsZCBiZSB3cml0dGVuIGluIE5BU00uDQoNClRoYW5rcywN Cg0KQW5kcmV3IEZpc2gNCg0KX2RlY2xzcGVjIChuYWtlZCkNClJFVFVSTlNfVFdJQ0UNClVJTlRO DQpFRklBUEkNClNldEp1bXAgKA0KICBPVVQgICAgIEJBU0VfTElCUkFSWV9KVU1QX0JVRkZFUiAg Kkp1bXBCdWZmZXINCiAgKQ0Kew0KICBfYXNtIHsNCiAgICBwdXNoICAgIFtlc3AgKyA0XQ0KICAg IGNhbGwgICAgSW50ZXJuYWxBc3NlcnRKdW1wQnVmZmVyDQogICAgcG9wICAgICBlY3gNCiAgICBw b3AgICAgIGVjeA0KICAgIG1vdiAgICAgZWR4LCBbZXNwXQ0KDQogICAgeG9yICAgICBlYXgsIGVh eA0KICAgIG1vdiAgICAgW2VkeCArIDI0XSwgZWF4ICAgICAgICA7IHNhdmUgMCB0byBTU1ANCg0K ICAgIG1vdiAgICAgZWF4LCBbUGNkR2V0MzIgKFBjZENvbnRyb2xGbG93RW5mb3JjZW1lbnRQcm9w ZXJ0eU1hc2spXQ0KICAgIHRlc3QgICAgZWF4LCBlYXgNCiAgICBqeiAgICAgIENldERvbmUNCiAg ICBfZW1pdCAgICAgIDB4MEYNCiAgICBfZW1pdCAgICAgIDB4MjANCiAgICBfZW1pdCAgICAgIDB4 RTAgICAgICAgICAgICAgICAgOyBtb3YgICAgIGVheCwgY3I0DQogICAgYnQgICAgICBlYXgsIDIz ICAgICAgICAgICAgICAgIDsgY2hlY2sgaWYgQ0VUIGlzIGVuYWJsZWQNCiAgICBqbmMgICAgIENl dERvbmUNCg0KICAgIG1vdiAgICAgZWF4LCAxDQogICAgX2VtaXQgICAgICAweEYzDQogICAgX2Vt aXQgICAgICAweDBGDQogICAgX2VtaXQgICAgICAweEFFDQogICAgX2VtaXQgICAgICAweEU4ICAg ICAgICAgICAgICAgIDsgSU5DU1NQIEVBWCB0byByZWFkIG9yaWdpbmFsIFNTUA0KICAgIF9lbWl0 ICAgICAgMHhGMw0KICAgIF9lbWl0ICAgICAgMHgwRg0KICAgIF9lbWl0ICAgICAgMHgxRQ0KICAg IF9lbWl0ICAgICAgMHhDOCAgICAgICAgICAgICAgICA7IFJFQURTU1AgRUFYDQogICAgbW92ICAg ICBbZWR4ICsgMHgyNF0sIGVheCAgICAgIDsgc2F2ZSBTU1ANCg0KQ2V0RG9uZToNCg0KICAgIG1v diAgICAgW2VkeF0sIGVieA0KICAgIG1vdiAgICAgW2VkeCArIDRdLCBlc2kNCiAgICBtb3YgICAg IFtlZHggKyA4XSwgZWRpDQogICAgbW92ICAgICBbZWR4ICsgMTJdLCBlYnANCiAgICBtb3YgICAg IFtlZHggKyAxNl0sIGVzcA0KICAgIG1vdiAgICAgW2VkeCArIDIwXSwgZWN4DQogICAgeG9yICAg ICBlYXgsIGVheA0KICAgIGptcCAgICAgZWN4DQogIH0NCn0NCg0KX19kZWNsc3BlYyAobmFrZWQp DQpWT0lEDQpFRklBUEkNCkludGVybmFsTG9uZ0p1bXAgKA0KICBJTiAgICAgIEJBU0VfTElCUkFS WV9KVU1QX0JVRkZFUiAgKkp1bXBCdWZmZXIsDQogIElOICAgICAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICBWYWx1ZQ0KICApDQp7DQogIF9hc20gew0KICAgIG1vdiAgICAgZWF4LCBbUGNkR2V0 MzIgKFBjZENvbnRyb2xGbG93RW5mb3JjZW1lbnRQcm9wZXJ0eU1hc2spXQ0KICAgIHRlc3QgICAg ZWF4LCBlYXgNCiAgICBqeiAgICAgIENldERvbmUNCiAgICBfZW1pdCAgICAgIDB4MEYNCiAgICBf ZW1pdCAgICAgIDB4MjANCiAgICBfZW1pdCAgICAgIDB4RTAgICAgICAgICAgICAgICAgOyBtb3Yg ICAgIGVheCwgY3I0DQogICAgYnQgICAgICBlYXgsIDIzICAgICAgICAgICAgICAgIDsgY2hlY2sg aWYgQ0VUIGlzIGVuYWJsZWQNCiAgICBqbmMgICAgIENldERvbmUNCg0KICAgIG1vdiAgICAgZWR4 LCBbZXNwICsgNF0gICAgICAgICA7IGVkeCA9IEp1bXBCdWZmZXINCiAgICBtb3YgICAgIGVkeCwg W2VkeCArIDI0XSAgICAgICAgOyBlZHggPSB0YXJnZXQgU1NQDQogICAgX2VtaXQgICAgICAweEYz DQogICAgX2VtaXQgICAgICAweDBGDQogICAgX2VtaXQgICAgICAweDFFDQogICAgX2VtaXQgICAg ICAweEM4ICAgICAgICAgICAgICAgIDsgUkVBRFNTUCBFQVgNCiAgICBzdWIgICAgIGVkeCwgZWF4 ICAgICAgICAgICAgICAgOyBlZHggPSBkZWx0YQ0KICAgIG1vdiAgICAgZWF4LCBlZHggICAgICAg ICAgICAgICA7IGVheCA9IGRlbHRhDQoNCiAgICBzaHIgICAgIGVheCwgMiAgICAgICAgICAgICAg ICAgOyBlYXggPSBkZWx0YS9zaXplb2YoVUlOVDMyKQ0KICAgIF9lbWl0ICAgICAgMHhGMw0KICAg IF9lbWl0ICAgICAgMHgwRg0KICAgIF9lbWl0ICAgICAgMHhBRQ0KICAgIF9lbWl0ICAgICAgMHhF OCAgICAgICAgICAgICAgICA7IElOQ1NTUCBFQVgNCg0KQ2V0RG9uZToNCg0KICAgIHBvcCAgICAg ZWF4ICAgICAgICAgICAgICAgICAgICAgICAgIDsgc2tpcCByZXR1cm4gYWRkcmVzcw0KICAgIHBv cCAgICAgZWR4ICAgICAgICAgICAgICAgICAgICAgICAgIDsgZWR4IDwtIEp1bXBCdWZmZXINCiAg ICBwb3AgICAgIGVheCAgICAgICAgICAgICAgICAgICAgICAgICA7IGVheCA8LSBWYWx1ZQ0KICAg IG1vdiAgICAgZWJ4LCBbZWR4XQ0KICAgIG1vdiAgICAgZXNpLCBbZWR4ICsgNF0NCiAgICBtb3Yg ICAgIGVkaSwgW2VkeCArIDhdDQogICAgbW92ICAgICBlYnAsIFtlZHggKyAxMl0NCiAgICBtb3Yg ICAgIGVzcCwgW2VkeCArIDE2XQ0KICAgIGptcCAgICAgZHdvcmQgcHRyIFtlZHggKyAyMF0NCiAg fQ0KfQ0KDQoNCg0KRnJvbTogYWZpc2hAYXBwbGUuY29tPG1haWx0bzphZmlzaEBhcHBsZS5jb20+ IFttYWlsdG86YWZpc2hAYXBwbGUuY29tXQ0KU2VudDogV2VkbmVzZGF5LCBNYXJjaCA2LCAyMDE5 IDk6NTYgUE0NClRvOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmpp ZXdlbi55YW9AaW50ZWwuY29tPj4NCkNjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj47IEdhbywg TGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbTxtYWlsdG86bGltaW5nLmdhb0BpbnRlbC5jb20+ PjsgZWRrMi1kZXZlbC0wMSA8ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2 ZWxAbGlzdHMuMDEub3JnPj4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDMvM10gTWRlUGtn L0Jhc2VTeW5jaHJvbml6YXRpb25MaWI6IFJlbW92ZSBpbmxpbmUgWDg2IGFzc2VtYmx5IGNvZGUN Cg0KDQoNCk9uIE1hciA2LCAyMDE5LCBhdCA5OjA2IFBNLCBZYW8sIEppZXdlbiA8amlld2VuLnlh b0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj4gd3JvdGU6DQoNCkhJIE1p a2UgYW5kIEFuZHJldw0KVGhlIHByb2JsZW0gaXMgbWFpbnRhaW5hYmlsaXR5Lg0KDQpJZiB3ZSBo YXZlIG11bHRpcGxlIGNvcHkgb2YgaW1wbGVtZW50YXRpb24sIGEgZGV2ZWxvcGVyIG5lZWQgdmVy aWZ5IG11bHRpcGxlIGNvcHkgb2YgaW1wbGVtZW50YXRpb24sIGlmIHdlIG1ha2UgdXBkYXRlLiBC ZWZvcmUgdGhhdCwgYSBkZXZlbG9wZXIgaGFzIHRvIGJlIGF3YXJlIHRoYXQgdGhlcmUgaXMgbXVs dGlwbGUgY29weSBvZiBpbXBsZW1lbnRhdGlvbi4gLSBUaGF0IGluY3JlYXNlcyB0aGUgY29tcGxl eGl0eS4NCg0KSWYgd2UgaGF2ZSBldmVyeXRoaW5nLCB0aGVyZSBNQVkgYmUgNSBjb3B5IC0gQVNN LCBOQVNNLCBTLCBHQ0MgaW5saW5lLCBNUyBpbmxpbmUsIHRoZW9yZXRpY2FsbHkuDQpOb3csIHdl IHJlbW92ZSBBU00uIEl0IGlzIGdvb2QgZmlyc3Qgc3RlcC4NCkJ1dCB3ZSBtYXkgc3RpbGwgaGF2 ZSA0IGNvcGllcy4gSSBzdWdnZXN0IHdlIGNvbnNpZGVyIGRvIG1vcmUuDQoNCkppZXdlbiwNCg0K SSB0aGluayB5b3UgYXJlIHRyeWluZyBkbyB0aGUgcmlnaHQgdGhpbmcsIGJ1dCBhcmUgb3B0aW1p emUgdGhlIHdyb25nIHRoaW5nLg0KDQpNb3N0IG9mIHRoZSBHQ0MvQ2xhbmcgaW5saW5lIGFzc2Vt YmxlciBjb2RlIGlzIGluIEdjY2lubGluZS5jIGFuZCBzaW5jZSB0aGF0IGNvZGUgaXMgbW9zdGx5 IGp1c3QgYWJzdHJhY3RpbmcgYW4geDg2IGluc3RydWN0aW9uIGFuZCB0aGUgZnVuY3Rpb25zIGFy ZSB2ZXJ5IHNpbXBsZSBhbmQgdGh1cyBpdCBpcyBOT1QgY29kZSB0aGF0IG5lZWRzIG9uZ29pbmcg bWFpbnRlbmFuY2UuDQoNCkxldHMgbG9vayBhdCB0aGUgaGlzdG9yeToNCmh0dHBzOi8vZ2l0aHVi LmNvbS90aWFub2NvcmUvZWRrMi9jb21taXRzL21hc3Rlci9NZGVQa2cvTGlicmFyeS9CYXNlTGli L1g2NC9HY2NJbmxpbmUuYw0KVGhlIGxhc3QgbG9naWMgZml4IHdhcyBKdW4gMSwgMjAxMA0KDQpo dHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvY29tbWl0cy9tYXN0ZXIvTWRlUGtnL0xp YnJhcnkvQmFzZUxpYi9JYTMyL0djY0lubGluZS5jDQpPayBzbyBNaWtlIGhhZCB0byBtYWtlIGEg Zml4IGluIHRoaXMgZmlsZSBpbiAyMDE1IHRvIG1ha2Ugc29tZXRoaW5nIG9wdGlvbmFsLCBkdWUg dG8gYW4gZW1iZWRkZWQgQ1BVIGRlZmVhdGluZyBhbiBpbnN0cnVjdGlvbi4gQnV0IHByaW9yIHRv IHRoYXQgaXQgd2FzIDIwMTAuDQoNClRoZSBzZXQgb2YgdGhpbmdzIHRoYXQgYXJlIEMgaW5saW5l IGFzc2VtYmxlciB3ZSBoYXZlIHNob3VsZCBiZSBzdGF0aWMgYW5kIG5vdCByZXF1aXJlIG11Y2gg bWFpbnRlbmFuY2UuIE1vcmUgY29tcGxleCBjb2RlIHNob3VsZCBiZSB3cml0dGVuIGluIEMgYW5k IHVzZSB0aGUgQyBpbmxpbmUgYXNzZW1ibGVyIGZ1bmN0aW9ucyB3ZSBhbHJlYWR5IGhhdmUuIElm IGFueSBtb3JlIGNvbXBsZXggYXNzZW1ibHkgY29kZSBpcyByZXF1aXJlZCB3ZSBzaG91bGQganVz dCB3cml0ZSBpdCBpbiBOQVNNLiBTbyBJIHRoaW5rIGl0IGlzIGZpbmUgdG8gcmVzdHJpY3QgbmV3 IEMgaW5saW5lIGFzc2VtYmxlciwgb3IgYXQgbGVhc3QgaGF2ZSBhIHZlcnkgaGlnaCBiYXIgdG8g YWRkIGFueXRoaW5nIG5ldy4gQW55IG5ldyBpbmxpbmUgYXNzZW1ibGVyIHNob3VsZCBhbHNvIGJl IHNpbXBsZSBhbmQganVzdCBiZSBhIGZ1bmN0aW9uIGFic3RyYWN0aW5nIGEgQ1BVIG9wLWNvZGUg dGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIEMuIFRoaXMgaXMgaG93IHdlIHByZXZlbnQgdGhlIG1h aW50ZW5hbmNlIGlzc3VlcyB5b3UgYXJlIHdvcnJ5aW5nIGFib3V0Lg0KDQpJIGdhdmUgYW4gZXhh bXBsZSBpbiB0aGlzICBtYWlsIHRocmVhZCBvbiBob3cgYSBCcmVha3BvaW50IGdvZXMgZnJvbSBi ZWluZyAxIGJ5dGUgdG8gMTEgYnl0ZXMgaWYgeW91IHJlbW92ZSB0aGUgQyBpbmxpbmUgYXNzZW1i bGVyLiBGb3IgY2xhbmcgd2l0aCBMVE8gZW5hYmxlZCBhIENwdUJyZWFrcG9pbnQgd2lsbCBhbHdh eXMgZ2V0IGlubGluZWQgaW50byB0aGUgY2FsbGVycyBjb2RlIGFuZCBpdCB3aWxsIG9ubHkgdGFr ZSB0aGUgb25lIGJ5dGUgZm9yIGludCAzIGluc3RydWN0aW9uLiBJZiB0aGF0IGNvZGUgbW92ZXMg dG8gTkFTTSB0aGVuIGl0IGdldCByZXBsYWNlcyB3aXRoIGEgNSBieXRlIGNhbGwgaW5zdHJ1Y3Rp b24gYW5kIGFuIGFjdHVhbCBDIEFCSSBmdW5jdGlvbiBmb3IgdGhlIGJyZWFrcG9pbnQuDQoNClZP SUQNCkVGSUFQSQ0KQ3B1QnJlYWtwb2ludCAoDQogIFZPSUQNCiAgKQ0Kew0KICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoImludCAkMyIpOw0KfQ0KDQpUb2RheSB3aXRoIGNsYW5nIExUTyB0dXJuZWQg b24gY2FsbGluZyBDcHVCcmVha3BvaW50KCkgbG9va3MgbGlrZSB0aGlzIGZyb20gdGhlIGNhbGxl cnMgcG9pbnQgb2Ygdmlldy4NCg0KYS5vdXRbMHgxZmE1XSA8KzY+OiAgY2MgICAgICAgICAgICAg IGludDMNCg0KQnV0IGlmIHdlIG1vdmUgdGhhdCB0byBOQVNNOg0KDQphLm91dFsweDFmYTZdIDwr Nz46ICBlOCAwNyAwMCAwMCAwMCAgY2FsbGwgIDB4MWZiMiAgICAgICAgICAgICAgICAgICAgOyBD cHVCcmVha3BvaW50DQoNCnBsdXM6DQphLm91dGBDcHVCcmVha3BvaW50Og0KYS5vdXRbMHgxZjk5 XSA8KzA+OiA1NSAgICAgcHVzaGwgICVlYnANCmEub3V0WzB4MWY5YV0gPCsxPjogODkgZTUgIG1v dmwgICAlZXNwLCAlZWJwDQphLm91dFsweDFmOWNdIDwrMz46IGNjICAgICBpbnQzDQphLm91dFsw eDFmOWRdIDwrND46IDVkICAgICBwb3BsICAgJWVicA0KYS5vdXRbMHgxZjllXSA8KzU+OiBjMyAg ICAgcmV0bA0KDQpGb3IgYW55IGNvbXBpbGVyIHRoYXQgZW1pdHMgdGhlIGZyYW1lIHBvaW50ZXIg aWYgeW91IG1vdmUgdGhlIElOVCAzIHRvIGFzc2VtYmx5IHlvdSBuZWVkIHRoZSBmcmFtZSBwb2lu dGVyIG9yIHRoZSBFeGNlcHRpb24gTGliIGlzIG5vdCBnb2luZyB0byBiZSBhYmxlIHRvIHByaW50 IG91dCB0aGUgc3RhY2sgYmFja3RyYWNlIG9mIHRoZSBjb2RlIHdoZW4geW91IGhpdCBhIGJyZWFr cG9pbnQuIFNvIHRoaXMgaXMgaG93IEkgZ2V0IHRvIDExIHZzLiAxIGJ5dGVzLg0KDQpUaGFua3Ms DQoNCkFuZHJldyBGaXNoDQoNClBTIGZvciBjbGFuZyBMVE8gdGhlIGNvbXBpbGVyIGNvbXBpbGVz IHRvIGJpdGNvZGUgYW5kIHRoYXQgaXMgYW4gYWJzdHJhY3RlZCBhc3NlbWJseSBsYW5ndWFnZS4g QXQgbGluayB0aW1lIGFsbCB0aGF0IGNvZGUgZ2V0cyBvcHRpbWl6ZWQgdG8gdG9nZXRoZXIgYW5k IHRoZW4gcGFzc2VkIHRocm91Z2ggdGhlIENQVSBzcGVjaWZpYyBjb2RlIGdlbi4gRm9yIEMgaW5s aW5lIGFzc2VtYmxlciB0aGUgYXNzZW1ibHkgaW5zdHJ1Y3Rpb25zIGVuZCB1cCBpbiB0aGUgYml0 Y29kZSB3aXRoIGxvdHMgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnN0cmFpbnRzLiBUaGF0 IGlzIHdoeSB0aGVzZSBHY2NJbmxpbmUuYyBmdW5jdGlvbnMgYWxtb3N0IGFsd2F5cyBnZXQgaW5s aW5lZCB3aXRoIGNsYW5nIGFuZCBMVE8uDQoNClRoZSBDcHVCcmVha3BvaW50KCkgZnVuY3Rpb24g bG9va3MgbGlrZSB0aGlzIGluIGJpdGNvZGUsIGJ1dCB0aGUgZnVuY3Rpb24gY2FsbCBnZXRzIG9w dGltaXplZCBhd2F5IGJ5IExUTyBpbiB0aGUgY29kZSBnZW4uDQoNCjsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kIG9wdG5vbmUgc3NwIHV3dGFibGUNCmRlZmluZSB2b2lkIEBDcHVC cmVha3BvaW50KCkgIzAgew0KICBjYWxsIHZvaWQgYXNtIHNpZGVlZmZlY3QgImludCAkJDMiLCAi fntkaXJmbGFnfSx+e2Zwc3J9LH57ZmxhZ3N9IigpICMyLCAhc3JjbG9jICEzDQogIHJldCB2b2lk DQp9DQoNCkV2ZW4gc29tZXRoaW5nIG1vcmUgY29tcGxleCBsaWtlIEFzbVJlYWRNc3I2NCgpIGNh biBnZXQgaW5saW5lZCwgYnV0IGl0IGNvbnRhaW5zIGEgbG90IG1vcmUgaW5mbyBhYm91dCB0aGUg Y29uc3RyYWludHM6DQoNCjsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kIG9wdG5v bmUgc3NwIHV3dGFibGUNCmRlZmluZSBpNjQgQEFzbVJlYWRNc3I2NChpMzIpICMwIHsNCiAgJTIg PSBhbGxvY2EgaTMyLCBhbGlnbiA0DQogICUzID0gYWxsb2NhIGk2NCwgYWxpZ24gOA0KICBzdG9y ZSBpMzIgJTAsIGkzMiogJTIsIGFsaWduIDQNCiAgJTQgPSBsb2FkIGkzMiwgaTMyKiAlMiwgYWxp Z24gNA0KICAlNSA9IGNhbGwgaTY0IGFzbSBzaWRlZWZmZWN0ICJyZG1zciIsICI9QSx7Y3h9LH57 ZGlyZmxhZ30sfntmcHNyfSx+e2ZsYWdzfSIoaTMyICU0KSAjMiwgIXNyY2xvYyAhNA0KICBzdG9y ZSBpNjQgJTUsIGk2NCogJTMsIGFsaWduIDgNCiAgJTYgPSBsb2FkIGk2NCwgaTY0KiAlMywgYWxp Z24gOA0KICByZXQgaTY0ICU2DQp9DQoNClRoZSBhbGxvY2EsIHN0b3JlLCBsb2FkLCBldGMgYXJl IHRoZSBzYW1lIGJpdGNvZGUgaW5zdHJ1Y3Rpb25zIHlvdSB3b3VsZCBzZWUgd2l0aCBDIGNvZGUu DQoNCkEgcmVjZW50bHkgY2FzZSB0aGF0IFNldEp1bXAvTG9uZ0p1bXAsIEkgdXBkYXRlZCB0aGUg TkFTTSBmaWxlIGZvciBib3RoIElBMzIgYW5kIFg2NC4NCg0KTGF0ZXIsIHRvIG15IHN1cnByaXNl LCBvbmx5IFg2NCB2ZXJzaW9uIE5BU00gd29ya3MsIGFuZCBJQTMyIHZlcnNpb24gTkFTTSBkb2Vz IG5vdCB3b3JrLg0KVGhlbiBJIG5vdGljZSB0aGF0IHRoZXJlIGlzIGEgZGlmZmVyZW50IGNvcHkg aWYgSUEzMiBKdW1wLmMgTVMgaW5saW5lIC0gSSBhbHNvIG5lZWQgdXBkYXRlLiBUaGF0IGlzIGZy dXN0cmF0ZWQuDQoNCkkgdGhpbmsgdGhlcmUgc2hvdWxkIGJlIGEgYmFsYW5jZSBiZXR3ZWVuIG9w dGltaXphdGlvbiBhbmQgY29kZSByZWFkYWJpbGl0eS9tYWludGFpbmFiaWxpdHkuDQoNCkRvIHdl IGhhdmUgZGF0YSBvbiB3aGF0IHNpemUgYmVuZWZpdCB3ZSBjYW4gZ2V0IHdpdGggdGhlc2UgaW5s aW5lIGZ1bmN0aW9uLCBmcm9tIHdob2xlIGltYWdlIGxldmVsPw0KV2UgY2FuIGRvIGV2YWx1YXRp b24gYXQgZnVuY3Rpb24gbGV2ZWwsIGNhc2UgYnkgY2FzZS4NCklmIHdlIHNlZSBhIGh1Z2Ugc2l6 ZSBiZW5lZml0LCBJIGFncmVlIHRvIGtlZXAgdGhpcyBmdW5jdGlvbi4NCklmIHdlIHNlZSBubyBz aXplIGJlbmVmaXQsIEkgc3VnZ2VzdCB3ZSBkbyB0aGUgY2xlYW51cCBmb3IgdGhpcyBmdW5jdGlv bi4NCg0KDQpUaGFuayB5b3UNCllhbyBKaWV3ZW4NCg0KDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCkZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlz dHMuMDEub3JnXSBPbiBCZWhhbGYgT2YNCkFuZHJldyBGaXNoIHZpYSBlZGsyLWRldmVsDQpTZW50 OiBXZWRuZXNkYXksIE1hcmNoIDYsIDIwMTkgNTozMSBQTQ0KVG86IEtpbm5leSwgTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRl bC5jb20+Pg0KQ2M6IGVkazItZGV2ZWwtMDEgPGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0 bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4+OyBHYW8sIExpbWluZw0KPGxpbWluZy5nYW9AaW50 ZWwuY29tPG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNvbT4+DQpTdWJqZWN0OiBSZTogW2VkazJd IFtQQVRDSCAzLzNdIE1kZVBrZy9CYXNlU3luY2hyb25pemF0aW9uTGliOiBSZW1vdmUNCmlubGlu ZSBYODYgYXNzZW1ibHkgY29kZQ0KDQoNCg0KDQpPbiBNYXIgNiwgMjAxOSwgYXQgNDo0MSBQTSwg S2lubmV5LCBNaWNoYWVsIEQNCjxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+PiB3cm90ZToNCg0KTGltaW5nLA0KDQpUaGF0IGRvZXMg bm90IHdvcmsgZWl0aGVyIGJlY2F1c2UgaW5saW5lIGFzc2VtYmx5IHVzZXMgY29tcGlsZXIgc3Bl Y2lmaWMNCnN5bnRheC4NCg0KUGxlYXNlIHVwZGF0ZSB3aXRoIHRoZSBzcGVjaWZpYyBsaXN0IG9m IGZ1bmN0aW9ucyB0aGF0IHlvdSB0aGluayB0aGUgaW5saW5lDQpzaG91bGQgYmUgcmVtb3ZlZCB0 byBpbXByb3ZlIG1haW50ZW5hbmNlIHdpdGggbm8gaW1wYWN0cyBpbiBzaXplL3BlcmYuDQoNCg0K TWlrZSwNCg0KSXQgaXMgZWFzeSB0byBmaW5kIHRoZSBnY2MvY2xhbmcgaW5saW5lIGFzc2VtYmxl ciwganVzdCBgZ2l0IGdyZXAgIl9fYXNtX18NCl9fdm9sYXRpbGVfXyJgDQoNClRoZSBtYWluIGZp bGVzIGFyZToNCmh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iL21hc3Rlci9N ZGVQa2cvTGlicmFyeS9CYXNlSW9MaWINCkludHJpbnNpYy9Jb0xpYkdjYy5jDQpodHRwczovL2dp dGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9tYXN0ZXIvTWRlUGtnL0xpYnJhcnkvQmFzZUxp Yi9YDQo2NC9HY2NJbmxpbmUuYw0KaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Js b2IvbWFzdGVyL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSQ0KYTMyL0djY0lubGluZS5jDQpodHRw czovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9tYXN0ZXIvTWRlUGtnL0xpYnJhcnkv QmFzZVN5bmMNCmhyb25pemF0aW9uTGliL0lhMzIvR2NjSW5saW5lLmMNCmh0dHBzOi8vZ2l0aHVi LmNvbS90aWFub2NvcmUvZWRrMi9ibG9iL21hc3Rlci9NZGVQa2cvTGlicmFyeS9CYXNlU3luYw0K aHJvbml6YXRpb25MaWIvWDY0L0djY0lubGluZS5jDQoNClRoaXMgaXMgcmVhbGx5IGp1c3QgY29t cGlsZXIgb3B0aW1pemVyIGNvbnRyb2wuDQpMaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIv U3luY2hyb25pemF0aW9uR2NjLmM6MjE6I2RlZmluZQ0KX1JlYWRXcml0ZUJhcnJpZXIoKSBkbyB7 IF9fYXNtX18gX192b2xhdGlsZV9fICgiIjogOiA6ICJtZW1vcnkiKTsgfSB3aGlsZSgwKQ0KDQpM b29rcyBsaWtlIHRoaXMgaXMgd29ya2luZyBhcm91bmQgdGhlIGFsaWdubWVudCBBU1NFUlQgaW4g QmFzZUlvTGliSW50cmluc2ljLg0KT3ZtZlBrZy9RZW11VmlkZW9EeGUvVW5hbGlnbmVkSW9HY2Mu Yzo0MzogIF9fYXNtX18gX192b2xhdGlsZV9fDQooICJvdXRsICUwLCAlMSIgOiA6ICJhIiAoVmFs dWUpLCAiZCIgKChVSU5UMTYpUG9ydCkgKTsNCk92bWZQa2cvUWVtdVZpZGVvRHhlL1VuYWxpZ25l ZElvR2NjLmM6Njc6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXw0KKCAiaW5sICUxLCAlMCIgOiAiPWEi IChEYXRhKSA6ICJkIiAoKFVJTlQxNilQb3J0KSApOw0KDQpJdCBzZWVtcyBsaWtlIHdlIGhhdmUg YSByZWFzb25hYmxlIHNldCBhbmQgc2hvdWxkIG5vdCB1c2UgdGhlIGlubGluZQ0KYXNzZW1ibHkg Zm9yIGFueSBtb3JlIGNvbXBsZXggY29kZS4NCg0KVGhhbmtzLA0KDQpBbmRyZXcgRmlzaA0KDQoN ClRoZSBpc3N1ZSB5b3UgcG9pbnRlZCB0byB3YXMgYXJvdW5kIFNldEp1bXAoKS9Mb25nSnVtcCgp LiAgQ2FuIHdlIGxpbWl0DQp0aGlzIEJaIHRvIG9ubHkgdGhvc2UgMiBmdW5jdGlvbnM/DQoNCk1p a2UNCiAgPD4NCkZyb206IEdhbywgTGltaW5nDQpTZW50OiBXZWRuZXNkYXksIE1hcmNoIDYsIDIw MTkgNDoyOCBQTQ0KVG86IGFmaXNoQGFwcGxlLmNvbTxtYWlsdG86YWZpc2hAYXBwbGUuY29tPg0K Q2M6IFpoYW5nLCBTaGVuZ2xlaSA8c2hlbmdsZWkuemhhbmdAaW50ZWwuY29tPG1haWx0bzpzaGVu Z2xlaS56aGFuZ0BpbnRlbC5jb20+PjsgZWRrMi1kZXZlbC0wMQ0KPGVkazItZGV2ZWxAbGlzdHMu MDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4+OyBLaW5uZXksIE1pY2hhZWwg RA0KPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT4+DQpTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCAzLzNdIE1kZVBrZy9CYXNlU3lu Y2hyb25pemF0aW9uTGliOiBSZW1vdmUNCmlubGluZSBYODYgYXNzZW1ibHkgY29kZQ0KDQpBbmRy ZXc6DQogSSB3YW50IHRvIGtlZXAgb25seSBvbmUgaW1wbGVtZW50YXRpb24uIElmIGlubGluZSBh c3NlbWJseSBjIHNvdXJjZSBpcw0KcHJlZmVycmVkLCBJIHN1Z2dlc3QgdG8gcmVtb3ZlIGl0cyBu YXNtIGltcGxlbWVudGF0aW9uLg0KDQpUaGFua3MNCkxpbWluZw0KPD5Gcm9tOiBhZmlzaEBhcHBs ZS5jb208bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT4gPG1haWx0bzphZmlzaEBhcHBsZS5jb20+DQpb bWFpbHRvOmFmaXNoQGFwcGxlLmNvbSA8bWFpbHRvOmFmaXNoQGFwcGxlLmNvbT48bWFpbHRvOmFm aXNoQGFwcGxlLmNvbSUyMCUzY21haWx0bzphZmlzaEBhcHBsZS5jb20lM2U+XQ0KU2VudDogVHVl c2RheSwgTWFyY2ggNSwgMjAxOSAyOjQ0IFBNDQpUbzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9A aW50ZWwuY29tIDxtYWlsdG86bGltaW5nLmdhb0BpbnRlbC5jb208bWFpbHRvOmxpbWluZy5nYW9A aW50ZWwuY29tJTIwJTNjbWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29tPj4+DQpDYzogWmhhbmcs IFNoZW5nbGVpIDxzaGVuZ2xlaS56aGFuZ0BpbnRlbC5jb208bWFpbHRvOnNoZW5nbGVpLnpoYW5n QGludGVsLmNvbT4NCjxtYWlsdG86c2hlbmdsZWkuemhhbmdAaW50ZWwuY29tPj47IGVkazItZGV2 ZWwtMDENCjxlZGsyLWRldmVsQGxpc3RzLjAxLm9yZyA8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMu MDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZyUyMCUzY21haWx0bzplZGsyLWRl dmVsQGxpc3RzLjAxLm9yZz4+PjsgS2lubmV5LA0KTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbQ0KPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20lMGIlM2NtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRl bC5jb20+Pj4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDMvM10gTWRlUGtnL0Jhc2VTeW5j aHJvbml6YXRpb25MaWI6IFJlbW92ZQ0KaW5saW5lIFg4NiBhc3NlbWJseSBjb2RlDQoNCg0KDQoN Ck9uIE1hciA1LCAyMDE5LCBhdCAxOjMyIFBNLCBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRl bC5jb208bWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29tPg0KPG1haWx0bzpsaW1pbmcuZ2FvQGlu dGVsLmNvbT4+IHdyb3RlOg0KDQpBbmRyZXc6DQpCWiAxMTYzIGlzIHRvIHJlbW92ZSBpbmxpbmUg WDg2IGFzc2VtYmx5IGNvZGUgaW4gQyBzb3VyY2UgZmlsZS4gQnV0LCB0aGlzDQpwYXRjaCBpcyB3 cm9uZy4gSSBoYXZlIGdhdmUgbXkgY29tbWVudHMgdG8gdXBkYXRlIHRoaXMgcGF0Y2guDQoNCg0K V2h5IGRvIHdlIHdhbnQgdG8gcmVtb3ZlIGlubGluZSBYODYgYXNzZW1ibHkuIEFzIEkgbWVudGlv bmVkIGl0IHdpbGwgbGVhZA0KdG8gbGFyZ2VyIGJpbmFyaWVzLCBzbG93ZXIgYmluYXJpZXMsIGFu ZCBsZXNzIG9wdGltaXplZCBjb2RlLg0KDQpGb3IgZXhhbXBsZSB0YWtlIHRoaXMgc2ltcGxlIGlu bGluZSBhc3NlbWJseSBmdW5jdGlvbjoNCg0KVk9JRA0KRUZJQVBJDQpDcHVCcmVha3BvaW50ICgN CiBWT0lEDQogKQ0Kew0KIF9fYXNtX18gX192b2xhdGlsZV9fICgiaW50ICQzIik7DQp9DQoNCg0K VG9kYXkgd2l0aCBjbGFuZyBMVE8gdHVybmVkIG9uIGNhbGxpbmcgQ3B1QnJlYWtwb2ludCgpIGxv b2tzIGxpa2UgdGhpcyBmcm9tDQp0aGUgY2FsbGVycyBwb2ludCBvZiB2aWV3Lg0KDQphLm91dFsw eDFmYTVdIDwrNj46ICBjYyAgICAgICAgICAgICAgaW50Mw0KDQoNCkJ1dCBpZiB3ZSBtb3ZlIHRo YXQgdG8gTkFTTToNCg0KDQphLm91dFsweDFmYTZdIDwrNz46ICBlOCAwNyAwMCAwMCAwMCAgY2Fs bGwNCjB4MWZiMiAgICAgICAgICAgICAgICAgICAgOyBDcHVCcmVha3BvaW50DQoNCg0KcGx1czoN CmEub3V0YENwdUJyZWFrcG9pbnQ6DQphLm91dFsweDFmYjJdIDwrMD46IGNjICAgICBpbnQzDQph Lm91dFsweDFmYjNdIDwrMT46IGMzICAgICByZXRsDQoNCg0KQW5kIHRoZXJlIGlzIGFsc28gYW4g ZXh0cmEgcHVzaCBhbmQgcG9wIG9uIHRoZSBzdGFjay4gVGhlIG90aGVyIGlzc3VlIGlzIHRoZQ0K Y2FsbCB0byB0aGUgZnVuY3Rpb24gdGhhdCBpcyB1bmtub3duIHRvIHRoZSBjb21waWxlciB3aWxs IGFjdCBsaWtlIGENCl9SZWFkV3JpdGVCYXJyaWVyIChZaWtlcyBJIHNlZSBfUmVhZFdyaXRlQmFy cmllciBpcyBkZXByZWNhdGVkIGluIFZDKysNCjIwMTcpLiBJcyB0aGUgZGVwcmVjaWF0aW9uIG9m IHNvbWUgb2YgdGhlc2UgaW50cmluc2ljcyBpbiBWQysrIGRyaXZpbmcgdGhlDQpyZW1vdmFsIG9m IGlubGluZSBhc3NlbWJseT8gRm9yIEdDQyBpbmxpbmUgYXNzZW1ibHkgd29ya3MgZ3JlYXQgZm9y IGxvY2FsDQpjb21waWxlLCBhbmQgZm9yIGNsYW5nIExUTyBpdCB3b3JrcyBpbiBlbnRpcmUgcHJv Z3JhbSBvcHRpbWl6YXRpb24uDQoNClRoZSBMVE8gYml0Y29kZSBpbmNsdWRlcyBpbmxpbmUgYXNz ZW1ibHkgYW5kIGNvbnN0cmFpbnRzIHNvIHRoYXQgdGhlDQpvcHRpbWl6ZXIga25vd3Mgd2hhdCB0 byBkbyBzbyBpdCBjYW4gZ2V0IG9wdGltaXplZCBqdXN0IGxpa2UgdGhlIGFic3RyYWN0DQpiaXRj b2RlIGR1cmluZyB0aGUgTGluayBUaW1lIE9wdGltaXphdGlvbi4NCg0KVGhpcyBpcyBDcHVCcmVh a3BvaW50KCk6DQo7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZCBvcHRub25lIHNz cCB1d3RhYmxlDQpkZWZpbmUgdm9pZCBAQ3B1QnJlYWtwb2ludCgpICMwIHsNCiBjYWxsIHZvaWQg YXNtIHNpZGVlZmZlY3QgImludCAkJDMiLCAifntkaXJmbGFnfSx+e2Zwc3J9LH57ZmxhZ3N9Iigp DQojMiwgIXNyY2xvYyAhMw0KIHJldCB2b2lkDQp9DQoNCg0KVGhpcyBpcyBBc21SZWFkTXNyNjQo KToNCjsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kIG9wdG5vbmUgc3NwIHV3dGFi bGUNCmRlZmluZSBpNjQgQEFzbVJlYWRNc3I2NChpMzIpICMwIHsNCiAlMiA9IGFsbG9jYSBpMzIs IGFsaWduIDQNCiAlMyA9IGFsbG9jYSBpNjQsIGFsaWduIDgNCiBzdG9yZSBpMzIgJTAsIGkzMiog JTIsIGFsaWduIDQNCiAlNCA9IGxvYWQgaTMyLCBpMzIqICUyLCBhbGlnbiA0DQogJTUgPSBjYWxs IGk2NCBhc20gc2lkZWVmZmVjdCAicmRtc3IiLA0KIj1BLHtjeH0sfntkaXJmbGFnfSx+e2Zwc3J9 LH57ZmxhZ3N9IihpMzIgJTQpICMyLCAhc3JjbG9jICE0DQogc3RvcmUgaTY0ICU1LCBpNjQqICUz LCBhbGlnbiA4DQogJTYgPSBsb2FkIGk2NCwgaTY0KiAlMywgYWxpZ24gOA0KIHJldCBpNjQgJTYN Cn0NCg0KDQoNCkkgYWdyZWUgaXQgbWFrZSBzZW5zZSB0byByZW1vdmUgLlMgYW5kIC5hc20gZmls ZXMgYW5kIG9ubHkgaGF2ZSAubmFzbSBmaWxlcy4NCg0KVGhhbmtzLA0KDQpBbmRyZXcgRmlzaA0K DQpQUyBGb3IgdGhlIFhjb2RlIGNsYW5nIHNpbmNlIGl0IGVtaXRzIGZyYW1lIHBvaW50ZXJzIGJ5 IGRlZmF1bHQgd2UgbmVlZCB0bw0KYWRkIHRoZSBleHRyYSA0IGJ5dGVzIHRvIHNhdmUgdGhlIGFz c2VtYmx5IGZ1bmN0aW9ucyBzbyB0aGUgc3RhY2sgY2FuIGdldA0KdW53b3VuZC4NCg0KYS5vdXRg Q3B1QnJlYWtwb2ludDoNCmEub3V0WzB4MWY5OV0gPCswPjogNTUgICAgIHB1c2hsICAlZWJwDQph Lm91dFsweDFmOWFdIDwrMT46IDg5IGU1ICBtb3ZsICAgJWVzcCwgJWVicA0KYS5vdXRbMHgxZjlj XSA8KzM+OiBjYyAgICAgaW50Mw0KYS5vdXRbMHgxZjlkXSA8KzQ+OiA1ZCAgICAgcG9wbCAgICVl YnANCmEub3V0WzB4MWY5ZV0gPCs1PjogYzMgICAgIHJldGwNCg0KDQpTbyBicmVha3BvaW50IGdv ZXMgZnJvbSAxIGJ5dGUgdG8gMTEgYnl0ZXMgaWYgd2UgZ2V0IHJpZCBvZiB0aGUgaW50cmluc2lj cy4NCg0KDQpUaGUgY2hhbmdlIGlzIHRvIHJlZHVjZSB0aGUgZHVwbGljYXRlZCBpbXBsZW1lbnRh dGlvbi4gSXQgd2lsbCBiZSBnb29kDQpvbiB0aGUgY29kZSBtYWludGFpbi4gUmVjZW50bHksIG9u ZSBwYXRjaCBoYXMgdG8gdXBkYXRlIC5jIGFuZCAubmFzbSBib3RoLg0KUGxlYXNlIHNlZQ0KaHR0 cHM6Ly9saXN0cy4wMS5vcmcvcGlwZXJtYWlsL2VkazItZGV2ZWwvMjAxOS1GZWJydWFyeS8wMzcx NjUuaHRtbA0KPGh0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRldmVsLzIwMTkt RmVicnVhcnkvMDM3MTY1Lmh0bWw+Lg0KQmVzaWRlIHRoaXMgY2hhbmdlLCBJIHByb3Bvc2UgdG8g cmVtb3ZlIGFsbCBHQVMgYXNzZW1ibHkgY29kZSBmb3IgSUEzMiBhbmQNClg2NCBhcmNoLiBBZnRl ciB0aG9zZSBjaGFuZ2UsIHRoZSBwYXRjaCBvd25lciB3aWxsIGNvbGxlY3QgdGhlIGltcGFjdCBv ZiB0aGUNCmltYWdlIHNpemUuDQoNClRoYW5rcw0KTGltaW5nDQoNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQplZGsyLWRldmVsIG1haWxpbmcgbGlzdA0K ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPg0K aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQoNCg==