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.43; helo=mga05.intel.com; envelope-from=bob.c.feng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 559122194D387 for ; Mon, 28 Jan 2019 18:16:03 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jan 2019 18:16:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,535,1539673200"; d="scan'208";a="120241398" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga008.fm.intel.com with ESMTP; 28 Jan 2019 18:16:02 -0800 Received: from fmsmsx112.amr.corp.intel.com (10.18.116.6) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 28 Jan 2019 18:16:01 -0800 Received: from shsmsx154.ccr.corp.intel.com (10.239.6.54) by FMSMSX112.amr.corp.intel.com (10.18.116.6) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 28 Jan 2019 18:16:01 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.110]) by SHSMSX154.ccr.corp.intel.com ([169.254.7.232]) with mapi id 14.03.0415.000; Tue, 29 Jan 2019 10:15:55 +0800 From: "Feng, Bob C" To: Laszlo Ersek CC: "edk2-devel@lists.01.org" , "Gao, Liming" Thread-Topic: [edk2] [Patch 00/33] BaseTools python3 migration patch set Thread-Index: AQHUtGubdXY1ZeTLHUyxsMfS01NmtqW/KM0AgACNeACAAA9kgIAENBxwgACHpSD//6/sgIABVdtg Date: Tue, 29 Jan 2019 02:15:55 +0000 Message-ID: <08650203BA1BD64D8AD9B6D5D74A85D160078963@SHSMSX101.ccr.corp.intel.com> References: <20190125045626.14700-1-bob.c.feng@intel.com> <64c49419-fe14-1be4-bfaf-1d601aedb294@redhat.com> <08650203BA1BD64D8AD9B6D5D74A85D160071956@SHSMSX101.ccr.corp.intel.com> <08650203BA1BD64D8AD9B6D5D74A85D160076553@SHSMSX101.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch 00/33] BaseTools python3 migration patch set 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: Tue, 29 Jan 2019 02:16:03 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KDQpUaGFua3MgZm9yIHlvdXIgc3VnZ2VzdGlvbi4gSSByZS1zZW50IHRoZSBw YXRjaCBzZXQgYW5kIHB1c2hlZCB0aGUgbmV3IHBhdGNoIHNldCBpbnRvIGJyYW5jaCBweTNiYXNl dG9vbHNfdjIuDQoNClRoYW5rcywNCkJvYg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K RnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dIA0KU2VudDogTW9u ZGF5LCBKYW51YXJ5IDI4LCAyMDE5IDk6NDggUE0NClRvOiBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVu Z0BpbnRlbC5jb20+DQpDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IEdhbywgTGltaW5nIDxs aW1pbmcuZ2FvQGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BhdGNoIDAwLzMzXSBC YXNlVG9vbHMgcHl0aG9uMyBtaWdyYXRpb24gcGF0Y2ggc2V0DQoNCkhpIEJvYiwNCg0KT24gMDEv MjgvMTkgMTE6MzUsIEZlbmcsIEJvYiBDIHdyb3RlOg0KPiBIaSBMYXN6bG8sDQo+IA0KPiBJIHNl bnQgb3V0IDIgcGF0Y2hlcyB0byBmaXggdGhpcyBpc3N1ZS4gQW5kIEkgYWxzbyBwdXNoZWQgdGhl IHBhdGNoZXMgDQo+IHRvIHRoZSByZXBvIGh0dHBzOi8vZ2l0aHViLmNvbS9Cb2JDRi9lZGsyLmdp dCBicmFuY2ggcHkzYmFzZXRvb2xzDQoNCkkgZmV0Y2hlZCB5b3VyIGJyYW5jaCwgYW5kIEkgZm91 bmQgdHdvIG5ldyAoZmFzdC1mb3J3YXJkLWFibGUpIGNvbW1pdHM6DQoNCiQgZ2l0IGxvZyAtLW9u ZWxpbmUgLS1yZXZlcnNlIDQxYzA2MTZmYzA4MS4uZWM5ZTYzNjkyNDUzDQoNCmZiNTY2YTg4MzVm YSBCYXNlVG9vbHM6IEZpeGVkIEVvdCBweXRob24yIGluY29tcGF0aWJsZSBpc3N1ZS4NCmVjOWU2 MzY5MjQ1MyBCYXNlVG9vbHM6IEZpeGVkIEVjYyBweXRob24yIGluY29tcGF0aWJsZSBpc3N1ZS4N Cg0KSG93ZXZlciwgdGhlIHBhdGNoZXMgdGhhdCB5b3Ugc2VudCBvdXQ6DQoNCltlZGsyXSBbUGF0 Y2ggdjIgMzIvMzNdIEJhc2VUb29sczogRUNDIHRvb2wgUHl0aG9uMyBhZGFwdGlvbiBbZWRrMl0g W1BhdGNoIHYyIDMzLzMzXSBCYXNlVG9vbHM6IEVvdCB0b29sIFB5dGhvbjMgYWRhcHRpb24NCg0K YXBwZWFyIGRpZmZlcmVudDsgSSB0aGluayB5b3Ugc3F1YXNoZWQgdGhlIGFib3ZlIGluY3JlbWVu dGFsIGZpeGVzIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2luYWwgKHYxKSBwYXRjaGVzLiBJ cyB0aGF0IGNvcnJlY3Q/DQoNCkkgcHJlZmVyIHRvIHRlc3QgYSBzZXJpZXMgaW4gdGhlIHNhbWUg ZXhhY3Qgc3RhdGUgYXMgaXQgd291bGQgYmUgY29tbWl0dGVkOyBvdGhlcndpc2UgdGhlcmUgY291 bGQgYmUgYW4gaXNzdWUgd2l0aCB0aGUgcmViYXNlIC8gc3F1YXNoaW5nIChwb3NzaWJseSBmdXJ0 aGVyIHR3ZWFrcyksIGFuZCBpdCB3b3VsZG4ndCBiZSBjb3JyZWN0IHRvIGFwcGx5IG15IFRlc3Rl ZC1ieSB0byBzdWNoIGEgdmVyc2lvbi4NCg0KSW4gYWRkaXRpb24sIHlvdSBkaWRuJ3QgcG9zdCB0 aGUgdXBkYXRlZCAodjIpIHBhdGNoZXMgIzMyIGFuZCAjMzMgaW4gcmVzcG9uc2UgdG8gdGhlIHYx IGJsdXJiOg0KDQogIFtlZGsyXSBbUGF0Y2ggMDAvMzNdIEJhc2VUb29scyBweXRob24zIG1pZ3Jh dGlvbiBwYXRjaCBzZXQNCg0KYW5kIGFzIGEgcmVzdWx0IHRoZXkgd2lsbCBkcmlmdCBhcGFydCBv biB0aGUgbGlzdCwgZnJvbSBlYWNoIG90aGVyIGFuZCBhbHNvIGZyb20gdGhlIGNvbnRhaW5pbmcg c2V0Lg0KDQpJbiBhZGRpdGlvbiwgaXQncyBhIGdvb2QgcHJhY3RpY2UgdG8ga2VlcCBicmFuY2hl cyB1bmNoYW5nZWQgb25jZSB0aGV5J3ZlIGJlZW4gcG9zdGVkIHRvIHRoZSBsaXN0OyBmdXJ0aGVy IGl0ZXJhdGlvbnMgc2hvdWxkIGJlIG5hbWVkIHB5M2Jhc2V0b29sc192MiwgcHkzYmFzZXRvb2xz X3YzIGV0Yy4gVGhpcyBsZXRzIHBlb3BsZSByZXR1cm4gdG8gZWFybGllciBpdGVyYXRpb25zLCBj b21wYXJlIHZlcnNpb25zLCBhc3NvY2lhdGUgYnJhbmNoZXMgd2l0aCBwb3N0aW5ncywgYW5kIHNv IG9uLg0KDQpBc3N1bWluZyB0aGUgdjIgMzIvMzMsIHYyIDMzLzMzIG9uLWxpc3Qgc2VyaWVzIGlz IHdoYXQgSSBzaG91bGQgdGVzdCwgcGxlYXNlIHB1c2ggKnByZWNpc2VseSogdGhhdCBzZXJpZXMg dG8geW91ciByZXBvLCB1bmRlciBicmFuY2ggbmFtZSAicHkzYmFzZXRvb2xzX3YyIi4gSSdkIGFs c28gc3VnZ2VzdCByZXNldHRpbmcgYnJhbmNoICJweTNiYXNldG9vbHMiIHRvIHRoZSBvcmlnaW5h bCB2MSBwb3N0aW5nIHN0YXR1cywgdGhhdCBpcywgY29tbWl0IDQxYzA2MTZmYzA4MS4NCg0KVGhh bmtzDQpMYXN6bG8NCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEZl bmcsIEJvYiBDDQo+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSAyOCwgMjAxOSAxMDozMyBBTQ0KPiBU bzogJ0xhc3psbyBFcnNlaycgPGxlcnNla0ByZWRoYXQuY29tPg0KPiBDYzogZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmc7IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gU3ViamVj dDogUkU6IFtlZGsyXSBbUGF0Y2ggMDAvMzNdIEJhc2VUb29scyBweXRob24zIG1pZ3JhdGlvbiBw YXRjaCANCj4gc2V0DQo+IA0KPiBIaSBMYXN6bG8sDQo+IA0KPiBUaGFua3MgZm9yIHlvdXIgdGVz dGluZyBhbmQgZGV0YWlsZWQgdGVzdGluZyByZXN1bHQuIEknbGwgY2hlY2sgdGhlIGlzc3VlIGhh cHBlbmVkIGluIChhMikgYW5kIHByb3ZpZGUgYSBwYXRjaCBmb3IgaXQuDQo+IA0KPiBUaGFua3Ms DQo+IEJvYg0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxv IEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFNhdHVyZGF5LCBKYW51 YXJ5IDI2LCAyMDE5IDI6MTggQU0NCj4gVG86IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVs LmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBHYW8sIExpbWluZyA8bGltaW5n Lmdhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BhdGNoIDAwLzMzXSBCYXNl VG9vbHMgcHl0aG9uMyBtaWdyYXRpb24gcGF0Y2ggDQo+IHNldA0KPiANCj4gT24gMDEvMjUvMTkg MTA6NDIsIEZlbmcsIEJvYiBDIHdyb3RlOg0KPj4gWy4uLl0NCj4+DQo+PiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhh dC5jb21dDQo+PiBTZW50OiBGcmlkYXksIEphbnVhcnkgMjUsIDIwMTkgNDo1NyBQTQ0KPj4gVG86 IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVsLmNvbT4NCj4+IENjOiBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZzsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPj4gU3ViamVj dDogUmU6IFtlZGsyXSBbUGF0Y2ggMDAvMzNdIEJhc2VUb29scyBweXRob24zIG1pZ3JhdGlvbiBw YXRjaCANCj4+IHNldA0KPj4NCj4+IFsuLi5dDQo+Pg0KPj4gT24gMDEvMjUvMTkgMDU6NTUsIEZl bmcsIEJvYiBDIHdyb3RlOg0KPj4+IEJaOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTU1DQo+Pj4NCj4+PiBUaGlzIHBhdGNoIHNldCBpcyB0byBlbmFibGUg cHl0aG9uMyBvbiBCYXNlVG9vbHMuIEJhc2V0b29scyBjb2RlIA0KPj4+IHdpbGwgYmUgY29tcGF0 aWJsZSB3aXRoIGJvdGggcHl0aG9uMyBhbmQgcHl0aG9uMi4NCj4+Pg0KPj4+IFdlIHdpbGwgaGF2 ZSB0d28gZW52cyBQWVRIT04zX0VOQUJMRSBhbmQgUFlUSE9OX0NPTU1BTkQuIFRoZSANCj4+PiBi ZWhhdmlvciBjYW4gYmUgY29tYmluZWQgYXMgdGhlIGJlbG93IHRvIHN1cHBvcnQgdGhpcyB1c2Fn ZS4NCj4+PiBJZiB1c2VyIHdhbnRzIHRoZSBzcGVjaWZpYyBweXRob24gaW50ZXJwcmV0ZXIsIGhl IG9ubHkgbmVlZHMgdG8gc2V0IA0KPj4+IFBZVEhPTl9DT01NQU5EIGVudi4NCj4+PiBJZiBQWVRI T04zX0VOQUJMRSBpcyBzZXQsIFBZVEhPTl9DT01NQU5EIHdpbGwgYmUgc2V0IHRvIHRoZSBmb3Vu ZCANCj4+PiBvbmUgYnkgZWRrMiBzY3JpcHRzIGJhc2VkIG9uIFBZVEhPTjNfRU5BQkxFIHZhbHVl Lg0KPj4+IElmIFBZVEhPTjNfRU5BQkxFIGlzIG5vdCBzZXQsIGJ1dCBQWVRIT05fQ09NTUFORCBp cyBzZXQsIHRoZW4gDQo+Pj4gUFlUSE9OX0NPTU1BTkQgd2lsbCBiZSB1c2VkIHRvIHJ1biBweXRo b24gc2NyaXB0LiBObyB2ZXJzaW9uIGNoZWNrIA0KPj4+IGhlcmUuDQo+Pj4gSWYgUFlUSE9OM19F TkFCTEUgaXMgbm90IHNldCwgYnV0IFBZVEhPTl9DT01NQU5EIGlzIG5vdCBzZXQsIA0KPj4+IFBZ VEhPTl9DT01NQU5EIHdpbGwgYmUgc2V0IHRvIHRoZSBoaWdoIHZlcnNpb24gcHl0aG9uIGluc3Rh bGxlZCBpbiANCj4+PiBPUy4NCj4gDQo+IEkgcmFuIHRoZSBmb2xsb3dpbmcgdGVzdHMsIGF0IGNv bW1pdCA0MWMwNjE2ZmMwODEgKCJCYXNlVG9vbHM6IEVvdCANCj4gdG9vbA0KPiBQeXRob24zIGFk YXB0aW9uIiwgMjAxOS0wMS0yNSkuIEVhY2ggdGVzdCB3YXMgcGVyZm9ybWVkIGluIGEgY2xlYW4g dHJlZSAoYWZ0ZXIgcnVubmluZyAiZ2l0IGNsZWFuIC1mZmR4IikgYW5kIGNsZWFuIGVudmlyb25t ZW50IChJIHJlLXNvdXJjZWQgImVka3NldHVwLnNoIiBmb3IgZWFjaCB0ZXN0IGluIHNlcGFyYXRp b24pLiBJbiBhZGRpdGlvbiwgdGhlIGJhc2UgdG9vbHMgd2VyZSByZWJ1aWx0IChhZ2FpbiBmcm9t IGEgY2xlYW4gdHJlZSkgZm9yIGVhY2ggdGVzdCwgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQg WzFdOg0KPiANCj4gICBuaWNlIG1ha2UgLUMgIiRFREtfVE9PTFNfUEFUSCIgLWogJChnZXRjb25m IF9OUFJPQ0VTU09SU19PTkxOKQ0KPiANCj4gKGEpIE9uIG15IFJIRUw3LjUgV29ya3N0YXRpb24g bGFwdG9wLCBJIGhhdmUgYm90aCB0aGUgc3lzdGVtLWxldmVsIA0KPiBweXRob24gcGFja2FnZXMg aW5zdGFsbGVkIChweXRob24tMi43LjUtNjkuZWw3XzUueDg2XzY0KSwgYW5kIHRoZSANCj4gZXh0 cmENCj4gcHl0aG9uLTMuNCBzdHVmZiBmcm9tIEVQRUwtNyAocHl0aG9uMzQtMy40LjktMS5lbDcu eDg2XzY0KS4NCj4gDQo+IChhMSkgRGlkbid0IHNldCBlaXRoZXIgUFlUSE9OM19FTkFCTEUgb3Ig UFlUSE9OX0NPTU1BTkQuIFRoZSBidWlsZCANCj4gdXRpbGl0eSBwaWNrZWQNCj4gDQo+ICAgUFlU SE9OX0NPTU1BTkQgICA9IC91c3IvYmluL3B5dGhvbjMuNA0KPiANCj4gYW5kIEkgc3VjY2Vzc2Z1 bGx5IGJ1aWx0IE92bWZQa2cgZm9yIElBMzIsIElBMzJYNjQsIGFuZCBYNjQ7IGFsc28gQXJtVmly dFFlbXUgZm9yIEFBUkNINjQuIFRoZSBidWlsdCBmaXJtd2FyZSBpbWFnZXMgcGFzc2VkIGEgc21v a2UgdGVzdCB0b28uDQo+IA0KPiAoYTIpIEkgcmVtb3ZlZCBhbGwgdGhlIHB5dGhvbjM0IHBhY2th Z2VzIChhbmQgdGhlIGRlcGVuZGVudCBwYWNrYWdlcykgZnJvbSBteSBsYXB0b3AuIERpZG4ndCBz ZXQgZWl0aGVyIG9mIFBZVEhPTjNfRU5BQkxFIGFuZCBQWVRIT05fQ09NTUFORC4NCj4gKFRoaXMg aXMgdGhlIGNvbmZpZ3VyYXRpb24gd2hhdCBhICJub3JtYWwiIFJIRUw3IGVudmlyb25tZW50IHdv dWxkDQo+IHByb3ZpZGUuKQ0KPiANCj4gSW4gdGhpcyBjYXNlLCByZWJ1aWxkaW5nIHRoZSBiYXNl IHRvb2xzIFsxXSBmYWlsZWQsIGluIHRoZSB0ZXN0aW5nDQo+IHBoYXNlOg0KPiANCj4+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KPj4gPQ0KPj4gRkFJTDogdGVzdF9FY2NfQ1BhcnNlcjRfQ0xleGVyIChDaGVja1B5 dGhvblN5bnRheC5UZXN0cykNCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gLQ0KPj4gVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KPj4gICBGaWxlICIuLi4vQmFzZVRvb2xzL1Rlc3RzL0No ZWNrUHl0aG9uU3ludGF4LnB5IiwgbGluZSA1NSwgaW4gPGxhbWJkYT4NCj4+ICAgICBuZXdtZXRo b2QgPSBsYW1iZGEgc2VsZjogc2VsZi5TaW5nbGVGaWxlVGVzdChmaWxlbmFtZSkNCj4+ICAgRmls ZSAiLi4uL0Jhc2VUb29scy9UZXN0cy9DaGVja1B5dGhvblN5bnRheC5weSIsIGxpbmUgMzMsIGlu IFNpbmdsZUZpbGVUZXN0DQo+PiAgICAgc2VsZi5mYWlsKCdzeW50YXggZXJyb3I6ICVzLCBFcnJv ciBpcyAlcycgJSAoZmlsZW5hbWUsIHN0cihlKSkpDQo+PiBBc3NlcnRpb25FcnJvcjogc3ludGF4 IGVycm9yOiAuLi4vQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0NQYXJzZXI0L0NMZXhlci5w eSwgRXJyb3IgaXMgICBGaWxlICIuLi4vQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0NQYXJz ZXI0L0NMZXhlci5weSIsIGxpbmUgNTkwDQo+PiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlucHV0 PU5vbmUsIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToNCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXg0KPj4gU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4 DQo+Pg0KPj4NCj4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPj4gPQ0KPj4gRkFJTDogdGVzdF9FY2NfQ1BhcnNl cjRfQ0xpc3RlbmVyIChDaGVja1B5dGhvblN5bnRheC5UZXN0cykNCj4+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K Pj4gLQ0KPj4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KPj4gICBGaWxlICIu Li4vQmFzZVRvb2xzL1Rlc3RzL0NoZWNrUHl0aG9uU3ludGF4LnB5IiwgbGluZSA1NSwgaW4gPGxh bWJkYT4NCj4+ICAgICBuZXdtZXRob2QgPSBsYW1iZGEgc2VsZjogc2VsZi5TaW5nbGVGaWxlVGVz dChmaWxlbmFtZSkNCj4+ICAgRmlsZSAiLi4uL0Jhc2VUb29scy9UZXN0cy9DaGVja1B5dGhvblN5 bnRheC5weSIsIGxpbmUgMzMsIGluIFNpbmdsZUZpbGVUZXN0DQo+PiAgICAgc2VsZi5mYWlsKCdz eW50YXggZXJyb3I6ICVzLCBFcnJvciBpcyAlcycgJSAoZmlsZW5hbWUsIHN0cihlKSkpDQo+PiBB c3NlcnRpb25FcnJvcjogc3ludGF4IGVycm9yOiAuLi4vQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v RWNjL0NQYXJzZXI0L0NMaXN0ZW5lci5weSwgRXJyb3IgaXMgICBGaWxlICIuLi4vQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vRWNjL0NQYXJzZXI0L0NMaXN0ZW5lci5weSIsIGxpbmUgMzUNCj4+ICAg ICBkZWYgZW50ZXJUcmFuc2xhdGlvbl91bml0KHNlbGYsIGN0eDpDUGFyc2VyLlRyYW5zbGF0aW9u X3VuaXRDb250ZXh0KToNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4NCj4+IFN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheA0KPj4NCj4+DQo+PiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCj4+ID0NCj4+IEZBSUw6IHRlc3RfRWNjX0NQYXJzZXI0X0NQYXJzZXIgKENoZWNrUHl0aG9u U3ludGF4LlRlc3RzKQ0KPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiAtDQo+PiBUcmFjZWJhY2sgKG1vc3Qg cmVjZW50IGNhbGwgbGFzdCk6DQo+PiAgIEZpbGUgIi4uLi9CYXNlVG9vbHMvVGVzdHMvQ2hlY2tQ eXRob25TeW50YXgucHkiLCBsaW5lIDU1LCBpbiA8bGFtYmRhPg0KPj4gICAgIG5ld21ldGhvZCA9 IGxhbWJkYSBzZWxmOiBzZWxmLlNpbmdsZUZpbGVUZXN0KGZpbGVuYW1lKQ0KPj4gICBGaWxlICIu Li4vQmFzZVRvb2xzL1Rlc3RzL0NoZWNrUHl0aG9uU3ludGF4LnB5IiwgbGluZSAzMywgaW4gU2lu Z2xlRmlsZVRlc3QNCj4+ICAgICBzZWxmLmZhaWwoJ3N5bnRheCBlcnJvcjogJXMsIEVycm9yIGlz ICVzJyAlIChmaWxlbmFtZSwgc3RyKGUpKSkNCj4+IEFzc2VydGlvbkVycm9yOiBzeW50YXggZXJy b3I6IC4uLi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvQ1BhcnNlcjQvQ1BhcnNlci5weSwg RXJyb3IgaXMgICBGaWxlICIuLi4vQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0NQYXJzZXI0 L0NQYXJzZXIucHkiLCBsaW5lIDc0NA0KPj4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnB1dDpU b2tlblN0cmVhbSwgb3V0cHV0OlRleHRJTyA9IHN5cy5zdGRvdXQpOg0KPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4NCj4+IFN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheA0KPj4NCj4+ DQo+PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCj4+ID0NCj4+IEZBSUw6IHRlc3RfRW90X0NQYXJzZXI0X0NMZXhl ciAoQ2hlY2tQeXRob25TeW50YXguVGVzdHMpDQo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+IC0NCj4+IFRy YWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCj4+ICAgRmlsZSAiLi4uL0Jhc2VUb29s cy9UZXN0cy9DaGVja1B5dGhvblN5bnRheC5weSIsIGxpbmUgNTUsIGluIDxsYW1iZGE+DQo+PiAg ICAgbmV3bWV0aG9kID0gbGFtYmRhIHNlbGY6IHNlbGYuU2luZ2xlRmlsZVRlc3QoZmlsZW5hbWUp DQo+PiAgIEZpbGUgIi4uLi9CYXNlVG9vbHMvVGVzdHMvQ2hlY2tQeXRob25TeW50YXgucHkiLCBs aW5lIDMzLCBpbiBTaW5nbGVGaWxlVGVzdA0KPj4gICAgIHNlbGYuZmFpbCgnc3ludGF4IGVycm9y OiAlcywgRXJyb3IgaXMgJXMnICUgKGZpbGVuYW1lLCBzdHIoZSkpKQ0KPj4gQXNzZXJ0aW9uRXJy b3I6IHN5bnRheCBlcnJvcjogLi4uL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9DUGFyc2Vy NC9DTGV4ZXIucHksIEVycm9yIGlzICAgRmlsZSAiLi4uL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0VvdC9DUGFyc2VyNC9DTGV4ZXIucHkiLCBsaW5lIDU5MQ0KPj4gICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBpbnB1dD1Ob25lLCBvdXRwdXQ6VGV4dElPID0gc3lzLnN0ZG91dCk6DQo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4NCj4+IFN5bnRheEVycm9yOiBpbnZh bGlkIHN5bnRheA0KPj4NCj4+DQo+PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4+ID0NCj4+IEZBSUw6IHRlc3Rf RW90X0NQYXJzZXI0X0NMaXN0ZW5lciAoQ2hlY2tQeXRob25TeW50YXguVGVzdHMpDQo+PiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4+IC0NCj4+IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToNCj4+ ICAgRmlsZSAiLi4uL0Jhc2VUb29scy9UZXN0cy9DaGVja1B5dGhvblN5bnRheC5weSIsIGxpbmUg NTUsIGluIDxsYW1iZGE+DQo+PiAgICAgbmV3bWV0aG9kID0gbGFtYmRhIHNlbGY6IHNlbGYuU2lu Z2xlRmlsZVRlc3QoZmlsZW5hbWUpDQo+PiAgIEZpbGUgIi4uLi9CYXNlVG9vbHMvVGVzdHMvQ2hl Y2tQeXRob25TeW50YXgucHkiLCBsaW5lIDMzLCBpbiBTaW5nbGVGaWxlVGVzdA0KPj4gICAgIHNl bGYuZmFpbCgnc3ludGF4IGVycm9yOiAlcywgRXJyb3IgaXMgJXMnICUgKGZpbGVuYW1lLCBzdHIo ZSkpKQ0KPj4gQXNzZXJ0aW9uRXJyb3I6IHN5bnRheCBlcnJvcjogLi4uL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL0VvdC9DUGFyc2VyNC9DTGlzdGVuZXIucHksIEVycm9yIGlzICAgRmlsZSAiLi4u L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9DUGFyc2VyNC9DTGlzdGVuZXIucHkiLCBsaW5l IDM1DQo+PiAgICAgZGVmIGVudGVyVHJhbnNsYXRpb25fdW5pdChzZWxmLCBjdHg6Q1BhcnNlci5U cmFuc2xhdGlvbl91bml0Q29udGV4dCk6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeDQo+PiBTeW50YXhFcnJvcjogaW52YWxpZCBzeW50YXgNCj4+DQo+Pg0KPj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQo+PiA9DQo+PiBGQUlMOiB0ZXN0X0VvdF9DUGFyc2VyNF9DUGFyc2VyIChD aGVja1B5dGhvblN5bnRheC5UZXN0cykNCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gLQ0KPj4gVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KPj4gICBGaWxlICIuLi4vQmFzZVRvb2xzL1Rl c3RzL0NoZWNrUHl0aG9uU3ludGF4LnB5IiwgbGluZSA1NSwgaW4gPGxhbWJkYT4NCj4+ICAgICBu ZXdtZXRob2QgPSBsYW1iZGEgc2VsZjogc2VsZi5TaW5nbGVGaWxlVGVzdChmaWxlbmFtZSkNCj4+ ICAgRmlsZSAiLi4uL0Jhc2VUb29scy9UZXN0cy9DaGVja1B5dGhvblN5bnRheC5weSIsIGxpbmUg MzMsIGluIFNpbmdsZUZpbGVUZXN0DQo+PiAgICAgc2VsZi5mYWlsKCdzeW50YXggZXJyb3I6ICVz LCBFcnJvciBpcyAlcycgJSAoZmlsZW5hbWUsIHN0cihlKSkpDQo+PiBBc3NlcnRpb25FcnJvcjog c3ludGF4IGVycm9yOiAuLi4vQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0NQYXJzZXI0L0NQ YXJzZXIucHksIEVycm9yIGlzICAgRmlsZSAiLi4uL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Vv dC9DUGFyc2VyNC9DUGFyc2VyLnB5IiwgbGluZSA3NDQNCj4+ICAgICBkZWYgX19pbml0X18oc2Vs ZiwgaW5wdXQ6VG9rZW5TdHJlYW0sIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToNCj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeDQo+PiBTeW50YXhFcnJvcjogaW52YWxpZCBzeW50 YXgNCj4+DQo+Pg0KPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiAtDQo+PiBSYW4gMjcwIHRlc3RzIGluIDAu OTM4cw0KPj4NCj4+IEZBSUxFRCAoZmFpbHVyZXM9NikNCj4gDQo+IEkgZGlkbid0IGNvbnRpbnVl IHRlc3Rpbmcgb24gbXkgUkhFTDcgbGFwdG9wIGJleW9uZCB0aGlzIHBvaW50Lg0KPiANCj4gDQo+ IChiKSBSSEVMLTggdmlydHVhbCBtYWNoaW5lLCB3aXRoICIvdXNyL2Jpbi9weXRob24zLjYiIGZy b20gcHl0aG9uMzYtMy42LjYtMTguZWw4Lng4Nl82NCwgYW5kICIvdXNyL2xpYmV4ZWMvcGxhdGZv cm0tcHl0aG9uIiBmcm9tIHBsYXRmb3JtLXB5dGhvbi0zLjYuOC0xLmVsOC54ODZfNjQuDQo+IA0K PiAoYjEpIERpZG4ndCBzZXQgZWl0aGVyIFBZVEhPTjNfRU5BQkxFIG9yIFBZVEhPTl9DT01NQU5E LiBUaGUgYnVpbGQgDQo+IHV0aWxpdHkgcGlja2VkDQo+IA0KPiAgIFBZVEhPTl9DT01NQU5EICAg PSAvdXNyL2Jpbi9weXRob24zLjYNCj4gDQo+IGFuZCBJIHN1Y2Nlc3NmdWxseSBidWlsdCBPdm1m UGtnIGZvciBJQTMyLCBJQTMyWDY0LCBhbmQgWDY0LiAoSSBkb24ndCANCj4gaGF2ZSBhIGNyb3Nz LWNvbXBpbGVyIGluc3RhbGxlZCBpbiB0aGlzIGVudmlyb25tZW50IHlldCwgbm9yIGEgUkhFTDgN Cj4gYWFyY2g2NCBLVk0gZ3Vlc3QsIHNvIEkgY291bGRuJ3QgdGVzdCBBcm1WaXJ0UWVtdSBmb3Ig bm93KS4NCj4gDQo+IChiMikgSSBzZXQgUFlUSE9OX0NPTU1BTkQgdG8gIi91c3IvbGliZXhlYy9w bGF0Zm9ybS1weXRob24iLiBEaWRuJ3Qgc2V0IFBZVEhPTjNfRU5BQkxFLiBUaGUgc2FtZSBidWls ZHMgYXMgaW4gKGIxKSBzdWNjZWVkZWQuDQo+IA0KPiANCj4gVGh1cywgd2hhdCBzZWVtcyB0byBi ZSBtaXNzaW5nIGlzIGEgbGl0dGxlIGJpdCBvZiBweXRob24yIGNvbXBhdGliaWxpdHksIGluIChh MikuDQo+IA0KPiBUaGFua3MsDQo+IExhc3psbw0KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXw0KPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZw0KPiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2VkazItZGV2ZWwNCj4gDQoNCg==