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=bob.c.feng@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 74546211B1113 for ; Sun, 13 Jan 2019 23:18:37 -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 fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jan 2019 23:18:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,476,1539673200"; d="scan'208";a="116551710" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga008.fm.intel.com with ESMTP; 13 Jan 2019 23:18:36 -0800 Received: from fmsmsx101.amr.corp.intel.com (10.18.124.199) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 13 Jan 2019 23:18:36 -0800 Received: from shsmsx107.ccr.corp.intel.com (10.239.4.96) by fmsmsx101.amr.corp.intel.com (10.18.124.199) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 13 Jan 2019 23:18:36 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.196]) by SHSMSX107.ccr.corp.intel.com ([169.254.9.239]) with mapi id 14.03.0415.000; Mon, 14 Jan 2019 15:18:32 +0800 From: "Feng, Bob C" To: Ard Biesheuvel , "Gao, Liming" CC: "edk2-devel@lists.01.org" , "Carsey, Jaben" Thread-Topic: [edk2] [Patch] BaseTools: Enable component override functionality Thread-Index: AQHUqVbQZCag4BhgL02D105KwSk6MqWtkcUAgABCR4CAAAEuAIAAAooAgACHtMA= Date: Mon, 14 Jan 2019 07:18:30 +0000 Message-ID: <08650203BA1BD64D8AD9B6D5D74A85D16005839F@SHSMSX101.ccr.corp.intel.com> References: <20190111023851.9172-1-bob.c.feng@intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3B0FD1@SHSMSX152.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3B11BA@SHSMSX152.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] BaseTools: Enable component override functionality 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: Mon, 14 Jan 2019 07:18:38 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U29ycnkgZm9yIGJyZWFrIHlvdXIgYnVpbGQuDQoNClllcy4gSSdsbCBkb3VibGUgdGVzdCB0aGUg Y29kZSBiZWZvcmUgcHVzaGluZyBpdCBuZXh0IHRpbWUuDQoNCi1Cb2INCg0KLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCkZyb206IEFyZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJpZXNoZXV2 ZWxAbGluYXJvLm9yZ10gDQpTZW50OiBNb25kYXksIEphbnVhcnkgMTQsIDIwMTkgMzoxMSBQTQ0K VG86IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCkNjOiBGZW5nLCBCb2IgQyA8 Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgQ2Fyc2V5LCBK YWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BhdGNo XSBCYXNlVG9vbHM6IEVuYWJsZSBjb21wb25lbnQgb3ZlcnJpZGUgZnVuY3Rpb25hbGl0eQ0KDQpP biBNb24sIDE0IEphbiAyMDE5IGF0IDA4OjAxLCBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRl bC5jb20+IHdyb3RlOg0KPg0KPiBBcmQ6DQo+ICAgU29ycnkgZm9yIHRoaXMgYnJlYWssIEJvYiBq dXN0IHNlbnQgaG90IGZpeCBmb3IgdGhpcyBpc3N1ZSBpbiBodHRwczovL2xpc3RzLjAxLm9yZy9w aXBlcm1haWwvZWRrMi1kZXZlbC8yMDE5LUphbnVhcnkvMDM0OTQ3Lmh0bWwuIENvdWxkIHlvdSB2 ZXJpZnkgaXQ/DQo+ICAgSW4gZmFjdCwgaXQgaXMgY2F1c2VkIGJ5IHByZXZpb3VzIHBhdGNoIHRv IHJlbW92ZSBFREsgc3VwcG9ydCBpbiBCYXNlVG9vbHMgUHl0aG9uIGNvZGUuDQo+DQoNCk9LLCB0 aGF0IHBhdGNoIGZpeGVzIGl0IGZvciBtZS4NCg0KQnV0IG1heSBJIGtpbmRseSBzdWdnZXN0IHRo YXQgQm9iIHRlc3RzIGhpcyBjb2RlIGJlZm9yZSBwdXNoaW5nIGl0PyBUaGFua3MuDQoNCg0KPiA+ LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPkZyb206IEFyZCBCaWVzaGV1dmVsIFttYWls dG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj4gPlNlbnQ6IE1vbmRheSwgSmFudWFyeSAx NCwgMjAxOSAyOjU4IFBNDQo+ID5UbzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29t Pg0KPiA+Q2M6IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVsLmNvbT47IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnOyANCj4gPkNhcnNleSwgSmFiZW4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+ DQo+ID5TdWJqZWN0OiBSZTogW2VkazJdIFtQYXRjaF0gQmFzZVRvb2xzOiBFbmFibGUgY29tcG9u ZW50IG92ZXJyaWRlIA0KPiA+ZnVuY3Rpb25hbGl0eQ0KPiA+DQo+ID5PbiBNb24sIDE0IEphbiAy MDE5IGF0IDA0OjAwLCBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+IHdyb3RlOg0K PiA+Pg0KPiA+PiBSZXZpZXdlZC1ieTogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+ DQo+ID4+DQo+ID4NCj4gPlRoaXMgcGF0Y2ggYnJlYWtzIHRoZSBidWlsZCBvbiBBQXJjaDY0L0dH QzoNCj4gPg0KPiA+KFB5dGhvbiAyLjcuMTMgb24gbGludXgyKSBUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6DQo+ID4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xl Zy12aXJ0LXRpYW5vY29yZS1lZGsyLQ0KPiA+dXBzdHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvQmlu V3JhcHBlcnMvUG9zaXhMaWtlLy4uLy4uL1NvdXJjZS9QeXRob24vDQo+ID5iDQo+ID51aWxkL2J1 aWxkLnB5Iiw+DQo+ID5saW5lIDI0MDMsIGluIE1haW4NCj4gPiAgICBNeUJ1aWxkLkxhdW5jaCgp DQo+ID4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29y ZS1lZGsyLQ0KPiA+dXBzdHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvQmluV3JhcHBlcnMvUG9zaXhM aWtlLy4uLy4uL1NvdXJjZS9QeXRob24vDQo+ID5iDQo+ID51aWxkL2J1aWxkLnB5Iiw+DQo+ID5s aW5lIDIxMzcsIGluIExhdW5jaA0KPiA+ICAgIHNlbGYuX011bHRpVGhyZWFkQnVpbGRQbGF0Zm9y bSgpDQo+ID4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5v Y29yZS1lZGsyLQ0KPiA+dXBzdHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvQmluV3JhcHBlcnMvUG9z aXhMaWtlLy4uLy4uL1NvdXJjZS9QeXRob24vDQo+ID5iDQo+ID51aWxkL2J1aWxkLnB5Iiw+DQo+ ID5saW5lIDE5MTcsIGluIF9NdWx0aVRocmVhZEJ1aWxkUGxhdGZvcm0NCj4gPiAgICBzZWxmLlBy b2dyZXNzDQo+ID4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRp YW5vY29yZS1lZGsyLQ0KPiA+dXBzdHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9BdXRvR2VuL0F1dG9HZW4ucHkiLD4NCj4gPmxpbmUgMjM5LCBpbiBfX2luaXRfXw0KPiA+ICAg IHNlbGYuX0luaXRXb3JrZXIoV29ya3NwYWNlLCBNZXRhRmlsZSwgVGFyZ2V0LCBUb29sY2hhaW4s IEFyY2gsIA0KPiA+KmFyZ3MsICoqa3dhcmdzKQ0KPiA+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5h cm8ub3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj4gPnVwc3RyZWFtL3dzL2VkazIv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9BdXRvR2VuLnB5Iiw+DQo+ID5saW5lIDQw MywgaW4gX0luaXRXb3JrZXINCj4gPiAgICBQbGF0Zm9ybVBjZHMgPSBQbGF0Zm9ybS5QY2RzDQo+ ID4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29yZS1l ZGsyLQ0KPiA+dXBzdHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3Bh Y2UvRHNjQnVpbGREYXRhLnB5Iiw+DQo+ID5saW5lIDExOTQsIGluIFBjZHMNCj4gPiAgICBzZWxm Ll9QY2RzID0gc2VsZi5VcGRhdGVTdHJ1Y3R1cmVkUGNkcyhNT0RFTF9QQ0RfVFlQRV9MSVNULCAN Cj4gPnNlbGYuX1BjZHMpDQo+ID4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xl Zy12aXJ0LXRpYW5vY29yZS1lZGsyLQ0KPiA+dXBzdHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRHNjQnVpbGREYXRhLnB5Iiw+DQo+ID5saW5lIDE0ODYsIGlu IFVwZGF0ZVN0cnVjdHVyZWRQY2RzDQo+ID4gICAgZm9yIFBjZCBpbiBzZWxmLkRlY1BjZHM6DQo+ ID4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29yZS1l ZGsyLQ0KPiA+dXBzdHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3Bh Y2UvRHNjQnVpbGREYXRhLnB5Iiw+DQo+ID5saW5lIDMxODMsIGluIERlY1BjZHMNCj4gPiAgICBz ZWxmLl9EZWNQY2RzLCBzZWxmLl9HdWlkRGljdCA9IEdldERlY2xhcmVkUGNkKHNlbGYsIHNlbGYu X0JkYiwgDQo+ID5zZWxmLl9BcmNoLCBzZWxmLl9UYXJnZXQsIHNlbGYuX1Rvb2xjaGFpbiwgUGtn U2V0KQ0KPiA+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFu b2NvcmUtZWRrMi0NCj4gPnVwc3RyZWFtL3dzL2VkazIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v V29ya3NwYWNlL1dvcmtzcGFjZUNvbW0NCj4gPm9uLnB5Iiw+DQo+ID5saW5lIDYyLCBpbiBHZXRE ZWNsYXJlZFBjZA0KPiA+ICAgIFBrZ0xpc3QgPSBHZXRQYWNrYWdlTGlzdChQbGF0Zm9ybSwgQnVp bGREYXRhYmFzZSwgQXJjaCwgVGFyZ2V0LCANCj4gPlRvb2xjaGFpbikNCj4gPiAgRmlsZSAiPGh0 dHBzOi8vY2kubGluYXJvLm9yZy9qb2IvbGVnLXZpcnQtdGlhbm9jb3JlLWVkazItDQo+ID51cHN0 cmVhbS93cy9lZGsyL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Xb3Jrc3BhY2VD b21tDQo+ID5vbi5weSIsPg0KPiA+bGluZSA0NCwgaW4gR2V0UGFja2FnZUxpc3QNCj4gPiAgICBm b3IgTW9kdWxlRmlsZSBpbiBQbGF0Zm9ybS5Nb2R1bGVzOg0KPiA+ICBGaWxlICI8aHR0cHM6Ly9j aS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj4gPnVwc3RyZWFtL3dz L2VkazIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxkRGF0YS5weSIs Pg0KPiA+bGluZSA3MjgsIGluIE1vZHVsZXMNCj4gPiAgICBzZWxmLk92ZXJyaWRlRHVwbGljYXRl TW9kdWxlKCkNCj4gPiAgRmlsZSAiPGh0dHBzOi8vY2kubGluYXJvLm9yZy9qb2IvbGVnLXZpcnQt dGlhbm9jb3JlLWVkazItDQo+ID51cHN0cmVhbS93cy9lZGsyL0Jhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucHkiLD4NCj4gPmxpbmUgNzEyLCBpbiBPdmVycmlk ZUR1cGxpY2F0ZU1vZHVsZQ0KPiA+ICAgIE1hY3Jvc1siRURLX1NPVVJDRSJdID0gR2xvYmFsRGF0 YS5nRWNwU291cmNlDQo+ID5BdHRyaWJ1dGVFcnJvcjogJ21vZHVsZScgb2JqZWN0IGhhcyBubyBh dHRyaWJ1dGUgJ2dFY3BTb3VyY2UnDQo+ID4NCj4gPg0KPiA+DQo+ID4+ID4tLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+PiA+RnJvbTogRmVuZywgQm9iIEMNCj4gPj4gPlNlbnQ6IEZyaWRh eSwgSmFudWFyeSAxMSwgMjAxOSAxMDozOSBBTQ0KPiA+PiA+VG86IGVkazItZGV2ZWxAbGlzdHMu MDEub3JnDQo+ID4+ID5DYzogRmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgR2Fv LCBMaW1pbmcgDQo+ID4+ID48bGltaW5nLmdhb0BpbnRlbC5jb20+OyBDYXJzZXksIEphYmVuIDxq YWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KPiA+PiA+U3ViamVjdDogW1BhdGNoXSBCYXNlVG9vbHM6 IEVuYWJsZSBjb21wb25lbnQgb3ZlcnJpZGUgDQo+ID4+ID5mdW5jdGlvbmFsaXR5DQo+ID4+ID4N Cj4gPj4gPmh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0 OQ0KPiA+PiA+VGhpcyBwYXRjaCBlbmFibGUgYnVpbGQgdG9vbHMgdG8gcmVjb2duaXplIHRoYXQg d2hlbiB0d28gZ2l2ZW4gDQo+ID4+ID5maWxlcyBoYXZlIHRoZSBzYW1lIEdVSUQsIGZpbGUgcGF0 aCBhbmQgQVJDSCBpbiBEc2MsIFRoZSBsYXRlciANCj4gPj4gPm9uZSdzIGRlZmluaXRpb24gd2ls bCBiZSB1c2VkLg0KPiA+PiA+DQo+ID4+ID5Db250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENv bnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ID4+ID5TaWduZWQtb2ZmLWJ5OiBCb2IgRmVuZyA8 Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+ID4+ID5DYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0Bp bnRlbC5jb20+DQo+ID4+ID5DYzogQ2Fyc2V5IEphYmVuIDxqYWJlbi5jYXJzZXlAaW50ZWwuY29t Pg0KPiA+PiA+LS0tDQo+ID4+ID4gLi4uL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxk RGF0YS5weSAgIHwgMjQgKysrKysrKysrKysrLS0tLS0tDQo+ID4tDQo+ID4+ID4gLi4uL1NvdXJj ZS9QeXRob24vV29ya3NwYWNlL01ldGFGaWxlUGFyc2VyLnB5IHwgIDUgKysrKyANCj4gPj4gPiAu Li4vU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvTWV0YUZpbGVUYWJsZS5weSAgfCAgNyArKysrLS0N Cj4gPj4gPiAzIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygt KQ0KPiA+PiA+DQo+ID4+ID5kaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29y a3NwYWNlL0RzY0J1aWxkRGF0YS5weQ0KPiA+PiA+Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9X b3Jrc3BhY2UvRHNjQnVpbGREYXRhLnB5DQo+ID4+ID5pbmRleCA3ZTgyZThlOTM0Li5mOTgwNWY1 OGY1IDEwMDY0NA0KPiA+PiA+LS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNl L0RzY0J1aWxkRGF0YS5weQ0KPiA+PiA+KysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29y a3NwYWNlL0RzY0J1aWxkRGF0YS5weQ0KPiA+PiA+QEAgLTcwNCwzNiArNzA0LDQ0IEBAIGNsYXNz IERzY0J1aWxkRGF0YShQbGF0Zm9ybUJ1aWxkQ2xhc3NPYmplY3QpOg0KPiA+PiA+ICAgICAgICAg ICAgIGlmIFRBQl9ERUZBVUxUX1NUT1JFU19ERUZBVUxUIG5vdCBpbiBzZWxmLkRlZmF1bHRTdG9y ZXM6DQo+ID4+ID4gICAgICAgICAgICAgICAgIHNlbGYuRGVmYXVsdFN0b3Jlc1tUQUJfREVGQVVM VF9TVE9SRVNfREVGQVVMVF0gPSANCj4gPj4gPigwLA0KPiA+PiA+VEFCX0RFRkFVTFRfU1RPUkVT X0RFRkFVTFQpDQo+ID4+ID4gICAgICAgICAgICAgR2xvYmFsRGF0YS5nRGVmYXVsdFN0b3JlcyA9 IHNvcnRlZChzZWxmLkRlZmF1bHRTdG9yZXMua2V5cygpKQ0KPiA+PiA+ICAgICAgICAgcmV0dXJu IHNlbGYuRGVmYXVsdFN0b3Jlcw0KPiA+PiA+DQo+ID4+ID4rICAgIGRlZiBPdmVycmlkZUR1cGxp Y2F0ZU1vZHVsZShzZWxmKToNCj4gPj4gPisgICAgICAgIFJlY29yZExpc3QgPSBzZWxmLl9SYXdE YXRhW01PREVMX01FVEFfREFUQV9DT01QT05FTlQsDQo+ID4+ID5zZWxmLl9BcmNoXQ0KPiA+PiA+ KyAgICAgICAgTWFjcm9zID0gc2VsZi5fTWFjcm9zDQo+ID4+ID4rICAgICAgICBNYWNyb3NbIkVE S19TT1VSQ0UiXSA9IEdsb2JhbERhdGEuZ0VjcFNvdXJjZQ0KPiA+PiA+KyAgICAgICAgQ29tcG9u ZW50cyA9IHt9DQo+ID4+ID4rICAgICAgICBmb3IgUmVjb3JkIGluIFJlY29yZExpc3Q6DQo+ID4+ ID4rICAgICAgICAgICAgTW9kdWxlSWQgPSBSZWNvcmRbNl0NCj4gPj4gPisgICAgICAgICAgICBm aWxlX2d1aWQgPSBzZWxmLl9SYXdEYXRhW01PREVMX01FVEFfREFUQV9IRUFERVIsDQo+ID5zZWxm Ll9BcmNoLA0KPiA+PiA+Tm9uZSwgTW9kdWxlSWRdDQo+ID4+ID4rICAgICAgICAgICAgZmlsZV9n dWlkX3N0ciA9IGZpbGVfZ3VpZFswXVsyXSBpZiBmaWxlX2d1aWQgZWxzZSAiTlVMTCINCj4gPj4g PisgICAgICAgICAgICBNb2R1bGVGaWxlID0gUGF0aENsYXNzKE5vcm1QYXRoKFJlY29yZFswXSwg TWFjcm9zKSwNCj4gPj4gPkdsb2JhbERhdGEuZ1dvcmtzcGFjZSwgQXJjaD1zZWxmLl9BcmNoKQ0K PiA+PiA+KyAgICAgICAgICAgIGlmIHNlbGYuX0FyY2ggIT0gVEFCX0FSQ0hfQ09NTU9OIGFuZA0K PiA+PiA+KGZpbGVfZ3VpZF9zdHIsc3RyKE1vZHVsZUZpbGUpKSBpbiBDb21wb25lbnRzOg0KPiA+ PiA+Kw0KPiA+PiA+c2VsZi5fUmF3RGF0YS5EaXNhYmxlT3ZlcnJpZGVDb21wb25lbnQoQ29tcG9u ZW50c1soZmlsZV9ndWlkX3N0cixzDQo+ID4+ID50cg0KPiA+KE0NCj4gPj4gPm9kdWxlRmlsZSkp XSkNCj4gPj4gPisgICAgICAgICAgICBDb21wb25lbnRzWyhmaWxlX2d1aWRfc3RyLHN0cihNb2R1 bGVGaWxlKSldID0gTW9kdWxlSWQNCj4gPj4gPisgICAgICAgIHNlbGYuX1Jhd0RhdGEuX1Bvc3RQ cm9jZXNzZWQgPSBGYWxzZQ0KPiA+PiA+ICAgICAjIyBSZXRyaWV2ZSBbQ29tcG9uZW50c10gc2Vj dGlvbiBpbmZvcm1hdGlvbg0KPiA+PiA+ICAgICBAcHJvcGVydHkNCj4gPj4gPiAgICAgZGVmIE1v ZHVsZXMoc2VsZik6DQo+ID4+ID4gICAgICAgICBpZiBzZWxmLl9Nb2R1bGVzIGlzIG5vdCBOb25l Og0KPiA+PiA+ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9Nb2R1bGVzDQo+ID4+ID4tDQo+ID4+ ID4rICAgICAgICBzZWxmLk92ZXJyaWRlRHVwbGljYXRlTW9kdWxlKCkNCj4gPj4gPiAgICAgICAg IHNlbGYuX01vZHVsZXMgPSBPcmRlcmVkRGljdCgpDQo+ID4+ID4gICAgICAgICBSZWNvcmRMaXN0 ID0gc2VsZi5fUmF3RGF0YVtNT0RFTF9NRVRBX0RBVEFfQ09NUE9ORU5ULA0KPiA+PiA+c2VsZi5f QXJjaF0NCj4gPj4gPiAgICAgICAgIE1hY3JvcyA9IHNlbGYuX01hY3Jvcw0KPiA+PiA+ICAgICAg ICAgTWFjcm9zWyJFREtfU09VUkNFIl0gPSBHbG9iYWxEYXRhLmdFY3BTb3VyY2UNCj4gPj4gPiAg ICAgICAgIGZvciBSZWNvcmQgaW4gUmVjb3JkTGlzdDoNCj4gPj4gPi0gICAgICAgICAgICBEdXBs aWNhdGVkRmlsZSA9IEZhbHNlDQo+ID4+ID4tDQo+ID4+ID4gICAgICAgICAgICAgTW9kdWxlRmls ZSA9IFBhdGhDbGFzcyhOb3JtUGF0aChSZWNvcmRbMF0sIE1hY3JvcyksIA0KPiA+PiA+R2xvYmFs RGF0YS5nV29ya3NwYWNlLCBBcmNoPXNlbGYuX0FyY2gpDQo+ID4+ID4gICAgICAgICAgICAgTW9k dWxlSWQgPSBSZWNvcmRbNl0NCj4gPj4gPiAgICAgICAgICAgICBMaW5lTm8gPSBSZWNvcmRbN10N Cj4gPj4gPg0KPiA+PiA+ICAgICAgICAgICAgICMgY2hlY2sgdGhlIGZpbGUgdmFsaWRhdGlvbg0K PiA+PiA+ICAgICAgICAgICAgIEVycm9yQ29kZSwgRXJyb3JJbmZvID0gTW9kdWxlRmlsZS5WYWxp ZGF0ZSgnLmluZicpDQo+ID4+ID4gICAgICAgICAgICAgaWYgRXJyb3JDb2RlICE9IDA6DQo+ID4+ ID4gICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignYnVpbGQnLCBFcnJvckNvZGUsIA0K PiA+PiA+IEZpbGU9c2VsZi5NZXRhRmlsZSwNCj4gPkxpbmU9TGluZU5vLA0KPiA+PiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmFEYXRhPUVycm9ySW5mbykNCj4gPj4gPi0g ICAgICAgICAgICAjIENoZWNrIGR1cGxpY2F0aW9uDQo+ID4+ID4tICAgICAgICAgICAgIyBJZiBh cmNoIGlzIENPTU1PTiwgbm8gZHVwbGljYXRlIG1vZHVsZSBpcyBjaGVja2VkIHNpbmNlIGFsbA0K PiA+bW9kdWxlcw0KPiA+PiA+aW4gYWxsIGNvbXBvbmVudCBzZWN0aW9ucyBhcmUgc2VsZWN0ZWQN Cj4gPj4gPi0gICAgICAgICAgICBpZiBzZWxmLl9BcmNoICE9IFRBQl9BUkNIX0NPTU1PTiBhbmQg TW9kdWxlRmlsZSBpbg0KPiA+c2VsZi5fTW9kdWxlczoNCj4gPj4gPi0gICAgICAgICAgICAgICAg RHVwbGljYXRlZEZpbGUgPSBUcnVlDQo+ID4+ID4NCj4gPj4gPiAgICAgICAgICAgICBNb2R1bGUg PSBNb2R1bGVCdWlsZENsYXNzT2JqZWN0KCkNCj4gPj4gPiAgICAgICAgICAgICBNb2R1bGUuTWV0 YUZpbGUgPSBNb2R1bGVGaWxlDQo+ID4+ID4NCj4gPj4gPiAgICAgICAgICAgICAjIGdldCBtb2R1 bGUgcHJpdmF0ZSBsaWJyYXJ5IGluc3RhbmNlIEBAIC03OTIsMTIgDQo+ID4+ID4rODAwLDEwIEBA IGNsYXNzIERzY0J1aWxkRGF0YShQbGF0Zm9ybUJ1aWxkQ2xhc3NPYmplY3QpOg0KPiA+PiA+ICAg ICAgICAgICAgICAgICBlbHNlOg0KPiA+PiA+ICAgICAgICAgICAgICAgICAgICAgT3B0aW9uU3Ry aW5nID0gTW9kdWxlLkJ1aWxkT3B0aW9uc1tUb29sQ2hhaW5GYW1pbHksIFRvb2xDaGFpbl0NCj4g Pj4gPiAgICAgICAgICAgICAgICAgICAgIE1vZHVsZS5CdWlsZE9wdGlvbnNbVG9vbENoYWluRmFt aWx5LCANCj4gPj4gPlRvb2xDaGFpbl0gPQ0KPiA+T3B0aW9uU3RyaW5nICsNCj4gPj4gPiIgIiAr IE9wdGlvbg0KPiA+PiA+DQo+ID4+ID4gICAgICAgICAgICAgUmVjb3JkTGlzdCA9IHNlbGYuX1Jh d0RhdGFbTU9ERUxfTUVUQV9EQVRBX0hFQURFUiwNCj4gPnNlbGYuX0FyY2gsDQo+ID4+ID5Ob25l LCBNb2R1bGVJZF0NCj4gPj4gPi0gICAgICAgICAgICBpZiBEdXBsaWNhdGVkRmlsZSBhbmQgbm90 IFJlY29yZExpc3Q6DQo+ID4+ID4tICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignYnVp bGQnLCBGSUxFX0RVUExJQ0FURUQsIEZpbGU9c2VsZi5NZXRhRmlsZSwNCj4gPj4gPkV4dHJhRGF0 YT1zdHIoTW9kdWxlRmlsZSksIExpbmU9TGluZU5vKQ0KPiA+PiA+ICAgICAgICAgICAgIGlmIFJl Y29yZExpc3Q6DQo+ID4+ID4gICAgICAgICAgICAgICAgIGlmIGxlbihSZWNvcmRMaXN0KSAhPSAx Og0KPiA+PiA+ICAgICAgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCdidWlsZCcsIE9Q VElPTl9VTktOT1dOLCANCj4gPj4gPidPbmx5IEZJTEVfR1VJRA0KPiA+Y2FuDQo+ID4+ID5iZSBs aXN0ZWQgaW4gPERlZmluZXM+IHNlY3Rpb24uJywNCj4gPj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGaWxlPXNlbGYuTWV0YUZpbGUsIA0KPiA+PiA+RXh0cmFEYXRhPXN0 cihNb2R1bGVGaWxlKSwNCj4gPkxpbmU9TGluZU5vKQ0KPiA+PiA+ICAgICAgICAgICAgICAgICBN b2R1bGVGaWxlID0gUHJvY2Vzc0R1cGxpY2F0ZWRJbmYoTW9kdWxlRmlsZSwgDQo+ID4+ID5SZWNv cmRMaXN0WzBdWzJdLA0KPiA+PiA+R2xvYmFsRGF0YS5nV29ya3NwYWNlKQ0KPiA+PiA+ZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9NZXRhRmlsZVBhcnNlci5w eQ0KPiA+PiA+Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvTWV0YUZpbGVQYXJz ZXIucHkNCj4gPj4gPmluZGV4IDAzMjIyMDgxM2IuLmE1MmU5MjI5ZGYgMTAwNjQ0DQo+ID4+ID4t LS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvTWV0YUZpbGVQYXJzZXIucHkN Cj4gPj4gPisrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9NZXRhRmlsZVBh cnNlci5weQ0KPiA+PiA+QEAgLTE3MTEsMTAgKzE3MTEsMTUgQEAgY2xhc3MgRHNjUGFyc2VyKE1l dGFGaWxlUGFyc2VyKToNCj4gPj4gPg0KPiA+PiA+ICAgICBkZWYgX19Qcm9jZXNzQnVpbGRPcHRp b24oc2VsZik6DQo+ID4+ID4gICAgICAgICBzZWxmLl9WYWx1ZUxpc3QgPSBbUmVwbGFjZU1hY3Jv KFZhbHVlLCBzZWxmLl9NYWNyb3MsIFJhaXNlRXJyb3I9RmFsc2UpDQo+ID4+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIFZhbHVlIGluIHNlbGYuX1ZhbHVlTGlzdF0NCj4gPj4gPg0K PiA+PiA+KyAgICBkZWYgRGlzYWJsZU92ZXJyaWRlQ29tcG9uZW50KHNlbGYsbW9kdWxlX2lkKToN Cj4gPj4gPisgICAgICAgIGZvciBvcmlfaWQgaW4gc2VsZi5fSWRNYXBwaW5nOg0KPiA+PiA+KyAg ICAgICAgICAgIGlmIHNlbGYuX0lkTWFwcGluZ1tvcmlfaWRdID09IG1vZHVsZV9pZDoNCj4gPj4g PisgICAgICAgICAgICAgICAgc2VsZi5fUmF3VGFibGUuRGlzYWJsZUNvbXBvbmVudChvcmlfaWQp DQo+ID4+ID4rDQo+ID4+ID4gICAgIF9TZWN0aW9uUGFyc2VyID0gew0KPiA+PiA+ICAgICAgICAg TU9ERUxfTUVUQV9EQVRBX0hFQURFUiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgIF9EZWZp bmVQYXJzZXIsDQo+ID4+ID4gICAgICAgICBNT0RFTF9FRklfU0tVX0lEICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6ICAgX1NrdUlkUGFyc2VyLA0KPiA+PiA+ICAgICAgICAgTU9ERUxf RUZJX0RFRkFVTFRfU1RPUkVTICAgICAgICAgICAgICAgICAgICAgICAgOiAgIF9EZWZhdWx0U3Rv cmVzUGFyc2VyLA0KPiA+PiA+ICAgICAgICAgTU9ERUxfRUZJX0xJQlJBUllfSU5TVEFOQ0UgICAg ICAgICAgICAgICAgICAgICAgOiAgIF9MaWJyYXJ5SW5zdGFuY2VQYXJzZXIsDQo+ID4+ID5kaWZm IC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL01ldGFGaWxlVGFibGUu cHkNCj4gPj4gPmIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL01ldGFGaWxlVGFi bGUucHkNCj4gPj4gPmluZGV4IDAwNGU5NDk0YzMuLjgyM2E4N2UwNTcgMTAwNjQ0DQo+ID4+ID4t LS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvTWV0YUZpbGVUYWJsZS5weQ0K PiA+PiA+KysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL01ldGFGaWxlVGFi bGUucHkNCj4gPj4gPkBAIC03NCwxMSArNzQsMTEgQEAgY2xhc3MgTWV0YUZpbGVUYWJsZSgpOg0K PiA+PiA+DQo+ID4+ID4gICAgIGRlZiBTZXRFbmRGbGFnKHNlbGYpOg0KPiA+PiA+ICAgICAgICAg c2VsZi5DdXJyZW50Q29udGVudC5hcHBlbmQoc2VsZi5fRFVNTVlfKQ0KPiA+PiA+DQo+ID4+ID4g ICAgIGRlZiBHZXRBbGwoc2VsZik6DQo+ID4+ID4tICAgICAgICByZXR1cm4gW2l0ZW0gZm9yIGl0 ZW0gaW4gc2VsZi5DdXJyZW50Q29udGVudCBpZiBpdGVtWzBdID49IDAgXQ0KPiA+PiA+KyAgICAg ICAgcmV0dXJuIFtpdGVtIGZvciBpdGVtIGluIHNlbGYuQ3VycmVudENvbnRlbnQgaWYgaXRlbVsw XSANCj4gPj4gPisgPj0gMCBhbmQgaXRlbVstDQo+ID4+ID4xXT49MF0NCj4gPj4gPg0KPiA+PiA+ ICMjIFB5dGhvbiBjbGFzcyByZXByZXNlbnRhdGlvbiBvZiB0YWJsZSBzdG9yaW5nIG1vZHVsZSBk YXRhICANCj4gPj4gPmNsYXNzIE1vZHVsZVRhYmxlKE1ldGFGaWxlVGFibGUpOg0KPiA+PiA+ICAg ICBfQ09MVU1OXyA9ICcnJw0KPiA+PiA+ICAgICAgICAgSUQgUkVBTCBQUklNQVJZIEtFWSwNCj4g Pj4gPkBAIC0zNzEsMTEgKzM3MSwxMCBAQCBjbGFzcyBQbGF0Zm9ybVRhYmxlKE1ldGFGaWxlVGFi bGUpOg0KPiA+PiA+ICAgICAjDQo+ID4+ID4gICAgIGRlZiBRdWVyeShzZWxmLCBNb2RlbCwgU2Nv cGUxPU5vbmUsIFNjb3BlMj1Ob25lLCANCj4gPj4gPkJlbG9uZ3NUb0l0ZW09Tm9uZSwgRnJvbUl0 ZW09Tm9uZSk6DQo+ID4+ID4NCj4gPj4gPiAgICAgICAgIFF1ZXJ5VGFiID0gc2VsZi5DdXJyZW50 Q29udGVudA0KPiA+PiA+ICAgICAgICAgcmVzdWx0ID0gW2l0ZW0gZm9yIGl0ZW0gaW4gUXVlcnlU YWIgaWYgaXRlbVsxXSA9PSBNb2RlbCANCj4gPj4gPmFuZCBpdGVtWy0xXT4wIF0NCj4gPj4gPi0N Cj4gPj4gPiAgICAgICAgIGlmIFNjb3BlMSBpcyBub3QgTm9uZSBhbmQgU2NvcGUxICE9IFRBQl9B UkNIX0NPTU1PTjoNCj4gPj4gPiAgICAgICAgICAgICBTYzEgPSBzZXQoWydDT01NT04nXSkNCj4g Pj4gPiAgICAgICAgICAgICBTYzEuYWRkKFNjb3BlMSkNCj4gPj4gPiAgICAgICAgICAgICByZXN1 bHQgPSBbaXRlbSBmb3IgaXRlbSBpbiByZXN1bHQgaWYgaXRlbVs1XSBpbiBTYzFdDQo+ID4+ID4g ICAgICAgICBTYzIgPSBzZXQoIFsnQ09NTU9OJywnREVGQVVMVCddKSBAQCAtMzk1LDEwICszOTQs MTQgQEAgDQo+ID4+ID5jbGFzcyBQbGF0Zm9ybVRhYmxlKE1ldGFGaWxlVGFibGUpOg0KPiA+PiA+ ICAgICAgICAgICAgIHJlc3VsdCA9IFtpdGVtIGZvciBpdGVtIGluIHJlc3VsdCBpZiBpdGVtWzld ID09IA0KPiA+PiA+RnJvbUl0ZW1dDQo+ID4+ID4NCj4gPj4gPiAgICAgICAgIHJlc3VsdCA9IFsg W3JbMl0sclszXSxyWzRdLHJbNV0scls2XSxyWzddLHJbMF0scls5XV0gZm9yIHIgaW4gcmVzdWx0 IF0NCj4gPj4gPiAgICAgICAgIHJldHVybiByZXN1bHQNCj4gPj4gPg0KPiA+PiA+KyAgICBkZWYg RGlzYWJsZUNvbXBvbmVudChzZWxmLGNvbXBfaWQpOg0KPiA+PiA+KyAgICAgICAgZm9yIGl0ZW0g aW4gc2VsZi5DdXJyZW50Q29udGVudDoNCj4gPj4gPisgICAgICAgICAgICBpZiBpdGVtWzBdID09 IGNvbXBfaWQgb3IgaXRlbVs4XSA9PSBjb21wX2lkOg0KPiA+PiA+KyAgICAgICAgICAgICAgICBp dGVtWy0xXSA9IC0xDQo+ID4+ID4NCj4gPj4gPiAjIyBGYWN0b3J5IGNsYXNzIHRvIHByb2R1Y2Ug ZGlmZmVyZW50IHN0b3JhZ2UgZm9yIGRpZmZlcmVudCB0eXBlIA0KPiA+PiA+IG9mIG1ldGEtDQo+ ID5maWxlDQo+ID4+ID4gY2xhc3MgTWV0YUZpbGVTdG9yYWdlKG9iamVjdCk6DQo+ID4+ID4gICAg IF9GSUxFX1RBQkxFXyA9IHsNCj4gPj4gPiAgICAgICAgIE1PREVMX0ZJTEVfSU5GICAgICAgOiAg IE1vZHVsZVRhYmxlLA0KPiA+PiA+LS0NCj4gPj4gPjIuMTkuMS53aW5kb3dzLjENCj4gPj4NCj4g Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPj4g ZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gPj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4g Pj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=