From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.5285.1637795136773441529 for ; Wed, 24 Nov 2021 15:05:37 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=fJHmCjOl; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.d.kinney@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10178"; a="321632696" X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="321632696" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Nov 2021 15:05:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="571623225" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga004.fm.intel.com with ESMTP; 24 Nov 2021 15:05:35 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 24 Nov 2021 15:05:35 -0800 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 24 Nov 2021 15:05:34 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 24 Nov 2021 15:05:34 -0800 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (104.47.74.48) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Wed, 24 Nov 2021 15:05:34 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lvbC84P6JvjWkEEdZ3a/zS7JriLhD2hi5DepP2+3oxueEPxZDuYFt9oyiD0jLB5/8QU2deRphSboskht/2GTlCfdwXgssUmzYkwQxQyinaxMqwH61sZBf0x0WyixOnDhX5SsW3SV5hVhBzezhG9q90NlEJ9TOxqStpFuM1YWR9NVhieRwO/MgS9ZFrVnI4AkYRr1MCqBWaqcmVZwEFDlkE+NFX9amf+3hPE03wMHYYQRiPH5chEJjWsInL6iV2BExWkI/IEeRk+Aw5Xji1lyvVam2Agi/S4ircPDpX5BJ82LQ97xkAN9Sr5Y5FbQdppKRWK+6fNgNFoaG5uW2QrKjA== 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=LZC4fTARrOAGgJjqzaHvQ8ZWGEP9qZLSeuMI2o8dqRo=; b=bMgWLRCZwfiuISSlC48V66T2Jh75ro/TNWrOOaWhZxFCEhQKYGdKS0BU6U2lMPVsGUArsoTtsm3QyJw3ijqjY32V72G5R0Rh0OK40oydx25131YJIBrBXimtDNevgPR913ttRf7XLXSVeINogFzG3A5gi53rgGoDvaz902Y+J4v7mRcM0cdd2HDkKmj4CxImeQeVPCnNl38UOLAxKUj63TTKdNW2Vb0/kyJ0S3DrJstOFLbOMvea1XqnHWHhWCkyJd5CZBcEkQEr19Qq0EmJaTD5bpPq1YxZeswJ33VuzuC+d2O1IaFQt0Jk9qXW1ZukP2gg5uFcWUdC9Y4+uSZJrQ== 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=LZC4fTARrOAGgJjqzaHvQ8ZWGEP9qZLSeuMI2o8dqRo=; b=fJHmCjOldrocHFxluVWzAM5Ek+SnlA9b2QL06k0bDJHlKwtpHRLuz6rtXUUlFuZPM5WdtTJDZdse/fGZr1k9MALomVzPX/qqrkBOKFatINeY2gGNzNxQDLvN6YmSJlhZEEoFygGGucp+W7CmAxxGIse9mM4yZF4CK5CLj57xAJA= Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by MWHPR11MB1759.namprd11.prod.outlook.com (2603:10b6:300:111::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4713.22; Wed, 24 Nov 2021 23:05:31 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::68cc:6227:db69:d81a]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::68cc:6227:db69:d81a%6]) with mapi id 15.20.4713.025; Wed, 24 Nov 2021 23:05:31 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "mikuback@linux.microsoft.com" , "Kinney, Michael D" CC: Liming Gao , Sean Brogan , Bret Barkelew Subject: Re: [edk2-devel] [PATCH v4 1/1] .pytool/Plugin/UncrustifyCheck: Add Uncrustify CI plugin Thread-Topic: [edk2-devel] [PATCH v4 1/1] .pytool/Plugin/UncrustifyCheck: Add Uncrustify CI plugin Thread-Index: AQHX4XwmMYDqp0mP/kqm0Cd+X+x24qwTRrIggAAC8oCAAALaYA== Date: Wed, 24 Nov 2021 23:05:31 +0000 Message-ID: References: <20211124214131.2705-1-mikuback@linux.microsoft.com> <87b4f4bb-8d19-abdc-85f9-6b7bffa1b12e@linux.microsoft.com> In-Reply-To: <87b4f4bb-8d19-abdc-85f9-6b7bffa1b12e@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ba0b89a2-ef6e-429d-2933-08d9af9ee9e4 x-ms-traffictypediagnostic: MWHPR11MB1759: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oQxdLV3MzMoRV1U2BzyVQZm0kFD+o9YV+3RuWdgIDYH2jxLLHfmw/Gr7LK9HI9xGge4pGGKNFRrbZvyMp7SLGY60cQgeIR5J/bolfBYI2L2gJDJ7RXUIHkBBTollGdjqdr+KFk2SqwjLRVu0qWRTAVkhG1RG3gOghH9AKqlYRXVk70hp6Hz9jq54X8/S3OIyeihSqeNEof42Ac8T+DDBy8bRr/M0LZB0Ltq850duHhM+SGcgo5gTQVcykhCjVOElEmSnbW0OITxRyytFx1l6MoJMW94jskHc+mnTkuMxSJ6EGPbWq/kP6zx0mU4lRaj8uEo0bSjn9B1ODmPqoqTN8dCXPFNVqcjHWEplq3pzM7E5i2AmYefhfoYbjVtPycmLXz5jUs1wXIi+ECZ5fwP+o+3OzNbKEVctUMuYObsoNjZcHIE76oo6ztlBoOX3Dxdgv0IlTuEyQWRSTbzt/xQUAUXKA+dbxx7qyUiiFCLb3woYFqC4lI+G6q+xSQTEvrukptlwx9gBBhtOH3G1hBgFd/pK5FEqRSriYHjb84isS8dg3Ebg/3WJ19u+sL0huD2RT3JhEP5/9TzgqPgs9/mhPmaELfHoHCXQ2NbRCrtEbJix4bIZAIhLdDHk66mM2CWgWJBtksBycQyMnb4cakjN/qRcDFF2VPaq1IRDaHflkkXSAmFdLL03r3coWijgpXDRZSeWORUfVrUwPYeoqJ9w0iuNpTGTW4nJTALMmbJAIfhMSvVz7CpNn2d6TmoIuZuCj1zanlI1dyO3JUC+mbmY6H3HRgUcwYWRtkdy5619MDuXBZw7lXSr7qQJcIabcGFMssPe2AnaLTwJ8tPMuDJtLg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(8676002)(38070700005)(54906003)(66556008)(8936002)(53546011)(186003)(122000001)(52536014)(7696005)(508600001)(2906002)(110136005)(4326008)(19627235002)(76116006)(83380400001)(9686003)(66946007)(64756008)(82960400001)(316002)(55016003)(66476007)(66446008)(6506007)(38100700002)(26005)(45080400002)(30864003)(5660300002)(966005)(33656002)(71200400001)(86362001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SWlDcG9XeDhkWXI3cmNTUVNWUHRGTWdnOEhPdmFIU1JzZWppbzZhK0VCZlZR?= =?utf-8?B?WVFBb2hnNXZZZFR0K0tZd256Yy83ZnJUdUNkakRyeldtc0VHV1BkQ0Q2cEFV?= =?utf-8?B?aEhWMVRIRS9uTjJnYk9YbWJPc3htcnNsVDM2Y00rRWxOUjJJdFUyeGZCdVdp?= =?utf-8?B?NDhxZ2w5VGdQbnZOMlptWENkcnNIdVB0Rm9uT01ocCtyNmtPQUNzRlFpb1RE?= =?utf-8?B?ZEtyY3B1YXVnN1hvVWZJd2ZOZ1M2YkN6aXJINFhhTVloR0lOaFdUcmJ3bGcx?= =?utf-8?B?WFI2bEJLa2FpWXhLQkJ5REpXUGpWQ2d0bTNFRmE1ZGFYaFRqbHh1alBxOUtj?= =?utf-8?B?MVlIV2dHRFFlQ0pqYmV4QUUzdUlITVczeFNwOGVieFcxcTJEZnQzSStNd1ow?= =?utf-8?B?Z1VRR1g4MkZFRENIL0dOd3dnY21wcVpjYUYwbnppa0I4Mkw2WmJHN29VMGZp?= =?utf-8?B?SkVBQ2V0UktaQU9iUndZUXI3UXVlS3BPQUNXMG5oRmRiSElUVGxCa1hNQnAx?= =?utf-8?B?L3ZHZGkwcVV1YlMrN3dyMmxsWW1JNVhEM2ZoTlBDMFAwV2xmYXFyN2ZOc0li?= =?utf-8?B?dzdRc1c1d3FhTnNGVFhhdzg3eVcwNEhjbDlXamRIY0M4VitUSEM5bVdBYW1Q?= =?utf-8?B?bURyaU04bTE3TlMvRkRWanNUd3pHY1h3ekd5N2N1SFE3ekV6WDgwMHo5bmh5?= =?utf-8?B?K3EwMnk0SHpaa0NSc2FXWkNEUDBTempaOUVLZHZyUFk4RlcvNC9OTjBVc3c4?= =?utf-8?B?K1RGamo0QXQxVENZRFZDZi9vNERmc0l0YTExQW1NYm55U1hrMjZMRHBmNlU2?= =?utf-8?B?S2xmNVhoTndSNDdqeExId3hGWnNTL3k1N0tVSjdQZXNKdzRTUkR1Mm5taHhi?= =?utf-8?B?Rnd2VmpycnZiL1lXVVE4cmZSWWNUejhBS0dDOCszeXYrUUV4eEtTQ0ZaMlpR?= =?utf-8?B?VThrQVFQVEtDQjVqazlUL2gzUnJFUU5SYmxPTG1MekM4V3VwNHVhcStuOXM1?= =?utf-8?B?U20wTXNuS3NwdVN0WkdmeWZpYXcxWEZjL1pKTEJUVTgySHVZNXNWbVcvZDJQ?= =?utf-8?B?WE9kY0JBS2luQlNoZG5DWGpyUkhhVTlrYUhmRjlkT29BdURXN1FkdllmZ2tx?= =?utf-8?B?NTlKMEZMb2NHYkpqaElrc0J6TkpKQ1dVVXhFa3UraFYwamRYU1dEN2ZIVU12?= =?utf-8?B?UG9IelJkK3RhRzUrdlE1MmdzcENKL3JZMFNTcitvdTBZYUg2ZzBzZzRLOEFU?= =?utf-8?B?UTljWXNvWVJscThRMndPUEZEK0NlZzgyM3FIanBmelVSVVA3SlBUOGxTWUVn?= =?utf-8?B?bnJoZU1wa3N0ZFRNbXFmVGc5c3ZLYWNxR1dVYlZPYlVQREJiTE5iWkFTTlRs?= =?utf-8?B?N2ZiU081bUo3OEE0dGJQbmt5eGhDZ1J3N00wSnhhTUU1dkI2ZVJHa1IrZmNN?= =?utf-8?B?anpRVUw5NVJxQnM0VlVsMGxHT214d3daUEVEUXVVRGZ1TjAvdUVhTXVXaWpa?= =?utf-8?B?amNCREtORWpkTVl0OHV1MTQvZFRuKzdWbGY4bmU5SXF4SFlqanFuSW1oUFhz?= =?utf-8?B?cDZWM0haMTc3bkVKMVlWOVdZeVF2aVRJMWdSRmlJeGhyTGpwV24yOHZmOERz?= =?utf-8?B?dDNTbnI0NVlSUmRkT2V3eDNNRElpMFNuNFVndmU3V2Evckh0MkZxTmZhVlQ2?= =?utf-8?B?c210VXUybURlSlRGUnplSHpkUEpxaFl2M3lTd1V6RWhPeVF3TlZkZjA0WkFV?= =?utf-8?B?dzBzdWNXWkhvejNEdkJ4aGJBc01EVVNOd2ZldWZ6M1dQMFFmR1huOXVMeml0?= =?utf-8?B?S1NTT3FMcW9TR204ZHZGMmlRVjhXRlZXNVZKZ1hMeTl6UGRqVkg3Um9Ebjlr?= =?utf-8?B?L2RiSHgreDRBaklmQmc3aTBaTFpqV0tpZFdsZjlHQ2d1SXZuUlY3VVl5Vjln?= =?utf-8?B?L0J5MnkzcTl2b1NBUDQxOTQxeithdTVQWXIxeHFIQVVDQmtoVkl1Nkthc0Fr?= =?utf-8?B?V2w5bGtlazVRU1VGTWhabUFPbzZ4eGhTSlhieXB6ZzVYRXphOEloNUdNZ3Fy?= =?utf-8?B?d0h5RFUwdzJjeGhuSVNNS0dnb3VxZCtrSnJSVHBsQWx6aWJzMlZxaFFDbTBl?= =?utf-8?B?RmpNcTZDTUt4Z1RoSi9HOGdwNU1JNldIZjdRWGZncG52OCthQlFXbUVIbU5k?= =?utf-8?B?YlZFS0o2djcxRjcyUVZxdEc2MWh1UG9jWUdPZ1U5Z0NJb2YxLzYzYWFYb1pR?= =?utf-8?B?Z3FFejF4NGdUOWhBYm55cEJEcXZnPT0=?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba0b89a2-ef6e-429d-2933-08d9af9ee9e4 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Nov 2021 23:05:31.2766 (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: bp6IFqpNd7hSwz6U7hEh90WWVlVjltfVLS4yiXS4+0B8ig2ANQEUW36zfvvFH1OH27HBTQTARP9Ind/mDZ3idKQiGAxaKlGHRpaEoE6vxDk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1759 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzLiAgVGhhdCBtYWtlcyBzZW5zZS4NCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vw cy5pbz4gT24gQmVoYWxmIE9mIE1pY2hhZWwgS3ViYWNraQ0KPiBTZW50OiBXZWRuZXNkYXksIE5v dmVtYmVyIDI0LCAyMDIxIDI6NTUgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBMaW1pbmcg R2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBTZWFuIEJyb2dhbiA8c2Vhbi5icm9nYW5A bWljcm9zb2Z0LmNvbT47IEJyZXQgQmFya2VsZXcNCj4gPEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0 LmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjQgMS8xXSAucHl0b29s L1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2s6IEFkZCBVbmNydXN0aWZ5IENJIHBsdWdpbg0KPiANCj4g WWVzLiBUaG9zZSB3ZXJlIHJlZHVuZGFudCBhbmQgZGV0ZWN0ZWQgYnkgdGhlIFB5dGhvbiBjb25m aWdwYXJzZXIgbW9kdWxlDQo+IHdoZW4gSSB1c2VkIGl0IHRvIHBhcnNlIHRoZSBjb25maWcgZmls ZS4NCj4gDQo+IFRoYW5rcywNCj4gTWljaGFlbA0KPiANCj4gT24gMTEvMjQvMjAyMSA1OjQ1IFBN LCBNaWNoYWVsIEQgS2lubmV5IHdyb3RlOg0KPiA+IEhpIE1pY2hhZWwsDQo+ID4NCj4gPiBJIHNl ZSBhIGNvdXBsZSBzZXR0aW5ncyBkZWxldGVkIGZyb20gdGhlIHVuY3J1c3RpZnkuY2ZnLiAgV2Fz IHRoYXQgaW4gcHVycG9zZT8gIERvZXMgaXQgY2hhbmdlIHRoZSBmb3JtYXQ/DQo+ID4NCj4gPg0K PiA+IC1ubF9mdW5jX2NhbGxfc3RhcnRfbXVsdGlfbGluZSAgID0gdHJ1ZSAgICAgICMgV2hldGhl ciB0byBhZGQgYSBuZXdsaW5lIGFmdGVyICcoJyBpbiBhIGZ1bmN0aW9uIGNhbGwgaWYgJygnIGFu ZCAnKScgYXJlDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBpbiBkaWZmZXJlbnQgbGluZXMuDQo+ID4NCj4gPg0KPiA+IC1ubF9mdW5jX2NhbGxfYXJn c19tdWx0aV9saW5lICAgICAgICAgICAgICAgICA9IHRydWUNCj4gPiAtbmxfZnVuY19jYWxsX2Fy Z3NfbXVsdGlfbGluZV9pZ25vcmVfY2xvc3VyZXMgPSBmYWxzZQ0KPiA+DQo+ID4NCj4gPiBUaGFu a3MsDQo+ID4NCj4gPiBNaWtlDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPj4gRnJvbTogbWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbSA8bWlrdWJhY2tAbGludXgu bWljcm9zb2Z0LmNvbT4NCj4gPj4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAyNCwgMjAyMSAx OjQyIFBNDQo+ID4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+PiBDYzogS2lubmV5LCBN aWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgTGltaW5nIEdhbyA8Z2FvbGlt aW5nQGJ5b3NvZnQuY29tLmNuPjsgU2VhbiBCcm9nYW4NCj4gPj4gPHNlYW4uYnJvZ2FuQG1pY3Jv c29mdC5jb20+OyBCcmV0IEJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+DQo+ ID4+IFN1YmplY3Q6IFtQQVRDSCB2NCAxLzFdIC5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVj azogQWRkIFVuY3J1c3RpZnkgQ0kgcGx1Z2luDQo+ID4+DQo+ID4+IEZyb206IE1pY2hhZWwgS3Vi YWNraSA8bWljaGFlbC5rdWJhY2tpQG1pY3Jvc29mdC5jb20+DQo+ID4+DQo+ID4+IFJFRjpodHRw czovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDgNCj4gPj4NCj4g Pj4gQWRkcyBhIG5ldyBDSSBwbHVnaW4gZm9yIFVuY3J1c3RpZnkuIFRoaXMgaXMgdXNlZCB0byBj aGVjaw0KPiA+PiBjb2Rpbmcgc3RhbmRhcmQgY29tcGxpYW5jZSBvZiBzb3VyY2UgY29kZSB0byB0 aGUgRURLIElJIEMgQ29kaW5nDQo+ID4+IFN0YW5kYXJkcyBTcGVjaWZpY2F0aW9uLg0KPiA+Pg0K PiA+PiBBbiBleHRlcm5hbCBkZXBlbmRlbmN5IGlzIGFkZGVkIGluIHRoZSBwbHVnaW4gZGlyZWN0 b3J5IHRvIHJldHJpZXZlDQo+ID4+IHRoZSBVbmNydXN0aWZ5IGV4ZWN1dGFibGUuIEN1cnJlbnRs eSwgdGhlIGV4ZWN1dGFibGUgaXMgZnJvbSBhbiBlZGsyDQo+ID4+IGZvcmsgb2YgdGhlIGFwcGxp Y2F0aW9uIGhvc3QgaW4gdGhpcyByZXBvc2l0b3J5Og0KPiA+Pg0KPiA+PiBodHRwczovL2Rldi5h enVyZS5jb20vcHJvamVjdG11L1VuY3J1c3RpZnkvDQo+ID4+DQo+ID4+IE5vdGUgdGhhdCB0aGUg VW5jcnVzdGlmeSBhcHBsaWNhdGlvbiBvdXRwdXRzIHRoZSBjb21taXQgSUQgdGhhdCB0aGUNCj4g Pj4gYXBwbGljYXRpb24gd2FzIGJ1aWx0IGZyb20gd2hlbiBnaXZlbiB0aGUgLS12ZXJzaW9uIHBh cmFtZXRlci4NCj4gPj4NCj4gPj4gVGhpcyBJRCBjYW4gYmUgbWFwcGVkIHRvIHRoZSB2ZXJzaW9u IHNwZWNpZmllZCBpbiB0aGUgVW5jcnVzdGlmeSBDSQ0KPiA+PiBwbHVnaW4gZXh0ZXJuYWwgZGVw ZW5kZW5jeSBmaWxlICh1bmNydXN0aWZ5X2V4dF9kZXAueWFtbCkgc3VjaCBhcw0KPiA+PiA3My4w LjMgYnkgdmlzaXRpbmcgdGhlIFVuY3J1c3RpZnkgZWRrMiBmb3JrIHJlbGVhc2UgcGlwZWxpbmUg cGFnZQ0KPiA+PiB3aGljaCBhc3NvY2lhdGVzIHRoZSBOdUdldCBwYWNrYWdlIHZlcnNpb24gd2l0 aCB0aGUgY29tbWl0IElEIGl0IHdhcw0KPiA+PiBidWlsdCBmcm9tOg0KPiA+Pg0KPiA+PiBodHRw czovL2Rldi5henVyZS5jb20vcHJvamVjdG11L1VuY3J1c3RpZnkvX2J1aWxkDQo+ID4+DQo+ID4+ IFRoZSBkZWZhdWx0IFVuY3J1c3RpZnkgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgYWRkZWQgaW4g dGhlIHBsdWdpbg0KPiA+PiBkaXJlY3RvcnkuIEFkZGl0aW9uYWwgZGV0YWlscyBhcmUgaW4gdGhl IFJlYWRtZS5tZCBmaWxlIGFkZGVkIGluDQo+ID4+IHRoZSBVbmNydXN0aWZ5IHBsdWdpbiBkaXJl Y3RvcnkuDQo+ID4+DQo+ID4+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT4NCj4gPj4gQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5j bj4NCj4gPj4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPg0KPiA+ PiBDYzogQnJldCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPg0KPiA+PiBT aWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEt1YmFja2kgPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQu Y29tPg0KPiA+PiAtLS0NCj4gPj4NCj4gPj4gTm90ZXM6DQo+ID4+ICAgICAgVjQgY2hhbmdlczoN Cj4gPj4NCj4gPj4gICAgICAxLiBVcGRhdGVkIGNvbW1pdCBzdWJqZWN0IHRvIHVzZSB0aGUgbmV3 IHBsdWdpbiBuYW1lLg0KPiA+PiAgICAgIDIuIEVuYWJsZWQgZmlsZSBhbmQgZnVuY3Rpb24gaGVh ZGVyIHRlbXBsYXRlcyB0byBiZSBwbGFjZWQgaW4NCj4gPj4gICAgICAgICBmaWxlcyBtaXNzaW5n IGEgZmlsZSBvciBmdW5jdGlvbiBoZWFkZXIgKGNvbW1lbnQgYmxvY2spLg0KPiA+PiAgICAgIDMu IEFkZGVkIHN1cHBvcnQgdG8gZGV0ZWN0IHdoZXRoZXIgYSBmaWxlIGhlYWRlciBvciBmdW5jdGlv bg0KPiA+PiAgICAgICAgIGhlYWRlciBpcyBtaXNzaW5nIGluIGEgZmlsZSBieSBzZWFyY2hpbmcg ZmlsZXMgbW9kaWZpZWQgYnkNCj4gPj4gICAgICAgICBVbmNydXN0aWZ5IGZvciB0aGUgdGVtcGxh dGUgZmlsZSB0ZXh0Lg0KPiA+PiAgICAgIDQuIFVwZGF0ZWQgdGhlIHBsdWdpbiBuYW1lIGRpc3Bs YXllZCBpbiBzb21lIGxvZyBvdXRwdXQgbWVzc2FnZXMuDQo+ID4+DQo+ID4+ICAgICAgVjMgY2hh bmdlczoNCj4gPj4NCj4gPj4gICAgICAxLiBSZW5hbWVkIHRoZSBDSSBwbHVnaW4gdG8gIlVuY3J1 c3RpZnlDaGVjayIgZnJvbSAiVW5jcnVzdGlmeSINCj4gPj4gICAgICAgICB0byBmb2xsb3cgc2lt aWxhciBuYW1pbmcgY29udmVudGlvbnMgdXNlZCBpbiBvdGhlciBwbHVnaW5zDQo+ID4+ICAgICAg ICAgdGhhdCBjaGVjayBmaWxlcw0KPiA+PiAgICAgIDIuIEFkZGVkIGEgY2xhcmlmeWluZyBwYXJh Z3JhcGggdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgVW5jcnVzdGlmeQ0KPiA+PiAgICAgICAgIENJ IHBsdWdpbiBSZWFkbWUubWQgZmlsZSB0aGF0IHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZh dWx0DQo+ID4+ICAgICAgICAgYW5kIHRlc3QgcmVzdWx0cyBjYW4gYmUgaWdub3JlZCBieSBlbmFi bGluZyAiQXVkaXRPbmx5IiBtb2RlLg0KPiA+PiAgICAgIDMuIEFkZGVkIGluc3RydWN0aW9ucyBp biB0aGUgY29tbWl0IG1lc3NhZ2Ugb24gaG93IHRvIG1hcCB0aGUNCj4gPj4gICAgICAgICB2ZXJz aW9uIHJlcG9ydGVkIGJ5IHRoZSBVbmNydXN0aWZ5IGFwcGxpY2F0aW9uICgtLXZlcnNpb24pIHRv DQo+ID4+ICAgICAgICAgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSBDSSBwbHVnaW4gZXh0 ZXJuYWwgZGVwZW5kZW5jeQ0KPiA+PiAgICAgICAgIFlBTUwgZmlsZS4NCj4gPj4NCj4gPj4gICAg ICBWMiBjaGFuZ2VzOg0KPiA+Pg0KPiA+PiAgICAgIDEuIENoYW5nZWQgcGx1Z2luIHRlbXAgZGly ZWN0b3J5IHRvIEJ1aWxkLy5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnkNCj4gPj4gICAgICAyLiBB ZGRlZCBUQ0JaIFJFRiBpbiBwYXRjaCBjb21taXQgbWVzc2FnZQ0KPiA+Pg0KPiA+PiAgIC5weXRv b2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9SZWFkbWUubWQgICAgICAgICAgICAgICAgICAgfCAx MjAgKysrKw0KPiA+PiAgIC5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9VbmNydXN0aWZ5 Q2hlY2sucHkgICAgICAgICAgfCA2MTcgKysrKysrKysrKysrKysrKysrKysNCj4gPj4gICAucHl0 b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svZGVmYXVsdF9maWxlX2hlYWRlci50eHQgICAgIHwg ICA5ICsNCj4gPj4gICAucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svZGVmYXVsdF9mdW5j dGlvbl9oZWFkZXIudHh0IHwgIDE1ICsNCj4gPj4gICAucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5 Q2hlY2svdW5jcnVzdGlmeS5jZmcgICAgICAgICAgICAgIHwgNDYyICsrKysrKysrKysrKysrKw0K PiA+PiAgIC5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay91bmNydXN0aWZ5X2V4dF9kZXAu eWFtbCAgICAgfCAgMTYgKw0KPiA+PiAgIC5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay91 bmNydXN0aWZ5X3BsdWdfaW4ueWFtbCAgICAgfCAgMTEgKw0KPiA+PiAgIC5weXRvb2wvUmVhZG1l Lm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKw0KPiA+ PiAgIDggZmlsZXMgY2hhbmdlZCwgMTI1NCBpbnNlcnRpb25zKCspDQo+ID4+DQo+ID4+IGRpZmYg LS1naXQgYS8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svUmVhZG1lLm1kIGIvLnB5dG9v bC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL1JlYWRtZS5tZA0KPiA+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmJiMjYzYmNjODdkNw0KPiA+PiAtLS0gL2Rl di9udWxsDQo+ID4+ICsrKyBiLy5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9SZWFkbWUu bWQNCj4gPj4gQEAgLTAsMCArMSwxMjAgQEANCj4gPj4gKyMgVW5jcnVzdGlmeUNoZWNrIFBsdWdp bg0KPiA+PiArDQo+ID4+ICtUaGlzIENpQnVpbGRQbHVnaW4gc2NhbnMgYWxsIHRoZSBmaWxlcyBp biBhIGdpdmVuIHBhY2thZ2UgYW5kIGNoZWNrcyBmb3IgY29kaW5nIHN0YW5kYXJkIGNvbXBsaWFu Y2UgaXNzdWVzLg0KPiA+PiArDQo+ID4+ICtUaGlzIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1 bHQuIElmIGEgcGFja2FnZSB3b3VsZCBsaWtlIHRvIHByZXZlbnQgdGhlIHBsdWdpbiBmcm9tIHJl cG9ydGluZyBlcnJvcnMsIGl0IGNhbiBkbw0KPiA+PiArc28gYnkgZW5hYmxpbmcgW2BBdWRpdE9u bHlgXSgjYXVkaXRvbmx5KSBtb2RlLg0KPiA+PiArDQo+ID4+ICtUaGlzIHBsdWdpbiByZXF1aXJl cyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIFVuY3J1c3RpZnkgZXhlY3V0YWJsZSB0aGF0 IHNob3VsZCBiZSB1c2VkIGZvciB0aGlzIHBsdWdpbiB0bw0KPiA+PiArYmUgc3BlY2lmaWVkIGlu IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkIGBVTkNSVVNUSUZZX0NJX1BBVEhgLiBUaGlz IHVuaXF1ZSB2YXJpYWJsZSBuYW1lIGlzIHVzZWQgdG8gYXZvaWQNCj4gY29uZnVzaW9uDQo+ID4+ ICt3aXRoIG90aGVyIHBhdGhzIHRvIFVuY3J1c3RpZnkgd2hpY2ggbWlnaHQgbm90IGJlIHRoZSBl eHBlY3RlZCBidWlsZCBmb3IgdXNlIGJ5IHRoaXMgcGx1Z2luLg0KPiA+PiArDQo+ID4+ICtCeSBk ZWZhdWx0LCBhbiBVbmNydXN0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1lZCAidW5jcnVzdGlm eS5jZmciIGxvY2F0ZWQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBwbHVnaW4gaXMNCj4g Pj4gK3VzZWQuIFRoZSB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiB0byBhIHBhY2thZ2Utc3BlY2lm aWMgcGF0aCB3aXRoIHRoZSBgQ29uZmlnRmlsZVBhdGhgIGNvbmZpZ3VyYXRpb24gZmlsZSBvcHRp b24uDQo+ID4+ICsNCj4gPj4gKyogVW5jcnVzdGlmeSBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRh dGlvbjogaHR0cHM6Ly9naXRodWIuY29tL3VuY3J1c3RpZnkvdW5jcnVzdGlmeQ0KPiA+PiArKiBQ cm9qZWN0IE11IFVuY3J1c3RpZnkgZm9yayBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbjog aHR0cHM6Ly9kZXYuYXp1cmUuY29tL3Byb2plY3RtdS9VbmNydXN0aWZ5DQo+ID4+ICsNCj4gPj4g KyMjIEZpbGVzIENoZWNrZWQgaW4gYSBQYWNrYWdlDQo+ID4+ICsNCj4gPj4gK0J5IGRlZmF1bHQs IHRoaXMgcGx1Z2luIHdpbGwgZGlzY292ZXIgYWxsIGZpbGVzIGluIHRoZSBwYWNrYWdlIHdpdGgg dGhlIGZvbGxvd2luZyBkZWZhdWx0IHBhdGhzOg0KPiA+PiArDQo+ID4+ICtgYGBweXRob24NCj4g Pj4gK1sNCj4gPj4gKyMgQyBzb3VyY2UNCj4gPj4gKyIqLmMiLA0KPiA+PiArIiouaCINCj4gPj4g K10NCj4gPj4gK2BgYA0KPiA+PiArDQo+ID4+ICtGcm9tIHRoaXMgbGlzdCBvZiBmaWxlcywgYW55 IGZpbGVzIGlnbm9yZWQgYnkgR2l0IG9yIHJlc2lkaW5nIGluIGEgR2l0IHN1Ym1vZHVsZSB3aWxs IGJlIHJlbW92ZWQuIElmIEdpdCBpcyBub3QNCj4gPj4gK2ZvdW5kLCBzdWJtb2R1bGVzIGFyZSBu b3QgZm91bmQsIG9yIGlnbm9yZWQgZmlsZXMgYXJlIG5vdCBmb3VuZCBubyBjaGFuZ2VzIGFyZSBt YWRlIHRvIHRoZSBsaXN0IG9mIGRpc2NvdmVyZWQgZmlsZXMuDQo+ID4+ICsNCj4gPj4gK1RvIGNv bnRyb2wgdGhlIHBhdGhzIGNoZWNrZWQgaW4gYSBnaXZlbiBwYWNrYWdlLCByZXZpZXcgdGhlIGNv bmZpZ3VyYXRpb24gb3B0aW9ucyBkZXNjcmliZWQgaW4gdGhpcyBmaWxlLg0KPiA+PiArDQo+ID4+ ICsjIyBDb25maWd1cmF0aW9uDQo+ID4+ICsNCj4gPj4gK1RoZSBwbHVnaW4gY2FuIGJlIGNvbmZp Z3VyZWQgd2l0aCBhIGZldyBvcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuDQo+ID4+ICsN Cj4gPj4gK2BgYCB5YW1sDQo+ID4+ICsgICJVbmNydXN0aWZ5Q2hlY2siOiB7DQo+ID4+ICsgICAg ICAiQWRkaXRpb25hbEluY2x1ZGVQYXRocyI6IFtdLCAjIEFkZGl0aW9uYWwgcGF0aHMgdG8gY2hl Y2sgZm9ybWF0dGluZyAod2lsZGNhcmRzIHN1cHBvcnRlZCkuDQo+ID4+ICsgICAgICAiQXVkaXRP bmx5IjogRmFsc2UsICAgICAgICAgICAjIERvbid0IGZhaWwgdGhlIGJ1aWxkIGlmIHRoZXJlIGFy ZSBlcnJvcnMuICBKdXN0IGxvZyB0aGVtLg0KPiA+PiArICAgICAgIkNvbmZpZ0ZpbGVQYXRoIjog IiIsICAgICAgICAgIyBDdXN0b20gcGF0aCB0byBhbiBVbmNydXN0aWZ5IGNvbmZpZyBmaWxlLg0K PiA+PiArICAgICAgIklnbm9yZVN0YW5kYXJkUGF0aHMiOiBbXSwgICAgIyBTdGFuZGFyZCBQbHVn aW4gZGVmaW5lZCBwYXRocyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkLg0KPiA+PiArICAgICAgIk91 dHB1dEZpbGVEaWZmcyI6IEZhbHNlLCAgICAgIyBPdXRwdXQgY2h1bmtzIG9mIGZvcm1hdHRpbmcg ZGlmZnMgaW4gdGhlIHRlc3QgY2FzZSBsb2cuDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIFRoaXMgY2FuIHNpZ25pZmljYW50bHkgc2xvdyBkb3duIHRoZSBwbHVn aW4gb24gdmVyeSBsYXJnZSBwYWNrYWdlcy4NCj4gPj4gKyAgICAgICJTa2lwR2l0RXhjbHVzaW9u cyI6IEZhbHNlICAgICMgRG9uJ3QgZXhjbHVkZSBnaXQgaWdub3JlZCBmaWxlcyBhbmQgZmlsZXMg aW4gZ2l0IHN1Ym1vZHVsZXMuDQo+ID4+ICsgIH0NCj4gPj4gK2BgYA0KPiA+PiArDQo+ID4+ICsj IyMgYEFkZGl0aW9uYWxJbmNsdWRlUGF0aHNgDQo+ID4+ICsNCj4gPj4gK0EgcGFja2FnZSBjb25m aWd1cmF0aW9uIGZpbGUgY2FuIHNwZWNpZnkgYW55IGFkZGl0aW9uYWwgcGF0aHMgdG8gYmUgaW5j bHVkZWQgd2l0aCB0aGlzIG9wdGlvbi4NCj4gPj4gKw0KPiA+PiArQXQgdGhpcyB0aW1lLCBpdCBp cyByZWNvbW1lbmRlZCBhbGwgZmlsZXMgcnVuIGFnYWluc3QgdGhlIHBsdWdpbiBiZSB3cml0dGVu IGluIHRoZSBDIG9yIEMrKyBsYW5ndWFnZS4NCj4gPj4gKw0KPiA+PiArIyMjIGBBdWRpdE9ubHlg DQo+ID4+ICsNCj4gPj4gK2BCb29sZWFuYCAtIERlZmF1bHQgaXMgYEZhbHNlYC4NCj4gPj4gKw0K PiA+PiArSWYgYFRydWVgLCBydW4gdGhlIHRlc3QgaW4gYW4gImF1ZGl0IG9ubHkgbW9kZSIgd2hp Y2ggd2lsbCBsb2cgYWxsIGVycm9ycyBidXQgaW5zdGVhZCBvZiBmYWlsaW5nIHRoZSBidWlsZCwg aXQgd2lsbA0KPiBzZXQNCj4gPj4gK3RoZSB0ZXN0IGFzIHNraXBwZWQuIFRoaXMgYWxsb3dzIHZp c2liaWxpdHkgaW50byB0aGUgZmFpbHVyZXMgd2l0aG91dCBicmVha2luZyB0aGUgYnVpbGQuDQo+ ID4+ICsNCj4gPj4gKyMjIyBgQ29uZmlnRmlsZVBhdGhgDQo+ID4+ICsNCj4gPj4gK2BTdHJpbmdg IC0gRGVmYXVsdCBpcyBgInVuY3J1c3RpZnkuY2ZnImANCj4gPj4gKw0KPiA+PiArV2hlbiBzcGVj aWZpZWQgaW4gdGhlIGNvbmZpZyBmaWxlLCB0aGlzIGlzIGEgcGFja2FnZSByZWxhdGl2ZSBwYXRo IHRvIHRoZSBVbmNydXN0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZS4NCj4gPj4gKw0KPiA+PiArIyMj IGBJZ25vcmVTdGFuZGFyZFBhdGhzYA0KPiA+PiArDQo+ID4+ICtUaGlzIHBsdWdpbiBieSBkZWZh dWx0IHdpbGwgY2hlY2sgdGhlIGJlbG93IHN0YW5kYXJkIHBhdGhzLiBBIHBhY2thZ2UgY29uZmln dXJhdGlvbiBmaWxlIGNhbiBzcGVjaWZ5IGFueSBvZiB0aGVzZQ0KPiBwYXRocw0KPiA+PiArdG8g YmUgaWdub3JlZC4NCj4gPj4gKw0KPiA+PiArYGBgcHl0aG9uDQo+ID4+ICtbDQo+ID4+ICsjIEMg c291cmNlDQo+ID4+ICsiKi5jIiwNCj4gPj4gKyIqLmgiDQo+ID4+ICtdDQo+ID4+ICtgYGANCj4g Pj4gKw0KPiA+PiArIyMjIGBPdXRwdXRGaWxlRGlmZnNgDQo+ID4+ICsNCj4gPj4gK2BCb29sZWFu YCAtIERlZmF1bHQgaXMgYEZhbHNlYC4NCj4gPj4gKw0KPiA+PiArSWYgYFRydWVgLCBvdXRwdXQg ZGlmZnMgb2YgZm9ybWF0dGluZyBjaGFuZ2VzIGludG8gdGhlIHRlc3QgY2FzZSBsb2cuIFRoaXMg aXMgaGVscGZ1bCB0byBleGFjdGx5IHVuZGVyc3RhbmQgd2hhdA0KPiBjaGFuZ2VzDQo+ID4+ICtu ZWVkIHRvIGJlIG1hZGUgdG8gdGhlIHNvdXJjZSBjb2RlIGluIG9yZGVyIHRvIGZpeCBhIGNvZGlu ZyBzdGFuZGFyZCBjb21wbGlhbmNlIGlzc3VlLg0KPiA+PiArDQo+ID4+ICtOb3RlIHRoYXQgY2Fs Y3VsYXRpbmcgdGhlIGZpbGUgZGlmZnMgb24gYSB2ZXJ5IGxhcmdlIHNldCBvZiBvZiByZXN1bHRz IChlLmcuID4xMDAgZmlsZXMpIGNhbiBzaWduaWZpY2FudGx5IHNsb3cgZG93bg0KPiA+PiArcGx1 Z2luIGV4ZWN1dGlvbi4NCj4gPj4gKw0KPiA+PiArIyMjIGBTa2lwR2l0RXhjbHVzaW9uc2ANCj4g Pj4gKw0KPiA+PiArYEJvb2xlYW5gIC0gRGVmYXVsdCBpcyBgRmFsc2VgLg0KPiA+PiArDQo+ID4+ ICtCeSBkZWZhdWx0LCBmaWxlcyBpbiBwYXRocyBtYXRjaGVkIGluIGEgLmdpdGlnbm9yZSBmaWxl IG9yIGEgcmVjb2duaXplZCBnaXQgc3VibW9kdWxlIGFyZSBleGNsdWRlZC4gSWYgdGhpcyBvcHRp b24NCj4gPj4gK2lzIGBUcnVlYCwgdGhlIHBsdWdpbiB3aWxsIG5vdCBhdHRlbXB0IHRvIHJlY29n bml6ZSB0aGVzZSBmaWxlcyBhbmQgZXhjbHVkZSB0aGVtLg0KPiA+PiArDQo+ID4+ICsjIyBIaWdo LUxldmVsIFBsdWdpbiBPcGVyYXRpb24NCj4gPj4gKw0KPiA+PiArVGhpcyBwbHVnaW4gZ2VuZXJh dGVzIHR3byBtYWluIHNldHMgb2YgdGVtcG9yYXJ5IGZpbGVzOg0KPiA+PiArDQo+ID4+ICsgIDEu IEEgd29ya2luZyBkaXJlY3RvcnkgaW4gdGhlIGRpcmVjdG9yeSBgQnVpbGQvLnB5dG9vbC9QbHVn aW4vVW5jcnVzdGlmeWANCj4gPj4gKyAgMi4gRm9yIGVhY2ggc291cmNlIGZpbGUgd2l0aCBmb3Jt YXR0aW5nIGVycm9ycywgYSBzaWJsaW5nIGZpbGUgd2l0aCB0aGUgYC51bmNydXN0aWZ5X3BsdWdp bmAgZXh0ZW5zaW9uDQo+ID4+ICsNCj4gPj4gK1RoZSB3b3JraW5nIGRpcmVjdG9yeSBjb250YWlu cyB0ZW1wb3JhcnkgZmlsZXMgdW5pcXVlIHRvIG9wZXJhdGlvbiBvZiB0aGUgcGx1Z2luLiBBbGwg b2YgdGhlc2UgZmlsZXMgYXJlIHJlbW92ZWQgb24NCj4gPj4gK2V4aXQgb2YgdGhlIHBsdWdpbiBp bmNsdWRpbmcgc3VjY2Vzc2Z1bCBvciB1bnN1Y2Nlc3NmdWwgZXhlY3V0aW9uIChzdWNoIGFzIGEg UHl0aG9uIGV4Y2VwdGlvbiBvY2N1cnJpbmcpLiBJZiBmb3IgYW55DQo+ID4+ICtyZWFzb24sIGFu eSBmaWxlcyBpbiB0aGUgcGFja2FnZSBleGlzdCBwcmlvciB0byBydW5uaW5nIHRoZSBwbHVnaW4g d2l0aCB0aGUgYC51bmNydXN0aWZ5X3BsdWdpbmAgZXh0ZW5zaW9uLCB0aGUgcGx1Z2luDQo+ID4+ ICt3aWxsIGluZm9ybSB0aGUgdXNlciB0byByZW1vdmUgdGhlc2UgZmlsZXMgYW5kIGV4aXQgYmVm b3JlIHJ1bm5pbmcgVW5jcnVzdGlmeS4gVGhpcyBpcyB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IG9m IHRoZQ0KPiA+PiArcmVzdWx0cyByZXBvcnRlZCBmcm9tIGVhY2ggZXhlY3V0aW9uIGluc3RhbmNl IG9mIHRoZSBwbHVnaW4uDQo+ID4+ICsNCj4gPj4gK1RoZSBwbHVnaW4gZGV0ZXJtaW5lcyB0aGUg bGlzdCBvZiByZWxldmFudCBmaWxlcyB0byBjaGVjayB3aXRoIFVuY3J1c3RpZnkgYW5kIHRoZW4g aW52b2tlcyBVbmNydXN0aWZ5IHdpdGggdGhhdCBmaWxlDQo+ID4+ICtsaXN0LiBGb3IgYW55IGZp bGVzIG5vdCBjb21wbGlhbnQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBwcm92aWRlZCwgVW5j cnVzdGlmeSB3aWxsIGdlbmVyYXRlIGEgY29ycmVzcG9uZGluZyBmaWxlDQo+ID4+ICt3aXRoIHRo ZSBgLnVuY3J1c3RpZnlfcGx1Z2luYCBleHRlbnNpb24uIFRoZSBwbHVnaW4gZGlzY292ZXJzIGFs bCBvZiB0aGVzZSBmaWxlcy4gSWYgYW55IHN1Y2ggZmlsZXMgYXJlIHByZXNlbnQsIHRoaXMNCj4g Pj4gK2luZGljYXRlcyBhIGZvcm1hdHRpbmcgaXNzdWUgd2FzIGZvdW5kIGFuZCB0aGUgdGVzdCBp cyBtYXJrZWQgZmFpbGVkICh1bmxlc3MgYEF1ZGl0T25seWAgbW9kZSBpcyBlbmFibGVkKS4NCj4g Pj4gKw0KPiA+PiArVGhlIHRlc3QgY2FzZSBsb2cgd2lsbCBjb250YWluIGEgcmVwb3J0IG9mIHdo aWNoIGZpbGVzIGZhaWxlZCB0byBmb3JtYXQgcHJvcGVybHksIGFsbG93aW5nIHRoZSB1c2VyIHRv IHJ1biBVbmNydXN0aWZ5DQo+ID4+ICthZ2FpbnN0IHRoZSBmaWxlIGxvY2FsbHkgdG8gZml4IHRo ZSBpc3N1ZS4gSWYgdGhlIGBPdXRwdXRGaWxlRGlmZnNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlz IHNldCB0byBgVHJ1ZWAsIHRoZSBwbHVnaW4NCj4gPj4gK3dpbGwgb3V0cHV0IGRpZmYgY2h1bmtz IGZvciBhbGwgY29kZSBmb3JtYXR0aW5nIGlzc3VlcyBpbiB0aGUgdGVzdCBjYXNlIGxvZy4NCj4g Pj4gZGlmZiAtLWdpdCBhLy5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9VbmNydXN0aWZ5 Q2hlY2sucHkgYi8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svVW5jcnVzdGlmeUNoZWNr LnB5DQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4u NTk1MzQ0NjlhMmQzDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrIGIvLnB5dG9vbC9QbHVn aW4vVW5jcnVzdGlmeUNoZWNrL1VuY3J1c3RpZnlDaGVjay5weQ0KPiA+PiBAQCAtMCwwICsxLDYx NyBAQA0KPiA+PiArIyBAZmlsZSBVbmNydXN0aWZ5Q2hlY2sucHkNCj4gPj4gKyMNCj4gPj4gKyMg QW4gZWRrMi1weXRvb2wgYmFzZWQgcGx1Z2luIHdyYXBwZXIgZm9yIFVuY3J1c3RpZnkNCj4gPj4g KyMNCj4gPj4gKyMgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uDQo+ID4+ICsj IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+ICsjIw0K PiA+PiAraW1wb3J0IGNvbmZpZ3BhcnNlcg0KPiA+PiAraW1wb3J0IGRpZmZsaWINCj4gPj4gK2lt cG9ydCBlcnJubw0KPiA+PiAraW1wb3J0IGxvZ2dpbmcNCj4gPj4gK2ltcG9ydCBvcw0KPiA+PiAr aW1wb3J0IHBhdGhsaWINCj4gPj4gK2ltcG9ydCBzaHV0aWwNCj4gPj4gK2ltcG9ydCB0aW1laXQN Cj4gPj4gK2Zyb20gZWRrMnRvb2xleHQuZW52aXJvbm1lbnQgaW1wb3J0IHZlcnNpb25fYWdncmVn YXRvcg0KPiA+PiArZnJvbSBlZGsydG9vbGV4dC5lbnZpcm9ubWVudC5wbHVnaW5fbWFuYWdlciBp bXBvcnQgUGx1Z2luTWFuYWdlcg0KPiA+PiArZnJvbSBlZGsydG9vbGV4dC5lbnZpcm9ubWVudC5w bHVnaW50eXBlcy5jaV9idWlsZF9wbHVnaW4gaW1wb3J0IElDaUJ1aWxkUGx1Z2luDQo+ID4+ICtm cm9tIGVkazJ0b29sZXh0LmVudmlyb25tZW50LnBsdWdpbnR5cGVzLnVlZmlfaGVscGVyX3BsdWdp biBpbXBvcnQgSGVscGVyRnVuY3Rpb25zDQo+ID4+ICtmcm9tIGVkazJ0b29sZXh0LmVudmlyb25t ZW50LnZhcl9kaWN0IGltcG9ydCBWYXJEaWN0DQo+ID4+ICtmcm9tIGVkazJ0b29sbGliLmxvZy5q dW5pdF9yZXBvcnRfZm9ybWF0IGltcG9ydCBKdW5pdFJlcG9ydFRlc3RDYXNlDQo+ID4+ICtmcm9t IGVkazJ0b29sbGliLnVlZmkuZWRrMi5wYXRoX3V0aWxpdGllcyBpbXBvcnQgRWRrMlBhdGgNCj4g Pj4gK2Zyb20gZWRrMnRvb2xsaWIudXRpbGl0eV9mdW5jdGlvbnMgaW1wb3J0ICBSdW5DbWQNCj4g Pj4gK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPDQo+ID4+ICtmcm9tIHR5cGluZyBpbXBvcnQgQW55 LCBEaWN0LCBMaXN0LCBUdXBsZQ0KPiA+PiArDQo+ID4+ICsjDQo+ID4+ICsjIFByb3ZpZGUgbW9y ZSB1c2VyIGZyaWVuZGx5IG1lc3NhZ2VzIGZvciBjZXJ0YWluIHNjZW5hcmlvcw0KPiA+PiArIw0K PiA+PiArY2xhc3MgVW5jcnVzdGlmeUV4Y2VwdGlvbihFeGNlcHRpb24pOg0KPiA+PiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBleGl0X2NvZGUpOg0KPiA+PiArICAgICAgICBzdXBl cigpLl9faW5pdF9fKG1lc3NhZ2UpDQo+ID4+ICsgICAgICAgIHNlbGYuZXhpdF9jb2RlID0gZXhp dF9jb2RlDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArY2xhc3MgVW5jcnVzdGlmeUFwcEVudlZhck5v dEZvdW5kRXhjZXB0aW9uKFVuY3J1c3RpZnlFeGNlcHRpb24pOg0KPiA+PiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBtZXNzYWdlKToNCj4gPj4gKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNz YWdlLCAtMTAxKQ0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2NsYXNzIFVuY3J1c3RpZnlBcHBWZXJz aW9uRXJyb3JFeGNlcHRpb24oVW5jcnVzdGlmeUV4Y2VwdGlvbik6DQo+ID4+ICsgICAgZGVmIF9f aW5pdF9fKHNlbGYsIG1lc3NhZ2UpOg0KPiA+PiArICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1l c3NhZ2UsIC0xMDIpDQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArY2xhc3MgVW5jcnVzdGlmeUFwcEV4 ZWN1dGlvbkV4Y2VwdGlvbihVbmNydXN0aWZ5RXhjZXB0aW9uKToNCj4gPj4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgbWVzc2FnZSk6DQo+ID4+ICsgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVz c2FnZSwgLTEwMykNCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtjbGFzcyBVbmNydXN0aWZ5U3RhbGVQ bHVnaW5Gb3JtYXR0ZWRGaWxlc0V4Y2VwdGlvbihVbmNydXN0aWZ5RXhjZXB0aW9uKToNCj4gPj4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6DQo+ID4+ICsgICAgICAgIHN1cGVyKCku X19pbml0X18obWVzc2FnZSwgLTEyMCkNCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtjbGFzcyBVbmNy dXN0aWZ5SW5wdXRGaWxlQ3JlYXRpb25FcnJvckV4Y2VwdGlvbihVbmNydXN0aWZ5RXhjZXB0aW9u KToNCj4gPj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6DQo+ID4+ICsgICAgICAg IHN1cGVyKCkuX19pbml0X18obWVzc2FnZSwgLTEyMSkNCj4gPj4gKw0KPiA+PiArY2xhc3MgVW5j cnVzdGlmeUludmFsaWRJZ25vcmVTdGFuZGFyZFBhdGhzRXhjZXB0aW9uKFVuY3J1c3RpZnlFeGNl cHRpb24pOg0KPiA+PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToNCj4gPj4gKyAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdlLCAtMTIyKQ0KPiA+PiArDQo+ID4+ICtjbGFz cyBVbmNydXN0aWZ5R2l0SWdub3JlRmlsZUV4Y2VwdGlvbihVbmNydXN0aWZ5RXhjZXB0aW9uKToN Cj4gPj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6DQo+ID4+ICsgICAgICAgIHN1 cGVyKCkuX19pbml0X18obWVzc2FnZSwgLTE0MCkNCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtjbGFz cyBVbmNydXN0aWZ5R2l0U3VibW9kdWxlRXhjZXB0aW9uKFVuY3J1c3RpZnlFeGNlcHRpb24pOg0K PiA+PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToNCj4gPj4gKyAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhtZXNzYWdlLCAtMTQxKQ0KPiA+PiArDQo+ID4+ICsNCj4gPj4gK2NsYXNz IFVuY3J1c3RpZnlDaGVjayhJQ2lCdWlsZFBsdWdpbik6DQo+ID4+ICsgICAgIiIiDQo+ID4+ICsg ICAgQSBDaUJ1aWxkUGx1Z2luIHRoYXQgdXNlcyBVbmNydXN0aWZ5IHRvIGNoZWNrIHRoZSBzb3Vy Y2UgZmlsZXMgaW4gdGhlDQo+ID4+ICsgICAgcGFja2FnZSBiZWluZyB0ZXN0ZWQgZm9yIGNvZGlu ZyBzdGFuZGFyZCBpc3N1ZXMuDQo+ID4+ICsNCj4gPj4gKyAgICBCeSBkZWZhdWx0LCB0aGUgcGx1 Z2luIHJ1bnMgYWdhaW5zdCBzdGFuZGFyZCBDIHNvdXJjZSBmaWxlIGV4dGVuc2lvbnMgYnV0DQo+ ID4+ICsgICAgaXRzIGNvbmZpZ3VyYXRpb24gY2FuIGJlIG1vZGlmaWVkIHRocm91Z2ggaXRzIGNv bmZpZ3VyYXRpb24gZmlsZS4NCj4gPj4gKw0KPiA+PiArICAgIENvbmZpZ3VyYXRpb24gb3B0aW9u czoNCj4gPj4gKyAgICAiVW5jcnVzdGlmeUNoZWNrIjogew0KPiA+PiArICAgICAgICAiQWRkaXRp b25hbEluY2x1ZGVQYXRocyI6IFtdLCAjIEFkZGl0aW9uYWwgcGF0aHMgdG8gY2hlY2sgZm9ybWF0 dGluZyAod2lsZGNhcmRzIHN1cHBvcnRlZCkuDQo+ID4+ICsgICAgICAgICJBdWRpdE9ubHkiOiBG YWxzZSwgICAgICAgICAgICMgRG9uJ3QgZmFpbCB0aGUgYnVpbGQgaWYgdGhlcmUgYXJlIGVycm9y cy4gIEp1c3QgbG9nIHRoZW0uDQo+ID4+ICsgICAgICAgICJDb25maWdGaWxlUGF0aCI6ICIiLCAg ICAgICAgICMgQ3VzdG9tIHBhdGggdG8gYW4gVW5jcnVzdGlmeSBjb25maWcgZmlsZS4NCj4gPj4g KyAgICAgICAgIklnbm9yZVN0YW5kYXJkUGF0aHMiOiBbXSwgICAgIyBTdGFuZGFyZCBQbHVnaW4g ZGVmaW5lZCBwYXRocyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkLg0KPiA+PiArICAgICAgICAiT3V0 cHV0RmlsZURpZmZzIjogRmFsc2UsICAgICAjIE91dHB1dCBjaHVua3Mgb2YgZm9ybWF0dGluZyBk aWZmcyBpbiB0aGUgdGVzdCBjYXNlIGxvZy4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBUaGlzIGNhbiBzaWduaWZpY2FudGx5IHNsb3cgZG93biB0aGUgcGx1 Z2luIG9uIHZlcnkgbGFyZ2UgcGFja2FnZXMuDQo+ID4+ICsgICAgICAgICJTa2lwR2l0RXhjbHVz aW9ucyI6IEZhbHNlICAgICMgRG9uJ3QgZXhjbHVkZSBnaXQgaWdub3JlZCBmaWxlcyBhbmQgZmls ZXMgaW4gZ2l0IHN1Ym1vZHVsZXMuDQo+ID4+ICsgICAgfQ0KPiA+PiArICAgICIiIg0KPiA+PiAr DQo+ID4+ICsgICAgIw0KPiA+PiArICAgICMgQnkgZGVmYXVsdCwgdXNlIGFuICJ1bmNydXN0aWZ5 LmNmZyIgY29uZmlnIGZpbGUgaW4gdGhlIHBsdWdpbiBkaXJlY3RvcnkNCj4gPj4gKyAgICAjIEEg cGFja2FnZSBjYW4gb3ZlcnJpZGUgdGhpcyBwYXRoIHZpYSAiQ29uZmlnRmlsZVBhdGgiDQo+ID4+ ICsgICAgIw0KPiA+PiArICAgICMgTm90ZTogVmFsdWVzIHNwZWNpZmllZCB2aWEgIkNvbmZpZ0Zp bGVQYXRoIiBhcmUgcmVsYXRpdmUgdG8gdGhlIHBhY2thZ2UNCj4gPj4gKyAgICAjDQo+ID4+ICsg ICAgREVGQVVMVF9DT05GSUdfRklMRV9QQVRIID0gb3MucGF0aC5qb2luKA0KPiA+PiArICAgICAg ICBwYXRobGliLlBhdGgoX19maWxlX18pLnBhcmVudC5yZXNvbHZlKCksICJ1bmNydXN0aWZ5LmNm ZyIpDQo+ID4+ICsNCj4gPj4gKyAgICAjDQo+ID4+ICsgICAgIyBUaGUgZXh0ZW5zaW9uIHVzZWQg Zm9yIGZvcm1hdHRlZCBmaWxlcyBwcm9kdWNlZCBieSB0aGlzIHBsdWdpbg0KPiA+PiArICAgICMN Cj4gPj4gKyAgICBGT1JNQVRURURfRklMRV9FWFRFTlNJT04gPSAiLnVuY3J1c3RpZnlfcGx1Z2lu Ig0KPiA+PiArDQo+ID4+ICsgICAgIw0KPiA+PiArICAgICMgQSBwYWNrYWdlIGNhbiBhZGQgYW55 IGFkZGl0aW9uYWwgcGF0aHMgd2l0aCAiQWRkaXRpb25hbEluY2x1ZGVQYXRocyINCj4gPj4gKyAg ICAjIEEgcGFja2FnZSBjYW4gcmVtb3ZlIGFueSBvZiB0aGVzZSBwYXRocyB3aXRoICJJZ25vcmVT dGFuZGFyZFBhdGhzIg0KPiA+PiArICAgICMNCj4gPj4gKyAgICBTVEFOREFSRF9QTFVHSU5fREVG SU5FRF9QQVRIUyA9ICgiKi5jIiwgIiouaCIpDQo+ID4+ICsNCj4gPj4gKyAgICAjDQo+ID4+ICsg ICAgIyBUaGUgVW5jcnVzdGlmeSBhcHBsaWNhdGlvbiBwYXRoIHNob3VsZCBzZXQgaW4gdGhpcyBl bnZpcm9ubWVudCB2YXJpYWJsZQ0KPiA+PiArICAgICMNCj4gPj4gKyAgICBVTkNSVVNUSUZZX1BB VEhfRU5WX0tFWSA9ICJVTkNSVVNUSUZZX0NJX1BBVEgiDQo+ID4+ICsNCj4gPj4gKyAgICBkZWYg R2V0VGVzdE5hbWUoc2VsZiwgcGFja2FnZW5hbWU6IHN0ciwgZW52aXJvbm1lbnQ6IFZhckRpY3Qp IC0+IFR1cGxlOg0KPiA+PiArICAgICAgICAiIiIgUHJvdmlkZSB0aGUgdGVzdGNhc2UgbmFtZSBh bmQgY2xhc3NuYW1lIGZvciB1c2UgaW4gcmVwb3J0aW5nDQo+ID4+ICsNCj4gPj4gKyAgICAgICAg ICAgIEFyZ3M6DQo+ID4+ICsgICAgICAgICAgICAgIHBhY2thZ2VuYW1lOiBzdHJpbmcgY29udGFp bmluZyBuYW1lIG9mIHBhY2thZ2UgdG8gYnVpbGQNCj4gPj4gKyAgICAgICAgICAgICAgZW52aXJv bm1lbnQ6IFRoZSBWYXJEaWN0IGZvciB0aGUgdGVzdCB0byBydW4gaW4NCj4gPj4gKyAgICAgICAg ICAgIFJldHVybnM6DQo+ID4+ICsgICAgICAgICAgICAgICAgQSB0dXBsZSBjb250YWluaW5nIHRo ZSB0ZXN0Y2FzZSBuYW1lIGFuZCB0aGUgY2xhc3NuYW1lDQo+ID4+ICsgICAgICAgICAgICAgICAg KHRlc3RjYXNlbmFtZSwgY2xhc3NuYW1lKQ0KPiA+PiArICAgICAgICAgICAgICAgIHRlc3RjbGFz c25hbWU6IGEgZGVzY3JpcHRpdmUgc3RyaW5nIGZvciB0aGUgdGVzdGNhc2UgY2FuIGluY2x1ZGUg d2hpdGVzcGFjZQ0KPiA+PiArICAgICAgICAgICAgICAgIGNsYXNzbmFtZTogc2hvdWxkIGJlIHBh dHRlcm5lZCA8cGFja2FnZW5hbWU+LjxwbHVnaW4+LjxvcHRpb25hbGx5IGFueSB1bmlxdWUgY29u ZGl0aW9uPg0KPiA+PiArICAgICAgICAiIiINCj4gPj4gKyAgICAgICAgcmV0dXJuICgiQ2hlY2sg ZmlsZSBjb2Rpbmcgc3RhbmRhcmQgY29tcGxpYW5jZSBpbiAiICsgcGFja2FnZW5hbWUsIHBhY2th Z2VuYW1lICsgIi5VbmNydXN0aWZ5Q2hlY2siKQ0KPiA+PiArDQo+ID4+ICsgICAgZGVmIFJ1bkJ1 aWxkUGx1Z2luKHNlbGYsIHBhY2thZ2VfcmVsX3BhdGg6IHN0ciwgZWRrMl9wYXRoOiBFZGsyUGF0 aCwgcGFja2FnZV9jb25maWc6IERpY3Rbc3RyLCBMaXN0W3N0cl1dLA0KPiA+PiBlbnZpcm9ubWVu dF9jb25maWc6IEFueSwgcGx1Z2luX21hbmFnZXI6IFBsdWdpbk1hbmFnZXIsIHBsdWdpbl9tYW5h Z2VyX2hlbHBlcjogSGVscGVyRnVuY3Rpb25zLCB0YzoNCj4gSnVuaXRSZXBvcnRUZXN0Q2FzZSwN Cj4gPj4gb3V0cHV0X3N0cmVhbT1Ob25lKSAtPiBpbnQ6DQo+ID4+ICsgICAgICAgICIiIg0KPiA+ PiArICAgICAgICBFeHRlcm5hbCBmdW5jdGlvbiBvZiBwbHVnaW4uIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBwZXJmb3JtIHRoZSB0YXNrIG9mIHRoZSBDaUJ1aWxkIFBsdWdpbi4NCj4gPj4gKw0K PiA+PiArICAgICAgICBBcmdzOg0KPiA+PiArICAgICAgICAgIC0gcGFja2FnZV9yZWxfcGF0aDog ZWRrMiB3b3Jrc3BhY2UgcmVsYXRpdmUgcGF0aCB0byB0aGUgcGFja2FnZQ0KPiA+PiArICAgICAg ICAgIC0gZWRrMl9wYXRoOiBFZGsyUGF0aCBvYmplY3Qgd2l0aCB3b3Jrc3BhY2UgYW5kIHBhY2th Z2VzIHBhdGhzDQo+ID4+ICsgICAgICAgICAgLSBwYWNrYWdlX2NvbmZpZzogRGljdGlvbmFyeSB3 aXRoIHRoZSBwYWNrYWdlIGNvbmZpZ3VyYXRpb24NCj4gPj4gKyAgICAgICAgICAtIGVudmlyb25t ZW50X2NvbmZpZzogRW52aXJvbm1lbnQgY29uZmlndXJhdGlvbg0KPiA+PiArICAgICAgICAgIC0g cGx1Z2luX21hbmFnZXI6IFBsdWdpbiBNYW5hZ2VyIEluc3RhbmNlDQo+ID4+ICsgICAgICAgICAg LSBwbHVnaW5fbWFuYWdlcl9oZWxwZXI6IFBsdWdpbiBNYW5hZ2VyIEhlbHBlciBJbnN0YW5jZQ0K PiA+PiArICAgICAgICAgIC0gdGM6IEpVbml0IHRlc3QgY2FzZQ0KPiA+PiArICAgICAgICAgIC0g b3V0cHV0X3N0cmVhbTogVGhlIFN0cmluZ0lPIG91dHB1dCBzdHJlYW0gZnJvbSB0aGlzIHBsdWdp biAobG9nZ2luZykNCj4gPj4gKw0KPiA+PiArICAgICAgICBSZXR1cm5zDQo+ID4+ICsgICAgICAg ICAgPjAgOiBOdW1iZXIgb2YgZXJyb3JzIGZvdW5kDQo+ID4+ICsgICAgICAgICAgMCAgOiBQYXNz ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4+ICsgICAgICAgICAgLTEgOiBTa2lwcGVkIGZvciBtaXNzaW5n IHByZXJlcQ0KPiA+PiArICAgICAgICAiIiINCj4gPj4gKyAgICAgICAgdHJ5Og0KPiA+PiArICAg ICAgICAgICAgIyBJbml0aWFsaXplIHBsdWdpbiBhbmQgY2hlY2sgcHJlLXJlcXVpc2l0ZXMuDQo+ ID4+ICsgICAgICAgICAgICBzZWxmLl9pbml0aWFsaXplX2Vudmlyb25tZW50X2luZm8oDQo+ID4+ ICsgICAgICAgICAgICAgICAgcGFja2FnZV9yZWxfcGF0aCwgZWRrMl9wYXRoLCBwYWNrYWdlX2Nv bmZpZywgdGMpDQo+ID4+ICsgICAgICAgICAgICBzZWxmLl9pbml0aWFsaXplX2NvbmZpZ3VyYXRp b24oKQ0KPiA+PiArICAgICAgICAgICAgc2VsZi5fY2hlY2tfZm9yX3ByZWV4aXN0aW5nX2Zvcm1h dHRlZF9maWxlcygpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgICMgTG9nIGltcG9ydGFudCBj b250ZXh0IGluZm9ybWF0aW9uLg0KPiA+PiArICAgICAgICAgICAgc2VsZi5fbG9nX3VuY3J1c3Rp ZnlfYXBwX2luZm8oKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICAjIEdldCB0ZW1wbGF0ZSBm aWxlIGNvbnRlbnRzIGlmIHNwZWNpZmllZA0KPiA+PiArICAgICAgICAgICAgc2VsZi5fZ2V0X3Rl bXBsYXRlX2ZpbGVfY29udGVudHMoKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICAjIENyZWF0 ZSBtZXRhIGlucHV0IGZpbGVzICYgZGlyZWN0b3JpZXMNCj4gPj4gKyAgICAgICAgICAgIHNlbGYu X2NyZWF0ZV90ZW1wX3dvcmtpbmdfZGlyZWN0b3J5KCkNCj4gPj4gKyAgICAgICAgICAgIHNlbGYu X2NyZWF0ZV91bmNydXN0aWZ5X2ZpbGVfbGlzdF9maWxlKCkNCj4gPj4gKw0KPiA+PiArICAgICAg ICAgICAgc2VsZi5fcnVuX3VuY3J1c3RpZnkoKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICAj IFBvc3QtZXhlY3V0aW9uIGFjdGlvbnMuDQo+ID4+ICsgICAgICAgICAgICBzZWxmLl9wcm9jZXNz X3VuY3J1c3RpZnlfcmVzdWx0cygpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgZXhjZXB0IFVuY3J1 c3RpZnlFeGNlcHRpb24gYXMgZToNCj4gPj4gKyAgICAgICAgICAgIHNlbGYuX3RjLkxvZ1N0ZEVy cm9yKA0KPiA+PiArICAgICAgICAgICAgICAgIGYiVW5jcnVzdGlmeSBlcnJvciB7ZS5leGl0X2Nv ZGV9LiBEZXRhaWxzOlxuXG57c3RyKGUpfSIpDQo+ID4+ICsgICAgICAgICAgICBsb2dnaW5nLndh cm5pbmcoDQo+ID4+ICsgICAgICAgICAgICAgICAgZiJVbmNydXN0aWZ5IGVycm9yIHtlLmV4aXRf Y29kZX0uIERldGFpbHM6XG5cbntzdHIoZSl9IikNCj4gPj4gKyAgICAgICAgICAgIHJldHVybiAt MQ0KPiA+PiArICAgICAgICBlbHNlOg0KPiA+PiArICAgICAgICAgICAgaWYgc2VsZi5fZm9ybWF0 dGVkX2ZpbGVfZXJyb3JfY291bnQgPiAwOg0KPiA+PiArICAgICAgICAgICAgICAgIGlmIHNlbGYu X2F1ZGl0X29ubHlfbW9kZToNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy5pbmZv KA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgIlNldHRpbmcgdGVzdCBhcyBza2lwcGVk IHNpbmNlIEF1ZGl0T25seSBpcyBlbmFibGVkIikNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5fdGMuU2V0U2tpcHBlZCgpDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiAt MQ0KPiA+PiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuX3RjLlNldEZhaWxlZCgNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYie3Nl bGYuX3BsdWdpbl9uYW1lfSBmYWlsZWQgZHVlIHRvIHtzZWxmLl9mb3JtYXR0ZWRfZmlsZV9lcnJv cl9jb3VudH0gaW5jb3JyZWN0bHkgZm9ybWF0dGVkDQo+ID4+IGZpbGVzLiIsICJDSEVDS19GQUlM RUQiKQ0KPiA+PiArICAgICAgICAgICAgZWxzZToNCj4gPj4gKyAgICAgICAgICAgICAgICBzZWxm Ll90Yy5TZXRTdWNjZXNzKCkNCj4gPj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9mb3JtYXR0 ZWRfZmlsZV9lcnJvcl9jb3VudA0KPiA+PiArICAgICAgICBmaW5hbGx5Og0KPiA+PiArICAgICAg ICAgICAgc2VsZi5fY2xlYW51cF90ZW1wb3JhcnlfZm9ybWF0dGVkX2ZpbGVzKCkNCj4gPj4gKyAg ICAgICAgICAgIHNlbGYuX2NsZWFudXBfdGVtcG9yYXJ5X2RpcmVjdG9yeSgpDQo+ID4+ICsNCj4g Pj4gKyAgICBkZWYgX2luaXRpYWxpemVfY29uZmlndXJhdGlvbihzZWxmKSAtPiBOb25lOg0KPiA+ PiArICAgICAgICAiIiINCj4gPj4gKyAgICAgICAgSW5pdGlhbGl6ZXMgcGx1Z2luIGNvbmZpZ3Vy YXRpb24uDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBzZWxmLl9pbml0aWFsaXpl X2FwcF9pbmZvKCkNCj4gPj4gKyAgICAgICAgc2VsZi5faW5pdGlhbGl6ZV9jb25maWdfZmlsZV9p bmZvKCkNCj4gPj4gKyAgICAgICAgc2VsZi5faW5pdGlhbGl6ZV9maWxlX3RvX2Zvcm1hdF9pbmZv KCkNCj4gPj4gKyAgICAgICAgc2VsZi5faW5pdGlhbGl6ZV90ZXN0X2Nhc2Vfb3V0cHV0X29wdGlv bnMoKQ0KPiA+PiArDQo+ID4+ICsgICAgZGVmIF9jaGVja19mb3JfcHJlZXhpc3RpbmdfZm9ybWF0 dGVkX2ZpbGVzKHNlbGYpIC0+IE5vbmU6DQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAg ICBDaGVja3MgaWYgYW55IGZvcm1hdHRlZCBmaWxlcyBmcm9tIHByaW9yIGV4ZWN1dGlvbiBhcmUg cHJlc2VudC4NCj4gPj4gKw0KPiA+PiArICAgICAgICBFeGlzdGVuY2Ugb2Ygc3VjaCBmaWxlcyBp cyBhbiB1bmV4cGVjdGVkIGNvbmRpdGlvbi4gVGhpcyBtaWdodCByZXN1bHQNCj4gPj4gKyAgICAg ICAgZnJvbSBhbiBlcnJvciB0aGF0IG9jY3VycmVkIGR1cmluZyBhIHByZXZpb3VzIHJ1biBvciBh IHByZW1hdHVyZSBleGl0IGZyb20gYSBkZWJ1ZyBzY2VuYXJpby4gSW4gYW55IGNhc2UsIHRoZQ0K PiA+PiBwYWNrYWdlIHNob3VsZCBiZSBjbGVhbiBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgcnVuLg0K PiA+PiArICAgICAgICAiIiINCj4gPj4gKyAgICAgICAgcHJlX2V4aXN0aW5nX2Zvcm1hdHRlZF9m aWxlX2NvdW50ID0gbGVuKA0KPiA+PiArICAgICAgICAgICAgW3N0cihwYXRoLnJlc29sdmUoKSkg Zm9yIHBhdGggaW4NCj4gPj4gcGF0aGxpYi5QYXRoKHNlbGYuX2Fic19wYWNrYWdlX3BhdGgpLnJn bG9iKGYnKntVbmNydXN0aWZ5Q2hlY2suRk9STUFUVEVEX0ZJTEVfRVhURU5TSU9OfScpXSkNCj4g Pj4gKw0KPiA+PiArICAgICAgICBpZiBwcmVfZXhpc3RpbmdfZm9ybWF0dGVkX2ZpbGVfY291bnQg PiAwOg0KPiA+PiArICAgICAgICAgICAgcmFpc2UgVW5jcnVzdGlmeVN0YWxlUGx1Z2luRm9ybWF0 dGVkRmlsZXNFeGNlcHRpb24oDQo+ID4+ICsgICAgICAgICAgICAgICAgZiJ7cHJlX2V4aXN0aW5n X2Zvcm1hdHRlZF9maWxlX2NvdW50fSBmb3JtYXR0ZWQgZmlsZXMgYWxyZWFkeSBleGlzdC4gVG8g cHJldmVudCBvdmVyd3JpdGluZyB0aGVzZQ0KPiBmaWxlcywNCj4gPj4gcGxlYXNlIHJlbW92ZSB0 aGVtIGJlZm9yZSBydW5uaW5nIHRoaXMgcGx1Z2luLiIpDQo+ID4+ICsNCj4gPj4gKyAgICBkZWYg X2NsZWFudXBfdGVtcG9yYXJ5X2RpcmVjdG9yeShzZWxmKSAtPiBOb25lOg0KPiA+PiArICAgICAg ICAiIiINCj4gPj4gKyAgICAgICAgQ2xlYW5zIHVwIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHVz ZWQgZm9yIHRoaXMgZXhlY3V0aW9uIGluc3RhbmNlLg0KPiA+PiArDQo+ID4+ICsgICAgICAgIFRo aXMgcmVtb3ZlcyB0aGUgZGlyZWN0b3J5IGFuZCBhbGwgZmlsZXMgY3JlYXRlZCBkdXJpbmcgdGhp cyBpbnN0YW5jZS4NCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIGlmIGhhc2F0dHIo c2VsZiwgJ193b3JraW5nX2RpcicpOg0KPiA+PiArICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX3Ry ZWUoc2VsZi5fd29ya2luZ19kaXIpDQo+ID4+ICsNCj4gPj4gKyAgICBkZWYgX2NsZWFudXBfdGVt cG9yYXJ5X2Zvcm1hdHRlZF9maWxlcyhzZWxmKSAtPiBOb25lOg0KPiA+PiArICAgICAgICAiIiIN Cj4gPj4gKyAgICAgICAgQ2xlYW5zIHVwIHRoZSB0ZW1wb3JhcnkgZm9ybW1hdHRlZCBmaWxlcyBw cm9kdWNlZCBieSBVbmNydXN0aWZ5Lg0KPiA+PiArDQo+ID4+ICsgICAgICAgIFRoaXMgd2lsbCBy ZWN1cnNpdmVseSByZW1vdmUgYWxsIGZvcm1hdHRlZCBmaWxlcyBnZW5lcmF0ZWQgYnkgVW5jcnVz dGlmeQ0KPiA+PiArICAgICAgICBkdXJpbmcgdGhpcyBleGVjdXRpb24gaW5zdGFuY2UuDQo+ID4+ ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfYWJzX3BhY2th Z2VfcGF0aCcpOg0KPiA+PiArICAgICAgICAgICAgZm9ybWF0dGVkX2ZpbGVzID0gW3N0cihwYXRo LnJlc29sdmUoKSkgZm9yIHBhdGggaW4gcGF0aGxpYi5QYXRoKA0KPiA+PiArICAgICAgICAgICAg ICAgIHNlbGYuX2Fic19wYWNrYWdlX3BhdGgpLnJnbG9iKGYnKntVbmNydXN0aWZ5Q2hlY2suRk9S TUFUVEVEX0ZJTEVfRVhURU5TSU9OfScpXQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICBmb3Ig Zm9ybWF0dGVkX2ZpbGUgaW4gZm9ybWF0dGVkX2ZpbGVzOg0KPiA+PiArICAgICAgICAgICAgICAg IG9zLnJlbW92ZShmb3JtYXR0ZWRfZmlsZSkNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBfY3JlYXRl X3RlbXBfd29ya2luZ19kaXJlY3Rvcnkoc2VsZikgLT4gTm9uZToNCj4gPj4gKyAgICAgICAgIiIi DQo+ID4+ICsgICAgICAgIENyZWF0ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdXNlZCBmb3Ig dGhpcyBleGVjdXRpb24gaW5zdGFuY2UuDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAg ICBzZWxmLl93b3JraW5nX2RpciA9IG9zLnBhdGguam9pbigNCj4gPj4gKyAgICAgICAgICAgIHNl bGYuX2Fic193b3Jrc3BhY2VfcGF0aCwgIkJ1aWxkIiwgIi5weXRvb2wiLCAiUGx1Z2luIiwgZiJ7 c2VsZi5fcGx1Z2luX25hbWV9IikNCj4gPj4gKw0KPiA+PiArICAgICAgICB0cnk6DQo+ID4+ICsg ICAgICAgICAgICBwYXRobGliLlBhdGgoc2VsZi5fd29ya2luZ19kaXIpLm1rZGlyKHBhcmVudHM9 VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkNCj4gPj4gKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToN Cj4gPj4gKyAgICAgICAgICAgIHJhaXNlIFVuY3J1c3RpZnlJbnB1dEZpbGVDcmVhdGlvbkVycm9y RXhjZXB0aW9uKA0KPiA+PiArICAgICAgICAgICAgICAgIGYiRXJyb3IgY3JlYXRpbmcgcGx1Z2lu IGRpcmVjdG9yeSB7c2VsZi5fd29ya2luZ19kaXJ9LlxuXG57cmVwcihlKX0uIikNCj4gPj4gKw0K PiA+PiArICAgIGRlZiBfY3JlYXRlX3VuY3J1c3RpZnlfZmlsZV9saXN0X2ZpbGUoc2VsZikgLT4g Tm9uZToNCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIENyZWF0ZXMgdGhlIGZpbGUg d2l0aCB0aGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMgZm9yIFVuY3J1c3RpZnkgdG8gcHJvY2Vzcy4N Cj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIHNlbGYuX2FwcF9pbnB1dF9maWxlX3Bh dGggPSBvcy5wYXRoLmpvaW4oDQo+ID4+ICsgICAgICAgICAgICBzZWxmLl93b3JraW5nX2Rpciwg InVuY3J1c3RpZnlfZmlsZV9saXN0LnR4dCIpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgd2l0aCBv cGVuKHNlbGYuX2FwcF9pbnB1dF9maWxlX3BhdGgsICd3JywgZW5jb2Rpbmc9J3V0ZjgnKSBhcyBm Og0KPiA+PiArICAgICAgICAgICAgZi53cml0ZWxpbmVzKGYiXG4iLmpvaW4oc2VsZi5fYWJzX2Zp bGVfcGF0aHNfdG9fZm9ybWF0KSkNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBfZXhlY3V0ZV91bmNy dXN0aWZ5KHNlbGYpIC0+IE5vbmU6DQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBF eGVjdXRlcyBVbmNydXN0aWZ5IHdpdGggdGhlIGluaXRpYWxpemVkIGNvbmZpZ3VyYXRpb24uDQo+ ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygpDQo+ID4+ ICsgICAgICAgIHNlbGYuX2FwcF9leGl0X2NvZGUgPSBSdW5DbWQoDQo+ID4+ICsgICAgICAgICAg ICBzZWxmLl9hcHBfcGF0aCwNCj4gPj4gKyAgICAgICAgICAgIGYiLWMge3NlbGYuX2FwcF9jb25m aWdfZmlsZX0gLUYge3NlbGYuX2FwcF9pbnB1dF9maWxlX3BhdGh9IC0taWYtY2hhbmdlZCAtLXN1 ZmZpeA0KPiA+PiB7VW5jcnVzdGlmeUNoZWNrLkZPUk1BVFRFRF9GSUxFX0VYVEVOU0lPTn0iLCBv dXRzdHJlYW09b3V0cHV0KQ0KPiA+PiArICAgICAgICBzZWxmLl9hcHBfb3V0cHV0ID0gb3V0cHV0 LmdldHZhbHVlKCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBf Z2V0X2dpdF9pZ25vcmVkX3BhdGhzKHNlbGYpIC0+IExpc3Rbc3RyXToNCj4gPj4gKyAgICAgICAg IiIiIg0KPiA+PiArICAgICAgICBSZXR1cm5zIGEgbGlzdCBvZiBmaWxlIGFic29sdXRlIHBhdGgg c3RyaW5ncyB0byBhbGwgZmlsZXMgaWdub3JlZCBpbiB0aGlzIGdpdCByZXBvc2l0b3J5Lg0KPiA+ PiArDQo+ID4+ICsgICAgICAgIElmIGdpdCBpcyBub3QgZm91bmQsIGFuIGVtcHR5IGxpc3Qgd2ls bCBiZSByZXR1cm5lZC4NCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIGlmIG5vdCBz aHV0aWwud2hpY2goImdpdCIpOg0KPiA+PiArICAgICAgICAgICAgbG9nZ2luZy53YXJuKA0KPiA+ PiArICAgICAgICAgICAgICAgICJHaXQgaXMgbm90IGZvdW5kIG9uIHRoaXMgc3lzdGVtLiBHaXQg c3VibW9kdWxlIHBhdGhzIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQuIikNCj4gPj4gKyAgICAgICAg ICAgIHJldHVybiBbXQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIG91dHN0cmVhbV9idWZmZXIgPSBT dHJpbmdJTygpDQo+ID4+ICsgICAgICAgIGV4aXRfY29kZSA9IFJ1bkNtZCgiZ2l0IiwgImxzLWZp bGVzIC0tb3RoZXIiLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZ2Rp cj1zZWxmLl9hYnNfd29ya3NwYWNlX3BhdGgsIG91dHN0cmVhbT1vdXRzdHJlYW1fYnVmZmVyLA0K PiBsb2dnaW5nX2xldmVsPWxvZ2dpbmcuTk9UU0VUKQ0KPiA+PiArICAgICAgICBpZiAoZXhpdF9j b2RlICE9IDApOg0KPiA+PiArICAgICAgICAgICAgcmFpc2UgVW5jcnVzdGlmeUdpdElnbm9yZUZp bGVFeGNlcHRpb24oDQo+ID4+ICsgICAgICAgICAgICAgICAgZiJBbiBlcnJvciBvY2N1cnJlZCBy ZWFkaW5nIGdpdCBpZ25vcmUgc2V0dGluZ3MuIFRoaXMgd2lsbCBwcmV2ZW50IFVuY3J1c3RpZnkg ZnJvbSBydW5uaW5nIGFnYWluc3QgdGhlDQo+ID4+IGV4cGVjdGVkIHNldCBvZiBmaWxlcy4iKQ0K PiA+PiArDQo+ID4+ICsgICAgICAgICMgTm90ZTogVGhpcyB3aWxsIHBvdGVudGlhbGx5IGJlIGEg bGFyZ2UgbGlzdCwgYnV0IGF0IGxlYXN0IHNvcnRlZA0KPiA+PiArICAgICAgICByZXR1cm4gb3V0 c3RyZWFtX2J1ZmZlci5nZXR2YWx1ZSgpLnN0cmlwKCkuc3BsaXRsaW5lcygpDQo+ID4+ICsNCj4g Pj4gKyAgICBkZWYgX2dldF9naXRfc3VibW9kdWxlX3BhdGhzKHNlbGYpIC0+IExpc3Rbc3RyXToN Cj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIFJldHVybnMgYSBsaXN0IG9mIGRpcmVj dG9yeSBhYnNvbHV0ZSBwYXRoIHN0cmluZ3MgdG8gdGhlIHJvb3Qgb2YgZWFjaCBzdWJtb2R1bGUg aW4gdGhlIHdvcmtzcGFjZSByZXBvc2l0b3J5Lg0KPiA+PiArDQo+ID4+ICsgICAgICAgIElmIGdp dCBpcyBub3QgZm91bmQsIGFuIGVtcHR5IGxpc3Qgd2lsbCBiZSByZXR1cm5lZC4NCj4gPj4gKyAg ICAgICAgIiIiDQo+ID4+ICsgICAgICAgIGlmIG5vdCBzaHV0aWwud2hpY2goImdpdCIpOg0KPiA+ PiArICAgICAgICAgICAgbG9nZ2luZy53YXJuKA0KPiA+PiArICAgICAgICAgICAgICAgICJHaXQg aXMgbm90IGZvdW5kIG9uIHRoaXMgc3lzdGVtLiBHaXQgc3VibW9kdWxlIHBhdGhzIHdpbGwgbm90 IGJlIGNvbnNpZGVyZWQuIikNCj4gPj4gKyAgICAgICAgICAgIHJldHVybiBbXQ0KPiA+PiArDQo+ ID4+ICsgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLl9hYnNfd29y a3NwYWNlX3BhdGgsICIuZ2l0bW9kdWxlcyIpKToNCj4gPj4gKyAgICAgICAgICAgIGxvZ2dpbmcu aW5mbygNCj4gPj4gKyAgICAgICAgICAgICAgICBmIi5naXRtb2R1bGVzIGZpbGUgZm91bmQuIEV4 Y2x1ZGluZyBzdWJtb2R1bGVzIGluIHtzZWxmLl9wYWNrYWdlX25hbWV9LiIpDQo+ID4+ICsNCj4g Pj4gKyAgICAgICAgICAgIG91dHN0cmVhbV9idWZmZXIgPSBTdHJpbmdJTygpDQo+ID4+ICsgICAg ICAgICAgICBleGl0X2NvZGUgPSBSdW5DbWQoImdpdCIsICJjb25maWcgLS1maWxlIC5naXRtb2R1 bGVzIC0tZ2V0LXJlZ2V4cCBwYXRoIiwNCj4gd29ya2luZ2Rpcj1zZWxmLl9hYnNfd29ya3NwYWNl X3BhdGgsDQo+ID4+IG91dHN0cmVhbT1vdXRzdHJlYW1fYnVmZmVyLCBsb2dnaW5nX2xldmVsPWxv Z2dpbmcuTk9UU0VUKQ0KPiA+PiArICAgICAgICAgICAgaWYgKGV4aXRfY29kZSAhPSAwKToNCj4g Pj4gKyAgICAgICAgICAgICAgICByYWlzZSBVbmNydXN0aWZ5R2l0U3VibW9kdWxlRXhjZXB0aW9u KA0KPiA+PiArICAgICAgICAgICAgICAgICAgICBmIi5naXRtb2R1bGUgZmlsZSBkZXRlY3RlZCBi dXQgYW4gZXJyb3Igb2NjdXJyZWQgcmVhZGluZyB0aGUgZmlsZS4gQ2Fubm90IHByb2NlZWQgd2l0 aCB1bmtub3duDQo+ID4+IHN1Ym1vZHVsZSBwYXRocy4iKQ0KPiA+PiArDQo+ID4+ICsgICAgICAg ICAgICBzdWJtb2R1bGVfcGF0aHMgPSBbXQ0KPiA+PiArICAgICAgICAgICAgZm9yIGxpbmUgaW4g b3V0c3RyZWFtX2J1ZmZlci5nZXR2YWx1ZSgpLnN0cmlwKCkuc3BsaXRsaW5lcygpOg0KPiA+PiAr ICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9wYXRocy5hcHBlbmQoDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgIG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNlbGYuX2Fic193b3Jrc3Bh Y2VfcGF0aCwgbGluZS5zcGxpdCgpWzFdKSkpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgIHJl dHVybiBzdWJtb2R1bGVfcGF0aHMNCj4gPj4gKyAgICAgICAgZWxzZToNCj4gPj4gKyAgICAgICAg ICAgIHJldHVybiBbXQ0KPiA+PiArDQo+ID4+ICsgICAgZGVmIF9nZXRfdGVtcGxhdGVfZmlsZV9j b250ZW50cyhzZWxmKSAtPiBOb25lOg0KPiA+PiArICAgICAgICAiIiINCj4gPj4gKyAgICAgICAg R2V0cyB0aGUgY29udGVudHMgb2YgVW5jcnVzdGlmeSB0ZW1wbGF0ZSBmaWxlcyBpZiB0aGV5IGFy ZSBzcGVjaWZpZWQNCj4gPj4gKyAgICAgICAgaW4gdGhlIFVuY3J1c3RpZnkgY29uZmlndXJhdGlv biBmaWxlLg0KPiA+PiArICAgICAgICAiIiINCj4gPj4gKw0KPiA+PiArICAgICAgICBzZWxmLl9m aWxlX3RlbXBsYXRlX2NvbnRlbnRzID0gTm9uZQ0KPiA+PiArICAgICAgICBzZWxmLl9mdW5jX3Rl bXBsYXRlX2NvbnRlbnRzID0gTm9uZQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICMgQWxsb3cgbm8g dmFsdWUgdG8gYWxsb3cgInNldCIgc3RhdGVtZW50cyBpbiB0aGUgY29uZmlnIGZpbGUgd2hpY2gg ZG8NCj4gPj4gKyAgICAgICAgIyBub3Qgc3BlY2lmeSB2YWx1ZSBhc3NpZ25tZW50DQo+ID4+ICsg ICAgICAgIHBhcnNlciA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoYWxsb3dfbm9fdmFsdWU9 VHJ1ZSkNCj4gPj4gKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2FwcF9jb25maWdfZmlsZSwgJ3In KSBhcyBjZjoNCj4gPj4gKyAgICAgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiW2R1bW15X3Nl Y3Rpb25dXG4iICsgY2YucmVhZCgpKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIHRyeToNCj4gPj4g KyAgICAgICAgICAgIGZpbGVfdGVtcGxhdGVfbmFtZSA9IHBhcnNlclsiZHVtbXlfc2VjdGlvbiJd WyJjbXRfaW5zZXJ0X2ZpbGVfaGVhZGVyIl0NCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgZmls ZV90ZW1wbGF0ZV9wYXRoID0gcGF0aGxpYi5QYXRoKGZpbGVfdGVtcGxhdGVfbmFtZSkNCj4gPj4g Kw0KPiA+PiArICAgICAgICAgICAgaWYgbm90IGZpbGVfdGVtcGxhdGVfcGF0aC5pc19maWxlKCk6 DQo+ID4+ICsgICAgICAgICAgICAgICAgZmlsZV90ZW1wbGF0ZV9wYXRoID0gcGF0aGxpYi5QYXRo KG9zLnBhdGguam9pbihzZWxmLl9wbHVnaW5fcGF0aCwgZmlsZV90ZW1wbGF0ZV9uYW1lKSkNCj4g Pj4gKyAgICAgICAgICAgICAgICBzZWxmLl9maWxlX3RlbXBsYXRlX2NvbnRlbnRzID0gZmlsZV90 ZW1wbGF0ZV9wYXRoLnJlYWRfdGV4dCgpDQo+ID4+ICsgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoN Cj4gPj4gKyAgICAgICAgICAgIGxvZ2dpbmcud2FybigiQSBmaWxlIGhlYWRlciB0ZW1wbGF0ZSBp cyBub3Qgc3BlY2lmaWVkIGluIHRoZSBjb25maWcgZmlsZS4iKQ0KPiA+PiArICAgICAgICBleGNl cHQgRmlsZU5vdEZvdW5kRXJyb3I6DQo+ID4+ICsgICAgICAgICAgICBsb2dnaW5nLndhcm4oIlRo ZSBzcGVjaWZpZWQgZmlsZSBoZWFkZXIgdGVtcGxhdGUgZmlsZSB3YXMgbm90IGZvdW5kLiIpDQo+ ID4+ICsgICAgICAgIHRyeToNCj4gPj4gKyAgICAgICAgICAgIGZ1bmNfdGVtcGxhdGVfbmFtZSA9 IHBhcnNlclsiZHVtbXlfc2VjdGlvbiJdWyJjbXRfaW5zZXJ0X2Z1bmNfaGVhZGVyIl0NCj4gPj4g Kw0KPiA+PiArICAgICAgICAgICAgZnVuY190ZW1wbGF0ZV9wYXRoID0gcGF0aGxpYi5QYXRoKGZ1 bmNfdGVtcGxhdGVfbmFtZSkNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgaWYgbm90IGZ1bmNf dGVtcGxhdGVfcGF0aC5pc19maWxlKCk6DQo+ID4+ICsgICAgICAgICAgICAgICAgZnVuY190ZW1w bGF0ZV9wYXRoID0gcGF0aGxpYi5QYXRoKG9zLnBhdGguam9pbihzZWxmLl9wbHVnaW5fcGF0aCwg ZnVuY190ZW1wbGF0ZV9uYW1lKSkNCj4gPj4gKyAgICAgICAgICAgICAgICBzZWxmLl9mdW5jX3Rl bXBsYXRlX2NvbnRlbnRzID0gZnVuY190ZW1wbGF0ZV9wYXRoLnJlYWRfdGV4dCgpDQo+ID4+ICsg ICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoNCj4gPj4gKyAgICAgICAgICAgIGxvZ2dpbmcud2Fybigi QSBmdW5jdGlvbiBoZWFkZXIgdGVtcGxhdGUgaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgY29uZmln IGZpbGUuIikNCj4gPj4gKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOg0KPiA+PiAr ICAgICAgICAgICAgbG9nZ2luZy53YXJuKCJUaGUgc3BlY2lmaWVkIGZ1bmN0aW9uIGhlYWRlciB0 ZW1wbGF0ZSBmaWxlIHdhcyBub3QgZm91bmQuIikNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBfaW5p dGlhbGl6ZV9hcHBfaW5mbyhzZWxmKSAtPiBOb25lOg0KPiA+PiArICAgICAgICAiIiINCj4gPj4g KyAgICAgICAgSW5pdGlhbGl6ZSBVbmNydXN0aWZ5IGFwcGxpY2F0aW9uIGluZm9ybWF0aW9uLg0K PiA+PiArDQo+ID4+ICsgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBkZXRlcm1pbmUgdGhlIGFw cGxpY2F0aW9uIHBhdGggYW5kIHZlcnNpb24uDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAg ICAgICAjIFZlcmlmeSBVbmNydXN0aWZ5IGlzIHNwZWNpZmllZCBpbiB0aGUgZW52aXJvbm1lbnQu DQo+ID4+ICsgICAgICAgIGlmIFVuY3J1c3RpZnlDaGVjay5VTkNSVVNUSUZZX1BBVEhfRU5WX0tF WSBub3QgaW4gb3MuZW52aXJvbjoNCj4gPj4gKyAgICAgICAgICAgIHJhaXNlIFVuY3J1c3RpZnlB cHBFbnZWYXJOb3RGb3VuZEV4Y2VwdGlvbigNCj4gPj4gKyAgICAgICAgICAgICAgICBmIlVuY3J1 c3RpZnkgZW52aXJvbm1lbnQgdmFyaWFibGUge1VuY3J1c3RpZnlDaGVjay5VTkNSVVNUSUZZX1BB VEhfRU5WX0tFWX0gaXMgbm90IHByZXNlbnQuIikNCj4gPj4gKw0KPiA+PiArICAgICAgICBzZWxm Ll9hcHBfcGF0aCA9IHNodXRpbC53aGljaCgndW5jcnVzdGlmeScsIHBhdGg9b3MuZW52aXJvbltV bmNydXN0aWZ5Q2hlY2suVU5DUlVTVElGWV9QQVRIX0VOVl9LRVldKQ0KPiA+PiArDQo+ID4+ICsg ICAgICAgIGlmIHNlbGYuX2FwcF9wYXRoIGlzIE5vbmU6DQo+ID4+ICsgICAgICAgICAgICByYWlz ZSBGaWxlTm90Rm91bmRFcnJvcigNCj4gPj4gKyAgICAgICAgICAgICAgICBlcnJuby5FTk9FTlQs IG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCksIHNlbGYuX2FwcF9wYXRoKQ0KPiA+PiArDQo+ID4+ ICsgICAgICAgIHNlbGYuX2FwcF9wYXRoID0gb3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLm5vcm1w YXRoKHNlbGYuX2FwcF9wYXRoKSkNCj4gPj4gKw0KPiA+PiArICAgICAgICBpZiBub3Qgb3MucGF0 aC5pc2ZpbGUoc2VsZi5fYXBwX3BhdGgpOg0KPiA+PiArICAgICAgICAgICAgcmFpc2UgRmlsZU5v dEZvdW5kRXJyb3IoDQo+ID4+ICsgICAgICAgICAgICAgICAgZXJybm8uRU5PRU5ULCBvcy5zdHJl cnJvcihlcnJuby5FTk9FTlQpLCBzZWxmLl9hcHBfcGF0aCkNCj4gPj4gKw0KPiA+PiArICAgICAg ICAjIFZlcmlmeSBVbmNydXN0aWZ5IGlzIHByZXNlbnQgYXQgdGhlIGV4cGVjdGVkIHBhdGguDQo+ ID4+ICsgICAgICAgIHJldHVybl9idWZmZXIgPSBTdHJpbmdJTygpDQo+ID4+ICsgICAgICAgIHJl dCA9IFJ1bkNtZChzZWxmLl9hcHBfcGF0aCwgIi0tdmVyc2lvbiIsIG91dHN0cmVhbT1yZXR1cm5f YnVmZmVyKQ0KPiA+PiArICAgICAgICBpZiAocmV0ICE9IDApOg0KPiA+PiArICAgICAgICAgICAg cmFpc2UgVW5jcnVzdGlmeUFwcFZlcnNpb25FcnJvckV4Y2VwdGlvbigNCj4gPj4gKyAgICAgICAg ICAgICAgICBmIkVycm9yIG9jY3VycmVkIGV4ZWN1dGluZyAtLXZlcnNpb246IHtyZXR9LiIpDQo+ ID4+ICsNCj4gPj4gKyAgICAgICAgIyBMb2cgVW5jcnVzdGlmeSB2ZXJzaW9uIGluZm9ybWF0aW9u Lg0KPiA+PiArICAgICAgICBzZWxmLl9hcHBfdmVyc2lvbiA9IHJldHVybl9idWZmZXIuZ2V0dmFs dWUoKS5zdHJpcCgpDQo+ID4+ICsgICAgICAgIHNlbGYuX3RjLkxvZ1N0ZE91dChmIlVuY3J1c3Rp ZnkgdmVyc2lvbjoge3NlbGYuX2FwcF92ZXJzaW9ufSIpDQo+ID4+ICsgICAgICAgIHZlcnNpb25f YWdncmVnYXRvci5HZXRWZXJzaW9uQWdncmVnYXRvcigpLlJlcG9ydFZlcnNpb24oDQo+ID4+ICsg ICAgICAgICAgICAiVW5jcnVzdGlmeSIsIHNlbGYuX2FwcF92ZXJzaW9uLCB2ZXJzaW9uX2FnZ3Jl Z2F0b3IuVmVyc2lvblR5cGVzLklORk8pDQo+ID4+ICsNCj4gPj4gKyAgICBkZWYgX2luaXRpYWxp emVfY29uZmlnX2ZpbGVfaW5mbyhzZWxmKSAtPiBOb25lOg0KPiA+PiArICAgICAgICAiIiINCj4g Pj4gKyAgICAgICAgSW5pdGlhbGl6ZSBVbmNydXN0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZSBpbmZv Lg0KPiA+PiArDQo+ID4+ICsgICAgICAgIFRoZSBjb25maWcgZmlsZSBwYXRoIGlzIHJlbGF0aXZl IHRvIHRoZSBwYWNrYWdlIHJvb3QuDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBz ZWxmLl9hcHBfY29uZmlnX2ZpbGUgPSBVbmNydXN0aWZ5Q2hlY2suREVGQVVMVF9DT05GSUdfRklM RV9QQVRIDQo+ID4+ICsgICAgICAgIGlmICJDb25maWdGaWxlUGF0aCIgaW4gc2VsZi5fcGFja2Fn ZV9jb25maWc6DQo+ID4+ICsgICAgICAgICAgICBzZWxmLl9hcHBfY29uZmlnX2ZpbGUgPSBzZWxm Ll9wYWNrYWdlX2NvbmZpZ1siQ29uZmlnRmlsZVBhdGgiXS5zdHJpcCgpDQo+ID4+ICsNCj4gPj4g KyAgICAgICAgICAgIHNlbGYuX2FwcF9jb25maWdfZmlsZSA9IG9zLnBhdGgubm9ybXBhdGgoDQo+ ID4+ICsgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuX2Fic19wYWNrYWdlX3BhdGgs IHNlbGYuX2FwcF9jb25maWdfZmlsZSkpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgaWYgbm90IG9z LnBhdGguaXNmaWxlKHNlbGYuX2FwcF9jb25maWdfZmlsZSk6DQo+ID4+ICsgICAgICAgICAgICBy YWlzZSBGaWxlTm90Rm91bmRFcnJvcigNCj4gPj4gKyAgICAgICAgICAgICAgICBlcnJuby5FTk9F TlQsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCksIHNlbGYuX2FwcF9jb25maWdfZmlsZSkNCj4g Pj4gKw0KPiA+PiArICAgIGRlZiBfaW5pdGlhbGl6ZV9lbnZpcm9ubWVudF9pbmZvKHNlbGYsIHBh Y2thZ2VfcmVsX3BhdGg6IHN0ciwgZWRrMl9wYXRoOiBFZGsyUGF0aCwgcGFja2FnZV9jb25maWc6 IERpY3Rbc3RyLA0KPiA+PiBMaXN0W3N0cl1dLCB0YzogSnVuaXRSZXBvcnRUZXN0Q2FzZSkgLT4g Tm9uZToNCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgIEluaXRpYWxpemVzIHBsdWdp biBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbi4NCj4gPj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAg ICAgIHNlbGYuX2Fic19wYWNrYWdlX3BhdGggPSBlZGsyX3BhdGguR2V0QWJzb2x1dGVQYXRoT25U aGlzU3l0ZW1Gcm9tRWRrMlJlbGF0aXZlUGF0aCgNCj4gPj4gKyAgICAgICAgICAgIHBhY2thZ2Vf cmVsX3BhdGgpDQo+ID4+ICsgICAgICAgIHNlbGYuX2Fic193b3Jrc3BhY2VfcGF0aCA9IGVkazJf cGF0aC5Xb3Jrc3BhY2VQYXRoDQo+ID4+ICsgICAgICAgIHNlbGYuX3BhY2thZ2VfY29uZmlnID0g cGFja2FnZV9jb25maWcNCj4gPj4gKyAgICAgICAgc2VsZi5fcGFja2FnZV9uYW1lID0gb3MucGF0 aC5iYXNlbmFtZSgNCj4gPj4gKyAgICAgICAgICAgIG9zLnBhdGgubm9ybXBhdGgocGFja2FnZV9y ZWxfcGF0aCkpDQo+ID4+ICsgICAgICAgIHNlbGYuX3BsdWdpbl9uYW1lID0gc2VsZi5fX2NsYXNz X18uX19uYW1lX18NCj4gPj4gKyAgICAgICAgc2VsZi5fcGx1Z2luX3BhdGggPSBvcy5wYXRoLmRp cm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpDQo+ID4+ICsgICAgICAgIHNlbGYuX3Jl bF9wYWNrYWdlX3BhdGggPSBwYWNrYWdlX3JlbF9wYXRoDQo+ID4+ICsgICAgICAgIHNlbGYuX3Rj ID0gdGMNCj4gPj4gKw0KPiA+PiArICAgIGRlZiBfaW5pdGlhbGl6ZV9maWxlX3RvX2Zvcm1hdF9p bmZvKHNlbGYpIC0+IE5vbmU6DQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBGb3Jt cyB0aGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMgZm9yIFVuY3J1c3RpZnkgdG8gcHJvY2Vzcy4NCj4g Pj4gKyAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgICMgQ3JlYXRlIGEgbGlzdCBvZiBhbGwgdGhl IHBhY2thZ2UgcmVsYXRpdmUgZmlsZSBwYXRocyBpbiB0aGUgcGFja2FnZSB0byBydW4gYWdhaW5z dCBVbmNydXN0aWZ5Lg0KPiA+PiArICAgICAgICByZWxfZmlsZV9wYXRoc190b19mb3JtYXQgPSBs aXN0KA0KPiA+PiArICAgICAgICAgICAgVW5jcnVzdGlmeUNoZWNrLlNUQU5EQVJEX1BMVUdJTl9E RUZJTkVEX1BBVEhTKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICMgQWxsb3cgdGhlIGNpLnlhbWwg dG8gcmVtb3ZlIGFueSBvZiB0aGUgcHJlLWRlZmluZWQgc3RhbmRhcmQgcGF0aHMNCj4gPj4gKyAg ICAgICAgaWYgIklnbm9yZVN0YW5kYXJkUGF0aHMiIGluIHNlbGYuX3BhY2thZ2VfY29uZmlnOg0K PiA+PiArICAgICAgICAgICAgZm9yIGEgaW4gc2VsZi5fcGFja2FnZV9jb25maWdbIklnbm9yZVN0 YW5kYXJkUGF0aHMiXToNCj4gPj4gKyAgICAgICAgICAgICAgICBpZiBhLnN0cmlwKCkgaW4gcmVs X2ZpbGVfcGF0aHNfdG9fZm9ybWF0Og0KPiA+PiArICAgICAgICAgICAgICAgICAgICBzZWxmLl90 Yy5Mb2dTdGRPdXQoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBmIklnbm9yaW5nIHN0 YW5kYXJkIHBhdGggZHVlIHRvIGNpLnlhbWwgaWdub3JlOiB7YX0iKQ0KPiA+PiArICAgICAgICAg ICAgICAgICAgICByZWxfZmlsZV9wYXRoc190b19mb3JtYXQucmVtb3ZlKGEuc3RyaXAoKSkNCj4g Pj4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+PiArICAgICAgICAgICAgICAgICAgICByYWlz ZSBVbmNydXN0aWZ5SW52YWxpZElnbm9yZVN0YW5kYXJkUGF0aHNFeGNlcHRpb24oZiJJbnZhbGlk IElnbm9yZVN0YW5kYXJkUGF0aHMgdmFsdWU6IHthfSIpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAg IyBBbGxvdyB0aGUgY2kueWFtbCB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgaW5jbHVkZSBwYXRocyBm b3IgdGhpcyBwYWNrYWdlDQo+ID4+ICsgICAgICAgIGlmICJBZGRpdGlvbmFsSW5jbHVkZVBhdGhz IiBpbiBzZWxmLl9wYWNrYWdlX2NvbmZpZzoNCj4gPj4gKyAgICAgICAgICAgIHJlbF9maWxlX3Bh dGhzX3RvX2Zvcm1hdC5leHRlbmQoDQo+ID4+ICsgICAgICAgICAgICAgICAgc2VsZi5fcGFja2Fn ZV9jb25maWdbIkFkZGl0aW9uYWxJbmNsdWRlUGF0aHMiXSkNCj4gPj4gKw0KPiA+PiArICAgICAg ICBzZWxmLl9hYnNfZmlsZV9wYXRoc190b19mb3JtYXQgPSBbXQ0KPiA+PiArICAgICAgICBmb3Ig cGF0aCBpbiByZWxfZmlsZV9wYXRoc190b19mb3JtYXQ6DQo+ID4+ICsgICAgICAgICAgICBzZWxm Ll9hYnNfZmlsZV9wYXRoc190b19mb3JtYXQuZXh0ZW5kKA0KPiA+PiArICAgICAgICAgICAgICAg IFtzdHIocGF0aC5yZXNvbHZlKCkpIGZvciBwYXRoIGluIHBhdGhsaWIuUGF0aChzZWxmLl9hYnNf cGFja2FnZV9wYXRoKS5yZ2xvYihwYXRoKV0pDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgaWYgbm90 ICJTa2lwR2l0RXhjbHVzaW9ucyIgaW4gc2VsZi5fcGFja2FnZV9jb25maWcgb3Igbm90IHNlbGYu X3BhY2thZ2VfY29uZmlnWyJTa2lwR2l0RXhjbHVzaW9ucyJdOg0KPiA+PiArICAgICAgICAgICAg IyBSZW1vdmUgZmlsZXMgaWdub3JlZCBieSBnaXQNCj4gPj4gKyAgICAgICAgICAgIGxvZ2dpbmcu aW5mbygNCj4gPj4gKyAgICAgICAgICAgICAgICBmIntzZWxmLl9wYWNrYWdlX25hbWV9IGZpbGUg Y291bnQgYmVmb3JlIGdpdCBpZ25vcmUgZmlsZSBleGNsdXNpb246DQo+ID4+IHtsZW4oc2VsZi5f YWJzX2ZpbGVfcGF0aHNfdG9fZm9ybWF0KX0iKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICBp Z25vcmVkX3BhdGhzID0gc2VsZi5fZ2V0X2dpdF9pZ25vcmVkX3BhdGhzKCkNCj4gPj4gKyAgICAg ICAgICAgIHNlbGYuX2Fic19maWxlX3BhdGhzX3RvX2Zvcm1hdCA9IGxpc3QoDQo+ID4+ICsgICAg ICAgICAgICAgICAgc2V0KHNlbGYuX2Fic19maWxlX3BhdGhzX3RvX2Zvcm1hdCkuZGlmZmVyZW5j ZShpZ25vcmVkX3BhdGhzKSkNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgbG9nZ2luZy5pbmZv KA0KPiA+PiArICAgICAgICAgICAgICAgIGYie3NlbGYuX3BhY2thZ2VfbmFtZX0gZmlsZSBjb3Vu dCBhZnRlciBnaXQgaWdub3JlIGZpbGUgZXhjbHVzaW9uOg0KPiA+PiB7bGVuKHNlbGYuX2Fic19m aWxlX3BhdGhzX3RvX2Zvcm1hdCl9IikNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgIyBSZW1v dmUgZmlsZXMgaW4gc3VibW9kdWxlcw0KPiA+PiArICAgICAgICAgICAgbG9nZ2luZy5pbmZvKA0K PiA+PiArICAgICAgICAgICAgICAgIGYie3NlbGYuX3BhY2thZ2VfbmFtZX0gZmlsZSBjb3VudCBi ZWZvcmUgc3VibW9kdWxlIGV4Y2x1c2lvbjoge2xlbihzZWxmLl9hYnNfZmlsZV9wYXRoc190b19m b3JtYXQpfSIpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAgIHN1Ym1vZHVsZV9wYXRocyA9IHR1 cGxlKHNlbGYuX2dldF9naXRfc3VibW9kdWxlX3BhdGhzKCkpDQo+ID4+ICsgICAgICAgICAgICBm b3IgcGF0aCBpbiBzdWJtb2R1bGVfcGF0aHM6DQo+ID4+ICsgICAgICAgICAgICAgICAgbG9nZ2lu Zy5pbmZvKGYiICBzdWJtb2R1bGUgcGF0aDoge3BhdGh9IikNCj4gPj4gKw0KPiA+PiArICAgICAg ICAgICAgc2VsZi5fYWJzX2ZpbGVfcGF0aHNfdG9fZm9ybWF0ID0gWw0KPiA+PiArICAgICAgICAg ICAgICAgIGYgZm9yIGYgaW4gc2VsZi5fYWJzX2ZpbGVfcGF0aHNfdG9fZm9ybWF0IGlmIG5vdCBm LnN0YXJ0c3dpdGgoc3VibW9kdWxlX3BhdGhzKV0NCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAg bG9nZ2luZy5pbmZvKA0KPiA+PiArICAgICAgICAgICAgICAgIGYie3NlbGYuX3BhY2thZ2VfbmFt ZX0gZmlsZSBjb3VudCBhZnRlciBzdWJtb2R1bGUgZXhjbHVzaW9uOiB7bGVuKHNlbGYuX2Fic19m aWxlX3BhdGhzX3RvX2Zvcm1hdCl9IikNCj4gPj4gKw0KPiA+PiArICAgICAgICAjIFNvcnQgdGhl IGZpbGVzIGZvciBtb3JlIGNvbnNpc3RlbnQgcmVzdWx0cw0KPiA+PiArICAgICAgICBzZWxmLl9h YnNfZmlsZV9wYXRoc190b19mb3JtYXQuc29ydCgpDQo+ID4+ICsNCj4gPj4gKyAgICBkZWYgX2lu aXRpYWxpemVfdGVzdF9jYXNlX291dHB1dF9vcHRpb25zKHNlbGYpIC0+IE5vbmU6DQo+ID4+ICsg ICAgICAgICIiIg0KPiA+PiArICAgICAgICBJbml0aWFsaXplcyBvcHRpb25zIHRoYXQgaW5mbHVl bmNlIHRlc3QgY2FzZSBvdXRwdXQuDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBz ZWxmLl9hdWRpdF9vbmx5X21vZGUgPSBGYWxzZQ0KPiA+PiArICAgICAgICBzZWxmLl9vdXRwdXRf ZmlsZV9kaWZmcyA9IEZhbHNlDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgaWYgIkF1ZGl0T25seSIg aW4gc2VsZi5fcGFja2FnZV9jb25maWcgYW5kIHNlbGYuX3BhY2thZ2VfY29uZmlnWyJBdWRpdE9u bHkiXToNCj4gPj4gKyAgICAgICAgICAgIHNlbGYuX2F1ZGl0X29ubHlfbW9kZSA9IFRydWUNCj4g Pj4gKw0KPiA+PiArICAgICAgICBpZiAiT3V0cHV0RmlsZURpZmZzIiBpbiBzZWxmLl9wYWNrYWdl X2NvbmZpZyBhbmQgc2VsZi5fcGFja2FnZV9jb25maWdbIk91dHB1dEZpbGVEaWZmcyJdOg0KPiA+ PiArICAgICAgICAgICAgc2VsZi5fb3V0cHV0X2ZpbGVfZGlmZnMgPSBUcnVlDQo+ID4+ICsNCj4g Pj4gKyAgICBkZWYgX2xvZ191bmNydXN0aWZ5X2FwcF9pbmZvKHNlbGYpIC0+IE5vbmU6DQo+ID4+ ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBMb2dzIFVuY3J1c3RpZnkgYXBwbGljYXRpb24g aW5mb3JtYXRpb24uDQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBzZWxmLl90Yy5M b2dTdGRPdXQoZiJGb3VuZCBVbmNydXN0aWZ5IGF0IHtzZWxmLl9hcHBfcGF0aH0iKQ0KPiA+PiAr ICAgICAgICBzZWxmLl90Yy5Mb2dTdGRPdXQoZiJVbmNydXN0aWZ5IHZlcnNpb246IHtzZWxmLl9h cHBfdmVyc2lvbn0iKQ0KPiA+PiArICAgICAgICBzZWxmLl90Yy5Mb2dTdGRPdXQoJ1xuJykNCj4g Pj4gKyAgICAgICAgbG9nZ2luZy5pbmZvKGYiRm91bmQgVW5jcnVzdGlmeSBhdCB7c2VsZi5fYXBw X3BhdGh9IikNCj4gPj4gKyAgICAgICAgbG9nZ2luZy5pbmZvKGYiVW5jcnVzdGlmeSB2ZXJzaW9u OiB7c2VsZi5fYXBwX3ZlcnNpb259IikNCj4gPj4gKyAgICAgICAgbG9nZ2luZy5pbmZvKCdcbicp DQo+ID4+ICsNCj4gPj4gKyAgICBkZWYgX3Byb2Nlc3NfdW5jcnVzdGlmeV9yZXN1bHRzKHNlbGYp IC0+IE5vbmU6DQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBQcm9jZXNzIHRoZSBy ZXN1bHRzIGZyb20gVW5jcnVzdGlmeS4NCj4gPj4gKw0KPiA+PiArICAgICAgICBEZXRlcm1pbmVz IHdoZXRoZXIgZm9ybWF0dGluZyBlcnJvcnMgYXJlIHByZXNlbnQgYW5kIGxvZ3MgZmFpbHVyZXMu DQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBmb3JtYXR0ZWRfZmlsZXMgPSBbc3Ry KHBhdGgucmVzb2x2ZSgpKSBmb3IgcGF0aCBpbiBwYXRobGliLlBhdGgoDQo+ID4+ICsgICAgICAg ICAgICBzZWxmLl9hYnNfcGFja2FnZV9wYXRoKS5yZ2xvYihmJyp7VW5jcnVzdGlmeUNoZWNrLkZP Uk1BVFRFRF9GSUxFX0VYVEVOU0lPTn0nKV0NCj4gPj4gKw0KPiA+PiArICAgICAgICBzZWxmLl9m b3JtYXR0ZWRfZmlsZV9lcnJvcl9jb3VudCA9IGxlbihmb3JtYXR0ZWRfZmlsZXMpDQo+ID4+ICsN Cj4gPj4gKyAgICAgICAgaWYgc2VsZi5fZm9ybWF0dGVkX2ZpbGVfZXJyb3JfY291bnQgPiAwOg0K PiA+PiArICAgICAgICAgICAgc2VsZi5fdGMuTG9nU3RkRXJyb3IoIkZpbGVzIHdpdGggZm9ybWF0 dGluZyBlcnJvcnM6XG4iKQ0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICBpZiBzZWxmLl9vdXRw dXRfZmlsZV9kaWZmczoNCj4gPj4gKyAgICAgICAgICAgICAgICBsb2dnaW5nLmluZm8oIkNhbGN1 bGF0aW5nIGZpbGUgZGlmZnMuIFRoaXMgbWlnaHQgdGFrZSBhIHdoaWxlLi4uIikNCj4gPj4gKw0K PiA+PiArICAgICAgICBmb3IgZm9ybWF0dGVkX2ZpbGUgaW4gZm9ybWF0dGVkX2ZpbGVzOg0KPiA+ PiArICAgICAgICAgICAgcHJlX2Zvcm1hdHRlZF9maWxlID0gZm9ybWF0dGVkX2ZpbGVbOi0NCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihV bmNydXN0aWZ5Q2hlY2suRk9STUFUVEVEX0ZJTEVfRVhURU5TSU9OKV0NCj4gPj4gKw0KPiA+PiAr ICAgICAgICAgICAgaWYgKHNlbGYuX291dHB1dF9maWxlX2RpZmZzIG9yDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuX2ZpbGVfdGVtcGxhdGVfY29udGVudHMgaXMgbm90IE5vbmUgb3IN Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnVuY190ZW1wbGF0ZV9jb250ZW50cyBp cyBub3QgTm9uZSk6DQo+ID4+ICsgICAgICAgICAgICAgICAgc2VsZi5fdGMuTG9nU3RkRXJyb3Io DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGYiRm9ybWF0dGluZyBlcnJvcnMgaW4ge29zLnBh dGgucmVscGF0aChwcmVfZm9ybWF0dGVkX2ZpbGUsIHNlbGYuX2Fic19wYWNrYWdlX3BhdGgpfVxu IikNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgICAgIHdpdGggb3Blbihmb3JtYXR0ZWRfZmls ZSkgYXMgZmY6DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9maWxlX3RleHQg PSBmZi5yZWFkKCkNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5f ZmlsZV90ZW1wbGF0ZV9jb250ZW50cyBpcyBub3QgTm9uZSBhbmQNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLl9maWxlX3RlbXBsYXRlX2NvbnRlbnRzIGluIGZvcm1hdHRl ZF9maWxlX3RleHQpOg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGMuTG9n U3RkRXJyb3IoZiJGaWxlIGhlYWRlciBpcyBtaXNzaW5nIGluIHtvcy5wYXRoLnJlbHBhdGgocHJl X2Zvcm1hdHRlZF9maWxlLA0KPiA+PiBzZWxmLl9hYnNfcGFja2FnZV9wYXRoKX1cbiIpDQo+ID4+ ICsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2Z1bmNfdGVtcGxhdGVfY29u dGVudHMgaXMgbm90IE5vbmUgYW5kDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5fZnVuY190ZW1wbGF0ZV9jb250ZW50cyBpbiBmb3JtYXR0ZWRfZmlsZV90ZXh0KToNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RjLkxvZ1N0ZEVycm9yKGYiQSBmdW5j dGlvbiBoZWFkZXIgaXMgbWlzc2luZyBpbiB7b3MucGF0aC5yZWxwYXRoKHByZV9mb3JtYXR0ZWRf ZmlsZSwNCj4gPj4gc2VsZi5fYWJzX3BhY2thZ2VfcGF0aCl9XG4iKQ0KPiA+PiArDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX291dHB1dF9maWxlX2RpZmZzOg0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHByZV9mb3JtYXR0ZWRfZmlsZSkgYXMgcGY6 DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX2Zvcm1hdHRlZF9maWxlX3Rl eHQgPSBwZi5yZWFkKCkNCj4gPj4gKw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgZm9y IGxpbmUgaW4gZGlmZmxpYi51bmlmaWVkX2RpZmYocHJlX2Zvcm1hdHRlZF9maWxlX3RleHQuc3Bs aXQoJ1xuJyksDQo+ID4+IGZvcm1hdHRlZF9maWxlX3RleHQuc3BsaXQoJ1xuJyksIGZyb21maWxl PXByZV9mb3JtYXR0ZWRfZmlsZSwgdG9maWxlPWZvcm1hdHRlZF9maWxlLCBuPTMpOg0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RjLkxvZ1N0ZEVycm9yKGxpbmUpDQo+ ID4+ICsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RjLkxvZ1N0ZEVycm9y KCdcbicpDQo+ID4+ICsgICAgICAgICAgICBlbHNlOg0KPiA+PiArICAgICAgICAgICAgICAgIHNl bGYuX3RjLkxvZ1N0ZEVycm9yKHByZV9mb3JtYXR0ZWRfZmlsZSkNCj4gPj4gKw0KPiA+PiArICAg IGRlZiBfcmVtb3ZlX3RyZWUoc2VsZiwgZGlyX3BhdGg6IHN0ciwgaWdub3JlX2Vycm9yczogYm9v bCA9IEZhbHNlKSAtPiBOb25lOg0KPiA+PiArICAgICAgICAiIiINCj4gPj4gKyAgICAgICAgSGVs cGVyIGZvciByZW1vdmluZyBhIGRpcmVjdG9yeS4gT3ZlciB0aW1lIHRoZXJlIGhhdmUgYmVlbg0K PiA+PiArICAgICAgICBtYW55IHByaXZhdGUgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgZHVlIHRv IHJlbGlhYmlsaXR5IGlzc3VlcyBpbiB0aGUNCj4gPj4gKyAgICAgICAgc2h1dGlsIGltcGxlbWVu dGF0aW9ucy4gVG8gY29uc29saWRhdGUgb24gYSBzaW5nbGUgZnVuY3Rpb24gdGhpcyBoZWxwZXIg aXMgYWRkZWQuDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgT24gZXJyb3IgdHJ5IHRvIGNoYW5nZSBm aWxlIGF0dHJpYnV0ZXMuIEFsc28gYWRkIHJldHJ5IGxvZ2ljLg0KPiA+PiArDQo+ID4+ICsgICAg ICAgIFRoaXMgZnVuY3Rpb24gaXMgdGVtcG9yYXJpbHkgYm9ycm93ZWQgZnJvbSBlZGsydG9vbGxp Yi51dGlsaXR5X2Z1bmN0aW9ucw0KPiA+PiArICAgICAgICBzaW5jZSB0aGUgdmVyc2lvbiB1c2Vk IGluIGVkazIgaXMgbm90IHJlY2VudCBlbm91Z2ggdG8gaW5jbHVkZSB0aGUNCj4gPj4gKyAgICAg ICAgZnVuY3Rpb24uDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgVGhpcyBmdW5jdGlvbiBzaG91bGQg YmUgcmVwbGFjZWQgYnkgIlJlbW92ZVRyZWUiIHdoZW4gaXQgaXMgYXZhaWxhYmxlLg0KPiA+PiAr DQo+ID4+ICsgICAgICAgIEFyZ3M6DQo+ID4+ICsgICAgICAgICAgLSBkaXJfcGF0aDogUGF0aCB0 byBkaXJlY3RvcnkgdG8gcmVtb3ZlLg0KPiA+PiArICAgICAgICAgIC0gaWdub3JlX2Vycm9yczog V2hldGhlciB0byBpZ25vcmUgZXJyb3JzIGR1cmluZyByZW1vdmFsDQo+ID4+ICsgICAgICAgICIi Ig0KPiA+PiArDQo+ID4+ICsgICAgICAgIGRlZiBfcmVtb3ZlX3JlYWRvbmx5KGZ1bmMsIHBhdGgs IF8pOg0KPiA+PiArICAgICAgICAgICAgIiIiDQo+ID4+ICsgICAgICAgICAgICBQcml2YXRlIGZ1 bmN0aW9uIHRvIGF0dGVtcHQgdG8gY2hhbmdlIHBlcm1pc3Npb25zIG9uIGZpbGUvZm9sZGVyIGJl aW5nIGRlbGV0ZWQuDQo+ID4+ICsgICAgICAgICAgICAiIiINCj4gPj4gKyAgICAgICAgICAgIG9z LmNobW9kKHBhdGgsIG9zLnN0YXQuU19JV1JJVEUpDQo+ID4+ICsgICAgICAgICAgICBmdW5jKHBh dGgpDQo+ID4+ICsNCj4gPj4gKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMyk6ICAjIHJldHJ5IHVw IHRvIDMgdGltZXMNCj4gPj4gKyAgICAgICAgICAgIHRyeToNCj4gPj4gKyAgICAgICAgICAgICAg ICBzaHV0aWwucm10cmVlKGRpcl9wYXRoLCBpZ25vcmVfZXJyb3JzPWlnbm9yZV9lcnJvcnMsIG9u ZXJyb3I9X3JlbW92ZV9yZWFkb25seSkNCj4gPj4gKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9y IGFzIGVycjoNCj4gPj4gKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoZiJGYWlsZWQg dG8gZnVsbHkgcmVtb3ZlIHtkaXJfcGF0aH06IHtlcnJ9IikNCj4gPj4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4gPj4gKyAgICAgICAgZWxzZToNCj4g Pj4gKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIkZhaWxlZCB0byByZW1vdmUge2Rp cl9wYXRofSIpDQo+ID4+ICsNCj4gPj4gKyAgICBkZWYgX3J1bl91bmNydXN0aWZ5KHNlbGYpIC0+ IE5vbmU6DQo+ID4+ICsgICAgICAgICIiIg0KPiA+PiArICAgICAgICBSdW5zIFVuY3J1c3RpZnkg Zm9yIHRoaXMgaW5zdGFuY2Ugb2YgcGx1Z2luIGV4ZWN1dGlvbi4NCj4gPj4gKyAgICAgICAgIiIi DQo+ID4+ICsgICAgICAgIGxvZ2dpbmcuaW5mbygiRXhlY3V0aW5nIFVuY3J1c3RpZnkuIFRoaXMg bWlnaHQgdGFrZSBhIHdoaWxlLi4uIikNCj4gPj4gKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWVp dC5kZWZhdWx0X3RpbWVyKCkNCj4gPj4gKyAgICAgICAgc2VsZi5fZXhlY3V0ZV91bmNydXN0aWZ5 KCkNCj4gPj4gKyAgICAgICAgZW5kX3RpbWUgPSB0aW1laXQuZGVmYXVsdF90aW1lcigpIC0gc3Rh cnRfdGltZQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIGV4ZWN1dGlvbl9zdW1tYXJ5ID0gZiJVbmNy dXN0aWZ5IGV4ZWN1dGVkIGFnYWluc3Qge2xlbihzZWxmLl9hYnNfZmlsZV9wYXRoc190b19mb3Jt YXQpfSBmaWxlcyBpbg0KPiA+PiB7c2VsZi5fcGFja2FnZV9uYW1lfSBpbiB7ZW5kX3RpbWU6LjJm fSBzZWNvbmRzLlxuIg0KPiA+PiArDQo+ID4+ICsgICAgICAgIHNlbGYuX3RjLkxvZ1N0ZE91dChl eGVjdXRpb25fc3VtbWFyeSkNCj4gPj4gKyAgICAgICAgbG9nZ2luZy5pbmZvKGV4ZWN1dGlvbl9z dW1tYXJ5KQ0KPiA+PiArDQo+ID4+ICsgICAgICAgIGlmIHNlbGYuX2FwcF9leGl0X2NvZGUgIT0g MCBhbmQgc2VsZi5fYXBwX2V4aXRfY29kZSAhPSAxOg0KPiA+PiArICAgICAgICAgICAgcmFpc2Ug VW5jcnVzdGlmeUFwcEV4ZWN1dGlvbkV4Y2VwdGlvbigNCj4gPj4gKyAgICAgICAgICAgICAgICBm IkVycm9yIHtzdHIoc2VsZi5fYXBwX2V4aXRfY29kZSl9IHJldHVybmVkIGZyb20gVW5jcnVzdGlm eTpcblxue3N0cihzZWxmLl9hcHBfb3V0cHV0KX0iKQ0KPiA+PiBkaWZmIC0tZ2l0IGEvLnB5dG9v bC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL2RlZmF1bHRfZmlsZV9oZWFkZXIudHh0DQo+ID4+IGIv LnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL2RlZmF1bHRfZmlsZV9oZWFkZXIudHh0DQo+ ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjk1NWE3 MzRkZmUxDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrIGIvLnB5dG9vbC9QbHVnaW4vVW5j cnVzdGlmeUNoZWNrL2RlZmF1bHRfZmlsZV9oZWFkZXIudHh0DQo+ID4+IEBAIC0wLDAgKzEsOSBA QA0KPiA+PiArLyoqIEBmaWxlDQo+ID4+ICsgIEJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWxl J3MgcHVycG9zZS4NCj4gPj4gKw0KPiA+PiArICBEZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUg ZmlsZSdzIGNvbnRlbnRzIGFuZCBvdGhlciB1c2VmdWwNCj4gPj4gKyAgaW5mb3JtYXRpb24gZm9y IGEgcGVyc29uIHZpZXdpbmcgdGhlIGZpbGUgZm9yIHRoZSBmaXJzdCB0aW1lLg0KPiA+PiArDQo+ ID4+ICsgIDw8Q29weXJpZ2h0Pj4NCj4gPj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4gKyoqLw0KPiA+PiBkaWZmIC0tZ2l0IGEvLnB5dG9vbC9Q bHVnaW4vVW5jcnVzdGlmeUNoZWNrL2RlZmF1bHRfZnVuY3Rpb25faGVhZGVyLnR4dA0KPiA+PiBi Ly5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9kZWZhdWx0X2Z1bmN0aW9uX2hlYWRlci50 eHQNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggMDAwMDAwMDAwMDAwLi42 NmVkYzcyZTY3MzENCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi8ucHl0b29sL1BsdWdp bi9VbmNydXN0aWZ5Q2hlY2svZGVmYXVsdF9mdW5jdGlvbl9oZWFkZXIudHh0DQo+ID4+IEBAIC0w LDAgKzEsMTUgQEANCj4gPj4gKy8qKg0KPiA+PiArICBCcmllZiBkZXNjcmlwdGlvbiBvZiB0aGlz IGZ1bmN0aW9uJ3MgcHVycG9zZS4NCj4gPj4gKw0KPiA+PiArICBGb2xsb3cgaXQgaW1tZWRpYXRl bHkgd2l0aCB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFt W2luXSAgICAgIEFyZzEgIERlc2NyaXB0aW9uIG9mIEFyZzEuDQo+ID4+ICsgIEBwYXJhbVtpbl0g ICAgICBBcmcyICBEZXNjcmlwdGlvbiBvZiBBcmcyIFRoaXMgaXMgY29tcGxpY2F0ZWQgYW5kIHJl cXVpcmVzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBsaW5lcyB0byBk ZXNjcmliZS4NCj4gPj4gKyAgQHBhcmFtW291dF0gICAgIEFyZzMgIERlc2NyaXB0aW9uIG9mIEFy ZzMuDQo+ID4+ICsgIEBwYXJhbVtpbiwgb3V0XSBBcmc0ICBEZXNjcmlwdGlvbiBvZiBBcmc0Lg0K PiA+PiArDQo+ID4+ICsgIEByZXR2YWwgVkFMX09ORSAgRGVzY3JpcHRpb24gb2Ygd2hhdCBWQUxf T05FIHNpZ25pZmllcy4NCj4gPj4gKyAgQHJldHZhbCBPVEhFUiAgICBUaGlzIGlzIHRoZSBvbmx5 IG90aGVyIHJldHVybiB2YWx1ZS4gSWYgdGhlcmUgd2VyZSBvdGhlcg0KPiA+PiArICAgICAgICAg ICAgICAgICAgIHJldHVybiB2YWx1ZXMsIHRoZXkgd291bGQgYmUgbGlzdGVkLg0KPiA+PiArKiov DQo+ID4+IGRpZmYgLS1naXQgYS8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svdW5jcnVz dGlmeS5jZmcgYi8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svdW5jcnVzdGlmeS5jZmcN Cj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xYTg3 Mjk1ZWM5ZjkNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi8ucHl0b29sL1BsdWdpbi9V bmNydXN0aWZ5Q2hlY2svdW5jcnVzdGlmeS5jZmcNCj4gPj4gQEAgLTAsMCArMSw0NjIgQEANCj4g Pj4gKyMjIEBmaWxlDQo+ID4+ICsjIFVuY3J1c3RpZnkgQ29uZmlndXJhdGlvbiBGaWxlIGZvciBF REsgSUkgQyBDb2RlDQo+ID4+ICsjDQo+ID4+ICsjIENvZGluZyBTdGFuZGFyZDogaHR0cHM6Ly9l ZGsyLWRvY3MuZ2l0Ym9vay5pby9lZGstaWktYy1jb2Rpbmctc3RhbmRhcmRzLXNwZWNpZmljYXRp b24vDQo+ID4+ICsjDQo+ID4+ICsjIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGlzIG1lYW50IHRv IGJlIGEgImJlc3QgYXR0ZW1wdCIgdG8gYWxpZ24gd2l0aCB0aGUNCj4gPj4gKyMgZGVmaW5pdGlv bnMgaW4gdGhlIEVESyBJSSBDIENvZGluZyBTdGFuZGFyZHMgU3BlY2lmaWNhdGlvbi4NCj4gPj4g KyMNCj4gPj4gKyMgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uDQo+ID4+ICsj IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+ICsjIw0K PiA+PiArDQo+ID4+ICsjIEZvcmNlIFVURi04IGVuY29kaW5nIChubyBVVEYtMTYpDQo+ID4+ICtl bmFibGVfZGlncmFwaHMgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK3V0ZjhfYnl0ZSAg ICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArdXRmOF9mb3JjZSAgICAgICAgICAg ICAgICAgICAgICA9IHRydWUNCj4gPj4gKw0KPiA+PiArIyBDb2RlIHdpZHRoIC8gbGluZSBzcGxp dHRpbmcNCj4gPj4gKyNjb2RlX3dpZHRoICAgICAgICAgICAgICAgICAgICAgID0xMjAgICAgICMg VE9ETzogVGhpcyBjYXVzZXMgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3VyIGluIHNvbWUgY2Fz ZXMgd2hlbiBjb2RlDQo+IHdyYXBzDQo+ID4+ICtsc19jb2RlX3dpZHRoICAgICAgICAgICAgICAg ICAgID1mYWxzZQ0KPiA+PiArbHNfZm9yX3NwbGl0X2Z1bGwgICAgICAgICAgICAgICA9dHJ1ZQ0K PiA+PiArbHNfZnVuY19zcGxpdF9mdWxsICAgICAgICAgICAgICA9dHJ1ZQ0KPiA+PiArcG9zX2Nv bW1hICAgICAgICAgICAgICAgICAgICAgICA9dHJhaWwNCj4gPj4gKw0KPiA+PiArIyA1LjEuNyAg QWxsIGZpbGVzIG11c3QgZW5kIHdpdGggQ1JMRg0KPiA+PiArbmV3bGluZXMgICAgICAgICAgICAg ICAgICAgICAgICA9IGNybGYNCj4gPj4gKw0KPiA+PiArIyA1LjEuMiBEbyBub3QgdXNlIHRhYiBj aGFyYWN0ZXJzDQo+ID4+ICsNCj4gPj4gK2NtdF9jb252ZXJ0X3RhYl90b19zcGFjZXMgICAgICAg PSB0cnVlICAgICAgIyBXaGV0aGVyIHRvIGNvbnZlcnQgYWxsIHRhYnMgdG8gc3BhY2VzIGluIGNv bW1lbnRzLiBJZiBmYWxzZSwgdGFicyBpbg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIGNvbW1lbnRzIGFyZSBsZWZ0IGFsb25lLCB1bmxlc3MgdXNl ZCBmb3IgaW5kZW50aW5nLg0KPiA+PiAraW5kZW50X2NvbHVtbnMgICAgICAgICAgICAgICAgICA9 IDIgICAgICAgICAjIE51bWJlciBvZiBzcGFjZXMgZm9yIGluZGVudGF0aW9uDQo+ID4+ICtpbmRl bnRfd2l0aF90YWJzICAgICAgICAgICAgICAgID0gMCAgICAgICAgICMgRG8gbm90IHVzZSBUQUIg Y2hhcmFjdGVycw0KPiA+PiArc3RyaW5nX3JlcGxhY2VfdGFiX2NoYXJzICAgICAgICA9IHRydWUg ICAgICAjIFJlcGxhY2UgVEFCIHdpdGggU1BBQ0UNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3RlOiBUaGlzIHdpbGwgYnJlYWsgLnJvYm90IGZp bGVzIGJ1dCBpcyBuZWVkZWQgZm9yIGVkazIgc3R5bGUNCj4gPj4gKw0KPiA+PiArIyA1LjIuMS4x IFRoZXJlIHNoYWxsIGJlIG9ubHkgb25lIHN0YXRlbWVudCBvbiBhIGxpbmUgKHN0YXRlbWVudCBl bmRzIHdpdGggOykNCj4gPj4gK25sX211bHRpX2xpbmVfY29uZCAgICAgICAgICAgICAgPSB0cnVl ICAgICAgIyBBZGQgYSBuZXdsaW5lIGJldHdlZW4gJyknIGFuZCAneycgaWYgdGhlICcpJyBpcyBv biBhIGRpZmZlcmVudCBsaW5lIHRoYW4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyB0aGUgaWYvZm9yL2V0Yy4NCj4gPj4gK25sX2FmdGVyX3NlbWlj b2xvbiAgICAgICAgICAgICAgPSB0cnVlICAgICAgIyBXaGV0aGVyIHRvIGFkZCBhIG5ld2xpbmUg YWZ0ZXIgc2VtaWNvbG9ucywgZXhjZXB0IGluICdmb3InIHN0YXRlbWVudHMuDQo+ID4+ICsNCj4g Pj4gKyMgNS4yLjEuMyBBbiBvcGVuIGJyYWNlICd7JyBnb2VzIG9uIHRoZSBzYW1lIGxpbmUgYXMg dGhlIGNsb3NpbmcgcGFyZW50aGVzaXMgJyknIG9mIHNpbXBsZSBwcmVkaWNhdGUgZXhwcmVzc2lv bnMNCj4gPj4gK21vZF9mdWxsX2JyYWNlX2RvICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBB ZGQgb3IgcmVtb3ZlIGJyYWNlcyBvbiBhIHNpbmdsZS1saW5lICdkbycgc3RhdGVtZW50Lg0KPiA+ PiArbW9kX2Z1bGxfYnJhY2VfZm9yICAgICAgICAgICAgICA9IGFkZA0KPiA+PiArbW9kX2Z1bGxf YnJhY2VfZnVuY3Rpb24gICAgICAgICA9IGFkZCAgICAgICAjIEFkZCBvciByZW1vdmUgYnJhY2Vz IG9uIGEgc2luZ2xlLWxpbmUgZnVuY3Rpb24gZGVmaW5pdGlvbi4NCj4gPj4gK21vZF9mdWxsX2Jy YWNlX2lmICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIGJyYWNlcyBv biBhIHNpbmdsZS1saW5lICdpZicgc3RhdGVtZW50LiBCcmFjZXMgd2lsbCBub3QgYmUNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1vdmVkIGlm IHRoZSBicmFjZWQgc3RhdGVtZW50IGNvbnRhaW5zIGFuICdlbHNlJy4NCj4gPj4gK21vZF9mdWxs X2JyYWNlX2lmX2NoYWluICAgICAgICAgPSBmYWxzZQ0KPiA+PiArbW9kX2Z1bGxfYnJhY2Vfd2hp bGUgICAgICAgICAgICA9IGFkZA0KPiA+PiArDQo+ID4+ICsjIDUuMi4xLjQgQSBjbG9zZSBicmFj ZSAnfScgYWx3YXlzIGdvZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdCBsaW5lIG9mIHRo ZSBib2R5DQo+ID4+ICtlYXRfYmxhbmtzX2FmdGVyX29wZW5fYnJhY2UgICAgID0gdHJ1ZQ0KPiA+ PiArZWF0X2JsYW5rc19iZWZvcmVfY2xvc2VfYnJhY2UgICA9IHRydWUgICAgICAjIFdoZXRoZXIg dG8gcmVtb3ZlIGJsYW5rIGxpbmVzIGJlZm9yZSAnfScuDQo+ID4+ICsNCj4gPj4gKyMgNS4yLjIu MiBBbHdheXMgcHV0IHNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgYmluYXJ5IG9wZXJhdG9ycy4NCj4g Pj4gK3NwX2Fzc2lnbiAgICAgICAgICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3Ig cmVtb3ZlIHNwYWNlIGFyb3VuZCBhc3NpZ25tZW50IG9wZXJhdG9yICc9JywgJys9JywgZXRjLg0K PiA+PiArc3BfYXNzaWduX2RlZmF1bHQgICAgICAgICAgICAgICA9IGFkZA0KPiA+PiArc3BfYm9v bCAgICAgICAgICAgICAgICAgICAgICAgICA9IGFkZCAgICAgICAjIEFkZCBvciByZW1vdmUgc3Bh Y2UgYXJvdW5kIGJvb2xlYW4gb3BlcmF0b3JzICcmJicgYW5kICd8fCcuDQo+ID4+ICtzcF9jb21w YXJlICAgICAgICAgICAgICAgICAgICAgID0gYWRkICAgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFj ZSBhcm91bmQgY29tcGFyZSBvcGVyYXRvciAnPCcsICc+JywgJz09JywgZXRjLg0KPiA+PiArDQo+ ID4+ICsjIDUuMi4yLjMgRG8gbm90IHB1dCBzcGFjZSBiZXR3ZWVuIHVuYXJ5IG9wZXJhdG9ycyBh bmQgdGhlaXIgb2JqZWN0DQo+ID4+ICtzcF9hZGRyICAgICAgICAgICAgICAgICAgICAgICAgID0g cmVtb3ZlICAgICMgQSBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgdGhlICcmJyAoYWRkcmVzcy1vZikg dW5hcnkgb3BlcmF0b3IuDQo+ID4+ICtzcF9pbmNkZWMgICAgICAgICAgICAgICAgICAgICAgID0g cmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVuICcrKycgYW5kICctLScgdGhl IHdvcmQgdG8gd2hpY2ggaXQgaXMgYmVpbmcNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWVkLCBhcyBpbiAnKC0teCknIG9yICd5Kys7Jy4N Cj4gPj4gK3NwX2ludiAgICAgICAgICAgICAgICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQg b3IgcmVtb3ZlIHNwYWNlIGFmdGVyIHRoZSAnficgKGludmVydCkgdW5hcnkgb3BlcmF0b3IuDQo+ ID4+ICtzcF9ub3QgICAgICAgICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9y IHJlbW92ZSBzcGFjZSBhZnRlciB0aGUgJyEnIChub3QpIHVuYXJ5IG9wZXJhdG9yLg0KPiA+PiAr c3Bfc2lnbiAgICAgICAgICAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1v dmUgc3BhY2UgYWZ0ZXIgJysnIG9yICctJywgYXMgaW4gJ3ggPSAtNScgb3IgJ3kgPSArNycuDQo+ ID4+ICsNCj4gPj4gKyMgNS4yLjIuNCBTdWJzZXF1ZW50IGxpbmVzIG9mIG11bHRpLWxpbmUgZnVu Y3Rpb24gY2FsbHMgc2hvdWxkIGxpbmUgdXAgdHdvIHNwYWNlcyBmcm9tIHRoZSBiZWdpbm5pbmcg b2YgdGhlIGZ1bmN0aW9uDQo+ID4+ICsjICAgICAgICAgbmFtZQ0KPiA+PiArbmxfZnVuY19jYWxs X2FyZ3NfbXVsdGlfbGluZSAgICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gYWRkIGEgbmV3bGlu ZSBhZnRlciBlYWNoICcsJyBpbiBhIGZ1bmN0aW9uIGNhbGwgaWYgJygnIGFuZA0KPiAnKScNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmUgaW4g ZGlmZmVyZW50IGxpbmVzLg0KPiA+PiArbmxfZnVuY19jYWxsX2FyZ3NfbXVsdGlfbGluZV9pZ25v cmVfY2xvc3VyZXMgPSBmYWxzZQ0KPiA+PiArDQo+ID4+ICsjIC0gSW5kZW50IGVhY2ggYXJndW1l bnQgMiBzcGFjZXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uIG5hbWUuIElmIGENCj4g Pj4gKyMgICBmdW5jdGlvbiBpcyBjYWxsZWQgdGhyb3VnaCBhIHN0cnVjdHVyZSBvciB1bmlvbiBt ZW1iZXIsIG9mIHR5cGUNCj4gPj4gKyMgICBwb2ludGVyLXRvLWZ1bmN0aW9uLCB0aGVuIGluZGVu dCBlYWNoIGFyZ3VtZW50IDIgc3BhY2VzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZQ0KPiA+PiArIyAg IG1lbWJlciBuYW1lLg0KPiA+PiAraW5kZW50X2Z1bmNfY2FsbF9lZGsyX3N0eWxlICAgICA9IHRy dWUgICAgICAjIFVzZSBFREsyIGluZGVudGF0aW9uIHN0eWxlIGZvciBmdW5jdGlvbiBjYWxscyAg KCoqQ1VTVE9NIFNFVFRJTkcqKikNCj4gPj4gK2luZGVudF9wYXJlbl9hZnRlcl9mdW5jX2NhbGwg ICAgPSB0cnVlICAgICAgIyBXaGV0aGVyIHRvIGluZGVudCB0aGUgb3BlbiBwYXJlbnRoZXNpcyBv ZiBhIGZ1bmN0aW9uIGNhbGwsIGlmIHRoZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIHBhcmVudGhlc2lzIGlzIG9uIGl0cyBvd24gbGluZS4NCj4g Pj4gKw0KPiA+PiArIyAtIEFsaWduIHRoZSBjbG9zZSBwYXJlbnRoZXNpcyB3aXRoIHRoZSBzdGFy dCBvZiB0aGUgbGFzdCBhcmd1bWVudA0KPiA+PiAraW5kZW50X3BhcmVuX2Nsb3NlICAgICAgICAg ICAgICA9IDAgICAgICAgICAjIEhvdyB0byBpbmRlbnQgYSBjbG9zZSBwYXJlbnRoZXNpcyBhZnRl ciBhIG5ld2xpbmUuDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgKDA6IEJvZHksIDE6IE9wZW5wYXJlbnRoZXNpcywgMjogQnJhY2UgbGV2ZWwpDQo+ ID4+ICsNCj4gPj4gKw0KPiA+PiArIyA1LjIuMi41IEFsd2F5cyBwdXQgc3BhY2UgYWZ0ZXIgY29t bWFzIG9yIHNlbWljb2xvbnMgdGhhdCBzZXBhcmF0ZSBpdGVtcw0KPiA+PiArc3BfYWZ0ZXJfY29t bWEgICAgICAgICAgICAgICAgICA9IGZvcmNlICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0 ZXIgJywnLCBpLmUuICdhLGInIHZzLiAnYSwgYicuDQo+ID4+ICtzcF9iZWZvcmVfY29tbWEgICAg ICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZWZvcmUgJywn Lg0KPiA+PiArDQo+ID4+ICsjIDUuMi4yLjYgQWx3YXlzIHB1dCBzcGFjZSBiZWZvcmUgYW4gb3Bl biBwYXJlbnRoZXNpcw0KPiA+PiArc3BfYWZ0ZXJfc3BhcmVuICAgICAgICAgICAgICAgICA9IGFk ZCAgICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgJyknIG9mIGNvbnRyb2wgc3RhdGVt ZW50cy4NCj4gPj4gK3NwX2F0dHJpYnV0ZV9wYXJlbiAgICAgICAgICAgICAgPSBhZGQgICAgICAg IyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJldHdlZW4gJ19fYXR0cmlidXRlX18nIGFuZCAnKCcuDQo+ ID4+ICtzcF9iZWZvcmVfc3BhcmVuICAgICAgICAgICAgICAgID0gZm9yY2UgICAgICMgQWRkIG9y IHJlbW92ZSBzcGFjZSBiZWZvcmUgJygnIG9mIGNvbnRyb2wgc3RhdGVtZW50cw0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICgnaWYnLCAnZm9yJywg J3N3aXRjaCcsICd3aGlsZScsIGV0Yy4pLg0KPiA+PiArc3BfZGVmaW5lZF9wYXJlbiAgICAgICAg ICAgICAgICA9IGZvcmNlICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmV0d2VlbiAnZGVmaW5l ZCcgYW5kICcoJyBpbiAnI2lmIGRlZmluZWQgKEZPTyknLg0KPiA+PiArc3BfZnVuY19jYWxsX3Bh cmVuICAgICAgICAgICAgICA9IGZvcmNlICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmV0d2Vl biBmdW5jdGlvbiBuYW1lIGFuZCAnKCcgb24gZnVuY3Rpb24gY2FsbHMuDQo+ID4+ICtzcF9mdW5j X2NhbGxfcGFyZW5fZW1wdHkgICAgICAgID0gZm9yY2UgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFj ZSBiZXR3ZWVuIGZ1bmN0aW9uIG5hbWUgYW5kICcoKScgb24gZnVuY3Rpb24gY2FsbHMNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRob3V0IHBh cmFtZXRlcnMuIElmIHNldCB0byBpZ25vcmUgKHRoZSBkZWZhdWx0KSwgc3BfZnVuY19jYWxsX3Bh cmVuDQo+IGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgdXNlZC4NCj4gPj4gK3NwX2Z1bmNfZGVmX3BhcmVuICAgICAgICAgICAgICAgPSBhZGQg ICAgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJldHdlZW4gYWxpYXMgbmFtZSBhbmQgJygnIG9m IGEgbm9uLXBvaW50ZXIgZnVuY3Rpb24NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyB0eXBlIHR5cGVkZWYuDQo+ID4+ICtzcF9mdW5jX3Byb3RvX3Bh cmVuICAgICAgICAgICAgID0gYWRkICAgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVu IGZ1bmN0aW9uIG5hbWUgYW5kICcoKScgb24gZnVuY3Rpb24NCj4gZGVjbGFyYXRpb24NCj4gPj4g K3NwX3NpemVvZl9wYXJlbiAgICAgICAgICAgICAgICAgPSBmb3JjZSAgICAgIyBBZGQgb3IgcmVt b3ZlIHNwYWNlIGJldHdlZW4gJ3NpemVvZicgYW5kICcoJy4NCj4gPj4gK3NwX3R5cGVfZnVuYyAg ICAgICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJldHdl ZW4gcmV0dXJuIHR5cGUgYW5kIGZ1bmN0aW9uIG5hbWUuIEEgbWluaW11bSBvZg0KPiAxDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgZm9yY2Vk IGV4Y2VwdCBmb3IgcG9pbnRlciByZXR1cm4gdHlwZXMuDQo+ID4+ICsNCj4gPj4gKyMgTm90IHNw ZWNpZmllZCwgYnV0IGFsc28gZ29vZCBzdHlsZSB0byByZW1vdmUgc3BhY2VzIGluc2lkZSBwYXJl bnRoZXNlcyAoT3B0aW9uYWwpDQo+ID4+ICtzcF9jcGFyZW5fb3BhcmVuICAgICAgICAgICAgICAg ID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVuIGJhY2stdG8tYmFjayBw YXJlbnRoZXNlcywgaS5lLiAnKSgnIHZzLiAnKQ0KPiAoJy4NCj4gPj4gK3NwX2luc2lkZV9mcGFy ZW4gICAgICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGluc2lk ZSBmdW5jdGlvbiAnKCcgYW5kICcpJy4NCj4gPj4gK3NwX2luc2lkZV9mcGFyZW5zICAgICAgICAg ICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGluc2lkZSBlbXB0eSBmdW5j dGlvbiAnKCknLg0KPiA+PiArc3BfaW5zaWRlX3BhcmVuICAgICAgICAgICAgICAgICA9IHJlbW92 ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgaW5zaWRlICcoJyBhbmQgJyknLg0KPiA+PiArc3Bf aW5zaWRlX3BhcmVuX2Nhc3QgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUg c3BhY2VzIGluc2lkZSBjYXN0IHBhcmVudGhlc2VzLiAnKGludCl4Jw0KPiA+PiArc3BfaW5zaWRl X3NxdWFyZSAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2Ug aW5zaWRlIGEgbm9uLWVtcHR5ICdbJyBhbmQgJ10nLg0KPiA+PiArc3BfcGFyZW5fcGFyZW4gICAg ICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmV0d2VlbiBu ZXN0ZWQgcGFyZW50aGVzZXMsIGkuZS4gJygoJyB2cy4gJykgKScuDQo+ID4+ICtzcF9zcXVhcmVf ZnBhcmVuICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBi ZXR3ZWVuICddJyBhbmQgJygnIHdoZW4gcGFydCBvZiBhIGZ1bmN0aW9uIGNhbGwuDQo+ID4+ICsN Cj4gPj4gKyMgNS4yLjIuNyBQdXQgYSBzcGFjZSBiZWZvcmUgYW4gb3BlbiBicmFjZSBpZiBpdCBp cyBub3Qgb24gaXRzIG93biBsaW5lDQo+ID4+ICtzcF9kb19icmFjZV9vcGVuICAgICAgICAgICAg ICAgID0gZm9yY2UgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVuICdkbycgYW5kICd7 Jy4NCj4gPj4gK3NwX3BhcmVuX2JyYWNlICAgICAgICAgICAgICAgICAgPSBmb3JjZSAgICAgIyBB ZGQgb3IgcmVtb3ZlIHNwYWNlIGJldHdlZW4gJyknIGFuZCAneycuDQo+ID4+ICtzcF9zcGFyZW5f YnJhY2UgICAgICAgICAgICAgICAgID0gZm9yY2UgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBi ZXR3ZWVuICcpJyBhbmQgJ3snIG9mIG9mIGNvbnRyb2wgc3RhdGVtZW50cy4NCj4gPj4gKw0KPiA+ PiArIyA1LjIuMi44IERvIG5vdCBwdXQgc3BhY2VzIGFyb3VuZCBzdHJ1Y3R1cmUgbWVtYmVyIGFu ZCBwb2ludGVyIG9wZXJhdG9ycw0KPiA+PiArc3BfYWZ0ZXJfYnlyZWYgICAgICAgICAgICAgICAg ICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgcmVmZXJlbmNlIHNpZ24g JyYnLCBpZiBmb2xsb3dlZCBieSBhIHdvcmQuDQo+ID4+ICtzcF9iZWZvcmVfYnlyZWYgICAgICAg ICAgICAgICAgID0gYWRkICAgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZWZvcmUgYSByZWZl cmVuY2Ugc2lnbiAnJicuDQo+ID4+ICtzcF9kZXJlZiAgICAgICAgICAgICAgICAgICAgICAgID0g cmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBhZnRlciB0aGUgJyonIChkZXJlZmVyZW5j ZSkgdW5hcnkgb3BlcmF0b3IuIFRoaXMNCj4gZG9lcw0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBhZmZlY3QgdGhlIHNwYWNpbmcgYWZ0ZXIg YSAnKicgdGhhdCBpcyBwYXJ0IG9mIGEgdHlwZS4NCj4gPj4gK3NwX21lbWJlciAgICAgICAgICAg ICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGFyb3VuZCB0aGUg Jy4nIG9yICctPicgb3BlcmF0b3JzLg0KPiA+PiArDQo+ID4+ICsjIDUuMi4yLjkgRG8gbm90IHB1 dCBzcGFjZXMgYmVmb3JlIG9wZW4gYnJhY2tldHMgb2YgYXJyYXkgc3Vic2NyaXB0cw0KPiA+PiAr c3BfYmVmb3JlX3NxdWFyZSAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1v dmUgc3BhY2UgYmVmb3JlICdbJyAoZXhjZXB0ICdbXScpLg0KPiA+PiArc3BfYmVmb3JlX3NxdWFy ZXMgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmVmb3Jl ICdbXScuDQo+ID4+ICtzcF9iZWZvcmVfdmFyZGVmX3NxdWFyZSAgICAgICAgID0gcmVtb3ZlICAg ICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZWZvcmUgJ1snIGZvciBhIHZhcmlhYmxlIGRlZmluaXRp b24uDQo+ID4+ICsNCj4gPj4gKyMgNS4yLjIuMTAgVXNlIGV4dHJhIHBhcmVudGhlc2VzIHJhdGhl ciB0aGFuIGRlcGVuZGluZyBvbiBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgdGhlIG9yZGVyIG9mIHBy ZWNlZGVuY2Ugb2YgQw0KPiA+PiArbW9kX2Z1bGxfcGFyZW5faWZfYm9vbCAgICAgICAgICA9IHRy dWUgICAgICAjIFdoZXRoZXIgdG8gZnVsbHkgcGFyZW50aGVzaXplIEJvb2xlYW4gZXhwcmVzc2lv bnMgaW4gJ3doaWxlJyBhbmQgJ2lmJw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHN0YXRlbWVudCwgYXMgaW4gJ2lmIChhICYmIGIgPiBjKScgPT4g J2lmIChhICYmIChiID4gYykpJy4NCj4gPj4gKw0KPiA+PiArIyA1LjIuMi4xMSBBbGlnbiBhIGNv bnRpbnVhdGlvbiBsaW5lIHdpdGggdGhlIHBhcnQgb2YgdGhlIGxpbmUgdGhhdCBpdCBjb250aW51 ZXMuDQo+ID4+ICt1c2VfaW5kZW50X2NvbnRpbnVlX29ubHlfb25jZSAgID0gdHJ1ZQ0KPiA+PiAr DQo+ID4+ICsjIEFkZGl0aW9uYWwgJ3t9JyBicmFjaW5nIHJ1bGVzIChPcHRpb25hbCkNCj4gPj4g KyMgTk9URSAtIFRoZSBzdHlsZSBndWlkZSBzcGVjaWZpZXMgdHdvIGRpZmZlcmVudCBzdHlsZXMg Zm9yIGJyYWNlcywNCj4gPj4gKyMgc28gdGhlc2UgYXJlIGlnbm9yZWQgZm9yIG5vdyB0byBhbGxv dyBkZXZlbG9wZXJzIHNvbWUgZmxleGliaWxpdHkuDQo+ID4+ICtubF9hZnRlcl9icmFjZV9jbG9z ZSAgICAgICAgICAgID0gdHJ1ZSAgICAgICMgV2hldGhlciB0byBhZGQgYSBuZXdsaW5lIGFmdGVy ICd9Jy4gRG9lcyBub3QgYXBwbHkgaWYgZm9sbG93ZWQgYnkgYQ0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5lY2Vzc2FyeSAnOycuDQo+ID4+ICtu bF9icmFjZV9lbHNlICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92 ZSBuZXdsaW5lIGJldHdlZW4gJ30nIGFuZCAnZWxzZScuDQo+ID4+ICtubF9icmFjZV93aGlsZSAg ICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdl ZW4gJ30nIGFuZCAnd2hpbGUnIG9mICdkbycgc3RhdGVtZW50Lg0KPiA+PiArbmxfZG9fYnJhY2Ug ICAgICAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgbmV3bGluZSBi ZXR3ZWVuICdkbycgYW5kICd7Jy4NCj4gPj4gK25sX2Vsc2VfYnJhY2UgICAgICAgICAgICAgICAg ICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIG5ld2xpbmUgYmV0d2VlbiAnZWxzZScgYW5k ICd7Jy4NCj4gPj4gK25sX2Vsc2VfaWYgICAgICAgICAgICAgICAgICAgICAgPSByZW1vdmUgICAg IyBBZGQgb3IgcmVtb3ZlIG5ld2xpbmUgYmV0d2VlbiAnZWxzZScgYW5kICdpZicuDQo+ID4+ICtu bF9lbHNlaWZfYnJhY2UgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92 ZSBuZXdsaW5lIGJldHdlZW4gJ2Vsc2UgaWYnIGFuZCAneycuDQo+ID4+ICtubF9lbnVtX2JyYWNl ICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJl dHdlZW4gJ2VudW0nIGFuZCAneycuDQo+ID4+ICtubF9mY2FsbF9icmFjZSAgICAgICAgICAgICAg ICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gYSBmdW5jdGlv biBjYWxsJ3MgJyknIGFuZCAneycsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgYXMgaW4gJ2xpc3RfZm9yX2VhY2goaXRlbSwgJmxpc3QpIHsgfScu DQo+ID4+ICtubF9mb3JfYnJhY2UgICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRk IG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJ2ZvcicgYW5kICd7Jy4NCj4gPj4gK25sX2lmX2Jy YWNlICAgICAgICAgICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIG5ld2xp bmUgYmV0d2VlbiAnaWYnIGFuZCAneycuDQo+ID4+ICtubF9zdHJ1Y3RfYnJhY2UgICAgICAgICAg ICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJ3N0cnVj dCBhbmQgJ3snLg0KPiA+PiArbmxfc3dpdGNoX2JyYWNlICAgICAgICAgICAgICAgICA9IHJlbW92 ZSAgICAjIEFkZCBvciByZW1vdmUgbmV3bGluZSBiZXR3ZWVuICdzd2l0Y2gnIGFuZCAneycuDQo+ ID4+ICtubF91bmlvbl9icmFjZSAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9y IHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJ3VuaW9uJyBhbmQgJ3snLg0KPiA+PiArbmxfd2hpbGVf YnJhY2UgICAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgbmV3bGlu ZSBiZXR3ZWVuICd3aGlsZScgYW5kICd7Jy4NCj4gPj4gKw0KPiA+PiArIyBBZGRpdGlvbmFsIHdo aXRlc3BhY2UgcnVsZXMgKE9wdGlvbmFsKQ0KPiA+PiArc3BfYWZ0ZXJfcHRyX3N0YXIgICAgICAg ICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgcG9pbnRlciBz dGFyICcqJywgaWYgZm9sbG93ZWQgYnkgYSB3b3JkLg0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIGFsaWdu X3Zhcl9kZWZfc3Rhcl9zdHlsZT09Mg0KPiA+PiArc3BfYWZ0ZXJfcHRyX3N0YXJfZnVuYyAgICAg ICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgYSBwb2ludGVyIHN0 YXIgJyonLCBpZiBmb2xsb3dlZCBieSBhIGZ1bmN0aW9uDQo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJvdG90eXBlIG9yIGZ1bmN0aW9uIGRlZmlu aXRpb24uDQo+ID4+ICtzcF9hZnRlcl9zZW1pICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAg ICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBhZnRlciAnOycsIGV4Y2VwdCB3aGVuIGZvbGxvd2VkIGJ5 IGEgY29tbWVudC4NCj4gPj4gK3NwX2JlZm9yZV9jYXNlX2NvbG9uICAgICAgICAgICAgPSByZW1v dmUgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJlZm9yZSBjYXNlICc6Jy4NCj4gPj4gK3NwX2Jl Zm9yZV9wdHJfc3RhciAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIHNw YWNlIGJlZm9yZSBwb2ludGVyIHN0YXIgJyonLg0KPiA+PiArc3BfYmVmb3JlX3B0cl9zdGFyX2Z1 bmMgICAgICAgICA9IGFkZCAgICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmVmb3JlIGEgcG9p bnRlciBzdGFyICcqJywgaWYgZm9sbG93ZWQgYnkgYSBmdW5jdGlvbg0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByb3RvdHlwZSBvciBmdW5jdGlv biBkZWZpbml0aW9uLg0KPiA+PiArc3BfYmVmb3JlX3NlbWkgICAgICAgICAgICAgICAgICA9IHJl bW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmVmb3JlICc7Jw0KPiA+PiArc3BfYmVmb3Jl X3NlbWlfZm9yICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2Ug YmVmb3JlICc7JyBpbiBub24tZW1wdHkgJ2Zvcicgc3RhdGVtZW50cy4NCj4gPj4gK3NwX2JlZm9y ZV9zZW1pX2Zvcl9lbXB0eSAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNl IGJlZm9yZSBhIHNlbWljb2xvbiBvZiBhbiBlbXB0eSBwYXJ0IG9mIGEgZm9yDQo+IHN0YXRlbWVu dA0KPiA+PiArc3BfYmV0d2Vlbl9wdHJfc3RhciAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFk ZCBvciByZW1vdmUgc3BhY2UgYmV0d2VlbiBwb2ludGVyIHN0YXJzICcqJy4gKGllLCAnVk9JRCAq KicpDQo+ID4+ICtzcF9icmFjZV9jbG9zZV93aGlsZSAgICAgICAgICAgID0gZm9yY2UgICAgICMg QWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVuICd9JyBhbmQgJ3doaWxlJy4NCj4gPj4gKw0KPiA+ PiArc3BfYWZ0ZXJfY2FzdCAgICAgICAgICAgICAgICAgICA9IHJlbW92ZQ0KPiA+PiArc3BfYWZ0 ZXJfdHlwZSAgICAgICAgICAgICAgICAgICA9IGFkZA0KPiA+PiArc3BfYmFsYW5jZV9uZXN0ZWRf cGFyZW5zICAgICAgICA9IGZhbHNlDQo+ID4+ICtzcF9iZWZvcmVfbmxfY29udCAgICAgICAgICAg ICAgID0gYWRkDQo+ID4+ICtzcF9iZWZvcmVfc3F1YXJlX2FzbV9ibG9jayAgICAgID0gaWdub3Jl DQo+ID4+ICtzcF9iZWZvcmVfdW5uYW1lZF9ieXJlZiAgICAgICAgID0gYWRkDQo+ID4+ICtzcF9i cmFjZV9icmFjZSAgICAgICAgICAgICAgICAgID0gaWdub3JlDQo+ID4+ICtzcF9icmFjZV9lbHNl ICAgICAgICAgICAgICAgICAgID0gZm9yY2UNCj4gPj4gK3NwX2JyYWNlX3R5cGVkZWYgICAgICAg ICAgICAgICAgPSBhZGQNCj4gPj4gK3NwX2Nhc2VfbGFiZWwgICAgICAgICAgICAgICAgICAgPSBm b3JjZQ0KPiA+PiArc3BfY210X2NwcF9kb3h5Z2VuICAgICAgICAgICAgICA9IHRydWUNCj4gPj4g K3NwX2NvbmRfY29sb24gICAgICAgICAgICAgICAgICAgPSBhZGQNCj4gPj4gK3NwX2NvbmRfcXVl c3Rpb24gICAgICAgICAgICAgICAgPSBhZGQNCj4gPj4gK3NwX2NwcF9jYXN0X3BhcmVuICAgICAg ICAgICAgICAgPSBmb3JjZQ0KPiA+PiArc3BfZWxzZV9icmFjZSAgICAgICAgICAgICAgICAgICA9 IGZvcmNlDQo+ID4+ICtzcF9lbmRpZl9jbXQgICAgICAgICAgICAgICAgICAgID0gZm9yY2UNCj4g Pj4gK3NwX2VudW1fYXNzaWduICAgICAgICAgICAgICAgICAgPSBhZGQNCj4gPj4gK3NwX2luc2lk ZV9icmFjZXMgICAgICAgICAgICAgICAgPSBmb3JjZQ0KPiA+PiArc3BfaW5zaWRlX2JyYWNlc19l bXB0eSAgICAgICAgICA9IGZvcmNlDQo+ID4+ICtzcF9pbnNpZGVfYnJhY2VzX2VudW0gICAgICAg ICAgID0gZm9yY2UNCj4gPj4gK3NwX2luc2lkZV9icmFjZXNfc3RydWN0ICAgICAgICAgPSBmb3Jj ZQ0KPiA+PiArc3BfcHBfY29uY2F0ICAgICAgICAgICAgICAgICAgICA9IGFkZA0KPiA+PiArc3Bf cHBfc3RyaW5naWZ5ICAgICAgICAgICAgICAgICA9IGFkZA0KPiA+PiArc3BfcmV0dXJuX3BhcmVu ICAgICAgICAgICAgICAgICA9IGFkZA0KPiA+PiArc3Bfc3BlY2lhbF9zZW1pICAgICAgICAgICAg ICAgICA9IGZvcmNlDQo+ID4+ICtzcF93aGlsZV9wYXJlbl9vcGVuICAgICAgICAgICAgID0gZm9y Y2UNCj4gPj4gKw0KPiA+PiArIyBBZGRpdGlvbmFsIEluZGVudGF0aW9uIFJ1bGVzDQo+ID4+ICtp bmRlbnRfYWNjZXNzX3NwZWMgICAgICAgICAgICAgID0gMQ0KPiA+PiAraW5kZW50X2FjY2Vzc19z cGVjX2JvZHkgICAgICAgICA9IGZhbHNlDQo+ID4+ICtpbmRlbnRfYWxpZ25fYXNzaWduICAgICAg ICAgICAgID0gdHJ1ZQ0KPiA+PiAraW5kZW50X2FsaWduX3N0cmluZyAgICAgICAgICAgICA9IHRy dWUNCj4gPj4gK2luZGVudF9ib29sX3BhcmVuICAgICAgICAgICAgICAgPSB0cnVlDQo+ID4+ICtp bmRlbnRfYnJhY2VfcGFyZW50ICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK2luZGVudF9icmFj ZXMgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiAraW5kZW50X2JyYWNlc19ub19jbGFz cyAgICAgICAgICA9IGZhbHNlDQo+ID4+ICtpbmRlbnRfYnJhY2VzX25vX2Z1bmMgICAgICAgICAg ID0gdHJ1ZQ0KPiA+PiAraW5kZW50X2JyYWNlc19ub19zdHJ1Y3QgICAgICAgICA9IGZhbHNlDQo+ ID4+ICtpbmRlbnRfY2xhc3MgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK2luZGVu dF9jbGFzc19jb2xvbiAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiAraW5kZW50X2NtdF93aXRo X3RhYnMgICAgICAgICAgICA9IGZhbHNlICAgICAgICAgIyBXaGV0aGVyIHRvIGluZGVudCBjb21t ZW50cyB0aGF0IGFyZSBub3QgYXQgYSBicmFjZSBsZXZlbCB3aXRoIHRhYnMNCj4gb24NCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYSB0YWJz dG9wLiBSZXF1aXJlcyBpbmRlbnRfd2l0aF90YWJzPTIuIElmIGZhbHNlLCB3aWxsIHVzZSBzcGFj ZXMuDQo+ID4+ICtpbmRlbnRfY29sMV9jb21tZW50ICAgICAgICAgICAgID0gdHJ1ZQ0KPiA+PiAr aW5kZW50X2NvbDFfbXVsdGlfc3RyaW5nX2xpdGVyYWw9IHRydWUNCj4gPj4gK2luZGVudF9jb21t YV9wYXJlbiAgICAgICAgICAgICAgPSB0cnVlDQo+ID4+ICtpbmRlbnRfZWxzZV9pZiAgICAgICAg ICAgICAgICAgID0gdHJ1ZQ0KPiA+PiAraW5kZW50X2V4dGVybiAgICAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ID4+ICtpbmRlbnRfZmlyc3RfYm9vbF9leHByICAgICAgICAgID0gdHJ1ZQ0KPiA+ PiArDQo+ID4+ICtpbmRlbnRfZnVuY19kZWZfcGFyYW1fcGFyZW5fcG9zX3RocmVzaG9sZCA9IDAN Cj4gPj4gK2luZGVudF9mdW5jX3BhcmFtX2RvdWJsZSAgICAgICAgICAgICAgICAgID0gZmFsc2UN Cj4gPj4gK2luZGVudF9mdW5jX3Byb3RvX3BhcmFtICAgICAgICAgICAgICAgICAgID0gdHJ1ZQ0K PiA+PiAraW5kZW50X2lnbm9yZV9hc21fYmxvY2sgICAgICAgICAgICAgICAgICAgPSB0cnVlDQo+ ID4+ICtpbmRlbnRfbGFiZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDENCj4gPj4g K2luZGVudF9tZW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMg0KPiA+PiAraW5k ZW50X25hbWVzcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiAraW5k ZW50X3BhcmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAyDQo+ID4+ICtpbmRlbnRf cGFyZW5fbmwgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ID4+ICtpbmRlbnRf cGFyZW5fb3Blbl9icmFjZSAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ID4+ICtpbmRlbnRf cHJlc2VydmVfc3FsICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ID4+ICtpbmRlbnRf cmVsYXRpdmVfc2luZ2xlX2xpbmVfY29tbWVudHMgICAgICA9IGZhbHNlDQo+ID4+ICtpbmRlbnRf c2luZ19saW5lX2NvbW1lbnRzICAgICAgICAgICAgICAgICA9IDANCj4gPj4gK2luZGVudF9zaW5n bGVfbmV3bGluZXMgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK2luZGVudF9zcXVh cmVfbmwgICAgICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK2luZGVudF9zd2l0 Y2hfY2FzZSAgICAgICAgICAgICAgICAgICAgICAgID0gMg0KPiA+PiAraW5kZW50X3RlbXBsYXRl X3BhcmFtICAgICAgICAgICAgICAgICAgICAgPSB0cnVlDQo+ID4+ICtpbmRlbnRfdmFyX2RlZl9i bGsgICAgICAgICAgICAgICAgICAgICAgICA9IDANCj4gPj4gK2luZGVudF92YXJfZGVmX2NvbnQg ICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gKw0KPiA+PiArIyBUaWR5LXVwIHJ1 bGVzIChPcHRpb25hbCkNCj4gPj4gK21vZF9tb3ZlX2Nhc2VfYnJlYWsgICAgICAgICAgICAgPSB0 cnVlICAgICAgIyBXaGV0aGVyIHRvIG1vdmUgYSAnYnJlYWsnIHRoYXQgYXBwZWFycyBhZnRlciBh IGZ1bGx5IGJyYWNlZCAnY2FzZScNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBiZWZvcmUgdGhlIGNsb3NlIGJyYWNlLCBhcyBpbiAnY2FzZSBYOiB7 IC4uLiB9IGJyZWFrOycgPT4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAnY2FzZSBYOiB7IC4uLiBicmVhazsgfScuDQo+ID4+ICttb2RfcGF3bl9z ZW1pY29sb24gICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK21vZF9yZW1vdmVfZW1wdHlfcmV0 dXJuICAgICAgICAgPSBmYWxzZSAgICAgIyBXaGV0aGVyIHRvIHJlbW92ZSBhIHZvaWQgJ3JldHVy bjsnIHRoYXQgYXBwZWFycyBhcyB0aGUgbGFzdCBzdGF0ZW1lbnQNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiBhIGZ1bmN0aW9uLg0KPiA+PiAr bW9kX3JlbW92ZV9leHRyYV9zZW1pY29sb24gICAgICA9IHRydWUNCj4gPj4gK21vZF9zb3J0X2lt cG9ydCAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArbW9kX3NvcnRfaW5jbHVkZSAgICAg ICAgICAgICAgICA9IGZhbHNlDQo+ID4+ICttb2Rfc29ydF91c2luZyAgICAgICAgICAgICAgICAg ID0gZmFsc2UNCj4gPj4gK25sX2FmdGVyX2Nhc2UgICAgICAgICAgICAgICAgICAgPSBmYWxzZSAg ICAgIyBXaGV0aGVyIHRvIGFkZCBhIG5ld2xpbmUgYWZ0ZXIgYSAnY2FzZScgc3RhdGVtZW50Lg0K PiA+PiArbmxfZW5kX29mX2ZpbGUgICAgICAgICAgICAgICAgICA9IGZvcmNlICAgICAjIEFkZCBv ciByZW1vdmUgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLg0KPiA+PiArbmxfZW5kX29m X2ZpbGVfbWluICAgICAgICAgICAgICA9IDEgICAgICAgICAjIFRoZSBtaW5pbXVtIG51bWJlciBv ZiBuZXdsaW5lcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlDQo+ID4+ICtubF9tYXggICAgICAgICAg ICAgICAgICAgICAgICAgID0gMiAgICAgICAgICMgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnNl Y3V0aXZlIG5ld2xpbmVzICgzID0gMiBibGFuayBsaW5lcykuDQo+ID4+ICtubF9zdGFydF9vZl9m aWxlICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lcyBh dCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuDQo+ID4+ICsNCj4gPj4gKyMgQ29kZSBhbGlnbm1lbnQg cnVsZXMgKE9wdGlvbmFsKQ0KPiA+PiArYWxpZ25fYXNtX2NvbG9uICAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ID4+ICthbGlnbl9hc3NpZ25fc3BhbiAgICAgICAgICAgICAgID0gMSAgICAgICAg ICMgVGhlIHNwYW4gZm9yIGFsaWduaW5nIG9uICc9JyBpbiBhc3NpZ25tZW50cy4NCj4gPj4gK2Fs aWduX2Fzc2lnbl90aHJlc2ggICAgICAgICAgICAgPSA0DQo+ID4+ICthbGlnbl9lZGsyX3N0eWxl ICAgICAgICAgICAgICAgID0gdHJ1ZSAgICAgICMgV2hldGhlciB0byBhcHBseSBlZGsyLXNwZWNp ZmljIGFsaWdubWVudCBmb3JtYXR0aW5nDQo+ID4+ICthbGlnbl9lbnVtX2VxdV9zcGFuICAgICAg ICAgICAgID0gMSAgICAgICAgICMgVGhlIHNwYW4gZm9yIGFsaWduaW5nIG9uICc9JyBpbiBlbnVt cy4NCj4gPj4gK2FsaWduX2Z1bmNfcGFyYW1zICAgICAgICAgICAgICAgPSB0cnVlICAgICAgIyBX aGV0aGVyIHRvIGFsaWduIHZhcmlhYmxlIGRlZmluaXRpb25zIGluIHByb3RvdHlwZXMgYW5kIGZ1 bmN0aW9ucy4NCj4gPj4gK2FsaWduX2Z1bmNfcGFyYW1zX2dhcCAgICAgICAgICAgPSAyDQo+ID4+ ICthbGlnbl9mdW5jX3BhcmFtc19zcGFuICAgICAgICAgID0gMiAgICAgICAgICMgVGhlIHNwYW4g Zm9yIGFsaWduaW5nIHBhcmFtZXRlciBkZWZpbml0aW9ucyBpbiBmdW5jdGlvbiBvbiBwYXJhbWV0 ZXINCj4gbmFtZS4NCj4gPj4gK2FsaWduX2Z1bmNfcGFyYW1zX3RocmVzaCAgICAgICAgPSAwDQo+ ID4+ICthbGlnbl9mdW5jX3Byb3RvX3NwYW4gICAgICAgICAgID0gMA0KPiA+PiArYWxpZ25fa2Vl cF90YWJzICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ID4+ICthbGlnbl9sZWZ0X3NoaWZ0ICAg ICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK2FsaWduX21peF92YXJfcHJvdG8gICAgICAgICAg ICAgPSBmYWxzZQ0KPiA+PiArYWxpZ25fbmxfY29udCAgICAgICAgICAgICAgICAgICA9IGZhbHNl DQo+ID4+ICthbGlnbl9vY19kZWNsX2NvbG9uICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK2Fs aWduX29uX29wZXJhdG9yICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArYWxpZ25fb25fdGFi c3RvcCAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ID4+ICthbGlnbl9wcF9kZWZpbmVfZ2FwICAg ICAgICAgICAgID0gMg0KPiA+PiArYWxpZ25fcHBfZGVmaW5lX3NwYW4gICAgICAgICAgICA9IDEN Cj4gPj4gK2FsaWduX3JpZ2h0X2NtdF9hdF9jb2wgICAgICAgICAgPSAwICAgICAgICAgIyBBbGln biB0cmFpbGluZyBjb21tZW50IGF0IG9yIGJleW9uZCBjb2x1bW4gTjsgJ3B1bGxzIGluJyBjb21t ZW50cyBhcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIGEgYm9udXMgc2lkZSBlZmZlY3QgKDA9aWdub3JlKQ0KPiA+PiArYWxpZ25fcmlnaHRfY210 X2dhcCAgICAgICAgICAgICA9IDAgICAgICAgICAjIElmIGEgdHJhaWxpbmcgY29tbWVudCBpcyBt b3JlIHRoYW4gdGhpcyBudW1iZXIgb2YgY29sdW1ucyBhd2F5IGZyb20gdGhlDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGV4dCBpdCBmb2xsb3dz LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGl0 IHdpbGwgcXVhbGlmeSBmb3IgYmVpbmcgYWxpZ25lZC4gVGhpcyBoYXMgdG8gYmUgPiAwIHRvIGRv IGFueXRoaW5nLg0KPiA+PiArYWxpZ25fcmlnaHRfY210X21peCAgICAgICAgICAgICA9IGZhbHNl ICAgICAjIElmIGFsaWduaW5nIGNvbW1lbnRzLCBtaXggd2l0aCBjb21tZW50cyBhZnRlciAnfScg YW5kICNlbmRpZiB3aXRoIGxlc3MNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB0aGFuIDMgc3BhY2VzIGJlZm9yZSB0aGUgY29tbWVudA0KPiA+PiAr YWxpZ25fcmlnaHRfY210X3NhbWVfbGV2ZWwgICAgICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8g b25seSBhbGlnbiB0cmFpbGluZyBjb21tZW50cyB0aGF0IGFyZSBhdCB0aGUgc2FtZSBicmFjZQ0K PiBsZXZlbC4NCj4gPj4gK2FsaWduX3JpZ2h0X2NtdF9zcGFuICAgICAgICAgICAgPSAyICAgICAg ICAgIyBUaGUgc3BhbiBmb3IgYWxpZ25pbmcgY29tbWVudHMgdGhhdCBlbmQgbGluZXMuDQo+ID4+ ICthbGlnbl9zYW1lX2Z1bmNfY2FsbF9wYXJhbXMgICAgID0gZmFsc2UNCj4gPj4gK2FsaWduX3Np bmdsZV9saW5lX2JyYWNlICAgICAgICAgPSB0cnVlDQo+ID4+ICthbGlnbl9zaW5nbGVfbGluZV9m dW5jICAgICAgICAgID0gdHJ1ZQ0KPiA+PiArYWxpZ25fc3RydWN0X2luaXRfc3BhbiAgICAgICAg ICA9IDEgICAgICAgICAjIFRoZSBzcGFuIGZvciBhbGlnbmluZyBzdHJ1Y3QgaW5pdGlhbGl6ZXIg dmFsdWVzLg0KPiA+PiArYWxpZ25fdHlwZWRlZl9hbXBfc3R5bGUgICAgICAgICA9IDENCj4gPj4g K2FsaWduX3R5cGVkZWZfZnVuYyAgICAgICAgICAgICAgPSAxICAgICAgICAgIyBIb3cgdG8gYWxp Z24gdHlwZWRlZidkIGZ1bmN0aW9ucyB3aXRoIG90aGVyIHR5cGVkZWZzLg0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICgwOiBObyBhbGlnbiwgMTog QWxpZ24gb3BlbiBwYXJhbnRoZXNpcywgMjogQWxpZ24gZnVuY3Rpb24gdHlwZSBuYW1lKQ0KPiA+ PiArYWxpZ25fdHlwZWRlZl9nYXAgICAgICAgICAgICAgICA9IDINCj4gPj4gK2FsaWduX3R5cGVk ZWZfc3BhbiAgICAgICAgICAgICAgPSAxICAgICAgICAgIyBUaGUgc3BhbiBmb3IgYWxpZ25pbmcg c2luZ2xlLWxpbmUgdHlwZWRlZnMuDQo+ID4+ICthbGlnbl90eXBlZGVmX3N0YXJfc3R5bGUgICAg ICAgID0gMQ0KPiA+PiArYWxpZ25fdmFyX2RlZl9hbXBfc3R5bGUgICAgICAgICA9IDENCj4gPj4g K2FsaWduX3Zhcl9kZWZfYXR0cmlidXRlICAgICAgICAgPSB0cnVlDQo+ID4+ICthbGlnbl92YXJf ZGVmX2NvbG9uICAgICAgICAgICAgID0gdHJ1ZSAgICAgICMgV2hldGhlciB0byBhbGlnbiB0aGUg Y29sb24gaW4gc3RydWN0IGJpdCBmaWVsZHMuDQo+ID4+ICthbGlnbl92YXJfZGVmX2dhcCAgICAg ICAgICAgICAgID0gMiAgICAgICAgICMgVGhlIGdhcCAobWluaW11bSBzcGFjaW5nIGZvciBhbGln bmVkIGl0ZW1zKSBmb3IgdmFyaWFibGUgZGVmaW5pdGlvbnMuDQo+ID4+ICthbGlnbl92YXJfZGVm X2lubGluZSAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK2FsaWduX3Zhcl9kZWZfc3BhbiAgICAg ICAgICAgICAgPSAxICAgICAgICAgIyBUaGUgc3BhbiAobGluZXMgbmVlZGVkIHRvIGFsaWduKSBm b3IgYWxpZ25pbmcgdmFyaWFibGUgZGVmaW5pdGlvbnMuDQo+ID4+ICthbGlnbl92YXJfZGVmX3N0 YXJfc3R5bGUgICAgICAgID0gMSAgICAgICAgICMgSG93IHRvIGNvbnNpZGVyIChvciB0cmVhdCkg dGhlICcqJyBpbiB0aGUgYWxpZ25tZW50IG9mIHZhcmlhYmxlDQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVmaW5pdGlvbnMuDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMDogUGFydCBvZiB0aGUg dHlwZSAgICAgJ3ZvaWQgKiAgIGZvbzsnIChkZWZhdWx0KQ0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDE6IFBhcnQgb2YgdGhlIHZhcmlhYmxlICd2 b2lkICAgICAqZm9vOycNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyAyOiBEYW5nbGluZyAgICAgICAgICAgICAndm9pZCAgICAqZm9vOycNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoTm90ZSAtIHNo b3VsZCBhbHNvIHNldCBzcF9hZnRlcl9wdHJfc3Rhcj1yZW1vdmUpDQo+ID4+ICthbGlnbl92YXJf c3RydWN0X2dhcCAgICAgICAgICAgID0gNA0KPiA+PiArYWxpZ25fdmFyX3N0cnVjdF9zcGFuICAg ICAgICAgICA9IDggICAgICAgICAjIFRoZSBzcGFuIGZvciBhbGlnbmluZyBzdHJ1Y3QvdW5pb24g bWVtYmVyIGRlZmluaXRpb25zLg0KPiA+PiArYWxpZ25fdmFyX3N0cnVjdF90aHJlc2ggICAgICAg ICA9IDANCj4gPj4gK2FsaWduX3dpdGhfdGFicyAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+ PiArDQo+ID4+ICsjIENvbW1lbnQgZm9ybWF0dGluZw0KPiA+PiArY210X2FsaWduX2RveHlnZW5f amF2YWRvY190YWdzICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gYWxpZ24gZG94eWdlbiBqYXZh ZG9jLXN0eWxlIHRhZ3MgKCdAcGFyYW0nLCAnQHJldHVybicsIGV0Yy4pDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogRWF0cyAnWycgaW4g J1tpbl0nDQo+ID4+ICtjbXRfY19ncm91cCAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4g Pj4gK2NtdF9jX25sX2VuZCAgICAgICAgICAgICAgICAgICAgPSB0cnVlICAgICAgIyBXaGV0aGVy IHRvIGFkZCBhIG5ld2xpbmUgYmVmb3JlIHRoZSBjbG9zaW5nICcqLycgb2YgdGhlIGNvbWJpbmVk IGMtDQo+IGNvbW1lbnQuDQo+ID4+ICtjbXRfY19ubF9zdGFydCAgICAgICAgICAgICAgICAgID0g dHJ1ZQ0KPiA+PiArY210X2NwcF9ncm91cCAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ID4+ ICtjbXRfY3BwX25sX2VuZCAgICAgICAgICAgICAgICAgID0gdHJ1ZQ0KPiA+PiArY210X2NwcF9u bF9zdGFydCAgICAgICAgICAgICAgICA9IHRydWUNCj4gPj4gK2NtdF9jcHBfdG9fYyAgICAgICAg ICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArY210X2luZGVudF9tdWx0aSAgICAgICAgICAgICAg ICA9IGZhbHNlICAgICAjIFdoZXRoZXIgdG8gYXBwbHkgY2hhbmdlcyB0byBtdWx0aS1saW5lIGNv bW1lbnRzLCBpbmNsdWRpbmcgY210X3dpZHRoLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGtleXdvcmQgc3Vic3RpdHV0aW9uIGFuZCBsZWFkaW5n IGNoYXJzLg0KPiA+PiArY210X2luc2VydF9iZWZvcmVfcHJlcHJvYyAgICAgICA9IGZhbHNlDQo+ ID4+ICtjbXRfaW5zZXJ0X2ZpbGVfaGVhZGVyICAgICAgICAgID0gZGVmYXVsdF9maWxlX2hlYWRl ci50eHQNCj4gPj4gK2NtdF9pbnNlcnRfZnVuY19oZWFkZXIgICAgICAgICAgPSBkZWZhdWx0X2Z1 bmN0aW9uX2hlYWRlci50eHQNCj4gPj4gK2NtdF9tdWx0aV9jaGVja19sYXN0ICAgICAgICAgICAg PSBmYWxzZQ0KPiA+PiArY210X211bHRpX2ZpcnN0X2xlbl9taW5pbXVtICAgICA9IDINCj4gPj4g K2NtdF9yZWZsb3dfbW9kZSAgICAgICAgICAgICAgICAgPSAxICAgICAgICAgIyBIb3cgdG8gcmVm bG93IGNvbW1lbnRzLg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjICgwOk5vIHJlZmxvdywgMTpObyB0b3VjaGluZyBhdCBhbGwsIDI6IEZ1bGwgcmVm bG93KQ0KPiA+PiArY210X3NwX2FmdGVyX3N0YXJfY29udCAgICAgICAgICA9IDAgICAgICAgICAj IFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIGluc2VydCBhZnRlciB0aGUgc3RhciBvbiBzdWJzZXF1 ZW50IGNvbW1lbnQNCj4gbGluZXMuDQo+ID4+ICtjbXRfc3BfYmVmb3JlX3N0YXJfY29udCAgICAg ICAgID0gMCAgICAgICAgICMgVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5zZXJ0IGF0IHRoZSBz dGFydCBvZiBzdWJzZXF1ZW50IGNvbW1lbnQgbGluZXMuDQo+ID4+ICtjbXRfc3Rhcl9jb250ICAg ICAgICAgICAgICAgICAgID0gZmFsc2UgICAgICMgV2hldGhlciB0byBwdXQgYSBzdGFyIG9uIHN1 YnNlcXVlbnQgY29tbWVudCBsaW5lcy4NCj4gPj4gK2NtdF93aWR0aCAgICAgICAgICAgICAgICAg ICAgICAgPSAxMjAgICAgICAgIyBUcnkgdG8gd3JhcCBjb21tZW50cyBhdCBOIGNvbHVtbnMuDQo+ ID4+ICtzcF9jbXRfY3BwX3N0YXJ0ICAgICAgICAgICAgICAgID0gYWRkICAgICAgICMgQWRkIG9y IHJlbW92ZSBzcGFjZSBhZnRlciB0aGUgb3BlbmluZyBvZiBhIEMrKyBjb21tZW50LCBhcyBpbg0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICcvLyA8 aGVyZT4gQScuICBOT1RFOiBCcmVha3MgaW5kZW50YXRpb24gd2l0aGluIGNvbW1lbnRzLg0KPiA+ PiArDQo+ID4+ICsjIEZ1bmN0aW9uIGRlZmluaXRpb25zIC8gZGVjbGFyYXRpb25zDQo+ID4+ICtp bmRlbnRfZnVuY19jYWxsX3BhcmFtICAgICAgICAgID0gZmFsc2UgICAgICMgV2hldGhlciB0byBp bmRlbnQgY29udGludWVkIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVycyBvbmUgaW5kZW50IGxldmVs LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJh dGhlciB0aGFuIGFsaWduaW5nIHBhcmFtZXRlcnMgdW5kZXIgdGhlIG9wZW4gcGFyZW50aGVzaXMu DQo+ID4+ICtpbmRlbnRfZnVuY19jbGFzc19wYXJhbSAgICAgICAgID0gZmFsc2UgICAgICMgV2hl dGhlciB0byBpbmRlbnQgY29udGludWVkIGZ1bmN0aW9uIGNhbGwgZGVjbGFyYXRpb24gb25lIGlu ZGVudCBsZXZlbCwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyByYXRoZXIgdGhhbiBhbGlnbmluZyBwYXJhbWV0ZXJzIHVuZGVyIHRoZSBvcGVuIHBh cmVudGhlc2lzLg0KPiA+PiAraW5kZW50X2Z1bmNfY3Rvcl92YXJfcGFyYW0gICAgICA9IGZhbHNl ICAgICAjIFdoZXRoZXIgdG8gaW5kZW50IGNvbnRpbnVlZCBjbGFzcyB2YXJpYWJsZSBjb25zdHJ1 Y3RvcnMgb25lIGluZGVudA0KPiBsZXZlbCwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyByYXRoZXIgdGhhbiBhbGlnbmluZyBwYXJhbWV0ZXJzIHVu ZGVyIHRoZSBvcGVuIHBhcmVudGhlc2lzLg0KPiA+PiAraW5kZW50X2Z1bmNfZGVmX3BhcmFtICAg ICAgICAgICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gaW5kZW50IGNvbnRpbnVlZCBmdW5jdGlv biBkZWZpbml0aW9uIHBhcmFtZXRlcnMgb25lIGluZGVudA0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxldmVsLCByYXRoZXIgdGhhbiBhbGlnbmlu ZyBwYXJhbWV0ZXJzIHVuZGVyIHRoZSBvcGVuIHBhcmVudGhlc2lzLg0KPiA+PiArbmxfZmRlZl9i cmFjZSAgICAgICAgICAgICAgICAgICA9IGFkZCAgICAgICAjIEFkZCBvciByZW1vdmUgbmV3bGlu ZSBiZXR3ZWVuIGZ1bmN0aW9uIHNpZ25hdHVyZSBhbmQgJ3snLg0KPiA+PiArbmxfZnVuY19jYWxs X2VuZF9tdWx0aV9saW5lICAgICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gYWRkIGEgbmV3bGlu ZSBiZWZvcmUgJyknIGluIGEgZnVuY3Rpb24gY2FsbCBpZiAnKCcgYW5kICcpJw0KPiBhcmUNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiBkaWZm ZXJlbnQgbGluZXMuDQo+ID4+ICtubF9mdW5jX2NhbGxfcGFyZW4gICAgICAgICAgICAgID0gcmVt b3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gYSBmdW5jdGlvbiBuYW1lIGFu ZCB0aGUgb3BlbmluZyAnKCcgaW4gdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgY2FsbC4NCj4gPj4gK25sX2Z1bmNfY2FsbF9zdGFydF9tdWx0 aV9saW5lICAgPSB0cnVlICAgICAgIyBXaGV0aGVyIHRvIGFkZCBhIG5ld2xpbmUgYWZ0ZXIgJygn IGluIGEgZnVuY3Rpb24gY2FsbCBpZiAnKCcgYW5kICcpJyBhcmUNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiBkaWZmZXJlbnQgbGluZXMuDQo+ ID4+ICtubF9mdW5jX2RlY2xfYXJncyAgICAgICAgICAgICAgID0gZm9yY2UgICAgICMgQWRkIG9y IHJlbW92ZSBuZXdsaW5lIGFmdGVyIGVhY2ggJywnIGluIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24u DQo+ID4+ICtubF9mdW5jX2RlY2xfZW1wdHkgICAgICAgICAgICAgID0gYWRkICAgICAgICMgQWRk IG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJygpJyBpbiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9u Lg0KPiA+PiArbmxfZnVuY19kZWZfYXJncyAgICAgICAgICAgICAgICA9IGZvcmNlICAgICAjIEFk ZCBvciByZW1vdmUgbmV3bGluZSBhZnRlciBlYWNoICcsJyBpbiBhIGZ1bmN0aW9uIGRlZmluaXRp b24uDQo+ID4+ICtubF9mdW5jX2RlZl9lbXB0eSAgICAgICAgICAgICAgID0gYWRkICAgICAgICMg QWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJygpJyBpbiBhIGZ1bmN0aW9uIGRlZmluaXRp b24uDQo+ID4+ICtubF9mdW5jX2RlZl9wYXJlbiAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMg QWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gYSBmdW5jdGlvbiBuYW1lIGFuZCB0aGUgb3Bl bmluZyAnKCcNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBpbiB0aGUgZGVmaW5pdGlvbi4NCj4gPj4gK25sX2Z1bmNfcGFyZW4gICAgICAgICAgICAg ICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIG5ld2xpbmUgYmV0d2VlbiBhIGZ1bmN0 aW9uIG5hbWUgYW5kIHRoZSBvcGVuaW5nICcoJyBpbg0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBkZWNsYXJhdGlvbi4NCj4gPj4gK25sX2Z1 bmNfdHlwZV9uYW1lICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIG5l d2xpbmUgYmV0d2VlbiByZXR1cm4gdHlwZSBhbmQgZnVuY3Rpb24gbmFtZSBpbiBhDQo+IGZ1bmN0 aW9uDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg ZGVmaW5pdGlvbi4NCj4gPj4gK3NwX2ZwYXJlbl9icmFjZSAgICAgICAgICAgICAgICAgPSBmb3Jj ZSAgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJldHdlZW4gJyknIGFuZCAneycgb2YgZnVuY3Rp b24uDQo+ID4+ICt1c2VfaW5kZW50X2Z1bmNfY2FsbF9wYXJhbSAgICAgID0gdHJ1ZSAgICAgICMg aW5kZW50X2Z1bmNfY2FsbF9wYXJhbSB3aWxsIGJlIHVzZWQNCj4gPj4gKw0KPiA+PiArIyBBZGRp dGlvbmFsIE5ld2xpbmUgUnVsZXMNCj4gPj4gK25sX2FmdGVyX2JyYWNlX29wZW4gICAgICAgICAg ICAgICAgICAgICAgICAgID0gdHJ1ZSAgICAgIyBXaGV0aGVyIHRvIGFkZCBhIG5ld2xpbmUgYWZ0 ZXIgJ3snLiBUaGlzIGFsc28gYWRkcyBhIG5ld2xpbmUNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWZvcmUgdGhlIG1hdGNo aW5nICd9Jy4NCj4gPj4gK25sX2FmdGVyX2JyYWNlX29wZW5fY210ICAgICAgICAgICAgICAgICAg ICAgID0gdHJ1ZSAgICAgIyBXaGV0aGVyIHRvIGFkZCBhIG5ld2xpbmUgYmV0d2VlbiB0aGUgb3Bl biBicmFjZSBhbmQgYQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIHRyYWlsaW5nIHNpbmdsZS1saW5lIGNvbW1lbnQuDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgUmVxdWlyZXMgbmxfYWZ0ZXJfYnJhY2Vfb3BlbiA9IHRydWUuDQo+ID4+ICtubF9hZnRlcl9k byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGFkZCAgICAgICMgQWRkIG9yIHJl bW92ZSBibGFuayBsaW5lIGFmdGVyICdkby93aGlsZScgc3RhdGVtZW50Lg0KPiA+PiArbmxfYWZ0 ZXJfZm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhZGQgICAgICAjIEFkZCBv ciByZW1vdmUgYmxhbmsgbGluZSBhZnRlciAnZm9yJyBzdGF0ZW1lbnQuDQo+ID4+ICtubF9hZnRl cl9mdW5jX2JvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDIgICAgICAgICMgVGhlIG51 bWJlciBvZiBuZXdsaW5lcyBhZnRlciAnfScgb2YgYSBtdWx0aS1saW5lIGZ1bmN0aW9uDQo+IGJv ZHkNCj4gPj4gK25sX2FmdGVyX2Z1bmNfYm9keV9vbmVfbGluZXIgICAgICAgICAgICAgICAgID0g Mg0KPiA+PiArbmxfYWZ0ZXJfZnVuY19wcm90byAgICAgICAgICAgICAgICAgICAgICAgICAgPSAy DQo+ID4+ICtubF9hZnRlcl9mdW5jX3Byb3RvX2dyb3VwICAgICAgICAgICAgICAgICAgICA9IDIN Cj4gPj4gK25sX2FmdGVyX2lmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYWRk DQo+ID4+ICtubF9hZnRlcl9tdWx0aWxpbmVfY29tbWVudCAgICAgICAgICAgICAgICAgICA9IGZh bHNlDQo+ID4+ICtubF9hZnRlcl9yZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ID4+ICtubF9hZnRlcl9zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA9IDINCj4gPj4gK25sX2FmdGVyX3N3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID0gYWRkDQo+ID4+ICtubF9hZnRlcl92YnJhY2VfY2xvc2UgICAgICAgICAgICAgICAgICAgICAg ICA9IHRydWUNCj4gPj4gK25sX2FmdGVyX3ZicmFjZV9vcGVuICAgICAgICAgICAgICAgICAgICAg ICAgID0gdHJ1ZQ0KPiA+PiArbmxfYWZ0ZXJfdmJyYWNlX29wZW5fZW1wdHkgICAgICAgICAgICAg ICAgICAgPSB0cnVlDQo+ID4+ICtubF9hZnRlcl93aGlsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA9IGFkZA0KPiA+PiArbmxfYXNzaWduX2xlYXZlX29uZV9saW5lcnMgICAgICAgICAg ICAgICAgICAgPSB0cnVlDQo+ID4+ICtubF9iZWZvcmVfYmxvY2tfY29tbWVudCAgICAgICAgICAg ICAgICAgICAgICA9IDINCj4gPj4gK25sX2JlZm9yZV9jYXNlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0gZmFsc2UNCj4gPj4gK25sX2JlZm9yZV9kbyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID0gaWdub3JlDQo+ID4+ICtubF9iZWZvcmVfZm9yICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA9IGlnbm9yZQ0KPiA+PiArbmxfYmVmb3JlX2lmICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPSBpZ25vcmUNCj4gPj4gK25sX2JlZm9yZV9zd2l0Y2ggICAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gaWdub3JlDQo+ID4+ICtubF9iZWZvcmVfd2hpbGUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGlnbm9yZQ0KPiA+PiArbmxfYmVmb3JlX3do b2xlX2ZpbGVfaWZkZWYgICAgICAgICAgICAgICAgICAgPSAyDQo+ID4+ICtubF9icmFjZV9icmFj ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZvcmNlDQo+ID4+ICtubF9icmFjZV9z dHJ1Y3RfdmFyICAgICAgICAgICAgICAgICAgICAgICAgICA9IHJlbW92ZQ0KPiA+PiArbmxfY2Fz ZV9jb2xvbl9icmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhZGQNCj4gPj4gK25sX2Ns YXNzX2xlYXZlX29uZV9saW5lcnMgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4gK25s X2NvbGxhcHNlX2VtcHR5X2JvZHkgICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gPj4g K25sX2NvbW1lbnRfZnVuY19kZWYgICAgICAgICAgICAgICAgICAgICAgICAgID0gMQ0KPiA+PiAr bmxfY3JlYXRlX2Zvcl9vbmVfbGluZXIgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+ PiArbmxfY3JlYXRlX2lmX29uZV9saW5lciAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0K PiA+PiArbmxfY3JlYXRlX3doaWxlX29uZV9saW5lciAgICAgICAgICAgICAgICAgICAgPSBmYWxz ZQ0KPiA+PiArbmxfZGVmaW5lX21hY3JvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBm YWxzZQ0KPiA+PiArbmxfZHNfc3RydWN0X2VudW1fY2xvc2VfYnJhY2UgICAgICAgICAgICAgICAg PSB0cnVlDQo+ID4+ICtubF9kc19zdHJ1Y3RfZW51bV9jbXQgICAgICAgICAgICAgICAgICAgICAg ICA9IGZhbHNlDQo+ID4+ICtubF9lbnVtX2xlYXZlX29uZV9saW5lcnMgICAgICAgICAgICAgICAg ICAgICA9IGZhbHNlDQo+ID4+ICtubF9mdW5jX2RlY2xfZW5kICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA9IGFkZA0KPiA+PiArbmxfZnVuY19kZWNsX3N0YXJ0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgPSBhZGQNCj4gPj4gK25sX2Z1bmNfZGVmX2VuZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0gYWRkDQo+ID4+ICtubF9mdW5jX2RlZl9zdGFydCAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9IGFkZA0KPiA+PiArbmxfZnVuY19sZWF2ZV9vbmVfbGluZXJzICAgICAgICAg ICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArbmxfZnVuY19wcm90b190eXBlX25hbWUgICAgICAg ICAgICAgICAgICAgICAgPSBhZGQNCj4gPj4gK25sX2Z1bmNfdmFyX2RlZl9ibGsgICAgICAgICAg ICAgICAgICAgICAgICAgID0gMQ0KPiA+PiArbmxfZ2V0c2V0X2xlYXZlX29uZV9saW5lcnMgICAg ICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArbmxfaWZfbGVhdmVfb25lX2xpbmVycyAgICAg ICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArbmxfbXVsdGlfbGluZV9kZWZpbmUgICAg ICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArbmxfc3F1ZWV6ZV9pZmRlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiA+PiArbmxfdmFyX2RlZl9ibGtfZW5k ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwDQo+ID4+ICtubF92YXJfZGVmX2Jsa19zdGFy dCAgICAgICAgICAgICAgICAgICAgICAgICA9IDANCj4gPj4gKw0KPiA+PiArIyBQcmVwcm9jZXNz b3IgUnVsZXMNCj4gPj4gK3BwX2RlZmluZV9hdF9sZXZlbCAgICAgID0gdHJ1ZQ0KPiA+PiArcHBf aWZfaW5kZW50X2NvZGUgICAgICAgPSBmYWxzZQ0KPiA+PiArcHBfaW5kZW50X2Z1bmNfZGVmICAg ICAgPSBmYWxzZQ0KPiA+PiArcHBfaW5kZW50X2V4dGVybiAgICAgICAgPSBmYWxzZQ0KPiA+PiAr cHBfaWdub3JlX2RlZmluZV9ib2R5ICAgPSB0cnVlICAgICAgICAgICAgICAgICMgV29ya2Fyb3Vu ZDogVHVybiBvZmYgcHJvY2Vzc2luZyBmb3IgI2RlZmluZSBib2R5DQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoY3VycmVudCBydWxlcyBkbyBu b3Qgd29yayBmb3Igc29tZSBkZWZpbmVzKQ0KPiA+PiArcHBfaW5kZW50ICAgICAgICAgICAgICAg PSBhZGQNCj4gPj4gK3BwX2luZGVudF9hdF9sZXZlbCAgICAgID0gdHJ1ZQ0KPiA+PiArcHBfaW5k ZW50X2NvdW50ICAgICAgICAgPSAyDQo+ID4+ICtwcF9pbmRlbnRfaWYgICAgICAgICAgICA9IDIN Cj4gPj4gK3BwX2luZGVudF9yZWdpb24gICAgICAgID0gMg0KPiA+PiArcHBfcmVnaW9uX2luZGVu dF9jb2RlICAgPSBmYWxzZQ0KPiA+PiArcHBfc3BhY2UgICAgICAgICAgICAgICAgPSByZW1vdmUN Cj4gPj4gKw0KPiA+PiArIw0KPiA+PiArIyBUaGUgdG9rZW5zIGJlbG93IGFyZSBhc3NpZ25lZCBz cGVjaWZpYyB0eXBlcyBzbyB0aGV5IGFyZSBhbHdheXMgcmVjb2duaXplZCBwcm9wZXJseS4NCj4g Pj4gKyMNCj4gPj4gKw0KPiA+PiArIyBFeHBsaWNpdGx5IGRlZmluZSBFREsgSUkgcXVhbGlmaWVy cw0KPiA+PiArc2V0IFFVQUxJRklFUiBDT05TVA0KPiA+PiArc2V0IFFVQUxJRklFUiBFRklBUEkN Cj4gPj4gK3NldCBRVUFMSUZJRVIgSU4NCj4gPj4gK3NldCBRVUFMSUZJRVIgT1BUSU9OQUwNCj4g Pj4gK3NldCBRVUFMSUZJRVIgT1VUDQo+ID4+ICsNCj4gPj4gKyMgRXhwbGljaXRseSBkZWZpbmUg RURLIElJIHR5cGVzDQo+ID4+ICtzZXQgVFlQRSBFRklfU1RBVFVTDQo+ID4+ICtzZXQgVFlQRSBW T0lEDQo+ID4+IGRpZmYgLS1naXQgYS8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svdW5j cnVzdGlmeV9leHRfZGVwLnlhbWwNCj4gPj4gYi8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hl Y2svdW5jcnVzdGlmeV9leHRfZGVwLnlhbWwNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kOGMyMjQwM2I0YjENCj4gPj4gLS0tIC9kZXYvbnVsbA0K PiA+PiArKysgYi8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svdW5jcnVzdGlmeV9leHRf ZGVwLnlhbWwNCj4gPj4gQEAgLTAsMCArMSwxNiBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4gKyMg RG93bmxvYWRzIHRoZSBVbmNydXN0aWZ5IGFwcGxpY2F0aW9uIGZyb20gYSBQcm9qZWN0IE11IE51 R2V0IHBhY2thZ2UuDQo+ID4+ICsjDQo+ID4+ICsjIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENv cnBvcmF0aW9uLg0KPiA+PiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+PiArIyMNCj4gPj4gK3sNCj4gPj4gKyAgImlkIjogInVuY3J1c3RpZnktY2kt MSIsDQo+ID4+ICsgICJzY29wZSI6ICJjaWJ1aWxkIiwNCj4gPj4gKyAgInR5cGUiOiAibnVnZXQi LA0KPiA+PiArICAibmFtZSI6ICJtdS11bmNydXN0aWZ5LXJlbGVhc2UiLA0KPiA+PiArICAic291 cmNlIjogImh0dHBzOi8vcGtncy5kZXYuYXp1cmUuY29tL3Byb2plY3RtdS9VbmNydXN0aWZ5L19w YWNrYWdpbmcvbXVfdW5jcnVzdGlmeS9udWdldC92My9pbmRleC5qc29uIiwNCj4gPj4gKyAgInZl cnNpb24iOiAiNzMuMC4zIiwNCj4gPj4gKyAgImZsYWdzIjogWyJzZXRfc2hlbGxfdmFyIiwgImhv c3Rfc3BlY2lmaWMiXSwNCj4gPj4gKyAgInZhcl9uYW1lIjogIlVOQ1JVU1RJRllfQ0lfUEFUSCIN Cj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdCBhLy5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVj ay91bmNydXN0aWZ5X3BsdWdfaW4ueWFtbA0KPiA+PiBiLy5weXRvb2wvUGx1Z2luL1VuY3J1c3Rp ZnlDaGVjay91bmNydXN0aWZ5X3BsdWdfaW4ueWFtbA0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjA2Yzc2YWYwMjc1OQ0KPiA+PiAtLS0gL2Rldi9u dWxsDQo+ID4+ICsrKyBiLy5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay91bmNydXN0aWZ5 X3BsdWdfaW4ueWFtbA0KPiA+PiBAQCAtMCwwICsxLDExIEBADQo+ID4+ICsjIyBAZmlsZQ0KPiA+ PiArIyBDaUJ1aWxkUGx1Z2luIHVzZWQgdG8gY2hlY2sgY29kaW5nIHN0YW5kYXJkIGNvbXBsaWFu Y2Ugb2YgRURLIElJIHN0eWxlIEMgc291cmNlIGNvZGUNCj4gPj4gKyMNCj4gPj4gKyMgQ29weXJp Z2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uDQo+ID4+ICsjIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+ICsjIw0KPiA+PiArew0KPiA+PiArICAi c2NvcGUiOiAiY2lidWlsZCIsDQo+ID4+ICsgICJuYW1lIjogIlVuY3J1c3RpZnkgQ29kaW5nIFN0 YW5kYXJkIFRlc3QiLA0KPiA+PiArICAibW9kdWxlIjogIlVuY3J1c3RpZnlDaGVjayINCj4gPj4g K30NCj4gPj4gZGlmZiAtLWdpdCBhLy5weXRvb2wvUmVhZG1lLm1kIGIvLnB5dG9vbC9SZWFkbWUu bWQNCj4gPj4gaW5kZXggZjY1MDU1MDc5NjZhLi5lMGQwN2YzMTcwNDkgMTAwNjQ0DQo+ID4+IC0t LSBhLy5weXRvb2wvUmVhZG1lLm1kDQo+ID4+ICsrKyBiLy5weXRvb2wvUmVhZG1lLm1kDQo+ID4+ IEBAIC0yNjQsNiArMjY0LDEwIEBAIEJTRC0yLUNsYXVzZS1QYXRlbnQuDQo+ID4+ICAgUnVuIHRo ZSBFY2MgdG9vbCBvbiB0aGUgcGFja2FnZS4gVGhlIEVjYyB0b29sIGlzIGF2YWlsYWJsZSBpbiB0 aGUgQmFzZVRvb2xzDQo+ID4+ICAgcGFja2FnZS4gSXQgY2hlY2tzIHRoYXQgdGhlIGNvZGUgY29t cGxpZXMgdG8gdGhlIEVES0lJIGNvZGluZyBzdGFuZGFyZC4NCj4gPj4NCj4gPj4gKyMjIyBDb2Rp bmcgU3RhbmRhcmQgQ29tcGxpYW5jZSAtIFVuY3J1c3RpZnlDaGVjaw0KPiA+PiArDQo+ID4+ICtS dW5zIHRoZSBVbmNydXN0aWZ5IGFwcGxpY2F0aW9uIHRvIGNoZWNrIGZvciBjb2Rpbmcgc3RhbmRh cmQgY29tcGxpYW5jZSBpc3N1ZXMuDQo+ID4+ICsNCj4gPj4gICAjIyBQeVRvb2wgU2NvcGVzDQo+ ID4+DQo+ID4+ICAgU2NvcGVzIGFyZSBob3cgdGhlIFB5VG9vbCBleHRfZGVwLCBwYXRoX2Vudiwg YW5kIHBsdWdpbnMgYXJlIGFjdGl2YXRlZC4gIE1lYW5pbmcNCj4gPj4gLS0NCj4gPj4gMi4yOC4w LndpbmRvd3MuMQ0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiANCj4gDQo+IA0KPiAN Cg0K