From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web09.3713.1612416417909850703 for ; Wed, 03 Feb 2021 21:26:58 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=zm/Q/Hay; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: bob.c.feng@intel.com) IronPort-SDR: Q2NgBnxYf9c+BmPIbBDFnyHIwbKxDcMB0kWbw0Gkd0Re9BXIRjK32ckEUW8YA591hl+/prYZx3 DfF3ZxmrRL6A== X-IronPort-AV: E=McAfee;i="6000,8403,9884"; a="160340104" X-IronPort-AV: E=Sophos;i="5.79,400,1602572400"; d="scan'208";a="160340104" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Feb 2021 21:26:57 -0800 IronPort-SDR: 83kpYz1Gt4K4SQhRTZRcGqbObCI5sz3YarwvcoPv3rI/xRqpdn9y+/3IcXxoniMfcPurR8TzpF 62YhdzCWdTRA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,400,1602572400"; d="scan'208";a="433774573" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga001.jf.intel.com with ESMTP; 03 Feb 2021 21:26:56 -0800 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 3 Feb 2021 21:26:56 -0800 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 3 Feb 2021 21:26:55 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Wed, 3 Feb 2021 21:26:55 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.172) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Wed, 3 Feb 2021 21:26:55 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DDPUWyl/MpvFqGQt76DMNoRlpfgumfUQpmmBzruodrSMTGvixHrRX9QvjMY+D5K8KrV9mGyiBzTGBs6bdAogj6ndcVFxUyO0tbRzRi8zxqx6spNyVmcCfXLFePihqWbQYunucf9TTSlEltD/GUNBNiEOsgntr2R4xbdvFbHcRrMb+fVr3kD/lULMcFTirJ6zD1Fs6A3hCQD3yptPkGIe4IYNYLp+hXRPUPDoGgCxlsMa06kzHftwN/aIFhGt7vx9gIrCtQHEXtAq2qibF91YK0769tphqUhgqJRiBmLbtn6dM+b+F/D8F9YD9g0s3PK8/91qfurABkpLm3P3xtzYvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c5jq6JVNZk0S4kzv2095QlcTCAcdQDf0E4u6AO5lKKk=; b=kD5XRYan+jBdoLmywRboSI5gLjnYHs5oFyKdN6gCBmBqSLtRNEYb9C+02x9vNpzoQeLFQ1UBit/t7XYm9SZChAotmSpJmJnCUvYm/RV3DGF1ImNl45nFP4h1ZGL/ASIpfdrTtxj0tWBzmHAa/phRFbrCNKTn/3Q4mxohaaYYYxLUCZFyuB07qhgnPbQy+VmJO7Dj/SHzjrWBQY6otuGD7pQbotpUIEcz7N2HMTf02aH7hy8KT88Ftp2mffOiGlZT6CbJGuHTfzXWtUvjxFFCa2g5ruiRx/wLSjZVFHWnN61QAjBsGbKrvbVMMvKsjtmc04NFwtxfVWzf+Dt/1DUkdw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c5jq6JVNZk0S4kzv2095QlcTCAcdQDf0E4u6AO5lKKk=; b=zm/Q/HayC+aVBypSuapA6F9Uf4mD+ZUDo2O7p98EOswBoALgFmJXRjvrnMZaSPqsb/7P862w1EccLNRrz/uXguEcCGMfnge26lJXYEdygErSCZHIRGGSZwC/jOsR7SipsNbq0mgqxQL5lVG7CImIH71SyE7KRFKnyR8znendVII= Received: from DM6PR11MB4073.namprd11.prod.outlook.com (2603:10b6:5:19f::22) by DM6PR11MB2603.namprd11.prod.outlook.com (2603:10b6:5:c6::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.17; Thu, 4 Feb 2021 05:26:54 +0000 Received: from DM6PR11MB4073.namprd11.prod.outlook.com ([fe80::845:55b:f6b3:aa0a]) by DM6PR11MB4073.namprd11.prod.outlook.com ([fe80::845:55b:f6b3:aa0a%6]) with mapi id 15.20.3805.028; Thu, 4 Feb 2021 05:26:54 +0000 From: "Bob Feng" To: gaoliming , "devel@edk2.groups.io" CC: "Chen, Christine" Subject: Re: [Patch 1/1 V2] BaseTools: fix the split output files root dir Thread-Topic: [Patch 1/1 V2] BaseTools: fix the split output files root dir Thread-Index: AQISvhebgUuT0kfzdSYJV2JZzeTpwqnPpaXAgABKLGA= Date: Thu, 4 Feb 2021 05:26:54 +0000 Message-ID: References: <20210201102858.887-1-bob.c.feng@intel.com> <003501d6fa90$ff1b6b70$fd524250$@byosoft.com.cn> In-Reply-To: <003501d6fa90$ff1b6b70$fd524250$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: byosoft.com.cn; dkim=none (message not signed) header.d=none;byosoft.com.cn; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ccc94acd-864f-4406-215b-08d8c8cd7bb6 x-ms-traffictypediagnostic: DM6PR11MB2603: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:576; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: YgVGCLgGxXhDboTtid/HTR4NSG/9ccckFUkN75d+Z8c6XvompFTiopxvOKL4/2nJDF9ODJkEhf0qnjMjKRd0eaWZA/6u9U/LDduWABB2Dpr6wdgL3HXN2B+A21kTnM9ZlKtj25ThzCdfWTYEhcjTqIjYQVFGkyR0fL9XSbPkJK5aOmexgWnvgOoayZnFGeclIIFL96AFt/hbXUPHZTqKH3E0I44vAr9sikMcRq6BSeMgicaOwCkZ42EZhkOliAssJi1pZV2AtuoRkvF/Ui3KZllRTMSYLQ0wkofax+PyGDZ5PUbS3fuqMlp3Q8o+Q+T3xc5if5uUqGW0srhddBV2v3hu7LawXHDCIDDNX9e9o/aRIMCuBzFb8od2b/TiLPCy+SUSWaESd/mPRu829ZLCgZKL4kGhOnt6+SMjmSPM8N0UzSHW430JQr4OkcknkB6UMr17fQDPmgPkHez64xosobRPya5CANXLL07a90yn5rDUkV1ey+TQQbdF+Bsn0jaItQKJdEo3Ro95ZlY5anT4lQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4073.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(346002)(39860400002)(376002)(366004)(136003)(110136005)(83380400001)(86362001)(8936002)(186003)(64756008)(33656002)(55016002)(71200400001)(26005)(66556008)(316002)(6506007)(8676002)(478600001)(66946007)(53546011)(2906002)(9686003)(66476007)(5660300002)(107886003)(7696005)(52536014)(4326008)(76116006)(66446008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?eU5IdmFLNWgySW9URm4wdmd2bG1mQlA5TnRFazRReVd2aTlTVHg2eXlNZHpo?= =?utf-8?B?WXJsUnN5MUV6UFFtK0YzZjQrbWNNdnFaR1dzMzl2V2NQZzZYeEhTK1RtVzBz?= =?utf-8?B?Sm1FUXBtSW9zRmFoWXQzMU8zSCtvdHRhdXF5cE94QzQxcTM1V0g1VFoyeW9Z?= =?utf-8?B?NVVIZXhRV1dFSGZZQ3hCenNBOUpLVElNcURsdHpxS2JocTBicW8wRVdRTEVQ?= =?utf-8?B?aWFMNUhWQmtXdU9PQ0lEZTU2WkJOS0MvM1pxbHkyT3ZzY2VmYzBSaVIxT2lE?= =?utf-8?B?T1Exclh5NjdkbEpQd3ZyeEd2VlRDS2gwV1MzWGdZRWRxVUs4T0pRTVJtcE13?= =?utf-8?B?QnloSnJjUmNJMVdraDYxSFRKcnJxeTBjaDl6OXc3MHVuRWpobjA3UWlCczZ1?= =?utf-8?B?NWJkRjBlVWc1bXlTN3VWU2RBcXlBbVUwa3kramowNG1GeFVaTkNkUVZmeGRW?= =?utf-8?B?K3M0Z0FBckxWdGxZcXF4VUg2STllTHRqaXpTbUQxaDlmNnhJa0NqMkEyR2lL?= =?utf-8?B?SU1zRDdQQUdKNlpReERTMmpCUXh1aHA0NXRZZkZVUDNsQUVYTCtPU251NHBC?= =?utf-8?B?MmpZaUEwZGZPYlRFYTg2eFRtUXFDSkZQVUN5Z2JtdHdBNXpvR01pOXJoczZh?= =?utf-8?B?QThvWlltTkpPNVZhMFUrZFhQemZ3dU44c2JnRlNqRS91Szd3SmliK2VGdEpJ?= =?utf-8?B?d1AvY3VPNmJubmpoa2sxaFRJWVNPS2I2MTlBRWRhZ0RlQTJHbEdWOXNUVWsy?= =?utf-8?B?a3BwSURiMW1SbDVvdDJyZFlIZEJFcFZOK3BIam50Vy9KQXU3cjVQT2o5YkRt?= =?utf-8?B?M1JsT0IrcXNpRmlMRG01RHFWc1puaWJhQXFCMjFDV2trTGNML1pZWE02UlpQ?= =?utf-8?B?d3RkNmZuUzBQTFk4T1M3bTVDZVIrRURhczJkQk9wMGlBLzNDVVFUNVNLVi9u?= =?utf-8?B?MmNYQ0RqN3pySmxLRUpZRlZBcW1mK2NTOHQvRjBJbkVGazVSTnhhN0tjVTdG?= =?utf-8?B?WnljNXlhS0p2T25vRnA2Sk9jQ245NnhnSDlyR3lkOGMrQk90amZHYW84ZE05?= =?utf-8?B?VUgrTGQ0b3RNTkdjV0FUcFQ2ZThhZ1FxMyt1WmRlNDdxUEJnUHhDM204TnNQ?= =?utf-8?B?cVZ6R1pDbWw4b21wL3hRMXNDYXRQN0tJUDhBeHlRQi8xcFhCaWN2V2ZnSkhC?= =?utf-8?B?SkN0bEQwak1kUytFWUNNRWxHejl6VVk1SFlLOE1LSUxMMWxhcytKZWdXczRV?= =?utf-8?B?dElvZkh1R25ZWGprYmF4Vkg2Tk9iRGFIOENneVRGZ3l6NnJuQVpsSFZPdU5T?= =?utf-8?B?Tlo2bWdNS3JpL1JCdGhOUlptZFdtbGlKQ0hHTVhXaGEyOTZsMGJteTgyRWk0?= =?utf-8?B?VTlKZGlYWFBLMmo4Yk11d0dhZ0VxZHVTL0VtZUJuN2tXQldxeHVZRzNlUThS?= =?utf-8?B?c3V6cnlXZmNqQUpwZ0svSVAwUytCRlRtZ3BiZjVUajVzeU1LcU1scVBNZVZy?= =?utf-8?B?R3hxQzUrVWZGd3FxTUlpbk9XY05rdDdHU3M4S3lsRlB5RWkvMXRpYWNFaVlw?= =?utf-8?B?U0Zkc3VKd3VZdnJsOGJtQ1VPbWZ3bTdEVW5WMjhZUFRoalhvRDdHZTIzSWox?= =?utf-8?B?cG9UandxNFFzdm1FdnRVMUkxQmVpSmRLVWs2S1d2QlZNTzRXTVovT2JnUFdu?= =?utf-8?B?b29kdTdIb1ordXdpOTIyazl2blkrQ3lJWitXc2pYdk5QK2ExaG0vTFR1dmgz?= =?utf-8?Q?SnX4J+eSFJHiNavXKg=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4073.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ccc94acd-864f-4406-215b-08d8c8cd7bb6 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2021 05:26:54.0740 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: rzsxRz7OXcU4jUxpA/FmsMBa8rUxIgK4Pw3Al7v0uIYgufSiAtOnFfaImOqUUUpTFhuDSys5tYe12cP9e62u2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB2603 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 WWVzLiBJIGRpZCB0aGUgdmVyaWZpY2F0aW9uIG9uIHRoZSBJbnRlbCBwbGF0Zm9ybXMuIEl0IHdv cmtzIGFzIGJlZm9yZS4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGdhb2xp bWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPiANClNlbnQ6IFRodXJzZGF5LCBGZWJydWFy eSA0LCAyMDIxIDk6MDAgQU0NClRvOiBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+ OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IENoZW4sIENocmlzdGluZSA8eXV3ZWkuY2hlbkBp bnRlbC5jb20+DQpTdWJqZWN0OiDlm57lpI06IFtQYXRjaCAxLzEgVjJdIEJhc2VUb29sczogZml4 IHRoZSBzcGxpdCBvdXRwdXQgZmlsZXMgcm9vdCBkaXINCg0KQm9iOg0KICBEb2VzIHRoaXMgYmVo YXZpb3IgZm9sbG93IG9yaWdpbmFsIEMgU3BsaXQgdG9vbD8NCg0KVGhhbmtzDQpMaW1pbmcNCj4g LS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IEJvYiBGZW5nIDxib2IuYy5mZW5n QGludGVsLmNvbT4NCj4g5Y+R6YCB5pe26Ze0OiAyMDIx5bm0MuaciDHml6UgMTg6MjkNCj4g5pS2 5Lu25Lq6OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiDmioTpgIE6IExpbWluZyBHYW8gPGdhb2xp bWluZ0BieW9zb2Z0LmNvbS5jbj47IFl1d2VpIENoZW4gDQo+IDx5dXdlaS5jaGVuQGludGVsLmNv bT4NCj4g5Li76aKYOiBbUGF0Y2ggMS8xIFYyXSBCYXNlVG9vbHM6IGZpeCB0aGUgc3BsaXQgb3V0 cHV0IGZpbGVzIHJvb3QgZGlyDQo+IA0KPiBJZiB0aGUgb3V0cHV0IGZpbGUgcGF0aCBpcyBhIHJl bGF0aXZlIHBhdGgsIHRoZSBzcGxpdCB0b29sIHdpbGwgY3JlYXRlIA0KPiB0aGUgb3V0cHV0IGZp bGUgdW5kZXIgdGhlIGlucHV0IGZpbGUgcGF0aC4NCj4gQnV0IHRoZSBleHBlY3RlZCBiZWhhdmlv ciBmb3IgdGhpcyBjYXNlIGlzIHRoZSBvdXRwdXQgZmlsZSBzaG91bGQgYmUgDQo+IHJlbGF0aXZl IHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gVGhpcyBwYXRjaCB3aWxsIGZpeCB0aGlzIGJ1Zy4N Cj4gDQo+IElmIHRoZSBvdXRwdXQgZmlsZSBwYXRoIGlzIG5vdCBzcGVjaWZpZWQgYW5kIG91dHB1 dCBwcmVmaXggaXMgbm90IA0KPiBzcGVjaWZpZWQsIHRoZSBvdXRwdXQgZmlsZSBzaG91bGQgYmUg dW5kZXIgdGhlIGlucHV0IGZpbGUgcGF0aA0KPiANCj4gU2lnbmVkLW9mZi1ieTogQm9iIEZlbmcg PGJvYi5jLmZlbmdAaW50ZWwuY29tPg0KPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3Nv ZnQuY29tLmNuPg0KPiBDYzogWXV3ZWkgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQo+IC0t LQ0KPiBWMjogSWYgdGhlIG91dHB1dCBmaWxlIHBhdGggaXMgbm90IHNwZWNpZmllZCBhbmQgb3V0 cHV0IHByZWZpeCBpcyBub3QgDQo+IHNwZWNpZmllZCwgdGhlIG91dHB1dCBmaWxlIHNob3VsZCBi ZSB1bmRlciB0aGUgaW5wdXQgZmlsZSBwYXRoDQo+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9T cGxpdC9TcGxpdC5weSAgICAgICAgfCA2NCArKysrKysrLS0tLS0tDQo+ICAuLi4vU291cmNlL1B5 dGhvbi90ZXN0cy9TcGxpdC90ZXN0X3NwbGl0LnB5ICAgfCA5NiArKysrKysrKysrLS0tLS0tLS0t DQo+ICAyIGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQ0K PiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1NwbGl0L1NwbGl0LnB5 DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vU3BsaXQvU3BsaXQucHkNCj4gaW5kZXggNDVh NWEwNjA0NzRjLi5lMjIzYTcyYTk0ZTEgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL1NwbGl0L1NwbGl0LnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1Nw bGl0L1NwbGl0LnB5DQo+IEBAIC05MCw2NiArOTAsNzQgQEAgZGVmIGdldEZpbGVTaXplKGZpbGVu YW1lKToNCj4gICAgICAgICAgbG9nZ2VyLmVycm9yKCJBY2Nlc3MgZmlsZSBmYWlsZWQ6ICVzIiwg ZmlsZW5hbWUpDQo+ICAgICAgICAgIHJhaXNlKGUpDQo+IA0KPiAgICAgIHJldHVybiBsZW5ndGgN Cj4gDQo+ICtkZWYgZ2V0b3V0cHV0ZmlsZWFicyhpbnB1dGZpbGUsIHByZWZpeCwgb3V0cHV0Zmls ZSxpbmRleCk6DQo+ICsgICAgaW5wdXRmaWxlID0gb3MucGF0aC5hYnNwYXRoKGlucHV0ZmlsZSkN Cj4gKyAgICBpZiBvdXRwdXRmaWxlIGlzIE5vbmU6DQo+ICsgICAgICAgIGlmIHByZWZpeCBpcyBO b25lOg0KPiArICAgICAgICAgICAgb3V0cHV0ZmlsZWFicyA9IG9zLnBhdGguam9pbihvcy5wYXRo LmRpcm5hbWUoaW5wdXRmaWxlKSwNCj4gInt9e30iLmZvcm1hdChvcy5wYXRoLmJhc2VuYW1lKGlu cHV0ZmlsZSksaW5kZXgpKQ0KPiArICAgICAgICBlbHNlOg0KPiArICAgICAgICAgICAgaWYgb3Mu cGF0aC5pc2FicyhwcmVmaXgpOg0KPiArICAgICAgICAgICAgICAgIG91dHB1dGZpbGVhYnMgPSBv cy5wYXRoLmpvaW4ocHJlZml4LA0KPiAie317fSIuZm9ybWF0KG9zLnBhdGguYmFzZW5hbWUoaW5w dXRmaWxlKSxpbmRleCkpDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiArICAgICAgICAgICAgICAg IG91dHB1dGZpbGVhYnMgPSBvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHByZWZpeCwNCj4gInt9 e30iLmZvcm1hdChvcy5wYXRoLmJhc2VuYW1lKGlucHV0ZmlsZSksaW5kZXgpKQ0KPiArICAgIGVs aWYgbm90IG9zLnBhdGguaXNhYnMob3V0cHV0ZmlsZSk6DQo+ICsgICAgICAgIGlmIHByZWZpeCBp cyBOb25lOg0KPiArICAgICAgICAgICAgb3V0cHV0ZmlsZWFicyA9IG9zLnBhdGguam9pbihvcy5n ZXRjd2QoKSwgb3V0cHV0ZmlsZSkNCj4gKyAgICAgICAgZWxzZToNCj4gKyAgICAgICAgICAgIGlm IG9zLnBhdGguaXNhYnMocHJlZml4KToNCj4gKyAgICAgICAgICAgICAgICBvdXRwdXRmaWxlYWJz ID0gb3MucGF0aC5qb2luKHByZWZpeCwgb3V0cHV0ZmlsZSkNCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+ICsgICAgICAgICAgICAgICAgb3V0cHV0ZmlsZWFicyA9IG9zLnBhdGguam9pbihvcy5nZXRj d2QoKSwgcHJlZml4LA0KPiBvdXRwdXRmaWxlKQ0KPiArICAgIGVsc2U6DQo+ICsgICAgICAgIG91 dHB1dGZpbGVhYnMgPSBvdXRwdXRmaWxlDQo+ICsgICAgcmV0dXJuIG91dHB1dGZpbGVhYnMNCj4g DQo+ICBkZWYgc3BsaXRGaWxlKGlucHV0ZmlsZSwgcG9zaXRpb24sIG91dHB1dGRpcj1Ob25lLCBv dXRwdXRmaWxlMT1Ob25lLA0KPiBvdXRwdXRmaWxlMj1Ob25lKToNCj4gICAgICAnJycNCj4gICAg ICBTcGxpdCB0aGUgaW5wdXRmaWxlIGludG8gb3V0cHV0ZmlsZTEgYW5kIG91dHB1dGZpbGUyIGZy b20gdGhlDQpwb3NpdGlvbi4NCj4gICAgICAnJycNCj4gICAgICBsb2dnZXIgPSBsb2dnaW5nLmdl dExvZ2dlcignU3BsaXQnKQ0KPiANCj4gLSAgICBpbnB1dGZpbGUgPSBvcy5wYXRoLmFic3BhdGgo aW5wdXRmaWxlKQ0KPiAtICAgIHdvcmtzcGFjZSA9IG9zLnBhdGguZGlybmFtZShpbnB1dGZpbGUp DQo+ICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGlucHV0ZmlsZSk6DQo+ICAgICAgICAgIGxv Z2dlci5lcnJvcigiRmlsZSBOb3QgRm91bmQ6ICVzIiAlIGlucHV0ZmlsZSkNCj4gICAgICAgICAg cmFpc2UoRXhjZXB0aW9uKQ0KPiANCj4gICAgICBpZiBvdXRwdXRmaWxlMSBhbmQgb3V0cHV0Zmls ZTIgYW5kIG91dHB1dGZpbGUxID09IG91dHB1dGZpbGUyOg0KPiAgICAgICAgICBsb2dnZXIuZXJy b3IoDQo+ICAgICAgICAgICAgICAiVGhlIGZpcnN0ZmlsZSBhbmQgdGhlIHNlY29uZGZpbGUgY2Fu J3QgYmUgdGhlIHNhbWU6ICVzIiANCj4gJQ0KPiBvdXRwdXRmaWxlMSkNCj4gICAgICAgICAgcmFp c2UoRXhjZXB0aW9uKQ0KPiANCj4gLSAgICBpZiBub3Qgb3V0cHV0ZGlyOg0KPiAtICAgICAgICBv dXRwdXRkaXIgPSB3b3Jrc3BhY2UNCj4gLSAgICBlbGlmIG5vdCBvcy5wYXRoLmlzYWJzKG91dHB1 dGRpcik6DQo+IC0gICAgICAgIG91dHB1dGRpciA9IG9zLnBhdGguam9pbih3b3Jrc3BhY2UsIG91 dHB1dGRpcikNCj4gLQ0KPiAgICAgICMgQ3JlYXRlIGRpciBmb3IgdGhlIG91dHB1dCBmaWxlcw0K PiAgICAgIHRyeToNCj4gLSAgICAgICAgaWYgbm90IG91dHB1dGZpbGUxOg0KPiAtICAgICAgICAg ICAgb3V0cHV0ZmlsZTEgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKA0KPiAtICAgICAg ICAgICAgICAgIG91dHB1dGRpciwgInt9MSIuZm9ybWF0KG9zLnBhdGguYmFzZW5hbWUoaW5wdXRm aWxlKSkpKQ0KPiAtICAgICAgICBlbHNlOg0KPiAtICAgICAgICAgICAgb3V0cHV0ZmlsZTEgPSBv cy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG91dHB1dGRpciwNCj4gb3V0cHV0ZmlsZTEpKQ0K PiAtICAgICAgICBvdXRwdXRkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3V0cHV0ZmlsZTEpDQo+IC0g ICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRkaXIpOg0KPiAtICAgICAgICAgICAg b3MubWFrZWRpcnMob3V0cHV0ZGlyKQ0KPiANCj4gLSAgICAgICAgaWYgbm90IG91dHB1dGZpbGUy Og0KPiAtICAgICAgICAgICAgb3V0cHV0ZmlsZTIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5q b2luKA0KPiAtICAgICAgICAgICAgICAgIG91dHB1dGRpciwgInt9MiIuZm9ybWF0KG9zLnBhdGgu YmFzZW5hbWUoaW5wdXRmaWxlKSkpKQ0KPiAtICAgICAgICBlbHNlOg0KPiAtICAgICAgICAgICAg b3V0cHV0ZmlsZTIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG91dHB1dGRpciwNCj4g b3V0cHV0ZmlsZTIpKQ0KPiAtICAgICAgICBvdXRwdXRkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3V0 cHV0ZmlsZTIpDQo+IC0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRkaXIpOg0K PiAtICAgICAgICAgICAgb3MubWFrZWRpcnMob3V0cHV0ZGlyKQ0KPiArICAgICAgICBvdXRwdXRm aWxlMSA9IGdldG91dHB1dGZpbGVhYnMoaW5wdXRmaWxlLCBvdXRwdXRkaXIsIA0KPiArIG91dHB1 dGZpbGUxLA0KMSkNCj4gKyAgICAgICAgb3V0cHV0Zm9sZGVyID0gb3MucGF0aC5kaXJuYW1lKG91 dHB1dGZpbGUxKQ0KPiArICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0Zm9sZGVy KToNCj4gKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKG91dHB1dGZvbGRlcikNCj4gKw0KPiArICAg ICAgICBvdXRwdXRmaWxlMiA9IGdldG91dHB1dGZpbGVhYnMoaW5wdXRmaWxlLCBvdXRwdXRkaXIs IA0KPiArIG91dHB1dGZpbGUyLA0KMikNCj4gKyAgICAgICAgb3V0cHV0Zm9sZGVyID0gb3MucGF0 aC5kaXJuYW1lKG91dHB1dGZpbGUyKQ0KPiArICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo b3V0cHV0Zm9sZGVyKToNCj4gKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKG91dHB1dGZvbGRlcikN Cj4gKw0KPiAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gLSAgICAgICAgbG9nZ2VyLmVy cm9yKCJDYW4ndCBtYWtlIGRpcjogJXMiICUgb3V0cHV0ZGlyKQ0KPiArICAgICAgICBsb2dnZXIu ZXJyb3IoIkNhbid0IG1ha2UgZGlyOiAlcyIgJSBvdXRwdXRmb2xkZXIpDQo+ICAgICAgICAgIHJh aXNlKGUpDQo+IA0KPiAgICAgIGlmIHBvc2l0aW9uIDw9IDA6DQo+IC0gICAgICAgIGlmIG91dHB1 dGZpbGUyICE9IGlucHV0ZmlsZToNCj4gLSAgICAgICAgICAgIHNodXRpbC5jb3B5MihpbnB1dGZp bGUsIG91dHB1dGZpbGUyKQ0KPiArICAgICAgICBpZiBvdXRwdXRmaWxlMiAhPSBvcy5wYXRoLmFi c3BhdGgoaW5wdXRmaWxlKToNCj4gKyAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmFi c3BhdGgoaW5wdXRmaWxlKSwgb3V0cHV0ZmlsZTIpDQo+ICAgICAgICAgIHdpdGggb3BlbihvdXRw dXRmaWxlMSwgIndiIikgYXMgZm91dDoNCj4gICAgICAgICAgICAgIGZvdXQud3JpdGUoYicnKQ0K PiAgICAgIGVsc2U6DQo+ICAgICAgICAgIGlucHV0ZmlsZXNpemUgPSBnZXRGaWxlU2l6ZShpbnB1 dGZpbGUpDQo+ICAgICAgICAgIGlmIHBvc2l0aW9uID49IGlucHV0ZmlsZXNpemU6DQo+IC0gICAg ICAgICAgICBpZiBvdXRwdXRmaWxlMSAhPSBpbnB1dGZpbGU6DQo+IC0gICAgICAgICAgICAgICAg c2h1dGlsLmNvcHkyKGlucHV0ZmlsZSwgb3V0cHV0ZmlsZTEpDQo+ICsgICAgICAgICAgICBpZiBv dXRwdXRmaWxlMSAhPSBvcy5wYXRoLmFic3BhdGgoaW5wdXRmaWxlKToNCj4gKyAgICAgICAgICAg ICAgICBzaHV0aWwuY29weTIob3MucGF0aC5hYnNwYXRoKGlucHV0ZmlsZSksIG91dHB1dGZpbGUx KQ0KPiAgICAgICAgICAgICAgd2l0aCBvcGVuKG91dHB1dGZpbGUyLCAid2IiKSBhcyBmb3V0Og0K PiAgICAgICAgICAgICAgICAgIGZvdXQud3JpdGUoYicnKQ0KPiAgICAgICAgICBlbHNlOg0KPiAg ICAgICAgICAgICAgdHJ5Og0KPiAgICAgICAgICAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5t a2R0ZW1wKCkgZGlmZiAtLWdpdCANCj4gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi90ZXN0cy9T cGxpdC90ZXN0X3NwbGl0LnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vdGVzdHMvU3Bs aXQvdGVzdF9zcGxpdC5weQ0KPiBpbmRleCA4MmY3MWVjZjUzNzIuLmU0ODY2YmUzOTBiMyAxMDA2 NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vdGVzdHMvU3BsaXQvdGVzdF9zcGxp dC5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi90ZXN0cy9TcGxpdC90ZXN0X3Nw bGl0LnB5DQo+IEBAIC0xNiwzMCArMTYsMzEgQEAgaW1wb3J0IFNwbGl0LlNwbGl0IGFzIHNwICBp bXBvcnQgc3RydWN0IGFzIHN0DQo+IA0KPiANCj4gIGNsYXNzIFRlc3RTcGxpdCh1bml0dGVzdC5U ZXN0Q2FzZSk6DQo+ICAgICAgZGVmIHNldFVwKHNlbGYpOg0KPiAtICAgICAgICBzZWxmLldPUktT UEFDRSA9IHRlbXBmaWxlLm1rZHRlbXAoKQ0KPiAtICAgICAgICBzZWxmLmJpbmFyeV9maWxlID0g b3MucGF0aC5qb2luKHNlbGYuV09SS1NQQUNFLCAiQmluYXJ5LmJpbiIpDQo+ICsgICAgICAgIHNl bGYudG1wZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpDQo+ICsgICAgICAgIHNlbGYuYmluYXJ5X2Zp bGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50bXBkaXIsICJCaW5hcnkuYmluIikNCj4gICAgICAgICAg c2VsZi5jcmVhdGVfaW5wdXRmaWxlKCkNCj4gDQo+ICAgICAgZGVmIHRlYXJEb3duKHNlbGYpOg0K PiAtICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLldPUktTUEFDRSk6DQo+IC0gICAgICAg ICAgICBzaHV0aWwucm10cmVlKHNlbGYuV09SS1NQQUNFKQ0KPiArICAgICAgICBpZiBvcy5wYXRo LmV4aXN0cyhzZWxmLnRtcGRpcik6DQo+ICsgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYu dG1wZGlyKQ0KPiANCj4gICAgICBkZWYgdGVzdF9zcGxpdEZpbGVfcG9zaXRpb24oc2VsZik6DQo+ ICAgICAgICAgIHBvc2l0aW9uID0gWy0xLCAwLCAyNTYsIDUxMiwgNzAwLCAxMDI0LCAyMDQ4XQ0K PiAgICAgICAgICByZXN1bHQgPSBbKDAsIDEwMjQpLCAoMCwgMTAyNCksICgyNTYsIDc2OCksDQo+ ICAgICAgICAgICAgICAgICAgICAoNTEyLCA1MTIpLCAoNzAwLCAzMjQpLCAoMTAyNCwgMCksICgx MDI0LCAwKV0NCj4gKyAgICAgICAgb3V0cHV0Zm9sZGVyID0gc2VsZi50bXBkaXINCj4gICAgICAg ICAgZm9yIGluZGV4LCBwbyBpbiBlbnVtZXJhdGUocG9zaXRpb24pOg0KPiAgICAgICAgICAgICAg dHJ5Og0KPiAgICAgICAgICAgICAgICAgIHNwLnNwbGl0RmlsZShzZWxmLmJpbmFyeV9maWxlLCBw bykNCj4gICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gICAgICAgICAgICAg ICAgICBzZWxmLmFzc2VydFRydWUoRmFsc2UsIG1zZz0ic3BsaXRGaWxlIGZ1bmN0aW9uIA0KPiBl cnJvciIpDQo+IA0KPiAtICAgICAgICAgICAgb3V0cHV0MSA9IG9zLnBhdGguam9pbihzZWxmLldP UktTUEFDRSwgIkJpbmFyeS5iaW4xIikNCj4gLSAgICAgICAgICAgIG91dHB1dDIgPSBvcy5wYXRo LmpvaW4oc2VsZi5XT1JLU1BBQ0UsICJCaW5hcnkuYmluMiIpDQo+ICsgICAgICAgICAgICBvdXRw dXQxID0gb3MucGF0aC5qb2luKG91dHB1dGZvbGRlciwgIkJpbmFyeS5iaW4xIikNCj4gKyAgICAg ICAgICAgIG91dHB1dDIgPSBvcy5wYXRoLmpvaW4ob3V0cHV0Zm9sZGVyLCAiQmluYXJ5LmJpbjIi KQ0KPiAgICAgICAgICAgICAgd2l0aCBvcGVuKG91dHB1dDEsICJyYiIpIGFzIGYxOg0KPiAgICAg ICAgICAgICAgICAgIHNpemUxID0gbGVuKGYxLnJlYWQoKSkNCj4gICAgICAgICAgICAgIHdpdGgg b3BlbihvdXRwdXQyLCAicmIiKSBhcyBmMjoNCj4gICAgICAgICAgICAgICAgICBzaXplMiA9IGxl bihmMi5yZWFkKCkpDQo+IA0KPiBAQCAtNTEsNjEgKzUyLDY0IEBAIGNsYXNzIFRlc3RTcGxpdCh1 bml0dGVzdC5UZXN0Q2FzZSk6DQo+ICAgICAgICAgIHdpdGggb3BlbihzZWxmLmJpbmFyeV9maWxl LCAid2IiKSBhcyBmb3V0Og0KPiAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNTEyKToNCj4g ICAgICAgICAgICAgICAgICBmb3V0LndyaXRlKHN0LnBhY2soIjxIIiwgaSkpDQo+IA0KPiAgICAg IGRlZiB0ZXN0X3NwbGl0RmlsZV9vdXRwdXRmaWxlKHNlbGYpOg0KPiAtICAgICAgICBvdXRwdXQg PSBbTm9uZSwgIkJpbmFyeS5iaW4iLCAiQmluYXJ5MS5iaW4iLA0KciJvdXRwdXQvQmluYXJ5MS5i aW4iLA0KPiAtICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuV09SS1NQQUNFLCBy Im91dHB1dC9CaW5hcnkxLmJpbiIpXQ0KPiAtICAgICAgICBmb3IgbyBpbiBvdXRwdXQ6DQo+ICsg ICAgICAgIG91dHB1dCA9IFsNCj4gKyAgICAgICAgICAgIE5vbmUsDQo+ICsgICAgICAgICAgICAi QmluYXJ5LmJpbiIsDQo+ICsgICAgICAgICAgICAiQmluYXJ5MS5iaW4iLA0KPiArICAgICAgICAg ICAgciJvdXRwdXQvQmluYXJ5MS5iaW4iLA0KPiArICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRo KCByIm91dHB1dC9CaW5hcnkxLmJpbiIpDQo+ICsgICAgICAgICAgICBdDQo+ICsgICAgICAgIGV4 cGVjdGVkX291dHB1dCA9IFsNCj4gKyAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5wYXRoLmRp cm5hbWUoc2VsZi5iaW5hcnlfZmlsZSksIkJpbmFyeS5iaW4xIg0KKSwNCj4gKyAgICAgICAgICAg IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwiQmluYXJ5LmJpbiIpLA0KPiArICAgICAgICAgICAg b3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCJCaW5hcnkxLmJpbiIpLA0KPiArICAgICAgICAgICAg b3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLHIib3V0cHV0L0JpbmFyeTEuYmluIiksDQo+ICsgICAg ICAgICAgICBvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKCByIm91dHB1dC9CaW5hcnkxLmJp biIpKQ0KPiArICAgICAgICAgICAgXQ0KPiArICAgICAgICBmb3IgaW5kZXgsIG8gaW4gZW51bWVy YXRlKG91dHB1dCk6DQo+ICAgICAgICAgICAgICB0cnk6DQo+ICAgICAgICAgICAgICAgICAgc3Au c3BsaXRGaWxlKHNlbGYuYmluYXJ5X2ZpbGUsIDEyMywgb3V0cHV0ZmlsZTE9bykNCj4gICAgICAg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gICAgICAgICAgICAgICAgICBzZWxmLmFz c2VydFRydWUoRmFsc2UsIG1zZz0ic3BsaXRGaWxlIGZ1bmN0aW9uIGVycm9yIikNCj4gLSAgICAg ICAgICAgIGlmIG8gaXMgTm9uZToNCj4gLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUo b3MucGF0aC5leGlzdHMoDQo+IC0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxm LldPUktTUEFDRSwgIkJpbmFyeS5iaW4xIikpKQ0KPiAtICAgICAgICAgICAgZWxzZToNCj4gLSAg ICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzYWJzKG8pOg0KPiAtICAgICAgICAgICAgICAgICAg ICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobykpDQo+IC0gICAgICAgICAgICAgICAg ZWxzZToNCj4gLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhp c3RzKA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuV09SS1NQ QUNFLCBvKSkpDQo+IC0gICAgICAgICAgICBzZWxmLmNyZWF0ZV9pbnB1dGZpbGUoKQ0KPiANCj4g LSAgICAgICAgICAgIHRyeToNCj4gLSAgICAgICAgICAgICAgICBzcC5zcGxpdEZpbGUoc2VsZi5i aW5hcnlfZmlsZSwgMTIzLCBvdXRwdXRmaWxlMj1vKQ0KPiAtICAgICAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOg0KPiAtICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShGYWxzZSwg bXNnPSJzcGxpdEZpbGUgZnVuY3Rpb24gZXJyb3IiKQ0KPiAtICAgICAgICAgICAgaWYgbyBpcyBO b25lOg0KPiAtICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cygN Cj4gLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuV09SS1NQQUNFLCAiQmlu YXJ5LmJpbjIiKSkpDQo+IC0gICAgICAgICAgICBlbHNlOg0KPiAtICAgICAgICAgICAgICAgIGlm IG9zLnBhdGguaXNhYnMobyk6DQo+IC0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShvcy5wYXRoLmV4aXN0cyhvKSkNCj4gLSAgICAgICAgICAgICAgICBlbHNlOg0KPiAtICAgICAg ICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5XT1JLU1BBQ0UsIG8pKSkNCj4gKyAg ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhleHBlY3RlZF9vdXRwdXRb aW5kZXhdKSkNCj4gICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2lucHV0ZmlsZSgpDQo+IA0KPiAg ICAgIGRlZiB0ZXN0X3NwbGl0RmlsZV9vdXRwdXRmb2xkZXIoc2VsZik6DQo+IC0gICAgICAgIG91 dHB1dGZvbGRlciA9IFtOb25lLCAib3V0cHV0IiwgciJvdXRwdXQxL291dHB1dDIiLA0KPiAtICAg ICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuV09SS1NQQUNFLCAib3V0cHV0 IildDQo+IC0gICAgICAgIGZvciBvIGluIG91dHB1dGZvbGRlcjoNCj4gKyAgICAgICAgb3V0cHV0 Zm9sZGVyID0gWw0KPiArICAgICAgICAgICAgTm9uZSwNCj4gKyAgICAgICAgICAgICJvdXRwdXQi LA0KPiArICAgICAgICAgICAgciJvdXRwdXQxL291dHB1dDIiLA0KPiArICAgICAgICAgICAgb3Mu cGF0aC5hYnNwYXRoKCJvdXRwdXQiKSwNCj4gKyAgICAgICAgICAgICJvdXRwdXQiDQo+ICsgICAg ICAgICAgICBdDQo+ICsgICAgICAgIG91dHB1dCA9IFsNCj4gKyAgICAgICAgICAgIE5vbmUsDQo+ ICsgICAgICAgICAgICBOb25lLA0KPiArICAgICAgICAgICAgIkJpbmFyeTEuYmluIiwNCj4gKyAg ICAgICAgICAgIHIib3V0cHV0L0JpbmFyeTEuYmluIiwNCj4gKyAgICAgICAgICAgIG9zLnBhdGgu YWJzcGF0aCggciJvdXRwdXRfMS9CaW5hcnkxLmJpbiIpDQo+ICsgICAgICAgICAgICBdDQo+ICsN Cj4gKyAgICAgICAgZXhwZWN0ZWRfb3V0cHV0ID0gWw0KPiArICAgICAgICAgICAgb3MucGF0aC5q b2luKG9zLnBhdGguZGlybmFtZShzZWxmLmJpbmFyeV9maWxlKSwiQmluYXJ5LmJpbjEiDQopLA0K PiArICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCJvdXRwdXQiLCAiQmluYXJ5 LmJpbjEiKSwNCj4gKyAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgciJvdXRw dXQxL291dHB1dDIiICwNCiJCaW5hcnkxLmJpbiIpLA0KPiArICAgICAgICAgICAgb3MucGF0aC5q b2luKG9zLmdldGN3ZCgpLHIib3V0cHV0IiwgIm91dHB1dC9CaW5hcnkxLmJpbiIpLA0KPiArICAg ICAgICAgICAgb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aCggciJvdXRwdXQvQmluYXJ5MS5i aW4iKSkNCj4gKyAgICAgICAgICAgIF0NCj4gKw0KPiArICAgICAgICBmb3IgaW5kZXgsIG8gaW4g ZW51bWVyYXRlKG91dHB1dGZvbGRlcik6DQo+ICAgICAgICAgICAgICB0cnk6DQo+IC0gICAgICAg ICAgICAgICAgc3Auc3BsaXRGaWxlKHNlbGYuYmluYXJ5X2ZpbGUsIDEyMywgb3V0cHV0ZGlyPW8p DQo+ICsgICAgICAgICAgICAgICAgc3Auc3BsaXRGaWxlKHNlbGYuYmluYXJ5X2ZpbGUsIDEyMywN Cj4gb3V0cHV0ZGlyPW8sb3V0cHV0ZmlsZTE9b3V0cHV0W2luZGV4XSkNCj4gICAgICAgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRy dWUoRmFsc2UsIG1zZz0ic3BsaXRGaWxlIGZ1bmN0aW9uIA0KPiBlcnJvciIpDQo+IA0KPiAtICAg ICAgICAgICAgaWYgbyBpcyBOb25lOg0KPiAtICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShvcy5wYXRoLmV4aXN0cygNCj4gLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNl bGYuV09SS1NQQUNFLCAiQmluYXJ5LmJpbjEiKSkpDQo+IC0gICAgICAgICAgICBlbHNlOg0KPiAt ICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNhYnMobyk6DQo+IC0gICAgICAgICAgICAgICAg ICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cygNCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIG9zLnBhdGguam9pbihvLCAiQmluYXJ5LmJpbjEiKSkpDQo+IC0gICAgICAgICAgICAg ICAgZWxzZToNCj4gLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGgu ZXhpc3RzKA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuV09S S1NQQUNFLCBvLA0KPiAiQmluYXJ5LmJpbjEiKSkpDQo+ICsgICAgICAgICAgICBzZWxmLmFzc2Vy dFRydWUob3MucGF0aC5leGlzdHMoZXhwZWN0ZWRfb3V0cHV0W2luZGV4XSkpDQo+ICsgICAgICAg ICAgICBzZWxmLmNyZWF0ZV9pbnB1dGZpbGUoKQ0KPiANCj4gDQo+ICBpZiBfX25hbWVfXyA9PSAn X19tYWluX18nOg0KPiAgICAgIHVuaXR0ZXN0Lm1haW4oKQ0KPiAtLQ0KPiAyLjI5LjEud2luZG93 cy4xDQoNCg0KDQo=