From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web11.5885.1619514510797204796 for ; Tue, 27 Apr 2021 02:08:31 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=eVDgJJRQ; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: tien.hock.loh@intel.com) IronPort-SDR: 5NV7hw/YgRg0bhCCFxcrvcQrkNBd/BQjSl6cmCVvmCuSiY+s5X37VE1zNE82/TWWkHvmTnYkJl r6BLsQiAAZgQ== X-IronPort-AV: E=McAfee;i="6200,9189,9966"; a="183613636" X-IronPort-AV: E=Sophos;i="5.82,254,1613462400"; d="scan'208";a="183613636" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2021 02:08:26 -0700 IronPort-SDR: oGyuixwM7wwivvU43K7Zb+Igk4oDWygEkKH46Zq643JKLt3U0wchHHpW/dgiS6+C4WoiZJ1e81 HmOJdj9rUY4w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,254,1613462400"; d="scan'208";a="457536483" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga002.fm.intel.com with ESMTP; 27 Apr 2021 02:08:25 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 27 Apr 2021 02:08:25 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 27 Apr 2021 02:08:24 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Tue, 27 Apr 2021 02:08:24 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.173) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Tue, 27 Apr 2021 02:08:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i+7C+39BNy9hf0oRqJaEyLFhkp6VvGWFuLF2m8AsXdhzX+xmeTnrYVX5L3PLGjnZtRRb/YtXRudJ2ZVa9zu8hMX9/fAiY0oC387Jv938sf1ubxsesFxqZ897d5aJZdI5DJQ9ipwEagWF46M+8W1++Yhjj8eRj6ehTVR1GhQSGJS/80zZ7Vxotqzd9mXv8FDKVn2jYrGJalftECE+s1AO8swKd8y56oEUPE26EuHkBSG1FS3Ol6iODFFBNRtiBkvZmFoczrxjZF4+c0yd5bstWSmVaLGVPrXL+OPS6LkGkNV2vlVe6QdtahW+sm+zhIPJplFQqU80pOQ+5c5KMDDmaQ== 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-SenderADCheck; bh=d91sDtSvBlpCfrKAf71Rg/s3e5rLDmXJubitVOpM8eE=; b=iyUIFbp/y3Bb3VbV8tLqmvDFSODq4aAucKpJznUXWG0jNDqD2oiFX4FwFD0GppNYPWWnINE+SuQNlvVxC1Ogc1LgMt2fflnuUKoc7KFUKLpiLt6kFPMTKsXBjl/HFXIV0+j9eY5QmDwQLSe8MPN6feiYlZk+8FIDYHfZyXzybr6/YDAkbKCK7VTY+TtnDBss3w8UchAsiBCC8KzzFTIlIuRHCJnyQBswaerCmaFDlugutWKKSpfTE2+3Te41rNWAjNFdj4JO3Rr2sH4+rCLNZjDtHxmCJFA8Mvc18mCe3FjdeEJHg5OiFrpm3dEgmO97rjdiHaGriV3NnuOskn9Xqw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d91sDtSvBlpCfrKAf71Rg/s3e5rLDmXJubitVOpM8eE=; b=eVDgJJRQiI07vyVJ9REEvTi8pIeZE4PMLeFzuiNAhbHRr4eN9EIlPWPYnN6h6rXFdeNCB3qSoc1d/0CGDjzcaE0Qvtcpr4LcsgDI7QNaBUrcoSPu/wnkaIfZQVFczhLLtsleLMVKZVCvs1UT76k1p6/V7BYRJ9bbfkFq6hadi10= Received: from SJ0PR11MB5136.namprd11.prod.outlook.com (2603:10b6:a03:2d1::18) by BYAPR11MB3063.namprd11.prod.outlook.com (2603:10b6:a03:89::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.20; Tue, 27 Apr 2021 09:08:18 +0000 Received: from SJ0PR11MB5136.namprd11.prod.outlook.com ([fe80::ac08:c378:ad50:dc67]) by SJ0PR11MB5136.namprd11.prod.outlook.com ([fe80::ac08:c378:ad50:dc67%7]) with mapi id 15.20.4087.025; Tue, 27 Apr 2021 09:08:18 +0000 From: "Loh, Tien Hock" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "thloh85@gmail.com" , Leif Lindholm , Ard Biesheuvel Subject: Re: [PATCH V5 1/1] EmbeddedPkg: DwMmcHcDxe: Add support for Designware SDMMC driver Thread-Topic: [PATCH V5 1/1] EmbeddedPkg: DwMmcHcDxe: Add support for Designware SDMMC driver Thread-Index: AQHXHsr8+cCyDCxc+UWpketwaiWuOaqPWDKAgDf0Z4CAAPmfoA== Date: Tue, 27 Apr 2021 09:08:18 +0000 Message-ID: References: <20210322032439.9312-1-tien.hock.loh@intel.com> <20210322032439.9312-2-tien.hock.loh@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [42.189.204.240] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f6634bb7-fd79-4282-3b47-08d9095bff98 x-ms-traffictypediagnostic: BYAPR11MB3063: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: t+WmBWyiTHia6UKrU+/ywbulvVvx1ZhoWfga25ot2Yd388R9R6+J62sX7SPFAWHWd5rPKpiDFp2OUnn0YpwIzNYuxNrak0XiMzmvznJwWccajXHQzD9m+UVAM+Jqi+Sgcn7198c8PqEpg2p9Q3IKv9ewBISs+zgaGczWzrwrcg6AnujueoruQbaLh9fGIXlgqOHEy8LCQtI7FUZq1HGUVtP1DHHmsSEJXP56GIV+NCAiKrGy0b+N7Cdgf4OHK9exLTRhCSQYtJTaFyrMqwcnqVWDMGVOJ9UAqIxV9kGPnfaNmxnw8Cc/oERzlWijE32A+mXZoElt+ay3xNMozChGO8H5hYSFR2Bdzt+WCAi0gxJUidOv2ayKLDA53Hi3ngDyLPce7R4j8y0kgbMtfzsUdN+1DpVagVKs6Zl8L9hrT01QAC/1lgsFjp1O7/9JlwZIQuIjrfbMebjerDHe2fzIZE2RxScaPHN5yoX2M/0e872Xe12HqZ5+kgiYddMwpGJIpMJGhDRiqk3ahwAQ+U09tbOqe9TNRrffyBv4UtENf0XpbcyhQIEthqONrIfqr/Kydl30xWYoEW1COrTevfVXiuXgNC1Z71tVQqxDuVNSi7j1APvo2FdzRD4fF26BuJw1psq5DaQsw0l8fiiMgNMsP20CNNSweF3Q6sGN9BdYIKGWA1RF+RYZHt1czzzD3x0f3z9edIpWMZ52+3ri064YTYUUqsg2b1dsGDszY83M+qPR5szbj9d9w44GQ0DdfY3q x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5136.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(366004)(346002)(376002)(396003)(136003)(39860400002)(478600001)(186003)(9686003)(316002)(966005)(53546011)(52536014)(26005)(19627235002)(16799955002)(15188155005)(86362001)(7696005)(76116006)(66556008)(5660300002)(83380400001)(66446008)(33656002)(64756008)(66946007)(66476007)(2906002)(30864003)(8676002)(110136005)(71200400001)(6506007)(54906003)(8936002)(4326008)(122000001)(38100700002)(55016002)(290074003)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?RG1FVkljNjFjMDhwRzZFUUlpTjNxVlE4UFhObE1obmtGdE1hVEw0a1hIb1E3?= =?utf-8?B?dXh2OHpSaXIwd0ZJaFZYR3hpSGgvWks2OVhvYlhoZ3ExOHlNT3FRYjdOU0xY?= =?utf-8?B?T2k1Szc0VHVCMGx5L2xNNmh2eFRnZnNTWE5PeXQxNmJ2RkZXMjVnVGZsVGZW?= =?utf-8?B?THd1b0FpdEZ2VEMxTzRVY2x1UDFKZWdMYnBYSHRlaWxDYlRPdHI0Uy9EY1lY?= =?utf-8?B?d0thSU54ekltaTg3d3FFMUx2UVd3ZEhMeFN6OS9MZENPZGVyT0tyYVlpK1lR?= =?utf-8?B?T2hlVjRSaDI3TmxYTmZhRGQ4OXEyT0s4TUtwOStpZVd4cGFNSi9qRG1pK0Qz?= =?utf-8?B?MDExOCtpZmZsSTcrUEY0enRaNnlwUjNsQk9ZSStwczF5UEFjMHppWU1sR1RF?= =?utf-8?B?N3VRT3JoamF1NlVVT1NLODd5NVdMSDEzK2YvTzA5RVViaG1sUFU3bE1VS0xD?= =?utf-8?B?K1dOdHIvMkZLeUhrNjBDYnZjWXp4cXdIZzF0amFyV1kzZlorY3FncVI4a1ZI?= =?utf-8?B?d2hNdHQ3a0xhZzdTUWZmdHQ0YW9ZYTgxckNRcUNUb0UweHZRU1ZhTkkwRXdF?= =?utf-8?B?L3RSWnNlZ0IvYUE5c3dUR2REaGlla1BZTE8vV3dPUEFsWWUrMklDaVg2ZGFK?= =?utf-8?B?VmdZZFQ3T3BmWjZPc2JPVXJKeDVuVTQ4enR0TTRqbmVOa0VnU2tXUkFzUDVp?= =?utf-8?B?VTIyYkptaFNTZXN3RVJKZ25jNVJEd0pLQVhFSXR4MTl4V1l5Qi8wUkZ0bCtX?= =?utf-8?B?OSt3SjlpK3YzZ2kzQzdTN242UjdScUlNbjdkMm9jN3JHN3JXN2dibGxpM3g3?= =?utf-8?B?ekVkSWpZdzAxLzExcUFUWmc5V1N3UUFRbFZuRC95Nll6N1Q3dW4yZ1NEanlI?= =?utf-8?B?VmhWYjFHNGg3Wks3bUZpMGdSeitNRGxLTFRkWkpEWU95eFM0b1RDUXJpdXZI?= =?utf-8?B?Vmt0TDlUSWl5QnNiV1g3dVZwNWc2VTRGR1QwL3FNOUorVmM5WnJHYmd0bEwr?= =?utf-8?B?RTU3MTFZN0FpYXEvUXppNVRZTTNscGozSHFiR09MTmJZOEVyYndPVGJNTnpx?= =?utf-8?B?Y1QxbWtZbjNQMmZjZWJDQ1B4NTVvYllRa1NpVXJQMmM2NXphUm9NU292V1FK?= =?utf-8?B?RkZoakpmS0ljQTRNZEpSVDFNR0dUSzZ1RVR1aGx5N0FvOFNhSlRXMDYrNTRY?= =?utf-8?B?c1piUkV4WEZzRGxJb3hhMzVTc2tYTTVTMXhDZ3FDSjg0bVNjQW81NkNhd0Yw?= =?utf-8?B?bVRQV1I3Nm1yMGZiOTUwOXl1Qk5kZXgrVUhobzl5MHp4dUt0d2s2a2dld3V1?= =?utf-8?B?WmNYRzIrcmMrZmZxckNXQ2pzNm1nYlNyU0pQb1J3U2V6Z2RkdVo2S3BEeEMz?= =?utf-8?B?YnF2Y0tyV2huRWkyZEVVbkF5MTdWMGhTWnpOcEdOR2h0amlPRUdvZzF0RmNu?= =?utf-8?B?bVo2QjN6WEM0ZFpXbE9qWll6S2RRQ2Erc2svUEpaMEZSdEdaT2VsNHJkdVdt?= =?utf-8?B?L1dBc25uVEVGSHFKVDdEbmFKbWExLzdPS3NkMDBpNUliV2tyOUIxY0VPSHM2?= =?utf-8?B?VjNLb3g0UEpsUU1sMW9sSFFmNlgwUjZnMWw0cTAwSXNxc1BHOGEyN1kyczh2?= =?utf-8?B?OGdaS0tRbnF0ZExZRjZFSVZJZndXWEpMcStlcUFySGUrSk9XeldyMG54OUky?= =?utf-8?B?RmVzUUlVdm1DSjlZTkRheXVVRFMwdFhMN2s2WmMrdG1WbllRWXEwWTdaSHI2?= =?utf-8?Q?yYxfrx2C/Rm4yLjq3hynMMdcFY6pKE9Xy02gqCe?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5136.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f6634bb7-fd79-4282-3b47-08d9095bff98 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Apr 2021 09:08:18.2664 (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: PDB8IhSrmtH1iJnfVlQY/uJIjQO6CJeIBNgE6T3ieOuI5dl9rvYgg6dTcmO2emUah3/o1FT5LT1DN0gP2EmShQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3063 Return-Path: tien.hock.loh@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWlrZQ0KDQpZZXMsIHRoZSBleGlzdGluZyBTZCBkcml2ZXIgaXMgdmVyeSB0aWdodGx5IGNv dXBsZWQgd2l0aCBQQ0kgSU8gc3RydWN0LCB0aHVzIHRoZSByZWFzb24gZm9yIGEgbmV3IGRyaXZl ci4gDQpJIGNhbiBhdHRlbXB0IHRvIHJlZmFjdG9yIHRoZSBQY2kvU2RNbWNQY2lIY0R4ZSBhbmQg bWFrZSBQQ0kgYW5kIE1taW8gYSBsaWJyYXJ5IGlmIHRoYXQncyB0aGUgYmVzdCByb3V0ZS4gSSBy ZW1lbWJlciBJIHRyaWVkIGJyaWVmbHkgdG8gcmVmYWN0b3IgdGhlIGNvZGUgYnV0IGl0IHdhcyBx dWl0ZSBhIGJpdCBvZiB3b3JrLg0KDQpMZXQgbWUgZ2l2ZSBpdCBhbm90aGVyIGdvLCBhbmQgZ2V0 IGJhY2sgdG8geW91LiANCg0KVGhhbmtzLg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiBTZW50OiBUdWVzZGF5LCBBcHJpbCAyNywgMjAyMSAxOjU0IEFNDQo+IFRvOiBMb2gsIFRp ZW4gSG9jayA8dGllbi5ob2NrLmxvaEBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsN Cj4gS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzog dGhsb2g4NUBnbWFpbC5jb207IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPjsgQXJk IEJpZXNoZXV2ZWwNCj4gPGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmc+DQo+IFN1YmplY3Q6IFJF OiBbUEFUQ0ggVjUgMS8xXSBFbWJlZGRlZFBrZzogRHdNbWNIY0R4ZTogQWRkIHN1cHBvcnQgZm9y DQo+IERlc2lnbndhcmUgU0RNTUMgZHJpdmVyDQo+IA0KPiBJIHNlZSB0aGUgTWRlTW9kdWxlUGtn IGhhcyB0aGUgU2RNbWNQY2lIY0R4ZSBtb2R1bGUgYW5kIGl0IHVzZXMgdGhlDQo+IEVESyBJSSBT RCBNTUMgT3ZlcnJpZGUNCj4gUHJvdG9jb2wgZm9yIGhvc3QgY29udHJvbGxlciBzcGVjaWZpYyBi ZWhhdmlvcnMuICBXaHkgd2FzIHRoaXMgZHJpdmVyIGFuZCBhbg0KPiBpbXBsZW1lbnRhdGlvbg0K PiBvZiB0aGUgRURLIElJIFNEIE1NQyBPdmVycmlkZSBQcm90b2NvbCBmb3IgdGhlIERlc2lnbldh cmUgTU1DIEhDIG5vdA0KPiB1c2VkPw0KPiANCj4gSWYgdGhlcmUgaXMgYSBnb29kIHJlYXNvbiB0 aGF0IHRoaXMgZXhpdGluZyBtb2R1bGUgYW5kIG92ZXJyaWRlIGV4dGVuc2lvbnMgY2FuDQo+IG5v dCBiZSB1c2VkLA0KPiB0aGVuIHBsZWFzZSBhZGQgdGhhdCBiYWNrZ3JvdW5kIGFuZCBhbmFseXNp cyB0byB0aGUgQlouDQo+IA0KPiBJIHNlZSB0aGUgZXhpc3RpbmcgbW9kdWxlIGlzIFBDSSBhbmQg SSB0aGluayB0aGlzIG5ldyBvbmUgaXMgZm9yIGEgTU1JTyBiYXNlZA0KPiBkZXZpY2UNCj4gdGhh dCByZXF1aXJlcyBkaWZmZXJlbnQgRE1BIHNlcnZpY2VzLiAgSXMgdGhpcyBjb3JyZWN0PyAgSSBh bSB3b25kZXJpbmcgaWYgdGhlcmUNCj4gaXMNCj4gYSB3YXkgdG8gaW1wbGVtZW50IHQgYSBzaW5n bGUgVUVGSSBEcml2ZXIgc291cmNlcyB0aGF0IGNhbiBzdXBwb3J0IGEgZGV2aWNlDQo+IHRoYXQg aXMNCj4gd2l0aCBQQ0kgb3IgTU1JTz8NCj4gDQo+IElmIGEgbmV3IGRyaXZlciBpcyByZXF1aXJl ZCwgdGhlbiBoZXJlIGlzIHNvbWUgbW9yZSBzcGVjaWZpYyBjb2RlIHJldmlldw0KPiBmZWVkYmFj azoNCj4gDQo+IDEpIEVtYmVkZGVkUGtnL0luY2x1ZGUvUHJvdG9jb2wvUGxhdGZvcm1Td01tYy5o DQo+IA0KPiAgICBUaGUgZW51bSBFRklfU0RfTU1DX1NMT1RfVFlQRSBjYW4gbm90IGJlaW5nIHdp dGggRUZJXyB1bmxlc3MgaXMgcGFydA0KPiBvZiB0aGUgVUVGSSBTcGVjLg0KPiAgICBUaGlzIGZp bGUgYXBwZWFycyB0byBiZSBzcGVjaWZpYyB0byBEVywgc28gcGVyaGFwcyBpdCBzaG91bGQgYmUg cHJlZml4ZWQgd2l0aA0KPiBEV18gaW5zdGVhZA0KPiAgICB0byBtYXRjaCB0aGUgdXNhZ2Ugb2Yg RFdfTU1DX0hDX1NMT1RfQ0FQLg0KPiANCj4gICAgVGhlIHNhbWUgY29tbWVudCBhcHBsaWVzIHRv IFNEX01NQ19DQVJEX1RZUEUuICBTaG91bGQgdGhhdCBiZQ0KPiBEV19TRF9NTUNfQ0FSRF9UWVBF Pw0KPiANCj4gDQo+IDIpIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZQ0KPiAgICBhKSBU aGVyZSBpcyBhIHBhY2thZ2UgLmRlYyBmaWxlIGluIHRoaXMgZGlyZWN0b3J5LiAgUGFja2FnZXMg Y2FuIG5ldmVyIGJlDQo+IG5lc3RlZC4gQW55DQo+ICAgICAgIGludGVyZmFjZXMgdGhhdCBuZWVk IHRvIGJlIGV4cG9ydGVkIGZyb20gdGhlIEVtYmVkZGVkUGtnIHNob3VsZCBiZQ0KPiBkZWNsYXJl ZCBpbg0KPiAgICAgICBFbWJlZGRlZFBrZy5kZWMgYW5kIER3TW1jRGNEeGUuZGVjIHNob3VsZCBi ZSByZW1vdmVkLg0KPiAgICBiKSBEd01tY0RjRHhlLmRlYyBkZWNsYXJlZCBhIHRva2VuIHNwYWNl IEdVSUQsIGJ1dCB0aGVyZSBhcmUgbm90IFBDRHMuDQo+IEkgdGhpbmsgdGhpcyBHVUlEDQo+ICAg ICAgIGNhbiBiZSByZW1vdmVkLg0KPiAgICBjKSBEd01tY0RjRHhlLmluZi4gIFJlbW92ZSByZWZl cmVuY2UgdG8gRHdNbWNEY0R4ZS5kZWMuICBBbHNvLCBpcyB0aGlzDQo+IFVFRkkgRHJpdmVyIHJl YWxseQ0KPiAgICAgICBBUk0gc3BlY2lmaWM/ICBXaHkgaXMgdGhlcmUgYSBkZXBlbmRlbmN5IG9u IEFybVBrZy9Bcm1Qa2cuZGVjPyAgQ2FuDQo+IHRoYXQgYmUgcmVtb3ZlZD8NCj4gICAgICAgQ2Fu IHRoZSBkZXBlbmRlbmN5IG9uIEFybUxpYiBiZSByZW1vdmVkPw0KPiANCj4gMykgSSBzZWUgdXNl IG9mICNpZmRlZiBpbiB0aGUgRHdNbWNIY2kuaCBmaWxlLiAgVGhpcyBpcyBoaWdobHkgZGlzY291 cmFnZWQuICBXaHkNCj4gYXJlDQo+ICAgIHRob3NlIHRoZXJlIGFuZCB3aHkgbm90IHVzZSBmZWF0 dXJlZCBmbGFncyBQQ0QgaW5zdGVhZD8gIElmIGl0IGlzIHJlbGF0ZWQgdG8NCj4gdGhlDQo+ICAg IFBDSSB2cyBNTUlPIHJlZ2lzdGVyIG1hcHBpbmcsIHRoZW4gcGVyaGFwcyB0aGUgUENJIHJlbGF0 ZWQgY29udGVudCBjYW4NCj4gYmUgcmVtb3ZlZA0KPiAgICBmcm9tIHRoaXMgTU1JTyBzcGVjaWZp YyBkcml2ZXI/DQo+IA0KPiBCZXN0IHJlZ2FyZHMsDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogTG9oLCBUaWVuIEhvY2sgPHRpZW4uaG9j ay5sb2hAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFN1bmRheSwgTWFyY2ggMjEsIDIwMjEgODoyNSBQ TQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiB0aGxvaDg1QGdtYWlsLmNv bTsgTG9oLCBUaWVuIEhvY2sgPHRpZW4uaG9jay5sb2hAaW50ZWwuY29tPjsgS2lubmV5LA0KPiBN aWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgTGVpZg0KPiA+IExpbmRob2xt IDxsZWlmQG51dmlhaW5jLmNvbT47IEFyZCBCaWVzaGV1dmVsDQo+IDxhcmRiK3RpYW5vY29yZUBr ZXJuZWwub3JnPg0KPiA+IFN1YmplY3Q6IFtQQVRDSCBWNSAxLzFdIEVtYmVkZGVkUGtnOiBEd01t Y0hjRHhlOiBBZGQgc3VwcG9ydCBmb3INCj4gRGVzaWdud2FyZSBTRE1NQyBkcml2ZXINCj4gPg0K PiA+IEZyb206ICJUaWVuIEhvY2ssIExvaCIgPHRpZW4uaG9jay5sb2hAaW50ZWwuY29tPg0KPiA+ DQo+ID4gVGhpcyBhZGRzIHN1cHBvcnQgZm9yIERlc2lnbndhcmUgU0RNTUMgZHJpdmVyLiBUaGUg U0RNTUMgZHJpdmVyDQo+IGRlcGVuZHMgb24NCj4gPiBNZGVNb2R1bGVQa2cvQnVzL1NkLywgYW5k IHByb2R1Y2VzDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MLiBUaGUNCj4gPiBkcml2 ZXIgdXNlcyBNTUlPIHRvIHJlYWQvd3JpdGUsIGFuZCB1c2VzDQo+ID4gZ0Vka2lpTm9uRGlzY292 ZXJhYmxlRGV2aWNlUHJvdG9jb2xHdWlkLiBQbGF0Zm9ybSBuZWVkcyB0byByZWdpc3Rlcg0KPiBk ZXZpY2UNCj4gPiB3aXRoIGdFZGtpaU5vbkRpc2NvdmVyYWJsZURldmljZVByb3RvY29sR3VpZC4N Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IExvaCBUaWVuIEhvY2sgPHRpZW4uaG9jay5sb2hAaW50 ZWwuY29tPg0KPiA+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4NCj4gPiBD YzogQXJkIEJpZXNoZXV2ZWwgPGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmc+DQo+ID4gLS0tDQo+ ID4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjRHhlLmRlYyAgfCAgIDQw ICsNCj4gPiAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuaW5mICB8 ICAgNzAgKw0KPiA+ICBFbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5o ICAgIHwgIDgxNw0KPiArKysrKysrKysrDQo+ID4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNI Y0R4ZS9Ed01tY0hjaS5oICAgICAgfCAgOTg1DQo+ICsrKysrKysrKysrKw0KPiA+ICBFbWJlZGRl ZFBrZy9JbmNsdWRlL1Byb3RvY29sL1BsYXRmb3JtRHdNbWMuaCAgIHwgICA3OSArDQo+ID4gIEVt YmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Db21wb25lbnROYW1lLmMgfCAgMjE0ICsrKw0K PiA+ICBFbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5jICAgIHwgMTI5 Ng0KPiArKysrKysrKysrKysrKysrDQo+ID4gIEVtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4 ZS9Ed01tY0hjaS5jICAgICAgfCAxNjAyDQo+ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gIEVt YmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9FbW1jRGV2aWNlLmMgICAgfCAxMDQyDQo+ICsr KysrKysrKysrKysNCj4gPiAgRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL1NkRGV2aWNl LmMgICAgICB8IDExMDUNCj4gKysrKysrKysrKysrKysNCj4gPiAgMTAgZmlsZXMgY2hhbmdlZCwg NzI1MCBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvRW1iZWRkZWRQa2cvRHJp dmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuZGVjDQo+IGIvRW1iZWRkZWRQa2cvRHJpdmVycy9E d01tY0hjRHhlL0R3TW1jSGNEeGUuZGVjDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLmNmODVjY2IxYTAzMA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4ZS5kZWMNCj4gPiBA QCAtMCwwICsxLDQwIEBADQo+ID4gKyMvKiogQGZpbGUNCj4gPiArIyBGcmFtZXdvcmsgTW9kdWxl IERldmVsb3BtZW50IEVudmlyb25tZW50IEluZHVzdHJ5IFN0YW5kYXJkcw0KPiA+ICsjDQo+ID4g KyMgVGhpcyBQYWNrYWdlIHByb3ZpZGVzIGhlYWRlcnMgYW5kIGxpYnJhcmllcyB0aGF0IGNvbmZv cm0gdG8gRUZJL1BJDQo+IEluZHVzdHJ5IHN0YW5kYXJkcy4NCj4gPiArIyBDb3B5cmlnaHQgKGMp IDIwMDcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAr IyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCwgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiA+ICsjDQo+ID4gKyMgICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUNCj4gYXZhaWxhYmxlIHVuZGVyDQo+ ID4gKyMgICAgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGlj aCBhY2NvbXBhbmllcyB0aGlzDQo+IGRpc3RyaWJ1dGlvbi4NCj4gPiArIyAgICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+ICsjICAgIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArIw0KPiA+ICsjICAgIFRI RSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMg SVMiDQo+IEJBU0lTLA0KPiA+ICsjICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gKyMN Cj4gPiArIyoqLw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgREVDX1NQRUNJRklDQVRJ T04gICAgICAgICAgICAgID0gMHgwMDAxMDAxOQ0KPiA+ICsgIFBBQ0tBR0VfTkFNRSAgICAgICAg ICAgICAgICAgICA9IER3TW1jSGNEeGVQa2cNCj4gPiArICBQQUNLQUdFX0dVSUQgICAgICAgICAg ICAgICAgICAgPSBlNzMwOTdjZS0xZmUyLTQxYTYtYTkzMC0zMTM2YmM2ZDIzZWYNCj4gPiArICBQ QUNLQUdFX1ZFUlNJT04gICAgICAgICAgICAgICAgPSAwLjENCj4gPiArDQo+ID4gKw0KPiA+DQo+ ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMNCj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gPiArIw0KPiA+ICsjIEluY2x1ZGUgU2Vj dGlvbiAtIGxpc3Qgb2YgSW5jbHVkZSBQYXRocyB0aGF0IGFyZSBwcm92aWRlZCBieSB0aGlzIHBh Y2thZ2UuDQo+ID4gKyMgICAgICAgICAgICAgICAgICAgQ29tbWVudHMgYXJlIHVzZWQgZm9yIEtl eXdvcmRzIGFuZCBNb2R1bGUgVHlwZXMuDQo+ID4gKyMNCj4gPiArIyBTdXBwb3J0ZWQgTW9kdWxl IFR5cGVzOg0KPiA+ICsjICBCQVNFIFNFQyBQRUlfQ09SRSBQRUlNIERYRV9DT1JFIERYRV9EUklW RVINCj4gRFhFX1JVTlRJTUVfRFJJVkVSIERYRV9TTU1fRFJJVkVSIERYRV9TQUxfRFJJVkVSIFVF RklfRFJJVkVSDQo+ID4gVUVGSV9BUFBMSUNBVElPTg0KPiA+ICsjDQo+ID4NCj4gKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIw0KPiA+ICsNCj4gPiArW0d1aWRzLmNvbW1vbl0NCj4gPiArICBn RHdNbWNIY0R4ZVRva2VuU3BhY2VHdWlkICAgICA9IHsgMHg1NzZjMTMyZSwgMHg3ZDUxLCAweDRh YmIsIHsNCj4gMHhiYywgMHg2MCwgMHgxMywgMHgwOCwgMHgwNCwgMHgwZSwgMHg5MCwgMHg5MiB9 fQ0KPiA+ICsNCj4gPiArW1Byb3RvY29scy5jb21tb25dDQo+ID4gKyAgZ1BsYXRmb3JtRHdNbWNQ cm90b2NvbEd1aWQgICAgPSB7IDB4MWQ2ZGZkZTUsIDB4NzZhNywgMHg0NDA0LCB7IDB4ODUsDQo+ IDB4NzQsIDB4N2EsIDB4ZGYsIDB4MWEsIDB4OGEsIDB4YTIsIDB4MGQgfX0NCj4gPiBkaWZmIC0t Z2l0IGEvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuaW5mDQo+IGIv RW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuaW5mDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRjZDA5NjBlZjljMw0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUv RHdNbWNIY0R4ZS5pbmYNCj4gPiBAQCAtMCwwICsxLDcwIEBADQo+ID4gKyMjIEBmaWxlDQo+ID4g KyMgIER3U2RNbWNIY0R4ZSBkcml2ZXIgaXMgdXNlZCB0byBtYW5hZ2UgdGhvc2UgaG9zdCBjb250 cm9sbGVycyB3aGljaA0KPiBjb21wbHkgd2l0aA0KPiA+ICsjICBEZXNpZ253YXJlIFNEIEhvc3Qg Q29udHJvbGxlci4NCj4gPiArIw0KPiA+ICsjICBJdCB3aWxsIHByb2R1Y2UgRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wgdG8gYWxsb3cgc2VuZGluZw0KPiBTRC9NTUMvZU1NQyBjbWRzDQo+ ID4gKyMgIHRvIHNwZWNpZmllZCBkZXZpY2VzIGZyb20gdXBwZXIgbGF5ZXIuDQo+ID4gKyMNCj4g PiArIyAgQ29weXJpZ2h0IChjKSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gKyMgIENvcHlyaWdodCAoQykgMjAxNiwgTWFydmVsbCBJbnRlcm5h dGlvbmFsIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMgIENvcHlyaWdodCAo YykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMNCj4g PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ICsj ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPiArIyAgd2hpY2ggYWNjb21wYW5pZXMg dGhpcyBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ IGZvdW5kIGF0DQo+ID4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyMgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ID4gKyMNCj4gPiArIw0KPiA+ICsjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNd DQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAxOQ0KPiA+ ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IER3TW1jSGNEeGUNCj4gPiArICBN T0RVTEVfVU5JX0ZJTEUgICAgICAgICAgICAgICAgPSBEd01tY0hjRHhlLnVuaQ0KPiA+ICsgIEZJ TEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDliZTRkMjYwLTIwOGMtNGVmZS1hNTI0LTBi NWQzYmY3N2Y5ZA0KPiA+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFVFRklf RFJJVkVSDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4g KyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gSW5pdGlhbGl6ZUR3TW1jSGNEeGUN Cj4gPiArDQo+ID4gK1tTb3VyY2VzXQ0KPiA+ICsgIENvbXBvbmVudE5hbWUuYw0KPiA+ICsgIER3 TW1jSGNEeGUuYw0KPiA+ICsgIER3TW1jSGNEeGUuaA0KPiA+ICsgIER3TW1jSGNpLmMNCj4gPiAr ICBEd01tY0hjaS5oDQo+ID4gKyAgRW1tY0RldmljZS5jDQo+ID4gKyAgU2REZXZpY2UuYw0KPiA+ ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIEFybVBrZy9Bcm1Qa2cuZGVjDQo+ID4gKyAgRW1i ZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuZGVjDQo+ID4gKyAgRW1iZWRk ZWRQa2cvRW1iZWRkZWRQa2cuZGVjDQo+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5k ZWMNCj4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlDbGFzc2Vz XQ0KPiA+ICsgIEFybUxpYg0KPiA+ICsgIEJhc2VMaWINCj4gPiArICBCYXNlTWVtb3J5TGliDQo+ ID4gKyAgQ2FjaGVNYWludGVuYW5jZUxpYg0KPiA+ICsgIERlYnVnTGliDQo+ID4gKyAgRGV2aWNl UGF0aExpYg0KPiA+ICsgIERtYUxpYg0KPiA+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gPiAr ICBUaW1lckxpYg0KPiA+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiA+ICsgIFVlZmlE cml2ZXJFbnRyeVBvaW50DQo+ID4gKyAgVWVmaUxpYg0KPiA+ICsgIFVlZmlSdW50aW1lU2Vydmlj ZXNUYWJsZUxpYg0KPiA+ICsNCj4gPiArW1Byb3RvY29sc10NCj4gPiArICBnRWRraWlOb25EaXNj b3ZlcmFibGVEZXZpY2VQcm90b2NvbEd1aWQNCj4gPiArICBnRWZpRGV2aWNlUGF0aFByb3RvY29s R3VpZCAgICAgICAgICAgICAgICAgICAgIyMgVE9fU1RBUlQNCj4gPiArICBnRWZpUGNpSW9Qcm90 b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgIyMgVE9fU1RBUlQNCj4gPiArICBnRWZp U2RNbWNQYXNzVGhydVByb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgIyMgQllfU1RBUlQNCj4g PiArICBnUGxhdGZvcm1Ed01tY1Byb3RvY29sR3VpZA0KPiA+ICsNCj4gPiArW1VzZXJFeHRlbnNp b25zLlRpYW5vQ29yZS4iRXh0cmFGaWxlcyJdDQo+ID4gKyAgRHdNbWNIY0R4ZUV4dHJhLnVuaQ0K PiA+IGRpZmYgLS1naXQgYS9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY0R4 ZS5oDQo+IGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuaA0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5iNzgzZDk4MzAz MjUNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01t Y0hjRHhlL0R3TW1jSGNEeGUuaA0KPiA+IEBAIC0wLDAgKzEsODE3IEBADQo+ID4gKy8qKiBAZmls ZQ0KPiA+ICsNCj4gPiArICBQcm92aWRlcyBzb21lIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb25z IHVzZWQgYnkgdGhlIERlc2lnbndhcmUNCj4gU0QvTU1DDQo+ID4gKyAgaG9zdCBjb250cm9sbGVy IGRyaXZlci4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChDKSAyMDE4 LCBMaW5hcm8gTHRkLiBBbGwgcmlndGhzIHJlc2VydmVkLjxCUj4NCj4gPiArDQo+ID4gKyAgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5k IG1hZGUNCj4gYXZhaWxhYmxlDQo+ID4gKyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcw0KPiB0aGlzDQo+ID4gKyAgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQN Cj4gPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ID4gKw0KPiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX0RXX01NQ19IQ19EWEVf SF8NCj4gPiArI2RlZmluZSBfRFdfTU1DX0hDX0RYRV9IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUg PFVlZmkuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiAr DQo+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9Db21wb25lbnROYW1lLmg+DQo+ID4gKyNpbmNsdWRl IDxQcm90b2NvbC9Db21wb25lbnROYW1lMi5oPg0KPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvRGV2 aWNlSW8uaD4NCj4gPiArI2luY2x1ZGUgPFByb3RvY29sL0RyaXZlckJpbmRpbmcuaD4NCj4gPiAr I2luY2x1ZGUgPFByb3RvY29sL1NkTW1jUGFzc1RocnUuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRl ICJEd01tY0hjaS5oIg0KPiA+ICsNCj4gPiArZXh0ZXJuIEVGSV9DT01QT05FTlRfTkFNRV9QUk9U T0NPTA0KPiBnRHdNbWNIY0NvbXBvbmVudE5hbWU7DQo+ID4gK2V4dGVybiBFRklfQ09NUE9ORU5U X05BTUUyX1BST1RPQ09MDQo+IGdEd01tY0hjQ29tcG9uZW50TmFtZTI7DQo+ID4gK2V4dGVybiBF RklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgIGdEd01tY0hjRHJpdmVyQmluZGluZzsNCj4gPiAr DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0hDX1BSSVZBVEVfU0lHTkFUVVJFICBTSUdOQVRVUkVfMzIg KCdkJywgJ3cnLCAncycsDQo+ICdkJykNCj4gPiArDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0hDX1BS SVZBVEVfRlJPTV9USElTKGEpIFwNCj4gPiArICAgIENSKGEsIERXX01NQ19IQ19QUklWQVRFX0RB VEEsIFBhc3NUaHJ1LA0KPiBEV19NTUNfSENfUFJJVkFURV9TSUdOQVRVUkUpDQo+ID4gKw0KPiA+ ICsvLw0KPiA+ICsvLyBHZW5lcmljIHRpbWUgb3V0IHZhbHVlLCAxIG1pY3Jvc2Vjb25kIGFzIHVu aXQuDQo+ID4gKy8vDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVCAgICAg KDEgKiAxMDAwICogMTAwMCkNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIFNEL01NQyBhc3luYyB0 cmFuc2ZlciB0aW1lciBpbnRlcnZhbCwgc2V0IGJ5IGV4cGVyaWVuY2UuDQo+ID4gKy8vIFRoZSB1 bml0IGlzIDEwMHVzLCB0YWtlcyAxbXMgYXMgaW50ZXJ2YWwuDQo+ID4gKy8vDQo+ID4gKyNkZWZp bmUgRFdfTU1DX0hDX0FTWU5DX1RJTUVSDQo+IEVGSV9USU1FUl9QRVJJT0RfTUlMTElTRUNPTkRT KDEpDQo+ID4gKy8vDQo+ID4gKy8vIFNEL01NQyByZW1vdmFibGUgZGV2aWNlIGVudW1lcmF0aW9u IHRpbWVyIGludGVydmFsLCBzZXQgYnkNCj4gZXhwZXJpZW5jZS4NCj4gPiArLy8gVGhlIHVuaXQg aXMgMTAwdXMsIHRha2VzIDEwMG1zIGFzIGludGVydmFsLg0KPiA+ICsvLw0KPiA+ICsjZGVmaW5l IERXX01NQ19IQ19FTlVNX1RJTUVSDQo+IEVGSV9USU1FUl9QRVJJT0RfTUlMTElTRUNPTkRTKDEw MCkNCj4gPiArDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBCT09MRUFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFbmFibGU7DQo+ID4gKyAgRUZJX1NEX01NQ19TTE9UX1RZUEUg ICAgICAgICAgICAgICAgU2xvdFR5cGU7DQo+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTWVkaWFQcmVzZW50Ow0KPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEluaXRpYWxpemVkOw0KPiA+ICsgIFNEX01NQ19DQVJEX1RZUEUgICAgICAg ICAgICAgICAgICAgIENhcmRUeXBlOw0KPiA+ICt9IERXX01NQ19IQ19TTE9UOw0KPiA+ICsNCj4g PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNpZ25hdHVyZTsNCj4gPiArDQo+ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZTsNCj4gPiArDQo+ID4gKyAgLy8gTW1pbyBiYXNl IGFkZHJlc3MNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZC YXNlOw0KPiA+ICsNCj4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICBQ YXNzVGhydTsNCj4gPiArDQo+ID4gKyAgUExBVEZPUk1fRFdfTU1DX1BST1RPQ09MICAgICAgICAg ICAgKlBsYXRmb3JtRHdNbWM7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBUaGUgZmllbGQgaXMgdXNl ZCB0byByZWNvcmQgdGhlIHByZXZpb3VzIHNsb3QgaW4gR2V0TmV4dFNsb3QoKS4NCj4gPiArICAv Lw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzU2xv dDsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEZvciBOb24tYmxvY2tpbmcgb3BlcmF0aW9uLg0KPiA+ ICsgIC8vDQo+ID4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXJF dmVudDsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEZvciBTZCByZW1vdmFibGUgZGV2aWNlIGVudW1l cmF0aW9uLg0KPiA+ICsgIC8vDQo+ID4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ29ubmVjdEV2ZW50Ow0KPiA+ICsgIExJU1RfRU5UUlkgICAgICAgICAgICAgICAgICAg ICAgICAgIFF1ZXVlOw0KPiA+ICsNCj4gPiArICBEV19NTUNfSENfU0xPVCAgICAgICAgICAgICAg ICAgICAgICBTbG90W0RXX01NQ19IQ19NQVhfU0xPVF07DQo+ID4gKyAgRFdfTU1DX0hDX1NMT1Rf Q0FQDQo+IENhcGFiaWxpdHlbRFdfTU1DX0hDX01BWF9TTE9UXTsNCj4gPiArICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhDdXJyZW50W0RXX01NQ19IQ19NQVhfU0xPVF07 DQo+ID4gKw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRy b2xsZXJWZXJzaW9uOw0KPiA+ICt9IERXX01NQ19IQ19QUklWQVRFX0RBVEE7DQo+ID4gKw0KPiA+ ICsjZGVmaW5lIERXX01NQ19IQ19UUkJfU0lHICAgICAgICAgICAgIFNJR05BVFVSRV8zMiAoJ0Qn LCAnVCcsICdSJywgJ0InKQ0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gVFJCIChUcmFuc2ZlciBS ZXF1ZXN0IEJsb2NrKSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgdGhlIGNtZCByZXF1ZXN0Lg0K PiA+ICsvLw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiA+ICsgIExJU1RfRU5UUlkgICAgICAgICAg ICAgICAgICAgICAgICAgIFRyYkxpc3Q7DQo+ID4gKw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNsb3Q7DQo+ID4gKyAgVUlOVDE2ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQmxvY2tTaXplOw0KPiA+ICsNCj4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhS VV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0Ow0KPiA+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpEYXRhOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERhdGFMZW47DQo+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmVhZDsNCj4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgICAgICAgICBEYXRh UGh5Ow0KPiA+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpEYXRhTWFw Ow0KPiA+ICsgIERXX01NQ19IQ19UUkFOU0ZFUl9NT0RFICAgICAgICAgICAgIE1vZGU7DQo+ID4g Kw0KPiA+ICsgIEVGSV9FVkVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50Ow0KPiA+ ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0ZWQ7DQo+ID4gKyAg VUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZW91dDsNCj4gPiArDQo+ID4g KyAgRFdfTU1DX0hDX0RNQV9ERVNDX0xJTkUgICAgICAgICAgICAgKkRtYURlc2M7DQo+ID4gKyAg RUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICAgICAgICAgRG1hRGVzY1BoeTsNCj4gPiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEbWFEZXNjUGFnZXM7DQo+ID4gKyAg Vk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRtYU1hcDsNCj4gPiArDQo+ID4g KyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlRmlmbzsNCj4gPiArICBC T09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VCRTsgICAgICAgICAgICAgICAg ICAvLyBCaWctZW5kaWFuDQo+ID4gKw0KPiA+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAg ICAgICAgICAgICpQcml2YXRlOw0KPiA+ICt9IERXX01NQ19IQ19UUkI7DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIERXX01NQ19IQ19UUkJfRlJPTV9USElTKGEpIFwNCj4gPiArICAgIENSKGEsIERXX01N Q19IQ19UUkIsIFRyYkxpc3QsIERXX01NQ19IQ19UUkJfU0lHKQ0KPiA+ICsNCj4gPiArLy8NCj4g PiArLy8gVGFzayBmb3IgTm9uLWJsb2NraW5nIG1vZGUuDQo+ID4gKy8vDQo+ID4gK3R5cGVkZWYg c3RydWN0IHsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWdu YXR1cmU7DQo+ID4gKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICAgICAgTGluazsN Cj4gPiArDQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvdDsN Cj4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0Ow0KPiA+ ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzU3RhcnQ7DQo+ID4gKyAg RUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQ7DQo+ID4gKyAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0cnlUaW1lczsNCj4gPiArICBCT09MRUFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZpbml0ZVdhaXQ7DQo+ID4gKyAgVk9JRCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKk1hcDsNCj4gPiArICBWT0lEICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqTWFwQWRkcmVzczsNCj4gPiArfSBEV19NTUNfSENfUVVF VUU7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBQcm90b3R5cGVzDQo+ID4gKy8vDQo+ID4gKy8q Kg0KPiA+ICsgIEV4ZWN1dGUgY2FyZCBpZGVudGlmaWNhdGlvbiBwcm9jZWR1cmUuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBEV19NTUNf SENfUFJJVkFURV9EQVRBDQo+IGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgIFRoZSBjYXJkIGlzIGlkZW50aWZpZWQgY29ycmVjdGx5Lg0KPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNhcmQgY2FuJ3QgYmUgaWRlbnRpZmllZC4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArKCpEV01N Q19DQVJEX1RZUEVfREVURUNUX1JPVVRJTkUpICgNCj4gPiArICBJTiBEV19NTUNfSENfUFJJVkFU RV9EQVRBICAgICAgICAgICAgICpQcml2YXRlDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFNlbmRzIFNEIGNvbW1hbmQgdG8gYW4gU0QgY2FyZCB0aGF0IGlzIGF0dGFjaGVkIHRv IHRoZSBTRCBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiArICBUaGUgUGFzc1RocnUoKSBmdW5jdGlv biBzZW5kcyB0aGUgU0QgY29tbWFuZCBzcGVjaWZpZWQgYnkgUGFja2V0IHRvDQo+IHRoZSBTRA0K PiA+ICsgIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QuDQo+ID4gKw0KPiA+ICsgIElmIFBhY2tldCBp cyBzdWNjZXNzZnVsbHkgc2VudCB0byB0aGUgU0QgY2FyZCwgdGhlbiBFRklfU1VDQ0VTUyBpcw0K PiByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgYSBkZXZpY2UgZXJyb3Igb2NjdXJzIHdoaWxl IHNlbmRpbmcgdGhlIFBhY2tldCwgdGhlbg0KPiBFRklfREVWSUNFX0VSUk9SIGlzDQo+ID4gKyAg cmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNsb3QgaXMgbm90IGluIGEgdmFsaWQgcmFuZ2Ug Zm9yIHRoZSBTRCBjb250cm9sbGVyLCB0aGVuDQo+ID4gKyAgRUZJX0lOVkFMSURfUEFSQU1FVEVS IGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBJZiBQYWNrZXQgZGVmaW5lcyBhIGRhdGEgY29t bWFuZCBidXQgYm90aCBJbkRhdGFCdWZmZXIgYW5kDQo+IE91dERhdGFCdWZmZXIgYXJlDQo+ID4g KyAgTlVMTCwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW1baW5dICAgICBUaGlzICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9T RF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgU2xvdCAgICAgICAgICAgVGhl IHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0by4NCj4gPiArICBAcGFyYW1baW4sb3V0XSBQ YWNrZXQgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIFNEIGNvbW1hbmQgZGF0YSBzdHJ1Y3R1cmUu DQo+ID4gKyAgQHBhcmFtW2luXSAgICAgRXZlbnQgICAgICAgICAgSWYgRXZlbnQgaXMgTlVMTCwg YmxvY2tpbmcgSS9PIGlzIHBlcmZvcm1lZC4gSWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFdmVudCBpcyBub3QgTlVMTCwgdGhlbiBub25ibG9ja2luZyBJL08gaXMNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtZWQsIGFuZCBFdmVudCB3 aWxsIGJlIHNpZ25hbGVkIHdoZW4gdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUGFja2V0IGNvbXBsZXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIFNEIENvbW1hbmQgUGFja2V0IHdhcyBzZW50IGJ5IHRoZQ0KPiBob3N0 Lg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIEEgZGV2aWNlIGVycm9yIG9j Y3VycmVkIHdoaWxlIGF0dGVtcHRpbmcNCj4gdG8gc2VuZA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoZSBTRCBjb21tYW5kIFBhY2tldC4NCj4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBQYWNrZXQsIFNsb3QsIG9yIHRoZSBjb250ZW50cyBvZiB0aGUN Cj4gUGFja2V0IGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxp ZC4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBQYWNrZXQgZGVmaW5lcyBh IGRhdGEgY29tbWFuZCBidXQNCj4gYm90aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluRGF0YUJ1ZmZlciBhbmQgT3V0RGF0YUJ1ZmZlciBhcmUgTlVMTC4NCj4gPiArICBA cmV0dmFsIEVGSV9OT19NRURJQSAgICAgICAgICBTRCBEZXZpY2Ugbm90IHByZXNlbnQgaW4gdGhl IFNsb3QuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIGNvbW1hbmQg ZGVzY3JpYmVkIGJ5IHRoZSBTRA0KPiBDb21tYW5kIFBhY2tldA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgY29udHJvbGxl ci4NCj4gPiArICBAcmV0dmFsIEVGSV9CQURfQlVGRkVSX1NJWkUgICBUaGUgSW5UcmFuc2Zlckxl bmd0aCBvcg0KPiBPdXRUcmFuc2Zlckxlbmd0aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4Y2VlZHMgdGhlIGxpbWl0IHN1cHBvcnRlZCBieSBTRCBjYXJkICggaS5lLiBp Zg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgYnl0 ZXMgZXhjZWVkIHRoZSBMYXN0IExCQSkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRV Uw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNQYXNzVGhydVBhc3NUaHJ1ICgNCj4gPiArICBJTiAg ICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgICAqVGhpcywNCj4gPiArICBJ TiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ICsg IElOIE9VVCBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgICpQYWNrZXQsDQo+ ID4gKyAgSU4gICAgIEVGSV9FVkVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQg ICAgT1BUSU9OQUwNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVXNlZCB0byBy ZXRyaWV2ZSBuZXh0IHNsb3QgbnVtYmVycyBzdXBwb3J0ZWQgYnkgdGhlIFNEIGNvbnRyb2xsZXIu IFRoZQ0KPiA+ICsgIGZ1bmN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGF2YWls YWJsZSBzbG90cyAocG9wdWxhdGVkIG9yDQo+ID4gKyAgbm90LXBvcHVsYXRlZCkuDQo+ID4gKw0K PiA+ICsgIFRoZSBHZXROZXh0U2xvdCgpIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmV4dCBzbG90 IG51bWJlciBvbiBhbiBTRA0KPiBjb250cm9sbGVyLg0KPiA+ICsgIElmIG9uIGlucHV0IFNsb3Qg aXMgMHhGRiwgdGhlbiB0aGUgc2xvdCBudW1iZXIgb2YgdGhlIGZpcnN0IHNsb3Qgb24gdGhlIFNE DQo+ID4gKyAgY29udHJvbGxlciBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgU2xvdCBp cyBhIHNsb3QgbnVtYmVyIHRoYXQgd2FzIHJldHVybmVkIG9uIGEgcHJldmlvdXMgY2FsbCB0bw0K PiA+ICsgIEdldE5leHRTbG90KCksIHRoZW4gdGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBuZXh0IHNs b3Qgb24gdGhlIFNEIGNvbnRyb2xsZXINCj4gaXMNCj4gPiArICByZXR1cm5lZC4NCj4gPiArDQo+ ID4gKyAgSWYgU2xvdCBpcyBub3QgMHhGRiBhbmQgU2xvdCB3YXMgbm90IHJldHVybmVkIG9uIGEg cHJldmlvdXMgY2FsbCB0bw0KPiA+ICsgIEdldE5leHRTbG90KCksIEVGSV9JTlZBTElEX1BBUkFN RVRFUiBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgU2xvdCBpcyB0aGUgc2xvdCBudW1i ZXIgb2YgdGhlIGxhc3Qgc2xvdCBvbiB0aGUgU0QgY29udHJvbGxlciwgdGhlbg0KPiA+ICsgIEVG SV9OT1RfRk9VTkQgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgIFRo aXMgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NTUNfUEFTU19USFJVX1BS T1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ ID4gKyAgQHBhcmFtW2luLG91dF0gU2xvdCAgICAgICAgICAgT24gaW5wdXQsIGEgcG9pbnRlciB0 byBhIHNsb3QgbnVtYmVyIG9uIHRoZSBTRA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRyb2xsZXIuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T24gb3V0cHV0LCBhIHBvaW50ZXIgdG8gdGhlIG5leHQgc2xvdCBudW1iZXIgb24NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29udHJvbGxlci4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbiBpbnB1dCB2YWx1ZSBvZiAweEZGIHJldHJp ZXZlcyB0aGUgZmlyc3Qgc2xvdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG51bWJlciBvbiB0aGUgU0QgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgVGhlIG5leHQgc2xvdCBudW1iZXIgb24gdGhlIFNEIGNvbnRyb2xs ZXINCj4gd2FzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQg aW4gU2xvdC4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGVyZSBhcmUg bm8gbW9yZSBzbG90cyBvbiB0aGlzIFNEDQo+IGNvbnRyb2xsZXIuDQo+ID4gKyAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgU2xvdCBpcyBub3QgMHhGRiBhbmQgU2xvdCB3YXMgbm90DQo+ IHJldHVybmVkIG9uIGENCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2 aW91cyBjYWxsIHRvIEdldE5leHRTbG90KCkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNQYXNzVGhydUdldE5leHRTbG90ICgNCj4gPiAr ICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgICpUaGlzLA0KPiA+ ICsgIElOIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlNsb3QNCj4g PiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVXNlZCB0byBhbGxvY2F0ZSBhbmQgYnVp bGQgYSBkZXZpY2UgcGF0aCBub2RlIGZvciBhbiBTRCBjYXJkIG9uIHRoZSBTRA0KPiA+ICsgIGNv bnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIFRoZSBCdWlsZERldmljZVBhdGgoKSBmdW5jdGlvbiBh bGxvY2F0ZXMgYW5kIGJ1aWxkcyBhIHNpbmdsZSBkZXZpY2Ugbm9kZQ0KPiA+ICsgIGZvciB0aGUg U0QNCj4gPiArICBjYXJkIHNwZWNpZmllZCBieSBTbG90Lg0KPiA+ICsNCj4gPiArICBJZiB0aGUg U0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xvdCBpcyBub3QgcHJlc2VudCBvbiB0aGUgU0QgY29udHJv bGxlciwgdGhlbg0KPiA+ICsgIEVGSV9OT1RfRk9VTkQgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ ICsgIElmIERldmljZVBhdGggaXMgTlVMTCwgdGhlbiBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMg cmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIHRoZXJlIGFyZSBub3QgZW5vdWdoIHJlc291cmNl cyB0byBhbGxvY2F0ZSB0aGUgZGV2aWNlIHBhdGggbm9kZSwgdGhlbg0KPiA+ICsgIEVGSV9PVVRf T0ZfUkVTT1VSQ0VTIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBPdGhlcndpc2UsIERldmlj ZVBhdGggaXMgYWxsb2NhdGVkIHdpdGggdGhlIGJvb3Qgc2VydmljZSBBbGxvY2F0ZVBvb2woKSwN Cj4gdGhlDQo+ID4gKyAgY29udGVudHMgb2YgRGV2aWNlUGF0aCBhcmUgaW5pdGlhbGl6ZWQgdG8g ZGVzY3JpYmUgdGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5DQo+ID4gKyAgU2xvdCwgYW5kIEVGSV9T VUNDRVNTIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICBUaGlzICAg ICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTU1DX1BBU1NfVEhSVV9QUk9UT0NP TA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsg IEBwYXJhbVtpbl0gICAgIFNsb3QgICAgICAgICAgIFNwZWNpZmllcyB0aGUgc2xvdCBudW1iZXIg b2YgdGhlIFNEIGNhcmQgZm9yDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2hpY2ggYSBkZXZpY2UgcGF0aCBub2RlIGlzIHRvIGJlIGFsbG9jYXRlZCBhbmQNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdC4NCj4gPiArICBAcGFyYW1baW4sb3V0 XSBEZXZpY2VQYXRoICAgICBBIHBvaW50ZXIgdG8gYSBzaW5nbGUgZGV2aWNlIHBhdGggbm9kZSB0 aGF0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSBT RCBjYXJkIHNwZWNpZmllZCBieSBTbG90LiBUaGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgdGhlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyIERldmljZVBhdGggd2l0 aCB0aGUgYm9vdCBzZXJ2aWNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QWxsb2NhdGVQb29sKCkuIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpLQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdHkgdG8gZnJlZSBEZXZpY2VQYXRoIHdoZW4g dGhlIGNhbGxlciBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlz aGVkIHdpdGggRGV2aWNlUGF0aC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgVGhlIGRldmljZSBwYXRoIG5vZGUgdGhhdCBkZXNjcmliZXMgdGhlIFNEDQo+IGNh cmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYnkgU2xv dCB3YXMgYWxsb2NhdGVkIGFuZCByZXR1cm5lZCBpbg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERldmljZVBhdGguDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAg ICAgICAgVGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QgZG9lcyBub3QNCj4gZXhpc3Qgb24N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0QgY29udHJvbGxlci4N Cj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBEZXZpY2VQYXRoIGlzIE5VTEwu DQo+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgVGhlcmUgYXJlIG5vdCBlbm91 Z2ggcmVzb3VyY2VzIHRvDQo+IGFsbG9jYXRlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRGV2aWNlUGF0aC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0VGSUFQSQ0KPiA+ICtEd01tY1Bhc3NUaHJ1QnVpbGREZXZpY2VQYXRoICgNCj4gPiArICBJ TiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgKlRoaXMsDQo+ID4gKyAg SU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4gKyAg SU4gT1VUIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICoqRGV2aWNlUGF0aA0K PiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHJldHJpZXZl cyBhbiBTRCBjYXJkIHNsb3QgbnVtYmVyIGJhc2VkIG9uIHRoZSBpbnB1dCBkZXZpY2UNCj4gcGF0 aC4NCj4gPiArDQo+ID4gKyAgVGhlIEdldFNsb3ROdW1iZXIoKSBmdW5jdGlvbiByZXRyaWV2ZXMg c2xvdCBudW1iZXIgZm9yIHRoZSBTRCBjYXJkDQo+IHNwZWNpZmllZA0KPiA+ICsgIGJ5IHRoZSBE ZXZpY2VQYXRoIG5vZGUuIElmIERldmljZVBhdGggaXMgTlVMTCwNCj4gRUZJX0lOVkFMSURfUEFS QU1FVEVSIGlzDQo+ID4gKyAgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIERldmljZVBhdGgg aXMgbm90IGEgZGV2aWNlIHBhdGggbm9kZSB0eXBlIHRoYXQgdGhlIFNEIFBhc3MgVGhydSBkcml2 ZXINCj4gPiArICBzdXBwb3J0cywgRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+ IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgRGV2aWNlUGF0aCAgICAg ICAgQSBwb2ludGVyIHRvIHRoZSBkZXZpY2UgcGF0aCBub2RlIHRoYXQNCj4gZGVzY3JpYmVzDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBTRCBjYXJkIG9uIHRoZSBTRCBj b250cm9sbGVyLg0KPiA+ICsgIEBwYXJhbVtvdXRdIFNsb3QgICAgICAgICAgICAgIE9uIHJldHVy biwgcG9pbnRzIHRvIHRoZSBzbG90IG51bWJlciBvZiBhbiBTRA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhcmQgb24gdGhlIFNEIGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFNEIGNhcmQgc2xvdCBudW1iZXIgaXMg cmV0dXJuZWQgaW4gU2xvdC4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBT bG90IG9yIERldmljZVBhdGggaXMgTlVMTC4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRF RCAgICAgICBEZXZpY2VQYXRoIGlzIG5vdCBhIGRldmljZSBwYXRoIG5vZGUNCj4gdHlwZSB0aGF0 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFNEIFBhc3MgVGhydSBk cml2ZXIgc3VwcG9ydHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtF RklBUEkNCj4gPiArRHdNbWNQYXNzVGhydUdldFNsb3ROdW1iZXIgKA0KPiA+ICsgIElOICBFRklf U0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICAgICAqVGhpcywNCj4gPiArICBJTiAgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAgICAgICAgKkRldmljZVBhdGgsDQo+ID4gKyAg T1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpTbG90DQo+ID4gKyAg KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlc2V0cyBhbiBTRCBjYXJkIHRoYXQgaXMgY29u bmVjdGVkIHRvIHRoZSBTRCBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiArICBUaGUgUmVzZXREZXZp Y2UoKSBmdW5jdGlvbiByZXNldHMgdGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QuDQo+ID4g Kw0KPiA+ICsgIElmIHRoaXMgU0QgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IGEgZGV2aWNl IHJlc2V0IG9wZXJhdGlvbiwNCj4gPiArICBFRklfVU5TVVBQT1JURUQgaXMgcmV0dXJuZWQuDQo+ ID4gKw0KPiA+ICsgIElmIFNsb3QgaXMgbm90IGluIGEgdmFsaWQgc2xvdCBudW1iZXIgZm9yIHRo aXMgU0QgY29udHJvbGxlciwNCj4gPiArICBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMgcmV0dXJu ZWQuDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBkZXZpY2UgcmVzZXQgb3BlcmF0aW9uIGlzIGNvbXBs ZXRlZCwgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0g IFRoaXMgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RI UlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5j ZS4NCj4gPiArICBAcGFyYW1baW5dICBTbG90ICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHNs b3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIGJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIFRoZSBTRCBjYXJkIHNwZWNpZmllZCBieSBTbG90IHdhcyByZXNldC4NCj4gPiArICBA cmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgU0QgY29udHJvbGxlciBkb2VzIG5vdCBz dXBwb3J0IGENCj4gZGV2aWNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXQgb3BlcmF0aW9uLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFNs b3QgbnVtYmVyIGlzIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9fTUVESUEgICAgICAg ICAgU0QgRGV2aWNlIG5vdCBwcmVzZW50IGluIHRoZSBTbG90Lg0KPiA+ICsgIEByZXR2YWwgRUZJ X0RFVklDRV9FUlJPUiAgICAgIFRoZSByZXNldCBjb21tYW5kIGZhaWxlZCBkdWUgdG8gYSBkZXZp Y2UNCj4gZXJyb3INCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQ SQ0KPiA+ICtEd01tY1Bhc3NUaHJ1UmVzZXREZXZpY2UgKA0KPiA+ICsgIElOIEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MICAgICAgICAgICAqVGhpcywNCj4gPiArICBJTiBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvdA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ ICsvLw0KPiA+ICsvLyBEcml2ZXIgbW9kZWwgcHJvdG9jb2wgaW50ZXJmYWNlcw0KPiA+ICsvLw0K PiA+ICsvKioNCj4gPiArICBUZXN0cyB0byBzZWUgaWYgdGhpcyBkcml2ZXIgc3VwcG9ydHMgYSBn aXZlbiBjb250cm9sbGVyLiBJZiBhIGNoaWxkIGRldmljZSBpcw0KPiA+ICsgIHByb3ZpZGVkLCBp dCBmdXJ0aGVyIHRlc3RzIHRvIHNlZSBpZiB0aGlzIGRyaXZlciBzdXBwb3J0cyBjcmVhdGluZyBh IGhhbmRsZQ0KPiA+ICsgIGZvciB0aGUgc3BlY2lmaWVkIGNoaWxkIGRldmljZS4NCj4gPiArDQo+ ID4gKyAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIHRoZSBkcml2ZXIgc3BlY2lmaWVk IGJ5IFRoaXMgc3VwcG9ydHMgdGhlDQo+ID4gKyAgZGV2aWNlIHNwZWNpZmllZCBieSBDb250cm9s bGVySGFuZGxlLiBEcml2ZXJzIHdpbGwgdHlwaWNhbGx5IHVzZSB0aGUgZGV2aWNlDQo+ID4gKyAg cGF0aCBhdHRhY2hlZCB0byBDb250cm9sbGVySGFuZGxlIGFuZC9vciB0aGUgc2VydmljZXMgZnJv bSB0aGUgYnVzIEkvTw0KPiA+ICsgIGFic3RyYWN0aW9uIGF0dGFjaGVkIHRvIENvbnRyb2xsZXJI YW5kbGUgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXINCj4gc3VwcG9ydHMNCj4gPiArICBDb250 cm9sbGVySGFuZGxlLiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgbWFueSB0aW1lcyBkdXJp bmcNCj4gcGxhdGZvcm0NCj4gPiArICBpbml0aWFsaXphdGlvbi4gSW4gb3JkZXIgdG8gcmVkdWNl IGJvb3QgdGltZXMsIHRoZSB0ZXN0cyBwZXJmb3JtZWQgYnkgdGhpcw0KPiA+ICsgIGZ1bmN0aW9u IG11c3QgYmUgdmVyeSBzbWFsbCwgYW5kIHRha2UgYXMgbGl0dGxlIHRpbWUgYXMgcG9zc2libGUg dG8NCj4gZXhlY3V0ZS4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIG11c3Qgbm90IGNoYW5nZSB0aGUg c3RhdGUgb2YgYW55IGhhcmR3YXJlIGRldmljZXMsIGFuZA0KPiB0aGlzDQo+ID4gKyAgZnVuY3Rp b24gbXVzdCBiZSBhd2FyZSB0aGF0IHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJI YW5kbGUNCj4gbWF5DQo+ID4gKyAgYWxyZWFkeSBiZSBtYW5hZ2VkIGJ5IHRoZSBzYW1lIGRyaXZl ciBvciBhIGRpZmZlcmVudCBkcml2ZXIuIFRoaXMNCj4gZnVuY3Rpb24NCj4gPiArICBtdXN0IG1h dGNoIGl0cyBjYWxscyB0byBBbGxvY2F0ZVBhZ2VzKCkgd2l0aCBGcmVlUGFnZXMoKSwgQWxsb2Nh dGVQb29sKCkNCj4gd2l0aA0KPiA+ICsgIEZyZWVQb29sKCksIGFuZCBPcGVuUHJvdG9jb2woKSB3 aXRoIENsb3NlUHJvdG9jb2woKS4NCj4gPiArICBTaW5jZSBDb250cm9sbGVySGFuZGxlIG1heSBo YXZlIGJlZW4gcHJldmlvdXNseSBzdGFydGVkIGJ5IHRoZSBzYW1lDQo+IGRyaXZlciwgaWYNCj4g PiArICBhIHByb3RvY29sIGlzIGFscmVhZHkgaW4gdGhlIG9wZW5lZCBzdGF0ZSwgdGhlbiBpdCBt dXN0IG5vdCBiZSBjbG9zZWQgd2l0aA0KPiA+ICsgIENsb3NlUHJvdG9jb2woKS4gVGhpcyBpcyBy ZXF1aXJlZCB0byBndWFyYW50ZWUgdGhlIHN0YXRlIG9mDQo+IENvbnRyb2xsZXJIYW5kbGUNCj4g PiArICBpcyBub3QgbW9kaWZpZWQgYnkgdGhpcyBmdW5jdGlvbi4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfRFJJ VkVSX0JJTkRJTkdfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBDb250cm9sbGVySGFuZGxlICAgICBU aGUgaGFuZGxlIG9mIHRoZSBjb250cm9sbGVyIHRvIHRlc3QuIFRoaXMNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgbXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wg aW50ZXJmYWNlIHRoYXQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dXBwbGllcyBhbiBJL08gYWJzdHJhY3Rpb24gdG8gdGhlIGRyaXZlci4NCj4gPiArICBAcGFyYW1b aW5dICBSZW1haW5pbmdEZXZpY2VQYXRoICBBIHBvaW50ZXIgdG8gdGhlIHJlbWFpbmluZyBwb3J0 aW9uIG9mDQo+IGENCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp Y2UgcGF0aC4gIFRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQgYnkNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgZHJpdmVycywgYW5kIGlzIG9wdGlvbmFsIGZv ciBidXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzLiBG b3IgYnVzIGRyaXZlcnMsIGlmIHRoaXMgcGFyYW1ldGVyDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaXMgbm90IE5VTEwsIHRoZW4gdGhlIGJ1cyBkcml2ZXIgbXVzdCBk ZXRlci0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5lIGlmIHRo ZSBidXMgY29udHJvbGxlciBzcGVjaWZpZWQgYnkNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlIGFuZCB0aGUgY2hpbGQgY29udHJvbGxlcg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSBSZW1h aW5pbmdEZXZpY2VQYXRoIGFyZSBib3RoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3VwcG9ydGVkIGJ5IHRoaXMgYnVzIGRyaXZlci4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkgQ29u dHJvbGxlckhhbmRsZQ0KPiBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIHN1cHBvcnRlZCBieSB0aGUNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMuDQo+ ID4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgICAgVGhlIGRldmljZSBzcGVjaWZp ZWQgYnkNCj4gQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIGFscmVhZHkgYmVpbmcgbWFuYWdl ZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBkcml2ZXIg c3BlY2lmaWVkIGJ5IFRoaXMuDQo+ID4gKyAgQHJldHZhbCBFRklfQUNDRVNTX0RFTklFRCAgICAg ICAgVGhlIGRldmljZSBzcGVjaWZpZWQgYnkNCj4gQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1haW5pbmdEZXZpY2VQYXRoIGlz IGFscmVhZHkgYmVpbmcgbWFuYWdlZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJ5IGEgZGlmZmVyZW50IGRyaXZlciBvciBhbiBhcHBsaWNhdGlvbiB0aGF0DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXMgZXhjbHVzaXZlIGFj Y2Vzcy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHkg bm90IGltcGxlbWVudGVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAg IFRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5DQo+IENvbnRyb2xsZXJIYW5kbGUgYW5kDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBu b3Qgc3VwcG9ydGVkIGJ5IHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcy4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMN Cj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNEcml2ZXJCaW5kaW5nU3VwcG9ydGVkICgNCj4gPiAr ICBJTiBFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgKlRoaXMsDQo+ID4gKyAgSU4gRUZJX0hB TkRMRSAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gKyAgSU4gRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICAgICpSZW1haW5pbmdEZXZpY2VQYXRoDQo+ID4gKyAgKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIFN0YXJ0cyBhIGRldmljZSBjb250cm9sbGVyIG9yIGEgYnVzIGNvbnRy b2xsZXIuDQo+ID4gKw0KPiA+ICsgIFRoZSBTdGFydCgpIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRv IGJlIGludm9rZWQgZnJvbSB0aGUgRUZJIGJvb3Qgc2VydmljZQ0KPiA+ICsgIENvbm5lY3RDb250 cm9sbGVyKCkuDQo+ID4gKyAgQXMgYSByZXN1bHQsIG11Y2ggb2YgdGhlIGVycm9yIGNoZWNraW5n IG9uIHRoZSBwYXJhbWV0ZXJzIHRvIFN0YXJ0KCkgaGFzDQo+IGJlZW4NCj4gPiArICBtb3ZlZCBp bnRvIHRoaXMgY29tbW9uIGJvb3Qgc2VydmljZS4gSXQgaXMgbGVnYWwgdG8gY2FsbCBTdGFydCgp IGZyb20gb3RoZXINCj4gPiArICBsb2NhdGlvbnMsDQo+ID4gKyAgYnV0IHRoZSBmb2xsb3dpbmcg Y2FsbGluZyByZXN0cmljdGlvbnMgbXVzdCBiZSBmb2xsb3dlZCBvciB0aGUgc3lzdGVtDQo+IGJl aGF2aW9yDQo+ID4gKyAgd2lsbCBub3QgYmUgZGV0ZXJtaW5pc3RpYy4NCj4gPiArICAxLiBDb250 cm9sbGVySGFuZGxlIG11c3QgYmUgYSB2YWxpZCBFRklfSEFORExFLg0KPiA+ICsgIDIuIElmIFJl bWFpbmluZ0RldmljZVBhdGggaXMgbm90IE5VTEwsIHRoZW4gaXQgbXVzdCBiZSBhIHBvaW50ZXIg dG8gYQ0KPiBuYXR1cmFsLQ0KPiA+ICsgICAgIGx5IGFsaWduZWQgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MLg0KPiA+ICsgIDMuIFByaW9yIHRvIGNhbGxpbmcgU3RhcnQoKSwgdGhlIFN1cHBvcnRl ZCgpIGZ1bmN0aW9uIGZvciB0aGUgZHJpdmVyIHNwZWNpZmllZA0KPiA+ICsgICAgIGJ5IFRoaXMg bXVzdCBoYXZlIGJlZW4gY2FsbGVkIHdpdGggdGhlIHNhbWUgY2FsbGluZyBwYXJhbWV0ZXJzLCBh bmQNCj4gPiArICAgICBTdXBwb3J0ZWQoKSBtdXN0IGhhdmUgcmV0dXJuZWQgRUZJX1NVQ0NFU1Mu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgIEEgcG9pbnRl ciB0byB0aGUNCj4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgQ29u dHJvbGxlckhhbmRsZSAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0byBzdGFydC4N Cj4gVGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSBt dXN0IHN1cHBvcnQgYSBwcm90b2NvbCBpbnRlcmZhY2UgdGhhdA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVzIGFuIEkvTyBhYnN0cmFjdGlvbiB0byB0aGUg ZHJpdmVyLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJlbWFpbmluZ0RldmljZVBhdGggIEEgcG9pbnRl ciB0byB0aGUgcmVtYWluaW5nIHBvcnRpb24gb2YNCj4gYQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRldmljZSBwYXRoLiAgVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3Jl ZCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBkcml2 ZXJzLCBhbmQgaXMgb3B0aW9uYWwgZm9yIGJ1cyBkcmktDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmVycy4gRm9yIGEgYnVzIGRyaXZlciwgaWYgdGhpcyBwYXJhbWV0 ZXIgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCB0aGVu IGhhbmRsZXMgZm9yIGFsbCB0aGUgY2hpbGRyZW4gb2YNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDb250cm9sbGVyIGFyZSBjcmVhdGVkIGJ5IHRoaXMgZHJpdmVyLg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgcGFyYW1ldGVy IGlzIG5vdCBOVUxMIGFuZCB0aGUgZmlyc3QNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBEZXZpY2UgUGF0aCBOb2RlIGlzIG5vdCB0aGUgRW5kIG9mIERldmljZQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGggTm9kZSwgdGhlbiBvbmx5 IHRoZSBoYW5kbGUgZm9yIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNoaWxkIGRldmljZSBzcGVjaWZpZWQgYnkgdGhlIGZpcnN0IERldmljZQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGggTm9kZSBvZiBSZW1haW5pbmdEZXZp Y2VQYXRoIGlzIGNyZWF0ZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBieSB0aGlzIGRyaXZlci4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJZiB0aGUgZmlyc3QgRGV2aWNlIFBhdGggTm9kZSBvZg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJlbWFpbmluZ0RldmljZVBhdGggaXMgdGhlIEVuZCBvZiBEZXZp Y2UgUGF0aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUsIG5v IGNoaWxkIGhhbmRsZSBpcyBjcmVhdGVkIGJ5IHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkcml2ZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgICAgIFRoZSBkZXZpY2Ugd2FzIHN0YXJ0ZWQuDQo+ID4gKyAgQHJldHZhbCBF RklfREVWSUNFX0VSUk9SICAgICAgICAgVGhlIGRldmljZSBjb3VsZCBub3QgYmUgc3RhcnRlZCBk dWUgdG8gYQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBl cnJvci4gQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9PVVRf T0ZfUkVTT1VSQ0VTICAgICBUaGUgcmVxdWVzdCBjb3VsZCBub3QgYmUNCj4gY29tcGxldGVkIGR1 ZSB0byBhDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFjayBvZiBy ZXNvdXJjZXMuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgICAgVGhlIGRy aXZlciBmYWlsZGVkIHRvIHN0YXJ0IHRoZSBkZXZpY2UuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr RUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNIY0RyaXZlckJpbmRpbmdTdGFydCAo DQo+ID4gKyAgSU4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiAr ICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gKyAg SU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAqUmVtYWluaW5nRGV2aWNlUGF0aA0K PiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTdG9wcyBhIGRldmljZSBjb250cm9s bGVyIG9yIGEgYnVzIGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIFRoZSBTdG9wKCkgZnVuY3Rp b24gaXMgZGVzaWduZWQgdG8gYmUgaW52b2tlZCBmcm9tIHRoZSBFRkkgYm9vdCBzZXJ2aWNlDQo+ ID4gKyAgRGlzY29ubmVjdENvbnRyb2xsZXIoKS4NCj4gPiArICBBcyBhIHJlc3VsdCwgbXVjaCBv ZiB0aGUgZXJyb3IgY2hlY2tpbmcgb24gdGhlIHBhcmFtZXRlcnMgdG8gU3RvcCgpIGhhcw0KPiBi ZWVuDQo+ID4gKyAgbW92ZWQgaW50byB0aGlzIGNvbW1vbiBib290IHNlcnZpY2UuIEl0IGlzIGxl Z2FsIHRvIGNhbGwgU3RvcCgpIGZyb20gb3RoZXINCj4gPiArICBsb2NhdGlvbnMsIGJ1dCB0aGUg Zm9sbG93aW5nIGNhbGxpbmcgcmVzdHJpY3Rpb25zIG11c3QgYmUgZm9sbG93ZWQgb3IgdGhlDQo+ ID4gKyAgc3lzdGVtIGJlaGF2aW9yIHdpbGwgbm90IGJlIGRldGVybWluaXN0aWMuDQo+ID4gKyAg MS4gQ29udHJvbGxlckhhbmRsZSBtdXN0IGJlIGEgdmFsaWQgRUZJX0hBTkRMRSB0aGF0IHdhcyB1 c2VkIG9uIGENCj4gcHJldmlvdXMNCj4gPiArICAgICBjYWxsIHRvIHRoaXMgc2FtZSBkcml2ZXIn cyBTdGFydCgpIGZ1bmN0aW9uLg0KPiA+ICsgIDIuIFRoZSBmaXJzdCBOdW1iZXJPZkNoaWxkcmVu IGhhbmRsZXMgb2YgQ2hpbGRIYW5kbGVCdWZmZXIgbXVzdCBhbGwgYmUgYQ0KPiB2YWxpZA0KPiA+ ICsgICAgIEVGSV9IQU5ETEUuIEluIGFkZGl0aW9uLCBhbGwgb2YgdGhlc2UgaGFuZGxlcyBtdXN0 IGhhdmUgYmVlbiBjcmVhdGVkDQo+IGluDQo+ID4gKyAgICAgdGhpcyBkcml2ZXIncyBTdGFydCgp IGZ1bmN0aW9uLCBhbmQgdGhlIFN0YXJ0KCkgZnVuY3Rpb24gbXVzdCBoYXZlIGNhbGxlZA0KPiA+ ICsgICAgIE9wZW5Qcm90b2NvbCgpIG9uIENvbnRyb2xsZXJIYW5kbGUgd2l0aCBhbiBBdHRyaWJ1 dGUgb2YNCj4gPiArICAgICBFRklfT1BFTl9QUk9UT0NPTF9CWV9DSElMRF9DT05UUk9MTEVSLg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8g dGhlDQo+IEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIENvbnRyb2xsZXJI YW5kbGUgIEEgaGFuZGxlIHRvIHRoZSBkZXZpY2UgYmVpbmcgc3RvcHBlZC4NCj4gVGhlIGhhbmRs ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3Qgc3VwcG9ydCBhIGJ1 cyBzcGVjaWZpYyBJL08gcHJvdG9jb2wgZm9yIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRyaXZlciB0byB1c2UgdG8gc3RvcCB0aGUgZGV2aWNlLg0KPiA+ICsgIEBw YXJhbVtpbl0gIE51bWJlck9mQ2hpbGRyZW4gIFRoZSBudW1iZXIgb2YgY2hpbGQgZGV2aWNlIGhh bmRsZXMgaW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGlsZEhhbmRs ZUJ1ZmZlci4NCj4gPiArICBAcGFyYW1baW5dICBDaGlsZEhhbmRsZUJ1ZmZlciBBbiBhcnJheSBv ZiBjaGlsZCBoYW5kbGVzIHRvIGJlIGZyZWVkLg0KPiBNYXkgYmUNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMIGlmIE51bWJlck9mQ2hpbGRyZW4gaXMgMC4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGRldmljZSB3YXMgc3Rv cHBlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBUaGUgZGV2aWNlIGNv dWxkIG5vdCBiZSBzdG9wcGVkIGR1ZSB0byBhDQo+IGRldmljZQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVycm9yLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNEcml2ZXJCaW5kaW5nU3RvcCAoDQo+ID4gKyAg SU4gIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAgICAgKlRoaXMsDQo+ID4gKyAgSU4gIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiArICBJTiAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZkNoaWxkcmVuLA0KPiA+ICsgIElO ICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICpDaGlsZEhhbmRsZUJ1ZmZlcg0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBFRkkgQ29tcG9uZW50IE5hbWUgRnVuY3Rp b25zDQo+ID4gKy8vDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlcyBhIFVuaWNvZGUgc3RyaW5n IHRoYXQgaXMgdGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiB0aGUgZHJpdmVyLg0KPiA+ICsNCj4g PiArICBUaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIGEg ZHJpdmVyIGluIHRoZSBmb3JtIG9mDQo+IGENCj4gPiArICBVbmljb2RlIHN0cmluZy4gSWYgdGhl IGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyBoYXMgYSB1c2VyIHJlYWRhYmxlIG5hbWUgaW4NCj4g PiArICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLCB0aGVuIGEgcG9pbnRlciB0 byB0aGUgZHJpdmVyIG5hbWUgaXMNCj4gPiArICByZXR1cm5lZCBpbiBEcml2ZXJOYW1lLCBhbmQg RUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuIElmIHRoZSBkcml2ZXINCj4gc3BlY2lmaWVkDQo+ID4g KyAgYnkgVGhpcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFu Z3VhZ2UsDQo+ID4gKyAgdGhlbiBFRklfVU5TVVBQT1JURUQgaXMgcmV0dXJuZWQuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbSAgVGhpc1tpbl0gICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4g RUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9UT0NPTCBvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtICBMYW5ndWFnZVtpbl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEgTnVs bC10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFycmF5IGluZGljYXRpbmcgdGhlIGxhbmd1YWdlLiBUaGlzIGlzIHRoZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlIG9mIHRoZSBkcml2ZXIgbmFt ZSB0aGF0IHRoZSBjYWxsZXIgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXF1ZXN0aW5nLCBhbmQgaXQgbXVzdCBtYXRjaCBvbmUgb2YgdGhlDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzIHNwZWNpZmllZCBpbiBTdXBwb3J0ZWRM YW5ndWFnZXMuIFRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJl ciBvZiBsYW5ndWFnZXMgc3VwcG9ydGVkIGJ5IGEgZHJpdmVyIGlzIHVwDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGRyaXZlciB3cml0ZXIuIExhbmd1YWdlIGlz IHNwZWNpZmllZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFJGQyA0 NjQ2IG9yIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGZvcm1hdC4NCj4gPiArDQo+ID4gKyAgQHBh cmFtICBEcml2ZXJOYW1lW291dF0gICAgICAgQSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIHN0cmlu ZyB0byByZXR1cm4uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBV bmljb2RlIHN0cmluZyBpcyB0aGUgbmFtZSBvZiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaW4gdGhlIGxhbmd1YWdlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IExhbmd1YWdl Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgVW5pY29k ZSBzdHJpbmcgZm9yIHRoZSBEcml2ZXIgc3BlY2lmaWVkIGJ5DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVGhpcyBhbmQgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5n dWFnZSB3YXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBp biBEcml2ZXJOYW1lLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiBMYW5ndWFnZSBpcyBOVUxMLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBEcml2ZXJOYW1lIGlzIE5VTEwuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1VO U1VQUE9SVEVEICAgICAgIFRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3QNCj4g c3VwcG9ydA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYW5ndWFn ZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2UuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRV Uw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNIY0NvbXBvbmVudE5hbWVHZXREcml2ZXJOYW1lICgN Cj4gPiArICBJTiAgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiAr ICBJTiAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgICAqTGFuZ3VhZ2UsDQo+ID4gKyAg T1VUIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgKipEcml2ZXJOYW1lDQo+ID4gKyAg KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlcyBhIFVuaWNvZGUgc3RyaW5nIHRo YXQgaXMgdGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiB0aGUNCj4gY29udHJvbGxlcg0KPiA+ICsg IHRoYXQgaXMgYmVpbmcgbWFuYWdlZCBieSBhIGRyaXZlci4NCj4gPiArDQo+ID4gKyAgVGhpcyBm dW5jdGlvbiByZXRyaWV2ZXMgdGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiB0aGUgY29udHJvbGxl ciBzcGVjaWZpZWQNCj4gYnkNCj4gPiArICBDb250cm9sbGVySGFuZGxlIGFuZCBDaGlsZEhhbmRs ZSBpbiB0aGUgZm9ybSBvZiBhIFVuaWNvZGUgc3RyaW5nLiBJZiB0aGUNCj4gPiArICBkcml2ZXIg c3BlY2lmaWVkIGJ5IFRoaXMgaGFzIGEgdXNlciByZWFkYWJsZSBuYW1lIGluIHRoZSBsYW5ndWFn ZQ0KPiBzcGVjaWZpZWQgYnkNCj4gPiArICBMYW5ndWFnZSwgdGhlbiBhIHBvaW50ZXIgdG8gdGhl IGNvbnRyb2xsZXIgbmFtZSBpcyByZXR1cm5lZCBpbg0KPiBDb250cm9sbGVyTmFtZSwNCj4gPiAr ICBhbmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuICBJZiB0aGUgZHJpdmVyIHNwZWNpZmllZCBi eSBUaGlzIGlzIG5vdA0KPiBjdXJyZW50bHkNCj4gPiArICBtYW5hZ2luZyB0aGUgY29udHJvbGxl ciBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQgQ2hpbGRIYW5kbGUsDQo+ID4gKyAg dGhlbiBFRklfVU5TVVBQT1JURUQgaXMgcmV0dXJuZWQuICBJZiB0aGUgZHJpdmVyIHNwZWNpZmll ZCBieSBUaGlzIGRvZXMNCj4gbm90DQo+ID4gKyAgc3VwcG9ydCB0aGUgbGFuZ3VhZ2Ugc3BlY2lm aWVkIGJ5IExhbmd1YWdlLCB0aGVuIEVGSV9VTlNVUFBPUlRFRCBpcw0KPiByZXR1cm5lZC4NCj4g PiArDQo+ID4gKyAgQHBhcmFtICBUaGlzW2luXSAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRo ZQ0KPiBFRklfQ09NUE9ORU5UX05BTUUyX1BST1RPQ09MIG9yDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0NPTVBPTkVOVF9OQU1FX1BST1RPQ09MIGluc3RhbmNlLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gIENvbnRyb2xsZXJIYW5kbGVbaW5dICBUaGUgaGFuZGxlIG9m IGEgY29udHJvbGxlciB0aGF0IHRoZSBkcml2ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzcGVjaWZpZWQgYnkgVGhpcyBpcyBtYW5hZ2luZy4gIFRoaXMgaGFuZGxlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBjb250cm9s bGVyIHdob3NlIG5hbWUgaXMgdG8gYmUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBDaGlsZEhhbmRsZVtpbl0gICAg ICAgVGhlIGhhbmRsZSBvZiB0aGUgY2hpbGQgY29udHJvbGxlciB0byByZXRyaWV2ZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuYW1lIG9mLiAgVGhpcyBpcyBhbiBv cHRpb25hbCBwYXJhbWV0ZXIgdGhhdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1heSBiZSBOVUxMLiAgSXQgd2lsbCBiZSBOVUxMIGZvciBkZXZpY2UNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzLiAgSXQgd2lsbCBhbHNvIGJlIE5VTEwg Zm9yIGEgYnVzIGRyaXZlcnMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aGF0IHdpc2ggdG8gcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGJ1cw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuICBJdCB3aWxsIG5vdCBiZSBOVUxMIGZv ciBhIGJ1cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciB0aGF0 IHdpc2hlcyB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiBhDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hpbGQgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBM YW5ndWFnZVtpbl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEgTnVsbC10ZXJtaW5hdGVkIEFTQ0lJ IHN0cmluZw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5IGluZGlj YXRpbmcgdGhlIGxhbmd1YWdlLiAgVGhpcyBpcyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsYW5ndWFnZSBvZiB0aGUgZHJpdmVyIG5hbWUgdGhhdCB0aGUgY2FsbGVy IGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGluZywgYW5k IGl0IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxhbmd1YWdlcyBzcGVjaWZpZWQgaW4gU3VwcG9ydGVkTGFuZ3VhZ2VzLiBUaGUNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgbGFuZ3VhZ2VzIHN1 cHBvcnRlZCBieSBhIGRyaXZlciBpcyB1cA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRvIHRoZSBkcml2ZXIgd3JpdGVyLiBMYW5ndWFnZSBpcyBzcGVjaWZpZWQgaW4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRkMgNDY0NiBvciBJU08gNjM5LTIg bGFuZ3VhZ2UgY29kZSBmb3JtYXQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQ29udHJvbGxlck5h bWVbb3V0XSAgIEEgcG9pbnRlciB0byB0aGUgVW5pY29kZSBzdHJpbmcgdG8NCj4gcmV0dXJuLg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgVW5pY29kZSBzdHJpbmcg aXMgdGhlIG5hbWUgb2YgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDaGlsZEhhbmRsZSBpbiB0aGUgbGFuZ3VhZ2Ugc3Bl Y2lmaWVkIGJ5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2Ug ZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgZHJpdmVyDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFRoaXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBVbmljb2RlIHN0cmluZyBmb3IgdGhlIHVzZXIg cmVhZGFibGUNCj4gbmFtZSBpbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2UgZm9yIHRoZQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhpcyB3YXMgcmV0 dXJuZWQgaW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZXJOYW1l Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBDb250cm9sbGVy SGFuZGxlIGlzIG5vdCBhIHZhbGlkDQo+IEVGSV9IQU5ETEUuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIENoaWxkSGFuZGxlIGlzIG5vdCBOVUxMIGFuZCBpdCBp cyBub3QgYQ0KPiB2YWxpZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVG SV9IQU5ETEUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIExh bmd1YWdlIGlzIE5VTEwuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIENvbnRyb2xsZXJOYW1lIGlzIE5VTEwuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1VO U1VQUE9SVEVEICAgICAgIFRoZSBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaXMgbm90DQo+IGN1 cnJlbnRseQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnaW5nIHRo ZSBjb250cm9sbGVyIHNwZWNpZmllZCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENvbnRyb2xsZXJIYW5kbGUgYW5kIENoaWxkSGFuZGxlLg0KPiA+ICsNCj4gPiArICBA cmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlz IGRvZXMgbm90DQo+IHN1cHBvcnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNDb21wb25lbnROYW1lR2V0 Q29udHJvbGxlck5hbWUgKA0KPiA+ICsgIElOICBFRklfQ09NUE9ORU5UX05BTUVfUFJPVE9DT0wg ICAgICpUaGlzLA0KPiA+ICsgIElOICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENv bnRyb2xsZXJIYW5kbGUsDQo+ID4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAg ICAgQ2hpbGRIYW5kbGUsIE9QVElPTkFMDQo+ID4gKyAgSU4gIENIQVI4ICAgICAgICAgICAgICAg ICAgICAgICAgICAgKkxhbmd1YWdlLA0KPiA+ICsgIE9VVCBDSEFSMTYgICAgICAgICAgICAgICAg ICAgICAgICAgICoqQ29udHJvbGxlck5hbWUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgQ3JlYXRlIGEgbmV3IFRSQiBmb3IgdGhlIFNEL01NQyBjbWQgcmVxdWVzdC4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01N Q19IQ19QUklWQVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAg ICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29t bWFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8uDQo+ID4gKyAgQHBhcmFt W2luXSBQYWNrZXQgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIFNEIGNvbW1hbmQgZGF0YSBzdHJ1 Y3R1cmUuDQo+ID4gKyAgQHBhcmFtW2luXSBFdmVudCAgICAgICAgICBJZiBFdmVudCBpcyBOVUxM LCBibG9ja2luZyBJL08gaXMgcGVyZm9ybWVkLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSWYgRXZlbnQgaXMgbm90IE5VTEwsIHRoZW4gbm9uYmxvY2tpbmcgSS9PIGlzDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtZWQsIGFuZCBFdmVudCB3aWxsIGJl IHNpZ25hbGVkIHdoZW4gdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNr ZXQgY29tcGxldGVzLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIENyZWF0ZWQgVHJiIG9yIE5VTEwu DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRFdfTU1DX0hDX1RSQiAqDQo+ID4gK0R3TW1jQ3JlYXRl VHJiICgNCj4gPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAgICAqUHJp dmF0ZSwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG90 LA0KPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICpQYWNrZXQs DQo+ID4gKyAgSU4gRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQNCj4g PiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnJlZSB0aGUgcmVzb3VyY2UgdXNlZCBi eSB0aGUgVFJCLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBw b2ludGVyIHRvIHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK1ZPSUQNCj4gPiArRHdNbWNGcmVlVHJiICgNCj4gPiArICBJTiBEV19NTUNfSENfVFJCICAg ICAgICAgICAqVHJiDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIENoZWNrIGlm IHRoZSBlbnYgaXMgcmVhZHkgZm9yIGV4ZWN1dGUgc3BlY2lmaWVkIFRSQi4NCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19Q UklWQVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAg ICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgZW52IGlzIHJlYWR5IGZvciBUUkIgZXhl Y3V0aW9uLg0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgVGhlIGVudiBpcyBub3Qg cmVhZHkgZm9yIFRSQiBleGVjdXRpb24uDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAg ICBTb21lIGVycm9zIGhhcHBlbi4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0R3TW1jQ2hlY2tUcmJFbnYgKA0KPiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEg ICAgICAgICAgICpQcml2YXRlLA0KPiA+ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAgICAg ICAgICAgICpUcmINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV2FpdCBmb3Ig dGhlIGVudiB0byBiZSByZWFkeSBmb3IgZXhlY3V0ZSBzcGVjaWZpZWQgVFJCLg0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hD X1BSSVZBVEVfREFUQQ0KPiBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAg ICAgIFRoZSBwb2ludGVyIHRvIHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ICsNCj4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBlbnYgaXMgcmVhZHkgZm9yIFRSQiBl eGVjdXRpb24uDQo+ID4gKyAgQHJldHZhbCBFRklfVElNRU9VVCAgICAgICBUaGUgZW52IGlzIG5v dCByZWFkeSBmb3IgVFJCIGV4ZWN1dGlvbiBpbiB0aW1lLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJz ICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4uDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJ X1NUQVRVUw0KPiA+ICtEd01tY1dhaXRUcmJFbnYgKA0KPiA+ICsgIElOIERXX01NQ19IQ19QUklW QVRFX0RBVEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ICsgIElOIERXX01NQ19IQ19UUkIgICAg ICAgICAgICAgICAgICAgICpUcmINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg RXhlY3V0ZSB0aGUgc3BlY2lmaWVkIFRSQi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQcml2 YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RBVEENCj4gaW5z dGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0 aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICBUaGUgVFJCIGlzIHNlbnQgdG8gaG9zdCBjb250cm9sbGVyIHN1Y2Nlc3NmdWxs eS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFNvbWUgZXJyb3MgaGFwcGVuIHdo ZW4gc2VuZGluZyB0aGlzIHJlcXVlc3QgdG8NCj4gdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBob3N0IGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtEd01tY0V4ZWNUcmIgKA0KPiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RB VEEgICAgICAgICAgICpQcml2YXRlLA0KPiA+ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAg ICAgICAgICAgICpUcmINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQ2hlY2sg dGhlIFRSQiBleGVjdXRpb24gcmVzdWx0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFByaXZh dGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiBpbnN0 YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRo ZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgIFRoZSBUUkIgaXMgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2 YWwgRUZJX05PVF9SRUFEWSAgICAgVGhlIFRSQiBpcyBub3QgY29tcGxldGVkIGZvciBleGVjdXRp b24uDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9zIGhhcHBlbiB3 aGVuIGV4ZWN1dGluZyB0aGlzIHJlcXVlc3QuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtEd01tY0NoZWNrVHJiUmVzdWx0ICgNCj4gPiArICBJTiBEV19NTUNfSENfUFJJ VkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBEV19NTUNfSENfVFJCICAg ICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFdhaXQgZm9yIHRoZSBUUkIgZXhlY3V0aW9uIHJlc3VsdC4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklWQVRFX0RB VEENCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBUaGUgcG9p bnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICBUaGUgVFJCIGlzIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS4NCj4g PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFNvbWUgZXJyb3MgaGFwcGVuIHdoZW4gZXhl Y3V0aW5nIHRoaXMgcmVxdWVzdC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0R3TW1jV2FpdFRyYlJlc3VsdCAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFU QSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAg ICAgICAgICAgKlRyYg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFeGVjdXRl IEVNTUMgZGV2aWNlIGlkZW50aWZpY2F0aW9uIHByb2NlZHVyZS4NCj4gPiArDQo+ID4gKyAgUmVm ZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40IGZvciBk ZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRl ciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiBpbnN0YW5jZS4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGVyZSBpcyBhIEVNTUMgY2FyZC4NCj4gPiAr ICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZXJlIGlzIG5vdCBhIEVNTUMgY2FyZC4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNJZGVudGlmaWNhdGlvbiAo DQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgICAqUHJpdmF0ZQ0K PiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFeGVjdXRlIEVNTUMgZGV2aWNlIGlk ZW50aWZpY2F0aW9uIHByb2NlZHVyZS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVj dHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRhaWxzLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1D X0hDX1BSSVZBVEVfREFUQQ0KPiBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICBUaGVyZSBpcyBhIEVNTUMgY2FyZC4NCj4gPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgIFRoZXJlIGlzIG5vdCBhIEVNTUMgY2FyZC4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2FyZElkZW50aWZpY2F0aW9uICgNCj4gPiArICBJTiBE V19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAgICpQcml2YXRlDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKyNlbmRpZiAvKiBfRFdfTU1DX0hDX0RYRV9IXyAqLw0KPiA+IGRpZmYgLS1naXQg YS9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuaA0KPiBiL0VtYmVkZGVk UGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjaS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjEyZWY1OGEzNzM2OA0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRHdNbWNIY2kuaA0K PiA+IEBAIC0wLDAgKzEsOTg1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsNCj4gPiArICBQcm92 aWRlcyBzb21lIGRhdGEgc3RydWN0dXJlIGRlZmluaXRpb25zIHVzZWQgYnkgdGhlIFNEL01NQyBo b3N0DQo+IGNvbnRyb2xsZXINCj4gPiArICBkcml2ZXIuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdo dCAoYykgMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlDQo+IGF2YWlsYWJsZQ0KPiA+ICsgIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21w YW5pZXMNCj4gdGhpcw0KPiA+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNU UklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4g PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ ICsjaWZuZGVmIF9EV19NTUNfSENJX0hfDQo+ID4gKyNkZWZpbmUgX0RXX01NQ19IQ0lfSF8NCj4g PiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NhY2hlTWFpbnRlbmFuY2VMaWIuaD4NCj4gPiAr I2luY2x1ZGUgPExpYnJhcnkvVGltZXJMaWIuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxQcm90 b2NvbC9QbGF0Zm9ybUR3TW1jLmg+DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBTRCBIb3N0IENv bnRyb2xsZXIgU2xvdEluZm8gUmVnaXN0ZXIgT2Zmc2V0DQo+ID4gKy8vDQo+ID4gKyNkZWZpbmUg RFdfTU1DX0hDX1NMT1RfT0ZGU0VUICAgICAgICAgMHg0MA0KPiA+ICsNCj4gPiArI2RlZmluZSBE V19NTUNfSENfTUFYX1NMT1QgICAgICAgICAgICAxDQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBT RCBIb3N0IENvbnRyb2xsZXIgTU1JTyBSZWdpc3RlciBPZmZzZXQNCj4gPiArLy8NCj4gPiArI2Rl ZmluZSBEV19NTUNfQ1RSTCAgICAgICAgICAgICAgICAgICAweDAwMA0KPiA+ICsjZGVmaW5lIERX X01NQ19QV1JFTiAgICAgICAgICAgICAgICAgIDB4MDA0DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0NM S0RJViAgICAgICAgICAgICAgICAgMHgwMDgNCj4gPiArI2RlZmluZSBEV19NTUNfQ0xLU1JDICAg ICAgICAgICAgICAgICAweDAwYw0KPiA+ICsjZGVmaW5lIERXX01NQ19DTEtFTkEgICAgICAgICAg ICAgICAgIDB4MDEwDQo+ID4gKyNkZWZpbmUgRFdfTU1DX1RNT1VUICAgICAgICAgICAgICAgICAg MHgwMTQNCj4gPiArI2RlZmluZSBEV19NTUNfQ1RZUEUgICAgICAgICAgICAgICAgICAweDAxOA0K PiA+ICsjZGVmaW5lIERXX01NQ19CTEtTSVogICAgICAgICAgICAgICAgIDB4MDFjDQo+ID4gKyNk ZWZpbmUgRFdfTU1DX0JZVENOVCAgICAgICAgICAgICAgICAgMHgwMjANCj4gPiArI2RlZmluZSBE V19NTUNfSU5UTUFTSyAgICAgICAgICAgICAgICAweDAyNA0KPiA+ICsjZGVmaW5lIERXX01NQ19D TURBUkcgICAgICAgICAgICAgICAgIDB4MDI4DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0NNRCAgICAg ICAgICAgICAgICAgICAgMHgwMmMNCj4gPiArI2RlZmluZSBEV19NTUNfUkVTUDAgICAgICAgICAg ICAgICAgICAweDAzMA0KPiA+ICsjZGVmaW5lIERXX01NQ19SRVNQMSAgICAgICAgICAgICAgICAg IDB4MDM0DQo+ID4gKyNkZWZpbmUgRFdfTU1DX1JFU1AyICAgICAgICAgICAgICAgICAgMHgwMzgN Cj4gPiArI2RlZmluZSBEV19NTUNfUkVTUDMgICAgICAgICAgICAgICAgICAweDAzYw0KPiA+ICsj ZGVmaW5lIERXX01NQ19SSU5UU1RTICAgICAgICAgICAgICAgIDB4MDQ0DQo+ID4gKyNkZWZpbmUg RFdfTU1DX1NUQVRVUyAgICAgICAgICAgICAgICAgMHgwNDgNCj4gPiArI2RlZmluZSBEV19NTUNf RklGT1RIICAgICAgICAgICAgICAgICAweDA0Yw0KPiA+ICsjZGVmaW5lIERXX01NQ19HUElPICAg ICAgICAgICAgICAgICAgIDB4MDU4DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0RFQk5DRSAgICAgICAg ICAgICAgICAgMHgwNjQNCj4gPiArI2RlZmluZSBEV19NTUNfVVNSSUQgICAgICAgICAgICAgICAg ICAweDA2OA0KPiA+ICsjZGVmaW5lIERXX01NQ19WRVJJRCAgICAgICAgICAgICAgICAgIDB4MDZj DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0hDT04gICAgICAgICAgICAgICAgICAgMHgwNzANCj4gPiAr I2RlZmluZSBEV19NTUNfVUhTUkVHICAgICAgICAgICAgICAgICAweDA3NA0KPiA+ICsjZGVmaW5l IERXX01NQ19CTU9EICAgICAgICAgICAgICAgICAgIDB4MDgwDQo+ID4gKyNkZWZpbmUgRFdfTU1D X0RCQUREUiAgICAgICAgICAgICAgICAgMHgwODgNCj4gPiArI2RlZmluZSBEV19NTUNfSURTVFMg ICAgICAgICAgICAgICAgICAweDA4Yw0KPiA+ICsjZGVmaW5lIERXX01NQ19JRElOVEVOICAgICAg ICAgICAgICAgIDB4MDkwDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0RTQ0FERFIgICAgICAgICAgICAg ICAgMHgwOTQNCj4gPiArI2RlZmluZSBEV19NTUNfQlVGQUREUiAgICAgICAgICAgICAgICAweDA5 OA0KPiA+ICsjZGVmaW5lIERXX01NQ19DQVJEVEhSQ1RMICAgICAgICAgICAgIDB4MTAwDQo+ID4g KyNkZWZpbmUgRFdfTU1DX1VIU1JFR19FWFQgICAgICAgICAgICAgMHgxMDgNCj4gPiArI2RlZmlu ZSBEV19NTUNfRU5BQkxFX1NISUZUICAgICAgICAgICAweDExMA0KPiA+ICsjZGVmaW5lIERXX01N Q19GSUZPX1NUQVJUICAgICAgICAgICAgIDB4MjAwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEdFVF9J RFNUU19ETUFDX0ZTTSh4KSAgICAgICAgICAgICAgICAgICAoKCh4KSA+PiAxMykgJiAweGYpDQo+ ID4gKyNkZWZpbmUgSURTVFNfRlNNX0RNQV9JRExFICAgICAgICAgICAgICAgICAgICAgIDANCj4g PiArI2RlZmluZSBJRFNUU19GU01fRE1BX1NVU1BFTkQgICAgICAgICAgICAgICAgICAgMQ0KPiA+ ICsjZGVmaW5lIElEU1RTX0ZTTV9ERVNDX1JEICAgICAgICAgICAgICAgICAgICAgICAyDQo+ID4g KyNkZWZpbmUgSURTVFNfRlNNX0RFU0NfQ0hLICAgICAgICAgICAgICAgICAgICAgIDMNCj4gPiAr I2RlZmluZSBJRFNUU19GU01fRE1BX1JEX1JFUV9XQUlUICAgICAgICAgICAgICAgNA0KPiA+ICsj ZGVmaW5lIElEU1RTX0ZTTV9ETUFfV1JfUkVRX1dBSVQgICAgICAgICAgICAgICA1DQo+ID4gKyNk ZWZpbmUgSURTVFNfRlNNX0RNQV9SRCAgICAgICAgICAgICAgICAgICAgICAgIDYNCj4gPiArI2Rl ZmluZSBJRFNUU19GU01fRE1BX1dSICAgICAgICAgICAgICAgICAgICAgICAgNw0KPiA+ICsjZGVm aW5lIElEU1RTX0ZTTV9ERVNDX0NMT1NFICAgICAgICAgICAgICAgICAgICA4DQo+ID4gKyNkZWZp bmUgSURTVFNfRlNNX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Zg0KPiA+ICsNCj4g PiArI2RlZmluZSBDTURfVVBEQVRFX0NMSyAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDIw MjAwMA0KPiA+ICsjZGVmaW5lIENNRF9TVEFSVF9CSVQgICAgICAgICAgICAgICAgICAgICAgICAg ICAoMSA8PCAzMSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgTU1DXzhCSVRfTU9ERSAgICAgICAgICAg ICAgICAgICAgICAgICAgICgxIDw8IDE2KQ0KPiA+ICsjZGVmaW5lIE1NQ180QklUX01PREUgICAg ICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAwKQ0KPiA+ICsjZGVmaW5lIE1NQ18xQklUX01P REUgICAgICAgICAgICAgICAgICAgICAgICAgICAwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERXX01N Q19CTE9DS19TSVpFICAgICAgICAgICAgICAgICAgICAgICA1MTINCj4gPiArDQo+ID4gKyNkZWZp bmUgQ01EX0lOREVYX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M0YNCj4gPiArI2Rl ZmluZSBCSVRfQ01EX1JFU1BPTlNFX0VYUEVDVCAgICAgICAgICAgICAgICAgKDEgPDwgNikNCj4g PiArI2RlZmluZSBCSVRfQ01EX0xPTkdfUkVTUE9OU0UgICAgICAgICAgICAgICAgICAgKDEgPDwg NykNCj4gPiArI2RlZmluZSBCSVRfQ01EX0NIRUNLX1JFU1BPTlNFX0NSQyAgICAgICAgICAgICAg KDEgPDwgOCkNCj4gPiArI2RlZmluZSBCSVRfQ01EX0RBVEFfRVhQRUNURUQgICAgICAgICAgICAg ICAgICAgKDEgPDwgOSkNCj4gPiArI2RlZmluZSBCSVRfQ01EX1JFQUQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDAgPDwgMTApDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9XUklURSAgICAgICAg ICAgICAgICAgICAgICAgICAgICgxIDw8IDEwKQ0KPiA+ICsjZGVmaW5lIEJJVF9DTURfQkxPQ0tf VFJBTlNGRVIgICAgICAgICAgICAgICAgICAoMCA8PCAxMSkNCj4gPiArI2RlZmluZSBCSVRfQ01E X1NUUkVBTV9UUkFOU0ZFUiAgICAgICAgICAgICAgICAgKDEgPDwgMTEpDQo+ID4gKyNkZWZpbmUg QklUX0NNRF9TRU5EX0FVVE9fU1RPUCAgICAgICAgICAgICAgICAgICgxIDw8IDEyKQ0KPiA+ICsj ZGVmaW5lIEJJVF9DTURfV0FJVF9QUlZEQVRBX0NPTVBMRVRFICAgICAgICAgICAoMSA8PCAxMykN Cj4gPiArI2RlZmluZSBCSVRfQ01EX1NUT1BfQUJPUlRfQ01EICAgICAgICAgICAgICAgICAgKDEg PDwgMTQpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9TRU5EX0lOSVQgICAgICAgICAgICAgICAgICAg ICAgICgxIDw8IDE1KQ0KPiA+ICsjZGVmaW5lIEJJVF9DTURfVVBEQVRFX0NMT0NLX09OTFkgICAg ICAgICAgICAgICAoMSA8PCAyMSkNCj4gPiArI2RlZmluZSBCSVRfQ01EX1JFQURfQ0VBVEFfREVW SUNFICAgICAgICAgICAgICAgKDEgPDwgMjIpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9DQ1NfRVhQ RUNURUQgICAgICAgICAgICAgICAgICAgICgxIDw8IDIzKQ0KPiA+ICsjZGVmaW5lIEJJVF9DTURf RU5BQkxFX0JPT1QgICAgICAgICAgICAgICAgICAgICAoMSA8PCAyNCkNCj4gPiArI2RlZmluZSBC SVRfQ01EX0VYUEVDVF9CT09UX0FDSyAgICAgICAgICAgICAgICAgKDEgPDwgMjUpDQo+ID4gKyNk ZWZpbmUgQklUX0NNRF9ESVNBQkxFX0JPT1QgICAgICAgICAgICAgICAgICAgICgxIDw8IDI2KQ0K PiA+ICsjZGVmaW5lIEJJVF9DTURfTUFOREFUT1JZX0JPT1QgICAgICAgICAgICAgICAgICAoMCA8 PCAyNykNCj4gPiArI2RlZmluZSBCSVRfQ01EX0FMVEVSTkFURV9CT09UICAgICAgICAgICAgICAg ICAgKDEgPDwgMjcpDQo+ID4gKyNkZWZpbmUgQklUX0NNRF9WT0xUX1NXSVRDSCAgICAgICAgICAg ICAgICAgICAgICgxIDw8IDI4KQ0KPiA+ICsjZGVmaW5lIEJJVF9DTURfVVNFX0hPTERfUkVHICAg ICAgICAgICAgICAgICAgICAoMSA8PCAyOSkNCj4gPiArI2RlZmluZSBCSVRfQ01EX1NUQVJUICAg ICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMzEpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIENN RF9JTkRFWCh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHgpICYgQ01EX0lOREVYX01B U0spDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERXX01NQ19JTlRfRUJFICAgICAgICAgICAgICAgICAg ICAgICAgICAoMSA8PCAxNSkgICAgICAgLyogRW5kLWJpdCBFcnIgKi8NCj4gPiArI2RlZmluZSBE V19NTUNfSU5UX1NCRSAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTMpICAgICAgIC8q IFN0YXJ0LWJpdCAgRXJyICovDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9ITEUgICAgICAgICAg ICAgICAgICAgICAgICAgICgxIDw8IDEyKSAgICAgICAvKiBIYXJkd2FyZS1sb2NrDQo+IEVyciAq Lw0KPiA+ICsjZGVmaW5lIERXX01NQ19JTlRfRlJVTiAgICAgICAgICAgICAgICAgICAgICAgICAo MSA8PCAxMSkgICAgICAgLyogRklGTyBVTi9PVg0KPiBSVU4gKi8NCj4gPiArI2RlZmluZSBEV19N TUNfSU5UX0RSVCAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgOSkgICAgICAgIC8qIERh dGEgdGltZW91dCAqLw0KPiA+ICsjZGVmaW5lIERXX01NQ19JTlRfUlRPICAgICAgICAgICAgICAg ICAgICAgICAgICAoMSA8PCA4KSAgICAgICAgLyogUmVzcG9uc2UNCj4gdGltZW91dCAqLw0KPiA+ ICsjZGVmaW5lIERXX01NQ19JTlRfRENSQyAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCA3 KSAgICAgICAgLyogRGF0YSBDUkMgZXJyICovDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9SQ1JD ICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDYpICAgICAgICAvKiBSZXNwb25zZSBDUkMN Cj4gZXJyICovDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9SWERSICAgICAgICAgICAgICAgICAg ICAgICAgICgxIDw8IDUpICAgICAgICAvKiBSZWNlaXZlIEZJRk8NCj4gZGF0YSByZXF1ZXN0ICov DQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9UWERSICAgICAgICAgICAgICAgICAgICAgICAgICgx IDw8IDQpICAgICAgICAvKiBUcmFuc21pdCBGSUZPDQo+IGRhdGEgcmVxdWVzdCAqLw0KPiA+ICsj ZGVmaW5lIERXX01NQ19JTlRfRFRPICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAzKSAg ICAgICAgLyogRGF0YSB0cmFucyBvdmVyDQo+ICovDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0lOVF9D TURfRE9ORSAgICAgICAgICAgICAgICAgICAgICgxIDw8IDIpICAgICAgICAvKiBDb21tYW5kDQo+ IGRvbmUgKi8NCj4gPiArI2RlZmluZSBEV19NTUNfSU5UX1JFICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDEgPDwgMSkgICAgICAgIC8qIFJlc3BvbnNlIGVycm9yICovDQo+ID4gKw0KPiA+ICsj ZGVmaW5lIERXX01NQ19JRE1BQ19ERVMwX0RJQyAgICAgICAgICAgICAgICAgICAoMSA8PCAxKQ0K PiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMwX0xEICAgICAgICAgICAgICAgICAgICAoMSA8 PCAyKQ0KPiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMwX0ZTICAgICAgICAgICAgICAgICAg ICAoMSA8PCAzKQ0KPiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMwX0NIICAgICAgICAgICAg ICAgICAgICAoMSA8PCA0KQ0KPiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMwX0VSICAgICAg ICAgICAgICAgICAgICAoMSA8PCA1KQ0KPiA+ICsjZGVmaW5lIERXX01NQ19JRE1BQ19ERVMwX0NF UyAgICAgICAgICAgICAgICAgICAoMSA8PCAzMCkNCj4gPiArI2RlZmluZSBEV19NTUNfSURNQUNf REVTMF9PV04gICAgICAgICAgICAgICAgICAgKDEgPDwgMzEpDQo+ID4gKyNkZWZpbmUgRFdfTU1D X0lETUFDX0RFUzFfQlMxKHgpICAgICAgICAgICAgICAgICgoeCkgJiAweDFmZmYpDQo+ID4gKyNk ZWZpbmUgRFdfTU1DX0lETUFDX0RFUzJfQlMyKHgpICAgICAgICAgICAgICAgICgoKHgpICYgMHgx ZmZmKSA8PCAxMykNCj4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfU1dSRVNFVCAgICAgICAgICAg ICAgICAgICAgKDEgPDwgMCkNCj4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfRkIgICAgICAgICAg ICAgICAgICAgICAgICAgKDEgPDwgMSkNCj4gPiArI2RlZmluZSBEV19NTUNfSURNQUNfRU5BQkxF ICAgICAgICAgICAgICAgICAgICAgKDEgPDwgNykNCj4gPiArDQo+ID4gKyNkZWZpbmUgRFdfTU1D X0NUUkxfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDApDQo+ID4gKyNkZWZpbmUg RFdfTU1DX0NUUkxfRklGT19SRVNFVCAgICAgICAgICAgICAgICAgICgxIDw8IDEpDQo+ID4gKyNk ZWZpbmUgRFdfTU1DX0NUUkxfRE1BX1JFU0VUICAgICAgICAgICAgICAgICAgICgxIDw8IDIpDQo+ ID4gKyNkZWZpbmUgRFdfTU1DX0NUUkxfSU5UX0VOICAgICAgICAgICAgICAgICAgICAgICgxIDw8 IDQpDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0NUUkxfRE1BX0VOICAgICAgICAgICAgICAgICAgICAg ICgxIDw8IDUpDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0NUUkxfSURNQUNfRU4gICAgICAgICAgICAg ICAgICAgICgxIDw8IDI1KQ0KPiA+ICsjZGVmaW5lIERXX01NQ19DVFJMX1JFU0VUX0FMTCAgICAg ICAgICAgICAgICAgICAoRFdfTU1DX0NUUkxfUkVTRVQgfA0KPiBEV19NTUNfQ1RSTF9GSUZPX1JF U0VUIHwgRFdfTU1DX0NUUkxfRE1BX1JFU0VUKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBEV19NTUNf U1RTX0RBVEFfQlVTWSAgICAgICAgICAgICAgICAgICAgKDEgPDwgOSkNCj4gPiArI2RlZmluZSBE V19NTUNfU1RTX0ZJRk9fQ09VTlQoeCkgICAgICAgICAgICAgICAgKCgoeCkgJiAweDFmZmYpIDw8 IDE3KSAgIC8qDQo+IE51bWJlciBvZiBmaWxsZWQgbG9jYXRpb25zIGluIEZJRk8gKi8NCj4gPiAr I2RlZmluZSBHRVRfU1RTX0ZJRk9fQ09VTlQoeCkgICAgICAgICAgICAgICAgICAgKCgoeCkgPj4g MTcpICYgMHgxZmZmKQ0KPiA+ICsjZGVmaW5lIERXX01NQ19TVFNfRklGT19GVUxMKHgpICAgICAg ICAgICAgICAgICAoKCh4KSA+PiAzKSAmIDEpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERXX01NQ19C TU9EX1NXUiAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAwKSAgICAgICAgIC8qIFNvZnR3 YXJlDQo+IFJlc2V0ICovDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0JNT0RfRkIgICAgICAgICAgICAg ICAgICAgICAgICAgICgxIDw8IDEpICAgICAgICAgLyogRml4IEJ1cnN0ICovDQo+ID4gKyNkZWZp bmUgRFdfTU1DX0JNT0RfREUgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDcpICAgICAg ICAgLyogSURNQUMgRW5hYmxlDQo+ICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERXX01NQ19JRFNU U19USSAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAwKSAgICAgICAgIC8qIFRyYW5zbWl0 DQo+IEludGVycnVwdCAqLw0KPiA+ICsjZGVmaW5lIERXX01NQ19JRFNUU19SSSAgICAgICAgICAg ICAgICAgICAgICAgICAoMSA8PCAxKSAgICAgICAgIC8qIFJlY2VpdmUgSW50ZXJydXB0DQo+ICov DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERXX01NQ19GSUZPX1RXTUFSSyh4KSAgICAgICAgICAgICAg ICAgICAoKHgpICYgMHhmZmYpDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0ZJRk9fUldNQVJLKHgpICAg ICAgICAgICAgICAgICAgICgoKHgpICYgMHgxZmYpIDw8IDE2KQ0KPiA+ICsjZGVmaW5lIERXX01N Q19ETUFfQlVSU1RfU0laRSh4KSAgICAgICAgICAgICAgICAoKCh4KSAmIDB4NykgPDwgMjgpDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIERXX01NQ19DQVJEX1JEX1RIUih4KSAgICAgICAgICAgICAgICAg ICAoKCh4KSAmIDB4ZmZmKSA8PCAxNikNCj4gPiArI2RlZmluZSBEV19NTUNfQ0FSRF9SRF9USFJf RU4gICAgICAgICAgICAgICAgICAgKDEgPDwgMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgVUhTX0RE Ul9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDE2KQ0KPiA+ICsNCj4gPiAr I2RlZmluZSBHRU5DTEtfRElWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNw0KPiA+ICsN Cj4gPiArI2RlZmluZSBEV19NTUNfR1BJT19DTEtfRElWKHgpICAgICAgICAgICAgICAgICAgKCgo eCkgJiAweGYpIDw8IDgpDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0dQSU9fVVNFX1NBTVBMRV9ETFko eCkgICAgICAgICAgICgoKHgpICYgMSkgPDwgMTMpDQo+ID4gKyNkZWZpbmUgRFdfTU1DX0dQSU9f Q0xLX0VOQUJMRSAgICAgICAgICAgICAgICAgIEJJVDE2DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFVI U0VYVF9TQU1QTEVfUEhBU0UoeCkgICAgICAgICAgICAgICAgICAoKCh4KSAmIDB4MWYpIDw8IDE2 KQ0KPiA+ICsjZGVmaW5lIFVIU0VYVF9TQU1QTEVfRFJWUEhBU0UoeCkgICAgICAgICAgICAgICAo KCh4KSAmIDB4MWYpIDw8IDIxKQ0KPiA+ICsjZGVmaW5lIFVIU0VYVF9TQU1QTEVfRExZKHgpICAg ICAgICAgICAgICAgICAgICAoKCh4KSAmIDB4MWYpIDw8IDI2KQ0KPiA+ICsNCj4gPiArI2RlZmlu ZSBEV01NQ19ETUFfQlVGX1NJWkUgICAgICAgICAgICAgICAgICAgICAgKDUxMiAqIDgpDQo+ID4g KyNkZWZpbmUgRFdNTUNfRklGT19USFJFU0hPTEQgICAgICAgICAgICAgICAgICAgIDE2DQo+ID4g Kw0KPiA+ICsjZGVmaW5lIERXTU1DX0lOSVRfQ0xPQ0tfRlJFUSAgICAgICAgICAgICAgICAgICA0 MDAgICAgICAgICAgICAgIC8qIEtIeiAqLw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gVGhlIHRy YW5zZmVyIG1vZGVzIHN1cHBvcnRlZCBieSBTRCBIb3N0IENvbnRyb2xsZXINCj4gPiArLy8gU2lt cGxpZmllZCBTcGVjIDMuMCBUYWJsZSAxLTINCj4gPiArLy8NCj4gPiArdHlwZWRlZiBlbnVtIHsN Cj4gPiArICBTZE1tY05vRGF0YSwNCj4gPiArICBTZE1tY1Bpb01vZGUsDQo+ID4gKyAgU2RNbWNT ZG1hTW9kZSwNCj4gPiArICBTZE1tY0FkbWFNb2RlDQo+ID4gK30gRFdfTU1DX0hDX1RSQU5TRkVS X01PREU7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBUaGUgbWF4aW11bSBkYXRhIGxlbmd0aCBv ZiBlYWNoIGRlc2NyaXB0b3IgbGluZQ0KPiA+ICsvLw0KPiA+ICsjZGVmaW5lIEFETUFfTUFYX0RB VEFfUEVSX0xJTkUgICAgIDB4MTAwMDANCj4gPiArDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4g PiArICBVSU5UMzIgICBEZXMwOw0KPiA+ICsgIFVJTlQzMiAgIERlczE7DQo+ID4gKyAgVUlOVDMy ICAgRGVzMjsNCj4gPiArICBVSU5UMzIgICBEZXMzOw0KPiA+ICt9IERXX01NQ19IQ19ETUFfREVT Q19MSU5FOw0KPiA+ICsNCj4gPiArI2RlZmluZSBTRF9NTUNfU0RNQV9CT1VOREFSWSAgICAgICAg ICA1MTIgKiAxMDI0DQo+ID4gKyNkZWZpbmUgU0RfTU1DX1NETUFfUk9VTkRfVVAoeCwgbikgICAg KCgoeCkgKyBuKSAmIH4obiAtIDEpKQ0KPiA+ICsNCj4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ ICsgIFVJTlQ4ICAgIEZpcnN0QmFyOjM7ICAgICAgICAvLyBiaXQgMDoyDQo+ID4gKyAgVUlOVDgg ICAgUmVzZXJ2ZWQ6MTsgICAgICAgIC8vIGJpdCAzDQo+ID4gKyAgVUlOVDggICAgU2xvdE51bToz OyAgICAgICAgIC8vIGJpdCA0OjYNCj4gPiArICBVSU5UOCAgICBSZXNlcnZlZDE6MTsgICAgICAg Ly8gYml0IDcNCj4gPiArfSBEV19NTUNfSENfU0xPVF9JTkZPOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgRHVtcCB0aGUgY29udGVudCBvZiBTRC9NTUMgaG9zdCBjb250cm9sbGVyJ3MgQ2FwYWJp bGl0eSBSZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgU2xvdCAgICAgICAgICAg IFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5kIHRv Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIENhcGFiaWxpdHkgICAgICBUaGUgYnVmZmVyIHRvIHN0b3Jl IHRoZSBjYXBhYmlsaXR5IGRhdGEuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtE dW1wQ2FwYWJpbGl0eVJlZyAoDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgU2xvdCwN Cj4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAqQ2FwYWJpbGl0eQ0KPiA+ICsgICk7DQo+ ID4gKw0KPiA+ICsjaWYgMA0KPiA+ICsvKioNCj4gPiArICBSZWFkIFNsb3RJbmZvIHJlZ2lzdGVy IGZyb20gU0QvTU1DIGhvc3QgY29udHJvbGxlciBwY2kgY29uZmlnIHNwYWNlLg0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dICBQY2lJbyAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5j ZS4NCj4gPiArICBAcGFyYW1bb3V0XSBGaXJzdEJhciAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0 aGUgZmlyc3QgQkFSIHZhbHVlLg0KPiA+ICsgIEBwYXJhbVtvdXRdIFNsb3ROdW0gICAgICBUaGUg YnVmZmVyIHRvIHN0b3JlIHRoZSBzdXBwb3J0ZWQgc2xvdCBudW1iZXIuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICBUaGUgb3BlcmF0aW9uIHN1Y2NlZWRzLg0KPiA+ICsg IEByZXR2YWwgT3RoZXJzICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNHZXRTbG90 SW5mbyAoDQo+ID4gKyAgSU4gICAgIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAqUGNpSW8sDQo+ID4g KyAgICAgT1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAqRmlyc3RCYXIsDQo+ID4gKyAgICAgT1VU IFVJTlQ4ICAgICAgICAgICAgICAgICAqU2xvdE51bQ0KPiA+ICsgICk7DQo+ID4gKyNlbmRpZg0K PiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ICsvKioNCj4gPiArICBSZWFkL1dyaXRl IHNwZWNpZmllZCBTRC9NTUMgaG9zdCBjb250cm9sbGVyIG1taW8gcmVnaXN0ZXIuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbVtpbl0gICAgICBQY2lJbyAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBp bnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICAgICAgQmFySW5kZXggICAgIFRoZSBCQVIgaW5k ZXggb2YgdGhlIHN0YW5kYXJkIFBDSQ0KPiBDb25maWd1cmF0aW9uDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBoZWFkZXIgdG8gdXNlIGFzIHRoZSBiYXNlIGFkZHJlc3MgZm9y IHRoZSBtZW1vcnkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlv biB0byBwZXJmb3JtLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBPZmZzZXQgICAgICAgVGhlIG9m ZnNldCB3aXRoaW4gdGhlIHNlbGVjdGVkIEJBUiB0byBzdGFydCB0aGUNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2lu XSAgICAgIFJlYWQgICAgICAgICBBIGJvb2xlYW4gdG8gaW5kaWNhdGUgaXQncyByZWFkIG9yIHdy aXRlDQo+IG9wZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgQ291bnQgICAgICAgIFRo ZSB3aWR0aCBvZiB0aGUgbW1pbyByZWdpc3RlciBpbiBieXRlcy4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMSwgMiAsIDQgb3IgOCBieXRlcy4NCj4gPiArICBA cGFyYW1baW4sIG91dF0gRGF0YSAgICAgICAgIEZvciByZWFkIG9wZXJhdGlvbnMsIHRoZSBkZXN0 aW5hdGlvbiBidWZmZXIgdG8NCj4gc3RvcmUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoZSByZXN1bHRzLiBGb3Igd3JpdGUgb3BlcmF0aW9ucywgdGhlIHNvdXJjZSBidWZm ZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHdyaXRlIGRhdGEgZnJv bS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3INCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGhhdmluZyBvd25lcnNoaXAgb2YgdGhlIGRhdGEgYnVmZmVyIGFuZCBlbnN1 cmluZyBpdHMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgbm90IGxl c3MgdGhhbiBDb3VudCBieXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgVGhlIFBjaUlvIG9yIERhdGEgaXMgTlVMTCBvciB0aGUgQ291bnQNCj4gaXMgbm90 IHZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSByZWFkL3dy aXRlIG9wZXJhdGlvbiBzdWNjZWVkcy4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAg ICAgICBUaGUgcmVhZC93cml0ZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNIY1J3TW1pbyAoDQo+ID4gKyAg SU4gICAgIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAqUGNpSW8sDQo+ID4gKyAgSU4gICAgIFVJTlQ4 ICAgICAgICAgICAgICAgICBCYXJJbmRleCwNCj4gPiArICBJTiAgICAgVUlOVDMyICAgICAgICAg ICAgICAgIE9mZnNldCwNCj4gPiArICBJTiAgICAgQk9PTEVBTiAgICAgICAgICAgICAgIFJlYWQs DQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPiArICBJTiBP VVQgVk9JRCAgICAgICAgICAgICAgICAgICpEYXRhDQo+ID4gKyAgKTsNCj4gPiArI2Vsc2UNCj4g PiArLyoqDQo+ID4gKyAgUmVhZC9Xcml0ZSBzcGVjaWZpZWQgU0QvTU1DIGhvc3QgY29udHJvbGxl ciBtbWlvIHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICAgRGV2SW8gICAg ICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAg ICAgIE9mZnNldCAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0 YXJ0IHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IG9wZXJh dGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgUmVhZCAgICAgICAgIEEgYm9vbGVhbiB0byBp bmRpY2F0ZSBpdCdzIHJlYWQgb3Igd3JpdGUNCj4gb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtp bl0gICAgICBDb3VudCAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5 dGVzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAxLCAyICwg NCBvciA4IGJ5dGVzLg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSBEYXRhICAgICAgICAgRm9yIHJl YWQgb3BlcmF0aW9ucywgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB0bw0KPiBzdG9yZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlc3VsdHMuIEZvciB3cml0ZSBvcGVy YXRpb25zLCB0aGUgc291cmNlIGJ1ZmZlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG8gd3JpdGUgZGF0YSBmcm9tLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvcg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2aW5nIG93bmVyc2hpcCBvZiB0 aGUgZGF0YSBidWZmZXIgYW5kIGVuc3VyaW5nIGl0cw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZSBub3QgbGVzcyB0aGFuIENvdW50IGJ5dGVzLg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBUaGUgUGNpSW8gb3IgRGF0YSBpcyBOVUxM IG9yIHRoZSBDb3VudA0KPiBpcyBub3QgdmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIHJlYWQvd3JpdGUgb3BlcmF0aW9uIHN1Y2NlZWRzLg0KPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgIFRoZSByZWFkL3dyaXRlIG9wZXJhdGlvbiBmYWls cy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtE d01tY0hjUndNbWlvICgNCj4gPiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgRGV2 QmFzZSwNCj4gPiArICBJTiAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgIE9mZnNldCwNCj4g PiArICBJTiAgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgIFJlYWQsDQo+ID4gKyAgSU4gICAg IFVJTlQ4ICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPiArICBJTiBPVVQgVk9JRCAgICAg ICAgICAgICAgICAgICAgICpEYXRhDQo+ID4gKyAgKTsNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gKy8qKg0KPiA+ICsgIERvIE9SIG9wZXJhdGlvbiB3aXRo IHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXINCj4gbW1p byByZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICAgICBU aGUgUENJIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gQmFySW5kZXgg ICAgICAgICAgVGhlIEJBUiBpbmRleCBvZiB0aGUgc3RhbmRhcmQgUENJDQo+IENvbmZpZ3VyYXRp b24NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciB0byB1c2UgYXMg dGhlIGJhc2UgYWRkcmVzcyBmb3IgdGhlIG1lbW9yeQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3BlcmF0aW9uIHRvIHBlcmZvcm0uDQo+ID4gKyAgQHBhcmFtW2luXSBPZmZz ZXQgICAgICAgICAgICBUaGUgb2Zmc2V0IHdpdGhpbiB0aGUgc2VsZWN0ZWQgQkFSIHRvIHN0YXJ0 IHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IG9wZXJhdGlv bi4NCj4gPiArICBAcGFyYW1baW5dIENvdW50ICAgICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUg bW1pbyByZWdpc3RlciBpbiBieXRlcy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE11c3QgYmUgMSwgMiAsIDQgb3IgOCBieXRlcy4NCj4gPiArICBAcGFyYW1baW5dIE9yRGF0 YSAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRhIHVzZWQgdG8gZG8gT1INCj4gb3Bl cmF0aW9uLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNhbGxlciBp cyByZXNwb25zaWJsZSBmb3IgaGF2aW5nIG93bmVyc2hpcCBvZg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhlIGRhdGEgYnVmZmVyIGFuZCBlbnN1cmluZyBpdHMgc2l6ZSBu b3QgbGVzcyB0aGFuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudCBi eXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIFBj aUlvIG9yIE9yRGF0YSBpcyBOVUxMIG9yIHRoZQ0KPiBDb3VudCBpcyBub3QgdmFsaWQuDQo+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIE9SIG9wZXJhdGlvbiBzdWNjZWVk cy4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICBUaGUgT1Igb3BlcmF0aW9u IGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ ID4gK0R3TW1jSGNPck1taW8gKA0KPiA+ICsgIElOICBFRklfUENJX0lPX1BST1RPQ09MICAgICAg KlBjaUlvLA0KPiA+ICsgIElOICBVSU5UOCAgICAgICAgICAgICAgICAgICAgQmFySW5kZXgsDQo+ ID4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ID4gKyAgSU4gIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPiArICBJTiAgVk9JRCAgICAgICAgICAg ICAgICAgICAgICpPckRhdGENCj4gPiArICApOw0KPiA+ICsjZWxzZQ0KPiA+ICsvKioNCj4gPiAr ICBEbyBPUiBvcGVyYXRpb24gd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBTRC9NTUMg aG9zdCBjb250cm9sbGVyDQo+IG1taW8gcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtp bl0gRGV2SW8gICAgICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4g PiArICBAcGFyYW1baW5dIEJhckluZGV4ICAgICAgICAgIFRoZSBCQVIgaW5kZXggb2YgdGhlIHN0 YW5kYXJkIFBDSQ0KPiBDb25maWd1cmF0aW9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoZWFkZXIgdG8gdXNlIGFzIHRoZSBiYXNlIGFkZHJlc3MgZm9yIHRoZSBtZW1vcnkN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiB0byBwZXJmb3Jt Lg0KPiA+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgICAgVGhlIG9mZnNldCB3aXRoaW4g dGhlIHNlbGVjdGVkIEJBUiB0byBzdGFydCB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1lbW9yeSBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSBDb3VudCAgICAg ICAgICAgICBUaGUgd2lkdGggb2YgdGhlIG1taW8gcmVnaXN0ZXIgaW4gYnl0ZXMuDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIDEsIDIgLCA0IG9yIDggYnl0ZXMu DQo+ID4gKyAgQHBhcmFtW2luXSBPckRhdGEgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUg ZGF0YSB1c2VkIHRvIGRvIE9SDQo+IG9wZXJhdGlvbi4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGhhdmluZyBvd25lcnNo aXAgb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZl ciBhbmQgZW5zdXJpbmcgaXRzIHNpemUgbm90IGxlc3MgdGhhbg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ291bnQgYnl0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSIFRoZSBQY2lJbyBvciBPckRhdGEgaXMgTlVMTCBvciB0aGUNCj4g Q291bnQgaXMgbm90IHZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoZSBPUiBvcGVyYXRpb24gc3VjY2VlZHMuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICAgICAgVGhlIE9SIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY0hjT3JNbWlvICgNCj4gPiArICBJTiAg ICAgVUlOVE4gICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiArICBJTiAgVUlOVDMyICAg ICAgICAgICAgICAgICAgIE9mZnNldCwNCj4gPiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAg ICAgIENvdW50LA0KPiA+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAgKk9yRGF0YQ0K PiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ ICsvKioNCj4gPiArICBEbyBBTkQgb3BlcmF0aW9uIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBzcGVj aWZpZWQgU0QvTU1DIGhvc3QNCj4gY29udHJvbGxlciBtbWlvIHJlZ2lzdGVyLg0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5z dGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBCYXJJbmRleCAgICAgICAgICBUaGUgQkFSIGluZGV4 IG9mIHRoZSBzdGFuZGFyZCBQQ0kNCj4gQ29uZmlndXJhdGlvbg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaGVhZGVyIHRvIHVzZSBhcyB0aGUgYmFzZSBhZGRyZXNzIGZvciB0 aGUgbWVtb3J5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24g dG8gcGVyZm9ybS4NCj4gPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAgICAgIFRoZSBvZmZz ZXQgd2l0aGluIHRoZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0g Q291bnQgICAgICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5dGVz Lg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAxLCAyICwgNCBv ciA4IGJ5dGVzLg0KPiA+ICsgIEBwYXJhbVtpbl0gQW5kRGF0YSAgICAgICAgICAgVGhlIHBvaW50 ZXIgdG8gdGhlIGRhdGEgdXNlZCB0byBkbyBBTkQNCj4gb3BlcmF0aW9uLg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaGF2 aW5nIG93bmVyc2hpcCBvZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl IGRhdGEgYnVmZmVyIGFuZCBlbnN1cmluZyBpdHMgc2l6ZSBub3QgbGVzcyB0aGFuDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudCBieXRlcy4NCj4gPiArDQo+ID4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIFBjaUlvIG9yIEFuZERhdGEgaXMgTlVM TCBvciB0aGUNCj4gQ291bnQgaXMgbm90IHZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBBTkQgb3BlcmF0aW9uIHN1Y2NlZWRzLg0KPiA+ICsgIEByZXR2YWwg T3RoZXJzICAgICAgICAgICAgICAgIFRoZSBBTkQgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNBbmRNbWlv ICgNCj4gPiArICBJTiAgRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgICpQY2lJbywNCj4gPiArICBJ TiAgVUlOVDggICAgICAgICAgICAgICAgICAgIEJhckluZGV4LA0KPiA+ICsgIElOICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiA+ICsgIElOICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgQ291bnQsDQo+ID4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAqQW5kRGF0 YQ0KPiA+ICsgICk7DQo+ID4gKyNlbHNlDQo+ID4gKy8qKg0KPiA+ICsgIERvIEFORCBvcGVyYXRp b24gd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBTRC9NTUMgaG9zdA0KPiBjb250cm9s bGVyIG1taW8gcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAg ICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5d IE9mZnNldCAgICAgICAgICAgIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBzZWxlY3RlZCBCQVIgdG8g c3RhcnQgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3Bl cmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ291bnQgICAgICAgICAgICAgVGhlIHdpZHRoIG9m IHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5dGVzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTXVzdCBiZSAxLCAyICwgNCBvciA4IGJ5dGVzLg0KPiA+ICsgIEBwYXJhbVtpbl0g QW5kRGF0YSAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgdXNlZCB0byBkbyBBTkQN Cj4gb3BlcmF0aW9uLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNh bGxlciBpcyByZXNwb25zaWJsZSBmb3IgaGF2aW5nIG93bmVyc2hpcCBvZg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRhdGEgYnVmZmVyIGFuZCBlbnN1cmluZyBpdHMg c2l6ZSBub3QgbGVzcyB0aGFuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD b3VudCBieXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg VGhlIFBjaUlvIG9yIEFuZERhdGEgaXMgTlVMTCBvciB0aGUNCj4gQ291bnQgaXMgbm90IHZhbGlk Lg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBBTkQgb3BlcmF0aW9u IHN1Y2NlZWRzLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgIFRoZSBBTkQg b3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiAr RUZJQVBJDQo+ID4gK0R3TW1jSGNBbmRNbWlvICgNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAg ICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICBP ZmZzZXQsDQo+ID4gKyAgSU4gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4gPiAr ICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICpBbmREYXRhDQo+ID4gKyAgKTsNCj4gPiAr I2VuZGlmDQo+ID4gKw0KPiA+ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gKy8qKg0KPiA+ICsgIFdh aXQgZm9yIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIE1NSU8gcmVnaXN0ZXIgc2V0IHRvIHRo ZSB0ZXN0IHZhbHVlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBQY2lJbyAgICAgICAgIFRo ZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgQmFySW5kZXgg ICAgICBUaGUgQkFSIGluZGV4IG9mIHRoZSBzdGFuZGFyZCBQQ0kNCj4gQ29uZmlndXJhdGlvbg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyIHRvIHVzZSBhcyB0aGUgYmFz ZSBhZGRyZXNzIGZvciB0aGUgbWVtb3J5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvcGVyYXRpb24gdG8gcGVyZm9ybS4NCj4gPiArICBAcGFyYW1baW5dICBPZmZzZXQgICAgICAg IFRoZSBvZmZzZXQgd2l0aGluIHRoZSBzZWxlY3RlZCBCQVIgdG8gc3RhcnQgdGhlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJh bVtpbl0gIENvdW50ICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSBtbWlvIHJlZ2lzdGVyIGluIGJ5 dGVzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAxLCAyLCA0IG9y IDggYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAgTWFza1ZhbHVlICAgICBUaGUgbWFzayB2YWx1 ZSBvZiBtZW1vcnkuDQo+ID4gKyAgQHBhcmFtW2luXSAgVGVzdFZhbHVlICAgICBUaGUgdGVzdCB2 YWx1ZSBvZiBtZW1vcnkuDQo+ID4gKyAgQHBhcmFtW2luXSAgVGltZW91dCAgICAgICBUaGUgdGlt ZSBvdXQgdmFsdWUgZm9yIHdhaXQgbWVtb3J5IHNldCwgdXNlcyAxDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCBhcyBhIHVuaXQuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1RJTUVPVVQgICAgICAgVGhlIE1NSU8gcmVnaXN0ZXIgaGFzbid0IGV4cGVjdGVk IHZhbHVlIGluDQo+IHRpbWVvdXQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJh bmdlLg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIE1NSU8gcmVnaXN0ZXIg aGFzIGV4cGVjdGVkIHZhbHVlLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhl IE1NSU8gb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMN Cj4gPiArRUZJQVBJDQo+ID4gK0R3TW1jSGNXYWl0TW1pb1NldCAoDQo+ID4gKyAgSU4gIEVGSV9Q Q0lfSU9fUFJPVE9DT0wgICAgICAgKlBjaUlvLA0KPiA+ICsgIElOICBVSU5UOCAgICAgICAgICAg ICAgICAgICAgIEJhckluZGV4LA0KPiA+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAg IE9mZnNldCwNCj4gPiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAgICBDb3VudCwNCj4g PiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBNYXNrVmFsdWUsDQo+ID4gKyAgSU4g IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVGVzdFZhbHVlLA0KPiA+ICsgIElOICBVSU5UNjQg ICAgICAgICAgICAgICAgICAgIFRpbWVvdXQNCj4gPiArICApOw0KPiA+ICsjZWxzZQ0KPiA+ICsv KioNCj4gPiArICBXYWl0IGZvciB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBNTUlPIHJlZ2lz dGVyIHNldCB0byB0aGUgdGVzdCB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgRGV2 SW8gICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJh bVtpbl0gIE9mZnNldCAgICAgICAgVGhlIG9mZnNldCB3aXRoaW4gdGhlIHNlbGVjdGVkIEJBUiB0 byBzdGFydCB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSBvcGVy YXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgQ291bnQgICAgICAgICBUaGUgd2lkdGggb2YgdGhl IG1taW8gcmVnaXN0ZXIgaW4gYnl0ZXMuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNdXN0IGJlIDEsIDIsIDQgb3IgOCBieXRlcy4NCj4gPiArICBAcGFyYW1baW5dICBNYXNrVmFs dWUgICAgIFRoZSBtYXNrIHZhbHVlIG9mIG1lbW9yeS4NCj4gPiArICBAcGFyYW1baW5dICBUZXN0 VmFsdWUgICAgIFRoZSB0ZXN0IHZhbHVlIG9mIG1lbW9yeS4NCj4gPiArICBAcGFyYW1baW5dICBU aW1lb3V0ICAgICAgIFRoZSB0aW1lIG91dCB2YWx1ZSBmb3Igd2FpdCBtZW1vcnkgc2V0LCB1c2Vz IDENCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kIGFzIGEgdW5p dC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfVElNRU9VVCAgICAgICBUaGUgTU1JTyByZWdp c3RlciBoYXNuJ3QgZXhwZWN0ZWQgdmFsdWUgaW4NCj4gdGltZW91dA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmFuZ2UuDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgTU1JTyByZWdpc3RlciBoYXMgZXhwZWN0ZWQgdmFsdWUuDQo+ID4gKyAgQHJldHZhbCBP dGhlcnMgICAgICAgICAgICBUaGUgTU1JTyBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNIY1dhaXRNbWlvU2V0 ICgNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAg SU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgT2Zmc2V0LA0KPiA+ICsgIElOICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgIENvdW50LA0KPiA+ICsgIElOICBVSU5UNjQgICAgICAgICAgICAg ICAgICAgIE1hc2tWYWx1ZSwNCj4gPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBU ZXN0VmFsdWUsDQo+ID4gKyAgSU4gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVGltZW91dA0K PiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ ICsvKioNCj4gPiArICBTb2Z0d2FyZSByZXNldCB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNv bnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAgICAgICAgVGhlIFBD SSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAg IFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5kIHRv Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBzb2Z0d2FyZSBy ZXNldCBleGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICBUaGUgc29mdHdhcmUgcmVzZXQgZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJ X1NUQVRVUw0KPiA+ICtEd01tY0hjUmVzZXQgKA0KPiA+ICtmYXJrDQo+ID4gKyAgSU4gRUZJX1BD SV9JT19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAg ICBTbG90LA0KPiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiA+ ICsgICk7DQo+ID4gKyNlbHNlDQo+ID4gKy8qKg0KPiA+ICsgIFNvZnR3YXJlIHJlc2V0IHRoZSBz cGVjaWZpZWQgU0QvTU1DIGhvc3QgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsN Cj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBzb2Z0d2FyZSByZXNldCBleGVj dXRlcyBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUg c29mdHdhcmUgcmVzZXQgZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtEd01tY0hjUmVzZXQgKA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICBE ZXZCYXNlLA0KPiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiA+ ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ICsv KioNCj4gPiArICBTZXQgYWxsIGludGVycnVwdCBzdGF0dXMgYml0cyBpbiBOb3JtYWwgYW5kIEVy cm9yIEludGVycnVwdCBTdGF0dXMgRW5hYmxlDQo+ID4gKyAgcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5j ZS4NCj4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0 aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5kIHRvLg0KPiA+ICsNCj4gPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5 Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNFbmFibGVJbnRl cnJ1cHQgKA0KPiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiA+ICsg IElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xvdA0KPiA+ICsgICk7DQo+ID4gKyNlbHNlDQo+ ID4gKy8qKg0KPiA+ICsgIFNldCBhbGwgaW50ZXJydXB0IHN0YXR1cyBiaXRzIGluIE5vcm1hbCBh bmQgRXJyb3IgSW50ZXJydXB0IFN0YXR1cyBFbmFibGUNCj4gPiArICByZWdpc3Rlci4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29s IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVt YmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1hbmQgdG8uDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBleGVjdXRlcyBzdWNj ZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9u IGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0Vu YWJsZUludGVycnVwdCAoDQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICBEZXZC YXNlDQo+ID4gKyAgKTsNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjaWZkZWYgRFdNTUNfUENJ DQo+ID4gKy8qKg0KPiA+ICsgIEdldCB0aGUgY2FwYWJpbGl0eSBkYXRhIGZyb20gdGhlIHNwZWNp ZmllZCBzbG90Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBQY2lJbyAgICAgICAgICAgVGhl IFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBTbG90ICAgICAg ICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1h bmQgdG8uDQo+ID4gKyAgQHBhcmFtW291dF0gQ2FwYWJpbGl0eSAgICAgIFRoZSBidWZmZXIgdG8g c3RvcmUgdGhlIGNhcGFiaWxpdHkgZGF0YS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgIFRoZSBvcGVyYXRpb24gZXhlY3V0ZXMgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsg IEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0dldENhcGFiaWxpdHkgKA0K PiA+ICsgIElOICAgICBFRklfUENJX0lPX1BST1RPQ09MICAqUGNpSW8sDQo+ID4gKyAgSU4gICAg IEVGSV9IQU5ETEUgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAg ICAgICAgICAgICAgIFNsb3QsDQo+ID4gKyAgICAgT1VUIERXX01NQ19IQ19TTE9UX0NBUCAgICpD YXBhYmlsaXR5DQo+ID4gKyAgKTsNCj4gPiArI2Vsc2UNCj4gPiArLyoqDQo+ID4gKyAgR2V0IHRo ZSBjYXBhYmlsaXR5IGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIHNsb3QuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbVtpbl0gIERldklvICAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3Rh bmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNsb3QgICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIg b2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29tbWFuZCB0by4NCj4gPiArICBAcGFyYW1b b3V0XSBDYXBhYmlsaXR5ICAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgY2FwYWJpbGl0eSBk YXRhLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgVGhlIG9wZXJh dGlvbiBleGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtEd01tY0hjR2V0Q2FwYWJpbGl0eSAoDQo+ID4gKyAgSU4gIFVJTlROICAgICAg ICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOICAgICBFRklfSEFORExFICAgICAgICAg ICAgICBDb250cm9sbGVyLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBT bG90LA0KPiA+ICsgICAgIE9VVCBEV19NTUNfSENfU0xPVF9DQVAgICAgICAqQ2FwYWJpbGl0eQ0K PiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmIDANCj4gPiArLyoqDQo+ID4g KyAgR2V0IHRoZSBtYXhpbXVtIGN1cnJlbnQgY2FwYWJpbGl0eSBkYXRhIGZyb20gdGhlIHNwZWNp ZmllZCBzbG90Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBQY2lJbyAgICAgICAgICAgVGhl IFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBTbG90ICAgICAg ICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1h bmQgdG8uDQo+ID4gKyAgQHBhcmFtW291dF0gTWF4Q3VycmVudCAgICAgIFRoZSBidWZmZXIgdG8g c3RvcmUgdGhlIG1heGltdW0gY3VycmVudA0KPiBjYXBhYmlsaXR5IGRhdGEuDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICBUaGUgb3BlcmF0aW9uIGV4ZWN1dGVzIHN1 Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgVGhlIG9wZXJh dGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1j SGNHZXRNYXhDdXJyZW50ICgNCj4gPiArICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgKlBj aUlvLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICBTbG90LA0KPiA+ICsgICAg IE9VVCBVSU5UNjQgICAgICAgICAgICAgICAqTWF4Q3VycmVudA0KPiA+ICsgICk7DQo+ID4gKyNl bmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ICsvKioNCj4gPiArICBEZXRl Y3Qgd2hldGhlciB0aGVyZSBpcyBhIFNEL01NQyBjYXJkIGF0dGFjaGVkIGF0IHRoZSBzcGVjaWZp ZWQNCj4gU0QvTU1DIGhvc3QgY29udHJvbGxlcg0KPiA+ICsgIHNsb3QuDQo+ID4gKw0KPiA+ICsg IFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24g My4xIGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBQY2lJbyAgICAgICAg IFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgU2xvdCAg ICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29t bWFuZCB0by4NCj4gPiArICBAcGFyYW1bb3V0XSBNZWRpYVByZXNlbnQgIFRoZSBwb2ludGVyIHRv IHRoZSBtZWRpYSBwcmVzZW50IGJvb2xlYW4NCj4gdmFsdWUuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlcmUgaXMgbm8gbWVkaWEgY2hhbmdlIGhhcHBlbmVkLg0K PiA+ICsgIEByZXR2YWwgRUZJX01FRElBX0NIQU5HRUQgVGhlcmUgaXMgbWVkaWEgY2hhbmdlIGhh cHBlbmVkLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGRldGVjdGlvbiBm YWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNDYXJk RGV0ZWN0ICgNCj4gPiArICBJTiAgICAgRUZJX1BDSV9JT19QUk9UT0NPTCAgKlBjaUlvLA0KPiA+ ICsgIElOICAgICBFRklfSEFORExFICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsgIElOICAg ICBVSU5UOCAgICAgICAgICAgICAgICBTbG90LA0KPiA+ICsgICAgIE9VVCBCT09MRUFOICAgICAg ICAgICAgICAqTWVkaWFQcmVzZW50DQo+ID4gKyAgKTsNCj4gPiArI2Vsc2UNCj4gPiArLyoqDQo+ ID4gKyAgRGV0ZWN0IHdoZXRoZXIgdGhlcmUgaXMgYSBTRC9NTUMgY2FyZCBhdHRhY2hlZCBhdCB0 aGUgc3BlY2lmaWVkDQo+IFNEL01NQyBob3N0IGNvbnRyb2xsZXINCj4gPiArICBzbG90Lg0KPiA+ ICsNCj4gPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMu MCBTZWN0aW9uIDMuMSBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgRGV2 SW8gICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJh bVtpbl0gIFNsb3QgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNl bmQgdGhlDQo+IGNvbW1hbmQgdG8uDQo+ID4gKyAgQHBhcmFtW291dF0gTWVkaWFQcmVzZW50ICBU aGUgcG9pbnRlciB0byB0aGUgbWVkaWEgcHJlc2VudCBib29sZWFuDQo+IHZhbHVlLg0KPiA+ICsN Cj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZXJlIGlzIG5vIG1lZGlhIGNoYW5n ZSBoYXBwZW5lZC4NCj4gPiArICBAcmV0dmFsIEVGSV9NRURJQV9DSEFOR0VEIFRoZXJlIGlzIG1l ZGlhIGNoYW5nZSBoYXBwZW5lZC4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRo ZSBkZXRlY3Rpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtEd01tY0hjQ2FyZERldGVjdCAoDQo+ID4gKyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAg ICAgIERldkJhc2UsDQo+ID4gKyAgSU4gICAgIEVGSV9IQU5ETEUgICAgICAgICAgICAgIENvbnRy b2xsZXIsDQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4g KyAgICAgT1VUIEJPT0xFQU4gICAgICAgICAgICAgICAgICpNZWRpYVByZXNlbnQNCj4gPiArICAp Ow0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZmRlZiBEV01NQ19QQ0kNCj4gPiArLyoqDQo+ ID4gKyAgU3RvcCBTRC9NTUMgY2FyZCBjbG9jay4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0Qg SG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjIuMiBmb3IgZGV0 YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQY2lJbyAgICAgICAgICBUaGUgUENJIElP IHByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhl IHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1hbmQgdG8uDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgU3VjY2VlZCB0byBzdG9wIFNE L01NQyBjbG9jay4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIEZhaWwgdG8gc3Rv cCBTRC9NTUMgY2xvY2suDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtE d01tY0hjU3RvcENsb2NrICgNCj4gPiArICBJTiBFRklfUENJX0lPX1BST1RPQ09MICAgICpQY2lJ bywNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIFNsb3QNCj4gPiArICApOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgU0QvTU1DIGNhcmQgY2xvY2sgc3VwcGx5Lg0KPiA+ICsNCj4g PiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0 aW9uIDMuMi4xIGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBjaUlvICAg ICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBT bG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUN Cj4gY29tbWFuZCB0by4NCj4gPiArICBAcGFyYW1baW5dIENsb2NrRnJlcSAgICAgIFRoZSBtYXgg Y2xvY2sgZnJlcXVlbmN5IHRvIGJlIHNldC4gVGhlIHVuaXQgaXMNCj4gS0h6Lg0KPiA+ICsgIEBw YXJhbVtpbl0gQ2FwYWJpbGl0eSAgICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ID4g Kw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGNsb2NrIGlzIHN1cHBsaWVk IHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBjbG9j ayBpc24ndCBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJ X1NUQVRVUw0KPiA+ICtEd01tY0hjQ2xvY2tTdXBwbHkgKA0KPiA+ICsgIElOIEVGSV9QQ0lfSU9f UFJPVE9DT0wgICAgKlBjaUlvLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xv dCwNCj4gPiArICBJTiBVSU5UNjQgICAgICAgICAgICAgICAgIENsb2NrRnJlcSwNCj4gPiArICBJ TiBEV19NTUNfSENfU0xPVF9DQVAgICAgIENhcGFiaWxpdHkNCj4gPiArICApOw0KPiA+ICsjZWxz ZQ0KPiA+ICsvKioNCj4gPiArICBTdG9wIFNEL01NQyBjYXJkIGNsb2NrLg0KPiA+ICsNCj4gPiAr ICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBTZWN0aW9u IDMuMi4yIGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAg ICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgU3VjY2VlZCB0byBzdG9wIFNEL01NQyBjbG9jay4NCj4gPiAr ICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIEZhaWwgdG8gc3RvcCBTRC9NTUMgY2xvY2suDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjU3RvcENsb2NrICgN Cj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgIERldkJhc2UNCj4gPiArICApOw0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU0QvTU1DIGNhcmQgY2xvY2sgc3VwcGx5Lg0KPiA+ICsN Cj4gPiArICBSZWZlciB0byBTRCBIb3N0IENvbnRyb2xsZXIgU2ltcGxpZmllZCBzcGVjIDMuMCBT ZWN0aW9uIDMuMi4xIGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklv ICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W2luXSBDbG9ja0ZyZXEgICAgICBUaGUgbWF4IGNsb2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQuIFRo ZSB1bml0IGlzDQo+IEtIei4NCj4gPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBj YXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIFRoZSBjbG9jayBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZh bCBPdGhlcnMgICAgICAgICAgICBUaGUgY2xvY2sgaXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5 Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0Nsb2NrU3Vw cGx5ICgNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4g KyAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICBDbG9ja0ZyZXEsDQo+ID4gKyAgSU4gRFdfTU1D X0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ID4gKyAgKTsNCj4gPiArI2VuZGlmDQo+ID4g Kw0KPiA+ICsjaWYgMA0KPiA+ICsvKioNCj4gPiArICBTRC9NTUMgYnVzIHBvd2VyIGNvbnRyb2wu DQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNw ZWMgMy4wIFNlY3Rpb24gMy4zIGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d IFBjaUlvICAgICAgICAgIFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBh cmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8g c2VuZCB0aGUNCj4gY29tbWFuZCB0by4NCj4gPiArICBAcGFyYW1baW5dIFBvd2VyQ3RybCAgICAg IFRoZSB2YWx1ZSBzZXR0aW5nIHRvIHRoZSBwb3dlciBjb250cm9sIHJlZ2lzdGVyLg0KPiA+ICsN Cj4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgICAgIFRoZXJlIGlzIGEgU0QvTU1DIGNhcmQg YXR0YWNoZWQuDQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgICAgICBUaGVyZSBpcyBubyBh IFNEL01NQyBjYXJkIGF0dGFjaGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMN Cj4gPiArRHdNbWNIY1Bvd2VyQ29udHJvbCAoDQo+ID4gKyAgSU4gRUZJX1BDSV9JT19QUk9UT0NP TCAgICAqUGNpSW8sDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICBTbG90LA0KPiA+ ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgUG93ZXJDdHJsDQo+ID4gKyAgKTsNCj4gPiAr I2VuZGlmDQo+ID4gKw0KPiA+ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gKy8qKg0KPiA+ICsgIFNl dCB0aGUgU0QvTU1DIGJ1cyB3aWR0aC4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBD b250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjQgZm9yIGRldGFpbHMuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAgICAgICAgVGhlIFBDSSBJTyBwcm90b2Nv bCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51 bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5kIHRvLg0KPiA+ICsgIEBw YXJhbVtpbl0gQnVzV2lkdGggICAgICAgVGhlIGJ1cyB3aWR0aCB1c2VkIGJ5IHRoZSBTRC9NTUMg ZGV2aWNlLCBpdA0KPiBtdXN0IGJlIDEsIDQgb3IgOC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICBUaGUgYnVzIHdpZHRoIGlzIHNldCBzdWNjZXNzZnVsbHkuDQo+ID4g KyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgYnVzIHdpZHRoIGlzbid0IHNldCBzdWNj ZXNzZnVsbHkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hj U2V0QnVzV2lkdGggKA0KPiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0K PiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICBJTiBCT09MRUFO ICAgICAgICAgICAgICAgIElzRGRyLA0KPiA+ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAg QnVzV2lkdGgNCj4gPiArICApOw0KPiA+ICsjZWxzZQ0KPiA+ICsvKioNCj4gPiArICBTZXQgdGhl IFNEL01NQyBidXMgd2lkdGguDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJv bGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMy40IGZvciBkZXRhaWxzLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wg aW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUgYnVzIHdpZHRo IHVzZWQgYnkgdGhlIFNEL01NQyBkZXZpY2UsIGl0DQo+IG11c3QgYmUgMSwgNCBvciA4Lg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBidXMgd2lkdGggaXMgc2V0 IHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBidXMg d2lkdGggaXNuJ3Qgc2V0IHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0R3TW1jSGNTZXRCdXNXaWR0aCAoDQo+ID4gKyAgSU4gIFVJTlROICAgICAg ICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICAgICAg SXNEZHIsDQo+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICBCdXNXaWR0aA0KPiA+ICsg ICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ICsvKioN Cj4gPiArICBTdXBwbHkgU0QvTU1DIGNhcmQgd2l0aCBsb3dlc3QgY2xvY2sgZnJlcXVlbmN5IGF0 IGluaXRpYWxpemF0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAg IFRoZSBQQ0kgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAg ICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29t bWFuZCB0by4NCj4gPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmlsaXR5 IG9mIHRoZSBzbG90Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBjbG9jayBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICBUaGUgY2xvY2sgaXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0luaXRDbG9ja0ZyZXEgKA0K PiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLA0KPiA+ICsgIElOIFVJTlQ4 ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAg IENhcGFiaWxpdHkNCj4gPiArICApOw0KPiA+ICsjZWxzZQ0KPiA+ICsvKioNCj4gPiArICBTdXBw bHkgU0QvTU1DIGNhcmQgd2l0aCBsb3dlc3QgY2xvY2sgZnJlcXVlbmN5IGF0IGluaXRpYWxpemF0 aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0Ug SU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBDYXBhYmlsaXR5ICAgICBU aGUgY2FwYWJpbGl0eSBvZiB0aGUgc2xvdC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICBUaGUgY2xvY2sgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGNsb2NrIGlzbid0IHN1cHBsaWVkIHN1Y2Nlc3Nm dWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNJbml0 Q2xvY2tGcmVxICgNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICBDYXBhYmlsaXR5DQo+ID4gKyAgKTsNCj4g PiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjaWZkZWYgRFdNTUNfUENJDQo+ID4gKy8qKg0KPiA+ICsg IFN1cHBseSBTRC9NTUMgY2FyZCB3aXRoIG1heGltdW0gdm9sdGFnZSBhdCBpbml0aWFsaXphdGlv bi4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQg c3BlYyAzLjAgU2VjdGlvbiAzLjMgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtp bl0gUGNpSW8gICAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBA cGFyYW1baW5dIFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0 byBzZW5kIHRoZQ0KPiBjb21tYW5kIHRvLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAg ICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgVGhlIHZvbHRhZ2UgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIHZvbHRhZ2UgaXNuJ3Qgc3VwcGxpZWQg c3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdN bWNIY0luaXRQb3dlclZvbHRhZ2UgKA0KPiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAg KlBjaUlvLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICBJ TiBEV19NTUNfSENfU0xPVF9DQVAgICAgIENhcGFiaWxpdHkNCj4gPiArICApOw0KPiA+ICsjZWxz ZQ0KPiA+ICsvKioNCj4gPiArICBTdXBwbHkgU0QvTU1DIGNhcmQgd2l0aCBtYXhpbXVtIHZvbHRh Z2UgYXQgaW5pdGlhbGl6YXRpb24uDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29u dHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMy4zIGZvciBkZXRhaWxzLg0KPiA+ ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9j b2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBDYXBhYmlsaXR5ICAgICBUaGUgY2FwYWJp bGl0eSBvZiB0aGUgc2xvdC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICBUaGUgdm9sdGFnZSBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBP dGhlcnMgICAgICAgICAgICBUaGUgdm9sdGFnZSBpc24ndCBzdXBwbGllZCBzdWNjZXNzZnVsbHku DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjSW5pdFBvd2Vy Vm9sdGFnZSAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0KPiA+ICsgICk7DQo+ID4g KyNlbmRpZg0KPiA+ICsNCj4gPiArI2lmZGVmIERXTU1DX1BDSQ0KPiA+ICsvKioNCj4gPiArICBJ bml0aWFsaXplIHRoZSBUaW1lb3V0IENvbnRyb2wgcmVnaXN0ZXIgd2l0aCBtb3N0IGNvbnNlcnZh dGl2ZSB2YWx1ZSBhdA0KPiBpbml0aWFsaXphdGlvbi4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8g U0QgSG9zdCBDb250cm9sbGVyIFNpbXBsaWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAyLjIuMTUgZm9y IGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAgICAgICAgVGhlIFBD SSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAg IFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5kIHRv Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSB0aW1lb3V0IGNv bnRyb2wgcmVnaXN0ZXIgaXMgY29uZmlndXJlZA0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJl dHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgdGltZW91dCBjb250cm9sIHJlZ2lzdGVyIGlzbid0 IGNvbmZpZ3VyZWQNCj4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9T VEFUVVMNCj4gPiArRHdNbWNIY0luaXRUaW1lb3V0Q3RybCAoDQo+ID4gKyAgSU4gRUZJX1BDSV9J T19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICBT bG90DQo+ID4gKyAgKTsNCj4gPiArI2Vsc2UNCj4gPiArLyoqDQo+ID4gKyAgSW5pdGlhbGl6ZSB0 aGUgVGltZW91dCBDb250cm9sIHJlZ2lzdGVyIHdpdGggbW9zdCBjb25zZXJ2YXRpdmUgdmFsdWUg YXQNCj4gaW5pdGlhbGl6YXRpb24uDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29u dHJvbGxlciBTaW1wbGlmaWVkIHNwZWMgMy4wIFNlY3Rpb24gMi4yLjE1IGZvciBkZXRhaWxzLg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJv dG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xv dCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUNCj4gY29tbWFuZCB0by4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgdGltZW91dCBjb250cm9sIHJl Z2lzdGVyIGlzIGNvbmZpZ3VyZWQNCj4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3Ro ZXJzICAgICAgICAgICAgVGhlIHRpbWVvdXQgY29udHJvbCByZWdpc3RlciBpc24ndCBjb25maWd1 cmVkDQo+IHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0R3TW1jSGNJbml0VGltZW91dEN0cmwgKA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgRGV2QmFzZQ0KPiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2lm ZGVmIERXTU1DX1BDSQ0KPiA+ICsvKioNCj4gPiArICBJbml0aWFsIFNEL01NQyBob3N0IGNvbnRy b2xsZXIgd2l0aCBsb3dlc3QgY2xvY2sgZnJlcXVlbmN5LCBtYXggcG93ZXINCj4gYW5kIG1heCB0 aW1lb3V0IHZhbHVlDQo+ID4gKyAgYXQgaW5pdGlhbGl6YXRpb24uDQo+ID4gKw0KPiA+ICsgIEBw YXJhbVtpbl0gUGNpSW8gICAgICAgICAgVGhlIFBDSSBJTyBwcm90b2NvbCBpbnN0YW5jZS4NCj4g PiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0Qg Y2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5kIHRvLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2FwYWJp bGl0eSAgICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBpcyBpbml0aWFsaXplZCBz dWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgaG9zdCBj b250cm9sbGVyIGlzbid0IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNJbml0SG9zdCAoDQo+ID4gKyAgSU4gRUZJ X1BDSV9JT19QUk9UT0NPTCAgICAqUGNpSW8sDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAg ICAgICBTbG90LA0KPiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgQ2FwYWJpbGl0eQ0K PiA+ICsgICk7DQo+ID4gKyNlbHNlDQo+ID4gKy8qKg0KPiA+ICsgIEluaXRpYWwgU0QvTU1DIGhv c3QgY29udHJvbGxlciB3aXRoIGxvd2VzdCBjbG9jayBmcmVxdWVuY3ksIG1heCBwb3dlcg0KPiBh bmQNCj4gPiArICBtYXggdGltZW91dCB2YWx1ZSBhdCBpbml0aWFsaXphdGlvbi4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGlu c3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAgICAgVGhlIGNhcGFiaWxpdHkg b2YgdGhlIHNsb3QuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IGhvc3QgY29udHJvbGxlciBpcyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJl dHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgaG9zdCBjb250cm9sbGVyIGlzbid0IGluaXRpYWxp emVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4g K0R3TW1jSGNJbml0SG9zdCAoDQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICBE ZXZCYXNlLA0KPiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NBUCAgICAgICAgQ2FwYWJpbGl0eQ0K PiA+ICsgICk7DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9EV19NTUNfSENJ X0hfICovDQo+ID4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0luY2x1ZGUvUHJvdG9jb2wvUGxh dGZvcm1Ed01tYy5oDQo+IGIvRW1iZWRkZWRQa2cvSW5jbHVkZS9Qcm90b2NvbC9QbGF0Zm9ybUR3 TW1jLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u YWNiYzNlMTUzZGFjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0VtYmVkZGVkUGtnL0lu Y2x1ZGUvUHJvdG9jb2wvUGxhdGZvcm1Ed01tYy5oDQo+ID4gQEAgLTAsMCArMSw3OSBAQA0KPiA+ ICsvKiogQGZpbGUNCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8uIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlDQo+IGF2YWlsYWJsZQ0K PiA+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ug d2hpY2ggYWNjb21wYW5pZXMNCj4gdGhpcw0KPiA+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxs IHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0K PiBCQVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiov DQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fUExBVEZPUk1fRFdfTU1DX0hfXw0KPiA+ICsjZGVmaW5l IF9fUExBVEZPUk1fRFdfTU1DX0hfXw0KPiA+ICsNCj4gPiArdHlwZWRlZiBlbnVtIHsNCj4gPiAr ICBSZW1vdmFibGVTbG90LA0KPiA+ICsgIEVtYmVkZGVkU2xvdCwNCj4gPiArICBTaGFyZWRCdXNT bG90LA0KPiA+ICsgIFVua25vd25TbG90DQo+ID4gK30gRUZJX1NEX01NQ19TTE9UX1RZUEU7DQo+ ID4gKw0KPiA+ICt0eXBlZGVmIGVudW0gew0KPiA+ICsgIFVua25vd25DYXJkVHlwZSwNCj4gPiAr ICBTZENhcmRUeXBlLA0KPiA+ICsgIFNkaW9DYXJkVHlwZSwNCj4gPiArICBNbWNDYXJkVHlwZSwN Cj4gPiArICBFbW1jQ2FyZFR5cGUNCj4gPiArfSBTRF9NTUNfQ0FSRF9UWVBFOw0KPiA+ICsNCj4g PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJTlQzMiAgICAgICAgRGVmYXVsdFNwZWVkOjE7 ICAgIC8vIGJpdCAwDQo+ID4gKyAgVUlOVDMyICAgICAgICBIaWdoU3BlZWQ6MTsgICAgICAgLy8g Yml0IDENCj4gPiArICBVSU5UMzIgICAgICAgIFNkcjEyOjE7ICAgICAgICAgICAvLyBiaXQgMg0K PiA+ICsgIFVJTlQzMiAgICAgICAgU2RyMjU6MTsgICAgICAgICAgIC8vIGJpdCAzDQo+ID4gKyAg VUlOVDMyICAgICAgICBTZHI1MDoxOyAgICAgICAgICAgLy8gYml0IDQNCj4gPiArICBVSU5UMzIg ICAgICAgIFNkcjEwNDoxOyAgICAgICAgICAvLyBiaXQgNQ0KPiA+ICsgIFVJTlQzMiAgICAgICAg RGRyNTA6MTsgICAgICAgICAgIC8vIGJpdCA2DQo+ID4gKyAgVUlOVDMyICAgICAgICBTeXNCdXM2 NDoxOyAgICAgICAgLy8gYml0IDcNCj4gPiArICBVSU5UMzIgICAgICAgIEJ1c1dpZHRoOjQ7ICAg ICAgICAvLyBiaXQgMTE6OA0KPiA+ICsgIFVJTlQzMiAgICAgICAgU2xvdFR5cGU6MjsgICAgICAg IC8vIGJpdCAxMzoxMg0KPiA+ICsgIFVJTlQzMiAgICAgICAgQ2FyZFR5cGU6MzsgICAgICAgIC8v IGJpdCAxNjoxNA0KPiA+ICsgIFVJTlQzMiAgICAgICAgVm9sdGFnZTE4OjE7ICAgICAgIC8vIGJp dCAxNw0KPiA+ICsgIFVJTlQzMiAgICAgICAgVm9sdGFnZTMwOjE7ICAgICAgIC8vIGJpdCAxOA0K PiA+ICsgIFVJTlQzMiAgICAgICAgVm9sdGFnZTMzOjE7ICAgICAgIC8vIGJpdCAxOQ0KPiA+ICsg IFVJTlQzMiAgICAgICAgQmFzZUNsa0ZyZXE7DQo+ID4gKyAgRUZJX0hBTkRMRSAgICBDb250cm9s bGVyOw0KPiA+ICt9IERXX01NQ19IQ19TTE9UX0NBUDsNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8v IFByb3RvY29sIGludGVyZmFjZSBzdHJ1Y3R1cmUNCj4gPiArLy8NCj4gPiArdHlwZWRlZiBzdHJ1 Y3QgX1BMQVRGT1JNX0RXX01NQ19QUk9UT0NPTA0KPiBQTEFURk9STV9EV19NTUNfUFJPVE9DT0w7 DQo+ID4gKw0KPiA+ICt0eXBlZGVmDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArKEVGSUFQSSAqUExB VEZPUk1fRFdfTU1DX0dFVF9DQVBBQklMSVRZKSAoDQo+ID4gKyAgSU4gICAgIEVGSV9IQU5ETEUg ICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAg ICAgICBTbG90LA0KPiA+ICsgICAgIE9VVCBEV19NTUNfSENfU0xPVF9DQVAgICAgICpDYXBhYmls aXR5DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gK3R5cGVkZWYNCj4gPiArQk9PTEVBTg0KPiA+ICso RUZJQVBJICpQTEFURk9STV9EV19NTUNfQ0FSRF9ERVRFQ1QpICgNCj4gPiArICBJTiBFRklfSEFO RExFICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgIFNsb3QNCj4gPiArICApOw0KPiA+ICsNCj4gPiArc3RydWN0IF9QTEFURk9S TV9EV19NTUNfUFJPVE9DT0wgew0KPiA+ICsgIFBMQVRGT1JNX0RXX01NQ19HRVRfQ0FQQUJJTElU WSAgICAgICAgICAgICAgIEdldENhcGFiaWxpdHk7DQo+ID4gKyAgUExBVEZPUk1fRFdfTU1DX0NB UkRfREVURUNUICAgICAgICAgICAgICAgICAgQ2FyZERldGVjdDsNCj4gPiArfTsNCj4gPiArDQo+ ID4gK2V4dGVybiBFRklfR1VJRCBnUGxhdGZvcm1Ed01tY1Byb3RvY29sR3VpZDsNCj4gPiArDQo+ ID4gKyNlbmRpZiAvKiBfX1BMQVRGT1JNX0RXX01NQ19IX18gKi8NCj4gPiBkaWZmIC0tZ2l0IGEv RW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0NvbXBvbmVudE5hbWUuYw0KPiBiL0VtYmVk ZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Db21wb25lbnROYW1lLmMNCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWVkYWRlNjlkMDkxDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdNbWNIY0R4ZS9Db21w b25lbnROYW1lLmMNCj4gPiBAQCAtMCwwICsxLDIxNCBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiAr ICBVRUZJIENvbXBvbmVudCBOYW1lKDIpIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGZvciBEZXNp Z253YXJlDQo+IFNEL01NQyBob3N0DQo+ID4gKyAgY29udHJvbGxlciBkcml2ZXIuDQo+ID4gKw0K PiA+ICsgIENvcHlyaWdodCAoYykgMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgTGluYXJvIEx0ZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlDQo+IGF2YWlsYWJs ZQ0KPiA+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vu c2Ugd2hpY2ggYWNjb21wYW5pZXMNCj4gdGhpcw0KPiA+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUg UFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElT Ig0KPiBCQVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiRHdNbWNIY0R4ZS5oIg0KPiA+ICsNCj4gPiArLy8N Cj4gPiArLy8gRUZJIENvbXBvbmVudCBOYW1lIFByb3RvY29sDQo+ID4gKy8vDQo+ID4gK0dMT0JB TF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEDQo+IEVGSV9DT01QT05FTlRfTkFNRV9QUk9UT0NPTCBn RHdNbWNIY0NvbXBvbmVudE5hbWUgPSB7DQo+ID4gKyAgRHdNbWNIY0NvbXBvbmVudE5hbWVHZXRE cml2ZXJOYW1lLA0KPiA+ICsgIER3TW1jSGNDb21wb25lbnROYW1lR2V0Q29udHJvbGxlck5hbWUs DQo+ID4gKyAgImVuZyINCj4gPiArfTsNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIEVGSSBDb21w b25lbnQgTmFtZSAyIFByb3RvY29sDQo+ID4gKy8vDQo+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5S RUZFUkVOQ0VEDQo+IEVGSV9DT01QT05FTlRfTkFNRTJfUFJPVE9DT0wgZ0R3TW1jSGNDb21wb25l bnROYW1lMiA9IHsNCj4gPiArICAoRUZJX0NPTVBPTkVOVF9OQU1FMl9HRVRfRFJJVkVSX05BTUUp DQo+IER3TW1jSGNDb21wb25lbnROYW1lR2V0RHJpdmVyTmFtZSwNCj4gPiArICAoRUZJX0NPTVBP TkVOVF9OQU1FMl9HRVRfQ09OVFJPTExFUl9OQU1FKQ0KPiBEd01tY0hjQ29tcG9uZW50TmFtZUdl dENvbnRyb2xsZXJOYW1lLA0KPiA+ICsgICJlbiINCj4gPiArfTsNCj4gPiArDQo+ID4gK0dMT0JB TF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIEVGSV9VTklDT0RFX1NUUklOR19UQUJMRQ0KPiBtRHdN bWNIY0RyaXZlck5hbWVUYWJsZVtdID0gew0KPiA+ICsgIHsgImVuZztlbiIsIEwiRGVzaWdud2Fy ZSBTZC9NbWMgSG9zdCBDb250cm9sbGVyIERyaXZlciIgfSwNCj4gPiArICB7IE5VTEwgLCBOVUxM IH0NCj4gPiArfTsNCj4gPiArDQo+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIEVG SV9VTklDT0RFX1NUUklOR19UQUJMRQ0KPiBtRHdNbWNIY0NvbnRyb2xsZXJOYW1lVGFibGVbXSA9 IHsNCj4gPiArICB7ICJlbmc7ZW4iLCBMIkRlc2lnbndhcmUgU2QvTW1jIEhvc3QgQ29udHJvbGxl ciIgfSwNCj4gPiArICB7IE5VTEwgLCBOVUxMIH0NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFJldHJpZXZlcyBhIFVuaWNvZGUgc3RyaW5nIHRoYXQgaXMgdGhlIHVzZXIgcmVhZGFi bGUgbmFtZSBvZiB0aGUgZHJpdmVyLg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHJldHJp ZXZlcyB0aGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIGEgZHJpdmVyIGluIHRoZSBmb3JtIG9mDQo+ IGENCj4gPiArICBVbmljb2RlIHN0cmluZy4gSWYgdGhlIGRyaXZlciBzcGVjaWZpZWQgYnkgVGhp cyBoYXMgYSB1c2VyIHJlYWRhYmxlIG5hbWUgaW4NCj4gPiArICB0aGUgbGFuZ3VhZ2Ugc3BlY2lm aWVkIGJ5IExhbmd1YWdlLCB0aGVuIGEgcG9pbnRlciB0byB0aGUgZHJpdmVyIG5hbWUgaXMNCj4g PiArICByZXR1cm5lZCBpbiBEcml2ZXJOYW1lLCBhbmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQu IElmIHRoZSBkcml2ZXINCj4gc3BlY2lmaWVkDQo+ID4gKyAgYnkgVGhpcyBkb2VzIG5vdCBzdXBw b3J0IHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2UsDQo+ID4gKyAgdGhlbiBFRklf VU5TVVBQT1JURUQgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgVGhpc1tpbl0g ICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX0NPTVBPTkVOVF9OQU1FMl9QUk9U T0NPTCBvcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9DT01QT05F TlRfTkFNRV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBMYW5ndWFn ZVtpbl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEgTnVsbC10ZXJtaW5hdGVkIEFTQ0lJIHN0cmlu Zw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5IGluZGljYXRpbmcg dGhlIGxhbmd1YWdlLiBUaGlzIGlzIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxhbmd1YWdlIG9mIHRoZSBkcml2ZXIgbmFtZSB0aGF0IHRoZSBjYWxsZXIgaXMNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0aW5nLCBhbmQgaXQgbXVz dCBtYXRjaCBvbmUgb2YgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGFuZ3VhZ2VzIHNwZWNpZmllZCBpbiBTdXBwb3J0ZWRMYW5ndWFnZXMuIFRoZQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBsYW5ndWFnZXMgc3VwcG9ydGVk IGJ5IGEgZHJpdmVyIGlzIHVwDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG8gdGhlIGRyaXZlciB3cml0ZXIuIExhbmd1YWdlIGlzIHNwZWNpZmllZA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluIFJGQyA0NjQ2IG9yIElTTyA2MzktMiBsYW5ndWFn ZSBjb2RlIGZvcm1hdC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBEcml2ZXJOYW1lW291dF0gICAg ICAgQSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIHN0cmluZyB0byByZXR1cm4uDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBVbmljb2RlIHN0cmluZyBpcyB0aGUgbmFt ZSBvZiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3Bl Y2lmaWVkIGJ5IFRoaXMgaW4gdGhlIGxhbmd1YWdlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IExhbmd1YWdlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgVW5pY29kZSBzdHJpbmcgZm9yIHRoZSBEcml2ZXIg c3BlY2lmaWVkIGJ5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBh bmQgdGhlIGxhbmd1YWdlIHNwZWNpZmllZCBieSBMYW5ndWFnZSB3YXMNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBpbiBEcml2ZXJOYW1lLg0KPiA+ICsNCj4g PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBMYW5ndWFnZSBpcyBOVUxMLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBEcml2ZXJOYW1lIGlzIE5V TEwuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIFRoZSBkcml2 ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgZG9lcyBub3QNCj4gc3VwcG9ydA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2Uu DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdN bWNIY0NvbXBvbmVudE5hbWVHZXREcml2ZXJOYW1lICgNCj4gPiArICBJTiAgRUZJX0NPTVBPTkVO VF9OQU1FX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiArICBJTiAgQ0hBUjggICAgICAgICAgICAg ICAgICAgICAgICAgICAqTGFuZ3VhZ2UsDQo+ID4gKyAgT1VUIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgKipEcml2ZXJOYW1lDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJu IExvb2t1cFVuaWNvZGVTdHJpbmcyICgNCj4gPiArICAgICAgICAgICBMYW5ndWFnZSwNCj4gPiAr ICAgICAgICAgICBUaGlzLT5TdXBwb3J0ZWRMYW5ndWFnZXMsDQo+ID4gKyAgICAgICAgICAgbUR3 TW1jSGNEcml2ZXJOYW1lVGFibGUsDQo+ID4gKyAgICAgICAgICAgRHJpdmVyTmFtZSwNCj4gPiAr ICAgICAgICAgICAoQk9PTEVBTikoVGhpcyA9PSAmZ0R3TW1jSGNDb21wb25lbnROYW1lKQ0KPiA+ ICsgICAgICAgICAgICk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZl cyBhIFVuaWNvZGUgc3RyaW5nIHRoYXQgaXMgdGhlIHVzZXIgcmVhZGFibGUgbmFtZSBvZiB0aGUN Cj4gY29udHJvbGxlcg0KPiA+ICsgIHRoYXQgaXMgYmVpbmcgbWFuYWdlZCBieSBhIGRyaXZlci4N Cj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIHVzZXIgcmVhZGFibGUg bmFtZSBvZiB0aGUgY29udHJvbGxlciBzcGVjaWZpZWQNCj4gYnkNCj4gPiArICBDb250cm9sbGVy SGFuZGxlIGFuZCBDaGlsZEhhbmRsZSBpbiB0aGUgZm9ybSBvZiBhIFVuaWNvZGUgc3RyaW5nLiBJ ZiB0aGUNCj4gPiArICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMgaGFzIGEgdXNlciByZWFkYWJs ZSBuYW1lIGluIHRoZSBsYW5ndWFnZQ0KPiBzcGVjaWZpZWQgYnkNCj4gPiArICBMYW5ndWFnZSwg dGhlbiBhIHBvaW50ZXIgdG8gdGhlIGNvbnRyb2xsZXIgbmFtZSBpcyByZXR1cm5lZCBpbg0KPiBD b250cm9sbGVyTmFtZSwNCj4gPiArICBhbmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuICBJZiB0 aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGlzIG5vdA0KPiBjdXJyZW50bHkNCj4gPiArICBt YW5hZ2luZyB0aGUgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZSBhbmQg Q2hpbGRIYW5kbGUsDQo+ID4gKyAgdGhlbiBFRklfVU5TVVBQT1JURUQgaXMgcmV0dXJuZWQuICBJ ZiB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIGRvZXMNCj4gbm90DQo+ID4gKyAgc3VwcG9y dCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdlLCB0aGVuIEVGSV9VTlNVUFBPUlRF RCBpcw0KPiByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBUaGlzW2luXSAgICAgICAg ICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfQ09NUE9ORU5UX05BTUUyX1BST1RPQ09MIG9y DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0NPTVBPTkVOVF9OQU1F X1BST1RPQ09MIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIENvbnRyb2xsZXJIYW5k bGVbaW5dICBUaGUgaGFuZGxlIG9mIGEgY29udHJvbGxlciB0aGF0IHRoZSBkcml2ZXINCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgYnkgVGhpcyBpcyBtYW5h Z2luZy4gIFRoaXMgaGFuZGxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3BlY2lmaWVzIHRoZSBjb250cm9sbGVyIHdob3NlIG5hbWUgaXMgdG8gYmUNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFt ICBDaGlsZEhhbmRsZVtpbl0gICAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY2hpbGQgY29udHJvbGxl ciB0byByZXRyaWV2ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBu YW1lIG9mLiAgVGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1heSBiZSBOVUxMLiAgSXQgd2lsbCBiZSBOVUxMIGZv ciBkZXZpY2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzLiAg SXQgd2lsbCBhbHNvIGJlIE5VTEwgZm9yIGEgYnVzIGRyaXZlcnMNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGF0IHdpc2ggdG8gcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhl IGJ1cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuICBJ dCB3aWxsIG5vdCBiZSBOVUxMIGZvciBhIGJ1cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRyaXZlciB0aGF0IHdpc2hlcyB0byByZXRyaWV2ZSB0aGUgbmFtZSBvZiBhDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgY29udHJvbGxlci4NCj4g PiArDQo+ID4gKyAgQHBhcmFtICBMYW5ndWFnZVtpbl0gICAgICAgICAgQSBwb2ludGVyIHRvIGEg TnVsbC10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFycmF5IGluZGljYXRpbmcgdGhlIGxhbmd1YWdlLiAgVGhpcyBpcyB0aGUNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSBvZiB0aGUgZHJpdmVy IG5hbWUgdGhhdCB0aGUgY2FsbGVyIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVxdWVzdGluZywgYW5kIGl0IG11c3QgbWF0Y2ggb25lIG9mIHRoZQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlcyBzcGVjaWZpZWQgaW4gU3VwcG9y dGVkTGFuZ3VhZ2VzLiBUaGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu dW1iZXIgb2YgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBhIGRyaXZlciBpcyB1cA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkcml2ZXIgd3JpdGVyLiBMYW5ndWFn ZSBpcyBzcGVjaWZpZWQgaW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS RkMgNDY0NiBvciBJU08gNjM5LTIgbGFuZ3VhZ2UgY29kZSBmb3JtYXQuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbSAgQ29udHJvbGxlck5hbWVbb3V0XSAgIEEgcG9pbnRlciB0byB0aGUgVW5pY29kZSBz dHJpbmcgdG8NCj4gcmV0dXJuLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRoaXMgVW5pY29kZSBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgdGhlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgQ29udHJvbGxlckhh bmRsZSBhbmQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGlsZEhhbmRs ZSBpbiB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGFuZ3VhZ2UgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgZHJpdmVy DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IFRoaXMu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBVbmljb2Rl IHN0cmluZyBmb3IgdGhlIHVzZXIgcmVhZGFibGUNCj4gbmFtZSBpbg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYW5ndWFnZSBzcGVjaWZpZWQgYnkgTGFuZ3VhZ2Ug Zm9yIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBzcGVj aWZpZWQgYnkgVGhpcyB3YXMgcmV0dXJuZWQgaW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBEcml2ZXJOYW1lLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiBDb250cm9sbGVySGFuZGxlIGlzIG5vdCBhIHZhbGlkDQo+IEVGSV9IQU5ETEUu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIENoaWxkSGFuZGxl IGlzIG5vdCBOVUxMIGFuZCBpdCBpcyBub3QgYQ0KPiB2YWxpZA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9IQU5ETEUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSIExhbmd1YWdlIGlzIE5VTEwuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIENvbnRyb2xsZXJOYW1lIGlzIE5VTEwuDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIFRoZSBkcml2ZXIgc3BlY2lmaWVk IGJ5IFRoaXMgaXMgbm90DQo+IGN1cnJlbnRseQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1hbmFnaW5nIHRoZSBjb250cm9sbGVyIHNwZWNpZmllZCBieQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUgYW5kIENoaWxkSGFu ZGxlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICBUaGUgZHJp dmVyIHNwZWNpZmllZCBieSBUaGlzIGRvZXMgbm90DQo+IHN1cHBvcnQNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkIGJ5IExhbmd1YWdl Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0R3 TW1jSGNDb21wb25lbnROYW1lR2V0Q29udHJvbGxlck5hbWUgKA0KPiA+ICsgIElOICBFRklfQ09N UE9ORU5UX05BTUVfUFJPVE9DT0wgICAgICpUaGlzLA0KPiA+ICsgIElOICBFRklfSEFORExFICAg ICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gKyAgSU4gIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgICAgICAgQ2hpbGRIYW5kbGUsIE9QVElPTkFMDQo+ID4gKyAgSU4g IENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxhbmd1YWdlLA0KPiA+ICsgIE9VVCBD SEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICoqQ29udHJvbGxlck5hbWUNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiAr ICBpZiAoTGFuZ3VhZ2UgPT0gTlVMTCB8fCBDb250cm9sbGVyTmFtZSA9PSBOVUxMKSB7DQo+ID4g KyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBUaGlzIGlzIGEgZGV2aWNlIGRyaXZlciwgc28gQ2hpbGRIYW5kbGUg bXVzdCBiZSBOVUxMLg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKENoaWxkSGFuZGxlICE9IE5VTEwp IHsNCj4gPiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICAvLw0KPiA+ICsgIC8vIE1ha2Ugc3VyZSB0aGlzIGRyaXZlciBpcyBjdXJyZW50bHkgbWFu YWdpbmcgQ29udHJvbGxlckhhbmRsZQ0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gRWZpVGVz dE1hbmFnZWREZXZpY2UgKA0KPiA+ICsgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSwNCj4g PiArICAgICAgICAgICAgIGdEd01tY0hjRHJpdmVyQmluZGluZy5Ecml2ZXJCaW5kaW5nSGFuZGxl LA0KPiA+ICsgICAgICAgICAgICAgJmdFZmlQY2lJb1Byb3RvY29sR3VpZA0KPiA+ICsgICAgICAg ICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIExvb2t1cFVuaWNvZGVT dHJpbmcyICgNCj4gPiArICAgICAgICAgICBMYW5ndWFnZSwNCj4gPiArICAgICAgICAgICBUaGlz LT5TdXBwb3J0ZWRMYW5ndWFnZXMsDQo+ID4gKyAgICAgICAgICAgbUR3TW1jSGNDb250cm9sbGVy TmFtZVRhYmxlLA0KPiA+ICsgICAgICAgICAgIENvbnRyb2xsZXJOYW1lLA0KPiA+ICsgICAgICAg ICAgIChCT09MRUFOKShUaGlzID09ICZnRHdNbWNIY0NvbXBvbmVudE5hbWUpDQo+ID4gKyAgICAg ICAgICAgKTsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3 TW1jSGNEeGUvRHdNbWNIY0R4ZS5jDQo+IGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhl L0R3TW1jSGNEeGUuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw MDAwMDAwLi5hZWExMjE3MGQyY2MNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvRW1iZWRk ZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3TW1jSGNEeGUuYw0KPiA+IEBAIC0wLDAgKzEsMTI5 NiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBUaGlzIGRyaXZlciBpcyB1c2VkIHRvIG1hbmFn ZSBEZXNpZ253YXJlIFNEL01NQyBob3N0IGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIEl0IHdv dWxkIGV4cG9zZSBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCBmb3IgdXBwZXIgbGF5ZXIN Cj4gdXNlLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDIxLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChD KSAyMDE2IE1hcnZlbGwgSW50ZXJuYXRpb25hbCBMdGQuIEFsbCByaWd0aHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ICsgIENvcHlyaWdodCAoQykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ3RocyByZXNl cnZlZC48QlI+DQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPiArICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3Jn L2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywN Cj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RldmljZVBhdGhMaWIu aD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJh cnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvTm9uRGlz Y292ZXJhYmxlRGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2Vydmlj ZXNUYWJsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpRHJpdmVyRW50cnlQb2lu dC5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFByb3RvY29sL0RldmljZVBhdGguaD4NCj4gPiAr I2luY2x1ZGUgPFByb3RvY29sL1BsYXRmb3JtRHdNbWMuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRl ICJEd01tY0hjRHhlLmgiDQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBEcml2ZXIgR2xvYmFsIFZh cmlhYmxlcw0KPiA+ICsvLw0KPiA+ICtFRklfRFJJVkVSX0JJTkRJTkdfUFJPVE9DT0wgZ0R3TW1j SGNEcml2ZXJCaW5kaW5nID0gew0KPiA+ICsgIER3TW1jSGNEcml2ZXJCaW5kaW5nU3VwcG9ydGVk LA0KPiA+ICsgIER3TW1jSGNEcml2ZXJCaW5kaW5nU3RhcnQsDQo+ID4gKyAgRHdNbWNIY0RyaXZl ckJpbmRpbmdTdG9wLA0KPiA+ICsgIDB4MTAsDQo+ID4gKyAgTlVMTCwNCj4gPiArICBOVUxMDQo+ ID4gK307DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBUZW1wbGF0ZSBmb3IgRGVzaWdud2FyZSBT RC9NTUMgaG9zdCBjb250cm9sbGVyIHByaXZhdGUgZGF0YS4NCj4gPiArLy8NCj4gPiArRFdfTU1D X0hDX1BSSVZBVEVfREFUQSBnRHdNbWNIY1RlbXBsYXRlID0gew0KPiA+ICsgIERXX01NQ19IQ19Q UklWQVRFX1NJR05BVFVSRSwgICAgICAvLyBTaWduYXR1cmUNCj4gPiArICBOVUxMLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gQ29udHJvbGxlckhhbmRsZQ0KPiA+ICsgIDB4MCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1taW8gYmFzZSBhZGRyZXNzDQo+ID4gKyAgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhc3NUaHJ1DQo+ID4gKyAgICBzaXpl b2YgKFVJTlQzMiksDQo+ID4gKyAgICBEd01tY1Bhc3NUaHJ1UGFzc1RocnUsDQo+ID4gKyAgICBE d01tY1Bhc3NUaHJ1R2V0TmV4dFNsb3QsDQo+ID4gKyAgICBEd01tY1Bhc3NUaHJ1QnVpbGREZXZp Y2VQYXRoLA0KPiA+ICsgICAgRHdNbWNQYXNzVGhydUdldFNsb3ROdW1iZXIsDQo+ID4gKyAgICBE d01tY1Bhc3NUaHJ1UmVzZXREZXZpY2UNCj4gPiArICB9LA0KPiA+ICsgIE5VTEwsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyBQbGF0Zm9ybUR3TW1jDQo+ID4gKyAgMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXZpb3VzU2xvdA0KPiA+ICsgIE5VTEwsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBUaW1lckV2ZW50DQo+ID4gKyAgTlVMTCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIENvbm5lY3RFdmVudA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBRdWV1ZQ0KPiA+ICsgIElOSVRJQUxJWkVfTElTVF9I RUFEX1ZBUklBQkxFIChnRHdNbWNIY1RlbXBsYXRlLlF1ZXVlKSwNCj4gPiArICB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2xvdA0KPiA+ICsgICAgezAsIFVua25vd25TbG90 LCAwLCAwLCAwfQ0KPiA+ICsgIH0sDQo+ID4gKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIENhcGFiaWxpdHkNCj4gPiArICAgIHswfQ0KPiA+ICsgIH0sDQo+ID4gKyAgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1heEN1cnJlbnQNCj4gPiArICAgIDAN Cj4gPiArICB9LA0KPiA+ICsgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBD b250cm9sbGVyVmVyc2lvbg0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArU0RfREVWSUNFX1BBVEggICAg bVNkRHBUZW1wbGF0ZSA9IHsNCj4gPiArICB7DQo+ID4gKyAgICBNRVNTQUdJTkdfREVWSUNFX1BB VEgsDQo+ID4gKyAgICBNU0dfU0RfRFAsDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIChVSU5UOCkg KHNpemVvZiAoU0RfREVWSUNFX1BBVEgpKSwNCj4gPiArICAgICAgKFVJTlQ4KSAoKHNpemVvZiAo U0RfREVWSUNFX1BBVEgpKSA+PiA4KQ0KPiA+ICsgICAgfQ0KPiA+ICsgIH0sDQo+ID4gKyAgMA0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArRU1NQ19ERVZJQ0VfUEFUSCAgICBtRW1tY0RwVGVtcGxhdGUg PSB7DQo+ID4gKyAgew0KPiA+ICsgICAgTUVTU0FHSU5HX0RFVklDRV9QQVRILA0KPiA+ICsgICAg TVNHX0VNTUNfRFAsDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIChVSU5UOCkgKHNpemVvZiAoRU1N Q19ERVZJQ0VfUEFUSCkpLA0KPiA+ICsgICAgICAoVUlOVDgpICgoc2l6ZW9mIChFTU1DX0RFVklD RV9QQVRIKSkgPj4gOCkNCj4gPiArICAgIH0NCj4gPiArICB9LA0KPiA+ICsgIDANCj4gPiArfTsN Cj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIFByaW9yaXRpemVkIGZ1bmN0aW9uIGxpc3QgdG8gZGV0 ZWN0IGNhcmQgdHlwZS4NCj4gPiArLy8gVXNlciBjb3VsZCBhZGQgb3RoZXIgY2FyZCBkZXRlY3Rp b24gbG9naWMgaGVyZS4NCj4gPiArLy8NCj4gPiArRFdNTUNfQ0FSRF9UWVBFX0RFVEVDVF9ST1VU SU5FDQo+IG1DYXJkVHlwZURldGVjdFJvdXRpbmVUYWJsZVtdID0gew0KPiA+ICsgIEVtbWNJZGVu dGlmaWNhdGlvbiwNCj4gPiArICBTZENhcmRJZGVudGlmaWNhdGlvbiwNCj4gPiArICBOVUxMDQo+ ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGUgZW50cnkgcG9pbnQgZm9yIFNEIGhv c3QgY29udHJvbGxlciBkcml2ZXIsIHVzZWQgdG8gaW5zdGFsbCB0aGlzIGRyaXZlciBvbg0KPiB0 aGUgSW1hZ2VIYW5kbGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIEltYWdlSGFuZGxlICAg VGhlIGZpcm13YXJlIGFsbG9jYXRlZCBoYW5kbGUgZm9yIHRoaXMgZHJpdmVyDQo+IGltYWdlLg0K PiA+ICsgIEBwYXJhbVtpbl0gIFN5c3RlbVRhYmxlICAgUG9pbnRlciB0byB0aGUgRUZJIHN5c3Rl bSB0YWJsZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIERyaXZlciBsb2Fk ZWQuDQo+ID4gKyAgQHJldHZhbCBvdGhlciAgICAgICAgIERyaXZlciBub3QgbG9hZGVkLg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0luaXRpYWxp emVEd01tY0hjRHhlICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFN0 YXR1cyA9IEVmaUxpYkluc3RhbGxEcml2ZXJCaW5kaW5nQ29tcG9uZW50TmFtZTIgKA0KPiA+ICsg ICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICBTeXN0ZW1UYWJsZSwN Cj4gPiArICAgICAgICAgICAgICZnRHdNbWNIY0RyaXZlckJpbmRpbmcsDQo+ID4gKyAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICZnRHdNbWNIY0NvbXBvbmVudE5h bWUsDQo+ID4gKyAgICAgICAgICAgICAmZ0R3TW1jSGNDb21wb25lbnROYW1lMg0KPiA+ICsgICAg ICAgICAgICAgKTsNCj4gPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ICsNCj4g PiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBDYWxs IGJhY2sgZnVuY3Rpb24gd2hlbiB0aGUgdGltZXIgZXZlbnQgaXMgc2lnbmFsZWQuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbVtpbl0gIEV2ZW50ICAgICBUaGUgRXZlbnQgdGhpcyBub3RpZnkgZnVuY3Rp b24gcmVnaXN0ZXJlZCB0by4NCj4gPiArICBAcGFyYW1baW5dICBDb250ZXh0ICAgUG9pbnRlciB0 byB0aGUgY29udGV4dCBkYXRhIHJlZ2lzdGVyZWQgdG8gdGhlDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIEV2ZW50Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJ DQo+ID4gK1Byb2Nlc3NBc3luY1Rhc2tMaXN0ICgNCj4gPiArICBJTiBFRklfRVZFTlQgICAgICAg ICAgRXZlbnQsDQo+ID4gKyAgSU4gVk9JRCogICAgICAgICAgICAgIENvbnRleHQNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAgICAqUHJp dmF0ZTsNCj4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICAgICAqTGluazsN Cj4gPiArICBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAgICAqVHJiOw0KPiA+ICsg IEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklf U0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0Ow0KPiA+ICsgIEJPT0xFQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZmluaXRlV2FpdDsNCj4gPiArICBFRklfRVZF TlQgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmJFdmVudDsNCj4gPiArDQo+ID4gKyAgUHJp dmF0ZSA9IChEV19NTUNfSENfUFJJVkFURV9EQVRBICopQ29udGV4dDsNCj4gPiArDQo+ID4gKyAg Ly8NCj4gPiArICAvLyBDaGVjayBpZiB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGFzeW5jIEkvTyBx dWV1ZSBpcyBkb25lIG9yIG5vdC4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IEVGSV9TVUND RVNTOw0KPiA+ICsgIFRyYiAgICA9IE5VTEw7DQo+ID4gKyAgTGluayAgID0gR2V0Rmlyc3ROb2Rl ICgmUHJpdmF0ZS0+UXVldWUpOw0KPiA+ICsgIGlmICghSXNOdWxsICgmUHJpdmF0ZS0+UXVldWUs IExpbmspKSB7DQo+ID4gKyAgICBUcmIgPSBEV19NTUNfSENfVFJCX0ZST01fVEhJUyAoTGluayk7 DQo+ID4gKyAgICBpZiAoIVByaXZhdGUtPlNsb3RbVHJiLT5TbG90XS5NZWRpYVByZXNlbnQpIHsN Cj4gPiArICAgICAgU3RhdHVzID0gRUZJX05PX01FRElBOw0KPiA+ICsgICAgICBnb3RvIERvbmU7 DQo+ID4gKyAgICB9DQo+ID4gKyAgICBpZiAoIVRyYi0+U3RhcnRlZCkgew0KPiA+ICsgICAgICAv Lw0KPiA+ICsgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBjbWQvZGF0YSBsaW5lIGlzIHJlYWR5 IGZvciB0cmFuc2Zlci4NCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgU3RhdHVzID0gRHdNbWND aGVja1RyYkVudiAoUHJpdmF0ZSwgVHJiKTsNCj4gPiArICAgICAgaWYgKCFFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiArICAgICAgICBUcmItPlN0YXJ0ZWQgPSBUUlVFOw0KPiA+ICsgICAgICAg IFN0YXR1cyA9IER3TW1jRXhlY1RyYiAoUHJpdmF0ZSwgVHJiKTsNCj4gPiArICAgICAgICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgICAgICBnb3RvIERvbmU7DQo+ID4gKyAg ICAgICAgfQ0KPiA+ICsgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIGdvdG8gRG9uZTsNCj4g PiArICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsgICAgU3RhdHVzID0gRHdNbWNDaGVja1RyYlJl c3VsdCAoUHJpdmF0ZSwgVHJiKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICtEb25lOg0KPiA+ICsg IGlmICgoVHJiICE9IE5VTEwpICYmIChTdGF0dXMgPT0gRUZJX05PVF9SRUFEWSkpIHsNCj4gPiAr ICAgIFBhY2tldCA9IFRyYi0+UGFja2V0Ow0KPiA+ICsgICAgaWYgKFBhY2tldC0+VGltZW91dCA9 PSAwKSB7DQo+ID4gKyAgICAgIEluZmluaXRlV2FpdCA9IFRSVUU7DQo+ID4gKyAgICB9IGVsc2Ug ew0KPiA+ICsgICAgICBJbmZpbml0ZVdhaXQgPSBGQUxTRTsNCj4gPiArICAgIH0NCj4gPiArICAg IGlmICgoIUluZmluaXRlV2FpdCkgJiYgKFRyYi0+VGltZW91dC0tID09IDApKSB7DQo+ID4gKyAg ICAgIFJlbW92ZUVudHJ5TGlzdCAoTGluayk7DQo+ID4gKyAgICAgIFRyYi0+UGFja2V0LT5UcmFu c2FjdGlvblN0YXR1cyA9IEVGSV9USU1FT1VUOw0KPiA+ICsgICAgICBUcmJFdmVudCA9IFRyYi0+ RXZlbnQ7DQo+ID4gKyAgICAgIER3TW1jRnJlZVRyYiAoVHJiKTsNCj4gPiArICAgICAgREVCVUcg KCgNCj4gPiArICAgICAgICBERUJVR19WRVJCT1NFLA0KPiA+ICsgICAgICAgICJQcm9jZXNzQXN5 bmNUYXNrTGlzdCgpOiBTaWduYWwgRXZlbnQgJXAgRUZJX1RJTUVPVVRcbiIsDQo+ID4gKyAgICAg ICAgVHJiRXZlbnQNCj4gPiArICAgICAgICApKTsNCj4gPiArICAgICAgZ0JTLT5TaWduYWxFdmVu dCAoVHJiRXZlbnQpOw0KPiA+ICsgICAgICByZXR1cm47DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0K PiA+ICsgIGlmICgoVHJiICE9IE5VTEwpICYmIChTdGF0dXMgIT0gRUZJX05PVF9SRUFEWSkpIHsN Cj4gPiArICAgIFJlbW92ZUVudHJ5TGlzdCAoTGluayk7DQo+ID4gKyAgICBUcmItPlBhY2tldC0+ VHJhbnNhY3Rpb25TdGF0dXMgPSBTdGF0dXM7DQo+ID4gKyAgICBUcmJFdmVudCA9IFRyYi0+RXZl bnQ7DQo+ID4gKyAgICBEd01tY0ZyZWVUcmIgKFRyYik7DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ ICsgICAgICBERUJVR19WRVJCT1NFLA0KPiA+ICsgICAgICAiUHJvY2Vzc0FzeW5jVGFza0xpc3Qo KTogU2lnbmFsIEV2ZW50ICVwIHdpdGggJXJcbiIsDQo+ID4gKyAgICAgIFRyYkV2ZW50LA0KPiA+ ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICBnQlMtPlNpZ25hbEV2ZW50 IChUcmJFdmVudCk7DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybjsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgU2QgcmVtb3ZhYmxlIGRldmljZSBlbnVtZXJhdGlvbiBjYWxsYmFjayBm dW5jdGlvbiB3aGVuIHRoZSB0aW1lcg0KPiBldmVudCBpcyBzaWduYWxlZC4NCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luXSAgRXZlbnQgICAgIFRoZSBFdmVudCB0aGlzIG5vdGlmeSBmdW5jdGlvbiBy ZWdpc3RlcmVkIHRvLg0KPiA+ICsgIEBwYXJhbVtpbl0gIENvbnRleHQgICBQb2ludGVyIHRvIHRo ZSBjb250ZXh0IGRhdGEgcmVnaXN0ZXJlZCB0byB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgRXZlbnQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4g PiArRHdNbWNIY0VudW1lcmF0ZURldmljZSAoDQo+ID4gKyAgSU4gRUZJX0VWRU5UICAgICAgICAg IEV2ZW50LA0KPiA+ICsgIElOIFZPSUQqICAgICAgICAgICAgICBDb250ZXh0DQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgICAgKlByaXZh dGU7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhUHJlc2VudDsN Cj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3V0aW5lTnVtOw0K PiA+ICsgIERXTU1DX0NBUkRfVFlQRV9ERVRFQ1RfUk9VVElORSAgICAgICpSb3V0aW5lOw0KPiA+ ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsgIExJ U1RfRU5UUlkgICAgICAgICAgICAgICAgICAgICAgICAgICpMaW5rOw0KPiA+ICsgIExJU1RfRU5U UlkgICAgICAgICAgICAgICAgICAgICAgICAgICpOZXh0TGluazsNCj4gPiArICBEV19NTUNfSENf VFJCICAgICAgICAgICAgICAgICAgICAgICAqVHJiOw0KPiA+ICsgIEVGSV9UUEwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9sZFRwbDsNCj4gPiArDQo+ID4gKyAgUHJpdmF0ZSA9IChEV19N TUNfSENfUFJJVkFURV9EQVRBICopQ29udGV4dDsNCj4gPiArDQo+ID4gKyAgaWYgKChQcml2YXRl LT5TbG90WzBdLkVuYWJsZSkgJiYNCj4gPiArICAgICAgKFByaXZhdGUtPlNsb3RbMF0uU2xvdFR5 cGUgPT0gUmVtb3ZhYmxlU2xvdCkpIHsNCj4gPiArICAgIFN0YXR1cyA9IER3TW1jSGNDYXJkRGV0 ZWN0ICgNCj4gPiArICAgICAgICAgICAgICAgUHJpdmF0ZS0+RGV2QmFzZSwNCj4gPiArICAgICAg ICAgICAgICAgUHJpdmF0ZS0+Q29udHJvbGxlckhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAg MCwNCj4gPiArICAgICAgICAgICAgICAgJk1lZGlhUHJlc2VudA0KPiA+ICsgICAgICAgICAgICAg ICApOw0KPiA+ICsgICAgaWYgKChTdGF0dXMgPT0gRUZJX01FRElBX0NIQU5HRUQpICYmICFNZWRp YVByZXNlbnQpIHsNCj4gPiArICAgICAgREVCVUcgKCgNCj4gPiArICAgICAgICBERUJVR19JTkZP LA0KPiA+ICsgICAgICAgICJEd01tY0hjRW51bWVyYXRlRGV2aWNlOiBkZXZpY2UgZGlzY29ubmVj dGVkIGF0ICVwXG4iLA0KPiA+ICsgICAgICAgIFByaXZhdGUtPkRldkJhc2UNCj4gPiArICAgICAg ICApKTsNCj4gPiArICAgICAgUHJpdmF0ZS0+U2xvdFswXS5NZWRpYVByZXNlbnQgPSBGQUxTRTsN Cj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gU2lnbmFsIGFsbCBhc3luYyB0YXNrIGV2ZW50 cyBhdCB0aGUgc2xvdCB3aXRoIEVGSV9OT19NRURJQSBzdGF0dXMuDQo+ID4gKyAgICAgIC8vDQo+ ID4gKyAgICAgIE9sZFRwbCA9IGdCUy0+UmFpc2VUUEwgKFRQTF9OT1RJRlkpOw0KPiA+ICsgICAg ICBmb3IgKExpbmsgPSBHZXRGaXJzdE5vZGUgKCZQcml2YXRlLT5RdWV1ZSk7DQo+ID4gKyAgICAg ICAgICAgIUlzTnVsbCAoJlByaXZhdGUtPlF1ZXVlLCBMaW5rKTsNCj4gPiArICAgICAgICAgICBM aW5rID0gTmV4dExpbmspIHsNCj4gPiArICAgICAgICBOZXh0TGluayA9IEdldE5leHROb2RlICgm UHJpdmF0ZS0+UXVldWUsIExpbmspOw0KPiA+ICsgICAgICAgIFRyYiA9IERXX01NQ19IQ19UUkJf RlJPTV9USElTIChMaW5rKTsNCj4gPiArICAgICAgICBpZiAoVHJiLT5TbG90ID09IDApIHsNCj4g PiArICAgICAgICAgIFJlbW92ZUVudHJ5TGlzdCAoTGluayk7DQo+ID4gKyAgICAgICAgICBUcmIt PlBhY2tldC0+VHJhbnNhY3Rpb25TdGF0dXMgPSBFRklfTk9fTUVESUE7DQo+ID4gKyAgICAgICAg ICBnQlMtPlNpZ25hbEV2ZW50IChUcmItPkV2ZW50KTsNCj4gPiArICAgICAgICAgIER3TW1jRnJl ZVRyYiAoVHJiKTsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgZ0JT LT5SZXN0b3JlVFBMIChPbGRUcGwpOw0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBOb3Rp ZnkgdGhlIHVwcGVyIGxheWVyIHRoZSBjb25uZWN0IHN0YXRlIGNoYW5nZSB0aHJvdWdoDQo+ID4g KyAgICAgIC8vIFJlaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlLg0KPiA+ICsgICAgICAvLw0KPiA+ ICsgICAgICBnQlMtPlJlaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiArICAgICAgICAg ICAgUHJpdmF0ZS0+Q29udHJvbGxlckhhbmRsZSwNCj4gPiArICAgICAgICAgICAgJmdFZmlTZE1t Y1Bhc3NUaHJ1UHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAmUHJpdmF0ZS0+UGFzc1Ro cnUsDQo+ID4gKyAgICAgICAgICAgICZQcml2YXRlLT5QYXNzVGhydQ0KPiA+ICsgICAgICAgICAg ICApOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgaWYgKChTdGF0dXMgPT0gRUZJX01FRElBX0NIQU5H RUQpICYmIE1lZGlhUHJlc2VudCkgew0KPiA+ICsgICAgICBERUJVRyAoKA0KPiA+ICsgICAgICAg IERFQlVHX0lORk8sDQo+ID4gKyAgICAgICAgIkR3TW1jSGNFbnVtZXJhdGVEZXZpY2U6IGRldmlj ZSBjb25uZWN0ZWQgYXQgJXBcbiIsDQo+ID4gKyAgICAgICAgUHJpdmF0ZS0+RGV2QmFzZQ0KPiA+ ICsgICAgICAgICkpOw0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBJbml0aWFsaXplIHNs b3QgYW5kIHN0YXJ0IGlkZW50aWZpY2F0aW9uIHByb2Nlc3MgZm9yIHRoZSBuZXcNCj4gPiArICAg ICAgLy8gYXR0YWNoZWQgZGV2aWNlDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIFN0YXR1cyA9 IER3TW1jSGNJbml0SG9zdCAoUHJpdmF0ZS0+RGV2QmFzZSwgUHJpdmF0ZS0+Q2FwYWJpbGl0eVsw XSk7DQo+ID4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgICBy ZXR1cm47DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gUmVzZXQg dGhlIHNwZWNpZmllZCBzbG90IG9mIHRoZSBTRC9NTUMgUGNpIEhvc3QgQ29udHJvbGxlcg0KPiA+ ICsgICAgICAvLw0KPiA+ICsgICAgICBTdGF0dXMgPSBEd01tY0hjUmVzZXQgKFByaXZhdGUtPkRl dkJhc2UsIFByaXZhdGUtPkNhcGFiaWxpdHlbMF0pOw0KPiA+ICsgICAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICAgICAgcmV0dXJuOw0KPiA+ICsgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICBQcml2YXRlLT5TbG90WzBdLk1lZGlhUHJlc2VudCA9IFRSVUU7DQo+ID4gKyAg ICAgIFJvdXRpbmVOdW0gPSBzaXplb2YgKG1DYXJkVHlwZURldGVjdFJvdXRpbmVUYWJsZSkgLw0K PiA+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChEV01NQ19DQVJEX1RZUEVfREVURUNUX1JP VVRJTkUpOw0KPiA+ICsgICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBSb3V0aW5lTnVtOyBJ bmRleCsrKSB7DQo+ID4gKyAgICAgICAgUm91dGluZSA9ICZtQ2FyZFR5cGVEZXRlY3RSb3V0aW5l VGFibGVbSW5kZXhdOw0KPiA+ICsgICAgICAgIGlmICgqUm91dGluZSAhPSBOVUxMKSB7DQo+ID4g KyAgICAgICAgICBTdGF0dXMgPSAoKlJvdXRpbmUpIChQcml2YXRlKTsNCj4gPiArICAgICAgICAg IGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgICAgICAgIGJyZWFrOw0KPiA+ ICsgICAgICAgICAgfQ0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICAv Lw0KPiA+ICsgICAgICAvLyBUaGlzIGNhcmQgZG9lc24ndCBnZXQgaW5pdGlhbGl6ZWQgY29ycmVj dGx5Lg0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICBpZiAoSW5kZXggPT0gUm91dGluZU51bSkg ew0KPiA+ICsgICAgICAgIHJldHVybjsNCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAg Ly8NCj4gPiArICAgICAgLy8gTm90aWZ5IHRoZSB1cHBlciBsYXllciB0aGUgY29ubmVjdCBzdGF0 ZSBjaGFuZ2UgdGhyb3VnaA0KPiA+ICsgICAgICAvLyBSZWluc3RhbGxQcm90b2NvbEludGVyZmFj ZS4NCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgZ0JTLT5SZWluc3RhbGxQcm90b2NvbEludGVy ZmFjZSAoDQo+ID4gKyAgICAgICAgICAgICBQcml2YXRlLT5Db250cm9sbGVySGFuZGxlLA0KPiA+ ICsgICAgICAgICAgICAgJmdFZmlTZE1tY1Bhc3NUaHJ1UHJvdG9jb2xHdWlkLA0KPiA+ICsgICAg ICAgICAgICAgJlByaXZhdGUtPlBhc3NUaHJ1LA0KPiA+ICsgICAgICAgICAgICAgJlByaXZhdGUt PlBhc3NUaHJ1DQo+ID4gKyAgICAgICAgICAgICApOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4g PiArDQo+ID4gKyAgcmV0dXJuOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXNl dCB0aGUgc3BlY2lmaWVkIFNEL01NQyBob3N0IGNvbnRyb2xsZXIgYW5kIGVuYWJsZSBhbGwgaW50 ZXJydXB0cy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZCYXNlICAgICAgICBUaGUgTW1p byBEZXZpY2UgQmFzZSBBZGRyZXNzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIFRoZSBzb2Z0d2FyZSByZXNldCBleGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ID4gKyAg QHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgc29mdHdhcmUgcmVzZXQgZmFpbHMuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjUmVzZXQgKA0KPiA+ICsg IElOIFVJTlROICAgIERldkJhc2UsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1RfQ0FQICAgICAg ICBDYXBhYmlsaXR5DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBCbGtTaXpl Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEVuYWJsZSBhbGwgaW50ZXJydXB0IGFmdGVy IHJlc2V0IGFsbC4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IER3TW1jSGNFbmFibGVJbnRl cnJ1cHQgKERldkJhc2UpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAr ICAgIERFQlVHICgoREVCVUdfRVJST1IsICJEd01tY0hjUmVzZXQ6IGVuYWJsZSBpbnRlcnJ1cHRz IGZhaWw6DQo+ICVyXG4iLCBTdGF0dXMpKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4g KyAgfQ0KPiA+ICsgIFN0YXR1cyA9IER3TW1jSGNJbml0VGltZW91dEN0cmwgKERldkJhc2UpOw0K PiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBCbGtTaXplID0gRFdfTU1DX0JMT0NLX1NJWkU7DQo+ ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQkxLU0laLCBCbGtTaXplKTsNCj4g PiArDQo+ID4gKyAgU3RhdHVzID0gRHdNbWNIY0luaXRDbG9ja0ZyZXEgKERldkJhc2UsIENhcGFi aWxpdHkpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVy biBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBEd01tY0hjU2V0QnVz V2lkdGggKERldkJhc2UsIEZBTFNFLCAxKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGVzdHMgdG8gc2VlIGlmIHRoaXMgZHJp dmVyIHN1cHBvcnRzIGEgZ2l2ZW4gY29udHJvbGxlci4gSWYgYSBjaGlsZCBkZXZpY2UNCj4gPiAr ICBpcyBwcm92aWRlZCwgaXQgZnVydGhlciB0ZXN0cyB0byBzZWUgaWYgdGhpcyBkcml2ZXIgc3Vw cG9ydHMgY3JlYXRpbmcgYQ0KPiA+ICsgIGhhbmRsZSBmb3IgdGhlIHNwZWNpZmllZCBjaGlsZCBk ZXZpY2UuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiB0aGUg ZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzIHN1cHBvcnRzIHRoZQ0KPiA+ICsgIGRldmljZSBzcGVj aWZpZWQgYnkgQ29udHJvbGxlckhhbmRsZS4gRHJpdmVycyB3aWxsIHR5cGljYWxseSB1c2UgdGhl IGRldmljZQ0KPiA+ICsgIHBhdGggYXR0YWNoZWQgdG8gQ29udHJvbGxlckhhbmRsZSBhbmQvb3Ig dGhlIHNlcnZpY2VzIGZyb20gdGhlIGJ1cyBJL08NCj4gPiArICBhYnN0cmFjdGlvbiBhdHRhY2hl ZCB0byBDb250cm9sbGVySGFuZGxlIHRvIGRldGVybWluZSBpZiB0aGUgZHJpdmVyDQo+IHN1cHBv cnRzDQo+ID4gKyAgQ29udHJvbGxlckhhbmRsZS4gVGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVk IG1hbnkgdGltZXMgZHVyaW5nDQo+IHBsYXRmb3JtDQo+ID4gKyAgaW5pdGlhbGl6YXRpb24uIElu IG9yZGVyIHRvIHJlZHVjZSBib290IHRpbWVzLCB0aGUgdGVzdHMgcGVyZm9ybWVkIGJ5IHRoaXMN Cj4gPiArICBmdW5jdGlvbiBtdXN0IGJlIHZlcnkgc21hbGwsIGFuZCB0YWtlIGFzIGxpdHRsZSB0 aW1lIGFzIHBvc3NpYmxlIHRvDQo+IGV4ZWN1dGUuDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0 IG5vdCBjaGFuZ2UgdGhlIHN0YXRlIG9mIGFueSBoYXJkd2FyZSBkZXZpY2VzLCBhbmQNCj4gdGhp cw0KPiA+ICsgIGZ1bmN0aW9uIG11c3QgYmUgYXdhcmUgdGhhdCB0aGUgZGV2aWNlIHNwZWNpZmll ZCBieSBDb250cm9sbGVySGFuZGxlDQo+IG1heQ0KPiA+ICsgIGFscmVhZHkgYmUgbWFuYWdlZCBi eSB0aGUgc2FtZSBkcml2ZXIgb3IgYSBkaWZmZXJlbnQgZHJpdmVyLiBUaGlzDQo+IGZ1bmN0aW9u DQo+ID4gKyAgbXVzdCBtYXRjaCBpdHMgY2FsbHMgdG8gQWxsb2NhdGVQYWdlcygpIHdpdGggRnJl ZVBhZ2VzKCksIEFsbG9jYXRlUG9vbCgpDQo+IHdpdGgNCj4gPiArICBGcmVlUG9vbCgpLCBhbmQg T3BlblByb3RvY29sKCkgd2l0aCBDbG9zZVByb3RvY29sKCkuIFNpbmNlDQo+IENvbnRyb2xsZXJI YW5kbGUNCj4gPiArICBtYXkgaGF2ZSBiZWVuIHByZXZpb3VzbHkgc3RhcnRlZCBieSB0aGUgc2Ft ZSBkcml2ZXIsIGlmIGEgcHJvdG9jb2wgaXMNCj4gYWxyZWFkeQ0KPiA+ICsgIGluIHRoZSBvcGVu ZWQgc3RhdGUsIHRoZW4gaXQgbXVzdCBub3QgYmUgY2xvc2VkIHdpdGggQ2xvc2VQcm90b2NvbCgp LiBUaGlzDQo+IGlzDQo+ID4gKyAgcmVxdWlyZWQgdG8gZ3VhcmFudGVlIHRoZSBzdGF0ZSBvZiBD b250cm9sbGVySGFuZGxlIGlzIG5vdCBtb2RpZmllZCBieQ0KPiB0aGlzDQo+ID4gKyAgZnVuY3Rp b24uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUNCj4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAg Q29udHJvbGxlckhhbmRsZSAgICAgVGhlIGhhbmRsZSBvZiB0aGUgY29udHJvbGxlciB0byB0ZXN0 LiBUaGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlIG11 c3Qgc3VwcG9ydCBhIHByb3RvY29sIGludGVyZmFjZSB0aGF0DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZXMgYW4gSS9PIGFic3RyYWN0aW9uIHRvIHRoZSBk cml2ZXIuDQo+ID4gKyAgQHBhcmFtW2luXSAgUmVtYWluaW5nRGV2aWNlUGF0aCAgQSBwb2ludGVy IHRvIHRoZSByZW1haW5pbmcgcG9ydGlvbiBvZg0KPiBhDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGV2aWNlIHBhdGguICBUaGlzIHBhcmFtZXRlciBpcyBpZ25vcmVk IGJ5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGRyaXZl cnMsIGFuZCBpcyBvcHRpb25hbCBmb3IgYnVzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHJpdmVycy4gRm9yIGJ1cyBkcml2ZXJzLCBpZiB0aGlzIHBhcmFtZXRlcg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBOVUxMLCB0aGVu IHRoZSBidXMgZHJpdmVyIG11c3QgZGV0ZXItDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWluZSBpZiB0aGUgYnVzIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSBhbmQg dGhlIGNoaWxkIGNvbnRyb2xsZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjaWZpZWQgYnkgUmVtYWluaW5nRGV2aWNlUGF0aCBhcmUgYm90aA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGlzIGJ1cyBkcml2 ZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSBk ZXZpY2Ugc3BlY2lmaWVkIGJ5IENvbnRyb2xsZXJIYW5kbGUNCj4gYW5kDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBzdXBwb3J0 ZWQgYnkgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVy IHNwZWNpZmllZCBieSBUaGlzLg0KPiA+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAg ICAgIFRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5DQo+IENvbnRyb2xsZXJIYW5kbGUgYW5kDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtYWluaW5nRGV2aWNlUGF0aCBp cyBhbHJlYWR5IGJlaW5nIG1hbmFnZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBieSB0aGUgZHJpdmVyIHNwZWNpZmllZCBieSBUaGlzLg0KPiA+ICsgIEByZXR2YWwg RUZJX0FDQ0VTU19ERU5JRUQgICAgICAgIFRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5DQo+IENvbnRy b2xsZXJIYW5kbGUgYW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UmVtYWluaW5nRGV2aWNlUGF0aCBpcyBhbHJlYWR5IGJlaW5nIG1hbmFnZWQNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBhIGRpZmZlcmVudCBkcml2ZXIgb3IgYW4g YXBwbGljYXRpb24gdGhhdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlcXVpcmVzIGV4Y2x1c2l2ZSBhY2Nlc3MuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4NCj4gPiArICBAcmV0dmFsIEVG SV9VTlNVUFBPUlRFRCAgICAgICAgICBUaGUgZGV2aWNlIHNwZWNpZmllZCBieQ0KPiBDb250cm9s bGVySGFuZGxlIGFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl bWFpbmluZ0RldmljZVBhdGggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgc3BlY2lmaWVkIGJ5IFRoaXMuDQo+ID4g KyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtEd01tY0hjRHJpdmVyQmlu ZGluZ1N1cHBvcnRlZCAoDQo+ID4gKyAgSU4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICpU aGlzLA0KPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0K PiA+ICsgIElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAqUmVtYWluaW5nRGV2aWNlUGF0 aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiA+ICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgKlBhcmVudERldmljZVBhdGg7 DQo+ID4gKyAgTk9OX0RJU0NPVkVSQUJMRV9ERVZJQ0UgICAqRGV2Ow0KPiA+ICsgIFBMQVRGT1JN X0RXX01NQ19QUk9UT0NPTCAgKlBsYXRmb3JtRHdNbWM7DQo+ID4gKw0KPiA+ICsgIFBhcmVudERl dmljZVBhdGggPSBOVUxMOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3Rv Y29sICgNCj4gPiArICAgICAgICAgICAgICAgICAgJmdQbGF0Zm9ybUR3TW1jUHJvdG9jb2xHdWlk LA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAo Vk9JRCAqKikgJlBsYXRmb3JtRHdNbWMNCj4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiAr ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+ICsg ICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0Vm aURldmljZVBhdGhQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgIChWT0lEICop ICZQYXJlbnREZXZpY2VQYXRoLA0KPiA+ICsgICAgICAgICAgICAgICAgICBUaGlzLT5Ecml2ZXJC aW5kaW5nSGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsg ICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9CWV9EUklWRVINCj4gPiArICAgICAg ICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAg ICAvLw0KPiA+ICsgICAgLy8gRUZJX0FMUkVBRFlfU1RBUlRFRCBpcyBhbHNvIGFuIGVycm9yLg0K PiA+ICsgICAgLy8NCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIC8v DQo+ID4gKyAgLy8gQ2xvc2UgdGhlIHByb3RvY29sIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIGl0IGhl cmUuDQo+ID4gKyAgLy8NCj4gPiArICBnQlMtPkNsb3NlUHJvdG9jb2wgKA0KPiA+ICsgICAgICAg IENvbnRyb2xsZXIsDQo+ID4gKyAgICAgICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0K PiA+ICsgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQo+ID4gKyAgICAgICAgQ29u dHJvbGxlcg0KPiA+ICsgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTm93 IHRlc3QgdGhlIEVtYmVkZGVkTm9uRGlzY292ZXJhYmxlSW9Qcm90b2NvbC4NCj4gPiArICAvLw0K PiA+ICsgIFN0YXR1cyA9IGdCUy0+T3BlblByb3RvY29sICgNCj4gPiArICAgICAgICAgICAgICAg ICAgQ29udHJvbGxlciwNCj4gPiArICAgICAgICAgICAgICAgICAgJmdFZGtpaU5vbkRpc2NvdmVy YWJsZURldmljZVByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiop ICZEZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUs DQo+ID4gKyAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0RSSVZFUg0KPiA+ICsgICAgICAgICAgICAgICAgICAp Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0 dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIGdCUy0+Q2xvc2VQcm90b2NvbCAoDQo+ID4gKyAgICAgICAg IENvbnRyb2xsZXIsDQo+ID4gKyAgICAgICAgICZnRWRraWlOb25EaXNjb3ZlcmFibGVEZXZpY2VQ cm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQo+ ID4gKyAgICAgICAgIENvbnRyb2xsZXINCj4gPiArICAgICAgICAgKTsNCj4gPiArICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFN0YXJ0cyBhIGRl dmljZSBjb250cm9sbGVyIG9yIGEgYnVzIGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIFRoZSBT dGFydCgpIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGludm9rZWQgZnJvbSB0aGUgRUZJIGJv b3Qgc2VydmljZQ0KPiA+ICsgIENvbm5lY3RDb250cm9sbGVyKCkuDQo+ID4gKyAgQXMgYSByZXN1 bHQsIG11Y2ggb2YgdGhlIGVycm9yIGNoZWNraW5nIG9uIHRoZSBwYXJhbWV0ZXJzIHRvIFN0YXJ0 KCkgaGFzDQo+ID4gKyAgYmVlbiBtb3ZlZCBpbnRvIHRoaXMNCj4gPiArICBjb21tb24gYm9vdCBz ZXJ2aWNlLiBJdCBpcyBsZWdhbCB0byBjYWxsIFN0YXJ0KCkgZnJvbSBvdGhlciBsb2NhdGlvbnMs DQo+ID4gKyAgYnV0IHRoZSBmb2xsb3dpbmcgY2FsbGluZyByZXN0cmljdGlvbnMgbXVzdCBiZSBm b2xsb3dlZCBvciB0aGUgc3lzdGVtDQo+ID4gKyAgYmVoYXZpb3Igd2lsbCBub3QgYmUgZGV0ZXJt aW5pc3RpYy4NCj4gPiArICAxLiBDb250cm9sbGVySGFuZGxlIG11c3QgYmUgYSB2YWxpZCBFRklf SEFORExFLg0KPiA+ICsgIDIuIElmIFJlbWFpbmluZ0RldmljZVBhdGggaXMgbm90IE5VTEwsIHRo ZW4gaXQgbXVzdCBiZSBhIHBvaW50ZXIgdG8gYQ0KPiA+ICsgICAgIG5hdHVyYWxseSBhbGlnbmVk IEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTC4NCj4gPiArICAzLiBQcmlvciB0byBjYWxsaW5nIFN0 YXJ0KCksIHRoZSBTdXBwb3J0ZWQoKSBmdW5jdGlvbiBmb3IgdGhlIGRyaXZlcg0KPiA+ICsgICAg IHNwZWNpZmllZCBieSBUaGlzIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGNh bGxpbmcNCj4gcGFyYW1ldGVycywNCj4gPiArICAgICBhbmQgU3VwcG9ydGVkKCkgbXVzdCBoYXZl IHJldHVybmVkIEVGSV9TVUNDRVNTLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBUaGlzICAg ICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9EUklWRVJfQklORElOR19QUk9U T0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0K PiA+ICsgIEBwYXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgICAgIFRoZSBoYW5kbGUgb2YgdGhl IGNvbnRyb2xsZXIgdG8gc3RhcnQuDQo+IFRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBoYW5kbGUgbXVzdCBzdXBwb3J0IGEgcHJvdG9jb2wgaW50ZXJmYWNlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzdXBwbGllcyBhbiBJ L08gYWJzdHJhY3Rpb24gdG8gdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZHJpdmVyLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJlbWFpbmluZ0RldmljZVBhdGggIEEg cG9pbnRlciB0byB0aGUgcmVtYWluaW5nIHBvcnRpb24gb2YNCj4gYQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBwYXRoLiAgVGhpcyBwYXJhbWV0ZXIgaXMg aWdub3JlZCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj ZSBkcml2ZXJzLCBhbmQgaXMgb3B0aW9uYWwgZm9yIGJ1cw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRyaXZlcnMuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRm9yIGEgYnVzIGRyaXZlciwgaWYgdGhpcyBwYXJhbWV0ZXIgaXMgTlVMTCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGhhbmRsZXMgZm9y IGFsbCB0aGUgY2hpbGRyZW4gb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDb250cm9sbGVyIGFyZSBjcmVhdGVkIGJ5IHRoaXMgZHJpdmVyLg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBOVUxM IGFuZCB0aGUgZmlyc3QNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE ZXZpY2UgUGF0aCBOb2RlIGlzIG5vdCB0aGUgRW5kIG9mIERldmljZQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGggTm9kZSwgdGhlbiBvbmx5IHRoZSBoYW5kbGUg Zm9yIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkIGRl dmljZSBzcGVjaWZpZWQgYnkgdGhlIGZpcnN0IERldmljZQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBhdGggTm9kZSBvZiBSZW1haW5pbmdEZXZpY2VQYXRoIGlzIGNy ZWF0ZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGlzIGRy aXZlci4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZmly c3QgRGV2aWNlIFBhdGggTm9kZSBvZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJlbWFpbmluZ0RldmljZVBhdGggaXMgdGhlIEVuZCBvZiBEZXZpY2UgUGF0aA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUsIG5vIGNoaWxkIGhhbmRs ZSBpcyBjcmVhdGVkIGJ5IHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkcml2ZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg ICAgIFRoZSBkZXZpY2Ugd2FzIHN0YXJ0ZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VS Uk9SICAgICAgICAgVGhlIGRldmljZSBjb3VsZCBub3QgYmUgc3RhcnRlZCBkdWUgdG8gYQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBlcnJvci4gQ3VycmVu dGx5IG5vdCBpbXBsZW1lbnRlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT ICAgICBUaGUgcmVxdWVzdCBjb3VsZCBub3QgYmUNCj4gY29tcGxldGVkIGR1ZSB0byBhDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFjayBvZiByZXNvdXJjZXMuDQo+ ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgICAgVGhlIGRyaXZlciBmYWlsZGVk IHRvIHN0YXJ0IHRoZSBkZXZpY2UuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtFRklBUEkNCj4gPiArRHdNbWNIY0RyaXZlckJpbmRpbmdTdGFydCAoDQo+ID4gKyAgSU4g RUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAgICAqVGhpcywNCj4gPiArICBJTiBFRklfSEFO RExFICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gKyAgSU4gRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAgICAgICAqUmVtYWluaW5nRGV2aWNlUGF0aA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgKlByaXZhdGU7DQo+ID4gKw0KPiA+ ICsgIE5PTl9ESVNDT1ZFUkFCTEVfREVWSUNFICAgICAgICAgKkRldjsNCj4gPiArDQo+ID4gKyAg Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVByZXNlbnQ7DQo+ID4gKyAgRFdN TUNfQ0FSRF9UWVBFX0RFVEVDVF9ST1VUSU5FICAqUm91dGluZTsNCj4gPiArICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgUm91dGluZU51bTsNCj4gPiArICBQTEFURk9STV9EV19NTUNfUFJPVE9DT0wg ICAgICAgICpQbGF0Zm9ybUR3TW1jOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPkxvY2F0 ZVByb3RvY29sICgNCj4gPiArICAgICAgICAgICAgICAgICAgJmdQbGF0Zm9ybUR3TW1jUHJvdG9j b2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAoVk9JRCAqKikgJlBsYXRmb3JtRHdNbWMNCj4gPiArICAgICAgICAgICAgICAgICAgKTsN Cj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgREVCVUcgKChERUJVR19F UlJPUiwgImVyciAlZCIsIF9fTElORV9fKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+ICsg ICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0Vk a2lpTm9uRGlzY292ZXJhYmxlRGV2aWNlUHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAoVk9JRCAqKikgJkRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVy QmluZGluZ0hhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPiAr ICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfQllfRFJJVkVSDQo+ID4gKyAgICAg ICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsg IERFQlVHICgoREVCVUdfRVJST1IsICJlcnIgJWQiLCBfX0xJTkVfXykpOw0KPiA+ICsgICAgcmV0 dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFByaXZhdGUgPSBBbGxvY2F0ZUNv cHlQb29sIChzaXplb2YgKERXX01NQ19IQ19QUklWQVRFX0RBVEEpLA0KPiAmZ0R3TW1jSGNUZW1w bGF0ZSk7DQo+ID4gKyAgaWYgKFByaXZhdGUgPT0gTlVMTCkgew0KPiA+ICsgIERFQlVHICgoREVC VUdfRVJST1IsICJlcnIgJWQiLCBfX0xJTkVfXykpOw0KPiA+ICsgICAgU3RhdHVzID0gRUZJX09V VF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBQcml2YXRlLT5Db250cm9sbGVySGFuZGxlID0gQ29udHJvbGxlcjsNCj4gPiArICBQcml2 YXRlLT5EZXZCYXNlICAgICAgICAgID0gRGV2LT5SZXNvdXJjZXNbMF0uQWRkclJhbmdlTWluOw0K PiA+ICsgIFByaXZhdGUtPlBsYXRmb3JtRHdNbWMgICAgPSBQbGF0Zm9ybUR3TW1jOw0KPiA+ICsg IEluaXRpYWxpemVMaXN0SGVhZCAoJlByaXZhdGUtPlF1ZXVlKTsNCj4gPiArDQo+ID4gKyAgU3Rh dHVzID0gUHJpdmF0ZS0+UGxhdGZvcm1Ed01tYy0+R2V0Q2FwYWJpbGl0eSAoQ29udHJvbGxlciwg MCwNCj4gJlByaXZhdGUtPkNhcGFiaWxpdHlbMF0pOw0KPiA+ICsNCj4gPiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBpZiAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5CYXNlQ2xrRnJlcSA9PSAwKSB7DQo+ID4g KyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBEdW1wQ2FwYWJpbGl0eVJl ZyAoMCwgJlByaXZhdGUtPkNhcGFiaWxpdHlbMF0pOw0KPiA+ICsNCj4gPiArICBNZWRpYVByZXNl bnQgPSBGQUxTRTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUHJpdmF0ZS0+UGxhdGZvcm1Ed01t Yy0+Q2FyZERldGVjdCAoQ29udHJvbGxlciwgMCk7DQo+ID4gKyAgU3RhdHVzID0gRHdNbWNIY0Nh cmREZXRlY3QgKFByaXZhdGUtPkRldkJhc2UsIENvbnRyb2xsZXIsIDAsDQo+ICZNZWRpYVByZXNl bnQpOw0KPiA+ICsgIGlmIChNZWRpYVByZXNlbnQgPT0gRkFMU0UpIHsNCj4gPiArICAgIGdvdG8g RG9uZTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gSW5pdGlhbGl6ZSBz bG90IGFuZCBzdGFydCBpZGVudGlmaWNhdGlvbiBwcm9jZXNzIGZvciB0aGUgbmV3IGF0dGFjaGVk DQo+IGRldmljZQ0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gRHdNbWNIY0luaXRIb3N0IChQ cml2YXRlLT5EZXZCYXNlLCBQcml2YXRlLT5DYXBhYmlsaXR5WzBdKTsNCj4gPiArICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIFJlc2V0IEhDDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMg PSBEd01tY0hjUmVzZXQgKFByaXZhdGUtPkRldkJhc2UsIFByaXZhdGUtPkNhcGFiaWxpdHlbMF0p Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIGdvdG8gRG9uZTsN Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFByaXZhdGUtPlNsb3RbMF0uQ2FyZFR5cGUgPSBQcml2 YXRlLT5DYXBhYmlsaXR5WzBdLkNhcmRUeXBlOw0KPiA+ICsgIFByaXZhdGUtPlNsb3RbMF0uRW5h YmxlID0gVFJVRTsNCj4gPiArICBQcml2YXRlLT5TbG90WzBdLk1lZGlhUHJlc2VudCA9IFRSVUU7 DQo+ID4gKw0KPiA+ICsgIFJvdXRpbmVOdW0gPSBzaXplb2YgKG1DYXJkVHlwZURldGVjdFJvdXRp bmVUYWJsZSkgLyBzaXplb2YNCj4gKERXTU1DX0NBUkRfVFlQRV9ERVRFQ1RfUk9VVElORSk7DQo+ ID4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgUm91dGluZU51bTsgSW5kZXgrKykgew0KPiA+ ICsgICAgUm91dGluZSA9ICZtQ2FyZFR5cGVEZXRlY3RSb3V0aW5lVGFibGVbSW5kZXhdOw0KPiA+ ICsgICAgaWYgKCpSb3V0aW5lICE9IE5VTEwpIHsNCj4gPiArICAgICAgU3RhdHVzID0gKCpSb3V0 aW5lKSAoUHJpdmF0ZSk7DQo+ID4gKyAgICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gU3RhcnQgdGhlIGFzeW5jaHJvbm91cyBJL08gbW9u aXRvcg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4g KyAgICAgICAgICAgICAgICAgIEVWVF9USU1FUiB8IEVWVF9OT1RJRllfU0lHTkFMLA0KPiA+ICsg ICAgICAgICAgICAgICAgICBUUExfTk9USUZZLA0KPiA+ICsgICAgICAgICAgICAgICAgICBQcm9j ZXNzQXN5bmNUYXNrTGlzdCwNCj4gPiArICAgICAgICAgICAgICAgICAgUHJpdmF0ZSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgJlByaXZhdGUtPlRpbWVyRXZlbnQNCj4gPiArICAgICAgICAgICAg ICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBnb3Rv IERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPlNldFRpbWVyIChQ cml2YXRlLT5UaW1lckV2ZW50LCBUaW1lclBlcmlvZGljLA0KPiBEV19NTUNfSENfQVNZTkNfVElN RVIpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIGdvdG8gRG9u ZTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gU3RhcnQgdGhlIFNkIHJl bW92YWJsZSBkZXZpY2UgY29ubmVjdGlvbiBlbnVtZXJhdGlvbg0KPiA+ICsgIC8vDQo+ID4gKyAg U3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgIEVWVF9U SU1FUiB8IEVWVF9OT1RJRllfU0lHTkFMLA0KPiA+ICsgICAgICAgICAgICAgICAgICBUUExfQ0FM TEJBQ0ssDQo+ID4gKyAgICAgICAgICAgICAgICAgIER3TW1jSGNFbnVtZXJhdGVEZXZpY2UsDQo+ ID4gKyAgICAgICAgICAgICAgICAgIFByaXZhdGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZQ cml2YXRlLT5Db25uZWN0RXZlbnQNCj4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPlNldFRpbWVyIChQcml2YXRlLT5Db25uZWN0RXZl bnQsIFRpbWVyUGVyaW9kaWMsDQo+IERXX01NQ19IQ19FTlVNX1RJTUVSKTsNCj4gPiArICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBnb3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPkluc3RhbGxNdWx0aXBsZVByb3RvY29sSW50ZXJmYWNl cyAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICZDb250cm9sbGVyLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAmZ0VmaVNkTW1jUGFzc1RocnVQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICYoUHJpdmF0ZS0+UGFzc1RocnUpLA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxM DQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoREVCVUdf SU5GTywgIkR3TW1jSGNEcml2ZXJCaW5kaW5nU3RhcnQ6ICVyIEVuZCBvbiAleFxuIiwNCj4gU3Rh dHVzLCBDb250cm9sbGVyKSk7DQo+ID4gKw0KPiA+ICtEb25lOg0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgIGlmICgoUHJpdmF0ZSAhPSBOVUxMKSAmJiAoUHJpdmF0 ZS0+VGltZXJFdmVudCAhPSBOVUxMKSkgew0KPiA+ICsgICAgICBnQlMtPkNsb3NlRXZlbnQgKFBy aXZhdGUtPlRpbWVyRXZlbnQpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlmICgoUHJp dmF0ZSAhPSBOVUxMKSAmJiAoUHJpdmF0ZS0+Q29ubmVjdEV2ZW50ICE9IE5VTEwpKSB7DQo+ID4g KyAgICAgIGdCUy0+Q2xvc2VFdmVudCAoUHJpdmF0ZS0+Q29ubmVjdEV2ZW50KTsNCj4gPiArICAg IH0NCj4gPiArDQo+ID4gKyAgICBpZiAoUHJpdmF0ZSAhPSBOVUxMKSB7DQo+ID4gKyAgICAgIEZy ZWVQb29sIChQcml2YXRlKTsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJl dHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFN0b3BzIGEgZGV2 aWNlIGNvbnRyb2xsZXIgb3IgYSBidXMgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgVGhlIFN0 b3AoKSBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbnZva2VkIGZyb20gdGhlIEVGSSBib290 IHNlcnZpY2UNCj4gPiArICBEaXNjb25uZWN0Q29udHJvbGxlcigpLg0KPiA+ICsgIEFzIGEgcmVz dWx0LCBtdWNoIG9mIHRoZSBlcnJvciBjaGVja2luZyBvbiB0aGUgcGFyYW1ldGVycyB0byBTdG9w KCkgaGFzDQo+IGJlZW4NCj4gPiArICBtb3ZlZCBpbnRvIHRoaXMgY29tbW9uIGJvb3Qgc2Vydmlj ZS4gSXQgaXMgbGVnYWwgdG8gY2FsbCBTdG9wKCkgZnJvbSBvdGhlcg0KPiA+ICsgIGxvY2F0aW9u cywgYnV0IHRoZSBmb2xsb3dpbmcgY2FsbGluZyByZXN0cmljdGlvbnMgbXVzdCBiZSBmb2xsb3dl ZCBvciB0aGUNCj4gPiArICBzeXN0ZW0gYmVoYXZpb3Igd2lsbCBub3QgYmUgZGV0ZXJtaW5pc3Rp Yy4NCj4gPiArICAxLiBDb250cm9sbGVySGFuZGxlIG11c3QgYmUgYSB2YWxpZCBFRklfSEFORExF IHRoYXQgd2FzIHVzZWQgb24gYQ0KPiBwcmV2aW91cw0KPiA+ICsgICAgIGNhbGwgdG8gdGhpcyBz YW1lIGRyaXZlcidzIFN0YXJ0KCkgZnVuY3Rpb24uDQo+ID4gKyAgMi4gVGhlIGZpcnN0IE51bWJl ck9mQ2hpbGRyZW4gaGFuZGxlcyBvZiBDaGlsZEhhbmRsZUJ1ZmZlciBtdXN0IGFsbCBiZSBhDQo+ IHZhbGlkDQo+ID4gKyAgICAgRUZJX0hBTkRMRS4gSW4gYWRkaXRpb24sIGFsbCBvZiB0aGVzZSBo YW5kbGVzIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQNCj4gaW4NCj4gPiArICAgICB0aGlzIGRyaXZl cidzIFN0YXJ0KCkgZnVuY3Rpb24sIGFuZCB0aGUgU3RhcnQoKSBmdW5jdGlvbiBtdXN0IGhhdmUg Y2FsbGVkDQo+ID4gKyAgICAgT3BlblByb3RvY29sKCkgb24gQ29udHJvbGxlckhhbmRsZSB3aXRo IGFuIEF0dHJpYnV0ZSBvZg0KPiA+ICsgICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0NISUxEX0NP TlRST0xMRVIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgIEEg cG9pbnRlciB0byB0aGUNCj4gRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAg Q29udHJvbGxlckhhbmRsZSAgQSBoYW5kbGUgdG8gdGhlIGRldmljZSBiZWluZyBzdG9wcGVkLg0K PiBUaGUgaGFuZGxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBz dXBwb3J0IGEgYnVzIHNwZWNpZmljIEkvTyBwcm90b2NvbCBmb3IgdGhlDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIHRvIHVzZSB0byBzdG9wIHRoZSBkZXZpY2Uu DQo+ID4gKyAgQHBhcmFtW2luXSAgTnVtYmVyT2ZDaGlsZHJlbiAgVGhlIG51bWJlciBvZiBjaGls ZCBkZXZpY2UgaGFuZGxlcyBpbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENoaWxkSGFuZGxlQnVmZmVyLg0KPiA+ICsgIEBwYXJhbVtpbl0gIENoaWxkSGFuZGxlQnVmZmVy IEFuIGFycmF5IG9mIGNoaWxkIGhhbmRsZXMgdG8gYmUgZnJlZWQuDQo+IE1heSBiZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgaWYgTnVtYmVyT2ZDaGlsZHJlbiBp cyAwLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZGV2 aWNlIHdhcyBzdG9wcGVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIFRo ZSBkZXZpY2UgY291bGQgbm90IGJlIHN0b3BwZWQgZHVlIHRvIGENCj4gZGV2aWNlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNIY0RyaXZlckJpbmRpbmdTdG9w ICgNCj4gPiArICBJTiAgRUZJX0RSSVZFUl9CSU5ESU5HX1BST1RPQ09MICAgICAqVGhpcywNCj4g PiArICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlck9mQ2hpbGRyZW4s DQo+ID4gKyAgSU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgKkNoaWxkSGFuZGxl QnVmZmVyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09M ICAgICAgICpQYXNzVGhydTsNCj4gPiArICBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAg ICAgICAqUHJpdmF0ZTsNCj4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICAg ICAqTGluazsNCj4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICAgICAqTmV4 dExpbms7DQo+ID4gKyAgRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAgICAgKlRyYjsN Cj4gPiArDQo+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiRHdNbWNIY0RyaXZlckJpbmRpbmdT dG9wOiBTdGFydFxuIikpOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2Nv bCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICZnRWZpU2RNbWNQYXNzVGhydVByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgICAg ICAgICAgKFZPSUQqKikgJlBhc3NUaHJ1LA0KPiA+ICsgICAgICAgICAgICAgICAgICBUaGlzLT5E cml2ZXJCaW5kaW5nSGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0K PiA+ICsgICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCj4g PiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgUHJpdmF0 ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyAoUGFzc1RocnUpOw0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gQ2xvc2UgTm9uLUJsb2NraW5nIHRpbWVyIGFuZCBmcmVlIFRhc2sgbGlzdC4NCj4g PiArICAvLw0KPiA+ICsgIGlmIChQcml2YXRlLT5UaW1lckV2ZW50ICE9IE5VTEwpIHsNCj4gPiAr ICAgIGdCUy0+Q2xvc2VFdmVudCAoUHJpdmF0ZS0+VGltZXJFdmVudCk7DQo+ID4gKyAgICBQcml2 YXRlLT5UaW1lckV2ZW50ID0gTlVMTDsNCj4gPiArICB9DQo+ID4gKyAgaWYgKFByaXZhdGUtPkNv bm5lY3RFdmVudCAhPSBOVUxMKSB7DQo+ID4gKyAgICBnQlMtPkNsb3NlRXZlbnQgKFByaXZhdGUt PkNvbm5lY3RFdmVudCk7DQo+ID4gKyAgICBQcml2YXRlLT5Db25uZWN0RXZlbnQgPSBOVUxMOw0K PiA+ICsgIH0NCj4gPiArICAvLw0KPiA+ICsgIC8vIEFzIHRoZSB0aW1lciBpcyBjbG9zZWQsIHRo ZXJlIGlzIG5vIG5lZWRzIHRvIHVzZSBUUEwgbG9jayB0bw0KPiA+ICsgIC8vIHByb3RlY3QgdGhl IGNyaXRpY2FsIHJlZ2lvbiAicXVldWUiLg0KPiA+ICsgIC8vDQo+ID4gKyAgZm9yIChMaW5rID0g R2V0Rmlyc3ROb2RlICgmUHJpdmF0ZS0+UXVldWUpOw0KPiA+ICsgICAgICAgIUlzTnVsbCAoJlBy aXZhdGUtPlF1ZXVlLCBMaW5rKTsNCj4gPiArICAgICAgIExpbmsgPSBOZXh0TGluaykgew0KPiA+ ICsgICAgTmV4dExpbmsgPSBHZXROZXh0Tm9kZSAoJlByaXZhdGUtPlF1ZXVlLCBMaW5rKTsNCj4g PiArICAgIFJlbW92ZUVudHJ5TGlzdCAoTGluayk7DQo+ID4gKyAgICBUcmIgPSBEV19NTUNfSENf VFJCX0ZST01fVEhJUyAoTGluayk7DQo+ID4gKyAgICBUcmItPlBhY2tldC0+VHJhbnNhY3Rpb25T dGF0dXMgPSBFRklfQUJPUlRFRDsNCj4gPiArICAgIGdCUy0+U2lnbmFsRXZlbnQgKFRyYi0+RXZl bnQpOw0KPiA+ICsgICAgRHdNbWNGcmVlVHJiIChUcmIpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBVbmluc3RhbGwgQmxvY2sgSS9PIHByb3RvY29sIGZyb20gdGhlIGRl dmljZSBoYW5kbGUNCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+VW5pbnN0YWxsUHJv dG9jb2xJbnRlcmZhY2UgKA0KPiA+ICsgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAmZ0VmaVNkTW1jUGFzc1RocnVQcm90b2NvbEd1aWQsDQo+ID4g KyAgICAgICAgICAgICAgICAgICYoUHJpdmF0ZS0+UGFzc1RocnUpDQo+ID4gKyAgICAgICAgICAg ICAgICAgICk7DQo+ID4gKw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAr ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBnQlMtPkNsb3NlUHJv dG9jb2wgKA0KPiA+ICsgICAgICAgICBDb250cm9sbGVyLA0KPiA+ICsgICAgICAgICAmZ0VmaVBj aUlvUHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxl LA0KPiA+ICsgICAgICAgICBDb250cm9sbGVyDQo+ID4gKyAgICAgICAgICk7DQo+ID4gKw0KPiA+ ICsgIEZyZWVQb29sIChQcml2YXRlKTsNCj4gPiArDQo+ID4gKyAgREVCVUcgKChERUJVR19JTkZP LCAiRHdNbWNIY0RyaXZlckJpbmRpbmdTdG9wOiBFbmQgd2l0aCAlclxuIiwNCj4gU3RhdHVzKSk7 DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFNlbmRzIFNEIGNvbW1hbmQgdG8gYW4gU0QgY2FyZCB0aGF0IGlzIGF0dGFjaGVkIHRv IHRoZSBTRCBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiArICBUaGUgUGFzc1RocnUoKSBmdW5jdGlv biBzZW5kcyB0aGUgU0QgY29tbWFuZCBzcGVjaWZpZWQgYnkgUGFja2V0IHRvDQo+IHRoZSBTRA0K PiA+ICsgIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3QuDQo+ID4gKw0KPiA+ICsgIElmIFBhY2tldCBp cyBzdWNjZXNzZnVsbHkgc2VudCB0byB0aGUgU0QgY2FyZCwgdGhlbiBFRklfU1VDQ0VTUyBpcw0K PiByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgYSBkZXZpY2UgZXJyb3Igb2NjdXJzIHdoaWxl IHNlbmRpbmcgdGhlIFBhY2tldCwgdGhlbg0KPiBFRklfREVWSUNFX0VSUk9SIGlzDQo+ID4gKyAg cmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNsb3QgaXMgbm90IGluIGEgdmFsaWQgcmFuZ2Ug Zm9yIHRoZSBTRCBjb250cm9sbGVyLCB0aGVuDQo+ID4gKyAgRUZJX0lOVkFMSURfUEFSQU1FVEVS IGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBJZiBQYWNrZXQgZGVmaW5lcyBhIGRhdGEgY29t bWFuZCBidXQgYm90aCBJbkRhdGFCdWZmZXIgYW5kDQo+IE91dERhdGFCdWZmZXIgYXJlDQo+ID4g KyAgTlVMTCwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlzIHJldHVybmVkLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW1baW5dICAgICBUaGlzICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9T RF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgU2xvdCAgICAgICAgICAgVGhl IHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0by4NCj4gPiArICBAcGFyYW1baW4sb3V0XSBQ YWNrZXQgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIFNEIGNvbW1hbmQgZGF0YSBzdHJ1Y3R1cmUu DQo+ID4gKyAgQHBhcmFtW2luXSAgICAgRXZlbnQgICAgICAgICAgSWYgRXZlbnQgaXMgTlVMTCwg YmxvY2tpbmcgSS9PIGlzIHBlcmZvcm1lZC4gSWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFdmVudCBpcyBub3QgTlVMTCwgdGhlbiBub25ibG9ja2luZyBJL08gaXMNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtZWQsIGFuZCBFdmVudCB3 aWxsIGJlIHNpZ25hbGVkIHdoZW4gdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUGFja2V0IGNvbXBsZXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIFNEIENvbW1hbmQgUGFja2V0IHdhcyBzZW50IGJ5IHRoZQ0KPiBob3N0 Lg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIEEgZGV2aWNlIGVycm9yIG9j Y3VycmVkIHdoaWxlIGF0dGVtcHRpbmcNCj4gdG8gc2VuZA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoZSBTRCBjb21tYW5kIFBhY2tldC4NCj4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBQYWNrZXQsIFNsb3QsIG9yIHRoZSBjb250ZW50cyBvZiB0aGUN Cj4gUGFja2V0IGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxp ZC4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBQYWNrZXQgZGVmaW5lcyBh IGRhdGEgY29tbWFuZCBidXQNCj4gYm90aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluRGF0YUJ1ZmZlciBhbmQgT3V0RGF0YUJ1ZmZlciBhcmUgTlVMTC4NCj4gPiArICBA cmV0dmFsIEVGSV9OT19NRURJQSAgICAgICAgICBTRCBEZXZpY2Ugbm90IHByZXNlbnQgaW4gdGhl IFNsb3QuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIGNvbW1hbmQg ZGVzY3JpYmVkIGJ5IHRoZSBTRA0KPiBDb21tYW5kIFBhY2tldA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgY29udHJvbGxl ci4NCj4gPiArICBAcmV0dmFsIEVGSV9CQURfQlVGRkVSX1NJWkUgICBUaGUgSW5UcmFuc2Zlckxl bmd0aCBvcg0KPiBPdXRUcmFuc2Zlckxlbmd0aA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4Y2VlZHMgdGhlIGxpbWl0IHN1cHBvcnRlZCBieSBTRCBjYXJkDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpLmUuIGlmIHRoZSBudW1iZXIgb2YgYnl0 ZXMgZXhjZWVkIHRoZSBMYXN0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TEJBKS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ ICtEd01tY1Bhc3NUaHJ1UGFzc1RocnUgKA0KPiA+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1Nf VEhSVV9QUk9UT0NPTCAgICAgICAgICpUaGlzLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4gKyAgSU4gT1VUIEVGSV9TRF9NTUNf UEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgKlBhY2tldCwNCj4gPiArICBJTiAgICAgRUZJX0VW RU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgICBPUFRJT05BTA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KPiA+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgKlByaXZhdGU7DQo+ID4g KyAgRFdfTU1DX0hDX1RSQiAgICAgICAgICAgICAgICAgICAqVHJiOw0KPiA+ICsgIEVGSV9UUEwg ICAgICAgICAgICAgICAgICAgICAgICAgT2xkVHBsOw0KPiA+ICsNCj4gPiArICBpZiAoKFRoaXMg PT0gTlVMTCkgfHwgKFBhY2tldCA9PSBOVUxMKSkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZB TElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmICgoUGFja2V0LT5TZE1t Y0NtZEJsayA9PSBOVUxMKSB8fCAoUGFja2V0LT5TZE1tY1N0YXR1c0JsayA9PQ0KPiBOVUxMKSkg ew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIGlmICgoUGFja2V0LT5PdXREYXRhQnVmZmVyID09IE5VTEwpICYmIChQYWNrZXQt Pk91dFRyYW5zZmVyTGVuZ3RoICE9DQo+IDApKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFM SURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKChQYWNrZXQtPkluRGF0 YUJ1ZmZlciA9PSBOVUxMKSAmJiAoUGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoICE9IDApKQ0KPiB7 DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyAoVGhpcyk7DQo+ ID4gKw0KPiA+ICsgIGlmICghUHJpdmF0ZS0+U2xvdFtTbG90XS5FbmFibGUpIHsNCj4gPiArICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBp ZiAoIVByaXZhdGUtPlNsb3RbU2xvdF0uTWVkaWFQcmVzZW50KSB7DQo+ID4gKyAgICByZXR1cm4g RUZJX05PX01FRElBOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgVHJiID0gRHdNbWNDcmVhdGVU cmIgKFByaXZhdGUsIFNsb3QsIFBhY2tldCwgRXZlbnQpOw0KPiA+ICsgIGlmIChUcmIgPT0gTlVM TCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgIH0NCj4g PiArICAvLw0KPiA+ICsgIC8vIEltbWVkaWF0ZWx5IHJldHVybiBmb3IgYXN5bmMgSS9PLg0KPiA+ ICsgIC8vDQo+ID4gKyAgaWYgKEV2ZW50ICE9IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gV2FpdCBhc3lu YyBJL08gbGlzdCBpcyBlbXB0eSBiZWZvcmUgZXhlY3V0ZSBzeW5jIEkvTyBvcGVyYXRpb24uDQo+ ID4gKyAgLy8NCj4gPiArICB3aGlsZSAoVFJVRSkgew0KPiA+ICsgICAgT2xkVHBsID0gZ0JTLT5S YWlzZVRQTCAoVFBMX05PVElGWSk7DQo+ID4gKyAgICBpZiAoSXNMaXN0RW1wdHkgKCZQcml2YXRl LT5RdWV1ZSkpIHsNCj4gPiArICAgICAgZ0JTLT5SZXN0b3JlVFBMIChPbGRUcGwpOw0KPiA+ICsg ICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArICAgIGdCUy0+UmVzdG9yZVRQTCAoT2xkVHBs KTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IER3TW1jV2FpdFRyYkVudiAoUHJp dmF0ZSwgVHJiKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBn b3RvIERvbmU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBEd01tY0V4ZWNUcmIg KFByaXZhdGUsIFRyYik7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsg ICAgZ290byBEb25lOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gRHdNbWNXYWl0 VHJiUmVzdWx0IChQcml2YXRlLCBUcmIpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiArICAgIGdvdG8gRG9uZTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICtEb25lOg0KPiA+ ICsgIGlmIChUcmIgIT0gTlVMTCkgew0KPiA+ICsgICAgRHdNbWNGcmVlVHJiIChUcmIpOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgVXNlZCB0byByZXRyaWV2ZSBuZXh0IHNsb3QgbnVtYmVycyBzdXBwb3J0ZWQg YnkgdGhlIFNEIGNvbnRyb2xsZXIuIFRoZQ0KPiA+ICsgIGZ1bmN0aW9uIHJldHVybnMgaW5mb3Jt YXRpb24gYWJvdXQgYWxsIGF2YWlsYWJsZSBzbG90cyAocG9wdWxhdGVkIG9yDQo+ID4gKyAgbm90 LXBvcHVsYXRlZCkuDQo+ID4gKw0KPiA+ICsgIFRoZSBHZXROZXh0U2xvdCgpIGZ1bmN0aW9uIHJl dHJpZXZlcyB0aGUgbmV4dCBzbG90IG51bWJlciBvbiBhbiBTRA0KPiBjb250cm9sbGVyLg0KPiA+ ICsgIElmIG9uIGlucHV0IFNsb3QgaXMgMHhGRiwgdGhlbiB0aGUgc2xvdCBudW1iZXIgb2YgdGhl IGZpcnN0IHNsb3Qgb24gdGhlIFNEDQo+ID4gKyAgY29udHJvbGxlciBpcyByZXR1cm5lZC4NCj4g PiArDQo+ID4gKyAgSWYgU2xvdCBpcyBhIHNsb3QgbnVtYmVyIHRoYXQgd2FzIHJldHVybmVkIG9u IGEgcHJldmlvdXMgY2FsbCB0bw0KPiA+ICsgIEdldE5leHRTbG90KCksIHRoZW4gdGhlIHNsb3Qg bnVtYmVyIG9mIHRoZSBuZXh0IHNsb3Qgb24gdGhlIFNEIGNvbnRyb2xsZXINCj4gaXMNCj4gPiAr ICByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgU2xvdCBpcyBub3QgMHhGRiBhbmQgU2xvdCB3 YXMgbm90IHJldHVybmVkIG9uIGEgcHJldmlvdXMgY2FsbCB0bw0KPiA+ICsgIEdldE5leHRTbG90 KCksIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYg U2xvdCBpcyB0aGUgc2xvdCBudW1iZXIgb2YgdGhlIGxhc3Qgc2xvdCBvbiB0aGUgU0QgY29udHJv bGxlciwgdGhlbg0KPiA+ICsgIEVGSV9OT1RfRk9VTkQgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbVtpbl0gICAgIFRoaXMgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJ X1NEX01NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luLG91dF0gU2xvdCAgICAgICAgICAg T24gaW5wdXQsIGEgcG9pbnRlciB0byBhIHNsb3QgbnVtYmVyIG9uIHRoZSBTRA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCBhIHBvaW50ZXIgdG8gdGhlIG5leHQgc2xv dCBudW1iZXIgb24NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0Qg Y29udHJvbGxlci4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbiBpbnB1 dCB2YWx1ZSBvZiAweEZGIHJldHJpZXZlcyB0aGUgZmlyc3Qgc2xvdA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvbiB0aGUgU0QgY29udHJvbGxlci4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIG5leHQgc2xvdCBudW1i ZXIgb24gdGhlIFNEIGNvbnRyb2xsZXINCj4gd2FzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuZWQgaW4gU2xvdC4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9V TkQgICAgICAgICBUaGVyZSBhcmUgbm8gbW9yZSBzbG90cyBvbiB0aGlzIFNEDQo+IGNvbnRyb2xs ZXIuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgU2xvdCBpcyBub3QgMHhG RiBhbmQgU2xvdCB3YXMgbm90DQo+IHJldHVybmVkIG9uIGENCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcmV2aW91cyBjYWxsIHRvIEdldE5leHRTbG90KCkuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRHdNbWNQYXNzVGhy dUdldE5leHRTbG90ICgNCj4gPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wgICAgICAgICpUaGlzLA0KPiA+ICsgIElOIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKlNsb3QNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBEV19NTUNfSENfUFJJ VkFURV9EQVRBICAgICAgICAgICpQcml2YXRlOw0KPiA+ICsNCj4gPiArICBpZiAoKFRoaXMgPT0g TlVMTCkgfHwgKFNsb3QgPT0gTlVMTCkpIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9Q QVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQcml2YXRlID0gRFdfTU1DX0hDX1BS SVZBVEVfRlJPTV9USElTIChUaGlzKTsNCj4gPiArDQo+ID4gKyAgaWYgKCpTbG90ID09IDB4RkYp IHsNCj4gPiArICAgIGlmIChQcml2YXRlLT5TbG90WzBdLkVuYWJsZSkgew0KPiA+ICsgICAgICAq U2xvdCA9IDA7DQo+ID4gKyAgICAgIFByaXZhdGUtPlByZXZpb3VzU2xvdCA9IDA7DQo+ID4gKyAg ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArICAgIH0NCj4gPiArICAgIHJldHVybiBFRklf Tk9UX0ZPVU5EOw0KPiA+ICsgIH0gZWxzZSBpZiAoKlNsb3QgPT0gUHJpdmF0ZS0+UHJldmlvdXNT bG90KSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiArICB9IGVsc2Ugew0K PiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFVzZWQgdG8gYWxsb2NhdGUgYW5kIGJ1aWxkIGEgZGV2 aWNlIHBhdGggbm9kZSBmb3IgYW4gU0QgY2FyZCBvbiB0aGUgU0QNCj4gPiArICBjb250cm9sbGVy Lg0KPiA+ICsNCj4gPiArICBUaGUgQnVpbGREZXZpY2VQYXRoKCkgZnVuY3Rpb24gYWxsb2NhdGVz IGFuZCBidWlsZHMgYSBzaW5nbGUgZGV2aWNlIG5vZGUNCj4gPiArICBmb3IgdGhlIFNEIGNhcmQg c3BlY2lmaWVkIGJ5IFNsb3QuDQo+ID4gKw0KPiA+ICsgIElmIHRoZSBTRCBjYXJkIHNwZWNpZmll ZCBieSBTbG90IGlzIG5vdCBwcmVzZW50IG9uIHRoZSBTRCBjb250cm9sbGVyLCB0aGVuDQo+ID4g KyAgRUZJX05PVF9GT1VORCBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgRGV2aWNlUGF0 aCBpcyBOVUxMLCB0aGVuIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBpcyByZXR1cm5lZC4NCj4gPiAr DQo+ID4gKyAgSWYgdGhlcmUgYXJlIG5vdCBlbm91Z2ggcmVzb3VyY2VzIHRvIGFsbG9jYXRlIHRo ZSBkZXZpY2UgcGF0aCBub2RlLCB0aGVuDQo+ID4gKyAgRUZJX09VVF9PRl9SRVNPVVJDRVMgaXMg cmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIE90aGVyd2lzZSwgRGV2aWNlUGF0aCBpcyBhbGxvY2F0 ZWQgd2l0aCB0aGUgYm9vdCBzZXJ2aWNlIEFsbG9jYXRlUG9vbCgpLA0KPiA+ICsgIHRoZSBjb250 ZW50cyBvZiBEZXZpY2VQYXRoIGFyZSBpbml0aWFsaXplZCB0byBkZXNjcmliZSB0aGUgU0QgY2Fy ZA0KPiBzcGVjaWZpZWQNCj4gPiArICBieSBTbG90LCBhbmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJu ZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgIFRoaXMgICAgICAgICAgIEEgcG9pbnRl ciB0byB0aGUNCj4gRUZJX1NEX01NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAg U2xvdCAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCBm b3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBhIGRldmljZSBw YXRoIG5vZGUgaXMgdG8gYmUgYWxsb2NhdGVkIGFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1aWx0Lg0KPiA+ICsgIEBwYXJhbVtpbixvdXRdIERldmljZVBhdGggICAg IEEgcG9pbnRlciB0byBhIHNpbmdsZSBkZXZpY2UgcGF0aCBub2RlIHRoYXQNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgdGhlIFNEIGNhcmQgc3BlY2lmaWVk IGJ5IFNsb3QuIFRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5j dGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyB0aGUNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBidWZmZXIgRGV2aWNlUGF0aCB3aXRoIHRoZSBib290IHNlcnZp Y2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvY2F0ZVBvb2woKS4g SXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpLQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJpbGl0eSB0byBmcmVlIERldmljZVBhdGggd2hlbiB0aGUgY2FsbGVyIGlzDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgd2l0aCBEZXZpY2VQ YXRoLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZGV2 aWNlIHBhdGggbm9kZSB0aGF0IGRlc2NyaWJlcyB0aGUgU0QNCj4gY2FyZA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSBTbG90IHdhcyBhbGxvY2F0ZWQg YW5kIHJldHVybmVkIGluDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2 aWNlUGF0aC4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgU0QgY2Fy ZCBzcGVjaWZpZWQgYnkgU2xvdCBkb2VzIG5vdA0KPiBleGlzdCBvbg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoZSBTRCBjb250cm9sbGVyLg0KPiA+ICsgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSIERldmljZVBhdGggaXMgTlVMTC4NCj4gPiArICBAcmV0dmFs IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBUaGVyZSBhcmUgbm90IGVub3VnaCByZXNvdXJjZXMgdG8N Cj4gYWxsb2NhdGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQ YXRoLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4g K0R3TW1jUGFzc1RocnVCdWlsZERldmljZVBhdGggKA0KPiA+ICsgIElOICAgICBFRklfU0RfTU1D X1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gPiArICBJTiAgICAgVUlOVDggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICBJTiBPVVQgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAgICAgICAgICAgKipEZXZpY2VQYXRoDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4gPiAr ICBTRF9ERVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAgICpTZE5vZGU7DQo+ID4gKyAgRU1NQ19E RVZJQ0VfUEFUSCAgICAgICAgICAgICAgICAqRW1tY05vZGU7DQo+ID4gKw0KPiA+ICsgIGlmICgo VGhpcyA9PSBOVUxMKSB8fCAoRGV2aWNlUGF0aCA9PSBOVUxMKSB8fCAoU2xvdCA+PQ0KPiBEV19N TUNfSENfTUFYX1NMT1QpKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZS T01fVEhJUyAoVGhpcyk7DQo+ID4gKw0KPiA+ICsgIGlmICgoIVByaXZhdGUtPlNsb3RbU2xvdF0u RW5hYmxlKSB8fCAoIVByaXZhdGUtPlNsb3RbU2xvdF0uTWVkaWFQcmVzZW50KSkgew0KPiA+ICsg ICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoUHJp dmF0ZS0+U2xvdFtTbG90XS5DYXJkVHlwZSA9PSBTZENhcmRUeXBlKSB7DQo+ID4gKyAgICBTZE5v ZGUgPSBBbGxvY2F0ZUNvcHlQb29sIChzaXplb2YgKFNEX0RFVklDRV9QQVRIKSwNCj4gJm1TZERw VGVtcGxhdGUpOw0KPiA+ICsgICAgaWYgKFNkTm9kZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgIHJl dHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArICAgIH0NCj4gPiArICAgIFNkTm9kZS0+ U2xvdE51bWJlciA9IFNsb3Q7DQo+ID4gKw0KPiA+ICsgICAgKkRldmljZVBhdGggPSAoRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICopIFNkTm9kZTsNCj4gPiArICB9IGVsc2UgaWYgKFByaXZhdGUt PlNsb3RbU2xvdF0uQ2FyZFR5cGUgPT0gRW1tY0NhcmRUeXBlKSB7DQo+ID4gKyAgICBFbW1jTm9k ZSA9IEFsbG9jYXRlQ29weVBvb2wgKHNpemVvZiAoRU1NQ19ERVZJQ0VfUEFUSCksDQo+ICZtRW1t Y0RwVGVtcGxhdGUpOw0KPiA+ICsgICAgaWYgKEVtbWNOb2RlID09IE5VTEwpIHsNCj4gPiArICAg ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgRW1t Y05vZGUtPlNsb3ROdW1iZXIgPSBTbG90Ow0KPiA+ICsNCj4gPiArICAgICpEZXZpY2VQYXRoID0g KEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSBFbW1jTm9kZTsNCj4gPiArICB9IGVsc2Ugew0K PiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgU0QgYW5k IEVNTUMgdHdvIGRldmljZSBub2Rlcy4NCj4gPiArICAgIC8vDQo+ID4gKyAgICByZXR1cm4gRUZJ X05PVF9GT1VORDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMg YW4gU0QgY2FyZCBzbG90IG51bWJlciBiYXNlZCBvbiB0aGUgaW5wdXQgZGV2aWNlDQo+IHBhdGgu DQo+ID4gKw0KPiA+ICsgIFRoZSBHZXRTbG90TnVtYmVyKCkgZnVuY3Rpb24gcmV0cmlldmVzIHNs b3QgbnVtYmVyIGZvciB0aGUgU0QgY2FyZA0KPiBzcGVjaWZpZWQNCj4gPiArICBieSB0aGUgRGV2 aWNlUGF0aCBub2RlLiBJZiBEZXZpY2VQYXRoIGlzIE5VTEwsDQo+IEVGSV9JTlZBTElEX1BBUkFN RVRFUiBpcw0KPiA+ICsgIHJldHVybmVkLg0KPiA+ICsNCj4gPiArICBJZiBEZXZpY2VQYXRoIGlz IG5vdCBhIGRldmljZSBwYXRoIG5vZGUgdHlwZSB0aGF0IHRoZSBTRCBQYXNzIFRocnUgZHJpdmVy DQo+ID4gKyAgc3VwcG9ydHMsIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBF RklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIERldmljZVBhdGggICAgICAg IEEgcG9pbnRlciB0byB0aGUgZGV2aWNlIHBhdGggbm9kZSB0aGF0DQo+IGRlc2NyaWJlcw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgU0QgY2FyZCBvbiB0aGUgU0QgY29u dHJvbGxlci4NCj4gPiArICBAcGFyYW1bb3V0XSBTbG90ICAgICAgICAgICAgICBPbiByZXR1cm4s IHBvaW50cyB0byB0aGUgc2xvdCBudW1iZXIgb2YgYW4gU0QNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYXJkIG9uIHRoZSBTRCBjb250cm9sbGVyLg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTRCBjYXJkIHNsb3QgbnVtYmVyIGlzIHJl dHVybmVkIGluIFNsb3QuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgU2xv dCBvciBEZXZpY2VQYXRoIGlzIE5VTEwuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQg ICAgICAgRGV2aWNlUGF0aCBpcyBub3QgYSBkZXZpY2UgcGF0aCBub2RlDQo+IHR5cGUgdGhhdA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTRCBQYXNzIFRocnUgZHJp dmVyIHN1cHBvcnRzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJ QVBJDQo+ID4gK0R3TW1jUGFzc1RocnVHZXRTbG90TnVtYmVyICgNCj4gPiArICBJTiAgRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgICAgKlRoaXMsDQo+ID4gKyAgSU4gIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAgICpEZXZpY2VQYXRoLA0KPiA+ICsgIE9V VCBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU2xvdA0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgKlByaXZhdGU7 DQo+ID4gKyAgU0RfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAqU2ROb2RlOw0KPiA+ICsg IEVNTUNfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgKkVtbWNOb2RlOw0KPiA+ICsgIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvdE51bWJlcjsNCj4gPiArDQo+ID4gKyAgaWYg KChUaGlzID09IE5VTEwpIHx8IChEZXZpY2VQYXRoID09IE5VTEwpIHx8IChTbG90ID09IE5VTEwp KSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4g PiArDQo+ID4gKyAgUHJpdmF0ZSA9IERXX01NQ19IQ19QUklWQVRFX0ZST01fVEhJUyAoVGhpcyk7 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ2hlY2sgd2hldGhlciB0aGUgRGV2aWNlUGF0 aCBiZWxvbmdzIHRvIFNEX0RFVklDRV9QQVRIIG9yDQo+IEVNTUNfREVWSUNFX1BBVEgNCj4gPiAr ICAvLw0KPiA+ICsgIGlmICgoRGV2aWNlUGF0aC0+VHlwZSAhPSBNRVNTQUdJTkdfREVWSUNFX1BB VEgpIHx8DQo+ID4gKyAgICAgICgoRGV2aWNlUGF0aC0+U3ViVHlwZSAhPSBNU0dfU0RfRFApICYm DQo+ID4gKyAgICAgICAoRGV2aWNlUGF0aC0+U3ViVHlwZSAhPSBNU0dfRU1NQ19EUCkpIHx8DQo+ ID4gKyAgICAgIChEZXZpY2VQYXRoTm9kZUxlbmd0aChEZXZpY2VQYXRoKSAhPSBzaXplb2YoU0Rf REVWSUNFX1BBVEgpKSB8fA0KPiA+ICsgICAgICAoRGV2aWNlUGF0aE5vZGVMZW5ndGgoRGV2aWNl UGF0aCkgIT0NCj4gc2l6ZW9mKEVNTUNfREVWSUNFX1BBVEgpKSkgew0KPiA+ICsgICAgcmV0dXJu IEVGSV9VTlNVUFBPUlRFRDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChEZXZpY2VQYXRo LT5TdWJUeXBlID09IE1TR19TRF9EUCkgew0KPiA+ICsgICAgU2ROb2RlID0gKFNEX0RFVklDRV9Q QVRIICopIERldmljZVBhdGg7DQo+ID4gKyAgICBTbG90TnVtYmVyID0gU2ROb2RlLT5TbG90TnVt YmVyOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBFbW1jTm9kZSA9IChFTU1DX0RFVklDRV9Q QVRIICopIERldmljZVBhdGg7DQo+ID4gKyAgICBTbG90TnVtYmVyID0gRW1tY05vZGUtPlNsb3RO dW1iZXI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoU2xvdE51bWJlciA+PSBEV19NTUNf SENfTUFYX1NMT1QpIHsNCj4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgaWYgKFByaXZhdGUtPlNsb3RbU2xvdE51bWJlcl0uRW5hYmxlKSB7DQo+ ID4gKyAgICAqU2xvdCA9IFNsb3ROdW1iZXI7DQo+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ICsg IH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVzZXRzIGFuIFNEIGNhcmQgdGhh dCBpcyBjb25uZWN0ZWQgdG8gdGhlIFNEIGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIFRoZSBS ZXNldERldmljZSgpIGZ1bmN0aW9uIHJlc2V0cyB0aGUgU0QgY2FyZCBzcGVjaWZpZWQgYnkgU2xv dC4NCj4gPiArDQo+ID4gKyAgSWYgdGhpcyBTRCBjb250cm9sbGVyIGRvZXMgbm90IHN1cHBvcnQg YSBkZXZpY2UgcmVzZXQgb3BlcmF0aW9uLA0KPiA+ICsgIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1 cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgU2xvdCBpcyBub3QgaW4gYSB2YWxpZCBzbG90IG51bWJl ciBmb3IgdGhpcyBTRCBjb250cm9sbGVyLA0KPiA+ICsgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBp cyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgSWYgdGhlIGRldmljZSByZXNldCBvcGVyYXRpb24g aXMgY29tcGxldGVkLCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW2luXSAgVGhpcyAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1D X1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNsb3QgICAgICAgICAgICAgIFNwZWNpZmll cyB0aGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gYmUNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNldC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIFNEIGNhcmQgc3BlY2lmaWVkIGJ5IFNsb3Qgd2FzIHJlc2V0Lg0K PiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIFRoZSBTRCBjb250cm9sbGVyIGRv ZXMgbm90IHN1cHBvcnQgYQ0KPiBkZXZpY2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNldCBvcGVyYXRpb24uDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgU2xvdCBudW1iZXIgaXMgaW52YWxpZC4NCj4gPiArICBAcmV0dmFsIEVGSV9OT19NRURJ QSAgICAgICAgICBTRCBEZXZpY2Ugbm90IHByZXNlbnQgaW4gdGhlIFNsb3QuDQo+ID4gKyAgQHJl dHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgVGhlIHJlc2V0IGNvbW1hbmQgZmFpbGVkIGR1ZSB0 byBhIGRldmljZQ0KPiBlcnJvcg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArRUZJQVBJDQo+ID4gK0R3TW1jUGFzc1RocnVSZXNldERldmljZSAoDQo+ID4gKyAgSU4gRUZJ X1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KPiA+ICsgIElOIFVJ TlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG90DQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgRFdfTU1DX0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAqUHJpdmF0ZTsNCj4g PiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgICAgICAgICpMaW5rOw0KPiA+ICsgIExJU1Rf RU5UUlkgICAgICAgICAgICAgICAgICAgICAgKk5leHRMaW5rOw0KPiA+ICsgIERXX01NQ19IQ19U UkIgICAgICAgICAgICAgICAgICAgKlRyYjsNCj4gPiArICBFRklfVFBMICAgICAgICAgICAgICAg ICAgICAgICAgIE9sZFRwbDsNCj4gPiArDQo+ID4gKyAgaWYgKFRoaXMgPT0gTlVMTCkgew0KPiA+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFURV9GUk9NX1RISVMgKFRoaXMpOw0KPiA+ICsN Cj4gPiArICBpZiAoIVByaXZhdGUtPlNsb3RbU2xvdF0uRW5hYmxlKSB7DQo+ID4gKyAgICByZXR1 cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKCFQ cml2YXRlLT5TbG90W1Nsb3RdLk1lZGlhUHJlc2VudCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9O T19NRURJQTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gRnJlZSBhbGwg YXN5bmMgSS9PIHJlcXVlc3RzIGluIHRoZSBxdWV1ZQ0KPiA+ICsgIC8vDQo+ID4gKyAgT2xkVHBs ID0gZ0JTLT5SYWlzZVRQTCAoVFBMX05PVElGWSk7DQo+ID4gKw0KPiA+ICsgIGZvciAoTGluayA9 IEdldEZpcnN0Tm9kZSAoJlByaXZhdGUtPlF1ZXVlKTsNCj4gPiArICAgICAgICFJc051bGwgKCZQ cml2YXRlLT5RdWV1ZSwgTGluayk7DQo+ID4gKyAgICAgICBMaW5rID0gTmV4dExpbmspIHsNCj4g PiArICAgIE5leHRMaW5rID0gR2V0TmV4dE5vZGUgKCZQcml2YXRlLT5RdWV1ZSwgTGluayk7DQo+ ID4gKyAgICBSZW1vdmVFbnRyeUxpc3QgKExpbmspOw0KPiA+ICsgICAgVHJiID0gRFdfTU1DX0hD X1RSQl9GUk9NX1RISVMgKExpbmspOw0KPiA+ICsgICAgVHJiLT5QYWNrZXQtPlRyYW5zYWN0aW9u U3RhdHVzID0gRUZJX0FCT1JURUQ7DQo+ID4gKyAgICBnQlMtPlNpZ25hbEV2ZW50IChUcmItPkV2 ZW50KTsNCj4gPiArICAgIER3TW1jRnJlZVRyYiAoVHJiKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIGdCUy0+UmVzdG9yZVRQTCAoT2xkVHBsKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMvRHdN bWNIY0R4ZS9Ed01tY0hjaS5jDQo+IGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL0R3 TW1jSGNpLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uYjA5MWY5ODAzYjJlDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0VtYmVkZGVkUGtn L0RyaXZlcnMvRHdNbWNIY0R4ZS9Ed01tY0hjaS5jDQo+ID4gQEAgLTAsMCArMSwxNjAyIEBADQo+ ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFRoaXMgZHJpdmVyIGlzIHVzZWQgdG8gbWFuYWdlIERlc2ln bndhcmUgU0QvTU1DIFBDSSBob3N0IGNvbnRyb2xsZXJzLg0KPiA+ICsNCj4gPiArICBJdCB3b3Vs ZCBleHBvc2UgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgZm9yIHVwcGVyIGxheWVyDQo+ IHVzZS4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAyMCwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAoYykg MjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICsg IFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlDQo+IGF2YWlsYWJsZQ0KPiA+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMNCj4gdGhpcw0KPiA+ICsg IGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5k IGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlT dGFuZGFyZC9FbW1jLmg+DQo+ID4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1NkLmg+DQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Bcm1MaWIuaD4NCj4gPiArI2luY2x1ZGUgPExp YnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EbWFMaWIuaD4N Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkv RGVidWdMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5o Pg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4g PiArDQo+ID4gKyNpbmNsdWRlICJEd01tY0hjRHhlLmgiDQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBEdW1wIHRoZSBjb250ZW50IG9mIFNEL01NQyBob3N0IGNvbnRyb2xsZXIncyBDYXBhYmlsaXR5 IFJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBTbG90ICAgICAgICAgICAgVGhl IHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8uDQo+ID4gKyAgQHBhcmFtW2luXSAgQ2FwYWJp bGl0eSAgICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIGNhcGFiaWxpdHkgZGF0YS4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0R1bXBDYXBhYmlsaXR5UmVnICgNCj4gPiArICBJ TiBVSU5UOCAgICAgICAgICAgICAgICBTbG90LA0KPiA+ICsgIElOIERXX01NQ19IQ19TTE9UX0NB UCAgICpDYXBhYmlsaXR5DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBE dW1wIENhcGFiaWxpdHkgRGF0YQ0KPiA+ICsgIC8vDQo+ID4gKyAgREVCVUcgKCgNCj4gPiArICAg IERFQlVHX0lORk8sDQo+ID4gKyAgICAiID09IFNsb3QgWyVkXSBDYXBhYmlsaXR5IGlzIDB4JXgg PT1cbiIsDQo+ID4gKyAgICBTbG90LA0KPiA+ICsgICAgQ2FwYWJpbGl0eQ0KPiA+ICsgICAgKSk7 DQo+ID4gKyAgREVCVUcgKCgNCj4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAiICAgQmFz ZSBDbGsgRnJlcSAgICAgJWRLSHpcbiIsDQo+ID4gKyAgICBDYXBhYmlsaXR5LT5CYXNlQ2xrRnJl cQ0KPiA+ICsgICAgKSk7DQo+ID4gKyAgREVCVUcgKCgNCj4gPiArICAgIERFQlVHX0lORk8sDQo+ ID4gKyAgICAiICAgQnVzV2lkdGggICAgICAgICAgJWRcbiIsDQo+ID4gKyAgICBDYXBhYmlsaXR5 LT5CdXNXaWR0aA0KPiA+ICsgICAgKSk7DQo+ID4gKyAgREVCVUcgKCgNCj4gPiArICAgIERFQlVH X0lORk8sDQo+ID4gKyAgICAiICAgSGlnaFNwZWVkIFN1cHBvcnQgJWFcbiIsDQo+ID4gKyAgICBD YXBhYmlsaXR5LT5IaWdoU3BlZWQgPyAiVFJVRSIgOiAiRkFMU0UiDQo+ID4gKyAgICApKTsNCj4g PiArICBERUJVRyAoKA0KPiA+ICsgICAgREVCVUdfSU5GTywNCj4gPiArICAgICIgICBWb2x0YWdl IDEuOCAgICAgICAlYVxuIiwNCj4gPiArICAgIENhcGFiaWxpdHktPlZvbHRhZ2UxOCA/ICJUUlVF IiA6ICJGQUxTRSINCj4gPiArICAgICkpOw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBERUJV R19JTkZPLA0KPiA+ICsgICAgIiAgIDY0LWJpdCBTeXMgQnVzICAgICVhXG4iLA0KPiA+ICsgICAg Q2FwYWJpbGl0eS0+U3lzQnVzNjQgPyAiVFJVRSIgOiAiRkFMU0UiDQo+ID4gKyAgICApKTsNCj4g PiArICBERUJVRyAoKERFQlVHX0lORk8sICIgICBTbG90VHlwZSAgICAgICAgICAiKSk7DQo+ID4g KyAgaWYgKENhcGFiaWxpdHktPlNsb3RUeXBlID09IDB4MDApIHsNCj4gPiArICAgIERFQlVHICgo REVCVUdfSU5GTywgIiVhXG4iLCAiUmVtb3ZhYmxlIFNsb3QiKSk7DQo+ID4gKyAgfSBlbHNlIGlm IChDYXBhYmlsaXR5LT5TbG90VHlwZSA9PSAweDAxKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVH X0lORk8sICIlYVxuIiwgIkVtYmVkZGVkIFNsb3QiKSk7DQo+ID4gKyAgfSBlbHNlIGlmIChDYXBh YmlsaXR5LT5TbG90VHlwZSA9PSAweDAyKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8s ICIlYVxuIiwgIlNoYXJlZCBCdXMgU2xvdCIpKTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAg REVCVUcgKChERUJVR19JTkZPLCAiJWFcbiIsICJSZXNlcnZlZCIpKTsNCj4gPiArICB9DQo+ID4g KyAgREVCVUcgKCgNCj4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAiICAgU0RSNTAgIFN1 cHBvcnQgICAgJWFcbiIsDQo+ID4gKyAgICBDYXBhYmlsaXR5LT5TZHI1MCA/ICJUUlVFIiA6ICJG QUxTRSINCj4gPiArICAgICkpOw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBERUJVR19JTkZP LA0KPiA+ICsgICAgIiAgIFNEUjEwNCBTdXBwb3J0ICAgICVhXG4iLA0KPiA+ICsgICAgQ2FwYWJp bGl0eS0+U2RyMTA0ID8gIlRSVUUiIDogIkZBTFNFIg0KPiA+ICsgICAgKSk7DQo+ID4gKyAgREVC VUcgKCgNCj4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAiICAgRERSNTAgIFN1cHBvcnQg ICAgJWFcbiIsDQo+ID4gKyAgICBDYXBhYmlsaXR5LT5EZHI1MCA/ICJUUlVFIiA6ICJGQUxTRSIN Cj4gPiArICAgICkpOw0KPiA+ICsgIHJldHVybjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgU2V0IGFsbCBpbnRlcnJ1cHQgc3RhdHVzIGJpdHMgaW4gTm9ybWFsIGFuZCBFcnJvciBJ bnRlcnJ1cHQgU3RhdHVzIEVuYWJsZQ0KPiA+ICsgIHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2Uu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBl eGVjdXRlcyBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBU aGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArRHdNbWNIY0VuYWJsZUludGVycnVwdCAoDQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgIERldkJhc2UNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgIEludFN0YXR1czsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg IElkSW50RW47DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJZFN0czsNCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBFbmFibGUgYWxsIGJpdHMgaW4gSW50ZXJydXB0IE1hc2sg UmVnaXN0ZXINCj4gPiArICAvLw0KPiA+ICsgIEludFN0YXR1cyA9IDA7DQo+ID4gKyAgTW1pb1dy aXRlMzIgKERldkJhc2UgKyBEV19NTUNfSU5UTUFTSywgSW50U3RhdHVzKTsNCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBDbGVhciBzdGF0dXMgaW4gSW50ZXJydXB0IFN0YXR1cyBSZWdpc3Rl cg0KPiA+ICsgIC8vDQo+ID4gKyAgSW50U3RhdHVzID0gfjA7DQo+ID4gKyAgTW1pb1dyaXRlMzIg KERldkJhc2UgKyBEV19NTUNfUklOVFNUUywgSW50U3RhdHVzKTsNCj4gPiArDQo+ID4gKyAgSWRJ bnRFbiA9IH4wOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0lESU5URU4s IElkSW50RW4pOw0KPiA+ICsNCj4gPiArICBJZFN0cyA9IH4wOw0KPiA+ICsgIE1taW9Xcml0ZTMy IChEZXZCYXNlICsgRFdfTU1DX0lEU1RTLCBJZFN0cyk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hj R2V0Q2FwYWJpbGl0eSAoDQo+ID4gKyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgIERl dkJhc2UsDQo+ID4gKyAgSU4gICAgIEVGSV9IQU5ETEUgICAgICAgICAgICAgIENvbnRyb2xsZXIs DQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgIFNsb3QsDQo+ID4gKyAgICAg T1VUIERXX01NQ19IQ19TTE9UX0NBUCAgICAgICpDYXBhY2l0eQ0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIFBMQVRGT1JNX0RXX01NQ19QUk9UT0NPTCAgICAgICAqUGxhdGZvcm1Ed01tYzsNCj4g PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiAr ICBpZiAoQ2FwYWNpdHkgPT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAo DQo+ID4gKyAgICAgICAgICAgICAgICAgICZnUGxhdGZvcm1Ed01tY1Byb3RvY29sR3VpZCwNCj4g PiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAgICAgKFZPSUQg KiopICZQbGF0Zm9ybUR3TW1jDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9 DQo+ID4gKyAgU3RhdHVzID0gUGxhdGZvcm1Ed01tYy0+R2V0Q2FwYWJpbGl0eSAoQ29udHJvbGxl ciwgU2xvdCwgQ2FwYWNpdHkpOw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIERldGVjdCB3aGV0aGVyIHRoZXJlIGlzIGEgU0QvTU1DIGNhcmQg YXR0YWNoZWQgYXQgdGhlIHNwZWNpZmllZA0KPiBTRC9NTUMgaG9zdA0KPiA+ICsgIGNvbnRyb2xs ZXIgc2xvdC4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgSG9zdCBDb250cm9sbGVyIFNpbXBs aWZpZWQgc3BlYyAzLjAgU2VjdGlvbiAzLjEgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbVtpbl0gIERldklvICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90b2NvbCBpbnN0YW5jZS4N Cj4gPiArICBAcGFyYW1baW5dICBTbG90ICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUg U0QgY2FyZCB0byBzZW5kIHRoZQ0KPiBjb21tYW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0by4NCj4gPiArICBAcGFyYW1bb3V0XSBNZWRpYVByZXNlbnQgIFRoZSBwb2ludGVy IHRvIHRoZSBtZWRpYSBwcmVzZW50IGJvb2xlYW4NCj4gdmFsdWUuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlcmUgaXMgbm8gbWVkaWEgY2hhbmdlIGhhcHBlbmVk Lg0KPiA+ICsgIEByZXR2YWwgRUZJX01FRElBX0NIQU5HRUQgVGhlcmUgaXMgbWVkaWEgY2hhbmdl IGhhcHBlbmVkLg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIGRldGVjdGlv biBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGND YXJkRGV0ZWN0ICgNCj4gPiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgICBEZXZCYXNl LA0KPiA+ICsgIElOICAgICBFRklfSEFORExFICAgICAgICAgICAgIENvbnRyb2xsZXIsDQo+ID4g KyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwNCj4gPiArICAgICBPVVQgQk9P TEVBTiAgICAgICAgICAgICAgICAqTWVkaWFQcmVzZW50DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgUExBVEZPUk1fRFdfTU1DX1BST1RPQ09MICAqUGxhdGZvcm1Ed01tYzsNCj4gPiArICBFRklf U1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgaWYgKE1lZGlhUHJl c2VudCA9PSBOVUxMKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0K PiA+ICsgIH0NCj4gPiArICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCj4gPiArICAg ICAgICAgICAgICAgICAgJmdQbGF0Zm9ybUR3TW1jUHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAg ICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlBsYXRm b3JtRHdNbWMNCj4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArICAq TWVkaWFQcmVzZW50ID0gUGxhdGZvcm1Ed01tYy0+Q2FyZERldGVjdCAoQ29udHJvbGxlciwgU2xv dCk7DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtTVEFU SUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjVXBkYXRlQ2xvY2sgKA0KPiA+ICsgIElO IFVJTlROICAgICAgICAgICAgICAgICAgRGV2QmFzZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQ21kOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgSW50U3RhdHVzOw0KPiA+ICsNCj4gPiArICBDbWQgPSBCSVRfQ01EX1dBSVRfUFJW REFUQV9DT01QTEVURSB8DQo+IEJJVF9DTURfVVBEQVRFX0NMT0NLX09OTFkgfA0KPiA+ICsgICAg ICAgIEJJVF9DTURfU1RBUlQ7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNf Q01ELCBDbWQpOw0KPiA+ICsNCj4gPiArICB3aGlsZSAoMSkgew0KPiA+ICsgICAgQ21kID0gTW1p b1JlYWQzMiAoRGV2QmFzZSArIERXX01NQ19DTUQpOw0KPiA+ICsNCj4gPiArICAgIGlmICghKENt ZCAmIENNRF9TVEFSVF9CSVQpKSB7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ ICsNCj4gPiArICAgIEludFN0YXR1cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfUklO VFNUUyk7DQo+ID4gKw0KPiA+ICsgICAgaWYgKEludFN0YXR1cyAmIERXX01NQ19JTlRfSExFKSB7 DQo+ID4gKyAgICAgIERFQlVHICgoDQo+ID4gKyAgICAgICAgREVCVUdfRVJST1IsDQo+ID4gKyAg ICAgICAgIkR3TW1jSGNVcGRhdGVDbG9jazogZmFpbGVkIHRvIHVwZGF0ZSBtbWMgY2xvY2sgZnJl cXVlbmN5XG4iDQo+ID4gKyAgICAgICAgKSk7DQo+ID4gKyAgICAgIHJldHVybiBFRklfREVWSUNF X0VSUk9SOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTdG9wIFNEL01NQyBjYXJk IGNsb2NrLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIFRoZSBERVZJ Q0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgU3VjY2VlZCB0byBzdG9wIFNEL01NQyBjbG9jay4NCj4gPiArICBAcmV0dmFsIE90 aGVycyAgICAgICAgICAgIEZhaWwgdG8gc3RvcCBTRC9NTUMgY2xvY2suDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0hjU3RvcENsb2NrICgNCj4gPiArICBJTiBV SU5UTiAgICAgICAgICAgICAgICAgIERldkJhc2UNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgIENsa0VuYTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBEaXNhYmxlIE1N QyBjbG9jayBmaXJzdA0KPiA+ICsgIC8vDQo+ID4gKyAgQ2xrRW5hID0gMDsNCj4gPiArICBNbWlv V3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DTEtFTkEsIENsa0VuYSk7DQo+ID4gKw0KPiA+ICsg IFN0YXR1cyA9IER3TW1jSGNVcGRhdGVDbG9jayAoRGV2QmFzZSk7DQo+ID4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4g KyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU0QvTU1D IGNhcmQgY2xvY2sgc3VwcGx5Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAg ICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBD bG9ja0ZyZXEgICAgICBUaGUgbWF4IGNsb2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQuIFRoZSB1bml0 IGlzDQo+IEtIei4NCj4gPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBjYXBhYmls aXR5IG9mIHRoZSBzbG90Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg IFRoZSBjbG9jayBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICBUaGUgY2xvY2sgaXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0Nsb2NrU3VwcGx5ICgN Cj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgSU4gVUlO VDY0ICAgICAgICAgICAgICAgICBDbG9ja0ZyZXEsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1Rf Q0FQICAgICBDYXBhYmlsaXR5DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBC YXNlQ2xrRnJlcTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIFNldHRpbmdGcmVx Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRGl2aXNvcjsNCj4gPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgIFJlbWFpbmRlcjsNCj4gPiArICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgIE1tY1N0YXR1czsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENs a0VuYTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENsa1NyYzsNCj4gPiArDQo+ ID4gKyAgLy8NCj4gPiArICAvLyBDYWxjdWxhdGUgYSBkaXZpc29yIGZvciBTRCBjbG9jayBmcmVx dWVuY3kNCj4gPiArICAvLw0KPiA+ICsgIEFTU0VSVCAoQ2FwYWJpbGl0eS5CYXNlQ2xrRnJlcSAh PSAwKTsNCj4gPiArDQo+ID4gKyAgQmFzZUNsa0ZyZXEgPSBDYXBhYmlsaXR5LkJhc2VDbGtGcmVx Ow0KPiA+ICsgIGlmIChDbG9ja0ZyZXEgPT0gMCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZB TElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChDbG9ja0ZyZXEgPiBC YXNlQ2xrRnJlcSkgew0KPiA+ICsgICAgQ2xvY2tGcmVxID0gQmFzZUNsa0ZyZXE7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENhbGN1bGF0ZSB0aGUgZGl2aXNvciBvZiBi YXNlIGZyZXF1ZW5jeS4NCj4gPiArICAvLw0KPiA+ICsgIERpdmlzb3IgICAgID0gMDsNCj4gPiAr ICBTZXR0aW5nRnJlcSA9IEJhc2VDbGtGcmVxOw0KPiA+ICsgIHdoaWxlIChDbG9ja0ZyZXEgPCBT ZXR0aW5nRnJlcSkgew0KPiA+ICsgICAgRGl2aXNvcisrOw0KPiA+ICsNCj4gPiArICAgIFNldHRp bmdGcmVxID0gQmFzZUNsa0ZyZXEgLyAoMiAqIERpdmlzb3IpOw0KPiA+ICsgICAgUmVtYWluZGVy ICAgPSBCYXNlQ2xrRnJlcSAlICgyICogRGl2aXNvcik7DQo+ID4gKyAgICBpZiAoKENsb2NrRnJl cSA9PSBTZXR0aW5nRnJlcSkgJiYgKFJlbWFpbmRlciA9PSAwKSkgew0KPiA+ICsgICAgICBicmVh azsNCj4gPiArICAgIH0NCj4gPiArICAgIGlmICgoQ2xvY2tGcmVxID09IFNldHRpbmdGcmVxKSAm JiAoUmVtYWluZGVyICE9IDApKSB7DQo+ID4gKyAgICAgIFNldHRpbmdGcmVxICsrOw0KPiA+ICsg ICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgREVCVUcgKCgNCj4gPiArICAgIERFQlVHX0lO Rk8sDQo+ID4gKyAgICAiQmFzZUNsa0ZyZXEgJWRLSHogRGl2aXNvciAlZCBDbG9ja0ZyZXEgJWRL aHpcbiIsDQo+ID4gKyAgICBCYXNlQ2xrRnJlcSwNCj4gPiArICAgIERpdmlzb3IsDQo+ID4gKyAg ICBDbG9ja0ZyZXENCj4gPiArICAgICkpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdh aXQgdW50aWwgTU1DIGlzIGlkbGUNCj4gPiArICAvLw0KPiA+ICsgIGRvIHsNCj4gPiArICAgIE1t Y1N0YXR1cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfU1RBVFVTKTsNCj4gPiArICB9 IHdoaWxlIChNbWNTdGF0dXMgJiBEV19NTUNfU1RTX0RBVEFfQlVTWSk7DQo+ID4gKw0KPiA+ICsg IGRvIHsNCj4gPiArICAgIFN0YXR1cyA9IER3TW1jSGNTdG9wQ2xvY2sgKERldkJhc2UpOw0KPiA+ ICsgIH0gd2hpbGUgKEVGSV9FUlJPUiAoU3RhdHVzKSk7DQo+ID4gKw0KPiA+ICsgIGRvIHsNCj4g PiArICAgIENsa1NyYyA9IDA7DQo+ID4gKyAgICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01N Q19DTEtTUkMsIENsa1NyYyk7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gU2V0IGNsb2NrIGRp dmlzb3INCj4gPiArICAgIC8vDQo+ID4gKyAgICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01N Q19DTEtESVYsIERpdmlzb3IpOw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEVuYWJsZSBNTUMg Y2xvY2sNCj4gPiArICAgIC8vDQo+ID4gKyAgICBDbGtFbmEgPSAxOw0KPiA+ICsgICAgTW1pb1dy aXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ0xLRU5BLCBDbGtFbmEpOw0KPiA+ICsNCj4gPiArICAg IFN0YXR1cyA9IER3TW1jSGNVcGRhdGVDbG9jayAoRGV2QmFzZSk7DQo+ID4gKyAgfSB3aGlsZSAo RUZJX0VSUk9SIChTdGF0dXMpKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZXQgdGhlIFNEL01NQyBidXMgd2lkdGgu DQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlmaWVkIHNw ZWMgMy4wIFNlY3Rpb24gMy40IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d IERldklvICAgICAgICAgIFRoZSBERVZJQ0UgSU8gcHJvdG9jb2wgaW5zdGFuY2UuDQo+ID4gKyAg QHBhcmFtW2luXSBJc0RkciAgICAgICAgICBBIGJvb2xlYW4gdG8gaW5kaWNhdGUgaXQncyBkdWFs IGRhdGEgcmF0ZSBvciBub3QuDQo+ID4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAgICAgICBUaGUg YnVzIHdpZHRoIHVzZWQgYnkgdGhlIFNEL01NQyBkZXZpY2UsIGl0DQo+IG11c3QgYmUNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDQgb3IgOC4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgYnVzIHdpZHRoIGlzIHNldCBzdWNjZXNzZnVsbHku DQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgYnVzIHdpZHRoIGlzbid0IHNl dCBzdWNjZXNzZnVsbHkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtE d01tY0hjU2V0QnVzV2lkdGggKA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgRGV2 QmFzZSwNCj4gPiArICBJTiBCT09MRUFOICAgICAgICAgICAgICAgIElzRGRyLA0KPiA+ICsgIElO IFVJTlQxNiAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEN0eXBlOw0KPiA+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgVWhzOw0KPiA+ICsNCj4gPiArICBzd2l0Y2ggKEJ1c1dpZHRoKSB7DQo+ID4g KyAgY2FzZSAxOg0KPiA+ICsgICAgQ3R5cGUgPSBNTUNfMUJJVF9NT0RFOw0KPiA+ICsgICAgYnJl YWs7DQo+ID4gKyAgY2FzZSA0Og0KPiA+ICsgICAgQ3R5cGUgPSBNTUNfNEJJVF9NT0RFOw0KPiA+ ICsgICAgYnJlYWs7DQo+ID4gKyAgY2FzZSA4Og0KPiA+ICsgICAgQ3R5cGUgPSBNTUNfOEJJVF9N T0RFOw0KPiA+ICsgICAgYnJlYWs7DQo+ID4gKyAgZGVmYXVsdDoNCj4gPiArICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZC YXNlICsgRFdfTU1DX0NUWVBFLCBDdHlwZSk7DQo+ID4gKw0KPiA+ICsgIFVocyA9IE1taW9SZWFk MzIgKERldkJhc2UgKyBEV19NTUNfVUhTUkVHKTsNCj4gPiArDQo+ID4gKyAgaWYgKElzRGRyKSB7 DQo+ID4gKyAgICBVaHMgfD0gVUhTX0REUl9NT0RFOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAg ICBVaHMgJj0gfihVSFNfRERSX01PREUpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgTW1pb1dy aXRlMzIgKERldkJhc2UgKyBEV19NTUNfVUhTUkVHLCBVaHMpOw0KPiA+ICsNCj4gPiArICByZXR1 cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFN1cHBseSBT RC9NTUMgY2FyZCB3aXRoIGxvd2VzdCBjbG9jayBmcmVxdWVuY3kgYXQgaW5pdGlhbGl6YXRpb24u DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklDRSBJTyBw cm90b2NvbCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIENhcGFiaWxpdHkgICAgIFRoZSBj YXBhYmlsaXR5IG9mIHRoZSBzbG90Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIFRoZSBjbG9jayBpcyBzdXBwbGllZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZh bCBPdGhlcnMgICAgICAgICAgICBUaGUgY2xvY2sgaXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5 Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0luaXRDbG9j a0ZyZXEgKA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4g PiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgICAgIENhcGFiaWxpdHkNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgIEluaXRGcmVxOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIENhbGN1bGF0ZSBhIGRpdmlzb3IgZm9yIFNEIGNsb2NrIGZyZXF1ZW5jeQ0KPiA+ICsg IC8vDQo+ID4gKyAgaWYgKENhcGFiaWxpdHkuQmFzZUNsa0ZyZXEgPT0gMCkgew0KPiA+ICsgICAg Ly8NCj4gPiArICAgIC8vIERvbid0IHN1cHBvcnQgZ2V0IEJhc2UgQ2xvY2sgRnJlcXVlbmN5IGlu Zm9ybWF0aW9uIHZpYSBhbm90aGVyDQo+IG1ldGhvZA0KPiA+ICsgICAgLy8NCj4gPiArICAgIHJl dHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gU3Vw cGx5IDQwMEtIeiBjbG9jayBmcmVxdWVuY3kgYXQgaW5pdGlhbGl6YXRpb24gcGhhc2UuDQo+ID4g KyAgLy8NCj4gPiArICBJbml0RnJlcSA9IERXTU1DX0lOSVRfQ0xPQ0tfRlJFUTsNCj4gPiArICBT dGF0dXMgPSBEd01tY0hjQ2xvY2tTdXBwbHkgKERldkJhc2UsIEluaXRGcmVxLCBDYXBhYmlsaXR5 KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3Rh dHVzOw0KPiA+ICsgIH0NCj4gPiArICBNaWNyb1NlY29uZERlbGF5ICgxMDApOw0KPiA+ICsgIHJl dHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFN1cHBseSBTRC9N TUMgY2FyZCB3aXRoIG1heGltdW0gdm9sdGFnZSBhdCBpbml0aWFsaXphdGlvbi4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3RvY29sIGlu c3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAgICAgVGhlIGNhcGFiaWxpdHkg b2YgdGhlIHNsb3QuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IHZvbHRhZ2UgaXMgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJz ICAgICAgICAgICAgVGhlIHZvbHRhZ2UgaXNuJ3Qgc3VwcGxpZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0luaXRQb3dlclZvbHRh Z2UgKA0KPiA+ICsgIElOIFVJTlROIERldkJhc2UsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1NMT1Rf Q0FQICAgICBDYXBhYmlsaXR5DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICBEYXRhOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgVGlt ZW91dDsNCj4gPiArDQo+ID4gKyAgRGF0YSA9IDB4MTsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2 QmFzZSArIERXX01NQ19QV1JFTiwgRGF0YSk7DQo+ID4gKw0KPiA+ICsgIERhdGEgPSBEV19NTUNf Q1RSTF9SRVNFVF9BTEw7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ1RS TCwgRGF0YSk7DQo+ID4gKw0KPiA+ICsgIFRpbWVvdXQgPSBEV19NTUNfSENfR0VORVJJQ19USU1F T1VUOw0KPiA+ICsgIHdoaWxlIChUaW1lb3V0ID4gMCkgew0KPiA+ICsgICAgRGF0YSA9IE1taW9S ZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQ1RSTCk7DQo+ID4gKw0KPiA+ICsgICAgaWYgKChEYXRh ICYgRFdfTU1DX0NUUkxfUkVTRVRfQUxMKSA9PSAwKSB7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ ICsgICAgfQ0KPiA+ICsgICAgZ0JTLT5TdGFsbCAoMSk7DQo+ID4gKw0KPiA+ICsgICAgVGltZW91 dC0tOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKFRpbWVvdXQgPD0gMCkgew0KPiA+ICsg ICAgREVCVUcgKChERUJVR19JTkZPLA0KPiA+ICsgICAgICAiRHdNbWNIY0luaXRQb3dlclZvbHRh Z2U6IHJlc2V0IGZhaWxlZCBkdWUgdG8gdGltZW91dCIpKTsNCj4gPiArDQo+ID4gKyAgICByZXR1 cm4gRUZJX1RJTUVPVVQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBEYXRhID0gRFdfTU1DX0NU UkxfSU5UX0VOOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0NUUkwsIERh dGEpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIEluaXRpYWxpemUgdGhlIFRpbWVvdXQgQ29udHJvbCByZWdpc3RlciB3 aXRoIG1vc3QgY29uc2VydmF0aXZlIHZhbHVlIGF0DQo+ID4gKyAgaW5pdGlhbGl6YXRpb24uDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgVGhlIERFVklDRSBJTyBwcm90 b2NvbCBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBU aGUgdGltZW91dCBjb250cm9sIHJlZ2lzdGVyIGlzIGNvbmZpZ3VyZWQNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAg ICAgICAgICAgIFRoZSB0aW1lb3V0IGNvbnRyb2wgcmVnaXN0ZXIgaXNuJ3QgY29uZmlndXJlZA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY0luaXRUaW1lb3V0Q3RybCAoDQo+ ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBEZXZCYXNlDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBEYXRhOw0KPiA+ICsNCj4gPiArICBE YXRhID0gfjA7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfVE1PVVQsIERh dGEpOw0KPiA+ICsNCj4gPiArICBEYXRhID0gMHgwMEZGRkZGRjsNCj4gPiArICBNbWlvV3JpdGUz MiAoRGV2QmFzZSArIERXX01NQ19ERUJOQ0UsIERhdGEpOw0KPiA+ICsNCj4gPiArICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEluaXRpYWwgU0Qv TU1DIGhvc3QgY29udHJvbGxlciB3aXRoIGxvd2VzdCBjbG9jayBmcmVxdWVuY3ksIG1heCBwb3dl cg0KPiBhbmQNCj4gPiArICBtYXggdGltZW91dCB2YWx1ZSBhdCBpbml0aWFsaXphdGlvbi4NCj4g PiArDQo+ID4gKyAgQHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBUaGUgREVWSUNFIElPIHByb3Rv Y29sIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3Qg bnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlDQo+IGNvbW1hbmQNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRvLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2FwYWJpbGl0eSAg ICAgVGhlIGNhcGFiaWxpdHkgb2YgdGhlIHNsb3QuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgVGhlIGhvc3QgY29udHJvbGxlciBpcyBpbml0aWFsaXplZCBzdWNjZXNz ZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgaG9zdCBjb250cm9s bGVyIGlzbid0IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jSGNJbml0SG9zdCAoDQo+ID4gKyAgSU4gVUlOVE4gICAg RGV2QmFzZSwNCj4gPiArICBJTiBEV19NTUNfSENfU0xPVF9DQVAgICAgICAgIENhcGFiaWxpdHkN Cj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgIFN0YXR1czsNCj4gPiAr DQo+ID4gKyAgU3RhdHVzID0gRHdNbWNIY0luaXRQb3dlclZvbHRhZ2UgKERldkJhc2UsIENhcGFi aWxpdHkpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVy biBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiAr DQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRHdNbWNIY1N0YXJ0RG1hICgNCj4gPiArICBJTiBEV19N TUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBEV19NTUNf SENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZTsNCj4gPiArICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdHJsOw0KPiA+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJtb2Q7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVGltZW91dDsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBEYXRhOw0KPiA+ICsNCj4gPiArLy8gIERldklvICA9IFRyYi0+UHJpdmF0 ZS0+RGV2SW87DQo+ID4gKyAgRGV2QmFzZSA9IFRyYi0+UHJpdmF0ZS0+RGV2QmFzZTsNCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBSZXNldCBETUENCj4gPiArICAvLw0KPiA+ICsgIEN0cmwg PSBEV19NTUNfQ1RSTF9ETUFfUkVTRVQ7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBE V19NTUNfQ1RSTCwgQ3RybCk7DQo+ID4gKw0KPiA+ICsgIFRpbWVvdXQgPSBEV19NTUNfSENfR0VO RVJJQ19USU1FT1VUOw0KPiA+ICsgIHdoaWxlIChUaW1lb3V0ID4gMCkgew0KPiA+ICsgICAgRGF0 YSA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQ1RSTCk7DQo+ID4gKw0KPiA+ICsgICAg aWYgKChEYXRhICYgRFdfTU1DX0NUUkxfRE1BX1JFU0VUKSA9PSAwKSB7DQo+ID4gKyAgICAgIGJy ZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgZ0JTLT5TdGFsbCAoMSk7DQo+ID4gKw0KPiA+ICsg ICAgVGltZW91dC0tOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKFRpbWVvdXQgPD0gMCkg ew0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBD VFJMX0RNQV9SRVNFVCIpKTsNCj4gPiArDQo+ID4gKyAgICByZXR1cm4gRUZJX1RJTUVPVVQ7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBCbW9kID0gRFdfTU1DX0lETUFDX1NXUkVTRVQgfCBNbWlv UmVhZDMyIChEZXZCYXNlICsNCj4gRFdfTU1DX0JNT0QpOw0KPiA+ICsNCj4gPiArICBNbWlvV3Jp dGUzMiAoRGV2QmFzZSArIERXX01NQ19CTU9ELCBCbW9kKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4g PiArICAvLyBTZWxlY3QgSURNQUMNCj4gPiArICAvLw0KPiA+ICsgIEN0cmwgPSBEV19NTUNfQ1RS TF9JRE1BQ19FTjsNCj4gPiArICBDdHJsIHw9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNf Q1RSTCk7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ1RSTCwgQ3RybCk7 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gRW5hYmxlIElETUFDDQo+ID4gKyAgLy8NCj4g PiArICBCbW9kID0gRFdfTU1DX0lETUFDX0VOQUJMRSB8IERXX01NQ19JRE1BQ19GQjsNCj4gPiAr ICBCbW9kIHw9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQk1PRCk7DQo+ID4gKw0KPiA+ ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JNT0QsIEJtb2QpOw0KPiA+ICsNCj4g PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gK0VGSV9TVEFUVVMN Cj4gPiArRHdNbWNIY1N0b3BEbWEgKA0KPiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEg ICAgICAgICAgICpQcml2YXRlLA0KPiA+ICsgIElOIERXX01NQ19IQ19UUkIgICAgICAgICAgICAg ICAgICAgICpUcmINCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEN0cmw7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQm1vZDsNCj4gPiArDQo+ID4gKyAgRGV2QmFzZSA9IFRyYi0+UHJpdmF0ZS0+RGV2QmFz ZTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBEaXNhYmxlIGFuZCByZXNldCBJRE1BQw0K PiA+ICsgIC8vDQo+ID4gKyAgQ3RybCA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfQ1RS TCk7DQo+ID4gKyAgQ3RybCAmPSB+RFdfTU1DX0NUUkxfSURNQUNfRU47DQo+ID4gKyAgQ3RybCB8 PSBEV19NTUNfQ1RSTF9ETUFfUkVTRVQ7DQo+ID4gKyAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBE V19NTUNfQ1RSTCwgQ3RybCk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gU3RvcCBJRE1B Qw0KPiA+ICsgIC8vDQo+ID4gKyAgQm1vZCA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNf Qk1PRCk7DQo+ID4gKyAgQm1vZCAmPSB+KERXX01NQ19CTU9EX0ZCIHwgRFdfTU1DX0JNT0RfREUp Ow0KPiA+ICsgIEJtb2QgfD0gRFdfTU1DX0JNT0RfU1dSOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChE ZXZCYXNlICsgRFdfTU1DX0JNT0QsIEJtb2QpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NV Q0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEJ1aWxkIERNQSBkZXNjcmlw dG9yIHRhYmxlIGZvciB0cmFuc2Zlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAg ICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgRE1BIGRlc2NyaXB0b3IgdGFi bGUgaXMgY3JlYXRlZA0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAg ICAgICAgICBUaGUgRE1BIGRlc2NyaXB0b3IgdGFibGUgaXNuJ3QgY3JlYXRlZCBzdWNjZXNzZnVs bHkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtCdWlsZERtYURlc2NU YWJsZSAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAgICAqVHJiDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICBEYXRhOw0KPiA+ICsgIFVJ TlQ2NCAgICAgICAgICAgICAgICAgICAgRGF0YUxlbjsNCj4gPiArICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIEVudHJpZXM7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRl eDsNCj4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFJlbWFpbmluZzsNCj4gPiArICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIFRhYmxlU2l6ZTsNCj4gPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgIERldkJhc2U7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBT dGF0dXM7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBCeXRlczsNCj4gPiArICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIEJsb2NrczsNCj4gPiArICBEV19NTUNfSENfRE1BX0RF U0NfTElORSAgICpEbWFEZXNjOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRG1h RGVzY1BoeTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIElkc3RzOw0KPiA+ICsg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQnl0Q250Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgQmxrU2l6ZTsNCj4gPiArDQo+ID4gKyAgRGF0YSAgICA9IFRyYi0+RGF0YVBo eTsNCj4gPiArICBEYXRhTGVuID0gVHJiLT5EYXRhTGVuOw0KPiA+ICsgIERldkJhc2UgPSBUcmIt PlByaXZhdGUtPkRldkJhc2U7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBPbmx5IHN1cHBvcnQgMzJi aXQgRE1BIERlc2NyaXB0b3IgVGFibGUNCj4gPiArICAvLw0KPiA+ICsgIGlmICgoRGF0YSA+PSAw eDEwMDAwMDAwMHVsKSB8fCAoKERhdGEgKyBEYXRhTGVuKSA+IDB4MTAwMDAwMDAwdWwpKSB7DQo+ ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArICAv Lw0KPiA+ICsgIC8vIEFkZHJlc3MgZmllbGQgc2hhbGwgYmUgc2V0IG9uIDMyLWJpdCBib3VuZGFy eSAoTG93ZXIgMi1iaXQgaXMgYWx3YXlzIHNldA0KPiA+ICsgIC8vIHRvIDApIGZvciAzMi1iaXQg YWRkcmVzcyBkZXNjcmlwdG9yIHRhYmxlLg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKChEYXRhICYg KEJJVDAgfCBCSVQxKSkgIT0gMCkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVC VUdfSU5GTywNCj4gPiArICAgICAgIlRoZSBidWZmZXIgWzB4JXhdIHRvIGNvbnN0cnVjdCBETUEg ZGVzYyBpcyBub3QgYWxpZ25lZCB0byA0IGJ5dGVzIVxuIiwNCj4gPiArICAgICAgRGF0YQ0KPiA+ ICsgICAgICApKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEVudHJpZXMgICA9IChEYXRhTGVu ICsgRFdNTUNfRE1BX0JVRl9TSVpFIC0gMSkgLw0KPiBEV01NQ19ETUFfQlVGX1NJWkU7DQo+ID4g KyAgVGFibGVTaXplID0gRW50cmllcyAqIHNpemVvZiAoRFdfTU1DX0hDX0RNQV9ERVNDX0xJTkUp Ow0KPiA+ICsgIEJsb2NrcyAgICA9IChEYXRhTGVuICsgRFdfTU1DX0JMT0NLX1NJWkUgLSAxKSAv DQo+IERXX01NQ19CTE9DS19TSVpFOw0KPiA+ICsNCj4gPiArICBUcmItPkRtYURlc2NQYWdlcyA9 IChVSU5UMzIpRUZJX1NJWkVfVE9fUEFHRVMgKEVudHJpZXMgKg0KPiBEV01NQ19ETUFfQlVGX1NJ WkUpOw0KPiA+ICsvKiAgU3RhdHVzID0gRGV2SW8tPkFsbG9jYXRlQnVmZmVyICgNCj4gPiArICAg ICAgICAgICAgICAgICAgICBEZXZJbywNCj4gPiArICAgICAgICAgICAgICAgICAgICBBbGxvY2F0 ZUFueVBhZ2VzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVmaUJvb3RTZXJ2aWNlc0RhdGEs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRUZJX1NJWkVfVE9fUEFHRVMgKFRhYmxlU2l6ZSks DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKEVGSV9QSFlTSUNBTF9BRERSRVNTICopJlRyYi0+ RG1hRGVzYw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICk7Ki8NCj4gPiArICBTdGF0dXMgPSBE bWFBbGxvY2F0ZUJ1ZmZlciAoRWZpQm9vdFNlcnZpY2VzRGF0YSwgRUZJX1NJWkVfVE9fUEFHRVMN Cj4gKFRhYmxlU2l6ZSksDQo+ID4gKyAgICAgICAgICAgICAoVk9JRCAqKSZUcmItPkRtYURlc2Mp Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBFRklf T1VUX09GX1JFU09VUkNFUzsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKFRyYi0+ RG1hRGVzYywgVGFibGVTaXplKTsNCj4gPiArICBCeXRlcyAgPSBUYWJsZVNpemU7DQo+ID4gKw0K PiA+ICsgIFN0YXR1cyA9IERtYU1hcCAoTWFwT3BlcmF0aW9uQnVzTWFzdGVyQ29tbW9uQnVmZmVy LA0KPiA+ICsgICAgICAgICAgICAgKEVGSV9QSFlTSUNBTF9BRERSRVNTICopVHJiLT5EbWFEZXNj LA0KPiA+ICsgICAgICAgICAgICAgJkJ5dGVzLCAmVHJiLT5EbWFEZXNjUGh5LCAmVHJiLT5EbWFN YXApOw0KPiA+ICsvKiAgU3RhdHVzID0gRGV2SW8tPk1hcCAoDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgRGV2SW8sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRWZpQnVzTWFzdGVyQ29tbW9u QnVmZmVyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIChFRklfUEhZU0lDQUxfQUREUkVTUyAq KVRyYi0+RG1hRGVzYywNCj4gPiArICAgICAgICAgICAgICAgICAgICAmQnl0ZXMsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgJlRyYi0+RG1hRGVzY1BoeSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAmVHJiLT5EbWFNYXANCj4gPiArICAgICAgICAgICAgICAgICAgICApOyovDQo+ID4gKw0K PiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykgfHwgKEJ5dGVzICE9IFRhYmxlU2l6ZSkpIHsN Cj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBNYXAgZXJyb3Igb3IgdW5hYmxlIHRvIG1hcCB0aGUg d2hvbGUgUkZpcyBidWZmZXIgaW50byBhIGNvbnRpZ3VvdXMNCj4gPiArICAgIC8vIHJlZ2lvbi4N Cj4gPiArICAgIC8vDQo+ID4gKy8qICAgIERldklvLT5GcmVlQnVmZmVyICgNCj4gPiArICAgICAg ICAgICAgIERldklvLA0KPiA+ICsgICAgICAgICAgICAgRUZJX1NJWkVfVE9fUEFHRVMgKFRhYmxl U2l6ZSksDQo+ID4gKyAgICAgICAgICAgICAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpVHJiLT5EbWFE ZXNjDQo+ID4gKyAgICAgICAgICAgICApOyovDQo+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9S RVNPVVJDRVM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoKFVJTlQ2NCkoVUlOVE4pVHJi LT5EbWFEZXNjUGh5ID4gMHgxMDAwMDAwMDB1bCkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8v IFRoZSBETUEgZG9lc24ndCBzdXBwb3J0IDY0Yml0IGFkZHJlc3NpbmcuDQo+ID4gKyAgICAvLw0K PiA+ICsgICAgRG1hVW5tYXAgKFRyYi0+RG1hTWFwKTsNCj4gPiArLyogICAgRGV2SW8tPlVubWFw ICgNCj4gPiArICAgICAgRGV2SW8sDQo+ID4gKyAgICAgIFRyYi0+RG1hTWFwDQo+ID4gKyAgICAp OyovDQo+ID4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiArICB9DQo+ID4gKw0K PiA+ICsgIGlmIChEYXRhTGVuIDwgRFdfTU1DX0JMT0NLX1NJWkUpIHsNCj4gPiArICAgIEJsa1Np emUgPSBEYXRhTGVuOw0KPiA+ICsgICAgQnl0Q250ID0gRGF0YUxlbjsNCj4gPiArICAgIFJlbWFp bmluZyA9IERhdGFMZW47DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIEJsa1NpemUgPSBEV19N TUNfQkxPQ0tfU0laRTsNCj4gPiArICAgIEJ5dENudCA9IERXX01NQ19CTE9DS19TSVpFICogQmxv Y2tzOw0KPiA+ICsgICAgUmVtYWluaW5nID0gRFdfTU1DX0JMT0NLX1NJWkUgKiBCbG9ja3M7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19CTEtT SVosIEJsa1NpemUpOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JZVENO VCwgQnl0Q250KTsNCj4gPiArICBEbWFEZXNjID0gVHJiLT5EbWFEZXNjOw0KPiA+ICsgIGZvciAo SW5kZXggPSAwOyBJbmRleCA8IEVudHJpZXM7IEluZGV4KyssIERtYURlc2MrKykgew0KPiA+ICsg ICAgRG1hRGVzYy0+RGVzMCA9IERXX01NQ19JRE1BQ19ERVMwX09XTiB8DQo+IERXX01NQ19JRE1B Q19ERVMwX0NIIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICBEV19NTUNfSURNQUNfREVTMF9E SUM7DQo+ID4gKyAgICBEbWFEZXNjLT5EZXMxID0gRFdfTU1DX0lETUFDX0RFUzFfQlMxDQo+IChE V01NQ19ETUFfQlVGX1NJWkUpOw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEJ1ZmZlciBBZGRy ZXNzDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgRG1hRGVzYy0+RGVzMiA9IChVSU5UMzIpKChVSU5U TilUcmItPkRhdGFQaHkgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgIChEV01NQ19ETUFfQlVG X1NJWkUgKiBJbmRleCkpOw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIE5leHQgRGVzY3JpcHRv ciBBZGRyZXNzDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgRG1hRGVzYy0+RGVzMyA9IChVSU5UMzIp KChVSU5UTilUcmItPkRtYURlc2NQaHkgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNpemVv ZiAoRFdfTU1DX0hDX0RNQV9ERVNDX0xJTkUpICogKEluZGV4ICsgMSkpOw0KPiA+ICsgICAgUmVt YWluaW5nID0gUmVtYWluaW5nIC0gRFdNTUNfRE1BX0JVRl9TSVpFOw0KPiA+ICsgIH0NCj4gPiAr ICAvLw0KPiA+ICsgIC8vIEZpcnN0IERlc2NyaXB0b3INCj4gPiArICAvLw0KPiA+ICsgIFRyYi0+ RG1hRGVzY1swXS5EZXMwIHw9IERXX01NQ19JRE1BQ19ERVMwX0ZTOw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gTGFzdCBEZXNjcmlwdG9yDQo+ID4gKyAgLy8NCj4gPiArICBUcmItPkRtYURlc2NbRW50 cmllcyAtIDFdLkRlczAgJj0gfihEV19NTUNfSURNQUNfREVTMF9DSCB8DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXX01NQ19JRE1BQ19ERVMwX0RJQyk7DQo+ID4g KyAgVHJiLT5EbWFEZXNjW0VudHJpZXMgLSAxXS5EZXMwIHw9IERXX01NQ19JRE1BQ19ERVMwX09X TiB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXX01NQ19JRE1B Q19ERVMwX0xEOw0KPiA+ICsgIFRyYi0+RG1hRGVzY1tFbnRyaWVzIC0gMV0uRGVzMSA9IERXX01N Q19JRE1BQ19ERVMxX0JTMQ0KPiAoUmVtYWluaW5nICsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEV01NQ19ETUFfQlVGX1NJWkUpOw0KPiA+ICsgIC8vDQo+ID4gKyAg Ly8gU2V0IHRoZSBuZXh0IGZpZWxkIG9mIHRoZSBMYXN0IERlc2NyaXB0b3INCj4gPiArICAvLw0K PiA+ICsgIFRyYi0+RG1hRGVzY1tFbnRyaWVzIC0gMV0uRGVzMyA9IDA7DQo+ID4gKyAgRG1hRGVz Y1BoeSA9IChVSU5UMzIpVHJiLT5EbWFEZXNjUGh5Ow0KPiA+ICsNCj4gPiArICBNbWlvV3JpdGUz MiAoRGV2QmFzZSArIERXX01NQ19EQkFERFIsIERtYURlc2NQaHkpOw0KPiA+ICsNCj4gPiArICBB cm1EYXRhU3luY2hyb25pemF0aW9uQmFycmllciAoKTsNCj4gPiArICBBcm1JbnN0cnVjdGlvblN5 bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBDbGVhciBpbnRl cnJ1cHRzDQo+ID4gKyAgLy8NCj4gPiArICBJZHN0cyA9IH4wOw0KPiA+ICsgIE1taW9Xcml0ZTMy IChEZXZCYXNlICsgRFdfTU1DX0lEU1RTLCBJZHN0cyk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBT dGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArVHJhbnNmZXJGaWZv ICgNCj4gPiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICpUcmINCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIERldkJhc2U7DQo+ID4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgICBEYXRhOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgUmVjZWl2ZWQ7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBDb3VudDsN Cj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEludHN0czsNCj4gPiArICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgIFN0czsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg IEZpZm9Db3VudDsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4OyAgICAg LyogY291bnQgd2l0aCBieXRlcyAqLw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg QXNjZW5kaW5nOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRGVzY2VuZGluZzsN Cj4gPiArDQo+ID4gKyAgRGV2QmFzZSAgID0gVHJiLT5Qcml2YXRlLT5EZXZCYXNlOw0KPiA+ICsg IFJlY2VpdmVkID0gMDsNCj4gPiArICBDb3VudCA9IDA7DQo+ID4gKyAgSW5kZXggPSAwOw0KPiA+ ICsgIEFzY2VuZGluZyA9IDA7DQo+ID4gKyAgRGVzY2VuZGluZyA9ICgoVHJiLT5EYXRhTGVuICsg MykgJiB+MykgLSA0Ow0KPiA+ICsgIGRvIHsNCj4gPiArICAgIEludHN0cyA9IE1taW9SZWFkMzIg KERldkJhc2UgKyBEV19NTUNfUklOVFNUUyk7DQo+ID4gKw0KPiA+ICsgICAgaWYgKFRyYi0+RGF0 YUxlbiAmJiAoSW50c3RzICYgRFdfTU1DX0lOVF9UWERSKSAmJiAhVHJiLT5SZWFkKSB7DQo+ID4g KyAgICAgIFN0cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfU1RBVFVTKTsNCj4gPiAr DQo+ID4gKyAgICAgIHdoaWxlICghKERXX01NQ19TVFNfRklGT19GVUxMKFN0cykpDQo+ID4gKyAg ICAgICAgICAgICAgJiYgKFJlY2VpdmVkIDwgVHJiLT5EYXRhTGVuKQ0KPiA+ICsgICAgICAgICAg ICAgICYmIChJbnRzdHMgJiBEV19NTUNfSU5UX1RYRFIpKSB7DQo+ID4gKyAgICAgICAgaWYgKFRy Yi0+VXNlQkUpIHsNCj4gPiArICAgICAgICAgIERhdGEgPSBTd2FwQnl0ZXMzMiAoKihVSU5UMzIg KikoKFVJTlROKVRyYi0+RGF0YSArIERlc2NlbmRpbmcpKTsNCj4gPiArICAgICAgICAgIERlc2Nl bmRpbmcgPSBEZXNjZW5kaW5nIC0gNDsNCj4gPiArICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAg ICAgICAgRGF0YSA9ICooVUlOVDMyICopKChVSU5UTilUcmItPkRhdGEgKyBBc2NlbmRpbmcpOw0K PiA+ICsgICAgICAgICAgQXNjZW5kaW5nICs9IDQ7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAg ICAgIEluZGV4ICs9IDQ7DQo+ID4gKyAgICAgICAgUmVjZWl2ZWQgKz0gNDsNCj4gPiArDQo+ID4g KyAgICAgICAgTW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfRklGT19TVEFSVCwgRGF0YSk7 DQo+ID4gKw0KPiA+ICsgICAgICAgIEludHN0cyA9IERXX01NQ19JTlRfVFhEUjsNCj4gPiArICAg ICAgICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19SSU5UU1RTLCBJbnRzdHMpOw0KPiA+ ICsNCj4gPiArICAgICAgICBJbnRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1JJ TlRTVFMpOw0KPiA+ICsgICAgICAgIFN0cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNf U1RBVFVTKTsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAg fQ0KPiA+ICsNCj4gPiArICAgIGlmIChUcmItPkRhdGFMZW4gJiYgKChJbnRzdHMgJiBEV19NTUNf SU5UX1JYRFIpIHx8DQo+ID4gKyAgICAgICAoSW50c3RzICYgRFdfTU1DX0lOVF9EVE8pKSAmJiBU cmItPlJlYWQpIHsNCj4gPiArICAgICAgU3RzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01N Q19TVEFUVVMpOw0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBDb252ZXJ0IHRvIGJ5dGVz DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIEZpZm9Db3VudCA9IEdFVF9TVFNfRklGT19DT1VO VCAoU3RzKSA8PCAyOw0KPiA+ICsgICAgICBpZiAoKEZpZm9Db3VudCA9PSAwKSAmJiAoUmVjZWl2 ZWQgPCBUcmItPkRhdGFMZW4pKSB7DQo+ID4gKyAgICAgICAgY29udGludWU7DQo+ID4gKyAgICAg IH0NCj4gPiArICAgICAgSW5kZXggPSAwOw0KPiA+ICsgICAgICBDb3VudCA9IChNSU4gKEZpZm9D b3VudCwgVHJiLT5EYXRhTGVuKSArIDMpICYgfjM7DQo+ID4gKyAgICAgIHdoaWxlIChJbmRleCA8 IENvdW50KSB7DQo+ID4gKyAgICAgICAgRGF0YSA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19N TUNfRklGT19TVEFSVCk7DQo+ID4gKw0KPiA+ICsgICAgICAgIGlmIChUcmItPlVzZUJFKSB7DQo+ ID4gKyAgICAgICAgICAqKFVJTlQzMiAqKSgoVUlOVE4pVHJiLT5EYXRhICsgRGVzY2VuZGluZykg PSBTd2FwQnl0ZXMzMiAoRGF0YSk7DQo+ID4gKyAgICAgICAgICBEZXNjZW5kaW5nID0gRGVzY2Vu ZGluZyAtIDQ7DQo+ID4gKyAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICooVUlOVDMy ICopKChVSU5UTilUcmItPkRhdGEgKyBBc2NlbmRpbmcpID0gRGF0YTsNCj4gPiArICAgICAgICAg IEFzY2VuZGluZyArPSA0Ow0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgICBJbmRleCArPSA0 Ow0KPiA+ICsgICAgICAgIFJlY2VpdmVkICs9IDQ7DQo+ID4gKyAgICAgIH0gLyogd2hpbGUgKi8N Cj4gPiArICAgIH0gLyogaWYgKi8NCj4gPiArICB9IHdoaWxlICgoKEludHN0cyAmIERXX01NQ19J TlRfQ01EX0RPTkUpID09IDApIHx8IChSZWNlaXZlZCA8IFRyYi0NCj4gPkRhdGFMZW4pKTsNCj4g PiArICAvLw0KPiA+ICsgIC8vIENsZWFyIFJJTlRTVFMNCj4gPiArICAvLw0KPiA+ICsgIEludHN0 cyA9IH4wOw0KPiA+ICsgIE1taW9Xcml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX1JJTlRTVFMsIElu dHN0cyk7DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBDcmVhdGUgYSBuZXcgVFJCIGZvciB0aGUgU0QvTU1DIGNtZCByZXF1ZXN0Lg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUg RFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFNs b3QgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQ0K PiBjb21tYW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by4NCj4gPiArICBA cGFyYW1baW5dIFBhY2tldCAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgU0QgY29tbWFuZCBkYXRh IHN0cnVjdHVyZS4NCj4gPiArICBAcGFyYW1baW5dIEV2ZW50ICAgICAgICAgIElmIEV2ZW50IGlz IE5VTEwsIGJsb2NraW5nIEkvTyBpcyBwZXJmb3JtZWQuIElmDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFdmVudCBpcyBub3QgTlVMTCwgdGhlbiBub25ibG9ja2luZyBJL08gaXMN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1lZCwgYW5kIEV2ZW50IHdp bGwgYmUgc2lnbmFsZWQgd2hlbiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBhY2tldCBjb21wbGV0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gQ3JlYXRlZCBUcmIgb3Ig TlVMTC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtEV19NTUNfSENfVFJCICoNCj4gPiArRHdNbWND cmVhdGVUcmIgKA0KPiA+ICsgIElOIERXX01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICAgICAg ICpQcml2YXRlLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNsb3QsDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBh Y2tldCwNCj4gPiArICBJTiBFRklfRVZFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVu dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIERXX01NQ19IQ19UUkIgICAgICAgICAgICAgICAg ICpUcmI7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ ICsgIEVGSV9UUEwgICAgICAgICAgICAgICAgICAgICAgIE9sZFRwbDsNCj4gPiArICBFRklfSU9f T1BFUkFUSU9OX1RZUEUgICAgICAgICBGbGFnOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgIE1hcExlbmd0aDsNCj4gPiArDQo+ID4gKyAgVHJiID0gQWxsb2NhdGVaZXJvUG9v bCAoc2l6ZW9mIChEV19NTUNfSENfVFJCKSk7DQo+ID4gKyAgaWYgKFRyYiA9PSBOVUxMKSB7DQo+ ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFRyYi0+U2lnbmF0 dXJlID0gRFdfTU1DX0hDX1RSQl9TSUc7DQo+ID4gKyAgVHJiLT5TbG90ICAgICAgPSBTbG90Ow0K PiA+ICsgIFRyYi0+QmxvY2tTaXplID0gMHgyMDA7DQo+ID4gKyAgVHJiLT5QYWNrZXQgICAgPSBQ YWNrZXQ7DQo+ID4gKyAgVHJiLT5FdmVudCAgICAgPSBFdmVudDsNCj4gPiArICBUcmItPlN0YXJ0 ZWQgICA9IEZBTFNFOw0KPiA+ICsgIFRyYi0+VGltZW91dCAgID0gUGFja2V0LT5UaW1lb3V0Ow0K PiA+ICsgIFRyYi0+UHJpdmF0ZSAgID0gUHJpdmF0ZTsNCj4gPiArDQo+ID4gKyAgaWYgKChQYWNr ZXQtPkluVHJhbnNmZXJMZW5ndGggIT0gMCkgJiYgKFBhY2tldC0+SW5EYXRhQnVmZmVyICE9IE5V TEwpKSB7DQo+ID4gKyAgICBUcmItPkRhdGEgICAgPSBQYWNrZXQtPkluRGF0YUJ1ZmZlcjsNCj4g PiArICAgIFRyYi0+RGF0YUxlbiA9IFBhY2tldC0+SW5UcmFuc2Zlckxlbmd0aDsNCj4gPiArICAg IFRyYi0+UmVhZCAgICA9IFRSVUU7DQo+ID4gKyAgICBaZXJvTWVtIChUcmItPkRhdGEsIFRyYi0+ RGF0YUxlbik7DQo+ID4gKyAgfSBlbHNlIGlmIChQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoICYm IChQYWNrZXQtPk91dERhdGFCdWZmZXIgIT0NCj4gTlVMTCkpIHsNCj4gPiArICAgIFRyYi0+RGF0 YSAgICA9IFBhY2tldC0+T3V0RGF0YUJ1ZmZlcjsNCj4gPiArICAgIFRyYi0+RGF0YUxlbiA9IFBh Y2tldC0+T3V0VHJhbnNmZXJMZW5ndGg7DQo+ID4gKyAgICBUcmItPlJlYWQgICAgPSBGQUxTRTsN Cj4gPiArICB9IGVsc2UgaWYgKCFQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGggJiYgIVBhY2tldC0+ T3V0VHJhbnNmZXJMZW5ndGgpIHsNCj4gPiArICAgIFRyYi0+RGF0YSAgICA9IE5VTEw7DQo+ID4g KyAgICBUcmItPkRhdGFMZW4gPSAwOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBnb3RvIEVy cm9yOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKCgoUHJpdmF0ZS0+U2xvdFtUcmItPlNs b3RdLkNhcmRUeXBlID09IEVtbWNDYXJkVHlwZSkgJiYNCj4gPiArICAgICAgIChQYWNrZXQtPlNk TW1jQ21kQmxrLT5Db21tYW5kSW5kZXggPT0NCj4gRU1NQ19TRU5EX1RVTklOR19CTE9DSykpIHx8 DQo+ID4gKyAgICAgICgoUHJpdmF0ZS0+U2xvdFtUcmItPlNsb3RdLkNhcmRUeXBlID09IFNkQ2Fy ZFR5cGUpICYmDQo+ID4gKyAgICAgICAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4 ID09DQo+IFNEX1NFTkRfVFVOSU5HX0JMT0NLKSkpIHsNCj4gPiArICAgIFRyYi0+TW9kZSA9IFNk TW1jUGlvTW9kZTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgaWYgKFRyYi0+UmVhZCkgew0K PiA+ICsgICAgICBGbGFnID0gRWZpQnVzTWFzdGVyV3JpdGU7DQo+ID4gKyAgICB9IGVsc2Ugew0K PiA+ICsgICAgICBGbGFnID0gRWZpQnVzTWFzdGVyUmVhZDsNCj4gPiArICAgIH0NCj4gPiArDQo+ ID4gKyAgICBpZiAoUHJpdmF0ZS0+U2xvdFtUcmItPlNsb3RdLkNhcmRUeXBlID09IFNkQ2FyZFR5 cGUpIHsNCj4gPiArICAgICAgVHJiLT5Vc2VGaWZvID0gVFJVRTsNCj4gPiArICAgIH0gZWxzZSB7 DQo+ID4gKyAgICAgIFRyYi0+VXNlRmlmbyA9IEZBTFNFOw0KPiA+ICsgICAgICBpZiAoVHJiLT5E YXRhTGVuKSB7DQo+ID4gKyAgICAgICAgTWFwTGVuZ3RoID0gVHJiLT5EYXRhTGVuOw0KPiA+ICsg ICAgICAgIFN0YXR1cyA9IERtYU1hcCAoRmxhZywgVHJiLT5EYXRhLCAmTWFwTGVuZ3RoLCAmVHJi LT5EYXRhUGh5LA0KPiAmVHJiLT5EYXRhTWFwKTsNCj4gPiArLyogICAgICAgIFN0YXR1cyA9IERl dklvLT5NYXAgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIERldklvLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgVHJiLT5EYXRhLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZNYXBMZW5n dGgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlRyYi0+RGF0YVBoeSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAmVHJiLT5EYXRhTWFwDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKTsqLw0KPiA+ICsgICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykg fHwgKFRyYi0+RGF0YUxlbiAhPSBNYXBMZW5ndGgpKSB7DQo+ID4gKyAgICAgICAgICBTdGF0dXMg PSBFRklfQkFEX0JVRkZFUl9TSVpFOw0KPiA+ICsgICAgICAgICAgZ290byBFcnJvcjsNCj4gPiAr ICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgIFN0YXR1cyA9IEJ1aWxkRG1hRGVzY1RhYmxl IChUcmIpOw0KPiA+ICsgICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAg ICAgICAgIERtYVVubWFwKFRyYi0+RGF0YU1hcCk7DQo+ID4gKyAgICAgICAgICBnb3RvIEVycm9y Ow0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgICBTdGF0dXMgPSBEd01tY0hjU3RhcnREbWEg KFByaXZhdGUsIFRyYik7DQo+ID4gKyAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ICsgICAgICAgICAgRG1hVW5tYXAoVHJiLT5EYXRhTWFwKTsNCj4gPiArICAgICAgICAgIGdv dG8gRXJyb3I7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9DQo+ID4g KyAgfSAvKiBUdW5pbmdCbG9jayAqLw0KPiA+ICsNCj4gPiArICBpZiAoRXZlbnQgIT0gTlVMTCkg ew0KPiA+ICsgICAgT2xkVHBsID0gZ0JTLT5SYWlzZVRQTCAoVFBMX05PVElGWSk7DQo+ID4gKyAg ICBJbnNlcnRUYWlsTGlzdCAoJlByaXZhdGUtPlF1ZXVlLCAmVHJiLT5UcmJMaXN0KTsNCj4gPiAr ICAgIGdCUy0+UmVzdG9yZVRQTCAoT2xkVHBsKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJl dHVybiBUcmI7DQo+ID4gKw0KPiA+ICtFcnJvcjoNCj4gPiArICByZXR1cm4gTlVMTDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnJlZSB0aGUgcmVzb3VyY2UgdXNlZCBieSB0aGUg VFJCLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVy IHRvIHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZP SUQNCj4gPiArRHdNbWNGcmVlVHJiICgNCj4gPiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAg ICAqVHJiDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgaWYgKFRyYi0+RG1hTWFwICE9IE5VTEwp IHsNCj4gPiArICAgIERtYVVubWFwIChUcmItPkRtYU1hcCk7DQo+ID4gKyAgfQ0KPiA+ICsgIGlm IChUcmItPkRhdGFNYXAgIT0gTlVMTCkgew0KPiA+ICsgICAgRG1hVW5tYXAgKFRyYi0+RGF0YU1h cCk7DQo+ID4gKyAgfQ0KPiA+ICsgIEZyZWVQb29sIChUcmIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBDaGVjayBpZiB0aGUgZW52IGlzIHJlYWR5IGZvciBleGVjdXRlIHNwZWNp ZmllZCBUUkIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2lu dGVyIHRvIHRoZSBEV19NTUNfSENfUFJJVkFURV9EQVRBDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBw YXJhbVtpbl0gVHJiICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIg aW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGVu diBpcyByZWFkeSBmb3IgVFJCIGV4ZWN1dGlvbi4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1RfUkVB RFkgICAgIFRoZSBlbnYgaXMgbm90IHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uLg0KPiA+ICsgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4uDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtEd01tY0NoZWNrVHJiRW52ICgNCj4gPiArICBJTiBE V19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBEV19N TUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBX YWl0IGZvciB0aGUgZW52IHRvIGJlIHJlYWR5IGZvciBleGVjdXRlIHNwZWNpZmllZCBUUkIuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBE V19NTUNfSENfUFJJVkFURV9EQVRBDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gVHJi ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19UUkIgaW5zdGFuY2UuDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIGVudiBpcyByZWFkeSBm b3IgVFJCIGV4ZWN1dGlvbi4NCj4gPiArICBAcmV0dmFsIEVGSV9USU1FT1VUICAgICAgIFRoZSBl bnYgaXMgbm90IHJlYWR5IGZvciBUUkIgZXhlY3V0aW9uIGluIHRpbWUuDQo+ID4gKyAgQHJldHZh bCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9zIGhhcHBlbi4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3TW1jV2FpdFRyYkVudiAoDQo+ID4gKyAgSU4gRFdfTU1D X0hDX1BSSVZBVEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gKyAgSU4gRFdfTU1DX0hD X1RSQiAgICAgICAgICAgICAgICAgICAgKlRyYg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklfU0Rf TU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0Ow0KPiA+ICsgIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ID4gKyAgQk9PTEVBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5maW5pdGVXYWl0Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIFdhaXQgQ29tbWFuZCBDb21wbGV0ZSBJbnRlcnJ1cHQgU3RhdHVzIGJpdCBpbiBOb3Jt YWwgSW50ZXJydXB0DQo+IFN0YXR1cw0KPiA+ICsgIC8vIFJlZ2lzdGVyDQo+ID4gKyAgLy8NCj4g PiArICBQYWNrZXQgID0gVHJiLT5QYWNrZXQ7DQo+ID4gKyAgVGltZW91dCA9IFBhY2tldC0+VGlt ZW91dDsNCj4gPiArICBpZiAoVGltZW91dCA9PSAwKSB7DQo+ID4gKyAgICBJbmZpbml0ZVdhaXQg PSBUUlVFOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBJbmZpbml0ZVdhaXQgPSBGQUxTRTsN Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHdoaWxlIChJbmZpbml0ZVdhaXQgfHwgKFRpbWVvdXQg PiAwKSkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIENoZWNrIFRyYiBleGVjdXRpb24gcmVz dWx0IGJ5IHJlYWRpbmcgTm9ybWFsIEludGVycnVwdCBTdGF0dXMNCj4gcmVnaXN0ZXIuDQo+ID4g KyAgICAvLw0KPiA+ICsgICAgU3RhdHVzID0gRHdNbWNDaGVja1RyYkVudiAoUHJpdmF0ZSwgVHJi KTsNCj4gPiArICAgIGlmIChTdGF0dXMgIT0gRUZJX05PVF9SRUFEWSkgew0KPiA+ICsgICAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFN0YWxs IGZvciAxIG1pY3Jvc2Vjb25kLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIGdCUy0+U3RhbGwgKDEp Ow0KPiA+ICsNCj4gPiArICAgIFRpbWVvdXQtLTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJl dHVybiBFRklfVElNRU9VVDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtE d0VtbWNFeGVjVHJiICgNCj4gPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAg ICAqUHJpdmF0ZSwNCj4gPiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAq VHJiDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFO RF9QQUNLRVQgKlBhY2tldDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEZXZCYXNlOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENtZDsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNbWNTdGF0 dXM7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U3RhdHVz Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50Ow0K PiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVyck1hc2s7DQo+ID4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZW91dDsNCj4gPiArDQo+ ID4gKyAgUGFja2V0ID0gVHJiLT5QYWNrZXQ7DQo+ID4gKyAgRGV2QmFzZSA9IFRyYi0+UHJpdmF0 ZS0+RGV2QmFzZTsNCj4gPiArDQo+ID4gKyAgQXJtRGF0YVN5bmNocm9uaXphdGlvbkJhcnJpZXIg KCk7DQo+ID4gKyAgQXJtSW5zdHJ1Y3Rpb25TeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ ICsgIC8vDQo+ID4gKyAgLy8gV2FpdCB1bnRpbCBNTUMgaXMgaWRsZQ0KPiA+ICsgIC8vDQo+ID4g KyAgZG8gew0KPiA+ICsgICAgTW1jU3RhdHVzID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArIERXX01N Q19TVEFUVVMpOw0KPiA+ICsgIH0gd2hpbGUgKE1tY1N0YXR1cyAmIERXX01NQ19TVFNfREFUQV9C VVNZKTsNCj4gPiArDQo+ID4gKyAgSW50U3RhdHVzID0gfjA7DQo+ID4gKyAgTW1pb1dyaXRlMzIg KERldkJhc2UgKyBEV19NTUNfUklOVFNUUywgSW50U3RhdHVzKTsNCj4gPiArICBDbWQgPSBDTURf SU5ERVggKFBhY2tldC0+U2RNbWNDbWRCbGstPkNvbW1hbmRJbmRleCk7DQo+ID4gKyAgaWYgKChQ YWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kVHlwZSA9PQ0KPiBTZE1tY0NvbW1hbmRUeXBlQWMp IHx8DQo+ID4gKyAgICAgIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kVHlwZSA9PQ0KPiBT ZE1tY0NvbW1hbmRUeXBlQWR0YykpIHsNCj4gPiArICAgIHN3aXRjaCAoUGFja2V0LT5TZE1tY0Nt ZEJsay0+Q29tbWFuZEluZGV4KSB7DQo+ID4gKyAgICBjYXNlIEVNTUNfU0VUX1JFTEFUSVZFX0FE RFI6DQo+ID4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1NFTkRfSU5JVDsNCj4gPiArICAgICAgYnJl YWs7DQo+ID4gKyAgICBjYXNlIEVNTUNfU0VORF9TVEFUVVM6DQo+ID4gKyAgICAgIENtZCB8PSBC SVRfQ01EX1dBSVRfUFJWREFUQV9DT01QTEVURTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAg ICBjYXNlIEVNTUNfU1RPUF9UUkFOU01JU1NJT046DQo+ID4gKyAgICAgIENtZCB8PSBCSVRfQ01E X1NUT1BfQUJPUlRfQ01EOw0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArICAg IGlmIChQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGgpIHsNCj4gPiArICAgICAgQ21kIHw9IEJJVF9D TURfV0FJVF9QUlZEQVRBX0NPTVBMRVRFIHwNCj4gQklUX0NNRF9EQVRBX0VYUEVDVEVEIHwNCj4g PiArICAgICAgICAgICAgIEJJVF9DTURfUkVBRDsNCj4gPiArICAgIH0gZWxzZSBpZiAoUGFja2V0 LT5PdXRUcmFuc2Zlckxlbmd0aCkgew0KPiA+ICsgICAgICBDbWQgfD0gQklUX0NNRF9XQUlUX1BS VkRBVEFfQ09NUExFVEUgfA0KPiBCSVRfQ01EX0RBVEFfRVhQRUNURUQgfA0KPiA+ICsgICAgICAg ICAgICAgQklUX0NNRF9XUklURTsNCj4gPiArICAgIH0NCj4gPiArICAgIENtZCB8PSBCSVRfQ01E X1JFU1BPTlNFX0VYUEVDVCB8DQo+IEJJVF9DTURfQ0hFQ0tfUkVTUE9OU0VfQ1JDOw0KPiA+ICsg IH0gZWxzZSB7DQo+ID4gKyAgICBzd2l0Y2ggKFBhY2tldC0+U2RNbWNDbWRCbGstPkNvbW1hbmRJ bmRleCkgew0KPiA+ICsgICAgY2FzZSBFTU1DX0dPX0lETEVfU1RBVEU6DQo+ID4gKyAgICAgIENt ZCB8PSBCSVRfQ01EX1NFTkRfSU5JVDsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICBjYXNl IEVNTUNfU0VORF9PUF9DT05EOg0KPiA+ICsgICAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9F WFBFQ1Q7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSBFTU1DX0FMTF9TRU5EX0NJ RDoNCj4gPiArICAgICAgQ21kIHw9IEJJVF9DTURfUkVTUE9OU0VfRVhQRUNUIHwgQklUX0NNRF9M T05HX1JFU1BPTlNFIHwNCj4gPiArICAgICAgICAgICAgIEJJVF9DTURfQ0hFQ0tfUkVTUE9OU0Vf Q1JDIHwgQklUX0NNRF9TRU5EX0lOSVQ7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0K PiA+ICsgIH0NCj4gPiArICBzd2l0Y2ggKFBhY2tldC0+U2RNbWNDbWRCbGstPlJlc3BvbnNlVHlw ZSkgew0KPiA+ICsgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMjoNCj4gPiArICAgIENtZCB8PSBC SVRfQ01EX1JFU1BPTlNFX0VYUEVDVCB8DQo+IEJJVF9DTURfQ0hFQ0tfUkVTUE9OU0VfQ1JDIHwN Cj4gPiArICAgICAgICAgICBCSVRfQ01EX0xPTkdfUkVTUE9OU0U7DQo+ID4gKyAgICBicmVhazsN Cj4gPiArICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjM6DQo+ID4gKyAgICBDbWQgfD0gQklUX0NN RF9SRVNQT05TRV9FWFBFQ1Q7DQo+ID4gKyAgICBicmVhazsNCj4gPiArICB9DQo+ID4gKyAgQ21k IHw9IEJJVF9DTURfVVNFX0hPTERfUkVHIHwgQklUX0NNRF9TVEFSVDsNCj4gPiArDQo+ID4gKyAg QXJndW1lbnQgPSBQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kQXJndW1lbnQ7DQo+ID4gKyAg TW1pb1dyaXRlMzIgKERldkJhc2UgKyBEV19NTUNfQ01EQVJHLCBBcmd1bWVudCk7DQo+ID4gKw0K PiA+ICsgIEFybURhdGFTeW5jaHJvbml6YXRpb25CYXJyaWVyICgpOw0KPiA+ICsgIEFybUluc3Ry dWN0aW9uU3luY2hyb25pemF0aW9uQmFycmllciAoKTsNCj4gPiArDQo+ID4gKyAgTW1pb1dyaXRl MzIgKERldkJhc2UgKyBEV19NTUNfQ01ELCBDbWQpOw0KPiA+ICsgIEFybURhdGFTeW5jaHJvbml6 YXRpb25CYXJyaWVyICgpOw0KPiA+ICsgIEFybUluc3RydWN0aW9uU3luY2hyb25pemF0aW9uQmFy cmllciAoKTsNCj4gPiArDQo+ID4gKyAgRXJyTWFzayA9IERXX01NQ19JTlRfRUJFIHwgRFdfTU1D X0lOVF9ITEUgfA0KPiBEV19NTUNfSU5UX1JUTyB8DQo+ID4gKyAgICAgICAgICAgIERXX01NQ19J TlRfUkNSQyB8IERXX01NQ19JTlRfUkU7DQo+ID4gKyAgRXJyTWFzayB8PSBEV19NTUNfSU5UX0RD UkMgfCBEV19NTUNfSU5UX0RSVCB8DQo+IERXX01NQ19JTlRfU0JFOw0KPiA+ICsgIGRvIHsNCj4g PiArICAgIFRpbWVvdXQgPSAxMDAwMDsNCj4gPiArICAgIGlmICgtLVRpbWVvdXQgPT0gMCkgew0K PiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArICAgIEludFN0YXR1cyA9IE1taW9S ZWFkMzIgKERldkJhc2UgKyBEV19NTUNfUklOVFNUUyk7DQo+ID4gKyAgICBpZiAoSW50U3RhdHVz ICYgRXJyTWFzaykgew0KPiA+ICsgICAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiAr ICAgIH0NCj4gPiArICAgIGlmIChUcmItPkRhdGFMZW4gJiYgKChJbnRTdGF0dXMgJiBEV19NTUNf SU5UX0RUTykgPT0gMCkpIHsNCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gVHJhbnNmZXIg Tm90IERvbmUNCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgTWljcm9TZWNvbmREZWxheSAoMTAp Ow0KPiA+ICsgICAgICBjb250aW51ZTsNCj4gPiArICAgIH0NCj4gPiArICAgIE1pY3JvU2Vjb25k RGVsYXkgKDEwKTsNCj4gPiArICB9IHdoaWxlICghKEludFN0YXR1cyAmIERXX01NQ19JTlRfQ01E X0RPTkUpKTsNCj4gPiArICBzd2l0Y2ggKFBhY2tldC0+U2RNbWNDbWRCbGstPlJlc3BvbnNlVHlw ZSkgew0KPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIxOg0KPiA+ICsgICAgY2FzZSBT ZE1tY1Jlc3BvbnNlVHlwZVIxYjoNCj4gPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMzoN Cj4gPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSNDoNCj4gPiArICAgIGNhc2UgU2RNbWNS ZXNwb25zZVR5cGVSNToNCj4gPiArICAgICAgUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDAg PSBNbWlvUmVhZDMyIChEZXZCYXNlICsNCj4gRFdfTU1DX1JFU1AwKTsNCj4gPiArICAgICAgYnJl YWs7DQo+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjI6DQo+ID4gKyAgICAgIFBhY2tl dC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+IERXX01N Q19SRVNQMCk7DQo+ID4gKyAgICAgIFBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AxID0gTW1p b1JlYWQzMiAoRGV2QmFzZSArDQo+IERXX01NQ19SRVNQMSk7DQo+ID4gKyAgICAgIFBhY2tldC0+ U2RNbWNTdGF0dXNCbGstPlJlc3AyID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+IERXX01NQ19S RVNQMik7DQo+ID4gKyAgICAgIFBhY2tldC0+U2RNbWNTdGF0dXNCbGstPlJlc3AzID0gTW1pb1Jl YWQzMiAoRGV2QmFzZSArDQo+IERXX01NQ19SRVNQMyk7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBUaGUgd29ya2Fyb3VuZCBvbiBFTU1D X1NFTkRfQ1NEIGlzIHVzZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoDQo+IFNESEMuDQo+ID4gKyAg Ly8NCj4gPiArICBpZiAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFuZEluZGV4ID09IEVNTUNf U0VORF9DU0QpIHsNCj4gPiArICAgIHsNCj4gPiArICAgICAgVUlOVDMyICAgQnVmWzRdOw0KPiA+ ICsgICAgICBaZXJvTWVtIChCdWYsIHNpemVvZiAoQnVmKSk7DQo+ID4gKyAgICAgIENvcHlNZW0g KA0KPiA+ICsgICAgICAgIChVSU5UOCAqKUJ1ZiwNCj4gPiArICAgICAgICAoVUlOVDggKikmUGFj a2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDAgKyAxLA0KPiA+ICsgICAgICAgIHNpemVvZiAoQnVm KSAtIDENCj4gPiArICAgICAgICApOw0KPiA+ICsgICAgICBDb3B5TWVtICgNCj4gPiArICAgICAg ICAoVUlOVDggKikmUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDAsDQo+ID4gKyAgICAgICAg KFVJTlQ4ICopQnVmLA0KPiA+ICsgICAgICAgIHNpemVvZiAoQnVmKSAtIDENCj4gPiArICAgICAg ICApOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUND RVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0R3U2RFeGVjVHJiICgN Cj4gPiArICBJTiBEV19NTUNfSENfUFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4g PiArICBJTiBEV19NTUNfSENfVFJCICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tl dDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZCYXNlOw0K PiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENtZDsNCj4gPiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNbWNTdGF0dXM7DQo+ID4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U3RhdHVzOw0KPiA+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50Ow0KPiA+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVyck1hc2s7DQo+ID4gKyAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGltZW91dDsNCj4gPiArICBVSU5UMzIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJZHN0czsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCeXRDbnQ7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQmxrU2l6ZTsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFBhY2tldCA9IFRyYi0+UGFja2V0Ow0KPiA+ICsg IERldkJhc2UgID0gVHJiLT5Qcml2YXRlLT5EZXZCYXNlOw0KPiA+ICsNCj4gPiArICBBcm1EYXRh U3luY2hyb25pemF0aW9uQmFycmllciAoKTsNCj4gPiArICBBcm1JbnN0cnVjdGlvblN5bmNocm9u aXphdGlvbkJhcnJpZXIgKCk7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBXYWl0IHVudGlsIE1NQyBp cyBpZGxlDQo+ID4gKyAgLy8NCj4gPiArICBkbyB7DQo+ID4gKyAgICBNbWNTdGF0dXMgPSBNbWlv UmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX1NUQVRVUyk7DQo+ID4gKyAgfSB3aGlsZSAoTW1jU3Rh dHVzICYgRFdfTU1DX1NUU19EQVRBX0JVU1kpOw0KPiA+ICsNCj4gPiArICBJbnRTdGF0dXMgPSB+ MDsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19SSU5UU1RTLCBJbnRTdGF0 dXMpOw0KPiA+ICsgIENtZCA9IENNRF9JTkRFWCAoUGFja2V0LT5TZE1tY0NtZEJsay0+Q29tbWFu ZEluZGV4KTsNCj4gPiArICBpZiAoKFBhY2tldC0+U2RNbWNDbWRCbGstPkNvbW1hbmRUeXBlID09 DQo+IFNkTW1jQ29tbWFuZFR5cGVBYykgfHwNCj4gPiArICAgICAgKFBhY2tldC0+U2RNbWNDbWRC bGstPkNvbW1hbmRUeXBlID09DQo+IFNkTW1jQ29tbWFuZFR5cGVBZHRjKSkgew0KPiA+ICsgICAg c3dpdGNoIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kSW5kZXgpIHsNCj4gPiArICAgIGNh c2UgU0RfU0VUX1JFTEFUSVZFX0FERFI6DQo+ID4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1NFTkRf SU5JVDsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICBjYXNlIFNEX1NUT1BfVFJBTlNNSVNT SU9OOg0KPiA+ICsgICAgICBDbWQgfD0gQklUX0NNRF9TVE9QX0FCT1JUX0NNRDsNCj4gPiArICAg ICAgYnJlYWs7DQo+ID4gKyAgICBjYXNlIFNEX1NFTkRfU0NSOg0KPiA+ICsgICAgICBUcmItPlVz ZUJFID0gVFJVRTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBpZiAo UGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gKyAgICAgIENtZCB8PSBCSVRfQ01EX1dB SVRfUFJWREFUQV9DT01QTEVURSB8DQo+IEJJVF9DTURfREFUQV9FWFBFQ1RFRCB8DQo+ID4gKyAg ICAgICAgICAgICBCSVRfQ01EX1JFQUQ7DQo+ID4gKyAgICB9IGVsc2UgaWYgKFBhY2tldC0+T3V0 VHJhbnNmZXJMZW5ndGgpIHsNCj4gPiArICAgICAgQ21kIHw9IEJJVF9DTURfV0FJVF9QUlZEQVRB X0NPTVBMRVRFIHwNCj4gQklUX0NNRF9EQVRBX0VYUEVDVEVEIHwNCj4gPiArICAgICAgICAgICAg IEJJVF9DTURfV1JJVEU7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBDbWQgfD0gQklUX0NNRF9SRVNQ T05TRV9FWFBFQ1QgfA0KPiBCSVRfQ01EX0NIRUNLX1JFU1BPTlNFX0NSQyB8DQo+ID4gKyAgICAg ICAgICAgQklUX0NNRF9TRU5EX0FVVE9fU1RPUDsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAg c3dpdGNoIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5Db21tYW5kSW5kZXgpIHsNCj4gPiArICAgIGNh c2UgU0RfR09fSURMRV9TVEFURToNCj4gPiArICAgICAgQ21kIHw9IEJJVF9DTURfU0VORF9JTklU Ow0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKyAgc3dpdGNo IChQYWNrZXQtPlNkTW1jQ21kQmxrLT5SZXNwb25zZVR5cGUpIHsNCj4gPiArICBjYXNlIFNkTW1j UmVzcG9uc2VUeXBlUjI6DQo+ID4gKyAgICBDbWQgfD0gQklUX0NNRF9SRVNQT05TRV9FWFBFQ1Qg fA0KPiBCSVRfQ01EX0NIRUNLX1JFU1BPTlNFX0NSQyB8DQo+ID4gKyAgICAgICAgICAgQklUX0NN RF9MT05HX1JFU1BPTlNFOw0KPiA+ICsgICAgYnJlYWs7DQo+ID4gKyAgY2FzZSBTZE1tY1Jlc3Bv bnNlVHlwZVIzOg0KPiA+ICsgICAgQ21kIHw9IEJJVF9DTURfUkVTUE9OU0VfRVhQRUNUOw0KPiA+ ICsgICAgYnJlYWs7DQo+ID4gKyAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVIxYjoNCj4gPiArICBj YXNlIFNkTW1jUmVzcG9uc2VUeXBlUjQ6DQo+ID4gKyAgY2FzZSBTZE1tY1Jlc3BvbnNlVHlwZVI2 Og0KPiA+ICsgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSNzoNCj4gPiArICAgIENtZCB8PSBCSVRf Q01EX1JFU1BPTlNFX0VYUEVDVCB8DQo+IEJJVF9DTURfQ0hFQ0tfUkVTUE9OU0VfQ1JDOw0KPiA+ ICsgICAgYnJlYWs7DQo+ID4gKyAgfQ0KPiA+ICsgIENtZCB8PSBCSVRfQ01EX1VTRV9IT0xEX1JF RyB8IEJJVF9DTURfU1RBUlQ7DQo+ID4gKw0KPiA+ICsgIGlmIChUcmItPlVzZUZpZm8gPT0gVFJV RSkgew0KPiA+ICsgICAgQnl0Q250ID0gVHJiLT5SZWFkID8gUGFja2V0LT5JblRyYW5zZmVyTGVu Z3RoIDogUGFja2V0LQ0KPiA+T3V0VHJhbnNmZXJMZW5ndGg7DQo+ID4gKyAgICBNbWlvV3JpdGUz MiAoRGV2QmFzZSArIERXX01NQ19CWVRDTlQsIEJ5dENudCk7DQo+ID4gKyAgICBpZiAoVHJiLT5S ZWFkKSB7DQo+ID4gKyAgICAgIGlmIChQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGggPiBEV19NTUNf QkxPQ0tfU0laRSkgew0KPiA+ICsgICAgICAgIEJsa1NpemUgPSBEV19NTUNfQkxPQ0tfU0laRTsN Cj4gPiArICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICBCbGtTaXplID0gUGFja2V0LT5JblRy YW5zZmVyTGVuZ3RoOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9DQo+ID4gKyAgICBlbHNlIHsN Cj4gPiArICAgICAgaWYgKFBhY2tldC0+T3V0VHJhbnNmZXJMZW5ndGggPiBEV19NTUNfQkxPQ0tf U0laRSkgew0KPiA+ICsgICAgICAgIEJsa1NpemUgPSBEV19NTUNfQkxPQ0tfU0laRTsNCj4gPiAr ICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICBCbGtTaXplID0gUGFja2V0LT5PdXRUcmFuc2Zl ckxlbmd0aDsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIE1taW9X cml0ZTMyIChEZXZCYXNlICsgRFdfTU1DX0JMS1NJWiwgQmxrU2l6ZSk7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBBcmd1bWVudCA9IFBhY2tldC0+U2RNbWNDbWRCbGstPkNvbW1hbmRBcmd1bWVu dDsNCj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19DTURBUkcsIEFyZ3VtZW50 KTsNCj4gPiArICBBcm1EYXRhU3luY2hyb25pemF0aW9uQmFycmllciAoKTsNCj4gPiArICBBcm1J bnN0cnVjdGlvblN5bmNocm9uaXphdGlvbkJhcnJpZXIgKCk7DQo+ID4gKyAgTW1pb1dyaXRlMzIg KERldkJhc2UgKyBEV19NTUNfQ01ELCBDbWQpOw0KPiA+ICsgIEFybURhdGFTeW5jaHJvbml6YXRp b25CYXJyaWVyICgpOw0KPiA+ICsgIEFybUluc3RydWN0aW9uU3luY2hyb25pemF0aW9uQmFycmll ciAoKTsNCj4gPiArDQo+ID4gKyAgRXJyTWFzayA9IERXX01NQ19JTlRfRUJFIHwgRFdfTU1DX0lO VF9ITEUgfA0KPiBEV19NTUNfSU5UX1JUTyB8DQo+ID4gKyAgICAgICAgICAgIERXX01NQ19JTlRf UkNSQyB8IERXX01NQ19JTlRfUkU7DQo+ID4gKyAgRXJyTWFzayB8PSBEV19NTUNfSU5UX0RSVCB8 IERXX01NQ19JTlRfU0JFOw0KPiA+ICsgIGlmIChQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGggfHwg UGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0aCkgew0KPiA+ICsgICAgRXJyTWFzayB8PSBEV19NTUNf SU5UX0RDUkM7DQo+ID4gKyAgfQ0KPiA+ICsgIGlmIChUcmItPlVzZUZpZm8gPT0gVFJVRSkgew0K PiA+ICsgICAgU3RhdHVzID0gVHJhbnNmZXJGaWZvIChUcmIpOw0KPiA+ICsgICAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgICAgfQ0K PiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBUaW1lb3V0ID0gMTAwMDA7DQo+ID4gKyAgICBkbyB7 DQo+ID4gKyAgICAgIGlmICgtLVRpbWVvdXQgPT0gMCkgew0KPiA+ICsgICAgICAgIGJyZWFrOw0K PiA+ICsgICAgICB9DQo+ID4gKyAgICAgIEludFN0YXR1cyA9IE1taW9SZWFkMzIgKERldkJhc2Ug KyBEV19NTUNfUklOVFNUUyk7DQo+ID4gKyAgICAgIGlmIChJbnRTdGF0dXMgJiBFcnJNYXNrKSB7 DQo+ID4gKyAgICAgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ID4gKyAgICAgIH0NCj4g PiArICAgICAgaWYgKFRyYi0+RGF0YUxlbiAmJiAoKEludFN0YXR1cyAmIERXX01NQ19JTlRfRFRP KSA9PSAwKSkgew0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgLy8gVHJhbnNmZXIgbm90 IERvbmUNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIE1pY3JvU2Vjb25kRGVsYXkgKDEw KTsNCj4gPiArICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBNaWNy b1NlY29uZERlbGF5ICgxMCk7DQo+ID4gKyAgICB9IHdoaWxlICghKEludFN0YXR1cyAmIERXX01N Q19JTlRfQ01EX0RPTkUpKTsNCj4gPiArICAgIGlmIChQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGgp IHsNCj4gPiArICAgICAgZG8gew0KPiA+ICsgICAgICAgIElkc3RzID0gTW1pb1JlYWQzMiAoRGV2 QmFzZSArIERXX01NQ19JRFNUUyk7DQo+ID4gKyAgICAgIH0gd2hpbGUgKChJZHN0cyAmIERXX01N Q19JRFNUU19SSSkgPT0gMCk7DQo+ID4gKyAgICAgIFN0YXR1cyA9IER3TW1jSGNTdG9wRG1hIChQ cml2YXRlLCBUcmIpOw0KPiA+ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g KyAgICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgfSBlbHNlIGlm IChQYWNrZXQtPk91dFRyYW5zZmVyTGVuZ3RoKSB7DQo+ID4gKyAgICAgIGRvIHsNCj4gPiArICAg ICAgICBJZHN0cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfSURTVFMpOw0KPiA+ICsg ICAgICB9IHdoaWxlICgoSWRzdHMgJiBEV19NTUNfSURTVFNfVEkpID09IDApOw0KPiA+ICsgICAg ICBTdGF0dXMgPSBEd01tY0hjU3RvcERtYSAoUHJpdmF0ZSwgVHJiKTsNCj4gPiArICAgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4g KyAgICAgIH0NCj4gPiArICAgIH0gLyogUGFja2V0LT5JblRyYW5zZmVyTGVuZ3RoICovDQo+ID4g KyAgfSAvKiBVc2VGaWZvICovDQo+ID4gKyAgc3dpdGNoIChQYWNrZXQtPlNkTW1jQ21kQmxrLT5S ZXNwb25zZVR5cGUpIHsNCj4gPiArICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMToNCj4gPiAr ICAgIGNhc2UgU2RNbWNSZXNwb25zZVR5cGVSMWI6DQo+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9u c2VUeXBlUjM6DQo+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjQ6DQo+ID4gKyAgICBj YXNlIFNkTW1jUmVzcG9uc2VUeXBlUjU6DQo+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBl UjY6DQo+ID4gKyAgICBjYXNlIFNkTW1jUmVzcG9uc2VUeXBlUjc6DQo+ID4gKyAgICAgIFBhY2tl dC0+U2RNbWNTdGF0dXNCbGstPlJlc3AwID0gTW1pb1JlYWQzMiAoRGV2QmFzZSArDQo+IERXX01N Q19SRVNQMCk7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSBTZE1tY1Jlc3BvbnNl VHlwZVIyOg0KPiA+ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMCA9IE1taW9S ZWFkMzIgKERldkJhc2UgKw0KPiBEV19NTUNfUkVTUDApOw0KPiA+ICsgICAgICBQYWNrZXQtPlNk TW1jU3RhdHVzQmxrLT5SZXNwMSA9IE1taW9SZWFkMzIgKERldkJhc2UgKw0KPiBEV19NTUNfUkVT UDEpOw0KPiA+ICsgICAgICBQYWNrZXQtPlNkTW1jU3RhdHVzQmxrLT5SZXNwMiA9IE1taW9SZWFk MzIgKERldkJhc2UgKw0KPiBEV19NTUNfUkVTUDIpOw0KPiA+ICsgICAgICBQYWNrZXQtPlNkTW1j U3RhdHVzQmxrLT5SZXNwMyA9IE1taW9SZWFkMzIgKERldkJhc2UgKw0KPiBEV19NTUNfUkVTUDMp Ow0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAg Ly8gVGhlIHdvcmthcm91bmQgb24gU0RfU0VORF9DU0QgaXMgdXNlZCB0byBiZSBjb21wYXRpYmxl IHdpdGgNCj4gU0RIQy4NCj4gPiArICAvLw0KPiA+ICsgIGlmIChQYWNrZXQtPlNkTW1jQ21kQmxr LT5Db21tYW5kSW5kZXggPT0gU0RfU0VORF9DU0QpIHsNCj4gPiArICAgIHsNCj4gPiArICAgICAg VUlOVDMyICAgQnVmWzRdOw0KPiA+ICsgICAgICBaZXJvTWVtIChCdWYsIHNpemVvZiAoQnVmKSk7 DQo+ID4gKyAgICAgIENvcHlNZW0gKA0KPiA+ICsgICAgICAgIChVSU5UOCAqKUJ1ZiwNCj4gPiAr ICAgICAgICAoVUlOVDggKikmUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+UmVzcDAgKyAxLA0KPiA+ ICsgICAgICAgIHNpemVvZiAoQnVmKSAtIDENCj4gPiArICAgICAgICApOw0KPiA+ICsgICAgICBD b3B5TWVtICgNCj4gPiArICAgICAgICAoVUlOVDggKikmUGFja2V0LT5TZE1tY1N0YXR1c0Jsay0+ UmVzcDAsDQo+ID4gKyAgICAgICAgKFVJTlQ4ICopQnVmLA0KPiA+ICsgICAgICAgIHNpemVvZiAo QnVmKSAtIDENCj4gPiArICAgICAgICApOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBFeGVjdXRlIHRoZSBzcGVjaWZpZWQgVFJCLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBy aXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiBp bnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRv IHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgIFRoZSBUUkIgaXMgc2VudCB0byBob3N0IGNvbnRyb2xsZXIgc3VjY2Vzc2Z1 bGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgU29tZSBlcnJvcyBoYXBwZW4g d2hlbiBzZW5kaW5nIHRoaXMgcmVxdWVzdCB0bw0KPiB0aGUNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGhvc3QgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0R3TW1jRXhlY1RyYiAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVf REFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAgICAg ICAgICAgICAgICAgKlRyYg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3Q7DQo+ID4gKw0KPiA+ICsgIFNsb3Qg PSBUcmItPlNsb3Q7DQo+ID4gKyAgaWYgKFByaXZhdGUtPlNsb3RbU2xvdF0uQ2FyZFR5cGUgPT0g RW1tY0NhcmRUeXBlKSB7DQo+ID4gKyAgICBTdGF0dXMgPSBEd0VtbWNFeGVjVHJiIChQcml2YXRl LCBUcmIpOw0KPiA+ICsgIH0gZWxzZSBpZiAoUHJpdmF0ZS0+U2xvdFtTbG90XS5DYXJkVHlwZSA9 PSBTZENhcmRUeXBlKSB7DQo+ID4gKyAgICBTdGF0dXMgPSBEd1NkRXhlY1RyYiAoUHJpdmF0ZSwg VHJiKTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgQVNTRVJUICgwKTsNCj4gPiArICB9DQo+ ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQ2hl Y2sgdGhlIFRSQiBleGVjdXRpb24gcmVzdWx0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBy aXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0KPiBp bnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFRyYiAgICAgICAgICAgIFRoZSBwb2ludGVyIHRv IHRoZSBEV19NTUNfSENfVFJCIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgIFRoZSBUUkIgaXMgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEBy ZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgVGhlIFRSQiBpcyBub3QgY29tcGxldGVkIGZvciBleGVj dXRpb24uDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBTb21lIGVycm9zIGhhcHBl biB3aGVuIGV4ZWN1dGluZyB0aGlzIHJlcXVlc3QuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJ X1NUQVRVUw0KPiA+ICtEd01tY0NoZWNrVHJiUmVzdWx0ICgNCj4gPiArICBJTiBEV19NTUNfSENf UFJJVkFURV9EQVRBICAgICAgICAgICAqUHJpdmF0ZSwNCj4gPiArICBJTiBEV19NTUNfSENfVFJC ICAgICAgICAgICAgICAgICAgICAqVHJiDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NE X01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgKlBhY2tldDsNCj4gPiArICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJZHN0czsNCj4gPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ICsNCj4gPiArICBEZXZCYXNlID0gUHJp dmF0ZS0+RGV2QmFzZTsNCj4gPiArICBQYWNrZXQgID0gVHJiLT5QYWNrZXQ7DQo+ID4gKyAgaWYg KFRyYi0+VXNlRmlmbyA9PSBUUlVFKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ID4gKyAgfQ0KPiA+ICsgIGlmIChQYWNrZXQtPkluVHJhbnNmZXJMZW5ndGgpIHsNCj4gPiArICAg IGRvIHsNCj4gPiArICAgICAgSWRzdHMgPSBNbWlvUmVhZDMyIChEZXZCYXNlICsgRFdfTU1DX0lE U1RTKTsNCj4gPiArICAgIH0gd2hpbGUgKChJZHN0cyAmIEJJVDEpID09IDApOw0KPiA+ICsgIH0g ZWxzZSBpZiAoUGFja2V0LT5PdXRUcmFuc2Zlckxlbmd0aCkgew0KPiA+ICsgICAgZG8gew0KPiA+ ICsgICAgICBJZHN0cyA9IE1taW9SZWFkMzIgKERldkJhc2UgKyBEV19NTUNfSURTVFMpOw0KPiA+ ICsgICAgfSB3aGlsZSAoKElkc3RzICYgQklUMCkgPT0gMCk7DQo+ID4gKyAgfSBlbHNlIHsNCj4g PiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArICB9DQo+ID4gKyAgSWRzdHMgPSB+MDsN Cj4gPiArICBNbWlvV3JpdGUzMiAoRGV2QmFzZSArIERXX01NQ19JRFNUUywgSWRzdHMpOw0KPiA+ ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFdhaXQgZm9yIHRoZSBUUkIgZXhlY3V0aW9uIHJlc3VsdC4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSBQcml2YXRlICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIERXX01NQ19IQ19QUklW QVRFX0RBVEENCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBUcmIgICAgICAgICAgICBU aGUgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1RSQiBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgVFJCIGlzIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxs eS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFNvbWUgZXJyb3MgaGFwcGVuIHdo ZW4gZXhlY3V0aW5nIHRoaXMgcmVxdWVzdC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RB VFVTDQo+ID4gK0R3TW1jV2FpdFRyYlJlc3VsdCAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZB VEVfREFUQSAgICAgICAgICAgKlByaXZhdGUsDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1RSQiAgICAg ICAgICAgICAgICAgICAgKlRyYg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklfU0RfTU1DX1BBU1Nf VEhSVV9DT01NQU5EX1BBQ0tFVCAqUGFja2V0Ow0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRpbWVvdXQ7DQo+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5maW5pdGVXYWl0Ow0KPiA+ICsNCj4gPiArICBQYWNrZXQgPSBUcmItPlBh Y2tldDsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdhaXQgQ29tbWFuZCBDb21wbGV0ZSBJbnRlcnJ1 cHQgU3RhdHVzIGJpdCBpbiBOb3JtYWwgSW50ZXJydXB0DQo+IFN0YXR1cw0KPiA+ICsgIC8vIFJl Z2lzdGVyDQo+ID4gKyAgLy8NCj4gPiArICBUaW1lb3V0ID0gUGFja2V0LT5UaW1lb3V0Ow0KPiA+ ICsgIGlmIChUaW1lb3V0ID09IDApIHsNCj4gPiArICAgIEluZmluaXRlV2FpdCA9IFRSVUU7DQo+ ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIEluZmluaXRlV2FpdCA9IEZBTFNFOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgd2hpbGUgKEluZmluaXRlV2FpdCB8fCAoVGltZW91dCA+IDApKSB7DQo+ ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gQ2hlY2sgVHJiIGV4ZWN1dGlvbiByZXN1bHQgYnkgcmVh ZGluZyBOb3JtYWwgSW50ZXJydXB0IFN0YXR1cw0KPiByZWdpc3Rlci4NCj4gPiArICAgIC8vDQo+ ID4gKyAgICBTdGF0dXMgPSBEd01tY0NoZWNrVHJiUmVzdWx0IChQcml2YXRlLCBUcmIpOw0KPiA+ ICsgICAgaWYgKFN0YXR1cyAhPSBFRklfTk9UX1JFQURZKSB7DQo+ID4gKyAgICAgIHJldHVybiBT dGF0dXM7DQo+ID4gKyAgICB9DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gU3RhbGwgZm9yIDEg bWljcm9zZWNvbmQuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgZ0JTLT5TdGFsbCAoMSk7DQo+ID4g Kw0KPiA+ICsgICAgVGltZW91dC0tOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVG SV9USU1FT1VUOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL0VtYmVkZGVkUGtnL0RyaXZlcnMv RHdNbWNIY0R4ZS9FbW1jRGV2aWNlLmMNCj4gYi9FbWJlZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNE eGUvRW1tY0RldmljZS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAw MDAwMDAwMDAuLmI3YTg2ODhjNGQyZQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9FbWJl ZGRlZFBrZy9Ecml2ZXJzL0R3TW1jSGNEeGUvRW1tY0RldmljZS5jDQo+ID4gQEAgLTAsMCArMSwx MDQyIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFRoaXMgZmlsZSBwcm92aWRlcyBzb21lIGhl bHBlciBmdW5jdGlvbnMgd2hpY2ggYXJlIHNwZWNpZmljIGZvciBFTU1DDQo+IGRldmljZS4NCj4g PiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgTGlu YXJvLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArDQo+ID4gKyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUNCj4g YXZhaWxhYmxlDQo+ID4gKyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcw0KPiB0aGlzDQo+ID4gKyAgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gPiArICBo dHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gKw0KPiA+ ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0VtbWMu aD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiAr I2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiRHdNbWNIY0R4 ZS5oIg0KPiA+ICsNCj4gPiArI2RlZmluZSBFTU1DX0dFVF9TVEFURSh4KSAgICAgICAgICAgICAg ICAgICAoKCh4KSA+PiA5KSAmIDB4ZikNCj4gPiArI2RlZmluZSBFTU1DX1NUQVRFX0lETEUgICAg ICAgICAgICAgICAgICAgICAwDQo+ID4gKyNkZWZpbmUgRU1NQ19TVEFURV9SRUFEWSAgICAgICAg ICAgICAgICAgICAgMQ0KPiA+ICsjZGVmaW5lIEVNTUNfU1RBVEVfSURFTlQgICAgICAgICAgICAg ICAgICAgIDINCj4gPiArI2RlZmluZSBFTU1DX1NUQVRFX1NUQlkgICAgICAgICAgICAgICAgICAg ICAzDQo+ID4gKyNkZWZpbmUgRU1NQ19TVEFURV9UUkFOICAgICAgICAgICAgICAgICAgICAgNA0K PiA+ICsjZGVmaW5lIEVNTUNfU1RBVEVfREFUQSAgICAgICAgICAgICAgICAgICAgIDUNCj4gPiAr I2RlZmluZSBFTU1DX1NUQVRFX1JDViAgICAgICAgICAgICAgICAgICAgICA2DQo+ID4gKyNkZWZp bmUgRU1NQ19TVEFURV9QUkcgICAgICAgICAgICAgICAgICAgICAgNw0KPiA+ICsjZGVmaW5lIEVN TUNfU1RBVEVfRElTICAgICAgICAgICAgICAgICAgICAgIDgNCj4gPiArI2RlZmluZSBFTU1DX1NU QVRFX0JUU1QgICAgICAgICAgICAgICAgICAgICA5DQo+ID4gKyNkZWZpbmUgRU1NQ19TVEFURV9T TFAgICAgICAgICAgICAgICAgICAgICAgMTANCj4gPiArDQo+ID4gKyNkZWZpbmUgRU1NQ19DTUQx X0NBUEFDSVRZX0xFU1NfVEhBTl8yR0IgICAgMHgwMEZGODA4MCAvLw0KPiBDYXBhY2l0eSA8PSAy R0IsIGJ5dGUgYWRkcmVzc2luZyB1c2VkDQo+ID4gKyNkZWZpbmUgRU1NQ19DTUQxX0NBUEFDSVRZ X0dSRUFURVJfVEhBTl8yR0IgMHg0MEZGODA4MCAvLw0KPiBDYXBhY2l0eSA+IDJHQiwgNTEyLWJ5 dGUgc2VjdG9yIGFkZHJlc3NpbmcgdXNlZA0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBj b21tYW5kIEdPX0lETEVfU1RBVEUgKENNRDAgd2l0aCBhcmd1bWVudCBvZiAweDAwMDAwMDAwKSB0 bw0KPiB0aGUgZGV2aWNlIHRvDQo+ID4gKyAgbWFrZSBpdCBnbyB0byBJZGxlIFN0YXRlLg0KPiA+ ICsNCj4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2Vj dGlvbiA2LjQgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUg ICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2Vu ZCB0aGUNCj4gY29tbWFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8uDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIEVNTUMgZGV2aWNlIGlz IHJlc2V0IGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBk ZXZpY2UgcmVzZXQgZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtFbW1jUmVzZXQgKA0KPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAg ICAgKlBhc3NUaHJ1DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5E X0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRV U19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNf UEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBaZXJvTWVtICgm U2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJvTWVtICgmU2RN bWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBaZXJvTWVtICgm UGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuU2RNbWNDbWRC bGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNk TW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19H RU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9 IEVNTUNfR09fSURMRV9TVEFURTsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBT ZE1tY0NvbW1hbmRUeXBlQmM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gMDsN Cj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAwOw0KPiA+ICsNCj4gPiArICBn QlMtPlN0YWxsICgxMDAwKTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NU aHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBT dGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRU5E X09QX0NPTkQgdG8gdGhlIEVNTUMgZGV2aWNlIHRvIGdldCB0aGUgZGF0YSBvZg0KPiB0aGUgT0NS DQo+ID4gKyAgcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNh bCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNCBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luXSAgICAgIFBhc3NUaHJ1ICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gQXJndW1lbnQgIE9uIGlucHV0LCB0aGUg YXJndW1lbnQgb2YgU0VORF9PUF9DT05EDQo+IGlzIHRvIHNlbmQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRvIHRoZSBkZXZpY2UuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPbiBvdXRwdXQsIHRoZSBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgT0NSDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0K PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNHZXRPY3IgKA0KPiA+ICsg IElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ICsg IElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgKkFyZ3VtZW50DQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBT ZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAg IFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFD S0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAo U2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAo U2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tl dCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7 DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsg IFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4g Kw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IEVNTUNfU0VORF9PUF9DT05EOw0K PiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVCY3I7DQo+ ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMzsNCj4g PiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAqQXJndW1lbnQ7DQo+ID4gKw0KPiA+ ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5V TEwpOw0KPiA+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAvLw0KPiA+ ICsgICAgLy8gRm9yIGRldGFpbHMsIHJlZmVyIHRvIFNEIEhvc3QgQ29udHJvbGxlciBTaW1wbGlm aWVkIFNwZWMgMy4wIFRhYmxlIDItMTIuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgKkFyZ3VtZW50 ID0gU2RNbWNTdGF0dXNCbGsuUmVzcDA7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4g U3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBCcm9hZGNhc3QgY29tbWFu ZCBBTExfU0VORF9DSUQgdG8gdGhlIGJ1cyB0byBhc2sgYWxsIHRoZSBFTU1DDQo+IGRldmljZXMg dG8gc2VuZA0KPiA+ICsgIHRoZSBkYXRhIG9mIHRoZWlyIENJRCByZWdpc3RlcnMuDQo+ID4gKw0K PiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9u IDYuNCBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAg ICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0K PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNHZXRBbGxDaWQgKA0KPiA+ ICsgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1DQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAg ICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAg ICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRf UEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVv ZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVv ZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBh Y2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRC bGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IEVNTUNfQUxMX1NFTkRfQ0lE Ow0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVCY3I7 DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMjsN Cj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAwOw0KPiA+ICsNCj4gPiArICBT dGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsN Cj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgU2VuZCBjb21tYW5kIFNFVF9SRUxBVElWRV9BRERSIHRvIHRoZSBFTU1DIGRldmljZSB0 byBhc3NpZ24gYQ0KPiBSZWxhdGl2ZSBkZXZpY2UNCj4gPiArICBBZGRyZXNzIChSQ0EpLg0KPiA+ ICsNCj4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2Vj dGlvbiA2LjQgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUg ICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3MgdG8gYmUgYXNz aWduZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJh dGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAg IFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0K PiA+ICtFbW1jU2V0UmNhICgNCj4gPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TCAgICAgICpQYXNzVGhydSwNCj4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJjYQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9C TE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNf QkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BB U1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNk TW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1j U3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBh Y2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxr ICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1t Y1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VO RVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBF TU1DX1NFVF9SRUxBVElWRV9BRERSOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9 IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBT ZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9 IChVSU5UMzIpUmNhIDw8IDE2Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFz c1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJu IFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBjb21tYW5kIFNF TkRfQ1NEIHRvIHRoZSBFTU1DIGRldmljZSB0byBnZXQgdGhlIGRhdGEgb2YgdGhlDQo+IENTRCBy ZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJk IFNwZWMgNS4xIFNlY3Rpb24gNi4xMC40IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNT X1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJjYSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBh ZGRyZXNzIG9mIHNlbGVjdGVkIGRldmljZS4NCj4gPiArICBAcGFyYW1bb3V0XSBDc2QgICAgICAg ICAgIFRoZSBidWZmZXIgdG8gc3RvcmUgdGhlIGNvbnRlbnQgb2YgdGhlIENTRA0KPiByZWdpc3Rl ci4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhlIGNhbGxlciBzaG91 bGQgaWdub3JlIHRoZSBsb3dlc3QgYnl0ZSBvZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhpcyBidWZmZXIgYXMgdGhlIGNvbnRlbnQgb2YgdGhpcyBieXRlIGlzDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtZWFuaW5nbGVzcyBldmVuIGlmIHRoZSBvcGVyYXRp b24gc3VjY2VlZHMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhl IG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAg ICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtFbW1jR2V0Q3NkICgNCj4gPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RI UlVfUFJPVE9DT0wgICpQYXNzVGhydSwNCj4gPiArICBJTiAgICAgVUlOVDE2ICAgICAgICAgICAg ICAgICAgICAgICAgIFJjYSwNCj4gPiArICAgICBPVVQgRU1NQ19DU0QgICAgICAgICAgICAgICAg ICAgICAgICpDc2QNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRf QkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVT X0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19Q QVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZT ZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZTZE1t Y1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZQ YWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJs ayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RN bWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dF TkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0g RU1NQ19TRU5EX0NTRDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0Nv bW1hbmRUeXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNw b25zZVR5cGVSMjsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMy KVJjYSA8PCAxNjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQ YXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBDb3B5IDEyOGJpdCBkYXRhIGZvciBDU0Qg c3RydWN0dXJlLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIENvcHlNZW0gKChWT0lEICopQ3NkICsg MSwgJlNkTW1jU3RhdHVzQmxrLlJlc3AwLCBzaXplb2YNCj4gKEVNTUNfQ1NEKSAtIDEpOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgU2VuZCBjb21tYW5kIFNFTEVDVF9ERVNFTEVDVF9DQVJEIHRvIHRoZSBFTU1D IGRldmljZSB0bw0KPiBzZWxlY3QvZGVzZWxlY3QgaXQuDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRv IEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuMTAuNCBmb3IgZGV0 YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIg dG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBSY2EgICAgICAg ICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyBvZiBzZWxlY3RlZCBkZXZpY2UuDQo+ID4g Kw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25l IGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRp b24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFbW1jU2Vs ZWN0ICgNCj4gPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNz VGhydSwNCj4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJjYQ0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAg ICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAg ICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01N QU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBz aXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBz aXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9m IChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1j Q21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsN Cj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VU Ow0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX1NFTEVDVF9E RVNFTEVDVF9DQVJEOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29t bWFuZFR5cGVBYzsNCj4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3Bv bnNlVHlwZVIxOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChVSU5UMzIp UmNhIDw8IDE2Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBh c3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBjb21tYW5kIFNFTkRfRVhUX0NT RCB0byB0aGUgRU1NQyBkZXZpY2UgdG8gZ2V0IHRoZSBkYXRhIG9mDQo+IHRoZSBFWFRfQ1NEDQo+ ID4gKyAgcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBT dGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuMTAuNCBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnN0YW5jZS4NCj4gPiArICBAcGFyYW1bb3V0XSBFeHRDc2QgICAgICAgIFRoZSBidWZmZXIgdG8g c3RvcmUgdGhlIGNvbnRlbnQgb2YgdGhlIEVYVF9DU0QNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K0VGSV9TVEFUVVMNCj4gPiArRW1tY0dldEV4dENzZCAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ID4gKyAgICAgT1VUIEVNTUNfRVhU X0NTRCAgICAgICAgICAgICAgICAgICAqRXh0Q3NkDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg RUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiAr ICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0K PiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsN Cj4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4g PiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsN Cj4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiAr ICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNk TW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAg ICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21k QmxrLkNvbW1hbmRJbmRleCA9IEVNTUNfU0VORF9FWFRfQ1NEOw0KPiA+ICsgIFNkTW1jQ21kQmxr LkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBZHRjOw0KPiA+ICsgIFNkTW1jQ21kQmxr LlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gKyAgU2RNbWNDbWRCbGsu Q29tbWFuZEFyZ3VtZW50ID0gMHgwMDAwMDAwMDsNCj4gPiArDQo+ID4gKyAgUGFja2V0LkluRGF0 YUJ1ZmZlciAgICAgPSBFeHRDc2Q7DQo+ID4gKyAgUGFja2V0LkluVHJhbnNmZXJMZW5ndGggPSBz aXplb2YgKEVNTUNfRVhUX0NTRCk7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5Q YXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsgIHJldHVybiBTdGF0 dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTV0lUQ0gg dG8gdGhlIEVNTUMgZGV2aWNlIHRvIHN3aXRjaCB0aGUgbW9kZSBvZg0KPiBvcGVyYXRpb24gb2Yg dGhlDQo+ID4gKyAgc2VsZWN0ZWQgRGV2aWNlIG9yIG1vZGlmaWVzIHRoZSBFWFRfQ1NEIHJlZ2lz dGVycy4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNw ZWMgNS4xIFNlY3Rpb24gNi4xMC40IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RI UlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0K PiA+ICsgIEBwYXJhbVtpbl0gIEFjY2VzcyAgICAgICAgVGhlIGFjY2VzcyBtb2RlIG9mIFNXVElD SCBjb21tYW5kLg0KPiA+ICsgIEBwYXJhbVtpbl0gIEluZGV4ICAgICAgICAgVGhlIG9mZnNldCBv ZiB0aGUgZmllbGQgdG8gYmUgYWNjZXNzLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFZhbHVlICAgICAg ICAgVGhlIHZhbHVlIHRvIGJlIHNldCB0byB0aGUgc3BlY2lmaWVkIGZpZWxkIG9mDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFWFRfQ1NEIHJlZ2lzdGVyLg0KPiA+ICsgIEBwYXJh bVtpbl0gIENtZFNldCAgICAgICAgVGhlIHZhbHVlIG9mIENtZFNldCBmaWVsZCBvZiBFWFRfQ1NE IHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBv cGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArRW1tY1N3aXRjaCAoDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJP VE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBY2Nlc3MsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZhbHVlLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q21kU2V0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NL ICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9D SyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19U SFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBaZXJvTWVtICgmU2RNbWND bWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0 dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBaZXJvTWVtICgmUGFja2V0 LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAg PSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3Rh dHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklD X1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IEVNTUNf U1dJVENIOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5 cGVBYzsNCj4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlw ZVIxYjsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoQWNjZXNzIDw8IDI0 KSB8IChJbmRleCA8PCAxNikgfCBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFZhbHVlIDw8IDgpIHwgQ21kU2V0Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhy dS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArDQo+ID4gKyAg cmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBjb21t YW5kIFNFTkRfU1RBVFVTIHRvIHRoZSBhZGRyZXNzZWQgRU1NQyBkZXZpY2UgdG8gZ2V0IGl0cw0K PiBzdGF0dXMNCj4gPiArICByZWdpc3Rlci4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gRU1NQyBF bGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi4xMC40IGZvciBkZXRhaWxzLg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUN Cj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJjYSAgICAgICAgICAgVGhl IHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIG9mIGFkZHJlc3NlZCBkZXZpY2UuDQo+ID4gKyAgQHBh cmFtW291dF0gRGV2U3RhdHVzICAgICBUaGUgcmV0dXJuZWQgZGV2aWNlIHN0YXR1cy4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUg Y29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlv biBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNTZW5k U3RhdHVzICgNCj4gPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICpQ YXNzVGhydSwNCj4gPiArICBJTiAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgIFJj YSwNCj4gPiArICAgICBPVVQgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICpEZXZTdGF0 dXMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAg ICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAg ICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVf Q09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJs aywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Js aywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNp emVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZT ZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNC bGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElN RU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gRU1NQ19TRU5E X1NUQVRVUzsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRU eXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5 cGVSMTsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8 PCAxNjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhy dSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiArICAgICpEZXZTdGF0dXMgPSBTZE1tY1N0YXR1c0Jsay5SZXNwMDsNCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFNlbmQgY29tbWFuZCBTRU5EX1RVTklOR19CTE9DSyB0byB0aGUgRU1NQyBkZXZpY2UgZm9y IEhTMjAwDQo+IG9wdGltYWwgc2FtcGxpbmcNCj4gPiArICBwb2ludCBkZXRlY3Rpb24uDQo+ID4g Kw0KPiA+ICsgIEl0IG1heSBiZSBzZW50IHVwIHRvIDQwIHRpbWVzIHVudGlsIHRoZSBob3N0IGZp bmlzaGVzIHRoZSB0dW5pbmcNCj4gcHJvY2VkdXJlLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBF TU1DIEVsZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjYuOCBmb3IgZGV0YWls cy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8g dGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAg IFRoZSBidXMgd2lkdGggdG8gd29yay4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwg T3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNTZW5kVHVuaW5nQmxrICgNCj4gPiArICBJTiBFRklf U0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiArICBJTiBVSU5U OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJs azsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3Rh dHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFj a2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHVuaW5nQmxv Y2tbMTI4XTsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNk TW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNk TW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQp KTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0K PiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiArICBQ YWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ICsN Cj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBFTU1DX1NFTkRfVFVOSU5HX0JMT0NL Ow0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBZHRj Ow0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjE7 DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gMDsNCj4gPiArDQo+ID4gKyAg UGFja2V0LkluRGF0YUJ1ZmZlciA9IFR1bmluZ0Jsb2NrOw0KPiA+ICsgIGlmIChCdXNXaWR0aCA9 PSA4KSB7DQo+ID4gKyAgICBQYWNrZXQuSW5UcmFuc2Zlckxlbmd0aCA9IHNpemVvZiAoVHVuaW5n QmxvY2spOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBQYWNrZXQuSW5UcmFuc2Zlckxlbmd0 aCA9IDY0Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NU aHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBT dGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFR1bm5pbmcgdGhlIGNsb2Nr IHRvIGdldCBIUzIwMCBvcHRpbWFsIHNhbXBsaW5nIHBvaW50Lg0KPiA+ICsNCj4gPiArICBDb21t YW5kIFNFTkRfVFVOSU5HX0JMT0NLIG1heSBiZSBzZW50IHVwIHRvIDQwIHRpbWVzIHVudGlsIHRo ZQ0KPiBob3N0IGZpbmlzaGVzDQo+ID4gKyAgdGhlIHR1bmluZyBwcm9jZWR1cmUuDQo+ID4gKw0K PiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9u IDYuNi44Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAgIEEgcG9pbnRl ciB0byB0aGUgRUZJX0RFVklDRV9JT19QUk9UT0NPTA0KPiBpbnN0YW5jZS4NCj4gPiArICBAcGFy YW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNT X1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNl Lg0KPiA+ICsgIEBwYXJhbVtpbl0gQnVzV2lkdGggICAgICAgVGhlIGJ1cyB3aWR0aCB0byB3b3Jr Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24g aXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUg b3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiAr RW1tY1R1bmluZ0Nsa0ZvckhzMjAwICgNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJP VE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBCdXNXaWR0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU3dpdGNoIHRoZSBidXMg d2lkdGggdG8gc3BlY2lmaWVkIHdpZHRoLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBFTU1DIEVs ZWN0cmljYWwgU3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjYuOS4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSBEZXZJbyAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9ERVZJQ0VfSU9f UFJPVE9DT0wNCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBB IHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFJj YSAgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4N Cj4gPiArICBAcGFyYW1baW5dIElzRGRyICAgICAgICAgIElmIFRSVUUsIHVzZSBkdWFsIGRhdGEg cmF0ZSBkYXRhIHNpbXBsaW5nIG1ldGhvZC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE90aGVyd2lzZSB1c2Ugc2luZ2xlIGRhdGEgcmF0ZSBkYXRhIHNpbXBsaW5nIG1ldGhvZC4N Cj4gPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdG8gYmUgc2V0 LCBpdCBjb3VsZCBiZSA0IG9yIDguDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90 aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFbW1jU3dpdGNoQnVzV2lkdGggKA0KPiA+ICsgIElOIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiArICBJTiBFRklfU0Rf TU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiArICBJTiBVSU5UMTYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJjYSwNCj4gPiArICBJTiBCT09MRUFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElzRGRyLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQnVzV2lkdGgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklf U1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgIEFjY2Vz czsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgVmFsdWU7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICBDbWRTZXQ7DQo+ID4g KyAgVUlOVDMyICAgICAgICAgICAgICBEZXZTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gV3JpdGUgQnl0ZSwgdGhlIFZhbHVlIGZpZWxkIGlzIHdyaXR0ZW4gaW50byB0aGUgYnl0 ZSBwb2ludGVkIGJ5IEluZGV4Lg0KPiA+ICsgIC8vDQo+ID4gKyAgQWNjZXNzID0gMHgwMzsNCj4g PiArICBJbmRleCAgPSBPRkZTRVRfT0YgKEVNTUNfRVhUX0NTRCwgQnVzV2lkdGgpOw0KPiA+ICsg IGlmIChCdXNXaWR0aCA9PSAxKSB7DQo+ID4gKyAgICBWYWx1ZSA9IDA7DQo+ID4gKyAgfSBlbHNl IHsNCj4gPiArICAgIGlmIChCdXNXaWR0aCA9PSA0KSB7DQo+ID4gKyAgICAgIFZhbHVlID0gMTsN Cj4gPiArICAgIH0gZWxzZSBpZiAoQnVzV2lkdGggPT0gOCkgew0KPiA+ICsgICAgICBWYWx1ZSA9 IDI7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlmIChJc0Rkcikgew0KPiA+ICsg ICAgICBWYWx1ZSArPSA0Ow0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgQ21k U2V0ID0gMDsNCj4gPiArICBTdGF0dXMgPSBFbW1jU3dpdGNoIChQYXNzVGhydSwgQWNjZXNzLCBJ bmRleCwgVmFsdWUsIENtZFNldCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfRVJST1IsDQo+ID4gKyAgICAgICJF bW1jU3dpdGNoQnVzV2lkdGg6IFN3aXRjaCB0byBidXMgd2lkdGggJWQgZmFpbHMgd2l0aCAlclxu IiwNCj4gPiArICAgICAgQnVzV2lkdGgsDQo+ID4gKyAgICAgIFN0YXR1cw0KPiA+ICsgICAgICAp KTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBkbyB7 DQo+ID4gKyAgICBTdGF0dXMgPSBFbW1jU2VuZFN0YXR1cyAoUGFzc1RocnUsIFJjYSwgJkRldlN0 YXR1cyk7DQo+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgIERF QlVHICgoDQo+ID4gKyAgICAgICAgREVCVUdfRVJST1IsDQo+ID4gKyAgICAgICAgIkVtbWNTd2l0 Y2hCdXNXaWR0aDogU2VuZCBzdGF0dXMgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgICBT dGF0dXMNCj4gPiArICAgICAgICApKTsNCj4gPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiAr ICAgIH0NCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBDaGVjayB0aGUgc3dpdGNoIG9wZXJhdGlv biBpcyByZWFsbHkgc3VjY2Vzc2Z1bCBvciBub3QuDQo+ID4gKyAgICAvLw0KPiA+ICsgIH0gd2hp bGUgKChEZXZTdGF0dXMgJiAweGYpID09IEVNTUNfU1RBVEVfUFJHKTsNCj4gPiArDQo+ID4gKyAg U3RhdHVzID0gRHdNbWNIY1NldEJ1c1dpZHRoIChEZXZCYXNlLCBJc0RkciwgQnVzV2lkdGgpOw0K PiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBTd2l0Y2ggdGhlIGNsb2NrIGZyZXF1ZW5jeSB0byB0aGUgc3BlY2lm aWVkIHZhbHVlLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwgU3RhbmRh cmQgU3BlYyA1LjEgU2VjdGlvbiA2LjYuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8g ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfREVWSUNFX0lPX1BST1RPQ09MDQo+IGluc3Rh bmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0K PiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBSY2EgICAgICAgICAgICBUaGUg cmVsYXRpdmUgZGV2aWNlIGFkZHJlc3MgdG8gYmUgYXNzaWduZWQuDQo+ID4gKyAgQHBhcmFtW2lu XSBIc1RpbWluZyAgICAgICBUaGUgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byBIU19USU1JTkcgZmll bGQgb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVF9DU0QgcmVnaXN0ZXIu DQo+ID4gKyAgQHBhcmFtW2luXSBDbG9ja0ZyZXEgICAgICBUaGUgbWF4IGNsb2NrIGZyZXF1ZW5j eSB0byBiZSBzZXQsIHRoZSB1bml0IGlzDQo+IE1Iei4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsg IEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNTd2l0Y2hDbG9ja0ZyZXEgKA0KPiA+ ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiAr ICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiAr ICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJjYSwNCj4gPiArICBJTiBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhzVGltaW5nLA0KPiA+ICsgIElOIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlO VDggICAgICAgICAgICAgICAgICAgICBBY2Nlc3M7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAg ICAgICAgICBJbmRleDsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIFZhbHVlOw0K PiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgQ21kU2V0Ow0KPiA+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgRGV2U3RhdHVzOw0KPiA+ICsgIERXX01NQ19IQ19QUklWQVRFX0RB VEEgICAgKlByaXZhdGU7DQo+ID4gKw0KPiA+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJVkFU RV9GUk9NX1RISVMgKFBhc3NUaHJ1KTsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdyaXRlIEJ5dGUs IHRoZSBWYWx1ZSBmaWVsZCBpcyB3cml0dGVuIGludG8gdGhlIGJ5dGUgcG9pbnRlZCBieSBJbmRl eC4NCj4gPiArICAvLw0KPiA+ICsgIEFjY2VzcyA9IDB4MDM7DQo+ID4gKyAgSW5kZXggID0gT0ZG U0VUX09GIChFTU1DX0VYVF9DU0QsIEhzVGltaW5nKTsNCj4gPiArICBWYWx1ZSAgPSBIc1RpbWlu ZzsNCj4gPiArICBDbWRTZXQgPSAwOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBFbW1jU3dpdGNo IChQYXNzVGhydSwgQWNjZXNzLCBJbmRleCwgVmFsdWUsIENtZFNldCk7DQo+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdf RVJST1IsDQo+ID4gKyAgICAgICJFbW1jU3dpdGNoQ2xvY2tGcmVxOiBTd2l0Y2ggdG8gaHN0aW1p bmcgJWQgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgSHNUaW1pbmcsDQo+ID4gKyAgICAg IFN0YXR1cw0KPiA+ICsgICAgICApKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBFbW1jU2VuZFN0YXR1cyAoUGFzc1RocnUsIFJjYSwg JkRldlN0YXR1cyk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg REVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfRVJST1IsDQo+ID4gKyAgICAgICJFbW1jU3dpdGNo Q2xvY2tGcmVxOiBTZW5kIHN0YXR1cyBmYWlscyB3aXRoICVyXG4iLA0KPiA+ICsgICAgICBTdGF0 dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4g PiArICAvLw0KPiA+ICsgIC8vIENoZWNrIHRoZSBzd2l0Y2ggb3BlcmF0aW9uIGlzIHJlYWxseSBz dWNjZXNzZnVsIG9yIG5vdC4NCj4gPiArICAvLw0KPiA+ICsgIGlmICgoRGV2U3RhdHVzICYgQklU NykgIT0gMCkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfRVJST1IsDQo+ ID4gKyAgICAgICJFbW1jU3dpdGNoQ2xvY2tGcmVxOiBUaGUgc3dpdGNoIG9wZXJhdGlvbiBmYWls cyBhcyBEZXZTdGF0dXMNCj4gMHglMDh4XG4iLA0KPiA+ICsgICAgICBEZXZTdGF0dXMNCj4gPiAr ICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiArICB9DQo+ ID4gKyAgLy8NCj4gPiArICAvLyBDb252ZXJ0IHRoZSBjbG9jayBmcmVxIHVuaXQgZnJvbSBNSHog dG8gS0h6Lg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gRHdNbWNIY0Nsb2NrU3VwcGx5IChE ZXZCYXNlLCBDbG9ja0ZyZXEgKiAxMDAwLCBQcml2YXRlLQ0KPiA+Q2FwYWJpbGl0eVswXSk7DQo+ ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFN3aXRjaCB0byB0aGUgSGlnaCBTcGVlZCB0aW1pbmcgYWNjb3JkaW5nIHRvIHJlcXVlc3Qu DQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUu MSBTZWN0aW9uIDYuNi44Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIERldklvICAgICAgICAg IEEgcG9pbnRlciB0byB0aGUgRUZJX0RFVklDRV9JT19QUk9UT0NPTA0KPiBpbnN0YW5jZS4NCj4g PiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgVGhlIHJlbGF0aXZl IGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ2xvY2tG cmVxICAgICAgVGhlIG1heCBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0Lg0KPiA+ICsgIEBwYXJh bVtpbl0gSXNEZHIgICAgICAgICAgSWYgVFJVRSwgdXNlIGR1YWwgZGF0YSByYXRlIGRhdGEgc2lt cGxpbmcgbWV0aG9kLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNl IHVzZSBzaW5nbGUgZGF0YSByYXRlIGRhdGEgc2ltcGxpbmcgbWV0aG9kLg0KPiA+ICsgIEBwYXJh bVtpbl0gQnVzV2lkdGggICAgICAgVGhlIGJ1cyB3aWR0aCB0byBiZSBzZXQsIGl0IGNvdWxkIGJl IDQgb3IgOC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3Bl cmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAg ICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0VtbWNTd2l0Y2hUb0hpZ2hTcGVlZCAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEZXZCYXNlLA0KPiA+ICsgIElOIEVGSV9TRF9NTUNfUEFTU19U SFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOIFVJTlQxNiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ2xvY2tGcmVxLA0KPiA+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgSXNEZHIsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCdXNXaWR0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgSHNUaW1pbmc7DQo+ID4g Kw0KPiA+ICsgIEhzVGltaW5nID0gMTsNCj4gPiArICBTdGF0dXMgPSBFbW1jU3dpdGNoQ2xvY2tG cmVxIChEZXZCYXNlLCBQYXNzVGhydSwgUmNhLCBIc1RpbWluZywNCj4gQ2xvY2tGcmVxKTsNCj4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArICBTdGF0dXMgPSBFbW1jU3dpdGNoQnVzV2lkdGggKERldkJhc2UsIFBh c3NUaHJ1LCBSY2EsIElzRGRyLA0KPiBCdXNXaWR0aCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKyAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTd2l0Y2gg dG8gdGhlIEhTMjAwIHRpbWluZyBhY2NvcmRpbmcgdG8gcmVxdWVzdC4NCj4gPiArDQo+ID4gKyAg UmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi42Ljgu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gRGV2SW8gICAgICAgICAgQSBwb2ludGVyIHRvIHRo ZSBFRklfREVWSUNFX0lPX1BST1RPQ09MDQo+IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0g UGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9Q Uk9UT0NPTA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4g KyAgQHBhcmFtW2luXSBSY2EgICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3Mg dG8gYmUgYXNzaWduZWQuDQo+ID4gKyAgQHBhcmFtW2luXSBDbG9ja0ZyZXEgICAgICBUaGUgbWF4 IGNsb2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQuDQo+ID4gKyAgQHBhcmFtW2luXSBCdXNXaWR0aCAg ICAgICBUaGUgYnVzIHdpZHRoIHRvIGJlIHNldCwgaXQgY291bGQgYmUgNCBvciA4Lg0KPiA+ICsN Cj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBj b3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9u IGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRW1tY1N3aXRj aFRvSFMyMDAgKA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RGV2QmFzZSwNCj4gPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQ YXNzVGhydSwNCj4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJj YSwNCj4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb2NrRnJl cSwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRo DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBTd2l0Y2ggdGhlIGhpZ2ggc3BlZWQgdGltaW5nIGFjY29y ZGluZyB0byByZXF1ZXN0Lg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBFTU1DIEVsZWN0cmljYWwg U3RhbmRhcmQgU3BlYyA1LjEgU2VjdGlvbiA2LjYuOC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSBEZXZJbyAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9ERVZJQ0VfSU9fUFJPVE9DT0wN Cj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIg dG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFJjYSAgICAgICAg ICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4NCj4gPiArDQo+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29y cmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBm YWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VtbWNTZXRCdXNN b2RlICgNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJh c2UsDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1Ro cnUsDQo+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2ENCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ID4gKyAgRU1NQ19DU0QgICAgICAgICAgICAgICAgICAgICAgQ3NkOw0KPiA+ICsgIEVN TUNfRVhUX0NTRCAgICAgICAgICAgICAgICAgIEV4dENzZDsNCj4gPiArICBVSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICBIc1RpbWluZzsNCj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAg ICAgICAgICBJc0RkcjsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICBEZXZT dGF0dXM7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgQ2xvY2tGcmVxOw0K PiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoOw0KPiA+ICsgIERX X01NQ19IQ19QUklWQVRFX0RBVEEgICAgICAgICpQcml2YXRlOw0KPiA+ICsNCj4gPiArICBQcml2 YXRlID0gRFdfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChQYXNzVGhydSk7DQo+ID4gKyAgQVNT RVJUIChQcml2YXRlLT5DYXBhYmlsaXR5WzBdLkJhc2VDbGtGcmVxICE9IDApOw0KPiA+ICsNCj4g PiArICBTdGF0dXMgPSBFbW1jR2V0Q3NkIChQYXNzVGhydSwgUmNhLCAmQ3NkKTsNCj4gPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAi RW1tY1NldEJ1c01vZGU6IEdldENzZCBmYWlscyB3aXRoICVyXG4iLA0KPiBTdGF0dXMpKTsNCj4g PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBF bW1jU2VsZWN0IChQYXNzVGhydSwgUmNhKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRW1tY1NldEJ1c01vZGU6IFNlbGVj dCBmYWlscyB3aXRoICVyXG4iLA0KPiBTdGF0dXMpKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBkbyB7DQo+ID4gKyAgICBTdGF0dXMgPSBFbW1jU2Vu ZFN0YXR1cyAoUGFzc1RocnUsIFJjYSwgJkRldlN0YXR1cyk7DQo+ID4gKyAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgIERFQlVHICgoDQo+ID4gKyAgICAgICAgREVCVUdf RVJST1IsDQo+ID4gKyAgICAgICAgIkVtbWNTZXRCdXNNb2RlOiBHZXQgU3RhdHVzIGZhaWxzIHdp dGggJXJcbiIsDQo+ID4gKyAgICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICAgKSk7DQo+ID4gKyAg ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgICB9DQo+ID4gKyAgfSB3aGlsZSAoRU1NQ19HRVRf U1RBVEUgKERldlN0YXR1cykgIT0gRU1NQ19TVEFURV9UUkFOKTsNCj4gPiArDQo+ID4gKyAgQnVz V2lkdGggPSAxOw0KPiA+ICsgIFN0YXR1cyA9IEVtbWNTd2l0Y2hCdXNXaWR0aCAoRGV2QmFzZSwg UGFzc1RocnUsIFJjYSwgRkFMU0UsDQo+IEJ1c1dpZHRoKTsNCj4gPiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gKyAgQnVzV2lkdGggPSBQcml2YXRlLT5DYXBhYmlsaXR5WzBdLkJ1c1dpZHRoOw0KPiA+ICsg IC8vDQo+ID4gKyAgLy8gR2V0IERlaXZjZV9UeXBlIGZyb20gRVhUX0NTRCByZWdpc3Rlci4NCj4g PiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IEVtbWNHZXRFeHRDc2QgKFBhc3NUaHJ1LCAmRXh0Q3Nk KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKERF QlVHX0VSUk9SLCAiRW1tY1NldEJ1c01vZGU6IEdldEV4dENzZCBmYWlscyB3aXRoDQo+ICVyXG4i LCBTdGF0dXMpKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICAvLw0KPiA+ICsgIC8vIENhbGN1bGF0ZSBzdXBwb3J0ZWQgYnVzIHNwZWVkL2J1cyB3aWR0 aC9jbG9jayBmcmVxdWVuY3kuDQo+ID4gKyAgLy8NCj4gPiArICBIc1RpbWluZyAgPSAwOw0KPiA+ ICsgIElzRGRyICAgICA9IEZBTFNFOw0KPiA+ICsgIENsb2NrRnJlcSA9IDA7DQo+ID4gKyAgaWYg KCgoRXh0Q3NkLkRldmljZVR5cGUgJiAoQklUNCB8IEJJVDUpKSAhPSAwKSAmJg0KPiA+ICsgICAg ICAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5TZHIxMDQgIT0gMCkpIHsNCj4gPiArICAgIEhzVGlt aW5nICA9IDI7DQo+ID4gKyAgICBJc0RkciAgICAgPSBGQUxTRTsNCj4gPiArICAgIENsb2NrRnJl cSA9IDIwMDsNCj4gPiArICB9IGVsc2UgaWYgKCgoRXh0Q3NkLkRldmljZVR5cGUgJiAoQklUMiB8 IEJJVDMpKSAhPSAwKSAmJg0KPiA+ICsgICAgICAgICAgICAgKFByaXZhdGUtPkNhcGFiaWxpdHlb MF0uRGRyNTAgIT0gMCkpIHsNCj4gPiArICAgIEhzVGltaW5nICA9IDE7DQo+ID4gKyAgICBJc0Rk ciAgICAgPSBUUlVFOw0KPiA+ICsgICAgQ2xvY2tGcmVxID0gNTI7DQo+ID4gKyAgfSBlbHNlIGlm ICgoKEV4dENzZC5EZXZpY2VUeXBlICYgQklUMSkgIT0gMCkgJiYNCj4gPiArICAgICAgICAgICAg IChQcml2YXRlLT5DYXBhYmlsaXR5WzBdLkhpZ2hTcGVlZCAhPSAwKSkgew0KPiA+ICsgICAgSHNU aW1pbmcgID0gMTsNCj4gPiArICAgIElzRGRyICAgICA9IEZBTFNFOw0KPiA+ICsgICAgQ2xvY2tG cmVxID0gNTI7DQo+ID4gKyAgfSBlbHNlIGlmICgoKEV4dENzZC5EZXZpY2VUeXBlICYgQklUMCkg IT0gMCkgJiYNCj4gPiArICAgICAgICAgICAgIChQcml2YXRlLT5DYXBhYmlsaXR5WzBdLkhpZ2hT cGVlZCAhPSAwKSkgew0KPiA+ICsgICAgSHNUaW1pbmcgID0gMTsNCj4gPiArICAgIElzRGRyICAg ICA9IEZBTFNFOw0KPiA+ICsgICAgQ2xvY2tGcmVxID0gMjY7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBpZiAoKENsb2NrRnJlcSA9PSAwKSB8fCAoSHNUaW1pbmcgPT0gMCkpIHsNCj4gPiArICAg IC8vDQo+ID4gKyAgICAvLyBDb250aW51ZSB1c2luZyBkZWZhdWx0IHNldHRpbmcuDQo+ID4gKyAg ICAvLw0KPiA+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgREVCVUcgKCgNCj4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAiRW1tY1NldEJ1c01v ZGU6IEhzVGltaW5nICVkIENsb2NrRnJlcSAlZCBCdXNXaWR0aCAlZCBEZHINCj4gJWFcbiIsDQo+ ID4gKyAgICBIc1RpbWluZywNCj4gPiArICAgIENsb2NrRnJlcSwNCj4gPiArICAgIEJ1c1dpZHRo LA0KPiA+ICsgICAgSXNEZHIgPyAiVFJVRSIgOiAiRkFMU0UiDQo+ID4gKyAgICApKTsNCj4gPiAr DQo+ID4gKyAgaWYgKEhzVGltaW5nID09IDIpIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBF eGVjdXRlIEhTMjAwIHRpbWluZyBzd2l0Y2ggcHJvY2VkdXJlDQo+ID4gKyAgICAvLw0KPiA+ICsg ICAgU3RhdHVzID0gRW1tY1N3aXRjaFRvSFMyMDAgKERldkJhc2UsIFBhc3NUaHJ1LCBSY2EsIENs b2NrRnJlcSwNCj4gQnVzV2lkdGgpOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICAvLw0KPiA+ ICsgICAgLy8gRXhlY3V0ZSBIaWdoIFNwZWVkIHRpbWluZyBzd2l0Y2ggcHJvY2VkdXJlDQo+ID4g KyAgICAvLw0KPiA+ICsgICAgU3RhdHVzID0gRW1tY1N3aXRjaFRvSGlnaFNwZWVkICgNCj4gPiAr ICAgICAgICAgICAgICAgRGV2QmFzZSwNCj4gPiArICAgICAgICAgICAgICAgUGFzc1RocnUsDQo+ ID4gKyAgICAgICAgICAgICAgIFJjYSwNCj4gPiArICAgICAgICAgICAgICAgQ2xvY2tGcmVxLA0K PiA+ICsgICAgICAgICAgICAgICBJc0RkciwNCj4gPiArICAgICAgICAgICAgICAgQnVzV2lkdGgN Cj4gPiArICAgICAgICAgICAgICAgKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIERFQlVHICgo DQo+ID4gKyAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgIkVtbWNTZXRCdXNNb2RlOiBTd2l0Y2gg dG8gJWEgJXJcbiIsDQo+ID4gKyAgICAoSHNUaW1pbmcgPT0gMykgPyAiSFM0MDAiIDogKChIc1Rp bWluZyA9PSAyKSA/ICJIUzIwMCIgOiAiSGlnaFNwZWVkIiksDQo+ID4gKyAgICBTdGF0dXMNCj4g PiArICAgICkpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBFeGVjdXRlIEVNTUMgZGV2aWNlIGlkZW50aWZpY2F0aW9uIHByb2Nl ZHVyZS4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNw ZWMgNS4xIFNlY3Rpb24gNi40IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d IFByaXZhdGUgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRFdfTU1DX0hDX1BSSVZBVEVfREFUQQ0K PiBpbnN0YW5jZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGVy ZSBpcyBhIEVNTUMgY2FyZC4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZXJl IGlzIG5vdCBhIEVNTUMgY2FyZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0VtbWNJZGVudGlmaWNhdGlvbiAoDQo+ID4gKyAgSU4gRFdfTU1DX0hDX1BSSVZBVEVfREFU QSAgICAgICAgICAgICAqUHJpdmF0ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgIERldkJhc2U7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wgICpQYXNzVGhydTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgT2Ny Ow0KPiA+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICBSY2E7DQo+ID4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgICAgICAgIERldlN0YXR1czsNCj4gPiArICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgICAgICAgVGltZW91dDsNCj4gPiArDQo+ID4gKyAgRGV2QmFzZSAgICA9 IFByaXZhdGUtPkRldkJhc2U7DQo+ID4gKyAgUGFzc1RocnUgPSAmUHJpdmF0ZS0+UGFzc1RocnU7 DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IEVtbWNSZXNldCAoUGFzc1RocnUpOw0KPiA+ICsgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERF QlVHX0lORk8sDQo+ID4gKyAgICAgICJFbW1jSWRlbnRpZmljYXRpb246IEV4ZWN1dGluZyBDbWQw IGZhaWxzIHdpdGggJXJcbiIsDQo+ID4gKyAgICAgIFN0YXR1cw0KPiA+ICsgICAgICApKTsNCj4g PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBUaW1lb3V0ID0g MTAwOw0KPiA+ICsgIGRvIHsNCj4gPiArICAgIE9jciA9IEVNTUNfQ01EMV9DQVBBQ0lUWV9HUkVB VEVSX1RIQU5fMkdCOw0KPiA+ICsgICAgU3RhdHVzID0gRW1tY0dldE9jciAoUGFzc1RocnUsICZP Y3IpOw0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICBERUJV RyAoKA0KPiA+ICsgICAgICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAgICAgIkVtbWNJZGVudGlm aWNhdGlvbjogRXhlY3V0aW5nIENtZDEgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgICBT dGF0dXMNCj4gPiArICAgICAgICApKTsNCj4gPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiAr ICAgIH0NCj4gPiArICAgIGlmICgtLVRpbWVvdXQgPD0gMCkgew0KPiA+ICsgICAgICByZXR1cm4g RUZJX0RFVklDRV9FUlJPUjsNCj4gPiArICAgIH0NCj4gPiArICAgIE1pY3JvU2Vjb25kRGVsYXkg KDEwMCk7DQo+ID4gKyAgfSB3aGlsZSAoKE9jciAmIEJJVDMxKSA9PSAwKTsNCj4gPiArDQo+ID4g KyAgU3RhdHVzID0gRW1tY0dldEFsbENpZCAoUGFzc1RocnUpOw0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0lORk8s DQo+ID4gKyAgICAgICJFbW1jSWRlbnRpZmljYXRpb246IEV4ZWN1dGluZyBDbWQyIGZhaWxzIHdp dGggJXJcbiIsDQo+ID4gKyAgICAgIFN0YXR1cw0KPiA+ICsgICAgICApKTsNCj4gPiArICAgIHJl dHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gdmFsaWQgUkNBIHN0 YXJ0cyBmcm9tIDEuDQo+ID4gKyAgLy8gSGVyZSB3ZSB0YWtlcyBhIHNpbXBsZSBmb3JtdWxhIHRv IGNhbGN1bGF0ZSB0aGUgUkNBLg0KPiA+ICsgIC8vIERvbid0IHN1cHBvcnQgbXVsdGlwbGUgZGV2 aWNlcyBvbiB0aGUgc2xvdCwgdGhhdCBpcw0KPiA+ICsgIC8vIHNoYXJlZCBidXMgc2xvdCBmZWF0 dXJlLg0KPiA+ICsgIC8vDQo+ID4gKyAgUmNhICAgID0gMTsNCj4gPiArICBTdGF0dXMgPSBFbW1j U2V0UmNhIChQYXNzVGhydSwgUmNhKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19JTkZPLA0KPiA+ICsgICAgICAi RW1tY0lkZW50aWZpY2F0aW9uOiBFeGVjdXRpbmcgQ21kMyBmYWlscyB3aXRoICVyXG4iLA0KPiA+ ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArICAvLw0KPiA+ICsgIC8vIEVudGVyIERhdGEgVHJhbmZlciBNb2RlLg0K PiA+ICsgIC8vDQo+ID4gKyAgREVCVUcgKCgNCj4gPiArICAgIERFQlVHX0lORk8sDQo+ID4gKyAg ICAiRW1tY0lkZW50aWZpY2F0aW9uOiBGb3VuZCBhIEVNTUMgZGV2aWNlIGF0IFJDQSBbJWRdXG4i LA0KPiA+ICsgICAgUmNhDQo+ID4gKyAgICApKTsNCj4gPiArICBQcml2YXRlLT5TbG90WzBdLkNh cmRUeXBlID0gRW1tY0NhcmRUeXBlOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBFbW1jU2V0QnVz TW9kZSAoRGV2QmFzZSwgUGFzc1RocnUsIFJjYSk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IC8vDQo+ID4gKyAgLy8gRXhpdCBEQVRBIE1vZGUuDQo+ID4gKyAgLy8NCj4gPiArICBkbyB7DQo+ ID4gKyAgICBTdGF0dXMgPSBFbW1jU2VuZFN0YXR1cyAoUGFzc1RocnUsIFJjYSwgJkRldlN0YXR1 cyk7DQo+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgIERFQlVH ICgoDQo+ID4gKyAgICAgICAgREVCVUdfSU5GTywNCj4gPiArICAgICAgICAiRW1tY1N3aXRjaEJ1 c1dpZHRoOiBTZW5kIHN0YXR1cyBmYWlscyB3aXRoICVyXG4iLA0KPiA+ICsgICAgICAgIFN0YXR1 cw0KPiA+ICsgICAgICAgICkpOw0KPiA+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgICAg fQ0KPiA+ICsgIH0gd2hpbGUgKChEZXZTdGF0dXMgJiAweGYpID09IEVNTUNfU1RBVEVfREFUQSk7 DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEv RW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL1NkRGV2aWNlLmMNCj4gYi9FbWJlZGRlZFBr Zy9Ecml2ZXJzL0R3TW1jSGNEeGUvU2REZXZpY2UuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi42MzI0NjYzN2I2ZGQNCj4gPiAtLS0gL2Rldi9udWxs DQo+ID4gKysrIGIvRW1iZWRkZWRQa2cvRHJpdmVycy9Ed01tY0hjRHhlL1NkRGV2aWNlLmMNCj4g PiBAQCAtMCwwICsxLDExMDUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgVGhpcyBmaWxlIHBy b3ZpZGVzIHNvbWUgaGVscGVyIGZ1bmN0aW9ucyB3aGljaCBhcmUgc3BlY2lmaWMgZm9yIFNEIGNh cmQNCj4gPiArICBkZXZpY2UuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNSAtIDIw MjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBD b3B5cmlnaHQgKGMpIDIwMTgsIExpbmFyby4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4g Kw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlDQo+IGF2YWlsYWJsZQ0KPiA+ICsgIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMNCj4gdGhp cw0KPiA+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5 IGJlIGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1s aWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiArICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQ UkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8 SW5kdXN0cnlTdGFuZGFyZC9TZC5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFz ZU1lbW9yeUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgIkR3TW1jSGNEeGUuaCINCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNl bmQgY29tbWFuZCBHT19JRExFX1NUQVRFIHRvIHRoZSBkZXZpY2UgdG8gbWFrZSBpdCBnbyB0byBJ ZGxlIFN0YXRlLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1w bGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19Q QVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3Rh bmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBTRCBkZXZp Y2UgaXMgcmVzZXQgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg VGhlIGRldmljZSByZXNldCBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK1NkQ2FyZFJlc2V0ICgNCj4gPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9U T0NPTCAgICAgICpQYXNzVGhydQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNf Q09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01N Q19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklf U0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVy b01lbSAoJlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01l bSAoJlNkTW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVy b01lbSAoJlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNk TW1jQ21kQmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0Js ayA9ICZTZE1tY1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19N TUNfSENfR0VORVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5k SW5kZXggPSBTRF9HT19JRExFX1NUQVRFOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBl ICA9IFNkTW1jQ29tbWFuZFR5cGVCYzsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUt PlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKyAgLy9TdGF0dXMg PSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiAr DQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg U2VuZCBjb21tYW5kIFNFTkRfSUZfQ09ORCB0byB0aGUgZGV2aWNlIHRvIGlucXVpcnkgdGhlIFNE IE1lbW9yeQ0KPiBDYXJkDQo+ID4gKyAgaW50ZXJmYWNlIGNvbmRpdGlvbi4NCj4gPiArDQo+ID4g KyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBTcGVjIDQuMSBTZWN0aW9u IDQuNyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAg ICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5d IFN1cHBseVZvbHRhZ2UgIFRoZSBzdXBwbGllZCB2b2x0YWdlIGJ5IHRoZSBob3N0Lg0KPiA+ICsg IEBwYXJhbVtpbl0gQ2hlY2tQYXR0ZXJuICAgVGhlIGNoZWNrIHBhdHRlcm4gdG8gYmUgc2VudCB0 byB0aGUgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRo ZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAg ICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9T VEFUVVMNCj4gPiArU2RDYXJkVm9sdGFnZUNoZWNrICgNCj4gPiArICBJTiBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwNCj4gPiArICBJTiBVSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN1cHBseVZvbHRhZ2UsDQo+ID4gKyAgSU4gVUlOVDggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja1BhdHRlcm4NCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxr Ow0KPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0 dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNr ZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJs aykpOw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1 c0JsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4g Kw0KPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQ YWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRp bWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAg U2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfU0VORF9JRl9DT05EOw0KPiA+ICsgIFNkTW1j Q21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVCY3I7DQo+ID4gKyAgU2RNbWND bWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSNzsNCj4gPiArICBTZE1tY0Nt ZEJsay5Db21tYW5kQXJndW1lbnQgPSAoU3VwcGx5Vm9sdGFnZSA8PCA4KSB8DQo+IENoZWNrUGF0 dGVybjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhy dSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gKyAgICBpZiAoU2RNbWNTdGF0dXNCbGsuUmVzcDAgIT0gU2RNbWNDbWRCbGsu Q29tbWFuZEFyZ3VtZW50KSB7DQo+ID4gKyAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0K PiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBjb21tYW5kIFNESU9fU0VORF9PUF9DT05E IHRvIHRoZSBkZXZpY2UgdG8gc2VlIHdoZXRoZXIgaXQgaXMNCj4gU0RJTyBkZXZpY2UuDQo+ID4g Kw0KPiA+ICsgIFJlZmVyIHRvIFNESU8gU2ltcGxpZmllZCBTcGVjIDMgU2VjdGlvbiAzLjIgZm9y IGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2lu dGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBWb2x0YWdl V2luZG93ICBUaGUgc3VwcGx5IHZvbHRhZ2Ugd2luZG93Lg0KPiA+ICsgIEBwYXJhbVtpbl0gUzE4 UiAgICAgICAgICAgVGhlIGJvb2xlYW4gdG8gc2hvdyBpZiBpdCBzaG91bGQgc3dpdGNoIHRvIDEu OHYuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlv biBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRo ZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtTZGlvU2VuZE9wQ29uZCAoDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWb2x0YWdlV2luZG93LA0KPiA+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgUzE4Ug0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09N TUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19T VEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0Rf TU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVT ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN3aXRjaDsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAo JlNkTW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNk TW1jU3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAo JlBhY2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21k QmxrICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZT ZE1tY1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENf R0VORVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXgg PSBTRElPX1NFTkRfT1BfQ09ORDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBT ZE1tY0NvbW1hbmRUeXBlQmNyOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNk TW1jUmVzcG9uc2VUeXBlUjQ7DQo+ID4gKw0KPiA+ICsgIFN3aXRjaCA9IFMxOFIgPyBCSVQyNCA6 IDA7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChWb2x0YWdl V2luZG93ICYgMHhGRkZGRkYpIHwNCj4gU3dpdGNoOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQ YXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArDQo+ ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2Vu ZCBjb21tYW5kIFNEX1NFTkRfT1BfQ09ORCB0byB0aGUgZGV2aWNlIHRvIHNlZSB3aGV0aGVyIGl0 IGlzDQo+IFNESU8gZGV2aWNlLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBM YXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dICBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVG SV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgUmNhICAgICAgICAgICAgVGhlIHJl bGF0aXZlIGRldmljZSBhZGRyZXNzIG9mIGFkZHJlc3NlZCBkZXZpY2UuDQo+ID4gKyAgQHBhcmFt W2luXSAgVm9sdGFnZVdpbmRvdyAgVGhlIHN1cHBseSB2b2x0YWdlIHdpbmRvdy4NCj4gPiArICBA cGFyYW1baW5dICBTMThSICAgICAgICAgICBUaGUgYm9vbGVhbiB0byBzaG93IGlmIGl0IHNob3Vs ZCBzd2l0Y2ggdG8gMS44di4NCj4gPiArICBAcGFyYW1baW5dICBYcGMgICAgICAgICAgICBUaGUg Ym9vbGVhbiB0byBzaG93IGlmIGl0IHNob3VsZCBwcm92aWRlIDAuMzZ3DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcG93ZXIgY29udHJvbC4NCj4gPiArICBAcGFyYW1baW5dICBI Y3MgICAgICAgICAgICBUaGUgYm9vbGVhbiB0byBzaG93IGlmIGl0IHN1cHBvcnQgaG9zdCBjYXBh Y2l0eQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uDQo+ID4gKyAgQHBh cmFtW291dF0gT2NyICAgICAgICAgICAgVGhlIGJ1ZmZlciB0byBzdG9yZSByZXR1cm5lZCBPQ1Ig cmVnaXN0ZXIgdmFsdWUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg IFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMg ICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK1NkQ2FyZFNlbmRPcENvbmQgKA0KPiA+ICsgIElOICAgICBFRklfU0Rf TU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBhc3NUaHJ1LA0KPiA+ICsgIElOICAgICBVSU5UMTYg ICAgICAgICAgICAgICAgICAgICAgICAgUmNhLA0KPiA+ICsgIElOICAgICBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgICAgVm9sdGFnZVdpbmRvdywNCj4gPiArICBJTiAgICAgQk9PTEVBTiAg ICAgICAgICAgICAgICAgICAgICAgIFMxOFIsDQo+ID4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAg ICAgICAgICAgICAgICAgICBYcGMsDQo+ID4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAgICAgICAg ICAgICAgICAgICBIY3MsDQo+ID4gKyAgICAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICAgICAqT2NyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JM T0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19C TE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFT U19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3dpdGNoOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTWF4UG93ZXI7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBIb3N0Q2FwYWNpdHk7DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZTZE1t Y0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0 YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZQYWNr ZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAg ICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNT dGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVS SUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0Rf QVBQX0NNRDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRU eXBlQWM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5 cGVSMTsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoVUlOVDMyKVJjYSA8 PCAxNjsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhy dSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21k QmxrLkNvbW1hbmRJbmRleCA9IFNEX1NFTkRfT1BfQ09ORDsNCj4gPiArICBTZE1tY0NtZEJsay5D b21tYW5kVHlwZSAgPSBTZE1tY0NvbW1hbmRUeXBlQmNyOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJl c3BvbnNlVHlwZSA9IFNkTW1jUmVzcG9uc2VUeXBlUjM7DQo+ID4gKw0KPiA+ICsgIFN3aXRjaCAg ICAgICA9IFMxOFIgPyBCSVQyNCA6IDA7DQo+ID4gKyAgTWF4UG93ZXIgICAgID0gWHBjID8gQklU MjggOiAwOw0KPiA+ICsgIEhvc3RDYXBhY2l0eSA9IEhjcyA/IEJJVDMwIDogMDsNCj4gPiArDQo+ ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKFZvbHRhZ2VXaW5kb3cgJiAweEZG RkZGRikgfA0KPiBTd2l0Y2ggfCBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTWF4UG93ZXIgfCBIb3N0Q2FwYWNpdHk7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NU aHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsgIGlmICgh RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAqT2NyID0gU2RNbWNTdGF0dXNCbGsuUmVz cDA7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBCcm9hZGNhc3QgY29tbWFuZCBBTExfU0VORF9DSUQgdG8gdGhl IGJ1cyB0byBhc2sgYWxsIHRoZSBTRCBkZXZpY2VzDQo+IHRvIHNlbmQNCj4gPiArICB0aGUgZGF0 YSBvZiB0aGVpciBDSUQgcmVnaXN0ZXJzLg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBQaHlz aWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUN Cj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhl cnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K0VGSV9TVEFUVVMNCj4gPiArU2RDYXJkQWxsU2VuZENpZCAoDQo+ID4gKyAgSU4gRUZJX1NEX01N Q19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0K PiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNC bGs7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7 DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykp Ow0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0Js aykpOw0KPiA+ICsgIFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0K PiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNr ZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVv dXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RN bWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0RfQUxMX1NFTkRfQ0lEOw0KPiA+ICsgIFNkTW1jQ21k QmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVCY3I7DQo+ID4gKyAgU2RNbWNDbWRC bGsuUmVzcG9uc2VUeXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMjsNCj4gPiArDQo+ID4gKyAgU3Rh dHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwgMCwgJlBhY2tldCwgTlVMTCk7DQo+ ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFNlbmQgY29tbWFuZCBTRVRfUkVMQVRJVkVfQUREUiB0byB0aGUgU0QgZGV2aWNlIHRvIGFz c2lnbiBhDQo+IFJlbGF0aXZlIGRldmljZQ0KPiA+ICsgIEFkZHJlc3MgKFJDQSkuDQo+ID4gKw0K PiA+ICsgIFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2Vj dGlvbiA0LjcgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1 ICAgICAgQSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFt W291dF0gUmNhICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3MgdG8gYXNzaWdu Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24g aXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUg b3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiAr U2RDYXJkU2V0UmNhICgNCj4gPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wgICpQYXNzVGhydSwNCj4gPiArICAgICBPVVQgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAg ICAgICpSY2ENCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxP Q0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JM T0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNT X1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZTZE1t Y0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0 YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZQYWNr ZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAg ICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNT dGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVS SUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0Rf U0VUX1JFTEFUSVZFX0FERFI7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RN bWNDb21tYW5kVHlwZUJjcjsNCj4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1t Y1Jlc3BvbnNlVHlwZVI2Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1Ro cnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArICBpZiAoIUVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgKlJjYSA9IChVSU5UMTYpKFNkTW1jU3RhdHVzQmxrLlJlc3Aw ID4+IDE2KTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRU5EX0NTRCB0byB0aGUgU0Qg ZGV2aWNlIHRvIGdldCB0aGUgZGF0YSBvZiB0aGUgQ1NEDQo+IHJlZ2lzdGVyLg0KPiA+ICsNCj4g PiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rp b24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBQYXNzVGhydSAg ICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtp bl0gIFJjYSAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIG9mIHNlbGVjdGVk IGRldmljZS4NCj4gPiArICBAcGFyYW1bb3V0XSBDc2QgICAgICAgICAgIFRoZSBidWZmZXIgdG8g c3RvcmUgdGhlIGNvbnRlbnQgb2YgdGhlIENTRA0KPiByZWdpc3Rlci4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5vdGUgdGhlIGNhbGxlciBzaG91bGQgaWdub3JlIHRoZSBsb3dl c3QgYnl0ZSBvZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBidWZmZXIg YXMgdGhlIGNvbnRlbnQgb2YgdGhpcyBieXRlIGlzIG1lYW5pbmctDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZXNzIGV2ZW4gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcy4NCj4g PiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRv bmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJh dGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2Fy ZEdldENzZCAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAq UGFzc1RocnUsDQo+ID4gKyAgSU4gICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICBS Y2EsDQo+ID4gKyAgICAgT1VUIFNEX0NTRCAgICAgICAgICAgICAgICAgICAgICAgICAqQ3NkDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01NQ19DT01NQU5EX0JMT0NLICAgICAgICAg ICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0RfTU1DX1NUQVRVU19CTE9DSyAgICAgICAg ICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJVX0NPTU1B TkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNp emVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNp emVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2Yg KFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWND bWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0K PiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7 DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRJbmRleCA9IFNEX1NFTkRfQ1NEOw0K PiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4g PiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIyOw0KPiA+ ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChVSU5UMzIpUmNhIDw8IDE2Ow0KPiA+ ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFj a2V0LCBOVUxMKTsNCj4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg Q29weU1lbSAoKChVSU5UOCopQ3NkKSArIDEsICZTZE1tY1N0YXR1c0Jsay5SZXNwMCwgc2l6ZW9m DQo+IChTRF9DU0QpIC0gMSk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVz Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgU0VORF9DU0Qg dG8gdGhlIFNEIGRldmljZSB0byBnZXQgdGhlIGRhdGEgb2YgdGhlIENTRA0KPiByZWdpc3Rlci4N Cj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2ltcGxpZmllZCBTcGVj IDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAg UGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BS T1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS4NCj4gPiAr ICBAcGFyYW1baW5dICBSY2EgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyBv ZiBzZWxlY3RlZCBkZXZpY2UuDQo+ID4gKyAgQHBhcmFtW291dF0gU2NyICAgICAgICAgICBUaGUg YnVmZmVyIHRvIHN0b3JlIHRoZSBjb250ZW50IG9mIHRoZSBTQ1INCj4gcmVnaXN0ZXIuDQo+ID4g Kw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBkb25l IGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRoZSBvcGVyYXRp b24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtTZENhcmRH ZXRTY3IgKA0KPiA+ICsgIElOICAgICBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgKlBh c3NUaHJ1LA0KPiA+ICsgIElOICAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgUmNh LA0KPiA+ICsgICAgIE9VVCBTRF9TQ1IgICAgICAgICAgICAgICAgICAgICAgICAgKlNjcg0KPiA+ ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAg ICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAg ICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5E X1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jQ21kQmxrLCBzaXpl b2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1jU3RhdHVzQmxrLCBzaXpl b2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBhY2tldCwgc2l6ZW9mIChQ YWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxrICAgID0gJlNkTW1jQ21k QmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1tY1N0YXR1c0JsazsNCj4g PiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VORVJJQ19USU1FT1VUOw0K PiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9BUFBfQ01EOw0KPiA+ ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiAr ICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ICsg IFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChVSU5UMzIpUmNhIDw8IDE2Ow0KPiA+ICsN Cj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0 LCBOVUxMKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZElu ZGV4ID0gU0RfU0VORF9TQ1I7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RN bWNDb21tYW5kVHlwZUFkdGM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RN bWNSZXNwb25zZVR5cGVSMTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LkluRGF0YUJ1ZmZlciAgICAg PSBTY3I7DQo+ID4gKyAgUGFja2V0LkluVHJhbnNmZXJMZW5ndGggPSBzaXplb2YgKFNEX1NDUik7 DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAs ICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgU0VMRUNUX0RFU0VMRUNUX0NBUkQg dG8gdGhlIFNEIGRldmljZSB0bw0KPiBzZWxlY3QvZGVzZWxlY3QgaXQuDQo+ID4gKw0KPiA+ICsg IFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0 LjcgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAg QSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAg UmNhICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3Mgb2Ygc2VsZWN0ZWQgZGV2 aWNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRp b24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBU aGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArU2RDYXJkU2VsZWN0ICgNCj4gPiArICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TCAgICAgICpQYXNzVGhydSwNCj4gPiArICBJTiBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJjYQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TRF9NTUNfQ09NTUFORF9C TE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19TVEFUVVNf QkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4gPiArICBFRklfU0RfTU1DX1BB U1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoJlNk TW1jQ21kQmxrLCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlNkTW1j U3RhdHVzQmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7DQo+ID4gKyAgWmVyb01lbSAoJlBh Y2tldCwgc2l6ZW9mIChQYWNrZXQpKTsNCj4gPiArDQo+ID4gKyAgUGFja2V0LlNkTW1jQ21kQmxr ICAgID0gJlNkTW1jQ21kQmxrOw0KPiA+ICsgIFBhY2tldC5TZE1tY1N0YXR1c0JsayA9ICZTZE1t Y1N0YXR1c0JsazsNCj4gPiArICBQYWNrZXQuVGltZW91dCAgICAgICAgPSBEV19NTUNfSENfR0VO RVJJQ19USU1FT1VUOw0KPiA+ICsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBT RF9TRUxFQ1RfREVTRUxFQ1RfQ0FSRDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kVHlwZSAg PSBTZE1tY0NvbW1hbmRUeXBlQWM7DQo+ID4gKyAgaWYgKFJjYSAhPSAwKSB7DQo+ID4gKyAgICBT ZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxYjsNCj4gPiArICB9 DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gKFVJTlQzMilSY2EgPDwgMTY7 DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAs ICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZW5kIGNvbW1hbmQgVk9MVEFHRV9TV0lUQ0ggdG8gdGhl IFNEIGRldmljZSB0byBzd2l0Y2ggdGhlIHZvbHRhZ2UNCj4gb2YgdGhlDQo+ID4gKyAgZGV2aWNl Lg0KPiA+ICsNCj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNw ZWMgNC4xIFNlY3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d ICBQYXNzVGhydSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVf UFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9u ZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0 aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArU2RDYXJk Vm9sdGFnZVN3aXRjaCAoDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wg ICAgICAqUGFzc1RocnUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU0RfTU1DX0NPTU1B TkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfU1RB VFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01N Q19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0g KCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZT ZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0g KCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0Nt ZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAm U2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hD X0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4 ID0gU0RfVk9MVEFHRV9TV0lUQ0g7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0g U2RNbWNDb21tYW5kVHlwZUFjOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9IFNk TW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0g MDsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGFzc1RocnUtPlBhc3NUaHJ1IChQYXNzVGhydSwg MCwgJlBhY2tldCwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTRVRfQlVTX1dJRFRIIHRvIHRo ZSBTRCBkZXZpY2UgdG8gc2V0IHRoZSBidXMgd2lkdGguDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRv IFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0LjcgZm9yIGRl dGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVy IHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBSY2EgICAgICAg ICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3Mgb2YgYWRkcmVzc2VkIGRldmljZS4NCj4g PiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgIFRoZSBidXMgd2lkdGggdG8gYmUgc2V0LCBp dCBjb3VsZCBiZSAxIG9yIDQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgVGhlIG9wZXJhdGlvbiBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr RUZJX1NUQVRVUw0KPiA+ICtTZENhcmRTZXRCdXNXaWR0aCAoDQo+ID4gKyAgSU4gRUZJX1NEX01N Q19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDE2ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVG SV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRCbGs7DQo+ID4gKyAg RUZJX1NEX01NQ19TVEFUVVNfQkxPQ0sgICAgICAgICAgICAgICBTZE1tY1N0YXR1c0JsazsNCj4g PiArICBFRklfU0RfTU1DX1BBU1NfVEhSVV9DT01NQU5EX1BBQ0tFVCAgIFBhY2tldDsNCj4gPiAr ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlOw0KPiA+ICsNCj4gPiAr ICBaZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBa ZXJvTWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiAr ICBaZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNr ZXQuU2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3Rh dHVzQmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9 IERXX01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNv bW1hbmRJbmRleCA9IFNEX0FQUF9DTUQ7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUg ID0gU2RNbWNDb21tYW5kVHlwZUFjOw0KPiA+ICsgIFNkTW1jQ21kQmxrLlJlc3BvbnNlVHlwZSA9 IFNkTW1jUmVzcG9uc2VUeXBlUjE7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50 ID0gKFVJTlQzMilSY2EgPDwgMTY7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5Q YXNzVGhydSAoUGFzc1RocnUsIDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kSW5kZXggPSBTRF9TRVRfQlVTX1dJRFRIOw0KPiA+ ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBlICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiAr ICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ICsN Cj4gPiArICBpZiAoQnVzV2lkdGggPT0gMSkgew0KPiA+ICsgICAgVmFsdWUgPSAwOw0KPiA+ICsg IH0gZWxzZSBpZiAoQnVzV2lkdGggPT0gNCkgew0KPiA+ICsgICAgVmFsdWUgPSAyOw0KPiA+ICsg IH0gZWxzZSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsg IH0NCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEFyZ3VtZW50ID0gVmFsdWUgJiAw eDM7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUs IDAsICZQYWNrZXQsIE5VTEwpOw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgY29tbWFuZCBTV0lUQ0hfRlVOQyB0byB0aGUgU0QgZGV2 aWNlIHRvIGNoZWNrIHN3aXRjaGFibGUNCj4gZnVuY3Rpb24gb3INCj4gPiArICBzd2l0Y2ggY2Fy ZCBmdW5jdGlvbi4NCj4gPiArDQo+ID4gKyAgUmVmZXIgdG8gU0QgUGh5c2ljYWwgTGF5ZXIgU2lt cGxpZmllZCBTcGVjIDQuMSBTZWN0aW9uIDQuNyBmb3IgZGV0YWlscy4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSAgUGFzc1RocnUgICAgICBBIHBvaW50ZXIgdG8gdGhlDQo+IEVGSV9TRF9NTUNf UEFTU19USFJVX1BST1RPQ09MDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0 YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBBY2Nlc3NNb2RlICAgIFRoZSB2YWx1ZSBmb3IgYWNj ZXNzIG1vZGUgZ3JvdXAuDQo+ID4gKyAgQHBhcmFtW2luXSAgQ29tbWFuZFN5c3RlbSBUaGUgdmFs dWUgZm9yIGNvbW1hbmQgc2V0IGdyb3VwLg0KPiA+ICsgIEBwYXJhbVtpbl0gIERyaXZlU3RyZW5n dGggVGhlIHZhbHVlIGZvciBkcml2ZSBsZW5ndGggZ3JvdXAuDQo+ID4gKyAgQHBhcmFtW2luXSAg UG93ZXJMaW1pdCAgICBUaGUgdmFsdWUgZm9yIHBvd2VyIGxpbWl0IGdyb3VwLg0KPiA+ICsgIEBw YXJhbVtpbl0gIE1vZGUgICAgICAgICAgU3dpdGNoIG9yIGNoZWNrIGZ1bmN0aW9uLg0KPiA+ICsg IEBwYXJhbVtvdXRdIFN3aXRjaFJlc3AgICAgVGhlIHJldHVybiBzd2l0Y2ggZnVuY3Rpb24gc3Rh dHVzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRp b24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBU aGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArU2RDYXJkU3dpdGNoICgNCj4gPiArICBJTiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJP VE9DT0wgICpQYXNzVGhydSwNCj4gPiArICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgIEFjY2Vzc01vZGUsDQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAg ICAgICAgICBDb21tYW5kU3lzdGVtLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgRHJpdmVTdHJlbmd0aCwNCj4gPiArICBJTiAgICAgVUlOVDggICAgICAgICAg ICAgICAgICAgICAgICAgIFBvd2VyTGltaXQsDQo+ID4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAg ICAgICAgICAgICAgICAgICBNb2RlLA0KPiA+ICsgICAgIE9VVCBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgKlN3aXRjaFJlc3ANCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU0Rf TU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVGSV9T RF9NTUNfU1RBVFVTX0JMT0NLICAgICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAg RUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlVmFsdWU7DQo+ID4gKw0KPiA+ICsg IFplcm9NZW0gKCZTZE1tY0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFpl cm9NZW0gKCZTZE1tY1N0YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsg IFplcm9NZW0gKCZQYWNrZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tl dC5TZE1tY0NtZEJsayAgICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0 dXNCbGsgPSAmU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0g RFdfTU1DX0hDX0dFTkVSSUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29t bWFuZEluZGV4ID0gU0RfU1dJVENIX0ZVTkM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5 cGUgID0gU2RNbWNDb21tYW5kVHlwZUFkdGM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VU eXBlID0gU2RNbWNSZXNwb25zZVR5cGVSMTsNCj4gPiArDQo+ID4gKyAgTW9kZVZhbHVlID0gTW9k ZSA/IEJJVDMxIDogMDsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoQWNj ZXNzTW9kZSAmIDB4RikgfCAgICAgICAgICAgIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKFBvd2VyTGltaXQgJiAweEYpIDw8IDQpIHwgICAgIFwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKERyaXZlU3RyZW5ndGggJiAweEYpIDw8IDgpIHwg IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKERyaXZlU3RyZW5ndGgg JiAweEYpIDw8IDEyKSB8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN b2RlVmFsdWU7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5JbkRhdGFCdWZmZXIgICAgID0gU3dpdGNo UmVzcDsNCj4gPiArICBQYWNrZXQuSW5UcmFuc2Zlckxlbmd0aCA9IDY0Ow0KPiA+ICsNCj4gPiAr ICBTdGF0dXMgPSBQYXNzVGhydS0+UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxM KTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgU2VuZCBjb21tYW5kIFNFTkRfU1RBVFVTIHRvIHRoZSBhZGRyZXNzZWQgU0QgZGV2 aWNlIHRvIGdldCBpdHMNCj4gc3RhdHVzDQo+ID4gKyAgcmVnaXN0ZXIuDQo+ID4gKw0KPiA+ICsg IFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQgU3BlYyA0LjEgU2VjdGlvbiA0 LjcgZm9yIGRldGFpbHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFBhc3NUaHJ1ICAgICAg QSBwb2ludGVyIHRvIHRoZQ0KPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAg UmNhICAgICAgICAgICBUaGUgcmVsYXRpdmUgZGV2aWNlIGFkZHJlc3Mgb2YgYWRkcmVzc2VkIGRl dmljZS4NCj4gPiArICBAcGFyYW1bb3V0XSBEZXZTdGF0dXMgICAgIFRoZSByZXR1cm5lZCBkZXZp Y2Ugc3RhdHVzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBv cGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHkuDQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAg ICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArU2RDYXJkU2VuZFN0YXR1cyAoDQo+ID4gKyAgSU4gICAgIEVGSV9TRF9NTUNfUEFT U19USFJVX1BST1RPQ09MICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gICAgIFVJTlQxNiAgICAgICAg ICAgICAgICAgICAgICAgICBSY2EsDQo+ID4gKyAgICAgT1VUIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAqRGV2U3RhdHVzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NEX01N Q19DT01NQU5EX0JMT0NLICAgICAgICAgICAgICBTZE1tY0NtZEJsazsNCj4gPiArICBFRklfU0Rf TU1DX1NUQVRVU19CTE9DSyAgICAgICAgICAgICAgIFNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIEVG SV9TRF9NTUNfUEFTU19USFJVX0NPTU1BTkRfUEFDS0VUICAgUGFja2V0Ow0KPiA+ICsgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBa ZXJvTWVtICgmU2RNbWNDbWRCbGssIHNpemVvZiAoU2RNbWNDbWRCbGspKTsNCj4gPiArICBaZXJv TWVtICgmU2RNbWNTdGF0dXNCbGssIHNpemVvZiAoU2RNbWNTdGF0dXNCbGspKTsNCj4gPiArICBa ZXJvTWVtICgmUGFja2V0LCBzaXplb2YgKFBhY2tldCkpOw0KPiA+ICsNCj4gPiArICBQYWNrZXQu U2RNbWNDbWRCbGsgICAgPSAmU2RNbWNDbWRCbGs7DQo+ID4gKyAgUGFja2V0LlNkTW1jU3RhdHVz QmxrID0gJlNkTW1jU3RhdHVzQmxrOw0KPiA+ICsgIFBhY2tldC5UaW1lb3V0ICAgICAgICA9IERX X01NQ19IQ19HRU5FUklDX1RJTUVPVVQ7DQo+ID4gKw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1h bmRJbmRleCA9IFNEX1NFTkRfU1RBVFVTOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRUeXBl ICA9IFNkTW1jQ29tbWFuZFR5cGVBYzsNCj4gPiArICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUg PSBTZE1tY1Jlc3BvbnNlVHlwZVIxOw0KPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVu dCA9IChVSU5UMzIpUmNhIDw8IDE2Ow0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQYXNzVGhydS0+ UGFzc1RocnUgKFBhc3NUaHJ1LCAwLCAmUGFja2V0LCBOVUxMKTsNCj4gPiArICBpZiAoIUVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgKkRldlN0YXR1cyA9IFNkTW1jU3RhdHVzQmxrLlJl c3AwOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VuZCBjb21tYW5kIFNFTkRfVFVOSU5HX0JMT0NLIHRvIHRo ZSBTRCBkZXZpY2UgZm9yIEhTMjAwDQo+IG9wdGltYWwgc2FtcGxpbmcNCj4gPiArICBwb2ludCBk ZXRlY3Rpb24uDQo+ID4gKw0KPiA+ICsgIEl0IG1heSBiZSBzZW50IHVwIHRvIDQwIHRpbWVzIHVu dGlsIHRoZSBob3N0IGZpbmlzaGVzIHRoZSB0dW5pbmcNCj4gcHJvY2VkdXJlLg0KPiA+ICsNCj4g PiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNlY3Rp b24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAg ICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZG9uZSBjb3JyZWN0bHku DQo+ID4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGZhaWxzLg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArU2RDYXJkU2VuZFR1bmluZ0Js ayAoDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1Ro cnUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU0RfTU1DX0NPTU1BTkRfQkxPQ0sgICAg ICAgICAgICAgIFNkTW1jQ21kQmxrOw0KPiA+ICsgIEVGSV9TRF9NTUNfU1RBVFVTX0JMT0NLICAg ICAgICAgICAgICAgU2RNbWNTdGF0dXNCbGs7DQo+ID4gKyAgRUZJX1NEX01NQ19QQVNTX1RIUlVf Q09NTUFORF9QQUNLRVQgICBQYWNrZXQ7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUdW5pbmdCbG9ja1s2NF07DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKCZTZE1t Y0NtZEJsaywgc2l6ZW9mIChTZE1tY0NtZEJsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZTZE1tY1N0 YXR1c0Jsaywgc2l6ZW9mIChTZE1tY1N0YXR1c0JsaykpOw0KPiA+ICsgIFplcm9NZW0gKCZQYWNr ZXQsIHNpemVvZiAoUGFja2V0KSk7DQo+ID4gKw0KPiA+ICsgIFBhY2tldC5TZE1tY0NtZEJsayAg ICA9ICZTZE1tY0NtZEJsazsNCj4gPiArICBQYWNrZXQuU2RNbWNTdGF0dXNCbGsgPSAmU2RNbWNT dGF0dXNCbGs7DQo+ID4gKyAgUGFja2V0LlRpbWVvdXQgICAgICAgID0gRFdfTU1DX0hDX0dFTkVS SUNfVElNRU9VVDsNCj4gPiArDQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZEluZGV4ID0gU0Rf U0VORF9UVU5JTkdfQkxPQ0s7DQo+ID4gKyAgU2RNbWNDbWRCbGsuQ29tbWFuZFR5cGUgID0gU2RN bWNDb21tYW5kVHlwZUFkdGM7DQo+ID4gKyAgU2RNbWNDbWRCbGsuUmVzcG9uc2VUeXBlID0gU2RN bWNSZXNwb25zZVR5cGVSMTsNCj4gPiArICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAw Ow0KPiA+ICsNCj4gPiArICBQYWNrZXQuSW5EYXRhQnVmZmVyICAgICA9IFR1bmluZ0Jsb2NrOw0K PiA+ICsgIFBhY2tldC5JblRyYW5zZmVyTGVuZ3RoID0gc2l6ZW9mIChUdW5pbmdCbG9jayk7DQo+ ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFBhc3NUaHJ1LT5QYXNzVGhydSAoUGFzc1RocnUsIDAsICZQ YWNrZXQsIE5VTEwpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBTd2l0Y2ggdGhlIGJ1cyB3aWR0aCB0byBzcGVjaWZpZWQgd2lk dGguDQo+ID4gKw0KPiA+ICsgIFJlZmVyIHRvIFNEIFBoeXNpY2FsIExheWVyIFNpbXBsaWZpZWQg U3BlYyA0LjEgU2VjdGlvbiA0LjcgYW5kDQo+ID4gKyAgU0QgSG9zdCBDb250cm9sbGVyIFNpbXBs aWZpZWQgU3BlYyAzLjAgc2VjdGlvbiBGaWd1cmUgMy03IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1BDSV9J T19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEg cG9pbnRlciB0byB0aGUNCj4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gUmNh ICAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0K PiA+ICsgIEBwYXJhbVtpbl0gQnVzV2lkdGggICAgICAgVGhlIGJ1cyB3aWR0aCB0byBiZSBzZXQs IGl0IGNvdWxkIGJlIDQgb3IgOC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lg0KPiA+ICsgIEByZXR2YWwgT3Ro ZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK1NkQ2FyZFN3aXRjaEJ1c1dpZHRoICgNCj4gPiArICBJTiBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgSU4gRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDE2 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsDQo+ID4gKyAgSU4gQk9PTEVBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJc0RkciwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJ X1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICBEZXZT dGF0dXM7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFNkQ2FyZFNldEJ1c1dpZHRoIChQYXNzVGhy dSwgUmNhLCBCdXNXaWR0aCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfRVJST1IsDQo+ID4gKyAgICAgICJTZENh cmRTd2l0Y2hCdXNXaWR0aDogU3dpdGNoIHRvIGJ1cyB3aWR0aCAlZCBmYWlscyB3aXRoICVyXG4i LA0KPiA+ICsgICAgICBCdXNXaWR0aCwNCj4gPiArICAgICAgU3RhdHVzDQo+ID4gKyAgICAgICkp Ow0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1 cyA9IFNkQ2FyZFNlbmRTdGF0dXMgKFBhc3NUaHJ1LCBSY2EsICZEZXZTdGF0dXMpOw0KPiA+ICsg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoDQo+ID4gKyAgICAg IERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAiU2RDYXJkU3dpdGNoQnVzV2lkdGg6IFNlbmQgc3Rh dHVzIGZhaWxzIHdpdGggJXJcbiIsDQo+ID4gKyAgICAgIFN0YXR1cw0KPiA+ICsgICAgICApKTsN Cj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vDQo+ID4gKyAgLy8g Q2hlY2sgdGhlIHN3aXRjaCBvcGVyYXRpb24gaXMgcmVhbGx5IHN1Y2Nlc3NmdWwgb3Igbm90Lg0K PiA+ICsgIC8vDQo+ID4gKyAgaWYgKChEZXZTdGF0dXMgPj4gMTYpICE9IDApIHsNCj4gPiArICAg IERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAiU2RDYXJkU3dp dGNoQnVzV2lkdGg6IFRoZSBzd2l0Y2ggb3BlcmF0aW9uIGZhaWxzIGFzIERldlN0YXR1cw0KPiAw eCUwOHhcbiIsDQo+ID4gKyAgICAgIERldlN0YXR1cw0KPiA+ICsgICAgICApKTsNCj4gPiArICAg IHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVz ID0gRHdNbWNIY1NldEJ1c1dpZHRoIChEZXZCYXNlLCBJc0RkciwgQnVzV2lkdGgpOw0KPiA+ICsN Cj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBT d2l0Y2ggdGhlIGhpZ2ggc3BlZWQgdGltaW5nIGFjY29yZGluZyB0byByZXF1ZXN0Lg0KPiA+ICsN Cj4gPiArICBSZWZlciB0byBTRCBQaHlzaWNhbCBMYXllciBTaW1wbGlmaWVkIFNwZWMgNC4xIFNl Y3Rpb24gNC43IGZvciBkZXRhaWxzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBjaUlvICAg ICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1BDSV9JT19QUk9UT0NPTCBpbnN0YW5jZS4NCj4g PiArICBAcGFyYW1baW5dIFBhc3NUaHJ1ICAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gRUZJX1NE X01NQ19QQVNTX1RIUlVfUFJPVE9DT0wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgVGhlIHJlbGF0aXZl IGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLg0KPiA+ICsgIEBwYXJhbVtpbl0gUzE4QSAg ICAgICAgICAgVGhlIGJvb2xlYW4gdG8gc2hvdyBpZiBpdCdzIGEgVUhTLUkgU0QgY2FyZC4NCj4g PiArICBAcGFyYW1baW5dIEJ1c1dpZHRocyAgICAgIFRoZSBidXMgd2lkdGggb2YgdGhlIFNEIGNh cmQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIG9wZXJhdGlv biBpcyBkb25lIGNvcnJlY3RseS4NCj4gPiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgIFRo ZSBvcGVyYXRpb24gZmFpbHMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICtTZENhcmRTZXRCdXNNb2RlICgNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERldkJhc2UsDQo+ID4gKyAgSU4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9D T0wgICAgICAqUGFzc1RocnUsDQo+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSY2EsDQo+ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTMThBLA0KPiA+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVz V2lkdGhzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ID4gKyAgRFdfTU1DX0hDX1NMT1RfQ0FQICAgICAgICAgICAqQ2FwYWJp bGl0eTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgIENsb2NrRnJlcTsNCj4g PiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgIEFjY2Vzc01vZGU7DQo+ID4gKyAgVUlO VDggICAgICAgICAgICAgICAgICAgICAgICBTd2l0Y2hSZXNwWzY0XTsNCj4gPiArICBEV19NTUNf SENfUFJJVkFURV9EQVRBICAgICAgICpQcml2YXRlOw0KPiA+ICsgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICAgICAgSXNEZHI7DQo+ID4gKw0KPiA+ICsgIFByaXZhdGUgPSBEV19NTUNfSENfUFJJ VkFURV9GUk9NX1RISVMgKFBhc3NUaHJ1KTsNCj4gPiArDQo+ID4gKyAgQ2FwYWJpbGl0eSA9ICZQ cml2YXRlLT5DYXBhYmlsaXR5WzBdOw0KPiA+ICsNCj4gPiArICBpZiAoKENhcGFiaWxpdHktPkJ1 c1dpZHRoID09IDEpIHx8IChDYXBhYmlsaXR5LT5CdXNXaWR0aCA9PSA0KSkgew0KPiA+ICsgICAg QnVzV2lkdGhzICY9IENhcGFiaWxpdHlbMF0uQnVzV2lkdGg7DQo+ID4gKyAgfSBlbHNlIHsNCj4g PiArICAgIERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAiU2RD YXJkU2V0QnVzTW9kZTogQnVzV2lkdGhzICglZCkgaW4gY2FwYWJpbGl0eSBhcmUgd3JvbmdcbiIs DQo+ID4gKyAgICAgIENhcGFiaWxpdHktPkJ1c1dpZHRoDQo+ID4gKyAgICAgICkpOw0KPiA+ICsg ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IGlmIChCdXNXaWR0aHMgPT0gMCkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVC VUdfRVJST1IsDQo+ID4gKyAgICAgICJTZENhcmRTZXRCdXNNb2RlOiBHZXQgd3JvbmcgQnVzV2lk dGhzOiVkXG4iLA0KPiA+ICsgICAgICBCdXNXaWR0aHMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAg ICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg aWYgKFByaXZhdGUtPkNhcGFiaWxpdHlbMF0uRGRyNTApIHsNCj4gPiArICAgIElzRGRyID0gVFJV RTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgSXNEZHIgPSBGQUxTRTsNCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFNkQ2FyZFN3aXRjaEJ1c1dpZHRoIChEZXZCYXNlLCBQYXNz VGhydSwgUmNhLCBJc0RkciwNCj4gQnVzV2lkdGhzKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4g PiArICAgICAgIlNkQ2FyZFNldEJ1c01vZGU6IEV4ZWN1dGluZyBTZENhcmRTd2l0Y2hCdXNXaWR0 aCBmYWlscyB3aXRoDQo+ICVyXG4iLA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7 DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4g PiArICAvLyBHZXQgdGhlIHN1cHBvcnRlZCBidXMgc3BlZWQgZnJvbSBTV0lUQ0ggY21kIHJldHVy biBkYXRhIGdyb3VwICMxLg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gU2RDYXJkU3dpdGNo IChQYXNzVGhydSwgMHhGLCAweEYsIDB4RiwgMHhGLCBGQUxTRSwgU3dpdGNoUmVzcCk7DQo+ID4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g PiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBDYWxjdWxhdGUgc3VwcG9ydGVkIGJ1cyBzcGVl ZC9idXMgd2lkdGgvY2xvY2sgZnJlcXVlbmN5IGJ5IGhvc3QgYW5kDQo+IGRldmljZQ0KPiA+ICsg IC8vIGNhcGFiaWxpdHkuDQo+ID4gKyAgLy8NCj4gPiArICBDbG9ja0ZyZXEgPSAwOw0KPiA+ICsg IGlmIChTMThBICYmIChDYXBhYmlsaXR5LT5TZHIxMDQgIT0gMCkgJiYgKChTd2l0Y2hSZXNwWzEz XSAmIEJJVDMpICE9IDApKSB7DQo+ID4gKyAgICBDbG9ja0ZyZXEgPSAyMDg7DQo+ID4gKyAgICBB Y2Nlc3NNb2RlID0gMzsNCj4gPiArICB9IGVsc2UgaWYgKFMxOEEgJiYgKENhcGFiaWxpdHktPlNk cjUwICE9IDApICYmDQo+ID4gKyAgICAgICAgICAgICAoKFN3aXRjaFJlc3BbMTNdICYgQklUMikg IT0gMCkpIHsNCj4gPiArICAgIENsb2NrRnJlcSA9IDEwMDsNCj4gPiArICAgIEFjY2Vzc01vZGUg PSAyOw0KPiA+ICsgIH0gZWxzZSBpZiAoUzE4QSAmJiAoQ2FwYWJpbGl0eS0+RGRyNTAgIT0gMCkg JiYNCj4gPiArICAgICAgICAgICAgICgoU3dpdGNoUmVzcFsxM10gJiBCSVQ0KSAhPSAwKSkgew0K PiA+ICsgICAgQ2xvY2tGcmVxID0gNTA7DQo+ID4gKyAgICBBY2Nlc3NNb2RlID0gNDsNCj4gPiAr ICB9IGVsc2UgaWYgKChTd2l0Y2hSZXNwWzEzXSAmIEJJVDEpICE9IDApIHsNCj4gPiArICAgIENs b2NrRnJlcSA9IDUwOw0KPiA+ICsgICAgQWNjZXNzTW9kZSA9IDE7DQo+ID4gKyAgfSBlbHNlIHsN Cj4gPiArICAgIENsb2NrRnJlcSA9IDI1Ow0KPiA+ICsgICAgQWNjZXNzTW9kZSA9IDA7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBTZENhcmRTd2l0Y2ggKFBhc3NUaHJ1LCBBY2Nl c3NNb2RlLCAweEYsIDB4RiwgMHhGLCBUUlVFLA0KPiBTd2l0Y2hSZXNwKTsNCj4gPiArICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgaWYgKChTd2l0Y2hSZXNwWzE2XSAmIDB4RikgIT0gQWNjZXNzTW9kZSkg ew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfRVJST1IsDQo+ID4gKyAgICAg ICJTZENhcmRTZXRCdXNNb2RlOiBTd2l0Y2ggdG8gQWNjZXNzTW9kZSAlZCBDbG9ja0ZyZXEgJWQg ZmFpbHMhDQo+IFRoZSBTd2l0Y2ggcmVzcG9uc2UgaXMgMHglMXhcbiIsDQo+ID4gKyAgICAgIEFj Y2Vzc01vZGUsDQo+ID4gKyAgICAgIENsb2NrRnJlcSwNCj4gPiArICAgICAgU3dpdGNoUmVzcFsx Nl0gJiAweEYNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJP UjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBERUJVR19JTkZP LA0KPiA+ICsgICAgIlNkQ2FyZFNldEJ1c01vZGU6IFN3aXRjaCB0byBBY2Nlc3NNb2RlICVkIENs b2NrRnJlcSAlZCBcbiIsDQo+ID4gKyAgICBBY2Nlc3NNb2RlLA0KPiA+ICsgICAgQ2xvY2tGcmVx DQo+ID4gKyAgICApKTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gRHdNbWNIY0Nsb2NrU3VwcGx5 IChEZXZCYXNlLCBDbG9ja0ZyZXEgKiAxMDAwLCAqQ2FwYWJpbGl0eSk7DQo+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gK0VGSV9TVEFU VVMNCj4gPiArU2RDYXJkSWRlbnRpZmljYXRpb24gKA0KPiA+ICsgIElOIERXX01NQ19IQ19QUklW QVRFX0RBVEEgICAgICAgICAgICAgKlByaXZhdGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICBEZXZCYXNlOw0KPiA+ICsgIEVGSV9TRF9NTUNfUEFTU19USFJV X1BST1RPQ09MICAqUGFzc1RocnU7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgIE9jcjsNCj4gPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgUmNhOw0KPiA+ ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICBYcGM7DQo+ID4gKyAgQk9PTEVBTiAg ICAgICAgICAgICAgICAgICAgICAgIFMxOHI7DQo+ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICAgICAgIE1heEN1cnJlbnQ7DQo+ID4gKyAgU0RfU0NSICAgICAgICAgICAgICAgICAgICAg ICAgIFNjcjsNCj4gPiArICBTRF9DU0QgICAgICAgICAgICAgICAgICAgICAgICAgQ3NkOw0KPiA+ ICsNCj4gPiArICBEZXZCYXNlICAgID0gUHJpdmF0ZS0+RGV2QmFzZTsNCj4gPiArICBQYXNzVGhy dSA9ICZQcml2YXRlLT5QYXNzVGhydTsNCj4gPiArICAvLw0KPiA+ICsgIC8vIDEuIFNlbmQgQ21k MCB0byB0aGUgZGV2aWNlDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBTZENhcmRSZXNldCAo UGFzc1RocnUpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERF QlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAgICJTZENhcmRJZGVudGlm aWNhdGlvbjogRXhlY3V0aW5nIENtZDAgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAgU3Rh dHVzDQo+ID4gKyAgICAgICkpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ ID4gKyAgTWljcm9TZWNvbmREZWxheSAoMTAwMDApOw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gMi4g U2VuZCBDbWQ4IHRvIHRoZSBkZXZpY2UNCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IFNkQ2Fy ZFZvbHRhZ2VDaGVjayAoUGFzc1RocnUsIDB4MSwgMHhGRik7DQo+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfSU5GTywN Cj4gPiArICAgICAgIlNkQ2FyZElkZW50aWZpY2F0aW9uOiBFeGVjdXRpbmcgQ21kOCBmYWlscyB3 aXRoICVyXG4iLA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArICAvLw0KPiA+ICsgIC8vIDMuIFNlbmQgQWNt ZDQxIHdpdGggdm9sdGFnZSB3aW5kb3cgMCB0byB0aGUgZGV2aWNlDQo+ID4gKyAgLy8NCj4gPiAr ICBTdGF0dXMgPSBTZENhcmRTZW5kT3BDb25kIChQYXNzVGhydSwgMCwgMCwgRkFMU0UsIEZBTFNF LCBGQUxTRSwgJk9jcik7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsg ICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfSU5GTywNCj4gPiArICAgICAgIlNkQ2FyZElk ZW50aWZpY2F0aW9uOiBFeGVjdXRpbmcgU2RDYXJkU2VuZE9wQ29uZCBmYWlscyB3aXRoICVyXG4i LA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJ X0RFVklDRV9FUlJPUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChQcml2YXRlLT5DYXBh YmlsaXR5WzBdLlZvbHRhZ2UzMyAhPSAwKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gU3Vw cG9ydCAzLjNWDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgTWF4Q3VycmVudCA9ICgoVUlOVDMyKVBy aXZhdGUtPk1heEN1cnJlbnRbMF0gJiAweEZGKSAqIDQ7DQo+ID4gKyAgICBTMThyID0gRkFMU0U7 DQo+ID4gKyAgfSBlbHNlIGlmIChQcml2YXRlLT5DYXBhYmlsaXR5WzBdLlZvbHRhZ2UzMCAhPSAw KSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gU3VwcG9ydCAzLjBWDQo+ID4gKyAgICAvLw0K PiA+ICsgICAgTWF4Q3VycmVudCA9ICgoKFVJTlQzMilQcml2YXRlLT5NYXhDdXJyZW50WzBdID4+ IDgpICYgMHhGRikgKiA0Ow0KPiA+ICsgICAgUzE4ciA9IEZBTFNFOw0KPiA+ICsgIH0gZWxzZSBp ZiAoUHJpdmF0ZS0+Q2FwYWJpbGl0eVswXS5Wb2x0YWdlMTggIT0gMCkgew0KPiA+ICsgICAgLy8N Cj4gPiArICAgIC8vIFN1cHBvcnQgMS44Vg0KPiA+ICsgICAgLy8NCj4gPiArICAgIE1heEN1cnJl bnQgPSAoKChVSU5UMzIpUHJpdmF0ZS0+TWF4Q3VycmVudFswXSA+PiAxNikgJiAweEZGKSAqIDQ7 DQo+ID4gKyAgICBTMThyID0gVFJVRTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgQVNTRVJU IChGQUxTRSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIGlmIChNYXhDdXJyZW50ID49IDE1MCkgew0KPiA+ICsgICAgWHBjID0gVFJV RTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgWHBjID0gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIDQuIFJlcGVhdGx5IHNlbmQgQWNtZDQxIHdpdGggc3Vw cGx5IHZvbHRhZ2Ugd2luZG93IHRvIHRoZSBkZXZpY2UuDQo+ID4gKyAgLy8gICAgTm90ZSBoZXJl IHdlIG9ubHkgc3VwcG9ydCB0aGUgY2FyZHMgY29tcGxpZWQgd2l0aCBTRCBwaHlzaWNhbA0KPiA+ ICsgIC8vICAgIGxheWVyIHNpbXBsaWZpZWQgc3BlYyB2ZXJzaW9uIDIuMCBhbmQgdmVyc2lvbiAz LjAgYW5kIGFib3ZlLg0KPiA+ICsgIC8vDQo+ID4gKyAgZG8gew0KPiA+ICsgICAgU3RhdHVzID0g U2RDYXJkU2VuZE9wQ29uZCAoUGFzc1RocnUsIDAsIE9jciwgUzE4ciwgWHBjLCBUUlVFLCAmT2Ny KTsNCj4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgREVCVUcg KCgNCj4gPiArICAgICAgICBERUJVR19FUlJPUiwNCj4gPiArICAgICAgICAiU2RDYXJkSWRlbnRp ZmljYXRpb246IFNkQ2FyZFNlbmRPcENvbmQgZmFpbHMgd2l0aCAlciBPY3IgJXgsIFMxOHINCj4g JXgsIFhwYyAleFxuIiwNCj4gPiArICAgICAgICBTdGF0dXMsDQo+ID4gKyAgICAgICAgT2NyLA0K PiA+ICsgICAgICAgIFMxOHIsDQo+ID4gKyAgICAgICAgWHBjDQo+ID4gKyAgICAgICAgKSk7DQo+ ID4gKyAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0g d2hpbGUgKChPY3IgJiBCSVQzMSkgPT0gMCk7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IFNkQ2Fy ZEFsbFNlbmRDaWQgKFBhc3NUaHJ1KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiArICAgICAg IlNkQ2FyZElkZW50aWZpY2F0aW9uOiBFeGVjdXRpbmcgU2RDYXJkQWxsU2VuZENpZCBmYWlscyB3 aXRoICVyXG4iLA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gU2RDYXJkU2V0 UmNhIChQYXNzVGhydSwgJlJjYSk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdfRVJST1IsDQo+ID4gKyAgICAgICJT ZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nIFNkQ2FyZFNldFJjYSBmYWlscyB3aXRoICVy XG4iLA0KPiA+ICsgICAgICBTdGF0dXMNCj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4g U3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gU2RDYXJkR2V0Q3NkIChQ YXNzVGhydSwgUmNhLCAmQ3NkKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4gKyAgICBERUJVRyAoKA0KPiA+ICsgICAgICBERUJVR19FUlJPUiwNCj4gPiArICAgICAgIlNk Q2FyZElkZW50aWZpY2F0aW9uOiBFeGVjdXRpbmcgU2RDYXJkR2V0Q3NkIGZhaWxzIHdpdGggJXJc biIsDQo+ID4gKyAgICAgIFN0YXR1cw0KPiA+ICsgICAgICApKTsNCj4gPiArICAgIHJldHVybiBT dGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBTZENhcmRTZWxlY3QgKFBh c3NUaHJ1LCBSY2EpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAg IERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAiU2RDYXJkSWRl bnRpZmljYXRpb246IFNlbGVjdGluZyBjYXJkIGZhaWxzIHdpdGggJXJcbiIsDQo+ID4gKyAgICAg IFN0YXR1cw0KPiA+ICsgICAgICApKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBTZENhcmRHZXRTY3IgKFBhc3NUaHJ1LCBSY2EsICZT Y3IpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgo DQo+ID4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiA+ICsgICAgICAiU2RDYXJkSWRlbnRpZmljYXRp b246IEV4ZWN1dGluZyBTZENhcmRHZXRTY3IgZmFpbHMgd2l0aCAlclxuIiwNCj4gPiArICAgICAg U3RhdHVzDQo+ID4gKyAgICAgICkpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gRW50ZXIgRGF0YSBUcmFuZmVyIE1vZGUuDQo+ ID4gKyAgLy8NCj4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJTZENhcmRJZGVudGlmaWNhdGlv bjogRm91bmQgYSBTRCBkZXZpY2VcbiIpKTsNCj4gPiArICBQcml2YXRlLT5TbG90WzBdLkNhcmRU eXBlID0gU2RDYXJkVHlwZTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gU2RDYXJkU2V0QnVzTW9k ZSAoRGV2QmFzZSwgUGFzc1RocnUsIFJjYSwgUzE4ciwNCj4gU2NyLlNkQnVzV2lkdGhzKTsNCj4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgUHJpdmF0ZS0+U2xvdFswXS5Jbml0aWFsaXplZCA9IFRS VUU7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiAtLQ0KPiA+IDIu MTIuMw0KDQo=