From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 05ED24B33F for ; Sun, 20 Jul 2025 19:03:16 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 0447368D485; Sun, 20 Jul 2025 22:03:13 +0300 (EEST) Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazolkn19011030.outbound.protection.outlook.com [52.103.66.30]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 1A8F768CF02 for ; Sun, 20 Jul 2025 22:03:05 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ycpeKQEKSH/VcXodZITziHuZ2tcy/3VZzxke1RUnXXuRDyDlbvmsIFESjorHvJamYv/5AgsbjfQF2Zu2HQXC9fvZGfl8kFTiLp+g+QkLkyR1Z0Jld5wOkbDghR+MX6ylZkE3CqEwKBd6Deza3wCVCHWIuztXjREZy1G4CdkJRv9hXfMPKGus+V+S26rwJJtb+WFdHv8Pc6/8lTW9R+VulrIJ4vUpCfIQJCc41UiQPbhxW3uFF6lXHzNovWqooIwz8jPXmT5A8O4+oMFpTgg02Tq39KUfpYXDwoYM5DxNoOzuTVdVUZHqoc0corb+Yk3RQe73Qzc3vNMbR21abA9UzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=wSMgHiBxFM5NCD6W/tdSb3Gbfr68B68yEId9tk8utDo=; b=MYJ5hRKm62WCX+KmpUNmV5Hhw0C0Nh2tQjfOFcfxOWMajSZqJdXLlfE8ITfXCS2GvBi8Ofe0a2tOz9FD8YcsbTJuhcRPjb1CdadT4XlKMY5yczk+GQiswQjv82XSUuf02M+wR06TWLfs78K846hLuuaRXOvNDxXc7kgUBuy6RgzdnpjZ0CkzwVDJMZuLmR2svLfRhMsb0dwY7vCwwJvx8/rNukRCzShACADmxGqPqk10FMPKge9MgqDBl0BMa22PiLw13cy0xmMyRl0EvhX9Y32h3qj9tjIN4eWCMnq3tr13zlUDAStiUXk9m6lreHhC/KG3p3FioPNr2Un8ppiOZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wSMgHiBxFM5NCD6W/tdSb3Gbfr68B68yEId9tk8utDo=; b=JVNwbJUDKzX3OpCc2p9kRTBpY/KcNB/9F8W3+DSaJCd5SeRBpMGDbVu1pcIcG65FjpKNZB3jhPhA1wSg8oC38bJzqrRxPCC8N5Hn3OukUIUelSD3iuUIpL7FBFbMX6IqJar0STwCA8u9eRyFPgr/+tdItn6hjGGZeFPq6Fpg1HNlR5pwbs5nX9wEXXGVNlimp9DkRfcvtaSVF5h+txOhhdmpl9Fp0DYphBVxeG9ULzwIj5snjPb18VuqlDggtLHotL+qevnf+Wk7oAuGwRmsgLkkfNyl+92j1BDcrRZTysglAssO9FPz4ysJh6H4Dwld5Pk8qu/ysr4AvsG08o5raQ== Received: from TY7PR01MB14640.jpnprd01.prod.outlook.com (2603:1096:405:23f::6) by TYCPR01MB8770.jpnprd01.prod.outlook.com (2603:1096:400:18d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8943.29; Sun, 20 Jul 2025 19:02:59 +0000 Received: from TY7PR01MB14640.jpnprd01.prod.outlook.com ([fe80::10d5:9246:2ba0:3769]) by TY7PR01MB14640.jpnprd01.prod.outlook.com ([fe80::10d5:9246:2ba0:3769%4]) with mapi id 15.20.8943.028; Sun, 20 Jul 2025 19:02:59 +0000 From: Wu Jianhua To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH, v6] avcodec/d3d12va_encode: texture array support for HEVC Thread-Index: AQHb9x8Jw+mjP68ED06oGcGKYffyY7Q41ngAgAKMMg4= Date: Sun, 20 Jul 2025 19:02:59 +0000 Message-ID: References: <20250717133023.283-1-Primeadvice@gmail.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TY7PR01MB14640:EE_|TYCPR01MB8770:EE_ x-ms-office365-filtering-correlation-id: dcb735c0-8485-4510-bbb0-08ddc7c00b3a x-microsoft-antispam: BCL:0; ARA:14566002|9400799033|41001999006|12050799012|461199028|15080799012|15030799006|3412199025|40105399003|440099028|53005399003|12091999003|10035399007|102099032|56899033; x-microsoft-antispam-message-info: =?gb2312?B?L2NMdjNBUURKSDB6NGFiWFlpYTBuYU10TzhKYmhDTnZTd0VzWGJOQXRhalFH?= =?gb2312?B?eTBQUjNUbEZkajZFYjlMcmJrQ0tKQlJlZ3daYzdLc2psUDJZdjk1b3Fwb3Aw?= =?gb2312?B?WFh4dDBUVlg1ZENWeE1WMlVyZFhHNytKOUVTeldlbDNZMlppclVaaXF4YUJF?= =?gb2312?B?MVJyTjFPRXJqZ2tMYjREVkt2RndBYTJ6U3FoVlpxUHlaY2lsZjVUSXNkSkgr?= =?gb2312?B?QUZCaHd1VW5IcGh5djRuOHdwVDJJQzc3bUxBRUFuellWb3BXbkgraFNtTzBw?= =?gb2312?B?cnlyVExlcGp6WWdIT1J5S1V4RWtvTmZXZ1Z5VTIxdkpGSDVZNG91SHVjSzBh?= =?gb2312?B?WlUyc0pRV3BxWlFRcksveVV3cHBtY1hNZEhVQko5TC9JTExJNjh5Snc3Yjgv?= =?gb2312?B?NmNPbHVBSk9MN3YvV3VvNzJhTmZjUVpyeGNHMnZkdjNPbmI4aTZkVnlRcHg3?= =?gb2312?B?MmRuZzFCZEE2Z0pxOTBLQmxhNGYzMHAwN3J5YVpSR3E3MVhqUS9KVmJCTlho?= =?gb2312?B?QU81dzlMMmJ1WDBxVVpRUzdKOE93MFZJNkNaektXbjIvUUZ4L3RVR2xvaGJk?= =?gb2312?B?NjJXWkY2dER0b2pBTG9US3BRQXZqK0dzLzJSWU9OUWdUdXRzc3FvbGZmSzdF?= =?gb2312?B?ZTlGYk43UmMxek95YitIOHpxVlpXeXBSbHZUcVFWYXpwRUwxZVFTNXEzVFEv?= =?gb2312?B?empJODFBQ1pQWVlXeVQ1TUVKcnpRWFpzTUU1NS9qSXUrVzR2eG53Q05wUGkr?= =?gb2312?B?eXJJTFlPazhLSndGV2htblBreHh4OWhWU2xkc0h3bzN4NlB6bFQxb3ZwdXpy?= =?gb2312?B?bDZvMHFqTnZuNXBGK1RtZU42elNXYUtxS0lmcCs1SCtja2Vvc1MzMUw5bU5L?= =?gb2312?B?d1JiNWRrbG9xYUJBWG5pREo4NG9NNGdBNWdBOFYvM2NFYkRXTDc4Z3BvcG5V?= =?gb2312?B?a2d5Q0ZFMjUxNHByT3ZjaGY2dmI0cmdrbGROdit4Sy9GMGZlN1pIajJlVDVm?= =?gb2312?B?L0p6dThpREJSRHBzTm5wUVFnY3AxQUZkaEY0UERlMWhpWDI3d3dHazhQdmEx?= =?gb2312?B?RFYxNDA4UHN2YSthcFRxWmErTTJCWEpKa0xrQlJpTnZGcEJjR2FESFZOT1lp?= =?gb2312?B?dTI1bFRJKzFIWTc5YldHZTNyMXhYTnFhRjAwRVJXN2pHd21kVVZZdWRpWmFs?= =?gb2312?B?aHZnU05DSGFkUkJPcnZ5SGtzanhJSDBZU0NHSlJjRUxoeUx6cnhlUkJEQWdM?= =?gb2312?B?SmtkT1JDNDVQdm16QTlLbmxaWUkvKzhycVhlYUpTUHp3VG5FT29KcFlZT1F3?= =?gb2312?B?dVhCUTVZTVlvaWFXMm5YQVFxZXcxMm1BSHY1VjZ6UU00cy9zSDd6aHdrd0la?= =?gb2312?B?YlQ3ZnJZTDFrWnRBM2RtUDZaeXNWWVRUVVVDcHdFZTlXYWFKZ2RVUkRubU91?= =?gb2312?B?MjNmYmlMeVFTck9zQ2hhUHZqSnIybUVyRm1ZbVBDZkJ4Rk5lTHFtOW1QR3hR?= =?gb2312?B?U0dzVW96OFVXV1ZFN0QxN1RCUk9tdnU0dnUyaExIaHRHYS9sYlFob2RMUzJN?= =?gb2312?B?SnMwR1dEaS81UXk1MlVMZzFxUFp4OWs1dGw4MnJ2bWloZUZtSEgzQUVvdnlO?= =?gb2312?Q?u9uy6dIIrqFhMnl/iQ+hGaXjz+JNqVmAcwMgs8g57htg=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?Vm1FNUtuVHFlYVhBSDFOYjZUd1RiR2tPekJaQTJaamZjME8zamVScnV5RXgy?= =?gb2312?B?V1pzeGNJdkMva0JJM1ZxelM1SFZ5a01RMUE2M1FXbUZXWUhSNk5vNFBmTFc5?= =?gb2312?B?YVoxVVliaFcwVmNLMlA0Wlk0REZ5cjJ6MlgwL3hjUW9YN3pVSXNQU1lrR1pi?= =?gb2312?B?czhhUnVKVHFzb29rRWhraU1GYVBhaUxSaW1QM0lySHYrb2xQVDQrV1k3ajB2?= =?gb2312?B?cUloZ0NucjQrb3k5djJoUkxGcFU5V1NRWmZRUXhxSzQydUp0SW8rclp5emUx?= =?gb2312?B?YW1YdHZpWDlZRHRsYjE3NGVya2h1bTZ4NzI0bm05aXFKV1lYbWF4RTBJM2VV?= =?gb2312?B?czlId2hERlZEVERsZXFFcmo3ZkRRM2MyMGRPeFJNQUUxUDhHVVc5T21JcW9W?= =?gb2312?B?WGhHZnlhQnhDenpNZnpXeEw5MTROcVExZFdNYlNHek1nalhhbmhpS1dTd2pM?= =?gb2312?B?SVU4ZllZRnZHNW9aZCtEUVgyaS8xR0JaSysranNnanhaTVdmZngrMjBBT0U2?= =?gb2312?B?elEzakR2K05rZUZBZUZITGFMS0EyTkl1SGcvQXhkOEt3L3ZXTGl4cjJRYVZO?= =?gb2312?B?L0pWcFo0SlFzVEZLUEk3U0JyVDFOd0drb3JZWnJBTFZYZWxVMjJ4TzBwZ2NI?= =?gb2312?B?SXptbkh0WEd1aXBWdVBTQlEySHh1ZmpJN0ZjLzhDOGhjWENpbFdEV1BXWDVN?= =?gb2312?B?NzZ4cGxOZVkxcy85SEVtb2pKTThIUmZYWjlpSTh4NU0xU0R1Z1JoLzhhQisv?= =?gb2312?B?dmNST1lQRlRISi9CSjdkK3dnZXU3b1VnZkhxSHF5MEN4Wkp3enJMUDl6RkhU?= =?gb2312?B?Wi9sSm9MYWtQSlZCUHFBZVA1RXNTNFp0dnlHTnE2UDRqMjY5RDQ5M2FVbXBS?= =?gb2312?B?TVptcWdXdXFDUHNzeUlMbStMbDJpbXFXOEljb2E3aW5zdk83cWQwYlYzejRj?= =?gb2312?B?bW5QWVBGMzBiOW4rQWVoTSsxbFp0TXNSSk5xTkNFSXlUZmRBcnlyTHo2NlFG?= =?gb2312?B?NDFDdDAvamFwYXppSHF0dEhHK2xBUUZVb3ZoSit3dXZDZEtFZjVVT01RbEFa?= =?gb2312?B?dWdMYzlmaFpGeFRUaW0zT29nYkpDL3VSUVZXQVFLSkdQYVczQ0JwbGwxYWxk?= =?gb2312?B?TktLTktEMXR5emsyR2R6NmlBNWVYR0FJaVFKMVZsd2RtRjlOM3M0TGpGMEkv?= =?gb2312?B?U2lSb0lpMCtmV2czc2RrRGxaSERLN3A4TVNWcVgwMk0rUDFiUVRUdDB3eGZR?= =?gb2312?B?bERmRG0xUGVZL0hnemdIL2dERUVMMVpvckgxaDRHYkN0K3FORXVvOTBvV1ZT?= =?gb2312?B?M2RsdWtJUDY2WCtEcUNHb0gvU2MzMDNSZ09IN1laTzZ6NTQ3SmFCUkhtdjZP?= =?gb2312?B?dUZlRHlsb3VnTFhhMmVlTFk2djFMUHZOQUpjWDJnckI5WkhJaWN2b0ZRRS9Y?= =?gb2312?B?VXBxZWZXNk9DSnBjbStrbFl0aUJjbEpzWElyZktmVXRxMnRHclQ0L3RwR2s4?= =?gb2312?B?cXBXSU9icUd1QUFQNjR2enMxamwyTmZOM0JVNFJxRXpYd3lJNUxuMmwyR081?= =?gb2312?B?TXZ6UFFlYWU3YVQxbUsxYzRlSjR3UGpibTVubzJwcm5nazVzd1E4TDlDSytr?= =?gb2312?B?cm1FdzFKSEFpUm9Vd2lIYXBxN0ozYXc9PQ==?= MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY7PR01MB14640.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: dcb735c0-8485-4510-bbb0-08ddc7c00b3a X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jul 2025 19:02:59.2307 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB8770 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] =?gb2312?b?u9i4tDogIFtQQVRDSCwgdjZdIGF2Y29kZWMv?= =?gb2312?b?ZDNkMTJ2YV9lbmNvZGU6IHRleHR1cmUgYXJyYXkgc3VwcG9ydCBmb3IgSEVW?= =?gb2312?b?Qw==?= X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: "wutong1208@outlook.com" , Araz Iusubov Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VG9uZyBXdToNCj5BcmF6IEl1c3Vib3Y6DQo+PiBGcm9tOiBmZm1wZWctZGV2ZWwgPGZmbXBlZy1k ZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+IE9uIEJlaGFsZiBPZiBBcmF6DQo+PiBJdXN1Ym92DQo+ PiBTZW50OiBUaHVyc2RheSwgSnVseSAxNywgMjAyNSA5OjMwIFBNDQo+PiBUbzogZmZtcGVnLWRl dmVsQGZmbXBlZy5vcmcNCj4+IENjOiBBcmF6IEl1c3Vib3YgPFByaW1lYWR2aWNlQGdtYWlsLmNv bT4NCj4+IFN1YmplY3Q6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCwgdjZdIGF2Y29kZWMvZDNkMTJ2 YV9lbmNvZGU6IHRleHR1cmUgYXJyYXkNCj4+IHN1cHBvcnQgZm9yIEhFVkMNCj4+DQo+PiBUaGlz IHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIHRleHR1cmUgYXJyYXkgZmVhdHVyZSB1c2VkIGJ5 IEFNRCBib2FyZHMgaW4gdGhlDQo+PiBEM0QxMiBIRVZDIGVuY29kZXIuDQo+PiBJbiB0ZXh0dXJl IGFycmF5IG1vZGUsIGEgc2luZ2xlIHRleHR1cmUgYXJyYXkgaXMgc2hhcmVkIGZvciBhbGwgcmVm ZXJlbmNlIGFuZA0KPj4gcmVjb25zdHJ1Y3RlZCBwaWN0dXJlcyB1c2luZyBkaWZmZXJlbnQgc3Vi cmVzb3VyY2VzLg0KPj4gVGhlIGltcGxlbWVudGF0aW9uIGVuc3VyZXMgY29tcGF0aWJpbGl0eSBh bmQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlc3RlZCBvbg0KPj4gQU1ELCBJbnRlbCwgYW5kIE5W SURJQSBHUFVzLg0KPj4NCj4+IHYyIHVwZGF0ZXM6DQo+PiAxLiBUaGUgcmVmZXJlbmNlIHRvIE1h eEwxUmVmZXJlbmNlc0ZvckIgZm9yIHRoZSBILjI2NCBjb2RlYyB3YXMgdXBkYXRlZCB0bw0KPj4g dXNlIHRoZSBjb3JyZXNwb25kaW5nIEguMjY0IGZpZWxkIGluc3RlYWQgb2YgdGhlIEhFVkMgb25l Lg0KPj4gMi4gTWF4X3N1YnJlc291cmNlX2FycmF5X3NpemUgY2FsY3VsYXRpb24gd2FzIGFkanVz dGVkIGJ5IHJlbW92aW5nIHRoZQ0KPj4gRDNEMTJWQV9WSURFT19FTkNfQVNZTkNfREVQVEggb2Zm c2V0Lg0KPj4NCj4+IHYzIHVwZGF0ZXM6DQo+PiAxLiBGaXhlZCBhIHR5cGUgbWlzbWF0Y2ggYnkg ZXhwbGljaXRseSBjYXN0aW5nIEFWRDNEMTJWQUZyYW1lKiB0bw0KPj4gKHVpbnQ4X3QqKSB3aGVu IGFzc2lnbmluZyB0byBkYXRhWzBdLg0KPj4gMi4gQWRqdXN0ZWQgbG9nZ2luZyBmb3JtYXQgc3Bl Y2lmaWVyIGZvciBIUkVTVUxUIHRvIHVzZSBgJWx4YC4NCj4+DQo+PiB2NCB1cGRhdGVzOg0KPj4g MS4gTW92ZWQgdGV4dHVyZSBhcnJheSBtYW5hZ2VtZW50IHRvIGh3Y29udGV4dF9kM2QxMnZhIGZv ciBwcm9wZXINCj4+IGFic3RyYWN0aW9uLg0KPj4gMi4gQWRkZWQgYHRleHR1cmVfYXJyYXlgIGFu ZCBgdGV4dHVyZV9hcnJheV9zaXplYCBmaWVsZHMgdG8NCj4+IEFWRDNEMTJWQUZyYW1lc0NvbnRl eHQuDQo+PiAzLiBJbXBsZW1lbnRlZCBzaGFyZWQgdGV4dHVyZSBhcnJheSBhbGxvY2F0aW9uIGR1 cmluZyBgYXZfaHdmcmFtZV9jdHhfaW5pdGAuDQo+PiA0LiBGcmFtZXMgbm93IHJlY2VpdmUgdW5p cXVlIHN1YnJlc291cmNlIGluZGljZXMgdmlhDQo+PiBgZDNkMTJ2YV9wb29sX2FsbG9jX3RleHR1 cmVfYXJyYXlgLg0KPj4gNS4gUmVtb3ZlZCBgZDNkMTJ2YV9jcmVhdGVfdGV4dHVyZV9hcnJheWAs IGFsbG9jYXRpb24gaXMgbm93IGhhbmRsZWQgZW50aXJlbHkNCj4+IHdpdGhpbiBod2NvbnRleHQu DQo+PiA2LiBFbmNvZGVyIG5vdyB1c2VzIHN1YnJlc291cmNlIGluZGljZXMgcHJvdmlkZWQgYnkg aHdjb250ZXh0IGluc3RlYWQgb2YNCj4+IG1hbmFnaW5nIHRoZW0gbWFudWFsbHkuDQo+Pg0KPj4g djUgdXBkYXRlczoNCj4+IE5vIGNoYW5nZXMsIHJlc3VibWl0dGVkIGFzIHY0IHdhcyBtaXNzZWQg YnkgcGF0Y2h3b3JrLg0KPj4NCj4+IHY2IHVwZGF0ZXM6DQo+PiAxLiBNaW5vciBjb3NtZXRpYyBm aXhlcyBhY2NvcmRpbmcgdG8gcmV2aWV3IG9mIHY1IDIuIEJ1bXBlZCBsYXZ1IHZlcnNpb24gdG8N Cj4+IDYwLjUuMTAwIGFuZCB1cGRhdGVkIEFQSWNoYW5nZXMNCj4+DQo+PiAtLS0NCj4+ICBkb2Mv QVBJY2hhbmdlcyAgICAgICAgICAgICAgICAgICB8ICAgNCArDQo+PiAgbGliYXZjb2RlYy9kM2Qx MnZhX2VuY29kZS5jICAgICAgfCAxODQgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQ0K Pj4gIGxpYmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGUuaCAgICAgIHwgIDEyICsrDQo+PiAgbGliYXZj b2RlYy9kM2QxMnZhX2VuY29kZV9oZXZjLmMgfCAgIDUgKy0NCj4+ICBsaWJhdnV0aWwvaHdjb250 ZXh0X2QzZDEydmEuYyAgICB8ICA2NSArKysrKysrKysrLQ0KPj4gIGxpYmF2dXRpbC9od2NvbnRl eHRfZDNkMTJ2YS5oICAgIHwgIDE4ICsrKw0KPj4gIGxpYmF2dXRpbC92ZXJzaW9uLmggICAgICAg ICAgICAgIHwgICA0ICstDQo+PiAgNyBmaWxlcyBjaGFuZ2VkLCAyNDAgaW5zZXJ0aW9ucygrKSwg NTIgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2RvYy9BUEljaGFuZ2VzIGIvZG9j L0FQSWNoYW5nZXMgaW5kZXggZDZlMzgyNDVmOC4uZWFiMDZjZDI1MQ0KPj4gMTAwNjQ0DQo+PiAt LS0gYS9kb2MvQVBJY2hhbmdlcw0KPj4gKysrIGIvZG9jL0FQSWNoYW5nZXMNCj4+IEBAIC0yLDYg KzIsMTAgQEAgVGhlIGxhc3QgdmVyc2lvbiBpbmNyZWFzZXMgb2YgYWxsIGxpYnJhcmllcyB3ZXJl IG9uIDIwMjUtMDMtMjgNCj4+DQo+PiAgQVBJIGNoYW5nZXMsIG1vc3QgcmVjZW50IGZpcnN0Og0K Pj4NCj4+ICsyMDI1LTA3LXh4IC0geHh4eHh4eHh4eCAtIGxhdnUgNjAuNS4xMDAgLSBod2NvbnRl eHRfZDNkMTJ2YS5oDQo+PiArICBBZGQgc3VwcG9ydCBmb3IgdGV4dHVyZSBhcnJheSBtb2RlIEFW RDNEMTJWQUZyYW1lLnN1YnJlc291cmNlX2luZGV4LA0KPj4gKyAgQVZEM0QxMlZBRnJhbWVzQ29u dGV4dC50ZXh0dXJlX2FycmF5IGFuZCB0ZXh0dXJlX2FycmF5X3NpemUNCj4+ICsNCj4+ICAyMDI1 LTA3LXh4IC0geHh4eHh4eHh4ZCAtIGxhdmZpIDExLjIuMTAwIC0gYXZmaWx0ZXIuaA0KPj4gICAg QWRkIEFWRmlsdGVyR3JhcGgtPm1heF9idWZmZXJlZF9mcmFtZXMuDQo+Pg0KPj4gZGlmZiAtLWdp dCBhL2xpYmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGUuYyBiL2xpYmF2Y29kZWMvZDNkMTJ2YV9lbmNv ZGUuYyBpbmRleA0KPj4gZTI0YTViOGQyNC4uMWYyMDJmNTEyYyAxMDA2NDQNCj4+IC0tLSBhL2xp YmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGUuYw0KPj4gKysrIGIvbGliYXZjb2RlYy9kM2QxMnZhX2Vu Y29kZS5jDQo+PiBAQCAtMTkxLDcgKzE5MSw4IEBAIHN0YXRpYyBpbnQgZDNkMTJ2YV9lbmNvZGVf aXNzdWUoQVZDb2RlY0NvbnRleHQNCj4+ICphdmN0eCwNCj4+ICAgICAgRkZIV0Jhc2VFbmNvZGVD b250ZXh0ICpiYXNlX2N0eCA9IGF2Y3R4LT5wcml2X2RhdGE7DQo+PiAgICAgIEQzRDEyVkFFbmNv ZGVDb250ZXh0ICAgICAgICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOw0KPj4gICAgICBEM0QxMlZB RW5jb2RlUGljdHVyZSAgICAgICAqcGljID0gYmFzZV9waWMtPnByaXY7DQo+PiAtICAgIEFWRDNE MTJWQUZyYW1lc0NvbnRleHQgKmZyYW1lc19od2N0eCA9IGJhc2VfY3R4LT5pbnB1dF9mcmFtZXMt DQo+PiA+aHdjdHg7DQo+PiArICAgIEFWRDNEMTJWQUZyYW1lc0NvbnRleHQgICAgICpmcmFtZXNf aHdjdHhfaW5wdXQgPSBiYXNlX2N0eC0NCj4+ID5pbnB1dF9mcmFtZXMtPmh3Y3R4Ow0KPj4gKyAg ICBBVkQzRDEyVkFGcmFtZXNDb250ZXh0ICAgICAqZnJhbWVzX2h3Y3R4X3JlY29uID0gYmFzZV9j dHgtDQo+PiA+cmVjb25fZnJhbWVzLT5od2N0eDsNCj4+ICAgICAgaW50IGVyciwgaSwgajsNCj4+ ICAgICAgSFJFU1VMVCBocjsNCj4+ICAgICAgY2hhciBkYXRhW01BWF9QQVJBTV9CVUZGRVJfU0la RV07DQo+PiBAQCAtMjIxLDcgKzIyMiw3IEBAIHN0YXRpYyBpbnQgZDNkMTJ2YV9lbmNvZGVfaXNz dWUoQVZDb2RlY0NvbnRleHQNCj4+ICphdmN0eCwNCj4+ICAgICAgRDNEMTJfVklERU9fRU5DT0RF Ul9SRVNPTFZFX01FVEFEQVRBX0lOUFVUX0FSR1VNRU5UUw0KPj4gaW5wdXRfbWV0YWRhdGEgPSB7 DQo+PiAgICAgICAgICAuRW5jb2RlckNvZGVjID0gY3R4LT5jb2RlYy0+ZDNkMTJfY29kZWMsDQo+ PiAgICAgICAgICAuRW5jb2RlclByb2ZpbGUgPSBjdHgtPnByb2ZpbGUtPmQzZDEyX3Byb2ZpbGUs DQo+PiAtICAgICAgICAuRW5jb2RlcklucHV0Rm9ybWF0ID0gZnJhbWVzX2h3Y3R4LT5mb3JtYXQs DQo+PiArICAgICAgICAuRW5jb2RlcklucHV0Rm9ybWF0ID0gZnJhbWVzX2h3Y3R4X2lucHV0LT5m b3JtYXQsDQo+PiAgICAgICAgICAuRW5jb2RlZFBpY3R1cmVFZmZlY3RpdmVSZXNvbHV0aW9uID0g Y3R4LT5yZXNvbHV0aW9uLA0KPj4gICAgICB9Ow0KPj4NCj4+IEBAIC0yNjgsNiArMjY5LDggQEAg c3RhdGljIGludCBkM2QxMnZhX2VuY29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dA0KPj4gKmF2Y3R4 LA0KPj4gICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIlJlY29uIHN1cmZhY2UgaXMg JXAuXG4iLA0KPj4gICAgICAgICAgICAgcGljLT5yZWNvbl9zdXJmYWNlLT50ZXh0dXJlKTsNCj4+ DQo+PiArICAgIHBpYy0+c3VicmVzb3VyY2VfaW5kZXggPSBjdHgtPmlzX3RleHR1cmVfYXJyYXkg Pw0KPj4gKyBwaWMtPnJlY29uX3N1cmZhY2UtPnN1YnJlc291cmNlX2luZGV4IDogMDsNCj4+ICsN Cj4+ICAgICAgcGljLT5vdXRwdXRfYnVmZmVyX3JlZiA9IGF2X2J1ZmZlcl9wb29sX2dldChjdHgt Pm91dHB1dF9idWZmZXJfcG9vbCk7DQo+PiAgICAgIGlmICghcGljLT5vdXRwdXRfYnVmZmVyX3Jl Zikgew0KPj4gICAgICAgICAgZXJyID0gQVZFUlJPUihFTk9NRU0pOw0KPj4gQEAgLTMyNSwxMSAr MzI4LDI2IEBAIHN0YXRpYyBpbnQgZDNkMTJ2YV9lbmNvZGVfaXNzdWUoQVZDb2RlY0NvbnRleHQN Cj4+ICphdmN0eCwNCj4+ICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+PiAgICAgICAgICB9DQo+ Pg0KPj4gKyAgICAgICAgaWYgKGN0eC0+aXNfdGV4dHVyZV9hcnJheSkgew0KPj4gKyAgICAgICAg ICAgIGQzZDEyX3JlZnMucFN1YnJlc291cmNlcyA9IGF2X2NhbGxvYyhkM2QxMl9yZWZzLk51bVRl eHR1cmUyRHMsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKCpkM2QxMl9yZWZzLnBTdWJyZXNvdXJjZXMpKTsNCj4+ICsgICAgICAgICAg ICBpZiAoIWQzZDEyX3JlZnMucFN1YnJlc291cmNlcykgew0KPj4gKyAgICAgICAgICAgICAgICBl cnIgPSBBVkVSUk9SKEVOT01FTSk7DQo+PiArICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4+ ICsgICAgICAgICAgICB9DQo+PiArICAgICAgICB9DQo+PiArDQo+PiAgICAgICAgICBpID0gMDsN Cj4+IC0gICAgICAgIGZvciAoaiA9IDA7IGogPCBiYXNlX3BpYy0+bmJfcmVmc1swXTsgaisrKQ0K Pj4gLSAgICAgICAgICAgIGQzZDEyX3JlZnMucHBUZXh0dXJlMkRzW2krK10gPSAoKEQzRDEyVkFF bmNvZGVQaWN0dXJlICopYmFzZV9waWMtDQo+PiA+cmVmc1swXVtqXS0+cHJpdiktPnJlY29uX3N1 cmZhY2UtPnRleHR1cmU7DQo+PiAtICAgICAgICBmb3IgKGogPSAwOyBqIDwgYmFzZV9waWMtPm5i X3JlZnNbMV07IGorKykNCj4+IC0gICAgICAgICAgICBkM2QxMl9yZWZzLnBwVGV4dHVyZTJEc1tp KytdID0gKChEM0QxMlZBRW5jb2RlUGljdHVyZSAqKWJhc2VfcGljLQ0KPj4gPnJlZnNbMV1bal0t PnByaXYpLT5yZWNvbl9zdXJmYWNlLT50ZXh0dXJlOw0KPj4gKyAgICAgICAgZm9yIChqID0gMDsg aiA8IGJhc2VfcGljLT5uYl9yZWZzWzBdOyBqKyspIHsNCj4+ICsgICAgICAgICAgICBkM2QxMl9y ZWZzLnBwVGV4dHVyZTJEc1tpXSAgPSAoKEQzRDEyVkFFbmNvZGVQaWN0dXJlICopYmFzZV9waWMt DQo+PiA+cmVmc1swXVtqXS0+cHJpdiktPnJlY29uX3N1cmZhY2UtPnRleHR1cmU7DQo+PiArICAg ICAgICAgICAgZDNkMTJfcmVmcy5wU3VicmVzb3VyY2VzW2ldID0gY3R4LT5pc190ZXh0dXJlX2Fy cmF5ID8NCj4+ICgoRDNEMTJWQUVuY29kZVBpY3R1cmUgKiliYXNlX3BpYy0+cmVmc1swXVtqXS0+ cHJpdiktPnN1YnJlc291cmNlX2luZGV4IDogMDsNCj4+ICsgICAgICAgICAgICBpKys7DQo+PiAr ICAgICAgICB9DQo+PiArICAgICAgICBmb3IgKGogPSAwOyBqIDwgYmFzZV9waWMtPm5iX3JlZnNb MV07IGorKykgew0KPj4gKyAgICAgICAgICAgIGQzZDEyX3JlZnMucHBUZXh0dXJlMkRzW2ldICA9 ICgoRDNEMTJWQUVuY29kZVBpY3R1cmUgKiliYXNlX3BpYy0NCj4+ID5yZWZzWzFdW2pdLT5wcml2 KS0+cmVjb25fc3VyZmFjZS0+dGV4dHVyZTsNCj4+ICsgICAgICAgICAgICBkM2QxMl9yZWZzLnBT dWJyZXNvdXJjZXNbaV0gPSBjdHgtPmlzX3RleHR1cmVfYXJyYXkgPw0KPj4gKChEM0QxMlZBRW5j b2RlUGljdHVyZSAqKWJhc2VfcGljLT5yZWZzWzFdW2pdLT5wcml2KS0+c3VicmVzb3VyY2VfaW5k ZXggOiAwOw0KPj4gKyAgICAgICAgICAgIGkrKzsNCj4+ICsgICAgICAgIH0NCj4+ICAgICAgfQ0K Pj4NCj4+ICAgICAgaW5wdXRfYXJncy5QaWN0dXJlQ29udHJvbERlc2MuSW50cmFSZWZyZXNoRnJh bWVJbmRleCAgPSAwOyBAQCAtMzQzLDcNCj4+ICszNjEsNyBAQCBzdGF0aWMgaW50IGQzZDEydmFf ZW5jb2RlX2lzc3VlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwNCj4+ICAgICAgb3V0cHV0X2FyZ3Mu Qml0c3RyZWFtLnBCdWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBp Yy0+b3V0cHV0X2J1ZmZlcjsNCj4+ICAgICAgb3V0cHV0X2FyZ3MuQml0c3RyZWFtLkZyYW1lU3Rh cnRPZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBpYy0NCj4+ID5hbGlnbmVkX2hl YWRlcl9zaXplOw0KPj4gICAgICBvdXRwdXRfYXJncy5SZWNvbnN0cnVjdGVkUGljdHVyZS5wUmVj b25zdHJ1Y3RlZFBpY3R1cmUgICAgICAgICAgID0gcGljLQ0KPj4gPnJlY29uX3N1cmZhY2UtPnRl eHR1cmU7DQo+PiAtICAgIG91dHB1dF9hcmdzLlJlY29uc3RydWN0ZWRQaWN0dXJlLlJlY29uc3Ry dWN0ZWRQaWN0dXJlU3VicmVzb3VyY2UgPSAwOw0KPj4gKyAgICBvdXRwdXRfYXJncy5SZWNvbnN0 cnVjdGVkUGljdHVyZS5SZWNvbnN0cnVjdGVkUGljdHVyZVN1YnJlc291cmNlID0NCj4+ICsgY3R4 LT5pc190ZXh0dXJlX2FycmF5ID8gcGljLT5zdWJyZXNvdXJjZV9pbmRleCA6IDA7DQo+PiAgICAg IG91dHB1dF9hcmdzLkVuY29kZXJPdXRwdXRNZXRhZGF0YS5wQnVmZmVyICAgICAgICAgICAgICAg ICAgICAgICAgPSBwaWMtDQo+PiA+ZW5jb2RlZF9tZXRhZGF0YTsNCj4+ICAgICAgb3V0cHV0X2Fy Z3MuRW5jb2Rlck91dHB1dE1ldGFkYXRhLk9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICA9 IDA7DQo+Pg0KPj4gQEAgLTM2OSw1MiArMzg3LDk5IEBAIHN0YXRpYyBpbnQgZDNkMTJ2YV9lbmNv ZGVfaXNzdWUoQVZDb2RlY0NvbnRleHQNCj4+ICphdmN0eCwNCj4+ICAgICAgICAgIGdvdG8gZmFp bDsNCj4+ICAgICAgfQ0KPj4NCj4+IC0jZGVmaW5lIFRSQU5TSVRJT05fQkFSUklFUihyZXMsIGJl Zm9yZSwgYWZ0ZXIpICAgICAgICAgICAgICAgICAgICAgIFwNCj4+ICsjZGVmaW5lIFRSQU5TSVRJ T05fQkFSUklFUihyZXMsIHN1YnJlcywgYmVmb3JlLCBhZnRlcikgICAgICAgICAgICAgIFwNCj4+ ICAgICAgKEQzRDEyX1JFU09VUkNFX0JBUlJJRVIpIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4+ICAgICAgICAgIC5UeXBlICA9IEQzRDEyX1JFU09VUkNFX0JBUlJJ RVJfVFlQRV9UUkFOU0lUSU9OLCAgICAgICAgICAgIFwNCj4+ICAgICAgICAgIC5GbGFncyA9IEQz RDEyX1JFU09VUkNFX0JBUlJJRVJfRkxBR19OT05FLCAgICAgICAgICAgICAgICAgIFwNCj4+ICAg ICAgICAgIC5UcmFuc2l0aW9uID0geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4+ICAgICAgICAgICAgICAucFJlc291cmNlICAgPSByZXMsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4+IC0gICAgICAgICAgICAuU3VicmVzb3Vy Y2UgPSBEM0QxMl9SRVNPVVJDRV9CQVJSSUVSX0FMTF9TVUJSRVNPVVJDRVMsIFwNCj4+ICsgICAg ICAgICAgICAuU3VicmVzb3VyY2UgPSBzdWJyZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4+ICAgICAgICAgICAgICAuU3RhdGVCZWZvcmUgPSBiZWZvcmUsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4+ICAgICAgICAgICAgICAuU3RhdGVBZnRlciAg PSBhZnRlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4+ICAgICAgICAg IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4+ICAgICAgfQ0KPj4NCj4+ICAgICAgYmFycmllcnNbMF0gPSBUUkFOU0lUSU9OX0JB UlJJRVIocGljLT5pbnB1dF9zdXJmYWNlLT50ZXh0dXJlLA0KPj4gKw0KPj4gKyBEM0QxMl9SRVNP VVJDRV9CQVJSSUVSX0FMTF9TVUJSRVNPVVJDRVMsDQo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwNCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9f RU5DT0RFX1JFQUQpOw0KPj4gICAgICBiYXJyaWVyc1sxXSA9IFRSQU5TSVRJT05fQkFSUklFUihw aWMtPm91dHB1dF9idWZmZXIsDQo+PiArDQo+PiArIEQzRDEyX1JFU09VUkNFX0JBUlJJRVJfQUxM X1NVQlJFU09VUkNFUywNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURFT19FTkNPREVfV1JJVEUpOw0K Pj4gLSAgICBiYXJyaWVyc1syXSA9IFRSQU5TSVRJT05fQkFSUklFUihwaWMtPnJlY29uX3N1cmZh Y2UtPnRleHR1cmUsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQz RDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9fRU5DT0RFX1dSSVRFKTsNCj4+ IC0gICAgYmFycmllcnNbM10gPSBUUkFOU0lUSU9OX0JBUlJJRVIocGljLT5lbmNvZGVkX21ldGFk YXRhLA0KPj4gKyAgICBiYXJyaWVyc1syXSA9IFRSQU5TSVRJT05fQkFSUklFUihwaWMtPmVuY29k ZWRfbWV0YWRhdGEsDQo+PiArDQo+PiArIEQzRDEyX1JFU09VUkNFX0JBUlJJRVJfQUxMX1NVQlJF U09VUkNFUywNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJf UkVTT1VSQ0VfU1RBVEVfQ09NTU9OLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURFT19FTkNPREVfV1JJVEUpOw0KPj4gLSAg ICBiYXJyaWVyc1s0XSA9IFRSQU5TSVRJT05fQkFSUklFUihwaWMtPnJlc29sdmVkX21ldGFkYXRh LA0KPj4gKyAgICBiYXJyaWVyc1szXSA9IFRSQU5TSVRJT05fQkFSUklFUihwaWMtPnJlc29sdmVk X21ldGFkYXRhLA0KPj4gKw0KPj4gKyBEM0QxMl9SRVNPVVJDRV9CQVJSSUVSX0FMTF9TVUJSRVNP VVJDRVMsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JF U09VUkNFX1NUQVRFX0NPTU1PTiwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9fRU5DT0RFX1dSSVRFKTsNCj4+DQo+PiAt ICAgIElEM0QxMlZpZGVvRW5jb2RlQ29tbWFuZExpc3QyX1Jlc291cmNlQmFycmllcihjbWRfbGlz dCwgNSwgYmFycmllcnMpOw0KPj4gKyAgICBJRDNEMTJWaWRlb0VuY29kZUNvbW1hbmRMaXN0Ml9S ZXNvdXJjZUJhcnJpZXIoY21kX2xpc3QsIDQsDQo+PiArIGJhcnJpZXJzKTsNCj4+DQo+PiAtICAg IGlmIChkM2QxMl9yZWZzLk51bVRleHR1cmUyRHMpIHsNCj4+IC0gICAgICAgIEQzRDEyX1JFU09V UkNFX0JBUlJJRVIgcmVmc19iYXJyaWVyc1szXTsNCj4+IC0NCj4+IC0gICAgICAgIGZvciAoaSA9 IDA7IGkgPCBkM2QxMl9yZWZzLk51bVRleHR1cmUyRHM7IGkrKykNCj4+IC0gICAgICAgICAgICBy ZWZzX2JhcnJpZXJzW2ldID0gVFJBTlNJVElPTl9CQVJSSUVSKGQzZDEyX3JlZnMucHBUZXh0dXJl MkRzW2ldLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OLA0KPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklE RU9fRU5DT0RFX1JFQUQpOw0KPj4gLQ0KPj4gLSAgICAgICAgSUQzRDEyVmlkZW9FbmNvZGVDb21t YW5kTGlzdDJfUmVzb3VyY2VCYXJyaWVyKGNtZF9saXN0LA0KPj4gZDNkMTJfcmVmcy5OdW1UZXh0 dXJlMkRzLA0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZnNfYmFycmllcnMpOw0KPj4gKyAgICAvL3NldCB0cmFuc2l0IGJhcnJpZXJz IGZvciByZWZlcmVuY2UgcGljIGFuZCByZWNvbiBwaWMNCj4+ICsgICAgaW50IGJhcnJpZXJzX3Jl Zl9pbmRleCA9IDA7DQo+PiArICAgIEQzRDEyX1JFU09VUkNFX0JBUlJJRVIgKmJhcnJpZXJzX3Jl ZiA9IE5VTEw7DQo+PiArICAgIGlmIChjdHgtPmlzX3RleHR1cmVfYXJyYXkpIHsNCj4+ICsgICAg ICAgIGJhcnJpZXJzX3JlZiA9IGF2X2NhbGxvYyhmcmFtZXNfaHdjdHhfcmVjb24tPnRleHR1cmVf YXJyYXlfc2l6ZSAqIGN0eC0NCj4+ID5wbGFuZV9jb3VudCwNCj4+ICsgICAgICAgICAgICBzaXpl b2YoRDNEMTJfUkVTT1VSQ0VfQkFSUklFUikpOw0KPj4gKyAgICB9IGVsc2Ugew0KPj4gKyAgICAg ICAgYmFycmllcnNfcmVmID0NCj4+IGF2X2NhbGxvYyhNQVhfRFBCX1NJWkUsc2l6ZW9mKEQzRDEy X1JFU09VUkNFX0JBUlJJRVIpKTsNCg0KTmVlZCBhbiBleHRyYSBzcGFjZSBgTUFYX0RQQl9TSVpF LHNpemVvZmAgLT4gYE1BWF9EUEJfU0laRSwgc2l6ZW9mYA0KDQo+PiArICAgIH0NCj4+ICsNCj4+ ICsgICAgaWYgKGN0eC0+aXNfdGV4dHVyZV9hcnJheSkgew0KPj4gKyAgICAgICAgIC8vIEluIFRl eHR1cmUgYXJyYXkgbW9kZSwgdGhlIEQzRDEyIHVzZXMgdGhlIHNhbWUgdGV4dHVyZSBhcnJheQ0K Pj4gKHJlc291cmNlKWZvciBhbGwNCj4+ICsgICAgICAgICAvLyB0aGUgcmVmZXJlbmNlIHBpY3Mg aW4gcHBUZXh0dXJlMkRzIGFuZCBhbHNvIGZvciB0aGUNCj4+IHBSZWNvbnN0cnVjdGVkUGljdHVy ZSwNCj4+ICsgICAgICAgICAvLyBqdXN0IGRpZmZlcmVudCBzdWJyZXNvdXJjZXMuDQo+PiArICAg ICAgICBEM0QxMl9SRVNPVVJDRV9ERVNDIHJlZmVyZW5jZXNfdGV4X2FycmF5X2Rlc2MgPSB7IDAg fTsNCj4+ICsNCj4+ICsgcGljLT5yZWNvbl9zdXJmYWNlLT50ZXh0dXJlLT5scFZ0YmwtPkdldERl c2MocGljLT5yZWNvbl9zdXJmYWNlLT50ZXh0dQ0KPj4gKyByZSwgJnJlZmVyZW5jZXNfdGV4X2Fy cmF5X2Rlc2MpOw0KPj4gKw0KPj4gKyAgICAgICAgZm9yICh1aW50MzJfdCByZWZlcmVuY2Vfc3Vi cmVzb3VyY2UgPSAwOyByZWZlcmVuY2Vfc3VicmVzb3VyY2UgPA0KPj4gcmVmZXJlbmNlc190ZXhf YXJyYXlfZGVzYy5EZXB0aE9yQXJyYXlTaXplOw0KPj4gKyAgICAgICAgICAgIHJlZmVyZW5jZV9z dWJyZXNvdXJjZSsrKSB7DQo+PiArDQo+PiArICAgICAgICAgICAgLy9EM0QxMiBEZWNvbXBvc2VT dWJyZXNvdXJjZQ0KPj4gKyAgICAgICAgICAgIHVpbnQzMl90IG1pcF9zbGljZSwgcGxhbmVfc2xp Y2UsIGFycmF5X3NsaWNlLCBhcnJheV9zaXplOw0KDQp1c2UgdGhlIGZvbGxvd2luZyBjb2RlcyBh bmQgeW91IGNhbiByZW1vdmUgdGhpcyBsaW5lOg0KICAgIHVpbnQzMl90IGFycmFfc2l6ZSAgID0g Li4uDQogICAgdWludDMyX3QgbWlwX3NsaWNlICAgPSAuLi4NCiAgICB1aW50MzJfdCBhcnJheV9z bGljZSA9IC4uLg0KICAgIGZvciAodWludDMyX3QgcGxhbmVfc2xpY2UgPSAwOyAuLi4gKQ0KDQo+ PiArICAgICAgICAgICAgYXJyYXlfc2l6ZSA9IHJlZmVyZW5jZXNfdGV4X2FycmF5X2Rlc2MuRGVw dGhPckFycmF5U2l6ZTsNCj4+ICsgICAgICAgICAgICBtaXBfc2xpY2UgPSByZWZlcmVuY2Vfc3Vi cmVzb3VyY2UgJQ0KPj4gcmVmZXJlbmNlc190ZXhfYXJyYXlfZGVzYy5NaXBMZXZlbHM7DQo+PiAr ICAgICAgICAgICAgYXJyYXlfc2xpY2UgPSAocmVmZXJlbmNlX3N1YnJlc291cmNlIC8NCj4+ICsg cmVmZXJlbmNlc190ZXhfYXJyYXlfZGVzYy5NaXBMZXZlbHMpICUgYXJyYXlfc2l6ZTsNCj4+ICsN Cj4+ICsgICAgICAgICAgICBmb3IgKHBsYW5lX3NsaWNlID0gMDsgcGxhbmVfc2xpY2UgPCBjdHgt PnBsYW5lX2NvdW50OyBwbGFuZV9zbGljZSsrKSB7DQo+PiArICAgICAgICAgICAgICAgIC8vQ2Fs Y3VsYXRlIHRoZSBzdWJyZXNvdXJjZSBpbmRleA0KPj4gKyAgICAgICAgICAgICAgICB1aW50MzJf dCBwbGFuZU91dHB1dFN1YnJlc291cmNlID0gbWlwX3NsaWNlICsgYXJyYXlfc2xpY2UgKg0KPj4g cmVmZXJlbmNlc190ZXhfYXJyYXlfZGVzYy5NaXBMZXZlbHMgKw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV9zbGljZSAqIHJlZmVyZW5jZXNfdGV4X2Fy cmF5X2Rlc2MuTWlwTGV2ZWxzICoNCj4+IGFycmF5X3NpemU7DQoNCnBsYW5lT3V0cHV0U3VicmVz b3VyY2UgaXMgd3JvbmcgbmFtaW5nIGFuZCBiZXR0ZXIgYWRkIHRoaXMgc3RhdGVtZW50IGFzIGEg ZnVuY3Rpb246IGQzZDEydmFfY2FsX3N1YnJlc291cmNlX2luZGV4Lg0KDQo+PiArICAgICAgICAg ICAgICAgIGlmIChyZWZlcmVuY2Vfc3VicmVzb3VyY2UgPT0gcGljLT5zdWJyZXNvdXJjZV9pbmRl eCkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgYmFycmllcnNfcmVmW2JhcnJpZXJzX3JlZl9p bmRleCsrXSA9IFRSQU5TSVRJT05fQkFSUklFUihwaWMtDQo+PiA+cmVjb25fc3VyZmFjZS0+dGV4 dHVyZSwgcGxhbmVPdXRwdXRTdWJyZXNvdXJjZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9W SURFT19FTkNPREVfV1JJVEUpOw0KPj4gKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KPj4gKyAg ICAgICAgICAgICAgICAgICAgYmFycmllcnNfcmVmW2JhcnJpZXJzX3JlZl9pbmRleCsrXSA9IFRS QU5TSVRJT05fQkFSUklFUihwaWMtDQo+PiA+cmVjb25fc3VyZmFjZS0+dGV4dHVyZSwgcGxhbmVP dXRwdXRTdWJyZXNvdXJjZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURFT19FTkNPREVf UkVBRCk7DQo+PiArICAgICAgICAgICAgICAgIH0NCj4+ICsgICAgICAgICAgICB9DQo+PiArICAg ICAgICB9DQo+PiArICAgIH0gZWxzZSB7DQo+PiArICAgICAgICBiYXJyaWVyc19yZWZbYmFycmll cnNfcmVmX2luZGV4KytdID0gVFJBTlNJVElPTl9CQVJSSUVSKHBpYy0NCj4+ID5yZWNvbl9zdXJm YWNlLT50ZXh0dXJlLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEM0QxMl9SRVNPVVJDRV9CQVJSSUVSX0FMTF9TVUJSRVNPVVJDRVMsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1P TiwNCj4+ICsNCj4+ICsgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9fRU5DT0RFX1dSSVRFKTsN Cj4+ICsNCj4+ICsgICAgICAgIGlmIChkM2QxMl9yZWZzLk51bVRleHR1cmUyRHMpIHsNCj4+ICsg ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZDNkMTJfcmVmcy5OdW1UZXh0dXJlMkRzOyBpKysp DQo+PiArICAgICAgICAgICAgICAgIGJhcnJpZXJzX3JlZltiYXJyaWVyc19yZWZfaW5kZXgrK10g PQ0KPj4gVFJBTlNJVElPTl9CQVJSSUVSKGQzZDEyX3JlZnMucHBUZXh0dXJlMkRzW2ldLA0KPj4g Kw0KPj4gRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNP VVJDRV9TVEFURV9DT01NT04sDQo+PiArDQo+PiBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURFT19F TkNPREVfUkVBRCk7DQo+PiArICAgICAgICB9DQo+PiAgICAgIH0NCj4+ICsgICAgSUQzRDEyVmlk ZW9FbmNvZGVDb21tYW5kTGlzdDJfUmVzb3VyY2VCYXJyaWVyKGNtZF9saXN0LA0KPj4gKyBiYXJy aWVyc19yZWZfaW5kZXgsIGJhcnJpZXJzX3JlZik7DQo+Pg0KPj4gICAgICBJRDNEMTJWaWRlb0Vu Y29kZUNvbW1hbmRMaXN0Ml9FbmNvZGVGcmFtZShjbWRfbGlzdCwgY3R4LT5lbmNvZGVyLCBjdHgt DQo+PiA+ZW5jb2Rlcl9oZWFwLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmaW5wdXRfYXJncywgJm91dHB1dF9hcmdzKTsNCj4+DQo+PiAgICAgIGJh cnJpZXJzWzNdID0gVFJBTlNJVElPTl9CQVJSSUVSKHBpYy0+ZW5jb2RlZF9tZXRhZGF0YSwNCj4+ ICsNCj4+ICsgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9W SURFT19FTkNPREVfV1JJVEUsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX1ZJREVPX0VOQ09ERV9SRUFEKTsNCj4+DQo+PiBAQCAt NDIyLDM1ICs0ODcsMzUgQEAgc3RhdGljIGludCBkM2QxMnZhX2VuY29kZV9pc3N1ZShBVkNvZGVj Q29udGV4dA0KPj4gKmF2Y3R4LA0KPj4NCj4+DQo+PiBJRDNEMTJWaWRlb0VuY29kZUNvbW1hbmRM aXN0Ml9SZXNvbHZlRW5jb2Rlck91dHB1dE1ldGFkYXRhKGNtZF9saXN0LA0KPj4gJmlucHV0X21l dGFkYXRhLCAmb3V0cHV0X21ldGFkYXRhKTsNCj4+DQo+PiAtICAgIGlmIChkM2QxMl9yZWZzLk51 bVRleHR1cmUyRHMpIHsNCj4+IC0gICAgICAgIEQzRDEyX1JFU09VUkNFX0JBUlJJRVIgcmVmc19i YXJyaWVyc1szXTsNCj4+IC0NCj4+IC0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBkM2QxMl9yZWZz Lk51bVRleHR1cmUyRHM7IGkrKykNCj4+IC0gICAgICAgICAgICByZWZzX2JhcnJpZXJzW2ldID0g VFJBTlNJVElPTl9CQVJSSUVSKGQzZDEyX3JlZnMucHBUZXh0dXJlMkRzW2ldLA0KPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VS Q0VfU1RBVEVfVklERU9fRU5DT0RFX1JFQUQsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT04pOw0K Pj4gLQ0KPj4gLSAgICAgICAgSUQzRDEyVmlkZW9FbmNvZGVDb21tYW5kTGlzdDJfUmVzb3VyY2VC YXJyaWVyKGNtZF9saXN0LA0KPj4gZDNkMTJfcmVmcy5OdW1UZXh0dXJlMkRzLA0KPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNfYmFy cmllcnMpOw0KPj4gKyAgICAvL3N3YXAgdGhlIGJhcnJpZXJzX3JlZiB0cmFuc2l0aW9uIHN0YXRl DQoNCk5vIG5lZWQuIFRoZSBjb2RlIGhhcyBiZWVuIHRlbGxpbmcgdXMgdGhhdCBpdCBpcyBzd2Fw cGluZyB0aGUgYmFycmllciBzdGF0ZS4NCg0KPj4gKyAgICBpZiAoYmFycmllcnNfcmVmX2luZGV4 ID4gMCkgew0KPj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGJhcnJpZXJzX3JlZl9pbmRleDsg aSsrKSB7DQo+PiArICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVTIHRlbXBfc3RhdHVl ID0NCj4+IGJhcnJpZXJzX3JlZltpXS5UcmFuc2l0aW9uLlN0YXRlQmVmb3JlOw0KPj4gKyAgICAg ICAgICAgIGJhcnJpZXJzX3JlZltpXS5UcmFuc2l0aW9uLlN0YXRlQmVmb3JlID0NCj4+IGJhcnJp ZXJzX3JlZltpXS5UcmFuc2l0aW9uLlN0YXRlQWZ0ZXI7DQo+PiArICAgICAgICAgICAgYmFycmll cnNfcmVmW2ldLlRyYW5zaXRpb24uU3RhdGVBZnRlciA9IHRlbXBfc3RhdHVlOw0KPj4gKyAgICAg ICAgfQ0KDQpDYW4gd2UgdXNlIEZGU1dBUD8NCg0KPj4gKyAgICAgICAgSUQzRDEyVmlkZW9FbmNv ZGVDb21tYW5kTGlzdDJfUmVzb3VyY2VCYXJyaWVyKGNtZF9saXN0LA0KPj4gYmFycmllcnNfcmVm X2luZGV4LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJhcnJpZXJzX3JlZik7DQo+PiAgICAgIH0NCj4+DQo+PiAgICAgIGJhcnJpZXJz WzBdID0gVFJBTlNJVElPTl9CQVJSSUVSKHBpYy0+aW5wdXRfc3VyZmFjZS0+dGV4dHVyZSwNCj4+ ICsNCj4+ICsgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9W SURFT19FTkNPREVfUkVBRCwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OKTsNCj4+ICAgICAgYmFycmllcnNbMV0gPSBU UkFOU0lUSU9OX0JBUlJJRVIocGljLT5vdXRwdXRfYnVmZmVyLA0KPj4gKw0KPj4gKyBEM0QxMl9S RVNPVVJDRV9CQVJSSUVSX0FMTF9TVUJSRVNPVVJDRVMsDQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX1ZJREVPX0VOQ09ERV9XUklU RSwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VS Q0VfU1RBVEVfQ09NTU9OKTsNCj4+IC0gICAgYmFycmllcnNbMl0gPSBUUkFOU0lUSU9OX0JBUlJJ RVIocGljLT5yZWNvbl9zdXJmYWNlLT50ZXh0dXJlLA0KPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURFT19FTkNPREVfV1JJVEUs DQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNF X1NUQVRFX0NPTU1PTik7DQo+PiAtICAgIGJhcnJpZXJzWzNdID0gVFJBTlNJVElPTl9CQVJSSUVS KHBpYy0+ZW5jb2RlZF9tZXRhZGF0YSwNCj4+ICsgICAgYmFycmllcnNbMl0gPSBUUkFOU0lUSU9O X0JBUlJJRVIocGljLT5lbmNvZGVkX21ldGFkYXRhLA0KPj4gKw0KPj4gKyBEM0QxMl9SRVNPVVJD RV9CQVJSSUVSX0FMTF9TVUJSRVNPVVJDRVMsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX1ZJREVPX0VOQ09ERV9SRUFELA0KPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFU RV9DT01NT04pOw0KPj4gLSAgICBiYXJyaWVyc1s0XSA9IFRSQU5TSVRJT05fQkFSUklFUihwaWMt PnJlc29sdmVkX21ldGFkYXRhLA0KPj4gKyAgICBiYXJyaWVyc1szXSA9IFRSQU5TSVRJT05fQkFS UklFUihwaWMtPnJlc29sdmVkX21ldGFkYXRhLA0KPj4gKw0KPj4gKyBEM0QxMl9SRVNPVVJDRV9C QVJSSUVSX0FMTF9TVUJSRVNPVVJDRVMsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX1ZJREVPX0VOQ09ERV9XUklURSwNCj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVf Q09NTU9OKTsNCj4+DQo+PiAtICAgIElEM0QxMlZpZGVvRW5jb2RlQ29tbWFuZExpc3QyX1Jlc291 cmNlQmFycmllcihjbWRfbGlzdCwgNSwgYmFycmllcnMpOw0KPj4gKyAgICBJRDNEMTJWaWRlb0Vu Y29kZUNvbW1hbmRMaXN0Ml9SZXNvdXJjZUJhcnJpZXIoY21kX2xpc3QsIDQsDQo+PiArIGJhcnJp ZXJzKTsNCj4+DQo+PiAgICAgIGhyID0gSUQzRDEyVmlkZW9FbmNvZGVDb21tYW5kTGlzdDJfQ2xv c2UoY21kX2xpc3QpOw0KPj4gICAgICBpZiAoRkFJTEVEKGhyKSkgew0KPj4gQEAgLTQ4OSw2ICs1 NTQsMTQgQEAgc3RhdGljIGludCBkM2QxMnZhX2VuY29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dA0K Pj4gKmF2Y3R4LA0KPj4gICAgICBpZiAoZDNkMTJfcmVmcy5wcFRleHR1cmUyRHMpDQo+PiAgICAg ICAgICBhdl9mcmVlcCgmZDNkMTJfcmVmcy5wcFRleHR1cmUyRHMpOw0KPj4NCj4+ICsgICAgaWYg KGN0eC0+aXNfdGV4dHVyZV9hcnJheSkgew0KPj4gKyAgICAgICAgaWYgKGQzZDEyX3JlZnMucFN1 YnJlc291cmNlcykNCj4+ICsgICAgICAgICAgICBhdl9mcmVlcCgmZDNkMTJfcmVmcy5wU3VicmVz b3VyY2VzKTsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBpZiAoYmFycmllcnNfcmVmKQ0KPj4g KyAgICAgICAgYXZfZnJlZXAoJmJhcnJpZXJzX3JlZik7DQo+PiArDQo+PiAgICAgIHJldHVybiAw Ow0KPj4NCj4+ICBmYWlsOg0KPj4gQEAgLTQ5OCw2ICs1NzEsMTQgQEAgZmFpbDoNCj4+ICAgICAg aWYgKGQzZDEyX3JlZnMucHBUZXh0dXJlMkRzKQ0KPj4gICAgICAgICAgYXZfZnJlZXAoJmQzZDEy X3JlZnMucHBUZXh0dXJlMkRzKTsNCj4+DQo+PiArICAgIGlmIChjdHgtPmlzX3RleHR1cmVfYXJy YXkpIHsNCj4+ICsgICAgICAgIGlmIChkM2QxMl9yZWZzLnBTdWJyZXNvdXJjZXMpDQo+PiArICAg ICAgICAgICAgYXZfZnJlZXAoJmQzZDEyX3JlZnMucFN1YnJlc291cmNlcyk7DQo+PiArICAgIH0N Cj4+ICsNCj4+ICsgICAgaWYgKGJhcnJpZXJzX3JlZikNCj4+ICsgICAgICAgIGF2X2ZyZWVwKCZi YXJyaWVyc19yZWYpOw0KPj4gKw0KPj4gICAgICBpZiAoY3R4LT5jb2RlYy0+ZnJlZV9waWN0dXJl X3BhcmFtcykNCj4+ICAgICAgICAgIGN0eC0+Y29kZWMtPmZyZWVfcGljdHVyZV9wYXJhbXMocGlj KTsNCj4+DQo+PiBAQCAtMTM0MSw2ICsxNDIyLDcgQEAgZmFpbDoNCj4+ICBzdGF0aWMgaW50IGQz ZDEydmFfZW5jb2RlX2NyZWF0ZV9yZWNvbl9mcmFtZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KSAg ew0KPj4gICAgICBGRkhXQmFzZUVuY29kZUNvbnRleHQgKmJhc2VfY3R4ID0gYXZjdHgtPnByaXZf ZGF0YTsNCj4+ICsgICAgRDNEMTJWQUVuY29kZUNvbnRleHQgICAgICAgKmN0eCA9IGF2Y3R4LT5w cml2X2RhdGE7DQo+PiAgICAgIEFWRDNEMTJWQUZyYW1lc0NvbnRleHQgKmh3Y3R4Ow0KPj4gICAg ICBlbnVtIEFWUGl4ZWxGb3JtYXQgcmVjb25fZm9ybWF0Ow0KPj4gICAgICBpbnQgZXJyOw0KPj4g QEAgLTEzNjQsNiArMTQ0Niw4IEBAIHN0YXRpYyBpbnQNCj4+IGQzZDEydmFfZW5jb2RlX2NyZWF0 ZV9yZWNvbl9mcmFtZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0KPj4gICAgICBod2N0eC0+Zmxh Z3MgPSBEM0QxMl9SRVNPVVJDRV9GTEFHX1ZJREVPX0VOQ09ERV9SRUZFUkVOQ0VfT05MWQ0KPj4g fA0KPj4gICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9GTEFHX0RFTllfU0hBREVS X1JFU09VUkNFOw0KPj4NCj4+ICsgICAgaHdjdHgtPnRleHR1cmVfYXJyYXlfc2l6ZSA9IGN0eC0+ aXNfdGV4dHVyZV9hcnJheSA/IE1BWF9EUEJfU0laRSArDQo+PiArIDEgOiAwOw0KDQpDYW4gd2Ug dXNlIGluaXRpYWxfcG9vbF9zaXplPw0KDQo+PiArDQo+PiAgICAgIGVyciA9IGF2X2h3ZnJhbWVf Y3R4X2luaXQoYmFzZV9jdHgtPnJlY29uX2ZyYW1lc19yZWYpOw0KPj4gICAgICBpZiAoZXJyIDwg MCkgew0KPj4gICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8g aW5pdGlhbGlzZSByZWNvbnN0cnVjdGVkICINCj4+IEBAIC0xMzk2LDYgKzE0ODAsNyBAQCBpbnQg ZmZfZDNkMTJ2YV9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpDQo+PiAgICAgIEZG SFdCYXNlRW5jb2RlQ29udGV4dCAqYmFzZV9jdHggPSBhdmN0eC0+cHJpdl9kYXRhOw0KPj4gICAg ICBEM0QxMlZBRW5jb2RlQ29udGV4dCAgICAgICAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsNCj4+ ICAgICAgRDNEMTJfRkVBVFVSRV9EQVRBX1ZJREVPX0ZFQVRVUkVfQVJFQV9TVVBQT1JUIHN1cHBv cnQgPSB7IDAgfTsNCj4+ICsgICAgRDNEMTJfRkVBVFVSRV9EQVRBX0ZPUk1BVF9JTkZPIGZvcm1h dF9pbmZvID0gezB9Ow0KPj4gICAgICBpbnQgZXJyOw0KPj4gICAgICBIUkVTVUxUIGhyOw0KPj4N Cj4+IEBAIC0xNDMxLDYgKzE1MTYsMTUgQEAgaW50IGZmX2QzZDEydmFfZW5jb2RlX2luaXQoQVZD b2RlY0NvbnRleHQgKmF2Y3R4KQ0KPj4gICAgICAgICAgZ290byBmYWlsOw0KPj4gICAgICB9DQo+ Pg0KPj4gKyAgICBmb3JtYXRfaW5mby5Gb3JtYXQgPSAoKEFWRDNEMTJWQUZyYW1lc0NvbnRleHQq KWJhc2VfY3R4LT5pbnB1dF9mcmFtZXMtDQo+PiA+aHdjdHgpLT5mb3JtYXQ7DQo+PiArICAgIGlm IChGQUlMRUQoSUQzRDEyVmlkZW9EZXZpY2VfQ2hlY2tGZWF0dXJlU3VwcG9ydChjdHgtPmh3Y3R4 LT5kZXZpY2UsDQo+PiBEM0QxMl9GRUFUVVJFX0ZPUk1BVF9JTkZPLA0KPj4gKyAgICAgICAgJmZv cm1hdF9pbmZvLCBzaXplb2YoZm9ybWF0X2luZm8pKSkpIHsNCj4+ICsgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHF1ZXJ5IGZvcm1hdCBwbGFuZSBjb3VudDoN Cj4+IDB4JXhcbiIsIGhyKTsNCj4+ICsgICAgICAgIGVyciA9IEFWRVJST1JfRVhURVJOQUw7DQo+ PiArICAgICAgICBnb3RvIGZhaWw7DQo+PiArICAgIH0NCj4+ICsgICAgY3R4LT5wbGFuZV9jb3Vu dCA9IGZvcm1hdF9pbmZvLlBsYW5lQ291bnQ7DQo+PiArDQo+PiAgICAgIGVyciA9IGQzZDEydmFf ZW5jb2RlX3NldF9wcm9maWxlKGF2Y3R4KTsNCj4+ICAgICAgaWYgKGVyciA8IDApDQo+PiAgICAg ICAgICBnb3RvIGZhaWw7DQo+PiBAQCAtMTQ1OCwxMCArMTU1Miw2IEBAIGludCBmZl9kM2QxMnZh X2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkNCj4+ICAgICAgaWYgKGVyciA8IDAp DQo+PiAgICAgICAgICBnb3RvIGZhaWw7DQo+Pg0KPj4gLSAgICBlcnIgPSBkM2QxMnZhX2VuY29k ZV9jcmVhdGVfcmVjb25fZnJhbWVzKGF2Y3R4KTsNCj4+IC0gICAgaWYgKGVyciA8IDApDQo+PiAt ICAgICAgICBnb3RvIGZhaWw7DQo+PiAtDQo+PiAgICAgIGVyciA9IGQzZDEydmFfZW5jb2RlX3By ZXBhcmVfb3V0cHV0X2J1ZmZlcnMoYXZjdHgpOw0KPj4gICAgICBpZiAoZXJyIDwgMCkNCj4+ICAg ICAgICAgIGdvdG8gZmFpbDsNCj4+IEBAIC0xNDg3LDYgKzE1NzcsMTAgQEAgaW50IGZmX2QzZDEy dmFfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0KPj4gICAgICAgICAgICAgIGdv dG8gZmFpbDsNCj4+ICAgICAgfQ0KPj4NCj4+ICsgICAgZXJyID0gZDNkMTJ2YV9lbmNvZGVfY3Jl YXRlX3JlY29uX2ZyYW1lcyhhdmN0eCk7DQo+PiArICAgIGlmIChlcnIgPCAwKQ0KPj4gKyAgICAg ICAgZ290byBmYWlsOw0KPj4gKw0KPj4gICAgICBiYXNlX2N0eC0+b3V0cHV0X2RlbGF5ID0gYmFz ZV9jdHgtPmJfcGVyX3A7DQo+PiAgICAgIGJhc2VfY3R4LT5kZWNvZGVfZGVsYXkgPSBiYXNlX2N0 eC0+bWF4X2JfZGVwdGg7DQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZDNkMTJ2YV9l bmNvZGUuaCBiL2xpYmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGUuaCBpbmRleA0KPj4gM2IwYjgxNTNk NS4uYzhlNjRkZGZmZCAxMDA2NDQNCj4+IC0tLSBhL2xpYmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGUu aA0KPj4gKysrIGIvbGliYXZjb2RlYy9kM2QxMnZhX2VuY29kZS5oDQo+PiBAQCAtNTIsNiArNTIs OCBAQCB0eXBlZGVmIHN0cnVjdCBEM0QxMlZBRW5jb2RlUGljdHVyZSB7DQo+PiAgICAgIElEM0Qx MlJlc291cmNlICplbmNvZGVkX21ldGFkYXRhOw0KPj4gICAgICBJRDNEMTJSZXNvdXJjZSAqcmVz b2x2ZWRfbWV0YWRhdGE7DQo+Pg0KPj4gKyAgICBpbnQgICAgICAgICAgICBzdWJyZXNvdXJjZV9p bmRleDsNCj4+ICsNCj4+ICAgICAgRDNEMTJfVklERU9fRU5DT0RFUl9QSUNUVVJFX0NPTlRST0xf Q09ERUNfREFUQSBwaWNfY3RsOw0KPj4NCj4+ICAgICAgaW50ICAgICAgICAgICAgIGZlbmNlX3Zh bHVlOw0KPj4gQEAgLTE4OSw2ICsxOTEsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgRDNEMTJWQUVuY29k ZUNvbnRleHQgew0KPj4gICAgICAgKi8NCj4+ICAgICAgQVZCdWZmZXJQb29sICpvdXRwdXRfYnVm ZmVyX3Bvb2w7DQo+Pg0KPj4gKyAgICAvKioNCj4+ICsgICAgICogRmxhZyBpbmRpY2F0ZXMgaWYg dGhlIEhXIGlzIHRleHR1cmUgYXJyYXkgbW9kZS4NCj4+ICsgICAgICovDQo+PiArICAgIGludCBp c190ZXh0dXJlX2FycmF5Ow0KPj4gKw0KDQpEbyB3ZSByZWFsbHkgbmVlZCBpdD8gSWYgdGhlIHRl eHR1cmVfYXJyYXkgb2YgaHdmcmFtZWN0eCBpcyBub3QgTlVMTCwgaXQgaXMgdGV4dHVyZSBhcnJh eSBtb2RlLCByaWdodD8NCg0KPj4gKyAgICAvKioNCj4+ICsgICAgICogVGhlIG51bWJlciBvZiBw bGFuZXMgaW4gdGhlIGlucHV0IERYR0kgRk9STUFUIC4NCj4+ICsgICAgICovDQo+PiArICAgIGlu dCBwbGFuZV9jb3VudDsNCj4+ICsNCj4+ICAgICAgLyoqDQo+PiAgICAgICAqIEQzRDEyIHZpZGVv IGVuY29kZXIuDQo+PiAgICAgICAqLw0KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZDNkMTJ2 YV9lbmNvZGVfaGV2Yy5jDQo+PiBiL2xpYmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGVfaGV2Yy5jDQo+ PiBpbmRleCA5MzhiYTAxZjU0Li43ZTFkOTczZjdlIDEwMDY0NA0KPj4gLS0tIGEvbGliYXZjb2Rl Yy9kM2QxMnZhX2VuY29kZV9oZXZjLmMNCj4+ICsrKyBiL2xpYmF2Y29kZWMvZDNkMTJ2YV9lbmNv ZGVfaGV2Yy5jDQo+PiBAQCAtMjgwLDkgKzI4MCw4IEBAIHN0YXRpYyBpbnQNCj4+IGQzZDEydmFf ZW5jb2RlX2hldmNfaW5pdF9zZXF1ZW5jZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0K Pj4gICAgICB9DQo+Pg0KPj4gICAgICBpZiAoc3VwcG9ydC5TdXBwb3J0RmxhZ3MgJg0KPj4gRDNE MTJfVklERU9fRU5DT0RFUl9TVVBQT1JUX0ZMQUdfUkVDT05TVFJVQ1RFRF9GUkFNRVNfUkVRVUlS DQo+PiBFX1RFWFRVUkVfQVJSQVlTKSB7DQo+PiAtICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19FUlJPUiwgIkQzRDEyIHZpZGVvIGVuY29kZSBvbiB0aGlzIGRldmljZSByZXF1aXJlcw0KPj4g dGV4dHVyZSBhcnJheSBzdXBwb3J0LCAiDQo+PiAtICAgICAgICAgICAgICAgImJ1dCBpdCdzIG5v dCBpbXBsZW1lbnRlZC5cbiIpOw0KPj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFUQ0hXRUxD T01FOw0KPj4gKyAgICAgICAgY3R4LT5pc190ZXh0dXJlX2FycmF5ID0gMTsNCj4+ICsgICAgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiRDNEMTIgdmlkZW8gZW5jb2RlIG9uIHRoaXMg ZGV2aWNlDQo+PiArIHVzZXMgdGV4dHVyZSBhcnJheSBtb2RlLlxuIik7DQo+PiAgICAgIH0NCj4+ DQo+PiAgICAgIGRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KGJhc2VfY3R4LT5pbnB1dF9mcmFt ZXMtPnN3X2Zvcm1hdCk7DQo+PiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2Qx MnZhLmMgYi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuYyBpbmRleA0KPj4gNjUwN2NmNjlj MS4uMDU0MThjOWQ5NCAxMDA2NDQNCj4+IC0tLSBhL2xpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2 YS5jDQo+PiArKysgYi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuYw0KPj4gQEAgLTQ5LDYg KzQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRDNEMTJWQUZyYW1lc0NvbnRleHQgew0KPj4gICAgICBJ RDNEMTJHcmFwaGljc0NvbW1hbmRMaXN0ICpjb21tYW5kX2xpc3Q7DQo+PiAgICAgIEFWRDNEMTJW QVN5bmNDb250ZXh0ICAgICAgIHN5bmNfY3R4Ow0KPj4gICAgICBVSU5UICAgICAgICAgICAgICAg ICAgICAgICBsdW1hX2NvbXBvbmVudF9zaXplOw0KPj4gKyAgICBpbnQgICAgICAgICAgICAgICAg ICAgICAgICBuYl9zdXJmYWNlc191c2VkOw0KPj4gIH0gRDNEMTJWQUZyYW1lc0NvbnRleHQ7DQo+ Pg0KPj4gIHR5cGVkZWYgc3RydWN0IEQzRDEyVkFEZXZpY2VQcml2IHsNCj4+IEBAIC0xNzQsNyAr MTc1LDggQEAgZmFpbDoNCj4+DQo+PiAgc3RhdGljIHZvaWQgZDNkMTJ2YV9mcmFtZXNfdW5pbml0 KEFWSFdGcmFtZXNDb250ZXh0ICpjdHgpICB7DQo+PiAtICAgIEQzRDEyVkFGcmFtZXNDb250ZXh0 ICpzID0gY3R4LT5od2N0eDsNCj4+ICsgICAgRDNEMTJWQUZyYW1lc0NvbnRleHQgICAqcyAgICAg PSBjdHgtPmh3Y3R4Ow0KPj4gKyAgICBBVkQzRDEyVkFGcmFtZXNDb250ZXh0ICpod2N0eCA9IGN0 eC0+aHdjdHg7DQo+Pg0KPj4gICAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShzLT5zeW5jX2N0eC5m ZW5jZSk7DQo+PiAgICAgIGlmIChzLT5zeW5jX2N0eC5ldmVudCkNCj4+IEBAIC0xODUsNiArMTg3 LDExIEBAIHN0YXRpYyB2b2lkDQo+PiBkM2QxMnZhX2ZyYW1lc191bmluaXQoQVZIV0ZyYW1lc0Nv bnRleHQgKmN0eCkNCj4+ICAgICAgRDNEMTJfT0JKRUNUX1JFTEVBU0Uocy0+Y29tbWFuZF9hbGxv Y2F0b3IpOw0KPj4gICAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShzLT5jb21tYW5kX2xpc3QpOw0K Pj4gICAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShzLT5jb21tYW5kX3F1ZXVlKTsNCj4+ICsNCj4+ ICsgICAgaWYgKGh3Y3R4LT50ZXh0dXJlX2FycmF5KSB7DQo+PiArICAgICAgICBEM0QxMl9PQkpF Q1RfUkVMRUFTRShod2N0eC0+dGV4dHVyZV9hcnJheSk7DQo+PiArICAgICAgICBod2N0eC0+dGV4 dHVyZV9hcnJheSA9IE5VTEw7DQo+PiArICAgIH0NCj4+ICB9DQo+Pg0KDQpEM0QxMl9PQkpFQ1Rf UkVMRUFTRShod2N0eC0+dGV4dHVyZV9hcnJheSkgaXMgZW5vdWdoLiBEM0QxMl9PQkpFQ1RfUkVM RUFTRSB3aWxsIHJlbGVhc2UgaXQgYW5kIHNldCBpdCB0byBOVUxMIGlmIGl0J3Mgbm90IE5VTEwu DQoNCj4+ICBzdGF0aWMgaW50IGQzZDEydmFfZnJhbWVzX2dldF9jb25zdHJhaW50cyhBVkhXRGV2 aWNlQ29udGV4dCAqY3R4LCBjb25zdCB2b2lkDQo+PiAqaHdjb25maWcsIEFWSFdGcmFtZXNDb25z dHJhaW50cyAqY29uc3RyYWludHMpIEBAIC0yMjgsNiArMjM1LDI4IEBADQo+PiBzdGF0aWMgdm9p ZCBmcmVlX3RleHR1cmUodm9pZCAqb3BhcXVlLCB1aW50OF90ICpkYXRhKQ0KPj4gICAgICBhdl9m cmVlcCgmZGF0YSk7DQo+PiAgfQ0KPj4NCj4+ICtzdGF0aWMgQVZCdWZmZXJSZWYgKmQzZDEydmFf cG9vbF9hbGxvY190ZXh0dXJlX2FycmF5KEFWSFdGcmFtZXNDb250ZXh0DQo+PiArKmN0eCkgew0K Pj4gKyAgICBBVkQzRDEyVkFGcmFtZSAgICAgICAgICpkZXNjICA9IGF2X21hbGxvY3ooc2l6ZW9m KCpkZXNjKSk7DQo+PiArICAgIEQzRDEyVkFGcmFtZXNDb250ZXh0ICAgKnMgICAgID0gY3R4LT5o d2N0eDsNCj4+ICsgICAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqaHdjdHggPSBjdHgtPmh3Y3R4 Ow0KPj4gKyAgICBBVkJ1ZmZlclJlZiAqYnVmOw0KPj4gKw0KPj4gKyAgICAvLyBJbiBUZXh0dXJl IGFycmF5IG1vZGUsIHRoZSBEM0QxMiB1c2VzIHRoZSBzYW1lIHRleHR1cmUgYWRkcmVzcyBmb3Ig YWxsIHRoZQ0KPj4gcGljdHVyZXMsDQo+PiArICAgIC8vanVzdCBkaWZmZXJlbnQgc3VicmVzb3Vy Y2VzLg0KPj4gKyAgICBkZXNjLT5zdWJyZXNvdXJjZV9pbmRleCA9IHMtPm5iX3N1cmZhY2VzX3Vz ZWQ7DQo+PiArICAgIGRlc2MtPnRleHR1cmUgPSBod2N0eC0+dGV4dHVyZV9hcnJheTsNCj4+ICsN Cj4+ICsgICAgYnVmID0gYXZfYnVmZmVyX2NyZWF0ZSgodWludDhfdCAqKWRlc2MsIHNpemVvZigq ZGVzYyksIE5VTEwsIE5VTEwsDQo+PiArIDApOw0KPj4gKw0KPj4gKyAgICBpZiAoIWJ1Zikgew0K Pj4gKyAgICAgICAgYXZfZnJlZShkZXNjKTsNCj4+ICsgICAgICAgIHJldHVybiBOVUxMOw0KPj4g KyAgICB9DQo+PiArICAgIHMtPm5iX3N1cmZhY2VzX3VzZWQrKzsNCj4+ICsgICAgcmV0dXJuIGJ1 ZjsNCj4+ICt9DQo+PiArDQo+PiAgc3RhdGljIEFWQnVmZmVyUmVmICpkM2QxMnZhX3Bvb2xfYWxs b2Modm9pZCAqb3BhcXVlLCBzaXplX3Qgc2l6ZSkgIHsNCj4+ICAgICAgQVZIV0ZyYW1lc0NvbnRl eHQgICAgICAqY3R4ICAgICAgICAgID0gKEFWSFdGcmFtZXNDb250ZXh0ICopb3BhcXVlOw0KPj4g QEAgLTIzNiw2ICsyNjUsMTEgQEAgc3RhdGljIEFWQnVmZmVyUmVmICpkM2QxMnZhX3Bvb2xfYWxs b2Modm9pZCAqb3BhcXVlLA0KPj4gc2l6ZV90IHNpemUpDQo+Pg0KPj4gICAgICBBVkJ1ZmZlclJl ZiAqYnVmOw0KPj4gICAgICBBVkQzRDEyVkFGcmFtZSAqZnJhbWU7DQo+PiArDQo+PiArICAgIC8v Rm9yIHRleHR1cmUgYXJyYXkgbW9kZSwgbm8gbmVlZCB0byBjcmVhdGUgdGV4dHVyZS4NCj4+ICsg ICAgaWYgKGh3Y3R4LT50ZXh0dXJlX2FycmF5X3NpemUgPiAwKQ0KPj4gKyAgICAgICAgcmV0dXJu IGQzZDEydmFfcG9vbF9hbGxvY190ZXh0dXJlX2FycmF5KGN0eCk7DQo+PiArDQo+PiAgICAgIEQz RDEyX0hFQVBfUFJPUEVSVElFUyBwcm9wcyA9IHsgLlR5cGUgPSBEM0QxMl9IRUFQX1RZUEVfREVG QVVMVCB9Ow0KPj4gICAgICBEM0QxMl9SRVNPVVJDRV9ERVNDIGRlc2MgPSB7DQo+PiAgICAgICAg ICAuRGltZW5zaW9uICAgICAgICA9IEQzRDEyX1JFU09VUkNFX0RJTUVOU0lPTl9URVhUVVJFMkQs DQo+PiBAQCAtMjgwLDcgKzMxNCw5IEBAIGZhaWw6DQo+Pg0KPj4gIHN0YXRpYyBpbnQgZDNkMTJ2 YV9mcmFtZXNfaW5pdChBVkhXRnJhbWVzQ29udGV4dCAqY3R4KSAgew0KPj4gLSAgICBBVkQzRDEy VkFGcmFtZXNDb250ZXh0ICpod2N0eCA9IGN0eC0+aHdjdHg7DQo+PiArICAgIEFWRDNEMTJWQUZy YW1lc0NvbnRleHQgKmh3Y3R4ICAgICAgICA9IGN0eC0+aHdjdHg7DQo+PiArICAgIEFWRDNEMTJW QURldmljZUNvbnRleHQgKmRldmljZV9od2N0eCA9IGN0eC0+ZGV2aWNlX2N0eC0+aHdjdHg7DQo+ PiArDQo+PiAgICAgIGludCBpOw0KPj4NCj4+ICAgICAgZm9yIChpID0gMDsgaSA8IEZGX0FSUkFZ X0VMRU1TKHN1cHBvcnRlZF9mb3JtYXRzKTsgaSsrKSB7IEBAIC0yOTgsNiArMzM0LDMxDQo+PiBA QCBzdGF0aWMgaW50IGQzZDEydmFfZnJhbWVzX2luaXQoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCkN Cj4+ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQo+PiAgICAgIH0NCj4+DQo+PiAr ICAgIC8vRm9yIHRleHR1cmUgYXJyYXkgbW9kZSwgY3JlYXRlIHRleHR1cmUgYXJyYXkgcmVzb3Vy Y2UgaW4gdGhlIGluaXQgc3RhZ2UuDQo+PiArICAgIC8vVGhpcyB0ZXh0dXJlIGFycmF5IHdpbGwg YmUgdXNlZCBmb3IgYWxsIHRoZSBwaWN0dXJlcyxidXQgd2l0aCBkaWZmZXJlbnQNCj4+IHN1YnJl c291cmNlcy4NCg0KSSBzdHJvbmdseSByZWNvbW1lbmQgcmVtb3ZpbmcgYWxsIHRoZSBjb21tZW50 cyBpbiB0aGUgcGF0Y2guIFRoZXkgYXJlIGp1c3QgYmFzaWMNCmtub3dsZWRnZSBvZiB0aGUgR3Jh cGhpY3MgQVBJIGFuZCBhbiB1c2FnZSBvZiB0aGUgdGV4dHVyZSBhcnJheS4NCg0KPj4gKyAgICBp ZiAoaHdjdHgtPnRleHR1cmVfYXJyYXlfc2l6ZSA+IDApIHsNCj4+ICsgICAgICAgIEQzRDEyX0hF QVBfUFJPUEVSVElFUyBwcm9wcyA9IHsgLlR5cGUgPSBEM0QxMl9IRUFQX1RZUEVfREVGQVVMVA0K Pj4gKyB9Ow0KPj4gKw0KPj4gKyAgICAgICAgRDNEMTJfUkVTT1VSQ0VfREVTQyBkZXNjID0gew0K Pj4gKyAgICAgICAgICAgIC5EaW1lbnNpb24gICAgICAgID0gRDNEMTJfUkVTT1VSQ0VfRElNRU5T SU9OX1RFWFRVUkUyRCwNCj4+ICsgICAgICAgICAgICAuQWxpZ25tZW50ICAgICAgICA9IDAsDQo+ PiArICAgICAgICAgICAgLldpZHRoICAgICAgICAgICAgPSBjdHgtPndpZHRoLA0KPj4gKyAgICAg ICAgICAgIC5IZWlnaHQgICAgICAgICAgID0gY3R4LT5oZWlnaHQsDQo+PiArICAgICAgICAgICAg LkRlcHRoT3JBcnJheVNpemUgPSBod2N0eC0+dGV4dHVyZV9hcnJheV9zaXplLA0KPj4gKyAgICAg ICAgICAgIC5NaXBMZXZlbHMgICAgICAgID0gMSwNCj4+ICsgICAgICAgICAgICAuRm9ybWF0ICAg ICAgICAgICA9IGh3Y3R4LT5mb3JtYXQsDQo+PiArICAgICAgICAgICAgLlNhbXBsZURlc2MgICAg ICAgPSB7LkNvdW50ID0gMSwgLlF1YWxpdHkgPSAwIH0sDQo+PiArICAgICAgICAgICAgLkxheW91 dCAgICAgICAgICAgPSBEM0QxMl9URVhUVVJFX0xBWU9VVF9VTktOT1dOLA0KPj4gKyAgICAgICAg ICAgIC5GbGFncyAgICAgICAgICAgID0gaHdjdHgtPmZsYWdzLA0KPj4gKyAgICAgICAgfTsNCj4+ ICsNCj4+ICsgICAgICAgIGlmIChGQUlMRUQoSUQzRDEyRGV2aWNlX0NyZWF0ZUNvbW1pdHRlZFJl c291cmNlKGRldmljZV9od2N0eC0NCj4+ID5kZXZpY2UsICZwcm9wcywgRDNEMTJfSEVBUF9GTEFH X05PTkUsICZkZXNjLA0KPj4gKyAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1P TiwgTlVMTCwgJklJRF9JRDNEMTJSZXNvdXJjZSwNCj4+ICh2b2lkICoqKSZod2N0eC0+dGV4dHVy ZV9hcnJheSkpKSB7DQo+PiArICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAi Q291bGQgbm90IGNyZWF0ZSB0aGUgdGV4dHVyZVxuIik7DQoNClBlcmhhcHMgYENvdWxkIG5vdCBj cmVhdGUgdGhlIHRleHR1cmUgYXJyYXlgPw0KDQpDb3VsZCB5b3UgYWRkIGl0IHRvIGEgc2VwYXJh dGUgZnVuY3Rpb24gbGlrZSBkM2QxMnZhX3RleHR1cmVfYXJyYXlfbW9kZV9pbml0Pw0KDQo+PiAr ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCj4+ICsgICAgICAgIH0NCj4+ICsg ICAgfQ0KPj4gKw0KPj4gICAgICBmZmh3ZnJhbWVzY3R4KGN0eCktPnBvb2xfaW50ZXJuYWwgPQ0K Pj4gYXZfYnVmZmVyX3Bvb2xfaW5pdDIoc2l6ZW9mKEFWRDNEMTJWQUZyYW1lKSwNCj4+ICAgICAg ICAgIGN0eCwgZDNkMTJ2YV9wb29sX2FsbG9jLCBOVUxMKTsNCj4+DQo+PiBkaWZmIC0tZ2l0IGEv bGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmggYi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEy dmEuaA0KPj4gaW5kZXggMjEyYTZhNjE0Ni4uZDQ4ZDg0N2QxMSAxMDA2NDQNCj4+IC0tLSBhL2xp YmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5oDQo+PiArKysgYi9saWJhdnV0aWwvaHdjb250ZXh0 X2QzZDEydmEuaA0KPj4gQEAgLTExMSw2ICsxMTEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgQVZEM0Qx MlZBRnJhbWUgew0KPj4gICAgICAgKi8NCj4+ICAgICAgSUQzRDEyUmVzb3VyY2UgKnRleHR1cmU7 DQo+Pg0KPj4gKyAgICAvKioNCj4+ICsgICAgICogSW4gdGV4dHVyZSBhcnJheSBtb2RlLCB0aGUg aW5kZXggb2Ygc3VicmVzb3VyY2UNCj4+ICsgICAgICovDQo+PiArICAgIGludCBzdWJyZXNvdXJj ZV9pbmRleDsNCj4+ICsNCj4+ICAgICAgLyoqDQo+PiAgICAgICAqIFRoZSBzeW5jIGNvbnRleHQg Zm9yIHRoZSB0ZXh0dXJlDQo+PiAgICAgICAqDQo+PiBAQCAtMTM3LDYgKzE0MiwxOSBAQCB0eXBl ZGVmIHN0cnVjdCBBVkQzRDEyVkFGcmFtZXNDb250ZXh0IHsNCj4+ICAgICAgICogQHNlZSBodHRw czovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZDNkMTIvbmUt DQo+PiBkM2QxMi1kM2QxMl9yZXNvdXJjZV9mbGFncw0KPj4gICAgICAgKi8NCj4+ICAgICAgRDNE MTJfUkVTT1VSQ0VfRkxBR1MgZmxhZ3M7DQo+PiArDQo+PiArICAgIC8qKg0KPj4gKyAgICAgKiBJ biB0ZXh0dXJlIGFycmF5IG1vZGUsIHRoZSBEM0QxMiB1c2VzIHRoZSBzYW1lIHRoZSBzYW1lIHRl eHR1cmUgYXJyYXkNCj4+IChyZXNvdXJjZSlmb3IgYWxsDQo+PiArICAgICAqIHBpY3R1cmVzLg0K DQoqdGhlIHNhbWUgdGhlIHNhbWUqDQpJcyBpdCBhIHR5cG8/DQoNCj4+ICsgICAgICovDQo+PiAr ICAgIElEM0QxMlJlc291cmNlICp0ZXh0dXJlX2FycmF5Ow0KPj4gKw0KPj4gKyAgICAvKioNCj4+ ICsgICAgICogSW4gdGV4dHVyZSBhcnJheSBtb2RlLCB0aGUgRDNEMTIgdXNlcyB0aGUgc2FtZSB0 ZXh0dXJlIGFycmF5IChyZXNvdXJjZSlmb3INCj4+IGFsbA0KPj4gKyAgICAgKiBwaWN0dXJlcywg YnV0IGRpZmZlcmVudCBzdWJyZXNvdXJjZXMgdG8gcmVwcmVzZW50IGVhY2ggcGljdHVyZS4NCj4+ ICsgICAgICogVGhpcyBpcyB0aGUgc2l6ZSBvZiB0aGUgdGV4dHVyZSBhcnJheSAoaW4gbnVtYmVy IG9mIHN1YnJlc291cmNlcykuDQo+PiArICAgICAqLw0KPj4gKyAgICBpbnQgdGV4dHVyZV9hcnJh eV9zaXplOw0KDQpUaGVyZSBpcyBhbiBpbml0aWFsX3Bvb2xfc2l6ZSBpbiBBVkhXRnJhbWVzQ29u dGV4dC4gQXMgdGhlIGNvbW1lbnQgc2F5cywNCiAgICAqIEluaXRpYWwgc2l6ZSBvZiB0aGUgZnJh bWUgcG9vbC4gSWYgYSBkZXZpY2UgdHlwZSBkb2VzIG5vdCBzdXBwb3J0DQogICAgKiBkeW5hbWlj YWxseSByZXNpemluZyB0aGUgcG9vbCwgdGhlbiB0aGlzIGlzIGFsc28gdGhlIG1heGltdW0gcG9v bCBzaXplLg0KQ2FuIHdlIHJldXNlIGl0IGluc3RlYWQgb2YgYWRkaW5nIHRoaXMgbWVtYmVyPw0K DQo+PiAgfSBBVkQzRDEyVkFGcmFtZXNDb250ZXh0Ow0KPj4NCj4+ICAjZW5kaWYgLyogQVZVVElM X0hXQ09OVEVYVF9EM0QxMlZBX0ggKi8gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC92ZXJzaW9uLmgN Cj4+IGIvbGliYXZ1dGlsL3ZlcnNpb24uaCBpbmRleCAyYzBhYTNlMzVlLi4yOWNkMzFlMjI5IDEw MDY0NA0KPj4gLS0tIGEvbGliYXZ1dGlsL3ZlcnNpb24uaA0KPj4gKysrIGIvbGliYXZ1dGlsL3Zl cnNpb24uaA0KPj4gQEAgLTc5LDggKzc5LDggQEANCj4+ICAgKi8NCj4+DQo+PiAgI2RlZmluZSBM SUJBVlVUSUxfVkVSU0lPTl9NQUpPUiAgNjANCj4+IC0jZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9O X01JTk9SICAgNA0KPj4gLSNkZWZpbmUgTElCQVZVVElMX1ZFUlNJT05fTUlDUk8gMTAxDQo+PiAr I2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9NSU5PUiAgIDUNCj4+ICsjZGVmaW5lIExJQkFWVVRJ TF9WRVJTSU9OX01JQ1JPIDEwMA0KPj4NCj4+ICAjZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9OX0lO VA0KPj4gQVZfVkVSU0lPTl9JTlQoTElCQVZVVElMX1ZFUlNJT05fTUFKT1IsIFwNCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQkFWVVRJTF9WRVJT SU9OX01JTk9SLCBcDQo+PiAtLQ0KPj4gMi40NS4yLndpbmRvd3MuMQ0KPj4NCj4NCj4gTEdUTSwg d2lsbCBhcHBseQ0KDQpIaSB0aGVyZSwNCg0KSXQncyBteSBiYWQgdGhhdCBJJ20gdG9vIGJ1c3kg dG8gcmVwbHkgdG8gdGhpcyBlbWFpbCBpbiB0aW1lLiBJJ3ZlIHNvbWUgY29tbWVudHMgZm9yIHRo ZSBwYXRjaC4NCg0KVGhlIHRleHR1cmUgYXJyYXkgbW9kZSBMR1RNLiBKdXN0IG5lZWRzIHNvbWUg Y2hhbmdlcyBmb3IgY29kZSBjbGVhbmluZy4NCg0KVGhhbmtzLA0KSmlhbmh1YQ0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCreivP7IyzogZmZtcGVnLWRldmVsIDxmZm1wZWctZGV2 ZWwtYm91bmNlc0BmZm1wZWcub3JnPiC0+rHtIFRvbmcgV3UgPHd1dG9uZzEyMDhAb3V0bG9vay5j b20+DQq3osvNyrG85DogMjAyNcTqN9TCMTjI1SAyMTowNQ0KytW8/sjLOiBGRm1wZWcgZGV2ZWxv cG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPg0K s63LzTogQXJheiBJdXN1Ym92IDxQcmltZWFkdmljZUBnbWFpbC5jb20+DQrW98ziOiBSZTogW0ZG bXBlZy1kZXZlbF0gW1BBVENILCB2Nl0gYXZjb2RlYy9kM2QxMnZhX2VuY29kZTogdGV4dHVyZSBh cnJheSBzdXBwb3J0IGZvciBIRVZDDQoNCkFyYXogSXVzdWJvdjoNCj4gRnJvbTogZmZtcGVnLWRl dmVsIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YgQXJheg0K PiBJdXN1Ym92DQo+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDE3LCAyMDI1IDk6MzAgUE0NCj4gVG86 IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnDQo+IENjOiBBcmF6IEl1c3Vib3YgPFByaW1lYWR2aWNl QGdtYWlsLmNvbT4NCj4gU3ViamVjdDogW0ZGbXBlZy1kZXZlbF0gW1BBVENILCB2Nl0gYXZjb2Rl Yy9kM2QxMnZhX2VuY29kZTogdGV4dHVyZSBhcnJheQ0KPiBzdXBwb3J0IGZvciBIRVZDDQo+DQo+ IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgdGV4dHVyZSBhcnJheSBmZWF0dXJlIHVz ZWQgYnkgQU1EIGJvYXJkcyBpbiB0aGUNCj4gRDNEMTIgSEVWQyBlbmNvZGVyLg0KPiBJbiB0ZXh0 dXJlIGFycmF5IG1vZGUsIGEgc2luZ2xlIHRleHR1cmUgYXJyYXkgaXMgc2hhcmVkIGZvciBhbGwg cmVmZXJlbmNlIGFuZA0KPiByZWNvbnN0cnVjdGVkIHBpY3R1cmVzIHVzaW5nIGRpZmZlcmVudCBz dWJyZXNvdXJjZXMuDQo+IFRoZSBpbXBsZW1lbnRhdGlvbiBlbnN1cmVzIGNvbXBhdGliaWxpdHkg YW5kIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB0ZXN0ZWQgb24NCj4gQU1ELCBJbnRlbCwgYW5kIE5W SURJQSBHUFVzLg0KPg0KPiB2MiB1cGRhdGVzOg0KPiAxLiBUaGUgcmVmZXJlbmNlIHRvIE1heEwx UmVmZXJlbmNlc0ZvckIgZm9yIHRoZSBILjI2NCBjb2RlYyB3YXMgdXBkYXRlZCB0bw0KPiB1c2Ug dGhlIGNvcnJlc3BvbmRpbmcgSC4yNjQgZmllbGQgaW5zdGVhZCBvZiB0aGUgSEVWQyBvbmUuDQo+ IDIuIE1heF9zdWJyZXNvdXJjZV9hcnJheV9zaXplIGNhbGN1bGF0aW9uIHdhcyBhZGp1c3RlZCBi eSByZW1vdmluZyB0aGUNCj4gRDNEMTJWQV9WSURFT19FTkNfQVNZTkNfREVQVEggb2Zmc2V0Lg0K Pg0KPiB2MyB1cGRhdGVzOg0KPiAxLiBGaXhlZCBhIHR5cGUgbWlzbWF0Y2ggYnkgZXhwbGljaXRs eSBjYXN0aW5nIEFWRDNEMTJWQUZyYW1lKiB0bw0KPiAodWludDhfdCopIHdoZW4gYXNzaWduaW5n IHRvIGRhdGFbMF0uDQo+IDIuIEFkanVzdGVkIGxvZ2dpbmcgZm9ybWF0IHNwZWNpZmllciBmb3Ig SFJFU1VMVCB0byB1c2UgYCVseGAuDQo+DQo+IHY0IHVwZGF0ZXM6DQo+IDEuIE1vdmVkIHRleHR1 cmUgYXJyYXkgbWFuYWdlbWVudCB0byBod2NvbnRleHRfZDNkMTJ2YSBmb3IgcHJvcGVyDQo+IGFi c3RyYWN0aW9uLg0KPiAyLiBBZGRlZCBgdGV4dHVyZV9hcnJheWAgYW5kIGB0ZXh0dXJlX2FycmF5 X3NpemVgIGZpZWxkcyB0bw0KPiBBVkQzRDEyVkFGcmFtZXNDb250ZXh0Lg0KPiAzLiBJbXBsZW1l bnRlZCBzaGFyZWQgdGV4dHVyZSBhcnJheSBhbGxvY2F0aW9uIGR1cmluZyBgYXZfaHdmcmFtZV9j dHhfaW5pdGAuDQo+IDQuIEZyYW1lcyBub3cgcmVjZWl2ZSB1bmlxdWUgc3VicmVzb3VyY2UgaW5k aWNlcyB2aWENCj4gYGQzZDEydmFfcG9vbF9hbGxvY190ZXh0dXJlX2FycmF5YC4NCj4gNS4gUmVt b3ZlZCBgZDNkMTJ2YV9jcmVhdGVfdGV4dHVyZV9hcnJheWAsIGFsbG9jYXRpb24gaXMgbm93IGhh bmRsZWQgZW50aXJlbHkNCj4gd2l0aGluIGh3Y29udGV4dC4NCj4gNi4gRW5jb2RlciBub3cgdXNl cyBzdWJyZXNvdXJjZSBpbmRpY2VzIHByb3ZpZGVkIGJ5IGh3Y29udGV4dCBpbnN0ZWFkIG9mDQo+ IG1hbmFnaW5nIHRoZW0gbWFudWFsbHkuDQo+DQo+IHY1IHVwZGF0ZXM6DQo+IE5vIGNoYW5nZXMs IHJlc3VibWl0dGVkIGFzIHY0IHdhcyBtaXNzZWQgYnkgcGF0Y2h3b3JrLg0KPg0KPiB2NiB1cGRh dGVzOg0KPiAxLiBNaW5vciBjb3NtZXRpYyBmaXhlcyBhY2NvcmRpbmcgdG8gcmV2aWV3IG9mIHY1 IDIuIEJ1bXBlZCBsYXZ1IHZlcnNpb24gdG8NCj4gNjAuNS4xMDAgYW5kIHVwZGF0ZWQgQVBJY2hh bmdlcw0KPg0KPiAtLS0NCj4gIGRvYy9BUEljaGFuZ2VzICAgICAgICAgICAgICAgICAgIHwgICA0 ICsNCj4gIGxpYmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGUuYyAgICAgIHwgMTg0ICsrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0NCj4gIGxpYmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGUuaCAgICAg IHwgIDEyICsrDQo+ICBsaWJhdmNvZGVjL2QzZDEydmFfZW5jb2RlX2hldmMuYyB8ICAgNSArLQ0K PiAgbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMgICAgfCAgNjUgKysrKysrKysrKy0NCj4g IGxpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5oICAgIHwgIDE4ICsrKw0KPiAgbGliYXZ1dGls L3ZlcnNpb24uaCAgICAgICAgICAgICAgfCAgIDQgKy0NCj4gIDcgZmlsZXMgY2hhbmdlZCwgMjQw IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvZG9jL0FQ SWNoYW5nZXMgYi9kb2MvQVBJY2hhbmdlcyBpbmRleCBkNmUzODI0NWY4Li5lYWIwNmNkMjUxDQo+ IDEwMDY0NA0KPiAtLS0gYS9kb2MvQVBJY2hhbmdlcw0KPiArKysgYi9kb2MvQVBJY2hhbmdlcw0K PiBAQCAtMiw2ICsyLDEwIEBAIFRoZSBsYXN0IHZlcnNpb24gaW5jcmVhc2VzIG9mIGFsbCBsaWJy YXJpZXMgd2VyZSBvbiAyMDI1LTAzLTI4DQo+DQo+ICBBUEkgY2hhbmdlcywgbW9zdCByZWNlbnQg Zmlyc3Q6DQo+DQo+ICsyMDI1LTA3LXh4IC0geHh4eHh4eHh4eCAtIGxhdnUgNjAuNS4xMDAgLSBo d2NvbnRleHRfZDNkMTJ2YS5oDQo+ICsgIEFkZCBzdXBwb3J0IGZvciB0ZXh0dXJlIGFycmF5IG1v ZGUgQVZEM0QxMlZBRnJhbWUuc3VicmVzb3VyY2VfaW5kZXgsDQo+ICsgIEFWRDNEMTJWQUZyYW1l c0NvbnRleHQudGV4dHVyZV9hcnJheSBhbmQgdGV4dHVyZV9hcnJheV9zaXplDQo+ICsNCj4gIDIw MjUtMDcteHggLSB4eHh4eHh4eHhkIC0gbGF2ZmkgMTEuMi4xMDAgLSBhdmZpbHRlci5oDQo+ICAg IEFkZCBBVkZpbHRlckdyYXBoLT5tYXhfYnVmZmVyZWRfZnJhbWVzLg0KPg0KPiBkaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy9kM2QxMnZhX2VuY29kZS5jIGIvbGliYXZjb2RlYy9kM2QxMnZhX2VuY29k ZS5jIGluZGV4DQo+IGUyNGE1YjhkMjQuLjFmMjAyZjUxMmMgMTAwNjQ0DQo+IC0tLSBhL2xpYmF2 Y29kZWMvZDNkMTJ2YV9lbmNvZGUuYw0KPiArKysgYi9saWJhdmNvZGVjL2QzZDEydmFfZW5jb2Rl LmMNCj4gQEAgLTE5MSw3ICsxOTEsOCBAQCBzdGF0aWMgaW50IGQzZDEydmFfZW5jb2RlX2lzc3Vl KEFWQ29kZWNDb250ZXh0DQo+ICphdmN0eCwNCj4gICAgICBGRkhXQmFzZUVuY29kZUNvbnRleHQg KmJhc2VfY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsNCj4gICAgICBEM0QxMlZBRW5jb2RlQ29udGV4 dCAgICAgICAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsNCj4gICAgICBEM0QxMlZBRW5jb2RlUGlj dHVyZSAgICAgICAqcGljID0gYmFzZV9waWMtPnByaXY7DQo+IC0gICAgQVZEM0QxMlZBRnJhbWVz Q29udGV4dCAqZnJhbWVzX2h3Y3R4ID0gYmFzZV9jdHgtPmlucHV0X2ZyYW1lcy0NCj4gPmh3Y3R4 Ow0KPiArICAgIEFWRDNEMTJWQUZyYW1lc0NvbnRleHQgICAgICpmcmFtZXNfaHdjdHhfaW5wdXQg PSBiYXNlX2N0eC0NCj4gPmlucHV0X2ZyYW1lcy0+aHdjdHg7DQo+ICsgICAgQVZEM0QxMlZBRnJh bWVzQ29udGV4dCAgICAgKmZyYW1lc19od2N0eF9yZWNvbiA9IGJhc2VfY3R4LQ0KPiA+cmVjb25f ZnJhbWVzLT5od2N0eDsNCj4gICAgICBpbnQgZXJyLCBpLCBqOw0KPiAgICAgIEhSRVNVTFQgaHI7 DQo+ICAgICAgY2hhciBkYXRhW01BWF9QQVJBTV9CVUZGRVJfU0laRV07DQo+IEBAIC0yMjEsNyAr MjIyLDcgQEAgc3RhdGljIGludCBkM2QxMnZhX2VuY29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dA0K PiAqYXZjdHgsDQo+ICAgICAgRDNEMTJfVklERU9fRU5DT0RFUl9SRVNPTFZFX01FVEFEQVRBX0lO UFVUX0FSR1VNRU5UUw0KPiBpbnB1dF9tZXRhZGF0YSA9IHsNCj4gICAgICAgICAgLkVuY29kZXJD b2RlYyA9IGN0eC0+Y29kZWMtPmQzZDEyX2NvZGVjLA0KPiAgICAgICAgICAuRW5jb2RlclByb2Zp bGUgPSBjdHgtPnByb2ZpbGUtPmQzZDEyX3Byb2ZpbGUsDQo+IC0gICAgICAgIC5FbmNvZGVySW5w dXRGb3JtYXQgPSBmcmFtZXNfaHdjdHgtPmZvcm1hdCwNCj4gKyAgICAgICAgLkVuY29kZXJJbnB1 dEZvcm1hdCA9IGZyYW1lc19od2N0eF9pbnB1dC0+Zm9ybWF0LA0KPiAgICAgICAgICAuRW5jb2Rl ZFBpY3R1cmVFZmZlY3RpdmVSZXNvbHV0aW9uID0gY3R4LT5yZXNvbHV0aW9uLA0KPiAgICAgIH07 DQo+DQo+IEBAIC0yNjgsNiArMjY5LDggQEAgc3RhdGljIGludCBkM2QxMnZhX2VuY29kZV9pc3N1 ZShBVkNvZGVjQ29udGV4dA0KPiAqYXZjdHgsDQo+ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df REVCVUcsICJSZWNvbiBzdXJmYWNlIGlzICVwLlxuIiwNCj4gICAgICAgICAgICAgcGljLT5yZWNv bl9zdXJmYWNlLT50ZXh0dXJlKTsNCj4NCj4gKyAgICBwaWMtPnN1YnJlc291cmNlX2luZGV4ID0g Y3R4LT5pc190ZXh0dXJlX2FycmF5ID8NCj4gKyBwaWMtPnJlY29uX3N1cmZhY2UtPnN1YnJlc291 cmNlX2luZGV4IDogMDsNCj4gKw0KPiAgICAgIHBpYy0+b3V0cHV0X2J1ZmZlcl9yZWYgPSBhdl9i dWZmZXJfcG9vbF9nZXQoY3R4LT5vdXRwdXRfYnVmZmVyX3Bvb2wpOw0KPiAgICAgIGlmICghcGlj LT5vdXRwdXRfYnVmZmVyX3JlZikgew0KPiAgICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01FTSk7 DQo+IEBAIC0zMjUsMTEgKzMyOCwyNiBAQCBzdGF0aWMgaW50IGQzZDEydmFfZW5jb2RlX2lzc3Vl KEFWQ29kZWNDb250ZXh0DQo+ICphdmN0eCwNCj4gICAgICAgICAgICAgIGdvdG8gZmFpbDsNCj4g ICAgICAgICAgfQ0KPg0KPiArICAgICAgICBpZiAoY3R4LT5pc190ZXh0dXJlX2FycmF5KSB7DQo+ ICsgICAgICAgICAgICBkM2QxMl9yZWZzLnBTdWJyZXNvdXJjZXMgPSBhdl9jYWxsb2MoZDNkMTJf cmVmcy5OdW1UZXh0dXJlMkRzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKCpkM2QxMl9yZWZzLnBTdWJyZXNvdXJjZXMpKTsNCj4gKyAg ICAgICAgICAgIGlmICghZDNkMTJfcmVmcy5wU3VicmVzb3VyY2VzKSB7DQo+ICsgICAgICAgICAg ICAgICAgZXJyID0gQVZFUlJPUihFTk9NRU0pOw0KPiArICAgICAgICAgICAgICAgIGdvdG8gZmFp bDsNCj4gKyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ICAgICAgICAgIGkgPSAw Ow0KPiAtICAgICAgICBmb3IgKGogPSAwOyBqIDwgYmFzZV9waWMtPm5iX3JlZnNbMF07IGorKykN Cj4gLSAgICAgICAgICAgIGQzZDEyX3JlZnMucHBUZXh0dXJlMkRzW2krK10gPSAoKEQzRDEyVkFF bmNvZGVQaWN0dXJlICopYmFzZV9waWMtDQo+ID5yZWZzWzBdW2pdLT5wcml2KS0+cmVjb25fc3Vy ZmFjZS0+dGV4dHVyZTsNCj4gLSAgICAgICAgZm9yIChqID0gMDsgaiA8IGJhc2VfcGljLT5uYl9y ZWZzWzFdOyBqKyspDQo+IC0gICAgICAgICAgICBkM2QxMl9yZWZzLnBwVGV4dHVyZTJEc1tpKytd ID0gKChEM0QxMlZBRW5jb2RlUGljdHVyZSAqKWJhc2VfcGljLQ0KPiA+cmVmc1sxXVtqXS0+cHJp diktPnJlY29uX3N1cmZhY2UtPnRleHR1cmU7DQo+ICsgICAgICAgIGZvciAoaiA9IDA7IGogPCBi YXNlX3BpYy0+bmJfcmVmc1swXTsgaisrKSB7DQo+ICsgICAgICAgICAgICBkM2QxMl9yZWZzLnBw VGV4dHVyZTJEc1tpXSAgPSAoKEQzRDEyVkFFbmNvZGVQaWN0dXJlICopYmFzZV9waWMtDQo+ID5y ZWZzWzBdW2pdLT5wcml2KS0+cmVjb25fc3VyZmFjZS0+dGV4dHVyZTsNCj4gKyAgICAgICAgICAg IGQzZDEyX3JlZnMucFN1YnJlc291cmNlc1tpXSA9IGN0eC0+aXNfdGV4dHVyZV9hcnJheSA/DQo+ ICgoRDNEMTJWQUVuY29kZVBpY3R1cmUgKiliYXNlX3BpYy0+cmVmc1swXVtqXS0+cHJpdiktPnN1 YnJlc291cmNlX2luZGV4IDogMDsNCj4gKyAgICAgICAgICAgIGkrKzsNCj4gKyAgICAgICAgfQ0K PiArICAgICAgICBmb3IgKGogPSAwOyBqIDwgYmFzZV9waWMtPm5iX3JlZnNbMV07IGorKykgew0K PiArICAgICAgICAgICAgZDNkMTJfcmVmcy5wcFRleHR1cmUyRHNbaV0gID0gKChEM0QxMlZBRW5j b2RlUGljdHVyZSAqKWJhc2VfcGljLQ0KPiA+cmVmc1sxXVtqXS0+cHJpdiktPnJlY29uX3N1cmZh Y2UtPnRleHR1cmU7DQo+ICsgICAgICAgICAgICBkM2QxMl9yZWZzLnBTdWJyZXNvdXJjZXNbaV0g PSBjdHgtPmlzX3RleHR1cmVfYXJyYXkgPw0KPiAoKEQzRDEyVkFFbmNvZGVQaWN0dXJlICopYmFz ZV9waWMtPnJlZnNbMV1bal0tPnByaXYpLT5zdWJyZXNvdXJjZV9pbmRleCA6IDA7DQo+ICsgICAg ICAgICAgICBpKys7DQo+ICsgICAgICAgIH0NCj4gICAgICB9DQo+DQo+ICAgICAgaW5wdXRfYXJn cy5QaWN0dXJlQ29udHJvbERlc2MuSW50cmFSZWZyZXNoRnJhbWVJbmRleCAgPSAwOyBAQCAtMzQz LDcNCj4gKzM2MSw3IEBAIHN0YXRpYyBpbnQgZDNkMTJ2YV9lbmNvZGVfaXNzdWUoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LA0KPiAgICAgIG91dHB1dF9hcmdzLkJpdHN0cmVhbS5wQnVmZmVyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwaWMtPm91dHB1dF9idWZmZXI7DQo+ICAg ICAgb3V0cHV0X2FyZ3MuQml0c3RyZWFtLkZyYW1lU3RhcnRPZmZzZXQgICAgICAgICAgICAgICAg ICAgICAgICAgICA9IHBpYy0NCj4gPmFsaWduZWRfaGVhZGVyX3NpemU7DQo+ICAgICAgb3V0cHV0 X2FyZ3MuUmVjb25zdHJ1Y3RlZFBpY3R1cmUucFJlY29uc3RydWN0ZWRQaWN0dXJlICAgICAgICAg ICA9IHBpYy0NCj4gPnJlY29uX3N1cmZhY2UtPnRleHR1cmU7DQo+IC0gICAgb3V0cHV0X2FyZ3Mu UmVjb25zdHJ1Y3RlZFBpY3R1cmUuUmVjb25zdHJ1Y3RlZFBpY3R1cmVTdWJyZXNvdXJjZSA9IDA7 DQo+ICsgICAgb3V0cHV0X2FyZ3MuUmVjb25zdHJ1Y3RlZFBpY3R1cmUuUmVjb25zdHJ1Y3RlZFBp Y3R1cmVTdWJyZXNvdXJjZSA9DQo+ICsgY3R4LT5pc190ZXh0dXJlX2FycmF5ID8gcGljLT5zdWJy ZXNvdXJjZV9pbmRleCA6IDA7DQo+ICAgICAgb3V0cHV0X2FyZ3MuRW5jb2Rlck91dHB1dE1ldGFk YXRhLnBCdWZmZXIgICAgICAgICAgICAgICAgICAgICAgICA9IHBpYy0NCj4gPmVuY29kZWRfbWV0 YWRhdGE7DQo+ICAgICAgb3V0cHV0X2FyZ3MuRW5jb2Rlck91dHB1dE1ldGFkYXRhLk9mZnNldCAg ICAgICAgICAgICAgICAgICAgICAgICA9IDA7DQo+DQo+IEBAIC0zNjksNTIgKzM4Nyw5OSBAQCBz dGF0aWMgaW50IGQzZDEydmFfZW5jb2RlX2lzc3VlKEFWQ29kZWNDb250ZXh0DQo+ICphdmN0eCwN Cj4gICAgICAgICAgZ290byBmYWlsOw0KPiAgICAgIH0NCj4NCj4gLSNkZWZpbmUgVFJBTlNJVElP Tl9CQVJSSUVSKHJlcywgYmVmb3JlLCBhZnRlcikgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr I2RlZmluZSBUUkFOU0lUSU9OX0JBUlJJRVIocmVzLCBzdWJyZXMsIGJlZm9yZSwgYWZ0ZXIpICAg ICAgICAgICAgICBcDQo+ICAgICAgKEQzRDEyX1JFU09VUkNFX0JBUlJJRVIpIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgLlR5cGUgID0gRDNEMTJf UkVTT1VSQ0VfQkFSUklFUl9UWVBFX1RSQU5TSVRJT04sICAgICAgICAgICAgXA0KPiAgICAgICAg ICAuRmxhZ3MgPSBEM0QxMl9SRVNPVVJDRV9CQVJSSUVSX0ZMQUdfTk9ORSwgICAgICAgICAgICAg ICAgICBcDQo+ICAgICAgICAgIC5UcmFuc2l0aW9uID0geyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgICAgIC5wUmVzb3VyY2UgICA9IHJl cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAtICAgICAgICAgICAg LlN1YnJlc291cmNlID0gRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLCBc DQo+ICsgICAgICAgICAgICAuU3VicmVzb3VyY2UgPSBzdWJyZXMsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgICAgIC5TdGF0ZUJlZm9yZSA9IGJlZm9yZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAgICAgICAgICAgICAgLlN0YXRl QWZ0ZXIgID0gYWZ0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAg ICAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gICAgICB9DQo+DQo+ICAgICAgYmFycmllcnNbMF0gPSBUUkFOU0lUSU9O X0JBUlJJRVIocGljLT5pbnB1dF9zdXJmYWNlLT50ZXh0dXJlLA0KPiArDQo+ICsgRDNEMTJfUkVT T1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURFT19F TkNPREVfUkVBRCk7DQo+ICAgICAgYmFycmllcnNbMV0gPSBUUkFOU0lUSU9OX0JBUlJJRVIocGlj LT5vdXRwdXRfYnVmZmVyLA0KPiArDQo+ICsgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VC UkVTT1VSQ0VTLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEy X1JFU09VUkNFX1NUQVRFX0NPTU1PTiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURFT19FTkNPREVfV1JJVEUpOw0KPiAtICAg IGJhcnJpZXJzWzJdID0gVFJBTlNJVElPTl9CQVJSSUVSKHBpYy0+cmVjb25fc3VyZmFjZS0+dGV4 dHVyZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNP VVJDRV9TVEFURV9DT01NT04sDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9fRU5DT0RFX1dSSVRFKTsNCj4gLSAgICBiYXJy aWVyc1szXSA9IFRSQU5TSVRJT05fQkFSUklFUihwaWMtPmVuY29kZWRfbWV0YWRhdGEsDQo+ICsg ICAgYmFycmllcnNbMl0gPSBUUkFOU0lUSU9OX0JBUlJJRVIocGljLT5lbmNvZGVkX21ldGFkYXRh LA0KPiArDQo+ICsgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRF X0NPTU1PTiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9S RVNPVVJDRV9TVEFURV9WSURFT19FTkNPREVfV1JJVEUpOw0KPiAtICAgIGJhcnJpZXJzWzRdID0g VFJBTlNJVElPTl9CQVJSSUVSKHBpYy0+cmVzb2x2ZWRfbWV0YWRhdGEsDQo+ICsgICAgYmFycmll cnNbM10gPSBUUkFOU0lUSU9OX0JBUlJJRVIocGljLT5yZXNvbHZlZF9tZXRhZGF0YSwNCj4gKw0K PiArIEQzRDEyX1JFU09VUkNFX0JBUlJJRVJfQUxMX1NVQlJFU09VUkNFUywNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT04s DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0Vf U1RBVEVfVklERU9fRU5DT0RFX1dSSVRFKTsNCj4NCj4gLSAgICBJRDNEMTJWaWRlb0VuY29kZUNv bW1hbmRMaXN0Ml9SZXNvdXJjZUJhcnJpZXIoY21kX2xpc3QsIDUsIGJhcnJpZXJzKTsNCj4gKyAg ICBJRDNEMTJWaWRlb0VuY29kZUNvbW1hbmRMaXN0Ml9SZXNvdXJjZUJhcnJpZXIoY21kX2xpc3Qs IDQsDQo+ICsgYmFycmllcnMpOw0KPg0KPiAtICAgIGlmIChkM2QxMl9yZWZzLk51bVRleHR1cmUy RHMpIHsNCj4gLSAgICAgICAgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUiByZWZzX2JhcnJpZXJzWzNd Ow0KPiAtDQo+IC0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBkM2QxMl9yZWZzLk51bVRleHR1cmUy RHM7IGkrKykNCj4gLSAgICAgICAgICAgIHJlZnNfYmFycmllcnNbaV0gPSBUUkFOU0lUSU9OX0JB UlJJRVIoZDNkMTJfcmVmcy5wcFRleHR1cmUyRHNbaV0sDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1P TiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9fRU5DT0RFX1JFQUQpOw0KPiAtDQo+IC0gICAgICAg IElEM0QxMlZpZGVvRW5jb2RlQ29tbWFuZExpc3QyX1Jlc291cmNlQmFycmllcihjbWRfbGlzdCwN Cj4gZDNkMTJfcmVmcy5OdW1UZXh0dXJlMkRzLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmc19iYXJyaWVycyk7DQo+ICsgICAgLy9z ZXQgdHJhbnNpdCBiYXJyaWVycyBmb3IgcmVmZXJlbmNlIHBpYyBhbmQgcmVjb24gcGljDQo+ICsg ICAgaW50IGJhcnJpZXJzX3JlZl9pbmRleCA9IDA7DQo+ICsgICAgRDNEMTJfUkVTT1VSQ0VfQkFS UklFUiAqYmFycmllcnNfcmVmID0gTlVMTDsNCj4gKyAgICBpZiAoY3R4LT5pc190ZXh0dXJlX2Fy cmF5KSB7DQo+ICsgICAgICAgIGJhcnJpZXJzX3JlZiA9IGF2X2NhbGxvYyhmcmFtZXNfaHdjdHhf cmVjb24tPnRleHR1cmVfYXJyYXlfc2l6ZSAqIGN0eC0NCj4gPnBsYW5lX2NvdW50LA0KPiArICAg ICAgICAgICAgc2l6ZW9mKEQzRDEyX1JFU09VUkNFX0JBUlJJRVIpKTsNCj4gKyAgICB9IGVsc2Ug ew0KPiArICAgICAgICBiYXJyaWVyc19yZWYgPQ0KPiBhdl9jYWxsb2MoTUFYX0RQQl9TSVpFLHNp emVvZihEM0QxMl9SRVNPVVJDRV9CQVJSSUVSKSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYg KGN0eC0+aXNfdGV4dHVyZV9hcnJheSkgew0KPiArICAgICAgICAgLy8gSW4gVGV4dHVyZSBhcnJh eSBtb2RlLCB0aGUgRDNEMTIgdXNlcyB0aGUgc2FtZSB0ZXh0dXJlIGFycmF5DQo+IChyZXNvdXJj ZSlmb3IgYWxsDQo+ICsgICAgICAgICAvLyB0aGUgcmVmZXJlbmNlIHBpY3MgaW4gcHBUZXh0dXJl MkRzIGFuZCBhbHNvIGZvciB0aGUNCj4gcFJlY29uc3RydWN0ZWRQaWN0dXJlLA0KPiArICAgICAg ICAgLy8ganVzdCBkaWZmZXJlbnQgc3VicmVzb3VyY2VzLg0KPiArICAgICAgICBEM0QxMl9SRVNP VVJDRV9ERVNDIHJlZmVyZW5jZXNfdGV4X2FycmF5X2Rlc2MgPSB7IDAgfTsNCj4gKw0KPiArIHBp Yy0+cmVjb25fc3VyZmFjZS0+dGV4dHVyZS0+bHBWdGJsLT5HZXREZXNjKHBpYy0+cmVjb25fc3Vy ZmFjZS0+dGV4dHUNCj4gKyByZSwgJnJlZmVyZW5jZXNfdGV4X2FycmF5X2Rlc2MpOw0KPiArDQo+ ICsgICAgICAgIGZvciAodWludDMyX3QgcmVmZXJlbmNlX3N1YnJlc291cmNlID0gMDsgcmVmZXJl bmNlX3N1YnJlc291cmNlIDwNCj4gcmVmZXJlbmNlc190ZXhfYXJyYXlfZGVzYy5EZXB0aE9yQXJy YXlTaXplOw0KPiArICAgICAgICAgICAgcmVmZXJlbmNlX3N1YnJlc291cmNlKyspIHsNCj4gKw0K PiArICAgICAgICAgICAgLy9EM0QxMiBEZWNvbXBvc2VTdWJyZXNvdXJjZQ0KPiArICAgICAgICAg ICAgdWludDMyX3QgbWlwX3NsaWNlLCBwbGFuZV9zbGljZSwgYXJyYXlfc2xpY2UsIGFycmF5X3Np emU7DQo+ICsgICAgICAgICAgICBhcnJheV9zaXplID0gcmVmZXJlbmNlc190ZXhfYXJyYXlfZGVz Yy5EZXB0aE9yQXJyYXlTaXplOw0KPiArICAgICAgICAgICAgbWlwX3NsaWNlID0gcmVmZXJlbmNl X3N1YnJlc291cmNlICUNCj4gcmVmZXJlbmNlc190ZXhfYXJyYXlfZGVzYy5NaXBMZXZlbHM7DQo+ ICsgICAgICAgICAgICBhcnJheV9zbGljZSA9IChyZWZlcmVuY2Vfc3VicmVzb3VyY2UgLw0KPiAr IHJlZmVyZW5jZXNfdGV4X2FycmF5X2Rlc2MuTWlwTGV2ZWxzKSAlIGFycmF5X3NpemU7DQo+ICsN Cj4gKyAgICAgICAgICAgIGZvciAocGxhbmVfc2xpY2UgPSAwOyBwbGFuZV9zbGljZSA8IGN0eC0+ cGxhbmVfY291bnQ7IHBsYW5lX3NsaWNlKyspIHsNCj4gKyAgICAgICAgICAgICAgICAvL0NhbGN1 bGF0ZSB0aGUgc3VicmVzb3VyY2UgaW5kZXgNCj4gKyAgICAgICAgICAgICAgICB1aW50MzJfdCBw bGFuZU91dHB1dFN1YnJlc291cmNlID0gbWlwX3NsaWNlICsgYXJyYXlfc2xpY2UgKg0KPiByZWZl cmVuY2VzX3RleF9hcnJheV9kZXNjLk1pcExldmVscyArDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGxhbmVfc2xpY2UgKiByZWZlcmVuY2VzX3RleF9hcnJheV9k ZXNjLk1pcExldmVscyAqDQo+IGFycmF5X3NpemU7DQo+ICsgICAgICAgICAgICAgICAgaWYgKHJl ZmVyZW5jZV9zdWJyZXNvdXJjZSA9PSBwaWMtPnN1YnJlc291cmNlX2luZGV4KSB7DQo+ICsgICAg ICAgICAgICAgICAgICAgIGJhcnJpZXJzX3JlZltiYXJyaWVyc19yZWZfaW5kZXgrK10gPSBUUkFO U0lUSU9OX0JBUlJJRVIocGljLQ0KPiA+cmVjb25fc3VyZmFjZS0+dGV4dHVyZSwgcGxhbmVPdXRw dXRTdWJyZXNvdXJjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT04sDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9fRU5DT0RFX1dSSVRF KTsNCj4gKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgICAgICAgICBi YXJyaWVyc19yZWZbYmFycmllcnNfcmVmX2luZGV4KytdID0gVFJBTlNJVElPTl9CQVJSSUVSKHBp Yy0NCj4gPnJlY29uX3N1cmZhY2UtPnRleHR1cmUsIHBsYW5lT3V0cHV0U3VicmVzb3VyY2UsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0Vf U1RBVEVfQ09NTU9OLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEQzRDEyX1JFU09VUkNFX1NUQVRFX1ZJREVPX0VOQ09ERV9SRUFEKTsNCj4gKyAgICAgICAgICAg ICAgICB9DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAgIH0NCj4gKyAgICB9IGVsc2Ugew0K PiArICAgICAgICBiYXJyaWVyc19yZWZbYmFycmllcnNfcmVmX2luZGV4KytdID0gVFJBTlNJVElP Tl9CQVJSSUVSKHBpYy0NCj4gPnJlY29uX3N1cmZhY2UtPnRleHR1cmUsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExf U1VCUkVTT1VSQ0VTLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwNCj4gKw0KPiArIEQzRDEyX1JFU09VUkNFX1NU QVRFX1ZJREVPX0VOQ09ERV9XUklURSk7DQo+ICsNCj4gKyAgICAgICAgaWYgKGQzZDEyX3JlZnMu TnVtVGV4dHVyZTJEcykgew0KPiArICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGQzZDEyX3Jl ZnMuTnVtVGV4dHVyZTJEczsgaSsrKQ0KPiArICAgICAgICAgICAgICAgIGJhcnJpZXJzX3JlZlti YXJyaWVyc19yZWZfaW5kZXgrK10gPQ0KPiBUUkFOU0lUSU9OX0JBUlJJRVIoZDNkMTJfcmVmcy5w cFRleHR1cmUyRHNbaV0sDQo+ICsNCj4gRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVT T1VSQ0VTLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwNCj4gKw0KPiBEM0QxMl9SRVNPVVJD RV9TVEFURV9WSURFT19FTkNPREVfUkVBRCk7DQo+ICsgICAgICAgIH0NCj4gICAgICB9DQo+ICsg ICAgSUQzRDEyVmlkZW9FbmNvZGVDb21tYW5kTGlzdDJfUmVzb3VyY2VCYXJyaWVyKGNtZF9saXN0 LA0KPiArIGJhcnJpZXJzX3JlZl9pbmRleCwgYmFycmllcnNfcmVmKTsNCj4NCj4gICAgICBJRDNE MTJWaWRlb0VuY29kZUNvbW1hbmRMaXN0Ml9FbmNvZGVGcmFtZShjbWRfbGlzdCwgY3R4LT5lbmNv ZGVyLCBjdHgtDQo+ID5lbmNvZGVyX2hlYXAsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmlucHV0X2FyZ3MsICZvdXRwdXRfYXJncyk7DQo+DQo+ICAg ICAgYmFycmllcnNbM10gPSBUUkFOU0lUSU9OX0JBUlJJRVIocGljLT5lbmNvZGVkX21ldGFkYXRh LA0KPiArDQo+ICsgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRF X1ZJREVPX0VOQ09ERV9XUklURSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURFT19FTkNPREVfUkVBRCk7DQo+DQo+IEBAIC00 MjIsMzUgKzQ4NywzNSBAQCBzdGF0aWMgaW50IGQzZDEydmFfZW5jb2RlX2lzc3VlKEFWQ29kZWND b250ZXh0DQo+ICphdmN0eCwNCj4NCj4NCj4gSUQzRDEyVmlkZW9FbmNvZGVDb21tYW5kTGlzdDJf UmVzb2x2ZUVuY29kZXJPdXRwdXRNZXRhZGF0YShjbWRfbGlzdCwNCj4gJmlucHV0X21ldGFkYXRh LCAmb3V0cHV0X21ldGFkYXRhKTsNCj4NCj4gLSAgICBpZiAoZDNkMTJfcmVmcy5OdW1UZXh0dXJl MkRzKSB7DQo+IC0gICAgICAgIEQzRDEyX1JFU09VUkNFX0JBUlJJRVIgcmVmc19iYXJyaWVyc1sz XTsNCj4gLQ0KPiAtICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZDNkMTJfcmVmcy5OdW1UZXh0dXJl MkRzOyBpKyspDQo+IC0gICAgICAgICAgICByZWZzX2JhcnJpZXJzW2ldID0gVFJBTlNJVElPTl9C QVJSSUVSKGQzZDEyX3JlZnMucHBUZXh0dXJlMkRzW2ldLA0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9WSURF T19FTkNPREVfUkVBRCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OKTsNCj4gLQ0KPiAtICAgICAg ICBJRDNEMTJWaWRlb0VuY29kZUNvbW1hbmRMaXN0Ml9SZXNvdXJjZUJhcnJpZXIoY21kX2xpc3Qs DQo+IGQzZDEyX3JlZnMuTnVtVGV4dHVyZTJEcywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNfYmFycmllcnMpOw0KPiArICAgIC8v c3dhcCB0aGUgYmFycmllcnNfcmVmIHRyYW5zaXRpb24gc3RhdGUNCj4gKyAgICBpZiAoYmFycmll cnNfcmVmX2luZGV4ID4gMCkgew0KPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYmFycmllcnNf cmVmX2luZGV4OyBpKyspIHsNCj4gKyAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFUyB0 ZW1wX3N0YXR1ZSA9DQo+IGJhcnJpZXJzX3JlZltpXS5UcmFuc2l0aW9uLlN0YXRlQmVmb3JlOw0K PiArICAgICAgICAgICAgYmFycmllcnNfcmVmW2ldLlRyYW5zaXRpb24uU3RhdGVCZWZvcmUgPQ0K PiBiYXJyaWVyc19yZWZbaV0uVHJhbnNpdGlvbi5TdGF0ZUFmdGVyOw0KPiArICAgICAgICAgICAg YmFycmllcnNfcmVmW2ldLlRyYW5zaXRpb24uU3RhdGVBZnRlciA9IHRlbXBfc3RhdHVlOw0KPiAr ICAgICAgICB9DQo+ICsgICAgICAgIElEM0QxMlZpZGVvRW5jb2RlQ29tbWFuZExpc3QyX1Jlc291 cmNlQmFycmllcihjbWRfbGlzdCwNCj4gYmFycmllcnNfcmVmX2luZGV4LA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFycmllcnNfcmVm KTsNCj4gICAgICB9DQo+DQo+ICAgICAgYmFycmllcnNbMF0gPSBUUkFOU0lUSU9OX0JBUlJJRVIo cGljLT5pbnB1dF9zdXJmYWNlLT50ZXh0dXJlLA0KPiArDQo+ICsgRDNEMTJfUkVTT1VSQ0VfQkFS UklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX1ZJREVPX0VOQ09ERV9SRUFELA0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1P Tik7DQo+ICAgICAgYmFycmllcnNbMV0gPSBUUkFOU0lUSU9OX0JBUlJJRVIocGljLT5vdXRwdXRf YnVmZmVyLA0KPiArDQo+ICsgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VT LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNF X1NUQVRFX1ZJREVPX0VOQ09ERV9XUklURSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT04pOw0KPiAtICAgIGJhcnJpZXJz WzJdID0gVFJBTlNJVElPTl9CQVJSSUVSKHBpYy0+cmVjb25fc3VyZmFjZS0+dGV4dHVyZSwNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9TVEFU RV9WSURFT19FTkNPREVfV1JJVEUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OKTsNCj4gLSAgICBiYXJyaWVyc1szXSA9 IFRSQU5TSVRJT05fQkFSUklFUihwaWMtPmVuY29kZWRfbWV0YWRhdGEsDQo+ICsgICAgYmFycmll cnNbMl0gPSBUUkFOU0lUSU9OX0JBUlJJRVIocGljLT5lbmNvZGVkX21ldGFkYXRhLA0KPiArDQo+ ICsgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX1ZJREVPX0VO Q09ERV9SRUFELA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEy X1JFU09VUkNFX1NUQVRFX0NPTU1PTik7DQo+IC0gICAgYmFycmllcnNbNF0gPSBUUkFOU0lUSU9O X0JBUlJJRVIocGljLT5yZXNvbHZlZF9tZXRhZGF0YSwNCj4gKyAgICBiYXJyaWVyc1szXSA9IFRS QU5TSVRJT05fQkFSUklFUihwaWMtPnJlc29sdmVkX21ldGFkYXRhLA0KPiArDQo+ICsgRDNEMTJf UkVTT1VSQ0VfQkFSUklFUl9BTExfU1VCUkVTT1VSQ0VTLA0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX1ZJREVPX0VOQ09ERV9XUklU RSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJD RV9TVEFURV9DT01NT04pOw0KPg0KPiAtICAgIElEM0QxMlZpZGVvRW5jb2RlQ29tbWFuZExpc3Qy X1Jlc291cmNlQmFycmllcihjbWRfbGlzdCwgNSwgYmFycmllcnMpOw0KPiArICAgIElEM0QxMlZp ZGVvRW5jb2RlQ29tbWFuZExpc3QyX1Jlc291cmNlQmFycmllcihjbWRfbGlzdCwgNCwNCj4gKyBi YXJyaWVycyk7DQo+DQo+ICAgICAgaHIgPSBJRDNEMTJWaWRlb0VuY29kZUNvbW1hbmRMaXN0Ml9D bG9zZShjbWRfbGlzdCk7DQo+ICAgICAgaWYgKEZBSUxFRChocikpIHsNCj4gQEAgLTQ4OSw2ICs1 NTQsMTQgQEAgc3RhdGljIGludCBkM2QxMnZhX2VuY29kZV9pc3N1ZShBVkNvZGVjQ29udGV4dA0K PiAqYXZjdHgsDQo+ICAgICAgaWYgKGQzZDEyX3JlZnMucHBUZXh0dXJlMkRzKQ0KPiAgICAgICAg ICBhdl9mcmVlcCgmZDNkMTJfcmVmcy5wcFRleHR1cmUyRHMpOw0KPg0KPiArICAgIGlmIChjdHgt PmlzX3RleHR1cmVfYXJyYXkpIHsNCj4gKyAgICAgICAgaWYgKGQzZDEyX3JlZnMucFN1YnJlc291 cmNlcykNCj4gKyAgICAgICAgICAgIGF2X2ZyZWVwKCZkM2QxMl9yZWZzLnBTdWJyZXNvdXJjZXMp Ow0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChiYXJyaWVyc19yZWYpDQo+ICsgICAgICAgIGF2 X2ZyZWVwKCZiYXJyaWVyc19yZWYpOw0KPiArDQo+ICAgICAgcmV0dXJuIDA7DQo+DQo+ICBmYWls Og0KPiBAQCAtNDk4LDYgKzU3MSwxNCBAQCBmYWlsOg0KPiAgICAgIGlmIChkM2QxMl9yZWZzLnBw VGV4dHVyZTJEcykNCj4gICAgICAgICAgYXZfZnJlZXAoJmQzZDEyX3JlZnMucHBUZXh0dXJlMkRz KTsNCj4NCj4gKyAgICBpZiAoY3R4LT5pc190ZXh0dXJlX2FycmF5KSB7DQo+ICsgICAgICAgIGlm IChkM2QxMl9yZWZzLnBTdWJyZXNvdXJjZXMpDQo+ICsgICAgICAgICAgICBhdl9mcmVlcCgmZDNk MTJfcmVmcy5wU3VicmVzb3VyY2VzKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoYmFycmll cnNfcmVmKQ0KPiArICAgICAgICBhdl9mcmVlcCgmYmFycmllcnNfcmVmKTsNCj4gKw0KPiAgICAg IGlmIChjdHgtPmNvZGVjLT5mcmVlX3BpY3R1cmVfcGFyYW1zKQ0KPiAgICAgICAgICBjdHgtPmNv ZGVjLT5mcmVlX3BpY3R1cmVfcGFyYW1zKHBpYyk7DQo+DQo+IEBAIC0xMzQxLDYgKzE0MjIsNyBA QCBmYWlsOg0KPiAgc3RhdGljIGludCBkM2QxMnZhX2VuY29kZV9jcmVhdGVfcmVjb25fZnJhbWVz KEFWQ29kZWNDb250ZXh0ICphdmN0eCkgIHsNCj4gICAgICBGRkhXQmFzZUVuY29kZUNvbnRleHQg KmJhc2VfY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsNCj4gKyAgICBEM0QxMlZBRW5jb2RlQ29udGV4 dCAgICAgICAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsNCj4gICAgICBBVkQzRDEyVkFGcmFtZXND b250ZXh0ICpod2N0eDsNCj4gICAgICBlbnVtIEFWUGl4ZWxGb3JtYXQgcmVjb25fZm9ybWF0Ow0K PiAgICAgIGludCBlcnI7DQo+IEBAIC0xMzY0LDYgKzE0NDYsOCBAQCBzdGF0aWMgaW50DQo+IGQz ZDEydmFfZW5jb2RlX2NyZWF0ZV9yZWNvbl9mcmFtZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0K PiAgICAgIGh3Y3R4LT5mbGFncyA9IEQzRDEyX1JFU09VUkNFX0ZMQUdfVklERU9fRU5DT0RFX1JF RkVSRU5DRV9PTkxZDQo+IHwNCj4gICAgICAgICAgICAgICAgICAgICBEM0QxMl9SRVNPVVJDRV9G TEFHX0RFTllfU0hBREVSX1JFU09VUkNFOw0KPg0KPiArICAgIGh3Y3R4LT50ZXh0dXJlX2FycmF5 X3NpemUgPSBjdHgtPmlzX3RleHR1cmVfYXJyYXkgPyBNQVhfRFBCX1NJWkUgKw0KPiArIDEgOiAw Ow0KPiArDQo+ICAgICAgZXJyID0gYXZfaHdmcmFtZV9jdHhfaW5pdChiYXNlX2N0eC0+cmVjb25f ZnJhbWVzX3JlZik7DQo+ICAgICAgaWYgKGVyciA8IDApIHsNCj4gICAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gaW5pdGlhbGlzZSByZWNvbnN0cnVjdGVkICIN Cj4gQEAgLTEzOTYsNiArMTQ4MCw3IEBAIGludCBmZl9kM2QxMnZhX2VuY29kZV9pbml0KEFWQ29k ZWNDb250ZXh0ICphdmN0eCkNCj4gICAgICBGRkhXQmFzZUVuY29kZUNvbnRleHQgKmJhc2VfY3R4 ID0gYXZjdHgtPnByaXZfZGF0YTsNCj4gICAgICBEM0QxMlZBRW5jb2RlQ29udGV4dCAgICAgICAq Y3R4ID0gYXZjdHgtPnByaXZfZGF0YTsNCj4gICAgICBEM0QxMl9GRUFUVVJFX0RBVEFfVklERU9f RkVBVFVSRV9BUkVBX1NVUFBPUlQgc3VwcG9ydCA9IHsgMCB9Ow0KPiArICAgIEQzRDEyX0ZFQVRV UkVfREFUQV9GT1JNQVRfSU5GTyBmb3JtYXRfaW5mbyA9IHswfTsNCj4gICAgICBpbnQgZXJyOw0K PiAgICAgIEhSRVNVTFQgaHI7DQo+DQo+IEBAIC0xNDMxLDYgKzE1MTYsMTUgQEAgaW50IGZmX2Qz ZDEydmFfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0KPiAgICAgICAgICBnb3Rv IGZhaWw7DQo+ICAgICAgfQ0KPg0KPiArICAgIGZvcm1hdF9pbmZvLkZvcm1hdCA9ICgoQVZEM0Qx MlZBRnJhbWVzQ29udGV4dCopYmFzZV9jdHgtPmlucHV0X2ZyYW1lcy0NCj4gPmh3Y3R4KS0+Zm9y bWF0Ow0KPiArICAgIGlmIChGQUlMRUQoSUQzRDEyVmlkZW9EZXZpY2VfQ2hlY2tGZWF0dXJlU3Vw cG9ydChjdHgtPmh3Y3R4LT5kZXZpY2UsDQo+IEQzRDEyX0ZFQVRVUkVfRk9STUFUX0lORk8sDQo+ ICsgICAgICAgICZmb3JtYXRfaW5mbywgc2l6ZW9mKGZvcm1hdF9pbmZvKSkpKSB7DQo+ICsgICAg ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHF1ZXJ5IGZvcm1hdCBw bGFuZSBjb3VudDoNCj4gMHgleFxuIiwgaHIpOw0KPiArICAgICAgICBlcnIgPSBBVkVSUk9SX0VY VEVSTkFMOw0KPiArICAgICAgICBnb3RvIGZhaWw7DQo+ICsgICAgfQ0KPiArICAgIGN0eC0+cGxh bmVfY291bnQgPSBmb3JtYXRfaW5mby5QbGFuZUNvdW50Ow0KPiArDQo+ICAgICAgZXJyID0gZDNk MTJ2YV9lbmNvZGVfc2V0X3Byb2ZpbGUoYXZjdHgpOw0KPiAgICAgIGlmIChlcnIgPCAwKQ0KPiAg ICAgICAgICBnb3RvIGZhaWw7DQo+IEBAIC0xNDU4LDEwICsxNTUyLDYgQEAgaW50IGZmX2QzZDEy dmFfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0KPiAgICAgIGlmIChlcnIgPCAw KQ0KPiAgICAgICAgICBnb3RvIGZhaWw7DQo+DQo+IC0gICAgZXJyID0gZDNkMTJ2YV9lbmNvZGVf Y3JlYXRlX3JlY29uX2ZyYW1lcyhhdmN0eCk7DQo+IC0gICAgaWYgKGVyciA8IDApDQo+IC0gICAg ICAgIGdvdG8gZmFpbDsNCj4gLQ0KPiAgICAgIGVyciA9IGQzZDEydmFfZW5jb2RlX3ByZXBhcmVf b3V0cHV0X2J1ZmZlcnMoYXZjdHgpOw0KPiAgICAgIGlmIChlcnIgPCAwKQ0KPiAgICAgICAgICBn b3RvIGZhaWw7DQo+IEBAIC0xNDg3LDYgKzE1NzcsMTAgQEAgaW50IGZmX2QzZDEydmFfZW5jb2Rl X2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0KPiAgICAgICAgICAgICAgZ290byBmYWlsOw0K PiAgICAgIH0NCj4NCj4gKyAgICBlcnIgPSBkM2QxMnZhX2VuY29kZV9jcmVhdGVfcmVjb25fZnJh bWVzKGF2Y3R4KTsNCj4gKyAgICBpZiAoZXJyIDwgMCkNCj4gKyAgICAgICAgZ290byBmYWlsOw0K PiArDQo+ICAgICAgYmFzZV9jdHgtPm91dHB1dF9kZWxheSA9IGJhc2VfY3R4LT5iX3Blcl9wOw0K PiAgICAgIGJhc2VfY3R4LT5kZWNvZGVfZGVsYXkgPSBiYXNlX2N0eC0+bWF4X2JfZGVwdGg7DQo+ DQo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2QzZDEydmFfZW5jb2RlLmggYi9saWJhdmNvZGVj L2QzZDEydmFfZW5jb2RlLmggaW5kZXgNCj4gM2IwYjgxNTNkNS4uYzhlNjRkZGZmZCAxMDA2NDQN Cj4gLS0tIGEvbGliYXZjb2RlYy9kM2QxMnZhX2VuY29kZS5oDQo+ICsrKyBiL2xpYmF2Y29kZWMv ZDNkMTJ2YV9lbmNvZGUuaA0KPiBAQCAtNTIsNiArNTIsOCBAQCB0eXBlZGVmIHN0cnVjdCBEM0Qx MlZBRW5jb2RlUGljdHVyZSB7DQo+ICAgICAgSUQzRDEyUmVzb3VyY2UgKmVuY29kZWRfbWV0YWRh dGE7DQo+ICAgICAgSUQzRDEyUmVzb3VyY2UgKnJlc29sdmVkX21ldGFkYXRhOw0KPg0KPiArICAg IGludCAgICAgICAgICAgIHN1YnJlc291cmNlX2luZGV4Ow0KPiArDQo+ICAgICAgRDNEMTJfVklE RU9fRU5DT0RFUl9QSUNUVVJFX0NPTlRST0xfQ09ERUNfREFUQSBwaWNfY3RsOw0KPg0KPiAgICAg IGludCAgICAgICAgICAgICBmZW5jZV92YWx1ZTsNCj4gQEAgLTE4OSw2ICsxOTEsMTYgQEAgdHlw ZWRlZiBzdHJ1Y3QgRDNEMTJWQUVuY29kZUNvbnRleHQgew0KPiAgICAgICAqLw0KPiAgICAgIEFW QnVmZmVyUG9vbCAqb3V0cHV0X2J1ZmZlcl9wb29sOw0KPg0KPiArICAgIC8qKg0KPiArICAgICAq IEZsYWcgaW5kaWNhdGVzIGlmIHRoZSBIVyBpcyB0ZXh0dXJlIGFycmF5IG1vZGUuDQo+ICsgICAg ICovDQo+ICsgICAgaW50IGlzX3RleHR1cmVfYXJyYXk7DQo+ICsNCj4gKyAgICAvKioNCj4gKyAg ICAgKiBUaGUgbnVtYmVyIG9mIHBsYW5lcyBpbiB0aGUgaW5wdXQgRFhHSSBGT1JNQVQgLg0KPiAr ICAgICAqLw0KPiArICAgIGludCBwbGFuZV9jb3VudDsNCj4gKw0KPiAgICAgIC8qKg0KPiAgICAg ICAqIEQzRDEyIHZpZGVvIGVuY29kZXIuDQo+ICAgICAgICovDQo+IGRpZmYgLS1naXQgYS9saWJh dmNvZGVjL2QzZDEydmFfZW5jb2RlX2hldmMuYw0KPiBiL2xpYmF2Y29kZWMvZDNkMTJ2YV9lbmNv ZGVfaGV2Yy5jDQo+IGluZGV4IDkzOGJhMDFmNTQuLjdlMWQ5NzNmN2UgMTAwNjQ0DQo+IC0tLSBh L2xpYmF2Y29kZWMvZDNkMTJ2YV9lbmNvZGVfaGV2Yy5jDQo+ICsrKyBiL2xpYmF2Y29kZWMvZDNk MTJ2YV9lbmNvZGVfaGV2Yy5jDQo+IEBAIC0yODAsOSArMjgwLDggQEAgc3RhdGljIGludA0KPiBk M2QxMnZhX2VuY29kZV9oZXZjX2luaXRfc2VxdWVuY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICph dmN0eCkNCj4gICAgICB9DQo+DQo+ICAgICAgaWYgKHN1cHBvcnQuU3VwcG9ydEZsYWdzICYNCj4g RDNEMTJfVklERU9fRU5DT0RFUl9TVVBQT1JUX0ZMQUdfUkVDT05TVFJVQ1RFRF9GUkFNRVNfUkVR VUlSDQo+IEVfVEVYVFVSRV9BUlJBWVMpIHsNCj4gLSAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9M T0dfRVJST1IsICJEM0QxMiB2aWRlbyBlbmNvZGUgb24gdGhpcyBkZXZpY2UgcmVxdWlyZXMNCj4g dGV4dHVyZSBhcnJheSBzdXBwb3J0LCAiDQo+IC0gICAgICAgICAgICAgICAiYnV0IGl0J3Mgbm90 IGltcGxlbWVudGVkLlxuIik7DQo+IC0gICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09N RTsNCj4gKyAgICAgICAgY3R4LT5pc190ZXh0dXJlX2FycmF5ID0gMTsNCj4gKyAgICAgICAgYXZf bG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJEM0QxMiB2aWRlbyBlbmNvZGUgb24gdGhpcyBkZXZp Y2UNCj4gKyB1c2VzIHRleHR1cmUgYXJyYXkgbW9kZS5cbiIpOw0KPiAgICAgIH0NCj4NCj4gICAg ICBkZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldChiYXNlX2N0eC0+aW5wdXRfZnJhbWVzLT5zd19m b3JtYXQpOw0KPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMgYi9s aWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuYyBpbmRleA0KPiA2NTA3Y2Y2OWMxLi4wNTQxOGM5 ZDk0IDEwMDY0NA0KPiAtLS0gYS9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuYw0KPiArKysg Yi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuYw0KPiBAQCAtNDksNiArNDksNyBAQCB0eXBl ZGVmIHN0cnVjdCBEM0QxMlZBRnJhbWVzQ29udGV4dCB7DQo+ICAgICAgSUQzRDEyR3JhcGhpY3ND b21tYW5kTGlzdCAqY29tbWFuZF9saXN0Ow0KPiAgICAgIEFWRDNEMTJWQVN5bmNDb250ZXh0ICAg ICAgIHN5bmNfY3R4Ow0KPiAgICAgIFVJTlQgICAgICAgICAgICAgICAgICAgICAgIGx1bWFfY29t cG9uZW50X3NpemU7DQo+ICsgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgbmJfc3VyZmFj ZXNfdXNlZDsNCj4gIH0gRDNEMTJWQUZyYW1lc0NvbnRleHQ7DQo+DQo+ICB0eXBlZGVmIHN0cnVj dCBEM0QxMlZBRGV2aWNlUHJpdiB7DQo+IEBAIC0xNzQsNyArMTc1LDggQEAgZmFpbDoNCj4NCj4g IHN0YXRpYyB2b2lkIGQzZDEydmFfZnJhbWVzX3VuaW5pdChBVkhXRnJhbWVzQ29udGV4dCAqY3R4 KSAgew0KPiAtICAgIEQzRDEyVkFGcmFtZXNDb250ZXh0ICpzID0gY3R4LT5od2N0eDsNCj4gKyAg ICBEM0QxMlZBRnJhbWVzQ29udGV4dCAgICpzICAgICA9IGN0eC0+aHdjdHg7DQo+ICsgICAgQVZE M0QxMlZBRnJhbWVzQ29udGV4dCAqaHdjdHggPSBjdHgtPmh3Y3R4Ow0KPg0KPiAgICAgIEQzRDEy X09CSkVDVF9SRUxFQVNFKHMtPnN5bmNfY3R4LmZlbmNlKTsNCj4gICAgICBpZiAocy0+c3luY19j dHguZXZlbnQpDQo+IEBAIC0xODUsNiArMTg3LDExIEBAIHN0YXRpYyB2b2lkDQo+IGQzZDEydmFf ZnJhbWVzX3VuaW5pdChBVkhXRnJhbWVzQ29udGV4dCAqY3R4KQ0KPiAgICAgIEQzRDEyX09CSkVD VF9SRUxFQVNFKHMtPmNvbW1hbmRfYWxsb2NhdG9yKTsNCj4gICAgICBEM0QxMl9PQkpFQ1RfUkVM RUFTRShzLT5jb21tYW5kX2xpc3QpOw0KPiAgICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHMtPmNv bW1hbmRfcXVldWUpOw0KPiArDQo+ICsgICAgaWYgKGh3Y3R4LT50ZXh0dXJlX2FycmF5KSB7DQo+ ICsgICAgICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGh3Y3R4LT50ZXh0dXJlX2FycmF5KTsNCj4g KyAgICAgICAgaHdjdHgtPnRleHR1cmVfYXJyYXkgPSBOVUxMOw0KPiArICAgIH0NCj4gIH0NCj4N Cj4gIHN0YXRpYyBpbnQgZDNkMTJ2YV9mcmFtZXNfZ2V0X2NvbnN0cmFpbnRzKEFWSFdEZXZpY2VD b250ZXh0ICpjdHgsIGNvbnN0IHZvaWQNCj4gKmh3Y29uZmlnLCBBVkhXRnJhbWVzQ29uc3RyYWlu dHMgKmNvbnN0cmFpbnRzKSBAQCAtMjI4LDYgKzIzNSwyOCBAQA0KPiBzdGF0aWMgdm9pZCBmcmVl X3RleHR1cmUodm9pZCAqb3BhcXVlLCB1aW50OF90ICpkYXRhKQ0KPiAgICAgIGF2X2ZyZWVwKCZk YXRhKTsNCj4gIH0NCj4NCj4gK3N0YXRpYyBBVkJ1ZmZlclJlZiAqZDNkMTJ2YV9wb29sX2FsbG9j X3RleHR1cmVfYXJyYXkoQVZIV0ZyYW1lc0NvbnRleHQNCj4gKypjdHgpIHsNCj4gKyAgICBBVkQz RDEyVkFGcmFtZSAgICAgICAgICpkZXNjICA9IGF2X21hbGxvY3ooc2l6ZW9mKCpkZXNjKSk7DQo+ ICsgICAgRDNEMTJWQUZyYW1lc0NvbnRleHQgICAqcyAgICAgPSBjdHgtPmh3Y3R4Ow0KPiArICAg IEFWRDNEMTJWQUZyYW1lc0NvbnRleHQgKmh3Y3R4ID0gY3R4LT5od2N0eDsNCj4gKyAgICBBVkJ1 ZmZlclJlZiAqYnVmOw0KPiArDQo+ICsgICAgLy8gSW4gVGV4dHVyZSBhcnJheSBtb2RlLCB0aGUg RDNEMTIgdXNlcyB0aGUgc2FtZSB0ZXh0dXJlIGFkZHJlc3MgZm9yIGFsbCB0aGUNCj4gcGljdHVy ZXMsDQo+ICsgICAgLy9qdXN0IGRpZmZlcmVudCBzdWJyZXNvdXJjZXMuDQo+ICsgICAgZGVzYy0+ c3VicmVzb3VyY2VfaW5kZXggPSBzLT5uYl9zdXJmYWNlc191c2VkOw0KPiArICAgIGRlc2MtPnRl eHR1cmUgPSBod2N0eC0+dGV4dHVyZV9hcnJheTsNCj4gKw0KPiArICAgIGJ1ZiA9IGF2X2J1ZmZl cl9jcmVhdGUoKHVpbnQ4X3QgKilkZXNjLCBzaXplb2YoKmRlc2MpLCBOVUxMLCBOVUxMLA0KPiAr IDApOw0KPiArDQo+ICsgICAgaWYgKCFidWYpIHsNCj4gKyAgICAgICAgYXZfZnJlZShkZXNjKTsN Cj4gKyAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICsgICAgfQ0KPiArICAgIHMtPm5iX3N1cmZhY2Vz X3VzZWQrKzsNCj4gKyAgICByZXR1cm4gYnVmOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgQVZCdWZm ZXJSZWYgKmQzZDEydmFfcG9vbF9hbGxvYyh2b2lkICpvcGFxdWUsIHNpemVfdCBzaXplKSAgew0K PiAgICAgIEFWSFdGcmFtZXNDb250ZXh0ICAgICAgKmN0eCAgICAgICAgICA9IChBVkhXRnJhbWVz Q29udGV4dCAqKW9wYXF1ZTsNCj4gQEAgLTIzNiw2ICsyNjUsMTEgQEAgc3RhdGljIEFWQnVmZmVy UmVmICpkM2QxMnZhX3Bvb2xfYWxsb2Modm9pZCAqb3BhcXVlLA0KPiBzaXplX3Qgc2l6ZSkNCj4N Cj4gICAgICBBVkJ1ZmZlclJlZiAqYnVmOw0KPiAgICAgIEFWRDNEMTJWQUZyYW1lICpmcmFtZTsN Cj4gKw0KPiArICAgIC8vRm9yIHRleHR1cmUgYXJyYXkgbW9kZSwgbm8gbmVlZCB0byBjcmVhdGUg dGV4dHVyZS4NCj4gKyAgICBpZiAoaHdjdHgtPnRleHR1cmVfYXJyYXlfc2l6ZSA+IDApDQo+ICsg ICAgICAgIHJldHVybiBkM2QxMnZhX3Bvb2xfYWxsb2NfdGV4dHVyZV9hcnJheShjdHgpOw0KPiAr DQo+ICAgICAgRDNEMTJfSEVBUF9QUk9QRVJUSUVTIHByb3BzID0geyAuVHlwZSA9IEQzRDEyX0hF QVBfVFlQRV9ERUZBVUxUIH07DQo+ICAgICAgRDNEMTJfUkVTT1VSQ0VfREVTQyBkZXNjID0gew0K PiAgICAgICAgICAuRGltZW5zaW9uICAgICAgICA9IEQzRDEyX1JFU09VUkNFX0RJTUVOU0lPTl9U RVhUVVJFMkQsDQo+IEBAIC0yODAsNyArMzE0LDkgQEAgZmFpbDoNCj4NCj4gIHN0YXRpYyBpbnQg ZDNkMTJ2YV9mcmFtZXNfaW5pdChBVkhXRnJhbWVzQ29udGV4dCAqY3R4KSAgew0KPiAtICAgIEFW RDNEMTJWQUZyYW1lc0NvbnRleHQgKmh3Y3R4ID0gY3R4LT5od2N0eDsNCj4gKyAgICBBVkQzRDEy VkFGcmFtZXNDb250ZXh0ICpod2N0eCAgICAgICAgPSBjdHgtPmh3Y3R4Ow0KPiArICAgIEFWRDNE MTJWQURldmljZUNvbnRleHQgKmRldmljZV9od2N0eCA9IGN0eC0+ZGV2aWNlX2N0eC0+aHdjdHg7 DQo+ICsNCj4gICAgICBpbnQgaTsNCj4NCj4gICAgICBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlf RUxFTVMoc3VwcG9ydGVkX2Zvcm1hdHMpOyBpKyspIHsgQEAgLTI5OCw2ICszMzQsMzENCj4gQEAg c3RhdGljIGludCBkM2QxMnZhX2ZyYW1lc19pbml0KEFWSFdGcmFtZXNDb250ZXh0ICpjdHgpDQo+ ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQo+ICAgICAgfQ0KPg0KPiArICAgIC8v Rm9yIHRleHR1cmUgYXJyYXkgbW9kZSwgY3JlYXRlIHRleHR1cmUgYXJyYXkgcmVzb3VyY2UgaW4g dGhlIGluaXQgc3RhZ2UuDQo+ICsgICAgLy9UaGlzIHRleHR1cmUgYXJyYXkgd2lsbCBiZSB1c2Vk IGZvciBhbGwgdGhlIHBpY3R1cmVzLGJ1dCB3aXRoIGRpZmZlcmVudA0KPiBzdWJyZXNvdXJjZXMu DQo+ICsgICAgaWYgKGh3Y3R4LT50ZXh0dXJlX2FycmF5X3NpemUgPiAwKSB7DQo+ICsgICAgICAg IEQzRDEyX0hFQVBfUFJPUEVSVElFUyBwcm9wcyA9IHsgLlR5cGUgPSBEM0QxMl9IRUFQX1RZUEVf REVGQVVMVA0KPiArIH07DQo+ICsNCj4gKyAgICAgICAgRDNEMTJfUkVTT1VSQ0VfREVTQyBkZXNj ID0gew0KPiArICAgICAgICAgICAgLkRpbWVuc2lvbiAgICAgICAgPSBEM0QxMl9SRVNPVVJDRV9E SU1FTlNJT05fVEVYVFVSRTJELA0KPiArICAgICAgICAgICAgLkFsaWdubWVudCAgICAgICAgPSAw LA0KPiArICAgICAgICAgICAgLldpZHRoICAgICAgICAgICAgPSBjdHgtPndpZHRoLA0KPiArICAg ICAgICAgICAgLkhlaWdodCAgICAgICAgICAgPSBjdHgtPmhlaWdodCwNCj4gKyAgICAgICAgICAg IC5EZXB0aE9yQXJyYXlTaXplID0gaHdjdHgtPnRleHR1cmVfYXJyYXlfc2l6ZSwNCj4gKyAgICAg ICAgICAgIC5NaXBMZXZlbHMgICAgICAgID0gMSwNCj4gKyAgICAgICAgICAgIC5Gb3JtYXQgICAg ICAgICAgID0gaHdjdHgtPmZvcm1hdCwNCj4gKyAgICAgICAgICAgIC5TYW1wbGVEZXNjICAgICAg ID0gey5Db3VudCA9IDEsIC5RdWFsaXR5ID0gMCB9LA0KPiArICAgICAgICAgICAgLkxheW91dCAg ICAgICAgICAgPSBEM0QxMl9URVhUVVJFX0xBWU9VVF9VTktOT1dOLA0KPiArICAgICAgICAgICAg LkZsYWdzICAgICAgICAgICAgPSBod2N0eC0+ZmxhZ3MsDQo+ICsgICAgICAgIH07DQo+ICsNCj4g KyAgICAgICAgaWYgKEZBSUxFRChJRDNEMTJEZXZpY2VfQ3JlYXRlQ29tbWl0dGVkUmVzb3VyY2Uo ZGV2aWNlX2h3Y3R4LQ0KPiA+ZGV2aWNlLCAmcHJvcHMsIEQzRDEyX0hFQVBfRkxBR19OT05FLCAm ZGVzYywNCj4gKyAgICAgICAgICAgIEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwgTlVMTCwg JklJRF9JRDNEMTJSZXNvdXJjZSwNCj4gKHZvaWQgKiopJmh3Y3R4LT50ZXh0dXJlX2FycmF5KSkp IHsNCj4gKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkNvdWxkIG5vdCBj cmVhdGUgdGhlIHRleHR1cmVcbiIpOw0KPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO VkFMKTsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiAgICAgIGZmaHdmcmFtZXNjdHgo Y3R4KS0+cG9vbF9pbnRlcm5hbCA9DQo+IGF2X2J1ZmZlcl9wb29sX2luaXQyKHNpemVvZihBVkQz RDEyVkFGcmFtZSksDQo+ICAgICAgICAgIGN0eCwgZDNkMTJ2YV9wb29sX2FsbG9jLCBOVUxMKTsN Cj4NCj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5oIGIvbGliYXZ1 dGlsL2h3Y29udGV4dF9kM2QxMnZhLmgNCj4gaW5kZXggMjEyYTZhNjE0Ni4uZDQ4ZDg0N2QxMSAx MDA2NDQNCj4gLS0tIGEvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmgNCj4gKysrIGIvbGli YXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmgNCj4gQEAgLTExMSw2ICsxMTEsMTEgQEAgdHlwZWRl ZiBzdHJ1Y3QgQVZEM0QxMlZBRnJhbWUgew0KPiAgICAgICAqLw0KPiAgICAgIElEM0QxMlJlc291 cmNlICp0ZXh0dXJlOw0KPg0KPiArICAgIC8qKg0KPiArICAgICAqIEluIHRleHR1cmUgYXJyYXkg bW9kZSwgdGhlIGluZGV4IG9mIHN1YnJlc291cmNlDQo+ICsgICAgICovDQo+ICsgICAgaW50IHN1 YnJlc291cmNlX2luZGV4Ow0KPiArDQo+ICAgICAgLyoqDQo+ICAgICAgICogVGhlIHN5bmMgY29u dGV4dCBmb3IgdGhlIHRleHR1cmUNCj4gICAgICAgKg0KPiBAQCAtMTM3LDYgKzE0MiwxOSBAQCB0 eXBlZGVmIHN0cnVjdCBBVkQzRDEyVkFGcmFtZXNDb250ZXh0IHsNCj4gICAgICAgKiBAc2VlIGh0 dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dpbjMyL2FwaS9kM2QxMi9u ZS0NCj4gZDNkMTItZDNkMTJfcmVzb3VyY2VfZmxhZ3MNCj4gICAgICAgKi8NCj4gICAgICBEM0Qx Ml9SRVNPVVJDRV9GTEFHUyBmbGFnczsNCj4gKw0KPiArICAgIC8qKg0KPiArICAgICAqIEluIHRl eHR1cmUgYXJyYXkgbW9kZSwgdGhlIEQzRDEyIHVzZXMgdGhlIHNhbWUgdGhlIHNhbWUgdGV4dHVy ZSBhcnJheQ0KPiAocmVzb3VyY2UpZm9yIGFsbA0KPiArICAgICAqIHBpY3R1cmVzLg0KPiArICAg ICAqLw0KPiArICAgIElEM0QxMlJlc291cmNlICp0ZXh0dXJlX2FycmF5Ow0KPiArDQo+ICsgICAg LyoqDQo+ICsgICAgICogSW4gdGV4dHVyZSBhcnJheSBtb2RlLCB0aGUgRDNEMTIgdXNlcyB0aGUg c2FtZSB0ZXh0dXJlIGFycmF5IChyZXNvdXJjZSlmb3INCj4gYWxsDQo+ICsgICAgICogcGljdHVy ZXMsIGJ1dCBkaWZmZXJlbnQgc3VicmVzb3VyY2VzIHRvIHJlcHJlc2VudCBlYWNoIHBpY3R1cmUu DQo+ICsgICAgICogVGhpcyBpcyB0aGUgc2l6ZSBvZiB0aGUgdGV4dHVyZSBhcnJheSAoaW4gbnVt YmVyIG9mIHN1YnJlc291cmNlcykuDQo+ICsgICAgICovDQo+ICsgICAgaW50IHRleHR1cmVfYXJy YXlfc2l6ZTsNCj4gIH0gQVZEM0QxMlZBRnJhbWVzQ29udGV4dDsNCj4NCj4gICNlbmRpZiAvKiBB VlVUSUxfSFdDT05URVhUX0QzRDEyVkFfSCAqLyBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3ZlcnNp b24uaA0KPiBiL2xpYmF2dXRpbC92ZXJzaW9uLmggaW5kZXggMmMwYWEzZTM1ZS4uMjljZDMxZTIy OSAxMDA2NDQNCj4gLS0tIGEvbGliYXZ1dGlsL3ZlcnNpb24uaA0KPiArKysgYi9saWJhdnV0aWwv dmVyc2lvbi5oDQo+IEBAIC03OSw4ICs3OSw4IEBADQo+ICAgKi8NCj4NCj4gICNkZWZpbmUgTElC QVZVVElMX1ZFUlNJT05fTUFKT1IgIDYwDQo+IC0jZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9OX01J Tk9SICAgNA0KPiAtI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9NSUNSTyAxMDENCj4gKyNkZWZp bmUgTElCQVZVVElMX1ZFUlNJT05fTUlOT1IgICA1DQo+ICsjZGVmaW5lIExJQkFWVVRJTF9WRVJT SU9OX01JQ1JPIDEwMA0KPg0KPiAgI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQNCj4gQVZf VkVSU0lPTl9JTlQoTElCQVZVVElMX1ZFUlNJT05fTUFKT1IsIFwNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCQVZVVElMX1ZFUlNJT05fTUlOT1Is IFwNCj4gLS0NCj4gMi40NS4yLndpbmRvd3MuMQ0KPg0KDQpMR1RNLCB3aWxsIGFwcGx5DQpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KZmZtcGVnLWRldmVs IG1haWxpbmcgbGlzdA0KZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcNCmh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbA0KDQpUbyB1bnN1YnNjcmliZSwgdmlzaXQg bGluayBhYm92ZSwgb3IgZW1haWwNCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0 aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==