From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.9060.1676439507310789314 for ; Tue, 14 Feb 2023 21:38:27 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=crIypnnR; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: yuwei.chen@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676439507; x=1707975507; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ELsQkQT/S+fN8qrCErkvBbWco2TrrwvVsQ3B2ZLEQF4=; b=crIypnnRpJK43JVAONZEaWY+0RLJvoKI5ObuYChvj4TMMpvVq4OOGPEh lGYLnt8TZ8T38FATgwAIPqvF9b+/WexQryLD2Web8313e0T7NiL/pIcEu 8Sh/Fd/EZFWgJfZZXEQ/lGkz5f60RgnFilQLrWqGwH9i92VVimSsPMqAw eHT1NMv1ciZV/Omn8DWobh8wvqVWx8R8jS/Obyw1QM1wH65OwnKx7Y6aN ynux67zMGnWBSVAjzZiuQaQTmN3AKKpwlKW3O124rkmgL345FJtUfXqg0 GfVCaDOcvYS3PwPOmeCpbqS0PqG9R4hbuhYM0Lq2YD6eiM/6fZ2Td1oVj w==; X-IronPort-AV: E=McAfee;i="6500,9779,10621"; a="329976891" X-IronPort-AV: E=Sophos;i="5.97,298,1669104000"; d="scan'208";a="329976891" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Feb 2023 21:38:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10621"; a="619304939" X-IronPort-AV: E=Sophos;i="5.97,298,1669104000"; d="scan'208";a="619304939" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga003.jf.intel.com with ESMTP; 14 Feb 2023 21:38:26 -0800 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Tue, 14 Feb 2023 21:38:26 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Tue, 14 Feb 2023 21:38:25 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Tue, 14 Feb 2023 21:38:25 -0800 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.42) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Tue, 14 Feb 2023 21:38:25 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DDco8erph4Acv7Mc6vJZcYGt+1ZODFs8wHyEgfQF3uvwYA6G5RODBEVsGUE0BW3TzQxYC55GaYYXv1ufxCRA6f8Ac+4mDDBKhXT4gWw71GIofBdZdgGM+OH6WZtbtAWjOme+Ut+QOVFb2hsz6MErCPHjz25ES8SFTakc5IC9eHXX3L4e6XON1qgSGwE7K3Y+CS2xlGn6aqrAdEZQ4FDVqJsj7BJlxoOvXJGQ/AHrjzP7kuvR5eqTW35tBRxOplbBGL4nYKWi+6G7UIdxIH6apsAfjByvHjefMHbQyGB7a5mh5rCx0rFWheYsLZ9ZH7PeC5X7VJtX3m/wZlVehJ1paQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ELsQkQT/S+fN8qrCErkvBbWco2TrrwvVsQ3B2ZLEQF4=; b=DoXeriIjvy0UnDXYznY4nZFoXDLct1J3j8lPK9krSw1EdcIs8DrfTFBe1GdeyKqe3UoDRm8dP6TCLcD1GqljS9EnzcZLhV9RfLXDEEJiLHtv8CKALblRp1ZbtcDTa3A6+RXnUdAb8mJrjil9POQpd0Qqoe8eJ6q01QLIXIT0NaXkppNNQgHLch3pmjiXqYQ5tzbAVPTQyBxIDJeV45lgM/3F2/A9U1eQ8p4I/vRb+ozHta5S1shk2C1JDxzKmNNLEcFpv7p89vR/tiWG8McSRj2AlQq+4ahiTq2RGJ+IY/RS66fhxHa4AbvzpvAtdVqChlD6xr5/bf4haJNAzZyVTg== 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 Received: from MW5PR11MB5906.namprd11.prod.outlook.com (2603:10b6:303:1a0::21) by DS7PR11MB6078.namprd11.prod.outlook.com (2603:10b6:8:86::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24; Wed, 15 Feb 2023 05:38:22 +0000 Received: from MW5PR11MB5906.namprd11.prod.outlook.com ([fe80::d610:f67a:d742:521b]) by MW5PR11MB5906.namprd11.prod.outlook.com ([fe80::d610:f67a:d742:521b%5]) with mapi id 15.20.6086.026; Wed, 15 Feb 2023 05:38:22 +0000 From: "Yuwei Chen" To: "Kinney, Michael D" , "devel@edk2.groups.io" , "Palomino Sosa, Guillermo A" CC: "Feng, Bob C" , "Gao, Liming" Subject: Re: [edk2-devel][PATCH V1 1/1] BaseTools: Generate compile information in build report Thread-Topic: [edk2-devel][PATCH V1 1/1] BaseTools: Generate compile information in build report Thread-Index: AQHZOqFPgO4Xf0lJDE60jEmtZdLsXa7PWLqggAARIoCAABkB0A== Date: Wed, 15 Feb 2023 05:38:21 +0000 Message-ID: References: <320a45f265969df1a108777713e5ac954a75be56.1675735858.git.guillermo.a.palomino.sosa@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5906:EE_|DS7PR11MB6078:EE_ x-ms-office365-filtering-correlation-id: ac72939c-55e8-440b-085d-08db0f16d9b2 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1Jci8SUXx81Sy6yVZY8XaJPu2y3daUdnakP7VmIMH/fEM8K4mjwwi1MXnvL7cOS0xG7e0LdBahMfNn6YpdrcZy0BphXJ99qPD6hs9k/8KRARn7JyPTfSdKMEQFsiz1uFerZfsKLV/CEQJsCIp/6xQj5oWf0Q0u1zt17l1DfLBpoLvz+y3FsgJQtCgP7n+jpUC+CVKtck9oPODk7+j/WyRPbiIZhwmf4JblA8mXjXQL8w8nhqV5GNIQ/m6QrKH+UIcSCBwi2pMPD3mmg8v3JU5iyt1Uto7wrmseXTry5gl2hDwx7Wik5Lm75jZ40jylkVsvTQ7MkVKQEz++vRyfXhaMT9E/u4beBz/pRzubuY9SHhUhHSugYeN7iunJ5Z7jtubaX5+VYUbFNcR9BIB4IeSdQzEcn5C+RdWiifku1GgUmFW4G/Y8jDM/cuLfmX8PH/h5KV6AB6WLKfvP6OoCZNYA+O0m9gc8enESKF+xrn0nEFoUUH7YmC9d4zOl8uVouttZPUlKlCcVOIPOLpLelocYpPKH0rp4kRphLAHt/0W+u6YesoZ28PH6gDliNA/2YG/hor2LbqU16DqSShF2YYamiDy1SNAAEJ2Nly3Bnk4HUitG1ynFdyPEaDYa8sqbgLiChlVC8sLhv4rTLKJNUakGyioYg+4qsiNUDXeP4fumTl39Y/NQ8jZbPm4EaUDFZp453PKye/lcpOBsyLffDTaVgUj5XU6medLXfNOu/syVo= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5906.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(396003)(39860400002)(366004)(376002)(136003)(346002)(451199018)(54906003)(316002)(55016003)(6636002)(110136005)(41300700001)(83380400001)(26005)(8936002)(186003)(9686003)(53546011)(5660300002)(122000001)(6506007)(86362001)(30864003)(52536014)(478600001)(66446008)(66476007)(66946007)(8676002)(64756008)(76116006)(38070700005)(82960400001)(38100700002)(66556008)(71200400001)(4326008)(33656002)(2906002)(966005)(7696005)(66899018);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?V3dvQzdpK3NQb3lQbFVwRVpGN2phdmxMN0pKOE1WUTdFQ2E3V0Q2eHBqL1ht?= =?utf-8?B?T0NoN0NNTDVxVzhZcGRnVlJmc0pHVmp2bmNaT1h6UFdEeTJzMnlnaFIrOXJD?= =?utf-8?B?M1Jyc2k5a3U0dlF4TnI1NXpPNnhTOEtZUmV1Ulo4WDcrbHVQejA5Tk1EZng5?= =?utf-8?B?SGJvUUE1dmtNWVlUNEkvRGdiaWxHUWEyRkVlMHM1elFlNUs5QXIwNkdDSHA2?= =?utf-8?B?NTFZM0JvNm5UVnllbys4bFRybVowTXFBTGN4aWFhSjByNEtTbXlXRUxHbnNp?= =?utf-8?B?aDNHeTFXU2RhWjJoWkErSUtlTkdMaG52UHhld1ZERWUxS1JRUkl5WGorNUd0?= =?utf-8?B?cnJodG5JQUpzMXN4bFRjUU9FTzZDa21vek8vK1VtYURZZjYxWVFUTmxXb08w?= =?utf-8?B?cWhHaG1CN3c2MTNnYUZJMVUvdndWTVhzQjlSV2ZhMVgxeWdMNVkrTlJML1gv?= =?utf-8?B?UUZPbEQ4RWRVTWt1c0R6cHB2c1Q3ak9tckc2dy9laGFkWEFnZFNYVlRWOWp3?= =?utf-8?B?OW9uU0lHYWZhNm9NMExNZHA5NERqa1htT1FUcGtyQ1JiOGQ4OFlpNXo0aVJZ?= =?utf-8?B?ajJLLy94OGt5WVlSWlcyMW5LUEY1MFVCR0JMOVlRS005enM1OUxHemswTHMw?= =?utf-8?B?UEJjU0h2SWNpMldOdUt0azRDcm1WNEc4aXE4dzlHODdYbzFFcjRJVnZLeG9K?= =?utf-8?B?WStDS2VYcVdSN1Jza01wVU41dzh0eFBjdlVQMHVBRytObGlkakFTT0J2ZXRj?= =?utf-8?B?aXRWRWxaa1k5djZxUnRuQTErNmpsalQzb2lOc3N0K0gveE9SMXZ2MXBMdkRN?= =?utf-8?B?V09JaExNcDJLbytpcllGRUswNmk2ZlAwbU4zUS9mZVhET2xGbURTWkNYTjVw?= =?utf-8?B?eGxUMEk3NHpRMDhjNlRwcjRNemFtTE5tQUZRUFhkaHlKMWZqb0IzYlAvbTIr?= =?utf-8?B?b3NuVmFPK3hQWkFxM3pNcHFFeElsYzU1N3FBV1dLdkZmbzl2aXNHY3I3SGxZ?= =?utf-8?B?b1BJUE9WS3RHdUw4dCtjMUp1R1NHMFRXUEgzZ0NCSmJNTHFwVDV3eTBFT1N6?= =?utf-8?B?NmNSbU1KYU1RNFl2cjM0ZU83UHVhdy85VmxOM3NUbnBJZ0xodFI5MGNSc0Mr?= =?utf-8?B?bElGVU9Gb2JpVGp6b012MGs3RmhrSzUraDYwSEp1N0cyQ2pvM0xUTUNCMGhT?= =?utf-8?B?KysvN3IwOSt3eld4UVRESXF6S05VQXI2YVBBbmRCQTZGNm0yQzhsZzlicHVU?= =?utf-8?B?SFNicW9CVVZSUzJYUzEzVUc3dE01OSs4SUY3aFNkWUJ0c1FUY3NSbVlvUnM2?= =?utf-8?B?OFBJV0dYZlQ3aDZUb081bzErcjNqNHRpZi9NMkw2TlZoNU9tcVF1NzZ6SEZl?= =?utf-8?B?UnNFaHh6aTNwZzlhbnN0VFZ5V0hVdEI2Ynl6MmVQWi9rdStqQzUxK3MzcHo3?= =?utf-8?B?bWM1S3ZIeWN6akY4Q0EvYXF0eE1qZlFxaFllUEpoVkZESGhrdEdBamt3ZXVj?= =?utf-8?B?ck55REJhQ1IxY2xVVmp1SUhHcGlVQ1VGWFZ5MEpKYS9wdFZ4K2tqYW5ERURk?= =?utf-8?B?L01xd3N1Nk02ZzV4ZiswY0JXMlBhR1dRb09sM3BBV3MwUkxvL1R0M1RremFY?= =?utf-8?B?MG5VNGNieng4cSt6NG1pc3NidTR3K2JiVmUydnQyOW5YN241V3RhMWVNUkVo?= =?utf-8?B?aGJNeFNaNmZWamFOcDZpWFptZG44NFNPOFNXTFpjY0Fhd2Uwc1BJT2lxd3p2?= =?utf-8?B?SDAxLzNCTkl5MWUzTmhGSFk5c2wzUFlVSFEyWEVBc3psdExIZTN3WjBRNGRm?= =?utf-8?B?b0tXdGpmemtjRVpDV3d0S3F2NWxhclZjOE5oSjROWXNaeHpHMlNmdVJMZG1O?= =?utf-8?B?cnlDaHc4QWxPUFlrTXJlYmp3cGp1TXhJbG9RUTQzclhnT0FxcTZwUXhCWm1r?= =?utf-8?B?MXFoZXhCbUltRmNqNmYrbHZubElPNUJVL2MyQmZnWmFJYXZTUlpEbEtXTXNj?= =?utf-8?B?dXhtZnNZUVlYRkFkOTZvWGlneDg2S2RpNDJDL0QvMjVIVG5QU1J6UGFOa3ox?= =?utf-8?B?R09KK1ZJYVFOaTJRL0xMZHMwaWpFRGpYZXV0b0tnMGd6azFLL1lSQWEyZXFx?= =?utf-8?Q?hk5b8jopSkWXDrm6zvTcuNF2P?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5906.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac72939c-55e8-440b-085d-08db0f16d9b2 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Feb 2023 05:38:21.8921 (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: 1cAF2tWFbmA+zB7lqBaiWe3N8g7uJ+Ftu9crNBRe+kq4Zx8mXk79MLzgv+ybJLOAOPubf0SMeRv6AwV7Uf7eKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR11MB6078 Return-Path: yuwei.chen@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWlrZSwgdGhhbmtzIGZvciByZW1pbmRlci4NCg0KSGkgV2lsbHksIGN1cnJlbnRseSwgQmFz ZVRvb2xzIHJlbGF0ZWQgY2hhbmdlcyB3aWxsIGJlIGltcGxlbWVudGVkIG9uIHRoZSBlZGsyLWJh c2V0b29scyByZXBvLiBQbGVhc2Ugc2VuZCB0aGUgcGF0Y2ggYmFzZWQgb24gdGhlIGVkazItYmFz ZXRvb2xzIHJlcG9+IA0KDQpUaGFua3MsDQpDaHJpc3RpbmUNCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgRmVicnVhcnkgMTUsIDIwMjMgMTE6NDMgQU0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5A aW50ZWwuY29tPjsNCj4gUGFsb21pbm8gU29zYSwgR3VpbGxlcm1vIEEgPGd1aWxsZXJtby5hLnBh bG9taW5vLnNvc2FAaW50ZWwuY29tPg0KPiBDYzogRmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50 ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEtpbm5l eSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gU3ViamVjdDog UkU6IFtlZGsyLWRldmVsXVtQQVRDSCBWMSAxLzFdIEJhc2VUb29sczogR2VuZXJhdGUgY29tcGls ZQ0KPiBpbmZvcm1hdGlvbiBpbiBidWlsZCByZXBvcnQNCj4gDQo+IEhhcyB0aGlzIGJlZW4gcmV2 aWV3ZWQgZm9yIGVkazItYmFzZXRvb2xzIHJlcG8/DQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRl dmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgWXV3ZWkNCj4gPiBDaGVuDQo+ID4gU2Vu dDogVHVlc2RheSwgRmVicnVhcnkgMTQsIDIwMjMgNjo0NCBQTQ0KPiA+IFRvOiBQYWxvbWlubyBT b3NhLCBHdWlsbGVybW8gQSA8Z3VpbGxlcm1vLmEucGFsb21pbm8uc29zYUBpbnRlbC5jb20+Ow0K PiA+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5n QGludGVsLmNvbT47IEdhbywgTGltaW5nDQo+ID4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4N Cj4gPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdW1BBVENIIFYxIDEvMV0gQmFzZVRvb2xzOiBH ZW5lcmF0ZSBjb21waWxlDQo+ID4gaW5mb3JtYXRpb24gaW4gYnVpbGQgcmVwb3J0DQo+ID4NCj4g PiBSZXZpZXdlZC1ieTogWXV3ZWkgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQo+ID4NCj4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBQYWxvbWlubyBTb3Nh LCBHdWlsbGVybW8gQQ0KPiA+ID4gPGd1aWxsZXJtby5hLnBhbG9taW5vLnNvc2FAaW50ZWwuY29t Pg0KPiA+ID4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgNywgMjAyMyAxMTowNyBBTQ0KPiA+ID4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiBDYzogRmVuZywgQm9iIEMgPGJvYi5jLmZl bmdAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPiA+IDxnYW9saW1pbmdAYnlvc29mdC5jb20u Y24+OyBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwuY29tPg0KPiA+ID4gU3ViamVj dDogW2VkazItZGV2ZWxdW1BBVENIIFYxIDEvMV0gQmFzZVRvb2xzOiBHZW5lcmF0ZSBjb21waWxl DQo+ID4gPiBpbmZvcm1hdGlvbiBpbiBidWlsZCByZXBvcnQNCj4gPiA+DQo+ID4gPiBSRUY6aHR0 cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yODUwDQo+ID4gPg0K PiA+ID4gQWRkICItWSBSRVBPUlRfSU5GTyIgb3B0aW9uIHRvIGJ1aWxkIGNvbW1hbmQgdG8gZ2Vu ZXJhdGUgY29tcGlsZQ0KPiA+ID4gaW5mb3JtYXRpb24gYXMgcGFydCBvZiBCdWlsZFJlcG9ydC4N Cj4gPiA+IFRoaXMgb3B0aW9uIGdlbmVyYXRlcyBmaWxlcyB0byBiZSB1c2VkIGJ5IGV4dGVybmFs IHRvb2xzIGFzIElERSdzIHRvDQo+ID4gPiBlbmhhbmNlIGZ1bmN0aW9uYWxpdHkuDQo+ID4gPiBG aWxlcyBhcmUgY3JlYXRlZCBpbnNpZGUgYnVpbGQgZm9sZGVyOg0KPiA+ID4gPEJ1aWxkPi88QnVp bGRUYXJnZXQ+LzxUb29sQ2hhaW4+L0NvbXBpbGVJbmZvDQo+ID4gPg0KPiA+ID4gRmlsZXMgY3Jl YXRlZDoNCj4gPiA+ICogY29tcGlsZV9jb21tYW5kcy5qc29uIC0gQ29tcGlsYXRpb24gRGF0YWJh c2UuIFRvIGJlIHVzZWQgYnkgSURFJ3MNCj4gPiA+ICAgdG8gZW5hYmxlIGFkdmFuY2UgZmVhdHVy ZXMNCj4gPiA+ICogY3Njb3BlLmZpbGVzIC0gTGlzdCBvZiBmaWxlcyB1c2VkIGluIGNvbXBpbGF0 aW9uLiBVc2VkIGJ5IENzY29wZSB0byBwYXJzZQ0KPiA+ID4gICBDIGNvZGUgYW5kIHByb3ZpZGUg YnJvd3NlIGZ1bmN0aW9uYWxpdHkuDQo+ID4gPiAqIG1vZHVsZV9yZXBvcnQuanNvbiAtIE1vZHVs ZSBkYXRhIGZvcm0gYnVpbGRSZXBvcnQgaW4gSnNvbiBmb3JtYXQuDQo+ID4gPg0KPiA+ID4gU2ln bmVkLW9mZi1ieTogR3VpbGxlcm1vIEFudG9uaW8gUGFsb21pbm8gU29zYQ0KPiA+ID4gPGd1aWxs ZXJtby5hLnBhbG9taW5vLnNvc2FAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vYnVpbGQvQnVpbGRSZXBvcnQucHkgIHwgMTM5DQo+ID4gPiArKysr KysrKysrKysrKysrKysrLQ0KPiA+ID4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL2J1aWxkL2J1 aWxkb3B0aW9ucy5weSB8ICAgNCArLQ0KPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTQwIGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL2J1aWxkL0J1aWxkUmVwb3J0LnB5DQo+ID4gPiBiL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL2J1aWxkL0J1aWxkUmVwb3J0LnB5DQo+ID4gPiBpbmRleCA0Njg3NzI5 MzBjLi4zM2I0M2Q0NzFmIDEwMDY0NA0KPiA+ID4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vYnVpbGQvQnVpbGRSZXBvcnQucHkNCj4gPiA+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL2J1aWxkL0J1aWxkUmVwb3J0LnB5DQo+ID4gPiBAQCAtMTAsNiArMTAsOCBAQA0KPiA+ID4N Cj4gPiA+ICAjIyBJbXBvcnQgTW9kdWxlcw0KPiA+ID4gICMNCj4gPiA+ICtpbXBvcnQganNvbg0K PiA+ID4gK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aA0KPiA+ID4gIGltcG9ydCBDb21tb24uTG9u Z0ZpbGVQYXRoT3MgYXMgb3MNCj4gPiA+ICBpbXBvcnQgcmUNCj4gPiA+ICBpbXBvcnQgcGxhdGZv cm0NCj4gPiA+IEBAIC00MSw2ICs0Myw3IEBAIGZyb20gQ29tbW9uLkRhdGFUeXBlIGltcG9ydCAq ICBpbXBvcnQNCj4gY29sbGVjdGlvbnMNCj4gPiA+IGZyb20gQ29tbW9uLkV4cHJlc3Npb24gaW1w b3J0ICogIGZyb20gR2VuRmRzLkFwcmlvcmlTZWN0aW9uIGltcG9ydA0KPiA+ID4gRFhFX0FQUklP UklfR1VJRCwgUEVJX0FQUklPUklfR1VJRA0KPiA+ID4gK2Zyb20gQXV0b0dlbi5JbmNsdWRlc0F1 dG9HZW4gaW1wb3J0IEluY2x1ZGVzQXV0b0dlbg0KPiA+ID4NCj4gPiA+ICAjIyBQYXR0ZXJuIHRv IGV4dHJhY3QgY29udGVudHMgaW4gRURLIERYUyBmaWxlcw0KPiA+ID4gZ0R4c0RlcGVuZGVuY3lQ YXR0ZXJuID0NCj4gPiA+IHJlLmNvbXBpbGUociJERVBFTkRFTkNZX1NUQVJUKC4rKURFUEVOREVO Q1lfRU5EIiwgcmUuRE9UQUxMKQ0KPiBAQCAtDQo+ID4gPiAyMjk4LDYgKzIzMDEsMTAgQEAgY2xh c3MgQnVpbGRSZXBvcnQob2JqZWN0KToNCj4gPiA+ICAgICAgZGVmIEdlbmVyYXRlUmVwb3J0KHNl bGYsIEJ1aWxkRHVyYXRpb24sIEF1dG9HZW5UaW1lLCBNYWtlVGltZSwNCj4gPiA+IEdlbkZkc1Rp bWUpOg0KPiA+ID4gICAgICAgICAgaWYgc2VsZi5SZXBvcnRGaWxlOg0KPiA+ID4gICAgICAgICAg ICAgIHRyeToNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgaWYgIkNPTVBJTEVfSU5G TyIgaW4gc2VsZi5SZXBvcnRUeXBlOg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5H ZW5lcmF0ZUNvbXBpbGVJbmZvKCkNCj4gPiA+ICsNCj4gPiA+ICAgICAgICAgICAgICAgICAgRmls ZSA9IFtdDQo+ID4gPiAgICAgICAgICAgICAgICAgIGZvciAoV2EsIE1hTGlzdCkgaW4gc2VsZi5S ZXBvcnRMaXN0Og0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1SZXBvcnQoV2Es IE1hTGlzdCwNCj4gPiA+IHNlbGYuUmVwb3J0VHlwZSkuR2VuZXJhdGVSZXBvcnQoRmlsZSwgQnVp bGREdXJhdGlvbiwgQXV0b0dlblRpbWUsDQo+ID4gPiBNYWtlVGltZSwgR2VuRmRzVGltZSwgc2Vs Zi5SZXBvcnRUeXBlKSBAQCAtMjMxMCw3ICsyMzE3LDEzNyBAQA0KPiBjbGFzcw0KPiA+ID4gQnVp bGRSZXBvcnQob2JqZWN0KToNCj4gPiA+ICAgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9y KCJCdWlsZFJlcG9ydCIsIENPREVfRVJST1IsICJVbmtub3duDQo+ID4gPiBmYXRhbCBlcnJvciB3 aGVuIGdlbmVyYXRpbmcgYnVpbGQgcmVwb3J0IiwNCj4gPiA+IEV4dHJhRGF0YT1zZWxmLlJlcG9y dEZpbGUsDQo+ID4gPiBSYWlzZUVycm9yPUZhbHNlKQ0KPiA+ID4gICAgICAgICAgICAgICAgICBF ZGtMb2dnZXIucXVpZXQoIihQeXRob24gJXMgb24gJXNcbiVzKSIgJQ0KPiA+ID4gKHBsYXRmb3Jt LnB5dGhvbl92ZXJzaW9uKCksIHN5cy5wbGF0Zm9ybSwgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkp DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4gKyAgICAjIw0KPiA+ID4gKyAgICAjIEdlbmVyYXRlcyBj b21waWxlIGRhdGEgZmlsZXMgdG8gYmUgdXNlZCBieSBleHRlcm5hbCB0b29scy4NCj4gPiA+ICsg ICAgIyBDb21waWxlIGluZm9ybWF0aW9uIHdpbGwgYmUgZ2VuZXJhdGVkIGluDQo+ID4gPiA8QnVp bGQ+LzxCdWlsZFRhcmdldD4vPFRvb2xDaGFpbj4vQ29tcGlsZUluZm8NCj4gPiA+ICsgICAgIyBG aWxlcyBnZW5lcmF0ZWQ6IGNvbXBpbGVfY29tbWFuZHMuanNvbiwgY3Njb3BlLmZpbGVzLA0KPiA+ ID4gbW9kdWxlc19yZXBvcnQuanNvbg0KPiA+ID4gKyAgICAjDQo+ID4gPiArICAgICMgQHBhcmFt IHNlbGYgICAgICAgICAgICBUaGUgb2JqZWN0IHBvaW50ZXINCj4gPiA+ICsgICAgIw0KPiA+ID4g KyAgICBkZWYgR2VuZXJhdGVDb21waWxlSW5mbyhzZWxmKToNCj4gPiA+ICsgICAgICAgIHRyeToN Cj4gPiA+ICsgICAgICAgICAgICAjIExpc3RzIGZvciB0aGUgb3V0cHV0IGVsZW1lbnRzDQo+ID4g PiArICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kcyA9IFtdDQo+ID4gPiArICAgICAgICAgICAg dXNlZF9maWxlcyA9IHNldCgpDQo+ID4gPiArICAgICAgICAgICAgbW9kdWxlX3JlcG9ydCA9IFtd DQo+ID4gPiArDQo+ID4gPiArICAgICAgICAgICAgZm9yIChXYSwgTWFMaXN0KSBpbiBzZWxmLlJl cG9ydExpc3Q6DQo+ID4gPiArICAgICAgICAgICAgICAgICMgT2J0YWluIGxpc3Qgb2YgYWxsIHBy b2Nlc3NlZCBXb3Jrc3BhY2UgZmlsZXMNCj4gPiA+ICsgICAgICAgICAgICAgICAgZm9yIGZpbGVf cGF0aCBpbiBXYS5fR2V0TWV0YUZpbGVzKFdhLkJ1aWxkVGFyZ2V0LA0KPiBXYS5Ub29sQ2hhaW4p Og0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgdXNlZF9maWxlcy5hZGQoZmlsZV9wYXRoKQ0K PiA+ID4gKw0KPiA+ID4gKyAgICAgICAgICAgICAgICBmb3IgYXV0b0dlbiBpbiBXYS5BdXRvR2Vu T2JqZWN0TGlzdDoNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICMgTG9vcCB0 aHJvdWdoIGFsbCBtb2R1bGVzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBmb3IgbW9kdWxl IGluIChhdXRvR2VuLkxpYnJhcnlBdXRvR2VuTGlzdCArDQo+ID4gPiBhdXRvR2VuLk1vZHVsZUF1 dG9HZW5MaXN0KToNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB1c2Vk X2ZpbGVzLmFkZChtb2R1bGUuTWV0YUZpbGUuUGF0aCkNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAjIE1haW4gZWxlbWVudHMgb2YgbW9kdWxlIHJlcG9ydA0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9yZXBvcnRfZGF0YSA9IHt9DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX3JlcG9ydF9kYXRhWyJOYW1lIl0gPSBtb2R1 bGUuTmFtZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9yZXBvcnRfZGF0 YVsiQXJjaCJdID0gbW9kdWxlLkFyY2gNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBt b2R1bGVfcmVwb3J0X2RhdGFbIlBhdGgiXSA9IG1vZHVsZS5NZXRhRmlsZS5QYXRoDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX3JlcG9ydF9kYXRhWyJHdWlkIl0gPSBtb2R1 bGUuR3VpZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9yZXBvcnRfZGF0 YVsiQnVpbGRUeXBlIl0gPSBtb2R1bGUuQnVpbGRUeXBlDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgbW9kdWxlX3JlcG9ydF9kYXRhWyJJc0xpYnJhcnkiXSA9IG1vZHVsZS5Jc0xpYnJh cnkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcmVwb3J0X2RhdGFbIlNv dXJjZURpciJdID0gbW9kdWxlLlNvdXJjZURpcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIG1vZHVsZV9yZXBvcnRfZGF0YVsiRmlsZXMiXSA9IFtdDQo+ID4gPiArDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgIyBGaWxlcyB1c2VkIGJ5IG1vZHVsZQ0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGZvciBkYXRhX2ZpbGUgaW4gbW9kdWxlLlNvdXJjZUZpbGVMaXN0 Og0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcmVwb3J0X2RhdGFb IkZpbGVzIl0uYXBwZW5kKHsiTmFtZSI6DQo+ID4gPiArIGRhdGFfZmlsZS5OYW1lLCAiUGF0aCI6 IGRhdGFfZmlsZS5QYXRofSkNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAjIExpYnJhcmllcyB1c2VkIGJ5IG1vZHVsZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIG1vZHVsZV9yZXBvcnRfZGF0YVsiTGlicmFyaWVzIl0gPSBbXQ0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGZvciBkYXRhX2xpYnJhcnkgaW4gbW9kdWxlLkxpYnJhcnlBdXRvR2Vu TGlzdDoNCj4gPiA+ICsNCj4gPiA+ICsgbW9kdWxlX3JlcG9ydF9kYXRhWyJMaWJyYXJpZXMiXS5h cHBlbmQoeyJQYXRoIjoNCj4gPiA+ICsgZGF0YV9saWJyYXJ5Lk1ldGFGaWxlLlBhdGh9KQ0KPiA+ ID4gKw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICMgUGFja2FnZXMgdXNlZCBieSBt b2R1bGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcmVwb3J0X2RhdGFb IlBhY2thZ2VzIl0gPSBbXQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkYXRh X3BhY2thZ2UgaW4gbW9kdWxlLlBhY2thZ2VMaXN0Og0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtb2R1bGVfcmVwb3J0X2RhdGFbIlBhY2thZ2VzIl0uYXBwZW5kKHsiUGF0aCI6 DQo+ID4gPiBkYXRhX3BhY2thZ2UuTWV0YUZpbGUuUGF0aCwgIkluY2x1ZGVzIjogW119KQ0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluY2x1ZGVzIHBhdGggdXNlZCBpbiBw YWNrYWdlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkYXRhX3BhY2th Z2VfaW5jbHVkZSBpbiBkYXRhX3BhY2thZ2UuSW5jbHVkZXM6DQo+ID4gPiArDQo+ID4gPiArIG1v ZHVsZV9yZXBvcnRfZGF0YVsiUGFja2FnZXMiXVstDQo+ID4gPiAxXVsiSW5jbHVkZXMiXS5hcHBl bmQoZGF0YV9wYWNrYWdlX2luYw0KPiA+ID4gKyBsdWRlLlBhdGgpDQo+ID4gPiArDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgIyBQUEkncyBpbiBtb2R1bGUNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBtb2R1bGVfcmVwb3J0X2RhdGFbIlBQSSJdID0gW10NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGF0YV9wcGkgaW4gbW9kdWxlLlBwaUxpc3Qua2V5 cygpOg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcmVwb3J0X2Rh dGFbIlBQSSJdLmFwcGVuZCh7Ik5hbWUiOg0KPiA+ID4gKyBkYXRhX3BwaSwgIkd1aWQiOiBtb2R1 bGUuUHBpTGlzdFtkYXRhX3BwaV19KQ0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICMgUHJvdG9jb2wncyBpbiBtb2R1bGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBtb2R1bGVfcmVwb3J0X2RhdGFbIlByb3RvY29sIl0gPSBbXQ0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGZvciBkYXRhX3Byb3RvY29sIGluIG1vZHVsZS5Qcm90b2NvbExpc3Qu a2V5cygpOg0KPiA+ID4gKw0KPiA+ID4gKyBtb2R1bGVfcmVwb3J0X2RhdGFbIlByb3RvY29sIl0u YXBwZW5kKHsiTmFtZSI6IGRhdGFfcHJvdG9jb2wsDQo+ICJHdWlkIjoNCj4gPiA+ICsgbW9kdWxl LlByb3RvY29sTGlzdFtkYXRhX3Byb3RvY29sXX0pDQo+ID4gPiArDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgIyBQQ0QncyBpbiBtb2R1bGUNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBtb2R1bGVfcmVwb3J0X2RhdGFbIlBjZCJdID0gW10NCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBmb3IgZGF0YV9wY2QgaW4gbW9kdWxlLkxpYnJhcnlQY2RMaXN0Og0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcmVwb3J0X2RhdGFbIlBjZCJd LmFwcGVuZCh7IlNwYWNlIjoNCj4gPiA+IGRhdGFfcGNkLlRva2VuU3BhY2VHdWlkQ05hbWUsDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiTmFtZSI6IGRhdGFfcGNkLlRva2VuQ05hbWUsDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFs dWUiOiBkYXRhX3BjZC5Ub2tlblZhbHVlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkd1aWQiOg0KPiBkYXRhX3Bj ZC5Ub2tlblNwYWNlR3VpZFZhbHVlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRhdHVtVHlwZSI6IGRhdGFfcGNk LkRhdHVtVHlwZSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJUeXBlIjogZGF0YV9wY2QuVHlwZSwNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJEZWZhdWx0VmFsdWUiOg0KPiBkYXRhX3BjZC5EZWZhdWx0VmFsdWV9KQ0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICMgQWRkIG1vZHVsZSB0byByZXBvcnQNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBtb2R1bGVfcmVwb3J0LmFwcGVuZChtb2R1bGVfcmVwb3J0X2Rh dGEpDQo+ID4gPiArDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIGZp bGUgZGVwZW5kZW5jaWVzIHRvIHVzZWQgZmlsZXMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBpbmNsdWRlc19hdXRvZ2VuID0NCj4gPiA+ICsgSW5jbHVkZXNBdXRvR2VuKG1vZHVsZS5N YWtlRmlsZURpciwNCj4gPiA+IG1vZHVsZSkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmb3IgZGVwIGluIGluY2x1ZGVzX2F1dG9nZW4uRGVwc0NvbGxlY3Rpb246DQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfZmlsZXMuYWRkKGRlcCkNCj4gPiA+ICsNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpbmNfZmxhZyA9ICItSSIgIyBEZWZhdWx0IGlu Y2x1ZGUgZmxhZw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1vZHVsZS5CdWls ZFJ1bGVGYW1pbHkgPT0gVEFCX0NPTVBJTEVSX01TRlQ6DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluY19mbGFnID0gIi9JIg0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGZvciBzb3VyY2UgaW4gbW9kdWxlLlNvdXJjZUZpbGVMaXN0Og0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkX2ZpbGVzLmFkZChzb3VyY2UuUGF0aCkN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kID0ge30N Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlLkV4dCBpbiBbIi5j IiwgIi5jYyIsICIuY3BwIl06DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIGNv bXBpbGUgY29tbWFuZCBmb3IgZWFjaCBjIGZpbGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bXBpbGVfY29tbWFuZFsiZmlsZSJdID0gc291cmNlLlBhdGgNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbXBpbGVfY29tbWFuZFsiZGlyZWN0b3J5Il0gPSBzb3VyY2Uu RGlyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9jb21tYW5k ID0NCj4gPiA+IG1vZHVsZS5CdWlsZFJ1bGVzW3NvdXJjZS5FeHRdLkNvbW1hbmRMaXN0WzBdDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9jb21tYW5kX3Zhcmlh YmxlcyA9DQo+ID4gPiArIHJlLmZpbmRhbGwociJcJFwoKC4qPylcKSIsDQo+ID4gPiBidWlsZF9j b21tYW5kKQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZhciBp biBidWlsZF9jb21tYW5kX3ZhcmlhYmxlczoNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2YXJfdG9rZW5zID0gdmFyLnNwbGl0KCJfIikNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfbWFpbiA9IHZhcl90b2tlbnNbMF0NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsZW4odmFyX3Rva2Vu cykgPT0gMToNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dmFyX3ZhbHVlID0NCj4gbW9kdWxlLkJ1aWxkT3B0aW9uW3Zhcl9tYWluXVsiUEFUSCJdDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX3ZhbHVlID0NCj4gPiA+IG1v ZHVsZS5CdWlsZE9wdGlvblt2YXJfbWFpbl1bdmFyX3Rva2Vuc1sxXV0NCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9jb21tYW5kID0NCj4gPiA+ICsgYnVp bGRfY29tbWFuZC5yZXBsYWNlKGYiJCh7dmFyfSkiLA0KPiA+ID4gdmFyX3ZhbHVlKQ0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZmlsZXMgPSBmIg0K PiB7aW5jX2ZsYWd9Ii5qb2luKG1vZHVsZS5JbmNsdWRlUGF0aExpc3QpDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfY29tbWFuZCA9DQo+ID4gPiArIGJ1 aWxkX2NvbW1hbmQucmVwbGFjZSgiJHtzcmN9IiwNCj4gPiA+IGluY2x1ZGVfZmlsZXMpDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfY29tbWFuZCA9DQo+ ID4gPiArIGJ1aWxkX2NvbW1hbmQucmVwbGFjZSgiJHtkc3R9IiwgbW9kdWxlLk91dHB1dERpcikN Cj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVtb3Zl IHVuIGRlZmluZWQgbWFjcm9zDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb21waWxlX2NvbW1hbmRbImNvbW1hbmQiXSA9DQo+ID4gPiArIHJlLnN1YihyIlwkXCguKj9c KSIsICIiLA0KPiA+ID4gYnVpbGRfY29tbWFuZCkNCj4gPiA+ICsNCj4gPiA+ICsgY29tcGlsZV9j b21tYW5kcy5hcHBlbmQoY29tcGlsZV9jb21tYW5kKQ0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAg ICAgICAgICAjIENyZWF0ZSBvdXRwdXQgZm9sZGVyIGlmIGRvZXNuJ3QgZXhpc3QNCj4gPiA+ICsg ICAgICAgICAgICAgICAgY29tcGlsZV9pbmZvX2ZvbGRlciA9DQo+IFBhdGgoV2EuQnVpbGREaXIp LmpvaW5wYXRoKCJDb21waWxlSW5mbyIpDQo+ID4gPiArICAgICAgICAgICAgICAgIGNvbXBpbGVf aW5mb19mb2xkZXIubWtkaXIoZXhpc3Rfb2s9VHJ1ZSkNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAg ICAgICAgICAgIyBTb3J0IGFuZCBzYXZlIGZpbGVzDQo+ID4gPiArICAgICAgICAgICAgICAgIGNv bXBpbGVfY29tbWFuZHMuc29ydChrZXk9bGFtYmRhIHg6IHhbImZpbGUiXSkNCj4gPiA+ICsNCj4g PiA+ICsNCj4gPiA+DQo+IFNhdmVGaWxlT25DaGFuZ2UoY29tcGlsZV9pbmZvX2ZvbGRlci5qb2lu cGF0aChmImNvbXBpbGVfY29tbWFuZHMuanNvbiINCj4gPiA+ICsgKSxqc29uLmR1bXBzKGNvbXBp bGVfY29tbWFuZHMsIGluZGVudD0yKSwgRmFsc2UpDQo+ID4gPiArDQo+ID4gPiArDQo+ID4gPiAr IFNhdmVGaWxlT25DaGFuZ2UoY29tcGlsZV9pbmZvX2ZvbGRlci5qb2lucGF0aChmImNzY29wZS5m aWxlcyIpLA0KPiA+ID4gKyAiXG4iLmpvaW4oc29ydGVkKHVzZWRfZmlsZXMpKSwgRmFsc2UpDQo+ ID4gPiArDQo+ID4gPiArICAgICAgICAgICAgICAgIG1vZHVsZV9yZXBvcnQuc29ydChrZXk9bGFt YmRhIHg6IHhbIlBhdGgiXSkNCj4gPiA+ICsNCj4gPiA+ICsgU2F2ZUZpbGVPbkNoYW5nZShjb21w aWxlX2luZm9fZm9sZGVyLmpvaW5wYXRoKGYibW9kdWxlX3JlcG9ydC5qc29uDQo+ID4gPiArICIp LCBqc29uLmR1bXBzKG1vZHVsZV9yZXBvcnQsIGluZGVudD0yKSwgRmFsc2UpDQo+ID4gPiArDQo+ ID4gPiArICAgICAgICBleGNlcHQ6DQo+ID4gPiArICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9y KCJCdWlsZFJlcG9ydCIsIENPREVfRVJST1IsICJVbmtub3duDQo+ID4gPiArIGZhdGFsIGVycm9y DQo+ID4gPiB3aGVuIGdlbmVyYXRpbmcgYnVpbGQgcmVwb3J0IGNvbXBpbGUgaW5mb3JtYXRpb24i LA0KPiA+ID4gRXh0cmFEYXRhPXNlbGYuUmVwb3J0RmlsZSwgUmFpc2VFcnJvcj1GYWxzZSkNCj4g PiA+ICsgICAgICAgICAgICBFZGtMb2dnZXIucXVpZXQoIihQeXRob24gJXMgb24gJXNcbiVzKSIg JQ0KPiA+ID4gKyAocGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSwgc3lzLnBsYXRmb3JtLCB0cmFj ZWJhY2suZm9ybWF0X2V4YygpKSkNCj4gPiA+ICsNCj4gPiA+ICAjIFRoaXMgYWN0cyBsaWtlIHRo ZSBtYWluKCkgZnVuY3Rpb24gZm9yIHRoZSBzY3JpcHQsIHVubGVzcyBpdCBpcw0KPiA+ID4gJ2lt cG9ydCdlZCBpbnRvIGFub3RoZXIgc2NyaXB0Lg0KPiA+ID4gIGlmIF9fbmFtZV9fID09ICdfX21h aW5fXyc6DQo+ID4gPiAgICAgIHBhc3MNCj4gPiA+IC0NCj4gPiA+IGRpZmYgLS1naXQgYS9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9idWlsZC9idWlsZG9wdGlvbnMucHkNCj4gPiA+IGIvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vYnVpbGQvYnVpbGRvcHRpb25zLnB5DQo+ID4gPiBpbmRleCA4MzM0 NjA0YjQ2Li41ZWM1NjFmN2VjIDEwMDY0NA0KPiA+ID4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9Q eXRob24vYnVpbGQvYnVpbGRvcHRpb25zLnB5DQo+ID4gPiArKysgYi9CYXNlVG9vbHMvU291cmNl L1B5dGhvbi9idWlsZC9idWlsZG9wdGlvbnMucHkNCj4gPiA+IEBAIC04NCw4ICs4NCw4IEBAIGNs YXNzIE15T3B0aW9uUGFyc2VyKCk6DQo+ID4gPiAgICAgICAgICBQYXJzZXIuYWRkX29wdGlvbigi LUQiLCAiLS1kZWZpbmUiLCBhY3Rpb249ImFwcGVuZCIsDQo+ID4gPiB0eXBlPSJzdHJpbmciLCBk ZXN0PSJNYWNyb3MiLCBoZWxwPSJNYWNybzogXCJOYW1lIFs9IFZhbHVlXVwiLiIpDQo+ID4gPg0K PiA+ID4gICAgICAgICAgUGFyc2VyLmFkZF9vcHRpb24oIi15IiwgIi0tcmVwb3J0LWZpbGUiLCBh Y3Rpb249InN0b3JlIiwNCj4gPiA+IGRlc3Q9IlJlcG9ydEZpbGUiLCBoZWxwPSJDcmVhdGUvb3Zl cndyaXRlIHRoZSByZXBvcnQgdG8gdGhlDQo+ID4gPiBzcGVjaWZpZWQNCj4gPiA+IGZpbGVuYW1l LiIpDQo+ID4gPiAtICAgICAgICBQYXJzZXIuYWRkX29wdGlvbigiLVkiLCAiLS1yZXBvcnQtdHlw ZSIsIGFjdGlvbj0iYXBwZW5kIiwNCj4gPiA+IHR5cGU9ImNob2ljZSIsIGNob2ljZXM9WydQQ0Qn LCAnTElCUkFSWScsICdGTEFTSCcsICdERVBFWCcsDQo+ID4gPiAnQlVJTERfRkxBR1MnLCAnRklY RURfQUREUkVTUycsICdIQVNIJywgJ0VYRUNVVElPTl9PUkRFUiddLA0KPiA+ID4gZGVzdD0iUmVw b3J0VHlwZSIsIGRlZmF1bHQ9W10sDQo+ID4gPiAtICAgICAgICAgICAgaGVscD0iRmxhZ3MgdGhh dCBjb250cm9sIHRoZSB0eXBlIG9mIGJ1aWxkIHJlcG9ydCB0byBnZW5lcmF0ZS4NCj4gTXVzdCBi ZQ0KPiA+ID4gb25lIG9mOiBbUENELCBMSUJSQVJZLCBGTEFTSCwgREVQRVgsIEJVSUxEX0ZMQUdT LCBGSVhFRF9BRERSRVNTLA0KPiA+ID4gSEFTSCwgRVhFQ1VUSU9OX09SREVSXS4gICJcDQo+ID4g PiArICAgICAgICBQYXJzZXIuYWRkX29wdGlvbigiLVkiLCAiLS1yZXBvcnQtdHlwZSIsIGFjdGlv bj0iYXBwZW5kIiwNCj4gPiA+IHR5cGU9ImNob2ljZSIsIGNob2ljZXM9WydQQ0QnLCAnTElCUkFS WScsICdGTEFTSCcsICdERVBFWCcsDQo+ID4gPiAnQlVJTERfRkxBR1MnLCAnRklYRURfQUREUkVT UycsICdIQVNIJywgJ0VYRUNVVElPTl9PUkRFUicsDQo+ID4gPiAnQ09NUElMRV9JTkZPJ10sIGRl c3Q9IlJlcG9ydFR5cGUiLCBkZWZhdWx0PVtdLA0KPiA+ID4gKyAgICAgICAgICAgIGhlbHA9IkZs YWdzIHRoYXQgY29udHJvbCB0aGUgdHlwZSBvZiBidWlsZCByZXBvcnQgdG8NCj4gPiA+ICsgZ2Vu ZXJhdGUuICBNdXN0IGJlIG9uZSBvZjogW1BDRCwgTElCUkFSWSwgRkxBU0gsIERFUEVYLA0KPiA+ ID4gKyBCVUlMRF9GTEFHUywgRklYRURfQUREUkVTUywgSEFTSCwgRVhFQ1VUSU9OX09SREVSLA0K PiBDT01QSUxFX0lORk9dLg0KPiA+ID4gKyAiXA0KPiA+ID4gICAgICAgICAgICAgICAgICAgIlRv IHNwZWNpZnkgbW9yZSB0aGFuIG9uZSBmbGFnLCByZXBlYXQgdGhpcyBvcHRpb24NCj4gPiA+IG9u IHRoZSBjb21tYW5kIGxpbmUgYW5kIHRoZSBkZWZhdWx0IGZsYWcgc2V0IGlzIFtQQ0QsIExJQlJB UlksDQo+ID4gPiBGTEFTSCwgREVQRVgsIEhBU0gsIEJVSUxEX0ZMQUdTLCBGSVhFRF9BRERSRVNT XSIpDQo+ID4gPiAgICAgICAgICBQYXJzZXIuYWRkX29wdGlvbigiLUYiLCAiLS1mbGFnIiwgYWN0 aW9uPSJzdG9yZSIsDQo+ID4gPiB0eXBlPSJzdHJpbmciLCBkZXN0PSJGbGFnIiwNCj4gPiA+ICAg ICAgICAgICAgICBoZWxwPSJTcGVjaWZ5IHRoZSBzcGVjaWZpYyBvcHRpb24gdG8gcGFyc2UgRURL IFVOSSBmaWxlLiBNdXN0IGJlDQo+IG9uZSBvZjoNCj4gPiA+IFstYywgLXNdLiAtYyBpcyBmb3Ig RURLIGZyYW1ld29yayBVTkkgZmlsZSwgYW5kIC1zIGlzIGZvciBFREsgVUVGSQ0KPiA+ID4gVU5J IGZpbGUuICJcDQo+ID4gPiAtLQ0KPiA+ID4gMi4yOC4wLndpbmRvd3MuMQ0KPiA+DQo+ID4NCj4g Pg0KPiA+IA0KPiA+DQoNCg==