From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.51871.1686546440909994280 for ; Sun, 11 Jun 2023 22:07:21 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=RskLc5UF; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: zhiguang.liu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686546440; x=1718082440; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=4JSD68kvhfB4GasBC+f+/1AjmpreexY1nHSsqXPom2k=; b=RskLc5UFc7q692CBrnXL+XLpIOgsDMTGz6kfZ7UDo0spwKvcBKoTtvNz a9JqCSXfajy/gXAIvfAD6x+Pvso6ZcmvW4HRUsqEYXkHZK5x+yojl0jCk OFSciRk+ySGYxNh8iy27v2u0FQx4H+ubAN6DWR4zx/Mn4wIgIs6mpaDF1 QJTP5Iv43b57QDhrape7dJiTg6w3ZyjruOKw4U0OJOznLOUVuhynSyO7n ydUQ8XgwgfH8PjIWYFU/+nUxZuN3rT9SgxR9weKgEDuNwg/Ua9zi2T8UZ 6YLDleS3bK9brkTSd2doVcTTdbH15MUEDtDVywpP5kEZAWiV2MBljVWIT w==; X-IronPort-AV: E=McAfee;i="6600,9927,10738"; a="355441880" X-IronPort-AV: E=Sophos;i="6.00,235,1681196400"; d="scan'208";a="355441880" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2023 22:07:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10738"; a="1041191980" X-IronPort-AV: E=Sophos;i="6.00,235,1681196400"; d="scan'208";a="1041191980" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga005.fm.intel.com with ESMTP; 11 Jun 2023 22:07:19 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Sun, 11 Jun 2023 22:07:18 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Sun, 11 Jun 2023 22:07:18 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Sun, 11 Jun 2023 22:07:18 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.106) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Sun, 11 Jun 2023 22:07:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KQ/EIxYWZDiFKucVJxji/AvY83cRYJh9XFkAsuJle78F7wVMx5K/4LIDZMNqO2KYNs07NhPIEvCrpj7WwopqO7mLJAluaaxf/hfUk1qHGD2ecygdL/BBGRsNLlBbsA8I5dopSt8Nr6b9Geb+Ws4bktw6FvzD8fQXYGPWltIvWe979cwsZdxyN/W8WznBtrEpf1IZqlmwCnzZK3JvX+33D5IcPO0aJxvFczUQ78HXXPTt751nouH8L2l16ZHUo55QkP+69fA93T8cMg0zPXouk3K20OgfkZlss89jrFuuuaJ8enRQMZSI7yeDNiufEq2kahe0X4XFclQzq2jelEyECw== 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=4JSD68kvhfB4GasBC+f+/1AjmpreexY1nHSsqXPom2k=; b=f9OE29vdHpdm09EqsrC159k30X4+q5zebi4pOpjmK/xwik5S4rFCId2BYbNr9fczWOFolXCckSZUPQGEvvus9OHP/o9rSZqfx7jehG2BkKNnfA8ij0mupuBdGZx8UuKisXLPnF0nOdJ+gMDx9sNe3P4hwKBNGCeGQMccwuBVCVeklm9FdS0ZZ3AlEIiDcw52iz4gqEv5aWxE8xEMENLuSEjUS36DnsrP5FnwMjqLMaF8C1kmIvV5mCSvzhvLFWrkg1nSbQGw3uqnBHkbJTIIif3SuF4oUly3c2zncJD1oWcTR+dHlK77f3UPI+sF+PwKOD/LudhBSIFmvPDTyFjW/A== 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 PH0PR11MB5048.namprd11.prod.outlook.com (2603:10b6:510:3d::14) by IA0PR11MB7792.namprd11.prod.outlook.com (2603:10b6:208:409::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.38; Mon, 12 Jun 2023 05:07:13 +0000 Received: from PH0PR11MB5048.namprd11.prod.outlook.com ([fe80::b0d6:8241:68f9:6092]) by PH0PR11MB5048.namprd11.prod.outlook.com ([fe80::b0d6:8241:68f9:6092%6]) with mapi id 15.20.6477.028; Mon, 12 Jun 2023 05:07:13 +0000 From: "Zhiguang Liu" To: "devel@edk2.groups.io" , "mikuback@linux.microsoft.com" CC: "Kinney, Michael D" , Sean Brogan Subject: Re: [edk2-devel] [PATCH v2] UnitTestFrameworkPkg: Add UnitTestPeiServicesTablePointerLib Thread-Topic: [edk2-devel] [PATCH v2] UnitTestFrameworkPkg: Add UnitTestPeiServicesTablePointerLib Thread-Index: AQHZmDl38nQ9mjoIMkGggrTr+CE2YK995peAgAiGjTA= Date: Mon, 12 Jun 2023 05:07:12 +0000 Message-ID: References: <20230606054001.1289-1-zhiguang.liu@intel.com> In-Reply-To: Accept-Language: en-US, zh-CN 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: PH0PR11MB5048:EE_|IA0PR11MB7792:EE_ x-ms-office365-filtering-correlation-id: ed4d037a-0db3-4589-3873-08db6b02e21d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: la01PCAOVWxj914gbI1Up1w443BISfSKJtvMtO2z0AiSna8sI6HxQ0RtJBjM7T2Jf4h2CDvVTD/NNAmu/9ggMSUEIlIbYhevNJnYFK6JGdGrBzcKLfBwaqOIRe1cXHYcfsbEaN5+MJjeBPj5MBu4P2VK/H5/d+TY3agmtWftEFKyBv6lX5k/ivuM5SNMrW1xdWwYfEkkwnGFOxV56A5a2B5fPCJEv4V2scaBOexMjQys0+yzlehYiQ5ZpO9K3w7FCJL0fwyuFVU9asRolfc44QHAkR6bXKoQhq+wxZpHmfrf2w2YJMhEgBnaT737UaEi7NTeSVqhiX09xkOGWXSkQ73yor7PADStp6lq+hoGjd6cA8Ys/A8WhiyJNVr4HvmKz/T5Lwl+jgTo+K5t7aRZwCsL6mE+0qRiIMWjymSGxhZHkub5kU/nu7nkO703vFxmDK6t1550+lKnuExU+9wYR3D+hvQ86nzNxcDMnLj2TFifxY0+PFZmMlfJyvSvQwsKCSKdWR8LXOvf+6z3vSDscP05C6QIubyfSBfq7/RMZFROO8h8IAK4CPfXpsP6EbHEK1hSBWYQrni3VNeK58n1epIYLvN5J0L0gHR46NypXvh351tiP3BK2lcddLEhjUVuurmojGsC4qpFVyFO4hloWgVDa1uNl5YTqKv9WHClaRY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5048.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(136003)(346002)(39860400002)(366004)(376002)(451199021)(41300700001)(2906002)(30864003)(76116006)(9686003)(6506007)(4326008)(53546011)(66556008)(966005)(7696005)(66899021)(71200400001)(66946007)(66476007)(478600001)(52536014)(64756008)(66446008)(186003)(55016003)(316002)(19627235002)(5660300002)(33656002)(38070700005)(83380400001)(86362001)(54906003)(38100700002)(8676002)(122000001)(8936002)(82960400001)(110136005)(213903007)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cnZ1Wjhidi9LQldwTkhrbUZqRkJNWTlUdzd6cjBTc1Q5VnE4U0hKMWlEd2Rk?= =?utf-8?B?NEw0RHFNSk9MM0wrcFBvcU9UeTFTSjRmQ1ZIa1ltUlZjVUR4VStoOFliUlVC?= =?utf-8?B?YjhjUnYzQTZZNk1VNkR5NWhYYjE2N2hoYm1SV0xxd2tqSkVQYVNxZlZFMkJa?= =?utf-8?B?N1Jwd0k1UWJ5ajd3LzZlSytvS3ErcnZZTFR6dXVxZ2FzTk5rckhXTUYzMGdU?= =?utf-8?B?ZWlxUXFBM1VnNGdIaUFQU09YUTJOeUZiNFNYbVI3WGd6bUtwVkh0UUFwWWt6?= =?utf-8?B?Si9tT29QUWswdjlLWkVDNm5YZWg1eThoaU1XbXEwTEZ0WUlQTUlMMXJwMUVG?= =?utf-8?B?L0pUN1R4MWtESXZWTlZMSWkzUHpiQXNsVWZ2bVVCQkpJMTFnckJzU0JVcTJS?= =?utf-8?B?UnNGd1BUM3hMd3pJSCtEdzZXNGdEYXlvN0FaSnNCSmJuUmdkcXZwM2N4UmJa?= =?utf-8?B?OFdqcWl3MHRmVE8zYWpZaFVRMmlrMktYOVM3Y1hQbkpSTE5Nd1FQbUZOMmVW?= =?utf-8?B?cWZTZE80R1B4Und2K0t3Z0hYZXVhaHRheDVxY0pMajZzRUhGSjc2Qk5WeGJn?= =?utf-8?B?YUVGNENIaXNhOXVIZ2hNQ3dMM24vUjVvZEpuL09uQkRXOEdid1JrRlQ1Z3RO?= =?utf-8?B?b3ZzeVNSRVZ5RGxLVlFYamdiS2RLeGN5L3VVdDJFOXJsYUQ4bEhTQytIRkZV?= =?utf-8?B?TmpzbHp4aFczZFgzNDVESXdWbkQvazQ4cS9TY1B2alhxQWhXV2ZkcEo4NWZJ?= =?utf-8?B?eXZkMnYyL0h1cWw1UGQvQi9mZmRXTXdQS1BXcnYzUnBtOVg2MHZYeHFrN0pv?= =?utf-8?B?OFpUTGd4dFE5c3VsbFR2NUxqYlhHRld5NXYybGovckZMM05wbFlsQXhTZ1Ra?= =?utf-8?B?c1FCS1ZDdTZTWmZKc0tIZEVJcDkvR2tVOXJYMi9yVDhUU3R2YTRTK1BDTzRR?= =?utf-8?B?RlVxN0JYbkVyRlhFelFXeHRnWGduMjh6aEdHVlV4Mkd1NnR1ekFoUEhkT2pv?= =?utf-8?B?alVhMjBaWTRqMldhcG8vNGxtcUpqV2NnNHFTd3JrdWRKWUN5ZkhqSTBTSHdH?= =?utf-8?B?bTNCa0ozWlJpKzVzTDFZQU1hMWJ2YXR0QWdXU1pUTGFrNXhzNDM1em9mSkRy?= =?utf-8?B?ajFxdTBaQmROblRNK05KRWdITDVJKzh0RDVteDZ4enRrRlpManpFakVORzU3?= =?utf-8?B?S3dyMEpjekVqdXFiL1I0Nk5UVlFIL3JGc25OU3lobzR4VE1NZ0M5WXV4L2M4?= =?utf-8?B?eDhha3lMaUJpb29mZ3lUbXJuUFpMbUpqRCtscEgzZldGR3Z0cUsxOG83UHJT?= =?utf-8?B?YmpJOVpNYVVBcHp3TW5DTVFIa2JyY2ppdEVVdWtZdzZPSEhoRDc4Z2xHUzJV?= =?utf-8?B?WVBZazlZdEQrMDdQeE84NCtrNitSL1FiZmc2a0JNNHJOL3BaYjNUZHRNa2Rr?= =?utf-8?B?bXlFdFBrNEJQcXBzV0VUelR1ZTViMittSW1rbG9ZcUZHOHZmeElvM2h0bnY4?= =?utf-8?B?MGJiV2dkaGd6VlQvb1hGZk43U3JMZzR6K3p2Z0FOVWNRT0VvYlBTWkxraUpI?= =?utf-8?B?WmxqMXF1YzdvN3ZnN3EvblNoTU1raFYwL3hLeTBISGFUMGZUeW5uYk5WS1FN?= =?utf-8?B?aVhWWEVWSFNCaXMyQWdqaWZhbDU5WHNTSXQxK09rUVcvc1NVNnU5MzJ6T1Rk?= =?utf-8?B?Q1F2bzdnUlZUMUFjNmhCeitWeVo3ZmM5OHBiSnZBTzdnb3VUUm1yeEtDR1g3?= =?utf-8?B?aVRwUExQN3VTNW5mNEdjd2RYSk51QVZsRWxZZXIwcCtkM0VHd0FqMkZwakFv?= =?utf-8?B?ZDB3aVVrc1FkU3I3MHpYRHM3VHo2anB1MndTVlhOWVo4eThlOFI4cHJQWHRW?= =?utf-8?B?aHNSOW01bC9CSElVLzVqdzlkUmdSNFREL2NFQVYrQ1hINk5NZFdDcGRzeDY5?= =?utf-8?B?WVpJMGFzdnRFa3BramlERU5TQkFFN2FENkxrMG8rbkNSQ253cHV4M1hPNTQ3?= =?utf-8?B?bjUzNTNFUUlpcGh1NHNqUy9ZYkk1ZDhkMjdVL1k3MFhsTXZtOWFjekxNMWR2?= =?utf-8?B?SW1tUmtRc2hEcFVSK3RXZGxLRWNabjJCc095SEM1THBRSStoQ2dDRUNVSm1T?= =?utf-8?Q?74c4=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5048.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ed4d037a-0db3-4589-3873-08db6b02e21d X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2023 05:07:13.0477 (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: Vsl/1Y7rQpO2ljJWnDPqNrwki/PFD/AoRlc9p0az2d760izXwk/VXxHnFD/KdHTYP/4CbqVgAfvq5sDcSNPldQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB7792 Return-Path: zhiguang.liu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIE1pY2hhZWwNClRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLg0KWWVzLCBJIGFtIGZvbGxvd2lu ZyB0aGUgc2ltaWxhciBwYXR0ZXJuIG9mIFVuaXRUZXN0VWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGli LiBJIGFncmVlIHdlIGNhbiBleHBsYWluIHRoZXNlIHR5cGVzIGluIHRoZSByZWFkbWUgaW4gdGhl IGZ1dHVyZSBwYXRjaC4NCg0KSW4gdGhlIG5ld2VyIHZlcnNpb24gb2YgcGF0Y2gsIEkgcmVtb3Zl IHRoZSBkZWJ1ZyBjb2RlIG1hcmtlcnMgYXMgeW91IHN1Z2dlc3RlZC4NCkJlY2F1c2UgdGhpcyBp cyB0aGUgb25seSBjaGFuZ2UsIEkgd2lsbCBrZWVwIHlvdXIgUmV2aWV3ZWQtYnkuDQoNClRoYW5r cw0KWmhpZ3VhbmcNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBNaWNo YWVsDQo+IEt1YmFja2kNCj4gU2VudDogVHVlc2RheSwgSnVuZSA2LCAyMDIzIDExOjI4IFBNDQo+ IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGlu dGVsLmNvbT4NCj4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT47IFNlYW4gQnJvZ2FuDQo+IDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPg0KPiBTdWJq ZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2Ml0gVW5pdFRlc3RGcmFtZXdvcmtQa2c6IEFk ZA0KPiBVbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliDQo+IA0KPiBJdCBsb29rcyBs aWtlIHlvdSdyZSBmb2xsb3dpbmcgYSBzaW1pbGFyIHBhdHRlcm4gdG8gYSBsaWJyYXJ5IGluc3Rh bmNlDQo+IGFscmVhZHkgaW4gVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeSBsaWtlDQo+IFVu aXRUZXN0VWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLiBJIGNhbid0IGZpbmQgd2hlcmUgdGhlc2Ug dHlwZXMgb2YNCj4gbGlicmFyaWVzIGFyZSBleHBsaWNpdGx5IGNhbGxlZCBvdXQgaW4gdGhlDQo+ IFVuaXRUZXN0RnJhbWV3b3JrUGtnL1JlYWRNZS5tZCBmaWxlIFsxXS4gWW91IGRvbid0IG5lZWQg dG8gYWRkIGl0IGluDQo+IHRoaXMgcGF0Y2gsIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGV4cGxhaW4g dGhlc2UgaW4gdGhlIHJlYWRtZSAodW5sZXNzIEkNCj4ganVzdCBtaXNzZWQgaXQpLg0KPiANCj4g VGhleSBhcmUgbm90IHJlYWxseSBhIHB1cmUgbW9jayBzaW5jZSB0aGV5IGhhdmUgYSBzZWxmLWNv bnRhaW5lZA0KPiBmdW5jdGlvbmFsIGltcGxlbWVudGF0aW9uIG9mIHNvbWUgc3RydWN0dXJlcyB0 eXBpY2FsbHkgaW4gY29yZSBtb2R1bGVzDQo+IGxpa2UgdGhlIFBQSSBhbmQgSE9CIGxpc3RzLiBU aGV5IG1pZ2h0IGFsc28gaGF2ZSBtb3JlIGNvZGUgb3V0c2lkZSB0aGUNCj4gdW5pdCBiZWluZyB0 ZXN0ZWQgdGhhbiBpcyBpZGVhbCBpbiBhIHVuaXQgdGVzdCwgYnV0IHRoZXkgYXJlIHVzZWZ1bCBm b3INCj4gY29kZSB0aGF0IGhhcyBkZXBlbmRlbmNpZXMgaW4gZ2xvYmFsIGRhdGFiYXNlcy4NCj4g DQo+IFsxXSAtDQo+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iL21hc3Rl ci9Vbml0VGVzdEZyYW1ld29ya1BrZy9SDQo+IGVhZE1lLm1kI3VuaXQtdGVzdC1sb2NhdGlvbmxh eW91dC1ydWxlcw0KPiANCj4gVGhlcmUncyBzb21lIGNvZGUgSSB0aGluayBpcyB1bm5lY2Vzc2Fy eSBpbiBhIHVuaXQgdGVzdCBpbXBsZW1lbnRhdGlvbg0KPiBsaWtlIHN1cnJvdW5kaW5nIHRoaXMg TlVMTCBwb2ludGVyIGNoZWNrIHdpdGggZGVidWcgY29kZSBtYXJrZXJzIGluDQo+IFVuaXRUZXN0 R2V0SG9iTGlzdCgpOg0KPiANCj4gICAgREVCVUdfQ09ERV9CRUdJTiAoKTsNCj4gICAgaWYgKEhv Ykxpc3QgPT0gTlVMTCkgew0KPiAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ ICAgIH0NCj4gDQo+ICAgIERFQlVHX0NPREVfRU5EICgpOw0KPiANCj4gQ2FuIHlvdSBwbGVhc2Ug c2ltcGx5IGNoZWNrIGlmIHRoZSBwb2ludGVyIGlzIE5VTEw/DQo+IA0KPiBSZXZpZXdlZC1ieTog TWljaGFlbCBLdWJhY2tpIDxtaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT4NCj4gDQo+IE9u IDYvNi8yMDIzIDE6NDAgQU0sIFpoaWd1YW5nIExpdSB3cm90ZToNCj4gPiBUaGlzIGxpYnJhcnkg c3VwcG9ydHMgYSBQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYiBpbXBsZW1lbnRhdGlvbg0KPiA+ IHRoYXQgYWxsb3dzIGNvZGUgZGVwZW5kZW50IHVwb24gUGVpU2VydmljZXNUYWJsZSB0byBvcGVy YXRlIGluIGFuDQo+ID4gaXNvbGF0ZWQgZXhlY3V0aW9uIGVudmlyb25tZW50IHN1Y2ggYXMgd2l0 aGluIHRoZSBjb250ZXh0IG9mIGENCj4gPiBob3N0LWJhc2VkIHVuaXQgdGVzdCBmcmFtZXdvcmsu DQo+ID4NCj4gPiBUaGUgdW5pdCB0ZXN0IHNob3VsZCBpbml0aWFsaXplIHRoZSBQZWlTZXJ2aWNl c1RhYmxlIGRhdGFiYXNlIHdpdGgNCj4gPiBhbnkgcmVxdWlyZWQgZWxlbWVudHMgKGUuZy4gUFBJ cywgSG9iIGV0Yy4pIHByaW9yIHRvIHRoZSBzZXJ2aWNlcw0KPiA+IGJlaW5nIGludm9rZWQgYnkg Y29kZSB1bmRlciB0ZXN0Lg0KPiA+DQo+ID4gSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8g Y2xlYW4gYW55IGdsb2JhbCBkYXRhYmFzZXMgYnkgdXNpbmcNCj4gPiBFRklfUEVJX1NFUlZJQ0VT LlJlc2V0U3lzdGVtMiBhZnRlciBldmVyeSB1bml0IHRlc3Qgc28gdGhlIHRlc3RzDQo+ID4gZXhl Y3V0ZSBpbiBhIHByZWRpY3RhYmxlIG1hbm5lciBmcm9tIGEgY2xlYW4gc3RhdGUuDQo+ID4NCj4g PiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4g Q2M6IE1pY2hhZWwgS3ViYWNraSA8bWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbT4NCj4gPiBD YzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+DQo+ID4gU2lnbmVkLW9m Zi1ieTogWmhpZ3VhbmcgTGl1IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ ICAgLi4uL1VuaXRUZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIuYyAgICAgIHwgMTg3ICsr KysrDQo+ID4gICAuLi4vVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi5oICAgICAg fCA2NTMgKysrKysrKysrKysrKysrKysrDQo+ID4gICAuLi4vVW5pdFRlc3RQZWlTZXJ2aWNlc1Rh YmxlUG9pbnRlckxpYi5pbmYgICAgfCAgMzcgKw0KPiA+ICAgLi4uL1VuaXRUZXN0UGVpU2Vydmlj ZXNUYWJsZVBvaW50ZXJMaWIudW5pICAgIHwgIDEyICsNCj4gPiAgIC4uLi9Vbml0VGVzdFBlaVNl cnZpY2VzVGFibGVQb2ludGVyTGliSG9iLmMgICB8IDE2MiArKysrKw0KPiA+ICAgLi4uL1VuaXRU ZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWJNaXNjLmMgIHwgNDMwICsrKysrKysrKysrKw0K PiA+ICAgLi4uL1VuaXRUZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWJQcGkuYyAgIHwgNDg1 ICsrKysrKysrKysrKysNCj4gPiAgIFVuaXRUZXN0RnJhbWV3b3JrUGtnL1VuaXRUZXN0RnJhbWV3 b3JrUGtnLmRzYyB8ICAgMSArDQo+ID4gICAuLi4vVW5pdFRlc3RGcmFtZXdvcmtQa2dIb3N0LmRz Yy5pbmMgICAgICAgICAgfCAgIDEgKw0KPiA+ICAgOSBmaWxlcyBjaGFuZ2VkLCAxOTY4IGluc2Vy dGlvbnMoKykNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBVbml0VGVzdEZyYW1ld29ya1Br Zy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIvVW5pdFRlcw0KPiB0 UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIuYw0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ IFVuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9p bnRlckxpYi9Vbml0VGVzDQo+IHRQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi5oDQo+ID4gICBj cmVhdGUgbW9kZSAxMDA2NDQNCj4gVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVz dFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliL1VuaXRUZXMNCj4gdFBlaVNlcnZpY2VzVGFibGVQ b2ludGVyTGliLmluZg0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFVuaXRUZXN0RnJhbWV3 b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi9Vbml0VGVz DQo+IHRQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi51bmkNCj4gPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NA0KPiBVbml0VGVzdEZyYW1ld29ya1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2VydmljZXNU YWJsZVBvaW50ZXJMaWIvVW5pdFRlcw0KPiB0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWJIb2Iu Yw0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFVuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJh cnkvVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi9Vbml0VGVzDQo+IHRQZWlTZXJ2 aWNlc1RhYmxlUG9pbnRlckxpYk1pc2MuYw0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFVu aXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRl ckxpYi9Vbml0VGVzDQo+IHRQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYlBwaS5jDQo+ID4NCj4g PiBkaWZmIC0tZ2l0DQo+IGEvVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVzdFBl aVNlcnZpY2VzVGFibGVQb2ludGVyTGliL1VuaXRUDQo+IGVzdFBlaVNlcnZpY2VzVGFibGVQb2lu dGVyTGliLmMNCj4gYi9Vbml0VGVzdEZyYW1ld29ya1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2Vy dmljZXNUYWJsZVBvaW50ZXJMaWIvVW5pdFQNCj4gZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJM aWIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uYTFi OTgyZmJhZQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gYi9Vbml0VGVzdEZyYW1ld29y a1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIvVW5pdFQNCj4g ZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIuYw0KPiA+IEBAIC0wLDAgKzEsMTg3IEBADQo+ ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFRoaXMgbGlicmFyeSBzdXBwb3J0cyBhIFBFSSBTZXJ2aWNl IHRhYmxlIFBvaW50ZXIgbGlicmFyeSBpbXBsZW1lbnRhdGlvbg0KPiB0aGF0DQo+ID4gKyAgYWxs b3dzIGNvZGUgZGVwZW5kZW50IHVwb24gUEVJIFNlcnZpY2UgdG8gb3BlcmF0ZSBpbiBhbiBpc29s YXRlZA0KPiBleGVjdXRpb24gZW52aXJvbm1lbnQNCj4gPiArICBzdWNoIGFzIHdpdGhpbiB0aGUg Y29udGV4dCBvZiBhIGhvc3QtYmFzZWQgdW5pdCB0ZXN0IGZyYW1ld29yay4NCj4gPiArDQo+ID4g KyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlVuaXRUZXN0UGVp U2VydmljZXNUYWJsZVBvaW50ZXJMaWIuaCINCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gUGVp IHNlcnZpY2UgaW5zdGFuY2UNCj4gPiArLy8vDQo+ID4gK0VGSV9QRUlfU0VSVklDRVMgIG1QZWlT ZXJ2aWNlcyA9IHsNCj4gPiArICB7DQo+ID4gKyAgICBQRUlfU0VSVklDRVNfU0lHTkFUVVJFLA0K PiA+ICsgICAgUEVJX1NFUlZJQ0VTX1JFVklTSU9OLA0KPiA+ICsgICAgc2l6ZW9mIChFRklfUEVJ X1NFUlZJQ0VTKSwNCj4gPiArICAgIDAsDQo+ID4gKyAgICAwDQo+ID4gKyAgfSwNCj4gPiArICBV bml0VGVzdEluc3RhbGxQcGksICAgLy8gSW5zdGFsbFBwaQ0KPiA+ICsgIFVuaXRUZXN0UmVJbnN0 YWxsUHBpLCAvLyBSZUluc3RhbGxQcGkNCj4gPiArICBVbml0VGVzdExvY2F0ZVBwaSwgICAgLy8g TG9jYXRlUHBpDQo+ID4gKyAgVW5pdFRlc3ROb3RpZnlQcGksICAgIC8vIE5vdGlmeVBwaQ0KPiA+ ICsNCj4gPiArICBVbml0VGVzdEdldEJvb3RNb2RlLCAgLy8gR2V0Qm9vdE1vZGUNCj4gPiArICBV bml0VGVzdFNldEJvb3RNb2RlLCAgLy8gU2V0Qm9vdE1vZGUNCj4gPiArDQo+ID4gKyAgVW5pdFRl c3RHZXRIb2JMaXN0LCAvLyBHZXRIb2JMaXN0DQo+ID4gKyAgVW5pdFRlc3RDcmVhdGVIb2IsICAv LyBDcmVhdGVIb2INCj4gPiArDQo+ID4gKyAgVW5pdFRlc3RGZnNGaW5kTmV4dFZvbHVtZSwgIC8v IEZmc0ZpbmROZXh0Vm9sdW1lDQo+ID4gKyAgVW5pdFRlc3RGZnNGaW5kTmV4dEZpbGUsICAgIC8v IEZmc0ZpbmROZXh0RmlsZQ0KPiA+ICsgIFVuaXRUZXN0RmZzRmluZFNlY3Rpb25EYXRhLCAvLyBG ZnNGaW5kU2VjdGlvbkRhdGENCj4gPiArDQo+ID4gKyAgVW5pdFRlc3RJbnN0YWxsUGVpTWVtb3J5 LCAvLyBJbnN0YWxsUGVpTWVtb3J5DQo+ID4gKyAgVW5pdFRlc3RBbGxvY2F0ZVBhZ2VzLCAgICAv LyBBbGxvY2F0ZVBhZ2VzDQo+ID4gKyAgVW5pdFRlc3RBbGxvY2F0ZVBvb2wsICAgICAvLyBBbGxv Y2F0ZVBvb2wNCj4gPiArICAoRUZJX1BFSV9DT1BZX01FTSlDb3B5TWVtLA0KPiA+ICsgIChFRklf UEVJX1NFVF9NRU0pU2V0TWVtLA0KPiA+ICsNCj4gPiArICBVbml0VGVzdFJlcG9ydFN0YXR1c0Nv ZGUsIC8vIFJlcG9ydFN0YXR1c0NvZGUNCj4gPiArICBVbml0VGVzdFJlc2V0U3lzdGVtLCAgICAg IC8vIFJlc2V0U3lzdGVtDQo+ID4gKw0KPiA+ICsgIE5VTEwsICAvLyBDcHVJbw0KPiA+ICsgIE5V TEwsICAvLyBQY2lDZmcNCj4gPiArDQo+ID4gKyAgVW5pdFRlc3RGZnNGaW5kRmlsZUJ5TmFtZSwg ICAvLyBGZnNGaW5kRmlsZUJ5TmFtZQ0KPiA+ICsgIFVuaXRUZXN0RmZzR2V0RmlsZUluZm8sICAg ICAgLy8gRmZzR2V0RmlsZUluZm8NCj4gPiArICBVbml0VGVzdEZmc0dldFZvbHVtZUluZm8sICAg IC8vIEZmc0dldFZvbHVtZUluZm8NCj4gPiArICBVbml0VGVzdFJlZ2lzdGVyRm9yU2hhZG93LCAg IC8vIFJlZ2lzdGVyRm9yU2hhZG93DQo+ID4gKyAgVW5pdFRlc3RGZnNGaW5kU2VjdGlvbkRhdGEz LCAvLyBGZnNGaW5kU2VjdGlvbkRhdGEzDQo+ID4gKyAgVW5pdFRlc3RGZnNHZXRGaWxlSW5mbzIs ICAgICAvLyBGZnNHZXRGaWxlSW5mbzINCj4gPiArICBVbml0VGVzdFJlc2V0U3lzdGVtMiwgICAg ICAgIC8vIFJlc2V0U3lzdGVtMg0KPiA+ICsgIFVuaXRUZXN0RnJlZVBhZ2VzLCAgICAgICAgICAg Ly8gRnJlZVBhZ2VzDQo+ID4gK307DQo+ID4gKw0KPiA+ICtQRUlfQ09SRV9JTlNUQU5DRSAgbVBy aXZhdGVEYXRhOw0KPiA+ICtVSU5UOCAgICAgICAgICAgICAgbUhvYkJ1ZmZlcltNQVhfSE9CX1NJ WkVdOw0KPiA+ICtWT0lEICAgICAgICAgICAgICAgKm1QZWlTZXJ2aWNlc1BvaW50ZXI7DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBDbGVhciBCdWZmZXIgRm9yIEdsb2JhbCBEYXRhLg0KPiA+ICsq Ki8NCj4gPiArVk9JRA0KPiA+ICtDbGVhckdsb2JhbERhdGEgKA0KPiA+ICsgIFZPSUQNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICBaZXJvTWVtICgmbVByaXZhdGVEYXRhLCBzaXplb2YgKG1Qcml2 YXRlRGF0YSkpOw0KPiA+ICsgIG1Qcml2YXRlRGF0YS5QcGlEYXRhLlBwaUxpc3QuTWF4Q291bnQg ICAgICAgICAgICA9IE1BWF9QUElfQ09VTlQ7DQo+ID4gKyAgbVByaXZhdGVEYXRhLlBwaURhdGEu Q2FsbGJhY2tOb3RpZnlMaXN0Lk1heENvdW50ID0gTUFYX1BQSV9DT1VOVDsNCj4gPiArICBtUHJp dmF0ZURhdGEuUHBpRGF0YS5EaXNwYXRjaE5vdGlmeUxpc3QuTWF4Q291bnQgPSBNQVhfUFBJX0NP VU5UOw0KPiA+ICsNCj4gPiArICBaZXJvTWVtIChtSG9iQnVmZmVyLCBNQVhfSE9CX1NJWkUpOw0K PiA+ICsgIG1Qcml2YXRlRGF0YS5Ib2JMaXN0LlJhdyA9IG1Ib2JCdWZmZXI7DQo+ID4gKyAgVW5p dFRlc3RDb3JlQnVpbGRIb2JIYW5kb2ZmSW5mb1RhYmxlICgwLA0KPiAoRUZJX1BIWVNJQ0FMX0FE RFJFU1MpKFVJTlROKW1Ib2JCdWZmZXIsIE1BWF9IT0JfU0laRSk7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIFJlc2V0cyB0aGUgZW50aXJlIHBsYXRmb3JtLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW1baW5dIFJlc2V0VHlwZSAgICAgIFRoZSB0eXBlIG9mIHJlc2V0IHRvIHBlcmZvcm0u DQo+ID4gKyAgQHBhcmFtW2luXSBSZXNldFN0YXR1cyAgICBUaGUgc3RhdHVzIGNvZGUgZm9yIHRo ZSByZXNldC4NCj4gPiArICBAcGFyYW1baW5dIERhdGFTaXplICAgICAgIFRoZSBzaXplLCBpbiBi eXRlcywgb2YgUmVzZXREYXRhLg0KPiA+ICsgIEBwYXJhbVtpbl0gUmVzZXREYXRhICAgICAgRm9y IGEgUmVzZXRUeXBlIG9mIEVmaVJlc2V0Q29sZCwgRWZpUmVzZXRXYXJtLA0KPiBvciBFZmlSZXNl dFNodXRkb3duDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGF0YSBidWZm ZXIgc3RhcnRzIHdpdGggYSBOdWxsLXRlcm1pbmF0ZWQgc3RyaW5nLA0KPiBvcHRpb25hbGx5DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSBhZGRpdGlvbmFsIGJp bmFyeSBkYXRhLiBUaGUgc3RyaW5nIGlzIGEgZGVzY3JpcHRpb24NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoYXQgdGhlIGNhbGxlciBtYXkgdXNlIHRvIGZ1cnRoZXIgaW5kaWNh dGUgdGhlIHJlYXNvbiBmb3IgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz eXN0ZW0gcmVzZXQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4g PiArVW5pdFRlc3RSZXNldFN5c3RlbTIgKA0KPiA+ICsgIElOIEVGSV9SRVNFVF9UWVBFICBSZXNl dFR5cGUsDQo+ID4gKyAgSU4gRUZJX1NUQVRVUyAgICAgIFJlc2V0U3RhdHVzLA0KPiA+ICsgIElO IFVJTlROICAgICAgICAgICBEYXRhU2l6ZSwNCj4gPiArICBJTiBWT0lEICAgICAgICAgICAgKlJl c2V0RGF0YSBPUFRJT05BTA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIENsZWFyR2xvYmFsRGF0 YSAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIHRoZSBjYWNo ZWQgdmFsdWUgb2YgdGhlIFBFSSBTZXJ2aWNlcyBUYWJsZSBwb2ludGVyLg0KPiA+ICsNCj4gPiAr ICBSZXR1cm5zIHRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlIFBFSSBTZXJ2aWNlcyBUYWJsZSBwb2lu dGVyIGluIGEgQ1BVDQo+IHNwZWNpZmljIG1hbm5lcg0KPiA+ICsgIGFzIHNwZWNpZmllZCBpbiB0 aGUgQ1BVIGJpbmRpbmcgc2VjdGlvbiBvZiB0aGUgUGxhdGZvcm0gSW5pdGlhbGl6YXRpb24gUHJl LQ0KPiBFRkkNCj4gPiArICBJbml0aWFsaXphdGlvbiBDb3JlIEludGVyZmFjZSBTcGVjaWZpY2F0 aW9uLg0KPiA+ICsNCj4gPiArICBJZiB0aGUgY2FjaGVkIFBFSSBTZXJ2aWNlcyBUYWJsZSBwb2lu dGVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gIFRoZSBw b2ludGVyIHRvIFBlaVNlcnZpY2VzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0NPTlNUIEVGSV9Q RUlfU0VSVklDRVMgKioNCj4gPiArRUZJQVBJDQo+ID4gK0dldFBlaVNlcnZpY2VzVGFibGVQb2lu dGVyICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgbVBlaVNlcnZpY2Vz UG9pbnRlciA9ICZtUGVpU2VydmljZXM7DQo+ID4gKyAgcmV0dXJuIChDT05TVCBFRklfUEVJX1NF UlZJQ0VTICoqKSZtUGVpU2VydmljZXNQb2ludGVyOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBDYWNoZXMgYSBwb2ludGVyIFBFSSBTZXJ2aWNlcyBUYWJsZS4NCj4gPiArDQo+ID4g KyAgQ2FjaGVzIHRoZSBwb2ludGVyIHRvIHRoZSBQRUkgU2VydmljZXMgVGFibGUgc3BlY2lmaWVk IGJ5DQo+IFBlaVNlcnZpY2VzVGFibGVQb2ludGVyDQo+ID4gKyAgaW4gYSBDUFUgc3BlY2lmaWMg bWFubmVyIGFzIHNwZWNpZmllZCBpbiB0aGUgQ1BVIGJpbmRpbmcgc2VjdGlvbiBvZiB0aGUNCj4g UGxhdGZvcm0gSW5pdGlhbGl6YXRpb24NCj4gPiArICBQcmUtRUZJIEluaXRpYWxpemF0aW9uIENv cmUgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24uDQo+ID4gKw0KPiA+ICsgIElmIFBlaVNlcnZpY2Vz VGFibGVQb2ludGVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bSAgICBQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlciAgIFRoZSBhZGRyZXNzIG9mIFBlaVNlcnZpY2Vz IHBvaW50ZXIuDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtTZXRQZWlT ZXJ2aWNlc1RhYmxlUG9pbnRlciAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAg KipQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQZXJmb3JtIENQVSBz cGVjaWZpYyBhY3Rpb25zIHJlcXVpcmVkIHRvIG1pZ3JhdGUgdGhlIFBFSSBTZXJ2aWNlcyBUYWJs ZQ0KPiA+ICsgIHBvaW50ZXIgZnJvbSB0ZW1wb3JhcnkgUkFNIHRvIHBlcm1hbmVudCBSQU0uDQo+ ID4gKw0KPiA+ICsgIEZvciBJQTMyIENQVXMsIHRoZSBQRUkgU2VydmljZXMgVGFibGUgcG9pbnRl ciBpcyBzdG9yZWQgaW4gdGhlIDQgYnl0ZXMNCj4gPiArICBpbW1lZGlhdGVseSBwcmVjZWRpbmcg dGhlIEludGVycnVwdCBEZXNjcmlwdG9yIFRhYmxlIChJRFQpIGluIG1lbW9yeS4NCj4gPiArICBG b3IgWDY0IENQVXMsIHRoZSBQRUkgU2VydmljZXMgVGFibGUgcG9pbnRlciBpcyBzdG9yZWQgaW4g dGhlIDggYnl0ZXMNCj4gPiArICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgdGhlIEludGVycnVwdCBE ZXNjcmlwdG9yIFRhYmxlIChJRFQpIGluIG1lbW9yeS4NCj4gPiArICBGb3IgSXRhbml1bSBhbmQg QVJNIENQVXMsIGEgdGhlIFBFSSBTZXJ2aWNlcyBUYWJsZSBQb2ludGVyIGlzIHN0b3JlZCBpbg0K PiA+ICsgIGEgZGVkaWNhdGVkIENQVSByZWdpc3Rlci4gIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBp cyBubyBtZW1vcnkgc3RvcmFnZQ0KPiA+ICsgIGFzc29jaWF0ZWQgd2l0aCBzdG9yaW5nIHRoZSBQ RUkgU2VydmljZXMgVGFibGUgcG9pbnRlciwgc28gbm8gYWRkaXRpb25hbA0KPiA+ICsgIG1pZ3Jh dGlvbiBhY3Rpb25zIGFyZSByZXF1aXJlZCBmb3IgSXRhbml1bSBvciBBUk0gQ1BVcy4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtNaWdyYXRlUGVpU2Vydmlj ZXNUYWJsZVBvaW50ZXIgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBB U1NFUlQgKEZBTFNFKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhlIGNvbnN0 cnVjdG9yIGZ1bmN0aW9uIGluaXQgUGVpU2VydmljZXNUYWJsZSB3aXRoIGNsZWFuIGJ1ZmZlci4N Cj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFRoZSBjb25zdHJ1Y3RvciBhbHdh eXMgcmV0dXJucyBFRklfU1VDQ0VTUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliQ29u c3RydWN0b3IgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBDbGVhckds b2JhbERhdGEgKCk7DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gZGlm ZiAtLWdpdA0KPiBhL1VuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlTZXJ2 aWNlc1RhYmxlUG9pbnRlckxpYi9Vbml0VA0KPiBlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxp Yi5oDQo+IGIvVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVzdFBlaVNlcnZpY2Vz VGFibGVQb2ludGVyTGliL1VuaXRUDQo+IGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliLmgN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmU0MTFkMDhh ODYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvVW5pdFRlc3RGcmFtZXdvcmtQa2cv TGlicmFyeS9Vbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliL1VuaXRUDQo+IGVzdFBl aVNlcnZpY2VzVGFibGVQb2ludGVyTGliLmgNCj4gPiBAQCAtMCwwICsxLDY1MyBAQA0KPiA+ICsv KiogQGZpbGUNCj4gPiArICBBbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSBmb3IgdGhlIFVuaXQgVGVz dCBpbnN0YW5jZSBvZiB0aGUgUEVJIHNlcnZpY2VzIFRhYmxlDQo+IFBvaW50ZXIgTGlicmFyeS4N Cj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBQ RUlfU0VSVklDRVNfVEFCTEVfUE9JTlRFUl9MSUJfVU5JVF9URVNUX0hfDQo+ID4gKyNkZWZpbmUg UEVJX1NFUlZJQ0VTX1RBQkxFX1BPSU5URVJfTElCX1VOSVRfVEVTVF9IXw0KPiA+ICsNCj4gPiAr I2luY2x1ZGUgPEJhc2UuaD4NCj4gPiArI2luY2x1ZGUgPFBpUGVpLmg+DQo+ID4gKyNpbmNsdWRl IDxQaS9QaU11bHRpUGhhc2UuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VuaXRUZXN0TGliLmg+ DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1BWF9QUElfQ09VTlQg IDEwMA0KPiA+ICsjZGVmaW5lIE1BWF9IT0JfU0laRSAgIFNJWkVfMzJNQg0KPiA+ICsNCj4gPiAr Ly8vDQo+ID4gKy8vLyBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBQRUlfQ09SRV9JTlNUQU5DRQ0K PiA+ICsvLy8NCj4gPiArdHlwZWRlZiBzdHJ1Y3QgX1BFSV9DT1JFX0lOU1RBTkNFIFBFSV9DT1JF X0lOU1RBTkNFOw0KPiA+ICsNCj4gPiArLy8vDQo+ID4gKy8vLyBQZWkgQ29yZSBwcml2YXRlIGRh dGEgc3RydWN0dXJlcw0KPiA+ICsvLy8NCj4gPiArdHlwZWRlZiB1bmlvbiB7DQo+ID4gKyAgRUZJ X1BFSV9QUElfREVTQ1JJUFRPUiAgICAgICAqUHBpOw0KPiA+ICsgIEVGSV9QRUlfTk9USUZZX0RF U0NSSVBUT1IgICAgKk5vdGlmeTsNCj4gPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAg ICpSYXc7DQo+ID4gK30gUEVJX1BQSV9MSVNUX1BPSU5URVJTOw0KPiA+ICsNCj4gPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICBDdXJyZW50Q291bnQ7 DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIE1heENvdW50Ow0KPiA+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICBMYXN0RGlzcGF0Y2hlZENvdW50Ow0KPiA+ICsgIC8vLw0KPiA+ ICsgIC8vLyBNYXhDb3VudCBudW1iZXIgb2YgZW50cmllcy4NCj4gPiArICAvLy8NCj4gPiArICBQ RUlfUFBJX0xJU1RfUE9JTlRFUlMgICAgUHBpUHRyc1tNQVhfUFBJX0NPVU5UXTsNCj4gPiArfSBQ RUlfUFBJX0xJU1Q7DQo+ID4gKw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgIEN1cnJlbnRDb3VudDsNCj4gPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgTWF4Q291bnQ7DQo+ID4gKyAgLy8vDQo+ID4gKyAgLy8vIE1heENvdW50IG51bWJl ciBvZiBlbnRyaWVzLg0KPiA+ICsgIC8vLw0KPiA+ICsgIFBFSV9QUElfTElTVF9QT0lOVEVSUyAg ICBOb3RpZnlQdHJzW01BWF9QUElfQ09VTlRdOw0KPiA+ICt9IFBFSV9DQUxMQkFDS19OT1RJRllf TElTVDsNCj4gPiArDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgQ3VycmVudENvdW50Ow0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAg ICBNYXhDb3VudDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgTGFzdERpc3BhdGNo ZWRDb3VudDsNCj4gPiArICAvLy8NCj4gPiArICAvLy8gTWF4Q291bnQgbnVtYmVyIG9mIGVudHJp ZXMuDQo+ID4gKyAgLy8vDQo+ID4gKyAgUEVJX1BQSV9MSVNUX1BPSU5URVJTICAgIE5vdGlmeVB0 cnNbTUFYX1BQSV9DT1VOVF07DQo+ID4gK30gUEVJX0RJU1BBVENIX05PVElGWV9MSVNUOw0KPiA+ ICsNCj4gPiArLy8vDQo+ID4gKy8vLyBQUEkgZGF0YWJhc2Ugc3RydWN0dXJlIHdoaWNoIGNvbnRh aW5zIHRocmVlIGxpbmtzOg0KPiA+ICsvLy8gUHBpTGlzdCwgQ2FsbGJhY2tOb3RpZnlMaXN0IGFu ZCBEaXNwYXRjaE5vdGlmeUxpc3QuDQo+ID4gKy8vLw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ ID4gKyAgLy8vDQo+ID4gKyAgLy8vIFBQSSBMaXN0Lg0KPiA+ICsgIC8vLw0KPiA+ICsgIFBFSV9Q UElfTElTVCAgICAgICAgICAgICAgICBQcGlMaXN0Ow0KPiA+ICsgIC8vLw0KPiA+ICsgIC8vLyBO b3RpZnkgTGlzdCBhdCBkaXNwYXRjaCBsZXZlbC4NCj4gPiArICAvLy8NCj4gPiArICBQRUlfQ0FM TEJBQ0tfTk9USUZZX0xJU1QgICAgQ2FsbGJhY2tOb3RpZnlMaXN0Ow0KPiA+ICsgIC8vLw0KPiA+ ICsgIC8vLyBOb3RpZnkgTGlzdCBhdCBjYWxsYmFjayBsZXZlbC4NCj4gPiArICAvLy8NCj4gPiAr ICBQRUlfRElTUEFUQ0hfTk9USUZZX0xJU1QgICAgRGlzcGF0Y2hOb3RpZnlMaXN0Ow0KPiA+ICt9 IFBFSV9QUElfREFUQUJBU0U7DQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIFBlaSBDb3JlIHBy aXZhdGUgZGF0YSBzdHJ1Y3R1cmUgaW5zdGFuY2UNCj4gPiArLy8vDQo+ID4gK3N0cnVjdCBfUEVJ X0NPUkVfSU5TVEFOQ0Ugew0KPiA+ICsgIFBFSV9QUElfREFUQUJBU0UgICAgICAgIFBwaURhdGE7 DQo+ID4gKyAgRUZJX1BFSV9IT0JfUE9JTlRFUlMgICAgSG9iTGlzdDsNCj4gPiArfTsNCj4gPiAr DQo+ID4gK2V4dGVybiBQRUlfQ09SRV9JTlNUQU5DRSAgbVByaXZhdGVEYXRhOw0KPiA+ICsjZGVm aW5lIFBFSV9DT1JFX0lOU1RBTkNFX0ZST01fUFNfVEhJUyhhKSAgJm1Qcml2YXRlRGF0YQ0KPiA+ ICsNCj4gPiArVk9JRA0KPiA+ICtQcm9jZXNzTm90aWZ5ICgNCj4gPiArICBJTiBQRUlfQ09SRV9J TlNUQU5DRSAgKlByaXZhdGVEYXRhLA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICBOb3Rp ZnlUeXBlLA0KPiA+ICsgIElOIElOVE4gICAgICAgICAgICAgICBJbnN0YWxsU3RhcnRJbmRleCwN Cj4gPiArICBJTiBJTlROICAgICAgICAgICAgICAgSW5zdGFsbFN0b3BJbmRleCwNCj4gPiArICBJ TiBJTlROICAgICAgICAgICAgICAgTm90aWZ5U3RhcnRJbmRleCwNCj4gPiArICBJTiBJTlROICAg ICAgICAgICAgICAgTm90aWZ5U3RvcEluZGV4DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGluc3RhbGxzIGFuIGludGVyZmFjZSBpbiB0aGUg UEVJIFBQSSBkYXRhYmFzZSBieSBHVUlELg0KPiA+ICsgIFRoZSBwdXJwb3NlIG9mIHRoZSBzZXJ2 aWNlIGlzIHRvIHB1Ymxpc2ggYW4gaW50ZXJmYWNlIHRoYXQgb3RoZXIgcGFydGllcw0KPiA+ICsg IGNhbiB1c2UgdG8gY2FsbCBhZGRpdGlvbmFsIFBFSU1zLg0KPiA+ICsNCj4gPiArICBAcGFyYW0g UGVpU2VydmljZXMgICAgICAgICAgICAgICAgQW4gaW5kaXJlY3QgcG9pbnRlciB0byB0aGUgRUZJ X1BFSV9TRVJWSUNFUw0KPiB0YWJsZSBwdWJsaXNoZWQgYnkgdGhlIFBFSSBGb3VuZGF0aW9uLg0K PiA+ICsgIEBwYXJhbSBQcGlMaXN0ICAgICAgICAgICAgICAgICAgICBQb2ludGVyIHRvIGEgbGlz dCBvZiBQRUkgUFBJIERlc2NyaXB0b3JzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICAgICBpZiBhbGwgUFBJcyBpbiBQcGlMaXN0IGFyZSBzdWNjZXNzZnVsbHkg aW5zdGFsbGVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgIGlmIFBw aUxpc3QgaXMgTlVMTCBwb2ludGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgYW55IFBQSSBpbiBQcGlMaXN0IGlzIG5vdCB2YWxpZA0KPiA+ICsgIEByZXR2YWwg RUZJX09VVF9PRl9SRVNPVVJDRVMgICAgIGlmIHRoZXJlIGlzIG5vIG1vcmUgbWVtb3J5DQo+IHJl c291cmNlIHRvIGluc3RhbGwgUFBJDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RJbnN0YWxsUHBpICgNCj4gPiArICBJTiBDT05TVCBF RklfUEVJX1NFUlZJQ0VTICAgICAgICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElOIENPTlNUIEVG SV9QRUlfUFBJX0RFU0NSSVBUT1IgICpQcGlMaXN0DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHJlaW5zdGFsbHMgYW4gaW50ZXJmYWNlIGlu IHRoZSBQRUkgUFBJIGRhdGFiYXNlIGJ5IEdVSUQuDQo+ID4gKyAgVGhlIHB1cnBvc2Ugb2YgdGhl IHNlcnZpY2UgaXMgdG8gcHVibGlzaCBhbiBpbnRlcmZhY2UgdGhhdCBvdGhlciBwYXJ0aWVzDQo+ IGNhbg0KPiA+ICsgIHVzZSB0byByZXBsYWNlIGFuIGludGVyZmFjZSBvZiB0aGUgc2FtZSBuYW1l IGluIHRoZSBwcm90b2NvbCBkYXRhYmFzZQ0KPiB3aXRoIGENCj4gPiArICBkaWZmZXJlbnQgaW50 ZXJmYWNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2VydmljZXMgICAgICAgICAgICBBbiBp bmRpcmVjdCBwb2ludGVyIHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VTDQo+IHRhYmxlIHB1Ymxpc2hl ZCBieSB0aGUgUEVJIEZvdW5kYXRpb24uDQo+ID4gKyAgQHBhcmFtIE9sZFBwaSAgICAgICAgICAg ICAgICAgUG9pbnRlciB0byB0aGUgb2xkIFBFSSBQUEkgRGVzY3JpcHRvcnMuDQo+ID4gKyAgQHBh cmFtIE5ld1BwaSAgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgbmV3IFBFSSBQUEkgRGVz Y3JpcHRvcnMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIGlm IHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiBpZiBPbGRQcGkgb3IgTmV3UHBpIGlzIE5VTEwNCj4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBpZiBOZXdQcGkgaXMgbm90IHZhbGlkDQo+ID4gKyAgQHJldHZh bCBFRklfTk9UX0ZPVU5EICAgICAgICAgaWYgdGhlIFBQSSB3YXMgbm90IGluIHRoZSBkYXRhYmFz ZQ0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1Vu aXRUZXN0UmVJbnN0YWxsUHBpICgNCj4gPiArICBJTiBDT05TVCBFRklfUEVJX1NFUlZJQ0VTICAg ICAgICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElOIENPTlNUIEVGSV9QRUlfUFBJX0RFU0NSSVBU T1IgICpPbGRQcGksDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9QUElfREVTQ1JJUFRPUiAgKk5l d1BwaQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArDQo+ID4gKyAgTG9jYXRlIGEg Z2l2ZW4gbmFtZWQgUFBJLg0KPiA+ICsNCj4gPiArDQo+ID4gKyAgQHBhcmFtIFBlaVNlcnZpY2Vz ICAgICAgICBBbiBpbmRpcmVjdCBwb2ludGVyIHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VTDQo+IHRh YmxlIHB1Ymxpc2hlZCBieSB0aGUgUEVJIEZvdW5kYXRpb24uDQo+ID4gKyAgQHBhcmFtIEd1aWQg ICAgICAgICAgICAgICBQb2ludGVyIHRvIEdVSUQgb2YgdGhlIFBQSS4NCj4gPiArICBAcGFyYW0g SW5zdGFuY2UgICAgICAgICAgIEluc3RhbmNlIE51bWJlciB0byBkaXNjb3Zlci4NCj4gPiArICBA cGFyYW0gUHBpRGVzY3JpcHRvciAgICAgIFBvaW50ZXIgdG8gcmVmZXJlbmNlIHRoZSBmb3VuZCBk ZXNjcmlwdG9yLiBJZg0KPiBub3QgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNjcmlwdG9yIChpbmNsdWRlcyBmbGFncywg ZXRjKQ0KPiA+ICsgIEBwYXJhbSBQcGkgICAgICAgICAgICAgICAgUG9pbnRlciB0byByZWZlcmVu Y2UgdGhlIGZvdW5kIFBQSQ0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgaWYg dGhlIFBQSSBpcyBpbiB0aGUgZGF0YWJhc2UNCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQg aWYgdGhlIFBQSSBpcyBub3QgaW4gdGhlIGRhdGFiYXNlDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr RUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RMb2NhdGVQcGkgKA0KPiA+ICsg IElOIENPTlNUIEVGSV9QRUlfU0VSVklDRVMgICAgICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElO IENPTlNUIEVGSV9HVUlEICAgICAgICAgICAgICAqR3VpZCwNCj4gPiArICBJTiBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgSW5zdGFuY2UsDQo+ID4gKyAgSU4gT1VUIEVGSV9QRUlfUFBJX0RF U0NSSVBUT1IgICoqUHBpRGVzY3JpcHRvciwNCj4gPiArICBJTiBPVVQgVk9JRCAgICAgICAgICAg ICAgICAgICAgKipQcGkNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICsg IFRoaXMgZnVuY3Rpb24gaW5zdGFsbHMgYSBub3RpZmljYXRpb24gc2VydmljZSB0byBiZSBjYWxs ZWQgYmFjayB3aGVuIGEgZ2l2ZW4NCj4gPiArICBpbnRlcmZhY2UgaXMgaW5zdGFsbGVkIG9yIHJl aW5zdGFsbGVkLiBUaGUgcHVycG9zZSBvZiB0aGUgc2VydmljZSBpcyB0bw0KPiBwdWJsaXNoDQo+ ID4gKyAgYW4gaW50ZXJmYWNlIHRoYXQgb3RoZXIgcGFydGllcyBjYW4gdXNlIHRvIGNhbGwgYWRk aXRpb25hbCBQUElzIHRoYXQgbWF5DQo+IG1hdGVyaWFsaXplIGxhdGVyLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gUGVpU2VydmljZXMgICAgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVG SV9QRUlfU0VSVklDRVMNCj4gdGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbi4N Cj4gPiArICBAcGFyYW0gTm90aWZ5TGlzdCAgICAgICAgIFBvaW50ZXIgdG8gbGlzdCBvZiBEZXNj cmlwdG9ycyB0byBub3RpZnkgdXBvbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgaWYgc3VjY2Vzc2Z1bA0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNP VVJDRVMgIGlmIG5vIHNwYWNlIGluIHRoZSBkYXRhYmFzZQ0KPiA+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIGlmIG5vdCBhIGdvb2QgZGVzY3JpcHRvcg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0Tm90aWZ5UHBpICgN Cj4gPiArICBJTiBDT05TVCBFRklfUEVJX1NFUlZJQ0VTICAgICAgICAgICAqKlBlaVNlcnZpY2Vz LA0KPiA+ICsgIElOIENPTlNUIEVGSV9QRUlfTk9USUZZX0RFU0NSSVBUT1IgICpOb3RpZnlMaXN0 DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEdldHMgdGhlIHBvaW50ZXIgdG8g dGhlIEhPQiBMaXN0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2VydmljZXMgICAgICAgICAg ICAgICAgICAgQW4gaW5kaXJlY3QgcG9pbnRlciB0byB0aGUNCj4gRUZJX1BFSV9TRVJWSUNFUyB0 YWJsZSBwdWJsaXNoZWQgYnkgdGhlIFBFSSBGb3VuZGF0aW9uLg0KPiA+ICsgIEBwYXJhbSBIb2JM aXN0ICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBIT0IgTGlzdC4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgIEdldCB0aGUgcG9p bnRlciBvZiBIT0IgTGlzdA0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9BVkFJTEFCTEVfWUVUICAg ICAgICB0aGUgSE9CIExpc3QgaXMgbm90IHlldCBwdWJsaXNoZWQNCj4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgICAgICAgSG9iTGlzdCBpcyBOVUxMIChpbiBkZWJ1ZyBtb2Rl KQ0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1Vu aXRUZXN0R2V0SG9iTGlzdCAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgKipQ ZWlTZXJ2aWNlcywNCj4gPiArICBJTiBPVVQgVk9JRCAgICAgICAgICAgICAgICAqKkhvYkxpc3QN Cj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQWRkIGEgbmV3IEhPQiB0byB0aGUg SE9CIExpc3QuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBQZWlTZXJ2aWNlcyAgICAgIEFuIGluZGly ZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMgdGFibGUNCj4gcHVibGlzaGVkIGJ5 IHRoZSBQRUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0gVHlwZSAgICAgICAgICAgICBUeXBl IG9mIHRoZSBuZXcgSE9CLg0KPiA+ICsgIEBwYXJhbSBMZW5ndGggICAgICAgICAgIExlbmd0aCBv ZiB0aGUgbmV3IEhPQiB0byBhbGxvY2F0ZS4NCj4gPiArICBAcGFyYW0gSG9iICAgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBuZXcgSE9CLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICBFRklfU1VD Q0VTUyAgICAgICAgICAgU3VjY2VzcyB0byBjcmVhdGUgSE9CLg0KPiA+ICsgIEByZXR2YWwgIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBpZiBIb2IgaXMgTlVMTA0KPiA+ICsgIEByZXR2YWwgIEVGSV9O T1RfQVZBSUxBQkxFX1lFVCBpZiBIb2JMaXN0IGlzIHN0aWxsIG5vdCBhdmFpbGFibGUuDQo+ID4g KyAgQHJldHZhbCAgRUZJX09VVF9PRl9SRVNPVVJDRVMgIGlmIHRoZXJlIGlzIG5vIG1vcmUgbWVt b3J5IHRvIGdyb3cNCj4gdGhlIEhvYmxpc3QuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RDcmVhdGVIb2IgKA0KPiA+ICsgIElOIENP TlNUIEVGSV9QRUlfU0VSVklDRVMgICoqUGVpU2VydmljZXMsDQo+ID4gKyAgSU4gVUlOVDE2ICAg ICAgICAgICAgICAgICAgVHlwZSwNCj4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICBM ZW5ndGgsDQo+ID4gKyAgSU4gT1VUIFZPSUQgICAgICAgICAgICAgICAgKipIb2INCj4gPiArICAp Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICsgIEJ1aWxkcyBhIEhhbmRvZmYgSW5mb3Jt YXRpb24gVGFibGUgSE9CDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBCb290TW9kZSAgICAgICAgLSBD dXJyZW50IEJvb3Rtb2RlDQo+ID4gKyAgQHBhcmFtIE1lbW9yeUJlZ2luICAgICAtIFN0YXJ0IE1l bW9yeSBBZGRyZXNzLg0KPiA+ICsgIEBwYXJhbSBNZW1vcnlMZW5ndGggICAgLSBMZW5ndGggb2Yg TWVtb3J5Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEVGSV9TVUNDRVNTIEFsd2F5cyBzdWNjZXNz IHRvIGluaXRpYWxpemUgSE9CLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArVW5pdFRlc3RDb3JlQnVpbGRIb2JIYW5kb2ZmSW5mb1RhYmxlICgNCj4gPiArICBJTiBFRklf Qk9PVF9NT0RFICAgICAgICAgQm9vdE1vZGUsDQo+ID4gKyAgSU4gRUZJX1BIWVNJQ0FMX0FERFJF U1MgIE1lbW9yeUJlZ2luLA0KPiA+ICsgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICBNZW1vcnlM ZW5ndGgNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVzZXRzIHRoZSBlbnRp cmUgcGxhdGZvcm0uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUmVzZXRUeXBlICAgICAgVGhl IHR5cGUgb2YgcmVzZXQgdG8gcGVyZm9ybS4NCj4gPiArICBAcGFyYW1baW5dIFJlc2V0U3RhdHVz ICAgIFRoZSBzdGF0dXMgY29kZSBmb3IgdGhlIHJlc2V0Lg0KPiA+ICsgIEBwYXJhbVtpbl0gRGF0 YVNpemUgICAgICAgVGhlIHNpemUsIGluIGJ5dGVzLCBvZiBSZXNldERhdGEuDQo+ID4gKyAgQHBh cmFtW2luXSBSZXNldERhdGEgICAgICBGb3IgYSBSZXNldFR5cGUgb2YgRWZpUmVzZXRDb2xkLCBF ZmlSZXNldFdhcm0sDQo+IG9yIEVmaVJlc2V0U2h1dGRvd24NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZlciBzdGFydHMgd2l0aCBhIE51bGwtdGVybWluYXRl ZCBzdHJpbmcsDQo+IG9wdGlvbmFsbHkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZvbGxvd2VkIGJ5IGFkZGl0aW9uYWwgYmluYXJ5IGRhdGEuIFRoZSBzdHJpbmcgaXMgYSBkZXNj cmlwdGlvbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgY2FsbGVy IG1heSB1c2UgdG8gZnVydGhlciBpbmRpY2F0ZSB0aGUgcmVhc29uIGZvciB0aGUNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSByZXNldC4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdFJlc2V0U3lzdGVtMiAoDQo+ID4g KyAgSU4gRUZJX1JFU0VUX1RZUEUgIFJlc2V0VHlwZSwNCj4gPiArICBJTiBFRklfU1RBVFVTICAg ICAgUmVzZXRTdGF0dXMsDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgIERhdGFTaXplLA0KPiA+ ICsgIElOIFZPSUQgICAgICAgICAgICAqUmVzZXREYXRhIE9QVElPTkFMDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFRoaXMgc2VydmljZSBlbmFibGVzIFBFSU1zIHRvIGFzY2Vy dGFpbiB0aGUgcHJlc2VudCB2YWx1ZSBvZiB0aGUgYm9vdA0KPiBtb2RlLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gUGVpU2VydmljZXMgICAgICAgICAgICBBbiBpbmRpcmVjdCBwb2ludGVyIHRvIHRo ZSBFRklfUEVJX1NFUlZJQ0VTDQo+IHRhYmxlIHB1Ymxpc2hlZCBieSB0aGUgUEVJIEZvdW5kYXRp b24uDQo+ID4gKyAgQHBhcmFtIEJvb3RNb2RlICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIGNv bnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBib290DQo+IG1vZGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBib290IG1vZGUgd2FzIHJldHVybmVkIHN1Y2Nl c3NmdWxseS4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBCb290TW9kZSBp cyBOVUxMLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ ID4gK1VuaXRUZXN0R2V0Qm9vdE1vZGUgKA0KPiA+ICsgIElOICBDT05TVCBFRklfUEVJX1NFUlZJ Q0VTICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElOICBPVVQgICBFRklfQk9PVF9NT0RFICAgICAq Qm9vdE1vZGUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBzZXJ2aWNl IGVuYWJsZXMgUEVJTXMgdG8gdXBkYXRlIHRoZSBib290IG1vZGUgdmFyaWFibGUuDQo+ID4gKw0K PiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2VydmljZXMgICAgICBBbiBpbmRpcmVjdCBwb2ludGVy IHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VTIHRhYmxlDQo+IHB1Ymxpc2hlZCBieSB0aGUgUEVJIEZv dW5kYXRpb24uDQo+ID4gKyAgQHBhcmFtIEJvb3RNb2RlICAgICAgICAgVGhlIHZhbHVlIG9mIHRo ZSBib290IG1vZGUgdG8gc2V0Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEVGSV9TVUNDRVNTICAg ICBUaGUgdmFsdWUgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RTZXRCb290TW9kZSAoDQo+ ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJ TiBFRklfQk9PVF9NT0RFICAgICAgICAgICBCb290TW9kZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBTZWFyY2ggdGhlIGZpcm13YXJlIHZvbHVtZXMgYnkgaW5kZXgNCj4gPiAr DQo+ID4gKyAgQHBhcmFtIFBlaVNlcnZpY2VzICAgICBBbiBpbmRpcmVjdCBwb2ludGVyIHRvIHRo ZSBFRklfUEVJX1NFUlZJQ0VTIHRhYmxlDQo+IHB1Ymxpc2hlZCBieSB0aGUgUEVJIEZvdW5kYXRp b24NCj4gPiArICBAcGFyYW0gSW5zdGFuY2UgICAgICAgIFRoaXMgaW5zdGFuY2Ugb2YgdGhlIGZp cm13YXJlIHZvbHVtZSB0byBmaW5kLiBUaGUNCj4gdmFsdWUgMCBpcyB0aGUgQm9vdCBGaXJtd2Fy ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgVm9sdW1lIChCRlYpLg0KPiA+ICsgIEBw YXJhbSBWb2x1bWVIYW5kbGUgICAgT24gZXhpdCwgcG9pbnRzIHRvIHRoZSBuZXh0IHZvbHVtZSBo YW5kbGUgb3INCj4gTlVMTCBpZiBpdCBkb2VzIG5vdCBleGlzdC4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFZvbHVtZUhhbmRsZSBpcyBOVUxMDQo+ID4gKyAg QHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgIFRoZSB2b2x1bWUgd2FzIG5vdCBmb3VuZC4N Cj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIHZvbHVtZSB3YXMgZm91 bmQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiAr VW5pdFRlc3RGZnNGaW5kTmV4dFZvbHVtZSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJW SUNFUyAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICBJ bnN0YW5jZSwNCj4gPiArICBJTiBPVVQgRUZJX1BFSV9GVl9IQU5ETEUgICAqVm9sdW1lSGFuZGxl DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlYXJjaGVzIGZvciB0aGUgbmV4 dCBtYXRjaGluZyBmaWxlIGluIHRoZSBmaXJtd2FyZSB2b2x1bWUuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbSBQZWlTZXJ2aWNlcyAgICAgQW4gaW5kaXJlY3QgcG9pbnRlciB0byB0aGUgRUZJX1BFSV9T RVJWSUNFUyB0YWJsZQ0KPiBwdWJsaXNoZWQgYnkgdGhlIFBFSSBGb3VuZGF0aW9uLg0KPiA+ICsg IEBwYXJhbSBTZWFyY2hUeXBlICAgICAgRmlsdGVyIHRvIGZpbmQgb25seSBmaWxlcyBvZiB0aGlz IHR5cGUuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlIEVGSV9GVl9GSUxFVFlQ RV9BTEwgY2F1c2VzIG5vIGZpbHRlcmluZyB0byBiZSBkb25lLg0KPiA+ICsgIEBwYXJhbSBGdkhh bmRsZSAgICAgICAgSGFuZGxlIG9mIGZpcm13YXJlIHZvbHVtZSBpbiB3aGljaCB0byBzZWFyY2gu DQo+ID4gKyAgQHBhcmFtIEZpbGVIYW5kbGUgICAgICBPbiBlbnRyeSwgcG9pbnRzIHRvIHRoZSBj dXJyZW50IGhhbmRsZSBmcm9tIHdoaWNoDQo+IHRvIGJlZ2luIHNlYXJjaGluZyBvciBOVUxMIHRv IHN0YXJ0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgYmVnaW5uaW5nIG9m IHRoZSBmaXJtd2FyZSB2b2x1bWUuIE9uIGV4aXQsIHBvaW50cyB0aGUNCj4gZmlsZSBoYW5kbGUg b2YgdGhlIG5leHQgZmlsZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHZv bHVtZSBvciBOVUxMIGlmIHRoZXJlIGFyZSBubyBtb3JlIGZpbGVzLg0KPiA+ICsNCj4gPiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgIFRoZSBmaWxlIHdhcyBub3QgZm91bmQuDQo+ID4gKyAgQHJl dHZhbCBFRklfTk9UX0ZPVU5EICBUaGUgaGVhZGVyIGNoZWNrc3VtIHdhcyBub3QgemVyby4NCj4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgIFRoZSBmaWxlIHdhcyBmb3VuZC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEZmc0Zp bmROZXh0RmlsZSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgICoqUGVpU2Vy dmljZXMsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgIFNlYXJjaFR5cGUsDQo+ ID4gKyAgSU4gRUZJX1BFSV9GVl9IQU5ETEUgICAgICAgIEZ2SGFuZGxlLA0KPiA+ICsgIElOIE9V VCBFRklfUEVJX0ZJTEVfSEFORExFICAqRmlsZUhhbmRsZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBTZWFyY2hlcyBmb3IgdGhlIG5leHQgbWF0Y2hpbmcgc2VjdGlvbiB3aXRo aW4gdGhlIHNwZWNpZmllZCBmaWxlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2VydmljZXMg ICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMgdGFibGUNCj4g cHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbg0KPiA+ICsgIEBwYXJhbSBTZWN0aW9uVHlw ZSAgICAgRmlsdGVyIHRvIGZpbmQgb25seSBzZWN0aW9ucyBvZiB0aGlzIHR5cGUuDQo+ID4gKyAg QHBhcmFtIEZpbGVIYW5kbGUgICAgICBQb2ludGVyIHRvIHRoZSBjdXJyZW50IGZpbGUgdG8gc2Vh cmNoLg0KPiA+ICsgIEBwYXJhbSBTZWN0aW9uRGF0YSAgICAgQSBwb2ludGVyIHRvIHRoZSBkaXNj b3ZlcmVkIHNlY3Rpb24sIGlmIHN1Y2Nlc3NmdWwuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMIGlmIHNlY3Rpb24gbm90IGZvdW5kDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgVGhlIHNlY3Rpb24gd2FzIG5vdCBmb3VuZC4NCj4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgIFRoZSBzZWN0aW9uIHdhcyBmb3VuZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEZmc0ZpbmRTZWN0aW9uRGF0 YSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgICoqUGVpU2VydmljZXMsDQo+ ID4gKyAgSU4gICAgIEVGSV9TRUNUSU9OX1RZUEUgICAgIFNlY3Rpb25UeXBlLA0KPiA+ICsgIElO ICAgICBFRklfUEVJX0ZJTEVfSEFORExFICBGaWxlSGFuZGxlLA0KPiA+ICsgIE9VVCBWT0lEICAg ICAgICAgICAgICAgICAgICAqKlNlY3Rpb25EYXRhDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyB0aGUgZm91bmQgbWVtb3J5 IGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgUEVJDQo+IEZvdW5kYXRpb24uDQo+ID4gKw0KPiA+ICsg IFRoZSB1c2FnZSBtb2RlbCBpcyB0aGF0IHRoZSBQRUlNIHRoYXQgZGlzY292ZXJzIHRoZSBwZXJt YW5lbnQgbWVtb3J5DQo+IHNoYWxsIGludm9rZSB0aGlzIHNlcnZpY2UuDQo+ID4gKyAgVGhpcyBy b3V0aW5lIHdpbGwgaG9sZCBkaXNjb3ZlcmllZCBtZW1vcnkgaW5mb3JtYXRpb24gaW50byBQZWlD b3JlJ3MNCj4gcHJpdmF0ZSBkYXRhLA0KPiA+ICsgIGFuZCBzZXQgU3dpdGNoU3RhY2tTaWduYWwg ZmxhZy4gQWZ0ZXIgUEVJTSB3aG8gZGlzY292ZXJ5IG1lbW9yeSBpcw0KPiBkaXNwYXRjaGVkLA0K PiA+ICsgIFBlaURpc3BhdGNoZXIgd2lsbCBtaWdyYXRlIHRlbXBvcmFyeSBtZW1vcnkgdG8gcGVy bWFuZW50IG1lbW9yeS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFBlaVNlcnZpY2VzICAgICAgICBB biBpbmRpcmVjdCBwb2ludGVyIHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VTDQo+IHRhYmxlIHB1Ymxp c2hlZCBieSB0aGUgUEVJIEZvdW5kYXRpb24uDQo+ID4gKyAgQHBhcmFtIE1lbW9yeUJlZ2luICAg ICAgICBTdGFydCBvZiBtZW1vcnkgYWRkcmVzcy4NCj4gPiArICBAcGFyYW0gTWVtb3J5TGVuZ3Ro ICAgICAgIExlbmd0aCBvZiBtZW1vcnkuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gRUZJX1NVQ0NF U1MgQWx3YXlzIHN1Y2Nlc3MuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtFRklBUEkNCj4gPiArVW5pdFRlc3RJbnN0YWxsUGVpTWVtb3J5ICgNCj4gPiArICBJTiBDT05T VCBFRklfUEVJX1NFUlZJQ0VTICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElOIEVGSV9QSFlTSUNB TF9BRERSRVNTICAgIE1lbW9yeUJlZ2luLA0KPiA+ICsgIElOIFVJTlQ2NCAgICAgICAgICAgICAg ICAgIE1lbW9yeUxlbmd0aA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGUg cHVycG9zZSBvZiB0aGUgc2VydmljZSBpcyB0byBwdWJsaXNoIGFuIGludGVyZmFjZSB0aGF0IGFs bG93cw0KPiA+ICsgIFBFSU1zIHRvIGFsbG9jYXRlIG1lbW9yeSByYW5nZXMgdGhhdCBhcmUgbWFu YWdlZCBieSB0aGUgUEVJDQo+IEZvdW5kYXRpb24uDQo+ID4gKw0KPiA+ICsgIFByaW9yIHRvIElu c3RhbGxQZWlNZW1vcnkoKSBiZWluZyBjYWxsZWQsIFBFSSB3aWxsIGFsbG9jYXRlIHBhZ2VzIGZy b20gdGhlDQo+IGhlYXAuDQo+ID4gKyAgQWZ0ZXIgSW5zdGFsbFBlaU1lbW9yeSgpIGlzIGNhbGxl ZCwgUEVJIHdpbGwgYWxsb2NhdGUgcGFnZXMgd2l0aGluIHRoZQ0KPiByZWdpb24NCj4gPiArICBv ZiBtZW1vcnkgcHJvdmlkZWQgYnkgSW5zdGFsbFBlaU1lbW9yeSgpIHNlcnZpY2UgaW4gYSBiZXN0 LWVmZm9ydA0KPiBmYXNoaW9uLg0KPiA+ICsgIExvY2F0aW9uLXNwZWNpZmljIGFsbG9jYXRpb25z IGFyZSBub3QgbWFuYWdlZCBieSB0aGUgUEVJIGZvdW5kYXRpb24gY29kZS4NCj4gPiArDQo+ID4g KyAgQHBhcmFtICBQZWlTZXJ2aWNlcyAgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVG SV9QRUlfU0VSVklDRVMNCj4gdGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbi4N Cj4gPiArICBAcGFyYW0gIE1lbW9yeVR5cGUgICAgICAgVGhlIHR5cGUgb2YgbWVtb3J5IHRvIGFs bG9jYXRlLg0KPiA+ICsgIEBwYXJhbSAgUGFnZXMgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGNv bnRpZ3VvdXMgNCBLQiBwYWdlcyB0byBhbGxvY2F0ZS4NCj4gPiArICBAcGFyYW0gIE1lbW9yeSAg ICAgICAgICAgUG9pbnRlciB0byBhIHBoeXNpY2FsIGFkZHJlc3MuIE9uIG91dHB1dCwgdGhlDQo+ IGFkZHJlc3MgaXMgc2V0IHRvIHRoZSBiYXNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9mIHRoZSBwYWdlIHJhbmdlIHRoYXQgd2FzIGFsbG9jYXRlZC4NCj4gPiArDQo+ID4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIG1lbW9yeSByYW5nZSB3YXMgc3VjY2Vz c2Z1bGx5IGFsbG9jYXRlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBU aGUgcGFnZXMgY291bGQgbm90IGJlIGFsbG9jYXRlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBUeXBlIGlzIG5vdCBlcXVhbCB0byBFZmlMb2FkZXJDb2RlLA0KPiBFZmlM b2FkZXJEYXRhLCBFZmlSdW50aW1lU2VydmljZXNDb2RlLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVmaVJ1bnRpbWVTZXJ2aWNlc0RhdGEsIEVmaUJvb3RTZXJ2aWNlc0Nv ZGUsDQo+IEVmaUJvb3RTZXJ2aWNlc0RhdGEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRWZpQUNQSVJlY2xhaW1NZW1vcnksIEVmaVJlc2VydmVkTWVtb3J5VHlwZSwgb3IN Cj4gRWZpQUNQSU1lbW9yeU5WUy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEFsbG9jYXRlUGFnZXMgKA0KPiA+ICsgIElOIENPTlNU IEVGSV9QRUlfU0VSVklDRVMgICAgICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElOICAgICAgIEVG SV9NRU1PUllfVFlQRSAgICAgICBNZW1vcnlUeXBlLA0KPiA+ICsgIElOICAgICAgIFVJTlROICAg ICAgICAgICAgICAgICBQYWdlcywNCj4gPiArICBPVVQgICAgICBFRklfUEhZU0lDQUxfQUREUkVT UyAgKk1lbW9yeQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArDQo+ID4gKyAgUG9v bCBhbGxvY2F0aW9uIHNlcnZpY2UuIEJlZm9yZSBwZXJtYW5lbnQgbWVtb3J5IGlzIGRpc2NvdmVy ZWQsIHRoZQ0KPiBwb29sIHdpbGwNCj4gPiArICBiZSBhbGxvY2F0ZWQgaW4gdGhlIGhlYXAgaW4g dGVtcG9yYXJ5IG1lbW9yeS4gR2VuZXJhbGx5LCB0aGUgc2l6ZSBvZiB0aGUNCj4gaGVhcCBpbiB0 ZW1wb3JhcnkNCj4gPiArICBtZW1vcnkgZG9lcyBub3QgZXhjZWVkIDY0Sywgc28gdGhlIGJpZ2dl c3QgcG9vbCBzaXplIGNvdWxkIGJlIGFsbG9jYXRlZA0KPiBpcw0KPiA+ICsgIDY0Sy4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtIFBlaVNlcnZpY2VzICAgICAgICAgICAgICAgQW4gaW5kaXJlY3QgcG9p bnRlciB0byB0aGUgRUZJX1BFSV9TRVJWSUNFUw0KPiB0YWJsZSBwdWJsaXNoZWQgYnkgdGhlIFBF SSBGb3VuZGF0aW9uLg0KPiA+ICsgIEBwYXJhbSBTaXplICAgICAgICAgICAgICAgICAgICAgIEFt b3VudCBvZiBtZW1vcnkgcmVxdWlyZWQNCj4gPiArICBAcGFyYW0gQnVmZmVyICAgICAgICAgICAg ICAgICAgICBBZGRyZXNzIG9mIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlcg0KPiA+ICsNCj4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgYWxsb2NhdGlvbiB3YXMgc3VjY2Vz c2Z1bA0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgIFRoZXJlIGlzIG5v dCBlbm91Z2ggaGVhcCB0byBzYXRpc2Z5DQo+IHRoZSByZXF1aXJlbWVudA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFsbG9jYXRlIHRoZSByZXF1ZXN0ZWQgc2l6 ZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtV bml0VGVzdEFsbG9jYXRlUG9vbCAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAg KipQZWlTZXJ2aWNlcywNCj4gPiArICBJTiAgICAgICBVSU5UTiAgICAgICAgICAgICBTaXplLA0K PiA+ICsgIE9VVCAgICAgIFZPSUQgICAgICAgICAgICAgICoqQnVmZmVyDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsNCj4gPiArICBDb3JlIHZlcnNpb24gb2YgdGhlIFN0YXR1cyBD b2RlIHJlcG9ydGVyDQo+ID4gKw0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2VydmljZXMgICAg IEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMgdGFibGUNCj4gcHVi bGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0gQ29kZVR5cGUgICAg ICAgIFR5cGUgb2YgU3RhdHVzIENvZGUuDQo+ID4gKyAgQHBhcmFtIFZhbHVlICAgICAgICAgICBW YWx1ZSB0byBvdXRwdXQgZm9yIFN0YXR1cyBDb2RlLg0KPiA+ICsgIEBwYXJhbSBJbnN0YW5jZSAg ICAgICAgSW5zdGFuY2UgTnVtYmVyIG9mIHRoaXMgc3RhdHVzIGNvZGUuDQo+ID4gKyAgQHBhcmFt IENhbGxlcklkICAgICAgICBJRCBvZiB0aGUgY2FsbGVyIG9mIHRoaXMgc3RhdHVzIGNvZGUuDQo+ ID4gKyAgQHBhcmFtIERhdGEgICAgICAgICAgICBPcHRpb25hbCBkYXRhIGFzc29jaWF0ZWQgd2l0 aCB0aGlzIHN0YXR1cyBjb2RlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgIGlmIHN0YXR1cyBjb2RlIGlzIHN1Y2Nlc3NmdWxseSByZXBvcnRlZA0KPiA+ICsg IEByZXR2YWwgRUZJX05PVF9BVkFJTEFCTEVfWUVUICAgaWYgU3RhdHVzQ29kZVBwaSBoYXMgbm90 IGJlZW4NCj4gaW5zdGFsbGVkDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtFRklBUEkNCj4gPiArVW5pdFRlc3RSZXBvcnRTdGF0dXNDb2RlICgNCj4gPiArICBJTiBDT05T VCBFRklfUEVJX1NFUlZJQ0VTICAgICAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJTiBFRklfU1RB VFVTX0NPREVfVFlQRSAgICAgICAgQ29kZVR5cGUsDQo+ID4gKyAgSU4gRUZJX1NUQVRVU19DT0RF X1ZBTFVFICAgICAgIFZhbHVlLA0KPiA+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICBJbnN0YW5jZSwNCj4gPiArICBJTiBDT05TVCBFRklfR1VJRCAgICAgICAgICAgICAgKkNhbGxl cklkLA0KPiA+ICsgIElOIENPTlNUIEVGSV9TVEFUVVNfQ09ERV9EQVRBICAqRGF0YSBPUFRJT05B TA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArDQo+ID4gK0NvcmUgdmVyc2lvbiBv ZiB0aGUgUmVzZXQgU3lzdGVtDQo+ID4gKw0KPiA+ICsNCj4gPiArQHBhcmFtIFBlaVNlcnZpY2Vz ICAgICAgICAgICAgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklD RVMNCj4gdGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbi4NCj4gPiArDQo+ID4g K0ByZXR2YWwgRUZJX05PVF9BVkFJTEFCTEVfWUVUICAgICBQUEkgbm90IGF2YWlsYWJsZSB5ZXQu DQo+ID4gK0ByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgICBEaWQgbm90IHJlc2V0IHN5 c3RlbS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwg cmVzZXRzIHRoZSBzeXN0ZW0uDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtFRklBUEkNCj4gPiArVW5pdFRlc3RSZXNldFN5c3RlbSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJ X1BFSV9TRVJWSUNFUyAgKipQZWlTZXJ2aWNlcw0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBGaW5kIGEgZmlsZSB3aXRoaW4gYSB2b2x1bWUgYnkgaXRzIG5hbWUuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbSBGaWxlTmFtZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBuYW1lIG9mIHRo ZSBmaWxlIHRvIGZpbmQgd2l0aGluIHRoZQ0KPiBmaXJtd2FyZSB2b2x1bWUuDQo+ID4gKyAgQHBh cmFtIFZvbHVtZUhhbmRsZSAgICBUaGUgZmlybXdhcmUgdm9sdW1lIHRvIHNlYXJjaA0KPiA+ICsg IEBwYXJhbSBGaWxlSGFuZGxlICAgICAgVXBvbiBleGl0LCBwb2ludHMgdG8gdGhlIGZvdW5kIGZp bGUncyBoYW5kbGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgaXQg Y291bGQgbm90IGJlIGZvdW5kLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgRmlsZSB3YXMgZm91bmQuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAg ICAgICAgIEZpbGUgd2FzIG5vdCBmb3VuZC4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgVm9sdW1lSGFuZGxlIG9yIEZpbGVIYW5kbGUgb3INCj4gRmlsZU5hbWUgd2FzIE5V TEwuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiAr VW5pdFRlc3RGZnNGaW5kRmlsZUJ5TmFtZSAoDQo+ID4gKyAgSU4gIENPTlNUIEVGSV9HVUlEICAg ICAgICpGaWxlTmFtZSwNCj4gPiArICBJTiAgRUZJX1BFSV9GVl9IQU5ETEUgICAgVm9sdW1lSGFu ZGxlLA0KPiA+ICsgIE9VVCBFRklfUEVJX0ZJTEVfSEFORExFICAqRmlsZUhhbmRsZQ0KPiA+ICsg ICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEg c3BlY2lmaWMgZmlsZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIEZpbGVIYW5kbGUgICAgICAgSGFu ZGxlIG9mIHRoZSBmaWxlLg0KPiA+ICsgIEBwYXJhbSBGaWxlSW5mbyAgICAgICAgIFVwb24gZXhp dCwgcG9pbnRzIHRvIHRoZSBmaWxlJ3MgaW5mb3JtYXRpb24uDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIElmIEZpbGVJbmZvIGlzIE5VTEwuDQo+ID4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgSWYgRmlsZUhhbmRsZSBkb2VzIG5vdCByZXByZXNl bnQgYQ0KPiB2YWxpZCBmaWxlLg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IEZpbGUgaW5mb3JtYXRpb24gcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RGZnNHZXRGaWxlSW5mbyAoDQo+ID4gKyAg SU4gRUZJX1BFSV9GSUxFX0hBTkRMRSAgRmlsZUhhbmRsZSwNCj4gPiArICBPVVQgRUZJX0ZWX0ZJ TEVfSU5GTyAgICAqRmlsZUluZm8NCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg UmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIHZvbHVtZS4NCj4gPiArDQo+ ID4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMg ZmlybXdhcmUNCj4gPiArICB2b2x1bWUsIGluY2x1ZGluZyBpdHMgbmFtZSwgdHlwZSwgYXR0cmli dXRlcywgc3RhcnRpbmcgYWRkcmVzcw0KPiA+ICsgIGFuZCBzaXplLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gVm9sdW1lSGFuZGxlICAgSGFuZGxlIG9mIHRoZSB2b2x1bWUuDQo+ID4gKyAgQHBhcmFt IFZvbHVtZUluZm8gICAgIFVwb24gZXhpdCwgcG9pbnRzIHRvIHRoZSB2b2x1bWUncyBpbmZvcm1h dGlvbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBWb2x1 bWUgaW5mb3JtYXRpb24gcmV0dXJuZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgICBJZiBWb2x1bWVIYW5kbGUgZG9lcyBub3QgcmVwcmVzZW50DQo+IGEgdmFsaWQgdm9s dW1lLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgSWYgVm9sdW1lSGFu ZGxlIGlzIE5VTEwuDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBJbmZv cm1hdGlvbiBzdWNjZXNzZnVsbHkgcmV0dXJuZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgICBUaGUgdm9sdW1lIGRlc2lnbmF0ZWQgYnkgdGhlDQo+IFZvbHVtZUhhbmRs ZSBpcyBub3QgYXZhaWxhYmxlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0RmZzR2V0Vm9sdW1lSW5mbyAoDQo+ID4gKyAgSU4gRUZJ X1BFSV9GVl9IQU5ETEUgIFZvbHVtZUhhbmRsZSwNCj4gPiArICBPVVQgRUZJX0ZWX0lORk8gICAg ICAgKlZvbHVtZUluZm8NCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gK1RoaXMgcm91 dGluZSBlbmFibGVzIGEgUEVJTSB0byByZWdpc3RlciBpdHNlbGYgZm9yIHNoYWRvdyB3aGVuIHRo ZSBQRUkNCj4gRm91bmRhdGlvbg0KPiA+ICtkaXNjb3ZlcnMgcGVybWFuZW50IG1lbW9yeS4NCj4g PiArDQo+ID4gK0BwYXJhbSBGaWxlSGFuZGxlICAgICAgICAgICAgIEZpbGUgaGFuZGxlIG9mIGEg UEVJTS4NCj4gPiArDQo+ID4gK0ByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBmaWxl IGhhbmRsZSBkb2Vzbid0IHBvaW50IHRvIFBFSU0gaXRzZWxmLg0KPiA+ICtAcmV0dmFsIEVGSV9B TFJFQURZX1NUQVJURUQgICBJbmRpY2F0ZSB0aGF0IHRoZSBQRUlNIGhhcyBiZWVuDQo+IHJlZ2lz dGVyZWQgaXRzZWxmLg0KPiA+ICtAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTdWNjZXNz ZnVsbHkgdG8gcmVnaXN0ZXIgaXRzZWxmLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0UmVnaXN0ZXJGb3JTaGFkb3cgKA0KPiA+ICsg IElOIEVGSV9QRUlfRklMRV9IQU5ETEUgIEZpbGVIYW5kbGUNCj4gPiArICApOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gK1NlYXJjaGVzIGZvciB0aGUgbmV4dCBtYXRjaGluZyBzZWN0aW9uIHdpdGhp biB0aGUgc3BlY2lmaWVkIGZpbGUuDQo+ID4gKw0KPiA+ICtAcGFyYW0gIFBlaVNlcnZpY2VzICAg ICAgICAgICBBbiBpbmRpcmVjdCBwb2ludGVyIHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VTDQo+IHRh YmxlIHB1Ymxpc2hlZCBieSB0aGUgUEVJIEZvdW5kYXRpb24uDQo+ID4gK0BwYXJhbSAgU2VjdGlv blR5cGUgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgc2VjdGlvbiB0eXBlIHRvIGZpbmQuDQo+ ID4gK0BwYXJhbSAgU2VjdGlvbkluc3RhbmNlICAgICAgIFNlY3Rpb24gaW5zdGFuY2UgdG8gZmlu ZC4NCj4gPiArQHBhcmFtICBGaWxlSGFuZGxlICAgICAgICAgICAgSGFuZGxlIG9mIHRoZSBmaXJt d2FyZSBmaWxlIHRvIHNlYXJjaC4NCj4gPiArQHBhcmFtICBTZWN0aW9uRGF0YSAgICAgICAgICAg QSBwb2ludGVyIHRvIHRoZSBkaXNjb3ZlcmVkIHNlY3Rpb24sIGlmDQo+IHN1Y2Nlc3NmdWwuDQo+ ID4gK0BwYXJhbSAgQXV0aGVudGljYXRpb25TdGF0dXMgIEEgcG9pbnRlciB0byB0aGUgYXV0aGVu dGljYXRpb24gc3RhdHVzIGZvcg0KPiB0aGlzIHNlY3Rpb24uDQo+ID4gKw0KPiA+ICtAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgVGhlIHNlY3Rpb24gd2FzIGZvdW5kLg0KPiA+ICtAcmV0dmFsIEVG SV9OT1RfRk9VTkQgICAgVGhlIHNlY3Rpb24gd2FzIG5vdCBmb3VuZC4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEZmc0ZpbmRTZWN0 aW9uRGF0YTMgKA0KPiA+ICsgIElOIENPTlNUIEVGSV9QRUlfU0VSVklDRVMgICAqKlBlaVNlcnZp Y2VzLA0KPiA+ICsgIElOICAgICBFRklfU0VDVElPTl9UWVBFICAgICBTZWN0aW9uVHlwZSwNCj4g PiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgU2VjdGlvbkluc3RhbmNlLA0KPiA+ICsg IElOICAgICBFRklfUEVJX0ZJTEVfSEFORExFICBGaWxlSGFuZGxlLA0KPiA+ICsgIE9VVCBWT0lE ICAgICAgICAgICAgICAgICAgICAqKlNlY3Rpb25EYXRhLA0KPiA+ICsgIE9VVCBVSU5UMzIgICAg ICAgICAgICAgICAgICAqQXV0aGVudGljYXRpb25TdGF0dXMNCj4gPiArICApOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gK1JldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBmaWxlLg0K PiA+ICsNCj4gPiArQHBhcmFtIEZpbGVIYW5kbGUgICAgICAgSGFuZGxlIG9mIHRoZSBmaWxlLg0K PiA+ICtAcGFyYW0gRmlsZUluZm8gICAgICAgICBVcG9uIGV4aXQsIHBvaW50cyB0byB0aGUgZmls ZSdzIGluZm9ybWF0aW9uLg0KPiA+ICsNCj4gPiArQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgSWYgRmlsZUluZm8gaXMgTlVMTC4NCj4gPiArQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgSWYgRmlsZUhhbmRsZSBkb2VzIG5vdCByZXByZXNlbnQgYQ0KPiB2YWxpZCBmaWxlLg0KPiA+ ICtAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBGaWxlIGluZm9ybWF0aW9uIHJldHVybmVk Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1Vu aXRUZXN0RmZzR2V0RmlsZUluZm8yICgNCj4gPiArICBJTiBFRklfUEVJX0ZJTEVfSEFORExFICBG aWxlSGFuZGxlLA0KPiA+ICsgIE9VVCBFRklfRlZfRklMRV9JTkZPMiAgICpGaWxlSW5mbw0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArRnJlZXMgbWVtb3J5IHBhZ2VzLg0KPiA+ICsN Cj4gPiArQHBhcmFtW2luXSBQZWlTZXJ2aWNlcyAgICAgICAgQW4gaW5kaXJlY3QgcG9pbnRlciB0 byB0aGUgRUZJX1BFSV9TRVJWSUNFUw0KPiB0YWJsZSBwdWJsaXNoZWQgYnkgdGhlIFBFSSBGb3Vu ZGF0aW9uLg0KPiA+ICtAcGFyYW1baW5dIE1lbW9yeSAgICAgICAgICAgICBUaGUgYmFzZSBwaHlz aWNhbCBhZGRyZXNzIG9mIHRoZSBwYWdlcyB0byBiZQ0KPiBmcmVlZC4NCj4gPiArQHBhcmFtW2lu XSBQYWdlcyAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBjb250aWd1b3VzIDQgS0IgcGFnZXMg dG8gZnJlZS4NCj4gPiArDQo+ID4gK0ByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBy ZXF1ZXN0ZWQgcGFnZXMgd2VyZSBmcmVlZC4NCj4gPiArQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgTWVtb3J5IGlzIG5vdCBhIHBhZ2UtYWxpZ25lZCBhZGRyZXNzDQo+IG9yIFBhZ2VzIGlz IGludmFsaWQuDQo+ID4gK0ByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSByZXF1ZXN0 ZWQgbWVtb3J5IHBhZ2VzIHdlcmUgbm90DQo+IGFsbG9jYXRlZCB3aXRoDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlUGFnZXMoKS4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEZyZWVQYWdlcyAoDQo+ ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJ TiBFRklfUEhZU0lDQUxfQUREUkVTUyAgICBNZW1vcnksDQo+ID4gKyAgSU4gVUlOVE4gICAgICAg ICAgICAgICAgICAgUGFnZXMNCj4gPiArICApOw0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlm ZiAtLWdpdA0KPiBhL1VuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlTZXJ2 aWNlc1RhYmxlUG9pbnRlckxpYi9Vbml0VA0KPiBlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxp Yi5pbmYNCj4gYi9Vbml0VGVzdEZyYW1ld29ya1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2Vydmlj ZXNUYWJsZVBvaW50ZXJMaWIvVW5pdFQNCj4gZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIu aW5mDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi41OWQ4 NmM5ZGI4DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL1VuaXRUZXN0RnJhbWV3b3Jr UGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi9Vbml0VA0KPiBl c3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi5pbmYNCj4gPiBAQCAtMCwwICsxLDM3IEBADQo+ ID4gKyMjIEBmaWxlDQo+ID4gKyMgUGVpIFNlcnZpY2VzIFRhYmxlIFBvaW50ZXIgTGliIGZvciB1 bml0IHRlc3RzIGltcGxlbWVudGF0aW9uLg0KPiA+ICsjDQo+ID4gKyMgQ29weXJpZ2h0IChjKSAy MDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArIw0KPiA+ ICsjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAg ICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAg ICAgICA9IFVuaXRUZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWINCj4gPiArICBNT0RVTEVf VU5JX0ZJTEUgICAgICAgICAgICAgICAgPSBVbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVy TGliLnVuaQ0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDU1RjIzQ0Qy LTlCQjEtNDFFRS1BQjEwLTU1MEI2MzgyMTBFMQ0KPiA+ICsgIE1PRFVMRV9UWVBFICAgICAgICAg ICAgICAgICAgICA9IEJBU0UNCj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAg PSAxLjANCj4gPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBQZWlTZXJ2aWNl c1RhYmxlUG9pbnRlckxpYg0KPiA+ICsNCj4gPiArICBDT05TVFJVQ1RPUiAgICAgICAgICAgICAg ICAgICAgPQ0KPiBVbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliQ29uc3RydWN0b3IN Cj4gPiArIw0KPiA+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0 IEVCQw0KPiA+ICsjDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4gPiArICBVbml0VGVzdFBlaVNl cnZpY2VzVGFibGVQb2ludGVyTGliLmgNCj4gPiArICBVbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQ b2ludGVyTGliLmMNCj4gPiArICBVbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliTWlz Yy5jDQo+ID4gKyAgVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYlBwaS5jDQo+ID4g KyAgVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYkhvYi5jDQo+ID4gKw0KPiA+ICtb UGFja2FnZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiArDQo+ID4gK1tMaWJyYXJ5 Q2xhc3Nlc10NCj4gPiArICBCYXNlTGliDQo+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ICsgIERl YnVnTGliDQo+ID4gKyAgVW5pdFRlc3RMaWINCj4gPiBkaWZmIC0tZ2l0DQo+IGEvVW5pdFRlc3RG cmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliL1Vu aXRUDQo+IGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliLnVuaQ0KPiBiL1VuaXRUZXN0RnJh bWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi9Vbml0 VA0KPiBlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi51bmkNCj4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmNhMjExODUzM2ENCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrDQo+IGIvVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVzdFBl aVNlcnZpY2VzVGFibGVQb2ludGVyTGliL1VuaXRUDQo+IGVzdFBlaVNlcnZpY2VzVGFibGVQb2lu dGVyTGliLnVuaQ0KPiA+IEBAIC0wLDAgKzEsMTIgQEANCj4gPiArLy8gLyoqIEBmaWxlDQo+ID4g Ky8vICBQZWkgU2VydmljZXMgVGFibGUgUG9pbnRlciBMaWIgZm9yIHVuaXQgdGVzdHMgaW1wbGVt ZW50YXRpb24uDQo+ID4gKy8vDQo+ID4gKy8vICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArLy8NCj4gPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArLy8NCj4gPiAr Ly8gKiovDQo+ID4gKw0KPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICJQZWkgU2VydmljZXMNCj4gVGFibGUgUG9pbnRlciBMaWIgZm9y IHVuaXQgdGVzdHMuIg0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NSSVBUSU9O ICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiUGVpIFNlcnZpY2VzDQo+IFRhYmxlIFBvaW50ZXIg TGliIGZvciB1bml0IHRlc3RzLiINCj4gPiBkaWZmIC0tZ2l0DQo+IGEvVW5pdFRlc3RGcmFtZXdv cmtQa2cvTGlicmFyeS9Vbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliL1VuaXRUDQo+ IGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliSG9iLmMNCj4gYi9Vbml0VGVzdEZyYW1ld29y a1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIvVW5pdFQNCj4g ZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWJIb2IuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMmQ0ZmZlOGM1OQ0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysNCj4gYi9Vbml0VGVzdEZyYW1ld29ya1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2Vy dmljZXNUYWJsZVBvaW50ZXJMaWIvVW5pdFQNCj4gZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJM aWJIb2IuYw0KPiA+IEBAIC0wLDAgKzEsMTYyIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFRo aXMgZmlsZSBpbXBsZW1lbnRzIHNvbWUgUEVJIHNlcnZpY2VzIGFib3V0IEhvYi4NCj4gPiArDQo+ ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlVuaXRUZXN0 UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIuaCINCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsNCj4g PiArICBHZXRzIHRoZSBwb2ludGVyIHRvIHRoZSBIT0IgTGlzdC4NCj4gPiArDQo+ID4gKyAgQHBh cmFtIFBlaVNlcnZpY2VzICAgICAgICAgICAgICAgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8g dGhlDQo+IEVGSV9QRUlfU0VSVklDRVMgdGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRh dGlvbi4NCj4gPiArICBAcGFyYW0gSG9iTGlzdCAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgSE9CIExpc3QuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgICAgICAgICBHZXQgdGhlIHBvaW50ZXIgb2YgSE9CIExpc3QNCj4gPiArICBAcmV0dmFs IEVGSV9OT1RfQVZBSUxBQkxFX1lFVCAgICAgICAgdGhlIEhPQiBMaXN0IGlzIG5vdCB5ZXQgcHVi bGlzaGVkDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgICAgIEhvYkxp c3QgaXMgTlVMTCAoaW4gZGVidWcgbW9kZSkNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RB VFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEdldEhvYkxpc3QgKA0KPiA+ICsgIElOIENP TlNUIEVGSV9QRUlfU0VSVklDRVMgICoqUGVpU2VydmljZXMsDQo+ID4gKyAgSU4gT1VUIFZPSUQg ICAgICAgICAgICAgICAgKipIb2JMaXN0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgUEVJX0NP UkVfSU5TVEFOQ0UgICpQcml2YXRlRGF0YTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBP bmx5IGNoZWNrIHRoaXMgcGFyYW1ldGVyIGluIGRlYnVnIG1vZGUNCj4gPiArICAvLw0KPiA+ICsN Cj4gPiArICBERUJVR19DT0RFX0JFR0lOICgpOw0KPiA+ICsgIGlmIChIb2JMaXN0ID09IE5VTEwp IHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBERUJVR19DT0RFX0VORCAoKTsNCj4gPiArDQo+ID4gKyAgUHJpdmF0ZURhdGEg PSBQRUlfQ09SRV9JTlNUQU5DRV9GUk9NX1BTX1RISVMgKFBlaVNlcnZpY2VzKTsNCj4gPiArDQo+ ID4gKyAgKkhvYkxpc3QgPSBQcml2YXRlRGF0YS0+SG9iTGlzdC5SYXc7DQo+ID4gKw0KPiA+ICsg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQWRk IGEgbmV3IEhPQiB0byB0aGUgSE9CIExpc3QuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBQZWlTZXJ2 aWNlcyAgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMgdGFi bGUNCj4gcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0gVHlw ZSAgICAgICAgICAgICBUeXBlIG9mIHRoZSBuZXcgSE9CLg0KPiA+ICsgIEBwYXJhbSBMZW5ndGgg ICAgICAgICAgIExlbmd0aCBvZiB0aGUgbmV3IEhPQiB0byBhbGxvY2F0ZS4NCj4gPiArICBAcGFy YW0gSG9iICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBuZXcgSE9CLg0KPiA+ICsNCj4gPiAr ICBAcmV0dXJuICBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2VzcyB0byBjcmVhdGUgSE9CLg0K PiA+ICsgIEByZXR2YWwgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpZiBIb2IgaXMgTlVMTA0KPiA+ ICsgIEByZXR2YWwgIEVGSV9OT1RfQVZBSUxBQkxFX1lFVCBpZiBIb2JMaXN0IGlzIHN0aWxsIG5v dCBhdmFpbGFibGUuDQo+ID4gKyAgQHJldHZhbCAgRUZJX09VVF9PRl9SRVNPVVJDRVMgIGlmIHRo ZXJlIGlzIG5vIG1vcmUgbWVtb3J5IHRvIGdyb3cNCj4gdGhlIEhvYmxpc3QuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RDcmVhdGVI b2IgKA0KPiA+ICsgIElOIENPTlNUIEVGSV9QRUlfU0VSVklDRVMgICoqUGVpU2VydmljZXMsDQo+ ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgVHlwZSwNCj4gPiArICBJTiBVSU5UMTYg ICAgICAgICAgICAgICAgICBMZW5ndGgsDQo+ID4gKyAgSU4gT1VUIFZPSUQgICAgICAgICAgICAg ICAgKipIb2INCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9IT0JfSEFORE9GRl9JTkZPX1RBQkxFICAqSGFuZE9m ZkhvYjsNCj4gPiArICBFRklfSE9CX0dFTkVSSUNfSEVBREVSICAgICAgKkhvYkVuZDsNCj4gPiAr ICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgRnJlZU1lbW9yeTsNCj4gPiArDQo+ID4gKyAg U3RhdHVzID0gVW5pdFRlc3RHZXRIb2JMaXN0IChQZWlTZXJ2aWNlcywgSG9iKTsNCj4gPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsg IH0NCj4gPiArDQo+ID4gKyAgSGFuZE9mZkhvYiA9ICpIb2I7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gQ2hlY2sgTGVuZ3RoIHRvIGF2b2lkIGRhdGEgb3ZlcmZsb3cuDQo+ID4gKyAgLy8N Cj4gPiArICBpZiAoMHgxMDAwMCAtIExlbmd0aCA8PSAweDcpIHsNCj4gPiArICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBMZW5ndGggPSAo VUlOVDE2KSgoTGVuZ3RoICsgMHg3KSAmICh+MHg3KSk7DQo+ID4gKw0KPiA+ICsgIEZyZWVNZW1v cnkgPSBIYW5kT2ZmSG9iLT5FZmlGcmVlTWVtb3J5VG9wIC0NCj4gPiArICAgICAgICAgICAgICAg SGFuZE9mZkhvYi0+RWZpRnJlZU1lbW9yeUJvdHRvbTsNCj4gPiArDQo+ID4gKyAgaWYgKEZyZWVN ZW1vcnkgPCBMZW5ndGgpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJQZWlDcmVh dGVIb2IgZmFpbDogTGVuZ3RoIC0gMHglMDh4XG4iLA0KPiAoVUlOVE4pTGVuZ3RoKSk7DQo+ID4g KyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiICBGcmVlTWVtb3J5VG9wICAgIC0gMHglMDh4XG4i LA0KPiAoVUlOVE4pSGFuZE9mZkhvYi0+RWZpRnJlZU1lbW9yeVRvcCkpOw0KPiA+ICsgICAgREVC VUcgKChERUJVR19FUlJPUiwgIiAgRnJlZU1lbW9yeUJvdHRvbSAtIDB4JTA4eFxuIiwNCj4gKFVJ TlROKUhhbmRPZmZIb2ItPkVmaUZyZWVNZW1vcnlCb3R0b20pKTsNCj4gPiArICAgIHJldHVybiBF RklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgICpIb2IgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoVk9JRCAqKShVSU5UTilIYW5kT2Zm SG9iLQ0KPiA+RWZpRW5kT2ZIb2JMaXN0Ow0KPiA+ICsgICgoRUZJX0hPQl9HRU5FUklDX0hFQURF UiAqKSpIb2IpLT5Ib2JUeXBlICAgPSBUeXBlOw0KPiA+ICsgICgoRUZJX0hPQl9HRU5FUklDX0hF QURFUiAqKSpIb2IpLT5Ib2JMZW5ndGggPSBMZW5ndGg7DQo+ID4gKyAgKChFRklfSE9CX0dFTkVS SUNfSEVBREVSICopKkhvYiktPlJlc2VydmVkICA9IDA7DQo+ID4gKw0KPiA+ICsgIEhvYkVuZCAg ICAgICAgICAgICAgICAgICAgICA9IChFRklfSE9CX0dFTkVSSUNfSEVBREVSICopKChVSU5UTikq SG9iICsNCj4gTGVuZ3RoKTsNCj4gPiArICBIYW5kT2ZmSG9iLT5FZmlFbmRPZkhvYkxpc3QgPQ0K PiAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKUhvYkVuZDsNCj4gPiArDQo+ID4gKyAgSG9i RW5kLT5Ib2JUeXBlICAgPSBFRklfSE9CX1RZUEVfRU5EX09GX0hPQl9MSVNUOw0KPiA+ICsgIEhv YkVuZC0+SG9iTGVuZ3RoID0gKFVJTlQxNilzaXplb2YgKEVGSV9IT0JfR0VORVJJQ19IRUFERVIp Ow0KPiA+ICsgIEhvYkVuZC0+UmVzZXJ2ZWQgID0gMDsNCj4gPiArICBIb2JFbmQrKzsNCj4gPiAr ICBIYW5kT2ZmSG9iLT5FZmlGcmVlTWVtb3J5Qm90dG9tID0NCj4gKEVGSV9QSFlTSUNBTF9BRERS RVNTKShVSU5UTilIb2JFbmQ7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICsgIEJ1aWxkcyBhIEhhbmRvZmYgSW5m b3JtYXRpb24gVGFibGUgSE9CDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBCb290TW9kZSAgICAgICAg LSBDdXJyZW50IEJvb3Rtb2RlDQo+ID4gKyAgQHBhcmFtIE1lbW9yeUJlZ2luICAgICAtIFN0YXJ0 IE1lbW9yeSBBZGRyZXNzLg0KPiA+ICsgIEBwYXJhbSBNZW1vcnlMZW5ndGggICAgLSBMZW5ndGgg b2YgTWVtb3J5Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIEVGSV9TVUNDRVNTIEFsd2F5cyBzdWNj ZXNzIHRvIGluaXRpYWxpemUgSE9CLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMN Cj4gPiArVW5pdFRlc3RDb3JlQnVpbGRIb2JIYW5kb2ZmSW5mb1RhYmxlICgNCj4gPiArICBJTiBF RklfQk9PVF9NT0RFICAgICAgICAgQm9vdE1vZGUsDQo+ID4gKyAgSU4gRUZJX1BIWVNJQ0FMX0FE RFJFU1MgIE1lbW9yeUJlZ2luLA0KPiA+ICsgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICBNZW1v cnlMZW5ndGgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfSE9CX0hBTkRPRkZfSU5GT19U QUJMRSAgKkhvYjsNCj4gPiArICBFRklfSE9CX0dFTkVSSUNfSEVBREVSICAgICAgKkhvYkVuZDsN Cj4gPiArDQo+ID4gKyAgSG9iICAgICAgICAgICAgICAgICAgID0gKFZPSUQgKikoVUlOVE4pTWVt b3J5QmVnaW47DQo+ID4gKyAgSG9iRW5kICAgICAgICAgICAgICAgID0gKEVGSV9IT0JfR0VORVJJ Q19IRUFERVIgKikoSG9iKzEpOw0KPiA+ICsgIEhvYi0+SGVhZGVyLkhvYlR5cGUgICA9IEVGSV9I T0JfVFlQRV9IQU5ET0ZGOw0KPiA+ICsgIEhvYi0+SGVhZGVyLkhvYkxlbmd0aCA9IChVSU5UMTYp c2l6ZW9mDQo+IChFRklfSE9CX0hBTkRPRkZfSU5GT19UQUJMRSk7DQo+ID4gKyAgSG9iLT5IZWFk ZXIuUmVzZXJ2ZWQgID0gMDsNCj4gPiArDQo+ID4gKyAgSG9iRW5kLT5Ib2JUeXBlICAgPSBFRklf SE9CX1RZUEVfRU5EX09GX0hPQl9MSVNUOw0KPiA+ICsgIEhvYkVuZC0+SG9iTGVuZ3RoID0gKFVJ TlQxNilzaXplb2YgKEVGSV9IT0JfR0VORVJJQ19IRUFERVIpOw0KPiA+ICsgIEhvYkVuZC0+UmVz ZXJ2ZWQgID0gMDsNCj4gPiArDQo+ID4gKyAgSG9iLT5WZXJzaW9uICA9IEVGSV9IT0JfSEFORE9G Rl9UQUJMRV9WRVJTSU9OOw0KPiA+ICsgIEhvYi0+Qm9vdE1vZGUgPSBCb290TW9kZTsNCj4gPiAr DQo+ID4gKyAgSG9iLT5FZmlNZW1vcnlUb3AgICAgICAgID0gTWVtb3J5QmVnaW4gKyBNZW1vcnlM ZW5ndGg7DQo+ID4gKyAgSG9iLT5FZmlNZW1vcnlCb3R0b20gICAgID0gTWVtb3J5QmVnaW47DQo+ ID4gKyAgSG9iLT5FZmlGcmVlTWVtb3J5VG9wICAgID0gTWVtb3J5QmVnaW4gKyBNZW1vcnlMZW5n dGg7DQo+ID4gKyAgSG9iLT5FZmlGcmVlTWVtb3J5Qm90dG9tID0NCj4gKEVGSV9QSFlTSUNBTF9B RERSRVNTKShVSU5UTikoSG9iRW5kICsgMSk7DQo+ID4gKyAgSG9iLT5FZmlFbmRPZkhvYkxpc3Qg ICAgID0gKEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTilIb2JFbmQ7DQo+ID4gKw0KPiA+ICsg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9Vbml0VGVz dEZyYW1ld29ya1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIv VW5pdFQNCj4gZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWJNaXNjLmMNCj4gYi9Vbml0VGVz dEZyYW1ld29ya1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIv VW5pdFQNCj4gZXN0UGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWJNaXNjLmMNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjkwOTU1YmY0ODINCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrDQo+IGIvVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0 VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliL1VuaXRUDQo+IGVzdFBlaVNlcnZpY2VzVGFi bGVQb2ludGVyTGliTWlzYy5jDQo+ID4gQEAgLTAsMCArMSw0MzAgQEANCj4gPiArLyoqIEBmaWxl DQo+ID4gKyAgVGhpcyBmaWxlIGltcGxlbWVudHMgc29tZSBQRUkgc2VydmljZXMuDQo+ID4gKw0K PiA+ICsgIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJVbml0VGVz dFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliLmgiDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBU aGlzIHNlcnZpY2UgZW5hYmxlcyBQRUlNcyB0byBhc2NlcnRhaW4gdGhlIHByZXNlbnQgdmFsdWUg b2YgdGhlIGJvb3QNCj4gbW9kZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFBlaVNlcnZpY2VzICAg ICAgICAgICAgQW4gaW5kaXJlY3QgcG9pbnRlciB0byB0aGUgRUZJX1BFSV9TRVJWSUNFUw0KPiB0 YWJsZSBwdWJsaXNoZWQgYnkgdGhlIFBFSSBGb3VuZGF0aW9uLg0KPiA+ICsgIEBwYXJhbSBCb290 TW9kZSAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUg Ym9vdA0KPiBtb2RlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgYm9vdCBtb2RlIHdhcyByZXR1cm5lZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQm9vdE1vZGUgaXMgTlVMTC4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEdldEJvb3RNb2Rl ICgNCj4gPiArICBJTiAgQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgKipQZWlTZXJ2aWNlcywNCj4g PiArICBJTiAgT1VUICAgRUZJX0JPT1RfTU9ERSAgICAgKkJvb3RNb2RlDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgcmV0dXJuIEVGSV9OT1RfQVZBSUxBQkxFX1lFVDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgVGhpcyBzZXJ2aWNlIGVuYWJsZXMgUEVJTXMgdG8gdXBkYXRlIHRo ZSBib290IG1vZGUgdmFyaWFibGUuDQo+ID4gKw0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2Vy dmljZXMgICAgICBBbiBpbmRpcmVjdCBwb2ludGVyIHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VTIHRh YmxlDQo+IHB1Ymxpc2hlZCBieSB0aGUgUEVJIEZvdW5kYXRpb24uDQo+ID4gKyAgQHBhcmFtIEJv b3RNb2RlICAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBib290IG1vZGUgdG8gc2V0Lg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuIEVGSV9TVUNDRVNTICAgICBUaGUgdmFsdWUgd2FzIHN1Y2Nlc3NmdWxs eSB1cGRhdGVkDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkN Cj4gPiArVW5pdFRlc3RTZXRCb290TW9kZSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJW SUNFUyAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJTiBFRklfQk9PVF9NT0RFICAgICAgICAgICBC b290TW9kZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBFRklfTk9UX0FWQUlMQUJM RV9ZRVQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlYXJjaCB0aGUgZmlybXdh cmUgdm9sdW1lcyBieSBpbmRleA0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2VydmljZXMgICAg IEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMgdGFibGUNCj4gcHVi bGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbg0KPiA+ICsgIEBwYXJhbSBJbnN0YW5jZSAgICAg ICAgVGhpcyBpbnN0YW5jZSBvZiB0aGUgZmlybXdhcmUgdm9sdW1lIHRvIGZpbmQuIFRoZQ0KPiB2 YWx1ZSAwIGlzIHRoZSBCb290IEZpcm13YXJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBWb2x1bWUgKEJGVikuDQo+ID4gKyAgQHBhcmFtIFZvbHVtZUhhbmRsZSAgICBPbiBleGl0LCBw b2ludHMgdG8gdGhlIG5leHQgdm9sdW1lIGhhbmRsZSBvcg0KPiBOVUxMIGlmIGl0IGRvZXMgbm90 IGV4aXN0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVm9s dW1lSGFuZGxlIGlzIE5VTEwNCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAg VGhlIHZvbHVtZSB3YXMgbm90IGZvdW5kLg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgICBUaGUgdm9sdW1lIHdhcyBmb3VuZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEZmc0ZpbmROZXh0Vm9sdW1lICgNCj4g PiArICBJTiBDT05TVCBFRklfUEVJX1NFUlZJQ0VTICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElO ICAgICBVSU5UTiAgICAgICAgICAgICAgIEluc3RhbmNlLA0KPiA+ICsgIElOIE9VVCBFRklfUEVJ X0ZWX0hBTkRMRSAgICpWb2x1bWVIYW5kbGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1 cm4gRUZJX05PVF9BVkFJTEFCTEVfWUVUOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBTZWFyY2hlcyBmb3IgdGhlIG5leHQgbWF0Y2hpbmcgZmlsZSBpbiB0aGUgZmlybXdhcmUgdm9s dW1lLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2VydmljZXMgICAgIEFuIGluZGlyZWN0IHBv aW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMgdGFibGUNCj4gcHVibGlzaGVkIGJ5IHRoZSBQ RUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0gU2VhcmNoVHlwZSAgICAgIEZpbHRlciB0byBm aW5kIG9ubHkgZmlsZXMgb2YgdGhpcyB0eXBlLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgVHlwZSBFRklfRlZfRklMRVRZUEVfQUxMIGNhdXNlcyBubyBmaWx0ZXJpbmcgdG8gYmUgZG9u ZS4NCj4gPiArICBAcGFyYW0gRnZIYW5kbGUgICAgICAgIEhhbmRsZSBvZiBmaXJtd2FyZSB2b2x1 bWUgaW4gd2hpY2ggdG8gc2VhcmNoLg0KPiA+ICsgIEBwYXJhbSBGaWxlSGFuZGxlICAgICAgT24g ZW50cnksIHBvaW50cyB0byB0aGUgY3VycmVudCBoYW5kbGUgZnJvbSB3aGljaA0KPiB0byBiZWdp biBzZWFyY2hpbmcgb3IgTlVMTCB0byBzdGFydA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlybXdhcmUgdm9sdW1lLiBPbiBleGl0LCBwb2lu dHMgdGhlDQo+IGZpbGUgaGFuZGxlIG9mIHRoZSBuZXh0IGZpbGUNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgIGluIHRoZSB2b2x1bWUgb3IgTlVMTCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBm aWxlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICBUaGUgZmlsZSB3YXMg bm90IGZvdW5kLg0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgVGhlIGhlYWRlciBjaGVj a3N1bSB3YXMgbm90IHplcm8uDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICBUaGUgZmls ZSB3YXMgZm91bmQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklB UEkNCj4gPiArVW5pdFRlc3RGZnNGaW5kTmV4dEZpbGUgKA0KPiA+ICsgIElOIENPTlNUIEVGSV9Q RUlfU0VSVklDRVMgICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICBTZWFyY2hUeXBlLA0KPiA+ICsgIElOIEVGSV9QRUlfRlZfSEFORExFICAgICAgICBG dkhhbmRsZSwNCj4gPiArICBJTiBPVVQgRUZJX1BFSV9GSUxFX0hBTkRMRSAgKkZpbGVIYW5kbGUN Cj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gRUZJX05PVF9BVkFJTEFCTEVfWUVUOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZWFyY2hlcyBmb3IgdGhlIG5leHQgbWF0 Y2hpbmcgc2VjdGlvbiB3aXRoaW4gdGhlIHNwZWNpZmllZCBmaWxlLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gUGVpU2VydmljZXMgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlf U0VSVklDRVMgdGFibGUNCj4gcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbg0KPiA+ICsg IEBwYXJhbSBTZWN0aW9uVHlwZSAgICAgRmlsdGVyIHRvIGZpbmQgb25seSBzZWN0aW9ucyBvZiB0 aGlzIHR5cGUuDQo+ID4gKyAgQHBhcmFtIEZpbGVIYW5kbGUgICAgICBQb2ludGVyIHRvIHRoZSBj dXJyZW50IGZpbGUgdG8gc2VhcmNoLg0KPiA+ICsgIEBwYXJhbSBTZWN0aW9uRGF0YSAgICAgQSBw b2ludGVyIHRvIHRoZSBkaXNjb3ZlcmVkIHNlY3Rpb24sIGlmIHN1Y2Nlc3NmdWwuDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMIGlmIHNlY3Rpb24gbm90IGZvdW5kDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgVGhlIHNlY3Rpb24gd2FzIG5vdCBmb3VuZC4N Cj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgIFRoZSBzZWN0aW9uIHdhcyBmb3VuZC4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVz dEZmc0ZpbmRTZWN0aW9uRGF0YSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAg ICoqUGVpU2VydmljZXMsDQo+ID4gKyAgSU4gICAgIEVGSV9TRUNUSU9OX1RZUEUgICAgIFNlY3Rp b25UeXBlLA0KPiA+ICsgIElOICAgICBFRklfUEVJX0ZJTEVfSEFORExFICBGaWxlSGFuZGxlLA0K PiA+ICsgIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAqKlNlY3Rpb25EYXRhDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIEVGSV9OT1RfQVZBSUxBQkxFX1lFVDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIHRo ZSBmb3VuZCBtZW1vcnkgY29uZmlndXJhdGlvbiB3aXRoIHRoZSBQRUkNCj4gRm91bmRhdGlvbi4N Cj4gPiArDQo+ID4gKyAgVGhlIHVzYWdlIG1vZGVsIGlzIHRoYXQgdGhlIFBFSU0gdGhhdCBkaXNj b3ZlcnMgdGhlIHBlcm1hbmVudCBtZW1vcnkNCj4gc2hhbGwgaW52b2tlIHRoaXMgc2VydmljZS4N Cj4gPiArICBUaGlzIHJvdXRpbmUgd2lsbCBob2xkIGRpc2NvdmVyaWVkIG1lbW9yeSBpbmZvcm1h dGlvbiBpbnRvIFBlaUNvcmUncw0KPiBwcml2YXRlIGRhdGEsDQo+ID4gKyAgYW5kIHNldCBTd2l0 Y2hTdGFja1NpZ25hbCBmbGFnLiBBZnRlciBQRUlNIHdobyBkaXNjb3ZlcnkgbWVtb3J5IGlzDQo+ IGRpc3BhdGNoZWQsDQo+ID4gKyAgUGVpRGlzcGF0Y2hlciB3aWxsIG1pZ3JhdGUgdGVtcG9yYXJ5 IG1lbW9yeSB0byBwZXJtYW5lbnQgbWVtb3J5Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2Vy dmljZXMgICAgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMN Cj4gdGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0g TWVtb3J5QmVnaW4gICAgICAgIFN0YXJ0IG9mIG1lbW9yeSBhZGRyZXNzLg0KPiA+ICsgIEBwYXJh bSBNZW1vcnlMZW5ndGggICAgICAgTGVuZ3RoIG9mIG1lbW9yeS4NCj4gPiArDQo+ID4gKyAgQHJl dHVybiBFRklfU1VDQ0VTUyBBbHdheXMgc3VjY2Vzcy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEluc3RhbGxQZWlNZW1vcnkgKA0K PiA+ICsgIElOIENPTlNUIEVGSV9QRUlfU0VSVklDRVMgICoqUGVpU2VydmljZXMsDQo+ID4gKyAg SU4gRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgTWVtb3J5QmVnaW4sDQo+ID4gKyAgSU4gVUlOVDY0 ICAgICAgICAgICAgICAgICAgTWVtb3J5TGVuZ3RoDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg cmV0dXJuIEVGSV9OT1RfQVZBSUxBQkxFX1lFVDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgVGhlIHB1cnBvc2Ugb2YgdGhlIHNlcnZpY2UgaXMgdG8gcHVibGlzaCBhbiBpbnRlcmZh Y2UgdGhhdCBhbGxvd3MNCj4gPiArICBQRUlNcyB0byBhbGxvY2F0ZSBtZW1vcnkgcmFuZ2VzIHRo YXQgYXJlIG1hbmFnZWQgYnkgdGhlIFBFSQ0KPiBGb3VuZGF0aW9uLg0KPiA+ICsNCj4gPiArICBQ cmlvciB0byBJbnN0YWxsUGVpTWVtb3J5KCkgYmVpbmcgY2FsbGVkLCBQRUkgd2lsbCBhbGxvY2F0 ZSBwYWdlcyBmcm9tIHRoZQ0KPiBoZWFwLg0KPiA+ICsgIEFmdGVyIEluc3RhbGxQZWlNZW1vcnko KSBpcyBjYWxsZWQsIFBFSSB3aWxsIGFsbG9jYXRlIHBhZ2VzIHdpdGhpbiB0aGUNCj4gcmVnaW9u DQo+ID4gKyAgb2YgbWVtb3J5IHByb3ZpZGVkIGJ5IEluc3RhbGxQZWlNZW1vcnkoKSBzZXJ2aWNl IGluIGEgYmVzdC1lZmZvcnQNCj4gZmFzaGlvbi4NCj4gPiArICBMb2NhdGlvbi1zcGVjaWZpYyBh bGxvY2F0aW9ucyBhcmUgbm90IG1hbmFnZWQgYnkgdGhlIFBFSSBmb3VuZGF0aW9uIGNvZGUuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSAgUGVpU2VydmljZXMgICAgICBBbiBpbmRpcmVjdCBwb2ludGVy IHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VTDQo+IHRhYmxlIHB1Ymxpc2hlZCBieSB0aGUgUEVJIEZv dW5kYXRpb24uDQo+ID4gKyAgQHBhcmFtICBNZW1vcnlUeXBlICAgICAgIFRoZSB0eXBlIG9mIG1l bW9yeSB0byBhbGxvY2F0ZS4NCj4gPiArICBAcGFyYW0gIFBhZ2VzICAgICAgICAgICAgVGhlIG51 bWJlciBvZiBjb250aWd1b3VzIDQgS0IgcGFnZXMgdG8gYWxsb2NhdGUuDQo+ID4gKyAgQHBhcmFt ICBNZW1vcnkgICAgICAgICAgIFBvaW50ZXIgdG8gYSBwaHlzaWNhbCBhZGRyZXNzLiBPbiBvdXRw dXQsIHRoZQ0KPiBhZGRyZXNzIGlzIHNldCB0byB0aGUgYmFzZQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZiB0aGUgcGFnZSByYW5nZSB0aGF0IHdhcyBhbGxvY2F0ZWQuDQo+ID4g Kw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBtZW1vcnkgcmFuZ2Ug d2FzIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JF U09VUkNFUyAgVGhlIHBhZ2VzIGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQuDQo+ID4gKyAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVHlwZSBpcyBub3QgZXF1YWwgdG8gRWZpTG9hZGVyQ29k ZSwNCj4gRWZpTG9hZGVyRGF0YSwgRWZpUnVudGltZVNlcnZpY2VzQ29kZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFZmlSdW50aW1lU2VydmljZXNEYXRhLCBFZmlCb290 U2VydmljZXNDb2RlLA0KPiBFZmlCb290U2VydmljZXNEYXRhLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVmaUFDUElSZWNsYWltTWVtb3J5LCBFZmlSZXNlcnZlZE1lbW9y eVR5cGUsIG9yDQo+IEVmaUFDUElNZW1vcnlOVlMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJ X1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRlc3RBbGxvY2F0ZVBhZ2VzICgNCj4gPiAr ICBJTiBDT05TVCBFRklfUEVJX1NFUlZJQ0VTICAgICAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJ TiAgICAgICBFRklfTUVNT1JZX1RZUEUgICAgICAgTWVtb3J5VHlwZSwNCj4gPiArICBJTiAgICAg ICBVSU5UTiAgICAgICAgICAgICAgICAgUGFnZXMsDQo+ID4gKyAgT1VUICAgICAgRUZJX1BIWVNJ Q0FMX0FERFJFU1MgICpNZW1vcnkNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gRUZJ X05PVF9BVkFJTEFCTEVfWUVUOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArDQo+ID4g KyAgUG9vbCBhbGxvY2F0aW9uIHNlcnZpY2UuIEJlZm9yZSBwZXJtYW5lbnQgbWVtb3J5IGlzIGRp c2NvdmVyZWQsIHRoZQ0KPiBwb29sIHdpbGwNCj4gPiArICBiZSBhbGxvY2F0ZWQgaW4gdGhlIGhl YXAgaW4gdGVtcG9yYXJ5IG1lbW9yeS4gR2VuZXJhbGx5LCB0aGUgc2l6ZSBvZiB0aGUNCj4gaGVh cCBpbiB0ZW1wb3JhcnkNCj4gPiArICBtZW1vcnkgZG9lcyBub3QgZXhjZWVkIDY0Sywgc28gdGhl IGJpZ2dlc3QgcG9vbCBzaXplIGNvdWxkIGJlIGFsbG9jYXRlZA0KPiBpcw0KPiA+ICsgIDY0Sy4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtIFBlaVNlcnZpY2VzICAgICAgICAgICAgICAgQW4gaW5kaXJl Y3QgcG9pbnRlciB0byB0aGUgRUZJX1BFSV9TRVJWSUNFUw0KPiB0YWJsZSBwdWJsaXNoZWQgYnkg dGhlIFBFSSBGb3VuZGF0aW9uLg0KPiA+ICsgIEBwYXJhbSBTaXplICAgICAgICAgICAgICAgICAg ICAgIEFtb3VudCBvZiBtZW1vcnkgcmVxdWlyZWQNCj4gPiArICBAcGFyYW0gQnVmZmVyICAgICAg ICAgICAgICAgICAgICBBZGRyZXNzIG9mIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlcg0KPiA+ICsNCj4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgYWxsb2NhdGlvbiB3YXMg c3VjY2Vzc2Z1bA0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgIFRoZXJl IGlzIG5vdCBlbm91Z2ggaGVhcCB0byBzYXRpc2Z5DQo+IHRoZSByZXF1aXJlbWVudA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFsbG9jYXRlIHRoZSByZXF1ZXN0 ZWQgc2l6ZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0K PiA+ICtVbml0VGVzdEFsbG9jYXRlUG9vbCAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJW SUNFUyAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJTiAgICAgICBVSU5UTiAgICAgICAgICAgICBT aXplLA0KPiA+ICsgIE9VVCAgICAgIFZPSUQgICAgICAgICAgICAgICoqQnVmZmVyDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIEVGSV9OT1RfQVZBSUxBQkxFX1lFVDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICsgIENvcmUgdmVyc2lvbiBvZiB0aGUgU3RhdHVz IENvZGUgcmVwb3J0ZXINCj4gPiArDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBQZWlTZXJ2aWNlcyAg ICAgQW4gaW5kaXJlY3QgcG9pbnRlciB0byB0aGUgRUZJX1BFSV9TRVJWSUNFUyB0YWJsZQ0KPiBw dWJsaXNoZWQgYnkgdGhlIFBFSSBGb3VuZGF0aW9uLg0KPiA+ICsgIEBwYXJhbSBDb2RlVHlwZSAg ICAgICAgVHlwZSBvZiBTdGF0dXMgQ29kZS4NCj4gPiArICBAcGFyYW0gVmFsdWUgICAgICAgICAg IFZhbHVlIHRvIG91dHB1dCBmb3IgU3RhdHVzIENvZGUuDQo+ID4gKyAgQHBhcmFtIEluc3RhbmNl ICAgICAgICBJbnN0YW5jZSBOdW1iZXIgb2YgdGhpcyBzdGF0dXMgY29kZS4NCj4gPiArICBAcGFy YW0gQ2FsbGVySWQgICAgICAgIElEIG9mIHRoZSBjYWxsZXIgb2YgdGhpcyBzdGF0dXMgY29kZS4N Cj4gPiArICBAcGFyYW0gRGF0YSAgICAgICAgICAgIE9wdGlvbmFsIGRhdGEgYXNzb2NpYXRlZCB3 aXRoIHRoaXMgc3RhdHVzIGNvZGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgICAgaWYgc3RhdHVzIGNvZGUgaXMgc3VjY2Vzc2Z1bGx5IHJlcG9ydGVkDQo+ID4g KyAgQHJldHZhbCBFRklfTk9UX0FWQUlMQUJMRV9ZRVQgICBpZiBTdGF0dXNDb2RlUHBpIGhhcyBu b3QgYmVlbg0KPiBpbnN0YWxsZWQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdFJlcG9ydFN0YXR1c0NvZGUgKA0KPiA+ICsgIElOIENP TlNUIEVGSV9QRUlfU0VSVklDRVMgICAgICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElOIEVGSV9T VEFUVVNfQ09ERV9UWVBFICAgICAgICBDb2RlVHlwZSwNCj4gPiArICBJTiBFRklfU1RBVFVTX0NP REVfVkFMVUUgICAgICAgVmFsdWUsDQo+ID4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgIEluc3RhbmNlLA0KPiA+ICsgIElOIENPTlNUIEVGSV9HVUlEICAgICAgICAgICAgICAqQ2Fs bGVySWQsDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1NUQVRVU19DT0RFX0RBVEEgICpEYXRhIE9QVElP TkFMDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIEVGSV9OT1RfQVZBSUxBQkxFX1lF VDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICtDb3JlIHZlcnNpb24gb2Yg dGhlIFJlc2V0IFN5c3RlbQ0KPiA+ICsNCj4gPiArDQo+ID4gK0BwYXJhbSBQZWlTZXJ2aWNlcyAg ICAgICAgICAgICAgICBBbiBpbmRpcmVjdCBwb2ludGVyIHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VT DQo+IHRhYmxlIHB1Ymxpc2hlZCBieSB0aGUgUEVJIEZvdW5kYXRpb24uDQo+ID4gKw0KPiA+ICtA cmV0dmFsIEVGSV9OT1RfQVZBSUxBQkxFX1lFVCAgICAgUFBJIG5vdCBhdmFpbGFibGUgeWV0Lg0K PiA+ICtAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgICAgRGlkIG5vdCByZXNldCBzeXN0 ZW0uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIHJl c2V0cyB0aGUgc3lzdGVtLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiAr RUZJQVBJDQo+ID4gK1VuaXRUZXN0UmVzZXRTeXN0ZW0gKA0KPiA+ICsgIElOIENPTlNUIEVGSV9Q RUlfU0VSVklDRVMgICoqUGVpU2VydmljZXMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1 cm4gRUZJX05PVF9BVkFJTEFCTEVfWUVUOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBGaW5kIGEgZmlsZSB3aXRoaW4gYSB2b2x1bWUgYnkgaXRzIG5hbWUuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbSBGaWxlTmFtZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBuYW1lIG9mIHRoZSBmaWxl IHRvIGZpbmQgd2l0aGluIHRoZQ0KPiBmaXJtd2FyZSB2b2x1bWUuDQo+ID4gKyAgQHBhcmFtIFZv bHVtZUhhbmRsZSAgICBUaGUgZmlybXdhcmUgdm9sdW1lIHRvIHNlYXJjaA0KPiA+ICsgIEBwYXJh bSBGaWxlSGFuZGxlICAgICAgVXBvbiBleGl0LCBwb2ludHMgdG8gdGhlIGZvdW5kIGZpbGUncyBo YW5kbGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgaXQgY291bGQg bm90IGJlIGZvdW5kLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgRmlsZSB3YXMgZm91bmQuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAg IEZpbGUgd2FzIG5vdCBmb3VuZC4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiAgVm9sdW1lSGFuZGxlIG9yIEZpbGVIYW5kbGUgb3INCj4gRmlsZU5hbWUgd2FzIE5VTEwuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVW5pdFRl c3RGZnNGaW5kRmlsZUJ5TmFtZSAoDQo+ID4gKyAgSU4gIENPTlNUIEVGSV9HVUlEICAgICAgICpG aWxlTmFtZSwNCj4gPiArICBJTiAgRUZJX1BFSV9GVl9IQU5ETEUgICAgVm9sdW1lSGFuZGxlLA0K PiA+ICsgIE9VVCBFRklfUEVJX0ZJTEVfSEFORExFICAqRmlsZUhhbmRsZQ0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIHJldHVybiBFRklfTk9UX0FWQUlMQUJMRV9ZRVQ7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBm aWxlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gRmlsZUhhbmRsZSAgICAgICBIYW5kbGUgb2YgdGhl IGZpbGUuDQo+ID4gKyAgQHBhcmFtIEZpbGVJbmZvICAgICAgICAgVXBvbiBleGl0LCBwb2ludHMg dG8gdGhlIGZpbGUncyBpbmZvcm1hdGlvbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgSWYgRmlsZUluZm8gaXMgTlVMTC4NCj4gPiArICBAcmV0dmFsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBJZiBGaWxlSGFuZGxlIGRvZXMgbm90IHJlcHJlc2VudCBhDQo+IHZh bGlkIGZpbGUuDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgRmlsZSBpbmZv cm1hdGlvbiByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4g K0VGSUFQSQ0KPiA+ICtVbml0VGVzdEZmc0dldEZpbGVJbmZvICgNCj4gPiArICBJTiBFRklfUEVJ X0ZJTEVfSEFORExFICBGaWxlSGFuZGxlLA0KPiA+ICsgIE9VVCBFRklfRlZfRklMRV9JTkZPICAg ICpGaWxlSW5mbw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBFRklfTk9UX0FWQUlM QUJMRV9ZRVQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHVybnMgaW5mb3Jt YXRpb24gYWJvdXQgdGhlIHNwZWNpZmllZCB2b2x1bWUuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVu Y3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIGZpcm13YXJlDQo+ID4g KyAgdm9sdW1lLCBpbmNsdWRpbmcgaXRzIG5hbWUsIHR5cGUsIGF0dHJpYnV0ZXMsIHN0YXJ0aW5n IGFkZHJlc3MNCj4gPiArICBhbmQgc2l6ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFZvbHVtZUhh bmRsZSAgIEhhbmRsZSBvZiB0aGUgdm9sdW1lLg0KPiA+ICsgIEBwYXJhbSBWb2x1bWVJbmZvICAg ICBVcG9uIGV4aXQsIHBvaW50cyB0byB0aGUgdm9sdW1lJ3MgaW5mb3JtYXRpb24uDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVm9sdW1lIGluZm9ybWF0aW9u IHJldHVybmVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgSWYgVm9s dW1lSGFuZGxlIGRvZXMgbm90IHJlcHJlc2VudA0KPiBhIHZhbGlkIHZvbHVtZS4NCj4gPiArICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIElmIFZvbHVtZUhhbmRsZSBpcyBOVUxMLg0K PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgSW5mb3JtYXRpb24gc3VjY2Vz c2Z1bGx5IHJldHVybmVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAg VGhlIHZvbHVtZSBkZXNpZ25hdGVkIGJ5IHRoZQ0KPiBWb2x1bWVIYW5kbGUgaXMgbm90IGF2YWls YWJsZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ ICtVbml0VGVzdEZmc0dldFZvbHVtZUluZm8gKA0KPiA+ICsgIElOIEVGSV9QRUlfRlZfSEFORExF ICBWb2x1bWVIYW5kbGUsDQo+ID4gKyAgT1VUIEVGSV9GVl9JTkZPICAgICAgICpWb2x1bWVJbmZv DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIEVGSV9OT1RfQVZBSUxBQkxFX1lFVDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gK1RoaXMgcm91dGluZSBlbmFibGVzIGEgUEVJ TSB0byByZWdpc3RlciBpdHNlbGYgZm9yIHNoYWRvdyB3aGVuIHRoZSBQRUkNCj4gRm91bmRhdGlv bg0KPiA+ICtkaXNjb3ZlcnMgcGVybWFuZW50IG1lbW9yeS4NCj4gPiArDQo+ID4gK0BwYXJhbSBG aWxlSGFuZGxlICAgICAgICAgICAgIEZpbGUgaGFuZGxlIG9mIGEgUEVJTS4NCj4gPiArDQo+ID4g K0ByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBmaWxlIGhhbmRsZSBkb2Vzbid0IHBv aW50IHRvIFBFSU0gaXRzZWxmLg0KPiA+ICtAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBJ bmRpY2F0ZSB0aGF0IHRoZSBQRUlNIGhhcyBiZWVuDQo+IHJlZ2lzdGVyZWQgaXRzZWxmLg0KPiA+ ICtAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTdWNjZXNzZnVsbHkgdG8gcmVnaXN0ZXIg aXRzZWxmLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ ID4gK1VuaXRUZXN0UmVnaXN0ZXJGb3JTaGFkb3cgKA0KPiA+ICsgIElOIEVGSV9QRUlfRklMRV9I QU5ETEUgIEZpbGVIYW5kbGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gRUZJX05P VF9BVkFJTEFCTEVfWUVUOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArU2VhcmNoZXMg Zm9yIHRoZSBuZXh0IG1hdGNoaW5nIHNlY3Rpb24gd2l0aGluIHRoZSBzcGVjaWZpZWQgZmlsZS4N Cj4gPiArDQo+ID4gK0BwYXJhbSAgUGVpU2VydmljZXMgICAgICAgICAgIEFuIGluZGlyZWN0IHBv aW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMNCj4gdGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQ RUkgRm91bmRhdGlvbi4NCj4gPiArQHBhcmFtICBTZWN0aW9uVHlwZSAgICAgICAgICAgVGhlIHZh bHVlIG9mIHRoZSBzZWN0aW9uIHR5cGUgdG8gZmluZC4NCj4gPiArQHBhcmFtICBTZWN0aW9uSW5z dGFuY2UgICAgICAgU2VjdGlvbiBpbnN0YW5jZSB0byBmaW5kLg0KPiA+ICtAcGFyYW0gIEZpbGVI YW5kbGUgICAgICAgICAgICBIYW5kbGUgb2YgdGhlIGZpcm13YXJlIGZpbGUgdG8gc2VhcmNoLg0K PiA+ICtAcGFyYW0gIFNlY3Rpb25EYXRhICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGRpc2Nv dmVyZWQgc2VjdGlvbiwgaWYNCj4gc3VjY2Vzc2Z1bC4NCj4gPiArQHBhcmFtICBBdXRoZW50aWNh dGlvblN0YXR1cyAgQSBwb2ludGVyIHRvIHRoZSBhdXRoZW50aWNhdGlvbiBzdGF0dXMgZm9yDQo+ IHRoaXMgc2VjdGlvbi4NCj4gPiArDQo+ID4gK0ByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICBUaGUg c2VjdGlvbiB3YXMgZm91bmQuDQo+ID4gK0ByZXR2YWwgRUZJX05PVF9GT1VORCAgICBUaGUgc2Vj dGlvbiB3YXMgbm90IGZvdW5kLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0RmZzRmluZFNlY3Rpb25EYXRhMyAoDQo+ID4gKyAgSU4g Q09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgICoqUGVpU2VydmljZXMsDQo+ID4gKyAgSU4gICAgIEVG SV9TRUNUSU9OX1RZUEUgICAgIFNlY3Rpb25UeXBlLA0KPiA+ICsgIElOICAgICBVSU5UTiAgICAg ICAgICAgICAgICBTZWN0aW9uSW5zdGFuY2UsDQo+ID4gKyAgSU4gICAgIEVGSV9QRUlfRklMRV9I QU5ETEUgIEZpbGVIYW5kbGUsDQo+ID4gKyAgT1VUIFZPSUQgICAgICAgICAgICAgICAgICAgICoq U2VjdGlvbkRhdGEsDQo+ID4gKyAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICpBdXRoZW50 aWNhdGlvblN0YXR1cw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBFRklfTk9UX0FW QUlMQUJMRV9ZRVQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICtSZXR1cm5zIGluZm9y bWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgZmlsZS4NCj4gPiArDQo+ID4gK0BwYXJhbSBGaWxlSGFu ZGxlICAgICAgIEhhbmRsZSBvZiB0aGUgZmlsZS4NCj4gPiArQHBhcmFtIEZpbGVJbmZvICAgICAg ICAgVXBvbiBleGl0LCBwb2ludHMgdG8gdGhlIGZpbGUncyBpbmZvcm1hdGlvbi4NCj4gPiArDQo+ ID4gK0ByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIElmIEZpbGVJbmZvIGlzIE5VTEwuDQo+ ID4gK0ByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIElmIEZpbGVIYW5kbGUgZG9lcyBub3Qg cmVwcmVzZW50IGENCj4gdmFsaWQgZmlsZS4NCj4gPiArQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgRmlsZSBpbmZvcm1hdGlvbiByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEZmc0dldEZpbGVJbmZvMiAoDQo+ ID4gKyAgSU4gRUZJX1BFSV9GSUxFX0hBTkRMRSAgRmlsZUhhbmRsZSwNCj4gPiArICBPVVQgRUZJ X0ZWX0ZJTEVfSU5GTzIgICAqRmlsZUluZm8NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1 cm4gRUZJX05PVF9BVkFJTEFCTEVfWUVUOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr RnJlZXMgbWVtb3J5IHBhZ2VzLg0KPiA+ICsNCj4gPiArQHBhcmFtW2luXSBQZWlTZXJ2aWNlcyAg ICAgICAgQW4gaW5kaXJlY3QgcG9pbnRlciB0byB0aGUgRUZJX1BFSV9TRVJWSUNFUw0KPiB0YWJs ZSBwdWJsaXNoZWQgYnkgdGhlIFBFSSBGb3VuZGF0aW9uLg0KPiA+ICtAcGFyYW1baW5dIE1lbW9y eSAgICAgICAgICAgICBUaGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBwYWdlcyB0byBi ZQ0KPiBmcmVlZC4NCj4gPiArQHBhcmFtW2luXSBQYWdlcyAgICAgICAgICAgICAgVGhlIG51bWJl ciBvZiBjb250aWd1b3VzIDQgS0IgcGFnZXMgdG8gZnJlZS4NCj4gPiArDQo+ID4gK0ByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgcGFnZXMgd2VyZSBmcmVlZC4NCj4g PiArQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgTWVtb3J5IGlzIG5vdCBhIHBhZ2UtYWxp Z25lZCBhZGRyZXNzDQo+IG9yIFBhZ2VzIGlzIGludmFsaWQuDQo+ID4gK0ByZXR2YWwgRUZJX05P VF9GT1VORCAgICAgICAgIFRoZSByZXF1ZXN0ZWQgbWVtb3J5IHBhZ2VzIHdlcmUgbm90DQo+IGFs bG9jYXRlZCB3aXRoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRl UGFnZXMoKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0K PiA+ICtVbml0VGVzdEZyZWVQYWdlcyAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNF UyAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJTiBFRklfUEhZU0lDQUxfQUREUkVTUyAgICBNZW1v cnksDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICAgUGFnZXMNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICByZXR1cm4gRUZJX05PVF9BVkFJTEFCTEVfWUVUOw0KPiA+ICt9DQo+ID4g ZGlmZiAtLWdpdA0KPiBhL1VuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlT ZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi9Vbml0VA0KPiBlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRl ckxpYlBwaS5jDQo+IGIvVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVzdFBlaVNl cnZpY2VzVGFibGVQb2ludGVyTGliL1VuaXRUDQo+IGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVy TGliUHBpLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAu LjA5ZjQwOTRkYWQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvVW5pdFRlc3RGcmFt ZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliL1VuaXRU DQo+IGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliUHBpLmMNCj4gPiBAQCAtMCwwICsxLDQ4 NSBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBUaGlzIGZpbGUgaW1wbGVtZW50cyBzb21lIFBF SSBzZXJ2aWNlcyBhYm91dCBQUEkuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMywg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArDQo+ID4gKyNpbmNsdWRlICJVbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGli LmgiDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpbnN0YWxs cyBhbiBpbnRlcmZhY2UgaW4gdGhlIFBFSSBQUEkgZGF0YWJhc2UgYnkgR1VJRC4NCj4gPiArICBU aGUgcHVycG9zZSBvZiB0aGUgc2VydmljZSBpcyB0byBwdWJsaXNoIGFuIGludGVyZmFjZSB0aGF0 IG90aGVyIHBhcnRpZXMNCj4gPiArICBjYW4gdXNlIHRvIGNhbGwgYWRkaXRpb25hbCBQRUlNcy4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtIFBlaVNlcnZpY2VzICAgICAgICAgICAgICAgIEFuIGluZGly ZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMNCj4gdGFibGUgcHVibGlzaGVkIGJ5 IHRoZSBQRUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0gUHBpTGlzdCAgICAgICAgICAgICAg ICAgICAgUG9pbnRlciB0byBhIGxpc3Qgb2YgUEVJIFBQSSBEZXNjcmlwdG9ycy4NCj4gPiArICBA cGFyYW0gU2luZ2xlICAgICAgICAgICAgICAgICAgICAgVFJVRSBpZiBvbmx5IHNpbmdsZSBlbnRy eSBpbiB0aGUgUHBpTGlzdC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRkFMU0UgaWYgdGhlIFBwaUxpc3QgaXMgZW5kZWQgd2l0aCBhbiBlbnRyeSB3aGljaCBoYXMg dGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9QRUlfUFBJ X0RFU0NSSVBUT1JfVEVSTUlOQVRFX0xJU1QgZmxhZyBzZXQgaW4NCj4gaXRzIEZsYWdzIGZpZWxk Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBpZiBhbGwg UFBJcyBpbiBQcGlMaXN0IGFyZSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkLg0KPiA+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgIGlmIFBwaUxpc3QgaXMgTlVMTCBwb2ludGVyDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYW55IFBQSSBpbiBQcGlM aXN0IGlzIG5vdCB2YWxpZA0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAg IGlmIHRoZXJlIGlzIG5vIG1vcmUgbWVtb3J5DQo+IHJlc291cmNlIHRvIGluc3RhbGwgUFBJDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtJbnRlcm5hbFBlaUluc3RhbGxQ cGkgKA0KPiA+ICsgIElOIENPTlNUIEVGSV9QRUlfU0VSVklDRVMgICAgICAgICoqUGVpU2Vydmlj ZXMsDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9QUElfREVTQ1JJUFRPUiAgKlBwaUxpc3QsDQo+ ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgUEVJX0NPUkVfSU5TVEFOQ0UgICpQcml2YXRlRGF0YTsNCj4gPiArICBQ RUlfUFBJX0xJU1QgICAgICAgKlBwaUxpc3RQb2ludGVyOw0KPiA+ICsgIFVJTlROICAgICAgICAg ICAgICBJbmRleDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgTGFzdENvdW50Ow0KPiA+ICsN Cj4gPiArICBpZiAoUHBpTGlzdCA9PSBOVUxMKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFM SURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgUHJpdmF0ZURhdGEgPSBQRUlf Q09SRV9JTlNUQU5DRV9GUk9NX1BTX1RISVMgKFBlaVNlcnZpY2VzKTsNCj4gPiArDQo+ID4gKyAg UHBpTGlzdFBvaW50ZXIgPSAmUHJpdmF0ZURhdGEtPlBwaURhdGEuUHBpTGlzdDsNCj4gPiArICBJ bmRleCAgICAgICAgICA9IFBwaUxpc3RQb2ludGVyLT5DdXJyZW50Q291bnQ7DQo+ID4gKyAgTGFz dENvdW50ICAgICAgPSBJbmRleDsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBUaGlzIGlz IGxvb3AgaW5zdGFsbHMgYWxsIFBQSSBkZXNjcmlwdG9ycyBpbiB0aGUgUHBpTGlzdC4gIEl0IGlz IHRlcm1pbmF0ZWQNCj4gPiArICAvLyBieSB0aGUgRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9URVJN SU5BVEVfTElTVCBiZWluZyBzZXQgaW4gdGhlDQo+IGxhc3QNCj4gPiArICAvLyBFRklfUEVJX1BQ SV9ERVNDUklQVE9SIGluIHRoZSBsaXN0Lg0KPiA+ICsgIC8vDQo+ID4gKw0KPiA+ICsgIGZvciAo IDsgOykgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIENoZWNrIGlmIGl0IGlzIGEgdmFsaWQg UFBJLg0KPiA+ICsgICAgLy8gSWYgbm90LCByb2xsYmFjayBsaXN0IHRvIGV4Y2x1ZGUgYWxsIGlu IHRoaXMgbGlzdC4NCj4gPiArICAgIC8vIFRyeSB0byBpbmRpY2F0ZSB3aGljaCBpdGVtIGZhaWxl ZC4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoKFBwaUxpc3QtPkZsYWdzICYgRUZJX1BFSV9Q UElfREVTQ1JJUFRPUl9QUEkpID09IDApIHsNCj4gPiArICAgICAgUHBpTGlzdFBvaW50ZXItPkN1 cnJlbnRDb3VudCA9IExhc3RDb3VudDsNCj4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwg IkVSUk9SIC0+IEluc3RhbGxQcGk6ICVnICVwXG4iLCBQcGlMaXN0LT5HdWlkLA0KPiBQcGlMaXN0 LT5QcGkpKTsNCj4gPiArICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiAr ICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoSW5kZXggPj0gUHBpTGlzdFBvaW50ZXItPk1heENv dW50KSB7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIC8vIFJ1biBvdXQgb2Ygcm9vbSwgYXNz ZXJ0Lg0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICBBU1NFUlQgKEluZGV4IDwgUHBpTGlzdFBv aW50ZXItPk1heENvdW50KTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBERUJVRyAoKERF QlVHX0lORk8sICJJbnN0YWxsIFBQSTogJWdcbiIsIFBwaUxpc3QtPkd1aWQpKTsNCj4gPiArICAg IFBwaUxpc3RQb2ludGVyLT5QcGlQdHJzW0luZGV4XS5QcGkgPSAoRUZJX1BFSV9QUElfREVTQ1JJ UFRPUiAqKVBwaUxpc3Q7DQo+ID4gKyAgICBJbmRleCsrOw0KPiA+ICsgICAgUHBpTGlzdFBvaW50 ZXItPkN1cnJlbnRDb3VudCsrOw0KPiA+ICsNCj4gPiArICAgIGlmIChTaW5nbGUpIHsNCj4gPiAr ICAgICAgLy8NCj4gPiArICAgICAgLy8gT25seSBzaW5nbGUgZW50cnkgaW4gdGhlIFBwaUxpc3Qu DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgfSBlbHNlIGlmICgo UHBpTGlzdC0+RmxhZ3MgJiBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1RFUk1JTkFURV9MSVNUKQ0K PiA9PQ0KPiA+ICsgICAgICAgICAgICAgICBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1RFUk1JTkFU RV9MSVNUKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBDb250aW51 ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBQUEkgTGlzdC4NCj4gPiArICAgICAgLy8NCj4gPiArICAg ICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEdv IHRvIHRoZSBuZXh0IGRlc2NyaXB0b3IuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgUHBpTGlzdCsr Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBQcm9jZXNzIGFueSBjYWxs YmFjayBsZXZlbCBub3RpZmllcyBmb3IgbmV3bHkgaW5zdGFsbGVkIFBQSXMuDQo+ID4gKyAgLy8N Cj4gPiArICBQcm9jZXNzTm90aWZ5ICgNCj4gPiArICAgIFByaXZhdGVEYXRhLA0KPiA+ICsgICAg RUZJX1BFSV9QUElfREVTQ1JJUFRPUl9OT1RJRllfQ0FMTEJBQ0ssDQo+ID4gKyAgICBMYXN0Q291 bnQsDQo+ID4gKyAgICBQcGlMaXN0UG9pbnRlci0+Q3VycmVudENvdW50LA0KPiA+ICsgICAgMCwN Cj4gPiArICAgIFByaXZhdGVEYXRhLT5QcGlEYXRhLkNhbGxiYWNrTm90aWZ5TGlzdC5DdXJyZW50 Q291bnQNCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gaW5zdGFs bHMgYW4gaW50ZXJmYWNlIGluIHRoZSBQRUkgUFBJIGRhdGFiYXNlIGJ5IEdVSUQuDQo+ID4gKyAg VGhlIHB1cnBvc2Ugb2YgdGhlIHNlcnZpY2UgaXMgdG8gcHVibGlzaCBhbiBpbnRlcmZhY2UgdGhh dCBvdGhlciBwYXJ0aWVzDQo+ID4gKyAgY2FuIHVzZSB0byBjYWxsIGFkZGl0aW9uYWwgUEVJTXMu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBQZWlTZXJ2aWNlcyAgICAgICAgICAgICAgICBBbiBpbmRp cmVjdCBwb2ludGVyIHRvIHRoZSBFRklfUEVJX1NFUlZJQ0VTDQo+IHRhYmxlIHB1Ymxpc2hlZCBi eSB0aGUgUEVJIEZvdW5kYXRpb24uDQo+ID4gKyAgQHBhcmFtIFBwaUxpc3QgICAgICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gYSBsaXN0IG9mIFBFSSBQUEkgRGVzY3JpcHRvcnMuDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIGlmIGFsbCBQUElzIGluIFBw aUxpc3QgYXJlIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgICAgaWYgUHBpTGlzdCBpcyBOVUxMIHBvaW50ZXINCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhbnkgUFBJIGluIFBwaUxpc3QgaXMgbm90 IHZhbGlkDQo+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgICAgaWYgdGhlcmUg aXMgbm8gbW9yZSBtZW1vcnkNCj4gcmVzb3VyY2UgdG8gaW5zdGFsbCBQUEkNCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdEluc3RhbGxQ cGkgKA0KPiA+ICsgIElOIENPTlNUIEVGSV9QRUlfU0VSVklDRVMgICAgICAgICoqUGVpU2Vydmlj ZXMsDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9QUElfREVTQ1JJUFRPUiAgKlBwaUxpc3QNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gSW50ZXJuYWxQZWlJbnN0YWxsUHBpIChQZWlT ZXJ2aWNlcywgUHBpTGlzdCwgRkFMU0UpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr DQo+ID4gKyAgVGhpcyBmdW5jdGlvbiByZWluc3RhbGxzIGFuIGludGVyZmFjZSBpbiB0aGUgUEVJ IFBQSSBkYXRhYmFzZSBieSBHVUlELg0KPiA+ICsgIFRoZSBwdXJwb3NlIG9mIHRoZSBzZXJ2aWNl IGlzIHRvIHB1Ymxpc2ggYW4gaW50ZXJmYWNlIHRoYXQgb3RoZXIgcGFydGllcw0KPiBjYW4NCj4g PiArICB1c2UgdG8gcmVwbGFjZSBhbiBpbnRlcmZhY2Ugb2YgdGhlIHNhbWUgbmFtZSBpbiB0aGUg cHJvdG9jb2wgZGF0YWJhc2UNCj4gd2l0aCBhDQo+ID4gKyAgZGlmZmVyZW50IGludGVyZmFjZS4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtIFBlaVNlcnZpY2VzICAgICAgICAgICAgQW4gaW5kaXJlY3Qg cG9pbnRlciB0byB0aGUgRUZJX1BFSV9TRVJWSUNFUw0KPiB0YWJsZSBwdWJsaXNoZWQgYnkgdGhl IFBFSSBGb3VuZGF0aW9uLg0KPiA+ICsgIEBwYXJhbSBPbGRQcGkgICAgICAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIG9sZCBQRUkgUFBJIERlc2NyaXB0b3JzLg0KPiA+ICsgIEBwYXJhbSBOZXdQ cGkgICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIG5ldyBQRUkgUFBJIERlc2NyaXB0b3Jz Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBpZiB0aGUgb3Bl cmF0aW9uIHdhcyBzdWNjZXNzZnVsDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgaWYgT2xkUHBpIG9yIE5ld1BwaSBpcyBOVUxMDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgaWYgTmV3UHBpIGlzIG5vdCB2YWxpZA0KPiA+ICsgIEByZXR2YWwgRUZJX05P VF9GT1VORCAgICAgICAgIGlmIHRoZSBQUEkgd2FzIG5vdCBpbiB0aGUgZGF0YWJhc2UNCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtVbml0VGVzdFJl SW5zdGFsbFBwaSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAgICAgICAgKipQ ZWlTZXJ2aWNlcywNCj4gPiArICBJTiBDT05TVCBFRklfUEVJX1BQSV9ERVNDUklQVE9SICAqT2xk UHBpLA0KPiA+ICsgIElOIENPTlNUIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1IgICpOZXdQcGkNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBQRUlfQ09SRV9JTlNUQU5DRSAgKlByaXZhdGVEYXRhOw0K PiA+ICsgIFVJTlROICAgICAgICAgICAgICBJbmRleDsNCj4gPiArDQo+ID4gKyAgaWYgKChPbGRQ cGkgPT0gTlVMTCkgfHwgKE5ld1BwaSA9PSBOVUxMKSkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmICgoTmV3UHBpLT5G bGFncyAmIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1JfUFBJKSA9PSAwKSB7DQo+ID4gKyAgICByZXR1 cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgUHJpdmF0 ZURhdGEgPSBQRUlfQ09SRV9JTlNUQU5DRV9GUk9NX1BTX1RISVMgKFBlaVNlcnZpY2VzKTsNCj4g PiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBGaW5kIHRoZSBvbGQgUFBJIGluc3RhbmNlIGluIHRo ZSBkYXRhYmFzZS4gIElmIHdlIGNhbiBub3QgZmluZCBpdCwNCj4gPiArICAvLyByZXR1cm4gdGhl IEVGSV9OT1RfRk9VTkQgZXJyb3IuDQo+ID4gKyAgLy8NCj4gPiArICBmb3IgKEluZGV4ID0gMDsg SW5kZXggPCBQcml2YXRlRGF0YS0+UHBpRGF0YS5QcGlMaXN0LkN1cnJlbnRDb3VudDsNCj4gSW5k ZXgrKykgew0KPiA+ICsgICAgaWYgKE9sZFBwaSA9PSBQcml2YXRlRGF0YS0+UHBpRGF0YS5QcGlM aXN0LlBwaVB0cnNbSW5kZXhdLlBwaSkgew0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIH0N Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChJbmRleCA9PSBQcml2YXRlRGF0YS0+UHBpRGF0 YS5QcGlMaXN0LkN1cnJlbnRDb3VudCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFJlcGxhY2UgdGhlIG9sZCBQ UEkgd2l0aCB0aGUgbmV3IG9uZS4NCj4gPiArICAvLw0KPiA+ICsgIERFQlVHICgoREVCVUdfSU5G TywgIlJlaW5zdGFsbCBQUEk6ICVnXG4iLCBOZXdQcGktPkd1aWQpKTsNCj4gPiArICBQcml2YXRl RGF0YS0+UHBpRGF0YS5QcGlMaXN0LlBwaVB0cnNbSW5kZXhdLlBwaSA9DQo+IChFRklfUEVJX1BQ SV9ERVNDUklQVE9SICopTmV3UHBpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFByb2Nl c3MgYW55IGNhbGxiYWNrIGxldmVsIG5vdGlmaWVzIGZvciB0aGUgbmV3bHkgaW5zdGFsbGVkIFBQ SS4NCj4gPiArICAvLw0KPiA+ICsgIFByb2Nlc3NOb3RpZnkgKA0KPiA+ICsgICAgUHJpdmF0ZURh dGEsDQo+ID4gKyAgICBFRklfUEVJX1BQSV9ERVNDUklQVE9SX05PVElGWV9DQUxMQkFDSywNCj4g PiArICAgIEluZGV4LA0KPiA+ICsgICAgSW5kZXgrMSwNCj4gPiArICAgIDAsDQo+ID4gKyAgICBQ cml2YXRlRGF0YS0+UHBpRGF0YS5DYWxsYmFja05vdGlmeUxpc3QuQ3VycmVudENvdW50DQo+ID4g KyAgICApOw0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsNCj4gPiArICBMb2NhdGUgYSBnaXZlbiBuYW1lZCBQUEkuDQo+ID4g Kw0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2VydmljZXMgICAgICAgIEFuIGluZGlyZWN0IHBv aW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMNCj4gdGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQ RUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0gR3VpZCAgICAgICAgICAgICAgIFBvaW50ZXIg dG8gR1VJRCBvZiB0aGUgUFBJLg0KPiA+ICsgIEBwYXJhbSBJbnN0YW5jZSAgICAgICAgICAgSW5z dGFuY2UgTnVtYmVyIHRvIGRpc2NvdmVyLg0KPiA+ICsgIEBwYXJhbSBQcGlEZXNjcmlwdG9yICAg ICAgUG9pbnRlciB0byByZWZlcmVuY2UgdGhlIGZvdW5kIGRlc2NyaXB0b3IuIElmDQo+IG5vdCBO VUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyBhIHBvaW50ZXIg dG8gdGhlIGRlc2NyaXB0b3IgKGluY2x1ZGVzIGZsYWdzLCBldGMpDQo+ID4gKyAgQHBhcmFtIFBw aSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHJlZmVyZW5jZSB0aGUgZm91bmQgUFBJDQo+ID4g Kw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICBpZiB0aGUgUFBJIGlzIGluIHRoZSBkYXRh YmFzZQ0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCBpZiB0aGUgUFBJIGlzIG5vdCBpbiB0 aGUgZGF0YWJhc2UNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQ SQ0KPiA+ICtVbml0VGVzdExvY2F0ZVBwaSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJW SUNFUyAgICAgICoqUGVpU2VydmljZXMsDQo+ID4gKyAgSU4gQ09OU1QgRUZJX0dVSUQgICAgICAg ICAgICAgICpHdWlkLA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBJbnN0 YW5jZSwNCj4gPiArICBJTiBPVVQgRUZJX1BFSV9QUElfREVTQ1JJUFRPUiAgKipQcGlEZXNjcmlw dG9yLA0KPiA+ICsgIElOIE9VVCBWT0lEICAgICAgICAgICAgICAgICAgICAqKlBwaQ0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIFBFSV9DT1JFX0lOU1RBTkNFICAgICAgICpQcml2YXRlRGF0YTsN Cj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gPiArICBFRklfR1VJRCAg ICAgICAgICAgICAgICAqQ2hlY2tHdWlkOw0KPiA+ICsgIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1Ig ICpUZW1wUHRyOw0KPiA+ICsNCj4gPiArICBQcml2YXRlRGF0YSA9IFBFSV9DT1JFX0lOU1RBTkNF X0ZST01fUFNfVEhJUyAoUGVpU2VydmljZXMpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8v IFNlYXJjaCB0aGUgZGF0YSBiYXNlIGZvciB0aGUgbWF0Y2hpbmcgaW5zdGFuY2Ugb2YgdGhlIEdV SURlZCBQUEkuDQo+ID4gKyAgLy8NCj4gPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBQcml2 YXRlRGF0YS0+UHBpRGF0YS5QcGlMaXN0LkN1cnJlbnRDb3VudDsNCj4gSW5kZXgrKykgew0KPiA+ ICsgICAgVGVtcFB0ciAgID0gUHJpdmF0ZURhdGEtPlBwaURhdGEuUHBpTGlzdC5QcGlQdHJzW0lu ZGV4XS5QcGk7DQo+ID4gKyAgICBDaGVja0d1aWQgPSBUZW1wUHRyLT5HdWlkOw0KPiA+ICsNCj4g PiArICAgIC8vDQo+ID4gKyAgICAvLyBEb24ndCB1c2UgQ29tcGFyZUd1aWQgZnVuY3Rpb24gaGVy ZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4NCj4gPiArICAgIC8vIEluc3RlYWQgd2UgY29tcGFy ZSB0aGUgR1VJRCBhcyBJTlQzMiBhdCBhIHRpbWUgYW5kIGJyYW5jaA0KPiA+ICsgICAgLy8gb24g dGhlIGZpcnN0IGZhaWxlZCBjb21wYXJpc29uLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIGlmICgo KChJTlQzMiAqKUd1aWQpWzBdID09ICgoSU5UMzIgKilDaGVja0d1aWQpWzBdKSAmJg0KPiA+ICsg ICAgICAgICgoKElOVDMyICopR3VpZClbMV0gPT0gKChJTlQzMiAqKUNoZWNrR3VpZClbMV0pICYm DQo+ID4gKyAgICAgICAgKCgoSU5UMzIgKilHdWlkKVsyXSA9PSAoKElOVDMyICopQ2hlY2tHdWlk KVsyXSkgJiYNCj4gPiArICAgICAgICAoKChJTlQzMiAqKUd1aWQpWzNdID09ICgoSU5UMzIgKilD aGVja0d1aWQpWzNdKSkNCj4gPiArICAgIHsNCj4gPiArICAgICAgaWYgKEluc3RhbmNlID09IDAp IHsNCj4gPiArICAgICAgICBpZiAoUHBpRGVzY3JpcHRvciAhPSBOVUxMKSB7DQo+ID4gKyAgICAg ICAgICAqUHBpRGVzY3JpcHRvciA9IFRlbXBQdHI7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgICBpZiAoUHBpICE9IE5VTEwpIHsNCj4gPiArICAgICAgICAgICpQcGkgPSBUZW1w UHRyLT5QcGk7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIEluc3RhbmNlLS07DQo+ ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX05PVF9GT1VORDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gaW5z dGFsbHMgYSBub3RpZmljYXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgYmFjayB3aGVuIGEgZ2l2 ZW4NCj4gPiArICBpbnRlcmZhY2UgaXMgaW5zdGFsbGVkIG9yIHJlaW5zdGFsbGVkLiBUaGUgcHVy cG9zZSBvZiB0aGUgc2VydmljZSBpcyB0bw0KPiBwdWJsaXNoDQo+ID4gKyAgYW4gaW50ZXJmYWNl IHRoYXQgb3RoZXIgcGFydGllcyBjYW4gdXNlIHRvIGNhbGwgYWRkaXRpb25hbCBQUElzIHRoYXQg bWF5DQo+IG1hdGVyaWFsaXplIGxhdGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2Vydmlj ZXMgICAgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMNCj4g dGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0gTm90 aWZ5TGlzdCAgICAgICAgIFBvaW50ZXIgdG8gbGlzdCBvZiBEZXNjcmlwdG9ycyB0byBub3RpZnkg dXBvbi4NCj4gPiArICBAcGFyYW0gU2luZ2xlICAgICAgICAgICAgIFRSVUUgaWYgb25seSBzaW5n bGUgZW50cnkgaW4gdGhlIE5vdGlmeUxpc3QuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBGQUxTRSBpZiB0aGUgTm90aWZ5TGlzdCBpcyBlbmRlZCB3aXRoIGFuIGVudHJ5IHdoaWNo IGhhcyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9QRUlfUFBJX0RF U0NSSVBUT1JfVEVSTUlOQVRFX0xJU1QgZmxhZyBzZXQgaW4gaXRzDQo+IEZsYWdzIGZpZWxkLg0K PiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBpZiBzdWNjZXNzZnVs DQo+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgaWYgbm8gc3BhY2UgaW4gdGhl IGRhdGFiYXNlDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgaWYgbm90IGEg Z29vZCBkZXNjcmlwdG9yDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtJ bnRlcm5hbFBlaU5vdGlmeVBwaSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAg ICAgICAgICAgKipQZWlTZXJ2aWNlcywNCj4gPiArICBJTiBDT05TVCBFRklfUEVJX05PVElGWV9E RVNDUklQVE9SICAqTm90aWZ5TGlzdCwNCj4gPiArICBJTiBCT09MRUFOICAgICAgICAgICAgICAg ICAgICAgICAgICBTaW5nbGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBQRUlfQ09SRV9JTlNU QU5DRSAgICAgICAgICpQcml2YXRlRGF0YTsNCj4gPiArICBQRUlfQ0FMTEJBQ0tfTk9USUZZX0xJ U1QgICpDYWxsYmFja05vdGlmeUxpc3RQb2ludGVyOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgQ2FsbGJhY2tOb3RpZnlJbmRleDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgIExhc3RDYWxsYmFja05vdGlmeUNvdW50Ow0KPiA+ICsgIFBFSV9ESVNQQVRDSF9OT1RJ RllfTElTVCAgKkRpc3BhdGNoTm90aWZ5TGlzdFBvaW50ZXI7DQo+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICBEaXNwYXRjaE5vdGlmeUluZGV4Ow0KPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgTGFzdERpc3BhdGNoTm90aWZ5Q291bnQ7DQo+ID4gKw0KPiA+ICsgIGlmIChO b3RpZnlMaXN0ID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQcml2YXRlRGF0YSA9IFBFSV9DT1JFX0lOU1RB TkNFX0ZST01fUFNfVEhJUyAoUGVpU2VydmljZXMpOw0KPiA+ICsNCj4gPiArICBDYWxsYmFja05v dGlmeUxpc3RQb2ludGVyID0gJlByaXZhdGVEYXRhLT5QcGlEYXRhLkNhbGxiYWNrTm90aWZ5TGlz dDsNCj4gPiArICBDYWxsYmFja05vdGlmeUluZGV4ICAgICAgID0gQ2FsbGJhY2tOb3RpZnlMaXN0 UG9pbnRlci0+Q3VycmVudENvdW50Ow0KPiA+ICsgIExhc3RDYWxsYmFja05vdGlmeUNvdW50ICAg PSBDYWxsYmFja05vdGlmeUluZGV4Ow0KPiA+ICsNCj4gPiArICBEaXNwYXRjaE5vdGlmeUxpc3RQ b2ludGVyID0gJlByaXZhdGVEYXRhLT5QcGlEYXRhLkRpc3BhdGNoTm90aWZ5TGlzdDsNCj4gPiAr ICBEaXNwYXRjaE5vdGlmeUluZGV4ICAgICAgID0gRGlzcGF0Y2hOb3RpZnlMaXN0UG9pbnRlci0+ Q3VycmVudENvdW50Ow0KPiA+ICsgIExhc3REaXNwYXRjaE5vdGlmeUNvdW50ICAgPSBEaXNwYXRj aE5vdGlmeUluZGV4Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFRoaXMgaXMgbG9vcCBp bnN0YWxscyBhbGwgTm90aWZ5IGRlc2NyaXB0b3JzIGluIHRoZSBOb3RpZnlMaXN0LiAgSXQgaXMN Cj4gPiArICAvLyB0ZXJtaW5hdGVkIGJ5IHRoZSBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1RFUk1J TkFURV9MSVNUIGJlaW5nDQo+IHNldCBpbiB0aGUgbGFzdA0KPiA+ICsgIC8vIEVGSV9QRUlfTk9U SUZZX0RFU0NSSVBUT1IgaW4gdGhlIGxpc3QuDQo+ID4gKyAgLy8NCj4gPiArDQo+ID4gKyAgZm9y ICggOyA7KSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gSWYgc29tZSBvZiB0aGUgUFBJIGRh dGEgaXMgaW52YWxpZCByZXN0b3JlIG9yaWdpbmFsIE5vdGlmeSBQUEkgZGF0YWJhc2UNCj4gdmFs dWUNCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoKE5vdGlmeUxpc3QtPkZsYWdzICYgRUZJX1BF SV9QUElfREVTQ1JJUFRPUl9OT1RJRllfVFlQRVMpID09IDApIHsNCj4gPiArICAgICAgQ2FsbGJh Y2tOb3RpZnlMaXN0UG9pbnRlci0+Q3VycmVudENvdW50ID0gTGFzdENhbGxiYWNrTm90aWZ5Q291 bnQ7DQo+ID4gKyAgICAgIERpc3BhdGNoTm90aWZ5TGlzdFBvaW50ZXItPkN1cnJlbnRDb3VudCA9 IExhc3REaXNwYXRjaE5vdGlmeUNvdW50Ow0KPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiRVJST1IgLT4gTm90aWZ5UHBpOiAlZyAlcFxuIiwgTm90aWZ5TGlzdC0NCj4gPkd1aWQsIE5v dGlmeUxpc3QtPk5vdGlmeSkpOw0KPiA+ICsgICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1F VEVSOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlmICgoTm90aWZ5TGlzdC0+RmxhZ3Mg JiBFRklfUEVJX1BQSV9ERVNDUklQVE9SX05PVElGWV9DQUxMQkFDSykgIT0NCj4gMCkgew0KPiA+ ICsgICAgICBpZiAoQ2FsbGJhY2tOb3RpZnlJbmRleCA+PSBDYWxsYmFja05vdGlmeUxpc3RQb2lu dGVyLT5NYXhDb3VudCkgew0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgLy8gUnVuIG91 dCBvZiByb29tLCBhc3NlcnQuDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBBU1NFUlQg KENhbGxiYWNrTm90aWZ5SW5kZXggPCBDYWxsYmFja05vdGlmeUxpc3RQb2ludGVyLT5NYXhDb3Vu dCk7DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIENhbGxiYWNrTm90aWZ5TGlzdFBv aW50ZXItPk5vdGlmeVB0cnNbQ2FsbGJhY2tOb3RpZnlJbmRleF0uTm90aWZ5ID0NCj4gKEVGSV9Q RUlfTk9USUZZX0RFU0NSSVBUT1IgKilOb3RpZnlMaXN0Ow0KPiA+ICsgICAgICBDYWxsYmFja05v dGlmeUluZGV4Kys7DQo+ID4gKyAgICAgIENhbGxiYWNrTm90aWZ5TGlzdFBvaW50ZXItPkN1cnJl bnRDb3VudCsrOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgQVNTRVJUICgoTm90aWZ5 TGlzdC0+RmxhZ3MgJg0KPiBFRklfUEVJX1BQSV9ERVNDUklQVE9SX05PVElGWV9DQUxMQkFDSykg IT0gMCk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAi UmVnaXN0ZXIgUFBJIE5vdGlmeTogJWdcbiIsIE5vdGlmeUxpc3QtPkd1aWQpKTsNCj4gPiArDQo+ ID4gKyAgICBpZiAoU2luZ2xlKSB7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIC8vIE9ubHkg c2luZ2xlIGVudHJ5IGluIHRoZSBOb3RpZnlMaXN0Lg0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAg ICBicmVhazsNCj4gPiArICAgIH0gZWxzZSBpZiAoKE5vdGlmeUxpc3QtPkZsYWdzICYNCj4gRUZJ X1BFSV9QUElfREVTQ1JJUFRPUl9URVJNSU5BVEVfTElTVCkgPT0NCj4gPiArICAgICAgICAgICAg ICAgRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9URVJNSU5BVEVfTElTVCkNCj4gPiArICAgIHsNCj4g PiArICAgICAgLy8NCj4gPiArICAgICAgLy8gQ29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUg Tm90aWZ5IExpc3QuDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAg fQ0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBHbyB0byB0aGUgbmV4dCBkZXNjcmlw dG9yLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIE5vdGlmeUxpc3QrKzsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gUHJvY2VzcyBhbnkgY2FsbGJhY2sgbGV2ZWwgbm90aWZp ZXMgZm9yIGFsbCBwcmV2aW91c2x5IGluc3RhbGxlZCBQUElzLg0KPiA+ICsgIC8vDQo+ID4gKyAg UHJvY2Vzc05vdGlmeSAoDQo+ID4gKyAgICBQcml2YXRlRGF0YSwNCj4gPiArICAgIEVGSV9QRUlf UFBJX0RFU0NSSVBUT1JfTk9USUZZX0NBTExCQUNLLA0KPiA+ICsgICAgMCwNCj4gPiArICAgIFBy aXZhdGVEYXRhLT5QcGlEYXRhLlBwaUxpc3QuQ3VycmVudENvdW50LA0KPiA+ICsgICAgTGFzdENh bGxiYWNrTm90aWZ5Q291bnQsDQo+ID4gKyAgICBDYWxsYmFja05vdGlmeUxpc3RQb2ludGVyLT5D dXJyZW50Q291bnQNCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24g aW5zdGFsbHMgYSBub3RpZmljYXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgYmFjayB3aGVuIGEg Z2l2ZW4NCj4gPiArICBpbnRlcmZhY2UgaXMgaW5zdGFsbGVkIG9yIHJlaW5zdGFsbGVkLiBUaGUg cHVycG9zZSBvZiB0aGUgc2VydmljZSBpcyB0bw0KPiBwdWJsaXNoDQo+ID4gKyAgYW4gaW50ZXJm YWNlIHRoYXQgb3RoZXIgcGFydGllcyBjYW4gdXNlIHRvIGNhbGwgYWRkaXRpb25hbCBQUElzIHRo YXQgbWF5DQo+IG1hdGVyaWFsaXplIGxhdGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gUGVpU2Vy dmljZXMgICAgICAgIEFuIGluZGlyZWN0IHBvaW50ZXIgdG8gdGhlIEVGSV9QRUlfU0VSVklDRVMN Cj4gdGFibGUgcHVibGlzaGVkIGJ5IHRoZSBQRUkgRm91bmRhdGlvbi4NCj4gPiArICBAcGFyYW0g Tm90aWZ5TGlzdCAgICAgICAgIFBvaW50ZXIgdG8gbGlzdCBvZiBEZXNjcmlwdG9ycyB0byBub3Rp ZnkgdXBvbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgaWYg c3VjY2Vzc2Z1bA0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIGlmIG5vIHNw YWNlIGluIHRoZSBkYXRhYmFzZQ0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS IGlmIG5vdCBhIGdvb2QgZGVzY3JpcHRvcg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRUZJQVBJDQo+ID4gK1VuaXRUZXN0Tm90aWZ5UHBpICgNCj4gPiArICBJTiBDT05T VCBFRklfUEVJX1NFUlZJQ0VTICAgICAgICAgICAqKlBlaVNlcnZpY2VzLA0KPiA+ICsgIElOIENP TlNUIEVGSV9QRUlfTk9USUZZX0RFU0NSSVBUT1IgICpOb3RpZnlMaXN0DQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgcmV0dXJuIEludGVybmFsUGVpTm90aWZ5UHBpIChQZWlTZXJ2aWNlcywgTm90 aWZ5TGlzdCwgRkFMU0UpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArDQo+ID4gKyAg UHJvY2VzcyBub3RpZmljYXRpb25zLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gUHJpdmF0ZURhdGEg ICAgICAgIFBlaUNvcmUncyBwcml2YXRlIGRhdGEgc3RydWN0dXJlDQo+ID4gKyAgQHBhcmFtIE5v dGlmeVR5cGUgICAgICAgICBUeXBlIG9mIG5vdGlmeSB0byBmaXJlLg0KPiA+ICsgIEBwYXJhbSBJ bnN0YWxsU3RhcnRJbmRleCAgSW5zdGFsbCBCZWdpbm5pbmcgaW5kZXguDQo+ID4gKyAgQHBhcmFt IEluc3RhbGxTdG9wSW5kZXggICBJbnN0YWxsIEVuZGluZyBpbmRleC4NCj4gPiArICBAcGFyYW0g Tm90aWZ5U3RhcnRJbmRleCAgIE5vdGlmeSBCZWdpbm5pbmcgaW5kZXguDQo+ID4gKyAgQHBhcmFt IE5vdGlmeVN0b3BJbmRleCAgICBOb3RpZnkgRW5kaW5nIGluZGV4Lg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK1ZPSUQNCj4gPiArUHJvY2Vzc05vdGlmeSAoDQo+ID4gKyAgSU4gUEVJX0NPUkVfSU5T VEFOQ0UgICpQcml2YXRlRGF0YSwNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgTm90aWZ5 VHlwZSwNCj4gPiArICBJTiBJTlROICAgICAgICAgICAgICAgSW5zdGFsbFN0YXJ0SW5kZXgsDQo+ ID4gKyAgSU4gSU5UTiAgICAgICAgICAgICAgIEluc3RhbGxTdG9wSW5kZXgsDQo+ID4gKyAgSU4g SU5UTiAgICAgICAgICAgICAgIE5vdGlmeVN0YXJ0SW5kZXgsDQo+ID4gKyAgSU4gSU5UTiAgICAg ICAgICAgICAgIE5vdGlmeVN0b3BJbmRleA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIElOVE4g ICAgICAgICAgICAgICAgICAgICAgIEluZGV4MTsNCj4gPiArICBJTlROICAgICAgICAgICAgICAg ICAgICAgICBJbmRleDI7DQo+ID4gKyAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgKlNlYXJj aEd1aWQ7DQo+ID4gKyAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgKkNoZWNrR3VpZDsNCj4g PiArICBFRklfUEVJX05PVElGWV9ERVNDUklQVE9SICAqTm90aWZ5RGVzY3JpcHRvcjsNCj4gPiAr DQo+ID4gKyAgZm9yIChJbmRleDEgPSBOb3RpZnlTdGFydEluZGV4OyBJbmRleDEgPCBOb3RpZnlT dG9wSW5kZXg7IEluZGV4MSsrKSB7DQo+ID4gKyAgICBpZiAoTm90aWZ5VHlwZSA9PSBFRklfUEVJ X1BQSV9ERVNDUklQVE9SX05PVElGWV9DQUxMQkFDSykgew0KPiA+ICsgICAgICBOb3RpZnlEZXNj cmlwdG9yID0gUHJpdmF0ZURhdGEtDQo+ID5QcGlEYXRhLkNhbGxiYWNrTm90aWZ5TGlzdC5Ob3Rp ZnlQdHJzW0luZGV4MV0uTm90aWZ5Ow0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgTm90 aWZ5RGVzY3JpcHRvciA9IFByaXZhdGVEYXRhLQ0KPiA+UHBpRGF0YS5EaXNwYXRjaE5vdGlmeUxp c3QuTm90aWZ5UHRyc1tJbmRleDFdLk5vdGlmeTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAg ICBDaGVja0d1aWQgPSBOb3RpZnlEZXNjcmlwdG9yLT5HdWlkOw0KPiA+ICsNCj4gPiArICAgIGZv ciAoSW5kZXgyID0gSW5zdGFsbFN0YXJ0SW5kZXg7IEluZGV4MiA8IEluc3RhbGxTdG9wSW5kZXg7 IEluZGV4MisrKSB7DQo+ID4gKyAgICAgIFNlYXJjaEd1aWQgPSBQcml2YXRlRGF0YS0+UHBpRGF0 YS5QcGlMaXN0LlBwaVB0cnNbSW5kZXgyXS5QcGktPkd1aWQ7DQo+ID4gKyAgICAgIC8vDQo+ID4g KyAgICAgIC8vIERvbid0IHVzZSBDb21wYXJlR3VpZCBmdW5jdGlvbiBoZXJlIGZvciBwZXJmb3Jt YW5jZSByZWFzb25zLg0KPiA+ICsgICAgICAvLyBJbnN0ZWFkIHdlIGNvbXBhcmUgdGhlIEdVSUQg YXMgSU5UMzIgYXQgYSB0aW1lIGFuZCBicmFuY2gNCj4gPiArICAgICAgLy8gb24gdGhlIGZpcnN0 IGZhaWxlZCBjb21wYXJpc29uLg0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICBpZiAoKCgoSU5U MzIgKilTZWFyY2hHdWlkKVswXSA9PSAoKElOVDMyICopQ2hlY2tHdWlkKVswXSkgJiYNCj4gPiAr ICAgICAgICAgICgoKElOVDMyICopU2VhcmNoR3VpZClbMV0gPT0gKChJTlQzMiAqKUNoZWNrR3Vp ZClbMV0pICYmDQo+ID4gKyAgICAgICAgICAoKChJTlQzMiAqKVNlYXJjaEd1aWQpWzJdID09ICgo SU5UMzIgKilDaGVja0d1aWQpWzJdKSAmJg0KPiA+ICsgICAgICAgICAgKCgoSU5UMzIgKilTZWFy Y2hHdWlkKVszXSA9PSAoKElOVDMyICopQ2hlY2tHdWlkKVszXSkpDQo+ID4gKyAgICAgIHsNCj4g PiArICAgICAgICBERUJVRyAoKA0KPiA+ICsgICAgICAgICAgREVCVUdfSU5GTywNCj4gPiArICAg ICAgICAgICJOb3RpZnk6IFBQSSBHdWlkOiAlZywgUGVpbSBub3RpZnkgZW50cnkgcG9pbnQ6ICVw XG4iLA0KPiA+ICsgICAgICAgICAgU2VhcmNoR3VpZCwNCj4gPiArICAgICAgICAgIE5vdGlmeURl c2NyaXB0b3ItPk5vdGlmeQ0KPiA+ICsgICAgICAgICAgKSk7DQo+ID4gKyAgICAgICAgTm90aWZ5 RGVzY3JpcHRvci0+Tm90aWZ5ICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIChF RklfUEVJX1NFUlZJQ0VTICoqKUdldFBlaVNlcnZpY2VzVGFibGVQb2ludGVyICgpLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZ5RGVzY3JpcHRvciwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChQcml2YXRlRGF0YS0+UHBpRGF0YS5QcGlMaXN0LlBwaVB0 cnNbSW5kZXgyXS5QcGkpLT5QcGkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7 DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gK30NCj4gPiBkaWZmIC0t Z2l0IGEvVW5pdFRlc3RGcmFtZXdvcmtQa2cvVW5pdFRlc3RGcmFtZXdvcmtQa2cuZHNjDQo+IGIv VW5pdFRlc3RGcmFtZXdvcmtQa2cvVW5pdFRlc3RGcmFtZXdvcmtQa2cuZHNjDQo+ID4gaW5kZXgg YTc2ZTMxZDk3ZC4uODcyZDljMGQ4YyAxMDA2NDQNCj4gPiAtLS0gYS9Vbml0VGVzdEZyYW1ld29y a1BrZy9Vbml0VGVzdEZyYW1ld29ya1BrZy5kc2MNCj4gPiArKysgYi9Vbml0VGVzdEZyYW1ld29y a1BrZy9Vbml0VGVzdEZyYW1ld29ya1BrZy5kc2MNCj4gPiBAQCAtMzUsNiArMzUsNyBAQA0KPiA+ DQo+IFVuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZXJzaXN0ZW5jZUxpYlNp bXBsZUZpbGVTeXN0ZW0vVW4NCj4gaXRUZXN0UGVyc2lzdGVuY2VMaWJTaW1wbGVGaWxlU3lzdGVt LmluZg0KPiA+DQo+IFVuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3REZWJ1Z0Fz c2VydExpYi9Vbml0VGVzdERlYnVnQXNzDQo+IGVydExpYi5pbmYNCj4gPg0KPiBVbml0VGVzdEZy YW1ld29ya1BrZy9MaWJyYXJ5L1VuaXRUZXN0VWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliL1VuaXRU ZXN0DQo+IFVlZmlCb290U2VydmljZXNUYWJsZUxpYi5pbmYNCj4gPiArDQo+IFVuaXRUZXN0RnJh bWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi9Vbml0 VGVzDQo+IHRQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYi5pbmYNCj4gPg0KPiA+DQo+IFVuaXRU ZXN0RnJhbWV3b3JrUGtnL1Rlc3QvVW5pdFRlc3QvU2FtcGxlL1NhbXBsZVVuaXRUZXN0L1NhbXBs ZVVuaXQNCj4gVGVzdER4ZS5pbmYNCj4gPg0KPiBVbml0VGVzdEZyYW1ld29ya1BrZy9UZXN0L1Vu aXRUZXN0L1NhbXBsZS9TYW1wbGVVbml0VGVzdC9TYW1wbGVVbml0DQo+IFRlc3RQZWkuaW5mDQo+ ID4gZGlmZiAtLWdpdCBhL1VuaXRUZXN0RnJhbWV3b3JrUGtnL1VuaXRUZXN0RnJhbWV3b3JrUGtn SG9zdC5kc2MuaW5jDQo+IGIvVW5pdFRlc3RGcmFtZXdvcmtQa2cvVW5pdFRlc3RGcmFtZXdvcmtQ a2dIb3N0LmRzYy5pbmMNCj4gPiBpbmRleCA3ODY2YzM2ZTY2Li41MjE3ZGUzMWU0IDEwMDY0NA0K PiA+IC0tLSBhL1VuaXRUZXN0RnJhbWV3b3JrUGtnL1VuaXRUZXN0RnJhbWV3b3JrUGtnSG9zdC5k c2MuaW5jDQo+ID4gKysrIGIvVW5pdFRlc3RGcmFtZXdvcmtQa2cvVW5pdFRlc3RGcmFtZXdvcmtQ a2dIb3N0LmRzYy5pbmMNCj4gPiBAQCAtMjEsNiArMjEsNyBAQA0KPiA+DQo+IERlYnVnTGlifFVu aXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvUG9zaXgvRGVidWdMaWJQb3NpeC9EZWJ1Z0xpYlBv DQo+IHNpeC5pbmYNCj4gPg0KPiBNZW1vcnlBbGxvY2F0aW9uTGlifFVuaXRUZXN0RnJhbWV3b3Jr UGtnL0xpYnJhcnkvUG9zaXgvTWVtb3J5QWxsb2NhdGkNCj4gb25MaWJQb3NpeC9NZW1vcnlBbGxv Y2F0aW9uTGliUG9zaXguaW5mDQo+ID4NCj4gVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGlifFVuaXRU ZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RVZWZpQm9vdA0KPiBTZXJ2aWNlc1RhYmxl TGliL1VuaXRUZXN0VWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmluZg0KPiA+ICsNCj4gUGVpU2Vy dmljZXNUYWJsZVBvaW50ZXJMaWJ8VW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVz dFBlaVNlcnZpDQo+IGNlc1RhYmxlUG9pbnRlckxpYi9Vbml0VGVzdFBlaVNlcnZpY2VzVGFibGVQ b2ludGVyTGliLmluZg0KPiA+DQo+ID4gICBbQnVpbGRPcHRpb25zXQ0KPiA+ICAgICBHQ0M6Kl8q XypfQ0NfRkxBR1MgPSAtZm5vLXBpZQ0KPiANCj4gDQo+IA0KPiANCg0K