From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0AFD341C4F; Thu, 9 Feb 2023 12:09:48 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 99C864067B; Thu, 9 Feb 2023 12:09:47 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 47AFC400D5 for ; Thu, 9 Feb 2023 12:09:46 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3199IhHx000650; Thu, 9 Feb 2023 03:09:42 -0800 Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2049.outbound.protection.outlook.com [104.47.66.49]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3nkdys0ym6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Feb 2023 03:09:41 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=azDum7yY3B7izvlyFzeTKTD/5jQZ03yvGNBhn9f6Nx7ax0t/62wCHWmrxIBmDHJ8xrplGEcVuVl+M+co4kPhPzi5YRDoK7cC91tkpQsFiRln6tu/BtqLacmJoEQNpk1BE1rI9+a+K9boohyCIrZ8on1y564BLCnleraUDYnPBOYXpkxf/z8G6p00gsAZ5UREeVQ8Bj+BVWHXeA2dhHqaA1aiQ8sc5Eu+TcWv3+m6Gr3DGrzvq8mJE1BZibPeeyC6WJdzcQKTXbU1sn64Wf5q1VmzFjZfgzicpU/0KFWgc7zXhXBdQvWkPHn9J/TD1rSF1Z5FevTttegf/QpnVnRf9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=e0afJwBK9Qrb3Gb5/ZtiQj+xoAzwG8UXUzHBzPyCn9g=; b=hH5hzsa0XlN8egp64ncQXhtjdn9bl15zeMZ3JbnSB1SI97F36sVnwVRVSgXoStRLG+S4axjF9WdyTyUQx1OqOL41FHB1Hu36H1f1nt6cy/0PUmRSwJPFJpoqD67Hm6Xbu7wPryOHdZKGISo0OSVOeMtDhsBPNJgDIRXWW+zQIH/7dTY5cpnDa1slrOIBLnfk5ydl6nv+J+jnNWAL82fbv1QJUgEPLYKo/GeInjPxuHFhdt0Ox2tRpf+PKdV5IIAoU30WOxVDBh8C3OqdEhys3k1o1G1Nb+oT0vGn58eGHyrTnz+8cBKSZGcgXa8pIWeGzsZICcBerwRpnOaNbm9iaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e0afJwBK9Qrb3Gb5/ZtiQj+xoAzwG8UXUzHBzPyCn9g=; b=DS631vKuZipXFClO4nlCqkfOqpyQ5dd48cSdPXB0AisfEWMH/5hJo9R4HSTO8SyK60VXEWOyQvoBZxRAfB2iQ4CpGRKEfVIGcu8FMDW9Ok4gPrTEQIIbQYhWcqVIU6V7hTIR80CleJU/dIPCFlll76tG4UidVw+YSiYUhnz4bhM= Received: from DM4PR18MB4368.namprd18.prod.outlook.com (2603:10b6:5:39d::6) by MN2PR18MB3541.namprd18.prod.outlook.com (2603:10b6:208:24f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.17; Thu, 9 Feb 2023 11:09:32 +0000 Received: from DM4PR18MB4368.namprd18.prod.outlook.com ([fe80::6d6a:99da:de:ea6b]) by DM4PR18MB4368.namprd18.prod.outlook.com ([fe80::6d6a:99da:de:ea6b%7]) with mapi id 15.20.6086.017; Thu, 9 Feb 2023 11:09:32 +0000 From: Tomasz Duszynski To: David Marchand CC: "dev@dpdk.org" , Thomas Monjalon , "roretzla@linux.microsoft.com" , "Ruifeng.Wang@arm.com" , "bruce.richardson@intel.com" , Jerin Jacob Kollanukkaran , "mattias.ronnblom@ericsson.com" , "mb@smartsharesystems.com" , "zhoumin@loongson.cn" Subject: RE: [EXT] Re: [PATCH v9 1/4] lib: add generic support for reading PMU events Thread-Topic: [EXT] Re: [PATCH v9 1/4] lib: add generic support for reading PMU events Thread-Index: AQHZNwThO5VyQwPiAkmNvs7ytLAKr67BxwAAgAN6rXA= Date: Thu, 9 Feb 2023 11:09:31 +0000 Message-ID: References: <20230202094358.2838758-1-tduszynski@marvell.com> <20230202124951.2915770-1-tduszynski@marvell.com> <20230202124951.2915770-2-tduszynski@marvell.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR18MB4368:EE_|MN2PR18MB3541:EE_ x-ms-office365-filtering-correlation-id: 856f70c8-4145-41a7-fc9c-08db0a8e1eb8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1rd7HJ1NxuZxPpXeLSzQScgyipCaU7PyHtfBxAR635ixSxIpdnUMxA98srzV276TQXbIligB1VotZul2M5pAu+O73WrxbyVM3WD8mhcbLxxnPZIU7isGZNmPf4JTaqJqD7sk476FFTQvY4D7xIU7rQDk2u6q157cCBzlZPO17yyKCdW65obZZo3aWX7O7HjSmXyb/KiY3EuO/ylbNwcuO60IA4+M5MU0BdE19bYy5U1NJS73lmmNJpQACfCrxA2A6sGwhdAFSbp7wfzgYculMrTNvCVLM2A+WQRbN1gwFm5r5sWOBtKnHS6Jl+zDrXjHgP2qH7uC9BJCZd8L7Gk7nEKmy1ub4OGAoMhVNRsWN1bxCgGmqeB/Xz3cnDplN+Ad3S4LJ0mSygKLaw9WZf8elwYXwXRQNCYdFRdoNHGYCe4XOLU5KbJ0q0BXxKHmKKubd19o2dPSxmkK8su+TCDlg9uyk2Mry8lM7jQndaRaNTdzMJdpnWTBV7dTzl9WwdM8Xypv2/0ZWKtHU3QdevmFjB3BJ5siUwn9GaElVOJXlnVZ6TvX8EAEZoRAQSaqVrX8lJFPyVMm+brRXz0lxNSq58320h+IjGKbi6D2M2T1ZCdR8i/MKdMxgMPf/HtccCpcowCUb1w00QCXoUPbodtciWiqWuI1CmQcL1za16pBEJpGPZZoTsh5i9+mmCSaB2kflmdUd+LjcZdUkgLcM6Nee4Rot6PjwEHRNbLaSlC9TLw= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR18MB4368.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(366004)(376002)(136003)(346002)(39860400002)(396003)(451199018)(55016003)(316002)(7696005)(33656002)(478600001)(71200400001)(83380400001)(54906003)(66574015)(52536014)(26005)(186003)(30864003)(9686003)(66556008)(6506007)(5660300002)(86362001)(76116006)(38070700005)(66476007)(4326008)(66446008)(6916009)(64756008)(66946007)(66899018)(41300700001)(8676002)(122000001)(38100700002)(8936002)(2906002)(41533002)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NU0rTEF4TFY5WmNkRDVyTHdWL2k2aDV3YXdrMXBOK2w1Q2JGT0c5NjFuMEly?= =?utf-8?B?cFhCWWh6R2g2enBYaVV6ZWxLemZCYTFrMXFUZGM2M1piVmR6S3c4OUd4QVZ4?= =?utf-8?B?NmMwOVBRNXhiaDc3SkZUMXRrMGovVzZLbk5DbUZLN3RtU0FLODNpQWJRYStn?= =?utf-8?B?ZktIWllWWkFOYWx1ZXV6OUpZNXloaHBMdzdPaHZFMHVVTFl5WHRsTWdoMy9k?= =?utf-8?B?b0JGVDBrWmhGYURKMUVOQTNQcytjY3EzZlVUUmhlNnFQTmMvZm9YeDRvUjlD?= =?utf-8?B?bWdkMjA3L01NZk5uOTBVRkwvKzkvTzR1UldycnQvTUcrVXBFMC9EN0c0MFV1?= =?utf-8?B?TFlmWDV3MzJzS1NwYW4reDZqQVI3YVZlMDk5UzZZTS9PZ0lNS20rcm5RTDMx?= =?utf-8?B?TWxISlIvT1h4UlN1VFE5MmhwcDQ4SnhVOHBIMW45dmJ2aTJDN3RGYWYvNXht?= =?utf-8?B?K015aVJwQzBlTUFjZGtYYXNxbHVGQW0zdFJKS3dKVTZBbG02b09iVk54QUJR?= =?utf-8?B?cUJ3dkpzS1Z6M0dENDZkSmNpZy9jd2hIKzFkUWlWQzVHYkErWFdIa1FTY0Ry?= =?utf-8?B?S3FGVTRwcktVYm5SQUg3aExvWlk3eHJVQW9wMzI3WXBpeHNDdUFjWFUwTHh2?= =?utf-8?B?T0FzOUZCTXNVZU9RNGZsMVRSMzhJR1F4YlI1V1l6cTNwQWFaTnNIVi83THdN?= =?utf-8?B?WWE1bmhOSWdQVkhuQWdCL3o3WkQ0UjBRbkd0NnQ4L2hBbENWcmJmWjdGT1dE?= =?utf-8?B?RUIrb1QyY2IwYk9lb202VC93VmRsK21NYmF6ZmZoUHFMZVRKSU1qVVJML3Fl?= =?utf-8?B?QXZPVnJsbWpQNWpJUi9rcjkrMFVmRXUvWW5QSHQyZXd1Z0ZLUW5NaDAyVW53?= =?utf-8?B?MmZjY2lKUmpSaGxUMkZIZUdIclRDaEd0S3FraU9LVktJbWJVdjJldHlpNWNp?= =?utf-8?B?OVJLalZUdmw4bVdNT3MyN01WQ1k4TDR0Uk9VeUQ1YVhMb1lvNngxMGlMUGE3?= =?utf-8?B?NFZQcHRnanFJaGM5UE5PMzV1akJwa2c5bk0wQVExbW9IQi9BdU1kVFdaNE9H?= =?utf-8?B?a1dneWxyMHVLRnZCcWllS1FNT20xRWJ3N1NGZ0xWUjJnKzEwQXVDSXk0ZWtR?= =?utf-8?B?M0RMb0R6TVVlVHJLclppN2NLd0FLYUdpN0FOYS90VnFpU3NpTUpHY1lRbUpQ?= =?utf-8?B?U2h3aXo0TFA4RHNZSFhmWU40Snh1eDVLYkxCMDB2bXVaSk5zcGZncG1XeHNh?= =?utf-8?B?ckIyKzIyRCtpNERaYWxpZGlzc3hhVVZCaUh4TlZhMDFPOFd6M1kvbm4xLzlZ?= =?utf-8?B?cFZ1bEVXNmZvMFUvUFArblM0UnJoWjhsZnc4SnkvZnFKUDFFS1k2cmVURHY4?= =?utf-8?B?YXVjcUhYQWQxOWFCY2oyQ2JYYk5TK1ZoejZlTjlZbW52cDl3MDRNRFB4ZVJI?= =?utf-8?B?Y0tFM2RZbTN1ZE91bHUrTFlaemhGeTE2T2x0cEMzd1NSYm5VUlcrYWtXeFVK?= =?utf-8?B?MS9OaFJHNktQOUNwTFgvdFNTcUcyVlY4RHptNlZGUjh1bkFUaUxxOGswanVj?= =?utf-8?B?MDNVN1NwQVdFRGNYUWhyUzVZVTlFMjgxaFBDV21yZGJqVmxNU29zNk5DdXFi?= =?utf-8?B?YlVkbU9NSHlKdVZCQnFxWERaL2NjRWRMamdESmU2L2l3N2VBUjlnZEREVXE0?= =?utf-8?B?WE1EMkJ3V2RjY2kwbTAxekZ4R3Q0U3hoTGhoem14Szdud1grV0I0MTR1QXRL?= =?utf-8?B?UUt6QVlaMkZZUTRYcFNQZ0Z6azFaalp0c1pSaGY4WkYxRCsyU2Q2dVJhZkdF?= =?utf-8?B?MVhUYVBBeHFoc1MwL2xRK1NmYW5vanFnRjdzRHRJRTlHNnlTQ2g3YzI1L0Yr?= =?utf-8?B?SGJEY0VueHg2Q3ptRUV5dEw4ZlZobTN3ak5UZHFvZ0NmZzJ4ejFKNitkY09w?= =?utf-8?B?UVFFWXN5aVR3TFZEWXRJUU1yNC9UVFZMdkFsSDVVUVd6ZFlzMVJLaGp3U25I?= =?utf-8?B?dmpFbi81ZmQ5TGNZYUMzcjhqQnZaY1RmZ3hDSTQvWk8zMGw1S2dMd3hzNFpx?= =?utf-8?B?dThFWExwK09sdS9mLzg5endTb2ZYVTFIcTRSYVJzTFJ6MnE3OSt0VndzdWh3?= =?utf-8?Q?YcxZDMioJBevefeJ4q8hiWSld?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR18MB4368.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 856f70c8-4145-41a7-fc9c-08db0a8e1eb8 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Feb 2023 11:09:31.9662 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qPmlczwXT+Aje69yaKvKOemmFIDN3G2RNFXCA03FQ6aESK8tXCDf867nyJcvorbPUPuRWQM3NVKPWztN/JlJNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB3541 X-Proofpoint-ORIG-GUID: RUxcQWKZ_NQLPxSYLUzphQrFL4I5Svqi X-Proofpoint-GUID: RUxcQWKZ_NQLPxSYLUzphQrFL4I5Svqi X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-09_08,2023-02-08_02,2022-06-22_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgRGF2aWQsIA0KDQpUaGFua3MgZm9yIHJldmlldy4gQ29tbWVudHMgaW5saW5lLiANCg0KPi0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogRGF2aWQgTWFyY2hhbmQgPGRhdmlkLm1h cmNoYW5kQHJlZGhhdC5jb20+DQo+U2VudDogTW9uZGF5LCBGZWJydWFyeSA2LCAyMDIzIDEyOjAz IFBNDQo+VG86IFRvbWFzeiBEdXN6eW5za2kgPHRkdXN6eW5za2lAbWFydmVsbC5jb20+DQo+Q2M6 IGRldkBkcGRrLm9yZzsgVGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0Pjsgcm9y ZXR6bGFAbGludXgubWljcm9zb2Z0LmNvbTsNCj5SdWlmZW5nLldhbmdAYXJtLmNvbTsgYnJ1Y2Uu cmljaGFyZHNvbkBpbnRlbC5jb207IEplcmluIEphY29iIEtvbGxhbnVra2FyYW4gPGplcmluakBt YXJ2ZWxsLmNvbT47DQo+bWF0dGlhcy5yb25uYmxvbUBlcmljc3Nvbi5jb207IG1iQHNtYXJ0c2hh cmVzeXN0ZW1zLmNvbTsgemhvdW1pbkBsb29uZ3Nvbi5jbg0KPlN1YmplY3Q6IFtFWFRdIFJlOiBb UEFUQ0ggdjkgMS80XSBsaWI6IGFkZCBnZW5lcmljIHN1cHBvcnQgZm9yIHJlYWRpbmcgUE1VIGV2 ZW50cw0KPg0KPkV4dGVybmFsIEVtYWlsDQo+DQo+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPkhlbGxvLA0KPg0K Pk9uIFRodSwgRmViIDIsIDIwMjMgYXQgMTo1MCBQTSBUb21hc3ogRHVzenluc2tpIDx0ZHVzenlu c2tpQG1hcnZlbGwuY29tPiB3cm90ZToNCj4+DQo+PiBBZGQgc3VwcG9ydCBmb3IgcHJvZ3JhbW1p bmcgUE1VIGNvdW50ZXJzIGFuZCByZWFkaW5nIHRoZWlyIHZhbHVlcyBpbg0KPj4gcnVudGltZSBi eXBhc3Npbmcga2VybmVsIGNvbXBsZXRlbHkuDQo+Pg0KPj4gVGhpcyBpcyBlc3BlY2lhbGx5IHVz ZWZ1bCBpbiBjYXNlcyB3aGVyZSBDUFUgY29yZXMgYXJlIGlzb2xhdGVkDQo+PiAobm9oel9mdWxs KSBpLmUgcnVuIGRlZGljYXRlZCB0YXNrcy4gSW4gc3VjaCBjYXNlcyBvbmUgY2Fubm90IHVzZQ0K Pj4gc3RhbmRhcmQgcGVyZiB1dGlsaXR5IHdpdGhvdXQgc2FjcmlmaWNpbmcgbGF0ZW5jeSBhbmQg cGVyZm9ybWFuY2UuDQo+DQo+Rm9yIG15IHVuZGVyc3RhbmRpbmcsIHdoYXQgT1MgY2FwYWJpbGl0 eS9wZXJtaXNzaW9uIGFyZSByZXF1aXJlZCB0byB1c2UgdGhpcyBsaWJyYXJ5Pw0KPg0KDQpPbiB4 ODYgaXQgc3VmZmljaWVudCBmb3Igc2VsZi1tb25pdG9yaW5nIHRvIGhhdmUga2VybmVsIGJ1aWx0 IHdpdGggcGVyZiBldmVudHMgZW5hYmxlZA0KYW5kIC9wcm9jL3N5cy9rZXJuZWwvcGVyZl9ldmVu dF9wYXJhbm9pZCBrbm9iIHNob3VsZCBiZSBzZXQgdG8gMiwgd2hpY2gNCnNob3VsZCBiZSBhIGRl ZmF1bHQgdmFsdWUgYW55d2F5LCB1bmxlc3MgY2hhbmdlZCBieSBzb21lIHNjcmlwdHMuIA0KDQpP biBBUk02NCB5b3UgbmVlZCB0byBhZGRpdGlvbmFsbHkgc2V0IC9wcm9jL3N5cy9rZXJuZWwvcGVy Zl91c2VyX2FjY2VzcyB0byBieXBhc3MNCmtlcm5lbCB3aGVuIGFjY2Vzc2luZyBodyBjb3VudGVy cy4gDQoNCj4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBUb21hc3ogRHVzenluc2tpIDx0ZHVzenlu c2tpQG1hcnZlbGwuY29tPg0KPj4gQWNrZWQtYnk6IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNo YXJlc3lzdGVtcy5jb20+DQo+PiAtLS0NCj4+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNSArDQo+PiAgYXBwL3Rlc3QvbWVzb24uYnVpbGQgICAgICAgICAgICAg ICAgICAgfCAgIDEgKw0KPj4gIGFwcC90ZXN0L3Rlc3RfcG11LmMgICAgICAgICAgICAgICAgICAg IHwgIDU1ICsrKw0KPj4gIGRvYy9hcGkvZG94eS1hcGktaW5kZXgubWQgICAgICAgICAgICAgIHwg ICAzICstDQo+PiAgZG9jL2FwaS9kb3h5LWFwaS5jb25mLmluICAgICAgICAgICAgICAgfCAgIDEg Kw0KPj4gIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9wcm9maWxlX2FwcC5yc3QgIHwgICA4ICsNCj4+ ICBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIzXzAzLnJzdCB8ICAgOSArDQo+PiAgbGli L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPj4gIGxpYi9wbXUv bWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgIHwgIDEzICsNCj4+ICBsaWIvcG11L3BtdV9w cml2YXRlLmggICAgICAgICAgICAgICAgICB8ICAyOSArKw0KPj4gIGxpYi9wbXUvcnRlX3BtdS5j ICAgICAgICAgICAgICAgICAgICAgIHwgNDY0ICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ ICBsaWIvcG11L3J0ZV9wbXUuaCAgICAgICAgICAgICAgICAgICAgICB8IDIwNSArKysrKysrKysr Kw0KPj4gIGxpYi9wbXUvdmVyc2lvbi5tYXAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsrDQo+ PiAgMTMgZmlsZXMgY2hhbmdlZCwgODEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkgIGNy ZWF0ZSBtb2RlDQo+PiAxMDA2NDQgYXBwL3Rlc3QvdGVzdF9wbXUuYyAgY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYi9wbXUvbWVzb24uYnVpbGQNCj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcG11L3Bt dV9wcml2YXRlLmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPj4gbGliL3BtdS9ydGVfcG11LmMgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcG11L3J0ZV9wbXUuaCAgY3JlYXRlIG1vZGUNCj4+IDEwMDY0 NCBsaWIvcG11L3ZlcnNpb24ubWFwDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIv TUFJTlRBSU5FUlMgaW5kZXggOWEwZjQxNmQyZS4uOWYxM2VhZmQ5NQ0KPj4gMTAwNjQ0DQo+PiAt LS0gYS9NQUlOVEFJTkVSUw0KPj4gKysrIGIvTUFJTlRBSU5FUlMNCj4+IEBAIC0xNjk3LDYgKzE2 OTcsMTEgQEAgTTogTml0aGluIERhYmlscHVyYW0gPG5kYWJpbHB1cmFtQG1hcnZlbGwuY29tPg0K Pj4gIE06IFBhdmFuIE5pa2hpbGVzaCA8cGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tPg0KPj4gIEY6 IGxpYi9ub2RlLw0KPj4NCj4+ICtQTVUgLSBFWFBFUklNRU5UQUwNCj4+ICtNOiBUb21hc3ogRHVz enluc2tpIDx0ZHVzenluc2tpQG1hcnZlbGwuY29tPg0KPj4gK0Y6IGxpYi9wbXUvDQo+PiArRjog YXBwL3Rlc3QvdGVzdF9wbXUqDQo+PiArDQo+Pg0KPj4gIFRlc3QgQXBwbGljYXRpb25zDQo+PiAg LS0tLS0tLS0tLS0tLS0tLS0NCj4+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC9tZXNvbi5idWlsZCBi L2FwcC90ZXN0L21lc29uLmJ1aWxkIGluZGV4DQo+PiBmMzRkMTllM2MzLi43YjZiNjlkY2YxIDEw MDY0NA0KPj4gLS0tIGEvYXBwL3Rlc3QvbWVzb24uYnVpbGQNCj4+ICsrKyBiL2FwcC90ZXN0L21l c29uLmJ1aWxkDQo+PiBAQCAtMTExLDYgKzExMSw3IEBAIHRlc3Rfc291cmNlcyA9IGZpbGVzKA0K Pj4gICAgICAgICAgJ3Rlc3RfcmVjaXByb2NhbF9kaXZpc2lvbl9wZXJmLmMnLA0KPj4gICAgICAg ICAgJ3Rlc3RfcmVkLmMnLA0KPj4gICAgICAgICAgJ3Rlc3RfcGllLmMnLA0KPj4gKyAgICAgICAg J3Rlc3RfcG11LmMnLA0KPj4gICAgICAgICAgJ3Rlc3RfcmVvcmRlci5jJywNCj4+ICAgICAgICAg ICd0ZXN0X3JpYi5jJywNCj4+ICAgICAgICAgICd0ZXN0X3JpYjYuYycsDQo+DQo+VGhpcyBjb2Rl IGFkZHMgYSBuZXcgdGVzdC4NCj5UaGlzIHRlc3Qgc2hvdWxkIGJlIGFkZGVkIHRvIGFuIGV4aXN0 aW5nIHRlc3RzdWl0ZSwgbGlrZSBmYXN0LXRlc3RzIGV0Yy4uLg0KPg0KPg0KPj4gZGlmZiAtLWdp dCBhL2FwcC90ZXN0L3Rlc3RfcG11LmMgYi9hcHAvdGVzdC90ZXN0X3BtdS5jIG5ldyBmaWxlIG1v ZGUNCj4+IDEwMDY0NCBpbmRleCAwMDAwMDAwMDAwLi5hOWJmYjFhNDI3DQo+PiAtLS0gL2Rldi9u dWxsDQo+PiArKysgYi9hcHAvdGVzdC90ZXN0X3BtdS5jDQo+PiBAQCAtMCwwICsxLDU1IEBADQo+ PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPj4gKyAqIENvcHly aWdodChDKSAyMDIzIE1hcnZlbGwgSW50ZXJuYXRpb25hbCBMdGQuDQo+PiArICovDQo+PiArDQo+ PiArI2luY2x1ZGUgInRlc3QuaCINCj4+ICsNCj4+ICsjaWZuZGVmIFJURV9FWEVDX0VOVl9MSU5V WA0KPj4gKw0KPj4gK3N0YXRpYyBpbnQNCj4+ICt0ZXN0X3BtdSh2b2lkKQ0KPj4gK3sNCj4+ICsg ICAgICAgcHJpbnRmKCJwbXVfYXV0b3Rlc3Qgb25seSBzdXBwb3J0ZWQgb24gTGludXgsIHNraXBw aW5nIHRlc3RcbiIpOw0KPj4gKyAgICAgICByZXR1cm4gVEVTVF9TS0lQUEVEOw0KPj4gK30NCj4+ ICsNCj4+ICsjZWxzZQ0KPj4gKw0KPj4gKyNpbmNsdWRlIDxydGVfcG11Lmg+DQo+PiArDQo+PiAr c3RhdGljIGludA0KPj4gK3Rlc3RfcG11X3JlYWQodm9pZCkNCj4+ICt7DQo+PiArICAgICAgIGlu dCB0cmllcyA9IDEwLCBldmVudCA9IC0xOw0KPj4gKyAgICAgICB1aW50NjRfdCB2YWwgPSAwOw0K Pj4gKw0KPj4gKyAgICAgICBpZiAocnRlX3BtdV9pbml0KCkgPCAwKQ0KPj4gKyAgICAgICAgICAg ICAgIHJldHVybiBURVNUX0ZBSUxFRDsNCj4+ICsNCj4+ICsgICAgICAgd2hpbGUgKHRyaWVzLS0p DQo+PiArICAgICAgICAgICAgICAgdmFsICs9IHJ0ZV9wbXVfcmVhZChldmVudCk7DQo+PiArDQo+ PiArICAgICAgIHJ0ZV9wbXVfZmluaSgpOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gdmFsID8g VEVTVF9TVUNDRVNTIDogVEVTVF9GQUlMRUQ7IH0NCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IHVu aXRfdGVzdF9zdWl0ZSBwbXVfdGVzdHMgPSB7DQo+PiArICAgICAgIC5zdWl0ZV9uYW1lID0gInBt dSBhdXRvdGVzdCIsDQo+PiArICAgICAgIC5zZXR1cCA9IE5VTEwsDQo+PiArICAgICAgIC50ZWFy ZG93biA9IE5VTEwsDQo+PiArICAgICAgIC51bml0X3Rlc3RfY2FzZXMgPSB7DQo+PiArICAgICAg ICAgICAgICAgVEVTVF9DQVNFKHRlc3RfcG11X3JlYWQpLA0KPj4gKyAgICAgICAgICAgICAgIFRF U1RfQ0FTRVNfRU5EKCkNCj4+ICsgICAgICAgfQ0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGlu dA0KPj4gK3Rlc3RfcG11KHZvaWQpDQo+PiArew0KPj4gKyAgICAgICByZXR1cm4gdW5pdF90ZXN0 X3N1aXRlX3J1bm5lcigmcG11X3Rlc3RzKTsNCj4+ICt9DQo+PiArDQo+PiArI2VuZGlmIC8qIFJU RV9FWEVDX0VOVl9MSU5VWCAqLw0KPj4gKw0KPj4gK1JFR0lTVEVSX1RFU1RfQ09NTUFORChwbXVf YXV0b3Rlc3QsIHRlc3RfcG11KTsNCj4+IGRpZmYgLS1naXQgYS9kb2MvYXBpL2RveHktYXBpLWlu ZGV4Lm1kIGIvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPj4gaW5kZXggZGU0ODhjN2FiZi4u N2YxOTM4ZjkyZiAxMDA2NDQNCj4+IC0tLSBhL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQNCj4+ ICsrKyBiL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQNCj4+IEBAIC0yMjIsNyArMjIyLDggQEAg VGhlIHB1YmxpYyBBUEkgaGVhZGVycyBhcmUgZ3JvdXBlZCBieSB0b3BpY3M6DQo+PiAgICBbbG9n XShAcmVmIHJ0ZV9sb2cuaCksDQo+PiAgICBbZXJybm9dKEByZWYgcnRlX2Vycm5vLmgpLA0KPj4g ICAgW3RyYWNlXShAcmVmIHJ0ZV90cmFjZS5oKSwNCj4+IC0gIFt0cmFjZV9wb2ludF0oQHJlZiBy dGVfdHJhY2VfcG9pbnQuaCkNCj4+ICsgIFt0cmFjZV9wb2ludF0oQHJlZiBydGVfdHJhY2VfcG9p bnQuaCksICBbcG11XShAcmVmIHJ0ZV9wbXUuaCkNCj4+DQo+PiAgLSAqKm1pc2MqKjoNCj4+ICAg IFtFQUwgY29uZmlnXShAcmVmIHJ0ZV9lYWwuaCksDQo+PiBkaWZmIC0tZ2l0IGEvZG9jL2FwaS9k b3h5LWFwaS5jb25mLmluIGIvZG9jL2FwaS9kb3h5LWFwaS5jb25mLmluIGluZGV4DQo+PiBmMDg4 NmMzYmQxLi45MjBlNjE1OTk2IDEwMDY0NA0KPj4gLS0tIGEvZG9jL2FwaS9kb3h5LWFwaS5jb25m LmluDQo+PiArKysgYi9kb2MvYXBpL2RveHktYXBpLmNvbmYuaW4NCj4+IEBAIC02Myw2ICs2Myw3 IEBAIElOUFVUICAgICAgICAgICAgICAgICAgID0gQFRPUERJUkAvZG9jL2FwaS9kb3h5LWFwaS1p bmRleC5tZCBcDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAVE9QRElSQC9saWIvcGNp IFwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9wZHVtcCBcDQo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAVE9QRElSQC9saWIvcGlwZWxpbmUgXA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgQFRPUERJUkAvbGliL3BtdSBcDQo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBAVE9QRElSQC9saWIvcG9ydCBcDQo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBAVE9QRElSQC9saWIvcG93ZXIgXA0KPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgQFRPUERJUkAvbGliL3Jhd2RldiBcIGRpZmYgLS1naXQNCj4+IGEvZG9jL2d1aWRl cy9wcm9nX2d1aWRlL3Byb2ZpbGVfYXBwLnJzdA0KPj4gYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUv cHJvZmlsZV9hcHAucnN0DQo+PiBpbmRleCAxNDI5MmQ0YzI1Li5hOGI1MDFmZTBjIDEwMDY0NA0K Pj4gLS0tIGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Byb2ZpbGVfYXBwLnJzdA0KPj4gKysrIGIv ZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Byb2ZpbGVfYXBwLnJzdA0KPj4gQEAgLTcsNiArNywxNCBA QCBQcm9maWxlIFlvdXIgQXBwbGljYXRpb24gIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMNCj4+IGRl c2NyaWJlIG1ldGhvZHMgb2YgcHJvZmlsaW5nIERQREsgYXBwbGljYXRpb25zIG9uICBkaWZmZXJl bnQNCj4+IGFyY2hpdGVjdHVyZXMuDQo+Pg0KPj4gK1BlcmZvcm1hbmNlIGNvdW50ZXIgYmFzZWQg cHJvZmlsaW5nDQo+PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ICsN Cj4+ICtNYWpvcml0eSBvZiBhcmNoaXRlY3R1cmVzIHN1cHBvcnQgc29tZSBzb3J0IGhhcmR3YXJl IG1lYXN1cmVtZW50IHVuaXQNCj4+ICt3aGljaCBwcm92aWRlcyBhIHNldCBvZiBwcm9ncmFtbWFi bGUgY291bnRlcnMgdGhhdCBtb25pdG9yIHNwZWNpZmljDQo+PiArZXZlbnRzLiBUaGVyZSBhcmUg ZGlmZmVyZW50IHRvb2xzIHdoaWNoIGNhbiBnYXRoZXIgdGhhdCBpbmZvcm1hdGlvbiwNCj4+ICtw ZXJmIGJlaW5nIGFuIGV4YW1wbGUgaGVyZS4gVGhvdWdoIGluIHNvbWUgc2NlbmFyaW9zLCBlZy4g d2hlbiBDUFUNCj4+ICtjb3JlcyBhcmUgaXNvbGF0ZWQgKG5vaHpfZnVsbCkgYW5kIHJ1biBkZWRp Y2F0ZWQgdGFza3MsIHVzaW5nIHBlcmYgaXMgbGVzcyB0aGFuIGlkZWFsLiBJbiBzdWNoDQo+Y2Fz ZXMgb25lIGNhbiByZWFkIHNwZWNpZmljIGV2ZW50cyBkaXJlY3RseSBmcm9tIGFwcGxpY2F0aW9u IHZpYSBgYHJ0ZV9wbXVfcmVhZCgpYGAuDQo+DQo+V2UgbmVlZCBhIGNvbW1vbiBkZWZpbml0aW9u IGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHdoYXQgUE1VIHN0YW5kcyBmb3IgYW5kIHVzZSBpdCBj b25zaXN0ZW50bHkuDQo+SSBhbSBub3Qgc3VyZSB0aGlzIGRvY3VtZW50YXRpb24gaXMgdGhlIGJl c3QgcGxhY2UsIGJ1dCBhdCBsZWFzdCwgSSdkIHByZWZlciB3ZSBnbyB3aXRoDQo+IlBlcmZvcm1h bmNlIE1vbml0b3JpbmcgVW5pdCIgYW5kIHN0aWNrIHRvIGl0Lg0KDQpGb3IgdGhlIHRpbWUgYmVp bmcgSSB0aGluayBpdCdzIGdvb2QgZW5vdWdoLiBGcmFua2x5IEkgZG9u4oCZdCBoYXZlIGJldHRl ciBpZGVhIHdoZXJlIHRvIHB1dCB0aGF0LiANCg0KPg0KPlBsdXMsIHRoaXMgYmxvY2sgaXMgYSBi aXQgaGFyZCB0byByZWFkIHRvbywgd2hhdCBkbyB5b3UgdGhpbmsgb2Y6DQo+DQo+IiIiDQo+QSBt YWpvcml0eSBvZiBhcmNoaXRlY3R1cmVzIHN1cHBvcnQgc29tZSBwZXJmb3JtYW5jZSBtb25pdG9y aW5nIHVuaXQgKFBNVSkuDQo+U3VjaCB1bml0IHByb3ZpZGVzIHByb2dyYW1tYWJsZSBjb3VudGVy cyB0aGF0IG1vbml0b3Igc3BlY2lmaWMgZXZlbnRzLg0KPg0KPkRpZmZlcmVudCB0b29scyBnYXRo ZXIgdGhhdCBpbmZvcm1hdGlvbiwgbGlrZSBmb3IgZXhhbXBsZSBwZXJmLg0KPkhvd2V2ZXIsIGlu IHNvbWUgc2NlbmFyaW9zIHdoZW4gQ1BVIGNvcmVzIGFyZSBpc29sYXRlZCAobm9oel9mdWxsKSBh bmQgcnVuIGRlZGljYXRlZCB0YXNrcywNCj5pbnRlcnJ1cHRpbmcgdGhvc2UgdGFza3Mgd2l0aCBw ZXJmIG1heSBiZSB1bmRlc2lyYWJsZS4NCj5JbiBzdWNoIGNhc2VzLCBhbiBhcHBsaWNhdGlvbiBj YW4gdXNlIHRoZSBQTVUgbGlicmFyeSB0byByZWFkIHN1Y2ggZXZlbnRzIHZpYSBgYHJ0ZV9wbXVf cmVhZCgpYGAuDQo+IiIiDQo+DQo+QW5kLCBhIGRvdWJsZSBuZXdsaW5lIGlzIHVzZWQgYmV0d2Vl biBzZWN0aW9ucyBpbiB0aGlzIGRvYy4NCj4NCj4NCg0KTm8gcHJvYmxlbS4gDQoNCj4+DQo+PiAg UHJvZmlsaW5nIG9uIHg4Ng0KPj4gIC0tLS0tLS0tLS0tLS0tLS0NCj4+IGRpZmYgLS1naXQgYS9k b2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIzXzAzLnJzdA0KPj4gYi9kb2MvZ3VpZGVzL3Jl bF9ub3Rlcy9yZWxlYXNlXzIzXzAzLnJzdA0KPj4gaW5kZXggNzNmNWQ5NGUxNC4uNzMzNTQxZDU2 YyAxMDA2NDQNCj4+IC0tLSBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjNfMDMucnN0 DQo+PiArKysgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIzXzAzLnJzdA0KPj4gQEAg LTU1LDEwICs1NSwxOSBAQCBOZXcgRmVhdHVyZXMNCj4+ICAgICAgIEFsc28sIG1ha2Ugc3VyZSB0 byBzdGFydCB0aGUgYWN0dWFsIHRleHQgYXQgdGhlIG1hcmdpbi4NCj4+ICAgICAgID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4+DQo+PiAr KiAqKkFkZGVkIFBNVSBsaWJyYXJ5LioqDQo+PiArDQo+PiArICBBZGRlZCBhIG5ldyBQTVUgKHBl cmZvcm1hbmNlIG1lYXN1cmVtZW50IHVuaXQpIGxpYnJhcnkgd2hpY2ggYWxsb3dzDQo+PiArIGFw cGxpY2F0aW9ucw0KPg0KPlBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdC4NCj4NCj4+ICsgIHRv IHBlcmZvcm0gc2VsZiBtb25pdG9yaW5nIGFjdGl2aXRpZXMgd2l0aG91dCBkZXBlbmRpbmcgb24g ZXh0ZXJuYWwgdXRpbGl0aWVzIGxpa2UgcGVyZi4NCj4NCj4+ICsgIEFmdGVyIGludGVncmF0aW9u IHdpdGggOmRvYzpgLi4vcHJvZ19ndWlkZS90cmFjZV9saWJgIGRhdGEgZ2F0aGVyZWQNCj4+ICsg ZnJvbSBoYXJkd2FyZSBjb3VudGVycyAgY2FuIGJlIHN0b3JlZCBpbiBDVEYgZm9ybWF0IGZvciBm dXJ0aGVyIGFuYWx5c2lzLg0KPg0KPkFmYWl1LCB0aGlzIGludGVncmF0aW9uIGNvbWVzIGxhdGVy IGluIHRoZSBzZXJpZXMuDQo+VGhpcyBwYXJ0IG9mIHRoZSBSTiB1cGRhdGUgc2hvdWxkIGdvIHdp dGggaXQuDQo+DQo+DQo+PiArDQo+PiAgKiAqKlVwZGF0ZWQgQU1EIGF4Z2JlIGRyaXZlci4qKg0K Pj4NCj4+ICAgICogQWRkZWQgbXVsdGktcHJvY2VzcyBzdXBwb3J0Lg0KPj4NCj4+ICsqICoqQWRk ZWQgbXVsdGktcHJvY2VzcyBzdXBwb3J0IGZvciBheGdiZSBQTUQuKioNCj4+ICsNCj4+ICAqICoq VXBkYXRlZCBDb3JpZ2luZSBuZnAgZHJpdmVyLioqDQo+Pg0KPg0KPlVucmVsYXRlZCByZWJhc2Ug ZGFtYWdlLi4gcGxlYXNlIHBheSBhdHRlbnRpb24gdG8gc3VjaCBkZXRhaWwuDQo+DQoNClRoYW5r cywgdGhhdCBjcmVlcGVkIGluIHNvbWVob3cuIA0KDQo+DQo+PiAgICAqIEFkZGVkIHN1cHBvcnQg Zm9yIG1ldGVyIG9wdGlvbnMuDQo+PiBkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGli L21lc29uLmJ1aWxkIGluZGV4DQo+PiBhOTBmZWUzMWI3Li43MTMyMTMxYjVjIDEwMDY0NA0KPj4g LS0tIGEvbGliL21lc29uLmJ1aWxkDQo+PiArKysgYi9saWIvbWVzb24uYnVpbGQNCj4+IEBAIC0x MSw2ICsxMSw3IEBADQo+PiAgbGlicmFyaWVzID0gWw0KPj4gICAgICAgICAgJ2t2YXJncycsICMg ZWFsIGRlcGVuZHMgb24ga3ZhcmdzDQo+PiAgICAgICAgICAndGVsZW1ldHJ5JywgIyBiYXNpYyBp bmZvIHF1ZXJ5aW5nDQo+PiArICAgICAgICAncG11JywNCj4+ICAgICAgICAgICdlYWwnLCAjIGV2 ZXJ5dGhpbmcgZGVwZW5kcyBvbiBlYWwNCj4+ICAgICAgICAgICdyaW5nJywNCj4+ICAgICAgICAg ICdyY3UnLCAjIHJjdSBkZXBlbmRzIG9uIHJpbmcNCj4+IGRpZmYgLS1naXQgYS9saWIvcG11L21l c29uLmJ1aWxkIGIvbGliL3BtdS9tZXNvbi5idWlsZCBuZXcgZmlsZSBtb2RlDQo+PiAxMDA2NDQg aW5kZXggMDAwMDAwMDAwMC4uYTQxNjBiNDk0ZQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIv bGliL3BtdS9tZXNvbi5idWlsZA0KPj4gQEAgLTAsMCArMSwxMyBAQA0KPj4gKyMgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAjIENvcHlyaWdodChDKSAyMDIzIE1hcnZlbGwN Cj4+ICtJbnRlcm5hdGlvbmFsIEx0ZC4NCj4+ICsNCj4+ICtpZiBub3QgaXNfbGludXgNCj4+ICsg ICAgYnVpbGQgPSBmYWxzZQ0KPj4gKyAgICByZWFzb24gPSAnb25seSBzdXBwb3J0ZWQgb24gTGlu dXgnDQo+PiArICAgIHN1YmRpcl9kb25lKCkNCj4+ICtlbmRpZg0KPj4gKw0KPj4gK2luY2x1ZGVz ID0gW2dsb2JhbF9pbmNdDQo+PiArDQo+PiArc291cmNlcyA9IGZpbGVzKCdydGVfcG11LmMnKQ0K Pj4gK2hlYWRlcnMgPSBmaWxlcygncnRlX3BtdS5oJykNCj4+IGRpZmYgLS1naXQgYS9saWIvcG11 L3BtdV9wcml2YXRlLmggYi9saWIvcG11L3BtdV9wcml2YXRlLmggbmV3IGZpbGUNCj4+IG1vZGUg MTAwNjQ0IGluZGV4IDAwMDAwMDAwMDAuLjg0OTU0OWIxMjUNCj4+IC0tLSAvZGV2L251bGwNCj4+ ICsrKyBiL2xpYi9wbXUvcG11X3ByaXZhdGUuaA0KPj4gQEAgLTAsMCArMSwyOSBAQA0KPj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4+ICsgKiBDb3B5cmlnaHQo YykgMjAyMyBNYXJ2ZWxsDQo+PiArICovDQo+PiArDQo+PiArI2lmbmRlZiBfUE1VX1BSSVZBVEVf SF8NCj4+ICsjZGVmaW5lIF9QTVVfUFJJVkFURV9IXw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEFy Y2hpdGVjdHVyZSBzcGVjaWZpYyBQTVUgaW5pdCBjYWxsYmFjay4NCj4+ICsgKg0KPj4gKyAqIEBy ZXR1cm4NCj4+ICsgKiAgIDAgaW4gY2FzZSBvZiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBvdGhl cndpc2UuDQo+PiArICovDQo+PiAraW50DQo+PiArcG11X2FyY2hfaW5pdCh2b2lkKTsNCj4+ICsN Cj4+ICsvKioNCj4+ICsgKiBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgUE1VIGNsZWFudXAgY2FsbGJh Y2suDQo+PiArICovDQo+PiArdm9pZA0KPj4gK3BtdV9hcmNoX2Zpbmkodm9pZCk7DQo+PiArDQo+ PiArLyoqDQo+PiArICogQXBwbHkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHNldHRpbmdzIHRvIGNv bmZpZyBiZWZvcmUgcGFzc2luZyBpdCB0byBzeXNjYWxsLg0KPg0KPlBsZWFzZSBkZXNjcmliZSBj b25maWdbXS4NCj4NCg0KV2VsbCwgdGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IGVhY2ggYW5kIGV2 ZXJ5IGFyY2ggbWF5IGV4cGVjdCBkaWZmZXJlbnQgY29uZmlnIHNvIA0KYW55b25lIGFkZGluZyBu ZXcgc3R1ZmYgd291bGQgbmVlZCB0byBjb25zdWx0IGtlcm5lbCBzb3VyY2VzIGFueXdheS4NCg0K V2hhdCBraW5kIG9mIGRvY3VtZW50YXRpb24gd291bGQgeW91IGxpa2UgdG8gc2VlIGhlcmU/DQoN Cj4NCj4+ICsgKi8NCj4+ICt2b2lkDQo+PiArcG11X2FyY2hfZml4dXBfY29uZmlnKHVpbnQ2NF90 IGNvbmZpZ1szXSk7DQo+PiArDQo+PiArI2VuZGlmIC8qIF9QTVVfUFJJVkFURV9IXyAqLw0KPj4g ZGlmZiAtLWdpdCBhL2xpYi9wbXUvcnRlX3BtdS5jIGIvbGliL3BtdS9ydGVfcG11LmMgbmV3IGZp bGUgbW9kZQ0KPj4gMTAwNjQ0IGluZGV4IDAwMDAwMDAwMDAuLjRjZjMxNjExNTUNCj4+IC0tLSAv ZGV2L251bGwNCj4+ICsrKyBiL2xpYi9wbXUvcnRlX3BtdS5jDQo+PiBAQCAtMCwwICsxLDQ2NCBA QA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4+ICsgKiBD b3B5cmlnaHQoQykgMjAyMyBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLg0KPj4gKyAqLw0KPj4g Kw0KPj4gKyNpbmNsdWRlIDxjdHlwZS5oPg0KPj4gKyNpbmNsdWRlIDxkaXJlbnQuaD4NCj4+ICsj aW5jbHVkZSA8ZXJybm8uaD4NCj4+ICsjaW5jbHVkZSA8cmVnZXguaD4NCj4+ICsjaW5jbHVkZSA8 c3RkbGliLmg+DQo+PiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPj4gKyNpbmNsdWRlIDxzeXMvaW9j dGwuaD4NCj4+ICsjaW5jbHVkZSA8c3lzL21tYW4uaD4NCj4+ICsjaW5jbHVkZSA8c3lzL3F1ZXVl Lmg+DQo+PiArI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+DQo+PiArI2luY2x1ZGUgPHVuaXN0ZC5o Pg0KPg0KPkFza2luZyB0byBiZSBzdXJlIGJlY2F1c2UgSSBkaWQgbm90IGNoZWNrOg0KPmRvIHdl IG5lZWQgYWxsIHRob3NlIGluY2x1ZGVzLCBvciBpcyB0aGlzIGp1c3QgY29weS9wYXN0ZWQgZnJv bSBzb21ld2hlcmUgZWxzZT8NCj4NCg0KTm8sIGl0IHdhcyBub3QgY29weS9wYXN0ZWQuIEVhY2gg aGVhZGVyIGV4cG9ydHMgc29tZXRoaW5nIHVzZWQgaW4gdGhpcyBmaWxlLiBJJ2xsDQpkb3VibGUg Y2hlY2sgaWYgYWxsIHN0aWxsIHJlcXVpcmVkLg0KDQo+DQo+PiArDQo+PiArI2luY2x1ZGUgPHJ0 ZV9hdG9taWMuaD4NCj4+ICsjaW5jbHVkZSA8cnRlX3Blcl9sY29yZS5oPg0KPj4gKyNpbmNsdWRl IDxydGVfcG11Lmg+DQo+PiArI2luY2x1ZGUgPHJ0ZV9zcGlubG9jay5oPg0KPj4gKyNpbmNsdWRl IDxydGVfdGFpbHEuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAicG11X3ByaXZhdGUuaCINCj4+ICsN Cj4+ICsjZGVmaW5lIEVWRU5UX1NPVVJDRV9ERVZJQ0VTX1BBVEggIi9zeXMvYnVzL2V2ZW50X3Nv dXJjZS9kZXZpY2VzIg0KPj4gKw0KPj4gKyNpZm5kZWYgR0VOTUFTS19VTEwNCj4NCj5UaGlzIG1h Y3JvIGlzIGNvcHkvcGFzdGVkIGFsbCBvdmVyIHRoZSBkcGRrIHRyZWUuLi4NCj5UaGlzIGlzIHdv cnRoIGEgY2xlYW51cCBsYXRlciwgcmVhZDogSSBhbSBub3QgYXNraW5nIGZvciBpdCBhcyBwYXJ0 IG9mIHRoaXMgc2VyaWVzLg0KPg0KPkhvd2V2ZXIsIGhlcmUsIHRoZXJlIGlzIG5vIG5lZWQgZm9y IHByb3RlY3RpbmcgYWdhaW5zdCBpdHMgZGVmaW5pdGlvbi4NCj4NCg0KT2theS4gDQoNCj4NCj4+ ICsjZGVmaW5lIEdFTk1BU0tfVUxMKGgsIGwpICgofjBVTEwgLSAoMVVMTCA8PCAobCkpICsgMSkg JiAofjBVTEwgPj4NCj4+ICsoKDY0IC0gMSAtIChoKSkpKSkgI2VuZGlmDQo+PiArDQo+PiArI2lm bmRlZiBGSUVMRF9QUkVQDQo+PiArI2RlZmluZSBGSUVMRF9QUkVQKG0sIHYpICgoKHVpbnQ2NF90 KSh2KSA8PCAoX19idWlsdGluX2Zmc2xsKG0pIC0gMSkpDQo+PiArJiAobSkpICNlbmRpZg0KPg0K PklkZW0uDQo+DQo+DQo+PiArDQo+PiArUlRFX0RFRklORV9QRVJfTENPUkUoc3RydWN0IHJ0ZV9w bXVfZXZlbnRfZ3JvdXAsIF9ldmVudF9ncm91cCk7DQo+PiArc3RydWN0IHJ0ZV9wbXUgcnRlX3Bt dTsNCj4+ICsNCj4+ICsvKg0KPj4gKyAqIEZvbGxvd2luZyBfX3J0ZV93ZWFrIGZ1bmN0aW9ucyBw cm92aWRlIGRlZmF1bHQgbm8tb3AuDQo+PiArQXJjaGl0ZWN0dXJlcyBzaG91bGQgb3ZlcnJpZGUg dGhlbSBpZg0KPj4gKyAqIG5lY2Vzc2FyeS4NCj4+ICsgKi8NCj4NCj5QcmVmZXIgdXNpbmcgcGVy IGFyY2hpdGVjdHVyZXMgI2lmZGVmLg0KPkl0IGlzIGVhc2llciB0byBnZXQgYSBzaW1wbGUgbGlu ayBlcnJvciB0aGFuIHVzZSB3ZWFrIHN5bWJvbHMgdGhhdCBtYWtlIGl0IGxvb2sgbGlrZSBpdCBj b3VsZCB3b3JrDQo+b24gc29tZSBhcmNoLg0KPg0KDQpSYXRpb25hbGUgZm9yIHRoYXQgd2FzIGFj dHVhbGx5IHRvIG5vdCBicmVhayBhbnl0aGluZy4gVGhhdCBtZWFucyB5b3UgY2FuIGNvbXBpbGUg dGhhdCBjb2RlDQpmb3IgZXZlcnkgYXJjaCwgZXhjZXB0IG9uIHVuc3VwcG9ydGVkIG9uZXMgeW91 J2xsIHNlZSBzdHJlYW0gb2YgemVyb3MgaW5zaWRlIGEgdHJhY2UgZmlsZS4gDQoNCj4NCj4+ICsN Cj4+ICtpbnQNCj4+ICtfX3J0ZV93ZWFrIHBtdV9hcmNoX2luaXQodm9pZCkNCj4+ICt7DQo+PiAr ICAgICAgIHJldHVybiAwOw0KPg0KPkFkZCBhIGRlYnVnIGxvZyBtZXNzYWdlIGluZGljYXRpbmcg dGhhdCB0aGlzIGFyY2ggZG9lcyBub3Qgc3VwcG9ydCBQTVUuDQo+DQoNClByb3ZlIG1lIHdyb25n IGJ1dCBsb2dzIGFyZSBwYXJ0IG9mIGVhbCBhbmQgdW5sZXNzIHRoZXkgYXJlIG1vdmVkIHRvIGEg c2VwYXJhdGUgDQpsaWJyYXJ5IHRoaXMgbGliIHNob3VsZG4ndCBjYWxsIHRoZXNlIEFQSXMuIE90 aGVyd2lzZSB3ZSdsbCBpbnRyb2R1Y2UgZGVwZW5kZW5jeQ0Kb24gZWFsIHdoaWNoIHdlIHdhbnRl ZCB0byBhdm9pZCBpbiB0aGUgZmlyc3QgcGxhY2UuIA0KDQo+DQo+PiArfQ0KPj4gKw0KPj4gK3Zv aWQNCj4+ICtfX3J0ZV93ZWFrIHBtdV9hcmNoX2Zpbmkodm9pZCkNCj4+ICt7DQo+PiArfQ0KPj4g Kw0KPj4gK3ZvaWQNCj4+ICtfX3J0ZV93ZWFrIHBtdV9hcmNoX2ZpeHVwX2NvbmZpZyh1aW50NjRf dCBfX3J0ZV91bnVzZWQgY29uZmlnWzNdKSB7IH0NCj4+ICsNCj4+ICtzdGF0aWMgaW50DQo+PiAr Z2V0X3Rlcm1fZm9ybWF0KGNvbnN0IGNoYXIgKm5hbWUsIGludCAqbnVtLCB1aW50NjRfdCAqbWFz aykgew0KPj4gKyAgICAgICBjaGFyICpjb25maWcgPSBOVUxMOw0KPj4gKyAgICAgICBjaGFyIHBh dGhbUEFUSF9NQVhdOw0KPj4gKyAgICAgICBpbnQgaGlnaCwgbG93LCByZXQ7DQo+PiArICAgICAg IEZJTEUgKmZwOw0KPg0KPlJldmVyc2UgeG1hcyB0cmVlIHdoZW4gcG9zc2libGUuDQo+DQoNCk9r YXkuIA0KDQo+DQo+PiArDQo+PiArICAgICAgIC8qIHF1aWVzY2UgLVdtYXliZS11bmluaXRpYWxp emVkIHdhcm5pbmcgKi8NCj4NCj5UaGlzIGNvbW1lbnQganVzdCBzZWVtcyB0byBiZSBhIG5vdGUg Zm9yIHlvdXJzZWxmLg0KPldoYXQgd2FzIHRoZSBpc3N1ZSBleGFjdGx5Pw0KPg0KDQpHZW5lcmFs bHkgc3BlYWtpbmcsIGNvbXBpbGVyIHRoaW5rcyB0aGF0IGZ1bmN0aW9uIGNhbGxpbmcgdGhpcyBm dW5jdGlvbiBtYXkgdXNlDQonbnVtJyBldmVuIHRob3VnaCBjYWxsZWUgcmV0dXJuZWQgYW4gZXJy b3IuIA0KDQpbMS8xOThdIENvbXBpbGluZyBDIG9iamVjdCBsaWIvbGlicnRlX3BtdS5hLnAvcG11 X3J0ZV9wbXUuYy5vDQpJbiBmdW5jdGlvbiBfcGFyc2VfZXZlbnRfLA0KICAgIGlubGluZWQgZnJv bSBfZ2V0X2V2ZW50X2NvbmZpZ18gYXQgLi4vbGliL3BtdS9ydGVfcG11LmM6MTU3Ojk6DQouLi9s aWIvcG11L3J0ZV9wbXUuYzoxMjk6MjM6IHdhcm5pbmc6IF9udW1fIG1heSBiZSB1c2VkIHVuaW5p dGlhbGl6ZWQgWy1XbWF5YmUtdW5pbml0aWFsaXplZF0NCiAgMTI5IHwgICAgICAgICAgICAgICAg IGNvbmZpZ1tudW1dIHw9IEZJRUxEX1BSRVAobWFzaywgdmFsKTsNCiAgICAgIHwgICAgICAgICAg ICAgICAgIH5+fn5+fl5+fn5+DQouLi9saWIvcG11L3J0ZV9wbXUuYzogSW4gZnVuY3Rpb24gX2dl dF9ldmVudF9jb25maWdfOg0KLi4vbGliL3BtdS9ydGVfcG11LmM6MTA3OjEzOiBub3RlOiBfbnVt XyB3YXMgZGVjbGFyZWQgaGVyZQ0KICAxMDcgfCAgICAgICAgIGludCBudW0sIHJldCwgdmFsOw0K ICAgICAgfA0KDQo+DQo+PiArICAgICAgICpudW0gPSAwOw0KPj4gKyAgICAgICAqbWFzayA9IDA7 DQo+PiArDQo+PiArICAgICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgRVZFTlRfU09V UkNFX0RFVklDRVNfUEFUSCAiLyVzL2Zvcm1hdC8lcyIsIHJ0ZV9wbXUubmFtZSwNCj5uYW1lKTsN Cj4+ICsgICAgICAgZnAgPSBmb3BlbihwYXRoLCAiciIpOw0KPj4gKyAgICAgICBpZiAoZnAgPT0g TlVMTCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLWVycm5vOw0KPj4gKw0KPj4gKyAgICAg ICBlcnJubyA9IDA7DQo+PiArICAgICAgIHJldCA9IGZzY2FuZihmcCwgIiVtW146XTolZC0lZCIs ICZjb25maWcsICZsb3csICZoaWdoKTsNCj4+ICsgICAgICAgaWYgKHJldCA8IDIpIHsNCj4+ICsg ICAgICAgICAgICAgICByZXQgPSAtRU5PREFUQTsNCj4+ICsgICAgICAgICAgICAgICBnb3RvIG91 dDsNCj4+ICsgICAgICAgfQ0KPj4gKyAgICAgICBpZiAoZXJybm8pIHsNCj4+ICsgICAgICAgICAg ICAgICByZXQgPSAtZXJybm87DQo+PiArICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+PiArICAg ICAgIH0NCj4+ICsNCj4+ICsgICAgICAgaWYgKHJldCA9PSAyKQ0KPj4gKyAgICAgICAgICAgICAg IGhpZ2ggPSBsb3c7DQo+PiArDQo+PiArICAgICAgICptYXNrID0gR0VOTUFTS19VTEwoaGlnaCwg bG93KTsNCj4+ICsgICAgICAgLyogTGFzdCBkaWdpdCBzaG91bGQgYmUgWzAxMl0uIElmIGxhc3Qg ZGlnaXQgaXMgbWlzc2luZyAwIGlzIGltcGxpZWQuICovDQo+PiArICAgICAgICpudW0gPSBjb25m aWdbc3RybGVuKGNvbmZpZykgLSAxXTsNCj4+ICsgICAgICAgKm51bSA9IGlzZGlnaXQoKm51bSkg PyAqbnVtIC0gJzAnIDogMDsNCj4+ICsNCj4+ICsgICAgICAgcmV0ID0gMDsNCj4+ICtvdXQ6DQo+ PiArICAgICAgIGZyZWUoY29uZmlnKTsNCj4+ICsgICAgICAgZmNsb3NlKGZwKTsNCj4+ICsNCj4+ ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludA0KPj4gK3Bh cnNlX2V2ZW50KGNoYXIgKmJ1ZiwgdWludDY0X3QgY29uZmlnWzNdKSB7DQo+PiArICAgICAgIGNo YXIgKnRva2VuLCAqdGVybTsNCj4+ICsgICAgICAgaW50IG51bSwgcmV0LCB2YWw7DQo+PiArICAg ICAgIHVpbnQ2NF90IG1hc2s7DQo+PiArDQo+PiArICAgICAgIGNvbmZpZ1swXSA9IGNvbmZpZ1sx XSA9IGNvbmZpZ1syXSA9IDA7DQo+PiArDQo+PiArICAgICAgIHRva2VuID0gc3RydG9rKGJ1Ziwg IiwiKTsNCj4+ICsgICAgICAgd2hpbGUgKHRva2VuKSB7DQo+PiArICAgICAgICAgICAgICAgZXJy bm8gPSAwOw0KPj4gKyAgICAgICAgICAgICAgIC8qIDx0ZXJtPj08dmFsdWU+ICovDQo+PiArICAg ICAgICAgICAgICAgcmV0ID0gc3NjYW5mKHRva2VuLCAiJW1bXj1dPSVpIiwgJnRlcm0sICZ2YWwp Ow0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQgPCAxKQ0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIC1FTk9EQVRBOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChlcnJubykNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87DQo+PiArICAgICAgICAgICAg ICAgaWYgKHJldCA9PSAxKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gMTsNCj4+ ICsNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBnZXRfdGVybV9mb3JtYXQodGVybSwgJm51bSwg Jm1hc2spOw0KPj4gKyAgICAgICAgICAgICAgIGZyZWUodGVybSk7DQo+PiArICAgICAgICAgICAg ICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiAr DQo+PiArICAgICAgICAgICAgICAgY29uZmlnW251bV0gfD0gRklFTERfUFJFUChtYXNrLCB2YWwp Ow0KPj4gKyAgICAgICAgICAgICAgIHRva2VuID0gc3RydG9rKE5VTEwsICIsIik7DQo+PiArICAg ICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp YyBpbnQNCj4+ICtnZXRfZXZlbnRfY29uZmlnKGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IGNv bmZpZ1szXSkgew0KPj4gKyAgICAgICBjaGFyIHBhdGhbUEFUSF9NQVhdLCBidWZbQlVGU0laXTsN Cj4+ICsgICAgICAgRklMRSAqZnA7DQo+PiArICAgICAgIGludCByZXQ7DQo+PiArDQo+PiArICAg ICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgRVZFTlRfU09VUkNFX0RFVklDRVNfUEFU SCAiLyVzL2V2ZW50cy8lcyIsIHJ0ZV9wbXUubmFtZSwNCj5uYW1lKTsNCj4+ICsgICAgICAgZnAg PSBmb3BlbihwYXRoLCAiciIpOw0KPj4gKyAgICAgICBpZiAoZnAgPT0gTlVMTCkNCj4+ICsgICAg ICAgICAgICAgICByZXR1cm4gLWVycm5vOw0KPj4gKw0KPj4gKyAgICAgICByZXQgPSBmcmVhZChi dWYsIDEsIHNpemVvZihidWYpLCBmcCk7DQo+PiArICAgICAgIGlmIChyZXQgPT0gMCkgew0KPj4g KyAgICAgICAgICAgICAgIGZjbG9zZShmcCk7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7DQo+PiArICAgICAgIH0NCj4+ICsgICAgICAgZmNsb3NlKGZwKTsNCj4+ICsg ICAgICAgYnVmW3JldF0gPSAnXDAnOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gcGFyc2VfZXZl bnQoYnVmLCBjb25maWcpOyB9DQo+PiArDQo+PiArc3RhdGljIGludA0KPj4gK2RvX3BlcmZfZXZl bnRfb3Blbih1aW50NjRfdCBjb25maWdbM10sIGludCBncm91cF9mZCkgew0KPj4gKyAgICAgICBz dHJ1Y3QgcGVyZl9ldmVudF9hdHRyIGF0dHIgPSB7DQo+PiArICAgICAgICAgICAgICAgLnNpemUg PSBzaXplb2Yoc3RydWN0IHBlcmZfZXZlbnRfYXR0ciksDQo+PiArICAgICAgICAgICAgICAgLnR5 cGUgPSBQRVJGX1RZUEVfUkFXLA0KPj4gKyAgICAgICAgICAgICAgIC5leGNsdWRlX2tlcm5lbCA9 IDEsDQo+PiArICAgICAgICAgICAgICAgLmV4Y2x1ZGVfaHYgPSAxLA0KPj4gKyAgICAgICAgICAg ICAgIC5kaXNhYmxlZCA9IDEsDQo+PiArICAgICAgIH07DQo+PiArDQo+PiArICAgICAgIHBtdV9h cmNoX2ZpeHVwX2NvbmZpZyhjb25maWcpOw0KPj4gKw0KPj4gKyAgICAgICBhdHRyLmNvbmZpZyA9 IGNvbmZpZ1swXTsNCj4+ICsgICAgICAgYXR0ci5jb25maWcxID0gY29uZmlnWzFdOw0KPj4gKyAg ICAgICBhdHRyLmNvbmZpZzIgPSBjb25maWdbMl07DQo+PiArDQo+PiArICAgICAgIHJldHVybiBz eXNjYWxsKFNZU19wZXJmX2V2ZW50X29wZW4sICZhdHRyLCAwLCAtMSwgZ3JvdXBfZmQsDQo+PiAr MCk7IH0NCj4+ICsNCj4+ICtzdGF0aWMgaW50DQo+PiArb3Blbl9ldmVudHMoc3RydWN0IHJ0ZV9w bXVfZXZlbnRfZ3JvdXAgKmdyb3VwKSB7DQo+PiArICAgICAgIHN0cnVjdCBydGVfcG11X2V2ZW50 ICpldmVudDsNCj4+ICsgICAgICAgdWludDY0X3QgY29uZmlnWzNdOw0KPj4gKyAgICAgICBpbnQg bnVtID0gMCwgcmV0Ow0KPj4gKw0KPj4gKyAgICAgICAvKiBncm91cCBsZWFkZXIgZ2V0cyBjcmVh dGVkIGZpcnN0LCB3aXRoIGZkID0gLTEgKi8NCj4+ICsgICAgICAgZ3JvdXAtPmZkc1swXSA9IC0x Ow0KPj4gKw0KPj4gKyAgICAgICBUQUlMUV9GT1JFQUNIKGV2ZW50LCAmcnRlX3BtdS5ldmVudF9s aXN0LCBuZXh0KSB7DQo+PiArICAgICAgICAgICAgICAgcmV0ID0gZ2V0X2V2ZW50X2NvbmZpZyhl dmVudC0+bmFtZSwgY29uZmlnKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAocmV0KQ0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+PiArDQo+PiArICAgICAgICAgICAgICAg cmV0ID0gZG9fcGVyZl9ldmVudF9vcGVuKGNvbmZpZywgZ3JvdXAtPmZkc1swXSk7DQo+PiArICAg ICAgICAgICAgICAgaWYgKHJldCA9PSAtMSkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0ID0gLWVycm5vOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+PiAr ICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGdyb3VwLT5mZHNbZXZl bnQtPmluZGV4XSA9IHJldDsNCj4+ICsgICAgICAgICAgICAgICBudW0rKzsNCj4+ICsgICAgICAg fQ0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICtvdXQ6DQo+PiArICAgICAgIGZvciAo LS1udW07IG51bSA+PSAwOyBudW0tLSkgew0KPj4gKyAgICAgICAgICAgICAgIGNsb3NlKGdyb3Vw LT5mZHNbbnVtXSk7DQo+PiArICAgICAgICAgICAgICAgZ3JvdXAtPmZkc1tudW1dID0gLTE7DQo+ PiArICAgICAgIH0NCj4+ICsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGludA0KPj4gK21tYXBfZXZlbnRzKHN0cnVjdCBydGVfcG11X2V2ZW50 X2dyb3VwICpncm91cCkgew0KPj4gKyAgICAgICBsb25nIHBhZ2Vfc2l6ZSA9IHN5c2NvbmYoX1ND X1BBR0VfU0laRSk7DQo+PiArICAgICAgIHVuc2lnbmVkIGludCBpOw0KPj4gKyAgICAgICB2b2lk ICphZGRyOw0KPj4gKyAgICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4gKyAgICAgICBmb3IgKGkgPSAw OyBpIDwgcnRlX3BtdS5udW1fZ3JvdXBfZXZlbnRzOyBpKyspIHsNCj4+ICsgICAgICAgICAgICAg ICBhZGRyID0gbW1hcCgwLCBwYWdlX3NpemUsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgZ3JvdXAt PmZkc1tpXSwgMCk7DQo+PiArICAgICAgICAgICAgICAgaWYgKGFkZHIgPT0gTUFQX0ZBSUxFRCkg ew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLWVycm5vOw0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4g KyAgICAgICAgICAgICAgIGdyb3VwLT5tbWFwX3BhZ2VzW2ldID0gYWRkcjsNCj4+ICsgICAgICAg fQ0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICtvdXQ6DQo+PiArICAgICAgIGZvciAo OyBpOyBpLS0pIHsNCj4+ICsgICAgICAgICAgICAgICBtdW5tYXAoZ3JvdXAtPm1tYXBfcGFnZXNb aSAtIDFdLCBwYWdlX3NpemUpOw0KPj4gKyAgICAgICAgICAgICAgIGdyb3VwLT5tbWFwX3BhZ2Vz W2kgLSAxXSA9IE5VTEw7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHJl dDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQNCj4+ICtjbGVhbnVwX2V2ZW50cyhzdHJ1 Y3QgcnRlX3BtdV9ldmVudF9ncm91cCAqZ3JvdXApIHsNCj4+ICsgICAgICAgdW5zaWduZWQgaW50 IGk7DQo+PiArDQo+PiArICAgICAgIGlmIChncm91cC0+ZmRzWzBdICE9IC0xKQ0KPj4gKyAgICAg ICAgICAgICAgIGlvY3RsKGdyb3VwLT5mZHNbMF0sIFBFUkZfRVZFTlRfSU9DX0RJU0FCTEUsDQo+ PiArIFBFUkZfSU9DX0ZMQUdfR1JPVVApOw0KPj4gKw0KPj4gKyAgICAgICBmb3IgKGkgPSAwOyBp IDwgcnRlX3BtdS5udW1fZ3JvdXBfZXZlbnRzOyBpKyspIHsNCj4+ICsgICAgICAgICAgICAgICBp ZiAoZ3JvdXAtPm1tYXBfcGFnZXNbaV0pIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG11 bm1hcChncm91cC0+bW1hcF9wYWdlc1tpXSwgc3lzY29uZihfU0NfUEFHRV9TSVpFKSk7DQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBncm91cC0+bW1hcF9wYWdlc1tpXSA9IE5VTEw7DQo+PiAr ICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGlmIChncm91cC0+ZmRz W2ldICE9IC0xKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjbG9zZShncm91cC0+ZmRz W2ldKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLT5mZHNbaV0gPSAtMTsNCj4+ ICsgICAgICAgICAgICAgICB9DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgZ3JvdXAt PmVuYWJsZWQgPSBmYWxzZTsNCj4+ICt9DQo+PiArDQo+PiAraW50IF9fcnRlX25vaW5saW5lDQo+ DQo+VGhpcyBzeW1ib2wgaXMgZXhwb3J0ZWQgb3V0IG9mIHRoaXMgbGlicmFyeSwgbm8gbmVlZCBm b3Igbm9pbmxpbmUuDQo+DQoNCkkgcmVjYWxsIHRoYXQgaXQgd2FzIGFkZGVkIGRlbGliZXJhdGVs eSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gd2FzIGFjdHVhbGx5IGJlaW5nIGlubGluZWQuDQpCdXQg Z2l2ZW4gY29kZSBjaGFuZ2VkIGEgYml0IHRocm91Z2ggbXVsdGlwbGUgcmV2aXNpb25zIHRoaXMg bWF5IG5vdCBiZSBuZWNlc3NhcnkgYW55bW9yZS4gDQoNCj4NCj4+ICtydGVfcG11X2VuYWJsZV9n cm91cCh2b2lkKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IHJ0ZV9wbXVfZXZlbnRfZ3JvdXAg Kmdyb3VwID0gJlJURV9QRVJfTENPUkUoX2V2ZW50X2dyb3VwKTsNCj4+ICsgICAgICAgaW50IHJl dDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHJ0ZV9wbXUubnVtX2dyb3VwX2V2ZW50cyA9PSAwKQ0K Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOw0KPj4gKw0KPj4gKyAgICAgICByZXQg PSBvcGVuX2V2ZW50cyhncm91cCk7DQo+PiArICAgICAgIGlmIChyZXQpDQo+PiArICAgICAgICAg ICAgICAgZ290byBvdXQ7DQo+PiArDQo+PiArICAgICAgIHJldCA9IG1tYXBfZXZlbnRzKGdyb3Vw KTsNCj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4+ ICsNCj4+ICsgICAgICAgaWYgKGlvY3RsKGdyb3VwLT5mZHNbMF0sIFBFUkZfRVZFTlRfSU9DX1JF U0VULCBQRVJGX0lPQ19GTEFHX0dST1VQKSA9PSAtMSkgew0KPj4gKyAgICAgICAgICAgICAgIHJl dCA9IC1lcnJubzsNCj4+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4+ICsgICAgICAgfQ0K Pj4gKw0KPj4gKyAgICAgICBpZiAoaW9jdGwoZ3JvdXAtPmZkc1swXSwgUEVSRl9FVkVOVF9JT0Nf RU5BQkxFLCBQRVJGX0lPQ19GTEFHX0dST1VQKSA9PSAtMSkgew0KPj4gKyAgICAgICAgICAgICAg IHJldCA9IC1lcnJubzsNCj4+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4+ICsgICAgICAg fQ0KPj4gKw0KPj4gKyAgICAgICBydGVfc3BpbmxvY2tfbG9jaygmcnRlX3BtdS5sb2NrKTsNCj4+ ICsgICAgICAgVEFJTFFfSU5TRVJUX1RBSUwoJnJ0ZV9wbXUuZXZlbnRfZ3JvdXBfbGlzdCwgZ3Jv dXAsIG5leHQpOw0KPj4gKyAgICAgICBydGVfc3BpbmxvY2tfdW5sb2NrKCZydGVfcG11LmxvY2sp Ow0KPj4gKyAgICAgICBncm91cC0+ZW5hYmxlZCA9IHRydWU7DQo+PiArDQo+PiArICAgICAgIHJl dHVybiAwOw0KPj4gKw0KPj4gK291dDoNCj4+ICsgICAgICAgY2xlYW51cF9ldmVudHMoZ3JvdXAp Ow0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg aW50DQo+PiArc2Nhbl9wbXVzKHZvaWQpDQo+PiArew0KPj4gKyAgICAgICBjaGFyIHBhdGhbUEFU SF9NQVhdOw0KPj4gKyAgICAgICBzdHJ1Y3QgZGlyZW50ICpkZW50Ow0KPj4gKyAgICAgICBjb25z dCBjaGFyICpuYW1lOw0KPj4gKyAgICAgICBESVIgKmRpcnA7DQo+PiArDQo+PiArICAgICAgIGRp cnAgPSBvcGVuZGlyKEVWRU5UX1NPVVJDRV9ERVZJQ0VTX1BBVEgpOw0KPj4gKyAgICAgICBpZiAo ZGlycCA9PSBOVUxMKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87DQo+PiArDQo+ PiArICAgICAgIHdoaWxlICgoZGVudCA9IHJlYWRkaXIoZGlycCkpKSB7DQo+PiArICAgICAgICAg ICAgICAgbmFtZSA9IGRlbnQtPmRfbmFtZTsNCj4+ICsgICAgICAgICAgICAgICBpZiAobmFtZVsw XSA9PSAnLicpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4+ICsNCj4+ ICsgICAgICAgICAgICAgICAvKiBzeXNmcyBlbnRyeSBzaG91bGQgZWl0aGVyIGNvbnRhaW4gY3B1 cyBvciBiZSBhIGNwdSAqLw0KPj4gKyAgICAgICAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJj cHUiKSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKw0KPj4gKyAgICAg ICAgICAgICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgRVZFTlRfU09VUkNFX0RFVklD RVNfUEFUSCAiLyVzL2NwdXMiLCBuYW1lKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAoYWNjZXNz KHBhdGgsIEZfT0spID09IDApDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4+ ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBpZiAoZGVudCkgew0KPj4gKyAgICAgICAgICAg ICAgIHJ0ZV9wbXUubmFtZSA9IHN0cmR1cChuYW1lKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAo cnRlX3BtdS5uYW1lID09IE5VTEwpIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsb3Nl ZGlyKGRpcnApOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9N RU07DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAg IGNsb3NlZGlyKGRpcnApOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gcnRlX3BtdS5uYW1lID8g MCA6IC1FTk9ERVY7IH0NCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IHJ0ZV9wbXVfZXZlbnQgKg0K Pj4gK25ld19ldmVudChjb25zdCBjaGFyICpuYW1lKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0 IHJ0ZV9wbXVfZXZlbnQgKmV2ZW50Ow0KPj4gKw0KPj4gKyAgICAgICBldmVudCA9IGNhbGxvYygx LCBzaXplb2YoKmV2ZW50KSk7DQo+PiArICAgICAgIGlmIChldmVudCA9PSBOVUxMKQ0KPj4gKyAg ICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPj4gKw0KPj4gKyAgICAgICBldmVudC0+bmFtZSA9IHN0 cmR1cChuYW1lKTsNCj4+ICsgICAgICAgaWYgKGV2ZW50LT5uYW1lID09IE5VTEwpIHsNCj4+ICsg ICAgICAgICAgICAgICBmcmVlKGV2ZW50KTsNCj4+ICsgICAgICAgICAgICAgICBldmVudCA9IE5V TEw7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICtvdXQ6DQo+PiArICAgICAgIHJldHVybiBldmVu dDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQNCj4+ICtmcmVlX2V2ZW50KHN0cnVjdCBy dGVfcG11X2V2ZW50ICpldmVudCkgew0KPj4gKyAgICAgICBmcmVlKGV2ZW50LT5uYW1lKTsNCj4+ ICsgICAgICAgZnJlZShldmVudCk7DQo+PiArfQ0KPj4gKw0KPj4gK2ludA0KPj4gK3J0ZV9wbXVf YWRkX2V2ZW50KGNvbnN0IGNoYXIgKm5hbWUpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgcnRl X3BtdV9ldmVudCAqZXZlbnQ7DQo+PiArICAgICAgIGNoYXIgcGF0aFtQQVRIX01BWF07DQo+PiAr DQo+PiArICAgICAgIGlmIChydGVfcG11Lm5hbWUgPT0gTlVMTCkNCj4+ICsgICAgICAgICAgICAg ICByZXR1cm4gLUVOT0RFVjsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHJ0ZV9wbXUubnVtX2dyb3Vw X2V2ZW50cyArIDEgPj0gTUFYX05VTV9HUk9VUF9FVkVOVFMpDQo+PiArICAgICAgICAgICAgICAg cmV0dXJuIC1FTk9TUEM7DQo+PiArDQo+PiArICAgICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihw YXRoKSwgRVZFTlRfU09VUkNFX0RFVklDRVNfUEFUSCAiLyVzL2V2ZW50cy8lcyIsIHJ0ZV9wbXUu bmFtZSwNCj5uYW1lKTsNCj4+ICsgICAgICAgaWYgKGFjY2VzcyhwYXRoLCBSX09LKSkNCj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4+ICsNCj4+ICsgICAgICAgVEFJTFFfRk9S RUFDSChldmVudCwgJnJ0ZV9wbXUuZXZlbnRfbGlzdCwgbmV4dCkgew0KPj4gKyAgICAgICAgICAg ICAgIGlmICghc3RyY21wKGV2ZW50LT5uYW1lLCBuYW1lKSkNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBldmVudC0+aW5kZXg7DQo+PiArICAgICAgICAgICAgICAgY29udGludWU7 DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgZXZlbnQgPSBuZXdfZXZlbnQobmFtZSk7 DQo+PiArICAgICAgIGlmIChldmVudCA9PSBOVUxMKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVy biAtRU5PTUVNOw0KPj4gKw0KPj4gKyAgICAgICBldmVudC0+aW5kZXggPSBydGVfcG11Lm51bV9n cm91cF9ldmVudHMrKzsNCj4+ICsgICAgICAgVEFJTFFfSU5TRVJUX1RBSUwoJnJ0ZV9wbXUuZXZl bnRfbGlzdCwgZXZlbnQsIG5leHQpOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gZXZlbnQtPmlu ZGV4Ow0KPj4gK30NCj4+ICsNCj4+ICtpbnQNCj4+ICtydGVfcG11X2luaXQodm9pZCkNCj4+ICt7 DQo+PiArICAgICAgIGludCByZXQ7DQo+PiArDQo+PiArICAgICAgIC8qIEFsbG93IGNhbGxpbmcg aW5pdCBmcm9tIG11bHRpcGxlIGNvbnRleHRzIHdpdGhpbiBhIHNpbmdsZSB0aHJlYWQuIFRoaXMg c2ltcGxpZmllcw0KPj4gKyAgICAgICAgKiByZXNvdXJjZSBtYW5hZ2VtZW50IGEgYml0IGUuZyBp biBjYXNlIGZhc3QtcGF0aCB0cmFjZXBvaW50IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZA0KPj4g KyAgICAgICAgKiB2aWEgY29tbWFuZCBsaW5lIGJ1dCBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUg ZW5vdWdoIGFuZCBwZXJmb3JtcyBpbml0L2ZpbmkgYWdhaW4uDQo+PiArICAgICAgICAqLw0KPj4g KyAgICAgICBpZiAocnRlX3BtdS5pbml0aWFsaXplZCkgew0KPg0KPlRoaXMgaXMgYW4gaW50ZWdl ciBzbyBjaGVjayBhZ2FpbnN0IDAgZXhwbGljaXRseSAodGhlcmUgbWF5IGJlIG90aGVyIGNhc2Vz IGluIHRoaXMgcGF0Y2gsIEkgZGlkIG5vdA0KPnJlY2hlY2sgdGhlIHdob2xlIHBhdGNoKS4NCj4N Cg0KT2theS4gDQoNCj4NCj4+ICsgICAgICAgICAgICAgICBydGVfcG11LmluaXRpYWxpemVkKys7 DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsg ICAgICAgcmV0ID0gc2Nhbl9wbXVzKCk7DQo+PiArICAgICAgIGlmIChyZXQpDQo+PiArICAgICAg ICAgICAgICAgZ290byBvdXQ7DQo+PiArDQo+PiArICAgICAgIHJldCA9IHBtdV9hcmNoX2luaXQo KTsNCj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4+ ICsNCj4+ICsgICAgICAgVEFJTFFfSU5JVCgmcnRlX3BtdS5ldmVudF9saXN0KTsNCj4+ICsgICAg ICAgVEFJTFFfSU5JVCgmcnRlX3BtdS5ldmVudF9ncm91cF9saXN0KTsNCj4+ICsgICAgICAgcnRl X3NwaW5sb2NrX2luaXQoJnJ0ZV9wbXUubG9jayk7DQo+PiArICAgICAgIHJ0ZV9wbXUuaW5pdGlh bGl6ZWQgPSAxOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICtvdXQ6DQo+PiArICAg ICAgIGZyZWUocnRlX3BtdS5uYW1lKTsNCj4+ICsgICAgICAgcnRlX3BtdS5uYW1lID0gTlVMTDsN Cj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArdm9pZA0KPj4g K3J0ZV9wbXVfZmluaSh2b2lkKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IHJ0ZV9wbXVfZXZl bnRfZ3JvdXAgKmdyb3VwLCAqdG1wX2dyb3VwOw0KPj4gKyAgICAgICBzdHJ1Y3QgcnRlX3BtdV9l dmVudCAqZXZlbnQsICp0bXBfZXZlbnQ7DQo+PiArDQo+PiArICAgICAgIC8qIGNsZWFudXAgb25j ZSBpbml0IGNvdW50IGRyb3BzIHRvIHplcm8gKi8NCj4+ICsgICAgICAgaWYgKCFydGVfcG11Lmlu aXRpYWxpemVkIHx8IC0tcnRlX3BtdS5pbml0aWFsaXplZCkNCj4+ICsgICAgICAgICAgICAgICBy ZXR1cm47DQo+PiArDQo+PiArICAgICAgIFJURV9UQUlMUV9GT1JFQUNIX1NBRkUoZXZlbnQsICZy dGVfcG11LmV2ZW50X2xpc3QsIG5leHQsIHRtcF9ldmVudCkgew0KPj4gKyAgICAgICAgICAgICAg IFRBSUxRX1JFTU9WRSgmcnRlX3BtdS5ldmVudF9saXN0LCBldmVudCwgbmV4dCk7DQo+PiArICAg ICAgICAgICAgICAgZnJlZV9ldmVudChldmVudCk7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsg ICAgICAgUlRFX1RBSUxRX0ZPUkVBQ0hfU0FGRShncm91cCwgJnJ0ZV9wbXUuZXZlbnRfZ3JvdXBf bGlzdCwgbmV4dCwgdG1wX2dyb3VwKSB7DQo+PiArICAgICAgICAgICAgICAgVEFJTFFfUkVNT1ZF KCZydGVfcG11LmV2ZW50X2dyb3VwX2xpc3QsIGdyb3VwLCBuZXh0KTsNCj4+ICsgICAgICAgICAg ICAgICBjbGVhbnVwX2V2ZW50cyhncm91cCk7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAg ICAgcG11X2FyY2hfZmluaSgpOw0KPj4gKyAgICAgICBmcmVlKHJ0ZV9wbXUubmFtZSk7DQo+PiAr ICAgICAgIHJ0ZV9wbXUubmFtZSA9IE5VTEw7DQo+PiArICAgICAgIHJ0ZV9wbXUubnVtX2dyb3Vw X2V2ZW50cyA9IDA7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2xpYi9wbXUvcnRlX3BtdS5oIGIv bGliL3BtdS9ydGVfcG11LmggbmV3IGZpbGUgbW9kZQ0KPj4gMTAwNjQ0IGluZGV4IDAwMDAwMDAw MDAuLmUzNjAzNzVhMGMNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2xpYi9wbXUvcnRlX3Bt dS5oDQo+PiBAQCAtMCwwICsxLDIwNSBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMy1DbGF1c2UNCj4+ICsgKiBDb3B5cmlnaHQoYykgMjAyMyBNYXJ2ZWxsDQo+PiArICov DQo+PiArDQo+PiArI2lmbmRlZiBfUlRFX1BNVV9IXw0KPj4gKyNkZWZpbmUgX1JURV9QTVVfSF8N Cj4+ICsNCj4+ICsvKioNCj4+ICsgKiBAZmlsZQ0KPj4gKyAqDQo+PiArICogUE1VIGV2ZW50IHRy YWNpbmcgb3BlcmF0aW9ucw0KPj4gKyAqDQo+PiArICogVGhpcyBmaWxlIGRlZmluZXMgZ2VuZXJp YyBBUEkgYW5kIHR5cGVzIG5lY2Vzc2FyeSB0byBzZXR1cCBQTVUgYW5kDQo+PiArICogcmVhZCBz ZWxlY3RlZCBjb3VudGVycyBpbiBydW50aW1lLg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpZmRlZiBf X2NwbHVzcGx1cw0KPj4gK2V4dGVybiAiQyIgew0KPj4gKyNlbmRpZg0KPj4gKw0KPj4gKyNpbmNs dWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+DQo+PiArDQo+PiArI2luY2x1ZGUgPHJ0ZV9hdG9taWMu aD4NCj4+ICsjaW5jbHVkZSA8cnRlX2JyYW5jaF9wcmVkaWN0aW9uLmg+DQo+PiArI2luY2x1ZGUg PHJ0ZV9jb21tb24uaD4NCj4+ICsjaW5jbHVkZSA8cnRlX2NvbXBhdC5oPg0KPj4gKyNpbmNsdWRl IDxydGVfc3BpbmxvY2suaD4NCj4+ICsNCj4+ICsvKiogTWF4aW11bSBudW1iZXIgb2YgZXZlbnRz IGluIGEgZ3JvdXAgKi8gI2RlZmluZQ0KPj4gK01BWF9OVU1fR1JPVVBfRVZFTlRTIDgNCj4+ICsN Cj4+ICsvKioNCj4+ICsgKiBBIHN0cnVjdHVyZSBkZXNjcmliaW5nIGEgZ3JvdXAgb2YgZXZlbnRz Lg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBydGVfcG11X2V2ZW50X2dyb3VwIHsNCj4+ICsgICAgICAg c3RydWN0IHBlcmZfZXZlbnRfbW1hcF9wYWdlICptbWFwX3BhZ2VzW01BWF9OVU1fR1JPVVBfRVZF TlRTXTsgLyoqPCBhcnJheSBvZiB1c2VyIHBhZ2VzDQo+Ki8NCj4+ICsgICAgICAgaW50IGZkc1tN QVhfTlVNX0dST1VQX0VWRU5UU107IC8qKjwgYXJyYXkgb2YgZXZlbnQgZGVzY3JpcHRvcnMgKi8N Cj4+ICsgICAgICAgYm9vbCBlbmFibGVkOyAvKio8IHRydWUgaWYgZ3JvdXAgd2FzIGVuYWJsZWQg b24gcGFydGljdWxhciBsY29yZSAqLw0KPj4gKyAgICAgICBUQUlMUV9FTlRSWShydGVfcG11X2V2 ZW50X2dyb3VwKSBuZXh0OyAvKio8IGxpc3QgZW50cnkgKi8gfQ0KPj4gK19fcnRlX2NhY2hlX2Fs aWduZWQ7DQo+DQo+T25lIHByb2JsZW0gZm9yIHRoZSBmdXR1cmUgaXMgdGhhdCB3ZSBoYXZlIGEg Zml4ZWQgc2l6ZSBmZCBhcnJheS4NCg0KVGhpcyBudW1iZXIgY2FuIGJlIGluY3JlYXNlZCBpZiBu ZWVkZWQgYnV0IHJhdGlvbmFsZSBmb3IgdGhhdA0Kd2FzIFBNVXMgY29tZSB3aXRoIHJlbGF0aXZl bHkgc21hbGwgbnVtYmVyIG9mIGh3IGNvdW50ZXJzLiBIZXJlIA0KZXZlbnRzIGFyZSBncm91cGVk IHRvZ2V0aGVyIChpLmUgc2NoZWR1bGVkIHRvZ2V0aGVyKSB3aGljaCBtZWFucyB0aGVyZSBtdXN0 IA0KYmUgZW5vdWdoIGh3IGNvdW50ZXJzIGZvciBhbGwgZXZlbnRzIGZvciB0aGluZ3MgdG8gd29y ay4NCg0KPkRvIHdlIG5lZWQgdG8gZXhwb3NlIHRoaXMgd2hvbGUgc3RydWN0dXJlIHRvIHRoZSBh cHBsaWNhdGlvbj8NCj4NCg0KUHJvYmFibHkgc29tZSBwYXJ0IG9mIGl0IGNvdWxkIGhhdmUgYmVl biBoaWRkZW4gYnV0IGFsbCB0aG9zZSBzdHJ1Y3R1cmVzIGFyZSBzbyBzbWFsbA0KdGhhdCBwcmVz dW1hYmx5IHN1Y2ggcGFydGl0aW9uaW5nIHdvdWxkIG5vdCBicmluZyBtdWNoIHRvIHRoZSB0YWJs ZS4NCg0KPg0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEEgc3RydWN0dXJlIGRlc2NyaWJpbmcgYW4g ZXZlbnQuDQo+PiArICovDQo+PiArc3RydWN0IHJ0ZV9wbXVfZXZlbnQgew0KPj4gKyAgICAgICBj aGFyICpuYW1lOyAvKio8IG5hbWUgb2YgYW4gZXZlbnQgKi8NCj4+ICsgICAgICAgdW5zaWduZWQg aW50IGluZGV4OyAvKio8IGV2ZW50IGluZGV4IGludG8gZmRzL21tYXBfcGFnZXMgKi8NCj4NCj5U aGlzIGlzIGFuIGludGVybmFsIGNvbnNpZGVyYXRpb24uDQo+RG8gd2UgbmVlZCB0byBleHBvc2Ug dGhpcyB0byB0aGUgYXBwbGljYXRpb24/DQo+DQo+DQo+PiArICAgICAgIFRBSUxRX0VOVFJZKHJ0 ZV9wbXVfZXZlbnQpIG5leHQ7IC8qKjwgbGlzdCBlbnRyeSAqLyB9Ow0KPj4gKw0KPj4gKy8qKg0K Pj4gKyAqIEEgUE1VIHN0YXRlIGNvbnRhaW5lci4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgcnRlX3Bt dSB7DQo+PiArICAgICAgIGNoYXIgKm5hbWU7IC8qKjwgbmFtZSBvZiBjb3JlIFBNVSBsaXN0ZWQg dW5kZXIgL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMgKi8NCj4+ICsgICAgICAgcnRlX3Nw aW5sb2NrX3QgbG9jazsgLyoqPCBzZXJpYWxpemUgYWNjZXNzIHRvIGV2ZW50IGdyb3VwIGxpc3Qg Ki8NCj4+ICsgICAgICAgVEFJTFFfSEVBRCgsIHJ0ZV9wbXVfZXZlbnRfZ3JvdXApIGV2ZW50X2dy b3VwX2xpc3Q7IC8qKjwgbGlzdCBvZiBldmVudCBncm91cHMgKi8NCj4+ICsgICAgICAgdW5zaWdu ZWQgaW50IG51bV9ncm91cF9ldmVudHM7IC8qKjwgbnVtYmVyIG9mIGV2ZW50cyBpbiBhIGdyb3Vw ICovDQo+PiArICAgICAgIFRBSUxRX0hFQUQoLCBydGVfcG11X2V2ZW50KSBldmVudF9saXN0OyAv Kio8IGxpc3Qgb2YgbWF0Y2hpbmcgZXZlbnRzICovDQo+PiArICAgICAgIHVuc2lnbmVkIGludCBp bml0aWFsaXplZDsgLyoqPCBpbml0aWFsaXphdGlvbiBjb3VudGVyICovIH07DQo+DQo+SWRlbSwg ZG8gd2UgbmVlZCB0byBleHBvc2UgdGhpcyB0byB0aGUgYXBwbGljYXRpb24/DQo+DQo+DQo+PiAr DQo+PiArLyoqIGxjb3JlIGV2ZW50IGdyb3VwICovDQo+PiArUlRFX0RFQ0xBUkVfUEVSX0xDT1JF KHN0cnVjdCBydGVfcG11X2V2ZW50X2dyb3VwLCBfZXZlbnRfZ3JvdXApOw0KPj4gKw0KPj4gKy8q KiBQTVUgc3RhdGUgY29udGFpbmVyICovDQo+PiArZXh0ZXJuIHN0cnVjdCBydGVfcG11IHJ0ZV9w bXU7DQo+PiArDQo+PiArLyoqIEVhY2ggYXJjaGl0ZWN0dXJlIHN1cHBvcnRpbmcgUE1VIG5lZWRz IHRvIHByb3ZpZGUgaXRzIG93biB2ZXJzaW9uDQo+PiArKi8gI2lmbmRlZiBydGVfcG11X3BtY19y ZWFkICNkZWZpbmUgcnRlX3BtdV9wbWNfcmVhZChpbmRleCkgKHsgMDsgfSkNCj4+ICsjZW5kaWYN Cj4+ICsNCj4+ICsvKioNCj4+ICsgKiBAaW50ZXJuYWwNCj4+ICsgKg0KPj4gKyAqIFJlYWQgUE1V IGNvdW50ZXIuDQo+PiArICoNCj4+ICsgKiBAcGFyYW0gcGMNCj4+ICsgKiAgIFBvaW50ZXIgdG8g dGhlIG1tYXBwZWQgdXNlciBwYWdlLg0KPj4gKyAqIEByZXR1cm4NCj4+ICsgKiAgIENvdW50ZXIg dmFsdWUgcmVhZCBmcm9tIGhhcmR3YXJlLg0KPj4gKyAqLw0KPj4gK19fcnRlX2ludGVybmFsDQo+ PiArc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdWludDY0X3QNCj4+ICtydGVfcG11X3JlYWRf dXNlcnBhZ2Uoc3RydWN0IHBlcmZfZXZlbnRfbW1hcF9wYWdlICpwYykgew0KPj4gKyAgICAgICB1 aW50NjRfdCB3aWR0aCwgb2Zmc2V0Ow0KPj4gKyAgICAgICB1aW50MzJfdCBzZXEsIGluZGV4Ow0K Pj4gKyAgICAgICBpbnQ2NF90IHBtYzsNCj4+ICsNCj4+ICsgICAgICAgZm9yICg7Oykgew0KPj4g KyAgICAgICAgICAgICAgIHNlcSA9IHBjLT5sb2NrOw0KPj4gKyAgICAgICAgICAgICAgIHJ0ZV9j b21waWxlcl9iYXJyaWVyKCk7DQo+PiArICAgICAgICAgICAgICAgaW5kZXggPSBwYy0+aW5kZXg7 DQo+PiArICAgICAgICAgICAgICAgb2Zmc2V0ID0gcGMtPm9mZnNldDsNCj4+ICsgICAgICAgICAg ICAgICB3aWR0aCA9IHBjLT5wbWNfd2lkdGg7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgLyog aW5kZXggc2V0IHRvIDAgbWVhbnMgdGhhdCBwYXJ0aWN1bGFyIGNvdW50ZXIgY2Fubm90IGJlIHVz ZWQgKi8NCj4+ICsgICAgICAgICAgICAgICBpZiAobGlrZWx5KHBjLT5jYXBfdXNlcl9yZHBtYyAm JiBpbmRleCkpIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHBtYyA9IHJ0ZV9wbXVfcG1j X3JlYWQoaW5kZXggLSAxKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHBtYyA8PD0gNjQg LSB3aWR0aDsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHBtYyA+Pj0gNjQgLSB3aWR0aDsN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBwbWM7DQo+PiArICAgICAgICAg ICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHJ0ZV9jb21waWxlcl9iYXJyaWVyKCk7 DQo+PiArDQo+PiArICAgICAgICAgICAgICAgaWYgKGxpa2VseShwYy0+bG9jayA9PSBzZXEpKQ0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldDsNCj4+ICsgICAgICAgfQ0K Pj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICog QGludGVybmFsDQo+PiArICoNCj4+ICsgKiBFbmFibGUgZ3JvdXAgb2YgZXZlbnRzIG9uIHRoZSBj YWxsaW5nIGxjb3JlLg0KPj4gKyAqDQo+PiArICogQHJldHVybg0KPj4gKyAqICAgMCBpbiBjYXNl IG9mIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlIG90aGVyd2lzZS4NCj4+ICsgKi8NCj4+ICtfX3J0 ZV9pbnRlcm5hbA0KPg0KPlVubGVzcyBJIG1pc3NlZCBzb21ldGhpbmcsIHRoaXMgc3ltYm9sIGlz IGNhbGxlZCBmcm9tIHJ0ZV9wbXVfcmVhZCgpIHNvIHRoaXMgbWFrZXMgcnRlX3BtdV9yZWFkKCkN Cj5pdHNlbGYgaW50ZXJuYWwuDQo+U28gZXh0ZXJuYWwgYXBwbGljYXRpb25zIHdvbid0IGJlIGFi bGUgdG8gdXNlIHRoZSBQTVUgQVBJLg0KPg0KPlRoaXMgY2FuIHByb2JhYmx5IGJlIGNvbmZpcm1l ZCBieSBhZGRpbmcgc29tZSBjYWxsIHRvIHRoZSBQTVUgQVBJIGluIGFuIGV4YW1wbGVzLy4NCj4N Cg0KR29vZCBwb2ludCBhY3R1YWxseS4gVGhpcyB3YXMgbm90IHRoYXQgb2J2aW91cyB3aGVuIEkg bG9va2VkIGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2luZyB0aGF0IGNoYW5nZS4gDQpTbyBpbiB0aGlz IGNhc2UgaXQgbmVlZHMgdG8gYmUgZXhwb3J0ZWQgYnV0IGdpdmVuIGFwcCBzaG91bGQgbm90IGNh bGwgdGhhdCBpdHNlbGYgbWF5YmUgSSdsbA0KanVzdCBtYWtlIHRoZSBpbnRlbnQgY2xlYXIgYnkg cmVuYW1pbmcgaXQgcGVyaGFwcyB0byBfX3J0ZV9wbXVfZW5hYmxlX2dyb3VwKCkgb3Igc29tZXRo aW5nDQphbGlrZS4gDQoNCj4NCj4+ICtpbnQNCj4+ICtydGVfcG11X2VuYWJsZV9ncm91cCh2b2lk KTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBAd2FybmluZw0KPj4gKyAqIEBiIEVYUEVSSU1FTlRB TDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPj4gKyAqDQo+PiAr ICogSW5pdGlhbGl6ZSBQTVUgbGlicmFyeS4NCj4+ICsgKg0KPj4gKyAqIEByZXR1cm4NCj4+ICsg KiAgIDAgaW4gY2FzZSBvZiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBvdGhlcndpc2UuDQo+PiAr ICovDQo+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+PiAraW50DQo+PiArcnRlX3BtdV9pbml0KHZv aWQpOw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEB3YXJuaW5nDQo+PiArICogQGIgRVhQRVJJTUVO VEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+PiArICoNCj4+ ICsgKiBGaW5hbGl6ZSBQTVUgbGlicmFyeS4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIFBN VSBjb3VudGVycyBhcmUgbm8gbG9uZ2VyIGJlaW5nIHJlYWQuDQo+PiArICovDQo+PiArX19ydGVf ZXhwZXJpbWVudGFsDQo+PiArdm9pZA0KPj4gK3J0ZV9wbXVfZmluaSh2b2lkKTsNCj4+ICsNCj4+ ICsvKioNCj4+ICsgKiBAd2FybmluZw0KPj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkg bWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPj4gKyAqDQo+PiArICogQWRkIGV2ZW50 IHRvIHRoZSBncm91cCBvZiBlbmFibGVkIGV2ZW50cy4NCj4+ICsgKg0KPj4gKyAqIEBwYXJhbSBu YW1lDQo+PiArICogICBOYW1lIG9mIGFuIGV2ZW50IGxpc3RlZCB1bmRlciAvc3lzL2J1cy9ldmVu dF9zb3VyY2UvZGV2aWNlcy9wbXUvZXZlbnRzLg0KPj4gKyAqIEByZXR1cm4NCj4+ICsgKiAgIEV2 ZW50IGluZGV4IGluIGNhc2Ugb2Ygc3VjY2VzcywgbmVnYXRpdmUgdmFsdWUgb3RoZXJ3aXNlLg0K Pj4gKyAqLw0KPj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPj4gK2ludA0KPj4gK3J0ZV9wbXVfYWRk X2V2ZW50KGNvbnN0IGNoYXIgKm5hbWUpOw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEB3YXJuaW5n DQo+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJp b3Igbm90aWNlDQo+PiArICoNCj4+ICsgKiBSZWFkIGhhcmR3YXJlIGNvdW50ZXIgY29uZmlndXJl ZCB0byBjb3VudCBvY2N1cnJlbmNlcyBvZiBhbiBldmVudC4NCj4+ICsgKg0KPj4gKyAqIEBwYXJh bSBpbmRleA0KPj4gKyAqICAgSW5kZXggb2YgYW4gZXZlbnQgdG8gYmUgcmVhZC4NCj4+ICsgKiBA cmV0dXJuDQo+PiArICogICBFdmVudCB2YWx1ZSByZWFkIGZyb20gcmVnaXN0ZXIuIEluIGNhc2Ug b2YgZXJyb3JzIG9yIGxhY2sgb2Ygc3VwcG9ydA0KPj4gKyAqICAgMCBpcyByZXR1cm5lZC4gSW4g b3RoZXIgd29yZHMsIHN0cmVhbSBvZiB6ZXJvcyBpbiBhIHRyYWNlIGZpbGUNCj4+ICsgKiAgIGlu ZGljYXRlcyBwcm9ibGVtIHdpdGggcmVhZGluZyBwYXJ0aWN1bGFyIFBNVSBldmVudCByZWdpc3Rl ci4NCj4+ICsgKi8NCj4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4+ICtzdGF0aWMgX19ydGVfYWx3 YXlzX2lubGluZSB1aW50NjRfdA0KPj4gK3J0ZV9wbXVfcmVhZCh1bnNpZ25lZCBpbnQgaW5kZXgp DQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgcnRlX3BtdV9ldmVudF9ncm91cCAqZ3JvdXAgPSAm UlRFX1BFUl9MQ09SRShfZXZlbnRfZ3JvdXApOw0KPj4gKyAgICAgICBpbnQgcmV0Ow0KPj4gKw0K Pj4gKyAgICAgICBpZiAodW5saWtlbHkoIXJ0ZV9wbXUuaW5pdGlhbGl6ZWQpKQ0KPj4gKyAgICAg ICAgICAgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gKyAgICAgICBpZiAodW5saWtlbHkoIWdyb3Vw LT5lbmFibGVkKSkgew0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IHJ0ZV9wbXVfZW5hYmxlX2dy b3VwKCk7DQo+PiArICAgICAgICAgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAwOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGlmICh1bmxp a2VseShpbmRleCA+PSBydGVfcG11Lm51bV9ncm91cF9ldmVudHMpKQ0KPj4gKyAgICAgICAgICAg ICAgIHJldHVybiAwOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gcnRlX3BtdV9yZWFkX3VzZXJw YWdlKGdyb3VwLT5tbWFwX3BhZ2VzW2luZGV4XSk7DQo+PiArfQ0KPj4gKw0KPj4gKyNpZmRlZiBf X2NwbHVzcGx1cw0KPj4gK30NCj4+ICsjZW5kaWYNCj4+ICsNCj4+ICsjZW5kaWYgLyogX1JURV9Q TVVfSF8gKi8NCj4+IGRpZmYgLS1naXQgYS9saWIvcG11L3ZlcnNpb24ubWFwIGIvbGliL3BtdS92 ZXJzaW9uLm1hcCBuZXcgZmlsZSBtb2RlDQo+PiAxMDA2NDQgaW5kZXggMDAwMDAwMDAwMC4uNTBm YjBmMzU0ZQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvbGliL3BtdS92ZXJzaW9uLm1hcA0K Pj4gQEAgLTAsMCArMSwyMCBAQA0KPj4gK0RQREtfMjMgew0KPj4gKyAgICAgICBsb2NhbDogKjsN Cj4+ICt9Ow0KPj4gKw0KPj4gK0VYUEVSSU1FTlRBTCB7DQo+PiArICAgICAgIGdsb2JhbDoNCj4+ ICsNCj4+ICsgICAgICAgcGVyX2xjb3JlX19ldmVudF9ncm91cDsNCj4+ICsgICAgICAgcnRlX3Bt dTsNCj4+ICsgICAgICAgcnRlX3BtdV9hZGRfZXZlbnQ7DQo+PiArICAgICAgIHJ0ZV9wbXVfZmlu aTsNCj4+ICsgICAgICAgcnRlX3BtdV9pbml0Ow0KPj4gKyAgICAgICBydGVfcG11X3JlYWQ7DQo+ PiArfTsNCj4+ICsNCj4+ICtJTlRFUk5BTCB7DQo+PiArICAgICAgIGdsb2JhbDoNCj4+ICsNCj4+ ICsgICAgICAgcnRlX3BtdV9lbmFibGVfZ3JvdXA7DQo+PiArfTsNCj4+IC0tDQo+PiAyLjM0LjEN Cj4+DQo+DQo+DQo+LS0NCj5EYXZpZCBNYXJjaGFuZA0KDQo=