From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 43B42C433EF for ; Fri, 31 Dec 2021 00:29:07 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.5755.1640910546247030130 for ; Thu, 30 Dec 2021 16:29:06 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=ZDjA+vCi; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: anuj.mittal@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1640910546; x=1672446546; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=YdejaUTNi4Utha30kxJ8FaZotXe3GDZ5ZDlvxrX8+Nw=; b=ZDjA+vCiWmdjlYQhbnyshT9BnIV0mZyeFYVN8AkoY091un66Xiifm6XC 7WjDaEPEuASbfPWEtLX2QXoFQAlp06afLDhhT0a0Ta3OMdo2xDgyVfpVF 6Dr5/EK2sYVFadKN0qRf/Poxewm9DjFAW6fbbUKlqxyqDJZ4bR4WynpyG VDlIx49X4f/bbAnzC8yOuIwewXAxZrcgJKvzfFqXg3uzW8/UPbSi1UPPW ExIv4Mf3UI/vcaadOfHCeX9VYnJMjXLmHv6rMBvqXAwLzQBTymJ65YCBk duxe4jRIAuAsufUKby4RsRKVaLsqg2Ovmy3nlVcABIWYuBr6GvAnpCwAh A==; X-IronPort-AV: E=McAfee;i="6200,9189,10213"; a="241958199" X-IronPort-AV: E=Sophos;i="5.88,248,1635231600"; d="scan'208";a="241958199" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Dec 2021 16:29:05 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,248,1635231600"; d="scan'208";a="525216843" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga007.fm.intel.com with ESMTP; 30 Dec 2021 16:29:04 -0800 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 30 Dec 2021 16:29:03 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Thu, 30 Dec 2021 16:29:03 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.173) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Thu, 30 Dec 2021 16:28:58 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IgaUBvrn1rynm1GN+D03kkeSa6o3AxGlx4/vT8aFrtLGiGaXexme3qMbQXCS6soDO87PnVrl60RZliASXNX8LlSAMrPWhgXR2htXNV2w5T1qyiyAq7bI7/Us/hGEzaDjtDbnXfptAbIHwC+0DudPM+9pKXi1O+pbqIFbKwAcTxmsd34Dm94fbKj4xdB4oFyMEwIIaYvcAMGhREPj80q4sSK/Td0Jyf8vTyYVPkzga7ROJEVo415BhRO0HBr6zx+1BBw36rzgurvanccIrt6zc6XwXDiVLgxTsomK4qvcQ66GsjvgJ1agTgsMF+hHTeoT0iiMB0JAc8FJskzfznw4Ag== 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=YdejaUTNi4Utha30kxJ8FaZotXe3GDZ5ZDlvxrX8+Nw=; b=Ga92PgUrBjv8ixdktycaNFCSd3avHcYXg92M1kRBXg22zU8ZL5HSZr9YeGfRxxnbdu4xyGG3A8o9BRljuMwv/OzNC5mnzxUciyqIhyi9b+nmzGo8HZNC0Ou1gI01YKydhs8CgPbp8LrIC7Nl5xEw3QRSPKSMJBAx9mJSmA8HB6HqZLqPEBLf0PlBKAKo6thW0QXdk0agdRSRkCMuSOVrZ74zUvzcgn4gf3vtwkHh5PfNdNOC2xh8RVo6mxs21b/VXlGDsKtFWcuX/DePdEIcw1xfiR6XutCF2UbqGPRN5VOJ4MOSvUnM2BF5Qub7cl2leRGExnHd9epUXc+QXxtNzw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SJ0PR11MB4896.namprd11.prod.outlook.com (2603:10b6:a03:2dd::20) by SJ0PR11MB4815.namprd11.prod.outlook.com (2603:10b6:a03:2dd::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Fri, 31 Dec 2021 00:28:52 +0000 Received: from SJ0PR11MB4896.namprd11.prod.outlook.com ([fe80::a8ab:1ed:c383:c477]) by SJ0PR11MB4896.namprd11.prod.outlook.com ([fe80::a8ab:1ed:c383:c477%6]) with mapi id 15.20.4823.024; Fri, 31 Dec 2021 00:28:52 +0000 From: "Mittal, Anuj" To: "openembedded-core@lists.openembedded.org" , "pgowda.cve@gmail.com" CC: "rwmacleod@gmail.com" , "umesh.kalappa0@gmail.com" Subject: Re: [hardknott][PATCH] gcc: Fix CVE-2021-42574 Thread-Topic: [hardknott][PATCH] gcc: Fix CVE-2021-42574 Thread-Index: AQHX/JR4/fDLNiJgfUqw/8rF6Ly2SqxLwZmA Date: Fri, 31 Dec 2021 00:28:51 +0000 Message-ID: <157279ea591a9196346145e75d2beaa256713828.camel@intel.com> References: <20211229091347.42742-1-pgowda.cve@gmail.com> In-Reply-To: <20211229091347.42742-1-pgowda.cve@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.42.2 (3.42.2-1.fc35) 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: 1826da7a-0cdd-42e1-f5b6-08d9cbf4857f x-ms-traffictypediagnostic: SJ0PR11MB4815:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:179; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /yoe5i+pnuK3Gp65KZBEIN14Z9uC/sBmicym8CpkFrIPsVz//SiJfVgZCT7WMLr1FsWshCXec1MfXbIQw1aBQgIdYBYqTI2ZmKOdSI4oQirGxy/6daC0heVe7hl5oV1qDyv60vJU3qWdXE1AGGk9B2HyHRdlQEI+yVPSYwP7whF3f853s3Nq/Cv4ROZFX1iQ8NVgVQyXj3EMklojLI7uPMQqsOxquRgohfCB5YGKYUvtxZSNxU1DyMwxdWO4vVJI02tiIgz4N9Qzm8AvGUfJcGxo1olQjnkWit+OQ71knd0chw1kRg30SQURz/4fSCq9Keog5IJoW5oJrIyl0bC4krAPeQHiFJnmWcz0OLq2YTbUmm76vMPjkqYhtbR67JKhY+jz4Xw0aUAXtni6LYtGo0FB/ucKCVHCESos3nzWmunHiid1+kDJHSMwUowus9BXIh7qickgbYkriALfwousB8Cal7IftDN/j0xXIEM5jrpe1ouoo815SdBRLTBaRyd/BPi+vTZxcO2cn0v5RpKMtiNLaHS1mRDEqzeO7xFXMcRcFTVVc/9ZGePR0RlQ4oV+O/LnmKqrefjQPDo2vlJfoMiqRzIK5OPHoYmXRXLr1O8nFloH5Rgsv3EzSQxNuaLXHtw5FIJ+WlmxoAYDRl4ZizkmX5SYqKHeSHrJoRcq42JZE3tw0ttvisslvR4M+A3PNiY9IZSXlW9KOP3ojOQOyGKBc6vKJS21FC7jvigxb0KEsNn19kAcIGO2UOVVcYor6f4Fg85LhsoGo9XHghNuVQB4Uc+5gbdaB9M3Ey/tc05Vxd9Njdn0uUdGB/3neRhLeP5XQ+HuiDCgPm6a9csImw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB4896.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(4326008)(83380400001)(6512007)(508600001)(316002)(36756003)(8936002)(86362001)(4001150100001)(2906002)(84970400001)(54906003)(71200400001)(6486002)(110136005)(30864003)(38100700002)(6506007)(38070700005)(122000001)(26005)(8676002)(82960400001)(2616005)(76116006)(66946007)(66476007)(5660300002)(66556008)(91956017)(66446008)(64756008)(186003)(66574015)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K0tJbFMwWEJDYVkwMUpKdndJT3JjeVBZM3R2ZXNwamtxZkZFZTRvNkMrNi9E?= =?utf-8?B?ZllhTXBWaU9ZMDdqd0tYcXlDa2NaMHUrZ2ZYbExyL3MrRzhNUHFGU2M4WlQ2?= =?utf-8?B?MDh3clNobVlHVmdQeHRtVlQ2bUkvK0hBd3h6WmVJN0ovMWN0YVRCQjVlMG9Z?= =?utf-8?B?L3ZwWG1XWXR5NytYcWw0N3VaNTMyeStCaHZsbU5qNG44WnlYU2xNSTdPM1E4?= =?utf-8?B?THBXRUlDN3NlVDVFMWViOWxncXZGNmxTSjV2NHg0T01XV1ZERS9GajFCQjZR?= =?utf-8?B?RnRTanYvSnd0MXBVcEhNeE5xbE1EdGx6Mnk3MVpDaUpZZDZvQnp6K1VTV0Qw?= =?utf-8?B?aURhY2t3R29PZ29zVTNnZ3hDa3cxWWlYQURZVXg0aUg4cS9UYUJ6OURBUzVI?= =?utf-8?B?QUJzeE9KK2tlNVN4T0dTRHIyQ3JEbkh3S2ZmdEpySFpCYzVnRmI1Z0JpaWxi?= =?utf-8?B?YnA5VEFueXdTVEN2cVg0U2JmeWNjUEd2T080SWgyTDFqTDlodFE2OVpvN0FI?= =?utf-8?B?SjlmMjNmSHR5SlF2c05zTU5OVVBkeFkvVG40blFBdlgvUExkcy9HWU11TmFS?= =?utf-8?B?dzkwKzhkNW9wVUEyM2RYbDlWVDdodjBtZzFwalJHTzNTSFBrTVNuU2xTaFQ2?= =?utf-8?B?RER0WDNmeGtNMXNqbGJvRHpZeWo2U241N1hyaTU4VFhySmY0QkFVVWcwamdR?= =?utf-8?B?VzRaTWZONGQ0VFBCNjVoeEtrNnZLWko1RFZmaS9pVGY1M3RVOVAxWG5UWEhM?= =?utf-8?B?WGZBZEo1V0Y2elR2b0ZFbTg3bHNVaEUwU0NNMXBCQlJkN2s3bTNTanJSN0t1?= =?utf-8?B?RTdzRERkWnM2czhWeFErdE9qR08rYUx2cVVxbi9VTFY4emFlVG1sM2orSGpR?= =?utf-8?B?SlRoOHVVRHZ5N2huZWhScUVrNWxRckZsUGFBVjJMZkZCNDhOVDRWemZPREdQ?= =?utf-8?B?WUQxZ0JEek5OREdzZHpCQjlYMHNpRUxYbXlBZGtjcUpsSEVDQnhJVFN3NGt1?= =?utf-8?B?VXMyTk5DREdwa1AydnBBQkNLUTBlZlpSeDJSdFhCS3lKYmZjR1JVVEZabHJF?= =?utf-8?B?ekgwVmE4QXdJZHkrSkpkNmNvTzVUV2F1UjB2NFBYb2hVcDhzTFpZYllBbkxT?= =?utf-8?B?cW8xTGIxY2JoeG4wb1BERWV2WWVGajVEaENXTUl0NGlUN3ZScEcxbXREMy9Y?= =?utf-8?B?Vm8xZlZKaHhHMHNNZGdhMi9va2NCL2tOUjNsRG4yT3grUjdwekp1c1lLRGFD?= =?utf-8?B?SVJmQ3o0U0FsU0tJUjltTFY4Q2EwakxERW9vQ1FpcEUzbjRwOXFjMXp1TnQw?= =?utf-8?B?U3o4WDhxMGRuTlRVcjIvamFLNDQ4TlpZRkxyL3JFNUkrRHlNT1FJUzJ2VnJM?= =?utf-8?B?SEtRRnkrOEdpMnhHY3FQcEdqTDlYZVBOWDk4ZTZjalhIRUJUYkJpRmU5OGYr?= =?utf-8?B?OG5FMW9qWXg2ME0yaGxXY0o2V200YlN2T1FFemVWMnRZUTFBYnlHKzlxRk40?= =?utf-8?B?MVRZRDZoeFFiUWh5bXlmUEVrSC9sZU1uMEFwMDYxMEUyaGpZU21zVWt0bmhJ?= =?utf-8?B?SzF5cVFsMk1sN1RsTnVVVEpsNTFjNENGK3o5RzVjQlNVdGl2SDFqZDZ2OG5r?= =?utf-8?B?eW9idnFzQTY5TkozYWl5akhXMHpQSUp1dnR1bkxOcy84SU9Nb3BWRzBjMWFt?= =?utf-8?B?blJPQW1aYjVoc1ovS3NwUjVSVXVQbDZhMVJxcE5rT1Z1YWpwMjB1MTRJVE53?= =?utf-8?B?YWNPeUM5ZXA4U1JmU0dlc0hZUVZIR2lJV212bE1RTTIydDVhQ2pCbjBiOHNX?= =?utf-8?B?UUZzRktyMFBVMHFySkZwRk1RaXJnVFF3WmgxdmxaMGxFMG9tU1IyUzZQYVlr?= =?utf-8?B?cVhDL2tmMENKbWpVaG53NTl3K0t3UWhCTEIySDUwdlhnV0R3VHRnUmpDbWhx?= =?utf-8?B?U3FMTzg3TU14Z2pZVUtmekhZQlp1MDFMVFJPQzF3WHN3QUd4ZHFTMUpVT3hh?= =?utf-8?B?bWJ1U0pydVp0U1ozYkppRUs3TlVVRWlLTU5FRzJqTEpLZkNBUkJUeTg3TVRH?= =?utf-8?B?aWJpaUJJQmRiRTlZVSs1QTQ4K09BbEV0SUU1MHIwUnFhT3U5RmtYTWswK0Fo?= =?utf-8?B?elhJZ3VwSlZLN3dpZEtqSWh3Z1VsbTZWZ0VJSm1lOXlYZzNzZzlwMXREaVI4?= =?utf-8?Q?B6I7OBUHKB8ol0eEXDdSMro=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <662A9DBDA69EC247887D88D64B42AF25@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4896.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1826da7a-0cdd-42e1-f5b6-08d9cbf4857f X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Dec 2021 00:28:51.9194 (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: Vdes8Ky3ubZS/4S1NJqy37Y51JakziE6bl3uX5VAENoiy0kQf6lnWwTB7s8JsGxPbWo0KvgKcAX+k1arCRjsVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB4815 X-OriginatorOrg: intel.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 31 Dec 2021 00:29:07 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/160080 SSBjYW4ndCBhcHBseSB0aGlzLiAKCmdpdCBhbSBzYXlzOgoKZXJyb3I6IGNhbm5vdCBjb252ZXJ0 IGZyb20gWSB0byBVVEYtOApmYXRhbDogY291bGQgbm90IHBhcnNlIHBhdGNoCgpUaGFua3MsCgpB bnVqCgpPbiBXZWQsIDIwMjEtMTItMjkgYXQgMDE6MTMgLTA4MDAsIHBnb3dkYSB3cm90ZToKPiBV cHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Cj4gW2h0dHBzOi8vZ2NjLmdudS5vcmcvZ2l0Lz9wPWdj Yy5naXQ7YT1jb21taXQ7aD0wMDRiYjkzNmQ2ZDVmMTc3YWYyNmFkCj4gNDkwNTU5NWU4NDNkNTY2 NWE1XQo+IFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKPiBbaHR0cHM6Ly9nY2MuZ251Lm9yZy9n aXQvP3A9Z2NjLmdpdDthPWNvbW1pdDtoPWJkNWU4ODJjZjZlMGRlZjNkZDFiYzEKPiAwNjA3NWQ1 OWEzMDNmZTBkMWVdCj4gVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAo+IFtodHRwczovL2djYy5n bnUub3JnL2dpdC8/cD1nY2MuZ2l0O2E9Y29tbWl0O2g9NTFjNTAwMjY5YmY1Mzc0OWIxMDc4MAo+ IDdkODQyNzEzODVmYWQzNTYyOF0KPiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Cj4gW2h0dHBz Oi8vZ2NjLmdudS5vcmcvZ2l0Lz9wPWdjYy5naXQ7YT1jb21taXQ7aD0xYTdmMmMwNzc0MTI5NzUw ZmRmNzNlCj4gOWYxYjc4ZjBjZTk4M2M5YWIzXQo+IFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQK PiBbaHR0cHM6Ly9nY2MuZ251Lm9yZy9naXQvP3A9Z2NjLmdpdDthPWNvbW1pdDtoPWJlZjMyZDRh Mjg1OTVlOTMzZjI0ZmUKPiBmMzc4Y2YwNTJhMzBiNjc0YTddCj4gCj4gU2lnbmVkLW9mZi1ieTog cGdvd2RhIDxwZ293ZGEuY3ZlQGdtYWlsLmNvbT4KPiAtLS0KPiDCoG1ldGEvcmVjaXBlcy1kZXZ0 b29scy9nY2MvZ2NjLTEwLjIuaW5jwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCA1ICsKPiDCoC4uLi9n Y2MvZ2NjLzAwMDEtQ1ZFLTIwMjEtNDI1NzQucGF0Y2jCoMKgwqDCoMKgwqDCoMKgIHwgMjkwNgo+ ICsrKysrKysrKysrKysrKysrCj4gwqAuLi4vZ2NjL2djYy8wMDAyLUNWRS0yMDIxLTQyNTc0LnBh dGNowqDCoMKgwqDCoMKgwqDCoCB8IDIyNzAgKysrKysrKysrKysrKwo+IMKgLi4uL2djYy9nY2Mv MDAwMy1DVkUtMjAyMS00MjU3NC5wYXRjaMKgwqDCoMKgwqDCoMKgwqAgfCAxNzI0ICsrKysrKysr KysKPiDCoC4uLi9nY2MvZ2NjLzAwMDQtQ1ZFLTIwMjEtNDI1NzQucGF0Y2jCoMKgwqDCoMKgwqDC oMKgIHzCoCAxMzggKwo+IMKgLi4uL2djYy9nY2MvMDAwNS1DVkUtMjAyMS00MjU3NC5wYXRjaMKg wqDCoMKgwqDCoMKgwqAgfMKgIDU3NSArKysrCj4gwqA2IGZpbGVzIGNoYW5nZWQsIDc2MTggaW5z ZXJ0aW9ucygrKQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IG1ldGEvcmVjaXBlcy1kZXZ0b29scy9n Y2MvZ2NjLzAwMDEtQ1ZFLTIwMjEtCj4gNDI1NzQucGF0Y2gKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0 NCBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy8wMDAyLUNWRS0yMDIxLQo+IDQyNTc0LnBh dGNoCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mv MDAwMy1DVkUtMjAyMS0KPiA0MjU3NC5wYXRjaAo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IG1ldGEv cmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLzAwMDQtQ1ZFLTIwMjEtCj4gNDI1NzQucGF0Y2gKPiDC oGNyZWF0ZSBtb2RlIDEwMDY0NCBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy8wMDA1LUNW RS0yMDIxLQo+IDQyNTc0LnBhdGNoCj4gCj4gZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1kZXZ0 b29scy9nY2MvZ2NjLTEwLjIuaW5jIGIvbWV0YS9yZWNpcGVzLQo+IGRldnRvb2xzL2djYy9nY2Mt MTAuMi5pbmMKPiBpbmRleCA1NjI2YmYyMGYwLi5mZDdmMTZkN2JmIDEwMDY0NAo+IC0tLSBhL21l dGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTEwLjIuaW5jCj4gKysrIGIvbWV0YS9yZWNpcGVz LWRldnRvb2xzL2djYy9nY2MtMTAuMi5pbmMKPiBAQCAtNzQsNiArNzQsMTEgQEAgU1JDX1VSSSA9 ICJcCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmaWxlOi8vMDAwMi1DVkUtMjAyMS0zNTQ2NS5w YXRjaMKgXAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmlsZTovLzAwMDMtQ1ZFLTIwMjEtMzU0 NjUucGF0Y2jCoFwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6Ly8wMDA0LUNWRS0yMDIx LTM1NDY1LnBhdGNowqBcCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6Ly8wMDAxLUNWRS0y MDIxLTQyNTc0LnBhdGNowqBcCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6Ly8wMDAyLUNW RS0yMDIxLTQyNTc0LnBhdGNowqBcCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6Ly8wMDAz LUNWRS0yMDIxLTQyNTc0LnBhdGNowqBcCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6Ly8w MDA0LUNWRS0yMDIxLTQyNTc0LnBhdGNowqBcCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGU6 Ly8wMDA1LUNWRS0yMDIxLTQyNTc0LnBhdGNowqBcCj4gwqAiCj4gwqBTUkNfVVJJW3NoYTI1NnN1 bV0gPQo+ICJiOGRkNDM2OGJiOWM3ZjBiOTgxODgzMTdlZTAyNTRkZDhjYzk5ZDFlM2ExOGQwZmYx NDZjODU1ZmUxNmMxZDhjIgo+IMKgCj4gZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1kZXZ0b29s cy9nY2MvZ2NjLzAwMDEtQ1ZFLTIwMjEtNDI1NzQucGF0Y2gKPiBiL21ldGEvcmVjaXBlcy1kZXZ0 b29scy9nY2MvZ2NjLzAwMDEtQ1ZFLTIwMjEtNDI1NzQucGF0Y2gKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLmUwZjRmN2QzMmYKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MvMDAwMS1DVkUtMjAyMS00MjU3NC5wYXRj aAo+IEBAIC0wLDAgKzEsMjkwNiBAQAo+ICtGcm9tIDAwNGJiOTM2ZDZkNWYxNzdhZjI2YWQ0OTA1 NTk1ZTg0M2Q1NjY1YTUgTW9uIFNlcCAxNyAwMDowMDowMAo+IDIwMDEKPiArRnJvbTogTGV3aXMg SHlhdHQgPGxoeWF0dEBnbWFpbC5jb20+Cj4gK0RhdGU6IFR1ZSwgMTQgSnVsIDIwMjAgMTI6MDU6 NTYgLTA0MDAKPiArU3ViamVjdDogW1BBVENIXSBkaWFnbm9zdGljczogU3VwcG9ydCBjb252ZXJz aW9uIG9mIHRhYnMgdG8gc3BhY2VzCj4gW1BSNDk5NzNdCj4gKyBbUFI4NjkwNF0KPiArCj4gK1N1 cHBvcnRzIGNvbnZlcnNpb24gb2YgdGFicyB0byBzcGFjZXMgd2hlbiBvdXRwdXR0aW5nIGRpYWdu b3N0aWNzLgo+IEFsc28KPiArYWRkcyAtZmRpYWdub3N0aWNzLWNvbHVtbi11bml0IGFuZCAtZmRp YWdub3N0aWNzLWNvbHVtbi1vcmlnaW4KPiBvcHRpb25zIHRvCj4gK2NvbnRyb2wgaG93IHRoZSBj b2x1bW4gbnVtYmVyIGlzIG91dHB1dCwgdGhlcmVieSByZXNvbHZpbmcgdGhlIHR3bwo+IFBScy4K PiArCj4gK2djYy9jLWZhbWlseS9DaGFuZ2VMb2c6Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoFBSIG90 aGVyLzg2OTA0Cj4gK8KgwqDCoMKgwqDCoMKgKiBjLWluZGVudGF0aW9uLmMgKHNob3VsZF93YXJu X2Zvcl9taXNsZWFkaW5nX2luZGVudGF0aW9uKToKPiBHZXQKPiArwqDCoMKgwqDCoMKgwqBnbG9i YWwgdGFic3RvcCBmcm9tIHRoZSBuZXcgc291cmNlLgo+ICvCoMKgwqDCoMKgwqDCoCogYy1vcHRz LmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBSZW1vdmUgaGFuZGxpbmcgb2YgLQo+IGZ0YWJz dG9wLCB3aGljaAo+ICvCoMKgwqDCoMKgwqDCoGlzIG5vdyBhIGNvbW1vbiBvcHRpb24uCj4gK8Kg wqDCoMKgwqDCoMKgKiBjLm9wdDogTGlrZXdpc2UuCj4gKwo+ICtnY2MvQ2hhbmdlTG9nOgo+ICsK PiArwqDCoMKgwqDCoMKgwqBQUiBwcmVwcm9jZXNzb3IvNDk5NzMKPiArwqDCoMKgwqDCoMKgwqBQ UiBvdGhlci84NjkwNAo+ICvCoMKgwqDCoMKgwqDCoCogY29tbW9uLm9wdDogSGFuZGxlIC1mdGFi c3RvcCBoZXJlIGluc3RlYWQgb2YgaW4gYy1mYW1pbHkKPiArwqDCoMKgwqDCoMKgwqBvcHRpb25z LsKgIEFkZCAtZmRpYWdub3N0aWNzLWNvbHVtbi11bml0PSBhbmQKPiArwqDCoMKgwqDCoMKgwqAt ZmRpYWdub3N0aWNzLWNvbHVtbi1vcmlnaW49IG9wdGlvbnMuCj4gK8KgwqDCoMKgwqDCoMKgKiBv cHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIHRoZSBuZXcgb3B0aW9ucy4KPiAr wqDCoMKgwqDCoMKgwqAqIGRpYWdub3N0aWMtZm9ybWF0LWpzb24uY2MgKGpzb25fZnJvbV9leHBh bmRlZF9sb2NhdGlvbik6Cj4gQWRkCj4gK8KgwqDCoMKgwqDCoMKgZGlhZ25vc3RpY19jb250ZXh0 IGFyZ3VtZW50LsKgIFVzZSBpdCB0byBjb252ZXJ0IGNvbHVtbgo+IG51bWJlcnMgYXMgcGVyCj4g K8KgwqDCoMKgwqDCoMKgdGhlIG5ldyBvcHRpb25zLgo+ICvCoMKgwqDCoMKgwqDCoChqc29uX2Zy b21fbG9jYXRpb25fcmFuZ2UpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAoanNvbl9mcm9t X2ZpeGl0X2hpbnQpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAoanNvbl9lbmRfZGlhZ25v c3RpYyk6IFBhc3MgdGhlIG5ldyBjb250ZXh0IGFyZ3VtZW50IHRvCj4gaGVscGVyCj4gK8KgwqDC oMKgwqDCoMKgZnVuY3Rpb25zIGFib3ZlLsKgIEFkZCAiY29sdW1uLW9yaWdpbiIgZmllbGQgdG8g dGhlIG91dHB1dC4KPiArwqDCoMKgwqDCoMKgwqAodGVzdF91bmtub3duX2xvY2F0aW9uKTogQWRk IHRoZSBuZXcgY29udGV4dCBhcmd1bWVudCB0bwo+IGNhbGxzIHRvCj4gK8KgwqDCoMKgwqDCoMKg aGVscGVyIGZ1bmN0aW9ucy4KPiArwqDCoMKgwqDCoMKgwqAodGVzdF9iYWRfZW5kcG9pbnRzKTog TGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKiBkaWFnbm9zdGljLXNob3ctbG9jdXMuYwo+ICvC oMKgwqDCoMKgwqDCoChleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbDo6ZXhwbG9jX3dpdGhfZGlzcGxh eV9jb2wpOiBTdXBwb3J0Cj4gK8KgwqDCoMKgwqDCoMKgdGFic3RvcCBwYXJhbWV0ZXIuCj4gK8Kg wqDCoMKgwqDCoMKgKGxheW91dF9wb2ludDo6bGF5b3V0X3BvaW50KTogTWFrZSB1c2Ugb2YgY2xh c3MKPiArwqDCoMKgwqDCoMKgwqBleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbC4KPiArwqDCoMKgwqDC oMKgwqAobGF5b3V0X3JhbmdlOjpsYXlvdXRfcmFuZ2UpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDC oMKgwqAoc3RydWN0IGxpbmVfYm91bmRzKTogQ2xhcmlmeSB0aGF0IHRoZSB1bml0cyBhcmUgbm93 IGFsd2F5cwo+ICvCoMKgwqDCoMKgwqDCoGRpc3BsYXkgY29sdW1ucy7CoCBSZW5hbWUgbWVtYmVy cyBhY2NvcmRpbmdseS7CoCBBZGQKPiBjb25zdHJ1Y3Rvci4KPiArwqDCoMKgwqDCoMKgwqAobGF5 b3V0OjpwcmludF9zb3VyY2VfbGluZSk6IEFkZCBzdXBwb3J0IGZvciB0YWIgZXhwYW5zaW9uLgo+ ICvCoMKgwqDCoMKgwqDCoChtYWtlX3JhbmdlKTogQWRhcHQgdG8gY2xhc3MgbGF5b3V0X3Jhbmdl IGNoYW5nZXMuCj4gK8KgwqDCoMKgwqDCoMKgKGxheW91dDo6bWF5YmVfYWRkX2xvY2F0aW9uX3Jh bmdlKTogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKGxheW91dDo6bGF5b3V0KTogQWRhcHQg dG8gY2xhc3MgZXhwbG9jX3dpdGhfZGlzcGxheV9jb2wKPiBjaGFuZ2VzLgo+ICvCoMKgwqDCoMKg wqDCoChsYXlvdXQ6OmNhbGN1bGF0ZV94X29mZnNldF9kaXNwbGF5KTogU3VwcG9ydCB0YWJzdG9w Cj4gcGFyYW1ldGVyLgo+ICvCoMKgwqDCoMKgwqDCoChsYXlvdXQ6OnByaW50X2Fubm90YXRpb25f bGluZSk6IEFkYXB0IHRvIHN0cnVjdCBsaW5lX2JvdW5kcwo+IGNoYW5nZXMuCj4gK8KgwqDCoMKg wqDCoMKgKGxheW91dDo6cHJpbnRfbGluZSk6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoChs aW5lX2xhYmVsOjpsaW5lX2xhYmVsKTogQWRkIGRpYWdub3N0aWNfY29udGV4dCBhcmd1bWVudC4K PiArwqDCoMKgwqDCoMKgwqAoZ2V0X2FmZmVjdGVkX3JhbmdlKTogTGlrZXdpc2UuCj4gK8KgwqDC oMKgwqDCoMKgKGdldF9wcmludGVkX2NvbHVtbnMpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKg wqAobGF5b3V0OjpwcmludF9hbnlfbGFiZWxzKTogQWRhcHQgdG8gc3RydWN0IGxpbmVfbGFiZWwK PiBjaGFuZ2VzLgo+ICvCoMKgwqDCoMKgwqDCoChjbGFzcyBjb3JyZWN0aW9uKTogQWRkIG1fdGFi c3RvcCBtZW1iZXIuCj4gK8KgwqDCoMKgwqDCoMKgKGNvcnJlY3Rpb246OmNvcnJlY3Rpb24pOiBB ZGQgdGFic3RvcCBhcmd1bWVudC4KPiArwqDCoMKgwqDCoMKgwqAoY29ycmVjdGlvbjo6Y29tcHV0 ZV9kaXNwbGF5X2NvbHMpOiBVc2UgbV90YWJzdG9wLgo+ICvCoMKgwqDCoMKgwqDCoChjbGFzcyBs aW5lX2NvcnJlY3Rpb25zKTogQWRkIG1fY29udGV4dCBtZW1iZXIuCj4gK8KgwqDCoMKgwqDCoMKg KGxpbmVfY29ycmVjdGlvbnM6OmxpbmVfY29ycmVjdGlvbnMpOiBBZGQgZGlhZ25vc3RpY19jb250 ZXh0Cj4gYXJndW1lbnQuCj4gK8KgwqDCoMKgwqDCoMKgKGxpbmVfY29ycmVjdGlvbnM6OmFkZF9o aW50KTogVXNlIG1fY29udGV4dCB0byBoYW5kbGUKPiB0YWJzdG9wcy4KPiArwqDCoMKgwqDCoMKg wqAobGF5b3V0OjpwcmludF90cmFpbGluZ19maXhpdHMpOiBBZGFwdCB0byBjbGFzcwo+IGxpbmVf Y29ycmVjdGlvbnMKPiArwqDCoMKgwqDCoMKgwqBjaGFuZ2VzLgo+ICvCoMKgwqDCoMKgwqDCoCh0 ZXN0X2xheW91dF94X29mZnNldF9kaXNwbGF5X3V0ZjgpOiBTdXBwb3J0IHRhYnN0b3AKPiBwYXJh bWV0ZXIuCj4gK8KgwqDCoMKgwqDCoMKgKHRlc3RfbGF5b3V0X3hfb2Zmc2V0X2Rpc3BsYXlfdGFi KTogTmV3IHNlbGZ0ZXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCh0ZXN0X29uZV9saW5lcl9jb2xvcml6 ZWRfdXRmOCk6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoCh0ZXN0X3RhYl9leHBhbnNpb24p OiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAodGVzdF9kaWFnbm9zdGljX3Nob3dfbG9jdXNf b25lX2xpbmVyX3V0ZjgpOiBDYWxsIHRoZSBuZXcKPiB0ZXN0cy4KPiArwqDCoMKgwqDCoMKgwqAo ZGlhZ25vc3RpY19zaG93X2xvY3VzX2NfdGVzdHMpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKg wqAodGVzdF9vdmVybGFwcGVkX2ZpeGl0X3ByaW50aW5nKTogQWRhcHQgdG8gaGVscGVyIGNsYXNz IGFuZAo+ICvCoMKgwqDCoMKgwqDCoGZ1bmN0aW9uIGNoYW5nZXMuCj4gK8KgwqDCoMKgwqDCoMKg KHRlc3Rfb3ZlcmxhcHBlZF9maXhpdF9wcmludGluZ191dGY4KTogTGlrZXdpc2UuCj4gK8KgwqDC oMKgwqDCoMKgKHRlc3Rfb3ZlcmxhcHBlZF9maXhpdF9wcmludGluZ18yKTogTGlrZXdpc2UuCj4g K8KgwqDCoMKgwqDCoMKgKiBkaWFnbm9zdGljLmggKGVudW0gZGlhZ25vc3RpY3NfY29sdW1uX3Vu aXQpOiBOZXcgZW51bS4KPiArwqDCoMKgwqDCoMKgwqAoc3RydWN0IGRpYWdub3N0aWNfY29udGV4 dCk6IEFkZCBtZW1iZXJzIGZvciB0aGUgbmV3IG9wdGlvbnMuCj4gK8KgwqDCoMKgwqDCoMKgKGRp YWdub3N0aWNfY29udmVydGVkX2NvbHVtbik6IERlY2xhcmUuCj4gK8KgwqDCoMKgwqDCoMKgKGpz b25fZnJvbV9leHBhbmRlZF9sb2NhdGlvbik6IEFkZCBuZXcgY29udGV4dCBhcmd1bWVudC4KPiAr wqDCoMKgwqDCoMKgwqAqIGRpYWdub3N0aWMuYyAoZGlhZ25vc3RpY19pbml0aWFsaXplKTogSW5p dGlhbGl6ZSBuZXcKPiBtZW1iZXJzLgo+ICvCoMKgwqDCoMKgwqDCoChkaWFnbm9zdGljX2NvbnZl cnRlZF9jb2x1bW4pOiBOZXcgZnVuY3Rpb24uCj4gK8KgwqDCoMKgwqDCoMKgKG1heWJlX2xpbmVf YW5kX2NvbHVtbik6IEJlIHdpbGxpbmcgdG8gb3V0cHV0IGEgY29sdW1uIG9mIDAuCj4gK8KgwqDC oMKgwqDCoMKgKGRpYWdub3N0aWNfZ2V0X2xvY2F0aW9uX3RleHQpOiBDb252ZXJ0IGNvbHVtbiBu dW1iZXIgYXMgcGVyCj4gdGhlIG5ldwo+ICvCoMKgwqDCoMKgwqDCoG9wdGlvbnMuCj4gK8KgwqDC oMKgwqDCoMKgKGRpYWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfbW9kdWxlKTogTGlrZXdpc2UuCj4g K8KgwqDCoMKgwqDCoMKgKGFzc2VydF9sb2NhdGlvbl90ZXh0KTogQWRkIG9yaWdpbiBhbmQgY29s dW1uX3VuaXQgYXJndW1lbnRzCj4gZm9yCj4gK8KgwqDCoMKgwqDCoMKgdGVzdGluZyB0aGUgbmV3 IGZ1bmN0aW9uYWxpdHkuCj4gK8KgwqDCoMKgwqDCoMKgKHRlc3RfZGlhZ25vc3RpY19nZXRfbG9j YXRpb25fdGV4dCk6IFRlc3QgdGhlIG5ldwo+IGZ1bmN0aW9uYWxpdHkuCj4gK8KgwqDCoMKgwqDC oMKgKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IHRoZSBuZXcgb3B0aW9ucyBhbmQgYmVoYXZp b3IuCj4gK8KgwqDCoMKgwqDCoMKgKiBpbnB1dC5oIChsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlf Y29sdW1uKTogQWRkIHRhYnN0b3AKPiBhcmd1bWVudC4KPiArwqDCoMKgwqDCoMKgwqAqIGlucHV0 LmMgKGxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1bW4pOiBMaWtld2lzZS4KPiArwqDCoMKg wqDCoMKgwqAodGVzdF9jcHBfdXRmOCk6IEFkZCBzZWxmdGVzdHMgZm9yIHRhYiBleHBhbnNpb24u Cj4gK8KgwqDCoMKgwqDCoMKgKiB0cmVlLWRpYWdub3N0aWMtcGF0aC5jYyAoZGVmYXVsdF90cmVl X21ha2VfanNvbl9mb3JfcGF0aCk6Cj4gUGFzcyB0aGUKPiArwqDCoMKgwqDCoMKgwqBuZXcgY29u dGV4dCBhcmd1bWVudCB0byBqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24oKS4KPiArCj4gK2xp YmNwcC9DaGFuZ2VMb2c6Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoFBSIHByZXByb2Nlc3Nvci80OTk3 Mwo+ICvCoMKgwqDCoMKgwqDCoFBSIG90aGVyLzg2OTA0Cj4gK8KgwqDCoMKgwqDCoMKgKiBpbmNs dWRlL2NwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOsKgIFJlbW92ZWQgc3VwcG9ydCBmb3IK PiAtZnRhYnN0b3AsCj4gK8KgwqDCoMKgwqDCoMKgd2hpY2ggaXMgbm93IGhhbmRsZWQgYnkgZGlh Z25vc3RpY19jb250ZXh0Lgo+ICvCoMKgwqDCoMKgwqDCoChjbGFzcyBjcHBfZGlzcGxheV93aWR0 aF9jb21wdXRhdGlvbik6IE5ldyBjbGFzcy4KPiArwqDCoMKgwqDCoMKgwqAoY3BwX2J5dGVfY29s dW1uX3RvX2Rpc3BsYXlfY29sdW1uKTogQWRkIG9wdGlvbmFsIHRhYnN0b3AKPiBhcmd1bWVudC4K PiArwqDCoMKgwqDCoMKgwqAoY3BwX2Rpc3BsYXlfd2lkdGgpOiBMaWtld2lzZS4KPiArwqDCoMKg wqDCoMKgwqAoY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uKTogTGlrZXdpc2UuCj4g K8KgwqDCoMKgwqDCoMKgKiBjaGFyc2V0LmMKPiArwqDCoMKgwqDCoMKgwqAoY3BwX2Rpc3BsYXlf d2lkdGhfY29tcHV0YXRpb246OmNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uCj4gKTogTmV3 Cj4gK8KgwqDCoMKgwqDCoMKgZnVuY3Rpb24uCj4gK8KgwqDCoMKgwqDCoMKgKGNwcF9kaXNwbGF5 X3dpZHRoX2NvbXB1dGF0aW9uOjphZHZhbmNlX2Rpc3BsYXlfY29scyk6Cj4gTGlrZXdpc2UuCj4g K8KgwqDCoMKgwqDCoMKgKGNvbXB1dGVfbmV4dF9kaXNwbGF5X3dpZHRoKTogUmVtb3ZlZCBhbmQg aW1wbGVtZW50ZWQgdGhpcwo+ICvCoMKgwqDCoMKgwqDCoGZ1bmN0aW9uYWxpdHkgaW4gYSBuZXcg ZnVuY3Rpb24uLi4KPiArwqDCoMKgwqDCoMKgwqAoY3BwX2Rpc3BsYXlfd2lkdGhfY29tcHV0YXRp b246OnByb2Nlc3NfbmV4dF9jb2RlcG9pbnQpOgo+IC4uLmhlcmUuCj4gK8KgwqDCoMKgwqDCoMKg KGNwcF9ieXRlX2NvbHVtbl90b19kaXNwbGF5X2NvbHVtbik6IEFkZGVkIHRhYnN0b3AgYXJndW1l bnQuCj4gK8KgwqDCoMKgwqDCoMKgUmVpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBjbGFzcwo+IGNw cF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uLgo+ICvCoMKgwqDCoMKgwqDCoChjcHBfZGlzcGxh eV9jb2x1bW5fdG9fYnl0ZV9jb2x1bW4pOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAqIGlu aXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBSZW1vdmUgaGFuZGxpbmcgb2YgLWZ0YWJzdG9wLAo+ IHdoaWNoIGlzIG5vdwo+ICvCoMKgwqDCoMKgwqDCoGhhbmRsZWQgYnkgZGlhZ25vc3RpY19jb250 ZXh0Lgo+ICsKPiArZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oFBSIHByZXByb2Nlc3Nvci80OTk3Mwo+ICvCoMKgwqDCoMKgwqDCoFBSIG90aGVyLzg2OTA0Cj4g K8KgwqDCoMKgwqDCoMKgKiBjLWMrKy1jb21tb24vV21pc2xlYWRpbmctaW5kZW50YXRpb24tMy5j OiBBZGp1c3QgZXhwZWN0ZWQKPiBvdXRwdXQKPiArwqDCoMKgwqDCoMKgwqBmb3IgbmV3IGRlZmF1 bHRzLgo+ICvCoMKgwqDCoMKgwqDCoCogYy1jKystY29tbW9uL1dtaXNsZWFkaW5nLWluZGVudGF0 aW9uLmM6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoCogYy1jKystY29tbW9uL2RpYWdub3N0 aWMtZm9ybWF0LWpzb24tMS5jOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNv bW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTIuYzogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDC oMKgKiBjLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0zLmM6IExpa2V3aXNlLgo+ ICvCoMKgwqDCoMKgwqDCoCogYy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tNC5j OiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZv cm1hdC1qc29uLTUuYzogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKiBjLWMrKy1jb21tb24v bWlzc2luZy1jbG9zZS1zeW1ib2wuYzogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKiBnKysu ZGcvZGlhZ25vc3RpYy9iYWQtYmluYXJ5LW9wcy5DOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKg wqAqIGcrKy5kZy9wYXJzZS9lcnJvcjQuQzogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKiBn Kysub2xkLWRlamEvZysrLmJyZW5kYW4vY3Jhc2gxMS5DOiBMaWtld2lzZS4KPiArwqDCoMKgwqDC oMKgwqAqIGcrKy5vbGQtZGVqYS9nKysucHQvb3ZlcmxvYWQyLkM6IExpa2V3aXNlLgo+ICvCoMKg wqDCoMKgwqDCoCogZysrLm9sZC1kZWphL2crKy5yb2JlcnRsL2ViMTA5LkM6IExpa2V3aXNlLgo+ ICvCoMKgwqDCoMKgwqDCoCogZ2NjLmRnL2FuYWx5emVyL21hbGxvYy1wYXRocy05LmM6IExpa2V3 aXNlLgo+ICvCoMKgwqDCoMKgwqDCoCogZ2NjLmRnL2JhZC1iaW5hcnktb3BzLmM6IExpa2V3aXNl Lgo+ICvCoMKgwqDCoMKgwqDCoCogZ2NjLmRnL2Zvcm1hdC9icmFuY2gtMS5jOiBMaWtld2lzZS4K PiArwqDCoMKgwqDCoMKgwqAqIGdjYy5kZy9mb3JtYXQvcHI3OTIxMC5jOiBMaWtld2lzZS4KPiAr wqDCoMKgwqDCoMKgwqAqIGdjYy5kZy9wbHVnaW4vZGlhZ25vc3RpYy10ZXN0LWV4cHJlc3Npb25z LTEuYzogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKiBnY2MuZGcvcGx1Z2luL2RpYWdub3N0 aWMtdGVzdC1zdHJpbmctbGl0ZXJhbHMtMS5jOgo+IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDC oCogZ2NjLmRnL3JlZGVjbC00LmM6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoCogZ2ZvcnRy YW4uZGcvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0xLkY5MDogTGlrZXdpc2UuCj4gK8KgwqDCoMKg wqDCoMKgKiBnZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTIuRjkwOiBMaWtld2lz ZS4KPiArwqDCoMKgwqDCoMKgwqAqIGdmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24t My5GOTA6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoCogZ28uZGcvYXJyYXljbGVhci5nbzog QWRkIGEgY29tbWVudCBleHBsYWluaW5nIHdoeSBhZGRpbmcgYQo+ICvCoMKgwqDCoMKgwqDCoGNv bW1lbnQgd2FzIG5lY2Vzc2FyeSB0byB3b3JrIGFyb3VuZCBhIGRlamFnbnUgYnVnLgo+ICvCoMKg wqDCoMKgwqDCoCogYy1jKystY29tbW9uL2RpYWdub3N0aWMtdW5pdHMtMS5jOiBOZXcgdGVzdC4K PiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTIuYzogTmV3 IHRlc3QuCj4gK8KgwqDCoMKgwqDCoMKgKiBjLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy0z LmM6IE5ldyB0ZXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCogYy1jKystY29tbW9uL2RpYWdub3N0aWMt dW5pdHMtNC5jOiBOZXcgdGVzdC4KPiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNvbW1vbi9kaWFn bm9zdGljLXVuaXRzLTUuYzogTmV3IHRlc3QuCj4gK8KgwqDCoMKgwqDCoMKgKiBjLWMrKy1jb21t b24vZGlhZ25vc3RpYy11bml0cy02LmM6IE5ldyB0ZXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCogYy1j KystY29tbW9uL2RpYWdub3N0aWMtdW5pdHMtNy5jOiBOZXcgdGVzdC4KPiArwqDCoMKgwqDCoMKg wqAqIGMtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTguYzogTmV3IHRlc3QuCj4gKwo+ICtD VkU6IENWRS0yMDIxLTQyNTc0Cj4gK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKPiBbaHR0cHM6 Ly9nY2MuZ251Lm9yZy9naXQvP3A9Z2NjLmdpdDthPWNvbW1pdDtoPTAwNGJiOTM2ZDZkNWYxNzdh ZjI2YWQKPiA0OTA1NTk1ZTg0M2Q1NjY1YTVdCj4gK1NpZ25lZC1vZmYtYnk6IFBnb3dkYSA8cGdv d2RhLmN2ZUBnbWFpbC5jb20+Cj4gKy0tLQo+ICsgZ2NjL2MtZmFtaWx5L2MtaW5kZW50YXRpb24u Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNSArLQo+ICsgZ2NjL2Mt ZmFtaWx5L2Mtb3B0cy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgIDYgLQo+ICsgZ2NjL2MtZmFtaWx5L2Mub3B0wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDQgLQo+ICsgZ2NjL2Nv bW1vbi5vcHTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqAgMjEgKwo+ICsgZ2NjL2RpYWdub3N0aWMtZm9ybWF0LWpzb24uY2PC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNTUgKy0KPiArIGdjYy9kaWFnbm9z dGljLXNob3ctbG9jdXMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDUw NCArKysrKysrKysrKysrLS0KPiAtLS0KPiArIGdjYy9kaWFnbm9zdGljLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTEzICsrKy0K PiArIGdjYy9kaWFnbm9zdGljLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyOCArLQo+ICsgZ2NjL2RvYy9pbnZva2UudGV4acKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDY4 ICsrLQo+ICsgZ2NjL2lucHV0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNzIgKystCj4gKyBnY2MvaW5wdXQu aMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgIDQgKy0KPiArIGdjYy9vcHRzLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAx NCArCj4gKyAuLi4vYy1jKystY29tbW9uL1dtaXNsZWFkaW5nLWluZGVudGF0aW9uLTMuY8KgIHzC oCAxMiArLQo+ICsgLi4uL2MtYysrLWNvbW1vbi9XbWlzbGVhZGluZy1pbmRlbnRhdGlvbi5jwqDC oMKgIHzCoMKgIDYgKy0KPiArIC4uLi9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNv bi0xLmPCoMKgIHzCoMKgIDUgKwo+ICsgLi4uL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1h dC1qc29uLTIuY8KgwqAgfMKgwqAgNSArCj4gKyAuLi4vYy1jKystY29tbW9uL2RpYWdub3N0aWMt Zm9ybWF0LWpzb24tMy5jwqDCoCB8wqDCoCA1ICsKPiArIC4uLi9jLWMrKy1jb21tb24vZGlhZ25v c3RpYy1mb3JtYXQtanNvbi00LmPCoMKgIHzCoMKgIDkgKwo+ICsgLi4uL2MtYysrLWNvbW1vbi9k aWFnbm9zdGljLWZvcm1hdC1qc29uLTUuY8KgwqAgfMKgwqAgOSArCj4gKyAuLi4vYy1jKystY29t bW9uL2RpYWdub3N0aWMtdW5pdHMtMS5jwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjggKwo+ICsgLi4u L2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTIuY8KgwqDCoMKgwqDCoMKgwqAgfMKgIDI4 ICsKPiArIC4uLi9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy0zLmPCoMKgwqDCoMKgwqDC oMKgIHzCoCAyOCArCj4gKyAuLi4vYy1jKystY29tbW9uL2RpYWdub3N0aWMtdW5pdHMtNC5jwqDC oMKgwqDCoMKgwqDCoCB8wqAgMjggKwo+ICsgLi4uL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVu aXRzLTUuY8KgwqDCoMKgwqDCoMKgwqAgfMKgIDI4ICsKPiArIC4uLi9jLWMrKy1jb21tb24vZGlh Z25vc3RpYy11bml0cy02LmPCoMKgwqDCoMKgwqDCoMKgIHzCoCAyOCArCj4gKyAuLi4vYy1jKyst Y29tbW9uL2RpYWdub3N0aWMtdW5pdHMtNy5jwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjggKwo+ICsg Li4uL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTguY8KgwqDCoMKgwqDCoMKgwqAgfMKg IDI4ICsKPiArIC4uLi9jLWMrKy1jb21tb24vbWlzc2luZy1jbG9zZS1zeW1ib2wuY8KgwqDCoMKg wqDCoCB8wqDCoCA2ICstCj4gKyAuLi4vZysrLmRnL2RpYWdub3N0aWMvYmFkLWJpbmFyeS1vcHMu Q8KgwqDCoMKgwqDCoMKgIHzCoMKgIDggKy0KPiArIGdjYy90ZXN0c3VpdGUvZysrLmRnL3BhcnNl L2Vycm9yNC5DwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArLQo+ICsgLi4uL2crKy5vbGQt ZGVqYS9nKysuYnJlbmRhbi9jcmFzaDExLkPCoMKgwqDCoMKgwqDCoCB8wqDCoCA0ICstCj4gKyBn Y2MvdGVzdHN1aXRlL2crKy5vbGQtZGVqYS9nKysucHQvb3ZlcmxvYWQyLkMgfMKgwqAgMiArLQo+ ICsgLi4uL2crKy5vbGQtZGVqYS9nKysucm9iZXJ0bC9lYjEwOS5DwqDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgIDQgKy0KPiArIC4uLi9nY2MuZGcvYW5hbHl6ZXIvbWFsbG9jLXBhdGhzLTkuY8KgwqDC oMKgwqDCoMKgwqDCoCB8wqDCoCAyICstCj4gKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9iYWQtYmlu YXJ5LW9wcy5jwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICstCj4gKyBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9mb3JtYXQvYnJhbmNoLTEuY8KgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0KPiArIGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL2Zvcm1hdC9wcjc5MjEwLmPCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIg Ky0KPiArIC4uLi9wbHVnaW4vZGlhZ25vc3RpYy10ZXN0LWV4cHJlc3Npb25zLTEuY8KgwqDCoCB8 wqAgMTYgKy0KPiArIC4uLi9kaWFnbm9zdGljLXRlc3Qtc3RyaW5nLWxpdGVyYWxzLTEuY8KgwqDC oMKgwqDCoCB8wqDCoCA0ICstCj4gKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9yZWRlY2wtNC5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICstCj4gKyAuLi4vZ2ZvcnRyYW4uZGcv ZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0xLkY5MMKgIHzCoMKgIDUgKwo+ICsgLi4uL2dmb3J0cmFu LmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMi5GOTDCoCB8wqDCoCA1ICsKPiArIC4uLi9nZm9y dHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTMuRjkwwqAgfMKgwqAgNSArCj4gKyBnY2Mv dGVzdHN1aXRlL2dvLmRnL2FycmF5Y2xlYXIuZ2/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg wqAgMyArCj4gKyBnY2MvdHJlZS1kaWFnbm9zdGljLXBhdGguY2PCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNSArLQo+ICsgbGliY3BwL2NoYXJzZXQuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDk4 ICsrLS0KPiArIGxpYmNwcC9pbmNsdWRlL2NwcGxpYi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQwICstCj4gKyBsaWJjcHAvaW5pdC5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoCAxIC0KPiArIDQ4IGZpbGVzIGNoYW5nZWQsIDExMDYgaW5zZXJ0aW9ucygrKSwgMjg3IGRl bGV0aW9ucygtKQo+ICsgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2RpYWdub3N0aWMtdW5pdHMtMS5jCj4gKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy0yLmMKPiArIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTMuYwo+ICsg Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMt dW5pdHMtNC5jCj4gKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZGlhZ25vc3RpYy11bml0cy01LmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTYuYwo+ICsgY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtdW5pdHMtNy5jCj4gKyBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11 bml0cy04LmMKPiArCj4gK2RpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1pbmRlbnRhdGlvbi5j IGIvZ2NjL2MtZmFtaWx5L2MtCj4gaW5kZW50YXRpb24uYwo+ICstLS0gYS9nY2MvYy1mYW1pbHkv Yy1pbmRlbnRhdGlvbi5jwqDCoMKgwqDCoDIwMjAtMDctMjIgMjM6MzU6MTcuMjk2Mzg0MDIyCj4g LTA3MDAKPiArKysrIGIvZ2NjL2MtZmFtaWx5L2MtaW5kZW50YXRpb24uY8KgwqDCoMKgwqAyMDIx LTEyLTI1IDAxOjIwOjUzLjQ3NTYzNjY5NAo+IC0wODAwCj4gK0BAIC0yNCw4ICsyNCw3IEBAIGFs b25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuCj4gKyAjaW5jbHVkZSAiYy1jb21t b24uaCIKPiArICNpbmNsdWRlICJjLWluZGVudGF0aW9uLmgiCj4gKyAjaW5jbHVkZSAic2VsZnRl c3QuaCIKPiArLQo+ICstZXh0ZXJuIGNwcF9vcHRpb25zICpjcHBfb3B0czsKPiArKyNpbmNsdWRl ICJkaWFnbm9zdGljLmgiCj4gKyAKPiArIC8qIFJvdW5kIHVwIFZJU19DT0xVTU4gdG8gbmVhcmVz dCB0YWIgc3RvcC4gKi8KPiArIAo+ICtAQCAtMjk0LDcgKzI5Myw3IEBAIHNob3VsZF93YXJuX2Zv cl9taXNsZWFkaW5nX2luZGVudGF0aW9uICgKPiArwqDCoCBleHBhbmRlZF9sb2NhdGlvbiBuZXh0 X3N0bXRfZXhwbG9jID0gZXhwYW5kX2xvY2F0aW9uCj4gKG5leHRfc3RtdF9sb2MpOwo+ICvCoMKg IGV4cGFuZGVkX2xvY2F0aW9uIGd1YXJkX2V4cGxvYyA9IGV4cGFuZF9sb2NhdGlvbiAoZ3VhcmRf bG9jKTsKPiArIAo+ICstwqAgY29uc3QgdW5zaWduZWQgaW50IHRhYl93aWR0aCA9IGNwcF9vcHRz LT50YWJzdG9wOwo+ICsrwqAgY29uc3QgdW5zaWduZWQgaW50IHRhYl93aWR0aCA9IGdsb2JhbF9k Yy0+dGFic3RvcDsKPiArIAo+ICvCoMKgIC8qIFRoZXkgbXVzdCBiZSBpbiB0aGUgc2FtZSBmaWxl LsKgICovCj4gK8KgwqAgaWYgKG5leHRfc3RtdF9leHBsb2MuZmlsZSAhPSBib2R5X2V4cGxvYy5m aWxlKQo+ICtkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mu b3B0Cj4gKy0tLSBhL2djYy9jLWZhbWlseS9jLm9wdMKgwqDCoMKgwqDCoMKgMjAyMS0xMi0yNCAy MDoyMzo0Mi44MTY4MDkyMzAgLTA4MDAKPiArKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0wqDCoMKg wqDCoMKgwqAyMDIxLTEyLTI1IDAxOjIwOjUzLjQ3NTYzNjY5NCAtMDgwMAo+ICtAQCAtMTg3Niwx MCArMTg3Niw2IEBAIEVudW0oc3Ryb25nX2V2YWxfb3JkZXIpIFN0cmluZyhzb21lKSBWYWwKPiAr IEVudW1WYWx1ZQo+ICsgRW51bShzdHJvbmdfZXZhbF9vcmRlcikgU3RyaW5nKGFsbCkgVmFsdWUo MikKPiArIAo+ICstZnRhYnN0b3A9Cj4gKy1DIE9iakMgQysrIE9iakMrKyBKb2luZWQgUmVqZWN0 TmVnYXRpdmUgVUludGVnZXIKPiArLS1mdGFic3RvcD08bnVtYmVyPsKgwqDCoMKgRGlzdGFuY2Ug YmV0d2VlbiB0YWIgc3RvcHMgZm9yIGNvbHVtbgo+IHJlcG9ydGluZy4KPiArLQo+ICsgZnRlbXBs YXRlLWJhY2t0cmFjZS1saW1pdD0KPiArIEMrKyBPYmpDKysgSm9pbmVkIFJlamVjdE5lZ2F0aXZl IFVJbnRlZ2VyCj4gVmFyKHRlbXBsYXRlX2JhY2t0cmFjZV9saW1pdCkgSW5pdCgxMCkKPiArIFNl dCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiBub3RlcyBmb3Ig YSBzaW5nbGUKPiB3YXJuaW5nIG9yIGVycm9yLgo+ICtkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5 L2Mtb3B0cy5jIGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCj4gKy0tLSBhL2djYy9jLWZhbWlseS9j LW9wdHMuY8KgwqDCoMKgMjAyMS0xMi0yNCAyMDoyMzo0NC44MjQ3NzQ3ODYgLTA4MDAKPiArKysr IGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jwqDCoMKgwqAyMDIxLTEyLTI1IDAxOjIwOjUzLjQ3NTYz NjY5NCAtMDgwMAo+ICtAQCAtNTA0LDEyICs1MDQsNiBAQCBjX2NvbW1vbl9oYW5kbGVfb3B0aW9u IChzaXplX3Qgc2NvZGUsIGNvCj4gK8KgwqDCoMKgwqDCoMKgY3BwX29wdHMtPnRyYWNrX21hY3Jv X2V4cGFuc2lvbiA9IDI7Cj4gK8KgwqDCoMKgwqDCoCBicmVhazsKPiArIAo+ICstwqDCoMKgIGNh c2UgT1BUX2Z0YWJzdG9wXzoKPiArLcKgwqDCoMKgwqAgLyogSXQgaXMgZG9jdW1lbnRlZCB0aGF0 IHdlIHNpbGVudGx5IGlnbm9yZSBzaWxseSB2YWx1ZXMuwqAgKi8KPiArLcKgwqDCoMKgwqAgaWYg KHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMTAwKQo+ICstwqDCoMKgwqDCoMKgY3BwX29wdHMtPnRh YnN0b3AgPSB2YWx1ZTsKPiArLcKgwqDCoMKgwqAgYnJlYWs7Cj4gKy0KPiArwqDCoMKgwqAgY2Fz ZSBPUFRfZmV4ZWNfY2hhcnNldF86Cj4gK8KgwqDCoMKgwqDCoCBjcHBfb3B0cy0+bmFycm93X2No YXJzZXQgPSBhcmc7Cj4gK8KgwqDCoMKgwqDCoCBicmVhazsKPiArZGlmZiAtLWdpdCBhL2djYy9j b21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKPiArLS0tIGEvZ2NjL2NvbW1vbi5vcHTCoMKgwqAy MDIxLTEyLTI0IDIwOjIzOjQyLjQ4MDgxNDk5MyAtMDgwMAo+ICsrKysgYi9nY2MvY29tbW9uLm9w dMKgwqDCoDIwMjEtMTItMjUgMDE6MjA6NTMuNDc1NjM2Njk0IC0wODAwCj4gK0BAIC0xMzI1LDYg KzEzMjUsMTQgQEAgRW51bShkaWFnbm9zdGljX3VybF9ydWxlKSBTdHJpbmcoYWx3YXlzKQo+ICsg RW51bVZhbHVlCj4gKyBFbnVtKGRpYWdub3N0aWNfdXJsX3J1bGUpIFN0cmluZyhhdXRvKSBWYWx1 ZShESUFHTk9TVElDU19VUkxfQVVUTykKPiArIAo+ICsrZmRpYWdub3N0aWNzLWNvbHVtbi11bml0 PQo+ICsrQ29tbW9uIEpvaW5lZCBSZWplY3ROZWdhdGl2ZSBFbnVtKGRpYWdub3N0aWNzX2NvbHVt bl91bml0KQo+ICsrLWZkaWFnbm9zdGljcy1jb2x1bW4tdW5pdD1bZGlzcGxheXxieXRlXcKgwqDC oMKgwqDCoFNlbGVjdCB3aGV0aGVyIGNvbHVtbgo+IG51bWJlcnMgYXJlIG91dHB1dCBhcyBkaXNw bGF5IGNvbHVtbnMgKGRlZmF1bHQpIG9yIHJhdyBieXRlcy4KPiArKwo+ICsrZmRpYWdub3N0aWNz LWNvbHVtbi1vcmlnaW49Cj4gKytDb21tb24gSm9pbmVkIFJlamVjdE5lZ2F0aXZlIFVJbnRlZ2Vy Cj4gKystZmRpYWdub3N0aWNzLWNvbHVtbi1vcmlnaW49PG51bWJlcj7CoMKgU2V0IHRoZSBudW1i ZXIgb2YgdGhlIGZpcnN0Cj4gY29sdW1uLsKgIFRoZSBkZWZhdWx0IGlzIDEtYmFzZWQgYXMgcGVy IEdOVSBzdHlsZSwgYnV0IHNvbWUgdXRpbGl0aWVzCj4gbWF5IGV4cGVjdCAwLWJhc2VkLCBmb3Ig ZXhhbXBsZS4KPiArKwo+ICsgZmRpYWdub3N0aWNzLWZvcm1hdD0KPiArIENvbW1vbiBKb2luZWQg UmVqZWN0TmVnYXRpdmUgRW51bShkaWFnbm9zdGljc19vdXRwdXRfZm9ybWF0KQo+ICsgLWZkaWFn bm9zdGljcy1mb3JtYXQ9W3RleHR8anNvbl3CoMKgwqDCoMKgwqBTZWxlY3Qgb3V0cHV0IGZvcm1h dC4KPiArQEAgLTEzMzQsNiArMTM0MiwxNSBAQCBTb3VyY2VJbmNsdWRlCj4gKyBkaWFnbm9zdGlj LmgKPiArIAo+ICsgRW51bQo+ICsrTmFtZShkaWFnbm9zdGljc19jb2x1bW5fdW5pdCkgVHlwZShp bnQpCj4gKysKPiArK0VudW1WYWx1ZQo+ICsrRW51bShkaWFnbm9zdGljc19jb2x1bW5fdW5pdCkg U3RyaW5nKGRpc3BsYXkpCj4gVmFsdWUoRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfRElTUExBWSkK PiArKwo+ICsrRW51bVZhbHVlCj4gKytFbnVtKGRpYWdub3N0aWNzX2NvbHVtbl91bml0KSBTdHJp bmcoYnl0ZSkKPiBWYWx1ZShESUFHTk9TVElDU19DT0xVTU5fVU5JVF9CWVRFKQo+ICsrCj4gKytF bnVtCj4gKyBOYW1lKGRpYWdub3N0aWNzX291dHB1dF9mb3JtYXQpIFR5cGUoaW50KQo+ICsgCj4g KyBFbnVtVmFsdWUKPiArQEAgLTEzNjIsNiArMTM3OSwxMCBAQCBmZGlhZ25vc3RpY3MtcGF0aC1m b3JtYXQ9Cj4gKyBDb21tb24gSm9pbmVkIFJlamVjdE5lZ2F0aXZlIFZhcihmbGFnX2RpYWdub3N0 aWNzX3BhdGhfZm9ybWF0KQo+IEVudW0oZGlhZ25vc3RpY19wYXRoX2Zvcm1hdCkgSW5pdChEUEZf SU5MSU5FX0VWRU5UUykKPiArIFNwZWNpZnkgaG93IHRvIHByaW50IGFueSBjb250cm9sLWZsb3cg cGF0aCBhc3NvY2lhdGVkIHdpdGggYQo+IGRpYWdub3N0aWMuCj4gKyAKPiArK2Z0YWJzdG9wPQo+ ICsrQ29tbW9uIEpvaW5lZCBSZWplY3ROZWdhdGl2ZSBVSW50ZWdlcgo+ICsrLWZ0YWJzdG9wPTxu dW1iZXI+wqDCoMKgwqDCoCBEaXN0YW5jZSBiZXR3ZWVuIHRhYiBzdG9wcyBmb3IgY29sdW1uCj4g cmVwb3J0aW5nLgo+ICsrCj4gKyBFbnVtCj4gKyBOYW1lKGRpYWdub3N0aWNfcGF0aF9mb3JtYXQp IFR5cGUoaW50KQo+ICsgCj4gK2RpZmYgLS1naXQgYS9nY2MvZGlhZ25vc3RpYy5jIGIvZ2NjL2Rp YWdub3N0aWMuYwo+ICstLS0gYS9nY2MvZGlhZ25vc3RpYy5jwqAyMDIwLTA3LTIyIDIzOjM1OjE3 LjU1NjM4Njg4NyAtMDcwMAo+ICsrKysgYi9nY2MvZGlhZ25vc3RpYy5jwqAyMDIxLTEyLTI1IDAx OjIzOjQxLjMwMDg0MTIwNyAtMDgwMAo+ICtAQCAtMzgsNiArMzgsNyBAQCBhbG9uZyB3aXRoIEdD Qzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLgo+ICsgI2luY2x1ZGUgInNlbGZ0ZXN0LmgiCj4gKyAj aW5jbHVkZSAic2VsZnRlc3QtZGlhZ25vc3RpYy5oIgo+ICsgI2luY2x1ZGUgIm9wdHMuaCIKPiAr KyNpbmNsdWRlICJjcHBsaWIuaCIKPiArIAo+ICsgI2lmZGVmIEhBVkVfVEVSTUlPU19ICj4gKyAj IGluY2x1ZGUgPHRlcm1pb3MuaD4KPiArQEAgLTIxOSw2ICsyMjAsOSBAQCBkaWFnbm9zdGljX2lu aXRpYWxpemUgKGRpYWdub3N0aWNfY29udGV4Cj4gK8KgwqAgY29udGV4dC0+bWluX21hcmdpbl93 aWR0aCA9IDA7Cj4gK8KgwqAgY29udGV4dC0+c2hvd19ydWxlcl9wID0gZmFsc2U7Cj4gK8KgwqAg Y29udGV4dC0+cGFyc2VhYmxlX2ZpeGl0c19wID0gZmFsc2U7Cj4gKyvCoCBjb250ZXh0LT5jb2x1 bW5fdW5pdCA9IERJQUdOT1NUSUNTX0NPTFVNTl9VTklUX0RJU1BMQVk7Cj4gKyvCoCBjb250ZXh0 LT5jb2x1bW5fb3JpZ2luID0gMTsKPiArK8KgIGNvbnRleHQtPnRhYnN0b3AgPSA4Owo+ICvCoMKg IGNvbnRleHQtPmVkaXRfY29udGV4dF9wdHIgPSBOVUxMOwo+ICvCoMKgIGNvbnRleHQtPmRpYWdu b3N0aWNfZ3JvdXBfbmVzdGluZ19kZXB0aCA9IDA7Cj4gK8KgwqAgY29udGV4dC0+ZGlhZ25vc3Rp Y19ncm91cF9lbWlzc2lvbl9jb3VudCA9IDA7Cj4gK0BAIC0zNTMsOCArMzU3LDUxIEBAIGRpYWdu b3N0aWNfZ2V0X2NvbG9yX2Zvcl9raW5kIChkaWFnbm9zdGkKPiArwqDCoCByZXR1cm4gZGlhZ25v c3RpY19raW5kX2NvbG9yW2tpbmRdOwo+ICsgfQo+ICsgCj4gKysvKiBHaXZlbiBhbiBleHBhbmRl ZF9sb2NhdGlvbiwgY29udmVydCB0aGUgY29sdW1uICh3aGljaCBpcyBpbiAxLQo+IGJhc2VkIGJ5 dGVzKQo+ICsrwqDCoCB0byB0aGUgcmVxdWVzdGVkIHVuaXRzLCB3aXRob3V0IGNvbnZlcnRpbmcg dGhlIG9yaWdpbi4KPiArK8KgwqAgUmV0dXJuIC0xIGlmIHRoZSBjb2x1bW4gaXMgaW52YWxpZCAo PD0gMCkuwqAgKi8KPiArKwo+ICsrc3RhdGljIGludAo+ICsrY29udmVydF9jb2x1bW5fdW5pdCAo ZW51bSBkaWFnbm9zdGljc19jb2x1bW5fdW5pdCBjb2x1bW5fdW5pdCwKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgdGFic3RvcCwKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleHBhbmRlZF9sb2NhdGlvbiBzKQo+ICsrewo+ICsrwqAg aWYgKHMuY29sdW1uIDw9IDApCj4gKyvCoMKgwqAgcmV0dXJuIC0xOwo+ICsrCj4gKyvCoCBzd2l0 Y2ggKGNvbHVtbl91bml0KQo+ICsrwqDCoMKgIHsKPiArK8KgwqDCoCBkZWZhdWx0Ogo+ICsrwqDC oMKgwqDCoCBnY2NfdW5yZWFjaGFibGUgKCk7Cj4gKysKPiArK8KgwqDCoCBjYXNlIERJQUdOT1NU SUNTX0NPTFVNTl9VTklUX0RJU1BMQVk6Cj4gKyvCoMKgwqDCoMKgIHsKPiArK8KgwqDCoMKgwqDC oGNwcF9jaGFyX2NvbHVtbl9wb2xpY3kgcG9saWN5ICh0YWJzdG9wLCBjcHBfd2N3aWR0aCk7Cj4g KyvCoMKgwqDCoMKgwqByZXR1cm4gbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVtbiAocywg cG9saWN5KTsKPiArK8KgwqDCoMKgwqAgfQo+ICsrCj4gKyvCoMKgwqAgY2FzZSBESUFHTk9TVElD U19DT0xVTU5fVU5JVF9CWVRFOgo+ICsrwqDCoMKgwqDCoCByZXR1cm4gcy5jb2x1bW47Cj4gKyvC oMKgwqAgfQo+ICsrfQo+ICsrCj4gKysvKiBHaXZlbiBhbiBleHBhbmRlZF9sb2NhdGlvbiwgY29u dmVydCB0aGUgY29sdW1uICh3aGljaCBpcyBpbiAxLQo+IGJhc2VkIGJ5dGVzKQo+ICsrwqDCoCB0 byB0aGUgcmVxdWVzdGVkIHVuaXRzIGFuZCBvcmlnaW4uwqAgUmV0dXJuIC0xIGlmIHRoZSBjb2x1 bW4gaXMKPiArK8KgwqAgaW52YWxpZCAoPD0gMCkuwqAgKi8KPiArK2ludAo+ICsrZGlhZ25vc3Rp Y19jb252ZXJ0ZWRfY29sdW1uIChkaWFnbm9zdGljX2NvbnRleHQgKmNvbnRleHQsCj4gZXhwYW5k ZWRfbG9jYXRpb24gcykKPiArK3sKPiArK8KgIGludCBvbmVfYmFzZWRfY29sCj4gKyvCoMKgwqAg PSBjb252ZXJ0X2NvbHVtbl91bml0IChjb250ZXh0LT5jb2x1bW5fdW5pdCwgY29udGV4dC0+dGFi c3RvcCwKPiBzKTsKPiArK8KgIGlmIChvbmVfYmFzZWRfY29sIDw9IDApCj4gKyvCoMKgwqAgcmV0 dXJuIC0xOwo+ICsrwqAgcmV0dXJuIG9uZV9iYXNlZF9jb2wgKyAoY29udGV4dC0+Y29sdW1uX29y aWdpbiAtIDEpOwo+ICsrfQo+ICsrCj4gKyAvKiBSZXR1cm4gYSBmb3JtYXR0ZWQgbGluZSBhbmQg Y29sdW1uICc6JWxpbmU6JWNvbHVtbicuwqAgRWxpZGVkIGlmCj4gKy3CoMKgIHplcm8uwqAgVGhl IHJlc3VsdCBpcyBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGJ1ZmZlci7CoCAqLwo+ICsrwqDCoCBs aW5lID09IDAgb3IgY29sIDwgMC7CoCAoQSBjb2x1bW4gb2YgMCBtYXkgYmUgdmFsaWQgZHVlIHRv IHRoZQo+ICsrwqDCoCAtZmRpYWdub3N0aWNzLWNvbHVtbi1vcmlnaW4gb3B0aW9uLikKPiArK8Kg wqAgVGhlIHJlc3VsdCBpcyBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGJ1ZmZlci7CoCAqLwo+ICsg Cj4gKyBzdGF0aWMgY29uc3QgY2hhciAqCj4gKyBtYXliZV9saW5lX2FuZF9jb2x1bW4gKGludCBs aW5lLCBpbnQgY29sKQo+ICtAQCAtMzYzLDggKzQxMCw5IEBAIG1heWJlX2xpbmVfYW5kX2NvbHVt biAoaW50IGxpbmUsIGludCBjb2wKPiArIAo+ICvCoMKgIGlmIChsaW5lKQo+ICvCoMKgwqDCoCB7 Cj4gKy3CoMKgwqDCoMKgIHNpemVfdCBsID0gc25wcmludGYgKHJlc3VsdCwgc2l6ZW9mIChyZXN1 bHQpLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNvbCA/ICI6JWQ6JWQiIDogIjolZCIsIGxpbmUsIGNvbCk7Cj4gKyvCoMKgwqDCoMKgIHNpemVf dCBsCj4gKyvCoMKgwqDCoMKgwqA9IHNucHJpbnRmIChyZXN1bHQsIHNpemVvZiAocmVzdWx0KSwK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29sID49IDAgPyAiOiVkOiVk IiA6ICI6JWQiLCBsaW5lLCBjb2wpOwo+ICvCoMKgwqDCoMKgwqAgZ2NjX2NoZWNraW5nX2Fzc2Vy dCAobCA8IHNpemVvZiAocmVzdWx0KSk7Cj4gK8KgwqDCoMKgIH0KPiArwqDCoCBlbHNlCj4gK0BA IC0zODMsOCArNDMxLDE0IEBAIGRpYWdub3N0aWNfZ2V0X2xvY2F0aW9uX3RleHQgKGRpYWdub3N0 aWMKPiArwqDCoCBjb25zdCBjaGFyICpsb2N1c19jcyA9IGNvbG9yaXplX3N0YXJ0IChwcF9zaG93 X2NvbG9yIChwcCksCj4gImxvY3VzIik7Cj4gK8KgwqAgY29uc3QgY2hhciAqbG9jdXNfY2UgPSBj b2xvcml6ZV9zdG9wIChwcF9zaG93X2NvbG9yIChwcCkpOwo+ICvCoMKgIGNvbnN0IGNoYXIgKmZp bGUgPSBzLmZpbGUgPyBzLmZpbGUgOiBwcm9nbmFtZTsKPiArLcKgIGludCBsaW5lID0gc3RyY21w IChmaWxlLCBOXygiPGJ1aWx0LWluPiIpKSA/IHMubGluZSA6IDA7Cj4gKy3CoCBpbnQgY29sID0g Y29udGV4dC0+c2hvd19jb2x1bW4gPyBzLmNvbHVtbiA6IDA7Cj4gKyvCoCBpbnQgbGluZSA9IDA7 Cj4gKyvCoCBpbnQgY29sID0gLTE7Cj4gKyvCoCBpZiAoc3RyY21wIChmaWxlLCBOXygiPGJ1aWx0 LWluPiIpKSkKPiArK8KgwqDCoCB7Cj4gKyvCoMKgwqDCoMKgIGxpbmUgPSBzLmxpbmU7Cj4gKyvC oMKgwqDCoMKgIGlmIChjb250ZXh0LT5zaG93X2NvbHVtbikKPiArK8KgwqDCoMKgwqDCoGNvbCA9 IGRpYWdub3N0aWNfY29udmVydGVkX2NvbHVtbiAoY29udGV4dCwgcyk7Cj4gKyvCoMKgwqAgfQo+ ICsgCj4gK8KgwqAgY29uc3QgY2hhciAqbGluZV9jb2wgPSBtYXliZV9saW5lX2FuZF9jb2x1bW4g KGxpbmUsIGNvbCk7Cj4gK8KgwqAgcmV0dXJuIGJ1aWxkX21lc3NhZ2Vfc3RyaW5nICgiJXMlcyVz OiVzIiwgbG9jdXNfY3MsIGZpbGUsCj4gK0BAIC02NTAsMTQgKzcwNCwyMCBAQCBkaWFnbm9zdGlj X3JlcG9ydF9jdXJyZW50X21vZHVsZSAoZGlhZ25vCj4gK8KgwqDCoMKgwqDCoCBpZiAoISBNQUlO X0ZJTEVfUCAobWFwKSkKPiArwqDCoMKgwqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgYm9v bCBmaXJzdCA9IHRydWU7Cj4gKyvCoMKgwqDCoMKgwqDCoCBleHBhbmRlZF9sb2NhdGlvbiBzID0g e307Cj4gK8KgwqDCoMKgwqDCoMKgwqAgZG8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2hlcmUgPSBsaW5lbWFwX2luY2x1ZGVkX2Zyb20gKG1h cCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXAgPSBsaW5lbWFwX2luY2x1ZGVkX2Zy b21fbGluZW1hcCAobGluZV90YWJsZSwgbWFwKTsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29uc3QgY2hhciAqbGluZV9jb2wKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IG1h eWJlX2xpbmVfYW5kX2NvbHVtbiAoU09VUkNFX0xJTkUgKG1hcCwgd2hlcmUpLAo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBmaXJzdCAmJiBjb250ZXh0LQo+ID5zaG93X2NvbHVtbgo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCA/IFNPVVJDRV9DT0xVTU4gKG1hcCwgd2hlcmUpCj4gOiAwKTsKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcy5maWxlID0gTElORU1BUF9GSUxFIChtYXApOwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzLmxpbmUgPSBTT1VSQ0VfTElORSAobWFwLCB3aGVyZSk7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBjb2wgPSAtMTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKGZpcnN0ICYmIGNvbnRleHQtPnNob3dfY29sdW1uKQo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz LmNvbHVtbiA9IFNPVVJDRV9DT0xVTU4gKG1hcCwgd2hlcmUpOwo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNvbCA9IGRpYWdub3N0aWNfY29udmVydGVkX2NvbHVtbiAoY29udGV4 dCwgcyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb25zdCBjaGFyICpsaW5lX2NvbCA9IG1heWJlX2xpbmVfYW5kX2NvbHVtbiAo cy5saW5lLAo+IGNvbCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgbXNnc1tdID0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTl8oIkluIGZpbGUgaW5jbHVkZWQgZnJv bSIpLAo+ICtAQCAtNjY2LDcgKzcyNiw3IEBAIGRpYWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfbW9k dWxlIChkaWFnbm8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGluZGV4ID0g IWZpcnN0Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHBfdmVyYmF0aW0gKGNvbnRleHQt PnByaW50ZXIsICIlcyVzICVyJXMlcyVSIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmlyc3QgPyAiIiA6ICIsXG4iLCBfKG1zZ3NbaW5kZXhd KSwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi bG9jdXMiLCBMSU5FTUFQX0ZJTEUgKG1hcCksIGxpbmVfY29sKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibG9jdXMiLCBzLmZpbGUsIGxpbmVf Y29sKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZpcnN0ID0gZmFsc2U7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoISBNQUlOX0ZJTEVf UCAobWFwKSk7Cj4gK0BAIC0yMDQyLDEwICsyMTAyLDE1IEBAIHRlc3RfcHJpbnRfcGFyc2VhYmxl X2ZpeGl0c19yZXBsYWNlICgpCj4gKyBzdGF0aWMgdm9pZAo+ICsgYXNzZXJ0X2xvY2F0aW9uX3Rl eHQgKGNvbnN0IGNoYXIgKmV4cGVjdGVkX2xvY190ZXh0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZSwgaW50 IGNvbHVtbiwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wg c2hvd19jb2x1bW4pCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBi b29sIHNob3dfY29sdW1uLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaW50IG9yaWdpbiA9IDEsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBlbnVtIGRpYWdub3N0aWNzX2NvbHVtbl91bml0IGNvbHVtbl91bml0Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gRElBR05PU1RJQ1NfQ09MVU1O X1VOSVRfQllURSkKPiArIHsKPiArwqDCoCB0ZXN0X2RpYWdub3N0aWNfY29udGV4dCBkYzsKPiAr wqDCoCBkYy5zaG93X2NvbHVtbiA9IHNob3dfY29sdW1uOwo+ICsrwqAgZGMuY29sdW1uX3VuaXQg PSBjb2x1bW5fdW5pdDsKPiArK8KgIGRjLmNvbHVtbl9vcmlnaW4gPSBvcmlnaW47Cj4gKyAKPiAr wqDCoCBleHBhbmRlZF9sb2NhdGlvbiB4bG9jOwo+ICvCoMKgIHhsb2MuZmlsZSA9IGZpbGVuYW1l Owo+ICtAQCAtMjA2OSw3ICsyMTM0LDEwIEBAIHRlc3RfZGlhZ25vc3RpY19nZXRfbG9jYXRpb25f dGV4dCAoKQo+ICvCoMKgIGFzc2VydF9sb2NhdGlvbl90ZXh0ICgiUFJPR05BTUU6IiwgTlVMTCwg MCwgMCwgdHJ1ZSk7Cj4gK8KgwqAgYXNzZXJ0X2xvY2F0aW9uX3RleHQgKCI8YnVpbHQtaW4+OiIs ICI8YnVpbHQtaW4+IiwgNDIsIDEwLCB0cnVlKTsKPiArwqDCoCBhc3NlcnRfbG9jYXRpb25fdGV4 dCAoImZvby5jOjQyOjEwOiIsICJmb28uYyIsIDQyLCAxMCwgdHJ1ZSk7Cj4gKy3CoCBhc3NlcnRf bG9jYXRpb25fdGV4dCAoImZvby5jOjQyOiIsICJmb28uYyIsIDQyLCAwLCB0cnVlKTsKPiArK8Kg IGFzc2VydF9sb2NhdGlvbl90ZXh0ICgiZm9vLmM6NDI6OToiLCAiZm9vLmMiLCA0MiwgMTAsIHRy dWUsIDApOwo+ICsrwqAgYXNzZXJ0X2xvY2F0aW9uX3RleHQgKCJmb28uYzo0MjoxMDEwOiIsICJm b28uYyIsIDQyLCAxMCwgdHJ1ZSwKPiAxMDAxKTsKPiArK8KgIGZvciAoaW50IG9yaWdpbiA9IDA7 IG9yaWdpbiAhPSAyOyArK29yaWdpbikKPiArK8KgwqDCoCBhc3NlcnRfbG9jYXRpb25fdGV4dCAo ImZvby5jOjQyOiIsICJmb28uYyIsIDQyLCAwLCB0cnVlLAo+IG9yaWdpbik7Cj4gK8KgwqAgYXNz ZXJ0X2xvY2F0aW9uX3RleHQgKCJmb28uYzoiLCAiZm9vLmMiLCAwLCAxMCwgdHJ1ZSk7Cj4gK8Kg wqAgYXNzZXJ0X2xvY2F0aW9uX3RleHQgKCJmb28uYzo0MjoiLCAiZm9vLmMiLCA0MiwgMTAsIGZh bHNlKTsKPiArwqDCoCBhc3NlcnRfbG9jYXRpb25fdGV4dCAoImZvby5jOiIsICJmb28uYyIsIDAs IDEwLCBmYWxzZSk7Cj4gK0BAIC0yMDc3LDYgKzIxNDUsNDEgQEAgdGVzdF9kaWFnbm9zdGljX2dl dF9sb2NhdGlvbl90ZXh0ICgpCj4gK8KgwqAgbWF5YmVfbGluZV9hbmRfY29sdW1uIChJTlRfTUFY LCBJTlRfTUFYKTsKPiArwqDCoCBtYXliZV9saW5lX2FuZF9jb2x1bW4gKElOVF9NSU4sIElOVF9N SU4pOwo+ICsgCj4gKyvCoCB7Cj4gKyvCoMKgwqAgLyogSW4gb3JkZXIgdG8gdGVzdCBkaXNwbGF5 IGNvbHVtbnMgdnMgYnl0ZSBjb2x1bW5zLCB3ZSBuZWVkIHRvCj4gY3JlYXRlIGEKPiArK8KgwqDC oMKgwqDCoCBmaWxlIGZvciBsb2NhdGlvbl9nZXRfc291cmNlX2xpbmUoKSB0byByZWFkLsKgICov Cj4gKysKPiArK8KgwqDCoCBjb25zdCBjaGFyICpjb25zdCBjb250ZW50ID0gInNtaWxlIFx4ZjBc eDlmXHg5OFx4ODJcbiI7Cj4gKyvCoMKgwqAgY29uc3QgaW50IGxpbmVfYnl0ZXMgPSBzdHJsZW4g KGNvbnRlbnQpIC0gMTsKPiArK8KgwqDCoCBjb25zdCBpbnQgZGVmX3RhYnN0b3AgPSA4Owo+ICsr wqDCoMKgIGNvbnN0IGludCBkaXNwbGF5X3dpZHRoID0gY3BwX2Rpc3BsYXlfd2lkdGggKGNvbnRl bnQsCj4gbGluZV9ieXRlcywKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRlZl90YWJzdG9wKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGxpbmVfYnl0ZXMgLSAyLCBkaXNw bGF5X3dpZHRoKTsKPiArK8KgwqDCoCB0ZW1wX3NvdXJjZV9maWxlIHRtcCAoU0VMRlRFU1RfTE9D QVRJT04sICIuYyIsIGNvbnRlbnQpOwo+ICsrwqDCoMKgIGNvbnN0IGNoYXIgKmNvbnN0IGZuYW1l ID0gdG1wLmdldF9maWxlbmFtZSAoKTsKPiArK8KgwqDCoCBjb25zdCBpbnQgYnVmX2xlbiA9IHN0 cmxlbiAoZm5hbWUpICsgMTY7Cj4gKyvCoMKgwqAgY2hhciAqY29uc3QgZXhwZWN0ZWQgPSBYTkVX VkVDIChjaGFyLCBidWZfbGVuKTsKPiArKwo+ICsrwqDCoMKgIHNucHJpbnRmIChleHBlY3RlZCwg YnVmX2xlbiwgIiVzOjE6JWQ6IiwgZm5hbWUsIGxpbmVfYnl0ZXMpOwo+ICsrwqDCoMKgIGFzc2Vy dF9sb2NhdGlvbl90ZXh0IChleHBlY3RlZCwgZm5hbWUsIDEsIGxpbmVfYnl0ZXMsIHRydWUsCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEsIERJQUdO T1NUSUNTX0NPTFVNTl9VTklUX0JZVEUpOwo+ICsrCj4gKyvCoMKgwqAgc25wcmludGYgKGV4cGVj dGVkLCBidWZfbGVuLCAiJXM6MTolZDoiLCBmbmFtZSwgbGluZV9ieXRlcyAtCj4gMSk7Cj4gKyvC oMKgwqAgYXNzZXJ0X2xvY2F0aW9uX3RleHQgKGV4cGVjdGVkLCBmbmFtZSwgMSwgbGluZV9ieXRl cywgdHJ1ZSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMCwgRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfQllURSk7Cj4gKysKPiArK8KgwqDCoCBzbnBy aW50ZiAoZXhwZWN0ZWQsIGJ1Zl9sZW4sICIlczoxOiVkOiIsIGZuYW1lLCBkaXNwbGF5X3dpZHRo KTsKPiArK8KgwqDCoCBhc3NlcnRfbG9jYXRpb25fdGV4dCAoZXhwZWN0ZWQsIGZuYW1lLCAxLCBs aW5lX2J5dGVzLCB0cnVlLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAxLCBESUFHTk9TVElDU19DT0xVTU5fVU5JVF9ESVNQTEFZKTsKPiArKwo+ICsr wqDCoMKgIHNucHJpbnRmIChleHBlY3RlZCwgYnVmX2xlbiwgIiVzOjE6JWQ6IiwgZm5hbWUsIGRp c3BsYXlfd2lkdGggLQo+IDEpOwo+ICsrwqDCoMKgIGFzc2VydF9sb2NhdGlvbl90ZXh0IChleHBl Y3RlZCwgZm5hbWUsIDEsIGxpbmVfYnl0ZXMsIHRydWUsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsIERJQUdOT1NUSUNTX0NPTFVNTl9VTklUX0RJ U1BMQVkpOwo+ICsrCj4gKyvCoMKgwqAgWERFTEVURVZFQyAoZXhwZWN0ZWQpOwo+ICsrwqAgfQo+ ICsrCj4gKysKPiArwqDCoCBwcm9nbmFtZSA9IG9sZF9wcm9nbmFtZTsKPiArIH0KPiArIAo+ICtk aWZmIC0tZ2l0IGEvZ2NjL2RpYWdub3N0aWMtZm9ybWF0LWpzb24uY2MgYi9nY2MvZGlhZ25vc3Rp Yy1mb3JtYXQtCj4ganNvbi5jYwo+ICstLS0gYS9nY2MvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi5j Y8KgwqDCoMKgMjAyMC0wNy0yMiAyMzozNToxNy41NTYzODY4ODcKPiAtMDcwMAo+ICsrKysgYi9n Y2MvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi5jY8KgwqDCoMKgMjAyMS0xMi0yNSAwMToyMDo1My40 NzU2MzY2OTQKPiAtMDgwMAo+ICtAQCAtMjMsNiArMjMsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2Vl IHRoZSBmaWxlIENPUFlJTkczLgo+ICsgI2luY2x1ZGUgInN5c3RlbS5oIgo+ICsgI2luY2x1ZGUg ImNvcmV0eXBlcy5oIgo+ICsgI2luY2x1ZGUgImRpYWdub3N0aWMuaCIKPiArKyNpbmNsdWRlICJz ZWxmdGVzdC1kaWFnbm9zdGljLmgiCj4gKyAjaW5jbHVkZSAiZGlhZ25vc3RpYy1tZXRhZGF0YS5o Igo+ICsgI2luY2x1ZGUgImpzb24uaCIKPiArICNpbmNsdWRlICJzZWxmdGVzdC5oIgo+ICtAQCAt NDMsMjEgKzQ0LDQzIEBAIHN0YXRpYyBqc29uOjphcnJheSAqY3VyX2NoaWxkcmVuX2FycmF5Owo+ ICsgLyogR2VuZXJhdGUgYSBKU09OIG9iamVjdCBmb3IgTE9DLsKgICovCj4gKyAKPiArIGpzb246 OnZhbHVlICoKPiArLWpzb25fZnJvbV9leHBhbmRlZF9sb2NhdGlvbiAobG9jYXRpb25fdCBsb2Mp Cj4gKytqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24gKGRpYWdub3N0aWNfY29udGV4dCAqY29u dGV4dCwKPiBsb2NhdGlvbl90IGxvYykKPiArIHsKPiArwqDCoCBleHBhbmRlZF9sb2NhdGlvbiBl eHBsb2MgPSBleHBhbmRfbG9jYXRpb24gKGxvYyk7Cj4gK8KgwqAganNvbjo6b2JqZWN0ICpyZXN1 bHQgPSBuZXcganNvbjo6b2JqZWN0ICgpOwo+ICvCoMKgIGlmIChleHBsb2MuZmlsZSkKPiArwqDC oMKgwqAgcmVzdWx0LT5zZXQgKCJmaWxlIiwgbmV3IGpzb246OnN0cmluZyAoZXhwbG9jLmZpbGUp KTsKPiArwqDCoCByZXN1bHQtPnNldCAoImxpbmUiLCBuZXcganNvbjo6aW50ZWdlcl9udW1iZXIg KGV4cGxvYy5saW5lKSk7Cj4gKy3CoCByZXN1bHQtPnNldCAoImNvbHVtbiIsIG5ldyBqc29uOjpp bnRlZ2VyX251bWJlciAoZXhwbG9jLmNvbHVtbikpOwo+ICsrCj4gKyvCoCBjb25zdCBlbnVtIGRp YWdub3N0aWNzX2NvbHVtbl91bml0IG9yaWdfdW5pdCA9IGNvbnRleHQtCj4gPmNvbHVtbl91bml0 Owo+ICsrwqAgc3RydWN0Cj4gKyvCoCB7Cj4gKyvCoMKgwqAgY29uc3QgY2hhciAqbmFtZTsKPiAr K8KgwqDCoCBlbnVtIGRpYWdub3N0aWNzX2NvbHVtbl91bml0IHVuaXQ7Cj4gKyvCoCB9IGNvbHVt bl9maWVsZHNbXSA9IHsKPiArK8KgwqDCoCB7ImRpc3BsYXktY29sdW1uIiwgRElBR05PU1RJQ1Nf Q09MVU1OX1VOSVRfRElTUExBWX0sCj4gKyvCoMKgwqAgeyJieXRlLWNvbHVtbiIsIERJQUdOT1NU SUNTX0NPTFVNTl9VTklUX0JZVEV9Cj4gKyvCoCB9Owo+ICsrwqAgaW50IHRoZV9jb2x1bW4gPSBJ TlRfTUlOOwo+ICsrwqAgZm9yIChpbnQgaSA9IDA7IGkgIT0gc2l6ZW9mIGNvbHVtbl9maWVsZHMg LyBzaXplb2YKPiAoKmNvbHVtbl9maWVsZHMpOyArK2kpCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKg wqDCoCBjb250ZXh0LT5jb2x1bW5fdW5pdCA9IGNvbHVtbl9maWVsZHNbaV0udW5pdDsKPiArK8Kg wqDCoMKgwqAgY29uc3QgaW50IGNvbCA9IGRpYWdub3N0aWNfY29udmVydGVkX2NvbHVtbiAoY29u dGV4dCwKPiBleHBsb2MpOwo+ICsrwqDCoMKgwqDCoCByZXN1bHQtPnNldCAoY29sdW1uX2ZpZWxk c1tpXS5uYW1lLCBuZXcganNvbjo6aW50ZWdlcl9udW1iZXIKPiAoY29sKSk7Cj4gKyvCoMKgwqDC oMKgIGlmIChjb2x1bW5fZmllbGRzW2ldLnVuaXQgPT0gb3JpZ191bml0KQo+ICsrwqDCoMKgwqDC oMKgdGhlX2NvbHVtbiA9IGNvbDsKPiArK8KgwqDCoCB9Cj4gKyvCoCBnY2NfYXNzZXJ0ICh0aGVf Y29sdW1uICE9IElOVF9NSU4pOwo+ICsrwqAgcmVzdWx0LT5zZXQgKCJjb2x1bW4iLCBuZXcganNv bjo6aW50ZWdlcl9udW1iZXIgKHRoZV9jb2x1bW4pKTsKPiArK8KgIGNvbnRleHQtPmNvbHVtbl91 bml0ID0gb3JpZ191bml0Owo+ICvCoMKgIHJldHVybiByZXN1bHQ7Cj4gKyB9Cj4gKyAKPiArIC8q IEdlbmVyYXRlIGEgSlNPTiBvYmplY3QgZm9yIExPQ19SQU5HRS7CoCAqLwo+ICsgCj4gKyBzdGF0 aWMganNvbjo6b2JqZWN0ICoKPiArLWpzb25fZnJvbV9sb2NhdGlvbl9yYW5nZSAoY29uc3QgbG9j YXRpb25fcmFuZ2UgKmxvY19yYW5nZSwgdW5zaWduZWQKPiByYW5nZV9pZHgpCj4gKytqc29uX2Zy b21fbG9jYXRpb25fcmFuZ2UgKGRpYWdub3N0aWNfY29udGV4dCAqY29udGV4dCwKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgbG9jYXRpb25f cmFuZ2UgKmxvY19yYW5nZSwgdW5zaWduZWQKPiByYW5nZV9pZHgpCj4gKyB7Cj4gK8KgwqAgbG9j YXRpb25fdCBjYXJldF9sb2MgPSBnZXRfcHVyZV9sb2NhdGlvbiAobG9jX3JhbmdlLT5tX2xvYyk7 Cj4gKyAKPiArQEAgLTY4LDEzICs5MSwxMyBAQCBqc29uX2Zyb21fbG9jYXRpb25fcmFuZ2UgKGNv bnN0IGxvY2F0aW9uCj4gK8KgwqAgbG9jYXRpb25fdCBmaW5pc2hfbG9jID0gZ2V0X2ZpbmlzaCAo bG9jX3JhbmdlLT5tX2xvYyk7Cj4gKyAKPiArwqDCoCBqc29uOjpvYmplY3QgKnJlc3VsdCA9IG5l dyBqc29uOjpvYmplY3QgKCk7Cj4gKy3CoCByZXN1bHQtPnNldCAoImNhcmV0IiwganNvbl9mcm9t X2V4cGFuZGVkX2xvY2F0aW9uIChjYXJldF9sb2MpKTsKPiArK8KgIHJlc3VsdC0+c2V0ICgiY2Fy ZXQiLCBqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24gKGNvbnRleHQsCj4gY2FyZXRfbG9jKSk7 Cj4gK8KgwqAgaWYgKHN0YXJ0X2xvYyAhPSBjYXJldF9sb2MKPiArwqDCoMKgwqDCoMKgICYmIHN0 YXJ0X2xvYyAhPSBVTktOT1dOX0xPQ0FUSU9OKQo+ICstwqDCoMKgIHJlc3VsdC0+c2V0ICgic3Rh cnQiLCBqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24gKHN0YXJ0X2xvYykpOwo+ICsrwqDCoMKg IHJlc3VsdC0+c2V0ICgic3RhcnQiLCBqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24gKGNvbnRl eHQsCj4gc3RhcnRfbG9jKSk7Cj4gK8KgwqAgaWYgKGZpbmlzaF9sb2MgIT0gY2FyZXRfbG9jCj4g K8KgwqDCoMKgwqDCoCAmJiBmaW5pc2hfbG9jICE9IFVOS05PV05fTE9DQVRJT04pCj4gKy3CoMKg wqAgcmVzdWx0LT5zZXQgKCJmaW5pc2giLCBqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24KPiAo ZmluaXNoX2xvYykpOwo+ICsrwqDCoMKgIHJlc3VsdC0+c2V0ICgiZmluaXNoIiwganNvbl9mcm9t X2V4cGFuZGVkX2xvY2F0aW9uIChjb250ZXh0LAo+IGZpbmlzaF9sb2MpKTsKPiArIAo+ICvCoMKg IGlmIChsb2NfcmFuZ2UtPm1fbGFiZWwpCj4gK8KgwqDCoMKgIHsKPiArQEAgLTkxLDE0ICsxMTQs MTQgQEAganNvbl9mcm9tX2xvY2F0aW9uX3JhbmdlIChjb25zdCBsb2NhdGlvbgo+ICsgLyogR2Vu ZXJhdGUgYSBKU09OIG9iamVjdCBmb3IgSElOVC7CoCAqLwo+ICsgCj4gKyBzdGF0aWMganNvbjo6 b2JqZWN0ICoKPiArLWpzb25fZnJvbV9maXhpdF9oaW50IChjb25zdCBmaXhpdF9oaW50ICpoaW50 KQo+ICsranNvbl9mcm9tX2ZpeGl0X2hpbnQgKGRpYWdub3N0aWNfY29udGV4dCAqY29udGV4dCwg Y29uc3QgZml4aXRfaGludAo+ICpoaW50KQo+ICsgewo+ICvCoMKgIGpzb246Om9iamVjdCAqZml4 aXRfb2JqID0gbmV3IGpzb246Om9iamVjdCAoKTsKPiArIAo+ICvCoMKgIGxvY2F0aW9uX3Qgc3Rh cnRfbG9jID0gaGludC0+Z2V0X3N0YXJ0X2xvYyAoKTsKPiArLcKgIGZpeGl0X29iai0+c2V0ICgi c3RhcnQiLCBqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24KPiAoc3RhcnRfbG9jKSk7Cj4gKyvC oCBmaXhpdF9vYmotPnNldCAoInN0YXJ0IiwganNvbl9mcm9tX2V4cGFuZGVkX2xvY2F0aW9uIChj b250ZXh0LAo+IHN0YXJ0X2xvYykpOwo+ICvCoMKgIGxvY2F0aW9uX3QgbmV4dF9sb2MgPSBoaW50 LT5nZXRfbmV4dF9sb2MgKCk7Cj4gKy3CoCBmaXhpdF9vYmotPnNldCAoIm5leHQiLCBqc29uX2Zy b21fZXhwYW5kZWRfbG9jYXRpb24gKG5leHRfbG9jKSk7Cj4gKyvCoCBmaXhpdF9vYmotPnNldCAo Im5leHQiLCBqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRpb24gKGNvbnRleHQsCj4gbmV4dF9sb2Mp KTsKPiArwqDCoCBmaXhpdF9vYmotPnNldCAoInN0cmluZyIsIG5ldyBqc29uOjpzdHJpbmcgKGhp bnQtPmdldF9zdHJpbmcKPiAoKSkpOwo+ICsgCj4gK8KgwqAgcmV0dXJuIGZpeGl0X29iajsKPiAr QEAgLTE5MCwxMSArMjEzLDEzIEBAIGpzb25fZW5kX2RpYWdub3N0aWMgKGRpYWdub3N0aWNfY29u dGV4dAo+ICvCoMKgIGVsc2UKPiArwqDCoMKgwqAgewo+ICvCoMKgwqDCoMKgwqAgLyogT3RoZXJ3 aXNlLCBtYWtlIGRpYWdfb2JqIGJlIHRoZSB0b3AtbGV2ZWwgb2JqZWN0IHdpdGhpbgo+IHRoZSBn cm91cDsKPiArLcKgwqDCoMKgwqDCoCBhZGQgYSAiY2hpbGRyZW4iIGFycmF5LsKgICovCj4gKyvC oMKgwqDCoMKgwqAgYWRkIGEgImNoaWxkcmVuIiBhcnJheSBhbmQgcmVjb3JkIHRoZSBjb2x1bW4g b3JpZ2luLsKgICovCj4gK8KgwqDCoMKgwqDCoCB0b3BsZXZlbF9hcnJheS0+YXBwZW5kIChkaWFn X29iaik7Cj4gK8KgwqDCoMKgwqDCoCBjdXJfZ3JvdXAgPSBkaWFnX29iajsKPiArwqDCoMKgwqDC oMKgIGN1cl9jaGlsZHJlbl9hcnJheSA9IG5ldyBqc29uOjphcnJheSAoKTsKPiArwqDCoMKgwqDC oMKgIGRpYWdfb2JqLT5zZXQgKCJjaGlsZHJlbiIsIGN1cl9jaGlsZHJlbl9hcnJheSk7Cj4gKyvC oMKgwqDCoMKgIGRpYWdfb2JqLT5zZXQgKCJjb2x1bW4tb3JpZ2luIiwKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXcganNvbjo6aW50ZWdlcl9udW1iZXIgKGNvbnRl eHQtCj4gPmNvbHVtbl9vcmlnaW4pKTsKPiArwqDCoMKgwqAgfQo+ICsgCj4gK8KgwqAgY29uc3Qg cmljaF9sb2NhdGlvbiAqcmljaGxvYyA9IGRpYWdub3N0aWMtPnJpY2hsb2M7Cj4gK0BAIC0yMDUs NyArMjMwLDcgQEAganNvbl9lbmRfZGlhZ25vc3RpYyAoZGlhZ25vc3RpY19jb250ZXh0Cj4gK8Kg wqAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCByaWNobG9jLT5nZXRfbnVtX2xvY2F0aW9u cyAoKTsgaSsrKQo+ICvCoMKgwqDCoCB7Cj4gK8KgwqDCoMKgwqDCoCBjb25zdCBsb2NhdGlvbl9y YW5nZSAqbG9jX3JhbmdlID0gcmljaGxvYy0+Z2V0X3JhbmdlIChpKTsKPiArLcKgwqDCoMKgwqAg anNvbjo6b2JqZWN0ICpsb2Nfb2JqID0ganNvbl9mcm9tX2xvY2F0aW9uX3JhbmdlIChsb2NfcmFu Z2UsCj4gaSk7Cj4gKyvCoMKgwqDCoMKgIGpzb246Om9iamVjdCAqbG9jX29iaiA9IGpzb25fZnJv bV9sb2NhdGlvbl9yYW5nZSAoY29udGV4dCwKPiBsb2NfcmFuZ2UsIGkpOwo+ICvCoMKgwqDCoMKg wqAgaWYgKGxvY19vYmopCj4gK8KgwqDCoMKgwqDCoMKgbG9jX2FycmF5LT5hcHBlbmQgKGxvY19v YmopOwo+ICvCoMKgwqDCoCB9Cj4gK0BAIC0yMTcsNyArMjQyLDcgQEAganNvbl9lbmRfZGlhZ25v c3RpYyAoZGlhZ25vc3RpY19jb250ZXh0Cj4gK8KgwqDCoMKgwqDCoCBmb3IgKHVuc2lnbmVkIGlu dCBpID0gMDsgaSA8IHJpY2hsb2MtPmdldF9udW1fZml4aXRfaGludHMgKCk7Cj4gaSsrKQo+ICvC oMKgwqDCoMKgwqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBmaXhpdF9oaW50ICpoaW50 ID0gcmljaGxvYy0+Z2V0X2ZpeGl0X2hpbnQgKGkpOwo+ICstwqDCoMKgwqDCoMKgwqAganNvbjo6 b2JqZWN0ICpmaXhpdF9vYmogPSBqc29uX2Zyb21fZml4aXRfaGludCAoaGludCk7Cj4gKyvCoMKg wqDCoMKgwqDCoCBqc29uOjpvYmplY3QgKmZpeGl0X29iaiA9IGpzb25fZnJvbV9maXhpdF9oaW50 IChjb250ZXh0LAo+IGhpbnQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgIGZpeGl0X2FycmF5LT5hcHBl bmQgKGZpeGl0X29iaik7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoCB9Cj4gK0BAIC0z MjAsNyArMzQ1LDggQEAgbmFtZXNwYWNlIHNlbGZ0ZXN0IHsKPiArIHN0YXRpYyB2b2lkCj4gKyB0 ZXN0X3Vua25vd25fbG9jYXRpb24gKCkKPiArIHsKPiArLcKgIGRlbGV0ZSBqc29uX2Zyb21fZXhw YW5kZWRfbG9jYXRpb24gKFVOS05PV05fTE9DQVRJT04pOwo+ICsrwqAgdGVzdF9kaWFnbm9zdGlj X2NvbnRleHQgZGM7Cj4gKyvCoCBkZWxldGUganNvbl9mcm9tX2V4cGFuZGVkX2xvY2F0aW9uICgm ZGMsIFVOS05PV05fTE9DQVRJT04pOwo+ICsgfQo+ICsgCj4gKyAvKiBWZXJpZnkgdGhhdCB3ZSBn cmFjZWZ1bGx5IGhhbmRsZSBhdHRlbXB0cyB0byBzZXJpYWxpemUgYmFkCj4gK0BAIC0zMzgsNyAr MzY0LDggQEAgdGVzdF9iYWRfZW5kcG9pbnRzICgpCj4gK8KgwqAgbG9jX3JhbmdlLm1fcmFuZ2Vf ZGlzcGxheV9raW5kID0gU0hPV19SQU5HRV9XSVRIX0NBUkVUOwo+ICvCoMKgIGxvY19yYW5nZS5t X2xhYmVsID0gTlVMTDsKPiArIAo+ICstwqAganNvbjo6b2JqZWN0ICpvYmogPSBqc29uX2Zyb21f bG9jYXRpb25fcmFuZ2UgKCZsb2NfcmFuZ2UsIDApOwo+ICsrwqAgdGVzdF9kaWFnbm9zdGljX2Nv bnRleHQgZGM7Cj4gKyvCoCBqc29uOjpvYmplY3QgKm9iaiA9IGpzb25fZnJvbV9sb2NhdGlvbl9y YW5nZSAoJmRjLCAmbG9jX3JhbmdlLAo+IDApOwo+ICvCoMKgIC8qIFdlIHNob3VsZCBoYXZlIGEg ImNhcmV0IiB2YWx1ZSwgYnV0IG5vICJzdGFydCIgb3IgImZpbmlzaCIKPiB2YWx1ZXMuwqAgKi8K PiArwqDCoCBBU1NFUlRfVFJVRSAob2JqICE9IE5VTEwpOwo+ICvCoMKgIEFTU0VSVF9UUlVFIChv YmotPmdldCAoImNhcmV0IikgIT0gTlVMTCk7Cj4gK2RpZmYgLS1naXQgYS9nY2MvZGlhZ25vc3Rp Yy5oIGIvZ2NjL2RpYWdub3N0aWMuaAo+ICstLS0gYS9nY2MvZGlhZ25vc3RpYy5owqAyMDIwLTA3 LTIyIDIzOjM1OjE3LjU1NjM4Njg4NyAtMDcwMAo+ICsrKysgYi9nY2MvZGlhZ25vc3RpYy5owqAy MDIxLTEyLTI1IDAxOjIwOjUzLjQ3OTYzNjYyNyAtMDgwMAo+ICtAQCAtMjQsNiArMjQsMjAgQEAg YWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KPiArICNpbmNsdWRlICJwcmV0 dHktcHJpbnQuaCIKPiArICNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKPiArIAo+ICsrLyog QW4gZW51bSBmb3IgY29udHJvbGxpbmcgd2hhdCB1bml0cyB0byB1c2UgZm9yIHRoZSBjb2x1bW4g bnVtYmVyCj4gKyvCoMKgIHdoZW4gZGlhZ25vc3RpY3MgYXJlIG91dHB1dCwgdXNlZCBieSB0aGUg LWZkaWFnbm9zdGljcy1jb2x1bW4tCj4gdW5pdCBvcHRpb24uCj4gKyvCoMKgIFRhYnMgd2lsbCBi ZSBleHBhbmRlZCBvciBub3QgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiAtCj4gZnRhYnN0b3Au wqAgVGhlIG9yaWdpbgo+ICsrwqDCoCAoZGVmYXVsdCAxKSBpcyBjb250cm9sbGVkIGJ5IC1mZGlh Z25vc3RpY3MtY29sdW1uLW9yaWdpbi7CoCAqLwo+ICsrCj4gKytlbnVtIGRpYWdub3N0aWNzX2Nv bHVtbl91bml0Cj4gKyt7Cj4gKyvCoCAvKiBUaGUgZGVmYXVsdCBmcm9tIEdDQyAxMSBvbndhcmRz OiBkaXNwbGF5IGNvbHVtbnMuwqAgKi8KPiArK8KgIERJQUdOT1NUSUNTX0NPTFVNTl9VTklUX0RJ U1BMQVksCj4gKysKPiArK8KgIC8qIFRoZSBiZWhhdmlvciBpbiBHQ0MgMTAgYW5kIGVhcmxpZXI6 IHNpbXBsZSBieXRlcy7CoCAqLwo+ICsrwqAgRElBR05PU1RJQ1NfQ09MVU1OX1VOSVRfQllURQo+ ICsrfTsKPiArKwo+ICsgLyogRW51bSBmb3Igb3ZlcnJpZGluZyB0aGUgc3RhbmRhcmQgb3V0cHV0 IGZvcm1hdC7CoCAqLwo+ICsgCj4gKyBlbnVtIGRpYWdub3N0aWNzX291dHB1dF9mb3JtYXQKPiAr QEAgLTI4MCw2ICsyOTQsMTUgQEAgc3RydWN0IGRpYWdub3N0aWNfY29udGV4dAo+ICvCoMKgwqDC oMKgIHJlc3Qgb2YgdGhlIGRpYWdub3N0aWMuwqAgKi8KPiArwqDCoCBib29sIHBhcnNlYWJsZV9m aXhpdHNfcDsKPiArIAo+ICsrwqAgLyogV2hhdCB1bml0cyB0byB1c2Ugd2hlbiBvdXRwdXR0aW5n IHRoZSBjb2x1bW4gbnVtYmVyLsKgICovCj4gKyvCoCBlbnVtIGRpYWdub3N0aWNzX2NvbHVtbl91 bml0IGNvbHVtbl91bml0Owo+ICsrCj4gKyvCoCAvKiBUaGUgb3JpZ2luIGZvciB0aGUgY29sdW1u IG51bWJlciAoMS1iYXNlZCBvciAwLWJhc2VkCj4gdHlwaWNhbGx5KS7CoCAqLwo+ICsrwqAgaW50 IGNvbHVtbl9vcmlnaW47Cj4gKysKPiArK8KgIC8qIFRoZSBzaXplIG9mIHRoZSB0YWJzdG9wIGZv ciB0YWIgZXhwYW5zaW9uLsKgICovCj4gKyvCoCBpbnQgdGFic3RvcDsKPiArKwo+ICvCoMKgIC8q IElmIG5vbi1OVUxMLCBhbiBlZGl0X2NvbnRleHQgdG8gd2hpY2ggZml4LWl0IGhpbnRzIHNob3Vs ZCBiZQo+ICvCoMKgwqDCoMKgIGFwcGxpZWQsIGZvciBnZW5lcmF0aW5nIHBhdGNoZXMuwqAgKi8K PiArwqDCoCBlZGl0X2NvbnRleHQgKmVkaXRfY29udGV4dF9wdHI7Cj4gK0BAIC00NTgsNiArNDgx LDggQEAgZGlhZ25vc3RpY19zYW1lX2xpbmUgKGNvbnN0IGRpYWdub3N0aWNfYwo+ICsgfQo+ICsg Cj4gKyBleHRlcm4gY29uc3QgY2hhciAqZGlhZ25vc3RpY19nZXRfY29sb3JfZm9yX2tpbmQgKGRp YWdub3N0aWNfdAo+IGtpbmQpOwo+ICsrZXh0ZXJuIGludCBkaWFnbm9zdGljX2NvbnZlcnRlZF9j b2x1bW4gKGRpYWdub3N0aWNfY29udGV4dAo+ICpjb250ZXh0LAo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGV4cGFuZGVkX2xvY2F0aW9uIHMpOwo+ICsgCj4gKyAvKiBQdXJlIHRleHQgZm9ybWF0dGlu ZyBzdXBwb3J0IGZ1bmN0aW9ucy7CoCAqLwo+ICsgZXh0ZXJuIGNoYXIgKmZpbGVfbmFtZV9hc19w cmVmaXggKGRpYWdub3N0aWNfY29udGV4dCAqLCBjb25zdCBjaGFyCj4gKik7Cj4gK0BAIC00NzAs NiArNDk1LDcgQEAgZXh0ZXJuIHZvaWQgZGlhZ25vc3RpY19vdXRwdXRfZm9ybWF0X2luaQo+ICsg LyogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZGVjaW1hbCByZXByZXNlbnRh dGlvbiBvZiBhbgo+IGludGVnZXIuwqAgKi8KPiArIGV4dGVybiBpbnQgbnVtX2RpZ2l0cyAoaW50 KTsKPiArIAo+ICstZXh0ZXJuIGpzb246OnZhbHVlICpqc29uX2Zyb21fZXhwYW5kZWRfbG9jYXRp b24gKGxvY2F0aW9uX3QgbG9jKTsKPiArK2V4dGVybiBqc29uOjp2YWx1ZSAqanNvbl9mcm9tX2V4 cGFuZGVkX2xvY2F0aW9uIChkaWFnbm9zdGljX2NvbnRleHQKPiAqY29udGV4dCwKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2F0aW9uX3QgbG9jKTsKPiArIAo+ICsg I2VuZGlmIC8qICEgR0NDX0RJQUdOT1NUSUNfSCAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL2RpYWdu b3N0aWMtc2hvdy1sb2N1cy5jIGIvZ2NjL2RpYWdub3N0aWMtc2hvdy0KPiBsb2N1cy5jCj4gKy0t LSBhL2djYy9kaWFnbm9zdGljLXNob3ctbG9jdXMuY8KgwqDCoMKgwqDCoDIwMjAtMDctMjIgMjM6 MzU6MTcuNTU2Mzg2ODg3Cj4gLTA3MDAKPiArKysrIGIvZ2NjL2RpYWdub3N0aWMtc2hvdy1sb2N1 cy5jwqDCoMKgwqDCoMKgMjAyMS0xMi0yNSAwMToyMDo1My40Nzk2MzY2MjcKPiAtMDgwMAo+ICtA QCAtMTc1LDkgKzE3NSwxMCBAQCBlbnVtIGNvbHVtbl91bml0IHsKPiArIGNsYXNzIGV4cGxvY193 aXRoX2Rpc3BsYXlfY29sIDogcHVibGljIGV4cGFuZGVkX2xvY2F0aW9uCj4gKyB7Cj4gK8KgIHB1 YmxpYzoKPiArLcKgIGV4cGxvY193aXRoX2Rpc3BsYXlfY29sIChjb25zdCBleHBhbmRlZF9sb2Nh dGlvbiAmZXhwbG9jKQo+ICsrwqAgZXhwbG9jX3dpdGhfZGlzcGxheV9jb2wgKGNvbnN0IGV4cGFu ZGVkX2xvY2F0aW9uICZleHBsb2MsIGludAo+IHRhYnN0b3ApCj4gK8KgwqDCoMKgIDogZXhwYW5k ZWRfbG9jYXRpb24gKGV4cGxvYyksCj4gKy3CoMKgwqDCoMKgIG1fZGlzcGxheV9jb2wgKGxvY2F0 aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1bW4gKGV4cGxvYykpIHt9Cj4gKyvCoMKgwqDCoMKgIG1f ZGlzcGxheV9jb2wgKGxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1bW4gKGV4cGxvYywKPiB0 YWJzdG9wKSkKPiArK8KgIHt9Cj4gKyAKPiArwqDCoCBpbnQgbV9kaXNwbGF5X2NvbDsKPiArIH07 Cj4gK0BAIC0xODksMTEgKzE5MCwxMSBAQCBjbGFzcyBleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbCA6 IHB1YmxpYyBlCj4gKyBjbGFzcyBsYXlvdXRfcG9pbnQKPiArIHsKPiArwqAgcHVibGljOgo+ICst wqAgbGF5b3V0X3BvaW50IChjb25zdCBleHBhbmRlZF9sb2NhdGlvbiAmZXhwbG9jKQo+ICsrwqAg bGF5b3V0X3BvaW50IChjb25zdCBleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbCAmZXhwbG9jKQo+ICvC oMKgwqDCoCA6IG1fbGluZSAoZXhwbG9jLmxpbmUpCj4gK8KgwqAgewo+ICvCoMKgwqDCoCBtX2Nv bHVtbnNbQ1VfQllURVNdID0gZXhwbG9jLmNvbHVtbjsKPiArLcKgwqDCoCBtX2NvbHVtbnNbQ1Vf RElTUExBWV9DT0xTXSA9IGxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1bW4KPiAoZXhwbG9j KTsKPiArK8KgwqDCoCBtX2NvbHVtbnNbQ1VfRElTUExBWV9DT0xTXSA9IGV4cGxvYy5tX2Rpc3Bs YXlfY29sOwo+ICvCoMKgIH0KPiArIAo+ICvCoMKgIGxpbmVudW1fdHlwZSBtX2xpbmU7Cj4gK0BA IC0yMDUsMTAgKzIwNiwxMCBAQCBjbGFzcyBsYXlvdXRfcG9pbnQKPiArIGNsYXNzIGxheW91dF9y YW5nZQo+ICsgewo+ICvCoCBwdWJsaWM6Cj4gKy3CoCBsYXlvdXRfcmFuZ2UgKGNvbnN0IGV4cGFu ZGVkX2xvY2F0aW9uICpzdGFydF9leHBsb2MsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY29uc3QgZXhwYW5kZWRfbG9jYXRpb24gKmZpbmlzaF9leHBsb2MsCj4gKyvCoCBsYXlvdXRf cmFuZ2UgKGNvbnN0IGV4cGxvY193aXRoX2Rpc3BsYXlfY29sICZzdGFydF9leHBsb2MsCj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3QgZXhwbG9jX3dpdGhfZGlzcGxheV9jb2wg JmZpbmlzaF9leHBsb2MsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVudW0gcmFu Z2VfZGlzcGxheV9raW5kIHJhbmdlX2Rpc3BsYXlfa2luZCwKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjb25zdCBleHBhbmRlZF9sb2NhdGlvbiAqY2FyZXRfZXhwbG9jLAo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGV4cGxvY193aXRoX2Rpc3BsYXlfY29sICZj YXJldF9leHBsb2MsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIG9y aWdpbmFsX2lkeCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29uc3QgcmFuZ2Vf bGFiZWwgKmxhYmVsKTsKPiArIAo+ICtAQCAtMjI2LDIyICsyMjcsMTggQEAgY2xhc3MgbGF5b3V0 X3JhbmdlCj4gKyAKPiArIC8qIEEgc3RydWN0IGZvciB1c2UgYnkgbGF5b3V0OjpwcmludF9zb3Vy Y2VfbGluZSBmb3IgdGVsbGluZwo+ICvCoMKgwqAgbGF5b3V0OjpwcmludF9hbm5vdGF0aW9uX2xp bmUgdGhlIGV4dGVudHMgb2YgdGhlIHNvdXJjZSBsaW5lCj4gdGhhdAo+ICstwqDCoCBpdCBwcmlu dGVkLCBzbyB0aGF0IHVuZGVybGluZXMgY2FuIGJlIGNsaXBwZWQgYXBwcm9wcmlhdGVseS7CoCAq Lwo+ICsrwqDCoCBpdCBwcmludGVkLCBzbyB0aGF0IHVuZGVybGluZXMgY2FuIGJlIGNsaXBwZWQg YXBwcm9wcmlhdGVseS7CoAo+IFVuaXRzCj4gKyvCoMKgIGFyZSAxLWJhc2VkIGRpc3BsYXkgY29s dW1ucy7CoCAqLwo+ICsgCj4gKyBzdHJ1Y3QgbGluZV9ib3VuZHMKPiArIHsKPiArLcKgIGludCBt X2ZpcnN0X25vbl93czsKPiArLcKgIGludCBtX2xhc3Rfbm9uX3dzOwo+ICsrwqAgaW50IG1fZmly c3Rfbm9uX3dzX2Rpc3BfY29sOwo+ICsrwqAgaW50IG1fbGFzdF9ub25fd3NfZGlzcF9jb2w7Cj4g KyAKPiArLcKgIHZvaWQgY29udmVydF90b19kaXNwbGF5X2NvbHMgKGNoYXJfc3BhbiBsaW5lKQo+ ICsrwqAgbGluZV9ib3VuZHMgKCkKPiArwqDCoCB7Cj4gKy3CoMKgwqAgbV9maXJzdF9ub25fd3Mg PSBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxheV9jb2x1bW4KPiAobGluZS5nZXRfYnVmZmVyICgp LAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bGluZS5sZW5ndGgKPiAoKSwKPiArLQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG1fZmlyc3Rfbm9uX3dzKQo+IDsKPiArLQo+ICstwqDCoMKgIG1f bGFzdF9ub25fd3MgPSBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxheV9jb2x1bW4KPiAobGluZS5n ZXRfYnVmZmVyICgpLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbGluZS5sZW5ndGgKPiAoKSwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gbV9sYXN0X25vbl93cyk7Cj4gKyvCoMKgwqAgbV9maXJz dF9ub25fd3NfZGlzcF9jb2wgPSBJTlRfTUFYOwo+ICsrwqDCoMKgIG1fbGFzdF9ub25fd3NfZGlz cF9jb2wgPSAwOwo+ICvCoMKgIH0KPiArIH07Cj4gKyAKPiArQEAgLTM1MSw4ICszNDgsOCBAQCBj bGFzcyBsYXlvdXQKPiArwqAgcHJpdmF0ZToKPiArwqDCoCBib29sIHdpbGxfc2hvd19saW5lX3Ag KGxpbmVudW1fdHlwZSByb3cpIGNvbnN0Owo+ICvCoMKgIHZvaWQgcHJpbnRfbGVhZGluZ19maXhp dHMgKGxpbmVudW1fdHlwZSByb3cpOwo+ICstwqAgdm9pZCBwcmludF9zb3VyY2VfbGluZSAobGlu ZW51bV90eXBlIHJvdywgY29uc3QgY2hhciAqbGluZSwgaW50Cj4gbGluZV9ieXRlcywKPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGluZV9ib3VuZHMg Kmxib3VuZHNfb3V0KTsKPiArK8KgIGxpbmVfYm91bmRzIHByaW50X3NvdXJjZV9saW5lIChsaW5l bnVtX3R5cGUgcm93LCBjb25zdCBjaGFyCj4gKmxpbmUsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGxpbmVfYnl0ZXMp Owo+ICvCoMKgIGJvb2wgc2hvdWxkX3ByaW50X2Fubm90YXRpb25fbGluZV9wIChsaW5lbnVtX3R5 cGUgcm93KSBjb25zdDsKPiArwqDCoCB2b2lkIHN0YXJ0X2Fubm90YXRpb25fbGluZSAoY2hhciBt YXJnaW5fY2hhciA9ICcgJykgY29uc3Q7Cj4gK8KgwqAgdm9pZCBwcmludF9hbm5vdGF0aW9uX2xp bmUgKGxpbmVudW1fdHlwZSByb3csIGNvbnN0IGxpbmVfYm91bmRzCj4gbGJvdW5kcyk7Cj4gK0BA IC01MTMsMTYgKzUxMCwxNiBAQCBjb2xvcml6ZXI6OmdldF9jb2xvcl9ieV9uYW1lIChjb25zdCBj aGFyCj4gK8KgwqDCoCBJbml0aWFsaXplIHZhcmlvdXMgbGF5b3V0X3BvaW50IGZpZWxkcyBmcm9t IGV4cGFuZGVkX2xvY2F0aW9uCj4gK8KgwqDCoCBlcXVpdmFsZW50czsgd2UndmUgYWxyZWFkeSBm aWx0ZXJlZCBvbiBmaWxlLsKgICovCj4gKyAKPiArLWxheW91dF9yYW5nZTo6bGF5b3V0X3Jhbmdl IChjb25zdCBleHBhbmRlZF9sb2NhdGlvbiAqc3RhcnRfZXhwbG9jLAo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgZXhwYW5kZWRfbG9j YXRpb24gKmZpbmlzaF9leHBsb2MsCj4gKytsYXlvdXRfcmFuZ2U6OmxheW91dF9yYW5nZSAoY29u c3QgZXhwbG9jX3dpdGhfZGlzcGxheV9jb2wKPiAmc3RhcnRfZXhwbG9jLAo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgZXhwbG9jX3dp dGhfZGlzcGxheV9jb2wKPiAmZmluaXNoX2V4cGxvYywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIHJhbmdlX2Rpc3BsYXlfa2luZAo+ IHJhbmdlX2Rpc3BsYXlfa2luZCwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGV4cGFuZGVkX2xvY2F0aW9uICpjYXJldF9leHBsb2Ms Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b25zdCBleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbAo+ICZjYXJldF9leHBsb2MsCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgb3Jp Z2luYWxfaWR4LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbnN0IHJhbmdlX2xhYmVsICpsYWJlbCkKPiArLTogbV9zdGFydCAoKnN0YXJ0 X2V4cGxvYyksCj4gKy3CoCBtX2ZpbmlzaCAoKmZpbmlzaF9leHBsb2MpLAo+ICsrOiBtX3N0YXJ0 IChzdGFydF9leHBsb2MpLAo+ICsrwqAgbV9maW5pc2ggKGZpbmlzaF9leHBsb2MpLAo+ICvCoMKg IG1fcmFuZ2VfZGlzcGxheV9raW5kIChyYW5nZV9kaXNwbGF5X2tpbmQpLAo+ICstwqAgbV9jYXJl dCAoKmNhcmV0X2V4cGxvYyksCj4gKyvCoCBtX2NhcmV0IChjYXJldF9leHBsb2MpLAo+ICvCoMKg IG1fb3JpZ2luYWxfaWR4IChvcmlnaW5hbF9pZHgpLAo+ICvCoMKgIG1fbGFiZWwgKGxhYmVsKQo+ ICsgewo+ICtAQCAtNjQ2LDYgKzY0Myw5IEBAIGxheW91dF9yYW5nZTo6aW50ZXJzZWN0c19saW5l X3AgKGxpbmVudW0KPiArIAo+ICsgI2lmIENIRUNLSU5HX1AKPiArIAo+ICsrLyogRGVmYXVsdCBm b3Igd2hlbiB3ZSBkb24ndCBjYXJlIHdoYXQgdGhlIHRhYiBleHBhbnNpb24gaXMgc2V0Cj4gdG8u wqAgKi8KPiArK3N0YXRpYyBjb25zdCBpbnQgZGVmX3RhYnN0b3AgPSA4Owo+ICsrCj4gKyAvKiBD cmVhdGUgc29tZSBleHBhbmRlZCBsb2NhdGlvbnMgZm9yIHRlc3RpbmcgbGF5b3V0X3JhbmdlLsKg IFRoZQo+IGZpbGVuYW1lCj4gK8KgwqDCoCBtZW1iZXIgb2YgdGhlIGV4cGxvY3MgaXMgc2V0IHRv IHRoZSBlbXB0eSBzdHJpbmcuwqAgVGhpcyBtZW1iZXIKPiB3aWxsIG9ubHkgYmUKPiArwqDCoMKg IGluc3BlY3RlZCBieSB0aGUgY2FsbHMgdG8gbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVt bigpIG1hZGUKPiBmcm9tIHRoZQo+ICtAQCAtNjYyLDggKzY2MiwxMSBAQCBtYWtlX3JhbmdlIChp bnQgc3RhcnRfbGluZSwgaW50IHN0YXJ0X2NvCj4gK8KgwqDCoMKgID0geyIiLCBzdGFydF9saW5l LCBzdGFydF9jb2wsIE5VTEwsIGZhbHNlfTsKPiArwqDCoCBjb25zdCBleHBhbmRlZF9sb2NhdGlv biBmaW5pc2hfZXhwbG9jCj4gK8KgwqDCoMKgID0geyIiLCBlbmRfbGluZSwgZW5kX2NvbCwgTlVM TCwgZmFsc2V9Owo+ICstwqAgcmV0dXJuIGxheW91dF9yYW5nZSAoJnN0YXJ0X2V4cGxvYywgJmZp bmlzaF9leHBsb2MsCj4gU0hPV19SQU5HRV9XSVRIT1VUX0NBUkVULAo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc3RhcnRfZXhwbG9jLCAwLCBOVUxMKTsKPiAr K8KgIHJldHVybiBsYXlvdXRfcmFuZ2UgKGV4cGxvY193aXRoX2Rpc3BsYXlfY29sIChzdGFydF9l eHBsb2MsCj4gZGVmX3RhYnN0b3ApLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbCAoZmluaXNoX2V4cGxvYywKPiBkZWZf dGFic3RvcCksCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNI T1dfUkFOR0VfV0lUSE9VVF9DQVJFVCwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZXhwbG9jX3dpdGhfZGlzcGxheV9jb2wgKHN0YXJ0X2V4cGxvYywKPiBkZWZf dGFic3RvcCksCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAs IE5VTEwpOwo+ICsgfQo+ICsgCj4gKyAvKiBTZWxmdGVzdHMgZm9yIGxheW91dF9yYW5nZTo6Y29u dGFpbnNfcG9pbnQgYW5kCj4gK0BAIC05NjQsNyArOTY3LDcgQEAgbGF5b3V0OjpsYXlvdXQgKGRp YWdub3N0aWNfY29udGV4dCAqIGNvbgo+ICsgOiBtX2NvbnRleHQgKGNvbnRleHQpLAo+ICvCoMKg IG1fcHAgKGNvbnRleHQtPnByaW50ZXIpLAo+ICvCoMKgIG1fcHJpbWFyeV9sb2MgKHJpY2hsb2Mt PmdldF9yYW5nZSAoMCktPm1fbG9jKSwKPiArLcKgIG1fZXhwbG9jIChyaWNobG9jLT5nZXRfZXhw YW5kZWRfbG9jYXRpb24gKDApKSwKPiArK8KgIG1fZXhwbG9jIChyaWNobG9jLT5nZXRfZXhwYW5k ZWRfbG9jYXRpb24gKDApLCBjb250ZXh0LT50YWJzdG9wKSwKPiArwqDCoCBtX2NvbG9yaXplciAo Y29udGV4dCwgZGlhZ25vc3RpY19raW5kKSwKPiArwqDCoCBtX2NvbG9yaXplX3NvdXJjZV9wIChj b250ZXh0LT5jb2xvcml6ZV9zb3VyY2VfcCksCj4gK8KgwqAgbV9zaG93X2xhYmVsc19wIChjb250 ZXh0LT5zaG93X2xhYmVsc19wKSwKPiArQEAgLTEwNjAsNyArMTA2MywxMCBAQCBsYXlvdXQ6Om1h eWJlX2FkZF9sb2NhdGlvbl9yYW5nZSAoY29uc3QKPiArIAo+ICvCoMKgIC8qIEV2ZXJ5dGhpbmcg aXMgbm93IGtub3duIHRvIGJlIGluIHRoZSBjb3JyZWN0IHNvdXJjZSBmaWxlLAo+ICvCoMKgwqDC oMKgIGJ1dCBpdCBtYXkgcmVxdWlyZSBmdXJ0aGVyIHNhbml0aXphdGlvbi7CoCAqLwo+ICstwqAg bGF5b3V0X3JhbmdlIHJpICgmc3RhcnQsICZmaW5pc2gsIGxvY19yYW5nZS0KPiA+bV9yYW5nZV9k aXNwbGF5X2tpbmQsICZjYXJldCwKPiArK8KgIGxheW91dF9yYW5nZSByaSAoZXhwbG9jX3dpdGhf ZGlzcGxheV9jb2wgKHN0YXJ0LCBtX2NvbnRleHQtCj4gPnRhYnN0b3ApLAo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhwbG9jX3dpdGhfZGlzcGxheV9jb2wgKGZpbmlzaCwg bV9jb250ZXh0LQo+ID50YWJzdG9wKSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGxvY19yYW5nZS0+bV9yYW5nZV9kaXNwbGF5X2tpbmQsCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbCAoY2FyZXQsIG1fY29udGV4 dC0KPiA+dGFic3RvcCksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3Jp Z2luYWxfaWR4LCBsb2NfcmFuZ2UtPm1fbGFiZWwpOwo+ICsgCj4gK8KgwqAgLyogSWYgd2UgaGF2 ZSBhIHJhbmdlIHRoYXQgZmluaXNoZXMgYmVmb3JlIGl0IHN0YXJ0cyAocGVyaGFwcwo+ICtAQCAt MTM5NCw3ICsxNDAwLDcgQEAgbGF5b3V0OjpjYWxjdWxhdGVfeF9vZmZzZXRfZGlzcGxheSAoKQo+ ICvCoMKgwqDCoCA9IGdldF9saW5lX2J5dGVzX3dpdGhvdXRfdHJhaWxpbmdfd2hpdGVzcGFjZSAo bGluZS5nZXRfYnVmZmVyCj4gKCksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBsaW5lLmxlbmd0aCAoKSk7Cj4gK8KgwqAgaW50IGVvbF9kaXNwbGF5X2NvbHVtbgo+ ICstwqDCoMKgID0gY3BwX2Rpc3BsYXlfd2lkdGggKGxpbmUuZ2V0X2J1ZmZlciAoKSwgbGluZV9i eXRlcyk7Cj4gKyvCoMKgwqAgPSBjcHBfZGlzcGxheV93aWR0aCAobGluZS5nZXRfYnVmZmVyICgp LCBsaW5lX2J5dGVzLCBtX2NvbnRleHQtCj4gPnRhYnN0b3ApOwo+ICvCoMKgIGlmIChjYXJldF9k aXNwbGF5X2NvbHVtbiA+IGVvbF9kaXNwbGF5X2NvbHVtbgo+ICvCoMKgwqDCoMKgwqAgfHwgIWNh cmV0X2Rpc3BsYXlfY29sdW1uKQo+ICvCoMKgwqDCoCB7Cj4gK0BAIC0xNDQ1LDE2ICsxNDUxLDEz IEBAIGxheW91dDo6Y2FsY3VsYXRlX3hfb2Zmc2V0X2Rpc3BsYXkgKCkKPiArIH0KPiArIAo+ICsg LyogUHJpbnQgbGluZSBST1cgb2Ygc291cmNlIGNvZGUsIHBvdGVudGlhbGx5IGNvbG9yaXplZCBh dCBhbnkKPiByYW5nZXMsIGFuZAo+ICstwqDCoCBwb3B1bGF0ZSAqTEJPVU5EU19PVVQuCj4gKy3C oMKgIExJTkUgaXMgdGhlIHNvdXJjZSBsaW5lIChub3QgbmVjZXNzYXJpbHkgMC10ZXJtaW5hdGVk KSBhbmQKPiBMSU5FX0JZVEVTCj4gKy3CoMKgIGlzIGl0cyBsZW5ndGggaW4gYnl0ZXMuCj4gKy3C oMKgIFRoaXMgZnVuY3Rpb24gZGVhbHMgb25seSB3aXRoIGJ5dGUgb2Zmc2V0cywgbm90IGRpc3Bs YXkgY29sdW1ucywKPiBzbwo+ICstwqDCoCBtX3hfb2Zmc2V0X2Rpc3BsYXkgbXVzdCBiZSBjb252 ZXJ0ZWQgZnJvbSBkaXNwbGF5IHRvIGJ5dGUKPiB1bml0cy7CoCBJbgo+ICstwqDCoCBwYXJ0aWN1 bGFyLCBMSU5FX0JZVEVTIGFuZCBMQk9VTkRTX09VVCBhcmUgaW4gYnl0ZXMuwqAgKi8KPiArK8Kg wqAgcmV0dXJuIHRoZSBsaW5lIGJvdW5kcy7CoCBMSU5FIGlzIHRoZSBzb3VyY2UgbGluZSAobm90 Cj4gbmVjZXNzYXJpbHkKPiArK8KgwqAgMC10ZXJtaW5hdGVkKSBhbmQgTElORV9CWVRFUyBpcyBp dHMgbGVuZ3RoIGluIGJ5dGVzLsKgIEluIG9yZGVyCj4gdG8gaGFuZGxlIGJvdGgKPiArK8KgwqAg Y29sb3JpemF0aW9uIGFuZCB0YWIgZXhwYW5zaW9uLCB0aGlzIGZ1bmN0aW9uIHRyYWNrcyB0aGUg bGluZQo+IHBvc2l0aW9uIGluCj4gKyvCoMKgIGJvdGggYnl0ZSBhbmQgZGlzcGxheSBjb2x1bW4g dW5pdHMuwqAgKi8KPiArIAo+ICstdm9pZAo+ICstbGF5b3V0OjpwcmludF9zb3VyY2VfbGluZSAo bGluZW51bV90eXBlIHJvdywgY29uc3QgY2hhciAqbGluZSwgaW50Cj4gbGluZV9ieXRlcywKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsaW5lX2Jv dW5kcyAqbGJvdW5kc19vdXQpCj4gKytsaW5lX2JvdW5kcwo+ICsrbGF5b3V0OjpwcmludF9zb3Vy Y2VfbGluZSAobGluZW51bV90eXBlIHJvdywgY29uc3QgY2hhciAqbGluZSwgaW50Cj4gbGluZV9i eXRlcykKPiArIHsKPiArwqDCoCBtX2NvbG9yaXplci5zZXRfbm9ybWFsX3RleHQgKCk7Cj4gKyAK PiArQEAgLTE0NjksMzAgKzE0NzIsMjkgQEAgbGF5b3V0OjpwcmludF9zb3VyY2VfbGluZSAobGlu ZW51bV90eXBlCj4gK8KgwqAgZWxzZQo+ICvCoMKgwqDCoCBwcF9zcGFjZSAobV9wcCk7Cj4gKyAK PiArLcKgIC8qIFdlIHdpbGwgc3RvcCBwcmludGluZyB0aGUgc291cmNlIGxpbmUgYXQgYW55IHRy YWlsaW5nCj4gd2hpdGVzcGFjZSwgYW5kIHN0YXJ0Cj4gKy3CoMKgwqDCoCBwcmludGluZyBpdCBh cyBwZXIgbV94X29mZnNldF9kaXNwbGF5LsKgICovCj4gKyvCoCAvKiBXZSB3aWxsIHN0b3AgcHJp bnRpbmcgdGhlIHNvdXJjZSBsaW5lIGF0IGFueSB0cmFpbGluZwo+IHdoaXRlc3BhY2UuwqAgKi8K PiArwqDCoCBsaW5lX2J5dGVzID0gZ2V0X2xpbmVfYnl0ZXNfd2l0aG91dF90cmFpbGluZ193aGl0 ZXNwYWNlIChsaW5lLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAKPiBsaW5lX2J5dGVzKTsKPiArLcKgIGludCB4X29mZnNldF9ieXRl cyA9IDA7Cj4gKy3CoCBpZiAobV94X29mZnNldF9kaXNwbGF5KQo+ICstwqDCoMKgIHsKPiArLcKg wqDCoMKgwqAgeF9vZmZzZXRfYnl0ZXMgPSBjcHBfZGlzcGxheV9jb2x1bW5fdG9fYnl0ZV9jb2x1 bW4gKGxpbmUsCj4gbGluZV9ieXRlcywKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gbV94X29mZnNldF9kaXNwbGF5KTsKPiArLcKgwqDC oMKgwqAgLyogSW4gY2FzZSB0aGUgbGVhZGluZyBwb3J0aW9uIG9mIHRoZSBsaW5lIHRoYXQgd2ls bCBiZQo+IHNraXBwZWQgb3ZlciBlbmRzCj4gKy3CoMKgwqDCoMKgwqAgd2l0aCBhIGNoYXJhY3Rl ciB3aXRoIHdjd2lkdGggPiAxLCB0aGVuIGl0IGlzIHBvc3NpYmxlIHdlCj4gc2tpcHBlZCB0b28K PiArLcKgwqDCoMKgwqDCoCBtdWNoLCBzbyBhY2NvdW50IGZvciB0aGF0IGJ5IHBhZGRpbmcgd2l0 aCBzcGFjZXMuwqAgKi8KPiArLcKgwqDCoMKgwqAgY29uc3QgaW50IG92ZXJhZ2UKPiArLcKgwqDC oMKgwqDCoD0gY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3BsYXlfY29sdW1uIChsaW5lLCBsaW5lX2J5 dGVzLAo+IHhfb2Zmc2V0X2J5dGVzKQo+ICstwqDCoMKgwqDCoMKgLSBtX3hfb2Zmc2V0X2Rpc3Bs YXk7Cj4gKy3CoMKgwqDCoMKgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG92ZXJhZ2U7 ICsrY29sdW1uKQo+ICstwqDCoMKgwqDCoMKgcHBfc3BhY2UgKG1fcHApOwo+ICstwqDCoMKgwqDC oCBsaW5lICs9IHhfb2Zmc2V0X2J5dGVzOwo+ICstwqDCoMKgIH0KPiArIAo+ICstwqAgLyogUHJp bnQgdGhlIGxpbmUuwqAgKi8KPiArLcKgIGludCBmaXJzdF9ub25fd3MgPSBJTlRfTUFYOwo+ICst wqAgaW50IGxhc3Rfbm9uX3dzID0gMDsKPiArLcKgIGZvciAoaW50IGNvbF9ieXRlID0gMSArIHhf b2Zmc2V0X2J5dGVzOyBjb2xfYnl0ZSA8PSBsaW5lX2J5dGVzOwo+IGNvbF9ieXRlKyspCj4gKyvC oCAvKiBUaGlzIG9iamVjdCBoZWxwcyB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGRpc3BsYXkgY29s dW1uIHdlIGFyZQo+IGF0LCB3aGljaCBpcwo+ICsrwqDCoMKgwqAgbmVjZXNzYXJ5IGZvciBjb21w dXRpbmcgdGhlIGxpbmUgYm91bmRzIGluIGRpc3BsYXkgdW5pdHMsIGZvcgo+IGRvaW5nCj4gKyvC oMKgwqDCoCB0YWIgZXhwYW5zaW9uLCBhbmQgZm9yIGltcGxlbWVudGluZyBtX3hfb2Zmc2V0X2Rp c3BsYXkuwqAgKi8KPiArK8KgIGNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uIGR3IChsaW5l LCBsaW5lX2J5dGVzLCBtX2NvbnRleHQtCj4gPnRhYnN0b3ApOwo+ICsrCj4gKyvCoCAvKiBTa2lw IHRoZSBmaXJzdCBtX3hfb2Zmc2V0X2Rpc3BsYXkgZGlzcGxheSBjb2x1bW5zLsKgIEluIGNhc2UK PiB0aGUgbGVhZGluZwo+ICsrwqDCoMKgwqAgcG9ydGlvbiB0aGF0IHdpbGwgYmUgc2tpcHBlZCBl bmRzIHdpdGggYSBjaGFyYWN0ZXIgd2l0aAo+IHdjd2lkdGggPiAxLCB0aGVuCj4gKyvCoMKgwqDC oCBpdCBpcyBwb3NzaWJsZSB3ZSBza2lwcGVkIHRvbyBtdWNoLCBzbyBhY2NvdW50IGZvciB0aGF0 IGJ5Cj4gcGFkZGluZyB3aXRoCj4gKyvCoMKgwqDCoCBzcGFjZXMuwqAgTm90ZSB0aGF0IHRoaXMg ZG9lcyB0aGUgcmlnaHQgdGhpbmcgdG9vIGluIGNhc2UgYSB0YWIKPiB3YXMgdGhlIGxhc3QKPiAr K8KgwqDCoMKgIGNoYXJhY3RlciB0byBiZSBza2lwcGVkIG92ZXI7IHRoZSB0YWIgaXMgZWZmZWN0 aXZlbHkgcmVwbGFjZWQKPiBieSB0aGUKPiArK8KgwqDCoMKgIGNvcnJlY3QgbnVtYmVyIG9mIHRy YWlsaW5nIHNwYWNlcyBuZWVkZWQgdG8gb2Zmc2V0IGJ5IHRoZQo+IGRlc2lyZWQgbnVtYmVyIG9m Cj4gKyvCoMKgwqDCoCBkaXNwbGF5IGNvbHVtbnMuwqAgKi8KPiArK8KgIGZvciAoaW50IHNraXBw ZWRfZGlzcGxheV9jb2xzID0gZHcuYWR2YW5jZV9kaXNwbGF5X2NvbHMKPiAobV94X29mZnNldF9k aXNwbGF5KTsKPiArK8KgwqDCoMKgwqDCoCBza2lwcGVkX2Rpc3BsYXlfY29scyA+IG1feF9vZmZz ZXRfZGlzcGxheTsgLS0KPiBza2lwcGVkX2Rpc3BsYXlfY29scykKPiArK8KgwqDCoCBwcF9zcGFj ZSAobV9wcCk7Cj4gKysKPiArK8KgIC8qIFByaW50IHRoZSBsaW5lIGFuZCBjb21wdXRlIHRoZSBs aW5lX2JvdW5kcy7CoCAqLwo+ICsrwqAgbGluZV9ib3VuZHMgbGJvdW5kczsKPiArK8KgIHdoaWxl ICghZHcuZG9uZSAoKSkKPiArwqDCoMKgwqAgewo+ICvCoMKgwqDCoMKgwqAgLyogQXNzdW1pbmcg Y29sb3JpemF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBjYXJldCBhbmQKPiB1bmRlcmxpbmUKPiAr wqDCoMKgwqDCoMKgwqAgY2hhcmFjdGVycywgd2UgbWF5IGFsc28gY29sb3JpemUgdGhlIGFzc29j aWF0ZWQgY2hhcmFjdGVycwo+ICtAQCAtMTUxMCw3ICsxNTEyLDggQEAgbGF5b3V0OjpwcmludF9z b3VyY2VfbGluZSAobGluZW51bV90eXBlCj4gK8KgwqDCoMKgwqDCoMKgewo+ICvCoMKgwqDCoMKg wqDCoMKgIGJvb2wgaW5fcmFuZ2VfcDsKPiArwqDCoMKgwqDCoMKgwqDCoCBwb2ludF9zdGF0ZSBz dGF0ZTsKPiArLcKgwqDCoMKgwqDCoMKgIGluX3JhbmdlX3AgPSBnZXRfc3RhdGVfYXRfcG9pbnQg KHJvdywgY29sX2J5dGUsCj4gKyvCoMKgwqDCoMKgwqDCoCBjb25zdCBpbnQgc3RhcnRfYnl0ZV9j b2wgPSBkdy5ieXRlc19wcm9jZXNzZWQgKCkgKyAxOwo+ICsrwqDCoMKgwqDCoMKgwqAgaW5fcmFu Z2VfcCA9IGdldF9zdGF0ZV9hdF9wb2ludCAocm93LCBzdGFydF9ieXRlX2NvbCwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAwLCBJTlRfTUFYLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIENVX0JZVEVTLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzdGF0ZSk7Cj4gK0BA IC0xNTE5LDIyICsxNTIyLDQ0IEBAIGxheW91dDo6cHJpbnRfc291cmNlX2xpbmUgKGxpbmVudW1f dHlwZQo+ICvCoMKgwqDCoMKgwqDCoMKgIGVsc2UKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgbV9j b2xvcml6ZXIuc2V0X25vcm1hbF90ZXh0ICgpOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArLcKgwqDC oMKgwqAgY2hhciBjID0gKmxpbmU7Cj4gKy3CoMKgwqDCoMKgIGlmIChjID09ICdcMCcgfHwgYyA9 PSAnXHQnIHx8IGMgPT0gJ1xyJykKPiArLcKgwqDCoMKgwqDCoGMgPSAnICc7Cj4gKy3CoMKgwqDC oMKgIGlmIChjICE9ICcgJykKPiArKwo+ICsrwqDCoMKgwqDCoCAvKiBHZXQgdGhlIGRpc3BsYXkg d2lkdGggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIG91dHB1dCwKPiBleHBhbmRpbmcKPiAr K8KgwqDCoMKgwqDCoCB0YWJzIGFuZCByZXBsYWNpbmcgc29tZSBjb250cm9sIGJ5dGVzIHdpdGgg c3BhY2VzIGFzCj4gbmVjZXNzYXJ5LsKgICovCj4gKyvCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKmMg PSBkdy5uZXh0X2J5dGUgKCk7Cj4gKyvCoMKgwqDCoMKgIGNvbnN0IGludCBzdGFydF9kaXNwX2Nv bCA9IGR3LmRpc3BsYXlfY29sc19wcm9jZXNzZWQgKCkgKyAxOwo+ICsrwqDCoMKgwqDCoCBjb25z dCBpbnQgdGhpc19kaXNwbGF5X3dpZHRoID0gZHcucHJvY2Vzc19uZXh0X2NvZGVwb2ludCAoKTsK PiArK8KgwqDCoMKgwqAgaWYgKCpjID09ICdcdCcpCj4gKyvCoMKgwqDCoMKgwqB7Cj4gKyvCoMKg wqDCoMKgwqDCoCAvKiBUaGUgcmV0dXJuZWQgZGlzcGxheSB3aWR0aCBpcyB0aGUgbnVtYmVyIG9m IHNwYWNlcyBpbnRvCj4gd2hpY2ggdGhlCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoCB0YWIgc2hv dWxkIGJlIGV4cGFuZGVkLsKgICovCj4gKyvCoMKgwqDCoMKgwqDCoCBmb3IgKGludCBpID0gMDsg aSAhPSB0aGlzX2Rpc3BsYXlfd2lkdGg7ICsraSkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBwcF9z cGFjZSAobV9wcCk7Cj4gKyvCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPiArK8KgwqDCoMKgwqDC oH0KPiArK8KgwqDCoMKgwqAgaWYgKCpjID09ICdcMCcgfHwgKmMgPT0gJ1xyJykKPiArwqDCoMKg wqDCoMKgwqB7Cj4gKy3CoMKgwqDCoMKgwqDCoCBsYXN0X25vbl93cyA9IGNvbF9ieXRlOwo+ICst wqDCoMKgwqDCoMKgwqAgaWYgKGZpcnN0X25vbl93cyA9PSBJTlRfTUFYKQo+ICstwqDCoMKgwqDC oMKgwqDCoMKgIGZpcnN0X25vbl93cyA9IGNvbF9ieXRlOwo+ICsrwqDCoMKgwqDCoMKgwqAgLyog Y3BwX3djd2lkdGgoKSBwcm9taXNlcyB0byByZXR1cm4gMSBmb3IgYWxsIGNvbnRyb2wKPiBieXRl cywgYW5kIHdlCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoCB3YW50IHRvIG91dHB1dCB0aGVzZSBh cyBhIHNpbmdsZSBzcGFjZSB0b28sIHNvIHRoaXMgY2FzZQo+IGlzCj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoCBhY3R1YWxseSB0aGUgc2FtZSBhcyB0aGUgJ1x0JyBjYXNlLsKgICovCj4gKyvCoMKg wqDCoMKgwqDCoCBnY2NfYXNzZXJ0ICh0aGlzX2Rpc3BsYXlfd2lkdGggPT0gMSk7Cj4gKyvCoMKg wqDCoMKgwqDCoCBwcF9zcGFjZSAobV9wcCk7Cj4gKyvCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsK PiArwqDCoMKgwqDCoMKgwqB9Cj4gKy3CoMKgwqDCoMKgIHBwX2NoYXJhY3RlciAobV9wcCwgYyk7 Cj4gKy3CoMKgwqDCoMKgIGxpbmUrKzsKPiArKwo+ICsrwqDCoMKgwqDCoCAvKiBXZSBoYXZlIGEg KHBvc3NpYmx5IG11bHRpYnl0ZSkgY2hhcmFjdGVyIHRvIG91dHB1dDsgdXBkYXRlCj4gdGhlIGxp bmUKPiArK8KgwqDCoMKgwqDCoCBib3VuZHMgaWYgaXQgaXMgbm90IHdoaXRlc3BhY2UuwqAgKi8K PiArK8KgwqDCoMKgwqAgaWYgKCpjICE9ICcgJykKPiArK8KgwqDCoMKgwqDCoHsKPiArK8KgwqDC oMKgwqDCoMKgIGxib3VuZHMubV9sYXN0X25vbl93c19kaXNwX2NvbCA9IGR3LmRpc3BsYXlfY29s c19wcm9jZXNzZWQKPiAoKTsKPiArK8KgwqDCoMKgwqDCoMKgIGlmIChsYm91bmRzLm1fZmlyc3Rf bm9uX3dzX2Rpc3BfY29sID09IElOVF9NQVgpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgbGJvdW5k cy5tX2ZpcnN0X25vbl93c19kaXNwX2NvbCA9IHN0YXJ0X2Rpc3BfY29sOwo+ICsrwqDCoMKgwqDC oMKgfQo+ICsrCj4gKyvCoMKgwqDCoMKgIC8qIE91dHB1dCB0aGUgY2hhcmFjdGVyLsKgICovCj4g KyvCoMKgwqDCoMKgIHdoaWxlIChjICE9IGR3Lm5leHRfYnl0ZSAoKSkgcHBfY2hhcmFjdGVyICht X3BwLCAqYysrKTsKPiArwqDCoMKgwqAgfQo+ICvCoMKgIHByaW50X25ld2xpbmUgKCk7Cj4gKy0K PiArLcKgIGxib3VuZHNfb3V0LT5tX2ZpcnN0X25vbl93cyA9IGZpcnN0X25vbl93czsKPiArLcKg IGxib3VuZHNfb3V0LT5tX2xhc3Rfbm9uX3dzID0gbGFzdF9ub25fd3M7Cj4gKyvCoCByZXR1cm4g bGJvdW5kczsKPiArIH0KPiArIAo+ICsgLyogRGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBwcmludCBh biBhbm5vdGF0aW9uIGxpbmUgZm9yIFJPVy4KPiArQEAgLTE1NzYsMTQgKzE2MDEsMTMgQEAgbGF5 b3V0OjpzdGFydF9hbm5vdGF0aW9uX2xpbmUgKGNoYXIgbWFyZwo+ICsgfQo+ICsgCj4gKyAvKiBQ cmludCBhIGxpbmUgY29uc2lzdGluZyBvZiB0aGUgY2FyZXQvdW5kZXJsaW5lcyBmb3IgdGhlIGdp dmVuCj4gKy3CoMKgIHNvdXJjZSBsaW5lLsKgIFRoaXMgZnVuY3Rpb24gd29ya3Mgd2l0aCBkaXNw bGF5IGNvbHVtbnMsIHJhdGhlcgo+IHRoYW4gYnl0ZQo+ICstwqDCoCBjb3VudHM7IGluIHBhcnRp Y3VsYXIsIExCT1VORFMgc2hvdWxkIGJlIGluIGRpc3BsYXkgY29sdW1uCj4gdW5pdHMuwqAgKi8K PiArK8KgwqAgc291cmNlIGxpbmUuwqAgKi8KPiArIAo+ICsgdm9pZAo+ICsgbGF5b3V0Ojpwcmlu dF9hbm5vdGF0aW9uX2xpbmUgKGxpbmVudW1fdHlwZSByb3csIGNvbnN0IGxpbmVfYm91bmRzCj4g bGJvdW5kcykKPiArIHsKPiArwqDCoCBpbnQgeF9ib3VuZCA9IGdldF94X2JvdW5kX2Zvcl9yb3cg KHJvdywgbV9leHBsb2MubV9kaXNwbGF5X2NvbCwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxib3VuZHMubV9s YXN0X25vbl93cyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsYm91bmRzLm1fbGFzdF9ub25fd3NfZGlzcF9j b2wpOwo+ICsgCj4gK8KgwqAgc3RhcnRfYW5ub3RhdGlvbl9saW5lICgpOwo+ICvCoMKgIHBwX3Nw YWNlIChtX3BwKTsKPiArQEAgLTE1OTMsOCArMTYxNyw4IEBAIGxheW91dDo6cHJpbnRfYW5ub3Rh dGlvbl9saW5lIChsaW5lbnVtX3QKPiArwqDCoMKgwqDCoMKgIGJvb2wgaW5fcmFuZ2VfcDsKPiAr wqDCoMKgwqDCoMKgIHBvaW50X3N0YXRlIHN0YXRlOwo+ICvCoMKgwqDCoMKgwqAgaW5fcmFuZ2Vf cCA9IGdldF9zdGF0ZV9hdF9wb2ludCAocm93LCBjb2x1bW4sCj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bGJvdW5kcy5tX2ZpcnN0X25vbl93cywKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsYm91bmRzLm1fbGFz dF9ub25fd3MsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBsYm91bmRzLm1fZmlyc3Rfbm9uX3dzX2Rp c3BfY29sLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gbGJvdW5kcy5tX2xhc3Rfbm9uX3dzX2Rpc3Bf Y29sLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDVV9ESVNQTEFZX0NPTFMsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICZzdGF0ZSk7Cj4gK8KgwqDCoMKgwqDCoCBpZiAoaW5fcmFuZ2VfcCkKPiArQEAgLTE2 MzEsMTIgKzE2NTUsMTQgQEAgbGF5b3V0OjpwcmludF9hbm5vdGF0aW9uX2xpbmUgKGxpbmVudW1f dAo+ICsgY2xhc3MgbGluZV9sYWJlbAo+ICsgewo+ICsgcHVibGljOgo+ICstwqAgbGluZV9sYWJl bCAoaW50IHN0YXRlX2lkeCwgaW50IGNvbHVtbiwgbGFiZWxfdGV4dCB0ZXh0KQo+ICsrwqAgbGlu ZV9sYWJlbCAoZGlhZ25vc3RpY19jb250ZXh0ICpjb250ZXh0LCBpbnQgc3RhdGVfaWR4LCBpbnQK PiBjb2x1bW4sCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxhYmVsX3RleHQgdGV4dCkKPiAr wqDCoCA6IG1fc3RhdGVfaWR4IChzdGF0ZV9pZHgpLCBtX2NvbHVtbiAoY29sdW1uKSwKPiArwqDC oMKgwqAgbV90ZXh0ICh0ZXh0KSwgbV9sYWJlbF9saW5lICgwKSwgbV9oYXNfdmJhciAodHJ1ZSkK PiArwqDCoCB7Cj4gK8KgwqDCoMKgIGNvbnN0IGludCBieXRlcyA9IHN0cmxlbiAodGV4dC5tX2J1 ZmZlcik7Cj4gKy3CoMKgwqAgbV9kaXNwbGF5X3dpZHRoID0gY3BwX2Rpc3BsYXlfd2lkdGggKHRl eHQubV9idWZmZXIsIGJ5dGVzKTsKPiArK8KgwqDCoCBtX2Rpc3BsYXlfd2lkdGgKPiArK8KgwqDC oMKgwqAgPSBjcHBfZGlzcGxheV93aWR0aCAodGV4dC5tX2J1ZmZlciwgYnl0ZXMsIGNvbnRleHQt PnRhYnN0b3ApOwo+ICvCoMKgIH0KPiArIAo+ICvCoMKgIC8qIFNvcnRpbmcgaXMgcHJpbWFyaWx5 IGJ5IGNvbHVtbiwgdGhlbiBieSBzdGF0ZSBpbmRleC7CoCAqLwo+ICtAQCAtMTY5Niw3ICsxNzIy LDcgQEAgbGF5b3V0OjpwcmludF9hbnlfbGFiZWxzIChsaW5lbnVtX3R5cGUgcgo+ICvCoMKgwqDC oMKgwqDCoGlmICh0ZXh0Lm1fYnVmZmVyID09IE5VTEwpCj4gK8KgwqDCoMKgwqDCoMKgwqAgY29u dGludWU7Cj4gKyAKPiArLcKgwqDCoMKgwqDCoGxhYmVscy5zYWZlX3B1c2ggKGxpbmVfbGFiZWwg KGksIGRpc3BfY29sLCB0ZXh0KSk7Cj4gKyvCoMKgwqDCoMKgwqBsYWJlbHMuc2FmZV9wdXNoIChs aW5lX2xhYmVsIChtX2NvbnRleHQsIGksIGRpc3BfY29sLCB0ZXh0KSk7Cj4gK8KgwqDCoMKgwqDC oCB9Cj4gK8KgwqAgfQo+ICsgCj4gK0BAIC0xOTc2LDcgKzIwMDIsOCBAQCBwdWJsaWM6Cj4gKyAK PiArIC8qIEdldCB0aGUgcmFuZ2Ugb2YgYnl0ZXMgb3IgZGlzcGxheSBjb2x1bW5zIHRoYXQgSElO VCB3b3VsZAo+IGFmZmVjdC7CoCAqLwo+ICsgc3RhdGljIGNvbHVtbl9yYW5nZQo+ICstZ2V0X2Fm ZmVjdGVkX3JhbmdlIChjb25zdCBmaXhpdF9oaW50ICpoaW50LCBlbnVtIGNvbHVtbl91bml0Cj4g Y29sX3VuaXQpCj4gKytnZXRfYWZmZWN0ZWRfcmFuZ2UgKGRpYWdub3N0aWNfY29udGV4dCAqY29u dGV4dCwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgZml4aXRf aGludCAqaGludCwgZW51bSBjb2x1bW5fdW5pdAo+IGNvbF91bml0KQo+ICsgewo+ICvCoMKgIGV4 cGFuZGVkX2xvY2F0aW9uIGV4cGxvY19zdGFydCA9IGV4cGFuZF9sb2NhdGlvbiAoaGludC0KPiA+ Z2V0X3N0YXJ0X2xvYyAoKSk7Cj4gK8KgwqAgZXhwYW5kZWRfbG9jYXRpb24gZXhwbG9jX2Zpbmlz aCA9IGV4cGFuZF9sb2NhdGlvbiAoaGludC0KPiA+Z2V0X25leHRfbG9jICgpKTsKPiArQEAgLTE5 ODYsMTEgKzIwMTMsMTMgQEAgZ2V0X2FmZmVjdGVkX3JhbmdlIChjb25zdCBmaXhpdF9oaW50ICpo aQo+ICvCoMKgIGludCBmaW5pc2hfY29sdW1uOwo+ICvCoMKgIGlmIChjb2xfdW5pdCA9PSBDVV9E SVNQTEFZX0NPTFMpCj4gK8KgwqDCoMKgIHsKPiArLcKgwqDCoMKgwqAgc3RhcnRfY29sdW1uID0g bG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVtbgo+IChleHBsb2Nfc3RhcnQpOwo+ICsrwqDC oMKgwqDCoCBzdGFydF9jb2x1bW4KPiArK8KgwqDCoMKgwqDCoD0gbG9jYXRpb25fY29tcHV0ZV9k aXNwbGF5X2NvbHVtbiAoZXhwbG9jX3N0YXJ0LCBjb250ZXh0LQo+ID50YWJzdG9wKTsKPiArwqDC oMKgwqDCoMKgIGlmIChoaW50LT5pbnNlcnRpb25fcCAoKSkKPiArwqDCoMKgwqDCoMKgwqBmaW5p c2hfY29sdW1uID0gc3RhcnRfY29sdW1uIC0gMTsKPiArwqDCoMKgwqDCoMKgIGVsc2UKPiArLcKg wqDCoMKgwqDCoGZpbmlzaF9jb2x1bW4gPSBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29sdW1u Cj4gKGV4cGxvY19maW5pc2gpOwo+ICsrwqDCoMKgwqDCoMKgZmluaXNoX2NvbHVtbgo+ICsrwqDC oMKgwqDCoMKgwqAgPSBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29sdW1uIChleHBsb2NfZmlu aXNoLCBjb250ZXh0LQo+ID50YWJzdG9wKTsKPiArwqDCoMKgwqAgfQo+ICvCoMKgIGVsc2UKPiAr wqDCoMKgwqAgewo+ICtAQCAtMjAwMywxMiArMjAzMiwxMiBAQCBnZXRfYWZmZWN0ZWRfcmFuZ2Ug KGNvbnN0IGZpeGl0X2hpbnQgKmhpCj4gKyAvKiBHZXQgdGhlIHJhbmdlIG9mIGRpc3BsYXkgY29s dW1ucyB0aGF0IHdvdWxkIGJlIHByaW50ZWQgZm9yCj4gSElOVC7CoCAqLwo+ICsgCj4gKyBzdGF0 aWMgY29sdW1uX3JhbmdlCj4gKy1nZXRfcHJpbnRlZF9jb2x1bW5zIChjb25zdCBmaXhpdF9oaW50 ICpoaW50KQo+ICsrZ2V0X3ByaW50ZWRfY29sdW1ucyAoZGlhZ25vc3RpY19jb250ZXh0ICpjb250 ZXh0LCBjb25zdCBmaXhpdF9oaW50Cj4gKmhpbnQpCj4gKyB7Cj4gK8KgwqAgZXhwYW5kZWRfbG9j YXRpb24gZXhwbG9jID0gZXhwYW5kX2xvY2F0aW9uIChoaW50LT5nZXRfc3RhcnRfbG9jCj4gKCkp Owo+ICstwqAgaW50IHN0YXJ0X2NvbHVtbiA9IGxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1 bW4gKGV4cGxvYyk7Cj4gKy3CoCBpbnQgaGludF93aWR0aCA9IGNwcF9kaXNwbGF5X3dpZHRoICho aW50LT5nZXRfc3RyaW5nICgpLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoaW50LT5nZXRfbGVuZ3RoICgp KTsKPiArK8KgIGludCBzdGFydF9jb2x1bW4gPSBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29s dW1uIChleHBsb2MsCj4gY29udGV4dC0+dGFic3RvcCk7Cj4gKyvCoCBpbnQgaGludF93aWR0aCA9 IGNwcF9kaXNwbGF5X3dpZHRoIChoaW50LT5nZXRfc3RyaW5nICgpLCBoaW50LQo+ID5nZXRfbGVu Z3RoICgpLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250ZXh0LT50YWJzdG9wKTsKPiArwqDCoCBpbnQg ZmluYWxfaGludF9jb2x1bW4gPSBzdGFydF9jb2x1bW4gKyBoaW50X3dpZHRoIC0gMTsKPiArwqDC oCBpZiAoaGludC0+aW5zZXJ0aW9uX3AgKCkpCj4gK8KgwqDCoMKgIHsKPiArQEAgLTIwMTgsNyAr MjA0Nyw4IEBAIGdldF9wcmludGVkX2NvbHVtbnMgKGNvbnN0IGZpeGl0X2hpbnQgKmgKPiArwqDC oMKgwqAgewo+ICvCoMKgwqDCoMKgwqAgZXhwbG9jID0gZXhwYW5kX2xvY2F0aW9uIChoaW50LT5n ZXRfbmV4dF9sb2MgKCkpOwo+ICvCoMKgwqDCoMKgwqAgLS1leHBsb2MuY29sdW1uOwo+ICstwqDC oMKgwqDCoCBpbnQgZmluaXNoX2NvbHVtbiA9IGxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1 bW4gKGV4cGxvYyk7Cj4gKyvCoMKgwqDCoMKgIGludCBmaW5pc2hfY29sdW1uCj4gKyvCoMKgwqDC oMKgwqA9IGxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1bW4gKGV4cGxvYywgY29udGV4dC0+ dGFic3RvcCk7Cj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gY29sdW1uX3JhbmdlIChzdGFydF9jb2x1 bW4sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IE1BWCAoZmluaXNoX2NvbHVtbiwgZmluYWxfaGludF9jb2x1bW4pKTsKPiArwqDCoMKgwqAgfQo+ ICtAQCAtMjAzNSwxMiArMjA2NSwxNCBAQCBwdWJsaWM6Cj4gK8KgwqAgY29ycmVjdGlvbiAoY29s dW1uX3JhbmdlIGFmZmVjdGVkX2J5dGVzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29s dW1uX3JhbmdlIGFmZmVjdGVkX2NvbHVtbnMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b2x1bW5fcmFuZ2UgcHJpbnRlZF9jb2x1bW5zLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b25zdCBjaGFyICpuZXdfdGV4dCwgc2l6ZV90IG5ld190ZXh0X2xlbikKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29uc3QgY2hhciAqbmV3X3RleHQsIHNpemVfdCBuZXdfdGV4dF9sZW4sCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCB0YWJzdG9wKQo+ICvCoMKgIDogbV9hZmZlY3Rl ZF9ieXRlcyAoYWZmZWN0ZWRfYnl0ZXMpLAo+ICvCoMKgwqDCoCBtX2FmZmVjdGVkX2NvbHVtbnMg KGFmZmVjdGVkX2NvbHVtbnMpLAo+ICvCoMKgwqDCoCBtX3ByaW50ZWRfY29sdW1ucyAocHJpbnRl ZF9jb2x1bW5zKSwKPiArwqDCoMKgwqAgbV90ZXh0ICh4c3RyZHVwIChuZXdfdGV4dCkpLAo+ICvC oMKgwqDCoCBtX2J5dGVfbGVuZ3RoIChuZXdfdGV4dF9sZW4pLAo+ICsrwqDCoMKgIG1fdGFic3Rv cCAodGFic3RvcCksCj4gK8KgwqDCoMKgIG1fYWxsb2Nfc3ogKG5ld190ZXh0X2xlbiArIDEpCj4g K8KgwqAgewo+ICvCoMKgwqDCoCBjb21wdXRlX2Rpc3BsYXlfY29scyAoKTsKPiArQEAgLTIwNTgs NyArMjA5MCw3IEBAIHB1YmxpYzoKPiArIAo+ICvCoMKgIHZvaWQgY29tcHV0ZV9kaXNwbGF5X2Nv bHMgKCkKPiArwqDCoCB7Cj4gKy3CoMKgwqAgbV9kaXNwbGF5X2NvbHMgPSBjcHBfZGlzcGxheV93 aWR0aCAobV90ZXh0LCBtX2J5dGVfbGVuZ3RoKTsKPiArK8KgwqDCoCBtX2Rpc3BsYXlfY29scyA9 IGNwcF9kaXNwbGF5X3dpZHRoIChtX3RleHQsIG1fYnl0ZV9sZW5ndGgsCj4gbV90YWJzdG9wKTsK PiArwqDCoCB9Cj4gKyAKPiArwqDCoCB2b2lkIG92ZXJ3cml0ZSAoaW50IGRzdF9vZmZzZXQsIGNv bnN0IGNoYXJfc3BhbiAmc3JjX3NwYW4pCj4gK0BAIC0yMDg2LDYgKzIxMTgsNyBAQCBwdWJsaWM6 Cj4gK8KgwqAgY2hhciAqbV90ZXh0Owo+ICvCoMKgIHNpemVfdCBtX2J5dGVfbGVuZ3RoOyAvKiBO b3QgaW5jbHVkaW5nIG51bGwtdGVybWluYXRvci7CoCAqLwo+ICvCoMKgIGludCBtX2Rpc3BsYXlf Y29sczsKPiArK8KgIGludCBtX3RhYnN0b3A7Cj4gK8KgwqAgc2l6ZV90IG1fYWxsb2Nfc3o7Cj4g KyB9Owo+ICsgCj4gK0BAIC0yMTIxLDEzICsyMTU0LDE1IEBAIGNvcnJlY3Rpb246OmVuc3VyZV90 ZXJtaW5hdGVkICgpCj4gKyBjbGFzcyBsaW5lX2NvcnJlY3Rpb25zCj4gKyB7Cj4gKyBwdWJsaWM6 Cj4gKy3CoCBsaW5lX2NvcnJlY3Rpb25zIChjb25zdCBjaGFyICpmaWxlbmFtZSwgbGluZW51bV90 eXBlIHJvdykKPiArLcKgIDogbV9maWxlbmFtZSAoZmlsZW5hbWUpLCBtX3JvdyAocm93KQo+ICsr wqAgbGluZV9jb3JyZWN0aW9ucyAoZGlhZ25vc3RpY19jb250ZXh0ICpjb250ZXh0LCBjb25zdCBj aGFyCj4gKmZpbGVuYW1lLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBs aW5lbnVtX3R5cGUgcm93KQo+ICsrwqDCoMKgIDogbV9jb250ZXh0IChjb250ZXh0KSwgbV9maWxl bmFtZSAoZmlsZW5hbWUpLCBtX3JvdyAocm93KQo+ICvCoMKgIHt9Cj4gK8KgwqAgfmxpbmVfY29y cmVjdGlvbnMgKCk7Cj4gKyAKPiArwqDCoCB2b2lkIGFkZF9oaW50IChjb25zdCBmaXhpdF9oaW50 ICpoaW50KTsKPiArIAo+ICsrwqAgZGlhZ25vc3RpY19jb250ZXh0ICptX2NvbnRleHQ7Cj4gK8Kg wqAgY29uc3QgY2hhciAqbV9maWxlbmFtZTsKPiArwqDCoCBsaW5lbnVtX3R5cGUgbV9yb3c7Cj4g K8KgwqAgYXV0b192ZWMgPGNvcnJlY3Rpb24gKj4gbV9jb3JyZWN0aW9uczsKPiArQEAgLTIxNzMs OSArMjIwOCwxMCBAQCBzb3VyY2VfbGluZTo6c291cmNlX2xpbmUgKGNvbnN0IGNoYXIgKmZpCj4g KyB2b2lkCj4gKyBsaW5lX2NvcnJlY3Rpb25zOjphZGRfaGludCAoY29uc3QgZml4aXRfaGludCAq aGludCkKPiArIHsKPiArLcKgIGNvbHVtbl9yYW5nZSBhZmZlY3RlZF9ieXRlcyA9IGdldF9hZmZl Y3RlZF9yYW5nZSAoaGludCwKPiBDVV9CWVRFUyk7Cj4gKy3CoCBjb2x1bW5fcmFuZ2UgYWZmZWN0 ZWRfY29sdW1ucyA9IGdldF9hZmZlY3RlZF9yYW5nZSAoaGludCwKPiBDVV9ESVNQTEFZX0NPTFMp Owo+ICstwqAgY29sdW1uX3JhbmdlIHByaW50ZWRfY29sdW1ucyA9IGdldF9wcmludGVkX2NvbHVt bnMgKGhpbnQpOwo+ICsrwqAgY29sdW1uX3JhbmdlIGFmZmVjdGVkX2J5dGVzID0gZ2V0X2FmZmVj dGVkX3JhbmdlIChtX2NvbnRleHQsCj4gaGludCwgQ1VfQllURVMpOwo+ICsrwqAgY29sdW1uX3Jh bmdlIGFmZmVjdGVkX2NvbHVtbnMgPSBnZXRfYWZmZWN0ZWRfcmFuZ2UgKG1fY29udGV4dCwKPiBo aW50LAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4g Q1VfRElTUExBWV9DT0xTKTsKPiArK8KgIGNvbHVtbl9yYW5nZSBwcmludGVkX2NvbHVtbnMgPSBn ZXRfcHJpbnRlZF9jb2x1bW5zIChtX2NvbnRleHQsCj4gaGludCk7Cj4gKyAKPiArwqDCoCAvKiBQ b3RlbnRpYWxseSBjb25zb2xpZGF0ZS7CoCAqLwo+ICvCoMKgIGlmICghbV9jb3JyZWN0aW9ucy5p c19lbXB0eSAoKSkKPiArQEAgLTIyNDMsNyArMjI3OSw4IEBAIGxpbmVfY29ycmVjdGlvbnM6OmFk ZF9oaW50IChjb25zdCBmaXhpdF8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZmZlY3Rl ZF9jb2x1bW5zLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW50ZWRfY29sdW1ucywK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoaW50LT5nZXRfc3RyaW5nICgpLAo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaGludC0+Z2V0X2xlbmd0aCAoKSkpOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaGludC0+Z2V0X2xlbmd0aCAoKSwKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG1fY29udGV4dC0+dGFic3RvcCkpOwo+ICsgfQo+ICsgCj4gKyAvKiBJZiB0aGVyZSBh cmUgYW55IGZpeGl0IGhpbnRzIG9uIHNvdXJjZSBsaW5lIFJPVywgcHJpbnQgdGhlbS4KPiArQEAg LTIyNTcsNyArMjI5NCw3IEBAIGxheW91dDo6cHJpbnRfdHJhaWxpbmdfZml4aXRzIChsaW5lbnVt X3QKPiArIHsKPiArwqDCoCAvKiBCdWlsZCBhIGxpc3Qgb2YgY29ycmVjdGlvbiBpbnN0YW5jZXMg Zm9yIHRoZSBsaW5lLAo+ICvCoMKgwqDCoMKgIHBvdGVudGlhbGx5IGNvbnNvbGlkYXRpbmcgaGlu dHMgKGZvciB0aGUgc2FrZSBvZgo+IHJlYWRhYmlsaXR5KS7CoCAqLwo+ICstwqAgbGluZV9jb3Jy ZWN0aW9ucyBjb3JyZWN0aW9ucyAobV9leHBsb2MuZmlsZSwgcm93KTsKPiArK8KgIGxpbmVfY29y cmVjdGlvbnMgY29ycmVjdGlvbnMgKG1fY29udGV4dCwgbV9leHBsb2MuZmlsZSwgcm93KTsKPiAr wqDCoCBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1fZml4aXRfaGludHMubGVuZ3RoICgp OyBpKyspCj4gK8KgwqDCoMKgIHsKPiArwqDCoMKgwqDCoMKgIGNvbnN0IGZpeGl0X2hpbnQgKmhp bnQgPSBtX2ZpeGl0X2hpbnRzW2ldOwo+ICtAQCAtMjQ5OSwxNSArMjUzNiwxMSBAQCBsYXlvdXQ6 OnByaW50X2xpbmUgKGxpbmVudW1fdHlwZSByb3cpCj4gK8KgwqAgaWYgKCFsaW5lKQo+ICvCoMKg wqDCoCByZXR1cm47Cj4gKyAKPiArLcKgIGxpbmVfYm91bmRzIGxib3VuZHM7Cj4gK8KgwqAgcHJp bnRfbGVhZGluZ19maXhpdHMgKHJvdyk7Cj4gKy3CoCBwcmludF9zb3VyY2VfbGluZSAocm93LCBs aW5lLmdldF9idWZmZXIgKCksIGxpbmUubGVuZ3RoICgpLAo+ICZsYm91bmRzKTsKPiArK8KgIGNv bnN0IGxpbmVfYm91bmRzIGxib3VuZHMKPiArK8KgwqDCoCA9IHByaW50X3NvdXJjZV9saW5lIChy b3csIGxpbmUuZ2V0X2J1ZmZlciAoKSwgbGluZS5sZW5ndGggKCkpOwo+ICvCoMKgIGlmIChzaG91 bGRfcHJpbnRfYW5ub3RhdGlvbl9saW5lX3AgKHJvdykpCj4gKy3CoMKgwqAgewo+ICstwqDCoMKg wqDCoCBpZiAobGJvdW5kcy5tX2ZpcnN0X25vbl93cyAhPSBJTlRfTUFYKQo+ICstwqDCoMKgwqDC oMKgbGJvdW5kcy5jb252ZXJ0X3RvX2Rpc3BsYXlfY29scyAobGluZSk7Cj4gKy3CoMKgwqDCoMKg IHByaW50X2Fubm90YXRpb25fbGluZSAocm93LCBsYm91bmRzKTsKPiArLcKgwqDCoCB9Cj4gKyvC oMKgwqAgcHJpbnRfYW5ub3RhdGlvbl9saW5lIChyb3csIGxib3VuZHMpOwo+ICvCoMKgIGlmICht X3Nob3dfbGFiZWxzX3ApCj4gK8KgwqDCoMKgIHByaW50X2FueV9sYWJlbHMgKHJvdyk7Cj4gK8Kg wqAgcHJpbnRfdHJhaWxpbmdfZml4aXRzIChyb3cpOwo+ICtAQCAtMjY3MCw5ICsyNzAzLDExIEBA IHRlc3RfbGF5b3V0X3hfb2Zmc2V0X2Rpc3BsYXlfdXRmOCAoY29uc3QKPiArIAo+ICvCoMKgIGNo YXJfc3BhbiBsc3BhbiA9IGxvY2F0aW9uX2dldF9zb3VyY2VfbGluZSAodG1wLmdldF9maWxlbmFt ZSAoKSwKPiAxKTsKPiArwqDCoCBBU1NFUlRfRVEgKGxpbmVfZGlzcGxheV9jb2xzLAo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqAgY3BwX2Rpc3BsYXlfd2lkdGggKGxzcGFuLmdldF9idWZmZXIgKCks IGxzcGFuLmxlbmd0aAo+ICgpKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHBfZGlzcGxh eV93aWR0aCAobHNwYW4uZ2V0X2J1ZmZlciAoKSwgbHNwYW4ubGVuZ3RoICgpLAo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVm X3RhYnN0b3ApKTsKPiArwqDCoCBBU1NFUlRfRVEgKGxpbmVfZGlzcGxheV9jb2xzLAo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqAgbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwYW5k X2xvY2F0aW9uCj4gKGxpbmVfZW5kKSkpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqAgbG9jYXRp b25fY29tcHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwYW5kX2xvY2F0aW9uCj4gKGxpbmVfZW5kKSwK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlZl90YWJzdG9wKSk7Cj4gK8KgwqAg QVNTRVJUX0VRICgwLCBtZW1jbXAgKGxzcGFuLmdldF9idWZmZXIgKCkgKyAoZW1vamlfY29sIC0g MSksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiXHhm MFx4OWZceDk4XHg4Mlx4ZjBceDlmXHg5OFx4ODIiLCA4KSk7Cj4gKyAKPiArQEAgLTI3NzQsNiAr MjgwOSwxMTEgQEAgdGVzdF9sYXlvdXRfeF9vZmZzZXRfZGlzcGxheV91dGY4IChjb25zdAo+ICsg Cj4gKyB9Cj4gKyAKPiArK3N0YXRpYyB2b2lkCj4gKyt0ZXN0X2xheW91dF94X29mZnNldF9kaXNw bGF5X3RhYiAoY29uc3QgbGluZV90YWJsZV9jYXNlICZjYXNlXykKPiArK3sKPiArK8KgIGNvbnN0 IGNoYXIgKmNvbnRlbnQKPiArK8KgwqDCoCA9ICJUaGlzIGxpbmUgaXMgdmVyeSBsb25nLCBzbyB0 aGF0IHdlIGNhbiB1c2UgaXQgdG8gdGVzdCB0aGUKPiBsb2dpYyBmb3IgIgo+ICsrwqDCoMKgwqDC oCAiY2xpcHBpbmcgbG9uZyBsaW5lcy7CoCBBbHNvIHRoaXM6IGBcdCcgaXMgYSB0YWIgdGhhdCBv Y2N1cGllcwo+IDEgYnl0ZSBhbmQgIgo+ICsrwqDCoMKgwqDCoCAiYSB2YXJpYWJsZSBudW1iZXIg b2YgZGlzcGxheSBjb2x1bW5zLCBzdGFydGluZyBhdCBjb2x1bW4KPiAjMTAzLlxuIjsKPiArKwo+ ICsrwqAgLyogTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBsaW5lLCBzdWJ0cmFjdGluZyBvbmUgdG8g cmVtb3ZlIHRoZQo+IG5ld2xpbmUuwqAgKi8KPiArK8KgIGNvbnN0IGludCBsaW5lX2J5dGVzID0g c3RybGVuIChjb250ZW50KSAtIDE7Cj4gKysKPiArKyAvKiBUaGUgY29sdW1uIHdoZXJlIHRoZSB0 YWIgYmVnaW5zLsKgIEJ5dGUgb3IgZGlzcGxheSBpcyB0aGUgc2FtZQo+IGFzIHRoZXJlIGFyZQo+ ICsrwqDCoMKgIG5vIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGVhcmxpZXIgb24gdGhlIGxpbmUuwqAg Ki8KPiArK8KgIGNvbnN0IGludCB0YWJfY29sID0gMTAzOwo+ICsrCj4gKyvCoCAvKiBFZmZlY3Rp dmUgZXh0cmEgc2l6ZSBvZiB0aGUgdGFiIGJleW9uZCB3aGF0IGEgc2luZ2xlIHNwYWNlCj4gd291 bGQgaGF2ZSB0YWtlbgo+ICsrwqDCoMKgwqAgdXAsIGluZGV4ZWQgYnkgdGFic3RvcC7CoCAqLwo+ ICsrwqAgc3RhdGljIGNvbnN0IGludCBudW1fdGFic3RvcHMgPSAxMTsKPiArK8KgIGludCBleHRy YV93aWR0aFtudW1fdGFic3RvcHNdOwo+ICsrwqAgZm9yIChpbnQgdGFic3RvcCA9IDE7IHRhYnN0 b3AgIT0gbnVtX3RhYnN0b3BzOyArK3RhYnN0b3ApCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDC oCBjb25zdCBpbnQgdGhpc190YWJfc2l6ZSA9IHRhYnN0b3AgLSAodGFiX2NvbCAtIDEpICUgdGFi c3RvcDsKPiArK8KgwqDCoMKgwqAgZXh0cmFfd2lkdGhbdGFic3RvcF0gPSB0aGlzX3RhYl9zaXpl IC0gMTsKPiArK8KgwqDCoCB9Cj4gKyvCoCAvKiBFeGFtcGxlIG9mIHRoaXMgY2FsY3VsYXRpb246 IGlmIHRhYnN0b3AgaXMgMTAsIHRoZSB0YWIKPiBzdGFydGluZyBhdCBjb2x1bW4KPiArK8KgwqDC oMKgICMxMDMgaGFzIHRvIGV4cGFuZCBpbnRvIDggc3BhY2VzLCBjb3ZlcmluZyBjb2x1bW5zIDEw My0xMTAsIHNvCj4gdGhhdCB0aGUKPiArK8KgwqDCoMKgIG5leHQgY2hhcmFjdGVyIGlzIGF0IGNv bHVtbiAjMTExLsKgIFNvIGl0IHRha2VzIHVwIDcgbW9yZQo+IGNvbHVtbnMgdGhhbgo+ICsrwqDC oMKgwqAgYSBzcGFjZSB3b3VsZCBoYXZlIHRha2VuIHVwLsKgICovCj4gKyvCoCBBU1NFUlRfRVEg KDcsIGV4dHJhX3dpZHRoWzEwXSk7Cj4gKysKPiArK8KgIHRlbXBfc291cmNlX2ZpbGUgdG1wIChT RUxGVEVTVF9MT0NBVElPTiwgIi5jIiwgY29udGVudCk7Cj4gKyvCoCBsaW5lX3RhYmxlX3Rlc3Qg bHR0IChjYXNlXyk7Cj4gKysKPiArK8KgIGxpbmVtYXBfYWRkIChsaW5lX3RhYmxlLCBMQ19FTlRF UiwgZmFsc2UsIHRtcC5nZXRfZmlsZW5hbWUgKCksCj4gMSk7Cj4gKysKPiArK8KgIGxvY2F0aW9u X3QgbGluZV9lbmQgPSBsaW5lbWFwX3Bvc2l0aW9uX2Zvcl9jb2x1bW4gKGxpbmVfdGFibGUsCj4g bGluZV9ieXRlcyk7Cj4gKysKPiArK8KgIC8qIERvbid0IGF0dGVtcHQgdG8gcnVuIHRoZSB0ZXN0 cyBpZiBjb2x1bW4gZGF0YSBtaWdodCBiZQo+IHVuYXZhaWxhYmxlLsKgICovCj4gKyvCoCBpZiAo bGluZV9lbmQgPiBMSU5FX01BUF9NQVhfTE9DQVRJT05fV0lUSF9DT0xTKQo+ICsrwqDCoMKgIHJl dHVybjsKPiArKwo+ICsrwqAgLyogQ2hlY2sgdGhhdCBjcHBfZGlzcGxheV93aWR0aCBoYW5kbGVz IHRoZSB0YWJzIGFzIGV4cGVjdGVkLsKgICovCj4gKyvCoCBjaGFyX3NwYW4gbHNwYW4gPSBsb2Nh dGlvbl9nZXRfc291cmNlX2xpbmUgKHRtcC5nZXRfZmlsZW5hbWUgKCksCj4gMSk7Cj4gKyvCoCBB U1NFUlRfRVEgKCdcdCcsICoobHNwYW4uZ2V0X2J1ZmZlciAoKSArICh0YWJfY29sIC0gMSkpKTsK PiArK8KgIGZvciAoaW50IHRhYnN0b3AgPSAxOyB0YWJzdG9wICE9IG51bV90YWJzdG9wczsgKyt0 YWJzdG9wKQo+ICsrwqDCoMKgIHsKPiArK8KgwqDCoMKgwqAgQVNTRVJUX0VRIChsaW5lX2J5dGVz ICsgZXh0cmFfd2lkdGhbdGFic3RvcF0sCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNwcF9kaXNwbGF5X3dpZHRoIChsc3Bhbi5nZXRfYnVmZmVyICgpLCBsc3Bhbi5sZW5ndGgKPiAo KSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0YWJzdG9wKSk7Cj4gKyvCoMKgwqDCoMKgIEFTU0VSVF9FUSAobGlu ZV9ieXRlcyArIGV4dHJhX3dpZHRoW3RhYnN0b3BdLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29sdW1uIChleHBhbmRfbG9jYXRpb24K PiAobGluZV9lbmQpLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0 YWJzdG9wKSk7Cj4gKyvCoMKgwqAgfQo+ICsrCj4gKyvCoCAvKiBDaGVjayB0aGF0IHRoZSB0YWIg aXMgZXhwYW5kZWQgdG8gdGhlIGV4cGVjdGVkIG51bWJlciBvZgo+IHNwYWNlcy7CoCAqLwo+ICsr wqAgcmljaF9sb2NhdGlvbiByaWNobG9jIChsaW5lX3RhYmxlLAo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1u IChsaW5lX3RhYmxlLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHRhYl9jb2wgKyAxKSk7Cj4gKyvCoCBmb3IgKGludCB0YWJzdG9wID0gMTsgdGFic3Rv cCAhPSBudW1fdGFic3RvcHM7ICsrdGFic3RvcCkKPiArK8KgwqDCoCB7Cj4gKyvCoMKgwqDCoMKg IHRlc3RfZGlhZ25vc3RpY19jb250ZXh0IGRjOwo+ICsrwqDCoMKgwqDCoCBkYy50YWJzdG9wID0g dGFic3RvcDsKPiArK8KgwqDCoMKgwqAgbGF5b3V0IHRlc3RfbGF5b3V0ICgmZGMsICZyaWNobG9j LCBES19FUlJPUik7Cj4gKyvCoMKgwqDCoMKgIHRlc3RfbGF5b3V0LnByaW50X2xpbmUgKDEpOwo+ ICsrwqDCoMKgwqDCoCBjb25zdCBjaGFyICpvdXQgPSBwcF9mb3JtYXR0ZWRfdGV4dCAoZGMucHJp bnRlcik7Cj4gKyvCoMKgwqDCoMKgIEFTU0VSVF9FUSAoTlVMTCwgc3RyY2hyIChvdXQsICdcdCcp KTsKPiArK8KgwqDCoMKgwqAgY29uc3QgY2hhciAqbGVmdF9xdW90ZSA9IHN0cmNociAob3V0LCAn YCcpOwo+ICsrwqDCoMKgwqDCoCBjb25zdCBjaGFyICpyaWdodF9xdW90ZSA9IHN0cmNociAob3V0 LCAnXCcnKTsKPiArK8KgwqDCoMKgwqAgQVNTRVJUX05FIChOVUxMLCBsZWZ0X3F1b3RlKTsKPiAr K8KgwqDCoMKgwqAgQVNTRVJUX05FIChOVUxMLCByaWdodF9xdW90ZSk7Cj4gKyvCoMKgwqDCoMKg IEFTU0VSVF9FUSAocmlnaHRfcXVvdGUgLSBsZWZ0X3F1b3RlLCBleHRyYV93aWR0aFt0YWJzdG9w XSArCj4gMik7Cj4gKyvCoMKgwqAgfQo+ICsrCj4gKyvCoCAvKiBDaGVjayB0aGF0IHRoZSBsaW5l IGlzIG9mZnNldCBwcm9wZXJseSBhbmQgdGhhdCB0aGUgdGFiIGlzCj4gYnJva2VuIHVwCj4gKyvC oMKgwqDCoCBpbnRvIHRoZSBleHBlY3RlZCBudW1iZXIgb2Ygc3BhY2VzIHdoZW4gaXQgaXMgdGhl IGxhc3QKPiBjaGFyYWN0ZXIgc2tpcHBlZAo+ICsrwqDCoMKgwqAgb3Zlci7CoCAqLwo+ICsrwqAg Zm9yIChpbnQgdGFic3RvcCA9IDE7IHRhYnN0b3AgIT0gbnVtX3RhYnN0b3BzOyArK3RhYnN0b3Ap Cj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDCoCB0ZXN0X2RpYWdub3N0aWNfY29udGV4dCBkYzsK PiArK8KgwqDCoMKgwqAgZGMudGFic3RvcCA9IHRhYnN0b3A7Cj4gKyvCoMKgwqDCoMKgIHN0YXRp YyBjb25zdCBpbnQgc21hbGxfd2lkdGggPSAyNDsKPiArK8KgwqDCoMKgwqAgZGMuY2FyZXRfbWF4 X3dpZHRoID0gc21hbGxfd2lkdGggLSA0Owo+ICsrwqDCoMKgwqDCoCBkYy5taW5fbWFyZ2luX3dp ZHRoID0gdGVzdF9sZWZ0X21hcmdpbiAtIHRlc3RfbGluZW51bV9zZXAgKwo+IDE7Cj4gKyvCoMKg wqDCoMKgIGRjLnNob3dfbGluZV9udW1iZXJzX3AgPSB0cnVlOwo+ICsrwqDCoMKgwqDCoCBsYXlv dXQgdGVzdF9sYXlvdXQgKCZkYywgJnJpY2hsb2MsIERLX0VSUk9SKTsKPiArK8KgwqDCoMKgwqAg dGVzdF9sYXlvdXQucHJpbnRfbGluZSAoMSk7Cj4gKysKPiArK8KgwqDCoMKgwqAgLyogV2UgaGF2 ZSBhcnJhbmdlZCB0aGluZ3Mgc28gdGhhdCB0d28gY29sdW1ucyB3aWxsIGJlCj4gcHJpbnRlZCBi ZWZvcmUKPiArK8KgwqDCoMKgwqDCoCB0aGUgY2FyZXQuwqAgSWYgdGhlIHRhYiByZXN1bHRzIGlu IG1vcmUgdGhhbiBvbmUgc3BhY2UsIHRoaXMKPiBzaG91bGQKPiArK8KgwqDCoMKgwqDCoCBwcm9k dWNlIHR3byBzcGFjZXMgaW4gdGhlIG91dHB1dDsgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGEKPiBz aW5nbGUgc3BhY2UKPiArK8KgwqDCoMKgwqDCoCBwcmVjZWRlZCBieSB0aGUgb3BlbmluZyBxdW90 ZSBiZWZvcmUgdGhlIHRhYiBjaGFyYWN0ZXIuwqAgKi8KPiArK8KgwqDCoMKgwqAgY29uc3QgY2hh ciAqb3V0cHV0MQo+ICsrwqDCoMKgwqDCoMKgPSAiwqDCoCAxIHzCoMKgICcgaXMgYSB0YWIgdGhh dCBvY2N1cGllcyAxIGJ5dGUgYW5kIGEgdmFyaWFibGUKPiBudW1iZXIgb2YgIgo+ICsrwqDCoMKg wqDCoMKgwqAgImRpc3BsYXkgY29sdW1ucywgc3RhcnRpbmcgYXQgY29sdW1uICMxMDMuXG4iCj4g KyvCoMKgwqDCoMKgwqDCoCAiwqDCoMKgwqAgfMKgwqAgXlxuXG4iOwo+ICsrwqDCoMKgwqDCoCBj b25zdCBjaGFyICpvdXRwdXQyCj4gKyvCoMKgwqDCoMKgwqA9ICLCoMKgIDEgfCBgICcgaXMgYSB0 YWIgdGhhdCBvY2N1cGllcyAxIGJ5dGUgYW5kIGEgdmFyaWFibGUKPiBudW1iZXIgb2YgIgo+ICsr wqDCoMKgwqDCoMKgwqAgImRpc3BsYXkgY29sdW1ucywgc3RhcnRpbmcgYXQgY29sdW1uICMxMDMu XG4iCj4gKyvCoMKgwqDCoMKgwqDCoCAiwqDCoMKgwqAgfMKgwqAgXlxuXG4iOwo+ICsrwqDCoMKg wqDCoCBjb25zdCBjaGFyICpleHBlY3RlZF9vdXRwdXQgPSAoZXh0cmFfd2lkdGhbdGFic3RvcF0g PyBvdXRwdXQxCj4gOiBvdXRwdXQyKTsKPiArK8KgwqDCoMKgwqAgQVNTRVJUX1NUUkVRIChleHBl Y3RlZF9vdXRwdXQsIHBwX2Zvcm1hdHRlZF90ZXh0Cj4gKGRjLnByaW50ZXIpKTsKPiArK8KgwqDC oCB9Cj4gKyt9Cj4gKysKPiArKwo+ICsgLyogVmVyaWZ5IHRoYXQgZGlhZ25vc3RpY19zaG93X2xv Y3VzIHdvcmtzIHNhbmVseSBvbgo+IFVOS05PV05fTE9DQVRJT04uwqAgKi8KPiArIAo+ICsgc3Rh dGljIHZvaWQKPiArQEAgLTM4NTQsNiArMzk5NCwyNyBAQCB0ZXN0X29uZV9saW5lcl9sYWJlbHNf dXRmOCAoKQo+ICvCoMKgIH0KPiArIH0KPiArIAo+ICsrLyogTWFrZSBzdXJlIHRoYXQgY29sb3Jp emF0aW9uIGNvZGVzIGRvbid0IGludGVycnVwdCBhIG11bHRpYnl0ZQo+ICsrwqDCoCBzZXF1ZW5j ZSwgd2hpY2ggd291bGQgY29ycnVwdCBpdC7CoCAqLwo+ICsrc3RhdGljIHZvaWQKPiArK3Rlc3Rf b25lX2xpbmVyX2NvbG9yaXplZF91dGY4ICgpCj4gKyt7Cj4gKyvCoCB0ZXN0X2RpYWdub3N0aWNf Y29udGV4dCBkYzsKPiArK8KgIGRjLmNvbG9yaXplX3NvdXJjZV9wID0gdHJ1ZTsKPiArK8KgIGRp YWdub3N0aWNfY29sb3JfaW5pdCAoJmRjLCBESUFHTk9TVElDU19DT0xPUl9ZRVMpOwo+ICsrwqAg Y29uc3QgbG9jYXRpb25fdCBwaSA9IGxpbmVtYXBfcG9zaXRpb25fZm9yX2NvbHVtbiAobGluZV90 YWJsZSwKPiAxMik7Cj4gKyvCoCByaWNoX2xvY2F0aW9uIHJpY2hsb2MgKGxpbmVfdGFibGUsIHBp KTsKPiArK8KgIGRpYWdub3N0aWNfc2hvd19sb2N1cyAoJmRjLCAmcmljaGxvYywgREtfRVJST1Ip Owo+ICsrCj4gKyvCoCAvKiBJbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdGhlIHRlc3QgZGVwZW5k IG9uIGV4YWN0bHkgaG93IHRoZQo+IGNvbG9yaXphdGlvbgo+ICsrwqDCoMKgwqAgd2FzIGVmZmVj dGVkLCBqdXN0IGNvbmZpcm0gdGhlcmUgYXJlIHR3byBwaSBjaGFyYWN0ZXJzIGluIHRoZQo+IG91 dHB1dC7CoCAqLwo+ICsrwqAgY29uc3QgY2hhciAqcmVzdWx0ID0gcHBfZm9ybWF0dGVkX3RleHQg KGRjLnByaW50ZXIpOwo+ICsrwqAgY29uc3QgY2hhciAqbnVsbF90ZXJtID0gcmVzdWx0ICsgc3Ry bGVuIChyZXN1bHQpOwo+ICsrwqAgY29uc3QgY2hhciAqZmlyc3RfcGkgPSBzdHJzdHIgKHJlc3Vs dCwgIlx4Y2ZceDgwIik7Cj4gKyvCoCBBU1NFUlRfVFJVRSAoZmlyc3RfcGkgJiYgZmlyc3RfcGkg PD0gbnVsbF90ZXJtIC0gMik7Cj4gKyvCoCBBU1NFUlRfU1RSX0NPTlRBSU5TIChmaXJzdF9waSAr IDIsICJceGNmXHg4MCIpOwo+ICsrfQo+ICsrCj4gKyAvKiBSdW4gdGhlIHZhcmlvdXMgb25lLWxp bmVyIHRlc3RzLsKgICovCj4gKyAKPiArIHN0YXRpYyB2b2lkCj4gK0BAIC0zODg0LDggKzQwNDUs MTAgQEAgdGVzdF9kaWFnbm9zdGljX3Nob3dfbG9jdXNfb25lX2xpbmVyX3V0Zgo+ICvCoMKgIEFT U0VSVF9FUSAoMzEsIExPQ0FUSU9OX0NPTFVNTiAobGluZV9lbmQpKTsKPiArIAo+ICvCoMKgIGNo YXJfc3BhbiBsc3BhbiA9IGxvY2F0aW9uX2dldF9zb3VyY2VfbGluZSAodG1wLmdldF9maWxlbmFt ZSAoKSwKPiAxKTsKPiArLcKgIEFTU0VSVF9FUSAoMjUsIGNwcF9kaXNwbGF5X3dpZHRoIChsc3Bh bi5nZXRfYnVmZmVyICgpLAo+IGxzcGFuLmxlbmd0aCAoKSkpOwo+ICstwqAgQVNTRVJUX0VRICgy NSwgbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwYW5kX2xvY2F0aW9uCj4gKGxp bmVfZW5kKSkpOwo+ICsrwqAgQVNTRVJUX0VRICgyNSwgY3BwX2Rpc3BsYXlfd2lkdGggKGxzcGFu LmdldF9idWZmZXIgKCksCj4gbHNwYW4ubGVuZ3RoICgpLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlZl90YWJz dG9wKSk7Cj4gKyvCoCBBU1NFUlRfRVEgKDI1LCBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29s dW1uIChleHBhbmRfbG9jYXRpb24KPiAobGluZV9lbmQpLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkZWZfdGFic3RvcCkpOwo+ICsgCj4gK8KgwqAgdGVzdF9vbmVf bGluZXJfc2ltcGxlX2NhcmV0X3V0ZjggKCk7Cj4gK8KgwqAgdGVzdF9vbmVfbGluZXJfY2FyZXRf YW5kX3JhbmdlX3V0ZjggKCk7Cj4gK0BAIC0zOTAwLDYgKzQwNjMsNyBAQCB0ZXN0X2RpYWdub3N0 aWNfc2hvd19sb2N1c19vbmVfbGluZXJfdXRmCj4gK8KgwqAgdGVzdF9vbmVfbGluZXJfbWFueV9m aXhpdHNfMV91dGY4ICgpOwo+ICvCoMKgIHRlc3Rfb25lX2xpbmVyX21hbnlfZml4aXRzXzJfdXRm OCAoKTsKPiArwqDCoCB0ZXN0X29uZV9saW5lcl9sYWJlbHNfdXRmOCAoKTsKPiArK8KgIHRlc3Rf b25lX2xpbmVyX2NvbG9yaXplZF91dGY4ICgpOwo+ICsgfQo+ICsgCj4gKyAvKiBWZXJpZnkgdGhh dCBnY2NfcmljaF9sb2NhdGlvbjo6YWRkX2xvY2F0aW9uX2lmX25lYXJieSB3b3Jrcy7CoCAqLwo+ ICtAQCAtNDI3MiwyNSArNDQzNiwyOCBAQCB0ZXN0X292ZXJsYXBwZWRfZml4aXRfcHJpbnRpbmcg KGNvbnN0IGxpCj4gK8KgwqDCoMKgIC8qIFVuaXQtdGVzdCB0aGUgbGluZV9jb3JyZWN0aW9ucyBt YWNoaW5lcnkuwqAgKi8KPiArwqDCoMKgwqAgQVNTRVJUX0VRICgzLCByaWNobG9jLmdldF9udW1f Zml4aXRfaGludHMgKCkpOwo+ICvCoMKgwqDCoCBjb25zdCBmaXhpdF9oaW50ICpoaW50XzAgPSBy aWNobG9jLmdldF9maXhpdF9oaW50ICgwKTsKPiArLcKgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9y YW5nZSAoMTIsIDEyKSwgZ2V0X2FmZmVjdGVkX3JhbmdlIChoaW50XzAsCj4gQ1VfQllURVMpKTsK PiArwqDCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDEyLCAxMiksCj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3Jh bmdlIChoaW50XzAsCj4gQ1VfRElTUExBWV9DT0xTKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChj b2x1bW5fcmFuZ2UgKDEyLCAyMiksIGdldF9wcmludGVkX2NvbHVtbnMKPiAoaGludF8wKSk7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRf MCwgQ1VfQllURVMpKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5nZSAoMTIsIDEy KSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKCZkYywg aGludF8wLCBDVV9ESVNQTEFZX0NPTFMpKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9y YW5nZSAoMTIsIDIyKSwgZ2V0X3ByaW50ZWRfY29sdW1ucyAoJmRjLAo+IGhpbnRfMCkpOwo+ICvC oMKgwqDCoCBjb25zdCBmaXhpdF9oaW50ICpoaW50XzEgPSByaWNobG9jLmdldF9maXhpdF9oaW50 ICgxKTsKPiArLcKgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5nZSAoMTgsIDE4KSwgZ2V0X2Fm ZmVjdGVkX3JhbmdlIChoaW50XzEsCj4gQ1VfQllURVMpKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VR IChjb2x1bW5fcmFuZ2UgKDE4LCAxOCksCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlIChoaW50XzEsCj4gQ1VfRElT UExBWV9DT0xTKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDE4LCAyMCks IGdldF9wcmludGVkX2NvbHVtbnMKPiAoaGludF8xKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRfMSwgQ1VfQllURVMpKTsKPiArK8Kg wqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5nZSAoMTgsIDE4KSwKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKCZkYywgaGludF8xLCBDVV9ESVNQTEFZX0NP TFMpKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5nZSAoMTgsIDIwKSwgZ2V0X3By aW50ZWRfY29sdW1ucyAoJmRjLAo+IGhpbnRfMSkpOwo+ICvCoMKgwqDCoCBjb25zdCBmaXhpdF9o aW50ICpoaW50XzIgPSByaWNobG9jLmdldF9maXhpdF9oaW50ICgyKTsKPiArLcKgwqDCoCBBU1NF UlRfRVEgKGNvbHVtbl9yYW5nZSAoMjksIDI4KSwgZ2V0X2FmZmVjdGVkX3JhbmdlIChoaW50XzIs Cj4gQ1VfQllURVMpKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDI5LCAy OCksCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z2V0X2FmZmVjdGVkX3JhbmdlIChoaW50XzIsCj4gQ1VfRElTUExBWV9DT0xTKSk7Cj4gKy3CoMKg wqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDI5LCAyOSksIGdldF9wcmludGVkX2NvbHVtbnMK PiAoaGludF8yKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3Jh bmdlICgmZGMsIGhpbnRfMiwgQ1VfQllURVMpKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNvbHVt bl9yYW5nZSAoMjksIDI4KSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0 ZWRfcmFuZ2UgKCZkYywgaGludF8yLCBDVV9ESVNQTEFZX0NPTFMpKTsKPiArK8KgwqDCoCBBU1NF UlRfRVEgKGNvbHVtbl9yYW5nZSAoMjksIDI5KSwgZ2V0X3ByaW50ZWRfY29sdW1ucyAoJmRjLAo+ IGhpbnRfMikpOwo+ICsgCj4gK8KgwqDCoMKgIC8qIEFkZCBlYWNoIGhpbnQgaW4gdHVybiB0byBh IGxpbmVfY29ycmVjdGlvbnMgaW5zdGFuY2UsCj4gK8KgwqDCoMKgwqDCoMKgIGFuZCB2ZXJpZnkg dGhhdCB0aGV5IGFyZSBjb25zb2xpZGF0ZWQgaW50byBvbmUgY29ycmVjdGlvbgo+IGluc3RhbmNl Cj4gK8KgwqDCoMKgwqDCoMKgIGFzIGV4cGVjdGVkLsKgICovCj4gKy3CoMKgwqAgbGluZV9jb3Jy ZWN0aW9ucyBsYyAodG1wLmdldF9maWxlbmFtZSAoKSwgMSk7Cj4gKyvCoMKgwqAgbGluZV9jb3Jy ZWN0aW9ucyBsYyAoJmRjLCB0bXAuZ2V0X2ZpbGVuYW1lICgpLCAxKTsKPiArIAo+ICvCoMKgwqDC oCAvKiBUaGUgZmlyc3QgcmVwbGFjZSBoaW50IGJ5IGl0c2VsZi7CoCAqLwo+ICvCoMKgwqDCoCBs Yy5hZGRfaGludCAoaGludF8wKTsKPiArQEAgLTQ0ODQsMjUgKzQ2NTEsMjggQEAgdGVzdF9vdmVy bGFwcGVkX2ZpeGl0X3ByaW50aW5nX3V0ZjggKGNvbgo+ICvCoMKgwqDCoCAvKiBVbml0LXRlc3Qg dGhlIGxpbmVfY29ycmVjdGlvbnMgbWFjaGluZXJ5LsKgICovCj4gK8KgwqDCoMKgIEFTU0VSVF9F USAoMywgcmljaGxvYy5nZXRfbnVtX2ZpeGl0X2hpbnRzICgpKTsKPiArwqDCoMKgwqAgY29uc3Qg Zml4aXRfaGludCAqaGludF8wID0gcmljaGxvYy5nZXRfZml4aXRfaGludCAoMCk7Cj4gKy3CoMKg wqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDE0LCAxNCksIGdldF9hZmZlY3RlZF9yYW5nZSAo aGludF8wLAo+IENVX0JZVEVTKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2Ug KDE0LCAxNCksCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3Jhbmdl ICgmZGMsIGhpbnRfMCwgQ1VfQllURVMpKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5f cmFuZ2UgKDEyLCAxMiksCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlIChoaW50XzAsCj4gQ1VfRElTUExBWV9DT0xT KSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDEyLCAyMiksIGdldF9wcmlu dGVkX2NvbHVtbnMKPiAoaGludF8wKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0 X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRfMCwgQ1VfRElTUExBWV9DT0xTKSk7Cj4gKyvCoMKg wqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDEyLCAyMiksIGdldF9wcmludGVkX2NvbHVtbnMg KCZkYywKPiBoaW50XzApKTsKPiArwqDCoMKgwqAgY29uc3QgZml4aXRfaGludCAqaGludF8xID0g cmljaGxvYy5nZXRfZml4aXRfaGludCAoMSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5f cmFuZ2UgKDIyLCAyMiksIGdldF9hZmZlY3RlZF9yYW5nZSAoaGludF8xLAo+IENVX0JZVEVTKSk7 Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDIyLCAyMiksCj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRfMSwgQ1VfQllU RVMpKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDE4LCAxOCksCj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVj dGVkX3JhbmdlIChoaW50XzEsCj4gQ1VfRElTUExBWV9DT0xTKSk7Cj4gKy3CoMKgwqAgQVNTRVJU X0VRIChjb2x1bW5fcmFuZ2UgKDE4LCAyMCksIGdldF9wcmludGVkX2NvbHVtbnMKPiAoaGludF8x KSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMs IGhpbnRfMSwgQ1VfRElTUExBWV9DT0xTKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5f cmFuZ2UgKDE4LCAyMCksIGdldF9wcmludGVkX2NvbHVtbnMgKCZkYywKPiBoaW50XzEpKTsKPiAr wqDCoMKgwqAgY29uc3QgZml4aXRfaGludCAqaGludF8yID0gcmljaGxvYy5nZXRfZml4aXRfaGlu dCAoMik7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDM1LCAzNCksIGdldF9h ZmZlY3RlZF9yYW5nZSAoaGludF8yLAo+IENVX0JZVEVTKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VR IChjb2x1bW5fcmFuZ2UgKDM1LCAzNCksCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0 X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRfMiwgQ1VfQllURVMpKTsKPiArwqDCoMKgwqAgQVNT RVJUX0VRIChjb2x1bW5fcmFuZ2UgKDMwLCAyOSksCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlIChoaW50XzIsCj4g Q1VfRElTUExBWV9DT0xTKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDMw LCAzMCksIGdldF9wcmludGVkX2NvbHVtbnMKPiAoaGludF8yKSk7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRfMiwgQ1VfRElTUExBWV9D T0xTKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDMwLCAzMCksIGdldF9w cmludGVkX2NvbHVtbnMgKCZkYywKPiBoaW50XzIpKTsKPiArIAo+ICvCoMKgwqDCoCAvKiBBZGQg ZWFjaCBoaW50IGluIHR1cm4gdG8gYSBsaW5lX2NvcnJlY3Rpb25zIGluc3RhbmNlLAo+ICvCoMKg wqDCoMKgwqDCoCBhbmQgdmVyaWZ5IHRoYXQgdGhleSBhcmUgY29uc29saWRhdGVkIGludG8gb25l IGNvcnJlY3Rpb24KPiBpbnN0YW5jZQo+ICvCoMKgwqDCoMKgwqDCoCBhcyBleHBlY3RlZC7CoCAq Lwo+ICstwqDCoMKgIGxpbmVfY29ycmVjdGlvbnMgbGMgKHRtcC5nZXRfZmlsZW5hbWUgKCksIDEp Owo+ICsrwqDCoMKgIGxpbmVfY29ycmVjdGlvbnMgbGMgKCZkYywgdG1wLmdldF9maWxlbmFtZSAo KSwgMSk7Cj4gKyAKPiArwqDCoMKgwqAgLyogVGhlIGZpcnN0IHJlcGxhY2UgaGludCBieSBpdHNl bGYuwqAgKi8KPiArwqDCoMKgwqAgbGMuYWRkX2hpbnQgKGhpbnRfMCk7Cj4gK0BAIC00Njg5LDYg KzQ4NTksOCBAQCB0ZXN0X292ZXJsYXBwZWRfZml4aXRfcHJpbnRpbmdfMiAoY29uc3QKPiArIAo+ ICvCoMKgIC8qIFR3byBpbnNlcnRpb25zLCBpbiB0aGUgd3Jvbmcgb3JkZXIuwqAgKi8KPiArwqDC oCB7Cj4gKyvCoMKgwqAgdGVzdF9kaWFnbm9zdGljX2NvbnRleHQgZGM7Cj4gKysKPiArwqDCoMKg wqAgcmljaF9sb2NhdGlvbiByaWNobG9jIChsaW5lX3RhYmxlLCBjb2xfMjApOwo+ICvCoMKgwqDC oCByaWNobG9jLmFkZF9maXhpdF9pbnNlcnRfYmVmb3JlIChjb2xfMjMsICJ7Iik7Cj4gK8KgwqDC oMKgIHJpY2hsb2MuYWRkX2ZpeGl0X2luc2VydF9iZWZvcmUgKGNvbF8yMSwgIn0iKTsKPiArQEAg LTQ2OTYsMTQgKzQ4NjgsMTUgQEAgdGVzdF9vdmVybGFwcGVkX2ZpeGl0X3ByaW50aW5nXzIgKGNv bnN0Cj4gK8KgwqDCoMKgIC8qIFRoZXNlIGZpeGl0cyBzaG91bGQgYmUgYWNjZXB0ZWQ7IHRoZXkg Y2FuJ3QgYmUKPiBjb25zb2xpZGF0ZWQuwqAgKi8KPiArwqDCoMKgwqAgQVNTRVJUX0VRICgyLCBy aWNobG9jLmdldF9udW1fZml4aXRfaGludHMgKCkpOwo+ICvCoMKgwqDCoCBjb25zdCBmaXhpdF9o aW50ICpoaW50XzAgPSByaWNobG9jLmdldF9maXhpdF9oaW50ICgwKTsKPiArLcKgwqDCoCBBU1NF UlRfRVEgKGNvbHVtbl9yYW5nZSAoMjMsIDIyKSwgZ2V0X2FmZmVjdGVkX3JhbmdlIChoaW50XzAs Cj4gQ1VfQllURVMpKTsKPiArLcKgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5nZSAoMjMsIDIz KSwgZ2V0X3ByaW50ZWRfY29sdW1ucwo+IChoaW50XzApKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEg KGNvbHVtbl9yYW5nZSAoMjMsIDIyKSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRf YWZmZWN0ZWRfcmFuZ2UgKCZkYywgaGludF8wLCBDVV9CWVRFUykpOwo+ICsrwqDCoMKgIEFTU0VS VF9FUSAoY29sdW1uX3JhbmdlICgyMywgMjMpLCBnZXRfcHJpbnRlZF9jb2x1bW5zICgmZGMsCj4g aGludF8wKSk7Cj4gK8KgwqDCoMKgIGNvbnN0IGZpeGl0X2hpbnQgKmhpbnRfMSA9IHJpY2hsb2Mu Z2V0X2ZpeGl0X2hpbnQgKDEpOwo+ICstwqDCoMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgy MSwgMjApLCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKGhpbnRfMSwKPiBDVV9CWVRFUykpOwo+ICstwqDC oMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgyMSwgMjEpLCBnZXRfcHJpbnRlZF9jb2x1bW5z Cj4gKGhpbnRfMSkpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgyMSwgMjAp LAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9hZmZlY3RlZF9yYW5nZSAoJmRjLCBo aW50XzEsIENVX0JZVEVTKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDIx LCAyMSksIGdldF9wcmludGVkX2NvbHVtbnMgKCZkYywKPiBoaW50XzEpKTsKPiArIAo+ICvCoMKg wqDCoCAvKiBWZXJpZnkgdGhhdCB0aGV5J3JlIHByaW50ZWQgY29ycmVjdGx5LsKgICovCj4gKy3C oMKgwqAgdGVzdF9kaWFnbm9zdGljX2NvbnRleHQgZGM7Cj4gK8KgwqDCoMKgIGRpYWdub3N0aWNf c2hvd19sb2N1cyAoJmRjLCAmcmljaGxvYywgREtfRVJST1IpOwo+ICvCoMKgwqDCoCBBU1NFUlRf U1RSRVEgKCIgaW50IGE1W11bMF1bMF0gPSB7IDEsIDIgfTtcbiIKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IF5cbiIKPiArQEAgLTQ5NTUsNiArNTEyOCw2NSBAQCB0ZXN0X2ZpeGl0X2RlbGV0aW9uX2FmZmVj dGluZ19uZXdsaW5lIChjCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBwX2Zvcm1h dHRlZF90ZXh0IChkYy5wcmludGVyKSk7Cj4gKyB9Cj4gKyAKPiArK3N0YXRpYyB2b2lkCj4gKyt0 ZXN0X3RhYl9leHBhbnNpb24gKGNvbnN0IGxpbmVfdGFibGVfY2FzZSAmY2FzZV8pCj4gKyt7Cj4g KyvCoCAvKiBDcmVhdGUgYSB0ZW1wZmlsZSBhbmQgd3JpdGUgc29tZSB0ZXh0IHRvIGl0LsKgIFRo aXMgZXhhbXBsZQo+IHVzZXMgYSB0YWJzdG9wCj4gKyvCoMKgwqDCoCBvZiA4LCBhcyB0aGUgY29s dW1uIG51bWJlcnMgYXR0ZW1wdCB0byBpbmRpY2F0ZToKPiArKwo+ICsrwqDCoMKgIC4uLi4uLi4u Li4uLi4uLi4uLi4uLjAwMC4wMTExMTExMTExMS4yMjIyMjMzMzMzM8KgIGRpc3BsYXkKPiArK8Kg wqDCoCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4xMjMuOTAxMjM0NTY3ODkuNTY3ODkwMTIzNDXCoCBj b2x1bW5zwqAgKi8KPiArK8KgIGNvbnN0IGNoYXIgKmNvbnRlbnQgPSAiwqAgXHTCoMKgIFRoaXM6 IGBcdCcgaXMgYSB0YWIuXG4iOwo+ICsrwqAgLyogLi4uLi4uLi4uLi4uLi4uLi4uLi4wMDAgMDAw MDAwMTExMTEgMTExMTEyMjIyMjLCoCBieXRlCj4gKyvCoMKgwqDCoCAuLi4uLi4uLi4uLi4uLi4u Li4uLjEyMyA0NTY3ODkwMTIzNCA1Njc4OTAxMjM0NcKgIGNvbHVtbnPCoCAqLwo+ICsrCj4gKyvC oCBjb25zdCBpbnQgdGFic3RvcCA9IDg7Cj4gKyvCoCBjb25zdCBpbnQgZmlyc3Rfbm9uX3dzX2J5 dGVfY29sID0gNzsKPiArK8KgIGNvbnN0IGludCByaWdodF9xdW90ZV9ieXRlX2NvbCA9IDE1Owo+ ICsrwqAgY29uc3QgaW50IGxhc3RfYnl0ZV9jb2wgPSAyNTsKPiArK8KgIEFTU0VSVF9FUSAoMzUs IGNwcF9kaXNwbGF5X3dpZHRoIChjb250ZW50LCBsYXN0X2J5dGVfY29sLAo+IHRhYnN0b3ApKTsK PiArKwo+ICsrwqAgdGVtcF9zb3VyY2VfZmlsZSB0bXAgKFNFTEZURVNUX0xPQ0FUSU9OLCAiLmMi LCBjb250ZW50KTsKPiArK8KgIGxpbmVfdGFibGVfdGVzdCBsdHQgKGNhc2VfKTsKPiArK8KgIGxp bmVtYXBfYWRkIChsaW5lX3RhYmxlLCBMQ19FTlRFUiwgZmFsc2UsIHRtcC5nZXRfZmlsZW5hbWUg KCksCj4gMSk7Cj4gKysKPiArK8KgIC8qIERvbid0IGF0dGVtcHQgdG8gcnVuIHRoZSB0ZXN0cyBp ZiBjb2x1bW4gZGF0YSBtaWdodCBiZQo+IHVuYXZhaWxhYmxlLsKgICovCj4gKyvCoCBsb2NhdGlv bl90IGxpbmVfZW5kID0gbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1uIChsaW5lX3RhYmxlLAo+ IGxhc3RfYnl0ZV9jb2wpOwo+ICsrwqAgaWYgKGxpbmVfZW5kID4gTElORV9NQVBfTUFYX0xPQ0FU SU9OX1dJVEhfQ09MUykKPiArK8KgwqDCoCByZXR1cm47Cj4gKysKPiArK8KgIC8qIENoZWNrIHRo YXQgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSB3aXRoIG1peGVkIHRhYnMgYW5kIHNwYWNlcwo+IGlz IGV4cGFuZGVkCj4gKyvCoMKgwqDCoCBpbnRvIDExIHNwYWNlcy7CoCBSZWNhbGwgdGhhdCBwcmlu dF9saW5lKCkgYWxzbyBwdXRzIG9uZSBzcGFjZQo+IGJlZm9yZQo+ICsrwqDCoMKgwqAgZXZlcnl0 aGluZyB0b28uwqAgKi8KPiArK8KgIHsKPiArK8KgwqDCoCB0ZXN0X2RpYWdub3N0aWNfY29udGV4 dCBkYzsKPiArK8KgwqDCoCBkYy50YWJzdG9wID0gdGFic3RvcDsKPiArK8KgwqDCoCByaWNoX2xv Y2F0aW9uIHJpY2hsb2MgKGxpbmVfdGFibGUsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1uIChsaW5l X3RhYmxlLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZmlyc3Rfbm9uX3dzXwo+IGJ5dGVfY29sKSk7Cj4gKyvCoMKgwqAgbGF5b3V0IHRlc3Rf bGF5b3V0ICgmZGMsICZyaWNobG9jLCBES19FUlJPUik7Cj4gKyvCoMKgwqAgdGVzdF9sYXlvdXQu cHJpbnRfbGluZSAoMSk7Cj4gKyvCoMKgwqAgQVNTRVJUX1NUUkVRICgiwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBUaGlzOiBgwqDCoMKgwqDCoCAnIGlzIGEgdGFiLlxuIgo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5cbiIsCj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHBfZm9ybWF0dGVkX3RleHQgKGRjLnByaW50ZXIp KTsKPiArK8KgIH0KPiArKwo+ICsrwqAgLyogQ29uZmlybSB0aGUgZGlzcGxheSB3aWR0aCB3YXMg dHJhY2tlZCBjb3JyZWN0bHkgYWNyb3NzIHRoZQo+IGludGVybmFsIHRhYgo+ICsrwqDCoMKgwqAg YXMgd2VsbC7CoCAqLwo+ICsrwqAgewo+ICsrwqDCoMKgIHRlc3RfZGlhZ25vc3RpY19jb250ZXh0 IGRjOwo+ICsrwqDCoMKgIGRjLnRhYnN0b3AgPSB0YWJzdG9wOwo+ICsrwqDCoMKgIHJpY2hfbG9j YXRpb24gcmljaGxvYyAobGluZV90YWJsZSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsaW5lbWFwX3Bvc2l0aW9uX2Zvcl9jb2x1bW4gKGxpbmVf dGFibGUsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByaWdodF9xdW90ZV9iCj4geXRlX2NvbCkpOwo+ICsrwqDCoMKgIGxheW91dCB0ZXN0X2xh eW91dCAoJmRjLCAmcmljaGxvYywgREtfRVJST1IpOwo+ICsrwqDCoMKgIHRlc3RfbGF5b3V0LnBy aW50X2xpbmUgKDEpOwo+ICsrwqDCoMKgIEFTU0VSVF9TVFJFUSAoIsKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgVGhpczogYMKgwqDCoMKgwqAgJyBpcyBhIHRhYi5cbiIKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIF5cbiIsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHBfZm9y bWF0dGVkX3RleHQgKGRjLnByaW50ZXIpKTsKPiArK8KgIH0KPiArK30KPiArKwo+ICsgLyogVmVy aWZ5IHRoYXQgbGluZSBudW1iZXJzIGFyZSBjb3JyZWN0bHkgcHJpbnRlZCBmb3IgdGhlIGNhc2Ug b2YKPiArwqDCoMKgIGEgbXVsdGlsaW5lIHJhbmdlIGluIHdoaWNoIHRoZSB3aWR0aCBvZiB0aGUg bGluZSBudW1iZXJzIGNoYW5nZXMKPiArwqDCoMKgIChlLmcuIGZyb20gIjkiIHRvICIxMCIpLsKg ICovCj4gK0BAIC01MDEyLDYgKzUyNDQsNyBAQCBkaWFnbm9zdGljX3Nob3dfbG9jdXNfY190ZXN0 cyAoKQo+ICvCoMKgIHRlc3RfbGF5b3V0X3JhbmdlX2Zvcl9tdWx0aXBsZV9saW5lcyAoKTsKPiAr IAo+ICvCoMKgIGZvcl9lYWNoX2xpbmVfdGFibGVfY2FzZSAodGVzdF9sYXlvdXRfeF9vZmZzZXRf ZGlzcGxheV91dGY4KTsKPiArK8KgIGZvcl9lYWNoX2xpbmVfdGFibGVfY2FzZSAodGVzdF9sYXlv dXRfeF9vZmZzZXRfZGlzcGxheV90YWIpOwo+ICsgCj4gK8KgwqAgdGVzdF9nZXRfbGluZV9ieXRl c193aXRob3V0X3RyYWlsaW5nX3doaXRlc3BhY2UgKCk7Cj4gKyAKPiArQEAgLTUwMjksNiArNTI2 Miw3IEBAIGRpYWdub3N0aWNfc2hvd19sb2N1c19jX3Rlc3RzICgpCj4gK8KgwqAgZm9yX2VhY2hf bGluZV90YWJsZV9jYXNlCj4gKHRlc3RfZml4aXRfaW5zZXJ0X2NvbnRhaW5pbmdfbmV3bGluZV8y KTsKPiArwqDCoCBmb3JfZWFjaF9saW5lX3RhYmxlX2Nhc2UgKHRlc3RfZml4aXRfcmVwbGFjZV9j b250YWluaW5nX25ld2xpbmUpOwo+ICvCoMKgIGZvcl9lYWNoX2xpbmVfdGFibGVfY2FzZSAodGVz dF9maXhpdF9kZWxldGlvbl9hZmZlY3RpbmdfbmV3bGluZSk7Cj4gKyvCoCBmb3JfZWFjaF9saW5l X3RhYmxlX2Nhc2UgKHRlc3RfdGFiX2V4cGFuc2lvbik7Cj4gKyAKPiArwqDCoCB0ZXN0X2xpbmVf bnVtYmVyc19tdWx0aWxpbmVfcmFuZ2UgKCk7Cj4gKyB9Cj4gK2RpZmYgLS1naXQgYS9nY2MvZG9j L2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQo+ICstLS0gYS9nY2MvZG9jL2ludm9r ZS50ZXhpwqDCoMKgwqDCoMKgMjAyMS0xMi0yNCAyMDoyMzo0Ni44NzY3Mzk1ODcgLTA4MDAKPiAr KysrIGIvZ2NjL2RvYy9pbnZva2UudGV4acKgwqDCoMKgwqDCoDIwMjEtMTItMjUgMDE6MjA6NTMu NDg3NjM2NDk0IC0wODAwCj4gK0BAIC0yOTMsNyArMjkzLDkgQEAgT2JqZWN0aXZlLUMgYW5kIE9i amVjdGl2ZS1DKysgRGlhbGVjdHN9Lgo+ICsgLWZkaWFnbm9zdGljcy1zaG93LXRlbXBsYXRlLXRy ZWXCoCAtZm5vLWVsaWRlLXR5cGUgQGdvbAo+ICsKPiAtZmRpYWdub3N0aWNzLXBhdGgtZm9ybWF0 PUBye1t9bm9uZUBye3x9c2VwYXJhdGUtZXZlbnRzQHJ7fH1pbmxpbmUtZXZlbnRzQHJ7Cj4gXX0g QGdvbAo+ICsgLWZkaWFnbm9zdGljcy1zaG93LXBhdGgtZGVwdGhzIEBnb2wKPiArLS1mbm8tc2hv dy1jb2x1bW59Cj4gKystZm5vLXNob3ctY29sdW1uIEBnb2wKPiArKy1mZGlhZ25vc3RpY3MtY29s dW1uLXVuaXQ9QHJ7W31kaXNwbGF5QHJ7fH1ieXRlQHJ7XX0gQGdvbAo+ICsrLWZkaWFnbm9zdGlj cy1jb2x1bW4tb3JpZ2luPUB2YXJ7b3JpZ2lufX0KPiArIAo+ICsgQGl0ZW0gV2FybmluZyBPcHRp b25zCj4gKyBAeHJlZntXYXJuaW5nIE9wdGlvbnMsLE9wdGlvbnMgdG8gUmVxdWVzdCBvciBTdXBw cmVzcyBXYXJuaW5nc30uCj4gK0BAIC00NDI0LDYgKzQ0MjYsMzEgQEAgRG8gbm90IHByaW50IGNv bHVtbiBudW1iZXJzIGluIGRpYWdub3N0aQo+ICsgZGlhZ25vc3RpY3MgYXJlIGJlaW5nIHNjYW5u ZWQgYnkgYSBwcm9ncmFtIHRoYXQgZG9lcyBub3QgdW5kZXJzdGFuZAo+IHRoZQo+ICsgY29sdW1u IG51bWJlcnMsIHN1Y2ggYXMgQGNvbW1hbmR7ZGVqYWdudX0uCj4gKyAKPiArK0BpdGVtIC1mZGlh Z25vc3RpY3MtY29sdW1uLXVuaXQ9QHZhcntVTklUfQo+ICsrQG9waW5kZXggZmRpYWdub3N0aWNz LWNvbHVtbi11bml0Cj4gKytTZWxlY3QgdGhlIHVuaXRzIGZvciB0aGUgY29sdW1uIG51bWJlci7C oCBUaGlzIGFmZmVjdHMgdHJhZGl0aW9uYWwKPiBkaWFnbm9zdGljcwo+ICsrKGluIHRoZSBhYnNl bmNlIG9mIEBvcHRpb257LWZuby1zaG93LWNvbHVtbn0pLCBhcyB3ZWxsIGFzIEpTT04KPiBmb3Jt YXQKPiArK2RpYWdub3N0aWNzIGlmIHJlcXVlc3RlZC4KPiArKwo+ICsrVGhlIGRlZmF1bHQgQHZh cntVTklUfSwgQHNhbXB7ZGlzcGxheX0sIGNvbnNpZGVycyB0aGUgbnVtYmVyIG9mCj4gZGlzcGxh eQo+ICsrY29sdW1ucyBvY2N1cGllZCBieSBlYWNoIGNoYXJhY3Rlci7CoCBUaGlzIG1heSBiZSBs YXJnZXIgdGhhbiB0aGUKPiBudW1iZXIKPiArK29mIGJ5dGVzIHJlcXVpcmVkIHRvIGVuY29kZSB0 aGUgY2hhcmFjdGVyLCBpbiB0aGUgY2FzZSBvZiB0YWIKPiArK2NoYXJhY3RlcnMsIG9yIGl0IG1h eSBiZSBzbWFsbGVyLCBpbiB0aGUgY2FzZSBvZiBtdWx0aWJ5dGUKPiBjaGFyYWN0ZXJzLgo+ICsr Rm9yIGV4YW1wbGUsIHRoZSBjaGFyYWN0ZXIgYGBHUkVFSyBTTUFMTCBMRVRURVIgUEkgKFUrMDND MCknJwo+IG9jY3VwaWVzIG9uZQo+ICsrZGlzcGxheSBjb2x1bW4sIGFuZCBpdHMgVVRGLTggZW5j b2RpbmcgcmVxdWlyZXMgdHdvIGJ5dGVzOyB0aGUKPiBjaGFyYWN0ZXIKPiArK2BgU0xJR0hUTFkg U01JTElORyBGQUNFIChVKzFGNjQyKScnIG9jY3VwaWVzIHR3byBkaXNwbGF5IGNvbHVtbnMsCj4g YW5kCj4gKytpdHMgVVRGLTggZW5jb2RpbmcgcmVxdWlyZXMgZm91ciBieXRlcy4KPiArKwo+ICsr U2V0dGluZyBAdmFye1VOSVR9IHRvIEBzYW1we2J5dGV9IGNoYW5nZXMgdGhlIGNvbHVtbiBudW1i ZXIgdG8gdGhlCj4gcmF3IGJ5dGUKPiArK2NvdW50IGluIGFsbCBjYXNlcywgYXMgd2FzIHRyYWRp dGlvbmFsbHkgb3V0cHV0IGJ5IEdDQyBwcmlvciB0bwo+IHZlcnNpb24gMTEuMS4wLgo+ICsrCj4g KytAaXRlbSAtZmRpYWdub3N0aWNzLWNvbHVtbi1vcmlnaW49QHZhcntPUklHSU59Cj4gKytAb3Bp bmRleCBmZGlhZ25vc3RpY3MtY29sdW1uLW9yaWdpbgo+ICsrU2VsZWN0IHRoZSBvcmlnaW4gZm9y IGNvbHVtbiBudW1iZXJzLCBpLmUuIHRoZSBjb2x1bW4gbnVtYmVyCj4gYXNzaWduZWQgdG8gdGhl Cj4gKytmaXJzdCBjb2x1bW4uwqAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgMSBjb3JyZXNwb25kcyB0 byB0cmFkaXRpb25hbAo+IEdDQwo+ICsrYmVoYXZpb3IgYW5kIHRvIHRoZSBHTlUgc3R5bGUgZ3Vp ZGUuwqAgU29tZSB1dGlsaXRpZXMgbWF5IHBlcmZvcm0KPiBiZXR0ZXIgd2l0aCBhbgo+ICsrb3Jp Z2luIG9mIDA7IGFueSBub24tbmVnYXRpdmUgdmFsdWUgbWF5IGJlIHNwZWNpZmllZC4KPiArKwo+ ICsgQGl0ZW0gLWZkaWFnbm9zdGljcy1mb3JtYXQ9QHZhcntGT1JNQVR9Cj4gKyBAb3BpbmRleCBm ZGlhZ25vc3RpY3MtZm9ybWF0Cj4gKyBTZWxlY3QgYSBkaWZmZXJlbnQgZm9ybWF0IGZvciBwcmlu dGluZyBkaWFnbm9zdGljcy4KPiArQEAgLTQ0NTksMTEgKzQ0ODYsMTUgQEAgbWlnaHQgYmUgcHJp bnRlZCBpbiBKU09OIGZvcm0gKGFmdGVyIGZvcgo+ICvCoMKgwqDCoMKgwqDCoMKgICJsb2NhdGlv bnMiOiBbCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBAewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiY2FyZXQiOiBAewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiZGlzcGxheS1jb2x1bW4iOiAzLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAiYnl0ZS1jb2x1bW4iOiAzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICJjb2x1bW4iOiAzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICJmaWxlIjogIm1pc2xlYWRpbmctaW5kZW50YXRpb24uYyIsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImxpbmUiOiAxNQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBAfSwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgImZpbmlzaCI6IEB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICJkaXNwbGF5LWNvbHVtbiI6IDQsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJieXRlLWNvbHVtbiI6IDQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgImNvbHVtbiI6IDQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgImZpbGUiOiAibWlzbGVhZGluZy1pbmRlbnRhdGlvbi5jIiwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibGluZSI6IDE1Cj4gK0BA IC00NDc5LDYgKzQ1MTAsOCBAQCBtaWdodCBiZSBwcmludGVkIGluIEpTT04gZm9ybSAoYWZ0ZXIg Zm9yCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJsb2NhdGlvbnMiOiBbCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJjYXJldCI6IEB7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZGlzcGxh eS1jb2x1bW4iOiA1LAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgImJ5dGUtY29sdW1uIjogNSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImNvbHVtbiI6IDUsCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJmaWxlIjog Im1pc2xlYWRpbmctaW5kZW50YXRpb24uYyIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJsaW5lIjogMTcKPiArQEAgLTQ0ODgsNiAr NDUyMSw3IEBAIG1pZ2h0IGJlIHByaW50ZWQgaW4gSlNPTiBmb3JtIChhZnRlciBmb3IKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1lc3NhZ2UiOiAiLi4udGhpcyBzdGF0ZW1l bnQsIGJ1dCB0aGUgbGF0dGVyIGlzCj4gQGRvdHN7fSIKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEB9Cj4gK8KgwqDCoMKgwqDCoMKgwqAgXQo+ICsrwqDCoMKgwqDCoMKgImNvbHVtbi1vcmln aW4iOiAxLAo+ICvCoMKgwqDCoCBAfSwKPiArwqDCoMKgwqAgQGRvdHN7fQo+ICsgXQo+ICtAQCAt NDUwMCwxMCArNDUzNCwzNCBAQCBBIGRpYWdub3N0aWMgaGFzIGEgQGNvZGV7a2luZH0uwqAgSWYg dGhpcwo+ICsgYW4gQGNvZGV7b3B0aW9ufSBrZXkgZGVzY3JpYmluZyB0aGUgY29tbWFuZC1saW5l IG9wdGlvbiBjb250cm9sbGluZwo+IHRoZQo+ICsgd2FybmluZy4KPiArIAo+ICstQSBkaWFnbm9z dGljIGNhbiBjb250YWluIHplcm8gb3IgbW9yZSBsb2NhdGlvbnMuwqAgRWFjaCBsb2NhdGlvbiBo YXMKPiB1cAo+ICstdG8gdGhyZWUgcG9zaXRpb25zIHdpdGhpbiBpdDogYSBAY29kZXtjYXJldH0g cG9zaXRpb24gYW5kIG9wdGlvbmFsCj4gKy1AY29kZXtzdGFydH0gYW5kIEBjb2Rle2ZpbmlzaH0g cG9zaXRpb25zLsKgIEEgbG9jYXRpb24gY2FuIGFsc28gaGF2ZQo+ICstYW4gb3B0aW9uYWwgQGNv ZGV7bGFiZWx9IHN0cmluZy7CoCBGb3IgZXhhbXBsZSwgdGhpcyBlcnJvcjoKPiArK0EgZGlhZ25v c3RpYyBjYW4gY29udGFpbiB6ZXJvIG9yIG1vcmUgbG9jYXRpb25zLsKgIEVhY2ggbG9jYXRpb24g aGFzCj4gYW4KPiArK29wdGlvbmFsIEBjb2Rle2xhYmVsfSBzdHJpbmcgYW5kIHVwIHRvIHRocmVl IHBvc2l0aW9ucyB3aXRoaW4gaXQ6IGEKPiArK0Bjb2Rle2NhcmV0fSBwb3NpdGlvbiBhbmQgb3B0 aW9uYWwgQGNvZGV7c3RhcnR9IGFuZCBAY29kZXtmaW5pc2h9Cj4gcG9zaXRpb25zLgo+ICsrQSBw b3NpdGlvbiBpcyBkZXNjcmliZWQgYnkgYSBAY29kZXtmaWxlfSBuYW1lLCBhIEBjb2Rle2xpbmV9 Cj4gbnVtYmVyLCBhbmQKPiArK3RocmVlIG51bWJlcnMgaW5kaWNhdGluZyBhIGNvbHVtbiBwb3Np dGlvbjoKPiArK0BpdGVtaXplIEBidWxsZXQKPiArKwo+ICsrQGl0ZW0KPiArK0Bjb2Rle2Rpc3Bs YXktY29sdW1ufSBjb3VudHMgZGlzcGxheSBjb2x1bW5zLCBhY2NvdW50aW5nIGZvciB0YWJzCj4g YW5kCj4gKyttdWx0aWJ5dGUgY2hhcmFjdGVycy4KPiArKwo+ICsrQGl0ZW0KPiArK0Bjb2Rle2J5 dGUtY29sdW1ufSBjb3VudHMgcmF3IGJ5dGVzLgo+ICsrCj4gKytAaXRlbQo+ICsrQGNvZGV7Y29s dW1ufSBpcyBlcXVhbCB0byBvbmUgb2YKPiArK3RoZSBwcmV2aW91cyB0d28sIGFzIGRpY3RhdGVk IGJ5IHRoZSBAb3B0aW9uey1mZGlhZ25vc3RpY3MtY29sdW1uLQo+IHVuaXR9Cj4gKytvcHRpb24u Cj4gKysKPiArK0BlbmQgaXRlbWl6ZQo+ICsrQWxsIHRocmVlIGNvbHVtbnMgYXJlIHJlbGF0aXZl IHRvIHRoZSBvcmlnaW4gc3BlY2lmaWVkIGJ5Cj4gKytAb3B0aW9uey1mZGlhZ25vc3RpY3MtY29s dW1uLW9yaWdpbn0sIHdoaWNoIGlzIHR5cGljYWxseSBlcXVhbCB0byAxCj4gYnV0IG1heQo+ICsr YmUgc2V0LCBmb3IgaW5zdGFuY2UsIHRvIDAgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciB1 dGlsaXRpZXMKPiB0aGF0Cj4gKytudW1iZXIgY29sdW1ucyBmcm9tIDAuwqAgVGhlIGNvbHVtbiBv cmlnaW4gaXMgcmVjb3JkZWQgaW4gdGhlIEpTT04KPiBvdXRwdXQgaW4KPiArK3RoZSBAY29kZXtj b2x1bW4tb3JpZ2lufSB0YWcuwqAgSW4gdGhlIHJlbWFpbmluZyBleGFtcGxlcyBiZWxvdywgdGhl Cj4gZXh0cmEKPiArK2NvbHVtbiBudW1iZXIgb3V0cHV0cyBoYXZlIGJlZW4gb21pdHRlZCBmb3Ig YnJldml0eS4KPiArKwo+ICsrRm9yIGV4YW1wbGUsIHRoaXMgZXJyb3I6Cj4gKyAKPiArIEBzbWFs bGV4YW1wbGUKPiArIGJhZC1iaW5hcnktb3BzLmM6NjQ6MjM6IGVycm9yOiBpbnZhbGlkIG9wZXJh bmRzIHRvIGJpbmFyeSArIChoYXZlCj4gJ1MnIEB7YWthCj4gK2RpZmYgLS1naXQgYS9nY2MvaW5w dXQuYyBiL2djYy9pbnB1dC5jCj4gKy0tLSBhL2djYy9pbnB1dC5jwqDCoMKgwqDCoMKgMjAyMC0w Ny0yMiAyMzozNToxNy42NjQzODgwNzggLTA3MDAKPiArKysrIGIvZ2NjL2lucHV0LmPCoMKgwqDC oMKgwqAyMDIxLTEyLTI1IDAxOjIwOjUzLjQ4NzYzNjQ5NCAtMDgwMAo+ICtAQCAtOTEzLDcgKzkx Myw3IEBAIG1ha2VfbG9jYXRpb24gKGxvY2F0aW9uX3QgY2FyZXQsIHNvdXJjZV8KPiArwqDCoMKg IHNvdXJjZSBsaW5lIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSB0aGUgZGlzcGxheSB3aWR0aC7CoCBJ ZiB0aGF0Cj4gY2Fubm90IGJlIGRvbmUKPiArwqDCoMKgIGZvciBhbnkgcmVhc29uLCB0aGVuIHJl dHVybnMgdGhlIGJ5dGUgY29sdW1uIGFzIGEgZmFsbGJhY2suwqAgKi8KPiArIGludAo+ICstbG9j YXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwYW5kZWRfbG9jYXRpb24gZXhwbG9jKQo+ ICsrbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwYW5kZWRfbG9jYXRpb24gZXhw bG9jLCBpbnQKPiB0YWJzdG9wKQo+ICsgewo+ICvCoMKgIGlmICghKGV4cGxvYy5maWxlICYmICpl eHBsb2MuZmlsZSAmJiBleHBsb2MubGluZSAmJgo+IGV4cGxvYy5jb2x1bW4pKQo+ICvCoMKgwqDC oCByZXR1cm4gZXhwbG9jLmNvbHVtbjsKPiArQEAgLTkyMSw3ICs5MjEsNyBAQCBsb2NhdGlvbl9j b21wdXRlX2Rpc3BsYXlfY29sdW1uIChleHBhbmRlCj4gK8KgwqAgLyogSWYgbGluZSBpcyBOVUxM LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZXhwbG9jLmNvbHVtbiB3aGljaCBpcwo+IHRoZQo+ICvC oMKgwqDCoMKgIGRlc2lyZWQgZmFsbGJhY2suwqAgKi8KPiArwqDCoCByZXR1cm4gY3BwX2J5dGVf Y29sdW1uX3RvX2Rpc3BsYXlfY29sdW1uIChsaW5lLmdldF9idWZmZXIgKCksCj4gbGluZS5sZW5n dGggKCksCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4cGxvYy5jb2x1bW4pOwo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleHBsb2MuY29sdW1uLCB0YWJzdG9wKTsKPiArIH0K PiArIAo+ICsgLyogRHVtcCBzdGF0aXN0aWNzIHRvIHN0ZGVyciBhYm91dCB0aGUgbWVtb3J5IHVz YWdlIG9mIHRoZQo+IGxpbmVfdGFibGUKPiArQEAgLTM2MDgsMzMgKzM2MDgsNDYgQEAgdGVzdF9s aW5lX29mZnNldF9vdmVyZmxvdyAoKQo+ICsgCj4gKyB2b2lkIHRlc3RfY3BwX3V0ZjggKCkKPiAr IHsKPiArK8KgIGNvbnN0IGludCBkZWZfdGFic3RvcCA9IDg7Cj4gK8KgwqAgLyogVmVyaWZ5IHRo YXQgd2N3aWR0aCBvZiBpbnZhbGlkIFVURi04IG9yIGNvbnRyb2wgYnl0ZXMgaXMgMS7CoAo+ICov Cj4gK8KgwqAgewo+ICstwqDCoMKgIGludCB3X2JhZCA9IGNwcF9kaXNwbGF5X3dpZHRoICgiXHhm MCFceDlmIVx4OTghXHg4MiEiLCA4KTsKPiArK8KgwqDCoCBpbnQgd19iYWQgPSBjcHBfZGlzcGxh eV93aWR0aCAoIlx4ZjAhXHg5ZiFceDk4IVx4ODIhIiwgOCwKPiBkZWZfdGFic3RvcCk7Cj4gK8Kg wqDCoMKgIEFTU0VSVF9FUSAoOCwgd19iYWQpOwo+ICstwqDCoMKgIGludCB3X2N0cmwgPSBjcHBf ZGlzcGxheV93aWR0aCAoIlxyXHRcblx2XDBcMSIsIDYpOwo+ICstwqDCoMKgIEFTU0VSVF9FUSAo Niwgd19jdHJsKTsKPiArK8KgwqDCoCBpbnQgd19jdHJsID0gY3BwX2Rpc3BsYXlfd2lkdGggKCJc clxuXHZcMFwxIiwgNSwgZGVmX3RhYnN0b3ApOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAoNSwgd19j dHJsKTsKPiArwqDCoCB9Cj4gKyAKPiArwqDCoCAvKiBWZXJpZnkgdGhhdCB3Y3dpZHRoIG9mIHZh bGlkIFVURi04IGlzIGFzIGV4cGVjdGVkLsKgICovCj4gK8KgwqAgewo+ICstwqDCoMKgIGNvbnN0 IGludCB3X3BpID0gY3BwX2Rpc3BsYXlfd2lkdGggKCJceGNmXHg4MCIsIDIpOwo+ICsrwqDCoMKg IGNvbnN0IGludCB3X3BpID0gY3BwX2Rpc3BsYXlfd2lkdGggKCJceGNmXHg4MCIsIDIsCj4gZGVm X3RhYnN0b3ApOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDEsIHdfcGkpOwo+ICstwqDCoMKgIGNv bnN0IGludCB3X2Vtb2ppID0gY3BwX2Rpc3BsYXlfd2lkdGggKCJceGYwXHg5Zlx4OThceDgyIiwg NCk7Cj4gKyvCoMKgwqAgY29uc3QgaW50IHdfZW1vamkgPSBjcHBfZGlzcGxheV93aWR0aCAoIlx4 ZjBceDlmXHg5OFx4ODIiLCA0LAo+IGRlZl90YWJzdG9wKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VR ICgyLCB3X2Vtb2ppKTsKPiArLcKgwqDCoCBjb25zdCBpbnQgd191bWxhdXRfcHJlY29tcG9zZWQg PSBjcHBfZGlzcGxheV93aWR0aCAoIlx4YzNceGJmIiwKPiAyKTsKPiArK8KgwqDCoCBjb25zdCBp bnQgd191bWxhdXRfcHJlY29tcG9zZWQgPSBjcHBfZGlzcGxheV93aWR0aCAoIlx4YzNceGJmIiwK PiAyLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVmX3RhYnN0b3ApOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDEsIHdfdW1sYXV0X3ByZWNv bXBvc2VkKTsKPiArLcKgwqDCoCBjb25zdCBpbnQgd191bWxhdXRfY29tYmluaW5nID0gY3BwX2Rp c3BsYXlfd2lkdGggKCJ5XHhjY1x4ODgiLAo+IDMpOwo+ICsrwqDCoMKgIGNvbnN0IGludCB3X3Vt bGF1dF9jb21iaW5pbmcgPSBjcHBfZGlzcGxheV93aWR0aCAoInlceGNjXHg4OCIsCj4gMywKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWZfdGFic3Rv cCk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9FUSAoMSwgd191bWxhdXRfY29tYmluaW5nKTsKPiArLcKg wqDCoCBjb25zdCBpbnQgd19oYW4gPSBjcHBfZGlzcGxheV93aWR0aCAoIlx4ZTRceGI4XHhiYSIs IDMpOwo+ICsrwqDCoMKgIGNvbnN0IGludCB3X2hhbiA9IGNwcF9kaXNwbGF5X3dpZHRoICgiXHhl NFx4YjhceGJhIiwgMywKPiBkZWZfdGFic3RvcCk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9FUSAoMiwg d19oYW4pOwo+ICstwqDCoMKgIGNvbnN0IGludCB3X2FzY2lpID0gY3BwX2Rpc3BsYXlfd2lkdGgg KCJHQ0MiLCAzKTsKPiArK8KgwqDCoCBjb25zdCBpbnQgd19hc2NpaSA9IGNwcF9kaXNwbGF5X3dp ZHRoICgiR0NDIiwgMywgZGVmX3RhYnN0b3ApOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDMsIHdf YXNjaWkpOwo+ICvCoMKgwqDCoCBjb25zdCBpbnQgd19taXhlZCA9IGNwcF9kaXNwbGF5X3dpZHRo ICgiXHhjZlx4ODAgPSAzLjE0Cj4gXHhmMFx4OWZceDk4XHg4MiIKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICJceDlmISBceGU0XHhiOFx4YmEKPiB5XHhjY1x4ODgiLCAyNCk7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAiXHg5ZiEgXHhlNFx4YjhceGJhCj4geVx4Y2NceDg4IiwKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI0LCBkZWZfdGFic3RvcCk7Cj4gK8KgwqDCoMKgIEFT U0VSVF9FUSAoMTgsIHdfbWl4ZWQpOwo+ICvCoMKgIH0KPiArIAo+ICsrwqAgLyogVmVyaWZ5IHRo YXQgZGlzcGxheSB3aWR0aCBwcm9wZXJseSBleHBhbmRzIHRhYnMuwqAgKi8KPiArK8KgIHsKPiAr K8KgwqDCoCBjb25zdCBjaGFyICp0c3RyID0gIlx0YWJjXHRkIjsKPiArK8KgwqDCoCBBU1NFUlRf RVEgKDYsIGNwcF9kaXNwbGF5X3dpZHRoICh0c3RyLCA2LCAxKSk7Cj4gKyvCoMKgwqAgQVNTRVJU X0VRICgxMCwgY3BwX2Rpc3BsYXlfd2lkdGggKHRzdHIsIDYsIDMpKTsKPiArK8KgwqDCoCBBU1NF UlRfRVEgKDE3LCBjcHBfZGlzcGxheV93aWR0aCAodHN0ciwgNiwgOCkpOwo+ICsrwqDCoMKgIEFT U0VSVF9FUSAoMSwgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uICh0c3RyLCA2LCA3 LAo+IDgpKTsKPiArK8KgIH0KPiArKwo+ICvCoMKgIC8qIFZlcmlmeSB0aGF0IGNwcF9ieXRlX2Nv bHVtbl90b19kaXNwbGF5X2NvbHVtbiBjYW4gZ28gcGFzdCB0aGUKPiBlbmQsCj4gK8KgwqDCoMKg wqAgYW5kIHNpbWlsYXIgZWRnZSBjYXNlcy7CoCAqLwo+ICvCoMKgIHsKPiArQEAgLTM2NDUsMTAg KzM2NTgsMTMgQEAgdm9pZCB0ZXN0X2NwcF91dGY4ICgpCj4gK8KgwqDCoMKgwqDCoCAvKiAxMTEx MjIyMjM0NTYKPiArwqDCoMKgwqDCoMKgwqAgQnl0ZSBjb2x1bW5zLsKgICovCj4gKyAKPiArLcKg wqDCoCBBU1NFUlRfRVEgKDUsIGNwcF9kaXNwbGF5X3dpZHRoIChzdHIsIDYpKTsKPiArLcKgwqDC oCBBU1NFUlRfRVEgKDEwNSwgY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3BsYXlfY29sdW1uIChzdHIs IDYsCj4gMTA2KSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRICgxMDAwMCwgY3BwX2J5dGVfY29sdW1u X3RvX2Rpc3BsYXlfY29sdW1uIChOVUxMLCAwLAo+IDEwMDAwKSk7Cj4gKy3CoMKgwqAgQVNTRVJU X0VRICgwLCBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxheV9jb2x1bW4gKE5VTEwsIDEwMDAwLAo+ IDApKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKDUsIGNwcF9kaXNwbGF5X3dpZHRoIChzdHIsIDYs IGRlZl90YWJzdG9wKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRICgxMDUsCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3BsYXlfY29sdW1uIChzdHIsIDYs IDEwNiwKPiBkZWZfdGFic3RvcCkpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAoMTAwMDAsCj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3BsYXlfY29sdW1u IChOVUxMLCAwLCAxMDAwMCwKPiBkZWZfdGFic3RvcCkpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAo MCwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxh eV9jb2x1bW4gKE5VTEwsIDEwMDAwLCAwLAo+IGRlZl90YWJzdG9wKSk7Cj4gK8KgwqAgfQo+ICsg Cj4gK8KgwqAgLyogVmVyaWZ5IHRoYXQgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1u IGNhbiBnbyBwYXN0IHRoZQo+IGVuZCwKPiArQEAgLTM2NjIsMjEgKzM2NzgsMjUgQEAgdm9pZCB0 ZXN0X2NwcF91dGY4ICgpCj4gK8KgwqDCoMKgwqDCoCAvKiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAxMTExMTEKPiArwqDCoMKgwqDCoMKgwqAgMTExMTIyMjIzMzMzNDQ0NDU2NjY2 Nzc3Nzg4ODg5OTk5MDEyMzQ1Cj4gK8KgwqDCoMKgwqDCoMKgIEJ5dGUgY29sdW1ucy7CoCAqLwo+ ICstwqDCoMKgIEFTU0VSVF9FUSAoNCwgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1u IChzdHIsIDE1LCAyKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRICgxNSwgY3BwX2Rpc3BsYXlfY29s dW1uX3RvX2J5dGVfY29sdW1uIChzdHIsIDE1LAo+IDExKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VR ICgxMTUsIGNwcF9kaXNwbGF5X2NvbHVtbl90b19ieXRlX2NvbHVtbiAoc3RyLCAxNSwKPiAxMTEp KTsKPiArLcKgwqDCoCBBU1NFUlRfRVEgKDEwMDAwLCBjcHBfZGlzcGxheV9jb2x1bW5fdG9fYnl0 ZV9jb2x1bW4gKE5VTEwsIDAsCj4gMTAwMDApKTsKPiArLcKgwqDCoCBBU1NFUlRfRVEgKDAsIGNw cF9kaXNwbGF5X2NvbHVtbl90b19ieXRlX2NvbHVtbiAoTlVMTCwgMTAwMDAsCj4gMCkpOwo+ICsr wqDCoMKgIEFTU0VSVF9FUSAoNCwgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChz dHIsIDE1LCAyLAo+IGRlZl90YWJzdG9wKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRICgxNSwKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHBfZGlzcGxheV9jb2x1bW5fdG9fYnl0ZV9jb2x1 bW4gKHN0ciwgMTUsIDExLAo+IGRlZl90YWJzdG9wKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRICgx MTUsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5 dGVfY29sdW1uIChzdHIsIDE1LCAxMTEsCj4gZGVmX3RhYnN0b3ApKTsKPiArK8KgwqDCoCBBU1NF UlRfRVEgKDEwMDAwLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNwcF9kaXNwbGF5X2Nv bHVtbl90b19ieXRlX2NvbHVtbiAoTlVMTCwgMCwgMTAwMDAsCj4gZGVmX3RhYnN0b3ApKTsKPiAr K8KgwqDCoCBBU1NFUlRfRVEgKDAsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX2Rp c3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChOVUxMLCAxMDAwMCwgMCwKPiBkZWZfdGFic3Rv cCkpOwo+ICsgCj4gK8KgwqDCoMKgIC8qIFZlcmlmeSB0aGF0IHdlIGRvIG5vdCBpbnRlcnJ1cHQg YSBVVEYtOCBzZXF1ZW5jZS7CoCAqLwo+ICstwqDCoMKgIEFTU0VSVF9FUSAoNCwgY3BwX2Rpc3Bs YXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChzdHIsIDE1LCAxKSk7Cj4gKyvCoMKgwqAgQVNTRVJU X0VRICg0LCBjcHBfZGlzcGxheV9jb2x1bW5fdG9fYnl0ZV9jb2x1bW4gKHN0ciwgMTUsIDEsCj4g ZGVmX3RhYnN0b3ApKTsKPiArIAo+ICvCoMKgwqDCoCBmb3IgKGludCBieXRlX2NvbCA9IDE7IGJ5 dGVfY29sIDw9IDE1OyArK2J5dGVfY29sKQo+ICvCoMKgwqDCoMKgwqAgewo+ICstwqDCoMKgwqDC oMKgY29uc3QgaW50IGRpc3BfY29sID0gY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3BsYXlfY29sdW1u IChzdHIsCj4gMTUsCj4gKy0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnl0ZV9jbwo+IGwpOwo+ICstwqDCoMKgwqDC oMKgY29uc3QgaW50IGJ5dGVfY29sMiA9IGNwcF9kaXNwbGF5X2NvbHVtbl90b19ieXRlX2NvbHVt biAoc3RyLAo+IDE1LAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IGRpc3BfY29sKTsKPiArK8KgwqDCoMKgwqDC oGNvbnN0IGludCBkaXNwX2NvbAo+ICsrwqDCoMKgwqDCoMKgwqAgPSBjcHBfYnl0ZV9jb2x1bW5f dG9fZGlzcGxheV9jb2x1bW4gKHN0ciwgMTUsIGJ5dGVfY29sLAo+IGRlZl90YWJzdG9wKTsKPiAr K8KgwqDCoMKgwqDCoGNvbnN0IGludCBieXRlX2NvbDIKPiArK8KgwqDCoMKgwqDCoMKgID0gY3Bw X2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChzdHIsIDE1LCBkaXNwX2NvbCwKPiBkZWZf dGFic3RvcCk7Cj4gKyAKPiArwqDCoMKgwqDCoMKgwqAvKiBJZiB3ZSBhc2sgZm9yIHRoZSBkaXNw bGF5IGNvbHVtbiBpbiB0aGUgbWlkZGxlIG9mIGEgVVRGLTgKPiArwqDCoMKgwqDCoMKgwqDCoMKg IHNlcXVlbmNlLCBpdCB3aWxsIHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBwYXJ0aWFsCj4gc2Vx dWVuY2UsCj4gK2RpZmYgLS1naXQgYS9nY2MvaW5wdXQuaCBiL2djYy9pbnB1dC5oCj4gKy0tLSBh L2djYy9pbnB1dC5owqDCoMKgwqDCoMKgMjAyMC0wNy0yMiAyMzozNToxNy42NjQzODgwNzggLTA3 MDAKPiArKysrIGIvZ2NjL2lucHV0LmjCoMKgwqDCoMKgwqAyMDIxLTEyLTI1IDAxOjIwOjUzLjQ4 NzYzNjQ5NCAtMDgwMAo+ICtAQCAtMzgsNyArMzgsOSBAQCBTVEFUSUNfQVNTRVJUIChCVUlMVElO U19MT0NBVElPTiA8IFJFU0VSCj4gKyAKPiArIGV4dGVybiBib29sIGlzX2xvY2F0aW9uX2Zyb21f YnVpbHRpbl90b2tlbiAobG9jYXRpb25fdCk7Cj4gKyBleHRlcm4gZXhwYW5kZWRfbG9jYXRpb24g ZXhwYW5kX2xvY2F0aW9uIChsb2NhdGlvbl90KTsKPiArLWV4dGVybiBpbnQgbG9jYXRpb25fY29t cHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwYW5kZWRfbG9jYXRpb24pOwo+ICsrCj4gKytleHRlcm4g aW50IGxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1bW4gKGV4cGFuZGVkX2xvY2F0aW9uCj4g ZXhwbG9jLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgdGFic3RvcCk7Cj4gKyAK PiArIC8qIEEgY2xhc3MgY2FwdHVyaW5nIHRoZSBib3VuZHMgb2YgYSBidWZmZXIsIHRvIGFsbG93 IGZvciBydW4tdGltZQo+ICvCoMKgwqAgYm91bmRzLWNoZWNraW5nIGluIGEgY2hlY2tlZCBidWls ZC7CoCAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL29wdHMuYyBiL2djYy9vcHRzLmMKPiArLS0tIGEv Z2NjL29wdHMuY8KgwqDCoMKgwqDCoMKgMjAyMC0wNy0yMiAyMzozNToxNy43MDgzODg1NjIgLTA3 MDAKPiArKysrIGIvZ2NjL29wdHMuY8KgwqDCoMKgwqDCoMKgMjAyMS0xMi0yNSAwMToyMDo1My40 ODc2MzY0OTQgLTA4MDAKPiArQEAgLTI0MzksNiArMjQzOSwxNCBAQCBjb21tb25faGFuZGxlX29w dGlvbiAoc3RydWN0IGdjY19vcHRpb25zCj4gK8KgwqDCoMKgwqDCoCBkYy0+cGFyc2VhYmxlX2Zp eGl0c19wID0gdmFsdWU7Cj4gK8KgwqDCoMKgwqDCoCBicmVhazsKPiArIAo+ICsrwqDCoMKgIGNh c2UgT1BUX2ZkaWFnbm9zdGljc19jb2x1bW5fdW5pdF86Cj4gKyvCoMKgwqDCoMKgIGRjLT5jb2x1 bW5fdW5pdCA9IChlbnVtIGRpYWdub3N0aWNzX2NvbHVtbl91bml0KXZhbHVlOwo+ICsrwqDCoMKg wqDCoCBicmVhazsKPiArKwo+ICsrwqDCoMKgIGNhc2UgT1BUX2ZkaWFnbm9zdGljc19jb2x1bW5f b3JpZ2luXzoKPiArK8KgwqDCoMKgwqAgZGMtPmNvbHVtbl9vcmlnaW4gPSB2YWx1ZTsKPiArK8Kg wqDCoMKgwqAgYnJlYWs7Cj4gKysKPiArwqDCoMKgwqAgY2FzZSBPUFRfZmRpYWdub3N0aWNzX3No b3dfY3dlOgo+ICvCoMKgwqDCoMKgwqAgZGMtPnNob3dfY3dlID0gdmFsdWU7Cj4gK8KgwqDCoMKg wqDCoCBicmVhazsKPiArQEAgLTI4MjUsNiArMjgzMywxMiBAQCBjb21tb25faGFuZGxlX29wdGlv biAoc3RydWN0IGdjY19vcHRpb25zCj4gK8KgwqDCoMKgwqDCoCBjaGVja19hbGlnbm1lbnRfYXJn dW1lbnQgKGxvYywgYXJnLCAiZnVuY3Rpb25zIik7Cj4gK8KgwqDCoMKgwqDCoCBicmVhazsKPiAr IAo+ICsrwqDCoMKgIGNhc2UgT1BUX2Z0YWJzdG9wXzoKPiArK8KgwqDCoMKgwqAgLyogSXQgaXMg ZG9jdW1lbnRlZCB0aGF0IHdlIHNpbGVudGx5IGlnbm9yZSBzaWxseSB2YWx1ZXMuwqAgKi8KPiAr K8KgwqDCoMKgwqAgaWYgKHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMTAwKQo+ICsrwqDCoMKgwqDC oMKgZGMtPnRhYnN0b3AgPSB2YWx1ZTsKPiArK8KgwqDCoMKgwqAgYnJlYWs7Cj4gKysKPiArwqDC oMKgwqAgZGVmYXVsdDoKPiArwqDCoMKgwqDCoMKgIC8qIElmIHRoZSBmbGFnIHdhcyBoYW5kbGVk IGluIGEgc3RhbmRhcmQgd2F5LCBhc3N1bWUgdGhlIGxhY2sKPiBvZgo+ICvCoMKgwqDCoMKgwqDC oCBwcm9jZXNzaW5nIGhlcmUgaXMgaW50ZW50aW9uYWwuwqAgKi8KPiArZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMS5jCj4gYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTEuYwo+ICst LS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTEu Y8KgwqDCoMKgMjAyMC0KPiAwNy0yMiAyMzozNToxNy45MDgzOTA3NjUgLTA3MDAKPiArKysrIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0xLmPCoMKg wqDCoDIwMjEtCj4gMTItMjUgMDE6MjA6NTMuNDg3NjM2NDk0IC0wODAwCj4gK0BAIC04LDE3ICs4 LDIyIEBACj4gK8KgwqDCoCBXZSBjYW4ndCByZWx5IG9uIGFueSBvcmRlcmluZyBvZiB0aGUga2V5 cy7CoCAqLwo+ICsgCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJraW5kXCI6IFwiZXJyb3JcIiIgfSAq Lwo+ICsrLyogeyBkZy1yZWdleHAgIlwiY29sdW1uLW9yaWdpblwiOiAxIiB9ICovCj4gKyAvKiB7 IGRnLXJlZ2V4cCAiXCJtZXNzYWdlXCI6IFwiI2Vycm9yIG1lc3NhZ2VcIiIgfSAqLwo+ICsgCj4g KyAvKiB7IGRnLXJlZ2V4cCAiXCJjYXJldFwiOiBceyIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAg IlwiZmlsZVwiOiBcIlxbXlxuXHJcIlxdKmRpYWdub3N0aWMtZm9ybWF0LWpzb24tCj4gMS5jXCIi IH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImxpbmVcIjogNCIgfSAqLwo+ICsgLyogeyBkZy1y ZWdleHAgIlwiY29sdW1uXCI6IDIiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJcImRpc3BsYXkt Y29sdW1uXCI6IDIiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJcImJ5dGUtY29sdW1uXCI6IDIi IH0gKi8KPiArIAo+ICsgLyogeyBkZy1yZWdleHAgIlwiZmluaXNoXCI6IFx7IiB9ICovCj4gKyAv KiB7IGRnLXJlZ2V4cCAiXCJmaWxlXCI6IFwiXFteXG5cclwiXF0qZGlhZ25vc3RpYy1mb3JtYXQt anNvbi0KPiAxLmNcIiIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwibGluZVwiOiA0IiB9ICov Cj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1bW5cIjogNiIgfSAqLwo+ICsrLyogeyBkZy1yZWdl eHAgIlwiZGlzcGxheS1jb2x1bW5cIjogNiIgfSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwiYnl0 ZS1jb2x1bW5cIjogNiIgfSAqLwo+ICsgCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJsb2NhdGlvbnNc IjogXFtcW1x7XH0sIFxdKlxdIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJjaGlsZHJlblwi OiBcW1xbXF1cW1xdXF0iIH0gKi8KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMi5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTIuYwo+ICstLS0gYS9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTIuY8KgwqDCoMKgMjAyMC0KPiAw Ny0yMiAyMzozNToxNy45MDgzOTA3NjUgLTA3MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0yLmPCoMKgwqDCoDIwMjEtCj4gMTItMjUg MDE6MjA6NTMuNDg3NjM2NDk0IC0wODAwCj4gK0BAIC04LDYgKzgsNyBAQAo+ICvCoMKgwqAgV2Ug Y2FuJ3QgcmVseSBvbiBhbnkgb3JkZXJpbmcgb2YgdGhlIGtleXMuwqAgKi8KPiArIAo+ICsgLyog eyBkZy1yZWdleHAgIlwia2luZFwiOiBcIndhcm5pbmdcIiIgfSAqLwo+ICsrLyogeyBkZy1yZWdl eHAgIlwiY29sdW1uLW9yaWdpblwiOiAxIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJtZXNz YWdlXCI6IFwiI3dhcm5pbmcgbWVzc2FnZVwiIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJv cHRpb25cIjogXCItV2NwcFwiIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJvcHRpb25fdXJs XCI6IFwiaHR0cHM6XFteXG5cclwiXF0qI2luZGV4LVdjcHBcIiIKPiB9ICovCj4gK0BAIC0xNiwx MSArMTcsMTUgQEAKPiArIC8qIHsgZGctcmVnZXhwICJcImZpbGVcIjogXCJcW15cblxyXCJcXSpk aWFnbm9zdGljLWZvcm1hdC1qc29uLQo+IDIuY1wiIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAi XCJsaW5lXCI6IDQiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImNvbHVtblwiOiAyIiB9ICov Cj4gKysvKiB7IGRnLXJlZ2V4cCAiXCJkaXNwbGF5LWNvbHVtblwiOiAyIiB9ICovCj4gKysvKiB7 IGRnLXJlZ2V4cCAiXCJieXRlLWNvbHVtblwiOiAyIiB9ICovCj4gKyAKPiArIC8qIHsgZGctcmVn ZXhwICJcImZpbmlzaFwiOiBceyIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwiZmlsZVwiOiBc IlxbXlxuXHJcIlxdKmRpYWdub3N0aWMtZm9ybWF0LWpzb24tCj4gMi5jXCIiIH0gKi8KPiArIC8q IHsgZGctcmVnZXhwICJcImxpbmVcIjogNCIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwiY29s dW1uXCI6IDgiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJcImRpc3BsYXktY29sdW1uXCI6IDgi IH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJcImJ5dGUtY29sdW1uXCI6IDgiIH0gKi8KPiArIAo+ ICsgLyogeyBkZy1yZWdleHAgIlwibG9jYXRpb25zXCI6IFxbXFtce1x9LCBcXSpcXSIgfSAqLwo+ ICsgLyogeyBkZy1yZWdleHAgIlwiY2hpbGRyZW5cIjogXFtcW1xdXFtcXVxdIiB9ICovCj4gK2Rp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1q c29uLTMuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQt anNvbi0zLmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1m b3JtYXQtanNvbi0zLmPCoMKgwqDCoDIwMjAtCj4gMDctMjIgMjM6MzU6MTcuOTA4MzkwNzY1IC0w NzAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9ybWF0 LWpzb24tMy5jwqDCoMKgwqAyMDIxLQo+IDEyLTI1IDAxOjIwOjUzLjQ4NzYzNjQ5NCAtMDgwMAo+ ICtAQCAtOCw2ICs4LDcgQEAKPiArwqDCoMKgIFdlIGNhbid0IHJlbHkgb24gYW55IG9yZGVyaW5n IG9mIHRoZSBrZXlzLsKgICovCj4gKyAKPiArIC8qIHsgZGctcmVnZXhwICJcImtpbmRcIjogXCJl cnJvclwiIiB9ICovCj4gKysvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1bW4tb3JpZ2luXCI6IDEiIH0g Ki8KPiArIC8qIHsgZGctcmVnZXhwICJcIm1lc3NhZ2VcIjogXCIjd2FybmluZyBtZXNzYWdlXCIi IH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcIm9wdGlvblwiOiBcIi1XZXJyb3I9Y3BwXCIiIH0g Ki8KPiArIC8qIHsgZGctcmVnZXhwICJcIm9wdGlvbl91cmxcIjogXCJodHRwczpcW15cblxyXCJc XSojaW5kZXgtV2NwcFwiIgo+IH0gKi8KPiArQEAgLTE2LDExICsxNywxNSBAQAo+ICsgLyogeyBk Zy1yZWdleHAgIlwiZmlsZVwiOiBcIlxbXlxuXHJcIlxdKmRpYWdub3N0aWMtZm9ybWF0LWpzb24t Cj4gMy5jXCIiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImxpbmVcIjogNCIgfSAqLwo+ICsg LyogeyBkZy1yZWdleHAgIlwiY29sdW1uXCI6IDIiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJc ImRpc3BsYXktY29sdW1uXCI6IDIiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJcImJ5dGUtY29s dW1uXCI6IDIiIH0gKi8KPiArIAo+ICsgLyogeyBkZy1yZWdleHAgIlwiZmluaXNoXCI6IFx7IiB9 ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJmaWxlXCI6IFwiXFteXG5cclwiXF0qZGlhZ25vc3Rp Yy1mb3JtYXQtanNvbi0KPiAzLmNcIiIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwibGluZVwi OiA0IiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1bW5cIjogOCIgfSAqLwo+ICsrLyog eyBkZy1yZWdleHAgIlwiZGlzcGxheS1jb2x1bW5cIjogOCIgfSAqLwo+ICsrLyogeyBkZy1yZWdl eHAgIlwiYnl0ZS1jb2x1bW5cIjogOCIgfSAqLwo+ICsgCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJs b2NhdGlvbnNcIjogXFtcW1x7XH0sIFxdKlxdIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJj aGlsZHJlblwiOiBcW1xbXF1cW1xdXF0iIH0gKi8KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tNC5jCj4gYi9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTQuYwo+ICstLS0gYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTQuY8KgwqDCoMKg MjAyMC0KPiAwNy0yMiAyMzozNToxNy45MDgzOTA3NjUgLTA3MDAKPiArKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi00LmPCoMKgwqDCoDIwMjEt Cj4gMTItMjUgMDE6MjA6NTMuNDg3NjM2NDk0IC0wODAwCj4gK0BAIC0yNCwxNSArMjQsMjAgQEAg aW50IHRlc3QgKHZvaWQpCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJmaWxlXCI6IFwiXFteXG5cclwi XF0qZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0KPiA0LmNcIiIgfSAqLwo+ICsgLyogeyBkZy1yZWdl eHAgIlwibGluZVwiOiA4IiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1bW5cIjogNSIg fSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwiZGlzcGxheS1jb2x1bW5cIjogNSIgfSAqLwo+ICsr LyogeyBkZy1yZWdleHAgIlwiYnl0ZS1jb2x1bW5cIjogNSIgfSAqLwo+ICsgCj4gKyAvKiB7IGRn LXJlZ2V4cCAiXCJmaW5pc2hcIjogXHsiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImZpbGVc IjogXCJcW15cblxyXCJcXSpkaWFnbm9zdGljLWZvcm1hdC1qc29uLQo+IDQuY1wiIiB9ICovCj4g KyAvKiB7IGRnLXJlZ2V4cCAiXCJsaW5lXCI6IDgiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJc ImNvbHVtblwiOiAxMCIgfSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwiZGlzcGxheS1jb2x1bW5c IjogMTAiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJcImJ5dGUtY29sdW1uXCI6IDEwIiB9ICov Cj4gKyAKPiArIC8qIFRoZSBvdXRlciBkaWFnbm9zdGljLsKgICovCj4gKyAKPiArIC8qIHsgZGct cmVnZXhwICJcImtpbmRcIjogXCJ3YXJuaW5nXCIiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJc ImNvbHVtbi1vcmlnaW5cIjogMSIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwibWVzc2FnZVwi OiBcInRoaXMgJ2lmJyBjbGF1c2UgZG9lcyBub3QKPiBndWFyZC4uLlwiIiB9ICovCj4gKyAvKiB7 IGRnLXJlZ2V4cCAiXCJvcHRpb25cIjogXCItV21pc2xlYWRpbmctaW5kZW50YXRpb25cIiIgfSAq Lwo+ICsgLyogeyBkZy1yZWdleHAgIlwib3B0aW9uX3VybFwiOiBcImh0dHBzOlxbXlxuXHJcIlxd KiNpbmRleC0KPiBXbWlzbGVhZGluZy1pbmRlbnRhdGlvblwiIiB9ICovCj4gK0BAIC00MSwxMSAr NDYsMTUgQEAgaW50IHRlc3QgKHZvaWQpCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJmaWxlXCI6IFwi XFteXG5cclwiXF0qZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0KPiA0LmNcIiIgfSAqLwo+ICsgLyog eyBkZy1yZWdleHAgIlwibGluZVwiOiA2IiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1 bW5cIjogMyIgfSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwiZGlzcGxheS1jb2x1bW5cIjogMyIg fSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwiYnl0ZS1jb2x1bW5cIjogMyIgfSAqLwo+ICsgCj4g KyAvKiB7IGRnLXJlZ2V4cCAiXCJmaW5pc2hcIjogXHsiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhw ICJcImZpbGVcIjogXCJcW15cblxyXCJcXSpkaWFnbm9zdGljLWZvcm1hdC1qc29uLQo+IDQuY1wi IiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJsaW5lXCI6IDYiIH0gKi8KPiArIC8qIHsgZGct cmVnZXhwICJcImNvbHVtblwiOiA0IiB9ICovCj4gKysvKiB7IGRnLXJlZ2V4cCAiXCJkaXNwbGF5 LWNvbHVtblwiOiA0IiB9ICovCj4gKysvKiB7IGRnLXJlZ2V4cCAiXCJieXRlLWNvbHVtblwiOiA0 IiB9ICovCj4gKyAKPiArIC8qIE1vcmUgZnJvbSB0aGUgbmVzdGVkIGRpYWdub3N0aWMgKHdlIGNh bid0IGd1YXJhbnRlZSB3aGF0IG9yZGVyCj4gdGhlCj4gK8KgwqDCoCAiZmlsZSIga2V5cyBhcmUg Y29uc3VtZWQpLsKgICovCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTUuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi01LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi01LmPCoMKgwqDCoDIwMjAtCj4gMDctMjIg MjM6MzU6MTcuOTA4MzkwNzY1IC0wNzAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tNS5jwqDCoMKgwqAyMDIxLQo+IDEyLTI1IDAxOjIw OjUzLjQ4NzYzNjQ5NCAtMDgwMAo+ICtAQCAtMTMsNiArMTMsNyBAQCBpbnQgdGVzdCAoc3RydWN0 IHMgKnB0cikKPiArwqDCoMKgIFdlIGNhbid0IHJlbHkgb24gYW55IG9yZGVyaW5nIG9mIHRoZSBr ZXlzLsKgICovCj4gKyAKPiArIC8qIHsgZGctcmVnZXhwICJcImtpbmRcIjogXCJlcnJvclwiIiB9 ICovCj4gKysvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1bW4tb3JpZ2luXCI6IDEiIH0gKi8KPiArIC8q IHsgZGctcmVnZXhwICJcIm1lc3NhZ2VcIjogXCIuKlwiIiB9ICovCj4gKyAKPiArIC8qIFZlcmlm eSBmaXgtaXQgaGludHMuwqAgKi8KPiArQEAgLTIzLDExICsyNCwxNSBAQCBpbnQgdGVzdCAoc3Ry dWN0IHMgKnB0cikKPiArIC8qIHsgZGctcmVnZXhwICJcImZpbGVcIjogXCJcW15cblxyXCJcXSpk aWFnbm9zdGljLWZvcm1hdC1qc29uLQo+IDUuY1wiIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAi XCJsaW5lXCI6IDgiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImNvbHVtblwiOiAxNSIgfSAq Lwo+ICsrLyogeyBkZy1yZWdleHAgIlwiZGlzcGxheS1jb2x1bW5cIjogMTUiIH0gKi8KPiArKy8q IHsgZGctcmVnZXhwICJcImJ5dGUtY29sdW1uXCI6IDE1IiB9ICovCj4gKyAKPiArIC8qIHsgZGct cmVnZXhwICJcIm5leHRcIjogXHsiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImZpbGVcIjog XCJcW15cblxyXCJcXSpkaWFnbm9zdGljLWZvcm1hdC1qc29uLQo+IDUuY1wiIiB9ICovCj4gKyAv KiB7IGRnLXJlZ2V4cCAiXCJsaW5lXCI6IDgiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImNv bHVtblwiOiAyMSIgfSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwiZGlzcGxheS1jb2x1bW5cIjog MjEiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJcImJ5dGUtY29sdW1uXCI6IDIxIiB9ICovCj4g KyAKPiArIC8qIHsgZGctcmVnZXhwICJcImZpeGl0c1wiOiBcW1xbXHtcfSwgXF0qXF0iIH0gKi8K PiArIAo+ICtAQCAtMzUsMTEgKzQwLDE1IEBAIGludCB0ZXN0IChzdHJ1Y3QgcyAqcHRyKQo+ICsg LyogeyBkZy1yZWdleHAgIlwiZmlsZVwiOiBcIlxbXlxuXHJcIlxdKmRpYWdub3N0aWMtZm9ybWF0 LWpzb24tCj4gNS5jXCIiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImxpbmVcIjogOCIgfSAq Lwo+ICsgLyogeyBkZy1yZWdleHAgIlwiY29sdW1uXCI6IDE1IiB9ICovCj4gKysvKiB7IGRnLXJl Z2V4cCAiXCJkaXNwbGF5LWNvbHVtblwiOiAxNSIgfSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwi Ynl0ZS1jb2x1bW5cIjogMTUiIH0gKi8KPiArIAo+ICsgLyogeyBkZy1yZWdleHAgIlwiZmluaXNo XCI6IFx7IiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJmaWxlXCI6IFwiXFteXG5cclwiXF0q ZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0KPiA1LmNcIiIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAg IlwibGluZVwiOiA4IiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1bW5cIjogMjAiIH0g Ki8KPiArKy8qIHsgZGctcmVnZXhwICJcImRpc3BsYXktY29sdW1uXCI6IDIwIiB9ICovCj4gKysv KiB7IGRnLXJlZ2V4cCAiXCJieXRlLWNvbHVtblwiOiAyMCIgfSAqLwo+ICsgCj4gKyAvKiB7IGRn LXJlZ2V4cCAiXCJsb2NhdGlvbnNcIjogXFtcW1x7XH0sIFxdKlxdIiB9ICovCj4gKyAvKiB7IGRn LXJlZ2V4cCAiXCJjaGlsZHJlblwiOiBcW1xbXF1cW1xdXF0iIH0gKi8KPiArZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtdW5pdHMtMS5jCj4gYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTEuYwo+ICstLS0gYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTEuY8KgwqAxOTY5LTEyLTMx Cj4gMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2RpYWdub3N0aWMtdW5pdHMtMS5jwqDCoDIwMjEtMTItMjUKPiAwMToyMDo1My40ODc2 MzY0OTQgLTA4MDAKPiArQEAgLTAsMCArMSwyOCBAQAo+ICsrLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KPiArKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZmRpYWdub3N0aWNzLWNvbHVtbi11 bml0PWJ5dGUgLWZzaG93LQo+IGNvbHVtbiAtZmRpYWdub3N0aWNzLXNob3ctY2FyZXQgLVdtdWx0 aWNoYXIiIH0gKi8KPiArKwo+ICsrLyogY29sdW1uIHVuaXRzOiBieXRlcyAodmlhIGFyZykKPiAr K8KgwqAgY29sdW1uIG9yaWdpbjogMSAodmlhIGRlZmF1bHQpCj4gKyvCoMKgIHRhYnN0b3A6IDgg KHZpYSBkZWZhdWx0KSAqLwo+ICsrCj4gKysvKiBUaGlzIGxpbmUgc3RhcnRzIHdpdGggYSB0YWIu wqAgKi8KPiArK8KgwqDCoMKgwqDCoGludCBjMSA9ICdjMSc7IC8qIHsgZGctd2FybmluZyAiMTE6 IG11bHRpLWNoYXJhY3RlciBjaGFyYWN0ZXIKPiBjb25zdGFudCIgfSAqLwo+ICsrLyogeyBkZy1i ZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArK8KgwqDCoMKgwqDCoMKgwqAgaW50IGMxID0g J2MxJzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXn5+fgo+ICsrwqDC oCB7IGRnLWVuZC1tdWx0aWxpbmUtb3V0cHV0ICIiIH0gKi8KPiArKwo+ICsrLyogVGhpcyBsaW5l IHN0YXJ0cyB3aXRoIDx0YWJzdG9wPiBzcGFjZXMuwqAgKi8KPiArK8KgwqDCoMKgwqDCoMKgIGlu dCBjMiA9ICdjMic7IC8qIHsgZGctd2FybmluZyAiMTg6IG11bHRpLWNoYXJhY3Rlcgo+IGNoYXJh Y3RlciBjb25zdGFudCIgfSAqLwo+ICsrLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIi IH0KPiArK8KgwqDCoMKgwqDCoMKgwqAgaW50IGMyID0gJ2MyJzsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgXn5+fgo+ICsrwqDCoCB7IGRnLWVuZC1tdWx0aWxpbmUtb3V0 cHV0ICIiIH0gKi8KPiArKwo+ICsrLyogVGhpcyBsaW5lIHN0YXJ0cyB3aXRoIDx0YWJzdG9wPiBz cGFjZXMgYW5kIGhhcyBhbiBpbnRlcm5hbCB0YWIKPiBhZnRlcgo+ICsrwqDCoCBhIHNwYWNlLsKg ICovCj4gKyvCoMKgwqDCoMKgwqDCoCBpbnQgYzMgPcKgwqDCoMKgwqDCoCdjMyc7IC8qIHsgZGct d2FybmluZyAiMTk6IG11bHRpLWNoYXJhY3Rlcgo+IGNoYXJhY3RlciBjb25zdGFudCIgfSAqLwo+ ICsrLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArK8KgwqDCoMKgwqDCoMKg wqAgaW50IGMzID3CoMKgwqDCoMKgwqDCoCAnYzMnOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn4KPiArK8KgwqAgeyBkZy1lbmQtbXVsdGls aW5lLW91dHB1dCAiIiB9ICovCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9kaWFnbm9zdGljLXVuaXRzLTIuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v ZGlhZ25vc3RpYy11bml0cy0yLmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v ZGlhZ25vc3RpYy11bml0cy0yLmPCoMKgMTk2OS0xMi0zMQo+IDE2OjAwOjAwLjAwMDAwMDAwMCAt MDgwMAo+ICsrKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRz LTIuY8KgwqAyMDIxLTEyLTI1Cj4gMDE6MjA6NTMuNDg3NjM2NDk0IC0wODAwCj4gK0BAIC0wLDAg KzEsMjggQEAKPiArKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCj4gKysvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLWZkaWFnbm9zdGljcy1jb2x1bW4tdW5pdD1kaXNwbGF5IC0KPiBmc2hvdy1j b2x1bW4gLWZkaWFnbm9zdGljcy1zaG93LWNhcmV0IC1XbXVsdGljaGFyIiB9ICovCj4gKysKPiAr Ky8qIGNvbHVtbiB1bml0czogZGlzcGxheSAodmlhIGFyZykKPiArK8KgwqAgY29sdW1uIG9yaWdp bjogMSAodmlhIGRlZmF1bHQpCj4gKyvCoMKgIHRhYnN0b3A6IDggKHZpYSBkZWZhdWx0KSAqLwo+ ICsrCj4gKysvKiBUaGlzIGxpbmUgc3RhcnRzIHdpdGggYSB0YWIuwqAgKi8KPiArK8KgwqDCoMKg wqDCoGludCBjMSA9ICdjMSc7IC8qIHsgZGctd2FybmluZyAiMTg6IG11bHRpLWNoYXJhY3RlciBj aGFyYWN0ZXIKPiBjb25zdGFudCIgfSAqLwo+ICsrLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0 cHV0ICIiIH0KPiArK8KgwqDCoMKgwqDCoMKgwqAgaW50IGMxID0gJ2MxJzsKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXn5+fgo+ICsrwqDCoCB7IGRnLWVuZC1tdWx0aWxp bmUtb3V0cHV0ICIiIH0gKi8KPiArKwo+ICsrLyogVGhpcyBsaW5lIHN0YXJ0cyB3aXRoIDx0YWJz dG9wPiBzcGFjZXMuwqAgKi8KPiArK8KgwqDCoMKgwqDCoMKgIGludCBjMiA9ICdjMic7IC8qIHsg ZGctd2FybmluZyAiMTg6IG11bHRpLWNoYXJhY3Rlcgo+IGNoYXJhY3RlciBjb25zdGFudCIgfSAq Lwo+ICsrLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArK8KgwqDCoMKgwqDC oMKgwqAgaW50IGMyID0gJ2MyJzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXn5+fgo+ICsrwqDCoCB7IGRnLWVuZC1tdWx0aWxpbmUtb3V0cHV0ICIiIH0gKi8KPiArKwo+ ICsrLyogVGhpcyBsaW5lIHN0YXJ0cyB3aXRoIDx0YWJzdG9wPiBzcGFjZXMgYW5kIGhhcyBhbiBp bnRlcm5hbCB0YWIKPiBhZnRlcgo+ICsrwqDCoCBhIHNwYWNlLsKgICovCj4gKyvCoMKgwqDCoMKg wqDCoCBpbnQgYzMgPcKgwqDCoMKgwqDCoCdjMyc7IC8qIHsgZGctd2FybmluZyAiMjU6IG11bHRp LWNoYXJhY3Rlcgo+IGNoYXJhY3RlciBjb25zdGFudCIgfSAqLwo+ICsrLyogeyBkZy1iZWdpbi1t dWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArK8KgwqDCoMKgwqDCoMKgwqAgaW50IGMzID3CoMKgwqDC oMKgwqDCoCAnYzMnOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIF5+fn4KPiArK8KgwqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9ICov Cj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVu aXRzLTMuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy0z LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy0z LmPCoMKgMTk2OS0xMi0zMQo+IDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAo+ICsrKysgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTMuY8KgwqAyMDIxLTEyLTI1 Cj4gMDE6MjA6NTMuNDg3NjM2NDk0IC0wODAwCj4gK0BAIC0wLDAgKzEsMjggQEAKPiArKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCj4gKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZkaWFn bm9zdGljcy1jb2x1bW4tdW5pdD1ieXRlIC1mc2hvdy0KPiBjb2x1bW4gLWZkaWFnbm9zdGljcy1z aG93LWNhcmV0IC1mdGFic3RvcD0yMDAgLVdtdWx0aWNoYXIiIH0gKi8KPiArKwo+ICsrLyogY29s dW1uIHVuaXRzOiBieXRlcyAodmlhIGFyZykKPiArK8KgwqAgY29sdW1uIG9yaWdpbjogMSAodmlh IGZhbGxiYWNrIGZyb20gb3Zlcmx5IGxhcmdlIGFyZ3VtZW50KQo+ICsrwqDCoCB0YWJzdG9wOiA4 ICh2aWEgZGVmYXVsdCkgKi8KPiArKwo+ICsrLyogVGhpcyBsaW5lIHN0YXJ0cyB3aXRoIGEgdGFi LsKgICovCj4gKyvCoMKgwqDCoMKgwqBpbnQgYzEgPSAnYzEnOyAvKiB7IGRnLXdhcm5pbmcgIjEx OiBtdWx0aS1jaGFyYWN0ZXIgY2hhcmFjdGVyCj4gY29uc3RhbnQiIH0gKi8KPiArKy8qIHsgZGct YmVnaW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgIGludCBjMSA9 ICdjMSc7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn4KPiArK8Kg wqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9ICovCj4gKysKPiArKy8qIFRoaXMgbGlu ZSBzdGFydHMgd2l0aCA8dGFic3RvcD4gc3BhY2VzLsKgICovCj4gKyvCoMKgwqDCoMKgwqDCoCBp bnQgYzIgPSAnYzInOyAvKiB7IGRnLXdhcm5pbmcgIjE4OiBtdWx0aS1jaGFyYWN0ZXIKPiBjaGFy YWN0ZXIgY29uc3RhbnQiIH0gKi8KPiArKy8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAi IiB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgIGludCBjMiA9ICdjMic7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn4KPiArK8KgwqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91 dHB1dCAiIiB9ICovCj4gKysKPiArKy8qIFRoaXMgbGluZSBzdGFydHMgd2l0aCA8dGFic3RvcD4g c3BhY2VzIGFuZCBoYXMgYW4gaW50ZXJuYWwgdGFiCj4gYWZ0ZXIKPiArK8KgwqAgYSBzcGFjZS7C oCAqLwo+ICsrwqDCoMKgwqDCoMKgwqAgaW50IGMzID3CoMKgwqDCoMKgwqAnYzMnOyAvKiB7IGRn LXdhcm5pbmcgIjE5OiBtdWx0aS1jaGFyYWN0ZXIKPiBjaGFyYWN0ZXIgY29uc3RhbnQiIH0gKi8K PiArKy8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKyvCoMKgwqDCoMKgwqDC oMKgIGludCBjMyA9wqDCoMKgwqDCoMKgwqAgJ2MzJzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+Cj4gKyvCoMKgIHsgZGctZW5kLW11bHRp bGluZS1vdXRwdXQgIiIgfSAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vZGlhZ25vc3RpYy11bml0cy00LmMKPiBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2RpYWdub3N0aWMtdW5pdHMtNC5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2RpYWdub3N0aWMtdW5pdHMtNC5jwqDCoDE5NjktMTItMzEKPiAxNjowMDowMC4wMDAwMDAwMDAg LTA4MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0 cy00LmPCoMKgMjAyMS0xMi0yNQo+IDAxOjIwOjUzLjQ4NzYzNjQ5NCAtMDgwMAo+ICtAQCAtMCww ICsxLDI4IEBACj4gKysvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwo+ICsrLyogeyBkZy1hZGRpdGlv bmFsLW9wdGlvbnMgIi1mZGlhZ25vc3RpY3MtY29sdW1uLXVuaXQ9Ynl0ZSAtZnNob3ctCj4gY29s dW1uIC1mZGlhZ25vc3RpY3Mtc2hvdy1jYXJldCAtZmRpYWdub3N0aWNzLWNvbHVtbi1vcmlnaW49 MCAtCj4gV211bHRpY2hhciIgfSAqLwo+ICsrCj4gKysvKiBjb2x1bW4gdW5pdHM6IGJ5dGVzICh2 aWEgYXJnKQo+ICsrwqDCoCBjb2x1bW4gb3JpZ2luOiAwICh2aWEgYXJnKQo+ICsrwqDCoCB0YWJz dG9wOiA4ICh2aWEgZGVmYXVsdCkgKi8KPiArKwo+ICsrLyogVGhpcyBsaW5lIHN0YXJ0cyB3aXRo IGEgdGFiLsKgICovCj4gKyvCoMKgwqDCoMKgwqBpbnQgYzEgPSAnYzEnOyAvKiB7IGRnLXdhcm5p bmcgIjEwOiBtdWx0aS1jaGFyYWN0ZXIgY2hhcmFjdGVyCj4gY29uc3RhbnQiIH0gKi8KPiArKy8q IHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgIGlu dCBjMSA9ICdjMSc7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn4K PiArK8KgwqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9ICovCj4gKysKPiArKy8qIFRo aXMgbGluZSBzdGFydHMgd2l0aCA8dGFic3RvcD4gc3BhY2VzLsKgICovCj4gKyvCoMKgwqDCoMKg wqDCoCBpbnQgYzIgPSAnYzInOyAvKiB7IGRnLXdhcm5pbmcgIjE3OiBtdWx0aS1jaGFyYWN0ZXIK PiBjaGFyYWN0ZXIgY29uc3RhbnQiIH0gKi8KPiArKy8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91 dHB1dCAiIiB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgIGludCBjMiA9ICdjMic7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn4KPiArK8KgwqAgeyBkZy1lbmQtbXVsdGls aW5lLW91dHB1dCAiIiB9ICovCj4gKysKPiArKy8qIFRoaXMgbGluZSBzdGFydHMgd2l0aCA8dGFi c3RvcD4gc3BhY2VzIGFuZCBoYXMgYW4gaW50ZXJuYWwgdGFiCj4gYWZ0ZXIKPiArK8KgwqAgYSBz cGFjZS7CoCAqLwo+ICsrwqDCoMKgwqDCoMKgwqAgaW50IGMzID3CoMKgwqDCoMKgwqAnYzMnOyAv KiB7IGRnLXdhcm5pbmcgIjE4OiBtdWx0aS1jaGFyYWN0ZXIKPiBjaGFyYWN0ZXIgY29uc3RhbnQi IH0gKi8KPiArKy8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKyvCoMKgwqDC oMKgwqDCoMKgIGludCBjMyA9wqDCoMKgwqDCoMKgwqAgJ2MzJzsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+Cj4gKyvCoMKgIHsgZGctZW5k LW11bHRpbGluZS1vdXRwdXQgIiIgfSAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy01LmMKPiBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2RpYWdub3N0aWMtdW5pdHMtNS5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2RpYWdub3N0aWMtdW5pdHMtNS5jwqDCoDE5NjktMTItMzEKPiAxNjowMDowMC4wMDAw MDAwMDAgLTA4MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3Rp Yy11bml0cy01LmPCoMKgMjAyMS0xMi0yNQo+IDAxOjIwOjUzLjQ5MTYzNjQyNyAtMDgwMAo+ICtA QCAtMCwwICsxLDI4IEBACj4gKysvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwo+ICsrLyogeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi1mZGlhZ25vc3RpY3MtY29sdW1uLXVuaXQ9ZGlzcGxheSAtCj4g ZnNob3ctY29sdW1uIC1mZGlhZ25vc3RpY3Mtc2hvdy1jYXJldCAtZmRpYWdub3N0aWNzLWNvbHVt bi1vcmlnaW49MCAtCj4gV211bHRpY2hhciIgfSAqLwo+ICsrCj4gKysvKiBjb2x1bW4gdW5pdHM6 IGRpc3BsYXkgKHZpYSBhcmcpCj4gKyvCoMKgIGNvbHVtbiBvcmlnaW46IDAgKHZpYSBhcmcpCj4g KyvCoMKgIHRhYnN0b3A6IDggKHZpYSBkZWZhdWx0KSAqLwo+ICsrCj4gKysvKiBUaGlzIGxpbmUg c3RhcnRzIHdpdGggYSB0YWIuwqAgKi8KPiArK8KgwqDCoMKgwqDCoGludCBjMSA9ICdjMSc7IC8q IHsgZGctd2FybmluZyAiMTc6IG11bHRpLWNoYXJhY3RlciBjaGFyYWN0ZXIKPiBjb25zdGFudCIg fSAqLwo+ICsrLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArK8KgwqDCoMKg wqDCoMKgwqAgaW50IGMxID0gJ2MxJzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgXn5+fgo+ICsrwqDCoCB7IGRnLWVuZC1tdWx0aWxpbmUtb3V0cHV0ICIiIH0gKi8KPiAr Kwo+ICsrLyogVGhpcyBsaW5lIHN0YXJ0cyB3aXRoIDx0YWJzdG9wPiBzcGFjZXMuwqAgKi8KPiAr K8KgwqDCoMKgwqDCoMKgIGludCBjMiA9ICdjMic7IC8qIHsgZGctd2FybmluZyAiMTc6IG11bHRp LWNoYXJhY3Rlcgo+IGNoYXJhY3RlciBjb25zdGFudCIgfSAqLwo+ICsrLyogeyBkZy1iZWdpbi1t dWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArK8KgwqDCoMKgwqDCoMKgwqAgaW50IGMyID0gJ2MyJzsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXn5+fgo+ICsrwqDCoCB7IGRn LWVuZC1tdWx0aWxpbmUtb3V0cHV0ICIiIH0gKi8KPiArKwo+ICsrLyogVGhpcyBsaW5lIHN0YXJ0 cyB3aXRoIDx0YWJzdG9wPiBzcGFjZXMgYW5kIGhhcyBhbiBpbnRlcm5hbCB0YWIKPiBhZnRlcgo+ ICsrwqDCoCBhIHNwYWNlLsKgICovCj4gKyvCoMKgwqDCoMKgwqDCoCBpbnQgYzMgPcKgwqDCoMKg wqDCoCdjMyc7IC8qIHsgZGctd2FybmluZyAiMjQ6IG11bHRpLWNoYXJhY3Rlcgo+IGNoYXJhY3Rl ciBjb25zdGFudCIgfSAqLwo+ICsrLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0K PiArK8KgwqDCoMKgwqDCoMKgwqAgaW50IGMzID3CoMKgwqDCoMKgwqDCoCAnYzMnOwo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn4KPiArK8Kg wqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9ICovCj4gK2RpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTYuYwo+IGIvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy02LmMKPiArLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy02LmPCoMKgMTk2OS0xMi0zMQo+IDE2 OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAo+ICsrKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9kaWFnbm9zdGljLXVuaXRzLTYuY8KgwqAyMDIxLTEyLTI1Cj4gMDE6MjA6NTMuNDkxNjM2NDI3 IC0wODAwCj4gK0BAIC0wLDAgKzEsMjggQEAKPiArKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCj4g KysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZkaWFnbm9zdGljcy1jb2x1bW4tdW5pdD1i eXRlIC1mc2hvdy0KPiBjb2x1bW4gLWZkaWFnbm9zdGljcy1zaG93LWNhcmV0IC1mZGlhZ25vc3Rp Y3MtY29sdW1uLW9yaWdpbj0xMDAgLQo+IFdtdWx0aWNoYXIiIH0gKi8KPiArKwo+ICsrLyogY29s dW1uIHVuaXRzOiBieXRlcyAodmlhIGFyZykKPiArK8KgwqAgY29sdW1uIG9yaWdpbjogMTAwICh2 aWEgYXJnKQo+ICsrwqDCoCB0YWJzdG9wOiA4ICh2aWEgZGVmYXVsdCkgKi8KPiArKwo+ICsrLyog VGhpcyBsaW5lIHN0YXJ0cyB3aXRoIGEgdGFiLsKgICovCj4gKyvCoMKgwqDCoMKgwqBpbnQgYzEg PSAnYzEnOyAvKiB7IGRnLXdhcm5pbmcgIjExMDogbXVsdGktY2hhcmFjdGVyCj4gY2hhcmFjdGVy IGNvbnN0YW50IiB9ICovCj4gKysvKiB7IGRnLWJlZ2luLW11bHRpbGluZS1vdXRwdXQgIiIgfQo+ ICsrwqDCoMKgwqDCoMKgwqDCoCBpbnQgYzEgPSAnYzEnOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBefn5+Cj4gKyvCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQg IiIgfSAqLwo+ICsrCj4gKysvKiBUaGlzIGxpbmUgc3RhcnRzIHdpdGggPHRhYnN0b3A+IHNwYWNl cy7CoCAqLwo+ICsrwqDCoMKgwqDCoMKgwqAgaW50IGMyID0gJ2MyJzsgLyogeyBkZy13YXJuaW5n ICIxMTc6IG11bHRpLWNoYXJhY3Rlcgo+IGNoYXJhY3RlciBjb25zdGFudCIgfSAqLwo+ICsrLyog eyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArK8KgwqDCoMKgwqDCoMKgwqAgaW50 IGMyID0gJ2MyJzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXn5+fgo+ ICsrwqDCoCB7IGRnLWVuZC1tdWx0aWxpbmUtb3V0cHV0ICIiIH0gKi8KPiArKwo+ICsrLyogVGhp cyBsaW5lIHN0YXJ0cyB3aXRoIDx0YWJzdG9wPiBzcGFjZXMgYW5kIGhhcyBhbiBpbnRlcm5hbCB0 YWIKPiBhZnRlcgo+ICsrwqDCoCBhIHNwYWNlLsKgICovCj4gKyvCoMKgwqDCoMKgwqDCoCBpbnQg YzMgPcKgwqDCoMKgwqDCoCdjMyc7IC8qIHsgZGctd2FybmluZyAiMTE4OiBtdWx0aS1jaGFyYWN0 ZXIKPiBjaGFyYWN0ZXIgY29uc3RhbnQiIH0gKi8KPiArKy8qIHsgZGctYmVnaW4tbXVsdGlsaW5l LW91dHB1dCAiIiB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgIGludCBjMyA9wqDCoMKgwqDCoMKgwqAg J2MzJzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBefn5+Cj4gKyvCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQgIiIgfSAqLwo+ICtkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy03LmMK PiBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtdW5pdHMtNy5jCj4gKy0t LSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtdW5pdHMtNy5jwqDCoDE5 NjktMTItMzEKPiAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy11bml0cy03LmPCoMKgMjAyMS0xMi0yNQo+IDAxOjIw OjUzLjQ5MTYzNjQyNyAtMDgwMAo+ICtAQCAtMCwwICsxLDI4IEBACj4gKysvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLwo+ICsrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mZGlhZ25vc3RpY3Mt Y29sdW1uLXVuaXQ9Ynl0ZSAtZnNob3ctCj4gY29sdW1uIC1mZGlhZ25vc3RpY3Mtc2hvdy1jYXJl dCAtZnRhYnN0b3A9OSAtV211bHRpY2hhciIgfSAqLwo+ICsrCj4gKysvKiBjb2x1bW4gdW5pdHM6 IGJ5dGVzICh2aWEgYXJnKQo+ICsrwqDCoCBjb2x1bW4gb3JpZ2luOiAxICh2aWEgZGVmYXVsdCkK PiArK8KgwqAgdGFic3RvcDogOSAodmlhIGFyZykgKi8KPiArKwo+ICsrLyogVGhpcyBsaW5lIHN0 YXJ0cyB3aXRoIGEgdGFiLsKgICovCj4gKyvCoMKgwqDCoMKgwqBpbnQgYzEgPSAnYzEnOyAvKiB7 IGRnLXdhcm5pbmcgIjExOiBtdWx0aS1jaGFyYWN0ZXIgY2hhcmFjdGVyCj4gY29uc3RhbnQiIH0g Ki8KPiArKy8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqAgaW50IGMxID0gJ2MxJzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBefn5+Cj4gKyvCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQgIiIgfSAqLwo+ ICsrCj4gKysvKiBUaGlzIGxpbmUgc3RhcnRzIHdpdGggPHRhYnN0b3A+IHNwYWNlcy7CoCAqLwo+ ICsrwqDCoMKgwqDCoMKgwqDCoCBpbnQgYzIgPSAnYzInOyAvKiB7IGRnLXdhcm5pbmcgIjE5OiBt dWx0aS1jaGFyYWN0ZXIKPiBjaGFyYWN0ZXIgY29uc3RhbnQiIH0gKi8KPiArKy8qIHsgZGctYmVn aW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGMyID0g J2MyJzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+Cj4gKyvC oMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQgIiIgfSAqLwo+ICsrCj4gKysvKiBUaGlzIGxp bmUgc3RhcnRzIHdpdGggPHRhYnN0b3A+IHNwYWNlcyBhbmQgaGFzIGFuIGludGVybmFsIHRhYgo+ IGFmdGVyCj4gKyvCoMKgIGEgc3BhY2UuwqAgKi8KPiArK8KgwqDCoMKgwqDCoMKgwqAgaW50IGMz ID3CoMKgwqDCoMKgJ2MzJzsgLyogeyBkZy13YXJuaW5nICIyMDogbXVsdGktY2hhcmFjdGVyCj4g Y2hhcmFjdGVyIGNvbnN0YW50IiB9ICovCj4gKysvKiB7IGRnLWJlZ2luLW11bHRpbGluZS1vdXRw dXQgIiIgfQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIGludCBjMyA9wqDCoMKgwqDCoMKgwqDCoMKg ICdjMyc7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXn5+fgo+ICsrwqDCoCB7IGRnLWVuZC1tdWx0aWxpbmUtb3V0cHV0ICIiIH0gKi8K PiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtdW5p dHMtOC5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTgu Ywo+ICstLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLXVuaXRzLTgu Y8KgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtdW5pdHMtOC5jwqDCoDIwMjEtMTItMjUK PiAwMToyMDo1My40OTE2MzY0MjcgLTA4MDAKPiArQEAgLTAsMCArMSwyOCBAQAo+ICsrLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KPiArKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZnNob3ct Y29sdW1uIC1mZGlhZ25vc3RpY3Mtc2hvdy1jYXJldAo+IC1mdGFic3RvcD05IC1XbXVsdGljaGFy IiB9ICovCj4gKysKPiArKy8qIGNvbHVtbiB1bml0czogZGlzcGxheSAodmlhIGRlZmF1bHQpCj4g KyvCoMKgIGNvbHVtbiBvcmlnaW46IDEgKHZpYSBkZWZhdWx0KQo+ICsrwqDCoCB0YWJzdG9wOiA5 ICh2aWEgYXJnKSAqLwo+ICsrCj4gKysvKiBUaGlzIGxpbmUgc3RhcnRzIHdpdGggYSB0YWIuwqAg Ki8KPiArK8KgwqDCoMKgwqDCoGludCBjMSA9ICdjMSc7IC8qIHsgZGctd2FybmluZyAiMTk6IG11 bHRpLWNoYXJhY3RlciBjaGFyYWN0ZXIKPiBjb25zdGFudCIgfSAqLwo+ICsrLyogeyBkZy1iZWdp bi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBpbnQgYzEgPSAn YzEnOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn4KPiArK8Kg wqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9ICovCj4gKysKPiArKy8qIFRoaXMgbGlu ZSBzdGFydHMgd2l0aCA8dGFic3RvcD4gc3BhY2VzLsKgICovCj4gKyvCoMKgwqDCoMKgwqDCoMKg IGludCBjMiA9ICdjMic7IC8qIHsgZGctd2FybmluZyAiMTk6IG11bHRpLWNoYXJhY3Rlcgo+IGNo YXJhY3RlciBjb25zdGFudCIgfSAqLwo+ICsrLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0 ICIiIH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBpbnQgYzIgPSAnYzInOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn4KPiArK8KgwqAgeyBkZy1lbmQtbXVsdGls aW5lLW91dHB1dCAiIiB9ICovCj4gKysKPiArKy8qIFRoaXMgbGluZSBzdGFydHMgd2l0aCA8dGFi c3RvcD4gc3BhY2VzIGFuZCBoYXMgYW4gaW50ZXJuYWwgdGFiCj4gYWZ0ZXIKPiArK8KgwqAgYSBz cGFjZS7CoCAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoCBpbnQgYzMgPcKgwqDCoMKgwqAnYzMnOyAv KiB7IGRnLXdhcm5pbmcgIjI4OiBtdWx0aS1jaGFyYWN0ZXIKPiBjaGFyYWN0ZXIgY29uc3RhbnQi IH0gKi8KPiArKy8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqAgaW50IGMzID3CoMKgwqDCoMKgwqDCoMKgwqAgJ2MzJzsKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+Cj4gKyvC oMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQgIiIgfSAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vbWlzc2luZy1jbG9zZS1zeW1ib2wuYwo+IGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vbWlzc2luZy1jbG9zZS1zeW1ib2wuYwo+ICstLS0gYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9taXNzaW5nLWNsb3NlLXN5bWJvbC5jwqDCoMKgwqDCoMKg wqDCoDIwMjAtCj4gMDctMjIgMjM6MzU6MTcuOTEyMzkwODEwIC0wNzAwCj4gKysrKyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL21pc3NpbmctY2xvc2Utc3ltYm9sLmPCoMKgwqDCoMKgwqDC oMKgMjAyMS0KPiAxMi0yNSAwMToyMDo1My40OTE2MzY0MjcgLTA4MDAKPiArQEAgLTI0LDkgKzI0 LDkgQEAgdm9pZCB0ZXN0X3N0YXRpY19hc3NlcnRfZGlmZmVyZW50X2xpbmUgKAo+ICvCoMKgIF9T dGF0aWNfYXNzZXJ0KHNpemVvZihpbnQpID49IHNpemVvZihjaGFyKSwgLyogeyBkZy1tZXNzYWdl ICJ0bwo+IG1hdGNoIHRoaXMgJ1xcKCciIH0gKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJtc2ciOyAvKiB7IGRnLWVycm9yICJleHBlY3RlZCAnXFwpJyBiZWZvcmUgJzsnCj4g dG9rZW4iIH0gKi8KPiArwqDCoCAvKiB7IGRnLWJlZ2luLW11bHRpbGluZS1vdXRwdXQgIiIgfQo+ ICstwqDCoMKgICJtc2ciOwo+ICstwqDCoMKgwqDCoMKgwqDCoCBeCj4gKy3CoMKgwqDCoMKgwqDC oMKgICkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm1zZyI7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeCj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCApCj4gK8KgwqDCoMKgwqAgeyBk Zy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9ICovCj4gK8KgwqAgLyogeyBkZy1iZWdpbi1tdWx0 aWxpbmUtb3V0cHV0ICIiIH0KPiArwqDCoMKgIF9TdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQpID49 IHNpemVvZihjaGFyKSwKPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L1dtaXNsZWFkaW5nLWluZGVudGF0aW9uLTMuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vV21pc2xlYWRpbmctaW5kZW50YXRpb24tMy5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL1dtaXNsZWFkaW5nLWluZGVudGF0aW9uLTMuY8KgwqDCoDIwMjAtCj4gMDctMjIg MjM6MzU6MTcuOTA0MzkwNzIyIC0wNzAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL1dtaXNsZWFkaW5nLWluZGVudGF0aW9uLTMuY8KgwqDCoDIwMjEtCj4gMTItMjUgMDE6MjA6 NTMuNDg3NjM2NDk0IC0wODAwCj4gK0BAIC0zNiwyMCArMzYsMjAgQEAgaW50IGZuXzYgKGludCBh LCBpbnQgYiwgaW50IGMpCj4gK8KgwqDCoMKgwqDCoMKgLyogLi4uICovCj4gK8KgwqDCoMKgwqDC oMKgaWYgKChlcnIgPSBmb28gKGEpKSAhPSAwKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBnb3RvIGZhaWw7Cj4gKy3CoMKgwqDCoMKgwqBpZiAoKGVyciA9IGZvbyAoYikpICE9IDAp IC8qIHsgZGctbWVzc2FnZSAiMjogdGhpcyAnaWYnCj4gY2xhdXNlIGRvZXMgbm90IGd1YXJkLi4u IiB9ICovCj4gKyvCoMKgwqDCoMKgwqBpZiAoKGVyciA9IGZvbyAoYikpICE9IDApIC8qIHsgZGct bWVzc2FnZSAiOTogdGhpcyAnaWYnCj4gY2xhdXNlIGRvZXMgbm90IGd1YXJkLi4uIiB9ICovCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZmFpbDsKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnb3RvIGZhaWw7IC8qIHsgZGctbWVzc2FnZSAiMzogLi4udGhpcyBz dGF0ZW1lbnQsIGJ1dAo+IHRoZSBsYXR0ZXIgaXMgbWlzbGVhZGluZ2x5IGluZGVudGVkIGFzIGlm IGl0IHdlcmUgZ3VhcmRlZCBieSB0aGUKPiAnaWYnIiB9ICovCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZ290byBmYWlsOyAvKiB7IGRnLW1lc3NhZ2UgIjE3OiAuLi50aGlzIHN0YXRl bWVudCwKPiBidXQgdGhlIGxhdHRlciBpcyBtaXNsZWFkaW5nbHkgaW5kZW50ZWQgYXMgaWYgaXQg d2VyZSBndWFyZGVkIGJ5IHRoZQo+ICdpZiciIH0gKi8KPiArwqDCoMKgwqDCoMKgwqBpZiAoKGVy ciA9IGZvbyAoYykpICE9IDApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8g ZmFpbDsKPiArwqDCoMKgwqDCoMKgwqAvKiAuLi4gKi8KPiArIAo+ICsgLyogeyBkZy1iZWdpbi1t dWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArLcKgIGlmICgoZXJyID0gZm9vIChiKSkgIT0gMCkKPiAr LcKgIF5+Cj4gKyvCoMKgwqDCoMKgwqDCoMKgIGlmICgoZXJyID0gZm9vIChiKSkgIT0gMCkKPiAr K8KgwqDCoMKgwqDCoMKgwqAgXn4KPiArwqDCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQg IiIgfSAqLwo+ICsgLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArLcKgwqAg Z290byBmYWlsOwo+ICstwqDCoCBefn5+Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIGZhaWw7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+ Cj4gK8KgwqDCoCB7IGRnLWVuZC1tdWx0aWxpbmUtb3V0cHV0ICIiIH0gKi8KPiArIAo+ICsgZmFp bDoKPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1dtaXNsZWFkaW5n LWluZGVudGF0aW9uLmMKPiBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1dtaXNsZWFkaW5n LWluZGVudGF0aW9uLmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV21pc2xl YWRpbmctaW5kZW50YXRpb24uY8KgwqDCoMKgwqAyMDIwLQo+IDA3LTIyIDIzOjM1OjE3LjkwNDM5 MDcyMiAtMDcwMAo+ICsrKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XbWlzbGVhZGlu Zy1pbmRlbnRhdGlvbi5jwqDCoMKgwqDCoDIwMjEtCj4gMTItMjUgMDE6MjA6NTMuNDg3NjM2NDk0 IC0wODAwCj4gK0BAIC02NSw5ICs2NSw5IEBAIGludCBmbl82IChpbnQgYSwgaW50IGIsIGludCBj KQo+ICvCoMKgwqDCoMKgwqDCoC8qIC4uLiAqLwo+ICvCoMKgwqDCoMKgwqDCoGlmICgoZXJyID0g Zm9vIChhKSkgIT0gMCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBmYWls Owo+ICstwqDCoMKgwqDCoMKgaWYgKChlcnIgPSBmb28gKGIpKSAhPSAwKSAvKiB7IGRnLW1lc3Nh Z2UgIjI6IHRoaXMgJ2lmJwo+IGNsYXVzZSBkb2VzIG5vdCBndWFyZC4uLiIgfSAqLwo+ICsrwqDC oMKgwqDCoMKgaWYgKChlcnIgPSBmb28gKGIpKSAhPSAwKSAvKiB7IGRnLW1lc3NhZ2UgIjk6IHRo aXMgJ2lmJwo+IGNsYXVzZSBkb2VzIG5vdCBndWFyZC4uLiIgfSAqLwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnb3RvIGZhaWw7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZ290byBmYWlsOyAvKiB7IGRnLW1lc3NhZ2UgIjM6IC4uLnRoaXMgc3RhdGVtZW50LCBidXQK PiB0aGUgbGF0dGVyIGlzIG1pc2xlYWRpbmdseSBpbmRlbnRlZCBhcyBpZiBpdCB3ZXJlIGd1YXJk ZWQgYnkgdGhlCj4gJ2lmJyIgfSAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdv dG8gZmFpbDsgLyogeyBkZy1tZXNzYWdlICIxNzogLi4udGhpcyBzdGF0ZW1lbnQsCj4gYnV0IHRo ZSBsYXR0ZXIgaXMgbWlzbGVhZGluZ2x5IGluZGVudGVkIGFzIGlmIGl0IHdlcmUgZ3VhcmRlZCBi eSB0aGUKPiAnaWYnIiB9ICovCj4gK8KgwqDCoMKgwqDCoMKgaWYgKChlcnIgPSBmb28gKGMpKSAh PSAwKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGZhaWw7Cj4gK8KgwqDC oMKgwqDCoMKgLyogLi4uICovCj4gK0BAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBmbl8xNl90YWJz ICh2b2lkKQo+ICvCoMKgwqDCoCB3aGlsZSAoZmxhZ0EpCj4gK8KgwqDCoMKgwqDCoCBpZiAoZmxh Z0IpIC8qIHsgZGctbWVzc2FnZSAiNzogdGhpcyAnaWYnIGNsYXVzZSBkb2VzIG5vdAo+IGd1YXJk Li4uIiB9ICovCj4gK8KgwqDCoMKgwqDCoMKgZm9vICgwKTsKPiArLcKgwqDCoMKgwqDCoGZvbyAo MSk7LyogeyBkZy1tZXNzYWdlICIyOiAuLi50aGlzIHN0YXRlbWVudCwgYnV0IHRoZSBsYXR0ZXIK PiBpcyBtaXNsZWFkaW5nbHkgaW5kZW50ZWQgYXMgaWYgaXQgd2VyZSBndWFyZGVkIGJ5IHRoZSAn aWYnIiB9ICovCj4gKyvCoMKgwqDCoMKgwqBmb28gKDEpOy8qIHsgZGctbWVzc2FnZSAiOTogLi4u dGhpcyBzdGF0ZW1lbnQsIGJ1dCB0aGUgbGF0dGVyCj4gaXMgbWlzbGVhZGluZ2x5IGluZGVudGVk IGFzIGlmIGl0IHdlcmUgZ3VhcmRlZCBieSB0aGUgJ2lmJyIgfSAqLwo+ICsgfQo+ICsgCj4gKyB2 b2lkIGZuXzE3X3NwYWNlcyAodm9pZCkKPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2FuYWx5emVyL21hbGxvYy1wYXRocy05LmMKPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2Fu YWx5emVyL21hbGxvYy1wYXRocy05LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYW5h bHl6ZXIvbWFsbG9jLXBhdGhzLTkuY8KgwqDCoDIwMjAtMDctMjIKPiAyMzozNToxOC4xMjQzOTMx NDQgLTA3MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYW5hbHl6ZXIvbWFsbG9jLXBh dGhzLTkuY8KgwqDCoDIwMjEtMTItMjUKPiAwMToyMDo1My40OTE2MzY0MjcgLTA4MDAKPiArQEAg LTI4OCw3ICsyODgsNyBAQCBpbnQgdGVzdF8zIChpbnQgeCwgaW50IHkpCj4gK8KgwqDCoMKgIHzC oMKgwqDCoMKgIHzCoMKgwqDCoCB+fn5+fn5+fn5+Cj4gK8KgwqDCoMKgIHzCoMKgwqDCoMKgIHzC oMKgwqDCoCB8Cj4gK8KgwqDCoMKgIHzCoMKgwqDCoMKgIHzCoMKgwqDCoCAoNCkgLi4udG8gaGVy ZQo+ICstwqDCoMKgIHzCoMKgIE5OIHzCoMKgwqDCoMKgIHRvIGRlcmVmZXJlbmNlIGl0IGFib3Zl Cj4gKyvCoMKgwqAgfMKgwqAgTk4gfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHRvIGRlcmVmZXJlbmNlIGl0IGFib3ZlCj4gK8KgwqDCoMKgIHzCoMKgIE5OIHzCoMKgIHJl dHVybiAqcHRyOwo+ICvCoMKgwqDCoCB8wqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIH5+ fn4KPiArwqDCoMKgwqAgfMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4gK2RpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9iYWQtYmluYXJ5LW9wcy5jCj4gYi9nY2MvdGVz dHN1aXRlL2djYy5kZy9iYWQtYmluYXJ5LW9wcy5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2JhZC1iaW5hcnktb3BzLmPCoMKgwqDCoDIwMjAtMDctMjIKPiAyMzozNToxOC4xMjgzOTMx OTAgLTA3MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmFkLWJpbmFyeS1vcHMuY8Kg wqDCoMKgMjAyMS0xMi0yNQo+IDAxOjIwOjUzLjQ5MTYzNjQyNyAtMDgwMAo+ICtAQCAtMzUsMTAg KzM1LDEwIEBAIGludCB0ZXN0XzIgKHZvaWQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfn5+ fn5+fn5+fn5+fn5+fgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3Qgcwo+ICstwqDCoMKgICsgc29tZV9vdGhlcl9mdW5jdGlvbiAoKSk7 Cj4gKy3CoMKgwqAgXiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Cj4gKy3CoMKgwqDCoMKgIHwKPiAr LcKgwqDCoMKgwqAgc3RydWN0IHQKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgICsgc29tZV9vdGhl cl9mdW5jdGlvbiAoKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoCBeIH5+fn5+fn5+fn5+fn5+ fn5+fn5+fn4KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IHQKPiArwqDCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQg IiIgfSAqLwo+ICsgfQo+ICsgCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9m b3JtYXQvYnJhbmNoLTEuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZm9ybWF0L2JyYW5jaC0x LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZm9ybWF0L2JyYW5jaC0xLmPCoMKgwqAy MDIwLTA3LTIyCj4gMjM6MzU6MTguMTUyMzkzNDU0IC0wNzAwCj4gKysrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2Zvcm1hdC9icmFuY2gtMS5jwqDCoMKgMjAyMS0xMi0yNQo+IDAxOjIwOjUzLjQ5 MTYzNjQyNyAtMDgwMAo+ICtAQCAtMTAsNyArMTAsNyBAQCBmb28gKGxvbmcgbCwgaW50IG5mb28p Cj4gKyB7Cj4gK8KgwqAgcHJpbnRmICgobmZvbyA+IDEpID8gIiVkIGZvb3MiIDogIiVkIGZvbyIs IG5mb28pOwo+ICvCoMKgIHByaW50ZiAoKGwgPiAxKSA/ICIlZCBmb29zIiAvKiB7IGRnLXdhcm5p bmcgIjIzOmludCIgIndyb25nIHR5cGUKPiBpbiBjb25kaXRpb25hbCBleHByIiB9ICovCj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAiJWQgZm9vIiwgbCk7IC8qIHsgZGctd2Fy bmluZyAiMTY6aW50IiAid3JvbmcKPiB0eXBlIGluIGNvbmRpdGlvbmFsIGV4cHIiIH0gKi8KPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICIlZCBmb28iLCBsKTsgLyogeyBkZy13 YXJuaW5nICIyMzppbnQiICJ3cm9uZwo+IHR5cGUgaW4gY29uZGl0aW9uYWwgZXhwciIgfSAqLwo+ ICvCoMKgIHByaW50ZiAoKGwgPiAxKSA/ICIlbGQgZm9vcyIgOiAiJWQgZm9vIiwgbCk7IC8qIHsg ZGctd2FybmluZwo+ICIzNjppbnQiICJ3cm9uZyB0eXBlIGluIGNvbmRpdGlvbmFsIGV4cHIiIH0g Ki8KPiArwqDCoCBwcmludGYgKChsID4gMSkgPyAiJWQgZm9vcyIgOiAiJWxkIGZvbyIsIGwpOyAv KiB7IGRnLXdhcm5pbmcKPiAiMjM6aW50IiAid3JvbmcgdHlwZSBpbiBjb25kaXRpb25hbCBleHBy IiB9ICovCj4gK8KgwqAgLyogU2hvdWxkIGFsbG93IG9uZSBjYXNlIHRvIGhhdmUgZXh0cmEgYXJn dW1lbnRzLsKgICovCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9mb3JtYXQv cHI3OTIxMC5jCj4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9mb3JtYXQvcHI3OTIxMC5jCj4gKy0t LSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2Zvcm1hdC9wcjc5MjEwLmPCoMKgwqDCoDIwMjAtMDct MjIKPiAyMzozNToxOC4xNTIzOTM0NTQgLTA3MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvZm9ybWF0L3ByNzkyMTAuY8KgwqDCoMKgMjAyMS0xMi0yNQo+IDAxOjIwOjUzLjQ5MTYzNjQy NyAtMDgwMAo+ICtAQCAtMjAsNCArMjAsNCBAQCBMUEZDX1ZQT1JUX0FUVFJfUihwZWVyX3BvcnRf bG9naW4sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJBbGxvdyBwZWVyIHBv cnRzIG9uIHRoZSBzYW1lIHBoeXNpY2FsIHBvcnQgdG8KPiBsb2dpbiB0byBlYWNoICIKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm90aGVyLiIpOwo+ICsgCj4gKy0vKiB7IGRn LXdhcm5pbmcgIjY6IGZvcm1hdCAuJWQuIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAuaW50Liwg YnV0Cj4gYXJndW1lbnQgNCBoYXMgdHlwZSAudW5zaWduZWQgaW50LiAiICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xMiB9ICovCj4gKysvKiB7IGRnLXdhcm5pbmcgIjIwOiBmb3JtYXQgLiVkLiBleHBl Y3RzIGFyZ3VtZW50IG9mIHR5cGUgLmludC4sCj4gYnV0IGFyZ3VtZW50IDQgaGFzIHR5cGUgLnVu c2lnbmVkIGludC4gIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMTIgfQo+ICovCj4gK2RpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wbHVnaW4vZGlhZ25vc3RpYy10ZXN0LQo+IGV4cHJl c3Npb25zLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3BsdWdpbi9kaWFnbm9zdGljLXRlc3Qt Cj4gZXhwcmVzc2lvbnMtMS5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3BsdWdpbi9k aWFnbm9zdGljLXRlc3QtZXhwcmVzc2lvbnMtCj4gMS5jwqDCoMKgwqDCoMKgMjAyMC0wNy0yMiAy MzozNToxOC4xNzIzOTM2NzQgLTA3MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGx1 Z2luL2RpYWdub3N0aWMtdGVzdC1leHByZXNzaW9ucy0KPiAxLmPCoMKgwqDCoMKgwqAyMDIxLTEy LTI1IDAxOjIwOjUzLjQ5MTYzNjQyNyAtMDgwMAo+ICtAQCAtNTQwLDE1ICs1NDAsMTUgQEAgdm9p ZCB0ZXN0X2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wICh1bgo+ICvCoMKgIF9fZW1pdF9leHBy ZXNzaW9uX3JhbmdlICgwLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBmIChpKSArIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AKPiAobG9u ZywgaW50KSk7IC8qIHsgZGctd2FybmluZyAicmFuZ2UiIH0gKi8KPiArIC8qIHsgZGctYmVnaW4t bXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKy3CoMKgwqDCoMKgwqAgZiAoaSkgKyBfX2J1aWx0aW5f dHlwZXNfY29tcGF0aWJsZV9wIChsb25nLCBpbnQpKTsKPiArLcKgwqDCoMKgwqDCoCB+fn5+fn5e fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmIChpKSArIF9fYnVp bHRpbl90eXBlc19jb21wYXRpYmxlX3AKPiAobG9uZywgaW50KSk7Cj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiB+fn5+fn5efn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KPiArwqDCoMKgIHsgZGctZW5kLW11 bHRpbGluZS1vdXRwdXQgIiIgfSAqLwo+ICsgCj4gK8KgwqAgX19lbWl0X2V4cHJlc3Npb25fcmFu Z2UgKDAsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AgKGxvbmcsIGludCkgKwo+IGYgKGkpKTsg LyogeyBkZy13YXJuaW5nICJyYW5nZSIgfSAqLwo+ICsgLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUt b3V0cHV0ICIiIH0KPiArLcKgwqDCoMKgwqDCoCBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9w IChsb25nLCBpbnQpICsgZiAoaSkpOwo+ICstwqDCoMKgwqDCoMKgIH5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Xn5+fn5+fgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fYnVpbHRpbl90eXBlc19jb21wYXRp YmxlX3AgKGxvbmcsCj4gaW50KSArIGYgKGkpKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+Xn5+fn5+fgo+ICvCoMKgwqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91 dHB1dCAiIiB9ICovCj4gKyB9Cj4gKyAKPiArQEAgLTY3MSw4ICs2NzEsOCBAQCB2b2lkIHRlc3Rf bXVsdGlwbGVfb3JkaW5hcnlfbWFwcyAodm9pZCkKPiArIC8qIHsgZGctYmVnaW4tbXVsdGlsaW5l LW91dHB1dCAiIiB9Cj4gK8KgwqDCoCBfX2VtaXRfZXhwcmVzc2lvbl9yYW5nZSAoMCwgZm9vICgw LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KPiArLcKgwqDC oMKgwqDCoMKgCj4gIjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3Cj4gODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3 ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkiKSk7Cj4gKy3CoMKgwqDCoMKgwqDCoAo+ IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiAiMDEyMzQ1Njc4OTAx MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NjcK PiA4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy MzQ1Njc4OSIpKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KPiB+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Cj4g K8KgwqDCoCB7IGRnLWVuZC1tdWx0aWxpbmUtb3V0cHV0ICIiIH0gKi8KPiArIAo+ICvCoMKgIC8q IEFub3RoZXIgZXhwcmVzc2lvbiB0aGF0IHRyYW5zaXRpb25zIGJldHdlZW4gb3JkaW5hcnkgbWFw czsKPiB0aGlzCj4gK0BAIC02ODUsOCArNjg1LDggQEAgdm9pZCB0ZXN0X211bHRpcGxlX29yZGlu YXJ5X21hcHMgKHZvaWQpCj4gKyAvKiB7IGRnLWJlZ2luLW11bHRpbGluZS1vdXRwdXQgIiIgfQo+ ICvCoMKgwqAgX19lbWl0X2V4cHJlc3Npb25fcmFuZ2UgKDAsIGZvbyAoMCwKPiAiMDEyMzQ1Njc4 OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1 NjcKPiA4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5 MDEyMzQ1Njc4OTAxMjM0NTYKPiA3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUKPiA2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3 ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQKPiA1Njc4OTAx MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4 OTAxMjMKPiA0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy MzQ1Njc4OTAxMjM0NTY3ODkwMTIKPiAzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2 Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEKPiAyMzQ1Njc4OTAxMjM0NTY3ODkw MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAKPiAxMjM0 NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx MjM0NTY3ODkKPiAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1 Njc4OTAxMjM0NTY3ODkwMTIzNDU2NzgKPiA5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5 MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1NjcKPiA4OTAxMjM0NTY3ODkwMTIz NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTYKPiA3 ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0 NTY3ODkwMTIzNDUKPiA2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4 OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQKPiA1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjMKPiA0NTY3ODkwMTIzNDU2 Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIK PiAzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3 ODkwMTIzNDU2Nzg5MDEKPiAyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAKPiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1 Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKPiAwMTIzNDU2Nzg5 MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2 NzgKPiA5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw MTIzNDU2Nzg5MDEyMzQ1NjcKPiA4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0 NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTYKPiA3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4 OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUKPiA2Nzg5MDEy MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5 MDEyMzQKPiA1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz NDU2Nzg5MDEyMzQ1Njc4OTAxMjMKPiA0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3 ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIKPiAzNDU2Nzg5MDEyMzQ1Njc4OTAx MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEKPiAyMzQ1 Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy MzQ1Njc4OTAKPiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2 Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKPiAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2NzgKPiA5MDEyMzQ1Njc4OTAxMjM0 NTY3ODkiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoAo+IF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+ IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+IH5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fgo+ICstwqDCoMKgwqDCoMKgwqAgMCkpOwo+ICstwqDCoMKgwqDCoMKg wqAgfn7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgCj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDApKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfn4KPiArwqDCoMKgIHsgZGctZW5kLW11 bHRpbGluZS1vdXRwdXQgIiIgfSAqLwo+ICsgfQo+ICsgCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy9wbHVnaW4vZGlhZ25vc3RpYy10ZXN0LXN0cmluZy0KPiBsaXRlcmFscy0x LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wbHVnaW4vZGlhZ25vc3RpYy10ZXN0LXN0cmluZy0K PiBsaXRlcmFscy0xLmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGx1Z2luL2RpYWdu b3N0aWMtdGVzdC1zdHJpbmctbGl0ZXJhbHMtCj4gMS5jwqDCoDIwMjAtMDctMjIgMjM6MzU6MTgu MTcyMzkzNjc0IC0wNzAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3BsdWdpbi9kaWFn bm9zdGljLXRlc3Qtc3RyaW5nLWxpdGVyYWxzLQo+IDEuY8KgwqAyMDIxLTEyLTI1IDAxOjIwOjUz LjQ5MTYzNjQyNyAtMDgwMAo+ICtAQCAtMzM1LDExICszMzUsMTEgQEAgcHI4NzY1MiAoY29uc3Qg Y2hhciAqc3RlbSwgaW50IGNvdW50ZXIpCj4gKyAvKiB7IGRnLWVycm9yICJ1bmFibGUgdG8gcmVh ZCBzdWJzdHJpbmcgbG9jYXRpb246IHVuYWJsZSB0byByZWFkCj4gc291cmNlIGxpbmUiICIiIHsg dGFyZ2V0IGMgfSAzMjkgfSAqLwo+ICsgLyogeyBkZy1lcnJvciAidW5hYmxlIHRvIHJlYWQgc3Vi c3RyaW5nIGxvY2F0aW9uOiBmYWlsZWQgdG8gZ2V0Cj4gb3JkaW5hcnkgbWFwcyIgIiIgeyB0YXJn ZXQgYysrIH0gMzI5IH0gKi8KPiArIC8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9 Cj4gKy3CoMKgwqDCoCBfX2VtaXRfc3RyaW5nX2xpdGVyYWxfcmFuZ2UoX19GSUxFX18iOiU1ZDog IiBmb3JtYXQsIFwKPiArK8KgwqDCoMKgIF9fZW1pdF9zdHJpbmdfbGl0ZXJhbF9yYW5nZShfX0ZJ TEVfXyI6JTVkOiAiIGZvcm1hdCzCoMKgwqDCoMKgwqDCoCBcCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+fn5+ fgo+ICvCoMKgwqDCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQgIiIgeyB0YXJnZXQgYyB9 IH0gKi8KPiArIC8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAiIiB9Cj4gKy3CoMKgwqDC oCBfX2VtaXRfc3RyaW5nX2xpdGVyYWxfcmFuZ2UoX19GSUxFX18iOiU1ZDogIiBmb3JtYXQsIFwK PiArK8KgwqDCoMKgIF9fZW1pdF9zdHJpbmdfbGl0ZXJhbF9yYW5nZShfX0ZJTEVfXyI6JTVkOiAi IGZvcm1hdCzCoMKgwqDCoMKgwqDCoCBcCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeCj4gK8KgwqDCoMKgwqAgeyBk Zy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB7IHRhcmdldCBjKysgfSB9ICovCj4gKyAKPiArZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3JlZGVjbC00LmMKPiBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3JlZGVjbC00LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcmVkZWNs LTQuY8KgwqAyMDIwLTA3LTIyIDIzOjM1OjE4LjE5MjM5Mzg5NQo+IC0wNzAwCj4gKysrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3JlZGVjbC00LmPCoMKgMjAyMS0xMi0yNSAwMToyMDo1My40OTE2 MzY0MjcKPiAtMDgwMAo+ICtAQCAtMTUsNyArMTUsNyBAQCBmICh2b2lkKQo+ICvCoMKgwqDCoCAv KiBTaG91bGQgZ2V0IGZvcm1hdCB3YXJuaW5ncyBldmVuIHRob3VnaCB0aGUgYnVpbHQtaW4KPiBk ZWNsYXJhdGlvbgo+ICvCoMKgwqDCoMKgwqDCoCBpc24ndCAidmlzaWJsZSIuwqAgKi8KPiArwqDC oMKgwqAgcHJpbnRmICgKPiArLcKgwqDCoMKgwqDCoMKgwqDCoCAiJXMiLCAxKTsgLyogeyBkZy13 YXJuaW5nICI4OmZvcm1hdCIgfSAqLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgICIlcyIsIDEpOyAv KiB7IGRnLXdhcm5pbmcgIjE1OmZvcm1hdCIgfSAqLwo+ICvCoMKgwqDCoCAvKiBUaGUgdHlwZSBv ZiBzdHJjbXAgaGVyZSBzaG91bGQgaGF2ZSBubyBwcm90b3R5cGUuwqAgKi8KPiArwqDCoMKgwqAg aWYgKDApCj4gK8KgwqDCoMKgwqDCoCBzdHJjbXAgKDEpOwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvZGlhZ25vc3RpYy9iYWQtYmluYXJ5LW9wcy5DCj4gYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9kaWFnbm9zdGljL2JhZC1iaW5hcnktb3BzLkMKPiArLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvZGlhZ25vc3RpYy9iYWQtYmluYXJ5LW9wcy5DwqAyMDIwLTA3LTIyCj4gMjM6 MzU6MTcuOTcyMzkxNDcyIC0wNzAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2RpYWdu b3N0aWMvYmFkLWJpbmFyeS1vcHMuQ8KgMjAyMS0xMi0yNQo+IDAxOjIwOjUzLjQ5MTYzNjQyNyAt MDgwMAo+ICtAQCAtMzMsMTAgKzMzLDEwIEBAIGludCB0ZXN0XzIgKHZvaWQpCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfn5+fn5+fn5+fn5+fn5+fgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMKPiArLcKgwqDCoCArIHNvbWVfb3RoZXJfZnVu Y3Rpb24gKCkpOwo+ICstwqDCoMKgIF4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdAo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqAgKyBzb21lX290aGVyX2Z1bmN0aW9uICgpKTsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgIF4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHQKPiArwqDCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQgIiIgfSAqLwo+ICsgfQo+ ICsgCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9wYXJzZS9lcnJvcjQuQwo+ IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcGFyc2UvZXJyb3I0LkMKPiArLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvcGFyc2UvZXJyb3I0LkPCoMKgwqDCoMKgwqAyMDIwLTA3LTIyCj4gMjM6MzU6 MTguMDEyMzkxOTEwIC0wNzAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3BhcnNlL2Vy cm9yNC5DwqDCoMKgwqDCoMKgMjAyMS0xMi0yNQo+IDAxOjIwOjUzLjQ5MTYzNjQyNyAtMDgwMAo+ ICtAQCAtNyw0ICs3LDQgQEAgc3RydWN0IFggewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50KTsKPiArIH07Cj4gKyAKPiArLS8vIHsgZGctZXJyb3IgIjQ6J2l0bicgaGFzIG5v dCBiZWVuIGRlY2xhcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IDYKPiB9Cj4gKysvLyB7IGRnLWVy cm9yICIxODonaXRuJyBoYXMgbm90IGJlZW4gZGVjbGFyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0K PiA2IH0KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZGlhZ25vc3Rp Yy1mb3JtYXQtanNvbi0xLkY5MAo+IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kaWFnbm9z dGljLWZvcm1hdC1qc29uLTEuRjkwCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv ZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0xLkY5MMKgwqDCoDIwMjAtCj4gMDctMjIgMjM6MzU6MTgu NTEyMzk3NDIwIC0wNzAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZGlhZ25v c3RpYy1mb3JtYXQtanNvbi0xLkY5MMKgwqDCoDIwMjEtCj4gMTItMjUgMDE6MjA6NTMuNDkxNjM2 NDI3IC0wODAwCj4gK0BAIC04LDE3ICs4LDIyIEBACj4gKyAhIFdlIGNhbid0IHJlbHkgb24gYW55 IG9yZGVyaW5nIG9mIHRoZSBrZXlzLgo+ICsgCj4gKyAhIHsgZGctcmVnZXhwICJcImtpbmRcIjog XCJlcnJvclwiIiB9Cj4gKyshIHsgZGctcmVnZXhwICJcImNvbHVtbi1vcmlnaW5cIjogMSIgfQo+ ICsgISB7IGRnLXJlZ2V4cCAiXCJtZXNzYWdlXCI6IFwiI2Vycm9yIG1lc3NhZ2VcIiIgfQo+ICsg Cj4gKyAhIHsgZGctcmVnZXhwICJcImNhcmV0XCI6IFx7IiB9Cj4gKyAhIHsgZGctcmVnZXhwICJc ImZpbGVcIjogXCJcW15cblxyXCJcXSpkaWFnbm9zdGljLWZvcm1hdC1qc29uLQo+IDEuRjkwXCIi IH0KPiArICEgeyBkZy1yZWdleHAgIlwibGluZVwiOiA0IiB9Cj4gKyAhIHsgZGctcmVnZXhwICJc ImNvbHVtblwiOiAyIiB9Cj4gKyshIHsgZGctcmVnZXhwICJcImRpc3BsYXktY29sdW1uXCI6IDIi IH0KPiArKyEgeyBkZy1yZWdleHAgIlwiYnl0ZS1jb2x1bW5cIjogMiIgfQo+ICsgCj4gKyAhIHsg ZGctcmVnZXhwICJcImZpbmlzaFwiOiBceyIgfQo+ICsgISB7IGRnLXJlZ2V4cCAiXCJmaWxlXCI6 IFwiXFteXG5cclwiXF0qZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0KPiAxLkY5MFwiIiB9Cj4gKyAh IHsgZGctcmVnZXhwICJcImxpbmVcIjogNCIgfQo+ICsgISB7IGRnLXJlZ2V4cCAiXCJjb2x1bW5c IjogNiIgfQo+ICsrISB7IGRnLXJlZ2V4cCAiXCJkaXNwbGF5LWNvbHVtblwiOiA2IiB9Cj4gKysh IHsgZGctcmVnZXhwICJcImJ5dGUtY29sdW1uXCI6IDYiIH0KPiArIAo+ICsgISB7IGRnLXJlZ2V4 cCAiXCJsb2NhdGlvbnNcIjogXFtcW1x7XH0sIFxdKlxdIiB9Cj4gKyAhIHsgZGctcmVnZXhwICJc ImNoaWxkcmVuXCI6IFxbXFtcXVxbXF1cXSIgfQo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTIuRjkwCj4gYi9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMi5GOTAKPiArLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTIuRjkwwqDCoMKg MjAyMC0KPiAwNy0yMiAyMzozNToxOC41MTIzOTc0MjAgLTA3MDAKPiArKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTIuRjkwwqDCoMKgMjAyMS0K PiAxMi0yNSAwMToyMDo1My40OTE2MzY0MjcgLTA4MDAKPiArQEAgLTgsNiArOCw3IEBACj4gKyAh IFdlIGNhbid0IHJlbHkgb24gYW55IG9yZGVyaW5nIG9mIHRoZSBrZXlzLiAKPiArIAo+ICsgISB7 IGRnLXJlZ2V4cCAiXCJraW5kXCI6IFwid2FybmluZ1wiIiB9Cj4gKyshIHsgZGctcmVnZXhwICJc ImNvbHVtbi1vcmlnaW5cIjogMSIgfQo+ICsgISB7IGRnLXJlZ2V4cCAiXCJtZXNzYWdlXCI6IFwi I3dhcm5pbmcgbWVzc2FnZVwiIiB9Cj4gKyAhIHsgZGctcmVnZXhwICJcIm9wdGlvblwiOiBcIi1X Y3BwXCIiIH0KPiArICEgeyBkZy1yZWdleHAgIlwib3B0aW9uX3VybFwiOiBcIlxbXlxuXHJcIlxd KiNpbmRleC1XY3BwXCIiIH0KPiArQEAgLTE2LDExICsxNywxNSBAQAo+ICsgISB7IGRnLXJlZ2V4 cCAiXCJmaWxlXCI6IFwiXFteXG5cclwiXF0qZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0KPiAyLkY5 MFwiIiB9Cj4gKyAhIHsgZGctcmVnZXhwICJcImxpbmVcIjogNCIgfQo+ICsgISB7IGRnLXJlZ2V4 cCAiXCJjb2x1bW5cIjogMiIgfQo+ICsrISB7IGRnLXJlZ2V4cCAiXCJkaXNwbGF5LWNvbHVtblwi OiAyIiB9Cj4gKyshIHsgZGctcmVnZXhwICJcImJ5dGUtY29sdW1uXCI6IDIiIH0KPiArIAo+ICsg ISB7IGRnLXJlZ2V4cCAiXCJmaW5pc2hcIjogXHsiIH0KPiArICEgeyBkZy1yZWdleHAgIlwiZmls ZVwiOiBcIlxbXlxuXHJcIlxdKmRpYWdub3N0aWMtZm9ybWF0LWpzb24tCj4gMi5GOTBcIiIgfQo+ ICsgISB7IGRnLXJlZ2V4cCAiXCJsaW5lXCI6IDQiIH0KPiArICEgeyBkZy1yZWdleHAgIlwiY29s dW1uXCI6IDgiIH0KPiArKyEgeyBkZy1yZWdleHAgIlwiZGlzcGxheS1jb2x1bW5cIjogOCIgfQo+ ICsrISB7IGRnLXJlZ2V4cCAiXCJieXRlLWNvbHVtblwiOiA4IiB9Cj4gKyAKPiArICEgeyBkZy1y ZWdleHAgIlwibG9jYXRpb25zXCI6IFxbXFtce1x9LCBcXSpcXSIgfQo+ICsgISB7IGRnLXJlZ2V4 cCAiXCJjaGlsZHJlblwiOiBcW1xbXF1cW1xdXF0iIH0KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0zLkY5MAo+IGIvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTMuRjkwCj4gKy0tLSBh L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0zLkY5MMKg wqDCoDIwMjAtCj4gMDctMjIgMjM6MzU6MTguNTEyMzk3NDIwIC0wNzAwCj4gKysrKyBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0zLkY5MMKgwqDCoDIw MjEtCj4gMTItMjUgMDE6MjA6NTMuNDkxNjM2NDI3IC0wODAwCj4gK0BAIC04LDYgKzgsNyBAQAo+ ICsgISBXZSBjYW4ndCByZWx5IG9uIGFueSBvcmRlcmluZyBvZiB0aGUga2V5cy4KPiArIAo+ICsg ISB7IGRnLXJlZ2V4cCAiXCJraW5kXCI6IFwiZXJyb3JcIiIgfQo+ICsrISB7IGRnLXJlZ2V4cCAi XCJjb2x1bW4tb3JpZ2luXCI6IDEiIH0KPiArICEgeyBkZy1yZWdleHAgIlwibWVzc2FnZVwiOiBc IiN3YXJuaW5nIG1lc3NhZ2VcIiIgfQo+ICsgISB7IGRnLXJlZ2V4cCAiXCJvcHRpb25cIjogXCIt V2Vycm9yPWNwcFwiIiB9Cj4gKyAhIHsgZGctcmVnZXhwICJcIm9wdGlvbl91cmxcIjogXCJcW15c blxyXCJcXSojaW5kZXgtV2NwcFwiIiB9Cj4gK0BAIC0xNiwxMSArMTcsMTUgQEAKPiArICEgeyBk Zy1yZWdleHAgIlwiZmlsZVwiOiBcIlxbXlxuXHJcIlxdKmRpYWdub3N0aWMtZm9ybWF0LWpzb24t Cj4gMy5GOTBcIiIgfQo+ICsgISB7IGRnLXJlZ2V4cCAiXCJsaW5lXCI6IDQiIH0KPiArICEgeyBk Zy1yZWdleHAgIlwiY29sdW1uXCI6IDIiIH0KPiArKyEgeyBkZy1yZWdleHAgIlwiZGlzcGxheS1j b2x1bW5cIjogMiIgfQo+ICsrISB7IGRnLXJlZ2V4cCAiXCJieXRlLWNvbHVtblwiOiAyIiB9Cj4g KyAKPiArICEgeyBkZy1yZWdleHAgIlwiZmluaXNoXCI6IFx7IiB9Cj4gKyAhIHsgZGctcmVnZXhw ICJcImZpbGVcIjogXCJcW15cblxyXCJcXSpkaWFnbm9zdGljLWZvcm1hdC1qc29uLQo+IDMuRjkw XCIiIH0KPiArICEgeyBkZy1yZWdleHAgIlwibGluZVwiOiA0IiB9Cj4gKyAhIHsgZGctcmVnZXhw ICJcImNvbHVtblwiOiA4IiB9Cj4gKyshIHsgZGctcmVnZXhwICJcImRpc3BsYXktY29sdW1uXCI6 IDgiIH0KPiArKyEgeyBkZy1yZWdleHAgIlwiYnl0ZS1jb2x1bW5cIjogOCIgfQo+ICsgCj4gKyAh IHsgZGctcmVnZXhwICJcImxvY2F0aW9uc1wiOiBcW1xbXHtcfSwgXF0qXF0iIH0KPiArICEgeyBk Zy1yZWdleHAgIlwiY2hpbGRyZW5cIjogXFtcW1xdXFtcXVxdIiB9Cj4gK2RpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2dvLmRnL2FycmF5Y2xlYXIuZ28KPiBiL2djYy90ZXN0c3VpdGUvZ28uZGcv YXJyYXljbGVhci5nbwo+ICstLS0gYS9nY2MvdGVzdHN1aXRlL2dvLmRnL2FycmF5Y2xlYXIuZ2/C oMKgwqDCoMKgwqDCoMKgMjAyMC0wNy0yMgo+IDIzOjM1OjE4LjU4ODM5ODI1NyAtMDcwMAo+ICsr KysgYi9nY2MvdGVzdHN1aXRlL2dvLmRnL2FycmF5Y2xlYXIuZ2/CoMKgwqDCoMKgwqDCoMKgMjAy MS0xMi0yNQo+IDAxOjIwOjUzLjQ5MTYzNjQyNyAtMDgwMAo+ICtAQCAtMSw1ICsxLDggQEAKPiAr IC8vIHsgZGctZG8gY29tcGlsZSB9Cj4gKyAvLyB7IGRnLW9wdGlvbnMgIi1mZ28tZGVidWctb3B0 aW1pemF0aW9uIiB9Cj4gKysvLyBUaGlzIGNvbW1lbnQgaXMgbmVjZXNzYXJ5IHRvIHdvcmsgYXJv dW5kIGEgZGVqYWdudSBidWcuCj4gT3RoZXJ3aXNlLCB0aGUKPiArKy8vIGNvbHVtbiBvZiB0aGUg c2Vjb25kIGVycm9yIG1lc3NhZ2Ugd291bGQgZXF1YWwgdGhlIHJvdyBvZiB0aGUKPiBmaXJzdCBv bmUsIGFuZAo+ICsrLy8gc2luY2UgdGhlIGVycm9ycyBhcmUgYWxzbyBpZGVudGljYWwsIGRlamFn bnUgaXMgbm90IGFibGUgdG8KPiBkaXN0aW5ndWlzaCB0aGVtLgo+ICsgCj4gKyBwYWNrYWdlIHAK PiArIAo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysub2xkLWRlamEvZysrLmJyZW5k YW4vY3Jhc2gxMS5DCj4gYi9nY2MvdGVzdHN1aXRlL2crKy5vbGQtZGVqYS9nKysuYnJlbmRhbi9j cmFzaDExLkMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysub2xkLWRlamEvZysrLmJyZW5kYW4v Y3Jhc2gxMS5DwqAyMDIwLTA3LTIyCj4gMjM6MzU6MTguMDQ4MzkyMzA4IC0wNzAwCj4gKysrKyBi L2djYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5icmVuZGFuL2NyYXNoMTEuQ8KgMjAyMS0x Mi0yNQo+IDAxOjIwOjUzLjQ5MTYzNjQyNyAtMDgwMAo+ICtAQCAtOSwxMyArOSwxMyBAQCBjbGFz cyBBIHsKPiArwqDCoMKgwqDCoMKgwqBpbnTCoMKgwqDCoMKgaDsKPiArwqDCoMKgwqDCoMKgwqBB KCkgeyBpPTEwOyBqPTIwOyB9Cj4gK8KgwqDCoMKgwqDCoMKgdmlydHVhbCB2b2lkIGYxKCkgeyBw cmludGYoImk9JWQgaj0lZFxuIixpLGopOyB9Cj4gKy3CoMKgwqDCoMKgwqBmcmllbmQgdmlydHVh bCB2b2lkIGYyKCkgeyBwcmludGYoImk9JWQgaj0lZFxuIixpLGopOyB9IC8vIHsKPiBkZy1lcnJv ciAiOTp2aXJ0dWFsIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZnJpZW5kcyIgfQo+ICsrwqDCoMKgwqDC oMKgZnJpZW5kIHZpcnR1YWwgdm9pZCBmMigpIHsgcHJpbnRmKCJpPSVkIGo9JWRcbiIsaSxqKTsg fSAvLyB7Cj4gZGctZXJyb3IgIjE2OnZpcnR1YWwgZnVuY3Rpb25zIGNhbm5vdCBiZSBmcmllbmRz IiB9Cj4gKyB9Owo+ICsgCj4gKyBjbGFzcyBCIDogcHVibGljIEEgewo+ICvCoMKgwqDCoCBwdWJs aWM6Cj4gK8KgwqDCoMKgwqDCoMKgdmlydHVhbCB2b2lkIGYxKCkgeyBwcmludGYoImk9JWQgaj0l ZFxuIixpLGopOyB9Ly8geyBkZy1lcnJvcgo+ICIiIH3CoCBtZW1iZXIuKi8vIEVSUk9SIC3CoCBt ZW1iZXIuKgo+ICstwqDCoMKgwqDCoMKgZnJpZW5kIHZpcnR1YWwgdm9pZCBmMigpIHsgcHJpbnRm KCJpPSVkIGo9JWRcbiIsaSxqKTsgfcKgIC8vIHsKPiBkZy1lcnJvciAiOTp2aXJ0dWFsIGZ1bmN0 aW9ucyBjYW5ub3QgYmUgZnJpZW5kcyIgfQo+ICsrwqDCoMKgwqDCoMKgZnJpZW5kIHZpcnR1YWwg dm9pZCBmMigpIHsgcHJpbnRmKCJpPSVkIGo9JWRcbiIsaSxqKTsgfcKgIC8vIHsKPiBkZy1lcnJv ciAiMTY6dmlydHVhbCBmdW5jdGlvbnMgY2Fubm90IGJlIGZyaWVuZHMiIH0KPiArIC8vIHsgZGct ZXJyb3IgInByaXZhdGUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KPiArIH07Cj4gKyAKPiAr ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5wdC9vdmVybG9hZDIu Qwo+IGIvZ2NjL3Rlc3RzdWl0ZS9nKysub2xkLWRlamEvZysrLnB0L292ZXJsb2FkMi5DCj4gKy0t LSBhL2djYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5wdC9vdmVybG9hZDIuQ8KgwqDCoMKg MjAyMC0wNy0yMgo+IDIzOjM1OjE4LjA3MjM5MjU3MiAtMDcwMAo+ICsrKysgYi9nY2MvdGVzdHN1 aXRlL2crKy5vbGQtZGVqYS9nKysucHQvb3ZlcmxvYWQyLkPCoMKgwqDCoDIwMjEtMTItMjUKPiAw MToyMDo1My40OTE2MzY0MjcgLTA4MDAKPiArQEAgLTEyLDUgKzEyLDUgQEAgaW50Cj4gKyBtYWlu KCkKPiArIHsKPiArwqDCoMKgwqDCoMKgwqBDPGNoYXIqPsKgwqDCoMKgwqDCoMKgwqBjOwo+ICst wqDCoMKgwqDCoMKgY2hhcirCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCA9IFooYy5PKTsgLy97IGRn LWVycm9yICIxMzonWicgd2FzIG5vdAo+IGRlY2xhcmVkIiB9IGFtYmlndW91cyBjLk8KPiArK8Kg wqDCoMKgwqDCoGNoYXIqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHAgPSBaKGMuTyk7IC8veyBkZy1l cnJvciAiMjk6J1onIHdhcyBub3QKPiBkZWNsYXJlZCIgfSBhbWJpZ3VvdXMgYy5PCj4gKyB9Cj4g K2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5vbGQtZGVqYS9nKysucm9iZXJ0bC9lYjEw OS5DCj4gYi9nY2MvdGVzdHN1aXRlL2crKy5vbGQtZGVqYS9nKysucm9iZXJ0bC9lYjEwOS5DCj4g Ky0tLSBhL2djYy90ZXN0c3VpdGUvZysrLm9sZC1kZWphL2crKy5yb2JlcnRsL2ViMTA5LkPCoMKg wqAyMDIwLTA3LTIyCj4gMjM6MzU6MTguMDc2MzkyNjE3IC0wNzAwCj4gKysrKyBiL2djYy90ZXN0 c3VpdGUvZysrLm9sZC1kZWphL2crKy5yb2JlcnRsL2ViMTA5LkPCoMKgwqAyMDIxLTEyLTI1Cj4g MDE6MjA6NTMuNDkxNjM2NDI3IC0wODAwCj4gK0BAIC00OCw4ICs0OCw4IEBAIG9zdHJlYW0mIG9w ZXJhdG9yPDwob3N0cmVhbSYgb3MsIEdyYXBoPFYKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgIC8v IFRoZSBjb21waWxlciBkb2VzIG5vdCBsaWtlIHRoaXMgbGluZSEhISEhIQo+ICvCoMKgwqDCoMKg wqDCoMKgIHR5cGVuYW1lIEdyYXBoPFZlcnRleFR5cGUsIEVkZ2VUeXBlPjo6U3VjY2Vzc29yOjpp dGVyYXRvcgo+ICstwqDCoMKgwqDCoMKgwqAgc3RhcnROID0gR1tpXS5zZWNvbmQuYmVnaW4oKSwg Ly8geyBkZy1lcnJvciAiMTQ6bm8gbWF0Y2giIH0KPiBubyBpbmRleCBvcGVyYXRvcgo+ICstwqDC oMKgwqDCoMKgwqAgZW5kTsKgwqAgPSBHW2ldLnNlY29uZC5lbmQoKTvCoCAvLyB7IGRnLWVycm9y ICIxNDpubyBtYXRjaCIgfQo+IG5vIGluZGV4IG9wZXJhdG9yCj4gKyvCoMKgwqDCoMKgwqDCoCBz dGFydE4gPSBHW2ldLnNlY29uZC5iZWdpbigpLCAvLyB7IGRnLWVycm9yICIyMTpubyBtYXRjaCIg fQo+IG5vIGluZGV4IG9wZXJhdG9yCj4gKyvCoMKgwqDCoMKgwqDCoCBlbmROwqDCoCA9IEdbaV0u c2Vjb25kLmVuZCgpO8KgIC8vIHsgZGctZXJyb3IgIjIxOm5vIG1hdGNoIiB9Cj4gbm8gaW5kZXgg b3BlcmF0b3IKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgIHdoaWxlKHN0YXJ0TiAhPSBlbmROKQo+ ICvCoMKgwqDCoMKgwqDCoMKgIHsKPiArZGlmZiAtLWdpdCBhL2djYy90cmVlLWRpYWdub3N0aWMt cGF0aC5jYyBiL2djYy90cmVlLWRpYWdub3N0aWMtCj4gcGF0aC5jYwo+ICstLS0gYS9nY2MvdHJl ZS1kaWFnbm9zdGljLXBhdGguY2PCoMKgwqDCoMKgwqAyMDIwLTA3LTIyIDIzOjM1OjE4LjYyODM5 ODY5OAo+IC0wNzAwCj4gKysrKyBiL2djYy90cmVlLWRpYWdub3N0aWMtcGF0aC5jY8KgwqDCoMKg wqDCoDIwMjEtMTItMjUgMDE6MjA6NTMuNDkxNjM2NDI3Cj4gLTA4MDAKPiArQEAgLTQ5Myw3ICs0 OTMsNyBAQCBkZWZhdWx0X3RyZWVfZGlhZ25vc3RpY19wYXRoX3ByaW50ZXIgKGRpCj4gK8KgwqDC oCBkb2Vzbid0IGhhdmUgYWNjZXNzIHRvIHRyZWVzIChmb3IgbV9mbmRlY2wpLsKgICovCj4gKyAK PiArIGpzb246OnZhbHVlICoKPiArLWRlZmF1bHRfdHJlZV9tYWtlX2pzb25fZm9yX3BhdGggKGRp YWdub3N0aWNfY29udGV4dCAqLAo+ICsrZGVmYXVsdF90cmVlX21ha2VfanNvbl9mb3JfcGF0aCAo ZGlhZ25vc3RpY19jb250ZXh0ICpjb250ZXh0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBkaWFnbm9zdGljX3Bh dGggKnBhdGgpCj4gKyB7Cj4gK8KgwqAganNvbjo6YXJyYXkgKnBhdGhfYXJyYXkgPSBuZXcganNv bjo6YXJyYXkgKCk7Cj4gK0BAIC01MDQsNyArNTA0LDggQEAgZGVmYXVsdF90cmVlX21ha2VfanNv bl9mb3JfcGF0aCAoZGlhZ25vcwo+ICvCoMKgwqDCoMKgwqAganNvbjo6b2JqZWN0ICpldmVudF9v YmogPSBuZXcganNvbjo6b2JqZWN0ICgpOwo+ICvCoMKgwqDCoMKgwqAgaWYgKGV2ZW50LmdldF9s b2NhdGlvbiAoKSkKPiArwqDCoMKgwqDCoMKgwqBldmVudF9vYmotPnNldCAoImxvY2F0aW9uIiwK PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKganNvbl9mcm9t X2V4cGFuZGVkX2xvY2F0aW9uCj4gKGV2ZW50LmdldF9sb2NhdGlvbiAoKSkpOwo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBqc29uX2Zyb21fZXhwYW5kZWRf bG9jYXRpb24gKGNvbnRleHQsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgCj4gZXZlbnQuZ2V0X2xvY2F0aW9uICgpKSk7Cj4gK8KgwqDCoMKgwqDCoCBsYWJl bF90ZXh0IGV2ZW50X3RleHQgKGV2ZW50LmdldF9kZXNjIChmYWxzZSkpOwo+ICvCoMKgwqDCoMKg wqAgZXZlbnRfb2JqLT5zZXQgKCJkZXNjcmlwdGlvbiIsIG5ldyBqc29uOjpzdHJpbmcKPiAoZXZl bnRfdGV4dC5tX2J1ZmZlcikpOwo+ICvCoMKgwqDCoMKgwqAgZXZlbnRfdGV4dC5tYXliZV9mcmVl ICgpOwo+ICtkaWZmIC0tZ2l0IGEvbGliY3BwL2NoYXJzZXQuYyBiL2xpYmNwcC9jaGFyc2V0LmMK PiArLS0tIGEvbGliY3BwL2NoYXJzZXQuY8KgMjAyMC0wNy0yMiAyMzozNToxOC43MTIzOTk2MjMg LTA3MDAKPiArKysrIGIvbGliY3BwL2NoYXJzZXQuY8KgMjAyMS0xMi0yNSAwMToyMDo1My40OTE2 MzY0MjcgLTA4MDAKPiArQEAgLTIyNzYsNDkgKzIyNzYsOTAgQEAgY3BwX3N0cmluZ19sb2NhdGlv bl9yZWFkZXI6OmdldF9uZXh0ICgpCj4gK8KgwqAgcmV0dXJuIHJlc3VsdDsKPiArIH0KPiArIAo+ ICstLyogSGVscGVyIGZvciBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxheV9jb2x1bW4gYW5kIGl0 cyBpbnZlcnNlLsKgCj4gR2l2ZW4gYQo+ICstwqDCoCBwb2ludGVyIHRvIGEgVVRGLTgtZW5jb2Rl ZCBjaGFyYWN0ZXIsIGNvbXB1dGUgaXRzIGRpc3BsYXkKPiB3aWR0aC7CoCAqSU5CVUZQCj4gKy3C oMKgIHBvaW50cyBvbiBlbnRyeSB0byB0aGUgc3RhcnQgb2YgdGhlIFVURi04IGVuY29kaW5nIG9m IHRoZQo+IGNoYXJhY3RlciwgYW5kCj4gKy3CoMKgIGlzIHVwZGF0ZWQgdG8gcG9pbnQganVzdCBh ZnRlciB0aGUgbGFzdCBieXRlIG9mIHRoZSBlbmNvZGluZy7CoAo+ICpJTkJZVEVTTEVGVFAKPiAr LcKgwqAgY29udGFpbnMgb24gZW50cnkgdGhlIHJlbWFpbmluZyBzaXplIG9mIHRoZSBidWZmZXIg aW50byB3aGljaAo+ICpJTkJVRlAKPiArLcKgwqAgcG9pbnRzLCBhbmQgdGhpcyBpcyBhbHNvIHVw ZGF0ZWQgYWNjb3JkaW5nbHkuwqAgSWYgKklOQlVGUCBkb2VzCj4gbm90Cj4gKytjcHBfZGlzcGxh eV93aWR0aF9jb21wdXRhdGlvbjo6Cj4gKytjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbiAo Y29uc3QgY2hhciAqZGF0YSwgaW50IGRhdGFfbGVuZ3RoLAo+IGludCB0YWJzdG9wKSA6Cj4gKyvC oCBtX2JlZ2luIChkYXRhKSwKPiArK8KgIG1fbmV4dCAobV9iZWdpbiksCj4gKyvCoCBtX2J5dGVz X2xlZnQgKGRhdGFfbGVuZ3RoKSwKPiArK8KgIG1fdGFic3RvcCAodGFic3RvcCksCj4gKyvCoCBt X2Rpc3BsYXlfY29scyAoMCkKPiArK3sKPiArK8KgIGdjY19hc3NlcnQgKG1fdGFic3RvcCA+IDAp Owo+ICsrfQo+ICsrCj4gKysKPiArKy8qIFRoZSBtYWluIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9u IGZvciBjbGFzcwo+IGNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uLgo+ICsrwqDCoCBtX25l eHQgcG9pbnRzIG9uIGVudHJ5IHRvIHRoZSBzdGFydCBvZiB0aGUgVVRGLTggZW5jb2Rpbmcgb2Yg dGhlCj4gbmV4dAo+ICsrwqDCoCBjaGFyYWN0ZXIsIGFuZCBpcyB1cGRhdGVkIHRvIHBvaW50IGp1 c3QgYWZ0ZXIgdGhlIGxhc3QgYnl0ZSBvZgo+IHRoZSBlbmNvZGluZy4KPiArK8KgwqAgbV9ieXRl c19sZWZ0IGNvbnRhaW5zIG9uIGVudHJ5IHRoZSByZW1haW5pbmcgc2l6ZSBvZiB0aGUgYnVmZmVy Cj4gaW50byB3aGljaAo+ICsrwqDCoCBtX25leHQgcG9pbnRzLCBhbmQgdGhpcyBpcyBhbHNvIHVw ZGF0ZWQgYWNjb3JkaW5nbHkuwqAgSWYgbV9uZXh0Cj4gZG9lcyBub3QKPiArwqDCoMKgIHBvaW50 IHRvIGEgdmFsaWQgVVRGLTgtZW5jb2RlZCBzZXF1ZW5jZSwgdGhlbiBpdCB3aWxsIGJlIHRyZWF0 ZWQKPiBhcyBhIHNpbmdsZQo+ICstwqDCoCBieXRlIHdpdGggZGlzcGxheSB3aWR0aCAxLsKgICov Cj4gKyvCoMKgIGJ5dGUgd2l0aCBkaXNwbGF5IHdpZHRoIDEuwqAgbV9jdXJfZGlzcGxheV9jb2wg aXMgdGhlIGN1cnJlbnQKPiBkaXNwbGF5IGNvbHVtbiwKPiArK8KgwqAgcmVsYXRpdmUgdG8gd2hp Y2ggdGFiIHN0b3BzIHNob3VsZCBiZSBleHBhbmRlZC7CoCBSZXR1cm5zIHRoZQo+IGRpc3BsYXkg d2lkdGggb2YKPiArK8KgwqAgdGhlIGNvZGVwb2ludCBqdXN0IHByb2Nlc3NlZC7CoCAqLwo+ICsg Cj4gKy1zdGF0aWMgaW5saW5lIGludAo+ICstY29tcHV0ZV9uZXh0X2Rpc3BsYXlfd2lkdGggKGNv bnN0IHVjaGFyICoqaW5idWZwLCBzaXplX3QKPiAqaW5ieXRlc2xlZnRwKQo+ICsraW50Cj4gKytj cHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbjo6cHJvY2Vzc19uZXh0X2NvZGVwb2ludCAoKQo+ ICsgewo+ICvCoMKgIGNwcGNoYXJfdCBjOwo+ICstwqAgaWYgKG9uZV91dGY4X3RvX2NwcGNoYXIg KGluYnVmcCwgaW5ieXRlc2xlZnRwLCAmYykgIT0gMCkKPiArK8KgIGludCBuZXh0X3dpZHRoOwo+ ICsrCj4gKyvCoCBpZiAoKm1fbmV4dCA9PSAnXHQnKQo+ICsrwqDCoMKgIHsKPiArK8KgwqDCoMKg wqAgKyttX25leHQ7Cj4gKyvCoMKgwqDCoMKgIC0tbV9ieXRlc19sZWZ0Owo+ICsrwqDCoMKgwqDC oCBuZXh0X3dpZHRoID0gbV90YWJzdG9wIC0gKG1fZGlzcGxheV9jb2xzICUgbV90YWJzdG9wKTsK PiArK8KgwqDCoCB9Cj4gKyvCoCBlbHNlIGlmIChvbmVfdXRmOF90b19jcHBjaGFyICgoY29uc3Qg dWNoYXIgKiopICZtX25leHQsCj4gJm1fYnl0ZXNfbGVmdCwgJmMpCj4gKyvCoMKgwqDCoMKgwqDC oMKgICE9IDApCj4gK8KgwqDCoMKgIHsKPiArwqDCoMKgwqDCoMKgIC8qIElucHV0IGlzIG5vdCBj b252ZXJ0aWJsZSB0byBVVEYtOC7CoCBUaGlzIGNvdWxkIGJlIGZpbmUsCj4gZS5nLiBpbiBhCj4g K8KgwqDCoMKgwqDCoMKgIHN0cmluZyBsaXRlcmFsLCBzbyBkb24ndCBjb21wbGFpbi7CoCBKdXN0 IHRyZWF0IGl0IGFzIGlmIGl0Cj4gaGFzIGEgd2lkdGgKPiArwqDCoMKgwqDCoMKgwqAgb2Ygb25l LsKgICovCj4gKy3CoMKgwqDCoMKgICsrKmluYnVmcDsKPiArLcKgwqDCoMKgwqAgLS0qaW5ieXRl c2xlZnRwOwo+ICstwqDCoMKgwqDCoCByZXR1cm4gMTsKPiArK8KgwqDCoMKgwqAgKyttX25leHQ7 Cj4gKyvCoMKgwqDCoMKgIC0tbV9ieXRlc19sZWZ0Owo+ICsrwqDCoMKgwqDCoCBuZXh0X3dpZHRo ID0gMTsKPiArK8KgwqDCoCB9Cj4gKyvCoCBlbHNlCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDC oCAvKsKgIG9uZV91dGY4X3RvX2NwcGNoYXIoKSBoYXMgdXBkYXRlZCBtX25leHQgYW5kIG1fYnl0 ZXNfbGVmdAo+IGZvciB1cy7CoCAqLwo+ICsrwqDCoMKgwqDCoCBuZXh0X3dpZHRoID0gY3BwX3dj d2lkdGggKGMpOwo+ICvCoMKgwqDCoCB9Cj4gKyAKPiArLcKgIC8qwqAgb25lX3V0ZjhfdG9fY3Bw Y2hhcigpIGhhcyB1cGRhdGVkIGluYnVmcCBhbmQgaW5ieXRlc2xlZnRwIGZvcgo+IHVzLsKgICov Cj4gKy3CoCByZXR1cm4gY3BwX3djd2lkdGggKGMpOwo+ICsrwqAgbV9kaXNwbGF5X2NvbHMgKz0g bmV4dF93aWR0aDsKPiArK8KgIHJldHVybiBuZXh0X3dpZHRoOwo+ICsrfQo+ICsrCj4gKysvKsKg IFV0aWxpdHkgdG8gYWR2YW5jZSB0aGUgYnl0ZSBzdHJlYW0gYnkgdGhlIG1pbmltdW0gYW1vdW50 IG5lZWRlZAo+IHRvIGNvbnN1bWUKPiArK8KgwqDCoCBOIGRpc3BsYXkgY29sdW1ucy7CoCBSZXR1 cm5zIHRoZSBudW1iZXIgb2YgZGlzcGxheSBjb2x1bW5zIHRoYXQKPiB3ZXJlCj4gKyvCoMKgwqAg YWN0dWFsbHkgc2tpcHBlZC7CoCBUaGlzIGNvdWxkIGJlIGxlc3MgdGhhbiBOLCBpZiB0aGVyZSB3 YXMgbm90Cj4gZW5vdWdoIGRhdGEsCj4gKyvCoMKgwqAgb3IgbW9yZSB0aGFuIE4sIGlmIHRoZSBs YXN0IGNoYXJhY3RlciB0byBiZSBza2lwcGVkIGhhZCBhCj4gc3VmZmljaWVudGx5IGxhcmdlCj4g KyvCoMKgwqAgZGlzcGxheSB3aWR0aC7CoCAqLwo+ICsraW50Cj4gKytjcHBfZGlzcGxheV93aWR0 aF9jb21wdXRhdGlvbjo6YWR2YW5jZV9kaXNwbGF5X2NvbHMgKGludCBuKQo+ICsrewo+ICsrwqAg Y29uc3QgaW50IHN0YXJ0ID0gbV9kaXNwbGF5X2NvbHM7Cj4gKyvCoCBjb25zdCBpbnQgdGFyZ2V0 ID0gc3RhcnQgKyBuOwo+ICsrwqAgd2hpbGUgKG1fZGlzcGxheV9jb2xzIDwgdGFyZ2V0ICYmICFk b25lICgpKQo+ICsrwqDCoMKgIHByb2Nlc3NfbmV4dF9jb2RlcG9pbnQgKCk7Cj4gKyvCoCByZXR1 cm4gbV9kaXNwbGF5X2NvbHMgLSBzdGFydDsKPiArIH0KPiArIAo+ICsgLyrCoCBGb3IgdGhlIHN0 cmluZyBvZiBsZW5ndGggREFUQV9MRU5HVEggYnl0ZXMgdGhhdCBiZWdpbnMgYXQgREFUQSwKPiBj b21wdXRlCj4gK8KgwqDCoMKgIGhvdyBtYW55IGRpc3BsYXkgY29sdW1ucyBhcmUgb2NjdXBpZWQg YnkgdGhlIGZpcnN0IENPTFVNTgo+IGJ5dGVzLsKgIENPTFVNTgo+ICvCoMKgwqDCoCBtYXkgZXhj ZWVkIERBVEFfTEVOR1RILCBpbiB3aGljaCBjYXNlIHRoZSBwaGFudG9tIGJ5dGVzIGF0IHRoZQo+ IGVuZCBhcmUKPiArLcKgwqDCoCB0cmVhdGVkIGFzIGlmIHRoZXkgaGF2ZSBkaXNwbGF5IHdpZHRo IDEuwqAgKi8KPiArK8KgwqDCoCB0cmVhdGVkIGFzIGlmIHRoZXkgaGF2ZSBkaXNwbGF5IHdpZHRo IDEuwqAgVGFicyBhcmUgZXhwYW5kZWQgdG8KPiB0aGUgbmV4dCB0YWIKPiArK8KgwqDCoCBzdG9w LCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgREFUQS7CoCAqLwo+ICsgCj4gKyBpbnQKPiArIGNw cF9ieXRlX2NvbHVtbl90b19kaXNwbGF5X2NvbHVtbiAoY29uc3QgY2hhciAqZGF0YSwgaW50Cj4g ZGF0YV9sZW5ndGgsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBjb2x1bW4pCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBjb2x1 bW4sIGludCB0YWJzdG9wKQo+ICsgewo+ICstwqAgaW50IGRpc3BsYXlfY29sID0gMDsKPiArLcKg IGNvbnN0IHVjaGFyICp1ZGF0YSA9IChjb25zdCB1Y2hhciAqKSBkYXRhOwo+ICvCoMKgIGNvbnN0 IGludCBvZmZzZXQgPSBNQVggKDAsIGNvbHVtbiAtIGRhdGFfbGVuZ3RoKTsKPiArLcKgIHNpemVf dCBpbmJ5dGVzbGVmdCA9IGNvbHVtbiAtIG9mZnNldDsKPiArLcKgIHdoaWxlIChpbmJ5dGVzbGVm dCkKPiArLcKgwqDCoCBkaXNwbGF5X2NvbCArPSBjb21wdXRlX25leHRfZGlzcGxheV93aWR0aCAo JnVkYXRhLAo+ICZpbmJ5dGVzbGVmdCk7Cj4gKy3CoCByZXR1cm4gZGlzcGxheV9jb2wgKyBvZmZz ZXQ7Cj4gKyvCoCBjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbiBkdyAoZGF0YSwgY29sdW1u IC0gb2Zmc2V0LAo+IHRhYnN0b3ApOwo+ICsrwqAgd2hpbGUgKCFkdy5kb25lICgpKQo+ICsrwqDC oMKgIGR3LnByb2Nlc3NfbmV4dF9jb2RlcG9pbnQgKCk7Cj4gKyvCoCByZXR1cm4gZHcuZGlzcGxh eV9jb2xzX3Byb2Nlc3NlZCAoKSArIG9mZnNldDsKPiArIH0KPiArIAo+ICsgLyrCoCBGb3IgdGhl IHN0cmluZyBvZiBsZW5ndGggREFUQV9MRU5HVEggYnl0ZXMgdGhhdCBiZWdpbnMgYXQgREFUQSwK PiBjb21wdXRlCj4gK0BAIC0yMzI4LDE0ICsyMzY5LDExIEBAIGNwcF9ieXRlX2NvbHVtbl90b19k aXNwbGF5X2NvbHVtbiAoY29uc3QKPiArIAo+ICsgaW50Cj4gKyBjcHBfZGlzcGxheV9jb2x1bW5f dG9fYnl0ZV9jb2x1bW4gKGNvbnN0IGNoYXIgKmRhdGEsIGludAo+IGRhdGFfbGVuZ3RoLAo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpbnQgZGlzcGxheV9jb2wpCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBkaXNwbGF5X2NvbCwgaW50 IHRhYnN0b3ApCj4gKyB7Cj4gKy3CoCBpbnQgY29sdW1uID0gMDsKPiArLcKgIGNvbnN0IHVjaGFy ICp1ZGF0YSA9IChjb25zdCB1Y2hhciAqKSBkYXRhOwo+ICstwqAgc2l6ZV90IGluYnl0ZXNsZWZ0 ID0gZGF0YV9sZW5ndGg7Cj4gKy3CoCB3aGlsZSAoY29sdW1uIDwgZGlzcGxheV9jb2wgJiYgaW5i eXRlc2xlZnQpCj4gKy3CoMKgwqDCoMKgIGNvbHVtbiArPSBjb21wdXRlX25leHRfZGlzcGxheV93 aWR0aCAoJnVkYXRhLCAmaW5ieXRlc2xlZnQpOwo+ICstwqAgcmV0dXJuIGRhdGFfbGVuZ3RoIC0g aW5ieXRlc2xlZnQgKyBNQVggKDAsIGRpc3BsYXlfY29sIC0gY29sdW1uKTsKPiArK8KgIGNwcF9k aXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uIGR3IChkYXRhLCBkYXRhX2xlbmd0aCwgdGFic3RvcCk7 Cj4gKyvCoCBjb25zdCBpbnQgYXZhaWxfZGlzcGxheSA9IGR3LmFkdmFuY2VfZGlzcGxheV9jb2xz IChkaXNwbGF5X2NvbCk7Cj4gKyvCoCByZXR1cm4gZHcuYnl0ZXNfcHJvY2Vzc2VkICgpICsgTUFY ICgwLCBkaXNwbGF5X2NvbCAtCj4gYXZhaWxfZGlzcGxheSk7Cj4gKyB9Cj4gKyAKPiArIC8qIE91 ciBvd24gdmVyc2lvbiBvZiB3Y3dpZHRoKCkuwqAgV2UgZG9uJ3QgdXNlIHRoZSBhY3R1YWwgd2N3 aWR0aCgpCj4gaW4gZ2xpYmMsCj4gK2RpZmYgLS1naXQgYS9saWJjcHAvaW5jbHVkZS9jcHBsaWIu aCBiL2xpYmNwcC9pbmNsdWRlL2NwcGxpYi5oCj4gKy0tLSBhL2xpYmNwcC9pbmNsdWRlL2NwcGxp Yi5owqDCoDIwMjAtMDctMjIgMjM6MzU6MTguNzEyMzk5NjIzIC0wNzAwCj4gKysrKyBiL2xpYmNw cC9pbmNsdWRlL2NwcGxpYi5owqDCoDIwMjEtMTItMjUgMDE6MjA6NTMuNDkxNjM2NDI3IC0wODAw Cj4gK0BAIC0zMTIsOSArMzEyLDYgQEAgZW51bSBjcHBfbm9ybWFsaXplX2xldmVsIHsKPiArwqDC oMKgIGNhcnJpZXMgYWxsIHRoZSBvcHRpb25zIHZpc2libGUgdG8gdGhlIGNvbW1hbmQgbGluZS7C oCAqLwo+ICsgc3RydWN0IGNwcF9vcHRpb25zCj4gKyB7Cj4gKy3CoCAvKiBDaGFyYWN0ZXJzIGJl dHdlZW4gdGFiIHN0b3BzLsKgICovCj4gKy3CoCB1bnNpZ25lZCBpbnQgdGFic3RvcDsKPiArLQo+ ICvCoMKgIC8qIFRoZSBsYW5ndWFnZSB3ZSdyZSBwcmVwcm9jZXNzaW5nLsKgICovCj4gK8KgwqAg ZW51bSBjX2xhbmcgbGFuZzsKPiArIAo+ICtAQCAtMTMyMiwxNCArMTMxOSw0MyBAQCBleHRlcm4g Y29uc3QgY2hhciAqIGNwcF9nZXRfdXNlcmRlZl9zdWZmCj4gK8KgwqAgKGNvbnN0IGNwcF90b2tl biAqKTsKPiArIAo+ICsgLyogSW4gY2hhcnNldC5jICovCj4gKysKPiArKy8qIEEgY2xhc3MgdG8g bWFuYWdlIHRoZSBzdGF0ZSB3aGlsZSBjb252ZXJ0aW5nIGEgVVRGLTggc2VxdWVuY2UgdG8KPiBj cHBjaGFyX3QKPiArK8KgwqAgYW5kIGNvbXB1dGluZyB0aGUgZGlzcGxheSB3aWR0aCBvbmUgY2hh cmFjdGVyIGF0IGEgdGltZS7CoCAqLwo+ICsrY2xhc3MgY3BwX2Rpc3BsYXlfd2lkdGhfY29tcHV0 YXRpb24gewo+ICsrIHB1YmxpYzoKPiArK8KgIGNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9u IChjb25zdCBjaGFyICpkYXRhLCBpbnQgZGF0YV9sZW5ndGgsCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHRhYnN0b3Ap Owo+ICsrwqAgY29uc3QgY2hhciAqbmV4dF9ieXRlICgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsg fQo+ICsrwqAgaW50IGJ5dGVzX3Byb2Nlc3NlZCAoKSBjb25zdCB7IHJldHVybiBtX25leHQgLSBt X2JlZ2luOyB9Cj4gKyvCoCBpbnQgYnl0ZXNfbGVmdCAoKSBjb25zdCB7IHJldHVybiBtX2J5dGVz X2xlZnQ7IH0KPiArK8KgIGJvb2wgZG9uZSAoKSBjb25zdCB7IHJldHVybiAhYnl0ZXNfbGVmdCAo KTsgfQo+ICsrwqAgaW50IGRpc3BsYXlfY29sc19wcm9jZXNzZWQgKCkgY29uc3QgeyByZXR1cm4g bV9kaXNwbGF5X2NvbHM7IH0KPiArKwo+ICsrwqAgaW50IHByb2Nlc3NfbmV4dF9jb2RlcG9pbnQg KCk7Cj4gKyvCoCBpbnQgYWR2YW5jZV9kaXNwbGF5X2NvbHMgKGludCBuKTsKPiArKwo+ICsrIHBy aXZhdGU6Cj4gKyvCoCBjb25zdCBjaGFyICpjb25zdCBtX2JlZ2luOwo+ICsrwqAgY29uc3QgY2hh ciAqbV9uZXh0Owo+ICsrwqAgc2l6ZV90IG1fYnl0ZXNfbGVmdDsKPiArK8KgIGNvbnN0IGludCBt X3RhYnN0b3A7Cj4gKyvCoCBpbnQgbV9kaXNwbGF5X2NvbHM7Cj4gKyt9Owo+ICsrCj4gKysvKiBD b252ZW5pZW5jZSBmdW5jdGlvbnMgdGhhdCBhcmUgc2ltcGxlIHVzZSBjYXNlcyBmb3IgY2xhc3MK PiArK8KgwqAgY3BwX2Rpc3BsYXlfd2lkdGhfY29tcHV0YXRpb24uwqAgVGFiIGNoYXJhY3RlcnMg d2lsbCBiZSBleHBhbmRlZAo+IHRvIHNwYWNlcwo+ICsrwqDCoCBhcyBkZXRlcm1pbmVkIGJ5IFRB QlNUT1AuwqAgKi8KPiArIGludCBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxheV9jb2x1bW4gKGNv bnN0IGNoYXIgKmRhdGEsIGludAo+IGRhdGFfbGVuZ3RoLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlu dCBjb2x1bW4pOwo+ICstaW5saW5lIGludCBjcHBfZGlzcGxheV93aWR0aCAoY29uc3QgY2hhciAq ZGF0YSwgaW50IGRhdGFfbGVuZ3RoKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBjb2x1bW4sIGlu dCB0YWJzdG9wKTsKPiArK2lubGluZSBpbnQgY3BwX2Rpc3BsYXlfd2lkdGggKGNvbnN0IGNoYXIg KmRhdGEsIGludCBkYXRhX2xlbmd0aCwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgdGFic3RvcCkKPiArIHsKPiArLcKgwqDCoCBy ZXR1cm4gY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3BsYXlfY29sdW1uIChkYXRhLCBkYXRhX2xlbmd0 aCwKPiBkYXRhX2xlbmd0aCk7Cj4gKyvCoCByZXR1cm4gY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3Bs YXlfY29sdW1uIChkYXRhLCBkYXRhX2xlbmd0aCwKPiBkYXRhX2xlbmd0aCwKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdGFic3RvcCk7Cj4gKyB9Cj4gKyBpbnQgY3BwX2Rpc3BsYXlfY29s dW1uX3RvX2J5dGVfY29sdW1uIChjb25zdCBjaGFyICpkYXRhLCBpbnQKPiBkYXRhX2xlbmd0aCwK PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgZGlzcGxheV9jb2wpOwo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGludCBkaXNwbGF5X2NvbCwgaW50IHRhYnN0b3ApOwo+ICsgaW50IGNwcF93Y3dpZHRoIChjcHBj aGFyX3QgYyk7Cj4gKyAKPiArICNlbmRpZiAvKiAhIExJQkNQUF9DUFBMSUJfSCAqLwo+ICtkaWZm IC0tZ2l0IGEvbGliY3BwL2luaXQuYyBiL2xpYmNwcC9pbml0LmMKPiArLS0tIGEvbGliY3BwL2lu aXQuY8KgwqDCoMKgMjAyMC0wNy0yMiAyMzozNToxOC43MTIzOTk2MjMgLTA3MDAKPiArKysrIGIv bGliY3BwL2luaXQuY8KgwqDCoMKgMjAyMS0xMi0yNSAwMToyMDo1My40OTE2MzY0MjcgLTA4MDAK PiArQEAgLTE5MCw3ICsxOTAsNiBAQCBjcHBfY3JlYXRlX3JlYWRlciAoZW51bSBjX2xhbmcgbGFu ZywgY3BwCj4gK8KgwqAgQ1BQX09QVElPTiAocGZpbGUsIGRpc2NhcmRfY29tbWVudHMpID0gMTsK PiArwqDCoCBDUFBfT1BUSU9OIChwZmlsZSwgZGlzY2FyZF9jb21tZW50c19pbl9tYWNyb19leHAp ID0gMTsKPiArwqDCoCBDUFBfT1BUSU9OIChwZmlsZSwgbWF4X2luY2x1ZGVfZGVwdGgpID0gMjAw Owo+ICstwqAgQ1BQX09QVElPTiAocGZpbGUsIHRhYnN0b3ApID0gODsKPiArwqDCoCBDUFBfT1BU SU9OIChwZmlsZSwgb3BlcmF0b3JfbmFtZXMpID0gMTsKPiArwqDCoCBDUFBfT1BUSU9OIChwZmls ZSwgd2Fybl90cmlncmFwaHMpID0gMjsKPiArwqDCoCBDUFBfT1BUSU9OIChwZmlsZSwgd2Fybl9l bmRpZl9sYWJlbHMpID0gMTsKPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dj Yy9nY2MvMDAwMi1DVkUtMjAyMS00MjU3NC5wYXRjaAo+IGIvbWV0YS9yZWNpcGVzLWRldnRvb2xz L2djYy9nY2MvMDAwMi1DVkUtMjAyMS00MjU3NC5wYXRjaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMC4uNWIxODk2ZWQ2OQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9t ZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy8wMDAyLUNWRS0yMDIxLTQyNTc0LnBhdGNoCj4g QEAgLTAsMCArMSwyMjcwIEBACj4gK0Zyb20gYmQ1ZTg4MmNmNmUwZGVmM2RkMWJjMTA2MDc1ZDU5 YTMwM2ZlMGQxZSBNb24gU2VwIDE3IDAwOjAwOjAwCj4gMjAwMQo+ICtGcm9tOiBEYXZpZCBNYWxj b2xtIDxkbWFsY29sbUByZWRoYXQuY29tPgo+ICtEYXRlOiBNb24sIDE4IE9jdCAyMDIxIDE4OjU1 OjMxIC0wNDAwCj4gK1N1YmplY3Q6IFtQQVRDSF0gZGlhZ25vc3RpY3M6IGVzY2FwZSBub24tQVND SUkgc291cmNlIGJ5dGVzIGZvcgo+IGNlcnRhaW4KPiArIGRpYWdub3N0aWNzCj4gK01JTUUtVmVy c2lvbjogMS4wCj4gK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGY4Cj4gK0Nv bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKPiArCj4gK1RoaXMgcGF0Y2ggYWRkcyBzdXBw b3J0IHRvIEdDQydzIGRpYWdub3N0aWMgc3Vic3lzdGVtIGZvciBlc2NhcGluZwo+IGNlcnRhaW4K PiArYnl0ZXMgYW5kIFVuaWNvZGUgY2hhcmFjdGVycyB3aGVuIHF1b3Rpbmcgc291cmNlIGNvZGUu Cj4gKwo+ICtTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBmbGFnCj4gcmljaF9s b2NhdGlvbjo6bV9lc2NhcGVfb25fb3V0cHV0Cj4gK3doaWNoIGlzIGEgaGludCBmcm9tIGEgZGlh Z25vc3RpYyB0aGF0IG5vbi1BU0NJSSBieXRlcyBpbiB0aGUKPiBwZXJ0aW5lbnQKPiArbGluZXMg b2YgdGhlIHVzZXIncyBzb3VyY2UgY29kZSBzaG91bGQgYmUgZXNjYXBlZCB3aGVuIHByaW50ZWQu Cj4gKwo+ICtUaGUgcGF0Y2ggc2V0cyB0aGlzIGZvciB0aGUgZm9sbG93aW5nIGRpYWdub3N0aWNz Ogo+ICstIHdoZW4gY29tcGxhaW5pbmcgYWJvdXQgc3RyYXkgYnl0ZXMgaW4gdGhlIHByb2dyYW0g KHdoZW4gdGhlc2UKPiArYXJlIG5vbi1wcmludGFibGUpCj4gKy0gd2hlbiBjb21wbGFpbmluZyBh Ym91dCAibnVsbCBjaGFyYWN0ZXIocykgaWdub3JlZCIpOwo+ICstIGZvciAtV25vcm1hbGl6ZWQ9 IChhbmQgZ2VuZXJhdGUgc291cmNlIHJhbmdlcyBmb3Igc3VjaCB3YXJuaW5ncykKPiArCj4gK1Ro ZSBlc2NhcGluZyBpcyBjb250cm9sbGVkIGJ5IGEgbmV3IG9wdGlvbjoKPiArwqAgLWZkaWFnbm9z dGljcy1lc2NhcGUtZm9ybWF0PVt1bmljb2RlfGJ5dGVzXQo+ICsKPiArRm9yIGV4YW1wbGUsIGNv bnNpZGVyIGEgZGlhZ25vc3RpYyBpbnZvbGluZyBhIHNvdXJjZSBsaW5lIGNvbnRhaW5pbmcKPiB0 aGUKPiArc3RyaW5nICJiZWZvcmUiIGZvbGxvd2VkIGJ5IHRoZSBVbmljb2RlIGNoYXJhY3RlciBV KzAzQzAgKCJHUkVFSwo+IFNNQUxMCj4gK0xFVFRFUiBQSSIsIHdpdGggVVRGLTggZW5jb2Rpbmcg MHhDRiAweDgwKSBmb2xsb3dlZCBieSB0aGUgYnl0ZSAweEJGCj4gKyhhIHN0cmF5IFVURi04IHRy YWlsaW5nIGJ5dGUpLCBmb2xsb3dlZCBieSB0aGUgc3RyaW5nICJhZnRlciIsIHdoZXJlCj4gdGhl Cj4gK2RpYWdub3N0aWMgaGlnaGxpZ2h0cyB0aGUgVSswM0MwIGNoYXJhY3Rlci4KPiArCj4gK0J5 IGRlZmF1bHQsIHRoaXMgbGluZSB3aWxsIGJlIHByaW50ZWQgdmVyYmF0aW0gdG8gdGhlIHVzZXIg d2hlbgo+ICtyZXBvcnRpbmcgYSBkaWFnbm9zdGljIGF0IGl0LCBhczoKPiArCj4gKyBiZWZvcmXD j1hhZnRlcgo+ICvCoMKgwqDCoMKgwqAgXgo+ICsKPiArKHVzaW5nIFggZm9yIHRoZSBzdHJheSBi eXRlIHRvIGF2b2lkIHB1dHRpbmcgaW52YWxpZCBVVEYtOCBpbiB0aGlzCj4gK2NvbW1pdCBtZXNz YWdlKQo+ICsKPiArSWYgdGhlIGRpYWdub3N0aWMgc2V0cyB0aGUgImVzY2FwZSIgZmxhZywgaXQg d2lsbCBiZSBwcmludGVkIGFzOgo+ICsKPiArIGJlZm9yZTxVKzAzQzA+PEJGPmFmdGVyCj4gK8Kg wqDCoMKgwqDCoCBefn5+fn5+fgo+ICsKPiArd2l0aCAtZmRpYWdub3N0aWNzLWVzY2FwZS1mb3Jt YXQ9dW5pY29kZSAodGhlIGRlZmF1bHQpLCBvciBhczoKPiArCj4gK8KgIGJlZm9yZTxDRj48ODA+ PEJGPmFmdGVyCj4gK8KgwqDCoMKgwqDCoMKgIF5+fn5+fn5+Cj4gKwo+ICtpZiB0aGUgdXNlciBz dXBwbGllcyAtZmRpYWdub3N0aWNzLWVzY2FwZS1mb3JtYXQ9Ynl0ZXMuCj4gKwo+ICtUaGlzIG9u bHkgYWZmZWN0cyBob3cgdGhlIHNvdXJjZSBpcyBwcmludGVkOyBpdCBkb2VzIG5vdCBhZmZlY3QK PiAraG93IGNvbHVtbiBudW1iZXJzIHRoYXQgYXJlIHByaW50ZWQgKGFzIHBlciAtZmRpYWdub3N0 aWNzLWNvbHVtbi0KPiB1bml0PQo+ICthbmQgLWZkaWFnbm9zdGljcy1jb2x1bW4tb3JpZ2luPSku Cj4gKwo+ICtnY2MvYy1mYW1pbHkvQ2hhbmdlTG9nOgo+ICvCoMKgwqDCoMKgwqDCoCogYy1sZXgu YyAoY19sZXhfd2l0aF9mbGFncyk6IFdoZW4gY29tcGxhaW5pbmcgYWJvdXQgbm9uLQo+IHByaW50 YWJsZQo+ICvCoMKgwqDCoMKgwqDCoENQUF9PVEhFUiB0b2tlbnMsIHNldCB0aGUgImVzY2FwZSBv biBvdXRwdXQiIGZsYWcuCj4gKwo+ICtnY2MvQ2hhbmdlTG9nOgo+ICvCoMKgwqDCoMKgwqDCoCog Y29tbW9uLm9wdCAoZmRpYWdub3N0aWNzLWVzY2FwZS1mb3JtYXQ9KTogTmV3Lgo+ICvCoMKgwqDC oMKgwqDCoChkaWFnbm9zdGljc19lc2NhcGVfZm9ybWF0KTogTmV3IGVudW0uCj4gK8KgwqDCoMKg wqDCoMKgKERJQUdOT1NUSUNTX0VTQ0FQRV9GT1JNQVRfVU5JQ09ERSk6IE5ldyBlbnVtIHZhbHVl Lgo+ICvCoMKgwqDCoMKgwqDCoChESUFHTk9TVElDU19FU0NBUEVfRk9STUFUX0JZVEVTKTogTGlr ZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKiBkaWFnbm9zdGljLWZvcm1hdC1qc29uLmNjIChqc29u X2VuZF9kaWFnbm9zdGljKTogQWRkCj4gK8KgwqDCoMKgwqDCoMKgImVzY2FwZS1zb3VyY2UiIGF0 dHJpYnV0ZS4KPiArwqDCoMKgwqDCoMKgwqAqIGRpYWdub3N0aWMtc2hvdy1sb2N1cy5jCj4gK8Kg wqDCoMKgwqDCoMKgKGV4cGxvY193aXRoX2Rpc3BsYXlfY29sOjpleHBsb2Nfd2l0aF9kaXNwbGF5 X2NvbCk6IFJlcGxhY2UKPiArwqDCoMKgwqDCoMKgwqAidGFic3RvcCIgcGFyYW0gd2l0aCBhIGNw cF9jaGFyX2NvbHVtbl9wb2xpY3kgYW5kIGFkZCBhbgo+ICJhc3BlY3QiCj4gK8KgwqDCoMKgwqDC oMKgcGFyYW0uwqAgVXNlIHRoZXNlIHRvIGNvbXB1dGUgbV9kaXNwbGF5X2NvbCBhY2NvcmRpbmds eS4KPiArwqDCoMKgwqDCoMKgwqAoc3RydWN0IGNoYXJfZGlzcGxheV9wb2xpY3kpOiBOZXcgc3Ry dWN0Lgo+ICvCoMKgwqDCoMKgwqDCoChsYXlvdXQ6Om1fcG9saWN5KTogTmV3IGZpZWxkLgo+ICvC oMKgwqDCoMKgwqDCoChsYXlvdXQ6Om1fZXNjYXBlX29uX291dHB1dCk6IE5ldyBmaWVsZC4KPiAr wqDCoMKgwqDCoMKgwqAoZGVmX3BvbGljeSk6IE5ldyBmdW5jdGlvbi4KPiArwqDCoMKgwqDCoMKg wqAobWFrZV9yYW5nZSk6IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byBleHBsb2Nfd2l0aF9kaXNwbGF5 X2NvbAo+IGN0b3IuCj4gK8KgwqDCoMKgwqDCoMKgKGRlZmF1bHRfcHJpbnRfZGVjb2RlZF9jaCk6 IE5ldy4KPiArwqDCoMKgwqDCoMKgwqAod2lkdGhfcGVyX2VzY2FwZWRfYnl0ZSk6IE5ldy4KPiAr wqDCoMKgwqDCoMKgwqAoZXNjYXBlX2FzX2J5dGVzX3dpZHRoKTogTmV3Lgo+ICvCoMKgwqDCoMKg wqDCoChlc2NhcGVfYXNfYnl0ZXNfcHJpbnQpOiBOZXcuCj4gK8KgwqDCoMKgwqDCoMKgKGVzY2Fw ZV9hc191bmljb2RlX3dpZHRoKTogTmV3Lgo+ICvCoMKgwqDCoMKgwqDCoChlc2NhcGVfYXNfdW5p Y29kZV9wcmludCk6IE5ldy4KPiArwqDCoMKgwqDCoMKgwqAobWFrZV9wb2xpY3kpOiBOZXcuCj4g K8KgwqDCoMKgwqDCoMKgKGxheW91dDo6bGF5b3V0KTogSW5pdGlhbGl6ZSBuZXcgZmllbGRzLsKg IFVwZGF0ZSBtX2V4cGxvYwo+IGN0b3IKPiArwqDCoMKgwqDCoMKgwqBjYWxsIGZvciBhYm92ZSBj aGFuZ2UgdG8gY3Rvci4KPiArwqDCoMKgwqDCoMKgwqAobGF5b3V0OjptYXliZV9hZGRfbG9jYXRp b25fcmFuZ2UpOiBVcGRhdGUgZm9yIGNoYW5nZXMgdG8KPiArwqDCoMKgwqDCoMKgwqBleHBsb2Nf d2l0aF9kaXNwbGF5X2NvbCBjdG9yLgo+ICvCoMKgwqDCoMKgwqDCoChsYXlvdXQ6OmNhbGN1bGF0 ZV94X29mZnNldF9kaXNwbGF5KTogVXBkYXRlIGZvciBjaGFuZ2UgdG8KPiArwqDCoMKgwqDCoMKg wqBjcHBfZGlzcGxheV93aWR0aC4KPiArwqDCoMKgwqDCoMKgwqAobGF5b3V0OjpwcmludF9zb3Vy Y2VfbGluZSk6IFBhc3MgcG9saWN5Cj4gK8KgwqDCoMKgwqDCoMKgdG8gY3BwX2Rpc3BsYXlfd2lk dGhfY29tcHV0YXRpb24uIENhcHR1cmUgY3BwX2RlY29kZWRfY2hhcgo+IHdoZW4KPiArwqDCoMKg wqDCoMKgwqBjYWxsaW5nIHByb2Nlc3NfbmV4dF9jb2RlcG9pbnQuwqAgTW92ZSBwcmludGluZyBv ZiBzb3VyY2UgY29kZQo+IHRvCj4gK8KgwqDCoMKgwqDCoMKgbV9wb2xpY3kubV9wcmludF9jYi4K PiArwqDCoMKgwqDCoMKgwqAobGluZV9sYWJlbDo6bGluZV9sYWJlbCk6IFBhc3MgaW4gcG9saWN5 IHJhdGhlciB0aGFuIGNvbnRleHQuCj4gK8KgwqDCoMKgwqDCoMKgKGxheW91dDo6cHJpbnRfYW55 X2xhYmVscyk6IFVwZGF0ZSBmb3IgY2hhbmdlIHRvIGxpbmVfbGFiZWwKPiBjdG9yLgo+ICvCoMKg wqDCoMKgwqDCoChnZXRfYWZmZWN0ZWRfcmFuZ2UpOiBQYXNzIGluIHBvbGljeSByYXRoZXIgdGhh biBjb250ZXh0LAo+IHVwZGF0aW5nCj4gK8KgwqDCoMKgwqDCoMKgY2FsbHMgdG8gbG9jYXRpb25f Y29tcHV0ZV9kaXNwbGF5X2NvbHVtbiBhY2NvcmRpbmdseS4KPiArwqDCoMKgwqDCoMKgwqAoZ2V0 X3ByaW50ZWRfY29sdW1ucyk6IExpa2V3aXNlLCBhbHNvIGZvciBjcHBfZGlzcGxheV93aWR0aC4K PiArwqDCoMKgwqDCoMKgwqAoY29ycmVjdGlvbjo6Y29ycmVjdGlvbik6IFBhc3MgaW4gcG9saWN5 IHJhdGhlciB0aGFuIHRhYnN0b3AuCj4gK8KgwqDCoMKgwqDCoMKgKGNvcnJlY3Rpb246OmNvbXB1 dGVfZGlzcGxheV9jb2xzKTogUGFzcyBtX3BvbGljeSByYXRoZXIgdGhhbgo+ICvCoMKgwqDCoMKg wqDCoG1fdGFic3RvcCB0byBjcHBfZGlzcGxheV93aWR0aC4KPiArwqDCoMKgwqDCoMKgwqAoY29y cmVjdGlvbjo6bV90YWJzdG9wKTogUmVwbGFjZSB3aXRoLi4uCj4gK8KgwqDCoMKgwqDCoMKgKGNv cnJlY3Rpb246Om1fcG9saWN5KTogLi4udGhpcy4KPiArwqDCoMKgwqDCoMKgwqAobGluZV9jb3Jy ZWN0aW9uczo6bGluZV9jb3JyZWN0aW9ucyk6IFBhc3MgaW4gcG9saWN5IHJhdGhlcgo+IHRoYW4K PiArwqDCoMKgwqDCoMKgwqBjb250ZXh0Lgo+ICvCoMKgwqDCoMKgwqDCoChsaW5lX2NvcnJlY3Rp b25zOjptX2NvbnRleHQpOiBSZXBsYWNlIHdpdGguLi4KPiArwqDCoMKgwqDCoMKgwqAobGluZV9j b3JyZWN0aW9uczo6bV9wb2xpY3kpOiAuLi50aGlzLgo+ICvCoMKgwqDCoMKgwqDCoChsaW5lX2Nv cnJlY3Rpb25zOjphZGRfaGludCk6IFVwZGF0ZSB0byB1c2UgbV9wb2xpY3kgcmF0aGVyCj4gdGhh bgo+ICvCoMKgwqDCoMKgwqDCoG1fY29udGV4dC4KPiArwqDCoMKgwqDCoMKgwqAobGluZV9jb3Jy ZWN0aW9uczo6YWRkX2hpbnQpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAobGF5b3V0Ojpw cmludF90cmFpbGluZ19maXhpdHMpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAoc2VsZnRl c3Q6OnRlc3RfZGlzcGxheV93aWR0aHMpOiBOZXcuCj4gK8KgwqDCoMKgwqDCoMKgKHNlbGZ0ZXN0 Ojp0ZXN0X2xheW91dF94X29mZnNldF9kaXNwbGF5X3V0ZjgpOiBVcGRhdGUgdG8gdXNlCj4gK8Kg wqDCoMKgwqDCoMKgcG9saWN5IHJhdGhlciB0aGFuIHRhYnN0b3AuCj4gK8KgwqDCoMKgwqDCoMKg KHNlbGZ0ZXN0Ojp0ZXN0X29uZV9saW5lcl9sYWJlbHNfdXRmOCk6IEFkZCB0ZXN0IG9mIGVzY2Fw aW5nCj4gK8KgwqDCoMKgwqDCoMKgc291cmNlIGxpbmVzLgo+ICvCoMKgwqDCoMKgwqDCoChzZWxm dGVzdDo6dGVzdF9kaWFnbm9zdGljX3Nob3dfbG9jdXNfb25lX2xpbmVyX3V0ZjgpOiBVcGRhdGUK PiB0bwo+ICvCoMKgwqDCoMKgwqDCoHVzZSBwb2xpY3kgcmF0aGVyIHRoYW4gdGFic3RvcC4KPiAr wqDCoMKgwqDCoMKgwqAoc2VsZnRlc3Q6OnRlc3Rfb3ZlcmxhcHBlZF9maXhpdF9wcmludGluZyk6 IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoChzZWxmdGVzdDo6dGVzdF9vdmVybGFwcGVkX2Zp eGl0X3ByaW50aW5nX3V0ZjgpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAoc2VsZnRlc3Q6 OnRlc3Rfb3ZlcmxhcHBlZF9maXhpdF9wcmludGluZ18yKTogTGlrZXdpc2UuCj4gK8KgwqDCoMKg wqDCoMKgKHNlbGZ0ZXN0Ojp0ZXN0X3RhYl9leHBhbnNpb24pOiBMaWtld2lzZS4KPiArwqDCoMKg wqDCoMKgwqAoc2VsZnRlc3Q6OnRlc3RfZXNjYXBpbmdfYnl0ZXNfMSk6IE5ldy4KPiArwqDCoMKg wqDCoMKgwqAoc2VsZnRlc3Q6OnRlc3RfZXNjYXBpbmdfYnl0ZXNfMik6IE5ldy4KPiArwqDCoMKg wqDCoMKgwqAoc2VsZnRlc3Q6OmRpYWdub3N0aWNfc2hvd19sb2N1c19jX3Rlc3RzKTogQ2FsbCB0 aGUgbmV3Cj4gdGVzdHMuCj4gK8KgwqDCoMKgwqDCoMKgKiBkaWFnbm9zdGljLmMgKGRpYWdub3N0 aWNfaW5pdGlhbGl6ZSk6IEluaXRpYWxpemUKPiArwqDCoMKgwqDCoMKgwqBjb250ZXh0LT5lc2Nh cGVfZm9ybWF0Lgo+ICvCoMKgwqDCoMKgwqDCoChjb252ZXJ0X2NvbHVtbl91bml0KTogVXBkYXRl IHRvIHVzZSBkZWZhdWx0IGNoYXJhY3RlciB3aWR0aAo+IHBvbGljeS4KPiArwqDCoMKgwqDCoMKg wqAoc2VsZnRlc3Q6OnRlc3RfZGlhZ25vc3RpY19nZXRfbG9jYXRpb25fdGV4dCk6IExpa2V3aXNl Lgo+ICvCoMKgwqDCoMKgwqDCoCogZGlhZ25vc3RpYy5oIChlbnVtIGRpYWdub3N0aWNzX2VzY2Fw ZV9mb3JtYXQpOiBOZXcgZW51bS4KPiArwqDCoMKgwqDCoMKgwqAoZGlhZ25vc3RpY19jb250ZXh0 Ojplc2NhcGVfZm9ybWF0KTogTmV3IGZpZWxkLgo+ICvCoMKgwqDCoMKgwqDCoCogZG9jL2ludm9r ZS50ZXhpICgtZmRpYWdub3N0aWNzLWVzY2FwZS1mb3JtYXQ9KTogTmV3IG9wdGlvbi4KPiArwqDC oMKgwqDCoMKgwqAoLWZkaWFnbm9zdGljcy1mb3JtYXQ9KTogQWRkICJlc2NhcGUtc291cmNlIiBh dHRyaWJ1dGUgdG8KPiBleGFtcGxlcwo+ICvCoMKgwqDCoMKgwqDCoG9mIEpTT04gb3V0cHV0LCBh bmQgZG9jdW1lbnQgaXQuCj4gK8KgwqDCoMKgwqDCoMKgKiBpbnB1dC5jIChsb2NhdGlvbl9jb21w dXRlX2Rpc3BsYXlfY29sdW1uKTogUGFzcyBpbiAicG9saWN5Igo+ICvCoMKgwqDCoMKgwqDCoHJh dGhlciB0aGFuICJ0YWJzdG9wIiwgcGFzc2luZyB0bwo+ICvCoMKgwqDCoMKgwqDCoGNwcF9ieXRl X2NvbHVtbl90b19kaXNwbGF5X2NvbHVtbi4KPiArwqDCoMKgwqDCoMKgwqAoc2VsZnRlc3Q6OnRl c3RfY3BwX3V0ZjgpOiBVcGRhdGUgdG8gdXNlCj4gY3BwX2NoYXJfY29sdW1uX3BvbGljeS4KPiAr wqDCoMKgwqDCoMKgwqAqIGlucHV0LmggKGNsYXNzIGNwcF9jaGFyX2NvbHVtbl9wb2xpY3kpOiBO ZXcgZm9yd2FyZCBkZWNsLgo+ICvCoMKgwqDCoMKgwqDCoChsb2NhdGlvbl9jb21wdXRlX2Rpc3Bs YXlfY29sdW1uKTogUGFzcyBpbiAicG9saWN5IiByYXRoZXIKPiB0aGFuCj4gK8KgwqDCoMKgwqDC oMKgInRhYnN0b3AiLgo+ICvCoMKgwqDCoMKgwqDCoCogb3B0cy5jIChjb21tb25faGFuZGxlX29w dGlvbik6IEhhbmRsZQo+ICvCoMKgwqDCoMKgwqDCoE9QVF9mZGlhZ25vc3RpY3NfZXNjYXBlX2Zv cm1hdF8uCj4gK8KgwqDCoMKgwqDCoMKgKiBzZWxmdGVzdC5jICh0ZW1wX3NvdXJjZV9maWxlOjp0 ZW1wX3NvdXJjZV9maWxlKTogTmV3IGN0b3IKPiArwqDCoMKgwqDCoMKgwqBvdmVybG9hZCB0YWtp bmcgYSBzaXplX3QuCj4gK8KgwqDCoMKgwqDCoMKgKiBzZWxmdGVzdC5oICh0ZW1wX3NvdXJjZV9m aWxlOjp0ZW1wX3NvdXJjZV9maWxlKTogTGlrZXdpc2UuCj4gKwo+ICtnY2MvdGVzdHN1aXRlL0No YW5nZUxvZzoKPiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1h dC1qc29uLTEuYzogQWRkIHJlZ2V4cCB0bwo+IGNvbnN1bWUKPiArwqDCoMKgwqDCoMKgwqAiZXNj YXBlLXNvdXJjZSIgYXR0cmlidXRlLgo+ICvCoMKgwqDCoMKgwqDCoCogYy1jKystY29tbW9uL2Rp YWdub3N0aWMtZm9ybWF0LWpzb24tMi5jOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAqIGMt YysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTMuYzogTGlrZXdpc2UuCj4gK8KgwqDC oMKgwqDCoMKgKiBjLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi00LmM6IExpa2V3 aXNlLCB0d2ljZS4KPiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZv cm1hdC1qc29uLTUuYzogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKiBnY2MuZGcvY3BwL3dh cm4tbm9ybWFsaXplZC00LWJ5dGVzLmM6IE5ldyB0ZXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCogZ2Nj LmRnL2NwcC93YXJuLW5vcm1hbGl6ZWQtNC11bmljb2RlLmM6IE5ldyB0ZXN0Lgo+ICvCoMKgwqDC oMKgwqDCoCogZ2NjLmRnL2VuY29kaW5nLWlzc3Vlcy1ieXRlcy5jOiBOZXcgdGVzdC4KPiArwqDC oMKgwqDCoMKgwqAqIGdjYy5kZy9lbmNvZGluZy1pc3N1ZXMtdW5pY29kZS5jOiBOZXcgdGVzdC4K PiArwqDCoMKgwqDCoMKgwqAqIGdmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMS5G OTA6IEFkZCByZWdleHAgdG8KPiBjb25zdW1lCj4gK8KgwqDCoMKgwqDCoMKgImVzY2FwZS1zb3Vy Y2UiIGF0dHJpYnV0ZS4KPiArwqDCoMKgwqDCoMKgwqAqIGdmb3J0cmFuLmRnL2RpYWdub3N0aWMt Zm9ybWF0LWpzb24tMi5GOTA6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoCogZ2ZvcnRyYW4u ZGcvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0zLkY5MDogTGlrZXdpc2UuCj4gKwo+ICtsaWJjcHAv Q2hhbmdlTG9nOgo+ICvCoMKgwqDCoMKgwqDCoCogY2hhcnNldC5jIChjb252ZXJ0X2VzY2FwZSk6 IFVzZSBlbmNvZGluZ19yaWNoX2xvY2F0aW9uIHdoZW4KPiArwqDCoMKgwqDCoMKgwqBjb21wbGFp bmluZyBhYm91dCBub25wcmludGFibGUgdW5rbm93biBlc2NhcGUgc2VxdWVuY2VzLgo+ICvCoMKg wqDCoMKgwqDCoChjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbjo6OjpjcHBfZGlzcGxheV93 aWR0aF9jb21wdXRhdGkKPiBvbik6Cj4gK8KgwqDCoMKgwqDCoMKgUGFzcyBpbiBwb2xpY3kgcmF0 aGVyIHRoYW4gdGFic3RvcC4KPiArwqDCoMKgwqDCoMKgwqAoY3BwX2Rpc3BsYXlfd2lkdGhfY29t cHV0YXRpb246OnByb2Nlc3NfbmV4dF9jb2RlcG9pbnQpOiBBZGQKPiAib3V0Igo+ICvCoMKgwqDC oMKgwqDCoHBhcmFtIGFuZCBwb3B1bGF0ZSAqb3V0IGlmIG5vbi1OVUxMLgo+ICvCoMKgwqDCoMKg wqDCoChjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbjo6YWR2YW5jZV9kaXNwbGF5X2NvbHMp OiBQYXNzCj4gTlVMTAo+ICvCoMKgwqDCoMKgwqDCoHRvIHByb2Nlc3NfbmV4dF9jb2RlcG9pbnQu Cj4gK8KgwqDCoMKgwqDCoMKgKGNwcF9ieXRlX2NvbHVtbl90b19kaXNwbGF5X2NvbHVtbik6IFBh c3MgaW4gcG9saWN5IHJhdGhlcgo+IHRoYW4KPiArwqDCoMKgwqDCoMKgwqB0YWJzdG9wLsKgIFBh c3MgTlVMTCB0byBwcm9jZXNzX25leHRfY29kZXBvaW50Lgo+ICvCoMKgwqDCoMKgwqDCoChjcHBf ZGlzcGxheV9jb2x1bW5fdG9fYnl0ZV9jb2x1bW4pOiBQYXNzIGluIHBvbGljeSByYXRoZXIKPiB0 aGFuCj4gK8KgwqDCoMKgwqDCoMKgdGFic3RvcC4KPiArwqDCoMKgwqDCoMKgwqAqIGVycm9ycy5j IChjcHBfZGlhZ25vc3RpY19nZXRfY3VycmVudF9sb2NhdGlvbik6IE5ldwo+IGZ1bmN0aW9uLAo+ ICvCoMKgwqDCoMKgwqDCoHNwbGl0dGluZyBvdXQgdGhlIGxvZ2ljIGZyb20uLi4KPiArwqDCoMKg wqDCoMKgwqAoY3BwX2RpYWdub3N0aWMpOiAuLi5oZXJlLgo+ICvCoMKgwqDCoMKgwqDCoChjcHBf d2FybmluZ19hdCk6IE5ldyBmdW5jdGlvbi4KPiArwqDCoMKgwqDCoMKgwqAoY3BwX3BlZHdhcm5p bmdfYXQpOiBOZXcgZnVuY3Rpb24uCj4gK8KgwqDCoMKgwqDCoMKgKiBpbmNsdWRlL2NwcGxpYi5o IChjcHBfd2FybmluZ19hdCk6IE5ldyBkZWNsIGZvcgo+IHJpY2hfbG9jYXRpb24uCj4gK8KgwqDC oMKgwqDCoMKgKGNwcF9wZWR3YXJuaW5nX2F0KTogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKg KHN0cnVjdCBjcHBfZGVjb2RlZF9jaGFyKTogTmV3Lgo+ICvCoMKgwqDCoMKgwqDCoChzdHJ1Y3Qg Y3BwX2NoYXJfY29sdW1uX3BvbGljeSk6IE5ldy4KPiArwqDCoMKgwqDCoMKgwqAoY3BwX2Rpc3Bs YXlfd2lkdGhfY29tcHV0YXRpb246OmNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uCj4gKToK PiArwqDCoMKgwqDCoMKgwqBSZXBsYWNlICJ0YWJzdG9wIiBwYXJhbSB3aXRoICJwb2xpY3kiLgo+ ICvCoMKgwqDCoMKgwqDCoChjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbjo6cHJvY2Vzc19u ZXh0X2NvZGVwb2ludCk6IEFkZAo+ICJvdXQiCj4gK8KgwqDCoMKgwqDCoMKgcGFyYW0uCj4gK8Kg wqDCoMKgwqDCoMKgKGNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uOjptX3RhYnN0b3ApOiBS ZXBsYWNlIHdpdGguLi4KPiArwqDCoMKgwqDCoMKgwqAoY3BwX2Rpc3BsYXlfd2lkdGhfY29tcHV0 YXRpb246Om1fcG9saWN5KTogLi4udGhpcy4KPiArwqDCoMKgwqDCoMKgwqAoY3BwX2J5dGVfY29s dW1uX3RvX2Rpc3BsYXlfY29sdW1uKTogUmVwbGFjZSAidGFic3RvcCIgcGFyYW0KPiB3aXRoCj4g K8KgwqDCoMKgwqDCoMKgInBvbGljeSIuCj4gK8KgwqDCoMKgwqDCoMKgKGNwcF9kaXNwbGF5X3dp ZHRoKTogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKGNwcF9kaXNwbGF5X2NvbHVtbl90b19i eXRlX2NvbHVtbik6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoCogaW5jbHVkZS9saW5lLW1h cC5oIChyaWNoX2xvY2F0aW9uOjplc2NhcGVfb25fb3V0cHV0X3ApOgo+IE5ldy4KPiArwqDCoMKg wqDCoMKgwqAocmljaF9sb2NhdGlvbjo6c2V0X2VzY2FwZV9vbl9vdXRwdXQpOiBOZXcuCj4gK8Kg wqDCoMKgwqDCoMKgKHJpY2hfbG9jYXRpb246Om1fZXNjYXBlX29uX291dHB1dCk6IE5ldy4KPiAr wqDCoMKgwqDCoMKgwqAqIGludGVybmFsLmggKGNwcF9kaWFnbm9zdGljX2dldF9jdXJyZW50X2xv Y2F0aW9uKTogTmV3IGRlY2wuCj4gK8KgwqDCoMKgwqDCoMKgKGNsYXNzIGVuY29kaW5nX3JpY2hf bG9jYXRpb24pOiBOZXcuCj4gK8KgwqDCoMKgwqDCoMKgKiBsZXguYyAoc2tpcF93aGl0ZXNwYWNl KTogVXNlIGVuY29kaW5nX3JpY2hfbG9jYXRpb24gd2hlbgo+ICvCoMKgwqDCoMKgwqDCoGNvbXBs YWluaW5nIGFib3V0IG51bGwgY2hhcmFjdGVycy4KPiArwqDCoMKgwqDCoMKgwqAod2Fybl9hYm91 dF9ub3JtYWxpemF0aW9uKTogR2VuZXJhdGUgYSBzb3VyY2UgcmFuZ2Ugd2hlbgo+ICvCoMKgwqDC oMKgwqDCoGNvbXBsYWluaW5nIGFib3V0IGltcHJvcGVybHkgbm9ybWFsaXplZCB0b2tlbnMsIHJh dGhlciB0aGFuCj4ganVzdCBhCj4gK8KgwqDCoMKgwqDCoMKgcG9pbnQsIGFuZCB1c2UgZW5jb2Rp bmdfcmljaF9sb2NhdGlvbiBzbyB0aGF0IHRoZSBzb3VyY2UgY29kZQo+ICvCoMKgwqDCoMKgwqDC oGlzIGVzY2FwZWQgb24gcHJpbnRpbmcuCj4gK8KgwqDCoMKgwqDCoMKgKiBsaW5lLW1hcC5jIChy aWNoX2xvY2F0aW9uOjpyaWNoX2xvY2F0aW9uKTogSW5pdGlhbGl6ZQo+ICvCoMKgwqDCoMKgwqDC oG1fZXNjYXBlX29uX291dHB1dC4KPiArCj4gK1NpZ25lZC1vZmYtYnk6IERhdmlkIE1hbGNvbG0g PGRtYWxjb2xtQHJlZGhhdC5jb20+Cj4gKwo+ICtDVkU6IENWRS0yMDIxLTQyNTc0Cj4gK1Vwc3Ry ZWFtLVN0YXR1czogQmFja3BvcnQKPiBbaHR0cHM6Ly9nY2MuZ251Lm9yZy9naXQvZ2l0d2ViLmNn aT9wPWdjYy5naXQ7aD1iZDVlODgyY2Y2ZTBkZWYzZGQxYmMKPiAxMDYwNzVkNTlhMzAzZmUwZDFl XQo+ICtTaWduZWQtb2ZmLWJ5OiBQZ293ZGEgPHBnb3dkYS5jdmVAZ21haWwuY29tPgo+ICsKPiAr LS0tCj4gKyBnY2MvYy1mYW1pbHkvYy1sZXguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDYgKy0KPiArIGdjYy9jb21tb24ub3B0wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgIDEzICsKPiArIGdjYy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLmNjwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArCj4gKyBnY2MvZGlhZ25vc3RpYy1zaG93LWxvY3Vz LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA1ODAKPiArKysrKysrKysr KysrKystLS0KPiArIGdjYy9kaWFnbm9zdGljLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxMCArLQo+ICsgZ2NjL2RpYWdub3N0 aWMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgIDE4ICsKPiArIGdjYy9kb2MvaW52b2tlLnRleGnCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0MyArLQo+ICsgZ2NjL2lucHV0 LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqAgNjIgKy0KPiArIGdjYy9pbnB1dC5owqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAg NyArLQo+ICsgZ2NjL29wdHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNCArCj4gKyBnY2Mvc2VsZnRl c3QuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoCAxNSArCj4gKyBnY2Mvc2VsZnRlc3QuaMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKwo+ICsg Li4uL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTEuY8KgwqAgfMKgwqAgMSAr Cj4gKyAuLi4vYy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMi5jwqDCoCB8wqDC oCAxICsKPiArIC4uLi9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0zLmPCoMKg IHzCoMKgIDEgKwo+ICsgLi4uL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTQu Y8KgwqAgfMKgwqAgMiArCj4gKyAuLi4vYy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9ybWF0LWpz b24tNS5jwqDCoCB8wqDCoCAxICsKPiArIC4uLi9nY2MuZGcvY3BwL3dhcm4tbm9ybWFsaXplZC00 LWJ5dGVzLmPCoMKgwqDCoMKgIHzCoCAyMSArCj4gKyAuLi4vZ2NjLmRnL2NwcC93YXJuLW5vcm1h bGl6ZWQtNC11bmljb2RlLmPCoMKgwqAgfMKgIDE5ICsKPiArIGdjYy90ZXN0c3VpdGUvZ2NjLmRn L2VuY29kaW5nLWlzc3Vlcy1ieXRlcy5jwqAgfCBCaW4gMCAtPiA1OTUgYnl0ZXMKPiArIC4uLi9n Y2MuZGcvZW5jb2RpbmctaXNzdWVzLXVuaWNvZGUuY8KgwqDCoMKgwqDCoMKgwqDCoCB8IEJpbiAw IC0+IDYxMyBieXRlcwo+ICsgLi4uL2dmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24t MS5GOTDCoCB8wqDCoCAxICsKPiArIC4uLi9nZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1q c29uLTIuRjkwwqAgfMKgwqAgMSArCj4gKyAuLi4vZ2ZvcnRyYW4uZGcvZGlhZ25vc3RpYy1mb3Jt YXQtanNvbi0zLkY5MMKgIHzCoMKgIDEgKwo+ICsgbGliY3BwL2NoYXJzZXQuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDYzICst Cj4gKyBsaWJjcHAvZXJyb3JzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDgyICsrLQo+ICsgbGliY3BwL2luY2x1ZGUvY3Bw bGliLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNzYg KystCj4gKyBsaWJjcHAvaW5jbHVkZS9saW5lLW1hcC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqAgMTMgKwo+ICsgbGliY3BwL2ludGVybmFsLmjCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjMgKwo+ ICsgbGliY3BwL2xleC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAzOCArLQo+ICsgbGliY3BwL2xpbmUtbWFwLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoCAzICstCj4gKyAzMSBmaWxlcyBjaGFuZ2VkLCA5NDIgaW5zZXJ0aW9ucygrKSwgMTY4IGRl bGV0aW9ucygtKQo+ICsgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2Nw cC93YXJuLW5vcm1hbGl6ZWQtNC0KPiBieXRlcy5jCj4gKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvY3BwL3dhcm4tbm9ybWFsaXplZC00LQo+IHVuaWNvZGUuYwo+ICsg Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2VuY29kaW5nLWlzc3Vlcy1i eXRlcy5jCj4gKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZW5jb2Rp bmctaXNzdWVzLXVuaWNvZGUuYwo+ICsKPiArZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWxl eC5jIGIvZ2NjL2MtZmFtaWx5L2MtbGV4LmMKPiArLS0tIGEvZ2NjL2MtZmFtaWx5L2MtbGV4LmPC oMKgwqDCoMKgMjAyMC0wNy0yMiAyMzozNToxNy4yOTYzODQwMjIgLTA3MDAKPiArKysrIGIvZ2Nj L2MtZmFtaWx5L2MtbGV4LmPCoMKgwqDCoMKgMjAyMS0xMi0yNSAwMTozMDo1MC42Njk2ODkwMjMg LTA4MDAKPiArQEAgLTU4Nyw3ICs1ODcsMTEgQEAgY19sZXhfd2l0aF9mbGFncyAodHJlZSAqdmFs dWUsIGxvY2F0aW9uXwo+ICvCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKElTR1JBUEggKGMpKQo+ICvC oMKgwqDCoMKgwqDCoMKgIGVycm9yX2F0ICgqbG9jLCAic3RyYXkgJXFjIGluIHByb2dyYW0iLCAo aW50KSBjKTsKPiArwqDCoMKgwqDCoMKgwqBlbHNlCj4gKy3CoMKgwqDCoMKgwqDCoCBlcnJvcl9h dCAoKmxvYywgInN0cmF5ICU8XFwlbyU+IGluIHByb2dyYW0iLCAoaW50KSBjKTsKPiArK8KgwqDC oMKgwqDCoMKgIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCByaWNoX2xvY2F0aW9uIHJpY2hfbG9j IChsaW5lX3RhYmxlLCAqbG9jKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCByaWNoX2xvYy5zZXRf ZXNjYXBlX29uX291dHB1dCAodHJ1ZSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3JfYXQg KCZyaWNoX2xvYywgInN0cmF5ICU8XFwlbyU+IGluIHByb2dyYW0iLCAoaW50KQo+IGMpOwo+ICsr wqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqAgZ290byBy ZXRyeTsKPiArIAo+ICtkaWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi5vcHQgYi9nY2MvY29tbW9uLm9w dAo+ICstLS0gYS9nY2MvY29tbW9uLm9wdMKgwqDCoDIwMjEtMTItMjUgMDE6Mjk6MTIuOTE1MzE3 Mzc0IC0wODAwCj4gKysrKyBiL2djYy9jb21tb24ub3B0wqDCoMKgMjAyMS0xMi0yNSAwMTozMDo1 MC42Njk2ODkwMjMgLTA4MDAKPiArQEAgLTEzMzcsNiArMTMzNywxMCBAQCBmZGlhZ25vc3RpY3Mt Zm9ybWF0PQo+ICsgQ29tbW9uIEpvaW5lZCBSZWplY3ROZWdhdGl2ZSBFbnVtKGRpYWdub3N0aWNz X291dHB1dF9mb3JtYXQpCj4gKyAtZmRpYWdub3N0aWNzLWZvcm1hdD1bdGV4dHxqc29uXcKgwqDC oMKgwqDCoFNlbGVjdCBvdXRwdXQgZm9ybWF0Lgo+ICsgCj4gKytmZGlhZ25vc3RpY3MtZXNjYXBl LWZvcm1hdD0KPiArK0NvbW1vbiBKb2luZWQgUmVqZWN0TmVnYXRpdmUgRW51bShkaWFnbm9zdGlj c19lc2NhcGVfZm9ybWF0KQo+ICsrLWZkaWFnbm9zdGljcy1lc2NhcGUtZm9ybWF0PVt1bmljb2Rl fGJ5dGVzXcKgwqDCoFNlbGVjdCBob3cgdG8gZXNjYXBlCj4gbm9uLXByaW50YWJsZS1BU0NJSSBi eXRlcyBpbiB0aGUgc291cmNlIGZvciBkaWFnbm9zdGljcyB0aGF0IHN1Z2dlc3QKPiBpdC4KPiAr Kwo+ICsgOyBSZXF1aXJlZCBmb3IgdGhlc2UgZW51bSB2YWx1ZXMuCj4gKyBTb3VyY2VJbmNsdWRl Cj4gKyBkaWFnbm9zdGljLmgKPiArQEAgLTEzNTEsNiArMTM1NSwxNSBAQCBFbnVtVmFsdWUKPiAr IEVudW0oZGlhZ25vc3RpY3NfY29sdW1uX3VuaXQpIFN0cmluZyhieXRlKQo+IFZhbHVlKERJQUdO T1NUSUNTX0NPTFVNTl9VTklUX0JZVEUpCj4gKyAKPiArIEVudW0KPiArK05hbWUoZGlhZ25vc3Rp Y3NfZXNjYXBlX2Zvcm1hdCkgVHlwZShpbnQpCj4gKysKPiArK0VudW1WYWx1ZQo+ICsrRW51bShk aWFnbm9zdGljc19lc2NhcGVfZm9ybWF0KSBTdHJpbmcodW5pY29kZSkKPiBWYWx1ZShESUFHTk9T VElDU19FU0NBUEVfRk9STUFUX1VOSUNPREUpCj4gKysKPiArK0VudW1WYWx1ZQo+ICsrRW51bShk aWFnbm9zdGljc19lc2NhcGVfZm9ybWF0KSBTdHJpbmcoYnl0ZXMpCj4gVmFsdWUoRElBR05PU1RJ Q1NfRVNDQVBFX0ZPUk1BVF9CWVRFUykKPiArKwo+ICsrRW51bQo+ICsgTmFtZShkaWFnbm9zdGlj c19vdXRwdXRfZm9ybWF0KSBUeXBlKGludCkKPiArIAo+ICsgRW51bVZhbHVlCj4gK2RpZmYgLS1n aXQgYS9nY2MvZGlhZ25vc3RpYy5jIGIvZ2NjL2RpYWdub3N0aWMuYwo+ICstLS0gYS9nY2MvZGlh Z25vc3RpYy5jwqAyMDIxLTEyLTI1IDAxOjI5OjEyLjkxNTMxNzM3NCAtMDgwMAo+ICsrKysgYi9n Y2MvZGlhZ25vc3RpYy5jwqAyMDIxLTEyLTI1IDAxOjMwOjUwLjY2OTY4OTAyMyAtMDgwMAo+ICtA QCAtMjIzLDYgKzIyMyw3IEBAIGRpYWdub3N0aWNfaW5pdGlhbGl6ZSAoZGlhZ25vc3RpY19jb250 ZXgKPiArwqDCoCBjb250ZXh0LT5jb2x1bW5fdW5pdCA9IERJQUdOT1NUSUNTX0NPTFVNTl9VTklU X0RJU1BMQVk7Cj4gK8KgwqAgY29udGV4dC0+Y29sdW1uX29yaWdpbiA9IDE7Cj4gK8KgwqAgY29u dGV4dC0+dGFic3RvcCA9IDg7Cj4gKyvCoCBjb250ZXh0LT5lc2NhcGVfZm9ybWF0ID0gRElBR05P U1RJQ1NfRVNDQVBFX0ZPUk1BVF9VTklDT0RFOwo+ICvCoMKgIGNvbnRleHQtPmVkaXRfY29udGV4 dF9wdHIgPSBOVUxMOwo+ICvCoMKgIGNvbnRleHQtPmRpYWdub3N0aWNfZ3JvdXBfbmVzdGluZ19k ZXB0aCA9IDA7Cj4gK8KgwqAgY29udGV4dC0+ZGlhZ25vc3RpY19ncm91cF9lbWlzc2lvbl9jb3Vu dCA9IDA7Cj4gK0BAIC0yMTUyLDggKzIxNTMsOCBAQCB0ZXN0X2RpYWdub3N0aWNfZ2V0X2xvY2F0 aW9uX3RleHQgKCkKPiArwqDCoMKgwqAgY29uc3QgY2hhciAqY29uc3QgY29udGVudCA9ICJzbWls ZSBceGYwXHg5Zlx4OThceDgyXG4iOwo+ICvCoMKgwqDCoCBjb25zdCBpbnQgbGluZV9ieXRlcyA9 IHN0cmxlbiAoY29udGVudCkgLSAxOwo+ICvCoMKgwqDCoCBjb25zdCBpbnQgZGVmX3RhYnN0b3Ag PSA4Owo+ICstwqDCoMKgIGNvbnN0IGludCBkaXNwbGF5X3dpZHRoID0gY3BwX2Rpc3BsYXlfd2lk dGggKGNvbnRlbnQsCj4gbGluZV9ieXRlcywKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRlZl90YWJzdG9wKTsKPiArK8KgwqDCoCBjb25zdCBjcHBfY2hhcl9jb2x1bW5f cG9saWN5IHBvbGljeSAoZGVmX3RhYnN0b3AsIGNwcF93Y3dpZHRoKTsKPiArK8KgwqDCoCBjb25z dCBpbnQgZGlzcGxheV93aWR0aCA9IGNwcF9kaXNwbGF5X3dpZHRoIChjb250ZW50LAo+IGxpbmVf Ynl0ZXMsIHBvbGljeSk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9FUSAobGluZV9ieXRlcyAtIDIsIGRp c3BsYXlfd2lkdGgpOwo+ICvCoMKgwqDCoCB0ZW1wX3NvdXJjZV9maWxlIHRtcCAoU0VMRlRFU1Rf TE9DQVRJT04sICIuYyIsIGNvbnRlbnQpOwo+ICvCoMKgwqDCoCBjb25zdCBjaGFyICpjb25zdCBm bmFtZSA9IHRtcC5nZXRfZmlsZW5hbWUgKCk7Cj4gK2RpZmYgLS1naXQgYS9nY2MvZGlhZ25vc3Rp Yy1mb3JtYXQtanNvbi5jYyBiL2djYy9kaWFnbm9zdGljLWZvcm1hdC0KPiBqc29uLmNjCj4gKy0t LSBhL2djYy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLmNjwqDCoMKgwqAyMDIxLTEyLTI1IDAxOjI5 OjEyLjkxNTMxNzM3NAo+IC0wODAwCj4gKysrKyBiL2djYy9kaWFnbm9zdGljLWZvcm1hdC1qc29u LmNjwqDCoMKgwqAyMDIxLTEyLTI1IDAxOjMwOjUwLjY2OTY4OTAyMwo+IC0wODAwCj4gK0BAIC0y NjQsNiArMjY0LDkgQEAganNvbl9lbmRfZGlhZ25vc3RpYyAoZGlhZ25vc3RpY19jb250ZXh0Cj4g K8KgwqDCoMKgwqDCoCBqc29uOjp2YWx1ZSAqcGF0aF92YWx1ZSA9IGNvbnRleHQtPm1ha2VfanNv bl9mb3JfcGF0aAo+IChjb250ZXh0LCBwYXRoKTsKPiArwqDCoMKgwqDCoMKgIGRpYWdfb2JqLT5z ZXQgKCJwYXRoIiwgcGF0aF92YWx1ZSk7Cj4gK8KgwqDCoMKgIH0KPiArKwo+ICsrwqAgZGlhZ19v YmotPnNldCAoImVzY2FwZS1zb3VyY2UiLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBuZXcganNvbjo6bGl0ZXJhbCAocmljaGxvYy0+ZXNjYXBlX29uX291dHB1dF9wICgpKSk7Cj4g KyB9Cj4gKyAKPiArIC8qIE5vLW9wIGltcGxlbWVudGF0aW9uIG9mICJiZWdpbl9ncm91cF9jYiIg Zm9yIEpTT04gb3V0cHV0LsKgICovCj4gK2RpZmYgLS1naXQgYS9nY2MvZGlhZ25vc3RpYy5oIGIv Z2NjL2RpYWdub3N0aWMuaAo+ICstLS0gYS9nY2MvZGlhZ25vc3RpYy5owqAyMDIxLTEyLTI1IDAx OjI5OjEyLjkxOTMxNzMwNyAtMDgwMAo+ICsrKysgYi9nY2MvZGlhZ25vc3RpYy5owqAyMDIxLTEy LTI1IDAxOjMwOjUwLjY2OTY4OTAyMyAtMDgwMAo+ICtAQCAtMzgsNiArMzgsMjAgQEAgZW51bSBk aWFnbm9zdGljc19jb2x1bW5fdW5pdAo+ICvCoMKgIERJQUdOT1NUSUNTX0NPTFVNTl9VTklUX0JZ VEUKPiArIH07Cj4gKyAKPiArKy8qIEFuIGVudW0gZm9yIGNvbnRyb2xsaW5nIGhvdyB0byBwcmlu dCBub24tQVNDSUkgY2hhcmFjdGVycy9ieXRlcwo+IHdoZW4KPiArK8KgwqAgYSBkaWFnbm9zdGlj IHN1Z2dlc3RzIGVzY2FwaW5nIHRoZSBzb3VyY2UgY29kZSBvbiBvdXRwdXQuwqAgKi8KPiArKwo+ ICsrZW51bSBkaWFnbm9zdGljc19lc2NhcGVfZm9ybWF0Cj4gKyt7Cj4gKyvCoCAvKiBFc2NhcGUg bm9uLUFTQ0lJIFVuaWNvZGUgY2hhcmFjdGVycyBpbiB0aGUgZm9ybSA8VStYWFhYPiBhbmQKPiAr K8KgwqDCoMKgIG5vbi1VVEYtOCBieXRlcyBpbiB0aGUgZm9ybSA8WFg+LsKgICovCj4gKyvCoCBE SUFHTk9TVElDU19FU0NBUEVfRk9STUFUX1VOSUNPREUsCj4gKysKPiArK8KgIC8qIEVzY2FwZSBu b24tQVNDSUkgYnl0ZXMgaW4gdGhlIGZvcm0gPFhYPiAodGh1cyBzaG93aW5nIHRoZQo+IHVuZGVy bHlpbmcKPiArK8KgwqDCoMKgIGVuY29kaW5nIG9mIG5vbi1BU0NJSSBVbmljb2RlIGNoYXJhY3Rl cnMpLsKgICovCj4gKyvCoCBESUFHTk9TVElDU19FU0NBUEVfRk9STUFUX0JZVEVTCj4gKyt9Owo+ ICsrCj4gKyAvKiBFbnVtIGZvciBvdmVycmlkaW5nIHRoZSBzdGFuZGFyZCBvdXRwdXQgZm9ybWF0 LsKgICovCj4gKyAKPiArIGVudW0gZGlhZ25vc3RpY3Nfb3V0cHV0X2Zvcm1hdAo+ICtAQCAtMzAz LDYgKzMxNywxMCBAQCBzdHJ1Y3QgZGlhZ25vc3RpY19jb250ZXh0Cj4gK8KgwqAgLyogVGhlIHNp emUgb2YgdGhlIHRhYnN0b3AgZm9yIHRhYiBleHBhbnNpb24uwqAgKi8KPiArwqDCoCBpbnQgdGFi c3RvcDsKPiArIAo+ICsrwqAgLyogSG93IHNob3VsZCBub24tQVNDSUkvbm9uLXByaW50YWJsZSBi eXRlcyBiZSBlc2NhcGVkIHdoZW4KPiArK8KgwqDCoMKgIGEgZGlhZ25vc3RpYyBzdWdnZXN0cyBl c2NhcGluZyB0aGUgc291cmNlIGNvZGUgb24gb3V0cHV0LsKgICovCj4gKyvCoCBlbnVtIGRpYWdu b3N0aWNzX2VzY2FwZV9mb3JtYXQgZXNjYXBlX2Zvcm1hdDsKPiArKwo+ICvCoMKgIC8qIElmIG5v bi1OVUxMLCBhbiBlZGl0X2NvbnRleHQgdG8gd2hpY2ggZml4LWl0IGhpbnRzIHNob3VsZCBiZQo+ ICvCoMKgwqDCoMKgIGFwcGxpZWQsIGZvciBnZW5lcmF0aW5nIHBhdGNoZXMuwqAgKi8KPiArwqDC oCBlZGl0X2NvbnRleHQgKmVkaXRfY29udGV4dF9wdHI7Cj4gK2RpZmYgLS1naXQgYS9nY2MvZGlh Z25vc3RpYy1zaG93LWxvY3VzLmMgYi9nY2MvZGlhZ25vc3RpYy1zaG93LQo+IGxvY3VzLmMKPiAr LS0tIGEvZ2NjL2RpYWdub3N0aWMtc2hvdy1sb2N1cy5jwqDCoMKgwqDCoMKgMjAyMS0xMi0yNSAw MToyOToxMi45MTkzMTczMDcKPiAtMDgwMAo+ICsrKysgYi9nY2MvZGlhZ25vc3RpYy1zaG93LWxv Y3VzLmPCoMKgwqDCoMKgwqAyMDIxLTEyLTI1IDAxOjMwOjUwLjY3MzY4ODk1Ngo+IC0wODAwCj4g K0BAIC0xNzUsMTAgKzE3NSwyNiBAQCBlbnVtIGNvbHVtbl91bml0IHsKPiArIGNsYXNzIGV4cGxv Y193aXRoX2Rpc3BsYXlfY29sIDogcHVibGljIGV4cGFuZGVkX2xvY2F0aW9uCj4gKyB7Cj4gK8Kg IHB1YmxpYzoKPiArLcKgIGV4cGxvY193aXRoX2Rpc3BsYXlfY29sIChjb25zdCBleHBhbmRlZF9s b2NhdGlvbiAmZXhwbG9jLCBpbnQKPiB0YWJzdG9wKQo+ICstwqDCoMKgIDogZXhwYW5kZWRfbG9j YXRpb24gKGV4cGxvYyksCj4gKy3CoMKgwqDCoMKgIG1fZGlzcGxheV9jb2wgKGxvY2F0aW9uX2Nv bXB1dGVfZGlzcGxheV9jb2x1bW4gKGV4cGxvYywKPiB0YWJzdG9wKSkKPiArLcKgIHt9Cj4gKyvC oCBleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbCAoY29uc3QgZXhwYW5kZWRfbG9jYXRpb24gJmV4cGxv YywKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b25zdCBjcHBfY2hhcl9jb2x1bW5fcG9saWN5ICZwb2xpY3ksCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBsb2NhdGlvbl9hc3BlY3QgYXNw ZWN0KQo+ICsrwqAgOiBleHBhbmRlZF9sb2NhdGlvbiAoZXhwbG9jKSwKPiArK8KgwqDCoCBtX2Rp c3BsYXlfY29sIChsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29sdW1uIChleHBsb2MsCj4gcG9s aWN5KSkKPiArK8KgIHsKPiArK8KgwqDCoCBpZiAoZXhwbG9jLmNvbHVtbiA+IDApCj4gKyvCoMKg wqDCoMKgIHsKPiArK8KgwqDCoMKgwqDCoC8qIG1fZGlzcGxheV9jb2wgaXMgbm93IHRoZSBmaW5h bCBjb2x1bW4gb2YgdGhlIGJ5dGUuCj4gKyvCoMKgwqDCoMKgwqDCoMKgIElmIGVzY2FwaW5nIGhh cyBoYXBwZW5lZCwgd2UgbWF5IHdhbnQgdGhlIGZpcnN0IGNvbHVtbgo+IGluc3RlYWQuwqAgKi8K PiArK8KgwqDCoMKgwqDCoGlmIChhc3BlY3QgIT0gTE9DQVRJT05fQVNQRUNUX0ZJTklTSCkKPiAr K8KgwqDCoMKgwqDCoMKgIHsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBleHBhbmRlZF9sb2NhdGlv biBwcmV2X2V4cGxvYyAoZXhwbG9jKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBwcmV2X2V4cGxv Yy5jb2x1bW4tLTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBpbnQgcHJldl9kaXNwbGF5X2NvbAo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IChsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29s dW1uIChwcmV2X2V4cGxvYywKPiBwb2xpY3kpKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBtX2Rp c3BsYXlfY29sID0gcHJldl9kaXNwbGF5X2NvbCArIDE7Cj4gKyvCoMKgwqDCoMKgwqDCoCB9Cj4g KyvCoMKgwqDCoMKgIH0KPiArK8KgIH0KPiArIAo+ICvCoMKgIGludCBtX2Rpc3BsYXlfY29sOwo+ ICsgfTsKPiArQEAgLTMxMyw2ICszMjksMzEgQEAgdGVzdF9saW5lX3NwYW4gKCkKPiArIAo+ICsg I2VuZGlmIC8qICNpZiBDSEVDS0lOR19QICovCj4gKyAKPiArKy8qIEEgYnVuZGxlIG9mIGluZm9y bWF0aW9uIGNvbnRhaW5pbmcgaG93IHRvIHByaW50IHVuaWNvZGUKPiArK8KgwqAgY2hhcmFjdGVy cyBhbmQgYnl0ZXMgd2hlbiBxdW90aW5nIHNvdXJjZSBjb2RlLgo+ICsrCj4gKyvCoMKgIFByb3Zp ZGVzIGEgdW5pZmllZCBwbGFjZSB0byBzdXBwb3J0IGVzY2FwaW5nIHNvbWUgc3Vic2V0Cj4gKyvC oMKgIG9mIGNoYXJhY3RlcnMgdG8gc29tZSBmb3JtYXQuCj4gKysKPiArK8KgwqAgRXh0ZW5kcyBj aGFyX2NvbHVtbl9wb2xpY3k7IHByaW50aW5nIGlzIHNwbGl0IG91dCB0byBhdm9pZAo+ICsrwqDC oCBsaWJjcHAgaGF2aW5nIHRvIGtub3cgYWJvdXQgcHJldHR5X3ByaW50ZXIuwqAgKi8KPiArKwo+ ICsrc3RydWN0IGNoYXJfZGlzcGxheV9wb2xpY3kgOiBwdWJsaWMgY3BwX2NoYXJfY29sdW1uX3Bv bGljeQo+ICsrewo+ICsrIHB1YmxpYzoKPiArK8KgIGNoYXJfZGlzcGxheV9wb2xpY3kgKGludCB0 YWJzdG9wLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQg KCp3aWR0aF9jYikgKGNwcGNoYXJfdCBjKSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdm9pZCAoKnByaW50X2NiKSAocHJldHR5X3ByaW50ZXIgKnBwLAo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjcHBfZGVjb2RlZF9jaGFyICZjcCkpCj4gKyvCoCA6 IGNwcF9jaGFyX2NvbHVtbl9wb2xpY3kgKHRhYnN0b3AsIHdpZHRoX2NiKSwKPiArK8KgwqDCoCBt X3ByaW50X2NiIChwcmludF9jYikKPiArK8KgIHsKPiArK8KgIH0KPiArKwo+ICsrwqAgdm9pZCAo Km1fcHJpbnRfY2IpIChwcmV0dHlfcHJpbnRlciAqcHAsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjcHBfZGVjb2RlZF9jaGFyICZjcCk7Cj4gKyt9Owo+ ICsrCj4gKyAvKiBBIGNsYXNzIHRvIGNvbnRyb2wgdGhlIG92ZXJhbGwgbGF5b3V0IHdoZW4gcHJp bnRpbmcgYQo+IGRpYWdub3N0aWMuCj4gKyAKPiArwqDCoMKgIFRoZSBsYXlvdXQgaXMgZGV0ZXJt aW5lZCB3aXRoaW4gdGhlIGNvbnN0cnVjdG9yLgo+ICtAQCAtMzQ1LDYgKzM4Niw4IEBAIGNsYXNz IGxheW91dAo+ICsgCj4gK8KgwqAgdm9pZCBwcmludF9saW5lIChsaW5lbnVtX3R5cGUgcm93KTsK PiArIAo+ICsrwqAgdm9pZCBvbl9iYWRfY29kZXBvaW50IChjb25zdCBjaGFyICpwdHIsIGNwcGNo YXJfdCBjaCwgc2l6ZV90Cj4gY2hfc3opOwo+ICsrCj4gK8KgIHByaXZhdGU6Cj4gK8KgwqAgYm9v bCB3aWxsX3Nob3dfbGluZV9wIChsaW5lbnVtX3R5cGUgcm93KSBjb25zdDsKPiArwqDCoCB2b2lk IHByaW50X2xlYWRpbmdfZml4aXRzIChsaW5lbnVtX3R5cGUgcm93KTsKPiArQEAgLTM4Niw2ICs0 MjksNyBAQCBjbGFzcyBsYXlvdXQKPiArwqAgcHJpdmF0ZToKPiArwqDCoCBkaWFnbm9zdGljX2Nv bnRleHQgKm1fY29udGV4dDsKPiArwqDCoCBwcmV0dHlfcHJpbnRlciAqbV9wcDsKPiArK8KgIGNo YXJfZGlzcGxheV9wb2xpY3kgbV9wb2xpY3k7Cj4gK8KgwqAgbG9jYXRpb25fdCBtX3ByaW1hcnlf bG9jOwo+ICvCoMKgIGV4cGxvY193aXRoX2Rpc3BsYXlfY29sIG1fZXhwbG9jOwo+ICvCoMKgIGNv bG9yaXplciBtX2NvbG9yaXplcjsKPiArQEAgLTM5OCw2ICs0NDIsNyBAQCBjbGFzcyBsYXlvdXQK PiArwqDCoCBhdXRvX3ZlYyA8bGluZV9zcGFuPiBtX2xpbmVfc3BhbnM7Cj4gK8KgwqAgaW50IG1f bGluZW51bV93aWR0aDsKPiArwqDCoCBpbnQgbV94X29mZnNldF9kaXNwbGF5Owo+ICsrwqAgYm9v bCBtX2VzY2FwZV9vbl9vdXRwdXQ7Cj4gKyB9Owo+ICsgCj4gKyAvKiBJbXBsZW1lbnRhdGlvbiBv ZiAiY2xhc3MgY29sb3JpemVyIi7CoCAqLwo+ICtAQCAtNjQ2LDYgKzY5MSwxMSBAQCBsYXlvdXRf cmFuZ2U6OmludGVyc2VjdHNfbGluZV9wIChsaW5lbnVtCj4gKyAvKiBEZWZhdWx0IGZvciB3aGVu IHdlIGRvbid0IGNhcmUgd2hhdCB0aGUgdGFiIGV4cGFuc2lvbiBpcyBzZXQKPiB0by7CoCAqLwo+ ICsgc3RhdGljIGNvbnN0IGludCBkZWZfdGFic3RvcCA9IDg7Cj4gKyAKPiArK3N0YXRpYyBjcHBf Y2hhcl9jb2x1bW5fcG9saWN5IGRlZl9wb2xpY3kgKCkKPiArK3sKPiArK8KgIHJldHVybiBjcHBf Y2hhcl9jb2x1bW5fcG9saWN5ICg4LCBjcHBfd2N3aWR0aCk7Cj4gKyt9Cj4gKysKPiArIC8qIENy ZWF0ZSBzb21lIGV4cGFuZGVkIGxvY2F0aW9ucyBmb3IgdGVzdGluZyBsYXlvdXRfcmFuZ2UuwqAg VGhlCj4gZmlsZW5hbWUKPiArwqDCoMKgIG1lbWJlciBvZiB0aGUgZXhwbG9jcyBpcyBzZXQgdG8g dGhlIGVtcHR5IHN0cmluZy7CoCBUaGlzIG1lbWJlcgo+IHdpbGwgb25seSBiZQo+ICvCoMKgwqAg aW5zcGVjdGVkIGJ5IHRoZSBjYWxscyB0byBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29sdW1u KCkgbWFkZQo+IGZyb20gdGhlCj4gK0BAIC02NjIsMTAgKzcxMiwxMyBAQCBtYWtlX3JhbmdlIChp bnQgc3RhcnRfbGluZSwgaW50IHN0YXJ0X2NvCj4gK8KgwqDCoMKgID0geyIiLCBzdGFydF9saW5l LCBzdGFydF9jb2wsIE5VTEwsIGZhbHNlfTsKPiArwqDCoCBjb25zdCBleHBhbmRlZF9sb2NhdGlv biBmaW5pc2hfZXhwbG9jCj4gK8KgwqDCoMKgID0geyIiLCBlbmRfbGluZSwgZW5kX2NvbCwgTlVM TCwgZmFsc2V9Owo+ICstwqAgcmV0dXJuIGxheW91dF9yYW5nZSAoZXhwbG9jX3dpdGhfZGlzcGxh eV9jb2wgKHN0YXJ0X2V4cGxvYywKPiBkZWZfdGFic3RvcCksCj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4cGxvY193aXRoX2Rpc3BsYXlfY29sIChmaW5pc2hf ZXhwbG9jLAo+IGRlZl90YWJzdG9wKSwKPiArK8KgIHJldHVybiBsYXlvdXRfcmFuZ2UgKGV4cGxv Y193aXRoX2Rpc3BsYXlfY29sIChzdGFydF9leHBsb2MsCj4gZGVmX3BvbGljeSAoKSwKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTE9DQVRJT05fQVNQRUNUX1NUQVJUCj4g KSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhwbG9jX3dp dGhfZGlzcGxheV9jb2wgKGZpbmlzaF9leHBsb2MsCj4gZGVmX3BvbGljeSAoKSwKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTE9DQVRJT05fQVNQRUNUX0ZJTklTCj4gSCks Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTSE9XX1JBTkdF X1dJVEhPVVRfQ0FSRVQsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGV4cGxvY193aXRoX2Rpc3BsYXlfY29sIChzdGFydF9leHBsb2MsCj4gZGVmX3RhYnN0b3Ap LAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleHBsb2Nfd2l0 aF9kaXNwbGF5X2NvbCAoc3RhcnRfZXhwbG9jLAo+IGRlZl9wb2xpY3kgKCksCj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoExPQ0FUSU9OX0FTUEVDVF9DQVJFVAo+ICksCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwLCBOVUxMKTsKPiAr IH0KPiArIAo+ICtAQCAtOTUwLDYgKzEwMDMsMTY0IEBAIGZpeGl0X2NtcCAoY29uc3Qgdm9pZCAq cF9hLCBjb25zdCB2b2lkICoKPiArwqDCoCByZXR1cm4gaGludF9hLT5nZXRfc3RhcnRfbG9jICgp IC0gaGludF9iLT5nZXRfc3RhcnRfbG9jICgpOwo+ICsgfQo+ICsgCj4gKysvKiBDYWxsYmFja3Mg Zm9yIHVzZSB3aGVuIG5vdCBlc2NhcGluZyB0aGUgc291cmNlLsKgICovCj4gKysKPiArKy8qIFRo ZSBkZWZhdWx0IGNhbGxiYWNrIGZvciBjaGFyX2NvbHVtbl9wb2xpY3k6Om1fd2lkdGhfY2IgaXMK PiBjcHBfd2N3aWR0aC7CoCAqLwo+ICsrCj4gKysvKiBDYWxsYmFjayBmb3IgY2hhcl9kaXNwbGF5 X3BvbGljeTo6bV9wcmludF9jYiBmb3IgcHJpbnRpbmcgc291cmNlCj4gY2hhcnMKPiArK8KgwqAg d2hlbiBub3QgZXNjYXBpbmcgdGhlIHNvdXJjZS7CoCAqLwo+ICsrCj4gKytzdGF0aWMgdm9pZAo+ ICsrZGVmYXVsdF9wcmludF9kZWNvZGVkX2NoIChwcmV0dHlfcHJpbnRlciAqcHAsCj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNwcF9kZWNv ZGVkX2NoYXIgJmRlY29kZWRfY2gpCj4gKyt7Cj4gKyvCoCBmb3IgKGNvbnN0IGNoYXIgKnB0ciA9 IGRlY29kZWRfY2gubV9zdGFydF9ieXRlOwo+ICsrwqDCoMKgwqDCoMKgIHB0ciAhPSBkZWNvZGVk X2NoLm1fbmV4dF9ieXRlOyBwdHIrKykKPiArK8KgwqDCoCB7Cj4gKyvCoMKgwqDCoMKgIGlmICgq cHRyID09ICdcMCcgfHwgKnB0ciA9PSAnXHInKQo+ICsrwqDCoMKgwqDCoMKgewo+ICsrwqDCoMKg wqDCoMKgwqAgcHBfc3BhY2UgKHBwKTsKPiArK8KgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+ICsr wqDCoMKgwqDCoMKgfQo+ICsrCj4gKyvCoMKgwqDCoMKgIHBwX2NoYXJhY3RlciAocHAsICpwdHIp Owo+ICsrwqDCoMKgIH0KPiArK30KPiArKwo+ICsrLyogQ2FsbGJhY2tzIGZvciB1c2Ugd2l0aCBE SUFHTk9TVElDU19FU0NBUEVfRk9STUFUX0JZVEVTLsKgICovCj4gKysKPiArK3N0YXRpYyBjb25z dCBpbnQgd2lkdGhfcGVyX2VzY2FwZWRfYnl0ZSA9IDQ7Cj4gKysKPiArKy8qIENhbGxiYWNrIGZv ciBjaGFyX2NvbHVtbl9wb2xpY3k6Om1fd2lkdGhfY2IgZm9yIGRldGVybWluaW5nIHRoZQo+ICsr wqDCoCBkaXNwbGF5IHdpZHRoIHdoZW4gZXNjYXBpbmcgd2l0aAo+IERJQUdOT1NUSUNTX0VTQ0FQ RV9GT1JNQVRfQllURVMuwqAgKi8KPiArKwo+ICsrc3RhdGljIGludAo+ICsrZXNjYXBlX2FzX2J5 dGVzX3dpZHRoIChjcHBjaGFyX3QgY2gpCj4gKyt7Cj4gKyvCoCBpZiAoY2ggPCAweDgwICYmIElT UFJJTlQgKGNoKSkKPiArK8KgwqDCoCByZXR1cm4gY3BwX3djd2lkdGggKGNoKTsKPiArK8KgIGVs c2UKPiArK8KgwqDCoCB7Cj4gKyvCoMKgwqDCoMKgIGlmIChjaCA8PcKgwqAgMHg3RikgcmV0dXJu IDEgKiB3aWR0aF9wZXJfZXNjYXBlZF9ieXRlOwo+ICsrwqDCoMKgwqDCoCBpZiAoY2ggPD3CoCAw eDdGRikgcmV0dXJuIDIgKiB3aWR0aF9wZXJfZXNjYXBlZF9ieXRlOwo+ICsrwqDCoMKgwqDCoCBp ZiAoY2ggPD0gMHhGRkZGKSByZXR1cm4gMyAqIHdpZHRoX3Blcl9lc2NhcGVkX2J5dGU7Cj4gKyvC oMKgwqDCoMKgIHJldHVybiA0ICogd2lkdGhfcGVyX2VzY2FwZWRfYnl0ZTsKPiArK8KgwqDCoCB9 Cj4gKyt9Cj4gKysKPiArKy8qIENhbGxiYWNrIGZvciBjaGFyX2Rpc3BsYXlfcG9saWN5OjptX3By aW50X2NiIGZvciBwcmludGluZyBzb3VyY2UKPiBjaGFycwo+ICsrwqDCoCB3aGVuIGVzY2FwaW5n IHdpdGggRElBR05PU1RJQ1NfRVNDQVBFX0ZPUk1BVF9CWVRFUy7CoCAqLwo+ICsrCj4gKytzdGF0 aWMgdm9pZAo+ICsrZXNjYXBlX2FzX2J5dGVzX3ByaW50IChwcmV0dHlfcHJpbnRlciAqcHAsCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNwcF9kZWNv ZGVkX2NoYXIgJmRlY29kZWRfY2gpCj4gKyt7Cj4gKyvCoCBpZiAoIWRlY29kZWRfY2gubV92YWxp ZF9jaCkKPiArK8KgwqDCoCB7Cj4gKyvCoMKgwqDCoMKgIGZvciAoY29uc3QgY2hhciAqaXRlciA9 IGRlY29kZWRfY2gubV9zdGFydF9ieXRlOwo+ICsrwqDCoMKgwqDCoMKgwqDCoCBpdGVyICE9IGRl Y29kZWRfY2gubV9uZXh0X2J5dGU7ICsraXRlcikKPiArK8KgwqDCoMKgwqDCoHsKPiArK8KgwqDC oMKgwqDCoMKgIGNoYXIgYnVmWzE2XTsKPiArK8KgwqDCoMKgwqDCoMKgIHNwcmludGYgKGJ1Ziwg IjwlMDJ4PiIsICh1bnNpZ25lZCBjaGFyKSppdGVyKTsKPiArK8KgwqDCoMKgwqDCoMKgIHBwX3N0 cmluZyAocHAsIGJ1Zik7Cj4gKyvCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgIHJldHVybjsK PiArK8KgwqDCoCB9Cj4gKysKPiArK8KgIGNwcGNoYXJfdCBjaCA9IGRlY29kZWRfY2gubV9jaDsK PiArK8KgIGlmIChjaCA8IDB4ODAgJiYgSVNQUklOVCAoY2gpKQo+ICsrwqDCoMKgIHBwX2NoYXJh Y3RlciAocHAsIGNoKTsKPiArK8KgIGVsc2UKPiArK8KgwqDCoCB7Cj4gKyvCoMKgwqDCoMKgIGZv ciAoY29uc3QgY2hhciAqaXRlciA9IGRlY29kZWRfY2gubV9zdGFydF9ieXRlOwo+ICsrwqDCoMKg wqDCoMKgwqDCoCBpdGVyIDwgZGVjb2RlZF9jaC5tX25leHRfYnl0ZTsgKytpdGVyKQo+ICsrwqDC oMKgwqDCoMKgewo+ICsrwqDCoMKgwqDCoMKgwqAgY2hhciBidWZbMTZdOwo+ICsrwqDCoMKgwqDC oMKgwqAgc3ByaW50ZiAoYnVmLCAiPCUwMng+IiwgKHVuc2lnbmVkIGNoYXIpKml0ZXIpOwo+ICsr wqDCoMKgwqDCoMKgwqAgcHBfc3RyaW5nIChwcCwgYnVmKTsKPiArK8KgwqDCoMKgwqDCoH0KPiAr K8KgwqDCoCB9Cj4gKyt9Cj4gKysKPiArKy8qIENhbGxiYWNrcyBmb3IgdXNlIHdpdGggRElBR05P U1RJQ1NfRVNDQVBFX0ZPUk1BVF9VTklDT0RFLsKgICovCj4gKysKPiArKy8qIENhbGxiYWNrIGZv ciBjaGFyX2NvbHVtbl9wb2xpY3k6Om1fd2lkdGhfY2IgZm9yIGRldGVybWluaW5nIHRoZQo+ICsr wqDCoCBkaXNwbGF5IHdpZHRoIHdoZW4gZXNjYXBpbmcgd2l0aAo+IERJQUdOT1NUSUNTX0VTQ0FQ RV9GT1JNQVRfVU5JQ09ERS7CoCAqLwo+ICsrCj4gKytzdGF0aWMgaW50Cj4gKytlc2NhcGVfYXNf dW5pY29kZV93aWR0aCAoY3BwY2hhcl90IGNoKQo+ICsrewo+ICsrwqAgaWYgKGNoIDwgMHg4MCAm JiBJU1BSSU5UIChjaCkpCj4gKyvCoMKgwqAgcmV0dXJuIGNwcF93Y3dpZHRoIChjaCk7Cj4gKyvC oCBlbHNlCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDCoCAvLyBXaWR0aCBvZiAiPFUrJTA0eD4i Cj4gKyvCoMKgwqDCoMKgIGlmIChjaCA+IDB4ZmZmZmYpCj4gKyvCoMKgwqDCoMKgwqByZXR1cm4g MTA7Cj4gKyvCoMKgwqDCoMKgIGVsc2UgaWYgKGNoID4gMHhmZmZmKQo+ICsrwqDCoMKgwqDCoMKg cmV0dXJuIDk7Cj4gKyvCoMKgwqDCoMKgIGVsc2UKPiArK8KgwqDCoMKgwqDCoHJldHVybiA4Owo+ ICsrwqDCoMKgIH0KPiArK30KPiArKwo+ICsrLyogQ2FsbGJhY2sgZm9yIGNoYXJfZGlzcGxheV9w b2xpY3k6Om1fcHJpbnRfY2IgZm9yIHByaW50aW5nIHNvdXJjZQo+IGNoYXJzCj4gKyvCoMKgIHdo ZW4gZXNjYXBpbmcgd2l0aCBESUFHTk9TVElDU19FU0NBUEVfRk9STUFUX1VOSUNPREUuwqAgKi8K PiArKwo+ICsrc3RhdGljIHZvaWQKPiArK2VzY2FwZV9hc191bmljb2RlX3ByaW50IChwcmV0dHlf cHJpbnRlciAqcHAsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjb25zdCBjcHBfZGVjb2RlZF9jaGFyICZkZWNvZGVkX2NoKQo+ICsrewo+ICsrwqAgaWYg KCFkZWNvZGVkX2NoLm1fdmFsaWRfY2gpCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDCoCBlc2Nh cGVfYXNfYnl0ZXNfcHJpbnQgKHBwLCBkZWNvZGVkX2NoKTsKPiArK8KgwqDCoMKgwqAgcmV0dXJu Owo+ICsrwqDCoMKgIH0KPiArKwo+ICsrwqAgY3BwY2hhcl90IGNoID0gZGVjb2RlZF9jaC5tX2No Owo+ICsrwqAgaWYgKGNoIDwgMHg4MCAmJiBJU1BSSU5UIChjaCkpCj4gKyvCoMKgwqAgcHBfY2hh cmFjdGVyIChwcCwgY2gpOwo+ICsrwqAgZWxzZQo+ICsrwqDCoMKgIHsKPiArK8KgwqDCoMKgwqAg Y2hhciBidWZbMTZdOwo+ICsrwqDCoMKgwqDCoCBzcHJpbnRmIChidWYsICI8VSslMDRYPiIsIGNo KTsKPiArK8KgwqDCoMKgwqAgcHBfc3RyaW5nIChwcCwgYnVmKTsKPiArK8KgwqDCoCB9Cj4gKyt9 Cj4gKysKPiArKy8qIFBvcHVsYXRlIGEgY2hhcl9kaXNwbGF5X3BvbGljeSBiYXNlZCBvbiBEQyBh bmQgUklDSExPQy7CoCAqLwo+ICsrCj4gKytzdGF0aWMgY2hhcl9kaXNwbGF5X3BvbGljeQo+ICsr bWFrZV9wb2xpY3kgKGNvbnN0IGRpYWdub3N0aWNfY29udGV4dCAmZGMsCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb25zdCByaWNoX2xvY2F0aW9uICZyaWNobG9jKQo+ICsrewo+ICsrwqAgLyog VGhlIGRlZmF1bHQgaXMgdG8gbm90IGVzY2FwZSBub24tQVNDSUkgYnl0ZXMuwqAgKi8KPiArK8Kg IGNoYXJfZGlzcGxheV9wb2xpY3kgcmVzdWx0Cj4gKyvCoMKgwqAgKGRjLnRhYnN0b3AsIGNwcF93 Y3dpZHRoLCBkZWZhdWx0X3ByaW50X2RlY29kZWRfY2gpOwo+ICsrCj4gKyvCoCAvKiBJZiB0aGUg ZGlhZ25vc3RpYyBzdWdnZXN0cyBlc2NhcGluZyBub24tQVNDSUkgYnl0ZXMsIHRoZW4KPiArK8Kg wqDCoMKgIHVzZSBwb2xpY3kgZnJvbSB1c2VyLXN1cHBsaWVkIG9wdGlvbnMuwqAgKi8KPiArK8Kg IGlmIChyaWNobG9jLmVzY2FwZV9vbl9vdXRwdXRfcCAoKSkKPiArK8KgwqDCoCB7Cj4gKyvCoMKg wqDCoMKgIHJlc3VsdC5tX3VuZGVjb2RlZF9ieXRlX3dpZHRoID0gd2lkdGhfcGVyX2VzY2FwZWRf Ynl0ZTsKPiArK8KgwqDCoMKgwqAgc3dpdGNoIChkYy5lc2NhcGVfZm9ybWF0KQo+ICsrwqDCoMKg wqDCoMKgewo+ICsrwqDCoMKgwqDCoMKgZGVmYXVsdDoKPiArK8KgwqDCoMKgwqDCoMKgIGdjY191 bnJlYWNoYWJsZSAoKTsKPiArK8KgwqDCoMKgwqDCoGNhc2UgRElBR05PU1RJQ1NfRVNDQVBFX0ZP Uk1BVF9VTklDT0RFOgo+ICsrwqDCoMKgwqDCoMKgwqAgcmVzdWx0Lm1fd2lkdGhfY2IgPSBlc2Nh cGVfYXNfdW5pY29kZV93aWR0aDsKPiArK8KgwqDCoMKgwqDCoMKgIHJlc3VsdC5tX3ByaW50X2Ni ID0gZXNjYXBlX2FzX3VuaWNvZGVfcHJpbnQ7Cj4gKyvCoMKgwqDCoMKgwqDCoCBicmVhazsKPiAr K8KgwqDCoMKgwqDCoGNhc2UgRElBR05PU1RJQ1NfRVNDQVBFX0ZPUk1BVF9CWVRFUzoKPiArK8Kg wqDCoMKgwqDCoMKgIHJlc3VsdC5tX3dpZHRoX2NiID0gZXNjYXBlX2FzX2J5dGVzX3dpZHRoOwo+ ICsrwqDCoMKgwqDCoMKgwqAgcmVzdWx0Lm1fcHJpbnRfY2IgPSBlc2NhcGVfYXNfYnl0ZXNfcHJp bnQ7Cj4gKyvCoMKgwqDCoMKgwqDCoCBicmVhazsKPiArK8KgwqDCoMKgwqDCoH0KPiArK8KgwqDC oCB9Cj4gKysKPiArK8KgIHJldHVybiByZXN1bHQ7Cj4gKyt9Cj4gKysKPiArIC8qIEltcGxlbWVu dGF0aW9uIG9mIGNsYXNzIGxheW91dC7CoCAqLwo+ICsgCj4gKyAvKiBDb25zdHJ1Y3RvciBmb3Ig Y2xhc3MgbGF5b3V0Lgo+ICtAQCAtOTY2LDggKzExNzcsMTAgQEAgbGF5b3V0OjpsYXlvdXQgKGRp YWdub3N0aWNfY29udGV4dCAqIGNvbgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk aWFnbm9zdGljX3QgZGlhZ25vc3RpY19raW5kKQo+ICsgOiBtX2NvbnRleHQgKGNvbnRleHQpLAo+ ICvCoMKgIG1fcHAgKGNvbnRleHQtPnByaW50ZXIpLAo+ICsrwqAgbV9wb2xpY3kgKG1ha2VfcG9s aWN5ICgqY29udGV4dCwgKnJpY2hsb2MpKSwKPiArwqDCoCBtX3ByaW1hcnlfbG9jIChyaWNobG9j LT5nZXRfcmFuZ2UgKDApLT5tX2xvYyksCj4gKy3CoCBtX2V4cGxvYyAocmljaGxvYy0+Z2V0X2V4 cGFuZGVkX2xvY2F0aW9uICgwKSwgY29udGV4dC0+dGFic3RvcCksCj4gKyvCoCBtX2V4cGxvYyAo cmljaGxvYy0+Z2V0X2V4cGFuZGVkX2xvY2F0aW9uICgwKSwgbV9wb2xpY3ksCj4gKyvCoMKgwqDC oMKgwqDCoMKgwqAgTE9DQVRJT05fQVNQRUNUX0NBUkVUKSwKPiArwqDCoCBtX2NvbG9yaXplciAo Y29udGV4dCwgZGlhZ25vc3RpY19raW5kKSwKPiArwqDCoCBtX2NvbG9yaXplX3NvdXJjZV9wIChj b250ZXh0LT5jb2xvcml6ZV9zb3VyY2VfcCksCj4gK8KgwqAgbV9zaG93X2xhYmVsc19wIChjb250 ZXh0LT5zaG93X2xhYmVsc19wKSwKPiArQEAgLTk3Nyw3ICsxMTkwLDggQEAgbGF5b3V0OjpsYXlv dXQgKGRpYWdub3N0aWNfY29udGV4dCAqIGNvbgo+ICvCoMKgIG1fZml4aXRfaGludHMgKHJpY2hs b2MtPmdldF9udW1fZml4aXRfaGludHMgKCkpLAo+ICvCoMKgIG1fbGluZV9zcGFucyAoMSArIHJp Y2hsb2MtPmdldF9udW1fbG9jYXRpb25zICgpKSwKPiArwqDCoCBtX2xpbmVudW1fd2lkdGggKDAp LAo+ICstwqAgbV94X29mZnNldF9kaXNwbGF5ICgwKQo+ICsrwqAgbV94X29mZnNldF9kaXNwbGF5 ICgwKSwKPiArK8KgIG1fZXNjYXBlX29uX291dHB1dCAocmljaGxvYy0+ZXNjYXBlX29uX291dHB1 dF9wICgpKQo+ICsgewo+ICvCoMKgIGZvciAodW5zaWduZWQgaW50IGlkeCA9IDA7IGlkeCA8IHJp Y2hsb2MtPmdldF9udW1fbG9jYXRpb25zICgpOwo+IGlkeCsrKQo+ICvCoMKgwqDCoCB7Cj4gK0BA IC0xMDYzLDEwICsxMjc3LDEzIEBAIGxheW91dDo6bWF5YmVfYWRkX2xvY2F0aW9uX3JhbmdlIChj b25zdAo+ICsgCj4gK8KgwqAgLyogRXZlcnl0aGluZyBpcyBub3cga25vd24gdG8gYmUgaW4gdGhl IGNvcnJlY3Qgc291cmNlIGZpbGUsCj4gK8KgwqDCoMKgwqAgYnV0IGl0IG1heSByZXF1aXJlIGZ1 cnRoZXIgc2FuaXRpemF0aW9uLsKgICovCj4gKy3CoCBsYXlvdXRfcmFuZ2UgcmkgKGV4cGxvY193 aXRoX2Rpc3BsYXlfY29sIChzdGFydCwgbV9jb250ZXh0LQo+ID50YWJzdG9wKSwKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4cGxvY193aXRoX2Rpc3BsYXlfY29sIChmaW5p c2gsIG1fY29udGV4dC0KPiA+dGFic3RvcCksCj4gKyvCoCBsYXlvdXRfcmFuZ2UgcmkgKGV4cGxv Y193aXRoX2Rpc3BsYXlfY29sIChzdGFydCwgbV9wb2xpY3ksCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIExPQ0FUSU9OX0FTUEVDVF9TVEFSVCksCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBleHBsb2Nfd2l0aF9kaXNwbGF5X2NvbCAoZmluaXNoLCBtX3BvbGljeSwK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTE9DQVRJT05fQVNQRUNUX0ZJTklTSCksCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbG9jX3JhbmdlLT5tX3JhbmdlX2Rp c3BsYXlfa2luZCwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4cGxvY193 aXRoX2Rpc3BsYXlfY29sIChjYXJldCwgbV9jb250ZXh0LQo+ID50YWJzdG9wKSwKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV4cGxvY193aXRoX2Rpc3BsYXlfY29sIChjYXJl dCwgbV9wb2xpY3ksCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExPQ0FUSU9OX0FTUEVD VF9DQVJFVCksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3JpZ2luYWxf aWR4LCBsb2NfcmFuZ2UtPm1fbGFiZWwpOwo+ICsgCj4gK8KgwqAgLyogSWYgd2UgaGF2ZSBhIHJh bmdlIHRoYXQgZmluaXNoZXMgYmVmb3JlIGl0IHN0YXJ0cyAocGVyaGFwcwo+ICtAQCAtMTQwMCw3 ICsxNjE3LDcgQEAgbGF5b3V0OjpjYWxjdWxhdGVfeF9vZmZzZXRfZGlzcGxheSAoKQo+ICvCoMKg wqDCoCA9IGdldF9saW5lX2J5dGVzX3dpdGhvdXRfdHJhaWxpbmdfd2hpdGVzcGFjZSAobGluZS5n ZXRfYnVmZmVyCj4gKCksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBsaW5lLmxlbmd0aCAoKSk7Cj4gK8KgwqAgaW50IGVvbF9kaXNwbGF5X2NvbHVtbgo+ICstwqDC oMKgID0gY3BwX2Rpc3BsYXlfd2lkdGggKGxpbmUuZ2V0X2J1ZmZlciAoKSwgbGluZV9ieXRlcywg bV9jb250ZXh0LQo+ID50YWJzdG9wKTsKPiArK8KgwqDCoCA9IGNwcF9kaXNwbGF5X3dpZHRoIChs aW5lLmdldF9idWZmZXIgKCksIGxpbmVfYnl0ZXMsIG1fcG9saWN5KTsKPiArwqDCoCBpZiAoY2Fy ZXRfZGlzcGxheV9jb2x1bW4gPiBlb2xfZGlzcGxheV9jb2x1bW4KPiArwqDCoMKgwqDCoMKgIHx8 ICFjYXJldF9kaXNwbGF5X2NvbHVtbikKPiArwqDCoMKgwqAgewo+ICtAQCAtMTQ3OSw3ICsxNjk2 LDcgQEAgbGF5b3V0OjpwcmludF9zb3VyY2VfbGluZSAobGluZW51bV90eXBlCj4gK8KgwqAgLyog VGhpcyBvYmplY3QgaGVscHMgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBkaXNwbGF5IGNvbHVtbiB3 ZSBhcmUKPiBhdCwgd2hpY2ggaXMKPiArwqDCoMKgwqDCoCBuZWNlc3NhcnkgZm9yIGNvbXB1dGlu ZyB0aGUgbGluZSBib3VuZHMgaW4gZGlzcGxheSB1bml0cywgZm9yCj4gZG9pbmcKPiArwqDCoMKg wqDCoCB0YWIgZXhwYW5zaW9uLCBhbmQgZm9yIGltcGxlbWVudGluZyBtX3hfb2Zmc2V0X2Rpc3Bs YXkuwqAgKi8KPiArLcKgIGNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uIGR3IChsaW5lLCBs aW5lX2J5dGVzLCBtX2NvbnRleHQtCj4gPnRhYnN0b3ApOwo+ICsrwqAgY3BwX2Rpc3BsYXlfd2lk dGhfY29tcHV0YXRpb24gZHcgKGxpbmUsIGxpbmVfYnl0ZXMsIG1fcG9saWN5KTsKPiArIAo+ICvC oMKgIC8qIFNraXAgdGhlIGZpcnN0IG1feF9vZmZzZXRfZGlzcGxheSBkaXNwbGF5IGNvbHVtbnMu wqAgSW4gY2FzZQo+IHRoZSBsZWFkaW5nCj4gK8KgwqDCoMKgwqAgcG9ydGlvbiB0aGF0IHdpbGwg YmUgc2tpcHBlZCBlbmRzIHdpdGggYSBjaGFyYWN0ZXIgd2l0aAo+IHdjd2lkdGggPiAxLCB0aGVu Cj4gK0BAIC0xNTI3LDcgKzE3NDQsOCBAQCBsYXlvdXQ6OnByaW50X3NvdXJjZV9saW5lIChsaW5l bnVtX3R5cGUKPiArwqDCoMKgwqDCoMKgwqAgdGFicyBhbmQgcmVwbGFjaW5nIHNvbWUgY29udHJv bCBieXRlcyB3aXRoIHNwYWNlcyBhcwo+IG5lY2Vzc2FyeS7CoCAqLwo+ICvCoMKgwqDCoMKgwqAg Y29uc3QgY2hhciAqYyA9IGR3Lm5leHRfYnl0ZSAoKTsKPiArwqDCoMKgwqDCoMKgIGNvbnN0IGlu dCBzdGFydF9kaXNwX2NvbCA9IGR3LmRpc3BsYXlfY29sc19wcm9jZXNzZWQgKCkgKyAxOwo+ICst wqDCoMKgwqDCoCBjb25zdCBpbnQgdGhpc19kaXNwbGF5X3dpZHRoID0gZHcucHJvY2Vzc19uZXh0 X2NvZGVwb2ludCAoKTsKPiArK8KgwqDCoMKgwqAgY3BwX2RlY29kZWRfY2hhciBjcDsKPiArK8Kg wqDCoMKgwqAgY29uc3QgaW50IHRoaXNfZGlzcGxheV93aWR0aCA9IGR3LnByb2Nlc3NfbmV4dF9j b2RlcG9pbnQKPiAoJmNwKTsKPiArwqDCoMKgwqDCoMKgIGlmICgqYyA9PSAnXHQnKQo+ICvCoMKg wqDCoMKgwqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoCAvKiBUaGUgcmV0dXJuZWQgZGlzcGxheSB3 aWR0aCBpcyB0aGUgbnVtYmVyIG9mIHNwYWNlcyBpbnRvCj4gd2hpY2ggdGhlCj4gK0BAIC0xNTM2 LDE1ICsxNzU0LDYgQEAgbGF5b3V0OjpwcmludF9zb3VyY2VfbGluZSAobGluZW51bV90eXBlCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgIHBwX3NwYWNlIChtX3BwKTsKPiArwqDCoMKgwqDCoMKgwqDC oCBjb250aW51ZTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKy3CoMKgwqDCoMKgIGlmICgqYyA9PSAn XDAnIHx8ICpjID09ICdccicpCj4gKy3CoMKgwqDCoMKgwqB7Cj4gKy3CoMKgwqDCoMKgwqDCoCAv KiBjcHBfd2N3aWR0aCgpIHByb21pc2VzIHRvIHJldHVybiAxIGZvciBhbGwgY29udHJvbAo+IGJ5 dGVzLCBhbmQgd2UKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgIHdhbnQgdG8gb3V0cHV0IHRoZXNl IGFzIGEgc2luZ2xlIHNwYWNlIHRvbywgc28gdGhpcyBjYXNlCj4gaXMKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgIGFjdHVhbGx5IHRoZSBzYW1lIGFzIHRoZSAnXHQnIGNhc2UuwqAgKi8KPiArLcKg wqDCoMKgwqDCoMKgIGdjY19hc3NlcnQgKHRoaXNfZGlzcGxheV93aWR0aCA9PSAxKTsKPiArLcKg wqDCoMKgwqDCoMKgIHBwX3NwYWNlIChtX3BwKTsKPiArLcKgwqDCoMKgwqDCoMKgIGNvbnRpbnVl Owo+ICstwqDCoMKgwqDCoMKgfQo+ICsgCj4gK8KgwqDCoMKgwqDCoCAvKiBXZSBoYXZlIGEgKHBv c3NpYmx5IG11bHRpYnl0ZSkgY2hhcmFjdGVyIHRvIG91dHB1dDsgdXBkYXRlCj4gdGhlIGxpbmUK PiArwqDCoMKgwqDCoMKgwqAgYm91bmRzIGlmIGl0IGlzIG5vdCB3aGl0ZXNwYWNlLsKgICovCj4g K0BAIC0xNTU2LDcgKzE3NjUsOCBAQCBsYXlvdXQ6OnByaW50X3NvdXJjZV9saW5lIChsaW5lbnVt X3R5cGUKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKyAKPiArwqDCoMKgwqDCoMKgIC8qIE91dHB1dCB0 aGUgY2hhcmFjdGVyLsKgICovCj4gKy3CoMKgwqDCoMKgIHdoaWxlIChjICE9IGR3Lm5leHRfYnl0 ZSAoKSkgcHBfY2hhcmFjdGVyIChtX3BwLCAqYysrKTsKPiArK8KgwqDCoMKgwqAgbV9wb2xpY3ku bV9wcmludF9jYiAobV9wcCwgY3ApOwo+ICsrwqDCoMKgwqDCoCBjID0gZHcubmV4dF9ieXRlICgp Owo+ICvCoMKgwqDCoCB9Cj4gK8KgwqAgcHJpbnRfbmV3bGluZSAoKTsKPiArwqDCoCByZXR1cm4g bGJvdW5kczsKPiArQEAgLTE2NTUsMTQgKzE4NjUsMTQgQEAgbGF5b3V0OjpwcmludF9hbm5vdGF0 aW9uX2xpbmUgKGxpbmVudW1fdAo+ICsgY2xhc3MgbGluZV9sYWJlbAo+ICsgewo+ICsgcHVibGlj Ogo+ICstwqAgbGluZV9sYWJlbCAoZGlhZ25vc3RpY19jb250ZXh0ICpjb250ZXh0LCBpbnQgc3Rh dGVfaWR4LCBpbnQKPiBjb2x1bW4sCj4gKyvCoCBsaW5lX2xhYmVsIChjb25zdCBjcHBfY2hhcl9j b2x1bW5fcG9saWN5ICZwb2xpY3ksCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBzdGF0 ZV9pZHgsIGludCBjb2x1bW4sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsYWJlbF90ZXh0 IHRleHQpCj4gK8KgwqAgOiBtX3N0YXRlX2lkeCAoc3RhdGVfaWR4KSwgbV9jb2x1bW4gKGNvbHVt biksCj4gK8KgwqDCoMKgIG1fdGV4dCAodGV4dCksIG1fbGFiZWxfbGluZSAoMCksIG1faGFzX3Zi YXIgKHRydWUpCj4gK8KgwqAgewo+ICvCoMKgwqDCoCBjb25zdCBpbnQgYnl0ZXMgPSBzdHJsZW4g KHRleHQubV9idWZmZXIpOwo+ICstwqDCoMKgIG1fZGlzcGxheV93aWR0aAo+ICstwqDCoMKgwqDC oCA9IGNwcF9kaXNwbGF5X3dpZHRoICh0ZXh0Lm1fYnVmZmVyLCBieXRlcywgY29udGV4dC0+dGFi c3RvcCk7Cj4gKyvCoMKgwqAgbV9kaXNwbGF5X3dpZHRoID0gY3BwX2Rpc3BsYXlfd2lkdGggKHRl eHQubV9idWZmZXIsIGJ5dGVzLAo+IHBvbGljeSk7Cj4gK8KgwqAgfQo+ICsgCj4gK8KgwqAgLyog U29ydGluZyBpcyBwcmltYXJpbHkgYnkgY29sdW1uLCB0aGVuIGJ5IHN0YXRlIGluZGV4LsKgICov Cj4gK0BAIC0xNzIyLDcgKzE5MzIsNyBAQCBsYXlvdXQ6OnByaW50X2FueV9sYWJlbHMgKGxpbmVu dW1fdHlwZSByCj4gK8KgwqDCoMKgwqDCoMKgaWYgKHRleHQubV9idWZmZXIgPT0gTlVMTCkKPiAr wqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPiArIAo+ICstwqDCoMKgwqDCoMKgbGFiZWxzLnNh ZmVfcHVzaCAobGluZV9sYWJlbCAobV9jb250ZXh0LCBpLCBkaXNwX2NvbCwgdGV4dCkpOwo+ICsr wqDCoMKgwqDCoMKgbGFiZWxzLnNhZmVfcHVzaCAobGluZV9sYWJlbCAobV9wb2xpY3ksIGksIGRp c3BfY29sLCB0ZXh0KSk7Cj4gK8KgwqDCoMKgwqDCoCB9Cj4gK8KgwqAgfQo+ICsgCj4gK0BAIC0y MDAyLDcgKzIyMTIsNyBAQCBwdWJsaWM6Cj4gKyAKPiArIC8qIEdldCB0aGUgcmFuZ2Ugb2YgYnl0 ZXMgb3IgZGlzcGxheSBjb2x1bW5zIHRoYXQgSElOVCB3b3VsZAo+IGFmZmVjdC7CoCAqLwo+ICsg c3RhdGljIGNvbHVtbl9yYW5nZQo+ICstZ2V0X2FmZmVjdGVkX3JhbmdlIChkaWFnbm9zdGljX2Nv bnRleHQgKmNvbnRleHQsCj4gKytnZXRfYWZmZWN0ZWRfcmFuZ2UgKGNvbnN0IGNwcF9jaGFyX2Nv bHVtbl9wb2xpY3kgJnBvbGljeSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNvbnN0IGZpeGl0X2hpbnQgKmhpbnQsIGVudW0gY29sdW1uX3VuaXQKPiBjb2xfdW5pdCkK PiArIHsKPiArwqDCoCBleHBhbmRlZF9sb2NhdGlvbiBleHBsb2Nfc3RhcnQgPSBleHBhbmRfbG9j YXRpb24gKGhpbnQtCj4gPmdldF9zdGFydF9sb2MgKCkpOwo+ICtAQCAtMjAxMywxMyArMjIyMywx MSBAQCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKGRpYWdub3N0aWNfY29udGV4dCAqCj4gK8KgwqAgaW50 IGZpbmlzaF9jb2x1bW47Cj4gK8KgwqAgaWYgKGNvbF91bml0ID09IENVX0RJU1BMQVlfQ09MUykK PiArwqDCoMKgwqAgewo+ICstwqDCoMKgwqDCoCBzdGFydF9jb2x1bW4KPiArLcKgwqDCoMKgwqDC oD0gbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwbG9jX3N0YXJ0LCBjb250ZXh0 LQo+ID50YWJzdG9wKTsKPiArK8KgwqDCoMKgwqAgc3RhcnRfY29sdW1uID0gbG9jYXRpb25fY29t cHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwbG9jX3N0YXJ0LAo+IHBvbGljeSk7Cj4gK8KgwqDCoMKg wqDCoCBpZiAoaGludC0+aW5zZXJ0aW9uX3AgKCkpCj4gK8KgwqDCoMKgwqDCoMKgZmluaXNoX2Nv bHVtbiA9IHN0YXJ0X2NvbHVtbiAtIDE7Cj4gK8KgwqDCoMKgwqDCoCBlbHNlCj4gKy3CoMKgwqDC oMKgwqBmaW5pc2hfY29sdW1uCj4gKy3CoMKgwqDCoMKgwqDCoCA9IGxvY2F0aW9uX2NvbXB1dGVf ZGlzcGxheV9jb2x1bW4gKGV4cGxvY19maW5pc2gsIGNvbnRleHQtCj4gPnRhYnN0b3ApOwo+ICsr wqDCoMKgwqDCoMKgZmluaXNoX2NvbHVtbiA9IGxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1 bW4KPiAoZXhwbG9jX2ZpbmlzaCwgcG9saWN5KTsKPiArwqDCoMKgwqAgfQo+ICvCoMKgIGVsc2UK PiArwqDCoMKgwqAgewo+ICtAQCAtMjAzMiwxMiArMjI0MCwxMyBAQCBnZXRfYWZmZWN0ZWRfcmFu Z2UgKGRpYWdub3N0aWNfY29udGV4dCAqCj4gKyAvKiBHZXQgdGhlIHJhbmdlIG9mIGRpc3BsYXkg Y29sdW1ucyB0aGF0IHdvdWxkIGJlIHByaW50ZWQgZm9yCj4gSElOVC7CoCAqLwo+ICsgCj4gKyBz dGF0aWMgY29sdW1uX3JhbmdlCj4gKy1nZXRfcHJpbnRlZF9jb2x1bW5zIChkaWFnbm9zdGljX2Nv bnRleHQgKmNvbnRleHQsIGNvbnN0IGZpeGl0X2hpbnQKPiAqaGludCkKPiArK2dldF9wcmludGVk X2NvbHVtbnMgKGNvbnN0IGNwcF9jaGFyX2NvbHVtbl9wb2xpY3kgJnBvbGljeSwKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBmaXhpdF9oaW50ICpoaW50KQo+ ICsgewo+ICvCoMKgIGV4cGFuZGVkX2xvY2F0aW9uIGV4cGxvYyA9IGV4cGFuZF9sb2NhdGlvbiAo aGludC0+Z2V0X3N0YXJ0X2xvYwo+ICgpKTsKPiArLcKgIGludCBzdGFydF9jb2x1bW4gPSBsb2Nh dGlvbl9jb21wdXRlX2Rpc3BsYXlfY29sdW1uIChleHBsb2MsCj4gY29udGV4dC0+dGFic3RvcCk7 Cj4gKyvCoCBpbnQgc3RhcnRfY29sdW1uID0gbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2NvbHVt biAoZXhwbG9jLAo+IHBvbGljeSk7Cj4gK8KgwqAgaW50IGhpbnRfd2lkdGggPSBjcHBfZGlzcGxh eV93aWR0aCAoaGludC0+Z2V0X3N0cmluZyAoKSwgaGludC0KPiA+Z2V0X2xlbmd0aCAoKSwKPiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29udGV4dC0+dGFic3RvcCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvbGlj eSk7Cj4gK8KgwqAgaW50IGZpbmFsX2hpbnRfY29sdW1uID0gc3RhcnRfY29sdW1uICsgaGludF93 aWR0aCAtIDE7Cj4gK8KgwqAgaWYgKGhpbnQtPmluc2VydGlvbl9wICgpKQo+ICvCoMKgwqDCoCB7 Cj4gK0BAIC0yMDQ3LDggKzIyNTYsNyBAQCBnZXRfcHJpbnRlZF9jb2x1bW5zIChkaWFnbm9zdGlj X2NvbnRleHQKPiArwqDCoMKgwqAgewo+ICvCoMKgwqDCoMKgwqAgZXhwbG9jID0gZXhwYW5kX2xv Y2F0aW9uIChoaW50LT5nZXRfbmV4dF9sb2MgKCkpOwo+ICvCoMKgwqDCoMKgwqAgLS1leHBsb2Mu Y29sdW1uOwo+ICstwqDCoMKgwqDCoCBpbnQgZmluaXNoX2NvbHVtbgo+ICstwqDCoMKgwqDCoMKg PSBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29sdW1uIChleHBsb2MsIGNvbnRleHQtPnRhYnN0 b3ApOwo+ICsrwqDCoMKgwqDCoCBpbnQgZmluaXNoX2NvbHVtbiA9IGxvY2F0aW9uX2NvbXB1dGVf ZGlzcGxheV9jb2x1bW4gKGV4cGxvYywKPiBwb2xpY3kpOwo+ICvCoMKgwqDCoMKgwqAgcmV0dXJu IGNvbHVtbl9yYW5nZSAoc3RhcnRfY29sdW1uLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNQVggKGZpbmlzaF9jb2x1bW4sIGZpbmFsX2hpbnRf Y29sdW1uKSk7Cj4gK8KgwqDCoMKgIH0KPiArQEAgLTIwNjYsMTMgKzIyNzQsMTMgQEAgcHVibGlj Ogo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29sdW1uX3JhbmdlIGFmZmVjdGVkX2NvbHVt bnMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb2x1bW5fcmFuZ2UgcHJpbnRlZF9jb2x1 bW5zLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqbmV3X3RleHQsIHNp emVfdCBuZXdfdGV4dF9sZW4sCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCB0YWJzdG9w KQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjcHBfY2hhcl9jb2x1bW5fcG9saWN5 ICZwb2xpY3kpCj4gK8KgwqAgOiBtX2FmZmVjdGVkX2J5dGVzIChhZmZlY3RlZF9ieXRlcyksCj4g K8KgwqDCoMKgIG1fYWZmZWN0ZWRfY29sdW1ucyAoYWZmZWN0ZWRfY29sdW1ucyksCj4gK8KgwqDC oMKgIG1fcHJpbnRlZF9jb2x1bW5zIChwcmludGVkX2NvbHVtbnMpLAo+ICvCoMKgwqDCoCBtX3Rl eHQgKHhzdHJkdXAgKG5ld190ZXh0KSksCj4gK8KgwqDCoMKgIG1fYnl0ZV9sZW5ndGggKG5ld190 ZXh0X2xlbiksCj4gKy3CoMKgwqAgbV90YWJzdG9wICh0YWJzdG9wKSwKPiArK8KgwqDCoCBtX3Bv bGljeSAocG9saWN5KSwKPiArwqDCoMKgwqAgbV9hbGxvY19zeiAobmV3X3RleHRfbGVuICsgMSkK PiArwqDCoCB7Cj4gK8KgwqDCoMKgIGNvbXB1dGVfZGlzcGxheV9jb2xzICgpOwo+ICtAQCAtMjA5 MCw3ICsyMjk4LDcgQEAgcHVibGljOgo+ICsgCj4gK8KgwqAgdm9pZCBjb21wdXRlX2Rpc3BsYXlf Y29scyAoKQo+ICvCoMKgIHsKPiArLcKgwqDCoCBtX2Rpc3BsYXlfY29scyA9IGNwcF9kaXNwbGF5 X3dpZHRoIChtX3RleHQsIG1fYnl0ZV9sZW5ndGgsCj4gbV90YWJzdG9wKTsKPiArK8KgwqDCoCBt X2Rpc3BsYXlfY29scyA9IGNwcF9kaXNwbGF5X3dpZHRoIChtX3RleHQsIG1fYnl0ZV9sZW5ndGgs Cj4gbV9wb2xpY3kpOwo+ICvCoMKgIH0KPiArIAo+ICvCoMKgIHZvaWQgb3ZlcndyaXRlIChpbnQg ZHN0X29mZnNldCwgY29uc3QgY2hhcl9zcGFuICZzcmNfc3BhbikKPiArQEAgLTIxMTgsNyArMjMy Niw3IEBAIHB1YmxpYzoKPiArwqDCoCBjaGFyICptX3RleHQ7Cj4gK8KgwqAgc2l6ZV90IG1fYnl0 ZV9sZW5ndGg7IC8qIE5vdCBpbmNsdWRpbmcgbnVsbC10ZXJtaW5hdG9yLsKgICovCj4gK8KgwqAg aW50IG1fZGlzcGxheV9jb2xzOwo+ICstwqAgaW50IG1fdGFic3RvcDsKPiArK8KgIGNvbnN0IGNw cF9jaGFyX2NvbHVtbl9wb2xpY3kgJm1fcG9saWN5Owo+ICvCoMKgIHNpemVfdCBtX2FsbG9jX3N6 Owo+ICsgfTsKPiArIAo+ICtAQCAtMjE1NCwxNSArMjM2MiwxNiBAQCBjb3JyZWN0aW9uOjplbnN1 cmVfdGVybWluYXRlZCAoKQo+ICsgY2xhc3MgbGluZV9jb3JyZWN0aW9ucwo+ICsgewo+ICsgcHVi bGljOgo+ICstwqAgbGluZV9jb3JyZWN0aW9ucyAoZGlhZ25vc3RpY19jb250ZXh0ICpjb250ZXh0 LCBjb25zdCBjaGFyCj4gKmZpbGVuYW1lLAo+ICsrwqAgbGluZV9jb3JyZWN0aW9ucyAoY29uc3Qg Y2hhcl9kaXNwbGF5X3BvbGljeSAmcG9saWN5LAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb25zdCBjaGFyICpmaWxlbmFtZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGxpbmVudW1fdHlwZSByb3cpCj4gKy3CoMKgwqAgOiBtX2NvbnRleHQg KGNvbnRleHQpLCBtX2ZpbGVuYW1lIChmaWxlbmFtZSksIG1fcm93IChyb3cpCj4gKyvCoCA6IG1f cG9saWN5IChwb2xpY3kpLCBtX2ZpbGVuYW1lIChmaWxlbmFtZSksIG1fcm93IChyb3cpCj4gK8Kg wqAge30KPiArwqDCoCB+bGluZV9jb3JyZWN0aW9ucyAoKTsKPiArIAo+ICvCoMKgIHZvaWQgYWRk X2hpbnQgKGNvbnN0IGZpeGl0X2hpbnQgKmhpbnQpOwo+ICsgCj4gKy3CoCBkaWFnbm9zdGljX2Nv bnRleHQgKm1fY29udGV4dDsKPiArK8KgIGNvbnN0IGNoYXJfZGlzcGxheV9wb2xpY3kgJm1fcG9s aWN5Owo+ICvCoMKgIGNvbnN0IGNoYXIgKm1fZmlsZW5hbWU7Cj4gK8KgwqAgbGluZW51bV90eXBl IG1fcm93Owo+ICvCoMKgIGF1dG9fdmVjIDxjb3JyZWN0aW9uICo+IG1fY29ycmVjdGlvbnM7Cj4g K0BAIC0yMjA4LDEwICsyNDE3LDEwIEBAIHNvdXJjZV9saW5lOjpzb3VyY2VfbGluZSAoY29uc3Qg Y2hhciAqZmkKPiArIHZvaWQKPiArIGxpbmVfY29ycmVjdGlvbnM6OmFkZF9oaW50IChjb25zdCBm aXhpdF9oaW50ICpoaW50KQo+ICsgewo+ICstwqAgY29sdW1uX3JhbmdlIGFmZmVjdGVkX2J5dGVz ID0gZ2V0X2FmZmVjdGVkX3JhbmdlIChtX2NvbnRleHQsCj4gaGludCwgQ1VfQllURVMpOwo+ICst wqAgY29sdW1uX3JhbmdlIGFmZmVjdGVkX2NvbHVtbnMgPSBnZXRfYWZmZWN0ZWRfcmFuZ2UgKG1f Y29udGV4dCwKPiBoaW50LAo+ICsrwqAgY29sdW1uX3JhbmdlIGFmZmVjdGVkX2J5dGVzID0gZ2V0 X2FmZmVjdGVkX3JhbmdlIChtX3BvbGljeSwgaGludCwKPiBDVV9CWVRFUyk7Cj4gKyvCoCBjb2x1 bW5fcmFuZ2UgYWZmZWN0ZWRfY29sdW1ucyA9IGdldF9hZmZlY3RlZF9yYW5nZSAobV9wb2xpY3ks Cj4gaGludCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAKPiBDVV9ESVNQTEFZX0NPTFMpOwo+ICstwqAgY29sdW1uX3JhbmdlIHByaW50ZWRfY29sdW1u cyA9IGdldF9wcmludGVkX2NvbHVtbnMgKG1fY29udGV4dCwKPiBoaW50KTsKPiArK8KgIGNvbHVt bl9yYW5nZSBwcmludGVkX2NvbHVtbnMgPSBnZXRfcHJpbnRlZF9jb2x1bW5zIChtX3BvbGljeSwK PiBoaW50KTsKPiArIAo+ICvCoMKgIC8qIFBvdGVudGlhbGx5IGNvbnNvbGlkYXRlLsKgICovCj4g K8KgwqAgaWYgKCFtX2NvcnJlY3Rpb25zLmlzX2VtcHR5ICgpKQo+ICtAQCAtMjI4MCw3ICsyNDg5 LDcgQEAgbGluZV9jb3JyZWN0aW9uczo6YWRkX2hpbnQgKGNvbnN0IGZpeGl0Xwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHByaW50ZWRfY29sdW1ucywKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBoaW50LT5nZXRfc3RyaW5nICgpLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGhpbnQtPmdldF9sZW5ndGggKCksCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtX2NvbnRl eHQtPnRhYnN0b3ApKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1fcG9saWN5KSk7Cj4g KyB9Cj4gKyAKPiArIC8qIElmIHRoZXJlIGFyZSBhbnkgZml4aXQgaGludHMgb24gc291cmNlIGxp bmUgUk9XLCBwcmludCB0aGVtLgo+ICtAQCAtMjI5NCw3ICsyNTAzLDcgQEAgbGF5b3V0Ojpwcmlu dF90cmFpbGluZ19maXhpdHMgKGxpbmVudW1fdAo+ICsgewo+ICvCoMKgIC8qIEJ1aWxkIGEgbGlz dCBvZiBjb3JyZWN0aW9uIGluc3RhbmNlcyBmb3IgdGhlIGxpbmUsCj4gK8KgwqDCoMKgwqAgcG90 ZW50aWFsbHkgY29uc29saWRhdGluZyBoaW50cyAoZm9yIHRoZSBzYWtlIG9mCj4gcmVhZGFiaWxp dHkpLsKgICovCj4gKy3CoCBsaW5lX2NvcnJlY3Rpb25zIGNvcnJlY3Rpb25zIChtX2NvbnRleHQs IG1fZXhwbG9jLmZpbGUsIHJvdyk7Cj4gKyvCoCBsaW5lX2NvcnJlY3Rpb25zIGNvcnJlY3Rpb25z IChtX3BvbGljeSwgbV9leHBsb2MuZmlsZSwgcm93KTsKPiArwqDCoCBmb3IgKHVuc2lnbmVkIGlu dCBpID0gMDsgaSA8IG1fZml4aXRfaGludHMubGVuZ3RoICgpOyBpKyspCj4gK8KgwqDCoMKgIHsK PiArwqDCoMKgwqDCoMKgIGNvbnN0IGZpeGl0X2hpbnQgKmhpbnQgPSBtX2ZpeGl0X2hpbnRzW2ld Owo+ICtAQCAtMjYzNSw2ICsyODQ0LDU5IEBAIG5hbWVzcGFjZSBzZWxmdGVzdCB7Cj4gKyAKPiAr IC8qIFNlbGZ0ZXN0cyBmb3IgZGlhZ25vc3RpY19zaG93X2xvY3VzLsKgICovCj4gKyAKPiArKy8q IFZlcmlmeSB0aGF0IGNwcF9kaXNwbGF5X3dpZHRoIGNvcnJlY3RseSBoYW5kbGVzIGVzY2FwaW5n LsKgICovCj4gKysKPiArK3N0YXRpYyB2b2lkCj4gKyt0ZXN0X2Rpc3BsYXlfd2lkdGhzICgpCj4g Kyt7Cj4gKyvCoCBnY2NfcmljaF9sb2NhdGlvbiByaWNobG9jIChVTktOT1dOX0xPQ0FUSU9OKTsK PiArKwo+ICsrwqAgLyogVSswM0MwICJHUkVFSyBTTUFMTCBMRVRURVIgUEkiLsKgICovCj4gKyvC oCBjb25zdCBjaGFyICpwaSA9ICJceENGXHg4MCI7Cj4gKyvCoCAvKiBVKzFGNjQyICJTTElHSFRM WSBTTUlMSU5HIEZBQ0UiLsKgICovCj4gKyvCoCBjb25zdCBjaGFyICplbW9qaSA9ICJceEYwXHg5 Rlx4OTlceDgyIjsKPiArK8KgIC8qIFN0cmF5IHRyYWlsaW5nIGJ5dGUgb2YgYSBVVEYtOCBjaGFy YWN0ZXIuwqAgKi8KPiArK8KgIGNvbnN0IGNoYXIgKnN0cmF5ID0gIlx4QkYiOwo+ICsrwqAgLyog VSsxMEZGRkYuwqAgKi8KPiArK8KgIGNvbnN0IGNoYXIgKm1heF9jb2RlcG9pbnQgPSAiXHhGNFx4 OEZceEJGXHhCRiI7Cj4gKysKPiArK8KgIC8qIE5vIGVzY2FwaW5nLsKgICovCj4gKyvCoCB7Cj4g KyvCoMKgwqAgdGVzdF9kaWFnbm9zdGljX2NvbnRleHQgZGM7Cj4gKyvCoMKgwqAgY2hhcl9kaXNw bGF5X3BvbGljeSBwb2xpY3kgKG1ha2VfcG9saWN5IChkYywgcmljaGxvYykpOwo+ICsrwqDCoMKg IEFTU0VSVF9FUSAoY3BwX2Rpc3BsYXlfd2lkdGggKHBpLCBzdHJsZW4gKHBpKSwgcG9saWN5KSwg MSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjcHBfZGlzcGxheV93aWR0aCAoZW1vamksIHN0cmxl biAoZW1vamkpLCBwb2xpY3kpLAo+IDIpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAoY3BwX2Rpc3Bs YXlfd2lkdGggKHN0cmF5LCBzdHJsZW4gKHN0cmF5KSwgcG9saWN5KSwKPiAxKTsKPiArK8KgwqDC oCAvKiBEb24ndCBjaGVjayB3aWR0aCBvZiBVKzEwRkZGRjsgaXQncyBpbiBhIHByaXZhdGUgdXNl IHBsYW5lLsKgCj4gKi8KPiArK8KgIH0KPiArKwo+ICsrwqAgcmljaGxvYy5zZXRfZXNjYXBlX29u X291dHB1dCAodHJ1ZSk7Cj4gKysKPiArK8KgIHsKPiArK8KgwqDCoCB0ZXN0X2RpYWdub3N0aWNf Y29udGV4dCBkYzsKPiArK8KgwqDCoCBkYy5lc2NhcGVfZm9ybWF0ID0gRElBR05PU1RJQ1NfRVND QVBFX0ZPUk1BVF9VTklDT0RFOwo+ICsrwqDCoMKgIGNoYXJfZGlzcGxheV9wb2xpY3kgcG9saWN5 IChtYWtlX3BvbGljeSAoZGMsIHJpY2hsb2MpKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNwcF9k aXNwbGF5X3dpZHRoIChwaSwgc3RybGVuIChwaSksIHBvbGljeSksIDgpOwo+ICsrwqDCoMKgIEFT U0VSVF9FUSAoY3BwX2Rpc3BsYXlfd2lkdGggKGVtb2ppLCBzdHJsZW4gKGVtb2ppKSwgcG9saWN5 KSwKPiA5KTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNwcF9kaXNwbGF5X3dpZHRoIChzdHJheSwg c3RybGVuIChzdHJheSksIHBvbGljeSksCj4gNCk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjcHBf ZGlzcGxheV93aWR0aCAobWF4X2NvZGVwb2ludCwgc3RybGVuCj4gKG1heF9jb2RlcG9pbnQpLAo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcG9saWN5KSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJsZW4gKCI8 VSsxMEZGRkY+IikpOwo+ICsrwqAgfQo+ICsrCj4gKyvCoCB7Cj4gKyvCoMKgwqAgdGVzdF9kaWFn bm9zdGljX2NvbnRleHQgZGM7Cj4gKyvCoMKgwqAgZGMuZXNjYXBlX2Zvcm1hdCA9IERJQUdOT1NU SUNTX0VTQ0FQRV9GT1JNQVRfQllURVM7Cj4gKyvCoMKgwqAgY2hhcl9kaXNwbGF5X3BvbGljeSBw b2xpY3kgKG1ha2VfcG9saWN5IChkYywgcmljaGxvYykpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAo Y3BwX2Rpc3BsYXlfd2lkdGggKHBpLCBzdHJsZW4gKHBpKSwgcG9saWN5KSwgOCk7Cj4gKyvCoMKg wqAgQVNTRVJUX0VRIChjcHBfZGlzcGxheV93aWR0aCAoZW1vamksIHN0cmxlbiAoZW1vamkpLCBw b2xpY3kpLAo+IDE2KTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNwcF9kaXNwbGF5X3dpZHRoIChz dHJheSwgc3RybGVuIChzdHJheSksIHBvbGljeSksCj4gNCk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VR IChjcHBfZGlzcGxheV93aWR0aCAobWF4X2NvZGVwb2ludCwgc3RybGVuCj4gKG1heF9jb2RlcG9p bnQpLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcG9saWN5KSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxNik7 Cj4gKyvCoCB9Cj4gKyt9Cj4gKysKPiArIC8qIEZvciBwcmVjaXNlIHRlc3RzIG9mIHRoZSBsYXlv dXQsIG1ha2UgY2xlYXIgd2hlcmUgdGhlIHNvdXJjZQo+IGxpbmUgd2lsbAo+ICvCoMKgwqAgc3Rh cnQuwqAgdGVzdF9sZWZ0X21hcmdpbiBzZXRzIHRoZSB0b3RhbCBieXRlIGNvdW50IGZyb20gdGhl IGxlZnQKPiBzaWRlIG9mIHRoZQo+ICvCoMKgwqAgc2NyZWVuIHRvIHRoZSBzdGFydCBvZiBzb3Vy Y2UgbGluZXMsIGFmdGVyIHRoZSBsaW5lIG51bWJlciBhbmQKPiB0aGUgc2VwYXJhdG9yLAo+ICtA QCAtMjcwNCwxMCArMjk2NiwxMCBAQCB0ZXN0X2xheW91dF94X29mZnNldF9kaXNwbGF5X3V0Zjgg KGNvbnN0Cj4gK8KgwqAgY2hhcl9zcGFuIGxzcGFuID0gbG9jYXRpb25fZ2V0X3NvdXJjZV9saW5l ICh0bXAuZ2V0X2ZpbGVuYW1lICgpLAo+IDEpOwo+ICvCoMKgIEFTU0VSVF9FUSAobGluZV9kaXNw bGF5X2NvbHMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX2Rpc3BsYXlfd2lkdGggKGxz cGFuLmdldF9idWZmZXIgKCksIGxzcGFuLmxlbmd0aCAoKSwKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlZl90YWJzdG9wKSk7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWZfcG9saWN5ICgpKSk7Cj4gK8KgwqAgQVNTRVJUX0VRIChsaW5lX2Rpc3BsYXlf Y29scywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlf Y29sdW1uIChleHBhbmRfbG9jYXRpb24KPiAobGluZV9lbmQpLAo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZGVmX3RhYnN0b3ApKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRlZl9wb2xpY3kgKCkpKTsKPiArwqDCoCBBU1NFUlRfRVEgKDAsIG1lbWNtcCAobHNw YW4uZ2V0X2J1ZmZlciAoKSArIChlbW9qaV9jb2wgLSAxKSwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJceGYwXHg5Zlx4OThceDgyXHhmMFx4OWZceDk4 XHg4MiIsIDgpKTsKPiArIAo+ICtAQCAtMjg1NSwxMiArMzExNywxMyBAQCB0ZXN0X2xheW91dF94 X29mZnNldF9kaXNwbGF5X3RhYiAoY29uc3QKPiArwqDCoCBBU1NFUlRfRVEgKCdcdCcsICoobHNw YW4uZ2V0X2J1ZmZlciAoKSArICh0YWJfY29sIC0gMSkpKTsKPiArwqDCoCBmb3IgKGludCB0YWJz dG9wID0gMTsgdGFic3RvcCAhPSBudW1fdGFic3RvcHM7ICsrdGFic3RvcCkKPiArwqDCoMKgwqAg ewo+ICsrwqDCoMKgwqDCoCBjcHBfY2hhcl9jb2x1bW5fcG9saWN5IHBvbGljeSAodGFic3RvcCwg Y3BwX3djd2lkdGgpOwo+ICvCoMKgwqDCoMKgwqAgQVNTRVJUX0VRIChsaW5lX2J5dGVzICsgZXh0 cmFfd2lkdGhbdGFic3RvcF0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHBf ZGlzcGxheV93aWR0aCAobHNwYW4uZ2V0X2J1ZmZlciAoKSwgbHNwYW4ubGVuZ3RoCj4gKCksCj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdGFic3RvcCkpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvbGljeSkpOwo+ICvCoMKgwqDC oMKgwqAgQVNTRVJUX0VRIChsaW5lX2J5dGVzICsgZXh0cmFfd2lkdGhbdGFic3RvcF0sCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2NhdGlvbl9jb21wdXRlX2Rpc3BsYXlfY29s dW1uIChleHBhbmRfbG9jYXRpb24KPiAobGluZV9lbmQpLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB0YWJzdG9wKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHBvbGljeSkpOwo+ICvCoMKgwqDCoCB9Cj4gKyAKPiArwqDCoCAvKiBD aGVjayB0aGF0IHRoZSB0YWIgaXMgZXhwYW5kZWQgdG8gdGhlIGV4cGVjdGVkIG51bWJlciBvZgo+ IHNwYWNlcy7CoCAqLwo+ICtAQCAtMzk5Miw2ICs0MjU1LDQzIEBAIHRlc3Rfb25lX2xpbmVyX2xh YmVsc191dGY4ICgpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICIgYmJceGYwXHg5Zlx4OThceDgyXHhmMFx4OWZceDk4XHg4MlxuIiwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHBfZm9ybWF0dGVkX3RleHQgKGRjLnByaW50 ZXIpKTsKPiArwqDCoCB9Cj4gKysKPiArK8KgIC8qIEV4YW1wbGUgb2YgZXNjYXBpbmcgdGhlIHNv dXJjZSBsaW5lcy7CoCAqLwo+ICsrwqAgewo+ICsrwqDCoMKgIHRleHRfcmFuZ2VfbGFiZWwgbGFi ZWwwICgibGFiZWwgMFx4ZjBceDlmXHg5OFx4ODIiKTsKPiArK8KgwqDCoCB0ZXh0X3JhbmdlX2xh YmVsIGxhYmVsMSAoImxhYmVsIDFceGNmXHg4MCIpOwo+ICsrwqDCoMKgIHRleHRfcmFuZ2VfbGFi ZWwgbGFiZWwyICgibGFiZWwgMlx4Y2ZceDgwIik7Cj4gKyvCoMKgwqAgZ2NjX3JpY2hfbG9jYXRp b24gcmljaGxvYyAoZm9vLCAmbGFiZWwwKTsKPiArK8KgwqDCoCByaWNobG9jLmFkZF9yYW5nZSAo YmFyLCBTSE9XX1JBTkdFX1dJVEhPVVRfQ0FSRVQsICZsYWJlbDEpOwo+ICsrwqDCoMKgIHJpY2hs b2MuYWRkX3JhbmdlIChmaWVsZCwgU0hPV19SQU5HRV9XSVRIT1VUX0NBUkVULCAmbGFiZWwyKTsK PiArK8KgwqDCoCByaWNobG9jLnNldF9lc2NhcGVfb25fb3V0cHV0ICh0cnVlKTsKPiArKwo+ICsr wqDCoMKgIHsKPiArK8KgwqDCoMKgwqAgdGVzdF9kaWFnbm9zdGljX2NvbnRleHQgZGM7Cj4gKyvC oMKgwqDCoMKgIGRjLmVzY2FwZV9mb3JtYXQgPSBESUFHTk9TVElDU19FU0NBUEVfRk9STUFUX1VO SUNPREU7Cj4gKyvCoMKgwqDCoMKgIGRpYWdub3N0aWNfc2hvd19sb2N1cyAoJmRjLCAmcmljaGxv YywgREtfRVJST1IpOwo+ICsrwqDCoMKgwqDCoCBBU1NFUlRfU1RSRVEgKCIgPFUrMUY2MDI+X2Zv byA9Cj4gPFUrMDNDMD5fYmFyLjxVKzFGNjAyPl9maWVsZDxVKzAzQzA+O1xuIgo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiIF5+fn5+fn5+fn5+fn7CoMKgIH5+fn5+fn5+ fn5+fgo+IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG4iCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICIgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfFxuIgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAiIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGxhYmVsIDJceGNmXHg4MFxuIgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAiIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxhYmVsIDFceGNmXHg4MFxuIgo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiIGxhYmVsIDBceGYwXHg5Zlx4OThc eDgyXG4iLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcF9mb3JtYXR0 ZWRfdGV4dCAoZGMucHJpbnRlcikpOwo+ICsrwqDCoMKgIH0KPiArK8KgwqDCoCB7Cj4gKyvCoMKg wqDCoMKgIHRlc3RfZGlhZ25vc3RpY19jb250ZXh0IGRjOwo+ICsrwqDCoMKgwqDCoCBkYy5lc2Nh cGVfZm9ybWF0ID0gRElBR05PU1RJQ1NfRVNDQVBFX0ZPUk1BVF9CWVRFUzsKPiArK8KgwqDCoMKg wqAgZGlhZ25vc3RpY19zaG93X2xvY3VzICgmZGMsICZyaWNobG9jLCBES19FUlJPUik7Cj4gKyvC oMKgwqDCoMKgIEFTU0VSVF9TVFJFUQo+ICsrwqDCoMKgwqDCoMKgKCIgPGYwPjw5Zj48OTg+PDgy Pl9mb28gPQo+IDxjZj48ODA+X2Jhci48ZjA+PDlmPjw5OD48ODI+X2ZpZWxkPGNmPjw4MD47XG4i Cj4gKyvCoMKgwqDCoMKgwqAgIiBefn5+fn5+fn5+fn5+fn5+fn5+fsKgwqAgfn5+fn5+fn5+fn5+ Cj4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG4iCj4gKyvCoMKgwqDCoMKgwqAgIiB8 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHxcbiIKPiArK8KgwqDCoMKgwqDCoCAiIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGFiZWwgMlx4Y2Zc eDgwXG4iCj4gKyvCoMKgwqDCoMKgwqAgIiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGxhYmVsIDFceGNmXHg4MFxuIgo+ICsrwqDCoMKgwqDCoMKgICIgbGFiZWwg MFx4ZjBceDlmXHg5OFx4ODJcbiIsCj4gKyvCoMKgwqDCoMKgwqAgcHBfZm9ybWF0dGVkX3RleHQg KGRjLnByaW50ZXIpKTsKPiArK8KgwqDCoCB9Cj4gKyvCoCB9Cj4gKyB9Cj4gKyAKPiArIC8qIE1h a2Ugc3VyZSB0aGF0IGNvbG9yaXphdGlvbiBjb2RlcyBkb24ndCBpbnRlcnJ1cHQgYSBtdWx0aWJ5 dGUKPiArQEAgLTQwNDYsOSArNDM0Niw5IEBAIHRlc3RfZGlhZ25vc3RpY19zaG93X2xvY3VzX29u ZV9saW5lcl91dGYKPiArIAo+ICvCoMKgIGNoYXJfc3BhbiBsc3BhbiA9IGxvY2F0aW9uX2dldF9z b3VyY2VfbGluZSAodG1wLmdldF9maWxlbmFtZSAoKSwKPiAxKTsKPiArwqDCoCBBU1NFUlRfRVEg KDI1LCBjcHBfZGlzcGxheV93aWR0aCAobHNwYW4uZ2V0X2J1ZmZlciAoKSwKPiBsc3Bhbi5sZW5n dGggKCksCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVmX3RhYnN0b3ApKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWZfcG9s aWN5ICgpKSk7Cj4gK8KgwqAgQVNTRVJUX0VRICgyNSwgbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5 X2NvbHVtbiAoZXhwYW5kX2xvY2F0aW9uCj4gKGxpbmVfZW5kKSwKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVmX3RhYnN0b3ApKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVmX3BvbGljeSAoKSkpOwo+ICsgCj4gK8KgwqAgdGVz dF9vbmVfbGluZXJfc2ltcGxlX2NhcmV0X3V0ZjggKCk7Cj4gK8KgwqAgdGVzdF9vbmVfbGluZXJf Y2FyZXRfYW5kX3JhbmdlX3V0ZjggKCk7Cj4gK0BAIC00NDM0LDMwICs0NzM0LDMxIEBAIHRlc3Rf b3ZlcmxhcHBlZF9maXhpdF9wcmludGluZyAoY29uc3QgbGkKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcHBfZm9ybWF0dGVkX3RleHQgKGRjLnByaW50ZXIpKTsKPiArIAo+ICvC oMKgwqDCoCAvKiBVbml0LXRlc3QgdGhlIGxpbmVfY29ycmVjdGlvbnMgbWFjaGluZXJ5LsKgICov Cj4gKyvCoMKgwqAgY2hhcl9kaXNwbGF5X3BvbGljeSBwb2xpY3kgKG1ha2VfcG9saWN5IChkYywg cmljaGxvYykpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDMsIHJpY2hsb2MuZ2V0X251bV9maXhp dF9oaW50cyAoKSk7Cj4gK8KgwqDCoMKgIGNvbnN0IGZpeGl0X2hpbnQgKmhpbnRfMCA9IHJpY2hs b2MuZ2V0X2ZpeGl0X2hpbnQgKDApOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5n ZSAoMTIsIDEyKSwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFu Z2UgKCZkYywgaGludF8wLCBDVV9CWVRFUykpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdldF9hZmZlY3RlZF9yYW5nZSAocG9saWN5LCBoaW50XzAsIENVX0JZVEVTKSk7Cj4gK8KgwqDC oMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgxMiwgMTIpLAo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGdldF9hZmZlY3RlZF9yYW5nZSAoJmRjLCBoaW50XzAsIENVX0RJU1BMQVlfQ09M UykpOwo+ICstwqDCoMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgxMiwgMjIpLCBnZXRfcHJp bnRlZF9jb2x1bW5zICgmZGMsCj4gaGludF8wKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ2V0X2FmZmVjdGVkX3JhbmdlIChwb2xpY3ksIGhpbnRfMCwgQ1VfRElTUExBWV9DT0xTKSk7 Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDEyLCAyMiksIGdldF9wcmludGVk X2NvbHVtbnMgKHBvbGljeSwKPiBoaW50XzApKTsKPiArwqDCoMKgwqAgY29uc3QgZml4aXRfaGlu dCAqaGludF8xID0gcmljaGxvYy5nZXRfZml4aXRfaGludCAoMSk7Cj4gK8KgwqDCoMKgIEFTU0VS VF9FUSAoY29sdW1uX3JhbmdlICgxOCwgMTgpLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdldF9hZmZlY3RlZF9yYW5nZSAoJmRjLCBoaW50XzEsIENVX0JZVEVTKSk7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlIChwb2xpY3ksIGhpbnRfMSwgQ1Vf QllURVMpKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDE4LCAxOCksCj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRf MSwgQ1VfRElTUExBWV9DT0xTKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2Ug KDE4LCAyMCksIGdldF9wcmludGVkX2NvbHVtbnMgKCZkYywKPiBoaW50XzEpKTsKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKHBvbGljeSwgaGludF8xLCBD VV9ESVNQTEFZX0NPTFMpKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5nZSAoMTgs IDIwKSwgZ2V0X3ByaW50ZWRfY29sdW1ucyAocG9saWN5LAo+IGhpbnRfMSkpOwo+ICvCoMKgwqDC oCBjb25zdCBmaXhpdF9oaW50ICpoaW50XzIgPSByaWNobG9jLmdldF9maXhpdF9oaW50ICgyKTsK PiArwqDCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDI5LCAyOCksCj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRfMiwgQ1VfQllU RVMpKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKHBv bGljeSwgaGludF8yLCBDVV9CWVRFUykpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9y YW5nZSAoMjksIDI4KSwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRf cmFuZ2UgKCZkYywgaGludF8yLCBDVV9ESVNQTEFZX0NPTFMpKTsKPiArLcKgwqDCoCBBU1NFUlRf RVEgKGNvbHVtbl9yYW5nZSAoMjksIDI5KSwgZ2V0X3ByaW50ZWRfY29sdW1ucyAoJmRjLAo+IGhp bnRfMikpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9hZmZlY3RlZF9yYW5nZSAo cG9saWN5LCBoaW50XzIsIENVX0RJU1BMQVlfQ09MUykpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAo Y29sdW1uX3JhbmdlICgyOSwgMjkpLCBnZXRfcHJpbnRlZF9jb2x1bW5zIChwb2xpY3ksCj4gaGlu dF8yKSk7Cj4gKyAKPiArwqDCoMKgwqAgLyogQWRkIGVhY2ggaGludCBpbiB0dXJuIHRvIGEgbGlu ZV9jb3JyZWN0aW9ucyBpbnN0YW5jZSwKPiArwqDCoMKgwqDCoMKgwqAgYW5kIHZlcmlmeSB0aGF0 IHRoZXkgYXJlIGNvbnNvbGlkYXRlZCBpbnRvIG9uZSBjb3JyZWN0aW9uCj4gaW5zdGFuY2UKPiAr wqDCoMKgwqDCoMKgwqAgYXMgZXhwZWN0ZWQuwqAgKi8KPiArLcKgwqDCoCBsaW5lX2NvcnJlY3Rp b25zIGxjICgmZGMsIHRtcC5nZXRfZmlsZW5hbWUgKCksIDEpOwo+ICsrwqDCoMKgIGxpbmVfY29y cmVjdGlvbnMgbGMgKHBvbGljeSwgdG1wLmdldF9maWxlbmFtZSAoKSwgMSk7Cj4gKyAKPiArwqDC oMKgwqAgLyogVGhlIGZpcnN0IHJlcGxhY2UgaGludCBieSBpdHNlbGYuwqAgKi8KPiArwqDCoMKg wqAgbGMuYWRkX2hpbnQgKGhpbnRfMCk7Cj4gK0BAIC00NjQ5LDMwICs0OTUwLDMxIEBAIHRlc3Rf b3ZlcmxhcHBlZF9maXhpdF9wcmludGluZ191dGY4IChjb24KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcHBfZm9ybWF0dGVkX3RleHQgKGRjLnByaW50ZXIpKTsKPiArIAo+ICvC oMKgwqDCoCAvKiBVbml0LXRlc3QgdGhlIGxpbmVfY29ycmVjdGlvbnMgbWFjaGluZXJ5LsKgICov Cj4gKyvCoMKgwqAgY2hhcl9kaXNwbGF5X3BvbGljeSBwb2xpY3kgKG1ha2VfcG9saWN5IChkYywg cmljaGxvYykpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDMsIHJpY2hsb2MuZ2V0X251bV9maXhp dF9oaW50cyAoKSk7Cj4gK8KgwqDCoMKgIGNvbnN0IGZpeGl0X2hpbnQgKmhpbnRfMCA9IHJpY2hs b2MuZ2V0X2ZpeGl0X2hpbnQgKDApOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5n ZSAoMTQsIDE0KSwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFu Z2UgKCZkYywgaGludF8wLCBDVV9CWVRFUykpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdldF9hZmZlY3RlZF9yYW5nZSAocG9saWN5LCBoaW50XzAsIENVX0JZVEVTKSk7Cj4gK8KgwqDC oMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgxMiwgMTIpLAo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGdldF9hZmZlY3RlZF9yYW5nZSAoJmRjLCBoaW50XzAsIENVX0RJU1BMQVlfQ09M UykpOwo+ICstwqDCoMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgxMiwgMjIpLCBnZXRfcHJp bnRlZF9jb2x1bW5zICgmZGMsCj4gaGludF8wKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ2V0X2FmZmVjdGVkX3JhbmdlIChwb2xpY3ksIGhpbnRfMCwgQ1VfRElTUExBWV9DT0xTKSk7 Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDEyLCAyMiksIGdldF9wcmludGVk X2NvbHVtbnMgKHBvbGljeSwKPiBoaW50XzApKTsKPiArwqDCoMKgwqAgY29uc3QgZml4aXRfaGlu dCAqaGludF8xID0gcmljaGxvYy5nZXRfZml4aXRfaGludCAoMSk7Cj4gK8KgwqDCoMKgIEFTU0VS VF9FUSAoY29sdW1uX3JhbmdlICgyMiwgMjIpLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdldF9hZmZlY3RlZF9yYW5nZSAoJmRjLCBoaW50XzEsIENVX0JZVEVTKSk7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlIChwb2xpY3ksIGhpbnRfMSwgQ1Vf QllURVMpKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDE4LCAxOCksCj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRf MSwgQ1VfRElTUExBWV9DT0xTKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2Ug KDE4LCAyMCksIGdldF9wcmludGVkX2NvbHVtbnMgKCZkYywKPiBoaW50XzEpKTsKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKHBvbGljeSwgaGludF8xLCBD VV9ESVNQTEFZX0NPTFMpKTsKPiArK8KgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9yYW5nZSAoMTgs IDIwKSwgZ2V0X3ByaW50ZWRfY29sdW1ucyAocG9saWN5LAo+IGhpbnRfMSkpOwo+ICvCoMKgwqDC oCBjb25zdCBmaXhpdF9oaW50ICpoaW50XzIgPSByaWNobG9jLmdldF9maXhpdF9oaW50ICgyKTsK PiArwqDCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDM1LCAzNCksCj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2FmZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRfMiwgQ1VfQllU RVMpKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKHBv bGljeSwgaGludF8yLCBDVV9CWVRFUykpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKGNvbHVtbl9y YW5nZSAoMzAsIDI5KSwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRf cmFuZ2UgKCZkYywgaGludF8yLCBDVV9ESVNQTEFZX0NPTFMpKTsKPiArLcKgwqDCoCBBU1NFUlRf RVEgKGNvbHVtbl9yYW5nZSAoMzAsIDMwKSwgZ2V0X3ByaW50ZWRfY29sdW1ucyAoJmRjLAo+IGhp bnRfMikpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9hZmZlY3RlZF9yYW5nZSAo cG9saWN5LCBoaW50XzIsIENVX0RJU1BMQVlfQ09MUykpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAo Y29sdW1uX3JhbmdlICgzMCwgMzApLCBnZXRfcHJpbnRlZF9jb2x1bW5zIChwb2xpY3ksCj4gaGlu dF8yKSk7Cj4gKyAKPiArwqDCoMKgwqAgLyogQWRkIGVhY2ggaGludCBpbiB0dXJuIHRvIGEgbGlu ZV9jb3JyZWN0aW9ucyBpbnN0YW5jZSwKPiArwqDCoMKgwqDCoMKgwqAgYW5kIHZlcmlmeSB0aGF0 IHRoZXkgYXJlIGNvbnNvbGlkYXRlZCBpbnRvIG9uZSBjb3JyZWN0aW9uCj4gaW5zdGFuY2UKPiAr wqDCoMKgwqDCoMKgwqAgYXMgZXhwZWN0ZWQuwqAgKi8KPiArLcKgwqDCoCBsaW5lX2NvcnJlY3Rp b25zIGxjICgmZGMsIHRtcC5nZXRfZmlsZW5hbWUgKCksIDEpOwo+ICsrwqDCoMKgIGxpbmVfY29y cmVjdGlvbnMgbGMgKHBvbGljeSwgdG1wLmdldF9maWxlbmFtZSAoKSwgMSk7Cj4gKyAKPiArwqDC oMKgwqAgLyogVGhlIGZpcnN0IHJlcGxhY2UgaGludCBieSBpdHNlbGYuwqAgKi8KPiArwqDCoMKg wqAgbGMuYWRkX2hpbnQgKGhpbnRfMCk7Cj4gK0BAIC00ODY2LDE1ICs1MTY4LDE2IEBAIHRlc3Rf b3ZlcmxhcHBlZF9maXhpdF9wcmludGluZ18yIChjb25zdAo+ICvCoMKgwqDCoCByaWNobG9jLmFk ZF9maXhpdF9pbnNlcnRfYmVmb3JlIChjb2xfMjEsICJ9Iik7Cj4gKyAKPiArwqDCoMKgwqAgLyog VGhlc2UgZml4aXRzIHNob3VsZCBiZSBhY2NlcHRlZDsgdGhleSBjYW4ndCBiZQo+IGNvbnNvbGlk YXRlZC7CoCAqLwo+ICsrwqDCoMKgIGNoYXJfZGlzcGxheV9wb2xpY3kgcG9saWN5IChtYWtlX3Bv bGljeSAoZGMsIHJpY2hsb2MpKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRICgyLCByaWNobG9jLmdl dF9udW1fZml4aXRfaGludHMgKCkpOwo+ICvCoMKgwqDCoCBjb25zdCBmaXhpdF9oaW50ICpoaW50 XzAgPSByaWNobG9jLmdldF9maXhpdF9oaW50ICgwKTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRIChj b2x1bW5fcmFuZ2UgKDIzLCAyMiksCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X2Fm ZmVjdGVkX3JhbmdlICgmZGMsIGhpbnRfMCwgQ1VfQllURVMpKTsKPiArLcKgwqDCoCBBU1NFUlRf RVEgKGNvbHVtbl9yYW5nZSAoMjMsIDIzKSwgZ2V0X3ByaW50ZWRfY29sdW1ucyAoJmRjLAo+IGhp bnRfMCkpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9hZmZlY3RlZF9yYW5nZSAo cG9saWN5LCBoaW50XzAsIENVX0JZVEVTKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5f cmFuZ2UgKDIzLCAyMyksIGdldF9wcmludGVkX2NvbHVtbnMgKHBvbGljeSwKPiBoaW50XzApKTsK PiArwqDCoMKgwqAgY29uc3QgZml4aXRfaGludCAqaGludF8xID0gcmljaGxvYy5nZXRfZml4aXRf aGludCAoMSk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgyMSwgMjApLAo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9hZmZlY3RlZF9yYW5nZSAoJmRjLCBoaW50 XzEsIENVX0JZVEVTKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRIChjb2x1bW5fcmFuZ2UgKDIxLCAy MSksIGdldF9wcmludGVkX2NvbHVtbnMgKCZkYywKPiBoaW50XzEpKTsKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBnZXRfYWZmZWN0ZWRfcmFuZ2UgKHBvbGljeSwgaGludF8xLCBDVV9CWVRF UykpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAoY29sdW1uX3JhbmdlICgyMSwgMjEpLCBnZXRfcHJp bnRlZF9jb2x1bW5zIChwb2xpY3ksCj4gaGludF8xKSk7Cj4gKyAKPiArwqDCoMKgwqAgLyogVmVy aWZ5IHRoYXQgdGhleSdyZSBwcmludGVkIGNvcnJlY3RseS7CoCAqLwo+ICvCoMKgwqDCoCBkaWFn bm9zdGljX3Nob3dfbG9jdXMgKCZkYywgJnJpY2hsb2MsIERLX0VSUk9SKTsKPiArQEAgLTUxNDEs MTAgKzU0NDQsMTEgQEAgdGVzdF90YWJfZXhwYW5zaW9uIChjb25zdCBsaW5lX3RhYmxlX2Nhcwo+ ICvCoMKgwqDCoMKgIC4uLi4uLi4uLi4uLi4uLi4uLi4uMTIzIDQ1Njc4OTAxMjM0IDU2Nzg5MDEy MzQ1wqAgY29sdW1uc8KgICovCj4gKyAKPiArwqDCoCBjb25zdCBpbnQgdGFic3RvcCA9IDg7Cj4g KyvCoCBjcHBfY2hhcl9jb2x1bW5fcG9saWN5IHBvbGljeSAodGFic3RvcCwgY3BwX3djd2lkdGgp Owo+ICvCoMKgIGNvbnN0IGludCBmaXJzdF9ub25fd3NfYnl0ZV9jb2wgPSA3Owo+ICvCoMKgIGNv bnN0IGludCByaWdodF9xdW90ZV9ieXRlX2NvbCA9IDE1Owo+ICvCoMKgIGNvbnN0IGludCBsYXN0 X2J5dGVfY29sID0gMjU7Cj4gKy3CoCBBU1NFUlRfRVEgKDM1LCBjcHBfZGlzcGxheV93aWR0aCAo Y29udGVudCwgbGFzdF9ieXRlX2NvbCwKPiB0YWJzdG9wKSk7Cj4gKyvCoCBBU1NFUlRfRVEgKDM1 LCBjcHBfZGlzcGxheV93aWR0aCAoY29udGVudCwgbGFzdF9ieXRlX2NvbCwKPiBwb2xpY3kpKTsK PiArIAo+ICvCoMKgIHRlbXBfc291cmNlX2ZpbGUgdG1wIChTRUxGVEVTVF9MT0NBVElPTiwgIi5j IiwgY29udGVudCk7Cj4gK8KgwqAgbGluZV90YWJsZV90ZXN0IGx0dCAoY2FzZV8pOwo+ICtAQCAt NTE4Nyw2ICs1NDkxLDExNCBAQCB0ZXN0X3RhYl9leHBhbnNpb24gKGNvbnN0IGxpbmVfdGFibGVf Y2FzCj4gK8KgwqAgfQo+ICsgfQo+ICsgCj4gKysvKiBWZXJpZnkgdGhhdCB0aGUgZXNjYXBpbmcg bWFjaGluZXJ5IGNhbiBjb3BlIHdpdGggYSB2YXJpZXR5IG9mCj4gZGlmZmVyZW50Cj4gKyvCoMKg IGludmFsaWQgYnl0ZXMuwqAgKi8KPiArKwo+ICsrc3RhdGljIHZvaWQKPiArK3Rlc3RfZXNjYXBp bmdfYnl0ZXNfMSAoY29uc3QgbGluZV90YWJsZV9jYXNlICZjYXNlXykKPiArK3sKPiArK8KgIGNv bnN0IGNoYXIgY29udGVudFtdID0gImJlZm9yZVwwXDFcMlwzXHJceDgwXHhmZiIiYWZ0ZXJcbiI7 Cj4gKyvCoCBjb25zdCBzaXplX3Qgc3ogPSBzaXplb2YgKGNvbnRlbnQpOwo+ICsrwqAgdGVtcF9z b3VyY2VfZmlsZSB0bXAgKFNFTEZURVNUX0xPQ0FUSU9OLCAiLmMiLCBjb250ZW50LCBzeik7Cj4g KyvCoCBsaW5lX3RhYmxlX3Rlc3QgbHR0IChjYXNlXyk7Cj4gKyvCoCBjb25zdCBsaW5lX21hcF9v cmRpbmFyeSAqb3JkX21hcCA9IGxpbmVtYXBfY2hlY2tfb3JkaW5hcnkKPiArK8KgwqDCoCAobGlu ZW1hcF9hZGQgKGxpbmVfdGFibGUsIExDX0VOVEVSLCBmYWxzZSwgdG1wLmdldF9maWxlbmFtZSAo KSwKPiAwKSk7Cj4gKyvCoCBsaW5lbWFwX2xpbmVfc3RhcnQgKGxpbmVfdGFibGUsIDEsIDEwMCk7 Cj4gKysKPiArK8KgIGxvY2F0aW9uX3QgZmluaXNoCj4gKyvCoMKgwqAgPSBsaW5lbWFwX3Bvc2l0 aW9uX2Zvcl9saW5lX2FuZF9jb2x1bW4gKGxpbmVfdGFibGUsIG9yZF9tYXAsIDEsCj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cmxlbiAoY29udGVudCkpOwo+ICsrCj4gKyvCoCBpZiAo ZmluaXNoID4gTElORV9NQVBfTUFYX0xPQ0FUSU9OX1dJVEhfQ09MUykKPiArK8KgwqDCoCByZXR1 cm47Cj4gKysKPiArK8KgIC8qIExvY2F0aW9ucyBvZiB0aGUgTlVMIGFuZCBcciBieXRlcy7CoCAq Lwo+ICsrwqAgbG9jYXRpb25fdCBudWxfbG9jCj4gKyvCoMKgwqAgPSBsaW5lbWFwX3Bvc2l0aW9u X2Zvcl9saW5lX2FuZF9jb2x1bW4gKGxpbmVfdGFibGUsIG9yZF9tYXAsIDEsCj4gNyk7Cj4gKyvC oCBsb2NhdGlvbl90IHJfbG9jCj4gKyvCoMKgwqAgPSBsaW5lbWFwX3Bvc2l0aW9uX2Zvcl9saW5l X2FuZF9jb2x1bW4gKGxpbmVfdGFibGUsIG9yZF9tYXAsIDEsCj4gMTEpOwo+ICsrwqAgZ2NjX3Jp Y2hfbG9jYXRpb24gcmljaGxvYyAobnVsX2xvYyk7Cj4gKyvCoCByaWNobG9jLmFkZF9yYW5nZSAo cl9sb2MpOwo+ICsrCj4gKyvCoCB7Cj4gKyvCoMKgwqAgdGVzdF9kaWFnbm9zdGljX2NvbnRleHQg ZGM7Cj4gKyvCoMKgwqAgZGlhZ25vc3RpY19zaG93X2xvY3VzICgmZGMsICZyaWNobG9jLCBES19F UlJPUik7Cj4gKyvCoMKgwqAgQVNTRVJUX1NUUkVRICgiIGJlZm9yZSBcMVwyXDMgXHg4MFx4ZmYi ImFmdGVyXG4iCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIsKgwqDCoMKgwqDC oCBewqDCoCB+XG4iLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBwX2Zvcm1h dHRlZF90ZXh0IChkYy5wcmludGVyKSk7Cj4gKyvCoCB9Cj4gKyvCoCByaWNobG9jLnNldF9lc2Nh cGVfb25fb3V0cHV0ICh0cnVlKTsKPiArK8KgIHsKPiArK8KgwqDCoCB0ZXN0X2RpYWdub3N0aWNf Y29udGV4dCBkYzsKPiArK8KgwqDCoCBkYy5lc2NhcGVfZm9ybWF0ID0gRElBR05PU1RJQ1NfRVND QVBFX0ZPUk1BVF9VTklDT0RFOwo+ICsrwqDCoMKgIGRpYWdub3N0aWNfc2hvd19sb2N1cyAoJmRj LCAmcmljaGxvYywgREtfRVJST1IpOwo+ICsrwqDCoMKgIEFTU0VSVF9TVFJFUQo+ICsrwqDCoMKg wqDCoCAoIgo+IGJlZm9yZTxVKzAwMDA+PFUrMDAwMT48VSswMDAyPjxVKzAwMDM+PFUrMDAwRD48 ODA+PGZmPmFmdGVyXG4iCj4gKyvCoMKgwqDCoMKgwqAgIsKgwqDCoMKgwqDCoCBefn5+fn5+fsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfn5+fn5+fn5cbiIs Cj4gKyvCoMKgwqDCoMKgwqAgcHBfZm9ybWF0dGVkX3RleHQgKGRjLnByaW50ZXIpKTsKPiArK8Kg IH0KPiArK8KgIHsKPiArK8KgwqDCoCB0ZXN0X2RpYWdub3N0aWNfY29udGV4dCBkYzsKPiArK8Kg wqDCoCBkYy5lc2NhcGVfZm9ybWF0ID0gRElBR05PU1RJQ1NfRVNDQVBFX0ZPUk1BVF9CWVRFUzsK PiArK8KgwqDCoCBkaWFnbm9zdGljX3Nob3dfbG9jdXMgKCZkYywgJnJpY2hsb2MsIERLX0VSUk9S KTsKPiArK8KgwqDCoCBBU1NFUlRfU1RSRVEgKCIgYmVmb3JlPDAwPjwwMT48MDI+PDAzPjwwZD48 ODA+PGZmPmFmdGVyXG4iCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIsKgwqDC oMKgwqDCoCBefn5+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB+fn5+XG4iLAo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBwX2Zvcm1hdHRlZF90ZXh0IChkYy5wcmludGVyKSk7Cj4g KyvCoCB9Cj4gKyt9Cj4gKysKPiArKy8qIEFzIGFib3ZlLCBidXQgdmVyaWZ5IHRoYXQgd2UgaGFu ZGxlIHRoZSBpbml0aWFsIGJ5dGUgb2YgYSBsaW5lCj4gKyvCoMKgIGNvcnJlY3RseS7CoCAqLwo+ ICsrCj4gKytzdGF0aWMgdm9pZAo+ICsrdGVzdF9lc2NhcGluZ19ieXRlc18yIChjb25zdCBsaW5l X3RhYmxlX2Nhc2UgJmNhc2VfKQo+ICsrewo+ICsrwqAgY29uc3QgY2hhciBjb250ZW50W13CoCA9 ICJcMGFmdGVyXG4iOwo+ICsrwqAgY29uc3Qgc2l6ZV90IHN6ID0gc2l6ZW9mIChjb250ZW50KTsK PiArK8KgIHRlbXBfc291cmNlX2ZpbGUgdG1wIChTRUxGVEVTVF9MT0NBVElPTiwgIi5jIiwgY29u dGVudCwgc3opOwo+ICsrwqAgbGluZV90YWJsZV90ZXN0IGx0dCAoY2FzZV8pOwo+ICsrwqAgY29u c3QgbGluZV9tYXBfb3JkaW5hcnkgKm9yZF9tYXAgPSBsaW5lbWFwX2NoZWNrX29yZGluYXJ5Cj4g KyvCoMKgwqAgKGxpbmVtYXBfYWRkIChsaW5lX3RhYmxlLCBMQ19FTlRFUiwgZmFsc2UsIHRtcC5n ZXRfZmlsZW5hbWUgKCksCj4gMCkpOwo+ICsrwqAgbGluZW1hcF9saW5lX3N0YXJ0IChsaW5lX3Rh YmxlLCAxLCAxMDApOwo+ICsrCj4gKyvCoCBsb2NhdGlvbl90IGZpbmlzaAo+ICsrwqDCoMKgID0g bGluZW1hcF9wb3NpdGlvbl9mb3JfbGluZV9hbmRfY29sdW1uIChsaW5lX3RhYmxlLCBvcmRfbWFw LCAxLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJsZW4gKGNvbnRlbnQpKTsKPiAr Kwo+ICsrwqAgaWYgKGZpbmlzaCA+IExJTkVfTUFQX01BWF9MT0NBVElPTl9XSVRIX0NPTFMpCj4g KyvCoMKgwqAgcmV0dXJuOwo+ICsrCj4gKyvCoCAvKiBMb2NhdGlvbiBvZiB0aGUgTlVMIGJ5dGUu wqAgKi8KPiArK8KgIGxvY2F0aW9uX3QgbnVsX2xvYwo+ICsrwqDCoMKgID0gbGluZW1hcF9wb3Np dGlvbl9mb3JfbGluZV9hbmRfY29sdW1uIChsaW5lX3RhYmxlLCBvcmRfbWFwLCAxLAo+IDEpOwo+ ICsrwqAgZ2NjX3JpY2hfbG9jYXRpb24gcmljaGxvYyAobnVsX2xvYyk7Cj4gKysKPiArK8KgIHsK PiArK8KgwqDCoCB0ZXN0X2RpYWdub3N0aWNfY29udGV4dCBkYzsKPiArK8KgwqDCoCBkaWFnbm9z dGljX3Nob3dfbG9jdXMgKCZkYywgJnJpY2hsb2MsIERLX0VSUk9SKTsKPiArK8KgwqDCoCBBU1NF UlRfU1RSRVEgKCLCoCBhZnRlclxuIgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICIgXlxuIiwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcF9mb3JtYXR0ZWRf dGV4dCAoZGMucHJpbnRlcikpOwo+ICsrwqAgfQo+ICsrwqAgcmljaGxvYy5zZXRfZXNjYXBlX29u X291dHB1dCAodHJ1ZSk7Cj4gKyvCoCB7Cj4gKyvCoMKgwqAgdGVzdF9kaWFnbm9zdGljX2NvbnRl eHQgZGM7Cj4gKyvCoMKgwqAgZGMuZXNjYXBlX2Zvcm1hdCA9IERJQUdOT1NUSUNTX0VTQ0FQRV9G T1JNQVRfVU5JQ09ERTsKPiArK8KgwqDCoCBkaWFnbm9zdGljX3Nob3dfbG9jdXMgKCZkYywgJnJp Y2hsb2MsIERLX0VSUk9SKTsKPiArK8KgwqDCoCBBU1NFUlRfU1RSRVEgKCIgPFUrMDAwMD5hZnRl clxuIgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIgXn5+fn5+fn5cbiIsCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHBfZm9ybWF0dGVkX3RleHQgKGRjLnBy aW50ZXIpKTsKPiArK8KgIH0KPiArK8KgIHsKPiArK8KgwqDCoCB0ZXN0X2RpYWdub3N0aWNfY29u dGV4dCBkYzsKPiArK8KgwqDCoCBkYy5lc2NhcGVfZm9ybWF0ID0gRElBR05PU1RJQ1NfRVNDQVBF X0ZPUk1BVF9CWVRFUzsKPiArK8KgwqDCoCBkaWFnbm9zdGljX3Nob3dfbG9jdXMgKCZkYywgJnJp Y2hsb2MsIERLX0VSUk9SKTsKPiArK8KgwqDCoCBBU1NFUlRfU1RSRVEgKCIgPDAwPmFmdGVyXG4i Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIiBefn5+XG4iLAo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBwX2Zvcm1hdHRlZF90ZXh0IChkYy5wcmludGVyKSk7 Cj4gKyvCoCB9Cj4gKyt9Cj4gKysKPiArIC8qIFZlcmlmeSB0aGF0IGxpbmUgbnVtYmVycyBhcmUg Y29ycmVjdGx5IHByaW50ZWQgZm9yIHRoZSBjYXNlIG9mCj4gK8KgwqDCoCBhIG11bHRpbGluZSBy YW5nZSBpbiB3aGljaCB0aGUgd2lkdGggb2YgdGhlIGxpbmUgbnVtYmVycyBjaGFuZ2VzCj4gK8Kg wqDCoCAoZS5nLiBmcm9tICI5IiB0byAiMTAiKS7CoCAqLwo+ICtAQCAtNTI0Myw2ICs1NjU1LDgg QEAgZGlhZ25vc3RpY19zaG93X2xvY3VzX2NfdGVzdHMgKCkKPiArwqDCoCB0ZXN0X2xheW91dF9y YW5nZV9mb3Jfc2luZ2xlX2xpbmUgKCk7Cj4gK8KgwqAgdGVzdF9sYXlvdXRfcmFuZ2VfZm9yX211 bHRpcGxlX2xpbmVzICgpOwo+ICsgCj4gKyvCoCB0ZXN0X2Rpc3BsYXlfd2lkdGhzICgpOwo+ICsr Cj4gK8KgwqAgZm9yX2VhY2hfbGluZV90YWJsZV9jYXNlICh0ZXN0X2xheW91dF94X29mZnNldF9k aXNwbGF5X3V0ZjgpOwo+ICvCoMKgIGZvcl9lYWNoX2xpbmVfdGFibGVfY2FzZSAodGVzdF9sYXlv dXRfeF9vZmZzZXRfZGlzcGxheV90YWIpOwo+ICsgCj4gK0BAIC01MjYzLDYgKzU2NzcsOCBAQCBk aWFnbm9zdGljX3Nob3dfbG9jdXNfY190ZXN0cyAoKQo+ICvCoMKgIGZvcl9lYWNoX2xpbmVfdGFi bGVfY2FzZSAodGVzdF9maXhpdF9yZXBsYWNlX2NvbnRhaW5pbmdfbmV3bGluZSk7Cj4gK8KgwqAg Zm9yX2VhY2hfbGluZV90YWJsZV9jYXNlICh0ZXN0X2ZpeGl0X2RlbGV0aW9uX2FmZmVjdGluZ19u ZXdsaW5lKTsKPiArwqDCoCBmb3JfZWFjaF9saW5lX3RhYmxlX2Nhc2UgKHRlc3RfdGFiX2V4cGFu c2lvbik7Cj4gKyvCoCBmb3JfZWFjaF9saW5lX3RhYmxlX2Nhc2UgKHRlc3RfZXNjYXBpbmdfYnl0 ZXNfMSk7Cj4gKyvCoCBmb3JfZWFjaF9saW5lX3RhYmxlX2Nhc2UgKHRlc3RfZXNjYXBpbmdfYnl0 ZXNfMik7Cj4gKyAKPiArwqDCoCB0ZXN0X2xpbmVfbnVtYmVyc19tdWx0aWxpbmVfcmFuZ2UgKCk7 Cj4gKyB9Cj4gK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZv a2UudGV4aQo+ICstLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpwqDCoMKgwqDCoMKgMjAyMS0xMi0y NSAwMToyOToxMi45MjczMTcxNzQgLTA4MDAKPiArKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4acKg wqDCoMKgwqDCoDIwMjEtMTItMjUgMDE6MzA6NTAuNjgxNjg4ODIzIC0wODAwCj4gK0BAIC0yOTUs NyArMjk1LDggQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9Lgo+ICsg LWZkaWFnbm9zdGljcy1zaG93LXBhdGgtZGVwdGhzIEBnb2wKPiArIC1mbm8tc2hvdy1jb2x1bW4g QGdvbAo+ICsgLWZkaWFnbm9zdGljcy1jb2x1bW4tdW5pdD1AcntbfWRpc3BsYXlAcnt8fWJ5dGVA cntdfSBAZ29sCj4gKy0tZmRpYWdub3N0aWNzLWNvbHVtbi1vcmlnaW49QHZhcntvcmlnaW59fQo+ ICsrLWZkaWFnbm9zdGljcy1jb2x1bW4tb3JpZ2luPUB2YXJ7b3JpZ2lufSBAZ29sCj4gKystZmRp YWdub3N0aWNzLWVzY2FwZS1mb3JtYXQ9QHJ7W311bmljb2RlQHJ7fH1ieXRlc0Bye119fQo+ICsg Cj4gKyBAaXRlbSBXYXJuaW5nIE9wdGlvbnMKPiArIEB4cmVme1dhcm5pbmcgT3B0aW9ucywsT3B0 aW9ucyB0byBSZXF1ZXN0IG9yIFN1cHByZXNzIFdhcm5pbmdzfS4KPiArQEAgLTQ0NTEsNiArNDQ1 MiwzOCBAQCBmaXJzdCBjb2x1bW4uwqAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgMSBjbwo+ICsgYmVo YXZpb3IgYW5kIHRvIHRoZSBHTlUgc3R5bGUgZ3VpZGUuwqAgU29tZSB1dGlsaXRpZXMgbWF5IHBl cmZvcm0KPiBiZXR0ZXIgd2l0aCBhbgo+ICsgb3JpZ2luIG9mIDA7IGFueSBub24tbmVnYXRpdmUg dmFsdWUgbWF5IGJlIHNwZWNpZmllZC4KPiArIAo+ICsrQGl0ZW0gLWZkaWFnbm9zdGljcy1lc2Nh cGUtZm9ybWF0PUB2YXJ7Rk9STUFUfQo+ICsrQG9waW5kZXggZmRpYWdub3N0aWNzLWVzY2FwZS1m b3JtYXQKPiArK1doZW4gR0NDIHByaW50cyBwZXJ0aW5lbnQgc291cmNlIGxpbmVzIGZvciBhIGRp YWdub3N0aWMgaXQgbm9ybWFsbHkKPiBhdHRlbXB0cwo+ICsrdG8gcHJpbnQgdGhlIHNvdXJjZSBi eXRlcyBkaXJlY3RseS7CoCBIb3dldmVyLCBzb21lIGRpYWdub3N0aWNzCj4gcmVsYXRlIHRvIGVu Y29kaW5nCj4gKytpc3N1ZXMgaW4gdGhlIHNvdXJjZSBmaWxlLCBzdWNoIGFzIG1hbGZvcm1lZCBV VEYtOCwgb3IgaXNzdWVzIHdpdGgKPiBVbmljb2RlCj4gKytub3JtYWxpemF0aW9uLsKgIFRoZXNl IGRpYWdub3N0aWNzIGFyZSBmbGFnZ2VkIHNvIHRoYXQgR0NDIHdpbGwKPiBlc2NhcGUgYnl0ZXMK PiArK3RoYXQgYXJlIG5vdCBwcmludGFibGUgQVNDSUkgd2hlbiBwcmludGluZyB0aGVpciBwZXJ0 aW5lbnQgc291cmNlCj4gbGluZXMuCj4gKysKPiArK1RoaXMgb3B0aW9uIGNvbnRyb2xzIGhvdyBz dWNoIGJ5dGVzIHNob3VsZCBiZSBlc2NhcGVkLgo+ICsrCj4gKytUaGUgZGVmYXVsdCBAdmFye0ZP Uk1BVH0sIEBzYW1we3VuaWNvZGV9IGRpc3BsYXlzIFVuaWNvZGUKPiBjaGFyYWN0ZXJzIHRoYXQK PiArK2FyZSBub3QgcHJpbnRhYmxlIEFTQ0lJIGluIHRoZSBmb3JtIEBzYW1wezxVK1hYWFg+fSwg YW5kIGJ5dGVzIHRoYXQKPiBkbyBub3QKPiArK2NvcnJlc3BvbmQgdG8gYSBVbmljb2RlIGNoYXJh Y3RlciB2YWxpZGx5LWVuY29kZWQgaW4gVVRGLTgtZW5jb2RlZAo+IHdpbGwgYmUKPiArK2Rpc3Bs YXllZCBhcyBoZXhhZGVjaW1hbCBpbiB0aGUgZm9ybSBAc2FtcHs8WFg+fS4KPiArKwo+ICsrRm9y IGV4YW1wbGUsIGEgc291cmNlIGxpbmUgY29udGFpbmluZyB0aGUgc3RyaW5nIEBzYW1we2JlZm9y ZX0KPiBmb2xsb3dlZCBieSB0aGUKPiArK1VuaWNvZGUgY2hhcmFjdGVyIFUrMDNDMCAoYGBHUkVF SyBTTUFMTCBMRVRURVIgUEknJywgd2l0aCBVVEYtOAo+IGVuY29kaW5nCj4gKysweENGIDB4ODAp IGZvbGxvd2VkIGJ5IHRoZSBieXRlIDB4QkYgKGEgc3RyYXkgVVRGLTggdHJhaWxpbmcgYnl0ZSks Cj4gZm9sbG93ZWQgYnkKPiArK3RoZSBzdHJpbmcgQHNhbXB7YWZ0ZXJ9IHdpbGwgYmUgcHJpbnRl ZCBmb3Igc3VjaCBhIGRpYWdub3N0aWMgYXM6Cj4gKysKPiArK0BzbWFsbGV4YW1wbGUKPiArKyBi ZWZvcmU8VSswM0MwPjxCRj5hZnRlcgo+ICsrQGVuZCBzbWFsbGV4YW1wbGUKPiArKwo+ICsrU2V0 dGluZyBAdmFye0ZPUk1BVH0gdG8gQHNhbXB7Ynl0ZXN9IHdpbGwgZGlzcGxheSBhbGwgbm9uLQo+ IHByaW50YWJsZS1BU0NJSSBieXRlcwo+ICsraW4gdGhlIGZvcm0gQHNhbXB7PFhYPn0sIHRodXMg c2hvd2luZyB0aGUgdW5kZXJseWluZyBlbmNvZGluZyBvZgo+IG5vbi1BU0NJSQo+ICsrVW5pY29k ZSBjaGFyYWN0ZXJzLsKgIEZvciB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlIGZvbGxvd2luZyB3aWxs IGJlCj4gcHJpbnRlZDoKPiArKwo+ICsrQHNtYWxsZXhhbXBsZQo+ICsrIGJlZm9yZTxDRj48ODA+ PEJGPmFmdGVyCj4gKytAZW5kIHNtYWxsZXhhbXBsZQo+ICsrCj4gKyBAaXRlbSAtZmRpYWdub3N0 aWNzLWZvcm1hdD1AdmFye0ZPUk1BVH0KPiArIEBvcGluZGV4IGZkaWFnbm9zdGljcy1mb3JtYXQK PiArIFNlbGVjdCBhIGRpZmZlcmVudCBmb3JtYXQgZm9yIHByaW50aW5nIGRpYWdub3N0aWNzLgo+ ICtAQCAtNDUxOCw5ICs0NTUxLDExIEBAIG1pZ2h0IGJlIHByaW50ZWQgaW4gSlNPTiBmb3JtIChh ZnRlciBmb3IKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQH0KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXSwKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAiZXNjYXBlLXNvdXJjZSI6IGZhbHNlLAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAibWVzc2FnZSI6ICIuLi50aGlzIHN0YXRlbWVudCwgYnV0IHRoZSBs YXR0ZXIgaXMKPiBAZG90c3t9Igo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQH0KPiArwqDC oMKgwqDCoMKgwqDCoCBdCj4gKyvCoMKgwqDCoMKgwqAiZXNjYXBlLXNvdXJjZSI6IGZhbHNlLAo+ ICvCoMKgwqDCoMKgwqDCoCJjb2x1bW4tb3JpZ2luIjogMSwKPiArwqDCoMKgwqAgQH0sCj4gK8Kg wqDCoMKgIEBkb3Rze30KPiArQEAgLTQ2MDcsNiArNDY0Miw3IEBAIG9mIHRoZSBleHByZXNzaW9u LCB3aGljaCBoYXZlIGxhYmVscy7CoCBJCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJsYWJlbCI6ICJUIEB7YWthIHN0cnVjdCB0QH0iCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBAfQo+ICvCoMKgwqDCoMKgwqDCoMKgIF0sCj4gKyvCoMKgwqDCoMKgwqDCoCAiZXNjYXBl LXNvdXJjZSI6IGZhbHNlLAo+ICvCoMKgwqDCoMKgwqDCoMKgICJtZXNzYWdlIjogImludmFsaWQg b3BlcmFuZHMgdG8gYmluYXJ5ICsgQGRvdHN7fSIKPiArwqDCoMKgwqAgQH0KPiArIEBlbmQgc21h bGxleGFtcGxlCj4gK0BAIC00NjYwLDYgKzQ2OTYsNyBAQCBtaWdodCBiZSBwcmludGVkIGluIEpT T04gZm9ybSBhczoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQH0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEB9Cj4gK8KgwqDCoMKgwqDCoMKgwqAgXSwKPiArK8KgwqDC oMKgwqDCoMKgICJlc2NhcGUtc291cmNlIjogZmFsc2UsCj4gK8KgwqDCoMKgwqDCoMKgwqAgIm1l c3NhZ2UiOiAiXHUyMDE4c3RydWN0IHNcdTIwMTkgaGFzIG5vIG1lbWJlciBuYW1lZAo+IEBkb3Rz e30iCj4gK8KgwqDCoMKgIEB9Cj4gKyBAZW5kIHNtYWxsZXhhbXBsZQo+ICtAQCAtNDcxNyw2ICs0 NzU0LDEwIEBAIEZvciBleGFtcGxlLCB0aGUgaW50cmFwcm9jZWR1cmFsIGV4YW1wbGUKPiArwqDC oMKgwqAgXQo+ICsgQGVuZCBzbWFsbGV4YW1wbGUKPiArIAo+ICsrRGlhZ25vc3RpY3MgaGF2ZSBh IGJvb2xlYW4gYXR0cmlidXRlIEBjb2Rle2VzY2FwZS1zb3VyY2V9LCBoaW50aW5nCj4gd2hldGhl cgo+ICsrbm9uLUFTQ0lJIGJ5dGVzIHNob3VsZCBiZSBlc2NhcGVkIHdoZW4gcHJpbnRpbmcgdGhl IHBlcnRpbmVudCBsaW5lcwo+IG9mCj4gKytzb3VyY2UgY29kZSAoQGNvZGV7dHJ1ZX0gZm9yIGRp YWdub3N0aWNzIGludm9sdmluZyBzb3VyY2UgZW5jb2RpbmcKPiBpc3N1ZXMpLgo+ICsrCj4gKyBA ZW5kIHRhYmxlCj4gKyAKPiArIEBub2RlIFdhcm5pbmcgT3B0aW9ucwo+ICtkaWZmIC0tZ2l0IGEv Z2NjL2lucHV0LmMgYi9nY2MvaW5wdXQuYwo+ICstLS0gYS9nY2MvaW5wdXQuY8KgwqDCoMKgwqDC oDIwMjEtMTItMjUgMDE6Mjk6MTIuOTI3MzE3MTc0IC0wODAwCj4gKysrKyBiL2djYy9pbnB1dC5j wqDCoMKgwqDCoMKgMjAyMS0xMi0yNSAwMTozMDo1MC42ODE2ODg4MjMgLTA4MDAKPiArQEAgLTkx Myw3ICs5MTMsOCBAQCBtYWtlX2xvY2F0aW9uIChsb2NhdGlvbl90IGNhcmV0LCBzb3VyY2VfCj4g K8KgwqDCoCBzb3VyY2UgbGluZSBpbiBvcmRlciB0byBjYWxjdWxhdGUgdGhlIGRpc3BsYXkgd2lk dGguwqAgSWYgdGhhdAo+IGNhbm5vdCBiZSBkb25lCj4gK8KgwqDCoCBmb3IgYW55IHJlYXNvbiwg dGhlbiByZXR1cm5zIHRoZSBieXRlIGNvbHVtbiBhcyBhIGZhbGxiYWNrLsKgICovCj4gKyBpbnQK PiArLWxvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1bW4gKGV4cGFuZGVkX2xvY2F0aW9uIGV4 cGxvYywgaW50Cj4gdGFic3RvcCkKPiArK2xvY2F0aW9uX2NvbXB1dGVfZGlzcGxheV9jb2x1bW4g KGV4cGFuZGVkX2xvY2F0aW9uIGV4cGxvYywKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjcHBfY2hhcl9jb2x1bW5f cG9saWN5Cj4gJnBvbGljeSkKPiArIHsKPiArwqDCoCBpZiAoIShleHBsb2MuZmlsZSAmJiAqZXhw bG9jLmZpbGUgJiYgZXhwbG9jLmxpbmUgJiYKPiBleHBsb2MuY29sdW1uKSkKPiArwqDCoMKgwqAg cmV0dXJuIGV4cGxvYy5jb2x1bW47Cj4gK0BAIC05MjEsNyArOTIyLDcgQEAgbG9jYXRpb25fY29t cHV0ZV9kaXNwbGF5X2NvbHVtbiAoZXhwYW5kZQo+ICvCoMKgIC8qIElmIGxpbmUgaXMgTlVMTCwg dGhpcyBmdW5jdGlvbiByZXR1cm5zIGV4cGxvYy5jb2x1bW4gd2hpY2ggaXMKPiB0aGUKPiArwqDC oMKgwqDCoCBkZXNpcmVkIGZhbGxiYWNrLsKgICovCj4gK8KgwqAgcmV0dXJuIGNwcF9ieXRlX2Nv bHVtbl90b19kaXNwbGF5X2NvbHVtbiAobGluZS5nZXRfYnVmZmVyICgpLAo+IGxpbmUubGVuZ3Ro ICgpLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBleHBsb2MuY29sdW1uLCB0YWJzdG9w KTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhwbG9jLmNvbHVtbiwgcG9saWN5KTsK PiArIH0KPiArIAo+ICsgLyogRHVtcCBzdGF0aXN0aWNzIHRvIHN0ZGVyciBhYm91dCB0aGUgbWVt b3J5IHVzYWdlIG9mIHRoZQo+IGxpbmVfdGFibGUKPiArQEAgLTM2MDksNDMgKzM2MTAsNTAgQEAg dGVzdF9saW5lX29mZnNldF9vdmVyZmxvdyAoKQo+ICsgdm9pZCB0ZXN0X2NwcF91dGY4ICgpCj4g KyB7Cj4gK8KgwqAgY29uc3QgaW50IGRlZl90YWJzdG9wID0gODsKPiArK8KgIGNwcF9jaGFyX2Nv bHVtbl9wb2xpY3kgcG9saWN5IChkZWZfdGFic3RvcCwgY3BwX3djd2lkdGgpOwo+ICsrCj4gK8Kg wqAgLyogVmVyaWZ5IHRoYXQgd2N3aWR0aCBvZiBpbnZhbGlkIFVURi04IG9yIGNvbnRyb2wgYnl0 ZXMgaXMgMS7CoAo+ICovCj4gK8KgwqAgewo+ICstwqDCoMKgIGludCB3X2JhZCA9IGNwcF9kaXNw bGF5X3dpZHRoICgiXHhmMCFceDlmIVx4OTghXHg4MiEiLCA4LAo+IGRlZl90YWJzdG9wKTsKPiAr K8KgwqDCoCBpbnQgd19iYWQgPSBjcHBfZGlzcGxheV93aWR0aCAoIlx4ZjAhXHg5ZiFceDk4IVx4 ODIhIiwgOCwKPiBwb2xpY3kpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDgsIHdfYmFkKTsKPiAr LcKgwqDCoCBpbnQgd19jdHJsID0gY3BwX2Rpc3BsYXlfd2lkdGggKCJcclxuXHZcMFwxIiwgNSwg ZGVmX3RhYnN0b3ApOwo+ICsrwqDCoMKgIGludCB3X2N0cmwgPSBjcHBfZGlzcGxheV93aWR0aCAo IlxyXG5cdlwwXDEiLCA1LCBwb2xpY3kpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDUsIHdfY3Ry bCk7Cj4gK8KgwqAgfQo+ICsgCj4gK8KgwqAgLyogVmVyaWZ5IHRoYXQgd2N3aWR0aCBvZiB2YWxp ZCBVVEYtOCBpcyBhcyBleHBlY3RlZC7CoCAqLwo+ICvCoMKgIHsKPiArLcKgwqDCoCBjb25zdCBp bnQgd19waSA9IGNwcF9kaXNwbGF5X3dpZHRoICgiXHhjZlx4ODAiLCAyLAo+IGRlZl90YWJzdG9w KTsKPiArK8KgwqDCoCBjb25zdCBpbnQgd19waSA9IGNwcF9kaXNwbGF5X3dpZHRoICgiXHhjZlx4 ODAiLCAyLCBwb2xpY3kpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDEsIHdfcGkpOwo+ICstwqDC oMKgIGNvbnN0IGludCB3X2Vtb2ppID0gY3BwX2Rpc3BsYXlfd2lkdGggKCJceGYwXHg5Zlx4OThc eDgyIiwgNCwKPiBkZWZfdGFic3RvcCk7Cj4gKyvCoMKgwqAgY29uc3QgaW50IHdfZW1vamkgPSBj cHBfZGlzcGxheV93aWR0aCAoIlx4ZjBceDlmXHg5OFx4ODIiLCA0LAo+IHBvbGljeSk7Cj4gK8Kg wqDCoMKgIEFTU0VSVF9FUSAoMiwgd19lbW9qaSk7Cj4gK8KgwqDCoMKgIGNvbnN0IGludCB3X3Vt bGF1dF9wcmVjb21wb3NlZCA9IGNwcF9kaXNwbGF5X3dpZHRoICgiXHhjM1x4YmYiLAo+IDIsCj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWZf dGFic3RvcCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBwb2xpY3kpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEgKDEsIHdfdW1sYXV0X3ByZWNv bXBvc2VkKTsKPiArwqDCoMKgwqAgY29uc3QgaW50IHdfdW1sYXV0X2NvbWJpbmluZyA9IGNwcF9k aXNwbGF5X3dpZHRoICgieVx4Y2NceDg4IiwKPiAzLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlZl90YWJzdG9wKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb2xpY3kpOwo+ICvCoMKgwqDCoCBBU1NF UlRfRVEgKDEsIHdfdW1sYXV0X2NvbWJpbmluZyk7Cj4gKy3CoMKgwqAgY29uc3QgaW50IHdfaGFu ID0gY3BwX2Rpc3BsYXlfd2lkdGggKCJceGU0XHhiOFx4YmEiLCAzLAo+IGRlZl90YWJzdG9wKTsK PiArK8KgwqDCoCBjb25zdCBpbnQgd19oYW4gPSBjcHBfZGlzcGxheV93aWR0aCAoIlx4ZTRceGI4 XHhiYSIsIDMsCj4gcG9saWN5KTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRICgyLCB3X2hhbik7Cj4g Ky3CoMKgwqAgY29uc3QgaW50IHdfYXNjaWkgPSBjcHBfZGlzcGxheV93aWR0aCAoIkdDQyIsIDMs IGRlZl90YWJzdG9wKTsKPiArK8KgwqDCoCBjb25zdCBpbnQgd19hc2NpaSA9IGNwcF9kaXNwbGF5 X3dpZHRoICgiR0NDIiwgMywgcG9saWN5KTsKPiArwqDCoMKgwqAgQVNTRVJUX0VRICgzLCB3X2Fz Y2lpKTsKPiArwqDCoMKgwqAgY29uc3QgaW50IHdfbWl4ZWQgPSBjcHBfZGlzcGxheV93aWR0aCAo Ilx4Y2ZceDgwID0gMy4xNAo+IFx4ZjBceDlmXHg5OFx4ODIiCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgIlx4OWYhIFx4ZTRceGI4XHhiYQo+IHlceGNjXHg4OCIsCj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAyNCwgZGVmX3RhYnN0b3ApOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMjQsIHBvbGljeSk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9FUSAoMTgsIHdfbWl4ZWQpOwo+ICvC oMKgIH0KPiArIAo+ICvCoMKgIC8qIFZlcmlmeSB0aGF0IGRpc3BsYXkgd2lkdGggcHJvcGVybHkg ZXhwYW5kcyB0YWJzLsKgICovCj4gK8KgwqAgewo+ICvCoMKgwqDCoCBjb25zdCBjaGFyICp0c3Ry ID0gIlx0YWJjXHRkIjsKPiArLcKgwqDCoCBBU1NFUlRfRVEgKDYsIGNwcF9kaXNwbGF5X3dpZHRo ICh0c3RyLCA2LCAxKSk7Cj4gKy3CoMKgwqAgQVNTRVJUX0VRICgxMCwgY3BwX2Rpc3BsYXlfd2lk dGggKHRzdHIsIDYsIDMpKTsKPiArLcKgwqDCoCBBU1NFUlRfRVEgKDE3LCBjcHBfZGlzcGxheV93 aWR0aCAodHN0ciwgNiwgOCkpOwo+ICstwqDCoMKgIEFTU0VSVF9FUSAoMSwgY3BwX2Rpc3BsYXlf Y29sdW1uX3RvX2J5dGVfY29sdW1uICh0c3RyLCA2LCA3LAo+IDgpKTsKPiArK8KgwqDCoCBBU1NF UlRfRVEgKDYsIGNwcF9kaXNwbGF5X3dpZHRoICh0c3RyLCA2LAo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3Bw X2NoYXJfY29sdW1uX3BvbGljeSAoMSwKPiBjcHBfd2N3aWR0aCkpKTsKPiArK8KgwqDCoCBBU1NF UlRfRVEgKDEwLCBjcHBfZGlzcGxheV93aWR0aCAodHN0ciwgNiwKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y3BwX2NoYXJfY29sdW1uX3BvbGljeSAoMywKPiBjcHBfd2N3aWR0aCkpKTsKPiArK8KgwqDCoCBB U1NFUlRfRVEgKDE3LCBjcHBfZGlzcGxheV93aWR0aCAodHN0ciwgNiwKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY3BwX2NoYXJfY29sdW1uX3BvbGljeSAoOCwKPiBjcHBfd2N3aWR0aCkpKTsKPiArK8KgwqDC oCBBU1NFUlRfRVEgKDEsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX2Rpc3BsYXlf Y29sdW1uX3RvX2J5dGVfY29sdW1uCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh0 c3RyLCA2LCA3LCBjcHBfY2hhcl9jb2x1bW5fcG9saWN5ICg4LAo+IGNwcF93Y3dpZHRoKSkpOwo+ ICvCoMKgIH0KPiArIAo+ICvCoMKgIC8qIFZlcmlmeSB0aGF0IGNwcF9ieXRlX2NvbHVtbl90b19k aXNwbGF5X2NvbHVtbiBjYW4gZ28gcGFzdCB0aGUKPiBlbmQsCj4gK0BAIC0zNjU4LDEzICszNjY2 LDEzIEBAIHZvaWQgdGVzdF9jcHBfdXRmOCAoKQo+ICvCoMKgwqDCoMKgwqAgLyogMTExMTIyMjIz NDU2Cj4gK8KgwqDCoMKgwqDCoMKgIEJ5dGUgY29sdW1ucy7CoCAqLwo+ICsgCj4gKy3CoMKgwqAg QVNTRVJUX0VRICg1LCBjcHBfZGlzcGxheV93aWR0aCAoc3RyLCA2LCBkZWZfdGFic3RvcCkpOwo+ ICsrwqDCoMKgIEFTU0VSVF9FUSAoNSwgY3BwX2Rpc3BsYXlfd2lkdGggKHN0ciwgNiwgcG9saWN5 KSk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9FUSAoMTA1LAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNwcF9ieXRlX2NvbHVtbl90b19kaXNwbGF5X2NvbHVtbiAoc3RyLCA2LCAxMDYsCj4gZGVm X3RhYnN0b3ApKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHBfYnl0ZV9jb2x1bW5f dG9fZGlzcGxheV9jb2x1bW4gKHN0ciwgNiwgMTA2LAo+IHBvbGljeSkpOwo+ICvCoMKgwqDCoCBB U1NFUlRfRVEgKDEwMDAwLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNwcF9ieXRlX2Nv bHVtbl90b19kaXNwbGF5X2NvbHVtbiAoTlVMTCwgMCwgMTAwMDAsCj4gZGVmX3RhYnN0b3ApKTsK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxheV9j b2x1bW4gKE5VTEwsIDAsIDEwMDAwLAo+IHBvbGljeSkpOwo+ICvCoMKgwqDCoCBBU1NFUlRfRVEg KDAsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3Bs YXlfY29sdW1uIChOVUxMLCAxMDAwMCwgMCwKPiBkZWZfdGFic3RvcCkpOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNwcF9ieXRlX2NvbHVtbl90b19kaXNwbGF5X2NvbHVtbiAoTlVMTCwg MTAwMDAsIDAsCj4gcG9saWN5KSk7Cj4gK8KgwqAgfQo+ICsgCj4gK8KgwqAgLyogVmVyaWZ5IHRo YXQgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIGNhbiBnbyBwYXN0IHRoZQo+IGVu ZCwKPiArQEAgLTM2NzgsMjUgKzM2ODYsMjUgQEAgdm9pZCB0ZXN0X2NwcF91dGY4ICgpCj4gK8Kg wqDCoMKgwqDCoCAvKiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTExMTEKPiAr wqDCoMKgwqDCoMKgwqAgMTExMTIyMjIzMzMzNDQ0NDU2NjY2Nzc3Nzg4ODg5OTk5MDEyMzQ1Cj4g K8KgwqDCoMKgwqDCoMKgIEJ5dGUgY29sdW1ucy7CoCAqLwo+ICstwqDCoMKgIEFTU0VSVF9FUSAo NCwgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChzdHIsIDE1LCAyLAo+IGRlZl90 YWJzdG9wKSk7Cj4gKyvCoMKgwqAgQVNTRVJUX0VRICg0LCBjcHBfZGlzcGxheV9jb2x1bW5fdG9f Ynl0ZV9jb2x1bW4gKHN0ciwgMTUsIDIsCj4gcG9saWN5KSk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9F USAoMTUsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX2Rpc3BsYXlfY29sdW1uX3Rv X2J5dGVfY29sdW1uIChzdHIsIDE1LCAxMSwKPiBkZWZfdGFic3RvcCkpOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNwcF9kaXNwbGF5X2NvbHVtbl90b19ieXRlX2NvbHVtbiAoc3RyLCAx NSwgMTEsCj4gcG9saWN5KSk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9FUSAoMTE1LAo+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGNwcF9kaXNwbGF5X2NvbHVtbl90b19ieXRlX2NvbHVtbiAoc3Ry LCAxNSwgMTExLAo+IGRlZl90YWJzdG9wKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChzdHIsIDE1LCAxMTEsCj4gcG9saWN5 KSk7Cj4gK8KgwqDCoMKgIEFTU0VSVF9FUSAoMTAwMDAsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChOVUxMLCAwLCAxMDAwMCwK PiBkZWZfdGFic3RvcCkpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNwcF9kaXNwbGF5 X2NvbHVtbl90b19ieXRlX2NvbHVtbiAoTlVMTCwgMCwgMTAwMDAsCj4gcG9saWN5KSk7Cj4gK8Kg wqDCoMKgIEFTU0VSVF9FUSAoMCwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHBfZGlz cGxheV9jb2x1bW5fdG9fYnl0ZV9jb2x1bW4gKE5VTEwsIDEwMDAwLCAwLAo+IGRlZl90YWJzdG9w KSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5 dGVfY29sdW1uIChOVUxMLCAxMDAwMCwgMCwKPiBwb2xpY3kpKTsKPiArIAo+ICvCoMKgwqDCoCAv KiBWZXJpZnkgdGhhdCB3ZSBkbyBub3QgaW50ZXJydXB0IGEgVVRGLTggc2VxdWVuY2UuwqAgKi8K PiArLcKgwqDCoCBBU1NFUlRfRVEgKDQsIGNwcF9kaXNwbGF5X2NvbHVtbl90b19ieXRlX2NvbHVt biAoc3RyLCAxNSwgMSwKPiBkZWZfdGFic3RvcCkpOwo+ICsrwqDCoMKgIEFTU0VSVF9FUSAoNCwg Y3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChzdHIsIDE1LCAxLAo+IHBvbGljeSkp Owo+ICsgCj4gK8KgwqDCoMKgIGZvciAoaW50IGJ5dGVfY29sID0gMTsgYnl0ZV9jb2wgPD0gMTU7 ICsrYnl0ZV9jb2wpCj4gK8KgwqDCoMKgwqDCoCB7Cj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgaW50 IGRpc3BfY29sCj4gKy3CoMKgwqDCoMKgwqDCoCA9IGNwcF9ieXRlX2NvbHVtbl90b19kaXNwbGF5 X2NvbHVtbiAoc3RyLCAxNSwgYnl0ZV9jb2wsCj4gZGVmX3RhYnN0b3ApOwo+ICsrwqDCoMKgwqDC oMKgwqAgPSBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxheV9jb2x1bW4gKHN0ciwgMTUsIGJ5dGVf Y29sLAo+IHBvbGljeSk7Cj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgaW50IGJ5dGVfY29sMgo+ICst wqDCoMKgwqDCoMKgwqAgPSBjcHBfZGlzcGxheV9jb2x1bW5fdG9fYnl0ZV9jb2x1bW4gKHN0ciwg MTUsIGRpc3BfY29sLAo+IGRlZl90YWJzdG9wKTsKPiArK8KgwqDCoMKgwqDCoMKgID0gY3BwX2Rp c3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChzdHIsIDE1LCBkaXNwX2NvbCwKPiBwb2xpY3kp Owo+ICsgCj4gK8KgwqDCoMKgwqDCoMKgLyogSWYgd2UgYXNrIGZvciB0aGUgZGlzcGxheSBjb2x1 bW4gaW4gdGhlIG1pZGRsZSBvZiBhIFVURi04Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBzZXF1ZW5j ZSwgaXQgd2lsbCByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgcGFydGlhbAo+IHNlcXVlbmNlLAo+ ICtkaWZmIC0tZ2l0IGEvZ2NjL2lucHV0LmggYi9nY2MvaW5wdXQuaAo+ICstLS0gYS9nY2MvaW5w dXQuaMKgwqDCoMKgwqDCoDIwMjEtMTItMjUgMDE6Mjk6MTIuOTI3MzE3MTc0IC0wODAwCj4gKysr KyBiL2djYy9pbnB1dC5owqDCoMKgwqDCoMKgMjAyMS0xMi0yNSAwMTozMDo1MC42ODE2ODg4MjMg LTA4MDAKPiArQEAgLTM5LDggKzM5LDExIEBAIFNUQVRJQ19BU1NFUlQgKEJVSUxUSU5TX0xPQ0FU SU9OIDwgUkVTRVIKPiArIGV4dGVybiBib29sIGlzX2xvY2F0aW9uX2Zyb21fYnVpbHRpbl90b2tl biAobG9jYXRpb25fdCk7Cj4gKyBleHRlcm4gZXhwYW5kZWRfbG9jYXRpb24gZXhwYW5kX2xvY2F0 aW9uIChsb2NhdGlvbl90KTsKPiArIAo+ICstZXh0ZXJuIGludCBsb2NhdGlvbl9jb21wdXRlX2Rp c3BsYXlfY29sdW1uIChleHBhbmRlZF9sb2NhdGlvbgo+IGV4cGxvYywKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW50IHRhYnN0b3ApOwo+ICsrY2xhc3MgY3BwX2NoYXJfY29sdW1uX3Bv bGljeTsKPiArKwo+ICsrZXh0ZXJuIGludAo+ICsrbG9jYXRpb25fY29tcHV0ZV9kaXNwbGF5X2Nv bHVtbiAoZXhwYW5kZWRfbG9jYXRpb24gZXhwbG9jLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNwcF9jaGFyX2Nv bHVtbl9wb2xpY3kKPiAmcG9saWN5KTsKPiArIAo+ICsgLyogQSBjbGFzcyBjYXB0dXJpbmcgdGhl IGJvdW5kcyBvZiBhIGJ1ZmZlciwgdG8gYWxsb3cgZm9yIHJ1bi10aW1lCj4gK8KgwqDCoCBib3Vu ZHMtY2hlY2tpbmcgaW4gYSBjaGVja2VkIGJ1aWxkLsKgICovCj4gK2RpZmYgLS1naXQgYS9nY2Mv b3B0cy5jIGIvZ2NjL29wdHMuYwo+ICstLS0gYS9nY2Mvb3B0cy5jwqDCoMKgwqDCoMKgwqAyMDIx LTEyLTI1IDAxOjI5OjEyLjkyNzMxNzE3NCAtMDgwMAo+ICsrKysgYi9nY2Mvb3B0cy5jwqDCoMKg wqDCoMKgwqAyMDIxLTEyLTI1IDAxOjMwOjUwLjY4MTY4ODgyMyAtMDgwMAo+ICtAQCAtMjQ0Nyw2 ICsyNDQ3LDEwIEBAIGNvbW1vbl9oYW5kbGVfb3B0aW9uIChzdHJ1Y3QgZ2NjX29wdGlvbnMKPiAr wqDCoMKgwqDCoMKgIGRjLT5jb2x1bW5fb3JpZ2luID0gdmFsdWU7Cj4gK8KgwqDCoMKgwqDCoCBi cmVhazsKPiArIAo+ICsrwqDCoMKgIGNhc2UgT1BUX2ZkaWFnbm9zdGljc19lc2NhcGVfZm9ybWF0 XzoKPiArK8KgwqDCoMKgwqAgZGMtPmVzY2FwZV9mb3JtYXQgPSAoZW51bSBkaWFnbm9zdGljc19l c2NhcGVfZm9ybWF0KXZhbHVlOwo+ICsrwqDCoMKgwqDCoCBicmVhazsKPiArKwo+ICvCoMKgwqDC oCBjYXNlIE9QVF9mZGlhZ25vc3RpY3Nfc2hvd19jd2U6Cj4gK8KgwqDCoMKgwqDCoCBkYy0+c2hv d19jd2UgPSB2YWx1ZTsKPiArwqDCoMKgwqDCoMKgIGJyZWFrOwo+ICtkaWZmIC0tZ2l0IGEvZ2Nj L3NlbGZ0ZXN0LmMgYi9nY2Mvc2VsZnRlc3QuYwo+ICstLS0gYS9nY2Mvc2VsZnRlc3QuY8KgwqDC oDIwMjAtMDctMjIgMjM6MzU6MTcuODIwMzg5Nzk3IC0wNzAwCj4gKysrKyBiL2djYy9zZWxmdGVz dC5jwqDCoMKgMjAyMS0xMi0yNSAwMTozMDo1MC42ODE2ODg4MjMgLTA4MDAKPiArQEAgLTE5Myw2 ICsxOTMsMjEgQEAgdGVtcF9zb3VyY2VfZmlsZTo6dGVtcF9zb3VyY2VfZmlsZSAoY29ucwo+ICvC oMKgIGZjbG9zZSAob3V0KTsKPiArIH0KPiArIAo+ICsrLyogQXMgYWJvdmUsIGJ1dCB3aXRoIGEg c2l6ZSwgdG8gYWxsb3cgZm9yIE5VTCBieXRlcyBpbiBDT05URU5ULsKgCj4gKi8KPiArKwo+ICsr dGVtcF9zb3VyY2VfZmlsZTo6dGVtcF9zb3VyY2VfZmlsZSAoY29uc3QgbG9jYXRpb24gJmxvYywK PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpzdWZmaXgsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hh ciAqY29udGVudCwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplX3Qgc3opCj4gKys6IG5hbWVkX3RlbXBfZmls ZSAoc3VmZml4KQo+ICsrewo+ICsrwqAgRklMRSAqb3V0ID0gZm9wZW4gKGdldF9maWxlbmFtZSAo KSwgInciKTsKPiArK8KgIGlmICghb3V0KQo+ICsrwqDCoMKgIGZhaWxfZm9ybWF0dGVkIChsb2Ms ICJ1bmFibGUgdG8gb3BlbiB0ZW1wZmlsZTogJXMiLAo+IGdldF9maWxlbmFtZSAoKSk7Cj4gKyvC oCBmd3JpdGUgKGNvbnRlbnQsIHN6LCAxLCBvdXQpOwo+ICsrwqAgZmNsb3NlIChvdXQpOwo+ICsr fQo+ICsrCj4gKyAvKiBBdm9pZCBpbnRyb2R1Y2luZyBsb2NhbGUtc3BlY2lmaWMgZGlmZmVyZW5j ZXMgaW4gdGhlIHJlc3VsdHMKPiArwqDCoMKgIGJ5IGhhcmRjb2Rpbmcgb3Blbl9xdW90ZSBhbmQg Y2xvc2VfcXVvdGUuwqAgKi8KPiArIAo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3NlbGZ0ZXN0LmggYi9n Y2Mvc2VsZnRlc3QuaAo+ICstLS0gYS9nY2Mvc2VsZnRlc3QuaMKgwqDCoDIwMjAtMDctMjIgMjM6 MzU6MTcuODIwMzg5Nzk3IC0wNzAwCj4gKysrKyBiL2djYy9zZWxmdGVzdC5owqDCoMKgMjAyMS0x Mi0yNSAwMTozMDo1MC42ODE2ODg4MjMgLTA4MDAKPiArQEAgLTExMiw2ICsxMTIsOCBAQCBjbGFz cyB0ZW1wX3NvdXJjZV9maWxlIDogcHVibGljIG5hbWVkX3RlCj4gK8KgIHB1YmxpYzoKPiArwqDC oCB0ZW1wX3NvdXJjZV9maWxlIChjb25zdCBsb2NhdGlvbiAmbG9jLCBjb25zdCBjaGFyICpzdWZm aXgsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpj b250ZW50KTsKPiArK8KgIHRlbXBfc291cmNlX2ZpbGUgKGNvbnN0IGxvY2F0aW9uICZsb2MsIGNv bnN0IGNoYXIgKnN1ZmZpeCwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29uc3QgY2hhciAqY29udGVudCwgc2l6ZV90IHN6KTsKPiArIH07Cj4gKyAKPiArIC8qIFJBSUkt c3R5bGUgY2xhc3MgZm9yIGF2b2lkaW5nIGludHJvZHVjaW5nIGxvY2FsZS1zcGVjaWZpYwo+IGRp ZmZlcmVuY2VzCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFn bm9zdGljLWZvcm1hdC1qc29uLTEuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlh Z25vc3RpYy1mb3JtYXQtanNvbi0xLmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0xLmPCoMKgwqDCoDIwMjEtCj4gMTItMjUgMDE6Mjk6 MTIuOTI3MzE3MTc0IC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2Rp YWdub3N0aWMtZm9ybWF0LWpzb24tMS5jwqDCoMKgwqAyMDIxLQo+IDEyLTI1IDAxOjMwOjUwLjY4 MTY4ODgyMyAtMDgwMAo+ICtAQCAtOSw2ICs5LDcgQEAKPiArIAo+ICsgLyogeyBkZy1yZWdleHAg Ilwia2luZFwiOiBcImVycm9yXCIiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImNvbHVtbi1v cmlnaW5cIjogMSIgfSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwiZXNjYXBlLXNvdXJjZVwiOiBm YWxzZSIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwibWVzc2FnZVwiOiBcIiNlcnJvciBtZXNz YWdlXCIiIH0gKi8KPiArIAo+ICsgLyogeyBkZy1yZWdleHAgIlwiY2FyZXRcIjogXHsiIH0gKi8K PiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9y bWF0LWpzb24tMi5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZv cm1hdC1qc29uLTIuYwo+ICstLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9z dGljLWZvcm1hdC1qc29uLTIuY8KgwqDCoMKgMjAyMS0KPiAxMi0yNSAwMToyOToxMi45MjczMTcx NzQgLTA4MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1m b3JtYXQtanNvbi0yLmPCoMKgwqDCoDIwMjEtCj4gMTItMjUgMDE6MzA6NTAuNjgxNjg4ODIzIC0w ODAwCj4gK0BAIC05LDYgKzksNyBAQAo+ICsgCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJraW5kXCI6 IFwid2FybmluZ1wiIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1bW4tb3JpZ2luXCI6 IDEiIH0gKi8KPiArKy8qIHsgZGctcmVnZXhwICJcImVzY2FwZS1zb3VyY2VcIjogZmFsc2UiIH0g Ki8KPiArIC8qIHsgZGctcmVnZXhwICJcIm1lc3NhZ2VcIjogXCIjd2FybmluZyBtZXNzYWdlXCIi IH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcIm9wdGlvblwiOiBcIi1XY3BwXCIiIH0gKi8KPiAr IC8qIHsgZGctcmVnZXhwICJcIm9wdGlvbl91cmxcIjogXCJodHRwczpcW15cblxyXCJcXSojaW5k ZXgtV2NwcFwiIgo+IH0gKi8KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMy5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTMuYwo+ICstLS0gYS9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTMuY8KgwqDCoMKgMjAyMS0KPiAxMi0y NSAwMToyOToxMi45MjczMTcxNzQgLTA4MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0zLmPCoMKgwqDCoDIwMjEtCj4gMTItMjUgMDE6 MzA6NTAuNjgxNjg4ODIzIC0wODAwCj4gK0BAIC05LDYgKzksNyBAQAo+ICsgCj4gKyAvKiB7IGRn LXJlZ2V4cCAiXCJraW5kXCI6IFwiZXJyb3JcIiIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwi Y29sdW1uLW9yaWdpblwiOiAxIiB9ICovCj4gKysvKiB7IGRnLXJlZ2V4cCAiXCJlc2NhcGUtc291 cmNlXCI6IGZhbHNlIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJtZXNzYWdlXCI6IFwiI3dh cm5pbmcgbWVzc2FnZVwiIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJvcHRpb25cIjogXCIt V2Vycm9yPWNwcFwiIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJvcHRpb25fdXJsXCI6IFwi aHR0cHM6XFteXG5cclwiXF0qI2luZGV4LVdjcHBcIiIKPiB9ICovCj4gK2RpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTQuYwo+IGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi00LmMKPiAr LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi00 LmPCoMKgwqDCoDIwMjEtCj4gMTItMjUgMDE6Mjk6MTIuOTI3MzE3MTc0IC0wODAwCj4gKysrKyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tNC5jwqDC oMKgwqAyMDIxLQo+IDEyLTI1IDAxOjMwOjUwLjY4MTY4ODgyMyAtMDgwMAo+ICtAQCAtMTksNiAr MTksNyBAQCBpbnQgdGVzdCAodm9pZCkKPiArIAo+ICsgLyogeyBkZy1yZWdleHAgIlwia2luZFwi OiBcIm5vdGVcIiIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwibWVzc2FnZVwiOiBcIi4uLnRo aXMgc3RhdGVtZW50LCBidXQgdGhlIGxhdHRlciBpcwo+IG1pc2xlYWRpbmdseSBpbmRlbnRlZCBh cyBpZiBpdCB3ZXJlIGd1YXJkZWQgYnkgdGhlICdpZidcIiIgfSAqLwo+ICsrLyogeyBkZy1yZWdl eHAgIlwiZXNjYXBlLXNvdXJjZVwiOiBmYWxzZSIgfSAqLwo+ICsgCj4gKyAvKiB7IGRnLXJlZ2V4 cCAiXCJjYXJldFwiOiBceyIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwiZmlsZVwiOiBcIlxb XlxuXHJcIlxdKmRpYWdub3N0aWMtZm9ybWF0LWpzb24tCj4gNC5jXCIiIH0gKi8KPiArQEAgLTM5 LDYgKzQwLDcgQEAgaW50IHRlc3QgKHZvaWQpCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJraW5kXCI6 IFwid2FybmluZ1wiIiB9ICovCj4gKyAvKiB7IGRnLXJlZ2V4cCAiXCJjb2x1bW4tb3JpZ2luXCI6 IDEiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcIm1lc3NhZ2VcIjogXCJ0aGlzICdpZicgY2xh dXNlIGRvZXMgbm90Cj4gZ3VhcmQuLi5cIiIgfSAqLwo+ICsrLyogeyBkZy1yZWdleHAgIlwiZXNj YXBlLXNvdXJjZVwiOiBmYWxzZSIgfSAqLwo+ICsgLyogeyBkZy1yZWdleHAgIlwib3B0aW9uXCI6 IFwiLVdtaXNsZWFkaW5nLWluZGVudGF0aW9uXCIiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJc Im9wdGlvbl91cmxcIjogXCJodHRwczpcW15cblxyXCJcXSojaW5kZXgtCj4gV21pc2xlYWRpbmct aW5kZW50YXRpb25cIiIgfSAqLwo+ICsgCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTUuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi01LmMKPiArLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZGlhZ25vc3RpYy1mb3JtYXQtanNvbi01LmPCoMKgwqDCoDIwMjEt Cj4gMTItMjUgMDE6Mjk6MTIuOTI3MzE3MTc0IC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tNS5jwqDCoMKgwqAyMDIxLQo+IDEy LTI1IDAxOjMwOjUwLjY4MTY4ODgyMyAtMDgwMAo+ICtAQCAtMTQsNiArMTQsNyBAQCBpbnQgdGVz dCAoc3RydWN0IHMgKnB0cikKPiArIAo+ICsgLyogeyBkZy1yZWdleHAgIlwia2luZFwiOiBcImVy cm9yXCIiIH0gKi8KPiArIC8qIHsgZGctcmVnZXhwICJcImNvbHVtbi1vcmlnaW5cIjogMSIgfSAq Lwo+ICsrLyogeyBkZy1yZWdleHAgIlwiZXNjYXBlLXNvdXJjZVwiOiBmYWxzZSIgfSAqLwo+ICsg LyogeyBkZy1yZWdleHAgIlwibWVzc2FnZVwiOiBcIi4qXCIiIH0gKi8KPiArIAo+ICsgLyogVmVy aWZ5IGZpeC1pdCBoaW50cy7CoCAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvY3BwL3dhcm4tbm9ybWFsaXplZC00LWJ5dGVzLmMKPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2NwcC93YXJuLW5vcm1hbGl6ZWQtNC1ieXRlcy5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2NwcC93YXJuLW5vcm1hbGl6ZWQtNC1ieXRlcy5jwqDCoMKgwqDCoMKgwqAxOTY5LQo+IDEy LTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAo+ICsrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy9jcHAvd2Fybi1ub3JtYWxpemVkLTQtYnl0ZXMuY8KgwqDCoMKgwqDCoMKgMjAyMS0KPiAxMi0y NSAwMTozMDo1MC42ODE2ODg4MjMgLTA4MDAKPiArQEAgLTAsMCArMSwyMSBAQAo+ICsrLy8geyBk Zy1kbyBwcmVwcm9jZXNzIH0KPiArKy8vIHsgZGctb3B0aW9ucyAiLXN0ZD1nbnU5OSAtV2Vycm9y PW5vcm1hbGl6ZWQ9bmZjIC1mZGlhZ25vc3RpY3MtCj4gc2hvdy1jYXJldCAtZmRpYWdub3N0aWNz LWVzY2FwZS1mb3JtYXQ9Ynl0ZXMiIH0KPiArKy8qIHsgZGctbWVzc2FnZSAic29tZSB3YXJuaW5n cyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycyIgIiIge3RhcmdldAo+ICIqLSotKiJ9IDAgfSAqLwo+ ICsrCj4gKysvKiDDoMK9ID0gVSswRjQzIFRJQkVUQU4gTEVUVEVSIEdIQSwgd2hpY2ggaGFzIGRl Y29tcG9zaXRpb24gIjBGNDIKPiAwRkI3IiBpLmUuCj4gKyvCoMKgIFUrMEY0MiBUSUJFVEFOIExF VFRFUiBHQTogw6DCvQo+ICsrwqDCoCBVKzBGQjcgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEhB OiDDoMK+wrcKPiArKwo+ICsrwqDCoCBUaGUgVVRGLTggZW5jb2Rpbmcgb2YgVSswRjQzIFRJQkVU QU4gTEVUVEVSIEdIQSBpczogRTAgQkQgODMuwqAKPiAqLwo+ICsrCj4gKytmb28gYmVmb3JlX1x1 MEY0M19hZnRlciBiYXIgLy8geyBkZy1lcnJvcgo+ICJgYmVmb3JlXy5VMDAwMDBmNDNfYWZ0ZXIn IGlzIG5vdCBpbiBORkMgLi1XZXJyb3I9bm9ybWFsaXplZD0uIiB9Cj4gKysvKiB7IGRnLWJlZ2lu LW11bHRpbGluZS1vdXRwdXQgIiIgfQo+ICsrIGZvbyBiZWZvcmVfXHUwRjQzX2FmdGVyIGJhcgo+ ICsrwqDCoMKgwqAgXn5+fn5+fn5+fn5+fn5+fn5+fgo+ICsrwqDCoCB7IGRnLWVuZC1tdWx0aWxp bmUtb3V0cHV0ICIiIH0gKi8KPiArKwo+ICsrZm9vIGJlZm9yZV/DoMK9X2FmdGVyIGJhciAvLyB7 IGRnLWVycm9yICJgYmVmb3JlXy5VMDAwMDBmNDNfYWZ0ZXInIGlzCj4gbm90IGluIE5GQyAuLVdl cnJvcj1ub3JtYWxpemVkPS4iIH0KPiArKy8qIHsgZGctYmVnaW4tbXVsdGlsaW5lLW91dHB1dCAi IiB9Cj4gKysgZm9vIGJlZm9yZV88ZTA+PGJkPjw4Mz5fYWZ0ZXIgYmFyCj4gKyvCoMKgwqDCoCBe fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Cj4gKyvCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRw dXQgIiIgfSAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvY3BwL3dhcm4t bm9ybWFsaXplZC00LXVuaWNvZGUuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvY3BwL3dhcm4t bm9ybWFsaXplZC00LXVuaWNvZGUuYwo+ICstLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9jcHAv d2Fybi1ub3JtYWxpemVkLTQtdW5pY29kZS5jwqDCoMKgwqDCoDE5NjktCj4gMTItMzEgMTY6MDA6 MDAuMDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2NwcC93YXJu LW5vcm1hbGl6ZWQtNC11bmljb2RlLmPCoMKgwqDCoMKgMjAyMS0KPiAxMi0yNSAwMTozMDo1MC42 ODE2ODg4MjMgLTA4MDAKPiArQEAgLTAsMCArMSwxOSBAQAo+ICsrLy8geyBkZy1kbyBwcmVwcm9j ZXNzIH0KPiArKy8vIHsgZGctb3B0aW9ucyAiLXN0ZD1nbnU5OSAtV2Vycm9yPW5vcm1hbGl6ZWQ9 bmZjIC1mZGlhZ25vc3RpY3MtCj4gc2hvdy1jYXJldCAtZmRpYWdub3N0aWNzLWVzY2FwZS1mb3Jt YXQ9dW5pY29kZSIgfQo+ICsrLyogeyBkZy1tZXNzYWdlICJzb21lIHdhcm5pbmdzIGJlaW5nIHRy ZWF0ZWQgYXMgZXJyb3JzIiAiIiB7dGFyZ2V0Cj4gIiotKi0qIn0gMCB9ICovCj4gKysKPiArKy8q IMOgwr0gPSBVKzBGNDMgVElCRVRBTiBMRVRURVIgR0hBLCB3aGljaCBoYXMgZGVjb21wb3NpdGlv biAiMEY0Mgo+IDBGQjciIGkuZS4KPiArK8KgwqAgVSswRjQyIFRJQkVUQU4gTEVUVEVSIEdBOiDD oMK9Cj4gKyvCoMKgIFUrMEZCNyBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSEE6IMOgwr7Ct8Kg ICovCj4gKysKPiArK2ZvbyBiZWZvcmVfXHUwRjQzX2FmdGVyIGJhcsKgIC8vIHsgZGctZXJyb3IK PiAiYGJlZm9yZV8uVTAwMDAwZjQzX2FmdGVyJyBpcyBub3QgaW4gTkZDIC4tV2Vycm9yPW5vcm1h bGl6ZWQ9LiIgfQo+ICsrLyogeyBkZy1iZWdpbi1tdWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArKyBm b28gYmVmb3JlX1x1MEY0M19hZnRlciBiYXIKPiArK8KgwqDCoMKgIF5+fn5+fn5+fn5+fn5+fn5+ fn4KPiArK8KgwqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9ICovCj4gKysKPiArK2Zv byBiZWZvcmVfw6DCvV9hZnRlciBiYXIgLy8geyBkZy1lcnJvciAiYGJlZm9yZV8uVTAwMDAwZjQz X2FmdGVyJyBpcwo+IG5vdCBpbiBORkMgLi1XZXJyb3I9bm9ybWFsaXplZD0uIiB9Cj4gKysvKiB7 IGRnLWJlZ2luLW11bHRpbGluZS1vdXRwdXQgIiIgfQo+ICsrIGZvbyBiZWZvcmVfPFUrMEY0Mz5f YWZ0ZXIgYmFyCj4gKyvCoMKgwqDCoCBefn5+fn5+fn5+fn5+fn5+fn5+fn4KPiArK8KgwqAgeyBk Zy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9ICovCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMS5GOTAKPiBiL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZGlhZ25vc3RpYy1mb3JtYXQtanNvbi0xLkY5MAo+ICstLS0gYS9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMS5GOTDCoMKg wqAyMDIxLQo+IDEyLTI1IDAxOjI5OjEyLjkzMTMxNzEwNyAtMDgwMAo+ICsrKysgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMS5GOTDCoMKgwqAyMDIx LQo+IDEyLTI1IDAxOjMwOjUwLjY4MTY4ODgyMyAtMDgwMAo+ICtAQCAtOSw2ICs5LDcgQEAKPiAr IAo+ICsgISB7IGRnLXJlZ2V4cCAiXCJraW5kXCI6IFwiZXJyb3JcIiIgfQo+ICsgISB7IGRnLXJl Z2V4cCAiXCJjb2x1bW4tb3JpZ2luXCI6IDEiIH0KPiArKyEgeyBkZy1yZWdleHAgIlwiZXNjYXBl LXNvdXJjZVwiOiBmYWxzZSIgfQo+ICsgISB7IGRnLXJlZ2V4cCAiXCJtZXNzYWdlXCI6IFwiI2Vy cm9yIG1lc3NhZ2VcIiIgfQo+ICsgCj4gKyAhIHsgZGctcmVnZXhwICJcImNhcmV0XCI6IFx7IiB9 Cj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9y bWF0LWpzb24tMi5GOTAKPiBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZGlhZ25vc3RpYy1m b3JtYXQtanNvbi0yLkY5MAo+ICstLS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2RpYWdu b3N0aWMtZm9ybWF0LWpzb24tMi5GOTDCoMKgwqAyMDIxLQo+IDEyLTI1IDAxOjI5OjEyLjkzMTMx NzEwNyAtMDgwMAo+ICsrKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2RpYWdub3N0aWMt Zm9ybWF0LWpzb24tMi5GOTDCoMKgwqAyMDIxLQo+IDEyLTI1IDAxOjMwOjUwLjY4MTY4ODgyMyAt MDgwMAo+ICtAQCAtOSw2ICs5LDcgQEAKPiArIAo+ICsgISB7IGRnLXJlZ2V4cCAiXCJraW5kXCI6 IFwid2FybmluZ1wiIiB9Cj4gKyAhIHsgZGctcmVnZXhwICJcImNvbHVtbi1vcmlnaW5cIjogMSIg fQo+ICsrISB7IGRnLXJlZ2V4cCAiXCJlc2NhcGUtc291cmNlXCI6IGZhbHNlIiB9Cj4gKyAhIHsg ZGctcmVnZXhwICJcIm1lc3NhZ2VcIjogXCIjd2FybmluZyBtZXNzYWdlXCIiIH0KPiArICEgeyBk Zy1yZWdleHAgIlwib3B0aW9uXCI6IFwiLVdjcHBcIiIgfQo+ICsgISB7IGRnLXJlZ2V4cCAiXCJv cHRpb25fdXJsXCI6IFwiXFteXG5cclwiXF0qI2luZGV4LVdjcHBcIiIgfQo+ICtkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTMuRjkw Cj4gYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2RpYWdub3N0aWMtZm9ybWF0LWpzb24tMy5G OTAKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1q c29uLTMuRjkwwqDCoMKgMjAyMS0KPiAxMi0yNSAwMToyOToxMi45MzEzMTcxMDcgLTA4MDAKPiAr KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kaWFnbm9zdGljLWZvcm1hdC1qc29uLTMu RjkwwqDCoMKgMjAyMS0KPiAxMi0yNSAwMTozMDo1MC42ODE2ODg4MjMgLTA4MDAKPiArQEAgLTks NiArOSw3IEBACj4gKyAKPiArICEgeyBkZy1yZWdleHAgIlwia2luZFwiOiBcImVycm9yXCIiIH0K PiArICEgeyBkZy1yZWdleHAgIlwiY29sdW1uLW9yaWdpblwiOiAxIiB9Cj4gKyshIHsgZGctcmVn ZXhwICJcImVzY2FwZS1zb3VyY2VcIjogZmFsc2UiIH0KPiArICEgeyBkZy1yZWdleHAgIlwibWVz c2FnZVwiOiBcIiN3YXJuaW5nIG1lc3NhZ2VcIiIgfQo+ICsgISB7IGRnLXJlZ2V4cCAiXCJvcHRp b25cIjogXCItV2Vycm9yPWNwcFwiIiB9Cj4gKyAhIHsgZGctcmVnZXhwICJcIm9wdGlvbl91cmxc IjogXCJcW15cblxyXCJcXSojaW5kZXgtV2NwcFwiIiB9Cj4gK2RpZmYgLS1naXQgYS9saWJjcHAv Y2hhcnNldC5jIGIvbGliY3BwL2NoYXJzZXQuYwo+ICstLS0gYS9saWJjcHAvY2hhcnNldC5jwqAy MDIxLTEyLTI1IDAxOjI5OjEyLjkzMTMxNzEwNyAtMDgwMAo+ICsrKysgYi9saWJjcHAvY2hhcnNl dC5jwqAyMDIxLTEyLTI1IDAxOjMwOjUwLjY4MTY4ODgyMyAtMDgwMAo+ICtAQCAtMTU0OSwxMiAr MTU0OSwxNCBAQCBjb252ZXJ0X2VzY2FwZSAoY3BwX3JlYWRlciAqcGZpbGUsIGNvbnN0Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInVua25vd24gZXNjYXBlIHNlcXVlbmNl OiAnXFwlYyciLCAoaW50KSBjKTsKPiArwqDCoMKgwqDCoMKgIGVsc2UKPiArwqDCoMKgwqDCoMKg wqB7Cj4gKyvCoMKgwqDCoMKgwqDCoCBlbmNvZGluZ19yaWNoX2xvY2F0aW9uIHJpY2hfbG9jIChw ZmlsZSk7Cj4gKysKPiArwqDCoMKgwqDCoMKgwqDCoCAvKiBkaWFnbm9zdGljLmMgZG9lcyBub3Qg c3VwcG9ydCAiJTAzbyIuwqAgV2hlbiBpdCBkb2VzLAo+IHRoaXMKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb2RlIGNhbiB1c2UgJTAzbyBkaXJlY3RseSBpbiB0aGUgZGlhZ25vc3RpYyBhZ2Fp bi7CoCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgIGNoYXIgYnVmWzMyXTsKPiArwqDCoMKgwqDCoMKg wqDCoCBzcHJpbnRmKGJ1ZiwgIiUwM28iLCAoaW50KSBjKTsKPiArLcKgwqDCoMKgwqDCoMKgIGNw cF9lcnJvciAocGZpbGUsIENQUF9ETF9QRURXQVJOLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICJ1bmtub3duIGVzY2FwZSBzZXF1ZW5jZTogJ1xcJXMnIiwgYnVmKTsK PiArK8KgwqDCoMKgwqDCoMKgIGNwcF9lcnJvcl9hdCAocGZpbGUsIENQUF9ETF9QRURXQVJOLCAm cmljaF9sb2MsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCJ1bmtub3duIGVzY2FwZSBzZXF1ZW5jZTogJ1xcJXMnIiwgYnVmKTsKPiArwqDCoMKgwqDCoMKg wqB9Cj4gK8KgwqDCoMKgIH0KPiArIAo+ICtAQCAtMjI3NywxNCArMjI3OSwxNiBAQCBjcHBfc3Ry aW5nX2xvY2F0aW9uX3JlYWRlcjo6Z2V0X25leHQgKCkKPiArIH0KPiArIAo+ICsgY3BwX2Rpc3Bs YXlfd2lkdGhfY29tcHV0YXRpb246Ogo+ICstY3BwX2Rpc3BsYXlfd2lkdGhfY29tcHV0YXRpb24g KGNvbnN0IGNoYXIgKmRhdGEsIGludCBkYXRhX2xlbmd0aCwKPiBpbnQgdGFic3RvcCkgOgo+ICsr Y3BwX2Rpc3BsYXlfd2lkdGhfY29tcHV0YXRpb24gKGNvbnN0IGNoYXIgKmRhdGEsIGludCBkYXRh X2xlbmd0aCwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvbnN0IGNwcF9jaGFyX2NvbHVtbl9wb2xpY3kgJnBvbGljeSkKPiA6Cj4g K8KgwqAgbV9iZWdpbiAoZGF0YSksCj4gK8KgwqAgbV9uZXh0IChtX2JlZ2luKSwKPiArwqDCoCBt X2J5dGVzX2xlZnQgKGRhdGFfbGVuZ3RoKSwKPiArLcKgIG1fdGFic3RvcCAodGFic3RvcCksCj4g KyvCoCBtX3BvbGljeSAocG9saWN5KSwKPiArwqDCoCBtX2Rpc3BsYXlfY29scyAoMCkKPiArIHsK PiArLcKgIGdjY19hc3NlcnQgKG1fdGFic3RvcCA+IDApOwo+ICsrwqAgZ2NjX2Fzc2VydCAocG9s aWN5Lm1fdGFic3RvcCA+IDApOwo+ICsrwqAgZ2NjX2Fzc2VydCAocG9saWN5Lm1fd2lkdGhfY2Ip Owo+ICsgfQo+ICsgCj4gKyAKPiArQEAgLTIyOTYsMTkgKzIzMDAsMjggQEAgY3BwX2Rpc3BsYXlf d2lkdGhfY29tcHV0YXRpb24gKGNvbnN0IGNoYQo+ICvCoMKgwqAgcG9pbnQgdG8gYSB2YWxpZCBV VEYtOC1lbmNvZGVkIHNlcXVlbmNlLCB0aGVuIGl0IHdpbGwgYmUgdHJlYXRlZAo+IGFzIGEgc2lu Z2xlCj4gK8KgwqDCoCBieXRlIHdpdGggZGlzcGxheSB3aWR0aCAxLsKgIG1fY3VyX2Rpc3BsYXlf Y29sIGlzIHRoZSBjdXJyZW50Cj4gZGlzcGxheSBjb2x1bW4sCj4gK8KgwqDCoCByZWxhdGl2ZSB0 byB3aGljaCB0YWIgc3RvcHMgc2hvdWxkIGJlIGV4cGFuZGVkLsKgIFJldHVybnMgdGhlCj4gZGlz cGxheSB3aWR0aCBvZgo+ICstwqDCoCB0aGUgY29kZXBvaW50IGp1c3QgcHJvY2Vzc2VkLsKgICov Cj4gKyvCoMKgIHRoZSBjb2RlcG9pbnQganVzdCBwcm9jZXNzZWQuCj4gKyvCoMKgIElmIE9VVCBp cyBub24tTlVMTCwgaXQgaXMgcG9wdWxhdGVkLsKgICovCj4gKyAKPiArIGludAo+ICstY3BwX2Rp c3BsYXlfd2lkdGhfY29tcHV0YXRpb246OnByb2Nlc3NfbmV4dF9jb2RlcG9pbnQgKCkKPiArK2Nw cF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uOjpwcm9jZXNzX25leHRfY29kZXBvaW50Cj4gKGNw cF9kZWNvZGVkX2NoYXIgKm91dCkKPiArIHsKPiArwqDCoCBjcHBjaGFyX3QgYzsKPiArwqDCoCBp bnQgbmV4dF93aWR0aDsKPiArIAo+ICsrwqAgaWYgKG91dCkKPiArK8KgwqDCoCBvdXQtPm1fc3Rh cnRfYnl0ZSA9IG1fbmV4dDsKPiArKwo+ICvCoMKgIGlmICgqbV9uZXh0ID09ICdcdCcpCj4gK8Kg wqDCoMKgIHsKPiArwqDCoMKgwqDCoMKgICsrbV9uZXh0Owo+ICvCoMKgwqDCoMKgwqAgLS1tX2J5 dGVzX2xlZnQ7Cj4gKy3CoMKgwqDCoMKgIG5leHRfd2lkdGggPSBtX3RhYnN0b3AgLSAobV9kaXNw bGF5X2NvbHMgJSBtX3RhYnN0b3ApOwo+ICsrwqDCoMKgwqDCoCBuZXh0X3dpZHRoID0gbV9wb2xp Y3kubV90YWJzdG9wIC0gKG1fZGlzcGxheV9jb2xzICUKPiBtX3BvbGljeS5tX3RhYnN0b3ApOwo+ ICsrwqDCoMKgwqDCoCBpZiAob3V0KQo+ICsrwqDCoMKgwqDCoMKgewo+ICsrwqDCoMKgwqDCoMKg wqAgb3V0LT5tX2NoID0gJ1x0JzsKPiArK8KgwqDCoMKgwqDCoMKgIG91dC0+bV92YWxpZF9jaCA9 IHRydWU7Cj4gKyvCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgIH0KPiArwqDCoCBlbHNlIGlmIChv bmVfdXRmOF90b19jcHBjaGFyICgoY29uc3QgdWNoYXIgKiopICZtX25leHQsCj4gJm1fYnl0ZXNf bGVmdCwgJmMpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoCAhPSAwKQo+ICtAQCAtMjMxOCwxNCArMjMz MSwyNCBAQCBjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbjo6cHJvY2Vzc19uCj4gK8KgwqDC oMKgwqDCoMKgIG9mIG9uZS7CoCAqLwo+ICvCoMKgwqDCoMKgwqAgKyttX25leHQ7Cj4gK8KgwqDC oMKgwqDCoCAtLW1fYnl0ZXNfbGVmdDsKPiArLcKgwqDCoMKgwqAgbmV4dF93aWR0aCA9IDE7Cj4g KyvCoMKgwqDCoMKgIG5leHRfd2lkdGggPSBtX3BvbGljeS5tX3VuZGVjb2RlZF9ieXRlX3dpZHRo Owo+ICsrwqDCoMKgwqDCoCBpZiAob3V0KQo+ICsrwqDCoMKgwqDCoMKgb3V0LT5tX3ZhbGlkX2No ID0gZmFsc2U7Cj4gK8KgwqDCoMKgIH0KPiArwqDCoCBlbHNlCj4gK8KgwqDCoMKgIHsKPiArwqDC oMKgwqDCoMKgIC8qwqAgb25lX3V0ZjhfdG9fY3BwY2hhcigpIGhhcyB1cGRhdGVkIG1fbmV4dCBh bmQgbV9ieXRlc19sZWZ0Cj4gZm9yIHVzLsKgICovCj4gKy3CoMKgwqDCoMKgIG5leHRfd2lkdGgg PSBjcHBfd2N3aWR0aCAoYyk7Cj4gKyvCoMKgwqDCoMKgIG5leHRfd2lkdGggPSBtX3BvbGljeS5t X3dpZHRoX2NiIChjKTsKPiArK8KgwqDCoMKgwqAgaWYgKG91dCkKPiArK8KgwqDCoMKgwqDCoHsK PiArK8KgwqDCoMKgwqDCoMKgIG91dC0+bV9jaCA9IGM7Cj4gKyvCoMKgwqDCoMKgwqDCoCBvdXQt Pm1fdmFsaWRfY2ggPSB0cnVlOwo+ICsrwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoCB9Cj4gKyAK PiArK8KgIGlmIChvdXQpCj4gKyvCoMKgwqAgb3V0LT5tX25leHRfYnl0ZSA9IG1fbmV4dDsKPiAr Kwo+ICvCoMKgIG1fZGlzcGxheV9jb2xzICs9IG5leHRfd2lkdGg7Cj4gK8KgwqAgcmV0dXJuIG5l eHRfd2lkdGg7Cj4gKyB9Cj4gK0BAIC0yMzQxLDcgKzIzNjQsNyBAQCBjcHBfZGlzcGxheV93aWR0 aF9jb21wdXRhdGlvbjo6YWR2YW5jZV9kCj4gK8KgwqAgY29uc3QgaW50IHN0YXJ0ID0gbV9kaXNw bGF5X2NvbHM7Cj4gK8KgwqAgY29uc3QgaW50IHRhcmdldCA9IHN0YXJ0ICsgbjsKPiArwqDCoCB3 aGlsZSAobV9kaXNwbGF5X2NvbHMgPCB0YXJnZXQgJiYgIWRvbmUgKCkpCj4gKy3CoMKgwqAgcHJv Y2Vzc19uZXh0X2NvZGVwb2ludCAoKTsKPiArK8KgwqDCoCBwcm9jZXNzX25leHRfY29kZXBvaW50 IChOVUxMKTsKPiArwqDCoCByZXR1cm4gbV9kaXNwbGF5X2NvbHMgLSBzdGFydDsKPiArIH0KPiAr IAo+ICtAQCAtMjM0OSwyOSArMjM3MiwzMyBAQCBjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlv bjo6YWR2YW5jZV9kCj4gK8KgwqDCoMKgIGhvdyBtYW55IGRpc3BsYXkgY29sdW1ucyBhcmUgb2Nj dXBpZWQgYnkgdGhlIGZpcnN0IENPTFVNTgo+IGJ5dGVzLsKgIENPTFVNTgo+ICvCoMKgwqDCoCBt YXkgZXhjZWVkIERBVEFfTEVOR1RILCBpbiB3aGljaCBjYXNlIHRoZSBwaGFudG9tIGJ5dGVzIGF0 IHRoZQo+IGVuZCBhcmUKPiArwqDCoMKgwqAgdHJlYXRlZCBhcyBpZiB0aGV5IGhhdmUgZGlzcGxh eSB3aWR0aCAxLsKgIFRhYnMgYXJlIGV4cGFuZGVkIHRvCj4gdGhlIG5leHQgdGFiCj4gKy3CoMKg wqAgc3RvcCwgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIERBVEEuwqAgKi8KPiArK8KgwqDCoCBz dG9wLCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgREFUQSwgYW5kIG5vbi1wcmludGFibGUtQVND SUkKPiBjaGFyYWN0ZXJzCj4gKyvCoMKgwqAgd2lsbCBiZSBlc2NhcGVkIGFzIHBlciBQT0xJQ1ku wqAgKi8KPiArIAo+ICsgaW50Cj4gKyBjcHBfYnl0ZV9jb2x1bW5fdG9fZGlzcGxheV9jb2x1bW4g KGNvbnN0IGNoYXIgKmRhdGEsIGludAo+IGRhdGFfbGVuZ3RoLAo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgY29s dW1uLCBpbnQgdGFic3RvcCkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGNvbHVtbiwKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29u c3QgY3BwX2NoYXJfY29sdW1uX3BvbGljeQo+ICZwb2xpY3kpCj4gKyB7Cj4gK8KgwqAgY29uc3Qg aW50IG9mZnNldCA9IE1BWCAoMCwgY29sdW1uIC0gZGF0YV9sZW5ndGgpOwo+ICstwqAgY3BwX2Rp c3BsYXlfd2lkdGhfY29tcHV0YXRpb24gZHcgKGRhdGEsIGNvbHVtbiAtIG9mZnNldCwKPiB0YWJz dG9wKTsKPiArK8KgIGNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uIGR3IChkYXRhLCBjb2x1 bW4gLSBvZmZzZXQsIHBvbGljeSk7Cj4gK8KgwqAgd2hpbGUgKCFkdy5kb25lICgpKQo+ICstwqDC oMKgIGR3LnByb2Nlc3NfbmV4dF9jb2RlcG9pbnQgKCk7Cj4gKyvCoMKgwqAgZHcucHJvY2Vzc19u ZXh0X2NvZGVwb2ludCAoTlVMTCk7Cj4gK8KgwqAgcmV0dXJuIGR3LmRpc3BsYXlfY29sc19wcm9j ZXNzZWQgKCkgKyBvZmZzZXQ7Cj4gKyB9Cj4gKyAKPiArIC8qwqAgRm9yIHRoZSBzdHJpbmcgb2Yg bGVuZ3RoIERBVEFfTEVOR1RIIGJ5dGVzIHRoYXQgYmVnaW5zIGF0IERBVEEsCj4gY29tcHV0ZQo+ ICvCoMKgwqDCoCB0aGUgbGVhc3QgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2lsbCByZXN1bHQgaW4g YXQgbGVhc3QKPiBESVNQTEFZX0NPTCBkaXNwbGF5Cj4gK8KgwqDCoMKgIGNvbHVtbnMuwqAgVGhl IHJldHVybiB2YWx1ZSBtYXkgZXhjZWVkIERBVEFfTEVOR1RIIGlmIHRoZSBlbnRpcmUKPiBzdHJp bmcgZG9lcwo+ICstwqDCoMKgIG5vdCBvY2N1cHkgZW5vdWdoIGRpc3BsYXkgY29sdW1ucy7CoCAq Lwo+ICsrwqDCoMKgIG5vdCBvY2N1cHkgZW5vdWdoIGRpc3BsYXkgY29sdW1ucy7CoCBOb24tcHJp bnRhYmxlLUFTQ0lJCj4gY2hhcmFjdGVycwo+ICsrwqDCoMKgIHdpbGwgYmUgZXNjYXBlZCBhcyBw ZXIgUE9MSUNZLsKgICovCj4gKyAKPiArIGludAo+ICsgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5 dGVfY29sdW1uIChjb25zdCBjaGFyICpkYXRhLCBpbnQKPiBkYXRhX2xlbmd0aCwKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaW50IGRpc3BsYXlfY29sLCBpbnQgdGFic3RvcCkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGRpc3BsYXlf Y29sLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjcHBfY2hhcl9jb2x1bW5fcG9saWN5Cj4gJnBvbGljeSkK PiArIHsKPiArLcKgIGNwcF9kaXNwbGF5X3dpZHRoX2NvbXB1dGF0aW9uIGR3IChkYXRhLCBkYXRh X2xlbmd0aCwgdGFic3RvcCk7Cj4gKyvCoCBjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbiBk dyAoZGF0YSwgZGF0YV9sZW5ndGgsIHBvbGljeSk7Cj4gK8KgwqAgY29uc3QgaW50IGF2YWlsX2Rp c3BsYXkgPSBkdy5hZHZhbmNlX2Rpc3BsYXlfY29scyAoZGlzcGxheV9jb2wpOwo+ICvCoMKgIHJl dHVybiBkdy5ieXRlc19wcm9jZXNzZWQgKCkgKyBNQVggKDAsIGRpc3BsYXlfY29sIC0KPiBhdmFp bF9kaXNwbGF5KTsKPiArIH0KPiArZGlmZiAtLWdpdCBhL2xpYmNwcC9lcnJvcnMuYyBiL2xpYmNw cC9lcnJvcnMuYwo+ICstLS0gYS9saWJjcHAvZXJyb3JzLmPCoMKgMjAyMC0wNy0yMiAyMzozNTox OC43MTIzOTk2MjMgLTA3MDAKPiArKysrIGIvbGliY3BwL2Vycm9ycy5jwqDCoDIwMjEtMTItMjUg MDE6MzA6NTAuNjgxNjg4ODIzIC0wODAwCj4gK0BAIC0yNyw2ICsyNywzMSBAQCBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPCj4gKyAjaW5jbHVkZSAiY3BwbGliLmgiCj4g KyAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPiArIAo+ICsrLyogR2V0IGEgbG9jYXRpb25fdCBmb3Ig dGhlIGN1cnJlbnQgbG9jYXRpb24gaW4gUEZJTEUsCj4gKyvCoMKgIGdlbmVyYWxseSB0aGF0IG9m IHRoZSBwcmV2aW91c2x5IGxleGVkIHRva2VuLsKgICovCj4gKysKPiArK2xvY2F0aW9uX3QKPiAr K2NwcF9kaWFnbm9zdGljX2dldF9jdXJyZW50X2xvY2F0aW9uIChjcHBfcmVhZGVyICpwZmlsZSkK PiArK3sKPiArK8KgIGlmIChDUFBfT1BUSU9OIChwZmlsZSwgdHJhZGl0aW9uYWwpKQo+ICsrwqDC oMKgIHsKPiArK8KgwqDCoMKgwqAgaWYgKHBmaWxlLT5zdGF0ZS5pbl9kaXJlY3RpdmUpCj4gKyvC oMKgwqDCoMKgwqByZXR1cm4gcGZpbGUtPmRpcmVjdGl2ZV9saW5lOwo+ICsrwqDCoMKgwqDCoCBl bHNlCj4gKyvCoMKgwqDCoMKgwqByZXR1cm4gcGZpbGUtPmxpbmVfdGFibGUtPmhpZ2hlc3RfbGlu ZTsKPiArK8KgwqDCoCB9Cj4gKyvCoCAvKiBXZSBkb24ndCB3YW50IHRvIHJlZmVyIHRvIGEgdG9r ZW4gYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlCj4gKyvCoMKgwqDCoCBjdXJyZW50IHJ1biAt LSB0aGF0IGlzIGludmFsaWQuwqAgKi8KPiArK8KgIGVsc2UgaWYgKHBmaWxlLT5jdXJfdG9rZW4g PT0gcGZpbGUtPmN1cl9ydW4tPmJhc2UpCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDCoCByZXR1 cm4gMDsKPiArK8KgwqDCoCB9Cj4gKyvCoCBlbHNlCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDC oCByZXR1cm4gcGZpbGUtPmN1cl90b2tlblstMV0uc3JjX2xvYzsKPiArK8KgwqDCoCB9Cj4gKyt9 Cj4gKysKPiArIC8qIFByaW50IGEgZGlhZ25vc3RpYyBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uwqAg Ki8KPiArIAo+ICsgQVRUUklCVVRFX0ZQVFJfUFJJTlRGKDUsMCkKPiArQEAgLTUyLDI1ICs3Nyw3 IEBAIGNwcF9kaWFnbm9zdGljIChjcHBfcmVhZGVyICogcGZpbGUsIGVudW0KPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZW51bSBjcHBfd2FybmluZ19yZWFzb24gcmVhc29uLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICptc2dpZCwgdmFfbGlzdCAq YXApCj4gKyB7Cj4gKy3CoCBsb2NhdGlvbl90IHNyY19sb2M7Cj4gKy0KPiArLcKgIGlmIChDUFBf T1BUSU9OIChwZmlsZSwgdHJhZGl0aW9uYWwpKQo+ICstwqDCoMKgIHsKPiArLcKgwqDCoMKgwqAg aWYgKHBmaWxlLT5zdGF0ZS5pbl9kaXJlY3RpdmUpCj4gKy3CoMKgwqDCoMKgwqBzcmNfbG9jID0g cGZpbGUtPmRpcmVjdGl2ZV9saW5lOwo+ICstwqDCoMKgwqDCoCBlbHNlCj4gKy3CoMKgwqDCoMKg wqBzcmNfbG9jID0gcGZpbGUtPmxpbmVfdGFibGUtPmhpZ2hlc3RfbGluZTsKPiArLcKgwqDCoCB9 Cj4gKy3CoCAvKiBXZSBkb24ndCB3YW50IHRvIHJlZmVyIHRvIGEgdG9rZW4gYmVmb3JlIHRoZSBi ZWdpbm5pbmcgb2YgdGhlCj4gKy3CoMKgwqDCoCBjdXJyZW50IHJ1biAtLSB0aGF0IGlzIGludmFs aWQuwqAgKi8KPiArLcKgIGVsc2UgaWYgKHBmaWxlLT5jdXJfdG9rZW4gPT0gcGZpbGUtPmN1cl9y dW4tPmJhc2UpCj4gKy3CoMKgwqAgewo+ICstwqDCoMKgwqDCoCBzcmNfbG9jID0gMDsKPiArLcKg wqDCoCB9Cj4gKy3CoCBlbHNlCj4gKy3CoMKgwqAgewo+ICstwqDCoMKgwqDCoCBzcmNfbG9jID0g cGZpbGUtPmN1cl90b2tlblstMV0uc3JjX2xvYzsKPiArLcKgwqDCoCB9Cj4gKyvCoCBsb2NhdGlv bl90IHNyY19sb2MgPSBjcHBfZGlhZ25vc3RpY19nZXRfY3VycmVudF9sb2NhdGlvbiAocGZpbGUp Owo+ICvCoMKgIHJpY2hfbG9jYXRpb24gcmljaGxvYyAocGZpbGUtPmxpbmVfdGFibGUsIHNyY19s b2MpOwo+ICvCoMKgIHJldHVybiBjcHBfZGlhZ25vc3RpY19hdCAocGZpbGUsIGxldmVsLCByZWFz b24sICZyaWNobG9jLCBtc2dpZCwKPiBhcCk7Cj4gKyB9Cj4gK0BAIC0xNDIsNiArMTQ5LDQzIEBA IGNwcF93YXJuaW5nX3N5c2hkciAoY3BwX3JlYWRlciAqIHBmaWxlLAo+ICsgCj4gK8KgwqAgdmFf ZW5kIChhcCk7Cj4gK8KgwqAgcmV0dXJuIHJldDsKPiArK30KPiArKwo+ICsrLyogQXMgY3BwX3dh cm5pbmcgYWJvdmUsIGJ1dCB1c2UgUklDSExPQyBhcyB0aGUgbG9jYXRpb24gb2YgdGhlCj4gZGlh Z25vc3RpYy7CoCAqLwo+ICsrCj4gKytib29sIGNwcF93YXJuaW5nX2F0IChjcHBfcmVhZGVyICpw ZmlsZSwgZW51bSBjcHBfd2FybmluZ19yZWFzb24KPiByZWFzb24sCj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmljaF9sb2NhdGlvbiAqcmljaGxvYywgY29uc3QgY2hh ciAqbXNnaWQsIC4uLikKPiArK3sKPiArK8KgIHZhX2xpc3QgYXA7Cj4gKyvCoCBib29sIHJldDsK PiArKwo+ICsrwqAgdmFfc3RhcnQgKGFwLCBtc2dpZCk7Cj4gKysKPiArK8KgIHJldCA9IGNwcF9k aWFnbm9zdGljX2F0IChwZmlsZSwgQ1BQX0RMX1dBUk5JTkcsIHJlYXNvbiwgcmljaGxvYywKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2dpZCwg JmFwKTsKPiArKwo+ICsrwqAgdmFfZW5kIChhcCk7Cj4gKyvCoCByZXR1cm4gcmV0Owo+ICsrCj4g Kyt9Cj4gKysKPiArKy8qIEFzIGNwcF9wZWR3YXJuaW5nIGFib3ZlLCBidXQgdXNlIFJJQ0hMT0Mg YXMgdGhlIGxvY2F0aW9uIG9mIHRoZQo+ICsrwqDCoCBkaWFnbm9zdGljLsKgICovCj4gKysKPiAr K2Jvb2wKPiArK2NwcF9wZWR3YXJuaW5nX2F0IChjcHBfcmVhZGVyICogcGZpbGUsIGVudW0gY3Bw X3dhcm5pbmdfcmVhc29uCj4gcmVhc29uLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmljaF9sb2NhdGlvbiAqcmljaGxvYywgY29uc3QgY2hhciAqbXNnaWQsIC4uLikKPiAr K3sKPiArK8KgIHZhX2xpc3QgYXA7Cj4gKyvCoCBib29sIHJldDsKPiArKwo+ICsrwqAgdmFfc3Rh cnQgKGFwLCBtc2dpZCk7Cj4gKysKPiArK8KgIHJldCA9IGNwcF9kaWFnbm9zdGljX2F0IChwZmls ZSwgQ1BQX0RMX1BFRFdBUk4sIHJlYXNvbiwgcmljaGxvYywKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2dpZCwgJmFwKTsKPiArKwo+ICsrwqAg dmFfZW5kIChhcCk7Cj4gKyvCoCByZXR1cm4gcmV0Owo+ICsgfQo+ICsgCj4gKyAvKiBQcmludCBh IGRpYWdub3N0aWMgYXQgYSBzcGVjaWZpYyBsb2NhdGlvbi7CoCAqLwo+ICtkaWZmIC0tZ2l0IGEv bGliY3BwL2luY2x1ZGUvY3BwbGliLmggYi9saWJjcHAvaW5jbHVkZS9jcHBsaWIuaAo+ICstLS0g YS9saWJjcHAvaW5jbHVkZS9jcHBsaWIuaMKgwqAyMDIxLTEyLTI1IDAxOjI5OjEyLjkzMTMxNzEw NyAtMDgwMAo+ICsrKysgYi9saWJjcHAvaW5jbHVkZS9jcHBsaWIuaMKgwqAyMDIxLTEyLTI1IDAx OjMwOjUwLjY4NTY4ODc1NyAtMDgwMAo+ICtAQCAtMTE3Niw2ICsxMTc2LDE0IEBAIGV4dGVybiBi b29sIGNwcF93YXJuaW5nX3N5c2hkciAoY3BwX3JlYWQKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICptc2dp ZCwgLi4uKQo+ICvCoMKgIEFUVFJJQlVURV9QUklOVEZfMzsKPiArIAo+ICsrLyogQXMgdGhlaXIg Y291bnRlcnBhcnRzIGFib3ZlLCBidXQgdXNlIFJJQ0hMT0MuwqAgKi8KPiArK2V4dGVybiBib29s IGNwcF93YXJuaW5nX2F0IChjcHBfcmVhZGVyICosIGVudW0gY3BwX3dhcm5pbmdfcmVhc29uLAo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmlj aF9sb2NhdGlvbiAqcmljaGxvYywgY29uc3QgY2hhcgo+ICptc2dpZCwgLi4uKQo+ICsrwqAgQVRU UklCVVRFX1BSSU5URl80Owo+ICsrZXh0ZXJuIGJvb2wgY3BwX3BlZHdhcm5pbmdfYXQgKGNwcF9y ZWFkZXIgKiwgZW51bQo+IGNwcF93YXJuaW5nX3JlYXNvbiwKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJpY2hfbG9jYXRpb24gKnJp Y2hsb2MsIGNvbnN0IGNoYXIKPiAqbXNnaWQsIC4uLikKPiArK8KgIEFUVFJJQlVURV9QUklOVEZf NDsKPiArKwo+ICsgLyogT3V0cHV0IGEgZGlhZ25vc3RpYyB3aXRoICJNU0dJRDogIiBwcmVjZWRp bmcgdGhlCj4gK8KgwqDCoCBlcnJvciBzdHJpbmcgb2YgZXJybm8uwqAgTm8gbG9jYXRpb24gaXMg cHJpbnRlZC7CoCAqLwo+ICsgZXh0ZXJuIGJvb2wgY3BwX2Vycm5vIChjcHBfcmVhZGVyICosIGVu dW0gY3BwX2RpYWdub3N0aWNfbGV2ZWwsCj4gK0BAIC0xMzIwLDQyICsxMzI4LDk1IEBAIGV4dGVy biBjb25zdCBjaGFyICogY3BwX2dldF91c2VyZGVmX3N1ZmYKPiArIAo+ICsgLyogSW4gY2hhcnNl dC5jICovCj4gKyAKPiArKy8qIFRoZSByZXN1bHQgb2YgYXR0ZW1wdGluZyB0byBkZWNvZGUgYSBy dW4gb2YgVVRGLTggYnl0ZXMuwqAgKi8KPiArKwo+ICsrc3RydWN0IGNwcF9kZWNvZGVkX2NoYXIK PiArK3sKPiArK8KgIGNvbnN0IGNoYXIgKm1fc3RhcnRfYnl0ZTsKPiArK8KgIGNvbnN0IGNoYXIg Km1fbmV4dF9ieXRlOwo+ICsrCj4gKyvCoCBib29sIG1fdmFsaWRfY2g7Cj4gKyvCoCBjcHBjaGFy X3QgbV9jaDsKPiArK307Cj4gKysKPiArKy8qIEluZm9ybWF0aW9uIGZvciBtYXBwaW5nIGJldHdl ZW4gY29kZSBwb2ludHMgYW5kIGRpc3BsYXkgY29sdW1ucy4KPiArKwo+ICsrwqDCoCBUaGlzIGlz IGEgdGFic3RvcCB2YWx1ZSwgYWxvbmcgd2l0aCBhIGNhbGxiYWNrIGZvciBnZXR0aW5nIHRoZQo+ ICsrwqDCoCB3aWR0aHMgb2YgY2hhcmFjdGVycy7CoCBOb3JtYWxseSB0aGlzIGNhbGxiYWNrIGlz IGNwcF93Y3dpZHRoLAo+IGJ1dCB3ZQo+ICsrwqDCoCBzdXBwb3J0IG90aGVyIHNjaGVtZXMgZm9y IGVzY2FwaW5nIG5vbi1BU0NJSSB1bmljb2RlIGFzIGEgc2VyaWVzCj4gb2YKPiArK8KgwqAgQVND SUkgY2hhcnMgd2hlbiBwcmludGluZyB0aGUgdXNlcidzIHNvdXJjZSBjb2RlIGluIGRpYWdub3N0 aWMtCj4gc2hvdy1sb2N1cy5jCj4gKysKPiArK8KgwqAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyOgo+ ICsrwqDCoCAtIHRoZSBVbmljb2RlIGNoYXJhY3RlciBVKzAzQzAgIkdSRUVLIFNNQUxMIExFVFRF UiBQSSIgKFVURi04Ogo+IDB4Q0YgMHg4MCkKPiArK8KgwqAgLSB0aGUgVW5pY29kZSBjaGFyYWN0 ZXIgVSsxRjY0MiAiU0xJR0hUTFkgU01JTElORyBGQUNFIgo+ICsrwqDCoMKgwqAgKFVURi04OiAw eEYwIDB4OUYgMHg5OSAweDgyKQo+ICsrwqDCoCAtIHRoZSBieXRlIDB4QkYgKGEgc3RyYXkgdHJh aWxpbmcgYnl0ZSBvZiBhIFVURi04IGNoYXJhY3RlcikKPiArK8KgwqAgTm9ybWFsbHkgVSswM0Mw IHdvdWxkIG9jY3VweSBvbmUgZGlzcGxheSBjb2x1bW4sIFUrMUY2NDIKPiArK8KgwqAgd291bGQg b2NjdXB5IHR3byBkaXNwbGF5IGNvbHVtbnMsIGFuZCB0aGUgc3RyYXkgYnl0ZSB3b3VsZCBiZQo+ ICsrwqDCoCBwcmludGVkIHZlcmJhdGltIGFzIG9uZSBkaXNwbGF5IGNvbHVtbi4KPiArKwo+ICsr wqDCoCBIb3dldmVyIHdoZW4gZXNjYXBpbmcgdGhlbSBhcyB1bmljb2RlIGNvZGUgcG9pbnRzIGFz ICI8VSswM0MwPiIKPiArK8KgwqAgYW5kICI8VSsxRjY0Mj4iIHRoZXkgb2NjdXB5IDggYW5kIDkg ZGlzcGxheSBjb2x1bW5zCj4gcmVzcGVjdGl2ZWx5LAo+ICsrwqDCoCBhbmQgd2hlbiBlc2NhcGlu ZyB0aGVtIGFzIGJ5dGVzIGFzICI8Q0Y+PDgwPiIgYW5kCj4gIjxGMD48OUY+PDk5Pjw4Mj4iCj4g KyvCoMKgIHRoZXkgb2NjdXB5IDggYW5kIDE2IGRpc3BsYXkgY29sdW1ucyByZXNwZWN0aXZlbHku wqAgSW4gYm90aAo+IGNhc2VzCj4gKyvCoMKgIHRoZSBzdHJheSBieXRlIGlzIGVzY2FwZWQgdG8g PEJGPiBhcyA0IGRpc3BsYXkgY29sdW1ucy7CoCAqLwo+ICsrCj4gKytzdHJ1Y3QgY3BwX2NoYXJf Y29sdW1uX3BvbGljeQo+ICsrewo+ICsrwqAgY3BwX2NoYXJfY29sdW1uX3BvbGljeSAoaW50IHRh YnN0b3AsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGludCAoKndpZHRoX2NiKSAoY3BwY2hhcl90IGMpKQo+ICsrwqAgOiBtX3RhYnN0b3AgKHRhYnN0 b3ApLAo+ICsrwqDCoMKgIG1fdW5kZWNvZGVkX2J5dGVfd2lkdGggKDEpLAo+ICsrwqDCoMKgIG1f d2lkdGhfY2IgKHdpZHRoX2NiKQo+ICsrwqAge30KPiArKwo+ICsrwqAgaW50IG1fdGFic3RvcDsK PiArK8KgIC8qIFdpZHRoIGluIGRpc3BsYXkgY29sdW1ucyBvZiBhIHN0cmF5IGJ5dGUgdGhhdCBp c24ndCBkZWNvZGFibGUKPiArK8KgwqDCoMKgIGFzIFVURi04LsKgICovCj4gKyvCoCBpbnQgbV91 bmRlY29kZWRfYnl0ZV93aWR0aDsKPiArK8KgIGludCAoKm1fd2lkdGhfY2IpIChjcHBjaGFyX3Qg Yyk7Cj4gKyt9Owo+ICsrCj4gKyAvKiBBIGNsYXNzIHRvIG1hbmFnZSB0aGUgc3RhdGUgd2hpbGUg Y29udmVydGluZyBhIFVURi04IHNlcXVlbmNlIHRvCj4gY3BwY2hhcl90Cj4gK8KgwqDCoCBhbmQg Y29tcHV0aW5nIHRoZSBkaXNwbGF5IHdpZHRoIG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lLsKgICov Cj4gKyBjbGFzcyBjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbiB7Cj4gK8KgIHB1YmxpYzoK PiArwqDCoCBjcHBfZGlzcGxheV93aWR0aF9jb21wdXRhdGlvbiAoY29uc3QgY2hhciAqZGF0YSwg aW50IGRhdGFfbGVuZ3RoLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCB0YWJzdG9wKTsKPiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjcHBf Y2hhcl9jb2x1bW5fcG9saWN5Cj4gJnBvbGljeSk7Cj4gK8KgwqAgY29uc3QgY2hhciAqbmV4dF9i eXRlICgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQo+ICvCoMKgIGludCBieXRlc19wcm9jZXNz ZWQgKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0IC0gbV9iZWdpbjsgfQo+ICvCoMKgIGludCBieXRl c19sZWZ0ICgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXNfbGVmdDsgfQo+ICvCoMKgIGJvb2wgZG9u ZSAoKSBjb25zdCB7IHJldHVybiAhYnl0ZXNfbGVmdCAoKTsgfQo+ICvCoMKgIGludCBkaXNwbGF5 X2NvbHNfcHJvY2Vzc2VkICgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheV9jb2xzOyB9Cj4gKyAK PiArLcKgIGludCBwcm9jZXNzX25leHRfY29kZXBvaW50ICgpOwo+ICsrwqAgaW50IHByb2Nlc3Nf bmV4dF9jb2RlcG9pbnQgKGNwcF9kZWNvZGVkX2NoYXIgKm91dCk7Cj4gK8KgwqAgaW50IGFkdmFu Y2VfZGlzcGxheV9jb2xzIChpbnQgbik7Cj4gKyAKPiArwqAgcHJpdmF0ZToKPiArwqDCoCBjb25z dCBjaGFyICpjb25zdCBtX2JlZ2luOwo+ICvCoMKgIGNvbnN0IGNoYXIgKm1fbmV4dDsKPiArwqDC oCBzaXplX3QgbV9ieXRlc19sZWZ0Owo+ICstwqAgY29uc3QgaW50IG1fdGFic3RvcDsKPiArK8Kg IGNvbnN0IGNwcF9jaGFyX2NvbHVtbl9wb2xpY3kgJm1fcG9saWN5Owo+ICvCoMKgIGludCBtX2Rp c3BsYXlfY29sczsKPiArIH07Cj4gKyAKPiArIC8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucyB0aGF0 IGFyZSBzaW1wbGUgdXNlIGNhc2VzIGZvciBjbGFzcwo+ICvCoMKgwqAgY3BwX2Rpc3BsYXlfd2lk dGhfY29tcHV0YXRpb24uwqAgVGFiIGNoYXJhY3RlcnMgd2lsbCBiZSBleHBhbmRlZAo+IHRvIHNw YWNlcwo+ICstwqDCoCBhcyBkZXRlcm1pbmVkIGJ5IFRBQlNUT1AuwqAgKi8KPiArK8KgwqAgYXMg ZGV0ZXJtaW5lZCBieSBQT0xJQ1kubV90YWJzdG9wLCBhbmQgbm9uLXByaW50YWJsZS1BU0NJSQo+ IGNoYXJhY3RlcnMKPiArK8KgwqAgd2lsbCBiZSBlc2NhcGVkIGFzIHBlciBQT0xJQ1kuwqAgKi8K PiArKwo+ICsgaW50IGNwcF9ieXRlX2NvbHVtbl90b19kaXNwbGF5X2NvbHVtbiAoY29uc3QgY2hh ciAqZGF0YSwgaW50Cj4gZGF0YV9sZW5ndGgsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGNvbHVt biwgaW50IHRhYnN0b3ApOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBjb2x1bW4sCj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29uc3QgY3BwX2NoYXJfY29sdW1uX3BvbGljeQo+ICZwb2xpY3kpOwo+ICsg aW5saW5lIGludCBjcHBfZGlzcGxheV93aWR0aCAoY29uc3QgY2hhciAqZGF0YSwgaW50IGRhdGFf bGVuZ3RoLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCB0YWJzdG9wKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNwcF9jaGFyX2NvbHVtbl9wb2xpY3kgJnBv bGljeSkKPiArIHsKPiArwqDCoCByZXR1cm4gY3BwX2J5dGVfY29sdW1uX3RvX2Rpc3BsYXlfY29s dW1uIChkYXRhLCBkYXRhX2xlbmd0aCwKPiBkYXRhX2xlbmd0aCwKPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdGFic3RvcCk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvbGlj eSk7Cj4gKyB9Cj4gKyBpbnQgY3BwX2Rpc3BsYXlfY29sdW1uX3RvX2J5dGVfY29sdW1uIChjb25z dCBjaGFyICpkYXRhLCBpbnQKPiBkYXRhX2xlbmd0aCwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQg ZGlzcGxheV9jb2wsIGludCB0YWJzdG9wKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgZGlzcGxh eV9jb2wsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY3BwX2NoYXJfY29sdW1uX3BvbGljeQo+ ICZwb2xpY3kpOwo+ICsgaW50IGNwcF93Y3dpZHRoIChjcHBjaGFyX3QgYyk7Cj4gKyAKPiArICNl bmRpZiAvKiAhIExJQkNQUF9DUFBMSUJfSCAqLwo+ICtkaWZmIC0tZ2l0IGEvbGliY3BwL2luY2x1 ZGUvbGluZS1tYXAuaCBiL2xpYmNwcC9pbmNsdWRlL2xpbmUtbWFwLmgKPiArLS0tIGEvbGliY3Bw L2luY2x1ZGUvbGluZS1tYXAuaMKgwqDCoMKgwqDCoMKgwqAyMDIwLTA3LTIyIDIzOjM1OjE4Ljcx MjM5OTYyMwo+IC0wNzAwCj4gKysrKyBiL2xpYmNwcC9pbmNsdWRlL2xpbmUtbWFwLmjCoMKgwqDC oMKgwqDCoMKgMjAyMS0xMi0yNSAwMTozMDo1MC42ODU2ODg3NTcKPiAtMDgwMAo+ICtAQCAtMTcz Miw2ICsxNzMyLDE4IEBAIGNsYXNzIHJpY2hfbG9jYXRpb24KPiArwqDCoCBjb25zdCBkaWFnbm9z dGljX3BhdGggKmdldF9wYXRoICgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQo+ICvCoMKgIHZv aWQgc2V0X3BhdGggKGNvbnN0IGRpYWdub3N0aWNfcGF0aCAqcGF0aCkgeyBtX3BhdGggPSBwYXRo OyB9Cj4gKyAKPiArK8KgIC8qIEEgZmxhZyBmb3IgaGludGluZyB0aGF0IHRoZSBkaWFnbm9zdGlj IGludm9sdmVzIGNoYXJhY3Rlcgo+IGVuY29kaW5nCj4gKyvCoMKgwqDCoCBpc3N1ZXMsIGFuZCB0 aHVzIHRoYXQgaXQgd2lsbCBiZSBoZWxwZnVsIHRvIHRoZSB1c2VyIGlmIHdlCj4gc2hvdyBzb21l Cj4gKyvCoMKgwqDCoCByZXByZXNlbnRhdGlvbiBvZiBob3cgdGhlIGNoYXJhY3RlcnMgaW4gdGhl IHBlcnRpbmVudCBzb3VyY2UKPiBsaW5lcwo+ICsrwqDCoMKgwqAgYXJlIGVuY29kZWQuCj4gKyvC oMKgwqDCoCBUaGUgZGVmYXVsdCBpcyBmYWxzZSAoaS5lLiBkbyBub3QgZXNjYXBlKS4KPiArK8Kg wqDCoMKgIFdoZW4gc2V0IHRvIHRydWUsIG5vbi1BU0NJSSBieXRlcyBpbiB0aGUgcGVydGluZW50 IHNvdXJjZQo+IGxpbmVzIHdpbGwKPiArK8KgwqDCoMKgIGJlIGVzY2FwZWQgaW4gYSBtYW5uZXIg Y29udHJvbGxlZCBieSB0aGUgdXNlci1zdXBwbGllZCBvcHRpb24KPiArK8KgwqDCoMKgIC1mZGlh Z25vc3RpY3MtZXNjYXBlLWZvcm1hdD0sIHNvIHRoYXQgdGhlIHVzZXIgY2FuIGJldHRlcgo+IHVu ZGVyc3RhbmQKPiArK8KgwqDCoMKgIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBlbmNvZGluZyBp biB0aGVpciBzb3VyY2UgZmlsZS7CoCAqLwo+ICsrwqAgYm9vbCBlc2NhcGVfb25fb3V0cHV0X3Ag KCkgY29uc3QgeyByZXR1cm4gbV9lc2NhcGVfb25fb3V0cHV0OyB9Cj4gKyvCoCB2b2lkIHNldF9l c2NhcGVfb25fb3V0cHV0IChib29sIGZsYWcpIHsgbV9lc2NhcGVfb25fb3V0cHV0ID0KPiBmbGFn OyB9Cj4gKysKPiArIHByaXZhdGU6Cj4gK8KgwqAgYm9vbCByZWplY3RfaW1wb3NzaWJsZV9maXhp dCAobG9jYXRpb25fdCB3aGVyZSk7Cj4gK8KgwqAgdm9pZCBzdG9wX3N1cHBvcnRpbmdfZml4aXRz ICgpOwo+ICtAQCAtMTc1OCw2ICsxNzcwLDcgQEAgcHJvdGVjdGVkOgo+ICvCoMKgIGJvb2wgbV9m aXhpdHNfY2Fubm90X2JlX2F1dG9fYXBwbGllZDsKPiArIAo+ICvCoMKgIGNvbnN0IGRpYWdub3N0 aWNfcGF0aCAqbV9wYXRoOwo+ICsrwqAgYm9vbCBtX2VzY2FwZV9vbl9vdXRwdXQ7Cj4gKyB9Owo+ ICsgCj4gKyAvKiBBIHN0cnVjdCBmb3IgdGhlIHJlc3VsdCBvZiByYW5nZV9sYWJlbDo6Z2V0X3Rl eHQ6IGEgTlVMLQo+IHRlcm1pbmF0ZWQgYnVmZmVyCj4gK2RpZmYgLS1naXQgYS9saWJjcHAvaW50 ZXJuYWwuaCBiL2xpYmNwcC9pbnRlcm5hbC5oCj4gKy0tLSBhL2xpYmNwcC9pbnRlcm5hbC5owqDC oMKgwqDCoMKgwqDCoDIwMjAtMDctMjIgMjM6MzU6MTguNzEyMzk5NjIzIC0wNzAwCj4gKysrKyBi L2xpYmNwcC9pbnRlcm5hbC5owqDCoMKgwqDCoMKgwqDCoDIwMjEtMTItMjUgMDE6MzA6NTAuNjg1 Njg4NzU3IC0wODAwCj4gK0BAIC03NTgsNiArNzU4LDkgQEAgc3RydWN0IF9jcHBfZGlyX29ubHlf Y2FsbGJhY2tzCj4gKyBleHRlcm4gdm9pZCBfY3BwX3ByZXByb2Nlc3NfZGlyX29ubHkgKGNwcF9y ZWFkZXIgKiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdAo+IF9jcHBfZGlyX29ubHlf Y2FsbGJhY2tzICopOwo+ICsgCj4gKysvKiBJbiBlcnJvcnMuY8KgICovCj4gKytleHRlcm4gbG9j YXRpb25fdCBjcHBfZGlhZ25vc3RpY19nZXRfY3VycmVudF9sb2NhdGlvbiAoY3BwX3JlYWRlcgo+ ICopOwo+ICsrCj4gKyAvKiBJbiB0cmFkaXRpb25hbC5jLsKgICovCj4gKyBleHRlcm4gYm9vbCBf Y3BwX3NjYW5fb3V0X2xvZ2ljYWxfbGluZSAoY3BwX3JlYWRlciAqLCBjcHBfbWFjcm8gKiwKPiBi b29sKTsKPiArIGV4dGVybiBib29sIF9jcHBfcmVhZF9sb2dpY2FsX2xpbmVfdHJhZCAoY3BwX3Jl YWRlciAqKTsKPiArQEAgLTk0Niw2ICs5NDksMjYgQEAgaW50IGxpbmVtYXBfZ2V0X2V4cGFuc2lv bl9saW5lIChjbGFzcyBsaQo+ICsgY29uc3QgY2hhciogbGluZW1hcF9nZXRfZXhwYW5zaW9uX2Zp bGVuYW1lIChjbGFzcyBsaW5lX21hcHMgKiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGxvY2F0aW9uX3QpOwo+ICsgCj4gKysvKiBBIHN1YmNsYXNzIG9mIHJpY2hfbG9jYXRpb24gZm9y IGVtaXR0aW5nIGEgZGlhZ25vc3RpYwo+ICsrwqDCoCBhdCB0aGUgY3VycmVudCBsb2NhdGlvbiBv ZiB0aGUgcmVhZGVyLCBidXQgZmxhZ2dpbmcKPiArK8KgwqAgaXQgd2l0aCBzZXRfZXNjYXBlX29u X291dHB1dCAodHJ1ZSkuwqAgKi8KPiArK2NsYXNzIGVuY29kaW5nX3JpY2hfbG9jYXRpb24gOiBw dWJsaWMgcmljaF9sb2NhdGlvbgo+ICsrewo+ICsrIHB1YmxpYzoKPiArK8KgIGVuY29kaW5nX3Jp Y2hfbG9jYXRpb24gKGNwcF9yZWFkZXIgKnBmaWxlKQo+ICsrwqAgOiByaWNoX2xvY2F0aW9uIChw ZmlsZS0+bGluZV90YWJsZSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNw cF9kaWFnbm9zdGljX2dldF9jdXJyZW50X2xvY2F0aW9uIChwZmlsZSkpCj4gKyvCoCB7Cj4gKyvC oMKgwqAgc2V0X2VzY2FwZV9vbl9vdXRwdXQgKHRydWUpOwo+ICsrwqAgfQo+ICsrCj4gKyvCoCBl bmNvZGluZ19yaWNoX2xvY2F0aW9uIChjcHBfcmVhZGVyICpwZmlsZSwgbG9jYXRpb25fdCBsb2Mp Cj4gKyvCoCA6IHJpY2hfbG9jYXRpb24gKHBmaWxlLT5saW5lX3RhYmxlLCBsb2MpCj4gKyvCoCB7 Cj4gKyvCoMKgwqAgc2V0X2VzY2FwZV9vbl9vdXRwdXQgKHRydWUpOwo+ICsrwqAgfQo+ICsrfTsK PiArKwo+ICsgI2lmZGVmIF9fY3BsdXNwbHVzCj4gKyB9Cj4gKyAjZW5kaWYKPiArZGlmZiAtLWdp dCBhL2xpYmNwcC9sZXguYyBiL2xpYmNwcC9sZXguYwo+ICstLS0gYS9saWJjcHAvbGV4LmPCoMKg wqDCoMKgMjAyMS0xMi0yNCAyMDoyMzo0NS41Njg3NjIwMjQgLTA4MDAKPiArKysrIGIvbGliY3Bw L2xleC5jwqDCoMKgwqDCoDIwMjEtMTItMjUgMDE6MzA6NTAuNjg1Njg4NzU3IC0wODAwCj4gK0BA IC0xMjY4LDcgKzEyNjgsMTEgQEAgc2tpcF93aGl0ZXNwYWNlIChjcHBfcmVhZGVyICpwZmlsZSwg Y3BwYwo+ICvCoMKgIHdoaWxlIChpc19udnNwYWNlIChjKSk7Cj4gKyAKPiArwqDCoCBpZiAoc2F3 X05VTCkKPiArLcKgwqDCoCBjcHBfZXJyb3IgKHBmaWxlLCBDUFBfRExfV0FSTklORywgIm51bGwg Y2hhcmFjdGVyKHMpIGlnbm9yZWQiKTsKPiArK8KgwqDCoCB7Cj4gKyvCoMKgwqDCoMKgIGVuY29k aW5nX3JpY2hfbG9jYXRpb24gcmljaF9sb2MgKHBmaWxlKTsKPiArK8KgwqDCoMKgwqAgY3BwX2Vy cm9yX2F0IChwZmlsZSwgQ1BQX0RMX1dBUk5JTkcsICZyaWNoX2xvYywKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIm51bGwgY2hhcmFjdGVyKHMpIGlnbm9yZWQiKTsKPiAr K8KgwqDCoCB9Cj4gKyAKPiArwqDCoCBidWZmZXItPmN1ci0tOwo+ICsgfQo+ICtAQCAtMTI5Nyw2 ICsxMzAxLDI4IEBAIHdhcm5fYWJvdXRfbm9ybWFsaXphdGlvbiAoY3BwX3JlYWRlciAqcGYKPiAr wqDCoCBpZiAoQ1BQX09QVElPTiAocGZpbGUsIHdhcm5fbm9ybWFsaXplKSA8IE5PUk1BTElaRV9T VEFURV9SRVNVTFQKPiAocykKPiArwqDCoMKgwqDCoMKgICYmICFwZmlsZS0+c3RhdGUuc2tpcHBp bmcpCj4gK8KgwqDCoMKgIHsKPiArK8KgwqDCoMKgwqAgbG9jYXRpb25fdCBsb2MgPSB0b2tlbi0+ c3JjX2xvYzsKPiArKwo+ICsrwqDCoMKgwqDCoCAvKiBJZiBwb3NzaWJsZSwgY3JlYXRlIGEgbG9j YXRpb24gcmFuZ2UgZm9yIHRoZSB0b2tlbi7CoCAqLwo+ICsrwqDCoMKgwqDCoCBpZiAobG9jID49 IFJFU0VSVkVEX0xPQ0FUSU9OX0NPVU5UCj4gKyvCoMKgwqDCoMKgwqDCoCAmJiB0b2tlbi0+dHlw ZSAhPSBDUFBfRU9GCj4gKyvCoMKgwqDCoMKgwqDCoCAvKiBUaGVyZSBtdXN0IGJlIG5vIGxpbmUg bm90ZXMgdG8gcHJvY2Vzcy7CoCAqLwo+ICsrwqDCoMKgwqDCoMKgwqAgJiYgKCEocGZpbGUtPmJ1 ZmZlci0+Y3VyCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPj0gcGZpbGUtPmJ1ZmZl ci0+bm90ZXNbcGZpbGUtPmJ1ZmZlci0+Y3VyX25vdGVdLnBvcwo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCYmICFwZmlsZS0+b3ZlcmxhaWRfYnVmZmVyKSkpCj4gKyvCoMKgwqDCoMKg wqB7Cj4gKyvCoMKgwqDCoMKgwqDCoCBzb3VyY2VfcmFuZ2UgdG9rX3JhbmdlOwo+ICsrwqDCoMKg wqDCoMKgwqAgdG9rX3JhbmdlLm1fc3RhcnQgPSBsb2M7Cj4gKyvCoMKgwqDCoMKgwqDCoCB0b2tf cmFuZ2UubV9maW5pc2gKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCA9IGxpbmVtYXBfcG9zaXRpb25f Zm9yX2NvbHVtbiAocGZpbGUtPmxpbmVfdGFibGUsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBDUFBfQlVGX0NPTFVNTiAocGZpbGUtCj4gPmJ1ZmZlciwKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGZpbGUtCj4gPmJ1ZmZlci0+ Y3VyKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoCBsb2MgPSBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKHBm aWxlLT5saW5lX3RhYmxlLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvYywgdG9rX3JhbmdlLCBOVUxM KTsKPiArK8KgwqDCoMKgwqDCoH0KPiArKwo+ICsrwqDCoMKgwqDCoCBlbmNvZGluZ19yaWNoX2xv Y2F0aW9uIHJpY2hfbG9jIChwZmlsZSwgbG9jKTsKPiArKwo+ICvCoMKgwqDCoMKgwqAgLyogTWFr ZSBzdXJlIHRoYXQgdGhlIHRva2VuIGlzIHByaW50ZWQgdXNpbmcgVUNOcywgZXZlbgo+ICvCoMKg wqDCoMKgwqDCoCBpZiB3ZSdkIG90aGVyd2lzZSBoYXBwaWx5IHByaW50IFVURi04LsKgICovCj4g K8KgwqDCoMKgwqDCoCB1bnNpZ25lZCBjaGFyICpidWYgPSBYTkVXVkVDICh1bnNpZ25lZCBjaGFy LCBjcHBfdG9rZW5fbGVuCj4gKHRva2VuKSk7Cj4gK0BAIC0xMzA0LDExICsxMzMwLDExIEBAIHdh cm5fYWJvdXRfbm9ybWFsaXphdGlvbiAoY3BwX3JlYWRlciAqcGYKPiArIAo+ICvCoMKgwqDCoMKg wqAgc3ogPSBjcHBfc3BlbGxfdG9rZW4gKHBmaWxlLCB0b2tlbiwgYnVmLCBmYWxzZSkgLSBidWY7 Cj4gK8KgwqDCoMKgwqDCoCBpZiAoTk9STUFMSVpFX1NUQVRFX1JFU1VMVCAocykgPT0gbm9ybWFs aXplZF9DKQo+ICstwqDCoMKgwqDCoMKgY3BwX3dhcm5pbmdfd2l0aF9saW5lIChwZmlsZSwgQ1BQ X1dfTk9STUFMSVpFLCB0b2tlbi0KPiA+c3JjX2xvYywgMCwKPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJgJS4qcycgaXMgbm90IGlu IE5GS0MiLCAoaW50KSBzeiwKPiBidWYpOwo+ICsrwqDCoMKgwqDCoMKgY3BwX3dhcm5pbmdfYXQg KHBmaWxlLCBDUFBfV19OT1JNQUxJWkUsICZyaWNoX2xvYywKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgImAlLipzJyBpcyBub3QgaW4gTkZLQyIsIChpbnQp IHN6LCBidWYpOwo+ICvCoMKgwqDCoMKgwqAgZWxzZQo+ICstwqDCoMKgwqDCoMKgY3BwX3dhcm5p bmdfd2l0aF9saW5lIChwZmlsZSwgQ1BQX1dfTk9STUFMSVpFLCB0b2tlbi0KPiA+c3JjX2xvYywg MCwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJgJS4qcycgaXMgbm90IGluIE5GQyIsIChpbnQpIHN6LAo+IGJ1Zik7Cj4gKyvCoMKg wqDCoMKgwqBjcHBfd2FybmluZ19hdCAocGZpbGUsIENQUF9XX05PUk1BTElaRSwgJnJpY2hfbG9j LAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiYCUuKnMn IGlzIG5vdCBpbiBORkMiLCAoaW50KSBzeiwgYnVmKTsKPiArwqDCoMKgwqDCoMKgIGZyZWUgKGJ1 Zik7Cj4gK8KgwqDCoMKgIH0KPiArIH0KPiArZGlmZiAtLWdpdCBhL2xpYmNwcC9saW5lLW1hcC5j IGIvbGliY3BwL2xpbmUtbWFwLmMKPiArLS0tIGEvbGliY3BwL2xpbmUtbWFwLmPCoMKgwqDCoMKg wqDCoMKgMjAyMC0wNy0yMiAyMzozNToxOC43MTIzOTk2MjMgLTA3MDAKPiArKysrIGIvbGliY3Bw L2xpbmUtbWFwLmPCoMKgwqDCoMKgwqDCoMKgMjAyMS0xMi0yNSAwMTozMDo1MC42ODU2ODg3NTcg LTA4MDAKPiArQEAgLTIwMDcsNyArMjAwNyw4IEBAIHJpY2hfbG9jYXRpb246OnJpY2hfbG9jYXRp b24gKGxpbmVfbWFwcwo+ICvCoMKgIG1fZml4aXRfaGludHMgKCksCj4gK8KgwqAgbV9zZWVuX2lt cG9zc2libGVfZml4aXQgKGZhbHNlKSwKPiArwqDCoCBtX2ZpeGl0c19jYW5ub3RfYmVfYXV0b19h cHBsaWVkIChmYWxzZSksCj4gKy3CoCBtX3BhdGggKE5VTEwpCj4gKyvCoCBtX3BhdGggKE5VTEwp LAo+ICsrwqAgbV9lc2NhcGVfb25fb3V0cHV0IChmYWxzZSkKPiArIHsKPiArwqDCoCBhZGRfcmFu Z2UgKGxvYywgU0hPV19SQU5HRV9XSVRIX0NBUkVULCBsYWJlbCk7Cj4gKyB9Cj4gZGlmZiAtLWdp dCBhL21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLzAwMDMtQ1ZFLTIwMjEtNDI1NzQucGF0 Y2gKPiBiL21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLzAwMDMtQ1ZFLTIwMjEtNDI1NzQu cGF0Y2gKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjZiZmFmODQw MmQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mv MDAwMy1DVkUtMjAyMS00MjU3NC5wYXRjaAo+IEBAIC0wLDAgKzEsMTcyNCBAQAo+ICtGcm9tIDUx YzUwMDI2OWJmNTM3NDliMTA3ODA3ZDg0MjcxMzg1ZmFkMzU2MjggTW9uIFNlcCAxNyAwMDowMDow MAo+IDIwMDEKPiArRnJvbTogTWFyZWsgUG9sYWNlayA8cG9sYWNla0ByZWRoYXQuY29tPgo+ICtE YXRlOiBXZWQsIDYgT2N0IDIwMjEgMTQ6MzM6NTkgLTA0MDAKPiArU3ViamVjdDogW1BBVENIXSBs aWJjcHA6IEltcGxlbWVudCAtV2JpZGktY2hhcnMgZm9yIENWRS0yMDIxLTQyNTc0Cj4gW1BSMTAz MDI2XQo+ICsKPiArRnJvbSBhIGxpbmsgYmVsb3c6Cj4gKyJBbiBpc3N1ZSB3YXMgZGlzY292ZXJl ZCBpbiB0aGUgQmlkaXJlY3Rpb25hbCBBbGdvcml0aG0gaW4gdGhlCj4gVW5pY29kZQo+ICtTcGVj aWZpY2F0aW9uIHRocm91Z2ggMTQuMC4gSXQgcGVybWl0cyB0aGUgdmlzdWFsIHJlb3JkZXJpbmcg b2YKPiArY2hhcmFjdGVycyB2aWEgY29udHJvbCBzZXF1ZW5jZXMsIHdoaWNoIGNhbiBiZSB1c2Vk IHRvIGNyYWZ0IHNvdXJjZQo+IGNvZGUKPiArdGhhdCByZW5kZXJzIGRpZmZlcmVudCBsb2dpYyB0 aGFuIHRoZSBsb2dpY2FsIG9yZGVyaW5nIG9mIHRva2Vucwo+ICtpbmdlc3RlZCBieSBjb21waWxl cnMgYW5kIGludGVycHJldGVycy4gQWR2ZXJzYXJpZXMgY2FuIGxldmVyYWdlCj4gdGhpcyB0bwo+ ICtlbmNvZGUgc291cmNlIGNvZGUgZm9yIGNvbXBpbGVycyBhY2NlcHRpbmcgVW5pY29kZSBzdWNo IHRoYXQKPiB0YXJnZXRlZAo+ICt2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQgaW52aXNp Ymx5IHRvIGh1bWFuIHJldmlld2Vycy4iCj4gKwo+ICtNb3JlIGluZm86Cj4gK2h0dHBzOi8vbnZk Lm5pc3QuZ292L3Z1bG4vZGV0YWlsL0NWRS0yMDIxLTQyNTc0Cj4gK2h0dHBzOi8vdHJvamFuc291 cmNlLmNvZGVzLwo+ICsKPiArVGhpcyBpcyBub3QgYSBjb21waWxlciBidWcuwqAgSG93ZXZlciwg dG8gbWl0aWdhdGUgdGhlIHByb2JsZW0sIHRoaXMKPiBwYXRjaAo+ICtpbXBsZW1lbnRzIC1XYmlk aS1jaGFycz1bbm9uZXx1bnBhaXJlZHxhbnldIHRvIHdhcm4gYWJvdXQgcG9zc2libHkKPiArbWlz bGVhZGluZyBVbmljb2RlIGJpZGlyZWN0aW9uYWwgY29udHJvbCBjaGFyYWN0ZXJzIHRoZSBwcmVw cm9jZXNzb3IKPiBtYXkKPiArZW5jb3VudGVyLgo+ICsKPiArVGhlIGRlZmF1bHQgaXMgPXVucGFp cmVkLCB3aGljaCB3YXJucyBhYm91dCBpbXByb3Blcmx5IHRlcm1pbmF0ZWQKPiArYmlkaXJlY3Rp b25hbCBjb250cm9sIGNoYXJhY3RlcnM7IGUuZy4gYSBMUkUgd2l0aG91dCBpdHMKPiBjb3JyZXNw b25kaW5nIFBERi4KPiArVGhlIGxldmVsID1hbnkgd2FybnMgYWJvdXQgYW55IHVzZSBvZiBiaWRp cmVjdGlvbmFsIGNvbnRyb2wKPiBjaGFyYWN0ZXJzLgo+ICsKPiArVGhpcyBwYXRjaCBoYW5kbGVz IGJvdGggVUNOcyBhbmQgVVRGLTggY2hhcmFjdGVycy7CoCBVQ05zIGRlc2lnbmF0aW5nCj4gK2Jp ZGkgY2hhcmFjdGVycyBpbiBpZGVudGlmaWVycyBhcmUgYWNjZXB0ZWQgc2luY2UgcjIwNDg4Ni7C oCBUaGVuCj4gcjIxNzE0NAo+ICtlbmFibGVkIC1mZXh0ZW5kZWQtaWRlbnRpZmllcnMgYnkgZGVm YXVsdC7CoCBFeHRlbmRlZCBjaGFyYWN0ZXJzIGluCj4gQy9DKysKPiAraWRlbnRpZmllcnMgaGF2 ZSBiZWVuIGFjY2VwdGVkIHNpbmNlIHIyNzU5NzkuwqAgSG93ZXZlciwgdGhpcyBwYXRjaAo+IHN0 aWxsCj4gK3dhcm5zIGFib3V0IG1peGluZyBVVEYtOCBhbmQgVUNOIGJpZGkgY2hhcmFjdGVyczsg dGhlcmUgc2VlbXMgdG8gYmUKPiBubwo+ICtnb29kIHJlYXNvbiB0byBhbGxvdyBtaXhpbmcgdGhl bS4KPiArCj4gK1dlIHdhcm4gaW4gZGlmZmVyZW50IGNvbnRleHRzOiBjb21tZW50cyAoYm90aCBD IGFuZCBDKystc3R5bGUpLAo+IHN0cmluZwo+ICtsaXRlcmFscywgY2hhcmFjdGVyIGNvbnN0YW50 cywgYW5kIGlkZW50aWZpZXJzLsKgIEV4cGVjdGVkbHksIFVDTnMKPiBhcmUgaWdub3JlZAo+ICtp biBjb21tZW50cyBhbmQgcmF3IHN0cmluZyBsaXRlcmFscy7CoCBUaGUgYmlkaXJlY3Rpb25hbCBj b250cm9sCj4gY2hhcmFjdGVycwo+ICtjYW4gbmVzdCBzbyB0aGlzIHBhdGNoIGhhbmRsZXMgdGhh dCBhcyB3ZWxsLgo+ICsKPiArSSBoYXZlIG5vdCBpbmNsdWRlZCBub3IgdGVzdGVkIHRoaXMgYXQg YWxsIHdpdGggRm9ydHJhbiAod2hpY2ggYWxzbwo+IGhhcwo+ICtzdHJpbmcgbGl0ZXJhbHMgYW5k IGxpbmUgY29tbWVudHMpLgo+ICsKPiArRGF2ZSBNLiBwb3N0ZWQgcGF0Y2hlcyBpbXByb3Zpbmcg ZGlhZ25vc3RpYyBpbnZvbHZpbmcgVW5pY29kZQo+IGNoYXJhY3RlcnMuCj4gK1RoaXMgcGF0Y2gg ZG9lcyBub3QgbWFrZSB1c2Ugb2YgdGhpcyBuZXcgaW5mcmFzdHJ1Y3R1cmUgeWV0Lgo+ICsKPiAr wqDCoMKgwqDCoMKgwqBQUiBwcmVwcm9jZXNzb3IvMTAzMDI2Cj4gKwo+ICtnY2MvYy1mYW1pbHkv Q2hhbmdlTG9nOgo+ICsKPiArwqDCoMKgwqDCoMKgwqAqIGMub3B0IChXYmlkaS1jaGFycywgV2Jp ZGktY2hhcnM9KTogTmV3IG9wdGlvbi4KPiArCj4gK2djYy9DaGFuZ2VMb2c6Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoCogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtV2JpZGktY2hhcnMuCj4gKwo+ ICtsaWJjcHAvQ2hhbmdlTG9nOgo+ICsKPiArwqDCoMKgwqDCoMKgwqAqIGluY2x1ZGUvY3BwbGli LmggKGVudW0gY3BwX2JpZGlyZWN0aW9uYWxfbGV2ZWwpOiBOZXcuCj4gK8KgwqDCoMKgwqDCoMKg KHN0cnVjdCBjcHBfb3B0aW9ucyk6IEFkZCBjcHBfd2Fybl9iaWRpcmVjdGlvbmFsLgo+ICvCoMKg wqDCoMKgwqDCoChlbnVtIGNwcF93YXJuaW5nX3JlYXNvbik6IEFkZCBDUFBfV19CSURJUkVDVElP TkFMLgo+ICvCoMKgwqDCoMKgwqDCoCogaW50ZXJuYWwuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBB ZGQgd2Fybl9iaWRpX3AgbWVtYmVyCj4gK8KgwqDCoMKgwqDCoMKgZnVuY3Rpb24uCj4gK8KgwqDC oMKgwqDCoMKgKiBpbml0LmMgKGNwcF9jcmVhdGVfcmVhZGVyKTogU2V0IGNwcF93YXJuX2JpZGly ZWN0aW9uYWwuCj4gK8KgwqDCoMKgwqDCoMKgKiBsZXguYyAoYmlkaSk6IE5ldyBuYW1lc3BhY2Uu Cj4gK8KgwqDCoMKgwqDCoMKgKGdldF9iaWRpX3V0ZjgpOiBOZXcgZnVuY3Rpb24uCj4gK8KgwqDC oMKgwqDCoMKgKGdldF9iaWRpX3Vjbik6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoChtYXli ZV93YXJuX2JpZGlfb25fY2xvc2UpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAobWF5YmVf d2Fybl9iaWRpX29uX2NoYXIpOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAoX2NwcF9za2lw X2Jsb2NrX2NvbW1lbnQpOiBJbXBsZW1lbnQgd2FybmluZyBhYm91dAo+IGJpZGlyZWN0aW9uYWwK PiArwqDCoMKgwqDCoMKgwqBjb250cm9sIGNoYXJhY3RlcnMuCj4gK8KgwqDCoMKgwqDCoMKgKHNr aXBfbGluZV9jb21tZW50KTogTGlrZXdpc2UuCj4gK8KgwqDCoMKgwqDCoMKgKGZvcm1zX2lkZW50 aWZpZXJfcCk6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoChsZXhfaWRlbnRpZmllcik6IExp a2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoChsZXhfc3RyaW5nKTogTGlrZXdpc2UuCj4gK8KgwqDC oMKgwqDCoMKgKGxleF9yYXdfc3RyaW5nKTogTGlrZXdpc2UuCj4gKwo+ICtnY2MvdGVzdHN1aXRl L0NoYW5nZUxvZzoKPiArCj4gK8KgwqDCoMKgwqDCoMKgKiBjLWMrKy1jb21tb24vV2JpZGktY2hh cnMtMS5jOiBOZXcgdGVzdC4KPiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNvbW1vbi9XYmlkaS1j aGFycy0yLmM6IE5ldyB0ZXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCogYy1jKystY29tbW9uL1diaWRp LWNoYXJzLTMuYzogTmV3IHRlc3QuCj4gK8KgwqDCoMKgwqDCoMKgKiBjLWMrKy1jb21tb24vV2Jp ZGktY2hhcnMtNC5jOiBOZXcgdGVzdC4KPiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNvbW1vbi9X YmlkaS1jaGFycy01LmM6IE5ldyB0ZXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCogYy1jKystY29tbW9u L1diaWRpLWNoYXJzLTYuYzogTmV3IHRlc3QuCj4gK8KgwqDCoMKgwqDCoMKgKiBjLWMrKy1jb21t b24vV2JpZGktY2hhcnMtNy5jOiBOZXcgdGVzdC4KPiArwqDCoMKgwqDCoMKgwqAqIGMtYysrLWNv bW1vbi9XYmlkaS1jaGFycy04LmM6IE5ldyB0ZXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCogYy1jKyst Y29tbW9uL1diaWRpLWNoYXJzLTkuYzogTmV3IHRlc3QuCj4gK8KgwqDCoMKgwqDCoMKgKiBjLWMr Ky1jb21tb24vV2JpZGktY2hhcnMtMTAuYzogTmV3IHRlc3QuCj4gK8KgwqDCoMKgwqDCoMKgKiBj LWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTEuYzogTmV3IHRlc3QuCj4gK8KgwqDCoMKgwqDCoMKg KiBjLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTIuYzogTmV3IHRlc3QuCj4gK8KgwqDCoMKgwqDC oMKgKiBjLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTMuYzogTmV3IHRlc3QuCj4gK8KgwqDCoMKg wqDCoMKgKiBjLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTQuYzogTmV3IHRlc3QuCj4gK8KgwqDC oMKgwqDCoMKgKiBjLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTUuYzogTmV3IHRlc3QuCj4gK8Kg wqDCoMKgwqDCoMKgKiBjLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTYuYzogTmV3IHRlc3QuCj4g K8KgwqDCoMKgwqDCoMKgKiBjLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTcuYzogTmV3IHRlc3Qu Cj4gKwo+ICtDVkU6IENWRS0yMDIxLTQyNTc0Cj4gK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQK PiBbaHR0cHM6Ly9nY2MuZ251Lm9yZy9naXQvZ2l0d2ViLmNnaT9wPWdjYy5naXQ7aD01MWM1MDAy NjliZjUzNzQ5YjEwNzgKPiAwN2Q4NDI3MTM4NWZhZDM1NjI4XQo+ICtTaWduZWQtb2ZmLWJ5OiBQ Z293ZGEgPHBnb3dkYS5jdmVAZ21haWwuY29tPgo+ICsKPiArLS0tCj4gKyBnY2MvYy1mYW1pbHkv Yy5vcHTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqAgMjQgKysKPiArIGdjYy9kb2MvaW52b2tlLnRleGnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIxICstCj4gKyBnY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9XYmlkaS1jaGFycy0xLmPCoCB8wqAgMTIgKwo+ICsgZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vV2JpZGktY2hhcnMtMTAuYyB8wqAgMjcgKysKPiArIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL1diaWRpLWNoYXJzLTExLmMgfMKgIDEzICsKPiArIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL1diaWRpLWNoYXJzLTEyLmMgfMKgIDE5ICsKPiArIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL1diaWRpLWNoYXJzLTEzLmMgfMKgIDE3ICsKPiArIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL1diaWRpLWNoYXJzLTE0LmMgfMKgIDM4ICsrCj4gKyBnY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9XYmlkaS1jaGFycy0xNS5jIHzCoCA1OSArKysKPiArIGdjYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL1diaWRpLWNoYXJzLTE2LmMgfMKgIDI2ICsrCj4gKyBnY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0xNy5jIHzCoCAzMCArKwo+ICsgZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMi5jwqAgfMKgwqAgOSArCj4gKyBnY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0zLmPCoCB8wqAgMTEgKwo+ICsgZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtNC5jwqAgfCAxODggKysrKysrKysrCj4gKyBn Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy01LmPCoCB8IDE4OCArKysrKysr KysKPiArIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTYuY8KgIHwgMTU1 ICsrKysrKysrCj4gKyBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy03LmPC oCB8wqDCoCA5ICsKPiArIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTgu Y8KgIHzCoCAxMyArCj4gKyBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy05 LmPCoCB8wqAgMjkgKysKPiArIGxpYmNwcC9pbmNsdWRlL2NwcGxpYi5owqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTggKy0KPiArIGxpYmNwcC9pbml0LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqAgMSArCj4gKyBsaWJjcHAvaW50ZXJuYWwuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNyArCj4gKyBsaWJjcHAvbGV4LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDQwOAo+ICsrKysrKysrKysrKysrKysrKystCj4gKyAyMyBmaWxlcyBjaGFuZ2VkLCAxMzE1 IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMS5jCj4gKyBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTAuYwo+ICsgY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTEx LmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlk aS1jaGFycy0xMi5jCj4gKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vV2JpZGktY2hhcnMtMTMuYwo+ICsgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTE0LmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0xNS5jCj4gKyBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTYuYwo+ICsg Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJz LTE3LmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9X YmlkaS1jaGFycy0yLmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9XYmlkaS1jaGFycy0zLmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy00LmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy01LmMKPiArIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy02LmMKPiArIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy03 LmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlk aS1jaGFycy04LmMKPiArIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9XYmlkaS1jaGFycy05LmMKPiArCj4gK2RpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5v cHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKPiArLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0wqDCoMKg wqDCoMKgwqAyMDIxLTEyLTI1IDAxOjI5OjEyLjkxNTMxNzM3NCAtMDgwMAo+ICsrKysgYi9nY2Mv Yy1mYW1pbHkvYy5vcHTCoMKgwqDCoMKgwqDCoDIwMjEtMTItMjUgMDE6MzY6MjIuMDQwMDE4NzAx IC0wODAwCj4gK0BAIC0zNTAsNiArMzUwLDMwIEBAIFdiYWQtZnVuY3Rpb24tY2FzdAo+ICsgQyBP YmpDIFZhcih3YXJuX2JhZF9mdW5jdGlvbl9jYXN0KSBXYXJuaW5nCj4gKyBXYXJuIGFib3V0IGNh c3RpbmcgZnVuY3Rpb25zIHRvIGluY29tcGF0aWJsZSB0eXBlcy4KPiArIAo+ICsrV2JpZGktY2hh cnMKPiArK0MgT2JqQyBDKysgT2JqQysrIFdhcm5pbmcgQWxpYXMoV2JpZGktY2hhcnM9LGFueSxu b25lKQo+ICsrOwo+ICsrCj4gKytXYmlkaS1jaGFycz0KPiArK0MgT2JqQyBDKysgT2JqQysrIFJl amVjdE5lZ2F0aXZlIEpvaW5lZCBXYXJuaW5nCj4gQ1BQKGNwcF93YXJuX2JpZGlyZWN0aW9uYWwp IENwcFJlYXNvbihDUFBfV19CSURJUkVDVElPTkFMKQo+IFZhcih3YXJuX2JpZGlyZWN0aW9uYWwp IEluaXQoYmlkaXJlY3Rpb25hbF91bnBhaXJlZCkKPiBFbnVtKGNwcF9iaWRpcmVjdGlvbmFsX2xl dmVsKQo+ICsrLVdiaWRpLWNoYXJzPVtub25lfHVucGFpcmVkfGFueV0gV2FybiBhYm91dCBVVEYt OCBiaWRpcmVjdGlvbmFsCj4gY29udHJvbCBjaGFyYWN0ZXJzLgo+ICsrCj4gKys7IFJlcXVpcmVk IGZvciB0aGVzZSBlbnVtIHZhbHVlcy4KPiArK1NvdXJjZUluY2x1ZGUKPiArK2NwcGxpYi5oCj4g KysKPiArK0VudW0KPiArK05hbWUoY3BwX2JpZGlyZWN0aW9uYWxfbGV2ZWwpIFR5cGUoaW50KSBV bmtub3duRXJyb3IoYXJndW1lbnQgJXFzCj4gdG8gJTwtV2JpZGktY2hhcnMlPiBub3QgcmVjb2du aXplZCkKPiArKwo+ICsrRW51bVZhbHVlCj4gKytFbnVtKGNwcF9iaWRpcmVjdGlvbmFsX2xldmVs KSBTdHJpbmcobm9uZSkKPiBWYWx1ZShiaWRpcmVjdGlvbmFsX25vbmUpCj4gKysKPiArK0VudW1W YWx1ZQo+ICsrRW51bShjcHBfYmlkaXJlY3Rpb25hbF9sZXZlbCkgU3RyaW5nKHVucGFpcmVkKQo+ IFZhbHVlKGJpZGlyZWN0aW9uYWxfdW5wYWlyZWQpCj4gKysKPiArK0VudW1WYWx1ZQo+ICsrRW51 bShjcHBfYmlkaXJlY3Rpb25hbF9sZXZlbCkgU3RyaW5nKGFueSkgVmFsdWUoYmlkaXJlY3Rpb25h bF9hbnkpCj4gKysKPiArIFdib29sLWNvbXBhcmUKPiArIEMgT2JqQyBDKysgT2JqQysrIFZhcih3 YXJuX2Jvb2xfY29tcGFyZSkgV2FybmluZyBMYW5nRW5hYmxlZEJ5KEMKPiBPYmpDIEMrKyBPYmpD KyssV2FsbCkKPiArIFdhcm4gYWJvdXQgYm9vbGVhbiBleHByZXNzaW9uIGNvbXBhcmVkIHdpdGgg YW4gaW50ZWdlciB2YWx1ZQo+IGRpZmZlcmVudCBmcm9tIHRydWUvZmFsc2UuCj4gK2RpZmYgLS1n aXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQo+ICstLS0gYS9n Y2MvZG9jL2ludm9rZS50ZXhpwqDCoMKgwqDCoMKgMjAyMS0xMi0yNSAwMTozNTozMy4yODQ4ODM0 ODggLTA4MDAKPiArKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4acKgwqDCoMKgwqDCoDIwMjEtMTIt MjUgMDE6MzY6MjIuMDQ4MDE4NTU5IC0wODAwCj4gK0BAIC0zMTAsNyArMzEwLDkgQEAgT2JqZWN0 aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9Lgo+ICsgLVdhcml0aC1jb252ZXJzaW9u IEBnb2wKPiArIC1XYXJyYXktYm91bmRzwqAgLVdhcnJheS1ib3VuZHM9QHZhcntufSBAZ29sCj4g KyAtV25vLWF0dHJpYnV0ZXPCoCAtV2F0dHJpYnV0ZS1hbGlhcz1AdmFye259IC1Xbm8tYXR0cmli dXRlLWFsaWFzCj4gQGdvbAo+ICstLVduby1hdHRyaWJ1dGUtd2FybmluZ8KgIC1XYm9vbC1jb21w YXJlwqAgLVdib29sLW9wZXJhdGlvbiBAZ29sCj4gKystV25vLWF0dHJpYnV0ZS13YXJuaW5nwqAg QGdvbAo+ICsrLVdiaWRpLWNoYXJzPUBye1t9bm9uZUBye3x9dW5wYWlyZWRAcnt8fWFueUBye119 IEBnb2wKPiArKy1XYm9vbC1jb21wYXJlwqAgLVdib29sLW9wZXJhdGlvbiBAZ29sCj4gKyAtV25v LWJ1aWx0aW4tZGVjbGFyYXRpb24tbWlzbWF0Y2ggQGdvbAo+ICsgLVduby1idWlsdGluLW1hY3Jv LXJlZGVmaW5lZMKgIC1XYzkwLWM5OS1jb21wYXTCoCAtV2M5OS1jMTEtY29tcGF0Cj4gQGdvbAo+ ICsgLVdjMTEtYzJ4LWNvbXBhdCBAZ29sCj4gK0BAIC02ODYwLDYgKzY4NjIsMjMgQEAgQXR0cmli dXRlcyBjb25zaWRlcmVkIGluY2x1ZGUgQGNvZGV7YWxsbwo+ICsgVGhpcyBpcyB0aGUgZGVmYXVs dC7CoCBZb3UgY2FuIGRpc2FibGUgdGhlc2Ugd2FybmluZ3Mgd2l0aCBlaXRoZXIKPiArIEBvcHRp b257LVduby1hdHRyaWJ1dGUtYWxpYXN9IG9yIEBvcHRpb257LVdhdHRyaWJ1dGUtYWxpYXM9MH0u Cj4gKyAKPiArK0BpdGVtIC1XYmlkaS1jaGFycz1AcntbfW5vbmVAcnt8fXVucGFpcmVkQHJ7fH1h bnlAcntdfQo+ICsrQG9waW5kZXggV2JpZGktY2hhcnM9Cj4gKytAb3BpbmRleCBXYmlkaS1jaGFy cwo+ICsrQG9waW5kZXggV25vLWJpZGktY2hhcnMKPiArK1dhcm4gYWJvdXQgcG9zc2libHkgbWlz bGVhZGluZyBVVEYtOCBiaWRpcmVjdGlvbmFsIGNvbnRyb2wKPiBjaGFyYWN0ZXJzIGluCj4gKytj b21tZW50cywgc3RyaW5nIGxpdGVyYWxzLCBjaGFyYWN0ZXIgY29uc3RhbnRzLCBhbmQgaWRlbnRp ZmllcnMuwqAKPiBTdWNoCj4gKytjaGFyYWN0ZXJzIGNhbiBjaGFuZ2UgbGVmdC10by1yaWdodCB3 cml0aW5nIGRpcmVjdGlvbiBpbnRvIHJpZ2h0LQo+IHRvLWxlZnQKPiArKyhhbmQgdmljZSB2ZXJz YSksIHdoaWNoIGNhbiBjYXVzZSBjb25mdXNpb24gYmV0d2VlbiB0aGUgbG9naWNhbAo+IG9yZGVy IGFuZAo+ICsrdmlzdWFsIG9yZGVyLsKgIFRoaXMgbWF5IGJlIGRhbmdlcm91czsgZm9yIGluc3Rh bmNlLCBpdCBtYXkgc2VlbQo+IHRoYXQgYSBwaWVjZQo+ICsrb2YgY29kZSBpcyBub3QgY29tbWVu dGVkIG91dCwgd2hlcmVhcyBpdCBpbiBmYWN0IGlzLgo+ICsrCj4gKytUaGVyZSBhcmUgdGhyZWUg bGV2ZWxzIG9mIHdhcm5pbmcgc3VwcG9ydGVkIGJ5IEdDQ0AuwqAgVGhlIGRlZmF1bHQKPiBpcwo+ ICsrQG9wdGlvbnstV2JpZGktY2hhcnM9dW5wYWlyZWR9LCB3aGljaCB3YXJucyBhYm91dCBpbXBy b3Blcmx5Cj4gdGVybWluYXRlZAo+ICsrYmlkaSBjb250ZXh0cy7CoCBAb3B0aW9uey1XYmlkaS1j aGFycz1ub25lfSB0dXJucyB0aGUgd2FybmluZyBvZmYuCj4gKytAb3B0aW9uey1XYmlkaS1jaGFy cz1hbnl9IHdhcm5zIGFib3V0IGFueSB1c2Ugb2YgYmlkaXJlY3Rpb25hbAo+IGNvbnRyb2wKPiAr K2NoYXJhY3RlcnMuCj4gKysKPiArIEBpdGVtIC1XYm9vbC1jb21wYXJlCj4gKyBAb3BpbmRleCBX bm8tYm9vbC1jb21wYXJlCj4gKyBAb3BpbmRleCBXYm9vbC1jb21wYXJlCj4gK2RpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0xMC5jCj4gYi9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0xMC5jCj4gKy0tLSBhL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTEwLmPCoMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4g MTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL1diaWRpLWNoYXJzLTEwLmPCoMKgwqDCoMKgwqAyMDIxLTEyLTI1Cj4gMDE6MzY6MjIuMDQ4 MDE4NTU5IC0wODAwCj4gK0BAIC0wLDAgKzEsMjcgQEAKPiArKy8qIFBSIHByZXByb2Nlc3Nvci8x MDMwMjYgKi8KPiArKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCj4gKysvKiB7IGRnLW9wdGlvbnMg Ii1XYmlkaS1jaGFycz11bnBhaXJlZCIgfSAqLwo+ICsrLyogTW9yZSBuZXN0aW5nIHRlc3Rpbmcu wqAgKi8KPiArKwo+ICsrLyogUkxF4oCrIExSSeKBpiBQREbigKwgUERJ4oGpKi8KPiArKy8qIHsg ZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2lu dCBMUkVfXHUyMDJhX1BERl9cdTIwMmM7Cj4gKytpbnQgTFJFX1x1MjAyYV9QREZfXHUyMDJjX0xS RV9cdTIwMmFfUERGX1x1MjAyYzsKPiArK2ludCBMUkVfXHUyMDJhX0xSSV9cdTIwNjZfUERGX1x1 MjAyY19QRElfXHUyMDY5Owo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsraW50IFJMRV9cdTIwMmJfUkxJX1x1MjA2N19QREZfXHUy MDJjX1BESV9cdTIwNjk7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgUkxFX1x1MjAyYl9STElfXHUyMDY3X1BESV9cdTIw NjlfUERGX1x1MjAyYzsKPiArK2ludCBGU0lfXHUyMDY4X0xST19cdTIwMmRfUERJX1x1MjA2OV9Q REZfXHUyMDJjOwo+ICsraW50IEZTSV9cdTIwNjg7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFp cmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgRlNJX1x1MjA2OF9QRElf XHUyMDY5Owo+ICsraW50IEZTSV9cdTIwNjhfRlNJX1x1MjA2OF9QRElfXHUyMDY5Owo+ICsrLyog eyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsr aW50Cj4gUkxJX1x1MjA2N19STElfXHUyMDY3X1JMSV9cdTIwNjdfUkxJX1x1MjA2N19STElfXHUy MDY3X1JMSV9cdTIwNjdfUkxJCj4gX1x1MjA2N19QRElfXHUyMDY5X1BESV9cdTIwNjlfUERJX1x1 MjA2OV9QRElfXHUyMDY5X1BESV9cdTIwNjlfUERJX1x1Cj4gMjA2OV9QRElfXHUyMDY5Owo+ICsr aW50Cj4gUkxJX1x1MjA2N19STElfXHUyMDY3X1JMSV9cdTIwNjdfUkxJX1x1MjA2N19STElfXHUy MDY3X1JMSV9cdTIwNjdfUkxJCj4gX1x1MjA2N19QRElfXHUyMDY5X1BESV9cdTIwNjlfUERJX1x1 MjA2OV9QRElfXHUyMDY5X1BESV9cdTIwNjlfUERJX1x1Cj4gMjA2OTsKPiArKy8qIHsgZGctd2Fy bmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludAo+IFJM SV9cdTIwNjdfUkxJX1x1MjA2N19STElfXHUyMDY3X1JMSV9cdTIwNjdfUkxJX1x1MjA2N19STElf XHUyMDY3X1JMSQo+IF9cdTIwNjdfUERJX1x1MjA2OV9QRElfXHUyMDY5X1BESV9cdTIwNjlfUERJ X1x1MjA2OV9QRElfXHUyMDY5X1BESV9cdQo+IDIwNjlfUERGX1x1MjAyYzsKPiArKy8qIHsgZGct d2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludAo+ IFJMSV9cdTIwNjdfUkxJX1x1MjA2N19STElfXHUyMDY3X1JMSV9cdTIwNjdfRlNJX1x1MjA2OF9Q RElfXHUyMDY5X1BESQo+IF9cdTIwNjlfUERJX1x1MjA2OV9QRElfXHUyMDY5Owo+ICsrLyogeyBk Zy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICtkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTEuYwo+IGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTEuYwo+ICstLS0gYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0xMS5jwqDCoMKgwqDCoMKgMTk2OS0x Mi0zMQo+IDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAo+ICsrKysgYi9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9XYmlkaS1jaGFycy0xMS5jwqDCoMKgwqDCoMKgMjAyMS0xMi0yNQo+IDAxOjM2 OjIyLjA0ODAxODU1OSAtMDgwMAo+ICtAQCAtMCwwICsxLDEzIEBACj4gKysvKiBQUiBwcmVwcm9j ZXNzb3IvMTAzMDI2ICovCj4gKysvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwo+ICsrLyogeyBkZy1v cHRpb25zICItV2JpZGktY2hhcnM9dW5wYWlyZWQiIH0gKi8KPiArKy8qIFRlc3QgdGhhdCB3ZSB3 YXJuIHdoZW4gbWl4aW5nIFVDTiBhbmQgVVRGLTguwqAgKi8KPiArKwo+ICsraW50IExSRV/igKpf UERGX1x1MjAyYzsKPiArKy8qIHsgZGctd2FybmluZyAibWlzbWF0Y2giICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xIH0gKi8KPiArK2ludCBMUkVfXHUyMDJhX1BERl/igKxfOwo+ICsrLyogeyBkZy13 YXJuaW5nICJtaXNtYXRjaCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrY29uc3Qg Y2hhciAqczEgPSAiTFJFX+KAql9QREZfXHUyMDJjIjsKPiArKy8qIHsgZGctd2FybmluZyAibWlz bWF0Y2giICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2NvbnN0IGNoYXIgKnMyID0g IkxSRV9cdTIwMmFfUERGX+KArCI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIm1pc21hdGNoIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9XYmlkaS1jaGFycy0xMi5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9XYmlkaS1jaGFycy0xMi5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1di aWRpLWNoYXJzLTEyLmPCoMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAuMDAwMDAwMDAw IC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTEy LmPCoMKgwqDCoMKgwqAyMDIxLTEyLTI1Cj4gMDE6MzY6MjIuMDQ4MDE4NTU5IC0wODAwCj4gK0BA IC0wLDAgKzEsMTkgQEAKPiArKy8qIFBSIHByZXByb2Nlc3Nvci8xMDMwMjYgKi8KPiArKy8qIHsg ZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGMgfHwgYysrMTEgfSB9IH0gKi8KPiArKy8qIHsgZGct b3B0aW9ucyAiLVdiaWRpLWNoYXJzPWFueSIgfSAqLwo+ICsrLyogVGVzdCByYXcgc3RyaW5ncy7C oCAqLwo+ICsrCj4gKytjb25zdCBjaGFyICpzMSA9IFIiKGEgYiBjIExSReKAqiAxIDIgMyBQREbi gKwgeCB5IHopIjsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkEiICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xIH0gKi8KPiArK2NvbnN0IGNoYXIgKnMyID0gUiIoYSBiIGMgUkxF4oCrIDEgMiAz IFBERuKArCB4IHkgeikiOwo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAyQiIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrY29uc3QgY2hhciAqczMgPSBSIihhIGIgYyBMUk/igK0g MSAyIDMgUERG4oCsIHggeSB6KSI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJEIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytjb25zdCBjaGFyICpzNCA9IFIiKGEgYiBjIFJM T+KAriAxIDIgMyBQREbigKwgeCB5IHopIjsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkUi ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2NvbnN0IGNoYXIgKnM3ID0gUiIoYSBi IGMgRlNJ4oGoIDEgMiAzIFBESeKBqSB4IHkpIHoiOwo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwr MjA2OCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrY29uc3QgY2hhciAqczggPSBS IihhIGIgYyBQREnigakgeCB5ICl6IjsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwNjkiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2NvbnN0IGNoYXIgKnM5ID0gUiIoYSBiIGMg UERG4oCsIHggeSB6KSI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJDIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9XYmlkaS1jaGFycy0xMy5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlk aS1jaGFycy0xMy5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNo YXJzLTEzLmPCoMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAw Cj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTEzLmPCoMKg wqDCoMKgwqAyMDIxLTEyLTI1Cj4gMDE6MzY6MjIuMDQ4MDE4NTU5IC0wODAwCj4gK0BAIC0wLDAg KzEsMTcgQEAKPiArKy8qIFBSIHByZXByb2Nlc3Nvci8xMDMwMjYgKi8KPiArKy8qIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCB7IGMgfHwgYysrMTEgfSB9IH0gKi8KPiArKy8qIHsgZGctb3B0aW9u cyAiLVdiaWRpLWNoYXJzPXVucGFpcmVkIiB9ICovCj4gKysvKiBUZXN0IHJhdyBzdHJpbmdzLsKg ICovCj4gKysKPiArK2NvbnN0IGNoYXIgKnMxID0gUiIoYSBiIGMgTFJF4oCqIDEgMiAzKSI7Cj4g KysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKytjb25zdCBjaGFyICpzMiA9IFIiKGEgYiBjIFJMReKAqyAxIDIgMykiOwo+ICsrLyogeyBk Zy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrY29u c3QgY2hhciAqczMgPSBSIihhIGIgYyBMUk/igK0gMSAyIDMpIjsKPiArKy8qIHsgZGctd2Fybmlu ZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2NvbnN0IGNoYXIg KnM0ID0gUiIoYSBiIGMgRlNJ4oGoIDEgMiAzKSI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFp cmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytjb25zdCBjaGFyICpzNSA9IFIi KGEgYiBjIExSSeKBpiAxIDIgMykiOwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrY29uc3QgY2hhciAqczYgPSBSIihhIGIgYyBS TEnigacgMSAyIDMpIjsKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL1diaWRpLWNoYXJzLTE0LmMKPiBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRp LWNoYXJzLTE0LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hh cnMtMTQuY8KgwqDCoMKgwqDCoDE5NjktMTItMzEKPiAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAK PiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTQuY8KgwqDC oMKgwqDCoDIwMjEtMTItMjUKPiAwMTozNjoyMi4wNDgwMTg1NTkgLTA4MDAKPiArQEAgLTAsMCAr MSwzOCBAQAo+ICsrLyogUFIgcHJlcHJvY2Vzc29yLzEwMzAyNiAqLwo+ICsrLyogeyBkZy1kbyBj b21waWxlIH0gKi8KPiArKy8qIHsgZGctb3B0aW9ucyAiLVdiaWRpLWNoYXJzPXVucGFpcmVkIiB9 ICovCj4gKysvKiBUZXN0IFBESSBoYW5kbGluZywgd2hpY2ggYWxzbyBwb3BzIGFueSBzdWJzZXF1 ZW50IExSRXMsIFJMRXMsCj4gTFJPcywKPiArK8KgwqAgb3IgUkxPcy7CoCAqLwo+ICsrCj4gKysv KiBMUklf4oGmX0xSSV/igaZfUkxFX+KAq19STEVf4oCrX1JMRV/igKtfUERJX+KBqSovCj4gKysv KiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4g KysvLyBMUklf4oGmX1JMRV/igKtfUkxFX+KAq19STEVf4oCrX1BESV/igakKPiArKy8vIExSSV/i gaZfUkxPX+KArl9STEVf4oCrX1JMRV/igKtfUERJX+KBqQo+ICsrLy8gTFJJX+KBpl9STE9f4oCu X1JMRV/igKtfUERJX+KBqQo+ICsrLy8gRlNJX+KBqF9STE9f4oCuX1BESV/igakKPiArKy8vIEZT SV/igahfRlNJX+KBqF9STE9f4oCuX1BESV/igakKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWly ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKwo+ICsraW50Cj4gTFJJX1x1MjA2 Nl9MUklfXHUyMDY2X0xSRV9cdTIwMmFfTFJFX1x1MjAyYV9MUkVfXHUyMDJhX1BESV9cdTIwNjk7 Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCj4gKytpbnQKPiBMUklfXHUyMDY2X0xSSV9cdTIwNjZfTFJFX1x1MjAyYV9MUkVfXHUyMDJh X0xSRV9cdTIwMmFfUERJX1x1MjA2OV9QREkKPiBfXHUyMDY5Owo+ICsraW50Cj4gTFJJX1x1MjA2 Nl9MUklfXHUyMDY2X0xSSV9cdTIwNjZfTFJFX1x1MjAyYV9MUkVfXHUyMDJhX0xSRV9cdTIwMmFf UERJCj4gX1x1MjA2OV9QRElfXHUyMDY5Owo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsraW50IFBESV9cdTIwNjk7Cj4gKytpbnQg TFJJX1x1MjA2Nl9QRElfXHUyMDY5Owo+ICsraW50IFJMSV9cdTIwNjdfUERJX1x1MjA2OTsKPiAr K2ludCBMUkVfXHUyMDJhX0xSSV9cdTIwNjZfUERJX1x1MjA2OTsKPiArKy8qIHsgZGctd2Fybmlu ZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBMUklfXHUy MDY2X0xSRV9cdTIwMmFfUERGX1x1MjAyY19QRElfXHUyMDY5Owo+ICsraW50IExSSV9cdTIwNjZf TFJFX1x1MjAyYV9MUkVfXHUyMDJhX1BERl9cdTIwMmNfUERJX1x1MjA2OTsKPiArK2ludAo+IFJM SV9cdTIwNjdfTFJJX1x1MjA2Nl9MUkVfXHUyMDJhX0xSRV9cdTIwMmFfUERGX1x1MjAyY19QRElf XHUyMDY5Owo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLwo+ICsraW50Cj4gRlNJX1x1MjA2OF9MUklfXHUyMDY2X0xSRV9cdTIwMmFfTFJF X1x1MjAyYV9QREZfXHUyMDJjX1BESV9cdTIwNjk7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFp cmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgUkxPX1x1MjAyZV9QRElf XHUyMDY5Owo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLwo+ICsraW50IFJMSV9cdTIwNjdfUERJX1x1MjA2OV9STElfXHUyMDY3Owo+ICsr LyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ ICsraW50IEZTSV9cdTIwNjhfUERGX1x1MjAyY19QRElfXHUyMDY5Owo+ICsraW50IEZTSV9cdTIw NjhfRlNJX1x1MjA2OF9QREZfXHUyMDJjX1BESV9cdTIwNjk7Cj4gKysvKiB7IGRnLXdhcm5pbmcg InVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gK2RpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0xNS5jCj4gYi9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0xNS5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL1diaWRpLWNoYXJzLTE1LmPCoMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4gMTY6 MDA6MDAuMDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L1diaWRpLWNoYXJzLTE1LmPCoMKgwqDCoMKgwqAyMDIxLTEyLTI1Cj4gMDE6MzY6MjIuMDQ4MDE4 NTU5IC0wODAwCj4gK0BAIC0wLDAgKzEsNTkgQEAKPiArKy8qIFBSIHByZXByb2Nlc3Nvci8xMDMw MjYgKi8KPiArKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCj4gKysvKiB7IGRnLW9wdGlvbnMgIi1X YmlkaS1jaGFycz11bnBhaXJlZCIgfSAqLwo+ICsrLyogVGVzdCB1bnBhaXJlZCBiaWRpIGNvbnRy b2wgY2hhcnMgaW4gbXVsdGlsaW5lIGNvbW1lbnRzLsKgICovCj4gKysKPiArKy8qCj4gKysgKiBM UkXigKogZW5kCj4gKysgKi8KPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0yIH0gKi8KPiArKy8qCj4gKysgKiBSTEXigKsgZW5kCj4gKysgKi8KPiAr Ky8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0gKi8K PiArKy8qCj4gKysgKiBMUk/igK0gZW5kCj4gKysgKi8KPiArKy8qIHsgZGctd2FybmluZyAidW5w YWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0gKi8KPiArKy8qCj4gKysgKiBSTE/igK4g ZW5kCj4gKysgKi8KPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0yIH0gKi8KPiArKy8qCj4gKysgKiBMUknigaYgZW5kCj4gKysgKi8KPiArKy8qIHsg ZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0gKi8KPiArKy8q Cj4gKysgKiBSTEnigacgZW5kCj4gKysgKi8KPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQi ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0gKi8KPiArKy8qCj4gKysgKiBGU0nigaggZW5kCj4g KysgKi8KPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0g Li0yIH0gKi8KPiArKy8qIExSReKAqgo+ICsrwqDCoCBQREbigKwgKi8KPiArKy8qIHsgZGctd2Fy bmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0gKi8KPiArKy8qIEZTSeKB qAo+ICsrwqDCoCBQREnigakgKi8KPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0yIH0gKi8KPiArKwo+ICsrLyogTFJFPOKAqj4KPiArKyAqCj4gKysg Ki8KPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0z IH0gKi8KPiArKwo+ICsrLyoKPiArKyAqIExSRTzigKo+Cj4gKysgKi8KPiArKy8qIHsgZGctd2Fy bmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0gKi8KPiArKwo+ICsrLyoK PiArKyAqCj4gKysgKiBMUkU84oCqPiAqLwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrCj4gKysvKiBSTEk84oGnPiAqLyAvKiBQ REk84oGpPiAqLwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0q LSogfSAuLTEgfSAqLwo+ICsrLyogTFJFPOKAqj4gKi8gLyogUERGPOKArD4gKi8KPiArKy8qIHsg ZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTE2LmMKPiBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTE2LmMKPiArLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTYuY8KgwqDCoMKgwqDCoDE5Njkt MTItMzEKPiAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vV2JpZGktY2hhcnMtMTYuY8KgwqDCoMKgwqDCoDIwMjEtMTItMjUKPiAwMToz NjoyMi4wNDgwMTg1NTkgLTA4MDAKPiArQEAgLTAsMCArMSwyNiBAQAo+ICsrLyogUFIgcHJlcHJv Y2Vzc29yLzEwMzAyNiAqLwo+ICsrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KPiArKy8qIHsgZGct b3B0aW9ucyAiLVdiaWRpLWNoYXJzPWFueSIgfSAqLwo+ICsrLyogVGVzdCBMVFIvUlRMIGNoYXJz LsKgICovCj4gKysKPiArKy8qIExUUjzigI4+ICovCj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsy MDBFIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvLyBMVFI84oCOPgo+ICsrLyog eyBkZy13YXJuaW5nICJVXFwrMjAwRSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsr LyogUlRMPOKAjz4gKi8KPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMEYiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KPiArKy8vIFJUTDzigI8+Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVc XCsyMDBGIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysKPiArK2NvbnN0IGNoYXIg KnMxID0gIkxUUjzigI4+IjsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMEUiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2NvbnN0IGNoYXIgKnMyID0gIkxUUlx1MjAwZSI7Cj4g KysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDBFIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKytjb25zdCBjaGFyICpzMyA9ICJMVFJcdTIwMEUiOwo+ICsrLyogeyBkZy13YXJuaW5nICJV XFwrMjAwRSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrY29uc3QgY2hhciAqczQg PSAiUlRMPOKAjz4iOwo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAwRiIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLwo+ICsrY29uc3QgY2hhciAqczUgPSAiUlRMXHUyMDBmIjsKPiArKy8q IHsgZGctd2FybmluZyAiVVxcKzIwMEYiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiAr K2NvbnN0IGNoYXIgKnM2ID0gIlJUTFx1MjAwRiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsy MDBGIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0xNy5jCj4gYi9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9XYmlkaS1jaGFycy0xNy5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL1diaWRpLWNoYXJzLTE3LmPCoMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAu MDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRp LWNoYXJzLTE3LmPCoMKgwqDCoMKgwqAyMDIxLTEyLTI1Cj4gMDE6MzY6MjIuMDQ4MDE4NTU5IC0w ODAwCj4gK0BAIC0wLDAgKzEsMzAgQEAKPiArKy8qIFBSIHByZXByb2Nlc3Nvci8xMDMwMjYgKi8K PiArKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCj4gKysvKiB7IGRnLW9wdGlvbnMgIi1XYmlkaS1j aGFycz11bnBhaXJlZCIgfSAqLwo+ICsrLyogVGVzdCBMVFIvUlRMIGNoYXJzLsKgICovCj4gKysK PiArKy8qIExUUjzigI4+ICovCj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLy8gTFRSPOKAjj4KPiArKy8qIHsgZGctYm9ndXMgInVu cGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvKiBSVEw84oCPPiAqLwo+ ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8K PiArKy8vIFJUTDzigI8+Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLwo+ICsraW50IGx0cl9cdTIwMGU7Cj4gKysvKiB7IGRnLWVycm9yICJ1 bml2ZXJzYWwgY2hhcmFjdGVyICIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsraW50 IHJ0bF9cdTIwMGY7Cj4gKysvKiB7IGRnLWVycm9yICJ1bml2ZXJzYWwgY2hhcmFjdGVyICIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrCj4gKytjb25zdCBjaGFyICpzMSA9ICJMVFI8 4oCOPiI7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLwo+ICsrY29uc3QgY2hhciAqczIgPSAiTFRSXHUyMDBlIjsKPiArKy8qIHsgZGctYm9n dXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytjb25zdCBjaGFy ICpzMyA9ICJMVFJcdTIwMEUiOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2NvbnN0IGNoYXIgKnM0ID0gIlJUTDzigI8+IjsKPiAr Ky8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4g Kytjb25zdCBjaGFyICpzNSA9ICJSVExcdTIwMGYiOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWly ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2NvbnN0IGNoYXIgKnM2ID0gIlJU TFx1MjAwRiI7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2Jp ZGktY2hhcnMtMS5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0x LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMS5jwqDC oMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCj4gKysrKyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTEuY8KgwqDCoMKgwqDCoMKg MjAyMS0xMi0yNQo+IDAxOjM2OjIyLjA0ODAxODU1OSAtMDgwMAo+ICtAQCAtMCwwICsxLDEyIEBA Cj4gKysvKiBQUiBwcmVwcm9jZXNzb3IvMTAzMDI2ICovCj4gKysvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLwo+ICsrCj4gKytpbnQgbWFpbigpIHsKPiArK8KgwqDCoCBpbnQgaXNBZG1pbiA9IDA7Cj4g KyvCoMKgwqAgLyrigK4gfSDigaZpZiAoaXNBZG1pbinigakg4oGmIGJlZ2luIGFkbWlucyBvbmx5 ICovCj4gKysvKiB7IGRnLXdhcm5pbmcgImJpZGlyZWN0aW9uYWwiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8KPiArK8KgwqDCoMKgwqDCoMKgIF9fYnVpbHRpbl9wcmludGYoIllvdSBhcmUg YW4gYWRtaW4uXG4iKTsKPiArK8KgwqDCoCAvKiBlbmQgYWRtaW5zIG9ubHkg4oCuIHsg4oGmKi8K PiArKy8qIHsgZGctd2FybmluZyAiYmlkaXJlY3Rpb25hbCIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLwo+ICsrwqDCoMKgIHJldHVybiAwOwo+ICsrfQo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMi5jCj4gYi9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9XYmlkaS1jaGFycy0yLmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vV2JpZGktY2hhcnMtMi5jwqDCoMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAu MDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRp LWNoYXJzLTIuY8KgwqDCoMKgwqDCoMKgMjAyMS0xMi0yNQo+IDAxOjM2OjIyLjA0ODAxODU1OSAt MDgwMAo+ICtAQCAtMCwwICsxLDkgQEAKPiArKy8qIFBSIHByZXByb2Nlc3Nvci8xMDMwMjYgKi8K PiArKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCj4gKysKPiArK2ludCBtYWluKCkgewo+ICsrwqDC oMKgIC8qIFNheSBoZWxsbzsgbmV3bGluZeKBpy8qLyByZXR1cm4gMCA7Cj4gKysvKiB7IGRnLXdh cm5pbmcgImJpZGlyZWN0aW9uYWwiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK8Kg wqDCoCBfX2J1aWx0aW5fcHJpbnRmKCJIZWxsbyB3b3JsZC5cbiIpOwo+ICsrwqDCoMKgIHJldHVy biAwOwo+ICsrfQo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2Jp ZGktY2hhcnMtMy5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy0z LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtMy5jwqDC oMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCj4gKysrKyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTMuY8KgwqDCoMKgwqDCoMKg MjAyMS0xMi0yNQo+IDAxOjM2OjIyLjA0ODAxODU1OSAtMDgwMAo+ICtAQCAtMCwwICsxLDExIEBA Cj4gKysvKiBQUiBwcmVwcm9jZXNzb3IvMTAzMDI2ICovCj4gKysvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLwo+ICsrCj4gKytpbnQgbWFpbigpIHsKPiArK8KgwqDCoCBjb25zdCBjaGFyKiBhY2Nlc3Nf bGV2ZWwgPSAidXNlciI7Cj4gKyvCoMKgwqAgaWYgKF9fYnVpbHRpbl9zdHJjbXAoYWNjZXNzX2xl dmVsLCAidXNlcuKAriDigaYvLyBDaGVjayBpZiBhZG1pbuKBqQo+IOKBpiIpKSB7Cj4gKysvKiB7 IGRnLXdhcm5pbmcgImJpZGlyZWN0aW9uYWwiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8K PiArK8KgwqDCoMKgwqDCoMKgIF9fYnVpbHRpbl9wcmludGYoIllvdSBhcmUgYW4gYWRtaW4uXG4i KTsKPiArK8KgwqDCoCB9Cj4gKyvCoMKgwqAgcmV0dXJuIDA7Cj4gKyt9Cj4gK2RpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy00LmMKPiBiL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTQuYwo+ICstLS0gYS9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy00LmPCoMKgwqDCoMKgwqDCoDE5NjktMTItMzEKPiAx NjowMDowMC4wMDAwMDAwMDAgLTA4MDAKPiArKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vV2JpZGktY2hhcnMtNC5jwqDCoMKgwqDCoMKgwqAyMDIxLTEyLTI1Cj4gMDE6MzY6MjIuMDQ4 MDE4NTU5IC0wODAwCj4gK0BAIC0wLDAgKzEsMTg4IEBACj4gKysvKiBQUiBwcmVwcm9jZXNzb3Iv MTAzMDI2ICovCj4gKysvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwo+ICsrLyogeyBkZy1vcHRpb25z ICItV2JpZGktY2hhcnM9YW55IC1Xbm8tbXVsdGljaGFyIC1Xbm8tb3ZlcmZsb3ciIH0KPiAqLwo+ ICsrLyogVGVzdCBhbGwgYmlkaSBjaGFycyBpbiB2YXJpb3VzIGNvbnRleHRzIChpZGVudGlmaWVy cywgY29tbWVudHMsCj4gKyvCoMKgIHN0cmluZyBsaXRlcmFscywgY2hhcmFjdGVyIGNvbnN0YW50 cyksIGJvdGggVUNOIGFuZCBVVEYtOC7CoCBUaGUKPiBiaWRpCj4gKyvCoMKgIGNoYXJzIGhlcmUg YXJlIHByb3Blcmx5IHRlcm1pbmF0ZWQsIGV4Y2VwdCBmb3IgdGhlIGNoYXJhY3Rlcgo+IGNvbnN0 YW50cy7CoCAqLwo+ICsrCj4gKysvKiBhIGIgYyBMUkXigKogMSAyIDMgUERG4oCsIHggeSB6ICov Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJBIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCj4gKysvKiBhIGIgYyBSTEXigKsgMSAyIDMgUERG4oCsIHggeSB6ICovCj4gKysvKiB7IGRn LXdhcm5pbmcgIlVcXCsyMDJCIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvKiBh IGIgYyBMUk/igK0gMSAyIDMgUERG4oCsIHggeSB6ICovCj4gKysvKiB7IGRnLXdhcm5pbmcgIlVc XCsyMDJEIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvKiBhIGIgYyBSTE/igK4g MSAyIDMgUERG4oCsIHggeSB6ICovCj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJFIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvKiBhIGIgYyBMUknigaYgMSAyIDMgUERJ4oGp IHggeSB6ICovCj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDY2IiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCj4gKysvKiBhIGIgYyBSTEnigacgMSAyIDMgUERJ4oGpIHggeSAqLwo+ICsr LyogeyBkZy13YXJuaW5nICJVXFwrMjA2NyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ ICsrLyogYSBiIGMgRlNJ4oGoIDEgMiAzIFBESeKBqSB4IHkgeiAqLwo+ICsrLyogeyBkZy13YXJu aW5nICJVXFwrMjA2OCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrCj4gKysvKiBT YW1lIGJ1dCBDKysgY29tbWVudHMgaW5zdGVhZC7CoCAqLwo+ICsrLy8gYSBiIGMgTFJF4oCqIDEg MiAzIFBERuKArCB4IHkgego+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAyQSIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLy8gYSBiIGMgUkxF4oCrIDEgMiAzIFBERuKArCB4IHkg ego+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAyQiIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsrLy8gYSBiIGMgTFJP4oCtIDEgMiAzIFBERuKArCB4IHkgego+ICsrLyogeyBkZy13 YXJuaW5nICJVXFwrMjAyRCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLy8gYSBi IGMgUkxP4oCuIDEgMiAzIFBERuKArCB4IHkgego+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAy RSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLy8gYSBiIGMgTFJJ4oGmIDEgMiAz IFBESeKBqSB4IHkgego+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjA2NiIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLwo+ICsrLy8gYSBiIGMgUkxJ4oGnIDEgMiAzIFBESeKBqSB4IHkKPiAr Ky8qIHsgZGctd2FybmluZyAiVVxcKzIwNjciICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8K PiArKy8vIGEgYiBjIEZTSeKBqCAxIDIgMyBQREnigakgeCB5IHoKPiArKy8qIHsgZGctd2Fybmlu ZyAiVVxcKzIwNjgiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKwo+ICsrLyogSGVy ZSB3ZSdyZSBjbG9zaW5nIGFuIHVub3BlbmVkIGNvbnRleHQsIHdhcm4gd2hlbiA9YW55LsKgICov Cj4gKysvKiBhIGIgYyBQREnigakgeCB5IHogKi8KPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIw NjkiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKy8qIGEgYiBjIFBERuKArCB4IHkg eiAqLwo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAyQyIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLwo+ICsrLy8gYSBiIGMgUERJ4oGpIHggeSB6Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVc XCsyMDY5IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvLyBhIGIgYyBQREbigKwg eCB5IHoKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkMiICIiIHsgdGFyZ2V0ICotKi0qIH0g Li0xIH0gKi8KPiArKwo+ICsrLyogTXVsdGlsaW5lIGNvbW1lbnRzLsKgICovCj4gKysvKiBhIGIg YyBQREnigakgeCB5IHoKPiArK8KgwqAgKi8KPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwNjki ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0yIH0gKi8KPiArKy8qIGEgYiBjIFBERuKArCB4IHkgego+ ICsrwqDCoCAqLwo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAyQyIgIiIgeyB0YXJnZXQgKi0q LSogfSAuLTIgfSAqLwo+ICsrLyogZmlyc3QKPiArK8KgwqAgYSBiIGMgUERJ4oGpIHggeSB6Cj4g KyvCoMKgICovCj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDY5IiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMiB9ICovCj4gKysvKiBmaXJzdAo+ICsrwqDCoCBhIGIgYyBQREbigKwgeCB5IHoKPiAr K8KgwqAgKi8KPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkMiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0yIH0gKi8KPiArKy8qIGZpcnN0Cj4gKyvCoMKgIGEgYiBjIFBESeKBqSB4IHkgeiAqLwo+ ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjA2OSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAq Lwo+ICsrLyogZmlyc3QKPiArK8KgwqAgYSBiIGMgUERG4oCsIHggeSB6ICovCj4gKysvKiB7IGRn LXdhcm5pbmcgIlVcXCsyMDJDIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysKPiAr K3ZvaWQKPiArK2cxICgpCj4gKyt7Cj4gKyvCoCBjb25zdCBjaGFyICpzMSA9ICJhIGIgYyBMUkXi gKogMSAyIDMgUERG4oCsIHggeSB6IjsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkEiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNvbnN0IGNoYXIgKnMyID0gImEgYiBj IFJMReKAqyAxIDIgMyBQREbigKwgeCB5IHoiOwo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAy QiIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczMgPSAi YSBiIGMgTFJP4oCtIDEgMiAzIFBERuKArCB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVc XCsyMDJEIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpz NCA9ICJhIGIgYyBSTE/igK4gMSAyIDMgUERG4oCsIHggeSB6IjsKPiArKy8qIHsgZGctd2Fybmlu ZyAiVVxcKzIwMkUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNvbnN0IGNo YXIgKnM1ID0gImEgYiBjIExSSeKBpiAxIDIgMyBQREnigakgeCB5IHoiOwo+ICsrLyogeyBkZy13 YXJuaW5nICJVXFwrMjA2NiIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29u c3QgY2hhciAqczYgPSAiYSBiIGMgUkxJ4oGnIDEgMiAzIFBESeKBqSB4IHkgeiI7Cj4gKysvKiB7 IGRnLXdhcm5pbmcgIlVcXCsyMDY3IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvC oCBjb25zdCBjaGFyICpzNyA9ICJhIGIgYyBGU0nigaggMSAyIDMgUERJ4oGpIHggeSB6IjsKPiAr Ky8qIHsgZGctd2FybmluZyAiVVxcKzIwNjgiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8K PiArK8KgIGNvbnN0IGNoYXIgKnM4ID0gImEgYiBjIFBESeKBqSB4IHkgeiI7Cj4gKysvKiB7IGRn LXdhcm5pbmcgIlVcXCsyMDY5IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBj b25zdCBjaGFyICpzOSA9ICJhIGIgYyBQREbigKwgeCB5IHoiOwo+ICsrLyogeyBkZy13YXJuaW5n ICJVXFwrMjAyQyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrCj4gKyvCoCBjb25z dCBjaGFyICpzMTAgPSAiYSBiIGMgTFJFXHUyMDJhIDEgMiAzIFBERlx1MjAyYyB4IHkgeiI7Cj4g KysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJBIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKyvCoCBjb25zdCBjaGFyICpzMTEgPSAiYSBiIGMgTFJFXHUyMDJBIDEgMiAzIFBERlx1MjAy YyB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJBIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMTIgPSAiYSBiIGMgUkxFXHUyMDJiIDEg MiAzIFBERlx1MjAyYyB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJCIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMTMgPSAiYSBiIGMg UkxFXHUyMDJCIDEgMiAzIFBERlx1MjAyYyB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVc XCsyMDJCIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpz MTQgPSAiYSBiIGMgTFJPXHUyMDJkIDEgMiAzIFBERlx1MjAyYyB4IHkgeiI7Cj4gKysvKiB7IGRn LXdhcm5pbmcgIlVcXCsyMDJEIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBj b25zdCBjaGFyICpzMTUgPSAiYSBiIGMgTFJPXHUyMDJEIDEgMiAzIFBERlx1MjAyYyB4IHkgeiI7 Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJEIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMTYgPSAiYSBiIGMgUkxPXHUyMDJlIDEgMiAzIFBERlx1 MjAyYyB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJFIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMTcgPSAiYSBiIGMgUkxPXHUyMDJF IDEgMiAzIFBERlx1MjAyYyB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJFIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMTggPSAiYSBi IGMgTFJJXHUyMDY2IDEgMiAzIFBESVx1MjA2OSB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcg IlVcXCsyMDY2IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFy ICpzMTkgPSAiYSBiIGMgUkxJXHUyMDY3IDEgMiAzIFBESVx1MjA2OSB4IHkgeiI7Cj4gKysvKiB7 IGRnLXdhcm5pbmcgIlVcXCsyMDY3IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvC oCBjb25zdCBjaGFyICpzMjAgPSAiYSBiIGMgRlNJXHUyMDY4IDEgMiAzIFBESVx1MjA2OSB4IHkg eiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDY4IiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCj4gKyt9Cj4gKysKPiArK3ZvaWQKPiArK2cyICgpCj4gKyt7Cj4gKyvCoCBjb25zdCBj aGFyIGMxID0gJ1x1MjAyYSc7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJBIiAiIiB7IHRh cmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGMyID0gJ1x1MjAyQSc7Cj4g KysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJBIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKyvCoCBjb25zdCBjaGFyIGMzID0gJ1x1MjAyYic7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVc XCsyMDJCIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGM0 ID0gJ1x1MjAyQic7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJCIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGM1ID0gJ1x1MjAyZCc7Cj4gKysvKiB7 IGRnLXdhcm5pbmcgIlVcXCsyMDJEIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvC oCBjb25zdCBjaGFyIGM2ID0gJ1x1MjAyRCc7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJE IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGM3ID0gJ1x1 MjAyZSc7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJFIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGM4ID0gJ1x1MjAyRSc7Cj4gKysvKiB7IGRnLXdh cm5pbmcgIlVcXCsyMDJFIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25z dCBjaGFyIGM5ID0gJ1x1MjA2Nic7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDY2IiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGMxMCA9ICdcdTIwNjcn Owo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjA2NyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsrwqAgY29uc3QgY2hhciBjMTEgPSAnXHUyMDY4JzsKPiArKy8qIHsgZGctd2Fybmlu ZyAiVVxcKzIwNjgiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK30KPiArKwo+ICsr aW50IGHigKpi4oCsYzsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkEiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBh4oCrYuKArGM7Cj4gKysvKiB7IGRnLXdhcm5pbmcg IlVcXCsyMDJCIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgYeKArWLigKxj Owo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjAyRCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsraW50IGHigK5i4oCsYzsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkUiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBh4oGmYuKBqWM7Cj4gKysvKiB7IGRn LXdhcm5pbmcgIlVcXCsyMDY2IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQg YeKBp2LigaljOwo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwrMjA2NyIgIiIgeyB0YXJnZXQgKi0q LSogfSAuLTEgfSAqLwo+ICsraW50IGHigahi4oGpYzsKPiArKy8qIHsgZGctd2FybmluZyAiVVxc KzIwNjgiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBB4oCsWDsKPiArKy8q IHsgZGctd2FybmluZyAiVVxcKzIwMkMiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiAr K2ludCBBXHUyMDJjWTsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkMiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBBXHUyMDJDWTI7Cj4gKysvKiB7IGRnLXdhcm5pbmcg IlVcXCsyMDJDIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysKPiArK2ludCBkXHUy MDJhZVx1MjAyY2Y7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJBIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCj4gKytpbnQgZFx1MjAyQWVcdTIwMmNmMjsKPiArKy8qIHsgZGctd2Fy bmluZyAiVVxcKzIwMkEiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBkXHUy MDJiZVx1MjAyY2Y7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJCIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCj4gKytpbnQgZFx1MjAyQmVcdTIwMmNmMjsKPiArKy8qIHsgZGctd2Fy bmluZyAiVVxcKzIwMkIiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBkXHUy MDJkZVx1MjAyY2Y7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJEIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCj4gKytpbnQgZFx1MjAyRGVcdTIwMmNmMjsKPiArKy8qIHsgZGctd2Fy bmluZyAiVVxcKzIwMkQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBkXHUy MDJlZVx1MjAyY2Y7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJFIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCj4gKytpbnQgZFx1MjAyRWVcdTIwMmNmMjsKPiArKy8qIHsgZGctd2Fy bmluZyAiVVxcKzIwMkUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBkXHUy MDY2ZVx1MjA2OWY7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDY2IiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCj4gKytpbnQgZFx1MjA2N2VcdTIwNjlmOwo+ICsrLyogeyBkZy13YXJu aW5nICJVXFwrMjA2NyIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsraW50IGRcdTIw NjhlXHUyMDY5ZjsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwNjgiICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xIH0gKi8KPiArK2ludCBYXHUyMDY5Owo+ICsrLyogeyBkZy13YXJuaW5nICJVXFwr MjA2OSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICtkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtNS5jCj4gYi9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9XYmlkaS1jaGFycy01LmMKPiArLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vV2JpZGktY2hhcnMtNS5jwqDCoMKgwqDCoMKgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAu MDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRp LWNoYXJzLTUuY8KgwqDCoMKgwqDCoMKgMjAyMS0xMi0yNQo+IDAxOjM2OjIyLjA0ODAxODU1OSAt MDgwMAo+ICtAQCAtMCwwICsxLDE4OCBAQAo+ICsrLyogUFIgcHJlcHJvY2Vzc29yLzEwMzAyNiAq Lwo+ICsrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KPiArKy8qIHsgZGctb3B0aW9ucyAiLVdiaWRp LWNoYXJzPXVucGFpcmVkIC1Xbm8tbXVsdGljaGFyIC1Xbm8tCj4gb3ZlcmZsb3ciIH0gKi8KPiAr Ky8qIFRlc3QgYWxsIGJpZGkgY2hhcnMgaW4gdmFyaW91cyBjb250ZXh0cyAoaWRlbnRpZmllcnMs IGNvbW1lbnRzLAo+ICsrwqDCoCBzdHJpbmcgbGl0ZXJhbHMsIGNoYXJhY3RlciBjb25zdGFudHMp LCBib3RoIFVDTiBhbmQgVVRGLTguwqAgVGhlCj4gYmlkaQo+ICsrwqDCoCBjaGFycyBoZXJlIGFy ZSBwcm9wZXJseSB0ZXJtaW5hdGVkLCBleGNlcHQgZm9yIHRoZSBjaGFyYWN0ZXIKPiBjb25zdGFu dHMuwqAgKi8KPiArKwo+ICsrLyogYSBiIGMgTFJF4oCqIDEgMiAzIFBERuKArCB4IHkgeiAqLwo+ ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8K PiArKy8qIGEgYiBjIFJMReKAqyAxIDIgMyBQREbigKwgeCB5IHogKi8KPiArKy8qIHsgZGctYm9n dXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvKiBhIGIgYyBM Uk/igK0gMSAyIDMgUERG4oCsIHggeSB6ICovCj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLyogYSBiIGMgUkxP4oCuIDEgMiAzIFBE RuKArCB4IHkgeiAqLwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xIH0gKi8KPiArKy8qIGEgYiBjIExSSeKBpiAxIDIgMyBQREnigakgeCB5IHogKi8K PiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKysvKiBhIGIgYyBSTEnigacgMSAyIDMgUERJ4oGpIHggeSAqLwo+ICsrLyogeyBkZy1ib2d1 cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKy8qIGEgYiBjIEZT SeKBqCAxIDIgMyBQREnigakgeCB5IHogKi8KPiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysKPiArKy8qIFNhbWUgYnV0IEMrKyBjb21t ZW50cyBpbnN0ZWFkLsKgICovCj4gKysvLyBhIGIgYyBMUkXigKogMSAyIDMgUERG4oCsIHggeSB6 Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAq Lwo+ICsrLy8gYSBiIGMgUkxF4oCrIDEgMiAzIFBERuKArCB4IHkgego+ICsrLyogeyBkZy1ib2d1 cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKy8vIGEgYiBjIExS T+KArSAxIDIgMyBQREbigKwgeCB5IHoKPiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvLyBhIGIgYyBSTE/igK4gMSAyIDMgUERG4oCs IHggeSB6Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLwo+ICsrLy8gYSBiIGMgTFJJ4oGmIDEgMiAzIFBESeKBqSB4IHkgego+ICsrLyogeyBk Zy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKy8vIGEg YiBjIFJMSeKBpyAxIDIgMyBQREnigakgeCB5Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLy8gYSBiIGMgRlNJ4oGoIDEgMiAzIFBE SeKBqSB4IHkgego+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8KPiArKwo+ICsrLyogSGVyZSB3ZSdyZSBjbG9zaW5nIGFuIHVub3BlbmVkIGNv bnRleHQsIHdhcm4gd2hlbiA9YW55LsKgICovCj4gKysvKiBhIGIgYyBQREnigakgeCB5IHogKi8K PiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKysvKiBhIGIgYyBQREbigKwgeCB5IHogKi8KPiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVk IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvLyBhIGIgYyBQREnigakgeCB5IHoK PiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKysvLyBhIGIgYyBQREbigKwgeCB5IHoKPiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysKPiArKy8qIE11bHRpbGluZSBjb21tZW50 cy7CoCAqLwo+ICsrLyogYSBiIGMgUERJ4oGpIHggeSB6Cj4gKyvCoMKgICovCj4gKysvKiB7IGRn LWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTIgfSAqLwo+ICsrLyogYSBi IGMgUERG4oCsIHggeSB6Cj4gKyvCoMKgICovCj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTIgfSAqLwo+ICsrLyogZmlyc3QKPiArK8KgwqAgYSBiIGMg UERJ4oGpIHggeSB6Cj4gKyvCoMKgICovCj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTIgfSAqLwo+ICsrLyogZmlyc3QKPiArK8KgwqAgYSBiIGMgUERG 4oCsIHggeSB6Cj4gKyvCoMKgICovCj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTIgfSAqLwo+ICsrLyogZmlyc3QKPiArK8KgwqAgYSBiIGMgUERJ4oGp IHggeSB6ICovCj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLwo+ICsrLyogZmlyc3QKPiArK8KgwqAgYSBiIGMgUERG4oCsIHggeSB6ICovCj4g KysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ ICsrCj4gKyt2b2lkCj4gKytnMSAoKQo+ICsrewo+ICsrwqAgY29uc3QgY2hhciAqczEgPSAiYSBi IGMgTFJF4oCqIDEgMiAzIFBERuKArCB4IHkgeiI7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJl ZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczIgPSAi YSBiIGMgUkxF4oCrIDEgMiAzIFBERuKArCB4IHkgeiI7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBh aXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczMg PSAiYSBiIGMgTFJP4oCtIDEgMiAzIFBERuKArCB4IHkgeiI7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1 bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAq czQgPSAiYSBiIGMgUkxP4oCuIDEgMiAzIFBERuKArCB4IHkgeiI7Cj4gKysvKiB7IGRnLWJvZ3Vz ICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hh ciAqczUgPSAiYSBiIGMgTFJJ4oGmIDEgMiAzIFBESeKBqSB4IHkgeiI7Cj4gKysvKiB7IGRnLWJv Z3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3Qg Y2hhciAqczYgPSAiYSBiIGMgUkxJ4oGnIDEgMiAzIFBESeKBqSB4IHkgeiI7Cj4gKysvKiB7IGRn LWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29u c3QgY2hhciAqczcgPSAiYSBiIGMgRlNJ4oGoIDEgMiAzIFBESeKBqSB4IHkgeiI7Cj4gKysvKiB7 IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAg Y29uc3QgY2hhciAqczggPSAiYSBiIGMgUERJ4oGpIHggeSB6IjsKPiArKy8qIHsgZGctYm9ndXMg InVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFy ICpzOSA9ICJhIGIgYyBQREbigKwgeCB5IHoiOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQi ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKwo+ICsrwqAgY29uc3QgY2hhciAqczEw ID0gImEgYiBjIExSRVx1MjAyYSAxIDIgMyBQREZcdTIwMmMgeCB5IHoiOwo+ICsrLyogeyBkZy1i b2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNvbnN0 IGNoYXIgKnMxMSA9ICJhIGIgYyBMUkVcdTIwMkEgMSAyIDMgUERGXHUyMDJjIHggeSB6IjsKPiAr Ky8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4g KyvCoCBjb25zdCBjaGFyICpzMTIgPSAiYSBiIGMgUkxFXHUyMDJiIDEgMiAzIFBERlx1MjAyYyB4 IHkgeiI7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczEzID0gImEgYiBjIFJMRVx1MjAyQiAxIDIgMyBQ REZcdTIwMmMgeCB5IHoiOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNvbnN0IGNoYXIgKnMxNCA9ICJhIGIgYyBMUk9cdTIw MmQgMSAyIDMgUERGXHUyMDJjIHggeSB6IjsKPiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMTUgPSAiYSBi IGMgTFJPXHUyMDJEIDEgMiAzIFBERlx1MjAyYyB4IHkgeiI7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1 bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAq czE2ID0gImEgYiBjIFJMT1x1MjAyZSAxIDIgMyBQREZcdTIwMmMgeCB5IHoiOwo+ICsrLyogeyBk Zy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNv bnN0IGNoYXIgKnMxNyA9ICJhIGIgYyBSTE9cdTIwMkUgMSAyIDMgUERGXHUyMDJjIHggeSB6IjsK PiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKyvCoCBjb25zdCBjaGFyICpzMTggPSAiYSBiIGMgTFJJXHUyMDY2IDEgMiAzIFBESVx1MjA2 OSB4IHkgeiI7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczE5ID0gImEgYiBjIFJMSVx1MjA2NyAxIDIg MyBQRElcdTIwNjkgeCB5IHoiOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNvbnN0IGNoYXIgKnMyMCA9ICJhIGIgYyBGU0lc dTIwNjggMSAyIDMgUERJXHUyMDY5IHggeSB6IjsKPiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVk IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyt9Cj4gKysKPiArK3ZvaWQKPiArK2cy ICgpCj4gKyt7Cj4gKyvCoCBjb25zdCBjaGFyIGMxID0gJ1x1MjAyYSc7Cj4gKysvKiB7IGRnLXdh cm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25z dCBjaGFyIGMyID0gJ1x1MjAyQSc7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGMzID0gJ1x1MjAyYic7 Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCj4gKyvCoCBjb25zdCBjaGFyIGM0ID0gJ1x1MjAyQic7Cj4gKysvKiB7IGRnLXdhcm5pbmcg InVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFy IGM1ID0gJ1x1MjAyZCc7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGM2ID0gJ1x1MjAyRCc7Cj4gKysv KiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4g KyvCoCBjb25zdCBjaGFyIGM3ID0gJ1x1MjAyZSc7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFp cmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGM4ID0g J1x1MjAyRSc7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyIGM5ID0gJ1x1MjA2Nic7Cj4gKysvKiB7IGRn LXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBj b25zdCBjaGFyIGMxMCA9ICdcdTIwNjcnOwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciBjMTEgPSAnXHUy MDY4JzsKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0g Li0xIH0gKi8KPiArK30KPiArKwo+ICsraW50IGHigKpi4oCsYzsKPiArKy8qIHsgZGctYm9ndXMg InVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgYeKAq2LigKxj Owo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0g Ki8KPiArK2ludCBh4oCtYuKArGM7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsraW50IGHigK5i4oCsYzsKPiArKy8qIHsgZGctYm9n dXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgYeKBpmLi galjOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KPiArK2ludCBh4oGnYuKBqWM7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsraW50IGHigahi4oGpYzsKPiArKy8qIHsgZGct Ym9ndXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgQeKA rFg7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsraW50IEFcdTIwMmNZOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBBXHUyMDJDWTI7Cj4gKysvKiB7IGRnLWJv Z3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrCj4gKytpbnQg ZFx1MjAyYWVcdTIwMmNmOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBkXHUyMDJBZVx1MjAyY2YyOwo+ICsrLyogeyBkZy1i b2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBkXHUy MDJiZVx1MjAyY2Y7Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0q LSogfSAuLTEgfSAqLwo+ICsraW50IGRcdTIwMkJlXHUyMDJjZjI7Cj4gKysvKiB7IGRnLWJvZ3Vz ICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsraW50IGRcdTIwMmRl XHUyMDJjZjsKPiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCj4gKytpbnQgZFx1MjAyRGVcdTIwMmNmMjsKPiArKy8qIHsgZGctYm9ndXMgInVu cGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgZFx1MjAyZWVcdTIw MmNmOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KPiArK2ludCBkXHUyMDJFZVx1MjAyY2YyOwo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWly ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBkXHUyMDY2ZVx1MjA2OWY7 Cj4gKysvKiB7IGRnLWJvZ3VzICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAq Lwo+ICsraW50IGRcdTIwNjdlXHUyMDY5ZjsKPiArKy8qIHsgZGctYm9ndXMgInVucGFpcmVkIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgZFx1MjA2OGVcdTIwNjlmOwo+ICsr LyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiAr K2ludCBYXHUyMDY5Owo+ICsrLyogeyBkZy1ib2d1cyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xIH0gKi8KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L1diaWRpLWNoYXJzLTYuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hh cnMtNi5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTYu Y8KgwqDCoMKgwqDCoMKgMTk2OS0xMi0zMQo+IDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAo+ICsr KysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy02LmPCoMKgwqDCoMKg wqDCoDIwMjEtMTItMjUKPiAwMTozNjoyMi4wNTIwMTg0ODkgLTA4MDAKPiArQEAgLTAsMCArMSwx NTUgQEAKPiArKy8qIFBSIHByZXByb2Nlc3Nvci8xMDMwMjYgKi8KPiArKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCj4gKysvKiB7IGRnLW9wdGlvbnMgIi1XYmlkaS1jaGFycz11bnBhaXJlZCIgfSAq Lwo+ICsrLyogVGVzdCBuZXN0aW5nIG9mIGJpZGkgY2hhcnMgaW4gdmFyaW91cyBjb250ZXh0cy7C oCAqLwo+ICsrCj4gKysvKiBUZXJtaW5hdGVkIGJ5IHRoZSB3cm9uZyBjaGFyOsKgICovCj4gKysv KiBhIGIgYyBMUkXigKogMSAyIDMgUERJ4oGpIHggeSB6ICovCj4gKysvKiB7IGRnLXdhcm5pbmcg InVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvKiBhIGIgYyBSTEXi gKsgMSAyIDMgUERJ4oGpIHggecKgIHoqLwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLyogYSBiIGMgTFJP4oCtIDEgMiAzIFBE SeKBqSB4IHkgeiAqLwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLwo+ICsrLyogYSBiIGMgUkxP4oCuIDEgMiAzIFBESeKBqSB4IHkgeiAq Lwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsrLyogYSBiIGMgTFJJ4oGmIDEgMiAzIFBERuKArCB4IHkgeiAqLwo+ICsrLyogeyBk Zy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLyog YSBiIGMgUkxJ4oGnIDEgMiAzIFBERuKArCB4IHkgeiAqLwo+ICsrLyogeyBkZy13YXJuaW5nICJ1 bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLyogYSBiIGMgRlNJ4oGo IDEgMiAzIFBERuKArCB4IHnCoCB6Ki8KPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKwo+ICsrLyogTFJF4oCqIFBERuKArCAqLwo+ ICsrLyogTFJF4oCqIExSReKAqiBQREbigKwgUERG4oCsICovCj4gKysvKiBQREbigKwgTFJF4oCq IFBERuKArCAqLwo+ICsrLyogTFJF4oCqIFBERuKArCBMUkXigKogUERG4oCsICovCj4gKysvKiBM UkXigKogTFJF4oCqIFBERuKArCAqLwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLyogUERG4oCsIExSReKAqiAqLwo+ICsrLyog eyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsr Cj4gKysvLyBhIGIgYyBMUkXigKogMSAyIDMgUERJ4oGpIHggeSB6Cj4gKysvKiB7IGRnLXdhcm5p bmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvLyBhIGIgYyBS TEXigKsgMSAyIDMgUERJ4oGpIHggecKgIHoqLwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJl ZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLy8gYSBiIGMgTFJP4oCtIDEgMiAz IFBESeKBqSB4IHkgeiAKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KPiArKy8vIGEgYiBjIFJMT+KAriAxIDIgMyBQREnigakgeCB5IHog Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCj4gKysvLyBhIGIgYyBMUknigaYgMSAyIDMgUERG4oCsIHggeSB6IAo+ICsrLyogeyBkZy13 YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLy8gYSBi IGMgUkxJ4oGnIDEgMiAzIFBERuKArCB4IHkgeiAKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWly ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKy8vIGEgYiBjIEZTSeKBqCAxIDIg MyBQREbigKwgeCB5wqAgego+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrCj4gKysvLyBMUkXigKogUERG4oCsIAo+ICsrLy8gTFJF 4oCqIExSReKAqiBQREbigKwgUERG4oCsCj4gKysvLyBQREbigKwgTFJF4oCqIFBERuKArAo+ICsr Ly8gTFJF4oCqIFBERuKArCBMUkXigKogUERG4oCsCj4gKysvLyBMUkXigKogTFJF4oCqIFBERuKA rAo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsrLy8gUERG4oCsIExSReKAqgo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrCj4gKyt2b2lkCj4gKytnMSAoKQo+ICsr ewo+ICsrwqAgY29uc3QgY2hhciAqczEgPSAiYSBiIGMgTFJF4oCqIDEgMiAzIFBESeKBqSB4IHkg eiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMiA9ICJhIGIgYyBMUkVcdTIwMmEgMSAyIDMgUERJ XHUyMDY5IHggeSB6IjsKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0 ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNvbnN0IGNoYXIgKnMzID0gImEgYiBjIFJMReKAqyAx IDIgMyBQREnigakgeCB5ICI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRh cmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzNCA9ICJhIGIgYyBSTEVc dTIwMmIgMSAyIDMgUERJXHUyMDY5IHggeSB6IjsKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWly ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNvbnN0IGNoYXIgKnM1ID0g ImEgYiBjIExST+KArSAxIDIgMyBQREnigakgeCB5IHoiOwo+ICsrLyogeyBkZy13YXJuaW5nICJ1 bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAq czYgPSAiYSBiIGMgTFJPXHUyMDJkIDEgMiAzIFBESVx1MjA2OSB4IHkgeiI7Cj4gKysvKiB7IGRn LXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBj b25zdCBjaGFyICpzNyA9ICJhIGIgYyBSTE/igK4gMSAyIDMgUERJ4oGpIHggeSB6IjsKPiArKy8q IHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiAr K8KgIGNvbnN0IGNoYXIgKnM4ID0gImEgYiBjIFJMT1x1MjAyZSAxIDIgMyBQRElcdTIwNjkgeCB5 IHoiOwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczkgPSAiYSBiIGMgTFJJ4oGmIDEgMiAzIFBERuKA rCB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMTAgPSAiYSBiIGMgTFJJXHUyMDY2IDEg MiAzIFBERlx1MjAyYyB4IHkgeiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMTEgPSAiYSBiIGMg UkxJ4oGnIDEgMiAzIFBERuKArCB4IHkgelwKPiArK8KgwqDCoCAiOwo+ICsrLyogeyBkZy13YXJu aW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTIgfSAqLwo+ICsrwqAgY29uc3Qg Y2hhciAqczEyID0gImEgYiBjIFJMSVx1MjA2NyAxIDIgMyBQREZcdTIwMmMgeCB5IHoiOwo+ICsr LyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ ICsrwqAgY29uc3QgY2hhciAqczEzID0gImEgYiBjIEZTSeKBqCAxIDIgMyBQREbigKwgeCB5IHoi Owo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczE0ID0gImEgYiBjIEZTSVx1MjA2OCAxIDIgMyBQREZc dTIwMmMgeCB5IHoiOwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczE1ID0gIlBERuKArCBMUkXigKoi Owo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsrwqAgY29uc3QgY2hhciAqczE2ID0gIlBERlx1MjAyYyBMUkVcdTIwMmEiOwo+ICsr LyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ ICsrwqAgY29uc3QgY2hhciAqczE3ID0gIkxSReKAqiBQREbigKwiOwo+ICsrwqAgY29uc3QgY2hh ciAqczE4ID0gIkxSRVx1MjAyYSBQREZcdTIwMmMiOwo+ICsrwqAgY29uc3QgY2hhciAqczE5ID0g IkxSReKAqiBMUkXigKogUERG4oCsIFBERuKArCI7Cj4gKyvCoCBjb25zdCBjaGFyICpzMjAgPSAi TFJFXHUyMDJhIExSRVx1MjAyYSBQREZcdTIwMmMgUERGXHUyMDJjIjsKPiArK8KgIGNvbnN0IGNo YXIgKnMyMSA9ICJQREbigKwgTFJF4oCqIFBERuKArCI7Cj4gKyvCoCBjb25zdCBjaGFyICpzMjIg PSAiUERGXHUyMDJjIExSRVx1MjAyYSBQREZcdTIwMmMiOwo+ICsrwqAgY29uc3QgY2hhciAqczIz ID0gIkxSReKAqiBMUkXigKogUERG4oCsIjsKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQi ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK8KgIGNvbnN0IGNoYXIgKnMyNCA9ICJM UkVcdTIwMmEgTFJFXHUyMDJhIFBERlx1MjAyYyI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFp cmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMjUg PSAiUERG4oCsIExSReKAqiI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRh cmdldCAqLSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMjYgPSAiUERGXHUyMDJj IExSRVx1MjAyYSI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMjcgPSAiUERG4oCsIExSRVx1MjAy YSI7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCj4gKyvCoCBjb25zdCBjaGFyICpzMjggPSAiUERGXHUyMDJjIExSReKAqiI7Cj4gKysv KiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4g Kyt9Cj4gKysKPiArK2ludCBhTFJF4oCqYlBESeKBqTsKPiArKy8qIHsgZGctd2FybmluZyAidW5w YWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBBXHUyMDJhQlx1MjA2 OUM7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCj4gKytpbnQgYVJMReKAq2JQREnigak7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFp cmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgYVx1MjAyYkJcdTIwNjlj Owo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwo+ICsraW50IGFMUk/igK1iUERJ4oGpOwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJl ZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsraW50IGFcdTIwMmRiXHUyMDY5YzI7 Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCj4gKytpbnQgYVJMT+KArmJQREnigak7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVk IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgYVx1MjAyZWJcdTIwNjk7Cj4g KysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKytpbnQgYUxSSeKBpmJQREbigKw7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgYVx1MjA2NmJcdTIwMmM7Cj4gKysv KiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4g KytpbnQgYVJMSeKBp2JQREbigKxjCj4gKys7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVk IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMiB9ICovCj4gKytpbnQgYVx1MjA2N2JcdTIwMmM7Cj4g KysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKytpbnQgYUZTSeKBqGJQREbigKw7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgYVx1MjA2OGJcdTIwMmM7Cj4gKysv KiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4g KytpbnQgYUZTSeKBqGJQRFx1MjAyQzsKPiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBhRlNJXHUyMDY4YlBERuKArF87Cj4g KysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov Cj4gKytpbnQgYUxSReKAqmJQREbigKxiOyAKPiArK2ludCBBXHUyMDJhQlx1MjAyYzsKPiArK2lu dCBhX0xSReKAql9MUkXigKpfYl9QREbigKxfUERG4oCsOwo+ICsraW50IEFcdTIwMmFBXHUyMDJh Qlx1MjAyY0JcdTIwMmM7Cj4gKytpbnQgYVBERuKArGJMUkVhZFBERuKArDsKPiArK2ludCBhX1x1 MjAyQ19cdTIwMmFfXHUyMDJjOwo+ICsraW50IGFfTFJF4oCqX2JfUERG4oCsX2NfTFJF4oCqX1BE RuKArDsKPiArK2ludCBhX1x1MjAyYV9cdTIwMmNfXHUyMDJhX1x1MjAyY187Cj4gKytpbnQgYV9M UkXigKpfYl9QREbigKxfY19MUkXigKo7Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgYV9cdTIwMmFfXHUyMDJjX1x1MjAy YV87Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCj4gK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1j aGFycy03LmMKPiBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTcuYwo+ ICstLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy03LmPCoMKgwqDC oMKgwqDCoDE5NjktMTItMzEKPiAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKPiArKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vV2JpZGktY2hhcnMtNy5jwqDCoMKgwqDCoMKgwqAyMDIx LTEyLTI1Cj4gMDE6MzY6MjIuMDUyMDE4NDg5IC0wODAwCj4gK0BAIC0wLDAgKzEsOSBAQAo+ICsr LyogUFIgcHJlcHJvY2Vzc29yLzEwMzAyNiAqLwo+ICsrLyogeyBkZy1kbyBjb21waWxlIH0gKi8K PiArKy8qIHsgZGctb3B0aW9ucyAiLVdiaWRpLWNoYXJzPWFueSIgfSAqLwo+ICsrLyogVGVzdCB3 ZSBpZ25vcmUgVUNOcyBpbiBjb21tZW50cy7CoCAqLwo+ICsrCj4gKysvLyBhIGIgYyBcdTIwMmEg MSAyIDMKPiArKy8vIGEgYiBjIFx1MjAyQSAxIDIgMwo+ICsrLyogYSBiIGMgXHUyMDJhIDEgMiAz ICovCj4gKysvKiBhIGIgYyBcdTIwMkEgMSAyIDMgKi8KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTguYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vV2JpZGktY2hhcnMtOC5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL1diaWRpLWNoYXJzLTguY8KgwqDCoMKgwqDCoMKgMTk2OS0xMi0zMQo+IDE2OjAwOjAwLjAw MDAwMDAwMCAtMDgwMAo+ICsrKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1j aGFycy04LmPCoMKgwqDCoMKgwqDCoDIwMjEtMTItMjUKPiAwMTozNjoyMi4wNTIwMTg0ODkgLTA4 MDAKPiArQEAgLTAsMCArMSwxMyBAQAo+ICsrLyogUFIgcHJlcHJvY2Vzc29yLzEwMzAyNiAqLwo+ ICsrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KPiArKy8qIHsgZGctb3B0aW9ucyAiLVdiaWRpLWNo YXJzPWFueSIgfSAqLwo+ICsrLyogVGVzdCBcdSB2cyBcVS7CoCAqLwo+ICsrCj4gKytpbnQgYV9c dTIwMkE7Cj4gKysvKiB7IGRnLXdhcm5pbmcgIlVcXCsyMDJBIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCj4gKytpbnQgYV9cdTIwMmFfMjsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIw MkEiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2ludCBhX1xVMDAwMDIwMkFfMzsK PiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkEiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0g Ki8KPiArK2ludCBhX1xVMDAwMDIwMmFfNDsKPiArKy8qIHsgZGctd2FybmluZyAiVVxcKzIwMkEi ICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLTkuYwo+IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vV2JpZGktY2hhcnMtOS5jCj4gKy0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L1diaWRpLWNoYXJzLTkuY8KgwqDCoMKgwqDCoMKgMTk2OS0xMi0zMQo+IDE2OjAwOjAwLjAwMDAw MDAwMCAtMDgwMAo+ICsrKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFy cy05LmPCoMKgwqDCoMKgwqDCoDIwMjEtMTItMjUKPiAwMTozNjoyMi4wNTIwMTg0ODkgLTA4MDAK PiArQEAgLTAsMCArMSwyOSBAQAo+ICsrLyogUFIgcHJlcHJvY2Vzc29yLzEwMzAyNiAqLwo+ICsr LyogeyBkZy1kbyBjb21waWxlIH0gKi8KPiArKy8qIHsgZGctb3B0aW9ucyAiLVdiaWRpLWNoYXJz PXVucGFpcmVkIiB9ICovCj4gKysvKiBUZXN0IHRoYXQgd2UgcHJvcGVybHkgc2VwYXJhdGUgYmlk aSBjb250ZXh0cwo+IChjb21tZW50L2lkZW50aWZpZXIvY2hhcmFjdGVyCj4gKyvCoMKgIGNvbnN0 YW50L3N0cmluZyBsaXRlcmFsKS7CoCAqLwo+ICsrCj4gKysvKiBMUkUgLT7igKo8LSAqLyBpbnQg cGRmX1x1MjAyY18xOwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLwo+ICsrLyogUkxFIC0+4oCrPC0gKi8gaW50IHBkZl9cdTIwMmNfMjsK PiArKy8qIHsgZGctd2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0g Ki8KPiArKy8qIExSTyAtPuKArTwtICovIGludCBwZGZfXHUyMDJjXzM7Cj4gKysvKiB7IGRnLXdh cm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysvKiBSTE8g LT7igK48LSAqLyBpbnQgcGRmX1x1MjAyY180Owo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJl ZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLyogTFJJIC0+4oGmPC0qLyBpbnQg cGRpX1x1MjA2OV8xOwo+ICsrLyogeyBkZy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQg Ki0qLSogfSAuLTEgfSAqLwo+ICsrLyogUkxJIC0+4oGnPC0gKi8gaW50IHBkaV9cdTIwNjlfMTI7 Cj4gKysvKiB7IGRnLXdhcm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCj4gKysvKiBGU0kgLT7igag8LSAqLyBpbnQgcGRpX1x1MjA2OV8zOwo+ICsrLyogeyBkZy13 YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrCj4gKytj b25zdCBjaGFyICpzMSA9ICJMUkVcdTIwMmEiOyAvKiBQREYgLT7igKw8LSAqLwo+ICsrLyogeyBk Zy13YXJuaW5nICJ1bnBhaXJlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrLyog TFJFIC0+4oCqPC0gKi8gY29uc3QgY2hhciAqczIgPSAiUERGXHUyMDJjIjsKPiArKy8qIHsgZGct d2FybmluZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArK2NvbnN0 IGNoYXIgKnMzID0gIkxSRVx1MjAyYSI7IGludCBwZGZfXHUyMDJjXzU7Cj4gKysvKiB7IGRnLXdh cm5pbmcgInVucGFpcmVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKytpbnQgbHJl X1x1MjAyYTsgY29uc3QgY2hhciAqczQgPSAiUERGXHUyMDJjIjsKPiArKy8qIHsgZGctd2Fybmlu ZyAidW5wYWlyZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KPiArZGlmZiAtLWdpdCBh L2xpYmNwcC9pbmNsdWRlL2NwcGxpYi5oIGIvbGliY3BwL2luY2x1ZGUvY3BwbGliLmgKPiArLS0t IGEvbGliY3BwL2luY2x1ZGUvY3BwbGliLmjCoMKgMjAyMS0xMi0yNSAwMTozNTozMy4yODg4ODM0 MTcgLTA4MDAKPiArKysrIGIvbGliY3BwL2luY2x1ZGUvY3BwbGliLmjCoMKgMjAyMS0xMi0yNSAw MTozNjoyMi4wNTIwMTg0ODkgLTA4MDAKPiArQEAgLTMwOCw2ICszMDgsMTcgQEAgZW51bSBjcHBf bm9ybWFsaXplX2xldmVsIHsKPiArwqDCoCBub3JtYWxpemVkX25vbmUKPiArIH07Cj4gKyAKPiAr Ky8qIFRoZSBwb3NzaWJsZSBiaWRpcmVjdGlvbmFsIGNvbnRyb2wgY2hhcmFjdGVycyBjaGVja2lu ZyBsZXZlbHMsCj4gZnJvbSBsZWFzdAo+ICsrwqDCoCByZXN0cmljdGl2ZSB0byBtb3N0LsKgICov Cj4gKytlbnVtIGNwcF9iaWRpcmVjdGlvbmFsX2xldmVsIHsKPiArK8KgIC8qIE5vIGNoZWNraW5n LsKgICovCj4gKyvCoCBiaWRpcmVjdGlvbmFsX25vbmUsCj4gKyvCoCAvKiBPbmx5IGRldGVjdCB1 bnBhaXJlZCB1c2VzIG9mIGJpZGlyZWN0aW9uYWwgY29udHJvbAo+IGNoYXJhY3RlcnMuwqAgKi8K PiArK8KgIGJpZGlyZWN0aW9uYWxfdW5wYWlyZWQsCj4gKyvCoCAvKiBEZXRlY3QgYW55IHVzZSBv ZiBiaWRpcmVjdGlvbmFsIGNvbnRyb2wgY2hhcmFjdGVycy7CoCAqLwo+ICsrwqAgYmlkaXJlY3Rp b25hbF9hbnkKPiArK307Cj4gKysKPiArIC8qIFRoaXMgc3RydWN0dXJlIGlzIG5lc3RlZCBpbnNp ZGUgc3RydWN0IGNwcF9yZWFkZXIsIGFuZAo+ICvCoMKgwqAgY2FycmllcyBhbGwgdGhlIG9wdGlv bnMgdmlzaWJsZSB0byB0aGUgY29tbWFuZCBsaW5lLsKgICovCj4gKyBzdHJ1Y3QgY3BwX29wdGlv bnMKPiArQEAgLTUxNSw2ICs1MjYsMTAgQEAgc3RydWN0IGNwcF9vcHRpb25zCj4gK8KgwqAgLyog VHJ1ZSBpZiB3YXJuIGFib3V0IGRpZmZlcmVuY2VzIGJldHdlZW4gQysrOTggYW5kIEMrKzExLsKg ICovCj4gK8KgwqAgYm9vbCBjcHBfd2Fybl9jeHgxMV9jb21wYXQ7Cj4gKyAKPiArK8KgIC8qIE5v bnplcm8gaWYgYmlkaXJlY3Rpb25hbCBjb250cm9sIGNoYXJhY3RlcnMgY2hlY2tpbmcgaXMgb24u wqAKPiBTZWUgZW51bQo+ICsrwqDCoMKgwqAgY3BwX2JpZGlyZWN0aW9uYWxfbGV2ZWwuwqAgKi8K PiArK8KgIHVuc2lnbmVkIGNoYXIgY3BwX3dhcm5fYmlkaXJlY3Rpb25hbDsKPiArKwo+ICvCoMKg IC8qIERlcGVuZGVuY3kgZ2VuZXJhdGlvbi7CoCAqLwo+ICvCoMKgIHN0cnVjdAo+ICvCoMKgIHsK PiArQEAgLTYxMyw3ICs2MjgsOCBAQCBlbnVtIGNwcF93YXJuaW5nX3JlYXNvbiB7Cj4gK8KgwqAg Q1BQX1dfQzkwX0M5OV9DT01QQVQsCj4gK8KgwqAgQ1BQX1dfQzExX0MyWF9DT01QQVQsCj4gK8Kg wqAgQ1BQX1dfQ1hYMTFfQ09NUEFULAo+ICstwqAgQ1BQX1dfRVhQQU5TSU9OX1RPX0RFRklORUQK PiArK8KgIENQUF9XX0VYUEFOU0lPTl9UT19ERUZJTkVELAo+ICsrwqAgQ1BQX1dfQklESVJFQ1RJ T05BTAo+ICsgfTsKPiArIAo+ICsgLyogQ2FsbGJhY2sgZm9yIGhlYWRlciBsb29rdXAgZm9yIEhF QURFUiwgd2hpY2ggaXMgdGhlIG5hbWUgb2YgYQo+ICtkaWZmIC0tZ2l0IGEvbGliY3BwL2luaXQu YyBiL2xpYmNwcC9pbml0LmMKPiArLS0tIGEvbGliY3BwL2luaXQuY8KgwqDCoMKgMjAyMS0xMi0y NSAwMToyOToxMi45MzEzMTcxMDcgLTA4MDAKPiArKysrIGIvbGliY3BwL2luaXQuY8KgwqDCoMKg MjAyMS0xMi0yNSAwMTozNjoyMi4wNTIwMTg0ODkgLTA4MDAKPiArQEAgLTIxNSw2ICsyMTUsNyBA QCBjcHBfY3JlYXRlX3JlYWRlciAoZW51bSBjX2xhbmcgbGFuZywgY3BwCj4gK8KgwqDCoMKgwqDC oCA9IEVOQUJMRV9DQU5PTklDQUxfU1lTVEVNX0hFQURFUlM7Cj4gK8KgwqAgQ1BQX09QVElPTiAo cGZpbGUsIGV4dF9udW1lcmljX2xpdGVyYWxzKSA9IDE7Cj4gK8KgwqAgQ1BQX09QVElPTiAocGZp bGUsIHdhcm5fZGF0ZV90aW1lKSA9IDA7Cj4gKyvCoCBDUFBfT1BUSU9OIChwZmlsZSwgY3BwX3dh cm5fYmlkaXJlY3Rpb25hbCkgPQo+IGJpZGlyZWN0aW9uYWxfdW5wYWlyZWQ7Cj4gKyAKPiArwqDC oCAvKiBEZWZhdWx0IENQUCBhcml0aG1ldGljIHRvIHNvbWV0aGluZyBzZW5zaWJsZSBmb3IgdGhl IGhvc3QgZm9yCj4gdGhlCj4gK8KgwqDCoMKgwqAgYmVuZWZpdCBvZiBkdW1iIHVzZXJzIGxpa2Ug Zml4LWhlYWRlci7CoCAqLwo+ICtkaWZmIC0tZ2l0IGEvbGliY3BwL2ludGVybmFsLmggYi9saWJj cHAvaW50ZXJuYWwuaAo+ICstLS0gYS9saWJjcHAvaW50ZXJuYWwuaMKgwqDCoMKgwqDCoMKgwqAy MDIxLTEyLTI1IDAxOjM1OjMzLjI4ODg4MzQxNyAtMDgwMAo+ICsrKysgYi9saWJjcHAvaW50ZXJu YWwuaMKgwqDCoMKgwqDCoMKgwqAyMDIxLTEyLTI1IDAxOjM2OjIyLjA1MjAxODQ4OSAtMDgwMAo+ ICtAQCAtNTgxLDYgKzU4MSwxMCBAQCBzdHJ1Y3QgY3BwX3JlYWRlcgo+ICvCoMKgIC8qIElmIG5v bi16ZXJvLCB0aGUgbGV4ZXIgd2lsbCB1c2UgdGhpcyBsb2NhdGlvbiBmb3IgdGhlIG5leHQKPiB0 b2tlbgo+ICvCoMKgwqDCoMKgIGluc3RlYWQgb2YgZ2V0dGluZyBhIGxvY2F0aW9uIGZyb20gdGhl IGxpbmVtYXAuwqAgKi8KPiArwqDCoCBsb2NhdGlvbl90IGZvcmNlZF90b2tlbl9sb2NhdGlvbjsK PiArK8KgIGJvb2wgd2Fybl9iaWRpX3AgKCkgY29uc3QKPiArK8KgIHsKPiArK8KgwqDCoCByZXR1 cm4gQ1BQX09QVElPTiAodGhpcywgY3BwX3dhcm5fYmlkaXJlY3Rpb25hbCkgIT0KPiBiaWRpcmVj dGlvbmFsX25vbmU7Cj4gKyvCoCB9Cj4gKyB9Owo+ICsgCj4gKyAvKiBDaGFyYWN0ZXIgY2xhc3Nl cy7CoCBCYXNlZCBvbiB0aGUgbW9yZSBwcmltaXRpdmUgbWFjcm9zIGluIHNhZmUtCj4gY3R5cGUu aC4KPiArZGlmZiAtLWdpdCBhL2xpYmNwcC9sZXguYyBiL2xpYmNwcC9sZXguYwo+ICstLS0gYS9s aWJjcHAvbGV4LmPCoMKgwqDCoMKgMjAyMS0xMi0yNSAwMTozNTozMy4yODg4ODM0MTcgLTA4MDAK PiArKysrIGIvbGliY3BwL2xleC5jwqDCoMKgwqDCoDIwMjEtMTItMjUgMDE6MzY6MjIuMDUyMDE4 NDg5IC0wODAwCj4gK0BAIC0xMTY0LDYgKzExNjQsMzI0IEBAIF9jcHBfcHJvY2Vzc19saW5lX25v dGVzIChjcHBfcmVhZGVyICpwZmkKPiArwqDCoMKgwqAgfQo+ICsgfQo+ICsgCj4gKytuYW1lc3Bh Y2UgYmlkaSB7Cj4gKyvCoCBlbnVtIGNsYXNzIGtpbmQgewo+ICsrwqDCoMKgIE5PTkUsIExSRSwg UkxFLCBMUk8sIFJMTywgTFJJLCBSTEksIEZTSSwgUERGLCBQREksIExUUiwgUlRMCj4gKyvCoCB9 Owo+ICsrCj4gKyvCoCAvKiBBbGwgdGhlIFVURi04IGVuY29kaW5ncyBvZiBiaWRpIGNoYXJhY3Rl cnMgc3RhcnQgd2l0aCBFMi7CoCAqLwo+ICsrwqAgY29uc3RleHByIHVjaGFyIHV0Zjhfc3RhcnQg PSAweGUyOwo+ICsrCj4gKyvCoCAvKiBBIHZlY3RvciBob2xkaW5nIGN1cnJlbnRseSBvcGVuIGJp ZGkgY29udGV4dHMuwqAgV2UgdXNlIGEgY2hhcgo+IGZvcgo+ICsrwqDCoMKgwqAgZWFjaCBjb250 ZXh0LCBpdHMgTFNCIGlzIDEgaWYgaXQgcmVwcmVzZW50cyBhIFBERiBjb250ZXh0LCAwCj4gaWYg aXQKPiArK8KgwqDCoMKgIHJlcHJlc2VudHMgYSBQREkgY29udGV4dC7CoCBUaGUgbmV4dCBiaXQg aXMgMSBpZiB0aGlzIGNvbnRleHQKPiB3YXMgb3Blbgo+ICsrwqDCoMKgwqAgYnkgYSBiaWRpIGNo YXJhY3RlciB3cml0dGVuIGFzIGEgVUNOLCBhbmQgMCB3aGVuIGl0IHdhcyBVVEYtCj4gOC7CoCAq Lwo+ICsrwqAgc2VtaV9lbWJlZGRlZF92ZWMgPHVuc2lnbmVkIGNoYXIsIDE2PiB2ZWM7Cj4gKysK PiArK8KgIC8qIENsb3NlIHRoZSB3aG9sZSBjb21tZW50L2lkZW50aWZpZXIvc3RyaW5nIGxpdGVy YWwvY2hhcmFjdGVyCj4gY29uc3RhbnQKPiArK8KgwqDCoMKgIGNvbnRleHQuwqAgKi8KPiArK8Kg IHZvaWQgb25fY2xvc2UgKCkKPiArK8KgIHsKPiArK8KgwqDCoCB2ZWMudHJ1bmNhdGUgKDApOwo+ ICsrwqAgfQo+ICsrCj4gKyvCoCAvKiBQb3AgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgdmVjdG9y LsKgICovCj4gKyvCoCB2b2lkIHBvcCAoKQo+ICsrwqAgewo+ICsrwqDCoMKgIHVuc2lnbmVkIGlu dCBsZW4gPSB2ZWMuY291bnQgKCk7Cj4gKyvCoMKgwqAgZ2NjX2NoZWNraW5nX2Fzc2VydCAobGVu ID4gMCk7Cj4gKyvCoMKgwqAgdmVjLnRydW5jYXRlIChsZW4gLSAxKTsKPiArK8KgIH0KPiArKwo+ ICsrwqAgLyogUmV0dXJuIHRoZSBjb250ZXh0IG9mIHRoZSBJdGggZWxlbWVudC7CoCAqLwo+ICsr wqAga2luZCBjdHhfYXQgKHVuc2lnbmVkIGludCBpKQo+ICsrwqAgewo+ICsrwqDCoMKgIHJldHVy biAodmVjW2ldICYgMSkgPyBraW5kOjpQREYgOiBraW5kOjpQREk7Cj4gKyvCoCB9Cj4gKysKPiAr K8KgIC8qIFJldHVybiB3aGljaCBjb250ZXh0IGlzIGN1cnJlbnRseSBvcGVuZWQuwqAgKi8KPiAr K8KgIGtpbmQgY3VycmVudF9jdHggKCkKPiArK8KgIHsKPiArK8KgwqDCoCB1bnNpZ25lZCBpbnQg bGVuID0gdmVjLmNvdW50ICgpOwo+ICsrwqDCoMKgIGlmIChsZW4gPT0gMCkKPiArK8KgwqDCoMKg wqAgcmV0dXJuIGtpbmQ6Ok5PTkU7Cj4gKyvCoMKgwqAgcmV0dXJuIGN0eF9hdCAobGVuIC0gMSk7 Cj4gKyvCoCB9Cj4gKysKPiArK8KgIC8qIFJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IGNvbnRl eHQgY29tZXMgZnJvbSBhIFVDTiBvcmlnaW4sCj4gdGhhdCBpcywKPiArK8KgwqDCoMKgIHRoZSBi aWRpIGNoYXIgd2hpY2ggc3RhcnRlZCB0aGlzIGJpZGkgY29udGV4dCB3YXMgd3JpdHRlbiBhcyBh Cj4gVUNOLsKgICovCj4gKyvCoCBib29sIGN1cnJlbnRfY3R4X3Vjbl9wICgpCj4gKyvCoCB7Cj4g KyvCoMKgwqAgdW5zaWduZWQgaW50IGxlbiA9IHZlYy5jb3VudCAoKTsKPiArK8KgwqDCoCBnY2Nf Y2hlY2tpbmdfYXNzZXJ0IChsZW4gPiAwKTsKPiArK8KgwqDCoCByZXR1cm4gKHZlY1tsZW4gLSAx XSA+PiAxKSAmIDE7Cj4gKyvCoCB9Cj4gKysKPiArK8KgIC8qIFdlJ3ZlIHJlYWQgYSBiaWRpIGNo YXIsIHVwZGF0ZSB0aGUgY3VycmVudCB2ZWN0b3IgYXMKPiBuZWNlc3NhcnkuwqAgKi8KPiArK8Kg IHZvaWQgb25fY2hhciAoa2luZCBrLCBib29sIHVjbl9wKQo+ICsrwqAgewo+ICsrwqDCoMKgIHN3 aXRjaCAoaykKPiArK8KgwqDCoMKgwqAgewo+ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OkxSRToK PiArK8KgwqDCoMKgwqAgY2FzZSBraW5kOjpSTEU6Cj4gKyvCoMKgwqDCoMKgIGNhc2Uga2luZDo6 TFJPOgo+ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OlJMTzoKPiArK8KgwqDCoMKgwqDCoHZlYy5w dXNoICh1Y25fcCA/IDN1IDogMXUpOwo+ICsrwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyvCoMKgwqDC oMKgIGNhc2Uga2luZDo6TFJJOgo+ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OlJMSToKPiArK8Kg wqDCoMKgwqAgY2FzZSBraW5kOjpGU0k6Cj4gKyvCoMKgwqDCoMKgwqB2ZWMucHVzaCAodWNuX3Ag PyAydSA6IDB1KTsKPiArK8KgwqDCoMKgwqDCoGJyZWFrOwo+ICsrwqDCoMKgwqDCoCAvKiBQREYg dGVybWluYXRlcyB0aGUgc2NvcGUgb2YgdGhlIGxhc3QgTFJFLCBSTEUsIExSTywgb3IgUkxPCj4g KyvCoMKgwqDCoMKgwqAgd2hvc2Ugc2NvcGUgaGFzIG5vdCB5ZXQgYmVlbiB0ZXJtaW5hdGVkLsKg ICovCj4gKyvCoMKgwqDCoMKgIGNhc2Uga2luZDo6UERGOgo+ICsrwqDCoMKgwqDCoMKgaWYgKGN1 cnJlbnRfY3R4ICgpID09IGtpbmQ6OlBERikKPiArK8KgwqDCoMKgwqDCoMKgIHBvcCAoKTsKPiAr K8KgwqDCoMKgwqDCoGJyZWFrOwo+ICsrwqDCoMKgwqDCoCAvKiBQREkgdGVybWluYXRlcyB0aGUg c2NvcGUgb2YgdGhlIGxhc3QgTFJJLCBSTEksIG9yIEZTSQo+IHdob3NlCj4gKyvCoMKgwqDCoMKg wqAgc2NvcGUgaGFzIG5vdCB5ZXQgYmVlbiB0ZXJtaW5hdGVkLCBhcyB3ZWxsIGFzIHRoZSBzY29w ZXMgb2YKPiArK8KgwqDCoMKgwqDCoCBhbnkgc3Vic2VxdWVudCBMUkVzLCBSTEVzLCBMUk9zLCBv ciBSTE9zIHdob3NlIHNjb3BlcyBoYXZlCj4gbm90Cj4gKyvCoMKgwqDCoMKgwqAgeWV0IGJlZW4g dGVybWluYXRlZC7CoCAqLwo+ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OlBESToKPiArK8KgwqDC oMKgwqDCoGZvciAoaW50IGkgPSB2ZWMuY291bnQgKCkgLSAxOyBpID49IDA7IC0taSkKPiArK8Kg wqDCoMKgwqDCoMKgIGlmIChjdHhfYXQgKGkpID09IGtpbmQ6OlBESSkKPiArK8KgwqDCoMKgwqDC oMKgwqDCoCB7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZlYy50cnVuY2F0ZSAoaSk7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIH0K PiArK8KgwqDCoMKgwqDCoGJyZWFrOwo+ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OkxUUjoKPiAr K8KgwqDCoMKgwqAgY2FzZSBraW5kOjpSVEw6Cj4gKyvCoMKgwqDCoMKgwqAvKiBUaGVzZSBhcmVu J3QgcG9wcGVkIGJ5IGEgUERGL1BESS7CoCAqLwo+ICsrwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyvC oMKgwqDCoMKgIFtbbGlrZWx5XV0gY2FzZSBraW5kOjpOT05FOgo+ICsrwqDCoMKgwqDCoMKgYnJl YWs7Cj4gKyvCoMKgwqDCoMKgIGRlZmF1bHQ6Cj4gKyvCoMKgwqDCoMKgwqBhYm9ydCAoKTsKPiAr K8KgwqDCoMKgwqAgfQo+ICsrwqAgfQo+ICsrCj4gKyvCoCAvKiBSZXR1cm4gYSBkZXNjcmlwdGl2 ZSBzdHJpbmcgZm9yIEsuwqAgKi8KPiArK8KgIGNvbnN0IGNoYXIgKnRvX3N0ciAoa2luZCBrKQo+ ICsrwqAgewo+ICsrwqDCoMKgIHN3aXRjaCAoaykKPiArK8KgwqDCoMKgwqAgewo+ICsrwqDCoMKg wqDCoCBjYXNlIGtpbmQ6OkxSRToKPiArK8KgwqDCoMKgwqDCoHJldHVybiAiVSsyMDJBIChMRUZU LVRPLVJJR0hUIEVNQkVERElORykiOwo+ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OlJMRToKPiAr K8KgwqDCoMKgwqDCoHJldHVybiAiVSsyMDJCIChSSUdIVC1UTy1MRUZUIEVNQkVERElORykiOwo+ ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OkxSTzoKPiArK8KgwqDCoMKgwqDCoHJldHVybiAiVSsy MDJEIChMRUZULVRPLVJJR0hUIE9WRVJSSURFKSI7Cj4gKyvCoMKgwqDCoMKgIGNhc2Uga2luZDo6 UkxPOgo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuICJVKzIwMkUgKFJJR0hULVRPLUxFRlQgT1ZFUlJJ REUpIjsKPiArK8KgwqDCoMKgwqAgY2FzZSBraW5kOjpMUkk6Cj4gKyvCoMKgwqDCoMKgwqByZXR1 cm4gIlUrMjA2NiAoTEVGVC1UTy1SSUdIVCBJU09MQVRFKSI7Cj4gKyvCoMKgwqDCoMKgIGNhc2Ug a2luZDo6UkxJOgo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuICJVKzIwNjcgKFJJR0hULVRPLUxFRlQg SVNPTEFURSkiOwo+ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OkZTSToKPiArK8KgwqDCoMKgwqDC oHJldHVybiAiVSsyMDY4IChGSVJTVCBTVFJPTkcgSVNPTEFURSkiOwo+ICsrwqDCoMKgwqDCoCBj YXNlIGtpbmQ6OlBERjoKPiArK8KgwqDCoMKgwqDCoHJldHVybiAiVSsyMDJDIChQT1AgRElSRUNU SU9OQUwgRk9STUFUVElORykiOwo+ICsrwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OlBESToKPiArK8Kg wqDCoMKgwqDCoHJldHVybiAiVSsyMDY5IChQT1AgRElSRUNUSU9OQUwgSVNPTEFURSkiOwo+ICsr wqDCoMKgwqDCoCBjYXNlIGtpbmQ6OkxUUjoKPiArK8KgwqDCoMKgwqDCoHJldHVybiAiVSsyMDBF IChMRUZULVRPLVJJR0hUIE1BUkspIjsKPiArK8KgwqDCoMKgwqAgY2FzZSBraW5kOjpSVEw6Cj4g KyvCoMKgwqDCoMKgwqByZXR1cm4gIlUrMjAwRiAoUklHSFQtVE8tTEVGVCBNQVJLKSI7Cj4gKyvC oMKgwqDCoMKgIGRlZmF1bHQ6Cj4gKyvCoMKgwqDCoMKgwqBhYm9ydCAoKTsKPiArK8KgwqDCoMKg wqAgfQo+ICsrwqAgfQo+ICsrfQo+ICsrCj4gKysvKiBQYXJzZSBhIHNlcXVlbmNlIG9mIDMgYnl0 ZXMgc3RhcnRpbmcgd2l0aCBQIGFuZCByZXR1cm4gaXRzIGJpZGkKPiBjb2RlLsKgICovCj4gKysK PiArK3N0YXRpYyBiaWRpOjpraW5kCj4gKytnZXRfYmlkaV91dGY4IChjb25zdCB1bnNpZ25lZCBj aGFyICpjb25zdCBwKQo+ICsrewo+ICsrwqAgZ2NjX2NoZWNraW5nX2Fzc2VydCAocFswXSA9PSBi aWRpOjp1dGY4X3N0YXJ0KTsKPiArKwo+ICsrwqAgaWYgKHBbMV0gPT0gMHg4MCkKPiArK8KgwqDC oCBzd2l0Y2ggKHBbMl0pCj4gKyvCoMKgwqDCoMKgIHsKPiArK8KgwqDCoMKgwqAgY2FzZSAweGFh Ogo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6OmtpbmQ6OkxSRTsKPiArK8KgwqDCoMKgwqAg Y2FzZSAweGFiOgo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6OmtpbmQ6OlJMRTsKPiArK8Kg wqDCoMKgwqAgY2FzZSAweGFjOgo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6OmtpbmQ6OlBE RjsKPiArK8KgwqDCoMKgwqAgY2FzZSAweGFkOgo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6 OmtpbmQ6OkxSTzsKPiArK8KgwqDCoMKgwqAgY2FzZSAweGFlOgo+ICsrwqDCoMKgwqDCoMKgcmV0 dXJuIGJpZGk6OmtpbmQ6OlJMTzsKPiArK8KgwqDCoMKgwqAgY2FzZSAweDhlOgo+ICsrwqDCoMKg wqDCoMKgcmV0dXJuIGJpZGk6OmtpbmQ6OkxUUjsKPiArK8KgwqDCoMKgwqAgY2FzZSAweDhmOgo+ ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6OmtpbmQ6OlJUTDsKPiArK8KgwqDCoMKgwqAgZGVm YXVsdDoKPiArK8KgwqDCoMKgwqDCoGJyZWFrOwo+ICsrwqDCoMKgwqDCoCB9Cj4gKyvCoCBlbHNl IGlmIChwWzFdID09IDB4ODEpCj4gKyvCoMKgwqAgc3dpdGNoIChwWzJdKQo+ICsrwqDCoMKgwqDC oCB7Cj4gKyvCoMKgwqDCoMKgIGNhc2UgMHhhNjoKPiArK8KgwqDCoMKgwqDCoHJldHVybiBiaWRp OjpraW5kOjpMUkk7Cj4gKyvCoMKgwqDCoMKgIGNhc2UgMHhhNzoKPiArK8KgwqDCoMKgwqDCoHJl dHVybiBiaWRpOjpraW5kOjpSTEk7Cj4gKyvCoMKgwqDCoMKgIGNhc2UgMHhhODoKPiArK8KgwqDC oMKgwqDCoHJldHVybiBiaWRpOjpraW5kOjpGU0k7Cj4gKyvCoMKgwqDCoMKgIGNhc2UgMHhhOToK PiArK8KgwqDCoMKgwqDCoHJldHVybiBiaWRpOjpraW5kOjpQREk7Cj4gKyvCoMKgwqDCoMKgIGRl ZmF1bHQ6Cj4gKyvCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqAgfQo+ICsrCj4gKyvC oCByZXR1cm4gYmlkaTo6a2luZDo6Tk9ORTsKPiArK30KPiArKwo+ICsrLyogUGFyc2UgYSBVQ04g d2hlcmUgUCBwb2ludHMganVzdCBwYXN0IFx1IG9yIFxVIGFuZCByZXR1cm4gaXRzCj4gYmlkaSBj b2RlLsKgICovCj4gKysKPiArK3N0YXRpYyBiaWRpOjpraW5kCj4gKytnZXRfYmlkaV91Y24gKGNv bnN0IHVuc2lnbmVkIGNoYXIgKnAsIGJvb2wgaXNfVSkKPiArK3sKPiArK8KgIC8qIDYuNC4zIFVu aXZlcnNhbCBDaGFyYWN0ZXIgTmFtZXMKPiArK8KgwqDCoMKgwqAgXHUgaGV4LXF1YWQKPiArK8Kg wqDCoMKgwqAgXFUgaGV4LXF1YWQgaGV4LXF1YWQKPiArK8KgwqDCoMKgIHdoZXJlIFx1bm5ubiBt ZWFucyBcVTAwMDBubm5uLsKgICovCj4gKysKPiArK8KgIGlmIChpc19VKQo+ICsrwqDCoMKgIHsK PiArK8KgwqDCoMKgwqAgaWYgKHBbMF0gIT0gJzAnIHx8IHBbMV0gIT0gJzAnIHx8IHBbMl0gIT0g JzAnIHx8IHBbM10gIT0gJzAnKQo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6OmtpbmQ6Ok5P TkU7Cj4gKyvCoMKgwqDCoMKgIC8qIFNraXAgNEIgc28gd2UgY2FuIHRyZWF0IFx1IGFuZCBcVSB0 aGUgc2FtZSBiZWxvdy7CoCAqLwo+ICsrwqDCoMKgwqDCoCBwICs9IDQ7Cj4gKyvCoMKgwqAgfQo+ ICsrCj4gKyvCoCAvKiBBbGwgY29kZSBwb2ludHMgd2UgYXJlIGxvb2tpbmcgZm9yIHN0YXJ0IHdp dGggMjB4eC7CoCAqLwo+ICsrwqAgaWYgKHBbMF0gIT0gJzInIHx8IHBbMV0gIT0gJzAnKQo+ICsr wqDCoMKgIHJldHVybiBiaWRpOjpraW5kOjpOT05FOwo+ICsrwqAgZWxzZSBpZiAocFsyXSA9PSAn MicpCj4gKyvCoMKgwqAgc3dpdGNoIChwWzNdKQo+ICsrwqDCoMKgwqDCoCB7Cj4gKyvCoMKgwqDC oMKgIGNhc2UgJ2EnOgo+ICsrwqDCoMKgwqDCoCBjYXNlICdBJzoKPiArK8KgwqDCoMKgwqDCoHJl dHVybiBiaWRpOjpraW5kOjpMUkU7Cj4gKyvCoMKgwqDCoMKgIGNhc2UgJ2InOgo+ICsrwqDCoMKg wqDCoCBjYXNlICdCJzoKPiArK8KgwqDCoMKgwqDCoHJldHVybiBiaWRpOjpraW5kOjpSTEU7Cj4g KyvCoMKgwqDCoMKgIGNhc2UgJ2MnOgo+ICsrwqDCoMKgwqDCoCBjYXNlICdDJzoKPiArK8KgwqDC oMKgwqDCoHJldHVybiBiaWRpOjpraW5kOjpQREY7Cj4gKyvCoMKgwqDCoMKgIGNhc2UgJ2QnOgo+ ICsrwqDCoMKgwqDCoCBjYXNlICdEJzoKPiArK8KgwqDCoMKgwqDCoHJldHVybiBiaWRpOjpraW5k OjpMUk87Cj4gKyvCoMKgwqDCoMKgIGNhc2UgJ2UnOgo+ICsrwqDCoMKgwqDCoCBjYXNlICdFJzoK PiArK8KgwqDCoMKgwqDCoHJldHVybiBiaWRpOjpraW5kOjpSTE87Cj4gKyvCoMKgwqDCoMKgIGRl ZmF1bHQ6Cj4gKyvCoMKgwqDCoMKgwqBicmVhazsKPiArK8KgwqDCoMKgwqAgfQo+ICsrwqAgZWxz ZSBpZiAocFsyXSA9PSAnNicpCj4gKyvCoMKgwqAgc3dpdGNoIChwWzNdKQo+ICsrwqDCoMKgwqDC oCB7Cj4gKyvCoMKgwqDCoMKgIGNhc2UgJzYnOgo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6 OmtpbmQ6OkxSSTsKPiArK8KgwqDCoMKgwqAgY2FzZSAnNyc6Cj4gKyvCoMKgwqDCoMKgwqByZXR1 cm4gYmlkaTo6a2luZDo6UkxJOwo+ICsrwqDCoMKgwqDCoCBjYXNlICc4JzoKPiArK8KgwqDCoMKg wqDCoHJldHVybiBiaWRpOjpraW5kOjpGU0k7Cj4gKyvCoMKgwqDCoMKgIGNhc2UgJzknOgo+ICsr wqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6OmtpbmQ6OlBESTsKPiArK8KgwqDCoMKgwqAgZGVmYXVs dDoKPiArK8KgwqDCoMKgwqDCoGJyZWFrOwo+ICsrwqDCoMKgwqDCoCB9Cj4gKyvCoCBlbHNlIGlm IChwWzJdID09ICcwJykKPiArK8KgwqDCoCBzd2l0Y2ggKHBbM10pCj4gKyvCoMKgwqDCoMKgIHsK PiArK8KgwqDCoMKgwqAgY2FzZSAnZSc6Cj4gKyvCoMKgwqDCoMKgIGNhc2UgJ0UnOgo+ICsrwqDC oMKgwqDCoMKgcmV0dXJuIGJpZGk6OmtpbmQ6OkxUUjsKPiArK8KgwqDCoMKgwqAgY2FzZSAnZic6 Cj4gKyvCoMKgwqDCoMKgIGNhc2UgJ0YnOgo+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIGJpZGk6Omtp bmQ6OlJUTDsKPiArK8KgwqDCoMKgwqAgZGVmYXVsdDoKPiArK8KgwqDCoMKgwqDCoGJyZWFrOwo+ ICsrwqDCoMKgwqDCoCB9Cj4gKysKPiArK8KgIHJldHVybiBiaWRpOjpraW5kOjpOT05FOwo+ICsr fQo+ICsrCj4gKysvKiBXZSdyZSBjbG9zaW5nIGEgYmlkaSBjb250ZXh0LCB0aGF0IGlzLCB3ZSd2 ZSBlbmNvdW50ZXJlZCBhCj4gbmV3bGluZSwKPiArK8KgwqAgYXJlIGNsb3NpbmcgYSBDLXN0eWxl IGNvbW1lbnQsIG9yIGFyZSBhdCB0aGUgZW5kIG9mIGEgc3RyaW5nCj4gbGl0ZXJhbCwKPiArK8Kg wqAgY2hhcmFjdGVyIGNvbnN0YW50LCBvciBpZGVudGlmaWVyLsKgIFdhcm4gaWYgdGhpcyBjb250 ZXh0IHdhcyBub3QKPiArK8KgwqAgcHJvcGVybHkgdGVybWluYXRlZCBieSBhIFBESSBvciBQREYu wqAgUCBwb2ludHMgdG8gdGhlIGxhc3QKPiBjaGFyYWN0ZXIKPiArK8KgwqAgaW4gdGhpcyBjb250 ZXh0LsKgICovCj4gKysKPiArK3N0YXRpYyB2b2lkCj4gKyttYXliZV93YXJuX2JpZGlfb25fY2xv c2UgKGNwcF9yZWFkZXIgKnBmaWxlLCBjb25zdCB1Y2hhciAqcCkKPiArK3sKPiArK8KgIGlmIChD UFBfT1BUSU9OIChwZmlsZSwgY3BwX3dhcm5fYmlkaXJlY3Rpb25hbCkgPT0KPiBiaWRpcmVjdGlv bmFsX3VucGFpcmVkCj4gKyvCoMKgwqDCoMKgICYmIGJpZGk6OnZlYy5jb3VudCAoKSA+IDApCj4g KyvCoMKgwqAgewo+ICsrwqDCoMKgwqDCoCBjb25zdCBsb2NhdGlvbl90IGxvYwo+ICsrwqDCoMKg wqDCoMKgPSBsaW5lbWFwX3Bvc2l0aW9uX2Zvcl9jb2x1bW4gKHBmaWxlLT5saW5lX3RhYmxlLAo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIENQUF9CVUZfQ09MVU1OIChwZmlsZS0+YnVmZmVyLAo+IHApKTsK PiArK8KgwqDCoMKgwqAgY3BwX3dhcm5pbmdfd2l0aF9saW5lIChwZmlsZSwgQ1BQX1dfQklESVJF Q1RJT05BTCwgbG9jLCAwLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAidW5wYWlyZWQgVVRGLTggYmlkaXJlY3Rpb25hbCBjb250cm9sCj4g Y2hhcmFjdGVyICIKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgImRldGVjdGVkIik7Cj4gKyvCoMKgwqAgfQo+ICsrwqAgLyogV2UncmUgZG9u ZSB3aXRoIHRoaXMgY29udGV4dC7CoCAqLwo+ICsrwqAgYmlkaTo6b25fY2xvc2UgKCk7Cj4gKyt9 Cj4gKysKPiArKy8qIFdlJ3JlIGF0IHRoZSBiZWdpbm5pbmcgb3IgaW4gdGhlIG1pZGRsZSBvZiBh bgo+IGlkZW50aWZpZXIvY29tbWVudC9zdHJpbmcKPiArK8KgwqAgbGl0ZXJhbC9jaGFyYWN0ZXIg Y29uc3RhbnQuwqAgV2FybiBpZiB3ZSd2ZSBlbmNvdW50ZXJlZCBhIGJpZGkKPiBjaGFyYWN0ZXIu Cj4gKyvCoMKgIEtJTkQgc2F5cyB3aGljaCBiaWRpIGNoYXJhY3RlciBpdCB3YXM7IFAgcG9pbnRz IHRvIGl0IGluIHRoZQo+IGNoYXJhY3Rlcgo+ICsrwqDCoCBzdHJlYW0uwqAgVUNOX1AgaXMgdHJ1 ZSBpZmYgdGhpcyBiaWRpIGNoYXJhY3RlciB3YXMgd3JpdHRlbiBhcyBhCj4gVUNOLsKgICovCj4g KysKPiArK3N0YXRpYyB2b2lkCj4gKyttYXliZV93YXJuX2JpZGlfb25fY2hhciAoY3BwX3JlYWRl ciAqcGZpbGUsIGNvbnN0IHVjaGFyICpwLAo+IGJpZGk6OmtpbmQga2luZCwKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgdWNuX3ApCj4gKyt7Cj4g KyvCoCBpZiAoX19idWlsdGluX2V4cGVjdCAoa2luZCA9PSBiaWRpOjpraW5kOjpOT05FLCAxKSkK PiArK8KgwqDCoCByZXR1cm47Cj4gKysKPiArK8KgIGNvbnN0IGF1dG8gd2Fybl9iaWRpID0gQ1BQ X09QVElPTiAocGZpbGUsCj4gY3BwX3dhcm5fYmlkaXJlY3Rpb25hbCk7Cj4gKysKPiArK8KgIGlm ICh3YXJuX2JpZGkgIT0gYmlkaXJlY3Rpb25hbF9ub25lKQo+ICsrwqDCoMKgIHsKPiArK8KgwqDC oMKgwqAgY29uc3QgbG9jYXRpb25fdCBsb2MKPiArK8KgwqDCoMKgwqDCoD0gbGluZW1hcF9wb3Np dGlvbl9mb3JfY29sdW1uIChwZmlsZS0+bGluZV90YWJsZSwKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBD UFBfQlVGX0NPTFVNTiAocGZpbGUtPmJ1ZmZlciwKPiBwKSk7Cj4gKyvCoMKgwqDCoMKgIC8qIEl0 IHNlZW1zIGV4Y2Vzc2l2ZSB0byB3YXJuIGFib3V0IGEgUERJL1BERiB0aGF0IGlzIGNsb3NpbmcK PiArK8KgwqDCoMKgwqDCoCBhbiBvcGVuZWQgY29udGV4dCBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkg d2FybmVkIGFib3V0IHRoZQo+ICsrwqDCoMKgwqDCoMKgIG9wZW5pbmcgY2hhcmFjdGVyLsKgIEV4 Y2VwdCB3YXJuIHdoZW4gd2UgaGF2ZSBhIFVDTiB4IFVURi04Cj4gKyvCoMKgwqDCoMKgwqAgbWlz bWF0Y2guwqAgKi8KPiArK8KgwqDCoMKgwqAgaWYgKGtpbmQgPT0gYmlkaTo6Y3VycmVudF9jdHgg KCkpCj4gKyvCoMKgwqDCoMKgwqB7Cj4gKyvCoMKgwqDCoMKgwqDCoCBpZiAod2Fybl9iaWRpID09 IGJpZGlyZWN0aW9uYWxfdW5wYWlyZWQKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgYmlk aTo6Y3VycmVudF9jdHhfdWNuX3AgKCkgIT0gdWNuX3ApCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAg Y3BwX3dhcm5pbmdfd2l0aF9saW5lIChwZmlsZSwgQ1BQX1dfQklESVJFQ1RJT05BTCwgbG9jLAo+ IDAsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICJVVEYtOCB2cyBVQ04gbWlzbWF0Y2ggd2hlbgo+IGNsb3NpbmcgIgo+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiYSBjb250ZXh0IGJ5IFwiJXNcIiIsCj4gYmlkaTo6dG9fc3RyIChraW5kKSk7 Cj4gKyvCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgIGVsc2UgaWYgKHdhcm5fYmlkaSA9PSBi aWRpcmVjdGlvbmFsX2FueSkKPiArK8KgwqDCoMKgwqDCoHsKPiArK8KgwqDCoMKgwqDCoMKgIGlm IChraW5kID09IGJpZGk6OmtpbmQ6OlBERiB8fCBraW5kID09IGJpZGk6OmtpbmQ6OlBESSkKPiAr K8KgwqDCoMKgwqDCoMKgwqDCoCBjcHBfd2FybmluZ193aXRoX2xpbmUgKHBmaWxlLCBDUFBfV19C SURJUkVDVElPTkFMLCBsb2MsCj4gMCwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIlwiJXNcIiBpcyBjbG9zaW5nIGFu IHVub3BlbmVkCj4gY29udGV4dCIsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJpZGk6OnRvX3N0ciAoa2luZCkpOwo+ ICsrwqDCoMKgwqDCoMKgwqAgZWxzZQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIGNwcF93YXJuaW5n X3dpdGhfbGluZSAocGZpbGUsIENQUF9XX0JJRElSRUNUSU9OQUwsIGxvYywKPiAwLAo+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAiZm91bmQgcHJvYmxlbWF0aWMgVW5pY29kZQo+IGNoYXJhY3RlciBcIiVzXCIiLAo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBiaWRpOjp0b19zdHIgKGtpbmQpKTsKPiArK8KgwqDCoMKgwqDCoH0KPiArK8KgwqDC oCB9Cj4gKyvCoCAvKiBXZSdyZSBkb25lIHdpdGggdGhpcyBjb250ZXh0LsKgICovCj4gKyvCoCBi aWRpOjpvbl9jaGFyIChraW5kLCB1Y25fcCk7Cj4gKyt9Cj4gKysKPiArIC8qIFNraXAgYSBDLXN0 eWxlIGJsb2NrIGNvbW1lbnQuwqAgV2UgZmluZCB0aGUgZW5kIG9mIHRoZSBjb21tZW50IGJ5Cj4g K8KgwqDCoCBzZWVpbmcgaWYgYW4gYXN0ZXJpc2sgaXMgYmVmb3JlIGV2ZXJ5ICcvJyB3ZSBlbmNv dW50ZXIuwqAgUmV0dXJucwo+ICvCoMKgwqAgbm9uemVybyBpZiBjb21tZW50IHRlcm1pbmF0ZWQg YnkgRU9GLCB6ZXJvIG90aGVyd2lzZS4KPiArQEAgLTExNzUsNiArMTQ5Myw3IEBAIF9jcHBfc2tp cF9ibG9ja19jb21tZW50IChjcHBfcmVhZGVyICpwZmkKPiArwqDCoCBjcHBfYnVmZmVyICpidWZm ZXIgPSBwZmlsZS0+YnVmZmVyOwo+ICvCoMKgIGNvbnN0IHVjaGFyICpjdXIgPSBidWZmZXItPmN1 cjsKPiArwqDCoCB1Y2hhciBjOwo+ICsrwqAgY29uc3QgYm9vbCB3YXJuX2JpZGlfcCA9IHBmaWxl LT53YXJuX2JpZGlfcCAoKTsKPiArIAo+ICvCoMKgIGN1cisrOwo+ICvCoMKgIGlmICgqY3VyID09 ICcvJykKPiArQEAgLTExODksNyArMTUwOCwxMSBAQCBfY3BwX3NraXBfYmxvY2tfY29tbWVudCAo Y3BwX3JlYWRlciAqcGZpCj4gK8KgwqDCoMKgwqDCoCBpZiAoYyA9PSAnLycpCj4gK8KgwqDCoMKg wqDCoMKgewo+ICvCoMKgwqDCoMKgwqDCoMKgIGlmIChjdXJbLTJdID09ICcqJykKPiArLcKgwqDC oMKgwqDCoMKgwqDCoCBicmVhazsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCB7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmICh3YXJuX2JpZGlfcCkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBtYXliZV93YXJuX2JpZGlfb25fY2xvc2UgKHBmaWxlLCBjdXIpOwo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCB9Cj4gKyAKPiAr wqDCoMKgwqDCoMKgwqDCoCAvKiBXYXJuIGFib3V0IHBvdGVudGlhbCBuZXN0ZWQgY29tbWVudHMs IGJ1dCBub3QgaWYgdGhlICcvJwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbWVzIGltbWVk aWF0ZWx5IGJlZm9yZSB0aGUgdHJ1ZSBjb21tZW50IGRlbGltaXRlci4KPiArQEAgLTEyMDgsNiAr MTUzMSw4IEBAIF9jcHBfc2tpcF9ibG9ja19jb21tZW50IChjcHBfcmVhZGVyICpwZmkKPiArwqDC oMKgwqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGNvbHM7Cj4gK8Kg wqDCoMKgwqDCoMKgwqAgYnVmZmVyLT5jdXIgPSBjdXIgLSAxOwo+ICsrwqDCoMKgwqDCoMKgwqAg aWYgKHdhcm5fYmlkaV9wKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIG1heWJlX3dhcm5fYmlkaV9v bl9jbG9zZSAocGZpbGUsIGN1cik7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgX2NwcF9wcm9jZXNzX2xp bmVfbm90ZXMgKHBmaWxlLCB0cnVlKTsKPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAoYnVmZmVyLT5u ZXh0X2xpbmUgPj0gYnVmZmVyLT5ybGltaXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biB0cnVlOwo+ICtAQCAtMTIxOCw2ICsxNTQzLDEzIEBAIF9jcHBfc2tpcF9ibG9ja19jb21tZW50 IChjcHBfcmVhZGVyICpwZmkKPiArIAo+ICvCoMKgwqDCoMKgwqDCoMKgIGN1ciA9IGJ1ZmZlci0+ Y3VyOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArK8KgwqDCoMKgwqAgLyogSWYgdGhpcyBpcyBhIGJl Z2lubmluZyBvZiBhIFVURi04IGVuY29kaW5nLCBpdCBtaWdodCBiZQo+ICsrwqDCoMKgwqDCoMKg IGEgYmlkaXJlY3Rpb25hbCBjb250cm9sIGNoYXJhY3Rlci7CoCAqLwo+ICsrwqDCoMKgwqDCoCBl bHNlIGlmIChfX2J1aWx0aW5fZXhwZWN0IChjID09IGJpZGk6OnV0Zjhfc3RhcnQsIDApICYmCj4g d2Fybl9iaWRpX3ApCj4gKyvCoMKgwqDCoMKgwqB7Cj4gKyvCoMKgwqDCoMKgwqDCoCBiaWRpOjpr aW5kIGtpbmQgPSBnZXRfYmlkaV91dGY4IChjdXIgLSAxKTsKPiArK8KgwqDCoMKgwqDCoMKgIG1h eWJlX3dhcm5fYmlkaV9vbl9jaGFyIChwZmlsZSwgY3VyLCBraW5kLAo+IC8qdWNuX3A9Ki9mYWxz ZSk7Cj4gKyvCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgIH0KPiArIAo+ICvCoMKgIGJ1ZmZlci0+ Y3VyID0gY3VyOwo+ICtAQCAtMTIzMyw5ICsxNTY1LDMxIEBAIHNraXBfbGluZV9jb21tZW50IChj cHBfcmVhZGVyICpwZmlsZSkKPiArIHsKPiArwqDCoCBjcHBfYnVmZmVyICpidWZmZXIgPSBwZmls ZS0+YnVmZmVyOwo+ICvCoMKgIGxvY2F0aW9uX3Qgb3JpZ19saW5lID0gcGZpbGUtPmxpbmVfdGFi bGUtPmhpZ2hlc3RfbGluZTsKPiArK8KgIGNvbnN0IGJvb2wgd2Fybl9iaWRpX3AgPSBwZmlsZS0+ d2Fybl9iaWRpX3AgKCk7Cj4gKyAKPiArLcKgIHdoaWxlICgqYnVmZmVyLT5jdXIgIT0gJ1xuJykK PiArLcKgwqDCoCBidWZmZXItPmN1cisrOwo+ICsrwqAgaWYgKCF3YXJuX2JpZGlfcCkKPiArK8Kg wqDCoCB3aGlsZSAoKmJ1ZmZlci0+Y3VyICE9ICdcbicpCj4gKyvCoMKgwqDCoMKgIGJ1ZmZlci0+ Y3VyKys7Cj4gKyvCoCBlbHNlCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDCoCB3aGlsZSAoKmJ1 ZmZlci0+Y3VyICE9ICdcbicKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgICYmICpidWZmZXItPmN1 ciAhPSBiaWRpOjp1dGY4X3N0YXJ0KQo+ICsrwqDCoMKgwqDCoMKgYnVmZmVyLT5jdXIrKzsKPiAr K8KgwqDCoMKgwqAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCpidWZmZXItPmN1ciA9PSBiaWRpOjp1 dGY4X3N0YXJ0LCAwKSkKPiArK8KgwqDCoMKgwqDCoHsKPiArK8KgwqDCoMKgwqDCoMKgIHdoaWxl ICgqYnVmZmVyLT5jdXIgIT0gJ1xuJykKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCB7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgqYnVmZmVyLT5jdXIgPT0g YmlkaTo6dXRmOF9zdGFydCwKPiAwKSkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB7 Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmlkaTo6a2luZCBraW5kID0gZ2V0 X2JpZGlfdXRmOCAoYnVmZmVyLT5jdXIpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG1heWJlX3dhcm5fYmlkaV9vbl9jaGFyIChwZmlsZSwgYnVmZmVyLT5jdXIsIGtpbmQsCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKnVjbl9wPSovZmFsc2UpOwo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmZmVyLT5j dXIrKzsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCB9Cj4gKyvCoMKgwqDCoMKgwqDCoCBtYXliZV93 YXJuX2JpZGlfb25fY2xvc2UgKHBmaWxlLCBidWZmZXItPmN1cik7Cj4gKyvCoMKgwqDCoMKgwqB9 Cj4gKyvCoMKgwqAgfQo+ICsgCj4gK8KgwqAgX2NwcF9wcm9jZXNzX2xpbmVfbm90ZXMgKHBmaWxl LCB0cnVlKTsKPiArwqDCoCByZXR1cm4gb3JpZ19saW5lICE9IHBmaWxlLT5saW5lX3RhYmxlLT5o aWdoZXN0X2xpbmU7Cj4gK0BAIC0xMzQzLDExICsxNjk3LDEzIEBAIHN0YXRpYyBjb25zdCBjcHBj aGFyX3QgdXRmOF9zaWduaWZpZXIgPQo+ICsgCj4gKyAvKiBSZXR1cm5zIFRSVUUgaWYgdGhlIHNl cXVlbmNlIHN0YXJ0aW5nIGF0IGJ1ZmZlci0+Y3VyIGlzIHZhbGlkIGluCj4gK8KgwqDCoCBhbiBp ZGVudGlmaWVyLsKgIEZJUlNUIGlzIFRSVUUgaWYgdGhpcyBzdGFydHMgYW4gaWRlbnRpZmllci7C oCAqLwo+ICsrCj4gKyBzdGF0aWMgYm9vbAo+ICsgZm9ybXNfaWRlbnRpZmllcl9wIChjcHBfcmVh ZGVyICpwZmlsZSwgaW50IGZpcnN0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IG5vcm1hbGl6ZV9zdGF0ZSAqc3RhdGUpCj4gKyB7Cj4gK8KgwqAgY3BwX2J1 ZmZlciAqYnVmZmVyID0gcGZpbGUtPmJ1ZmZlcjsKPiArK8KgIGNvbnN0IGJvb2wgd2Fybl9iaWRp X3AgPSBwZmlsZS0+d2Fybl9iaWRpX3AgKCk7Cj4gKyAKPiArwqDCoCBpZiAoKmJ1ZmZlci0+Y3Vy ID09ICckJykKPiArwqDCoMKgwqAgewo+ICtAQCAtMTM3MCw2ICsxNzI2LDEzIEBAIGZvcm1zX2lk ZW50aWZpZXJfcCAoY3BwX3JlYWRlciAqcGZpbGUsIGkKPiArwqDCoMKgwqDCoMKgIGNwcGNoYXJf dCBzOwo+ICvCoMKgwqDCoMKgwqAgaWYgKCpidWZmZXItPmN1ciA+PSB1dGY4X3NpZ25pZmllcikK PiArwqDCoMKgwqDCoMKgwqB7Cj4gKyvCoMKgwqDCoMKgwqDCoCBpZiAoX19idWlsdGluX2V4cGVj dCAoKmJ1ZmZlci0+Y3VyID09IGJpZGk6OnV0Zjhfc3RhcnQsIDApCj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICYmIHdhcm5fYmlkaV9wKQo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIHsKPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYmlkaTo6a2luZCBraW5kID0gZ2V0X2JpZGlfdXRmOCAoYnVm ZmVyLT5jdXIpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXliZV93YXJuX2JpZGlfb25f Y2hhciAocGZpbGUsIGJ1ZmZlci0+Y3VyLCBraW5kLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qdWNu X3A9Ki9mYWxzZSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDCoMKg IGlmIChfY3BwX3ZhbGlkX3V0ZjggKHBmaWxlLCAmYnVmZmVyLT5jdXIsIGJ1ZmZlci0+cmxpbWl0 LCAxCj4gKyAhZmlyc3QsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdGUsICZzKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIHRydWU7Cj4gK0BAIC0xMzc4LDYgKzE3NDEsMTMgQEAgZm9ybXNfaWRlbnRpZmllcl9w IChjcHBfcmVhZGVyICpwZmlsZSwgaQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiAo YnVmZmVyLT5jdXJbMV0gPT0gJ3UnIHx8IGJ1ZmZlci0+Y3VyWzFdID09ICdVJykpCj4gK8KgwqDC oMKgwqDCoMKgewo+ICvCoMKgwqDCoMKgwqDCoMKgIGJ1ZmZlci0+Y3VyICs9IDI7Cj4gKyvCoMKg wqDCoMKgwqDCoCBpZiAod2Fybl9iaWRpX3ApCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgewo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiaWRpOjpraW5kIGtpbmQgPSBnZXRfYmlkaV91Y24gKGJ1 ZmZlci0+Y3VyLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnVmZmVyLT5jdXJb LTFdID09Cj4gJ1UnKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWF5YmVfd2Fybl9iaWRp X29uX2NoYXIgKHBmaWxlLCBidWZmZXItPmN1ciwga2luZCwKPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv KnVjbl9wPSovdHJ1ZSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDC oMKgIGlmIChfY3BwX3ZhbGlkX3VjbiAocGZpbGUsICZidWZmZXItPmN1ciwgYnVmZmVyLT5ybGlt aXQsIDEKPiArICFmaXJzdCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdGUsICZzLCBOVUxMLCBOVUxMKSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4gK0BAIC0xNDg2LDYgKzE4NTYsNyBAQCBsZXhfaWRl bnRpZmllciAoY3BwX3JlYWRlciAqcGZpbGUsIGNvbnN0Cj4gK8KgwqAgY29uc3QgdWNoYXIgKmN1 cjsKPiArwqDCoCB1bnNpZ25lZCBpbnQgbGVuOwo+ICvCoMKgIHVuc2lnbmVkIGludCBoYXNoID0g SFRfSEFTSFNURVAgKDAsICpiYXNlKTsKPiArK8KgIGNvbnN0IGJvb2wgd2Fybl9iaWRpX3AgPSBw ZmlsZS0+d2Fybl9iaWRpX3AgKCk7Cj4gKyAKPiArwqDCoCBjdXIgPSBwZmlsZS0+YnVmZmVyLT5j dXI7Cj4gK8KgwqAgaWYgKCEgc3RhcnRzX3VjbikKPiArQEAgLTE1MDksNiArMTg4MCw4IEBAIGxl eF9pZGVudGlmaWVyIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqAgcGZpbGUtPmJ1ZmZlci0+Y3VyKys7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKg wqDCoMKgwqAgfSB3aGlsZSAoZm9ybXNfaWRlbnRpZmllcl9wIChwZmlsZSwgZmFsc2UsIG5zdCkp Owo+ICsrwqDCoMKgwqDCoCBpZiAod2Fybl9iaWRpX3ApCj4gKyvCoMKgwqDCoMKgwqBtYXliZV93 YXJuX2JpZGlfb25fY2xvc2UgKHBmaWxlLCBwZmlsZS0+YnVmZmVyLT5jdXIpOwo+ICvCoMKgwqDC oMKgwqAgcmVzdWx0ID0gX2NwcF9pbnRlcnByZXRfaWRlbnRpZmllciAocGZpbGUsIGJhc2UsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBmaWxlLT5idWZmZXItPmN1ciAtIGJhc2UpOwo+ICvC oMKgwqDCoMKgwqAgKnNwZWxsaW5nID0gY3BwX2xvb2t1cCAocGZpbGUsIGJhc2UsIHBmaWxlLT5i dWZmZXItPmN1ciAtCj4gYmFzZSk7Cj4gK0BAIC0xNjk3LDYgKzIwNzAsNyBAQCBsZXhfcmF3X3N0 cmluZyAoY3BwX3JlYWRlciAqcGZpbGUsIGNwcF90Cj4gKyB7Cj4gK8KgwqAgdWNoYXIgcmF3X3By ZWZpeFsxN107Cj4gK8KgwqAgdWNoYXIgdGVtcF9idWZmZXJbMThdOwo+ICsrwqAgY29uc3QgYm9v bCB3YXJuX2JpZGlfcCA9IHBmaWxlLT53YXJuX2JpZGlfcCAoKTsKPiArwqDCoCBjb25zdCB1Y2hh ciAqb3JpZ19iYXNlOwo+ICvCoMKgIHVuc2lnbmVkIGludCByYXdfcHJlZml4X2xlbiA9IDAsIHJh d19zdWZmaXhfbGVuID0gMDsKPiArwqDCoCBlbnVtIHJhd19zdHJfcGhhc2UgeyBSQVdfU1RSX1BS RUZJWCwgUkFXX1NUUiwgUkFXX1NUUl9TVUZGSVggfTsKPiArQEAgLTE5NDYsOCArMjMyMCwxNSBA QCBsZXhfcmF3X3N0cmluZyAoY3BwX3JlYWRlciAqcGZpbGUsIGNwcF90Cj4gK8KgwqDCoMKgwqDC oMKgwqAgY3VyID0gYmFzZSA9IHBmaWxlLT5idWZmZXItPmN1cjsKPiArwqDCoMKgwqDCoMKgwqDC oCBub3RlID0gJnBmaWxlLT5idWZmZXItPm5vdGVzW3BmaWxlLT5idWZmZXItPmN1cl9ub3RlXTsK PiArwqDCoMKgwqDCoMKgwqB9Cj4gKyvCoMKgwqDCoMKgIGVsc2UgaWYgKF9fYnVpbHRpbl9leHBl Y3QgKCh1bnNpZ25lZCBjaGFyKSBjID09Cj4gYmlkaTo6dXRmOF9zdGFydCwgMCkKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAmJiB3YXJuX2JpZGlfcCkKPiArK8KgwqDCoMKgwqDCoG1heWJl X3dhcm5fYmlkaV9vbl9jaGFyIChwZmlsZSwgcG9zIC0gMSwgZ2V0X2JpZGlfdXRmOCAocG9zIC0K PiAxKSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKnVjbl9wPSovZmFsc2UpOwo+ICvCoMKgwqDCoCB9Cj4gKyAKPiArK8Kg IGlmICh3YXJuX2JpZGlfcCkKPiArK8KgwqDCoCBtYXliZV93YXJuX2JpZGlfb25fY2xvc2UgKHBm aWxlLCBwb3MpOwo+ICsrCj4gK8KgwqAgaWYgKENQUF9PUFRJT04gKHBmaWxlLCB1c2VyX2xpdGVy YWxzKSkKPiArwqDCoMKgwqAgewo+ICvCoMKgwqDCoMKgwqAgLyogSWYgYSBzdHJpbmcgZm9ybWF0 IG1hY3JvLCBzYXkgZnJvbSBpbnR0eXBlcy5oLCBpcyBwbGFjZWQKPiB0b3VjaGluZwo+ICtAQCAt MjA0MiwxNSArMjQyMywyNyBAQCBsZXhfc3RyaW5nIChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX3Rv a2VuCj4gK8KgwqAgZWxzZQo+ICvCoMKgwqDCoCB0ZXJtaW5hdG9yID0gJz4nLCB0eXBlID0gQ1BQ X0hFQURFUl9OQU1FOwo+ICsgCj4gKyvCoCBjb25zdCBib29sIHdhcm5fYmlkaV9wID0gcGZpbGUt Pndhcm5fYmlkaV9wICgpOwo+ICvCoMKgIGZvciAoOzspCj4gK8KgwqDCoMKgIHsKPiArwqDCoMKg wqDCoMKgIGNwcGNoYXJfdCBjID0gKmN1cisrOwo+ICsgCj4gK8KgwqDCoMKgwqDCoCAvKiBJbiAj aW5jbHVkZS1zdHlsZSBkaXJlY3RpdmVzLCB0ZXJtaW5hdG9ycyBhcmUgbm90Cj4gZXNjYXBhYmxl LsKgICovCj4gK8KgwqDCoMKgwqDCoCBpZiAoYyA9PSAnXFwnICYmICFwZmlsZS0+c3RhdGUuYW5n bGVkX2hlYWRlcnMgJiYgKmN1ciAhPQo+ICdcbicpCj4gKy3CoMKgwqDCoMKgwqBjdXIrKzsKPiAr K8KgwqDCoMKgwqDCoHsKPiArK8KgwqDCoMKgwqDCoMKgIGlmICgoY3VyWzBdID09ICd1JyB8fCBj dXJbMF0gPT0gJ1UnKSAmJiB3YXJuX2JpZGlfcCkKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCB7Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJpZGk6OmtpbmQga2luZCA9IGdldF9iaWRpX3VjbiAo Y3VyICsgMSwgY3VyWzBdID09Cj4gJ1UnKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWF5 YmVfd2Fybl9iaWRpX29uX2NoYXIgKHBmaWxlLCBjdXIsIGtpbmQsCj4gLyp1Y25fcD0qL3RydWUp Owo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiArK8KgwqDCoMKgwqDCoMKgIGN1cisrOwo+ICsr wqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqAgZWxzZSBpZiAoYyA9PSB0ZXJtaW5hdG9yKQo+ ICstwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKyvCoMKgwqDCoMKgwqB7Cj4gKyvCoMKgwqDCoMKgwqDC oCBpZiAod2Fybl9iaWRpX3ApCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgbWF5YmVfd2Fybl9iaWRp X29uX2Nsb3NlIChwZmlsZSwgY3VyIC0gMSk7Cj4gKyvCoMKgwqDCoMKgwqDCoCBicmVhazsKPiAr K8KgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGMgPT0gJ1xuJykKPiArwqDC oMKgwqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgY3VyLS07Cj4gK0BAIC0yMDY3LDYgKzI0 NjAsMTEgQEAgbGV4X3N0cmluZyAoY3BwX3JlYWRlciAqcGZpbGUsIGNwcF90b2tlbgo+ICvCoMKg wqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGMgPT0gJ1wwJykKPiArwqDCoMKg wqDCoMKgwqBzYXdfTlVMID0gdHJ1ZTsKPiArK8KgwqDCoMKgwqAgZWxzZSBpZiAoX19idWlsdGlu X2V4cGVjdCAoYyA9PSBiaWRpOjp1dGY4X3N0YXJ0LCAwKSAmJgo+IHdhcm5fYmlkaV9wKQo+ICsr wqDCoMKgwqDCoMKgewo+ICsrwqDCoMKgwqDCoMKgwqAgYmlkaTo6a2luZCBraW5kID0gZ2V0X2Jp ZGlfdXRmOCAoY3VyIC0gMSk7Cj4gKyvCoMKgwqDCoMKgwqDCoCBtYXliZV93YXJuX2JpZGlfb25f Y2hhciAocGZpbGUsIGN1ciAtIDEsIGtpbmQsCj4gLyp1Y25fcD0qL2ZhbHNlKTsKPiArK8KgwqDC oMKgwqDCoH0KPiArwqDCoMKgwqAgfQo+ICsgCj4gK8KgwqAgaWYgKHNhd19OVUwgJiYgIXBmaWxl LT5zdGF0ZS5za2lwcGluZykKPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dj Yy9nY2MvMDAwNC1DVkUtMjAyMS00MjU3NC5wYXRjaAo+IGIvbWV0YS9yZWNpcGVzLWRldnRvb2xz L2djYy9nY2MvMDAwNC1DVkUtMjAyMS00MjU3NC5wYXRjaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMC4uODc3YjhhNjQ1Mgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9t ZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy8wMDA0LUNWRS0yMDIxLTQyNTc0LnBhdGNoCj4g QEAgLTAsMCArMSwxMzggQEAKPiArRnJvbSAxYTdmMmMwNzc0MTI5NzUwZmRmNzNlOWYxYjc4ZjBj ZTk4M2M5YWIzIE1vbiBTZXAgMTcgMDA6MDA6MDAKPiAyMDAxCj4gK0Zyb206IERhdmlkIE1hbGNv bG0gPGRtYWxjb2xtQHJlZGhhdC5jb20+Cj4gK0RhdGU6IFR1ZSwgMiBOb3YgMjAyMSAwOTo1NDoz MiAtMDQwMAo+ICtTdWJqZWN0OiBbUEFUQ0hdIGxpYmNwcDogZXNjYXBlIG5vbi1BU0NJSSBzb3Vy Y2UgYnl0ZXMgaW4gLVdiaWRpLQo+IGNoYXJzPQo+ICsgW1BSMTAzMDI2XQo+ICtNSU1FLVZlcnNp b246IDEuMAo+ICtDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmOAo+ICtDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Cj4gKwo+ICtUaGlzIGZsYWdzIHJpY2hfbG9jYXRp b25zIGFzc29jaWF0ZWQgd2l0aCAtV2JpZGktY2hhcnM9IHNvIHRoYXQKPiArbm9uLUFTQ0lJIGJ5 dGVzIHdpbGwgYmUgZXNjYXBlZCB3aGVuIHByaW50aW5nIHRoZSBzb3VyY2UgbGluZXMKPiArKHVz aW5nIHRoZSBkaWFnbm9zdGljcyBzdXBwb3J0IEkgYWRkZWQgaW4KPiArcjEyLTQ4MjUtZ2JkNWU4 ODJjZjZlMGRlZjNkZDFiYzEwNjA3NWQ1OWEzMDNmZTBkMWUpLgo+ICsKPiArSW4gcGFydGljdWxh ciwgdGhpcyBlbnN1cmVzIHRoYXQgdGhlIHByaW50ZWQgc291cmNlIGxpbmVzIHdpbGwKPiArYmUg cHVyZSBBU0NJSSwgYW5kIHRodXMgdGhlIHZpc3VhbCBvcmRlcmluZyBvZiB0aGUgY2hhcmFjdGVy cwo+ICt3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBsb2dpY2FsIG9yZGVyaW5nLgo+ICsKPiArQmVm b3JlOgo+ICsKPiArwqAgV2JpZGktY2hhcnMtMS5jOiBJbiBmdW5jdGlvbiDDom1haW7DojoKPiAr wqAgV2JpZGktY2hhcnMtMS5jOjY6NDM6IHdhcm5pbmc6IHVucGFpcmVkIFVURi04IGJpZGlyZWN0 aW9uYWwKPiBjb250cm9sIGNoYXJhY3RlciBkZXRlY3RlZCBbLVdiaWRpLWNoYXJzPV0KPiArwqDC oMKgwqDCoCA2IHzCoMKgwqDCoCAvKsOiwq4gfSDDosKmaWYgKGlzQWRtaW4pw6LCqSDDosKmIGJl Z2luIGFkbWlucyBvbmx5ICovCj4gK8KgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXgo+ICvCoCBXYmlkaS1jaGFycy0xLmM6OToyODogd2FybmluZzogdW5wYWlyZWQg VVRGLTggYmlkaXJlY3Rpb25hbAo+IGNvbnRyb2wgY2hhcmFjdGVyIGRldGVjdGVkIFstV2JpZGkt Y2hhcnM9XQo+ICvCoMKgwqDCoMKgIDkgfMKgwqDCoMKgIC8qIGVuZCBhZG1pbnMgb25seSDDosKu IHsgw6LCpiovCj4gK8KgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXgo+ICsKPiArwqAgV2JpZGktY2hhcnMtMTEuYzo2 OjE1OiB3YXJuaW5nOiBVVEYtOCB2cyBVQ04gbWlzbWF0Y2ggd2hlbiBjbG9zaW5nCj4gYSBjb250 ZXh0IGJ5ICJVKzIwMkMgKFBPUCBESVJFQ1RJT05BTCBGT1JNQVRUSU5HKSIgWy1XYmlkaS1jaGFy cz1dCj4gK8KgwqDCoMKgwqAgNiB8IGludCBMUkVfw6LCql9QREZfXHUyMDJjOwo+ICvCoMKgwqDC oMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeCj4gK8KgIFdiaWRpLWNoYXJz LTExLmM6ODoxOTogd2FybmluZzogVVRGLTggdnMgVUNOIG1pc21hdGNoIHdoZW4gY2xvc2luZwo+ IGEgY29udGV4dCBieSAiVSsyMDJDIChQT1AgRElSRUNUSU9OQUwgRk9STUFUVElORykiIFstV2Jp ZGktY2hhcnM9XQo+ICvCoMKgwqDCoMKgIDggfCBpbnQgTFJFX1x1MjAyYV9QREZfw6LCrF87Cj4g K8KgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXgo+ ICvCoCBXYmlkaS1jaGFycy0xMS5jOjEwOjI4OiB3YXJuaW5nOiBVVEYtOCB2cyBVQ04gbWlzbWF0 Y2ggd2hlbgo+IGNsb3NpbmcgYSBjb250ZXh0IGJ5ICJVKzIwMkMgKFBPUCBESVJFQ1RJT05BTCBG T1JNQVRUSU5HKSIgWy1XYmlkaS0KPiBjaGFycz1dCj4gK8KgwqDCoMKgIDEwIHwgY29uc3QgY2hh ciAqczEgPSAiTFJFX8OiwqpfUERGX1x1MjAyYyI7Cj4gK8KgwqDCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXgo+ICvCoCBX YmlkaS1jaGFycy0xMS5jOjEyOjMzOiB3YXJuaW5nOiBVVEYtOCB2cyBVQ04gbWlzbWF0Y2ggd2hl bgo+IGNsb3NpbmcgYSBjb250ZXh0IGJ5ICJVKzIwMkMgKFBPUCBESVJFQ1RJT05BTCBGT1JNQVRU SU5HKSIgWy1XYmlkaS0KPiBjaGFycz1dCj4gK8KgwqDCoMKgIDEyIHwgY29uc3QgY2hhciAqczIg PSAiTFJFX1x1MjAyYV9QREZfw6LCrCI7Cj4gK8KgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF4KPiAr Cj4gK0FmdGVyOgo+ICsKPiArwqAgV2JpZGktY2hhcnMtMS5jOiBJbiBmdW5jdGlvbiDDom1haW7D ojoKPiArwqAgV2JpZGktY2hhcnMtMS5jOjY6NDM6IHdhcm5pbmc6IHVucGFpcmVkIFVURi04IGJp ZGlyZWN0aW9uYWwKPiBjb250cm9sIGNoYXJhY3RlciBkZXRlY3RlZCBbLVdiaWRpLWNoYXJzPV0K PiArwqDCoMKgwqDCoCA2IHzCoMKgwqDCoCAvKjxVKzIwMkU+IH0gPFUrMjA2Nj5pZiAoaXNBZG1p bik8VSsyMDY5PiA8VSsyMDY2Pgo+IGJlZ2luIGFkbWlucyBvbmx5ICovCj4gK8KgwqDCoMKgwqDC oMKgCj4gfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiDCoMKgwqDCoMKgwqAgXgo+ICvCoCBXYmlk aS1jaGFycy0xLmM6OToyODogd2FybmluZzogdW5wYWlyZWQgVVRGLTggYmlkaXJlY3Rpb25hbAo+ IGNvbnRyb2wgY2hhcmFjdGVyIGRldGVjdGVkIFstV2JpZGktY2hhcnM9XQo+ICvCoMKgwqDCoMKg IDkgfMKgwqDCoMKgIC8qIGVuZCBhZG1pbnMgb25seSA8VSsyMDJFPiB7IDxVKzIwNjY+Ki8KPiAr wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF4KPiArCj4gK8Kg IFdiaWRpLWNoYXJzLTExLmM6NjoxNTogd2FybmluZzogVVRGLTggdnMgVUNOIG1pc21hdGNoIHdo ZW4gY2xvc2luZwo+IGEgY29udGV4dCBieSAiVSsyMDJDIChQT1AgRElSRUNUSU9OQUwgRk9STUFU VElORykiIFstV2JpZGktY2hhcnM9XQo+ICvCoMKgwqDCoMKgIDYgfCBpbnQgTFJFXzxVKzIwMkE+ X1BERl9cdTIwMmM7Cj4gK8KgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBeCj4gK8KgIFdiaWRpLWNoYXJzLTExLmM6ODoxOTogd2Fybmlu ZzogVVRGLTggdnMgVUNOIG1pc21hdGNoIHdoZW4gY2xvc2luZwo+IGEgY29udGV4dCBieSAiVSsy MDJDIChQT1AgRElSRUNUSU9OQUwgRk9STUFUVElORykiIFstV2JpZGktY2hhcnM9XQo+ICvCoMKg wqDCoMKgIDggfCBpbnQgTFJFX1x1MjAyYV9QREZfPFUrMjAyQz5fOwo+ICvCoMKgwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF4KPiArwqAgV2JpZGktY2hh cnMtMTEuYzoxMDoyODogd2FybmluZzogVVRGLTggdnMgVUNOIG1pc21hdGNoIHdoZW4KPiBjbG9z aW5nIGEgY29udGV4dCBieSAiVSsyMDJDIChQT1AgRElSRUNUSU9OQUwgRk9STUFUVElORykiIFst V2JpZGktCj4gY2hhcnM9XQo+ICvCoMKgwqDCoCAxMCB8IGNvbnN0IGNoYXIgKnMxID0gIkxSRV88 VSsyMDJBPl9QREZfXHUyMDJjIjsKPiArwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXgo+ ICvCoCBXYmlkaS1jaGFycy0xMS5jOjEyOjMzOiB3YXJuaW5nOiBVVEYtOCB2cyBVQ04gbWlzbWF0 Y2ggd2hlbgo+IGNsb3NpbmcgYSBjb250ZXh0IGJ5ICJVKzIwMkMgKFBPUCBESVJFQ1RJT05BTCBG T1JNQVRUSU5HKSIgWy1XYmlkaS0KPiBjaGFycz1dCj4gK8KgwqDCoMKgIDEyIHwgY29uc3QgY2hh ciAqczIgPSAiTFJFX1x1MjAyYV9QREZfPFUrMjAyQz4iOwo+ICvCoMKgwqDCoMKgwqDCoCB8wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBeCj4gKwo+ICtsaWJjcHAvQ2hhbmdlTG9nOgo+ICvCoMKgwqDCoMKgwqDCoFBSIHByZXBy b2Nlc3Nvci8xMDMwMjYKPiArwqDCoMKgwqDCoMKgwqAqIGxleC5jIChtYXliZV93YXJuX2JpZGlf b25fY2xvc2UpOiBVc2UgYSByaWNoX2xvY2F0aW9uCj4gK8KgwqDCoMKgwqDCoMKgYW5kIGNhbGwg c2V0X2VzY2FwZV9vbl9vdXRwdXQgKHRydWUpIG9uIGl0Lgo+ICvCoMKgwqDCoMKgwqDCoChtYXli ZV93YXJuX2JpZGlfb25fY2hhcik6IExpa2V3aXNlLgo+ICsKPiArU2lnbmVkLW9mZi1ieTogRGF2 aWQgTWFsY29sbSA8ZG1hbGNvbG1AcmVkaGF0LmNvbT4KPiArCj4gK0NWRTogQ1ZFLTIwMjEtNDI1 NzQKPiArVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAo+IFtodHRwczovL2djYy5nbnUub3JnL2dp dC9naXR3ZWIuY2dpP3A9Z2NjLmdpdDtoPTFhN2YyYzA3NzQxMjk3NTBmZGY3Mwo+IGU5ZjFiNzhm MGNlOTgzYzlhYjNdCj4gK1NpZ25lZC1vZmYtYnk6IFBnb3dkYSA8cGdvd2RhLmN2ZUBnbWFpbC5j b20+Cj4gKwo+ICstLS0KPiArIGxpYmNwcC9sZXguYyB8IDI5ICsrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tCj4gKyAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRp b25zKC0pCj4gKwo+ICtkaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGliY3BwL2xleC5jCj4g Ky0tLSBhL2xpYmNwcC9sZXguY8KgwqDCoMKgwqAyMDIxLTEyLTE0IDIwOjQ0OjExLjY0NzgxNTI4 NyAtMDgwMAo+ICsrKysgYi9saWJjcHAvbGV4LmPCoMKgwqDCoMKgMjAyMS0xMi0xNCAyMDo0Mzoz OC4wMDgzODMyMjAgLTA4MDAKPiArQEAgLTE0MjcsOSArMTQyNywxMSBAQCBtYXliZV93YXJuX2Jp ZGlfb25fY2xvc2UgKGNwcF9yZWFkZXIgKnBmCj4gK8KgwqDCoMKgwqDCoCBjb25zdCBsb2NhdGlv bl90IGxvYwo+ICvCoMKgwqDCoMKgwqDCoD0gbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1uIChw ZmlsZS0+bGluZV90YWJsZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ1BQX0JVRl9DT0xVTU4gKHBm aWxlLT5idWZmZXIsCj4gcCkpOwo+ICstwqDCoMKgwqDCoCBjcHBfd2FybmluZ193aXRoX2xpbmUg KHBmaWxlLCBDUFBfV19CSURJUkVDVElPTkFMLCBsb2MsIDAsCj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ1bnBhaXJlZCBVVEYtOCBiaWRp cmVjdGlvbmFsIGNvbnRyb2wKPiBjaGFyYWN0ZXIgIgo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZGV0ZWN0ZWQiKTsKPiArK8KgwqDCoMKg wqAgcmljaF9sb2NhdGlvbiByaWNoX2xvYyAocGZpbGUtPmxpbmVfdGFibGUsIGxvYyk7Cj4gKyvC oMKgwqDCoMKgIHJpY2hfbG9jLnNldF9lc2NhcGVfb25fb3V0cHV0ICh0cnVlKTsKPiArK8KgwqDC oMKgwqAgY3BwX3dhcm5pbmdfYXQgKHBmaWxlLCBDUFBfV19CSURJUkVDVElPTkFMLCAmcmljaF9s b2MsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAidW5wYWlyZWQg VVRGLTggYmlkaXJlY3Rpb25hbCBjb250cm9sIGNoYXJhY3Rlcgo+ICIKPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJkZXRlY3RlZCIpOwo+ICvCoMKgwqDCoCB9Cj4g K8KgwqAgLyogV2UncmUgZG9uZSB3aXRoIHRoaXMgY29udGV4dC7CoCAqLwo+ICvCoMKgIGJpZGk6 Om9uX2Nsb3NlICgpOwo+ICtAQCAtMTQ1NCw2ICsxNDU2LDkgQEAgbWF5YmVfd2Fybl9iaWRpX29u X2NoYXIgKGNwcF9yZWFkZXIgKnBmaQo+ICvCoMKgwqDCoMKgwqAgY29uc3QgbG9jYXRpb25fdCBs b2MKPiArwqDCoMKgwqDCoMKgwqA9IGxpbmVtYXBfcG9zaXRpb25fZm9yX2NvbHVtbiAocGZpbGUt PmxpbmVfdGFibGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENQUF9CVUZfQ09MVU1OIChwZmlsZS0+ YnVmZmVyLAo+IHApKTsKPiArK8KgwqDCoMKgwqAgcmljaF9sb2NhdGlvbiByaWNoX2xvYyAocGZp bGUtPmxpbmVfdGFibGUsIGxvYyk7Cj4gKyvCoMKgwqDCoMKgIHJpY2hfbG9jLnNldF9lc2NhcGVf b25fb3V0cHV0ICh0cnVlKTsKPiArKwo+ICvCoMKgwqDCoMKgwqAgLyogSXQgc2VlbXMgZXhjZXNz aXZlIHRvIHdhcm4gYWJvdXQgYSBQREkvUERGIHRoYXQgaXMgY2xvc2luZwo+ICvCoMKgwqDCoMKg wqDCoCBhbiBvcGVuZWQgY29udGV4dCBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgd2FybmVkIGFib3V0 IHRoZQo+ICvCoMKgwqDCoMKgwqDCoCBvcGVuaW5nIGNoYXJhY3Rlci7CoCBFeGNlcHQgd2FybiB3 aGVuIHdlIGhhdmUgYSBVQ04geCBVVEYtOAo+ICtAQCAtMTQ2MiwyMCArMTQ2NywyMCBAQCBtYXli ZV93YXJuX2JpZGlfb25fY2hhciAoY3BwX3JlYWRlciAqcGZpCj4gK8KgwqDCoMKgwqDCoMKgewo+ ICvCoMKgwqDCoMKgwqDCoMKgIGlmICh3YXJuX2JpZGkgPT0gYmlkaXJlY3Rpb25hbF91bnBhaXJl ZAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgYmlkaTo6Y3VycmVudF9jdHhfdWNuX3Ag KCkgIT0gdWNuX3ApCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqAgY3BwX3dhcm5pbmdfd2l0aF9saW5l IChwZmlsZSwgQ1BQX1dfQklESVJFQ1RJT05BTCwgbG9jLAo+IDAsCj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJVVEYt OCB2cyBVQ04gbWlzbWF0Y2ggd2hlbgo+IGNsb3NpbmcgIgo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYSBjb250ZXh0 IGJ5IFwiJXNcIiIsCj4gYmlkaTo6dG9fc3RyIChraW5kKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKg wqAgY3BwX3dhcm5pbmdfYXQgKHBmaWxlLCBDUFBfV19CSURJUkVDVElPTkFMLCAmcmljaF9sb2Ms Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi VVRGLTggdnMgVUNOIG1pc21hdGNoIHdoZW4gY2xvc2luZyAiCj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYSBjb250ZXh0IGJ5IFwiJXNcIiIs IGJpZGk6OnRvX3N0cgo+IChraW5kKSk7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKg wqAgZWxzZSBpZiAod2Fybl9iaWRpID09IGJpZGlyZWN0aW9uYWxfYW55KQo+ICvCoMKgwqDCoMKg wqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAoa2luZCA9PSBiaWRpOjpraW5kOjpQREYgfHwg a2luZCA9PSBiaWRpOjpraW5kOjpQREkpCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqAgY3BwX3dhcm5p bmdfd2l0aF9saW5lIChwZmlsZSwgQ1BQX1dfQklESVJFQ1RJT05BTCwgbG9jLAo+IDAsCj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJcIiVzXCIgaXMgY2xvc2luZyBhbiB1bm9wZW5lZAo+IGNvbnRleHQiLAo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBiaWRpOjp0b19zdHIgKGtpbmQpKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBjcHBfd2Fy bmluZ19hdCAocGZpbGUsIENQUF9XX0JJRElSRUNUSU9OQUwsICZyaWNoX2xvYywKPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJcIiVzXCIgaXMg Y2xvc2luZyBhbiB1bm9wZW5lZCBjb250ZXh0IiwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJpZGk6OnRvX3N0ciAoa2luZCkpOwo+ICvCoMKg wqDCoMKgwqDCoMKgIGVsc2UKPiArLcKgwqDCoMKgwqDCoMKgwqDCoCBjcHBfd2FybmluZ193aXRo X2xpbmUgKHBmaWxlLCBDUFBfV19CSURJUkVDVElPTkFMLCBsb2MsCj4gMCwKPiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ImZvdW5kIHByb2JsZW1hdGljIFVuaWNvZGUKPiBjaGFyYWN0ZXIgXCIlc1wiIiwKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYmlkaTo6dG9fc3RyIChraW5kKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgY3BwX3dhcm5p bmdfYXQgKHBmaWxlLCBDUFBfV19CSURJUkVDVElPTkFMLCAmcmljaF9sb2MsCj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZm91bmQgcHJvYmxl bWF0aWMgVW5pY29kZSBjaGFyYWN0ZXIKPiBcIiVzXCIiLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmlkaTo6dG9fc3RyIChraW5kKSk7Cj4g K8KgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoCB9Cj4gK8KgwqAgLyogV2UncmUgZG9uZSB3aXRo IHRoaXMgY29udGV4dC7CoCAqLwo+IGRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMv Z2NjL2djYy8wMDA1LUNWRS0yMDIxLTQyNTc0LnBhdGNoCj4gYi9tZXRhL3JlY2lwZXMtZGV2dG9v bHMvZ2NjL2djYy8wMDA1LUNWRS0yMDIxLTQyNTc0LnBhdGNoCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwLi42ZTk4M2E2N2I2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLzAwMDUtQ1ZFLTIwMjEtNDI1NzQucGF0Y2gK PiBAQCAtMCwwICsxLDU3NSBAQAo+ICtGcm9tIGJlZjMyZDRhMjg1OTVlOTMzZjI0ZmVmMzc4Y2Yw NTJhMzBiNjc0YTcgTW9uIFNlcCAxNyAwMDowMDowMAo+IDIwMDEKPiArRnJvbTogRGF2aWQgTWFs Y29sbSA8ZG1hbGNvbG1AcmVkaGF0LmNvbT4KPiArRGF0ZTogVHVlLCAyIE5vdiAyMDIxIDE1OjQ1 OjIyIC0wNDAwCj4gK1N1YmplY3Q6IFtQQVRDSF0gbGliY3BwOiBjYXB0dXJlIGFuZCB1bmRlcmxp bmUgcmFuZ2VzIGluIC1XYmlkaS0KPiBjaGFycz0KPiArIFtQUjEwMzAyNl0KPiArTUlNRS1WZXJz aW9uOiAxLjAKPiArQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0ZjgKPiArQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiArVGhpcyBwYXRjaCBjb252ZXJ0cyB0 aGUgYmlkaTo6dmVjIHRvIHVzZSBhIHN0cnVjdCBzbyB0aGF0IHdlIGNhbgo+ICtjYXB0dXJlIGxv Y2F0aW9uX3QgdmFsdWVzIGZvciB0aGUgYmlkaXJlY3Rpb25hbCBjb250cm9sIGNoYXJhY3RlcnMu Cj4gKwo+ICtCZWZvcmU6Cj4gKwo+ICvCoCBXYmlkaS1jaGFycy0xLmM6IEluIGZ1bmN0aW9uIMOi bWFpbsOiOgo+ICvCoCBXYmlkaS1jaGFycy0xLmM6Njo0Mzogd2FybmluZzogdW5wYWlyZWQgVVRG LTggYmlkaXJlY3Rpb25hbAo+IGNvbnRyb2wgY2hhcmFjdGVyIGRldGVjdGVkIFstV2JpZGktY2hh cnM9XQo+ICvCoMKgwqDCoMKgIDYgfMKgwqDCoMKgIC8qPFUrMjAyRT4gfSA8VSsyMDY2PmlmIChp c0FkbWluKTxVKzIwNjk+IDxVKzIwNjY+Cj4gYmVnaW4gYWRtaW5zIG9ubHkgKi8KPiArwqDCoMKg wqDCoMKgwqAKPiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IMKgwqDCoMKgwqDCoCBeCj4gK8Kg IFdiaWRpLWNoYXJzLTEuYzo5OjI4OiB3YXJuaW5nOiB1bnBhaXJlZCBVVEYtOCBiaWRpcmVjdGlv bmFsCj4gY29udHJvbCBjaGFyYWN0ZXIgZGV0ZWN0ZWQgWy1XYmlkaS1jaGFycz1dCj4gK8KgwqDC oMKgwqAgOSB8wqDCoMKgwqAgLyogZW5kIGFkbWlucyBvbmx5IDxVKzIwMkU+IHsgPFUrMjA2Nj4q Lwo+ICvCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXgo+ICsK PiArQWZ0ZXI6Cj4gKwo+ICvCoCBXYmlkaS1jaGFycy0xLmM6IEluIGZ1bmN0aW9uIMOibWFpbsOi Ogo+ICvCoCBXYmlkaS1jaGFycy0xLmM6Njo0Mzogd2FybmluZzogdW5wYWlyZWQgVVRGLTggYmlk aXJlY3Rpb25hbAo+IGNvbnRyb2wgY2hhcmFjdGVycyBkZXRlY3RlZCBbLVdiaWRpLWNoYXJzPV0K PiArwqDCoMKgwqDCoCA2IHzCoMKgwqDCoCAvKjxVKzIwMkU+IH0gPFUrMjA2Nj5pZiAoaXNBZG1p bik8VSsyMDY5PiA8VSsyMDY2Pgo+IGJlZ2luIGFkbWlucyBvbmx5ICovCj4gK8KgwqDCoMKgwqDC oMKgIHzCoMKgwqDCoMKgwqAgfn5+fn5+fn7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IH5+fn5+fn5+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXgo+ICvCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+ICvCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgIHzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgCj4gfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZW5kIG9mIGJpZGlyZWN0aW9uYWwgY29udGV4dAo+ICvCoMKgwqDC oMKgwqDCoCB8wqDCoMKgwqDCoMKgIFUrMjAyRSAoUklHSFQtVE8tTEVGVCBPVkVSUklERSnCoMKg wqDCoMKgwqDCoMKgIFUrMjA2Ngo+IChMRUZULVRPLVJJR0hUIElTT0xBVEUpCj4gK8KgIFdiaWRp LWNoYXJzLTEuYzo5OjI4OiB3YXJuaW5nOiB1bnBhaXJlZCBVVEYtOCBiaWRpcmVjdGlvbmFsCj4g Y29udHJvbCBjaGFyYWN0ZXJzIGRldGVjdGVkIFstV2JpZGktY2hhcnM9XQo+ICvCoMKgwqDCoMKg IDkgfMKgwqDCoMKgIC8qIGVuZCBhZG1pbnMgb25seSA8VSsyMDJFPiB7IDxVKzIwNjY+Ki8KPiAr wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfn5+fn5+fn7CoMKgIH5+fn5+fn5+IF4KPiArwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqAgfAo+ICvCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoCBlbmQgb2YKPiBiaWRpcmVjdGlvbmFsIGNvbnRleHQKPiArwqDCoMKgwqDCoMKgwqAg fMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqDCoMKgwqDCoCBVKzIwNjYgKExFRlQtVE8tUklHSFQKPiBJU09MQVRFKQo+ICvCoMKgwqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBVKzIw MkUgKFJJR0hULVRPLUxFRlQgT1ZFUlJJREUpCj4gKwo+ICtTaWduZWQtb2ZmLWJ5OiBEYXZpZCBN YWxjb2xtIDxkbWFsY29sbUByZWRoYXQuY29tPgo+ICsKPiArZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VM b2c6Cj4gK8KgwqDCoMKgwqDCoMKgUFIgcHJlcHJvY2Vzc29yLzEwMzAyNgo+ICvCoMKgwqDCoMKg wqDCoCogYy1jKystY29tbW9uL1diaWRpLWNoYXJzLXJhbmdlcy5jOiBOZXcgdGVzdC4KPiArCj4g K2xpYmNwcC9DaGFuZ2VMb2c6Cj4gK8KgwqDCoMKgwqDCoMKgUFIgcHJlcHJvY2Vzc29yLzEwMzAy Ngo+ICvCoMKgwqDCoMKgwqDCoCogbGV4LmMgKHN0cnVjdCBiaWRpOjpjb250ZXh0KTogTmV3Lgo+ ICvCoMKgwqDCoMKgwqDCoChiaWRpOjp2ZWMpOiBDb252ZXJ0IHRvIGEgdmVjIG9mIGNvbnRleHQg cmF0aGVyIHRoYW4gdW5zaWduZWQKPiArwqDCoMKgwqDCoMKgwqBjaGFyLgo+ICvCoMKgwqDCoMKg wqDCoChiaWRpOjpjdHhfYXQpOiBSZW5hbWUgdG8uLi4KPiArwqDCoMKgwqDCoMKgwqAoYmlkaTo6 cG9wX2tpbmRfYXQpOiAuLi50aGlzIGFuZCByZWltcGxlbWVudCBmb3IgYWJvdmUKPiBjaGFuZ2Uu Cj4gK8KgwqDCoMKgwqDCoMKgKGJpZGk6OmN1cnJlbnRfY3R4KTogVXBkYXRlIGZvciBjaGFuZ2Ug dG8gdmVjLgo+ICvCoMKgwqDCoMKgwqDCoChiaWRpOjpjdXJyZW50X2N0eF91Y25fcCk6IExpa2V3 aXNlLgo+ICvCoMKgwqDCoMKgwqDCoChiaWRpOjpjdXJyZW50X2N0eF9sb2MpOiBOZXcuCj4gK8Kg wqDCoMKgwqDCoMKgKGJpZGk6Om9uX2NoYXIpOiBVcGRhdGUgZm9yIHVzYWdlIG9mIGNvbnRleHQg c3RydWN0LsKgIEFkZAo+ICJsb2MiCj4gK8KgwqDCoMKgwqDCoMKgcGFyYW0gYW5kIHBhc3MgaXQg d2hlbiBwdXNoaW5nIGNvbnRleHRzLgo+ICvCoMKgwqDCoMKgwqDCoChnZXRfbG9jYXRpb25fZm9y X2J5dGVfcmFuZ2VfaW5fY3VyX2xpbmUpOiBOZXcuCj4gK8KgwqDCoMKgwqDCoMKgKGdldF9iaWRp X3V0ZjgpOiBSZW5hbWUgdG8uLi4KPiArwqDCoMKgwqDCoMKgwqAoZ2V0X2JpZGlfdXRmOF8xKTog Li4udGhpcywgcmVpbnRyb2R1Y2luZy4uLgo+ICvCoMKgwqDCoMKgwqDCoChnZXRfYmlkaV91dGY4 KTogLi4uYXMgYSB3cmFwcGVyLCBzZXR0aW5nICpPVVQgd2hlbiB0aGUKPiByZXN1bHQgaXMKPiAr wqDCoMKgwqDCoMKgwqBub3QgTk9ORS4KPiArwqDCoMKgwqDCoMKgwqAoZ2V0X2JpZGlfdWNuKTog UmVuYW1lIHRvLi4uCj4gK8KgwqDCoMKgwqDCoMKgKGdldF9iaWRpX3Vjbl8xKTogLi4udGhpcywg cmVpbnRyb2R1Y2luZy4uLgo+ICvCoMKgwqDCoMKgwqDCoChnZXRfYmlkaV91Y24pOiAuLi5hcyBh IHdyYXBwZXIsIHNldHRpbmcgKk9VVCB3aGVuIHRoZSByZXN1bHQKPiBpcwo+ICvCoMKgwqDCoMKg wqDCoG5vdCBOT05FLgo+ICvCoMKgwqDCoMKgwqDCoChjbGFzcyB1bnBhaXJlZF9iaWRpX3JpY2hf bG9jYXRpb24pOiBOZXcuCj4gK8KgwqDCoMKgwqDCoMKgKG1heWJlX3dhcm5fYmlkaV9vbl9jbG9z ZSk6IFVzZSB1bnBhaXJlZF9iaWRpX3JpY2hfbG9jYXRpb24KPiB3aGVuCj4gK8KgwqDCoMKgwqDC oMKgcmVwb3J0aW5nIG9uIHVucGFpcmVkIGJpZGkgY2hhcnMuwqAgU3BsaXQgaW50byBzaW5ndWxh ciB2cwo+IHBsdXJhbAo+ICvCoMKgwqDCoMKgwqDCoHNwZWxsaW5ncy4KPiArwqDCoMKgwqDCoMKg wqAobWF5YmVfd2Fybl9iaWRpX29uX2NoYXIpOiBQYXNzIGluIGEgbG9jYXRpb25fdCByYXRoZXIg dGhhbiBhCj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgdWNoYXIgKiBhbmQgdXNlIGl0IHdoZW4gZW1p dHRpbmcgd2FybmluZ3MsIGFuZCB3aGVuCj4gY2FsbGluZwo+ICvCoMKgwqDCoMKgwqDCoGJpZGk6 Om9uX2NoYXIuCj4gK8KgwqDCoMKgwqDCoMKgKF9jcHBfc2tpcF9ibG9ja19jb21tZW50KTogQ2Fw dHVyZSBsb2NhdGlvbiB3aGVuIGtpbmQgaXMgbm90Cj4gTk9ORQo+ICvCoMKgwqDCoMKgwqDCoGFu ZCBwYXNzIGl0IHRvIG1heWJlX3dhcm5fYmlkaV9vbl9jaGFyLgo+ICvCoMKgwqDCoMKgwqDCoChz a2lwX2xpbmVfY29tbWVudCk6IExpa2V3aXNlLgo+ICvCoMKgwqDCoMKgwqDCoChmb3Jtc19pZGVu dGlmaWVyX3ApOiBMaWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAobGV4X3Jhd19zdHJpbmcpOiBM aWtld2lzZS4KPiArwqDCoMKgwqDCoMKgwqAobGV4X3N0cmluZyk6IExpa2V3aXNlLgo+ICsKPiAr U2lnbmVkLW9mZi1ieTogRGF2aWQgTWFsY29sbSA8ZG1hbGNvbG1AcmVkaGF0LmNvbT4KPiArCj4g K0NWRTogQ1ZFLTIwMjEtNDI1NzQKPiArVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAo+IFtodHRw czovL2djYy5nbnUub3JnL2dpdC9naXR3ZWIuY2dpP3A9Z2NjLmdpdDtoPWJlZjMyZDRhMjg1OTVl OTMzZjI0Zgo+IGVmMzc4Y2YwNTJhMzBiNjc0YTddCj4gK1NpZ25lZC1vZmYtYnk6IFBnb3dkYSA8 cGdvd2RhLmN2ZUBnbWFpbC5jb20+Cj4gKwo+ICstLS0KPiArIC4uLi9jLWMrKy1jb21tb24vV2Jp ZGktY2hhcnMtcmFuZ2VzLmPCoMKgwqDCoMKgwqDCoMKgIHzCoCA1NCArKysrCj4gKyBsaWJjcHAv bGV4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCAyNTEgKysrKysrKysrKysrKystCj4gLS0tCj4gKyAyIGZpbGVzIGNo YW5nZWQsIDI1NyBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKPiArIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy1yYW5nZXMuYwo+ ICsKPiArZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJz LXJhbmdlcy5jCj4gYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy1yYW5n ZXMuYwo+ICstLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XYmlkaS1jaGFycy1yYW5n ZXMuY8KgwqAxOTY5LTEyLTMxCj4gMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCj4gKysrKyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL1diaWRpLWNoYXJzLXJhbmdlcy5jwqDCoDIwMjEtMTIt MjUKPiAwMTozOTo1NS4xMTYyODE4NDcgLTA4MDAKPiArQEAgLTAsMCArMSw1NCBAQAo+ICsrLyog UFIgcHJlcHJvY2Vzc29yLzEwMzAyNiAqLwo+ICsrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KPiAr Ky8qIHsgZGctb3B0aW9ucyAiLVdiaWRpLWNoYXJzPXVucGFpcmVkIC1mZGlhZ25vc3RpY3Mtc2hv dy1jYXJldCIgfQo+ICovCj4gKysvKiBWZXJpZnkgdGhhdCB3ZSBlc2NhcGUgYW5kIHVuZGVybGlu ZSBwZXJ0aW5lbnQgYmlkaXJlY3Rpb25hbAo+ICsrwqDCoCBjb250cm9sIGNoYXJhY3RlcnMgd2hl biBxdW90aW5nIHRoZSBzb3VyY2UuwqAgKi8KPiArKwo+ICsraW50IHRlc3RfdW5wYWlyZWRfYmlk aSAoKSB7Cj4gKyvCoMKgwqAgaW50IGlzQWRtaW4gPSAwOwo+ICsrwqDCoMKgIC8q4oCuIH0g4oGm aWYgKGlzQWRtaW4p4oGpIOKBpiBiZWdpbiBhZG1pbnMgb25seSAqLwo+ICsrLyogeyBkZy13YXJu aW5nICJiaWRpcmVjdGlvbmFsIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCj4gKysjaWYg MAo+ICsrwqDCoCB7IGRnLWJlZ2luLW11bHRpbGluZS1vdXRwdXQgIiIgfQo+ICsrwqDCoMKgwqAg Lyo8VSsyMDJFPiB9IDxVKzIwNjY+aWYgKGlzQWRtaW4pPFUrMjA2OT4gPFUrMjA2Nj4gYmVnaW4K PiBhZG1pbnMgb25seSAqLwo+ICsrwqDCoMKgwqDCoMKgIH5+fn5+fn5+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiB+fn5+fn5+ fsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF4KPiArK8KgwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPiArK8KgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoAo+IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGVuZCBvZiBiaWRpcmVjdGlvbmFsIGNvbnRleHQKPiArK8KgwqDCoMKgwqDCoCBVKzIwMkUg KFJJR0hULVRPLUxFRlQgT1ZFUlJJREUpwqDCoMKgwqDCoMKgwqDCoCBVKzIwNjYgKExFRlQtVE8t Cj4gUklHSFQgSVNPTEFURSkKPiArK8KgwqAgeyBkZy1lbmQtbXVsdGlsaW5lLW91dHB1dCAiIiB9 Cj4gKysjZW5kaWYKPiArKwo+ICsrwqDCoMKgwqDCoMKgwqAgX19idWlsdGluX3ByaW50ZigiWW91 IGFyZSBhbiBhZG1pbi5cbiIpOwo+ICsrwqDCoMKgIC8qIGVuZCBhZG1pbnMgb25seSDigK4geyDi gaYqLwo+ICsrLyogeyBkZy13YXJuaW5nICJiaWRpcmVjdGlvbmFsIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCj4gKysjaWYgMAo+ICsrwqDCoCB7IGRnLWJlZ2luLW11bHRpbGluZS1vdXRw dXQgIiIgfQo+ICsrwqDCoMKgwqAgLyogZW5kIGFkbWlucyBvbmx5IDxVKzIwMkU+IHsgPFUrMjA2 Nj4qLwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB+ fn5+fn5+fsKgwqAgfn5+fn5+fn4gXgo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoCB8Cj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgIGVuZCBvZiBiaWRpcmVjdGlvbmFsCj4gY29udGV4 dAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC oMKgwqDCoMKgwqDCoMKgIFUrMjA2NiAoTEVGVC1UTy1SSUdIVCBJU09MQVRFKQo+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBVKzIwMkUgKFJJR0hULVRP LUxFRlQgT1ZFUlJJREUpCj4gKyvCoMKgIHsgZGctZW5kLW11bHRpbGluZS1vdXRwdXQgIiIgfQo+ ICsrI2VuZGlmCj4gKysKPiArK8KgwqDCoCByZXR1cm4gMDsKPiArK30KPiArKwo+ICsraW50IExS RV/igKpfUERGX1x1MjAyYzsKPiArKy8qIHsgZGctd2FybmluZyAibWlzbWF0Y2giICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KPiArKyNpZiAwCj4gKyvCoMKgIHsgZGctYmVnaW4tbXVsdGls aW5lLW91dHB1dCAiIiB9Cj4gKysgaW50IExSRV88VSsyMDJBPl9QREZfXHUyMDJjOwo+ICsrwqDC oMKgwqDCoMKgwqDCoCB+fn5+fn5+fsKgwqDCoMKgIF5+fn5+fgo+ICsrwqDCoCB7IGRnLWVuZC1t dWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArKyNlbmRpZgo+ICsrCj4gKytjb25zdCBjaGFyICpzMSA9 ICJMUkVf4oCqX1BERl9cdTIwMmMiOwo+ICsrLyogeyBkZy13YXJuaW5nICJtaXNtYXRjaCIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwo+ICsrI2lmIDAKPiArK8KgwqAgeyBkZy1iZWdpbi1t dWx0aWxpbmUtb3V0cHV0ICIiIH0KPiArKyBjb25zdCBjaGFyICpzMSA9ICJMUkVfPFUrMjAyQT5f UERGX1x1MjAyYyI7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB+fn5+fn5+fsKgwqDCoMKgIF5+fn5+fgo+ICsrwqDCoCB7IGRnLWVuZC1tdWx0aWxpbmUt b3V0cHV0ICIiIH0KPiArKyNlbmRpZgo+ICtkaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGli Y3BwL2xleC5jCj4gKy0tLSBhL2xpYmNwcC9sZXguY8KgwqDCoMKgwqAyMDIxLTEyLTI1IDAxOjQx OjE2LjUyMjg2ODgwOCAtMDgwMAo+ICsrKysgYi9saWJjcHAvbGV4LmPCoMKgwqDCoMKgMjAyMS0x Mi0yNSAwNjoyODo1OC41MzA2ODAzMDIgLTA4MDAKPiArQEAgLTExNzIsMTEgKzExNzIsMzQgQEAg bmFtZXNwYWNlIGJpZGkgewo+ICvCoMKgIC8qIEFsbCB0aGUgVVRGLTggZW5jb2RpbmdzIG9mIGJp ZGkgY2hhcmFjdGVycyBzdGFydCB3aXRoIEUyLsKgICovCj4gK8KgwqAgY29uc3RleHByIHVjaGFy IHV0Zjhfc3RhcnQgPSAweGUyOwo+ICsgCj4gKyvCoCBzdHJ1Y3QgY29udGV4dAo+ICsrwqAgewo+ ICsrwqDCoMKgIGNvbnRleHQgKCkge30KPiArK8KgwqDCoCBjb250ZXh0IChsb2NhdGlvbl90IGxv Yywga2luZCBrLCBib29sIHBkZiwgYm9vbCB1Y24pCj4gKyvCoMKgwqAgOiBtX2xvYyAobG9jKSwg bV9raW5kIChrKSwgbV9wZGYgKHBkZiksIG1fdWNuICh1Y24pCj4gKyvCoMKgwqAgewo+ICsrwqDC oMKgIH0KPiArKwo+ICsrwqDCoMKgIGtpbmQgZ2V0X3BvcF9raW5kICgpIGNvbnN0Cj4gKyvCoMKg wqAgewo+ICsrwqDCoMKgwqDCoCByZXR1cm4gbV9wZGYgPyBraW5kOjpQREYgOiBraW5kOjpQREk7 Cj4gKyvCoMKgwqAgfQo+ICsrwqDCoMKgIGJvb2wgdWNuX3AgKCkgY29uc3QKPiArK8KgwqDCoCB7 Cj4gKyvCoMKgwqDCoMKgIHJldHVybiBtX3VjbjsKPiArK8KgwqDCoCB9Cj4gKysKPiArK8KgwqDC oCBsb2NhdGlvbl90IG1fbG9jOwo+ICsrwqDCoMKgIGtpbmQgbV9raW5kOwo+ICsrwqDCoMKgIHVu c2lnbmVkIG1fcGRmIDogMTsKPiArK8KgwqDCoCB1bnNpZ25lZCBtX3VjbiA6IDE7Cj4gKyvCoCB9 Owo+ICsrCj4gK8KgwqAgLyogQSB2ZWN0b3IgaG9sZGluZyBjdXJyZW50bHkgb3BlbiBiaWRpIGNv bnRleHRzLsKgIFdlIHVzZSBhIGNoYXIKPiBmb3IKPiArwqDCoMKgwqDCoCBlYWNoIGNvbnRleHQs IGl0cyBMU0IgaXMgMSBpZiBpdCByZXByZXNlbnRzIGEgUERGIGNvbnRleHQsIDAKPiBpZiBpdAo+ ICvCoMKgwqDCoMKgIHJlcHJlc2VudHMgYSBQREkgY29udGV4dC7CoCBUaGUgbmV4dCBiaXQgaXMg MSBpZiB0aGlzIGNvbnRleHQKPiB3YXMgb3Blbgo+ICvCoMKgwqDCoMKgIGJ5IGEgYmlkaSBjaGFy YWN0ZXIgd3JpdHRlbiBhcyBhIFVDTiwgYW5kIDAgd2hlbiBpdCB3YXMgVVRGLQo+IDguwqAgKi8K PiArLcKgIHNlbWlfZW1iZWRkZWRfdmVjIDx1bnNpZ25lZCBjaGFyLCAxNj4gdmVjOwo+ICsrwqAg c2VtaV9lbWJlZGRlZF92ZWMgPGNvbnRleHQsIDE2PiB2ZWM7Cj4gKyAKPiArwqDCoCAvKiBDbG9z ZSB0aGUgd2hvbGUgY29tbWVudC9pZGVudGlmaWVyL3N0cmluZyBsaXRlcmFsL2NoYXJhY3Rlcgo+ IGNvbnN0YW50Cj4gK8KgwqDCoMKgwqAgY29udGV4dC7CoCAqLwo+ICtAQCAtMTE5MywxOSArMTIx NiwxOSBAQCBuYW1lc3BhY2UgYmlkaSB7Cj4gK8KgwqDCoMKgIHZlYy50cnVuY2F0ZSAobGVuIC0g MSk7Cj4gK8KgwqAgfQo+ICsgCj4gKy3CoCAvKiBSZXR1cm4gdGhlIGNvbnRleHQgb2YgdGhlIEl0 aCBlbGVtZW50LsKgICovCj4gKy3CoCBraW5kIGN0eF9hdCAodW5zaWduZWQgaW50IGkpCj4gKyvC oCAvKiBSZXR1cm4gdGhlIHBvcCBraW5kIG9mIHRoZSBjb250ZXh0IG9mIHRoZSBJdGggZWxlbWVu dC7CoCAqLwo+ICsrwqAga2luZCBwb3Bfa2luZF9hdCAodW5zaWduZWQgaW50IGkpCj4gK8KgwqAg ewo+ICstwqDCoMKgIHJldHVybiAodmVjW2ldICYgMSkgPyBraW5kOjpQREYgOiBraW5kOjpQREk7 Cj4gKyvCoMKgwqAgcmV0dXJuIHZlY1tpXS5nZXRfcG9wX2tpbmQgKCk7Cj4gK8KgwqAgfQo+ICsg Cj4gKy3CoCAvKiBSZXR1cm4gd2hpY2ggY29udGV4dCBpcyBjdXJyZW50bHkgb3BlbmVkLsKgICov Cj4gKyvCoCAvKiBSZXR1cm4gdGhlIHBvcCBraW5kIG9mIHRoZSBjb250ZXh0IHRoYXQgaXMgY3Vy cmVudGx5IG9wZW5lZC7CoAo+ICovCj4gK8KgwqAga2luZCBjdXJyZW50X2N0eCAoKQo+ICvCoMKg IHsKPiArwqDCoMKgwqAgdW5zaWduZWQgaW50IGxlbiA9IHZlYy5jb3VudCAoKTsKPiArwqDCoMKg wqAgaWYgKGxlbiA9PSAwKQo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIGtpbmQ6Ok5PTkU7Cj4gKy3C oMKgwqAgcmV0dXJuIGN0eF9hdCAobGVuIC0gMSk7Cj4gKyvCoMKgwqAgcmV0dXJuIHZlY1tsZW4g LSAxXS5nZXRfcG9wX2tpbmQgKCk7Cj4gK8KgwqAgfQo+ICsgCj4gK8KgwqAgLyogUmV0dXJuIHRy dWUgaWYgdGhlIGN1cnJlbnQgY29udGV4dCBjb21lcyBmcm9tIGEgVUNOIG9yaWdpbiwKPiB0aGF0 IGlzLAo+ICtAQCAtMTIxNCwxMSArMTIzNywxOSBAQCBuYW1lc3BhY2UgYmlkaSB7Cj4gK8KgwqAg ewo+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbGVuID0gdmVjLmNvdW50ICgpOwo+ICvCoMKgwqDC oCBnY2NfY2hlY2tpbmdfYXNzZXJ0IChsZW4gPiAwKTsKPiArLcKgwqDCoCByZXR1cm4gKHZlY1ts ZW4gLSAxXSA+PiAxKSAmIDE7Cj4gKyvCoMKgwqAgcmV0dXJuIHZlY1tsZW4gLSAxXS5tX3VjbjsK PiArwqDCoCB9Cj4gKyAKPiArLcKgIC8qIFdlJ3ZlIHJlYWQgYSBiaWRpIGNoYXIsIHVwZGF0ZSB0 aGUgY3VycmVudCB2ZWN0b3IgYXMKPiBuZWNlc3NhcnkuwqAgKi8KPiArLcKgIHZvaWQgb25fY2hh ciAoa2luZCBrLCBib29sIHVjbl9wKQo+ICsrwqAgbG9jYXRpb25fdCBjdXJyZW50X2N0eF9sb2Mg KCkKPiArK8KgIHsKPiArK8KgwqDCoCB1bnNpZ25lZCBpbnQgbGVuID0gdmVjLmNvdW50ICgpOwo+ ICsrwqDCoMKgIGdjY19jaGVja2luZ19hc3NlcnQgKGxlbiA+IDApOwo+ICsrwqDCoMKgIHJldHVy biB2ZWNbbGVuIC0gMV0ubV9sb2M7Cj4gKyvCoCB9Cj4gKysKPiArK8KgIC8qIFdlJ3ZlIHJlYWQg YSBiaWRpIGNoYXIsIHVwZGF0ZSB0aGUgY3VycmVudCB2ZWN0b3IgYXMKPiBuZWNlc3NhcnkuCj4g KyvCoMKgwqDCoCBMT0MgaXMgb25seSB2YWxpZCB3aGVuIEsgaXMgbm90IGtpbmQ6Ok5PTkUuwqAg Ki8KPiArK8KgIHZvaWQgb25fY2hhciAoa2luZCBrLCBib29sIHVjbl9wLCBsb2NhdGlvbl90IGxv YykKPiArwqDCoCB7Cj4gK8KgwqDCoMKgIHN3aXRjaCAoaykKPiArwqDCoMKgwqDCoMKgIHsKPiAr QEAgLTEyMjYsMTIgKzEyNTcsMTIgQEAgbmFtZXNwYWNlIGJpZGkgewo+ICvCoMKgwqDCoMKgwqAg Y2FzZSBraW5kOjpSTEU6Cj4gK8KgwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OkxSTzoKPiArwqDCoMKg wqDCoMKgIGNhc2Uga2luZDo6UkxPOgo+ICstwqDCoMKgwqDCoMKgdmVjLnB1c2ggKHVjbl9wID8g M3UgOiAxdSk7Cj4gKyvCoMKgwqDCoMKgwqB2ZWMucHVzaCAoY29udGV4dCAobG9jLCBrLCB0cnVl LCB1Y25fcCkpOwo+ICvCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICvCoMKgwqDCoMKgwqAgY2FzZSBr aW5kOjpMUkk6Cj4gK8KgwqDCoMKgwqDCoCBjYXNlIGtpbmQ6OlJMSToKPiArwqDCoMKgwqDCoMKg IGNhc2Uga2luZDo6RlNJOgo+ICstwqDCoMKgwqDCoMKgdmVjLnB1c2ggKHVjbl9wID8gMnUgOiAw dSk7Cj4gKyvCoMKgwqDCoMKgwqB2ZWMucHVzaCAoY29udGV4dCAobG9jLCBrLCBmYWxzZSwgdWNu X3ApKTsKPiArwqDCoMKgwqDCoMKgwqBicmVhazsKPiArwqDCoMKgwqDCoMKgIC8qIFBERiB0ZXJt aW5hdGVzIHRoZSBzY29wZSBvZiB0aGUgbGFzdCBMUkUsIFJMRSwgTFJPLCBvciBSTE8KPiArwqDC oMKgwqDCoMKgwqAgd2hvc2Ugc2NvcGUgaGFzIG5vdCB5ZXQgYmVlbiB0ZXJtaW5hdGVkLsKgICov Cj4gK0BAIC0xMjQ1LDcgKzEyNzYsNyBAQCBuYW1lc3BhY2UgYmlkaSB7Cj4gK8KgwqDCoMKgwqDC oMKgIHlldCBiZWVuIHRlcm1pbmF0ZWQuwqAgKi8KPiArwqDCoMKgwqDCoMKgIGNhc2Uga2luZDo6 UERJOgo+ICvCoMKgwqDCoMKgwqDCoGZvciAoaW50IGkgPSB2ZWMuY291bnQgKCkgLSAxOyBpID49 IDA7IC0taSkKPiArLcKgwqDCoMKgwqDCoMKgIGlmIChjdHhfYXQgKGkpID09IGtpbmQ6OlBESSkK PiArK8KgwqDCoMKgwqDCoMKgIGlmIChwb3Bfa2luZF9hdCAoaSkgPT0ga2luZDo6UERJKQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2ZWMudHJ1 bmNhdGUgKGkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4gK0BAIC0xMjk1 LDEwICsxMzI2LDQ3IEBAIG5hbWVzcGFjZSBiaWRpIHsKPiArwqDCoCB9Cj4gKyB9Cj4gKyAKPiAr Ky8qIEdldCBsb2NhdGlvbl90IGZvciB0aGUgcmFuZ2Ugb2YgYnl0ZXMgW1NUQVJULCBTVEFSVCAr IE5VTV9CWVRFUykKPiArK8KgwqAgd2l0aGluIHRoZSBjdXJyZW50IGxpbmUgaW4gRklMRSwgd2l0 aCB0aGUgY2FyZXQgYXQgU1RBUlQuwqAgKi8KPiArKwo+ICsrc3RhdGljIGxvY2F0aW9uX3QKPiAr K2dldF9sb2NhdGlvbl9mb3JfYnl0ZV9yYW5nZV9pbl9jdXJfbGluZSAoY3BwX3JlYWRlciAqcGZp bGUsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0Cj4g c3RhcnQsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVfdCBudW1fYnl0ZXMpCj4gKyt7Cj4g KyvCoCBnY2NfY2hlY2tpbmdfYXNzZXJ0IChudW1fYnl0ZXMgPiAwKTsKPiArKwo+ICsrwqAgLyog Q1BQX0JVRl9DT0xVTU4gYW5kIGxpbmVtYXBfcG9zaXRpb25fZm9yX2NvbHVtbiBib3RoIHJlZmVy Cj4gKyvCoMKgwqDCoCB0byBvZmZzZXRzIGluIGJ5dGVzLCBidXQgQ1BQX0JVRl9DT0xVTU4gaXMg MC1iYXNlZCwKPiArK8KgwqDCoMKgIHdoZXJlYXMgbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1u IGlzIDEtYmFzZWQuwqAgKi8KPiArKwo+ICsrwqAgLyogR2V0IDAtYmFzZWQgb2Zmc2V0cyB3aXRo aW4gdGhlIGxpbmUuwqAgKi8KPiArK8KgIHNpemVfdCBzdGFydF9vZmZzZXQgPSBDUFBfQlVGX0NP TFVNTiAocGZpbGUtPmJ1ZmZlciwgc3RhcnQpOwo+ICsrwqAgc2l6ZV90IGVuZF9vZmZzZXQgPSBz dGFydF9vZmZzZXQgKyBudW1fYnl0ZXMgLSAxOwo+ICsrCj4gKyvCoCAvKiBOb3cgY29udmVydCB0 byBsb2NhdGlvbl90LCB3aGVyZSAiY29sdW1ucyIgYXJlIDEtYmFzZWQgYnl0ZQo+IG9mZnNldHMu wqAgKi8KPiArK8KgIGxvY2F0aW9uX3Qgc3RhcnRfbG9jID0gbGluZW1hcF9wb3NpdGlvbl9mb3Jf Y29sdW1uIChwZmlsZS0KPiA+bGluZV90YWJsZSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGFydF9vZmZzZXQgKwo+IDEpOwo+ICsrwqAgbG9jYXRp b25fdCBlbmRfbG9jID0gbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1uIChwZmlsZS0KPiA+bGlu ZV90YWJsZSwKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZW5kX29mZnNldCArIDEpOwo+ICsrCj4gKyvCoCBpZiAoc3RhcnRfbG9jID09IGVuZF9sb2MpCj4g KyvCoMKgwqAgcmV0dXJuIHN0YXJ0X2xvYzsKPiArKwo+ICsrwqAgc291cmNlX3JhbmdlIHNyY19y YW5nZTsKPiArK8KgIHNyY19yYW5nZS5tX3N0YXJ0ID0gc3RhcnRfbG9jOwo+ICsrwqAgc3JjX3Jh bmdlLm1fZmluaXNoID0gZW5kX2xvYzsKPiArK8KgIGxvY2F0aW9uX3QgY29tYmluZWRfbG9jID0g Q09NQklORV9MT0NBVElPTl9EQVRBIChwZmlsZS0KPiA+bGluZV90YWJsZSwKPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGFydF9sb2MsCj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjX3JhbmdlLAo+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE5VTEwpOwo+ICsrwqAgcmV0dXJuIGNvbWJpbmVk X2xvYzsKPiArK30KPiArKwo+ICsgLyogUGFyc2UgYSBzZXF1ZW5jZSBvZiAzIGJ5dGVzIHN0YXJ0 aW5nIHdpdGggUCBhbmQgcmV0dXJuIGl0cyBiaWRpCj4gY29kZS7CoCAqLwo+ICsgCj4gKyBzdGF0 aWMgYmlkaTo6a2luZAo+ICstZ2V0X2JpZGlfdXRmOCAoY29uc3QgdW5zaWduZWQgY2hhciAqY29u c3QgcCkKPiArK2dldF9iaWRpX3V0ZjhfMSAoY29uc3QgdW5zaWduZWQgY2hhciAqY29uc3QgcCkK PiArIHsKPiArwqDCoCBnY2NfY2hlY2tpbmdfYXNzZXJ0IChwWzBdID09IGJpZGk6OnV0Zjhfc3Rh cnQpOwo+ICsgCj4gK0BAIC0xMzQwLDEwICsxNDA4LDI1IEBAIGdldF9iaWRpX3V0ZjggKGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmNvbnMKPiArwqDCoCByZXR1cm4gYmlkaTo6a2luZDo6Tk9ORTsKPiAr IH0KPiArIAo+ICsrLyogUGFyc2UgYSBzZXF1ZW5jZSBvZiAzIGJ5dGVzIHN0YXJ0aW5nIHdpdGgg UCBhbmQgcmV0dXJuIGl0cyBiaWRpCj4gY29kZS4KPiArK8KgwqAgSWYgdGhlIGtpbmQgaXMgbm90 IE5PTkUsIHdyaXRlIHRoZSBsb2NhdGlvbiB0byAqT1VULiovCj4gKysKPiArK3N0YXRpYyBiaWRp OjpraW5kCj4gKytnZXRfYmlkaV91dGY4IChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgdW5zaWdu ZWQgY2hhciAqY29uc3QgcCwKPiBsb2NhdGlvbl90ICpvdXQpCj4gKyt7Cj4gKyvCoCBiaWRpOjpr aW5kIHJlc3VsdCA9IGdldF9iaWRpX3V0ZjhfMSAocCk7Cj4gKyvCoCBpZiAocmVzdWx0ICE9IGJp ZGk6OmtpbmQ6Ok5PTkUpCj4gKyvCoMKgwqAgewo+ICsrwqDCoMKgwqDCoCAvKiBXZSBoYXZlIGEg c2VxdWVuY2Ugb2YgMyBieXRlcyBzdGFydGluZyBhdCBQLsKgICovCj4gKyvCoMKgwqDCoMKgICpv dXQgPSBnZXRfbG9jYXRpb25fZm9yX2J5dGVfcmFuZ2VfaW5fY3VyX2xpbmUgKHBmaWxlLCBwLCAz KTsKPiArK8KgwqDCoCB9Cj4gKyvCoCByZXR1cm4gcmVzdWx0Owo+ICsrfQo+ICsrCj4gKyAvKiBQ YXJzZSBhIFVDTiB3aGVyZSBQIHBvaW50cyBqdXN0IHBhc3QgXHUgb3IgXFUgYW5kIHJldHVybiBp dHMKPiBiaWRpIGNvZGUuwqAgKi8KPiArIAo+ICsgc3RhdGljIGJpZGk6OmtpbmQKPiArLWdldF9i aWRpX3VjbiAoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgYm9vbCBpc19VKQo+ICsrZ2V0X2JpZGlf dWNuXzEgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGJvb2wgaXNfVSkKPiArIHsKPiArwqDCoCAv KiA2LjQuMyBVbml2ZXJzYWwgQ2hhcmFjdGVyIE5hbWVzCj4gK8KgwqDCoMKgwqDCoCBcdSBoZXgt cXVhZAo+ICtAQCAtMTQxMiw2ICsxNDk1LDYyIEBAIGdldF9iaWRpX3VjbiAoY29uc3QgdW5zaWdu ZWQgY2hhciAqcCwgYm8KPiArwqDCoCByZXR1cm4gYmlkaTo6a2luZDo6Tk9ORTsKPiArIH0KPiAr IAo+ICsrLyogUGFyc2UgYSBVQ04gd2hlcmUgUCBwb2ludHMganVzdCBwYXN0IFx1IG9yIFxVIGFu ZCByZXR1cm4gaXRzCj4gYmlkaSBjb2RlLgo+ICsrwqDCoCBJZiB0aGUga2luZCBpcyBub3QgTk9O RSwgd3JpdGUgdGhlIGxvY2F0aW9uIHRvICpPVVQuKi8KPiArKwo+ICsrc3RhdGljIGJpZGk6Omtp bmQKPiArK2dldF9iaWRpX3VjbiAoY3BwX3JlYWRlciAqcGZpbGUswqAgY29uc3QgdW5zaWduZWQg Y2hhciAqcCwgYm9vbAo+IGlzX1UsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2F0aW9u X3QgKm91dCkKPiArK3sKPiArK8KgIGJpZGk6OmtpbmQgcmVzdWx0ID0gZ2V0X2JpZGlfdWNuXzEg KHAsIGlzX1UpOwo+ICsrwqAgaWYgKHJlc3VsdCAhPSBiaWRpOjpraW5kOjpOT05FKQo+ICsrwqDC oMKgIHsKPiArK8KgwqDCoMKgwqAgY29uc3QgdW5zaWduZWQgY2hhciAqc3RhcnQgPSBwIC0gMjsK PiArK8KgwqDCoMKgwqAgc2l6ZV90IG51bV9ieXRlcyA9IDIgKyAoaXNfVSA/IDggOiA0KTsKPiAr K8KgwqDCoMKgwqAgKm91dCA9IGdldF9sb2NhdGlvbl9mb3JfYnl0ZV9yYW5nZV9pbl9jdXJfbGlu ZSAocGZpbGUsIHN0YXJ0LAo+IG51bV9ieXRlcyk7Cj4gKyvCoMKgwqAgfQo+ICsrwqAgcmV0dXJu IHJlc3VsdDsKPiArK30KPiArKwo+ICsrLyogU3ViY2xhc3Mgb2YgcmljaF9sb2NhdGlvbiBmb3Ig cmVwb3J0aW5nIG9uIHVucGFpcmVkIFVURi04Cj4gKyvCoMKgIGJpZGlyZWN0aW9uYWwgY29udHJv bCBjaGFyYWN0ZXIocykuCj4gKyvCoMKgIEVzY2FwZSB0aGUgc291cmNlIGxpbmVzIG9uIG91dHB1 dCwgYW5kIHNob3cgYWxsIHVuY2xvc2VkCj4gKyvCoMKgIGJpZGkgY29udGV4dCwgbGFiZWxsaW5n IGV2ZXJ5dGhpbmcuwqAgKi8KPiArKwo+ICsrY2xhc3MgdW5wYWlyZWRfYmlkaV9yaWNoX2xvY2F0 aW9uIDogcHVibGljIHJpY2hfbG9jYXRpb24KPiArK3sKPiArKyBwdWJsaWM6Cj4gKyvCoCBjbGFz cyBjdXN0b21fcmFuZ2VfbGFiZWwgOiBwdWJsaWMgcmFuZ2VfbGFiZWwKPiArK8KgIHsKPiArK8Kg wqAgcHVibGljOgo+ICsrwqDCoMKgwqAgbGFiZWxfdGV4dCBnZXRfdGV4dCAodW5zaWduZWQgcmFu Z2VfaWR4KSBjb25zdCBGSU5BTCBPVkVSUklERQo+ICsrwqDCoMKgwqAgewo+ICsrwqDCoMKgwqDC oMKgIC8qIHJhbmdlIDAgaXMgdGhlIHByaW1hcnkgbG9jYXRpb247IGVhY2ggc3Vic2VxdWVudCBy YW5nZSBpCj4gKyAxCj4gKyvCoMKgwqDCoMKgwqDCoCBpcyBmb3IgYmlkaTo6dmVjW2ldLsKgICov Cj4gKyvCoMKgwqDCoMKgwqAgaWYgKHJhbmdlX2lkeCA+IDApCj4gKyvCoMKgwqDCoMKgwqAgewo+ ICsrwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBiaWRpOjpjb250ZXh0ICZjdHh0IChiaWRpOjp2ZWNb cmFuZ2VfaWR4IC0gMV0pOwo+ICsrwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gbGFiZWxfdGV4dDo6 Ym9ycm93IChiaWRpOjp0b19zdHIgKGN0eHQubV9raW5kKSk7Cj4gKyvCoMKgwqDCoMKgwqAgfQo+ ICsrwqDCoMKgwqDCoMKgIGVsc2UKPiArK8KgwqDCoMKgwqDCoCByZXR1cm4gbGFiZWxfdGV4dDo6 Ym9ycm93IChfKCJlbmQgb2YgYmlkaXJlY3Rpb25hbAo+IGNvbnRleHQiKSk7Cj4gKyvCoMKgwqDC oCB9Cj4gKyvCoCB9Owo+ICsrCj4gKyvCoCB1bnBhaXJlZF9iaWRpX3JpY2hfbG9jYXRpb24gKGNw cF9yZWFkZXIgKnBmaWxlLCBsb2NhdGlvbl90IGxvYykKPiArK8KgIDogcmljaF9sb2NhdGlvbiAo cGZpbGUtPmxpbmVfdGFibGUsIGxvYywgJm1fY3VzdG9tX2xhYmVsKQo+ICsrwqAgewo+ICsrwqDC oMKgIHNldF9lc2NhcGVfb25fb3V0cHV0ICh0cnVlKTsKPiArK8KgwqDCoCBmb3IgKHVuc2lnbmVk IGkgPSAwOyBpIDwgYmlkaTo6dmVjLmNvdW50ICgpOyBpKyspCj4gKyvCoMKgwqDCoMKgIGFkZF9y YW5nZSAoYmlkaTo6dmVjW2ldLm1fbG9jLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBTSE9XX1JBTkdFX1dJVEhPVVRfQ0FSRVQsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICZtX2N1c3RvbV9sYWJlbCk7Cj4gKyvCoCB9Cj4gKysKPiArKyBwcml2YXRlOgo+ICsrwqDC oCBjdXN0b21fcmFuZ2VfbGFiZWwgbV9jdXN0b21fbGFiZWw7Cj4gKyt9Owo+ICsrCj4gKyAvKiBX ZSdyZSBjbG9zaW5nIGEgYmlkaSBjb250ZXh0LCB0aGF0IGlzLCB3ZSd2ZSBlbmNvdW50ZXJlZCBh Cj4gbmV3bGluZSwKPiArwqDCoMKgIGFyZSBjbG9zaW5nIGEgQy1zdHlsZSBjb21tZW50LCBvciBh cmUgYXQgdGhlIGVuZCBvZiBhIHN0cmluZwo+IGxpdGVyYWwsCj4gK8KgwqDCoCBjaGFyYWN0ZXIg Y29uc3RhbnQsIG9yIGlkZW50aWZpZXIuwqAgV2FybiBpZiB0aGlzIGNvbnRleHQgd2FzIG5vdAo+ ICtAQCAtMTQyNywxMSArMTU2NiwxNyBAQCBtYXliZV93YXJuX2JpZGlfb25fY2xvc2UgKGNwcF9y ZWFkZXIgKnBmCj4gK8KgwqDCoMKgwqDCoCBjb25zdCBsb2NhdGlvbl90IGxvYwo+ICvCoMKgwqDC oMKgwqDCoD0gbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1uIChwZmlsZS0+bGluZV90YWJsZSwK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQ1BQX0JVRl9DT0xVTU4gKHBmaWxlLT5idWZmZXIsCj4gcCkp Owo+ICstwqDCoMKgwqDCoCByaWNoX2xvY2F0aW9uIHJpY2hfbG9jIChwZmlsZS0+bGluZV90YWJs ZSwgbG9jKTsKPiArLcKgwqDCoMKgwqAgcmljaF9sb2Muc2V0X2VzY2FwZV9vbl9vdXRwdXQgKHRy dWUpOwo+ICstwqDCoMKgwqDCoCBjcHBfd2FybmluZ19hdCAocGZpbGUsIENQUF9XX0JJRElSRUNU SU9OQUwsICZyaWNoX2xvYywKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJ1bnBhaXJlZCBVVEYtOCBiaWRpcmVjdGlvbmFsIGNvbnRyb2wgY2hhcmFjdGVyCj4gIgo+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImRldGVjdGVkIik7Cj4g KyvCoMKgwqDCoMKgIHVucGFpcmVkX2JpZGlfcmljaF9sb2NhdGlvbiByaWNoX2xvYyAocGZpbGUs IGxvYyk7Cj4gKyvCoMKgwqDCoMKgIC8qIGNwcF9jYWxsYmFja3MgZG9lc24ndCB5ZXQgaGF2ZSBh IHdheSB0byBoYW5kbGUgc2luZ3VsYXIgdnMKPiBwbHVyYWwKPiArK8KgwqDCoMKgwqDCoCBmb3Jt cyBvZiBhIGRpYWdub3N0aWMsIHNvIGZha2UgaXQgZm9yIG5vdy7CoCAqLwo+ICsrwqDCoMKgwqDC oCBpZiAoYmlkaTo6dmVjLmNvdW50ICgpID4gMSkKPiArK8KgwqDCoMKgwqDCoGNwcF93YXJuaW5n X2F0IChwZmlsZSwgQ1BQX1dfQklESVJFQ1RJT05BTCwgJnJpY2hfbG9jLAo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAidW5wYWlyZWQgVVRGLTggYmlkaXJl Y3Rpb25hbCBjb250cm9sCj4gY2hhcmFjdGVycyAiCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJkZXRlY3RlZCIpOwo+ICsrwqDCoMKgwqDCoCBlbHNlCj4g KyvCoMKgwqDCoMKgwqBjcHBfd2FybmluZ19hdCAocGZpbGUsIENQUF9XX0JJRElSRUNUSU9OQUws ICZyaWNoX2xvYywKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgInVucGFpcmVkIFVURi04IGJpZGlyZWN0aW9uYWwgY29udHJvbAo+IGNoYXJhY3RlciAiCj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJkZXRlY3RlZCIp Owo+ICvCoMKgwqDCoCB9Cj4gK8KgwqAgLyogV2UncmUgZG9uZSB3aXRoIHRoaXMgY29udGV4dC7C oCAqLwo+ICvCoMKgIGJpZGk6Om9uX2Nsb3NlICgpOwo+ICtAQCAtMTQzOSwxMiArMTU4NCwxMyBA QCBtYXliZV93YXJuX2JpZGlfb25fY2xvc2UgKGNwcF9yZWFkZXIgKnBmCj4gKyAKPiArIC8qIFdl J3JlIGF0IHRoZSBiZWdpbm5pbmcgb3IgaW4gdGhlIG1pZGRsZSBvZiBhbgo+IGlkZW50aWZpZXIv Y29tbWVudC9zdHJpbmcKPiArwqDCoMKgIGxpdGVyYWwvY2hhcmFjdGVyIGNvbnN0YW50LsKgIFdh cm4gaWYgd2UndmUgZW5jb3VudGVyZWQgYSBiaWRpCj4gY2hhcmFjdGVyLgo+ICstwqDCoCBLSU5E IHNheXMgd2hpY2ggYmlkaSBjaGFyYWN0ZXIgaXQgd2FzOyBQIHBvaW50cyB0byBpdCBpbiB0aGUK PiBjaGFyYWN0ZXIKPiArLcKgwqAgc3RyZWFtLsKgIFVDTl9QIGlzIHRydWUgaWZmIHRoaXMgYmlk aSBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4gYXMgYQo+IFVDTi7CoCAqLwo+ICsrwqDCoCBLSU5EIHNh eXMgd2hpY2ggYmlkaSBjb250cm9sIGNoYXJhY3RlciBpdCB3YXM7IFVDTl9QIGlzIHRydWUgaWZm Cj4gdGhpcyBiaWRpCj4gKyvCoMKgIGNvbnRyb2wgY2hhcmFjdGVyIHdhcyB3cml0dGVuIGFzIGEg VUNOLsKgIExPQyBpcyB0aGUgbG9jYXRpb24gb2YKPiB0aGUKPiArK8KgwqAgY2hhcmFjdGVyLCBi dXQgaXMgb25seSB2YWxpZCBpZiBLSU5EICE9IGJpZGk6OmtpbmQ6Ok5PTkUuwqAgKi8KPiArIAo+ ICsgc3RhdGljIHZvaWQKPiArLW1heWJlX3dhcm5fYmlkaV9vbl9jaGFyIChjcHBfcmVhZGVyICpw ZmlsZSwgY29uc3QgdWNoYXIgKnAsCj4gYmlkaTo6a2luZCBraW5kLAo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCB1Y25fcCkKPiArK21heWJlX3dh cm5fYmlkaV9vbl9jaGFyIChjcHBfcmVhZGVyICpwZmlsZSwgYmlkaTo6a2luZCBraW5kLAo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCB1Y25fcCwg bG9jYXRpb25fdCBsb2MpCj4gKyB7Cj4gK8KgwqAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGtpbmQg PT0gYmlkaTo6a2luZDo6Tk9ORSwgMSkpCj4gK8KgwqDCoMKgIHJldHVybjsKPiArQEAgLTE0NTMs OSArMTU5OSw2IEBAIG1heWJlX3dhcm5fYmlkaV9vbl9jaGFyIChjcHBfcmVhZGVyICpwZmkKPiAr IAo+ICvCoMKgIGlmICh3YXJuX2JpZGkgIT0gYmlkaXJlY3Rpb25hbF9ub25lKQo+ICvCoMKgwqDC oCB7Cj4gKy3CoMKgwqDCoMKgIGNvbnN0IGxvY2F0aW9uX3QgbG9jCj4gKy3CoMKgwqDCoMKgwqA9 IGxpbmVtYXBfcG9zaXRpb25fZm9yX2NvbHVtbiAocGZpbGUtPmxpbmVfdGFibGUsCj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQ1BQX0JVRl9DT0xVTU4gKHBmaWxlLT5idWZmZXIsCj4gcCkpOwo+ICvCoMKg wqDCoMKgwqAgcmljaF9sb2NhdGlvbiByaWNoX2xvYyAocGZpbGUtPmxpbmVfdGFibGUsIGxvYyk7 Cj4gK8KgwqDCoMKgwqDCoCByaWNoX2xvYy5zZXRfZXNjYXBlX29uX291dHB1dCAodHJ1ZSk7Cj4g KyAKPiArQEAgLTE0NjcsOSArMTYxMCwxMiBAQCBtYXliZV93YXJuX2JpZGlfb25fY2hhciAoY3Bw X3JlYWRlciAqcGZpCj4gK8KgwqDCoMKgwqDCoMKgewo+ICvCoMKgwqDCoMKgwqDCoMKgIGlmICh3 YXJuX2JpZGkgPT0gYmlkaXJlY3Rpb25hbF91bnBhaXJlZAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgJiYgYmlkaTo6Y3VycmVudF9jdHhfdWNuX3AgKCkgIT0gdWNuX3ApCj4gKy3CoMKgwqDC oMKgwqDCoMKgwqAgY3BwX3dhcm5pbmdfYXQgKHBmaWxlLCBDUFBfV19CSURJUkVDVElPTkFMLCAm cmljaF9sb2MsCj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAiVVRGLTggdnMgVUNOIG1pc21hdGNoIHdoZW4gY2xvc2luZyAiCj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYSBjb250ZXh0IGJ5 IFwiJXNcIiIsIGJpZGk6OnRvX3N0cgo+IChraW5kKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAg ewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByaWNoX2xvYy5hZGRfcmFuZ2UgKGJpZGk6OmN1 cnJlbnRfY3R4X2xvYyAoKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNwcF93YXJuaW5n X2F0IChwZmlsZSwgQ1BQX1dfQklESVJFQ1RJT05BTCwgJnJpY2hfbG9jLAo+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJVVEYtOCB2cyBV Q04gbWlzbWF0Y2ggd2hlbiBjbG9zaW5nICIKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYSBjb250ZXh0IGJ5IFwiJXNcIiIsIGJpZGk6 OnRvX3N0cgo+IChraW5kKSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKg wqDCoH0KPiArwqDCoMKgwqDCoMKgIGVsc2UgaWYgKHdhcm5fYmlkaSA9PSBiaWRpcmVjdGlvbmFs X2FueSkKPiArwqDCoMKgwqDCoMKgwqB7Cj4gK0BAIC0xNDg0LDcgKzE2MzAsNyBAQCBtYXliZV93 YXJuX2JpZGlfb25fY2hhciAoY3BwX3JlYWRlciAqcGZpCj4gK8KgwqDCoMKgwqDCoMKgfQo+ICvC oMKgwqDCoCB9Cj4gK8KgwqAgLyogV2UncmUgZG9uZSB3aXRoIHRoaXMgY29udGV4dC7CoCAqLwo+ ICstwqAgYmlkaTo6b25fY2hhciAoa2luZCwgdWNuX3ApOwo+ICsrwqAgYmlkaTo6b25fY2hhciAo a2luZCwgdWNuX3AsIGxvYyk7Cj4gKyB9Cj4gKyAKPiArIC8qIFNraXAgYSBDLXN0eWxlIGJsb2Nr IGNvbW1lbnQuwqAgV2UgZmluZCB0aGUgZW5kIG9mIHRoZSBjb21tZW50IGJ5Cj4gK0BAIC0xNTUy LDggKzE2OTgsOSBAQCBfY3BwX3NraXBfYmxvY2tfY29tbWVudCAoY3BwX3JlYWRlciAqcGZpCj4g K8KgwqDCoMKgwqDCoMKgIGEgYmlkaXJlY3Rpb25hbCBjb250cm9sIGNoYXJhY3Rlci7CoCAqLwo+ ICvCoMKgwqDCoMKgwqAgZWxzZSBpZiAoX19idWlsdGluX2V4cGVjdCAoYyA9PSBiaWRpOjp1dGY4 X3N0YXJ0LCAwKSAmJgo+IHdhcm5fYmlkaV9wKQo+ICvCoMKgwqDCoMKgwqDCoHsKPiArLcKgwqDC oMKgwqDCoMKgIGJpZGk6OmtpbmQga2luZCA9IGdldF9iaWRpX3V0ZjggKGN1ciAtIDEpOwo+ICst wqDCoMKgwqDCoMKgwqAgbWF5YmVfd2Fybl9iaWRpX29uX2NoYXIgKHBmaWxlLCBjdXIsIGtpbmQs Cj4gLyp1Y25fcD0qL2ZhbHNlKTsKPiArK8KgwqDCoMKgwqDCoMKgIGxvY2F0aW9uX3QgbG9jOwo+ ICsrwqDCoMKgwqDCoMKgwqAgYmlkaTo6a2luZCBraW5kID0gZ2V0X2JpZGlfdXRmOCAocGZpbGUs IGN1ciAtIDEsICZsb2MpOwo+ICsrwqDCoMKgwqDCoMKgwqAgbWF5YmVfd2Fybl9iaWRpX29uX2No YXIgKHBmaWxlLCBraW5kLCAvKnVjbl9wPSovZmFsc2UsCj4gbG9jKTsKPiArwqDCoMKgwqDCoMKg wqB9Cj4gK8KgwqDCoMKgIH0KPiArIAo+ICtAQCAtMTU4Niw5ICsxNzMzLDkgQEAgc2tpcF9saW5l X2NvbW1lbnQgKGNwcF9yZWFkZXIgKnBmaWxlKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoX19idWlsdGluX2V4cGVjdCAoKmJ1ZmZlci0+ Y3VyID09IGJpZGk6OnV0Zjhfc3RhcnQsCj4gMCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiaWRpOjpraW5kIGtp bmQgPSBnZXRfYmlkaV91dGY4IChidWZmZXItPmN1cik7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbWF5YmVfd2Fybl9iaWRpX29uX2NoYXIgKHBmaWxlLCBidWZmZXItPmN1ciwg a2luZCwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qdWNuX3A9Ki9mYWxzZSk7Cj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbG9jYXRpb25fdCBsb2M7Cj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmlkaTo6a2luZCBraW5kID0gZ2V0X2JpZGlfdXRmOCAo cGZpbGUsIGJ1ZmZlci0KPiA+Y3VyLCAmbG9jKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBtYXliZV93YXJuX2JpZGlfb25fY2hhciAocGZpbGUsIGtpbmQsCj4gLyp1Y25fcD0q L2ZhbHNlLCBsb2MpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBidWZmZXItPmN1cisrOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCB9Cj4gK0BAIC0xNzM0LDkgKzE4ODEsOSBAQCBmb3Jtc19pZGVudGlmaWVyX3AgKGNwcF9yZWFk ZXIgKnBmaWxlLCBpCj4gK8KgwqDCoMKgwqDCoMKgwqAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCpi dWZmZXItPmN1ciA9PSBiaWRpOjp1dGY4X3N0YXJ0LCAwKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgJiYgd2Fybl9iaWRpX3ApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYmlkaTo6a2luZCBraW5kID0gZ2V0X2JpZGlfdXRmOCAoYnVmZmVy LT5jdXIpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXliZV93YXJuX2JpZGlfb25fY2hh ciAocGZpbGUsIGJ1ZmZlci0+Y3VyLCBraW5kLAo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qdWNuX3A9 Ki9mYWxzZSk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2F0aW9uX3QgbG9jOwo+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiaWRpOjpraW5kIGtpbmQgPSBnZXRfYmlkaV91dGY4IChw ZmlsZSwgYnVmZmVyLT5jdXIsCj4gJmxvYyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1h eWJlX3dhcm5fYmlkaV9vbl9jaGFyIChwZmlsZSwga2luZCwgLyp1Y25fcD0qL2ZhbHNlLAo+IGxv Yyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAoX2Nw cF92YWxpZF91dGY4IChwZmlsZSwgJmJ1ZmZlci0+Y3VyLCBidWZmZXItPnJsaW1pdCwgMQo+ICsg IWZpcnN0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0YXRlLCAmcykpCj4gK0BAIC0xNzQ4LDEwICsxODk1LDEyIEBAIGZvcm1z X2lkZW50aWZpZXJfcCAoY3BwX3JlYWRlciAqcGZpbGUsIGkKPiArwqDCoMKgwqDCoMKgwqDCoCBi dWZmZXItPmN1ciArPSAyOwo+ICvCoMKgwqDCoMKgwqDCoMKgIGlmICh3YXJuX2JpZGlfcCkKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqAgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiaWRpOjpr aW5kIGtpbmQgPSBnZXRfYmlkaV91Y24gKGJ1ZmZlci0+Y3VyLAo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnVmZmVyLT5jdXJbLTFdID09Cj4gJ1UnKTsKPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbWF5YmVfd2Fybl9iaWRpX29uX2NoYXIgKHBmaWxlLCBidWZmZXItPmN1ciwg a2luZCwKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKnVjbl9wPSovdHJ1ZSk7Cj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGxvY2F0aW9uX3QgbG9jOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBi aWRpOjpraW5kIGtpbmQgPSBnZXRfYmlkaV91Y24gKHBmaWxlLAo+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnVmZmVyLT5jdXIsCj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBidWZmZXItPmN1clstMV0gPT0gJ1UnLAo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgJmxvYyk7Cj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1heWJlX3dhcm5fYmlkaV9v bl9jaGFyIChwZmlsZSwga2luZCwgLyp1Y25fcD0qL3RydWUsCj4gbG9jKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDCoMKgIGlmIChfY3BwX3ZhbGlkX3VjbiAocGZp bGUsICZidWZmZXItPmN1ciwgYnVmZmVyLT5ybGltaXQsIDEKPiArICFmaXJzdCwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdGUs ICZzLCBOVUxMLCBOVUxMKSkKPiArQEAgLTIzMjcsMTIgKzI0NzYsMTUgQEAgbGV4X3Jhd19zdHJp bmcgKGNwcF9yZWFkZXIgKnBmaWxlLCBjcHBfdAo+ICvCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKg wqDCoMKgIGVsc2UgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1bnNpZ25lZCBjaGFyKSBjID09Cj4g YmlkaTo6dXRmOF9zdGFydCwgMCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgd2Fy bl9iaWRpX3ApCj4gKy3CoMKgwqDCoMKgwqBtYXliZV93YXJuX2JpZGlfb25fY2hhciAocGZpbGUs IHBvcyAtIDEsIGdldF9iaWRpX3V0ZjggKHBvcyAtCj4gMSksCj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyp1Y25fcD0qL2Zh bHNlKTsKPiArK8KgwqDCoMKgwqDCoHsKPiArK8KgwqDCoMKgwqDCoMKgIGxvY2F0aW9uX3QgbG9j Owo+ICsrwqDCoMKgwqDCoMKgwqAgYmlkaTo6a2luZCBraW5kID0gZ2V0X2JpZGlfdXRmOCAocGZp bGUsIGN1ciAtIDEsICZsb2MpOwo+ICsrwqDCoMKgwqDCoMKgwqAgbWF5YmVfd2Fybl9iaWRpX29u X2NoYXIgKHBmaWxlLCBraW5kLCAvKnVjbl9wPSovZmFsc2UsCj4gbG9jKTsKPiArK8KgwqDCoMKg wqDCoH0KPiArwqDCoMKgwqAgfQo+ICsgCj4gK8KgwqAgaWYgKHdhcm5fYmlkaV9wKQo+ICstwqDC oMKgIG1heWJlX3dhcm5fYmlkaV9vbl9jbG9zZSAocGZpbGUsIHBvcyk7Cj4gKyvCoMKgwqAgbWF5 YmVfd2Fybl9iaWRpX29uX2Nsb3NlIChwZmlsZSwgY3VyKTsKPiArIAo+ICvCoMKgIGlmIChDUFBf T1BUSU9OIChwZmlsZSwgdXNlcl9saXRlcmFscykpCj4gK8KgwqDCoMKgIHsKPiArQEAgLTI0Mzgs OCArMjU5MCwxMCBAQCBsZXhfc3RyaW5nIChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX3Rva2VuCj4g K8KgwqDCoMKgwqDCoMKgewo+ICvCoMKgwqDCoMKgwqDCoMKgIGlmICgoY3VyWzBdID09ICd1JyB8 fCBjdXJbMF0gPT0gJ1UnKSAmJiB3YXJuX2JpZGlfcCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg ewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiaWRpOjpraW5kIGtpbmQgPSBnZXRfYmlkaV91 Y24gKGN1ciArIDEsIGN1clswXSA9PQo+ICdVJyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG1heWJlX3dhcm5fYmlkaV9vbl9jaGFyIChwZmlsZSwgY3VyLCBraW5kLAo+IC8qdWNuX3A9Ki90 cnVlKTsKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbG9jYXRpb25fdCBsb2M7Cj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGJpZGk6OmtpbmQga2luZCA9IGdldF9iaWRpX3VjbiAocGZpbGUs IGN1ciArIDEsIGN1clswXQo+ID09ICdVJywKPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICZsb2MpOwo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXliZV93YXJuX2JpZGlfb25f Y2hhciAocGZpbGUsIGtpbmQsIC8qdWNuX3A9Ki90cnVlLAo+IGxvYyk7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIH0KPiArwqDCoMKgwqDCoMKgwqDCoCBjdXIrKzsKPiArwqDCoMKgwqDCoMKgwqB9 Cj4gK0BAIC0yNDY3LDggKzI2MjEsOSBAQCBsZXhfc3RyaW5nIChjcHBfcmVhZGVyICpwZmlsZSwg Y3BwX3Rva2VuCj4gK8KgwqDCoMKgwqDCoMKgc2F3X05VTCA9IHRydWU7Cj4gK8KgwqDCoMKgwqDC oCBlbHNlIGlmIChfX2J1aWx0aW5fZXhwZWN0IChjID09IGJpZGk6OnV0Zjhfc3RhcnQsIDApICYm Cj4gd2Fybl9iaWRpX3ApCj4gK8KgwqDCoMKgwqDCoMKgewo+ICstwqDCoMKgwqDCoMKgwqAgYmlk aTo6a2luZCBraW5kID0gZ2V0X2JpZGlfdXRmOCAoY3VyIC0gMSk7Cj4gKy3CoMKgwqDCoMKgwqDC oCBtYXliZV93YXJuX2JpZGlfb25fY2hhciAocGZpbGUsIGN1ciAtIDEsIGtpbmQsCj4gLyp1Y25f cD0qL2ZhbHNlKTsKPiArK8KgwqDCoMKgwqDCoMKgIGxvY2F0aW9uX3QgbG9jOwo+ICsrwqDCoMKg wqDCoMKgwqAgYmlkaTo6a2luZCBraW5kID0gZ2V0X2JpZGlfdXRmOCAocGZpbGUsIGN1ciAtIDEs ICZsb2MpOwo+ICsrwqDCoMKgwqDCoMKgwqAgbWF5YmVfd2Fybl9iaWRpX29uX2NoYXIgKHBmaWxl LCBraW5kLCAvKnVjbl9wPSovZmFsc2UsCj4gbG9jKTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gK8Kg wqDCoMKgIH0KPiArIAoK