From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web08.4958.1663916950587455736 for ; Fri, 23 Sep 2022 00:09:10 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=HQQLv3FJ; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: yi1.li@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663916950; x=1695452950; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=KdTBmU7aJkwUWad1HZyrEf8joQhVYOwsM2qu0SxpsLs=; b=HQQLv3FJbjFKDGJvKpD/eI9ekzdqkxGycK7buqx+rgZLDzEy9YCr8P+X pojyyhHfrusIJaTXduTtXCb4F3slrMdeR/4nDxXUH0JlV0H1/IhGQCgb/ Fir9EeMhkwSjg337M73ITtK8DlTlsZyQKLfeLwN830UGmQq5aa3a1HFRe p2Z3SZVcecE19Dt2OqCC+8ejaU7xL6W2VRJz5NYT4/SNPl/YFnIasvX/9 Sv0pPwkfpii+0SglBKbP2LZJHKhyLSoEhGit7Q0sNZiOBWwNWFV5igSVw sLXBPlY9PfcMWj3NuFK9YBDxscTNCUPPPL+yuQAlVXbUo9eYNoAvnS0oX A==; X-IronPort-AV: E=McAfee;i="6500,9779,10478"; a="326859061" X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="326859061" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2022 00:08:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="709203880" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by FMSMGA003.fm.intel.com with ESMTP; 23 Sep 2022 00:08:44 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 23 Sep 2022 00:08:44 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 23 Sep 2022 00:08:43 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 23 Sep 2022 00:08:43 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.177) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Fri, 23 Sep 2022 00:08:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NtrzFgIgLdz4nzITdWzpQ/ACfuEh/a6PSJBScwSDPgDVPpBef4rTabvytq9OP14qoBh9e2Fw3uylen2EpVlwa1KxfhdLLPp2U6Xb7dnwenmdRrQB4V5J9RHRA//Av93Ej/SEs777B5eCH+viX2MfyX5km7Rub/+XdznzbGk6dLdO42tFW8v3WFaEr9DLtLQu7/Aa8OdLGde6RSK01tbEviIy9qDRrjd8vUZyz3xqKSqIcwfgjO1bVlEBT6IqR+20xIYegGoWutuc0+xElQfzbpUHwpzVeUIM91fzzT0k6mrS1yxTD3mNIP6TLznm1+1vUcxmTBF1HkmNy3qMxi/L2A== 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=KdTBmU7aJkwUWad1HZyrEf8joQhVYOwsM2qu0SxpsLs=; b=g/LqXL1G3xRHpmHvAJszW722jMDmWrUxMXI+PBqxlkpebm5XKp4BgJq34hzP/NonlaljyFTIc67w5dQddKFSooQSMnSFoqTap09GhAPKCVH4SAthFkU8I2yba8O+hMPfiY5lrMElHcLgcEzLwX4jegEhyTes4PICq8Yi83s9NYIjoTe7XYVizgO3Em8oTaHkrFnXPUdTDsdlyF/mk0GtYxkeN318achzACmZZTQJYJ9SQyEBZsFD2oae0K0lcYn68TFrel09nrpB+Ayd2kEAWkrQ12tFgdGDJ7dVB8lgyKZkV03EJav8tcuve5wLaSbmZKRFn79r+4TDt3QMX1FC7A== 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 SJ1PR11MB6227.namprd11.prod.outlook.com (2603:10b6:a03:45a::10) by SJ0PR11MB5919.namprd11.prod.outlook.com (2603:10b6:a03:42d::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.19; Fri, 23 Sep 2022 07:08:39 +0000 Received: from SJ1PR11MB6227.namprd11.prod.outlook.com ([fe80::bd4b:a704:7db6:70d4]) by SJ1PR11MB6227.namprd11.prod.outlook.com ([fe80::bd4b:a704:7db6:70d4%7]) with mapi id 15.20.5654.020; Fri, 23 Sep 2022 07:08:39 +0000 From: "yi1 li" To: "Kinney, Michael D" , "devel@edk2.groups.io" , "Chen, Christine" , "Feng, Bob C" CC: "Yao, Jiewen" , "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" , "Luo, Heng" Subject: Re: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Topic: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Index: AQHYzXZLD+xvkEQOakOpSaeT6ojkS63qEX6AgACgK5CAACHkgIAARIXwgAD3V4CAADIQwIAAPUMAgAAC5YA= Date: Fri, 23 Sep 2022 07:08:39 +0000 Message-ID: References: <9dcccc674996fa3fdcb8858e3609437e66ce82ac.1663735439.git.yi1.li@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ1PR11MB6227:EE_|SJ0PR11MB5919:EE_ x-ms-office365-filtering-correlation-id: a1cb2a3d-a44d-4050-9ac0-08da9d3270db x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KsETAULF3raWL/EYfKRcIS+1BzXiKRLlJS7xOA5bOfaUzvwc/2b+cXo6a5SCAsZkCiVUoAGtEwF75bTwBCQNbZGwY7MTfol+uYHqiBuDjwx1mHpa4a9Mj0csbM/uw0iGIGFIsv7Mf4inAq7vf42lb0zyuTIM8I2DHS4KF1NSuzTWVup6GxUNHwsTefaR0fr+0DrDiTpOFzFgqWRbdDIFp97FqAVLfvaUW0zLioupxqdfuKxuUyIfPHKcdoWvhxgtXfMzbvRpCBemWXzYiyz6ltZmLmzyoniPEo/OCt6KK210pMln9evVrJG4gxpnHFYPqLEjVSlEQ5ib6pc0YqkOdciQ7ZJUb/4O6gi86bnhu/dMSAqg+HuqFGva+A71Zh+AZzTwecKEE48f6T/xE1p/nqniAVC7nfRk1I/fOsVQs0ToxoJ84dpV93TDYSzIb083ZjO0NkQh83Voy/S5VEdQILo5zSaclZjNwThei+Dfmscwm8EknubvVWbX2sRfeEZoGQJZ/8C2HGy4q6Vo1l20xjtxorxDIaAwAHGdMtmHLAlV42BtyO3ZHH5mtFaQl8CSw0g7sitjlhOyg6Emwm5ATaq0xYJGN9BruDNebAauPxcZZp1aTv5iM8HXLzNF8F60L38glg1BYb2HAGVKtUdO2+ZFNgvvPk+nXp9vkEFoYkQpgB9Iu2rj9TV4//HCOhH+zub+lDyszSPTFSitsWF9y+9Snl4P47jn9fzxWi/md9WdADhWS2kCy+UBI/9HY+3hIbCCd8k8l9Bc6vUeiKCJ7FHeyEZLiRwCx3M+qM8mE2Eej9I+h8OTUmxIufzAStD/h2E0RYGFMgeChXzpqbC9HQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ1PR11MB6227.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(38100700002)(66476007)(52536014)(66446008)(64756008)(30864003)(8936002)(5660300002)(8676002)(41300700001)(66556008)(66946007)(4326008)(38070700005)(2906002)(86362001)(76116006)(82960400001)(122000001)(6636002)(71200400001)(316002)(54906003)(26005)(107886003)(6506007)(9686003)(7696005)(478600001)(53546011)(19627235002)(55016003)(83380400001)(966005)(186003)(110136005)(33656002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q3dpcFJSMXVVMXRTandNeUJaQ0c5UGpNc3pqa1hKQkFNUWY0Sk1FWVVvdVpz?= =?utf-8?B?VnozWURkZUFWeVdRd3YyeURuNE9DSEpFdkRpU3phbXgxZ1RoU2lGSENRMXFT?= =?utf-8?B?TnBnTGJSN3RhM011TXFKQWRSRkFPSU9MZ0dJV1h5OEsrSzFqVWFFY2FvMkZl?= =?utf-8?B?czlGVXZuL2FTWC9Nc0htTkNWSjNGT1FVVzQ2QzU5V2plVFR6TEFPS2VON3lt?= =?utf-8?B?NDh2Mnp1Si9BQnB3NlljSEN2amViZ00yY0tJZVpvaGg3ZUNMNllTWGhEa1p3?= =?utf-8?B?MUMxM1ZkczJhYi92SUZNMElBemFlbysxRFoxNS9JZ05UZkkwZEZiblVLVFN0?= =?utf-8?B?akhHRFpvNExMOEtOSHd6SHFjZXJaWWZTVHVxSDBydTNyMzFNTUt6cmF1SlBO?= =?utf-8?B?SkJCL0xNSHNlOXlKK0hEYkE2em9qa0NhU3g2Skw2L3ByNGNkL3FUVmZtKzFk?= =?utf-8?B?d3RGa05aYlZjbGc5S0dXVkg2TlphSi9oTEJYTHNrblhZK1RITFIxNTZscDMv?= =?utf-8?B?NGw4UHhhanJPZkNhZVE0OTlRWjl0VVloaStrZm5aS3hwckZmLzhWYVVBUWto?= =?utf-8?B?blVwV0pTZEJDYUg0Wnk0cUZoQ3NBWnVXUXp5d3VCaUVvWUcyYkc2RDB0Qmx0?= =?utf-8?B?YTUraVRrQzJXUjM5M2J0V2xaZXZaNTBUUW5MckFva0FlVUMwa0VTR2hqZzY0?= =?utf-8?B?Zm96aGVvSlZ5MTZIS01NeHdMeGtteEFEblM5RloxY0xjZVZpWG81ajd4MDNI?= =?utf-8?B?RElPSGFhLzh0blFNMmd0bUc5SjJiSnlYd2VyVkhnQm11WHhQMDRSdW13T3h5?= =?utf-8?B?U3RXbWNSeFRtSEJyL29TV01ObWt3dGZuRnBlMytKUmVGTXZCa09mTXlndHZ3?= =?utf-8?B?VWhXWFdDdGw1eWZKVHhTcjh3dW5DY05nSkM3VENYMDdBeHd1TzdCOVhNVThm?= =?utf-8?B?V1ZUZDZQQVZCdXVidlVJRXN4SFJSVE9pVENSQzR6VEhwdDBZbzNyRXpxWFc5?= =?utf-8?B?QVhQbU9vMXVWdGRnSVB4Z0pGcERIYk96Z2x3ajBqdlBIWmxVOFdqdWVEU3F2?= =?utf-8?B?V1pkbVVWK0t0cHdYbUMxNjd0ZnJ3S25pWUczWU1nUkxGY2VXc1E3eUhKNi92?= =?utf-8?B?c1NIem1CNWZkRVJBdkd5ckY2djZ1RlNoRHM5YXZndEtiaVFPNlVlSlVwbk1P?= =?utf-8?B?Q05DVThDSXBNSEI2a0syRndtSHNuYWh3dmU4S0JzSlZQU05kZEVQa0hiTk1V?= =?utf-8?B?eGlOaGN5SU01VVppN293dEpSeERSSkthdElIT2IrWjVWcUxRK3lpMWpadHND?= =?utf-8?B?YUZXYUVZL21xUWhHNGNpMUZETnNIRVg1WFpkVUxLSndLM3VyaWVUY2s2dEdz?= =?utf-8?B?QlVnbjdwQ1NNRlU0YXNpSkpLRG1WZTdnR3ZjSXRSampaMEsyMlpJeXBsQnBv?= =?utf-8?B?anRnbU9OK1VsckZNWE52UUtUUHJUNnowZlk5TzFjSGhXNkRhQUVSNExGaWNE?= =?utf-8?B?ZUl6aE5vSEFpUmtRVFVkY1FpaW5Zb3YxMW5td1pvbUtEanoxYkU4SjBHc0ov?= =?utf-8?B?QTQweUhWQzZ1d2lyZVhQVFZYMVJDbWVIQTAzZWRoUWRjK1VoRHpyVVhCdFAw?= =?utf-8?B?NzBYVnhxWlRoc1I2Y2tsdUI3eWx6WGpqTldxZ0dyOHpiSHZjSnpoY3JXcmMw?= =?utf-8?B?bGRWNjk2anZFeG4rSGRoN3Y0blllZld5cWJ2c0tsU01veVRRbnJiWU5CcVU5?= =?utf-8?B?ZnYrWWZrK0xYYlYyUFFpRkQ5SmFyVVJSRWlURWxEV0pmSGxaL1VHeWRuUFA2?= =?utf-8?B?LzljRkR2aDJ1NElYbXFFTTE2WGR3YVJDTGlHcVVLQldWbm4vaW51S3hQODRH?= =?utf-8?B?MGx6Y2NCamI1OTgvcklIVjNiZG53Mk1nNFpBRXE4SzJqSDdvWGd0Q3dUUjQw?= =?utf-8?B?VmFxakFpNmlaUHcvWHJQZDkxdFlxWjB3bjBvV0NnZ2Rnd3BBaWx3Y2VnNVVF?= =?utf-8?B?RU1LaWJWei9xbTQrV0pjditwRmRKZ2hUK2xPSHpIbkVkckVCWWZ0aVg0NWk1?= =?utf-8?B?T2ZldW9DRHlkNGhZdzQxTnQ3YTZCcXdrZ1VhbGNIVDJyWFltRUloTlFmcWNY?= =?utf-8?Q?egD0=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ1PR11MB6227.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1cb2a3d-a44d-4050-9ac0-08da9d3270db X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2022 07:08:39.3243 (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: +R32oGp3S+RMClCWyLychtUNql1vjEiD0iYOLqlBfSfomyNFPh+gmqYS+65MWEThJdA7iHaVpoTI/duufaBggA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5919 Return-Path: yi1.li@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWlrZSwNCg0KSSBkaWQgbWFrZSBzb21lIGF0dGVtcHRzIHdpdGggaXQsIGJ1dCBpdCBkb2Vz bid0IHdvcmssIHR3byB0cm91YmxlcyBoZXJlOg0KDQpCb2IgYW5kIFl1d2VpLCBwbGVhc2UgcG9p bnQgb3V0IGlmIEknbSB3cm9uZzoNCjEuIFVzaW5nIG1lbWJlciBvZiBzdHJ1Y3R1cmUgUENEIGlu IElORiBpc27igJl0IHN1cHBvcnRlZCBieSBCYXNldG9vbHMgY3VycmVudGx5LA0KQXQgbGVhc3Qg aXQgY2Fubm90IGJlIHVzZWQgYXMgRmVhdHVyZUZsYWcgRXhwcmVzc2lvbi4NCg0KMi4gQXMgZmFy IGFzIEkga25vdywgc3RydWN0dXJlIFBDRCBhY3R1YWxseSBpcyBhIGNvbnN0IGFycmF5IGluIGNv ZGUsIA0KSSBhZnJhaWQgaXQgd2lsbCBub3Qgd29yayBmaW5lIHdpdGggcHJlY29tcGlsZSBidXQg d2UgZG8gaGF2ZSB0aGlzIG5lZWQ6DQojaWYgIUZpeGVkUGNkR2V0Qm9vbCAoUGNkT3BlbnNzbEVj RW5hYmxlZCkNCiMgaWZuZGVmIE9QRU5TU0xfTk9fRUMNCiMgIGRlZmluZSBPUEVOU1NMX05PX0VD DQojIGVuZGlmDQojZW5kaWYNCg0KVGhpcyBpcyByZWFsbHkgY2F1c2VkIGJ5IHRoZSBiYWQgc3Ry dWN0dXJlIG9mIG9wZW5zc2wsDQptYXliZSB3ZSB1c2UgbW9yZSBkZXRhaWxlZCBjb21tZW50cyB0 byByZW1pbmQgZGV2ZWxvcGVycyB0byBzeW5jIHRoZSB0d28gUENEcz8NCg0KVGhhbmtzLA0KWWkN Cg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4gDQpTZW50OiBGcmlkYXksIFNlcHRlbWJlciAyMywg MjAyMiAxOjI1IFBNDQpUbzogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT47IGRldmVsQGVkazIu Z3JvdXBzLmlvOyBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwuY29tPjsgRmVuZywg Qm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNv bT47IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhp YW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsIEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNv bT4NClN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBB ZGQgRUMgc3VwcG9ydA0KDQpIaSBZaSwNCg0KSSBhZ3JlZSB0aGVyZSBhcmUgc29tZSBjb21wbGV4 IGludGVyYWN0aW9ucyBpbiB0aGUgb3BlbnNsbCBzb3VyY2VzLg0KDQpTaW5jZSB5b3UgYXJlIGRl ZmluaW5nIGEgZmFtaWx5IGZvciBFQywgY2FuIHdlIHVzZSB0aGUgRUMgRmFtaWx5ICE9IDAgaW5z dGVhZCBvZg0KUGNkT3BlbnNzbEVjRW5hYmxlZCBhbmQgcmVtb3ZlIFBjZE9wZW5zc2xFY0VuYWJs ZWQuDQoNCkkgd2FudCB0byBtYWtlIHN1cmUgZGV2ZWxvcGVycyBkbyBub3QgcnVuIGludG8gc3Ry YW5nZSBidWlsZCBmYWlsdXJlcyBpZg0KdGhleSBkbyBub3Qga2VlcCB0aGUgMiBkaWZmZXJlbnQg UENEcyBhbGlnbmVkLiAgSSBwcmVmZXIgYSBzaW5nbGUgUENEIA0Kc2V0dGluZyB0byBlbmFibGUg dXNlIG9mIEVDIHNlcnZpY2VzLg0KDQpJIGFsc28gbm90aWNlZCB0aGF0IHRoZSB1c2Ugb2YgYSBQ Q0QgZXhwcmVzc2lvbiBpbiBhbiBJTkYgdG8gc2VsZWN0IHNvdXJjZQ0KZmlsZXMgZG9lcyBub3Qg d29yayBpZiB0aGUgUENEIHZhbHVlIGlzIHNwZWNpZmllZCB3aXRoIHRoZSAtLXBjZCBmbGFnIG9u DQp0aGUgYnVpbGQgY29tbWFuZCBsaW5lLiAgVGhpcyBsb29rcyBsaWtlIGEgc2lnbmlmaWNhbnQg YnVnIHdpdGggdGhlIFBDRA0KZXhwcmVzc2lvbiBpbiBhbiBJTkYgZmlsZS4gIFRoaXMgYWxzbyBu ZWVkcyB0byBiZSBmaXhlZC4NCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+IEZyb206IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBT ZXB0ZW1iZXIgMjIsIDIwMjIgODowMiBQTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFlhbywg Smlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdA aW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsDQo+ IEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRl dmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+IA0KPiBIaSBN aWtlLA0KPiANCj4gMS4gWWVzLCBpdCBtYXRjaGVzLg0KPiBCeSBJbnRlbCBzaWRlLCAxMDAra2Io MjAlKykgRlYgc2l6ZSBpbmNyZWFzZSB3aWxsIGJlIGEgYmlnIGNvbmNlcm4sIHBsZWFzZSByZWZl ciB0byBhbm90aGVyIGludGVybmFsIGVtYWlsLg0KPiANCj4gMi4gQWRkaXRpb25hbCBzaXplIGlz IGNvbWluZyBmcm9tIG1vZHVsZXMgbWF5IGNvbnN1bWVkIEVDIEFQSXMsIGVnLiBUTFMgUEVNIFg1 MDkgIC4uLg0KPiANCj4gSWYgd2UgYWRkZWQgRUMgc291cmNlIHRvIE9wZW5zc2xMaWIuaW5mIGFu ZCBkaXNhYmxlZCBtYWNybyBPUEVOU1NMX05PX0VDLCB0aG9zZSBtb2R1bGVzIHdpbGwgbGluayBF QyBBUElzIGFuZCBpbmNyZWFzZSBiaW5hcnkNCj4gc2l6ZSwNCj4gVGhpcyBhbiBleGFtcGxlIGZy b20geDUwOS94X3B1YmtleS5jICwgb3RoZXIgbW9kdWxlcyBpcyBzaW1pbGFyOg0KPiAjaWZuZGVm IE9QRU5TU0xfTk9fRUMNCj4gRUNfS0VZICpkMmlfRUNfUFVCS0VZKEVDX0tFWSAqKmEsIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKipwcCwgbG9uZyBsZW5ndGgpDQo+IHsNCj4gICAgIEVWUF9QS0VZICpw a2V5Ow0KPiAgICAgRUNfS0VZICprZXkgPSBOVUxMOw0KPiAgICAgLy8uLi4uIGNhbGwgRUMgZnVu Y3Rpb25zDQo+IH0NCj4gI2VuZGlmDQo+IA0KPiBJZiB3ZSBhZGRlZCBFQyBzb3VyY2UgdG8gT3Bl bnNzbExpYi5pbmYgYW5kIGVuYWJsZSBtYWNybyBPUEVOU1NMX05PX0VDLCBFQyBtb2R1bGUgd2ls bCB0aHJvdyBidWlsZCBlcnJvciwNCj4gU2luY2Ugc29tZSBFQyBpbnRlcm5hbCBBUElzIG9yIHN0 cnVjdHMgaGF2ZSBiZWVuIGRpc2FibGVkIGJ5IE9QRU5TU0xfTk9fRUMgYnV0ICBub3QgYW5vdGhl ci4NCj4gVGhpcyBhbiBleGFtcGxlIGZyb20gZWMvZWNfbG9jYWwuaCAsIG90aGVyIGVycm9yIGlz IHNpbWlsYXI6DQo+IA0KPiAjaWZuZGVmIE9QRU5TU0xfTk9fRUMNCj4gdHlwZWRlZiBzdHJ1Y3Qg ZWNfZ3JvdXBfc3QgRUNfR1JPVVA7DQo+IHR5cGVkZWYgc3RydWN0IGVjX3BvaW50X3N0IEVDX1BP SU5UOw0KPiAjZW5kaWYNCj4gDQo+IC8vIGJ1dCB0aGlzIGZ1bmN0aW9uIG5vdCBiZWVuIGVuY2xv c2VkIGJ5IE9QRU5TU0xfTk9fRUMsIGFuZCB3aWxsIHRocm93IGJ1aWxkIGVycm9yDQo+ICAgICBp bnQgKCpwb2ludF9zZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwKSAoY29uc3QgRUNfR1JP VVAgKiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFQ19QT0lOVCAqLCBjb25zdCBCSUdOVU0gKngsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICp5LA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05VTSAqeiwg Qk5fQ1RYICopOw0KPiANCj4gVG8gYXZvaWQgdGhpcyBhbm5veWluZyBvcGVuc3NsIGVycm9yLCB3 ZSBpbnRyb2R1Y2VkIGNvbmRpdGlvbmFsIEVDLg0KPiANCj4gVGhhbmtzLA0KPiBZaQ0KPiANCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiBGcmlkYXksIFNlcHRlbWJlciAyMywg MjAyMiA2OjQ3IEFNDQo+IFRvOiBMaSwgWWkxIDx5aTEubGlAaW50ZWwuY29tPjsgZGV2ZWxAZWRr Mi5ncm91cHMuaW87IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4g SiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwu Y29tPjsgSmlhbmcsDQo+IEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4gU3ViamVj dDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBw b3J0DQo+IA0KPiBIaSBZaSwNCj4gDQo+IEkgYWdyZWUgRUMgaXMgYW4gaW1wb3J0YW50IGZlYXR1 cmUuDQo+IA0KPiBJIGRpZCBzb21lIGFuYWx5c2lzIG9mIHRoZSBzaXplIGltcGFjdCB0byB0aGUg Q3J5cHRvUGtnIG1vZHVsZXMgb24gY3VycmVudCB0cnVuaw0KPiB3aXRoIEVDIG9uIGFuZCBvZmYu IFVuY29tcHJlc3NlZCBzaXplIGlzIGltcG9ydGFudCBmb3IgUEVJIFBoYXNlLiAgRm9yIERYRSBh bmQNCj4gU01NIHBoYXNlLCB0aGUgQ3J5cHRvIHNlcnZpY2VzIGNhbiBhbHdheXMgYmUgY29tcHJl c3NlZC4gIEZyb20gdGhlIHRhYmxlIGJlbG93LA0KPiBidWlsZGluZyBhbGwgdGhlIEVDIHNlcnZp Y2VzIGluIHRoZSBPcGVuc3NsTGliIGhhcyBubyBzaXplIGltcGFjdCB0byB0aGUgTk9ORQ0KPiBw cm9maWxlIGFuZCB0aGUgTUlOX1BFSSBwcm9maWxlLiAgSXQgaGFzIH4xMDUgS0IgaW1wYWN0IHRv IGNvbXByZXNzZWQgRFhFL1NNTQ0KPiB1c2FnZXMgdGhhdCBtYXkgdXNlIHRoZSBNSU5fRFhFX01J Tl9TTU0gb3IgQUxMIHByb2ZpbGVzLg0KPiANCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBVbmNvbXByZXNzZWQgICAgICBMWk1BIENvbXByZXNzZWQNCj4gQ1BVICAgQ1JZUFRP X1NFUlZJQ0VTICAgIE1vZHVsZSAgRUM9RkFMU0UgIEVDPVRSVUUgIEVDPUZBTFNFICBFQz1UUlVF ICBJbmNyZWFzZQ0KPiA9PT09ICA9PT09PT09PT09PT09PT0gID09PT09PT09ICA9PT09PT09PSAg PT09PT09PSAgPT09PT09PT0gID09PT09PT0gID09PT09PT09DQo+IElBMzIgIE5PTkUgICAgICAg ICAgICAgQ3J5cHRvUGVpICAgIDIxNTM2ICAgIDIxNTY4ICAgICAgICAgICAgICAgICAgICAgICAg IDAgS0INCj4gSUEzMiAgTk9ORSAgICAgICAgICAgICBDcnlwdG9EeGUgICAgMjE2MzIgICAgMjE2 OTYgICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KPiBJQTMyICBOT05FICAgICAgICAgICAg IENyeXB0b1NtbSAgICAyMjk3NiAgICAyMzA3MiAgICAgICAgICAgICAgICAgICAgICAgICAwIEtC DQo+IElBMzIgIE1JTl9QRUkgICAgICAgICAgQ3J5cHRvUGVpICAgMjQ4OTkyICAgMjQ5MTIwICAg ICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4gSUEzMiAgTUlOX0RYRV9NSU5fU01NICBDcnlw dG9EeGUgICA2MzY2NzIgICA4Mjk1NjggICAgMjg4NTIwICAgNDAxMDM0ICAgIDExMyBLQg0KPiBJ QTMyICBNSU5fRFhFX01JTl9TTU0gIENyeXB0b1NtbSAgIDQyNjA0OCAgIDYwMTQ3MiAgICAxOTE1 MTcgICAyOTYwMjIgICAgMTA1IEtCDQo+IElBMzIgIEFMTCAgICAgICAgICAgICAgQ3J5cHRvUGVp ICAgNDIzODQwICAgNTk4OTc2ICAgIDE4OTA0NyAgIDI5Mzc1OSAgICAxMDQgS0INCj4gSUEzMiAg QUxMICAgICAgICAgICAgICBDcnlwdG9EeGUgICA2NDUyODAgICA4MzgxNDQgICAgMjkyOTU1ICAg NDA1Mjc3ICAgIDExMyBLQg0KPiBJQTMyICBBTEwgICAgICAgICAgICAgIENyeXB0b1NtbSAgIDQ0 MTg4OCAgIDYxNzE4NCAgICAxOTg3NzkgICAzMDM2MjggICAgMTA1IEtCDQo+IFg2NCAgIE5PTkUg ICAgICAgICAgICAgQ3J5cHRvUGVpICAgIDI5NjMyICAgIDI5NjY0ICAgICAgICAgICAgICAgICAg ICAgICAgIDAgS0INCj4gWDY0ICAgTk9ORSAgICAgICAgICAgICBDcnlwdG9EeGUgICAgMjk3OTIg ICAgMjk3OTIgICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KPiBYNjQgICBOT05FICAgICAg ICAgICAgIENyeXB0b1NtbSAgICAzMTI5NiAgICAzMTI5NiAgICAgICAgICAgICAgICAgICAgICAg ICAwIEtCDQo+IFg2NCAgIE1JTl9QRUkgICAgICAgICAgQ3J5cHRvUGVpICAgMzEwNzg0ICAgMzEw ODQ4ICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4gWDY0ICAgTUlOX0RYRV9NSU5fU01N ICBDcnlwdG9EeGUgICA4MDQyODggIDEwMTYyNTYgICAgMzExNDM2ICAgNDI2NTk2ICAgIDExNSBL Qg0KPiBYNjQgICBNSU5fRFhFX01JTl9TTU0gIENyeXB0b1NtbSAgIDU0Mzc3NiAgIDczMzkyMCAg ICAyMDQ0ODMgICAzMTA3NzUgICAgMTA2IEtCDQo+IFg2NCAgIEFMTCAgICAgICAgICAgICAgQ3J5 cHRvUGVpICAgNTQwMzg0ICAgNzMwMjQwICAgIDIwMjQ5NCAgIDMwODQ2NyAgICAxMDYgS0INCj4g WDY0ICAgQUxMICAgICAgICAgICAgICBDcnlwdG9EeGUgICA4MTUzOTIgIDEwMjcyOTYgICAgMzE2 MjI4ICAgNDMxMzIxICAgIDExNSBLQg0KPiBYNjQgICBBTEwgICAgICAgICAgICAgIENyeXB0b1Nt bSAgIDU2MzY0OCAgIDc1MzY5NiAgICAyMTM0ODggICAzMTk2NDQgICAgMTA2IEtCDQo+IA0KPiBO T1RFOiBFdmVuIGlmIG11bHRpcGxlIG1vZHVsZXMgaW4gYW4gRlYgdXNlIHN0YXRpYyBsaW5raW5n IG9mIENyeXB0byBsaWJzLCBpZiB0aGUNCj4gICAgICAgZW50aXJlIEZWIGlzIGNvbXByZXNzZWQs IHRoZSB0b3RhbCBzaXplIGltcGFjdCBpcyB0eXBpY2FsbHkgdGhlIHNpemUgb2YgYQ0KPiAgICAg ICBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBjb21wcmVzc2VkIENyeXB0b0xpYi4gIFRoZSBzaXplcyBv ZiB0aGUgQ3J5cHRvKiBtb2R1bGVzDQo+ICAgICAgIGluIHRoZSB0YWJsZSBhYm92ZSBzaG91bGQg YmUgYSBjbG9zZSBhcHByb3hpbWF0aW9uIG9mIHRoZSBzaXplIGltcGFjdCB0byBhDQo+ICAgICAg IHNpbmdsZSBGVi4NCj4gDQo+IERvZXMgdGhpcyBtYXRjaCB5b3VyIHByZXZpb3VzIHNpemUgYW5h bHlzaXM/DQo+IA0KPiBUaGUgY3JpdGljYWwgaXNzdWUgdG8gZXZhbHVhdGUgaGVyZSBpcyB3aHkg YWRkaW5nIHRoZSBFQyBzb3VyY2VzIHRvIE9wZW5zbGxMaWIuaW5mDQo+IGNhdXNlcyB0aGUgbW9k dWxlcyB0aGF0IGRvIG5vdCB1c2UgYW55IEVDIHNlcnZpY2VzIHRvIGdyb3cgYnkgfjEwNUtCLiAg SGFzIGFueQ0KPiBkZXRhaWxlZCBhbmFseXNpcyBvZiB0aGUgZmluYWwgbGlua2VkIGltYWdlcyBi ZWVuIHBlcmZvcm1lZCB0byBzZWUgd2hlcmUgdGhpcw0KPiBhZGRpdGlvbmFsIHNpemUgaXMgY29t aW5nIGZyb20/DQo+IA0KPiBUaGFua3MsDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT4NCj4g PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIyLCAyMDIyIDU6NTQgQU0NCj4gPiBUbzogS2lu bmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5n cm91cHMuaW87IEtpc2hvcmUsIFNoZWxseSA8c2hlbGx5Lmtpc2hvcmVAaW50ZWwuY29tPg0KPiA+ IENjOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGpp YW4uai53YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47 IEppYW5nLA0KPiA+IEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0 OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBv cnQNCj4gPg0KPiA+IEhpIE1pa2UsDQo+ID4gSSBoYXZlIGRpZCBzb21lIFBPQyB0aGF0IHNlZW1z IGV4aXN0ZWQgc3RydWN0dXJlZCBQQ0QgaXMgaGFyZCB0byBjb250cm9sIGJpbmFyeSBzaXplLA0K PiA+IEhlcmUgaXMgdGhlIHByZXZpb3VzIGRpc2N1c3Npb24gZm9yIHJlZmVyZW5jZS4NCj4gPiBo dHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTM2NzkNCj4gPiBo dHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdG9waWMvODYyNTc4MTAjODE4MTQNCj4gPiBo dHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDYNCj4gPg0K PiA+IEFueXdheSBFQyBpcyBhbiBpbXBvcnRhbnQgZmVhdHVyZSB3aGljaCBjb25zdW1lZCBieSB2 YXJ5IG1vZGVybiBzZWN1cml0eSBmZWF0dXJlcyBzdWNoIFdQQTMgLCBTUERNLCBUTFMxLjMgZXRj Lg0KPiA+IEhvcGUgaXQgY2FuIGJlIGFkZGVkIHRvIGVkazIsIGFuZCBJIGFtIGdsYWQgdG8gdGFr ZSB0aGUgY29kZSBhbmQgdGVzdCB3b3JrIGlmIHRoZXJlIGFyZSBvdGhlciB3YXlzIHRvIGNvbnRy b2wgdGhlIHNpemUuDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gWWkNCj4gPg0KPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjIsIDIw MjIgMTE6NTYgQU0NCj4gPiBUbzogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT47IGRldmVsQGVk azIuZ3JvdXBzLmlvOyBLaXNob3JlLCBTaGVsbHkgPHNoZWxseS5raXNob3JlQGludGVsLmNvbT4N Cj4gPiBDYzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBK IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5j b20+OyBKaWFuZywNCj4gPiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gU3Vi amVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBz dXBwb3J0DQo+ID4NCj4gPiBUaGF0IGNoYW5nZSB0byBPcGVuc3NsTGliLmluZiBzaG91bGQgbm90 IGhhdmUgYmVlbiBkb25lIGVpdGhlci4NCj4gPg0KPiA+IExvb2tzIGxpa2UgdGhpcyBFQyBmZWF0 dXJlIG5lZWRzIG1vcmUgZXZhbHVhdGlvbiB0byBmaXQgaW50byB0aGUNCj4gPiBzdHJ1Y3R1cmVk IFBDRCBjb250cm9sIG9mIHRoZSBsaWIgc2l6ZXMuDQo+ID4NCj4gPiBNaWtlDQo+ID4NCj4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBMaSwgWWkxIDx5aTEubGlA aW50ZWwuY29tPg0KPiA+ID4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMjEsIDIwMjIgNzox NiBQTQ0KPiA+ID4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiBDYzogWWFvLCBKaWV3ZW4gPGppZXdl bi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBM dSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywNCj4gPiA+IEd1b21pbiA8 Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0g W1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0KPiA+ID4NCj4gPiA+IEhp IE1pa2UsDQo+ID4gPiBUaGFua3MgZm9yIHJldmlldy4NCj4gPiA+DQo+ID4gPiBFdmVuIFBDRF9D UllQVE9fU0VSVklDRV9GQU1JTFlfRU5BQkxFIGlzIHNldCB0byAwLCBDcnlwdG9FYy5jIHdpbGwg YWxzbyBiZSBjb21waWxlZCBhbmQgdGhyb3cgYnVpbGQgZXJyb3I6DQo+ID4gPg0KPiA+ID4gZDpc d29ya3NwYWNlXHRpYW5vY29yZVxlZGsyXENyeXB0b1BrZ1xMaWJyYXJ5XEJhc2VDcnlwdExpYlxQ a1xDcnlwdEVjLmMoNzcpOiBlcnJvciBDMjIyMDogdGhlIGZvbGxvd2luZyB3YXJuaW5nIGlzIHRy ZWF0ZWQNCj4gPiBhcw0KPiA+ID4gYW4gZXJyb3INCj4gPiA+ICAgICAgICAgMSBmaWxlKHMpIGNv cGllZC4NCj4gPiA+IGQ6XHdvcmtzcGFjZVx0aWFub2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFy eVxCYXNlQ3J5cHRMaWJcUGtcQ3J5cHRFYy5jKDc3KTogd2FybmluZyBDNDAxMzogJ0VDX0dST1VQ X25ld19ieV9jdXJ2ZV9uYW1lJw0KPiA+ID4gdW5kZWZpbmVkOyBhc3N1bWluZyBleHRlcm4gcmV0 dXJuaW5nIGludA0KPiA+ID4gZDpcd29ya3NwYWNlXHRpYW5vY29yZVxlZGsyXENyeXB0b1BrZ1xM aWJyYXJ5XEJhc2VDcnlwdExpYlxQa1xDcnlwdEVjLmMoNzcpOiB3YXJuaW5nIEM0MDQ3OiAncmV0 dXJuJzogJ3ZvaWQgKicgZGlmZmVycyBpbg0KPiA+ID4gbGV2ZWxzIG9mIGluZGlyZWN0aW9uIGZy b20gJ2ludCcNCj4gPiA+IGQ6XHdvcmtzcGFjZVx0aWFub2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGli cmFyeVxCYXNlQ3J5cHRMaWJcUGtcQ3J5cHRFYy5jKDEwNSk6IHdhcm5pbmcgQzQwMTM6ICdFQ19H Uk9VUF9nZXRfY3VydmUnDQo+IHVuZGVmaW5lZDsNCj4gPiA+IGFzc3VtaW5nIGV4dGVybiByZXR1 cm5pbmcgaW50DQo+ID4gPg0KPiA+ID4gSSB0aGluayB0aGUgcm9vdCBjYXVzZSBpcyB0aGF0IHdl IGhhdmUgZW5hYmxlZCBjb25kaXRpb25hbCBlYyBpbiBPcGVuc3NsTGliLmluZiBiZWZvcmUgYnkg UGNkT3BlbnNzbEVjRW5hYmxlZCwNCj4gPiA+DQo+ID4NCj4gaHR0cHM6Ly9naXRodWIuY29tL3Rp YW5vY29yZS9lZGsyL2Jsb2IvMmMxN2Q2NzZlNDAyZDc1YTNhNjc0NDk5MzQyZjdkZGFjY2YzODdi ZC9DcnlwdG9Qa2cvTGlicmFyeS9PcGVuc3NsTGliL09wZW5zc2xMaWIuaW5mI0wyDQo+ID4gPiAw Mi1MMjM4DQo+ID4gPiAgaWYgUGNkT3BlbnNzbEVjRW5hYmxlZCBub3QgdHJ1ZSwgYWxsIGVjIGZp bGVzIHdpbGwgbm90IGJlIGNvbXBpbGVkLg0KPiA+ID4gVGhpcyB3aWxsIHNhdmUgMjAwK2tiIG1l bW9yeSBvbiBwbGF0Zm9ybXMgd2hpY2ggdXNlIGR4ZSBkcml2ZXIgYnV0IGRvIG5vdCBuZWVkIGVj IGZlYXR1cmUuDQo+ID4gPg0KPiA+ID4gU28gSSBhZGQgdGhpcyBQQ0QgdG8gQmFzZUNyeXB0TGli LmluZiBhbHNvIHRvIGF2b2lkIGJ1aWxkIGVycm9yLCBOb3Qgc3VyZSBpZiB0aGVyZSBpcyBhbnkg b3RoZXIgd2F5LCBvdGhlciBiZXR0ZXIgaWRlYXMNCj4gYXJlDQo+ID4gPiB3ZWxjb21lLg0KPiA+ ID4NCj4gPiA+IFRoYW5rcywNCj4gPiA+IFlpDQo+ID4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjIsIDIwMjIg MTI6MjIgQU0NCj4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgTGksIFlpMSA8eWkxLmxp QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gPiA+IENjOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBK aWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGlu dGVsLmNvbT47IEppYW5nLA0KPiA+ID4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0K PiA+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6 IEFkZCBFQyBzdXBwb3J0DQo+ID4gPg0KPiA+ID4gQ29tbWVudHMgZW1iZWRkZWQgYmVsb3cuDQo+ ID4gPg0KPiA+ID4gTWlrZQ0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiA+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBz LmlvPiBPbiBCZWhhbGYgT2YgeWkxIGxpDQo+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJl ciAyMCwgMjAyMiA5OjU1IFBNDQo+ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ ID4gPiBDYzogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4u eWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUs IFhpYW95dTENCj4gPiA+ID4gPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsIEd1b21pbiA8 Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4gPiA+ID4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtQ QVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBvcnQNCj4gPiA+ID4NCj4gPiA+ID4g UkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTM4MjgN Cj4gPiA+ID4NCj4gPiA+ID4gVGhpcyBwYXRjaCBpcyB1c2VkIHRvIGFkZCBDcnlwdEVjIGxpYnJh cnksIHdoaWNoIGlzIHdyYXBwZWQNCj4gPiA+ID4gb3ZlciBPcGVuU1NMLg0KPiA+ID4gPg0KPiA+ ID4gPiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBK aWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiBDYzogWGlhb3l1IEx1 IDx4aWFveXUxLmx1QGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IEd1b21pbiBKaWFuZyA8Z3VvbWlu LmppYW5nQGludGVsLmNvbT4NCj4gPiA+ID4NCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogWWkgTGkg PHlpMS5saUBpbnRlbC5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiAgQ3J5cHRvUGtnL0luY2x1 ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaCAgICAgIHwgNDI0ICsrKysrKysrKysNCj4gPiA+ID4g IC4uLi9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5mICAgICB8ICAgMiArDQo+ ID4gPiA+ICAuLi4vTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVpQ3J5cHRMaWIuaW5mICAgICAgfCAg IDEgKw0KPiA+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWMu YyAgIHwgNzY1ICsrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiAgLi4uL0xpYnJhcnkvQmFzZUNy eXB0TGliL1BrL0NyeXB0RWNOdWxsLmMgICAgIHwgNDk2ICsrKysrKysrKysrKw0KPiA+ID4gPiAg Li4uL0xpYnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZiAgICAgIHwgICAxICsNCj4g PiA+ID4gIC4uLi9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mICAgICB8ICAg MSArDQo+ID4gPiA+ICAuLi4vTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL1BrL0NyeXB0RWNOdWxs LmMgfCA0OTYgKysrKysrKysrKysrDQo+ID4gPiA+ICA4IGZpbGVzIGNoYW5nZWQsIDIxODYgaW5z ZXJ0aW9ucygrKQ0KPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IENyeXB0b1BrZy9MaWJyYXJ5 L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjLmMNCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBD cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsv Q3J5cHRFY051bGwuYw0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0lu Y2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaCBiL0NyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkv QmFzZUNyeXB0TGliLmgNCj4gPiA+ID4gaW5kZXggYjI1MzkyM2RkOC4uZDc0ZmMyMWMxZSAxMDA2 NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIu aA0KPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5o DQo+ID4gPiA+IEBAIC0xNCw2ICsxNCwxMyBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiAgI2luY2x1ZGUgPFVlZmkvVWVmaUJh c2VUeXBlLmg+DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lIENSWVBUT19OSURfTlVMTCAgMHgw MDAwDQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8vIEtleSBFeGNoYW5nZQ0KPiA+ID4gPiArI2RlZmlu ZSBDUllQVE9fTklEX1NFQ1AyNTZSMSAgMHgwMjA0DQo+ID4gPiA+ICsjZGVmaW5lIENSWVBUT19O SURfU0VDUDM4NFIxICAweDAyMDUNCj4gPiA+ID4gKyNkZWZpbmUgQ1JZUFRPX05JRF9TRUNQNTIx UjEgIDB4MDIwNg0KPiA+ID4gPiArDQo+ID4gPiA+ICAvLy8NCj4gPiA+ID4gIC8vLyBNRDUgZGln ZXN0IHNpemUgaW4gYnl0ZXMNCj4gPiA+ID4gIC8vLw0KPiA+ID4gPiBAQCAtMjg1MCw0ICsyODU3 LDQyMSBAQCBCaWdOdW1BZGRNb2QgKA0KPiA+ID4gPiAgICBPVVQgVk9JRCAgICAgICAqQm5SZXMN Cj4gPiA+ID4gICAgKTsNCj4gPiA+ID4NCj4gPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCj4gPiA+ID4gKy8vICAgIEJhc2ljIEVsbGlwdGljIEN1cnZlIFByaW1pdGl2ZXMN Cj4gPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ID4gKw0KPiA+ ID4gPiArLyoqDQo+ID4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFY0dyb3VwIG9iamVj dC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBjdXJ2ZSBhbmQNCj4gPiA+ID4gKyAgYW5k IGlzIHVzZWQgZm9yIGNhbGN1bGF0aW9uIHdpdGhpbiB0aGlzIGdyb3VwLiBUaGlzIG9iamVjdCBz aG91bGQgYmUgZnJlZWQNCj4gPiA+ID4gKyAgdXNpbmcgRWNHcm91cEZyZWUoKSBmdW5jdGlvbi4N Cj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBDcnlwdG9OaWQgICBJZGVudGlmeWlu ZyBudW1iZXIgZm9yIHRoZSBFQ0MgY3VydmUgKERlZmluZWQgaW4NCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgQmFzZUNyeXB0TGliLmgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsg IEByZXR2YWwgRWNHcm91cCBvYmplY3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwg TlVMTCAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQg Kg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dyb3VwSW5pdCAoDQo+ID4gPiA+ICsgIElO IFVJTlROICBDcnlwdG9OaWQNCj4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoq DQo+ID4gPiA+ICsgIEdldCBFQyBjdXJ2ZSBwYXJhbWV0ZXJzLiBXaGlsZSBlbGxpcHRpYyBjdXJ2 ZSBlcXVhdGlvbiBpcyBZXjIgbW9kIFAgPSAoWF4zICsgQVggKyBCKSBNb2QgUC4NCj4gPiA+ID4g KyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3Rz ICB0byB0aGUgY29ycmVzcG9uZGluZw0KPiA+ID4gPiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVl ZHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUgIm91dCIgQmlnTnVtYmVyIHBhcmFtZXRlcnMNCj4gPiA+ ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1b b3V0XSBCblByaW1lICAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ID4gKyAgQHBhcmFtW291 dF0gQm5BICAgICAgICBBIGNvZWZmaWNpZW50Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCbkIg ICAgICAgIEIgY29lZmZpY2llbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAg Qk4gY29udGV4dC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg T24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4N Cj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ ICtFY0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwN Cj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuUHJpbWUsDQo+ID4gPiA+ICsgIE9VVCBWT0lE ICAgICAgICpCbkEsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkIsDQo+ID4gPiA+ICsg IElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKioNCj4gPiA+ID4gKyAgR2V0IEVDIGdyb3VwIG9yZGVyLg0KPiA+ID4gPiArICBUaGlzIGZ1 bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdCB0byB0aGUgY29y cmVzcG9uZGluZw0KPiA+ID4gPiArICB2YWx1ZS4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgIm91dCIgQmlnTnVtYmVyIHBhcmFtZXRlcg0KPiA+ID4gPiArICBpcyBwcm9w ZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dy b3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCbk9yZGVyICAg R3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAg ICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3Ro ZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkN Cj4gPiA+ID4gK0VjR3JvdXBHZXRPcmRlciAoDQo+ID4gPiA+ICsgIElOIFZPSUQgICAqRWNHcm91 cCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICpCbk9yZGVyDQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIEVD IGdyb3VwIG9iamVjdCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QgdG8gZnJlZS4NCj4gPiA+ID4g KyoqLw0KPiA+ID4gPiArVk9JRA0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dyb3VwRnJl ZSAoDQo+ID4gPiA+ICsgIElOIFZPSUQgICpFY0dyb3VwDQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRUMgUG9p bnQgb2JqZWN0LiBUaGlzIG9iamVjdCByZXByZXNlbnRzIGFuIEVDIHBvaW50DQo+ID4gPiA+ICsg IHdpdGhpbiB0aGUgZ2l2ZW4gRUMgZ3JvdXAgKGN1cnZlKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBFQyBHcm91cCwgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdXNpbmcgRWNHcm91 cEluaXQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIEVDIFBvaW50IG9iamVjdCAg T24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgIE9uIGZhaWx1 cmUuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiArRUZJQVBJDQo+ID4g PiA+ICtFY1BvaW50SW5pdCAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwDQo+ ID4gPiA+ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBGcmVlIHBy ZXZpb3VzbHkgYWxsb2NhdGVkIEVDIFBvaW50IG9iamVjdCB1c2luZyBFY1BvaW50SW5pdCgpLg0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBQb2ludCB0byBm cmVlLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBDbGVhciAgICAgVFJVRSBpZmYgdGhlIG1lbW9y eSBzaG91bGQgYmUgY2xlYXJlZC4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArVk9JRA0KPiA+ID4g PiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50RGVJbml0ICgNCj4gPiA+ID4gKyAgSU4gVk9JRCAg ICAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIElOIEJPT0xFQU4gIENsZWFyDQo+ID4gPiA+ICsgICk7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBHZXQgRUMgcG9pbnQgYWZmaW5l ICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRo ZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQi IEJpZ051bWJlciBwYXJhbWV0ZXJzDQo+ID4gPiA+ICsgIGFyZSBwcm9wZXJseSBpbml0aWFsaXpl ZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3Vw IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmpl Y3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ ID4gPiArICBAcGFyYW1bb3V0XSBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3 Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBP biBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0K PiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g K0VjUG9pbnRHZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4g KyAgT1VUIFZPSUQgICAgICAgKkJuWCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuWSwN Cj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBTZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkpIGNv b3JkaW5hdGVzLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAg RUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBv aW50IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5h dGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAgICAgWSBjb29yZGluYXRlLg0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBC aWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAg ICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhl cndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ID4gKyAgSU4gQ09O U1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpFY1BvaW50LA0K PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lE ICAqQm5ZLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKTsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEVDIFBvaW50IGFkZGl0aW9uLiBF Y1BvaW50UmVzdWx0ID0gRWNQb2ludEEgKyBFY1BvaW50Qi4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g KyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1 bHQuIFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQ b2ludEEgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEIg ICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAg ICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiAr ICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRBZGQgKA0KPiA+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAg KkVjUG9pbnRSZXN1bHQsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4g PiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4gPiArICBJTiBWT0lEICAg ICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4g PiA+ICsgIFZhcmlhYmxlIEVDIHBvaW50IG11bHRpcGxpY2F0aW9uLiBFY1BvaW50UmVzdWx0ID0g RWNQb2ludCAqIEJuUFNjYWxhci4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0g RWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1bHQuIFRoZSBwb2ludCBz aG91bGQNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJs eSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICAgICAgICBF QyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5QU2NhbGFyICAgICAgICBQIFNjYWxh ci4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBj cmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBy ZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNF ICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4g PiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRNdWwgKA0KPiA+ID4gPiArICBJTiBDT05TVCBW T0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQs DQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4g PiA+ID4gKyAgKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIENhbGN1bGF0 ZSB0aGUgaW52ZXJzZSBvZiB0aGUgc3VwcGxpZWQgRUMgcG9pbnQuDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgICAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g KyAgQHBhcmFtW2luLG91dF0gRWNQb2ludCAgIEVDIHBvaW50IHRvIGludmVydC4NCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgICAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdO dW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiArRWNQb2ludEludmVydCAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3Vw LA0KPiA+ID4gPiArICBJTiBPVVQgVk9JRCAgICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gVk9J RCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0K PiA+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgb24gRUMgY3VydmUuDQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVj dC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNrLg0K PiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRo IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUg ICAgICAgICAgT24gY3VydmUuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhl cndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiArRWNQb2ludElzT25DdXJ2ZSAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4gKyAg SU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ID4g Ky8qKg0KPiA+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgYXQgaW5maW5p dHkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3Vw IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNo ZWNrLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBdCBpbmZp bml0eS4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1Bv aW50SXNBdEluZmluaXR5ICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50DQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBDaGVjayBpZiBFQyBwb2ludHMgYXJlIGVxdWFs Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBv YmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICBFQyBwb2ludCBBLg0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgRUMgcG9pbnQgQi4NCj4gPiA+ID4gKyAgQHBh cmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250 ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIEEgPT0g Qi4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4g KyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50 RXF1YWwgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQ b2ludEIsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApOw0K PiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgU2V0IEVDIHBvaW50IGNvbXByZXNz ZWQgY29vcmRpbmF0ZXMuIFBvaW50cyBjYW4gYmUgZGVzY3JpYmVkIGluIHRlcm1zIG9mDQo+ID4g PiA+ICsgIHRoZWlyIGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIEZvciBhIHBvaW50ICh4LCB5KSwg Zm9yIGFueSBnaXZlbiB2YWx1ZSBmb3IgeA0KPiA+ID4gPiArICBzdWNoIHRoYXQgdGhlIHBvaW50 IGlzIG9uIHRoZSBjdXJ2ZSB0aGVyZSB3aWxsIG9ubHkgZXZlciBiZSB0d28gcG9zc2libGUNCj4g PiA+ID4gKyAgdmFsdWVzIGZvciB5LiBUaGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJlIHNldCB1c2lu ZyB0aGlzIGZ1bmN0aW9uIHdoZXJlIEJuWCBpcw0KPiA+ID4gPiArICB0aGUgeCBjb29yZGluYXRl IGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIG9mIHRoZSB0d28N Cj4gPiA+ID4gKyAgcG9zc2libGUgdmFsdWVzIGZvciB5IHNob3VsZCBiZSB1c2VkLg0KPiA+ID4g PiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0K PiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIFBvaW50Lg0KPiA+ID4gPiArICBA cGFyYW1baW5dICBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgWUJpdCAgICAgICAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggWSB2YWx1ZSBpcyB1c2VkLg0K PiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0 aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVF ICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBP dGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiArRWNQb2ludFNldENvbXByZXNzZWRDb29yZGluYXRlcyAoDQo+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQ b2ludCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ID4gKyAgSU4gVUlO VDggICAgICAgWUJpdCwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCj4gPiA+ID4gKy8vICAgIEVsbGlwdGljIEN1cnZlIERpZmZpZSBIZWxsbWFuIFByaW1pdGl2 ZXMNCj4gPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ID4gKw0K PiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgSW5pdGlhbGl6ZXMgb25lIEVs bGlwdGljIEN1cnZlIENvbnRleHQgZm9yIHN1YnNlcXVlbnQgdXNlDQo+ID4gPiA+ICsgIHdpdGgg dGhlIE5JRC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBOaWQgY2lwaGVyIE5J RA0KPiA+ID4gPiArICBAcmV0dXJuICAgICBQb2ludGVyIHRvIHRoZSBFbGxpcHRpYyBDdXJ2ZSBD b250ZXh0IHRoYXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgICAgICAgICAgICAg IElmIHRoZSBhbGxvY2F0aW9ucyBmYWlscywgRWNOZXdCeU5pZCgpIHJldHVybnMgTlVMTC4NCj4g PiA+ID4gKyoqLw0KPiA+ID4gPiArVk9JRCAqDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0Vj TmV3QnlOaWQgKA0KPiA+ID4gPiArICBJTiBVSU5UTiAgTmlkDQo+ID4gPiA+ICsgICk7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBSZWxlYXNlIHRoZSBzcGVjaWZpZWQgRUMg Y29udGV4dC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0NvbnRleHQgIFBv aW50ZXIgdG8gdGhlIEVDIGNvbnRleHQgdG8gYmUgcmVsZWFzZWQuDQo+ID4gPiA+ICsqKi8NCj4g PiA+ID4gK1ZPSUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNGcmVlICgNCj4gPiA+ID4g KyAgSU4gIFZPSUQgICpFY0NvbnRleHQNCj4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArLyoqDQo+ID4gPiA+ICsgIEdlbmVyYXRlcyBFQyBrZXkgYW5kIHJldHVybnMgRUMgcHVibGlj IGtleSAoWCwgWSksIFBsZWFzZSBub3RlLCB0aGlzIGZ1bmN0aW9uIHVzZXMNCj4gPiA+ID4gKyAg cHNldWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiBUaGUgY2FsbGVyIG11c3QgbWFrZSBzdXJl IFJhbmRvbVNlZWQoKQ0KPiA+ID4gPiArICBmdW5jdGlvbiB3YXMgcHJvcGVybHkgY2FsbGVkIGJl Zm9yZS4NCj4gPiA+ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3RseSBpbml0 aWFsaXplZCBieSBFY05ld0J5TmlkLg0KPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRl cyByYW5kb20gc2VjcmV0LCBhbmQgY29tcHV0ZXMgdGhlIHB1YmxpYyBrZXkgKFgsIFkpLCB3aGlj aCBpcw0KPiA+ID4gPiArICByZXR1cm5lZCB2aWEgcGFyYW1ldGVyIFB1YmxpYywgUHVibGljU2l6 ZS4NCj4gPiA+ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJl aW5nIFB1YmxpY1NpemUgLyAyLA0KPiA+ID4gPiArICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQ dWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1NpemUgLyAyLg0KPiA+ID4gPiArICBFQyBjb250 ZXh0IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiA+ICsgIElmIHRoZSBQdWJsaWMgYnVm ZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSBwdWJsaWMgWCwgWSwgRkFMU0UgaXMgcmV0dXJu ZWQgYW5kDQo+ID4gPiA+ICsgIFB1YmxpY1NpemUgaXMgc2V0IHRvIHRoZSByZXF1aXJlZCBidWZm ZXIgc2l6ZSB0byBvYnRhaW4gdGhlIHB1YmxpYyBYLCBZLg0KPiA+ID4gPiArICBGb3IgUC0yNTYs IHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRl IGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTM4NCwgdGhlIFB1YmxpY1NpemUgaXMgOTYuIEZpcnN0 IDQ4LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAtNTIx LCB0aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5 dGUgaXMgWS4NCj4gPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZB TFNFLg0KPiA+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNF Lg0KPiA+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIGxhcmdlIGVub3VnaCBidXQgUHVibGljIGlz IE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVj Q29udGV4dCAgICAgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiA+ICsgIEBwYXJh bVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZl IGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1Ymxp Y0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhl IHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4g PiArICBAcmV0dmFsIFRSVUUgICBFQyBwdWJsaWMgWCxZIGdlbmVyYXRpb24gc3VjY2VlZGVkLg0K PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBFQyBwdWJsaWMgWCxZIGdlbmVyYXRpb24gZmFpbGVk Lg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBQdWJsaWNLZXlTaXplIGlzIG5vdCBsYXJnZSBl bm91Z2guDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiArRWNHZW5lcmF0ZUtleSAoDQo+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0Nv bnRleHQsDQo+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiA+ICsg IElOIE9VVCAgVUlOVE4gICpQdWJsaWNLZXlTaXplDQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBHZXRzIHRoZSBwdWJsaWMga2V5IGNvbXBvbmVudCBm cm9tIHRoZSBlc3RhYmxpc2hlZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiArICBUaGUgRWMgY29udGV4 dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEVjTmV3QnlOaWQsIGFuZCBzdWNj ZXNzZnVsbHkNCj4gPiA+ID4gKyAgZ2VuZXJhdGUga2V5IHBhaXIgZnJvbSBFY0dlbmVyYXRlS2V5 KCkuDQo+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMy LWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0 aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBp cyBZLg0KPiA+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3Qg NjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBAcGFyYW1baW4s IG91dF0gIEVjQ29udGV4dCAgICAgIFBvaW50ZXIgdG8gRUMgY29udGV4dCBiZWluZyBzZXQuDQo+ ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1 ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiArICBAcGFyYW1b aW4sIG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVm ZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMgYnVmZmVyIGlu IGJ5dGVzLg0KPiA+ID4gPiArICBAcmV0dmFsICBUUlVFICAgRUMga2V5IGNvbXBvbmVudCB3YXMg cmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gKyAgQHJldHZhbCAgRkFMU0UgIEludmFs aWQgRUMga2V5IGNvbXBvbmVudC4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dldFB1YktleSAoDQo+ID4gPiA+ICsgIElOIE9VVCAg Vk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJsaWNLZXks DQo+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICpQdWJsaWNLZXlTaXplDQo+ID4gPiA+ICsgICk7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBDb21wdXRlcyBleGNoYW5nZWQg Y29tbW9uIGtleS4NCj4gPiA+ID4gKyAgR2l2ZW4gcGVlcidzIHB1YmxpYyBrZXkgKFgsIFkpLCB0 aGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSBleGNoYW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ID4g KyAgYmFzZWQgb24gaXRzIG93biBjb250ZXh0IGluY2x1ZGluZyB2YWx1ZSBvZiBjdXJ2ZSBwYXJh bWV0ZXIgYW5kIHJhbmRvbSBzZWNyZXQuDQo+ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYg b2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLA0KPiA+ID4g PiArICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQZWVyUHVibGljIHdpdGggc2l6ZSBiZWluZyBQ ZWVyUHVibGljU2l6ZSAvIDIuDQo+ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVu IHJldHVybiBGQUxTRS4NCj4gPiA+ID4gKyAgSWYgUGVlclB1YmxpYyBpcyBOVUxMLCB0aGVuIHJl dHVybiBGQUxTRS4NCj4gPiA+ID4gKyAgSWYgUGVlclB1YmxpY1NpemUgaXMgMCwgdGhlbiByZXR1 cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIEtleSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4N Cj4gPiA+ID4gKyAgSWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUGVlclB1YmxpY1NpemUgaXMgNjQuIEZp cnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAt Mzg0LCB0aGUgUGVlclB1YmxpY1NpemUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25k IDQ4LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUGVlclB1YmxpY1NpemUg aXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIEVD IGNvbnRleHQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgUGVlclB1YmxpYyAgICAgICAg IFBvaW50ZXIgdG8gdGhlIHBlZXIncyBwdWJsaWMgWCxZLg0KPiA+ID4gPiArICBAcGFyYW1baW5d ICAgICAgIFBlZXJQdWJsaWNTaXplICAgICBTaXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5 dGVzLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIENvbXByZXNzRmxhZyAgICAgICBGbGFn IG9mIFBlZXJQdWJsaWMgaXMgY29tcHJlc3NlZCBvciBub3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtv dXRdICAgICAgS2V5ICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0byByZWNl aXZlIGdlbmVyYXRlZCBrZXkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6ZSAg ICAgICAgICAgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBLZXkgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRo ZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4g KyAgQHJldHZhbCBUUlVFICAgRUMgZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4N Cj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIGZh aWxlZC4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5v dWdoLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4g PiA+ID4gK0VjRGhDb21wdXRlS2V5ICgNCj4gPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgICAgICAg KkVjQ29udGV4dCwNCj4gPiA+ID4gKyAgSU4gICAgICBDT05TVCBVSU5UOCAgKlBlZXJQdWJsaWMs DQo+ID4gPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgIFBlZXJQdWJsaWNTaXplLA0KPiA+ID4g PiArICBJTiAgICAgIENPTlNUIElOVDMyICAqQ29tcHJlc3NGbGFnLA0KPiA+ID4gPiArICBPVVQg ICAgIFVJTlQ4ICAgICAgICAqS2V5LA0KPiA+ID4gPiArICBJTiBPVVQgIFVJTlROICAgICAgICAq S2V5U2l6ZQ0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICAjZW5kaWYgLy8gX19C QVNFX0NSWVBUX0xJQl9IX18NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5 L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5mIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gPiA+ID4gaW5kZXggOWU0YmUyZmIwZC4uYWRlNmVl M2ZkZCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli L0Jhc2VDcnlwdExpYi5pbmYNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gPiA+ID4gQEAgLTUyLDYgKzUyLDggQEANCj4gPiA+ ID4gICAgUGsvQ3J5cHRUcy5jDQo+ID4gPiA+ICAgIFBrL0NyeXB0UnNhUHNzLmMNCj4gPiA+ID4g ICAgUGsvQ3J5cHRSc2FQc3NTaWduLmMNCj4gPiA+ID4gKyAgUGsvQ3J5cHRFY051bGwuYyAgICB8 KnwqfCp8IWdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RPcGVuc3NsRWNFbmFibGVkDQo+ ID4gPiA+ICsgIFBrL0NyeXB0RWMuYyAgICB8KnwqfCp8Z0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VH dWlkLlBjZE9wZW5zc2xFY0VuYWJsZWQNCj4gPiA+DQo+ID4gPiBUaGUgdXNlIG9mIHRoZSBQQ0Qg dG8gc2VsZWN0IHRoZSBmaWxlIHNob3VsZCBub3QgYmUgbmVlZGVkIGhlcmUuICBUaGUNCj4gPiA+ IEVjIEZhbWlseSBhbmQgaW5kaXZpZHVhbCBzZXJ2aWNlIGVuYWJsZS9kaXNhYmxlIGZpZWxkcyBp biB0aGUNCj4gPiA+IFBDRF9DUllQVE9fU0VSVklDRV9GQU1JTFlfRU5BQkxFIHN0cnVjdHVyZWQg UENEIGFyZSBhbGwgdGhhdCBpcyBuZWVkZWQgdG8NCj4gPiA+IGRpc2FibGUgdGhlIEVjIHNlcnZp Y2VzLg0KPiA+ID4NCj4gPiA+IFRoZSBQQ0QgZ0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBj ZE9wZW5zc2xFY0VuYWJsZWQgc2hvdWxkIGJlIHJlbW92ZWQNCj4gPiA+IGNvbXBsZXRlbHkgYXMg cGFydCBvZiB0aGlzIHBhdGNoIHNlcmllcy4NCj4gPiA+DQo+ID4gPiA+ICAgIFBlbS9DcnlwdFBl bS5jDQo+ID4gPiA+ICAgIEJuL0NyeXB0Qm4uYw0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGliLmluZiBiL0NyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYNCj4gPiA+ID4gaW5kZXgg NjVhZDIzZmI4MS4uMzgzZGYyYjIzYyAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGliLmluZg0KPiA+ID4gPiArKysgYi9DcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVpQ3J5cHRMaWIuaW5mDQo+ID4gPiA+IEBAIC01OCw2 ICs1OCw3IEBADQo+ID4gPiA+ICAgIFBrL0NyeXB0VHNOdWxsLmMNCj4gPiA+ID4gICAgUGsvQ3J5 cHRSc2FQc3MuYw0KPiA+ID4gPiAgICBQay9DcnlwdFJzYVBzc1NpZ25OdWxsLmMNCj4gPiA+ID4g KyAgUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiAgICBQZW0vQ3J5cHRQZW1OdWxsLmMNCj4gPiA+ ID4gICAgUmFuZC9DcnlwdFJhbmROdWxsLmMNCj4gPiA+ID4gICAgQm4vQ3J5cHRCbk51bGwuYw0K PiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0Ny eXB0RWMuYyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjLmMNCj4g PiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMzk2 YzgxOTgzNA0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjLmMNCj4gPiA+ID4gQEAgLTAsMCArMSw3NjUg QEANCj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPiArICBFbGxpcHRpYyBDdXJ2ZSBhbmQgRUNE SCBBUEkgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gT3BlblNTTA0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiA+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ID4gPiArDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiAr I2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiA+ID4gKyNpbmNsdWRlIDxvcGVuc3Ns L29iamVjdHMuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+DQo+ID4gPiA+ICsj aW5jbHVkZSA8b3BlbnNzbC9lYy5oPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsvLyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ICsvLyAgICBCYXNpYyBFbGxpcHRpYyBDdXJ2ZSBQ cmltaXRpdmVzDQo+ID4gPiA+ICsvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4g PiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBSZXR1cm4gdGhlIE5pZCBvZiBjZXJ0YWlu IEVDQyBjdXJ2ZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBDcnlwdG9OaWQg ICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0MgY3VydmUgKERlZmluZWQgaW4NCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZUNyeXB0TGliLmgpLg0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIEByZXR2YWwgIT0tMSAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0 dmFsIC0xICAgICAgRUNDIGN1cnZlIG5vdCBzdXBwb3J0ZWQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ ID4gK1NUQVRJQw0KPiA+ID4gPiArSU5UMzINCj4gPiA+ID4gK0NyeXB0b05pZFRvT3BlbnNzbE5p ZCAoDQo+ID4gPiA+ICsgIElOIFVJTlROICBDcnlwdG9OaWQNCj4gPiA+ID4gKyAgKQ0KPiA+ID4g PiArew0KPiA+ID4gPiArICBJTlQzMiAgTmlkOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIHN3aXRj aCAoQ3J5cHRvTmlkKSB7DQo+ID4gPiA+ICsgICAgY2FzZSBDUllQVE9fTklEX1NFQ1AyNTZSMToN Cj4gPiA+ID4gKyAgICAgIE5pZCA9IE5JRF9YOV82Ml9wcmltZTI1NnYxOw0KPiA+ID4gPiArICAg ICAgYnJlYWs7DQo+ID4gPiA+ICsgICAgY2FzZSBDUllQVE9fTklEX1NFQ1AzODRSMToNCj4gPiA+ ID4gKyAgICAgIE5pZCA9IE5JRF9zZWNwMzg0cjE7DQo+ID4gPiA+ICsgICAgICBicmVhazsNCj4g PiA+ID4gKyAgICBjYXNlIENSWVBUT19OSURfU0VDUDUyMVIxOg0KPiA+ID4gPiArICAgICAgTmlk ID0gTklEX3NlY3A1MjFyMTsNCj4gPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gPiArICAgIGRl ZmF1bHQ6DQo+ID4gPiA+ICsgICAgICByZXR1cm4gLTE7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4g Kw0KPiA+ID4gPiArICByZXR1cm4gTmlkOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKioNCj4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVjR3JvdXAgb2JqZWN0LiBU aGlzIG9iamVjdCByZXByZXNlbnRzIGFuIEVDIGN1cnZlIGFuZA0KPiA+ID4gPiArICBhbmQgaXMg dXNlZCBmb3IgY2FsY3VsYXRpb24gd2l0aGluIHRoaXMgZ3JvdXAuIFRoaXMgb2JqZWN0IHNob3Vs ZCBiZSBmcmVlZA0KPiA+ID4gPiArICB1c2luZyBFY0dyb3VwRnJlZSgpIGZ1bmN0aW9uLg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENyeXB0b05pZCAgIElkZW50aWZ5aW5nIG51 bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZSAoRGVmaW5lZCBpbg0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJl dHZhbCBFY0dyb3VwIG9iamVjdCAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBOVUxM ICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArVk9JRCAqDQo+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR3JvdXBJbml0ICgNCj4gPiA+ID4gKyAgSU4gVUlO VE4gIENyeXB0b05pZA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIElOVDMy ICBOaWQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgTmlkID0gQ3J5cHRvTmlkVG9PcGVuc3NsTmlk IChDcnlwdG9OaWQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmIChOaWQgPCAwKSB7DQo+ID4g PiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICByZXR1cm4gRUNfR1JPVVBfbmV3X2J5X2N1cnZlX25hbWUgKE5pZCk7DQo+ID4gPiA+ICt9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBHZXQgRUMgY3VydmUgcGFyYW1ldGVy cy4gV2hpbGUgZWxsaXB0aWMgY3VydmUgZXF1YXRpb24gaXMgWV4yIG1vZCBQID0gKFheMyArIEFY ICsgQikgTW9kIFAuDQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3Zp ZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyAgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ID4gKyAg dmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051 bWJlciBwYXJhbWV0ZXJzDQo+ID4gPiA+ICsgIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4g PiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVj dC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5QcmltZSAgICBHcm91cCBwcmltZSBudW1iZXIu DQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQSAgICAgICAgQSBjb2VmZmljaWVudC4NCj4gPiA+ ID4gKyAgQHBhcmFtW291dF0gQm5CICAgICAgICBCIGNvZWZmaWNpZW50Li4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsg IEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZB TFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR3JvdXBHZXRDdXJ2ZSAoDQo+ID4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5Qcmlt ZSwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQSwNCj4gPiA+ID4gKyAgT1VUIFZPSUQg ICAgICAgKkJuQiwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsg ICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX0dST1VQX2dldF9j dXJ2ZSAoRWNHcm91cCwgQm5QcmltZSwgQm5BLCBCbkIsIEJuQ3R4KTsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdldCBFQyBncm91cCBvcmRlci4NCj4g PiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBv YmplY3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ID4gKyAgdmFsdWUuIFRoZSBjYWxsZXIg bmVlZHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXINCj4g PiA+ID4gKyAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFt W291dF0gQm5PcmRlciAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBG QUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0K PiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dyb3VwR2V0T3JkZXIgKA0KPiA+ID4gPiArICBJ TiBWT0lEICAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAqQm5PcmRlcg0KPiA+ID4g PiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIHJldHVybiAoQk9PTEVBTilFQ19HUk9VUF9n ZXRfb3JkZXIgKEVjR3JvdXAsIEJuT3JkZXIsIE5VTEwpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBn cm91cCBvYmplY3QgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBA cGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0IHRvIGZyZWUuDQo+ID4gPiA+ICsq Ki8NCj4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNHcm91cEZyZWUg KA0KPiA+ID4gPiArICBJTiBWT0lEICAqRWNHcm91cA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7 DQo+ID4gPiA+ICsgIEVDX0dST1VQX2ZyZWUgKEVjR3JvdXApOw0KPiA+ID4gPiArfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVDIFBv aW50IG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBwb2ludA0KPiA+ID4gPiAr ICB3aXRoaW4gdGhlIGdpdmVuIEVDIGdyb3VwIChjdXJ2ZSkuDQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgRUMgR3JvdXAsIHByb3Blcmx5IGluaXRpYWxpemVkIHVzaW5nIEVjR3Jv dXBJbml0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBFQyBQb2ludCBvYmplY3Qg IE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgICBPbiBmYWls dXJlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiArRWNQb2ludEluaXQgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cA0K PiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIHJldHVybiBFQ19QT0lOVF9uZXcg KEVjR3JvdXApOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4g KyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBQb2ludCBvYmplY3QgdXNpbmcgRWNQb2lu dEluaXQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMg UG9pbnQgdG8gZnJlZS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ2xlYXIgICAgIFRSVUUgaWZm IHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFyZWQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZP SUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludERlSW5pdCAoDQo+ID4gPiA+ICsg IElOIFZPSUQgICAgICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0KPiA+ ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIGlmIChDbGVhcikgew0KPiA+ID4gPiAr ICAgIEVDX1BPSU5UX2NsZWFyX2ZyZWUgKEVjUG9pbnQpOw0KPiA+ID4gPiArICB9IGVsc2Ugew0K PiA+ID4gPiArICAgIEVDX1BPSU5UX2ZyZWUgKEVjUG9pbnQpOw0KPiA+ID4gPiArICB9DQo+ID4g PiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBHZXQgRUMgcG9pbnQg YWZmaW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwg c2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcN Cj4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhl ICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXJzDQo+ID4gPiA+ICsgIGFyZSBwcm9wZXJseSBpbml0 aWFsaXplZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVD IGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2lu dCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWCAgICAgICAgWCBjb29yZGluYXRl Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmln TnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAg ICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3 aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4g PiA+ID4gK0VjUG9pbnRHZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ICsgIElOIENPTlNU IFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4g PiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuWCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAg KkJuWSwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4g PiA+ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX1BPSU5UX2dldF9hZmZpbmVf Y29vcmRpbmF0ZXMgKEVjR3JvdXAsIEVjUG9pbnQsIEJuWCwgQm5ZLCBCbkN0eCk7DQo+ID4gPiA+ ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBTZXQgRUMgcG9pbnQgYWZm aW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1Bv aW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAgICAg ICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAgICAgWSBjb29y ZGluYXRlLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNy ZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJl dHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug ICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAg ICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiArICBJ TiBDT05TVCBWT0lEICAqQm5ZLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4g PiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9J TlRfc2V0X2FmZmluZV9jb29yZGluYXRlcyAoRWNHcm91cCwgRWNQb2ludCwgQm5YLCBCblksIEJu Q3R4KTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEVD IFBvaW50IGFkZGl0aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludEEgKyBFY1BvaW50Qi4NCj4g PiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3Vw IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2lu dCB0byBob2xkIHRoZSByZXN1bHQuIFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNQb2ludEEgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBh cmFtW2luXSAgRWNQb2ludEIgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29u dGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBz dWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0Vj UG9pbnRBZGQgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4g KyAgT1VUIFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZP SUQgICpFY1BvaW50QSwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0K PiA+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRfYWRkIChFY0dyb3VwLCBFY1BvaW50 UmVzdWx0LCBFY1BvaW50QSwgRWNQb2ludEIsIEJuQ3R4KTsNCj4gPiA+ID4gK30NCj4gPiA+ID4g Kw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIFZhcmlhYmxlIEVDIHBvaW50IG11bHRpcGxpY2F0 aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludCAqIEJuUFNjYWxhci4NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4g PiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRo ZSByZXN1bHQuIFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNQb2ludCAgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5Q U2NhbGFyICAgICAgICBQIFNjYWxhci4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAg ICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRNdWwgKA0K PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQg ICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50 LA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gPiArICBJTiBW T0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBy ZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRfbXVsIChFY0dyb3VwLCBFY1BvaW50UmVzdWx0LCBOVUxM LCBFY1BvaW50LCBCblBTY2FsYXIsIEJuQ3R4KTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ ID4gPiArLyoqDQo+ID4gPiA+ICsgIENhbGN1bGF0ZSB0aGUgaW52ZXJzZSBvZiB0aGUgc3VwcGxp ZWQgRUMgcG9pbnQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgRWNHcm91 cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLG91dF0gRWNQb2ludCAg IEVDIHBvaW50IHRvIGludmVydC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgQm5DdHggICAg IEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludEludmVydCAoDQo+ID4g PiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBPVVQgVk9JRCAg ICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsg ICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX1BPSU5UX2ludmVy dCAoRWNHcm91cCwgRWNQb2ludCwgQm5DdHgpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4g PiA+ICsvKioNCj4gPiA+ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIG9uIEVD IGN1cnZlLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBn cm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0 byBjaGVjay4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNy ZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJl dHZhbCBUUlVFICAgICAgICAgIE9uIGN1cnZlLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRJc09uQ3VydmUgKA0KPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7 DQo+ID4gPiA+ICsgIHJldHVybiBFQ19QT0lOVF9pc19vbl9jdXJ2ZSAoRWNHcm91cCwgRWNQb2lu dCwgQm5DdHgpID09IDE7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgYXQgaW5maW5pdHkuDQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNrLg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBdCBpbmZpbml0eS4NCj4g PiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0K PiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50SXNBdElu ZmluaXR5ICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY1BvaW50DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ ID4gKyAgcmV0dXJuIEVDX1BPSU5UX2lzX2F0X2luZmluaXR5IChFY0dyb3VwLCBFY1BvaW50KSA9 PSAxOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQ2hl Y2sgaWYgRUMgcG9pbnRzIGFyZSBlcXVhbC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1b aW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50QSAgRUMgcG9pbnQgQS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEIgIEVD IHBvaW50IEIuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBj cmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBy ZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAg ICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludEVxdWFsICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAg ICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICByZXR1cm4gRUNf UE9JTlRfY21wIChFY0dyb3VwLCBFY1BvaW50QSwgRWNQb2ludEIsIEJuQ3R4KSA9PSAwOw0KPiA+ ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgU2V0IEVDIHBvaW50 IGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIFBvaW50cyBjYW4gYmUgZGVzY3JpYmVkIGluIHRlcm1z IG9mDQo+ID4gPiA+ICsgIHRoZWlyIGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIEZvciBhIHBvaW50 ICh4LCB5KSwgZm9yIGFueSBnaXZlbiB2YWx1ZSBmb3IgeA0KPiA+ID4gPiArICBzdWNoIHRoYXQg dGhlIHBvaW50IGlzIG9uIHRoZSBjdXJ2ZSB0aGVyZSB3aWxsIG9ubHkgZXZlciBiZSB0d28gcG9z c2libGUNCj4gPiA+ID4gKyAgdmFsdWVzIGZvciB5LiBUaGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJl IHNldCB1c2luZyB0aGlzIGZ1bmN0aW9uIHdoZXJlIEJuWCBpcw0KPiA+ID4gPiArICB0aGUgeCBj b29yZGluYXRlIGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIG9m IHRoZSB0d28NCj4gPiA+ID4gKyAgcG9zc2libGUgdmFsdWVzIGZvciB5IHNob3VsZCBiZSB1c2Vk Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIFBvaW50Lg0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgWUJpdCAgICAgICAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggWSB2YWx1ZSBp cyB1c2VkLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNy ZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJl dHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug ICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludFNldENvbXByZXNzZWRDb29yZGluYXRlcyAoDQo+ ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBWT0lEICAg ICAgICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ID4g KyAgSU4gVUlOVDggICAgICAgWUJpdCwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4 DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVD X1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzIChFY0dyb3VwLCBFY1BvaW50LCBCblgs IFlCaXQsIEJuQ3R4KTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLy8gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gPiArLy8gICAgRWxsaXB0aWMgQ3VydmUgRGlm ZmllIEhlbGxtYW4gUHJpbWl0aXZlcw0KPiA+ID4gPiArLy8gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQWxsb2NhdGVzIGFu ZCBJbml0aWFsaXplcyBvbmUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCBmb3Igc3Vic2VxdWVudCB1 c2UNCj4gPiA+ID4gKyAgd2l0aCB0aGUgTklELg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIE5pZCAgIElkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZSAoRGVmaW5l ZCBpbg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4g PiA+ICsgIEByZXR1cm4gICAgIFBvaW50ZXIgdG8gdGhlIEVsbGlwdGljIEN1cnZlIENvbnRleHQg dGhhdCBoYXMgYmVlbiBpbml0aWFsaXplZC4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgSWYgdGhl IGFsbG9jYXRpb25zIGZhaWxzLCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxMLg0KPiA+ID4gPiAr KiovDQo+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNOZXdCeU5p ZCAoDQo+ID4gPiA+ICsgIElOIFVJTlROICBOaWQNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0K PiA+ID4gPiArICBJTlQzMiAgT3BlblNzbE5pZDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBPcGVu U3NsTmlkID0gQ3J5cHRvTmlkVG9PcGVuc3NsTmlkIChOaWQpOw0KPiA+ID4gPiArICBpZiAoT3Bl blNzbE5pZCA8IDApIHsNCj4gPiA+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gKyAgfQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIHJldHVybiAoVk9JRCAqKUVDX0tFWV9uZXdfYnlfY3VydmVf bmFtZSAoT3BlblNzbE5pZCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0K PiA+ID4gPiArICBSZWxlYXNlIHRoZSBzcGVjaWZpZWQgRUMgY29udGV4dC4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcGFyYW1baW5dICBFY0NvbnRleHQgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRl eHQgdG8gYmUgcmVsZWFzZWQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiArRWNGcmVlICgNCj4gPiA+ID4gKyAgSU4gIFZPSUQgICpFY0NvbnRl eHQNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBFQ19LRVlfZnJlZSAoKEVD X0tFWSAqKUVjQ29udGV4dCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0K PiA+ID4gPiArICBHZW5lcmF0ZXMgRUMga2V5IGFuZCByZXR1cm5zIEVDIHB1YmxpYyBrZXkgKFgs IFkpLCBQbGVhc2Ugbm90ZSwgdGhpcyBmdW5jdGlvbiB1c2VzDQo+ID4gPiA+ICsgIHBzZXVkbyBy YW5kb20gbnVtYmVyIGdlbmVyYXRvci4gVGhlIGNhbGxlciBtdXN0IG1ha2Ugc3VyZSBSYW5kb21T ZWVkKCkNCj4gPiA+ID4gKyAgZnVuY3Rpb24gd2FzIHByb3Blcmx5IGNhbGxlZCBiZWZvcmUuDQo+ ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQg YnkgRWNOZXdCeU5pZC4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMgcmFuZG9t IHNlY3JldCwgYW5kIGNvbXB1dGVzIHRoZSBwdWJsaWMga2V5IChYLCBZKSwgd2hpY2ggaXMNCj4g PiA+ID4gKyAgcmV0dXJuZWQgdmlhIHBhcmFtZXRlciBQdWJsaWMsIFB1YmxpY1NpemUuDQo+ID4g PiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJs aWNTaXplIC8gMiwNCj4gPiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUHVibGljIHdp dGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMi4NCj4gPiA+ID4gKyAgRUMgY29udGV4dCBpcyB1 cGRhdGVkIGFjY29yZGluZ2x5Lg0KPiA+ID4gPiArICBJZiB0aGUgUHVibGljIGJ1ZmZlciBpcyB0 b28gc21hbGwgdG8gaG9sZCB0aGUgcHVibGljIFgsIFksIEZBTFNFIGlzIHJldHVybmVkIGFuZA0K PiA+ID4gPiArICBQdWJsaWNTaXplIGlzIHNldCB0byB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUg dG8gb2J0YWluIHRoZSBwdWJsaWMgWCwgWS4NCj4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVi bGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZSBpcyBZLg0K PiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRl IGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1 YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFku DQo+ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4g PiA+ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBsYXJnZSBlbm91Z2ggYnV0IFB1YmxpYyBpcyBOVUxMLCB0 aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQg ICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSAg ICAgIFB1YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZSBnZW5lcmF0 ZWQgcHVibGljIFgsWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXpl ICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9m IGRhdGEgcmV0dXJuZWQgaW4gUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAgQHJl dHZhbCBUUlVFICAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ ID4gKyAgQHJldHZhbCBGQUxTRSAgUHVibGljS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0K PiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g K0VjR2VuZXJhdGVLZXkgKA0KPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRWNDb250ZXh0LA0K PiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gPiArICBJTiBPVVQg IFVJTlROICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ ICsgIEVDX0tFWSAgICAgICAgICAqRWNLZXk7DQo+ID4gPiA+ICsgIENPTlNUIEVDX0dST1VQICAq R3JvdXA7DQo+ID4gPiA+ICsgIENPTlNUIEVDX1BPSU5UICAqRWNQb2ludDsNCj4gPiA+ID4gKyAg Qk9PTEVBTiAgICAgICAgIFJldFZhbDsNCj4gPiA+ID4gKyAgQklHTlVNICAgICAgICAgICpCblg7 DQo+ID4gPiA+ICsgIEJJR05VTSAgICAgICAgICAqQm5ZOw0KPiA+ID4gPiArICBVSU5UTiAgICAg ICAgICAgSGFsZlNpemU7DQo+ID4gPiA+ICsgIElOVE4gICAgICAgICAgICBYU2l6ZTsNCj4gPiA+ ID4gKyAgSU5UTiAgICAgICAgICAgIFlTaXplOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmICgo RWNDb250ZXh0ID09IE5VTEwpIHx8IChQdWJsaWNLZXlTaXplID09IE5VTEwpKSB7DQo+ID4gPiA+ ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg aWYgKChQdWJsaWNLZXkgPT0gTlVMTCkgJiYgKCpQdWJsaWNLZXlTaXplICE9IDApKSB7DQo+ID4g PiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgRWNLZXkgICAgPSAoRUNfS0VZICopRWNDb250ZXh0Ow0KPiA+ID4gPiArICBHcm91cCAgICA9 IEVDX0tFWV9nZXQwX2dyb3VwIChFY0tleSk7DQo+ID4gPiA+ICsgIEhhbGZTaXplID0gKEVDX0dS T1VQX2dldF9kZWdyZWUgKEdyb3VwKSArIDcpIC8gODsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAv LyBBc3N1bWUgUkFORF9zZWVkIHdhcyBjYWxsZWQNCj4gPiA+ID4gKyAgaWYgKEVDX0tFWV9nZW5l cmF0ZV9rZXkgKEVjS2V5KSAhPSAxKSB7DQo+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKCpQdWJsaWNLZXlTaXplIDwgSGFs ZlNpemUgKiAyKSB7DQo+ID4gPiA+ICsgICAgKlB1YmxpY0tleVNpemUgPSBIYWxmU2l6ZSAqIDI7 DQo+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgKlB1YmxpY0tleVNpemUgPSBIYWxmU2l6ZSAqIDI7DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgRWNQb2ludCA9IEVDX0tFWV9nZXQwX3B1YmxpY19rZXkgKEVjS2V5KTsNCj4gPiA+ID4g KyAgaWYgKEVjUG9pbnQgPT0gTlVMTCkgew0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4g PiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIFJldFZhbCA9IEZBTFNFOw0KPiA+ID4g PiArICBCblggICAgPSBCTl9uZXcgKCk7DQo+ID4gPiA+ICsgIEJuWSAgICA9IEJOX25ldyAoKTsN Cj4gPiA+ID4gKyAgaWYgKChCblggPT0gTlVMTCkgfHwgKEJuWSA9PSBOVUxMKSkgew0KPiA+ID4g PiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlm IChFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzIChHcm91cCwgRWNQb2ludCwgQm5YLCBC blksIE5VTEwpICE9IDEpIHsNCj4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gKw0KPiA+ID4gPiArICBYU2l6ZSA9IEJOX251bV9ieXRlcyAoQm5YKTsNCj4gPiA+ ID4gKyAgWVNpemUgPSBCTl9udW1fYnl0ZXMgKEJuWSk7DQo+ID4gPiA+ICsgIGlmICgoWFNpemUg PD0gMCkgfHwgKFlTaXplIDw9IDApKSB7DQo+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4g PiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQVNTRVJUICgoVUlOVE4pWFNpemUgPD0gSGFs ZlNpemUgJiYgKFVJTlROKVlTaXplIDw9IEhhbGZTaXplKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBaZXJvTWVtIChQdWJsaWNLZXksICpQdWJsaWNLZXlTaXplKTsNCj4gPiA+ID4gKyAgQk5fYm4y YmluIChCblgsICZQdWJsaWNLZXlbMCArIEhhbGZTaXplIC0gWFNpemVdKTsNCj4gPiA+ID4gKyAg Qk5fYm4yYmluIChCblksICZQdWJsaWNLZXlbSGFsZlNpemUgKyBIYWxmU2l6ZSAtIFlTaXplXSk7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgUmV0VmFsID0gVFJVRTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArZmFpbDoNCj4gPiA+ID4gKyAgQk5fZnJlZSAoQm5YKTsNCj4gPiA+ID4gKyAgQk5fZnJlZSAo Qm5ZKTsNCj4gPiA+ID4gKyAgcmV0dXJuIFJldFZhbDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdldHMgdGhlIHB1YmxpYyBrZXkgY29tcG9uZW50IGZy b20gdGhlIGVzdGFibGlzaGVkIEVDIGNvbnRleHQuDQo+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0 IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZCwgYW5kIHN1Y2Nl c3NmdWxseQ0KPiA+ID4gPiArICBnZW5lcmF0ZSBrZXkgcGFpciBmcm9tIEVjR2VuZXJhdGVLZXko KS4NCj4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzIt Ynl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC0zODQsIHRo ZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlz IFkuDQo+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2 Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwg b3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byBFQyBjb250ZXh0IGJlaW5nIHNldC4NCj4g PiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVm ZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtp biwgb3V0XSAgUHVibGljS2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZm ZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYyBidWZmZXIgaW4g Ynl0ZXMuDQo+ID4gPiA+ICsgIEByZXR2YWwgIFRSVUUgICBFQyBrZXkgY29tcG9uZW50IHdhcyBy ZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gPiArICBAcmV0dmFsICBGQUxTRSAgSW52YWxp ZCBFQyBrZXkgY29tcG9uZW50Lg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4g PiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR2V0UHViS2V5ICgNCj4gPiA+ID4gKyAgSU4gT1VUICBW T0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwN Cj4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ID4gKyAgKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArICBFQ19LRVkgICAgICAgICAgKkVjS2V5Ow0KPiA+ID4gPiAr ICBDT05TVCBFQ19HUk9VUCAgKkdyb3VwOw0KPiA+ID4gPiArICBDT05TVCBFQ19QT0lOVCAgKkVj UG9pbnQ7DQo+ID4gPiA+ICsgIEJJR05VTSAgICAgICAgICAqQm5YOw0KPiA+ID4gPiArICBCSUdO VU0gICAgICAgICAgKkJuWTsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgIEhhbGZTaXplOw0K PiA+ID4gPiArICBJTlROICAgICAgICAgICAgWFNpemU7DQo+ID4gPiA+ICsgIElOVE4gICAgICAg ICAgICBZU2l6ZTsNCj4gPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgIFJldFZhbDsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArICBpZiAoKEVjQ29udGV4dCA9PSBOVUxMKSB8fCAoUHVibGljS2V5U2l6ZSA9 PSBOVUxMKSkgew0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIGlmICgoUHVibGljS2V5ID09IE5VTEwpICYmICgqUHVibGljS2V5 U2l6ZSAhPSAwKSkgew0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gKyAgfQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEVjS2V5ICAgID0gKEVDX0tFWSAqKUVjQ29udGV4dDsNCj4g PiA+ID4gKyAgR3JvdXAgICAgPSBFQ19LRVlfZ2V0MF9ncm91cCAoRWNLZXkpOw0KPiA+ID4gPiAr ICBIYWxmU2l6ZSA9IChFQ19HUk9VUF9nZXRfZGVncmVlIChHcm91cCkgKyA3KSAvIDg7DQo+ID4g PiA+ICsgIGlmICgqUHVibGljS2V5U2l6ZSA8IEhhbGZTaXplICogMikgew0KPiA+ID4gPiArICAg ICpQdWJsaWNLZXlTaXplID0gSGFsZlNpemUgKiAyOw0KPiA+ID4gPiArICAgIHJldHVybiBGQUxT RTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICpQdWJsaWNLZXlTaXplID0g SGFsZlNpemUgKiAyOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEVjUG9pbnQgPSBFQ19LRVlfZ2V0 MF9wdWJsaWNfa2V5IChFY0tleSk7DQo+ID4gPiA+ICsgIGlmIChFY1BvaW50ID09IE5VTEwpIHsN Cj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICBSZXRWYWwgPSBGQUxTRTsNCj4gPiA+ID4gKyAgQm5YICAgID0gQk5fbmV3ICgpOw0K PiA+ID4gPiArICBCblkgICAgPSBCTl9uZXcgKCk7DQo+ID4gPiA+ICsgIGlmICgoQm5YID09IE5V TEwpIHx8IChCblkgPT0gTlVMTCkpIHsNCj4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAoRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29y ZGluYXRlcyAoR3JvdXAsIEVjUG9pbnQsIEJuWCwgQm5ZLCBOVUxMKSAhPSAxKSB7DQo+ID4gPiA+ ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgWFNp emUgPSBCTl9udW1fYnl0ZXMgKEJuWCk7DQo+ID4gPiA+ICsgIFlTaXplID0gQk5fbnVtX2J5dGVz IChCblkpOw0KPiA+ID4gPiArICBpZiAoKFhTaXplIDw9IDApIHx8IChZU2l6ZSA8PSAwKSkgew0K PiA+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgIEFTU0VSVCAoKFVJTlROKVhTaXplIDw9IEhhbGZTaXplICYmIChVSU5UTilZU2l6ZSA8PSBI YWxmU2l6ZSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKFB1YmxpY0tleSAhPSBOVUxMKSB7 DQo+ID4gPiA+ICsgICAgWmVyb01lbSAoUHVibGljS2V5LCAqUHVibGljS2V5U2l6ZSk7DQo+ID4g PiA+ICsgICAgQk5fYm4yYmluIChCblgsICZQdWJsaWNLZXlbMCArIEhhbGZTaXplIC0gWFNpemVd KTsNCj4gPiA+ID4gKyAgICBCTl9ibjJiaW4gKEJuWSwgJlB1YmxpY0tleVtIYWxmU2l6ZSArIEhh bGZTaXplIC0gWVNpemVdKTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIFJl dFZhbCA9IFRSVUU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2ZhaWw6DQo+ID4gPiA+ICsgIEJOX2Zy ZWUgKEJuWCk7DQo+ID4gPiA+ICsgIEJOX2ZyZWUgKEJuWSk7DQo+ID4gPiA+ICsgIHJldHVybiBS ZXRWYWw7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBD b21wdXRlcyBleGNoYW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ID4gKyAgR2l2ZW4gcGVlcidzIHB1 YmxpYyBrZXkgKFgsIFkpLCB0aGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSBleGNoYW5nZWQgY29t bW9uIGtleSwNCj4gPiA+ID4gKyAgYmFzZWQgb24gaXRzIG93biBjb250ZXh0IGluY2x1ZGluZyB2 YWx1ZSBvZiBjdXJ2ZSBwYXJhbWV0ZXIgYW5kIHJhbmRvbSBzZWNyZXQuDQo+ID4gPiA+ICsgIFgg aXMgdGhlIGZpcnN0IGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1Ymxp Y1NpemUgLyAyLA0KPiA+ID4gPiArICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQZWVyUHVibGlj IHdpdGggc2l6ZSBiZWluZyBQZWVyUHVibGljU2l6ZSAvIDIuDQo+ID4gPiA+ICsgIElmIHB1Ymxp YyBrZXkgaXMgY29tcHJlc3NlZCwgdGhlIFBlZXJQdWJsaWMgd2lsbCBvbmx5IGNvbnRhaW4gaGFs ZiBrZXkgKFgpLg0KPiA+ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4g RkFMU0UuDQo+ID4gPiA+ICsgIElmIFBlZXJQdWJsaWMgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFM U0UuDQo+ID4gPiA+ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRoZW4gcmV0dXJuIEZBTFNF Lg0KPiA+ID4gPiArICBJZiBLZXkgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ ICsgIElmIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1i eXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTM4NCwgdGhl IFBlZXJQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRl IGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDEzMi4g Rmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBAcGFy YW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0 Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWMgICAgICAgICBQb2ludGVy IHRvIHRoZSBwZWVyJ3MgcHVibGljIFgsWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBQ ZWVyUHVibGljU2l6ZSAgICAgU2l6ZSBvZiBwZWVyJ3MgcHVibGljIFgsWSBpbiBieXRlcy4NCj4g PiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVy UHVibGljIGlzIGNvbXByZXNzZWQgb3Igbm90Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAg IEtleSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSBnZW5l cmF0ZWQga2V5Lg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEtleVNpemUgICAgICAgICAg ICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBv ZiBkYXRhIHJldHVybmVkIGluIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgIEByZXR2 YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiA+ ICsgIEByZXR2YWwgRkFMU0UgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4g PiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtF Y0RoQ29tcHV0ZUtleSAoDQo+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICAgICAgICpFY0NvbnRl eHQsDQo+ID4gPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpQZWVyUHVibGljLA0KPiA+ID4g PiArICBJTiAgICAgIFVJTlROICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ID4gKyAgSU4g ICAgICBDT05TVCBJTlQzMiAgKkNvbXByZXNzRmxhZywNCj4gPiA+ID4gKyAgT1VUICAgICBVSU5U OCAgICAgICAgKktleSwNCj4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgICAgICAgKktleVNpemUN Cj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBFQ19LRVkgICAgICAgICAgKkVj S2V5Ow0KPiA+ID4gPiArICBFQ19LRVkgICAgICAgICAgKlBlZXJFY0tleTsNCj4gPiA+ID4gKyAg Q09OU1QgRUNfR1JPVVAgICpHcm91cDsNCj4gPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgIFJldFZh bDsNCj4gPiA+ID4gKyAgQklHTlVNICAgICAgICAgICpCblg7DQo+ID4gPiA+ICsgIEJJR05VTSAg ICAgICAgICAqQm5ZOw0KPiA+ID4gPiArICBFQ19QT0lOVCAgICAgICAgKlBvaW50Ow0KPiA+ID4g PiArICBJTlQzMiAgICAgICAgICAgT3BlblNzbE5pZDsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgIEhhbGZTaXplOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmICgoRWNDb250ZXh0ID09IE5V TEwpIHx8IChQZWVyUHVibGljID09IE5VTEwpIHx8IChLZXlTaXplID09IE5VTEwpKSB7DQo+ID4g PiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgaWYgKChLZXkgPT0gTlVMTCkgJiYgKCpLZXlTaXplICE9IDApKSB7DQo+ID4gPiA+ICsgICAg cmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKFBl ZXJQdWJsaWNTaXplID4gSU5UX01BWCkgew0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4g PiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEVjS2V5ICAgID0gKEVDX0tFWSAqKUVj Q29udGV4dDsNCj4gPiA+ID4gKyAgR3JvdXAgICAgPSBFQ19LRVlfZ2V0MF9ncm91cCAoRWNLZXkp Ow0KPiA+ID4gPiArICBIYWxmU2l6ZSA9IChFQ19HUk9VUF9nZXRfZGVncmVlIChHcm91cCkgKyA3 KSAvIDg7DQo+ID4gPiA+ICsgIGlmICgoQ29tcHJlc3NGbGFnID09IE5VTEwpICYmIChQZWVyUHVi bGljU2l6ZSAhPSBIYWxmU2l6ZSAqIDIpKSB7DQo+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0K PiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKChDb21wcmVzc0ZsYWcgIT0g TlVMTCkgJiYgKFBlZXJQdWJsaWNTaXplICE9IEhhbGZTaXplKSkgew0KPiA+ID4gPiArICAgIHJl dHVybiBGQUxTRTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmICgqS2V5 U2l6ZSA8IEhhbGZTaXplKSB7DQo+ID4gPiA+ICsgICAgKktleVNpemUgPSBIYWxmU2l6ZTsNCj4g PiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4g PiArICAqS2V5U2l6ZSA9IEhhbGZTaXplOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIFJldFZhbCAg ICA9IEZBTFNFOw0KPiA+ID4gPiArICBQb2ludCAgICAgPSBOVUxMOw0KPiA+ID4gPiArICBCblgg ICAgICAgPSBCTl9iaW4yYm4gKFBlZXJQdWJsaWMsIChJTlQzMilIYWxmU2l6ZSwgTlVMTCk7DQo+ ID4gPiA+ICsgIEJuWSAgICAgICA9IE5VTEw7DQo+ID4gPiA+ICsgIFBvaW50ICAgICA9IEVDX1BP SU5UX25ldyAoR3JvdXApOw0KPiA+ID4gPiArICBQZWVyRWNLZXkgPSBOVUxMOw0KPiA+ID4gPiAr ICBpZiAoKEJuWCA9PSBOVUxMKSB8fCAoUG9pbnQgPT0gTlVMTCkpIHsNCj4gPiA+ID4gKyAgICBn b3RvIGZhaWw7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAoQ29tcHJl c3NGbGFnID09IE5VTEwpIHsNCj4gPiA+ID4gKyAgICBCblkgPSBCTl9iaW4yYm4gKFBlZXJQdWJs aWMgKyBIYWxmU2l6ZSwgKElOVDMyKUhhbGZTaXplLCBOVUxMKTsNCj4gPiA+ID4gKyAgICBpZiAo Qm5ZID09IE5VTEwpIHsNCj4gPiA+ID4gKyAgICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gKyAgICB9 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGlu YXRlcyAoR3JvdXAsIFBvaW50LCBCblgsIEJuWSwgTlVMTCkgIT0gMSkgew0KPiA+ID4gPiArICAg ICAgZ290byBmYWlsOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ ID4gKyAgICBpZiAoRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXMgKEdyb3VwLCBQ b2ludCwgQm5YLCAqQ29tcHJlc3NGbGFnLCBOVUxMKSAhPSAxKSB7DQo+ID4gPiA+ICsgICAgICBn b3RvIGZhaWw7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgLy8gVmFsaWRhdGUgTklTVCBFQ0RIIHB1YmxpYyBrZXkNCj4gPiA+ID4gKyAgT3BlblNz bE5pZCA9IEVDX0dST1VQX2dldF9jdXJ2ZV9uYW1lIChHcm91cCk7DQo+ID4gPiA+ICsgIFBlZXJF Y0tleSAgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUgKE9wZW5Tc2xOaWQpOw0KPiA+ID4gPiAr ICBpZiAoUGVlckVjS2V5ID09IE5VTEwpIHsNCj4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4g PiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAoRUNfS0VZX3NldF9wdWJsaWNfa2V5 IChQZWVyRWNLZXksIFBvaW50KSAhPSAxKSB7DQo+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKEVDX0tFWV9jaGVja19rZXkgKFBl ZXJFY0tleSkgIT0gMSkgew0KPiA+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gKyAgfQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmIChFQ0RIX2NvbXB1dGVfa2V5IChLZXksICpLZXlTaXpl LCBQb2ludCwgRWNLZXksIE5VTEwpIDw9IDApIHsNCj4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBSZXRWYWwgPSBUUlVFOw0KPiA+ID4g PiArDQo+ID4gPiA+ICtmYWlsOg0KPiA+ID4gPiArICBCTl9mcmVlIChCblgpOw0KPiA+ID4gPiAr ICBCTl9mcmVlIChCblkpOw0KPiA+ID4gPiArICBFQ19QT0lOVF9mcmVlIChQb2ludCk7DQo+ID4g PiA+ICsgIEVDX0tFWV9mcmVlIChQZWVyRWNLZXkpOw0KPiA+ID4gPiArICByZXR1cm4gUmV0VmFs Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL1BrL0NyeXB0RWNOdWxsLmMgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4g PiBpbmRleCAwMDAwMDAwMDAwLi5kOWYxMDA0ZjZjDQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4g PiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWNOdWxs LmMNCj4gPiA+ID4gQEAgLTAsMCArMSw0OTYgQEANCj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4g PiArICBFbGxpcHRpYyBDdXJ2ZSBhbmQgRUNESCBBUEkgaW1wbGVtZW50YXRpb24gYmFzZWQgb24g T3BlblNTTA0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiArICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPiArDQo+ID4gPiA+ ICsqKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUNyeXB0TGli Lmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ID4gPiArDQo+ ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVjR3JvdXAgb2Jq ZWN0LiBUaGlzIG9iamVjdCByZXByZXNlbnRzIGFuIEVDIGN1cnZlIGFuZA0KPiA+ID4gPiArICBh bmQgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb24gd2l0aGluIHRoaXMgZ3JvdXAuIFRoaXMgb2JqZWN0 IHNob3VsZCBiZSBmcmVlZA0KPiA+ID4gPiArICB1c2luZyBFY0dyb3VwRnJlZSgpIGZ1bmN0aW9u Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENyeXB0b05pZCAgIElkZW50aWZ5 aW5nIG51bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZSAoRGVmaW5lZCBpbg0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgQHJldHZhbCBFY0dyb3VwIG9iamVjdCAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZh bCBOVUxMICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArVk9J RCAqDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR3JvdXBJbml0ICgNCj4gPiA+ID4gKyAg SU4gVUlOVE4gIENyeXB0b05pZA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsg IEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdldCBFQyBjdXJ2ZSBwYXJhbWV0ZXJz LiBXaGlsZSBlbGxpcHRpYyBjdXJ2ZSBlcXVhdGlvbiBpcyBZXjIgbW9kIFAgPSAoWF4zICsgQVgg KyBCKSBNb2QgUC4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlk ZWQgQmlnIE51bWJlciBvYmplY3RzICB0byB0aGUgY29ycmVzcG9uZGluZw0KPiA+ID4gPiArICB2 YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUgIm91dCIgQmlnTnVt YmVyIHBhcmFtZXRlcnMNCj4gPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0 Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblByaW1lICAgIEdyb3VwIHByaW1lIG51bWJlci4N Cj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5BICAgICAgICBBIGNvZWZmaWNpZW50Lg0KPiA+ID4g PiArICBAcGFyYW1bb3V0XSBCbkIgICAgICAgIEIgY29lZmZpY2llbnQuLg0KPiA+ID4gPiArICBA cGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg QHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFM U0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4g PiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNHcm91cEdldEN1cnZlICgNCj4gPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblByaW1l LA0KPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5BLA0KPiA+ID4gPiArICBPVVQgVk9JRCAg ICAgICAqQm5CLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAg KQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0 dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4g KyAgR2V0IEVDIGdyb3VwIG9yZGVyLg0KPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0 IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdCB0byB0aGUgY29ycmVzcG9uZGluZw0KPiA+ ID4gPiArICB2YWx1ZS4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgIm91 dCIgQmlnTnVtYmVyIHBhcmFtZXRlcg0KPiA+ID4gPiArICBpcyBwcm9wZXJseSBpbml0aWFsaXpl ZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCbk9yZGVyICAgR3JvdXAgcHJpbWUgbnVt YmVyLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNj ZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4g PiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR3Jv dXBHZXRPcmRlciAoDQo+ID4gPiA+ICsgIElOIFZPSUQgICAqRWNHcm91cCwNCj4gPiA+ID4gKyAg T1VUIFZPSUQgICpCbk9yZGVyDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAg QVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0 ZWQgRUMgZ3JvdXAgb2JqZWN0IHVzaW5nIEVjR3JvdXBJbml0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdCB0byBmcmVlLg0KPiA+ ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR3Jv dXBGcmVlICgNCj4gPiA+ID4gKyAgSU4gVk9JRCAgKkVjR3JvdXANCj4gPiA+ID4gKyAgKQ0KPiA+ ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4g Kw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFQyBQb2lu dCBvYmplY3QuIFRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYW4gRUMgcG9pbnQNCj4gPiA+ID4gKyAg d2l0aGluIHRoZSBnaXZlbiBFQyBncm91cCAoY3VydmUpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIEVDIEdyb3VwLCBwcm9wZXJseSBpbml0aWFsaXplZCB1c2luZyBFY0dyb3Vw SW5pdCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgRUMgUG9pbnQgb2JqZWN0ICBP biBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICAgT24gZmFpbHVy ZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArVk9JRCAqDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gK0VjUG9pbnRJbml0ICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXANCj4g PiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ ID4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0K PiA+ID4gPiArICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIEVDIFBvaW50IG9iamVjdCB1c2lu ZyBFY1BvaW50SW5pdCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9p bnQgICBFQyBQb2ludCB0byBmcmVlLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBDbGVhciAgICAg VFJVRSBpZmYgdGhlIG1lbW9yeSBzaG91bGQgYmUgY2xlYXJlZC4NCj4gPiA+ID4gKyoqLw0KPiA+ ID4gPiArVk9JRA0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50RGVJbml0ICgNCj4g PiA+ID4gKyAgSU4gVk9JRCAgICAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIElOIEJPT0xFQU4gIENs ZWFyDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7 DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBHZXQgRUMg cG9pbnQgYWZmaW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9u IHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgdG8gdGhlIGNvcnJlc3Bv bmRpbmcNCj4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBh bGwgdGhlICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXJzDQo+ID4gPiA+ICsgIGFyZSBwcm9wZXJs eSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3Vw ICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBF QyBwb2ludCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWCAgICAgICAgWCBjb29y ZGluYXRlLg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4N Cj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdp dGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJV RSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAg T3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklB UEkNCj4gPiA+ID4gK0VjUG9pbnRHZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2lu dCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuWCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQg ICAgICAgKkJuWSwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsg ICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJl dHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ ICsgIFNldCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gPiArICBA cGFyYW1baW5dICBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4 ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50U2V0QWZmaW5l Q29vcmRpbmF0ZXMgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpCblgsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblksDQo+ID4gPiA+ICsgIElOIFZP SUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4g PiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBFQyBQb2ludCBhZGRpdGlvbi4gRWNQb2lu dFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2ludEIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBh cmFtW2luXSAgRWNHcm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBw YXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBU aGUgcG9pbnQgc2hvdWxkDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRB ICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICAgICAg ICAgRUMgUG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4g Y29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9P TEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50QWRkICgNCj4gPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1Bv aW50UmVzdWx0LA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QiwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAg KkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxT RSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ ID4gPiArLyoqDQo+ID4gPiA+ICsgIFZhcmlhYmxlIEVDIHBvaW50IG11bHRpcGxpY2F0aW9uLiBF Y1BvaW50UmVzdWx0ID0gRWNQb2ludCAqIEJuUFNjYWxhci4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g KyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1 bHQuIFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQ b2ludCAgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5QU2NhbGFy ICAgICAgICBQIFNjYWxhci4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAg ICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiAr ICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRNdWwgKA0KPiA+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAg KkVjUG9pbnRSZXN1bHQsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gPiArICBJTiBWT0lEICAg ICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQg KEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQ2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBz dXBwbGllZCBFQyBwb2ludC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgICBF Y0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW4sb3V0XSBFY1Bv aW50ICAgRUMgcG9pbnQgdG8gaW52ZXJ0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgICBCbkN0 eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50SW52ZXJ0ICgN Cj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIE9VVCBW T0lEICAgICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4g KyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4g PiA+ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIG9uIEVDIGN1cnZlLg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3Qu DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4g PiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBC aWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAg ICAgICAgIE9uIGN1cnZlLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3 aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4g PiA+ID4gK0VjUG9pbnRJc09uQ3VydmUgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNH cm91cCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIElO IFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsg IEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQg cG9pbnQgaXMgYXQgaW5maW5pdHkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2lu dCAgIEVDIHBvaW50IHRvIGNoZWNrLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJV RSAgICAgICAgICBBdCBpbmZpbml0eS4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAg IE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJ QVBJDQo+ID4gPiA+ICtFY1BvaW50SXNBdEluZmluaXR5ICgNCj4gPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50DQo+ID4g PiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ ID4gPiA+ICsgIENoZWNrIGlmIEVDIHBvaW50cyBhcmUgZXF1YWwuDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNQb2ludEEgIEVDIHBvaW50IEEuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjUG9pbnRCICBFQyBwb2ludCBCLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAg Qk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgQSA9PSBCLg0KPiA+ID4gPiArICBAcmV0 dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09M RUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRFcXVhbCAoDQo+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQ b2ludEEsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QiwNCj4gPiA+ID4gKyAg SU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4g KyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIFNldCBFQyBwb2ludCBjb21wcmVz c2VkIGNvb3JkaW5hdGVzLiBQb2ludHMgY2FuIGJlIGRlc2NyaWJlZCBpbiB0ZXJtcyBvZg0KPiA+ ID4gPiArICB0aGVpciBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2ludCAoeCwgeSks IGZvciBhbnkgZ2l2ZW4gdmFsdWUgZm9yIHgNCj4gPiA+ID4gKyAgc3VjaCB0aGF0IHRoZSBwb2lu dCBpcyBvbiB0aGUgY3VydmUgdGhlcmUgd2lsbCBvbmx5IGV2ZXIgYmUgdHdvIHBvc3NpYmxlDQo+ ID4gPiA+ICsgIHZhbHVlcyBmb3IgeS4gVGhlcmVmb3JlLCBhIHBvaW50IGNhbiBiZSBzZXQgdXNp bmcgdGhpcyBmdW5jdGlvbiB3aGVyZSBCblggaXMNCj4gPiA+ID4gKyAgdGhlIHggY29vcmRpbmF0 ZSBhbmQgWUJpdCBpcyBhIHZhbHVlIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBvZiB0aGUgdHdv DQo+ID4gPiA+ICsgIHBvc3NpYmxlIHZhbHVlcyBmb3IgeSBzaG91bGQgYmUgdXNlZC4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIFlCaXQgICAgICAgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4N Cj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdp dGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJV RSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAg T3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklB UEkNCj4gPiA+ID4gK0VjUG9pbnRTZXRDb21wcmVzc2VkQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVj UG9pbnQsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiA+ICsgIElOIFVJ TlQ4ICAgICAgIFlCaXQsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4g PiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiAr ICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ ID4gPiArICBBbGxvY2F0ZXMgYW5kIEluaXRpYWxpemVzIG9uZSBFbGxpcHRpYyBDdXJ2ZSBDb250 ZXh0IGZvciBzdWJzZXF1ZW50IHVzZQ0KPiA+ID4gPiArICB3aXRoIHRoZSBOSUQuDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgTmlkIGNpcGhlciBOSUQNCj4gPiA+ID4gKyAgQHJl dHVybiAgICAgUG9pbnRlciB0byB0aGUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCB0aGF0IGhhcyBi ZWVuIGluaXRpYWxpemVkLg0KPiA+ID4gPiArICAgICAgICAgICAgICBJZiB0aGUgYWxsb2NhdGlv bnMgZmFpbHMsIEVjTmV3QnlOaWQoKSByZXR1cm5zIE5VTEwuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ ID4gK1ZPSUQgKg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY05ld0J5TmlkICgNCj4gPiA+ ID4gKyAgSU4gVUlOVE4gIE5pZA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsg IEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIFJlbGVhc2UgdGhlIHNwZWNpZmllZCBF QyBjb250ZXh0Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjQ29udGV4dCAg UG9pbnRlciB0byB0aGUgRUMgY29udGV4dCB0byBiZSByZWxlYXNlZC4NCj4gPiA+ID4gKyoqLw0K PiA+ID4gPiArVk9JRA0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0ZyZWUgKA0KPiA+ID4g PiArICBJTiAgVk9JRCAgKkVjQ29udGV4dA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4g PiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsv KioNCj4gPiA+ID4gKyAgR2VuZXJhdGVzIEVDIGtleSBhbmQgcmV0dXJucyBFQyBwdWJsaWMga2V5 IChYLCBZKSwgUGxlYXNlIG5vdGUsIHRoaXMgZnVuY3Rpb24gdXNlcw0KPiA+ID4gPiArICBwc2V1 ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIFRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgUmFu ZG9tU2VlZCgpDQo+ID4gPiA+ICsgIGZ1bmN0aW9uIHdhcyBwcm9wZXJseSBjYWxsZWQgYmVmb3Jl Lg0KPiA+ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxp emVkIGJ5IEVjTmV3QnlOaWQuDQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIHJh bmRvbSBzZWNyZXQsIGFuZCBjb21wdXRlcyB0aGUgcHVibGljIGtleSAoWCwgWSksIHdoaWNoIGlz DQo+ID4gPiA+ICsgIHJldHVybmVkIHZpYSBwYXJhbWV0ZXIgUHVibGljLCBQdWJsaWNTaXplLg0K PiA+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcg UHVibGljU2l6ZSAvIDIsDQo+ID4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxmIG9mIFB1Ymxp YyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAvIDIuDQo+ID4gPiA+ICsgIEVDIGNvbnRleHQg aXMgdXBkYXRlZCBhY2NvcmRpbmdseS4NCj4gPiA+ID4gKyAgSWYgdGhlIFB1YmxpYyBidWZmZXIg aXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIHB1YmxpYyBYLCBZLCBGQUxTRSBpcyByZXR1cm5lZCBh bmQNCj4gPiA+ID4gKyAgUHVibGljU2l6ZSBpcyBzZXQgdG8gdGhlIHJlcXVpcmVkIGJ1ZmZlciBz aXplIHRvIG9idGFpbiB0aGUgcHVibGljIFgsIFkuDQo+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhl IFB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMg WS4NCj4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgt Ynl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC01MjEsIHRo ZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBp cyBZLg0KPiA+ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0Uu DQo+ID4gPiA+ICsgIElmIFB1YmxpY1NpemUgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ ID4gPiA+ICsgIElmIFB1YmxpY1NpemUgaXMgbGFyZ2UgZW5vdWdoIGJ1dCBQdWJsaWMgaXMgTlVM TCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250 ZXh0ICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ID4gKyAgQHBhcmFtW291 dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJlY2VpdmUgZ2Vu ZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVibGljS2V5 U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6 ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsg IEByZXR2YWwgVFJVRSAgIEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4g PiA+ICsgIEByZXR2YWwgRkFMU0UgIEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFB1YmxpY0tleVNpemUgaXMgbm90IGxhcmdlIGVub3Vn aC4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4g PiA+ICtFY0dlbmVyYXRlS2V5ICgNCj4gPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4 dCwNCj4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ID4gKyAgSU4g T1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgR2V0cyB0aGUgcHVibGlj IGtleSBjb21wb25lbnQgZnJvbSB0aGUgZXN0YWJsaXNoZWQgRUMgY29udGV4dC4NCj4gPiA+ID4g KyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBFY05l d0J5TmlkLCBhbmQgc3VjY2Vzc2Z1bGx5DQo+ID4gPiA+ICsgIGdlbmVyYXRlIGtleSBwYWlyIGZy b20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXpl IGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiA+ ICsgIEZvciBQLTM4NCwgdGhlIFB1YmxpY1NpemUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwg U2Vjb25kIDQ4LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6 ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQgICAgICBQb2ludGVyIHRvIEVDIGNvbnRl eHQgYmVpbmcgc2V0Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIFB1YmxpY0tleSAgICAg IFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZSBnZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4g PiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXplICBPbiBpbnB1dCwgdGhlIHNp emUgb2YgUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4g UHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAgQHJldHZhbCAgVFJVRSAgIEVDIGtl eSBjb21wb25lbnQgd2FzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuDQo+ID4gPiA+ICsgIEByZXR2 YWwgIEZBTFNFICBJbnZhbGlkIEVDIGtleSBjb21wb25lbnQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNHZXRQdWJLZXkgKA0KPiA+ ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRWNDb250ZXh0LA0KPiA+ID4gPiArICBPVVQgICAgIFVJ TlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVibGljS2V5U2l6 ZQ0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0K PiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4g Ky8qKg0KPiA+ID4gPiArICBDb21wdXRlcyBleGNoYW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ID4g KyAgR2l2ZW4gcGVlcidzIHB1YmxpYyBrZXkgKFgsIFkpLCB0aGlzIGZ1bmN0aW9uIGNvbXB1dGVz IHRoZSBleGNoYW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ID4gKyAgYmFzZWQgb24gaXRzIG93biBj b250ZXh0IGluY2x1ZGluZyB2YWx1ZSBvZiBjdXJ2ZSBwYXJhbWV0ZXIgYW5kIHJhbmRvbSBzZWNy ZXQuDQo+ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNp emUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLA0KPiA+ID4gPiArICBZIGlzIHRoZSBzZWNvbmQg aGFsZiBvZiBQZWVyUHVibGljIHdpdGggc2l6ZSBiZWluZyBQZWVyUHVibGljU2l6ZSAvIDIuDQo+ ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ID4gKyAgSWYgUGVlclB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4g KyAgSWYgUGVlclB1YmxpY1NpemUgaXMgMCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsg IElmIEtleSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gKyAgSWYgS2V5U2l6 ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gKyAgRm9y IFAtMjU2LCB0aGUgUGVlclB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vj b25kIDMyLWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUGVlclB1YmxpY1Np emUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LWJ5dGUgaXMgWS4NCj4gPiA+ ID4gKyAgRm9yIFAtNTIxLCB0aGUgUGVlclB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRl IGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAg RWNDb250ZXh0ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiA+ICsg IEBwYXJhbVtpbl0gICAgICAgUGVlclB1YmxpYyAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHBlZXIn cyBwdWJsaWMgWCxZLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWNTaXpl ICAgICBTaXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ID4gPiArICBAcGFy YW1baW5dICAgICAgIENvbXByZXNzRmxhZyAgICAgICBGbGFnIG9mIFBlZXJQdWJsaWMgaXMgY29t cHJlc3NlZCBvciBub3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgS2V5ICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBrZXkuDQo+ ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6ZSAgICAgICAgICAgIE9uIGlucHV0LCB0 aGUgc2l6ZSBvZiBLZXkgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJu ZWQgaW4gS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgRUMg ZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ID4gKyAgQHJldHZhbCBG QUxTRSAgRUMgZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ID4gPiArKiovDQo+ ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjRGhDb21wdXRlS2V5 ICgNCj4gPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ID4g KyAgSU4gICAgICBDT05TVCBVSU5UOCAgKlBlZXJQdWJsaWMsDQo+ID4gPiA+ICsgIElOICAgICAg VUlOVE4gICAgICAgIFBlZXJQdWJsaWNTaXplLA0KPiA+ID4gPiArICBJTiAgICAgIENPTlNUIElO VDMyICAqQ29tcHJlc3NGbGFnLA0KPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAgICAgICAqS2V5 LA0KPiA+ID4gPiArICBJTiBPVVQgIFVJTlROICAgICAgICAqS2V5U2l6ZQ0KPiA+ID4gPiArICAp DQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1 cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gPiBpbmRleCBjZTZhNzg5ZGZkLi40YmMz MDYzNDg1IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvU21tQ3J5cHRMaWIuaW5mDQo+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4gPiA+ID4gQEAgLTU5LDYgKzU5LDcgQEANCj4gPiA+ ID4gICAgUGsvQ3J5cHRUc051bGwuYw0KPiA+ID4gPiAgICBQay9DcnlwdFJzYVBzcy5jDQo+ID4g PiA+ICAgIFBrL0NyeXB0UnNhUHNzU2lnbk51bGwuYw0KPiA+ID4gPiArICBQay9DcnlwdEVjTnVs bC5jDQo+ID4gPiA+ICAgIFBlbS9DcnlwdFBlbS5jDQo+ID4gPiA+ICAgIEJuL0NyeXB0Qm5OdWxs LmMNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiA+IGIvQ3J5cHRvUGtnL0xpYnJh cnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0KPiA+ID4gPiBpbmRleCAz NTRmM2Q4MGFhLi5lMWE1N2VmMDlmIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ID4gPiA+ICsrKyBi L0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYN Cj4gPiA+ID4gQEAgLTQ5LDYgKzQ5LDcgQEANCj4gPiA+ID4gICAgUGsvQ3J5cHRYNTA5TnVsbC5j DQo+ID4gPiA+ICAgIFBrL0NyeXB0QXV0aGVudGljb2RlTnVsbC5jDQo+ID4gPiA+ICAgIFBrL0Ny eXB0VHNOdWxsLmMNCj4gPiA+ID4gKyAgUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiAgICBQZW0v Q3J5cHRQZW1OdWxsLmMNCj4gPiA+ID4gICAgUmFuZC9DcnlwdFJhbmROdWxsLmMNCj4gPiA+ID4g ICAgUGsvQ3J5cHRSc2FQc3NOdWxsLmMNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRFY051bGwuYyBiL0NyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi5kOWYxMDA0ZjZjDQo+ID4gPiA+ IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliTnVsbC9Qay9DcnlwdEVjTnVsbC5jDQo+ID4gPiA+IEBAIC0wLDAgKzEsNDk2IEBADQo+ID4g PiA+ICsvKiogQGZpbGUNCj4gPiA+ID4gKyAgRWxsaXB0aWMgQ3VydmUgYW5kIEVDREggQVBJIGlt cGxlbWVudGF0aW9uIGJhc2VkIG9uIE9wZW5TU0wNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBDb3B5 cmlnaHQgKGMpIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNpbmNsdWRl IDxMaWJyYXJ5L0Jhc2VDcnlwdExpYi5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVi dWdMaWIuaD4NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEluaXRpYWxpemUg bmV3IG9wYXF1ZSBFY0dyb3VwIG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBj dXJ2ZSBhbmQNCj4gPiA+ID4gKyAgYW5kIGlzIHVzZWQgZm9yIGNhbGN1bGF0aW9uIHdpdGhpbiB0 aGlzIGdyb3VwLiBUaGlzIG9iamVjdCBzaG91bGQgYmUgZnJlZWQNCj4gPiA+ID4gKyAgdXNpbmcg RWNHcm91cEZyZWUoKSBmdW5jdGlvbi4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5d ICBDcnlwdG9OaWQgICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0MgY3VydmUgKERlZmlu ZWQgaW4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZUNyeXB0TGliLmgp Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgRWNHcm91cCBvYmplY3QgIE9uIHN1Y2Nl c3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ID4g PiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dy b3VwSW5pdCAoDQo+ID4gPiA+ICsgIElOIFVJTlROICBDcnlwdG9OaWQNCj4gPiA+ID4gKyAgKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJu IE5VTEw7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBH ZXQgRUMgY3VydmUgcGFyYW1ldGVycy4gV2hpbGUgZWxsaXB0aWMgY3VydmUgZXF1YXRpb24gaXMg WV4yIG1vZCBQID0gKFheMyArIEFYICsgQikgTW9kIFAuDQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rp b24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyAgdG8gdGhlIGNvcnJl c3BvbmRpbmcNCj4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3Vy ZSBhbGwgdGhlICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXJzDQo+ID4gPiA+ICsgIGFyZSBwcm9w ZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dy b3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5QcmltZSAg ICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQSAgICAgICAg QSBjb2VmZmljaWVudC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5CICAgICAgICBCIGNvZWZm aWNpZW50Li4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0Lg0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0K PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiov DQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR3JvdXBHZXRD dXJ2ZSAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBP VVQgVk9JRCAgICAgICAqQm5QcmltZSwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQSwN Cj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQiwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAg ICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChG QUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdldCBFQyBncm91cCBvcmRlci4NCj4gPiA+ID4gKyAg VGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3QgdG8g dGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ID4gKyAgdmFsdWUuIFRoZSBjYWxsZXIgbmVlZHMgdG8g bWFrZSBzdXJlIHRoYXQgdGhlICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXINCj4gPiA+ID4gKyAg aXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5P cmRlciAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFs IFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAg ICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiAr RUZJQVBJDQo+ID4gPiA+ICtFY0dyb3VwR2V0T3JkZXIgKA0KPiA+ID4gPiArICBJTiBWT0lEICAg KkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAqQm5PcmRlcg0KPiA+ID4gPiArICApDQo+ ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4g RkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBG cmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIEVDIGdyb3VwIG9iamVjdCB1c2luZyBFY0dyb3VwSW5p dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91 cCBvYmplY3QgdG8gZnJlZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArVk9JRA0KPiA+ID4gPiAr RUZJQVBJDQo+ID4gPiA+ICtFY0dyb3VwRnJlZSAoDQo+ID4gPiA+ICsgIElOIFZPSUQgICpFY0dy b3VwDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7 DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBJbml0aWFs aXplIG5ldyBvcGFxdWUgRUMgUG9pbnQgb2JqZWN0LiBUaGlzIG9iamVjdCByZXByZXNlbnRzIGFu IEVDIHBvaW50DQo+ID4gPiA+ICsgIHdpdGhpbiB0aGUgZ2l2ZW4gRUMgZ3JvdXAgKGN1cnZlKS4N Cj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFQyBHcm91cCwgcHJvcGVybHkgaW5p dGlhbGl6ZWQgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0 dmFsIEVDIFBvaW50IG9iamVjdCAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBOVUxM ICAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQgKg0K PiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50SW5pdCAoDQo+ID4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpFY0dyb3VwDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAg QVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4gPiArfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRl ZCBFQyBQb2ludCBvYmplY3QgdXNpbmcgRWNQb2ludEluaXQoKS4NCj4gPiA+ID4gKw0KPiA+ID4g PiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgUG9pbnQgdG8gZnJlZS4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgQ2xlYXIgICAgIFRSVUUgaWZmIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFy ZWQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4g PiArRWNQb2ludERlSW5pdCAoDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICpFY1BvaW50LA0KPiA+ ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4g PiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsv KioNCj4gPiA+ID4gKyAgR2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4g PiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBv YmplY3RzIHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxl ciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVycw0K PiA+ID4gPiArICBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1b b3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5Z ICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAg Qk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAg QHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50R2V0QWZmaW5lQ29vcmRp bmF0ZXMgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblgs DQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblksDQo+ID4gPiA+ICsgIElOIFZPSUQgICAg ICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAo RkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBTZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkpIGNvb3Jk aW5hdGVzLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMg Z3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50 IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUu DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAgICAgWSBjb29yZGluYXRlLg0KPiA+ID4g PiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdO dW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq Qm5ZLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZB TFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgRUMg UG9pbnQgYWRkaXRpb24uIEVjUG9pbnRSZXN1bHQgPSBFY1BvaW50QSArIEVjUG9pbnRCLg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBFY1BvaW50UmVzdWx0ICAgIEVDIHBvaW50 IHRvIGhvbGQgdGhlIHJlc3VsdC4gVGhlIHBvaW50IHNob3VsZA0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBFY1BvaW50QSAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gPiArICBAcGFy YW1baW5dICBFY1BvaW50QiAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gPiArICBAcGFyYW1baW5d ICBCbkN0eCAgICAgICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250 ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1 Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4g PiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQ b2ludEFkZCAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiAr ICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkVjUG9pbnRBLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4g PiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4g PiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBWYXJpYWJsZSBFQyBw b2ludCBtdWx0aXBsaWNhdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnQgKiBCblBTY2FsYXIu DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICAgICAgICBFQyBn cm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMg cG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAgICAgUCBTY2FsYXIuDQo+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5l d0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg T24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4N Cj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ ICtFY1BvaW50TXVsICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4g PiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVzdWx0LA0KPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuUFNjYWxhciwN Cj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4g K3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIENhbGN1bGF0 ZSB0aGUgaW52ZXJzZSBvZiB0aGUgc3VwcGxpZWQgRUMgcG9pbnQuDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgICAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g KyAgQHBhcmFtW2luLG91dF0gRWNQb2ludCAgIEVDIHBvaW50IHRvIGludmVydC4NCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgICAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdO dW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiArRWNQb2ludEludmVydCAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3Vw LA0KPiA+ID4gPiArICBJTiBPVVQgVk9JRCAgICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gVk9J RCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNT RVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2lu dCBpcyBvbiBFQyBjdXJ2ZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dy b3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAg RUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBj b250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4g PiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBjdXJ2ZS4NCj4gPiA+ID4gKyAgQHJldHZh bCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVB Tg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50SXNPbkN1cnZlICgNCj4gPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y1BvaW50LA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJu IEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAg Q2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIGF0IGluZmluaXR5Lg0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgQXQgaW5maW5pdHkuDQo+ID4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludElzQXRJbmZpbml0eSAo DQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqRWNQb2ludA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4g PiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBDaGVjayBpZiBFQyBwb2ludHMgYXJlIGVx dWFsLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91 cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICBFQyBwb2ludCBBLg0K PiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgRUMgcG9pbnQgQi4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdD b250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIEEg PT0gQi4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1Bv aW50RXF1YWwgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNQb2ludEIsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICAp DQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1 cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiAr ICBTZXQgRUMgcG9pbnQgY29tcHJlc3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBkZXNj cmliZWQgaW4gdGVybXMgb2YNCj4gPiA+ID4gKyAgdGhlaXIgY29tcHJlc3NlZCBjb29yZGluYXRl cy4gRm9yIGEgcG9pbnQgKHgsIHkpLCBmb3IgYW55IGdpdmVuIHZhbHVlIGZvciB4DQo+ID4gPiA+ ICsgIHN1Y2ggdGhhdCB0aGUgcG9pbnQgaXMgb24gdGhlIGN1cnZlIHRoZXJlIHdpbGwgb25seSBl dmVyIGJlIHR3byBwb3NzaWJsZQ0KPiA+ID4gPiArICB2YWx1ZXMgZm9yIHkuIFRoZXJlZm9yZSwg YSBwb2ludCBjYW4gYmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24gd2hlcmUgQm5YIGlzDQo+ID4g PiA+ICsgIHRoZSB4IGNvb3JkaW5hdGUgYW5kIFlCaXQgaXMgYSB2YWx1ZSAwIG9yIDEgdG8gaWRl bnRpZnkgd2hpY2ggb2YgdGhlIHR3bw0KPiA+ID4gPiArICBwb3NzaWJsZSB2YWx1ZXMgZm9yIHkg c2hvdWxkIGJlIHVzZWQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91 cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAg RUMgUG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRl Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBZQml0ICAgICAgIDAgb3IgMSB0byBpZGVudGlmeSB3 aGljaCBZIHZhbHVlIGlzIHVzZWQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAg Qk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAg QHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50U2V0Q29tcHJlc3NlZENv b3JkaW5hdGVzICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ ICsgIElOIFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq Qm5YLA0KPiA+ID4gPiArICBJTiBVSU5UOCAgICAgICBZQml0LA0KPiA+ID4gPiArICBJTiBWT0lE ICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NF UlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQWxsb2NhdGVzIGFuZCBJbml0aWFsaXplcyBv bmUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCBmb3Igc3Vic2VxdWVudCB1c2UNCj4gPiA+ID4gKyAg d2l0aCB0aGUgTklELg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIE5pZCBjaXBo ZXIgTklEDQo+ID4gPiA+ICsgIEByZXR1cm4gICAgIFBvaW50ZXIgdG8gdGhlIEVsbGlwdGljIEN1 cnZlIENvbnRleHQgdGhhdCBoYXMgYmVlbiBpbml0aWFsaXplZC4NCj4gPiA+ID4gKyAgICAgICAg ICAgICAgSWYgdGhlIGFsbG9jYXRpb25zIGZhaWxzLCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxM Lg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4g PiArRWNOZXdCeU5pZCAoDQo+ID4gPiA+ICsgIElOIFVJTlROICBOaWQNCj4gPiA+ID4gKyAgKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJu IE5VTEw7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBS ZWxlYXNlIHRoZSBzcGVjaWZpZWQgRUMgY29udGV4dC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBA cGFyYW1baW5dICBFY0NvbnRleHQgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQgdG8gYmUgcmVs ZWFzZWQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiArRWNGcmVlICgNCj4gPiA+ID4gKyAgSU4gIFZPSUQgICpFY0NvbnRleHQNCj4gPiA+ID4g KyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdlbmVyYXRlcyBFQyBrZXkgYW5k IHJldHVybnMgRUMgcHVibGljIGtleSAoWCwgWSksIFBsZWFzZSBub3RlLCB0aGlzIGZ1bmN0aW9u IHVzZXMNCj4gPiA+ID4gKyAgcHNldWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiBUaGUgY2Fs bGVyIG11c3QgbWFrZSBzdXJlIFJhbmRvbVNlZWQoKQ0KPiA+ID4gPiArICBmdW5jdGlvbiB3YXMg cHJvcGVybHkgY2FsbGVkIGJlZm9yZS4NCj4gPiA+ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxk IGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBFY05ld0J5TmlkLg0KPiA+ID4gPiArICBUaGlz IGZ1bmN0aW9uIGdlbmVyYXRlcyByYW5kb20gc2VjcmV0LCBhbmQgY29tcHV0ZXMgdGhlIHB1Ymxp YyBrZXkgKFgsIFkpLCB3aGljaCBpcw0KPiA+ID4gPiArICByZXR1cm5lZCB2aWEgcGFyYW1ldGVy IFB1YmxpYywgUHVibGljU2l6ZS4NCj4gPiA+ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQ dWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1NpemUgLyAyLA0KPiA+ID4gPiArICBZIGlzIHRo ZSBzZWNvbmQgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1NpemUgLyAyLg0K PiA+ID4gPiArICBFQyBjb250ZXh0IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiA+ICsg IElmIHRoZSBQdWJsaWMgYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSBwdWJsaWMgWCwg WSwgRkFMU0UgaXMgcmV0dXJuZWQgYW5kDQo+ID4gPiA+ICsgIFB1YmxpY1NpemUgaXMgc2V0IHRv IHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSB0byBvYnRhaW4gdGhlIHB1YmxpYyBYLCBZLg0KPiA+ ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlz IFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTM4NCwgdGhlIFB1Ymxp Y1NpemUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LWJ5dGUgaXMgWS4NCj4g PiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUg aXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5V TEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIE5VTEws IHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIGxhcmdlIGVu b3VnaCBidXQgUHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBA cGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQu DQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0 IGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiArICBAcGFy YW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMg YnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMgYnVmZmVy IGluIGJ5dGVzLg0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBwdWJsaWMgWCxZIGdlbmVy YXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBFQyBwdWJsaWMgWCxZ IGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBQdWJsaWNLZXlT aXplIGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4N Cj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNHZW5lcmF0ZUtleSAoDQo+ID4gPiA+ICsgIElO IE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJs aWNLZXksDQo+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICpQdWJsaWNLZXlTaXplDQo+ID4gPiA+ ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsg IHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4g PiA+ICsgIEdldHMgdGhlIHB1YmxpYyBrZXkgY29tcG9uZW50IGZyb20gdGhlIGVzdGFibGlzaGVk IEVDIGNvbnRleHQuDQo+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0 bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZCwgYW5kIHN1Y2Nlc3NmdWxseQ0KPiA+ID4gPiAr ICBnZW5lcmF0ZSBrZXkgcGFpciBmcm9tIEVjR2VuZXJhdGVLZXkoKS4NCj4gPiA+ID4gKyAgRm9y IFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQg MzItYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2 LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZv ciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29u ZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAg ICAgUG9pbnRlciB0byBFQyBjb250ZXh0IGJlaW5nIHNldC4NCj4gPiA+ID4gKyAgQHBhcmFtW291 dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJlY2VpdmUgZ2Vu ZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVibGljS2V5 U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6 ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsg IEByZXR2YWwgIFRSVUUgICBFQyBrZXkgY29tcG9uZW50IHdhcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1 bGx5Lg0KPiA+ID4gPiArICBAcmV0dmFsICBGQUxTRSAgSW52YWxpZCBFQyBrZXkgY29tcG9uZW50 Lg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gK0VjR2V0UHViS2V5ICgNCj4gPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwN Cj4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ID4gKyAgSU4gT1VU ICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4g PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiAr fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQ29tcHV0ZXMgZXhjaGFuZ2Vk IGNvbW1vbiBrZXkuDQo+ID4gPiA+ICsgIEdpdmVuIHBlZXIncyBwdWJsaWMga2V5IChYLCBZKSwg dGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgZXhjaGFuZ2VkIGNvbW1vbiBrZXksDQo+ID4gPiA+ ICsgIGJhc2VkIG9uIGl0cyBvd24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3VydmUgcGFy YW1ldGVyIGFuZCByYW5kb20gc2VjcmV0Lg0KPiA+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxm IG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8gMiwNCj4gPiA+ ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcg UGVlclB1YmxpY1NpemUgLyAyLg0KPiA+ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhl biByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIFBlZXJQdWJsaWMgaXMgTlVMTCwgdGhlbiBy ZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRoZW4gcmV0 dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJZiBLZXkgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0Uu DQo+ID4gPiA+ICsgIElmIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaCwgdGhlbiByZXR1cm4g RkFMU0UuDQo+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBG aXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQ LTM4NCwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29u ZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFBlZXJQdWJsaWNTaXpl IGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4g PiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgICAgICBQb2ludGVyIHRvIHRoZSBF QyBjb250ZXh0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWMgICAgICAg ICBQb2ludGVyIHRvIHRoZSBwZWVyJ3MgcHVibGljIFgsWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgICAgICBQZWVyUHVibGljU2l6ZSAgICAgU2l6ZSBvZiBwZWVyJ3MgcHVibGljIFgsWSBpbiBi eXRlcy4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxh ZyBvZiBQZWVyUHVibGljIGlzIGNvbXByZXNzZWQgb3Igbm90Lg0KPiA+ID4gPiArICBAcGFyYW1b b3V0XSAgICAgIEtleSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVj ZWl2ZSBnZW5lcmF0ZWQga2V5Lg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEtleVNpemUg ICAgICAgICAgICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0 aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ ICsgIEByZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQu DQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBm YWlsZWQuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEtleVNpemUgaXMgbm90IGxhcmdlIGVu b3VnaC4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ ID4gPiA+ICtFY0RoQ29tcHV0ZUtleSAoDQo+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICAgICAg ICpFY0NvbnRleHQsDQo+ID4gPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpQZWVyUHVibGlj LA0KPiA+ID4gPiArICBJTiAgICAgIFVJTlROICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ ID4gKyAgSU4gICAgICBDT05TVCBJTlQzMiAgKkNvbXByZXNzRmxhZywNCj4gPiA+ID4gKyAgT1VU ICAgICBVSU5UOCAgICAgICAgKktleSwNCj4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgICAgICAg KktleVNpemUNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZB TFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAtLQ0K PiA+ID4gPiAyLjMxLjEud2luZG93cy4xDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4g PiA+IA0KPiA+ID4gPg0KDQo=