From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 03DF946146 for ; Fri, 7 Jul 2023 14:06:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 74A8568C7F0; Fri, 7 Jul 2023 17:06:15 +0300 (EEST) Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01olkn2103.outbound.protection.outlook.com [40.92.107.103]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 06C5668C7D2 for ; Fri, 7 Jul 2023 17:06:07 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HzTWSBRRxoLAAmkY7AYN6ODYCyTcW7VhaTVobVlh30ZBslTNWKiGNUJpFzh7fZvg0t4FoJKCWYTiaqUxlt+3VpbcZlQmg+VslNGhAGbzA1HdV4NPGzBdan8LUg0+f3kN35Ov1cBeFUO4nvUsoXGWKUu80X6GGIsjyyUnnStkHC+KCm00JiB2HcY3e/iFKGeI4sWMdUiOmEJlIKYY9OzdgrqC6g8E0LfKt4q47fCLVr8fc+qNnXUblQFdVCy+juGTBP0icVw7anpgtpht2v+S6rzt88Jli1eK+Pm2DIpYdOH81ul70ASs0cfjIvrLVQq3ahhF0hoaNCOEo4uY/HA5Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=W0XlyNPe4XQpWP3b+1LwAp1lyZLAcJsXU3LZelwQCzk=; b=Ptby/AXqFNy0YjWIL17PQHC1+TdekJ0gYnLVb2U2G9KrH6IsrWh4RNHhBBdrdXU86DbUlxUF3IP2el2DvWRGseuw8n1sMEoNQcmyaS9A/IUVh/5YKufTWf63Qaa2t8TgCK/UpHV/Rni+74/R+7SDggtnI6cjKoNhjlsGrzjnLWU4BDxSsLd+3shta8LL11BgKw2anmghkZamDTWwibU4BlVWxSVL9es6rJyEGbLn0lg+/34b4Fcaw/EXyiyYVMCBoNnlyg6iZiogpYW+KZvuZZcas2culxfLYlCF7TNbM/dlwrmzz8AMGTk/cbVUI+Q3yoyaNuk57SKrFZAUbS4FBQ== 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=W0XlyNPe4XQpWP3b+1LwAp1lyZLAcJsXU3LZelwQCzk=; b=JakxU5VNgYpecGXxjAbhjJRyDSDjofI6d1Os/w4WYH8cpR4Gh+0WCT4JIHsqb84fkXYew4fgufsG2tylWV4AUVp8k/py2ThfjZKq8GOErl66F1c4ypzo8fufqA90Q+IPYiUc5FGoz4vekumXlVz9cZYv+51NBcZm2Keql7ZbrJsLN3HhGvedXZ34EkX+y3UVwS+Y5rpZsoPdxIp4ePqbrdjaX4ZPh0tjYWv9H/7u1BNkvVhERkhWuL8H/tCTixNHSlOu5xE8k0asShNIIM1ht5a9zxOXONKzOCcbCYMfZP6o2B89Ldrw7znFyVgxA+SA1aUU0TLaFiEjQapOR4QDTw== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by KL1PR0601MB5445.apcprd06.prod.outlook.com (2603:1096:820:c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.25; Fri, 7 Jul 2023 14:05:53 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::7d80:1294:fd54:a7f]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::7d80:1294:fd54:a7f%7]) with mapi id 15.20.6565.016; Fri, 7 Jul 2023 14:05:53 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Fri, 7 Jul 2023 22:05:30 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230707140540.10279-1-nuomi2021@gmail.com> References: <20230707140540.10279-1-nuomi2021@gmail.com> X-TMN: [++PXsC2ZzDBWn6k6AfFEDX9MdscyHJGl] X-ClientProxiedBy: TYCP286CA0251.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::20) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20230707140540.10279-5-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|KL1PR0601MB5445:EE_ X-MS-Office365-Filtering-Correlation-Id: ba7023d8-e2db-41a1-f555-08db7ef346c7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZtbT/obHrpXgiqkyzg/FnQR0LbeR8YUCiS3OGdjdn5Zi62cv3Sxe9kTTKTxhTSCUz9ISHl4vJjkUW7WIk8VLY1EZklqkuQO4Cd5WWP3oBeAV+zypCzHykZhzM/EBUkRDQS1vvMTK0qPVDq+pX2yzCM3OanvXnIzQ8ytXlpOZy+wlu4oRz8BI0xJWbtT9edF46ienCuzItLzae0p8A/3C3R2Cd02p798xjN9E994bAUYs+4ao1AjiLY0YX99Lgc4YdZnhcWXOLxXtdbzPVi4JNr8AjQhdmZc9KiFxMB6KqSJnEezsZkwtwGu5BwyNg5IpqPvkMUqOPKASyhr1KvyVs+aOsOJfxk+prpWcURpzIyOvz0R9TnOH0pjeagAwQTB8yGmmBOUj+u2xzHhJX4sxIGUbgls6hEj4bW1B/augNfjgDKbC9XDQFTvXRF4wzi3W6VC1HQ6mlumPFLzLLZA8WDmoLXyxyJF8It9qGUouWD18uzYQi7Do4H8T0XituA//UkSbFeZTlE+BeEpPvNKOKA+KMW/GZBZTXc07fiEwVC19eka2Zy0ZDjRKuaX729xtsFNdSg6hN0UtMT2XMwEIcURwzvqqqnCg7/Vv+/zvkAY+rXH1g/nppQRjDhB2u5gp X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?U1MvL090SitlclkrV2hOS2FMZHVhVWdLV24wZ2hzdXZLWGx2c0lRVk1BUHJ5?= =?utf-8?B?cjJBcUxmb3FiMDhIMUZUTmlPMTRZUHl2N1JCZlNKTDU2VHBpcnEyMk12YW1C?= =?utf-8?B?cWplVTVRYXJ3THBOcVdsVjkwNE1kTHE0S2FzTnhGUVcwYlZwZ2g3LzNZWDgv?= =?utf-8?B?YjVsRTBVajJQMElHQnZxTC85NjRvZzc5dkp0QXNTVzcxdGUrZ3JJR3RFQ2px?= =?utf-8?B?YmlWNVRVOFRHMk5penEyY2tsWUJLUGgrcDRUWWhFNDE4MEM1M0xuMlZtN2R0?= =?utf-8?B?MlBad2g5OTdROHVVZHVoaE9qTmZ2ZEd4azdlVnBpdzNudGc5NjVPZngzTk9z?= =?utf-8?B?RG9jUTNYemlLcEdUUEVJKzhadzNOVW9qVWtQcUNhTW1oeitENlJLMWQyMUF0?= =?utf-8?B?aytJdkdzZjdOOU9BL0RoZ2F6dFZtWXRVZkdnNm1FOHB6anVqU2xTbWlEL1Ra?= =?utf-8?B?bDZnSUowUDZFdmpUL3lOcDU4Q01pTVdudytsK3VWZEZGcmtWbjUzbk1Pakxk?= =?utf-8?B?VjhCd25jR0hjbUYrNFlJVnZMdnNJaVAvcWRjZGJQUUNSbTNQRkQ2dHdnNjFM?= =?utf-8?B?V2c0dDdsVHV6MFJKM2V4VVFsNEt6cEZhRFZJS0tTRnVBUklNUFQvdzBxT3p4?= =?utf-8?B?QThjR3hZRGRERHZaRXd2NzlQd3VKTjR3NVYza1JBTS9xTmIzcUNwNXlidFJM?= =?utf-8?B?bVBaYzh3Yk9DdVdhWmtwT1NoZmd3c2thTVpGK2tINUMwcW5wc3gxZ0xZbjF1?= =?utf-8?B?aFZPME5sblRhVS9sZXVvU1F2UWt2M0RCcDJWUTRsK0lnREk4ZG15N0hOMldq?= =?utf-8?B?dFZvNkFrLzl0S3dYbUdHU21xeHF2Mm1KdkZaWGZvdGlRVHdyOFJ0M253TGZ1?= =?utf-8?B?Smw4LzhYbENPOEVwWGgrd3VtVEIzUDlQZ2VTdHR2ZlJTQWtCOWk4VjZOT011?= =?utf-8?B?NXNwVDlwWFRmckdLYks4K2ZUTkdBa3ZIN0xvSWFSQlpQWEg4cXNFUy9qUGVI?= =?utf-8?B?dUVyc0JyWXZwa1ZDSVp0OWJGQU9BWW1oU3JVRUhjOURKVzYvcVF6UkI2QzZW?= =?utf-8?B?eHpLT0lob0diZk5JMkxlNDlrZ2c1TklpejNHMVY0SW42dUxpK2VEWDVXVmNG?= =?utf-8?B?RTlEMVZGQXJ5UVpVSVg1Z2xHdnNqZFJNTExWSHAwUEdvUjJXcjFURXNpb3JU?= =?utf-8?B?SFNhYVFCb3hnL2RWMnhRU3BQdXVINEJsZmdMWDJkOTNScmFTSG5qSnpYSWF4?= =?utf-8?B?cmJpRC9oSFVtdlR6UlZzSWRjWDUwWUNsOGVVSTJIanB4UTJEaXBmRHppanJp?= =?utf-8?B?a1FnK05Va1k4SHRXRDZPRUJhNkZHTHNzak5neDU1TzY2T0ZFWWZtNmpkK0pu?= =?utf-8?B?aFQ3V3NmeU5NbzhpdkRkYXlsY0JuMHduUkRRalNoYnQ4dUJEb1lvUUh5SkVZ?= =?utf-8?B?UWxyYW1hc0h0MWFzN24zeENkeUVXRmpTY3g4VFowVTNJcFBnYzRDSnlFcEsv?= =?utf-8?B?QnZsc2MxZGRRUWpFbXVrZGdhcXJUNHFFWFZJdkhIR3pTZFVqV0dLWkE3UjVF?= =?utf-8?B?d2VlQThQT0JkOERGdHBZYXpJWndsUGdQcEhMMlNsRGZOTGxDNm0vQjhqNXlN?= =?utf-8?B?aXBCeGc2WHlKdE1Ob1JvQ1c3S0VWbisrUjZDY2NRT3FXSzJvSUxuS01teUt3?= =?utf-8?Q?1Lk1gU/j/do83aN6bCJG?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba7023d8-e2db-41a1-f555-08db7ef346c7 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2023 14:05:53.5789 (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: KL1PR0601MB5445 Subject: [FFmpeg-devel] [PATCH v2 04/14] vvcdec: add cabac decoder 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: Nuo Mi Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: YWRkIENvbnRleHQtYmFzZWQgQWRhcHRpdmUgQmluYXJ5IEFyaXRobWV0aWMgQ29kaW5nIChDQUJB QykgZGVjb2RlcgotLS0KIGxpYmF2Y29kZWMvdnZjL01ha2VmaWxlICAgIHwgICAgMiArCiBsaWJh dmNvZGVjL3Z2Yy92dmNfY2FiYWMuYyB8IDI0ODMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuaCB8ICAxMjYgKysKIGxpYmF2Y29k ZWMvdnZjL3Z2Y19jdHUuYyAgIHwgICAzMiArCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmggICB8 ICA0MDQgKysrKysrCiBsaWJhdmNvZGVjL3Z2Yy92dmNkZWMuaCAgICB8ICAgIDcgKy0KIDYgZmls ZXMgY2hhbmdlZCwgMzA1MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVj L3Z2Yy92dmNfY3R1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1 LmgKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvdnZj L01ha2VmaWxlCmluZGV4IGFjNTFmYjhkMWQuLjM5ZjM3NmZkZGMgMTAwNjQ0Ci0tLSBhL2xpYmF2 Y29kZWMvdnZjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlCkBAIC0zLDUg KzMsNyBAQCBjbGVhbjo6CiAKIE9CSlMtJChDT05GSUdfVlZDX0RFQ09ERVIpICAgICAgICAgICs9 ICB2dmMvdnZjZGVjLm8gICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhlY3V0b3IubyAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZ2Yy92dmNfY2FiYWMubyAgICAgICAgIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dmMvdnZjX2N0dS5vICAgICAgICAgICBc CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnZjL3Z2Y19kYXRhLm8g ICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ2Yy92 dmNfcHMubwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmMgYi9saWJhdmNv ZGVjL3Z2Yy92dmNfY2FiYWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4zMGQwZjM4ZmMzCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFj LmMKQEAgLTAsMCArMSwyNDgzIEBACisvKgorICogVlZDIENBQkFDIGRlY29kZXIKKyAqCisgKiBD b3B5cmlnaHQgKEMpIDIwMjEgTnVvIE1pCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZt cGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT QQorICovCisjaW5jbHVkZSAibGliYXZjb2RlYy9jYWJhY19mdW5jdGlvbnMuaCIKKworI2luY2x1 ZGUgInZ2Y19jYWJhYy5oIgorI2luY2x1ZGUgInZ2Y19jdHUuaCIKKyNpbmNsdWRlICJ2dmNfZGF0 YS5oIgorCisjZGVmaW5lIENBQkFDX01BWF9CSU4gMzEKKworI2RlZmluZSBDTlUgMzUKKworZW51 bSBTeW50YXhFbGVtZW50IHsKKyAgICBBTEZfQ1RCX0ZMQUcgICAgICAgICAgICAgICAgICAgID0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgIEFMRl9VU0VfQVBTX0ZMQUcg ICAgICAgICAgICAgICAgPSBBTEZfQ1RCX0ZMQUcgICAgICAgICAgICAgICAgICArIDksCisgICAg QUxGX0NUQl9DQ19DQl9JREMsCisgICAgQUxGX0NUQl9DQ19DUl9JREMgICAgICAgICAgICAgICA9 IEFMRl9DVEJfQ0NfQ0JfSURDICAgICAgICAgICAgICsgMywKKyAgICBBTEZfQ1RCX0ZJTFRFUl9B TFRfSURYICAgICAgICAgID0gQUxGX0NUQl9DQ19DUl9JREMgICAgICAgICAgICAgKyAzLAorICAg IFNBT19NRVJHRV9GTEFHICAgICAgICAgICAgICAgICAgPSBBTEZfQ1RCX0ZJTFRFUl9BTFRfSURY ICAgICAgICArIDIsCisgICAgU0FPX1RZUEVfSURYLAorICAgIFNQTElUX0NVX0ZMQUcsCisgICAg U1BMSVRfUVRfRkxBRyAgICAgICAgICAgICAgICAgICA9IFNQTElUX0NVX0ZMQUcgICAgICAgICAg ICAgICAgICsgOSwKKyAgICBNVFRfU1BMSVRfQ1VfVkVSVElDQUxfRkxBRyAgICAgID0gU1BMSVRf UVRfRkxBRyAgICAgICAgICAgICAgICAgKyA2LAorICAgIE1UVF9TUExJVF9DVV9CSU5BUllfRkxB RyAgICAgICAgPSBNVFRfU1BMSVRfQ1VfVkVSVElDQUxfRkxBRyAgICArIDUsCisgICAgTk9OX0lO VEVSX0ZMQUcgICAgICAgICAgICAgICAgICA9IE1UVF9TUExJVF9DVV9CSU5BUllfRkxBRyAgICAg ICsgNCwKKyAgICBDVV9TS0lQX0ZMQUcgICAgICAgICAgICAgICAgICAgID0gTk9OX0lOVEVSX0ZM QUcgICAgICAgICAgICAgICAgKyAyLAorICAgIFBSRURfTU9ERV9JQkNfRkxBRyAgICAgICAgICAg ICAgPSBDVV9TS0lQX0ZMQUcgICAgICAgICAgICAgICAgICArIDMsCisgICAgUFJFRF9NT0RFX0ZM QUcgICAgICAgICAgICAgICAgICA9IFBSRURfTU9ERV9JQkNfRkxBRyAgICAgICAgICAgICsgMywK KyAgICBQUkVEX01PREVfUExUX0ZMQUcgICAgICAgICAgICAgID0gUFJFRF9NT0RFX0ZMQUcgICAg ICAgICAgICAgICAgKyAyLAorICAgIENVX0FDVF9FTkFCTEVEX0ZMQUcsCisgICAgSU5UUkFfQkRQ Q01fTFVNQV9GTEFHLAorICAgIElOVFJBX0JEUENNX0xVTUFfRElSX0ZMQUcsCisgICAgSU5UUkFf TUlQX0ZMQUcsCisgICAgSU5UUkFfTFVNQV9SRUZfSURYICAgICAgICAgICAgICA9IElOVFJBX01J UF9GTEFHICAgICAgICAgICAgICAgICsgNCwKKyAgICBJTlRSQV9TVUJQQVJUSVRJT05TX01PREVf RkxBRyAgID0gSU5UUkFfTFVNQV9SRUZfSURYICAgICAgICAgICAgKyAyLAorICAgIElOVFJBX1NV QlBBUlRJVElPTlNfU1BMSVRfRkxBRywKKyAgICBJTlRSQV9MVU1BX01QTV9GTEFHLAorICAgIElO VFJBX0xVTUFfTk9UX1BMQU5BUl9GTEFHLAorICAgIElOVFJBX0JEUENNX0NIUk9NQV9GTEFHICAg ICAgICAgPSBJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxBRyAgICArIDIsCisgICAgSU5UUkFfQkRQ Q01fQ0hST01BX0RJUl9GTEFHLAorICAgIENDTE1fTU9ERV9GTEFHLAorICAgIENDTE1fTU9ERV9J RFgsCisgICAgSU5UUkFfQ0hST01BX1BSRURfTU9ERSwKKyAgICBHRU5FUkFMX01FUkdFX0ZMQUcs CisgICAgSU5URVJfUFJFRF9JREMsCisgICAgSU5URVJfQUZGSU5FX0ZMQUcgICAgICAgICAgICAg ICA9IElOVEVSX1BSRURfSURDICAgICAgICAgICAgICAgICsgNiwKKyAgICBDVV9BRkZJTkVfVFlQ RV9GTEFHICAgICAgICAgICAgID0gSU5URVJfQUZGSU5FX0ZMQUcgICAgICAgICAgICAgKyAzLAor ICAgIFNZTV9NVkRfRkxBRywKKyAgICBSRUZfSURYX0xYLAorICAgIE1WUF9MWF9GTEFHICAgICAg ICAgICAgICAgICAgICAgPSBSRUZfSURYX0xYICAgICAgICAgICAgICAgICAgICArIDIsCisgICAg QU1WUl9GTEFHLAorICAgIEFNVlJfUFJFQ0lTSU9OX0lEWCAgICAgICAgICAgICAgPSBBTVZSX0ZM QUcgICAgICAgICAgICAgICAgICAgICArIDIsCisgICAgQkNXX0lEWCAgICAgICAgICAgICAgICAg ICAgICAgICA9IEFNVlJfUFJFQ0lTSU9OX0lEWCAgICAgICAgICAgICsgMywKKyAgICBDVV9DT0RF RF9GTEFHLAorICAgIENVX1NCVF9GTEFHLAorICAgIENVX1NCVF9RVUFEX0ZMQUcgICAgICAgICAg ICAgICAgPSBDVV9TQlRfRkxBRyAgICAgICAgICAgICAgICAgICArIDIsCisgICAgQ1VfU0JUX0hP UklaT05UQUxfRkxBRywKKyAgICBDVV9TQlRfUE9TX0ZMQUcgICAgICAgICAgICAgICAgID0gQ1Vf U0JUX0hPUklaT05UQUxfRkxBRyAgICAgICAgKyAzLAorICAgIExGTlNUX0lEWCwKKyAgICBNVFNf SURYICAgICAgICAgICAgICAgICAgICAgICAgID0gTEZOU1RfSURYICAgICAgICAgICAgICAgICAg ICAgKyAzLAorICAgIENPUFlfQUJPVkVfUEFMRVRURV9JTkRJQ0VTX0ZMQUcgPSBNVFNfSURYICAg ICAgICAgICAgICAgICAgICAgICArIDQsCisgICAgUEFMRVRURV9UUkFOU1BPU0VfRkxBRywKKyAg ICBSVU5fQ09QWV9GTEFHLAorICAgIFJFR1VMQVJfTUVSR0VfRkxBRyAgICAgICAgICAgICAgPSBS VU5fQ09QWV9GTEFHICAgICAgICAgICAgICAgICArIDgsCisgICAgTU1WRF9NRVJHRV9GTEFHICAg ICAgICAgICAgICAgICA9IFJFR1VMQVJfTUVSR0VfRkxBRyAgICAgICAgICAgICsgMiwKKyAgICBN TVZEX0NBTkRfRkxBRywKKyAgICBNTVZEX0RJU1RBTkNFX0lEWCwKKyAgICBDSUlQX0ZMQUcsCisg ICAgTUVSR0VfU1VCQkxPQ0tfRkxBRywKKyAgICBNRVJHRV9TVUJCTE9DS19JRFggICAgICAgICAg ICAgID0gTUVSR0VfU1VCQkxPQ0tfRkxBRyAgICAgICAgICAgKyAzLAorICAgIE1FUkdFX0lEWCwK KyAgICBBQlNfTVZEX0dSRUFURVIwX0ZMQUcsCisgICAgQUJTX01WRF9HUkVBVEVSMV9GTEFHLAor ICAgIFRVX1lfQ09ERURfRkxBRywKKyAgICBUVV9DQl9DT0RFRF9GTEFHICAgICAgICAgICAgICAg ID0gVFVfWV9DT0RFRF9GTEFHICAgICAgICAgICAgICAgKyA0LAorICAgIFRVX0NSX0NPREVEX0ZM QUcgICAgICAgICAgICAgICAgPSBUVV9DQl9DT0RFRF9GTEFHICAgICAgICAgICAgICArIDIsCisg ICAgQ1VfUVBfREVMVEFfQUJTICAgICAgICAgICAgICAgICA9IFRVX0NSX0NPREVEX0ZMQUcgICAg ICAgICAgICAgICsgMywKKyAgICBDVV9DSFJPTUFfUVBfT0ZGU0VUX0ZMQUcgICAgICAgID0gQ1Vf UVBfREVMVEFfQUJTICAgICAgICAgICAgICAgKyAyLAorICAgIENVX0NIUk9NQV9RUF9PRkZTRVRf SURYLAorICAgIFRSQU5TRk9STV9TS0lQX0ZMQUcsCisgICAgVFVfSk9JTlRfQ0JDUl9SRVNJRFVB TF9GTEFHICAgICA9IFRSQU5TRk9STV9TS0lQX0ZMQUcgICAgICAgICAgICsgMiwKKyAgICBMQVNU X1NJR19DT0VGRl9YX1BSRUZJWCAgICAgICAgID0gVFVfSk9JTlRfQ0JDUl9SRVNJRFVBTF9GTEFH ICAgKyAzLAorICAgIExBU1RfU0lHX0NPRUZGX1lfUFJFRklYICAgICAgICAgPSBMQVNUX1NJR19D T0VGRl9YX1BSRUZJWCAgICAgICArMjMsCisgICAgU0JfQ09ERURfRkxBRyAgICAgICAgICAgICAg ICAgICA9IExBU1RfU0lHX0NPRUZGX1lfUFJFRklYICAgICAgICsyMywKKyAgICBTSUdfQ09FRkZf RkxBRyAgICAgICAgICAgICAgICAgID0gU0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgICAgKyA3 LAorICAgIFBBUl9MRVZFTF9GTEFHICAgICAgICAgICAgICAgICAgPSBTSUdfQ09FRkZfRkxBRyAg ICAgICAgICAgICAgICArNjMsCisgICAgQUJTX0xFVkVMX0dUWF9GTEFHICAgICAgICAgICAgICA9 IFBBUl9MRVZFTF9GTEFHICAgICAgICAgICAgICAgICszMywKKyAgICBDT0VGRl9TSUdOX0ZMQUcg ICAgICAgICAgICAgICAgID0gQUJTX0xFVkVMX0dUWF9GTEFHICAgICAgICAgICAgKzcyLAorICAg IFNZTlRBWF9FTEVNRU5UX0xBU1QgICAgICAgICAgICAgPSBDT0VGRl9TSUdOX0ZMQUcgICAgICAg ICAgICAgICArIDYsCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBpbml0X3ZhbHVlc1s0XVtT WU5UQVhfRUxFTUVOVF9MQVNUXSA9IHsKKyAgICB7CisgICAgICAgIC8vYWxmX2N0Yl9mbGFnCisg ICAgICAgIDYyLCAgMzksICAzOSwgIDU0LCAgMzksICAzOSwgIDMxLCAgMzksICAzOSwKKyAgICAg ICAgLy9hbGZfdXNlX2Fwc19mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAvL2FsZl9jdGJfY2Nf Y2JfaWRjCisgICAgICAgIDE4LCAgMzAsICAzMSwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NyX2lk YworICAgICAgICAxOCwgIDMwLCAgMzEsCisgICAgICAgIC8vYWxmX2N0Yl9maWx0ZXJfYWx0X2lk eAorICAgICAgICAxMSwgIDExLAorICAgICAgICAvL3Nhb19tZXJnZV9sZWZ0X2ZsYWcgYW5kIHNh b19tZXJnZV91cF9mbGFnCisgICAgICAgIDYwLAorICAgICAgICAvL3Nhb190eXBlX2lkeF9sdW1h IGFuZCBzYW9fdHlwZV9pZHhfY2hyb21hCisgICAgICAgIDEzLAorICAgICAgICAvL3NwbGl0X2N1 X2ZsYWcKKyAgICAgICAgMTksICAyOCwgIDM4LCAgMjcsICAyOSwgIDM4LCAgMjAsICAzMCwgIDMx LAorICAgICAgICAvL3NwbGl0X3F0X2ZsYWcKKyAgICAgICAgMjcsICAgNiwgIDE1LCAgMjUsICAx OSwgIDM3LAorICAgICAgICAvL210dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnCisgICAgICAgIDQz LCAgNDIsICAyOSwgIDI3LCAgNDQsCisgICAgICAgIC8vbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFn CisgICAgICAgIDM2LCAgNDUsICAzNiwgIDQ1LAorICAgICAgICAvL25vbl9pbnRlcl9mbGFnCisg ICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICAwLCAgMjYs ICAyOCwKKyAgICAgICAgLy9wcmVkX21vZGVfaWJjX2ZsYWcKKyAgICAgICAgMTcsICA0MiwgIDM2 LAorICAgICAgICAvL3ByZWRfbW9kZV9mbGFnCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAv L3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAyNSwKKyAgICAgICAgLy9jdV9hY3RfZW5hYmxl ZF9mbGFnCisgICAgICAgIDUyLAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZmxhZworICAg ICAgICAxOSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnCisgICAgICAgIDM1 LAorICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgIDMzLCAgNDksICA1MCwgIDI1LAor ICAgICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAyNSwgIDYwLAorICAgICAgICAv L2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgIDMzLAorICAgICAgICAvL2lu dHJhX3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICA0MywKKyAgICAgICAgLy9pbnRy YV9sdW1hX21wbV9mbGFnCisgICAgICAgIDQ1LAorICAgICAgICAvL2ludHJhX2x1bWFfbm90X3Bs YW5hcl9mbGFnCisgICAgICAgIDEzLCAgMjgsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21h X2ZsYWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2Rpcl9mbGFn CisgICAgICAgIDI3LAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisgICAgICAgIDU5LAorICAg ICAgICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgMjcsCisgICAgICAgIC8vaW50cmFfY2hyb21h X3ByZWRfbW9kZQorICAgICAgICAzNCwKKyAgICAgICAgLy9nZW5lcmFsX21lcmdlX2ZsYWcKKyAg ICAgICAgMjYsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAgICAgQ05VLCBDTlUsIENO VSwgQ05VLCBDTlUsIENOVSwKKyAgICAgICAgLy9pbnRlcl9hZmZpbmVfZmxhZworICAgICAgICBD TlUsIENOVSwgQ05VLAorICAgICAgICAvL2N1X2FmZmluZV90eXBlX2ZsYWcKKyAgICAgICAgQ05V LAorICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vcmVmX2lk eF9sMCBhbmQgcmVmX2lkeF9sMQorICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9tdnBfbDBf ZmxhZyBhbmQgbXZwX2wxX2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAgIC8vYW12cl9mbGFnCisg ICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9uX2lkeAorICAgICAgICAz NSwgIDM0LCAgMzUsCisgICAgICAgIC8vYmN3X2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8v Y3VfY29kZWRfZmxhZworICAgICAgICAgNiwKKyAgICAgICAgLy9jdV9zYnRfZmxhZworICAgICAg ICBDTlUsIENOVSwKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIENOVSwKKyAg ICAgICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAgICAgIENOVSwgQ05VLCBDTlUsCisg ICAgICAgIC8vY3Vfc2J0X3Bvc19mbGFnCisgICAgICAgIENOVSwKKyAgICAgICAgLy9sZm5zdF9p ZHgKKyAgICAgICAgMjgsICA1MiwgIDQyLAorICAgICAgICAvL210c19pZHgKKyAgICAgICAgMjks ICAgMCwgIDI4LCAgIDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNfZmxh ZworICAgICAgICA0MiwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAgICAg IDQyLAorICAgICAgICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgNTAsICAzNywgIDQ1LCAgMzAs ICA0NiwgIDQ1LCAgMzgsICA0NiwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAgICAg ICAgQ05VLCBDTlUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFnCisgICAgICAgIENOVSwKKyAg ICAgICAgLy9tbXZkX2NhbmRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vbW12ZF9kaXN0 YW5jZV9pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL2NpaXBfZmxhZworICAgICAgICBDTlUs CisgICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfZmxhZworICAgICAgICBDTlUsIENOVSwgQ05VLAor ICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8vbWVy Z2VfaWR4LCBtZXJnZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgxCisgICAgICAgIDM0LAor ICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICAxNCwKKyAgICAgICAgLy9h YnNfbXZkX2dyZWF0ZXIxX2ZsYWcKKyAgICAgICAgNDUsCisgICAgICAgIC8vdHVfeV9jb2RlZF9m bGFnCisgICAgICAgIDE1LCAgMTIsICAgNSwgICA3LAorICAgICAgICAvL3R1X2NiX2NvZGVkX2Zs YWcKKyAgICAgICAgMTIsICAyMSwKKyAgICAgICAgLy90dV9jcl9jb2RlZF9mbGFnCisgICAgICAg IDMzLCAgMjgsICAzNiwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMKKyAgICAgICAgQ05VLCBD TlUsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9mbGFnCisgICAgICAgIENOVSwKKyAg ICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8v dHJhbnNmb3JtX3NraXBfZmxhZworICAgICAgICAyNSwgICA5LAorICAgICAgICAvL3R1X2pvaW50 X2NiY3JfcmVzaWR1YWxfZmxhZworICAgICAgICAxMiwgIDIxLCAgMzUsCisgICAgICAgIC8vbGFz dF9zaWdfY29lZmZfeF9wcmVmaXgKKyAgICAgICAgMTMsICAgNSwgICA0LCAgMjEsICAxNCwgICA0 LCAgIDYsICAxNCwgIDIxLCAgMTEsICAxNCwgICA3LCAgMTQsICAgNSwgIDExLCAgMjEsCisgICAg ICAgIDMwLCAgMjIsICAxMywgIDQyLCAgMTIsICAgNCwgICAzLAorICAgICAgICAvL2xhc3Rfc2ln X2NvZWZmX3lfcHJlZml4CisgICAgICAgIDEzLCAgIDUsICAgNCwgICA2LCAgMTMsICAxMSwgIDE0 LCAgIDYsICAgNSwgICAzLCAgMTQsICAyMiwgICA2LCAgIDQsICAgMywgICA2LAorICAgICAgICAy MiwgIDI5LCAgMjAsICAzNCwgIDEyLCAgIDQsICAgMywKKyAgICAgICAgLy9zYl9jb2RlZF9mbGFn CisgICAgICAgIDE4LCAgMzEsICAyNSwgIDE1LCAgMTgsICAyMCwgIDM4LAorICAgICAgICAvL3Np Z19jb2VmZl9mbGFnCisgICAgICAgIDI1LCAgMTksICAyOCwgIDE0LCAgMjUsICAyMCwgIDI5LCAg MzAsICAxOSwgIDM3LCAgMzAsICAzOCwgIDExLCAgMzgsICA0NiwgIDU0LAorICAgICAgICAyNywg IDM5LCAgMzksICAzOSwgIDQ0LCAgMzksICAzOSwgIDM5LCAgMTgsICAzOSwgIDM5LCAgMzksICAy NywgIDM5LCAgMzksICAzOSwKKyAgICAgICAgIDAsICAzOSwgIDM5LCAgMzksICAyNSwgIDI3LCAg MjgsICAzNywgIDM0LCAgNTMsICA1MywgIDQ2LCAgMTksICA0NiwgIDM4LCAgMzksCisgICAgICAg IDUyLCAgMzksICAzOSwgIDM5LCAgMTEsICAzOSwgIDM5LCAgMzksICAxOSwgIDM5LCAgMzksICAz OSwgIDI1LCAgMjgsICAzOCwKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZworICAgICAgICAzMywg IDI1LCAgMTgsICAyNiwgIDM0LCAgMjcsICAyNSwgIDI2LCAgMTksICA0MiwgIDM1LCAgMzMsICAx OSwgIDI3LCAgMzUsICAzNSwKKyAgICAgICAgMzQsICA0MiwgIDIwLCAgNDMsICAyMCwgIDMzLCAg MjUsICAyNiwgIDQyLCAgMTksICAyNywgIDI2LCAgNTAsICAzNSwgIDIwLCAgNDMsCisgICAgICAg IDExLAorICAgICAgICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAyNSwgIDI1LCAgMTEs ICAyNywgIDIwLCAgMjEsICAzMywgIDEyLCAgMjgsICAyMSwgIDIyLCAgMzQsICAyOCwgIDI5LCAg MjksICAzMCwKKyAgICAgICAgMzYsICAyOSwgIDQ1LCAgMzAsICAyMywgIDQwLCAgMzMsICAyNywg IDI4LCAgMjEsICAzNywgIDM2LCAgMzcsICA0NSwgIDM4LCAgNDYsCisgICAgICAgIDI1LCAgIDEs ICA0MCwgIDI1LCAgMzMsICAxMSwgIDE3LCAgMjUsICAyNSwgIDE4LCAgIDQsICAxNywgIDMzLCAg MjYsICAxOSwgIDEzLAorICAgICAgICAzMywgIDE5LCAgMjAsICAyOCwgIDIyLCAgNDAsICAgOSwg IDI1LCAgMTgsICAyNiwgIDM1LCAgMjUsICAyNiwgIDM1LCAgMjgsICAzNywKKyAgICAgICAgMTEs ICAgNSwgICA1LCAgMTQsICAxMCwgICAzLCAgIDMsICAgMywKKyAgICAgICAgLy9jb2VmZl9zaWdu X2ZsYWcKKyAgICAgICAgMTIsICAxNywgIDQ2LCAgMjgsICAyNSwgIDQ2LAorICAgIH0sCisgICAg eworICAgICAgICAvL2FsZl9jdGJfZmxhZworICAgICAgICAxMywgIDIzLCAgNDYsICAgNCwgIDYx LCAgNTQsICAxOSwgIDQ2LCAgNTQsCisgICAgICAgIC8vYWxmX3VzZV9hcHNfZmxhZworICAgICAg ICA0NiwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NiX2lkYworICAgICAgICAxOCwgIDIxLCAgMzgs CisgICAgICAgIC8vYWxmX2N0Yl9jY19jcl9pZGMKKyAgICAgICAgMTgsICAyMSwgIDM4LAorICAg ICAgICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgKKyAgICAgICAgMjAsICAxMiwKKyAgICAgICAg Ly9zYW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBzYW9fbWVyZ2VfdXBfZmxhZworICAgICAgICA2MCwK KyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9tYQorICAg ICAgICA1LAorICAgICAgICAvL3NwbGl0X2N1X2ZsYWcKKyAgICAgICAgMTEsICAzNSwgIDUzLCAg MTIsICAgNiwgIDMwLCAgMTMsICAxNSwgIDMxLAorICAgICAgICAvL3NwbGl0X3F0X2ZsYWcKKyAg ICAgICAgMjAsICAxNCwgIDIzLCAgMTgsICAxOSwgICA2LAorICAgICAgICAvL210dF9zcGxpdF9j dV92ZXJ0aWNhbF9mbGFnCisgICAgICAgIDQzLCAgMzUsICAzNywgIDM0LCAgNTIsCisgICAgICAg IC8vbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnCisgICAgICAgIDQzLCAgMzcsICAyMSwgIDIyLAor ICAgICAgICAvL25vbl9pbnRlcl9mbGFnCisgICAgICAgIDI1LCAgMTIsCisgICAgICAgIC8vY3Vf c2tpcF9mbGFnCisgICAgICAgIDU3LCAgNTksICA0NSwKKyAgICAgICAgLy9wcmVkX21vZGVfaWJj X2ZsYWcKKyAgICAgICAgIDAsICA1NywgIDQ0LAorICAgICAgICAvL3ByZWRfbW9kZV9mbGFnCisg ICAgICAgIDQwLCAgMzUsCisgICAgICAgIC8vcHJlZF9tb2RlX3BsdF9mbGFnCisgICAgICAgIDAs CisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICA0NiwKKyAgICAgICAgLy9p bnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgNDAsCisgICAgICAgIC8vaW50cmFfYmRwY21f bHVtYV9kaXJfZmxhZworICAgICAgICAzNiwKKyAgICAgICAgLy9pbnRyYV9taXBfZmxhZworICAg ICAgICA0MSwgIDU3LCAgNTgsICAyNiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX3JlZl9pZHgKKyAg ICAgICAgMjUsICA1OCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZwor ICAgICAgICAzMywKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX3NwbGl0X2ZsYWcKKyAg ICAgICAgMzYsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZworICAgICAgICAzNiwKKyAg ICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAgICAxMiwgIDIwLAorICAg ICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAwLAorICAgICAgICAvL2lu dHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAxMywKKyAgICAgICAgLy9jY2xtX21v ZGVfZmxhZworICAgICAgICAzNCwKKyAgICAgICAgLy9jY2xtX21vZGVfaWR4CisgICAgICAgIDI3 LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAgICAgMjUsCisgICAgICAg IC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgIDIxLAorICAgICAgICAvL2ludGVyX3ByZWRf aWRjCisgICAgICAgICA3LCAgIDYsICAgNSwgIDEyLCAgIDQsICA0MCwKKyAgICAgICAgLy9pbnRl cl9hZmZpbmVfZmxhZworICAgICAgICAxMiwgIDEzLCAgMTQsCisgICAgICAgIC8vY3VfYWZmaW5l X3R5cGVfZmxhZworICAgICAgICAzNSwKKyAgICAgICAgLy9zeW1fbXZkX2ZsYWcKKyAgICAgICAg MjgsCisgICAgICAgIC8vcmVmX2lkeF9sMCBhbmQgcmVmX2lkeF9sMQorICAgICAgICAyMCwgIDM1 LAorICAgICAgICAvL212cF9sMF9mbGFnIGFuZCBtdnBfbDFfZmxhZworICAgICAgICAzNCwKKyAg ICAgICAgLy9hbXZyX2ZsYWcKKyAgICAgICAgNTksICA1OCwKKyAgICAgICAgLy9hbXZyX3ByZWNp c2lvbl9pZHgKKyAgICAgICAgNjAsICA0OCwgIDYwLAorICAgICAgICAvL2Jjd19pZHgKKyAgICAg ICAgIDQsCisgICAgICAgIC8vY3VfY29kZWRfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy9j dV9zYnRfZmxhZworICAgICAgICA1NiwgIDU3LAorICAgICAgICAvL2N1X3NidF9xdWFkX2ZsYWcK KyAgICAgICAgNDIsCisgICAgICAgIC8vY3Vfc2J0X2hvcml6b250YWxfZmxhZworICAgICAgICAy MCwgIDQzLCAgMTIsCisgICAgICAgIC8vY3Vfc2J0X3Bvc19mbGFnCisgICAgICAgIDI4LAorICAg ICAgICAvL2xmbnN0X2lkeAorICAgICAgICAzNywgIDQ1LCAgMjcsCisgICAgICAgIC8vbXRzX2lk eAorICAgICAgICA0NSwgIDQwLCAgMjcsICAgMCwKKyAgICAgICAgLy9jb3B5X2Fib3ZlX3BhbGV0 dGVfaW5kaWNlc19mbGFnCisgICAgICAgIDU5LAorICAgICAgICAvL3BhbGV0dGVfdHJhbnNwb3Nl X2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAgIC8vcnVuX2NvcHlfZmxhZworICAgICAgICA1MSwg IDMwLCAgMzAsICAzOCwgIDIzLCAgMzgsICA1MywgIDQ2LAorICAgICAgICAvL3JlZ3VsYXJfbWVy Z2VfZmxhZworICAgICAgICAzOCwgICA3LAorICAgICAgICAvL21tdmRfbWVyZ2VfZmxhZworICAg ICAgICAyNiwKKyAgICAgICAgLy9tbXZkX2NhbmRfZmxhZworICAgICAgICA0MywKKyAgICAgICAg Ly9tbXZkX2Rpc3RhbmNlX2lkeAorICAgICAgICA2MCwKKyAgICAgICAgLy9jaWlwX2ZsYWcKKyAg ICAgICAgNTcsCisgICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfZmxhZworICAgICAgICA0OCwgIDU3 LCAgNDQsCisgICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfaWR4CisgICAgICAgICA1LAorICAgICAg ICAvL21lcmdlX2lkeCwgbWVyZ2VfZ3BtX2lkeDAsIGFuZCBtZXJnZV9ncG1faWR4MQorICAgICAg ICAyMCwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIwX2ZsYWcKKyAgICAgICAgNDQsCisgICAg ICAgIC8vYWJzX212ZF9ncmVhdGVyMV9mbGFnCisgICAgICAgIDQzLAorICAgICAgICAvL3R1X3lf Y29kZWRfZmxhZworICAgICAgICAyMywgICA1LCAgMjAsICAgNywKKyAgICAgICAgLy90dV9jYl9j b2RlZF9mbGFnCisgICAgICAgIDI1LCAgMjgsCisgICAgICAgIC8vdHVfY3JfY29kZWRfZmxhZwor ICAgICAgICAyNSwgIDI5LCAgNDUsCisgICAgICAgIC8vY3VfcXBfZGVsdGFfYWJzCisgICAgICAg IENOVSwgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRfZmxhZworICAgICAgICBD TlUsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9pZHgKKyAgICAgICAgQ05VLAorICAg ICAgICAvL3RyYW5zZm9ybV9za2lwX2ZsYWcKKyAgICAgICAgMjUsICAgOSwKKyAgICAgICAgLy90 dV9qb2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWcKKyAgICAgICAgMjcsICAzNiwgIDQ1LAorICAgICAg ICAvL2xhc3Rfc2lnX2NvZWZmX3hfcHJlZml4CisgICAgICAgICA2LCAgMTMsICAxMiwgICA2LCAg IDYsICAxMiwgIDE0LCAgMTQsICAxMywgIDEyLCAgMjksICAgNywgICA2LCAgMTMsICAzNiwgIDI4 LAorICAgICAgICAxNCwgIDEzLCAgIDUsICAyNiwgIDEyLCAgIDQsICAxOCwKKyAgICAgICAgLy9s YXN0X3NpZ19jb2VmZl95X3ByZWZpeAorICAgICAgICAgNSwgICA1LCAgMTIsICAgNiwgICA2LCAg IDQsICAgNiwgIDE0LCAgIDUsICAxMiwgIDE0LCAgIDcsICAxMywgICA1LCAgMTMsICAyMSwKKyAg ICAgICAgMTQsICAyMCwgIDEyLCAgMzQsICAxMSwgICA0LCAgMTgsCisgICAgICAgIC8vc2JfY29k ZWRfZmxhZworICAgICAgICAyNSwgIDMwLCAgMjUsICA0NSwgIDE4LCAgMTIsICAyOSwKKyAgICAg ICAgLy9zaWdfY29lZmZfZmxhZworICAgICAgICAxNywgIDQxLCAgNDIsICAyOSwgIDI1LCAgNDks ICA0MywgIDM3LCAgMzMsICA1OCwgIDUxLCAgMzAsICAxOSwgIDM4LCAgMzgsICA0NiwKKyAgICAg ICAgMzQsICA1NCwgIDU0LCAgMzksICAgNiwgIDM5LCAgMzksICAzOSwgIDE5LCAgMzksICA1NCwg IDM5LCAgMTksICAzOSwgIDM5LCAgMzksCisgICAgICAgIDU2LCAgMzksICAzOSwgIDM5LCAgMTcs ICAzNCwgIDM1LCAgMjEsICA0MSwgIDU5LCAgNjAsICAzOCwgIDM1LCAgNDUsICA1MywgIDU0LAor ICAgICAgICA0NCwgIDM5LCAgMzksICAzOSwgIDM0LCAgMzgsICA2MiwgIDM5LCAgMjYsICAzOSwg IDM5LCAgMzksICA0MCwgIDM1LCAgNDQsCisgICAgICAgIC8vcGFyX2xldmVsX2ZsYWcKKyAgICAg ICAgMTgsICAxNywgIDMzLCAgMTgsICAyNiwgIDQyLCAgMjUsICAzMywgIDI2LCAgNDIsICAyNywg IDI1LCAgMzQsICA0MiwgIDQyLCAgMzUsCisgICAgICAgIDI2LCAgMjcsICA0MiwgIDIwLCAgMjAs ICAyNSwgIDI1LCAgMjYsICAxMSwgIDE5LCAgMjcsICAzMywgIDQyLCAgMzUsICAzNSwgIDQzLAor ICAgICAgICAgMywKKyAgICAgICAgLy9hYnNfbGV2ZWxfZ3R4X2ZsYWcKKyAgICAgICAgIDAsICAx NywgIDI2LCAgMTksICAzNSwgIDIxLCAgMjUsICAzNCwgIDIwLCAgMjgsICAyOSwgIDMzLCAgMjcs ICAyOCwgIDI5LCAgMjIsCisgICAgICAgIDM0LCAgMjgsICA0NCwgIDM3LCAgMzgsICAgMCwgIDI1 LCAgMTksICAyMCwgIDEzLCAgMTQsICA1NywgIDQ0LCAgMzAsICAzMCwgIDIzLAorICAgICAgICAx NywgICAwLCAgIDEsICAxNywgIDI1LCAgMTgsICAgMCwgICA5LCAgMjUsICAzMywgIDM0LCAgIDks ICAyNSwgIDE4LCAgMjYsICAyMCwKKyAgICAgICAgMjUsICAxOCwgIDE5LCAgMjcsICAyOSwgIDE3 LCAgIDksICAyNSwgIDEwLCAgMTgsICAgNCwgIDE3LCAgMzMsICAxOSwgIDIwLCAgMjksCisgICAg ICAgIDE4LCAgMTEsICAgNCwgIDI4LCAgIDIsICAxMCwgICAzLCAgIDMsCisgICAgICAgIC8vY29l ZmZfc2lnbl9mbGFnCisgICAgICAgICA1LCAgMTAsICA1MywgIDQzLCAgMjUsICA0NiwKKyAgICB9 LAorICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcKKyAgICAgICAgMzMsICA1MiwgIDQ2LCAg MjUsICA2MSwgIDU0LCAgMjUsICA2MSwgIDU0LAorICAgICAgICAvL2FsZl91c2VfYXBzX2ZsYWcK KyAgICAgICAgNDYsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jYl9pZGMKKyAgICAgICAgMjUsICAz NSwgIDM4LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3JfaWRjCisgICAgICAgIDI1LCAgMjgsICAz OCwKKyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4CisgICAgICAgIDExLCAgMjYsCisg ICAgICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQgc2FvX21lcmdlX3VwX2ZsYWcKKyAgICAg ICAgMiwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9t YQorICAgICAgICAyLAorICAgICAgICAvL3NwbGl0X2N1X2ZsYWcKKyAgICAgICAgMTgsICAyNywg IDE1LCAgMTgsICAyOCwgIDQ1LCAgMjYsICAgNywgIDIzLAorICAgICAgICAvL3NwbGl0X3F0X2Zs YWcKKyAgICAgICAgMjYsICAzNiwgIDM4LCAgMTgsICAzNCwgIDIxLAorICAgICAgICAvL210dF9z cGxpdF9jdV92ZXJ0aWNhbF9mbGFnCisgICAgICAgIDQzLCAgNDIsICAzNywgIDQyLCAgNDQsCisg ICAgICAgIC8vbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnCisgICAgICAgIDI4LCAgMjksICAyOCwg IDI5LAorICAgICAgICAvL25vbl9pbnRlcl9mbGFnCisgICAgICAgIDI1LCAgMjAsCisgICAgICAg IC8vY3Vfc2tpcF9mbGFnCisgICAgICAgIDU3LCAgNjAsICA0NiwKKyAgICAgICAgLy9wcmVkX21v ZGVfaWJjX2ZsYWcKKyAgICAgICAgIDAsICA0MywgIDQ1LAorICAgICAgICAvL3ByZWRfbW9kZV9m bGFnCisgICAgICAgIDQwLCAgMzUsCisgICAgICAgIC8vcHJlZF9tb2RlX3BsdF9mbGFnCisgICAg ICAgIDE3LAorICAgICAgICAvL2N1X2FjdF9lbmFibGVkX2ZsYWcKKyAgICAgICAgNDYsCisgICAg ICAgIC8vaW50cmFfYmRwY21fbHVtYV9mbGFnCisgICAgICAgIDE5LAorICAgICAgICAvL2ludHJh X2JkcGNtX2x1bWFfZGlyX2ZsYWcKKyAgICAgICAgMjEsCisgICAgICAgIC8vaW50cmFfbWlwX2Zs YWcKKyAgICAgICAgNTYsICA1NywgIDUwLCAgMjYsCisgICAgICAgIC8vaW50cmFfbHVtYV9yZWZf aWR4CisgICAgICAgIDI1LCAgNTksCisgICAgICAgIC8vaW50cmFfc3VicGFydGl0aW9uc19tb2Rl X2ZsYWcKKyAgICAgICAgMzMsCisgICAgICAgIC8vaW50cmFfc3VicGFydGl0aW9uc19zcGxpdF9m bGFnCisgICAgICAgIDQzLAorICAgICAgICAvL2ludHJhX2x1bWFfbXBtX2ZsYWcKKyAgICAgICAg NDQsCisgICAgICAgIC8vaW50cmFfbHVtYV9ub3RfcGxhbmFyX2ZsYWcKKyAgICAgICAgMTMsICAg NiwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFfZmxhZworICAgICAgICAgMCwKKyAgICAg ICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcKKyAgICAgICAgMjgsCisgICAgICAgIC8v Y2NsbV9tb2RlX2ZsYWcKKyAgICAgICAgMjYsCisgICAgICAgIC8vY2NsbV9tb2RlX2lkeAorICAg ICAgICAyNywKKyAgICAgICAgLy9pbnRyYV9jaHJvbWFfcHJlZF9tb2RlCisgICAgICAgIDI1LAor ICAgICAgICAvL2dlbmVyYWxfbWVyZ2VfZmxhZworICAgICAgICAgNiwKKyAgICAgICAgLy9pbnRl cl9wcmVkX2lkYworICAgICAgICAxNCwgIDEzLCAgIDUsICAgNCwgICAzLCAgNDAsCisgICAgICAg IC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgMTksICAxMywgICA2LAorICAgICAgICAvL2N1 X2FmZmluZV90eXBlX2ZsYWcKKyAgICAgICAgMzUsCisgICAgICAgIC8vc3ltX212ZF9mbGFnCisg ICAgICAgIDI4LAorICAgICAgICAvL3JlZl9pZHhfbDAgYW5kIHJlZl9pZHhfbDEKKyAgICAgICAg IDUsICAzNSwKKyAgICAgICAgLy9tdnBfbDBfZmxhZyBhbmQgbXZwX2wxX2ZsYWcKKyAgICAgICAg MzQsCisgICAgICAgIC8vYW12cl9mbGFnCisgICAgICAgIDU5LCAgNTAsCisgICAgICAgIC8vYW12 cl9wcmVjaXNpb25faWR4CisgICAgICAgIDM4LCAgMjYsICA2MCwKKyAgICAgICAgLy9iY3dfaWR4 CisgICAgICAgICA1LAorICAgICAgICAvL2N1X2NvZGVkX2ZsYWcKKyAgICAgICAgMTIsCisgICAg ICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgNDEsICA1NywKKyAgICAgICAgLy9jdV9zYnRfcXVh ZF9mbGFnCisgICAgICAgIDQyLAorICAgICAgICAvL2N1X3NidF9ob3Jpem9udGFsX2ZsYWcKKyAg ICAgICAgMzUsICA1MSwgIDI3LAorICAgICAgICAvL2N1X3NidF9wb3NfZmxhZworICAgICAgICAy OCwKKyAgICAgICAgLy9sZm5zdF9pZHgKKyAgICAgICAgNTIsICAzNywgIDI3LAorICAgICAgICAv L210c19pZHgKKyAgICAgICAgNDUsICAyNSwgIDI3LCAgIDAsCisgICAgICAgIC8vY29weV9hYm92 ZV9wYWxldHRlX2luZGljZXNfZmxhZworICAgICAgICA1MCwKKyAgICAgICAgLy9wYWxldHRlX3Ry YW5zcG9zZV9mbGFnCisgICAgICAgIDM1LAorICAgICAgICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAg ICAgNTgsICA0NSwgIDQ1LCAgMzAsICAzOCwgIDQ1LCAgMzgsICA0NiwKKyAgICAgICAgLy9yZWd1 bGFyX21lcmdlX2ZsYWcKKyAgICAgICAgNDYsICAxNSwKKyAgICAgICAgLy9tbXZkX21lcmdlX2Zs YWcKKyAgICAgICAgMjUsCisgICAgICAgIC8vbW12ZF9jYW5kX2ZsYWcKKyAgICAgICAgNDMsCisg ICAgICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAgICAgICAgNTksCisgICAgICAgIC8vY2lpcF9m bGFnCisgICAgICAgIDU3LAorICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2ZsYWcKKyAgICAgICAg MjUsICA1OCwgIDQ1LAorICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2lkeAorICAgICAgICAgNCwK KyAgICAgICAgLy9tZXJnZV9pZHgsIG1lcmdlX2dwbV9pZHgwLCBhbmQgbWVyZ2VfZ3BtX2lkeDEK KyAgICAgICAgMTgsCisgICAgICAgIC8vYWJzX212ZF9ncmVhdGVyMF9mbGFnCisgICAgICAgIDUx LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjFfZmxhZworICAgICAgICAzNiwKKyAgICAgICAg Ly90dV95X2NvZGVkX2ZsYWcKKyAgICAgICAgMTUsICAgNiwgICA1LCAgMTQsCisgICAgICAgIC8v dHVfY2JfY29kZWRfZmxhZworICAgICAgICAyNSwgIDM3LAorICAgICAgICAvL3R1X2NyX2NvZGVk X2ZsYWcKKyAgICAgICAgIDksICAzNiwgIDQ1LAorICAgICAgICAvL2N1X3FwX2RlbHRhX2Ficwor ICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAg ICAgICAgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRfaWR4CisgICAgICAgIENO VSwKKyAgICAgICAgLy90cmFuc2Zvcm1fc2tpcF9mbGFnCisgICAgICAgIDI1LCAgMTcsCisgICAg ICAgIC8vdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnCisgICAgICAgIDQyLCAgNDMsICA1MiwK KyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl94X3ByZWZpeAorICAgICAgICAgNiwgICA2LCAgMTIs ICAxNCwgICA2LCAgIDQsICAxNCwgICA3LCAgIDYsICAgNCwgIDI5LCAgIDcsICAgNiwgICA2LCAg MTIsICAyOCwKKyAgICAgICAgIDcsICAxMywgIDEzLCAgMzUsICAxOSwgICA1LCAgIDQsCisgICAg ICAgIC8vbGFzdF9zaWdfY29lZmZfeV9wcmVmaXgKKyAgICAgICAgIDUsICAgNSwgIDIwLCAgMTMs ICAxMywgIDE5LCAgMjEsICAgNiwgIDEyLCAgMTIsICAxNCwgIDE0LCAgIDUsICAgNCwgIDEyLCAg MTMsCisgICAgICAgICA3LCAgMTMsICAxMiwgIDQxLCAgMTEsICAgNSwgIDI3LAorICAgICAgICAv L3NiX2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICA0NSwgIDI1LCAgMTQsICAxOCwgIDM1LCAgNDUs CisgICAgICAgIC8vc2lnX2NvZWZmX2ZsYWcKKyAgICAgICAgMTcsICA0MSwgIDQ5LCAgMzYsICAg MSwgIDQ5LCAgNTAsICAzNywgIDQ4LCAgNTEsICA1OCwgIDQ1LCAgMjYsICA0NSwgIDUzLCAgNDYs CisgICAgICAgIDQ5LCAgNTQsICA2MSwgIDM5LCAgMzUsICAzOSwgIDM5LCAgMzksICAxOSwgIDU0 LCAgMzksICAzOSwgIDUwLCAgMzksICAzOSwgIDM5LAorICAgICAgICAgMCwgIDM5LCAgMzksICAz OSwgICA5LCAgNDksICA1MCwgIDM2LCAgNDgsICA1OSwgIDU5LCAgMzgsICAzNCwgIDQ1LCAgMzgs ICAzMSwKKyAgICAgICAgNTgsICAzOSwgIDM5LCAgMzksICAzNCwgIDM4LCAgNTQsICAzOSwgIDQx LCAgMzksICAzOSwgIDM5LCAgMjUsICA1MCwgIDM3LAorICAgICAgICAvL3Bhcl9sZXZlbF9mbGFn CisgICAgICAgIDMzLCAgNDAsICAyNSwgIDQxLCAgMjYsICA0MiwgIDI1LCAgMzMsICAyNiwgIDM0 LCAgMjcsICAyNSwgIDQxLCAgNDIsICA0MiwgIDM1LAorICAgICAgICAzMywgIDI3LCAgMzUsICA0 MiwgIDQzLCAgMzMsICAyNSwgIDI2LCAgMzQsICAxOSwgIDI3LCAgMzMsICA0MiwgIDQzLCAgMzUs ICA0MywKKyAgICAgICAgMTEsCisgICAgICAgIC8vYWJzX2xldmVsX2d0eF9mbGFnCisgICAgICAg ICAwLCAgIDAsICAzMywgIDM0LCAgMzUsICAyMSwgIDI1LCAgMzQsICAzNSwgIDI4LCAgMjksICA0 MCwgIDQyLCAgNDMsICAyOSwgIDMwLAorICAgICAgICA0OSwgIDM2LCAgMzcsICA0NSwgIDM4LCAg IDAsICA0MCwgIDM0LCAgNDMsICAzNiwgIDM3LCAgNTcsICA1MiwgIDQ1LCAgMzgsICA0NiwKKyAg ICAgICAgMjUsICAgMCwgICAwLCAgMTcsICAyNSwgIDI2LCAgIDAsICAgOSwgIDI1LCAgMzMsICAx OSwgICAwLCAgMjUsICAzMywgIDI2LCAgMjAsCisgICAgICAgIDI1LCAgMzMsICAyNywgIDM1LCAg MjIsICAyNSwgICAxLCAgMjUsICAzMywgIDI2LCAgMTIsICAyNSwgIDMzLCAgMjcsICAyOCwgIDM3 LAorICAgICAgICAxOSwgIDExLCAgIDQsICAgNiwgICAzLCAgIDQsICAgNCwgICA1LAorICAgICAg ICAvL2NvZWZmX3NpZ25fZmxhZworICAgICAgICAzNSwgIDI1LCAgNDYsICAyOCwgIDMzLCAgMzgs CisgICAgfSwKKyAgICAvL3NoaWZ0SWR4CisgICAgeworICAgICAgICAvL2FsZl9jdGJfZmxhZwor ICAgICAgICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsCisgICAg ICAgIC8vYWxmX3VzZV9hcHNfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9hbGZfY3RiX2Nj X2NiX2lkYworICAgICAgICAgNCwgICAxLCAgIDQsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jcl9p ZGMKKyAgICAgICAgIDQsICAgMSwgICA0LAorICAgICAgICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9p ZHgKKyAgICAgICAgIDAsICAgMCwKKyAgICAgICAgLy9zYW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBz YW9fbWVyZ2VfdXBfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVt YSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9tYQorICAgICAgICAgNCwKKyAgICAgICAgLy9zcGxpdF9j dV9mbGFnCisgICAgICAgIDEyLCAgMTMsICAgOCwgICA4LCAgMTMsICAxMiwgICA1LCAgIDksICAg OSwKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgICAwLCAgIDgsICAgOCwgIDEyLCAg MTIsICAgOCwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZworICAgICAgICAg OSwgICA4LCAgIDksICAgOCwgICA1LAorICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlfZmxh ZworICAgICAgICAxMiwgIDEzLCAgMTIsICAxMywKKyAgICAgICAgLy9ub25faW50ZXJfZmxhZwor ICAgICAgICAgMSwgICAwLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICAgNSwgICA0 LCAgIDgsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgICAxLCAgIDUsICAg OCwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICAgNSwgICAxLAorICAgICAgICAv L3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAgMSwKKyAgICAgICAgLy9jdV9hY3RfZW5hYmxl ZF9mbGFnCisgICAgICAgICAxLAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZmxhZworICAg ICAgICAgMSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnCisgICAgICAgICA0 LAorICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgICA5LCAgMTAsICAgOSwgICA2LAor ICAgICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAgNSwgICA4LAorICAgICAgICAv L2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgICA5LAorICAgICAgICAvL2lu dHJhX3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICAgMiwKKyAgICAgICAgLy9pbnRy YV9sdW1hX21wbV9mbGFnCisgICAgICAgICA2LAorICAgICAgICAvL2ludHJhX2x1bWFfbm90X3Bs YW5hcl9mbGFnCisgICAgICAgICAxLCAgIDUsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21h X2ZsYWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2Rpcl9mbGFn CisgICAgICAgICAwLAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisgICAgICAgICA0LAorICAg ICAgICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgIDksCisgICAgICAgIC8vaW50cmFfY2hyb21h X3ByZWRfbW9kZQorICAgICAgICAgNSwKKyAgICAgICAgLy9nZW5lcmFsX21lcmdlX2ZsYWcKKyAg ICAgICAgIDQsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAgICAgIDAsICAgMCwgICAx LCAgIDQsICAgNCwgICAwLAorICAgICAgICAvL2ludGVyX2FmZmluZV9mbGFnCisgICAgICAgICA0 LCAgIDAsICAgMCwKKyAgICAgICAgLy9jdV9hZmZpbmVfdHlwZV9mbGFnCisgICAgICAgICA0LAor ICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy9yZWZfaWR4X2ww IGFuZCByZWZfaWR4X2wxCisgICAgICAgICAwLCAgIDQsCisgICAgICAgIC8vbXZwX2wwX2ZsYWcg YW5kIG12cF9sMV9mbGFnCisgICAgICAgIDEyLAorICAgICAgICAvL2FtdnJfZmxhZworICAgICAg ICAgMCwgICAwLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9uX2lkeAorICAgICAgICAgNCwgICA1 LCAgMCwKKyAgICAgICAgLy9iY3dfaWR4CisgICAgICAgICAxLAorICAgICAgICAvL2N1X2NvZGVk X2ZsYWcKKyAgICAgICAgIDQsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgIDEsICAg NSwKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIDEwLAorICAgICAgICAvL2N1 X3NidF9ob3Jpem9udGFsX2ZsYWcKKyAgICAgICAgIDgsICAgNCwgICAxLAorICAgICAgICAvL2N1 X3NidF9wb3NfZmxhZworICAgICAgICAxMywKKyAgICAgICAgLy9sZm5zdF9pZHgKKyAgICAgICAg IDksICAgOSwgIDEwLAorICAgICAgICAvL210c19pZHgKKyAgICAgICAgIDgsICAgMCwgICA5LCAg IDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNfZmxhZworICAgICAgICAg OSwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAgICAgICA1LAorICAgICAg ICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgIDksICAgNiwgICA5LCAgMTAsICAgNSwgICAwLCAg IDksICAgNSwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAgICAgICAgIDUsICAgNSwK KyAgICAgICAgLy9tbXZkX21lcmdlX2ZsYWcKKyAgICAgICAgIDQsCisgICAgICAgIC8vbW12ZF9j YW5kX2ZsYWcKKyAgICAgICAgMTAsCisgICAgICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAgICAg ICAgIDAsCisgICAgICAgIC8vY2lpcF9mbGFnCisgICAgICAgICAxLAorICAgICAgICAvL21lcmdl X3N1YmJsb2NrX2ZsYWcKKyAgICAgICAgIDQsICAgNCwgICA0LAorICAgICAgICAvL21lcmdlX3N1 YmJsb2NrX2lkeAorICAgICAgICAgMCwKKyAgICAgICAgLy9tZXJnZV9pZHgsIG1lcmdlX2dwbV9p ZHgwLCBhbmQgbWVyZ2VfZ3BtX2lkeDEKKyAgICAgICAgIDQsCisgICAgICAgIC8vYWJzX212ZF9n cmVhdGVyMF9mbGFnCisgICAgICAgICA5LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjFfZmxh ZworICAgICAgICAgNSwKKyAgICAgICAgLy90dV95X2NvZGVkX2ZsYWcKKyAgICAgICAgIDUsICAg MSwgICA4LCAgIDksCisgICAgICAgIC8vdHVfY2JfY29kZWRfZmxhZworICAgICAgICAgNSwgICAw LAorICAgICAgICAvL3R1X2NyX2NvZGVkX2ZsYWcKKyAgICAgICAgIDIsICAgMSwgICAwLAorICAg ICAgICAvL2N1X3FwX2RlbHRhX2FicworICAgICAgICAgOCwgICA4LAorICAgICAgICAvL2N1X2No cm9tYV9xcF9vZmZzZXRfZmxhZworICAgICAgICAgOCwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBf b2Zmc2V0X2lkeAorICAgICAgICAgOCwKKyAgICAgICAgLy90cmFuc2Zvcm1fc2tpcF9mbGFnCisg ICAgICAgICAxLCAgIDEsCisgICAgICAgIC8vdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnCisg ICAgICAgICAxLCAgIDEsICAgMCwKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl94X3ByZWZpeAor ICAgICAgICAgOCwgICA1LCAgIDQsICAgNSwgICA0LCAgIDQsICAgNSwgICA0LCAgIDEsICAgMCwg ICA0LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAgICAgIDEsICAgMCwgICAwLCAgIDAs ICAgNSwgICA0LCAgIDQsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeV9wcmVmaXgKKyAgICAg ICAgIDgsICAgNSwgICA4LCAgIDUsICAgNSwgICA0LCAgIDUsICAgNSwgICA0LCAgIDAsICAgNSwg ICA0LCAgIDEsICAgMCwgICAwLCAgIDEsCisgICAgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDYs ICAgNSwgICA1LAorICAgICAgICAvL3NiX2NvZGVkX2ZsYWcKKyAgICAgICAgIDgsICAgNSwgICA1 LCAgIDgsICAgNSwgICA4LCAgIDgsCisgICAgICAgIC8vc2lnX2NvZWZmX2ZsYWcKKyAgICAgICAg MTIsICAgOSwgICA5LCAgMTAsICAgOSwgICA5LCAgIDksICAxMCwgICA4LCAgIDgsICAgOCwgIDEw LCAgIDksICAxMywgICA4LCAgIDgsCisgICAgICAgICA4LCAgIDgsICAgOCwgICA1LCAgIDgsICAg MCwgICAwLCAgIDAsICAgOCwgICA4LCAgIDgsICAgOCwgICA4LCAgIDAsICAgNCwgICA0LAorICAg ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEyLCAgMTIsICAgOSwgIDEzLCAgIDQsICAgNSwgICA4 LCAgIDksICAgOCwgIDEyLCAgMTIsICAgOCwKKyAgICAgICAgIDQsICAgMCwgICAwLCAgIDAsICAg OCwgICA4LCAgIDgsICAgOCwgICA0LCAgIDAsICAgMCwgICAwLCAgMTMsICAxMywgICA4LAorICAg ICAgICAvL3Bhcl9sZXZlbF9mbGFnCisgICAgICAgICA4LCAgIDksICAxMiwgIDEzLCAgMTMsICAx MywgIDEwLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLAorICAg ICAgICAxMCwgIDEzLCAgMTMsICAxMywgIDEzLCAgIDgsICAxMiwgIDEyLCAgMTIsICAxMywgIDEz LCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywKKyAgICAgICAgIDYsCisgICAgICAgIC8vYWJzX2xl dmVsX2d0eF9mbGFnCisgICAgICAgICA5LCAgIDUsICAxMCwgIDEzLCAgMTMsICAxMCwgICA5LCAg MTAsICAxMywgIDEzLCAgMTMsICAgOSwgIDEwLCAgMTAsICAxMCwgIDEzLAorICAgICAgICAgOCwg ICA5LCAgMTAsICAxMCwgIDEzLCAgIDgsICAgOCwgICA5LCAgMTIsICAxMiwgIDEwLCAgIDUsICAg OSwgICA5LCAgIDksICAxMywKKyAgICAgICAgIDEsICAgNSwgICA5LCAgIDksICAgOSwgICA2LCAg IDUsICAgOSwgIDEwLCAgMTAsICAgOSwgICA5LCAgIDksICAgOSwgICA5LCAgIDksCisgICAgICAg ICA2LCAgIDgsICAgOSwgICA5LCAgMTAsICAgMSwgICA1LCAgIDgsICAgOCwgICA5LCAgIDYsICAg NiwgICA5LCAgIDgsICAgOCwgICA5LAorICAgICAgICAgNCwgICAyLCAgIDEsICAgNiwgICAxLCAg IDEsICAgMSwgICAxLAorICAgICAgICAvL2NvZWZmX3NpZ25fZmxhZworICAgICAgICAgMSwgICA0 LCAgIDQsICAgNSwgICA4LCAgIDgsCisgICAgfQorfTsKKworI2RlZmluZSBNQVhfU1VCX0JMT0NL UyAxNgorI2RlZmluZSBNQVhfU1VCX0JMT0NLX1NJWkUgNAorI2RlZmluZSBNQVhfVEJfU0laRSA2 NAorCit0eXBlZGVmIHN0cnVjdCBSZXNpZHVhbENvZGluZyB7CisgICAgLy9jb21tb24gZm9yIHRz IGFuZCBub24gdHMKKyAgICBUcmFuc2Zvcm1CbG9jayAqdGI7CisKKyAgICBpbnQgbG9nMl9zYl93 OworICAgIGludCBsb2cyX3NiX2g7CisgICAgaW50IGxhc3Rfc3ViX2Jsb2NrOworICAgIGludCBo aXN0X3ZhbHVlOworICAgIGludCB1cGRhdGVfaGlzdDsKKyAgICBpbnQgbnVtX3NiX2NvZWZmOwor ICAgIGludCByZW1fYmluc19wYXNzMTsKKworICAgIGludCB3aWR0aF9pbl9zYnM7CisgICAgaW50 IGhlaWdodF9pbl9zYnM7CisgICAgaW50IG5iX3NiczsKKworICAgIGNvbnN0IHVpbnQ4X3QgKnNi X3NjYW5feF9vZmY7CisgICAgY29uc3QgdWludDhfdCAqc2Jfc2Nhbl95X29mZjsKKyAgICBjb25z dCB1aW50OF90ICpzY2FuX3hfb2ZmOworICAgIGNvbnN0IHVpbnQ4X3QgKnNjYW5feV9vZmY7CisK KyAgICB1aW50OF90IHNiX2NvZGVkX2ZsYWdbTUFYX1NVQl9CTE9DS1MgKiBNQVhfU1VCX0JMT0NL U107CisgICAgaW50IHNpZ19jb2VmZl9mbGFnW01BWF9UQl9TSVpFICogTUFYX1RCX1NJWkVdOwor ICAgIGludCBhYnNfbGV2ZWxfcGFzczFbTUFYX1RCX1NJWkUgKiBNQVhfVEJfU0laRV07ICAgICAg ICAgICAgICAvLy88IEFic0xldmVsUGFzczFbXVtdCisgICAgaW50IGFic19sZXZlbFtNQVhfVEJf U0laRSAqIE1BWF9UQl9TSVpFXTsKKworICAgIC8vZm9yIHRzIG9ubHkKKyAgICB1aW50OF90IGlu ZmVyX3NiX2NiZjsKKyAgICBpbnQgY29lZmZfc2lnbl9sZXZlbFtNQVhfVEJfU0laRSAqIE1BWF9U Ql9TSVpFXTsgICAgICAgICAgICAgLy8vPCBDb2VmZlNpZ25MZXZlbFtdW10KKworICAgIC8vZm9y IG5vbiB0cyBvbmx5CisgICAgaW50IHFzdGF0ZTsKKyAgICBpbnQgbGFzdF9zY2FuX3BvczsKKyAg ICBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94OworICAgIGludCBsYXN0X3NpZ25pZmljYW50 X2NvZWZmX3k7Cit9IFJlc2lkdWFsQ29kaW5nOworCitzdGF0aWMgaW50IGNhYmFjX3JlaW5pdChW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBza2lwX2J5dGVzKCZsYy0+ZXAtPmNj LCAwKSA9PSBOVUxMID8gQVZFUlJPUl9JTlZBTElEREFUQSA6IDA7Cit9CisKK3N0YXRpYyB2b2lk IGNhYmFjX2luaXRfc3RhdGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBWVkNT UFMgKnNwcyA9IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IFZWQ1NIICpzaCA9ICZsYy0+c2Mt PnNoOworICAgIGNvbnN0IGludCBxcCAgICA9IGF2X2NsaXBfdWludHAyKHNoLT5zbGljZV9xcF95 LCA2KTsKKyAgICBpbnQgaW5pdF90eXBlICAgPSAyIC0gc2gtPnNsaWNlX3R5cGU7CisKKyAgICBh dl9hc3NlcnQwKFZWQ19DT05URVhUUyA9PSBTWU5UQVhfRUxFTUVOVF9MQVNUKTsKKworICAgIGZm X3Z2Y19lcF9pbml0X3N0YXRfY29lZmYobGMtPmVwLCBzcHMtPmJpdF9kZXB0aCwgc3BzLT5wZXJz aXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcpOworCisgICAgaWYgKHNoLT5jYWJh Y19pbml0X2ZsYWcgJiYgc2gtPnNsaWNlX3R5cGUgIT0gVlZDX1NMSUNFX1RZUEVfSSkKKyAgICAg ICAgaW5pdF90eXBlIF49IDM7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFZWQ19DT05URVhU UzsgaSsrKSB7CisgICAgICAgIFZWQ0NhYmFjU3RhdGUgKnN0YXRlID0gJmxjLT5lcC0+Y2FiYWNf c3RhdGVbaV07CisgICAgICAgIGNvbnN0IGludCBpbml0X3ZhbHVlID0gaW5pdF92YWx1ZXNbaW5p dF90eXBlXVtpXTsKKyAgICAgICAgY29uc3QgaW50IHNoaWZ0X2lkeCAgPSBpbml0X3ZhbHVlc1sz XVtpXTsKKyAgICAgICAgY29uc3QgaW50IG0gPSAoaW5pdF92YWx1ZSA+PiAzKSAtIDQ7CisgICAg ICAgIGNvbnN0IGludCBuID0gKChpbml0X3ZhbHVlICYgNykgKiAxOCkgKyAxOworICAgICAgICBj b25zdCBpbnQgcHJlID0gYXZfY2xpcCgoKG0gKiAocXAgLSAxNikpID4+IDEpICsgbiwgMSwgMTI3 KTsKKworICAgICAgICBzdGF0ZS0+c3RhdGVbMF0gPSBwcmUgPDwgMzsKKyAgICAgICAgc3RhdGUt PnN0YXRlWzFdID0gcHJlIDw8IDc7CisgICAgICAgIHN0YXRlLT5zaGlmdFswXSA9IChzaGlmdF9p ZHggPj4gMiApICsgMjsKKyAgICAgICAgc3RhdGUtPnNoaWZ0WzFdID0gKHNoaWZ0X2lkeCAmIDMg KSArIDMgKyBzdGF0ZS0+c2hpZnRbMF07CisgICAgfQorfQorCitpbnQgZmZfdnZjX2NhYmFjX2lu aXQoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgY3R1X2lkeCwgY29uc3QgaW50 IHJ4LCBjb25zdCBpbnQgcnkpCit7CisgICAgaW50IHJldCA9IDA7CisgICAgY29uc3QgVlZDUFBT ICpwcHMgICAgICAgICAgICAgICA9IGxjLT5mYy0+cHMucHBzOworICAgIGNvbnN0IGludCBmaXJz dF9jdGJfaW5fc2xpY2UgICAgPSAhY3R1X2lkeDsKKyAgICBjb25zdCBpbnQgZmlyc3RfY3RiX2lu X3RpbGUgICAgID0gcnggPT0gcHBzLT5jdGJfdG9fY29sX2JkW3J4XSAmJiByeSA9PSBwcHMtPmN0 Yl90b19yb3dfYmRbcnldOworCisgICAgaWYgKGZpcnN0X2N0Yl9pbl9zbGljZXx8IGZpcnN0X2N0 Yl9pbl90aWxlKSB7CisgICAgICAgIGlmIChsYy0+c2MtPm5iX2VwcyA9PSAxICYmICFmaXJzdF9j dGJfaW5fc2xpY2UpCisgICAgICAgICAgICByZXQgPSBjYWJhY19yZWluaXQobGMpOworICAgICAg ICBpZiAocmV0ID09IDApCisgICAgICAgICAgICBjYWJhY19pbml0X3N0YXRlKGxjKTsKKyAgICB9 CisgICAgcmV0dXJuIHJldDsKK30KKworLy9maXhtZQorc3RhdGljIHZvaWQgdnZjX3JlZmlsbDIo Q0FCQUNDb250ZXh0KiBjKSB7CisgICAgaW50IGk7CisgICAgdW5zaWduZWQgeDsKKyNpZiAhSEFW RV9GQVNUX0NMWgorICAgIHggPSBjLT5sb3cgXiAoYy0+bG93IC0gMSk7CisgICAgaSA9IDcgLSBm Zl9oMjY0X25vcm1fc2hpZnRbeCA+PiAoQ0FCQUNfQklUUyAtIDEpXTsKKyNlbHNlCisgICAgaSA9 IGZmX2N0eihjLT5sb3cpIC0gQ0FCQUNfQklUUzsKKyNlbmRpZgorCisgICAgeCA9IC1DQUJBQ19N QVNLOworCisjaWYgQ0FCQUNfQklUUyA9PSAxNgorICAgIHggKz0gKGMtPmJ5dGVzdHJlYW1bMF0g PDwgOSkgKyAoYy0+Ynl0ZXN0cmVhbVsxXSA8PCAxKTsKKyNlbHNlCisgICAgeCArPSBjLT5ieXRl c3RyZWFtWzBdIDw8IDE7CisjZW5kaWYKKworICAgIGMtPmxvdyArPSB4IDw8IGk7CisjaWYgIVVO Q0hFQ0tFRF9CSVRTVFJFQU1fUkVBREVSCisgICAgaWYgKGMtPmJ5dGVzdHJlYW0gPCBjLT5ieXRl c3RyZWFtX2VuZCkKKyNlbmRpZgorICAgICAgICBjLT5ieXRlc3RyZWFtICs9IENBQkFDX0JJVFMg LyA4OworfQorCitzdGF0aWMgaW50IGlubGluZSB2dmNfZ2V0X2NhYmFjKENBQkFDQ29udGV4dCAq YywgVlZDQ2FiYWNTdGF0ZSogYmFzZSwgY29uc3QgaW50IGN0eCkKK3sKKyAgICBWVkNDYWJhY1N0 YXRlICpzID0gYmFzZSArIGN0eDsKKyAgICBjb25zdCBpbnQgcVJhbmdlSWR4ID0gYy0+cmFuZ2Ug Pj4gNTsKKyAgICBjb25zdCBpbnQgcFN0YXRlID0gcy0+c3RhdGVbMV0gKyAocy0+c3RhdGVbMF0g PDwgNCk7CisgICAgY29uc3QgaW50IHZhbE1wcyA9IHBTdGF0ZSA+PiAxNDsKKyAgICBjb25zdCBp bnQgUmFuZ2VMUFMgPSAocVJhbmdlSWR4ICogKCh2YWxNcHMgPyAzMjc2NyAtIHBTdGF0ZSA6IHBT dGF0ZSkgPj4gOSApID4+IDEpICsgNDsKKyAgICBpbnQgYml0LCBscHNfbWFzazsKKworICAgIGMt PnJhbmdlIC09IFJhbmdlTFBTOworICAgIGxwc19tYXNrID0gKChjLT5yYW5nZTw8KENBQkFDX0JJ VFMrMSkpIC0gYy0+bG93KT4+MzE7CisKKyAgICBjLT5sb3cgLT0gKGMtPnJhbmdlPDwoQ0FCQUNf QklUUysxKSkgJiBscHNfbWFzazsKKyAgICBjLT5yYW5nZSArPSAoUmFuZ2VMUFMgLSBjLT5yYW5n ZSkgJiBscHNfbWFzazsKKworICAgIGJpdCA9IHZhbE1wcyBeIChscHNfbWFzayAmIDEpOworCisg ICAgbHBzX21hc2sgPSBmZl9oMjY0X25vcm1fc2hpZnRbYy0+cmFuZ2VdOworICAgIGMtPnJhbmdl IDw8PSBscHNfbWFzazsKKyAgICBjLT5sb3cgIDw8PSBscHNfbWFzazsKKworICAgIGlmICghKGMt PmxvdyAmIENBQkFDX01BU0spKQorICAgICAgICB2dmNfcmVmaWxsMihjKTsKKyAgICBzLT5zdGF0 ZVswXSA9IHMtPnN0YXRlWzBdIC0gKHMtPnN0YXRlWzBdID4+IHMtPnNoaWZ0WzBdKSArICgxMDIz ICogYml0ID4+IHMtPnNoaWZ0WzBdKTsKKyAgICBzLT5zdGF0ZVsxXSA9IHMtPnN0YXRlWzFdIC0g KHMtPnN0YXRlWzFdID4+IHMtPnNoaWZ0WzFdKSArICgxNjM4MyAqIGJpdCA+PiBzLT5zaGlmdFsx XSk7CisgICAgcmV0dXJuIGJpdDsKK30KKworI2RlZmluZSBHRVRfQ0FCQUMoY3R4KSB2dmNfZ2V0 X2NhYmFjKCZsYy0+ZXAtPmNjLCBsYy0+ZXAtPmNhYmFjX3N0YXRlLCBjdHgpCisKK3N0YXRpYyBh dl9hbHdheXNfaW5saW5lIGludCB2dmNfZ2V0X2NhYmFjX2J5cGFzcyhDQUJBQ0NvbnRleHQgKmMp Cit7CisgICAgcmV0dXJuIGdldF9jYWJhY19ieXBhc3MoYyk7Cit9CisKKy8vOS4zLjMuNCBUcnVu Y2F0ZWQgYmluYXJ5IChUQikgYmluYXJpemF0aW9uIHByb2Nlc3MKK3N0YXRpYyBpbnQgdHJ1bmNh dGVkX2JpbmFyeV9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGNfbWF4KQor eworICAgIGNvbnN0IGludCBuID0gY19tYXggKyAxOworICAgIGNvbnN0IGludCBrID0gYXZfbG9n MihuKTsKKyAgICBjb25zdCBpbnQgdSA9ICgxIDw8IChrKzEpKSAtIG47CisgICAgaW50IHYgPSAw OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgazsgaSsrKQorICAgICAgICB2ID0gKHYgPDwgMSkg fCB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgaWYgKHYgPj0gdSkgewor ICAgICAgICB2ID0gKHYgPDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7 CisgICAgICAgIHYgLT0gdTsKKyAgICB9CisgICAgcmV0dXJuIHY7Cit9CisKKy8vIDkuMy4zLjYg TGltaXRlZCBrLXRoIG9yZGVyIEV4cC1Hb2xvbWIgYmluYXJpemF0aW9uIHByb2Nlc3MKK3N0YXRp YyBpbnQgbGltaXRlZF9rdGhfb3JkZXJfZWdrX2RlY29kZShDQUJBQ0NvbnRleHQgKmMsIGNvbnN0 IGludCBrLCBjb25zdCBpbnQgbWF4X3ByZV9leHRfbGVuLCBjb25zdCBpbnQgdHJ1bmNfc3VmZml4 X2xlbikKK3sKKyAgICBpbnQgcHJlX2V4dF9sZW4gPSAwOworICAgIGludCBlc2NhcGVfbGVuZ3Ro OworICAgIGludCB2YWwgPSAwOworICAgIHdoaWxlICgocHJlX2V4dF9sZW4gPCBtYXhfcHJlX2V4 dF9sZW4pICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKGMpKQorICAgICAgICBwcmVfZXh0X2xlbisr OworICAgIGlmIChwcmVfZXh0X2xlbiA9PSBtYXhfcHJlX2V4dF9sZW4pCisgICAgICAgIGVzY2Fw ZV9sZW5ndGggPSB0cnVuY19zdWZmaXhfbGVuOworICAgIGVsc2UKKyAgICAgICAgZXNjYXBlX2xl bmd0aCA9IHByZV9leHRfbGVuICsgazsKKyAgICB3aGlsZSAoZXNjYXBlX2xlbmd0aC0tID4gMCkg eworICAgICAgICB2YWwgPSAodmFsIDw8IDEpICsgdnZjX2dldF9jYWJhY19ieXBhc3MoYyk7Cisg ICAgfQorICAgIHZhbCArPSAoKDEgPDwgcHJlX2V4dF9sZW4pIC0gMSkgPDwgazsKKyAgICByZXR1 cm4gdmFsOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZQordm9pZCBnZXRfbGVmdF90b3Ao Y29uc3QgVlZDTG9jYWxDb250ZXh0ICpsYywgdWludDhfdCAqbGVmdCwgdWludDhfdCAqdG9wLAor ICAgIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkwLCBjb25zdCB1aW50OF90ICpsZWZ0X2N0eCwg Y29uc3QgdWludDhfdCAqdG9wX2N0eCkKK3sKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZj ICAgPSBsYy0+ZmM7CisgICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgICAgID0gZmMtPnBzLnNw czsKKyAgICBjb25zdCBpbnQgbWluX2NiX3dpZHRoICAgICAgPSBmYy0+cHMucHBzLT5taW5fY2Jf d2lkdGg7CisgICAgY29uc3QgaW50IHgwYiA9IGF2X21vZF91aW50cDIoeDAsIHNwcy0+Y3RiX2xv ZzJfc2l6ZV95KTsKKyAgICBjb25zdCBpbnQgeTBiID0gYXZfbW9kX3VpbnRwMih5MCwgc3BzLT5j dGJfbG9nMl9zaXplX3kpOworICAgIGNvbnN0IGludCB4X2NiID0geDAgPj4gc3BzLT5taW5fY2Jf bG9nMl9zaXplX3k7CisgICAgY29uc3QgaW50IHlfY2IgPSB5MCA+PiBzcHMtPm1pbl9jYl9sb2cy X3NpemVfeTsKKworICAgIGlmIChsYy0+Y3RiX2xlZnRfZmxhZyB8fCB4MGIpCisgICAgICAgICps ZWZ0ID0gU0FNUExFX0NUQihsZWZ0X2N0eCwgeF9jYiAtIDEsIHlfY2IpOworICAgIGlmIChsYy0+ Y3RiX3VwX2ZsYWcgfHwgeTBiKQorICAgICAgICAqdG9wID0gU0FNUExFX0NUQih0b3BfY3R4LCB4 X2NiLCB5X2NiIC0gMSk7Cit9CisKK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lCit1aW50OF90IGdl dF9pbmMoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgdWludDhfdCAqY3R4KQoreworICAgIHVp bnQ4X3QgbGVmdCA9IDAsIHRvcCA9IDA7CisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRv cCwgbGMtPmN1LT54MCwgbGMtPmN1LT55MCwgY3R4LCBjdHgpOworICAgIHJldHVybiBsZWZ0ICsg dG9wOworfQorCitpbnQgZmZfdnZjX3Nhb19tZXJnZV9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRl eHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoU0FPX01FUkdFX0ZMQUcpOworfQorCitp bnQgZmZfdnZjX3Nhb190eXBlX2lkeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAg ICBpZiAoIUdFVF9DQUJBQyhTQU9fVFlQRV9JRFgpKQorICAgICAgICByZXR1cm4gU0FPX05PVF9B UFBMSUVEOworCisgICAgaWYgKCF2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisg ICAgICAgIHJldHVybiBTQU9fQkFORDsKKyAgICByZXR1cm4gU0FPX0VER0U7Cit9CisKK2ludCBm Zl92dmNfc2FvX2JhbmRfcG9zaXRpb25fZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgaW50IGk7CisgICAgaW50IHZhbHVlID0gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+ Y2MpOworCisgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgdmFsdWUgPSAodmFs dWUgPDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgcmV0dXJu IHZhbHVlOworfQorCitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfYWJzX2RlY29kZShWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIGludCBpID0gMDsKKyAgICBpbnQgbGVuZ3RoID0gKDEgPDwgKEZG TUlOKGxjLT5mYy0+cHMuc3BzLT5iaXRfZGVwdGgsIDEwKSAtIDUpKSAtIDE7CisKKyAgICB3aGls ZSAoaSA8IGxlbmd0aCAmJiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisgICAg ICAgIGkrKzsKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19zYW9fb2Zmc2V0X3NpZ25f ZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIHZ2Y19nZXRfY2FiYWNf YnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19zYW9fZW9fY2xhc3NfZGVjb2Rl KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IHJldCA9IHZ2Y19nZXRfY2FiYWNfYnlw YXNzKCZsYy0+ZXAtPmNjKSA8PCAxOworICAgIHJldCAgICB8PSB2dmNfZ2V0X2NhYmFjX2J5cGFz cygmbGMtPmVwLT5jYyk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IGZmX3Z2Y19hbGZfY3Ri X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHJ4LCBjb25zdCBpbnQgcnksIGNv bnN0IGludCBjX2lkeCkKK3sKKyAgICBpbnQgaW5jID0gY19pZHggKiAzOworICAgIGNvbnN0IFZW Q0ZyYW1lQ29udGV4dCAqZmMgPSBsYy0+ZmM7CisgICAgaWYgKGxjLT5jdGJfbGVmdF9mbGFnKSB7 CisgICAgICAgIGNvbnN0IEFMRlBhcmFtcyAqbGVmdCA9ICZDVEIoZmMtPnRhYi5hbGYsIHJ4IC0g MSwgcnkpOworICAgICAgICBpbmMgKz0gbGVmdC0+Y3RiX2ZsYWdbY19pZHhdOworICAgIH0KKyAg ICBpZiAobGMtPmN0Yl91cF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFMRlBhcmFtcyAqYWJvdmUg PSAmQ1RCKGZjLT50YWIuYWxmLCByeCwgcnkgLSAxKTsKKyAgICAgICAgaW5jICs9IGFib3ZlLT5j dGJfZmxhZ1tjX2lkeF07CisgICAgfQorICAgIHJldHVybiBHRVRfQ0FCQUMoQUxGX0NUQl9GTEFH ICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19hbGZfdXNlX2Fwc19mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBTEZfVVNFX0FQU19GTEFHKTsKK30KKwor aW50IGZmX3Z2Y19hbGZfbHVtYV9wcmV2X2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICByZXR1cm4gdHJ1bmNhdGVkX2JpbmFyeV9kZWNvZGUobGMsIGxjLT5zYy0+c2guYWxm Lm51bV9hcHNfaWRzX2x1bWEgLSAxKTsKK30KKworaW50IGZmX3Z2Y19hbGZfbHVtYV9maXhlZF9m aWx0ZXJfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIHRydW5jYXRlZF9i aW5hcnlfZGVjb2RlKGxjLCAxNSk7Cit9CisKK2ludCBmZl92dmNfYWxmX2N0Yl9maWx0ZXJfYWx0 X2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgY19pZHgsIGNvbnN0IGludCBudW1f Y2hyb21hX2ZpbHRlcnMpCit7CisgICAgaW50IGkgPSAwOworICAgIGNvbnN0IGludCBsZW5ndGgg PSBudW1fY2hyb21hX2ZpbHRlcnMgLSAxOworCisgICAgd2hpbGUgKGkgPCBsZW5ndGggJiYgR0VU X0NBQkFDKEFMRl9DVEJfRklMVEVSX0FMVF9JRFggKyBjX2lkeCAtIDEpKQorICAgICAgICBpKys7 CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfYWxmX2N0Yl9jY19pZGMoVlZDTG9jYWxD b250ZXh0ICpsYywgY29uc3QgaW50IHJ4LCBjb25zdCBpbnQgcnksIGNvbnN0IGludCBpZHgsIGNv bnN0IGludCBjY19maWx0ZXJzX3NpZ25hbGxlZCkKK3sKKyAgICBpbnQgaW5jID0gIWlkeCA/IEFM Rl9DVEJfQ0NfQ0JfSURDIDogQUxGX0NUQl9DQ19DUl9JREM7CisgICAgaW50IGkgPSAwOworICAg IGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSBsYy0+ZmM7CisgICAgaWYgKGxjLT5jdGJfbGVm dF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFMRlBhcmFtcyAqbGVmdCA9ICZDVEIoZmMtPnRhYi5h bGYsIHJ4IC0gMSwgcnkpOworICAgICAgICBpbmMgKz0gbGVmdC0+Y3RiX2NjX2lkY1tpZHhdICE9 IDA7CisgICAgfQorICAgIGlmIChsYy0+Y3RiX3VwX2ZsYWcpIHsKKyAgICAgICAgY29uc3QgQUxG UGFyYW1zICphYm92ZSA9ICZDVEIoZmMtPnRhYi5hbGYsIHJ4LCByeSAtIDEpOworICAgICAgICBp bmMgKz0gYWJvdmUtPmN0Yl9jY19pZGNbaWR4XSAhPSAwOworICAgIH0KKworICAgIGlmICghR0VU X0NBQkFDKGluYykpCisgICAgICAgIHJldHVybiAwOworICAgIGkrKzsKKyAgICB3aGlsZSAoaSA8 IGNjX2ZpbHRlcnNfc2lnbmFsbGVkICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNj KSkKKyAgICAgICAgaSsrOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX3NwbGl0X2N1 X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25zdCBpbnQgeTAsCisg ICAgY29uc3QgaW50IGNiX3dpZHRoLCBjb25zdCBpbnQgY2JfaGVpZ2h0LCBjb25zdCBpbnQgaXNf Y2hyb21hLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpCit7CisgICAgY29uc3QgVlZDRnJhbWVD b250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBjb25zdCBWVkNQUFMgKnBwcyAgID0gZmMtPnBzLnBw czsKKyAgICBjb25zdCBpbnQgaXNfaW5zaWRlID0gKHgwICsgY2Jfd2lkdGggPD0gcHBzLT53aWR0 aCkgJiYgKHkwICsgY2JfaGVpZ2h0IDw9IHBwcy0+aGVpZ2h0KTsKKworICAgIGlmICgoYS0+YnR2 IHx8IGEtPmJ0aCB8fCBhLT50dHYgfHwgYS0+dHRoIHx8IGEtPnF0KSAmJiBpc19pbnNpZGUpCisg ICAgeworICAgICAgICB1aW50OF90IGluYyA9IDAsIGxlZnRfaGVpZ2h0ID0gY2JfaGVpZ2h0LCB0 b3Bfd2lkdGggPSBjYl93aWR0aDsKKworICAgICAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0X2hl aWdodCwgJnRvcF93aWR0aCwgeDAsIHkwLCBmYy0+dGFiLmNiX2hlaWdodFtpc19jaHJvbWFdLCBm Yy0+dGFiLmNiX3dpZHRoW2lzX2Nocm9tYV0pOworICAgICAgICBpbmMgKz0gbGVmdF9oZWlnaHQg PCBjYl9oZWlnaHQ7CisgICAgICAgIGluYyArPSB0b3Bfd2lkdGggICA8IGNiX3dpZHRoOworICAg ICAgICBpbmMgKz0gKGEtPmJ0diArIGEtPmJ0aCArIGEtPnR0diArIGEtPnR0aCArIDIgKiBhLT5x dCAtIDEpIC8gMiAqIDM7CisKKyAgICAgICAgcmV0dXJuIEdFVF9DQUJBQyhTUExJVF9DVV9GTEFH ICsgaW5jKTsKKworICAgIH0KKyAgICByZXR1cm4gIWlzX2luc2lkZTsKK30KKworc3RhdGljIGlu dCBzcGxpdF9xdF9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAs IGNvbnN0IGludCB5MCwgY29uc3QgaW50IGNoX3R5cGUsIGNvbnN0IGludCBjcXRfZGVwdGgpCit7 CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBpbnQgaW5jID0g MDsKKyAgICB1aW50OF90IGRlcHRoX2xlZnQgPSAwLCBkZXB0aF90b3AgPSAwOworCisgICAgZ2V0 X2xlZnRfdG9wKGxjLCAgJmRlcHRoX2xlZnQsICZkZXB0aF90b3AsIHgwLCB5MCwgZmMtPnRhYi5j cXRfZGVwdGhbY2hfdHlwZV0sIGZjLT50YWIuY3F0X2RlcHRoW2NoX3R5cGVdKTsKKyAgICBpbmMg Kz0gZGVwdGhfbGVmdCA+IGNxdF9kZXB0aDsKKyAgICBpbmMgKz0gZGVwdGhfdG9wICA+IGNxdF9k ZXB0aDsKKyAgICBpbmMgKz0gKGNxdF9kZXB0aCA+PSAyKSAqIDM7CisKKyAgICByZXR1cm4gR0VU X0NBQkFDKFNQTElUX1FUX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IG10dF9zcGxpdF9j dV92ZXJ0aWNhbF9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAs IGNvbnN0IGludCB5MCwKKyAgICBjb25zdCBpbnQgY2Jfd2lkdGgsIGNvbnN0IGludCBjYl9oZWln aHQsIGNvbnN0IGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQqIGEpCit7CisgICAg aWYgKChhLT5idGggfHwgYS0+dHRoKSAmJiAoYS0+YnR2IHx8IGEtPnR0dikpIHsKKyAgICAgICAg aW50IGluYzsKKyAgICAgICAgY29uc3QgaW50IHYgPSBhLT5idHYgKyBhLT50dHY7CisgICAgICAg IGNvbnN0IGludCBoID0gYS0+YnRoICsgYS0+dHRoOworICAgICAgICBpZiAodiA+IGgpCisgICAg ICAgICAgICBpbmMgPSA0OworICAgICAgICBlbHNlIGlmICh2IDwgaCkKKyAgICAgICAgICAgIGlu YyA9IDM7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0 ICpmYyAgID0gbGMtPmZjOworICAgICAgICAgICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgICAg ID0gZmMtPnBzLnNwczsKKyAgICAgICAgICAgIGNvbnN0IGludCBtaW5fY2Jfd2lkdGggICAgICA9 IGZjLT5wcy5wcHMtPm1pbl9jYl93aWR0aDsKKyAgICAgICAgICAgIGNvbnN0IGludCB4MGIgICAg ICAgICAgICAgICA9IGF2X21vZF91aW50cDIoeDAsIHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAg ICAgICAgICAgIGNvbnN0IGludCB5MGIgICAgICAgICAgICAgICA9IGF2X21vZF91aW50cDIoeTAs IHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAgICAgICAgICAgIGNvbnN0IGludCB4X2NiICAgICAg ICAgICAgICA9IHgwID4+IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgICAgICAgICAgY29u c3QgaW50IHlfY2IgICAgICAgICAgICAgID0geTAgPj4gc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7 CisgICAgICAgICAgICBjb25zdCBpbnQgYXZhaWxhYmxlX2EgICAgICAgPSBsYy0+Y3RiX3VwX2Zs YWcgfHwgeTBiOworICAgICAgICAgICAgY29uc3QgaW50IGF2YWlsYWJsZV9sICAgICAgID0gbGMt PmN0Yl9sZWZ0X2ZsYWcgfHwgeDBiOworICAgICAgICAgICAgY29uc3QgaW50IGRhICAgICAgICAg ICAgICAgID0gY2Jfd2lkdGggIC8gKGF2YWlsYWJsZV9hID8gU0FNUExFX0NUQihmYy0+dGFiLmNi X3dpZHRoW2NoX3R5cGVdLCB4X2NiLCB5X2NiIC0gMSkgOiAxKTsKKyAgICAgICAgICAgIGNvbnN0 IGludCBkbCAgICAgICAgICAgICAgICA9IGNiX2hlaWdodCAvIChhdmFpbGFibGVfbCA/IFNBTVBM RV9DVEIoZmMtPnRhYi5jYl9oZWlnaHRbY2hfdHlwZV0sIHhfY2IgLSAxLCB5X2NiKSA6IDEpOwor CisgICAgICAgICAgICBpZiAoZGEgPT0gZGwgfHwgIWF2YWlsYWJsZV9hIHx8ICFhdmFpbGFibGVf bCkKKyAgICAgICAgICAgICAgICBpbmMgPSAwOworICAgICAgICAgICAgZWxzZSBpZiAoZGEgPCBk bCkKKyAgICAgICAgICAgICAgICBpbmMgPSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg ICAgICAgIGluYyA9IDI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEdFVF9DQUJBQyhNVFRf U1BMSVRfQ1VfVkVSVElDQUxfRkxBRyArIGluYyk7CisgICAgfQorICAgIHJldHVybiAhKGEtPmJ0 aCB8fCBhLT50dGgpOworfQorCitzdGF0aWMgaW50IG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZ19k ZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IG10dF9zcGxpdF9jdV92ZXJ0aWNh bF9mbGFnLCBjb25zdCBpbnQgbXR0X2RlcHRoKQoreworICAgIGludCBpbmMgPSAoMiAqIG10dF9z cGxpdF9jdV92ZXJ0aWNhbF9mbGFnKSArICgobXR0X2RlcHRoIDw9IDEpID8gMSA6IDApOworICAg IHJldHVybiBHRVRfQ0FCQUMoTVRUX1NQTElUX0NVX0JJTkFSWV9GTEFHICsgaW5jKTsKK30KKwor VlZDU3BsaXRNb2RlIGZmX3Z2Y19zcGxpdF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0 IGludCB4MCwgY29uc3QgaW50IHkwLCBjb25zdCBpbnQgY2Jfd2lkdGgsIGNvbnN0IGludCBjYl9o ZWlnaHQsCisgICAgY29uc3QgaW50IGNxdF9kZXB0aCwgY29uc3QgaW50IG10dF9kZXB0aCwgY29u c3QgaW50IGNoX3R5cGUsIGNvbnN0IFZWQ0FsbG93ZWRTcGxpdCAqYSkKK3sKKyAgICBpbnQgYWxs b3dfbm9fcXQgPSBhLT5idHYgfHwgYS0+YnRoIHx8IGEtPnR0diB8fCBhLT50dGg7CisgICAgaW50 IHNwbGl0X3F0X2ZsYWc7CisgICAgaW50IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnOworICAg IGludCBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWc7CisgICAgY29uc3QgVlZDU3BsaXRNb2RlIG10 dF9zcGxpdF9tb2Rlc1tdID0geworICAgICAgICBTUExJVF9UVF9IT1IsIFNQTElUX0JUX0hPUiwg U1BMSVRfVFRfVkVSLCBTUExJVF9CVF9WRVIsCisgICAgfTsKKyAgICBpZiAoYWxsb3dfbm9fcXQg JiYgYS0+cXQpIHsKKyAgICAgICAgc3BsaXRfcXRfZmxhZyA9IHNwbGl0X3F0X2ZsYWdfZGVjb2Rl KGxjLCB4MCwgeTAsIGNoX3R5cGUsIGNxdF9kZXB0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg c3BsaXRfcXRfZmxhZyA9ICFhbGxvd19ub19xdCB8fCBhLT5xdDsKKyAgICB9CisgICAgaWYgKHNw bGl0X3F0X2ZsYWcpCisgICAgICAgIHJldHVybiBTUExJVF9RVDsKKyAgICBtdHRfc3BsaXRfY3Vf dmVydGljYWxfZmxhZyA9IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnX2RlY29kZShsYywgeDAs IHkwLCBjYl93aWR0aCwgY2JfaGVpZ2h0LCBjaF90eXBlLCBhKTsKKyAgICBpZiAoKGEtPmJ0diAm JiBhLT50dHYgJiYgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcpIHx8CisgICAgICAgIChhLT5i dGggJiYgYS0+dHRoICYmICFtdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZykpIHsKKyAgICAgICAg bXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnID0gbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnX2RlY29k ZShsYywgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcsIG10dF9kZXB0aCk7CisgICAgfSBlbHNl IHsKKyAgICAgICAgaWYgKCFhLT5idHYgJiYgIWEtPmJ0aCkKKyAgICAgICAgICAgIG10dF9zcGxp dF9jdV9iaW5hcnlfZmxhZyA9IDA7CisgICAgICAgIGVsc2UgaWYgKCFhLT50dHYgJiYgIWEtPnR0 aCkKKyAgICAgICAgICAgIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IDE7CisgICAgICAgIGVs c2UgaWYgKGEtPmJ0aCAmJiBhLT50dHYpCisgICAgICAgICAgICBtdHRfc3BsaXRfY3VfYmluYXJ5 X2ZsYWcgPSAxIC0gbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWc7CisgICAgICAgIGVsc2UKKyAg ICAgICAgICAgIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IG10dF9zcGxpdF9jdV92ZXJ0aWNh bF9mbGFnOworICAgIH0KKyAgICByZXR1cm4gbXR0X3NwbGl0X21vZGVzWyhtdHRfc3BsaXRfY3Vf dmVydGljYWxfZmxhZyA8PCAxKSArIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZ107Cit9CisKK2lu dCBmZl92dmNfbm9uX2ludGVyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgw LCBjb25zdCBpbnQgeTAsIGNvbnN0IGludCBjaF90eXBlKQoreworICAgIGNvbnN0IFZWQ0ZyYW1l Q29udGV4dCAqZmMgPSBsYy0+ZmM7CisgICAgdWludDhfdCBpbmMsIGxlZnQgPSAwLCB0b3AgPSAw OworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRvcCwgeDAsIHkwLCBmYy0+dGFiLmNw bVtjaF90eXBlXSwgZmMtPnRhYi5jcG1bY2hfdHlwZV0pOworICAgIGluYyA9IGxlZnQgfHwgdG9w OworICAgIHJldHVybiBHRVRfQ0FCQUMoTk9OX0lOVEVSX0ZMQUcgKyBpbmMpOworfQorCitpbnQg ZmZfdnZjX3ByZWRfbW9kZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpc19j aHJvbWEpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyAgICA9IGxjLT5mYzsKKyAg ICBjb25zdCBDb2RpbmdVbml0ICpjdSAgICAgICAgPSBsYy0+Y3U7CisgICAgdWludDhfdCBpbmMs IGxlZnQgPSAwLCB0b3AgPSAwOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRvcCwg Y3UtPngwLCBjdS0+eTAsIGZjLT50YWIuY3BtW2lzX2Nocm9tYV0sIGZjLT50YWIuY3BtW2lzX2No cm9tYV0pOworICAgIGluYyA9IGxlZnQgfHwgdG9wOworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJF RF9NT0RFX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX3ByZWRfbW9kZV9wbHRfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX1BM VF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9sdW1hX2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0xVTUFfRkxB Ryk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfYmRwY21fbHVtYV9kaXJfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fTFVNQV9ESVJf RkxBRyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfYmRwY21fY2hyb21hX2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0NIUk9NQV9G TEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0NIUk9N QV9ESVJfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfY3Vfc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmN1X3NraXBfZmxhZykKK3sKKyAgICBjb25zdCBpbnQgaW5j ID0gZ2V0X2luYyhsYywgY3Vfc2tpcF9mbGFnKTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKENVX1NL SVBfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfcHJlZF9tb2RlX2liY19mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpc19jaHJvbWEpCit7CisgICAgY29uc3QgVlZDRnJh bWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSAgICAgICAg PSBsYy0+Y3U7CisgICAgdWludDhfdCBsZWZ0X21vZGUgPSBNT0RFX0lOVEVSLCB0b3BfbW9kZSA9 IE1PREVfSU5URVI7CisgICAgaW50IGluYzsKKworICAgIGdldF9sZWZ0X3RvcChsYywgJmxlZnRf bW9kZSwgJnRvcF9tb2RlLCBjdS0+eDAsIGN1LT55MCwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSwg ZmMtPnRhYi5jcG1baXNfY2hyb21hXSk7CisgICAgaW5jID0gKGxlZnRfbW9kZSA9PSBNT0RFX0lC QykgKyAodG9wX21vZGUgPT0gTU9ERV9JQkMpOworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9N T0RFX0lCQ19GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9taXBfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjLCBjb25zdCB1aW50OF90ICppbnRyYV9taXBfZmxhZykKK3sKKyAgICBj b25zdCBpbnQgdyAgICAgPSBsYy0+Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0IGludCBoICAgICA9 IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGNvbnN0IGludCBpbmMgICA9ICAodyA+IGggKiAyIHx8 IGggPiB3ICogMikgPyAzIDogZ2V0X2luYyhsYywgaW50cmFfbWlwX2ZsYWcpOworICAgIHJldHVy biBHRVRfQ0FCQUMoSU5UUkFfTUlQX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX2ludHJh X21pcF90cmFuc3Bvc2VkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g dnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworfQorCitpbnQgZmZfdnZjX2ludHJh X21pcF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IHcgICAgID0g bGMtPmN1LT5jYl93aWR0aDsKKyAgICBjb25zdCBpbnQgaCAgICAgPSBsYy0+Y3UtPmNiX2hlaWdo dDsKKyAgICBjb25zdCBpbnQgY19tYXggPSAodyA9PSA0ICYmIGggPT0gNCkgPyAxNSA6CisgICAg ICAgICgodyA9PSA0IHx8IGggPT0gNCkgfHwgKHcgPT0gOCAmJiBoID09IDgpKSA/IDc6IDU7Cisg ICAgcmV0dXJuIHRydW5jYXRlZF9iaW5hcnlfZGVjb2RlKGxjLCBjX21heCk7Cit9CisKK2ludCBm Zl92dmNfaW50cmFfbHVtYV9yZWZfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50 IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgICBpZiAoIUdFVF9DQUJB QyhJTlRSQV9MVU1BX1JFRl9JRFggKyBpKSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0K KyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVf ZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFf U1VCUEFSVElUSU9OU19NT0RFX0ZMQUcpOworfQorCitlbnVtIElzcFR5cGUgZmZfdnZjX2lzcF9z cGxpdF90eXBlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpbnRyYV9zdWJwYXJ0aXRp b25zX21vZGVfZmxhZykKK3sKKyAgICBpZiAoIWludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFn KQorICAgICAgICByZXR1cm4gSVNQX05PX1NQTElUOworICAgIHJldHVybiAxICsgR0VUX0NBQkFD KElOVFJBX1NVQlBBUlRJVElPTlNfU1BMSVRfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFf bHVtYV9tcG1fZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FC QUMoSU5UUkFfTFVNQV9NUE1fRkxBRyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbHVtYV9ub3Rf cGxhbmFyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludHJhX3N1YnBhcnRp dGlvbnNfbW9kZV9mbGFnKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfTFVNQV9OT1Rf UExBTkFSX0ZMQUcgKyAhaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcpOworfQorCitpbnQg ZmZfdnZjX2ludHJhX2x1bWFfbXBtX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGlu dCBpOworICAgIGZvciAoaSA9IDA7IGkgPCA0ICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ ZXAtPmNjKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5nICovOworICAgIHJldHVybiBpOworfQor CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX3JlbWFpbmRlcihWVkNMb2NhbENvbnRleHQgKmxj KQoreworICAgIHJldHVybiB0cnVuY2F0ZWRfYmluYXJ5X2RlY29kZShsYywgNjApOworfQorCitp bnQgZmZfdnZjX2NjbG1fbW9kZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhDQ0xNX01PREVfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfY2NsbV9tb2Rl X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGlmICghR0VUX0NBQkFDKENDTE1fTU9E RV9JRFgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdnZjX2dldF9jYWJhY19ieXBh c3MoJmxjLT5lcC0+Y2MpICsgMTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9jaHJvbWFfcHJlZF9t b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoSU5UUkFfQ0hS T01BX1BSRURfTU9ERSkpCisgICAgICAgIHJldHVybiA0OworICAgIHJldHVybiAodnZjX2dldF9j YWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpIDw8IDEpIHwgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxj LT5lcC0+Y2MpOworfQorCitpbnQgZmZfdnZjX2dlbmVyYWxfbWVyZ2VfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoR0VORVJBTF9NRVJHRV9GTEFHKTsK K30KKworc3RhdGljIGludCBnZXRfaW50ZXJfZmxhZ19pbmMoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgaW50IHgwLCBjb25zdCBpbnQgeTApCit7CisgICAgdWludDhfdCBsZWZ0X21lcmdlID0g MCwgIHRvcF9tZXJnZSA9IDA7CisgICAgdWludDhfdCBsZWZ0X2FmZmluZSA9IDAsIHRvcF9hZmZp bmUgPSAwOworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSBsYy0+ZmM7CisKKyAgICBn ZXRfbGVmdF90b3AobGMsICZsZWZ0X21lcmdlLCAmdG9wX21lcmdlLCB4MCwgeTAsIGZjLT50YWIu bXNmLCBmYy0+dGFiLm1zZik7CisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdF9hZmZpbmUsICZ0 b3BfYWZmaW5lLCB4MCwgeTAsIGZjLT50YWIuaWFmLCBmYy0+dGFiLmlhZik7CisgICAgcmV0dXJu IChsZWZ0X21lcmdlIHx8IGxlZnRfYWZmaW5lKSArICh0b3BfbWVyZ2UgKyB0b3BfYWZmaW5lKTsK K30KKworaW50IGZmX3Z2Y19tZXJnZV9zdWJibG9ja19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMp Cit7CisgICAgY29uc3QgaW50IGluYyA9IGdldF9pbnRlcl9mbGFnX2luYyhsYywgbGMtPmN1LT54 MCwgbGMtPmN1LT55MCk7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhNRVJHRV9TVUJCTE9DS19GTEFH ICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19tZXJnZV9zdWJibG9ja19pZHgoVlZDTG9jYWxDb250 ZXh0ICpsYywgY29uc3QgaW50IG1heF9udW1fc3ViYmxvY2tfbWVyZ2VfY2FuZCkKK3sKKyAgICBp bnQgaTsKKyAgICBpZiAoIUdFVF9DQUJBQyhNRVJHRV9TVUJCTE9DS19JRFgpKQorICAgICAgICBy ZXR1cm4gMDsKKyAgICBmb3IgKGkgPSAxOyBpIDwgbWF4X251bV9zdWJibG9ja19tZXJnZV9jYW5k IC0gMSAmJiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAg Lyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19yZWd1bGFyX21l cmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGN1X3NraXBfZmxhZykKK3sK KyAgICBpbnQgaW5jID0gIWN1X3NraXBfZmxhZzsKKyAgICByZXR1cm4gR0VUX0NBQkFDKFJFR1VM QVJfTUVSR0VfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfbW12ZF9tZXJnZV9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhNTVZEX01FUkdFX0ZM QUcpOworfQorCitpbnQgZmZfdnZjX21tdmRfY2FuZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMp Cit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhNTVZEX0NBTkRfRkxBRyk7Cit9CisKK3N0YXRpYyBp bnQgbW12ZF9kaXN0YW5jZV9pZHhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAg aW50IGk7CisgICAgaWYgKCFHRVRfQ0FCQUMoTU1WRF9ESVNUQU5DRV9JRFgpKQorICAgICAgICBy ZXR1cm4gMDsKKyAgICBmb3IgKGkgPSAxOyBpIDwgNyAmJiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygm bGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsK K30KKworc3RhdGljIGludCBtbXZkX2RpcmVjdGlvbl9pZHhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgcmV0dXJuICh2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykg PDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK3ZvaWQgZmZf dnZjX21tdmRfb2Zmc2V0X2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxjLCBNdiAqbW12ZF9vZmZz ZXQsIGNvbnN0IGludCBwaF9tbXZkX2Z1bGxwZWxfb25seV9mbGFnKQoreworICAgIGNvbnN0IGlu dCBzaGlmdCA9IHBoX21tdmRfZnVsbHBlbF9vbmx5X2ZsYWcgPyA0IDogMjsKKyAgICBjb25zdCBp bnQgbW12ZF9kaXN0YW5jZSA9IDEgPDwgKG1tdmRfZGlzdGFuY2VfaWR4X2RlY29kZShsYykgKyBz aGlmdCk7CisgICAgY29uc3QgaW50IG1tdmRfZGlyZWN0aW9uX2lkeCA9IG1tdmRfZGlyZWN0aW9u X2lkeF9kZWNvZGUobGMpOworICAgIGNvbnN0IGludCBtbXZkX3NpZ25zW11bMl0gPSB7IHsxLCAw fSwgey0xLCAwfSwgezAsIDF9LCB7MCwgLTF9IH07CisgICAgbW12ZF9vZmZzZXQtPnggPSBtbXZk X2Rpc3RhbmNlICogbW12ZF9zaWduc1ttbXZkX2RpcmVjdGlvbl9pZHhdWzBdOworICAgIG1tdmRf b2Zmc2V0LT55ID0gbW12ZF9kaXN0YW5jZSAqIG1tdmRfc2lnbnNbbW12ZF9kaXJlY3Rpb25faWR4 XVsxXTsKK30KKworc3RhdGljIFByZWRNb2RlIGdldF9sdW1hX3ByZWRfbW9kZShWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgID0gbGMtPmZjOwor ICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ID0gbGMtPmN1OworICAgIFByZWRNb2RlIHByZWRfbW9k ZTsKKyAgICBpZiAoY3UtPnRyZWVfdHlwZSAhPSBEVUFMX1RSRUVfQ0hST01BKSB7CisgICAgICAg IHByZWRfbW9kZSA9IGN1LT5wcmVkX21vZGU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3Qg aW50IHhfY2IgICAgICAgICAgID0gY3UtPngwID4+IGZjLT5wcy5zcHMtPm1pbl9jYl9sb2cyX3Np emVfeTsKKyAgICAgICAgY29uc3QgaW50IHlfY2IgICAgICAgICAgID0gY3UtPnkwID4+IGZjLT5w cy5zcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKyAgICAgICAgY29uc3QgaW50IG1pbl9jYl93aWR0 aCAgID0gZmMtPnBzLnBwcy0+bWluX2NiX3dpZHRoOworICAgICAgICBwcmVkX21vZGUgPSBTQU1Q TEVfQ1RCKGZjLT50YWIuY3BtWzBdLCB4X2NiLCB5X2NiKTsKKyAgICB9CisgICAgcmV0dXJuIHBy ZWRfbW9kZTsKK30KKworaW50IGZmX3Z2Y19tZXJnZV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyA9IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IGlu dCBpc19pYmMgPSBnZXRfbHVtYV9wcmVkX21vZGUobGMpID09IE1PREVfSUJDOworICAgIGNvbnN0 IGludCBjX21heCA9IChpc19pYmMgPyBzcHMtPm1heF9udW1faWJjX21lcmdlX2NhbmQgOiBzcHMt Pm1heF9udW1fbWVyZ2VfY2FuZCkgLSAxOworICAgIGludCBpOworCisgICAgaWYgKCFHRVRfQ0FC QUMoTUVSR0VfSURYKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGkgPSAxOyBpIDwg Y19tYXggJiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBpKyspCisgICAgICAg IC8qIG5vdGhpbmcgKi87CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfbWVyZ2VfZ3Bt X3BhcnRpdGlvbl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaSA9IDA7CisK KyAgICBmb3IgKGludCBqID0gMDsgaiA8IDY7IGorKykKKyAgICAgICAgaSA9IChpIDw8IDEpIHwg dnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworCisgICAgcmV0dXJuIGk7Cit9CisK K2ludCBmZl92dmNfbWVyZ2VfZ3BtX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQg aWR4KQoreworICAgIGNvbnN0IGludCBjX21heCA9IGxjLT5mYy0+cHMuc3BzLT5tYXhfbnVtX2dw bV9tZXJnZV9jYW5kIC0gaWR4IC0gMTsKKyAgICBpbnQgaTsKKworICAgIGlmICghR0VUX0NBQkFD KE1FUkdFX0lEWCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yIChpID0gMTsgaSA8IGNf bWF4ICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsrKQorICAgICAgICAv KiBub3RoaW5nICovOworCisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfY2lpcF9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDSUlQX0ZMQUcp OworfQorCitQcmVkRmxhZyBmZl92dmNfcHJlZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNv bnN0IGludCBpc19iKQoreworICAgIGNvbnN0IGludCB3ID0gbGMtPmN1LT5jYl93aWR0aDsKKyAg ICBjb25zdCBpbnQgaCA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGlmICghaXNfYikKKyAgICAg ICAgcmV0dXJuICBQRl9MMDsKKyAgICBpZiAodyArIGggPiAxMikgeworICAgICAgICBjb25zdCBp bnQgbG9nMiA9IGF2X2xvZzIodykgKyBhdl9sb2cyKGgpOworICAgICAgICBjb25zdCBpbnQgaW5j ID0gNyAtICgoMSArIGxvZzIpPj4xKTsKKyAgICAgICAgaWYgKEdFVF9DQUJBQyhJTlRFUl9QUkVE X0lEQyArIGluYykpCisgICAgICAgICAgICByZXR1cm4gUEZfQkk7CisgICAgfQorICAgIHJldHVy biBQRl9MMCArIEdFVF9DQUJBQyhJTlRFUl9QUkVEX0lEQyArIDUpOworfQorCitpbnQgZmZfdnZj X2ludGVyX2FmZmluZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50 IGluYyA9IGdldF9pbnRlcl9mbGFnX2luYyhsYywgbGMtPmN1LT54MCwgbGMtPmN1LT55MCk7Cisg ICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRFUl9BRkZJTkVfRkxBRyArIGluYyk7Cit9CisKK2ludCBm Zl92dmNfY3VfYWZmaW5lX3R5cGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJl dHVybiBHRVRfQ0FCQUMoQ1VfQUZGSU5FX1RZUEVfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfc3lt X212ZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhT WU1fTVZEX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3JlZl9pZHhfbHgoVlZDTG9jYWxDb250ZXh0 ICpsYywgY29uc3QgdWludDhfdCBuYl9yZWZzKQoreworICAgIGNvbnN0IGludCBjX21heCA9IG5i X3JlZnMgLSAxOworICAgIGNvbnN0IGludCBtYXhfY3R4ID0gRkZNSU4oY19tYXgsIDIpOworICAg IGludCBpID0gMDsKKworICAgIHdoaWxlIChpIDwgbWF4X2N0eCAmJiBHRVRfQ0FCQUMoUkVGX0lE WF9MWCArIGkpKQorICAgICAgICBpKys7CisgICAgaWYgKGkgPT0gMikgeworICAgICAgICB3aGls ZSAoaSA8IGNfbWF4ICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAg ICAgICAgIGkrKzsKKyAgICB9CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfYWJzX212 ZF9ncmVhdGVyMF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9D QUJBQyhBQlNfTVZEX0dSRUFURVIwX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2Fic19tdmRfZ3Jl YXRlcjFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMo QUJTX01WRF9HUkVBVEVSMV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19hYnNfbXZkX21pbnVzMihW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBsaW1pdGVkX2t0aF9vcmRlcl9lZ2tf ZGVjb2RlKCZsYy0+ZXAtPmNjLCAxLCAxNSwgMTcpOworfQorCitpbnQgZmZfdnZjX212ZF9zaWdu X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gdnZjX2dldF9jYWJhY19i eXBhc3MoJmxjLT5lcC0+Y2MpOworfQorCitpbnQgZmZfdnZjX212cF9seF9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhNVlBfTFhfRkxBRyk7Cit9CisK K3N0YXRpYyBpbnQgYW12cl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpbnRl cl9hZmZpbmVfZmxhZykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKEFNVlJfRkxBRyArIGludGVy X2FmZmluZV9mbGFnKTsKK30KKworc3RhdGljIGludCBhbXZyX3ByZWNpc2lvbl9pZHgoVlZDTG9j YWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYywgY29uc3QgaW50IGNfbWF4KQoreworICAgIGlu dCBpID0gMDsKKyAgICBpZiAoIUdFVF9DQUJBQyhBTVZSX1BSRUNJU0lPTl9JRFggKyBpbmMpKQor ICAgICAgICByZXR1cm4gMDsKKyAgICBpKys7CisgICAgaWYgKGkgPCBjX21heCAmJiBHRVRfQ0FC QUMoQU1WUl9QUkVDSVNJT05fSURYICsgMSkpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsK K30KKworaW50IGZmX3Z2Y19hbXZyX3NoaWZ0KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGlu dCBpbnRlcl9hZmZpbmVfZmxhZywKKyAgICBjb25zdCBQcmVkTW9kZSBwcmVkX21vZGUsIGNvbnN0 IGludCBoYXNfYW12cl9mbGFnKQoreworICAgIGludCBhbXZyX3NoaWZ0ID0gMjsKKyAgICBpZiAo aGFzX2FtdnJfZmxhZykgeworICAgICAgICBpZiAoYW12cl9mbGFnKGxjLCBpbnRlcl9hZmZpbmVf ZmxhZykpIHsKKyAgICAgICAgICAgIGludCBpZHg7CisgICAgICAgICAgICBpZiAoaW50ZXJfYWZm aW5lX2ZsYWcpIHsKKyAgICAgICAgICAgICAgICBpZHggPSBhbXZyX3ByZWNpc2lvbl9pZHgobGMs IDIsIDEpOworICAgICAgICAgICAgICAgIGFtdnJfc2hpZnQgPSBpZHggKiA0OworICAgICAgICAg ICAgfSBlbHNlIGlmIChwcmVkX21vZGUgPT0gTU9ERV9JQkMpIHsKKyAgICAgICAgICAgICAgICBp ZHggPSBhbXZyX3ByZWNpc2lvbl9pZHgobGMsIDEsIDEpOworICAgICAgICAgICAgICAgIGFtdnJf c2hpZnQgPSA0ICsgaWR4ICogMjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgc3RhdGljIGNvbnN0IGludCBzaGlmdHNbXSA9IHszLCA0LCA2fTsKKyAgICAgICAgICAgICAg ICBpZHggPSBhbXZyX3ByZWNpc2lvbl9pZHgobGMsIDAsIDIpOworICAgICAgICAgICAgICAgIGFt dnJfc2hpZnQgPSBzaGlmdHNbaWR4XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K KyAgICByZXR1cm4gYW12cl9zaGlmdDsKK30KKworaW50IGZmX3Z2Y19iY3dfaWR4KFZWQ0xvY2Fs Q29udGV4dCAqbGMsIGNvbnN0IGludCBub19iYWNrd2FyZF9wcmVkX2ZsYWcpCit7CisgICAgY29u c3QgaW50IGNfbWF4ID0gbm9fYmFja3dhcmRfcHJlZF9mbGFnID8gNCA6IDI7CisgICAgaW50IGkg PSAxOworICAgIGlmICghR0VUX0NBQkFDKEJDV19JRFgpKQorICAgICAgICByZXR1cm4gMDsKKyAg ICB3aGlsZSAoaSA8IGNfbWF4ICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkK KyAgICAgICAgaSsrOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX3R1X2NiX2NvZGVk X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRVX0NC X0NPREVEX0ZMQUcgKyBsYy0+Y3UtPmJkcGNtX2ZsYWdbMV0pOworfQorCitpbnQgZmZfdnZjX3R1 X2NyX2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IHR1X2NiX2NvZGVkX2ZsYWcp Cit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhUVV9DUl9DT0RFRF9GTEFHICsgKGxjLT5jdS0+YmRw Y21fZmxhZ1sxXSA/IDIgOiB0dV9jYl9jb2RlZF9mbGFnKSk7Cit9CisKK2ludCBmZl92dmNfdHVf eV9jb2RlZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgQ29kaW5nVW5p dCAqY3UgPSBsYy0+Y3U7CisgICAgaW50IGluYzsKKyAgICBpZiAoY3UtPmJkcGNtX2ZsYWdbMF0p CisgICAgICAgIGluYyA9IDE7CisgICAgZWxzZSBpZiAoY3UtPmlzcF9zcGxpdF90eXBlID09IElT UF9OT19TUExJVCkKKyAgICAgICAgaW5jID0gMDsKKyAgICBlbHNlCisgICAgICAgIGluYyA9IDIg KyBsYy0+cGFyc2UucHJldl90dV9jYmZfeTsKKyAgICBsYy0+cGFyc2UucHJldl90dV9jYmZfeSA9 IEdFVF9DQUJBQyhUVV9ZX0NPREVEX0ZMQUcgKyBpbmMpOworICAgIHJldHVybiBsYy0+cGFyc2Uu cHJldl90dV9jYmZfeTsKK30KKworaW50IGZmX3Z2Y19jdV9xcF9kZWx0YV9hYnMoVlZDTG9jYWxD b250ZXh0ICpsYykKK3sKKyAgICBpbnQgdiwgaSwgazsKKyAgICBpZiAoIUdFVF9DQUJBQyhDVV9R UF9ERUxUQV9BQlMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIHByZWZpeFZhbAorICAg IGZvciAodiA9IDE7IHYgPCA1ICYmIEdFVF9DQUJBQyhDVV9RUF9ERUxUQV9BQlMgKyAxKTsgdisr KQorICAgICAgICAvKiBub3RoaW5nICovOworICAgIGlmICh2IDwgNSkKKyAgICAgICAgcmV0dXJu IHY7CisKKyAgICAvLyA5LjMuMy41IGstdGggb3JkZXIgRXhwLUdvbG9tYiBiaW5hcml6YXRpb24g cHJvY2VzcworICAgIC8vIHN1ZmZpeFZhbAorCisgICAgLy8gQ3VRcERlbHRhVmFsIHNoYWxsIGlu IHRoZSByYW5nZSBvZiDiiJIoIDMyICsgUXBCZE9mZnNldCAvIDIgKSB0byArKCAzMSArIFFwQmRP ZmZzZXQgLyAyICkKKyAgICAvLyBzbyBrID0gNiBzaG91bGQgZW5vdWdoCisgICAgZm9yIChrID0g MDsgayA8IDYgJiYgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOyBrKyspCisgICAg ICAgIC8qIG5vdGhpbmcgKi87CisgICAgaSA9ICgxIDw8IGspIC0gMTsKKyAgICB2ID0gMDsKKyAg ICB3aGlsZSAoay0tKQorICAgICAgICB2ID0gKHYgPDwgMSkgKyB2dmNfZ2V0X2NhYmFjX2J5cGFz cygmbGMtPmVwLT5jYyk7CisgICAgdiArPSBpOworCisgICAgcmV0dXJuIHYgKyA1OworfQorCitp bnQgZmZfdnZjX2N1X3FwX2RlbHRhX3NpZ25fZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQorewor ICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBm Zl92dmNfY3VfY2hyb21hX3FwX29mZnNldF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9DSFJPTUFfUVBfT0ZGU0VUX0ZMQUcpOworfQoraW50IGZm X3Z2Y19jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAg IGNvbnN0IGludCBjX21heCA9IGxjLT5mYy0+cHMucHBzLT5jaHJvbWFfcXBfb2Zmc2V0X2xpc3Rf bGVuX21pbnVzMTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY19tYXggJiYgR0VU X0NBQkFDKENVX0NIUk9NQV9RUF9PRkZTRVRfSURYKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5n ICovOworICAgIHJldHVybiBpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFz dF9zaWduaWZpY2FudF9jb2VmZl94eV9wcmVmaXgoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBj b25zdCBpbnQgbG9nMl90Yl9zaXplLCBjb25zdCBpbnQgbG9nMl96b190Yl9zaXplLCBjb25zdCBp bnQgY19pZHgsIGNvbnN0IGludCBjdHgpCit7CisgICAgaW50IGkgPSAwOworICAgIGludCBtYXgg PSAobG9nMl96b190Yl9zaXplIDw8IDEpIC0gMTsKKyAgICBpbnQgY3R4X29mZnNldCwgY3R4X3No aWZ0OworICAgIGlmICghbG9nMl90Yl9zaXplKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo IWNfaWR4KSB7CisgICAgICAgIGNvbnN0IGludCBvZmZzZXRfeVtdID0gezAsIDAsIDMsIDYsIDEw LCAxNX07CisgICAgICAgIGN0eF9vZmZzZXQgPSBvZmZzZXRfeVtsb2cyX3RiX3NpemUgLSAxXTsK KyAgICAgICAgY3R4X3NoaWZ0ICA9IChsb2cyX3RiX3NpemUgKyAxKSA+PiAyOworICAgIH0gZWxz ZSB7CisgICAgICAgIGNvbnN0IGludCBzaGlmdHNbXSA9IHswLCAwLCAwLCAxLCAyLCAyLCAyfTsK KyAgICAgICAgY3R4X29mZnNldCA9IDIwOworICAgICAgICBjdHhfc2hpZnQgID0gc2hpZnRzW2xv ZzJfdGJfc2l6ZV07CisgICAgfQorICAgIHdoaWxlIChpIDwgbWF4ICYmIEdFVF9DQUJBQyhjdHgg KyAoaSA+PiBjdHhfc2hpZnQpICsgY3R4X29mZnNldCkpCisgICAgICAgIGkrKzsKKyAgICByZXR1 cm4gaTsKK30KKworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRf Y29lZmZfeF9wcmVmaXhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50 IGxvZzJfdGJfd2lkdGgsIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBjb25zdCBpbnQgY19p ZHgpCit7CisgICAgcmV0dXJuIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeHlfcHJlZml4KGxjLCBs b2cyX3RiX3dpZHRoLCBsb2cyX3pvX3RiX3dpZHRoLCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWF9Q UkVGSVgpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWduaWZpY2Fu dF9jb2VmZl95X3ByZWZpeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBp bnQgbG9nMl90Yl9oZWlnaHQsIGNvbnN0IGludCBsb2cyX3pvX3RiX2hlaWdodCwgY29uc3QgaW50 IGNfaWR4KQoreworICAgIHJldHVybiBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3h5X3ByZWZpeChs YywgbG9nMl90Yl9oZWlnaHQsIGxvZzJfem9fdGJfaGVpZ2h0LCBjX2lkeCwgTEFTVF9TSUdfQ09F RkZfWV9QUkVGSVgpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWdf Y29lZmZfc3VmZml4X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBs YXN0X3NpZ25pZmljYW50X2NvZWZmX3lfcHJlZml4KQoreworICAgIGludCBpOworICAgIGNvbnN0 IGludCBsZW5ndGggPSAobGFzdF9zaWduaWZpY2FudF9jb2VmZl95X3ByZWZpeCA+PiAxKSAtIDE7 CisgICAgaW50IHZhbHVlID0gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworCisg ICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8 PCAxKSB8IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICByZXR1cm4gdmFs dWU7Cit9CisKK2ludCBmZl92dmNfdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMsIGNvbnN0IGludCB0dV9jYl9jb2RlZF9mbGFnLCBjb25zdCBpbnQgdHVfY3Jf Y29kZWRfZmxhZykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRVX0pPSU5UX0NCQ1JfUkVTSURV QUxfRkxBRyArIDIgKiB0dV9jYl9jb2RlZF9mbGFnICsgdHVfY3JfY29kZWRfZmxhZyAtIDEpOwor fQorCitpbnQgZmZfdnZjX3RyYW5zZm9ybV9za2lwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgaW50IGluYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRSQU5TRk9STV9TS0lQX0ZM QUcgKyBpbmMpOworfQorCisvLzkuMy40LjIuNyBEZXJpdmF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2 YXJpYWJsZXMgbG9jTnVtU2lnLCBsb2NTdW1BYnNQYXNzMQorc3RhdGljIGludCBnZXRfbG9jYWxf c3VtKGNvbnN0IGludCAqbGV2ZWwsIGNvbnN0IGludCB3LCBjb25zdCBpbnQgaCwKKyAgICBjb25z dCBpbnQgeGMsIGNvbnN0IGludCB5YywgY29uc3QgaW50IGhpc3RfdmFsdWUpCit7CisgICAgaW50 IGxvY19zdW0gPSAzICogaGlzdF92YWx1ZTsKKyAgICBsZXZlbCArPSB3ICogeWMgKyB4YzsKKyAg ICBpZiAoeGMgPCB3IC0gMSkgeworICAgICAgICBsb2Nfc3VtICs9IGxldmVsWzFdOworICAgICAg ICBpZiAoeGMgPCB3IC0gMikKKyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbMl0gLSBoaXN0 X3ZhbHVlOworICAgICAgICBpZiAoeWMgPCBoIC0gMSkKKyAgICAgICAgICAgIGxvY19zdW0gKz0g bGV2ZWxbdyArIDFdIC0gaGlzdF92YWx1ZTsKKyAgICB9CisgICAgaWYgKHljIDwgaCAtIDEpIHsK KyAgICAgICAgbG9jX3N1bSArPSBsZXZlbFt3XTsKKyAgICAgICAgaWYgKHljIDwgaCAtIDIpCisg ICAgICAgICAgICBsb2Nfc3VtICs9IGxldmVsW3cgPDwgMV0gLSBoaXN0X3ZhbHVlOworICAgIH0K KyAgICByZXR1cm4gbG9jX3N1bTsKK30KKworLy85LjMuNC4yLjcgRGVyaXZhdGlvbiBwcm9jZXNz IGZvciB0aGUgdmFyaWFibGVzIGxvY051bVNpZywgbG9jU3VtQWJzUGFzczEKK3N0YXRpYyBpbnQg Z2V0X2xvY2FsX3N1bV90cyhjb25zdCBpbnQgKmxldmVsLCBjb25zdCBpbnQgdywgY29uc3QgaW50 IGgsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQoreworICAgIGludCBsb2Nfc3VtID0gMDsK KyAgICBsZXZlbCArPSB3ICogeWMgKyB4YzsKKyAgICBpZiAoeGMgPiAwKQorICAgICAgICBsb2Nf c3VtICs9IGxldmVsWy0xXTsKKyAgICBpZiAoeWMgPiAwKQorICAgICAgICBsb2Nfc3VtICs9IGxl dmVsWy13XTsKKyAgICByZXR1cm4gbG9jX3N1bTsKK30KKworc3RhdGljIGludCBnZXRfZ3R4X2Zs YWdfaW5jKGNvbnN0IFJlc2lkdWFsQ29kaW5nKiByYywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQg eWMsIGNvbnN0IGludCBsYXN0KQoreworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiA9IHJj LT50YjsKKyAgICBpbnQgaW5jOworICAgIGlmIChsYXN0KSB7CisgICAgICAgIGNvbnN0IGludCBp bmNzW10gPSB7MCwgMjEsIDIxfTsKKyAgICAgICAgaW5jID0gIGluY3NbdGItPmNfaWR4XTsKKyAg ICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgZCA9IHhjICsgeWM7CisgICAgICAgIGNvbnN0 IGludCBsb2NhbF9zdW1fc2lnID0gZ2V0X2xvY2FsX3N1bShyYy0+c2lnX2NvZWZmX2ZsYWcsCisg ICAgICAgICAgICAgICAgdGItPnRiX3dpZHRoLHRiLT50Yl9oZWlnaHQsIHhjLCB5YywgcmMtPmhp c3RfdmFsdWUpOworICAgICAgICBjb25zdCBpbnQgbG9jX3N1bV9hYnNfcGFzczEgPSBnZXRfbG9j YWxfc3VtKHJjLT5hYnNfbGV2ZWxfcGFzczEsCisgICAgICAgICAgICAgICAgdGItPnRiX3dpZHRo LCB0Yi0+dGJfaGVpZ2h0LCB4YywgeWMsIHJjLT5oaXN0X3ZhbHVlKTsKKyAgICAgICAgY29uc3Qg aW50IG9mZnNldCA9IEZGTUlOKGxvY19zdW1fYWJzX3Bhc3MxIC0gbG9jYWxfc3VtX3NpZywgNCk7 CisKKyAgICAgICAgaWYgKCF0Yi0+Y19pZHgpCisgICAgICAgICAgICBpbmMgPSAgMSArIG9mZnNl dCArICghZCA/IDE1IDogKGQgPCAzID8gMTAgOiAoZCA8IDEwID8gNSA6IDApKSk7CisgICAgICAg IGVsc2UKKyAgICAgICAgICAgIGluYyA9IDIyICsgb2Zmc2V0ICsgKCFkID8gNSA6IDApOworICAg IH0KKyAgICByZXR1cm4gaW5jOworfQorCitzdGF0aWMgaW50IGFic19sZXZlbF9ndHhfZmxhZ19k ZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sKKyAgICByZXR1cm4g R0VUX0NBQkFDKEFCU19MRVZFTF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgcGFy X2xldmVsX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpbmMpCit7 CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQQVJfTEVWRUxfRkxBRyArIGluYyk7Cit9CisKK3N0YXRp YyBpbnQgcGFyX2xldmVsX2ZsYWdfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgY29uc3QgaW50IGluYyA9IDMyOworICAgIHJldHVybiBHRVRfQ0FCQUMoUEFSX0xFVkVMX0ZM QUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IHNiX2NvZGVkX2ZsYWdfZGVjb2RlKFZWQ0xvY2Fs Q29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKnNiX2NvZGVkX2ZsYWcsCisgICAgY29uc3QgUmVz aWR1YWxDb2RpbmcgKnJjLCBjb25zdCBpbnQgeHMsIGNvbnN0IGludCB5cykKK3sKKyAgICBjb25z dCBWVkNTSCAqc2ggICAgICAgICAgPSAmbGMtPnNjLT5zaDsKKyAgICBjb25zdCBUcmFuc2Zvcm1C bG9jayAqdGIgPSByYy0+dGI7CisgICAgY29uc3QgaW50IHcgPSByYy0+d2lkdGhfaW5fc2JzOwor ICAgIGNvbnN0IGludCBoID0gcmMtPmhlaWdodF9pbl9zYnM7CisgICAgaW50IGluYzsKKworICAg IGlmICh0Yi0+dHMgJiYgIXNoLT50c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxhZykgewor ICAgICAgICBjb25zdCBpbnQgbGVmdCA9IHhzID4gMCA/IHNiX2NvZGVkX2ZsYWdbLTFdIDogMDsK KyAgICAgICAgY29uc3QgaW50IGFib3ZlID0geXMgPiAwID8gc2JfY29kZWRfZmxhZ1std10gOiAw OworICAgICAgICBpbmMgPSBsZWZ0ICsgYWJvdmUgKyA0OworICAgIH0gZWxzZSB7CisgICAgICAg IGNvbnN0IGludCByaWdodCAgPSAoeHMgPCB3IC0gMSkgPyBzYl9jb2RlZF9mbGFnWzFdIDogMDsK KyAgICAgICAgY29uc3QgaW50IGJvdHRvbSA9ICh5cyA8IGggLSAxKSA/IHNiX2NvZGVkX2ZsYWdb d10gOiAwOworICAgICAgICBpbmMgPSAocmlnaHQgfCBib3R0b20pICsgKHRiLT5jX2lkeCA/IDIg OiAwKTsKKyAgICB9CisgICAgcmV0dXJuIEdFVF9DQUJBQyhTQl9DT0RFRF9GTEFHICsgaW5jKTsK K30KKworc3RhdGljIGludCBzaWdfY29lZmZfZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICps YywgY29uc3QgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykK K3sKKyAgICBjb25zdCBWVkNTSCAqc2ggICAgICAgICAgPSAmbGMtPnNjLT5zaDsKKyAgICBjb25z dCBUcmFuc2Zvcm1CbG9jayAqdGIgPSByYy0+dGI7CisgICAgaW50IGluYzsKKworICAgIGlmICh0 Yi0+dHMgJiYgIXNoLT50c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxhZykgeworICAgICAg ICBjb25zdCBpbnQgbG9jYWxfbnVtX3NpZyA9IGdldF9sb2NhbF9zdW1fdHMocmMtPnNpZ19jb2Vm Zl9mbGFnLCB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5Yyk7CisgICAgICAgIGlu YyA9IDYwICsgbG9jYWxfbnVtX3NpZzsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQg ZCA9IHhjICsgeWM7CisgICAgICAgIGNvbnN0IGludCBsb2Nfc3VtX2Fic19wYXNzMSA9IGdldF9s b2NhbF9zdW0ocmMtPmFic19sZXZlbF9wYXNzMSwKKyAgICAgICAgICAgICAgICB0Yi0+dGJfd2lk dGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5YywgMCk7CisKKyAgICAgICAgaWYgKCF0Yi0+Y19pZHgp IHsKKyAgICAgICAgICAgIGluYyA9IDEyICogRkZNQVgoMCwgcmMtPnFzdGF0ZSAtIDEpICsgRkZN SU4oKGxvY19zdW1fYWJzX3Bhc3MxICsgMSkgPj4gMSwgMykgKyAoKGQgPCAyKSA/IDggOiAoZCA8 IDUgPyA0IDogMCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5jID0gMzYgKyA4 ICogRkZNQVgoMCwgcmMtPnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1fYWJzX3Bhc3MxICsg MSkgPj4gMSwgMykgKyAoZCA8IDIgPyA0IDogMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhTSUdfQ09FRkZfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgYWJz X2dldF9yaWNlX3BhcmFtKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IFJlc2lkdWFsQ29kaW5n KiByYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCB4YywgY29uc3Qg aW50IHljLCBjb25zdCBpbnQgYmFzZV9sZXZlbCkKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyA9 IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrKiB0YiA9IHJjLT50YjsK KyAgICBjb25zdCBpbnQgcmljZV9wYXJhbXNbXSA9IHsKKyAgICAgICAgMCwgMCwgMCwgMCwgMCwg MCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgMiwKKyAgICAgICAgMiwgMiwgMiwgMiwgMiwg MiwgMiwgMiwgMiwgMiwgMiwgMiwgMywgMywgMywgMywKKyAgICB9OworICAgIGludCBsb2Nfc3Vt X2FiczsKKyAgICBpbnQgc2hpZnRfdmFsOworCisgICAgbG9jX3N1bV9hYnMgPSBnZXRfbG9jYWxf c3VtKHJjLT5hYnNfbGV2ZWwsIHRiLT50Yl93aWR0aCwgdGItPnRiX2hlaWdodCwgeGMsCisgICAg ICAgICAgICB5YywgcmMtPmhpc3RfdmFsdWUpOworCisgICAgaWYgKCFzcHMtPnJyY19yaWNlX2V4 dGVuc2lvbl9mbGFnKSB7CisgICAgICAgIHNoaWZ0X3ZhbCA9IDA7CisgICAgfSBlbHNlIHsKKyAg ICAgICAgc2hpZnRfdmFsID0gKGF2X2xvZzIoRkZNQVgoRkZNSU4obG9jX3N1bV9hYnMsIDIwNDgp LCA4KSkgLSAzKSAmIH4xOworICAgIH0KKworICAgIGxvY19zdW1fYWJzID0gYXZfY2xpcF91aW50 cDIoKGxvY19zdW1fYWJzID4+IHNoaWZ0X3ZhbCkgLSBiYXNlX2xldmVsICogNSwgNSk7CisKKyAg ICByZXR1cm4gcmljZV9wYXJhbXNbbG9jX3N1bV9hYnNdICsgc2hpZnRfdmFsOworfQorCitzdGF0 aWMgaW50IGFic19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGNfcmljZV9w YXJhbSkKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyA9IGxjLT5mYy0+cHMuc3BzOworICAgIGNv bnN0IGludCBNQVhfQklOID0gNjsKKyAgICBpbnQgcHJlZml4ID0gMDsKKyAgICBpbnQgc3VmZml4 ID0gMDsKKyAgICBpbnQgaTsKKworICAgIHdoaWxlIChwcmVmaXggPCBNQVhfQklOICYmIHZ2Y19n ZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgcHJlZml4Kys7CisgICAgaWYg KHByZWZpeCA8IE1BWF9CSU4pIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNfcmljZV9wYXJh bTsgaSsrKSB7CisgICAgICAgICAgICBzdWZmaXggPSAoc3VmZml4IDw8IDEpIHwgdnZjX2dldF9j YWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg ICAgc3VmZml4ID0gbGltaXRlZF9rdGhfb3JkZXJfZWdrX2RlY29kZSgmbGMtPmVwLT5jYywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3JpY2VfcGFyYW0g KyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2IC0g c3BzLT5sb2cyX3RyYW5zZm9ybV9yYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzcHMtPmxvZzJfdHJhbnNmb3JtX3JhbmdlKTsKKyAgICB9CisgICAg cmV0dXJuIHN1ZmZpeCArIChwcmVmaXggPDwgY19yaWNlX3BhcmFtKTsKK30KKworc3RhdGljIGlu dCBhYnNfcmVtYWluZGVyX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBSZXNpZHVh bENvZGluZyogcmMsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQoreworICAgIGNvbnN0IFZW Q1NQUyAqc3BzID0gbGMtPmZjLT5wcy5zcHM7CisgICAgY29uc3QgVlZDU0ggKnNoID0gJmxjLT5z Yy0+c2g7CisgICAgY29uc3QgaW50IGJhc2VfbGV2ZWxbXVsyXVsyXSA9IHsKKyAgICAgICAgeyB7 NCwgNH0sIHs0LCA0fSB9LAorICAgICAgICB7IHszLCAyfSwgezIsIDF9IH0KKyAgICB9OworICAg IGNvbnN0IGludCBjX3JpY2VfcGFyYW0gPSBhYnNfZ2V0X3JpY2VfcGFyYW0obGMsIHJjLCB4Yywg eWMsCisgICAgICAgIGJhc2VfbGV2ZWxbc3BzLT5ycmNfcmljZV9leHRlbnNpb25fZmxhZ11bc3Bz LT5iaXRfZGVwdGggPiAxMl1bc2gtPnNsaWNlX3R5cGUgPT0gVlZDX1NMSUNFX1RZUEVfSV0pOwor ICAgIGNvbnN0IGludCByZW0gPSBhYnNfZGVjb2RlKGxjLCBjX3JpY2VfcGFyYW0pOworICAgIHJl dHVybiByZW07Cit9CisKK3N0YXRpYyBpbnQgYWJzX3JlbWFpbmRlcl90c19kZWNvZGUoVlZDTG9j YWxDb250ZXh0ICpsYywgY29uc3QgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNv bnN0IGludCB5YykKK3sKKyAgICBjb25zdCBWVkNTSCogc2ggPSAmbGMtPnNjLT5zaDsKKyAgICBj b25zdCBpbnQgY19yaWNlX3BhcmFtID0gc2gtPnRzX3Jlc2lkdWFsX2NvZGluZ19yaWNlX2lkeF9t aW51czEgKyAxOworICAgIGNvbnN0IGludCByZW0gPSBhYnNfZGVjb2RlKGxjLCBjX3JpY2VfcGFy YW0pOworICAgIHJldHVybiByZW07Cit9CisKK3N0YXRpYyBpbnQgY29lZmZfc2lnbl9mbGFnX2Rl Y29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5 cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKKy8vOS4zLjQuMi4xMCBEZXJpdmF0aW9uIHByb2Nlc3Mg b2YgY3R4SW5jIGZvciB0aGUgc3ludGF4IGVsZW1lbnQgY29lZmZfc2lnbl9mbGFnIGZvciB0cmFu c2Zvcm0gc2tpcCBtb2RlCitzdGF0aWMgaW50IGNvZWZmX3NpZ25fZmxhZ190c19kZWNvZGUoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgQ29kaW5nVW5pdCAqY3UsIGNvbnN0IFJlc2lkdWFsQ29k aW5nICpyYywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMpCit7CisgICAgY29uc3QgVHJhbnNm b3JtQmxvY2sgKnRiICAgID0gcmMtPnRiOworICAgIGNvbnN0IGludCB3ICAgICAgICAgICAgICAg ICA9IHRiLT50Yl93aWR0aDsKKyAgICBjb25zdCBpbnQgKmxldmVsICAgICAgICAgICAgPSByYy0+ Y29lZmZfc2lnbl9sZXZlbCArIHljICogdyArIHhjOworICAgIGNvbnN0IGludCBsZWZ0X3NpZ24g ICAgICAgICA9ICh4YyA9PSAwKSA/IDAgOiBsZXZlbFstMV07CisgICAgY29uc3QgaW50IGFib3Zl X3NpZ24gICAgICAgID0gKHljID09IDApID8gMCA6IGxldmVsWy13XTsKKyAgICBjb25zdCBpbnQg YmRwY21fZmxhZyAgICAgICAgPSBjdS0+YmRwY21fZmxhZ1t0Yi0+Y19pZHhdOworICAgIGludCBp bmM7CisKKyAgICBpZiAobGVmdF9zaWduID09IC1hYm92ZV9zaWduKQorICAgICAgICBpbmMgPSBi ZHBjbV9mbGFnID09IDAgPyAwIDogMzsKKyAgICBlbHNlIGlmIChsZWZ0X3NpZ24gPj0gMCAmJiBh Ym92ZV9zaWduID49IDApCisgICAgICAgIGluYyA9IGJkcGNtX2ZsYWcgPT0gMCA/IDEgOiA0Owor ICAgIGVsc2UKKyAgICAgICAgaW5jID0gYmRwY21fZmxhZyA9PSAwID8gMiA6IDU7CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhDT0VGRl9TSUdOX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IGFi c19sZXZlbF9ndDFfZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgQ29k aW5nVW5pdCAqY3UsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywgY29uc3QgaW50IHhjLCBjb25z dCBpbnQgeWMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sgKnRiID0gcmMtPnRiOworICAg IGNvbnN0IGludCAqc2lnX2NvZWZmX2ZsYWcgPSByYy0+c2lnX2NvZWZmX2ZsYWcgKyB5YyAqIHRi LT50Yl93aWR0aCArIHhjOworICAgIGludCBpbmM7CisKKyAgICBpZiAoY3UtPmJkcGNtX2ZsYWdb dGItPmNfaWR4XSkgeworICAgICAgICBpbmMgPSA2NzsKKyAgICB9IGVsc2UgeworICAgICAgICBj b25zdCBpbnQgbCA9IHhjID4gMCA/IHNpZ19jb2VmZl9mbGFnWy0xXSA6IDA7CisgICAgICAgIGNv bnN0IGludCBhID0geWMgPiAwID8gc2lnX2NvZWZmX2ZsYWdbLXRiLT50Yl93aWR0aF0gOiAwOwor ICAgICAgICBpbmMgPSA2NCArIGEgKyBsOworICAgIH0KKyAgICByZXR1cm4gR0VUX0NBQkFDKEFC U19MRVZFTF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX2xldmVsX2d0eF9m bGFnX3RzX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaikKK3sKKyAgICBj b25zdCBpbnQgaW5jID0gNjcgKyBqOworICAgIHJldHVybiBHRVRfQ0FCQUMoQUJTX0xFVkVMX0dU WF9GTEFHICsgaW5jKTsKK30KKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgcXN0YXRlX3RyYW5zbGF0 ZV90YWJsZVtdWzJdID0geworICAgIHsgMCwgMiB9LCB7IDIsIDAgfSwgeyAxLCAzIH0sIHsgMywg MSB9Cit9OworCitzdGF0aWMgaW50IGRlY19hYnNfbGV2ZWxfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywKKyAgICBjb25zdCBpbnQgeGMsIGNvbnN0 IGludCB5YywgaW50ICphYnNfbGV2ZWwpCit7CisgICAgY29uc3QgaW50IGNfcmljZV9wYXJhbSAg PSBhYnNfZ2V0X3JpY2VfcGFyYW0obGMsIHJjLCB4YywgeWMsIDApOworICAgIGNvbnN0IGludCBk ZWNfYWJzX2xldmVsID0gIGFic19kZWNvZGUobGMsIGNfcmljZV9wYXJhbSk7CisgICAgY29uc3Qg aW50IHplcm9fcG9zICAgICAgPSAocmMtPnFzdGF0ZSA8IDIgPyAxIDogMikgPDwgY19yaWNlX3Bh cmFtOworCisgICAgKmFic19sZXZlbCA9IDA7CisgICAgaWYgKGRlY19hYnNfbGV2ZWwgIT0gemVy b19wb3MpIHsKKyAgICAgICAgKmFic19sZXZlbCA9IGRlY19hYnNfbGV2ZWw7CisgICAgICAgIGlm IChkZWNfYWJzX2xldmVsIDwgemVyb19wb3MpCisgICAgICAgICAgICAqYWJzX2xldmVsICs9IDE7 CisgICAgfQorICAgIHJldHVybiBkZWNfYWJzX2xldmVsOworfQorCitzdGF0aWMgdm9pZCBlcF91 cGRhdGVfaGlzdChFbnRyeVBvaW50ICplcCwgUmVzaWR1YWxDb2RpbmcgKnJjLAorICAgIGNvbnN0 IGludCByZW1haW5kZXIsIGNvbnN0IGludCBhZGRpbikKK3sKKyAgICBpbnQgKnN0YXQgPSBlcC0+ c3RhdF9jb2VmZiArIHJjLT50Yi0+Y19pZHg7CisgICAgaWYgKHJjLT51cGRhdGVfaGlzdCAmJiBy ZW1haW5kZXIgPiAwKSB7CisgICAgICAgICpzdGF0ID0gKCpzdGF0ICsgYXZfbG9nMihyZW1haW5k ZXIpICsgYWRkaW4pID4+IDE7CisgICAgICAgIHJjLT51cGRhdGVfaGlzdCA9IDA7CisgICAgfQor fQorCitzdGF0aWMgdm9pZCBpbml0X3Jlc2lkdWFsX2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxj LCBSZXNpZHVhbENvZGluZyAqcmMsCisgICAgICAgIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRo LCBjb25zdCBpbnQgbG9nMl96b190Yl9oZWlnaHQsCisgICAgICAgIFRyYW5zZm9ybUJsb2NrICp0 YikKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyAgID0gbGMtPmZjLT5wcy5zcHM7CisgICAgaW50 IGxvZzJfc2JfdyA9IChGRk1JTihsb2cyX3pvX3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodCAp IDwgMiA/IDEgOiAyICk7CisgICAgaW50IGxvZzJfc2JfaCA9IGxvZzJfc2JfdzsKKworICAgIGlm ICggbG9nMl96b190Yl93aWR0aCArIGxvZzJfem9fdGJfaGVpZ2h0ID4gMyApIHsKKyAgICAgICAg aWYgKCBsb2cyX3pvX3RiX3dpZHRoIDwgMiApIHsKKyAgICAgICAgICAgIGxvZzJfc2JfdyA9IGxv ZzJfem9fdGJfd2lkdGg7CisgICAgICAgICAgICBsb2cyX3NiX2ggPSA0IC0gbG9nMl9zYl93Owor ICAgICAgICB9IGVsc2UgaWYgKCBsb2cyX3pvX3RiX2hlaWdodCA8IDIgKSB7CisgICAgICAgICAg ICBsb2cyX3NiX2ggPSBsb2cyX3pvX3RiX2hlaWdodDsKKyAgICAgICAgICAgIGxvZzJfc2JfdyA9 IDQgLSBsb2cyX3NiX2g7CisgICAgICAgIH0KKyAgICB9CisgICAgcmMtPmxvZzJfc2JfdyA9IGxv ZzJfc2JfdzsKKyAgICByYy0+bG9nMl9zYl9oID0gbG9nMl9zYl9oOworICAgIHJjLT5udW1fc2Jf Y29lZmYgICA9IDEgPDwgKGxvZzJfc2JfdyArIGxvZzJfc2JfaCk7CisgICAgcmMtPmxhc3Rfc3Vi X2Jsb2NrID0gKCAxIDw8ICggbG9nMl96b190Yl93aWR0aCArIGxvZzJfem9fdGJfaGVpZ2h0IC0g KGxvZzJfc2JfdyArIGxvZzJfc2JfaCkpKSAtIDE7CisgICAgcmMtPmhpc3RfdmFsdWUgICAgID0g c3BzLT5wZXJzaXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcgPyAoMSA8PCBsYy0+ ZXAtPnN0YXRfY29lZmZbdGItPmNfaWR4XSkgOiAwOworICAgIHJjLT51cGRhdGVfaGlzdCAgICA9 IHNwcy0+cGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnID8gMSA6IDA7Cisg ICAgcmMtPnJlbV9iaW5zX3Bhc3MxID0gKCggMSA8PCAoIGxvZzJfem9fdGJfd2lkdGggKyBsb2cy X3pvX3RiX2hlaWdodCkpICogNyApID4+IDI7CisKKworICAgIHJjLT5zYl9zY2FuX3hfb2ZmID0g ZmZfdnZjX2RpYWdfc2Nhbl94W2xvZzJfem9fdGJfd2lkdGggLSBsb2cyX3NiX3ddW2xvZzJfem9f dGJfaGVpZ2h0IC0gbG9nMl9zYl9oXTsKKyAgICByYy0+c2Jfc2Nhbl95X29mZiA9IGZmX3Z2Y19k aWFnX3NjYW5feVtsb2cyX3pvX3RiX3dpZHRoIC0gbG9nMl9zYl93XVtsb2cyX3pvX3RiX2hlaWdo dCAtIGxvZzJfc2JfaF07CisKKyAgICByYy0+c2Nhbl94X29mZiA9IGZmX3Z2Y19kaWFnX3NjYW5f eFtsb2cyX3NiX3ddW2xvZzJfc2JfaF07CisgICAgcmMtPnNjYW5feV9vZmYgPSBmZl92dmNfZGlh Z19zY2FuX3lbbG9nMl9zYl93XVtsb2cyX3NiX2hdOworCisgICAgcmMtPmluZmVyX3NiX2NiZiA9 IDE7CisKKyAgICByYy0+d2lkdGhfaW5fc2JzICA9ICgxIDw8IChsb2cyX3pvX3RiX3dpZHRoIC0g bG9nMl9zYl93KSk7CisgICAgcmMtPmhlaWdodF9pbl9zYnMgPSAoMSA8PCAobG9nMl96b190Yl9o ZWlnaHQgLSBsb2cyX3NiX2gpKTsKKyAgICByYy0+bmJfc2JzICAgICAgICA9IHJjLT53aWR0aF9p bl9zYnMgKiByYy0+aGVpZ2h0X2luX3NiczsKKworICAgIHJjLT5sYXN0X3NjYW5fcG9zID0gcmMt Pm51bV9zYl9jb2VmZjsKKyAgICByYy0+cXN0YXRlICAgICAgICA9IDA7CisKKyAgICByYy0+dGIg PSB0YjsKK30KKworc3RhdGljIGludCByZXNpZHVhbF90c19jb2Rpbmdfc3ViYmxvY2soVlZDTG9j YWxDb250ZXh0ICpsYywgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgaSkKK3sKKyAgICBj b25zdCBDb2RpbmdVbml0ICpjdSAgICA9IGxjLT5jdTsKKyAgICBUcmFuc2Zvcm1CbG9jayAqdGIg ICAgICA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQgYmRwY21fZmxhZyAgICA9IGN1LT5iZHBjbV9m bGFnW3RiLT5jX2lkeF07CisgICAgY29uc3QgaW50IHhzICAgICAgICAgICAgPSByYy0+c2Jfc2Nh bl94X29mZltpXTsKKyAgICBjb25zdCBpbnQgeXMgICAgICAgICAgICA9IHJjLT5zYl9zY2FuX3lf b2ZmW2ldOworICAgIHVpbnQ4X3QgKnNiX2NvZGVkX2ZsYWcgID0gcmMtPnNiX2NvZGVkX2ZsYWcg KyB5cyAqIHJjLT53aWR0aF9pbl9zYnMgKyB4czsKKyAgICBpbnQgaW5mZXJfc2Jfc2lnX2NvZWZm X2ZsYWcgPSAxOworICAgIGludCBsYXN0X3NjYW5fcG9zX3Bhc3MxID0gLTEsIGxhc3Rfc2Nhbl9w b3NfcGFzczIgPSAtMSwgbjsKKyAgICBpbnQgYWJzX2xldmVsX2d0eF9mbGFnW01BWF9TVUJfQkxP Q0tfU0laRSAqIE1BWF9TVUJfQkxPQ0tfU0laRV07CisgICAgaW50IGFic19sZXZlbF9wYXNzMltN QVhfU1VCX0JMT0NLX1NJWkUgKiBNQVhfU1VCX0JMT0NLX1NJWkVdOyAgICAgICAvLy88IEFic0xl dmVsUGFzczIKKworICAgIGlmIChpICE9IHJjLT5sYXN0X3N1Yl9ibG9jayB8fCAhcmMtPmluZmVy X3NiX2NiZikKKyAgICAgICAgKnNiX2NvZGVkX2ZsYWcgPSBzYl9jb2RlZF9mbGFnX2RlY29kZShs Yywgc2JfY29kZWRfZmxhZywgcmMsIHhzLCB5cyk7CisgICAgZWxzZQorICAgICAgICAqc2JfY29k ZWRfZmxhZyA9IDE7CisgICAgaWYgKCpzYl9jb2RlZF9mbGFnICYmIGkgPCByYy0+bGFzdF9zdWJf YmxvY2spCisgICAgICAgIHJjLT5pbmZlcl9zYl9jYmYgPSAwOworCisgICAgLy9maXJzdCBzY2Fu IHBhc3MKKyAgICBmb3IgKG4gPSAwOyBuIDwgcmMtPm51bV9zYl9jb2VmZiAmJiByYy0+cmVtX2Jp bnNfcGFzczEgPj0gNDsgbisrKSB7CisgICAgICAgIGNvbnN0IGludCB4YyAgPSAoeHMgPDwgcmMt PmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICA9 ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAgICBjb25z dCBpbnQgb2ZmID0geWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKyAgICAgICAgaW50ICpzaWdfY29l ZmZfZmxhZyAgID0gcmMtPnNpZ19jb2VmZl9mbGFnICsgb2ZmOworICAgICAgICBpbnQgKmFic19s ZXZlbF9wYXNzMSAgPSByYy0+YWJzX2xldmVsX3Bhc3MxICsgb2ZmOworICAgICAgICBpbnQgKmNv ZWZmX3NpZ25fbGV2ZWwgPSByYy0+Y29lZmZfc2lnbl9sZXZlbCArIG9mZjsKKyAgICAgICAgaW50 IHBhcl9sZXZlbF9mbGFnICAgID0gMDsKKworICAgICAgICBhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl0g PSAwOworICAgICAgICBsYXN0X3NjYW5fcG9zX3Bhc3MxID0gbjsKKyAgICAgICAgaWYgKCpzYl9j b2RlZF9mbGFnICYmIChuICE9IHJjLT5udW1fc2JfY29lZmYgLSAxIHx8ICFpbmZlcl9zYl9zaWdf Y29lZmZfZmxhZykpIHsKKyAgICAgICAgICAgICpzaWdfY29lZmZfZmxhZyA9IHNpZ19jb2VmZl9m bGFnX2RlY29kZShsYywgcmMsIHhjLCB5Yyk7CisgICAgICAgICAgICByYy0+cmVtX2JpbnNfcGFz czEtLTsKKyAgICAgICAgICAgIGlmICgqc2lnX2NvZWZmX2ZsYWcpCisgICAgICAgICAgICAgICAg aW5mZXJfc2Jfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgKnNpZ19jb2VmZl9mbGFnID0gKG4gPT0gcmMtPm51bV9zYl9jb2VmZiAtIDEpICYmIGluZmVy X3NiX3NpZ19jb2VmZl9mbGFnICYmICpzYl9jb2RlZF9mbGFnOworICAgICAgICB9CisgICAgICAg ICpjb2VmZl9zaWduX2xldmVsID0gMDsKKyAgICAgICAgaWYgKCpzaWdfY29lZmZfZmxhZykgewor ICAgICAgICAgICAgKmNvZWZmX3NpZ25fbGV2ZWwgPSAxIC0gMiAqIGNvZWZmX3NpZ25fZmxhZ190 c19kZWNvZGUobGMsIGN1LCByYywgeGMsIHljKTsKKyAgICAgICAgICAgIGFic19sZXZlbF9ndHhf ZmxhZ1tuXSA9IGFic19sZXZlbF9ndDFfZmxhZ190c19kZWNvZGUobGMsIGN1LCByYywgeGMsIHlj KTsKKyAgICAgICAgICAgIHJjLT5yZW1fYmluc19wYXNzMSAtPSAyOworICAgICAgICAgICAgaWYg KGFic19sZXZlbF9ndHhfZmxhZ1tuXSkgeworICAgICAgICAgICAgICAgIHBhcl9sZXZlbF9mbGFn ID0gcGFyX2xldmVsX2ZsYWdfdHNfZGVjb2RlKGxjKTsKKyAgICAgICAgICAgICAgICByYy0+cmVt X2JpbnNfcGFzczEtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqYWJzX2xl dmVsX3Bhc3MxID0gKnNpZ19jb2VmZl9mbGFnICsgcGFyX2xldmVsX2ZsYWcgKyBhYnNfbGV2ZWxf Z3R4X2ZsYWdbbl07CisgICAgfQorCisgICAgLy9ncmVhdGVyIHRoYW4geCBzY2FuIHBhc3MKKyAg ICBmb3IgKG4gPSAwOyBuIDwgcmMtPm51bV9zYl9jb2VmZiAmJiByYy0+cmVtX2JpbnNfcGFzczEg Pj0gNDsgbisrKSB7CisgICAgICAgIGNvbnN0IGludCB4YyAgPSAoeHMgPDwgcmMtPmxvZzJfc2Jf dykgKyByYy0+c2Nhbl94X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IHljICA9ICh5cyA8PCBy Yy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgb2Zm ID0geWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKworICAgICAgICBhYnNfbGV2ZWxfcGFzczJbbl0g PSByYy0+YWJzX2xldmVsX3Bhc3MxW29mZl07CisgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwg NSAmJiBhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl07IGorKykgeworICAgICAgICAgICAgYWJzX2xldmVs X2d0eF9mbGFnW25dID0gYWJzX2xldmVsX2d0eF9mbGFnX3RzX2RlY29kZShsYywgaik7CisgICAg ICAgICAgICBhYnNfbGV2ZWxfcGFzczJbbl0gKz0gYWJzX2xldmVsX2d0eF9mbGFnW25dIDw8IDE7 CisgICAgICAgICAgICByYy0+cmVtX2JpbnNfcGFzczEtLTsKKyAgICAgICAgfQorICAgICAgICBs YXN0X3NjYW5fcG9zX3Bhc3MyID0gbjsKKyAgICB9CisKKyAgICAvKiByZW1haW5kZXIgc2NhbiBw YXNzICovCisgICAgZm9yIChuID0gMDsgbiA8IHJjLT5udW1fc2JfY29lZmY7IG4rKykgeworICAg ICAgICBjb25zdCBpbnQgeGMgID0gKHhzIDw8IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9v ZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5YyAgPSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyBy Yy0+c2Nhbl95X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IG9mZiA9IHljICogdGItPnRiX3dp ZHRoICsgeGM7CisgICAgICAgIGNvbnN0IGludCAqYWJzX2xldmVsX3Bhc3MxICA9IHJjLT5hYnNf bGV2ZWxfcGFzczEgKyBvZmY7CisgICAgICAgIGludCAqYWJzX2xldmVsICAgICAgICAgICAgICA9 IHJjLT5hYnNfbGV2ZWwgKyBvZmY7CisgICAgICAgIGludCAqY29lZmZfc2lnbl9sZXZlbCAgICAg ICA9IHJjLT5jb2VmZl9zaWduX2xldmVsICsgb2ZmOworICAgICAgICBpbnQgYWJzX3JlbWFpbmRl ciA9IDA7CisKKyAgICAgICAgaWYgKChuIDw9IGxhc3Rfc2Nhbl9wb3NfcGFzczIgJiYgYWJzX2xl dmVsX3Bhc3MyW25dID49IDEwKSB8fAorICAgICAgICAgICAgKG4gPiBsYXN0X3NjYW5fcG9zX3Bh c3MyICYmIG4gPD0gbGFzdF9zY2FuX3Bvc19wYXNzMSAmJgorICAgICAgICAgICAgKmFic19sZXZl bF9wYXNzMSA+PSAyKSB8fAorICAgICAgICAgICAgKG4gPiBsYXN0X3NjYW5fcG9zX3Bhc3MxICYm ICAqc2JfY29kZWRfZmxhZykpCisgICAgICAgICAgICBhYnNfcmVtYWluZGVyID0gYWJzX3JlbWFp bmRlcl90c19kZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAgICBpZiAobiA8PSBsYXN0X3Nj YW5fcG9zX3Bhc3MyKSB7CisgICAgICAgICAgICAqYWJzX2xldmVsID0gYWJzX2xldmVsX3Bhc3My W25dICsgMiAqIGFic19yZW1haW5kZXI7CisgICAgICAgIH0gZWxzZSBpZiAobiA8PSBsYXN0X3Nj YW5fcG9zX3Bhc3MxKSB7CisgICAgICAgICAgICAqYWJzX2xldmVsID0gKmFic19sZXZlbF9wYXNz MSArIDIgKiBhYnNfcmVtYWluZGVyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKmFi c19sZXZlbCA9IGFic19yZW1haW5kZXI7CisgICAgICAgICAgICBpZiAoYWJzX3JlbWFpbmRlcikg eworICAgICAgICAgICAgICAgIC8vbiA+IGxhc3RTY2FuUG9zUGFzczEKKyAgICAgICAgICAgICAg ICAqY29lZmZfc2lnbl9sZXZlbCA9IDEgLSAyICogY29lZmZfc2lnbl9mbGFnX2RlY29kZShsYyk7 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFiZHBjbV9mbGFnICYmIG4g PD0gbGFzdF9zY2FuX3Bvc19wYXNzMSkgeworICAgICAgICAgICAgY29uc3QgaW50IGxlZnQgID0g eGMgPiAwID8gYWJzX2xldmVsWy0xXSA6IDA7CisgICAgICAgICAgICBjb25zdCBpbnQgYWJvdmUg PSB5YyA+IDAgPyBhYnNfbGV2ZWxbLXRiLT50Yl93aWR0aF0gOiAwOworICAgICAgICAgICAgY29u c3QgaW50IHByZWQgPSBGRk1BWChsZWZ0LCBhYm92ZSk7CisKKyAgICAgICAgICAgIGlmICgqYWJz X2xldmVsID09IDEgJiYgcHJlZCA+IDApCisgICAgICAgICAgICAgICAgKmFic19sZXZlbCA9IHBy ZWQ7CisgICAgICAgICAgICBlbHNlIGlmICgqYWJzX2xldmVsID4gMCAmJiAqYWJzX2xldmVsIDw9 IHByZWQpCisgICAgICAgICAgICAgICAgKCphYnNfbGV2ZWwpLS07CisgICAgICAgIH0KKyAgICAg ICAgaWYgKCphYnNfbGV2ZWwpIHsKKyAgICAgICAgICAgIHRiLT5jb2VmZnNbb2ZmXSA9ICpjb2Vm Zl9zaWduX2xldmVsICogKmFic19sZXZlbDsKKyAgICAgICAgICAgIHRiLT5tYXhfc2Nhbl94ID0g RkZNQVgoeGMsIHRiLT5tYXhfc2Nhbl94KTsKKyAgICAgICAgICAgIHRiLT5tYXhfc2Nhbl95ID0g RkZNQVgoeWMsIHRiLT5tYXhfc2Nhbl95KTsKKyAgICAgICAgICAgIHRiLT5taW5fc2Nhbl94ID0g RkZNSU4oeGMsIHRiLT5taW5fc2Nhbl94KTsKKyAgICAgICAgICAgIHRiLT5taW5fc2Nhbl95ID0g RkZNSU4oeWMsIHRiLT5taW5fc2Nhbl95KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg IHRiLT5jb2VmZnNbb2ZmXSA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsK K30KKworc3RhdGljIGludCBobHNfcmVzaWR1YWxfdHNfY29kaW5nKFZWQ0xvY2FsQ29udGV4dCAq bGMsIFRyYW5zZm9ybUJsb2NrICp0YikKK3sKKyAgICBSZXNpZHVhbENvZGluZyByYzsKKyAgICB0 Yi0+bWluX3NjYW5feCA9IHRiLT5taW5fc2Nhbl95ID0gSU5UX01BWDsKKyAgICBpbml0X3Jlc2lk dWFsX2NvZGluZyhsYywgJnJjLCB0Yi0+bG9nMl90Yl93aWR0aCwgdGItPmxvZzJfdGJfaGVpZ2h0 LCB0Yik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gcmMubGFzdF9zdWJfYmxvY2s7IGkrKykg eworICAgICAgICBpbnQgcmV0ID0gcmVzaWR1YWxfdHNfY29kaW5nX3N1YmJsb2NrKGxjLCAmcmMs IGkpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAg fQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHJlc2lkdWFsX2NvZGlu Z19zdWJibG9jayhWVkNMb2NhbENvbnRleHQgKmxjLCBSZXNpZHVhbENvZGluZyAqcmMsIGNvbnN0 IGludCBpKQoreworICAgIGNvbnN0IFZWQ1NIICpzaCAgICAgPSAmbGMtPnNjLT5zaDsKKyAgICBU cmFuc2Zvcm1CbG9jayAqdGIgID0gcmMtPnRiOworICAgIGludCBmaXJzdF9zaWdfc2Nhbl9wb3Nf c2IsIGxhc3Rfc2lnX3NjYW5fcG9zX3NiOworICAgIGludCBmaXJzdF9wb3NfbW9kZTAsIGZpcnN0 X3Bvc19tb2RlMTsKKyAgICBpbnQgaW5mZXJfc2JfZGNfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAg IGludCBuLCBzaWdfaGlkZGVuX2ZsYWcsIHN1bSA9IDA7CisgICAgaW50IGFic19sZXZlbF9ndDJf ZmxhZ1tNQVhfU1VCX0JMT0NLX1NJWkUgKiBNQVhfU1VCX0JMT0NLX1NJWkVdOworICAgIGNvbnN0 IGludCBzdGFydF9xc3RhdGVfc2IgPSByYy0+cXN0YXRlOworICAgIGNvbnN0IGludCB4cyA9IHJj LT5zYl9zY2FuX3hfb2ZmW2ldOworICAgIGNvbnN0IGludCB5cyA9IHJjLT5zYl9zY2FuX3lfb2Zm W2ldOworICAgIHVpbnQ4X3QgKnNiX2NvZGVkX2ZsYWcgPSByYy0+c2JfY29kZWRfZmxhZyArIHlz ICogcmMtPndpZHRoX2luX3NicyArIHhzOworCisKKyAgICBhdl9hc3NlcnQwKHJjLT5udW1fc2Jf Y29lZmYgPD0gTUFYX1NVQl9CTE9DS19TSVpFICogTUFYX1NVQl9CTE9DS19TSVpFKTsKKyAgICBp ZiAoaSA8IHJjLT5sYXN0X3N1Yl9ibG9jayAmJiBpID4gMCkgeworICAgICAgICAqc2JfY29kZWRf ZmxhZyA9IHNiX2NvZGVkX2ZsYWdfZGVjb2RlKGxjLCBzYl9jb2RlZF9mbGFnLCByYywgeHMsIHlz KTsKKyAgICAgICAgaW5mZXJfc2JfZGNfc2lnX2NvZWZmX2ZsYWcgPSAxOworICAgIH0gZWxzZSB7 CisgICAgICAgICpzYl9jb2RlZF9mbGFnID0gMTsKKyAgICB9CisgICAgaWYgKCpzYl9jb2RlZF9m bGFnICYmICh4cyA+IDMgfHwgeXMgPiAzKSAmJiB0Yi0+Y19pZHggPT0gMCkKKyAgICAgICAgbGMt PnBhcnNlLm10c196ZXJvX291dF9zaWdfY29lZmZfZmxhZyA9IDA7CisKKyAgICBpZiAoISpzYl9j b2RlZF9mbGFnKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZpcnN0X3NpZ19zY2FuX3Bvc19z YiA9IHJjLT5udW1fc2JfY29lZmY7CisgICAgbGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPSAtMTsKKyAg ICBmaXJzdF9wb3NfbW9kZTAgPSAoaSA9PSByYy0+bGFzdF9zdWJfYmxvY2sgPyByYy0+bGFzdF9z Y2FuX3BvcyA6IHJjLT5udW1fc2JfY29lZmYgLTEpOworICAgIGZpcnN0X3Bvc19tb2RlMSA9IGZp cnN0X3Bvc19tb2RlMDsKKyAgICBmb3IgKG4gPSBmaXJzdF9wb3NfbW9kZTA7IG4gPj0gMCAmJiBy Yy0+cmVtX2JpbnNfcGFzczEgPj0gNDsgbi0tKSB7CisgICAgICAgIGNvbnN0IGludCB4YyAgID0g KHhzIDw8IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0 IGludCB5YyAgID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07Cisg ICAgICAgIGNvbnN0IGludCBsYXN0ID0gKHhjID09IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZm X3ggJiYgeWMgPT0gcmMtPmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSk7CisgICAgICAgIGludCAq YWJzX2xldmVsX3Bhc3MxID0gcmMtPmFic19sZXZlbF9wYXNzMSArIHljICogdGItPnRiX3dpZHRo ICsgeGM7CisgICAgICAgIGludCAqc2lnX2NvZWZmX2ZsYWcgID0gcmMtPnNpZ19jb2VmZl9mbGFn ICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKworICAgICAgICBpZiAoKG4gPiAwIHx8ICFpbmZl cl9zYl9kY19zaWdfY29lZmZfZmxhZyApICYmICFsYXN0KSB7CisgICAgICAgICAgICAqc2lnX2Nv ZWZmX2ZsYWcgPSBzaWdfY29lZmZfZmxhZ19kZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAg ICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxLS07CisgICAgICAgICAgICBpZiAoKnNpZ19jb2VmZl9m bGFnKQorICAgICAgICAgICAgICAgIGluZmVyX3NiX2RjX3NpZ19jb2VmZl9mbGFnID0gMDsKKyAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpzaWdfY29lZmZfZmxhZyA9IGxhc3QgfHwgKCFy Yy0+c2Nhbl94X29mZltuXSAmJiAhcmMgLT5zY2FuX3lfb2ZmW25dICYmCisgICAgICAgICAgICAg ICAgaW5mZXJfc2JfZGNfc2lnX2NvZWZmX2ZsYWcpOworICAgICAgICB9CisgICAgICAgICphYnNf bGV2ZWxfcGFzczEgPSAwOworICAgICAgICBpZiAoKnNpZ19jb2VmZl9mbGFnKSB7CisgICAgICAg ICAgICBpbnQgYWJzX2xldmVsX2d0MV9mbGFnLCBwYXJfbGV2ZWxfZmxhZyA9IDA7CisgICAgICAg ICAgICBjb25zdCBpbnQgaW5jID0gZ2V0X2d0eF9mbGFnX2luYyhyYywgeGMsIHljLCBsYXN0KTsK KyAgICAgICAgICAgIGFic19sZXZlbF9ndDFfZmxhZyA9IGFic19sZXZlbF9ndHhfZmxhZ19kZWNv ZGUobGMsIGluYyk7CisgICAgICAgICAgICByYy0+cmVtX2JpbnNfcGFzczEtLTsKKyAgICAgICAg ICAgIGlmIChhYnNfbGV2ZWxfZ3QxX2ZsYWcpIHsKKyAgICAgICAgICAgICAgICBwYXJfbGV2ZWxf ZmxhZyA9IHBhcl9sZXZlbF9mbGFnX2RlY29kZShsYywgaW5jKTsKKyAgICAgICAgICAgICAgICBh YnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdfZGVjb2RlKGxjLCBpbmMg KyAzMik7CisgICAgICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxIC09IDI7CisgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFic19sZXZlbF9ndDJfZmxhZ1tuXSA9IDA7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPT0g LTEpCisgICAgICAgICAgICAgICAgbGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPSBuOworICAgICAgICAg ICAgZmlyc3Rfc2lnX3NjYW5fcG9zX3NiID0gbjsKKworICAgICAgICAgICAgKmFic19sZXZlbF9w YXNzMSA9CisgICAgICAgICAgICAgICAgMSAgKyBwYXJfbGV2ZWxfZmxhZyArIGFic19sZXZlbF9n dDFfZmxhZyArIChhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPDwgMSk7CisgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICBhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPSAwOworICAgICAgICB9CisKKyAg ICAgICAgaWYgKHNoLT5kZXBfcXVhbnRfdXNlZF9mbGFnKQorICAgICAgICAgICAgcmMtPnFzdGF0 ZSA9IHFzdGF0ZV90cmFuc2xhdGVfdGFibGVbcmMtPnFzdGF0ZV1bKmFic19sZXZlbF9wYXNzMSAm IDFdOworCisgICAgICAgIGZpcnN0X3Bvc19tb2RlMSA9IG4gLSAxOworICAgIH0KKyAgICBmb3Ig KG4gPSBmaXJzdF9wb3NfbW9kZTA7IG4gPiBmaXJzdF9wb3NfbW9kZTE7IG4tLSkgeworICAgICAg ICBjb25zdCBpbnQgeGMgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltu XTsKKyAgICAgICAgY29uc3QgaW50IHljID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNj YW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCAqYWJzX2xldmVsX3Bhc3MxICA9IHJjLT5h YnNfbGV2ZWxfcGFzczEgKyB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBpbnQgKmFi c19sZXZlbCAgICAgICAgICAgICAgPSByYy0+YWJzX2xldmVsICsgeWMgKiB0Yi0+dGJfd2lkdGgg KyB4YzsKKworICAgICAgICAqYWJzX2xldmVsID0gKmFic19sZXZlbF9wYXNzMTsKKyAgICAgICAg aWYgKGFic19sZXZlbF9ndDJfZmxhZ1tuXSkgeworICAgICAgICAgICAgY29uc3QgaW50IGFic19y ZW1haW5kZXIgPSBhYnNfcmVtYWluZGVyX2RlY29kZShsYywgcmMsIHhjLCB5Yyk7CisgICAgICAg ICAgICBlcF91cGRhdGVfaGlzdChsYy0+ZXAsIHJjLCBhYnNfcmVtYWluZGVyLCAyKTsKKyAgICAg ICAgICAgICphYnNfbGV2ZWwgKz0gMiAqIGFic19yZW1haW5kZXI7CisgICAgICAgIH0KKyAgICB9 CisgICAgZm9yIChuID0gZmlyc3RfcG9zX21vZGUxOyBuID49IDA7IG4tLSkgeworICAgICAgICBj b25zdCBpbnQgeGMgICAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltu XTsKKyAgICAgICAgY29uc3QgaW50IHljICAgID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMt PnNjYW5feV9vZmZbbl07CisgICAgICAgIGludCAqYWJzX2xldmVsICA9IHJjLT5hYnNfbGV2ZWwg KyB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworCisgICAgICAgIGlmICgqc2JfY29kZWRfZmxhZykg eworICAgICAgICAgICAgY29uc3QgaW50IGRlY19hYnNfbGV2ZWwgPSBkZWNfYWJzX2xldmVsX2Rl Y29kZShsYywgcmMsIHhjLCB5YywgYWJzX2xldmVsKTsKKyAgICAgICAgICAgIGVwX3VwZGF0ZV9o aXN0KGxjLT5lcCwgcmMsIGRlY19hYnNfbGV2ZWwsIDApOworICAgICAgICB9CisgICAgICAgIGlm ICgqYWJzX2xldmVsID4gMCkgeworICAgICAgICAgICAgaWYgKGxhc3Rfc2lnX3NjYW5fcG9zX3Ni ID09IC0xKQorICAgICAgICAgICAgICAgIGxhc3Rfc2lnX3NjYW5fcG9zX3NiID0gbjsKKyAgICAg ICAgICAgIGZpcnN0X3NpZ19zY2FuX3Bvc19zYiA9IG47CisgICAgICAgIH0KKyAgICAgICAgaWYg KHNoLT5kZXBfcXVhbnRfdXNlZF9mbGFnKQorICAgICAgICAgICAgcmMtPnFzdGF0ZSA9IHFzdGF0 ZV90cmFuc2xhdGVfdGFibGVbcmMtPnFzdGF0ZV1bKmFic19sZXZlbCAmIDFdOworICAgIH0KKyAg ICBzaWdfaGlkZGVuX2ZsYWcgPSBzaC0+c2lnbl9kYXRhX2hpZGluZ191c2VkX2ZsYWcgJiYKKyAg ICAgICAgKGxhc3Rfc2lnX3NjYW5fcG9zX3NiIC0gZmlyc3Rfc2lnX3NjYW5fcG9zX3NiID4gMyA/ IDEgOiAwKTsKKworICAgIGlmIChzaC0+ZGVwX3F1YW50X3VzZWRfZmxhZykKKyAgICAgICAgcmMt PnFzdGF0ZSA9IHN0YXJ0X3FzdGF0ZV9zYjsKKyAgICBuID0gKGkgPT0gcmMtPmxhc3Rfc3ViX2Js b2NrID8gcmMtPmxhc3Rfc2Nhbl9wb3MgOiByYy0+bnVtX3NiX2NvZWZmIC0xKTsKKyAgICBmb3Ig KC8qIG5vdGhpbmcgKi87IG4gPj0gMDsgbi0tKSB7CisgICAgICAgIGludCB0cmFuc19jb2VmZl9s ZXZlbDsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJj LT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgeWMgID0gKHlzIDw8IHJjLT5sb2cy X3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCBvZmYgPSB5YyAq IHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBjb25zdCBpbnQgKmFic19sZXZlbCA9IHJjLT5h YnNfbGV2ZWwgKyBvZmY7CisKKyAgICAgICAgaWYgKCphYnNfbGV2ZWwgPiAwKSB7CisgICAgICAg ICAgICBpbnQgc2lnbiA9IDE7CisgICAgICAgICAgICBpZiAoIXNpZ19oaWRkZW5fZmxhZyB8fCAo biAhPSBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IpKQorICAgICAgICAgICAgICAgIHNpZ24gPSAxIC0g MiAqIGNvZWZmX3NpZ25fZmxhZ19kZWNvZGUobGMpOworICAgICAgICAgICAgaWYgKHNoLT5kZXBf cXVhbnRfdXNlZF9mbGFnKSB7CisgICAgICAgICAgICAgICAgdHJhbnNfY29lZmZfbGV2ZWwgPSAo MiAqICphYnNfbGV2ZWwgLSAocmMtPnFzdGF0ZSA+IDEpKSAqIHNpZ247CisgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgIHRyYW5zX2NvZWZmX2xldmVsID0gKmFic19sZXZlbCAq IHNpZ247CisgICAgICAgICAgICAgICAgaWYgKHNpZ19oaWRkZW5fZmxhZykgeworICAgICAgICAg ICAgICAgICAgICBzdW0gKz0gKmFic19sZXZlbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4g PT0gZmlyc3Rfc2lnX3NjYW5fcG9zX3NiICYmIChzdW0gJSAyKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgIHRyYW5zX2NvZWZmX2xldmVsID0gLXRyYW5zX2NvZWZmX2xldmVsOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRiLT5jb2VmZnNbb2ZmXSA9IHRy YW5zX2NvZWZmX2xldmVsOworICAgICAgICAgICAgdGItPm1heF9zY2FuX3ggPSBGRk1BWCh4Yywg dGItPm1heF9zY2FuX3gpOworICAgICAgICAgICAgdGItPm1heF9zY2FuX3kgPSBGRk1BWCh5Yywg dGItPm1heF9zY2FuX3kpOworICAgICAgICB9CisgICAgICAgIGlmIChzaC0+ZGVwX3F1YW50X3Vz ZWRfZmxhZykKKyAgICAgICAgICAgIHJjLT5xc3RhdGUgPSBxc3RhdGVfdHJhbnNsYXRlX3RhYmxl W3JjLT5xc3RhdGVdWyphYnNfbGV2ZWwgJiAxXTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQgZGVyaXZlX2xhc3Rfc2Nhbl9wb3MoUmVzaWR1YWxDb2RpbmcgKnJjLAor ICAgIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBpbnQgbG9nMl96b190Yl9oZWlnaHQpCit7 CisgICAgaW50IHhjLCB5YywgeHMsIHlzOworICAgIGRvIHsKKyAgICAgICAgaWYgKHJjLT5sYXN0 X3NjYW5fcG9zID09IDApIHsKKyAgICAgICAgICAgIHJjLT5sYXN0X3NjYW5fcG9zID0gcmMtPm51 bV9zYl9jb2VmZjsKKyAgICAgICAgICAgIHJjLT5sYXN0X3N1Yl9ibG9jay0tOworICAgICAgICB9 CisgICAgICAgIHJjLT5sYXN0X3NjYW5fcG9zLS07CisgICAgICAgIHhzID0gcmMtPnNiX3NjYW5f eF9vZmZbcmMtPmxhc3Rfc3ViX2Jsb2NrXTsKKyAgICAgICAgeXMgPSByYy0+c2Jfc2Nhbl95X29m ZltyYy0+bGFzdF9zdWJfYmxvY2tdOworICAgICAgICB4YyA9ICh4cyA8PCByYy0+bG9nMl9zYl93 KSArIHJjLT5zY2FuX3hfb2ZmW3JjLT5sYXN0X3NjYW5fcG9zXTsKKyAgICAgICAgeWMgPSAoeXMg PDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltyYy0+bGFzdF9zY2FuX3Bvc107Cisg ICAgfSB3aGlsZSAoKHhjICE9IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3gpIHx8ICh5YyAh PSByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl95KSk7Cit9CisKK3N0YXRpYyB2b2lkIGxhc3Rf c2lnbmlmaWNhbnRfY29lZmZfeF95X2RlY29kZShSZXNpZHVhbENvZGluZyAqcmMsIFZWQ0xvY2Fs Q29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfem9fdGJfd2lkdGgsIGNvbnN0IGludCBs b2cyX3pvX3RiX2hlaWdodCkKK3sKKyAgICBjb25zdCBWVkNTSCAqc2ggPSAmbGMtPnNjLT5zaDsK KyAgICBjb25zdCBUcmFuc2Zvcm1CbG9jayAqdGIgPSByYy0+dGI7CisgICAgaW50IGxhc3Rfc2ln bmlmaWNhbnRfY29lZmZfeCwgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95OworCisgICAgbGFzdF9z aWduaWZpY2FudF9jb2VmZl94ID0gbGFzdF9zaWduaWZpY2FudF9jb2VmZl94X3ByZWZpeF9kZWNv ZGUobGMsCisgICAgICAgICAgICB0Yi0+bG9nMl90Yl93aWR0aCwgbG9nMl96b190Yl93aWR0aCwg dGItPmNfaWR4KTsKKworICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9IGxhc3Rfc2lnbmlm aWNhbnRfY29lZmZfeV9wcmVmaXhfZGVjb2RlKGxjLAorICAgICAgICB0Yi0+bG9nMl90Yl9oZWln aHQsIGxvZzJfem9fdGJfaGVpZ2h0LCB0Yi0+Y19pZHgpOworCisgICAgaWYgKGxhc3Rfc2lnbmlm aWNhbnRfY29lZmZfeCA+IDMpIHsKKyAgICAgICAgaW50IHN1ZmZpeCA9IGxhc3Rfc2lnX2NvZWZm X3N1ZmZpeF9kZWNvZGUobGMsIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCk7CisgICAgICAgIGxh c3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA9ICgxIDw8ICgobGFzdF9zaWduaWZpY2FudF9jb2VmZl94 ID4+IDEpIC0gMSkpICoKKyAgICAgICAgICAgICgyICsgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eCAmIDEpKSArIHN1ZmZpeDsKKyAgICB9CisgICAgaWYgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eSA+IDMpIHsKKyAgICAgICAgaW50IHN1ZmZpeCA9IGxhc3Rfc2lnX2NvZWZmX3N1ZmZpeF9kZWNv ZGUobGMsIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSk7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNh bnRfY29lZmZfeSA9ICgxIDw8ICgobGFzdF9zaWduaWZpY2FudF9jb2VmZl95ID4+IDEpIC0gMSkp ICoKKyAgICAgICAgICAgICgyICsgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSAmIDEpKSArIHN1 ZmZpeDsKKyAgICB9CisgICAgaWYgKHNoLT5yZXZlcnNlX2xhc3Rfc2lnX2NvZWZmX2ZsYWcpIHsK KyAgICAgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94ID0gKDEgPDwgbG9nMl96b190Yl93aWR0 aCkgLSAxIC0gbGFzdF9zaWduaWZpY2FudF9jb2VmZl94OworICAgICAgICBsYXN0X3NpZ25pZmlj YW50X2NvZWZmX3kgPSAoMSA8PCBsb2cyX3pvX3RiX2hlaWdodCkgLSAxIC0gbGFzdF9zaWduaWZp Y2FudF9jb2VmZl95OworICAgIH0KKyAgICByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl94ID0g bGFzdF9zaWduaWZpY2FudF9jb2VmZl94OworICAgIHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZm X3kgPSBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3k7Cit9CisKK3N0YXRpYyBpbnQgaGxzX3Jlc2lk dWFsX2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxjLCBUcmFuc2Zvcm1CbG9jayAqdGIpCit7Cisg ICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgICAgID0gbGMtPmZjLT5wcy5zcHM7CisgICAgY29u c3QgQ29kaW5nVW5pdCAqY3UgICAgICAgID0gbGMtPmN1OworICAgIGNvbnN0IGludCBsb2cyX3Ri X3dpZHRoICAgICA9IHRiLT5sb2cyX3RiX3dpZHRoOworICAgIGNvbnN0IGludCBsb2cyX3RiX2hl aWdodCAgICA9IHRiLT5sb2cyX3RiX2hlaWdodDsKKyAgICBjb25zdCBpbnQgY19pZHggICAgICAg ICAgICAgPSB0Yi0+Y19pZHg7CisgICAgaW50IGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJf aGVpZ2h0OworICAgIFJlc2lkdWFsQ29kaW5nIHJjOworCisgICAgaWYgKHNwcy0+bXRzX2VuYWJs ZWRfZmxhZyAmJiBjdS0+c2J0X2ZsYWcgJiYgY19pZHggPT0gMCAmJiBsb2cyX3RiX3dpZHRoID09 IDUgJiYgbG9nMl90Yl9oZWlnaHQgPCA2KQorICAgICAgICBsb2cyX3pvX3RiX3dpZHRoID0gNDsK KyAgICBlbHNlCisgICAgICAgIGxvZzJfem9fdGJfd2lkdGggPSBGRk1JTihsb2cyX3RiX3dpZHRo LCA1ICk7CisKKyAgICBpZiAoc3BzLT5tdHNfZW5hYmxlZF9mbGFnICYmIGN1LT5zYnRfZmxhZyAm JiBjX2lkeCA9PSAwICYmIGxvZzJfdGJfd2lkdGggPCA2ICYmIGxvZzJfdGJfaGVpZ2h0ID09IDUg KQorICAgICAgICBsb2cyX3pvX3RiX2hlaWdodCA9IDQ7CisgICAgZWxzZQorICAgICAgICBsb2cy X3pvX3RiX2hlaWdodCA9IEZGTUlOKGxvZzJfdGJfaGVpZ2h0LCA1KTsKKworICAgIGluaXRfcmVz aWR1YWxfY29kaW5nKGxjLCAmcmMsIGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0 LCB0Yik7CisgICAgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94X3lfZGVjb2RlKCZyYywgbGMsIGxv ZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0KTsKKyAgICBkZXJpdmVfbGFzdF9zY2Fu X3BvcygmcmMsIGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0KTsKKworICAgIGlm IChyYy5sYXN0X3N1Yl9ibG9jayA9PSAwICYmIGxvZzJfdGJfd2lkdGggPj0gMiAmJiBsb2cyX3Ri X2hlaWdodCA+PSAyICYmICF0Yi0+dHMgJiYgcmMubGFzdF9zY2FuX3BvcyA+IDApCisgICAgICAg IGxjLT5wYXJzZS5sZm5zdF9kY19vbmx5ID0gMDsKKyAgICBpZiAoKHJjLmxhc3Rfc3ViX2Jsb2Nr ID4gMCAmJiBsb2cyX3RiX3dpZHRoID49IDIgJiYgbG9nMl90Yl9oZWlnaHQgPj0gMiApIHx8Cisg ICAgICAgICAocmMubGFzdF9zY2FuX3BvcyA+IDcgJiYgKGxvZzJfdGJfd2lkdGggPT0gMiB8fCBs b2cyX3RiX3dpZHRoID09IDMgKSAmJgorICAgICAgICAgbG9nMl90Yl93aWR0aCA9PSBsb2cyX3Ri X2hlaWdodCkpCisgICAgICAgIGxjLT5wYXJzZS5sZm5zdF96ZXJvX291dF9zaWdfY29lZmZfZmxh ZyA9IDA7CisgICAgaWYgKChyYy5sYXN0X3N1Yl9ibG9jayA+IDAgfHwgcmMubGFzdF9zY2FuX3Bv cyA+IDAgKSAmJiBjX2lkeCA9PSAwKQorICAgICAgICBsYy0+cGFyc2UubXRzX2RjX29ubHkgPSAw OworCisgICAgbWVtc2V0KHRiLT5jb2VmZnMsIDAsIHRiLT50Yl93aWR0aCAqIHRiLT50Yl9oZWln aHQgKiBzaXplb2YoKnRiLT5jb2VmZnMpKTsKKyAgICBtZW1zZXQocmMuYWJzX2xldmVsLCAwLCB0 Yi0+dGJfd2lkdGggKiB0Yi0+dGJfaGVpZ2h0ICogc2l6ZW9mKHJjLmFic19sZXZlbFswXSkpOwor ICAgIG1lbXNldChyYy5zYl9jb2RlZF9mbGFnLCAwLCByYy5uYl9zYnMpOworICAgIG1lbXNldChy Yy5hYnNfbGV2ZWxfcGFzczEsIDAsIHRiLT50Yl93aWR0aCAqIHRiLT50Yl9oZWlnaHQgKiBzaXpl b2YocmMuYWJzX2xldmVsX3Bhc3MxWzBdKSk7CisgICAgbWVtc2V0KHJjLnNpZ19jb2VmZl9mbGFn LCAwLCB0Yi0+dGJfd2lkdGggKiB0Yi0+dGJfaGVpZ2h0ICogc2l6ZW9mKHJjLnNpZ19jb2VmZl9m bGFnWzBdKSk7CisKKyAgICBmb3IgKGludCBpID0gcmMubGFzdF9zdWJfYmxvY2s7IGkgPj0gMDsg aS0tKSB7CisgICAgICAgIGludCByZXQgPSByZXNpZHVhbF9jb2Rpbmdfc3ViYmxvY2sobGMsICZy YywgaSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAg ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGZmX3Z2Y19yZXNpZHVhbF9jb2RpbmcoVlZD TG9jYWxDb250ZXh0ICpsYywgVHJhbnNmb3JtQmxvY2sgKnRiKQoreworICAgIGNvbnN0IFZWQ1NI ICpzaCAgICAgPSAmbGMtPnNjLT5zaDsKKyAgICBjb25zdCBpbnQgdHMgICAgICAgID0gIXNoLT50 c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxhZyAmJiB0Yi0+dHM7CisKKyAgICByZXR1cm4g dHMgPyBobHNfcmVzaWR1YWxfdHNfY29kaW5nKGxjLCB0YikgOiBobHNfcmVzaWR1YWxfY29kaW5n KGxjLCB0Yik7Cit9CisKK2ludCBmZl92dmNfY3VfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfQ09ERURfRkxBRyk7Cit9CisKK2ludCBm Zl92dmNfc2J0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgdyAg ICAgPSBsYy0+Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0IGludCBoICAgICA9IGxjLT5jdS0+Y2Jf aGVpZ2h0OworICAgIGNvbnN0IGludCBpbmMgICA9IHcgKiBoIDw9IDI1NjsKKyAgICByZXR1cm4g R0VUX0NBQkFDKENVX1NCVF9GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19zYnRfcXVhZF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9TQlRf UVVBRF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19zYnRfaG9yaXpvbnRhbF9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IHcgPSBsYy0+Y3UtPmNiX3dpZHRoOworICAg IGNvbnN0IGludCBoID0gbGMtPmN1LT5jYl9oZWlnaHQ7CisgICAgY29uc3QgaW50IGluYyA9ICh3 ID09IGgpID8gMCA6ICgodyA8IGgpID8gMSA6IDIpOworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1Vf U0JUX0hPUklaT05UQUxfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfc2J0X3Bvc19mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9TQlRfUE9T X0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2xmbnN0X2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBj b25zdCBpbnQgaW5jKQoreworICAgIGlmICghR0VUX0NBQkFDKExGTlNUX0lEWCArIGluYykpCisg ICAgICAgIHJldHVybiAwOworICAgIGlmICghR0VUX0NBQkFDKExGTlNUX0lEWCArIDIpKQorICAg ICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gMjsKK30KKworaW50IGZmX3Z2Y19tdHNfaWR4KFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykgeworICAgICAgICBpZiAoIUdFVF9DQUJBQyhNVFNfSURYICsgaSkpCisgICAgICAgICAg ICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfZW5kX29m X3NsaWNlX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGdl dF9jYWJhY190ZXJtaW5hdGUoJmxjLT5lcC0+Y2MpOworfQorCitpbnQgZmZfdnZjX2VuZF9vZl90 aWxlX29uZV9iaXQoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gZ2V0X2NhYmFj X3Rlcm1pbmF0ZSgmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfZW5kX29mX3N1YnNldF9v bmVfYml0KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGdldF9jYWJhY190ZXJt aW5hdGUoJmxjLT5lcC0+Y2MpOworfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX2Nh YmFjLmggYi9saWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi41YmIxYWU4M2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2Rl Yy92dmMvdnZjX2NhYmFjLmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBWVkMgQ0FCQUMgZGVj b2RlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOdW8gTWkKKyAqCisgKiBUaGlzIGZpbGUg aXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq CisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25n IHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkNPREVDX1ZWQ19DQUJBQ19ICisjZGVm aW5lIEFWQ09ERUNfVlZDX0NBQkFDX0gKKworI2luY2x1ZGUgInZ2Y19jdHUuaCIKKworaW50IGZm X3Z2Y19jYWJhY19pbml0KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBjdHVfaWR4LCBpbnQgcngs IGludCByeSk7CisKKy8vc2FvCitpbnQgZmZfdnZjX3Nhb19tZXJnZV9mbGFnX2RlY29kZShWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX3R5cGVfaWR4X2RlY29kZShWVkNMb2Nh bENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX2JhbmRfcG9zaXRpb25fZGVjb2RlKFZWQ0xv Y2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fb2Zmc2V0X2Fic19kZWNvZGUoVlZDTG9j YWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfc2lnbl9kZWNvZGUoVlZDTG9j YWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3Nhb19lb19jbGFzc19kZWNvZGUoVlZDTG9jYWxD b250ZXh0ICpsYyk7CisKKy8vYWxmCitpbnQgZmZfdnZjX2FsZl9jdGJfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjLCBpbnQgcngsIGludCByeSwgaW50IGNfaWR4KTsKK2ludCBmZl92dmNfYWxmX3Vz ZV9hcHNfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfYWxmX2x1bWFfcHJl dl9maWx0ZXJfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hbGZfbHVtYV9m aXhlZF9maWx0ZXJfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hbGZfY3Ri X2ZpbHRlcl9hbHRfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBjX2lkeCwgaW50IG51bV9j aHJvbWFfZmlsdGVycyk7CitpbnQgZmZfdnZjX2FsZl9jdGJfY2NfaWRjKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGludCByeCwgaW50IHJ5LCBpbnQgaWR4LCBpbnQgY2NfZmlsdGVyc19zaWduYWxsZWQp OworCisvL2NvZGluZ190cmVlCitpbnQgZmZfdnZjX3NwbGl0X2N1X2ZsYWcoVlZDTG9jYWxDb250 ZXh0KiBsYywgaW50IHgwLCBpbnQgeTAsIGludCBjYl93aWR0aCwgaW50IGNiX2hlaWdodCwKKyAg ICBpbnQgY2hfdHlwZSwgY29uc3QgVlZDQWxsb3dlZFNwbGl0ICphKTsKK1ZWQ1NwbGl0TW9kZSBm Zl92dmNfc3BsaXRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxjLCAgaW50IHgwLCBpbnQgeTAsIGlu dCBjYl93aWR0aCwgaW50IGNiX2hlaWdodCwKKyAgICBpbnQgY3F0X2RlcHRoLCBpbnQgbXR0X2Rl cHRoLCBpbnQgY2hfdHlwZSwgY29uc3QgVlZDQWxsb3dlZFNwbGl0ICphKTsKK2ludCBmZl92dmNf bm9uX2ludGVyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IHgwLCBpbnQgeTAsIGludCBj aF90eXBlKTsKKworLy9jb2RpbmcgdW5pdAoraW50IGZmX3Z2Y19wcmVkX21vZGVfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjLCBpbnQgaXNfY2hyb21hKTsKK2ludCBmZl92dmNfcHJlZF9tb2RlX3Bs dF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9sdW1h X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2x1bWFf ZGlyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2No cm9tYV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9j aHJvbWFfZGlyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X3NraXBf ZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCB1aW50OF90ICpjdV9za2lwX2ZsYWcpOwor aW50IGZmX3Z2Y19wcmVkX21vZGVfaWJjX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGNo X3R5cGUpOworaW50IGZmX3Z2Y19jdV9jb2RlZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOwor aW50IGZmX3Z2Y19jdV9xcF9kZWx0YV9hYnMoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX2N1X3FwX2RlbHRhX3NpZ25fZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfc2J0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3NidF9xdWFkX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3NidF9ob3Jpem9udGFsX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3NidF9wb3NfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKTsKKworLy9pbnRyYQoraW50IGZmX3Z2Y19pbnRyYV9taXBfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjLCBjb25zdCB1aW50OF90ICppbnRyYV9taXBfZmxhZyk7CitpbnQgZmZfdnZj X2ludHJhX21pcF90cmFuc3Bvc2VkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX2ludHJhX21pcF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19pbnRy YV9sdW1hX3JlZl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX3N1 YnBhcnRpdGlvbnNfbW9kZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworZW51bSBJc3BUeXBl IGZmX3Z2Y19pc3Bfc3BsaXRfdHlwZShWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgaW50cmFfc3Vi cGFydGl0aW9uc19tb2RlX2ZsYWcpOworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX21wbV9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcp OworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX21wbV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7Citp bnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX3JlbWFpbmRlcihWVkNMb2NhbENvbnRleHQgKmxjKTsK K2ludCBmZl92dmNfY2NsbV9tb2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX2NjbG1fbW9kZV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJh X2Nocm9tYV9wcmVkX21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CisKKy8vaW50ZXIKK2ludCBm Zl92dmNfZ2VuZXJhbF9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2 Y19tZXJnZV9zdWJibG9ja19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19t ZXJnZV9zdWJibG9ja19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IG1heF9udW1fc3ViYmxv Y2tfbWVyZ2VfY2FuZCk7CitpbnQgZmZfdnZjX3JlZ3VsYXJfbWVyZ2VfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjLCBpbnQgY3Vfc2tpcF9mbGFnKTsKK2ludCBmZl92dmNfbWVyZ2VfaWR4KFZWQ0xv Y2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19tbXZkX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250 ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21tdmRfY2FuZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMp Owordm9pZCBmZl92dmNfbW12ZF9vZmZzZXRfY29kaW5nKFZWQ0xvY2FsQ29udGV4dCAqbGMsIE12 ICptdmRfb2Zmc2V0LCBpbnQgcGhfbW12ZF9mdWxscGVsX29ubHlfZmxhZyk7CitpbnQgZmZfdnZj X2NpaXBfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbWVyZ2VfZ3BtX3Bh cnRpdGlvbl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21lcmdlX2dwbV9p ZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGlkeCk7CitQcmVkRmxhZyBmZl92dmNfcHJlZF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpc19iKTsKK2ludCBmZl92dmNfaW50ZXJfYWZm aW5lX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X2FmZmluZV90eXBl X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3N5bV9tdmRfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfcmVmX2lkeF9seChWVkNMb2NhbENvbnRleHQg KmxjLCB1aW50OF90IG5iX3JlZnMpOworaW50IGZmX3Z2Y19hYnNfbXZkX2dyZWF0ZXIwX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2Fic19tdmRfZ3JlYXRlcjFfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfYWJzX212ZF9taW51czIoVlZDTG9jYWxD b250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX212ZF9zaWduX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps Yyk7CitpbnQgZmZfdnZjX212cF9seF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZm X3Z2Y19hbXZyX3NoaWZ0KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpbnRlcl9hZmZpbmVfZmxh ZywgUHJlZE1vZGUgcHJlZF9tb2RlLCBpbnQgaGFzX2FtdnJfZmxhZyk7CitpbnQgZmZfdnZjX2Jj d19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IG5vX2JhY2t3YXJkX3ByZWRfZmxhZyk7CisK Ky8vdHJhbnNmb3JtCitpbnQgZmZfdnZjX3R1X2NiX2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYyk7CitpbnQgZmZfdnZjX3R1X2NyX2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywg aW50IHR1X2NiX2NvZGVkX2ZsYWcpOworaW50IGZmX3Z2Y190dV95X2NvZGVkX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X2Nocm9tYV9xcF9vZmZzZXRfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3VfY2hyb21hX3FwX29mZnNldF9pZHgoVlZD TG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3R1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgdHVfY2JfY29kZWRfZmxhZywgaW50IHR1X2NyX2Nv ZGVkX2ZsYWcpOworaW50IGZmX3Z2Y190cmFuc2Zvcm1fc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGludCBjdHgpOworaW50IGZmX3Z2Y19yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250 ZXh0ICpsYywgVHJhbnNmb3JtQmxvY2sgKnRiKTsKK2ludCBmZl92dmNfbGZuc3RfaWR4KFZWQ0xv Y2FsQ29udGV4dCAqbGMsIGludCBpbmMpOworaW50IGZmX3Z2Y19tdHNfaWR4KFZWQ0xvY2FsQ29u dGV4dCAqbGMpOworCitpbnQgZmZfdnZjX2VuZF9vZl9zbGljZV9mbGFnX2RlY29kZShWVkNMb2Nh bENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfZW5kX29mX3RpbGVfb25lX2JpdChWVkNMb2NhbENv bnRleHQgKmxjKTsKK2ludCBmZl92dmNfZW5kX29mX3N1YnNldF9vbmVfYml0KFZWQ0xvY2FsQ29u dGV4dCAqbGMpOworCisjZW5kaWYgLy9BVkNPREVDX1ZWQ19DQUJBQ19ICmRpZmYgLS1naXQgYS9s aWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmMgYi9saWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzhiMTNmZmIwMAotLS0gL2Rldi9udWxs CisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuYwpAQCAtMCwwICsxLDMyIEBACisvKgorICog VlZDIENUVShDb2RpbmcgVHJlZSBVbml0KSBwYXJzZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIw MjIgTnVvIE1pCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZG bXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNs dWRlICJ2dmNfY3R1LmgiCisKK3ZvaWQgZmZfdnZjX2VwX2luaXRfc3RhdF9jb2VmZihFbnRyeVBv aW50ICplcCwKKwljb25zdCBpbnQgYml0X2RlcHRoLCBjb25zdCBpbnQgcGVyc2lzdGVudF9yaWNl X2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg RkZfQVJSQVlfRUxFTVMoZXAtPnN0YXRfY29lZmYpOyArK2kpIHsKKyAgICAgICAgZXAtPnN0YXRf Y29lZmZbaV0gPQorICAgICAgICAgICAgcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxl ZF9mbGFnID8gMiAqIChhdl9sb2cyKGJpdF9kZXB0aCAtIDEwKSkgOiAwOworICAgIH0KK30KZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuaCBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19j dHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jM2Q3OGM1NGU3Ci0t LSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2N0dS5oCkBAIC0wLDAgKzEsNDA0 IEBACisvKgorICogVlZDIENUVShDb2RpbmcgVHJlZSBVbml0KSBwYXJzZXIKKyAqCisgKiBDb3B5 cmlnaHQgKEMpIDIwMjIgTnVvIE1pCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVn LgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQor ICovCisKKyNpZm5kZWYgQVZDT0RFQ19WVkNfQ1RVX0gKKyNkZWZpbmUgQVZDT0RFQ19WVkNfQ1RV X0gKKworI2luY2x1ZGUgImxpYmF2Y29kZWMvY2FiYWMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwv bWVtX2ludGVybmFsLmgiCisKKyNpbmNsdWRlICJ2dmNkZWMuaCIKKworZW51bSBTQU9UeXBlIHsK KyAgICBTQU9fTk9UX0FQUExJRUQgPSAwLAorICAgIFNBT19CQU5ELAorICAgIFNBT19FREdFLAor ICAgIFNBT19BUFBMSUVECit9OworCitlbnVtIFNBT0VPQ2xhc3MgeworICAgIFNBT19FT19IT1JJ WiA9IDAsCisgICAgU0FPX0VPX1ZFUlQsCisgICAgU0FPX0VPXzEzNUQsCisgICAgU0FPX0VPXzQ1 RCwKK307CisKK3R5cGVkZWYgc3RydWN0IE5laWdoYm91ckF2YWlsYWJsZSB7CisgICAgaW50IGNh bmRfbGVmdDsKKyAgICBpbnQgY2FuZF91cDsKKyAgICBpbnQgY2FuZF91cF9sZWZ0OworICAgIGlu dCBjYW5kX3VwX3JpZ2h0OworICAgIGludCBjYW5kX3VwX3JpZ2h0X3NhcDsKK30gTmVpZ2hib3Vy QXZhaWxhYmxlOworCitlbnVtIElzcFR5cGV7CisgICAgSVNQX05PX1NQTElULAorICAgIElTUF9I T1JfU1BMSVQsCisgICAgSVNQX1ZFUl9TUExJVCwKK307CisKK3R5cGVkZWYgZW51bSBWVkNTcGxp dE1vZGUgeworICAgIFNQTElUX05PTkUsCisgICAgU1BMSVRfVFRfSE9SLAorICAgIFNQTElUX0JU X0hPUiwKKyAgICBTUExJVF9UVF9WRVIsCisgICAgU1BMSVRfQlRfVkVSLAorICAgIFNQTElUX1FU LAorfSBWVkNTcGxpdE1vZGU7CisKK3R5cGVkZWYgZW51bSBNdHNJZHggeworICAgIE1UU19EQ1Qy X0RDVDIsCisgICAgTVRTX0RTVDdfRFNUNywKKyAgICBNVFNfRFNUN19EQ1Q4LAorICAgIE1UU19E Q1Q4X0RTVDcsCisgICAgTVRTX0RDVDhfRENUOCwKK30gTXRzSWR4OworCit0eXBlZGVmIHN0cnVj dCBUcmFuc2Zvcm1CbG9jayB7CisgICAgdWludDhfdCBoYXNfY29lZmZzOworICAgIHVpbnQ4X3Qg Y19pZHg7CisgICAgdWludDhfdCB0czsgICAgICAgICAgICAgLy8vPCAgdHJhbnNmb3JtX3NraXBf ZmxhZworICAgIGludCB4MDsKKyAgICBpbnQgeTA7CisKKyAgICBpbnQgdGJfd2lkdGg7CisgICAg aW50IHRiX2hlaWdodDsKKyAgICBpbnQgbG9nMl90Yl93aWR0aDsKKyAgICBpbnQgbG9nMl90Yl9o ZWlnaHQ7CisKKyAgICBpbnQgbWF4X3NjYW5feDsKKyAgICBpbnQgbWF4X3NjYW5feTsKKyAgICBp bnQgbWluX3NjYW5feDsKKyAgICBpbnQgbWluX3NjYW5feTsKKworICAgIGludCBxcDsKKyAgICBp bnQgcmVjdF9ub25fdHNfZmxhZzsKKyAgICBpbnQgYmRfc2hpZnQ7CisgICAgaW50IGJkX29mZnNl dDsKKworICAgIGludCAqY29lZmZzOworfSBUcmFuc2Zvcm1CbG9jazsKKwordHlwZWRlZiBlbnVt IFZWQ1RyZWVUeXBlIHsKKyAgICBTSU5HTEVfVFJFRSwKKyAgICBEVUFMX1RSRUVfTFVNQSwKKyAg ICBEVUFMX1RSRUVfQ0hST01BLAorfSBWVkNUcmVlVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgVHJh bnNmb3JtVW5pdCB7CisgICAgQVZCdWZmZXJSZWYgKmJ1ZjsKKworICAgIGludCB4MDsKKyAgICBp bnQgeTA7CisgICAgaW50IHdpZHRoOworICAgIGludCBoZWlnaHQ7CisKKyAgICB1aW50OF90IGpv aW50X2NiY3JfcmVzaWR1YWxfZmxhZzsgICAgICAgICAgICAgICAgICAgLy8vPCB0dV9qb2ludF9j YmNyX3Jlc2lkdWFsX2ZsYWcKKworICAgIHVpbnQ4X3QgY29kZWRfZmxhZ1tWVkNfTUFYX1NBTVBM RV9BUlJBWVNdOyAgICAgICAgICAvLy88IHR1X3lfY29kZWRfZmxhZywgdHVfY2JfY29kZWRfZmxh ZywgdHVfY3JfY29kZWRfZmxhZworICAgIHVpbnQ4X3QgbmJfdGJzOworICAgIFRyYW5zZm9ybUJs b2NrIHRic1tWVkNfTUFYX1NBTVBMRV9BUlJBWVNdOworCisgICAgc3RydWN0IFRyYW5zZm9ybVVu aXQgKm5leHQ7Cit9IFRyYW5zZm9ybVVuaXQ7CisKK3R5cGVkZWYgZW51bSBQcmVkTW9kZSB7Cisg ICAgTU9ERV9JTlRFUiwKKyAgICBNT0RFX0lOVFJBLAorICAgIE1PREVfU0tJUCwKKyAgICBNT0RF X1BMVCwKKyAgICBNT0RFX0lCQywKK30gUHJlZE1vZGU7CisKK3R5cGVkZWYgc3RydWN0IE12IHsK KyAgICBpbnQgeDsgIC8vLzwgaG9yaXpvbnRhbCBjb21wb25lbnQgb2YgbW90aW9uIHZlY3Rvcgor ICAgIGludCB5OyAgLy8vPCB2ZXJ0aWNhbCBjb21wb25lbnQgb2YgbW90aW9uIHZlY3RvcgorfSBN djsKKwordHlwZWRlZiBzdHJ1Y3QgTXZGaWVsZCB7CisgICAgREVDTEFSRV9BTElHTkVEKDQsIE12 LCBtdilbMl07ICAvLy88IG12TDAsIHZ2TDEKKyAgICBpbnQ4X3QgIHJlZl9pZHhbMl07ICAgICAg ICAgICAgIC8vLzwgcmVmSWR4TDAsIHJlZklkeEwxCisgICAgdWludDhfdCBocGVsX2lmX2lkeDsg ICAgICAgICAgICAvLy88IGhwZWxJZklkeAorICAgIHVpbnQ4X3QgYmN3X2lkeDsgICAgICAgICAg ICAgICAgLy8vPCBiY3dJZHgKKyAgICB1aW50OF90IHByZWRfZmxhZzsKKyAgICB1aW50OF90IGNp aXBfZmxhZzsgICAgICAgICAgICAgIC8vLzwgY2lpcF9mbGFnCit9IE12RmllbGQ7CisKK3R5cGVk ZWYgc3RydWN0IERNVlJJbmZvIHsKKyAgICBERUNMQVJFX0FMSUdORUQoNCwgTXYsIG12KVsyXTsg IC8vLzwgbXZMMCwgdnZMMQorICAgIHVpbnQ4X3QgZG12cl9lbmFibGVkOworfSBETVZSSW5mbzsK KwordHlwZWRlZiBlbnVtIE1vdGlvbk1vZGVsSWRjIHsKKyAgICBNT1RJT05fVFJBTlNMQVRJT04s CisgICAgTU9USU9OXzRfUEFSQU1TX0FGRklORSwKKyAgICBNT1RJT05fNl9QQVJBTVNfQUZGSU5F LAorfSBNb3Rpb25Nb2RlbElkYzsKKwordHlwZWRlZiBlbnVtIFByZWRGbGFnIHsKKyAgICBQRl9J TlRSQSA9IDB4MCwKKyAgICBQRl9MMCAgICA9IDB4MSwKKyAgICBQRl9MMSAgICA9IDB4MiwKKyAg ICBQRl9CSSAgICA9IDB4MywKK30gUHJlZEZsYWc7CisKK3R5cGVkZWYgZW51bSBJbnRyYVByZWRN b2RlIHsKKyAgICBJTlRSQV9QTEFOQVIgICAgPSAwLAorICAgIElOVFJBX0RDLAorICAgIElOVFJB X0hPUlogICAgICA9IDE4LAorICAgIElOVFJBX0RJQUcgICAgICA9IDM0LAorICAgIElOVFJBX1ZF UlQgICAgICA9IDUwLAorICAgIElOVFJBX1ZESUFHICAgICA9IDY2LAorICAgIElOVFJBX0xUX0ND TE0gICA9IDgxLAorICAgIElOVFJBX0xfQ0NMTSwKKyAgICBJTlRSQV9UX0NDTE0KK30gSW50cmFQ cmVkTW9kZTsKKwordHlwZWRlZiBzdHJ1Y3QgTW90aW9uSW5mbyB7CisgICAgTW90aW9uTW9kZWxJ ZGMgbW90aW9uX21vZGVsX2lkYzsgLy8vPCBNb3Rpb25Nb2RlbElkYworICAgIGludDhfdCAgIHJl Zl9pZHhbMl07ICAgICAgICAgICAgIC8vLzwgcmVmSWR4TDAsIHJlZklkeEwxCisgICAgdWludDhf dCAgaHBlbF9pZl9pZHg7ICAgICAgICAgICAgLy8vPCBocGVsSWZJZHgKKyAgICB1aW50OF90ICBi Y3dfaWR4OyAgICAgICAgICAgICAgICAvLy88IGJjd0lkeAorICAgIFByZWRGbGFnIHByZWRfZmxh ZzsKKworICAgIE12IG12WzJdW01BWF9DT05UUk9MX1BPSU5UU107CisKKyAgICBpbnQgbnVtX3Ni X3gsIG51bV9zYl95OworfSBNb3Rpb25JbmZvOworCit0eXBlZGVmIHN0cnVjdCBQcmVkaWN0aW9u VW5pdCB7CisgICAgdWludDhfdCBnZW5lcmFsX21lcmdlX2ZsYWc7CisgICAgdWludDhfdCBtbXZk X21lcmdlX2ZsYWc7CisgICAgLy9JbnRlclByZWRJZGMgaW50ZXJfcHJlZF9pZGM7CisgICAgdWlu dDhfdCBpbnRlcl9hZmZpbmVfZmxhZzsKKworICAgIC8vc3ViYmxvY2sgcHJlZGljdAorICAgIHVp bnQ4X3QgbWVyZ2Vfc3ViYmxvY2tfZmxhZzsKKworICAgIHVpbnQ4X3QgbWVyZ2VfZ3BtX2ZsYWc7 CisgICAgdWludDhfdCBncG1fcGFydGl0aW9uX2lkeDsKKyAgICBNdkZpZWxkIGdwbV9tdlsyXTsK KworICAgIGludCBzeW1fbXZkX2ZsYWc7CisKKyAgICBNb3Rpb25JbmZvIG1pOworCisgICAgLy8g Zm9yIHJlZ3VsYXIgcHJlZGljdGlvbiBvbmx5CisgICAgdWludDhfdCBkbXZyX2ZsYWc7CisgICAg dWludDhfdCBiZG9mX2ZsYWc7CisKKyAgICBpbnQxNl90IGRpZmZfbXZfeFsyXVtBRkZJTkVfTUlO X0JMT0NLX1NJWkUgKiBBRkZJTkVfTUlOX0JMT0NLX1NJWkVdOyAgIC8vLzwgZGlmZk12TFgKKyAg ICBpbnQxNl90IGRpZmZfbXZfeVsyXVtBRkZJTkVfTUlOX0JMT0NLX1NJWkUgKiBBRkZJTkVfTUlO X0JMT0NLX1NJWkVdOyAgIC8vLzwgZGlmZk12TFgKKyAgICBpbnQgY2JfcHJvZl9mbGFnWzJdOwor fSBQcmVkaWN0aW9uVW5pdDsKKwordHlwZWRlZiBzdHJ1Y3QgQ29kaW5nVW5pdCB7CisgICAgQVZC dWZmZXJSZWYgKmJ1ZjsKKworICAgIFZWQ1RyZWVUeXBlIHRyZWVfdHlwZTsKKyAgICBpbnQgeDA7 CisgICAgaW50IHkwOworICAgIGludCBjYl93aWR0aDsKKyAgICBpbnQgY2JfaGVpZ2h0OworICAg IGludCBjaF90eXBlOworICAgIGludCBjcXRfZGVwdGg7CisKKyAgICB1aW50OF90IGNvZGVkX2Zs YWc7CisKKyAgICB1aW50OF90IHNidF9mbGFnOworICAgIHVpbnQ4X3Qgc2J0X2hvcml6b250YWxf ZmxhZzsKKyAgICB1aW50OF90IHNidF9wb3NfZmxhZzsKKworICAgIGludCBsZm5zdF9pZHg7Cisg ICAgTXRzSWR4IG10c19pZHg7CisKKyAgICB1aW50OF90IGFjdF9lbmFibGVkX2ZsYWc7CisKKyAg ICB1aW50OF90IGludHJhX2x1bWFfcmVmX2lkeDsgICAgICAgICAgICAgICAgICAgICAvLy88IElu dHJhTHVtYVJlZkxpbmVJZHhbXVtdCisgICAgdWludDhfdCBpbnRyYV9taXBfZmxhZzsgICAgICAg ICAgICAgICAgICAgICAgICAgLy8vPCBpbnRyYV9taXBfZmxhZworICAgIHVpbnQ4X3Qgc2tpcF9m bGFnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgY3Vfc2tpcF9mbGFnOworCisg ICAgLy9pbnRlcgorICAgIHVpbnQ4X3QgY2lpcF9mbGFnOworCisgICAgLy8gSW5mZXJyZWQgcGFy YW1ldGVycworICAgIGVudW0gSXNwVHlwZSBpc3Bfc3BsaXRfdHlwZTsgICAgICAgICAgICAgICAg ICAgIC8vLzwgSW50cmFTdWJQYXJ0aXRpb25zU3BsaXRUeXBlCisKKyAgICBlbnVtIFByZWRNb2Rl IHByZWRfbW9kZTsgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFByZWRNb2RlCisKKyAgICBp bnQgbnVtX2ludHJhX3N1YnBhcnRpdGlvbnM7CisKKyAgICBJbnRyYVByZWRNb2RlIGludHJhX3By ZWRfbW9kZV95OyAgICAgICAgICAgICAgICAvLy88IEludHJhUHJlZE1vZGVZCisgICAgSW50cmFQ cmVkTW9kZSBpbnRyYV9wcmVkX21vZGVfYzsgICAgICAgICAgICAgICAgLy8vPCBJbnRyYVByZWRN b2RlQworICAgIGludCBtaXBfY2hyb21hX2RpcmVjdF9mbGFnOyAgICAgICAgICAgICAgICAgICAg IC8vLzwgTWlwQ2hyb21hRGlyZWN0RmxhZworCisgICAgaW50IGJkcGNtX2ZsYWdbVlZDX01BWF9T QU1QTEVfQVJSQVlTXTsgICAgICAgICAgLy8vPCBCZHBjbUZsYWcKKworICAgIGludCBhcHBseV9s Zm5zdF9mbGFnW1ZWQ19NQVhfU0FNUExFX0FSUkFZU107ICAgIC8vLzwgQXBwbHlMZm5zdEZsYWdb XQorCisgICAgc3RydWN0IHsKKyAgICAgICAgVHJhbnNmb3JtVW5pdCAqaGVhZDsKKyAgICAgICAg VHJhbnNmb3JtVW5pdCAqdGFpbDsKKyAgICB9IHR1czsKKworICAgIGludDhfdCBxcFs0XTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUXBZLCBRcOKAskNiLCBRcOKAskNy LCBRcOKAskNiQ3IKKworICAgIFByZWRpY3Rpb25Vbml0IHB1OworCisgICAgc3RydWN0IENvZGlu Z1VuaXQgKm5leHQ7Cit9IENvZGluZ1VuaXQ7CisKK3N0cnVjdCBDVFUgeworICAgIENvZGluZ1Vu aXQgKmN1czsKKyAgICBpbnQgbWF4X3lbMl1bVlZDX01BWF9SRUZfRU5UUklFU107CisgICAgaW50 IG1heF95X2lkeFsyXTsKK307CisKK3R5cGVkZWYgc3RydWN0IFJlY29uc3RydWN0ZWRBcmVhIHsK KyAgICBpbnQgeDsKKyAgICBpbnQgeTsKKyAgICBpbnQgdzsKKyAgICBpbnQgaDsKK30gUmVjb25z dHJ1Y3RlZEFyZWE7CisKK3R5cGVkZWYgc3RydWN0IFZWQ0NhYmFjU3RhdGUgeworICAgIHVpbnQx Nl90IHN0YXRlWzJdOworICAgIHVpbnQ4X3QgIHNoaWZ0WzJdOworfSBWVkNDYWJhY1N0YXRlOwor CisvLyBWVkNfQ09OVEVYVFMgbWF0Y2hlZCB3aXRoIFNZTlRBWF9FTEVNRU5UX0xBU1QsIGl0J3Mg Y2hlY2tlZCBieSBjYWJhY19pbml0X3N0YXRlLgorI2RlZmluZSBWVkNfQ09OVEVYVFMgMzc4Cit0 eXBlZGVmIHN0cnVjdCBFbnRyeVBvaW50IHsKKyAgICBpbnQ4X3QgcXBfeTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLy88IFFwWQorCisgICAgaW50IHN0YXRfY29lZmZbVlZD X01BWF9TQU1QTEVfQVJSQVlTXTsgICAgICAgICAgLy8vPCBTdGF0Q29lZmYKKworICAgIFZWQ0Nh YmFjU3RhdGUgY2FiYWNfc3RhdGVbVlZDX0NPTlRFWFRTXTsKKyAgICBDQUJBQ0NvbnRleHQgY2M7 CisKKyAgICBWVkNUYXNrICpwYXJzZV90YXNrOworICAgIGludCBjdHVfZW5kOworCisgICAgdWlu dDhfdCBpc19maXJzdF9xZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgcXVh bnRpemF0aW9uIGdyb3VwCisgICAgTXZGaWVsZCBobXZwW01BWF9OVU1fSE1WUF9DQU5EU107ICAg ICAgICAgICAgICAgLy8vPCBIbXZwQ2FuZExpc3QKKyAgICBpbnQgICAgIG51bV9obXZwOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IE51bUhtdnBDYW5kCit9IEVudHJ5UG9pbnQ7 CisKK3N0cnVjdCBWVkNMb2NhbENvbnRleHQgeworICAgIHVpbnQ4X3QgY3RiX2xlZnRfZmxhZzsK KyAgICB1aW50OF90IGN0Yl91cF9mbGFnOworICAgIHVpbnQ4X3QgY3RiX3VwX3JpZ2h0X2ZsYWc7 CisgICAgdWludDhfdCBjdGJfdXBfbGVmdF9mbGFnOworICAgIGludCAgICAgZW5kX29mX3RpbGVz X3g7CisgICAgaW50ICAgICBlbmRfb2ZfdGlsZXNfeTsKKworICAgIC8qICs3IGlzIGZvciBzdWJw aXhlbCBpbnRlcnBvbGF0aW9uLCAqMiBmb3IgaGlnaCBiaXQgZGVwdGhzICovCisgICAgREVDTEFS RV9BTElHTkVEKDMyLCB1aW50OF90LCBlZGdlX2VtdV9idWZmZXIpWyhNQVhfUEJfU0laRSArIDcp ICogRURHRV9FTVVfQlVGRkVSX1NUUklERSAqIDJdOworICAgIC8qIFRoZSBleHRlbmRlZCBzaXpl IGJldHdlZW4gdGhlIG5ldyBlZGdlIGVtdSBidWZmZXIgaXMgYWJ1c2VkIGJ5IFNBTyAqLworICAg IERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhfdCwgZWRnZV9lbXVfYnVmZmVyMilbKE1BWF9QQl9T SVpFICsgNykgKiBFREdFX0VNVV9CVUZGRVJfU1RSSURFICogMl07CisgICAgREVDTEFSRV9BTElH TkVEKDMyLCBpbnQxNl90LCB0bXApW01BWF9QQl9TSVpFICogTUFYX1BCX1NJWkVdOworICAgIERF Q0xBUkVfQUxJR05FRCgzMiwgaW50MTZfdCwgdG1wMSlbTUFYX1BCX1NJWkUgKiBNQVhfUEJfU0la RV07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCB1aW50OF90LCBjaWlwX3RtcDEpW01BWF9QQl9T SVpFICogTUFYX1BCX1NJWkUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3Qs IGNpaXBfdG1wMilbTUFYX1BCX1NJWkUgKiBNQVhfUEJfU0laRSAqIDJdOworICAgIERFQ0xBUkVf QUxJR05FRCgzMiwgdWludDhfdCwgc2FvX2J1ZmZlcilbKE1BWF9DVFVfU0laRSArIDIgKiBTQU9f UEFERElOR19TSVpFKSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAgICBERUNMQVJF X0FMSUdORUQoMzIsIHVpbnQ4X3QsIGFsZl9idWZmZXJfbHVtYSlbKE1BWF9DVFVfU0laRSArIDIg KiBBTEZfUEFERElOR19TSVpFKSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAgICBE RUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGFsZl9idWZmZXJfY2hyb21hKVsoTUFYX0NUVV9T SVpFICsgMiAqIEFMRl9QQURESU5HX1NJWkUpICogRURHRV9FTVVfQlVGRkVSX1NUUklERSAqIDJd OworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgaW50MzJfdCwgYWxmX2dyYWRpZW50X3RtcClbQUxG X0dSQURJRU5UX1NJWkUgKiBBTEZfR1JBRElFTlRfU0laRSAqIEFMRl9OVU1fRElSXTsKKworICAg IHN0cnVjdCB7CisgICAgICAgIGludCBzYnRfbnVtX2ZvdXJ0aHNfdGIwOyAgICAgICAgICAgICAg ICAvLy88IFNidE51bUZvdXJ0aHNUYjAKKworICAgICAgICB1aW50OF90IGlzX2N1X3FwX2RlbHRh X2NvZGVkOyAgICAgICAgICAgLy8vPCBJc0N1UXBEZWx0YUNvZGVkCisgICAgICAgIGludCBjdV9x Z190b3BfbGVmdF94OyAgICAgICAgICAgICAgICAgICAvLy88IEN1UWdUb3BMZWZ0WAorICAgICAg ICBpbnQgY3VfcWdfdG9wX2xlZnRfeTsgICAgICAgICAgICAgICAgICAgLy8vPCBDdVFnVG9wTGVm dFkKKyAgICAgICAgaW50IGlzX2N1X2Nocm9tYV9xcF9vZmZzZXRfY29kZWQ7ICAgICAgIC8vLzwg SXNDdUNocm9tYVFwT2Zmc2V0Q29kZWQKKyAgICAgICAgaW50IGNocm9tYV9xcF9vZmZzZXRbM107 ICAgICAgICAgICAgICAgIC8vLzwgQ3VRcE9mZnNldENiLCBDdVFwT2Zmc2V0Q3IsIEN1UXBPZmZz ZXRDYkNyCisKKyAgICAgICAgaW50IGluZmVyX3R1X2NiZl9sdW1hOyAgICAgICAgICAgICAgICAg IC8vLzwgSW5mZXJUdUNiZkx1bWEKKyAgICAgICAgaW50IHByZXZfdHVfY2JmX3k7ICAgICAgICAg ICAgICAgICAgICAgIC8vLzwgcHJldlR1Q2JmWTsKKworICAgICAgICBpbnQgbGZuc3RfZGNfb25s eTsgICAgICAgICAgICAgICAgICAgICAgLy8vPCBMZm5zdERjT25seQorICAgICAgICBpbnQgbGZu c3RfemVyb19vdXRfc2lnX2NvZWZmX2ZsYWc7ICAgICAgLy8vPCBMZm5zdFplcm9PdXRTaWdDb2Vm ZkZsYWcKKworICAgICAgICBpbnQgbXRzX2RjX29ubHk7ICAgICAgICAgICAgICAgICAgICAgICAg Ly8vPCBNdHNEY09ubHkKKyAgICAgICAgaW50IG10c196ZXJvX291dF9zaWdfY29lZmZfZmxhZzsg ICAgICAgIC8vLzwgTXRzWmVyb091dFNpZ0NvZWZmRmxhZzsKKyAgICB9IHBhcnNlOworCisgICAg c3RydWN0IHsKKyAgICAgICAgLy8gbG1jcyBjYWNoZSwgZm9yIHJlY29uIG9ubHkKKyAgICAgICAg aW50IGNocm9tYV9zY2FsZTsKKyAgICAgICAgaW50IHhfdnBkdTsKKyAgICAgICAgaW50IHlfdnBk dTsKKyAgICB9IGxtY3M7CisKKyAgICBDb2RpbmdVbml0ICpjdTsKKyAgICBSZWNvbnN0cnVjdGVk QXJlYSByYXNbMl1bTUFYX1BBUlRTX0lOX0NUVV07CisgICAgaW50ICBudW1fcmFzWzJdOworCisg ICAgTmVpZ2hib3VyQXZhaWxhYmxlIG5hOworCisjZGVmaW5lIEJPVU5EQVJZX0xFRlRfU0xJQ0Ug ICAgICgxIDw8IDApCisjZGVmaW5lIEJPVU5EQVJZX0xFRlRfVElMRSAgICAgICgxIDw8IDEpCisj ZGVmaW5lIEJPVU5EQVJZX1VQUEVSX1NMSUNFICAgICgxIDw8IDIpCisjZGVmaW5lIEJPVU5EQVJZ X1VQUEVSX1RJTEUgICAgICgxIDw8IDMpCisgICAgLyogcHJvcGVydGllcyBvZiB0aGUgYm91bmRh cnkgb2YgdGhlIGN1cnJlbnQgQ1RCIGZvciB0aGUgcHVycG9zZXMKKyAgICAgKiBvZiB0aGUgZGVi bG9ja2luZyBmaWx0ZXIgKi8KKyAgICBpbnQgYm91bmRhcnlfZmxhZ3M7CisKKyAgICBTbGljZUNv bnRleHQgKnNjOworICAgIFZWQ0ZyYW1lQ29udGV4dCAqZmM7CisgICAgRW50cnlQb2ludCAqZXA7 CisgICAgaW50ICpjb2VmZnM7Cit9IDsKKwordHlwZWRlZiBzdHJ1Y3QgVlZDQWxsb3dlZFNwbGl0 IHsKKyAgICBpbnQgcXQ7CisgICAgaW50IGJ0djsKKyAgICBpbnQgYnRoOworICAgIGludCB0dHY7 CisgICAgaW50IHR0aDsKK30gVlZDQWxsb3dlZFNwbGl0OworCitzdHJ1Y3QgU0FPUGFyYW1zIHsK KyAgICBpbnQgb2Zmc2V0X2Fic1szXVs0XTsgICAgICAgICAgICAgICAvLy88IHNhb19vZmZzZXRf YWJzCisgICAgaW50IG9mZnNldF9zaWduWzNdWzRdOyAgICAgICAgICAgICAgLy8vPCBzYW9fb2Zm c2V0X3NpZ24KKworICAgIHVpbnQ4X3QgYmFuZF9wb3NpdGlvblszXTsgICAgICAgICAgIC8vLzwg c2FvX2JhbmRfcG9zaXRpb24KKworICAgIGludCBlb19jbGFzc1szXTsgICAgICAgICAgICAgICAg ICAgIC8vLzwgc2FvX2VvX2NsYXNzCisKKyAgICBpbnQxNl90IG9mZnNldF92YWxbM11bNV07ICAg ICAgICAgICAvLy88U2FvT2Zmc2V0VmFsCisKKyAgICB1aW50OF90IHR5cGVfaWR4WzNdOyAgICAg ICAgICAgICAgICAvLy88IHNhb190eXBlX2lkeAorfTsKKworc3RydWN0IEFMRlBhcmFtcyB7Cisg ICAgdWludDhfdCBjdGJfZmxhZ1szXTsgICAgICAgICAgICAgICAgLy8vPCBhbGZfY3RiX2ZsYWdb XQorICAgIHVpbnQ4X3QgY3RiX2ZpbHRfc2V0X2lkeF95OyAgICAgICAgIC8vLzwgQWxmQ3RiRmls dFNldElkeFkKKyAgICB1aW50OF90IGFsZl9jdGJfZmlsdGVyX2FsdF9pZHhbMl07ICAvLy88IGFs Zl9jdGJfZmlsdGVyX2FsdF9pZHhbXQorICAgIHVpbnQ4X3QgY3RiX2NjX2lkY1syXTsgICAgICAg ICAgICAgIC8vLzwgYWxmX2N0Yl9jY19jYl9pZGMsIGFsZl9jdGJfY2NfY3JfaWRjCisKKyAgICB1 aW50OF90IGFwcGxpZWRbM107Cit9OworCit2b2lkIGZmX3Z2Y19lcF9pbml0X3N0YXRfY29lZmYo RW50cnlQb2ludCAqZXAsIGludCBiaXRfZGVwdGgsIGludCBwZXJzaXN0ZW50X3JpY2VfYWRhcHRh dGlvbl9lbmFibGVkX2ZsYWcpOworI2VuZGlmIC8vIEFWQ09ERUNfVlZDX0NUVV9ICmRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL3Z2Yy92dmNkZWMuaCBiL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oCmlu ZGV4IDcyMDAzNjFkMjkuLjc2Mjk3NDVkZmMgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdnZjL3Z2 Y2RlYy5oCisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oCkBAIC0xMTksNyArMTE5LDYgQEAg dHlwZWRlZiBzdHJ1Y3QgRW50cnlQb2ludCBFbnRyeVBvaW50OwogdHlwZWRlZiBzdHJ1Y3QgVlZD VGFzayBWVkNUYXNrOwogdHlwZWRlZiBzdHJ1Y3QgTXYgTXY7CiB0eXBlZGVmIHN0cnVjdCBNdkZp ZWxkIE12RmllbGQ7Ci10eXBlZGVmIHN0cnVjdCBETVZSSW5mbyBETVZSSW5mbzsKIHR5cGVkZWYg c3RydWN0IENUVSBDVFU7CiB0eXBlZGVmIHN0cnVjdCBTQU9QYXJhbXMgU0FPUGFyYW1zOwogdHlw ZWRlZiBzdHJ1Y3QgQUxGUGFyYW1zIEFMRlBhcmFtczsKQEAgLTE2Niw2ICsxNjUsNyBAQCB0eXBl ZGVmIHN0cnVjdCBWVkNGcmFtZSB7CiAKIHN0cnVjdCBTbGljZUNvbnRleHQgewogICAgIGludCBz bGljZV9pZHg7CisgICAgVlZDU0ggc2g7CiAgICAgRW50cnlQb2ludCAqZXBzOwogICAgIGludCBu Yl9lcHM7CiAgICAgUmVmUGljTGlzdCAqcnBsOwpAQCAtMTc5LDYgKzE3OSw3IEBAIHN0cnVjdCBW VkNGcmFtZUNvbnRleHQgewogCiAgICAgQVZGcmFtZSAqZnJhbWU7CiAgICAgQVZGcmFtZSAqb3V0 cHV0X2ZyYW1lOworICAgIFZWQ0ZyYW1lUGFyYW1TZXRzIHBzOwogCiAgICAgU2xpY2VDb250ZXh0 ICAqKnNsaWNlczsKICAgICBpbnQgbmJfc2xpY2VzOwpAQCAtMjA0LDcgKzIwNSw5IEBAIHN0cnVj dCBWVkNGcmFtZUNvbnRleHQgewogICAgIHN0cnVjdCB7CiAgICAgICAgIGludDE2X3QgKnNsaWNl X2lkeDsKIAotICAgICAgICBETVZSSW5mbyAgKmRtdnI7CisgICAgICAgIERCUGFyYW1zICAqZGVi bG9jazsKKyAgICAgICAgU0FPUGFyYW1zICpzYW87CisgICAgICAgIEFMRlBhcmFtcyAqYWxmOwog CiAgICAgICAgIGludCAgICAgKmNiX3Bvc194WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vLzwgQ2JQb3NYW11bXVtdCiAgICAgICAgIGludCAgICAgKmNiX3Bvc195WzJdOyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vLzwgQ2JQb3NZW11bXVtdCi0tIAoyLjI1LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4K