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 CBEBD480BB for ; Sun, 10 Dec 2023 16:13:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 365C568CBBE; Sun, 10 Dec 2023 18:13:24 +0200 (EET) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2012.outbound.protection.outlook.com [40.92.52.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 37FEA68CBBE for ; Sun, 10 Dec 2023 18:13:16 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y7CyNoao8n82GZ8dd3ggNMQreshZbetre7SKDFJQsewsuHlB5z7bC1RtoptG4XwuP5mmRov7EqIuONDgTOyXRIhdXp5QrmKbcJxnQYqRhZjF7ZTuBc6OB1zRiiCms35A//6ccwXMt32n5yZF/RK3vIKxXw5FN0xgp46PpMZk4ZR0TZRIH7qa1VrUrRSdT1fpykXGE2LquPTNGosM9NlzQc4ZrrUYq6H710S2uewcqEeCtyb95YMHsgSa98HgzeigRaLacmAftLK3PZzvy9GcRVLmbTOj9G2xFFA7ZYKKdobcMigtdO6F7ZqbuzZ9RJWOCzlbw8+7qpGUjAXqre/AXQ== 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=HHORC4Nccv/usFQtsfkQRPtHHj+GYa4x50JtlwWFfyE=; b=E3Ae+VvuyTg7waHsRRGnzZLORp9UTGGDnTK1vcNG0foTmdCYn5Mc6HJYVbo31MP/zviBTo9lEYE1a2IJvo2zWHFzF0bGDfCtV48zupzq6TyQk9neu8jjfVxItlW/KjDvl8xG0bQNFflfugMXcznGJYa0kKMcfsMGWQxkBBiUsHt/QB+R9B+ejIInrRE+EP2C73l/5QiPh73shrHRDso+2P+67JCakOmtLvNtg83gjsXochnCsLQMWZJpHY4jlBPGQKNJ8EnOTabTOzZUb7BtqJvRJLQD0z5A7Ei3U21hOWdnGEsapWaYJfRVWXsQd4TG7o4ZtPhf8GhgGfkkYSeNCw== 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=HHORC4Nccv/usFQtsfkQRPtHHj+GYa4x50JtlwWFfyE=; b=Hy6yTzAn1OhPfTCnXfERurth/DPnIDHFCi97O+KgHQQY6z0ZVipFmZ/Z2MxXA+Jhf3IilRsrkVV89TJ+AF59v5wjzwb3WHoUJx4PufQkF2AnvbqIWaiz1ZeY31EXWKaCHMDEUH2Uo5xL/qmmTzBYFT9D/4ZixBC7vnHU6EH0IRDfk9kgmJDGD+XwURvyU0XyI2hJk3yWVh3RxIyNK1/mD/bQPwm7UEep6IwowcoRXj+TjdMPhbQc4A7GTIM4HiXq/+dJJA1/mDO5vGMKnk0ux3OsOllBP2smGu8Sf+n2Onm9/iaJIExC2OLmx/6wNPa5kI+XtTxXDyjS5LTZf37Hog== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by SI6PR06MB7272.apcprd06.prod.outlook.com (2603:1096:4:246::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Sun, 10 Dec 2023 15:58:18 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::80b3:be24:949c:e49f]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::80b3:be24:949c:e49f%4]) with mapi id 15.20.7068.030; Sun, 10 Dec 2023 15:58:18 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 10 Dec 2023 23:57:56 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231210155807.4583-1-nuomi2021@gmail.com> References: <20231210155807.4583-1-nuomi2021@gmail.com> X-TMN: [TFOUbvBQlpWlQiYqMA4a6UEARy47mpq3] X-ClientProxiedBy: SI2PR02CA0051.apcprd02.prod.outlook.com (2603:1096:4:196::10) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20231210155807.4583-3-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|SI6PR06MB7272:EE_ X-MS-Office365-Filtering-Correlation-Id: adecce40-c62c-41e6-c3f3-08dbf998d37c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4S/1wKcnmu3dPDBVvgbqTasncCerWIp+VKmBVAsqLQZ9556FEDGpMKnBSRdV/lZrjNXueS8Jp8hOPAKJdz/hqAE2GhOtnFBzJ0PAxDbMnp1swekGSgtWxBsWm6F4u32KYQdYscwlZK47ofBuWPw3jSM3e0yrbOR7WOp+GwJgyG/7geiWHQ10pbdyTvHR4e+rDWOwU8zOttsEakaBz2zg8P6coPUAIyqaaD7qQxSKWCxOES4EvVMAjNCD+ZHT4r0VRq3Yk6YXPbIv2Y1f1VoD40w4sfkJbAiyrjYSPvgYVO2+OhlKGwgGuX5cB+wMrJTbD0ltTZYTdiP1mfOPIhsjHDdgO6lDGX+t4pvoz8hn68kR2la6uVrg9Cj6xvJvoGyesLGgm4u2BHERR+b3l7Eo/z77ON5lGOs7iiu5OpYkSzrbZVTcfGvcJTV5cERzBLkDtub2KeJdRocCZ/riEp0L2qg18Mu+EorVZMhvd9lTM09zFshJx9w5RaeIju5d+o6SzPJQCbfcTfnzSdMWzlrPCKFim+nhiGpLFHPIWKFJvtLmnrpTHD3iMQBeMn6VKPIiF0YAX7nRm+N+lWMK3czcpsScZfcDD4CC5EOWWmBwpX587ri160XHgbygR0/RQTBu X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K2swdHp4cWZqSGdmcDVXRjYzRHA2d0NZdFpKcWl3YXBWN2NVTTVxaEhKUmVj?= =?utf-8?B?aG1UZEltM2RUblM5dHcxK3hVN0xXb2NRMUUwRFFjT0pLK0ZLNHBrRXArN2lQ?= =?utf-8?B?TE1Sd1BRN21Jb1VQN1M2K1dzRnJaRlZHeHoxdS9PZWFIa3BDaEJXOWxXSnJl?= =?utf-8?B?R1F0YlU4ZjY0ZnJOZjgyelBLazJHSTRzM290bk1vR0s2ODhoaE5YeGhiRGNR?= =?utf-8?B?by80TWVkR3d4d1dISHhMSkZveVpEVEVUWlI5REJ0OU14Q0Zjd2kwSlBFdjBp?= =?utf-8?B?TzRFSUFOQWpNMWhWMjB6UXFDRzZMcmJ4d3FXKzVMRUNTa21FR0hELytGNVUz?= =?utf-8?B?SzdxeW4rdlY4a0Z3ekRSYXhhbURaR014UnV5bXYxSFlOd1dQbjFjNERmUGxU?= =?utf-8?B?V0RRUFZYTE9LWG9uRkRPMnpza2w5TUU5N2k2VU9LN2ZEWnRlOVE3WHprZHdE?= =?utf-8?B?SWlhWjU4MnM1M1hDNXlUR2JFd1FRYjJzZlZHSlFDZk9KNG5nRGxjdnoxbFd4?= =?utf-8?B?ZGM4MXEzTGdyNmlrdWljMlFadGlXaWhKVWNsZUNhdDgzQ2xHMkdiVmFIOS9X?= =?utf-8?B?b0N4eVZhVkVoRVRVL3JNVGdtZkliQjFDVnFRNEdTQmVWT3pFOTF2TUM3N3Vh?= =?utf-8?B?R2RQclVHRTc5bktELzNZL1gwVTdpOE9xL1NwRE1rQjNFcnhGT2UrVnZtTERz?= =?utf-8?B?aEdnWFgxUGV3bFovc3NKVHZ6QmJBZHI4ZnRlbER3dmppTnFJL2J0T1d6Umc5?= =?utf-8?B?UzVqRmxiTlBiaUYzenRNc05nNUR3RGNVRXFiaFNjWWdEWTJENWdBTlhJa2xn?= =?utf-8?B?d1hqNjBBdEhXb1BCSE5HTFRuTVNwdGxsdHd4NjlXR2hMTGpwb0hldjMxcEZy?= =?utf-8?B?NmRXcGhhL3NYM1VRMy9MdWVPYUgza3ZSaHdpWjZkZTFaRXdYSS94VGtwcytN?= =?utf-8?B?bE1xK1dIM2tqQUhIczRTSVdYQXZ0cDVmTHVNajFxQzBJU3NuM2drOTNiZkZx?= =?utf-8?B?UVRlWVlJVlU4ckNKUlVFWXBXWEc3NWsvVW0raHhFN3Q4WUErVHRDSUo4blVN?= =?utf-8?B?Tkh3SXJKRU1jRmtxcjJxVSttZzhORklqT3g4d0VVZXM2QVdnelRZK0FqVWcv?= =?utf-8?B?eGZ4b3ZLcVJKNDNhbnV1STNsR1psL0RuWWlKTlBlL1hBZDl4U1AzR0M3K1ND?= =?utf-8?B?OGlwZTRvZXc3QUw1Wk5xN0dqRUhZNWFRUlBYaE9VcFJzSEptN1g4Rk5qSXox?= =?utf-8?B?Wnd6cjlOc0FZK1RUY3VDNExzQ2VjN2R5cGpDNTliM1k1cE5WY0tDUnBEeFhV?= =?utf-8?B?TFNDcmhyVE54VUFLMlAvcStHMzQ2NEpWVHpzaTd6SDB6N3F4WnZCRkJFQjJ5?= =?utf-8?B?a09MVi92dG9uZnZLZDlDVi9pa2tnS1RzaGorUXVnT1RPY1NEVWNrNXl1WFhQ?= =?utf-8?B?RDVkbFpWV2I5SFlyLzJwd2Q4OXBGaW1LeDF6enFnOVZJN1lvWE4zY2ZBZUE5?= =?utf-8?B?a0ZhMVExdTgxckJVNkFUNGtYTkppcy8wSWdZYWpOMTllR3RYektUc2tVMWgx?= =?utf-8?B?WkNzWlJTVnhhWmRYZXovcTRBcFdzREFtUXZQUkJqbERQRkdsODF0V0Y5QWF1?= =?utf-8?B?S0lJUXl4VXllaEhheVVSMFN5Zk9hdWxFYk9HeU5PblY0eWJiRmtRWlVkN3ox?= =?utf-8?Q?WuWLwYVmZos57zUvHVtx?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: adecce40-c62c-41e6-c3f3-08dbf998d37c X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2023 15:58:18.4188 (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: SI6PR06MB7272 Subject: [FFmpeg-devel] [PATCH v7 03/14] vvcdec: add parameter parser for sps, pps, ph, sh 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: LS0tCiBsaWJhdmNvZGVjL3Z2Yy9NYWtlZmlsZSB8ICAgIDEgKwogbGliYXZjb2RlYy92dmMvdnZj X3BzLmMgfCAxMTUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGli YXZjb2RlYy92dmMvdnZjX3BzLmggfCAgMjYzICsrKysrKysrKwogbGliYXZjb2RlYy92dmMvdnZj ZGVjLmggfCAgICA3ICsKIDQgZmlsZXMgY2hhbmdlZCwgMTQyMSBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy92dmMvdnZjX3BzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWJhdmNvZGVjL3Z2Yy92dmNfcHMuaAoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL01h a2VmaWxlIGIvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKaW5kZXggOGE1YzY2YWIxMy4uYjJiMTg3 YWM2ZiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKKysrIGIvbGliYXZjb2Rl Yy92dmMvTWFrZWZpbGUKQEAgLTMsMyArMyw0IEBAIGNsZWFuOjoKIAogT0JKUy0kKENPTkZJR19W VkNfREVDT0RFUikgICAgICAgICAgKz0gIHZ2Yy92dmNkZWMubyAgICAgICAgICAgIFwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dmMvdnZjX2RhdGEubyAgICAgICAg ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnZjL3Z2Y19wcy5v ICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX3BzLmMgYi9saWJh dmNvZGVjL3Z2Yy92dmNfcHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li43ZjFkOWY2ZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX3BzLmMK QEAgLTAsMCArMSwxMTUwIEBACisvKgorICogVlZDIHBhcmFtZXRlciBzZXQgcGFyc2VyCisgKgor ICogQ29weXJpZ2h0IChDKSAyMDIzIE51byBNaQorICogQ29weXJpZ2h0IChDKSAyMDIyIFh1IE11 CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisjaW5jbHVkZSAibGliYXZj b2RlYy9jYnNfaDI2Ni5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgorI2luY2x1 ZGUgImxpYmF2Y29kZWMvcmVmc3RydWN0LmgiCisjaW5jbHVkZSAidnZjX2RhdGEuaCIKKyNpbmNs dWRlICJ2dmNfcHMuaCIKKyNpbmNsdWRlICJ2dmNkZWMuaCIKKworc3RhdGljIGludCBzcHNfbWFw X3BpeGVsX2Zvcm1hdChWVkNTUFMgKnNwcywgdm9pZCAqbG9nX2N0eCkKK3sKKyAgICBjb25zdCBI MjY2UmF3U1BTICpyID0gc3BzLT5yOworICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVz YzsKKworICAgIHN3aXRjaCAoc3BzLT5iaXRfZGVwdGgpIHsKKyAgICBjYXNlIDg6CisgICAgICAg IGlmIChyLT5zcHNfY2hyb21hX2Zvcm1hdF9pZGMgPT0gMCkgc3BzLT5waXhfZm10ID0gQVZfUElY X0ZNVF9HUkFZODsKKyAgICAgICAgaWYgKHItPnNwc19jaHJvbWFfZm9ybWF0X2lkYyA9PSAxKSBz cHMtPnBpeF9mbXQgPSBBVl9QSVhfRk1UX1lVVjQyMFA7CisgICAgICAgIGlmIChyLT5zcHNfY2hy b21hX2Zvcm1hdF9pZGMgPT0gMikgc3BzLT5waXhfZm10ID0gQVZfUElYX0ZNVF9ZVVY0MjJQOwor ICAgICAgICBpZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRfaWRjID09IDMpIHNwcy0+cGl4X2ZtdCA9 IEFWX1BJWF9GTVRfWVVWNDQ0UDsKKyAgICAgICBicmVhazsKKyAgICBjYXNlIDEwOgorICAgICAg ICBpZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRfaWRjID09IDApIHNwcy0+cGl4X2ZtdCA9IEFWX1BJ WF9GTVRfR1JBWTEwOworICAgICAgICBpZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRfaWRjID09IDEp IHNwcy0+cGl4X2ZtdCA9IEFWX1BJWF9GTVRfWVVWNDIwUDEwOworICAgICAgICBpZiAoci0+c3Bz X2Nocm9tYV9mb3JtYXRfaWRjID09IDIpIHNwcy0+cGl4X2ZtdCA9IEFWX1BJWF9GTVRfWVVWNDIy UDEwOworICAgICAgICBpZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRfaWRjID09IDMpIHNwcy0+cGl4 X2ZtdCA9IEFWX1BJWF9GTVRfWVVWNDQ0UDEwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDEy OgorICAgICAgICBpZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRfaWRjID09IDApIHNwcy0+cGl4X2Zt dCA9IEFWX1BJWF9GTVRfR1JBWTEyOworICAgICAgICBpZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRf aWRjID09IDEpIHNwcy0+cGl4X2ZtdCA9IEFWX1BJWF9GTVRfWVVWNDIwUDEyOworICAgICAgICBp ZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRfaWRjID09IDIpIHNwcy0+cGl4X2ZtdCA9IEFWX1BJWF9G TVRfWVVWNDIyUDEyOworICAgICAgICBpZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRfaWRjID09IDMp IHNwcy0+cGl4X2ZtdCA9IEFWX1BJWF9GTVRfWVVWNDQ0UDEyOworICAgICAgICBicmVhazsKKyAg ICBkZWZhdWx0OgorICAgICAgICBhdl9sb2cobG9nX2N0eCwgQVZfTE9HX0VSUk9SLAorICAgICAg ICAgICAgICAgIlRoZSBmb2xsb3dpbmcgYml0LWRlcHRocyBhcmUgY3VycmVudGx5IHNwZWNpZmll ZDogOCwgMTAsIDEyIGJpdHMsICIKKyAgICAgICAgICAgICAgICJjaHJvbWFfZm9ybWF0X2lkYyBp cyAlZCwgZGVwdGggaXMgJWRcbiIsCisgICAgICAgICAgICAgICByLT5zcHNfY2hyb21hX2Zvcm1h dF9pZGMsIHNwcy0+Yml0X2RlcHRoKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7CisgICAgfQorCisgICAgZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQoc3BzLT5waXhfZm10 KTsKKyAgICBpZiAoIWRlc2MpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisKKyAg ICBzcHMtPmhzaGlmdFswXSA9IHNwcy0+dnNoaWZ0WzBdID0gMDsKKyAgICBzcHMtPmhzaGlmdFsy XSA9IHNwcy0+aHNoaWZ0WzFdID0gZGVzYy0+bG9nMl9jaHJvbWFfdzsKKyAgICBzcHMtPnZzaGlm dFsyXSA9IHNwcy0+dnNoaWZ0WzFdID0gZGVzYy0+bG9nMl9jaHJvbWFfaDsKKworICAgIHNwcy0+ cGl4ZWxfc2hpZnQgPSBzcHMtPmJpdF9kZXB0aCA+IDg7CisKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBzcHNfYml0X2RlcHRoKFZWQ1NQUyAqc3BzLCB2b2lkICpsb2dfY3R4KQorewor ICAgIGNvbnN0IEgyNjZSYXdTUFMgKnIgPSBzcHMtPnI7CisKKyAgICBzcHMtPmJpdF9kZXB0aCA9 IHItPnNwc19iaXRkZXB0aF9taW51czggKyA4OworICAgIHNwcy0+cXBfYmRfb2Zmc2V0ID0gNiAq IChzcHMtPmJpdF9kZXB0aCAtIDgpOworICAgIHNwcy0+bG9nMl90cmFuc2Zvcm1fcmFuZ2UgPQor ICAgICAgICByLT5zcHNfZXh0ZW5kZWRfcHJlY2lzaW9uX2ZsYWcgPyBGRk1BWCgxNSwgRkZNSU4o MjAsIHNwcy0+Yml0X2RlcHRoICsgNikpIDogMTU7CisgICAgcmV0dXJuIHNwc19tYXBfcGl4ZWxf Zm9ybWF0KHNwcywgbG9nX2N0eCk7Cit9CisKK3N0YXRpYyBpbnQgc3BzX2Nocm9tYV9xcF90YWJs ZShWVkNTUFMgKnNwcykKK3sKKyAgICBjb25zdCBIMjY2UmF3U1BTICpyID0gc3BzLT5yOworICAg IGNvbnN0IGludCBudW1fcXBfdGFibGVzID0gci0+c3BzX3NhbWVfcXBfdGFibGVfZm9yX2Nocm9t YV9mbGFnID8KKyAgICAgICAgMSA6IChyLT5zcHNfam9pbnRfY2Jjcl9lbmFibGVkX2ZsYWcgPyAz IDogMik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9xcF90YWJsZXM7IGkrKykgewor ICAgICAgICBpbnQgbnVtX3BvaW50c19pbl9xcF90YWJsZTsKKyAgICAgICAgaW50OF90IHFwX2lu W1ZWQ19NQVhfUE9JTlRTX0lOX1FQX1RBQkxFXSwgcXBfb3V0W1ZWQ19NQVhfUE9JTlRTX0lOX1FQ X1RBQkxFXTsKKyAgICAgICAgdW5zaWduZWQgaW50IGRlbHRhX3FwX2luW1ZWQ19NQVhfUE9JTlRT X0lOX1FQX1RBQkxFXTsKKyAgICAgICAgaW50IG9mZiA9IHNwcy0+cXBfYmRfb2Zmc2V0OworCisg ICAgICAgIG51bV9wb2ludHNfaW5fcXBfdGFibGUgPSByLT5zcHNfbnVtX3BvaW50c19pbl9xcF90 YWJsZV9taW51czFbaV0gKyAxOworCisgICAgICAgIHFwX291dFswXSA9IHFwX2luWzBdID0gci0+ c3BzX3FwX3RhYmxlX3N0YXJ0X21pbnVzMjZbaV0gKyAyNjsKKyAgICAgICAgZm9yIChpbnQgaiA9 IDA7IGogPCBudW1fcG9pbnRzX2luX3FwX3RhYmxlOyBqKysgKSB7CisgICAgICAgICAgICBkZWx0 YV9xcF9pbltqXSA9IHItPnNwc19kZWx0YV9xcF9pbl92YWxfbWludXMxW2ldW2pdICsgMTsKKyAg ICAgICAgICAgIHFwX2luW2orMV0gPSBxcF9pbltqXSArIGRlbHRhX3FwX2luW2pdOworICAgICAg ICAgICAgcXBfb3V0W2orMV0gPSBxcF9vdXRbal0gKyAoci0+c3BzX2RlbHRhX3FwX2luX3ZhbF9t aW51czFbaV1bal0gXiByLT5zcHNfZGVsdGFfcXBfZGlmZl92YWxbaV1bal0pOworICAgICAgICB9 CisgICAgICAgIHNwcy0+Y2hyb21hX3FwX3RhYmxlW2ldW3FwX2luWzBdICsgb2ZmXSA9IHFwX291 dFswXTsKKyAgICAgICAgZm9yIChpbnQgayA9IHFwX2luWzBdIC0gMSArIG9mZjsgayA+PSAwOyBr LS0pCisgICAgICAgICAgICBzcHMtPmNocm9tYV9xcF90YWJsZVtpXVtrXSA9IGF2X2NsaXAoc3Bz LT5jaHJvbWFfcXBfdGFibGVbaV1baysxXS0xLCAtb2ZmLCA2Myk7CisKKyAgICAgICAgZm9yIChp bnQgaiAgPSAwOyBqIDwgbnVtX3BvaW50c19pbl9xcF90YWJsZTsgaisrKSB7CisgICAgICAgICAg ICBpbnQgc2ggPSBkZWx0YV9xcF9pbltqXSA+PiAxOworICAgICAgICAgICAgZm9yIChpbnQgayA9 IHFwX2luW2pdICsgMSArIG9mZiwgbSA9IDE7IGsgPD0gcXBfaW5baisxXSArIG9mZjsgaysrLCBt KyspIHsKKyAgICAgICAgICAgICAgICBzcHMtPmNocm9tYV9xcF90YWJsZVtpXVtrXSA9IHNwcy0+ Y2hyb21hX3FwX3RhYmxlW2ldW3FwX2luW2pdICsgb2ZmXSArCisgICAgICAgICAgICAgICAgICAg ICgocXBfb3V0W2orMV0gLSBxcF9vdXRbal0pICogbSArIHNoKSAvIGRlbHRhX3FwX2luW2pdOwor ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGsgPSBxcF9pbltudW1f cG9pbnRzX2luX3FwX3RhYmxlXSArIDEgKyBvZmY7IGsgPD0gNjMgKyBvZmY7IGsrKykKKyAgICAg ICAgICAgIHNwcy0+Y2hyb21hX3FwX3RhYmxlW2ldW2tdICA9IGF2X2NsaXAoc3BzLT5jaHJvbWFf cXBfdGFibGVbaV1bay0xXSArIDEsIC1zcHMtPnFwX2JkX29mZnNldCwgNjMpOworICAgIH0KKyAg ICBpZiAoci0+c3BzX3NhbWVfcXBfdGFibGVfZm9yX2Nocm9tYV9mbGFnKSB7CisgICAgICAgIG1l bWNweSgmc3BzLT5jaHJvbWFfcXBfdGFibGVbMV0sICZzcHMtPmNocm9tYV9xcF90YWJsZVswXSwg c2l6ZW9mKHNwcy0+Y2hyb21hX3FwX3RhYmxlWzBdKSk7CisgICAgICAgIG1lbWNweSgmc3BzLT5j aHJvbWFfcXBfdGFibGVbMl0sICZzcHMtPmNocm9tYV9xcF90YWJsZVswXSwgc2l6ZW9mKHNwcy0+ Y2hyb21hX3FwX3RhYmxlWzBdKSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIHNwc19wb2MoVlZDU1BTICpzcHMpCit7CisgICAgc3BzLT5tYXhfcGljX29yZGVyX2Nu dF9sc2IgPSAxIDw8IChzcHMtPnItPnNwc19sb2cyX21heF9waWNfb3JkZXJfY250X2xzYl9taW51 czQgKyA0KTsKK30KKworc3RhdGljIHZvaWQgc3BzX2ludGVyKFZWQ1NQUyAqc3BzKQoreworICAg IGNvbnN0IEgyNjZSYXdTUFMgKnIgPSBzcHMtPnI7CisKKyAgICBzcHMtPm1heF9udW1fbWVyZ2Vf Y2FuZCAgICAgPSA2IC0gci0+c3BzX3NpeF9taW51c19tYXhfbnVtX21lcmdlX2NhbmQ7CisgICAg c3BzLT5tYXhfbnVtX2liY19tZXJnZV9jYW5kID0gNiAtIHItPnNwc19zaXhfbWludXNfbWF4X251 bV9pYmNfbWVyZ2VfY2FuZDsKKworICAgIGlmIChzcHMtPnItPnNwc19ncG1fZW5hYmxlZF9mbGFn KSB7CisgICAgICAgIHNwcy0+bWF4X251bV9ncG1fbWVyZ2VfY2FuZCA9IDI7CisgICAgICAgIGlm IChzcHMtPm1heF9udW1fbWVyZ2VfY2FuZCA+PSAzKQorICAgICAgICAgICAgc3BzLT5tYXhfbnVt X2dwbV9tZXJnZV9jYW5kID0gc3BzLT5tYXhfbnVtX21lcmdlX2NhbmQgLSByLT5zcHNfbWF4X251 bV9tZXJnZV9jYW5kX21pbnVzX21heF9udW1fZ3BtX2NhbmQ7CisgICAgfQorCisgICAgc3BzLT5s b2cyX3BhcmFsbGVsX21lcmdlX2xldmVsID0gci0+c3BzX2xvZzJfcGFyYWxsZWxfbWVyZ2VfbGV2 ZWxfbWludXMyICsgMjsKK30KKworc3RhdGljIHZvaWQgc3BzX3BhcnRpdGlvbl9jb25zdHJhaW50 cyhWVkNTUFMqIHNwcykKK3sKKyAgICBjb25zdCBIMjY2UmF3U1BTICpyID0gc3BzLT5yOworCisg ICAgc3BzLT5jdGJfbG9nMl9zaXplX3kgICAgPSByLT5zcHNfbG9nMl9jdHVfc2l6ZV9taW51czUg KyA1OworICAgIHNwcy0+Y3RiX3NpemVfeSAgICAgICAgID0gMSA8PCBzcHMtPmN0Yl9sb2cyX3Np emVfeTsKKyAgICBzcHMtPm1pbl9jYl9sb2cyX3NpemVfeSA9IHItPnNwc19sb2cyX21pbl9sdW1h X2NvZGluZ19ibG9ja19zaXplX21pbnVzMiArIDI7CisgICAgc3BzLT5taW5fY2Jfc2l6ZV95ICAg ICAgPSAxIDw8IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgIHNwcy0+bWF4X3RiX3NpemVf eSAgICAgID0gMSA8PCAoci0+c3BzX21heF9sdW1hX3RyYW5zZm9ybV9zaXplXzY0X2ZsYWcgPyA2 IDogNSk7CisgICAgc3BzLT5tYXhfdHNfc2l6ZSAgICAgICAgPSAxIDw8IChyLT5zcHNfbG9nMl90 cmFuc2Zvcm1fc2tpcF9tYXhfc2l6ZV9taW51czIgKyAyKTsKK30KKworc3RhdGljIHZvaWQgc3Bz X2xhZGYoVlZDU1BTKiBzcHMpCit7CisgICAgY29uc3QgSDI2NlJhd1NQUyAqciA9IHNwcy0+cjsK KworICAgIGlmIChyLT5zcHNfbGFkZl9lbmFibGVkX2ZsYWcpIHsKKyAgICAgICAgc3BzLT5udW1f bGFkZl9pbnRlcnZhbHMgPSByLT5zcHNfbnVtX2xhZGZfaW50ZXJ2YWxzX21pbnVzMiArIDI7Cisg ICAgICAgIHNwcy0+bGFkZl9pbnRlcnZhbF9sb3dlcl9ib3VuZFswXSA9IDA7CisgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgc3BzLT5udW1fbGFkZl9pbnRlcnZhbHMgLSAxOyBpKyspIHsKKyAg ICAgICAgICAgIHNwcy0+bGFkZl9pbnRlcnZhbF9sb3dlcl9ib3VuZFtpICsgMV0gPQorICAgICAg ICAgICAgICAgIHNwcy0+bGFkZl9pbnRlcnZhbF9sb3dlcl9ib3VuZFtpXSArIHItPnNwc19sYWRm X2RlbHRhX3RocmVzaG9sZF9taW51czFbaV0gKyAxOworICAgICAgICB9CisgICAgfQorfQorCitz dGF0aWMgaW50IHNwc19kZXJpdmUoVlZDU1BTICpzcHMsIHZvaWQgKmxvZ19jdHgpCit7CisgICAg aW50IHJldDsKKyAgICBjb25zdCBIMjY2UmF3U1BTICpyID0gc3BzLT5yOworCisgICAgc3BzLT53 aWR0aCAgPSByLT5zcHNfcGljX3dpZHRoX21heF9pbl9sdW1hX3NhbXBsZXM7CisgICAgc3BzLT5o ZWlnaHQgPSByLT5zcHNfcGljX2hlaWdodF9tYXhfaW5fbHVtYV9zYW1wbGVzOworCisgICAgcmV0 ID0gc3BzX2JpdF9kZXB0aChzcHMsIGxvZ19jdHgpOworICAgIGlmIChyZXQgPCAwKQorICAgICAg ICByZXR1cm4gcmV0OworICAgIHNwc19wb2Moc3BzKTsKKyAgICBzcHNfaW50ZXIoc3BzKTsKKyAg ICBzcHNfcGFydGl0aW9uX2NvbnN0cmFpbnRzKHNwcyk7CisgICAgc3BzX2xhZGYoc3BzKTsKKyAg ICBpZiAoci0+c3BzX2Nocm9tYV9mb3JtYXRfaWRjICE9IDApCisgICAgICAgIHNwc19jaHJvbWFf cXBfdGFibGUoc3BzKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzcHNfZnJl ZShGRlJlZlN0cnVjdE9wYXF1ZSBvcGFxdWUsIHZvaWQgKm9iaikKK3sKKyAgICBWVkNTUFMgKnNw cyA9IG9iajsKKyAgICBmZl9yZWZzdHJ1Y3RfdW5yZWYoJnNwcy0+cik7Cit9CisKK3N0YXRpYyBj b25zdCBWVkNTUFMgKnNwc19hbGxvYyhjb25zdCBIMjY2UmF3U1BTICpyc3BzLCB2b2lkICpsb2df Y3R4KQoreworICAgIGludCByZXQ7CisgICAgVlZDU1BTICpzcHMgPSBmZl9yZWZzdHJ1Y3RfYWxs b2NfZXh0KHNpemVvZigqc3BzKSwgMCwgTlVMTCwgc3BzX2ZyZWUpOworCisgICAgaWYgKCFzcHMp CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmZfcmVmc3RydWN0X3JlcGxhY2UoJnNwcy0+ ciwgcnNwcyk7CisKKyAgICByZXQgPSBzcHNfZGVyaXZlKHNwcywgbG9nX2N0eCk7CisgICAgaWYg KHJldCA8IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIHJldHVybiBzcHM7CisKK2ZhaWw6 CisgICAgZmZfcmVmc3RydWN0X3VucmVmKCZzcHMpOworICAgIHJldHVybiBOVUxMOworfQorCitz dGF0aWMgaW50IGRlY29kZV9zcHMoVlZDUGFyYW1TZXRzICpwcywgY29uc3QgSDI2NlJhd1NQUyAq cnNwcywgdm9pZCAqbG9nX2N0eCkKK3sKKyAgICBjb25zdCBpbnQgc3BzX2lkICAgICAgICA9IHJz cHMtPnNwc19zZXFfcGFyYW1ldGVyX3NldF9pZDsKKyAgICBjb25zdCBWVkNTUFMgKm9sZF9zcHMg ICA9IHBzLT5zcHNfbGlzdFtzcHNfaWRdOworICAgIGNvbnN0IFZWQ1NQUyAqc3BzOworCisgICAg aWYgKG9sZF9zcHMgJiYgb2xkX3Nwcy0+ciA9PSByc3BzKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIHNwcyA9IHNwc19hbGxvYyhyc3BzLCBsb2dfY3R4KTsKKyAgICBpZiAoIXNwcykKKyAgICAg ICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIGZmX3JlZnN0cnVjdF91bnJlZigmcHMt PnNwc19saXN0W3Nwc19pZF0pOworICAgIHBzLT5zcHNfbGlzdFtzcHNfaWRdID0gc3BzOworCisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHBwc19jaHJvbWFfcXBfb2Zmc2V0KFZWQ1BQ UyAqcHBzKQoreworICAgIHBwcy0+Y2hyb21hX3FwX29mZnNldFtDQiAtIDFdICAgPSBwcHMtPnIt PnBwc19jYl9xcF9vZmZzZXQ7CisgICAgcHBzLT5jaHJvbWFfcXBfb2Zmc2V0W0NSIC0gMV0gICA9 IHBwcy0+ci0+cHBzX2NyX3FwX29mZnNldDsKKyAgICBwcHMtPmNocm9tYV9xcF9vZmZzZXRbSkNC Q1IgLSAxXT0gcHBzLT5yLT5wcHNfam9pbnRfY2Jjcl9xcF9vZmZzZXRfdmFsdWU7CisgICAgZm9y IChpbnQgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgcHBzLT5jaHJvbWFfcXBfb2Zmc2V0 X2xpc3RbaV1bQ0IgLSAxXSAgID0gcHBzLT5yLT5wcHNfY2JfcXBfb2Zmc2V0X2xpc3RbaV07Cisg ICAgICAgIHBwcy0+Y2hyb21hX3FwX29mZnNldF9saXN0W2ldW0NSIC0gMV0gICA9IHBwcy0+ci0+ cHBzX2NyX3FwX29mZnNldF9saXN0W2ldOworICAgICAgICBwcHMtPmNocm9tYV9xcF9vZmZzZXRf bGlzdFtpXVtKQ0JDUiAtIDFdPSBwcHMtPnItPnBwc19qb2ludF9jYmNyX3FwX29mZnNldF9saXN0 W2ldOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcHBzX3dpZHRoX2hlaWdodChWVkNQUFMgKnBw cywgY29uc3QgVlZDU1BTICpzcHMpCit7CisgICAgY29uc3QgSDI2NlJhd1BQUyAqciA9IHBwcy0+ cjsKKworICAgIHBwcy0+d2lkdGggICAgICAgICAgPSByLT5wcHNfcGljX3dpZHRoX2luX2x1bWFf c2FtcGxlczsKKyAgICBwcHMtPmhlaWdodCAgICAgICAgID0gci0+cHBzX3BpY19oZWlnaHRfaW5f bHVtYV9zYW1wbGVzOworCisgICAgcHBzLT5jdGJfd2lkdGggICAgICA9IEFWX0NFSUxfUlNISUZU KHBwcy0+d2lkdGgsICBzcHMtPmN0Yl9sb2cyX3NpemVfeSk7CisgICAgcHBzLT5jdGJfaGVpZ2h0 ICAgICA9IEFWX0NFSUxfUlNISUZUKHBwcy0+aGVpZ2h0LCBzcHMtPmN0Yl9sb2cyX3NpemVfeSk7 CisgICAgcHBzLT5jdGJfY291bnQgICAgICA9IHBwcy0+Y3RiX3dpZHRoICogcHBzLT5jdGJfaGVp Z2h0OworCisgICAgcHBzLT5taW5fY2Jfd2lkdGggICA9IHBwcy0+d2lkdGggID4+IHNwcy0+bWlu X2NiX2xvZzJfc2l6ZV95OworICAgIHBwcy0+bWluX2NiX2hlaWdodCAgPSBwcHMtPmhlaWdodCA+ PiBzcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKworICAgIHBwcy0+bWluX3B1X3dpZHRoICAgPSBw cHMtPndpZHRoICA+PiBNSU5fUFVfTE9HMjsKKyAgICBwcHMtPm1pbl9wdV9oZWlnaHQgID0gcHBz LT5oZWlnaHQgPj4gTUlOX1BVX0xPRzI7CisgICAgcHBzLT5taW5fdHVfd2lkdGggICA9IHBwcy0+ d2lkdGggID4+IE1JTl9UVV9MT0cyOworICAgIHBwcy0+bWluX3R1X2hlaWdodCAgPSBwcHMtPmhl aWdodCA+PiBNSU5fVFVfTE9HMjsKKworICAgIHBwcy0+d2lkdGgzMiAgICAgICAgPSBBVl9DRUlM X1JTSElGVChwcHMtPndpZHRoLCAgNSk7CisgICAgcHBzLT5oZWlnaHQzMiAgICAgICA9IEFWX0NF SUxfUlNISUZUKHBwcy0+aGVpZ2h0LCA1KTsKKyAgICBwcHMtPndpZHRoNjQgICAgICAgID0gQVZf Q0VJTF9SU0hJRlQocHBzLT53aWR0aCwgIDYpOworICAgIHBwcy0+aGVpZ2h0NjQgICAgICAgPSBB Vl9DRUlMX1JTSElGVChwcHMtPmhlaWdodCwgNik7Cit9CisKK3N0YXRpYyBpbnQgcHBzX2JkKFZW Q1BQUyAqcHBzKQoreworICAgIGNvbnN0IEgyNjZSYXdQUFMgKnIgPSBwcHMtPnI7CisKKyAgICBw cHMtPmNvbF9iZCAgICAgICAgPSBhdl9jYWxsb2Moci0+bnVtX3RpbGVfY29sdW1ucyAgKyAxLCBz aXplb2YoKnBwcy0+Y29sX2JkKSk7CisgICAgcHBzLT5yb3dfYmQgICAgICAgID0gYXZfY2FsbG9j KHItPm51bV90aWxlX3Jvd3MgICsgMSwgICAgc2l6ZW9mKCpwcHMtPnJvd19iZCkpOworICAgIHBw cy0+Y3RiX3RvX2NvbF9iZCA9IGF2X2NhbGxvYyhwcHMtPmN0Yl93aWR0aCAgKyAxLCAgICAgIHNp emVvZigqcHBzLT5jdGJfdG9fY29sX2JkKSk7CisgICAgcHBzLT5jdGJfdG9fcm93X2JkID0gYXZf Y2FsbG9jKHBwcy0+Y3RiX2hlaWdodCArIDEsICAgICAgc2l6ZW9mKCpwcHMtPmN0Yl90b19jb2xf YmQpKTsKKyAgICBpZiAoIXBwcy0+Y29sX2JkIHx8ICFwcHMtPnJvd19iZCB8fCAhcHBzLT5jdGJf dG9fY29sX2JkIHx8ICFwcHMtPmN0Yl90b19yb3dfYmQpCisgICAgICAgIHJldHVybiBBVkVSUk9S KEVOT01FTSk7CisKKyAgICBmb3IgKGludCBpID0gMCwgaiA9IDA7IGkgPCByLT5udW1fdGlsZV9j b2x1bW5zOyBpKyspIHsKKyAgICAgICAgcHBzLT5jb2xfYmRbaV0gPSBqOworICAgICAgICBqICs9 IHItPmNvbF93aWR0aF92YWxbaV07CisgICAgICAgIGZvciAoaW50IGsgPSBwcHMtPmNvbF9iZFtp XTsgayA8IGo7IGsrKykKKyAgICAgICAgICAgIHBwcy0+Y3RiX3RvX2NvbF9iZFtrXSA9IHBwcy0+ Y29sX2JkW2ldOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwLCBqID0gMDsgaSA8IHItPm51 bV90aWxlX3Jvd3M7IGkrKykgeworICAgICAgICBwcHMtPnJvd19iZFtpXSA9IGo7CisgICAgICAg IGogKz0gci0+cm93X2hlaWdodF92YWxbaV07CisgICAgICAgIGZvciAoaW50IGsgPSBwcHMtPnJv d19iZFtpXTsgayA8IGo7IGsrKykKKyAgICAgICAgICAgIHBwcy0+Y3RiX3RvX3Jvd19iZFtrXSA9 IHBwcy0+cm93X2JkW2ldOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50 IG5leHRfdGlsZV9pZHgoaW50IHRpbGVfaWR4LCBjb25zdCBpbnQgaSwgY29uc3QgSDI2NlJhd1BQ UyAqcikKK3sKKyAgICBpZiAoci0+cHBzX3RpbGVfaWR4X2RlbHRhX3ByZXNlbnRfZmxhZykgewor ICAgICAgICB0aWxlX2lkeCArPSByLT5wcHNfdGlsZV9pZHhfZGVsdGFfdmFsW2ldOworICAgIH0g ZWxzZSB7CisgICAgICAgIHRpbGVfaWR4ICs9IHItPnBwc19zbGljZV93aWR0aF9pbl90aWxlc19t aW51czFbaV0gKyAxOworICAgICAgICBpZiAodGlsZV9pZHggJSByLT5udW1fdGlsZV9jb2x1bW5z ID09IDApCisgICAgICAgICAgICB0aWxlX2lkeCArPSAoci0+cHBzX3NsaWNlX2hlaWdodF9pbl90 aWxlc19taW51czFbaV0pICogci0+bnVtX3RpbGVfY29sdW1uczsKKyAgICB9CisgICAgcmV0dXJu IHRpbGVfaWR4OworfQorCitzdGF0aWMgdm9pZCB0aWxlX3h5KGludCAqdGlsZV94LCBpbnQgKnRp bGVfeSwgY29uc3QgaW50IHRpbGVfaWR4LCBjb25zdCBWVkNQUFMgKnBwcykKK3sKKyAgICAqdGls ZV94ID0gdGlsZV9pZHggJSBwcHMtPnItPm51bV90aWxlX2NvbHVtbnM7CisgICAgKnRpbGVfeSA9 IHRpbGVfaWR4IC8gcHBzLT5yLT5udW1fdGlsZV9jb2x1bW5zOworfQorCitzdGF0aWMgdm9pZCBj dHVfeHkoaW50ICpjdHVfeCwgaW50ICpjdHVfeSwgY29uc3QgaW50IHRpbGVfeCwgY29uc3QgaW50 IHRpbGVfeSwgY29uc3QgVlZDUFBTICpwcHMpCit7CisgICAgKmN0dV94ID0gcHBzLT5jb2xfYmRb dGlsZV94XTsKKyAgICAqY3R1X3kgPSBwcHMtPnJvd19iZFt0aWxlX3ldOworfQorCitzdGF0aWMg aW50IGN0dV9ycyhjb25zdCBpbnQgY3R1X3gsIGNvbnN0IGludCBjdHVfeSwgY29uc3QgVlZDUFBT ICpwcHMpCit7CisgICAgcmV0dXJuIHBwcy0+Y3RiX3dpZHRoICogY3R1X3kgKyBjdHVfeDsKK30K Kworc3RhdGljIGludCBwcHNfYWRkX2N0dXMoVlZDUFBTICpwcHMsIGludCAqb2ZmLCBjb25zdCBp bnQgY3R1X3gsIGNvbnN0IGludCBjdHVfeSwKKyAgICBjb25zdCBpbnQgdywgY29uc3QgaW50IGgp Cit7CisgICAgaW50IHN0YXJ0ID0gKm9mZjsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkr KykgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHc7IHgrKykgeworICAgICAgICAgICAg cHBzLT5jdGJfYWRkcl9pbl9zbGljZVsqb2ZmXSA9IGN0dV9ycyhjdHVfeCArIHgsIGN0dV95ICsg eSwgcHBzKTsKKyAgICAgICAgICAgICgqb2ZmKSsrOworICAgICAgICB9CisgICAgfQorICAgIHJl dHVybiAqb2ZmIC0gc3RhcnQ7Cit9CisKK3N0YXRpYyBpbnQgcHBzX29uZV90aWxlX3NsaWNlcyhW VkNQUFMgKnBwcywgY29uc3QgaW50IHRpbGVfaWR4LCBpbnQgaSwgaW50ICpvZmYpCit7CisgICAg Y29uc3QgSDI2NlJhd1BQUyAqciA9IHBwcy0+cjsKKyAgICBpbnQgY3R1X3gsIGN0dV95LCBjdHVf eV9lbmQsIHRpbGVfeCwgdGlsZV95OworCisgICAgdGlsZV94eSgmdGlsZV94LCAmdGlsZV95LCB0 aWxlX2lkeCwgcHBzKTsKKyAgICBjdHVfeHkoJmN0dV94LCAmY3R1X3ksIHRpbGVfeCwgdGlsZV95 LCBwcHMpOworICAgIGN0dV95X2VuZCA9IGN0dV95ICsgci0+cm93X2hlaWdodF92YWxbdGlsZV95 XTsKKyAgICB3aGlsZSAoY3R1X3kgPCBjdHVfeV9lbmQpIHsKKyAgICAgICAgcHBzLT5zbGljZV9z dGFydF9vZmZzZXRbaV0gPSAqb2ZmOworICAgICAgICBwcHMtPm51bV9jdHVzX2luX3NsaWNlW2ld ID0gcHBzX2FkZF9jdHVzKHBwcywgb2ZmLCBjdHVfeCwgY3R1X3ksCisgICAgICAgICAgICByLT5j b2xfd2lkdGhfdmFsW3RpbGVfeF0sIHItPnNsaWNlX2hlaWdodF9pbl9jdHVzW2ldKTsKKyAgICAg ICAgY3R1X3kgKz0gci0+c2xpY2VfaGVpZ2h0X2luX2N0dXNbaSsrXTsKKyAgICB9CisgICAgaS0t OworICAgIHJldHVybiBpOworfQorCitzdGF0aWMgdm9pZCBwcHNfbXVsdGlfdGlsZXNfc2xpY2Uo VlZDUFBTICpwcHMsIGNvbnN0IGludCB0aWxlX2lkeCwgY29uc3QgaW50IGksIGludCAqb2ZmKQor eworICAgIGNvbnN0IEgyNjZSYXdQUFMgKnIgPSBwcHMtPnI7CisgICAgaW50IGN0dV94LCBjdHVf eSx0aWxlX3gsIHRpbGVfeTsKKworICAgIHRpbGVfeHkoJnRpbGVfeCwgJnRpbGVfeSwgdGlsZV9p ZHgsIHBwcyk7CisgICAgcHBzLT5zbGljZV9zdGFydF9vZmZzZXRbaV0gPSAqb2ZmOworICAgIHBw cy0+bnVtX2N0dXNfaW5fc2xpY2VbaV0gPSAwOworICAgIGZvciAoaW50IHR5ID0gdGlsZV95OyB0 eSA8PSB0aWxlX3kgKyByLT5wcHNfc2xpY2VfaGVpZ2h0X2luX3RpbGVzX21pbnVzMVtpXTsgdHkr KykgeworICAgICAgICBmb3IgKGludCB0eCA9IHRpbGVfeDsgdHggPD0gdGlsZV94ICsgci0+cHBz X3NsaWNlX3dpZHRoX2luX3RpbGVzX21pbnVzMVtpXTsgdHgrKykgeworICAgICAgICAgICAgY3R1 X3h5KCZjdHVfeCwgJmN0dV95LCB0eCwgdHksIHBwcyk7CisgICAgICAgICAgICBwcHMtPm51bV9j dHVzX2luX3NsaWNlW2ldICs9IHBwc19hZGRfY3R1cyhwcHMsIG9mZiwgY3R1X3gsIGN0dV95LAor ICAgICAgICAgICAgICAgIHItPmNvbF93aWR0aF92YWxbdHhdLCByLT5yb3dfaGVpZ2h0X3ZhbFt0 eV0pOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwcHNfcmVjdF9zbGljZShW VkNQUFMqIHBwcykKK3sKKyAgICBjb25zdCBIMjY2UmF3UFBTKiByID0gcHBzLT5yOworICAgIGlu dCB0aWxlX2lkeCA9IDAsIG9mZiA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHItPnBw c19udW1fc2xpY2VzX2luX3BpY19taW51czEgKyAxOyBpKyspIHsKKyAgICAgICAgaWYgKCFyLT5w cHNfc2xpY2Vfd2lkdGhfaW5fdGlsZXNfbWludXMxW2ldICYmCisgICAgICAgICAgICAhci0+cHBz X3NsaWNlX2hlaWdodF9pbl90aWxlc19taW51czFbaV0pIHsKKyAgICAgICAgICAgIGkgPSBwcHNf b25lX3RpbGVfc2xpY2VzKHBwcywgdGlsZV9pZHgsIGksICZvZmYpOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgcHBzX211bHRpX3RpbGVzX3NsaWNlKHBwcywgdGlsZV9pZHgsIGksICZv ZmYpOworCisgICAgICAgIH0KKyAgICAgICAgdGlsZV9pZHggPSBuZXh0X3RpbGVfaWR4KHRpbGVf aWR4LCBpLCByKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHBwc19ub19yZWN0X3NsaWNlKFZW Q1BQUyogcHBzKQoreworICAgIGNvbnN0IEgyNjZSYXdQUFMqIHIgPSBwcHMtPnI7CisgICAgaW50 IGN0dV94LCBjdHVfeSwgb2ZmID0gMDsKKworICAgIGZvciAoaW50IHRpbGVfeSA9IDA7IHRpbGVf eSA8IHItPm51bV90aWxlX3Jvd3M7IHRpbGVfeSsrKSB7CisgICAgICAgIGZvciAoaW50IHRpbGVf eCA9IDA7IHRpbGVfeCA8IHItPm51bV90aWxlX2NvbHVtbnM7IHRpbGVfeCsrKSB7CisgICAgICAg ICAgICBjdHVfeHkoJmN0dV94LCAmY3R1X3ksIHRpbGVfeCwgdGlsZV95LCBwcHMpOworICAgICAg ICAgICAgcHBzX2FkZF9jdHVzKHBwcywgJm9mZiwgY3R1X3gsIGN0dV95LCByLT5jb2xfd2lkdGhf dmFsW3RpbGVfeF0sIHItPnJvd19oZWlnaHRfdmFsW3RpbGVfeV0pOworICAgICAgICB9CisgICAg fQorfQorCitzdGF0aWMgaW50IHBwc19zbGljZV9tYXAoVlZDUFBTICpwcHMpCit7CisgICAgcHBz LT5jdGJfYWRkcl9pbl9zbGljZSA9IGF2X2NhbGxvYyhwcHMtPmN0Yl9jb3VudCwgc2l6ZW9mKCpw cHMtPmN0Yl9hZGRyX2luX3NsaWNlKSk7CisgICAgaWYgKCFwcHMtPmN0Yl9hZGRyX2luX3NsaWNl KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgaWYgKHBwcy0+ci0+cHBz X3JlY3Rfc2xpY2VfZmxhZykKKyAgICAgICAgcHBzX3JlY3Rfc2xpY2UocHBzKTsKKyAgICBlbHNl CisgICAgICAgIHBwc19ub19yZWN0X3NsaWNlKHBwcyk7CisKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgcHBzX3JlZl93cmFwYXJvdW5kX29mZnNldChWVkNQUFMgKnBwcywgY29uc3Qg VlZDU1BTICpzcHMpCit7CisgICAgY29uc3QgSDI2NlJhd1BQUyAqciA9IHBwcy0+cjsKKworICAg IGlmIChyLT5wcHNfcmVmX3dyYXBhcm91bmRfZW5hYmxlZF9mbGFnKQorICAgICAgICBwcHMtPnJl Zl93cmFwYXJvdW5kX29mZnNldCA9IChwcHMtPndpZHRoIC8gc3BzLT5taW5fY2Jfc2l6ZV95KSAt IHItPnBwc19waWNfd2lkdGhfbWludXNfd3JhcGFyb3VuZF9vZmZzZXQ7Cit9CisKK3N0YXRpYyBp bnQgcHBzX2Rlcml2ZShWVkNQUFMgKnBwcywgY29uc3QgVlZDU1BTICpzcHMpCit7CisgICAgaW50 IHJldDsKKworICAgIHBwc19jaHJvbWFfcXBfb2Zmc2V0KHBwcyk7CisgICAgcHBzX3dpZHRoX2hl aWdodChwcHMsIHNwcyk7CisKKyAgICByZXQgPSBwcHNfYmQocHBzKTsKKyAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldCA9IHBwc19zbGljZV9tYXAocHBzKTsK KyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHBwc19yZWZfd3Jh cGFyb3VuZF9vZmZzZXQocHBzLCBzcHMpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIHBwc19mcmVlKEZGUmVmU3RydWN0T3BhcXVlIG9wYXF1ZSwgdm9pZCAqb2JqKQoreworICAg IFZWQ1BQUyAqcHBzID0gb2JqOworCisgICAgZmZfcmVmc3RydWN0X3VucmVmKCZwcHMtPnIpOwor CisgICAgYXZfZnJlZXAoJnBwcy0+Y29sX2JkKTsKKyAgICBhdl9mcmVlcCgmcHBzLT5yb3dfYmQp OworICAgIGF2X2ZyZWVwKCZwcHMtPmN0Yl90b19jb2xfYmQpOworICAgIGF2X2ZyZWVwKCZwcHMt PmN0Yl90b19yb3dfYmQpOworICAgIGF2X2ZyZWVwKCZwcHMtPmN0Yl9hZGRyX2luX3NsaWNlKTsK K30KKworc3RhdGljIGNvbnN0IFZWQ1BQUyAqcHBzX2FsbG9jKGNvbnN0IEgyNjZSYXdQUFMgKnJw cHMsIGNvbnN0IFZWQ1NQUyAqc3BzKQoreworICAgIGludCByZXQ7CisgICAgVlZDUFBTICpwcHMg PSBmZl9yZWZzdHJ1Y3RfYWxsb2NfZXh0KHNpemVvZigqcHBzKSwgMCwgTlVMTCwgcHBzX2ZyZWUp OworCisgICAgaWYgKCFwcHMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmZfcmVmc3Ry dWN0X3JlcGxhY2UoJnBwcy0+ciwgcnBwcyk7CisKKyAgICByZXQgPSBwcHNfZGVyaXZlKHBwcywg c3BzKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgcmV0dXJu IHBwczsKKworZmFpbDoKKyAgICBmZl9yZWZzdHJ1Y3RfdW5yZWYoJnBwcyk7CisgICAgcmV0dXJu IE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgZGVjb2RlX3BwcyhWVkNQYXJhbVNldHMgKnBzLCBjb25z dCBIMjY2UmF3UFBTICpycHBzKQoreworICAgIGludCByZXQgICAgICAgICAgICAgICAgID0gMDsK KyAgICBjb25zdCBpbnQgcHBzX2lkICAgICAgICA9IHJwcHMtPnBwc19waWNfcGFyYW1ldGVyX3Nl dF9pZDsKKyAgICBjb25zdCBpbnQgc3BzX2lkICAgICAgICA9IHJwcHMtPnBwc19zZXFfcGFyYW1l dGVyX3NldF9pZDsKKyAgICBjb25zdCBWVkNQUFMgKm9sZF9wcHMgICA9IHBzLT5wcHNfbGlzdFtw cHNfaWRdOworICAgIGNvbnN0IFZWQ1BQUyAqcHBzOworCisgICAgaWYgKG9sZF9wcHMgJiYgb2xk X3Bwcy0+ciA9PSBycHBzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHBwcyA9IHBwc19hbGxv YyhycHBzLCBwcy0+c3BzX2xpc3Rbc3BzX2lkXSk7CisgICAgaWYgKCFwcHMpCisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBmZl9yZWZzdHJ1Y3RfdW5yZWYoJnBzLT5wcHNf bGlzdFtwcHNfaWRdKTsKKyAgICBwcy0+cHBzX2xpc3RbcHBzX2lkXSA9IHBwczsKKworICAgIHJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZGVjb2RlX3BzKFZWQ1BhcmFtU2V0cyAqcHMsIGNv bnN0IENvZGVkQml0c3RyZWFtSDI2NkNvbnRleHQgKmgyNjYsIHZvaWQgKmxvZ19jdHgpCit7Cisg ICAgY29uc3QgSDI2NlJhd1BpY3R1cmVIZWFkZXIgKnBoID0gaDI2Ni0+cGg7CisgICAgY29uc3Qg SDI2NlJhd1BQUyAqcnBwczsKKyAgICBjb25zdCBIMjY2UmF3U1BTICpyc3BzOworICAgIGludCBy ZXQ7CisKKyAgICBpZiAoIXBoKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK KworICAgIHJwcHMgPSBoMjY2LT5wcHNbcGgtPnBoX3BpY19wYXJhbWV0ZXJfc2V0X2lkXTsKKyAg ICBpZiAoIXJwcHMpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAg cnNwcyA9IGgyNjYtPnNwc1tycHBzLT5wcHNfc2VxX3BhcmFtZXRlcl9zZXRfaWRdOworICAgIGlm ICghcnNwcykKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICByZXQg PSBkZWNvZGVfc3BzKHBzLCByc3BzLCBsb2dfY3R4KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAg ICAgcmV0dXJuIHJldDsKKworICAgIHJldCA9IGRlY29kZV9wcHMocHMsIHJwcHMpOworICAgIGlm IChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgcmV0dXJuIDA7Cit9CisKKyNk ZWZpbmUgV0VJR0hUX1RBQkxFKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHctPm5i X3dlaWdodHNbTCMjeF0gPSByLT5udW1fd2VpZ2h0c19sIyN4OyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCB3LT5uYl93ZWlnaHRzW0wjI3hdOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdy0+d2VpZ2h0X2ZsYWdb TCMjeF1bTFVNQV1baV0gICAgID0gci0+bHVtYV93ZWlnaHRfbCMjeCMjX2ZsYWdbaV07ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB3LT53ZWlnaHRfZmxhZ1tMIyN4XVtD SFJPTUFdW2ldICAgPSByLT5jaHJvbWFfd2VpZ2h0X2wjI3gjI19mbGFnW2ldOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHctPndlaWdodFtMIyN4XVtMVU1BXVtpXSAgICAg ICAgICA9IGRlbm9tW0xVTUFdICsgci0+ZGVsdGFfbHVtYV93ZWlnaHRfbCMjeFtpXTsgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgdy0+b2Zmc2V0W0wjI3hdW0xVTUFdW2ldICAgICAgICAgID0g ci0+bHVtYV9vZmZzZXRfbCMjeFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICBmb3IgKGludCBqID0gQ0I7IGogPD0gQ1I7IGorKykgeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICAgICB3LT53ZWlnaHRbTCMjeF1bal1baV0gICAgICAgICA9IGRlbm9tW0NIUk9NQV0g KyByLT5kZWx0YV9jaHJvbWFfd2VpZ2h0X2wjI3hbaV1baiAtIDFdOyAgICAgIFwKKyAgICAgICAg ICAgIHctPm9mZnNldFtMIyN4XVtqXVtpXSAgICAgICAgID0gMTI4ICsgci0+ZGVsdGFfY2hyb21h X29mZnNldF9sIyN4W2ldW2ogLSAxXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdy0+ b2Zmc2V0W0wjI3hdW2pdW2ldICAgICAgICAtPSAoMTI4ICogdy0+d2VpZ2h0W0wjI3hdW2pdW2ld KSA+PiB3LT5sb2cyX2Rlbm9tW0NIUk9NQV07ICAgICBcCisgICAgICAgICAgICB3LT5vZmZzZXRb TCMjeF1bal1baV0gICAgICAgICA9IGF2X2NsaXBfaW50cDIody0+b2Zmc2V0W0wjI3hdW2pdW2ld LCA3KTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisKK3N0YXRpYyB2b2lkIHByZWRfd2VpZ2h0X3RhYmxlKFByZWRXZWlnaHRU YWJsZSAqdywgY29uc3QgSDI2NlJhd1ByZWRXZWlnaHRUYWJsZSAqcikKK3sKKyAgICBpbnQgZGVu b21bMl07CisKKyAgICB3LT5sb2cyX2Rlbm9tW0xVTUFdID0gci0+bHVtYV9sb2cyX3dlaWdodF9k ZW5vbTsKKyAgICB3LT5sb2cyX2Rlbm9tW0NIUk9NQV0gPSB3LT5sb2cyX2Rlbm9tW0xVTUFdICsg ci0+ZGVsdGFfY2hyb21hX2xvZzJfd2VpZ2h0X2Rlbm9tOworICAgIGRlbm9tW0xVTUFdID0gMSA8 PCB3LT5sb2cyX2Rlbm9tW0xVTUFdOworICAgIGRlbm9tW0NIUk9NQV0gPSAxIDw8IHctPmxvZzJf ZGVub21bQ0hST01BXTsKKyAgICBXRUlHSFRfVEFCTEUoMCkKKyAgICBXRUlHSFRfVEFCTEUoMSkK K30KKworLy8gOC4zLjEgRGVjb2RpbmcgcHJvY2VzcyBmb3IgcGljdHVyZSBvcmRlciBjb3VudAor c3RhdGljIGludCBwaF9jb21wdXRlX3BvYyhjb25zdCBIMjY2UmF3UGljdHVyZUhlYWRlciAqcGgs IGNvbnN0IEgyNjZSYXdTUFMgKnNwcywgY29uc3QgaW50IHBvY190aWQwLCBjb25zdCBpbnQgaXNf Y2x2c3MpCit7CisgICAgY29uc3QgaW50IG1heF9wb2NfbHNiICAgICAgID0gMSA8PCAoc3BzLT5z cHNfbG9nMl9tYXhfcGljX29yZGVyX2NudF9sc2JfbWludXM0ICsgNCk7CisgICAgY29uc3QgaW50 IHByZXZfcG9jX2xzYiAgICAgID0gcG9jX3RpZDAgJSBtYXhfcG9jX2xzYjsKKyAgICBjb25zdCBp bnQgcHJldl9wb2NfbXNiICAgICAgPSBwb2NfdGlkMCAtIHByZXZfcG9jX2xzYjsKKyAgICBjb25z dCBpbnQgcG9jX2xzYiAgICAgICAgICAgPSBwaC0+cGhfcGljX29yZGVyX2NudF9sc2I7CisgICAg aW50IHBvY19tc2I7CisKKyAgICBpZiAocGgtPnBoX3BvY19tc2JfY3ljbGVfcHJlc2VudF9mbGFn KSB7CisgICAgICAgIHBvY19tc2IgPSBwaC0+cGhfcG9jX21zYl9jeWNsZV92YWwgKiBtYXhfcG9j X2xzYjsKKyAgICB9IGVsc2UgaWYgKGlzX2NsdnNzKSB7CisgICAgICAgIHBvY19tc2IgPSAwOwor ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwb2NfbHNiIDwgcHJldl9wb2NfbHNiICYmIHByZXZf cG9jX2xzYiAtIHBvY19sc2IgPj0gbWF4X3BvY19sc2IgLyAyKQorICAgICAgICAgICAgcG9jX21z YiA9IHByZXZfcG9jX21zYiArIG1heF9wb2NfbHNiOworICAgICAgICBlbHNlIGlmIChwb2NfbHNi ID4gcHJldl9wb2NfbHNiICYmIHBvY19sc2IgLSBwcmV2X3BvY19sc2IgPiBtYXhfcG9jX2xzYiAv IDIpCisgICAgICAgICAgICBwb2NfbXNiID0gcHJldl9wb2NfbXNiIC0gbWF4X3BvY19sc2I7Cisg ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvY19tc2IgPSBwcmV2X3BvY19tc2I7CisgICAgfQor CisgICAgcmV0dXJuIHBvY19tc2IgKyBwb2NfbHNiOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lu bGluZSB1aW50MTZfdCBsbWNzX2Rlcml2ZV9sdXRfc2FtcGxlKHVpbnQxNl90IHNhbXBsZSwKKyAg ICB1aW50MTZfdCAqcGl2b3QxLCB1aW50MTZfdCAqcGl2b3QyLCB1aW50MTZfdCAqc2NhbGVfY29l ZmYsIGNvbnN0IGludCBpZHgsIGNvbnN0IGludCBtYXgpCit7CisgICAgY29uc3QgaW50IGx1dF9z YW1wbGUgPQorICAgICAgICBwaXZvdDFbaWR4XSArICgoc2NhbGVfY29lZmZbaWR4XSAqIChzYW1w bGUgLSBwaXZvdDJbaWR4XSkgKyAoMTw8IDEwKSkgPj4gMTEpOworICAgIHJldHVybiBhdl9jbGlw KGx1dF9zYW1wbGUsIDAsIG1heCAtIDEpOworfQorCisvLzguOC4yLjIgSW52ZXJzZSBtYXBwaW5n IHByb2Nlc3MgZm9yIGEgbHVtYSBzYW1wbGUKK3N0YXRpYyBpbnQgbG1jc19kZXJpdmVfbHV0KFZW Q0xNQ1MgKmxtY3MsIGNvbnN0IEgyNjZSYXdBUFMgKnJsbWNzLCBjb25zdCBIMjY2UmF3U1BTICpz cHMpCit7CisgICAgY29uc3QgaW50IGJpdF9kZXB0aCA9IChzcHMtPnNwc19iaXRkZXB0aF9taW51 czggKyA4KTsKKyAgICBjb25zdCBpbnQgbWF4ICAgICAgID0gKDEgPDwgYml0X2RlcHRoKTsKKyAg ICBjb25zdCBpbnQgb3JnX2N3ICAgID0gbWF4IC8gTE1DU19NQVhfQklOX1NJWkU7CisgICAgY29u c3QgaW50IHNoaWZ0ICAgICA9IGF2X2xvZzIob3JnX2N3KTsKKyAgICBjb25zdCBpbnQgb2ZmICAg ICAgID0gMSA8PCAoc2hpZnQgLSAxKTsKKyAgICBpbnQgY3dbTE1DU19NQVhfQklOX1NJWkVdOwor ICAgIHVpbnQxNl90IGlucHV0X3Bpdm90W0xNQ1NfTUFYX0JJTl9TSVpFXTsKKyAgICB1aW50MTZf dCBzY2FsZV9jb2VmZltMTUNTX01BWF9CSU5fU0laRV07CisgICAgdWludDE2X3QgaW52X3NjYWxl X2NvZWZmW0xNQ1NfTUFYX0JJTl9TSVpFXTsKKyAgICBpbnQgaSwgZGVsdGFfY3JzOworICAgIGlm IChiaXRfZGVwdGggPiBMTUNTX01BWF9CSVRfREVQVEgpCisgICAgICAgIHJldHVybiBBVkVSUk9S X1BBVENIV0VMQ09NRTsKKworICAgIGlmICghcmxtY3MpCisgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOworCisgICAgbG1jcy0+bWluX2Jpbl9pZHggPSBybG1jcy0+bG1jc19taW5f YmluX2lkeDsKKyAgICBsbWNzLT5tYXhfYmluX2lkeCA9IExNQ1NfTUFYX0JJTl9TSVpFIC0gMSAt IHJsbWNzLT5sbWNzX21pbl9iaW5faWR4OworCisgICAgbWVtc2V0KGN3LCAwLCBzaXplb2YoY3cp KTsKKyAgICBmb3IgKGludCBpID0gbG1jcy0+bWluX2Jpbl9pZHg7IGkgPD0gbG1jcy0+bWF4X2Jp bl9pZHg7IGkrKykKKyAgICAgICAgY3dbaV0gPSBvcmdfY3cgKyAoMSAtIDIgKiBybG1jcy0+bG1j c19kZWx0YV9zaWduX2N3X2ZsYWdbaV0pICogcmxtY3MtPmxtY3NfZGVsdGFfYWJzX2N3W2ldOwor CisgICAgZGVsdGFfY3JzID0gKDEgLSAyICogcmxtY3MtPmxtY3NfZGVsdGFfc2lnbl9jcnNfZmxh ZykgKiBybG1jcy0+bG1jc19kZWx0YV9hYnNfY3JzOworCisgICAgbG1jcy0+cGl2b3RbMF0gPSAw OworICAgIGZvciAoaSA9IDA7IGkgPCBMTUNTX01BWF9CSU5fU0laRTsgaSsrKSB7CisgICAgICAg IGlucHV0X3Bpdm90W2ldICAgICAgICA9IGkgKiBvcmdfY3c7CisgICAgICAgIGxtY3MtPnBpdm90 W2kgKyAxXSA9IGxtY3MtPnBpdm90W2ldICsgY3dbaV07CisgICAgICAgIHNjYWxlX2NvZWZmW2ld ICAgICAgICA9IChjd1tpXSAqICgxIDw8IDExKSArICBvZmYpID4+IHNoaWZ0OworICAgICAgICBp ZiAoY3dbaV0gPT0gMCkgeworICAgICAgICAgICAgaW52X3NjYWxlX2NvZWZmW2ldID0gMDsKKyAg ICAgICAgICAgIGxtY3MtPmNocm9tYV9zY2FsZV9jb2VmZltpXSA9ICgxIDw8IDExKTsKKyAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludl9zY2FsZV9jb2VmZltpXSA9IG9yZ19jdyAqICgx IDw8IDExKSAvIGN3W2ldOworICAgICAgICAgICAgbG1jcy0+Y2hyb21hX3NjYWxlX2NvZWZmW2ld ID0gb3JnX2N3ICogKDEgPDwgMTEpIC8gKGN3W2ldICsgZGVsdGFfY3JzKTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIC8vZGVyaXZlIGxtY3NfZndkX2x1dAorICAgIGZvciAodWludDE2X3Qgc2Ft cGxlID0gMDsgc2FtcGxlIDwgbWF4OyBzYW1wbGUrKykgeworICAgICAgICBjb25zdCBpbnQgaWR4 X3kgPSBzYW1wbGUgLyBvcmdfY3c7CisgICAgICAgIGNvbnN0IHVpbnQxNl90IGZ3ZF9zYW1wbGUg PSBsbWNzX2Rlcml2ZV9sdXRfc2FtcGxlKHNhbXBsZSwgbG1jcy0+cGl2b3QsCisgICAgICAgICAg ICBpbnB1dF9waXZvdCwgc2NhbGVfY29lZmYsIGlkeF95LCBtYXgpOworICAgICAgICBpZiAoYml0 X2RlcHRoID4gOCkKKyAgICAgICAgICAgICgodWludDE2X3QgKilsbWNzLT5md2RfbHV0KVtzYW1w bGVdID0gZndkX3NhbXBsZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG1jcy0+ZndkX2x1 dFtzYW1wbGVdID0gZndkX3NhbXBsZTsKKworICAgIH0KKworICAgIC8vZGVyaXZlIGxtY3NfaW52 X2x1dAorICAgIGkgPSBsbWNzLT5taW5fYmluX2lkeDsKKyAgICBmb3IgKHVpbnQxNl90IHNhbXBs ZSA9IDA7IHNhbXBsZSA8IG1heDsgc2FtcGxlKyspIHsKKyAgICAgICAgdWludDE2X3QgaW52X3Nh bXBsZTsKKyAgICAgICAgd2hpbGUgKHNhbXBsZSA+PSBsbWNzLT5waXZvdFtpICsgMV0gJiYgaSA8 PSBsbWNzLT5tYXhfYmluX2lkeCkKKyAgICAgICAgICAgIGkrKzsKKworICAgICAgICBpbnZfc2Ft cGxlID0gbG1jc19kZXJpdmVfbHV0X3NhbXBsZShzYW1wbGUsIGlucHV0X3Bpdm90LCBsbWNzLT5w aXZvdCwKKyAgICAgICAgICAgIGludl9zY2FsZV9jb2VmZiwgaSwgbWF4KTsKKworICAgICAgICBp ZiAoYml0X2RlcHRoID4gOCkKKyAgICAgICAgICAgICgodWludDE2X3QgKilsbWNzLT5pbnZfbHV0 KVtzYW1wbGVdID0gaW52X3NhbXBsZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG1jcy0+ aW52X2x1dFtzYW1wbGVdID0gaW52X3NhbXBsZTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBwaF9tYXhfbnVtX3N1YmJsb2NrX21lcmdlX2NhbmQoY29uc3QgSDI2NlJh d1NQUyAqc3BzLCBjb25zdCBIMjY2UmF3UGljdHVyZUhlYWRlciAqcGgpCit7CisgICAgaWYgKHNw cy0+c3BzX2FmZmluZV9lbmFibGVkX2ZsYWcpCisgICAgICAgIHJldHVybiA1IC0gc3BzLT5zcHNf Zml2ZV9taW51c19tYXhfbnVtX3N1YmJsb2NrX21lcmdlX2NhbmQ7CisgICAgcmV0dXJuIHNwcy0+ c3BzX3NidG12cF9lbmFibGVkX2ZsYWcgJiYgcGgtPnBoX3RlbXBvcmFsX212cF9lbmFibGVkX2Zs YWc7Cit9CisKK3N0YXRpYyBpbnQgcGhfZGVyaXZlKFZWQ1BIICpwaCwgY29uc3QgSDI2NlJhd1NQ UyAqc3BzLCBjb25zdCBIMjY2UmF3UFBTICpwcHMsIGNvbnN0IGludCBwb2NfdGlkMCwgY29uc3Qg aW50IGlzX2NsdnNzKQoreworICAgIHBoLT5tYXhfbnVtX3N1YmJsb2NrX21lcmdlX2NhbmQgPSBw aF9tYXhfbnVtX3N1YmJsb2NrX21lcmdlX2NhbmQoc3BzLCBwaC0+cik7CisKKyAgICBwaC0+cG9j ID0gcGhfY29tcHV0ZV9wb2MocGgtPnIsIHNwcywgcG9jX3RpZDAsIGlzX2NsdnNzKTsKKworICAg IGlmIChwcHMtPnBwc193cF9pbmZvX2luX3BoX2ZsYWcpCisgICAgICAgIHByZWRfd2VpZ2h0X3Rh YmxlKCZwaC0+cHd0LCAmcGgtPnItPnBoX3ByZWRfd2VpZ2h0X3RhYmxlKTsKKworICAgIHJldHVy biAwOworfQorCitzdGF0aWMgaW50IGRlY29kZV9waChWVkNGcmFtZVBhcmFtU2V0cyAqZnBzLCBj b25zdCBIMjY2UmF3UGljdHVyZUhlYWRlciAqcnBoLCB2b2lkICpycGhfcmVmLAorICAgIGNvbnN0 IGludCBwb2NfdGlkMCwgY29uc3QgaW50IGlzX2NsdnNzKQoreworICAgIGludCByZXQ7CisgICAg VlZDUEggKnBoID0gJmZwcy0+cGg7CisgICAgY29uc3QgSDI2NlJhd1NQUyAqc3BzID0gZnBzLT5z cHMtPnI7CisgICAgY29uc3QgSDI2NlJhd1BQUyAqcHBzID0gZnBzLT5wcHMtPnI7CisKKyAgICBw aC0+ciA9IHJwaDsKKyAgICBmZl9yZWZzdHJ1Y3RfcmVwbGFjZSgmcGgtPnJyZWYsIHJwaF9yZWYp OworICAgIHJldCA9IHBoX2Rlcml2ZShwaCwgc3BzLCBwcHMsIHBvY190aWQwLCBpc19jbHZzcyk7 CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByZXR1cm4gMDsK K30KKworc3RhdGljIGludCBkZWNvZGVfZnJhbWVfcHMoVlZDRnJhbWVQYXJhbVNldHMgKmZwcywg Y29uc3QgVlZDUGFyYW1TZXRzICpwcywKKyAgICBjb25zdCBDb2RlZEJpdHN0cmVhbUgyNjZDb250 ZXh0ICpoMjY2LCBjb25zdCBpbnQgcG9jX3RpZDAsIGNvbnN0IGludCBpc19jbHZzcykKK3sKKyAg ICBjb25zdCBIMjY2UmF3UGljdHVyZUhlYWRlciAqcGggPSBoMjY2LT5waDsKKyAgICBjb25zdCBI MjY2UmF3UFBTICpycHBzOworICAgIGludCByZXQ7CisKKyAgICBpZiAoIXBoKQorICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIHJwcHMgPSBoMjY2LT5wcHNbcGgtPnBo X3BpY19wYXJhbWV0ZXJfc2V0X2lkXTsKKyAgICBpZiAoIXJwcHMpCisgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgZmZfcmVmc3RydWN0X3JlcGxhY2UoJmZwcy0+c3Bz LCBwcy0+c3BzX2xpc3RbcnBwcy0+cHBzX3NlcV9wYXJhbWV0ZXJfc2V0X2lkXSk7CisgICAgZmZf cmVmc3RydWN0X3JlcGxhY2UoJmZwcy0+cHBzLCBwcy0+cHBzX2xpc3RbcnBwcy0+cHBzX3BpY19w YXJhbWV0ZXJfc2V0X2lkXSk7CisKKyAgICByZXQgPSBkZWNvZGVfcGgoZnBzLCBwaCwgaDI2Ni0+ cGhfcmVmLCBwb2NfdGlkMCwgaXNfY2x2c3MpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBy ZXR1cm4gcmV0OworCisgICAgaWYgKHBoLT5waF9leHBsaWNpdF9zY2FsaW5nX2xpc3RfZW5hYmxl ZF9mbGFnKQorICAgICAgICBmZl9yZWZzdHJ1Y3RfcmVwbGFjZSgmZnBzLT5zbCwgcHMtPnNjYWxp bmdfbGlzdFtwaC0+cGhfc2NhbGluZ19saXN0X2Fwc19pZF0pOworCisgICAgaWYgKHBoLT5waF9s bWNzX2VuYWJsZWRfZmxhZykgeworICAgICAgICByZXQgPSBsbWNzX2Rlcml2ZV9sdXQoJmZwcy0+ bG1jcywgcHMtPmxtY3NfbGlzdFtwaC0+cGhfbG1jc19hcHNfaWRdLCBmcHMtPnNwcy0+cik7Cisg ICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKGZwcy0+YWxmX2xpc3QpOyBpKysp CisgICAgICAgIGZmX3JlZnN0cnVjdF9yZXBsYWNlKCZmcHMtPmFsZl9saXN0W2ldLCBwcy0+YWxm X2xpc3RbaV0pOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGRlY29kZV9yZWNv dmVyeV9mbGFnKFZWQ0NvbnRleHQgKnMpCit7CisgICAgaWYgKElTX0lEUihzKSkKKyAgICAgICAg cy0+bm9fb3V0cHV0X2JlZm9yZV9yZWNvdmVyeV9mbGFnID0gMDsKKyAgICBlbHNlIGlmIChJU19D UkEocykgfHwgSVNfR0RSKHMpKQorICAgICAgICBzLT5ub19vdXRwdXRfYmVmb3JlX3JlY292ZXJ5 X2ZsYWcgPSBzLT5sYXN0X2VvczsKK30KKworc3RhdGljIHZvaWQgZGVjb2RlX3JlY292ZXJ5X3Bv YyhWVkNDb250ZXh0ICpzLCBjb25zdCBWVkNQSCAqcGgpCit7CisgICAgaWYgKHMtPm5vX291dHB1 dF9iZWZvcmVfcmVjb3ZlcnlfZmxhZykgeworICAgICAgICBpZiAoSVNfR0RSKHMpKQorICAgICAg ICAgICAgcy0+Z2RyX3JlY292ZXJ5X3BvaW50X3BvYyA9IHBoLT5wb2MgKyBwaC0+ci0+cGhfcmVj b3ZlcnlfcG9jX2NudDsKKyAgICAgICAgaWYgKCFHRFJfSVNfUkVDT1ZFUkVEKHMpICYmIHMtPmdk cl9yZWNvdmVyeV9wb2ludF9wb2MgPD0gcGgtPnBvYykKKyAgICAgICAgICAgIEdEUl9TRVRfUkVD T1ZFUkVEKHMpOworICAgIH0KK30KKworaW50IGZmX3Z2Y19kZWNvZGVfZnJhbWVfcHMoVlZDRnJh bWVQYXJhbVNldHMgKmZwcywgc3RydWN0IFZWQ0NvbnRleHQgKnMpCit7CisgICAgaW50IHJldCA9 IDA7CisgICAgVlZDUGFyYW1TZXRzICpwcyAgICAgICAgICAgICAgICAgICAgICAgID0gJnMtPnBz OworICAgIGNvbnN0IENvZGVkQml0c3RyZWFtSDI2NkNvbnRleHQgKmgyNjYgICA9IHMtPmNiYy0+ cHJpdl9kYXRhOworCisgICAgcmV0ID0gZGVjb2RlX3BzKHBzLCBoMjY2LCBzLT5hdmN0eCk7Cisg ICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBkZWNvZGVfcmVjb3Zl cnlfZmxhZyhzKTsKKyAgICByZXQgPSBkZWNvZGVfZnJhbWVfcHMoZnBzLCBwcywgaDI2Niwgcy0+ cG9jX3RpZDAsIElTX0NMVlNTKHMpKTsKKyAgICBkZWNvZGVfcmVjb3ZlcnlfcG9jKHMsICZmcHMt PnBoKTsKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIGZmX3Z2Y19mcmFtZV9wc19mcmVlKFZW Q0ZyYW1lUGFyYW1TZXRzICpmcHMpCit7CisgICAgZmZfcmVmc3RydWN0X3VucmVmKCZmcHMtPnNw cyk7CisgICAgZmZfcmVmc3RydWN0X3VucmVmKCZmcHMtPnBwcyk7CisgICAgZmZfcmVmc3RydWN0 X3VucmVmKCZmcHMtPnBoLnJyZWYpOworICAgIGZmX3JlZnN0cnVjdF91bnJlZigmZnBzLT5zbCk7 CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhmcHMtPmFsZl9saXN0KTsg aSsrKQorICAgICAgICBmZl9yZWZzdHJ1Y3RfdW5yZWYoJmZwcy0+YWxmX2xpc3RbaV0pOworfQor Cit2b2lkIGZmX3Z2Y19wc191bmluaXQoVlZDUGFyYW1TZXRzICpwcykKK3sKKyAgICBmb3IgKGlu dCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKHBzLT5zY2FsaW5nX2xpc3QpOyBpKyspCisgICAg ICAgIGZmX3JlZnN0cnVjdF91bnJlZigmcHMtPnNjYWxpbmdfbGlzdFtpXSk7CisgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhwcy0+bG1jc19saXN0KTsgaSsrKQorICAgICAg ICBmZl9yZWZzdHJ1Y3RfdW5yZWYoJnBzLT5sbWNzX2xpc3RbaV0pOworICAgIGZvciAoaW50IGkg PSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMocHMtPmFsZl9saXN0KTsgaSsrKQorICAgICAgICBmZl9y ZWZzdHJ1Y3RfdW5yZWYoJnBzLT5hbGZfbGlzdFtpXSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBGRl9BUlJBWV9FTEVNUyhwcy0+c3BzX2xpc3QpOyBpKyspCisgICAgICAgIGZmX3JlZnN0cnVj dF91bnJlZigmcHMtPnNwc19saXN0W2ldKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FS UkFZX0VMRU1TKHBzLT5wcHNfbGlzdCk7IGkrKykKKyAgICAgICAgZmZfcmVmc3RydWN0X3VucmVm KCZwcy0+cHBzX2xpc3RbaV0pOworfQorCitlbnVtIHsKKyAgICBBUFNfQUxGLAorICAgIEFQU19M TUNTLAorICAgIEFQU19TQ0FMSU5HLAorfTsKKworc3RhdGljIHZvaWQgYWxmX2NvZWZmKGludDE2 X3QgKmNvZWZmLAorICAgIGNvbnN0IHVpbnQ4X3QgKmFicywgY29uc3QgdWludDhfdCAqc2lnbiwg Y29uc3QgaW50IHNpemUpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisg ICAgICAgIGNvZWZmW2ldID0gKDEgLSAyICogc2lnbltpXSkgKiBhYnNbaV07Cit9CisKK3N0YXRp YyB2b2lkIGFsZl9jb2VmZl9jYyhpbnQxNl90ICpjb2VmZiwKKyAgICBjb25zdCB1aW50OF90ICpt YXBwZWRfYWJzLCBjb25zdCB1aW50OF90ICpzaWduKQoreworICAgIGZvciAoaW50IGkgPSAwOyBp IDwgQUxGX05VTV9DT0VGRl9DQzsgaSsrKSB7CisgICAgICAgIGludCBjID0gbWFwcGVkX2Fic1tp XTs7CisgICAgICAgIGlmIChjKQorICAgICAgICAgICAgYyA9ICgxIC0gMiAqIHNpZ25baV0pICog KDEgPDwgKGMgLSAxKSk7CisgICAgICAgIGNvZWZmW2ldID0gYzsKKyAgICB9Cit9CisKK3N0YXRp YyB2b2lkIGFsZl9sdW1hKFZWQ0FMRiAqYWxmLCBjb25zdCBIMjY2UmF3QVBTICphcHMpCit7Cisg ICAgaWYgKCFhcHMtPmFsZl9sdW1hX2ZpbHRlcl9zaWduYWxfZmxhZykKKyAgICAgICAgcmV0dXJu OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBBTEZfTlVNX0ZJTFRFUlNfTFVNQTsgaSsrKSB7 CisgICAgICAgIGNvbnN0IGludCByZWYgICAgICAgPSBhcHMtPmFsZl9sdW1hX2NvZWZmX2RlbHRh X2lkeFtpXTsKKyAgICAgICAgY29uc3QgdWludDhfdCAqYWJzICA9IGFwcy0+YWxmX2x1bWFfY29l ZmZfYWJzW3JlZl07CisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNpZ24gPSBhcHMtPmFsZl9sdW1h X2NvZWZmX3NpZ25bcmVmXTsKKworICAgICAgICBhbGZfY29lZmYoYWxmLT5sdW1hX2NvZWZmW2ld LCBhYnMsIHNpZ24sIEFMRl9OVU1fQ09FRkZfTFVNQSk7CisgICAgICAgIG1lbWNweShhbGYtPmx1 bWFfY2xpcF9pZHhbaV0sIGFwcy0+YWxmX2x1bWFfY2xpcF9pZHhbcmVmXSwKKyAgICAgICAgICAg IHNpemVvZihhbGYtPmx1bWFfY2xpcF9pZHhbaV0pKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk IGFsZl9jaHJvbWEoVlZDQUxGICphbGYsIGNvbnN0IEgyNjZSYXdBUFMgKmFwcykKK3sKKyAgICBp ZiAoIWFwcy0+YWxmX2Nocm9tYV9maWx0ZXJfc2lnbmFsX2ZsYWcpCisgICAgICAgIHJldHVybjsK KworICAgIGFsZi0+bnVtX2Nocm9tYV9maWx0ZXJzICA9IGFwcy0+YWxmX2Nocm9tYV9udW1fYWx0 X2ZpbHRlcnNfbWludXMxICsgMTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFsZi0+bnVtX2No cm9tYV9maWx0ZXJzOyBpKyspIHsKKyAgICAgICAgY29uc3QgdWludDhfdCAqYWJzICA9IGFwcy0+ YWxmX2Nocm9tYV9jb2VmZl9hYnNbaV07CisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNpZ24gPSBh cHMtPmFsZl9jaHJvbWFfY29lZmZfc2lnbltpXTsKKworICAgICAgICBhbGZfY29lZmYoYWxmLT5j aHJvbWFfY29lZmZbaV0sIGFicywgc2lnbiwgQUxGX05VTV9DT0VGRl9DSFJPTUEpOworICAgICAg ICBtZW1jcHkoYWxmLT5jaHJvbWFfY2xpcF9pZHhbaV0sIGFwcy0+YWxmX2Nocm9tYV9jbGlwX2lk eFtpXSwKKyAgICAgICAgICAgIHNpemVvZihhbGYtPmNocm9tYV9jbGlwX2lkeFtpXSkpOworICAg IH0KK30KKworc3RhdGljIHZvaWQgYWxmX2NjKFZWQ0FMRiAqYWxmLCBjb25zdCBIMjY2UmF3QVBT ICphcHMpCit7CisgICAgY29uc3QgdWludDhfdCAoKmFic1tdKVtBTEZfTlVNX0NPRUZGX0NDXSA9 CisgICAgICAgIHsgYXBzLT5hbGZfY2NfY2JfbWFwcGVkX2NvZWZmX2FicywgYXBzLT5hbGZfY2Nf Y3JfbWFwcGVkX2NvZWZmX2FicyB9OworICAgIGNvbnN0IHVpbnQ4X3QgKCpzaWduW10pW0FMRl9O VU1fQ09FRkZfQ0NdID0KKyAgICAgICAge2Fwcy0+YWxmX2NjX2NiX2NvZWZmX3NpZ24sIGFwcy0+ YWxmX2NjX2NyX2NvZWZmX3NpZ24gfTsKKyAgICBjb25zdCBpbnQgc2lnbmFsZWRbXSA9IHsgYXBz LT5hbGZfY2NfY2JfZmlsdGVyX3NpZ25hbF9mbGFnLCBhcHMtPmFsZl9jY19jcl9maWx0ZXJfc2ln bmFsX2ZsYWd9OworCisgICAgYWxmLT5udW1fY2NfZmlsdGVyc1swXSA9IGFwcy0+YWxmX2NjX2Ni X2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVzMSArIDE7CisgICAgYWxmLT5udW1fY2NfZmlsdGVyc1sx XSA9IGFwcy0+YWxmX2NjX2NyX2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVzMSArIDE7CisKKyAgICBm b3IgKGludCBpZHggPSAwOyBpZHggPCAyOyBpZHgrKykgeworICAgICAgICBpZiAoc2lnbmFsZWRb aWR4XSkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbGYtPm51bV9jY19maWx0 ZXJzW2lkeF07IGkrKykKKyAgICAgICAgICAgICAgICBhbGZfY29lZmZfY2MoYWxmLT5jY19jb2Vm ZltpZHhdW2ldLCBhYnNbaWR4XVtpXSwgc2lnbltpZHhdW2ldKTsKKyAgICAgICAgfQorICAgIH0K K30KKworc3RhdGljIHZvaWQgYWxmX2Rlcml2ZShWVkNBTEYgKmFsZiwgY29uc3QgSDI2NlJhd0FQ UyAqYXBzKQoreworICAgIGFsZl9sdW1hKGFsZiwgYXBzKTsKKyAgICBhbGZfY2hyb21hKGFsZiwg YXBzKTsKKyAgICBhbGZfY2MoYWxmLCBhcHMpOworfQorCitzdGF0aWMgaW50IGFwc19kZWNvZGVf YWxmKGNvbnN0IFZWQ0FMRiAqKmFsZiwgY29uc3QgSDI2NlJhd0FQUyAqYXBzKQoreworICAgIFZW Q0FMRiAqYSA9IGZmX3JlZnN0cnVjdF9hbGxvY3ooc2l6ZW9mKCphKSk7CisgICAgaWYgKCFhKQor ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgYWxmX2Rlcml2ZShhLCBhcHMp OworICAgIGZmX3JlZnN0cnVjdF9yZXBsYWNlKGFsZiwgYSk7CisgICAgZmZfcmVmc3RydWN0X3Vu cmVmKCZhKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlzX2x1bWFfbGlzdChj b25zdCBpbnQgaWQpCit7CisgICAgcmV0dXJuIGlkICUgVlZDX01BWF9TQU1QTEVfQVJSQVlTID09 IFNMX1NUQVJUXzR4NCB8fCBpZCA9PSBTTF9TVEFSVF82NHg2NCArIDE7Cit9CisKK3N0YXRpYyBp bnQgZGVyaXZlX21hdHJpeF9zaXplKGNvbnN0IGludCBpZCkKK3sKKyAgICByZXR1cm4gaWQgPCBT TF9TVEFSVF80eDQgPyAyIDogKGlkIDwgU0xfU1RBUlRfOHg4ID8gNCA6IDgpOworfQorCisvLyA3 LjQuMy4yMCBTY2FsaW5nIGxpc3QgZGF0YSBzZW1hbnRpY3MKK3N0YXRpYyB2b2lkIHNjYWxpbmdf ZGVyaXZlKFZWQ1NjYWxpbmdMaXN0ICpzbCwgY29uc3QgSDI2NlJhd0FQUyAqYXBzKQoreworICAg IGZvciAoaW50IGlkID0gMDsgaWQgPCBTTF9NQVhfSUQ7IGlkKyspIHsKKyAgICAgICAgY29uc3Qg aW50IG1hdHJpeF9zaXplICAgPSBkZXJpdmVfbWF0cml4X3NpemUoaWQpOworICAgICAgICBjb25z dCBpbnQgbG9nMl9zaXplICAgICA9IGxvZzIobWF0cml4X3NpemUpOworICAgICAgICBjb25zdCBp bnQgbGlzdF9zaXplICAgICA9IG1hdHJpeF9zaXplICogbWF0cml4X3NpemU7CisgICAgICAgIGlu dCBjb2VmZltTTF9NQVhfTUFUUklYX1NJWkUgKiBTTF9NQVhfTUFUUklYX1NJWkVdOworICAgICAg ICBjb25zdCB1aW50OF90ICpwcmVkOworICAgICAgICBjb25zdCBpbnQgKnNjYWxpbmdfbGlzdDsK KyAgICAgICAgaW50IGRjID0gMDsKKworICAgICAgICBpZiAoYXBzLT5hcHNfY2hyb21hX3ByZXNl bnRfZmxhZyB8fCBpc19sdW1hX2xpc3QoaWQpKSB7CisgICAgICAgICAgICBpZiAoIWFwcy0+c2Nh bGluZ19saXN0X2NvcHlfbW9kZV9mbGFnW2lkXSkgeworICAgICAgICAgICAgICAgIGludCBuZXh0 X2NvZWYgPSAwOworCisgICAgICAgICAgICAgICAgaWYgKGlkID49IFNMX1NUQVJUXzE2eDE2KQor ICAgICAgICAgICAgICAgICAgICBkYyA9IG5leHRfY29lZiA9IGFwcy0+c2NhbGluZ19saXN0X2Rj X2NvZWZbaWQgLSBTTF9TVEFSVF8xNngxNl07CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IGxpc3Rfc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu dCB4ID0gZmZfdnZjX2RpYWdfc2Nhbl94WzNdWzNdW2ldOworICAgICAgICAgICAgICAgICAgICBj b25zdCBpbnQgeSA9IGZmX3Z2Y19kaWFnX3NjYW5feVszXVszXVtpXTsKKworICAgICAgICAgICAg ICAgICAgICBpZiAoIShpZCA+PSBTTF9TVEFSVF82NHg2NCAmJiB4ID49IDQgJiYgeSA+PSA0KSkK KyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfY29lZiArPSBhcHMtPnNjYWxpbmdfbGlzdF9k ZWx0YV9jb2VmW2lkXVtpXTsKKyAgICAgICAgICAgICAgICAgICAgY29lZmZbaV0gPSBuZXh0X2Nv ZWY7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg ICAgLy9kYworICAgICAgICBpZiAoaWQgPj0gU0xfU1RBUlRfMTZ4MTYpIHsKKyAgICAgICAgICAg IGlmICghYXBzLT5zY2FsaW5nX2xpc3RfY29weV9tb2RlX2ZsYWdbaWRdICYmICFhcHMtPnNjYWxp bmdfbGlzdF9wcmVkX21vZGVfZmxhZ1tpZF0pIHsKKyAgICAgICAgICAgICAgICBzbC0+c2NhbGlu Z19tYXRyaXhfZGNfcmVjW2lkIC0gU0xfU1RBUlRfMTZ4MTZdID0gODsKKyAgICAgICAgICAgIH0g ZWxzZSBpZiAoIWFwcy0+c2NhbGluZ19saXN0X3ByZWRfaWRfZGVsdGFbaWRdKSB7CisgICAgICAg ICAgICAgICAgc2wtPnNjYWxpbmdfbWF0cml4X2RjX3JlY1tpZCAtIFNMX1NUQVJUXzE2eDE2XSA9 IDE2OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgcmVm X2lkID0gaWQgLSBhcHMtPnNjYWxpbmdfbGlzdF9wcmVkX2lkX2RlbHRhW2lkXTsKKyAgICAgICAg ICAgICAgICBpZiAocmVmX2lkID49IFNMX1NUQVJUXzE2eDE2KQorICAgICAgICAgICAgICAgICAg ICBkYyArPSBzbC0+c2NhbGluZ19tYXRyaXhfZGNfcmVjW3JlZl9pZCAtIFNMX1NUQVJUXzE2eDE2 XTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRjICs9IHNsLT5z Y2FsaW5nX21hdHJpeF9yZWNbcmVmX2lkXVswXTsKKyAgICAgICAgICAgICAgICBzbC0+c2NhbGlu Z19tYXRyaXhfZGNfcmVjW2lkIC0gU0xfU1RBUlRfMTZ4MTZdID0gZGMgJiAyNTU7CisgICAgICAg ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvL2FjCisgICAgICAgIHNjYWxpbmdfbGlzdCA9 IGFwcy0+c2NhbGluZ19saXN0X2NvcHlfbW9kZV9mbGFnW2lkXSA/IGZmX3Z2Y19zY2FsaW5nX2xp c3QwIDogY29lZmY7CisgICAgICAgIGlmICghYXBzLT5zY2FsaW5nX2xpc3RfY29weV9tb2RlX2Zs YWdbaWRdICYmICFhcHMtPnNjYWxpbmdfbGlzdF9wcmVkX21vZGVfZmxhZ1tpZF0pCisgICAgICAg ICAgICBwcmVkID0gZmZfdnZjX3NjYWxpbmdfcHJlZF84OworICAgICAgICBlbHNlIGlmICghYXBz LT5zY2FsaW5nX2xpc3RfcHJlZF9pZF9kZWx0YVtpZF0pCisgICAgICAgICAgICBwcmVkID0gZmZf dnZjX3NjYWxpbmdfcHJlZF8xNjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJlZCA9IHNs LT5zY2FsaW5nX21hdHJpeF9yZWNbaWQgLSBhcHMtPnNjYWxpbmdfbGlzdF9wcmVkX2lkX2RlbHRh W2lkXV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdF9zaXplOyBpKyspIHsKKyAg ICAgICAgICAgIGNvbnN0IGludCB4ID0gZmZfdnZjX2RpYWdfc2Nhbl94W2xvZzJfc2l6ZV1bbG9n Ml9zaXplXVtpXTsKKyAgICAgICAgICAgIGNvbnN0IGludCB5ID0gZmZfdnZjX2RpYWdfc2Nhbl95 W2xvZzJfc2l6ZV1bbG9nMl9zaXplXVtpXTsKKyAgICAgICAgICAgIGNvbnN0IGludCBvZmYgPSB5 ICogbWF0cml4X3NpemUgKyB4OworICAgICAgICAgICAgc2wtPnNjYWxpbmdfbWF0cml4X3JlY1tp ZF1bb2ZmXSA9IChwcmVkW29mZl0gKyBzY2FsaW5nX2xpc3RbaV0pICYgMjU1OworICAgICAgICB9 CisgICAgfQorfQorCitzdGF0aWMgaW50IGFwc19kZWNvZGVfc2NhbGluZyhjb25zdCBWVkNTY2Fs aW5nTGlzdCAqKnNjYWxpbmcsIGNvbnN0IEgyNjZSYXdBUFMgKmFwcykKK3sKKyAgICBWVkNTY2Fs aW5nTGlzdCAqc2wgPSBmZl9yZWZzdHJ1Y3RfYWxsb2N6KHNpemVvZigqc2wpKTsKKyAgICBpZiAo IXNsKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgc2NhbGluZ19kZXJp dmUoc2wsIGFwcyk7CisgICAgZmZfcmVmc3RydWN0X3JlcGxhY2Uoc2NhbGluZywgc2wpOworICAg IGZmX3JlZnN0cnVjdF91bnJlZigmc2wpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBmZl92 dmNfZGVjb2RlX2FwcyhWVkNQYXJhbVNldHMgKnBzLCBjb25zdCBDb2RlZEJpdHN0cmVhbVVuaXQg KnVuaXQpCit7CisgICAgY29uc3QgSDI2NlJhd0FQUyAqYXBzID0gdW5pdC0+Y29udGVudF9yZWY7 CisgICAgaW50IHJldCAgICAgICAgICAgICAgID0gMDsKKworICAgIGlmICghYXBzKQorICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIHN3aXRjaCAoYXBzLT5hcHNfcGFy YW1zX3R5cGUpIHsKKyAgICAgICAgY2FzZSBBUFNfQUxGOgorICAgICAgICAgICAgcmV0ID0gYXBz X2RlY29kZV9hbGYoJnBzLT5hbGZfbGlzdFthcHMtPmFwc19hZGFwdGF0aW9uX3BhcmFtZXRlcl9z ZXRfaWRdLCBhcHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVBTX0xNQ1M6 CisgICAgICAgICAgICBmZl9yZWZzdHJ1Y3RfcmVwbGFjZSgmcHMtPmxtY3NfbGlzdFthcHMtPmFw c19hZGFwdGF0aW9uX3BhcmFtZXRlcl9zZXRfaWRdLCBhcHMpOworICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgIGNhc2UgQVBTX1NDQUxJTkc6CisgICAgICAgICAgICByZXQgPSBhcHNfZGVjb2Rl X3NjYWxpbmcoJnBzLT5zY2FsaW5nX2xpc3RbYXBzLT5hcHNfYWRhcHRhdGlvbl9wYXJhbWV0ZXJf c2V0X2lkXSwgYXBzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHNoX3NsaWNlX2FkZHJlc3MoVlZDU0ggKnNoLCBjb25zdCBI MjY2UmF3U1BTICpzcHMsIGNvbnN0IFZWQ1BQUyAqcHBzKQoreworICAgIGNvbnN0IGludCBzbGlj ZV9hZGRyZXNzICAgICA9IHNoLT5yLT5zaF9zbGljZV9hZGRyZXNzOworCisgICAgaWYgKHBwcy0+ ci0+cHBzX3JlY3Rfc2xpY2VfZmxhZykgeworICAgICAgICBpbnQgcGljX2xldmVsX3NsaWNlX2lk eCA9IHNsaWNlX2FkZHJlc3M7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2gtPnItPmN1 cnJfc3VicGljX2lkeDsgaisrKQorICAgICAgICAgICAgcGljX2xldmVsX3NsaWNlX2lkeCArPSBw cHMtPnItPm51bV9zbGljZXNfaW5fc3VicGljW2pdOworICAgICAgICBzaC0+Y3RiX2FkZHJfaW5f Y3Vycl9zbGljZSA9IHBwcy0+Y3RiX2FkZHJfaW5fc2xpY2UgKyBwcHMtPnNsaWNlX3N0YXJ0X29m ZnNldFtwaWNfbGV2ZWxfc2xpY2VfaWR4XTsKKyAgICAgICAgc2gtPm51bV9jdHVzX2luX2N1cnJf c2xpY2UgPSBwcHMtPm51bV9jdHVzX2luX3NsaWNlW3BpY19sZXZlbF9zbGljZV9pZHhdOworICAg IH0gZWxzZSB7CisgICAgICAgIGludCB0aWxlX3ggPSBzbGljZV9hZGRyZXNzICUgcHBzLT5yLT5u dW1fdGlsZV9jb2x1bW5zOworICAgICAgICBpbnQgdGlsZV95ID0gc2xpY2VfYWRkcmVzcyAvIHBw cy0+ci0+bnVtX3RpbGVfY29sdW1uczsKKyAgICAgICAgY29uc3QgaW50IHNsaWNlX3N0YXJ0X2N0 YiA9IHBwcy0+cm93X2JkW3RpbGVfeV0gKiBwcHMtPmN0Yl93aWR0aCArIHBwcy0+Y29sX2JkW3Rp bGVfeF0gKiBwcHMtPnItPnJvd19oZWlnaHRfdmFsW3RpbGVfeV07CisKKyAgICAgICAgc2gtPmN0 Yl9hZGRyX2luX2N1cnJfc2xpY2UgPSBwcHMtPmN0Yl9hZGRyX2luX3NsaWNlICsgc2xpY2Vfc3Rh cnRfY3RiOworCisgICAgICAgIHNoLT5udW1fY3R1c19pbl9jdXJyX3NsaWNlID0gMDsKKyAgICAg ICAgZm9yIChpbnQgdGlsZV9pZHggPSBzbGljZV9hZGRyZXNzOyB0aWxlX2lkeCA8PSBzbGljZV9h ZGRyZXNzICsgc2gtPnItPnNoX251bV90aWxlc19pbl9zbGljZV9taW51czE7IHRpbGVfaWR4Kysp IHsKKyAgICAgICAgICAgIHRpbGVfeCA9IHRpbGVfaWR4ICUgcHBzLT5yLT5udW1fdGlsZV9jb2x1 bW5zOworICAgICAgICAgICAgdGlsZV95ID0gdGlsZV9pZHggLyBwcHMtPnItPm51bV90aWxlX2Nv bHVtbnM7CisgICAgICAgICAgICBzaC0+bnVtX2N0dXNfaW5fY3Vycl9zbGljZSArPSBwcHMtPnIt PnJvd19oZWlnaHRfdmFsW3RpbGVfeV0gKiBwcHMtPnItPmNvbF93aWR0aF92YWxbdGlsZV94XTsK KyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgc2hfcXBfeShWVkNTSCAqc2gsIGNv bnN0IEgyNjZSYXdQUFMgKnBwcywgY29uc3QgSDI2NlJhd1BpY3R1cmVIZWFkZXIgKnBoKQorewor ICAgIGNvbnN0IGludCBpbml0X3FwID0gcHBzLT5wcHNfaW5pdF9xcF9taW51czI2ICsgMjY7CisK KyAgICBpZiAoIXBwcy0+cHBzX3FwX2RlbHRhX2luZm9faW5fcGhfZmxhZykKKyAgICAgICAgc2gt PnNsaWNlX3FwX3kgPSBpbml0X3FwICsgc2gtPnItPnNoX3FwX2RlbHRhOworICAgIGVsc2UKKyAg ICAgICAgc2gtPnNsaWNlX3FwX3kgPSBpbml0X3FwICsgcGgtPnBoX3FwX2RlbHRhOworfQorCitz dGF0aWMgdm9pZCBzaF9pbnRlcihWVkNTSCAqc2gsIGNvbnN0IEgyNjZSYXdTUFMgKnNwcywgY29u c3QgSDI2NlJhd1BQUyAqcHBzKQoreworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNo ID0gc2gtPnI7CisKKyAgICBpZiAoIXBwcy0+cHBzX3dwX2luZm9faW5fcGhfZmxhZyAmJgorICAg ICAgICAoKHBwcy0+cHBzX3dlaWdodGVkX3ByZWRfZmxhZyAmJiBJU19QKHJzaCkpIHx8CisgICAg ICAgICAocHBzLT5wcHNfd2VpZ2h0ZWRfYmlwcmVkX2ZsYWcgJiYgSVNfQihyc2gpKSkpCisgICAg ICAgIHByZWRfd2VpZ2h0X3RhYmxlKCZzaC0+cHd0LCAmcnNoLT5zaF9wcmVkX3dlaWdodF90YWJs ZSk7Cit9CisKK3N0YXRpYyB2b2lkIHNoX2RlYmxvY2tfb2Zmc2V0cyhWVkNTSCAqc2gpCit7Cisg ICAgY29uc3QgSDI2NlJhd1NsaWNlSGVhZGVyICpyID0gc2gtPnI7CisKKyAgICBpZiAoIXItPnNo X2RlYmxvY2tpbmdfZmlsdGVyX2Rpc2FibGVkX2ZsYWcpIHsKKyAgICAgICAgc2gtPmRlYmxvY2su YmV0YV9vZmZzZXRbTFVNQV0gPSByLT5zaF9sdW1hX2JldGFfb2Zmc2V0X2RpdjIgPDwgMTsKKyAg ICAgICAgc2gtPmRlYmxvY2sudGNfb2Zmc2V0W0xVTUFdICAgPSByLT5zaF9sdW1hX3RjX29mZnNl dF9kaXYyIDw8IDE7CisgICAgICAgIHNoLT5kZWJsb2NrLmJldGFfb2Zmc2V0W0NCXSAgID0gci0+ c2hfY2JfYmV0YV9vZmZzZXRfZGl2MiA8PCAxOworICAgICAgICBzaC0+ZGVibG9jay50Y19vZmZz ZXRbQ0JdICAgICA9IHItPnNoX2NiX3RjX29mZnNldF9kaXYyIDw8IDE7CisgICAgICAgIHNoLT5k ZWJsb2NrLmJldGFfb2Zmc2V0W0NSXSAgID0gci0+c2hfY3JfYmV0YV9vZmZzZXRfZGl2MiA8PCAx OworICAgICAgICBzaC0+ZGVibG9jay50Y19vZmZzZXRbQ1JdICAgICA9IHItPnNoX2NyX3RjX29m ZnNldF9kaXYyIDw8IDE7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBzaF9wYXJ0aXRpb25fY29u c3RyYWludHMoVlZDU0ggKnNoLCBjb25zdCBIMjY2UmF3U1BTICpzcHMsIGNvbnN0IEgyNjZSYXdQ aWN0dXJlSGVhZGVyICpwaCkKK3sKKyAgICBjb25zdCBpbnQgbWluX2NiX2xvZzJfc2l6ZV95ID0g c3BzLT5zcHNfbG9nMl9taW5fbHVtYV9jb2RpbmdfYmxvY2tfc2l6ZV9taW51czIgKyAyOworICAg IGludCBtaW5fcXRfbG9nMl9zaXplX3lbMl07CisKKyAgICBpZiAoSVNfSShzaC0+cikpIHsKKyAg ICAgICAgbWluX3F0X2xvZzJfc2l6ZV95W0xVTUFdICAgICAgICA9IChtaW5fY2JfbG9nMl9zaXpl X3kgKyBwaC0+cGhfbG9nMl9kaWZmX21pbl9xdF9taW5fY2JfaW50cmFfc2xpY2VfbHVtYSk7Cisg ICAgICAgIG1pbl9xdF9sb2cyX3NpemVfeVtDSFJPTUFdICAgICAgPSAobWluX2NiX2xvZzJfc2l6 ZV95ICsgcGgtPnBoX2xvZzJfZGlmZl9taW5fcXRfbWluX2NiX2ludHJhX3NsaWNlX2Nocm9tYSk7 CisKKyAgICAgICAgc2gtPm1heF9idF9zaXplW0xVTUFdICAgICAgICAgICA9IDEgPDwgKG1pbl9x dF9sb2cyX3NpemVfeVtMVU1BXSAgKyBwaC0+cGhfbG9nMl9kaWZmX21heF9idF9taW5fcXRfaW50 cmFfc2xpY2VfbHVtYSk7CisgICAgICAgIHNoLT5tYXhfYnRfc2l6ZVtDSFJPTUFdICAgICAgICAg PSAxIDw8IChtaW5fcXRfbG9nMl9zaXplX3lbQ0hST01BXSsgcGgtPnBoX2xvZzJfZGlmZl9tYXhf YnRfbWluX3F0X2ludHJhX3NsaWNlX2Nocm9tYSk7CisKKyAgICAgICAgc2gtPm1heF90dF9zaXpl W0xVTUFdICAgICAgICAgICA9IDEgPDwgKG1pbl9xdF9sb2cyX3NpemVfeVtMVU1BXSAgKyBwaC0+ cGhfbG9nMl9kaWZmX21heF90dF9taW5fcXRfaW50cmFfc2xpY2VfbHVtYSk7CisgICAgICAgIHNo LT5tYXhfdHRfc2l6ZVtDSFJPTUFdICAgICAgICAgPSAxIDw8IChtaW5fcXRfbG9nMl9zaXplX3lb Q0hST01BXSsgcGgtPnBoX2xvZzJfZGlmZl9tYXhfdHRfbWluX3F0X2ludHJhX3NsaWNlX2Nocm9t YSk7CisKKyAgICAgICAgc2gtPm1heF9tdHRfZGVwdGhbTFVNQV0gICAgICAgICA9IHBoLT5waF9t YXhfbXR0X2hpZXJhcmNoeV9kZXB0aF9pbnRyYV9zbGljZV9sdW1hOworICAgICAgICBzaC0+bWF4 X210dF9kZXB0aFtDSFJPTUFdICAgICAgID0gcGgtPnBoX21heF9tdHRfaGllcmFyY2h5X2RlcHRo X2ludHJhX3NsaWNlX2Nocm9tYTsKKworICAgICAgICBzaC0+Y3VfcXBfZGVsdGFfc3ViZGl2ICAg ICAgICAgID0gcGgtPnBoX2N1X3FwX2RlbHRhX3N1YmRpdl9pbnRyYV9zbGljZTsKKyAgICAgICAg c2gtPmN1X2Nocm9tYV9xcF9vZmZzZXRfc3ViZGl2ICA9IHBoLT5waF9jdV9jaHJvbWFfcXBfb2Zm c2V0X3N1YmRpdl9pbnRyYV9zbGljZTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGludCBp ID0gTFVNQTsgaSA8PSBDSFJPTUE7IGkrKykgIHsKKyAgICAgICAgICAgIG1pbl9xdF9sb2cyX3Np emVfeVtpXSAgICAgICAgPSAobWluX2NiX2xvZzJfc2l6ZV95ICsgcGgtPnBoX2xvZzJfZGlmZl9t aW5fcXRfbWluX2NiX2ludGVyX3NsaWNlKTsKKyAgICAgICAgICAgIHNoLT5tYXhfYnRfc2l6ZVtp XSAgICAgICAgICAgPSAxIDw8IChtaW5fcXRfbG9nMl9zaXplX3lbaV0gICsgcGgtPnBoX2xvZzJf ZGlmZl9tYXhfYnRfbWluX3F0X2ludGVyX3NsaWNlKTsKKyAgICAgICAgICAgIHNoLT5tYXhfdHRf c2l6ZVtpXSAgICAgICAgICAgPSAxIDw8IChtaW5fcXRfbG9nMl9zaXplX3lbaV0gICsgcGgtPnBo X2xvZzJfZGlmZl9tYXhfdHRfbWluX3F0X2ludGVyX3NsaWNlKTsKKyAgICAgICAgICAgIHNoLT5t YXhfbXR0X2RlcHRoW2ldICAgICAgICAgPSBwaC0+cGhfbWF4X210dF9oaWVyYXJjaHlfZGVwdGhf aW50ZXJfc2xpY2U7CisgICAgICAgIH0KKworICAgICAgICBzaC0+Y3VfcXBfZGVsdGFfc3ViZGl2 ICAgICAgICAgID0gcGgtPnBoX2N1X3FwX2RlbHRhX3N1YmRpdl9pbnRlcl9zbGljZTsKKyAgICAg ICAgc2gtPmN1X2Nocm9tYV9xcF9vZmZzZXRfc3ViZGl2ICA9IHBoLT5waF9jdV9jaHJvbWFfcXBf b2Zmc2V0X3N1YmRpdl9pbnRlcl9zbGljZTsKKyAgICB9CisKKyAgICBzaC0+bWluX3F0X3NpemVb TFVNQV0gICA9IDEgPDwgbWluX3F0X2xvZzJfc2l6ZV95W0xVTUFdOworICAgIHNoLT5taW5fcXRf c2l6ZVtDSFJPTUFdID0gMSA8PCBtaW5fcXRfbG9nMl9zaXplX3lbQ0hST01BXTsKK30KKworc3Rh dGljIHZvaWQgc2hfZW50cnlfcG9pbnRzKFZWQ1NIICpzaCwgY29uc3QgSDI2NlJhd1NQUyAqc3Bz LCBjb25zdCBWVkNQUFMgKnBwcykKK3sKKyAgICBpZiAoc3BzLT5zcHNfZW50cnlfcG9pbnRfb2Zm c2V0c19wcmVzZW50X2ZsYWcpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDEsIGogPSAwOyBpIDwg c2gtPm51bV9jdHVzX2luX2N1cnJfc2xpY2U7IGkrKykgeworICAgICAgICAgICAgY29uc3QgaW50 IHByZV9jdGJfYWRkcl94ID0gc2gtPmN0Yl9hZGRyX2luX2N1cnJfc2xpY2VbaSAtIDFdICUgcHBz LT5jdGJfd2lkdGg7CisgICAgICAgICAgICBjb25zdCBpbnQgcHJlX2N0Yl9hZGRyX3kgPSBzaC0+ Y3RiX2FkZHJfaW5fY3Vycl9zbGljZVtpIC0gMV0gLyBwcHMtPmN0Yl93aWR0aDsKKyAgICAgICAg ICAgIGNvbnN0IGludCBjdGJfYWRkcl94ICAgICA9IHNoLT5jdGJfYWRkcl9pbl9jdXJyX3NsaWNl W2ldICUgcHBzLT5jdGJfd2lkdGg7CisgICAgICAgICAgICBjb25zdCBpbnQgY3RiX2FkZHJfeSAg ICAgPSBzaC0+Y3RiX2FkZHJfaW5fY3Vycl9zbGljZVtpXSAvIHBwcy0+Y3RiX3dpZHRoOworICAg ICAgICAgICAgaWYgKHBwcy0+Y3RiX3RvX3Jvd19iZFtjdGJfYWRkcl95XSAhPSBwcHMtPmN0Yl90 b19yb3dfYmRbcHJlX2N0Yl9hZGRyX3ldIHx8CisgICAgICAgICAgICAgICAgcHBzLT5jdGJfdG9f Y29sX2JkW2N0Yl9hZGRyX3hdICE9IHBwcy0+Y3RiX3RvX2NvbF9iZFtwcmVfY3RiX2FkZHJfeF0g fHwKKyAgICAgICAgICAgICAgICAoY3RiX2FkZHJfeSAhPSBwcmVfY3RiX2FkZHJfeSAmJiBzcHMt PnNwc19lbnRyb3B5X2NvZGluZ19zeW5jX2VuYWJsZWRfZmxhZykpIHsKKyAgICAgICAgICAgICAg ICBzaC0+ZW50cnlfcG9pbnRfc3RhcnRfY3R1W2orK10gPSBpOworICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgfQorfQorCitzdGF0aWMgaW50IHNoX2Rlcml2ZShWVkNTSCAqc2gsIGNvbnN0 IFZWQ0ZyYW1lUGFyYW1TZXRzICpmcHMpCit7CisgICAgY29uc3QgSDI2NlJhd1NQUyAqc3BzICAg ICAgICAgICA9IGZwcy0+c3BzLT5yOworICAgIGNvbnN0IEgyNjZSYXdQUFMgKnBwcyAgICAgICAg ICAgPSBmcHMtPnBwcy0+cjsKKyAgICBjb25zdCBIMjY2UmF3UGljdHVyZUhlYWRlciAqcGggID0g ZnBzLT5waC5yOworCisgICAgc2hfc2xpY2VfYWRkcmVzcyhzaCwgc3BzLCBmcHMtPnBwcyk7Cisg ICAgc2hfaW50ZXIoc2gsIHNwcywgcHBzKTsKKyAgICBzaF9xcF95KHNoLCBwcHMsIHBoKTsKKyAg ICBzaF9kZWJsb2NrX29mZnNldHMoc2gpOworICAgIHNoX3BhcnRpdGlvbl9jb25zdHJhaW50cyhz aCwgc3BzLCBwaCk7CisgICAgc2hfZW50cnlfcG9pbnRzKHNoLCBzcHMsIGZwcy0+cHBzKTsKKwor ICAgIHJldHVybiAwOworfQorCitpbnQgZmZfdnZjX2RlY29kZV9zaChWVkNTSCAqc2gsIGNvbnN0 IFZWQ0ZyYW1lUGFyYW1TZXRzICpmcHMsIGNvbnN0IENvZGVkQml0c3RyZWFtVW5pdCAqdW5pdCkK K3sKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCFmcHMtPnNwcyB8fCAhZnBzLT5wcHMpCisgICAg ICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgZmZfcmVmc3RydWN0X3JlcGxh Y2UoJnNoLT5yLCB1bml0LT5jb250ZW50X3JlZik7CisKKyAgICByZXQgPSBzaF9kZXJpdmUoc2gs IGZwcyk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y19wcy5oIGIvbGliYXZjb2Rl Yy92dmMvdnZjX3BzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZWRl NGU3NDAwOQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19wcy5oCkBAIC0w LDAgKzEsMjYzIEBACisvKgorICogVlZDIHBhcmFtZXRlciBzZXQgcGFyc2VyCisgKgorICogQ29w eXJpZ2h0IChDKSAyMDIzIE51byBNaQorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBl Zy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK KyAqLworCisjaWZuZGVmIEFWQ09ERUNfVlZDX1ZWQ19QU19ICisjZGVmaW5lIEFWQ09ERUNfVlZD X1ZWQ19QU19ICisKKyNpbmNsdWRlICJsaWJhdmNvZGVjL2Nic19oMjY2LmgiCisjaW5jbHVkZSAi bGliYXZjb2RlYy92dmMuaCIKKworI2RlZmluZSBJU19JRFIocykgICgocyktPnZjbF91bml0X3R5 cGUgPT0gVlZDX0lEUl9XX1JBREwgfHwgKHMpLT52Y2xfdW5pdF90eXBlID09IFZWQ19JRFJfTl9M UCkKKyNkZWZpbmUgSVNfQ1JBKHMpICAoKHMpLT52Y2xfdW5pdF90eXBlID09IFZWQ19DUkFfTlVU KQorI2RlZmluZSBJU19JUkFQKHMpIChJU19JRFIocykgfHwgSVNfQ1JBKHMpKQorI2RlZmluZSBJ U19HRFIocykgICgocyktPnZjbF91bml0X3R5cGUgPT0gVlZDX0dEUl9OVVQpCisjZGVmaW5lIElT X0NWU1MocykgKElTX0lSQVAocyl8fCBJU19HRFIocykpCisjZGVmaW5lIElTX0NMVlNTKHMpIChJ U19DVlNTKHMpICYmIHMtPm5vX291dHB1dF9iZWZvcmVfcmVjb3ZlcnlfZmxhZykKKyNkZWZpbmUg SVNfUkFTTChzKSAoKHMpLT52Y2xfdW5pdF90eXBlID09IFZWQ19SQVNMX05VVCkKKyNkZWZpbmUg SVNfUkFETChzKSAoKHMpLT52Y2xfdW5pdF90eXBlID09IFZWQ19SQURMX05VVCkKKworI2RlZmlu ZSBJU19JKHJzaCkgKChyc2gpLT5zaF9zbGljZV90eXBlID09IFZWQ19TTElDRV9UWVBFX0kpCisj ZGVmaW5lIElTX1AocnNoKSAoKHJzaCktPnNoX3NsaWNlX3R5cGUgPT0gVlZDX1NMSUNFX1RZUEVf UCkKKyNkZWZpbmUgSVNfQihyc2gpICgocnNoKS0+c2hfc2xpY2VfdHlwZSA9PSBWVkNfU0xJQ0Vf VFlQRV9CKQorCisjZGVmaW5lIElOVl9QT0MgSU5UX01JTgorI2RlZmluZSBHRFJfSVNfUkVDT1ZF UkVEKHMpICAocy0+Z2RyX3JlY292ZXJ5X3BvaW50X3BvYyA9PSBJTlZfUE9DKQorI2RlZmluZSBH RFJfU0VUX1JFQ09WRVJFRChzKSAocy0+Z2RyX3JlY292ZXJ5X3BvaW50X3BvYyA9ICBJTlZfUE9D KQorCisjZGVmaW5lIExNQ1NfTUFYX0JJVF9ERVBUSCAgMTIKKyNkZWZpbmUgTE1DU19NQVhfTFVU X1NJWkUgICAoMSA8PCBMTUNTX01BWF9CSVRfREVQVEgpCisjZGVmaW5lIExNQ1NfTUFYX0JJTl9T SVpFICAgMTYKKyNkZWZpbmUgTEFERl9NQVhfSU5URVJWQUwgICA1CisKK2VudW0geworICAgIENI Uk9NQV9GT1JNQVRfTU9OTywKKyAgICBDSFJPTUFfRk9STUFUXzQyMCwKKyAgICBDSFJPTUFfRk9S TUFUXzQyMiwKKyAgICBDSFJPTUFfRk9STUFUXzQ0NCwKK307CisKK3R5cGVkZWYgc3RydWN0IFZW Q1NQUyB7CisgICAgY29uc3QgSDI2NlJhd1NQUyAqcjsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQorCisgICAgLy9kZXJp dmVkIHZhbHVlcworICAgIHVpbnQxNl90ICAgIHdpZHRoOworICAgIHVpbnQxNl90ICAgIGhlaWdo dDsKKyAgICB1aW50OF90ICAgICBoc2hpZnRbVlZDX01BWF9TQU1QTEVfQVJSQVlTXTsKKyAgICB1 aW50OF90ICAgICB2c2hpZnRbVlZDX01BWF9TQU1QTEVfQVJSQVlTXTsKKyAgICB1aW50MzJfdCAg ICBtYXhfcGljX29yZGVyX2NudF9sc2I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88 IE1heFBpY09yZGVyQ250THNiCisKKyAgICB1aW50OF90ICAgICBwaXhlbF9zaGlmdDsKKyAgICBl bnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2ZtdDsKKworICAgIHVpbnQ4X3QgICAgIGJpdF9kZXB0aDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IEJpdERlcHRoCisg ICAgdWludDhfdCAgICAgcXBfYmRfb2Zmc2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vLzwgUXBCZE9mZnNldAorICAgIHVpbnQ4X3QgICAgIGN0Yl9sb2cyX3NpemVf eTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IEN0YkxvZzJTaXplWQor ICAgIHVpbnQ4X3QgICAgIGN0Yl9zaXplX3k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLy88IEN0YlNpemVZCisgICAgdWludDhfdCAgICAgbWluX2NiX2xvZzJfc2l6 ZV95OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgTWluQ2JMb2cyU2l6ZVkK KyAgICB1aW50OF90ICAgICBtaW5fY2Jfc2l6ZV95OyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8vPCBNaW5DYlNpemVZCisgICAgdWludDhfdCAgICAgbWF4X3RiX3NpemVf eTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgTWF4VGJTaXplWQor ICAgIHVpbnQ4X3QgICAgIG1heF90c19zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLy88IE1heFRzU2l6ZQorICAgIHVpbnQ4X3QgICAgIG1heF9udW1fbWVyZ2Vf Y2FuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IE1heE51bU1lcmdlQ2Fu ZAorICAgIHVpbnQ4X3QgICAgIG1heF9udW1faWJjX21lcmdlX2NhbmQ7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IE1heE51bUliY01lcmdlQ2FuZAorICAgIHVpbnQ4X3QgICAgIG1h eF9udW1fZ3BtX21lcmdlX2NhbmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IE1h eE51bUdwbU1lcmdlQ2FuZAorICAgIHVpbnQ4X3QgICAgIG51bV9sYWRmX2ludGVydmFsczsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IHNwc19udW1fbGFkZl9pbnRlcnZhbHNf bWludXMyICsgMjsKKyAgICB1aW50MzJfdCAgICBsYWRmX2ludGVydmFsX2xvd2VyX2JvdW5kW0xB REZfTUFYX0lOVEVSVkFMXTsgICAgICAgLy8vPCBTcHNMYWRmSW50ZXJ2YWxMb3dlckJvdW5kW10K KyAgICB1aW50OF90ICAgICBsb2cyX3BhcmFsbGVsX21lcmdlX2xldmVsOyAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8vPCBzcHNfbG9nMl9wYXJhbGxlbF9tZXJnZV9sZXZlbF9taW51czIgKyAy OworICAgIHVpbnQ4X3QgICAgIGxvZzJfdHJhbnNmb3JtX3JhbmdlOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IExvZzJUcmFuc2Zvcm1SYW5nZQorICAgIGludDhfdCAgICAgIGNo cm9tYV9xcF90YWJsZVszXVtWVkNfTUFYX1BPSU5UU19JTl9RUF9UQUJMRV07ICAgICAvLy88IENo cm9tYVFwVGFibGUKK30gVlZDU1BTOworCit0eXBlZGVmIHN0cnVjdCBEQlBhcmFtcyB7CisgICAg aW50OF90IGJldGFfb2Zmc2V0W1ZWQ19NQVhfU0FNUExFX0FSUkFZU107CisgICAgaW50OF90IHRj X29mZnNldFtWVkNfTUFYX1NBTVBMRV9BUlJBWVNdOworfSBEQlBhcmFtczsKKwordHlwZWRlZiBz dHJ1Y3QgVlZDUFBTIHsKKyAgICBjb25zdCBIMjY2UmF3UFBTICpyOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBSZWZTdHJ1Y3QgcmVmZXJlbmNlCisKKyAg ICAvL2Rlcml2ZWQgdmFsdWU7CisgICAgaW50OF90ICAgY2hyb21hX3FwX29mZnNldFszXTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgcHBzX2NiX3FwX29mZnNldCwgcHBz X2NyX3FwX29mZnNldCwgcHBzX2pvaW50X2NiY3JfcXBfb2Zmc2V0X3ZhbHVlCisgICAgaW50OF90 ICAgY2hyb21hX3FwX29mZnNldF9saXN0WzZdWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vLzwgcHBzX2NiX3FwX29mZnNldF9saXN0LCBwcHNfY3JfcXBfb2Zmc2V0X2xpc3QsIHBwc19q b2ludF9jYmNyX3FwX29mZnNldF9saXN0CisKKyAgICB1aW50MTZfdCB3aWR0aDsKKyAgICB1aW50 MTZfdCBoZWlnaHQ7CisKKyAgICB1aW50MTZfdCBzbGljZV9zdGFydF9vZmZzZXRbVlZDX01BWF9T TElDRVNdOworICAgIHVpbnQxNl90IG51bV9jdHVzX2luX3NsaWNlIFtWVkNfTUFYX1NMSUNFU107 CisKKyAgICB1aW50MTZfdCBtaW5fY2Jfd2lkdGg7CisgICAgdWludDE2X3QgbWluX2NiX2hlaWdo dDsKKworICAgIHVpbnQxNl90IGN0Yl93aWR0aDsKKyAgICB1aW50MTZfdCBjdGJfaGVpZ2h0Owor ICAgIHVpbnQzMl90IGN0Yl9jb3VudDsKKworICAgIHVpbnQxNl90IG1pbl9wdV93aWR0aDsKKyAg ICB1aW50MTZfdCBtaW5fcHVfaGVpZ2h0OworICAgIHVpbnQxNl90IG1pbl90dV93aWR0aDsKKyAg ICB1aW50MTZfdCBtaW5fdHVfaGVpZ2h0OworCisgICAgdWludDMyX3QgKmN0Yl9hZGRyX2luX3Ns aWNlOyAgICAgICAgICAgIC8vLzwgQ3RiQWRkckluQ3VyclNsaWNlIGZvciBlbnRpcmUgcGljdHVy ZQorICAgIHVpbnQxNl90ICpjb2xfYmQ7CisgICAgdWludDE2X3QgKnJvd19iZDsKKyAgICB1aW50 MTZfdCAqY3RiX3RvX2NvbF9iZDsKKyAgICB1aW50MTZfdCAqY3RiX3RvX3Jvd19iZDsKKworICAg IHVpbnQxNl90IHdpZHRoMzI7ICAgICAgICAgICAgICAgICAgICAgICAvLy88IHdpZHRoICBpbiAz MiBwaXhlbHMKKyAgICB1aW50MTZfdCBoZWlnaHQzMjsgICAgICAgICAgICAgICAgICAgICAgLy8v PCBoZWlnaHQgaW4gMzIgcGl4ZWxzCisgICAgdWludDE2X3Qgd2lkdGg2NDsgICAgICAgICAgICAg ICAgICAgICAgIC8vLzwgd2lkdGggIGluIDY0IHBpeGVscworICAgIHVpbnQxNl90IGhlaWdodDY0 OyAgICAgICAgICAgICAgICAgICAgICAvLy88IGhlaWdodCBpbiA2NCBwaXhlbHMKKworICAgIHVp bnQxNl90IHJlZl93cmFwYXJvdW5kX29mZnNldDsgICAgICAgICAvLy88IFBwc1JlZldyYXBhcm91 bmRPZmZzZXQKKworfSBWVkNQUFM7CisKKyNkZWZpbmUgTUFYX1dFSUdIVFMgMTUKK3R5cGVkZWYg c3RydWN0IFByZWRXZWlnaHRUYWJsZSB7CisgICAgdWludDhfdCBsb2cyX2Rlbm9tWzJdOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBsdW1hX2xvZzJfd2VpZ2h0X2Rl bm9tLCBDaHJvbWFMb2cyV2VpZ2h0RGVub20KKworICAgIHVpbnQ4X3QgbmJfd2VpZ2h0c1syXTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgbnVtX2wwX3dlaWdodHMs IG51bV9sMV93ZWlnaHRzCisgICAgdWludDhfdCB3ZWlnaHRfZmxhZ1syXVsyXVtNQVhfV0VJR0hU U107ICAgICAgICAgICAgICAgICAgICAgLy8vPCBsdW1hX3dlaWdodF9sMF9mbGFnLCBjaHJvbWFf d2VpZ2h0X2wwX2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBsdW1hX3dlaWdodF9sMV9mbGFnLCBjaHJvbWFf d2VpZ2h0X2wxX2ZsYWcsCisgICAgaW50MTZfdCB3ZWlnaHRbMl1bVlZDX01BWF9TQU1QTEVfQVJS QVlTXVtNQVhfV0VJR0hUU107ICAgICAgLy8vPCBMdW1hV2VpZ2h0TDAsIEx1bWFXZWlnaHRMMSwg Q2hyb21hV2VpZ2h0TDAsIENocm9tYVdlaWdodEwxCisgICAgaW50MTZfdCBvZmZzZXRbMl1bVlZD X01BWF9TQU1QTEVfQVJSQVlTXVtNQVhfV0VJR0hUU107ICAgICAgLy8vPCBsdW1hX29mZnNldF9s MCwgbHVtYV9vZmZzZXRfbDEsIENocm9tYU9mZnNldEwwLCBDaHJvbWFPZmZzZXRMMQorfSBQcmVk V2VpZ2h0VGFibGU7CisKK3R5cGVkZWYgc3RydWN0IFZWQ1BIIHsKKyAgICBjb25zdCBIMjY2UmF3 UGljdHVyZUhlYWRlciAqcjsKKyAgICB2b2lkICpycmVmOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IFJlZlN0cnVjdCByZWZlcmVuY2UsIGJhY2tpbmcgcGggYWJvdmUK KworICAgIC8vZGVyaXZlZCB2YWx1ZXMKKyAgICB1aW50MzJfdCBtYXhfbnVtX3N1YmJsb2NrX21l cmdlX2NhbmQ7ICAgICAgICAgICAvLy88IE1heE51bVN1YmJsb2NrTWVyZ2VDYW5kCisgICAgaW50 MzJfdCAgcG9jOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBQaWNPcmRl ckNudFZhbAorICAgIFByZWRXZWlnaHRUYWJsZSBwd3Q7Cit9IFZWQ1BIOworCisjZGVmaW5lIEFM Rl9OVU1fRklMVEVSU19MVU1BICAgIDI1CisjZGVmaW5lIEFMRl9OVU1fRklMVEVSU19DSFJPTUEg ICA4CisjZGVmaW5lIEFMRl9OVU1fRklMVEVSU19DQyAgICAgICA1CisKKyNkZWZpbmUgQUxGX05V TV9DT0VGRl9MVU1BICAgICAgMTIKKyNkZWZpbmUgQUxGX05VTV9DT0VGRl9DSFJPTUEgICAgIDYK KyNkZWZpbmUgQUxGX05VTV9DT0VGRl9DQyAgICAgICAgIDcKKwordHlwZWRlZiBzdHJ1Y3QgVlZD QUxGIHsKKyAgICBpbnQxNl90IGx1bWFfY29lZmYgICAgIFtBTEZfTlVNX0ZJTFRFUlNfTFVNQV1b QUxGX05VTV9DT0VGRl9MVU1BXTsKKyAgICB1aW50OF90IGx1bWFfY2xpcF9pZHggIFtBTEZfTlVN X0ZJTFRFUlNfTFVNQV1bQUxGX05VTV9DT0VGRl9MVU1BXTsKKworICAgIHVpbnQ4X3QgbnVtX2No cm9tYV9maWx0ZXJzOworICAgIGludDE2X3QgY2hyb21hX2NvZWZmICAgW0FMRl9OVU1fRklMVEVS U19DSFJPTUFdW0FMRl9OVU1fQ09FRkZfQ0hST01BXTsKKyAgICB1aW50OF90IGNocm9tYV9jbGlw X2lkeFtBTEZfTlVNX0ZJTFRFUlNfQ0hST01BXVtBTEZfTlVNX0NPRUZGX0NIUk9NQV07CisKKyAg ICB1aW50OF90IG51bV9jY19maWx0ZXJzWzJdOyAgICAgICAgLy8vPCBhbGZfY2NfY2JfZmlsdGVy c19zaWduYWxsZWRfbWludXMxICsgMSwgYWxmX2NjX2NyX2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVz MSArIDEKKyAgICBpbnQxNl90IGNjX2NvZWZmWzJdW0FMRl9OVU1fRklMVEVSU19DQ11bQUxGX05V TV9DT0VGRl9DQ107Cit9IFZWQ0FMRjsKKworZW51bSB7CisgIFNMX1NUQVJUXzJ4MiAgICA9IDAs CisgIFNMX1NUQVJUXzR4NCAgICA9IDIsCisgIFNMX1NUQVJUXzh4OCAgICA9IDgsCisgIFNMX1NU QVJUXzE2eDE2ICA9IDE0LAorICBTTF9TVEFSVF8zMngzMiAgPSAyMCwKKyAgU0xfU1RBUlRfNjR4 NjQgID0gMjYsCisgIFNMX01BWF9JRCAgICAgICA9IDI4LAorfTsKKworI2RlZmluZSBTTF9NQVhf TUFUUklYX1NJWkUgOAorCit0eXBlZGVmIHN0cnVjdCBWVkNTY2FsaW5nTGlzdCB7CisgICAgdWlu dDhfdCBzY2FsaW5nX21hdHJpeF9yZWNbU0xfTUFYX0lEXVtTTF9NQVhfTUFUUklYX1NJWkUgKiBT TF9NQVhfTUFUUklYX1NJWkVdOyAgLy8vPCBTY2FsaW5nTWF0cml4UmVjCisgICAgdWludDhfdCBz Y2FsaW5nX21hdHJpeF9kY19yZWNbU0xfTUFYX0lEIC0gU0xfU1RBUlRfMTZ4MTZdOyAgICAgICAg ICAgICAgICAgICAgICAgLy8vPCBTY2FsaW5nTWF0cml4RGNSZWNbcmVmSWQg4oiSIDE0XQorfSBW VkNTY2FsaW5nTGlzdDsKKwordHlwZWRlZiBzdHJ1Y3QgVlZDTE1DUyB7CisgICAgdWludDhfdCAg bWluX2Jpbl9pZHg7CisgICAgdWludDhfdCAgbWF4X2Jpbl9pZHg7CisKKyAgICAvLyoyIGZvciBo aWdoIGRlcHRoCisgICAgdWludDhfdCAgZndkX2x1dFtMTUNTX01BWF9MVVRfU0laRSAqIDJdOwor ICAgIHVpbnQ4X3QgIGludl9sdXRbTE1DU19NQVhfTFVUX1NJWkUgKiAyXTsKKworICAgIHVpbnQx Nl90IHBpdm90W0xNQ1NfTUFYX0JJTl9TSVpFICsgMV07CisgICAgdWludDE2X3QgY2hyb21hX3Nj YWxlX2NvZWZmW0xNQ1NfTUFYX0JJTl9TSVpFXTsKK30gVlZDTE1DUzsKKworI2RlZmluZSBWVkNf TUFYX0FMRl9DT1VOVCAgICAgICAgOAorI2RlZmluZSBWVkNfTUFYX0xNQ1NfQ09VTlQgICAgICAg NAorI2RlZmluZSBWVkNfTUFYX1NMX0NPVU5UICAgICAgICAgOAorCit0eXBlZGVmIHN0cnVjdCBW VkNQYXJhbVNldHMgeworICAgIGNvbnN0IFZWQ1NQUyAgICAgICAgICAgICpzcHNfbGlzdFtWVkNf TUFYX1NQU19DT1VOVF07ICAgICAgIC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQorICAgIGNvbnN0 IFZWQ1BQUyAgICAgICAgICAgICpwcHNfbGlzdFtWVkNfTUFYX1BQU19DT1VOVF07ICAgICAgIC8v LzwgUmVmU3RydWN0IHJlZmVyZW5jZQorICAgIGNvbnN0IFZWQ0FMRiAgICAgICAgICAgICphbGZf bGlzdFtWVkNfTUFYX0FMRl9DT1VOVF07ICAgICAgIC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQor ICAgIGNvbnN0IEgyNjZSYXdBUFMgICAgICAgICpsbWNzX2xpc3RbVlZDX01BWF9MTUNTX0NPVU5U XTsgICAgIC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQorICAgIGNvbnN0IFZWQ1NjYWxpbmdMaXN0 ICAgICpzY2FsaW5nX2xpc3RbVlZDX01BWF9TTF9DT1VOVF07ICAgIC8vLzwgUmVmU3RydWN0IHJl ZmVyZW5jZQorfSBWVkNQYXJhbVNldHM7CisKK3R5cGVkZWYgc3RydWN0IFZWQ0ZyYW1lUGFyYW1T ZXRzIHsKKyAgICBjb25zdCBWVkNTUFMgICAgICAgICAgICpzcHM7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IFJlZlN0cnVjdCByZWZlcmVuY2UKKyAgICBjb25zdCBWVkNQUFMg ICAgICAgICAgICpwcHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFJlZlN0 cnVjdCByZWZlcmVuY2UKKyAgICBWVkNQSCAgICAgICAgICAgICAgICAgICBwaDsKKyAgICBjb25z dCBWVkNBTEYgICAgICAgICAgICphbGZfbGlzdFtWVkNfTUFYX0FMRl9DT1VOVF07ICAgICAgICAv Ly88IFJlZlN0cnVjdCByZWZlcmVuY2UKKyAgICBWVkNMTUNTICAgICAgICAgICAgICAgICBsbWNz OworICAgIGNvbnN0IFZWQ1NjYWxpbmdMaXN0ICAgKnNsOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQorfSBWVkNGcmFtZVBhcmFtU2V0czsK KwordHlwZWRlZiBzdHJ1Y3QgVlZDU0ggeworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAq cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBSZWZTdHJ1Y3QgcmVmZXJlbmNlCisK KyAgICAvLyBkZXJpdmVkIHZhbHVlcworICAgIC8vIGN0dSBhZGRyZXNzCisgICAgdWludDMyX3Qg ICAgICAgIG51bV9jdHVzX2luX2N1cnJfc2xpY2U7ICAgICAgICAgICAgICAgICAvLy88IE51bUN0 dXNJbkN1cnJTbGljZQorICAgIGNvbnN0IHVpbnQzMl90KiBjdGJfYWRkcl9pbl9jdXJyX3NsaWNl OyAgICAgICAgICAgICAgICAgLy8vPCBDdGJBZGRySW5DdXJyU2xpY2UKKworICAgIC8vIGludGVy CisgICAgUHJlZFdlaWdodFRhYmxlIHB3dDsKKyAgICBpbnQ4X3QgICByZWZfaWR4X3N5bVsyXTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUmVmSWR4U3ltTDAsIFJlZklkeFN5 bUwxCisKKyAgICAvLyBxcF95CisgICAgaW50OF90ICAgc2xpY2VfcXBfeTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLy88IFNsaWNlUXBZCisKKyAgICAvLyBkZWJsb2NrX29m ZnNldHMKKyAgICBEQlBhcmFtcyBkZWJsb2NrOworCisgICAgLy8gcGFydGl0aW9uIGNvbnN0cmFp bnMKKyAgICB1aW50OF90ICBtaW5fcXRfc2l6ZVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vLzwgTWluUXRTaXplWSwgTWluUXRTaXplQworICAgIHVpbnQ4X3QgIG1heF9idF9z aXplWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBNYXhCdFNpemVZLCBN YXhCdFNpemVDCisgICAgdWludDhfdCAgbWF4X3R0X3NpemVbMl07ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IE1heFR0U2l6ZVksIE1heFR0U2l6ZUMKKyAgICB1aW50OF90ICBt YXhfbXR0X2RlcHRoWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgTWF4TXR0 RGVwdGhZLCBNYXhNdHREZXB0aEMKKyAgICB1aW50OF90ICBjdV9xcF9kZWx0YV9zdWJkaXY7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgQ3VRcERlbHRhU3ViZGl2CisgICAgdWludDhf dCAgY3VfY2hyb21hX3FwX29mZnNldF9zdWJkaXY7ICAgICAgICAgICAgICAgICAgICAvLy88IEN1 Q2hyb21hUXBPZmZzZXRTdWJkaXYKKworICAgIC8vIGVudHJpZXMKKyAgICB1aW50MzJfdCBlbnRy eV9wb2ludF9zdGFydF9jdHVbVlZDX01BWF9FTlRSWV9QT0lOVFNdOyAgIC8vLzwgZW50cnkgcG9p bnQgc3RhcnQgaW4gY3R1X2FkZHIKK30gVlZDU0g7CisKK3N0cnVjdCBWVkNDb250ZXh0OworCitp bnQgZmZfdnZjX2RlY29kZV9mcmFtZV9wcyhWVkNGcmFtZVBhcmFtU2V0cyAqZnBzLCBzdHJ1Y3Qg VlZDQ29udGV4dCAqcyk7CitpbnQgZmZfdnZjX2RlY29kZV9hcHMoVlZDUGFyYW1TZXRzICpwcywg Y29uc3QgQ29kZWRCaXRzdHJlYW1Vbml0ICp1bml0KTsKK2ludCBmZl92dmNfZGVjb2RlX3NoKFZW Q1NIICpzaCwgY29uc3QgVlZDRnJhbWVQYXJhbVNldHMgKnBzLCBjb25zdCBDb2RlZEJpdHN0cmVh bVVuaXQgKnVuaXQpOwordm9pZCBmZl92dmNfZnJhbWVfcHNfZnJlZShWVkNGcmFtZVBhcmFtU2V0 cyAqZnBzKTsKK3ZvaWQgZmZfdnZjX3BzX3VuaW5pdChWVkNQYXJhbVNldHMgKnBzKTsKKworI2Vu ZGlmIC8qIEFWQ09ERUNfVlZDX1ZWQ19QU19IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2 Yy92dmNkZWMuaCBiL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oCmluZGV4IDg3NWZmZTBhOWEuLmIx NzU3YjAwYjUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oCisrKyBiL2xpYmF2 Y29kZWMvdnZjL3Z2Y2RlYy5oCkBAIC0yNiw2ICsyNiw4IEBACiAKICNpbmNsdWRlICJsaWJhdmNv ZGVjL3Z2Yy5oIgogCisjaW5jbHVkZSAidnZjX3BzLmgiCisKICNkZWZpbmUgTFVNQSAgICAgICAg ICAgICAgICAgICAgMAogI2RlZmluZSBDSFJPTUEgICAgICAgICAgICAgICAgICAxCiAjZGVmaW5l IENCICAgICAgICAgICAgICAgICAgICAgIDEKQEAgLTE3Niw2ICsxNzgsMTEgQEAgdHlwZWRlZiBz dHJ1Y3QgVlZDRnJhbWVDb250ZXh0IHsKIHR5cGVkZWYgc3RydWN0IFZWQ0NvbnRleHQgewogICAg IHN0cnVjdCBBVkNvZGVjQ29udGV4dCAqYXZjdHg7CiAKKyAgICBDb2RlZEJpdHN0cmVhbUNvbnRl eHQgKmNiYzsKKyAgICBDb2RlZEJpdHN0cmVhbUZyYWdtZW50IGN1cnJlbnRfZnJhbWU7CisKKyAg ICBWVkNQYXJhbVNldHMgcHM7CisKICAgICBpbnQgdGVtcG9yYWxfaWQ7ICAgICAgICAvLy88IHRl bXBvcmFsX2lkX3BsdXMxIC0gMQogICAgIGludCBwb2NfdGlkMDsKIAotLSAKMi4yNS4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwg bWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsg YWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJq ZWN0ICJ1bnN1YnNjcmliZSIuCg==