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 F365646AF3 for ; Mon, 1 Jan 2024 14:13:53 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3D19368CAEC; Mon, 1 Jan 2024 16:13:39 +0200 (EET) 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 85D8168C782 for ; Mon, 1 Jan 2024 16:13:31 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LmCSqCGOMeN8mI3DYNibZlHaQy5Tn3WRIgQ1v63nabVEmmWRCZ0cWJ+JLyqKKeeDM5Kn1WkMenSf+FYWyfU4bf2jXr9ZjrOnuVoCjq4OPzyBo38awLzrn2fvB/UXibeV1vIak0BAcPWr0eSfgwUdnBUZoz/hD8omr6N4vtB1Btn3/N9GqSUB+hJHuskYBZ739kziXkVJnWPX14whSs5VhyM2AbDUTY5tLoDP22SOVees4JUqWb8aSfhgN1e1piJRi3P0rJn4BaktiD/GWUxoLAaViJpe+2jrSv7VK7UAUMWf3eB69qZ3bftYjheMoESBtizERd9I2lDXIvcKQBXVyw== 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=10vu7FYJW8x3NaQBGf+OeLe9EVofgWDq4QqRY5e5R8Y=; b=OnTDlpl/Yto3abLq+0LVH7Nbhm3Gvlflp7fBL5hJIrUbViEr6qOBgMprB67jLuq6OGEHMgXKRm5r0I5GvWfhQWJc+emcrT5Th1qeN7DGXrWUFrmuaHm8AqrQ07xYv/sNx7VbhY4RHUbp+aRLJv4G6rUa8VMRAUGk+ANJQ5aACUv5ANftozjCox2kj6Go9pRGUI7Ekj0hJDVOGkZPpNuDhFiEWLrouKrVig2OLE5+hyCS+Whz/eVM6+u61V7v8Zu3csJSsgbfNtWYLqRSxsO+MNcN8aGTe7nqD52nD4vwzR5o9mAe/b6w6GCitTSgex8Nfe+4hAYzBLXw67rN6HmF1g== 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=10vu7FYJW8x3NaQBGf+OeLe9EVofgWDq4QqRY5e5R8Y=; b=awNjQ+dHQDt8nHQrTqxa97/9cneIB8oCufYbOz0zpcoyNgi6PiJ7p5HwmD/x1uSQjKIYuhVg5Me1wnPR883qaZxcB0mEykbAP6oEFgvjaY3AztUXUPlw+jcNQdmiPlNF4+iOkvtZG64/vHRUF+5wp50PJuN7Ry3HlMrKh31775iznljHYRiMquEHSWnS8nI/kcjnPyiE0Jk2aR05vPKzt9YySJeobCMVEwZHBj7Gn8s2gGyZsymDNr/U/asWYy0LAitGNpjjk5mTheFQB9jth/vwe8/eGfAY+Tv0dVsUQHb2Gy1dx3uV12OTLuyt5kFhm8SzmozI4skmTBIkC+OaPA== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by TYZPR06MB3965.apcprd06.prod.outlook.com (2603:1096:400:23::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Mon, 1 Jan 2024 14:13:19 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::e139:fd7a:1b66:a3f7]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::e139:fd7a:1b66:a3f7%6]) with mapi id 15.20.7135.023; Mon, 1 Jan 2024 14:13:19 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jan 2024 22:12:29 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240101141239.6623-1-nuomi2021@gmail.com> References: <20240101141239.6623-1-nuomi2021@gmail.com> X-TMN: [UycX6sppydEimcEF00/7SYs+m6KH1QMj] X-ClientProxiedBy: SI1PR02CA0012.apcprd02.prod.outlook.com (2603:1096:4:1f7::8) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20240101141239.6623-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|TYZPR06MB3965:EE_ X-MS-Office365-Filtering-Correlation-Id: a2f19c2a-ae2f-434a-edbe-08dc0ad3ce40 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GWQNQ43afseH3Z4bgPi4ftXvcmdSA3Xkp6Mp8zgLLqsjoy5jbFb8SwvM7b+3PgwC3xyE4+zUNltS0U++ESn7YVr8KQAi0dAtbFjeyGkr1mCKBkjwkEO8I3OtFbCdabnRPauuzZ9+CLFVj+pCrtNLGT9bIkqcUo+uvHA3xmaUJ2ckoxXxj3FxbV6+K5LLYPCPiL0vOdr9eVBWq4uqKZAvykfyAq3h4ZgUXhwJhIznzSnb520g3GIDHJsZ5UvjqxGUxnGSqrV0vYpNR5jngwS5Go/DuZms1UJCufQhsqF1LE9HghO0qHZPvxplewOVuMiRkPdBvqHJyQX2x42DJ0vhrJzxQ84dT8OmZP0xqU37iBlnop5SKymLkIIXZLYnluwxgOk4qdaBtEN9rEts9O6KlqlRYKwUKSWw7gbFIsc3Sej1x29igA3p4Q0Ry26yLkf2TDkpF2NSBu1HJvw1QTbQYkgJU95gR+IE3lRwfHUGLL+Lk1HI8Ioi+5c5YV81K+dUsucgmR0DYMT2BOUp18Uqkl3TOZ4V3h5pBs2bS3O5/egICZKXU3WK05enSI4FIBtSGH0OJaGyoMDf7yIM9/lBPT8fYTBw3hCmTSouhWQMPj39yk3p3ZUSZaJFh/PYj0vS X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZnozdkY5OXNNRjRZUm1WUFBTWDdNU2dhZE12UUR6NWRNWDNVbW1hbkVvYmxp?= =?utf-8?B?Qkk1VkIxc01QcFpDLzJLSWVsdERFQjlBOTRETE5LVVlLZkp1M2JsODByM1pt?= =?utf-8?B?QTdWYUlWcGhSdnNSYXRSajJ0TVhOL2tGbTVpQUs3Rk90TWNJSzFNZG5sNldh?= =?utf-8?B?aEJvTVlBOE1jTSt5TUQ1Z215ZSt0MktUYkRReEFnQU92NnIxU3YxWnU1UEVP?= =?utf-8?B?NFlhS3dsOG1NWjBBYUhtT2k1dGxuZ1c4ZW5JTGx4UHBiaGpHUS9wWmF0WmNs?= =?utf-8?B?dkx2OTByVEpTRnFIZFlLeHg3TWRzcDQySnJFNjBicVhnVllkbllFb1JMeGJl?= =?utf-8?B?MjRXWENXcVlxT1o4cXUwNHBwV0JZY1o2cTNtU2s5NDZ2WGYrWHF1NENlN2Ez?= =?utf-8?B?Q0FxQWhZZFlGd1ZCczQ1T2hqNnBiZjF4MU9WS21DckEzSlhIMm5CVUNTN1JK?= =?utf-8?B?MmM1R3RWWENkaVVOUlkrYU02bzZMZXpqcVFqRUp5YzgvTlUza3NWZFZjUzVZ?= =?utf-8?B?eC9wWkQwVW5JaW1EUmhUb1U5YmpzbVJpZkZBN2hmWXJlR1RQNUpTbi95SytN?= =?utf-8?B?RDFHVHlrWEVkeEtYdHZmeGtab2FtUlVpc1Z4Ly9UK1F3ZHVVVnd6SElhR1h2?= =?utf-8?B?Z21aY04xblA2Sm1hMUdMdDV2WkVuMm9SU1hpUm5UK2VWRWpmNDJyQ2hPMFFk?= =?utf-8?B?aHRCSjJKaTdYdG9FUVpFZHFEb3lmdUQ4WFBTejNjRDI4OEJ2enNVd2xhakoy?= =?utf-8?B?MXRvc0Q2RGRHNGc1ZmIzSHVKWlZwZ3lPclNaTnBCVE1WekZOY05rTFVQOVJ6?= =?utf-8?B?aWJiMnNuaSt0bzlIT1g3b1hKc1VFVnBEbHNtOG8zdSt4RUVpUjFYanlMUmFs?= =?utf-8?B?RUJHRDJZUm9GQ1NYUlg5bnpJejZZQUpnVTNSektaZHE3Ry85ditFakNkaHd0?= =?utf-8?B?UTE2RlEyYS8yanEwN2RiNFcrTVFpMTk4U1o0K3NWek5CL1ArT2JRSEhValNw?= =?utf-8?B?aGhOS3hBOXQ3dlJreXF3UG1BRWJUUGNKeW05Qmk2QmxwT2wyZDE4ZUFYVXFW?= =?utf-8?B?ejZvdlgvSWoyWVY2RFdOcFpEQlRqVStnK3dsVWFBbk5maUU3MEwwaHhJWHB2?= =?utf-8?B?eitaSDlzUnQxMm5JM2tSTnhjR042ZnkvaCswVWwyNWJWRStTUGVUK0RxYTNJ?= =?utf-8?B?ZnRZbWpFSFhjY2oxaE9ZbDczbUp6d2VzNEV5V3JOYWVvcEJtdmtPUFV0bGIz?= =?utf-8?B?YjA1ZS9LdzhreFFCUXpLRjZJb3hOSWVSUkRweVhWV3h6QUdzT1AxUFd1YVRS?= =?utf-8?B?Y011cFBoSUlwMUJMTmpOZmlCZFdIRmRGQktXc3diZmNyOHJacXd3ZVBmcksr?= =?utf-8?B?UzdSUTlCNk14UmxOT0pFNkpnVGhzZEJEdnRJN2tXTDJUdlF3RGo2aHdhUTNp?= =?utf-8?B?bm9ZcU5vUDJyYjVtT295aTRlRXVweUhxY09DelVURG1uc2hCZGptMlRYUGZn?= =?utf-8?B?K0tqRDNDKzNuaE1GLzQ0U1E3WEdPYkxFZldGQXVXYzJXVmlwNldKMGlUdE9i?= =?utf-8?B?MU1meGR4K1VBQTlxSE1pdUtCNldsT3I3ODdkWENOcUZIQ0VENFJlV3FxYUlN?= =?utf-8?B?VUV6bUtXdVM3WHFxaGk2QUk0eVI4MHQ3aTl5YzNSK0dmVTg3VXlVaE1QWis2?= =?utf-8?Q?jfVNyQdERllTs+sdQ5J/?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2f19c2a-ae2f-434a-edbe-08dc0ad3ce40 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jan 2024 14:13:19.6954 (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: TYZPR06MB3965 Subject: [FFmpeg-devel] [PATCH v9 03/13] 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: Frank Plowman , Nuo Mi , Xu Mu , Shaun Loo , Wu Jianhua 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 QykgZGVjb2RlcgoKQ28tYXV0aG9yZWQtYnk6IFh1IE11IDx0b3h1bXVAb3V0bG9vay5jb20+CkNv LWF1dGhvcmVkLWJ5OiBGcmFuayBQbG93bWFuIDxwb3N0QGZyYW5rcGxvd21hbi5jb20+CkNvLWF1 dGhvcmVkLWJ5OiBTaGF1biBMb28gPHNoYXVubG9vMTBAZ21haWwuY29tPgpDby1hdXRob3JlZC1i eTogV3UgSmlhbmh1YSA8dG9xc3h3QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvdnZjL01h a2VmaWxlICAgIHwgICAgNCArLQogbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmMgfCAyNDc4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZjb2RlYy92dmMvdnZjX2Nh YmFjLmggfCAgMTI2ICsrCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmMgICB8ICAgMzIgKwogbGli YXZjb2RlYy92dmMvdnZjX2N0dS5oICAgfCAgNDY0ICsrKysrKysKIGxpYmF2Y29kZWMvdnZjL3Z2 Y2RlYy5oICAgIHwgICAgNyArCiA2IGZpbGVzIGNoYW5nZWQsIDMxMTAgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jYWJh Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmgKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy9N YWtlZmlsZSBiL2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlCmluZGV4IDBlOTgxNjU4MWQuLmEyZjNj YzE4ODMgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29k ZWMvdnZjL01ha2VmaWxlCkBAIC0xLDUgKzEsNyBAQAogY2xlYW46OgogCSQoUk0pICQoQ0xFQU5T VUZGSVhFUzolPWxpYmF2Y29kZWMvdnZjLyUpCiAKLU9CSlMtJChDT05GSUdfVlZDX0RFQ09ERVIp ICAgICAgICAgICs9ICB2dmMvdnZjX2RhdGEubyAgICAgICAgICBcCitPQkpTLSQoQ09ORklHX1ZW Q19ERUNPREVSKSAgICAgICAgICArPSAgdnZjL3Z2Y19jYWJhYy5vICAgICAgICAgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ2Yy92dmNfY3R1Lm8gICAgICAgICAg IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dmMvdnZjX2RhdGEu byAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnZj L3Z2Y19wcy5vICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX2Nh YmFjLmMgYi9saWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi40MzQyZGZjMzQyCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2Rl Yy92dmMvdnZjX2NhYmFjLmMKQEAgLTAsMCArMSwyNDc4IEBACisvKgorICogVlZDIENBQkFDIGRl Y29kZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgTnVvIE1pCisgKgorICogVGhpcyBmaWxl IGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg KgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9u ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQQorICovCisjaW5jbHVkZSAibGliYXZjb2RlYy9jYWJhY19mdW5jdGlv bnMuaCIKKworI2luY2x1ZGUgInZ2Y19jYWJhYy5oIgorI2luY2x1ZGUgInZ2Y19jdHUuaCIKKyNp bmNsdWRlICJ2dmNfZGF0YS5oIgorCisjZGVmaW5lIENBQkFDX01BWF9CSU4gMzEKKworI2RlZmlu ZSBDTlUgMzUKKworZW51bSBTeW50YXhFbGVtZW50IHsKKyAgICBBTEZfQ1RCX0ZMQUcgICAgICAg ICAgICAgICAgICAgID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgIEFM Rl9VU0VfQVBTX0ZMQUcgICAgICAgICAgICAgICAgPSBBTEZfQ1RCX0ZMQUcgICAgICAgICAgICAg ICAgICArIDksCisgICAgQUxGX0NUQl9DQ19DQl9JREMsCisgICAgQUxGX0NUQl9DQ19DUl9JREMg ICAgICAgICAgICAgICA9IEFMRl9DVEJfQ0NfQ0JfSURDICAgICAgICAgICAgICsgMywKKyAgICBB TEZfQ1RCX0ZJTFRFUl9BTFRfSURYICAgICAgICAgID0gQUxGX0NUQl9DQ19DUl9JREMgICAgICAg ICAgICAgKyAzLAorICAgIFNBT19NRVJHRV9GTEFHICAgICAgICAgICAgICAgICAgPSBBTEZfQ1RC X0ZJTFRFUl9BTFRfSURYICAgICAgICArIDIsCisgICAgU0FPX1RZUEVfSURYLAorICAgIFNQTElU X0NVX0ZMQUcsCisgICAgU1BMSVRfUVRfRkxBRyAgICAgICAgICAgICAgICAgICA9IFNQTElUX0NV X0ZMQUcgICAgICAgICAgICAgICAgICsgOSwKKyAgICBNVFRfU1BMSVRfQ1VfVkVSVElDQUxfRkxB RyAgICAgID0gU1BMSVRfUVRfRkxBRyAgICAgICAgICAgICAgICAgKyA2LAorICAgIE1UVF9TUExJ VF9DVV9CSU5BUllfRkxBRyAgICAgICAgPSBNVFRfU1BMSVRfQ1VfVkVSVElDQUxfRkxBRyAgICAr IDUsCisgICAgTk9OX0lOVEVSX0ZMQUcgICAgICAgICAgICAgICAgICA9IE1UVF9TUExJVF9DVV9C SU5BUllfRkxBRyAgICAgICsgNCwKKyAgICBDVV9TS0lQX0ZMQUcgICAgICAgICAgICAgICAgICAg ID0gTk9OX0lOVEVSX0ZMQUcgICAgICAgICAgICAgICAgKyAyLAorICAgIFBSRURfTU9ERV9JQkNf RkxBRyAgICAgICAgICAgICAgPSBDVV9TS0lQX0ZMQUcgICAgICAgICAgICAgICAgICArIDMsCisg ICAgUFJFRF9NT0RFX0ZMQUcgICAgICAgICAgICAgICAgICA9IFBSRURfTU9ERV9JQkNfRkxBRyAg ICAgICAgICAgICsgMywKKyAgICBQUkVEX01PREVfUExUX0ZMQUcgICAgICAgICAgICAgID0gUFJF RF9NT0RFX0ZMQUcgICAgICAgICAgICAgICAgKyAyLAorICAgIENVX0FDVF9FTkFCTEVEX0ZMQUcs CisgICAgSU5UUkFfQkRQQ01fTFVNQV9GTEFHLAorICAgIElOVFJBX0JEUENNX0xVTUFfRElSX0ZM QUcsCisgICAgSU5UUkFfTUlQX0ZMQUcsCisgICAgSU5UUkFfTFVNQV9SRUZfSURYICAgICAgICAg ICAgICA9IElOVFJBX01JUF9GTEFHICAgICAgICAgICAgICAgICsgNCwKKyAgICBJTlRSQV9TVUJQ QVJUSVRJT05TX01PREVfRkxBRyAgID0gSU5UUkFfTFVNQV9SRUZfSURYICAgICAgICAgICAgKyAy LAorICAgIElOVFJBX1NVQlBBUlRJVElPTlNfU1BMSVRfRkxBRywKKyAgICBJTlRSQV9MVU1BX01Q TV9GTEFHLAorICAgIElOVFJBX0xVTUFfTk9UX1BMQU5BUl9GTEFHLAorICAgIElOVFJBX0JEUENN X0NIUk9NQV9GTEFHICAgICAgICAgPSBJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxBRyAgICArIDIs CisgICAgSU5UUkFfQkRQQ01fQ0hST01BX0RJUl9GTEFHLAorICAgIENDTE1fTU9ERV9GTEFHLAor ICAgIENDTE1fTU9ERV9JRFgsCisgICAgSU5UUkFfQ0hST01BX1BSRURfTU9ERSwKKyAgICBHRU5F UkFMX01FUkdFX0ZMQUcsCisgICAgSU5URVJfUFJFRF9JREMsCisgICAgSU5URVJfQUZGSU5FX0ZM QUcgICAgICAgICAgICAgICA9IElOVEVSX1BSRURfSURDICAgICAgICAgICAgICAgICsgNiwKKyAg ICBDVV9BRkZJTkVfVFlQRV9GTEFHICAgICAgICAgICAgID0gSU5URVJfQUZGSU5FX0ZMQUcgICAg ICAgICAgICAgKyAzLAorICAgIFNZTV9NVkRfRkxBRywKKyAgICBSRUZfSURYX0xYLAorICAgIE1W UF9MWF9GTEFHICAgICAgICAgICAgICAgICAgICAgPSBSRUZfSURYX0xYICAgICAgICAgICAgICAg ICAgICArIDIsCisgICAgQU1WUl9GTEFHLAorICAgIEFNVlJfUFJFQ0lTSU9OX0lEWCAgICAgICAg ICAgICAgPSBBTVZSX0ZMQUcgICAgICAgICAgICAgICAgICAgICArIDIsCisgICAgQkNXX0lEWCAg ICAgICAgICAgICAgICAgICAgICAgICA9IEFNVlJfUFJFQ0lTSU9OX0lEWCAgICAgICAgICAgICsg MywKKyAgICBDVV9DT0RFRF9GTEFHLAorICAgIENVX1NCVF9GTEFHLAorICAgIENVX1NCVF9RVUFE X0ZMQUcgICAgICAgICAgICAgICAgPSBDVV9TQlRfRkxBRyAgICAgICAgICAgICAgICAgICArIDIs CisgICAgQ1VfU0JUX0hPUklaT05UQUxfRkxBRywKKyAgICBDVV9TQlRfUE9TX0ZMQUcgICAgICAg ICAgICAgICAgID0gQ1VfU0JUX0hPUklaT05UQUxfRkxBRyAgICAgICAgKyAzLAorICAgIExGTlNU X0lEWCwKKyAgICBNVFNfSURYICAgICAgICAgICAgICAgICAgICAgICAgID0gTEZOU1RfSURYICAg ICAgICAgICAgICAgICAgICAgKyAzLAorICAgIENPUFlfQUJPVkVfUEFMRVRURV9JTkRJQ0VTX0ZM QUcgPSBNVFNfSURYICAgICAgICAgICAgICAgICAgICAgICArIDQsCisgICAgUEFMRVRURV9UUkFO U1BPU0VfRkxBRywKKyAgICBSVU5fQ09QWV9GTEFHLAorICAgIFJFR1VMQVJfTUVSR0VfRkxBRyAg ICAgICAgICAgICAgPSBSVU5fQ09QWV9GTEFHICAgICAgICAgICAgICAgICArIDgsCisgICAgTU1W RF9NRVJHRV9GTEFHICAgICAgICAgICAgICAgICA9IFJFR1VMQVJfTUVSR0VfRkxBRyAgICAgICAg ICAgICsgMiwKKyAgICBNTVZEX0NBTkRfRkxBRywKKyAgICBNTVZEX0RJU1RBTkNFX0lEWCwKKyAg ICBDSUlQX0ZMQUcsCisgICAgTUVSR0VfU1VCQkxPQ0tfRkxBRywKKyAgICBNRVJHRV9TVUJCTE9D S19JRFggICAgICAgICAgICAgID0gTUVSR0VfU1VCQkxPQ0tfRkxBRyAgICAgICAgICAgKyAzLAor ICAgIE1FUkdFX0lEWCwKKyAgICBBQlNfTVZEX0dSRUFURVIwX0ZMQUcsCisgICAgQUJTX01WRF9H UkVBVEVSMV9GTEFHLAorICAgIFRVX1lfQ09ERURfRkxBRywKKyAgICBUVV9DQl9DT0RFRF9GTEFH ICAgICAgICAgICAgICAgID0gVFVfWV9DT0RFRF9GTEFHICAgICAgICAgICAgICAgKyA0LAorICAg IFRVX0NSX0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgPSBUVV9DQl9DT0RFRF9GTEFHICAgICAg ICAgICAgICArIDIsCisgICAgQ1VfUVBfREVMVEFfQUJTICAgICAgICAgICAgICAgICA9IFRVX0NS X0NPREVEX0ZMQUcgICAgICAgICAgICAgICsgMywKKyAgICBDVV9DSFJPTUFfUVBfT0ZGU0VUX0ZM QUcgICAgICAgID0gQ1VfUVBfREVMVEFfQUJTICAgICAgICAgICAgICAgKyAyLAorICAgIENVX0NI Uk9NQV9RUF9PRkZTRVRfSURYLAorICAgIFRSQU5TRk9STV9TS0lQX0ZMQUcsCisgICAgVFVfSk9J TlRfQ0JDUl9SRVNJRFVBTF9GTEFHICAgICA9IFRSQU5TRk9STV9TS0lQX0ZMQUcgICAgICAgICAg ICsgMiwKKyAgICBMQVNUX1NJR19DT0VGRl9YX1BSRUZJWCAgICAgICAgID0gVFVfSk9JTlRfQ0JD Ul9SRVNJRFVBTF9GTEFHICAgKyAzLAorICAgIExBU1RfU0lHX0NPRUZGX1lfUFJFRklYICAgICAg ICAgPSBMQVNUX1NJR19DT0VGRl9YX1BSRUZJWCAgICAgICArMjMsCisgICAgU0JfQ09ERURfRkxB RyAgICAgICAgICAgICAgICAgICA9IExBU1RfU0lHX0NPRUZGX1lfUFJFRklYICAgICAgICsyMywK KyAgICBTSUdfQ09FRkZfRkxBRyAgICAgICAgICAgICAgICAgID0gU0JfQ09ERURfRkxBRyAgICAg ICAgICAgICAgICAgKyA3LAorICAgIFBBUl9MRVZFTF9GTEFHICAgICAgICAgICAgICAgICAgPSBT SUdfQ09FRkZfRkxBRyAgICAgICAgICAgICAgICArNjMsCisgICAgQUJTX0xFVkVMX0dUWF9GTEFH ICAgICAgICAgICAgICA9IFBBUl9MRVZFTF9GTEFHICAgICAgICAgICAgICAgICszMywKKyAgICBD T0VGRl9TSUdOX0ZMQUcgICAgICAgICAgICAgICAgID0gQUJTX0xFVkVMX0dUWF9GTEFHICAgICAg ICAgICAgKzcyLAorICAgIFNZTlRBWF9FTEVNRU5UX0xBU1QgICAgICAgICAgICAgPSBDT0VGRl9T SUdOX0ZMQUcgICAgICAgICAgICAgICArIDYsCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBp bml0X3ZhbHVlc1s0XVtTWU5UQVhfRUxFTUVOVF9MQVNUXSA9IHsKKyAgICB7CisgICAgICAgIC8v YWxmX2N0Yl9mbGFnCisgICAgICAgIDYyLCAgMzksICAzOSwgIDU0LCAgMzksICAzOSwgIDMxLCAg MzksICAzOSwKKyAgICAgICAgLy9hbGZfdXNlX2Fwc19mbGFnCisgICAgICAgIDQ2LAorICAgICAg ICAvL2FsZl9jdGJfY2NfY2JfaWRjCisgICAgICAgIDE4LCAgMzAsICAzMSwKKyAgICAgICAgLy9h bGZfY3RiX2NjX2NyX2lkYworICAgICAgICAxOCwgIDMwLCAgMzEsCisgICAgICAgIC8vYWxmX2N0 Yl9maWx0ZXJfYWx0X2lkeAorICAgICAgICAxMSwgIDExLAorICAgICAgICAvL3Nhb19tZXJnZV9s ZWZ0X2ZsYWcgYW5kIHNhb19tZXJnZV91cF9mbGFnCisgICAgICAgIDYwLAorICAgICAgICAvL3Nh b190eXBlX2lkeF9sdW1hIGFuZCBzYW9fdHlwZV9pZHhfY2hyb21hCisgICAgICAgIDEzLAorICAg ICAgICAvL3NwbGl0X2N1X2ZsYWcKKyAgICAgICAgMTksICAyOCwgIDM4LCAgMjcsICAyOSwgIDM4 LCAgMjAsICAzMCwgIDMxLAorICAgICAgICAvL3NwbGl0X3F0X2ZsYWcKKyAgICAgICAgMjcsICAg NiwgIDE1LCAgMjUsICAxOSwgIDM3LAorICAgICAgICAvL210dF9zcGxpdF9jdV92ZXJ0aWNhbF9m bGFnCisgICAgICAgIDQzLCAgNDIsICAyOSwgIDI3LCAgNDQsCisgICAgICAgIC8vbXR0X3NwbGl0 X2N1X2JpbmFyeV9mbGFnCisgICAgICAgIDM2LCAgNDUsICAzNiwgIDQ1LAorICAgICAgICAvL25v bl9pbnRlcl9mbGFnCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL2N1X3NraXBfZmxhZwor ICAgICAgICAwLCAgMjYsICAyOCwKKyAgICAgICAgLy9wcmVkX21vZGVfaWJjX2ZsYWcKKyAgICAg ICAgMTcsICA0MiwgIDM2LAorICAgICAgICAvL3ByZWRfbW9kZV9mbGFnCisgICAgICAgIENOVSwg Q05VLAorICAgICAgICAvL3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAyNSwKKyAgICAgICAg Ly9jdV9hY3RfZW5hYmxlZF9mbGFnCisgICAgICAgIDUyLAorICAgICAgICAvL2ludHJhX2JkcGNt X2x1bWFfZmxhZworICAgICAgICAxOSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9m bGFnCisgICAgICAgIDM1LAorICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgIDMzLCAg NDksICA1MCwgIDI1LAorICAgICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAyNSwg IDYwLAorICAgICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgIDMz LAorICAgICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICA0MywK KyAgICAgICAgLy9pbnRyYV9sdW1hX21wbV9mbGFnCisgICAgICAgIDQ1LAorICAgICAgICAvL2lu dHJhX2x1bWFfbm90X3BsYW5hcl9mbGFnCisgICAgICAgIDEzLCAgMjgsCisgICAgICAgIC8vaW50 cmFfYmRwY21fY2hyb21hX2ZsYWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50cmFfYmRwY21f Y2hyb21hX2Rpcl9mbGFnCisgICAgICAgIDI3LAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisg ICAgICAgIDU5LAorICAgICAgICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgMjcsCisgICAgICAg IC8vaW50cmFfY2hyb21hX3ByZWRfbW9kZQorICAgICAgICAzNCwKKyAgICAgICAgLy9nZW5lcmFs X21lcmdlX2ZsYWcKKyAgICAgICAgMjYsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAg ICAgQ05VLCBDTlUsIENOVSwgQ05VLCBDTlUsIENOVSwKKyAgICAgICAgLy9pbnRlcl9hZmZpbmVf ZmxhZworICAgICAgICBDTlUsIENOVSwgQ05VLAorICAgICAgICAvL2N1X2FmZmluZV90eXBlX2Zs YWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICBDTlUsCisg ICAgICAgIC8vcmVmX2lkeF9sMCBhbmQgcmVmX2lkeF9sMQorICAgICAgICBDTlUsIENOVSwKKyAg ICAgICAgLy9tdnBfbDBfZmxhZyBhbmQgbXZwX2wxX2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAg IC8vYW12cl9mbGFnCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9u X2lkeAorICAgICAgICAzNSwgIDM0LCAgMzUsCisgICAgICAgIC8vYmN3X2lkeAorICAgICAgICBD TlUsCisgICAgICAgIC8vY3VfY29kZWRfZmxhZworICAgICAgICAgNiwKKyAgICAgICAgLy9jdV9z YnRfZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisg ICAgICAgIENOVSwKKyAgICAgICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAgICAgIENO VSwgQ05VLCBDTlUsCisgICAgICAgIC8vY3Vfc2J0X3Bvc19mbGFnCisgICAgICAgIENOVSwKKyAg ICAgICAgLy9sZm5zdF9pZHgKKyAgICAgICAgMjgsICA1MiwgIDQyLAorICAgICAgICAvL210c19p ZHgKKyAgICAgICAgMjksICAgMCwgIDI4LCAgIDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxl dHRlX2luZGljZXNfZmxhZworICAgICAgICA0MiwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9z ZV9mbGFnCisgICAgICAgIDQyLAorICAgICAgICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgNTAs ICAzNywgIDQ1LCAgMzAsICA0NiwgIDQ1LCAgMzgsICA0NiwKKyAgICAgICAgLy9yZWd1bGFyX21l cmdlX2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFnCisg ICAgICAgIENOVSwKKyAgICAgICAgLy9tbXZkX2NhbmRfZmxhZworICAgICAgICBDTlUsCisgICAg ICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL2NpaXBfZmxh ZworICAgICAgICBDTlUsCisgICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfZmxhZworICAgICAgICBD TlUsIENOVSwgQ05VLAorICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2lkeAorICAgICAgICBDTlUs CisgICAgICAgIC8vbWVyZ2VfaWR4LCBtZXJnZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgx CisgICAgICAgIDM0LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICAx NCwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIxX2ZsYWcKKyAgICAgICAgNDUsCisgICAgICAg IC8vdHVfeV9jb2RlZF9mbGFnCisgICAgICAgIDE1LCAgMTIsICAgNSwgICA3LAorICAgICAgICAv L3R1X2NiX2NvZGVkX2ZsYWcKKyAgICAgICAgMTIsICAyMSwKKyAgICAgICAgLy90dV9jcl9jb2Rl ZF9mbGFnCisgICAgICAgIDMzLCAgMjgsICAzNiwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMK KyAgICAgICAgQ05VLCBDTlUsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9mbGFnCisg ICAgICAgIENOVSwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeAorICAgICAgICBD TlUsCisgICAgICAgIC8vdHJhbnNmb3JtX3NraXBfZmxhZworICAgICAgICAyNSwgICA5LAorICAg ICAgICAvL3R1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworICAgICAgICAxMiwgIDIxLCAgMzUs CisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeF9wcmVmaXgKKyAgICAgICAgMTMsICAgNSwgICA0 LCAgMjEsICAxNCwgICA0LCAgIDYsICAxNCwgIDIxLCAgMTEsICAxNCwgICA3LCAgMTQsICAgNSwg IDExLCAgMjEsCisgICAgICAgIDMwLCAgMjIsICAxMywgIDQyLCAgMTIsICAgNCwgICAzLAorICAg ICAgICAvL2xhc3Rfc2lnX2NvZWZmX3lfcHJlZml4CisgICAgICAgIDEzLCAgIDUsICAgNCwgICA2 LCAgMTMsICAxMSwgIDE0LCAgIDYsICAgNSwgICAzLCAgMTQsICAyMiwgICA2LCAgIDQsICAgMywg ICA2LAorICAgICAgICAyMiwgIDI5LCAgMjAsICAzNCwgIDEyLCAgIDQsICAgMywKKyAgICAgICAg Ly9zYl9jb2RlZF9mbGFnCisgICAgICAgIDE4LCAgMzEsICAyNSwgIDE1LCAgMTgsICAyMCwgIDM4 LAorICAgICAgICAvL3NpZ19jb2VmZl9mbGFnCisgICAgICAgIDI1LCAgMTksICAyOCwgIDE0LCAg MjUsICAyMCwgIDI5LCAgMzAsICAxOSwgIDM3LCAgMzAsICAzOCwgIDExLCAgMzgsICA0NiwgIDU0 LAorICAgICAgICAyNywgIDM5LCAgMzksICAzOSwgIDQ0LCAgMzksICAzOSwgIDM5LCAgMTgsICAz OSwgIDM5LCAgMzksICAyNywgIDM5LCAgMzksICAzOSwKKyAgICAgICAgIDAsICAzOSwgIDM5LCAg MzksICAyNSwgIDI3LCAgMjgsICAzNywgIDM0LCAgNTMsICA1MywgIDQ2LCAgMTksICA0NiwgIDM4 LCAgMzksCisgICAgICAgIDUyLCAgMzksICAzOSwgIDM5LCAgMTEsICAzOSwgIDM5LCAgMzksICAx OSwgIDM5LCAgMzksICAzOSwgIDI1LCAgMjgsICAzOCwKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxh ZworICAgICAgICAzMywgIDI1LCAgMTgsICAyNiwgIDM0LCAgMjcsICAyNSwgIDI2LCAgMTksICA0 MiwgIDM1LCAgMzMsICAxOSwgIDI3LCAgMzUsICAzNSwKKyAgICAgICAgMzQsICA0MiwgIDIwLCAg NDMsICAyMCwgIDMzLCAgMjUsICAyNiwgIDQyLCAgMTksICAyNywgIDI2LCAgNTAsICAzNSwgIDIw LCAgNDMsCisgICAgICAgIDExLAorICAgICAgICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAg ICAyNSwgIDI1LCAgMTEsICAyNywgIDIwLCAgMjEsICAzMywgIDEyLCAgMjgsICAyMSwgIDIyLCAg MzQsICAyOCwgIDI5LCAgMjksICAzMCwKKyAgICAgICAgMzYsICAyOSwgIDQ1LCAgMzAsICAyMywg IDQwLCAgMzMsICAyNywgIDI4LCAgMjEsICAzNywgIDM2LCAgMzcsICA0NSwgIDM4LCAgNDYsCisg ICAgICAgIDI1LCAgIDEsICA0MCwgIDI1LCAgMzMsICAxMSwgIDE3LCAgMjUsICAyNSwgIDE4LCAg IDQsICAxNywgIDMzLCAgMjYsICAxOSwgIDEzLAorICAgICAgICAzMywgIDE5LCAgMjAsICAyOCwg IDIyLCAgNDAsICAgOSwgIDI1LCAgMTgsICAyNiwgIDM1LCAgMjUsICAyNiwgIDM1LCAgMjgsICAz NywKKyAgICAgICAgMTEsICAgNSwgICA1LCAgMTQsICAxMCwgICAzLCAgIDMsICAgMywKKyAgICAg ICAgLy9jb2VmZl9zaWduX2ZsYWcKKyAgICAgICAgMTIsICAxNywgIDQ2LCAgMjgsICAyNSwgIDQ2 LAorICAgIH0sCisgICAgeworICAgICAgICAvL2FsZl9jdGJfZmxhZworICAgICAgICAxMywgIDIz LCAgNDYsICAgNCwgIDYxLCAgNTQsICAxOSwgIDQ2LCAgNTQsCisgICAgICAgIC8vYWxmX3VzZV9h cHNfZmxhZworICAgICAgICA0NiwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NiX2lkYworICAgICAg ICAxOCwgIDIxLCAgMzgsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jcl9pZGMKKyAgICAgICAgMTgs ICAyMSwgIDM4LAorICAgICAgICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgKKyAgICAgICAgMjAs ICAxMiwKKyAgICAgICAgLy9zYW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBzYW9fbWVyZ2VfdXBfZmxh ZworICAgICAgICA2MCwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVf aWR4X2Nocm9tYQorICAgICAgICA1LAorICAgICAgICAvL3NwbGl0X2N1X2ZsYWcKKyAgICAgICAg MTEsICAzNSwgIDUzLCAgMTIsICAgNiwgIDMwLCAgMTMsICAxNSwgIDMxLAorICAgICAgICAvL3Nw bGl0X3F0X2ZsYWcKKyAgICAgICAgMjAsICAxNCwgIDIzLCAgMTgsICAxOSwgICA2LAorICAgICAg ICAvL210dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnCisgICAgICAgIDQzLCAgMzUsICAzNywgIDM0 LCAgNTIsCisgICAgICAgIC8vbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnCisgICAgICAgIDQzLCAg MzcsICAyMSwgIDIyLAorICAgICAgICAvL25vbl9pbnRlcl9mbGFnCisgICAgICAgIDI1LCAgMTIs CisgICAgICAgIC8vY3Vfc2tpcF9mbGFnCisgICAgICAgIDU3LCAgNTksICA0NSwKKyAgICAgICAg Ly9wcmVkX21vZGVfaWJjX2ZsYWcKKyAgICAgICAgIDAsICA1NywgIDQ0LAorICAgICAgICAvL3By ZWRfbW9kZV9mbGFnCisgICAgICAgIDQwLCAgMzUsCisgICAgICAgIC8vcHJlZF9tb2RlX3BsdF9m bGFnCisgICAgICAgIDAsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICA0 NiwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgNDAsCisgICAgICAg IC8vaW50cmFfYmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAzNiwKKyAgICAgICAgLy9pbnRy YV9taXBfZmxhZworICAgICAgICA0MSwgIDU3LCAgNTgsICAyNiwKKyAgICAgICAgLy9pbnRyYV9s dW1hX3JlZl9pZHgKKyAgICAgICAgMjUsICA1OCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRp b25zX21vZGVfZmxhZworICAgICAgICAzMywKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25z X3NwbGl0X2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZwor ICAgICAgICAzNiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAg ICAxMiwgIDIwLAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAw LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAxMywKKyAg ICAgICAgLy9jY2xtX21vZGVfZmxhZworICAgICAgICAzNCwKKyAgICAgICAgLy9jY2xtX21vZGVf aWR4CisgICAgICAgIDI3LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAg ICAgMjUsCisgICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgIDIxLAorICAgICAg ICAvL2ludGVyX3ByZWRfaWRjCisgICAgICAgICA3LCAgIDYsICAgNSwgIDEyLCAgIDQsICA0MCwK KyAgICAgICAgLy9pbnRlcl9hZmZpbmVfZmxhZworICAgICAgICAxMiwgIDEzLCAgMTQsCisgICAg ICAgIC8vY3VfYWZmaW5lX3R5cGVfZmxhZworICAgICAgICAzNSwKKyAgICAgICAgLy9zeW1fbXZk X2ZsYWcKKyAgICAgICAgMjgsCisgICAgICAgIC8vcmVmX2lkeF9sMCBhbmQgcmVmX2lkeF9sMQor ICAgICAgICAyMCwgIDM1LAorICAgICAgICAvL212cF9sMF9mbGFnIGFuZCBtdnBfbDFfZmxhZwor ICAgICAgICAzNCwKKyAgICAgICAgLy9hbXZyX2ZsYWcKKyAgICAgICAgNTksICA1OCwKKyAgICAg ICAgLy9hbXZyX3ByZWNpc2lvbl9pZHgKKyAgICAgICAgNjAsICA0OCwgIDYwLAorICAgICAgICAv L2Jjd19pZHgKKyAgICAgICAgIDQsCisgICAgICAgIC8vY3VfY29kZWRfZmxhZworICAgICAgICAg NSwKKyAgICAgICAgLy9jdV9zYnRfZmxhZworICAgICAgICA1NiwgIDU3LAorICAgICAgICAvL2N1 X3NidF9xdWFkX2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAgIC8vY3Vfc2J0X2hvcml6b250YWxf ZmxhZworICAgICAgICAyMCwgIDQzLCAgMTIsCisgICAgICAgIC8vY3Vfc2J0X3Bvc19mbGFnCisg ICAgICAgIDI4LAorICAgICAgICAvL2xmbnN0X2lkeAorICAgICAgICAzNywgIDQ1LCAgMjcsCisg ICAgICAgIC8vbXRzX2lkeAorICAgICAgICA0NSwgIDQwLCAgMjcsICAgMCwKKyAgICAgICAgLy9j b3B5X2Fib3ZlX3BhbGV0dGVfaW5kaWNlc19mbGFnCisgICAgICAgIDU5LAorICAgICAgICAvL3Bh bGV0dGVfdHJhbnNwb3NlX2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAgIC8vcnVuX2NvcHlfZmxh ZworICAgICAgICA1MSwgIDMwLCAgMzAsICAzOCwgIDIzLCAgMzgsICA1MywgIDQ2LAorICAgICAg ICAvL3JlZ3VsYXJfbWVyZ2VfZmxhZworICAgICAgICAzOCwgICA3LAorICAgICAgICAvL21tdmRf bWVyZ2VfZmxhZworICAgICAgICAyNiwKKyAgICAgICAgLy9tbXZkX2NhbmRfZmxhZworICAgICAg ICA0MywKKyAgICAgICAgLy9tbXZkX2Rpc3RhbmNlX2lkeAorICAgICAgICA2MCwKKyAgICAgICAg Ly9jaWlwX2ZsYWcKKyAgICAgICAgNTcsCisgICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfZmxhZwor ICAgICAgICA0OCwgIDU3LCAgNDQsCisgICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfaWR4CisgICAg ICAgICA1LAorICAgICAgICAvL21lcmdlX2lkeCwgbWVyZ2VfZ3BtX2lkeDAsIGFuZCBtZXJnZV9n cG1faWR4MQorICAgICAgICAyMCwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIwX2ZsYWcKKyAg ICAgICAgNDQsCisgICAgICAgIC8vYWJzX212ZF9ncmVhdGVyMV9mbGFnCisgICAgICAgIDQzLAor ICAgICAgICAvL3R1X3lfY29kZWRfZmxhZworICAgICAgICAyMywgICA1LCAgMjAsICAgNywKKyAg ICAgICAgLy90dV9jYl9jb2RlZF9mbGFnCisgICAgICAgIDI1LCAgMjgsCisgICAgICAgIC8vdHVf Y3JfY29kZWRfZmxhZworICAgICAgICAyNSwgIDI5LCAgNDUsCisgICAgICAgIC8vY3VfcXBfZGVs dGFfYWJzCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRf ZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9pZHgKKyAg ICAgICAgQ05VLAorICAgICAgICAvL3RyYW5zZm9ybV9za2lwX2ZsYWcKKyAgICAgICAgMjUsICAg OSwKKyAgICAgICAgLy90dV9qb2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWcKKyAgICAgICAgMjcsICAz NiwgIDQ1LAorICAgICAgICAvL2xhc3Rfc2lnX2NvZWZmX3hfcHJlZml4CisgICAgICAgICA2LCAg MTMsICAxMiwgICA2LCAgIDYsICAxMiwgIDE0LCAgMTQsICAxMywgIDEyLCAgMjksICAgNywgICA2 LCAgMTMsICAzNiwgIDI4LAorICAgICAgICAxNCwgIDEzLCAgIDUsICAyNiwgIDEyLCAgIDQsICAx OCwKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl95X3ByZWZpeAorICAgICAgICAgNSwgICA1LCAg MTIsICAgNiwgICA2LCAgIDQsICAgNiwgIDE0LCAgIDUsICAxMiwgIDE0LCAgIDcsICAxMywgICA1 LCAgMTMsICAyMSwKKyAgICAgICAgMTQsICAyMCwgIDEyLCAgMzQsICAxMSwgICA0LCAgMTgsCisg ICAgICAgIC8vc2JfY29kZWRfZmxhZworICAgICAgICAyNSwgIDMwLCAgMjUsICA0NSwgIDE4LCAg MTIsICAyOSwKKyAgICAgICAgLy9zaWdfY29lZmZfZmxhZworICAgICAgICAxNywgIDQxLCAgNDIs ICAyOSwgIDI1LCAgNDksICA0MywgIDM3LCAgMzMsICA1OCwgIDUxLCAgMzAsICAxOSwgIDM4LCAg MzgsICA0NiwKKyAgICAgICAgMzQsICA1NCwgIDU0LCAgMzksICAgNiwgIDM5LCAgMzksICAzOSwg IDE5LCAgMzksICA1NCwgIDM5LCAgMTksICAzOSwgIDM5LCAgMzksCisgICAgICAgIDU2LCAgMzks ICAzOSwgIDM5LCAgMTcsICAzNCwgIDM1LCAgMjEsICA0MSwgIDU5LCAgNjAsICAzOCwgIDM1LCAg NDUsICA1MywgIDU0LAorICAgICAgICA0NCwgIDM5LCAgMzksICAzOSwgIDM0LCAgMzgsICA2Miwg IDM5LCAgMjYsICAzOSwgIDM5LCAgMzksICA0MCwgIDM1LCAgNDQsCisgICAgICAgIC8vcGFyX2xl dmVsX2ZsYWcKKyAgICAgICAgMTgsICAxNywgIDMzLCAgMTgsICAyNiwgIDQyLCAgMjUsICAzMywg IDI2LCAgNDIsICAyNywgIDI1LCAgMzQsICA0MiwgIDQyLCAgMzUsCisgICAgICAgIDI2LCAgMjcs ICA0MiwgIDIwLCAgMjAsICAyNSwgIDI1LCAgMjYsICAxMSwgIDE5LCAgMjcsICAzMywgIDQyLCAg MzUsICAzNSwgIDQzLAorICAgICAgICAgMywKKyAgICAgICAgLy9hYnNfbGV2ZWxfZ3R4X2ZsYWcK KyAgICAgICAgIDAsICAxNywgIDI2LCAgMTksICAzNSwgIDIxLCAgMjUsICAzNCwgIDIwLCAgMjgs ICAyOSwgIDMzLCAgMjcsICAyOCwgIDI5LCAgMjIsCisgICAgICAgIDM0LCAgMjgsICA0NCwgIDM3 LCAgMzgsICAgMCwgIDI1LCAgMTksICAyMCwgIDEzLCAgMTQsICA1NywgIDQ0LCAgMzAsICAzMCwg IDIzLAorICAgICAgICAxNywgICAwLCAgIDEsICAxNywgIDI1LCAgMTgsICAgMCwgICA5LCAgMjUs ICAzMywgIDM0LCAgIDksICAyNSwgIDE4LCAgMjYsICAyMCwKKyAgICAgICAgMjUsICAxOCwgIDE5 LCAgMjcsICAyOSwgIDE3LCAgIDksICAyNSwgIDEwLCAgMTgsICAgNCwgIDE3LCAgMzMsICAxOSwg IDIwLCAgMjksCisgICAgICAgIDE4LCAgMTEsICAgNCwgIDI4LCAgIDIsICAxMCwgICAzLCAgIDMs CisgICAgICAgIC8vY29lZmZfc2lnbl9mbGFnCisgICAgICAgICA1LCAgMTAsICA1MywgIDQzLCAg MjUsICA0NiwKKyAgICB9LAorICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcKKyAgICAgICAg MzMsICA1MiwgIDQ2LCAgMjUsICA2MSwgIDU0LCAgMjUsICA2MSwgIDU0LAorICAgICAgICAvL2Fs Zl91c2VfYXBzX2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jYl9pZGMK KyAgICAgICAgMjUsICAzNSwgIDM4LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3JfaWRjCisgICAg ICAgIDI1LCAgMjgsICAzOCwKKyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4CisgICAg ICAgIDExLCAgMjYsCisgICAgICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQgc2FvX21lcmdl X3VwX2ZsYWcKKyAgICAgICAgMiwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2Fv X3R5cGVfaWR4X2Nocm9tYQorICAgICAgICAyLAorICAgICAgICAvL3NwbGl0X2N1X2ZsYWcKKyAg ICAgICAgMTgsICAyNywgIDE1LCAgMTgsICAyOCwgIDQ1LCAgMjYsICAgNywgIDIzLAorICAgICAg ICAvL3NwbGl0X3F0X2ZsYWcKKyAgICAgICAgMjYsICAzNiwgIDM4LCAgMTgsICAzNCwgIDIxLAor ICAgICAgICAvL210dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnCisgICAgICAgIDQzLCAgNDIsICAz NywgIDQyLCAgNDQsCisgICAgICAgIC8vbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnCisgICAgICAg IDI4LCAgMjksICAyOCwgIDI5LAorICAgICAgICAvL25vbl9pbnRlcl9mbGFnCisgICAgICAgIDI1 LCAgMjAsCisgICAgICAgIC8vY3Vfc2tpcF9mbGFnCisgICAgICAgIDU3LCAgNjAsICA0NiwKKyAg ICAgICAgLy9wcmVkX21vZGVfaWJjX2ZsYWcKKyAgICAgICAgIDAsICA0MywgIDQ1LAorICAgICAg ICAvL3ByZWRfbW9kZV9mbGFnCisgICAgICAgIDQwLCAgMzUsCisgICAgICAgIC8vcHJlZF9tb2Rl X3BsdF9mbGFnCisgICAgICAgIDE3LAorICAgICAgICAvL2N1X2FjdF9lbmFibGVkX2ZsYWcKKyAg ICAgICAgNDYsCisgICAgICAgIC8vaW50cmFfYmRwY21fbHVtYV9mbGFnCisgICAgICAgIDE5LAor ICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZGlyX2ZsYWcKKyAgICAgICAgMjEsCisgICAgICAg IC8vaW50cmFfbWlwX2ZsYWcKKyAgICAgICAgNTYsICA1NywgIDUwLCAgMjYsCisgICAgICAgIC8v aW50cmFfbHVtYV9yZWZfaWR4CisgICAgICAgIDI1LCAgNTksCisgICAgICAgIC8vaW50cmFfc3Vi cGFydGl0aW9uc19tb2RlX2ZsYWcKKyAgICAgICAgMzMsCisgICAgICAgIC8vaW50cmFfc3VicGFy dGl0aW9uc19zcGxpdF9mbGFnCisgICAgICAgIDQzLAorICAgICAgICAvL2ludHJhX2x1bWFfbXBt X2ZsYWcKKyAgICAgICAgNDQsCisgICAgICAgIC8vaW50cmFfbHVtYV9ub3RfcGxhbmFyX2ZsYWcK KyAgICAgICAgMTMsICAgNiwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFfZmxhZworICAg ICAgICAgMCwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcKKyAgICAgICAg MjgsCisgICAgICAgIC8vY2NsbV9tb2RlX2ZsYWcKKyAgICAgICAgMjYsCisgICAgICAgIC8vY2Ns bV9tb2RlX2lkeAorICAgICAgICAyNywKKyAgICAgICAgLy9pbnRyYV9jaHJvbWFfcHJlZF9tb2Rl CisgICAgICAgIDI1LAorICAgICAgICAvL2dlbmVyYWxfbWVyZ2VfZmxhZworICAgICAgICAgNiwK KyAgICAgICAgLy9pbnRlcl9wcmVkX2lkYworICAgICAgICAxNCwgIDEzLCAgIDUsICAgNCwgICAz LCAgNDAsCisgICAgICAgIC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgMTksICAxMywgICA2 LAorICAgICAgICAvL2N1X2FmZmluZV90eXBlX2ZsYWcKKyAgICAgICAgMzUsCisgICAgICAgIC8v c3ltX212ZF9mbGFnCisgICAgICAgIDI4LAorICAgICAgICAvL3JlZl9pZHhfbDAgYW5kIHJlZl9p ZHhfbDEKKyAgICAgICAgIDUsICAzNSwKKyAgICAgICAgLy9tdnBfbDBfZmxhZyBhbmQgbXZwX2wx X2ZsYWcKKyAgICAgICAgMzQsCisgICAgICAgIC8vYW12cl9mbGFnCisgICAgICAgIDU5LCAgNTAs CisgICAgICAgIC8vYW12cl9wcmVjaXNpb25faWR4CisgICAgICAgIDM4LCAgMjYsICA2MCwKKyAg ICAgICAgLy9iY3dfaWR4CisgICAgICAgICA1LAorICAgICAgICAvL2N1X2NvZGVkX2ZsYWcKKyAg ICAgICAgMTIsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgNDEsICA1NywKKyAgICAg ICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIDQyLAorICAgICAgICAvL2N1X3NidF9ob3Jp em9udGFsX2ZsYWcKKyAgICAgICAgMzUsICA1MSwgIDI3LAorICAgICAgICAvL2N1X3NidF9wb3Nf ZmxhZworICAgICAgICAyOCwKKyAgICAgICAgLy9sZm5zdF9pZHgKKyAgICAgICAgNTIsICAzNywg IDI3LAorICAgICAgICAvL210c19pZHgKKyAgICAgICAgNDUsICAyNSwgIDI3LCAgIDAsCisgICAg ICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNfZmxhZworICAgICAgICA1MCwKKyAgICAg ICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAgICAgIDM1LAorICAgICAgICAvL3J1bl9j b3B5X2ZsYWcKKyAgICAgICAgNTgsICA0NSwgIDQ1LCAgMzAsICAzOCwgIDQ1LCAgMzgsICA0NiwK KyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAgICAgICAgNDYsICAxNSwKKyAgICAgICAg Ly9tbXZkX21lcmdlX2ZsYWcKKyAgICAgICAgMjUsCisgICAgICAgIC8vbW12ZF9jYW5kX2ZsYWcK KyAgICAgICAgNDMsCisgICAgICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAgICAgICAgNTksCisg ICAgICAgIC8vY2lpcF9mbGFnCisgICAgICAgIDU3LAorICAgICAgICAvL21lcmdlX3N1YmJsb2Nr X2ZsYWcKKyAgICAgICAgMjUsICA1OCwgIDQ1LAorICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2lk eAorICAgICAgICAgNCwKKyAgICAgICAgLy9tZXJnZV9pZHgsIG1lcmdlX2dwbV9pZHgwLCBhbmQg bWVyZ2VfZ3BtX2lkeDEKKyAgICAgICAgMTgsCisgICAgICAgIC8vYWJzX212ZF9ncmVhdGVyMF9m bGFnCisgICAgICAgIDUxLAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjFfZmxhZworICAgICAg ICAzNiwKKyAgICAgICAgLy90dV95X2NvZGVkX2ZsYWcKKyAgICAgICAgMTUsICAgNiwgICA1LCAg MTQsCisgICAgICAgIC8vdHVfY2JfY29kZWRfZmxhZworICAgICAgICAyNSwgIDM3LAorICAgICAg ICAvL3R1X2NyX2NvZGVkX2ZsYWcKKyAgICAgICAgIDksICAzNiwgIDQ1LAorICAgICAgICAvL2N1 X3FwX2RlbHRhX2FicworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBf b2Zmc2V0X2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRf aWR4CisgICAgICAgIENOVSwKKyAgICAgICAgLy90cmFuc2Zvcm1fc2tpcF9mbGFnCisgICAgICAg IDI1LCAgMTcsCisgICAgICAgIC8vdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnCisgICAgICAg IDQyLCAgNDMsICA1MiwKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl94X3ByZWZpeAorICAgICAg ICAgNiwgICA2LCAgMTIsICAxNCwgICA2LCAgIDQsICAxNCwgICA3LCAgIDYsICAgNCwgIDI5LCAg IDcsICAgNiwgICA2LCAgMTIsICAyOCwKKyAgICAgICAgIDcsICAxMywgIDEzLCAgMzUsICAxOSwg ICA1LCAgIDQsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeV9wcmVmaXgKKyAgICAgICAgIDUs ICAgNSwgIDIwLCAgMTMsICAxMywgIDE5LCAgMjEsICAgNiwgIDEyLCAgMTIsICAxNCwgIDE0LCAg IDUsICAgNCwgIDEyLCAgMTMsCisgICAgICAgICA3LCAgMTMsICAxMiwgIDQxLCAgMTEsICAgNSwg IDI3LAorICAgICAgICAvL3NiX2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICA0NSwgIDI1LCAgMTQs ICAxOCwgIDM1LCAgNDUsCisgICAgICAgIC8vc2lnX2NvZWZmX2ZsYWcKKyAgICAgICAgMTcsICA0 MSwgIDQ5LCAgMzYsICAgMSwgIDQ5LCAgNTAsICAzNywgIDQ4LCAgNTEsICA1OCwgIDQ1LCAgMjYs ICA0NSwgIDUzLCAgNDYsCisgICAgICAgIDQ5LCAgNTQsICA2MSwgIDM5LCAgMzUsICAzOSwgIDM5 LCAgMzksICAxOSwgIDU0LCAgMzksICAzOSwgIDUwLCAgMzksICAzOSwgIDM5LAorICAgICAgICAg MCwgIDM5LCAgMzksICAzOSwgICA5LCAgNDksICA1MCwgIDM2LCAgNDgsICA1OSwgIDU5LCAgMzgs ICAzNCwgIDQ1LCAgMzgsICAzMSwKKyAgICAgICAgNTgsICAzOSwgIDM5LCAgMzksICAzNCwgIDM4 LCAgNTQsICAzOSwgIDQxLCAgMzksICAzOSwgIDM5LCAgMjUsICA1MCwgIDM3LAorICAgICAgICAv L3Bhcl9sZXZlbF9mbGFnCisgICAgICAgIDMzLCAgNDAsICAyNSwgIDQxLCAgMjYsICA0MiwgIDI1 LCAgMzMsICAyNiwgIDM0LCAgMjcsICAyNSwgIDQxLCAgNDIsICA0MiwgIDM1LAorICAgICAgICAz MywgIDI3LCAgMzUsICA0MiwgIDQzLCAgMzMsICAyNSwgIDI2LCAgMzQsICAxOSwgIDI3LCAgMzMs ICA0MiwgIDQzLCAgMzUsICA0MywKKyAgICAgICAgMTEsCisgICAgICAgIC8vYWJzX2xldmVsX2d0 eF9mbGFnCisgICAgICAgICAwLCAgIDAsICAzMywgIDM0LCAgMzUsICAyMSwgIDI1LCAgMzQsICAz NSwgIDI4LCAgMjksICA0MCwgIDQyLCAgNDMsICAyOSwgIDMwLAorICAgICAgICA0OSwgIDM2LCAg MzcsICA0NSwgIDM4LCAgIDAsICA0MCwgIDM0LCAgNDMsICAzNiwgIDM3LCAgNTcsICA1MiwgIDQ1 LCAgMzgsICA0NiwKKyAgICAgICAgMjUsICAgMCwgICAwLCAgMTcsICAyNSwgIDI2LCAgIDAsICAg OSwgIDI1LCAgMzMsICAxOSwgICAwLCAgMjUsICAzMywgIDI2LCAgMjAsCisgICAgICAgIDI1LCAg MzMsICAyNywgIDM1LCAgMjIsICAyNSwgICAxLCAgMjUsICAzMywgIDI2LCAgMTIsICAyNSwgIDMz LCAgMjcsICAyOCwgIDM3LAorICAgICAgICAxOSwgIDExLCAgIDQsICAgNiwgICAzLCAgIDQsICAg NCwgICA1LAorICAgICAgICAvL2NvZWZmX3NpZ25fZmxhZworICAgICAgICAzNSwgIDI1LCAgNDYs ICAyOCwgIDMzLCAgMzgsCisgICAgfSwKKyAgICAvL3NoaWZ0SWR4CisgICAgeworICAgICAgICAv L2FsZl9jdGJfZmxhZworICAgICAgICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMSwg ICAwLCAgIDAsCisgICAgICAgIC8vYWxmX3VzZV9hcHNfZmxhZworICAgICAgICAgMCwKKyAgICAg ICAgLy9hbGZfY3RiX2NjX2NiX2lkYworICAgICAgICAgNCwgICAxLCAgIDQsCisgICAgICAgIC8v YWxmX2N0Yl9jY19jcl9pZGMKKyAgICAgICAgIDQsICAgMSwgICA0LAorICAgICAgICAvL2FsZl9j dGJfZmlsdGVyX2FsdF9pZHgKKyAgICAgICAgIDAsICAgMCwKKyAgICAgICAgLy9zYW9fbWVyZ2Vf bGVmdF9mbGFnIGFuZCBzYW9fbWVyZ2VfdXBfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9z YW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9tYQorICAgICAgICAgNCwKKyAg ICAgICAgLy9zcGxpdF9jdV9mbGFnCisgICAgICAgIDEyLCAgMTMsICAgOCwgICA4LCAgMTMsICAx MiwgICA1LCAgIDksICAgOSwKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgICAwLCAg IDgsICAgOCwgIDEyLCAgMTIsICAgOCwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxf ZmxhZworICAgICAgICAgOSwgICA4LCAgIDksICAgOCwgICA1LAorICAgICAgICAvL210dF9zcGxp dF9jdV9iaW5hcnlfZmxhZworICAgICAgICAxMiwgIDEzLCAgMTIsICAxMywKKyAgICAgICAgLy9u b25faW50ZXJfZmxhZworICAgICAgICAgMSwgICAwLAorICAgICAgICAvL2N1X3NraXBfZmxhZwor ICAgICAgICAgNSwgICA0LCAgIDgsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAg ICAgICAxLCAgIDUsICAgOCwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICAgNSwg ICAxLAorICAgICAgICAvL3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAgMSwKKyAgICAgICAg Ly9jdV9hY3RfZW5hYmxlZF9mbGFnCisgICAgICAgICAxLAorICAgICAgICAvL2ludHJhX2JkcGNt X2x1bWFfZmxhZworICAgICAgICAgMSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9m bGFnCisgICAgICAgICA0LAorICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgICA5LCAg MTAsICAgOSwgICA2LAorICAgICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAgNSwg ICA4LAorICAgICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgICA5 LAorICAgICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICAgMiwK KyAgICAgICAgLy9pbnRyYV9sdW1hX21wbV9mbGFnCisgICAgICAgICA2LAorICAgICAgICAvL2lu dHJhX2x1bWFfbm90X3BsYW5hcl9mbGFnCisgICAgICAgICAxLCAgIDUsCisgICAgICAgIC8vaW50 cmFfYmRwY21fY2hyb21hX2ZsYWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50cmFfYmRwY21f Y2hyb21hX2Rpcl9mbGFnCisgICAgICAgICAwLAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisg ICAgICAgICA0LAorICAgICAgICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgIDksCisgICAgICAg IC8vaW50cmFfY2hyb21hX3ByZWRfbW9kZQorICAgICAgICAgNSwKKyAgICAgICAgLy9nZW5lcmFs X21lcmdlX2ZsYWcKKyAgICAgICAgIDQsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAg ICAgIDAsICAgMCwgICAxLCAgIDQsICAgNCwgICAwLAorICAgICAgICAvL2ludGVyX2FmZmluZV9m bGFnCisgICAgICAgICA0LCAgIDAsICAgMCwKKyAgICAgICAgLy9jdV9hZmZpbmVfdHlwZV9mbGFn CisgICAgICAgICA0LAorICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICAgNSwKKyAgICAg ICAgLy9yZWZfaWR4X2wwIGFuZCByZWZfaWR4X2wxCisgICAgICAgICAwLCAgIDQsCisgICAgICAg IC8vbXZwX2wwX2ZsYWcgYW5kIG12cF9sMV9mbGFnCisgICAgICAgIDEyLAorICAgICAgICAvL2Ft dnJfZmxhZworICAgICAgICAgMCwgICAwLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9uX2lkeAor ICAgICAgICAgNCwgICA1LCAgMCwKKyAgICAgICAgLy9iY3dfaWR4CisgICAgICAgICAxLAorICAg ICAgICAvL2N1X2NvZGVkX2ZsYWcKKyAgICAgICAgIDQsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcK KyAgICAgICAgIDEsICAgNSwKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIDEw LAorICAgICAgICAvL2N1X3NidF9ob3Jpem9udGFsX2ZsYWcKKyAgICAgICAgIDgsICAgNCwgICAx LAorICAgICAgICAvL2N1X3NidF9wb3NfZmxhZworICAgICAgICAxMywKKyAgICAgICAgLy9sZm5z dF9pZHgKKyAgICAgICAgIDksICAgOSwgIDEwLAorICAgICAgICAvL210c19pZHgKKyAgICAgICAg IDgsICAgMCwgICA5LCAgIDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNf ZmxhZworICAgICAgICAgOSwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAg ICAgICA1LAorICAgICAgICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgIDksICAgNiwgICA5LCAg MTAsICAgNSwgICAwLCAgIDksICAgNSwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAg ICAgICAgIDUsICAgNSwKKyAgICAgICAgLy9tbXZkX21lcmdlX2ZsYWcKKyAgICAgICAgIDQsCisg ICAgICAgIC8vbW12ZF9jYW5kX2ZsYWcKKyAgICAgICAgMTAsCisgICAgICAgIC8vbW12ZF9kaXN0 YW5jZV9pZHgKKyAgICAgICAgIDAsCisgICAgICAgIC8vY2lpcF9mbGFnCisgICAgICAgICAxLAor ICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2ZsYWcKKyAgICAgICAgIDQsICAgNCwgICA0LAorICAg ICAgICAvL21lcmdlX3N1YmJsb2NrX2lkeAorICAgICAgICAgMCwKKyAgICAgICAgLy9tZXJnZV9p ZHgsIG1lcmdlX2dwbV9pZHgwLCBhbmQgbWVyZ2VfZ3BtX2lkeDEKKyAgICAgICAgIDQsCisgICAg ICAgIC8vYWJzX212ZF9ncmVhdGVyMF9mbGFnCisgICAgICAgICA5LAorICAgICAgICAvL2Fic19t dmRfZ3JlYXRlcjFfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy90dV95X2NvZGVkX2ZsYWcK KyAgICAgICAgIDUsICAgMSwgICA4LCAgIDksCisgICAgICAgIC8vdHVfY2JfY29kZWRfZmxhZwor ICAgICAgICAgNSwgICAwLAorICAgICAgICAvL3R1X2NyX2NvZGVkX2ZsYWcKKyAgICAgICAgIDIs ICAgMSwgICAwLAorICAgICAgICAvL2N1X3FwX2RlbHRhX2FicworICAgICAgICAgOCwgICA4LAor ICAgICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRfZmxhZworICAgICAgICAgOCwKKyAgICAgICAg Ly9jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeAorICAgICAgICAgOCwKKyAgICAgICAgLy90cmFuc2Zv cm1fc2tpcF9mbGFnCisgICAgICAgICAxLCAgIDEsCisgICAgICAgIC8vdHVfam9pbnRfY2Jjcl9y ZXNpZHVhbF9mbGFnCisgICAgICAgICAxLCAgIDEsICAgMCwKKyAgICAgICAgLy9sYXN0X3NpZ19j b2VmZl94X3ByZWZpeAorICAgICAgICAgOCwgICA1LCAgIDQsICAgNSwgICA0LCAgIDQsICAgNSwg ICA0LCAgIDEsICAgMCwgICA0LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAgICAgIDEs ICAgMCwgICAwLCAgIDAsICAgNSwgICA0LCAgIDQsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZf eV9wcmVmaXgKKyAgICAgICAgIDgsICAgNSwgICA4LCAgIDUsICAgNSwgICA0LCAgIDUsICAgNSwg ICA0LCAgIDAsICAgNSwgICA0LCAgIDEsICAgMCwgICAwLCAgIDEsCisgICAgICAgICA0LCAgIDAs ICAgMCwgICAwLCAgIDYsICAgNSwgICA1LAorICAgICAgICAvL3NiX2NvZGVkX2ZsYWcKKyAgICAg ICAgIDgsICAgNSwgICA1LCAgIDgsICAgNSwgICA4LCAgIDgsCisgICAgICAgIC8vc2lnX2NvZWZm X2ZsYWcKKyAgICAgICAgMTIsICAgOSwgICA5LCAgMTAsICAgOSwgICA5LCAgIDksICAxMCwgICA4 LCAgIDgsICAgOCwgIDEwLCAgIDksICAxMywgICA4LCAgIDgsCisgICAgICAgICA4LCAgIDgsICAg OCwgICA1LCAgIDgsICAgMCwgICAwLCAgIDAsICAgOCwgICA4LCAgIDgsICAgOCwgICA4LCAgIDAs ICAgNCwgICA0LAorICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEyLCAgMTIsICAgOSwgIDEz LCAgIDQsICAgNSwgICA4LCAgIDksICAgOCwgIDEyLCAgMTIsICAgOCwKKyAgICAgICAgIDQsICAg MCwgICAwLCAgIDAsICAgOCwgICA4LCAgIDgsICAgOCwgICA0LCAgIDAsICAgMCwgICAwLCAgMTMs ICAxMywgICA4LAorICAgICAgICAvL3Bhcl9sZXZlbF9mbGFnCisgICAgICAgICA4LCAgIDksICAx MiwgIDEzLCAgMTMsICAxMywgIDEwLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMs ICAxMywgIDEzLAorICAgICAgICAxMCwgIDEzLCAgMTMsICAxMywgIDEzLCAgIDgsICAxMiwgIDEy LCAgMTIsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywKKyAgICAgICAgIDYsCisg ICAgICAgIC8vYWJzX2xldmVsX2d0eF9mbGFnCisgICAgICAgICA5LCAgIDUsICAxMCwgIDEzLCAg MTMsICAxMCwgICA5LCAgMTAsICAxMywgIDEzLCAgMTMsICAgOSwgIDEwLCAgMTAsICAxMCwgIDEz LAorICAgICAgICAgOCwgICA5LCAgMTAsICAxMCwgIDEzLCAgIDgsICAgOCwgICA5LCAgMTIsICAx MiwgIDEwLCAgIDUsICAgOSwgICA5LCAgIDksICAxMywKKyAgICAgICAgIDEsICAgNSwgICA5LCAg IDksICAgOSwgICA2LCAgIDUsICAgOSwgIDEwLCAgMTAsICAgOSwgICA5LCAgIDksICAgOSwgICA5 LCAgIDksCisgICAgICAgICA2LCAgIDgsICAgOSwgICA5LCAgMTAsICAgMSwgICA1LCAgIDgsICAg OCwgICA5LCAgIDYsICAgNiwgICA5LCAgIDgsICAgOCwgICA5LAorICAgICAgICAgNCwgICAyLCAg IDEsICAgNiwgICAxLCAgIDEsICAgMSwgICAxLAorICAgICAgICAvL2NvZWZmX3NpZ25fZmxhZwor ICAgICAgICAgMSwgICA0LCAgIDQsICAgNSwgICA4LCAgIDgsCisgICAgfQorfTsKKworI2RlZmlu ZSBNQVhfU1VCX0JMT0NLUyAxNgorI2RlZmluZSBNQVhfU1VCX0JMT0NLX1NJWkUgNAorI2RlZmlu ZSBNQVhfVEJfU0laRSA2NAorCit0eXBlZGVmIHN0cnVjdCBSZXNpZHVhbENvZGluZyB7CisgICAg Ly9jb21tb24gZm9yIHRzIGFuZCBub24gdHMKKyAgICBUcmFuc2Zvcm1CbG9jayAqdGI7CisKKyAg ICBpbnQgbG9nMl9zYl93OworICAgIGludCBsb2cyX3NiX2g7CisgICAgaW50IGxhc3Rfc3ViX2Js b2NrOworICAgIGludCBoaXN0X3ZhbHVlOworICAgIGludCB1cGRhdGVfaGlzdDsKKyAgICBpbnQg bnVtX3NiX2NvZWZmOworICAgIGludCByZW1fYmluc19wYXNzMTsKKworICAgIGludCB3aWR0aF9p bl9zYnM7CisgICAgaW50IGhlaWdodF9pbl9zYnM7CisgICAgaW50IG5iX3NiczsKKworICAgIGNv bnN0IHVpbnQ4X3QgKnNiX3NjYW5feF9vZmY7CisgICAgY29uc3QgdWludDhfdCAqc2Jfc2Nhbl95 X29mZjsKKyAgICBjb25zdCB1aW50OF90ICpzY2FuX3hfb2ZmOworICAgIGNvbnN0IHVpbnQ4X3Qg KnNjYW5feV9vZmY7CisKKyAgICB1aW50OF90IHNiX2NvZGVkX2ZsYWdbTUFYX1NVQl9CTE9DS1Mg KiBNQVhfU1VCX0JMT0NLU107CisgICAgaW50IHNpZ19jb2VmZl9mbGFnW01BWF9UQl9TSVpFICog TUFYX1RCX1NJWkVdOworICAgIGludCBhYnNfbGV2ZWxfcGFzczFbTUFYX1RCX1NJWkUgKiBNQVhf VEJfU0laRV07ICAgICAgICAgICAgICAvLy88IEFic0xldmVsUGFzczFbXVtdCisgICAgaW50IGFi c19sZXZlbFtNQVhfVEJfU0laRSAqIE1BWF9UQl9TSVpFXTsKKworICAgIC8vZm9yIHRzIG9ubHkK KyAgICB1aW50OF90IGluZmVyX3NiX2NiZjsKKyAgICBpbnQgY29lZmZfc2lnbl9sZXZlbFtNQVhf VEJfU0laRSAqIE1BWF9UQl9TSVpFXTsgICAgICAgICAgICAgLy8vPCBDb2VmZlNpZ25MZXZlbFtd W10KKworICAgIC8vZm9yIG5vbiB0cyBvbmx5CisgICAgaW50IHFzdGF0ZTsKKyAgICBpbnQgbGFz dF9zY2FuX3BvczsKKyAgICBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94OworICAgIGludCBs YXN0X3NpZ25pZmljYW50X2NvZWZmX3k7Cit9IFJlc2lkdWFsQ29kaW5nOworCitzdGF0aWMgaW50 IGNhYmFjX3JlaW5pdChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBza2lwX2J5 dGVzKCZsYy0+ZXAtPmNjLCAwKSA9PSBOVUxMID8gQVZFUlJPUl9JTlZBTElEREFUQSA6IDA7Cit9 CisKK3N0YXRpYyB2b2lkIGNhYmFjX2luaXRfc3RhdGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sK KyAgICBjb25zdCBWVkNTUFMgKnNwcyAgICAgICAgICAgICA9IGxjLT5mYy0+cHMuc3BzOworICAg IGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoID0gbGMtPnNjLT5zaC5yOworICAgIGNvbnN0 IGludCBxcCAgICAgICAgICAgICAgICAgID0gYXZfY2xpcF91aW50cDIobGMtPnNjLT5zaC5zbGlj ZV9xcF95LCA2KTsKKyAgICBpbnQgaW5pdF90eXBlICAgICAgICAgICAgICAgICA9IDIgLSByc2gt PnNoX3NsaWNlX3R5cGU7CisKKyAgICBhdl9hc3NlcnQwKFZWQ19DT05URVhUUyA9PSBTWU5UQVhf RUxFTUVOVF9MQVNUKTsKKworICAgIGZmX3Z2Y19lcF9pbml0X3N0YXRfY29lZmYobGMtPmVwLCBz cHMtPmJpdF9kZXB0aCwgc3BzLT5yLT5zcHNfcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5h YmxlZF9mbGFnKTsKKworICAgIGlmIChyc2gtPnNoX2NhYmFjX2luaXRfZmxhZyAmJiAhSVNfSShy c2gpKQorICAgICAgICBpbml0X3R5cGUgXj0gMzsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg VlZDX0NPTlRFWFRTOyBpKyspIHsKKyAgICAgICAgVlZDQ2FiYWNTdGF0ZSAqc3RhdGUgPSAmbGMt PmVwLT5jYWJhY19zdGF0ZVtpXTsKKyAgICAgICAgY29uc3QgaW50IGluaXRfdmFsdWUgPSBpbml0 X3ZhbHVlc1tpbml0X3R5cGVdW2ldOworICAgICAgICBjb25zdCBpbnQgc2hpZnRfaWR4ICA9IGlu aXRfdmFsdWVzWzNdW2ldOworICAgICAgICBjb25zdCBpbnQgbSA9IChpbml0X3ZhbHVlID4+IDMp IC0gNDsKKyAgICAgICAgY29uc3QgaW50IG4gPSAoKGluaXRfdmFsdWUgJiA3KSAqIDE4KSArIDE7 CisgICAgICAgIGNvbnN0IGludCBwcmUgPSBhdl9jbGlwKCgobSAqIChxcCAtIDE2KSkgPj4gMSkg KyBuLCAxLCAxMjcpOworCisgICAgICAgIHN0YXRlLT5zdGF0ZVswXSA9IHByZSA8PCAzOworICAg ICAgICBzdGF0ZS0+c3RhdGVbMV0gPSBwcmUgPDwgNzsKKyAgICAgICAgc3RhdGUtPnNoaWZ0WzBd ID0gKHNoaWZ0X2lkeCA+PiAyICkgKyAyOworICAgICAgICBzdGF0ZS0+c2hpZnRbMV0gPSAoc2hp ZnRfaWR4ICYgMyApICsgMyArIHN0YXRlLT5zaGlmdFswXTsKKyAgICB9Cit9CisKK2ludCBmZl92 dmNfY2FiYWNfaW5pdChWVkNMb2NhbENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBjdHVfaWR4 LCBjb25zdCBpbnQgcngsIGNvbnN0IGludCByeSkKK3sKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBj b25zdCBWVkNQUFMgKnBwcyAgICAgICAgICAgID0gbGMtPmZjLT5wcy5wcHM7CisgICAgY29uc3Qg aW50IGZpcnN0X2N0Yl9pbl9zbGljZSA9ICFjdHVfaWR4OworICAgIGNvbnN0IGludCBmaXJzdF9j dGJfaW5fdGlsZSAgPSByeCA9PSBwcHMtPmN0Yl90b19jb2xfYmRbcnhdICYmIHJ5ID09IHBwcy0+ Y3RiX3RvX3Jvd19iZFtyeV07CisKKyAgICBpZiAoZmlyc3RfY3RiX2luX3NsaWNlfHwgZmlyc3Rf Y3RiX2luX3RpbGUpIHsKKyAgICAgICAgaWYgKGxjLT5zYy0+bmJfZXBzID09IDEgJiYgIWZpcnN0 X2N0Yl9pbl9zbGljZSkKKyAgICAgICAgICAgIHJldCA9IGNhYmFjX3JlaW5pdChsYyk7CisgICAg ICAgIGlmICghcmV0KQorICAgICAgICAgICAgY2FiYWNfaW5pdF9zdGF0ZShsYyk7CisgICAgfQor ICAgIHJldHVybiByZXQ7Cit9CisKKy8vZml4bWUKK3N0YXRpYyB2b2lkIHZ2Y19yZWZpbGwyKENB QkFDQ29udGV4dCogYykgeworICAgIGludCBpOworICAgIHVuc2lnbmVkIHg7CisjaWYgIUhBVkVf RkFTVF9DTFoKKyAgICB4ID0gYy0+bG93IF4gKGMtPmxvdyAtIDEpOworICAgIGkgPSA3IC0gZmZf aDI2NF9ub3JtX3NoaWZ0W3ggPj4gKENBQkFDX0JJVFMgLSAxKV07CisjZWxzZQorICAgIGkgPSBm Zl9jdHooYy0+bG93KSAtIENBQkFDX0JJVFM7CisjZW5kaWYKKworICAgIHggPSAtQ0FCQUNfTUFT SzsKKworI2lmIENBQkFDX0JJVFMgPT0gMTYKKyAgICB4ICs9IChjLT5ieXRlc3RyZWFtWzBdIDw8 IDkpICsgKGMtPmJ5dGVzdHJlYW1bMV0gPDwgMSk7CisjZWxzZQorICAgIHggKz0gYy0+Ynl0ZXN0 cmVhbVswXSA8PCAxOworI2VuZGlmCisKKyAgICBjLT5sb3cgKz0geCA8PCBpOworI2lmICFVTkNI RUNLRURfQklUU1RSRUFNX1JFQURFUgorICAgIGlmIChjLT5ieXRlc3RyZWFtIDwgYy0+Ynl0ZXN0 cmVhbV9lbmQpCisjZW5kaWYKKyAgICAgICAgYy0+Ynl0ZXN0cmVhbSArPSBDQUJBQ19CSVRTIC8g ODsKK30KKworc3RhdGljIGludCBpbmxpbmUgdnZjX2dldF9jYWJhYyhDQUJBQ0NvbnRleHQgKmMs IFZWQ0NhYmFjU3RhdGUqIGJhc2UsIGNvbnN0IGludCBjdHgpCit7CisgICAgVlZDQ2FiYWNTdGF0 ZSAqcyA9IGJhc2UgKyBjdHg7CisgICAgY29uc3QgaW50IHFSYW5nZUlkeCA9IGMtPnJhbmdlID4+ IDU7CisgICAgY29uc3QgaW50IHBTdGF0ZSA9IHMtPnN0YXRlWzFdICsgKHMtPnN0YXRlWzBdIDw8 IDQpOworICAgIGNvbnN0IGludCB2YWxNcHMgPSBwU3RhdGUgPj4gMTQ7CisgICAgY29uc3QgaW50 IFJhbmdlTFBTID0gKHFSYW5nZUlkeCAqICgodmFsTXBzID8gMzI3NjcgLSBwU3RhdGUgOiBwU3Rh dGUpID4+IDkgKSA+PiAxKSArIDQ7CisgICAgaW50IGJpdCwgbHBzX21hc2s7CisKKyAgICBjLT5y YW5nZSAtPSBSYW5nZUxQUzsKKyAgICBscHNfbWFzayA9ICgoYy0+cmFuZ2U8PChDQUJBQ19CSVRT KzEpKSAtIGMtPmxvdyk+PjMxOworCisgICAgYy0+bG93IC09IChjLT5yYW5nZTw8KENBQkFDX0JJ VFMrMSkpICYgbHBzX21hc2s7CisgICAgYy0+cmFuZ2UgKz0gKFJhbmdlTFBTIC0gYy0+cmFuZ2Up ICYgbHBzX21hc2s7CisKKyAgICBiaXQgPSB2YWxNcHMgXiAobHBzX21hc2sgJiAxKTsKKworICAg IGxwc19tYXNrID0gZmZfaDI2NF9ub3JtX3NoaWZ0W2MtPnJhbmdlXTsKKyAgICBjLT5yYW5nZSA8 PD0gbHBzX21hc2s7CisgICAgYy0+bG93ICA8PD0gbHBzX21hc2s7CisKKyAgICBpZiAoIShjLT5s b3cgJiBDQUJBQ19NQVNLKSkKKyAgICAgICAgdnZjX3JlZmlsbDIoYyk7CisgICAgcy0+c3RhdGVb MF0gPSBzLT5zdGF0ZVswXSAtIChzLT5zdGF0ZVswXSA+PiBzLT5zaGlmdFswXSkgKyAoMTAyMyAq IGJpdCA+PiBzLT5zaGlmdFswXSk7CisgICAgcy0+c3RhdGVbMV0gPSBzLT5zdGF0ZVsxXSAtIChz LT5zdGF0ZVsxXSA+PiBzLT5zaGlmdFsxXSkgKyAoMTYzODMgKiBiaXQgPj4gcy0+c2hpZnRbMV0p OworICAgIHJldHVybiBiaXQ7Cit9CisKKyNkZWZpbmUgR0VUX0NBQkFDKGN0eCkgdnZjX2dldF9j YWJhYygmbGMtPmVwLT5jYywgbGMtPmVwLT5jYWJhY19zdGF0ZSwgY3R4KQorCisvLzkuMy4zLjQg VHJ1bmNhdGVkIGJpbmFyeSAoVEIpIGJpbmFyaXphdGlvbiBwcm9jZXNzCitzdGF0aWMgaW50IHRy dW5jYXRlZF9iaW5hcnlfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBjX21h eCkKK3sKKyAgICBjb25zdCBpbnQgbiA9IGNfbWF4ICsgMTsKKyAgICBjb25zdCBpbnQgayA9IGF2 X2xvZzIobik7CisgICAgY29uc3QgaW50IHUgPSAoMSA8PCAoaysxKSkgLSBuOworICAgIGludCB2 ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykKKyAgICAgICAgdiA9ICh2IDw8 IDEpIHwgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgaWYgKHYgPj0gdSkgewor ICAgICAgICB2ID0gKHYgPDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAg ICAgICAgdiAtPSB1OworICAgIH0KKyAgICByZXR1cm4gdjsKK30KKworLy8gOS4zLjMuNiBMaW1p dGVkIGstdGggb3JkZXIgRXhwLUdvbG9tYiBiaW5hcml6YXRpb24gcHJvY2Vzcworc3RhdGljIGlu dCBsaW1pdGVkX2t0aF9vcmRlcl9lZ2tfZGVjb2RlKENBQkFDQ29udGV4dCAqYywgY29uc3QgaW50 IGssIGNvbnN0IGludCBtYXhfcHJlX2V4dF9sZW4sIGNvbnN0IGludCB0cnVuY19zdWZmaXhfbGVu KQoreworICAgIGludCBwcmVfZXh0X2xlbiA9IDA7CisgICAgaW50IGVzY2FwZV9sZW5ndGg7Cisg ICAgaW50IHZhbCA9IDA7CisgICAgd2hpbGUgKChwcmVfZXh0X2xlbiA8IG1heF9wcmVfZXh0X2xl bikgJiYgZ2V0X2NhYmFjX2J5cGFzcyhjKSkKKyAgICAgICAgcHJlX2V4dF9sZW4rKzsKKyAgICBp ZiAocHJlX2V4dF9sZW4gPT0gbWF4X3ByZV9leHRfbGVuKQorICAgICAgICBlc2NhcGVfbGVuZ3Ro ID0gdHJ1bmNfc3VmZml4X2xlbjsKKyAgICBlbHNlCisgICAgICAgIGVzY2FwZV9sZW5ndGggPSBw cmVfZXh0X2xlbiArIGs7CisgICAgd2hpbGUgKGVzY2FwZV9sZW5ndGgtLSA+IDApIHsKKyAgICAg ICAgdmFsID0gKHZhbCA8PCAxKSArIGdldF9jYWJhY19ieXBhc3MoYyk7CisgICAgfQorICAgIHZh bCArPSAoKDEgPDwgcHJlX2V4dF9sZW4pIC0gMSkgPDwgazsKKyAgICByZXR1cm4gdmFsOworfQor CitzdGF0aWMgYXZfYWx3YXlzX2lubGluZQordm9pZCBnZXRfbGVmdF90b3AoY29uc3QgVlZDTG9j YWxDb250ZXh0ICpsYywgdWludDhfdCAqbGVmdCwgdWludDhfdCAqdG9wLAorICAgIGNvbnN0IGlu dCB4MCwgY29uc3QgaW50IHkwLCBjb25zdCB1aW50OF90ICpsZWZ0X2N0eCwgY29uc3QgdWludDhf dCAqdG9wX2N0eCkKK3sKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOwor ICAgIGNvbnN0IFZWQ1NQUyAqc3BzICAgICAgICAgPSBmYy0+cHMuc3BzOworICAgIGNvbnN0IGlu dCBtaW5fY2Jfd2lkdGggICAgPSBmYy0+cHMucHBzLT5taW5fY2Jfd2lkdGg7CisgICAgY29uc3Qg aW50IHgwYiA9IGF2X21vZF91aW50cDIoeDAsIHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAgICBj b25zdCBpbnQgeTBiID0gYXZfbW9kX3VpbnRwMih5MCwgc3BzLT5jdGJfbG9nMl9zaXplX3kpOwor ICAgIGNvbnN0IGludCB4X2NiID0geDAgPj4gc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisgICAg Y29uc3QgaW50IHlfY2IgPSB5MCA+PiBzcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKworICAgIGlm IChsYy0+Y3RiX2xlZnRfZmxhZyB8fCB4MGIpCisgICAgICAgICpsZWZ0ID0gU0FNUExFX0NUQihs ZWZ0X2N0eCwgeF9jYiAtIDEsIHlfY2IpOworICAgIGlmIChsYy0+Y3RiX3VwX2ZsYWcgfHwgeTBi KQorICAgICAgICAqdG9wID0gU0FNUExFX0NUQih0b3BfY3R4LCB4X2NiLCB5X2NiIC0gMSk7Cit9 CisKK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lCit1aW50OF90IGdldF9pbmMoVlZDTG9jYWxDb250 ZXh0ICpsYywgY29uc3QgdWludDhfdCAqY3R4KQoreworICAgIHVpbnQ4X3QgbGVmdCA9IDAsIHRv cCA9IDA7CisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRvcCwgbGMtPmN1LT54MCwgbGMt PmN1LT55MCwgY3R4LCBjdHgpOworICAgIHJldHVybiBsZWZ0ICsgdG9wOworfQorCitpbnQgZmZf dnZjX3Nhb19tZXJnZV9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJl dHVybiBHRVRfQ0FCQUMoU0FPX01FUkdFX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3Nhb190eXBl X2lkeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpZiAoIUdFVF9DQUJBQyhT QU9fVFlQRV9JRFgpKQorICAgICAgICByZXR1cm4gU0FPX05PVF9BUFBMSUVEOworCisgICAgaWYg KCFnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgcmV0dXJuIFNBT19CQU5E OworICAgIHJldHVybiBTQU9fRURHRTsKK30KKworaW50IGZmX3Z2Y19zYW9fYmFuZF9wb3NpdGlv bl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgdmFsdWUgPSBnZXRfY2Fi YWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsr KQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCAxKSB8IGdldF9jYWJhY19ieXBhc3MoJmxjLT5l cC0+Y2MpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworaW50IGZmX3Z2Y19zYW9fb2Zmc2V0X2Fi c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaSA9IDA7CisgICAgY29u c3QgaW50IGxlbmd0aCA9ICgxIDw8IChGRk1JTihsYy0+ZmMtPnBzLnNwcy0+Yml0X2RlcHRoLCAx MCkgLSA1KSkgLSAxOworCisgICAgd2hpbGUgKGkgPCBsZW5ndGggJiYgZ2V0X2NhYmFjX2J5cGFz cygmbGMtPmVwLT5jYykpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZm X3Z2Y19zYW9fb2Zmc2V0X3NpZ25fZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAg cmV0dXJuIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworfQorCitpbnQgZmZfdnZjX3Nh b19lb19jbGFzc19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgcmV0ID0g Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykgPDwgMTsKKyAgICByZXQgICAgfD0gZ2V0X2Nh YmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IGZmX3Z2 Y19hbGZfY3RiX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHJ4LCBjb25zdCBp bnQgcnksIGNvbnN0IGludCBjX2lkeCkKK3sKKyAgICBpbnQgaW5jID0gY19pZHggKiAzOworICAg IGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSBsYy0+ZmM7CisgICAgaWYgKGxjLT5jdGJfbGVm dF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFMRlBhcmFtcyAqbGVmdCA9ICZDVEIoZmMtPnRhYi5h bGYsIHJ4IC0gMSwgcnkpOworICAgICAgICBpbmMgKz0gbGVmdC0+Y3RiX2ZsYWdbY19pZHhdOwor ICAgIH0KKyAgICBpZiAobGMtPmN0Yl91cF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFMRlBhcmFt cyAqYWJvdmUgPSAmQ1RCKGZjLT50YWIuYWxmLCByeCwgcnkgLSAxKTsKKyAgICAgICAgaW5jICs9 IGFib3ZlLT5jdGJfZmxhZ1tjX2lkeF07CisgICAgfQorICAgIHJldHVybiBHRVRfQ0FCQUMoQUxG X0NUQl9GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19hbGZfdXNlX2Fwc19mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBTEZfVVNFX0FQU19GTEFH KTsKK30KKworaW50IGZmX3Z2Y19hbGZfbHVtYV9wcmV2X2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gdHJ1bmNhdGVkX2JpbmFyeV9kZWNvZGUobGMsIGxjLT5z Yy0+c2guci0+c2hfbnVtX2FsZl9hcHNfaWRzX2x1bWEgLSAxKTsKK30KKworaW50IGZmX3Z2Y19h bGZfbHVtYV9maXhlZF9maWx0ZXJfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0 dXJuIHRydW5jYXRlZF9iaW5hcnlfZGVjb2RlKGxjLCAxNSk7Cit9CisKK2ludCBmZl92dmNfYWxm X2N0Yl9maWx0ZXJfYWx0X2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgY19pZHgs IGNvbnN0IGludCBudW1fY2hyb21hX2ZpbHRlcnMpCit7CisgICAgaW50IGkgPSAwOworICAgIGNv bnN0IGludCBsZW5ndGggPSBudW1fY2hyb21hX2ZpbHRlcnMgLSAxOworCisgICAgd2hpbGUgKGkg PCBsZW5ndGggJiYgR0VUX0NBQkFDKEFMRl9DVEJfRklMVEVSX0FMVF9JRFggKyBjX2lkeCAtIDEp KQorICAgICAgICBpKys7CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfYWxmX2N0Yl9j Y19pZGMoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHJ4LCBjb25zdCBpbnQgcnksIGNv bnN0IGludCBpZHgsIGNvbnN0IGludCBjY19maWx0ZXJzX3NpZ25hbGxlZCkKK3sKKyAgICBpbnQg aW5jID0gIWlkeCA/IEFMRl9DVEJfQ0NfQ0JfSURDIDogQUxGX0NUQl9DQ19DUl9JREM7CisgICAg aW50IGkgPSAwOworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSBsYy0+ZmM7CisgICAg aWYgKGxjLT5jdGJfbGVmdF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFMRlBhcmFtcyAqbGVmdCA9 ICZDVEIoZmMtPnRhYi5hbGYsIHJ4IC0gMSwgcnkpOworICAgICAgICBpbmMgKz0gbGVmdC0+Y3Ri X2NjX2lkY1tpZHhdICE9IDA7CisgICAgfQorICAgIGlmIChsYy0+Y3RiX3VwX2ZsYWcpIHsKKyAg ICAgICAgY29uc3QgQUxGUGFyYW1zICphYm92ZSA9ICZDVEIoZmMtPnRhYi5hbGYsIHJ4LCByeSAt IDEpOworICAgICAgICBpbmMgKz0gYWJvdmUtPmN0Yl9jY19pZGNbaWR4XSAhPSAwOworICAgIH0K KworICAgIGlmICghR0VUX0NBQkFDKGluYykpCisgICAgICAgIHJldHVybiAwOworICAgIGkrKzsK KyAgICB3aGlsZSAoaSA8IGNjX2ZpbHRlcnNfc2lnbmFsbGVkICYmIGdldF9jYWJhY19ieXBhc3Mo JmxjLT5lcC0+Y2MpKQorICAgICAgICBpKys7CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92 dmNfc3BsaXRfY3VfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0 IGludCB5MCwKKyAgICBjb25zdCBpbnQgY2Jfd2lkdGgsIGNvbnN0IGludCBjYl9oZWlnaHQsIGNv bnN0IGludCBpc19jaHJvbWEsIGNvbnN0IFZWQ0FsbG93ZWRTcGxpdCAqYSkKK3sKKyAgICBjb25z dCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgIGNvbnN0IFZWQ1BQUyAqcHBzICAg ICAgICAgPSBmYy0+cHMucHBzOworICAgIGNvbnN0IGludCBpc19pbnNpZGUgICAgICAgPSAoeDAg KyBjYl93aWR0aCA8PSBwcHMtPndpZHRoKSAmJiAoeTAgKyBjYl9oZWlnaHQgPD0gcHBzLT5oZWln aHQpOworCisgICAgaWYgKChhLT5idHYgfHwgYS0+YnRoIHx8IGEtPnR0diB8fCBhLT50dGggfHwg YS0+cXQpICYmIGlzX2luc2lkZSkKKyAgICB7CisgICAgICAgIHVpbnQ4X3QgaW5jID0gMCwgbGVm dF9oZWlnaHQgPSBjYl9oZWlnaHQsIHRvcF93aWR0aCA9IGNiX3dpZHRoOworCisgICAgICAgIGdl dF9sZWZ0X3RvcChsYywgJmxlZnRfaGVpZ2h0LCAmdG9wX3dpZHRoLCB4MCwgeTAsIGZjLT50YWIu Y2JfaGVpZ2h0W2lzX2Nocm9tYV0sIGZjLT50YWIuY2Jfd2lkdGhbaXNfY2hyb21hXSk7CisgICAg ICAgIGluYyArPSBsZWZ0X2hlaWdodCA8IGNiX2hlaWdodDsKKyAgICAgICAgaW5jICs9IHRvcF93 aWR0aCAgIDwgY2Jfd2lkdGg7CisgICAgICAgIGluYyArPSAoYS0+YnR2ICsgYS0+YnRoICsgYS0+ dHR2ICsgYS0+dHRoICsgMiAqIGEtPnF0IC0gMSkgLyAyICogMzsKKworICAgICAgICByZXR1cm4g R0VUX0NBQkFDKFNQTElUX0NVX0ZMQUcgKyBpbmMpOworCisgICAgfQorICAgIHJldHVybiAhaXNf aW5zaWRlOworfQorCitzdGF0aWMgaW50IHNwbGl0X3F0X2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29u dGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkwLCBjb25zdCBpbnQgY2hfdHlwZSwg Y29uc3QgaW50IGNxdF9kZXB0aCkKK3sKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0g bGMtPmZjOworICAgIGludCBpbmMgPSAwOworICAgIHVpbnQ4X3QgZGVwdGhfbGVmdCA9IDAsIGRl cHRoX3RvcCA9IDA7CisKKyAgICBnZXRfbGVmdF90b3AobGMsICAmZGVwdGhfbGVmdCwgJmRlcHRo X3RvcCwgeDAsIHkwLCBmYy0+dGFiLmNxdF9kZXB0aFtjaF90eXBlXSwgZmMtPnRhYi5jcXRfZGVw dGhbY2hfdHlwZV0pOworICAgIGluYyArPSBkZXB0aF9sZWZ0ID4gY3F0X2RlcHRoOworICAgIGlu YyArPSBkZXB0aF90b3AgID4gY3F0X2RlcHRoOworICAgIGluYyArPSAoY3F0X2RlcHRoID49IDIp ICogMzsKKworICAgIHJldHVybiBHRVRfQ0FCQUMoU1BMSVRfUVRfRkxBRyArIGluYyk7Cit9CisK K3N0YXRpYyBpbnQgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29u dGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkwLAorICAgIGNvbnN0IGludCBjYl93 aWR0aCwgY29uc3QgaW50IGNiX2hlaWdodCwgY29uc3QgaW50IGNoX3R5cGUsIGNvbnN0IFZWQ0Fs bG93ZWRTcGxpdCogYSkKK3sKKyAgICBpZiAoKGEtPmJ0aCB8fCBhLT50dGgpICYmIChhLT5idHYg fHwgYS0+dHR2KSkgeworICAgICAgICBpbnQgaW5jOworICAgICAgICBjb25zdCBpbnQgdiA9IGEt PmJ0diArIGEtPnR0djsKKyAgICAgICAgY29uc3QgaW50IGggPSBhLT5idGggKyBhLT50dGg7Cisg ICAgICAgIGlmICh2ID4gaCkKKyAgICAgICAgICAgIGluYyA9IDQ7CisgICAgICAgIGVsc2UgaWYg KHYgPCBoKQorICAgICAgICAgICAgaW5jID0gMzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg ICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgICAgICAgICAgY29uc3Qg VlZDU1BTICpzcHMgICAgICAgICA9IGZjLT5wcy5zcHM7CisgICAgICAgICAgICBjb25zdCBpbnQg bWluX2NiX3dpZHRoICAgID0gZmMtPnBzLnBwcy0+bWluX2NiX3dpZHRoOworICAgICAgICAgICAg Y29uc3QgaW50IHgwYiAgICAgICAgICAgICA9IGF2X21vZF91aW50cDIoeDAsIHNwcy0+Y3RiX2xv ZzJfc2l6ZV95KTsKKyAgICAgICAgICAgIGNvbnN0IGludCB5MGIgICAgICAgICAgICAgPSBhdl9t b2RfdWludHAyKHkwLCBzcHMtPmN0Yl9sb2cyX3NpemVfeSk7CisgICAgICAgICAgICBjb25zdCBp bnQgeF9jYiAgICAgICAgICAgID0geDAgPj4gc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisgICAg ICAgICAgICBjb25zdCBpbnQgeV9jYiAgICAgICAgICAgID0geTAgPj4gc3BzLT5taW5fY2JfbG9n Ml9zaXplX3k7CisgICAgICAgICAgICBjb25zdCBpbnQgYXZhaWxhYmxlX2EgICAgID0gbGMtPmN0 Yl91cF9mbGFnIHx8IHkwYjsKKyAgICAgICAgICAgIGNvbnN0IGludCBhdmFpbGFibGVfbCAgICAg PSBsYy0+Y3RiX2xlZnRfZmxhZyB8fCB4MGI7CisgICAgICAgICAgICBjb25zdCBpbnQgZGEgICAg ICAgICAgICAgID0gY2Jfd2lkdGggIC8gKGF2YWlsYWJsZV9hID8gU0FNUExFX0NUQihmYy0+dGFi LmNiX3dpZHRoW2NoX3R5cGVdLCB4X2NiLCB5X2NiIC0gMSkgOiAxKTsKKyAgICAgICAgICAgIGNv bnN0IGludCBkbCAgICAgICAgICAgICAgPSBjYl9oZWlnaHQgLyAoYXZhaWxhYmxlX2wgPyBTQU1Q TEVfQ1RCKGZjLT50YWIuY2JfaGVpZ2h0W2NoX3R5cGVdLCB4X2NiIC0gMSwgeV9jYikgOiAxKTsK KworICAgICAgICAgICAgaWYgKGRhID09IGRsIHx8ICFhdmFpbGFibGVfYSB8fCAhYXZhaWxhYmxl X2wpCisgICAgICAgICAgICAgICAgaW5jID0gMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRhIDwg ZGwpCisgICAgICAgICAgICAgICAgaW5jID0gMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgICAgICBpbmMgPSAyOworICAgICAgICB9CisgICAgICAgIHJldHVybiBHRVRfQ0FCQUMoTVRU X1NQTElUX0NVX1ZFUlRJQ0FMX0ZMQUcgKyBpbmMpOworICAgIH0KKyAgICByZXR1cm4gIShhLT5i dGggfHwgYS0+dHRoKTsKK30KKworc3RhdGljIGludCBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWdf ZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBtdHRfc3BsaXRfY3VfdmVydGlj YWxfZmxhZywgY29uc3QgaW50IG10dF9kZXB0aCkKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gKDIg KiBtdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZykgKyAoKG10dF9kZXB0aCA8PSAxKSA/IDEgOiAw KTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKE1UVF9TUExJVF9DVV9CSU5BUllfRkxBRyArIGluYyk7 Cit9CisKK1ZWQ1NwbGl0TW9kZSBmZl92dmNfc3BsaXRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxj LCBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCwgY29uc3QgaW50IGNiX3dpZHRoLCBjb25zdCBp bnQgY2JfaGVpZ2h0LAorICAgIGNvbnN0IGludCBjcXRfZGVwdGgsIGNvbnN0IGludCBtdHRfZGVw dGgsIGNvbnN0IGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpCit7CisgICAg Y29uc3QgaW50IGFsbG93X25vX3F0ID0gYS0+YnR2IHx8IGEtPmJ0aCB8fCBhLT50dHYgfHwgYS0+ dHRoOworICAgIGludCBzcGxpdF9xdF9mbGFnOworICAgIGludCBtdHRfc3BsaXRfY3VfdmVydGlj YWxfZmxhZzsKKyAgICBpbnQgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnOworICAgIGNvbnN0IFZW Q1NwbGl0TW9kZSBtdHRfc3BsaXRfbW9kZXNbXSA9IHsKKyAgICAgICAgU1BMSVRfVFRfSE9SLCBT UExJVF9CVF9IT1IsIFNQTElUX1RUX1ZFUiwgU1BMSVRfQlRfVkVSLAorICAgIH07CisgICAgaWYg KGFsbG93X25vX3F0ICYmIGEtPnF0KSB7CisgICAgICAgIHNwbGl0X3F0X2ZsYWcgPSBzcGxpdF9x dF9mbGFnX2RlY29kZShsYywgeDAsIHkwLCBjaF90eXBlLCBjcXRfZGVwdGgpOworICAgIH0gZWxz ZSB7CisgICAgICAgIHNwbGl0X3F0X2ZsYWcgPSAhYWxsb3dfbm9fcXQgfHwgYS0+cXQ7CisgICAg fQorICAgIGlmIChzcGxpdF9xdF9mbGFnKQorICAgICAgICByZXR1cm4gU1BMSVRfUVQ7CisgICAg bXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcgPSBtdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZ19k ZWNvZGUobGMsIHgwLCB5MCwgY2Jfd2lkdGgsIGNiX2hlaWdodCwgY2hfdHlwZSwgYSk7CisgICAg aWYgKChhLT5idHYgJiYgYS0+dHR2ICYmIG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnKSB8fAor ICAgICAgICAoYS0+YnRoICYmIGEtPnR0aCAmJiAhbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcp KSB7CisgICAgICAgIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IG10dF9zcGxpdF9jdV9iaW5h cnlfZmxhZ19kZWNvZGUobGMsIG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnLCBtdHRfZGVwdGgp OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghYS0+YnR2ICYmICFhLT5idGgpCisgICAgICAg ICAgICBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcgPSAwOworICAgICAgICBlbHNlIGlmICghYS0+ dHR2ICYmICFhLT50dGgpCisgICAgICAgICAgICBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcgPSAx OworICAgICAgICBlbHNlIGlmIChhLT5idGggJiYgYS0+dHR2KQorICAgICAgICAgICAgbXR0X3Nw bGl0X2N1X2JpbmFyeV9mbGFnID0gMSAtIG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnOworICAg ICAgICBlbHNlCisgICAgICAgICAgICBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcgPSBtdHRfc3Bs aXRfY3VfdmVydGljYWxfZmxhZzsKKyAgICB9CisgICAgcmV0dXJuIG10dF9zcGxpdF9tb2Rlc1so bXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcgPDwgMSkgKyBtdHRfc3BsaXRfY3VfYmluYXJ5X2Zs YWddOworfQorCitpbnQgZmZfdnZjX25vbl9pbnRlcl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMs IGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkwLCBjb25zdCBpbnQgY2hfdHlwZSkKK3sKKyAgICBj b25zdCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgIHVpbnQ4X3QgaW5jLCBsZWZ0 ID0gMCwgdG9wID0gMDsKKworICAgIGdldF9sZWZ0X3RvcChsYywgJmxlZnQsICZ0b3AsIHgwLCB5 MCwgZmMtPnRhYi5jcG1bY2hfdHlwZV0sIGZjLT50YWIuY3BtW2NoX3R5cGVdKTsKKyAgICBpbmMg PSBsZWZ0IHx8IHRvcDsKKyAgICByZXR1cm4gR0VUX0NBQkFDKE5PTl9JTlRFUl9GTEFHICsgaW5j KTsKK30KKworaW50IGZmX3Z2Y19wcmVkX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBj b25zdCBpbnQgaXNfY2hyb21hKQoreworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSBs Yy0+ZmM7CisgICAgY29uc3QgQ29kaW5nVW5pdCAqY3UgICAgICA9IGxjLT5jdTsKKyAgICB1aW50 OF90IGluYywgbGVmdCA9IDAsIHRvcCA9IDA7CisKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0 LCAmdG9wLCBjdS0+eDAsIGN1LT55MCwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSwgZmMtPnRhYi5j cG1baXNfY2hyb21hXSk7CisgICAgaW5jID0gbGVmdCB8fCB0b3A7CisgICAgcmV0dXJuIEdFVF9D QUJBQyhQUkVEX01PREVfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfcHJlZF9tb2RlX3Bs dF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQUkVE X01PREVfUExUX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2x1bWFfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01f TFVNQV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9CRFBDTV9M VU1BX0RJUl9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9jaHJvbWFfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01f Q0hST01BX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQ Q01fQ0hST01BX0RJUl9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19jdV9za2lwX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYywgY29uc3QgdWludDhfdCAqY3Vfc2tpcF9mbGFnKQoreworICAgIGNvbnN0 IGludCBpbmMgPSBnZXRfaW5jKGxjLCBjdV9za2lwX2ZsYWcpOworICAgIHJldHVybiBHRVRfQ0FC QUMoQ1VfU0tJUF9GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19wcmVkX21vZGVfaWJjX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGlzX2Nocm9tYSkKK3sKKyAgICBjb25z dCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1 ICAgICAgPSBsYy0+Y3U7CisgICAgdWludDhfdCBsZWZ0X21vZGUgPSBNT0RFX0lOVEVSLCB0b3Bf bW9kZSA9IE1PREVfSU5URVI7CisgICAgaW50IGluYzsKKworICAgIGdldF9sZWZ0X3RvcChsYywg JmxlZnRfbW9kZSwgJnRvcF9tb2RlLCBjdS0+eDAsIGN1LT55MCwgZmMtPnRhYi5jcG1baXNfY2hy b21hXSwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSk7CisgICAgaW5jID0gKGxlZnRfbW9kZSA9PSBN T0RFX0lCQykgKyAodG9wX21vZGUgPT0gTU9ERV9JQkMpOworICAgIHJldHVybiBHRVRfQ0FCQUMo UFJFRF9NT0RFX0lCQ19GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9taXBfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCB1aW50OF90ICppbnRyYV9taXBfZmxhZykKK3sK KyAgICBjb25zdCBpbnQgdyAgID0gbGMtPmN1LT5jYl93aWR0aDsKKyAgICBjb25zdCBpbnQgaCAg ID0gbGMtPmN1LT5jYl9oZWlnaHQ7CisgICAgY29uc3QgaW50IGluYyA9ICAodyA+IGggKiAyIHx8 IGggPiB3ICogMikgPyAzIDogZ2V0X2luYyhsYywgaW50cmFfbWlwX2ZsYWcpOworICAgIHJldHVy biBHRVRfQ0FCQUMoSU5UUkFfTUlQX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX2ludHJh X21pcF90cmFuc3Bvc2VkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbWlw X21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgdyAgICAgPSBsYy0+ Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0IGludCBoICAgICA9IGxjLT5jdS0+Y2JfaGVpZ2h0Owor ICAgIGNvbnN0IGludCBjX21heCA9ICh3ID09IDQgJiYgaCA9PSA0KSA/IDE1IDoKKyAgICAgICAg KCh3ID09IDQgfHwgaCA9PSA0KSB8fCAodyA9PSA4ICYmIGggPT0gOCkpID8gNzogNTsKKyAgICBy ZXR1cm4gdHJ1bmNhdGVkX2JpbmFyeV9kZWNvZGUobGMsIGNfbWF4KTsKK30KKworaW50IGZmX3Z2 Y19pbnRyYV9sdW1hX3JlZl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsK KyAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgIGlmICghR0VUX0NBQkFDKElO VFJBX0xVTUFfUkVGX0lEWCArIGkpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAg IHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9TVUJQ QVJUSVRJT05TX01PREVfRkxBRyk7Cit9CisKK2VudW0gSXNwVHlwZSBmZl92dmNfaXNwX3NwbGl0 X3R5cGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludHJhX3N1YnBhcnRpdGlvbnNf bW9kZV9mbGFnKQoreworICAgIGlmICghaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcpCisg ICAgICAgIHJldHVybiBJU1BfTk9fU1BMSVQ7CisgICAgcmV0dXJuIDEgKyBHRVRfQ0FCQUMoSU5U UkFfU1VCUEFSVElUSU9OU19TUExJVF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1h X21wbV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJ TlRSQV9MVU1BX01QTV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX25vdF9wbGFu YXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW50cmFfc3VicGFydGl0aW9u c19tb2RlX2ZsYWcpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9MVU1BX05PVF9QTEFO QVJfRkxBRyArICFpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7Cit9CisKK2ludCBmZl92 dmNfaW50cmFfbHVtYV9tcG1faWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7 CisgICAgZm9yIChpID0gMDsgaSA8IDQgJiYgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7 IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZm X3Z2Y19pbnRyYV9sdW1hX21wbV9yZW1haW5kZXIoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAg ICByZXR1cm4gdHJ1bmNhdGVkX2JpbmFyeV9kZWNvZGUobGMsIDYwKTsKK30KKworaW50IGZmX3Z2 Y19jY2xtX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRf Q0FCQUMoQ0NMTV9NT0RFX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2NjbG1fbW9kZV9pZHgoVlZD TG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpZiAoIUdFVF9DQUJBQyhDQ0xNX01PREVfSURYKSkK KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+ Y2MpICsgMTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9jaHJvbWFfcHJlZF9tb2RlKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoSU5UUkFfQ0hST01BX1BSRURfTU9E RSkpCisgICAgICAgIHJldHVybiA0OworICAgIHJldHVybiAoZ2V0X2NhYmFjX2J5cGFzcygmbGMt PmVwLT5jYykgPDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKworaW50 IGZmX3Z2Y19nZW5lcmFsX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBy ZXR1cm4gR0VUX0NBQkFDKEdFTkVSQUxfTUVSR0VfRkxBRyk7Cit9CisKK3N0YXRpYyBpbnQgZ2V0 X2ludGVyX2ZsYWdfaW5jKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3Qg aW50IHkwKQoreworICAgIHVpbnQ4X3QgbGVmdF9tZXJnZSA9IDAsICB0b3BfbWVyZ2UgPSAwOwor ICAgIHVpbnQ4X3QgbGVmdF9hZmZpbmUgPSAwLCB0b3BfYWZmaW5lID0gMDsKKyAgICBjb25zdCBW VkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVm dF9tZXJnZSwgJnRvcF9tZXJnZSwgeDAsIHkwLCBmYy0+dGFiLm1zZiwgZmMtPnRhYi5tc2YpOwor ICAgIGdldF9sZWZ0X3RvcChsYywgJmxlZnRfYWZmaW5lLCAmdG9wX2FmZmluZSwgeDAsIHkwLCBm Yy0+dGFiLmlhZiwgZmMtPnRhYi5pYWYpOworICAgIHJldHVybiAobGVmdF9tZXJnZSB8fCBsZWZ0 X2FmZmluZSkgKyAodG9wX21lcmdlICsgdG9wX2FmZmluZSk7Cit9CisKK2ludCBmZl92dmNfbWVy Z2Vfc3ViYmxvY2tfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IGludCBp bmMgPSBnZXRfaW50ZXJfZmxhZ19pbmMobGMsIGxjLT5jdS0+eDAsIGxjLT5jdS0+eTApOworICAg IHJldHVybiBHRVRfQ0FCQUMoTUVSR0VfU1VCQkxPQ0tfRkxBRyArIGluYyk7Cit9CisKK2ludCBm Zl92dmNfbWVyZ2Vfc3ViYmxvY2tfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBt YXhfbnVtX3N1YmJsb2NrX21lcmdlX2NhbmQpCit7CisgICAgaW50IGk7CisgICAgaWYgKCFHRVRf Q0FCQUMoTUVSR0VfU1VCQkxPQ0tfSURYKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yIChp ID0gMTsgaSA8IG1heF9udW1fc3ViYmxvY2tfbWVyZ2VfY2FuZCAtIDEgJiYgZ2V0X2NhYmFjX2J5 cGFzcygmbGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1 cm4gaTsKK30KKworaW50IGZmX3Z2Y19yZWd1bGFyX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYywgY29uc3QgaW50IGN1X3NraXBfZmxhZykKK3sKKyAgICBpbnQgaW5jID0gIWN1X3NraXBf ZmxhZzsKKyAgICByZXR1cm4gR0VUX0NBQkFDKFJFR1VMQVJfTUVSR0VfRkxBRyArIGluYyk7Cit9 CisKK2ludCBmZl92dmNfbW12ZF9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgcmV0dXJuIEdFVF9DQUJBQyhNTVZEX01FUkdFX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX21t dmRfY2FuZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJB QyhNTVZEX0NBTkRfRkxBRyk7Cit9CisKK3N0YXRpYyBpbnQgbW12ZF9kaXN0YW5jZV9pZHhfZGVj b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgaWYgKCFHRVRfQ0FC QUMoTU1WRF9ESVNUQU5DRV9JRFgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBmb3IgKGkgPSAx OyBpIDwgNyAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsrKQorICAgICAgICAv KiBub3RoaW5nICovOworICAgIHJldHVybiBpOworfQorCitzdGF0aWMgaW50IG1tdmRfZGlyZWN0 aW9uX2lkeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gKGdldF9j YWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpIDw8IDEpIHwgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVw LT5jYyk7Cit9CisKK3ZvaWQgZmZfdnZjX21tdmRfb2Zmc2V0X2NvZGluZyhWVkNMb2NhbENvbnRl eHQgKmxjLCBNdiAqbW12ZF9vZmZzZXQsIGNvbnN0IGludCBwaF9tbXZkX2Z1bGxwZWxfb25seV9m bGFnKQoreworICAgIGNvbnN0IGludCBzaGlmdCA9IHBoX21tdmRfZnVsbHBlbF9vbmx5X2ZsYWcg PyA0IDogMjsKKyAgICBjb25zdCBpbnQgbW12ZF9kaXN0YW5jZSA9IDEgPDwgKG1tdmRfZGlzdGFu Y2VfaWR4X2RlY29kZShsYykgKyBzaGlmdCk7CisgICAgY29uc3QgaW50IG1tdmRfZGlyZWN0aW9u X2lkeCA9IG1tdmRfZGlyZWN0aW9uX2lkeF9kZWNvZGUobGMpOworICAgIGNvbnN0IGludCBtbXZk X3NpZ25zW11bMl0gPSB7IHsxLCAwfSwgey0xLCAwfSwgezAsIDF9LCB7MCwgLTF9IH07CisgICAg bW12ZF9vZmZzZXQtPnggPSBtbXZkX2Rpc3RhbmNlICogbW12ZF9zaWduc1ttbXZkX2RpcmVjdGlv bl9pZHhdWzBdOworICAgIG1tdmRfb2Zmc2V0LT55ID0gbW12ZF9kaXN0YW5jZSAqIG1tdmRfc2ln bnNbbW12ZF9kaXJlY3Rpb25faWR4XVsxXTsKK30KKworc3RhdGljIFByZWRNb2RlIGdldF9sdW1h X3ByZWRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IFZWQ0ZyYW1lQ29u dGV4dCAqZmMgPSBsYy0+ZmM7CisgICAgY29uc3QgQ29kaW5nVW5pdCAqY3UgICAgICA9IGxjLT5j dTsKKyAgICBQcmVkTW9kZSBwcmVkX21vZGU7CisKKyAgICBpZiAoY3UtPnRyZWVfdHlwZSAhPSBE VUFMX1RSRUVfQ0hST01BKSB7CisgICAgICAgIHByZWRfbW9kZSA9IGN1LT5wcmVkX21vZGU7Cisg ICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgaW50IHhfY2IgICAgICAgICA9IGN1LT54MCA+PiBm Yy0+cHMuc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisgICAgICAgIGNvbnN0IGludCB5X2NiICAg ICAgICAgPSBjdS0+eTAgPj4gZmMtPnBzLnNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgICAg ICBjb25zdCBpbnQgbWluX2NiX3dpZHRoID0gZmMtPnBzLnBwcy0+bWluX2NiX3dpZHRoOworICAg ICAgICBwcmVkX21vZGUgPSBTQU1QTEVfQ1RCKGZjLT50YWIuY3BtWzBdLCB4X2NiLCB5X2NiKTsK KyAgICB9CisgICAgcmV0dXJuIHByZWRfbW9kZTsKK30KKworaW50IGZmX3Z2Y19tZXJnZV9pZHgo VlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyA9IGxjLT5mYy0+ cHMuc3BzOworICAgIGNvbnN0IGludCBpc19pYmMgPSBnZXRfbHVtYV9wcmVkX21vZGUobGMpID09 IE1PREVfSUJDOworICAgIGNvbnN0IGludCBjX21heCA9IChpc19pYmMgPyBzcHMtPm1heF9udW1f aWJjX21lcmdlX2NhbmQgOiBzcHMtPm1heF9udW1fbWVyZ2VfY2FuZCkgLSAxOworICAgIGludCBp OworCisgICAgaWYgKCFHRVRfQ0FCQUMoTUVSR0VfSURYKSkKKyAgICAgICAgcmV0dXJuIDA7CisK KyAgICBmb3IgKGkgPSAxOyBpIDwgY19tYXggJiYgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5j Yyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsKK30KKworaW50 IGZmX3Z2Y19tZXJnZV9ncG1fcGFydGl0aW9uX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQorewor ICAgIGludCBpID0gMDsKKworICAgIGZvciAoaW50IGogPSAwOyBqIDwgNjsgaisrKQorICAgICAg ICBpID0gKGkgPDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKworICAgIHJl dHVybiBpOworfQorCitpbnQgZmZfdnZjX21lcmdlX2dwbV9pZHgoVlZDTG9jYWxDb250ZXh0ICps YywgY29uc3QgaW50IGlkeCkKK3sKKyAgICBjb25zdCBpbnQgY19tYXggPSBsYy0+ZmMtPnBzLnNw cy0+bWF4X251bV9ncG1fbWVyZ2VfY2FuZCAtIGlkeCAtIDE7CisgICAgaW50IGk7CisKKyAgICBp ZiAoIUdFVF9DQUJBQyhNRVJHRV9JRFgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAo aSA9IDE7IGkgPCBjX21heCAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsrKQor ICAgICAgICAvKiBub3RoaW5nICovOworCisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNf Y2lpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhD SUlQX0ZMQUcpOworfQorCitQcmVkRmxhZyBmZl92dmNfcHJlZF9mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IGludCBpc19iKQoreworICAgIGNvbnN0IGludCB3ID0gbGMtPmN1LT5jYl93 aWR0aDsKKyAgICBjb25zdCBpbnQgaCA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGlmICghaXNf YikKKyAgICAgICAgcmV0dXJuICBQRl9MMDsKKyAgICBpZiAodyArIGggPiAxMikgeworICAgICAg ICBjb25zdCBpbnQgbG9nMiA9IGF2X2xvZzIodykgKyBhdl9sb2cyKGgpOworICAgICAgICBjb25z dCBpbnQgaW5jID0gNyAtICgoMSArIGxvZzIpPj4xKTsKKyAgICAgICAgaWYgKEdFVF9DQUJBQyhJ TlRFUl9QUkVEX0lEQyArIGluYykpCisgICAgICAgICAgICByZXR1cm4gUEZfQkk7CisgICAgfQor ICAgIHJldHVybiBQRl9MMCArIEdFVF9DQUJBQyhJTlRFUl9QUkVEX0lEQyArIDUpOworfQorCitp bnQgZmZfdnZjX2ludGVyX2FmZmluZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAg Y29uc3QgaW50IGluYyA9IGdldF9pbnRlcl9mbGFnX2luYyhsYywgbGMtPmN1LT54MCwgbGMtPmN1 LT55MCk7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRFUl9BRkZJTkVfRkxBRyArIGluYyk7Cit9 CisKK2ludCBmZl92dmNfY3VfYWZmaW5lX3R5cGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfQUZGSU5FX1RZUEVfRkxBRyk7Cit9CisKK2ludCBm Zl92dmNfc3ltX212ZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdF VF9DQUJBQyhTWU1fTVZEX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3JlZl9pZHhfbHgoVlZDTG9j YWxDb250ZXh0ICpsYywgY29uc3QgdWludDhfdCBuYl9yZWZzKQoreworICAgIGNvbnN0IGludCBj X21heCA9IG5iX3JlZnMgLSAxOworICAgIGNvbnN0IGludCBtYXhfY3R4ID0gRkZNSU4oY19tYXgs IDIpOworICAgIGludCBpID0gMDsKKworICAgIHdoaWxlIChpIDwgbWF4X2N0eCAmJiBHRVRfQ0FC QUMoUkVGX0lEWF9MWCArIGkpKQorICAgICAgICBpKys7CisgICAgaWYgKGkgPT0gMikgeworICAg ICAgICB3aGlsZSAoaSA8IGNfbWF4ICYmIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQor ICAgICAgICAgICAgaSsrOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19h YnNfbXZkX2dyZWF0ZXIwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g R0VUX0NBQkFDKEFCU19NVkRfR1JFQVRFUjBfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfYWJzX212 ZF9ncmVhdGVyMV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9D QUJBQyhBQlNfTVZEX0dSRUFURVIxX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2Fic19tdmRfbWlu dXMyKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGxpbWl0ZWRfa3RoX29yZGVy X2Vna19kZWNvZGUoJmxjLT5lcC0+Y2MsIDEsIDE1LCAxNyk7Cit9CisKK2ludCBmZl92dmNfbXZk X3NpZ25fZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBnZXRfY2FiYWNf YnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19tdnBfbHhfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoTVZQX0xYX0ZMQUcpOworfQor CitzdGF0aWMgaW50IGFtdnJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW50 ZXJfYWZmaW5lX2ZsYWcpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBTVZSX0ZMQUcgKyBpbnRl cl9hZmZpbmVfZmxhZyk7Cit9CisKK3N0YXRpYyBpbnQgYW12cl9wcmVjaXNpb25faWR4KFZWQ0xv Y2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpbmMsIGNvbnN0IGludCBjX21heCkKK3sKKyAgICBp bnQgaSA9IDA7CisgICAgaWYgKCFHRVRfQ0FCQUMoQU1WUl9QUkVDSVNJT05fSURYICsgaW5jKSkK KyAgICAgICAgcmV0dXJuIDA7CisgICAgaSsrOworICAgIGlmIChpIDwgY19tYXggJiYgR0VUX0NB QkFDKEFNVlJfUFJFQ0lTSU9OX0lEWCArIDEpKQorICAgICAgICBpKys7CisgICAgcmV0dXJuIGk7 Cit9CisKK2ludCBmZl92dmNfYW12cl9zaGlmdChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBp bnQgaW50ZXJfYWZmaW5lX2ZsYWcsCisgICAgY29uc3QgUHJlZE1vZGUgcHJlZF9tb2RlLCBjb25z dCBpbnQgaGFzX2FtdnJfZmxhZykKK3sKKyAgICBpbnQgYW12cl9zaGlmdCA9IDI7CisgICAgaWYg KGhhc19hbXZyX2ZsYWcpIHsKKyAgICAgICAgaWYgKGFtdnJfZmxhZyhsYywgaW50ZXJfYWZmaW5l X2ZsYWcpKSB7CisgICAgICAgICAgICBpbnQgaWR4OworICAgICAgICAgICAgaWYgKGludGVyX2Fm ZmluZV9mbGFnKSB7CisgICAgICAgICAgICAgICAgaWR4ID0gYW12cl9wcmVjaXNpb25faWR4KGxj LCAyLCAxKTsKKyAgICAgICAgICAgICAgICBhbXZyX3NoaWZ0ID0gaWR4ICogNDsKKyAgICAgICAg ICAgIH0gZWxzZSBpZiAocHJlZF9tb2RlID09IE1PREVfSUJDKSB7CisgICAgICAgICAgICAgICAg aWR4ID0gYW12cl9wcmVjaXNpb25faWR4KGxjLCAxLCAxKTsKKyAgICAgICAgICAgICAgICBhbXZy X3NoaWZ0ID0gNCArIGlkeCAqIDI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICAgIHN0YXRpYyBjb25zdCBpbnQgc2hpZnRzW10gPSB7MywgNCwgNn07CisgICAgICAgICAgICAg ICAgaWR4ID0gYW12cl9wcmVjaXNpb25faWR4KGxjLCAwLCAyKTsKKyAgICAgICAgICAgICAgICBh bXZyX3NoaWZ0ID0gc2hpZnRzW2lkeF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9 CisgICAgcmV0dXJuIGFtdnJfc2hpZnQ7Cit9CisKK2ludCBmZl92dmNfYmN3X2lkeChWVkNMb2Nh bENvbnRleHQgKmxjLCBjb25zdCBpbnQgbm9fYmFja3dhcmRfcHJlZF9mbGFnKQoreworICAgIGNv bnN0IGludCBjX21heCA9IG5vX2JhY2t3YXJkX3ByZWRfZmxhZyA/IDQgOiAyOworICAgIGludCBp ID0gMTsKKyAgICBpZiAoIUdFVF9DQUJBQyhCQ1dfSURYKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg ICAgd2hpbGUgKGkgPCBjX21heCAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAg ICAgICAgaSsrOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX3R1X2NiX2NvZGVkX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRVX0NCX0NP REVEX0ZMQUcgKyBsYy0+Y3UtPmJkcGNtX2ZsYWdbMV0pOworfQorCitpbnQgZmZfdnZjX3R1X2Ny X2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IHR1X2NiX2NvZGVkX2ZsYWcpCit7 CisgICAgcmV0dXJuIEdFVF9DQUJBQyhUVV9DUl9DT0RFRF9GTEFHICsgKGxjLT5jdS0+YmRwY21f ZmxhZ1sxXSA/IDIgOiB0dV9jYl9jb2RlZF9mbGFnKSk7Cit9CisKK2ludCBmZl92dmNfdHVfeV9j b2RlZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgQ29kaW5nVW5pdCAq Y3UgPSBsYy0+Y3U7CisgICAgaW50IGluYzsKKyAgICBpZiAoY3UtPmJkcGNtX2ZsYWdbMF0pCisg ICAgICAgIGluYyA9IDE7CisgICAgZWxzZSBpZiAoY3UtPmlzcF9zcGxpdF90eXBlID09IElTUF9O T19TUExJVCkKKyAgICAgICAgaW5jID0gMDsKKyAgICBlbHNlCisgICAgICAgIGluYyA9IDIgKyBs Yy0+cGFyc2UucHJldl90dV9jYmZfeTsKKyAgICBsYy0+cGFyc2UucHJldl90dV9jYmZfeSA9IEdF VF9DQUJBQyhUVV9ZX0NPREVEX0ZMQUcgKyBpbmMpOworICAgIHJldHVybiBsYy0+cGFyc2UucHJl dl90dV9jYmZfeTsKK30KKworaW50IGZmX3Z2Y19jdV9xcF9kZWx0YV9hYnMoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICBpbnQgdiwgaSwgazsKKyAgICBpZiAoIUdFVF9DQUJBQyhDVV9RUF9E RUxUQV9BQlMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIHByZWZpeFZhbAorICAgIGZv ciAodiA9IDE7IHYgPCA1ICYmIEdFVF9DQUJBQyhDVV9RUF9ERUxUQV9BQlMgKyAxKTsgdisrKQor ICAgICAgICAvKiBub3RoaW5nICovOworICAgIGlmICh2IDwgNSkKKyAgICAgICAgcmV0dXJuIHY7 CisKKyAgICAvLyA5LjMuMy41IGstdGggb3JkZXIgRXhwLUdvbG9tYiBiaW5hcml6YXRpb24gcHJv Y2VzcworICAgIC8vIHN1ZmZpeFZhbAorCisgICAgLy8gQ3VRcERlbHRhVmFsIHNoYWxsIGluIHRo ZSByYW5nZSBvZiDiiJIoIDMyICsgUXBCZE9mZnNldCAvIDIgKSB0byArKCAzMSArIFFwQmRPZmZz ZXQgLyAyICkKKyAgICAvLyBzbyBrID0gNiBzaG91bGQgZW5vdWdoCisgICAgZm9yIChrID0gMDsg ayA8IDYgJiYgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGsrKykKKyAgICAgICAgLyog bm90aGluZyAqLzsKKyAgICBpID0gKDEgPDwgaykgLSAxOworICAgIHYgPSAwOworICAgIHdoaWxl IChrLS0pCisgICAgICAgIHYgPSAodiA8PCAxKSArIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+ Y2MpOworICAgIHYgKz0gaTsKKworICAgIHJldHVybiB2ICsgNTsKK30KKworaW50IGZmX3Z2Y19j dV9xcF9kZWx0YV9zaWduX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfY3VfY2hyb21h X3FwX29mZnNldF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9D QUJBQyhDVV9DSFJPTUFfUVBfT0ZGU0VUX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2N1X2Nocm9t YV9xcF9vZmZzZXRfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IGNf bWF4ID0gbGMtPmZjLT5wcy5wcHMtPnItPnBwc19jaHJvbWFfcXBfb2Zmc2V0X2xpc3RfbGVuX21p bnVzMTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY19tYXggJiYgR0VUX0NBQkFD KENVX0NIUk9NQV9RUF9PRkZTRVRfSURYKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5nICovOwor ICAgIHJldHVybiBpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWdu aWZpY2FudF9jb2VmZl94eV9wcmVmaXgoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBp bnQgbG9nMl90Yl9zaXplLCBjb25zdCBpbnQgbG9nMl96b190Yl9zaXplLCBjb25zdCBpbnQgY19p ZHgsIGNvbnN0IGludCBjdHgpCit7CisgICAgaW50IGkgPSAwOworICAgIGludCBtYXggPSAobG9n Ml96b190Yl9zaXplIDw8IDEpIC0gMTsKKyAgICBpbnQgY3R4X29mZnNldCwgY3R4X3NoaWZ0Owor ICAgIGlmICghbG9nMl90Yl9zaXplKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWNfaWR4 KSB7CisgICAgICAgIGNvbnN0IGludCBvZmZzZXRfeVtdID0gezAsIDAsIDMsIDYsIDEwLCAxNX07 CisgICAgICAgIGN0eF9vZmZzZXQgPSBvZmZzZXRfeVtsb2cyX3RiX3NpemUgLSAxXTsKKyAgICAg ICAgY3R4X3NoaWZ0ICA9IChsb2cyX3RiX3NpemUgKyAxKSA+PiAyOworICAgIH0gZWxzZSB7Cisg ICAgICAgIGNvbnN0IGludCBzaGlmdHNbXSA9IHswLCAwLCAwLCAxLCAyLCAyLCAyfTsKKyAgICAg ICAgY3R4X29mZnNldCA9IDIwOworICAgICAgICBjdHhfc2hpZnQgID0gc2hpZnRzW2xvZzJfdGJf c2l6ZV07CisgICAgfQorICAgIHdoaWxlIChpIDwgbWF4ICYmIEdFVF9DQUJBQyhjdHggKyAoaSA+ PiBjdHhfc2hpZnQpICsgY3R4X29mZnNldCkpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsK K30KKworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eF9wcmVmaXhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJf dGJfd2lkdGgsIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBjb25zdCBpbnQgY19pZHgpCit7 CisgICAgcmV0dXJuIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeHlfcHJlZml4KGxjLCBsb2cyX3Ri X3dpZHRoLCBsb2cyX3pvX3RiX3dpZHRoLCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVgp OworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2Vm Zl95X3ByZWZpeF9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgbG9n Ml90Yl9oZWlnaHQsIGNvbnN0IGludCBsb2cyX3pvX3RiX2hlaWdodCwgY29uc3QgaW50IGNfaWR4 KQoreworICAgIHJldHVybiBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3h5X3ByZWZpeChsYywgbG9n Ml90Yl9oZWlnaHQsIGxvZzJfem9fdGJfaGVpZ2h0LCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWV9Q UkVGSVgpOworfQorCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWdfY29lZmZf c3VmZml4X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBsYXN0X3Np Z25pZmljYW50X2NvZWZmX3lfcHJlZml4KQoreworICAgIGNvbnN0IGludCBsZW5ndGggPSAobGFz dF9zaWduaWZpY2FudF9jb2VmZl95X3ByZWZpeCA+PiAxKSAtIDE7CisgICAgaW50IHZhbHVlID0g Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisKKyAgICBmb3IgKGludCBpID0gMTsgaSA8 IGxlbmd0aDsgaSsrKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCAxKSB8IGdldF9jYWJhY19i eXBhc3MoJmxjLT5lcC0+Y2MpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworaW50IGZmX3Z2Y190 dV9qb2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50 IHR1X2NiX2NvZGVkX2ZsYWcsIGNvbnN0IGludCB0dV9jcl9jb2RlZF9mbGFnKQoreworICAgIHJl dHVybiBHRVRfQ0FCQUMoVFVfSk9JTlRfQ0JDUl9SRVNJRFVBTF9GTEFHICsgMiAqIHR1X2NiX2Nv ZGVkX2ZsYWcgKyB0dV9jcl9jb2RlZF9mbGFnIC0gMSk7Cit9CisKK2ludCBmZl92dmNfdHJhbnNm b3JtX3NraXBfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW5jKQoreworICAg IHJldHVybiBHRVRfQ0FCQUMoVFJBTlNGT1JNX1NLSVBfRkxBRyArIGluYyk7Cit9CisKKy8vOS4z LjQuMi43IERlcml2YXRpb24gcHJvY2VzcyBmb3IgdGhlIHZhcmlhYmxlcyBsb2NOdW1TaWcsIGxv Y1N1bUFic1Bhc3MxCitzdGF0aWMgaW50IGdldF9sb2NhbF9zdW0oY29uc3QgaW50ICpsZXZlbCwg Y29uc3QgaW50IHcsIGNvbnN0IGludCBoLAorICAgIGNvbnN0IGludCB4YywgY29uc3QgaW50IHlj LCBjb25zdCBpbnQgaGlzdF92YWx1ZSkKK3sKKyAgICBpbnQgbG9jX3N1bSA9IDMgKiBoaXN0X3Zh bHVlOworICAgIGxldmVsICs9IHcgKiB5YyArIHhjOworICAgIGlmICh4YyA8IHcgLSAxKSB7Cisg ICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbMV07CisgICAgICAgIGlmICh4YyA8IHcgLSAyKQorICAg ICAgICAgICAgbG9jX3N1bSArPSBsZXZlbFsyXSAtIGhpc3RfdmFsdWU7CisgICAgICAgIGlmICh5 YyA8IGggLSAxKQorICAgICAgICAgICAgbG9jX3N1bSArPSBsZXZlbFt3ICsgMV0gLSBoaXN0X3Zh bHVlOworICAgIH0KKyAgICBpZiAoeWMgPCBoIC0gMSkgeworICAgICAgICBsb2Nfc3VtICs9IGxl dmVsW3ddOworICAgICAgICBpZiAoeWMgPCBoIC0gMikKKyAgICAgICAgICAgIGxvY19zdW0gKz0g bGV2ZWxbdyA8PCAxXSAtIGhpc3RfdmFsdWU7CisgICAgfQorICAgIHJldHVybiBsb2Nfc3VtOwor fQorCisvLzkuMy40LjIuNyBEZXJpdmF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2YXJpYWJsZXMgbG9j TnVtU2lnLCBsb2NTdW1BYnNQYXNzMQorc3RhdGljIGludCBnZXRfbG9jYWxfc3VtX3RzKGNvbnN0 IGludCAqbGV2ZWwsIGNvbnN0IGludCB3LCBjb25zdCBpbnQgaCwgY29uc3QgaW50IHhjLCBjb25z dCBpbnQgeWMpCit7CisgICAgaW50IGxvY19zdW0gPSAwOworICAgIGxldmVsICs9IHcgKiB5YyAr IHhjOworICAgIGlmICh4YyA+IDApCisgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbLTFdOworICAg IGlmICh5YyA+IDApCisgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbLXddOworICAgIHJldHVybiBs b2Nfc3VtOworfQorCitzdGF0aWMgaW50IGdldF9ndHhfZmxhZ19pbmMoY29uc3QgUmVzaWR1YWxD b2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YywgY29uc3QgaW50IGxhc3QpCit7 CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sgKnRiID0gcmMtPnRiOworICAgIGludCBpbmM7Cisg ICAgaWYgKGxhc3QpIHsKKyAgICAgICAgY29uc3QgaW50IGluY3NbXSA9IHswLCAyMSwgMjF9Owor ICAgICAgICBpbmMgPSAgaW5jc1t0Yi0+Y19pZHhdOworICAgIH0gZWxzZSB7CisgICAgICAgIGNv bnN0IGludCBkID0geGMgKyB5YzsKKyAgICAgICAgY29uc3QgaW50IGxvY2FsX3N1bV9zaWcgPSBn ZXRfbG9jYWxfc3VtKHJjLT5zaWdfY29lZmZfZmxhZywKKyAgICAgICAgICAgICAgICB0Yi0+dGJf d2lkdGgsdGItPnRiX2hlaWdodCwgeGMsIHljLCByYy0+aGlzdF92YWx1ZSk7CisgICAgICAgIGNv bnN0IGludCBsb2Nfc3VtX2Fic19wYXNzMSA9IGdldF9sb2NhbF9zdW0ocmMtPmFic19sZXZlbF9w YXNzMSwKKyAgICAgICAgICAgICAgICB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5 YywgcmMtPmhpc3RfdmFsdWUpOworICAgICAgICBjb25zdCBpbnQgb2Zmc2V0ID0gRkZNSU4obG9j X3N1bV9hYnNfcGFzczEgLSBsb2NhbF9zdW1fc2lnLCA0KTsKKworICAgICAgICBpZiAoIXRiLT5j X2lkeCkKKyAgICAgICAgICAgIGluYyA9ICAxICsgb2Zmc2V0ICsgKCFkID8gMTUgOiAoZCA8IDMg PyAxMCA6IChkIDwgMTAgPyA1IDogMCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5j ID0gMjIgKyBvZmZzZXQgKyAoIWQgPyA1IDogMCk7CisgICAgfQorICAgIHJldHVybiBpbmM7Cit9 CisKK3N0YXRpYyBpbnQgYWJzX2xldmVsX2d0eF9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQg KmxjLCBjb25zdCBpbnQgaW5jKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQUJTX0xFVkVMX0dU WF9GTEFHICsgaW5jKTsKK30KKworc3RhdGljIGludCBwYXJfbGV2ZWxfZmxhZ19kZWNvZGUoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFD KFBBUl9MRVZFTF9GTEFHICsgaW5jKTsKK30KKworc3RhdGljIGludCBwYXJfbGV2ZWxfZmxhZ190 c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gMzI7 CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQQVJfTEVWRUxfRkxBRyArIGluYyk7Cit9CisKK3N0YXRp YyBpbnQgc2JfY29kZWRfZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgdWlu dDhfdCAqc2JfY29kZWRfZmxhZywKKyAgICBjb25zdCBSZXNpZHVhbENvZGluZyAqcmMsIGNvbnN0 IGludCB4cywgY29uc3QgaW50IHlzKQoreworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAq cnNoID0gbGMtPnNjLT5zaC5yOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiAgICAgID0g cmMtPnRiOworICAgIGNvbnN0IGludCB3ICAgICAgICAgICAgICAgICAgID0gcmMtPndpZHRoX2lu X3NiczsKKyAgICBjb25zdCBpbnQgaCAgICAgICAgICAgICAgICAgICA9IHJjLT5oZWlnaHRfaW5f c2JzOworICAgIGludCBpbmM7CisKKyAgICBpZiAodGItPnRzICYmICFyc2gtPnNoX3RzX3Jlc2lk dWFsX2NvZGluZ19kaXNhYmxlZF9mbGFnKSB7CisgICAgICAgIGNvbnN0IGludCBsZWZ0ICA9IHhz ID4gMCA/IHNiX2NvZGVkX2ZsYWdbLTFdIDogMDsKKyAgICAgICAgY29uc3QgaW50IGFib3ZlID0g eXMgPiAwID8gc2JfY29kZWRfZmxhZ1std10gOiAwOworICAgICAgICBpbmMgPSBsZWZ0ICsgYWJv dmUgKyA0OworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IGludCByaWdodCAgPSAoeHMgPCB3 IC0gMSkgPyBzYl9jb2RlZF9mbGFnWzFdIDogMDsKKyAgICAgICAgY29uc3QgaW50IGJvdHRvbSA9 ICh5cyA8IGggLSAxKSA/IHNiX2NvZGVkX2ZsYWdbd10gOiAwOworICAgICAgICBpbmMgPSAocmln aHQgfCBib3R0b20pICsgKHRiLT5jX2lkeCA/IDIgOiAwKTsKKyAgICB9CisgICAgcmV0dXJuIEdF VF9DQUJBQyhTQl9DT0RFRF9GTEFHICsgaW5jKTsKK30KKworc3RhdGljIGludCBzaWdfY29lZmZf ZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgUmVzaWR1YWxDb2RpbmcqIHJj LCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VI ZWFkZXIgKnJzaCA9IGxjLT5zYy0+c2gucjsKKyAgICBjb25zdCBUcmFuc2Zvcm1CbG9jayAqdGIg ICAgICA9IHJjLT50YjsKKyAgICBpbnQgaW5jOworCisgICAgaWYgKHRiLT50cyAmJiAhcnNoLT5z aF90c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxhZykgeworICAgICAgICBjb25zdCBpbnQg bG9jYWxfbnVtX3NpZyA9IGdldF9sb2NhbF9zdW1fdHMocmMtPnNpZ19jb2VmZl9mbGFnLCB0Yi0+ dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5Yyk7CisgICAgICAgIGluYyA9IDYwICsgbG9j YWxfbnVtX3NpZzsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgZCA9IHhjICsgeWM7 CisgICAgICAgIGNvbnN0IGludCBsb2Nfc3VtX2Fic19wYXNzMSA9IGdldF9sb2NhbF9zdW0ocmMt PmFic19sZXZlbF9wYXNzMSwKKyAgICAgICAgICAgICAgICB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9o ZWlnaHQsIHhjLCB5YywgMCk7CisKKyAgICAgICAgaWYgKCF0Yi0+Y19pZHgpIHsKKyAgICAgICAg ICAgIGluYyA9IDEyICogRkZNQVgoMCwgcmMtPnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1f YWJzX3Bhc3MxICsgMSkgPj4gMSwgMykgKyAoKGQgPCAyKSA/IDggOiAoZCA8IDUgPyA0IDogMCkp OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5jID0gMzYgKyA4ICogRkZNQVgoMCwg cmMtPnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1fYWJzX3Bhc3MxICsgMSkgPj4gMSwgMykg KyAoZCA8IDIgPyA0IDogMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEdFVF9DQUJB QyhTSUdfQ09FRkZfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX2dldF9yaWNlX3Bh cmFtKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IFJlc2lkdWFsQ29kaW5nKiByYywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljLCBjb25z dCBpbnQgYmFzZV9sZXZlbCkKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyA9IGxjLT5mYy0+cHMu c3BzOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrKiB0YiA9IHJjLT50YjsKKyAgICBjb25zdCBp bnQgcmljZV9wYXJhbXNbXSA9IHsKKyAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwg MSwgMSwgMSwgMSwgMSwgMiwgMiwKKyAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg MiwgMiwgMiwgMywgMywgMywgMywKKyAgICB9OworICAgIGludCBsb2Nfc3VtX2FiczsKKyAgICBp bnQgc2hpZnRfdmFsOworCisgICAgbG9jX3N1bV9hYnMgPSBnZXRfbG9jYWxfc3VtKHJjLT5hYnNf bGV2ZWwsIHRiLT50Yl93aWR0aCwgdGItPnRiX2hlaWdodCwgeGMsCisgICAgICAgICAgICB5Yywg cmMtPmhpc3RfdmFsdWUpOworCisgICAgaWYgKCFzcHMtPnItPnNwc19ycmNfcmljZV9leHRlbnNp b25fZmxhZykgeworICAgICAgICBzaGlmdF92YWwgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAg IHNoaWZ0X3ZhbCA9IChhdl9sb2cyKEZGTUFYKEZGTUlOKGxvY19zdW1fYWJzLCAyMDQ4KSwgOCkp IC0gMykgJiB+MTsKKyAgICB9CisKKyAgICBsb2Nfc3VtX2FicyA9IGF2X2NsaXBfdWludHAyKChs b2Nfc3VtX2FicyA+PiBzaGlmdF92YWwpIC0gYmFzZV9sZXZlbCAqIDUsIDUpOworCisgICAgcmV0 dXJuIHJpY2VfcGFyYW1zW2xvY19zdW1fYWJzXSArIHNoaWZ0X3ZhbDsKK30KKworc3RhdGljIGlu dCBhYnNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBjX3JpY2VfcGFyYW0p Cit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgPSBsYy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBp bnQgTUFYX0JJTiA9IDY7CisgICAgaW50IHByZWZpeCA9IDA7CisgICAgaW50IHN1ZmZpeCA9IDA7 CisKKyAgICB3aGlsZSAocHJlZml4IDwgTUFYX0JJTiAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ ZXAtPmNjKSkKKyAgICAgICAgcHJlZml4Kys7CisgICAgaWYgKHByZWZpeCA8IE1BWF9CSU4pIHsK KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjX3JpY2VfcGFyYW07IGkrKykgeworICAgICAg ICAgICAgc3VmZml4ID0gKHN1ZmZpeCA8PCAxKSB8IGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+ Y2MpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3VmZml4ID0gbGltaXRlZF9r dGhfb3JkZXJfZWdrX2RlY29kZSgmbGMtPmVwLT5jYywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjX3JpY2VfcGFyYW0gKyAxLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2IC0gc3BzLT5sb2cyX3RyYW5zZm9ybV9y YW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHMt PmxvZzJfdHJhbnNmb3JtX3JhbmdlKTsKKyAgICB9CisgICAgcmV0dXJuIHN1ZmZpeCArIChwcmVm aXggPDwgY19yaWNlX3BhcmFtKTsKK30KKworc3RhdGljIGludCBhYnNfcmVtYWluZGVyX2RlY29k ZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGlu dCB4YywgY29uc3QgaW50IHljKQoreworICAgIGNvbnN0IFZWQ1NQUyAqc3BzICAgICAgICAgICAg ID0gbGMtPmZjLT5wcy5zcHM7CisgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVhZGVyICpyc2ggPSBs Yy0+c2MtPnNoLnI7CisgICAgY29uc3QgaW50IGJhc2VfbGV2ZWxbXVsyXVsyXSAgPSB7CisgICAg ICAgIHsgezQsIDR9LCB7NCwgNH0gfSwKKyAgICAgICAgeyB7MywgMn0sIHsyLCAxfSB9CisgICAg fTsKKyAgICBjb25zdCBpbnQgY19yaWNlX3BhcmFtID0gYWJzX2dldF9yaWNlX3BhcmFtKGxjLCBy YywgeGMsIHljLAorICAgICAgICBiYXNlX2xldmVsW3Nwcy0+ci0+c3BzX3JyY19yaWNlX2V4dGVu c2lvbl9mbGFnXVtzcHMtPmJpdF9kZXB0aCA+IDEyXVtJU19JKHJzaCldKTsKKyAgICBjb25zdCBp bnQgcmVtID0gYWJzX2RlY29kZShsYywgY19yaWNlX3BhcmFtKTsKKworICAgIHJldHVybiByZW07 Cit9CisKK3N0YXRpYyBpbnQgYWJzX3JlbWFpbmRlcl90c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0 ICpsYywgY29uc3QgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5 YykKK3sKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VIZWFkZXIgKnJzaCA9IGxjLT5zYy0+c2gucjsK KyAgICBjb25zdCBpbnQgY19yaWNlX3BhcmFtID0gcnNoLT5zaF90c19yZXNpZHVhbF9jb2Rpbmdf cmljZV9pZHhfbWludXMxICsgMTsKKyAgICBjb25zdCBpbnQgcmVtID0gYWJzX2RlY29kZShsYywg Y19yaWNlX3BhcmFtKTsKKworICAgIHJldHVybiByZW07Cit9CisKK3N0YXRpYyBpbnQgY29lZmZf c2lnbl9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBnZXRf Y2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKworLy85LjMuNC4yLjEwIERlcml2YXRpb24g cHJvY2VzcyBvZiBjdHhJbmMgZm9yIHRoZSBzeW50YXggZWxlbWVudCBjb2VmZl9zaWduX2ZsYWcg Zm9yIHRyYW5zZm9ybSBza2lwIG1vZGUKK3N0YXRpYyBpbnQgY29lZmZfc2lnbl9mbGFnX3RzX2Rl Y29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBDb2RpbmdVbml0ICpjdSwgY29uc3QgUmVz aWR1YWxDb2RpbmcgKnJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sKKyAgICBjb25z dCBUcmFuc2Zvcm1CbG9jayAqdGIgPSByYy0+dGI7CisgICAgY29uc3QgaW50IHcgICAgICAgICAg ICAgID0gdGItPnRiX3dpZHRoOworICAgIGNvbnN0IGludCAqbGV2ZWwgICAgICAgICA9IHJjLT5j b2VmZl9zaWduX2xldmVsICsgeWMgKiB3ICsgeGM7CisgICAgY29uc3QgaW50IGxlZnRfc2lnbiAg ICAgID0geGMgPyBsZXZlbFstMV0gOiAwOworICAgIGNvbnN0IGludCBhYm92ZV9zaWduICAgICA9 IHljID8gbGV2ZWxbLXddIDogMDsKKyAgICBjb25zdCBpbnQgYmRwY21fZmxhZyAgICAgPSBjdS0+ YmRwY21fZmxhZ1t0Yi0+Y19pZHhdOworICAgIGludCBpbmM7CisKKyAgICBpZiAobGVmdF9zaWdu ID09IC1hYm92ZV9zaWduKQorICAgICAgICBpbmMgPSBiZHBjbV9mbGFnID8gMyA6IDA7CisgICAg ZWxzZSBpZiAobGVmdF9zaWduID49IDAgJiYgYWJvdmVfc2lnbiA+PSAwKQorICAgICAgICBpbmMg PSBiZHBjbV9mbGFnID8gNCA6IDE7CisgICAgZWxzZQorICAgICAgICBpbmMgPSBiZHBjbV9mbGFn ID8gNSA6IDI7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDT0VGRl9TSUdOX0ZMQUcgKyBpbmMpOwor fQorCitzdGF0aWMgaW50IGFic19sZXZlbF9ndDFfZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250 ZXh0ICpsYywgY29uc3QgQ29kaW5nVW5pdCAqY3UsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywg Y29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sg KnRiID0gcmMtPnRiOworICAgIGNvbnN0IGludCAqc2lnX2NvZWZmX2ZsYWcgPSByYy0+c2lnX2Nv ZWZmX2ZsYWcgKyB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgIGludCBpbmM7CisKKyAgICBp ZiAoY3UtPmJkcGNtX2ZsYWdbdGItPmNfaWR4XSkgeworICAgICAgICBpbmMgPSA2NzsKKyAgICB9 IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgbCA9IHhjID4gMCA/IHNpZ19jb2VmZl9mbGFnWy0x XSA6IDA7CisgICAgICAgIGNvbnN0IGludCBhID0geWMgPiAwID8gc2lnX2NvZWZmX2ZsYWdbLXRi LT50Yl93aWR0aF0gOiAwOworICAgICAgICBpbmMgPSA2NCArIGEgKyBsOworICAgIH0KKyAgICBy ZXR1cm4gR0VUX0NBQkFDKEFCU19MRVZFTF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBp bnQgYWJzX2xldmVsX2d0eF9mbGFnX3RzX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25z dCBpbnQgaikKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gNjcgKyBqOworICAgIHJldHVybiBHRVRf Q0FCQUMoQUJTX0xFVkVMX0dUWF9GTEFHICsgaW5jKTsKK30KKworc3RhdGljIGNvbnN0IHVpbnQ4 X3QgcXN0YXRlX3RyYW5zbGF0ZV90YWJsZVtdWzJdID0geworICAgIHsgMCwgMiB9LCB7IDIsIDAg fSwgeyAxLCAzIH0sIHsgMywgMSB9Cit9OworCitzdGF0aWMgaW50IGRlY19hYnNfbGV2ZWxfZGVj b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywKKyAgICBj b25zdCBpbnQgeGMsIGNvbnN0IGludCB5YywgaW50ICphYnNfbGV2ZWwpCit7CisgICAgY29uc3Qg aW50IGNfcmljZV9wYXJhbSAgPSBhYnNfZ2V0X3JpY2VfcGFyYW0obGMsIHJjLCB4YywgeWMsIDAp OworICAgIGNvbnN0IGludCBkZWNfYWJzX2xldmVsID0gIGFic19kZWNvZGUobGMsIGNfcmljZV9w YXJhbSk7CisgICAgY29uc3QgaW50IHplcm9fcG9zICAgICAgPSAocmMtPnFzdGF0ZSA8IDIgPyAx IDogMikgPDwgY19yaWNlX3BhcmFtOworCisgICAgKmFic19sZXZlbCA9IDA7CisgICAgaWYgKGRl Y19hYnNfbGV2ZWwgIT0gemVyb19wb3MpIHsKKyAgICAgICAgKmFic19sZXZlbCA9IGRlY19hYnNf bGV2ZWw7CisgICAgICAgIGlmIChkZWNfYWJzX2xldmVsIDwgemVyb19wb3MpCisgICAgICAgICAg ICAqYWJzX2xldmVsICs9IDE7CisgICAgfQorICAgIHJldHVybiBkZWNfYWJzX2xldmVsOworfQor CitzdGF0aWMgdm9pZCBlcF91cGRhdGVfaGlzdChFbnRyeVBvaW50ICplcCwgUmVzaWR1YWxDb2Rp bmcgKnJjLAorICAgIGNvbnN0IGludCByZW1haW5kZXIsIGNvbnN0IGludCBhZGRpbikKK3sKKyAg ICBpbnQgKnN0YXQgPSBlcC0+c3RhdF9jb2VmZiArIHJjLT50Yi0+Y19pZHg7CisgICAgaWYgKHJj LT51cGRhdGVfaGlzdCAmJiByZW1haW5kZXIgPiAwKSB7CisgICAgICAgICpzdGF0ID0gKCpzdGF0 ICsgYXZfbG9nMihyZW1haW5kZXIpICsgYWRkaW4pID4+IDE7CisgICAgICAgIHJjLT51cGRhdGVf aGlzdCA9IDA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBpbml0X3Jlc2lkdWFsX2NvZGluZyhj b25zdCBWVkNMb2NhbENvbnRleHQgKmxjLCBSZXNpZHVhbENvZGluZyAqcmMsCisgICAgY29uc3Qg aW50IGxvZzJfem9fdGJfd2lkdGgsIGNvbnN0IGludCBsb2cyX3pvX3RiX2hlaWdodCwKKyAgICBU cmFuc2Zvcm1CbG9jayAqdGIpCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgPSBsYy0+ZmMtPnBz LnNwczsKKyAgICBpbnQgbG9nMl9zYl93ICAgICA9IChGRk1JTihsb2cyX3pvX3RiX3dpZHRoLCBs b2cyX3pvX3RiX2hlaWdodCApIDwgMiA/IDEgOiAyICk7CisgICAgaW50IGxvZzJfc2JfaCAgICAg PSBsb2cyX3NiX3c7CisKKyAgICBpZiAoIGxvZzJfem9fdGJfd2lkdGggKyBsb2cyX3pvX3RiX2hl aWdodCA+IDMgKSB7CisgICAgICAgIGlmICggbG9nMl96b190Yl93aWR0aCA8IDIgKSB7CisgICAg ICAgICAgICBsb2cyX3NiX3cgPSBsb2cyX3pvX3RiX3dpZHRoOworICAgICAgICAgICAgbG9nMl9z Yl9oID0gNCAtIGxvZzJfc2JfdzsKKyAgICAgICAgfSBlbHNlIGlmICggbG9nMl96b190Yl9oZWln aHQgPCAyICkgeworICAgICAgICAgICAgbG9nMl9zYl9oID0gbG9nMl96b190Yl9oZWlnaHQ7Cisg ICAgICAgICAgICBsb2cyX3NiX3cgPSA0IC0gbG9nMl9zYl9oOworICAgICAgICB9CisgICAgfQor ICAgIHJjLT5sb2cyX3NiX3cgPSBsb2cyX3NiX3c7CisgICAgcmMtPmxvZzJfc2JfaCA9IGxvZzJf c2JfaDsKKyAgICByYy0+bnVtX3NiX2NvZWZmICAgPSAxIDw8IChsb2cyX3NiX3cgKyBsb2cyX3Ni X2gpOworICAgIHJjLT5sYXN0X3N1Yl9ibG9jayA9ICggMSA8PCAoIGxvZzJfem9fdGJfd2lkdGgg KyBsb2cyX3pvX3RiX2hlaWdodCAtIChsb2cyX3NiX3cgKyBsb2cyX3NiX2gpKSkgLSAxOworICAg IHJjLT5oaXN0X3ZhbHVlICAgICA9IHNwcy0+ci0+c3BzX3BlcnNpc3RlbnRfcmljZV9hZGFwdGF0 aW9uX2VuYWJsZWRfZmxhZyA/ICgxIDw8IGxjLT5lcC0+c3RhdF9jb2VmZlt0Yi0+Y19pZHhdKSA6 IDA7CisgICAgcmMtPnVwZGF0ZV9oaXN0ICAgID0gc3BzLT5yLT5zcHNfcGVyc2lzdGVudF9yaWNl X2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnID8gMSA6IDA7CisgICAgcmMtPnJlbV9iaW5zX3Bhc3Mx ID0gKCggMSA8PCAoIGxvZzJfem9fdGJfd2lkdGggKyBsb2cyX3pvX3RiX2hlaWdodCkpICogNyAp ID4+IDI7CisKKworICAgIHJjLT5zYl9zY2FuX3hfb2ZmID0gZmZfdnZjX2RpYWdfc2Nhbl94W2xv ZzJfem9fdGJfd2lkdGggLSBsb2cyX3NiX3ddW2xvZzJfem9fdGJfaGVpZ2h0IC0gbG9nMl9zYl9o XTsKKyAgICByYy0+c2Jfc2Nhbl95X29mZiA9IGZmX3Z2Y19kaWFnX3NjYW5feVtsb2cyX3pvX3Ri X3dpZHRoIC0gbG9nMl9zYl93XVtsb2cyX3pvX3RiX2hlaWdodCAtIGxvZzJfc2JfaF07CisKKyAg ICByYy0+c2Nhbl94X29mZiA9IGZmX3Z2Y19kaWFnX3NjYW5feFtsb2cyX3NiX3ddW2xvZzJfc2Jf aF07CisgICAgcmMtPnNjYW5feV9vZmYgPSBmZl92dmNfZGlhZ19zY2FuX3lbbG9nMl9zYl93XVts b2cyX3NiX2hdOworCisgICAgcmMtPmluZmVyX3NiX2NiZiA9IDE7CisKKyAgICByYy0+d2lkdGhf aW5fc2JzICA9ICgxIDw8IChsb2cyX3pvX3RiX3dpZHRoIC0gbG9nMl9zYl93KSk7CisgICAgcmMt PmhlaWdodF9pbl9zYnMgPSAoMSA8PCAobG9nMl96b190Yl9oZWlnaHQgLSBsb2cyX3NiX2gpKTsK KyAgICByYy0+bmJfc2JzICAgICAgICA9IHJjLT53aWR0aF9pbl9zYnMgKiByYy0+aGVpZ2h0X2lu X3NiczsKKworICAgIHJjLT5sYXN0X3NjYW5fcG9zID0gcmMtPm51bV9zYl9jb2VmZjsKKyAgICBy Yy0+cXN0YXRlICAgICAgICA9IDA7CisKKyAgICByYy0+dGIgPSB0YjsKK30KKworc3RhdGljIGlu dCByZXNpZHVhbF90c19jb2Rpbmdfc3ViYmxvY2soVlZDTG9jYWxDb250ZXh0ICpsYywgUmVzaWR1 YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgaSkKK3sKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSAg ID0gbGMtPmN1OworICAgIFRyYW5zZm9ybUJsb2NrICp0YiAgICAgPSByYy0+dGI7CisgICAgY29u c3QgaW50IGJkcGNtX2ZsYWcgICA9IGN1LT5iZHBjbV9mbGFnW3RiLT5jX2lkeF07CisgICAgY29u c3QgaW50IHhzICAgICAgICAgICA9IHJjLT5zYl9zY2FuX3hfb2ZmW2ldOworICAgIGNvbnN0IGlu dCB5cyAgICAgICAgICAgPSByYy0+c2Jfc2Nhbl95X29mZltpXTsKKyAgICB1aW50OF90ICpzYl9j b2RlZF9mbGFnID0gcmMtPnNiX2NvZGVkX2ZsYWcgKyB5cyAqIHJjLT53aWR0aF9pbl9zYnMgKyB4 czsKKyAgICBpbnQgaW5mZXJfc2Jfc2lnX2NvZWZmX2ZsYWcgPSAxOworICAgIGludCBsYXN0X3Nj YW5fcG9zX3Bhc3MxID0gLTEsIGxhc3Rfc2Nhbl9wb3NfcGFzczIgPSAtMSwgbjsKKyAgICBpbnQg YWJzX2xldmVsX2d0eF9mbGFnW01BWF9TVUJfQkxPQ0tfU0laRSAqIE1BWF9TVUJfQkxPQ0tfU0la RV07CisgICAgaW50IGFic19sZXZlbF9wYXNzMltNQVhfU1VCX0JMT0NLX1NJWkUgKiBNQVhfU1VC X0JMT0NLX1NJWkVdOyAgICAgICAvLy88IEFic0xldmVsUGFzczIKKworICAgIGlmIChpICE9IHJj LT5sYXN0X3N1Yl9ibG9jayB8fCAhcmMtPmluZmVyX3NiX2NiZikKKyAgICAgICAgKnNiX2NvZGVk X2ZsYWcgPSBzYl9jb2RlZF9mbGFnX2RlY29kZShsYywgc2JfY29kZWRfZmxhZywgcmMsIHhzLCB5 cyk7CisgICAgZWxzZQorICAgICAgICAqc2JfY29kZWRfZmxhZyA9IDE7CisgICAgaWYgKCpzYl9j b2RlZF9mbGFnICYmIGkgPCByYy0+bGFzdF9zdWJfYmxvY2spCisgICAgICAgIHJjLT5pbmZlcl9z Yl9jYmYgPSAwOworCisgICAgLy9maXJzdCBzY2FuIHBhc3MKKyAgICBmb3IgKG4gPSAwOyBuIDwg cmMtPm51bV9zYl9jb2VmZiAmJiByYy0+cmVtX2JpbnNfcGFzczEgPj0gNDsgbisrKSB7CisgICAg ICAgIGNvbnN0IGludCB4YyA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2Zm W25dOworICAgICAgICBjb25zdCBpbnQgeWMgPSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+ c2Nhbl95X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IG9mZiA9IHljICogdGItPnRiX3dpZHRo ICsgeGM7CisgICAgICAgIGludCAqc2lnX2NvZWZmX2ZsYWcgICA9IHJjLT5zaWdfY29lZmZfZmxh ZyArIG9mZjsKKyAgICAgICAgaW50ICphYnNfbGV2ZWxfcGFzczEgID0gcmMtPmFic19sZXZlbF9w YXNzMSArIG9mZjsKKyAgICAgICAgaW50ICpjb2VmZl9zaWduX2xldmVsID0gcmMtPmNvZWZmX3Np Z25fbGV2ZWwgKyBvZmY7CisgICAgICAgIGludCBwYXJfbGV2ZWxfZmxhZyAgICA9IDA7CisKKyAg ICAgICAgYWJzX2xldmVsX2d0eF9mbGFnW25dID0gMDsKKyAgICAgICAgbGFzdF9zY2FuX3Bvc19w YXNzMSA9IG47CisgICAgICAgIGlmICgqc2JfY29kZWRfZmxhZyAmJiAobiAhPSByYy0+bnVtX3Ni X2NvZWZmIC0gMSB8fCAhaW5mZXJfc2Jfc2lnX2NvZWZmX2ZsYWcpKSB7CisgICAgICAgICAgICAq c2lnX2NvZWZmX2ZsYWcgPSBzaWdfY29lZmZfZmxhZ19kZWNvZGUobGMsIHJjLCB4YywgeWMpOwor ICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxLS07CisgICAgICAgICAgICBpZiAoKnNpZ19j b2VmZl9mbGFnKQorICAgICAgICAgICAgICAgIGluZmVyX3NiX3NpZ19jb2VmZl9mbGFnID0gMDsK KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpzaWdfY29lZmZfZmxhZyA9IChuID09IHJj LT5udW1fc2JfY29lZmYgLSAxKSAmJiBpbmZlcl9zYl9zaWdfY29lZmZfZmxhZyAmJiAqc2JfY29k ZWRfZmxhZzsKKyAgICAgICAgfQorICAgICAgICAqY29lZmZfc2lnbl9sZXZlbCA9IDA7CisgICAg ICAgIGlmICgqc2lnX2NvZWZmX2ZsYWcpIHsKKyAgICAgICAgICAgICpjb2VmZl9zaWduX2xldmVs ID0gMSAtIDIgKiBjb2VmZl9zaWduX2ZsYWdfdHNfZGVjb2RlKGxjLCBjdSwgcmMsIHhjLCB5Yyk7 CisgICAgICAgICAgICBhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl0gPSBhYnNfbGV2ZWxfZ3QxX2ZsYWdf dHNfZGVjb2RlKGxjLCBjdSwgcmMsIHhjLCB5Yyk7CisgICAgICAgICAgICByYy0+cmVtX2JpbnNf cGFzczEgLT0gMjsKKyAgICAgICAgICAgIGlmIChhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl0pIHsKKyAg ICAgICAgICAgICAgICBwYXJfbGV2ZWxfZmxhZyA9IHBhcl9sZXZlbF9mbGFnX3RzX2RlY29kZShs Yyk7CisgICAgICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxLS07CisgICAgICAgICAgICB9 CisgICAgICAgIH0KKyAgICAgICAgKmFic19sZXZlbF9wYXNzMSA9ICpzaWdfY29lZmZfZmxhZyAr IHBhcl9sZXZlbF9mbGFnICsgYWJzX2xldmVsX2d0eF9mbGFnW25dOworICAgIH0KKworICAgIC8v Z3JlYXRlciB0aGFuIHggc2NhbiBwYXNzCisgICAgZm9yIChuID0gMDsgbiA8IHJjLT5udW1fc2Jf Y29lZmYgJiYgcmMtPnJlbV9iaW5zX3Bhc3MxID49IDQ7IG4rKykgeworICAgICAgICBjb25zdCBp bnQgeGMgID0gKHhzIDw8IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAg ICAgIGNvbnN0IGludCB5YyAgPSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29m ZltuXTsKKyAgICAgICAgY29uc3QgaW50IG9mZiA9IHljICogdGItPnRiX3dpZHRoICsgeGM7CisK KyAgICAgICAgYWJzX2xldmVsX3Bhc3MyW25dID0gcmMtPmFic19sZXZlbF9wYXNzMVtvZmZdOwor ICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8IDUgJiYgYWJzX2xldmVsX2d0eF9mbGFnW25dOyBq KyspIHsKKyAgICAgICAgICAgIGFic19sZXZlbF9ndHhfZmxhZ1tuXSA9IGFic19sZXZlbF9ndHhf ZmxhZ190c19kZWNvZGUobGMsIGopOworICAgICAgICAgICAgYWJzX2xldmVsX3Bhc3MyW25dICs9 IGFic19sZXZlbF9ndHhfZmxhZ1tuXSA8PCAxOworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bh c3MxLS07CisgICAgICAgIH0KKyAgICAgICAgbGFzdF9zY2FuX3Bvc19wYXNzMiA9IG47CisgICAg fQorCisgICAgLyogcmVtYWluZGVyIHNjYW4gcGFzcyAqLworICAgIGZvciAobiA9IDA7IG4gPCBy Yy0+bnVtX3NiX2NvZWZmOyBuKyspIHsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4cyA8PCBy Yy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgeWMg ID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNv bnN0IGludCBvZmYgPSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBjb25zdCBpbnQg KmFic19sZXZlbF9wYXNzMSA9IHJjLT5hYnNfbGV2ZWxfcGFzczEgKyBvZmY7CisgICAgICAgIGlu dCAqYWJzX2xldmVsICAgICAgICAgICAgID0gcmMtPmFic19sZXZlbCArIG9mZjsKKyAgICAgICAg aW50ICpjb2VmZl9zaWduX2xldmVsICAgICAgPSByYy0+Y29lZmZfc2lnbl9sZXZlbCArIG9mZjsK KyAgICAgICAgaW50IGFic19yZW1haW5kZXIgICAgICAgICAgPSAwOworCisgICAgICAgIGlmICgo biA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MyICYmIGFic19sZXZlbF9wYXNzMltuXSA+PSAxMCkgfHwK KyAgICAgICAgICAgIChuID4gbGFzdF9zY2FuX3Bvc19wYXNzMiAmJiBuIDw9IGxhc3Rfc2Nhbl9w b3NfcGFzczEgJiYKKyAgICAgICAgICAgICphYnNfbGV2ZWxfcGFzczEgPj0gMikgfHwKKyAgICAg ICAgICAgIChuID4gbGFzdF9zY2FuX3Bvc19wYXNzMSAmJiAgKnNiX2NvZGVkX2ZsYWcpKQorICAg ICAgICAgICAgYWJzX3JlbWFpbmRlciA9IGFic19yZW1haW5kZXJfdHNfZGVjb2RlKGxjLCByYywg eGMsIHljKTsKKyAgICAgICAgaWYgKG4gPD0gbGFzdF9zY2FuX3Bvc19wYXNzMikgeworICAgICAg ICAgICAgKmFic19sZXZlbCA9IGFic19sZXZlbF9wYXNzMltuXSArIDIgKiBhYnNfcmVtYWluZGVy OworICAgICAgICB9IGVsc2UgaWYgKG4gPD0gbGFzdF9zY2FuX3Bvc19wYXNzMSkgeworICAgICAg ICAgICAgKmFic19sZXZlbCA9ICphYnNfbGV2ZWxfcGFzczEgKyAyICogYWJzX3JlbWFpbmRlcjsK KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICphYnNfbGV2ZWwgPSBhYnNfcmVtYWluZGVy OworICAgICAgICAgICAgaWYgKGFic19yZW1haW5kZXIpIHsKKyAgICAgICAgICAgICAgICAvL24g PiBsYXN0U2NhblBvc1Bhc3MxCisgICAgICAgICAgICAgICAgKmNvZWZmX3NpZ25fbGV2ZWwgPSAx IC0gMiAqIGNvZWZmX3NpZ25fZmxhZ19kZWNvZGUobGMpOworICAgICAgICAgICAgfQorICAgICAg ICB9CisgICAgICAgIGlmICghYmRwY21fZmxhZyAmJiBuIDw9IGxhc3Rfc2Nhbl9wb3NfcGFzczEp IHsKKyAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0ICA9IHhjID4gMCA/IGFic19sZXZlbFstMV0g OiAwOworICAgICAgICAgICAgY29uc3QgaW50IGFib3ZlID0geWMgPiAwID8gYWJzX2xldmVsWy10 Yi0+dGJfd2lkdGhdIDogMDsKKyAgICAgICAgICAgIGNvbnN0IGludCBwcmVkICA9IEZGTUFYKGxl ZnQsIGFib3ZlKTsKKworICAgICAgICAgICAgaWYgKCphYnNfbGV2ZWwgPT0gMSAmJiBwcmVkID4g MCkKKyAgICAgICAgICAgICAgICAqYWJzX2xldmVsID0gcHJlZDsKKyAgICAgICAgICAgIGVsc2Ug aWYgKCphYnNfbGV2ZWwgPiAwICYmICphYnNfbGV2ZWwgPD0gcHJlZCkKKyAgICAgICAgICAgICAg ICAoKmFic19sZXZlbCktLTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmFic19sZXZlbCkgewor ICAgICAgICAgICAgdGItPmNvZWZmc1tvZmZdID0gKmNvZWZmX3NpZ25fbGV2ZWwgKiAqYWJzX2xl dmVsOworICAgICAgICAgICAgdGItPm1heF9zY2FuX3ggPSBGRk1BWCh4YywgdGItPm1heF9zY2Fu X3gpOworICAgICAgICAgICAgdGItPm1heF9zY2FuX3kgPSBGRk1BWCh5YywgdGItPm1heF9zY2Fu X3kpOworICAgICAgICAgICAgdGItPm1pbl9zY2FuX3ggPSBGRk1JTih4YywgdGItPm1pbl9zY2Fu X3gpOworICAgICAgICAgICAgdGItPm1pbl9zY2FuX3kgPSBGRk1JTih5YywgdGItPm1pbl9zY2Fu X3kpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGItPmNvZWZmc1tvZmZdID0gMDsK KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGhsc19y ZXNpZHVhbF90c19jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywgVHJhbnNmb3JtQmxvY2sgKnRi KQoreworICAgIFJlc2lkdWFsQ29kaW5nIHJjOworICAgIHRiLT5taW5fc2Nhbl94ID0gdGItPm1p bl9zY2FuX3kgPSBJTlRfTUFYOworICAgIGluaXRfcmVzaWR1YWxfY29kaW5nKGxjLCAmcmMsIHRi LT5sb2cyX3RiX3dpZHRoLCB0Yi0+bG9nMl90Yl9oZWlnaHQsIHRiKTsKKyAgICBmb3IgKGludCBp ID0gMDsgaSA8PSByYy5sYXN0X3N1Yl9ibG9jazsgaSsrKSB7CisgICAgICAgIGludCByZXQgPSBy ZXNpZHVhbF90c19jb2Rpbmdfc3ViYmxvY2sobGMsICZyYywgaSk7CisgICAgICAgIGlmIChyZXQg PCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIGlubGluZSBpbnQgcmVzaWR1YWxfY29kaW5nX3N1YmJsb2NrKFZWQ0xvY2FsQ29u dGV4dCAqbGMsIFJlc2lkdWFsQ29kaW5nICpyYywgY29uc3QgaW50IGkpCit7CisgICAgY29uc3Qg SDI2NlJhd1NsaWNlSGVhZGVyICpyc2ggPSBsYy0+c2MtPnNoLnI7CisgICAgVHJhbnNmb3JtQmxv Y2sgKnRiICAgICAgICAgICAgPSByYy0+dGI7CisgICAgaW50IGZpcnN0X3NpZ19zY2FuX3Bvc19z YiwgbGFzdF9zaWdfc2Nhbl9wb3Nfc2I7CisgICAgaW50IGZpcnN0X3Bvc19tb2RlMCwgZmlyc3Rf cG9zX21vZGUxOworICAgIGludCBpbmZlcl9zYl9kY19zaWdfY29lZmZfZmxhZyA9IDA7CisgICAg aW50IG4sIHNpZ19oaWRkZW5fZmxhZywgc3VtID0gMDsKKyAgICBpbnQgYWJzX2xldmVsX2d0Ml9m bGFnW01BWF9TVUJfQkxPQ0tfU0laRSAqIE1BWF9TVUJfQkxPQ0tfU0laRV07CisgICAgY29uc3Qg aW50IHN0YXJ0X3FzdGF0ZV9zYiA9IHJjLT5xc3RhdGU7CisgICAgY29uc3QgaW50IHhzID0gcmMt PnNiX3NjYW5feF9vZmZbaV07CisgICAgY29uc3QgaW50IHlzID0gcmMtPnNiX3NjYW5feV9vZmZb aV07CisgICAgdWludDhfdCAqc2JfY29kZWRfZmxhZyA9IHJjLT5zYl9jb2RlZF9mbGFnICsgeXMg KiByYy0+d2lkdGhfaW5fc2JzICsgeHM7CisKKworICAgIGF2X2Fzc2VydDAocmMtPm51bV9zYl9j b2VmZiA8PSBNQVhfU1VCX0JMT0NLX1NJWkUgKiBNQVhfU1VCX0JMT0NLX1NJWkUpOworICAgIGlm IChpIDwgcmMtPmxhc3Rfc3ViX2Jsb2NrICYmIGkgPiAwKSB7CisgICAgICAgICpzYl9jb2RlZF9m bGFnID0gc2JfY29kZWRfZmxhZ19kZWNvZGUobGMsIHNiX2NvZGVkX2ZsYWcsIHJjLCB4cywgeXMp OworICAgICAgICBpbmZlcl9zYl9kY19zaWdfY29lZmZfZmxhZyA9IDE7CisgICAgfSBlbHNlIHsK KyAgICAgICAgKnNiX2NvZGVkX2ZsYWcgPSAxOworICAgIH0KKyAgICBpZiAoKnNiX2NvZGVkX2Zs YWcgJiYgKHhzID4gMyB8fCB5cyA+IDMpICYmICF0Yi0+Y19pZHgpCisgICAgICAgIGxjLT5wYXJz ZS5tdHNfemVyb19vdXRfc2lnX2NvZWZmX2ZsYWcgPSAwOworCisgICAgaWYgKCEqc2JfY29kZWRf ZmxhZykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IgPSBy Yy0+bnVtX3NiX2NvZWZmOworICAgIGxhc3Rfc2lnX3NjYW5fcG9zX3NiID0gLTE7CisgICAgZmly c3RfcG9zX21vZGUwID0gKGkgPT0gcmMtPmxhc3Rfc3ViX2Jsb2NrID8gcmMtPmxhc3Rfc2Nhbl9w b3MgOiByYy0+bnVtX3NiX2NvZWZmIC0xKTsKKyAgICBmaXJzdF9wb3NfbW9kZTEgPSBmaXJzdF9w b3NfbW9kZTA7CisgICAgZm9yIChuID0gZmlyc3RfcG9zX21vZGUwOyBuID49IDAgJiYgcmMtPnJl bV9iaW5zX3Bhc3MxID49IDQ7IG4tLSkgeworICAgICAgICBjb25zdCBpbnQgeGMgICA9ICh4cyA8 PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQg eWMgICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAg ICBjb25zdCBpbnQgbGFzdCA9ICh4YyA9PSByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl94ICYm IHljID09IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3kpOworICAgICAgICBpbnQgKmFic19s ZXZlbF9wYXNzMSA9IHJjLT5hYnNfbGV2ZWxfcGFzczEgKyB5YyAqIHRiLT50Yl93aWR0aCArIHhj OworICAgICAgICBpbnQgKnNpZ19jb2VmZl9mbGFnICA9IHJjLT5zaWdfY29lZmZfZmxhZyArIHlj ICogdGItPnRiX3dpZHRoICsgeGM7CisKKyAgICAgICAgaWYgKChuID4gMCB8fCAhaW5mZXJfc2Jf ZGNfc2lnX2NvZWZmX2ZsYWcgKSAmJiAhbGFzdCkgeworICAgICAgICAgICAgKnNpZ19jb2VmZl9m bGFnID0gc2lnX2NvZWZmX2ZsYWdfZGVjb2RlKGxjLCByYywgeGMsIHljKTsKKyAgICAgICAgICAg IHJjLT5yZW1fYmluc19wYXNzMS0tOworICAgICAgICAgICAgaWYgKCpzaWdfY29lZmZfZmxhZykK KyAgICAgICAgICAgICAgICBpbmZlcl9zYl9kY19zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAqc2lnX2NvZWZmX2ZsYWcgPSBsYXN0IHx8ICghcmMtPnNj YW5feF9vZmZbbl0gJiYgIXJjIC0+c2Nhbl95X29mZltuXSAmJgorICAgICAgICAgICAgICAgIGlu ZmVyX3NiX2RjX3NpZ19jb2VmZl9mbGFnKTsKKyAgICAgICAgfQorICAgICAgICAqYWJzX2xldmVs X3Bhc3MxID0gMDsKKyAgICAgICAgaWYgKCpzaWdfY29lZmZfZmxhZykgeworICAgICAgICAgICAg aW50IGFic19sZXZlbF9ndDFfZmxhZywgcGFyX2xldmVsX2ZsYWcgPSAwOworICAgICAgICAgICAg Y29uc3QgaW50IGluYyA9IGdldF9ndHhfZmxhZ19pbmMocmMsIHhjLCB5YywgbGFzdCk7CisgICAg ICAgICAgICBhYnNfbGV2ZWxfZ3QxX2ZsYWcgPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdfZGVjb2RlKGxj LCBpbmMpOworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxLS07CisgICAgICAgICAgICBp ZiAoYWJzX2xldmVsX2d0MV9mbGFnKSB7CisgICAgICAgICAgICAgICAgcGFyX2xldmVsX2ZsYWcg PSBwYXJfbGV2ZWxfZmxhZ19kZWNvZGUobGMsIGluYyk7CisgICAgICAgICAgICAgICAgYWJzX2xl dmVsX2d0Ml9mbGFnW25dID0gYWJzX2xldmVsX2d0eF9mbGFnX2RlY29kZShsYywgaW5jICsgMzIp OworICAgICAgICAgICAgICAgIHJjLT5yZW1fYmluc19wYXNzMSAtPSAyOworICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPSAwOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxhc3Rfc2lnX3NjYW5fcG9zX3NiID09IC0xKQor ICAgICAgICAgICAgICAgIGxhc3Rfc2lnX3NjYW5fcG9zX3NiID0gbjsKKyAgICAgICAgICAgIGZp cnN0X3NpZ19zY2FuX3Bvc19zYiA9IG47CisKKyAgICAgICAgICAgICphYnNfbGV2ZWxfcGFzczEg PQorICAgICAgICAgICAgICAgIDEgICsgcGFyX2xldmVsX2ZsYWcgKyBhYnNfbGV2ZWxfZ3QxX2Zs YWcgKyAoYWJzX2xldmVsX2d0Ml9mbGFnW25dIDw8IDEpOworICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgYWJzX2xldmVsX2d0Ml9mbGFnW25dID0gMDsKKyAgICAgICAgfQorCisgICAgICAg IGlmIChyc2gtPnNoX2RlcF9xdWFudF91c2VkX2ZsYWcpCisgICAgICAgICAgICByYy0+cXN0YXRl ID0gcXN0YXRlX3RyYW5zbGF0ZV90YWJsZVtyYy0+cXN0YXRlXVsqYWJzX2xldmVsX3Bhc3MxICYg MV07CisKKyAgICAgICAgZmlyc3RfcG9zX21vZGUxID0gbiAtIDE7CisgICAgfQorICAgIGZvciAo biA9IGZpcnN0X3Bvc19tb2RlMDsgbiA+IGZpcnN0X3Bvc19tb2RlMTsgbi0tKSB7CisgICAgICAg IGNvbnN0IGludCB4YyA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25d OworICAgICAgICBjb25zdCBpbnQgeWMgPSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nh bl95X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50ICphYnNfbGV2ZWxfcGFzczEgPSByYy0+YWJz X2xldmVsX3Bhc3MxICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKyAgICAgICAgaW50ICphYnNf bGV2ZWwgICAgICAgICAgICAgPSByYy0+YWJzX2xldmVsICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4 YzsKKworICAgICAgICAqYWJzX2xldmVsID0gKmFic19sZXZlbF9wYXNzMTsKKyAgICAgICAgaWYg KGFic19sZXZlbF9ndDJfZmxhZ1tuXSkgeworICAgICAgICAgICAgY29uc3QgaW50IGFic19yZW1h aW5kZXIgPSBhYnNfcmVtYWluZGVyX2RlY29kZShsYywgcmMsIHhjLCB5Yyk7CisgICAgICAgICAg ICBlcF91cGRhdGVfaGlzdChsYy0+ZXAsIHJjLCBhYnNfcmVtYWluZGVyLCAyKTsKKyAgICAgICAg ICAgICphYnNfbGV2ZWwgKz0gMiAqIGFic19yZW1haW5kZXI7CisgICAgICAgIH0KKyAgICB9Cisg ICAgZm9yIChuID0gZmlyc3RfcG9zX21vZGUxOyBuID49IDA7IG4tLSkgeworICAgICAgICBjb25z dCBpbnQgeGMgICA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOwor ICAgICAgICBjb25zdCBpbnQgeWMgICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2Fu X3lfb2ZmW25dOworICAgICAgICBpbnQgKmFic19sZXZlbCA9IHJjLT5hYnNfbGV2ZWwgKyB5YyAq IHRiLT50Yl93aWR0aCArIHhjOworCisgICAgICAgIGlmICgqc2JfY29kZWRfZmxhZykgeworICAg ICAgICAgICAgY29uc3QgaW50IGRlY19hYnNfbGV2ZWwgPSBkZWNfYWJzX2xldmVsX2RlY29kZShs YywgcmMsIHhjLCB5YywgYWJzX2xldmVsKTsKKyAgICAgICAgICAgIGVwX3VwZGF0ZV9oaXN0KGxj LT5lcCwgcmMsIGRlY19hYnNfbGV2ZWwsIDApOworICAgICAgICB9CisgICAgICAgIGlmICgqYWJz X2xldmVsID4gMCkgeworICAgICAgICAgICAgaWYgKGxhc3Rfc2lnX3NjYW5fcG9zX3NiID09IC0x KQorICAgICAgICAgICAgICAgIGxhc3Rfc2lnX3NjYW5fcG9zX3NiID0gbjsKKyAgICAgICAgICAg IGZpcnN0X3NpZ19zY2FuX3Bvc19zYiA9IG47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJzaC0+ c2hfZGVwX3F1YW50X3VzZWRfZmxhZykKKyAgICAgICAgICAgIHJjLT5xc3RhdGUgPSBxc3RhdGVf dHJhbnNsYXRlX3RhYmxlW3JjLT5xc3RhdGVdWyphYnNfbGV2ZWwgJiAxXTsKKyAgICB9CisgICAg c2lnX2hpZGRlbl9mbGFnID0gcnNoLT5zaF9zaWduX2RhdGFfaGlkaW5nX3VzZWRfZmxhZyAmJgor ICAgICAgICAobGFzdF9zaWdfc2Nhbl9wb3Nfc2IgLSBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IgPiAz ID8gMSA6IDApOworCisgICAgaWYgKHJzaC0+c2hfZGVwX3F1YW50X3VzZWRfZmxhZykKKyAgICAg ICAgcmMtPnFzdGF0ZSA9IHN0YXJ0X3FzdGF0ZV9zYjsKKyAgICBuID0gKGkgPT0gcmMtPmxhc3Rf c3ViX2Jsb2NrID8gcmMtPmxhc3Rfc2Nhbl9wb3MgOiByYy0+bnVtX3NiX2NvZWZmIC0xKTsKKyAg ICBmb3IgKC8qIG5vdGhpbmcgKi87IG4gPj0gMDsgbi0tKSB7CisgICAgICAgIGludCB0cmFuc19j b2VmZl9sZXZlbDsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4cyA8PCByYy0+bG9nMl9zYl93 KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgeWMgID0gKHlzIDw8IHJj LT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCBvZmYg PSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBjb25zdCBpbnQgKmFic19sZXZlbCA9 IHJjLT5hYnNfbGV2ZWwgKyBvZmY7CisKKyAgICAgICAgaWYgKCphYnNfbGV2ZWwgPiAwKSB7Cisg ICAgICAgICAgICBpbnQgc2lnbiA9IDE7CisgICAgICAgICAgICBpZiAoIXNpZ19oaWRkZW5fZmxh ZyB8fCAobiAhPSBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IpKQorICAgICAgICAgICAgICAgIHNpZ24g PSAxIC0gMiAqIGNvZWZmX3NpZ25fZmxhZ19kZWNvZGUobGMpOworICAgICAgICAgICAgaWYgKHJz aC0+c2hfZGVwX3F1YW50X3VzZWRfZmxhZykgeworICAgICAgICAgICAgICAgIHRyYW5zX2NvZWZm X2xldmVsID0gKDIgKiAqYWJzX2xldmVsIC0gKHJjLT5xc3RhdGUgPiAxKSkgKiBzaWduOworICAg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0cmFuc19jb2VmZl9sZXZlbCA9ICph YnNfbGV2ZWwgKiBzaWduOworICAgICAgICAgICAgICAgIGlmIChzaWdfaGlkZGVuX2ZsYWcpIHsK KyAgICAgICAgICAgICAgICAgICAgc3VtICs9ICphYnNfbGV2ZWw7CisgICAgICAgICAgICAgICAg ICAgIGlmIChuID09IGZpcnN0X3NpZ19zY2FuX3Bvc19zYiAmJiAoc3VtICUgMikpCisgICAgICAg ICAgICAgICAgICAgICAgICB0cmFuc19jb2VmZl9sZXZlbCA9IC10cmFuc19jb2VmZl9sZXZlbDsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0Yi0+Y29lZmZz W29mZl0gPSB0cmFuc19jb2VmZl9sZXZlbDsKKyAgICAgICAgICAgIHRiLT5tYXhfc2Nhbl94ID0g RkZNQVgoeGMsIHRiLT5tYXhfc2Nhbl94KTsKKyAgICAgICAgICAgIHRiLT5tYXhfc2Nhbl95ID0g RkZNQVgoeWMsIHRiLT5tYXhfc2Nhbl95KTsKKyAgICAgICAgfQorICAgICAgICBpZiAocnNoLT5z aF9kZXBfcXVhbnRfdXNlZF9mbGFnKQorICAgICAgICAgICAgcmMtPnFzdGF0ZSA9IHFzdGF0ZV90 cmFuc2xhdGVfdGFibGVbcmMtPnFzdGF0ZV1bKmFic19sZXZlbCAmIDFdOworICAgIH0KKworICAg IHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkZXJpdmVfbGFzdF9zY2FuX3BvcyhSZXNpZHVh bENvZGluZyAqcmMpCit7CisgICAgaW50IHhjLCB5YywgeHMsIHlzOworICAgIGRvIHsKKyAgICAg ICAgaWYgKCFyYy0+bGFzdF9zY2FuX3BvcykgeworICAgICAgICAgICAgcmMtPmxhc3Rfc2Nhbl9w b3MgPSByYy0+bnVtX3NiX2NvZWZmOworICAgICAgICAgICAgcmMtPmxhc3Rfc3ViX2Jsb2NrLS07 CisgICAgICAgIH0KKyAgICAgICAgcmMtPmxhc3Rfc2Nhbl9wb3MtLTsKKyAgICAgICAgeHMgPSBy Yy0+c2Jfc2Nhbl94X29mZltyYy0+bGFzdF9zdWJfYmxvY2tdOworICAgICAgICB5cyA9IHJjLT5z Yl9zY2FuX3lfb2ZmW3JjLT5sYXN0X3N1Yl9ibG9ja107CisgICAgICAgIHhjID0gKHhzIDw8IHJj LT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbcmMtPmxhc3Rfc2Nhbl9wb3NdOworICAgICAg ICB5YyA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW3JjLT5sYXN0X3Nj YW5fcG9zXTsKKyAgICB9IHdoaWxlICgoeGMgIT0gcmMtPmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eCkgfHwgKHljICE9IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3kpKTsKK30KKworc3RhdGlj IHZvaWQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94X3lfZGVjb2RlKFJlc2lkdWFsQ29kaW5nICpy YywgVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgbG9nMl96b190Yl93aWR0aCwg Y29uc3QgaW50IGxvZzJfem9fdGJfaGVpZ2h0KQoreworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhl YWRlciAqcnNoID0gbGMtPnNjLT5zaC5yOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiAg ICAgID0gcmMtPnRiOworICAgIGludCBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3gsIGxhc3Rfc2ln bmlmaWNhbnRfY29lZmZfeTsKKworICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA9IGxhc3Rf c2lnbmlmaWNhbnRfY29lZmZfeF9wcmVmaXhfZGVjb2RlKGxjLAorICAgICAgICAgICAgdGItPmxv ZzJfdGJfd2lkdGgsIGxvZzJfem9fdGJfd2lkdGgsIHRiLT5jX2lkeCk7CisKKyAgICBsYXN0X3Np Z25pZmljYW50X2NvZWZmX3kgPSBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3lfcHJlZml4X2RlY29k ZShsYywKKyAgICAgICAgdGItPmxvZzJfdGJfaGVpZ2h0LCBsb2cyX3pvX3RiX2hlaWdodCwgdGIt PmNfaWR4KTsKKworICAgIGlmIChsYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggPiAzKSB7CisgICAg ICAgIGludCBzdWZmaXggPSBsYXN0X3NpZ19jb2VmZl9zdWZmaXhfZGVjb2RlKGxjLCBsYXN0X3Np Z25pZmljYW50X2NvZWZmX3gpOworICAgICAgICBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggPSAo MSA8PCAoKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA+PiAxKSAtIDEpKSAqCisgICAgICAgICAg ICAoMiArIChsYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggJiAxKSkgKyBzdWZmaXg7CisgICAgfQor ICAgIGlmIChsYXN0X3NpZ25pZmljYW50X2NvZWZmX3kgPiAzKSB7CisgICAgICAgIGludCBzdWZm aXggPSBsYXN0X3NpZ19jb2VmZl9zdWZmaXhfZGVjb2RlKGxjLCBsYXN0X3NpZ25pZmljYW50X2Nv ZWZmX3kpOworICAgICAgICBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3kgPSAoMSA8PCAoKGxhc3Rf c2lnbmlmaWNhbnRfY29lZmZfeSA+PiAxKSAtIDEpKSAqCisgICAgICAgICAgICAoMiArIChsYXN0 X3NpZ25pZmljYW50X2NvZWZmX3kgJiAxKSkgKyBzdWZmaXg7CisgICAgfQorICAgIGlmIChyc2gt PnNoX3JldmVyc2VfbGFzdF9zaWdfY29lZmZfZmxhZykgeworICAgICAgICBsYXN0X3NpZ25pZmlj YW50X2NvZWZmX3ggPSAoMSA8PCBsb2cyX3pvX3RiX3dpZHRoKSAtIDEgLSBsYXN0X3NpZ25pZmlj YW50X2NvZWZmX3g7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9ICgxIDw8IGxv ZzJfem9fdGJfaGVpZ2h0KSAtIDEgLSBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3k7CisgICAgfQor ICAgIHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggPSBsYXN0X3NpZ25pZmljYW50X2NvZWZm X3g7CisgICAgcmMtPmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9IGxhc3Rfc2lnbmlmaWNhbnRf Y29lZmZfeTsKK30KKworc3RhdGljIGludCBobHNfcmVzaWR1YWxfY29kaW5nKFZWQ0xvY2FsQ29u dGV4dCAqbGMsIFRyYW5zZm9ybUJsb2NrICp0YikKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyAg ICAgICAgPSBsYy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSAgICAgPSBs Yy0+Y3U7CisgICAgY29uc3QgaW50IGxvZzJfdGJfd2lkdGggID0gdGItPmxvZzJfdGJfd2lkdGg7 CisgICAgY29uc3QgaW50IGxvZzJfdGJfaGVpZ2h0ID0gdGItPmxvZzJfdGJfaGVpZ2h0OworICAg IGNvbnN0IGludCBjX2lkeCAgICAgICAgICA9IHRiLT5jX2lkeDsKKyAgICBpbnQgbG9nMl96b190 Yl93aWR0aCwgbG9nMl96b190Yl9oZWlnaHQ7CisgICAgUmVzaWR1YWxDb2RpbmcgcmM7CisKKyAg ICBpZiAoc3BzLT5yLT5zcHNfbXRzX2VuYWJsZWRfZmxhZyAmJiBjdS0+c2J0X2ZsYWcgJiYgIWNf aWR4ICYmIGxvZzJfdGJfd2lkdGggPT0gNSAmJiBsb2cyX3RiX2hlaWdodCA8IDYpCisgICAgICAg IGxvZzJfem9fdGJfd2lkdGggPSA0OworICAgIGVsc2UKKyAgICAgICAgbG9nMl96b190Yl93aWR0 aCA9IEZGTUlOKGxvZzJfdGJfd2lkdGgsIDUgKTsKKworICAgIGlmIChzcHMtPnItPnNwc19tdHNf ZW5hYmxlZF9mbGFnICYmIGN1LT5zYnRfZmxhZyAmJiAhY19pZHggJiYgbG9nMl90Yl93aWR0aCA8 IDYgJiYgbG9nMl90Yl9oZWlnaHQgPT0gNSApCisgICAgICAgIGxvZzJfem9fdGJfaGVpZ2h0ID0g NDsKKyAgICBlbHNlCisgICAgICAgIGxvZzJfem9fdGJfaGVpZ2h0ID0gRkZNSU4obG9nMl90Yl9o ZWlnaHQsIDUpOworCisgICAgaW5pdF9yZXNpZHVhbF9jb2RpbmcobGMsICZyYywgbG9nMl96b190 Yl93aWR0aCwgbG9nMl96b190Yl9oZWlnaHQsIHRiKTsKKyAgICBsYXN0X3NpZ25pZmljYW50X2Nv ZWZmX3hfeV9kZWNvZGUoJnJjLCBsYywgbG9nMl96b190Yl93aWR0aCwgbG9nMl96b190Yl9oZWln aHQpOworICAgIGRlcml2ZV9sYXN0X3NjYW5fcG9zKCZyYyk7CisKKyAgICBpZiAoIXJjLmxhc3Rf c3ViX2Jsb2NrICYmIGxvZzJfdGJfd2lkdGggPj0gMiAmJiBsb2cyX3RiX2hlaWdodCA+PSAyICYm ICF0Yi0+dHMgJiYgcmMubGFzdF9zY2FuX3BvcyA+IDApCisgICAgICAgIGxjLT5wYXJzZS5sZm5z dF9kY19vbmx5ID0gMDsKKyAgICBpZiAoKHJjLmxhc3Rfc3ViX2Jsb2NrID4gMCAmJiBsb2cyX3Ri X3dpZHRoID49IDIgJiYgbG9nMl90Yl9oZWlnaHQgPj0gMiApIHx8CisgICAgICAgICAocmMubGFz dF9zY2FuX3BvcyA+IDcgJiYgKGxvZzJfdGJfd2lkdGggPT0gMiB8fCBsb2cyX3RiX3dpZHRoID09 IDMgKSAmJgorICAgICAgICAgbG9nMl90Yl93aWR0aCA9PSBsb2cyX3RiX2hlaWdodCkpCisgICAg ICAgIGxjLT5wYXJzZS5sZm5zdF96ZXJvX291dF9zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgaWYg KChyYy5sYXN0X3N1Yl9ibG9jayA+IDAgfHwgcmMubGFzdF9zY2FuX3BvcyA+IDAgKSAmJiAhY19p ZHgpCisgICAgICAgIGxjLT5wYXJzZS5tdHNfZGNfb25seSA9IDA7CisKKyAgICBtZW1zZXQodGIt PmNvZWZmcywgMCwgdGItPnRiX3dpZHRoICogdGItPnRiX2hlaWdodCAqIHNpemVvZigqdGItPmNv ZWZmcykpOworICAgIG1lbXNldChyYy5hYnNfbGV2ZWwsIDAsIHRiLT50Yl93aWR0aCAqIHRiLT50 Yl9oZWlnaHQgKiBzaXplb2YocmMuYWJzX2xldmVsWzBdKSk7CisgICAgbWVtc2V0KHJjLnNiX2Nv ZGVkX2ZsYWcsIDAsIHJjLm5iX3Nicyk7CisgICAgbWVtc2V0KHJjLmFic19sZXZlbF9wYXNzMSwg MCwgdGItPnRiX3dpZHRoICogdGItPnRiX2hlaWdodCAqIHNpemVvZihyYy5hYnNfbGV2ZWxfcGFz czFbMF0pKTsKKyAgICBtZW1zZXQocmMuc2lnX2NvZWZmX2ZsYWcsIDAsIHRiLT50Yl93aWR0aCAq IHRiLT50Yl9oZWlnaHQgKiBzaXplb2YocmMuc2lnX2NvZWZmX2ZsYWdbMF0pKTsKKworICAgIGZv ciAoaW50IGkgPSByYy5sYXN0X3N1Yl9ibG9jazsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaW50 IHJldCA9IHJlc2lkdWFsX2NvZGluZ19zdWJibG9jayhsYywgJnJjLCBpKTsKKyAgICAgICAgaWYg KHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHJldHVybiAw OworfQorCitpbnQgZmZfdnZjX3Jlc2lkdWFsX2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxjLCBU cmFuc2Zvcm1CbG9jayAqdGIpCit7CisgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVhZGVyICpyc2gg PSBsYy0+c2MtPnNoLnI7CisgICAgY29uc3QgaW50IHRzICAgICAgICAgICAgICAgICAgPSAhcnNo LT5zaF90c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxhZyAmJiB0Yi0+dHM7CisKKyAgICBy ZXR1cm4gdHMgPyBobHNfcmVzaWR1YWxfdHNfY29kaW5nKGxjLCB0YikgOiBobHNfcmVzaWR1YWxf Y29kaW5nKGxjLCB0Yik7Cit9CisKK2ludCBmZl92dmNfY3VfY29kZWRfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfQ09ERURfRkxBRyk7Cit9CisK K2ludCBmZl92dmNfc2J0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBp bnQgdyAgID0gbGMtPmN1LT5jYl93aWR0aDsKKyAgICBjb25zdCBpbnQgaCAgID0gbGMtPmN1LT5j Yl9oZWlnaHQ7CisgICAgY29uc3QgaW50IGluYyA9IHcgKiBoIDw9IDI1NjsKKyAgICByZXR1cm4g 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 bmRleCAwMDAwMDAwMDAwLi4xNzJhYjI3MmZmCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2Rl Yy92dmMvdnZjX2NhYmFjLmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBWVkMgQ0FCQUMgZGVj b2RlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOdW8gTWkKKyAqCisgKiBUaGlzIGZpbGUg aXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq CisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25n IHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkNPREVDX1ZWQ19WVkNfQ0FCQUNfSAor I2RlZmluZSBBVkNPREVDX1ZWQ19WVkNfQ0FCQUNfSAorCisjaW5jbHVkZSAidnZjX2N0dS5oIgor CitpbnQgZmZfdnZjX2NhYmFjX2luaXQoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGN0dV9pZHgs IGludCByeCwgaW50IHJ5KTsKKworLy9zYW8KK2ludCBmZl92dmNfc2FvX21lcmdlX2ZsYWdfZGVj b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fdHlwZV9pZHhfZGVjb2Rl KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fYmFuZF9wb3NpdGlvbl9kZWNv ZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfYWJzX2RlY29k ZShWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX29mZnNldF9zaWduX2RlY29k ZShWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX2VvX2NsYXNzX2RlY29kZShW VkNMb2NhbENvbnRleHQgKmxjKTsKKworLy9hbGYKK2ludCBmZl92dmNfYWxmX2N0Yl9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMsIGludCByeCwgaW50IHJ5LCBpbnQgY19pZHgpOworaW50IGZmX3Z2 Y19hbGZfdXNlX2Fwc19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hbGZf bHVtYV9wcmV2X2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2Fs Zl9sdW1hX2ZpeGVkX2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZj X2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGNfaWR4LCBp bnQgbnVtX2Nocm9tYV9maWx0ZXJzKTsKK2ludCBmZl92dmNfYWxmX2N0Yl9jY19pZGMoVlZDTG9j YWxDb250ZXh0ICpsYywgaW50IHJ4LCBpbnQgcnksIGludCBpZHgsIGludCBjY19maWx0ZXJzX3Np Z25hbGxlZCk7CisKKy8vY29kaW5nX3RyZWUKK2ludCBmZl92dmNfc3BsaXRfY3VfZmxhZyhWVkNM b2NhbENvbnRleHQqIGxjLCBpbnQgeDAsIGludCB5MCwgaW50IGNiX3dpZHRoLCBpbnQgY2JfaGVp Z2h0LAorICAgIGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpOworVlZDU3Bs aXRNb2RlIGZmX3Z2Y19zcGxpdF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsICBpbnQgeDAsIGlu dCB5MCwgaW50IGNiX3dpZHRoLCBpbnQgY2JfaGVpZ2h0LAorICAgIGludCBjcXRfZGVwdGgsIGlu dCBtdHRfZGVwdGgsIGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpOworaW50 IGZmX3Z2Y19ub25faW50ZXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgeDAsIGludCB5 MCwgaW50IGNoX3R5cGUpOworCisvL2NvZGluZyB1bml0CitpbnQgZmZfdnZjX3ByZWRfbW9kZV9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpc19jaHJvbWEpOworaW50IGZmX3Z2Y19wcmVk X21vZGVfcGx0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2Jk cGNtX2x1bWFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfYmRw Y21fbHVtYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFf YmRwY21fY2hyb21hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJh X2JkcGNtX2Nocm9tYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNf Y3Vfc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmN1X3NraXBf ZmxhZyk7CitpbnQgZmZfdnZjX3ByZWRfbW9kZV9pYmNfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj LCBpbnQgY2hfdHlwZSk7CitpbnQgZmZfdnZjX2N1X2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYyk7CitpbnQgZmZfdnZjX2N1X3FwX2RlbHRhX2FicyhWVkNMb2NhbENvbnRleHQgKmxjKTsK K2ludCBmZl92dmNfY3VfcXBfZGVsdGFfc2lnbl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOwor aW50IGZmX3Z2Y19zYnRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0 X3F1YWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X2hvcml6b250 YWxfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X3Bvc19mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpOworCisvL2ludHJhCitpbnQgZmZfdnZjX2ludHJhX21pcF9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmludHJhX21pcF9mbGFnKTsKK2lu dCBmZl92dmNfaW50cmFfbWlwX3RyYW5zcG9zZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsK K2ludCBmZl92dmNfaW50cmFfbWlwX21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX2ludHJhX2x1bWFfcmVmX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNf aW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitlbnVt IElzcFR5cGUgZmZfdnZjX2lzcF9zcGxpdF90eXBlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBp bnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBt X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbm90X3Bs YW5hcl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpbnRyYV9zdWJwYXJ0aXRpb25zX21v ZGVfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX2lkeChWVkNMb2NhbENvbnRleHQg KmxjKTsKK2ludCBmZl92dmNfaW50cmFfbHVtYV9tcG1fcmVtYWluZGVyKFZWQ0xvY2FsQ29udGV4 dCAqbGMpOworaW50IGZmX3Z2Y19jY2xtX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsK K2ludCBmZl92dmNfY2NsbV9tb2RlX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfaW50cmFfY2hyb21hX3ByZWRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKKworLy9pbnRl cgoraW50IGZmX3Z2Y19nZW5lcmFsX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7Citp bnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQg ZmZfdnZjX21lcmdlX3N1YmJsb2NrX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgbWF4X251 bV9zdWJibG9ja19tZXJnZV9jYW5kKTsKK2ludCBmZl92dmNfcmVndWxhcl9tZXJnZV9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMsIGludCBjdV9za2lwX2ZsYWcpOworaW50IGZmX3Z2Y19tZXJnZV9p ZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21tdmRfbWVyZ2VfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbW12ZF9jYW5kX2ZsYWcoVlZDTG9jYWxDb250 ZXh0ICpsYyk7Cit2b2lkIGZmX3Z2Y19tbXZkX29mZnNldF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0 ICpsYywgTXYgKm12ZF9vZmZzZXQsIGludCBwaF9tbXZkX2Z1bGxwZWxfb25seV9mbGFnKTsKK2lu dCBmZl92dmNfY2lpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19tZXJn ZV9ncG1fcGFydGl0aW9uX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbWVy Z2VfZ3BtX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgaWR4KTsKK1ByZWRGbGFnIGZmX3Z2 Y19wcmVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGlzX2IpOworaW50IGZmX3Z2Y19p bnRlcl9hZmZpbmVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3VfYWZm aW5lX3R5cGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc3ltX212ZF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19yZWZfaWR4X2x4KFZWQ0xvY2Fs Q29udGV4dCAqbGMsIHVpbnQ4X3QgbmJfcmVmcyk7CitpbnQgZmZfdnZjX2Fic19tdmRfZ3JlYXRl cjBfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfYWJzX212ZF9ncmVhdGVy MV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hYnNfbXZkX21pbnVzMihW VkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbXZkX3NpZ25fZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKTsKK2ludCBmZl92dmNfbXZwX2x4X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7 CitpbnQgZmZfdnZjX2FtdnJfc2hpZnQoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGludGVyX2Fm ZmluZV9mbGFnLCBQcmVkTW9kZSBwcmVkX21vZGUsIGludCBoYXNfYW12cl9mbGFnKTsKK2ludCBm Zl92dmNfYmN3X2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgbm9fYmFja3dhcmRfcHJlZF9m bGFnKTsKKworLy90cmFuc2Zvcm0KK2ludCBmZl92dmNfdHVfY2JfY29kZWRfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfdHVfY3JfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjLCBpbnQgdHVfY2JfY29kZWRfZmxhZyk7CitpbnQgZmZfdnZjX3R1X3lfY29kZWRfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3VfY2hyb21hX3FwX29mZnNldF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19jdV9jaHJvbWFfcXBfb2Zmc2V0 X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfdHVfam9pbnRfY2Jjcl9yZXNp ZHVhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCB0dV9jYl9jb2RlZF9mbGFnLCBpbnQg dHVfY3JfY29kZWRfZmxhZyk7CitpbnQgZmZfdnZjX3RyYW5zZm9ybV9za2lwX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYywgaW50IGN0eCk7CitpbnQgZmZfdnZjX3Jlc2lkdWFsX2NvZGluZyhWVkNM b2NhbENvbnRleHQgKmxjLCBUcmFuc2Zvcm1CbG9jayAqdGIpOworaW50IGZmX3Z2Y19sZm5zdF9p ZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGluYyk7CitpbnQgZmZfdnZjX210c19pZHgoVlZD TG9jYWxDb250ZXh0ICpsYyk7CisKK2ludCBmZl92dmNfZW5kX29mX3NsaWNlX2ZsYWdfZGVjb2Rl KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19lbmRfb2ZfdGlsZV9vbmVfYml0KFZW Q0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19lbmRfb2Zfc3Vic2V0X29uZV9iaXQoVlZD TG9jYWxDb250ZXh0ICpsYyk7CisKKyNlbmRpZiAvL0FWQ09ERUNfVlZDX1ZWQ19DQUJBQ19ICmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmMgYi9saWJhdmNvZGVjL3Z2Yy92dmNf Y3R1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzhiMTNmZmIwMAot LS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuYwpAQCAtMCwwICsxLDMy IEBACisvKgorICogVlZDIENUVShDb2RpbmcgVHJlZSBVbml0KSBwYXJzZXIKKyAqCisgKiBDb3B5 cmlnaHQgKEMpIDIwMjIgTnVvIE1pCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVn LgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQor ICovCisKKyNpbmNsdWRlICJ2dmNfY3R1LmgiCisKK3ZvaWQgZmZfdnZjX2VwX2luaXRfc3RhdF9j b2VmZihFbnRyeVBvaW50ICplcCwKKwljb25zdCBpbnQgYml0X2RlcHRoLCBjb25zdCBpbnQgcGVy c2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnKQoreworICAgIGZvciAoc2l6ZV90 IGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoZXAtPnN0YXRfY29lZmYpOyArK2kpIHsKKyAgICAg ICAgZXAtPnN0YXRfY29lZmZbaV0gPQorICAgICAgICAgICAgcGVyc2lzdGVudF9yaWNlX2FkYXB0 YXRpb25fZW5hYmxlZF9mbGFnID8gMiAqIChhdl9sb2cyKGJpdF9kZXB0aCAtIDEwKSkgOiAwOwor ICAgIH0KK30KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuaCBiL2xpYmF2Y29k ZWMvdnZjL3Z2Y19jdHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43 Y2Y5ZDlmMDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2N0dS5oCkBA IC0wLDAgKzEsNDY0IEBACisvKgorICogVlZDIENUVShDb2RpbmcgVHJlZSBVbml0KSBwYXJzZXIK KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTnVvIE1pCisgKgorICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRo IEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQorICovCisKKyNpZm5kZWYgQVZDT0RFQ19WVkNfVlZDX0NUVV9ICisjZGVmaW5l IEFWQ09ERUNfVlZDX1ZWQ19DVFVfSAorCisjaW5jbHVkZSAibGliYXZjb2RlYy9jYWJhYy5oIgor I2luY2x1ZGUgImxpYmF2dXRpbC9tZW1faW50ZXJuYWwuaCIKKworI2luY2x1ZGUgInZ2Y2RlYy5o IgorCisjZGVmaW5lIE1BWF9DVFVfU0laRSAgICAgICAgICAgIDEyOAorCisjZGVmaW5lIE1BWF9D VV9TSVpFICAgICAgICAgICAgIE1BWF9DVFVfU0laRQorI2RlZmluZSBNSU5fQ1VfU0laRSAgICAg ICAgICAgICA0CisjZGVmaW5lIE1JTl9DVV9MT0cyICAgICAgICAgICAgIDIKKyNkZWZpbmUgTUFY X0NVX0RFUFRIICAgICAgICAgICAgNworCisjZGVmaW5lIE1BWF9QQVJUU19JTl9DVFUgICAgICAg ICgoTUFYX0NUVV9TSVpFID4+IE1JTl9DVV9MT0cyKSAqIChNQVhfQ1RVX1NJWkUgPj4gTUlOX0NV X0xPRzIpKQorCisjZGVmaW5lIE1JTl9QVV9TSVpFICAgICAgICAgICAgIDQKKworI2RlZmluZSBN QVhfVEJfU0laRSAgICAgICAgICAgICA2NAorI2RlZmluZSBNSU5fVFVfU0laRSAgICAgICAgICAg ICA0CisjZGVmaW5lIE1BWF9UVVNfSU5fQ1UgICAgICAgICAgIDY0CisKKyNkZWZpbmUgTUFYX1FQ ICAgICAgICAgICAgICAgICAgNjMKKworI2RlZmluZSBNQVhfUEJfU0laRSAgICAgICAgICAgICAx MjgKKyNkZWZpbmUgRURHRV9FTVVfQlVGRkVSX1NUUklERSAgKE1BWF9QQl9TSVpFICsgMzIpCisK KyNkZWZpbmUgQ0hST01BX0VYVFJBX0JFRk9SRSAgICAgMQorI2RlZmluZSBDSFJPTUFfRVhUUkFf QUZURVIgICAgICAyCisjZGVmaW5lIENIUk9NQV9FWFRSQSAgICAgICAgICAgIDMKKyNkZWZpbmUg TFVNQV9FWFRSQV9CRUZPUkUgICAgICAgMworI2RlZmluZSBMVU1BX0VYVFJBX0FGVEVSICAgICAg ICA0CisjZGVmaW5lIExVTUFfRVhUUkEgICAgICAgICAgICAgIDcKKyNkZWZpbmUgQklMSU5FQVJf RVhUUkFfQkVGT1JFICAgMAorI2RlZmluZSBCSUxJTkVBUl9FWFRSQV9BRlRFUiAgICAxCisjZGVm aW5lIEJJTElORUFSX0VYVFJBICAgICAgICAgIDEKKworI2RlZmluZSBNQVhfQ09OVFJPTF9QT0lO VFMgICAgICAzCisKKyNkZWZpbmUgQUZGSU5FX01JTl9CTE9DS19TSVpFICAgNAorCisjZGVmaW5l IE1SR19NQVhfTlVNX0NBTkRTICAgICAgIDYKKyNkZWZpbmUgTUFYX05VTV9ITVZQX0NBTkRTICAg ICAgNQorCisjZGVmaW5lIFNBT19QQURESU5HX1NJWkUgICAgICAgIDEKKworI2RlZmluZSBBTEZf UEFERElOR19TSVpFICAgICAgICA4CisjZGVmaW5lIEFMRl9CTE9DS19TSVpFICAgICAgICAgIDQK KworI2RlZmluZSBBTEZfQk9SREVSX0xVTUEgICAgICAgICAzCisjZGVmaW5lIEFMRl9CT1JERVJf Q0hST01BICAgICAgIDIKKworI2RlZmluZSBBTEZfVkJfUE9TX0FCT1ZFX0xVTUEgICA0CisjZGVm aW5lIEFMRl9WQl9QT1NfQUJPVkVfQ0hST01BIDIKKworI2RlZmluZSBBTEZfR1JBRElFTlRfU1RF UCAgICAgICAyCisjZGVmaW5lIEFMRl9HUkFESUVOVF9CT1JERVIgICAgIDIKKyNkZWZpbmUgQUxG X0dSQURJRU5UX1NJWkUgICAgICAgKChNQVhfQ1VfU0laRSArIEFMRl9HUkFESUVOVF9CT1JERVIg KiAyKSAvIEFMRl9HUkFESUVOVF9TVEVQKQorI2RlZmluZSBBTEZfTlVNX0RJUiAgICAgICAgICAg ICA0CisKKworLyoqCisgKiBWYWx1ZSBvZiB0aGUgbHVtYSBzYW1wbGUgYXQgcG9zaXRpb24gKHgs IHkpIGluIHRoZSAyRCBhcnJheSB0YWIuCisgKi8KKyNkZWZpbmUgU0FNUExFKHRhYiwgeCwgeSkg KCh0YWIpWyh5KSAqIHMtPnNwcy0+d2lkdGggKyAoeCldKQorI2RlZmluZSBTQU1QTEVfQ1RCKHRh YiwgeCwgeSkgKCh0YWIpWyh5KSAqIG1pbl9jYl93aWR0aCArICh4KV0pCisjZGVmaW5lIENUQih0 YWIsIHgsIHkpICgodGFiKVsoeSkgKiBmYy0+cHMucHBzLT5jdGJfd2lkdGggKyAoeCldKQorCitl bnVtIFNBT1R5cGUgeworICAgIFNBT19OT1RfQVBQTElFRCA9IDAsCisgICAgU0FPX0JBTkQsCisg ICAgU0FPX0VER0UsCit9OworCitlbnVtIFNBT0VPQ2xhc3MgeworICAgIFNBT19FT19IT1JJWiA9 IDAsCisgICAgU0FPX0VPX1ZFUlQsCisgICAgU0FPX0VPXzEzNUQsCisgICAgU0FPX0VPXzQ1RCwK K307CisKK3R5cGVkZWYgc3RydWN0IE5laWdoYm91ckF2YWlsYWJsZSB7CisgICAgaW50IGNhbmRf bGVmdDsKKyAgICBpbnQgY2FuZF91cDsKKyAgICBpbnQgY2FuZF91cF9sZWZ0OworICAgIGludCBj YW5kX3VwX3JpZ2h0OworICAgIGludCBjYW5kX3VwX3JpZ2h0X3NhcDsKK30gTmVpZ2hib3VyQXZh aWxhYmxlOworCitlbnVtIElzcFR5cGV7CisgICAgSVNQX05PX1NQTElULAorICAgIElTUF9IT1Jf U1BMSVQsCisgICAgSVNQX1ZFUl9TUExJVCwKK307CisKK3R5cGVkZWYgZW51bSBWVkNTcGxpdE1v ZGUgeworICAgIFNQTElUX05PTkUsCisgICAgU1BMSVRfVFRfSE9SLAorICAgIFNQTElUX0JUX0hP UiwKKyAgICBTUExJVF9UVF9WRVIsCisgICAgU1BMSVRfQlRfVkVSLAorICAgIFNQTElUX1FULAor fSBWVkNTcGxpdE1vZGU7CisKK3R5cGVkZWYgZW51bSBNdHNJZHggeworICAgIE1UU19EQ1QyX0RD VDIsCisgICAgTVRTX0RTVDdfRFNUNywKKyAgICBNVFNfRFNUN19EQ1Q4LAorICAgIE1UU19EQ1Q4 X0RTVDcsCisgICAgTVRTX0RDVDhfRENUOCwKK30gTXRzSWR4OworCit0eXBlZGVmIHN0cnVjdCBU cmFuc2Zvcm1CbG9jayB7CisgICAgdWludDhfdCBoYXNfY29lZmZzOworICAgIHVpbnQ4X3QgY19p ZHg7CisgICAgdWludDhfdCB0czsgICAgICAgICAgICAgLy8vPCAgdHJhbnNmb3JtX3NraXBfZmxh ZworICAgIGludCB4MDsKKyAgICBpbnQgeTA7CisKKyAgICBpbnQgdGJfd2lkdGg7CisgICAgaW50 IHRiX2hlaWdodDsKKyAgICBpbnQgbG9nMl90Yl93aWR0aDsKKyAgICBpbnQgbG9nMl90Yl9oZWln aHQ7CisKKyAgICBpbnQgbWF4X3NjYW5feDsKKyAgICBpbnQgbWF4X3NjYW5feTsKKyAgICBpbnQg bWluX3NjYW5feDsKKyAgICBpbnQgbWluX3NjYW5feTsKKworICAgIGludCBxcDsKKyAgICBpbnQg cmVjdF9ub25fdHNfZmxhZzsKKyAgICBpbnQgYmRfc2hpZnQ7CisgICAgaW50IGJkX29mZnNldDsK KworICAgIGludCAqY29lZmZzOworfSBUcmFuc2Zvcm1CbG9jazsKKwordHlwZWRlZiBlbnVtIFZW Q1RyZWVUeXBlIHsKKyAgICBTSU5HTEVfVFJFRSwKKyAgICBEVUFMX1RSRUVfTFVNQSwKKyAgICBE VUFMX1RSRUVfQ0hST01BLAorfSBWVkNUcmVlVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgVHJhbnNm b3JtVW5pdCB7CisgICAgaW50IHgwOworICAgIGludCB5MDsKKyAgICBpbnQgd2lkdGg7CisgICAg aW50IGhlaWdodDsKKworICAgIHVpbnQ4X3Qgam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnOyAgICAg ICAgICAgICAgICAgICAvLy88IHR1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworCisgICAgdWlu dDhfdCBjb2RlZF9mbGFnW1ZWQ19NQVhfU0FNUExFX0FSUkFZU107ICAgICAgICAgIC8vLzwgdHVf eV9jb2RlZF9mbGFnLCB0dV9jYl9jb2RlZF9mbGFnLCB0dV9jcl9jb2RlZF9mbGFnCisgICAgdWlu dDhfdCBuYl90YnM7CisgICAgVHJhbnNmb3JtQmxvY2sgdGJzW1ZWQ19NQVhfU0FNUExFX0FSUkFZ U107CisKKyAgICBzdHJ1Y3QgVHJhbnNmb3JtVW5pdCAqbmV4dDsgICAgICAgICAgICAgICAgICAg ICAgICAgLy8vPCBSZWZTdHJ1Y3QgcmVmZXJlbmNlCit9IFRyYW5zZm9ybVVuaXQ7CisKK3R5cGVk ZWYgZW51bSBQcmVkTW9kZSB7CisgICAgTU9ERV9JTlRFUiwKKyAgICBNT0RFX0lOVFJBLAorICAg IE1PREVfU0tJUCwKKyAgICBNT0RFX1BMVCwKKyAgICBNT0RFX0lCQywKK30gUHJlZE1vZGU7CisK K3R5cGVkZWYgc3RydWN0IE12IHsKKyAgICBpbnQgeDsgIC8vLzwgaG9yaXpvbnRhbCBjb21wb25l bnQgb2YgbW90aW9uIHZlY3RvcgorICAgIGludCB5OyAgLy8vPCB2ZXJ0aWNhbCBjb21wb25lbnQg b2YgbW90aW9uIHZlY3RvcgorfSBNdjsKKwordHlwZWRlZiBzdHJ1Y3QgTXZGaWVsZCB7CisgICAg REVDTEFSRV9BTElHTkVEKDQsIE12LCBtdilbMl07ICAvLy88IG12TDAsIHZ2TDEKKyAgICBpbnQ4 X3QgIHJlZl9pZHhbMl07ICAgICAgICAgICAgIC8vLzwgcmVmSWR4TDAsIHJlZklkeEwxCisgICAg dWludDhfdCBocGVsX2lmX2lkeDsgICAgICAgICAgICAvLy88IGhwZWxJZklkeAorICAgIHVpbnQ4 X3QgYmN3X2lkeDsgICAgICAgICAgICAgICAgLy8vPCBiY3dJZHgKKyAgICB1aW50OF90IHByZWRf ZmxhZzsKKyAgICB1aW50OF90IGNpaXBfZmxhZzsgICAgICAgICAgICAgIC8vLzwgY2lpcF9mbGFn Cit9IE12RmllbGQ7CisKK3R5cGVkZWYgc3RydWN0IERNVlJJbmZvIHsKKyAgICBERUNMQVJFX0FM SUdORUQoNCwgTXYsIG12KVsyXTsgIC8vLzwgbXZMMCwgdnZMMQorICAgIHVpbnQ4X3QgZG12cl9l bmFibGVkOworfSBETVZSSW5mbzsKKwordHlwZWRlZiBlbnVtIE1vdGlvbk1vZGVsSWRjIHsKKyAg ICBNT1RJT05fVFJBTlNMQVRJT04sCisgICAgTU9USU9OXzRfUEFSQU1TX0FGRklORSwKKyAgICBN T1RJT05fNl9QQVJBTVNfQUZGSU5FLAorfSBNb3Rpb25Nb2RlbElkYzsKKwordHlwZWRlZiBlbnVt IFByZWRGbGFnIHsKKyAgICBQRl9JTlRSQSA9IDB4MCwKKyAgICBQRl9MMCAgICA9IDB4MSwKKyAg ICBQRl9MMSAgICA9IDB4MiwKKyAgICBQRl9CSSAgICA9IDB4MywKK30gUHJlZEZsYWc7CisKK3R5 cGVkZWYgZW51bSBJbnRyYVByZWRNb2RlIHsKKyAgICBJTlRSQV9JTlZBTElEICAgPSAtMSwKKyAg ICBJTlRSQV9QTEFOQVIgICAgPSAwLAorICAgIElOVFJBX0RDLAorICAgIElOVFJBX0hPUlogICAg ICA9IDE4LAorICAgIElOVFJBX0RJQUcgICAgICA9IDM0LAorICAgIElOVFJBX1ZFUlQgICAgICA9 IDUwLAorICAgIElOVFJBX1ZESUFHICAgICA9IDY2LAorICAgIElOVFJBX0xUX0NDTE0gICA9IDgx LAorICAgIElOVFJBX0xfQ0NMTSwKKyAgICBJTlRSQV9UX0NDTE0KK30gSW50cmFQcmVkTW9kZTsK KwordHlwZWRlZiBzdHJ1Y3QgTW90aW9uSW5mbyB7CisgICAgTW90aW9uTW9kZWxJZGMgbW90aW9u X21vZGVsX2lkYzsgLy8vPCBNb3Rpb25Nb2RlbElkYworICAgIGludDhfdCAgIHJlZl9pZHhbMl07 ICAgICAgICAgICAgIC8vLzwgcmVmSWR4TDAsIHJlZklkeEwxCisgICAgdWludDhfdCAgaHBlbF9p Zl9pZHg7ICAgICAgICAgICAgLy8vPCBocGVsSWZJZHgKKyAgICB1aW50OF90ICBiY3dfaWR4OyAg ICAgICAgICAgICAgICAvLy88IGJjd0lkeAorICAgIFByZWRGbGFnIHByZWRfZmxhZzsKKworICAg IE12IG12WzJdW01BWF9DT05UUk9MX1BPSU5UU107CisKKyAgICBpbnQgbnVtX3NiX3gsIG51bV9z Yl95OworfSBNb3Rpb25JbmZvOworCit0eXBlZGVmIHN0cnVjdCBQcmVkaWN0aW9uVW5pdCB7Cisg ICAgdWludDhfdCBnZW5lcmFsX21lcmdlX2ZsYWc7CisgICAgdWludDhfdCBtbXZkX21lcmdlX2Zs YWc7CisgICAgLy9JbnRlclByZWRJZGMgaW50ZXJfcHJlZF9pZGM7CisgICAgdWludDhfdCBpbnRl cl9hZmZpbmVfZmxhZzsKKworICAgIC8vc3ViYmxvY2sgcHJlZGljdAorICAgIHVpbnQ4X3QgbWVy Z2Vfc3ViYmxvY2tfZmxhZzsKKworICAgIHVpbnQ4X3QgbWVyZ2VfZ3BtX2ZsYWc7CisgICAgdWlu dDhfdCBncG1fcGFydGl0aW9uX2lkeDsKKyAgICBNdkZpZWxkIGdwbV9tdlsyXTsKKworICAgIGlu dCBzeW1fbXZkX2ZsYWc7CisKKyAgICBNb3Rpb25JbmZvIG1pOworCisgICAgLy8gZm9yIHJlZ3Vs YXIgcHJlZGljdGlvbiBvbmx5CisgICAgdWludDhfdCBkbXZyX2ZsYWc7CisgICAgdWludDhfdCBi ZG9mX2ZsYWc7CisKKyAgICBpbnQxNl90IGRpZmZfbXZfeFsyXVtBRkZJTkVfTUlOX0JMT0NLX1NJ WkUgKiBBRkZJTkVfTUlOX0JMT0NLX1NJWkVdOyAgIC8vLzwgZGlmZk12TFgKKyAgICBpbnQxNl90 IGRpZmZfbXZfeVsyXVtBRkZJTkVfTUlOX0JMT0NLX1NJWkUgKiBBRkZJTkVfTUlOX0JMT0NLX1NJ WkVdOyAgIC8vLzwgZGlmZk12TFgKKyAgICBpbnQgY2JfcHJvZl9mbGFnWzJdOworfSBQcmVkaWN0 aW9uVW5pdDsKKwordHlwZWRlZiBzdHJ1Y3QgQ29kaW5nVW5pdCB7CisgICAgVlZDVHJlZVR5cGUg dHJlZV90eXBlOworICAgIGludCB4MDsKKyAgICBpbnQgeTA7CisgICAgaW50IGNiX3dpZHRoOwor ICAgIGludCBjYl9oZWlnaHQ7CisgICAgaW50IGNoX3R5cGU7CisgICAgaW50IGNxdF9kZXB0aDsK KworICAgIHVpbnQ4X3QgY29kZWRfZmxhZzsKKworICAgIHVpbnQ4X3Qgc2J0X2ZsYWc7CisgICAg dWludDhfdCBzYnRfaG9yaXpvbnRhbF9mbGFnOworICAgIHVpbnQ4X3Qgc2J0X3Bvc19mbGFnOwor CisgICAgaW50IGxmbnN0X2lkeDsKKyAgICBNdHNJZHggbXRzX2lkeDsKKworICAgIHVpbnQ4X3Qg YWN0X2VuYWJsZWRfZmxhZzsKKworICAgIHVpbnQ4X3QgaW50cmFfbHVtYV9yZWZfaWR4OyAgICAg ICAgICAgICAgICAgICAgIC8vLzwgSW50cmFMdW1hUmVmTGluZUlkeFtdW10KKyAgICB1aW50OF90 IGludHJhX21pcF9mbGFnOyAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGludHJhX21pcF9m bGFnCisgICAgdWludDhfdCBza2lwX2ZsYWc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8vPCBjdV9za2lwX2ZsYWc7CisKKyAgICAvL2ludGVyCisgICAgdWludDhfdCBjaWlwX2ZsYWc7 CisKKyAgICAvLyBJbmZlcnJlZCBwYXJhbWV0ZXJzCisgICAgZW51bSBJc3BUeXBlIGlzcF9zcGxp dF90eXBlOyAgICAgICAgICAgICAgICAgICAgLy8vPCBJbnRyYVN1YlBhcnRpdGlvbnNTcGxpdFR5 cGUKKworICAgIGVudW0gUHJlZE1vZGUgcHJlZF9tb2RlOyAgICAgICAgICAgICAgICAgICAgICAg IC8vLzwgUHJlZE1vZGUKKworICAgIGludCBudW1faW50cmFfc3VicGFydGl0aW9uczsKKworICAg IEludHJhUHJlZE1vZGUgaW50cmFfcHJlZF9tb2RlX3k7ICAgICAgICAgICAgICAgIC8vLzwgSW50 cmFQcmVkTW9kZVkKKyAgICBJbnRyYVByZWRNb2RlIGludHJhX3ByZWRfbW9kZV9jOyAgICAgICAg ICAgICAgICAvLy88IEludHJhUHJlZE1vZGVDCisgICAgaW50IG1pcF9jaHJvbWFfZGlyZWN0X2Zs YWc7ICAgICAgICAgICAgICAgICAgICAgLy8vPCBNaXBDaHJvbWFEaXJlY3RGbGFnCisKKyAgICBp bnQgYmRwY21fZmxhZ1tWVkNfTUFYX1NBTVBMRV9BUlJBWVNdOyAgICAgICAgICAvLy88IEJkcGNt RmxhZworCisgICAgaW50IGFwcGx5X2xmbnN0X2ZsYWdbVlZDX01BWF9TQU1QTEVfQVJSQVlTXTsg ICAgLy8vPCBBcHBseUxmbnN0RmxhZ1tdCisKKyAgICBzdHJ1Y3QgeworICAgICAgICBUcmFuc2Zv cm1Vbml0ICpoZWFkOyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUmVmU3RydWN0IHJlZmVy ZW5jZQorICAgICAgICBUcmFuc2Zvcm1Vbml0ICp0YWlsOyAgICAgICAgICAgICAgICAgICAgICAg IC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQorICAgIH0gdHVzOworCisgICAgaW50OF90IHFwWzRd OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBRcFksIFFw4oCyQ2IsIFFw 4oCyQ3IsIFFw4oCyQ2JDcgorCisgICAgUHJlZGljdGlvblVuaXQgcHU7CisKKyAgICBzdHJ1Y3Qg Q29kaW5nVW5pdCAqbmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFJlZlN0cnVjdCBy ZWZlcmVuY2UKK30gQ29kaW5nVW5pdDsKKwordHlwZWRlZiBzdHJ1Y3QgQ1RVIHsKKyAgICBDb2Rp bmdVbml0ICpjdXM7CisgICAgaW50IG1heF95WzJdW1ZWQ19NQVhfUkVGX0VOVFJJRVNdOworICAg IGludCBtYXhfeV9pZHhbMl07CisgICAgaW50IGhhc19kbXZyOworfSBDVFU7CisKK3R5cGVkZWYg c3RydWN0IFJlY29uc3RydWN0ZWRBcmVhIHsKKyAgICBpbnQgeDsKKyAgICBpbnQgeTsKKyAgICBp bnQgdzsKKyAgICBpbnQgaDsKK30gUmVjb25zdHJ1Y3RlZEFyZWE7CisKK3R5cGVkZWYgc3RydWN0 IFZWQ0NhYmFjU3RhdGUgeworICAgIHVpbnQxNl90IHN0YXRlWzJdOworICAgIHVpbnQ4X3QgIHNo aWZ0WzJdOworfSBWVkNDYWJhY1N0YXRlOworCisvLyBWVkNfQ09OVEVYVFMgbWF0Y2hlZCB3aXRo IFNZTlRBWF9FTEVNRU5UX0xBU1QsIGl0J3MgY2hlY2tlZCBieSBjYWJhY19pbml0X3N0YXRlLgor I2RlZmluZSBWVkNfQ09OVEVYVFMgMzc4Cit0eXBlZGVmIHN0cnVjdCBFbnRyeVBvaW50IHsKKyAg ICBpbnQ4X3QgcXBfeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IFFw WQorCisgICAgaW50IHN0YXRfY29lZmZbVlZDX01BWF9TQU1QTEVfQVJSQVlTXTsgICAgICAgICAg Ly8vPCBTdGF0Q29lZmYKKworICAgIFZWQ0NhYmFjU3RhdGUgY2FiYWNfc3RhdGVbVlZDX0NPTlRF WFRTXTsKKyAgICBDQUJBQ0NvbnRleHQgY2M7CisKKyAgICBpbnQgY3R1X3N0YXJ0OworICAgIGlu dCBjdHVfZW5kOworCisgICAgdWludDhfdCBpc19maXJzdF9xZzsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gZmlyc3QgcXVhbnRpemF0aW9uIGdyb3VwCisgICAgTXZGaWVsZCBobXZwW01B WF9OVU1fSE1WUF9DQU5EU107ICAgICAgICAgICAgICAgLy8vPCBIbXZwQ2FuZExpc3QKKyAgICBp bnQgICAgIG51bV9obXZwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IE51bUht dnBDYW5kCit9IEVudHJ5UG9pbnQ7CisKK3R5cGVkZWYgc3RydWN0IFZWQ0xvY2FsQ29udGV4dCB7 CisgICAgdWludDhfdCBjdGJfbGVmdF9mbGFnOworICAgIHVpbnQ4X3QgY3RiX3VwX2ZsYWc7Cisg ICAgdWludDhfdCBjdGJfdXBfcmlnaHRfZmxhZzsKKyAgICB1aW50OF90IGN0Yl91cF9sZWZ0X2Zs YWc7CisgICAgaW50ICAgICBlbmRfb2ZfdGlsZXNfeDsKKyAgICBpbnQgICAgIGVuZF9vZl90aWxl c195OworCisgICAgLyogKzcgaXMgZm9yIHN1YnBpeGVsIGludGVycG9sYXRpb24sICoyIGZvciBo aWdoIGJpdCBkZXB0aHMgKi8KKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGVkZ2Vf ZW11X2J1ZmZlcilbKE1BWF9QQl9TSVpFICsgNykgKiBFREdFX0VNVV9CVUZGRVJfU1RSSURFICog Ml07CisgICAgLyogVGhlIGV4dGVuZGVkIHNpemUgYmV0d2VlbiB0aGUgbmV3IGVkZ2UgZW11IGJ1 ZmZlciBpcyBhYnVzZWQgYnkgU0FPICovCisgICAgREVDTEFSRV9BTElHTkVEKDMyLCB1aW50OF90 LCBlZGdlX2VtdV9idWZmZXIyKVsoTUFYX1BCX1NJWkUgKyA3KSAqIEVER0VfRU1VX0JVRkZFUl9T VFJJREUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIGludDE2X3QsIHRtcClbTUFYX1BC X1NJWkUgKiBNQVhfUEJfU0laRV07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCBpbnQxNl90LCB0 bXAxKVtNQVhfUEJfU0laRSAqIE1BWF9QQl9TSVpFXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIs IGludDE2X3QsIHRtcDIpW01BWF9QQl9TSVpFICogTUFYX1BCX1NJWkVdOworICAgIERFQ0xBUkVf QUxJR05FRCgzMiwgdWludDhfdCwgY2lpcF90bXAxKVtNQVhfUEJfU0laRSAqIE1BWF9QQl9TSVpF ICogMl07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCB1aW50OF90LCBjaWlwX3RtcDIpW01BWF9Q Ql9TSVpFICogTUFYX1BCX1NJWkUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4 X3QsIHNhb19idWZmZXIpWyhNQVhfQ1RVX1NJWkUgKyAyICogU0FPX1BBRERJTkdfU0laRSkgKiBF REdFX0VNVV9CVUZGRVJfU1RSSURFICogMl07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCB1aW50 OF90LCBhbGZfYnVmZmVyX2x1bWEpWyhNQVhfQ1RVX1NJWkUgKyAyICogQUxGX1BBRERJTkdfU0la RSkgKiBFREdFX0VNVV9CVUZGRVJfU1RSSURFICogMl07CisgICAgREVDTEFSRV9BTElHTkVEKDMy LCB1aW50OF90LCBhbGZfYnVmZmVyX2Nocm9tYSlbKE1BWF9DVFVfU0laRSArIDIgKiBBTEZfUEFE RElOR19TSVpFKSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAgICBERUNMQVJFX0FM SUdORUQoMzIsIGludDMyX3QsIGFsZl9ncmFkaWVudF90bXApW0FMRl9HUkFESUVOVF9TSVpFICog QUxGX0dSQURJRU5UX1NJWkUgKiBBTEZfTlVNX0RJUl07CisKKyAgICBzdHJ1Y3QgeworICAgICAg ICBpbnQgc2J0X251bV9mb3VydGhzX3RiMDsgICAgICAgICAgICAgICAgLy8vPCBTYnROdW1Gb3Vy dGhzVGIwCisKKyAgICAgICAgdWludDhfdCBpc19jdV9xcF9kZWx0YV9jb2RlZDsgICAgICAgICAg IC8vLzwgSXNDdVFwRGVsdGFDb2RlZAorICAgICAgICBpbnQgY3VfcWdfdG9wX2xlZnRfeDsgICAg ICAgICAgICAgICAgICAgLy8vPCBDdVFnVG9wTGVmdFgKKyAgICAgICAgaW50IGN1X3FnX3RvcF9s ZWZ0X3k7ICAgICAgICAgICAgICAgICAgIC8vLzwgQ3VRZ1RvcExlZnRZCisgICAgICAgIGludCBp c19jdV9jaHJvbWFfcXBfb2Zmc2V0X2NvZGVkOyAgICAgICAvLy88IElzQ3VDaHJvbWFRcE9mZnNl dENvZGVkCisgICAgICAgIGludCBjaHJvbWFfcXBfb2Zmc2V0WzNdOyAgICAgICAgICAgICAgICAv Ly88IEN1UXBPZmZzZXRDYiwgQ3VRcE9mZnNldENyLCBDdVFwT2Zmc2V0Q2JDcgorCisgICAgICAg IGludCBpbmZlcl90dV9jYmZfbHVtYTsgICAgICAgICAgICAgICAgICAvLy88IEluZmVyVHVDYmZM dW1hCisgICAgICAgIGludCBwcmV2X3R1X2NiZl95OyAgICAgICAgICAgICAgICAgICAgICAvLy88 IHByZXZUdUNiZlk7CisKKyAgICAgICAgaW50IGxmbnN0X2RjX29ubHk7ICAgICAgICAgICAgICAg ICAgICAgIC8vLzwgTGZuc3REY09ubHkKKyAgICAgICAgaW50IGxmbnN0X3plcm9fb3V0X3NpZ19j b2VmZl9mbGFnOyAgICAgIC8vLzwgTGZuc3RaZXJvT3V0U2lnQ29lZmZGbGFnCisKKyAgICAgICAg aW50IG10c19kY19vbmx5OyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgTXRzRGNPbmx5Cisg ICAgICAgIGludCBtdHNfemVyb19vdXRfc2lnX2NvZWZmX2ZsYWc7ICAgICAgICAvLy88IE10c1pl cm9PdXRTaWdDb2VmZkZsYWc7CisgICAgfSBwYXJzZTsKKworICAgIHN0cnVjdCB7CisgICAgICAg IC8vIGxtY3MgY2FjaGUsIGZvciByZWNvbiBvbmx5CisgICAgICAgIGludCBjaHJvbWFfc2NhbGU7 CisgICAgICAgIGludCB4X3ZwZHU7CisgICAgICAgIGludCB5X3ZwZHU7CisgICAgfSBsbWNzOwor CisgICAgQ29kaW5nVW5pdCAqY3U7CisgICAgUmVjb25zdHJ1Y3RlZEFyZWEgcmFzWzJdW01BWF9Q QVJUU19JTl9DVFVdOworICAgIGludCBudW1fcmFzWzJdOworCisgICAgTmVpZ2hib3VyQXZhaWxh YmxlIG5hOworCisjZGVmaW5lIEJPVU5EQVJZX0xFRlRfU0xJQ0UgICAgICgxIDw8IDApCisjZGVm aW5lIEJPVU5EQVJZX0xFRlRfVElMRSAgICAgICgxIDw8IDEpCisjZGVmaW5lIEJPVU5EQVJZX1VQ UEVSX1NMSUNFICAgICgxIDw8IDIpCisjZGVmaW5lIEJPVU5EQVJZX1VQUEVSX1RJTEUgICAgICgx IDw8IDMpCisgICAgLyogcHJvcGVydGllcyBvZiB0aGUgYm91bmRhcnkgb2YgdGhlIGN1cnJlbnQg Q1RCIGZvciB0aGUgcHVycG9zZXMKKyAgICAgKiBvZiB0aGUgZGVibG9ja2luZyBmaWx0ZXIgKi8K KyAgICBpbnQgYm91bmRhcnlfZmxhZ3M7CisKKyAgICBTbGljZUNvbnRleHQgKnNjOworICAgIFZW Q0ZyYW1lQ29udGV4dCAqZmM7CisgICAgRW50cnlQb2ludCAqZXA7CisgICAgaW50ICpjb2VmZnM7 Cit9IFZWQ0xvY2FsQ29udGV4dDsKKwordHlwZWRlZiBzdHJ1Y3QgVlZDQWxsb3dlZFNwbGl0IHsK KyAgICBpbnQgcXQ7CisgICAgaW50IGJ0djsKKyAgICBpbnQgYnRoOworICAgIGludCB0dHY7Cisg ICAgaW50IHR0aDsKK30gVlZDQWxsb3dlZFNwbGl0OworCit0eXBlZGVmIHN0cnVjdCBTQU9QYXJh bXMgeworICAgIGludCBvZmZzZXRfYWJzWzNdWzRdOyAgICAgICAgICAgICAgIC8vLzwgc2FvX29m ZnNldF9hYnMKKyAgICBpbnQgb2Zmc2V0X3NpZ25bM11bNF07ICAgICAgICAgICAgICAvLy88IHNh b19vZmZzZXRfc2lnbgorCisgICAgdWludDhfdCBiYW5kX3Bvc2l0aW9uWzNdOyAgICAgICAgICAg Ly8vPCBzYW9fYmFuZF9wb3NpdGlvbgorCisgICAgaW50IGVvX2NsYXNzWzNdOyAgICAgICAgICAg ICAgICAgICAgLy8vPCBzYW9fZW9fY2xhc3MKKworICAgIGludDE2X3Qgb2Zmc2V0X3ZhbFszXVs1 XTsgICAgICAgICAgIC8vLzwgU2FvT2Zmc2V0VmFsCisKKyAgICB1aW50OF90IHR5cGVfaWR4WzNd OyAgICAgICAgICAgICAgICAvLy88IHNhb190eXBlX2lkeAorfSBTQU9QYXJhbXM7CisKK3R5cGVk ZWYgc3RydWN0IEFMRlBhcmFtcyB7CisgICAgdWludDhfdCBjdGJfZmxhZ1szXTsgICAgICAgICAg ICAgICAgLy8vPCBhbGZfY3RiX2ZsYWdbXQorICAgIHVpbnQ4X3QgY3RiX2ZpbHRfc2V0X2lkeF95 OyAgICAgICAgIC8vLzwgQWxmQ3RiRmlsdFNldElkeFkKKyAgICB1aW50OF90IGFsZl9jdGJfZmls dGVyX2FsdF9pZHhbMl07ICAvLy88IGFsZl9jdGJfZmlsdGVyX2FsdF9pZHhbXQorICAgIHVpbnQ4 X3QgY3RiX2NjX2lkY1syXTsgICAgICAgICAgICAgIC8vLzwgYWxmX2N0Yl9jY19jYl9pZGMsIGFs Zl9jdGJfY2NfY3JfaWRjCisKKyAgICB1aW50OF90IGFwcGxpZWRbM107Cit9IEFMRlBhcmFtczsK Kwordm9pZCBmZl92dmNfZXBfaW5pdF9zdGF0X2NvZWZmKEVudHJ5UG9pbnQgKmVwLCBpbnQgYml0 X2RlcHRoLCBpbnQgcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnKTsKKwor I2VuZGlmIC8vIEFWQ09ERUNfVlZDX1ZWQ19DVFVfSApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92 dmMvdnZjZGVjLmggYi9saWJhdmNvZGVjL3Z2Yy92dmNkZWMuaAppbmRleCBjZGU5YjJjOTY1Li4x NWVjZTJhODNjIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3Z2Yy92dmNkZWMuaAorKysgYi9saWJh dmNvZGVjL3Z2Yy92dmNkZWMuaApAQCAtODAsNiArODAsNyBAQCB0eXBlZGVmIHN0cnVjdCBWVkNG cmFtZSB7CiAKIHR5cGVkZWYgc3RydWN0IFNsaWNlQ29udGV4dCB7CiAgICAgaW50IHNsaWNlX2lk eDsKKyAgICBWVkNTSCBzaDsKICAgICBzdHJ1Y3QgRW50cnlQb2ludCAqZXBzOwogICAgIGludCBu Yl9lcHM7CiAgICAgUmVmUGljTGlzdCAqcnBsOwpAQCAtOTUsNiArOTYsOCBAQCB0eXBlZGVmIHN0 cnVjdCBWVkNGcmFtZUNvbnRleHQgewogICAgIHN0cnVjdCBBVkZyYW1lICpmcmFtZTsKICAgICBz dHJ1Y3QgQVZGcmFtZSAqb3V0cHV0X2ZyYW1lOwogCisgICAgVlZDRnJhbWVQYXJhbVNldHMgcHM7 CisKICAgICBTbGljZUNvbnRleHQgICoqc2xpY2VzOwogICAgIGludCBuYl9zbGljZXM7CiAgICAg aW50IG5iX3NsaWNlc19hbGxvY2F0ZWQ7CkBAIC0xMTQsNiArMTE3LDEwIEBAIHR5cGVkZWYgc3Ry dWN0IFZWQ0ZyYW1lQ29udGV4dCB7CiAgICAgc3RydWN0IHsKICAgICAgICAgaW50MTZfdCAqc2xp Y2VfaWR4OwogCisgICAgICAgIERCUGFyYW1zICAqZGVibG9jazsKKyAgICAgICAgc3RydWN0IFNB T1BhcmFtcyAqc2FvOworICAgICAgICBzdHJ1Y3QgQUxGUGFyYW1zICphbGY7CisKICAgICAgICAg aW50ICAgICAqY2JfcG9zX3hbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBDYlBv c1hbXVtdW10KICAgICAgICAgaW50ICAgICAqY2JfcG9zX3lbMl07ICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8vPCBDYlBvc1lbXVtdW10KICAgICAgICAgdWludDhfdCAqY2Jfd2lkdGhbMl07 ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBDYldpZHRoW11bXVtdCi0tIAoyLjI1LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1k ZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcu b3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQg bGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRo IHN1YmplY3QgInVuc3Vic2NyaWJlIi4K