From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id AA4884D0E1 for <ffmpegdev@gitmailbox.com>; Wed, 19 Mar 2025 21:20:41 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 64367687B53; Wed, 19 Mar 2025 23:20:38 +0200 (EET) Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02olkn2103.outbound.protection.outlook.com [40.92.49.103]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 31094687A69 for <ffmpeg-devel@ffmpeg.org>; Wed, 19 Mar 2025 23:20:31 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yMH5t+l3h1uUacfskKSd6cXtCjpsH44qNTHAowWUUVn49lAbizcAbyHWiqkfC8SITZFL88w4SZhBJqxMhMeKeiGiQKNB9ufe5NA2k+UDiIPZick3Yg1TfMuEsgrAdHwT/haKHPuVHuTJxeEzNwxZuMWup7jZaQVADd4Hwz1pNyS8FeW+RdGMABje7s2PVRb3T4mU/e8PHShUKu3xyTQ/JMaQhGvpJKXBbjPZaixNzV8y9I+8gTNqw0u8xz//WglayMchbUFduefOK1nT4rAAZXbm76ESlVgsJ8cNEfvc2vAPzQj/WlqSZrzz3ZjwGi4WY6xT0n7/9pCbu8xBbNyR4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6d+9C7uSgMYQbcxIzd/TvY8npc+HzWBoXwUYOYiSIqw=; b=hic0r1mXtyt2Ld0Dz49Td884nIEPQUMJjwNUBFDf8jh19600XmXCWlQvTrviVSyehQMGT20z20vEeoDssVuQOnDRFXSfcmjD5CaCVY5uCXKgMiQWrfWzAxLeBKCj7u1R/2l8wI8BJEHprTlFLnBZs3oMhS02CH4ZUaTtTihlj8jLdFtXSWjKm/dC92siqQQBJRfGBGdVNFgORILFYEJyJB0XHSgoy+h7FsGxm/Vjept6CCGRFZos3QW7rVf5Reg/xdm9GXbm8fuljunqjcUiaco6PdtIandri+20M9IfvWYNbnm4LeKAsfFsMn2GJ5TyoqtoPcAkPblUyJcPzsQhYA== 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=6d+9C7uSgMYQbcxIzd/TvY8npc+HzWBoXwUYOYiSIqw=; b=PDMkJPrGpMVEMVBESjfLKvvwd/gGMdTTmgHE51K7QWZWwsN4dPWrMzUJVuswZeXth1NqgP13J1tHt49ZXaFQPUa4ZhMQFuuLvgsReNeYw9MlEpjSvrKqZ9R19fKcO8CghtGMfcV2hnbQyEqniLJHhv3hgTJ9bAz8BaIh8W0LAVWg/+YzWTWyssXR4JOhQ2F4nDkSnPSydjS0OqX+ZikPcuPZAJLCybjnhDg6DQh1O0FPwi21gU0utWJDiXfu1ylC/xl4U5h/+YPG3eghtAQQgY6qNT0YAdRxRuwdEbHhQKosF+GeCZTbo6EQucIAuUcdtJApLdgDP0SBiqLMq1pUmQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by GV2P250MB0850.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:ae::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.33; Wed, 19 Mar 2025 21:20:25 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%5]) with mapi id 15.20.8534.034; Wed, 19 Mar 2025 21:20:25 +0000 Content-Type: multipart/mixed; boundary="------------9QiYbQBBvMxpoUafndAf0vI8" Message-ID: <AS8P250MB07446BD9DA9523CB9EA6DDD88FD92@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> Date: Wed, 19 Mar 2025 22:20:22 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <AS8P250MB0744A8DBC25ABEC4F82344B58FD92@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> Content-Language: en-US From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> In-Reply-To: <AS8P250MB0744A8DBC25ABEC4F82344B58FD92@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> X-ClientProxiedBy: ZR2P278CA0055.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <33ca4633-a826-442f-8243-095f16a1c477@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|GV2P250MB0850:EE_ X-MS-Office365-Filtering-Correlation-Id: 50c3e19a-c5ce-48de-567b-08dd672bdcc6 X-Microsoft-Antispam: BCL:0; ARA:14566002|19110799003|15080799006|5072599009|7092599003|6092099012|461199028|12121999004|8060799006|1602099012|4302099013|440099028|3412199025|20055399003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SEJ3T0ZOaGtzbXB3by82UFYySFpNRjlIRmM5ekRyVDIvQ2prSmgrOVhkRnBa?= =?utf-8?B?b0pBa21nT1JlY3JPSGpVVUtQakFQMXRwWEJxL3JPVVdqSG5SVHdGdzd0M0li?= =?utf-8?B?VXdtR25XWUJHR2FudXRpTkVEb0RreXkxZEw3YTFnajl2MkNMRlQzN3I0Ymkx?= =?utf-8?B?SVNxSld5anNtOVZvUThxeS9jT24xWmNLYnd2Z3daVXdmTGNFaVhqSXhLbEt4?= =?utf-8?B?c2NDenFOUytoRFkyOStKTi8weWtORmJsdjVuNk5NMkxnb1puajlBU2tBTWgy?= =?utf-8?B?c2lSNVdPNElXTXpVdVVRdWVrU2VwbDlNTUlsekdNc2R4TEYyREFOVDlsYTZS?= =?utf-8?B?UmhNNmxFQmVqS1RZczJ3dFRxYVRBa3J6V2VJVkZsck4ySlJsYjMyOWZUemhn?= =?utf-8?B?Y0VpTHFZK1pNSVR1c1NjWVl6T0pqSTVKMkQwd2JoY1dEdEo2MFVYcGk4K2Fi?= =?utf-8?B?M256TGdsWHFhNDY0TlVYY1J5aGgvUjU4ZHM1ekdTcjZXVytOWjBWeTE5OHE0?= =?utf-8?B?QVpmQ2hKbGdwN0laRzNaWC9tRU9za1M3ayt0LzJtbFVpUENGeTZ5UEtoVU41?= =?utf-8?B?RG9SR29qTnRORGJ2eXlwdFpmVXUzOVlXcU9ndHNlcXNua0s4dnFzNGtYOGFj?= =?utf-8?B?aW9DV09wSG9YYW1zT2ttNldnWFVpUUdiUlRLTFh3QXRHNFZEM0Y5SDFkY3Yv?= =?utf-8?B?NE5XSldLOHlvWFowNGVWZGZQSjRpZW9GR1lrSmtyNWV2djFiRUFMYlM3RzZG?= =?utf-8?B?QTUwY1pIL2hQNzBUUGNyMm1Bd3FsbDRteDcwaVJ5MGlEaVhEQktRQ280NHdV?= =?utf-8?B?c3hDemR5MHNVZWsyNVpxa2tFZ2ZweUF3VUlJdmdoNkgxVklubVZWMXg0ejEr?= =?utf-8?B?aWpuWEdWQXNWdHdLc1dpSVh4TVpwRGM0R2xpdks5WHYxanlQa0E0dU1OdzhV?= =?utf-8?B?djRvM1FKa09sM2NHRUxkNzdYNE1BbmpHa1IvcVNNN3NLd2F4QTUrbmlNcnlr?= =?utf-8?B?Z0hTVmRhU21MZlRSRXh6anBKbUVlT0JRZG5UYVg3Y21pY2JmWFVCR3BoTGFJ?= =?utf-8?B?R1QwUGlFUHVpbWsvanhWWjlKYzJ4R1hhTmljeEpMdWtDSVZzNkFqcTZLNEJG?= =?utf-8?B?d1BSc0dOYUExUWt0TDNzdlk1SlhTRFhvc3p3aXpLcUJwZzhMQ1FVU2puWGZ1?= =?utf-8?B?QlFVajlIbm1sSXk5d25xbnlwNTdjOFNPMHF1YlVGVzVyQzFMTzlFbjY1T0l5?= =?utf-8?B?UWxhWThkQjNhQ291YjBQWUpGVlMvU0FyenRXem96a1BvN0JzUURET0F4VDhK?= =?utf-8?B?ZXJmTXl3V0JEN2FrMFMzOFE3aEhnZnJqUmdIQ2ZLVHZWZThSMWM3dkhhK3Rr?= =?utf-8?B?eFBCSG5tU3N6SlRvOVNvVWdSbFJ2VjJFYjJ5SEJ1bW9sQTIvR3FaejB5WUxh?= =?utf-8?B?b3VUMjdTMTFMTWRVOFovVnNwb3hBcCtEazk1cDdmZnp3YXBxYUpTWnNGb0Jr?= =?utf-8?B?UHNwTTBpSEJsL3R2TTNwK0xaS2JyZGNVSGMvUDdMNVBpWnplTm0rYzhWYldk?= =?utf-8?B?aHM2Sjh4Q2d5QWxoRTBtcEhFbmVueDlHWGl5TGVtWGZvSFZUWGY1WkJLS0Rv?= =?utf-8?B?WHlaSGNnR3VDNVR4eGJKc0s1Ynh0ZmdrQ0syYVc0d0UzU09QeVVPL2F0djEx?= =?utf-8?B?VDQ5TW9wODV5RGZxbEZyOVhNQWp4WTc4cG1CdmdRTzF6ekdTTzRpaE41a3NF?= =?utf-8?B?WnpHbFdpZXFiWGRZakRRYzZ6ZkV6SFZhb1hOd3ZUNklPWVluVWYrcWVzKzVp?= =?utf-8?B?Zi9jbHZ3YUlLOGFCZnB4dz09?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UjJKQ2ZISktTVzVIcXZia3VyM0ZNL0lvQlBENVJaMUtZL2JCVHRWQXVtZHZJ?= =?utf-8?B?R2toYVdnOUpWOThrR2pYcEZ0VHl4cU8vMkF6SVJNL1E0azMxQkNRcnVUeFB5?= =?utf-8?B?bmV3NFZ4Zll0R1B5OTVEek5OUHVtRmovL0ZMMXlMZ0JIS2hYRHJNamdaMCts?= =?utf-8?B?TERGRXFyc09URzF2dFFOZFhIYmdFRU50dGtkRERpeVN5SWRZQzU1MlRRRkty?= =?utf-8?B?c2xJN2x0blRFWHprZGl6cCsvMjUzTGhPYjZkWXNseFdvQUJOVFAvSVF6alNp?= =?utf-8?B?Tkc2dGxGNGg4ZlRCOUY1bE56Wno1THhuOHI4VnNnOStORUk4SXI4UFBxRGdj?= =?utf-8?B?bU5Ca29KY3dtOHZJWnpUczIrMEpCQit3eithQTVnWDRBZlhRcWM4S1lwd2hp?= =?utf-8?B?bkJWK2hzVjVuS2FSdGdlUVN2b0ZscDRXcnVKNzZkSmdkMHM4enpJZ1FPanJx?= =?utf-8?B?S1hyK2FCQThHcHZ0OTNZNUZRNkh2bE9IMXR4cVdPOVluV3UzRWZRMWJmQkJ3?= =?utf-8?B?aloyYXgwOE9INWcvTzVpSFJ6bTRSNTNRTk45L2p2dFJrbGhkdWR4VmVRU1Mx?= =?utf-8?B?UnVxSWpoa3JNbk1iRGZRQmhWTVN1NG84NmFVVE9XZ0s0TUJQemwvanU0Tno5?= =?utf-8?B?OGNtcEZhS1J1VFdBcXBra2p2c29Dcy94QWlWdGhtNGlJdllVaVJwSEI2QkJY?= =?utf-8?B?Z2FJaWpKbnh1eEVZVE9iVHRSeW9XNUUrRm9oTFhpRFVuWXh1cWtkS0d3VEww?= =?utf-8?B?bVhUMWo0V1JiRThHYU1rWFVRcmc2UzZLTW5BejF4NTE2WWtWRUFKT0tCS0dm?= =?utf-8?B?UEhUUnM4NVg1S1RjZXI5WjVpU0kyaTFCK1NBVmFQWlZaNHlrTjZtem56ODFC?= =?utf-8?B?Z0dGWFpzUVNtZmRQbm9kaytoZkxYTFlTbDI5YjZJdlVjMTRPU3NJQ084dFhQ?= =?utf-8?B?aGNyY3JXOTR0bkNJYjZHZ2NoNnRMNDRPQTRnNmNhYytiNkhKZTNxdlBsb293?= =?utf-8?B?ZHpWekpPRHpTYjJqZnc2dTY4QUV3NWo2WllQeGFpdWdhTG1ZMUJvWXFVOGFt?= =?utf-8?B?NXY4Wm9zeGNwaFdCK0FvOUozRlNpTVBEeWVqU1hNRDVVbDV1ejlWUUlGZ0tX?= =?utf-8?B?aXpnVmZ4UTdJdnFwUzEzdUIxTTFzY1kzK2NLaWRmckFmNDFiYk81bCs2WTZy?= =?utf-8?B?QktvQWliU29oYUduZm54djB2Nk1CM0MwOEk0dy9uNi9iYjZrMjIyTTlIcEtv?= =?utf-8?B?WHZ5Vnlsa0JiWTZscmdxbXA3SGVJM0d2T05KU0lwUnRIMWZsSjdMNzM5K0tU?= =?utf-8?B?QWpseGtBcnp5RDB3T1d0bURZV1VudGZ3RXdmbWd5dG92QUVTOGtoOWtGMDVh?= =?utf-8?B?K2FId2xRMCtXUnRXc1ZuOFpDMnRWbDQzYXA4U0dlczRWMlcwT2d6d2wrdklM?= =?utf-8?B?UllLam9IVFBDenNMNlVhSm90Yll3ek1KYjkxc2F5VHlZSjQzai9TUzdKcHZp?= =?utf-8?B?Y2lJZ2dCR2lrcFVDczR3a1JGdkFVU3BmSjFndFd4ZEg2dzF3QXZUdmFOM1FX?= =?utf-8?B?K1FwdnF0c0xRd293UW41bVdFQkdueTNIU1R4VmxXREFPYlJTbEhUaTRoTHFR?= =?utf-8?B?M2Q2empLc1NOaXFZVTgxZkZFRWJkOG1QT3JrVDFzc2RjOThNSkhZaWQxR2cv?= =?utf-8?B?T1lIMTZTRkNKTWdzaTI3VVRURitrRHRtclh6UmJjNWVDc2xiQ2dMeWtBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50c3e19a-c5ce-48de-567b-08dd672bdcc6 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Mar 2025 21:20:24.8239 (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: GV2P250MB0850 Subject: Re: [FFmpeg-devel] [PATCH 01/77] avcodec/mpegvideo(_enc)?: Mark init, close functions as, av_cold X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/AS8P250MB07446BD9DA9523CB9EA6DDD88FD92@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Andreas Rheinhardt: > First part of a patchset; the second part will be sent separately > because the complete set crosses the ML thresholds ("Message body is too > big: 1731572 bytes with a limit of 1000 KB"). A complete branch can be > found here: https://github.com/mkver/FFmpeg/tree/mpvenc > > - Andreas And here is the remainder. - Andreas --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0063-avcodec-mpegvideoenc-Add-MPVEncContext.patch" Content-Disposition: attachment; filename="0063-avcodec-mpegvideoenc-Add-MPVEncContext.patch" Content-Transfer-Encoding: base64 RnJvbSA0ZWVjMmEzNjU0NTA5NzQxZTdhNDZmYjc4OGU0YjMwMDRhNWYwNWNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAwODoxMTowMSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNjMvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvZW5jOiBBZGQgTVBWRW5jQ29udGV4 dAoKTWFueSBvZiB0aGUgZmllbGRzIG9mIE1wZWdFbmNDb250ZXh0ICh3aGljaCBpcyBhbHNvIHVz ZWQgYnkgZGVjb2RlcnMpCmFyZSBhY3R1YWxseSBvbmx5IHVzZWQgYnkgZW5jb2RlcnMuIFRoZXJl Zm9yZSB0aGlzIGNvbW1pdCBhZGRzCmEgbmV3IGVuY29kZXItb25seSBzdHJ1Y3R1cmUgYW5kIG1v dmVzIGFsbCBvZiB0aGUgZW5jb2Rlci1vbmx5CmZpZWxkcyB0byBpdCBleGNlcHQgZm9yIHRob3Nl IHdoaWNoIHJlcXVpcmUgbW9yZSBleHBsaWNpdApzeW5jaHJvbmlzYXRpb24gYmV0d2VlbiB0aGUg bWFpbiBzbGljZSBjb250ZXh0IGFuZCB0aGUgb3RoZXIKc2xpY2UgY29udGV4dHMuIFRoaXMgc3lu Y2hyb25pc2F0aW9uIGlzIGN1cnJlbnRseSBtYWlubHkgcHJvdmlkZWQKYnkgZmZfdXBkYXRlX3Ro cmVhZF9jb250ZXh0KCkgd2hpY2ggc2ltcGx5IGNvcGllcyBtb3N0IG9mCnRoZSBtYWluIHNsaWNl IGNvbnRleHQgb3ZlciB0aGUgb3RoZXIgc2xpY2UgY29udGV4dHMuIEZpZWxkcwp3aGljaCBhcmUg bW92ZWQgdG8gdGhlIG5ldyBNUFZFbmNDb250ZXh0IG5vIGxvbmdlciBwYXJ0aWNpcGF0ZQppbiB0 aGlzICh3aGljaCBpcyBkZXNpcmVkLCBiZWNhdXNlIGl0IGlzIGhvcnJpYmxlIGFuZCBmb3IgdGhl CmZpZWxkcyBiKSBiZWxvdyB3YXN0ZWZ1bCkgd2hpY2ggbWVhbnMgdGhhdCBzb21lIGZpZWxkcyBj YW4gb25seQpiZSBtb3ZlZCB3aGVuIGV4cGxpY2l0IHN5bmNocm9uaXNhdGlvbiBjb2RlIGlzIGFk ZGVkIGluIGxhdGVyIGNvbW1pdHMuCgpNb3JlIGV4cGxpY2l0bHksIHRoaXMgY29tbWl0IG1vdmVz IHRoZSBmb2xsb3dpbmcgZmllbGRzOgphKSBGaWVsZHMgbm90IGNvcGllZCBieSBmZl91cGRhdGVf ZHVwbGljYXRlX2NvbnRleHQoKToKZGN0X2Vycm9yX3N1bSBhbmQgZGN0X2NvdW50OyB0aGUgZm9y bWVyIGRvZXMgbm90IG5lZWQgc3luY2hyb25pc2F0aW9uLAp0aGUgbGF0dGVyIGlzIHN5bmNocm9u aXNlZCBpbiBtZXJnZV9jb250ZXh0X2FmdGVyX2VuY29kZSgpLgpiKSBGaWVsZHMgd2hpY2ggZG8g bm90IGNoYW5nZSBhZnRlciBpbml0aWFsaXNhdGlvbiAodGhlc2UgZmllbGRzCmNvdWxkIGFsc28g YmUgcHV0IGludG8gTVBWTWFpbkVuY0NvbnRleHQgYXQgdGhlIGNvc3Qgb2YKYW4gaW5kaXJlY3Rp b24gdG8gYWNjZXNzIHRoZW0pOiBsYW1iZGFfdGFibGUsIGFkYXB0aXZlX3F1YW50LAp7bHVtYSxj aHJvbWF9X2VsaW1fdGhyZXNob2xkLCBuZXdfcGljLCBmZHNwLCBtcHZlbmNkc3AsIHBkc3AsCntw LGJfZm9ydyxiX2JhY2ssYl9iaWRpcl9mb3J3LGJfYmlkaXJfYmFjayxiX2RpcmVjdCxiX2ZpZWxk fV9tdl90YWJsZSwKW3BiXV9maWVsZF9zZWxlY3RfdGFibGUsIG1iX3t0eXBlLHZhcixtZWFufSwg bWNfbWJfdmFyLCB7bWluLG1heH1fcWNvZWZmLAp7aW50ZXIsaW50cmF9X3F1YW50X2JpYXMsIGFj X2VzY19sZW5ndGgsIHRoZSAqX3ZsY19sZW5ndGggZmllbGRzLAp0aGUgcV97aW50cmEsaW50ZXIs Y2hyb21hX2ludHJhfV9tYXRyaXh7LDE2fSwgZGN0X29mZnNldCwgbWJfaW5mbywKbWpwZWdfY3R4 LCBydHBfbW9kZSwgcnRwX3BheWxvYWRfc2l6ZSwgZW5jb2RlX21iLCBhbGwgZnVuY3Rpb24KcG9p bnRlcnMsIG1wdl9mbGFncywgcXVhbnRpemVyX25vaXNlX3NoYXBpbmcsCmZyYW1lX3JlY29uc3Ry dWN0aW9uX2JpdGZpZWxkLCBlcnJvcl9yYXRlIGFuZCBpbnRyYV9wZW5hbHR5LgpjKSBGaWVsZHMg d2hpY2ggYXJlIGFscmVhZHkgKHJlKXNldCBleHBsaWNpdGx5OiBUaGUgUHV0Qml0Q29udGV4dHMK cGIsIHRleF9wYiwgcGIyOyBkcXVhbnQsIHNraXBkY3QsIGVuY29kaW5nX2Vycm9yLCB0aGUgc3Rh dGlzdGljcwpmaWVsZHMge212LGlfdGV4LHBfdGV4LG1pc2MsbGFzdH1fYml0cyBhbmQgaV9jb3Vu dDsgbGFzdF9tdl9kaXIsCmVzY19wb3MgKHJlc2V0IHdoZW4gd3JpdGluZyB0aGUgaGVhZGVyKS4K ZCkgRmllbGRzIHdoaWNoIGFyZSBvbmx5IHVzZWQgYnkgZW5jb2RlcnMgbm90IHN1cHBvcnRpbmcg c2xpY2UKdGhyZWFkaW5nIGZvciB3aGljaCBzeW5jaHJvbmlzYXRpb24gZG9lc24ndCBtYXR0ZXI6 IGVzYzNfbGV2ZWxfbGVuZ3RoCmFuZCB0aGUgcmVtYWluaW5nIG1iX2luZm8gZmllbGRzLgplKSBj b2RlZF9zY29yZTogVGhpcyBmaWVsZCBpcyBvbmx5IHJlYWxseSB1c2VkIHdoZW4gRkZfTVBWX0ZM QUdfQ0JQX1JECmlzIHNldCAod2hpY2ggaW1wbGllcyB0cmVsbGlzKSBhbmQgZXZlbiB0aGVuIGl0 IGlzIG9ubHkgdXNlZCBmb3IKbm9uLWludHJhIGJsb2Nrcy4gRm9yIHRoZXNlIGJsb2NrcyBkY3Rf cXVhbnRpemVfdHJlbGxpc19jKCkgZWl0aGVyCnNldHMgY29kZWRfc2NvcmVbbl0gb3IgcmV0dXJu cyBhIGxhc3Rfbm9uX3plcm8gdmFsdWUgb2YgLTEKaW4gd2hpY2ggY2FzZSBjb2RlZF9zY29yZSB3 aWxsIGJlIHJlc2V0IGluIGVuY29kZV9tYl9pbnRlcm5hbCgpLgpUaGVyZWZvcmUgbm8gb2xkIHZh bHVlcyBhcmUgZXZlciB1c2VkLgoKVGhlIE1vdGlvbkVzdENvbnRleHQgaGFzIG5vdCBiZWVuIG1v dmVkIHlldC4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVp bmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvYWFyY2g2NC9tZV9jbXBfaW5pdF9h YXJjaDY0LmMgICAgfCAgIDU4ICstCiBsaWJhdmNvZGVjL2FybS9tZV9jbXBfaW5pdF9hcm0uYyAg ICAgICAgICAgIHwgICAxMSArLQogbGliYXZjb2RlYy9kbnhoZGVuYy5jICAgICAgICAgICAgICAg ICAgICAgICB8ICAyODMgKystCiBsaWJhdmNvZGVjL2RueGhkZW5jLmggICAgICAgICAgICAgICAg ICAgICAgIHwgICAgNCArLQogbGliYXZjb2RlYy9mbHZlbmMuYyAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMzIgKy0KIGxpYmF2Y29kZWMvaDI2MWVuYy5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTA0ICstCiBsaWJhdmNvZGVjL2gyNjFlbmMuaCAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgNCArLQogbGliYXZjb2RlYy9oMjYzZW5jLmggICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMjYgKy0KIGxpYmF2Y29kZWMvaXR1aDI2M2VuYy5jICAgICAgICAgICAgICAgICAgICAgfCAg MjQ4ICsrLQogbGliYXZjb2RlYy9tZV9jbXAuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx MDAgKy0KIGxpYmF2Y29kZWMvbWVfY21wLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2 ICstCiBsaWJhdmNvZGVjL21pcHMvbWVfY21wX21pcHMuaCAgICAgICAgICAgICAgIHwgICAzMiAr LQogbGliYXZjb2RlYy9taXBzL21lX2NtcF9tc2EuYyAgICAgICAgICAgICAgICB8ICAgMjggKy0K IGxpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9fbWlwcy5oICAgICAgICAgICAgfCAgICAzICstCiBs aWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvZW5jX2luaXRfbWlwcy5jICAgIHwgICAgMiArLQogbGli YXZjb2RlYy9taXBzL21wZWd2aWRlb2VuY19tbWkuYyAgICAgICAgICB8ICAgIDQgKy0KIGxpYmF2 Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNkc3BfaW5pdF9taXBzLmMgfCAgICAxICsKIGxpYmF2Y29k ZWMvbWlwcy9waXhibG9ja2RzcF9pbml0X21pcHMuYyAgICAgfCAgICAxICsKIGxpYmF2Y29kZWMv bWlwcy9waXhibG9ja2RzcF9taXBzLmggICAgICAgICAgfCAgICAzICstCiBsaWJhdmNvZGVjL21q cGVnZW5jLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA4NiArLQogbGliYXZjb2RlYy9tanBl Z2VuYy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIGxpYmF2Y29kZWMvbW90aW9u X2VzdC5jICAgICAgICAgICAgICAgICAgICAgfCAgNDk5ICsrLS0tCiBsaWJhdmNvZGVjL21vdGlv bl9lc3QuaCAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArLQogbGliYXZjb2RlYy9tb3Rpb25f ZXN0X3RlbXBsYXRlLmMgICAgICAgICAgICB8ICAxMDQgKy0KIGxpYmF2Y29kZWMvbXBlZzEyZW5j LmMgICAgICAgICAgICAgICAgICAgICAgfCAgNDYwICsrLS0KIGxpYmF2Y29kZWMvbXBlZzEyZW5j LmggICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBsaWJhdmNvZGVjL21wZWc0dmlkZW9l bmMuYyAgICAgICAgICAgICAgICAgIHwgIDUwNSArKystLQogbGliYXZjb2RlYy9tcGVnNHZpZGVv ZW5jLmggICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgICAzIC0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmggICAg ICAgICAgICAgICAgICAgICAgfCAgMTIzICstCiBsaWJhdmNvZGVjL21wZWd2aWRlb19kZWMuYyAg ICAgICAgICAgICAgICAgIHwgICAgMiArLQogbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgICAg ICAgICAgICAgICAgICB8IDIxMDUgKysrKysrKysrKy0tLS0tLS0tLQogbGliYXZjb2RlYy9tcGVn dmlkZW9lbmMuaCAgICAgICAgICAgICAgICAgICB8ICAxNTUgKy0KIGxpYmF2Y29kZWMvbXNtcGVn NGVuYy5jICAgICAgICAgICAgICAgICAgICAgfCAgMTU2ICstCiBsaWJhdmNvZGVjL21zbXBlZzRl bmMuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogbGliYXZjb2RlYy9wcGMvbWVfY21w LmMgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKy0KIGxpYmF2Y29kZWMvcmF0ZWNvbnRyb2wu YyAgICAgICAgICAgICAgICAgICAgfCAgMjUzICsrLQogbGliYXZjb2RlYy9yaXNjdi9tZV9jbXBf aW5pdC5jICAgICAgICAgICAgICB8ICAgNDQgKy0KIGxpYmF2Y29kZWMvcnYxMGVuYy5jICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDE2ICstCiBsaWJhdmNvZGVjL3J2MjBlbmMuYyAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAzNiArLQogbGliYXZjb2RlYy9zbm93X2R3dC5jICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMTQgKy0KIGxpYmF2Y29kZWMvc25vd19kd3QuaCAgICAgICAgICAg ICAgICAgICAgICAgfCAgICA2ICstCiBsaWJhdmNvZGVjL3Nub3dlbmMuYyAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDEyOCArLQogbGliYXZjb2RlYy9zcGVlZGhxZW5jLmMgICAgICAgICAgICAg ICAgICAgICB8ICAgMjggKy0KIGxpYmF2Y29kZWMvc3BlZWRocWVuYy5oICAgICAgICAgICAgICAg ICAgICAgfCAgICA2ICstCiBsaWJhdmNvZGVjL3N2cTFlbmMuYyAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDEyNiArLQogbGliYXZjb2RlYy93bXYyZW5jLmMgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNjYgKy0KIGxpYmF2Y29kZWMveDg2L21lX2NtcC5hc20gICAgICAgICAgICAgICAgICAg fCAgIDE2ICstCiBsaWJhdmNvZGVjL3g4Ni9tZV9jbXBfaW5pdC5jICAgICAgICAgICAgICAgIHwg ICA2MiArLQogbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvZW5jLmMgICAgICAgICAgICAgICB8ICAg IDkgKy0KIGxpYmF2Y29kZWMveDg2L21wZWd2aWRlb2VuY190ZW1wbGF0ZS5jICAgICAgfCAgIDM4 ICstCiB0ZXN0cy9jaGVja2FzbS9tb3Rpb24uYyAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAr LQogNTIgZmlsZXMgY2hhbmdlZCwgMzA0NiBpbnNlcnRpb25zKCspLCAzMDMwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWFyY2g2NC9tZV9jbXBfaW5pdF9hYXJjaDY0LmMg Yi9saWJhdmNvZGVjL2FhcmNoNjQvbWVfY21wX2luaXRfYWFyY2g2NC5jCmluZGV4IGZhMjcyNDQw M2QuLmRhYzY2NzY4ODYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYWFyY2g2NC9tZV9jbXBfaW5p dF9hYXJjaDY0LmMKKysrIGIvbGliYXZjb2RlYy9hYXJjaDY0L21lX2NtcF9pbml0X2FhcmNoNjQu YwpAQCAtMjEsNjYgKzIxLDY2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAibGli YXZ1dGlsL2F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvYWFyY2g2NC9jcHUuaCIK LSNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlby5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMv bXBlZ3ZpZGVvZW5jLmgiCiAKLWludCBmZl9waXhfYWJzMTZfbmVvbihNcGVnRW5jQ29udGV4dCAq cywgY29uc3QgdWludDhfdCAqYmxrMSwgY29uc3QgdWludDhfdCAqYmxrMiwKK2ludCBmZl9waXhf YWJzMTZfbmVvbihNUFZFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpibGsxLCBjb25zdCB1 aW50OF90ICpibGsyLAogICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu dCBoKTsKLWludCBmZl9waXhfYWJzMTZfeHkyX25lb24oTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0 IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCitpbnQgZmZfcGl4X2FiczE2X3h5 Ml9uZW9uKE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4 X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu dCBoKTsKLWludCBmZl9waXhfYWJzMTZfeDJfbmVvbihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9waXhfYWJzMTZfeDJf bmVvbihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90 ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo KTsKLWludCBmZl9waXhfYWJzMTZfeTJfbmVvbihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu dDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9waXhfYWJzMTZfeTJfbmVv bihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw aXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsK LWludCBmZl9waXhfYWJzOF9uZW9uKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpi bGsxLCBjb25zdCB1aW50OF90ICpibGsyLAoraW50IGZmX3BpeF9hYnM4X25lb24oTVBWRW5jQ29u dGV4dCAqcywgY29uc3QgdWludDhfdCAqYmxrMSwgY29uc3QgdWludDhfdCAqYmxrMiwKICAgICAg ICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIAotaW50IHNzZTE2X25l b24oTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsCitpbnQgc3NlMTZfbmVvbihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk ZSwgaW50IGgpOwotaW50IHNzZThfbmVvbihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhf dCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBzc2U4X25lb24oTVBWRW5jQ29udGV4 dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAg ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IHNzZTRfbmVvbihNcGVnRW5jQ29u dGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBz c2U0X25lb24oTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWlu dDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwogCi1p bnQgdnNhZDE2X25lb24oTXBlZ0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25z dCB1aW50OF90ICpzMiwKK2ludCB2c2FkMTZfbmVvbihNUFZFbmNDb250ZXh0ICpjLCBjb25zdCB1 aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICAgcHRyZGlmZl90 IHN0cmlkZSwgaW50IGgpOwotaW50IHZzYWRfaW50cmExNl9uZW9uKE1wZWdFbmNDb250ZXh0ICpj LCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1teSwKK2ludCB2c2FkX2ludHJh MTZfbmVvbihNUFZFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90 ICpkdW1teSwKICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkg OwotaW50IHZzYWRfaW50cmE4X25lb24oTXBlZ0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3Qg KnMsIGNvbnN0IHVpbnQ4X3QgKmR1bW15LAoraW50IHZzYWRfaW50cmE4X25lb24oTVBWRW5jQ29u dGV4dCAqYywgY29uc3QgdWludDhfdCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksCiAgICAgICAg ICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgOwotaW50IHZzc2UxNl9uZW9u KE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIs CitpbnQgdnNzZTE2X25lb24oTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNv bnN0IHVpbnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo KTsKLWludCB2c3NlX2ludHJhMTZfbmVvbihNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhf dCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksCitpbnQgdnNzZV9pbnRyYTE2X25lb24oTVBWRW5j Q29udGV4dCAqYywgY29uc3QgdWludDhfdCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksCiAgICAg ICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwogaW50IG5zc2UxNl9u ZW9uKGludCBtdWx0aXBsaWVyLCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpzMiwK ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgbnNzZTE2X25l b25fd3JhcHBlcihNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVp bnQ4X3QgKnMyLAoraW50IG5zc2UxNl9uZW9uX3dyYXBwZXIoTVBWRW5jQ29udGV4dCAqYywgY29u c3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgICAgICAg ICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IHBpeF9tZWRpYW5fYWJzMTZfbmVvbihN cGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4 MiwKK2ludCBwaXhfbWVkaWFuX2FiczE2X25lb24oTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu dDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IHBpeF9tZWRpYW5fYWJzOF9uZW9uKE1w ZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgy LAoraW50IHBpeF9tZWRpYW5fYWJzOF9uZW9uKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4 X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg cHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnM4X3gyX25lb24oTXBlZ0Vu Y0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitp bnQgZmZfcGl4X2FiczhfeDJfbmVvbihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlm Zl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnM4X3kyX25lb24oTXBlZ0VuY0NvbnRl eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZf cGl4X2FiczhfeTJfbmVvbihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj b25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0 cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnM4X3h5Ml9uZW9uKE1wZWdFbmNDb250ZXh0ICp2 LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9h YnM4X3h5Ml9uZW9uKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0 IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk ZSwgaW50IGgpOwogCiBpbnQgbnNzZThfbmVvbihpbnQgbXVsdGlwbGllciwgY29uc3QgdWludDhf dCAqcywgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRl LCBpbnQgaCk7Ci1pbnQgbnNzZThfbmVvbl93cmFwcGVyKE1wZWdFbmNDb250ZXh0ICpjLCBjb25z dCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsCitpbnQgbnNzZThfbmVvbl93cmFwcGVy KE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwK ICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwogCi1pbnQg dnNzZThfbmVvbihNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVp bnQ4X3QgKnMyLAoraW50IHZzc2U4X25lb24oTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhf dCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk ZSwgaW50IGgpOwogCi1pbnQgdnNzZV9pbnRyYThfbmVvbihNcGVnRW5jQ29udGV4dCAqYywgY29u c3QgdWludDhfdCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksCitpbnQgdnNzZV9pbnRyYThfbmVv bihNUFZFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1t eSwKICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIAogI2lm IEhBVkVfRE9UUFJPRAotaW50IHNzZTE2X25lb25fZG90cHJvZChNcGVnRW5jQ29udGV4dCAqdiwg Y29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBzc2UxNl9uZW9u X2RvdHByb2QoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWlu dDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50 IGgpOwotaW50IHZzc2VfaW50cmExNl9uZW9uX2RvdHByb2QoTXBlZ0VuY0NvbnRleHQgKmMsIGNv bnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwKK2ludCB2c3NlX2ludHJhMTZfbmVv bl9kb3Rwcm9kKE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50 OF90ICpzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUs IGludCBoKTsKICNlbmRpZgogCkBAIC0xMjksMjAgKzEyOSwyMCBAQCBhdl9jb2xkIHZvaWQgZmZf bWVfY21wX2luaXRfYWFyY2g2NChNRUNtcENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0 eCkKICNlbmRpZgogfQogCi1pbnQgbnNzZTE2X25lb25fd3JhcHBlcihNcGVnRW5jQ29udGV4dCAq YywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAoraW50IG5zc2UxNl9uZW9u X3dyYXBwZXIoTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4 X3QgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgp CiB7CiAgICAgaWYgKGMpCi0gICAgICAgIHJldHVybiBuc3NlMTZfbmVvbihjLT5hdmN0eC0+bnNz ZV93ZWlnaHQsIHMxLCBzMiwgc3RyaWRlLCBoKTsKKyAgICAgICAgcmV0dXJuIG5zc2UxNl9uZW9u KGMtPmMuYXZjdHgtPm5zc2Vfd2VpZ2h0LCBzMSwgczIsIHN0cmlkZSwgaCk7CiAgICAgZWxzZQog ICAgICAgICByZXR1cm4gbnNzZTE2X25lb24oOCwgczEsIHMyLCBzdHJpZGUsIGgpOwogfQogCi1p bnQgbnNzZThfbmVvbl93cmFwcGVyKE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpz MSwgY29uc3QgdWludDhfdCAqczIsCitpbnQgbnNzZThfbmVvbl93cmFwcGVyKE1QVkVuY0NvbnRl eHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwKICAgICAgICAgICAg ICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaWYgKGMpCi0gICAg ICAgIHJldHVybiBuc3NlOF9uZW9uKGMtPmF2Y3R4LT5uc3NlX3dlaWdodCwgczEsIHMyLCBzdHJp ZGUsIGgpOworICAgICAgICByZXR1cm4gbnNzZThfbmVvbihjLT5jLmF2Y3R4LT5uc3NlX3dlaWdo dCwgczEsIHMyLCBzdHJpZGUsIGgpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG5zc2U4X25l b24oOCwgczEsIHMyLCBzdHJpZGUsIGgpOwogfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hcm0v bWVfY21wX2luaXRfYXJtLmMgYi9saWJhdmNvZGVjL2FybS9tZV9jbXBfaW5pdF9hcm0uYwppbmRl eCA4YzU1NmYxNzU1Li5hNDdlMmJjNGZhIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2FybS9tZV9j bXBfaW5pdF9hcm0uYworKysgYi9saWJhdmNvZGVjL2FybS9tZV9jbXBfaW5pdF9hcm0uYwpAQCAt MjMsMTkgKzIzLDE4IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL2FybS9jcHUuaCIKICNpbmNsdWRl ICJsaWJhdmNvZGVjL2F2Y29kZWMuaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL21lX2NtcC5oIgot I2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgiCiAKLWludCBmZl9waXhfYWJzMTZfYXJt djYoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3Qg KmJsazIsCitpbnQgZmZfcGl4X2FiczE2X2FybXY2KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVp bnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAg IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzMTZfeDJfYXJtdjYoTXBl Z0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIs CitpbnQgZmZfcGl4X2FiczE2X3gyX2FybXY2KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4 X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzMTZfeTJfYXJtdjYoTXBl Z0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIs CitpbnQgZmZfcGl4X2FiczE2X3kyX2FybXY2KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4 X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIAotaW50IGZmX3BpeF9hYnM4X2FybXY2KE1wZWdF bmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpibGsxLCBjb25zdCB1aW50OF90ICpibGsyLAor aW50IGZmX3BpeF9hYnM4X2FybXY2KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJs azEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCiAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90 IHN0cmlkZSwgaW50IGgpOwogCi1pbnQgZmZfc3NlMTZfYXJtdjYoTXBlZ0VuY0NvbnRleHQgKnMs IGNvbnN0IHVpbnQ4X3QgKmJsazEsIGNvbnN0IHVpbnQ4X3QgKmJsazIsCitpbnQgZmZfc3NlMTZf YXJtdjYoTVBWRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqYmxrMSwgY29uc3QgdWludDhf dCAqYmxrMiwKICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7CiAK IGF2X2NvbGQgdm9pZCBmZl9tZV9jbXBfaW5pdF9hcm0oTUVDbXBDb250ZXh0ICpjLCBBVkNvZGVj Q29udGV4dCAqYXZjdHgpCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2RueGhkZW5jLmMgYi9saWJh dmNvZGVjL2RueGhkZW5jLmMKaW5kZXggNjAwOWUzOTJmOC4uYThmOGFiM2NkOSAxMDA2NDQKLS0t IGEvbGliYXZjb2RlYy9kbnhoZGVuYy5jCisrKyBiL2xpYmF2Y29kZWMvZG54aGRlbmMuYwpAQCAt MTE3LDEyICsxMTcsMTIgQEAgdm9pZCBkbnhoZF8xMGJpdF9nZXRfcGl4ZWxzXzh4NF9zeW0oaW50 MTZfdCAqcmVzdHJpY3QgYmxvY2ssCiAgICAgbWVtY3B5KGJsb2NrICsgNCAqIDgsIHBpeGVscyAr IDMgKiBsaW5lX3NpemUsIDggKiBzaXplb2YoKmJsb2NrKSk7CiB9CiAKLXN0YXRpYyBpbnQgZG54 aGRfMTBiaXRfZGN0X3F1YW50aXplXzQ0NChNcGVnRW5jQ29udGV4dCAqY3R4LCBpbnQxNl90ICpi bG9jaywKK3N0YXRpYyBpbnQgZG54aGRfMTBiaXRfZGN0X3F1YW50aXplXzQ0NChNUFZFbmNDb250 ZXh0ICpjdHgsIGludDE2X3QgKmJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBuLCBpbnQgcXNjYWxlLCBpbnQgKm92ZXJmbG93KQogewogICAgIGludCBp LCBqLCBsZXZlbCwgbGFzdF9ub25femVybywgc3RhcnRfaTsKICAgICBjb25zdCBpbnQgKnFtYXQ7 Ci0gICAgY29uc3QgdWludDhfdCAqc2NhbnRhYmxlPSBjdHgtPmludHJhX3NjYW50YWJsZS5zY2Fu dGFibGU7CisgICAgY29uc3QgdWludDhfdCAqc2NhbnRhYmxlID0gY3R4LT5jLmludHJhX3NjYW50 YWJsZS5zY2FudGFibGU7CiAgICAgaW50IGJpYXM7CiAgICAgaW50IG1heCA9IDA7CiAgICAgdW5z aWduZWQgaW50IHRocmVzaG9sZDEsIHRocmVzaG9sZDI7CkBAIC0xNjksMTcgKzE2OSwxNyBAQCBz dGF0aWMgaW50IGRueGhkXzEwYml0X2RjdF9xdWFudGl6ZV80NDQoTXBlZ0VuY0NvbnRleHQgKmN0 eCwgaW50MTZfdCAqYmxvY2ssCiAgICAgKm92ZXJmbG93ID0gY3R4LT5tYXhfcWNvZWZmIDwgbWF4 OyAvL292ZXJmbG93IG1pZ2h0IGhhdmUgaGFwcGVuZWQKIAogICAgIC8qIHdlIG5lZWQgdGhpcyBw ZXJtdXRhdGlvbiBzbyB0aGF0IHdlIGNvcnJlY3QgdGhlIElEQ1QsIHdlIG9ubHkgcGVybXV0ZSB0 aGUgIT0wIGVsZW1lbnRzICovCi0gICAgaWYgKGN0eC0+aWRzcC5wZXJtX3R5cGUgIT0gRkZfSURD VF9QRVJNX05PTkUpCi0gICAgICAgIGZmX2Jsb2NrX3Blcm11dGUoYmxvY2ssIGN0eC0+aWRzcC5p ZGN0X3Blcm11dGF0aW9uLAorICAgIGlmIChjdHgtPmMuaWRzcC5wZXJtX3R5cGUgIT0gRkZfSURD VF9QRVJNX05PTkUpCisgICAgICAgIGZmX2Jsb2NrX3Blcm11dGUoYmxvY2ssIGN0eC0+Yy5pZHNw LmlkY3RfcGVybXV0YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbnRhYmxlLCBs YXN0X25vbl96ZXJvKTsKIAogICAgIHJldHVybiBsYXN0X25vbl96ZXJvOwogfQogCi1zdGF0aWMg aW50IGRueGhkXzEwYml0X2RjdF9xdWFudGl6ZShNcGVnRW5jQ29udGV4dCAqY3R4LCBpbnQxNl90 ICpibG9jaywKK3N0YXRpYyBpbnQgZG54aGRfMTBiaXRfZGN0X3F1YW50aXplKE1QVkVuY0NvbnRl eHQgKmN0eCwgaW50MTZfdCAqYmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbiwgaW50IHFzY2FsZSwgaW50ICpvdmVyZmxvdykKIHsKLSAgICBjb25zdCB1aW50 OF90ICpzY2FudGFibGU9IGN0eC0+aW50cmFfc2NhbnRhYmxlLnNjYW50YWJsZTsKKyAgICBjb25z dCB1aW50OF90ICpzY2FudGFibGUgPSBjdHgtPmMuaW50cmFfc2NhbnRhYmxlLnNjYW50YWJsZTsK ICAgICBjb25zdCBpbnQgKnFtYXQgPSBuPDQgPyBjdHgtPnFfaW50cmFfbWF0cml4W3FzY2FsZV0g OiBjdHgtPnFfY2hyb21hX2ludHJhX21hdHJpeFtxc2NhbGVdOwogICAgIGludCBsYXN0X25vbl96 ZXJvID0gMDsKICAgICBpbnQgaTsKQEAgLTIwMCw4ICsyMDAsOCBAQCBzdGF0aWMgaW50IGRueGhk XzEwYml0X2RjdF9xdWFudGl6ZShNcGVnRW5jQ29udGV4dCAqY3R4LCBpbnQxNl90ICpibG9jaywK ICAgICB9CiAKICAgICAvKiB3ZSBuZWVkIHRoaXMgcGVybXV0YXRpb24gc28gdGhhdCB3ZSBjb3Jy ZWN0IHRoZSBJRENULCB3ZSBvbmx5IHBlcm11dGUgdGhlICE9MCBlbGVtZW50cyAqLwotICAgIGlm IChjdHgtPmlkc3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVSTV9OT05FKQotICAgICAgICBmZl9i bG9ja19wZXJtdXRlKGJsb2NrLCBjdHgtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbiwKKyAgICBpZiAo Y3R4LT5jLmlkc3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVSTV9OT05FKQorICAgICAgICBmZl9i bG9ja19wZXJtdXRlKGJsb2NrLCBjdHgtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uLAogICAgICAg ICAgICAgICAgICAgICAgICAgIHNjYW50YWJsZSwgbGFzdF9ub25femVybyk7CiAKICAgICByZXR1 cm4gbGFzdF9ub25femVybzsKQEAgLTI2NiwzNCArMjY2LDMzIEBAIHN0YXRpYyBhdl9jb2xkIGlu dCBkbnhoZF9pbml0X3FtYXQoRE5YSERFbmNDb250ZXh0ICpjdHgsIGludCBsYmlhcywgaW50IGNi aWFzKQogewogICAgIC8vIGluaXQgZmlyc3QgZWxlbSB0byAxIHRvIGF2b2lkIGRpdiBieSAwIGlu IGNvbnZlcnRfbWF0cml4CiAgICAgdWludDE2X3Qgd2VpZ2h0X21hdHJpeFs2NF0gPSB7IDEsIH07 IC8vIGNvbnZlcnRfbWF0cml4IG5lZWRzIHVpbnQxNl90KgotICAgIGludCBxc2NhbGUsIGk7CiAg ICAgY29uc3QgdWludDhfdCAqbHVtYV93ZWlnaHRfdGFibGUgICA9IGN0eC0+Y2lkX3RhYmxlLT5s dW1hX3dlaWdodDsKICAgICBjb25zdCB1aW50OF90ICpjaHJvbWFfd2VpZ2h0X3RhYmxlID0gY3R4 LT5jaWRfdGFibGUtPmNocm9tYV93ZWlnaHQ7CiAKLSAgICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9B UlJBWShjdHgtPnFtYXRyaXhfbCwgICBjdHgtPm0uYXZjdHgtPnFtYXggKyAxKSB8fAotICAgICAg ICAhRkZfQUxMT0NaX1RZUEVEX0FSUkFZKGN0eC0+cW1hdHJpeF9jLCAgIGN0eC0+bS5hdmN0eC0+ cW1heCArIDEpIHx8Ci0gICAgICAgICFGRl9BTExPQ1pfVFlQRURfQVJSQVkoY3R4LT5xbWF0cml4 X2wxNiwgY3R4LT5tLmF2Y3R4LT5xbWF4ICsgMSkgfHwKLSAgICAgICAgIUZGX0FMTE9DWl9UWVBF RF9BUlJBWShjdHgtPnFtYXRyaXhfYzE2LCBjdHgtPm0uYXZjdHgtPnFtYXggKyAxKSkKKyAgICBp ZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPnFtYXRyaXhfbCwgICBjdHgtPm0uYy5hdmN0 eC0+cW1heCArIDEpIHx8CisgICAgICAgICFGRl9BTExPQ1pfVFlQRURfQVJSQVkoY3R4LT5xbWF0 cml4X2MsICAgY3R4LT5tLmMuYXZjdHgtPnFtYXggKyAxKSB8fAorICAgICAgICAhRkZfQUxMT0Na X1RZUEVEX0FSUkFZKGN0eC0+cW1hdHJpeF9sMTYsIGN0eC0+bS5jLmF2Y3R4LT5xbWF4ICsgMSkg fHwKKyAgICAgICAgIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPnFtYXRyaXhfYzE2LCBjdHgt Pm0uYy5hdmN0eC0+cW1heCArIDEpKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwog CiAgICAgaWYgKGN0eC0+Yml0X2RlcHRoID09IDgpIHsKLSAgICAgICAgZm9yIChpID0gMTsgaSA8 IDY0OyBpKyspIHsKLSAgICAgICAgICAgIGludCBqID0gY3R4LT5tLmlkc3AuaWRjdF9wZXJtdXRh dGlvbltmZl96aWd6YWdfZGlyZWN0W2ldXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA2 NDsgaSsrKSB7CisgICAgICAgICAgICBpbnQgaiA9IGN0eC0+bS5jLmlkc3AuaWRjdF9wZXJtdXRh dGlvbltmZl96aWd6YWdfZGlyZWN0W2ldXTsKICAgICAgICAgICAgIHdlaWdodF9tYXRyaXhbal0g PSBjdHgtPmNpZF90YWJsZS0+bHVtYV93ZWlnaHRbaV07CiAgICAgICAgIH0KICAgICAgICAgZmZf Y29udmVydF9tYXRyaXgoJmN0eC0+bSwgY3R4LT5xbWF0cml4X2wsIGN0eC0+cW1hdHJpeF9sMTYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodF9tYXRyaXgsIGN0eC0+aW50cmFfcXVh bnRfYmlhcywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5tLmF2Y3R4LT5xbWF4 LCAxKTsKLSAgICAgICAgZm9yIChpID0gMTsgaSA8IDY0OyBpKyspIHsKLSAgICAgICAgICAgIGlu dCBqID0gY3R4LT5tLmlkc3AuaWRjdF9wZXJtdXRhdGlvbltmZl96aWd6YWdfZGlyZWN0W2ldXTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5tLmMuYXZjdHgtPnFtYXgsIDEpOworICAg ICAgICBmb3IgKGludCBpID0gMTsgaSA8IDY0OyBpKyspIHsKKyAgICAgICAgICAgIGludCBqID0g Y3R4LT5tLmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2ZmX3ppZ3phZ19kaXJlY3RbaV1dOwogICAg ICAgICAgICAgd2VpZ2h0X21hdHJpeFtqXSA9IGN0eC0+Y2lkX3RhYmxlLT5jaHJvbWFfd2VpZ2h0 W2ldOwogICAgICAgICB9CiAgICAgICAgIGZmX2NvbnZlcnRfbWF0cml4KCZjdHgtPm0sIGN0eC0+ cW1hdHJpeF9jLCBjdHgtPnFtYXRyaXhfYzE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICB3 ZWlnaHRfbWF0cml4LCBjdHgtPmludHJhX3F1YW50X2JpYXMsIDEsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC0+bS5hdmN0eC0+cW1heCwgMSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgIGN0eC0+bS5jLmF2Y3R4LT5xbWF4LCAxKTsKIAotICAgICAgICBmb3IgKHFzY2FsZSA9IDE7 IHFzY2FsZSA8PSBjdHgtPm0uYXZjdHgtPnFtYXg7IHFzY2FsZSsrKSB7Ci0gICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykgeworICAgICAgICBmb3IgKGludCBxc2NhbGUgPSAxOyBx c2NhbGUgPD0gY3R4LT5tLmMuYXZjdHgtPnFtYXg7IHFzY2FsZSsrKSB7CisgICAgICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IDY0OyBpKyspIHsKICAgICAgICAgICAgICAgICBjdHgtPnFtYXRy aXhfbFtxc2NhbGVdW2ldICAgICAgPDw9IDI7CiAgICAgICAgICAgICAgICAgY3R4LT5xbWF0cml4 X2NbcXNjYWxlXVtpXSAgICAgIDw8PSAyOwogICAgICAgICAgICAgICAgIGN0eC0+cW1hdHJpeF9s MTZbcXNjYWxlXVswXVtpXSA8PD0gMjsKQEAgLTMwNCw4ICszMDMsOCBAQCBzdGF0aWMgYXZfY29s ZCBpbnQgZG54aGRfaW5pdF9xbWF0KEROWEhERW5jQ29udGV4dCAqY3R4LCBpbnQgbGJpYXMsIGlu dCBjYmlhcykKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIDEwLWJpdAotICAg ICAgICBmb3IgKHFzY2FsZSA9IDE7IHFzY2FsZSA8PSBjdHgtPm0uYXZjdHgtPnFtYXg7IHFzY2Fs ZSsrKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgNjQ7IGkrKykgeworICAgICAgICBm b3IgKGludCBxc2NhbGUgPSAxOyBxc2NhbGUgPD0gY3R4LT5tLmMuYXZjdHgtPnFtYXg7IHFzY2Fs ZSsrKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDY0OyBpKyspIHsKICAgICAg ICAgICAgICAgICBpbnQgaiA9IGZmX3ppZ3phZ19kaXJlY3RbaV07CiAKICAgICAgICAgICAgICAg ICAvKiBUaGUgcXVhbnRpemF0aW9uIGZvcm11bGEgZnJvbSB0aGUgVkMtMyBzdGFuZGFyZCBpczoK QEAgLTMzNywxMiArMzM2LDEyIEBAIHN0YXRpYyBhdl9jb2xkIGludCBkbnhoZF9pbml0X3FtYXQo RE5YSERFbmNDb250ZXh0ICpjdHgsIGludCBsYmlhcywgaW50IGNiaWFzKQogCiBzdGF0aWMgYXZf Y29sZCBpbnQgZG54aGRfaW5pdF9yYyhETlhIREVuY0NvbnRleHQgKmN0eCkKIHsKLSAgICBpZiAo IUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX3JjLCAoY3R4LT5tLmF2Y3R4LT5xbWF4ICsg MSkgKiBjdHgtPm0ubWJfbnVtKSkKKyAgICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgt Pm1iX3JjLCAoY3R4LT5tLmMuYXZjdHgtPnFtYXggKyAxKSAqIGN0eC0+bS5jLm1iX251bSkpCiAg ICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKLSAgICBpZiAoY3R4LT5tLmF2Y3R4LT5t Yl9kZWNpc2lvbiAhPSBGRl9NQl9ERUNJU0lPTl9SRCkgewotICAgICAgICBpZiAoIUZGX0FMTE9D Wl9UWVBFRF9BUlJBWShjdHgtPm1iX2NtcCwgICAgIGN0eC0+bS5tYl9udW0pIHx8Ci0gICAgICAg ICAgICAhRkZfQUxMT0NaX1RZUEVEX0FSUkFZKGN0eC0+bWJfY21wX3RtcCwgY3R4LT5tLm1iX251 bSkpCisgICAgaWYgKGN0eC0+bS5jLmF2Y3R4LT5tYl9kZWNpc2lvbiAhPSBGRl9NQl9ERUNJU0lP Tl9SRCkgeworICAgICAgICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX2NtcCwg ICAgIGN0eC0+bS5jLm1iX251bSkgfHwKKyAgICAgICAgICAgICFGRl9BTExPQ1pfVFlQRURfQVJS QVkoY3R4LT5tYl9jbXBfdG1wLCBjdHgtPm0uYy5tYl9udW0pKQogICAgICAgICAgICAgcmV0dXJu IEFWRVJST1IoRU5PTUVNKTsKICAgICB9CiAgICAgY3R4LT5mcmFtZV9iaXRzID0gKGN0eC0+Y29k aW5nX3VuaXRfc2l6ZSAtCkBAIC00MTQsMjEgKzQxMywyMSBAQCBzdGF0aWMgYXZfY29sZCBpbnQg ZG54aGRfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgIGN0eC0+Y2lkX3Rh YmxlID0gZmZfZG54aGRfZ2V0X2NpZF90YWJsZShjdHgtPmNpZCk7CiAgICAgYXZfYXNzZXJ0MChj dHgtPmNpZF90YWJsZSk7CiAKLSAgICBjdHgtPm0uYXZjdHggICAgPSBhdmN0eDsKLSAgICBjdHgt Pm0ubWJfaW50cmEgPSAxOwotICAgIGN0eC0+bS5oMjYzX2FpYyA9IDE7CisgICAgY3R4LT5tLmMu YXZjdHggICAgPSBhdmN0eDsKKyAgICBjdHgtPm0uYy5tYl9pbnRyYSA9IDE7CisgICAgY3R4LT5t LmMuaDI2M19haWMgPSAxOwogCiAgICAgYXZjdHgtPmJpdHNfcGVyX3Jhd19zYW1wbGUgPSBjdHgt PmJpdF9kZXB0aDsKIAotICAgIGZmX2Jsb2NrZHNwX2luaXQoJmN0eC0+bS5iZHNwKTsKKyAgICBm Zl9ibG9ja2RzcF9pbml0KCZjdHgtPm0uYy5iZHNwKTsKICAgICBmZl9mZGN0ZHNwX2luaXQoJmN0 eC0+bS5mZHNwLCBhdmN0eCk7Ci0gICAgZmZfbXB2X2lkY3RfaW5pdCgmY3R4LT5tKTsKKyAgICBm Zl9tcHZfaWRjdF9pbml0KCZjdHgtPm0uYyk7CiAgICAgZmZfbXBlZ3ZpZGVvZW5jZHNwX2luaXQo JmN0eC0+bS5tcHZlbmNkc3AsIGF2Y3R4KTsKICAgICBmZl9waXhibG9ja2RzcF9pbml0KCZjdHgt Pm0ucGRzcCwgYXZjdHgpOwogICAgIGZmX2RjdF9lbmNvZGVfaW5pdCgmY3R4LT5tKTsKIAogICAg IGlmIChjdHgtPnByb2ZpbGUgIT0gQVZfUFJPRklMRV9ETlhIRCkKLSAgICAgICAgZmZfdmlkZW9k c3BfaW5pdCgmY3R4LT5tLnZkc3AsIGN0eC0+Yml0X2RlcHRoKTsKKyAgICAgICAgZmZfdmlkZW9k c3BfaW5pdCgmY3R4LT5tLmMudmRzcCwgY3R4LT5iaXRfZGVwdGgpOwogCiAgICAgaWYgKGN0eC0+ aXNfNDQ0IHx8IGN0eC0+cHJvZmlsZSA9PSBBVl9QUk9GSUxFX0ROWEhSX0hRWCkgewogICAgICAg ICBjdHgtPm0uZGN0X3F1YW50aXplICAgICA9IGRueGhkXzEwYml0X2RjdF9xdWFudGl6ZV80NDQ7 CkBAIC00NDUsMTIgKzQ0NCwxMiBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZG54aGRfZW5jb2RlX2lu aXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogCiAgICAgZmZfZG54aGRlbmNfaW5pdChjdHgpOwog Ci0gICAgY3R4LT5tLm1iX2hlaWdodCA9IChhdmN0eC0+aGVpZ2h0ICsgMTUpIC8gMTY7Ci0gICAg Y3R4LT5tLm1iX3dpZHRoICA9IChhdmN0eC0+d2lkdGggICsgMTUpIC8gMTY7CisgICAgY3R4LT5t LmMubWJfaGVpZ2h0ID0gKGF2Y3R4LT5oZWlnaHQgKyAxNSkgLyAxNjsKKyAgICBjdHgtPm0uYy5t Yl93aWR0aCAgPSAoYXZjdHgtPndpZHRoICArIDE1KSAvIDE2OwogCiAgICAgaWYgKGF2Y3R4LT5m bGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9EQ1QpIHsKICAgICAgICAgY3R4LT5pbnRl cmxhY2VkICAgPSAxOwotICAgICAgICBjdHgtPm0ubWJfaGVpZ2h0IC89IDI7CisgICAgICAgIGN0 eC0+bS5jLm1iX2hlaWdodCAvPSAyOwogICAgIH0KIAogICAgIGlmIChjdHgtPmludGVybGFjZWQg JiYgY3R4LT5wcm9maWxlICE9IEFWX1BST0ZJTEVfRE5YSEQpIHsKQEAgLTQ1OSw3ICs0NTgsNyBA QCBzdGF0aWMgYXZfY29sZCBpbnQgZG54aGRfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4KQogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAotICAgIGN0eC0+ bS5tYl9udW0gPSBjdHgtPm0ubWJfaGVpZ2h0ICogY3R4LT5tLm1iX3dpZHRoOworICAgIGN0eC0+ bS5jLm1iX251bSA9IGN0eC0+bS5jLm1iX2hlaWdodCAqIGN0eC0+bS5jLm1iX3dpZHRoOwogCiAg ICAgaWYgKGN0eC0+Y2lkX3RhYmxlLT5mcmFtZV9zaXplID09IEROWEhEX1ZBUklBQkxFKSB7CiAg ICAgICAgIGN0eC0+ZnJhbWVfc2l6ZSA9IGZmX2RueGhkX2dldF9ocl9mcmFtZV9zaXplKGN0eC0+ Y2lkLApAQCAtNDcxLDggKzQ3MCw4IEBAIHN0YXRpYyBhdl9jb2xkIGludCBkbnhoZF9lbmNvZGVf aW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgIGN0eC0+Y29kaW5nX3VuaXRfc2l6 ZSA9IGN0eC0+Y2lkX3RhYmxlLT5jb2RpbmdfdW5pdF9zaXplOwogICAgIH0KIAotICAgIGlmIChj dHgtPm0ubWJfaGVpZ2h0ID4gNjgpCi0gICAgICAgIGN0eC0+ZGF0YV9vZmZzZXQgPSAweDE3MCAr IChjdHgtPm0ubWJfaGVpZ2h0IDw8IDIpOworICAgIGlmIChjdHgtPm0uYy5tYl9oZWlnaHQgPiA2 OCkKKyAgICAgICAgY3R4LT5kYXRhX29mZnNldCA9IDB4MTcwICsgKGN0eC0+bS5jLm1iX2hlaWdo dCA8PCAyKTsKICAgICBlbHNlCiAgICAgICAgIGN0eC0+ZGF0YV9vZmZzZXQgPSAweDI4MDsKIApA QCAtNDkwLDEwICs0ODksMTAgQEAgc3RhdGljIGF2X2NvbGQgaW50IGRueGhkX2VuY29kZV9pbml0 KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICBpZiAoKHJldCA9IGRueGhkX2luaXRfcmMoY3R4 KSkgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwogCi0gICAgaWYgKCFGRl9BTExPQ1pfVFlQRURf QVJSQVkoY3R4LT5zbGljZV9zaXplLCBjdHgtPm0ubWJfaGVpZ2h0KSB8fAotICAgICAgICAhRkZf QUxMT0NaX1RZUEVEX0FSUkFZKGN0eC0+c2xpY2Vfb2ZmcywgY3R4LT5tLm1iX2hlaWdodCkgfHwK LSAgICAgICAgIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX2JpdHMsICAgIGN0eC0+bS5t Yl9udW0pICAgIHx8Ci0gICAgICAgICFGRl9BTExPQ1pfVFlQRURfQVJSQVkoY3R4LT5tYl9xc2Nh bGUsICBjdHgtPm0ubWJfbnVtKSkKKyAgICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgt PnNsaWNlX3NpemUsIGN0eC0+bS5jLm1iX2hlaWdodCkgfHwKKyAgICAgICAgIUZGX0FMTE9DWl9U WVBFRF9BUlJBWShjdHgtPnNsaWNlX29mZnMsIGN0eC0+bS5jLm1iX2hlaWdodCkgfHwKKyAgICAg ICAgIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX2JpdHMsICAgIGN0eC0+bS5jLm1iX251 bSkgICAgfHwKKyAgICAgICAgIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShjdHgtPm1iX3FzY2FsZSwg IGN0eC0+bS5jLm1iX251bSkpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKICAg ICBpZiAoYXZjdHgtPmFjdGl2ZV90aHJlYWRfdHlwZSA9PSBGRl9USFJFQURfU0xJQ0UpIHsKQEAg LTU0OCw4ICs1NDcsOCBAQCBzdGF0aWMgaW50IGRueGhkX3dyaXRlX2hlYWRlcihBVkNvZGVjQ29u dGV4dCAqYXZjdHgsIHVpbnQ4X3QgKmJ1ZikKICAgICBidWZbMHg1Zl0gPSAweDAxOyAvLyBVREwK IAogICAgIGJ1ZlsweDE2N10gPSAweDAyOyAvLyByZXNlcnZlZAotICAgIEFWX1dCMTYoYnVmICsg MHgxNmEsIGN0eC0+bS5tYl9oZWlnaHQgKiA0ICsgNCk7IC8vIE1TSVBTCi0gICAgQVZfV0IxNihi dWYgKyAweDE2YywgY3R4LT5tLm1iX2hlaWdodCk7IC8vIE5zCisgICAgQVZfV0IxNihidWYgKyAw eDE2YSwgY3R4LT5tLmMubWJfaGVpZ2h0ICogNCArIDQpOyAvLyBNU0lQUworICAgIEFWX1dCMTYo YnVmICsgMHgxNmMsIGN0eC0+bS5jLm1iX2hlaWdodCk7IC8vIE5zCiAgICAgYnVmWzB4MTZmXSA9 IDB4MTA7IC8vIHJlc2VydmVkCiAKICAgICBjdHgtPm1zaXAgPSBidWYgKyAweDE3MDsKQEAgLTU3 NywxMSArNTc2LDExIEBAIHZvaWQgZG54aGRfZW5jb2RlX2Jsb2NrKFB1dEJpdENvbnRleHQgKnBi LCBETlhIREVuY0NvbnRleHQgKmN0eCwKICAgICBpbnQgbGFzdF9ub25femVybyA9IDA7CiAgICAg aW50IHNsZXZlbCwgaSwgajsKIAotICAgIGRueGhkX2VuY29kZV9kYyhwYiwgY3R4LCBibG9ja1sw XSAtIGN0eC0+bS5sYXN0X2RjW25dKTsKLSAgICBjdHgtPm0ubGFzdF9kY1tuXSA9IGJsb2NrWzBd OworICAgIGRueGhkX2VuY29kZV9kYyhwYiwgY3R4LCBibG9ja1swXSAtIGN0eC0+bS5jLmxhc3Rf ZGNbbl0pOworICAgIGN0eC0+bS5jLmxhc3RfZGNbbl0gPSBibG9ja1swXTsKIAogICAgIGZvciAo aSA9IDE7IGkgPD0gbGFzdF9pbmRleDsgaSsrKSB7Ci0gICAgICAgIGogPSBjdHgtPm0uaW50cmFf c2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CisgICAgICAgIGogPSBjdHgtPm0uYy5pbnRyYV9zY2Fu dGFibGUucGVybXV0YXRlZFtpXTsKICAgICAgICAgc2xldmVsID0gYmxvY2tbal07CiAgICAgICAg IGlmIChzbGV2ZWwpIHsKICAgICAgICAgICAgIGludCBydW5fbGV2ZWwgPSBpIC0gbGFzdF9ub25f emVybyAtIDE7CkBAIC02MTMsNyArNjEyLDcgQEAgdm9pZCBkbnhoZF91bnF1YW50aXplX2MoRE5Y SERFbmNDb250ZXh0ICpjdHgsIGludDE2X3QgKmJsb2NrLCBpbnQgbiwKICAgICB9CiAKICAgICBm b3IgKGkgPSAxOyBpIDw9IGxhc3RfaW5kZXg7IGkrKykgewotICAgICAgICBpbnQgaiA9IGN0eC0+ bS5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAgaW50IGogPSBjdHgtPm0u Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKICAgICAgICAgbGV2ZWwgPSBibG9ja1tq XTsKICAgICAgICAgaWYgKGxldmVsKSB7CiAgICAgICAgICAgICBpZiAobGV2ZWwgPCAwKSB7CkBA IC02NjEsNyArNjYwLDcgQEAgaW50IGRueGhkX2NhbGNfYWNfYml0cyhETlhIREVuY0NvbnRleHQg KmN0eCwgaW50MTZfdCAqYmxvY2ssIGludCBsYXN0X2luZGV4KQogICAgIGludCBiaXRzID0gMDsK ICAgICBpbnQgaSwgaiwgbGV2ZWw7CiAgICAgZm9yIChpID0gMTsgaSA8PSBsYXN0X2luZGV4OyBp KyspIHsKLSAgICAgICAgaiA9IGN0eC0+bS5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsK KyAgICAgICAgaiA9IGN0eC0+bS5jLmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOwogICAg ICAgICBsZXZlbCA9IGJsb2NrW2pdOwogICAgICAgICBpZiAobGV2ZWwpIHsKICAgICAgICAgICAg IGludCBydW5fbGV2ZWwgPSBpIC0gbGFzdF9ub25femVybyAtIDE7CkBAIC02ODAsMzYgKzY3OSwz NiBAQCB2b2lkIGRueGhkX2dldF9ibG9ja3MoRE5YSERFbmNDb250ZXh0ICpjdHgsIGludCBtYl94 LCBpbnQgbWJfeSkKICAgICBjb25zdCBpbnQgYncgPSAxIDw8IGJzOwogICAgIGludCBkY3RfeV9v ZmZzZXQgPSBjdHgtPmRjdF95X29mZnNldDsKICAgICBpbnQgZGN0X3V2X29mZnNldCA9IGN0eC0+ ZGN0X3V2X29mZnNldDsKLSAgICBpbnQgbGluZXNpemUgPSBjdHgtPm0ubGluZXNpemU7Ci0gICAg aW50IHV2bGluZXNpemUgPSBjdHgtPm0udXZsaW5lc2l6ZTsKKyAgICBpbnQgbGluZXNpemUgPSBj dHgtPm0uYy5saW5lc2l6ZTsKKyAgICBpbnQgdXZsaW5lc2l6ZSA9IGN0eC0+bS5jLnV2bGluZXNp emU7CiAgICAgY29uc3QgdWludDhfdCAqcHRyX3kgPSBjdHgtPnRocmVhZFswXS0+c3JjWzBdICsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWJfeSA8PCA0KSAqIGN0eC0+bS5saW5lc2l6 ZSkgKyAobWJfeCA8PCBicyArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtYl95 IDw8IDQpICogY3R4LT5tLmMubGluZXNpemUpICsgKG1iX3ggPDwgYnMgKyAxKTsKICAgICBjb25z dCB1aW50OF90ICpwdHJfdSA9IGN0eC0+dGhyZWFkWzBdLT5zcmNbMV0gKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChtYl95IDw8IDQpICogY3R4LT5tLnV2bGluZXNpemUpICsgKG1iX3gg PDwgYnMgKyBjdHgtPmlzXzQ0NCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1iX3kg PDwgNCkgKiBjdHgtPm0uYy51dmxpbmVzaXplKSArIChtYl94IDw8IGJzICsgY3R4LT5pc180NDQp OwogICAgIGNvbnN0IHVpbnQ4X3QgKnB0cl92ID0gY3R4LT50aHJlYWRbMF0tPnNyY1syXSArCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1iX3kgPDwgNCkgKiBjdHgtPm0udXZsaW5lc2l6 ZSkgKyAobWJfeCA8PCBicyArIGN0eC0+aXNfNDQ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICgobWJfeSA8PCA0KSAqIGN0eC0+bS5jLnV2bGluZXNpemUpICsgKG1iX3ggPDwgYnMgKyBj dHgtPmlzXzQ0NCk7CiAgICAgUGl4YmxvY2tEU1BDb250ZXh0ICpwZHNwID0gJmN0eC0+bS5wZHNw OwotICAgIFZpZGVvRFNQQ29udGV4dCAqdmRzcCA9ICZjdHgtPm0udmRzcDsKKyAgICBWaWRlb0RT UENvbnRleHQgKnZkc3AgPSAmY3R4LT5tLmMudmRzcDsKIAotICAgIGlmIChjdHgtPmJpdF9kZXB0 aCAhPSAxMCAmJiB2ZHNwLT5lbXVsYXRlZF9lZGdlX21jICYmICgobWJfeCA8PCA0KSArIDE2ID4g Y3R4LT5tLmF2Y3R4LT53aWR0aCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWJfeSA8PCA0KSArIDE2ID4gY3R4LT5tLmF2Y3R4 LT5oZWlnaHQpKSB7Ci0gICAgICAgIGludCB5X3cgPSBjdHgtPm0uYXZjdHgtPndpZHRoICAtICht Yl94IDw8IDQpOwotICAgICAgICBpbnQgeV9oID0gY3R4LT5tLmF2Y3R4LT5oZWlnaHQgLSAobWJf eSA8PCA0KTsKKyAgICBpZiAoY3R4LT5iaXRfZGVwdGggIT0gMTAgJiYgdmRzcC0+ZW11bGF0ZWRf ZWRnZV9tYyAmJiAoKG1iX3ggPDwgNCkgKyAxNiA+IGN0eC0+bS5jLmF2Y3R4LT53aWR0aCB8fAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobWJfeSA8PCA0KSArIDE2ID4gY3R4LT5tLmMuYXZjdHgtPmhlaWdodCkpIHsKKyAgICAgICAg aW50IHlfdyA9IGN0eC0+bS5jLmF2Y3R4LT53aWR0aCAgLSAobWJfeCA8PCA0KTsKKyAgICAgICAg aW50IHlfaCA9IGN0eC0+bS5jLmF2Y3R4LT5oZWlnaHQgLSAobWJfeSA8PCA0KTsKICAgICAgICAg aW50IHV2X3cgPSAoeV93ICsgMSkgLyAyOwogICAgICAgICBpbnQgdXZfaCA9IHlfaDsKICAgICAg ICAgbGluZXNpemUgPSAxNjsKICAgICAgICAgdXZsaW5lc2l6ZSA9IDg7CiAKICAgICAgICAgdmRz cC0+ZW11bGF0ZWRfZWRnZV9tYygmY3R4LT5lZGdlX2J1Zl95WzBdLCBwdHJfeSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2l6ZSwgY3R4LT5tLmxpbmVzaXplLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzaXplLCBjdHgtPm0uYy5saW5lc2l6ZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2l6ZSwgMTYsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCwgMCwgeV93LCB5X2gpOwogICAgICAgICB2ZHNwLT5lbXVsYXRl ZF9lZGdlX21jKCZjdHgtPmVkZ2VfYnVmX3V2WzBdWzBdLCBwdHJfdSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0udXZsaW5lc2l6ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0uYy51dmxpbmVzaXplLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV2bGluZXNpemUsIDE2LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHV2X3csIHV2X2gpOwogICAgICAgICB2ZHNwLT5l bXVsYXRlZF9lZGdlX21jKCZjdHgtPmVkZ2VfYnVmX3V2WzFdWzBdLCBwdHJfdiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0udXZsaW5lc2l6ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0uYy51dmxpbmVz aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV2bGluZXNpemUsIDE2LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHV2X3csIHV2X2gpOwogCkBAIC03MTgs MjUgKzcxNywyNSBAQCB2b2lkIGRueGhkX2dldF9ibG9ja3MoRE5YSERFbmNDb250ZXh0ICpjdHgs IGludCBtYl94LCBpbnQgbWJfeSkKICAgICAgICAgcHRyX3kgPSAmY3R4LT5lZGdlX2J1Zl95WzBd OwogICAgICAgICBwdHJfdSA9ICZjdHgtPmVkZ2VfYnVmX3V2WzBdWzBdOwogICAgICAgICBwdHJf diA9ICZjdHgtPmVkZ2VfYnVmX3V2WzFdWzBdOwotICAgIH0gZWxzZSBpZiAoY3R4LT5iaXRfZGVw dGggPT0gMTAgJiYgdmRzcC0+ZW11bGF0ZWRfZWRnZV9tYyAmJiAoKG1iX3ggPDwgNCkgKyAxNiA+ IGN0eC0+bS5hdmN0eC0+d2lkdGggfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYl95IDw8IDQpICsgMTYgPiBjdHgt Pm0uYXZjdHgtPmhlaWdodCkpIHsKLSAgICAgICAgaW50IHlfdyA9IGN0eC0+bS5hdmN0eC0+d2lk dGggIC0gKG1iX3ggPDwgNCk7Ci0gICAgICAgIGludCB5X2ggPSBjdHgtPm0uYXZjdHgtPmhlaWdo dCAtIChtYl95IDw8IDQpOworICAgIH0gZWxzZSBpZiAoY3R4LT5iaXRfZGVwdGggPT0gMTAgJiYg dmRzcC0+ZW11bGF0ZWRfZWRnZV9tYyAmJiAoKG1iX3ggPDwgNCkgKyAxNiA+IGN0eC0+bS5jLmF2 Y3R4LT53aWR0aCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG1iX3kgPDwgNCkgKyAxNiA+IGN0eC0+bS5jLmF2Y3R4 LT5oZWlnaHQpKSB7CisgICAgICAgIGludCB5X3cgPSBjdHgtPm0uYy5hdmN0eC0+d2lkdGggIC0g KG1iX3ggPDwgNCk7CisgICAgICAgIGludCB5X2ggPSBjdHgtPm0uYy5hdmN0eC0+aGVpZ2h0IC0g KG1iX3kgPDwgNCk7CiAgICAgICAgIGludCB1dl93ID0gY3R4LT5pc180NDQgPyB5X3cgOiAoeV93 ICsgMSkgLyAyOwogICAgICAgICBpbnQgdXZfaCA9IHlfaDsKICAgICAgICAgbGluZXNpemUgPSAz MjsKICAgICAgICAgdXZsaW5lc2l6ZSA9IDE2ICsgMTYgKiBjdHgtPmlzXzQ0NDsKIAogICAgICAg ICB2ZHNwLT5lbXVsYXRlZF9lZGdlX21jKCZjdHgtPmVkZ2VfYnVmX3lbMF0sIHB0cl95LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzaXplLCBjdHgtPm0ubGluZXNpemUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNpemUsIGN0eC0+bS5jLmxpbmVzaXpl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzaXplIC8gMiwgMTYsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgeV93LCB5X2gpOwogICAgICAgICB2ZHNw LT5lbXVsYXRlZF9lZGdlX21jKCZjdHgtPmVkZ2VfYnVmX3V2WzBdWzBdLCBwdHJfdSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0udXZsaW5lc2l6ZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXplLCBjdHgtPm0uYy51dmxp bmVzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV2bGluZXNpemUgLyAyLCAx NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCB1dl93LCB1dl9oKTsKICAg ICAgICAgdmRzcC0+ZW11bGF0ZWRfZWRnZV9tYygmY3R4LT5lZGdlX2J1Zl91dlsxXVswXSwgcHRy X3YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXZsaW5lc2l6ZSwgY3R4LT5tLnV2 bGluZXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXZsaW5lc2l6ZSwgY3R4 LT5tLmMudXZsaW5lc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVz aXplIC8gMiwgMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgdXZfdywg dXZfaCk7CiAKQEAgLTc1Myw3ICs3NTIsNyBAQCB2b2lkIGRueGhkX2dldF9ibG9ja3MoRE5YSERF bmNDb250ZXh0ICpjdHgsIGludCBtYl94LCBpbnQgbWJfeSkKICAgICAgICAgcGRzcC0+Z2V0X3Bp eGVscyhjdHgtPmJsb2Nrc1syXSwgcHRyX3UsICAgICAgdXZsaW5lc2l6ZSk7CiAgICAgICAgIHBk c3AtPmdldF9waXhlbHMoY3R4LT5ibG9ja3NbM10sIHB0cl92LCAgICAgIHV2bGluZXNpemUpOwog Ci0gICAgICAgIGlmIChtYl95ICsgMSA9PSBjdHgtPm0ubWJfaGVpZ2h0ICYmIGN0eC0+bS5hdmN0 eC0+aGVpZ2h0ID09IDEwODApIHsKKyAgICAgICAgaWYgKG1iX3kgKyAxID09IGN0eC0+bS5jLm1i X2hlaWdodCAmJiBjdHgtPm0uYy5hdmN0eC0+aGVpZ2h0ID09IDEwODApIHsKICAgICAgICAgICAg IGlmIChjdHgtPmludGVybGFjZWQpIHsKICAgICAgICAgICAgICAgICBjdHgtPmdldF9waXhlbHNf OHg0X3N5bShjdHgtPmJsb2Nrc1s0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwdHJfeSArIGRjdF95X29mZnNldCwKQEAgLTc2OCwxMCArNzY3LDEwIEBAIHZvaWQg ZG54aGRfZ2V0X2Jsb2NrcyhETlhIREVuY0NvbnRleHQgKmN0eCwgaW50IG1iX3gsIGludCBtYl95 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cl92ICsgZGN0X3V2 X29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVz aXplKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY3R4LT5tLmJkc3Au Y2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbNF0pOwotICAgICAgICAgICAgICAgIGN0eC0+bS5iZHNw LmNsZWFyX2Jsb2NrKGN0eC0+YmxvY2tzWzVdKTsKLSAgICAgICAgICAgICAgICBjdHgtPm0uYmRz cC5jbGVhcl9ibG9jayhjdHgtPmJsb2Nrc1s2XSk7Ci0gICAgICAgICAgICAgICAgY3R4LT5tLmJk c3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbN10pOworICAgICAgICAgICAgICAgIGN0eC0+bS5j LmJkc3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbNF0pOworICAgICAgICAgICAgICAgIGN0eC0+ bS5jLmJkc3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbNV0pOworICAgICAgICAgICAgICAgIGN0 eC0+bS5jLmJkc3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbNl0pOworICAgICAgICAgICAgICAg IGN0eC0+bS5jLmJkc3AuY2xlYXJfYmxvY2soY3R4LT5ibG9ja3NbN10pOwogICAgICAgICAgICAg fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGRzcC0+Z2V0X3BpeGVscyhjdHgtPmJs b2Nrc1s0XSwKQEAgLTgxOSwxNyArODE4LDE3IEBAIHN0YXRpYyBpbnQgZG54aGRfY2FsY19iaXRz X3RocmVhZChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZvaWQgKmFyZywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgam9ibnIsIGludCB0aHJlYWRucikKIHsKICAgICBETlhI REVuY0NvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAgaW50IG1iX3kgPSBqb2Ju ciwgbWJfeDsKKyAgICBpbnQgbWJfeSA9IGpvYm5yOwogICAgIGludCBxc2NhbGUgPSBjdHgtPnFz Y2FsZTsKICAgICBMT0NBTF9BTElHTkVEXzE2KGludDE2X3QsIGJsb2NrLCBbNjRdKTsKICAgICBj dHggPSBjdHgtPnRocmVhZFt0aHJlYWRucl07CiAKLSAgICBjdHgtPm0ubGFzdF9kY1swXSA9Ci0g ICAgY3R4LT5tLmxhc3RfZGNbMV0gPQotICAgIGN0eC0+bS5sYXN0X2RjWzJdID0gMSA8PCAoY3R4 LT5iaXRfZGVwdGggKyAyKTsKKyAgICBjdHgtPm0uYy5sYXN0X2RjWzBdID0KKyAgICBjdHgtPm0u Yy5sYXN0X2RjWzFdID0KKyAgICBjdHgtPm0uYy5sYXN0X2RjWzJdID0gMSA8PCAoY3R4LT5iaXRf ZGVwdGggKyAyKTsKIAotICAgIGZvciAobWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0ubWJfd2lkdGg7 IG1iX3grKykgewotICAgICAgICB1bnNpZ25lZCBtYiA9IG1iX3kgKiBjdHgtPm0ubWJfd2lkdGgg KyBtYl94OworICAgIGZvciAoaW50IG1iX3ggPSAwOyBtYl94IDwgY3R4LT5tLmMubWJfd2lkdGg7 IG1iX3grKykgeworICAgICAgICB1bnNpZ25lZCBtYiA9IG1iX3kgKiBjdHgtPm0uYy5tYl93aWR0 aCArIG1iX3g7CiAgICAgICAgIGludCBzc2QgICAgID0gMDsKICAgICAgICAgaW50IGFjX2JpdHMg PSAwOwogICAgICAgICBpbnQgZGNfYml0cyA9IDA7CkBAIC04NDgsNyArODQ3LDcgQEAgc3RhdGlj IGludCBkbnhoZF9jYWxjX2JpdHNfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdm9pZCAq YXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXNjYWxl LCAmb3ZlcmZsb3cpOwogICAgICAgICAgICAgYWNfYml0cyAgICs9IGRueGhkX2NhbGNfYWNfYml0 cyhjdHgsIGJsb2NrLCBsYXN0X2luZGV4KTsKIAotICAgICAgICAgICAgZGlmZiA9IGJsb2NrWzBd IC0gY3R4LT5tLmxhc3RfZGNbbl07CisgICAgICAgICAgICBkaWZmID0gYmxvY2tbMF0gLSBjdHgt Pm0uYy5sYXN0X2RjW25dOwogICAgICAgICAgICAgaWYgKGRpZmYgPCAwKQogICAgICAgICAgICAg ICAgIG5iaXRzID0gYXZfbG9nMl8xNmJpdCgtMiAqIGRpZmYpOwogICAgICAgICAgICAgZWxzZQpA QCAtODU3LDE2ICs4NTYsMTYgQEAgc3RhdGljIGludCBkbnhoZF9jYWxjX2JpdHNfdGhyZWFkKEFW Q29kZWNDb250ZXh0ICphdmN0eCwgdm9pZCAqYXJnLAogICAgICAgICAgICAgYXZfYXNzZXJ0MShu Yml0cyA8IGN0eC0+Yml0X2RlcHRoICsgNCk7CiAgICAgICAgICAgICBkY19iaXRzICs9IGN0eC0+ Y2lkX3RhYmxlLT5kY19iaXRzW25iaXRzXSArIG5iaXRzOwogCi0gICAgICAgICAgICBjdHgtPm0u bGFzdF9kY1tuXSA9IGJsb2NrWzBdOworICAgICAgICAgICAgY3R4LT5tLmMubGFzdF9kY1tuXSA9 IGJsb2NrWzBdOwogCiAgICAgICAgICAgICBpZiAoYXZjdHgtPm1iX2RlY2lzaW9uID09IEZGX01C X0RFQ0lTSU9OX1JEIHx8ICFSQ19WQVJJQU5DRSkgewogICAgICAgICAgICAgICAgIGRueGhkX3Vu cXVhbnRpemVfYyhjdHgsIGJsb2NrLCBpLCBxc2NhbGUsIGxhc3RfaW5kZXgpOwotICAgICAgICAg ICAgICAgIGN0eC0+bS5pZHNwLmlkY3QoYmxvY2spOworICAgICAgICAgICAgICAgIGN0eC0+bS5j Lmlkc3AuaWRjdChibG9jayk7CiAgICAgICAgICAgICAgICAgc3NkICs9IGRueGhkX3NzZF9ibG9j ayhibG9jaywgc3JjX2Jsb2NrKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBj dHgtPm1iX3JjWyhxc2NhbGUgKiBjdHgtPm0ubWJfbnVtKSArIG1iXS5zc2QgID0gc3NkOwotICAg ICAgICBjdHgtPm1iX3JjWyhxc2NhbGUgKiBjdHgtPm0ubWJfbnVtKSArIG1iXS5iaXRzID0gYWNf Yml0cyArIGRjX2JpdHMgKyAxMiArCisgICAgICAgIGN0eC0+bWJfcmNbKHFzY2FsZSAqIGN0eC0+ bS5jLm1iX251bSkgKyBtYl0uc3NkICA9IHNzZDsKKyAgICAgICAgY3R4LT5tYl9yY1socXNjYWxl ICogY3R4LT5tLmMubWJfbnVtKSArIG1iXS5iaXRzID0gYWNfYml0cyArIGRjX2JpdHMgKyAxMiAr CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgKyBjdHgtPmlzXzQ0NCkg KiA4ICogY3R4LT52bGNfYml0c1swXTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC04NzcsMTYg Kzg3NiwxNiBAQCBzdGF0aWMgaW50IGRueGhkX2VuY29kZV90aHJlYWQoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LCB2b2lkICphcmcsCiB7CiAgICAgRE5YSERFbmNDb250ZXh0ICpjdHggPSBhdmN0eC0+ cHJpdl9kYXRhOwogICAgIFB1dEJpdENvbnRleHQgcGIwLCAqY29uc3QgcGIgPSAmcGIwOwotICAg IGludCBtYl95ID0gam9ibnIsIG1iX3g7CisgICAgaW50IG1iX3kgPSBqb2JucjsKICAgICBjdHgg PSBjdHgtPnRocmVhZFt0aHJlYWRucl07CiAgICAgaW5pdF9wdXRfYml0cyhwYiwgKHVpbnQ4X3Qg KilhcmcgKyBjdHgtPmRhdGFfb2Zmc2V0ICsgY3R4LT5zbGljZV9vZmZzW2pvYm5yXSwKICAgICAg ICAgICAgICAgICAgIGN0eC0+c2xpY2Vfc2l6ZVtqb2Jucl0pOwogCi0gICAgY3R4LT5tLmxhc3Rf ZGNbMF0gPQotICAgIGN0eC0+bS5sYXN0X2RjWzFdID0KLSAgICBjdHgtPm0ubGFzdF9kY1syXSA9 IDEgPDwgKGN0eC0+Yml0X2RlcHRoICsgMik7Ci0gICAgZm9yIChtYl94ID0gMDsgbWJfeCA8IGN0 eC0+bS5tYl93aWR0aDsgbWJfeCsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1iID0gbWJfeSAqIGN0 eC0+bS5tYl93aWR0aCArIG1iX3g7CisgICAgY3R4LT5tLmMubGFzdF9kY1swXSA9CisgICAgY3R4 LT5tLmMubGFzdF9kY1sxXSA9CisgICAgY3R4LT5tLmMubGFzdF9kY1syXSA9IDEgPDwgKGN0eC0+ Yml0X2RlcHRoICsgMik7CisgICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0uYy5t Yl93aWR0aDsgbWJfeCsrKSB7CisgICAgICAgIHVuc2lnbmVkIG1iID0gbWJfeSAqIGN0eC0+bS5j Lm1iX3dpZHRoICsgbWJfeDsKICAgICAgICAgaW50IHFzY2FsZSA9IGN0eC0+bWJfcXNjYWxlW21i XTsKICAgICAgICAgaW50IGk7CiAKQEAgLTkxMiwxNCArOTExLDEyIEBAIHN0YXRpYyBpbnQgZG54 aGRfZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZvaWQgKmFyZywKIAogc3Rh dGljIHZvaWQgZG54aGRfc2V0dXBfdGhyZWFkc19zbGljZXMoRE5YSERFbmNDb250ZXh0ICpjdHgp CiB7Ci0gICAgaW50IG1iX3ksIG1iX3g7Ci0gICAgaW50IG9mZnNldCA9IDA7Ci0gICAgZm9yICht Yl95ID0gMDsgbWJfeSA8IGN0eC0+bS5tYl9oZWlnaHQ7IG1iX3krKykgeworICAgIGZvciAoaW50 IG1iX3kgPSAwLCBvZmZzZXQgPSAwOyBtYl95IDwgY3R4LT5tLmMubWJfaGVpZ2h0OyBtYl95Kysp IHsKICAgICAgICAgaW50IHRocmVhZF9zaXplOwogICAgICAgICBjdHgtPnNsaWNlX29mZnNbbWJf eV0gPSBvZmZzZXQ7CiAgICAgICAgIGN0eC0+c2xpY2Vfc2l6ZVttYl95XSA9IDA7Ci0gICAgICAg IGZvciAobWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0ubWJfd2lkdGg7IG1iX3grKykgewotICAgICAg ICAgICAgdW5zaWduZWQgbWIgPSBtYl95ICogY3R4LT5tLm1iX3dpZHRoICsgbWJfeDsKKyAgICAg ICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0uYy5tYl93aWR0aDsgbWJfeCsrKSB7 CisgICAgICAgICAgICB1bnNpZ25lZCBtYiA9IG1iX3kgKiBjdHgtPm0uYy5tYl93aWR0aCArIG1i X3g7CiAgICAgICAgICAgICBjdHgtPnNsaWNlX3NpemVbbWJfeV0gKz0gY3R4LT5tYl9iaXRzW21i XTsKICAgICAgICAgfQogICAgICAgICBjdHgtPnNsaWNlX3NpemVbbWJfeV0gICA9IChjdHgtPnNs aWNlX3NpemVbbWJfeV0gKyAzMVUpICYgfjMxVTsKQEAgLTkzMywyOCArOTMwLDI4IEBAIHN0YXRp YyBpbnQgZG54aGRfbWJfdmFyX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZvaWQgKmFy ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgam9ibnIsIGludCB0aHJlYWRu cikKIHsKICAgICBETlhIREVuY0NvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAg aW50IG1iX3kgPSBqb2JuciwgbWJfeCwgeCwgeTsKLSAgICBpbnQgcGFydGlhbF9sYXN0X3JvdyA9 IChtYl95ID09IGN0eC0+bS5tYl9oZWlnaHQgLSAxKSAmJgorICAgIGludCBtYl95ID0gam9ibnIs IHgsIHk7CisgICAgaW50IHBhcnRpYWxfbGFzdF9yb3cgPSAobWJfeSA9PSBjdHgtPm0uYy5tYl9o ZWlnaHQgLSAxKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhdmN0eC0+aGVpZ2h0 ID4+IGN0eC0+aW50ZXJsYWNlZCkgJiAweEYpOwogCiAgICAgY3R4ID0gY3R4LT50aHJlYWRbdGhy ZWFkbnJdOwogICAgIGlmIChjdHgtPmJpdF9kZXB0aCA9PSA4KSB7Ci0gICAgICAgIGNvbnN0IHVp bnQ4X3QgKnBpeCA9IGN0eC0+dGhyZWFkWzBdLT5zcmNbMF0gKyAoKG1iX3kgPDwgNCkgKiBjdHgt Pm0ubGluZXNpemUpOwotICAgICAgICBmb3IgKG1iX3ggPSAwOyBtYl94IDwgY3R4LT5tLm1iX3dp ZHRoOyArK21iX3gsIHBpeCArPSAxNikgewotICAgICAgICAgICAgdW5zaWduZWQgbWIgPSBtYl95 ICogY3R4LT5tLm1iX3dpZHRoICsgbWJfeDsKKyAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ID0g Y3R4LT50aHJlYWRbMF0tPnNyY1swXSArICgobWJfeSA8PCA0KSAqIGN0eC0+bS5jLmxpbmVzaXpl KTsKKyAgICAgICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBjdHgtPm0uYy5tYl93aWR0aDsg KyttYl94LCBwaXggKz0gMTYpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1iID0gbWJfeSAqIGN0 eC0+bS5jLm1iX3dpZHRoICsgbWJfeDsKICAgICAgICAgICAgIGludCBzdW07CiAgICAgICAgICAg ICBpbnQgdmFyYzsKIAogICAgICAgICAgICAgaWYgKCFwYXJ0aWFsX2xhc3Rfcm93ICYmIG1iX3gg KiAxNiA8PSBhdmN0eC0+d2lkdGggLSAxNiAmJiAoYXZjdHgtPndpZHRoICUgMTYpID09IDApIHsK LSAgICAgICAgICAgICAgICBzdW0gID0gY3R4LT5tLm1wdmVuY2RzcC5waXhfc3VtKHBpeCwgY3R4 LT5tLmxpbmVzaXplKTsKLSAgICAgICAgICAgICAgICB2YXJjID0gY3R4LT5tLm1wdmVuY2RzcC5w aXhfbm9ybTEocGl4LCBjdHgtPm0ubGluZXNpemUpOworICAgICAgICAgICAgICAgIHN1bSAgPSBj dHgtPm0ubXB2ZW5jZHNwLnBpeF9zdW0ocGl4LCBjdHgtPm0uYy5saW5lc2l6ZSk7CisgICAgICAg ICAgICAgICAgdmFyYyA9IGN0eC0+bS5tcHZlbmNkc3AucGl4X25vcm0xKHBpeCwgY3R4LT5tLmMu bGluZXNpemUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgYncg PSBGRk1JTihhdmN0eC0+d2lkdGggLSAxNiAqIG1iX3gsIDE2KTsKICAgICAgICAgICAgICAgICBp bnQgYmggPSBGRk1JTigoYXZjdHgtPmhlaWdodCA+PiBjdHgtPmludGVybGFjZWQpIC0gMTYgKiBt Yl95LCAxNik7CiAgICAgICAgICAgICAgICAgc3VtID0gdmFyYyA9IDA7CiAgICAgICAgICAgICAg ICAgZm9yICh5ID0gMDsgeSA8IGJoOyB5KyspIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh4 ID0gMDsgeCA8IGJ3OyB4KyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgdmFs ID0gcGl4W3ggKyB5ICogY3R4LT5tLmxpbmVzaXplXTsKKyAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ4X3QgdmFsID0gcGl4W3ggKyB5ICogY3R4LT5tLmMubGluZXNpemVdOwogICAgICAgICAg ICAgICAgICAgICAgICAgc3VtICArPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJj ICs9IHZhbCAqIHZhbDsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtOTY2LDExICs5NjMsMTEg QEAgc3RhdGljIGludCBkbnhoZF9tYl92YXJfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICphdmN0eCwg dm9pZCAqYXJnLAogICAgICAgICAgICAgY3R4LT5tYl9jbXBbbWJdLm1iICAgID0gbWI7CiAgICAg ICAgIH0KICAgICB9IGVsc2UgeyAvLyAxMC1iaXQKLSAgICAgICAgY29uc3QgaW50IGxpbmVzaXpl ID0gY3R4LT5tLmxpbmVzaXplID4+IDE7Ci0gICAgICAgIGZvciAobWJfeCA9IDA7IG1iX3ggPCBj dHgtPm0ubWJfd2lkdGg7ICsrbWJfeCkgeworICAgICAgICBjb25zdCBpbnQgbGluZXNpemUgPSBj dHgtPm0uYy5saW5lc2l6ZSA+PiAxOworICAgICAgICBmb3IgKGludCBtYl94ID0gMDsgbWJfeCA8 IGN0eC0+bS5jLm1iX3dpZHRoOyArK21iX3gpIHsKICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90 ICpwaXggPSAoY29uc3QgdWludDE2X3QgKiljdHgtPnRocmVhZFswXS0+c3JjWzBdICsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1iX3kgPDwgNCkgKiBsaW5lc2l6ZSkg KyAobWJfeCA8PCA0KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIG1iICA9IG1iX3kgKiBjdHgtPm0u bWJfd2lkdGggKyBtYl94OworICAgICAgICAgICAgdW5zaWduZWQgbWIgID0gbWJfeSAqIGN0eC0+ bS5jLm1iX3dpZHRoICsgbWJfeDsKICAgICAgICAgICAgIGludCBzdW0gPSAwOwogICAgICAgICAg ICAgaW50IHNxc3VtID0gMDsKICAgICAgICAgICAgIGludCBidyA9IEZGTUlOKGF2Y3R4LT53aWR0 aCAtIDE2ICogbWJfeCwgMTYpOwpAQCAtMTAwMSwxMiArOTk4LDExIEBAIHN0YXRpYyBpbnQgZG54 aGRfZW5jb2RlX3JkbyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEROWEhERW5jQ29udGV4dCAqY3R4 KQogewogICAgIGludCBsYW1iZGEsIHVwX3N0ZXAsIGRvd25fc3RlcDsKICAgICBpbnQgbGFzdF9s b3dlciA9IElOVF9NQVgsIGxhc3RfaGlnaGVyID0gMDsKLSAgICBpbnQgeCwgeSwgcTsKIAotICAg IGZvciAocSA9IDE7IHEgPCBhdmN0eC0+cW1heDsgcSsrKSB7CisgICAgZm9yIChpbnQgcSA9IDE7 IHEgPCBhdmN0eC0+cW1heDsgcSsrKSB7CiAgICAgICAgIGN0eC0+cXNjYWxlID0gcTsKICAgICAg ICAgYXZjdHgtPmV4ZWN1dGUyKGF2Y3R4LCBkbnhoZF9jYWxjX2JpdHNfdGhyZWFkLAotICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgY3R4LT5tLm1iX2hlaWdodCk7CisgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBjdHgtPm0uYy5tYl9oZWlnaHQpOwogICAgIH0K ICAgICB1cF9zdGVwID0gZG93bl9zdGVwID0gMiA8PCBMQU1CREFfRlJBQ19CSVRTOwogICAgIGxh bWJkYSAgPSBjdHgtPmxhbWJkYTsKQEAgLTEwMTgsMTQgKzEwMTQsMTQgQEAgc3RhdGljIGludCBk bnhoZF9lbmNvZGVfcmRvKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgRE5YSERFbmNDb250ZXh0ICpj dHgpCiAgICAgICAgICAgICBsYW1iZGErKzsKICAgICAgICAgICAgIGVuZCA9IDE7IC8vIG5lZWQg dG8gc2V0IGZpbmFsIHFzY2FsZXMvYml0cwogICAgICAgICB9Ci0gICAgICAgIGZvciAoeSA9IDA7 IHkgPCBjdHgtPm0ubWJfaGVpZ2h0OyB5KyspIHsKLSAgICAgICAgICAgIGZvciAoeCA9IDA7IHgg PCBjdHgtPm0ubWJfd2lkdGg7IHgrKykgeworICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGN0 eC0+bS5jLm1iX2hlaWdodDsgeSsrKSB7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8 IGN0eC0+bS5jLm1iX3dpZHRoOyB4KyspIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtaW4g PSBVSU5UX01BWDsKICAgICAgICAgICAgICAgICBpbnQgcXNjYWxlID0gMTsKLSAgICAgICAgICAg ICAgICBpbnQgbWIgICAgID0geSAqIGN0eC0+bS5tYl93aWR0aCArIHg7CisgICAgICAgICAgICAg ICAgaW50IG1iICAgICA9IHkgKiBjdHgtPm0uYy5tYl93aWR0aCArIHg7CiAgICAgICAgICAgICAg ICAgaW50IHJjID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKHEgPSAxOyBxIDwgYXZjdHgtPnFt YXg7IHErKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgaSA9IChxKmN0eC0+bS5tYl9udW0p ICsgbWI7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgcSA9IDE7IHEgPCBhdmN0eC0+cW1heDsg cSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpID0gKHEqY3R4LT5tLmMubWJfbnVtKSAr IG1iOwogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzY29yZSA9IGN0eC0+bWJfcmNbaV0u Yml0cyAqIGxhbWJkYSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1 bnNpZ25lZCkgY3R4LT5tYl9yY1tpXS5zc2QgPDwgTEFNQkRBX0ZSQUNfQklUUyk7CiAgICAgICAg ICAgICAgICAgICAgIGlmIChzY29yZSA8IG1pbikgewpAQCAtMTA4MiwxOCArMTA3OCwxNyBAQCBz dGF0aWMgaW50IGRueGhkX2ZpbmRfcXNjYWxlKEROWEhERW5jQ29udGV4dCAqY3R4KQogICAgIGlu dCBsYXN0X2hpZ2hlciA9IDA7CiAgICAgaW50IGxhc3RfbG93ZXIgPSBJTlRfTUFYOwogICAgIGlu dCBxc2NhbGU7Ci0gICAgaW50IHgsIHk7CiAKICAgICBxc2NhbGUgPSBjdHgtPnFzY2FsZTsKICAg ICBmb3IgKDs7KSB7CiAgICAgICAgIGJpdHMgPSAwOwogICAgICAgICBjdHgtPnFzY2FsZSA9IHFz Y2FsZTsKICAgICAgICAgLy8gWFhYIGF2b2lkIHJlY2FsY3VsYXRpbmcgYml0cwotICAgICAgICBj dHgtPm0uYXZjdHgtPmV4ZWN1dGUyKGN0eC0+bS5hdmN0eCwgZG54aGRfY2FsY19iaXRzX3RocmVh ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBjdHgtPm0ubWJf aGVpZ2h0KTsKLSAgICAgICAgZm9yICh5ID0gMDsgeSA8IGN0eC0+bS5tYl9oZWlnaHQ7IHkrKykg ewotICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IGN0eC0+bS5tYl93aWR0aDsgeCsrKQotICAg ICAgICAgICAgICAgIGJpdHMgKz0gY3R4LT5tYl9yY1socXNjYWxlKmN0eC0+bS5tYl9udW0pICsg KHkqY3R4LT5tLm1iX3dpZHRoK3gpXS5iaXRzOworICAgICAgICBjdHgtPm0uYy5hdmN0eC0+ZXhl Y3V0ZTIoY3R4LT5tLmMuYXZjdHgsIGRueGhkX2NhbGNfYml0c190aHJlYWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgY3R4LT5tLmMubWJfaGVpZ2h0KTsKKyAg ICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBjdHgtPm0uYy5tYl9oZWlnaHQ7IHkrKykgeworICAg ICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBjdHgtPm0uYy5tYl93aWR0aDsgeCsrKQorICAg ICAgICAgICAgICAgIGJpdHMgKz0gY3R4LT5tYl9yY1socXNjYWxlKmN0eC0+bS5jLm1iX251bSkg KyAoeSpjdHgtPm0uYy5tYl93aWR0aCt4KV0uYml0czsKICAgICAgICAgICAgIGJpdHMgPSAoYml0 cyszMSkmfjMxOyAvLyBwYWRkaW5nCiAgICAgICAgICAgICBpZiAoYml0cyA+IGN0eC0+ZnJhbWVf Yml0cykKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMjIsNyArMTExNyw3IEBAIHN0YXRp YyBpbnQgZG54aGRfZmluZF9xc2NhbGUoRE5YSERFbmNDb250ZXh0ICpjdHgpCiAgICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICAgcXNjYWxlICs9IHVwX3N0ZXArKzsKICAgICAgICAgICAg IGRvd25fc3RlcCA9IDE7Ci0gICAgICAgICAgICBpZiAocXNjYWxlID49IGN0eC0+bS5hdmN0eC0+ cW1heCkKKyAgICAgICAgICAgIGlmIChxc2NhbGUgPj0gY3R4LT5tLmMuYXZjdHgtPnFtYXgpCiAg ICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICAgICAgfQogICAgIH0K QEAgLTExODksMjQgKzExODQsMjQgQEAgc3RhdGljIHZvaWQgcmFkaXhfc29ydChSQ0NNUEVudHJ5 ICpkYXRhLCBSQ0NNUEVudHJ5ICp0bXAsIGludCBzaXplKQogc3RhdGljIGludCBkbnhoZF9lbmNv ZGVfZmFzdChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEROWEhERW5jQ29udGV4dCAqY3R4KQogewog ICAgIGludCBtYXhfYml0cyA9IDA7Ci0gICAgaW50IHJldCwgeCwgeTsKKyAgICBpbnQgcmV0Owog ICAgIGlmICgocmV0ID0gZG54aGRfZmluZF9xc2NhbGUoY3R4KSkgPCAwKQogICAgICAgICByZXR1 cm4gcmV0OwotICAgIGZvciAoeSA9IDA7IHkgPCBjdHgtPm0ubWJfaGVpZ2h0OyB5KyspIHsKLSAg ICAgICAgZm9yICh4ID0gMDsgeCA8IGN0eC0+bS5tYl93aWR0aDsgeCsrKSB7Ci0gICAgICAgICAg ICBpbnQgbWIgPSB5ICogY3R4LT5tLm1iX3dpZHRoICsgeDsKLSAgICAgICAgICAgIGludCByYyA9 IChjdHgtPnFzY2FsZSAqIGN0eC0+bS5tYl9udW0gKSArIG1iOworICAgIGZvciAoaW50IHkgPSAw OyB5IDwgY3R4LT5tLmMubWJfaGVpZ2h0OyB5KyspIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7 IHggPCBjdHgtPm0uYy5tYl93aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBpbnQgbWIgPSB5ICog Y3R4LT5tLmMubWJfd2lkdGggKyB4OworICAgICAgICAgICAgaW50IHJjID0gKGN0eC0+cXNjYWxl ICogY3R4LT5tLmMubWJfbnVtICkgKyBtYjsKICAgICAgICAgICAgIGludCBkZWx0YV9iaXRzOwog ICAgICAgICAgICAgY3R4LT5tYl9xc2NhbGVbbWJdID0gY3R4LT5xc2NhbGU7CiAgICAgICAgICAg ICBjdHgtPm1iX2JpdHNbbWJdID0gY3R4LT5tYl9yY1tyY10uYml0czsKICAgICAgICAgICAgIG1h eF9iaXRzICs9IGN0eC0+bWJfcmNbcmNdLmJpdHM7CiAgICAgICAgICAgICBpZiAoIVJDX1ZBUklB TkNFKSB7CiAgICAgICAgICAgICAgICAgZGVsdGFfYml0cyA9IGN0eC0+bWJfcmNbcmNdLmJpdHMg LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPm1iX3JjW3JjICsgY3R4LT5tLm1i X251bV0uYml0czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5tYl9yY1tyYyAr IGN0eC0+bS5jLm1iX251bV0uYml0czsKICAgICAgICAgICAgICAgICBjdHgtPm1iX2NtcFttYl0u bWIgPSBtYjsKICAgICAgICAgICAgICAgICBjdHgtPm1iX2NtcFttYl0udmFsdWUgPQogICAgICAg ICAgICAgICAgICAgICBkZWx0YV9iaXRzID8gKChjdHgtPm1iX3JjW3JjXS5zc2QgLQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPm1iX3JjW3JjICsgY3R4LT5tLm1iX251 bV0uc3NkKSAqIDEwMCkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgt Pm1iX3JjW3JjICsgY3R4LT5tLmMubWJfbnVtXS5zc2QpICogMTAwKSAvCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVsdGFfYml0cwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDogSU5UX01JTjsgLy8gYXZvaWQgaW5jcmVhc2luZyBxc2NhbGUKICAgICAgICAgICAg IH0KQEAgLTEyMTYsMTcgKzEyMTEsMTcgQEAgc3RhdGljIGludCBkbnhoZF9lbmNvZGVfZmFzdChB VkNvZGVjQ29udGV4dCAqYXZjdHgsIEROWEhERW5jQ29udGV4dCAqY3R4KQogICAgIGlmICghcmV0 KSB7CiAgICAgICAgIGlmIChSQ19WQVJJQU5DRSkKICAgICAgICAgICAgIGF2Y3R4LT5leGVjdXRl MihhdmN0eCwgZG54aGRfbWJfdmFyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLCBOVUxMLCBjdHgtPm0ubWJfaGVpZ2h0KTsKLSAgICAgICAgcmFkaXhfc29ydChjdHgt Pm1iX2NtcCwgY3R4LT5tYl9jbXBfdG1wLCBjdHgtPm0ubWJfbnVtKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBjdHgtPm0uYy5tYl9oZWlnaHQpOworICAgICAgICBy YWRpeF9zb3J0KGN0eC0+bWJfY21wLCBjdHgtPm1iX2NtcF90bXAsIGN0eC0+bS5jLm1iX251bSk7 CiByZXRyeToKLSAgICAgICAgZm9yICh4ID0gMDsgeCA8IGN0eC0+bS5tYl9udW0gJiYgbWF4X2Jp dHMgPiBjdHgtPmZyYW1lX2JpdHM7IHgrKykgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8 IGN0eC0+bS5jLm1iX251bSAmJiBtYXhfYml0cyA+IGN0eC0+ZnJhbWVfYml0czsgeCsrKSB7CiAg ICAgICAgICAgICBpbnQgbWIgPSBjdHgtPm1iX2NtcFt4XS5tYjsKLSAgICAgICAgICAgIGludCBy YyA9IChjdHgtPnFzY2FsZSAqIGN0eC0+bS5tYl9udW0gKSArIG1iOworICAgICAgICAgICAgaW50 IHJjID0gKGN0eC0+cXNjYWxlICogY3R4LT5tLmMubWJfbnVtICkgKyBtYjsKICAgICAgICAgICAg IG1heF9iaXRzIC09IGN0eC0+bWJfcmNbcmNdLmJpdHMgLQotICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LT5tYl9yY1tyYyArIGN0eC0+bS5tYl9udW1dLmJpdHM7CisgICAgICAgICAgICAgICAg ICAgICAgICBjdHgtPm1iX3JjW3JjICsgY3R4LT5tLmMubWJfbnVtXS5iaXRzOwogICAgICAgICAg ICAgaWYgKGN0eC0+bWJfcXNjYWxlW21iXSA8IDI1NSkKICAgICAgICAgICAgICAgICBjdHgtPm1i X3FzY2FsZVttYl0rKzsKLSAgICAgICAgICAgIGN0eC0+bWJfYml0c1ttYl0gICA9IGN0eC0+bWJf cmNbcmMgKyBjdHgtPm0ubWJfbnVtXS5iaXRzOworICAgICAgICAgICAgY3R4LT5tYl9iaXRzW21i XSAgID0gY3R4LT5tYl9yY1tyYyArIGN0eC0+bS5jLm1iX251bV0uYml0czsKICAgICAgICAgfQog CiAgICAgICAgIGlmIChtYXhfYml0cyA+IGN0eC0+ZnJhbWVfYml0cykKQEAgLTEyMzcsMTMgKzEy MzIsMTEgQEAgcmV0cnk6CiAKIHN0YXRpYyB2b2lkIGRueGhkX2xvYWRfcGljdHVyZShETlhIREVu Y0NvbnRleHQgKmN0eCwgY29uc3QgQVZGcmFtZSAqZnJhbWUpCiB7Ci0gICAgaW50IGk7Ci0KLSAg ICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5tLmF2Y3R4LT50aHJlYWRfY291bnQ7IGkrKykgewotICAg ICAgICBjdHgtPnRocmVhZFtpXS0+bS5saW5lc2l6ZSAgICA9IGZyYW1lLT5saW5lc2l6ZVswXSA8 PCBjdHgtPmludGVybGFjZWQ7Ci0gICAgICAgIGN0eC0+dGhyZWFkW2ldLT5tLnV2bGluZXNpemUg ID0gZnJhbWUtPmxpbmVzaXplWzFdIDw8IGN0eC0+aW50ZXJsYWNlZDsKLSAgICAgICAgY3R4LT50 aHJlYWRbaV0tPmRjdF95X29mZnNldCAgPSBjdHgtPm0ubGluZXNpemUgICo4OwotICAgICAgICBj dHgtPnRocmVhZFtpXS0+ZGN0X3V2X29mZnNldCA9IGN0eC0+bS51dmxpbmVzaXplKjg7CisgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBjdHgtPm0uYy5hdmN0eC0+dGhyZWFkX2NvdW50OyBpKyspIHsK KyAgICAgICAgY3R4LT50aHJlYWRbaV0tPm0uYy5saW5lc2l6ZSAgICA9IGZyYW1lLT5saW5lc2l6 ZVswXSA8PCBjdHgtPmludGVybGFjZWQ7CisgICAgICAgIGN0eC0+dGhyZWFkW2ldLT5tLmMudXZs aW5lc2l6ZSAgPSBmcmFtZS0+bGluZXNpemVbMV0gPDwgY3R4LT5pbnRlcmxhY2VkOworICAgICAg ICBjdHgtPnRocmVhZFtpXS0+ZGN0X3lfb2Zmc2V0ICAgID0gY3R4LT5tLmMubGluZXNpemUgICo4 OworICAgICAgICBjdHgtPnRocmVhZFtpXS0+ZGN0X3V2X29mZnNldCAgID0gY3R4LT5tLmMudXZs aW5lc2l6ZSo4OwogICAgIH0KIAogICAgIGN0eC0+Y3VyX2ZpZWxkID0gKGZyYW1lLT5mbGFncyAm IEFWX0ZSQU1FX0ZMQUdfSU5URVJMQUNFRCkgJiYKQEAgLTEyODYsMTMgKzEyNzksMTMgQEAgZW5j b2RlX2NvZGluZ191bml0OgogICAgIGRueGhkX3NldHVwX3RocmVhZHNfc2xpY2VzKGN0eCk7CiAK ICAgICBvZmZzZXQgPSAwOwotICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm0ubWJfaGVpZ2h0OyBp KyspIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5tLmMubWJfaGVpZ2h0OyBpKyspIHsKICAg ICAgICAgQVZfV0IzMihjdHgtPm1zaXAgKyBpICogNCwgb2Zmc2V0KTsKICAgICAgICAgb2Zmc2V0 ICs9IGN0eC0+c2xpY2Vfc2l6ZVtpXTsKICAgICAgICAgYXZfYXNzZXJ0MSghKGN0eC0+c2xpY2Vf c2l6ZVtpXSAmIDMpKTsKICAgICB9CiAKLSAgICBhdmN0eC0+ZXhlY3V0ZTIoYXZjdHgsIGRueGhk X2VuY29kZV90aHJlYWQsIGJ1ZiwgTlVMTCwgY3R4LT5tLm1iX2hlaWdodCk7CisgICAgYXZjdHgt PmV4ZWN1dGUyKGF2Y3R4LCBkbnhoZF9lbmNvZGVfdGhyZWFkLCBidWYsIE5VTEwsIGN0eC0+bS5j Lm1iX2hlaWdodCk7CiAKICAgICBhdl9hc3NlcnQxKGN0eC0+ZGF0YV9vZmZzZXQgKyBvZmZzZXQg KyA0IDw9IGN0eC0+Y29kaW5nX3VuaXRfc2l6ZSk7CiAgICAgbWVtc2V0KGJ1ZiArIGN0eC0+ZGF0 YV9vZmZzZXQgKyBvZmZzZXQsIDAsCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2RueGhkZW5jLmgg Yi9saWJhdmNvZGVjL2RueGhkZW5jLmgKaW5kZXggMDBkNDg2YmFiZC4uNzU0MDYwN2NkYyAxMDA2 NDQKLS0tIGEvbGliYXZjb2RlYy9kbnhoZGVuYy5oCisrKyBiL2xpYmF2Y29kZWMvZG54aGRlbmMu aApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAibGliYXZ1dGlsL21lbV9pbnRlcm5hbC5o IgogCi0jaW5jbHVkZSAibXBlZ3ZpZGVvLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVvZW5jLmgiCiAj aW5jbHVkZSAiZG54aGRkYXRhLmgiCiAKIHR5cGVkZWYgc3RydWN0IFJDQ01QRW50cnkgewpAQCAt NDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBSQ0VudHJ5IHsKIAogdHlwZWRlZiBzdHJ1Y3Qg RE5YSERFbmNDb250ZXh0IHsKICAgICBBVkNsYXNzICpjbGFzczsKLSAgICBNcGVnRW5jQ29udGV4 dCBtOyAvLy88IFVzZWQgZm9yIHF1YW50aXphdGlvbiBkc3AgZnVuY3Rpb25zCisgICAgTVBWRW5j Q29udGV4dCBtOyAvLy88IFVzZWQgZm9yIHF1YW50aXphdGlvbiBkc3AgZnVuY3Rpb25zCiAKICAg ICBpbnQgY2lkOwogICAgIGludCBwcm9maWxlOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9mbHZl bmMuYyBiL2xpYmF2Y29kZWMvZmx2ZW5jLmMKaW5kZXggYjRhMzBmZTU1OC4uZGYxYTY1MDIyMiAx MDA2NDQKLS0tIGEvbGliYXZjb2RlYy9mbHZlbmMuYworKysgYi9saWJhdmNvZGVjL2ZsdmVuYy5j CkBAIC0yNSw0MiArMjUsNDIgQEAKIAogaW50IGZmX2Zsdl9lbmNvZGVfcGljdHVyZV9oZWFkZXIo TVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0 IHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgaW50 IGZvcm1hdDsKIAogICAgIGFsaWduX3B1dF9iaXRzKCZzLT5wYik7CiAKICAgICBwdXRfYml0cygm cy0+cGIsIDE3LCAxKTsKICAgICAvKiAwOiBILjI2MyBlc2NhcGUgY29kZXMgMTogMTEtYml0IGVz Y2FwZSBjb2RlcyAqLwotICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgKHMtPmgyNjNfZmx2IC0gMSkp OworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgKHMtPmMuaDI2M19mbHYgLSAxKSk7CiAgICAgcHV0 X2JpdHMoJnMtPnBiLCA4LAotICAgICAgICAgICAgICgoKGludDY0X3QpIHMtPnBpY3R1cmVfbnVt YmVyICogMzAgKiBzLT5hdmN0eC0+dGltZV9iYXNlLm51bSkgLyAgIC8vIEZJWE1FIHVzZSB0aW1l c3RhbXAKLSAgICAgICAgICAgICAgcy0+YXZjdHgtPnRpbWVfYmFzZS5kZW4pICYgMHhmZik7ICAg LyogVGVtcG9yYWxSZWZlcmVuY2UgKi8KLSAgICBpZiAocy0+d2lkdGggPT0gMzUyICYmIHMtPmhl aWdodCA9PSAyODgpCisgICAgICAgICAgICAgKCgoaW50NjRfdCkgcy0+Yy5waWN0dXJlX251bWJl ciAqIDMwICogcy0+Yy5hdmN0eC0+dGltZV9iYXNlLm51bSkgLyAgIC8vIEZJWE1FIHVzZSB0aW1l c3RhbXAKKyAgICAgICAgICAgICAgcy0+Yy5hdmN0eC0+dGltZV9iYXNlLmRlbikgJiAweGZmKTsg ICAvKiBUZW1wb3JhbFJlZmVyZW5jZSAqLworICAgIGlmIChzLT5jLndpZHRoID09IDM1MiAmJiBz LT5jLmhlaWdodCA9PSAyODgpCiAgICAgICAgIGZvcm1hdCA9IDI7Ci0gICAgZWxzZSBpZiAocy0+ d2lkdGggPT0gMTc2ICYmIHMtPmhlaWdodCA9PSAxNDQpCisgICAgZWxzZSBpZiAocy0+Yy53aWR0 aCA9PSAxNzYgJiYgcy0+Yy5oZWlnaHQgPT0gMTQ0KQogICAgICAgICBmb3JtYXQgPSAzOwotICAg IGVsc2UgaWYgKHMtPndpZHRoID09IDEyOCAmJiBzLT5oZWlnaHQgPT0gOTYpCisgICAgZWxzZSBp ZiAocy0+Yy53aWR0aCA9PSAxMjggJiYgcy0+Yy5oZWlnaHQgPT0gOTYpCiAgICAgICAgIGZvcm1h dCA9IDQ7Ci0gICAgZWxzZSBpZiAocy0+d2lkdGggPT0gMzIwICYmIHMtPmhlaWdodCA9PSAyNDAp CisgICAgZWxzZSBpZiAocy0+Yy53aWR0aCA9PSAzMjAgJiYgcy0+Yy5oZWlnaHQgPT0gMjQwKQog ICAgICAgICBmb3JtYXQgPSA1OwotICAgIGVsc2UgaWYgKHMtPndpZHRoID09IDE2MCAmJiBzLT5o ZWlnaHQgPT0gMTIwKQorICAgIGVsc2UgaWYgKHMtPmMud2lkdGggPT0gMTYwICYmIHMtPmMuaGVp Z2h0ID09IDEyMCkKICAgICAgICAgZm9ybWF0ID0gNjsKLSAgICBlbHNlIGlmIChzLT53aWR0aCA8 PSAyNTUgJiYgcy0+aGVpZ2h0IDw9IDI1NSkKKyAgICBlbHNlIGlmIChzLT5jLndpZHRoIDw9IDI1 NSAmJiBzLT5jLmhlaWdodCA8PSAyNTUpCiAgICAgICAgIGZvcm1hdCA9IDA7ICAgLyogdXNlIDEg Ynl0ZSB3aWR0aCAmIGhlaWdodCAqLwogICAgIGVsc2UKICAgICAgICAgZm9ybWF0ID0gMTsgICAv KiB1c2UgMiBieXRlcyB3aWR0aCAmIGhlaWdodCAqLwogICAgIHB1dF9iaXRzKCZzLT5wYiwgMywg Zm9ybWF0KTsgICAvKiBQaWN0dXJlU2l6ZSAqLwogICAgIGlmIChmb3JtYXQgPT0gMCkgewotICAg ICAgICBwdXRfYml0cygmcy0+cGIsIDgsIHMtPndpZHRoKTsKLSAgICAgICAgcHV0X2JpdHMoJnMt PnBiLCA4LCBzLT5oZWlnaHQpOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgsIHMtPmMud2lk dGgpOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgsIHMtPmMuaGVpZ2h0KTsKICAgICB9IGVs c2UgaWYgKGZvcm1hdCA9PSAxKSB7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMTYsIHMtPndp ZHRoKTsKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxNiwgcy0+aGVpZ2h0KTsKKyAgICAgICAg cHV0X2JpdHMoJnMtPnBiLCAxNiwgcy0+Yy53aWR0aCk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5w YiwgMTYsIHMtPmMuaGVpZ2h0KTsKICAgICB9Ci0gICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5w aWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1ApOyAgIC8qIFBpY3R1cmVUeXBlICovCisgICAg cHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCk7 ICAgLyogUGljdHVyZVR5cGUgKi8KICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOyAgIC8qIERl YmxvY2tpbmdGbGFnOiBvbiAqLwotICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+cXNjYWxlKTsg ICAvKiBRdWFudGl6ZXIgKi8KKyAgICBwdXRfYml0cygmcy0+cGIsIDUsIHMtPmMucXNjYWxlKTsg ICAvKiBRdWFudGl6ZXIgKi8KICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDApOyAgIC8qIEV4dHJh SW5mb3JtYXRpb24gKi8KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9o MjYxZW5jLmMgYi9saWJhdmNvZGVjL2gyNjFlbmMuYwppbmRleCBkYTg3MzZhNzhjLi43YzNjODc1 MmRmIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjFlbmMuYworKysgYi9saWJhdmNvZGVjL2gy NjFlbmMuYwpAQCAtNjksMjAgKzY5LDIwIEBAIHR5cGVkZWYgc3RydWN0IEgyNjFFbmNDb250ZXh0 IHsKIHN0YXRpYyBpbnQgaDI2MV9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRl eHQgKmNvbnN0IG0pCiB7CiAgICAgSDI2MUVuY0NvbnRleHQgKmNvbnN0IGggPSAoSDI2MUVuY0Nv bnRleHQgKiltOwotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJmgtPnMuczsKKyAgICBN UFZFbmNDb250ZXh0ICpjb25zdCBzID0gJmgtPnMuczsKICAgICBpbnQgdGVtcF9yZWY7CiAKICAg ICBhbGlnbl9wdXRfYml0cygmcy0+cGIpOwogCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAyMCwgMHgx MCk7IC8qIFBTQyAqLwogCi0gICAgdGVtcF9yZWYgPSBzLT5waWN0dXJlX251bWJlciAqIDMwMDAw TEwgKiBzLT5hdmN0eC0+dGltZV9iYXNlLm51bSAvCi0gICAgICAgICAgICAgICAoMTAwMUxMICog cy0+YXZjdHgtPnRpbWVfYmFzZS5kZW4pOyAgIC8vIEZJWE1FIG1heWJlIHRoaXMgc2hvdWxkIHVz ZSBhIHRpbWVzdGFtcAorICAgIHRlbXBfcmVmID0gcy0+Yy5waWN0dXJlX251bWJlciAqIDMwMDAw TEwgKiBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVtIC8KKyAgICAgICAgICAgICAgICgxMDAxTEwg KiBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsgICAvLyBGSVhNRSBtYXliZSB0aGlzIHNob3Vs ZCB1c2UgYSB0aW1lc3RhbXAKICAgICBwdXRfc2JpdHMoJnMtPnBiLCA1LCB0ZW1wX3JlZik7IC8q IFRlbXBvcmFsUmVmZXJlbmNlICovCiAKICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDApOyAvKiBz cGxpdCBzY3JlZW4gb2ZmICovCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgLyogY2FtZXJh ICBvZmYgKi8KLSAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNU VVJFX1RZUEVfSSk7IC8qIGZyZWV6ZSBwaWN0dXJlIHJlbGVhc2Ugb24vb2ZmICovCisgICAgcHV0 X2JpdHMoJnMtPnBiLCAxLCBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSk7IC8q IGZyZWV6ZSBwaWN0dXJlIHJlbGVhc2Ugb24vb2ZmICovCiAKICAgICBwdXRfYml0cygmcy0+cGIs IDEsIGgtPmZvcm1hdCk7IC8qIDAgPT0gUUNJRiwgMSA9PSBDSUYgKi8KIApAQCAtOTEsNyArOTEs NyBAQCBzdGF0aWMgaW50IGgyNjFfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250 ZXh0ICpjb25zdCBtKQogCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgLyogbm8gUEVJICov CiAgICAgaC0+Z29iX251bWJlciA9IGgtPmZvcm1hdCAtIDE7Ci0gICAgcy0+bWJfc2tpcF9ydW4g PSAwOworICAgIHMtPmMubWJfc2tpcF9ydW4gPSAwOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC05 OSw3ICs5OSw3IEBAIHN0YXRpYyBpbnQgaDI2MV9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFp bkVuY0NvbnRleHQgKmNvbnN0IG0pCiAvKioKICAqIEVuY29kZSBhIGdyb3VwIG9mIGJsb2NrcyBo ZWFkZXIuCiAgKi8KLXN0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX2dvYl9oZWFkZXIoTXBlZ0VuY0Nv bnRleHQgKnMsIGludCBtYl9saW5lKQorc3RhdGljIHZvaWQgaDI2MV9lbmNvZGVfZ29iX2hlYWRl cihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgbWJfbGluZSkKIHsKICAgICBIMjYxRW5jQ29u dGV4dCAqY29uc3QgaCA9IChIMjYxRW5jQ29udGV4dCAqKXM7CiAgICAgaWYgKGgtPmZvcm1hdCA9 PSBIMjYxX1FDSUYpIHsKQEAgLTEwOSwzOCArMTA5LDM4IEBAIHN0YXRpYyB2b2lkIGgyNjFfZW5j b2RlX2dvYl9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMsIGludCBtYl9saW5lKQogICAgIH0KICAg ICBwdXRfYml0cygmcy0+cGIsIDE2LCAxKTsgICAgICAgICAgICAvKiBHQlNDICovCiAgICAgcHV0 X2JpdHMoJnMtPnBiLCA0LCBoLT5nb2JfbnVtYmVyKTsgLyogR04gKi8KLSAgICBwdXRfYml0cygm cy0+cGIsIDUsIHMtPnFzY2FsZSk7ICAgICAvKiBHUVVBTlQgKi8KKyAgICBwdXRfYml0cygmcy0+ cGIsIDUsIHMtPmMucXNjYWxlKTsgICAgIC8qIEdRVUFOVCAqLwogICAgIHB1dF9iaXRzKCZzLT5w YiwgMSwgMCk7ICAgICAgICAgICAgIC8qIG5vIEdFSSAqLwotICAgIHMtPm1iX3NraXBfcnVuID0g MDsKLSAgICBzLT5sYXN0X212WzBdWzBdWzBdID0gMDsKLSAgICBzLT5sYXN0X212WzBdWzBdWzFd ID0gMDsKKyAgICBzLT5jLm1iX3NraXBfcnVuID0gMDsKKyAgICBzLT5jLmxhc3RfbXZbMF1bMF1b MF0gPSAwOworICAgIHMtPmMubGFzdF9tdlswXVswXVsxXSA9IDA7CiB9CiAKLXZvaWQgZmZfaDI2 MV9yZW9yZGVyX21iX2luZGV4KE1wZWdFbmNDb250ZXh0ICpzKQordm9pZCBmZl9oMjYxX3Jlb3Jk ZXJfbWJfaW5kZXgoTVBWRW5jQ29udGV4dCAqY29uc3QgcykKIHsKICAgICBjb25zdCBIMjYxRW5j Q29udGV4dCAqY29uc3QgaCA9IChIMjYxRW5jQ29udGV4dCopczsKLSAgICBpbnQgaW5kZXggPSBz LT5tYl94ICsgcy0+bWJfeSAqIHMtPm1iX3dpZHRoOworICAgIGludCBpbmRleCA9IHMtPmMubWJf eCArIHMtPmMubWJfeSAqIHMtPmMubWJfd2lkdGg7CiAKICAgICBpZiAoaW5kZXggJSAxMSA9PSAw KSB7CiAgICAgICAgIGlmIChpbmRleCAlIDMzID09IDApCiAgICAgICAgICAgICBoMjYxX2VuY29k ZV9nb2JfaGVhZGVyKHMsIDApOwotICAgICAgICBzLT5sYXN0X212WzBdWzBdWzBdID0gMDsKLSAg ICAgICAgcy0+bGFzdF9tdlswXVswXVsxXSA9IDA7CisgICAgICAgIHMtPmMubGFzdF9tdlswXVsw XVswXSA9IDA7CisgICAgICAgIHMtPmMubGFzdF9tdlswXVswXVsxXSA9IDA7CiAgICAgfQogCiAg ICAgLyogZm9yIENJRiB0aGUgR09CJ3MgYXJlIGZyYWdtZW50ZWQgaW4gdGhlIG1pZGRsZSBvZiBh IHNjYW5saW5lCiAgICAgICogdGhhdCdzIHdoeSB3ZSBuZWVkIHRvIGFkanVzdCB0aGUgeCBhbmQg eSBpbmRleCBvZiB0aGUgbWFjcm9ibG9ja3MgKi8KICAgICBpZiAoaC0+Zm9ybWF0ID09IEgyNjFf Q0lGKSB7Ci0gICAgICAgIHMtPm1iX3ggID0gaW5kZXggJSAxMTsKKyAgICAgICAgcy0+Yy5tYl94 ICA9IGluZGV4ICUgMTE7CiAgICAgICAgIGluZGV4ICAgLz0gMTE7Ci0gICAgICAgIHMtPm1iX3kg ID0gaW5kZXggJSAzOworICAgICAgICBzLT5jLm1iX3kgID0gaW5kZXggJSAzOwogICAgICAgICBp bmRleCAgIC89IDM7Ci0gICAgICAgIHMtPm1iX3ggKz0gMTEgKiAoaW5kZXggJSAyKTsKKyAgICAg ICAgcy0+Yy5tYl94ICs9IDExICogKGluZGV4ICUgMik7CiAgICAgICAgIGluZGV4ICAgLz0gMjsK LSAgICAgICAgcy0+bWJfeSArPSAzICogaW5kZXg7CisgICAgICAgIHMtPmMubWJfeSArPSAzICog aW5kZXg7CiAKLSAgICAgICAgZmZfaW5pdF9ibG9ja19pbmRleChzKTsKLSAgICAgICAgZmZfdXBk YXRlX2Jsb2NrX2luZGV4KHMsIDgsIDAsIDEpOworICAgICAgICBmZl9pbml0X2Jsb2NrX2luZGV4 KCZzLT5jKTsKKyAgICAgICAgZmZfdXBkYXRlX2Jsb2NrX2luZGV4KCZzLT5jLCA4LCAwLCAxKTsK ICAgICB9CiB9CiAKQEAgLTE1MCwxMiArMTUwLDEyIEBAIHN0YXRpYyB2b2lkIGgyNjFfZW5jb2Rl X21vdGlvbihQdXRCaXRDb250ZXh0ICpwYiwgaW50IHZhbCkKICAgICAgICAgICAgICAgICAgaDI2 MV9tdl9jb2Rlc1tNVl9UQUJfT0ZGU0VUICsgdmFsXVswXSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg aW50IGdldF9jYnAoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbNl1bNjRdKQorc3Rh dGljIGlubGluZSBpbnQgZ2V0X2NicChjb25zdCBpbnQgYmxvY2tfbGFzdF9pbmRleFs2XSkKIHsK ICAgICBpbnQgaSwgY2JwOwogICAgIGNicCA9IDA7CiAgICAgZm9yIChpID0gMDsgaSA8IDY7IGkr KykKLSAgICAgICAgaWYgKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKKyAgICAgICAgaWYg KGJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKICAgICAgICAgICAgIGNicCB8PSAxIDw8ICg1IC0g aSk7CiAgICAgcmV0dXJuIGNicDsKIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHN0YXRpYyBpbmxp bmUgaW50IGdldF9jYnAoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbNl1bNjRdKQog ICovCiBzdGF0aWMgdm9pZCBoMjYxX2VuY29kZV9ibG9jayhIMjYxRW5jQ29udGV4dCAqaCwgaW50 MTZfdCAqYmxvY2ssIGludCBuKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJmgt PnMuczsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJmgtPnMuczsKICAgICBpbnQgbGV2 ZWwsIHJ1biwgaSwgaiwgbGFzdF9pbmRleCwgbGFzdF9ub25femVybzsKIAotICAgIGlmIChzLT5t Yl9pbnRyYSkgeworICAgIGlmIChzLT5jLm1iX2ludHJhKSB7CiAgICAgICAgIC8qIERDIGNvZWYg Ki8KICAgICAgICAgbGV2ZWwgPSBibG9ja1swXTsKICAgICAgICAgLyogMjU1IGNhbm5vdCBiZSBy ZXByZXNlbnRlZCwgc28gd2UgY2xhbXAgKi8KQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9p ZCBoMjYxX2VuY29kZV9ibG9jayhIMjYxRW5jQ29udGV4dCAqaCwgaW50MTZfdCAqYmxvY2ssIGlu dCBuKQogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA4LCBsZXZlbCk7CiAgICAgICAgIGkg PSAxOwogICAgIH0gZWxzZSBpZiAoKGJsb2NrWzBdID09IDEgfHwgYmxvY2tbMF0gPT0gLTEpICYm Ci0gICAgICAgICAgICAgICAocy0+YmxvY2tfbGFzdF9pbmRleFtuXSA+IC0xKSkgeworICAgICAg ICAgICAgICAgKHMtPmMuYmxvY2tfbGFzdF9pbmRleFtuXSA+IC0xKSkgewogICAgICAgICAvLyBz cGVjaWFsIGNhc2UKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBibG9ja1swXSA+IDAgPyAy IDogMyk7CiAgICAgICAgIGkgPSAxOwpAQCAtMTk4LDEwICsxOTgsMTAgQEAgc3RhdGljIHZvaWQg aDI2MV9lbmNvZGVfYmxvY2soSDI2MUVuY0NvbnRleHQgKmgsIGludDE2X3QgKmJsb2NrLCBpbnQg bikKICAgICB9CiAKICAgICAvKiBBQyBjb2VmcyAqLwotICAgIGxhc3RfaW5kZXggICAgPSBzLT5i bG9ja19sYXN0X2luZGV4W25dOworICAgIGxhc3RfaW5kZXggICAgPSBzLT5jLmJsb2NrX2xhc3Rf aW5kZXhbbl07CiAgICAgbGFzdF9ub25femVybyA9IGkgLSAxOwogICAgIGZvciAoOyBpIDw9IGxh c3RfaW5kZXg7IGkrKykgewotICAgICAgICBqICAgICA9IHMtPmludHJhX3NjYW50YWJsZS5wZXJt dXRhdGVkW2ldOworICAgICAgICBqICAgICA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0 ZWRbaV07CiAgICAgICAgIGxldmVsID0gYmxvY2tbal07CiAgICAgICAgIGlmIChsZXZlbCkgewog ICAgICAgICAgICAgcnVuICAgID0gaSAtIGxhc3Rfbm9uX3plcm8gLSAxOwpAQCAtMjI1LDcgKzIy NSw3IEBAIHN0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX2Jsb2NrKEgyNjFFbmNDb250ZXh0ICpoLCBp bnQxNl90ICpibG9jaywgaW50IG4pCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgMHgyKTsg Ly8gRU9CCiB9CiAKLXN0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpj b25zdCBzLCBpbnQxNl90IGJsb2NrWzZdWzY0XSwKK3N0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX21i KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbNl1bNjRdLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3kpCiB7CiAgICAgLyog VGhlIGZvbGxvd2luZyBpcyBvbmx5IGFsbG93ZWQgYmVjYXVzZSB0aGlzIGVuY29kZXIKQEAgLTIz OCwzNiArMjM4LDM2IEBAIHN0YXRpYyB2b2lkIGgyNjFfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0 ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrWzZdWzY0XSwKIAogICAgIGNvbS0+bXR5cGUgPSAwOwog Ci0gICAgaWYgKCFzLT5tYl9pbnRyYSkgeworICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgewogICAg ICAgICAvKiBjb21wdXRlIGNicCAqLwotICAgICAgICBjYnAgPSBnZXRfY2JwKHMsIGJsb2NrKTsK KyAgICAgICAgY2JwID0gZ2V0X2NicChzLT5jLmJsb2NrX2xhc3RfaW5kZXgpOwogCiAgICAgICAg IC8qIG12ZCBpbmRpY2F0ZXMgaWYgdGhpcyBibG9jayBpcyBtb3Rpb24gY29tcGVuc2F0ZWQgKi8K ICAgICAgICAgbXZkID0gbW90aW9uX3ggfCBtb3Rpb25feTsKIAogICAgICAgICBpZiAoKGNicCB8 IG12ZCkgPT0gMCkgewogICAgICAgICAgICAgLyogc2tpcCBtYWNyb2Jsb2NrICovCi0gICAgICAg ICAgICBzLT5tYl9za2lwX3J1bisrOwotICAgICAgICAgICAgcy0+bGFzdF9tdlswXVswXVswXSA9 IDA7Ci0gICAgICAgICAgICBzLT5sYXN0X212WzBdWzBdWzFdID0gMDsKLSAgICAgICAgICAgIHMt PnFzY2FsZSAtPSBzLT5kcXVhbnQ7CisgICAgICAgICAgICBzLT5jLm1iX3NraXBfcnVuKys7Cisg ICAgICAgICAgICBzLT5jLmxhc3RfbXZbMF1bMF1bMF0gPSAwOworICAgICAgICAgICAgcy0+Yy5s YXN0X212WzBdWzBdWzFdID0gMDsKKyAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFu dDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8qIE1CIGlz IG5vdCBza2lwcGVkLCBlbmNvZGUgTUJBICovCiAgICAgcHV0X2JpdHMoJnMtPnBiLAotICAgICAg ICAgICAgIGZmX2gyNjFfbWJhX2JpdHNbcy0+bWJfc2tpcF9ydW5dLAotICAgICAgICAgICAgIGZm X2gyNjFfbWJhX2NvZGVbcy0+bWJfc2tpcF9ydW5dKTsKLSAgICBzLT5tYl9za2lwX3J1biA9IDA7 CisgICAgICAgICAgICAgZmZfaDI2MV9tYmFfYml0c1tzLT5jLm1iX3NraXBfcnVuXSwKKyAgICAg ICAgICAgICBmZl9oMjYxX21iYV9jb2RlW3MtPmMubWJfc2tpcF9ydW5dKTsKKyAgICBzLT5jLm1i X3NraXBfcnVuID0gMDsKIAogICAgIC8qIGNhbGN1bGF0ZSBNVFlQRSAqLwotICAgIGlmICghcy0+ bWJfaW50cmEpIHsKKyAgICBpZiAoIXMtPmMubWJfaW50cmEpIHsKICAgICAgICAgY29tLT5tdHlw ZSsrOwogCi0gICAgICAgIGlmIChtdmQgfHwgcy0+bG9vcF9maWx0ZXIpCisgICAgICAgIGlmICht dmQgfHwgcy0+Yy5sb29wX2ZpbHRlcikKICAgICAgICAgICAgIGNvbS0+bXR5cGUgKz0gMzsKLSAg ICAgICAgaWYgKHMtPmxvb3BfZmlsdGVyKQorICAgICAgICBpZiAocy0+Yy5sb29wX2ZpbHRlcikK ICAgICAgICAgICAgIGNvbS0+bXR5cGUgKz0gMzsKICAgICAgICAgaWYgKGNicCkKICAgICAgICAg ICAgIGNvbS0+bXR5cGUrKzsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgdm9pZCBoMjYxX2Vu Y29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1s2XVs2NF0sCiAg ICAgaWYgKHMtPmRxdWFudCAmJiBjYnApIHsKICAgICAgICAgY29tLT5tdHlwZSsrOwogICAgIH0g ZWxzZQotICAgICAgICBzLT5xc2NhbGUgLT0gcy0+ZHF1YW50OworICAgICAgICBzLT5jLnFzY2Fs ZSAtPSBzLT5kcXVhbnQ7CiAKICAgICBwdXRfYml0cygmcy0+cGIsCiAgICAgICAgICAgICAgZmZf aDI2MV9tdHlwZV9iaXRzW2NvbS0+bXR5cGVdLApAQCAtMjg2LDE1ICsyODYsMTUgQEAgc3RhdGlj IHZvaWQgaDI2MV9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxv Y2tbNl1bNjRdLAogICAgIGNvbS0+bXR5cGUgPSBmZl9oMjYxX210eXBlX21hcFtjb20tPm10eXBl XTsKIAogICAgIGlmIChJU19RVUFOVChjb20tPm10eXBlKSkgewotICAgICAgICBmZl9zZXRfcXNj YWxlKHMsIHMtPnFzY2FsZSArIHMtPmRxdWFudCk7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwg NSwgcy0+cXNjYWxlKTsKKyAgICAgICAgZmZfc2V0X3FzY2FsZSgmcy0+Yywgcy0+Yy5xc2NhbGUg KyBzLT5kcXVhbnQpOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDUsIHMtPmMucXNjYWxlKTsK ICAgICB9CiAKICAgICBpZiAoSVNfMTZYMTYoY29tLT5tdHlwZSkpIHsKLSAgICAgICAgbXZfZGlm Zl94ICAgICAgID0gKG1vdGlvbl94ID4+IDEpIC0gcy0+bGFzdF9tdlswXVswXVswXTsKLSAgICAg ICAgbXZfZGlmZl95ICAgICAgID0gKG1vdGlvbl95ID4+IDEpIC0gcy0+bGFzdF9tdlswXVswXVsx XTsKLSAgICAgICAgcy0+bGFzdF9tdlswXVswXVswXSA9IChtb3Rpb25feCA+PiAxKTsKLSAgICAg ICAgcy0+bGFzdF9tdlswXVswXVsxXSA9IChtb3Rpb25feSA+PiAxKTsKKyAgICAgICAgbXZfZGlm Zl94ICAgICAgID0gKG1vdGlvbl94ID4+IDEpIC0gcy0+Yy5sYXN0X212WzBdWzBdWzBdOworICAg ICAgICBtdl9kaWZmX3kgICAgICAgPSAobW90aW9uX3kgPj4gMSkgLSBzLT5jLmxhc3RfbXZbMF1b MF1bMV07CisgICAgICAgIHMtPmMubGFzdF9tdlswXVswXVswXSA9IChtb3Rpb25feCA+PiAxKTsK KyAgICAgICAgcy0+Yy5sYXN0X212WzBdWzBdWzFdID0gKG1vdGlvbl95ID4+IDEpOwogICAgICAg ICBoMjYxX2VuY29kZV9tb3Rpb24oJnMtPnBiLCBtdl9kaWZmX3gpOwogICAgICAgICBoMjYxX2Vu Y29kZV9tb3Rpb24oJnMtPnBiLCBtdl9kaWZmX3kpOwogICAgIH0KQEAgLTMxMCw4ICszMTAsOCBA QCBzdGF0aWMgdm9pZCBoMjYxX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50 MTZfdCBibG9ja1s2XVs2NF0sCiAgICAgICAgIGgyNjFfZW5jb2RlX2Jsb2NrKGgsIGJsb2NrW2ld LCBpKTsKIAogICAgIGlmICghSVNfMTZYMTYoY29tLT5tdHlwZSkpIHsKLSAgICAgICAgcy0+bGFz dF9tdlswXVswXVswXSA9IDA7Ci0gICAgICAgIHMtPmxhc3RfbXZbMF1bMF1bMV0gPSAwOworICAg ICAgICBzLT5jLmxhc3RfbXZbMF1bMF1bMF0gPSAwOworICAgICAgICBzLT5jLmxhc3RfbXZbMF1b MF1bMV0gPSAwOwogICAgIH0KIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIHN0YXRpYyBhdl9jb2xk IGludCBoMjYxX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKICAgICBzdGF0 aWMgQVZPbmNlIGluaXRfc3RhdGljX29uY2UgPSBBVl9PTkNFX0lOSVQ7CiAgICAgSDI2MUVuY0Nv bnRleHQgKmNvbnN0IGggPSBhdmN0eC0+cHJpdl9kYXRhOwotICAgIE1wZWdFbmNDb250ZXh0ICpj b25zdCBzID0gJmgtPnMuczsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJmgtPnMuczsK IAogICAgIGlmIChhdmN0eC0+d2lkdGggPT0gMTc2ICYmIGF2Y3R4LT5oZWlnaHQgPT0gMTQ0KSB7 CiAgICAgICAgIGgtPmZvcm1hdCA9IEgyNjFfUUNJRjsKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0 aWMgYXZfY29sZCBpbnQgaDI2MV9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAg ICAgICAgICAgICAgICBhdmN0eC0+d2lkdGgsIGF2Y3R4LT5oZWlnaHQpOwogICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KLSAgICBzLT5wcml2YXRlX2N0eCA9ICZoLT5jb21t b247CisgICAgcy0+Yy5wcml2YXRlX2N0eCA9ICZoLT5jb21tb247CiAgICAgaC0+cy5lbmNvZGVf cGljdHVyZV9oZWFkZXIgPSBoMjYxX2VuY29kZV9waWN0dXJlX2hlYWRlcjsKICAgICBzLT5lbmNv ZGVfbWIgICAgICAgICAgICAgICA9IGgyNjFfZW5jb2RlX21iOwogCkBAIC0zNzcsNyArMzc3LDcg QEAgc3RhdGljIGF2X2NvbGQgaW50IGgyNjFfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4KQogICAgIHMtPm1heF9xY29lZmYgICAgICAgPSAxMjc7CiAgICAgcy0+YWNfZXNjX2xlbmd0 aCAgICA9IEgyNjFfRVNDX0xFTjsKIAotICAgIHMtPm1lLm12X3BlbmFsdHkgPSBtdl9wZW5hbHR5 OworICAgIHMtPmMubWUubXZfcGVuYWx0eSA9IG12X3BlbmFsdHk7CiAKICAgICBzLT5pbnRyYV9h Y192bGNfbGVuZ3RoICAgICAgPSBzLT5pbnRlcl9hY192bGNfbGVuZ3RoICAgICAgPSB1bmlfaDI2 MV9ybF9sZW47CiAgICAgcy0+aW50cmFfYWNfdmxjX2xhc3RfbGVuZ3RoID0gcy0+aW50ZXJfYWNf dmxjX2xhc3RfbGVuZ3RoID0gdW5pX2gyNjFfcmxfbGVuX2xhc3Q7CmRpZmYgLS1naXQgYS9saWJh dmNvZGVjL2gyNjFlbmMuaCBiL2xpYmF2Y29kZWMvaDI2MWVuYy5oCmluZGV4IDc5Y2RkMzFjMmYu Ljc3ZjA3MmE1ZTcgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaDI2MWVuYy5oCisrKyBiL2xpYmF2 Y29kZWMvaDI2MWVuYy5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaWZuZGVmIEFWQ09ERUNfSDI2MUVO Q19ICiAjZGVmaW5lIEFWQ09ERUNfSDI2MUVOQ19ICiAKLSNpbmNsdWRlICJtcGVndmlkZW8uaCIK K3R5cGVkZWYgc3RydWN0IE1QVkVuY0NvbnRleHQgTVBWRW5jQ29udGV4dDsKIAotdm9pZCBmZl9o MjYxX3Jlb3JkZXJfbWJfaW5kZXgoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9oMjYxX3Jl b3JkZXJfbWJfaW5kZXgoTVBWRW5jQ29udGV4dCAqcyk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9oMjYzZW5jLmggYi9saWJhdmNvZGVjL2gyNjNlbmMuaAppbmRleCBkZDljYWE3 OTY5Li4xZjQ1OWEzMzJjIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjNlbmMuaAorKysgYi9s aWJhdmNvZGVjL2gyNjNlbmMuaApAQCAtMjcsMjIgKzI3LDIyIEBACiBjb25zdCB1aW50OF90ICgq ZmZfaDI2M19nZXRfbXZfcGVuYWx0eSh2b2lkKSlbTUFYX0RNVioyKzFdOwogCiB2b2lkIGZmX2gy NjNfZW5jb2RlX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKm0pOwotdm9pZCBmZl9oMjYzX2VuY29k ZV9nb2JfaGVhZGVyKE1wZWdFbmNDb250ZXh0ICogcywgaW50IG1iX2xpbmUpOwotdm9pZCBmZl9o MjYzX2VuY29kZV9tYmEoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9oMjYzX2VuY29kZV9n b2JfaGVhZGVyKE1QVkVuY0NvbnRleHQgKnMsIGludCBtYl9saW5lKTsKK3ZvaWQgZmZfaDI2M19l bmNvZGVfbWJhKE1QVkVuY0NvbnRleHQgKnMpOwogCi12b2lkIGZmX2NsZWFuX2gyNjNfcXNjYWxl cyhNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX2NsZWFuX2gyNjNfcXNjYWxlcyhNUFZFbmND b250ZXh0ICpzKTsKIAogdm9pZCBmZl9oMjYzX2VuY29kZV9tb3Rpb24oUHV0Qml0Q29udGV4dCAq cGIsIGludCB2YWwsIGludCBmX2NvZGUpOwotdm9pZCBmZl9oMjYzX3VwZGF0ZV9tYihNcGVnRW5j Q29udGV4dCAqcyk7Cit2b2lkIGZmX2gyNjNfdXBkYXRlX21iKE1QVkVuY0NvbnRleHQgKnMpOwog Ci1zdGF0aWMgaW5saW5lIHZvaWQgZmZfaDI2M19lbmNvZGVfbW90aW9uX3ZlY3RvcihNcGVnRW5j Q29udGV4dCAqIHMsCitzdGF0aWMgaW5saW5lIHZvaWQgZmZfaDI2M19lbmNvZGVfbW90aW9uX3Zl Y3RvcihNUFZFbmNDb250ZXh0ICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHgsIGludCB5LCBpbnQgZl9jb2RlKQogewogICAgIGZmX2gyNjNf ZW5jb2RlX21vdGlvbigmcy0+cGIsIHgsIGZfY29kZSk7CiAgICAgZmZfaDI2M19lbmNvZGVfbW90 aW9uKCZzLT5wYiwgeSwgZl9jb2RlKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgZ2V0X3BfY2Jw KE1wZWdFbmNDb250ZXh0ICogcywKK3N0YXRpYyBpbmxpbmUgaW50IGdldF9wX2NicChNUFZFbmND b250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgYmxvY2tbNl1b NjRdLAogICAgICAgICAgICAgICAgICAgICAgIGludCBtb3Rpb25feCwgaW50IG1vdGlvbl95KXsK ICAgICBpbnQgY2JwOwpAQCAtNTEsOCArNTEsOCBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRfcF9j YnAoTXBlZ0VuY0NvbnRleHQgKiBzLAogICAgICAgICBpbnQgYmVzdF9jYnB5X3Njb3JlID0gSU5U X01BWDsKICAgICAgICAgaW50IGJlc3RfY2JwY19zY29yZSA9IElOVF9NQVg7CiAgICAgICAgIGlu dCBjYnBjID0gKC0xKSwgY2JweSA9ICgtMSk7Ci0gICAgICAgIGNvbnN0IGludCBvZmZzZXQgPSAo cy0+bXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2ID8gMCA6IDE2KSArIChzLT5kcXVhbnQgPyA4IDog MCk7Ci0gICAgICAgIGNvbnN0IGludCBsYW1iZGEgPSBzLT5sYW1iZGEyID4+IChGRl9MQU1CREFf U0hJRlQgLSA2KTsKKyAgICAgICAgY29uc3QgaW50IG9mZnNldCA9IChzLT5jLm12X3R5cGUgPT0g TVZfVFlQRV8xNlgxNiA/IDAgOiAxNikgKyAocy0+ZHF1YW50ID8gOCA6IDApOworICAgICAgICBj b25zdCBpbnQgbGFtYmRhID0gcy0+Yy5sYW1iZGEyID4+IChGRl9MQU1CREFfU0hJRlQgLSA2KTsK IAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICAgICAgaW50 IHNjb3JlID0gZmZfaDI2M19pbnRlcl9NQ0JQQ19iaXRzW2kgKyBvZmZzZXRdICogbGFtYmRhOwpA QCAtNzgsMjEgKzc4LDIxIEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF9wX2NicChNcGVnRW5jQ29u dGV4dCAqIHMsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2JwID0gY2JwYyAr IDQgKiBjYnB5OwotICAgICAgICBpZiAoIShtb3Rpb25feCB8IG1vdGlvbl95IHwgcy0+ZHF1YW50 KSAmJiBzLT5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsKKyAgICAgICAgaWYgKCEobW90aW9u X3ggfCBtb3Rpb25feSB8IHMtPmRxdWFudCkgJiYgcy0+Yy5tdl90eXBlID09IE1WX1RZUEVfMTZY MTYpIHsKICAgICAgICAgICAgIGlmIChiZXN0X2NicHlfc2NvcmUgKyBiZXN0X2NicGNfc2NvcmUg KyAyICogbGFtYmRhID49IDApCiAgICAgICAgICAgICAgICAgY2JwPSAwOwogICAgICAgICB9CiAK ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyBpKyspIHsKLSAgICAgICAgICAgIGlmIChz LT5ibG9ja19sYXN0X2luZGV4W2ldID49IDAgJiYgISgoY2JwID4+ICg1IC0gaSkpICYgMSkpIHsK LSAgICAgICAgICAgICAgICBzLT5ibG9ja19sYXN0X2luZGV4W2ldID0gLTE7Ci0gICAgICAgICAg ICAgICAgcy0+YmRzcC5jbGVhcl9ibG9jayhzLT5ibG9ja1tpXSk7CisgICAgICAgICAgICBpZiAo cy0+Yy5ibG9ja19sYXN0X2luZGV4W2ldID49IDAgJiYgISgoY2JwID4+ICg1IC0gaSkpICYgMSkp IHsKKyAgICAgICAgICAgICAgICBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKKyAgICAg ICAgICAgICAgICBzLT5jLmJkc3AuY2xlYXJfYmxvY2socy0+Yy5ibG9ja1tpXSk7CiAgICAgICAg ICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBjYnAgPSAwOwogICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykgewotICAgICAgICAgICAgaWYgKHMtPmJsb2Nr X2xhc3RfaW5kZXhbaV0gPj0gMCkKKyAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xhc3RfaW5k ZXhbaV0gPj0gMCkKICAgICAgICAgICAgICAgICBjYnAgfD0gMSA8PCAoNSAtIGkpOwogICAgICAg ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9pdHVoMjYzZW5jLmMgYi9saWJhdmNv ZGVjL2l0dWgyNjNlbmMuYwppbmRleCA4NzZlMTc4MDcwLi42YmQ3YjZhNmNkIDEwMDY0NAotLS0g YS9saWJhdmNvZGVjL2l0dWgyNjNlbmMuYworKysgYi9saWJhdmNvZGVjL2l0dWgyNjNlbmMuYwpA QCAtMjIzLDE5ICsyMjMsMTkgQEAgYXZfY29uc3QgaW50IGZmX2gyNjNfYXNwZWN0X3RvX2luZm8o QVZSYXRpb25hbCBhc3BlY3QpewogCiBzdGF0aWMgaW50IGgyNjNfZW5jb2RlX3BpY3R1cmVfaGVh ZGVyKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpj b25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAg IGludCBmb3JtYXQsIGNvZGVkX2ZyYW1lX3JhdGUsIGNvZGVkX2ZyYW1lX3JhdGVfYmFzZSwgaSwg dGVtcF9yZWY7CiAgICAgaW50IGJlc3RfY2xvY2tfY29kZT0xOwogICAgIGludCBiZXN0X2Rpdmlz b3I9NjA7CiAgICAgaW50IGJlc3RfZXJyb3I9IElOVF9NQVg7CiAgICAgaW50IGN1c3RvbV9wY2Y7 CiAKLSAgICBpZihzLT5oMjYzX3BsdXMpeworICAgIGlmKHMtPmMuaDI2M19wbHVzKXsKICAgICAg ICAgZm9yKGk9MDsgaTwyOyBpKyspewogICAgICAgICAgICAgaW50IGRpdiwgZXJyb3I7Ci0gICAg ICAgICAgICBkaXY9IChzLT5hdmN0eC0+dGltZV9iYXNlLm51bSoxODAwMDAwTEwgKyA1MDBMTCpz LT5hdmN0eC0+dGltZV9iYXNlLmRlbikgLyAoKDEwMDBMTCtpKSpzLT5hdmN0eC0+dGltZV9iYXNl LmRlbik7CisgICAgICAgICAgICBkaXY9IChzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVtKjE4MDAw MDBMTCArIDUwMExMKnMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4pIC8gKCgxMDAwTEwraSkqcy0+ Yy5hdmN0eC0+dGltZV9iYXNlLmRlbik7CiAgICAgICAgICAgICBkaXY9IGF2X2NsaXAoZGl2LCAx LCAxMjcpOwotICAgICAgICAgICAgZXJyb3I9IEZGQUJTKHMtPmF2Y3R4LT50aW1lX2Jhc2UubnVt KjE4MDAwMDBMTCAtICgxMDAwTEwraSkqcy0+YXZjdHgtPnRpbWVfYmFzZS5kZW4qZGl2KTsKKyAg ICAgICAgICAgIGVycm9yPSBGRkFCUyhzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVtKjE4MDAwMDBM TCAtICgxMDAwTEwraSkqcy0+Yy5hdmN0eC0+dGltZV9iYXNlLmRlbipkaXYpOwogICAgICAgICAg ICAgaWYoZXJyb3IgPCBiZXN0X2Vycm9yKXsKICAgICAgICAgICAgICAgICBiZXN0X2Vycm9yPSBl cnJvcjsKICAgICAgICAgICAgICAgICBiZXN0X2Rpdmlzb3I9IGRpdjsKQEAgLTI1MCw4ICsyNTAs OCBAQCBzdGF0aWMgaW50IGgyNjNfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250 ZXh0ICpjb25zdCBtKQogICAgIGFsaWduX3B1dF9iaXRzKCZzLT5wYik7CiAKICAgICBwdXRfYml0 cygmcy0+cGIsIDIyLCAweDIwKTsgLyogUFNDICovCi0gICAgdGVtcF9yZWY9IHMtPnBpY3R1cmVf bnVtYmVyICogKGludDY0X3QpY29kZWRfZnJhbWVfcmF0ZSAqIHMtPmF2Y3R4LT50aW1lX2Jhc2Uu bnVtIC8gLy9GSVhNRSB1c2UgdGltZXN0YW1wCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGNv ZGVkX2ZyYW1lX3JhdGVfYmFzZSAqIChpbnQ2NF90KXMtPmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsK KyAgICB0ZW1wX3JlZj0gcy0+Yy5waWN0dXJlX251bWJlciAqIChpbnQ2NF90KWNvZGVkX2ZyYW1l X3JhdGUgKiBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVtIC8gLy9GSVhNRSB1c2UgdGltZXN0YW1w CisgICAgICAgICAgICAgICAgICAgICAgICAgKGNvZGVkX2ZyYW1lX3JhdGVfYmFzZSAqIChpbnQ2 NF90KXMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4pOwogICAgIHB1dF9zYml0cygmcy0+cGIsIDgs IHRlbXBfcmVmKTsgLyogVGVtcG9yYWxSZWZlcmVuY2UgKi8KIAogICAgIHB1dF9iaXRzKCZzLT5w YiwgMSwgMSk7ICAgICAvKiBtYXJrZXIgKi8KQEAgLTI2MCwxOSArMjYwLDE5IEBAIHN0YXRpYyBp bnQgaDI2M19lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0p CiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgIC8qIGNhbWVyYSAgb2ZmICovCiAgICAg cHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgIC8qIGZyZWV6ZSBwaWN0dXJlIHJlbGVhc2Ugb2Zm ICovCiAKLSAgICBmb3JtYXQgPSBmZl9tYXRjaF8ydWludDE2KGZmX2gyNjNfZm9ybWF0LCBGRl9B UlJBWV9FTEVNUyhmZl9oMjYzX2Zvcm1hdCksIHMtPndpZHRoLCBzLT5oZWlnaHQpOwotICAgIGlm ICghcy0+aDI2M19wbHVzKSB7CisgICAgZm9ybWF0ID0gZmZfbWF0Y2hfMnVpbnQxNihmZl9oMjYz X2Zvcm1hdCwgRkZfQVJSQVlfRUxFTVMoZmZfaDI2M19mb3JtYXQpLCBzLT5jLndpZHRoLCBzLT5j LmhlaWdodCk7CisgICAgaWYgKCFzLT5jLmgyNjNfcGx1cykgewogICAgICAgICAvKiBILjI2M3Yx ICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMywgZm9ybWF0KTsKLSAgICAgICAgcHV0X2Jp dHMoJnMtPnBiLCAxLCAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9QKSk7CisgICAg ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQ RV9QKSk7CiAgICAgICAgIC8qIEJ5IG5vdyBVTVYgSVMgRElTQUJMRUQgT04gSC4yNjN2MSwgc2lu Y2UgdGhlIHJlc3RyaWN0aW9ucwogICAgICAgICBvZiBILjI2M3YxIFVNViBpbXBsaWVzIHRvIGNo ZWNrIHRoZSBwcmVkaWN0ZWQgTVYgYWZ0ZXIKICAgICAgICAgY2FsY3VsYXRpb24gb2YgdGhlIGN1 cnJlbnQgTUIgdG8gc2VlIGlmIHdlJ3JlIG9uIHRoZSBsaW1pdHMgKi8KICAgICAgICAgcHV0X2Jp dHMoJnMtPnBiLCAxLCAwKTsgICAgICAgICAvKiBVbnJlc3RyaWN0ZWQgTW90aW9uIFZlY3Rvcjog b2ZmICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAgICAgLyogU0FDOiBv ZmYgKi8KLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5vYm1jKTsgICAvKiBBZHZhbmNl ZCBQcmVkaWN0aW9uICovCisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5vYm1jKTsg ICAvKiBBZHZhbmNlZCBQcmVkaWN0aW9uICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwg MCk7ICAgICAgICAgLyogb25seSBJL1AtZnJhbWVzLCBubyBQQi1mcmFtZSAqLwotICAgICAgICBw dXRfYml0cygmcy0+cGIsIDUsIHMtPnFzY2FsZSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwg NSwgcy0+Yy5xc2NhbGUpOwogICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDApOyAgICAgICAg IC8qIENvbnRpbnVvdXMgUHJlc2VuY2UgTXVsdGlwb2ludCBtb2RlOiBvZmYgKi8KICAgICB9IGVs c2UgewogICAgICAgICBpbnQgdWZlcD0xOwpAQCAtMjg3LDI0ICsyODcsMjQgQEAgc3RhdGljIGlu dCBoMjYzX2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkK ICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMywgZm9ybWF0KTsKIAogICAgICAgICBwdXRf Yml0cygmcy0+cGIsMSwgY3VzdG9tX3BjZik7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLCBz LT51bXZwbHVzKTsgLyogVW5yZXN0cmljdGVkIE1vdGlvbiBWZWN0b3IgKi8KKyAgICAgICAgcHV0 X2JpdHMoJnMtPnBiLDEsIHMtPmMudW12cGx1cyk7IC8qIFVucmVzdHJpY3RlZCBNb3Rpb24gVmVj dG9yICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLDApOyAvKiBTQUM6IG9mZiAqLwotICAg ICAgICBwdXRfYml0cygmcy0+cGIsMSxzLT5vYm1jKTsgLyogQWR2YW5jZWQgUHJlZGljdGlvbiBN b2RlICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLHMtPmgyNjNfYWljKTsgLyogQWR2YW5j ZWQgSW50cmEgQ29kaW5nICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLHMtPmxvb3BfZmls dGVyKTsgLyogRGVibG9ja2luZyBGaWx0ZXIgKi8KLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDEs cy0+aDI2M19zbGljZV9zdHJ1Y3R1cmVkKTsgLyogU2xpY2UgU3RydWN0dXJlZCAqLworICAgICAg ICBwdXRfYml0cygmcy0+cGIsMSxzLT5jLm9ibWMpOyAvKiBBZHZhbmNlZCBQcmVkaWN0aW9uIE1v ZGUgKi8KKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDEscy0+Yy5oMjYzX2FpYyk7IC8qIEFkdmFu Y2VkIEludHJhIENvZGluZyAqLworICAgICAgICBwdXRfYml0cygmcy0+cGIsMSxzLT5jLmxvb3Bf ZmlsdGVyKTsgLyogRGVibG9ja2luZyBGaWx0ZXIgKi8KKyAgICAgICAgcHV0X2JpdHMoJnMtPnBi LDEscy0+Yy5oMjYzX3NsaWNlX3N0cnVjdHVyZWQpOyAvKiBTbGljZSBTdHJ1Y3R1cmVkICovCiAg ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLDApOyAvKiBSZWZlcmVuY2UgUGljdHVyZSBTZWxlY3Rp b246IG9mZiAqLwogICAgICAgICBwdXRfYml0cygmcy0+cGIsMSwwKTsgLyogSW5kZXBlbmRlbnQg U2VnbWVudCBEZWNvZGluZzogb2ZmICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLHMtPmFs dF9pbnRlcl92bGMpOyAvKiBBbHRlcm5hdGl2ZSBJbnRlciBWTEMgKi8KLSAgICAgICAgcHV0X2Jp dHMoJnMtPnBiLDEscy0+bW9kaWZpZWRfcXVhbnQpOyAvKiBNb2RpZmllZCBRdWFudGl6YXRpb246 ICovCisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLHMtPmMuYWx0X2ludGVyX3ZsYyk7IC8qIEFs dGVybmF0aXZlIEludGVyIFZMQyAqLworICAgICAgICBwdXRfYml0cygmcy0+cGIsMSxzLT5jLm1v ZGlmaWVkX3F1YW50KTsgLyogTW9kaWZpZWQgUXVhbnRpemF0aW9uOiAqLwogICAgICAgICBwdXRf Yml0cygmcy0+cGIsMSwxKTsgLyogIjEiIHRvIHByZXZlbnQgc3RhcnQgY29kZSBlbXVsYXRpb24g Ki8KICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDMsMCk7IC8qIFJlc2VydmVkICovCiAKLSAgICAg ICAgcHV0X2JpdHMoJnMtPnBiLCAzLCBzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1Ap OworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDMsIHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RV UkVfVFlQRV9QKTsKIAogICAgICAgICBwdXRfYml0cygmcy0+cGIsMSwwKTsgLyogUmVmZXJlbmNl IFBpY3R1cmUgUmVzYW1wbGluZzogb2ZmICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwxLDAp OyAvKiBSZWR1Y2VkLVJlc29sdXRpb24gVXBkYXRlOiBvZmYgKi8KLSAgICAgICAgcHV0X2JpdHMo JnMtPnBiLDEscy0+bm9fcm91bmRpbmcpOyAvKiBSb3VuZGluZyBUeXBlICovCisgICAgICAgIHB1 dF9iaXRzKCZzLT5wYiwxLHMtPmMubm9fcm91bmRpbmcpOyAvKiBSb3VuZGluZyBUeXBlICovCiAg ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwyLDApOyAvKiBSZXNlcnZlZCAqLwogICAgICAgICBwdXRf Yml0cygmcy0+cGIsMSwxKTsgLyogIjEiIHRvIHByZXZlbnQgc3RhcnQgY29kZSBlbXVsYXRpb24g Ki8KIApAQCAtMzEzLDE1ICszMTMsMTUgQEAgc3RhdGljIGludCBoMjYzX2VuY29kZV9waWN0dXJl X2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAgICAgICBpZiAoZm9ybWF0 ID09IDgpIHsKICAgICAgICAgICAgIC8qIEN1c3RvbSBQaWN0dXJlIEZvcm1hdCAoQ1BGTVQpICov Ci0gICAgICAgICAgICB1bnNpZ25lZCBhc3BlY3RfcmF0aW9faW5mbyA9IGZmX2gyNjNfYXNwZWN0 X3RvX2luZm8ocy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8pOworICAgICAgICAgICAgdW5z aWduZWQgYXNwZWN0X3JhdGlvX2luZm8gPSBmZl9oMjYzX2FzcGVjdF90b19pbmZvKHMtPmMuYXZj dHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8pOwogCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIs NCwgYXNwZWN0X3JhdGlvX2luZm8pOwotICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDksKHMt PndpZHRoID4+IDIpIC0gMSk7CisgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsOSwocy0+Yy53 aWR0aCA+PiAyKSAtIDEpOwogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLDEsMSk7IC8qICIx IiB0byBwcmV2ZW50IHN0YXJ0IGNvZGUgZW11bGF0aW9uICovCi0gICAgICAgICAgICBwdXRfYml0 cygmcy0+cGIsOSwocy0+aGVpZ2h0ID4+IDIpKTsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5w Yiw5LChzLT5jLmhlaWdodCA+PiAyKSk7CiAgICAgICAgICAgICBpZiAoYXNwZWN0X3JhdGlvX2lu Zm8gPT0gRkZfQVNQRUNUX0VYVEVOREVEKXsKLSAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+ cGIsIDgsIHMtPmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSk7Ci0gICAgICAgICAgICAg ICAgcHV0X2JpdHMoJnMtPnBiLCA4LCBzLT5hdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4p OworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwgcy0+Yy5hdmN0eC0+c2FtcGxl X2FzcGVjdF9yYXRpby5udW0pOworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwg cy0+Yy5hdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4pOwogICAgICAgICAgICAgfQogICAg ICAgICB9CiAgICAgICAgIGlmIChjdXN0b21fcGNmKSB7CkBAIC0zMzMsMjIgKzMzMywyMiBAQCBz dGF0aWMgaW50IGgyNjNfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250ZXh0ICpj b25zdCBtKQogICAgICAgICB9CiAKICAgICAgICAgLyogVW5saW1pdGVkIFVucmVzdHJpY3RlZCBN b3Rpb24gVmVjdG9ycyBJbmRpY2F0b3IgKFVVSSkgKi8KLSAgICAgICAgaWYgKHMtPnVtdnBsdXMp CisgICAgICAgIGlmIChzLT5jLnVtdnBsdXMpCiAvLyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5w YiwxLDEpOyAvKiBMaW1pdGVkIGFjY29yZGluZyB0YWJsZXMgb2YgQW5uZXggRCAqLwogLy9GSVhN RSBjaGVjayBhY3R1YWwgcmVxdWVzdGVkIHJhbmdlCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+ cGIsMiwxKTsgLyogdW5saW1pdGVkICovCi0gICAgICAgIGlmKHMtPmgyNjNfc2xpY2Vfc3RydWN0 dXJlZCkKKyAgICAgICAgaWYocy0+Yy5oMjYzX3NsaWNlX3N0cnVjdHVyZWQpCiAgICAgICAgICAg ICBwdXRfYml0cygmcy0+cGIsMiwwKTsgLyogbm8gd2VpcmQgc3VibW9kZXMgKi8KIAotICAgICAg ICBwdXRfYml0cygmcy0+cGIsIDUsIHMtPnFzY2FsZSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5w YiwgNSwgcy0+Yy5xc2NhbGUpOwogICAgIH0KIAogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7 ICAgICAvKiBubyBQRUkgKi8KIAotICAgIGlmKHMtPmgyNjNfc2xpY2Vfc3RydWN0dXJlZCl7Cisg ICAgaWYocy0+Yy5oMjYzX3NsaWNlX3N0cnVjdHVyZWQpewogICAgICAgICBwdXRfYml0cygmcy0+ cGIsIDEsIDEpOwogCi0gICAgICAgIGF2X2Fzc2VydDEocy0+bWJfeCA9PSAwICYmIHMtPm1iX3kg PT0gMCk7CisgICAgICAgIGF2X2Fzc2VydDEocy0+Yy5tYl94ID09IDAgJiYgcy0+Yy5tYl95ID09 IDApOwogICAgICAgICBmZl9oMjYzX2VuY29kZV9tYmEocyk7CiAKICAgICAgICAgcHV0X2JpdHMo JnMtPnBiLCAxLCAxKTsKQEAgLTM2MCw1MCArMzYwLDUxIEBAIHN0YXRpYyBpbnQgaDI2M19lbmNv ZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAvKioKICAqIEVu Y29kZSBhIGdyb3VwIG9mIGJsb2NrcyBoZWFkZXIuCiAgKi8KLXZvaWQgZmZfaDI2M19lbmNvZGVf Z29iX2hlYWRlcihNcGVnRW5jQ29udGV4dCAqIHMsIGludCBtYl9saW5lKQordm9pZCBmZl9oMjYz X2VuY29kZV9nb2JfaGVhZGVyKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCBtYl9saW5lKQog ewogICAgIHB1dF9iaXRzKCZzLT5wYiwgMTcsIDEpOyAvKiBHQlNDICovCiAKLSAgICBpZihzLT5o MjYzX3NsaWNlX3N0cnVjdHVyZWQpeworICAgIGlmKHMtPmMuaDI2M19zbGljZV9zdHJ1Y3R1cmVk KXsKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsKIAogICAgICAgICBmZl9oMjYzX2Vu Y29kZV9tYmEocyk7CiAKLSAgICAgICAgaWYocy0+bWJfbnVtID4gMTU4MykKKyAgICAgICAgaWYo cy0+Yy5tYl9udW0gPiAxNTgzKQogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsK LSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBzLT5xc2NhbGUpOyAvKiBHUVVBTlQgKi8KKyAg ICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBzLT5jLnFzY2FsZSk7IC8qIEdRVUFOVCAqLwogICAg ICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIs IHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSk7IC8qIEdGSUQgKi8KKyAgICAgICAg cHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSk7 IC8qIEdGSUQgKi8KICAgICB9ZWxzZXsKLSAgICAgICAgaW50IGdvYl9udW1iZXI9IG1iX2xpbmUg LyBzLT5nb2JfaW5kZXg7CisgICAgICAgIGludCBnb2JfbnVtYmVyPSBtYl9saW5lIC8gcy0+Yy5n b2JfaW5kZXg7CiAKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBnb2JfbnVtYmVyKTsgLyog R04gKi8KLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5waWN0X3R5cGUgPT0gQVZfUElD VFVSRV9UWVBFX0kpOyAvKiBHRklEICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+ cXNjYWxlKTsgLyogR1FVQU5UICovCisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+Yy5w aWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpOyAvKiBHRklEICovCisgICAgICAgIHB1dF9i aXRzKCZzLT5wYiwgNSwgcy0+Yy5xc2NhbGUpOyAvKiBHUVVBTlQgKi8KICAgICB9CiB9CiAKIC8q KgogICogbW9kaWZ5IHFzY2FsZSBzbyB0aGF0IGVuY29kaW5nIGlzIGFjdHVhbGx5IHBvc3NpYmxl IGluIEguMjYzIChsaW1pdCBkaWZmZXJlbmNlIHRvIC0yLi4yKQogICovCi12b2lkIGZmX2NsZWFu X2gyNjNfcXNjYWxlcyhNcGVnRW5jQ29udGV4dCAqcyl7Ci0gICAgaW50IGk7Ci0gICAgaW50OF90 ICogY29uc3QgcXNjYWxlX3RhYmxlID0gcy0+Y3VyX3BpYy5xc2NhbGVfdGFibGU7Cit2b2lkIGZm X2NsZWFuX2gyNjNfcXNjYWxlcyhNUFZFbmNDb250ZXh0ICpjb25zdCBzKQoreworICAgIGludDhf dCAqIGNvbnN0IHFzY2FsZV90YWJsZSA9IHMtPmMuY3VyX3BpYy5xc2NhbGVfdGFibGU7CiAKLSAg ICBmb3IoaT0xOyBpPHMtPm1iX251bTsgaSsrKXsKLSAgICAgICAgaWYocXNjYWxlX3RhYmxlWyBz LT5tYl9pbmRleDJ4eVtpXSBdIC0gcXNjYWxlX3RhYmxlWyBzLT5tYl9pbmRleDJ4eVtpLTFdIF0g PjIpCi0gICAgICAgICAgICBxc2NhbGVfdGFibGVbIHMtPm1iX2luZGV4Mnh5W2ldIF09IHFzY2Fs ZV90YWJsZVsgcy0+bWJfaW5kZXgyeHlbaS0xXSBdKzI7CisgICAgZm9yIChpbnQgaSA9IDE7IGkg PCBzLT5jLm1iX251bTsgaSsrKSB7CisgICAgICAgIGlmIChxc2NhbGVfdGFibGVbIHMtPmMubWJf aW5kZXgyeHlbaV0gXSAtIHFzY2FsZV90YWJsZVsgcy0+Yy5tYl9pbmRleDJ4eVtpLTFdIF0gPiAy KQorICAgICAgICAgICAgcXNjYWxlX3RhYmxlWyBzLT5jLm1iX2luZGV4Mnh5W2ldIF0gPSBxc2Nh bGVfdGFibGVbIHMtPmMubWJfaW5kZXgyeHlbaS0xXSBdICsgMjsKICAgICB9Ci0gICAgZm9yKGk9 cy0+bWJfbnVtLTI7IGk+PTA7IGktLSl7Ci0gICAgICAgIGlmKHFzY2FsZV90YWJsZVsgcy0+bWJf aW5kZXgyeHlbaV0gXSAtIHFzY2FsZV90YWJsZVsgcy0+bWJfaW5kZXgyeHlbaSsxXSBdID4yKQot ICAgICAgICAgICAgcXNjYWxlX3RhYmxlWyBzLT5tYl9pbmRleDJ4eVtpXSBdPSBxc2NhbGVfdGFi bGVbIHMtPm1iX2luZGV4Mnh5W2krMV0gXSsyOworICAgIGZvcihpbnQgaSA9IHMtPmMubWJfbnVt IC0gMjsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKHFzY2FsZV90YWJsZVsgcy0+Yy5tYl9p bmRleDJ4eVtpXSBdIC0gcXNjYWxlX3RhYmxlWyBzLT5jLm1iX2luZGV4Mnh5W2krMV0gXSA+IDIp CisgICAgICAgICAgICBxc2NhbGVfdGFibGVbIHMtPmMubWJfaW5kZXgyeHlbaV0gXSA9IHFzY2Fs ZV90YWJsZVsgcy0+Yy5tYl9pbmRleDJ4eVtpKzFdIF0gKyAyOwogICAgIH0KIAotICAgIGlmKHMt PmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjNQKXsKLSAgICAgICAgZm9yKGk9MTsgaTxzLT5t Yl9udW07IGkrKyl7Ci0gICAgICAgICAgICBpbnQgbWJfeHk9IHMtPm1iX2luZGV4Mnh5W2ldOwor ICAgIGlmIChzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjNQKSB7CisgICAgICAgIGZv ciAoaW50IGkgPSAxOyBpIDwgcy0+Yy5tYl9udW07IGkrKykgeworICAgICAgICAgICAgaW50IG1i X3h5ID0gcy0+Yy5tYl9pbmRleDJ4eVtpXTsKIAotICAgICAgICAgICAgaWYocXNjYWxlX3RhYmxl W21iX3h5XSAhPSBxc2NhbGVfdGFibGVbcy0+bWJfaW5kZXgyeHlbaS0xXV0gJiYgKHMtPm1iX3R5 cGVbbWJfeHldJkNBTkRJREFURV9NQl9UWVBFX0lOVEVSNFYpKXsKKyAgICAgICAgICAgIGlmIChx c2NhbGVfdGFibGVbbWJfeHldICE9IHFzY2FsZV90YWJsZVtzLT5jLm1iX2luZGV4Mnh5W2kgLSAx XV0gJiYKKyAgICAgICAgICAgICAgICAocy0+bWJfdHlwZVttYl94eV0gJiBDQU5ESURBVEVfTUJf VFlQRV9JTlRFUjRWKSkgewogICAgICAgICAgICAgICAgIHMtPm1iX3R5cGVbbWJfeHldfD0gQ0FO RElEQVRFX01CX1RZUEVfSU5URVI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxNywx MyArNDE4LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgZHF1YW50X2NvZGVbNV09IHsxLDAsOSwyLDN9 OwogICogQHBhcmFtIGJsb2NrIHRoZSA4eDggYmxvY2sKICAqIEBwYXJhbSBuIGJsb2NrIGluZGV4 ICgwLTMgYXJlIGx1bWEsIDQtNSBhcmUgY2hyb21hKQogICovCi1zdGF0aWMgdm9pZCBoMjYzX2Vu Y29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4pCitz dGF0aWMgdm9pZCBoMjYzX2VuY29kZV9ibG9jayhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQx Nl90IGJsb2NrW10sIGludCBuKQogewogICAgIGludCBsZXZlbCwgcnVuLCBsYXN0LCBpLCBqLCBs YXN0X2luZGV4LCBsYXN0X25vbl96ZXJvLCBzaWduLCBzbGV2ZWwsIGNvZGU7CiAgICAgY29uc3Qg UkxUYWJsZSAqcmw7CiAKICAgICBybCA9ICZmZl9oMjYzX3JsX2ludGVyOwotICAgIGlmIChzLT5t Yl9pbnRyYSAmJiAhcy0+aDI2M19haWMpIHsKKyAgICBpZiAocy0+Yy5tYl9pbnRyYSAmJiAhcy0+ Yy5oMjYzX2FpYykgewogICAgICAgICAvKiBEQyBjb2VmICovCiAgICAgICAgIGxldmVsID0gYmxv Y2tbMF07CiAgICAgICAgIC8qIDI1NSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQsIHNvIHdlIGNsYW1w ICovCkBAIC00NDMsMTkgKzQ0NCwxOSBAQCBzdGF0aWMgdm9pZCBoMjYzX2VuY29kZV9ibG9jayhN cGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4pCiAgICAgICAgIGkgPSAx OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGkgPSAwOwotICAgICAgICBpZiAocy0+aDI2M19haWMg JiYgcy0+bWJfaW50cmEpCisgICAgICAgIGlmIChzLT5jLmgyNjNfYWljICYmIHMtPmMubWJfaW50 cmEpCiAgICAgICAgICAgICBybCA9ICZmZl9ybF9pbnRyYV9haWM7CiAKLSAgICAgICAgaWYocy0+ YWx0X2ludGVyX3ZsYyAmJiAhcy0+bWJfaW50cmEpeworICAgICAgICBpZihzLT5jLmFsdF9pbnRl cl92bGMgJiYgIXMtPmMubWJfaW50cmEpewogICAgICAgICAgICAgaW50IGFpY192bGNfYml0cz0w OwogICAgICAgICAgICAgaW50IGludGVyX3ZsY19iaXRzPTA7CiAgICAgICAgICAgICBpbnQgd3Jv bmdfcG9zPS0xOwogICAgICAgICAgICAgaW50IGFpY19jb2RlOwogCi0gICAgICAgICAgICBsYXN0 X2luZGV4ID0gcy0+YmxvY2tfbGFzdF9pbmRleFtuXTsKKyAgICAgICAgICAgIGxhc3RfaW5kZXgg PSBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbbl07CiAgICAgICAgICAgICBsYXN0X25vbl96ZXJvID0g aSAtIDE7CiAgICAgICAgICAgICBmb3IgKDsgaSA8PSBsYXN0X2luZGV4OyBpKyspIHsKLSAgICAg ICAgICAgICAgICBqID0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CisgICAgICAg ICAgICAgICAgaiA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CiAgICAgICAg ICAgICAgICAgbGV2ZWwgPSBibG9ja1tqXTsKICAgICAgICAgICAgICAgICBpZiAobGV2ZWwpIHsK ICAgICAgICAgICAgICAgICAgICAgcnVuID0gaSAtIGxhc3Rfbm9uX3plcm8gLSAxOwpAQCAtNDg2 LDEwICs0ODcsMTAgQEAgc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfYmxvY2soTXBlZ0VuY0NvbnRl eHQgKiBzLCBpbnQxNl90ICogYmxvY2ssIGludCBuKQogICAgIH0KIAogICAgIC8qIEFDIGNvZWZz ICovCi0gICAgbGFzdF9pbmRleCA9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisgICAgbGFzdF9p bmRleCA9IHMtPmMuYmxvY2tfbGFzdF9pbmRleFtuXTsKICAgICBsYXN0X25vbl96ZXJvID0gaSAt IDE7CiAgICAgZm9yICg7IGkgPD0gbGFzdF9pbmRleDsgaSsrKSB7Ci0gICAgICAgIGogPSBzLT5p bnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAgaiA9IHMtPmMuaW50cmFfc2Nh bnRhYmxlLnBlcm11dGF0ZWRbaV07CiAgICAgICAgIGxldmVsID0gYmxvY2tbal07CiAgICAgICAg IGlmIChsZXZlbCkgewogICAgICAgICAgICAgcnVuID0gaSAtIGxhc3Rfbm9uX3plcm8gLSAxOwpA QCAtNTAzLDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIGgyNjNfZW5jb2RlX2Jsb2NrKE1wZWdFbmND b250ZXh0ICogcywgaW50MTZfdCAqIGJsb2NrLCBpbnQgbikKICAgICAgICAgICAgIGNvZGUgPSBn ZXRfcmxfaW5kZXgocmwsIGxhc3QsIHJ1biwgbGV2ZWwpOwogICAgICAgICAgICAgcHV0X2JpdHMo JnMtPnBiLCBybC0+dGFibGVfdmxjW2NvZGVdWzFdLCBybC0+dGFibGVfdmxjW2NvZGVdWzBdKTsK ICAgICAgICAgICAgIGlmIChjb2RlID09IHJsLT5uKSB7Ci0gICAgICAgICAgICAgIGlmKCFDT05G SUdfRkxWX0VOQ09ERVIgfHwgcy0+aDI2M19mbHYgPD0gMSl7CisgICAgICAgICAgICAgIGlmKCFD T05GSUdfRkxWX0VOQ09ERVIgfHwgcy0+Yy5oMjYzX2ZsdiA8PSAxKXsKICAgICAgICAgICAgICAg ICBwdXRfYml0cygmcy0+cGIsIDEsIGxhc3QpOwogICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZz LT5wYiwgNiwgcnVuKTsKIApAQCAtNTY1LDIyICs1NjYsMjIgQEAgc3RhdGljIHZvaWQgaDI2M3Bf ZW5jb2RlX3Vtb3Rpb24oUHV0Qml0Q29udGV4dCAqcGIsIGludCB2YWwpCiAgICAgfQogfQogCi1z dGF0aWMgaW50IGgyNjNfcHJlZF9kYyhNcGVnRW5jQ29udGV4dCAqIHMsIGludCBuLCBpbnQxNl90 ICoqZGNfdmFsX3B0cikKK3N0YXRpYyBpbnQgaDI2M19wcmVkX2RjKE1QVkVuY0NvbnRleHQgKmNv bnN0IHMsIGludCBuLCBpbnQxNl90ICoqZGNfdmFsX3B0cikKIHsKICAgICBpbnQgeCwgeSwgd3Jh cCwgYSwgYywgcHJlZF9kYzsKICAgICBpbnQxNl90ICpkY192YWw7CiAKICAgICAvKiBmaW5kIHBy ZWRpY3Rpb24gKi8KICAgICBpZiAobiA8IDQpIHsKLSAgICAgICAgeCA9IDIgKiBzLT5tYl94ICsg KG4gJiAxKTsKLSAgICAgICAgeSA9IDIgKiBzLT5tYl95ICsgKChuICYgMikgPj4gMSk7Ci0gICAg ICAgIHdyYXAgPSBzLT5iOF9zdHJpZGU7Ci0gICAgICAgIGRjX3ZhbCA9IHMtPmRjX3ZhbFswXTsK KyAgICAgICAgeCA9IDIgKiBzLT5jLm1iX3ggKyAobiAmIDEpOworICAgICAgICB5ID0gMiAqIHMt PmMubWJfeSArICgobiAmIDIpID4+IDEpOworICAgICAgICB3cmFwID0gcy0+Yy5iOF9zdHJpZGU7 CisgICAgICAgIGRjX3ZhbCA9IHMtPmMuZGNfdmFsWzBdOwogICAgIH0gZWxzZSB7Ci0gICAgICAg IHggPSBzLT5tYl94OwotICAgICAgICB5ID0gcy0+bWJfeTsKLSAgICAgICAgd3JhcCA9IHMtPm1i X3N0cmlkZTsKLSAgICAgICAgZGNfdmFsID0gcy0+ZGNfdmFsW24gLSA0ICsgMV07CisgICAgICAg IHggPSBzLT5jLm1iX3g7CisgICAgICAgIHkgPSBzLT5jLm1iX3k7CisgICAgICAgIHdyYXAgPSBz LT5jLm1iX3N0cmlkZTsKKyAgICAgICAgZGNfdmFsID0gcy0+Yy5kY192YWxbbiAtIDQgKyAxXTsK ICAgICB9CiAgICAgLyogQiBDCiAgICAgICogQSBYCkBAIC01ODksOSArNTkwLDkgQEAgc3RhdGlj IGludCBoMjYzX3ByZWRfZGMoTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgbiwgaW50MTZfdCAqKmRj X3ZhbF9wdHIpCiAgICAgYyA9IGRjX3ZhbFsoeCkgKyAoeSAtIDEpICogd3JhcF07CiAKICAgICAv KiBObyBwcmVkaWN0aW9uIG91dHNpZGUgR09CIGJvdW5kYXJ5ICovCi0gICAgaWYgKHMtPmZpcnN0 X3NsaWNlX2xpbmUgJiYgbiAhPSAzKSB7CisgICAgaWYgKHMtPmMuZmlyc3Rfc2xpY2VfbGluZSAm JiBuICE9IDMpIHsKICAgICAgICAgaWYgKG4gIT0gMikgYyA9IDEwMjQ7Ci0gICAgICAgIGlmIChu ICE9IDEgJiYgcy0+bWJfeCA9PSBzLT5yZXN5bmNfbWJfeCkgYSA9IDEwMjQ7CisgICAgICAgIGlm IChuICE9IDEgJiYgcy0+Yy5tYl94ID09IHMtPmMucmVzeW5jX21iX3gpIGEgPSAxMDI0OwogICAg IH0KICAgICAvKiBqdXN0IERDIHByZWRpY3Rpb24gKi8KICAgICBpZiAoYSAhPSAxMDI0ICYmIGMg IT0gMTAyNCkKQEAgLTYwNiw3ICs2MDcsNyBAQCBzdGF0aWMgaW50IGgyNjNfcHJlZF9kYyhNcGVn RW5jQ29udGV4dCAqIHMsIGludCBuLCBpbnQxNl90ICoqZGNfdmFsX3B0cikKICAgICByZXR1cm4g cHJlZF9kYzsKIH0KIAotc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQg KmNvbnN0IHMsCitzdGF0aWMgdm9pZCBoMjYzX2VuY29kZV9tYihNUFZFbmNDb250ZXh0ICpjb25z dCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBibG9ja1tdWzY0XSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb3Rpb25feCwgaW50IG1vdGlvbl95KQogewpA QCAtNjE0LDEzICs2MTUsMTMgQEAgc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfbWIoTXBlZ0VuY0Nv bnRleHQgKmNvbnN0IHMsCiAgICAgaW50MTZfdCBwcmVkX2RjOwogICAgIGludDE2X3QgcmVjX2lu dHJhZGNbNl07CiAgICAgaW50MTZfdCAqZGNfcHRyWzZdOwotICAgIGNvbnN0IGludCBpbnRlcmxl YXZlZF9zdGF0cyA9IHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzE7CisgICAg Y29uc3QgaW50IGludGVybGVhdmVkX3N0YXRzID0gcy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RF Q19GTEFHX1BBU1MxOwogCi0gICAgaWYgKCFzLT5tYl9pbnRyYSkgeworICAgIGlmICghcy0+Yy5t Yl9pbnRyYSkgewogICAgICAgICAvKiBjb21wdXRlIGNicCAqLwogICAgICAgICBjYnA9IGdldF9w X2NicChzLCBibG9jaywgbW90aW9uX3gsIG1vdGlvbl95KTsKIAotICAgICAgICBpZiAoKGNicCB8 IG1vdGlvbl94IHwgbW90aW9uX3kgfCBzLT5kcXVhbnQgfCAocy0+bXZfdHlwZSAtIE1WX1RZUEVf MTZYMTYpKSA9PSAwKSB7CisgICAgICAgIGlmICgoY2JwIHwgbW90aW9uX3ggfCBtb3Rpb25feSB8 IHMtPmRxdWFudCB8IChzLT5jLm12X3R5cGUgLSBNVl9UWVBFXzE2WDE2KSkgPT0gMCkgewogICAg ICAgICAgICAgLyogc2tpcCBtYWNyb2Jsb2NrICovCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+ cGIsIDEsIDEpOwogICAgICAgICAgICAgaWYoaW50ZXJsZWF2ZWRfc3RhdHMpewpAQCAtNjM0LDEw ICs2MzUsMTAgQEAgc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNv bnN0IHMsCiAKICAgICAgICAgY2JwYyA9IGNicCAmIDM7CiAgICAgICAgIGNicHkgPSBjYnAgPj4g MjsKLSAgICAgICAgaWYocy0+YWx0X2ludGVyX3ZsYz09MCB8fCBjYnBjIT0zKQorICAgICAgICBp ZihzLT5jLmFsdF9pbnRlcl92bGM9PTAgfHwgY2JwYyE9MykKICAgICAgICAgICAgIGNicHkgXj0g MHhGOwogICAgICAgICBpZihzLT5kcXVhbnQpIGNicGMrPSA4OwotICAgICAgICBpZihzLT5tdl90 eXBlPT1NVl9UWVBFXzE2WDE2KXsKKyAgICAgICAgaWYocy0+Yy5tdl90eXBlPT1NVl9UWVBFXzE2 WDE2KXsKICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwKICAgICAgICAgICAgICAgICAgICAg ZmZfaDI2M19pbnRlcl9NQ0JQQ19iaXRzW2NicGNdLAogICAgICAgICAgICAgICAgICAgICBmZl9o MjYzX2ludGVyX01DQlBDX2NvZGVbY2JwY10pOwpAQCAtNjUxLDkgKzY1Miw5IEBAIHN0YXRpYyB2 b2lkIGgyNjNfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAg fQogCiAgICAgICAgICAgICAvKiBtb3Rpb24gdmVjdG9yczogMTZ4MTYgbW9kZSAqLwotICAgICAg ICAgICAgZmZfaDI2M19wcmVkX21vdGlvbihzLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsKKyAg ICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24oJnMtPmMsIDAsIDAsICZwcmVkX3gsICZwcmVk X3kpOwogCi0gICAgICAgICAgICBpZiAoIXMtPnVtdnBsdXMpIHsKKyAgICAgICAgICAgIGlmICgh cy0+Yy51bXZwbHVzKSB7CiAgICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9uX3Zl Y3RvcihzLCBtb3Rpb25feCAtIHByZWRfeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1vdGlvbl95IC0gcHJlZF95LCAxKTsKICAgICAgICAgICAgIH0K QEAgLTY3OCwxMSArNjc5LDExIEBAIHN0YXRpYyB2b2lkIGgyNjNfZW5jb2RlX21iKE1wZWdFbmND b250ZXh0ICpjb25zdCBzLAogCiAgICAgICAgICAgICBmb3IoaT0wOyBpPDQ7IGkrKyl7CiAgICAg ICAgICAgICAgICAgLyogbW90aW9uIHZlY3RvcnM6IDh4OCBtb2RlKi8KLSAgICAgICAgICAgICAg ICBmZl9oMjYzX3ByZWRfbW90aW9uKHMsIGksIDAsICZwcmVkX3gsICZwcmVkX3kpOworICAgICAg ICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24oJnMtPmMsIGksIDAsICZwcmVkX3gsICZwcmVk X3kpOwogCi0gICAgICAgICAgICAgICAgbW90aW9uX3ggPSBzLT5jdXJfcGljLm1vdGlvbl92YWxb MF1bcy0+YmxvY2tfaW5kZXhbaV1dWzBdOwotICAgICAgICAgICAgICAgIG1vdGlvbl95ID0gcy0+ Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmJsb2NrX2luZGV4W2ldXVsxXTsKLSAgICAgICAgICAg ICAgICBpZiAoIXMtPnVtdnBsdXMpIHsKKyAgICAgICAgICAgICAgICBtb3Rpb25feCA9IHMtPmMu Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmMuYmxvY2tfaW5kZXhbaV1dWzBdOworICAgICAgICAg ICAgICAgIG1vdGlvbl95ID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bcy0+Yy5ibG9ja19p bmRleFtpXV1bMV07CisgICAgICAgICAgICAgICAgaWYgKCFzLT5jLnVtdnBsdXMpIHsKICAgICAg ICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9uX3ZlY3RvcihzLCBtb3Rpb25feCAt IHByZWRfeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtb3Rpb25feSAtIHByZWRfeSwgMSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNzAwLDE3 ICs3MDEsMTQgQEAgc3RhdGljIHZvaWQgaDI2M19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNv bnN0IHMsCiAgICAgICAgICAgICBzLT5tdl9iaXRzKz0gZ2V0X2JpdHNfZGlmZihzKTsKICAgICAg ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF2X2Fzc2VydDIocy0+bWJfaW50cmEpOworICAg ICAgICBhdl9hc3NlcnQyKHMtPmMubWJfaW50cmEpOwogCiAgICAgICAgIGNicCA9IDA7Ci0gICAg ICAgIGlmIChzLT5oMjYzX2FpYykgeworICAgICAgICBpZiAocy0+Yy5oMjYzX2FpYykgewogICAg ICAgICAgICAgLyogUHJlZGljdCBEQyAqLwogICAgICAgICAgICAgZm9yKGk9MDsgaTw2OyBpKysp IHsKICAgICAgICAgICAgICAgICBpbnQxNl90IGxldmVsID0gYmxvY2tbaV1bMF07Ci0gICAgICAg ICAgICAgICAgaW50IHNjYWxlOwotCi0gICAgICAgICAgICAgICAgaWYoaTw0KSBzY2FsZT0gcy0+ eV9kY19zY2FsZTsKLSAgICAgICAgICAgICAgICBlbHNlICAgIHNjYWxlPSBzLT5jX2RjX3NjYWxl OworICAgICAgICAgICAgICAgIGludCBzY2FsZSA9IGkgPCA0ID8gcy0+Yy55X2RjX3NjYWxlIDog cy0+Yy5jX2RjX3NjYWxlOwogCiAgICAgICAgICAgICAgICAgcHJlZF9kYyA9IGgyNjNfcHJlZF9k YyhzLCBpLCAmZGNfcHRyW2ldKTsKICAgICAgICAgICAgICAgICBsZXZlbCAtPSBwcmVkX2RjOwpA QCAtNzIwLDcgKzcxOCw3IEBAIHN0YXRpYyB2b2lkIGgyNjNfZW5jb2RlX21iKE1wZWdFbmNDb250 ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg bGV2ZWwgPSAobGV2ZWwgLSAoc2NhbGU+PjEpKS9zY2FsZTsKIAotICAgICAgICAgICAgICAgIGlm KCFzLT5tb2RpZmllZF9xdWFudCl7CisgICAgICAgICAgICAgICAgaWYgKCFzLT5jLm1vZGlmaWVk X3F1YW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsZXZlbCA8IC0xMjcpCiAgICAgICAg ICAgICAgICAgICAgICAgICBsZXZlbCA9IC0xMjc7CiAgICAgICAgICAgICAgICAgICAgIGVsc2Ug aWYgKGxldmVsID4gMTI3KQpAQCAtNzQzLDIwICs3NDEsMjAgQEAgc3RhdGljIHZvaWQgaDI2M19l bmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAgLyogVXBk YXRlIEFDL0RDIHRhYmxlcyAqLwogICAgICAgICAgICAgICAgICpkY19wdHJbaV0gPSByZWNfaW50 cmFkY1tpXTsKICAgICAgICAgICAgICAgICAvKiBBSUMgY2FuIGNoYW5nZSBDQlAgKi8KLSAgICAg ICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+IDAgfHwKLSAgICAgICAgICAg ICAgICAgICAgKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPT0gMCAmJiBsZXZlbCAhPTApKQorICAg ICAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPiAwIHx8CisgICAgICAg ICAgICAgICAgICAgIChzLT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPT0gMCAmJiBsZXZlbCAhPTAp KQogICAgICAgICAgICAgICAgICAgICBjYnAgfD0gMSA8PCAoNSAtIGkpOwogICAgICAgICAgICAg fQogICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgIGZvcihpPTA7IGk8NjsgaSsrKSB7CiAgICAg ICAgICAgICAgICAgLyogY29tcHV0ZSBjYnAgKi8KLSAgICAgICAgICAgICAgICBpZiAocy0+Ymxv Y2tfbGFzdF9pbmRleFtpXSA+PSAxKQorICAgICAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xh c3RfaW5kZXhbaV0gPj0gMSkKICAgICAgICAgICAgICAgICAgICAgY2JwIHw9IDEgPDwgKDUgLSBp KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGNicGMgPSBjYnAgJiAzOwot ICAgICAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgICAg IGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewogICAgICAgICAgICAg aWYocy0+ZHF1YW50KSBjYnBjKz00OwogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLAogICAg ICAgICAgICAgICAgIGZmX2gyNjNfaW50cmFfTUNCUENfYml0c1tjYnBjXSwKQEAgLTc2OCw3ICs3 NjYsNyBAQCBzdGF0aWMgdm9pZCBoMjYzX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3Qg cywKICAgICAgICAgICAgICAgICBmZl9oMjYzX2ludGVyX01DQlBDX2JpdHNbY2JwYyArIDRdLAog ICAgICAgICAgICAgICAgIGZmX2gyNjNfaW50ZXJfTUNCUENfY29kZVtjYnBjICsgNF0pOwogICAg ICAgICB9Ci0gICAgICAgIGlmIChzLT5oMjYzX2FpYykgeworICAgICAgICBpZiAocy0+Yy5oMjYz X2FpYykgewogICAgICAgICAgICAgLyogWFhYOiBjdXJyZW50bHksIHdlIGRvIG5vdCB0cnkgdG8g dXNlIGFjIHByZWRpY3Rpb24gKi8KICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7 ICAgICAvKiBubyBBQyBwcmVkaWN0aW9uICovCiAgICAgICAgIH0KQEAgLTc4NywxNCArNzg1LDEy IEBAIHN0YXRpYyB2b2lkIGgyNjNfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAog ICAgICAgICBoMjYzX2VuY29kZV9ibG9jayhzLCBibG9ja1tpXSwgaSk7CiAKICAgICAgICAgLyog VXBkYXRlIElOVFJBREMgZm9yIGRlY29kaW5nICovCi0gICAgICAgIGlmIChzLT5oMjYzX2FpYyAm JiBzLT5tYl9pbnRyYSkgeworICAgICAgICBpZiAocy0+Yy5oMjYzX2FpYyAmJiBzLT5jLm1iX2lu dHJhKQogICAgICAgICAgICAgYmxvY2tbaV1bMF0gPSByZWNfaW50cmFkY1tpXTsKLQotICAgICAg ICB9CiAgICAgfQogCiAgICAgaWYoaW50ZXJsZWF2ZWRfc3RhdHMpewotICAgICAgICBpZiAoIXMt Pm1iX2ludHJhKSB7CisgICAgICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgewogICAgICAgICAgICAg cy0+cF90ZXhfYml0cys9IGdldF9iaXRzX2RpZmYocyk7CiAgICAgICAgIH1lbHNlewogICAgICAg ICAgICAgcy0+aV90ZXhfYml0cys9IGdldF9iaXRzX2RpZmYocyk7CkBAIC04MDMsNTQgKzc5OSw1 NCBAQCBzdGF0aWMgdm9pZCBoMjYzX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywK ICAgICB9CiB9CiAKLXZvaWQgZmZfaDI2M191cGRhdGVfbWIoTXBlZ0VuY0NvbnRleHQgKnMpCit2 b2lkIGZmX2gyNjNfdXBkYXRlX21iKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7Ci0gICAgY29u c3QgaW50IG1iX3h5ID0gcy0+bWJfeSAqIHMtPm1iX3N0cmlkZSArIHMtPm1iX3g7CisgICAgY29u c3QgaW50IG1iX3h5ID0gcy0+Yy5tYl95ICogcy0+Yy5tYl9zdHJpZGUgKyBzLT5jLm1iX3g7CiAK LSAgICBpZiAocy0+Y3VyX3BpYy5tYnNraXBfdGFibGUpCi0gICAgICAgIHMtPmN1cl9waWMubWJz a2lwX3RhYmxlW21iX3h5XSA9IHMtPm1iX3NraXBwZWQ7CisgICAgaWYgKHMtPmMuY3VyX3BpYy5t YnNraXBfdGFibGUpCisgICAgICAgIHMtPmMuY3VyX3BpYy5tYnNraXBfdGFibGVbbWJfeHldID0g cy0+Yy5tYl9za2lwcGVkOwogCi0gICAgaWYgKHMtPm12X3R5cGUgPT0gTVZfVFlQRV84WDgpCi0g ICAgICAgIHMtPmN1cl9waWMubWJfdHlwZVttYl94eV0gPSBNQl9UWVBFX0ZPUldBUkRfTVYgfCBN Ql9UWVBFXzh4ODsKLSAgICBlbHNlIGlmKHMtPm1iX2ludHJhKQotICAgICAgICBzLT5jdXJfcGlj Lm1iX3R5cGVbbWJfeHldID0gTUJfVFlQRV9JTlRSQTsKKyAgICBpZiAocy0+Yy5tdl90eXBlID09 IE1WX1RZUEVfOFg4KQorICAgICAgICBzLT5jLmN1cl9waWMubWJfdHlwZVttYl94eV0gPSBNQl9U WVBFX0ZPUldBUkRfTVYgfCBNQl9UWVBFXzh4ODsKKyAgICBlbHNlIGlmKHMtPmMubWJfaW50cmEp CisgICAgICAgIHMtPmMuY3VyX3BpYy5tYl90eXBlW21iX3h5XSA9IE1CX1RZUEVfSU5UUkE7CiAg ICAgZWxzZQotICAgICAgICBzLT5jdXJfcGljLm1iX3R5cGVbbWJfeHldID0gTUJfVFlQRV9GT1JX QVJEX01WIHwgTUJfVFlQRV8xNngxNjsKKyAgICAgICAgcy0+Yy5jdXJfcGljLm1iX3R5cGVbbWJf eHldID0gTUJfVFlQRV9GT1JXQVJEX01WIHwgTUJfVFlQRV8xNngxNjsKIAotICAgIGZmX2gyNjNf dXBkYXRlX21vdGlvbl92YWwocyk7CisgICAgZmZfaDI2M191cGRhdGVfbW90aW9uX3ZhbCgmcy0+ Yyk7CiB9CiAKIGF2X2NvbGQgdm9pZCBmZl9oMjYzX2VuY29kZV9pbml0KE1QVk1haW5FbmNDb250 ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7Cisg ICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogCi0gICAgcy0+bWUubXZfcGVuYWx0 eSA9IGZmX2gyNjNfZ2V0X212X3BlbmFsdHkoKTsgLy8gRklYTUUgZXhhY3QgdGFibGUgZm9yIE1T TVBFRzQgJiBILjI2MysKKyAgICBzLT5jLm1lLm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9w ZW5hbHR5KCk7IC8vIEZJWE1FIGV4YWN0IHRhYmxlIGZvciBNU01QRUc0ICYgSC4yNjMrCiAKLSAg ICBmZl9oMjYzZHNwX2luaXQoJnMtPmgyNjNkc3ApOworICAgIGZmX2gyNjNkc3BfaW5pdCgmcy0+ Yy5oMjYzZHNwKTsKIAotICAgIGlmIChzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkK KyAgICBpZiAocy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkKICAgICAgICAgcmV0 dXJuOwogCiAgICAgcy0+aW50cmFfYWNfdmxjX2xlbmd0aCAgICAgPXMtPmludGVyX2FjX3ZsY19s ZW5ndGggICAgID0gdW5pX2gyNjNfaW50ZXJfcmxfbGVuOwogICAgIHMtPmludHJhX2FjX3ZsY19s YXN0X2xlbmd0aD1zLT5pbnRlcl9hY192bGNfbGFzdF9sZW5ndGg9IHVuaV9oMjYzX2ludGVyX3Js X2xlbiArIDEyOCo2NDsKLSAgICBpZihzLT5oMjYzX2FpYyl7CisgICAgaWYgKHMtPmMuaDI2M19h aWMpIHsKICAgICAgICAgcy0+aW50cmFfYWNfdmxjX2xlbmd0aCAgICAgPSB1bmlfaDI2M19pbnRy YV9haWNfcmxfbGVuOwogICAgICAgICBzLT5pbnRyYV9hY192bGNfbGFzdF9sZW5ndGg9IHVuaV9o MjYzX2ludHJhX2FpY19ybF9sZW4gKyAxMjgqNjQ7CiAKLSAgICAgICAgcy0+eV9kY19zY2FsZV90 YWJsZSA9Ci0gICAgICAgIHMtPmNfZGNfc2NhbGVfdGFibGUgPSBmZl9haWNfZGNfc2NhbGVfdGFi bGU7CisgICAgICAgIHMtPmMueV9kY19zY2FsZV90YWJsZSA9CisgICAgICAgIHMtPmMuY19kY19z Y2FsZV90YWJsZSA9IGZmX2FpY19kY19zY2FsZV90YWJsZTsKICAgICB9CiAgICAgcy0+YWNfZXNj X2xlbmd0aD0gNysxKzYrODsKIAotICAgIGlmIChzLT5tb2RpZmllZF9xdWFudCkKLSAgICAgICAg cy0+Y2hyb21hX3FzY2FsZV90YWJsZSA9IGZmX2gyNjNfY2hyb21hX3FzY2FsZV90YWJsZTsKKyAg ICBpZiAocy0+Yy5tb2RpZmllZF9xdWFudCkKKyAgICAgICAgcy0+Yy5jaHJvbWFfcXNjYWxlX3Rh YmxlID0gZmZfaDI2M19jaHJvbWFfcXNjYWxlX3RhYmxlOwogCiAgICAgLy8gdXNlIGZjb2RlcyA+ MSBvbmx5IGZvciBNUEVHLTQgJiBILjI2MyAmIEguMjYzKyBGSVhNRQotICAgIHN3aXRjaChzLT5j b2RlY19pZCl7CisgICAgc3dpdGNoKHMtPmMuY29kZWNfaWQpewogICAgIGNhc2UgQVZfQ09ERUNf SURfSDI2M1A6Ci0gICAgICAgIGlmKHMtPnVtdnBsdXMpCisgICAgICAgIGlmIChzLT5jLnVtdnBs dXMpCiAgICAgICAgICAgICBtLT5mY29kZV90YWIgPSB1bXZfZmNvZGVfdGFiICsgTUFYX01WOwot ICAgICAgICBpZihzLT5tb2RpZmllZF9xdWFudCl7CisgICAgICAgIGlmIChzLT5jLm1vZGlmaWVk X3F1YW50KSB7CiAgICAgICAgICAgICBzLT5taW5fcWNvZWZmPSAtMjA0NzsKICAgICAgICAgICAg IHMtPm1heF9xY29lZmY9ICAyMDQ3OwogICAgICAgICB9ZWxzZXsKQEAgLTg2MSw3ICs4NTcsNyBA QCBhdl9jb2xkIHZvaWQgZmZfaDI2M19lbmNvZGVfaW5pdChNUFZNYWluRW5jQ29udGV4dCAqY29u c3QgbSkKICAgICAgICAgLy8gTm90ZSBmb3IgTVBFRy00ICYgSC4yNjMgdGhlIGRjLXNjYWxlIHRh YmxlIHdpbGwgYmUgc2V0IHBlciBmcmFtZSBhcyBuZWVkZWQgbGF0ZXIKICAgICBjYXNlIEFWX0NP REVDX0lEX0ZMVjE6CiAgICAgICAgIG0tPmVuY29kZV9waWN0dXJlX2hlYWRlciA9IGZmX2Zsdl9l bmNvZGVfcGljdHVyZV9oZWFkZXI7Ci0gICAgICAgIGlmIChzLT5oMjYzX2ZsdiA+IDEpIHsKKyAg ICAgICAgaWYgKHMtPmMuaDI2M19mbHYgPiAxKSB7CiAgICAgICAgICAgICBzLT5taW5fcWNvZWZm PSAtMTAyMzsKICAgICAgICAgICAgIHMtPm1heF9xY29lZmY9ICAxMDIzOwogICAgICAgICB9IGVs c2UgewpAQCAtODgwLDE0ICs4NzYsMTQgQEAgYXZfY29sZCB2b2lkIGZmX2gyNjNfZW5jb2RlX2lu aXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgIHMtPmVuY29kZV9tYiA9IGgy NjNfZW5jb2RlX21iOwogfQogCi12b2lkIGZmX2gyNjNfZW5jb2RlX21iYShNcGVnRW5jQ29udGV4 dCAqcykKK3ZvaWQgZmZfaDI2M19lbmNvZGVfbWJhKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7 CiAgICAgaW50IGksIG1iX3BvczsKIAogICAgIGZvcihpPTA7IGk8NjsgaSsrKXsKLSAgICAgICAg aWYocy0+bWJfbnVtLTEgPD0gZmZfbWJhX21heFtpXSkgYnJlYWs7CisgICAgICAgIGlmKHMtPmMu bWJfbnVtLTEgPD0gZmZfbWJhX21heFtpXSkgYnJlYWs7CiAgICAgfQotICAgIG1iX3Bvcz0gcy0+ bWJfeCArIHMtPm1iX3dpZHRoKnMtPm1iX3k7CisgICAgbWJfcG9zPSBzLT5jLm1iX3ggKyBzLT5j Lm1iX3dpZHRoKnMtPmMubWJfeTsKICAgICBwdXRfYml0cygmcy0+cGIsIGZmX21iYV9sZW5ndGhb aV0sIG1iX3Bvcyk7CiB9CiAKQEAgLTg5NSw3ICs4OTEsNyBAQCB2b2lkIGZmX2gyNjNfZW5jb2Rl X21iYShNcGVnRW5jQ29udGV4dCAqcykKICNkZWZpbmUgVkUgQVZfT1BUX0ZMQUdfVklERU9fUEFS QU0gfCBBVl9PUFRfRkxBR19FTkNPRElOR19QQVJBTQogc3RhdGljIGNvbnN0IEFWT3B0aW9uIGgy NjNfb3B0aW9uc1tdID0gewogICAgIHsgIm9ibWMiLCAgICAgICAgICJ1c2Ugb3ZlcmxhcHBlZCBi bG9jayBtb3Rpb24gY29tcGVuc2F0aW9uLiIsIE9GRlNFVChvYm1jKSwgQVZfT1BUX1RZUEVfQk9P TCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBWRSB9LAotICAgIHsgIm1iX2luZm8iLCAgICAgICJlbWl0 IG1hY3JvYmxvY2sgaW5mbyBmb3IgUkZDIDIxOTAgcGFja2V0aXphdGlvbiwgdGhlIHBhcmFtZXRl ciB2YWx1ZSBpcyB0aGUgbWF4aW11bSBwYXlsb2FkIHNpemUiLCBPRkZTRVQobWJfaW5mbyksIEFW X09QVF9UWVBFX0lOVCwgeyAuaTY0ID0gMCB9LCAwLCBJTlRfTUFYLCBWRSB9LAorICAgIHsgIm1i X2luZm8iLCAgICAgICJlbWl0IG1hY3JvYmxvY2sgaW5mbyBmb3IgUkZDIDIxOTAgcGFja2V0aXph dGlvbiwgdGhlIHBhcmFtZXRlciB2YWx1ZSBpcyB0aGUgbWF4aW11bSBwYXlsb2FkIHNpemUiLCBG Rl9NUFZfT0ZGU0VUKG1iX2luZm8pLCBBVl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9IDAgfSwgMCwg SU5UX01BWCwgVkUgfSwKICAgICBGRl9NUFZfQ09NTU9OX09QVFMKICAgICBGRl9NUFZfQ09NTU9O X01PVElPTl9FU1RfT1BUUwogICAgIHsgTlVMTCB9LApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9t ZV9jbXAuYyBiL2xpYmF2Y29kZWMvbWVfY21wLmMKaW5kZXggZjNlMmYyNDgyZS4uMDlhODMwZDE1 ZSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tZV9jbXAuYworKysgYi9saWJhdmNvZGVjL21lX2Nt cC5jCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IHVpbnQzMl90IGZmX3NxdWFyZV90YWJbNTEyXSA9 IHsKICAgICA1NzYwMCwgNTgwODEsIDU4NTY0LCA1OTA0OSwgNTk1MzYsIDYwMDI1LCA2MDUxNiwg NjEwMDksIDYxNTA0LCA2MjAwMSwgNjI1MDAsIDYzMDAxLCA2MzUwNCwgNjQwMDksIDY0NTE2LCA2 NTAyNSwKIH07CiAKLXN0YXRpYyBpbnQgc3NlNF9jKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1 aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGludCBzc2U0X2MoTVBW RW5jQ29udGV4dCAqdW51c2VkLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw aXgyLAogICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAg aW50IHMgPSAwLCBpOwpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW50IHNzZTRfYyhNcGVnRW5j Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAg ICByZXR1cm4gczsKIH0KIAotc3RhdGljIGludCBzc2U4X2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNv bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHNzZThf YyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4 X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsK ICAgICBpbnQgcyA9IDAsIGk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGludCBzc2U4X2Mo TXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBp eDIsCiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyBpbnQgc3NlMTZfYyhNcGVnRW5jQ29udGV4 dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBp bnQgc3NlMTZfYyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNv bnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwg aW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBp bnQgc3VtX2Fic19kY3RlbGVtX2MoY29uc3QgaW50MTZfdCAqYmxvY2spCiAjZGVmaW5lIGF2ZzIo YSwgYikgKCgoYSkgKyAoYikgKyAxKSA+PiAxKQogI2RlZmluZSBhdmc0KGEsIGIsIGMsIGQpICgo KGEpICsgKGIpICsgKGMpICsgKGQpICsgMikgPj4gMikKIAotc3RhdGljIGlubGluZSBpbnQgcGl4 X2FiczE2X2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVp bnQ4X3QgKnBpeDIsCitzdGF0aWMgaW5saW5lIGludCBwaXhfYWJzMTZfYyhNUFZFbmNDb250ZXh0 ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAg ICBpbnQgcyA9IDAsIGk7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcGl4 X2FiczE2X2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVp bnQKICAgICByZXR1cm4gczsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcGl4X21lZGlhbl9hYnMx Nl9jKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90 ICpwaXgyLAorc3RhdGljIGlubGluZSBpbnQgcGl4X21lZGlhbl9hYnMxNl9jKE1QVkVuY0NvbnRl eHQgKnVudXNlZCwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAg ICAgaW50IHMgPSAwLCBpLCBqOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRpYyBpbmxpbmUgaW50 IHBpeF9tZWRpYW5fYWJzMTZfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4 MSwgY29uCiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyBpbnQgcGl4X2FiczE2X3gyX2MoTXBl Z0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIs CitzdGF0aWMgaW50IHBpeF9hYnMxNl94Ml9jKE1QVkVuY0NvbnRleHQgKnVudXNlZCwgY29uc3Qg dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAt MjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBpbnQgcGl4X2FiczE2X3gyX2MoTXBlZ0VuY0NvbnRleHQg KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QKICAgICByZXR1cm4gczsKIH0K IAotc3RhdGljIGludCBwaXhfYWJzMTZfeTJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu dDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBpbnQgcGl4X2FiczE2X3ky X2MoTVBWRW5jQ29udGV4dCAqdW51c2VkLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50 OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBp bnQgaCkKIHsKICAgICBpbnQgcyA9IDAsIGk7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIGlu dCBwaXhfYWJzMTZfeTJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg Y29uc3QgdWludDhfdAogICAgIHJldHVybiBzOwogfQogCi1zdGF0aWMgaW50IHBpeF9hYnMxNl94 eTJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhf dCAqcGl4MiwKK3N0YXRpYyBpbnQgcGl4X2FiczE2X3h5Ml9jKE1QVkVuY0NvbnRleHQgKnVudXNl ZCwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGludCBzID0g MCwgaTsKQEAgLTMwNCw3ICszMDQsNyBAQCBzdGF0aWMgaW50IHBpeF9hYnMxNl94eTJfYyhNcGVn RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdAogICAgIHJl dHVybiBzOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBwaXhfYWJzOF9jKE1wZWdFbmNDb250ZXh0 ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGlu bGluZSBpbnQgcGl4X2FiczhfYyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3Qg KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGludCBzID0gMCwgaTsKQEAgLTMyNCw3 ICszMjQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwaXhfYWJzOF9jKE1wZWdFbmNDb250ZXh0ICp2 LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OAogICAgIHJldHVybiBzOwogfQogCi1z dGF0aWMgaW5saW5lIGludCBwaXhfbWVkaWFuX2FiczhfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29u c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBpbmxpbmUgaW50 IHBpeF9tZWRpYW5fYWJzOF9jKE1QVkVuY0NvbnRleHQgKnVudXNlZCwgY29uc3QgdWludDhfdCAq cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpLCBqOwpAQCAtMzU1 LDcgKzM1NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBpeF9tZWRpYW5fYWJzOF9jKE1wZWdFbmND b250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zCiAgICAgcmV0dXJuIHM7CiB9CiAK LXN0YXRpYyBpbnQgcGl4X2FiczhfeDJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhf dCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBpbnQgcGl4X2FiczhfeDJfYyhN UFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgp CiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyBpbnQgcGl4 X2FiczhfeDJfYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3Qg dWludDhfdCAqCiAgICAgcmV0dXJuIHM7CiB9CiAKLXN0YXRpYyBpbnQgcGl4X2FiczhfeTJfYyhN cGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4 MiwKK3N0YXRpYyBpbnQgcGl4X2FiczhfeTJfYyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsIGNvbnN0 IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAt Mzk3LDcgKzM5Nyw3IEBAIHN0YXRpYyBpbnQgcGl4X2FiczhfeTJfYyhNcGVnRW5jQ29udGV4dCAq diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqCiAgICAgcmV0dXJuIHM7CiB9 CiAKLXN0YXRpYyBpbnQgcGl4X2FiczhfeHkyX2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVp bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHBpeF9hYnM4X3h5 Ml9jKE1QVkVuY0NvbnRleHQgKnVudXNlZCwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWlu dDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwg aW50IGgpCiB7CiAgICAgaW50IHMgPSAwLCBpOwpAQCAtNDE5LDcgKzQxOSw3IEBAIHN0YXRpYyBp bnQgcGl4X2FiczhfeHkyX2MoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEs IGNvbnN0IHVpbnQ4X3QKICAgICByZXR1cm4gczsKIH0KIAotc3RhdGljIGludCBuc3NlMTZfYyhN cGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAor c3RhdGljIGludCBuc3NlMTZfYyhNUFZFbmNDb250ZXh0ICpjb25zdCBjLCBjb25zdCB1aW50OF90 ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBz dHJpZGUsIGludCBoKQogewogICAgIGludCBzY29yZTEgPSAwLCBzY29yZTIgPSAwLCB4LCB5OwpA QCAtNDM5LDEyICs0MzksMTIgQEAgc3RhdGljIGludCBuc3NlMTZfYyhNcGVnRW5jQ29udGV4dCAq YywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAogICAgIH0KIAogICAgIGlm IChjKQotICAgICAgICByZXR1cm4gc2NvcmUxICsgRkZBQlMoc2NvcmUyKSAqIGMtPmF2Y3R4LT5u c3NlX3dlaWdodDsKKyAgICAgICAgcmV0dXJuIHNjb3JlMSArIEZGQUJTKHNjb3JlMikgKiBjLT5j LmF2Y3R4LT5uc3NlX3dlaWdodDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBzY29yZTEgKyBG RkFCUyhzY29yZTIpICogODsKIH0KIAotc3RhdGljIGludCBuc3NlOF9jKE1wZWdFbmNDb250ZXh0 ICpjLCBjb25zdCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsCitzdGF0aWMgaW50IG5z c2U4X2MoTVBWRW5jQ29udGV4dCAqY29uc3QgYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVp bnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQog ewogICAgIGludCBzY29yZTEgPSAwLCBzY29yZTIgPSAwLCB4LCB5OwpAQCAtNDY0LDEyICs0NjQs MTIgQEAgc3RhdGljIGludCBuc3NlOF9jKE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90 ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgfQogCiAgICAgaWYgKGMpCi0gICAgICAgIHJl dHVybiBzY29yZTEgKyBGRkFCUyhzY29yZTIpICogYy0+YXZjdHgtPm5zc2Vfd2VpZ2h0OworICAg ICAgICByZXR1cm4gc2NvcmUxICsgRkZBQlMoc2NvcmUyKSAqIGMtPmMuYXZjdHgtPm5zc2Vfd2Vp Z2h0OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIHNjb3JlMSArIEZGQUJTKHNjb3JlMikgKiA4 OwogfQogCi1zdGF0aWMgaW50IHplcm9fY21wKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50 OF90ICphLCBjb25zdCB1aW50OF90ICpiLAorc3RhdGljIGludCB6ZXJvX2NtcChNUFZFbmNDb250 ZXh0ICpzLCBjb25zdCB1aW50OF90ICphLCBjb25zdCB1aW50OF90ICpiLAogICAgICAgICAgICAg ICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICByZXR1cm4gMDsKQEAgLTU0 Niw3ICs1NDYsNyBAQCBhdl9jb2xkIGludCBmZl9zZXRfY21wKGNvbnN0IE1FQ21wQ29udGV4dCAq YywgbWVfY21wX2Z1bmMgKmNtcCwgaW50IHR5cGUsIGludCBtcAogCiAjZGVmaW5lIEJVVFRFUkZM WUEoeCwgeSkgKEZGQUJTKCh4KSArICh5KSkgKyBGRkFCUygoeCkgLSAoeSkpKQogCi1zdGF0aWMg aW50IGhhZGFtYXJkOF9kaWZmOHg4X2MoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3Qg KmRzdCwKK3N0YXRpYyBpbnQgaGFkYW1hcmQ4X2RpZmY4eDhfYyhNUFZFbmNDb250ZXh0ICp1bnVz ZWQsIGNvbnN0IHVpbnQ4X3QgKmRzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGludCBp LCB0ZW1wWzY0XSwgc3VtID0gMDsKQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgaW50IGhhZGFt YXJkOF9kaWZmOHg4X2MoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRzdCwKICAg ICByZXR1cm4gc3VtOwogfQogCi1zdGF0aWMgaW50IGhhZGFtYXJkOF9pbnRyYTh4OF9jKE1wZWdF bmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMsCitzdGF0aWMgaW50IGhhZGFtYXJkOF9p bnRyYTh4OF9jKE1QVkVuY0NvbnRleHQgKnVudXNlZCwgY29uc3QgdWludDhfdCAqc3JjLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkdW1teSwgcHRyZGlm Zl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IGksIHRlbXBbNjRdLCBzdW0gPSAwOwpAQCAt NjQ2LDcgKzY0Niw3IEBAIHN0YXRpYyBpbnQgaGFkYW1hcmQ4X2ludHJhOHg4X2MoTXBlZ0VuY0Nv bnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYywKICAgICByZXR1cm4gc3VtOwogfQogCi1zdGF0 aWMgaW50IGRjdF9zYWQ4eDhfYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3Jj MSwKK3N0YXRpYyBpbnQgZGN0X3NhZDh4OF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0 IHVpbnQ4X3QgKnNyYzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpz cmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBMT0NBTF9BTElHTkVEXzE2KGlu dDE2X3QsIHRlbXAsIFs2NF0pOwpAQCAtNjg1LDcgKzY4NSw3IEBAIHN0YXRpYyBpbnQgZGN0X3Nh ZDh4OF9jKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLAogICAgICAgICBE U1QoNywgKGE0ID4+IDIpIC0gYTcpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQog Ci1zdGF0aWMgaW50IGRjdDI2NF9zYWQ4eDhfYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWlu dDhfdCAqc3JjMSwKK3N0YXRpYyBpbnQgZGN0MjY0X3NhZDh4OF9jKE1QVkVuY0NvbnRleHQgKmNv bnN0IHMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCB1aW50OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBpbnQx Nl90IGRjdFs4XVs4XTsKQEAgLTcxMCw3ICs3MTAsNyBAQCBzdGF0aWMgaW50IGRjdDI2NF9zYWQ4 eDhfYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3JjMSwKIH0KICNlbmRpZgog Ci1zdGF0aWMgaW50IGRjdF9tYXg4eDhfYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhf dCAqc3JjMSwKK3N0YXRpYyBpbnQgZGN0X21heDh4OF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMs IGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50 OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBMT0NBTF9BTElHTkVE XzE2KGludDE2X3QsIHRlbXAsIFs2NF0pOwpAQCAtNzI1LDIyICs3MjUsMjIgQEAgc3RhdGljIGlu dCBkY3RfbWF4OHg4X2MoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAg ICAgcmV0dXJuIHN1bTsKIH0KIAotc3RhdGljIGludCBxdWFudF9wc25yOHg4X2MoTXBlZ0VuY0Nv bnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCitzdGF0aWMgaW50IHF1YW50X3BzbnI4eDhf YyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBjb25zdCB1aW50OF90ICpzcmMxLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc3JjMiwgcHRyZGlmZl90IHN0cmlkZSwg aW50IGgpCiB7CiAgICAgTE9DQUxfQUxJR05FRF8xNihpbnQxNl90LCB0ZW1wLCBbNjQgKiAyXSk7 CiAgICAgaW50MTZfdCAqY29uc3QgYmFrID0gdGVtcCArIDY0OwogICAgIGludCBzdW0gPSAwLCBp OwogCi0gICAgcy0+bWJfaW50cmEgPSAwOworICAgIHMtPmMubWJfaW50cmEgPSAwOwogCiAgICAg cy0+cGRzcC5kaWZmX3BpeGVsc191bmFsaWduZWQodGVtcCwgc3JjMSwgc3JjMiwgc3RyaWRlKTsK IAogICAgIG1lbWNweShiYWssIHRlbXAsIDY0ICogc2l6ZW9mKGludDE2X3QpKTsKIAotICAgIHMt PmJsb2NrX2xhc3RfaW5kZXhbMCAvKiBGSVhNRSAqL10gPQotICAgICAgICBzLT5kY3RfcXVhbnRp emUocywgdGVtcCwgMCAvKiBGSVhNRSAqLywgcy0+cXNjYWxlLCAmaSk7Ci0gICAgcy0+ZGN0X3Vu cXVhbnRpemVfaW50ZXIocywgdGVtcCwgMCwgcy0+cXNjYWxlKTsKKyAgICBzLT5jLmJsb2NrX2xh c3RfaW5kZXhbMCAvKiBGSVhNRSAqL10gPQorICAgICAgICBzLT5kY3RfcXVhbnRpemUocywgdGVt cCwgMCAvKiBGSVhNRSAqLywgcy0+Yy5xc2NhbGUsICZpKTsKKyAgICBzLT5jLmRjdF91bnF1YW50 aXplX2ludGVyKCZzLT5jLCB0ZW1wLCAwLCBzLT5jLnFzY2FsZSk7CiAgICAgZmZfc2ltcGxlX2lk Y3RfaW50MTZfOGJpdCh0ZW1wKTsgLy8gRklYTUUKIAogICAgIGZvciAoaSA9IDA7IGkgPCA2NDsg aSsrKQpAQCAtNzQ5LDEwICs3NDksMTAgQEAgc3RhdGljIGludCBxdWFudF9wc25yOHg4X2MoTXBl Z0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAgICAgcmV0dXJuIHN1bTsKIH0K IAotc3RhdGljIGludCByZDh4OF9jKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpz cmMxLCBjb25zdCB1aW50OF90ICpzcmMyLAorc3RhdGljIGludCByZDh4OF9jKE1QVkVuY0NvbnRl eHQgKmNvbnN0IHMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKnNyYzIsCiAg ICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7Ci0gICAgY29uc3Qg dWludDhfdCAqc2NhbnRhYmxlID0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CisgICAg Y29uc3QgdWludDhfdCAqc2NhbnRhYmxlID0gcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRl ZDsKICAgICBMT0NBTF9BTElHTkVEXzE2KGludDE2X3QsIHRlbXAsIFs2NF0pOwogICAgIExPQ0FM X0FMSUdORURfMTYodWludDhfdCwgbHNyYzEsIFs2NF0pOwogICAgIExPQ0FMX0FMSUdORURfMTYo dWludDhfdCwgbHNyYzIsIFs2NF0pOwpAQCAtNzY1LDEzICs3NjUsMTMgQEAgc3RhdGljIGludCBy ZDh4OF9jKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50 OF90ICpzcmMyLAogCiAgICAgcy0+cGRzcC5kaWZmX3BpeGVscyh0ZW1wLCBsc3JjMSwgbHNyYzIs IDgpOwogCi0gICAgcy0+YmxvY2tfbGFzdF9pbmRleFswIC8qIEZJWE1FICovXSA9CisgICAgcy0+ Yy5ibG9ja19sYXN0X2luZGV4WzAgLyogRklYTUUgKi9dID0KICAgICBsYXN0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID0KLSAgICAgICAgcy0+ZGN0X3F1YW50aXplKHMsIHRlbXAsIDAg LyogRklYTUUgKi8sIHMtPnFzY2FsZSwgJmkpOworICAgICAgICBzLT5kY3RfcXVhbnRpemUocywg dGVtcCwgMCAvKiBGSVhNRSAqLywgcy0+Yy5xc2NhbGUsICZpKTsKIAogICAgIGJpdHMgPSAwOwog Ci0gICAgaWYgKHMtPm1iX2ludHJhKSB7CisgICAgaWYgKHMtPmMubWJfaW50cmEpIHsKICAgICAg ICAgc3RhcnRfaSAgICAgPSAxOwogICAgICAgICBsZW5ndGggICAgICA9IHMtPmludHJhX2FjX3Zs Y19sZW5ndGg7CiAgICAgICAgIGxhc3RfbGVuZ3RoID0gcy0+aW50cmFfYWNfdmxjX2xhc3RfbGVu Z3RoOwpAQCAtODExLDIzICs4MTEsMjMgQEAgc3RhdGljIGludCByZDh4OF9jKE1wZWdFbmNDb250 ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50OF90ICpzcmMyLAogICAgIH0K IAogICAgIGlmIChsYXN0ID49IDApIHsKLSAgICAgICAgaWYgKHMtPm1iX2ludHJhKQotICAgICAg ICAgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEocywgdGVtcCwgMCwgcy0+cXNjYWxlKTsKKyAg ICAgICAgaWYgKHMtPmMubWJfaW50cmEpCisgICAgICAgICAgICBzLT5jLmRjdF91bnF1YW50aXpl X2ludHJhKCZzLT5jLCB0ZW1wLCAwLCBzLT5jLnFzY2FsZSk7CiAgICAgICAgIGVsc2UKLSAgICAg ICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludGVyKHMsIHRlbXAsIDAsIHMtPnFzY2FsZSk7Cisg ICAgICAgICAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludGVyKCZzLT5jLCB0ZW1wLCAwLCBzLT5j LnFzY2FsZSk7CiAgICAgfQogCi0gICAgcy0+aWRzcC5pZGN0X2FkZChsc3JjMiwgOCwgdGVtcCk7 CisgICAgcy0+Yy5pZHNwLmlkY3RfYWRkKGxzcmMyLCA4LCB0ZW1wKTsKIAogICAgIGRpc3RvcnRp b24gPSBzLT5zc2VfY21wWzFdKE5VTEwsIGxzcmMyLCBsc3JjMSwgOCwgOCk7CiAKLSAgICByZXR1 cm4gZGlzdG9ydGlvbiArICgoYml0cyAqIHMtPnFzY2FsZSAqIHMtPnFzY2FsZSAqIDEwOSArIDY0 KSA+PiA3KTsKKyAgICByZXR1cm4gZGlzdG9ydGlvbiArICgoYml0cyAqIHMtPmMucXNjYWxlICog cy0+Yy5xc2NhbGUgKiAxMDkgKyA2NCkgPj4gNyk7CiB9CiAKLXN0YXRpYyBpbnQgYml0OHg4X2Mo TXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKnNy YzIsCitzdGF0aWMgaW50IGJpdDh4OF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IHVp bnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKnNyYzIsCiAgICAgICAgICAgICAgICAgICAgIHB0 cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewotICAgIGNvbnN0IHVpbnQ4X3QgKnNjYW50YWJsZSA9 IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkOworICAgIGNvbnN0IHVpbnQ4X3QgKnNjYW50 YWJsZSA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CiAgICAgTE9DQUxfQUxJR05F RF8xNihpbnQxNl90LCB0ZW1wLCBbNjRdKTsKICAgICBpbnQgaSwgbGFzdCwgcnVuLCBiaXRzLCBs ZXZlbCwgc3RhcnRfaTsKICAgICBjb25zdCBpbnQgZXNjX2xlbmd0aCA9IHMtPmFjX2VzY19sZW5n dGg7CkBAIC04MzUsMTMgKzgzNSwxMyBAQCBzdGF0aWMgaW50IGJpdDh4OF9jKE1wZWdFbmNDb250 ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50OF90ICpzcmMyLAogCiAgICAg cy0+cGRzcC5kaWZmX3BpeGVsc191bmFsaWduZWQodGVtcCwgc3JjMSwgc3JjMiwgc3RyaWRlKTsK IAotICAgIHMtPmJsb2NrX2xhc3RfaW5kZXhbMCAvKiBGSVhNRSAqL10gPQorICAgIHMtPmMuYmxv Y2tfbGFzdF9pbmRleFswIC8qIEZJWE1FICovXSA9CiAgICAgbGFzdCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA9Ci0gICAgICAgIHMtPmRjdF9xdWFudGl6ZShzLCB0ZW1wLCAwIC8qIEZJ WE1FICovLCBzLT5xc2NhbGUsICZpKTsKKyAgICAgICAgcy0+ZGN0X3F1YW50aXplKHMsIHRlbXAs IDAgLyogRklYTUUgKi8sIHMtPmMucXNjYWxlLCAmaSk7CiAKICAgICBiaXRzID0gMDsKIAotICAg IGlmIChzLT5tYl9pbnRyYSkgeworICAgIGlmIChzLT5jLm1iX2ludHJhKSB7CiAgICAgICAgIHN0 YXJ0X2kgICAgID0gMTsKICAgICAgICAgbGVuZ3RoICAgICAgPSBzLT5pbnRyYV9hY192bGNfbGVu Z3RoOwogICAgICAgICBsYXN0X2xlbmd0aCA9IHMtPmludHJhX2FjX3ZsY19sYXN0X2xlbmd0aDsK QEAgLTg4NCw3ICs4ODQsNyBAQCBzdGF0aWMgaW50IGJpdDh4OF9jKE1wZWdFbmNDb250ZXh0ICpz LCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50OF90ICpzcmMyLAogfQogCiAjZGVmaW5l IFZTQURfSU5UUkEoc2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi1zdGF0aWMgaW50IHZzYWRfaW50cmEgIyMgc2l6ZSAjIyBfYyhNcGVnRW5jQ29u dGV4dCAqYywgICAgICAgICAgICAgICAgICBcCitzdGF0aWMgaW50IHZzYWRfaW50cmEgIyMgc2l6 ZSAjIyBfYyhNUFZFbmNDb250ZXh0ICp1bnVzZWQsICAgICAgICAgICAgICBcCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90 ICpkdW1teSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90 IHN0cmlkZSwgaW50IGgpICAgICAgICAgICAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtOTA2LDcg KzkwNiw3IEBAIFZTQURfSU5UUkEoOCkKIFZTQURfSU5UUkEoMTYpCiAKICNkZWZpbmUgVlNBRChz aXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi1zdGF0aWMgaW50IHZzYWQgIyMgc2l6ZSAjIyBfYyhNcGVnRW5jQ29udGV4dCAq YywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3RhdGljIGludCB2c2FkICMjIHNp emUgIyMgX2MoTVBWRW5jQ29udGV4dCAqdW51c2VkLCAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25z dCB1aW50OF90ICpzMiwgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTkyNiw3ICs5MjYsNyBAQCBWU0FEKDE2KQog CiAjZGVmaW5lIFNRKGEpICgoYSkgKiAoYSkpCiAjZGVmaW5lIFZTU0VfSU5UUkEoc2l6ZSkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgaW50 IHZzc2VfaW50cmEgIyMgc2l6ZSAjIyBfYyhNcGVnRW5jQ29udGV4dCAqYywgICAgICAgICAgICAg ICAgICBcCitzdGF0aWMgaW50IHZzc2VfaW50cmEgIyMgc2l6ZSAjIyBfYyhNUFZFbmNDb250ZXh0 ICp1bnVzZWQsICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1teSwgXAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpICAgICAg ICAgICAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtOTQ4LDggKzk0OCw4IEBAIFZTU0VfSU5UUkEo OCkKIFZTU0VfSU5UUkEoMTYpCiAKICNkZWZpbmUgVlNTRShzaXplKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgaW50 IHZzc2UgIyMgc2l6ZSAjIyBfYyhNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEs IGNvbnN0IHVpbnQ4X3QgKnMyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJk aWZmX3Qgc3RyaWRlLCBpbnQgaCkgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3RhdGljIGlu dCB2c3NlICMjIHNpemUgIyMgX2MoTVBWRW5jQ29udGV4dCAqdW51c2VkLCBjb25zdCB1aW50OF90 ICpzMSwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4 X3QgKnMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgICAgICBcCiB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogICAgIGludCBzY29yZSA9IDAsIHgsIHk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CkBAIC05NjYsOCArOTY2LDggQEAgVlNTRSg4KQogVlNTRSgxNikKIAogI2RlZmluZSBXUkFQUEVS OF8xNl9TUShuYW1lOCwgbmFtZTE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotc3RhdGljIGludCBuYW1lMTYoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRz dCwgY29uc3QgdWludDhfdCAqc3JjLCBcCi0gICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3Ry aWRlLCBpbnQgaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdGF0aWMgaW50IG5h bWUxNihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBjb25zdCB1aW50OF90ICpkc3QsICAgICAgICAg ICBcCisgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzdHJp ZGUsIGludCBoKSAgICAgICAgICBcCiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaW50IHNjb3JlID0g MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21lX2NtcC5oIGIvbGli YXZjb2RlYy9tZV9jbXAuaAppbmRleCAwODU3ZWQwM2UyLi5mMWRiY2Q1MTQ2IDEwMDY0NAotLS0g YS9saWJhdmNvZGVjL21lX2NtcC5oCisrKyBiL2xpYmF2Y29kZWMvbWVfY21wLmgKQEAgLTQxLDEz ICs0MSwxMyBAQCBFWFRFUk4gY29uc3QgdWludDMyX3QgZmZfc3F1YXJlX3RhYls1MTJdOwogICog IWZ1dHVyZSB2aWRlbyBjb2RlY3MgbWlnaHQgbmVlZCBmdW5jdGlvbnMgd2l0aCBsZXNzIHN0cmlj dCBhbGlnbm1lbnQKICAqLwogCi1zdHJ1Y3QgTXBlZ0VuY0NvbnRleHQ7Cit0eXBlZGVmIHN0cnVj dCBNUFZFbmNDb250ZXh0IE1QVkVuY0NvbnRleHQ7CiAvKiBNb3Rpb24gZXN0aW1hdGlvbjoKICAq IGggaXMgbGltaXRlZCB0byB7IHdpZHRoIC8gMiwgd2lkdGgsIDIgKiB3aWR0aCB9LAogICogYnV0 IG5ldmVyIGxhcmdlciB0aGFuIDE2IGFuZCBuZXZlciBzbWFsbGVyIHRoYW4gMi4KICAqIEFsdGhv dWdoIGN1cnJlbnRseSBoIDwgNCBpcyBub3QgdXNlZCBhcyBmdW5jdGlvbnMgd2l0aAogICogd2lk dGggPCA4IGFyZSBuZWl0aGVyIHVzZWQgbm9yIGltcGxlbWVudGVkLiAqLwotdHlwZWRlZiBpbnQg KCptZV9jbXBfZnVuYykoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpjLAordHlwZWRlZiBpbnQgKCpt ZV9jbXBfZnVuYykoTVBWRW5jQ29udGV4dCAqYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVpbnQ4X3QgKmJsazEgLyogYWxpZ24gd2lkdGggKDggb3IgMTYpICovLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYmxrMiAvKiBhbGlnbiAxICovLCBw dHJkaWZmX3Qgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGgpOwpAQCAt ODYsNyArODYsNyBAQCB2b2lkIGZmX21lX2NtcF9pbml0X21pcHMoTUVDbXBDb250ZXh0ICpjLCBB VkNvZGVjQ29udGV4dCAqYXZjdHgpOwogICogRmlsbCB0aGUgZnVuY3Rpb24gcG9pbnRlciBhcnJh eSBjbXBbNl0gd2l0aCBtZV9jbXBfZnVuY3MgZnJvbQogICogYyBiYXNlZCB1cG9uIHR5cGUuIElm IG1wdmVuYyBpcyBub3Qgc2V0LCBhbiBlcnJvciBpcyByZXR1cm5lZAogICogaWYgdGhlIHR5cGUg b2YgY29tcGFyaXNvbiBmdW5jdGlvbnMgcmVxdWlyZXMgYW4gaW5pdGlhbGl6ZWQKLSAqIE1wZWdF bmNDb250ZXh0LgorICogTVBWRW5jQ29udGV4dC4KICAqLwogaW50IGZmX3NldF9jbXAoY29uc3Qg TUVDbXBDb250ZXh0ICpjLCBtZV9jbXBfZnVuYyAqY21wLAogICAgICAgICAgICAgICAgaW50IHR5 cGUsIGludCBtcHZlbmMpOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9taXBzL21lX2NtcF9taXBz LmggYi9saWJhdmNvZGVjL21pcHMvbWVfY21wX21pcHMuaAppbmRleCA3MmI3ZGU3MGI0Li43ZTJj OTI2ZDNhIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21pcHMvbWVfY21wX21pcHMuaAorKysgYi9s aWJhdmNvZGVjL21pcHMvbWVfY21wX21pcHMuaApAQCAtMjEsMzggKzIxLDM4IEBACiAjaWZuZGVm IEFWQ09ERUNfTUlQU19NRV9DTVBfTUlQU19ICiAjZGVmaW5lIEFWQ09ERUNfTUlQU19NRV9DTVBf TUlQU19ICiAKLSNpbmNsdWRlICIuLi9tcGVndmlkZW8uaCIKKyNpbmNsdWRlICIuLi9tcGVndmlk ZW9lbmMuaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL2JpdF9kZXB0aF90ZW1wbGF0ZS5jIgogCi1p bnQgZmZfaGFkYW1hcmQ4X2RpZmY4eDhfbXNhKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50 OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBmZl9oYWRhbWFyZDhfZGlmZjh4OF9t c2EoTVBWRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqZHN0LCBjb25zdCB1aW50OF90ICpz cmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo KTsKLWludCBmZl9oYWRhbWFyZDhfaW50cmE4eDhfbXNhKE1wZWdFbmNDb250ZXh0ICpzLCBjb25z dCB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBmZl9oYWRhbWFyZDhfaW50 cmE4eDhfbXNhKE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRzdCwgY29uc3QgdWlu dDhfdCAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk ZSwgaW50IGgpOwotaW50IGZmX2hhZGFtYXJkOF9kaWZmMTZfbXNhKE1wZWdFbmNDb250ZXh0ICpz LCBjb25zdCB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBmZl9oYWRhbWFy ZDhfZGlmZjE2X21zYShNUFZFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpkc3QsIGNvbnN0 IHVpbnQ4X3QgKnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3Ry aWRlLCBpbnQgaCk7Ci1pbnQgZmZfaGFkYW1hcmQ4X2ludHJhMTZfbXNhKE1wZWdFbmNDb250ZXh0 ICpzLCBjb25zdCB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBmZl9oYWRh bWFyZDhfaW50cmExNl9tc2EoTVBWRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqZHN0LCBj b25zdCB1aW50OF90ICpzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZf dCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzMTZfbXNhKE1wZWdFbmNDb250ZXh0ICp2 LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9h YnMxNl9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWlu dDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo KTsKLWludCBmZl9waXhfYWJzMTZfeDJfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50 OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnMxNl94Ml9tc2Eo TVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4 MiwKICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWlu dCBmZl9waXhfYWJzMTZfeTJfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnMxNl95Ml9tc2EoTVBWRW5j Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAg ICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9w aXhfYWJzMTZfeHkyX21zYShNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg Y29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9waXhfYWJzMTZfeHkyX21zYShNUFZFbmNDb250 ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAg ICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhf YWJzOF9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVp bnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4X2FiczhfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0 IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAg IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzOF94Ml9tc2EoTXBlZ0Vu Y0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitp bnQgZmZfcGl4X2FiczhfeDJfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBp eDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZf dCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzOF95Ml9tc2EoTXBlZ0VuY0NvbnRleHQg KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4 X2FiczhfeTJfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0 IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUs IGludCBoKTsKLWludCBmZl9waXhfYWJzOF94eTJfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25z dCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnM4X3h5 Ml9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhf dCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo KTsKLWludCBmZl9zc2UxNl9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnB1 OFNyYywgY29uc3QgdWludDhfdCAqcHU4UmVmLAoraW50IGZmX3NzZTE2X21zYShNUFZFbmNDb250 ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwdThTcmMsIGNvbnN0IHVpbnQ4X3QgKnB1OFJlZiwKICAg ICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGkzMkhlaWdodCk7Ci1pbnQgZmZf c3NlOF9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnB1OFNyYywgY29uc3Qg dWludDhfdCAqcHU4UmVmLAoraW50IGZmX3NzZThfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0 IHVpbnQ4X3QgKnB1OFNyYywgY29uc3QgdWludDhfdCAqcHU4UmVmLAogICAgICAgICAgICAgICAg IHB0cmRpZmZfdCBzdHJpZGUsIGludCBpMzJIZWlnaHQpOwotaW50IGZmX3NzZTRfbXNhKE1wZWdF bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwdThTcmMsIGNvbnN0IHVpbnQ4X3QgKnB1OFJl ZiwKK2ludCBmZl9zc2U0X21zYShNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwdThT cmMsIGNvbnN0IHVpbnQ4X3QgKnB1OFJlZiwKICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3Ry aWRlLCBpbnQgaTMySGVpZ2h0KTsKIHZvaWQgZmZfYWRkX3BpeGVsczhfbXNhKGNvbnN0IHVpbnQ4 X3QgKnJlc3RyaWN0IHBpeGVscywgaW50MTZfdCAqYmxvY2ssCiAgICAgICAgICAgICAgICAgICAg ICAgICBwdHJkaWZmX3Qgc3RyaWRlKTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9tZV9j bXBfbXNhLmMgYi9saWJhdmNvZGVjL21pcHMvbWVfY21wX21zYS5jCmluZGV4IDM1MTQ5NDE2MWYu LjhlY2M2MzUyZTYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbWlwcy9tZV9jbXBfbXNhLmMKKysr IGIvbGliYXZjb2RlYy9taXBzL21lX2NtcF9tc2EuYwpAQCAtNzMyLDc5ICs3MzIsNzkgQEAgc3Rh dGljIGludDMyX3QgaGFkYW1hcmRfaW50cmFfOHg4X21zYShjb25zdCB1aW50OF90ICpzcmMsIGlu dDMyX3Qgc3JjX3N0cmlkZSwKICAgICByZXR1cm4gc3VtX3JlczsKIH0KIAotaW50IGZmX3BpeF9h YnMxNl9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnNyYywgY29uc3QgdWlu dDhfdCAqcmVmLAoraW50IGZmX3BpeF9hYnMxNl9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3Qg dWludDhfdCAqc3JjLCBjb25zdCB1aW50OF90ICpyZWYsCiAgICAgICAgICAgICAgICAgICAgICBw dHJkaWZmX3Qgc3RyaWRlLCBpbnQgaGVpZ2h0KQogewogICAgIHJldHVybiBzYWRfMTZ3aWR0aF9t c2Eoc3JjLCBzdHJpZGUsIHJlZiwgc3RyaWRlLCBoZWlnaHQpOwogfQogCi1pbnQgZmZfcGl4X2Fi czhfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4 X3QgKnJlZiwKK2ludCBmZl9waXhfYWJzOF9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu dDhfdCAqc3JjLCBjb25zdCB1aW50OF90ICpyZWYsCiAgICAgICAgICAgICAgICAgICAgIHB0cmRp ZmZfdCBzdHJpZGUsIGludCBoZWlnaHQpCiB7CiAgICAgcmV0dXJuIHNhZF84d2lkdGhfbXNhKHNy Yywgc3RyaWRlLCByZWYsIHN0cmlkZSwgaGVpZ2h0KTsKIH0KIAotaW50IGZmX3BpeF9hYnMxNl94 Ml9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4 X3QgKnBpeDIsCitpbnQgZmZfcGl4X2FiczE2X3gyX21zYShNUFZFbmNDb250ZXh0ICp2LCBjb25z dCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAg ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHNhZF9ob3Jpel9i aWxpbmVhcl9maWx0ZXJfMTZ3aWR0aF9tc2EocGl4MSwgc3RyaWRlLCBwaXgyLCBzdHJpZGUsIGgp OwogfQogCi1pbnQgZmZfcGl4X2FiczE2X3kyX21zYShNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9waXhfYWJzMTZfeTJf bXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkK IHsKICAgICByZXR1cm4gc2FkX3ZlcnRfYmlsaW5lYXJfZmlsdGVyXzE2d2lkdGhfbXNhKHBpeDEs IHN0cmlkZSwgcGl4Miwgc3RyaWRlLCBoKTsKIH0KIAotaW50IGZmX3BpeF9hYnMxNl94eTJfbXNh KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw aXgyLAoraW50IGZmX3BpeF9hYnMxNl94eTJfbXNhKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVp bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHNhZF9odl9iaWxpbmVh cl9maWx0ZXJfMTZ3aWR0aF9tc2EocGl4MSwgc3RyaWRlLCBwaXgyLCBzdHJpZGUsIGgpOwogfQog Ci1pbnQgZmZfcGl4X2FiczhfeDJfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90 ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnM4X3gyX21zYShNUFZF bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAog ICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBy ZXR1cm4gc2FkX2hvcml6X2JpbGluZWFyX2ZpbHRlcl84d2lkdGhfbXNhKHBpeDEsIHN0cmlkZSwg cGl4Miwgc3RyaWRlLCBoKTsKIH0KIAotaW50IGZmX3BpeF9hYnM4X3kyX21zYShNcGVnRW5jQ29u dGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBm Zl9waXhfYWJzOF95Ml9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg Y29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0 cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHNhZF92ZXJ0X2JpbGluZWFyX2ZpbHRlcl84d2lk dGhfbXNhKHBpeDEsIHN0cmlkZSwgcGl4Miwgc3RyaWRlLCBoKTsKIH0KIAotaW50IGZmX3BpeF9h YnM4X3h5Ml9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0 IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4X2FiczhfeHkyX21zYShNUFZFbmNDb250ZXh0ICp2 LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAg ICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHNhZF9o dl9iaWxpbmVhcl9maWx0ZXJfOHdpZHRoX21zYShwaXgxLCBzdHJpZGUsIHBpeDIsIHN0cmlkZSwg aCk7CiB9CiAKLWludCBmZl9zc2UxNl9tc2EoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4 X3QgKnNyYywgY29uc3QgdWludDhfdCAqcmVmLAoraW50IGZmX3NzZTE2X21zYShNUFZFbmNDb250 ZXh0ICp2LCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4X3QgKnJlZiwKICAgICAgICAg ICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGhlaWdodCkKIHsKICAgICByZXR1cm4gc3Nl XzE2d2lkdGhfbXNhKHNyYywgc3RyaWRlLCByZWYsIHN0cmlkZSwgaGVpZ2h0KTsKIH0KIAotaW50 IGZmX3NzZThfbXNhKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0 IHVpbnQ4X3QgKnJlZiwKK2ludCBmZl9zc2U4X21zYShNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1 aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4X3QgKnJlZiwKICAgICAgICAgICAgICAgICBwdHJkaWZm X3Qgc3RyaWRlLCBpbnQgaGVpZ2h0KQogewogICAgIHJldHVybiBzc2VfOHdpZHRoX21zYShzcmMs IHN0cmlkZSwgcmVmLCBzdHJpZGUsIGhlaWdodCk7CiB9CiAKLWludCBmZl9zc2U0X21zYShNcGVn RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqc3JjLCBjb25zdCB1aW50OF90ICpyZWYsCitp bnQgZmZfc3NlNF9tc2EoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqc3JjLCBjb25z dCB1aW50OF90ICpyZWYsCiAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGhl aWdodCkKIHsKICAgICByZXR1cm4gc3NlXzR3aWR0aF9tc2Eoc3JjLCBzdHJpZGUsIHJlZiwgc3Ry aWRlLCBoZWlnaHQpOwogfQogCi1pbnQgZmZfaGFkYW1hcmQ4X2RpZmY4eDhfbXNhKE1wZWdFbmND b250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywKK2ludCBm Zl9oYWRhbWFyZDhfZGlmZjh4OF9tc2EoTVBWRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAq ZHN0LCBjb25zdCB1aW50OF90ICpzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0 cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIHJldHVybiBoYWRhbWFyZF9kaWZmXzh4OF9t c2Eoc3JjLCBzdHJpZGUsIGRzdCwgc3RyaWRlKTsKIH0KIAotaW50IGZmX2hhZGFtYXJkOF9pbnRy YTh4OF9tc2EoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYywgY29uc3QgdWlu dDhfdCAqZHVtbXksCitpbnQgZmZfaGFkYW1hcmQ4X2ludHJhOHg4X21zYShNUFZFbmNDb250ZXh0 ICpzLCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4X3QgKmR1bW15LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgcmV0 dXJuIGhhZGFtYXJkX2ludHJhXzh4OF9tc2Eoc3JjLCBzdHJpZGUsIGR1bW15LCBzdHJpZGUpOwpA QCAtODEyLDcgKzgxMiw3IEBAIGludCBmZl9oYWRhbWFyZDhfaW50cmE4eDhfbXNhKE1wZWdFbmND b250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMsIGNvbnN0IHVpbnQ4CiAKIC8qIEhhZGFtYXJk IFRyYW5zZm9ybSBmdW5jdGlvbnMgKi8KICNkZWZpbmUgV1JBUFBFUjhfMTZfU1EobmFtZTgsIG5h bWUxNikgICAgICAgICAgICAgICAgICAgICAgXAotaW50IG5hbWUxNihNcGVnRW5jQ29udGV4dCAq cywgY29uc3QgdWludDhfdCAqZHN0LCBjb25zdCB1aW50OF90ICpzcmMsICBcCitpbnQgbmFtZTE2 KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRzdCwgY29uc3QgdWludDhfdCAqc3Jj LCAgXAogICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgICAgICAgICAgICAgICAg ICAgICAgICBcCiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICBpbnQgc2NvcmUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9taXBzL21wZWd2aWRl b19taXBzLmggYi9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX21pcHMuaAppbmRleCA3NjBkN2Iz Mjk1Li43MmZmZWQ2OTg1IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX21p cHMuaAorKysgYi9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX21pcHMuaApAQCAtMjIsNiArMjIs NyBAQAogI2RlZmluZSBBVkNPREVDX01JUFNfTVBFR1ZJREVPX01JUFNfSAogCiAjaW5jbHVkZSAi bGliYXZjb2RlYy9tcGVndmlkZW8uaCIKKyNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlb2Vu Yy5oIgogCiB2b2lkIGZmX2RjdF91bnF1YW50aXplX2gyNjNfaW50cmFfbW1pKE1wZWdFbmNDb250 ZXh0ICpzLCBpbnQxNl90ICpibG9jaywKICAgICAgICAgaW50IG4sIGludCBxc2NhbGUpOwpAQCAt MzMsNiArMzQsNiBAQCB2b2lkIGZmX2RjdF91bnF1YW50aXplX21wZWcxX2ludGVyX21taShNcGVn RW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssCiAgICAgICAgIGludCBuLCBpbnQgcXNjYWxl KTsKIHZvaWQgZmZfZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmFfbW1pKE1wZWdFbmNDb250ZXh0 ICpzLCBpbnQxNl90ICpibG9jaywKICAgICAgICAgaW50IG4sIGludCBxc2NhbGUpOwotdm9pZCBm Zl9kZW5vaXNlX2RjdF9tbWkoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgKmJsb2NrKTsKK3Zv aWQgZmZfZGVub2lzZV9kY3RfbW1pKE1QVkVuY0NvbnRleHQgKnMsIGludDE2X3QgKmJsb2NrKTsK IAogI2VuZGlmIC8qIEFWQ09ERUNfTUlQU19NUEVHVklERU9fTUlQU19IICovCmRpZmYgLS1naXQg YS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvZW5jX2luaXRfbWlwcy5jIGIvbGliYXZjb2RlYy9t aXBzL21wZWd2aWRlb2VuY19pbml0X21pcHMuYwppbmRleCA1ZWYwNjY0OTM3Li43ODMxOTczZWI4 IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvZW5jX2luaXRfbWlwcy5jCisr KyBiL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNfaW5pdF9taXBzLmMKQEAgLTIzLDcgKzIz LDcgQEAKICNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oIgogI2luY2x1ZGUgIm1w ZWd2aWRlb19taXBzLmgiCiAKLWF2X2NvbGQgdm9pZCBmZl9tcHZlbmNfZGN0X2luaXRfbWlwcyhN cGVnRW5jQ29udGV4dCAqcykKK2F2X2NvbGQgdm9pZCBmZl9tcHZlbmNfZGN0X2luaXRfbWlwcyhN UFZFbmNDb250ZXh0ICpzKQogewogICAgIGludCBjcHVfZmxhZ3MgPSBhdl9nZXRfY3B1X2ZsYWdz KCk7CiAKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNfbW1pLmMgYi9s aWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvZW5jX21taS5jCmluZGV4IDY1ZGExNTVlOWYuLjA4NWJl M2IwZWMgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNfbW1pLmMKKysr IGIvbGliYXZjb2RlYy9taXBzL21wZWd2aWRlb2VuY19tbWkuYwpAQCAtMjUsOSArMjUsOSBAQAog I2luY2x1ZGUgIm1wZWd2aWRlb19taXBzLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvbW1p dXRpbHMuaCIKIAotdm9pZCBmZl9kZW5vaXNlX2RjdF9tbWkoTXBlZ0VuY0NvbnRleHQgKnMsIGlu dDE2X3QgKmJsb2NrKQordm9pZCBmZl9kZW5vaXNlX2RjdF9tbWkoTVBWRW5jQ29udGV4dCAqcywg aW50MTZfdCAqYmxvY2spCiB7Ci0gICAgY29uc3QgaW50IGludHJhID0gcy0+bWJfaW50cmE7Cisg ICAgY29uc3QgaW50IGludHJhID0gcy0+Yy5tYl9pbnRyYTsKICAgICBpbnQgKnN1bSA9IHMtPmRj dF9lcnJvcl9zdW1baW50cmFdOwogICAgIHVpbnQxNl90ICpvZmZzZXQgPSBzLT5kY3Rfb2Zmc2V0 W2ludHJhXTsKICAgICBkb3VibGUgZnRtcFs4XTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlw cy9tcGVndmlkZW9lbmNkc3BfaW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVv ZW5jZHNwX2luaXRfbWlwcy5jCmluZGV4IDNlZmJlZWMzNGEuLjI0YTE3YjkxZGIgMTAwNjQ0Ci0t LSBhL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9lbmNkc3BfaW5pdF9taXBzLmMKKysrIGIvbGli YXZjb2RlYy9taXBzL21wZWd2aWRlb2VuY2RzcF9pbml0X21pcHMuYwpAQCAtMjEsNiArMjEsNyBA QAogI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAibGliYXZ1dGls L21pcHMvY3B1LmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9iaXRfZGVwdGhfdGVtcGxhdGUuYyIK KyNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlb2VuY2RzcC5oIgogI2luY2x1ZGUgImgyNjNk c3BfbWlwcy5oIgogCiBhdl9jb2xkIHZvaWQgZmZfbXBlZ3ZpZGVvZW5jZHNwX2luaXRfbWlwcyhN cGVndmlkZW9FbmNEU1BDb250ZXh0ICpjLApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9taXBzL3Bp eGJsb2NrZHNwX2luaXRfbWlwcy5jIGIvbGliYXZjb2RlYy9taXBzL3BpeGJsb2NrZHNwX2luaXRf bWlwcy5jCmluZGV4IDJlMmQ3MDk1M2IuLjAwZjE4OWQ1NTggMTAwNjQ0Ci0tLSBhL2xpYmF2Y29k ZWMvbWlwcy9waXhibG9ja2RzcF9pbml0X21pcHMuYworKysgYi9saWJhdmNvZGVjL21pcHMvcGl4 YmxvY2tkc3BfaW5pdF9taXBzLmMKQEAgLTIwLDYgKzIwLDcgQEAKICAqLwogCiAjaW5jbHVkZSAi bGliYXZ1dGlsL21pcHMvY3B1LmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy9waXhibG9ja2RzcC5o IgogI2luY2x1ZGUgInBpeGJsb2NrZHNwX21pcHMuaCIKIAogdm9pZCBmZl9waXhibG9ja2RzcF9p bml0X21pcHMoUGl4YmxvY2tEU1BDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvcGl4YmxvY2tkc3BfbWlwcy5oIGIvbGliYXZjb2Rl Yy9taXBzL3BpeGJsb2NrZHNwX21pcHMuaAppbmRleCA3ZmQxMzdjZDA5Li5mYzM4N2VhNDI3IDEw MDY0NAotLS0gYS9saWJhdmNvZGVjL21pcHMvcGl4YmxvY2tkc3BfbWlwcy5oCisrKyBiL2xpYmF2 Y29kZWMvbWlwcy9waXhibG9ja2RzcF9taXBzLmgKQEAgLTIyLDcgKzIyLDggQEAKICNpZm5kZWYg QVZDT0RFQ19NSVBTX1BJWEJMT0NLRFNQX01JUFNfSAogI2RlZmluZSBBVkNPREVDX01JUFNfUElY QkxPQ0tEU1BfTUlQU19ICiAKLSNpbmNsdWRlICIuLi9tcGVndmlkZW8uaCIKKyNpbmNsdWRlIDxz dGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KIAogdm9pZCBmZl9kaWZmX3BpeGVsc19tc2Eo aW50MTZfdCAqcmVzdHJpY3QgYmxvY2ssIGNvbnN0IHVpbnQ4X3QgKnNyYzEsCiAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlKTsKZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWpwZWdlbmMuYyBiL2xpYmF2Y29kZWMvbWpwZWdlbmMuYwpp bmRleCBhNmYyMDJkYTBhLi42NjgwNjUwMTFjIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21qcGVn ZW5jLmMKKysrIGIvbGliYXZjb2RlYy9tanBlZ2VuYy5jCkBAIC02MSw4ICs2MSw4IEBAIHR5cGVk ZWYgc3RydWN0IE1KcGVnSHVmZm1hbkNvZGUgewogCiAvKiBUaGUgZm9sbG93aW5nIGlzIHRoZSBw cml2YXRlIGNvbnRleHQgb2YgTUpQRUcvQU1WIGRlY29kZXIuCiAgKiBOb3RlIHRoYXQgd2hlbiB1 c2luZyBzbGljZSB0aHJlYWRpbmcgb25seSB0aGUgbWFpbiB0aHJlYWQncwotICogTXBlZ0VuY0Nv bnRleHQgaXMgZm9sbG93ZWQgYnkgYSBNanBlZ0NvbnRleHQ7IHRoZSBvdGhlciB0aHJlYWRzCi0g KiBjYW4gYWNjZXNzIHRoaXMgc2hhcmVkIGNvbnRleHQgdmlhIE1wZWdFbmNDb250ZXh0Lm1qcGVn LiAqLworICogTVBWRW5jQ29udGV4dCBpcyBmb2xsb3dlZCBieSBhIE1qcGVnQ29udGV4dDsgdGhl IG90aGVyIHRocmVhZHMKKyAqIGNhbiBhY2Nlc3MgdGhpcyBzaGFyZWQgY29udGV4dCB2aWEgTVBW RW5jQ29udGV4dC5tanBlZy4gKi8KIHR5cGVkZWYgc3RydWN0IE1KUEVHRW5jQ29udGV4dCB7CiAg ICAgTVBWTWFpbkVuY0NvbnRleHQgbXBlZzsKICAgICBNSnBlZ0NvbnRleHQgICBtanBlZzsKQEAg LTkyLDIyICs5MiwyMiBAQCBzdGF0aWMgYXZfY29sZCB2b2lkIGluaXRfdW5pX2FjX3ZsYyhjb25z dCB1aW50OF90IGh1ZmZfc2l6ZV9hY1syNTZdLAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgbWpw ZWdfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1wZWdFbmNDb250ZXh0ICpzKQorc3RhdGljIHZvaWQg bWpwZWdfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7Ci0g ICAgZmZfbWpwZWdfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKHMtPmF2Y3R4LCAmcy0+cGIsIHMtPmN1 cl9waWMucHRyLT5mLCBzLT5tanBlZ19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkLCAwLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzLT5pbnRyYV9tYXRyaXgsIHMtPmNocm9tYV9pbnRyYV9tYXRy aXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnNsaWNlX2NvbnRleHRf Y291bnQgPiAxKTsKKyAgICBmZl9tanBlZ19lbmNvZGVfcGljdHVyZV9oZWFkZXIocy0+Yy5hdmN0 eCwgJnMtPnBiLCBzLT5jLmN1cl9waWMucHRyLT5mLCBzLT5tanBlZ19jdHgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWQs IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuaW50cmFfbWF0cml4 LCBzLT5jLmNocm9tYV9pbnRyYV9tYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPmMuc2xpY2VfY29udGV4dF9jb3VudCA+IDEpOwogCiAgICAgcy0+ZXNjX3BvcyA9 IHB1dF9ieXRlc19jb3VudCgmcy0+cGIsIDApOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcy0+ c2xpY2VfY29udGV4dF9jb3VudDsgaSsrKQotICAgICAgICBzLT50aHJlYWRfY29udGV4dFtpXS0+ ZXNjX3BvcyA9IDA7CisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzLT5jLnNsaWNlX2NvbnRleHRf Y291bnQ7IGkrKykKKyAgICAgICAgcy0+Yy5lbmNfY29udGV4dHNbaV0tPmVzY19wb3MgPSAwOwog fQogCiBzdGF0aWMgaW50IG1qcGVnX2Ftdl9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVu Y0NvbnRleHQgKmNvbnN0IG0pCiB7CiAgICAgTUpQRUdFbmNDb250ZXh0ICpjb25zdCBtMiA9IChN SlBFR0VuY0NvbnRleHQqKW07Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsK KyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgYXZfYXNzZXJ0MihzLT5t anBlZ19jdHggPT0gJm0yLT5tanBlZyk7CiAgICAgLyogcy0+aHVmZm1hbiA9PSBIVUZGTUFOX1RB QkxFX09QVElNQUwgY2FuIG9ubHkgYmUgdHJ1ZSBmb3IgTUpQRUcuICovCiAgICAgaWYgKCFDT05G SUdfTUpQRUdfRU5DT0RFUiB8fCBtMi0+bWpwZWcuaHVmZm1hbiAhPSBIVUZGTUFOX1RBQkxFX09Q VElNQUwpCkBAIC0xMjAsMTEgKzEyMCwxMSBAQCBzdGF0aWMgaW50IG1qcGVnX2Ftdl9lbmNvZGVf cGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAvKioKICAqIEVuY29k ZXMgYW5kIG91dHB1dHMgdGhlIGVudGlyZSBmcmFtZSBpbiB0aGUgSlBFRyBmb3JtYXQuCiAgKgot ICogQHBhcmFtIHMgVGhlIE1wZWdFbmNDb250ZXh0LgorICogQHBhcmFtIG1haW4gVGhlIE1QVk1h aW5FbmNDb250ZXh0LgogICovCiBzdGF0aWMgdm9pZCBtanBlZ19lbmNvZGVfcGljdHVyZV9mcmFt ZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbWFpbikKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAq Y29uc3QgcyA9ICZtYWluLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbWFpbi0+ czsKICAgICBpbnQgbmJpdHMsIGNvZGUsIHRhYmxlX2lkOwogICAgIE1KcGVnQ29udGV4dCAqbSA9 IHMtPm1qcGVnX2N0eDsKICAgICB1aW50OF90ICAqaHVmZl9zaXplWzRdID0geyBtLT5odWZmX3Np emVfZGNfbHVtaW5hbmNlLApAQCAtMjMyLDE0ICsyMzIsMTQgQEAgc3RhdGljIHZvaWQgbWpwZWdf YnVpbGRfb3B0aW1hbF9odWZmbWFuKE1KcGVnQ29udGV4dCAqbSkKICAqCiAgKiBIZWFkZXIgKyB2 YWx1ZXMgKyBzdHVmZmluZy4KICAqCi0gKiBAcGFyYW0gcyBUaGUgTXBlZ0VuY0NvbnRleHQuCisg KiBAcGFyYW0gcyBUaGUgTVBWRW5jQ29udGV4dC4KICAqIEByZXR1cm4gaW50IEVycm9yIGNvZGUs IDAgaWYgc3VjY2Vzc2Z1bC4KICAqLwotaW50IGZmX21qcGVnX2VuY29kZV9zdHVmZmluZyhNcGVn RW5jQ29udGV4dCAqcykKK2ludCBmZl9tanBlZ19lbmNvZGVfc3R1ZmZpbmcoTVBWRW5jQ29udGV4 dCAqY29uc3QgcykKIHsKICAgICBNSnBlZ0NvbnRleHQgKmNvbnN0IG0gPSBzLT5tanBlZ19jdHg7 CiAgICAgUHV0Qml0Q29udGV4dCAqcGJjID0gJnMtPnBiOwotICAgIGludCBtYl95ID0gcy0+bWJf eSAtICFzLT5tYl94OworICAgIGludCBtYl95ID0gcy0+Yy5tYl95IC0gIXMtPmMubWJfeDsKICAg ICBpbnQgcmV0OwogCiAjaWYgQ09ORklHX01KUEVHX0VOQ09ERVIKQEAgLTI2NywxOSArMjY3LDE5 IEBAIGludCBmZl9tanBlZ19lbmNvZGVfc3R1ZmZpbmcoTXBlZ0VuY0NvbnRleHQgKnMpCiAgICAg cmV0ID0gZmZfbXB2X3JlYWxsb2NhdGVfcHV0Yml0YnVmZmVyKHMsIHB1dF9iaXRzX2NvdW50KCZz LT5wYikgLyA4ICsgMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwdXRfYml0c19jb3VudCgmcy0+cGIpIC8gNCArIDEwMDApOwogICAgIGlmIChyZXQgPCAw KSB7Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiQnVmZmVyIHJlYWxs b2NhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VS Uk9SLCAiQnVmZmVyIHJlYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwogICAgICAgICBnb3RvIGZhaWw7 CiAgICAgfQogCiAgICAgZmZfbWpwZWdfZXNjYXBlX0ZGKHBiYywgcy0+ZXNjX3Bvcyk7CiAKLSAg ICBpZiAocy0+c2xpY2VfY29udGV4dF9jb3VudCA+IDEgJiYgbWJfeSA8IHMtPm1iX2hlaWdodCAt IDEpCisgICAgaWYgKHMtPmMuc2xpY2VfY29udGV4dF9jb3VudCA+IDEgJiYgbWJfeSA8IHMtPmMu bWJfaGVpZ2h0IC0gMSkKICAgICAgICAgcHV0X21hcmtlcihwYmMsIFJTVDAgKyAobWJfeSY3KSk7 CiAgICAgcy0+ZXNjX3BvcyA9IHB1dF9ieXRlc19jb3VudChwYmMsIDApOwogCiBmYWlsOgogICAg IGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKQotICAgICAgICBzLT5sYXN0X2RjW2ldID0gMTI4 IDw8IHMtPmludHJhX2RjX3ByZWNpc2lvbjsKKyAgICAgICAgcy0+Yy5sYXN0X2RjW2ldID0gMTI4 IDw8IHMtPmMuaW50cmFfZGNfcHJlY2lzaW9uOwogCiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTI4 NywxNCArMjg3LDE0IEBAIGZhaWw6CiBzdGF0aWMgaW50IGFsbG9jX2h1ZmZtYW4oTUpQRUdFbmND b250ZXh0ICpjb25zdCBtMikKIHsKICAgICBNSnBlZ0NvbnRleHQgICAqY29uc3QgbSA9ICZtMi0+ bWpwZWc7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbTItPm1wZWcuczsKKyAgICBN UFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0yLT5tcGVnLnM7CiAgICAgc3RhdGljIGNvbnN0IGNo YXIgYmxvY2tzX3Blcl9tYltdID0gewogICAgICAgICBbQ0hST01BXzQyMF0gPSA2LCBbQ0hST01B XzQyMl0gPSA4LCBbQ0hST01BXzQ0NF0gPSAxMgogICAgIH07CiAgICAgc2l6ZV90IG51bV9ibG9j a3MsIG51bV9jb2RlczsKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBzcGFjZSB0 byBob2xkIHRoaXMgZnJhbWUuCi0gICAgbnVtX2Jsb2NrcyA9IHMtPm1iX251bSAqIGJsb2Nrc19w ZXJfbWJbcy0+Y2hyb21hX2Zvcm1hdF07CisgICAgbnVtX2Jsb2NrcyA9IHMtPmMubWJfbnVtICog YmxvY2tzX3Blcl9tYltzLT5jLmNocm9tYV9mb3JtYXRdOwogICAgIG51bV9jb2RlcyA9IG51bV9i bG9ja3MgKiA2NDsKIAogICAgIG0tPmh1ZmZfYnVmZmVyID0gYXZfbWFsbG9jX2FycmF5KG51bV9j b2RlcywKQEAgLTM1OCwxMSArMzU4LDExIEBAIHN0YXRpYyB2b2lkIG1qcGVnX2VuY29kZV9jb2Vm KE1KcGVnQ29udGV4dCAqcywgdWludDhfdCB0YWJsZV9pZCwgaW50IHZhbCwgaW50IHJ1CiAvKioK ICAqIEFkZCB0aGUgYmxvY2sncyBkYXRhIGludG8gdGhlIEpQRUcgYnVmZmVyLgogICoKLSAqIEBw YXJhbSBzIFRoZSBNcGVnRW5jQ29udGV4dCB0aGF0IGNvbnRhaW5zIHRoZSBKUEVHIGJ1ZmZlci4K KyAqIEBwYXJhbSBzIFRoZSBNUFZFbmNDb250ZXh0IHRoYXQgY29udGFpbnMgdGhlIEpQRUcgYnVm ZmVyLgogICogQHBhcmFtIGJsb2NrIFRoZSBibG9jay4KICAqIEBwYXJhbSBuIFRoZSBibG9jaydz IGluZGV4IG9yIG51bWJlci4KICAqLwotc3RhdGljIHZvaWQgcmVjb3JkX2Jsb2NrKE1wZWdFbmND b250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCitzdGF0aWMgdm9pZCByZWNvcmRfYmxv Y2soTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdLCBpbnQgbikKIHsKICAg ICBpbnQgaSwgaiwgdGFibGVfaWQ7CiAgICAgaW50IGNvbXBvbmVudCwgZGMsIGxhc3RfaW5kZXgs IHZhbCwgcnVuOwpAQCAtMzcyLDIwICszNzIsMjAgQEAgc3RhdGljIHZvaWQgcmVjb3JkX2Jsb2Nr KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCiAgICAgY29tcG9uZW50 ID0gKG4gPD0gMyA/IDAgOiAobiYxKSArIDEpOwogICAgIHRhYmxlX2lkID0gKG4gPD0gMyA/IDAg OiAxKTsKICAgICBkYyA9IGJsb2NrWzBdOyAvKiBvdmVyZmxvdyBpcyBpbXBvc3NpYmxlICovCi0g ICAgdmFsID0gZGMgLSBzLT5sYXN0X2RjW2NvbXBvbmVudF07CisgICAgdmFsID0gZGMgLSBzLT5j Lmxhc3RfZGNbY29tcG9uZW50XTsKIAogICAgIG1qcGVnX2VuY29kZV9jb2VmKG0sIHRhYmxlX2lk LCB2YWwsIDApOwogCi0gICAgcy0+bGFzdF9kY1tjb21wb25lbnRdID0gZGM7CisgICAgcy0+Yy5s YXN0X2RjW2NvbXBvbmVudF0gPSBkYzsKIAogICAgIC8qIEFDIGNvZWZzICovCiAKICAgICBydW4g PSAwOwotICAgIGxhc3RfaW5kZXggPSBzLT5ibG9ja19sYXN0X2luZGV4W25dOworICAgIGxhc3Rf aW5kZXggPSBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbbl07CiAgICAgdGFibGVfaWQgfD0gMjsKIAog ICAgIGZvcihpPTE7aTw9bGFzdF9pbmRleDtpKyspIHsKLSAgICAgICAgaiA9IHMtPmludHJhX3Nj YW50YWJsZS5wZXJtdXRhdGVkW2ldOworICAgICAgICBqID0gcy0+Yy5pbnRyYV9zY2FudGFibGUu cGVybXV0YXRlZFtpXTsKICAgICAgICAgdmFsID0gYmxvY2tbal07CiAKICAgICAgICAgaWYgKHZh bCA9PSAwKSB7CkBAIC00MDUsNyArNDA1LDcgQEAgc3RhdGljIHZvaWQgcmVjb3JkX2Jsb2NrKE1w ZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCiAgICAgICAgIG1qcGVnX2Vu Y29kZV9jb2RlKG0sIHRhYmxlX2lkLCAwKTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlX2Jsb2Nr KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCitzdGF0aWMgdm9pZCBl bmNvZGVfYmxvY2soTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdLCBpbnQg bikKIHsKICAgICBpbnQgbWFudCwgbmJpdHMsIGNvZGUsIGksIGo7CiAgICAgaW50IGNvbXBvbmVu dCwgZGMsIHJ1biwgbGFzdF9pbmRleCwgdmFsOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHN0YXRpYyB2 b2lkIGVuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssIGludCBu KQogICAgIC8qIERDIGNvZWYgKi8KICAgICBjb21wb25lbnQgPSAobiA8PSAzID8gMCA6IChuJjEp ICsgMSk7CiAgICAgZGMgPSBibG9ja1swXTsgLyogb3ZlcmZsb3cgaXMgaW1wb3NzaWJsZSAqLwot ICAgIHZhbCA9IGRjIC0gcy0+bGFzdF9kY1tjb21wb25lbnRdOworICAgIHZhbCA9IGRjIC0gcy0+ Yy5sYXN0X2RjW2NvbXBvbmVudF07CiAgICAgaWYgKG4gPCA0KSB7CiAgICAgICAgIGZmX21qcGVn X2VuY29kZV9kYygmcy0+cGIsIHZhbCwgbS0+aHVmZl9zaXplX2RjX2x1bWluYW5jZSwgbS0+aHVm Zl9jb2RlX2RjX2x1bWluYW5jZSk7CiAgICAgICAgIGh1ZmZfc2l6ZV9hYyA9IG0tPmh1ZmZfc2l6 ZV9hY19sdW1pbmFuY2U7CkBAIC00MjYsMTQgKzQyNiwxNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVf YmxvY2soTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgKmJsb2NrLCBpbnQgbikKICAgICAgICAg aHVmZl9zaXplX2FjID0gbS0+aHVmZl9zaXplX2FjX2Nocm9taW5hbmNlOwogICAgICAgICBodWZm X2NvZGVfYWMgPSBtLT5odWZmX2NvZGVfYWNfY2hyb21pbmFuY2U7CiAgICAgfQotICAgIHMtPmxh c3RfZGNbY29tcG9uZW50XSA9IGRjOworICAgIHMtPmMubGFzdF9kY1tjb21wb25lbnRdID0gZGM7 CiAKICAgICAvKiBBQyBjb2VmcyAqLwogCiAgICAgcnVuID0gMDsKLSAgICBsYXN0X2luZGV4ID0g cy0+YmxvY2tfbGFzdF9pbmRleFtuXTsKKyAgICBsYXN0X2luZGV4ID0gcy0+Yy5ibG9ja19sYXN0 X2luZGV4W25dOwogICAgIGZvcihpPTE7aTw9bGFzdF9pbmRleDtpKyspIHsKLSAgICAgICAgaiA9 IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOworICAgICAgICBqID0gcy0+Yy5pbnRy YV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKICAgICAgICAgdmFsID0gYmxvY2tbal07CiAgICAg ICAgIGlmICh2YWwgPT0gMCkgewogICAgICAgICAgICAgcnVuKys7CkBAIC00NjMsMTAgKzQ2Mywx MCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfYmxvY2soTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3Qg KmJsb2NrLCBpbnQgbikKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCBodWZmX3NpemVfYWNbMF0s IGh1ZmZfY29kZV9hY1swXSk7CiB9CiAKLXN0YXRpYyB2b2lkIG1qcGVnX3JlY29yZF9tYihNcGVn RW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdWzY0XSwKK3N0YXRpYyB2b2lkIG1q cGVnX3JlY29yZF9tYihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRd LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1bnVzZWRfeCwgaW50IHVudXNlZF95 KQogewotICAgIGlmIChzLT5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80NDQpIHsKKyAgICBpZiAo cy0+Yy5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80NDQpIHsKICAgICAgICAgcmVjb3JkX2Jsb2Nr KHMsIGJsb2NrWzBdLCAwKTsKICAgICAgICAgcmVjb3JkX2Jsb2NrKHMsIGJsb2NrWzJdLCAyKTsK ICAgICAgICAgcmVjb3JkX2Jsb2NrKHMsIGJsb2NrWzRdLCA0KTsKQEAgLTQ3NCw3ICs0NzQsNyBA QCBzdGF0aWMgdm9pZCBtanBlZ19yZWNvcmRfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGlu dDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgIHJlY29yZF9ibG9jayhzLCBibG9ja1s1XSwgNSk7 CiAgICAgICAgIHJlY29yZF9ibG9jayhzLCBibG9ja1s5XSwgOSk7CiAKLSAgICAgICAgaWYgKDE2 KnMtPm1iX3grOCA8IHMtPndpZHRoKSB7CisgICAgICAgIGlmICgxNipzLT5jLm1iX3grOCA8IHMt PmMud2lkdGgpIHsKICAgICAgICAgICAgIHJlY29yZF9ibG9jayhzLCBibG9ja1sxXSwgICAxKTsK ICAgICAgICAgICAgIHJlY29yZF9ibG9jayhzLCBibG9ja1szXSwgICAzKTsKICAgICAgICAgICAg IHJlY29yZF9ibG9jayhzLCBibG9ja1s2XSwgICA2KTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdGF0 aWMgdm9pZCBtanBlZ19yZWNvcmRfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3Qg YmxvY2tbXVs2NF0sCiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1 OyBpKyspCiAgICAgICAgICAgICByZWNvcmRfYmxvY2socywgYmxvY2tbaV0sIGkpOwotICAgICAg ICBpZiAocy0+Y2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIwKSB7CisgICAgICAgIGlmIChzLT5j LmNocm9tYV9mb3JtYXQgPT0gQ0hST01BXzQyMCkgewogICAgICAgICAgICAgcmVjb3JkX2Jsb2Nr KHMsIGJsb2NrWzVdLCA1KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlY29yZF9i bG9jayhzLCBibG9ja1s2XSwgNik7CkBAIC00OTUsMTAgKzQ5NSwxMCBAQCBzdGF0aWMgdm9pZCBt anBlZ19yZWNvcmRfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2 NF0sCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBtanBlZ19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRl eHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCitzdGF0aWMgdm9pZCBtanBlZ19lbmNv ZGVfbWIoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdWzY0XSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdW51c2VkX3gsIGludCB1bnVzZWRfeSkKIHsKLSAg ICBpZiAocy0+Y2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDQ0KSB7CisgICAgaWYgKHMtPmMuY2hy b21hX2Zvcm1hdCA9PSBDSFJPTUFfNDQ0KSB7CiAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9j a1swXSwgMCk7CiAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9ja1syXSwgMik7CiAgICAgICAg IGVuY29kZV9ibG9jayhzLCBibG9ja1s0XSwgNCk7CkBAIC01MDYsNyArNTA2LDcgQEAgc3RhdGlj IHZvaWQgbWpwZWdfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJs b2NrW11bNjRdLAogICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbNV0sIDUpOwogICAgICAg ICBlbmNvZGVfYmxvY2socywgYmxvY2tbOV0sIDkpOwogCi0gICAgICAgIGlmICgxNiAqIHMtPm1i X3ggKyA4IDwgcy0+d2lkdGgpIHsKKyAgICAgICAgaWYgKDE2ICogcy0+Yy5tYl94ICsgOCA8IHMt PmMud2lkdGgpIHsKICAgICAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9ja1sxXSwgMSk7CiAg ICAgICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbM10sIDMpOwogICAgICAgICAgICAgZW5j b2RlX2Jsb2NrKHMsIGJsb2NrWzZdLCA2KTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBzdGF0aWMgdm9p ZCBtanBlZ19lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tb XVs2NF0sCiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKysp CiAgICAgICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbaV0sIGkpOwotICAgICAgICBpZiAo cy0+Y2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIwKSB7CisgICAgICAgIGlmIChzLT5jLmNocm9t YV9mb3JtYXQgPT0gQ0hST01BXzQyMCkgewogICAgICAgICAgICAgZW5jb2RlX2Jsb2NrKHMsIGJs b2NrWzVdLCA1KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVuY29kZV9ibG9jayhz LCBibG9ja1s2XSwgNik7CkBAIC01MzMsNyArNTMzLDcgQEAgc3RhdGljIGF2X2NvbGQgaW50IG1q cGVnX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKICAgICBNSlBFR0VuY0Nv bnRleHQgKmNvbnN0IG0yID0gYXZjdHgtPnByaXZfZGF0YTsKICAgICBNSnBlZ0NvbnRleHQgICAg KmNvbnN0IG0gID0gJm0yLT5tanBlZzsKLSAgICBNcGVnRW5jQ29udGV4dCAgKmNvbnN0IHMgID0g Jm0yLT5tcGVnLnM7CisgICAgTVBWRW5jQ29udGV4dCAgKmNvbnN0IHMgID0gJm0yLT5tcGVnLnM7 CiAgICAgaW50IHJldDsKIAogICAgIHMtPm1qcGVnX2N0eCA9IG07CkBAIC01OTcsNyArNTk3LDcg QEAgc3RhdGljIGF2X2NvbGQgaW50IG1qcGVnX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICph dmN0eCkKICAgICAvLyBCdWZmZXJzIHN0YXJ0IG91dCBlbXB0eS4KICAgICBtLT5odWZmX25jb2Rl ID0gMDsKIAotICAgIGlmIChzLT5zbGljZV9jb250ZXh0X2NvdW50ID4gMSkKKyAgICBpZiAocy0+ Yy5zbGljZV9jb250ZXh0X2NvdW50ID4gMSkKICAgICAgICAgbS0+aHVmZm1hbiA9IEhVRkZNQU5f VEFCTEVfREVGQVVMVDsKIAogICAgIGlmIChtLT5odWZmbWFuID09IEhVRkZNQU5fVEFCTEVfT1BU SU1BTCkgewpAQCAtNjE1LDcgKzYxNSw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBtanBlZ19lbmNv ZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiBzdGF0aWMgaW50IGFtdl9lbmNvZGVfcGlj dHVyZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpwaWNfYXJnLCBpbnQgKmdvdF9wYWNrZXQp CiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIE1QVkVu Y0NvbnRleHQgKmNvbnN0IHMgPSBhdmN0eC0+cHJpdl9kYXRhOwogICAgIEFWRnJhbWUgKnBpYzsK ICAgICBpbnQgaSwgcmV0OwogICAgIGludCBjaHJvbWFfdl9zaGlmdCA9IDE7IC8qIEFNViBpcyA0 MjAtb25seSAqLwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBpbnQgYW12X2VuY29kZV9waWN0 dXJlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQgKnBrdCwKICAgICAvL3BpY3R1cmUg c2hvdWxkIGJlIGZsaXBwZWQgdXBzaWRlLWRvd24KICAgICBmb3IoaT0wOyBpIDwgMzsgaSsrKSB7 CiAgICAgICAgIGludCB2c2FtcGxlID0gaSA/IDIgPj4gY2hyb21hX3Zfc2hpZnQgOiAyOwotICAg ICAgICBwaWMtPmRhdGFbaV0gKz0gcGljLT5saW5lc2l6ZVtpXSAqICh2c2FtcGxlICogcy0+aGVp Z2h0IC8gVl9NQVggLSAxKTsKKyAgICAgICAgcGljLT5kYXRhW2ldICs9IHBpYy0+bGluZXNpemVb aV0gKiAodnNhbXBsZSAqIHMtPmMuaGVpZ2h0IC8gVl9NQVggLSAxKTsKICAgICAgICAgcGljLT5s aW5lc2l6ZVtpXSAqPSAtMTsKICAgICB9CiAgICAgcmV0ID0gZmZfbXB2X2VuY29kZV9waWN0dXJl KGF2Y3R4LCBwa3QsIHBpYywgZ290X3BhY2tldCk7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21q cGVnZW5jLmggYi9saWJhdmNvZGVjL21qcGVnZW5jLmgKaW5kZXggY2VhY2JhOTg5My4uOTJmZWVk MjhiNCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tanBlZ2VuYy5oCisrKyBiL2xpYmF2Y29kZWMv bWpwZWdlbmMuaApAQCAtNTYsOSArNTYsOSBAQCB0eXBlZGVmIHN0cnVjdCBNSnBlZ0NvbnRleHQg ewogICAgIHVpbnQ4X3QgaHVmZl9zaXplX2FjX2Nocm9taW5hbmNlWzI1Nl07ICAvLy88IEFDIGNo cm9taW5hbmNlIEh1ZmZtYW4gdGFibGUgc2l6ZS4KICAgICB1aW50MTZfdCBodWZmX2NvZGVfYWNf Y2hyb21pbmFuY2VbMjU2XTsgLy8vPCBBQyBjaHJvbWluYW5jZSBIdWZmbWFuIHRhYmxlIGNvZGVz LgogCi0gICAgLyoqIFN0b3JhZ2UgZm9yIEFDIGx1bWluYW5jZSBWTEMgKGluIE1wZWdFbmNDb250 ZXh0KSAqLworICAgIC8qKiBTdG9yYWdlIGZvciBBQyBsdW1pbmFuY2UgVkxDICovCiAgICAgdWlu dDhfdCB1bmlfYWNfdmxjX2xlbls2NCAqIDY0ICogMl07Ci0gICAgLyoqIFN0b3JhZ2UgZm9yIEFD IGNocm9taW5hbmNlIFZMQyAoaW4gTXBlZ0VuY0NvbnRleHQpICovCisgICAgLyoqIFN0b3JhZ2Ug Zm9yIEFDIGNocm9taW5hbmNlIFZMQyAqLwogICAgIHVpbnQ4X3QgdW5pX2Nocm9tYV9hY192bGNf bGVuWzY0ICogNjQgKiAyXTsKIAogICAgIC8vIERlZmF1bHQgREMgdGFibGVzIGhhdmUgZXhhY3Rs eSAxMiB2YWx1ZXMKQEAgLTkyLDggKzkyLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dF9tYXJr ZXIoUHV0Qml0Q29udGV4dCAqcCwgZW51bSBKcGVnTWFya2VyIGNvZGUpCiAgICAgcHV0X2JpdHMo cCwgOCwgY29kZSk7CiB9CiAKLXR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0IE1wZWdFbmND b250ZXh0OwordHlwZWRlZiBzdHJ1Y3QgTVBWRW5jQ29udGV4dCBNUFZFbmNDb250ZXh0OwogCi1p bnQgIGZmX21qcGVnX2VuY29kZV9zdHVmZmluZyhNcGVnRW5jQ29udGV4dCAqcyk7CitpbnQgZmZf bWpwZWdfZW5jb2RlX3N0dWZmaW5nKE1QVkVuY0NvbnRleHQgKnMpOwogCiAjZW5kaWYgLyogQVZD T0RFQ19NSlBFR0VOQ19IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21vdGlvbl9lc3QuYyBi L2xpYmF2Y29kZWMvbW90aW9uX2VzdC5jCmluZGV4IGZmYWQzZGJjNzkuLjkyM2JmNTY4N2IgMTAw NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbW90aW9uX2VzdC5jCisrKyBiL2xpYmF2Y29kZWMvbW90aW9u X2VzdC5jCkBAIC00Niw3ICs0Niw3IEBACiAjZGVmaW5lIE1FX01BUF9TSElGVCAzCiAjZGVmaW5l IE1FX01BUF9NVl9CSVRTIDExCiAKLXN0YXRpYyBpbnQgc2FkX2hwZWxfbW90aW9uX3NlYXJjaChN cGVnRW5jQ29udGV4dCAqIHMsCitzdGF0aWMgaW50IHNhZF9ocGVsX21vdGlvbl9zZWFyY2goTVBW RW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgKm14X3B0ciwgaW50ICpteV9wdHIsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBoKTsKQEAgLTEwNiwxMCArMTA2LDEw IEBAIHN0YXRpYyBpbnQgZ2V0X2ZsYWdzKE1vdGlvbkVzdENvbnRleHQgKmMsIGludCBkaXJlY3Qs IGludCBjaHJvbWEpewogICAgICAgICAgICArIChjaHJvbWEgPyBGTEFHX0NIUk9NQSA6IDApOwog fQogCi1zdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2RpcmVjdF9pbmxpbmUoTXBlZ0Vu Y0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHN1YngsIGNv bnN0IGludCBzdWJ5LAorc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNtcF9kaXJlY3RfaW5s aW5lKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29u c3QgaW50IHN1YngsIGNvbnN0IGludCBzdWJ5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGludCBzaXplLCBjb25zdCBpbnQgaCwgaW50IHJlZl9pbmRleCwgaW50IHNyY19pbmRleCwKICAg ICAgICAgICAgICAgICAgICAgICBtZV9jbXBfZnVuYyBjbXBfZnVuYywgbWVfY21wX2Z1bmMgY2hy b21hX2NtcF9mdW5jLCBpbnQgcXBlbCl7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9 ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPmMubWU7CiAgICAg Y29uc3QgaW50IHN0cmlkZT0gYy0+c3RyaWRlOwogICAgIGNvbnN0IGludCBoeCA9IHN1YnggKyB4 ICogKDEgPDwgKDEgKyBxcGVsKSk7CiAgICAgY29uc3QgaW50IGh5ID0gc3VieSArIHkgKiAoMSA8 PCAoMSArIHFwZWwpKTsKQEAgLTExOSwxMCArMTE5LDEwIEBAIHN0YXRpYyBhdl9hbHdheXNfaW5s aW5lIGludCBjbXBfZGlyZWN0X2lubGluZShNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgaW50IHgs IGNvCiAgICAgLy9GSVhNRSBjaGVjayBjaHJvbWEgNG12LCAobm8gY3Jhc2hlcyAuLi4pCiAgICAg ICAgIGF2X2Fzc2VydDIoeCA+PSBjLT54bWluICYmIGh4IDw9IGMtPnhtYXg8PChxcGVsKzEpICYm IHkgPj0gYy0+eW1pbiAmJiBoeSA8PSBjLT55bWF4PDwocXBlbCsxKSk7CiAgICAgICAgIGlmKHgg Pj0gYy0+eG1pbiAmJiBoeCA8PSBjLT54bWF4PDwocXBlbCsxKSAmJiB5ID49IGMtPnltaW4gJiYg aHkgPD0gYy0+eW1heDw8KHFwZWwrMSkpewotICAgICAgICAgICAgY29uc3QgaW50IHRpbWVfcHA9 IHMtPnBwX3RpbWU7Ci0gICAgICAgICAgICBjb25zdCBpbnQgdGltZV9wYj0gcy0+cGJfdGltZTsK KyAgICAgICAgICAgIGNvbnN0IGludCB0aW1lX3BwID0gcy0+Yy5wcF90aW1lOworICAgICAgICAg ICAgY29uc3QgaW50IHRpbWVfcGIgPSBzLT5jLnBiX3RpbWU7CiAgICAgICAgICAgICBjb25zdCBp bnQgbWFzaz0gMipxcGVsKzE7Ci0gICAgICAgICAgICBpZihzLT5tdl90eXBlPT1NVl9UWVBFXzhY OCl7CisgICAgICAgICAgICBpZiAocy0+Yy5tdl90eXBlID09IE1WX1RZUEVfOFg4KSB7CiAgICAg ICAgICAgICAgICAgaW50IGk7CiAgICAgICAgICAgICAgICAgZm9yKGk9MDsgaTw0OyBpKyspewog ICAgICAgICAgICAgICAgICAgICBpbnQgZnggPSBjLT5kaXJlY3RfYmFzaXNfbXZbaV1bMF0gKyBo eDsKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBjbXBf ZGlyZWN0X2lubGluZShNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgaW50IHgsIGNvCiAgICAgICAg ICAgICAgICAgICAgIGMtPnFwZWxfYXZnWzFdW2J4eV0oYy0+dGVtcCAgICAgKyA4KnN0cmlkZSwg cmVmWzhdICsgKGJ4Pj4yKSArIChieT4+Mikqc3RyaWRlICAgICArIDgqc3RyaWRlLCBzdHJpZGUp OwogICAgICAgICAgICAgICAgICAgICBjLT5xcGVsX2F2Z1sxXVtieHldKGMtPnRlbXAgKyA4ICsg OCpzdHJpZGUsIHJlZls4XSArIChieD4+MikgKyAoYnk+PjIpKnN0cmlkZSArIDggKyA4KnN0cmlk ZSwgc3RyaWRlKTsKICAgICAgICAgICAgICAgICB9ZWxzZXsKLSAgICAgICAgICAgICAgICAgICAg YXZfYXNzZXJ0MigoZng+PjEpICsgMTYqcy0+bWJfeCA+PSAtMTYpOwotICAgICAgICAgICAgICAg ICAgICBhdl9hc3NlcnQyKChmeT4+MSkgKyAxNipzLT5tYl95ID49IC0xNik7Ci0gICAgICAgICAg ICAgICAgICAgIGF2X2Fzc2VydDIoKGZ4Pj4xKSArIDE2KnMtPm1iX3ggPD0gcy0+d2lkdGgpOwot ICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKChmeT4+MSkgKyAxNipzLT5tYl95IDw9IHMt PmhlaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIoKGJ4Pj4xKSArIDE2KnMt Pm1iX3ggPj0gLTE2KTsKLSAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MigoYnk+PjEpICsg MTYqcy0+bWJfeSA+PSAtMTYpOwotICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKChieD4+ MSkgKyAxNipzLT5tYl94IDw9IHMtPndpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgYXZfYXNz ZXJ0MigoYnk+PjEpICsgMTYqcy0+bWJfeSA8PSBzLT5oZWlnaHQpOworICAgICAgICAgICAgICAg ICAgICBhdl9hc3NlcnQyKChmeD4+MSkgKyAxNipzLT5jLm1iX3ggPj0gLTE2KTsKKyAgICAgICAg ICAgICAgICAgICAgYXZfYXNzZXJ0MigoZnk+PjEpICsgMTYqcy0+Yy5tYl95ID49IC0xNik7Cisg ICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIoKGZ4Pj4xKSArIDE2KnMtPmMubWJfeCA8PSBz LT5jLndpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MigoZnk+PjEpICsgMTYq cy0+Yy5tYl95IDw9IHMtPmMuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0 MigoYng+PjEpICsgMTYqcy0+Yy5tYl94ID49IC0xNik7CisgICAgICAgICAgICAgICAgICAgIGF2 X2Fzc2VydDIoKGJ5Pj4xKSArIDE2KnMtPmMubWJfeSA+PSAtMTYpOworICAgICAgICAgICAgICAg ICAgICBhdl9hc3NlcnQyKChieD4+MSkgKyAxNipzLT5jLm1iX3ggPD0gcy0+Yy53aWR0aCk7Cisg ICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIoKGJ5Pj4xKSArIDE2KnMtPmMubWJfeSA8PSBz LT5jLmhlaWdodCk7CiAKICAgICAgICAgICAgICAgICAgICAgYy0+aHBlbF9wdXRbMF1bZnh5XShj LT50ZW1wLCByZWZbMF0gKyAoZng+PjEpICsgKGZ5Pj4xKSpzdHJpZGUsIHN0cmlkZSwgMTYpOwog ICAgICAgICAgICAgICAgICAgICBjLT5ocGVsX2F2Z1swXVtieHldKGMtPnRlbXAsIHJlZls4XSAr IChieD4+MSkgKyAoYnk+PjEpKnN0cmlkZSwgc3RyaWRlLCAxNik7CkBAIC0xNzgsMTAgKzE3OCwx MCBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2RpcmVjdF9pbmxpbmUoTXBlZ0Vu Y0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjbwogICAgIHJldHVybiBkOwogfQogCi1zdGF0aWMg YXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2lubGluZShNcGVnRW5jQ29udGV4dCAqcywgY29uc3Qg aW50IHgsIGNvbnN0IGludCB5LCBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1YnksCitzdGF0 aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2lubGluZShNUFZFbmNDb250ZXh0ICpjb25zdCBz LCBjb25zdCBpbnQgeCwgY29uc3QgaW50IHksIGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3Vi eSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2l6ZSwgY29uc3QgaW50IGgsIGlu dCByZWZfaW5kZXgsIGludCBzcmNfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgbWVfY21w X2Z1bmMgY21wX2Z1bmMsIG1lX2NtcF9mdW5jIGNocm9tYV9jbXBfZnVuYywgaW50IHFwZWwsIGlu dCBjaHJvbWEpewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAg TW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOwogICAgIGNvbnN0IGludCBzdHJp ZGU9IGMtPnN0cmlkZTsKICAgICBjb25zdCBpbnQgdXZzdHJpZGU9IGMtPnV2c3RyaWRlOwogICAg IGNvbnN0IGludCBkeHk9IHN1YnggKyAoc3VieTw8KDErcXBlbCkpOyAvL0ZJWE1FIGxvZzJfc3Vi cGVsPwpAQCAtMjMwLDEzICsyMzAsMTMgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNt cF9pbmxpbmUoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQKICAgICBy ZXR1cm4gZDsKIH0KIAotc3RhdGljIGludCBjbXBfc2ltcGxlKE1wZWdFbmNDb250ZXh0ICpzLCBj b25zdCBpbnQgeCwgY29uc3QgaW50IHksCitzdGF0aWMgaW50IGNtcF9zaW1wbGUoTVBWRW5jQ29u dGV4dCAqY29uc3QgcywgY29uc3QgaW50IHgsIGNvbnN0IGludCB5LAogICAgICAgICAgICAgICAg ICAgICAgIGludCByZWZfaW5kZXgsIGludCBzcmNfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg ICAgbWVfY21wX2Z1bmMgY21wX2Z1bmMsIG1lX2NtcF9mdW5jIGNocm9tYV9jbXBfZnVuYyl7CiAg ICAgcmV0dXJuIGNtcF9pbmxpbmUocyx4LHksMCwwLDAsMTYscmVmX2luZGV4LHNyY19pbmRleCwg Y21wX2Z1bmMsIGNocm9tYV9jbXBfZnVuYywgMCwgMCk7CiB9CiAKLXN0YXRpYyBpbnQgY21wX2Zw ZWxfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwK K3N0YXRpYyBpbnQgY21wX2ZwZWxfaW50ZXJuYWwoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29u c3QgaW50IHgsIGNvbnN0IGludCB5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBz aXplLCBjb25zdCBpbnQgaCwgaW50IHJlZl9pbmRleCwgaW50IHNyY19pbmRleCwKICAgICAgICAg ICAgICAgICAgICAgICBtZV9jbXBfZnVuYyBjbXBfZnVuYywgbWVfY21wX2Z1bmMgY2hyb21hX2Nt cF9mdW5jLCBjb25zdCBpbnQgZmxhZ3MpewogICAgIGlmKGZsYWdzJkZMQUdfRElSRUNUKXsKQEAg LTI0Niw3ICsyNDYsNyBAQCBzdGF0aWMgaW50IGNtcF9mcGVsX2ludGVybmFsKE1wZWdFbmNDb250 ZXh0ICpzLCBjb25zdCBpbnQgeCwgY29uc3QgaW50IHksCiAgICAgfQogfQogCi1zdGF0aWMgaW50 IGNtcF9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgaW50IHgsIGNvbnN0IGludCB5 LCBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1YnksCitzdGF0aWMgaW50IGNtcF9pbnRlcm5h bChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBjb25zdCBpbnQgeCwgY29uc3QgaW50IHksIGNvbnN0 IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQgc2l6ZSwgY29uc3QgaW50IGgsIGludCByZWZfaW5kZXgsIGludCBzcmNfaW5kZXgsCiAgICAg ICAgICAgICAgICAgICAgICAgbWVfY21wX2Z1bmMgY21wX2Z1bmMsIG1lX2NtcF9mdW5jIGNocm9t YV9jbXBfZnVuYywgY29uc3QgaW50IGZsYWdzKXsKICAgICBpZihmbGFncyZGTEFHX0RJUkVDVCl7 CkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIGludCBjbXBfaW50ZXJuYWwoTXBlZ0VuY0NvbnRl eHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHMKIC8qKiBAYnJpZWYg Y29tcGFyZXMgYSBibG9jayAoZWl0aGVyIGEgZnVsbCBtYWNyb2Jsb2NrIG9yIGEgcGFydGl0aW9u IHRoZXJlb2YpCiAgICAgYWdhaW5zdCBhIHByb3Bvc2VkIG1vdGlvbi1jb21wZW5zYXRlZCBwcmVk aWN0aW9uIG9mIHRoYXQgYmxvY2sKICAqLwotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNt cChNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgaW50IHgsIGNvbnN0IGludCB5LCBjb25zdCBpbnQg c3VieCwgY29uc3QgaW50IHN1YnksCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21wKE1Q VkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50 IHN1YngsIGNvbnN0IGludCBzdWJ5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBz aXplLCBjb25zdCBpbnQgaCwgaW50IHJlZl9pbmRleCwgaW50IHNyY19pbmRleCwKICAgICAgICAg ICAgICAgICAgICAgICBtZV9jbXBfZnVuYyBjbXBfZnVuYywgbWVfY21wX2Z1bmMgY2hyb21hX2Nt cF9mdW5jLCBjb25zdCBpbnQgZmxhZ3MpewogICAgIGlmKGF2X2J1aWx0aW5fY29uc3RhbnRfcChm bGFncykgJiYgYXZfYnVpbHRpbl9jb25zdGFudF9wKGgpICYmIGF2X2J1aWx0aW5fY29uc3RhbnRf cChzaXplKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBj bXAoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uCiAgICAg fQogfQogCi1zdGF0aWMgaW50IGNtcF9ocGVsKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCBpbnQg eCwgY29uc3QgaW50IHksIGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwKK3N0YXRpYyBp bnQgY21wX2hwZWwoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29uc3QgaW50IHgsIGNvbnN0IGlu dCB5LCBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1YnksCiAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgaW50IHNpemUsIGNvbnN0IGludCBoLCBpbnQgcmVmX2luZGV4LCBpbnQgc3JjX2lu ZGV4LAogICAgICAgICAgICAgICAgICAgICAgIG1lX2NtcF9mdW5jIGNtcF9mdW5jLCBtZV9jbXBf ZnVuYyBjaHJvbWFfY21wX2Z1bmMsIGNvbnN0IGludCBmbGFncyl7CiAgICAgaWYoZmxhZ3MmRkxB R19ESVJFQ1QpewpAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBpbnQgY21wX2hwZWwoTXBlZ0Vu Y0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHN1YngsCiAg ICAgfQogfQogCi1zdGF0aWMgaW50IGNtcF9xcGVsKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCBp bnQgeCwgY29uc3QgaW50IHksIGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwKK3N0YXRp YyBpbnQgY21wX3FwZWwoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29uc3QgaW50IHgsIGNvbnN0 IGludCB5LCBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1YnksCiAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgaW50IHNpemUsIGNvbnN0IGludCBoLCBpbnQgcmVmX2luZGV4LCBpbnQgc3Jj X2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgIG1lX2NtcF9mdW5jIGNtcF9mdW5jLCBtZV9j bXBfZnVuYyBjaHJvbWFfY21wX2Z1bmMsIGNvbnN0IGludCBmbGFncyl7CiAgICAgaWYoZmxhZ3Mm RkxBR19ESVJFQ1QpewpAQCAtMjk2LDcgKzI5Niw3IEBAIHN0YXRpYyBpbnQgY21wX3FwZWwoTXBl Z0VuY0NvbnRleHQgKnMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHN1Yngs CiAKICNpbmNsdWRlICJtb3Rpb25fZXN0X3RlbXBsYXRlLmMiCiAKLXN0YXRpYyBpbnQgemVyb19j bXAoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmEsIGNvbnN0IHVpbnQ4X3QgKmIs CitzdGF0aWMgaW50IHplcm9fY21wKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IHVpbnQ4 X3QgKmEsIGNvbnN0IHVpbnQ4X3QgKmIsCiAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBz dHJpZGUsIGludCBoKQogewogICAgIHJldHVybiAwOwpAQCAtMzY3LDMyICszNjcsMzIgQEAgYXZf Y29sZCBpbnQgZmZfbWVfaW5pdChNb3Rpb25Fc3RDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAq YXZjdHgsCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgZmZfbWVfaW5pdF9waWMoTXBlZ0VuY0Nv bnRleHQgKnMpCit2b2lkIGZmX21lX2luaXRfcGljKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7 Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RD b250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAKLS8qRklYTUUgcy0+bm9fcm91bmRpbmcgYl90 eXBlKi8KKy8qRklYTUUgcy0+Yy5ub19yb3VuZGluZyBiX3R5cGUqLwogICAgIGlmIChjLT5hdmN0 eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FQRUwpIHsKLSAgICAgICAgYy0+cXBlbF9hdmcgPSBz LT5xZHNwLmF2Z19xcGVsX3BpeGVsc190YWI7Ci0gICAgICAgIGlmIChzLT5ub19yb3VuZGluZykK LSAgICAgICAgICAgIGMtPnFwZWxfcHV0ID0gcy0+cWRzcC5wdXRfbm9fcm5kX3FwZWxfcGl4ZWxz X3RhYjsKKyAgICAgICAgYy0+cXBlbF9hdmcgPSBzLT5jLnFkc3AuYXZnX3FwZWxfcGl4ZWxzX3Rh YjsKKyAgICAgICAgaWYgKHMtPmMubm9fcm91bmRpbmcpCisgICAgICAgICAgICBjLT5xcGVsX3B1 dCA9IHMtPmMucWRzcC5wdXRfbm9fcm5kX3FwZWxfcGl4ZWxzX3RhYjsKICAgICAgICAgZWxzZQot ICAgICAgICAgICAgYy0+cXBlbF9wdXQgPSBzLT5xZHNwLnB1dF9xcGVsX3BpeGVsc190YWI7Cisg ICAgICAgICAgICBjLT5xcGVsX3B1dCA9IHMtPmMucWRzcC5wdXRfcXBlbF9waXhlbHNfdGFiOwog ICAgIH0KLSAgICBjLT5ocGVsX2F2ZyA9IHMtPmhkc3AuYXZnX3BpeGVsc190YWI7Ci0gICAgaWYg KHMtPm5vX3JvdW5kaW5nKQotICAgICAgICBjLT5ocGVsX3B1dCA9IHMtPmhkc3AucHV0X25vX3Ju ZF9waXhlbHNfdGFiOworICAgIGMtPmhwZWxfYXZnID0gcy0+Yy5oZHNwLmF2Z19waXhlbHNfdGFi OworICAgIGlmIChzLT5jLm5vX3JvdW5kaW5nKQorICAgICAgICBjLT5ocGVsX3B1dCA9IHMtPmMu aGRzcC5wdXRfbm9fcm5kX3BpeGVsc190YWI7CiAgICAgZWxzZQotICAgICAgICBjLT5ocGVsX3B1 dCA9IHMtPmhkc3AucHV0X3BpeGVsc190YWI7CisgICAgICAgIGMtPmhwZWxfcHV0ID0gcy0+Yy5o ZHNwLnB1dF9waXhlbHNfdGFiOwogCi0gICAgaWYocy0+bGluZXNpemUpewotICAgICAgICBjLT5z dHJpZGUgID0gcy0+bGluZXNpemU7Ci0gICAgICAgIGMtPnV2c3RyaWRlPSBzLT51dmxpbmVzaXpl OworICAgIGlmIChzLT5jLmxpbmVzaXplKSB7CisgICAgICAgIGMtPnN0cmlkZSAgID0gcy0+Yy5s aW5lc2l6ZTsKKyAgICAgICAgYy0+dXZzdHJpZGUgPSBzLT5jLnV2bGluZXNpemU7CiAgICAgfWVs c2V7Ci0gICAgICAgIGMtPnN0cmlkZSAgPSAxNipzLT5tYl93aWR0aCArIDMyOwotICAgICAgICBj LT51dnN0cmlkZT0gIDgqcy0+bWJfd2lkdGggKyAxNjsKKyAgICAgICAgYy0+c3RyaWRlICAgPSAx NipzLT5jLm1iX3dpZHRoICsgMzI7CisgICAgICAgIGMtPnV2c3RyaWRlID0gIDgqcy0+Yy5tYl93 aWR0aCArIDE2OwogICAgIH0KLSAgICBpZiAocy0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfU05P VykgeworICAgIGlmIChzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1NOT1cpIHsKICAgICAg ICAgYy0+aHBlbF9wdXRbMl1bMF09IGMtPmhwZWxfcHV0WzJdWzFdPQogICAgICAgICBjLT5ocGVs X3B1dFsyXVsyXT0gYy0+aHBlbF9wdXRbMl1bM109IHplcm9faHBlbDsKICAgICB9CkBAIC00MDUs MTIgKzQwNSwxMiBAQCB2b2lkIGZmX21lX2luaXRfcGljKE1wZWdFbmNDb250ZXh0ICpzKQogICAg IENPUFkzX0lGX0xUKGRtaW5oLCBkLCBkeCwgeCwgZHksIHkpXAogfQogCi1zdGF0aWMgaW50IHNh ZF9ocGVsX21vdGlvbl9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLAorc3RhdGljIGludCBzYWRf aHBlbF9tb3Rpb25fc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50ICpteF9wdHIsIGludCAqbXlfcHRyLCBpbnQgZG1pbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVm X2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQg aCkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlv bkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKICAgICBjb25zdCBpbnQgcGVuYWx0eV9m YWN0b3I9IGMtPnN1Yl9wZW5hbHR5X2ZhY3RvcjsKICAgICBpbnQgbXgsIG15LCBkbWluaDsKICAg ICBjb25zdCB1aW50OF90ICpwaXgsICpwdHI7CkBAIC01MTAsNTggKzUxMCw1OCBAQCBzdGF0aWMg aW50IHNhZF9ocGVsX21vdGlvbl9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLAogICAgIHJldHVy biBkbWluaDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldF9wX212X3RhYmxlcyhNcGVnRW5j Q29udGV4dCAqIHMsIGludCBteCwgaW50IG15LCBpbnQgbXY0KQorc3RhdGljIGlubGluZSB2b2lk IHNldF9wX212X3RhYmxlcyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgbXgsIGludCBteSwg aW50IG12NCkKIHsKLSAgICBjb25zdCBpbnQgeHk9IHMtPm1iX3ggKyBzLT5tYl95KnMtPm1iX3N0 cmlkZTsKKyAgICBjb25zdCBpbnQgeHkgPSBzLT5jLm1iX3ggKyBzLT5jLm1iX3kgKiBzLT5jLm1i X3N0cmlkZTsKIAogICAgIHMtPnBfbXZfdGFibGVbeHldWzBdID0gbXg7CiAgICAgcy0+cF9tdl90 YWJsZVt4eV1bMV0gPSBteTsKIAogICAgIC8qIGhhcyBhbHJlYWR5IGJlZW4gc2V0IHRvIHRoZSA0 IE1WIGlmIDRNViBpcyBkb25lICovCiAgICAgaWYobXY0KXsKLSAgICAgICAgaW50IG1vdF94eT0g cy0+YmxvY2tfaW5kZXhbMF07Ci0KLSAgICAgICAgcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21v dF94eSAgICBdWzBdID0gbXg7Ci0gICAgICAgIHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVttb3Rf eHkgICAgXVsxXSA9IG15OwotICAgICAgICBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5 ICsgMV1bMF0gPSBteDsKLSAgICAgICAgcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAr IDFdWzFdID0gbXk7Ci0KLSAgICAgICAgbW90X3h5ICs9IHMtPmI4X3N0cmlkZTsKLSAgICAgICAg cy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAgICBdWzBdID0gbXg7Ci0gICAgICAgIHMt PmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgICAgXVsxXSA9IG15OwotICAgICAgICBzLT5j dXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5ICsgMV1bMF0gPSBteDsKLSAgICAgICAgcy0+Y3Vy X3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSArIDFdWzFdID0gbXk7CisgICAgICAgIGludCBtb3Rf eHkgPSBzLT5jLmJsb2NrX2luZGV4WzBdOworCisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25f dmFsWzBdW21vdF94eSAgICBdWzBdID0gbXg7CisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25f dmFsWzBdW21vdF94eSAgICBdWzFdID0gbXk7CisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25f dmFsWzBdW21vdF94eSArIDFdWzBdID0gbXg7CisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25f dmFsWzBdW21vdF94eSArIDFdWzFdID0gbXk7CisKKyAgICAgICAgbW90X3h5ICs9IHMtPmMuYjhf c3RyaWRlOworICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgICAgXVsw XSA9IG14OworICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgICAgXVsx XSA9IG15OworICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgKyAxXVsw XSA9IG14OworICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgKyAxXVsx XSA9IG15OwogICAgIH0KIH0KIAogLyoqCiAgKiBnZXQgZnVsbHBlbCBNRSBzZWFyY2ggbGltaXRz LgogICovCi1zdGF0aWMgaW5saW5lIHZvaWQgZ2V0X2xpbWl0cyhNcGVnRW5jQ29udGV4dCAqcywg aW50IHgsIGludCB5LCBpbnQgYmZyYW1lKQorc3RhdGljIGlubGluZSB2b2lkIGdldF9saW1pdHMo TVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IHgsIGludCB5LCBpbnQgYmZyYW1lKQogewotICAg IE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90aW9uRXN0Q29udGV4 dCAqY29uc3QgYyA9ICZzLT5jLm1lOwogICAgIGludCByYW5nZT0gYy0+YXZjdHgtPm1lX3Jhbmdl ID4+ICgxICsgISEoYy0+ZmxhZ3MmRkxBR19RUEVMKSk7CiAgICAgaW50IG1heF9yYW5nZSA9IE1B WF9NViA+PiAoMSArICEhKGMtPmZsYWdzJkZMQUdfUVBFTCkpOwogLyoKICAgICBpZihjLT5hdmN0 eC0+bWVfcmFuZ2UpIGMtPnJhbmdlPSBjLT5hdmN0eC0+bWVfcmFuZ2UgPj4gMTsKICAgICBlbHNl ICAgICAgICAgICAgICAgICAgIGMtPnJhbmdlPSAxNjsKICovCi0gICAgaWYgKHMtPnVucmVzdHJp Y3RlZF9tdikgeworICAgIGlmIChzLT5jLnVucmVzdHJpY3RlZF9tdikgewogICAgICAgICBjLT54 bWluID0gLSB4IC0gMTY7CiAgICAgICAgIGMtPnltaW4gPSAtIHkgLSAxNjsKLSAgICAgICAgYy0+ eG1heCA9IC0geCArIHMtPndpZHRoOwotICAgICAgICBjLT55bWF4ID0gLSB5ICsgcy0+aGVpZ2h0 OwotICAgIH0gZWxzZSBpZiAoIShhdl9idWlsdGluX2NvbnN0YW50X3AoYmZyYW1lKSAmJiBiZnJh bWUpICYmIHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjEpeworICAgICAgICBjLT54bWF4ID0gLSB4 ICsgcy0+Yy53aWR0aDsKKyAgICAgICAgYy0+eW1heCA9IC0geSArIHMtPmMuaGVpZ2h0OworICAg IH0gZWxzZSBpZiAoIShhdl9idWlsdGluX2NvbnN0YW50X3AoYmZyYW1lKSAmJiBiZnJhbWUpICYm IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSl7CiAgICAgICAgIC8vIFNlYXJjaCByYW5nZSBv ZiBILjI2MSBpcyBkaWZmZXJlbnQgZnJvbSBvdGhlciBjb2RlYyBzdGFuZGFyZHMKICAgICAgICAg Yy0+eG1pbiA9ICh4ID4gMTUpID8gLSAxNSA6IDA7CiAgICAgICAgIGMtPnltaW4gPSAoeSA+IDE1 KSA/IC0gMTUgOiAwOwotICAgICAgICBjLT54bWF4ID0gKHggPCBzLT5tYl93aWR0aCAqIDE2IC0g MTYpID8gMTUgOiAwOwotICAgICAgICBjLT55bWF4ID0gKHkgPCBzLT5tYl9oZWlnaHQgKiAxNiAt IDE2KSA/IDE1IDogMDsKKyAgICAgICAgYy0+eG1heCA9ICh4IDwgcy0+Yy5tYl93aWR0aCAqIDE2 IC0gMTYpID8gMTUgOiAwOworICAgICAgICBjLT55bWF4ID0gKHkgPCBzLT5jLm1iX2hlaWdodCAq IDE2IC0gMTYpID8gMTUgOiAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGMtPnhtaW4gPSAtIHg7 CiAgICAgICAgIGMtPnltaW4gPSAtIHk7Ci0gICAgICAgIGMtPnhtYXggPSAtIHggKyBzLT5tYl93 aWR0aCAqMTYgLSAxNjsKLSAgICAgICAgYy0+eW1heCA9IC0geSArIHMtPm1iX2hlaWdodCoxNiAt IDE2OworICAgICAgICBjLT54bWF4ID0gLSB4ICsgcy0+Yy5tYl93aWR0aCAqMTYgLSAxNjsKKyAg ICAgICAgYy0+eW1heCA9IC0geSArIHMtPmMubWJfaGVpZ2h0KjE2IC0gMTY7CiAgICAgfQogICAg IGlmKCFyYW5nZSB8fCByYW5nZSA+IG1heF9yYW5nZSkKICAgICAgICAgcmFuZ2UgPSBtYXhfcmFu Z2U7CkBAIC01ODQsOSArNTg0LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGluaXRfbXY0X3JlZihN b3Rpb25Fc3RDb250ZXh0ICpjKXsKICAgICBjLT5zcmNbM11bMF0gPSBjLT5zcmNbMl1bMF0gKyA4 OwogfQogCi1zdGF0aWMgaW5saW5lIGludCBoMjYzX212NF9zZWFyY2goTXBlZ0VuY0NvbnRleHQg KnMsIGludCBteCwgaW50IG15LCBpbnQgc2hpZnQpCitzdGF0aWMgaW5saW5lIGludCBoMjYzX212 NF9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG14LCBpbnQgbXksIGludCBzaGlm dCkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlv bkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKICAgICBjb25zdCBpbnQgc2l6ZT0gMTsK ICAgICBjb25zdCBpbnQgaD04OwogICAgIGludCBibG9jazsKQEAgLTU5NSw3ICs1OTUsNyBAQCBz dGF0aWMgaW5saW5lIGludCBoMjYzX212NF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKnMsIGludCBt eCwgaW50IG15LCBpbnQgc2hpZnQpCiAgICAgaW50IHNhbWU9MTsKICAgICBjb25zdCBpbnQgc3Ry aWRlPSBjLT5zdHJpZGU7CiAgICAgY29uc3QgdWludDhfdCAqbXZfcGVuYWx0eSA9IGMtPmN1cnJl bnRfbXZfcGVuYWx0eTsKLSAgICBpbnQgc2FmZXR5X2NsaXBwaW5nPSBzLT51bnJlc3RyaWN0ZWRf bXYgJiYgKHMtPndpZHRoJjE1KSAmJiAocy0+aGVpZ2h0JjE1KTsKKyAgICBpbnQgc2FmZXR5X2Ns aXBwaW5nID0gcy0+Yy51bnJlc3RyaWN0ZWRfbXYgJiYgKHMtPmMud2lkdGgmMTUpICYmIChzLT5j LmhlaWdodCYxNSk7CiAKICAgICBpbml0X212NF9yZWYoYyk7CiAKQEAgLTYwNCwyOCArNjA0LDI4 IEBAIHN0YXRpYyBpbmxpbmUgaW50IGgyNjNfbXY0X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqcywg aW50IG14LCBpbnQgbXksIGludCBzaGlmdCkKICAgICAgICAgaW50IHByZWRfeDQsIHByZWRfeTQ7 CiAgICAgICAgIGludCBkbWluNDsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBvZmZbNF09IHsy LCAxLCAxLCAtMX07Ci0gICAgICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+Yjhfc3RyaWRl OwotICAgICAgICBjb25zdCBpbnQgbW90X3h5ID0gcy0+YmxvY2tfaW5kZXhbYmxvY2tdOworICAg ICAgICBjb25zdCBpbnQgbW90X3N0cmlkZSA9IHMtPmMuYjhfc3RyaWRlOworICAgICAgICBjb25z dCBpbnQgbW90X3h5ID0gcy0+Yy5ibG9ja19pbmRleFtibG9ja107CiAKICAgICAgICAgaWYoc2Fm ZXR5X2NsaXBwaW5nKXsKLSAgICAgICAgICAgIGMtPnhtYXggPSAtIDE2KnMtPm1iX3ggKyBzLT53 aWR0aCAgLSA4KihibG9jayAmMSk7Ci0gICAgICAgICAgICBjLT55bWF4ID0gLSAxNipzLT5tYl95 ICsgcy0+aGVpZ2h0IC0gOCooYmxvY2s+PjEpOworICAgICAgICAgICAgYy0+eG1heCA9IC0gMTYq cy0+Yy5tYl94ICsgcy0+Yy53aWR0aCAgLSA4KihibG9jayAmMSk7CisgICAgICAgICAgICBjLT55 bWF4ID0gLSAxNipzLT5jLm1iX3kgKyBzLT5jLmhlaWdodCAtIDgqKGJsb2NrPj4xKTsKICAgICAg ICAgfQogCi0gICAgICAgIFBfTEVGVFswXSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVttb3Rf eHkgLSAxXVswXTsKLSAgICAgICAgUF9MRUZUWzFdID0gcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBd W21vdF94eSAtIDFdWzFdOworICAgICAgICBQX0xFRlRbMF0gPSBzLT5jLmN1cl9waWMubW90aW9u X3ZhbFswXVttb3RfeHkgLSAxXVswXTsKKyAgICAgICAgUF9MRUZUWzFdID0gcy0+Yy5jdXJfcGlj Lm1vdGlvbl92YWxbMF1bbW90X3h5IC0gMV1bMV07CiAKICAgICAgICAgaWYgKFBfTEVGVFswXSA+ IGMtPnhtYXggKiAoMSA8PCBzaGlmdCkpIFBfTEVGVFswXSA9IGMtPnhtYXggKiAoMSA8PCBzaGlm dCk7CiAKICAgICAgICAgLyogc3BlY2lhbCBjYXNlIGZvciBmaXJzdCBsaW5lICovCi0gICAgICAg IGlmIChzLT5maXJzdF9zbGljZV9saW5lICYmIGJsb2NrPDIpIHsKKyAgICAgICAgaWYgKHMtPmMu Zmlyc3Rfc2xpY2VfbGluZSAmJiBibG9jayA8IDIpIHsKICAgICAgICAgICAgIGMtPnByZWRfeD0g cHJlZF94ND0gUF9MRUZUWzBdOwogICAgICAgICAgICAgYy0+cHJlZF95PSBwcmVkX3k0PSBQX0xF RlRbMV07CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQX1RPUFswXSAgICAgID0gcy0+ Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgICAgICAgICAgICAgXVsw XTsKLSAgICAgICAgICAgIFBfVE9QWzFdICAgICAgPSBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1b bW90X3h5IC0gbW90X3N0cmlkZSAgICAgICAgICAgICBdWzFdOwotICAgICAgICAgICAgUF9UT1BS SUdIVFswXSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgLSBtb3Rfc3RyaWRlICsg b2ZmW2Jsb2NrXV1bMF07Ci0gICAgICAgICAgICBQX1RPUFJJR0hUWzFdID0gcy0+Y3VyX3BpYy5t b3Rpb25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgKyBvZmZbYmxvY2tdXVsxXTsKKyAgICAg ICAgICAgIFBfVE9QWzBdICAgICAgPSBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkg LSBtb3Rfc3RyaWRlICAgICAgICAgICAgIF1bMF07CisgICAgICAgICAgICBQX1RPUFsxXSAgICAg ID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5IC0gbW90X3N0cmlkZSAgICAgICAg ICAgICBdWzFdOworICAgICAgICAgICAgUF9UT1BSSUdIVFswXSA9IHMtPmMuY3VyX3BpYy5tb3Rp b25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgKyBvZmZbYmxvY2tdXVswXTsKKyAgICAgICAg ICAgIFBfVE9QUklHSFRbMV0gPSBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgLSBt b3Rfc3RyaWRlICsgb2ZmW2Jsb2NrXV1bMV07CiAgICAgICAgICAgICBpZiAoUF9UT1BbMV0gICAg ICA+IGMtPnltYXggKiAoMSA8PCBzaGlmdCkpIFBfVE9QWzFdICAgICAgPSBjLT55bWF4ICogKDEg PDwgc2hpZnQpOwogICAgICAgICAgICAgaWYgKFBfVE9QUklHSFRbMF0gPCBjLT54bWluICogKDEg PDwgc2hpZnQpKSBQX1RPUFJJR0hUWzBdID0gYy0+eG1pbiAqICgxIDw8IHNoaWZ0KTsKICAgICAg ICAgICAgIGlmIChQX1RPUFJJR0hUWzBdID4gYy0+eG1heCAqICgxIDw8IHNoaWZ0KSkgUF9UT1BS SUdIVFswXSA9IGMtPnhtYXggKiAoMSA8PCBzaGlmdCk7CkBAIC02NDEsNyArNjQxLDcgQEAgc3Rh dGljIGlubGluZSBpbnQgaDI2M19tdjRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgs IGludCBteSwgaW50IHNoaWZ0KQogICAgICAgICBQX01WMVsxXT0gbXk7CiAgICAgICAgIGlmKHNh ZmV0eV9jbGlwcGluZykKICAgICAgICAgICAgIGZvcihpPTE7IGk8MTA7IGkrKyl7Ci0gICAgICAg ICAgICAgICAgaWYgKHMtPmZpcnN0X3NsaWNlX2xpbmUgJiYgYmxvY2s8MiAmJiBpPjEgJiYgaTw5 KQorICAgICAgICAgICAgICAgIGlmIChzLT5jLmZpcnN0X3NsaWNlX2xpbmUgJiYgYmxvY2sgPCAy ICYmIGkgPiAxICYmIGkgPCA5KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg ICAgICAgICAgICBpZiAoaT40ICYmIGk8OSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 CkBAIC02NTcsNyArNjU3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgaDI2M19tdjRfc2VhcmNoKE1w ZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBteSwgaW50IHNoaWZ0KQogICAgICAgICAgICAg aW50IGR4eTsKICAgICAgICAgICAgIGNvbnN0IGludCBvZmZzZXQ9ICgoYmxvY2smMSkgKyAoYmxv Y2s+PjEpKnN0cmlkZSkqODsKICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RfeSA9IGMtPnNjcmF0 Y2hwYWQgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBpZihzLT5xdWFydGVyX3NhbXBsZSl7CisgICAg ICAgICAgICBpZiAocy0+Yy5xdWFydGVyX3NhbXBsZSkgewogICAgICAgICAgICAgICAgIGNvbnN0 IHVpbnQ4X3QgKnJlZiA9IGMtPnJlZltibG9ja11bMF0gKyAobXg0Pj4yKSArIChteTQ+PjIpKnN0 cmlkZTsKICAgICAgICAgICAgICAgICBkeHkgPSAoKG15NCAmIDMpIDw8IDIpIHwgKG14NCAmIDMp OwogCkBAIC02NzIsNyArNjcyLDcgQEAgc3RhdGljIGlubGluZSBpbnQgaDI2M19tdjRfc2VhcmNo KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBteSwgaW50IHNoaWZ0KQogICAgICAgICB9 ZWxzZQogICAgICAgICAgICAgZG1pbl9zdW0rPSBkbWluNDsKIAotICAgICAgICBpZihzLT5xdWFy dGVyX3NhbXBsZSl7CisgICAgICAgIGlmIChzLT5jLnF1YXJ0ZXJfc2FtcGxlKSB7CiAgICAgICAg ICAgICBteDRfc3VtKz0gbXg0LzI7CiAgICAgICAgICAgICBteTRfc3VtKz0gbXk0LzI7CiAgICAg ICAgIH1lbHNlewpAQCAtNjgwLDggKzY4MCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGgyNjNfbXY0 X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQgbXksIGludCBzaGlmdCkKICAg ICAgICAgICAgIG15NF9zdW0rPSBteTQ7CiAgICAgICAgIH0KIAotICAgICAgICBzLT5jdXJfcGlj Lm1vdGlvbl92YWxbMF1bcy0+YmxvY2tfaW5kZXhbYmxvY2tdXVswXSA9IG14NDsKLSAgICAgICAg cy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmJsb2NrX2luZGV4W2Jsb2NrXV1bMV0gPSBteTQ7 CisgICAgICAgIHMtPmMuY3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmMuYmxvY2tfaW5kZXhbYmxv Y2tdXVswXSA9IG14NDsKKyAgICAgICAgcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bcy0+Yy5i bG9ja19pbmRleFtibG9ja11dWzFdID0gbXk0OwogCiAgICAgICAgIGlmKG14NCAhPSBteCB8fCBt eTQgIT0gbXkpIHNhbWU9MDsKICAgICB9CkBAIC02OTIsNyArNjkyLDcgQEAgc3RhdGljIGlubGlu ZSBpbnQgaDI2M19tdjRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBteSwg aW50IHNoaWZ0KQogICAgIGlmIChjLT5tZV9zdWJfY21wWzBdICE9IGMtPm1iX2NtcFswXSkgewog ICAgICAgICBkbWluX3N1bSArPSBjLT5tYl9jbXBbMF0ocywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPm5ld19waWMtPmRhdGFbMF0gKwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+bWJfeCAqIDE2ICsgcy0+bWJfeSAqIDE2ICogc3RyaWRlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl94ICogMTYgKyBzLT5jLm1iX3kgKiAx NiAqIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPnNjcmF0Y2hw YWQsIHN0cmlkZSwgMTYpOwogICAgIH0KIApAQCAtNzA1LDEzICs3MDUsMTMgQEAgc3RhdGljIGlu bGluZSBpbnQgaDI2M19tdjRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBt eSwgaW50IHNoaWZ0KQogICAgICAgICBteT0gZmZfaDI2M19yb3VuZF9jaHJvbWEobXk0X3N1bSk7 CiAgICAgICAgIGR4eSA9ICgobXkgJiAxKSA8PCAxKSB8IChteCAmIDEpOwogCi0gICAgICAgIG9m ZnNldD0gKHMtPm1iX3gqOCArIChteD4+MSkpICsgKHMtPm1iX3kqOCArIChteT4+MSkpKnMtPnV2 bGluZXNpemU7CisgICAgICAgIG9mZnNldCA9IChzLT5jLm1iX3gqOCArIChteD4+MSkpICsgKHMt PmMubWJfeSo4ICsgKG15Pj4xKSkqcy0+Yy51dmxpbmVzaXplOwogCi0gICAgICAgIGMtPmhwZWxf cHV0WzFdW2R4eV0oYy0+c2NyYXRjaHBhZCAgICAsIHMtPmxhc3RfcGljLmRhdGFbMV0gKyBvZmZz ZXQsIHMtPnV2bGluZXNpemUsIDgpOwotICAgICAgICBjLT5ocGVsX3B1dFsxXVtkeHldKGMtPnNj cmF0Y2hwYWQgKyA4LCBzLT5sYXN0X3BpYy5kYXRhWzJdICsgb2Zmc2V0LCBzLT51dmxpbmVzaXpl LCA4KTsKKyAgICAgICAgYy0+aHBlbF9wdXRbMV1bZHh5XShjLT5zY3JhdGNocGFkICAgICwgcy0+ Yy5sYXN0X3BpYy5kYXRhWzFdICsgb2Zmc2V0LCBzLT5jLnV2bGluZXNpemUsIDgpOworICAgICAg ICBjLT5ocGVsX3B1dFsxXVtkeHldKGMtPnNjcmF0Y2hwYWQgKyA4LCBzLT5jLmxhc3RfcGljLmRh dGFbMl0gKyBvZmZzZXQsIHMtPmMudXZsaW5lc2l6ZSwgOCk7CiAKLSAgICAgICAgZG1pbl9zdW0g Kz0gYy0+bWJfY21wWzFdKHMsIHMtPm5ld19waWMtPmRhdGFbMV0gKyBzLT5tYl94ICogOCArIHMt Pm1iX3kgKiA4ICogcy0+dXZsaW5lc2l6ZSwgYy0+c2NyYXRjaHBhZCwgICAgIHMtPnV2bGluZXNp emUsIDgpOwotICAgICAgICBkbWluX3N1bSArPSBjLT5tYl9jbXBbMV0ocywgcy0+bmV3X3BpYy0+ ZGF0YVsyXSArIHMtPm1iX3ggKiA4ICsgcy0+bWJfeSAqIDggKiBzLT51dmxpbmVzaXplLCBjLT5z Y3JhdGNocGFkICsgOCwgcy0+dXZsaW5lc2l6ZSwgOCk7CisgICAgICAgIGRtaW5fc3VtICs9IGMt Pm1iX2NtcFsxXShzLCBzLT5uZXdfcGljLT5kYXRhWzFdICsgcy0+Yy5tYl94ICogOCArIHMtPmMu bWJfeSAqIDggKiBzLT5jLnV2bGluZXNpemUsIGMtPnNjcmF0Y2hwYWQsICAgICBzLT5jLnV2bGlu ZXNpemUsIDgpOworICAgICAgICBkbWluX3N1bSArPSBjLT5tYl9jbXBbMV0ocywgcy0+bmV3X3Bp Yy0+ZGF0YVsyXSArIHMtPmMubWJfeCAqIDggKyBzLT5jLm1iX3kgKiA4ICogcy0+Yy51dmxpbmVz aXplLCBjLT5zY3JhdGNocGFkICsgOCwgcy0+Yy51dmxpbmVzaXplLCA4KTsKICAgICB9CiAKICAg ICBjLT5wcmVkX3g9IG14OwpAQCAtNzE5LDcgKzcxOSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGgy NjNfbXY0X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQgbXksIGludCBzaGlm dCkKIAogICAgIHN3aXRjaChjLT5hdmN0eC0+bWJfY21wJjB4RkYpewogICAgIC8qY2FzZSBGRl9D TVBfU1NFOgotICAgICAgICByZXR1cm4gZG1pbl9zdW0rIDMyKnMtPnFzY2FsZSpzLT5xc2NhbGU7 Ki8KKyAgICAgICAgcmV0dXJuIGRtaW5fc3VtKyAzMipzLT5jLnFzY2FsZSpzLT5jLnFzY2FsZTsq LwogICAgIGNhc2UgRkZfQ01QX1JEOgogICAgICAgICByZXR1cm4gZG1pbl9zdW07CiAgICAgZGVm YXVsdDoKQEAgLTcyNywzMyArNzI3LDM0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGgyNjNfbXY0X3Nl YXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQgbXksIGludCBzaGlmdCkKICAgICB9 CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2ludGVybGFjZWRfcmVmKE1wZWdFbmNDb250 ZXh0ICpzLCBpbnQgcmVmX2luZGV4KXsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0g JnMtPm1lOworc3RhdGljIGlubGluZSB2b2lkIGluaXRfaW50ZXJsYWNlZF9yZWYoTVBWRW5jQ29u dGV4dCAqY29uc3QgcywgaW50IHJlZl9pbmRleCkKK3sKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpj b25zdCBjID0gJnMtPmMubWU7CiAKLSAgICBjLT5yZWZbMStyZWZfaW5kZXhdWzBdID0gYy0+cmVm WzArcmVmX2luZGV4XVswXSArIHMtPmxpbmVzaXplOwotICAgIGMtPnNyY1sxXVswXSA9IGMtPnNy Y1swXVswXSArIHMtPmxpbmVzaXplOworICAgIGMtPnJlZlsxK3JlZl9pbmRleF1bMF0gPSBjLT5y ZWZbMCtyZWZfaW5kZXhdWzBdICsgcy0+Yy5saW5lc2l6ZTsKKyAgICBjLT5zcmNbMV1bMF0gPSBj LT5zcmNbMF1bMF0gKyBzLT5jLmxpbmVzaXplOwogICAgIGlmKGMtPmZsYWdzICYgRkxBR19DSFJP TUEpewotICAgICAgICBjLT5yZWZbMStyZWZfaW5kZXhdWzFdID0gYy0+cmVmWzArcmVmX2luZGV4 XVsxXSArIHMtPnV2bGluZXNpemU7Ci0gICAgICAgIGMtPnJlZlsxK3JlZl9pbmRleF1bMl0gPSBj LT5yZWZbMCtyZWZfaW5kZXhdWzJdICsgcy0+dXZsaW5lc2l6ZTsKLSAgICAgICAgYy0+c3JjWzFd WzFdID0gYy0+c3JjWzBdWzFdICsgcy0+dXZsaW5lc2l6ZTsKLSAgICAgICAgYy0+c3JjWzFdWzJd ID0gYy0+c3JjWzBdWzJdICsgcy0+dXZsaW5lc2l6ZTsKKyAgICAgICAgYy0+cmVmWzErcmVmX2lu ZGV4XVsxXSA9IGMtPnJlZlswK3JlZl9pbmRleF1bMV0gKyBzLT5jLnV2bGluZXNpemU7CisgICAg ICAgIGMtPnJlZlsxK3JlZl9pbmRleF1bMl0gPSBjLT5yZWZbMCtyZWZfaW5kZXhdWzJdICsgcy0+ Yy51dmxpbmVzaXplOworICAgICAgICBjLT5zcmNbMV1bMV0gPSBjLT5zcmNbMF1bMV0gKyBzLT5j LnV2bGluZXNpemU7CisgICAgICAgIGMtPnNyY1sxXVsyXSA9IGMtPnNyY1swXVsyXSArIHMtPmMu dXZsaW5lc2l6ZTsKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQgaW50ZXJsYWNlZF9zZWFyY2goTXBl Z0VuY0NvbnRleHQgKnMsIGludCByZWZfaW5kZXgsCitzdGF0aWMgaW50IGludGVybGFjZWRfc2Vh cmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCByZWZfaW5kZXgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludDE2X3QgKCptdl90YWJsZXNbMl1bMl0pWzJdLCB1aW50OF90ICpm aWVsZF9zZWxlY3RfdGFibGVzWzJdLCBpbnQgbXgsIGludCBteSwgaW50IHVzZXJfZmllbGRfc2Vs ZWN0KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90 aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOwogICAgIGNvbnN0IGludCBzaXplPTA7 CiAgICAgY29uc3QgaW50IGg9ODsKICAgICBpbnQgYmxvY2s7CiAgICAgaW50IFBbMTBdWzJdOwog ICAgIGNvbnN0IHVpbnQ4X3QgKiBjb25zdCBtdl9wZW5hbHR5ID0gYy0+Y3VycmVudF9tdl9wZW5h bHR5OwogICAgIGludCBzYW1lPTE7Ci0gICAgY29uc3QgaW50IHN0cmlkZT0gMipzLT5saW5lc2l6 ZTsKKyAgICBjb25zdCBpbnQgc3RyaWRlID0gMipzLT5jLmxpbmVzaXplOwogICAgIGludCBkbWlu X3N1bT0gMDsKLSAgICBjb25zdCBpbnQgbW90X3N0cmlkZT0gcy0+bWJfc3RyaWRlOwotICAgIGNv bnN0IGludCB4eT0gcy0+bWJfeCArIHMtPm1iX3kqbW90X3N0cmlkZTsKKyAgICBjb25zdCBpbnQg bW90X3N0cmlkZSA9IHMtPmMubWJfc3RyaWRlOworICAgIGNvbnN0IGludCB4eSA9IHMtPmMubWJf eCArIHMtPmMubWJfeSptb3Rfc3RyaWRlOwogCiAgICAgYy0+eW1pbj4+PTE7CiAgICAgYy0+eW1h eD4+PTE7CkBAIC03ODQsNyArNzg1LDcgQEAgc3RhdGljIGludCBpbnRlcmxhY2VkX3NlYXJjaChN cGVnRW5jQ29udGV4dCAqcywgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgIGMtPnByZWRfeD0g UF9MRUZUWzBdOwogICAgICAgICAgICAgYy0+cHJlZF95PSBQX0xFRlRbMV07CiAKLSAgICAgICAg ICAgIGlmKCFzLT5maXJzdF9zbGljZV9saW5lKXsKKyAgICAgICAgICAgIGlmICghcy0+Yy5maXJz dF9zbGljZV9saW5lKSB7CiAgICAgICAgICAgICAgICAgUF9UT1BbMF0gICAgICA9IG12X3RhYmxl W3h5IC0gbW90X3N0cmlkZV1bMF07CiAgICAgICAgICAgICAgICAgUF9UT1BbMV0gICAgICA9IG12 X3RhYmxlW3h5IC0gbW90X3N0cmlkZV1bMV07CiAgICAgICAgICAgICAgICAgUF9UT1BSSUdIVFsw XSA9IG12X3RhYmxlW3h5IC0gbW90X3N0cmlkZSArIDFdWzBdOwpAQCAtODUwLDcgKzg1MSw3IEBA IHN0YXRpYyBpbnQgaW50ZXJsYWNlZF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKnMsIGludCByZWZf aW5kZXgsCiAKICAgICBzd2l0Y2goYy0+YXZjdHgtPm1iX2NtcCYweEZGKXsKICAgICAvKmNhc2Ug RkZfQ01QX1NTRToKLSAgICAgICAgcmV0dXJuIGRtaW5fc3VtKyAzMipzLT5xc2NhbGUqcy0+cXNj YWxlOyovCisgICAgICAgIHJldHVybiBkbWluX3N1bSsgMzIqcy0+Yy5xc2NhbGUqcy0+Yy5xc2Nh bGU7Ki8KICAgICBjYXNlIEZGX0NNUF9SRDoKICAgICAgICAgcmV0dXJuIGRtaW5fc3VtOwogICAg IGRlZmF1bHQ6CkBAIC04ODMsNTcgKzg4NCw1NyBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRfcGVu YWx0eV9mYWN0b3IoaW50IGxhbWJkYSwgaW50IGxhbWJkYTIsIGludCB0eXBlKXsKICAgICB9CiB9 CiAKLXZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKiBzLAor dm9pZCBmZl9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0ICpjb25zdCBzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWJfeCwgaW50IG1iX3kpCiB7Ci0g ICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250 ZXh0ICpjb25zdCBjID0gJnMtPmMubWU7CiAgICAgY29uc3QgdWludDhfdCAqcGl4LCAqcHBpeDsK ICAgICBpbnQgc3VtLCBteCA9IDAsIG15ID0gMCwgZG1pbiA9IDA7CiAgICAgaW50IHZhcmM7ICAg ICAgICAgICAgLy8vPCB0aGUgdmFyaWFuY2Ugb2YgdGhlIGJsb2NrIChzdW0gb2Ygc3F1YXJlZCAo cFt5XVt4XS1hdmVyYWdlKSkKICAgICBpbnQgdmFyZDsgICAgICAgICAgICAvLy88IHN1bSBvZiBz cXVhcmVkIGRpZmZlcmVuY2VzIHdpdGggdGhlIGVzdGltYXRlZCBtb3Rpb24gdmVjdG9yCiAgICAg aW50IFBbMTBdWzJdOwotICAgIGNvbnN0IGludCBzaGlmdD0gMStzLT5xdWFydGVyX3NhbXBsZTsK KyAgICBjb25zdCBpbnQgc2hpZnQgPSAxICsgcy0+Yy5xdWFydGVyX3NhbXBsZTsKICAgICBpbnQg bWJfdHlwZT0wOwogCi0gICAgaW5pdF9yZWYoYywgcy0+bmV3X3BpYy0+ZGF0YSwgcy0+bGFzdF9w aWMuZGF0YSwgTlVMTCwgMTYqbWJfeCwgMTYqbWJfeSwgMCk7CisgICAgaW5pdF9yZWYoYywgcy0+ bmV3X3BpYy0+ZGF0YSwgcy0+Yy5sYXN0X3BpYy5kYXRhLCBOVUxMLCAxNiptYl94LCAxNiptYl95 LCAwKTsKIAotICAgIGF2X2Fzc2VydDAocy0+cXVhcnRlcl9zYW1wbGU9PTAgfHwgcy0+cXVhcnRl cl9zYW1wbGU9PTEpOwotICAgIGF2X2Fzc2VydDAocy0+bGluZXNpemUgPT0gYy0+c3RyaWRlKTsK LSAgICBhdl9hc3NlcnQwKHMtPnV2bGluZXNpemUgPT0gYy0+dXZzdHJpZGUpOworICAgIGF2X2Fz c2VydDAocy0+Yy5xdWFydGVyX3NhbXBsZT09MCB8fCBzLT5jLnF1YXJ0ZXJfc2FtcGxlPT0xKTsK KyAgICBhdl9hc3NlcnQwKHMtPmMubGluZXNpemUgPT0gYy0+c3RyaWRlKTsKKyAgICBhdl9hc3Nl cnQwKHMtPmMudXZsaW5lc2l6ZSA9PSBjLT51dnN0cmlkZSk7CiAKLSAgICBjLT5wZW5hbHR5X2Zh Y3RvciAgICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5sYW1iZGEsIHMtPmxhbWJkYTIsIGMtPmF2 Y3R4LT5tZV9jbXApOwotICAgIGMtPnN1Yl9wZW5hbHR5X2ZhY3Rvcj0gZ2V0X3BlbmFsdHlfZmFj dG9yKHMtPmxhbWJkYSwgcy0+bGFtYmRhMiwgYy0+YXZjdHgtPm1lX3N1Yl9jbXApOwotICAgIGMt Pm1iX3BlbmFsdHlfZmFjdG9yID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmxhbWJkYSwgcy0+bGFt YmRhMiwgYy0+YXZjdHgtPm1iX2NtcCk7Ci0gICAgYy0+Y3VycmVudF9tdl9wZW5hbHR5PSBjLT5t dl9wZW5hbHR5W3MtPmZfY29kZV0gKyBNQVhfRE1WOworICAgIGMtPnBlbmFsdHlfZmFjdG9yICAg ICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0 eC0+bWVfY21wKTsKKyAgICBjLT5zdWJfcGVuYWx0eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0 b3Iocy0+Yy5sYW1iZGEsIHMtPmMubGFtYmRhMiwgYy0+YXZjdHgtPm1lX3N1Yl9jbXApOworICAg IGMtPm1iX3BlbmFsdHlfZmFjdG9yICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwg cy0+Yy5sYW1iZGEyLCBjLT5hdmN0eC0+bWJfY21wKTsKKyAgICBjLT5jdXJyZW50X212X3BlbmFs dHkgPSBjLT5tdl9wZW5hbHR5W3MtPmMuZl9jb2RlXSArIE1BWF9ETVY7CiAKICAgICBnZXRfbGlt aXRzKHMsIDE2Km1iX3gsIDE2Km1iX3ksIDApOwogICAgIGMtPnNraXA9MDsKIAogICAgIC8qIGlu dHJhIC8gcHJlZGljdGl2ZSBkZWNpc2lvbiAqLwogICAgIHBpeCA9IGMtPnNyY1swXVswXTsKLSAg ICBzdW0gID0gcy0+bXB2ZW5jZHNwLnBpeF9zdW0ocGl4LCBzLT5saW5lc2l6ZSk7Ci0gICAgdmFy YyA9IHMtPm1wdmVuY2RzcC5waXhfbm9ybTEocGl4LCBzLT5saW5lc2l6ZSkgLQorICAgIHN1bSAg PSBzLT5tcHZlbmNkc3AucGl4X3N1bShwaXgsIHMtPmMubGluZXNpemUpOworICAgIHZhcmMgPSBz LT5tcHZlbmNkc3AucGl4X25vcm0xKHBpeCwgcy0+Yy5saW5lc2l6ZSkgLQogICAgICAgICAgICAo KCh1bnNpZ25lZCkgc3VtICogc3VtKSA+PiA4KSArIDUwMDsKIAotICAgIHMtPm1iX21lYW5bcy0+ bWJfc3RyaWRlICogbWJfeSArIG1iX3hdID0gKHN1bSsxMjgpPj44OwotICAgIHMtPm1iX3ZhciBb cy0+bWJfc3RyaWRlICogbWJfeSArIG1iX3hdID0gKHZhcmMrMTI4KT4+ODsKKyAgICBzLT5tYl9t ZWFuW3MtPmMubWJfc3RyaWRlICogbWJfeSArIG1iX3hdID0gKHN1bSAgKyAxMjgpID4+IDg7Cisg ICAgcy0+bWJfdmFyIFtzLT5jLm1iX3N0cmlkZSAqIG1iX3kgKyBtYl94XSA9ICh2YXJjICsgMTI4 KSA+PiA4OwogICAgIGMtPm1iX3Zhcl9zdW1fdGVtcCArPSAodmFyYysxMjgpPj44OwogCiAgICAg aWYgKGMtPm1vdGlvbl9lc3QgIT0gRkZfTUVfWkVSTykgewotICAgICAgICBjb25zdCBpbnQgbW90 X3N0cmlkZSA9IHMtPmI4X3N0cmlkZTsKLSAgICAgICAgY29uc3QgaW50IG1vdF94eSA9IHMtPmJs b2NrX2luZGV4WzBdOworICAgICAgICBjb25zdCBpbnQgbW90X3N0cmlkZSA9IHMtPmMuYjhfc3Ry aWRlOworICAgICAgICBjb25zdCBpbnQgbW90X3h5ID0gcy0+Yy5ibG9ja19pbmRleFswXTsKIAot ICAgICAgICBQX0xFRlRbMF0gPSBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5IC0gMV1b MF07Ci0gICAgICAgIFBfTEVGVFsxXSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkg LSAxXVsxXTsKKyAgICAgICAgUF9MRUZUWzBdID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1b bW90X3h5IC0gMV1bMF07CisgICAgICAgIFBfTEVGVFsxXSA9IHMtPmMuY3VyX3BpYy5tb3Rpb25f dmFsWzBdW21vdF94eSAtIDFdWzFdOwogCiAgICAgICAgIGlmIChQX0xFRlRbMF0gPiAoYy0+eG1h eCA8PCBzaGlmdCkpCiAgICAgICAgICAgICBQX0xFRlRbMF0gPSAgYy0+eG1heCA8PCBzaGlmdDsK IAotICAgICAgICBpZiAoIXMtPmZpcnN0X3NsaWNlX2xpbmUpIHsKLSAgICAgICAgICAgIFBfVE9Q WzBdICAgICAgPSBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1bbW90X3h5IC0gbW90X3N0cmlkZSAg ICBdWzBdOwotICAgICAgICAgICAgUF9UT1BbMV0gICAgICA9IHMtPmN1cl9waWMubW90aW9uX3Zh bFswXVttb3RfeHkgLSBtb3Rfc3RyaWRlICAgIF1bMV07Ci0gICAgICAgICAgICBQX1RPUFJJR0hU WzBdID0gcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgKyAyXVsw XTsKLSAgICAgICAgICAgIFBfVE9QUklHSFRbMV0gPSBzLT5jdXJfcGljLm1vdGlvbl92YWxbMF1b bW90X3h5IC0gbW90X3N0cmlkZSArIDJdWzFdOworICAgICAgICBpZiAoIXMtPmMuZmlyc3Rfc2xp Y2VfbGluZSkgeworICAgICAgICAgICAgUF9UT1BbMF0gICAgICA9IHMtPmMuY3VyX3BpYy5tb3Rp b25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUgICAgXVswXTsKKyAgICAgICAgICAgIFBfVE9Q WzFdICAgICAgPSBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVttb3RfeHkgLSBtb3Rfc3RyaWRl ICAgIF1bMV07CisgICAgICAgICAgICBQX1RPUFJJR0hUWzBdID0gcy0+Yy5jdXJfcGljLm1vdGlv bl92YWxbMF1bbW90X3h5IC0gbW90X3N0cmlkZSArIDJdWzBdOworICAgICAgICAgICAgUF9UT1BS SUdIVFsxXSA9IHMtPmMuY3VyX3BpYy5tb3Rpb25fdmFsWzBdW21vdF94eSAtIG1vdF9zdHJpZGUg KyAyXVsxXTsKICAgICAgICAgICAgIGlmIChQX1RPUFsxXSA+IChjLT55bWF4IDw8IHNoaWZ0KSkK ICAgICAgICAgICAgICAgICBQX1RPUFsxXSA9ICBjLT55bWF4IDw8IHNoaWZ0OwogICAgICAgICAg ICAgaWYgKFBfVE9QUklHSFRbMF0gPCAoYy0+eG1pbiAqICgxIDw8IHNoaWZ0KSkpCkBAIC05NDQs NyArOTQ1LDcgQEAgdm9pZCBmZl9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNcGVnRW5jQ29udGV4 dCAqIHMsCiAgICAgICAgICAgICBQX01FRElBTlswXSA9IG1pZF9wcmVkKFBfTEVGVFswXSwgUF9U T1BbMF0sIFBfVE9QUklHSFRbMF0pOwogICAgICAgICAgICAgUF9NRURJQU5bMV0gPSBtaWRfcHJl ZChQX0xFRlRbMV0sIFBfVE9QWzFdLCBQX1RPUFJJR0hUWzFdKTsKIAotICAgICAgICAgICAgaWYg KHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjMpIHsKKyAgICAgICAgICAgIGlmIChzLT5jLm91dF9m b3JtYXQgPT0gRk1UX0gyNjMpIHsKICAgICAgICAgICAgICAgICBjLT5wcmVkX3ggPSBQX01FRElB TlswXTsKICAgICAgICAgICAgICAgICBjLT5wcmVkX3kgPSBQX01FRElBTlsxXTsKICAgICAgICAg ICAgIH0gZWxzZSB7IC8qIE1QRUctMSBhdCBsZWFzdCAqLwpAQCAtOTU5LDIyICs5NjAsMjIgQEAg dm9pZCBmZl9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNcGVnRW5jQ29udGV4dCAqIHMsCiAgICAg fQogCiAgICAgLyogQXQgdGhpcyBwb2ludCAobXgsbXkpIGFyZSBmdWxsLXBlbGwgYW5kIHRoZSBy ZWxhdGl2ZSBkaXNwbGFjZW1lbnQgKi8KLSAgICBwcGl4ID0gYy0+cmVmWzBdWzBdICsgKG15ICog cy0+bGluZXNpemUpICsgbXg7CisgICAgcHBpeCA9IGMtPnJlZlswXVswXSArIChteSAqIHMtPmMu bGluZXNpemUpICsgbXg7CiAKLSAgICB2YXJkID0gYy0+c3NlKE5VTEwsIHBpeCwgcHBpeCwgcy0+ bGluZXNpemUsIDE2KTsKKyAgICB2YXJkID0gYy0+c3NlKE5VTEwsIHBpeCwgcHBpeCwgcy0+Yy5s aW5lc2l6ZSwgMTYpOwogCi0gICAgcy0+bWNfbWJfdmFyW3MtPm1iX3N0cmlkZSAqIG1iX3kgKyBt Yl94XSA9ICh2YXJkKzEyOCk+Pjg7CisgICAgcy0+bWNfbWJfdmFyW3MtPmMubWJfc3RyaWRlICog bWJfeSArIG1iX3hdID0gKHZhcmQrMTI4KT4+ODsKICAgICBjLT5tY19tYl92YXJfc3VtX3RlbXAg Kz0gKHZhcmQrMTI4KT4+ODsKIAogICAgIGlmIChjLT5hdmN0eC0+bWJfZGVjaXNpb24gPiBGRl9N Ql9ERUNJU0lPTl9TSU1QTEUpIHsKLSAgICAgICAgaW50IHBfc2NvcmU9IEZGTUlOKHZhcmQsIHZh cmMtNTAwKyhzLT5sYW1iZGEyPj5GRl9MQU1CREFfU0hJRlQpKjEwMCk7Ci0gICAgICAgIGludCBp X3Njb3JlPSB2YXJjLTUwMCsocy0+bGFtYmRhMj4+RkZfTEFNQkRBX1NISUZUKSoyMDsKKyAgICAg ICAgaW50IHBfc2NvcmUgPSBGRk1JTih2YXJkLCB2YXJjIC0gNTAwICsgKHMtPmMubGFtYmRhMiA+ PiBGRl9MQU1CREFfU0hJRlQpKjEwMCk7CisgICAgICAgIGludCBpX3Njb3JlID0gdmFyYyAtIDUw MCArIChzLT5jLmxhbWJkYTIgPj4gRkZfTEFNQkRBX1NISUZUKSoyMDsKICAgICAgICAgYy0+c2Nl bmVfY2hhbmdlX3Njb3JlKz0gZmZfc3FydChwX3Njb3JlKSAtIGZmX3NxcnQoaV9zY29yZSk7CiAK ICAgICAgICAgaWYgKHZhcmQqMiArIDIwMCoyNTYgPiB2YXJjICYmICFzLT5pbnRyYV9wZW5hbHR5 KQogICAgICAgICAgICAgbWJfdHlwZXw9IENBTkRJREFURV9NQl9UWVBFX0lOVFJBOwotICAgICAg ICBpZiAodmFyYyoyICsgMjAwKjI1NiA+IHZhcmQgfHwgcy0+cXNjYWxlID4gMjQpewotLy8gICAg ICAgIGlmICh2YXJjKjIgKyAyMDAqMjU2ICsgNTAqKHMtPmxhbWJkYTI+PkZGX0xBTUJEQV9TSElG VCkgPiB2YXJkKXsKKyAgICAgICAgaWYgKHZhcmMqMiArIDIwMCoyNTYgPiB2YXJkIHx8IHMtPmMu cXNjYWxlID4gMjQpeworLy8gICAgICAgIGlmICh2YXJjKjIgKyAyMDAqMjU2ICsgNTAqKHMtPmMu bGFtYmRhMj4+RkZfTEFNQkRBX1NISUZUKSA+IHZhcmQpewogICAgICAgICAgICAgbWJfdHlwZXw9 IENBTkRJREFURV9NQl9UWVBFX0lOVEVSOwogICAgICAgICAgICAgYy0+c3ViX21vdGlvbl9zZWFy Y2gocywgJm14LCAmbXksIGRtaW4sIDAsIDAsIDAsIDE2KTsKICAgICAgICAgICAgIGlmIChzLT5t cHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19NVjApCkBAIC05OTQsNyArOTk1LDcgQEAgdm9pZCBmZl9l c3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNcGVnRW5jQ29udGV4dCAqIHMsCiAgICAgICAgICAgICBz ZXRfcF9tdl90YWJsZXMocywgbXgsIG15LCAxKTsKICAgICAgICAgaWYgKChjLT5hdmN0eC0+Zmxh Z3MgJiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpCiAgICAgICAgICAgICYmICFjLT5za2lw KXsgLy9GSVhNRSB2YXJjL2QgY2hlY2tzCi0gICAgICAgICAgICBpZihpbnRlcmxhY2VkX3NlYXJj aChzLCAwLCBzLT5wX2ZpZWxkX212X3RhYmxlLCBzLT5wX2ZpZWxkX3NlbGVjdF90YWJsZSwgbXgs IG15LCAwKSA8IElOVF9NQVgpCisgICAgICAgICAgICBpZihpbnRlcmxhY2VkX3NlYXJjaChzLCAw LCBzLT5jLnBfZmllbGRfbXZfdGFibGUsIHMtPnBfZmllbGRfc2VsZWN0X3RhYmxlLCBteCwgbXks IDApIDwgSU5UX01BWCkKICAgICAgICAgICAgICAgICBtYl90eXBlIHw9IENBTkRJREFURV9NQl9U WVBFX0lOVEVSX0k7CiAgICAgICAgIH0KICAgICB9ZWxzZXsKQEAgLTEwMTUsNyArMTAxNiw3IEBA IHZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKiBzLAogICAg ICAgICB9CiAgICAgICAgIGlmICgoYy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19JTlRF UkxBQ0VEX01FKQogICAgICAgICAgICAmJiAhYy0+c2tpcCl7IC8vRklYTUUgdmFyYy9kIGNoZWNr cwotICAgICAgICAgICAgaW50IGRtaW5faT0gaW50ZXJsYWNlZF9zZWFyY2gocywgMCwgcy0+cF9m aWVsZF9tdl90YWJsZSwgcy0+cF9maWVsZF9zZWxlY3RfdGFibGUsIG14LCBteSwgMCk7CisgICAg ICAgICAgICBpbnQgZG1pbl9pPSBpbnRlcmxhY2VkX3NlYXJjaChzLCAwLCBzLT5jLnBfZmllbGRf bXZfdGFibGUsIHMtPnBfZmllbGRfc2VsZWN0X3RhYmxlLCBteCwgbXksIDApOwogICAgICAgICAg ICAgaWYoZG1pbl9pIDwgZG1pbil7CiAgICAgICAgICAgICAgICAgbWJfdHlwZSA9IENBTkRJREFU RV9NQl9UWVBFX0lOVEVSX0k7CiAgICAgICAgICAgICAgICAgZG1pbj0gZG1pbl9pOwpAQCAtMTAz Miw0NiArMTAzMyw0NiBAQCB2b2lkIGZmX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1wZWdFbmND b250ZXh0ICogcywKICAgICAgICAgICAgIG1lYW4qPSAweDAxMDEwMTAxOwogCiAgICAgICAgICAg ICBmb3IoaT0wOyBpPDE2OyBpKyspewotICAgICAgICAgICAgICAgICoodWludDMyX3QqKSgmYy0+ c2NyYXRjaHBhZFtpKnMtPmxpbmVzaXplKyAwXSkgPSBtZWFuOwotICAgICAgICAgICAgICAgICoo dWludDMyX3QqKSgmYy0+c2NyYXRjaHBhZFtpKnMtPmxpbmVzaXplKyA0XSkgPSBtZWFuOwotICAg ICAgICAgICAgICAgICoodWludDMyX3QqKSgmYy0+c2NyYXRjaHBhZFtpKnMtPmxpbmVzaXplKyA4 XSkgPSBtZWFuOwotICAgICAgICAgICAgICAgICoodWludDMyX3QqKSgmYy0+c2NyYXRjaHBhZFtp KnMtPmxpbmVzaXplKzEyXSkgPSBtZWFuOworICAgICAgICAgICAgICAgICoodWludDMyX3QqKSgm Yy0+c2NyYXRjaHBhZFtpKnMtPmMubGluZXNpemUrIDBdKSA9IG1lYW47CisgICAgICAgICAgICAg ICAgKih1aW50MzJfdCopKCZjLT5zY3JhdGNocGFkW2kqcy0+Yy5saW5lc2l6ZSsgNF0pID0gbWVh bjsKKyAgICAgICAgICAgICAgICAqKHVpbnQzMl90KikoJmMtPnNjcmF0Y2hwYWRbaSpzLT5jLmxp bmVzaXplKyA4XSkgPSBtZWFuOworICAgICAgICAgICAgICAgICoodWludDMyX3QqKSgmYy0+c2Ny YXRjaHBhZFtpKnMtPmMubGluZXNpemUrMTJdKSA9IG1lYW47CiAgICAgICAgICAgICB9CiAKLSAg ICAgICAgICAgIGludHJhX3Njb3JlPSBjLT5tYl9jbXBbMF0ocywgYy0+c2NyYXRjaHBhZCwgcGl4 LCBzLT5saW5lc2l6ZSwgMTYpOworICAgICAgICAgICAgaW50cmFfc2NvcmU9IGMtPm1iX2NtcFsw XShzLCBjLT5zY3JhdGNocGFkLCBwaXgsIHMtPmMubGluZXNpemUsIDE2KTsKICAgICAgICAgfQog ICAgICAgICBpbnRyYV9zY29yZSArPSBjLT5tYl9wZW5hbHR5X2ZhY3RvcioxNiArIHMtPmludHJh X3BlbmFsdHk7CiAKICAgICAgICAgaWYoaW50cmFfc2NvcmUgPCBkbWluKXsKICAgICAgICAgICAg IG1iX3R5cGU9IENBTkRJREFURV9NQl9UWVBFX0lOVFJBOwotICAgICAgICAgICAgcy0+Y3VyX3Bp Yy5tYl90eXBlW21iX3kqcy0+bWJfc3RyaWRlICsgbWJfeF0gPSBDQU5ESURBVEVfTUJfVFlQRV9J TlRSQTsgLy9GSVhNRSBjbGVhbnVwCisgICAgICAgICAgICBzLT5jLmN1cl9waWMubWJfdHlwZVtt Yl95KnMtPmMubWJfc3RyaWRlICsgbWJfeF0gPSBDQU5ESURBVEVfTUJfVFlQRV9JTlRSQTsgLy9G SVhNRSBjbGVhbnVwCiAgICAgICAgIH1lbHNlCi0gICAgICAgICAgICBzLT5jdXJfcGljLm1iX3R5 cGVbbWJfeSpzLT5tYl9zdHJpZGUgKyBtYl94XSA9IDA7CisgICAgICAgICAgICBzLT5jLmN1cl9w aWMubWJfdHlwZVttYl95KnMtPmMubWJfc3RyaWRlICsgbWJfeF0gPSAwOwogCiAgICAgICAgIHsK LSAgICAgICAgICAgIGludCBwX3Njb3JlPSBGRk1JTih2YXJkLCB2YXJjLTUwMCsocy0+bGFtYmRh Mj4+RkZfTEFNQkRBX1NISUZUKSoxMDApOwotICAgICAgICAgICAgaW50IGlfc2NvcmU9IHZhcmMt NTAwKyhzLT5sYW1iZGEyPj5GRl9MQU1CREFfU0hJRlQpKjIwOworICAgICAgICAgICAgaW50IHBf c2NvcmUgPSBGRk1JTih2YXJkLCB2YXJjLTUwMCsocy0+Yy5sYW1iZGEyPj5GRl9MQU1CREFfU0hJ RlQpKjEwMCk7CisgICAgICAgICAgICBpbnQgaV9zY29yZSA9IHZhcmMtNTAwKyhzLT5jLmxhbWJk YTI+PkZGX0xBTUJEQV9TSElGVCkqMjA7CiAgICAgICAgICAgICBjLT5zY2VuZV9jaGFuZ2Vfc2Nv cmUrPSBmZl9zcXJ0KHBfc2NvcmUpIC0gZmZfc3FydChpX3Njb3JlKTsKICAgICAgICAgfQogICAg IH0KIAotICAgIHMtPm1iX3R5cGVbbWJfeSpzLT5tYl9zdHJpZGUgKyBtYl94XT0gbWJfdHlwZTsK KyAgICBzLT5tYl90eXBlW21iX3kqcy0+Yy5tYl9zdHJpZGUgKyBtYl94XSA9IG1iX3R5cGU7CiB9 CiAKLWludCBmZl9wcmVfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKiBz LAoraW50IGZmX3ByZV9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0ICpjb25z dCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1iX3gsIGludCBt Yl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90 aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOwogICAgIGludCBteCwgbXksIGRtaW47 CiAgICAgaW50IFBbMTBdWzJdOwotICAgIGNvbnN0IGludCBzaGlmdD0gMStzLT5xdWFydGVyX3Nh bXBsZTsKLSAgICBjb25zdCBpbnQgeHk9IG1iX3ggKyBtYl95KnMtPm1iX3N0cmlkZTsKLSAgICBp bml0X3JlZihjLCBzLT5uZXdfcGljLT5kYXRhLCBzLT5sYXN0X3BpYy5kYXRhLCBOVUxMLCAxNipt Yl94LCAxNiptYl95LCAwKTsKKyAgICBjb25zdCBpbnQgc2hpZnQgPSAxICsgcy0+Yy5xdWFydGVy X3NhbXBsZTsKKyAgICBjb25zdCBpbnQgeHkgICAgPSBtYl94ICsgbWJfeSpzLT5jLm1iX3N0cmlk ZTsKKyAgICBpbml0X3JlZihjLCBzLT5uZXdfcGljLT5kYXRhLCBzLT5jLmxhc3RfcGljLmRhdGEs IE5VTEwsIDE2Km1iX3gsIDE2Km1iX3ksIDApOwogCi0gICAgYXZfYXNzZXJ0MChzLT5xdWFydGVy X3NhbXBsZT09MCB8fCBzLT5xdWFydGVyX3NhbXBsZT09MSk7CisgICAgYXZfYXNzZXJ0MChzLT5j LnF1YXJ0ZXJfc2FtcGxlPT0wIHx8IHMtPmMucXVhcnRlcl9zYW1wbGU9PTEpOwogCi0gICAgYy0+ cHJlX3BlbmFsdHlfZmFjdG9yICAgID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmxhbWJkYSwgcy0+ bGFtYmRhMiwgYy0+YXZjdHgtPm1lX3ByZV9jbXApOwotICAgIGMtPmN1cnJlbnRfbXZfcGVuYWx0 eT0gYy0+bXZfcGVuYWx0eVtzLT5mX2NvZGVdICsgTUFYX0RNVjsKKyAgICBjLT5wcmVfcGVuYWx0 eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+Yy5sYW1iZGEsIHMtPmMubGFtYmRhMiwg Yy0+YXZjdHgtPm1lX3ByZV9jbXApOworICAgIGMtPmN1cnJlbnRfbXZfcGVuYWx0eSA9IGMtPm12 X3BlbmFsdHlbcy0+Yy5mX2NvZGVdICsgTUFYX0RNVjsKIAogICAgIGdldF9saW1pdHMocywgMTYq bWJfeCwgMTYqbWJfeSwgMCk7CiAgICAgYy0+c2tpcD0wOwpAQCAtMTA4MiwxNiArMTA4MywxNiBA QCBpbnQgZmZfcHJlX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1wZWdFbmNDb250ZXh0ICogcywK ICAgICBpZihQX0xFRlRbMF0gICAgICAgPCAoYy0+eG1pbjw8c2hpZnQpKSBQX0xFRlRbMF0gICAg ICAgPSAoYy0+eG1pbjw8c2hpZnQpOwogCiAgICAgLyogc3BlY2lhbCBjYXNlIGZvciBmaXJzdCBs aW5lICovCi0gICAgaWYgKHMtPmZpcnN0X3NsaWNlX2xpbmUpIHsKKyAgICBpZiAocy0+Yy5maXJz dF9zbGljZV9saW5lKSB7CiAgICAgICAgIGMtPnByZWRfeD0gUF9MRUZUWzBdOwogICAgICAgICBj LT5wcmVkX3k9IFBfTEVGVFsxXTsKICAgICAgICAgUF9UT1BbMF09IFBfVE9QUklHSFRbMF09IFBf TUVESUFOWzBdPQogICAgICAgICBQX1RPUFsxXT0gUF9UT1BSSUdIVFsxXT0gUF9NRURJQU5bMV09 IDA7IC8vRklYTUUKICAgICB9IGVsc2UgewotICAgICAgICBQX1RPUFswXSAgICAgID0gcy0+cF9t dl90YWJsZVt4eSArIHMtPm1iX3N0cmlkZSAgICBdWzBdOwotICAgICAgICBQX1RPUFsxXSAgICAg ID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPm1iX3N0cmlkZSAgICBdWzFdOwotICAgICAgICBQX1RP UFJJR0hUWzBdID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPm1iX3N0cmlkZSAtIDFdWzBdOwotICAg ICAgICBQX1RPUFJJR0hUWzFdID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPm1iX3N0cmlkZSAtIDFd WzFdOworICAgICAgICBQX1RPUFswXSAgICAgID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPmMubWJf c3RyaWRlICAgIF1bMF07CisgICAgICAgIFBfVE9QWzFdICAgICAgPSBzLT5wX212X3RhYmxlW3h5 ICsgcy0+Yy5tYl9zdHJpZGUgICAgXVsxXTsKKyAgICAgICAgUF9UT1BSSUdIVFswXSA9IHMtPnBf bXZfdGFibGVbeHkgKyBzLT5jLm1iX3N0cmlkZSAtIDFdWzBdOworICAgICAgICBQX1RPUFJJR0hU WzFdID0gcy0+cF9tdl90YWJsZVt4eSArIHMtPmMubWJfc3RyaWRlIC0gMV1bMV07CiAgICAgICAg IGlmKFBfVE9QWzFdICAgICAgPCAoYy0+eW1pbjw8c2hpZnQpKSBQX1RPUFsxXSAgICAgPSAoYy0+ eW1pbjw8c2hpZnQpOwogICAgICAgICBpZihQX1RPUFJJR0hUWzBdID4gKGMtPnhtYXg8PHNoaWZ0 KSkgUF9UT1BSSUdIVFswXT0gKGMtPnhtYXg8PHNoaWZ0KTsKICAgICAgICAgaWYoUF9UT1BSSUdI VFsxXSA8IChjLT55bWluPDxzaGlmdCkpIFBfVE9QUklHSFRbMV09IChjLT55bWluPDxzaGlmdCk7 CkBAIC0xMTExLDE0ICsxMTEyLDE0IEBAIGludCBmZl9wcmVfZXN0aW1hdGVfcF9mcmFtZV9tb3Rp b24oTXBlZ0VuY0NvbnRleHQgKiBzLAogICAgIHJldHVybiBkbWluOwogfQogCi1zdGF0aWMgaW50 IGVzdGltYXRlX21vdGlvbl9iKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbWJfeCwgaW50IG1iX3ks CitzdGF0aWMgaW50IGVzdGltYXRlX21vdGlvbl9iKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGlu dCBtYl94LCBpbnQgbWJfeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAo Km12X3RhYmxlKVsyXSwgaW50IHJlZl9pbmRleCwgaW50IGZfY29kZSkKIHsKLSAgICBNb3Rpb25F c3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25z dCBjPSAmcy0+Yy5tZTsKICAgICBpbnQgbXggPSAwLCBteSA9IDAsIGRtaW4gPSAwOwogICAgIGlu dCBQWzEwXVsyXTsKLSAgICBjb25zdCBpbnQgc2hpZnQ9IDErcy0+cXVhcnRlcl9zYW1wbGU7Ci0g ICAgY29uc3QgaW50IG1vdF9zdHJpZGUgPSBzLT5tYl9zdHJpZGU7CisgICAgY29uc3QgaW50IHNo aWZ0PSAxK3MtPmMucXVhcnRlcl9zYW1wbGU7CisgICAgY29uc3QgaW50IG1vdF9zdHJpZGUgPSBz LT5jLm1iX3N0cmlkZTsKICAgICBjb25zdCBpbnQgbW90X3h5ID0gbWJfeSptb3Rfc3RyaWRlICsg bWJfeDsKICAgICBjb25zdCB1aW50OF90ICogY29uc3QgbXZfcGVuYWx0eSA9IGMtPm12X3BlbmFs dHlbZl9jb2RlXSArIE1BWF9ETVY7CiAgICAgaW50IG12X3NjYWxlOwpAQCAtMTEzNCw3ICsxMTM1 LDcgQEAgc3RhdGljIGludCBlc3RpbWF0ZV9tb3Rpb25fYihNcGVnRW5jQ29udGV4dCAqcywgaW50 IG1iX3gsIGludCBtYl95LAogICAgICAgICBpZiAoUF9MRUZUWzBdID4gKGMtPnhtYXggPDwgc2hp ZnQpKSBQX0xFRlRbMF0gPSAoYy0+eG1heCA8PCBzaGlmdCk7CiAKICAgICAgICAgLyogc3BlY2lh bCBjYXNlIGZvciBmaXJzdCBsaW5lICovCi0gICAgICAgIGlmICghcy0+Zmlyc3Rfc2xpY2VfbGlu ZSkgeworICAgICAgICBpZiAoIXMtPmMuZmlyc3Rfc2xpY2VfbGluZSkgewogICAgICAgICAgICAg UF9UT1BbMF0gICAgICA9IG12X3RhYmxlW21vdF94eSAtIG1vdF9zdHJpZGUgICAgXVswXTsKICAg ICAgICAgICAgIFBfVE9QWzFdICAgICAgPSBtdl90YWJsZVttb3RfeHkgLSBtb3Rfc3RyaWRlICAg IF1bMV07CiAgICAgICAgICAgICBQX1RPUFJJR0hUWzBdID0gbXZfdGFibGVbbW90X3h5IC0gbW90 X3N0cmlkZSArIDFdWzBdOwpAQCAtMTE1MCw5ICsxMTUxLDkgQEAgc3RhdGljIGludCBlc3RpbWF0 ZV9tb3Rpb25fYihNcGVnRW5jQ29udGV4dCAqcywgaW50IG1iX3gsIGludCBtYl95LAogICAgICAg ICBjLT5wcmVkX3kgPSBQX0xFRlRbMV07CiAKICAgICAgICAgaWYobXZfdGFibGUgPT0gcy0+Yl9m b3J3X212X3RhYmxlKXsKLSAgICAgICAgICAgIG12X3NjYWxlPSAocy0+cGJfdGltZTw8MTYpIC8g KHMtPnBwX3RpbWU8PHNoaWZ0KTsKKyAgICAgICAgICAgIG12X3NjYWxlPSAocy0+Yy5wYl90aW1l PDwxNikgLyAocy0+Yy5wcF90aW1lPDxzaGlmdCk7CiAgICAgICAgIH1lbHNlewotICAgICAgICAg ICAgbXZfc2NhbGUgPSAoKHMtPnBiX3RpbWUgLSBzLT5wcF90aW1lKSAqICgxIDw8IDE2KSkgLyAo cy0+cHBfdGltZTw8c2hpZnQpOworICAgICAgICAgICAgbXZfc2NhbGUgPSAoKHMtPmMucGJfdGlt ZSAtIHMtPmMucHBfdGltZSkgKiAoMSA8PCAxNikpIC8gKHMtPmMucHBfdGltZTw8c2hpZnQpOwog ICAgICAgICB9CiAKICAgICAgICAgZG1pbiA9IGZmX2VwenNfbW90aW9uX3NlYXJjaChzLCAmbXgs ICZteSwgUCwgMCwgcmVmX2luZGV4LCBzLT5wX212X3RhYmxlLCBtdl9zY2FsZSwgMCwgMTYpOwpA QCAtMTE2MywxNCArMTE2NCwxNCBAQCBzdGF0aWMgaW50IGVzdGltYXRlX21vdGlvbl9iKE1wZWdF bmNDb250ZXh0ICpzLCBpbnQgbWJfeCwgaW50IG1iX3ksCiAgICAgaWYoYy0+YXZjdHgtPm1lX3N1 Yl9jbXAgIT0gYy0+YXZjdHgtPm1iX2NtcCAmJiAhYy0+c2tpcCkKICAgICAgICAgZG1pbj0gZ2V0 X21iX3Njb3JlKHMsIG14LCBteSwgMCwgcmVmX2luZGV4LCAwLCAxNiwgMSk7CiAKLS8vICAgIHMt Pm1iX3R5cGVbbWJfeSpzLT5tYl93aWR0aCArIG1iX3hdPSBtYl90eXBlOworLy8gICAgcy0+bWJf dHlwZVttYl95KnMtPmMubWJfd2lkdGggKyBtYl94XT0gbWJfdHlwZTsKICAgICBtdl90YWJsZVtt b3RfeHldWzBdPSBteDsKICAgICBtdl90YWJsZVttb3RfeHldWzFdPSBteTsKIAogICAgIHJldHVy biBkbWluOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBjaGVja19iaWRpcl9tdihNcGVnRW5jQ29u dGV4dCAqIHMsCitzdGF0aWMgaW5saW5lIGludCBjaGVja19iaWRpcl9tdihNUFZFbmNDb250ZXh0 ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgIGludCBtb3Rpb25fZngsIGludCBtb3Rpb25f ZnksCiAgICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl9ieCwgaW50IG1vdGlvbl9ieSwKICAg ICAgICAgICAgICAgICAgICBpbnQgcHJlZF9meCwgaW50IHByZWRfZnksCkBAIC0xMTgwLDkgKzEx ODEsOSBAQCBzdGF0aWMgaW5saW5lIGludCBjaGVja19iaWRpcl9tdihNcGVnRW5jQ29udGV4dCAq IHMsCiAgICAgLy9GSVhNRSBvcHRpbWl6ZT8KICAgICAvL0ZJWE1FIGJldHRlciBmX2NvZGUgcHJl ZGljdGlvbiAobWF4IG12ICYgZGlzdGFuY2UpCiAgICAgLy9GSVhNRSBwb2ludGVycwotICAgIE1v dGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7Ci0gICAgY29uc3QgdWludDhfdCAqIGNv bnN0IG12X3BlbmFsdHlfZiA9IGMtPm12X3BlbmFsdHlbcy0+Zl9jb2RlXSArIE1BWF9ETVY7IC8v IGZfY29kZSBvZiB0aGUgcHJldiBmcmFtZQotICAgIGNvbnN0IHVpbnQ4X3QgKiBjb25zdCBtdl9w ZW5hbHR5X2IgPSBjLT5tdl9wZW5hbHR5W3MtPmJfY29kZV0gKyBNQVhfRE1WOyAvLyBmX2NvZGUg b2YgdGhlIHByZXYgZnJhbWUKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMu bWU7CisgICAgY29uc3QgdWludDhfdCAqIGNvbnN0IG12X3BlbmFsdHlfZiA9IGMtPm12X3BlbmFs dHlbcy0+Yy5mX2NvZGVdICsgTUFYX0RNVjsgLy8gZl9jb2RlIG9mIHRoZSBwcmV2IGZyYW1lCisg ICAgY29uc3QgdWludDhfdCAqIGNvbnN0IG12X3BlbmFsdHlfYiA9IGMtPm12X3BlbmFsdHlbcy0+ Yy5iX2NvZGVdICsgTUFYX0RNVjsgLy8gZl9jb2RlIG9mIHRoZSBwcmV2IGZyYW1lCiAgICAgaW50 IHN0cmlkZT0gYy0+c3RyaWRlOwogICAgIHVpbnQ4X3QgKmRlc3RfeSA9IGMtPnNjcmF0Y2hwYWQ7 CiAgICAgY29uc3QgdWludDhfdCAqcHRyOwpAQCAtMTE5MywzNCArMTE5NCwzNCBAQCBzdGF0aWMg aW5saW5lIGludCBjaGVja19iaWRpcl9tdihNcGVnRW5jQ29udGV4dCAqIHMsCiAgICAgY29uc3Qg dWludDhfdCAqY29uc3QgKnJlZl9kYXRhICA9IGMtPnJlZlswXTsKICAgICBjb25zdCB1aW50OF90 ICpjb25zdCAqcmVmMl9kYXRhID0gYy0+cmVmWzJdOwogCi0gICAgaWYocy0+cXVhcnRlcl9zYW1w bGUpeworICAgIGlmKHMtPmMucXVhcnRlcl9zYW1wbGUpewogICAgICAgICBkeHkgPSAoKG1vdGlv bl9meSAmIDMpIDw8IDIpIHwgKG1vdGlvbl9meCAmIDMpOwogICAgICAgICBzcmNfeCA9IG1vdGlv bl9meCA+PiAyOwogICAgICAgICBzcmNfeSA9IG1vdGlvbl9meSA+PiAyOwogCiAgICAgICAgIHB0 ciA9IHJlZl9kYXRhWzBdICsgKHNyY195ICogc3RyaWRlKSArIHNyY194OwotICAgICAgICBzLT5x ZHNwLnB1dF9xcGVsX3BpeGVsc190YWJbMF1bZHh5XShkZXN0X3ksIHB0ciwgc3RyaWRlKTsKKyAg ICAgICAgcy0+Yy5xZHNwLnB1dF9xcGVsX3BpeGVsc190YWJbMF1bZHh5XShkZXN0X3ksIHB0ciwg c3RyaWRlKTsKIAogICAgICAgICBkeHkgPSAoKG1vdGlvbl9ieSAmIDMpIDw8IDIpIHwgKG1vdGlv bl9ieCAmIDMpOwogICAgICAgICBzcmNfeCA9IG1vdGlvbl9ieCA+PiAyOwogICAgICAgICBzcmNf eSA9IG1vdGlvbl9ieSA+PiAyOwogCiAgICAgICAgIHB0ciA9IHJlZjJfZGF0YVswXSArIChzcmNf eSAqIHN0cmlkZSkgKyBzcmNfeDsKLSAgICAgICAgcy0+cWRzcC5hdmdfcXBlbF9waXhlbHNfdGFi W3NpemVdW2R4eV0oZGVzdF95LCBwdHIsIHN0cmlkZSk7CisgICAgICAgIHMtPmMucWRzcC5hdmdf cXBlbF9waXhlbHNfdGFiW3NpemVdW2R4eV0oZGVzdF95LCBwdHIsIHN0cmlkZSk7CiAgICAgfWVs c2V7CiAgICAgICAgIGR4eSA9ICgobW90aW9uX2Z5ICYgMSkgPDwgMSkgfCAobW90aW9uX2Z4ICYg MSk7CiAgICAgICAgIHNyY194ID0gbW90aW9uX2Z4ID4+IDE7CiAgICAgICAgIHNyY195ID0gbW90 aW9uX2Z5ID4+IDE7CiAKICAgICAgICAgcHRyID0gcmVmX2RhdGFbMF0gKyAoc3JjX3kgKiBzdHJp ZGUpICsgc3JjX3g7Ci0gICAgICAgIHMtPmhkc3AucHV0X3BpeGVsc190YWJbc2l6ZV1bZHh5XShk ZXN0X3kgICAgLCBwdHIgICAgLCBzdHJpZGUsIGgpOworICAgICAgICBzLT5jLmhkc3AucHV0X3Bp eGVsc190YWJbc2l6ZV1bZHh5XShkZXN0X3kgICAgLCBwdHIgICAgLCBzdHJpZGUsIGgpOwogCiAg ICAgICAgIGR4eSA9ICgobW90aW9uX2J5ICYgMSkgPDwgMSkgfCAobW90aW9uX2J4ICYgMSk7CiAg ICAgICAgIHNyY194ID0gbW90aW9uX2J4ID4+IDE7CiAgICAgICAgIHNyY195ID0gbW90aW9uX2J5 ID4+IDE7CiAKICAgICAgICAgcHRyID0gcmVmMl9kYXRhWzBdICsgKHNyY195ICogc3RyaWRlKSAr IHNyY194OwotICAgICAgICBzLT5oZHNwLmF2Z19waXhlbHNfdGFiW3NpemVdW2R4eV0oZGVzdF95 ICAgICwgcHRyICAgICwgc3RyaWRlLCBoKTsKKyAgICAgICAgcy0+Yy5oZHNwLmF2Z19waXhlbHNf dGFiW3NpemVdW2R4eV0oZGVzdF95ICAgICwgcHRyICAgICwgc3RyaWRlLCBoKTsKICAgICB9CiAK ICAgICBmYm1pbiA9IChtdl9wZW5hbHR5X2ZbbW90aW9uX2Z4LXByZWRfZnhdICsgbXZfcGVuYWx0 eV9mW21vdGlvbl9meS1wcmVkX2Z5XSkqYy0+bWJfcGVuYWx0eV9mYWN0b3IKQEAgLTEyMzUsMTAg KzEyMzYsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgY2hlY2tfYmlkaXJfbXYoTXBlZ0VuY0NvbnRl eHQgKiBzLAogfQogCiAvKiByZWZpbmUgdGhlIGJpZGlyIHZlY3RvcnMgaW4gaHEgbW9kZSBhbmQg cmV0dXJuIHRoZSBzY29yZSBpbiBib3RoIGxxICYgaHEgbW9kZSovCi1zdGF0aWMgaW5saW5lIGlu dCBiaWRpcl9yZWZpbmUoTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgbWJfeCwgaW50IG1iX3kpCitz dGF0aWMgaW5saW5lIGludCBiaWRpcl9yZWZpbmUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50 IG1iX3gsIGludCBtYl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+ bWU7Ci0gICAgY29uc3QgaW50IG1vdF9zdHJpZGUgPSBzLT5tYl9zdHJpZGU7CisgICAgTW90aW9u RXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1lOworICAgIGNvbnN0IGludCBtb3Rfc3RyaWRl ID0gcy0+Yy5tYl9zdHJpZGU7CiAgICAgY29uc3QgaW50IHh5ID0gbWJfeSAqbW90X3N0cmlkZSAr IG1iX3g7CiAgICAgaW50IGZibWluOwogICAgIGludCBwcmVkX2Z4PSBzLT5iX2JpZGlyX2Zvcndf bXZfdGFibGVbeHktMV1bMF07CkBAIC0xMzgyLDE2ICsxMzgzLDE2IEBAIENIRUNLX0JJRElSKC0o YSksLShiKSwtKGMpLC0oZCkpCiAgICAgcmV0dXJuIGZibWluOwogfQogCi1zdGF0aWMgaW5saW5l IGludCBkaXJlY3Rfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50IG1iX3gsIGludCBtYl95 KQorc3RhdGljIGlubGluZSBpbnQgZGlyZWN0X3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz LCBpbnQgbWJfeCwgaW50IG1iX3kpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9 ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAg aW50IFBbMTBdWzJdOwotICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+bWJfc3RyaWRlOwor ICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+Yy5tYl9zdHJpZGU7CiAgICAgY29uc3QgaW50 IG1vdF94eSA9IG1iX3kqbW90X3N0cmlkZSArIG1iX3g7Ci0gICAgY29uc3QgaW50IHNoaWZ0PSAx K3MtPnF1YXJ0ZXJfc2FtcGxlOworICAgIGNvbnN0IGludCBzaGlmdD0gMStzLT5jLnF1YXJ0ZXJf c2FtcGxlOwogICAgIGludCBkbWluLCBpOwotICAgIGNvbnN0IGludCB0aW1lX3BwPSBzLT5wcF90 aW1lOwotICAgIGNvbnN0IGludCB0aW1lX3BiPSBzLT5wYl90aW1lOworICAgIGNvbnN0IGludCB0 aW1lX3BwPSBzLT5jLnBwX3RpbWU7CisgICAgY29uc3QgaW50IHRpbWVfcGI9IHMtPmMucGJfdGlt ZTsKICAgICBpbnQgbXgsIG15LCB4bWluLCB4bWF4LCB5bWluLCB5bWF4OwogICAgIGludDE2X3Qg KCptdl90YWJsZSlbMl09IHMtPmJfZGlyZWN0X212X3RhYmxlOwogCkBAIC0xMzk5LDE4ICsxNDAw LDE4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpcmVjdF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBz LCBpbnQgbWJfeCwgaW50IG1iX3kpCiAgICAgeW1pbj0geG1pbj0oLTMyKT4+c2hpZnQ7CiAgICAg eW1heD0geG1heD0gICAzMT4+c2hpZnQ7CiAKLSAgICBpZiAoSVNfOFg4KHMtPm5leHRfcGljLm1i X3R5cGVbbW90X3h5XSkpIHsKLSAgICAgICAgcy0+bXZfdHlwZT0gTVZfVFlQRV84WDg7CisgICAg aWYgKElTXzhYOChzLT5jLm5leHRfcGljLm1iX3R5cGVbbW90X3h5XSkpIHsKKyAgICAgICAgcy0+ Yy5tdl90eXBlPSBNVl9UWVBFXzhYODsKICAgICB9ZWxzZXsKLSAgICAgICAgcy0+bXZfdHlwZT0g TVZfVFlQRV8xNlgxNjsKKyAgICAgICAgcy0+Yy5tdl90eXBlPSBNVl9UWVBFXzE2WDE2OwogICAg IH0KIAogICAgIGZvcihpPTA7IGk8NDsgaSsrKXsKLSAgICAgICAgaW50IGluZGV4PSBzLT5ibG9j a19pbmRleFtpXTsKKyAgICAgICAgaW50IGluZGV4PSBzLT5jLmJsb2NrX2luZGV4W2ldOwogICAg ICAgICBpbnQgbWluLCBtYXg7CiAKLSAgICAgICAgYy0+Y29fbG9jYXRlZF9tdltpXVswXSA9IHMt Pm5leHRfcGljLm1vdGlvbl92YWxbMF1baW5kZXhdWzBdOwotICAgICAgICBjLT5jb19sb2NhdGVk X212W2ldWzFdID0gcy0+bmV4dF9waWMubW90aW9uX3ZhbFswXVtpbmRleF1bMV07CisgICAgICAg IGMtPmNvX2xvY2F0ZWRfbXZbaV1bMF0gPSBzLT5jLm5leHRfcGljLm1vdGlvbl92YWxbMF1baW5k ZXhdWzBdOworICAgICAgICBjLT5jb19sb2NhdGVkX212W2ldWzFdID0gcy0+Yy5uZXh0X3BpYy5t b3Rpb25fdmFsWzBdW2luZGV4XVsxXTsKICAgICAgICAgYy0+ZGlyZWN0X2Jhc2lzX212W2ldWzBd PSBjLT5jb19sb2NhdGVkX212W2ldWzBdKnRpbWVfcGIvdGltZV9wcCArICgoaSYgMSk8PChzaGlm dCszKSk7CiAgICAgICAgIGMtPmRpcmVjdF9iYXNpc19tdltpXVsxXT0gYy0+Y29fbG9jYXRlZF9t dltpXVsxXSp0aW1lX3BiL3RpbWVfcHAgKyAoKGk+PjEpPDwoc2hpZnQrMykpOwogLy8gICAgICAg IGMtPmRpcmVjdF9iYXNpc19tdlsxXVtpXVswXT0gYy0+Y29fbG9jYXRlZF9tdltpXVswXSoodGlt ZV9wYiAtIHRpbWVfcHApL3RpbWVfcHAgKyAoKGkgJjEpPDwoc2hpZnQrMyk7CkBAIC0xNDIwLDE3 ICsxNDIxLDE3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpcmVjdF9zZWFyY2goTXBlZ0VuY0NvbnRl eHQgKiBzLCBpbnQgbWJfeCwgaW50IG1iX3kpCiAgICAgICAgIG1pbj0gRkZNSU4oYy0+ZGlyZWN0 X2Jhc2lzX212W2ldWzBdLCBjLT5kaXJlY3RfYmFzaXNfbXZbaV1bMF0gLSBjLT5jb19sb2NhdGVk X212W2ldWzBdKT4+c2hpZnQ7CiAgICAgICAgIG1heCs9IDE2Km1iX3ggKyAxOyAvLyArLTEgaXMg Zm9yIHRoZSBzaW1wbGVyIHJvdW5kaW5nCiAgICAgICAgIG1pbis9IDE2Km1iX3ggLSAxOwotICAg ICAgICB4bWF4PSBGRk1JTih4bWF4LCBzLT53aWR0aCAtIG1heCk7CisgICAgICAgIHhtYXg9IEZG TUlOKHhtYXgsIHMtPmMud2lkdGggLSBtYXgpOwogICAgICAgICB4bWluPSBGRk1BWCh4bWluLCAt IDE2ICAgICAtIG1pbik7CiAKICAgICAgICAgbWF4PSBGRk1BWChjLT5kaXJlY3RfYmFzaXNfbXZb aV1bMV0sIGMtPmRpcmVjdF9iYXNpc19tdltpXVsxXSAtIGMtPmNvX2xvY2F0ZWRfbXZbaV1bMV0p Pj5zaGlmdDsKICAgICAgICAgbWluPSBGRk1JTihjLT5kaXJlY3RfYmFzaXNfbXZbaV1bMV0sIGMt PmRpcmVjdF9iYXNpc19tdltpXVsxXSAtIGMtPmNvX2xvY2F0ZWRfbXZbaV1bMV0pPj5zaGlmdDsK ICAgICAgICAgbWF4Kz0gMTYqbWJfeSArIDE7IC8vICstMSBpcyBmb3IgdGhlIHNpbXBsZXIgcm91 bmRpbmcKICAgICAgICAgbWluKz0gMTYqbWJfeSAtIDE7Ci0gICAgICAgIHltYXg9IEZGTUlOKHlt YXgsIHMtPmhlaWdodCAtIG1heCk7CisgICAgICAgIHltYXg9IEZGTUlOKHltYXgsIHMtPmMuaGVp Z2h0IC0gbWF4KTsKICAgICAgICAgeW1pbj0gRkZNQVgoeW1pbiwgLSAxNiAgICAgIC0gbWluKTsK IAotICAgICAgICBpZihzLT5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIGJyZWFrOworICAgICAg ICBpZihzLT5jLm12X3R5cGUgPT0gTVZfVFlQRV8xNlgxNikgYnJlYWs7CiAgICAgfQogCiAgICAg YXZfYXNzZXJ0Mih4bWF4IDw9IDE1ICYmIHltYXggPD0gMTUgJiYgeG1pbiA+PSAtMTYgJiYgeW1p biA+PSAtMTYpOwpAQCAtMTQ1NSw3ICsxNDU2LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZGlyZWN0 X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCBtYl94LCBpbnQgbWJfeSkKICAgICBQX0xF RlRbMV0gPSBhdl9jbGlwKG12X3RhYmxlW21vdF94eSAtIDFdWzFdLCB5bWluICogKDEgPDwgc2hp ZnQpLCB5bWF4IDw8IHNoaWZ0KTsKIAogICAgIC8qIHNwZWNpYWwgY2FzZSBmb3IgZmlyc3QgbGlu ZSAqLwotICAgIGlmICghcy0+Zmlyc3Rfc2xpY2VfbGluZSkgeyAvL0ZJWE1FIG1heWJlIGFsbG93 IHRoaXMgb3ZlciB0aHJlYWQgYm91bmRhcnkgYXMgaXQgaXMgY2xpcHBlZAorICAgIGlmICghcy0+ Yy5maXJzdF9zbGljZV9saW5lKSB7IC8vRklYTUUgbWF5YmUgYWxsb3cgdGhpcyBvdmVyIHRocmVh ZCBib3VuZGFyeSBhcyBpdCBpcyBjbGlwcGVkCiAgICAgICAgIFBfVE9QWzBdICAgICAgPSBhdl9j bGlwKG12X3RhYmxlW21vdF94eSAtIG1vdF9zdHJpZGUgICAgXVswXSwgeG1pbiAqICgxIDw8IHNo aWZ0KSwgeG1heCA8PCBzaGlmdCk7CiAgICAgICAgIFBfVE9QWzFdICAgICAgPSBhdl9jbGlwKG12 X3RhYmxlW21vdF94eSAtIG1vdF9zdHJpZGUgICAgXVsxXSwgeW1pbiAqICgxIDw8IHNoaWZ0KSwg eW1heCA8PCBzaGlmdCk7CiAgICAgICAgIFBfVE9QUklHSFRbMF0gPSBhdl9jbGlwKG12X3RhYmxl W21vdF94eSAtIG1vdF9zdHJpZGUgKyAxXVswXSwgeG1pbiAqICgxIDw8IHNoaWZ0KSwgeG1heCA8 PCBzaGlmdCk7CkBAIC0xNDg0LDQ3ICsxNDg1LDQ3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpcmVj dF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgbWJfeCwgaW50IG1iX3kpCiAgICAgcmV0 dXJuIGRtaW47CiB9CiAKLXZvaWQgZmZfZXN0aW1hdGVfYl9mcmFtZV9tb3Rpb24oTXBlZ0VuY0Nv bnRleHQgKiBzLAordm9pZCBmZl9lc3RpbWF0ZV9iX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0 ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWJfeCwgaW50IG1i X3kpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rp b25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAgaW50IGZtaW4sIGJtaW4sIGRt aW4sIGZibWluLCBiaW1pbiwgZmltaW47CiAgICAgaW50IHR5cGU9MDsKLSAgICBjb25zdCBpbnQg eHkgPSBtYl95KnMtPm1iX3N0cmlkZSArIG1iX3g7Ci0gICAgaW5pdF9yZWYoYywgcy0+bmV3X3Bp Yy0+ZGF0YSwgcy0+bGFzdF9waWMuZGF0YSwKLSAgICAgICAgICAgICBzLT5uZXh0X3BpYy5kYXRh LCAxNiAqIG1iX3gsIDE2ICogbWJfeSwgMik7CisgICAgY29uc3QgaW50IHh5ID0gbWJfeSpzLT5j Lm1iX3N0cmlkZSArIG1iX3g7CisgICAgaW5pdF9yZWYoYywgcy0+bmV3X3BpYy0+ZGF0YSwgcy0+ Yy5sYXN0X3BpYy5kYXRhLAorICAgICAgICAgICAgIHMtPmMubmV4dF9waWMuZGF0YSwgMTYgKiBt Yl94LCAxNiAqIG1iX3ksIDIpOwogCiAgICAgZ2V0X2xpbWl0cyhzLCAxNiptYl94LCAxNiptYl95 LCAxKTsKIAogICAgIGMtPnNraXA9MDsKIAotICAgIGlmIChzLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9NUEVHNCAmJiBzLT5uZXh0X3BpYy5tYnNraXBfdGFibGVbeHldKSB7CisgICAgaWYgKHMt PmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgJiYgcy0+Yy5uZXh0X3BpYy5tYnNraXBf dGFibGVbeHldKSB7CiAgICAgICAgIGludCBzY29yZT0gZGlyZWN0X3NlYXJjaChzLCBtYl94LCBt Yl95KTsgLy9GSVhNRSBqdXN0IGNoZWNrIDAsMAogCiAgICAgICAgIHNjb3JlPSAoKHVuc2lnbmVk KShzY29yZSpzY29yZSArIDEyOCoyNTYpKT4+MTY7CiAgICAgICAgIGMtPm1jX21iX3Zhcl9zdW1f dGVtcCArPSBzY29yZTsKLSAgICAgICAgcy0+bWNfbWJfdmFyW21iX3kqcy0+bWJfc3RyaWRlICsg bWJfeF0gPSBzY29yZTsgLy9GSVhNRSB1c2UgU1NFCi0gICAgICAgIHMtPm1iX3R5cGVbbWJfeSpz LT5tYl9zdHJpZGUgKyBtYl94XT0gQ0FORElEQVRFX01CX1RZUEVfRElSRUNUMDsKKyAgICAgICAg cy0+bWNfbWJfdmFyW21iX3kqcy0+Yy5tYl9zdHJpZGUgKyBtYl94XSA9IHNjb3JlOyAvL0ZJWE1F IHVzZSBTU0UKKyAgICAgICAgcy0+bWJfdHlwZVttYl95KnMtPmMubWJfc3RyaWRlICsgbWJfeF09 IENBTkRJREFURV9NQl9UWVBFX0RJUkVDVDA7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot ICAgIGMtPnBlbmFsdHlfZmFjdG9yICAgID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmxhbWJkYSwg cy0+bGFtYmRhMiwgYy0+YXZjdHgtPm1lX2NtcCk7Ci0gICAgYy0+c3ViX3BlbmFsdHlfZmFjdG9y PSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+bGFtYmRhLCBzLT5sYW1iZGEyLCBjLT5hdmN0eC0+bWVf c3ViX2NtcCk7Ci0gICAgYy0+bWJfcGVuYWx0eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0b3Io cy0+bGFtYmRhLCBzLT5sYW1iZGEyLCBjLT5hdmN0eC0+bWJfY21wKTsKKyAgICBjLT5wZW5hbHR5 X2ZhY3RvciAgICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEy LCBjLT5hdmN0eC0+bWVfY21wKTsKKyAgICBjLT5zdWJfcGVuYWx0eV9mYWN0b3I9IGdldF9wZW5h bHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0eC0+bWVfc3ViX2Nt cCk7CisgICAgYy0+bWJfcGVuYWx0eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+Yy5s YW1iZGEsIHMtPmMubGFtYmRhMiwgYy0+YXZjdHgtPm1iX2NtcCk7CiAKLSAgICBpZiAocy0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpCisgICAgaWYgKHMtPmMuY29kZWNfaWQgPT0gQVZf Q09ERUNfSURfTVBFRzQpCiAgICAgICAgIGRtaW49IGRpcmVjdF9zZWFyY2gocywgbWJfeCwgbWJf eSk7CiAgICAgZWxzZQogICAgICAgICBkbWluPSBJTlRfTUFYOwogCiAvLyBGSVhNRSBwZW5hbHR5 IHN0dWZmIGZvciBub24tTVBFRy00CiAgICAgYy0+c2tpcD0wOwotICAgIGZtaW4gPSBlc3RpbWF0 ZV9tb3Rpb25fYihzLCBtYl94LCBtYl95LCBzLT5iX2ZvcndfbXZfdGFibGUsIDAsIHMtPmZfY29k ZSkgKworICAgIGZtaW4gPSBlc3RpbWF0ZV9tb3Rpb25fYihzLCBtYl94LCBtYl95LCBzLT5iX2Zv cndfbXZfdGFibGUsIDAsIHMtPmMuZl9jb2RlKSArCiAgICAgICAgICAgIDMgKiBjLT5tYl9wZW5h bHR5X2ZhY3RvcjsKIAogICAgIGMtPnNraXA9MDsKLSAgICBibWluID0gZXN0aW1hdGVfbW90aW9u X2IocywgbWJfeCwgbWJfeSwgcy0+Yl9iYWNrX212X3RhYmxlLCAyLCBzLT5iX2NvZGUpICsKKyAg ICBibWluID0gZXN0aW1hdGVfbW90aW9uX2IocywgbWJfeCwgbWJfeSwgcy0+Yl9iYWNrX212X3Rh YmxlLCAyLCBzLT5jLmJfY29kZSkgKwogICAgICAgICAgICAyICogYy0+bWJfcGVuYWx0eV9mYWN0 b3I7CiAgICAgZmZfZGxvZyhjLT5hdmN0eCwgIiAlZCAlZCAiLCBzLT5iX2ZvcndfbXZfdGFibGVb eHldWzBdLCBzLT5iX2ZvcndfbXZfdGFibGVbeHldWzFdKTsKIApAQCAtMTUzNSwxMSArMTUzNiwx MSBAQCB2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90aW9uKE1wZWdFbmNDb250ZXh0ICogcywK ICAgICBpZiAoYy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19JTlRFUkxBQ0VEX01FKSB7 CiAvL0ZJWE1FIG1iIHR5cGUgcGVuYWx0eQogICAgICAgICBjLT5za2lwPTA7Ci0gICAgICAgIGMt PmN1cnJlbnRfbXZfcGVuYWx0eT0gYy0+bXZfcGVuYWx0eVtzLT5mX2NvZGVdICsgTUFYX0RNVjsK KyAgICAgICAgYy0+Y3VycmVudF9tdl9wZW5hbHR5PSBjLT5tdl9wZW5hbHR5W3MtPmMuZl9jb2Rl XSArIE1BWF9ETVY7CiAgICAgICAgIGZpbWluPSBpbnRlcmxhY2VkX3NlYXJjaChzLCAwLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yl9maWVsZF9tdl90YWJsZVswXSwgcy0+ Yl9maWVsZF9zZWxlY3RfdGFibGVbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzLT5iX2ZvcndfbXZfdGFibGVbeHldWzBdLCBzLT5iX2ZvcndfbXZfdGFibGVbeHldWzFdLCAw KTsKLSAgICAgICAgYy0+Y3VycmVudF9tdl9wZW5hbHR5PSBjLT5tdl9wZW5hbHR5W3MtPmJfY29k ZV0gKyBNQVhfRE1WOworICAgICAgICBjLT5jdXJyZW50X212X3BlbmFsdHk9IGMtPm12X3BlbmFs dHlbcy0+Yy5iX2NvZGVdICsgTUFYX0RNVjsKICAgICAgICAgYmltaW49IGludGVybGFjZWRfc2Vh cmNoKHMsIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5iX2ZpZWxkX212 X3RhYmxlWzFdLCBzLT5iX2ZpZWxkX3NlbGVjdF90YWJsZVsxXSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHMtPmJfYmFja19tdl90YWJsZVt4eV1bMF0sIHMtPmJfYmFja19tdl90 YWJsZVt4eV1bMV0sIDApOwpAQCAtMTU3Myw3ICsxNTc0LDcgQEAgdm9pZCBmZl9lc3RpbWF0ZV9i X2ZyYW1lX21vdGlvbihNcGVnRW5jQ29udGV4dCAqIHMsCiAKICAgICAgICAgc2NvcmU9ICgodW5z aWduZWQpKHNjb3JlKnNjb3JlICsgMTI4KjI1NikpPj4xNjsKICAgICAgICAgYy0+bWNfbWJfdmFy X3N1bV90ZW1wICs9IHNjb3JlOwotICAgICAgICBzLT5tY19tYl92YXJbbWJfeSpzLT5tYl9zdHJp ZGUgKyBtYl94XSA9IHNjb3JlOyAvL0ZJWE1FIHVzZSBTU0UKKyAgICAgICAgcy0+bWNfbWJfdmFy W21iX3kqcy0+Yy5tYl9zdHJpZGUgKyBtYl94XSA9IHNjb3JlOyAvL0ZJWE1FIHVzZSBTU0UKICAg ICB9CiAKICAgICBpZihjLT5hdmN0eC0+bWJfZGVjaXNpb24gPiBGRl9NQl9ERUNJU0lPTl9TSU1Q TEUpewpAQCAtMTU4NywzOSArMTU4OCwzOSBAQCB2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90 aW9uKE1wZWdFbmNDb250ZXh0ICogcywKICAgICAgICAgfQogICAgICAgICAgLy9GSVhNRSBzb21l dGhpbmcgc21hcnRlcgogICAgICAgICBpZihkbWluPjI1NioyNTYqMTYpIHR5cGUmPSB+Q0FORElE QVRFX01CX1RZUEVfRElSRUNUOyAvL2RvIG5vdCB0cnkgZGlyZWN0IG1vZGUgaWYgaXQgaXMgaW52 YWxpZCBmb3IgdGhpcyBNQgotICAgICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf TVBFRzQgJiYgdHlwZSZDQU5ESURBVEVfTUJfVFlQRV9ESVJFQ1QgJiYKKyAgICAgICAgaWYgKHMt PmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgJiYgdHlwZSZDQU5ESURBVEVfTUJfVFlQ RV9ESVJFQ1QgJiYKICAgICAgICAgICAgIHMtPm1wdl9mbGFncyAmIEZGX01QVl9GTEFHX01WMCAm JiAqKHVpbnQzMl90KilzLT5iX2RpcmVjdF9tdl90YWJsZVt4eV0pCiAgICAgICAgICAgICB0eXBl IHw9IENBTkRJREFURV9NQl9UWVBFX0RJUkVDVDA7CiAgICAgfQogCi0gICAgcy0+bWJfdHlwZVtt Yl95KnMtPm1iX3N0cmlkZSArIG1iX3hdPSB0eXBlOworICAgIHMtPm1iX3R5cGVbbWJfeSpzLT5j Lm1iX3N0cmlkZSArIG1iX3hdPSB0eXBlOwogfQogCiAvKiBmaW5kIGJlc3QgZl9jb2RlIGZvciBN RSB3aGljaCBkbyB1bmxpbWl0ZWQgc2VhcmNoZXMgKi8KIGludCBmZl9nZXRfYmVzdF9mY29kZShN UFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3QgaW50MTZfdCAoKm12X3RhYmxlKVsyXSwg aW50IHR5cGUpCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKLSAgICBN b3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOworICAgIE1QVkVuY0NvbnRleHQgKmNv bnN0IHMgPSAmbS0+czsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPmMubWU7 CiAKICAgICBpZiAoYy0+bW90aW9uX2VzdCAhPSBGRl9NRV9aRVJPKSB7CiAgICAgICAgIGludCBz Y29yZVs4XTsKLSAgICAgICAgaW50IGksIHksIHJhbmdlID0gYy0+YXZjdHgtPm1lX3JhbmdlID8g Yy0+YXZjdHgtPm1lX3JhbmdlIDogKElOVF9NQVgvMik7CisgICAgICAgIGludCBpLCByYW5nZSA9 IGMtPmF2Y3R4LT5tZV9yYW5nZSA/IGMtPmF2Y3R4LT5tZV9yYW5nZSA6IChJTlRfTUFYLzIpOwog ICAgICAgICBjb25zdCB1aW50OF90ICogZmNvZGVfdGFiID0gbS0+ZmNvZGVfdGFiOwogICAgICAg ICBpbnQgYmVzdF9mY29kZT0tMTsKICAgICAgICAgaW50IGJlc3Rfc2NvcmU9LTEwMDAwMDAwOwog Ci0gICAgICAgIGlmIChzLT5tc21wZWc0X3ZlcnNpb24gIT0gTVNNUDRfVU5VU0VEKQorICAgICAg ICBpZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gIT0gTVNNUDRfVU5VU0VEKQogICAgICAgICAgICAg cmFuZ2U9IEZGTUlOKHJhbmdlLCAxNik7Ci0gICAgICAgIGVsc2UgaWYgKHMtPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX01QRUcyVklERU8gJiYKKyAgICAgICAgZWxzZSBpZiAocy0+Yy5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPICYmCiAgICAgICAgICAgICAgICAgIGMtPmF2Y3R4 LT5zdHJpY3Rfc3RkX2NvbXBsaWFuY2UgPj0gRkZfQ09NUExJQU5DRV9OT1JNQUwpCiAgICAgICAg ICAgICByYW5nZT0gRkZNSU4ocmFuZ2UsIDI1Nik7CiAKLSAgICAgICAgZm9yKGk9MDsgaTw4OyBp KyspIHNjb3JlW2ldPSBzLT5tYl9udW0qKDgtaSk7CisgICAgICAgIGZvcihpPTA7IGk8ODsgaSsr KSBzY29yZVtpXT0gcy0+Yy5tYl9udW0qKDgtaSk7CiAKLSAgICAgICAgZm9yKHk9MDsgeTxzLT5t Yl9oZWlnaHQ7IHkrKyl7CisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcy0+Yy5tYl9oZWln aHQ7IHkrKykgewogICAgICAgICAgICAgaW50IHg7Ci0gICAgICAgICAgICBpbnQgeHk9IHkqcy0+ bWJfc3RyaWRlOwotICAgICAgICAgICAgZm9yKHg9MDsgeDxzLT5tYl93aWR0aDsgeCsrLCB4eSsr KXsKKyAgICAgICAgICAgIGludCB4eT0geSpzLT5jLm1iX3N0cmlkZTsKKyAgICAgICAgICAgIGZv cih4PTA7IHg8cy0+Yy5tYl93aWR0aDsgeCsrLCB4eSsrKXsKICAgICAgICAgICAgICAgICBpZihz LT5tYl90eXBlW3h5XSAmIHR5cGUpewogICAgICAgICAgICAgICAgICAgICBpbnQgbXg9IG12X3Rh YmxlW3h5XVswXTsKICAgICAgICAgICAgICAgICAgICAgaW50IG15PSBtdl90YWJsZVt4eV1bMV07 CkBAIC0xNjMxLDcgKzE2MzIsNyBAQCBpbnQgZmZfZ2V0X2Jlc3RfZmNvZGUoTVBWTWFpbkVuY0Nv bnRleHQgKmNvbnN0IG0sIGNvbnN0IGludDE2X3QgKCptdl90YWJsZSlbMl0sCiAgICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICBmb3Ioaj0wOyBq PGZjb2RlICYmIGo8ODsgaisrKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5waWN0 X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQiB8fAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPm1jX21iX3Zhclt4eV0gPCBzLT5tYl92YXJbeHldKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNjb3JlW2pdLT0gMTcwOwogICAgICAgICAgICAgICAgICAgICB9 CkBAIC0xNjUyLDQyICsxNjUzLDQyIEBAIGludCBmZl9nZXRfYmVzdF9mY29kZShNUFZNYWluRW5j Q29udGV4dCAqY29uc3QgbSwgY29uc3QgaW50MTZfdCAoKm12X3RhYmxlKVsyXSwKICAgICB9CiB9 CiAKLXZvaWQgZmZfZml4X2xvbmdfcF9tdnMoTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgdHlwZSkK K3ZvaWQgZmZfZml4X2xvbmdfcF9tdnMoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IHR5cGUp CiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKLSAgICBjb25zdCBp bnQgZl9jb2RlPSBzLT5mX2NvZGU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZz LT5jLm1lOworICAgIGNvbnN0IGludCBmX2NvZGU9IHMtPmMuZl9jb2RlOwogICAgIGludCB5LCBy YW5nZTsKLSAgICBhdl9hc3NlcnQwKHMtPnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX1ApOwor ICAgIGF2X2Fzc2VydDAocy0+Yy5waWN0X3R5cGU9PUFWX1BJQ1RVUkVfVFlQRV9QKTsKIAotICAg IHJhbmdlID0gKCgocy0+b3V0X2Zvcm1hdCA9PSBGTVRfTVBFRzEgfHwgcy0+bXNtcGVnNF92ZXJz aW9uICE9IE1TTVA0X1VOVVNFRCkgPyA4IDogMTYpIDw8IGZfY29kZSk7CisgICAgcmFuZ2UgPSAo KChzLT5jLm91dF9mb3JtYXQgPT0gRk1UX01QRUcxIHx8IHMtPmMubXNtcGVnNF92ZXJzaW9uICE9 IE1TTVA0X1VOVVNFRCkgPyA4IDogMTYpIDw8IGZfY29kZSk7CiAKLSAgICBhdl9hc3NlcnQwKHJh bmdlIDw9IDE2IHx8IHMtPm1zbXBlZzRfdmVyc2lvbiA9PSBNU01QNF9VTlVTRUQpOwotICAgIGF2 X2Fzc2VydDAocmFuZ2UgPD0yNTYgfHwgIShzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVH MlZJREVPICYmIGMtPmF2Y3R4LT5zdHJpY3Rfc3RkX2NvbXBsaWFuY2UgPj0gRkZfQ09NUExJQU5D RV9OT1JNQUwpKTsKKyAgICBhdl9hc3NlcnQwKHJhbmdlIDw9IDE2IHx8IHMtPmMubXNtcGVnNF92 ZXJzaW9uID09IE1TTVA0X1VOVVNFRCk7CisgICAgYXZfYXNzZXJ0MChyYW5nZSA8PTI1NiB8fCAh KHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzJWSURFTyAmJiBjLT5hdmN0eC0+c3Ry aWN0X3N0ZF9jb21wbGlhbmNlID49IEZGX0NPTVBMSUFOQ0VfTk9STUFMKSk7CiAKICAgICBpZihj LT5hdmN0eC0+bWVfcmFuZ2UgJiYgcmFuZ2UgPiBjLT5hdmN0eC0+bWVfcmFuZ2UpIHJhbmdlPSBj LT5hdmN0eC0+bWVfcmFuZ2U7CiAKICAgICBpZiAoYy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNf RkxBR180TVYpIHsKLSAgICAgICAgY29uc3QgaW50IHdyYXA9IHMtPmI4X3N0cmlkZTsKKyAgICAg ICAgY29uc3QgaW50IHdyYXA9IHMtPmMuYjhfc3RyaWRlOwogCiAgICAgICAgIC8qIGNsaXAgLyBj b252ZXJ0IHRvIGludHJhIDh4OCB0eXBlIE1WcyAqLwotICAgICAgICBmb3IoeT0wOyB5PHMtPm1i X2hlaWdodDsgeSsrKXsKKyAgICAgICAgZm9yKHk9MDsgeTxzLT5jLm1iX2hlaWdodDsgeSsrKXsK ICAgICAgICAgICAgIGludCB4eT0geSoyKndyYXA7Ci0gICAgICAgICAgICBpbnQgaT0geSpzLT5t Yl9zdHJpZGU7CisgICAgICAgICAgICBpbnQgaT0geSpzLT5jLm1iX3N0cmlkZTsKICAgICAgICAg ICAgIGludCB4OwogCi0gICAgICAgICAgICBmb3IoeD0wOyB4PHMtPm1iX3dpZHRoOyB4Kyspewor ICAgICAgICAgICAgZm9yKHg9MDsgeDxzLT5jLm1iX3dpZHRoOyB4KyspewogICAgICAgICAgICAg ICAgIGlmKHMtPm1iX3R5cGVbaV0mQ0FORElEQVRFX01CX1RZUEVfSU5URVI0Vil7CiAgICAgICAg ICAgICAgICAgICAgIGludCBibG9jazsKICAgICAgICAgICAgICAgICAgICAgZm9yKGJsb2NrPTA7 IGJsb2NrPDQ7IGJsb2NrKyspewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZj0gKGJs b2NrJiAxKSArIChibG9jaz4+MSkqd3JhcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBt eCA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVsgeHkgKyBvZmYgXVswXTsKLSAgICAgICAgICAg ICAgICAgICAgICAgIGludCBteSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVsgeHkgKyBvZmYg XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBteCA9IHMtPmMuY3VyX3BpYy5tb3Rp b25fdmFsWzBdWyB4eSArIG9mZiBdWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IG15 ID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bIHh5ICsgb2ZmIF1bMV07CiAKICAgICAgICAg ICAgICAgICAgICAgICAgIGlmKCAgIG14ID49cmFuZ2UgfHwgbXggPC1yYW5nZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgfHwgbXkgPj1yYW5nZSB8fCBteSA8LXJhbmdlKXsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzLT5tYl90eXBlW2ldICY9IH5DQU5ESURBVEVfTUJfVFlQRV9J TlRFUjRWOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm1iX3R5cGVbaV0gfD0gdHlw ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jdXJfcGljLm1iX3R5cGVbaV0gPSB0 eXBlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuY3VyX3BpYy5tYl90eXBlW2ld ID0gdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgIH0KQEAgLTE3MDEsMTQgKzE3MDIsMTQgQEAgdm9pZCBmZl9maXhf bG9uZ19wX212cyhNcGVnRW5jQ29udGV4dCAqIHMsIGludCB0eXBlKQogLyoqCiAgKiBAcGFyYW0g dHJ1bmNhdGUgMSBmb3IgdHJ1bmNhdGlvbiwgMCBmb3IgdXNpbmcgaW50cmEKICAqLwotdm9pZCBm Zl9maXhfbG9uZ19tdnMoTXBlZ0VuY0NvbnRleHQgKiBzLCB1aW50OF90ICpmaWVsZF9zZWxlY3Rf dGFibGUsIGludCBmaWVsZF9zZWxlY3QsCit2b2lkIGZmX2ZpeF9sb25nX212cyhNUFZFbmNDb250 ZXh0ICpjb25zdCBzLCB1aW50OF90ICpmaWVsZF9zZWxlY3RfdGFibGUsIGludCBmaWVsZF9zZWxl Y3QsCiAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICgqbXZfdGFibGUpWzJdLCBpbnQgZl9j b2RlLCBpbnQgdHlwZSwgaW50IHRydW5jYXRlKQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBj b25zdCBjPSAmcy0+bWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1l OwogICAgIGludCB5LCBoX3JhbmdlLCB2X3JhbmdlOwogCiAgICAgLy8gUkFMOiA4IGluIE1QRUct MSwgMTYgaW4gTVBFRy00Ci0gICAgaW50IHJhbmdlID0gKCgocy0+b3V0X2Zvcm1hdCA9PSBGTVRf TVBFRzEgfHwgcy0+bXNtcGVnNF92ZXJzaW9uICE9IE1TTVA0X1VOVVNFRCkgPyA4IDogMTYpIDw8 IGZfY29kZSk7CisgICAgaW50IHJhbmdlID0gKCgocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9NUEVH MSB8fCBzLT5jLm1zbXBlZzRfdmVyc2lvbiAhPSBNU01QNF9VTlVTRUQpID8gOCA6IDE2KSA8PCBm X2NvZGUpOwogCiAgICAgaWYoYy0+YXZjdHgtPm1lX3JhbmdlICYmIHJhbmdlID4gYy0+YXZjdHgt Pm1lX3JhbmdlKSByYW5nZT0gYy0+YXZjdHgtPm1lX3JhbmdlOwogCkBAIC0xNzE2LDEwICsxNzE3 LDEwIEBAIHZvaWQgZmZfZml4X2xvbmdfbXZzKE1wZWdFbmNDb250ZXh0ICogcywgdWludDhfdCAq ZmllbGRfc2VsZWN0X3RhYmxlLCBpbnQgZmllbGRfCiAgICAgdl9yYW5nZT0gZmllbGRfc2VsZWN0 X3RhYmxlID8gcmFuZ2U+PjEgOiByYW5nZTsKIAogICAgIC8qIGNsaXAgLyBjb252ZXJ0IHRvIGlu dHJhIDE2eDE2IHR5cGUgTVZzICovCi0gICAgZm9yKHk9MDsgeTxzLT5tYl9oZWlnaHQ7IHkrKyl7 CisgICAgZm9yKHk9MDsgeTxzLT5jLm1iX2hlaWdodDsgeSsrKXsKICAgICAgICAgaW50IHg7Ci0g ICAgICAgIGludCB4eT0geSpzLT5tYl9zdHJpZGU7Ci0gICAgICAgIGZvcih4PTA7IHg8cy0+bWJf d2lkdGg7IHgrKyl7CisgICAgICAgIGludCB4eT0geSpzLT5jLm1iX3N0cmlkZTsKKyAgICAgICAg Zm9yKHg9MDsgeDxzLT5jLm1iX3dpZHRoOyB4KyspewogICAgICAgICAgICAgaWYgKHMtPm1iX3R5 cGVbeHldICYgdHlwZSl7ICAgIC8vIFJBTDogInR5cGUiIHRlc3QgYWRkZWQuLi4KICAgICAgICAg ICAgICAgICBpZiAoIWZpZWxkX3NlbGVjdF90YWJsZSB8fCBmaWVsZF9zZWxlY3RfdGFibGVbeHld ID09IGZpZWxkX3NlbGVjdCkgewogICAgICAgICAgICAgICAgICAgICBpZiggICBtdl90YWJsZVt4 eV1bMF0gPj1oX3JhbmdlIHx8IG12X3RhYmxlW3h5XVswXSA8LWhfcmFuZ2UKZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvbW90aW9uX2VzdC5oIGIvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmgKaW5kZXgg NWZhOTYxNjFjNi4uMTY5NzVhYmZlMSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tb3Rpb25fZXN0 LmgKKysrIGIvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNs dWRlICJtZV9jbXAuaCIKICNpbmNsdWRlICJxcGVsZHNwLmgiCiAKLXN0cnVjdCBNcGVnRW5jQ29u dGV4dDsKK3R5cGVkZWYgc3RydWN0IE1QVkVuY0NvbnRleHQgTVBWRW5jQ29udGV4dDsKIHR5cGVk ZWYgc3RydWN0IE1QVk1haW5FbmNDb250ZXh0IE1QVk1haW5FbmNDb250ZXh0OwogCiAjaWYgQVJD SF9JQTY0IC8vIExpbWl0IHN0YXRpYyBhcnJheXMgdG8gYXZvaWQgZ2NjIGZhaWxpbmcgInNob3J0 IGRhdGEgc2VnbWVudCBvdmVyZmxvd2VkIgpAQCAtMTAwLDcgKzEwMCw3IEBAIHR5cGVkZWYgc3Ry dWN0IE1vdGlvbkVzdENvbnRleHQgewogICAgIHFwZWxfbWNfZnVuYygqcXBlbF9hdmcpWzE2XTsK ICAgICBjb25zdCB1aW50OF90ICgqbXZfcGVuYWx0eSlbTUFYX0RNViAqIDIgKyAxXTsgLy8vPCBi aXQgYW1vdW50IG5lZWRlZCB0byBlbmNvZGUgYSBNVgogICAgIGNvbnN0IHVpbnQ4X3QgKmN1cnJl bnRfbXZfcGVuYWx0eTsKLSAgICBpbnQgKCpzdWJfbW90aW9uX3NlYXJjaCkoc3RydWN0IE1wZWdF bmNDb250ZXh0ICpzLAorICAgIGludCAoKnN1Yl9tb3Rpb25fc2VhcmNoKShNUFZFbmNDb250ZXh0 ICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm14X3B0ciwgaW50ICpteV9w dHIsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4 LCBpbnQgcmVmX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwg aW50IGgpOwpAQCAtMTIyLDI3ICsxMjIsMjcgQEAgc3RhdGljIGlubGluZSBpbnQgZmZfaDI2M19y b3VuZF9jaHJvbWEoaW50IHgpCiBpbnQgZmZfbWVfaW5pdChNb3Rpb25Fc3RDb250ZXh0ICpjLCBz dHJ1Y3QgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IE1FQ21wQ29udGV4dCAqbWVjYywgaW50IG1wdmVuYyk7CiAKLXZvaWQgZmZfbWVfaW5pdF9waWMo c3RydWN0IE1wZWdFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfbWVfaW5pdF9waWMoTVBWRW5jQ29u dGV4dCAqcyk7CiAKLXZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oc3RydWN0IE1wZWdF bmNDb250ZXh0ICpzLCBpbnQgbWJfeCwgaW50IG1iX3kpOwotdm9pZCBmZl9lc3RpbWF0ZV9iX2Zy YW1lX21vdGlvbihzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnMsIGludCBtYl94LCBpbnQgbWJfeSk7 Cit2b2lkIGZmX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRleHQgKnMsIGludCBt Yl94LCBpbnQgbWJfeSk7Cit2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90aW9uKE1QVkVuY0Nv bnRleHQgKnMsIGludCBtYl94LCBpbnQgbWJfeSk7CiAKLWludCBmZl9wcmVfZXN0aW1hdGVfcF9m cmFtZV9tb3Rpb24oc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAoraW50IGZmX3ByZV9lc3RpbWF0 ZV9wX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0ICpzLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgbWJfeCwgaW50IG1iX3kpOwogCi1pbnQgZmZfZXB6c19tb3Rpb25f c2VhcmNoKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywgaW50ICpteF9wdHIsIGludCAqbXlfcHRy LAoraW50IGZmX2VwenNfbW90aW9uX3NlYXJjaChNUFZFbmNDb250ZXh0ICpzLCBpbnQgKm14X3B0 ciwgaW50ICpteV9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBQWzEwXVsyXSwg aW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLCBpbnQgcmVmX212X3NjYWxlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgpOwogCi1pbnQgZmZfZ2V0X21iX3Njb3Jl KHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQgbXksIGludCBzcmNfaW5kZXgs CitpbnQgZmZfZ2V0X21iX3Njb3JlKE1QVkVuY0NvbnRleHQgKnMsIGludCBteCwgaW50IG15LCBp bnQgc3JjX2luZGV4LAogICAgICAgICAgICAgICAgICAgICBpbnQgcmVmX2luZGV4LCBpbnQgc2l6 ZSwgaW50IGgsIGludCBhZGRfcmF0ZSk7CiAKIGludCBmZl9nZXRfYmVzdF9mY29kZShNUFZNYWlu RW5jQ29udGV4dCAqbSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICgqbXZf dGFibGUpWzJdLCBpbnQgdHlwZSk7CiAKLXZvaWQgZmZfZml4X2xvbmdfcF9tdnMoc3RydWN0IE1w ZWdFbmNDb250ZXh0ICpzLCBpbnQgdHlwZSk7Ci12b2lkIGZmX2ZpeF9sb25nX212cyhzdHJ1Y3Qg TXBlZ0VuY0NvbnRleHQgKnMsIHVpbnQ4X3QgKmZpZWxkX3NlbGVjdF90YWJsZSwKK3ZvaWQgZmZf Zml4X2xvbmdfcF9tdnMoTVBWRW5jQ29udGV4dCAqcywgaW50IHR5cGUpOwordm9pZCBmZl9maXhf bG9uZ19tdnMoTVBWRW5jQ29udGV4dCAqcywgdWludDhfdCAqZmllbGRfc2VsZWN0X3RhYmxlLAog ICAgICAgICAgICAgICAgICAgICAgaW50IGZpZWxkX3NlbGVjdCwgaW50MTZfdCAoKm12X3RhYmxl KVsyXSwgaW50IGZfY29kZSwKICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlLCBpbnQgdHJ1 bmNhdGUpOwogCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21vdGlvbl9lc3RfdGVtcGxhdGUuYyBi L2xpYmF2Y29kZWMvbW90aW9uX2VzdF90ZW1wbGF0ZS5jCmluZGV4IDU0OThmOWM5ODIuLjdjN2U2 NDU2MjUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbW90aW9uX2VzdF90ZW1wbGF0ZS5jCisrKyBi L2xpYmF2Y29kZWMvbW90aW9uX2VzdF90ZW1wbGF0ZS5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8K IAogI2luY2x1ZGUgImxpYmF2dXRpbC9xc29ydC5oIgotI2luY2x1ZGUgIm1wZWd2aWRlby5oIgor I2luY2x1ZGUgIm1wZWd2aWRlb2VuYy5oIgogCiAvL0xldCB1cyBob3BlIGdjYyB3aWxsIHJlbW92 ZSB0aGUgdW51c2VkIHZhcnMgLi4uKGdjYyAzLjIuMiBzZWVtcyB0byBkbyBpdCAuLi4pCiAjZGVm aW5lIExPQURfQ09NTU9OXApAQCAtNDcsMTIgKzQ3LDEyIEBACiAgICAgQ09QWTNfSUZfTFQoZG1p biwgZCwgYngsIGh4LCBieSwgaHkpXAogfQogCi1zdGF0aWMgaW50IGhwZWxfbW90aW9uX3NlYXJj aChNcGVnRW5jQ29udGV4dCAqIHMsCitzdGF0aWMgaW50IGhwZWxfbW90aW9uX3NlYXJjaChNUFZF bmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAqbXhfcHRyLCBpbnQgKm15X3B0ciwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgpCiB7Ci0gICAgTW90aW9uRXN0Q29u dGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0g JnMtPmMubWU7CiAgICAgY29uc3QgaW50IG14ID0gKm14X3B0cjsKICAgICBjb25zdCBpbnQgbXkg PSAqbXlfcHRyOwogICAgIGNvbnN0IGludCBwZW5hbHR5X2ZhY3Rvcj0gYy0+c3ViX3BlbmFsdHlf ZmFjdG9yOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHN0YXRpYyBpbnQgaHBlbF9tb3Rpb25fc2VhcmNo KE1wZWdFbmNDb250ZXh0ICogcywKICAgICByZXR1cm4gZG1pbjsKIH0KIAotc3RhdGljIGludCBu b19zdWJfbW90aW9uX3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsCitzdGF0aWMgaW50IG5vX3N1 Yl9tb3Rpb25fc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgaW50ICpt eF9wdHIsIGludCAqbXlfcHRyLCBpbnQgZG1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgaCkKQEAgLTE2MiwxMSArMTYyLDExIEBAIHN0 YXRpYyBpbnQgbm9fc3ViX21vdGlvbl9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLAogICAgIHJl dHVybiBkbWluOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBnZXRfbWJfc2NvcmUoTXBlZ0VuY0Nv bnRleHQgKnMsIGludCBteCwgaW50IG15LAorc3RhdGljIGlubGluZSBpbnQgZ2V0X21iX3Njb3Jl KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCBteCwgaW50IG15LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsIGludCBzaXplLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoLCBpbnQgYWRkX3JhdGUpCiB7Ci0g ICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250 ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAgY29uc3QgaW50IHBlbmFsdHlfZmFjdG9yPSBj LT5tYl9wZW5hbHR5X2ZhY3RvcjsKICAgICBjb25zdCBpbnQgZmxhZ3M9IGMtPm1iX2ZsYWdzOwog ICAgIGNvbnN0IGludCBxcGVsPSBmbGFncyAmIEZMQUdfUVBFTDsKQEAgLTE4OSw3ICsxODksNyBA QCBzdGF0aWMgaW5saW5lIGludCBnZXRfbWJfc2NvcmUoTXBlZ0VuY0NvbnRleHQgKnMsIGludCBt eCwgaW50IG15LAogICAgIHJldHVybiBkOwogfQogCi1pbnQgZmZfZ2V0X21iX3Njb3JlKE1wZWdF bmNDb250ZXh0ICpzLCBpbnQgbXgsIGludCBteSwgaW50IHNyY19pbmRleCwKK2ludCBmZl9nZXRf bWJfc2NvcmUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG14LCBpbnQgbXksIGludCBzcmNf aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIGludCByZWZfaW5kZXgsIGludCBzaXplLCBpbnQg aCwgaW50IGFkZF9yYXRlKQogewogICAgIHJldHVybiBnZXRfbWJfc2NvcmUocywgbXgsIG15LCBz cmNfaW5kZXgsIHJlZl9pbmRleCwgc2l6ZSwgaCwgYWRkX3JhdGUpOwpAQCAtMjA0LDEyICsyMDQs MTIgQEAgaW50IGZmX2dldF9tYl9zY29yZShNcGVnRW5jQ29udGV4dCAqcywgaW50IG14LCBpbnQg bXksIGludCBzcmNfaW5kZXgsCiAgICAgQ09QWTNfSUZfTFQoZG1pbiwgZCwgYngsIGh4LCBieSwg aHkpXAogfQogCi1zdGF0aWMgaW50IHFwZWxfbW90aW9uX3NlYXJjaChNcGVnRW5jQ29udGV4dCAq IHMsCitzdGF0aWMgaW50IHFwZWxfbW90aW9uX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbXhfcHRyLCBpbnQgKm15 X3B0ciwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNy Y19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgc2l6ZSwgaW50IGgpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZz LT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAgY29u c3QgaW50IG14ID0gKm14X3B0cjsKICAgICBjb25zdCBpbnQgbXkgPSAqbXlfcHRyOwogICAgIGNv bnN0IGludCBwZW5hbHR5X2ZhY3Rvcj0gYy0+c3ViX3BlbmFsdHlfZmFjdG9yOwpAQCAtMjU2LDcg KzI1Niw3IEBAIHN0YXRpYyBpbnQgcXBlbF9tb3Rpb25fc2VhcmNoKE1wZWdFbmNDb250ZXh0ICog cywKICAgICAgICAgaW50IGJlc3RfcG9zWzhdWzJdOwogCiAgICAgICAgIG1lbXNldChiZXN0LCA2 NCwgc2l6ZW9mKGludCkqOCk7Ci0gICAgICAgIGlmKHMtPm1lLmRpYV9zaXplPj0yKXsKKyAgICAg ICAgaWYocy0+Yy5tZS5kaWFfc2l6ZT49Mil7CiAgICAgICAgICAgICBjb25zdCBpbnQgdGw9IHNj b3JlX21hcFsoaW5kZXgtKDE8PE1FX01BUF9TSElGVCktMSkmKE1FX01BUF9TSVpFLTEpXTsKICAg ICAgICAgICAgIGNvbnN0IGludCBibD0gc2NvcmVfbWFwWyhpbmRleCsoMTw8TUVfTUFQX1NISUZU KS0xKSYoTUVfTUFQX1NJWkUtMSldOwogICAgICAgICAgICAgY29uc3QgaW50IHRyPSBzY29yZV9t YXBbKGluZGV4LSgxPDxNRV9NQVBfU0hJRlQpKzEpJihNRV9NQVBfU0laRS0xKV07CkBAIC00MDMs MjEgKzQwMywyMSBAQCBzdGF0aWMgaW50IHFwZWxfbW90aW9uX3NlYXJjaChNcGVnRW5jQ29udGV4 dCAqIHMsCiB9CiAKICNkZWZpbmUgY2hlY2soeCx5LFMsdilcCi1pZiggKHgpPCh4bWluPDwoUykp ICkgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIiVkICVkICVkICVkICVkIHhtaW4iICN2LCB4 bWluLCAoeCksICh5KSwgcy0+bWJfeCwgcy0+bWJfeSk7XAotaWYoICh4KT4oeG1heDw8KFMpKSAp IGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICIlZCAlZCAlZCAlZCAlZCB4bWF4IiAjdiwgeG1h eCwgKHgpLCAoeSksIHMtPm1iX3gsIHMtPm1iX3kpO1wKLWlmKCAoeSk8KHltaW48PChTKSkgKSBh dl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiJWQgJWQgJWQgJWQgJWQgeW1pbiIgI3YsIHltaW4s ICh4KSwgKHkpLCBzLT5tYl94LCBzLT5tYl95KTtcCi1pZiggKHkpPih5bWF4PDwoUykpICkgYXZf bG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIiVkICVkICVkICVkICVkIHltYXgiICN2LCB5bWF4LCAo eCksICh5KSwgcy0+bWJfeCwgcy0+bWJfeSk7XAoraWYoICh4KTwoeG1pbjw8KFMpKSApIGF2X2xv ZyhOVUxMLCBBVl9MT0dfRVJST1IsICIlZCAlZCAlZCAlZCAlZCB4bWluIiAjdiwgeG1pbiwgKHgp LCAoeSksIHMtPmMubWJfeCwgcy0+Yy5tYl95KTtcCitpZiggKHgpPih4bWF4PDwoUykpICkgYXZf bG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIiVkICVkICVkICVkICVkIHhtYXgiICN2LCB4bWF4LCAo eCksICh5KSwgcy0+Yy5tYl94LCBzLT5jLm1iX3kpO1wKK2lmKCAoeSk8KHltaW48PChTKSkgKSBh dl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiJWQgJWQgJWQgJWQgJWQgeW1pbiIgI3YsIHltaW4s ICh4KSwgKHkpLCBzLT5jLm1iX3gsIHMtPmMubWJfeSk7XAoraWYoICh5KT4oeW1heDw8KFMpKSAp IGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICIlZCAlZCAlZCAlZCAlZCB5bWF4IiAjdiwgeW1h eCwgKHgpLCAoeSksIHMtPmMubWJfeCwgcy0+Yy5tYl95KTtcCiAKICNkZWZpbmUgTE9BRF9DT01N T04yXAogICAgIHVpbnQzMl90ICptYXA9IGMtPm1hcDtcCiAgICAgY29uc3QgaW50IHFwZWw9IGZs YWdzJkZMQUdfUVBFTDtcCiAgICAgY29uc3QgaW50IHNoaWZ0PSAxK3FwZWw7XAogCi1zdGF0aWMg YXZfYWx3YXlzX2lubGluZSBpbnQgc21hbGxfZGlhbW9uZF9zZWFyY2goTXBlZ0VuY0NvbnRleHQg KiBzLCBpbnQgKmJlc3QsIGludCBkbWluLAorc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IHNt YWxsX2RpYW1vbmRfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50 IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2lu ZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykK IHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVz dENvbnRleHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJv bWFfY21wZjsKICAgICBpbnQgbmV4dF9kaXI9LTE7CiAgICAgTE9BRF9DT01NT04KQEAgLTQ1NCwx MSArNDU0LDExIEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBzbWFsbF9kaWFtb25kX3Nl YXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVzdCwKICAgICB9CiB9CiAKLXN0YXRpYyBp bnQgZnVubnlfZGlhbW9uZF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgKmJlc3QsIGlu dCBkbWluLAorc3RhdGljIGludCBmdW5ueV9kaWFtb25kX3NlYXJjaChNUFZFbmNDb250ZXh0ICpj b25zdCBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50IHBlbmFs dHlfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNp emUsIGludCBoLCBpbnQgZmxhZ3MpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9 ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAgICAg bWVfY21wX2Z1bmMgY21wZiwgY2hyb21hX2NtcGY7CiAgICAgaW50IGRpYV9zaXplOwogICAgIExP QURfQ09NTU9OCkBAIC00OTYsMTEgKzQ5NiwxMSBAQCBzdGF0aWMgaW50IGZ1bm55X2RpYW1vbmRf c2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKICAgICByZXR1 cm4gZG1pbjsKIH0KIAotc3RhdGljIGludCBoZXhfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywg aW50ICpiZXN0LCBpbnQgZG1pbiwKK3N0YXRpYyBpbnQgaGV4X3NlYXJjaChNUFZFbmNDb250ZXh0 ICpjb25zdCBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50IHBl bmFsdHlfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHNpemUsIGludCBoLCBpbnQgZmxhZ3MsIGludCBkaWFfc2l6ZSkKIHsKLSAgICBNb3Rpb25Fc3RD b250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBj PSAmcy0+Yy5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBMT0FE X0NPTU1PTgogICAgIExPQURfQ09NTU9OMgpAQCAtNTMwLDExICs1MzAsMTEgQEAgc3RhdGljIGlu dCBoZXhfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKICAg ICByZXR1cm4gZG1pbjsKIH0KIAotc3RhdGljIGludCBsMnNfZGlhX3NlYXJjaChNcGVnRW5jQ29u dGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4sCitzdGF0aWMgaW50IGwyc19kaWFfc2VhcmNo KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4 LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rpb25Fc3RD b250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBj PSAmcy0+Yy5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBMT0FE X0NPTU1PTgogICAgIExPQURfQ09NTU9OMgpAQCAtNTY4LDExICs1NjgsMTEgQEAgc3RhdGljIGlu dCBsMnNfZGlhX3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4s CiAgICAgcmV0dXJuIGRtaW47CiB9CiAKLXN0YXRpYyBpbnQgdW1oX3NlYXJjaChNcGVnRW5jQ29u dGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4sCitzdGF0aWMgaW50IHVtaF9zZWFyY2goTVBW RW5jQ29udGV4dCAqY29uc3QgcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsIGNv bnN0IGludCBwZW5hbHR5X2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBzaXplLCBpbnQgaCwgaW50IGZsYWdzKQogewotICAgIE1vdGlvbkVzdENvbnRl eHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZz LT5jLm1lOwogICAgIG1lX2NtcF9mdW5jIGNtcGYsIGNocm9tYV9jbXBmOwogICAgIExPQURfQ09N TU9OCiAgICAgTE9BRF9DT01NT04yCkBAIC02MTUsMTEgKzYxNSwxMSBAQCBzdGF0aWMgaW50IHVt aF9zZWFyY2goTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgIHJl dHVybiBoZXhfc2VhcmNoKHMsIGJlc3QsIGRtaW4sIHNyY19pbmRleCwgcmVmX2luZGV4LCBwZW5h bHR5X2ZhY3Rvciwgc2l6ZSwgaCwgZmxhZ3MsIDIpOwogfQogCi1zdGF0aWMgaW50IGZ1bGxfc2Vh cmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKK3N0YXRpYyBpbnQg ZnVsbF9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50ICpiZXN0LCBpbnQgZG1pbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGlu dCByZWZfaW5kZXgsIGNvbnN0IGludCBwZW5hbHR5X2ZhY3RvciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgaCwgaW50IGZsYWdzKQogewotICAg IE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+bWU7CisgICAgTW90aW9uRXN0Q29udGV4 dCAqIGNvbnN0IGM9ICZzLT5jLm1lOwogICAgIG1lX2NtcF9mdW5jIGNtcGYsIGNocm9tYV9jbXBm OwogICAgIExPQURfQ09NTU9OCiAgICAgTE9BRF9DT01NT04yCkBAIC02NzgsMTEgKzY3OCwxMSBA QCBzdGF0aWMgaW50IGZ1bGxfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBp bnQgZG1pbiwKIH0KIAogI2RlZmluZSBNQVhfU0FCX1NJWkUgTUVfTUFQX1NJWkUKLXN0YXRpYyBp bnQgc2FiX2RpYW1vbmRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpiZXN0LCBpbnQg ZG1pbiwKK3N0YXRpYyBpbnQgc2FiX2RpYW1vbmRfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0 IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9m YWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwg aW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMt Pm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBtZV9j bXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBNaW5pbWEgbWluaW1hW01BWF9TQUJfU0la RV07CiAgICAgY29uc3QgaW50IG1pbmltYV9jb3VudD0gRkZBQlMoYy0+ZGlhX3NpemUpOwpAQCAt NzY4LDExICs3NjgsMTEgQEAgc3RhdGljIGludCBzYWJfZGlhbW9uZF9zZWFyY2goTXBlZ0VuY0Nv bnRleHQgKiBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgIHJldHVybiBkbWluOwogfQogCi1z dGF0aWMgaW50IHZhcl9kaWFtb25kX3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVz dCwgaW50IGRtaW4sCitzdGF0aWMgaW50IHZhcl9kaWFtb25kX3NlYXJjaChNUFZFbmNDb250ZXh0 ICpjb25zdCBzLCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50IHBl bmFsdHlfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHNpemUsIGludCBoLCBpbnQgZmxhZ3MpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0 IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CiAg ICAgbWVfY21wX2Z1bmMgY21wZiwgY2hyb21hX2NtcGY7CiAgICAgaW50IGRpYV9zaXplOwogICAg IExPQURfQ09NTU9OCkBAIC04MjksMTAgKzgyOSwxMCBAQCBzdGF0aWMgaW50IHZhcl9kaWFtb25k X3NlYXJjaChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgcmV0 dXJuIGRtaW47CiB9CiAKLXN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBkaWFtb25kX3NlYXJj aChNcGVnRW5jQ29udGV4dCAqIHMsIGludCAqYmVzdCwgaW50IGRtaW4sCitzdGF0aWMgYXZfYWx3 YXlzX2lubGluZSBpbnQgZGlhbW9uZF9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50 ICpiZXN0LCBpbnQgZG1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsIGNvbnN0IGludCBwZW5hbHR5X2ZhY3RvciwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgaCwg aW50IGZsYWdzKXsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAg IE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBpZihjLT5kaWFfc2l6 ZT09LTEpCiAgICAgICAgIHJldHVybiBmdW5ueV9kaWFtb25kX3NlYXJjaChzLCBiZXN0LCBkbWlu LCBzcmNfaW5kZXgsIHJlZl9pbmRleCwgcGVuYWx0eV9mYWN0b3IsIHNpemUsIGgsIGZsYWdzKTsK ICAgICBlbHNlIGlmKGMtPmRpYV9zaXplPC0xKQpAQCAtODU3LDExICs4NTcsMTEgQEAgc3RhdGlj IGF2X2Fsd2F5c19pbmxpbmUgaW50IGRpYW1vbmRfc2VhcmNoKE1wZWdFbmNDb250ZXh0ICogcywg aW50ICpiZXN0LCBpbnQgZG0KICAgIGl0IHRha2VzIGZld2VyIGl0ZXJhdGlvbnMuIEFuZCBpdCBp bmNyZWFzZXMgdGhlIGNoYW5jZSB0aGF0IHdlIGZpbmQgdGhlCiAgICBvcHRpbWFsIG12LgogICov Ci1zdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgZXB6c19tb3Rpb25fc2VhcmNoX2ludGVybmFs KE1wZWdFbmNDb250ZXh0ICogcywgaW50ICpteF9wdHIsIGludCAqbXlfcHRyLAorc3RhdGljIGF2 X2Fsd2F5c19pbmxpbmUgaW50IGVwenNfbW90aW9uX3NlYXJjaF9pbnRlcm5hbChNUFZFbmNDb250 ZXh0ICpjb25zdCBzLCBpbnQgKm14X3B0ciwgaW50ICpteV9wdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBQWzEwXVsyXSwgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwg Y29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgcmVmX212X3NjYWxlLCBpbnQgZmxhZ3MsIGludCBzaXplLCBpbnQgaCkKIHsKLSAgICBN b3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRleHQg KiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBpbnQgYmVzdFsyXT17MCwgMH07ICAgICAgLyoqPCB4 IGFuZCB5IGNvb3JkaW5hdGVzIG9mIHRoZSBiZXN0IG1vdGlvbiB2ZWN0b3IuCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaS5lLiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBwb3Np dGlvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBjdXJyZW50 bHkgYmVpbmcgZW5jb2RlZCBhbmQgdGhlIHBvc2l0aW9uIG9mCkBAIC04NzEsOCArODcxLDggQEAg c3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGVwenNfbW90aW9uX3NlYXJjaF9pbnRlcm5hbChN cGVnRW5jQ29udGV4dCAqIHMsIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv cnJlc3BvbmRpbmcgdG8gdGhlIG12IHN0b3JlZCBpbiBiZXN0W10uICovCiAgICAgdW5zaWduZWQg bWFwX2dlbmVyYXRpb247CiAgICAgaW50IHBlbmFsdHlfZmFjdG9yOwotICAgIGNvbnN0IGludCBy ZWZfbXZfc3RyaWRlPSBzLT5tYl9zdHJpZGU7IC8vcGFzcyBhcyBhcmcgIEZJWE1FCi0gICAgY29u c3QgaW50IHJlZl9tdl94eSA9IHMtPm1iX3ggKyBzLT5tYl95ICogcmVmX212X3N0cmlkZTsgLy8g YWRkIHRvIGxhc3RfbXYgYmVmb3JlIHBhc3NpbmcgRklYTUUKKyAgICBjb25zdCBpbnQgcmVmX212 X3N0cmlkZT0gcy0+Yy5tYl9zdHJpZGU7IC8vcGFzcyBhcyBhcmcgIEZJWE1FCisgICAgY29uc3Qg aW50IHJlZl9tdl94eSA9IHMtPmMubWJfeCArIHMtPmMubWJfeSAqIHJlZl9tdl9zdHJpZGU7IC8v IGFkZCB0byBsYXN0X212IGJlZm9yZSBwYXNzaW5nIEZJWE1FCiAgICAgbWVfY21wX2Z1bmMgY21w ZiwgY2hyb21hX2NtcGY7CiAKICAgICBMT0FEX0NPTU1PTgpAQCAtODk2LDEyICs4OTYsMTIgQEAg c3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGVwenNfbW90aW9uX3NlYXJjaF9pbnRlcm5hbChN cGVnRW5jQ29udGV4dCAqIHMsIGludAogICAgIHNjb3JlX21hcFswXT0gZG1pbjsKIAogICAgIC8v RklYTUUgcHJlY2FsYyBmaXJzdCB0ZXJtIGJlbG93PwotICAgIGlmICgocy0+cGljdF90eXBlID09 IEFWX1BJQ1RVUkVfVFlQRV9CICYmICEoYy0+ZmxhZ3MgJiBGTEFHX0RJUkVDVCkpIHx8CisgICAg aWYgKChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQiAmJiAhKGMtPmZsYWdzICYg RkxBR19ESVJFQ1QpKSB8fAogICAgICAgICBzLT5tcHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19NVjAp CiAgICAgICAgIGRtaW4gKz0gKG12X3BlbmFsdHlbcHJlZF94XSArIG12X3BlbmFsdHlbcHJlZF95 XSkqcGVuYWx0eV9mYWN0b3I7CiAKICAgICAvKiBmaXJzdCBsaW5lICovCi0gICAgaWYgKHMtPmZp cnN0X3NsaWNlX2xpbmUpIHsKKyAgICBpZiAocy0+Yy5maXJzdF9zbGljZV9saW5lKSB7CiAgICAg ICAgIENIRUNLX01WKFBfTEVGVFswXT4+c2hpZnQsIFBfTEVGVFsxXT4+c2hpZnQpCiAgICAgICAg IENIRUNLX0NMSVBQRURfTVYoKGxhc3RfbXZbcmVmX212X3h5XVswXSpyZWZfbXZfc2NhbGUgKyAo MTw8MTUpKT4+MTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAobGFzdF9tdltyZWZfbXZfeHld WzFdKnJlZl9tdl9zY2FsZSArICgxPDwxNSkpPj4xNikKQEAgLTkzMCwxMyArOTMwLDEzIEBAIHN0 YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCBlcHpzX21vdGlvbl9zZWFyY2hfaW50ZXJuYWwoTXBl Z0VuY0NvbnRleHQgKiBzLCBpbnQKICAgICAgICAgaWYoYy0+cHJlX3Bhc3MpewogICAgICAgICAg ICAgQ0hFQ0tfQ0xJUFBFRF9NVigobGFzdF9tdltyZWZfbXZfeHktMV1bMF0qcmVmX212X3NjYWxl ICsgKDE8PDE1KSk+PjE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYXN0X212W3Jl Zl9tdl94eS0xXVsxXSpyZWZfbXZfc2NhbGUgKyAoMTw8MTUpKT4+MTYpCi0gICAgICAgICAgICBp Zighcy0+Zmlyc3Rfc2xpY2VfbGluZSkKKyAgICAgICAgICAgIGlmKCFzLT5jLmZpcnN0X3NsaWNl X2xpbmUpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfQ0xJUFBFRF9NVigobGFzdF9tdltyZWZfbXZf eHktcmVmX212X3N0cmlkZV1bMF0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGFzdF9tdltyZWZfbXZfeHktcmVmX212X3N0cmlk ZV1bMV0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2KQogICAgICAgICB9ZWxzZXsKICAgICAg ICAgICAgIENIRUNLX0NMSVBQRURfTVYoKGxhc3RfbXZbcmVmX212X3h5KzFdWzBdKnJlZl9tdl9z Y2FsZSArICgxPDwxNSkpPj4xNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFzdF9t dltyZWZfbXZfeHkrMV1bMV0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2KQotICAgICAgICAg ICAgaWYocy0+bWJfeSsxPHMtPmVuZF9tYl95KSAgLy9GSVhNRSByZXBsYWNlIGF0IGxlYXN0IHdp dGggbGFzdF9zbGljZV9saW5lCisgICAgICAgICAgICBpZihzLT5jLm1iX3krMTxzLT5jLmVuZF9t Yl95KSAgLy9GSVhNRSByZXBsYWNlIGF0IGxlYXN0IHdpdGggbGFzdF9zbGljZV9saW5lCiAgICAg ICAgICAgICAgICAgQ0hFQ0tfQ0xJUFBFRF9NVigobGFzdF9tdltyZWZfbXZfeHkrcmVmX212X3N0 cmlkZV1bMF0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGFzdF9tdltyZWZfbXZfeHkrcmVmX212X3N0cmlkZV1bMV0qcmVmX212 X3NjYWxlICsgKDE8PDE1KSk+PjE2KQogICAgICAgICB9CkBAIC05NDQsMTAgKzk0NCwxMCBAQCBz dGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgZXB6c19tb3Rpb25fc2VhcmNoX2ludGVybmFsKE1w ZWdFbmNDb250ZXh0ICogcywgaW50CiAKICAgICBpZihjLT5hdmN0eC0+bGFzdF9wcmVkaWN0b3Jf Y291bnQpewogICAgICAgICBjb25zdCBpbnQgY291bnQ9IGMtPmF2Y3R4LT5sYXN0X3ByZWRpY3Rv cl9jb3VudDsKLSAgICAgICAgY29uc3QgaW50IHhzdGFydD0gRkZNQVgoMCwgcy0+bWJfeCAtIGNv dW50KTsKLSAgICAgICAgY29uc3QgaW50IHlzdGFydD0gRkZNQVgoMCwgcy0+bWJfeSAtIGNvdW50 KTsKLSAgICAgICAgY29uc3QgaW50IHhlbmQ9IEZGTUlOKHMtPm1iX3dpZHRoICwgcy0+bWJfeCAr IGNvdW50ICsgMSk7Ci0gICAgICAgIGNvbnN0IGludCB5ZW5kPSBGRk1JTihzLT5tYl9oZWlnaHQs IHMtPm1iX3kgKyBjb3VudCArIDEpOworICAgICAgICBjb25zdCBpbnQgeHN0YXJ0PSBGRk1BWCgw LCBzLT5jLm1iX3ggLSBjb3VudCk7CisgICAgICAgIGNvbnN0IGludCB5c3RhcnQ9IEZGTUFYKDAs IHMtPmMubWJfeSAtIGNvdW50KTsKKyAgICAgICAgY29uc3QgaW50IHhlbmQ9IEZGTUlOKHMtPmMu bWJfd2lkdGggLCBzLT5jLm1iX3ggKyBjb3VudCArIDEpOworICAgICAgICBjb25zdCBpbnQgeWVu ZD0gRkZNSU4ocy0+Yy5tYl9oZWlnaHQsIHMtPmMubWJfeSArIGNvdW50ICsgMSk7CiAgICAgICAg IGludCBtYl95OwogCiAgICAgICAgIGZvcihtYl95PXlzdGFydDsgbWJfeTx5ZW5kOyBtYl95Kysp ewpAQCAtOTc0LDEyICs5NzQsMTIgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGVwenNf bW90aW9uX3NlYXJjaF9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqIHMsIGludAogfQogCiAvL3Ro aXMgZnVuY3Rpb24gaXMgZGVkaWNhdGVkIHRvIHRoZSBicmFpbiBkYW1hZ2VkIGdjYwotaW50IGZm X2VwenNfbW90aW9uX3NlYXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50ICpteF9wdHIsIGludCAq bXlfcHRyLAoraW50IGZmX2VwenNfbW90aW9uX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz LCBpbnQgKm14X3B0ciwgaW50ICpteV9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBQWzEwXVsyXSwgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLCBpbnQgcmVmX212X3NjYWxl LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgpCiB7Ci0gICAgTW90 aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICog Y29uc3QgYz0gJnMtPmMubWU7CiAvL0ZJWE1FIGNvbnZlcnQgb3RoZXIgZnVuY3Rpb25zIGluIHRo ZSBzYW1lIHdheSBpZiBmYXN0ZXIKICAgICBpZihjLT5mbGFncz09MCAmJiBoPT0xNiAmJiBzaXpl PT0wKXsKICAgICAgICAgcmV0dXJuIGVwenNfbW90aW9uX3NlYXJjaF9pbnRlcm5hbChzLCBteF9w dHIsIG15X3B0ciwgUCwgc3JjX2luZGV4LCByZWZfaW5kZXgsIGxhc3RfbXYsIHJlZl9tdl9zY2Fs ZSwgMCwgMCwgMTYpOwpAQCAtOTkwLDE5ICs5OTAsMTkgQEAgaW50IGZmX2VwenNfbW90aW9uX3Nl YXJjaChNcGVnRW5jQ29udGV4dCAqcywgaW50ICpteF9wdHIsIGludCAqbXlfcHRyLAogICAgIH0K IH0KIAotc3RhdGljIGludCBlcHpzX21vdGlvbl9zZWFyY2gyKE1wZWdFbmNDb250ZXh0ICogcywK K3N0YXRpYyBpbnQgZXB6c19tb3Rpb25fc2VhcmNoMihNUFZFbmNDb250ZXh0ICpjb25zdCBzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm14X3B0ciwgaW50ICpteV9wdHIsIGlu dCBQWzEwXVsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19pbmRleCwg aW50IHJlZl9pbmRleCwgY29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgcmVmX212X3NjYWxlLCBjb25zdCBpbnQgc2l6ZSkKIHsKLSAg ICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPm1lOworICAgIE1vdGlvbkVzdENvbnRl eHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKICAgICBpbnQgYmVzdFsyXT17MCwgMH07CiAgICAgaW50 IGQsIGRtaW47CiAgICAgdW5zaWduZWQgbWFwX2dlbmVyYXRpb247CiAgICAgY29uc3QgaW50IHBl bmFsdHlfZmFjdG9yPSBjLT5wZW5hbHR5X2ZhY3RvcjsKICAgICBjb25zdCBpbnQgaD04OwotICAg IGNvbnN0IGludCByZWZfbXZfc3RyaWRlPSBzLT5tYl9zdHJpZGU7Ci0gICAgY29uc3QgaW50IHJl Zl9tdl94eT0gcy0+bWJfeCArIHMtPm1iX3kgKnJlZl9tdl9zdHJpZGU7CisgICAgY29uc3QgaW50 IHJlZl9tdl9zdHJpZGU9IHMtPmMubWJfc3RyaWRlOworICAgIGNvbnN0IGludCByZWZfbXZfeHk9 IHMtPmMubWJfeCArIHMtPmMubWJfeSAqcmVmX212X3N0cmlkZTsKICAgICBtZV9jbXBfZnVuYyBj bXBmLCBjaHJvbWFfY21wZjsKICAgICBMT0FEX0NPTU1PTgogICAgIGludCBmbGFncz0gYy0+Zmxh Z3M7CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBzdGF0aWMgaW50IGVwenNfbW90aW9uX3NlYXJjaDIo TXBlZ0VuY0NvbnRleHQgKiBzLAogICAgIGRtaW4gPSAxMDAwMDAwOwogCiAgICAgLyogZmlyc3Qg bGluZSAqLwotICAgIGlmIChzLT5maXJzdF9zbGljZV9saW5lKSB7CisgICAgaWYgKHMtPmMuZmly c3Rfc2xpY2VfbGluZSkgewogICAgICAgICBDSEVDS19NVihQX0xFRlRbMF0+PnNoaWZ0LCBQX0xF RlRbMV0+PnNoaWZ0KQogICAgICAgICBDSEVDS19DTElQUEVEX01WKChsYXN0X212W3JlZl9tdl94 eV1bMF0qcmVmX212X3NjYWxlICsgKDE8PDE1KSk+PjE2LAogICAgICAgICAgICAgICAgICAgICAg ICAgKGxhc3RfbXZbcmVmX212X3h5XVsxXSpyZWZfbXZfc2NhbGUgKyAoMTw8MTUpKT4+MTYpCkBA IC0xMDM0LDcgKzEwMzQsNyBAQCBzdGF0aWMgaW50IGVwenNfbW90aW9uX3NlYXJjaDIoTXBlZ0Vu Y0NvbnRleHQgKiBzLAogICAgIGlmKGRtaW4+NjQqNCl7CiAgICAgICAgIENIRUNLX0NMSVBQRURf TVYoKGxhc3RfbXZbcmVmX212X3h5KzFdWzBdKnJlZl9tdl9zY2FsZSArICgxPDwxNSkpPj4xNiwK ICAgICAgICAgICAgICAgICAgICAgICAgIChsYXN0X212W3JlZl9tdl94eSsxXVsxXSpyZWZfbXZf c2NhbGUgKyAoMTw8MTUpKT4+MTYpCi0gICAgICAgIGlmKHMtPm1iX3krMTxzLT5lbmRfbWJfeSkg IC8vRklYTUUgcmVwbGFjZSBhdCBsZWFzdCB3aXRoIGxhc3Rfc2xpY2VfbGluZQorICAgICAgICBp ZihzLT5jLm1iX3krMTxzLT5jLmVuZF9tYl95KSAgLy9GSVhNRSByZXBsYWNlIGF0IGxlYXN0IHdp dGggbGFzdF9zbGljZV9saW5lCiAgICAgICAgICAgICBDSEVDS19DTElQUEVEX01WKChsYXN0X212 W3JlZl9tdl94eStyZWZfbXZfc3RyaWRlXVswXSpyZWZfbXZfc2NhbGUgKyAoMTw8MTUpKT4+MTYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhc3RfbXZbcmVmX212X3h5K3JlZl9tdl9z dHJpZGVdWzFdKnJlZl9tdl9zY2FsZSArICgxPDwxNSkpPj4xNikKICAgICB9CmRpZmYgLS1naXQg YS9saWJhdmNvZGVjL21wZWcxMmVuYy5jIGIvbGliYXZjb2RlYy9tcGVnMTJlbmMuYwppbmRleCBh ZTg3ZjI4ZDY2Li41YTkxZjlmZmYxIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWcxMmVuYy5j CisrKyBiL2xpYmF2Y29kZWMvbXBlZzEyZW5jLmMKQEAgLTEzNyw3ICsxMzcsNyBAQCBhdl9jb2xk IHZvaWQgZmZfbXBlZzFfaW5pdF91bmlfYWNfdmxjKGNvbnN0IGludDhfdCBtYXhfbGV2ZWxbXSwK IH0KIAogI2lmIENPTkZJR19NUEVHMVZJREVPX0VOQ09ERVIgfHwgQ09ORklHX01QRUcyVklERU9f RU5DT0RFUgotc3RhdGljIHZvaWQgcHV0X2hlYWRlcihNcGVnRW5jQ29udGV4dCAqcywgdWludDMy X3QgaGVhZGVyKQorc3RhdGljIHZvaWQgcHV0X2hlYWRlcihNUFZFbmNDb250ZXh0ICpjb25zdCBz LCB1aW50MzJfdCBoZWFkZXIpCiB7CiAgICAgYWxpZ25fcHV0X2JpdHMoJnMtPnBiKTsKICAgICBw dXRfYml0czMyKCZzLT5wYiwgaGVhZGVyKTsKQEAgLTE0NiwxNiArMTQ2LDE2IEBAIHN0YXRpYyB2 b2lkIHB1dF9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMsIHVpbnQzMl90IGhlYWRlcikKIC8qIHB1 dCBzZXF1ZW5jZSBoZWFkZXIgaWYgbmVlZGVkICovCiBzdGF0aWMgdm9pZCBtcGVnMV9lbmNvZGVf c2VxdWVuY2VfaGVhZGVyKE1QRUcxMkVuY0NvbnRleHQgKm1wZWcxMikKIHsKLSAgICBNcGVnRW5j Q29udGV4dCAqY29uc3QgcyA9ICZtcGVnMTItPm1wZWcuczsKKyAgICBNUFZFbmNDb250ZXh0ICpj b25zdCBzID0gJm1wZWcxMi0+bXBlZy5zOwogICAgIHVuc2lnbmVkIGludCB2YnZfYnVmZmVyX3Np emUsIGZwcywgdjsKICAgICBpbnQgY29uc3RyYWludF9wYXJhbWV0ZXJfZmxhZzsKICAgICBBVlJh dGlvbmFsIGZyYW1lcmF0ZSA9IGZmX21wZWcxMl9mcmFtZV9yYXRlX3RhYlttcGVnMTItPmZyYW1l X3JhdGVfaW5kZXhdOwogICAgIHVpbnQ2NF90IHRpbWVfY29kZTsKICAgICBpbnQ2NF90IGJlc3Rf YXNwZWN0X2Vycm9yID0gSU5UNjRfTUFYOwotICAgIEFWUmF0aW9uYWwgYXNwZWN0X3JhdGlvID0g cy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW87CisgICAgQVZSYXRpb25hbCBhc3BlY3RfcmF0 aW8gPSBzLT5jLmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvOwogICAgIGludCBhc3BlY3RfcmF0 aW9faW5mbzsKIAotICAgIGlmICghKHMtPmN1cl9waWMucHRyLT5mLT5mbGFncyAmIEFWX0ZSQU1F X0ZMQUdfS0VZKSkKKyAgICBpZiAoIShzLT5jLmN1cl9waWMucHRyLT5mLT5mbGFncyAmIEFWX0ZS QU1FX0ZMQUdfS0VZKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGFzcGVjdF9yYXRpby5u dW0gPT0gMCB8fCBhc3BlY3RfcmF0aW8uZGVuID09IDApCkBAIC0xNjQsMTUgKzE2NCwxNSBAQCBz dGF0aWMgdm9pZCBtcGVnMV9lbmNvZGVfc2VxdWVuY2VfaGVhZGVyKE1QRUcxMkVuY0NvbnRleHQg Km1wZWcxMikKICAgICAvKiBNUEVHLTEgaGVhZGVyIHJlcGVhdGVkIGV2ZXJ5IEdPUCAqLwogICAg IHB1dF9oZWFkZXIocywgU0VRX1NUQVJUX0NPREUpOwogCi0gICAgcHV0X3NiaXRzKCZzLT5wYiwg MTIsIHMtPndpZHRoICAmIDB4RkZGKTsKLSAgICBwdXRfc2JpdHMoJnMtPnBiLCAxMiwgcy0+aGVp Z2h0ICYgMHhGRkYpOworICAgIHB1dF9zYml0cygmcy0+cGIsIDEyLCBzLT5jLndpZHRoICAmIDB4 RkZGKTsKKyAgICBwdXRfc2JpdHMoJnMtPnBiLCAxMiwgcy0+Yy5oZWlnaHQgJiAweEZGRik7CiAK ICAgICBmb3IgKGludCBpID0gMTsgaSA8IDE1OyBpKyspIHsKICAgICAgICAgaW50NjRfdCBlcnJv ciA9IGFzcGVjdF9yYXRpby5udW0gKiAoMUxMPDwzMikgLyBhc3BlY3RfcmF0aW8uZGVuOwotICAg ICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTyB8fCBpIDw9IDEp CisgICAgICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8gfHwg aSA8PSAxKQogICAgICAgICAgICAgZXJyb3IgLT0gKDFMTDw8MzIpIC8gZmZfbXBlZzFfYXNwZWN0 W2ldOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBlcnJvciAtPSAoMUxMPDwzMikqZmZfbXBl ZzJfYXNwZWN0W2ldLm51bSAqIHMtPmhlaWdodCAvIHMtPndpZHRoIC8gZmZfbXBlZzJfYXNwZWN0 W2ldLmRlbjsKKyAgICAgICAgICAgIGVycm9yIC09ICgxTEw8PDMyKSpmZl9tcGVnMl9hc3BlY3Rb aV0ubnVtICogcy0+Yy5oZWlnaHQgLyBzLT5jLndpZHRoIC8gZmZfbXBlZzJfYXNwZWN0W2ldLmRl bjsKIAogICAgICAgICBlcnJvciA9IEZGQUJTKGVycm9yKTsKIApAQCAtMTg1LDE2ICsxODUsMTYg QEAgc3RhdGljIHZvaWQgbXBlZzFfZW5jb2RlX3NlcXVlbmNlX2hlYWRlcihNUEVHMTJFbmNDb250 ZXh0ICptcGVnMTIpCiAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBhc3BlY3RfcmF0aW9faW5mbyk7 CiAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBtcGVnMTItPmZyYW1lX3JhdGVfaW5kZXgpOwogCi0g ICAgaWYgKHMtPmF2Y3R4LT5yY19tYXhfcmF0ZSkgewotICAgICAgICB2ID0gKHMtPmF2Y3R4LT5y Y19tYXhfcmF0ZSArIDM5OSkgLyA0MDA7Ci0gICAgICAgIGlmICh2ID4gMHgzZmZmZiAmJiBzLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPKQorICAgIGlmIChzLT5jLmF2Y3R4LT5y Y19tYXhfcmF0ZSkgeworICAgICAgICB2ID0gKHMtPmMuYXZjdHgtPnJjX21heF9yYXRlICsgMzk5 KSAvIDQwMDsKKyAgICAgICAgaWYgKHYgPiAweDNmZmZmICYmIHMtPmMuY29kZWNfaWQgPT0gQVZf Q09ERUNfSURfTVBFRzFWSURFTykKICAgICAgICAgICAgIHYgPSAweDNmZmZmOwogICAgIH0gZWxz ZSB7CiAgICAgICAgIHYgPSAweDNGRkZGOwogICAgIH0KIAotICAgIGlmIChzLT5hdmN0eC0+cmNf YnVmZmVyX3NpemUpCi0gICAgICAgIHZidl9idWZmZXJfc2l6ZSA9IHMtPmF2Y3R4LT5yY19idWZm ZXJfc2l6ZTsKKyAgICBpZiAocy0+Yy5hdmN0eC0+cmNfYnVmZmVyX3NpemUpCisgICAgICAgIHZi dl9idWZmZXJfc2l6ZSA9IHMtPmMuYXZjdHgtPnJjX2J1ZmZlcl9zaXplOwogICAgIGVsc2UKICAg ICAgICAgLyogVkJWIGNhbGN1bGF0aW9uOiBTY2FsZWQgc28gdGhhdCBhIFZDRCBoYXMgdGhlIHBy b3BlcgogICAgICAgICAgKiBWQlYgc2l6ZSBvZiA0MCBraWxvYnl0ZXMgKi8KQEAgLTIwNiw0OCAr MjA2LDQ4IEBAIHN0YXRpYyB2b2lkIG1wZWcxX2VuY29kZV9zZXF1ZW5jZV9oZWFkZXIoTVBFRzEy RW5jQ29udGV4dCAqbXBlZzEyKQogICAgIHB1dF9zYml0cygmcy0+cGIsIDEwLCB2YnZfYnVmZmVy X3NpemUpOwogCiAgICAgY29uc3RyYWludF9wYXJhbWV0ZXJfZmxhZyA9Ci0gICAgICAgIHMtPndp ZHRoICA8PSA3NjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgotICAgICAg ICBzLT5oZWlnaHQgPD0gNTc2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYK LSAgICAgICAgcy0+bWJfd2lkdGggKiBzLT5tYl9oZWlnaHQgICAgICAgICAgICAgICAgIDw9IDM5 NiAgICYmCi0gICAgICAgIHMtPm1iX3dpZHRoICogcy0+bWJfaGVpZ2h0ICogZnJhbWVyYXRlLm51 bSA8PSAzOTYgKiAyNSAqIGZyYW1lcmF0ZS5kZW4gJiYKKyAgICAgICAgcy0+Yy53aWR0aCAgPD0g NzY4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgcy0+Yy5o ZWlnaHQgPD0gNTc2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKKyAgICAg ICAgcy0+Yy5tYl93aWR0aCAqIHMtPmMubWJfaGVpZ2h0ICAgICAgICAgICAgICAgICA8PSAzOTYg ICAmJgorICAgICAgICBzLT5jLm1iX3dpZHRoICogcy0+Yy5tYl9oZWlnaHQgKiBmcmFtZXJhdGUu bnVtIDw9IDM5NiAqIDI1ICogZnJhbWVyYXRlLmRlbiAmJgogICAgICAgICBmcmFtZXJhdGUubnVt IDw9IGZyYW1lcmF0ZS5kZW4gKiAzMCAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgcy0+YXZj dHgtPm1lX3JhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAg IHMtPmF2Y3R4LT5tZV9yYW5nZSA8IDEyOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJgor ICAgICAgICBzLT5jLmF2Y3R4LT5tZV9yYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmJgorICAgICAgICBzLT5jLmF2Y3R4LT5tZV9yYW5nZSA8IDEyOCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmJgogICAgICAgICB2YnZfYnVmZmVyX3NpemUgPD0gMjAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJiYKICAgICAgICAgdiA8PSAxODU2MDAwIC8gNDAwICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgIHMtPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX01QRUcxVklERU87CisgICAgICAgIHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNf SURfTVBFRzFWSURFTzsKIAogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgY29uc3RyYWludF9wYXJh bWV0ZXJfZmxhZyk7CiAKLSAgICBmZl93cml0ZV9xdWFudF9tYXRyaXgoJnMtPnBiLCBzLT5hdmN0 eC0+aW50cmFfbWF0cml4KTsKLSAgICBmZl93cml0ZV9xdWFudF9tYXRyaXgoJnMtPnBiLCBzLT5h dmN0eC0+aW50ZXJfbWF0cml4KTsKKyAgICBmZl93cml0ZV9xdWFudF9tYXRyaXgoJnMtPnBiLCBz LT5jLmF2Y3R4LT5pbnRyYV9tYXRyaXgpOworICAgIGZmX3dyaXRlX3F1YW50X21hdHJpeCgmcy0+ cGIsIHMtPmMuYXZjdHgtPmludGVyX21hdHJpeCk7CiAKLSAgICBpZiAocy0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfTVBFRzJWSURFTykgeworICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NP REVDX0lEX01QRUcyVklERU8pIHsKICAgICAgICAgY29uc3QgQVZGcmFtZVNpZGVEYXRhICpzaWRl X2RhdGE7Ci0gICAgICAgIGludCB3aWR0aCA9IHMtPndpZHRoOwotICAgICAgICBpbnQgaGVpZ2h0 ID0gcy0+aGVpZ2h0OworICAgICAgICBpbnQgd2lkdGggPSBzLT5jLndpZHRoOworICAgICAgICBp bnQgaGVpZ2h0ID0gcy0+Yy5oZWlnaHQ7CiAgICAgICAgIGludCB1c2Vfc2VxX2Rpc3BfZXh0Owog CiAgICAgICAgIHB1dF9oZWFkZXIocywgRVhUX1NUQVJUX0NPREUpOwogICAgICAgICBwdXRfYml0 cygmcy0+cGIsIDQsIDEpOyAgICAgICAgICAgICAgICAgLy8gc2VxIGV4dAogCi0gICAgICAgIHB1 dF9iaXRzKCZzLT5wYiwgMSwgcy0+YXZjdHgtPnByb2ZpbGUgPT0gQVZfUFJPRklMRV9NUEVHMl80 MjIpOyAvLyBlc2N4IDEgZm9yIDQ6MjoyIHByb2ZpbGUKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBi LCAxLCBzLT5jLmF2Y3R4LT5wcm9maWxlID09IEFWX1BST0ZJTEVfTVBFRzJfNDIyKTsgLy8gZXNj eCAxIGZvciA0OjI6MiBwcm9maWxlCiAKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAzLCBzLT5h dmN0eC0+cHJvZmlsZSk7IC8vIHByb2ZpbGUKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBz LT5hdmN0eC0+bGV2ZWwpOyAgIC8vIGxldmVsCisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMywg cy0+Yy5hdmN0eC0+cHJvZmlsZSk7IC8vIHByb2ZpbGUKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBi LCA0LCBzLT5jLmF2Y3R4LT5sZXZlbCk7ICAgLy8gbGV2ZWwKIAotICAgICAgICBwdXRfYml0cygm cy0+cGIsIDEsIHMtPnByb2dyZXNzaXZlX3NlcXVlbmNlKTsKLSAgICAgICAgcHV0X2JpdHMoJnMt PnBiLCAyLCBzLT5jaHJvbWFfZm9ybWF0KTsKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBz LT53aWR0aCAgPj4gMTIpOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIHMtPmhlaWdodCA+ PiAxMik7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5wcm9ncmVzc2l2ZV9zZXF1 ZW5jZSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+Yy5jaHJvbWFfZm9ybWF0KTsK KyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5jLndpZHRoICA+PiAxMik7CisgICAgICAg IHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+Yy5oZWlnaHQgPj4gMTIpOwogICAgICAgICBwdXRfYml0 cygmcy0+cGIsIDEyLCB2ID4+IDE4KTsgICAgICAgICAgLy8gYml0cmF0ZSBleHQKICAgICAgICAg cHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsgICAgICAgICAgICAgICAgIC8vIG1hcmtlcgogICAgICAg ICBwdXRfYml0cygmcy0+cGIsIDgsIHZidl9idWZmZXJfc2l6ZSA+PiAxMCk7IC8vIHZidiBidWZm ZXIgZXh0Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+bG93X2RlbGF5KTsKKyAgICAg ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmxvd19kZWxheSk7CiAgICAgICAgIHB1dF9iaXRz KCZzLT5wYiwgMiwgbXBlZzEyLT5mcmFtZV9yYXRlX2V4dC5udW0tMSk7IC8vIGZyYW1lX3JhdGVf ZXh0X24KICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBtcGVnMTItPmZyYW1lX3JhdGVfZXh0 LmRlbi0xKTsgLy8gZnJhbWVfcmF0ZV9leHRfZAogCi0gICAgICAgIHNpZGVfZGF0YSA9IGF2X2Zy YW1lX2dldF9zaWRlX2RhdGEocy0+Y3VyX3BpYy5wdHItPmYsIEFWX0ZSQU1FX0RBVEFfUEFOU0NB Tik7CisgICAgICAgIHNpZGVfZGF0YSA9IGF2X2ZyYW1lX2dldF9zaWRlX2RhdGEocy0+Yy5jdXJf cGljLnB0ci0+ZiwgQVZfRlJBTUVfREFUQV9QQU5TQ0FOKTsKICAgICAgICAgaWYgKHNpZGVfZGF0 YSkgewogICAgICAgICAgICAgY29uc3QgQVZQYW5TY2FuICpwYW5fc2NhbiA9IChBVlBhblNjYW4g KilzaWRlX2RhdGEtPmRhdGE7CiAgICAgICAgICAgICBpZiAocGFuX3NjYW4tPndpZHRoICYmIHBh bl9zY2FuLT5oZWlnaHQpIHsKQEAgLTI1NiwxMSArMjU2LDExIEBAIHN0YXRpYyB2b2lkIG1wZWcx X2VuY29kZV9zZXF1ZW5jZV9oZWFkZXIoTVBFRzEyRW5jQ29udGV4dCAqbXBlZzEyKQogICAgICAg ICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdXNlX3NlcV9kaXNwX2V4dCA9ICh3aWR0aCAh PSBzLT53aWR0aCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAhPSBzLT5o ZWlnaHQgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5hdmN0eC0+Y29sb3JfcHJp bWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCB8fAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPmF2Y3R4LT5jb2xvcl90cmMgIT0gQVZDT0xfVFJDX1VOU1BFQ0lGSUVEIHx8Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+YXZjdHgtPmNvbG9yc3BhY2UgIT0gQVZDT0xf U1BDX1VOU1BFQ0lGSUVEIHx8CisgICAgICAgIHVzZV9zZXFfZGlzcF9leHQgPSAod2lkdGggIT0g cy0+Yy53aWR0aCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAhPSBzLT5j LmhlaWdodCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuYXZjdHgtPmNvbG9y X3ByaW1hcmllcyAhPSBBVkNPTF9QUklfVU5TUEVDSUZJRUQgfHwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5jLmF2Y3R4LT5jb2xvcl90cmMgIT0gQVZDT0xfVFJDX1VOU1BFQ0lGSUVE IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5hdmN0eC0+Y29sb3JzcGFjZSAh PSBBVkNPTF9TUENfVU5TUEVDSUZJRUQgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt cGVnMTItPnZpZGVvX2Zvcm1hdCAhPSBWSURFT19GT1JNQVRfVU5TUEVDSUZJRUQpOwogCiAgICAg ICAgIGlmIChtcGVnMTItPnNlcV9kaXNwX2V4dCA9PSAxIHx8CkBAIC0yNjksOSArMjY5LDkgQEAg c3RhdGljIHZvaWQgbXBlZzFfZW5jb2RlX3NlcXVlbmNlX2hlYWRlcihNUEVHMTJFbmNDb250ZXh0 ICptcGVnMTIpCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDQsIDIpOyAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBzZXF1ZW5jZSBkaXNwbGF5IGV4dGVuc2lvbgogICAgICAgICAgICAg cHV0X2JpdHMoJnMtPnBiLCAzLCBtcGVnMTItPnZpZGVvX2Zvcm1hdCk7ICAgICAgLy8gdmlkZW9f Zm9ybWF0CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOyAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBjb2xvdXJfZGVzY3JpcHRpb24KLSAgICAgICAgICAgIHB1dF9iaXRzKCZz LT5wYiwgOCwgcy0+YXZjdHgtPmNvbG9yX3ByaW1hcmllcyk7IC8vIGNvbG91cl9wcmltYXJpZXMK LSAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwgcy0+YXZjdHgtPmNvbG9yX3RyYyk7ICAg ICAgIC8vIHRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcwotICAgICAgICAgICAgcHV0X2JpdHMoJnMt PnBiLCA4LCBzLT5hdmN0eC0+Y29sb3JzcGFjZSk7ICAgICAgLy8gbWF0cml4X2NvZWZmaWNpZW50 cworICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA4LCBzLT5jLmF2Y3R4LT5jb2xvcl9wcmlt YXJpZXMpOyAvLyBjb2xvdXJfcHJpbWFyaWVzCisgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIs IDgsIHMtPmMuYXZjdHgtPmNvbG9yX3RyYyk7ICAgICAgIC8vIHRyYW5zZmVyX2NoYXJhY3Rlcmlz dGljcworICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA4LCBzLT5jLmF2Y3R4LT5jb2xvcnNw YWNlKTsgICAgICAvLyBtYXRyaXhfY29lZmZpY2llbnRzCiAgICAgICAgICAgICBwdXRfYml0cygm cy0+cGIsIDE0LCB3aWR0aCk7ICAgICAgICAgICAgICAgICAgICAvLyBkaXNwbGF5X2hvcml6b250 YWxfc2l6ZQogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gbWFya2VyX2JpdAogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAx NCwgaGVpZ2h0KTsgICAgICAgICAgICAgICAgICAgLy8gZGlzcGxheV92ZXJ0aWNhbF9zaXplCkBA IC0yODQsMTAgKzI4NCwxMCBAQCBzdGF0aWMgdm9pZCBtcGVnMV9lbmNvZGVfc2VxdWVuY2VfaGVh ZGVyKE1QRUcxMkVuY0NvbnRleHQgKm1wZWcxMikKICAgICAvKiB0aW1lIGNvZGU6IHdlIG11c3Qg Y29udmVydCBmcm9tIHRoZSByZWFsIGZyYW1lIHJhdGUgdG8gYQogICAgICAqIGZha2UgTVBFRyBm cmFtZSByYXRlIGluIGNhc2Ugb2YgbG93IGZyYW1lIHJhdGUgKi8KICAgICBmcHMgICAgICAgPSAo ZnJhbWVyYXRlLm51bSArIGZyYW1lcmF0ZS5kZW4gLyAyKSAvIGZyYW1lcmF0ZS5kZW47Ci0gICAg dGltZV9jb2RlID0gcy0+Y3VyX3BpYy5wdHItPmNvZGVkX3BpY3R1cmVfbnVtYmVyICsKKyAgICB0 aW1lX2NvZGUgPSBzLT5jLmN1cl9waWMucHRyLT5jb2RlZF9waWN0dXJlX251bWJlciArCiAgICAg ICAgICAgICAgICAgbXBlZzEyLT50aW1lY29kZV9mcmFtZV9zdGFydDsKIAotICAgIG1wZWcxMi0+ Z29wX3BpY3R1cmVfbnVtYmVyID0gcy0+Y3VyX3BpYy5wdHItPmNvZGVkX3BpY3R1cmVfbnVtYmVy OworICAgIG1wZWcxMi0+Z29wX3BpY3R1cmVfbnVtYmVyID0gcy0+Yy5jdXJfcGljLnB0ci0+Y29k ZWRfcGljdHVyZV9udW1iZXI7CiAKICAgICBhdl9hc3NlcnQwKG1wZWcxMi0+ZHJvcF9mcmFtZV90 aW1lY29kZSA9PSAhIShtcGVnMTItPnRjLmZsYWdzICYgQVZfVElNRUNPREVfRkxBR19EUk9QRlJB TUUpKTsKICAgICBpZiAobXBlZzEyLT5kcm9wX2ZyYW1lX3RpbWVjb2RlKQpAQCAtMjk4LDEyICsy OTgsMTIgQEAgc3RhdGljIHZvaWQgbXBlZzFfZW5jb2RlX3NlcXVlbmNlX2hlYWRlcihNUEVHMTJF bmNDb250ZXh0ICptcGVnMTIpCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsKICAgICBwdXRf Yml0cygmcy0+cGIsIDYsICh1aW50MzJfdCkoKHRpbWVfY29kZSAvIGZwcykgJSA2MCkpOwogICAg IHB1dF9iaXRzKCZzLT5wYiwgNiwgKHVpbnQzMl90KSgodGltZV9jb2RlICUgZnBzKSkpOwotICAg IHB1dF9iaXRzKCZzLT5wYiwgMSwgISEocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19D TE9TRURfR09QKSB8fAorICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgISEocy0+Yy5hdmN0eC0+Zmxh Z3MgJiBBVl9DT0RFQ19GTEFHX0NMT1NFRF9HT1ApIHx8CiAgICAgICAgICAgICAgICAgICAgICAg ICBtcGVnMTItPm1wZWcuaW50cmFfb25seSB8fCAhbXBlZzEyLT5nb3BfcGljdHVyZV9udW1iZXIp OwogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAgICAgICAgICAgICAgICAgLy8gYnJv a2VuIGxpbmsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGVuY29kZV9tYl9za2lwX3J1bihNcGVn RW5jQ29udGV4dCAqcywgaW50IHJ1bikKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVfbWJfc2tp cF9ydW4oTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IHJ1bikKIHsKICAgICB3aGlsZSAocnVu ID49IDMzKSB7CiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMTEsIDB4MDA4KTsKQEAgLTMxMywy MCArMzEzLDIwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVfbWJfc2tpcF9ydW4oTXBlZ0Vu Y0NvbnRleHQgKnMsIGludCBydW4pCiAgICAgICAgICAgICAgZmZfbXBlZzEyX21iQWRkckluY3JU YWJsZVtydW5dWzBdKTsKIH0KIAotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBwdXRfcXNj YWxlKE1wZWdFbmNDb250ZXh0ICpzKQorc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBwdXRf cXNjYWxlKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7Ci0gICAgcHV0X2JpdHMoJnMtPnBiLCA1 LCBzLT5xc2NhbGUpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+Yy5xc2NhbGUpOwogfQog Ci12b2lkIGZmX21wZWcxX2VuY29kZV9zbGljZV9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMpCit2 b2lkIGZmX21wZWcxX2VuY29kZV9zbGljZV9oZWFkZXIoTVBWRW5jQ29udGV4dCAqY29uc3QgcykK IHsKLSAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzJWSURFTyAmJiBzLT5o ZWlnaHQgPiAyODAwKSB7Ci0gICAgICAgIHB1dF9oZWFkZXIocywgU0xJQ0VfTUlOX1NUQVJUX0NP REUgKyAocy0+bWJfeSAmIDEyNykpOworICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVD X0lEX01QRUcyVklERU8gJiYgcy0+Yy5oZWlnaHQgPiAyODAwKSB7CisgICAgICAgIHB1dF9oZWFk ZXIocywgU0xJQ0VfTUlOX1NUQVJUX0NPREUgKyAocy0+Yy5tYl95ICYgMTI3KSk7CiAgICAgICAg IC8qIHNsaWNlX3ZlcnRpY2FsX3Bvc2l0aW9uX2V4dGVuc2lvbiAqLwotICAgICAgICBwdXRfYml0 cygmcy0+cGIsIDMsIHMtPm1iX3kgPj4gNyk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMywg cy0+Yy5tYl95ID4+IDcpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF2X2Fzc2VydDEocy0+bWJf eSA8PSBTTElDRV9NQVhfU1RBUlRfQ09ERSAtIFNMSUNFX01JTl9TVEFSVF9DT0RFKTsKLSAgICAg ICAgcHV0X2hlYWRlcihzLCBTTElDRV9NSU5fU1RBUlRfQ09ERSArIHMtPm1iX3kpOworICAgICAg ICBhdl9hc3NlcnQxKHMtPmMubWJfeSA8PSBTTElDRV9NQVhfU1RBUlRfQ09ERSAtIFNMSUNFX01J Tl9TVEFSVF9DT0RFKTsKKyAgICAgICAgcHV0X2hlYWRlcihzLCBTTElDRV9NSU5fU1RBUlRfQ09E RSArIHMtPmMubWJfeSk7CiAgICAgfQogICAgIHB1dF9xc2NhbGUocyk7CiAgICAgLyogc2xpY2Ug ZXh0cmEgaW5mb3JtYXRpb24gKi8KQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIGZmX21wZWcxX2Vu Y29kZV9zbGljZV9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMpCiBzdGF0aWMgaW50IG1wZWcxX2Vu Y29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIHsKICAgICBN UEVHMTJFbmNDb250ZXh0ICpjb25zdCBtcGVnMTIgPSAoTVBFRzEyRW5jQ29udGV4dCopbTsKLSAg ICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNv bnN0IHMgPSAmbS0+czsKICAgICBjb25zdCBBVkZyYW1lU2lkZURhdGEgKnNpZGVfZGF0YTsKIAog ICAgIG1wZWcxX2VuY29kZV9zZXF1ZW5jZV9oZWFkZXIobXBlZzEyKTsKQEAgLTM0NSw3NCArMzQ1 LDc0IEBAIHN0YXRpYyBpbnQgbXBlZzFfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmND b250ZXh0ICpjb25zdCBtKQogICAgIHB1dF9oZWFkZXIocywgUElDVFVSRV9TVEFSVF9DT0RFKTsK ICAgICAvKiB0ZW1wb3JhbCByZWZlcmVuY2UgKi8KIAotICAgIC8vIFJBTDogcy0+cGljdHVyZV9u dW1iZXIgaW5zdGVhZCBvZiBzLT5mYWtlX3BpY3R1cmVfbnVtYmVyCisgICAgLy8gUkFMOiBzLT5j LnBpY3R1cmVfbnVtYmVyIGluc3RlYWQgb2Ygcy0+ZmFrZV9waWN0dXJlX251bWJlcgogICAgIHB1 dF9iaXRzKCZzLT5wYiwgMTAsCi0gICAgICAgICAgICAgKHMtPnBpY3R1cmVfbnVtYmVyIC0gbXBl ZzEyLT5nb3BfcGljdHVyZV9udW1iZXIpICYgMHgzZmYpOwotICAgIHB1dF9iaXRzKCZzLT5wYiwg Mywgcy0+cGljdF90eXBlKTsKKyAgICAgICAgICAgICAocy0+Yy5waWN0dXJlX251bWJlciAtIG1w ZWcxMi0+Z29wX3BpY3R1cmVfbnVtYmVyKSAmIDB4M2ZmKTsKKyAgICBwdXRfYml0cygmcy0+cGIs IDMsIHMtPmMucGljdF90eXBlKTsKIAogICAgIG0tPnZidl9kZWxheV9wb3MgPSBwdXRfYnl0ZXNf Y291bnQoJnMtPnBiLCAwKTsKICAgICBwdXRfYml0cygmcy0+cGIsIDE2LCAweEZGRkYpOyAgICAg ICAgICAgICAgIC8qIHZidl9kZWxheSAqLwogCiAgICAgLy8gUkFMOiBGb3J3YXJkIGZfY29kZSBh bHNvIG5lZWRlZCBmb3IgQi1mcmFtZXMKLSAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RV UkVfVFlQRV9QIHx8Ci0gICAgICAgIHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikg eworICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCB8fAorICAgICAg ICBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikgewogICAgICAgICBwdXRfYml0 cygmcy0+cGIsIDEsIDApOyAgICAgICAgICAgICAgICAgLyogaGFsZiBwZWwgY29vcmRpbmF0ZXMg Ki8KLSAgICAgICAgaWYgKHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8pCi0g ICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDMsIHMtPmZfY29kZSk7ICAgICAvKiBmb3J3YXJk X2ZfY29kZSAqLworICAgICAgICBpZiAocy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVH MVZJREVPKQorICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAzLCBzLT5jLmZfY29kZSk7ICAg ICAvKiBmb3J3YXJkX2ZfY29kZSAqLwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwdXRfYml0 cygmcy0+cGIsIDMsIDcpOyAgICAgICAgICAgICAvKiBmb3J3YXJkX2ZfY29kZSAqLwogICAgIH0K IAogICAgIC8vIFJBTDogQmFja3dhcmQgZl9jb2RlIG5lY2Vzc2FyeSBmb3IgQi1mcmFtZXMKLSAg ICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAgaWYgKHMtPmMu cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CiAgICAgICAgIHB1dF9iaXRzKCZzLT5w YiwgMSwgMCk7ICAgICAgICAgICAgICAgICAvKiBoYWxmIHBlbCBjb29yZGluYXRlcyAqLwotICAg ICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTykKLSAgICAgICAg ICAgIHB1dF9iaXRzKCZzLT5wYiwgMywgcy0+Yl9jb2RlKTsgICAgIC8qIGJhY2t3YXJkX2ZfY29k ZSAqLworICAgICAgICBpZiAocy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVP KQorICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAzLCBzLT5jLmJfY29kZSk7ICAgICAvKiBi YWNrd2FyZF9mX2NvZGUgKi8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHV0X2JpdHMoJnMt PnBiLCAzLCA3KTsgICAgICAgICAgICAgLyogYmFja3dhcmRfZl9jb2RlICovCiAgICAgfQogCiAg ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgICAgICAgICAgICAgICAgICAvKiBleHRyYSBi aXQgcGljdHVyZSAqLwogCi0gICAgcy0+ZnJhbWVfcHJlZF9mcmFtZV9kY3QgPSAxOwotICAgIGlm IChzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPKSB7CisgICAgcy0+Yy5mcmFt ZV9wcmVkX2ZyYW1lX2RjdCA9IDE7CisgICAgaWYgKHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNf SURfTVBFRzJWSURFTykgewogICAgICAgICBwdXRfaGVhZGVyKHMsIEVYVF9TVEFSVF9DT0RFKTsK ICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCA4KTsgICAgICAgICAgICAgICAgIC8qIHBpYyBl eHQgKi8KLSAgICAgICAgaWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCB8fAot ICAgICAgICAgICAgcy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7Ci0gICAgICAg ICAgICBwdXRfYml0cygmcy0+cGIsIDQsIHMtPmZfY29kZSk7Ci0gICAgICAgICAgICBwdXRfYml0 cygmcy0+cGIsIDQsIHMtPmZfY29kZSk7CisgICAgICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBB Vl9QSUNUVVJFX1RZUEVfUCB8fAorICAgICAgICAgICAgcy0+Yy5waWN0X3R5cGUgPT0gQVZfUElD VFVSRV9UWVBFX0IpIHsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNCwgcy0+Yy5mX2Nv ZGUpOworICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBzLT5jLmZfY29kZSk7CiAgICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgsIDI1NSk7CiAgICAg ICAgIH0KLSAgICAgICAgaWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikgewot ICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBzLT5iX2NvZGUpOwotICAgICAgICAgICAg cHV0X2JpdHMoJnMtPnBiLCA0LCBzLT5iX2NvZGUpOworICAgICAgICBpZiAocy0+Yy5waWN0X3R5 cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IpIHsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwg NCwgcy0+Yy5iX2NvZGUpOworICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA0LCBzLT5jLmJf Y29kZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgs IDI1NSk7CiAgICAgICAgIH0KLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5pbnRyYV9k Y19wcmVjaXNpb24pOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIHMtPmMuaW50cmFfZGNf cHJlY2lzaW9uKTsKIAotICAgICAgICBhdl9hc3NlcnQwKHMtPnBpY3R1cmVfc3RydWN0dXJlID09 IFBJQ1RfRlJBTUUpOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIHMtPnBpY3R1cmVfc3Ry dWN0dXJlKTsKLSAgICAgICAgaWYgKHMtPnByb2dyZXNzaXZlX3NlcXVlbmNlKQorICAgICAgICBh dl9hc3NlcnQwKHMtPmMucGljdHVyZV9zdHJ1Y3R1cmUgPT0gUElDVF9GUkFNRSk7CisgICAgICAg IHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+Yy5waWN0dXJlX3N0cnVjdHVyZSk7CisgICAgICAgIGlm IChzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlKQogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBi LCAxLCAwKTsgICAgICAgICAgICAgLyogbm8gcmVwZWF0ICovCiAgICAgICAgIGVsc2UKLSAgICAg ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgISEocy0+Y3VyX3BpYy5wdHItPmYtPmZsYWdzICYg QVZfRlJBTUVfRkxBR19UT1BfRklFTERfRklSU1QpKTsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZz LT5wYiwgMSwgISEocy0+Yy5jdXJfcGljLnB0ci0+Zi0+ZmxhZ3MgJiBBVl9GUkFNRV9GTEFHX1RP UF9GSUVMRF9GSVJTVCkpOwogICAgICAgICAvKiBYWFg6IG9wdGltaXplIHRoZSBnZW5lcmF0aW9u IG9mIHRoaXMgZmxhZyB3aXRoIGVudHJvcHkgbWVhc3VyZXMgKi8KLSAgICAgICAgcy0+ZnJhbWVf cHJlZF9mcmFtZV9kY3QgPSBzLT5wcm9ncmVzc2l2ZV9zZXF1ZW5jZTsKLQotICAgICAgICBwdXRf Yml0cygmcy0+cGIsIDEsIHMtPmZyYW1lX3ByZWRfZnJhbWVfZGN0KTsKLSAgICAgICAgcHV0X2Jp dHMoJnMtPnBiLCAxLCBzLT5jb25jZWFsbWVudF9tb3Rpb25fdmVjdG9ycyk7Ci0gICAgICAgIHB1 dF9iaXRzKCZzLT5wYiwgMSwgcy0+cV9zY2FsZV90eXBlKTsKLSAgICAgICAgcHV0X2JpdHMoJnMt PnBiLCAxLCBzLT5pbnRyYV92bGNfZm9ybWF0KTsKLSAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAx LCBzLT5hbHRlcm5hdGVfc2Nhbik7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+cmVw ZWF0X2ZpcnN0X2ZpZWxkKTsKLSAgICAgICAgcy0+cHJvZ3Jlc3NpdmVfZnJhbWUgPSBzLT5wcm9n cmVzc2l2ZV9zZXF1ZW5jZTsKKyAgICAgICAgcy0+Yy5mcmFtZV9wcmVkX2ZyYW1lX2RjdCA9IHMt PmMucHJvZ3Jlc3NpdmVfc2VxdWVuY2U7CisKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBz LT5jLmZyYW1lX3ByZWRfZnJhbWVfZGN0KTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBz LT5jLmNvbmNlYWxtZW50X21vdGlvbl92ZWN0b3JzKTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBi LCAxLCBzLT5jLnFfc2NhbGVfdHlwZSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ Yy5pbnRyYV92bGNfZm9ybWF0KTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmFs dGVybmF0ZV9zY2FuKTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLnJlcGVhdF9m aXJzdF9maWVsZCk7CisgICAgICAgIHMtPmMucHJvZ3Jlc3NpdmVfZnJhbWUgPSBzLT5jLnByb2dy ZXNzaXZlX3NlcXVlbmNlOwogICAgICAgICAvKiBjaHJvbWFfNDIwX3R5cGUgKi8KLSAgICAgICAg cHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jaHJvbWFfZm9ybWF0ID09Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ0hST01BXzQyMCA/IHMtPnByb2dyZXNzaXZlX2ZyYW1lIDogMCk7Ci0gICAg ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+cHJvZ3Jlc3NpdmVfZnJhbWUpOworICAgICAgICBw dXRfYml0cygmcy0+cGIsIDEsIHMtPmMuY2hyb21hX2Zvcm1hdCA9PQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENIUk9NQV80MjAgPyBzLT5jLnByb2dyZXNzaXZlX2ZyYW1lIDogMCk7Cisg ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5wcm9ncmVzc2l2ZV9mcmFtZSk7CiAgICAg ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAgICAgICAgICAgICAvKiBjb21wb3NpdGVf ZGlzcGxheV9mbGFnICovCiAgICAgfQogICAgIGlmIChtcGVnMTItPnNjYW5fb2Zmc2V0KSB7CkBA IC00MjIsNyArNDIyLDcgQEAgc3RhdGljIGludCBtcGVnMV9lbmNvZGVfcGljdHVyZV9oZWFkZXIo TVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXpl b2Yoc3ZjZF9zY2FuX29mZnNldF9wbGFjZWhvbGRlcik7IGkrKykKICAgICAgICAgICAgIHB1dF9i aXRzKCZzLT5wYiwgOCwgc3ZjZF9zY2FuX29mZnNldF9wbGFjZWhvbGRlcltpXSk7CiAgICAgfQot ICAgIHNpZGVfZGF0YSA9IGF2X2ZyYW1lX2dldF9zaWRlX2RhdGEocy0+Y3VyX3BpYy5wdHItPmYs CisgICAgc2lkZV9kYXRhID0gYXZfZnJhbWVfZ2V0X3NpZGVfZGF0YShzLT5jLmN1cl9waWMucHRy LT5mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfRlJBTUVfREFU QV9TVEVSRU8zRCk7CiAgICAgaWYgKHNpZGVfZGF0YSkgewogICAgICAgICBjb25zdCBBVlN0ZXJl bzNEICpzdGVyZW8gPSAoQVZTdGVyZW8zRCAqKXNpZGVfZGF0YS0+ZGF0YTsKQEAgLTQ2MCw3ICs0 NjAsNyBAQCBzdGF0aWMgaW50IG1wZWcxX2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5j Q29udGV4dCAqY29uc3QgbSkKICAgICB9CiAKICAgICBpZiAoQ09ORklHX01QRUcyVklERU9fRU5D T0RFUiAmJiBtcGVnMTItPmE1M19jYykgewotICAgICAgICBzaWRlX2RhdGEgPSBhdl9mcmFtZV9n ZXRfc2lkZV9kYXRhKHMtPmN1cl9waWMucHRyLT5mLAorICAgICAgICBzaWRlX2RhdGEgPSBhdl9m cmFtZV9nZXRfc2lkZV9kYXRhKHMtPmMuY3VyX3BpYy5wdHItPmYsCiAgICAgICAgICAgICBBVl9G UkFNRV9EQVRBX0E1M19DQyk7CiAgICAgICAgIGlmIChzaWRlX2RhdGEpIHsKICAgICAgICAgICAg IGlmIChzaWRlX2RhdGEtPnNpemUgPD0gQTUzX01BWF9DQ19DT1VOVCAqIDMgJiYgc2lkZV9kYXRh LT5zaXplICUgMyA9PSAwKSB7CkBAIC00NzYsMzMgKzQ3NiwzMyBAQCBzdGF0aWMgaW50IG1wZWcx X2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAg ICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwgMHhmZik7ICAgICAgICAgICAgICAgICAg Ly8gbWFya2VyX2JpdHMKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXZf bG9nKHMtPmF2Y3R4LCBBVl9MT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+ Yy5hdmN0eCwgQVZfTE9HX1dBUk5JTkcsCiAgICAgICAgICAgICAgICAgICAgICJDbG9zZWQgQ2Fw dGlvbiBzaXplICglIlNJWkVfU1BFQ0lGSUVSIikgY2FuIG5vdCBleGNlZWQgIgogICAgICAgICAg ICAgICAgICAgICAiOTMgYnl0ZXMgYW5kIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzXG4iLCBzaWRl X2RhdGEtPnNpemUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcy0+ bWJfeSA9IDA7CisgICAgcy0+Yy5tYl95ID0gMDsKICAgICBmZl9tcGVnMV9lbmNvZGVfc2xpY2Vf aGVhZGVyKHMpOwogCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRf bWJfbW9kZXMoTXBlZ0VuY0NvbnRleHQgKnMsIGludCBuLCBpbnQgYml0cywKK3N0YXRpYyBpbmxp bmUgdm9pZCBwdXRfbWJfbW9kZXMoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG4sIGludCBi aXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGFzX212LCBpbnQgZmll bGRfbW90aW9uKQogewogICAgIHB1dF9iaXRzKCZzLT5wYiwgbiwgYml0cyk7Ci0gICAgaWYgKCFz LT5mcmFtZV9wcmVkX2ZyYW1lX2RjdCkgeworICAgIGlmICghcy0+Yy5mcmFtZV9wcmVkX2ZyYW1l X2RjdCkgewogICAgICAgICBpZiAoaGFzX212KQogICAgICAgICAgICAgLyogbW90aW9uX3R5cGU6 IGZyYW1lL2ZpZWxkICovCiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIDIgLSBmaWVs ZF9tb3Rpb24pOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmludGVybGFjZWRfZGN0 KTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmludGVybGFjZWRfZGN0KTsKICAg ICB9CiB9CiAKIC8vIFJBTDogUGFyYW1ldGVyIGFkZGVkOiBmX29yX2JfY29kZQotc3RhdGljIHZv aWQgbXBlZzFfZW5jb2RlX21vdGlvbihNcGVnRW5jQ29udGV4dCAqcywgaW50IHZhbCwgaW50IGZf b3JfYl9jb2RlKQorc3RhdGljIHZvaWQgbXBlZzFfZW5jb2RlX21vdGlvbihNUFZFbmNDb250ZXh0 ICpjb25zdCBzLCBpbnQgdmFsLCBpbnQgZl9vcl9iX2NvZGUpCiB7CiAgICAgaWYgKHZhbCA9PSAw KSB7CiAgICAgICAgIC8qIHplcm8gdmVjdG9yLCBjb3JyZXNwb25kcyB0byBmZl9tcGVnMTJfbWJN b3Rpb25WZWN0b3JUYWJsZVswXSAqLwpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyB2b2lkIG1w ZWcxX2VuY29kZV9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKnMsIGludCB2YWwsIGludCBmX29yX2Jf Y29kZSkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVfZGMoTXBlZ0VuY0Nv bnRleHQgKnMsIGludCBkaWZmLCBpbnQgY29tcG9uZW50KQorc3RhdGljIGlubGluZSB2b2lkIGVu Y29kZV9kYyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgZGlmZiwgaW50IGNvbXBvbmVudCkK IHsKICAgICB1bnNpZ25lZCBpbnQgZGlmZl91ID0gZGlmZiArIDI1NTsKICAgICBpZiAoZGlmZl91 ID49IDUxMSkgewpAQCAtNTczLDIzICs1NzMsMjMgQEAgc3RhdGljIGlubGluZSB2b2lkIGVuY29k ZV9kYyhNcGVnRW5jQ29udGV4dCAqcywgaW50IGRpZmYsIGludCBjb21wb25lbnQpCiAgICAgfQog fQogCi1zdGF0aWMgdm9pZCBtcGVnMV9lbmNvZGVfYmxvY2soTXBlZ0VuY0NvbnRleHQgKnMsIGNv bnN0IGludDE2X3QgKmJsb2NrLCBpbnQgbikKK3N0YXRpYyB2b2lkIG1wZWcxX2VuY29kZV9ibG9j ayhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBjb25zdCBpbnQxNl90IGJsb2NrW10sIGludCBuKQog ewogICAgIGludCBhbGV2ZWwsIGxldmVsLCBsYXN0X25vbl96ZXJvLCBkYywgZGlmZiwgaSwgaiwg cnVuLCBsYXN0X2luZGV4LCBzaWduOwogICAgIGludCBjb2RlLCBjb21wb25lbnQ7CiAgICAgY29u c3QgdWludDE2X3QgKCp0YWJsZV92bGMpWzJdID0gZmZfbXBlZzFfdmxjX3RhYmxlOwogCi0gICAg bGFzdF9pbmRleCA9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisgICAgbGFzdF9pbmRleCA9IHMt PmMuYmxvY2tfbGFzdF9pbmRleFtuXTsKIAogICAgIC8qIERDIGNvZWYgKi8KLSAgICBpZiAocy0+ bWJfaW50cmEpIHsKKyAgICBpZiAocy0+Yy5tYl9pbnRyYSkgewogICAgICAgICBjb21wb25lbnQg PSAobiA8PSAzID8gMCA6IChuICYgMSkgKyAxKTsKICAgICAgICAgZGMgICAgICAgID0gYmxvY2tb MF07ICAgICAgICAgICAgICAgICAgIC8qIG92ZXJmbG93IGlzIGltcG9zc2libGUgKi8KLSAgICAg ICAgZGlmZiAgICAgID0gZGMgLSBzLT5sYXN0X2RjW2NvbXBvbmVudF07CisgICAgICAgIGRpZmYg ICAgICA9IGRjIC0gcy0+Yy5sYXN0X2RjW2NvbXBvbmVudF07CiAgICAgICAgIGVuY29kZV9kYyhz LCBkaWZmLCBjb21wb25lbnQpOwotICAgICAgICBzLT5sYXN0X2RjW2NvbXBvbmVudF0gPSBkYzsK KyAgICAgICAgcy0+Yy5sYXN0X2RjW2NvbXBvbmVudF0gPSBkYzsKICAgICAgICAgaSA9IDE7Ci0g ICAgICAgIGlmIChzLT5pbnRyYV92bGNfZm9ybWF0KQorICAgICAgICBpZiAocy0+Yy5pbnRyYV92 bGNfZm9ybWF0KQogICAgICAgICAgICAgdGFibGVfdmxjID0gZmZfbXBlZzJfdmxjX3RhYmxlOwog ICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIGVuY29kZSB0aGUgZmlyc3QgY29lZmZpY2llbnQ6IG5l ZWRzIHRvIGJlIGRvbmUgaGVyZSBiZWNhdXNlCkBAIC02MTAsNyArNjEwLDcgQEAgc3RhdGljIHZv aWQgbXBlZzFfZW5jb2RlX2Jsb2NrKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCBpbnQxNl90ICpi bG9jaywgaW50IG4pCiAgICAgbGFzdF9ub25femVybyA9IGkgLSAxOwogCiAgICAgZm9yICg7IGkg PD0gbGFzdF9pbmRleDsgaSsrKSB7Ci0gICAgICAgIGogICAgID0gcy0+aW50cmFfc2NhbnRhYmxl LnBlcm11dGF0ZWRbaV07CisgICAgICAgIGogICAgID0gcy0+Yy5pbnRyYV9zY2FudGFibGUucGVy bXV0YXRlZFtpXTsKICAgICAgICAgbGV2ZWwgPSBibG9ja1tqXTsKIAogbmV4dF9jb2VmOgpAQCAt NjM0LDcgKzYzNCw3IEBAIG5leHRfY29lZjoKICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+ cGIsIDYsIDB4MDEpOwogICAgICAgICAgICAgICAgIC8qIGVzY2FwZTogb25seSBjbGlwIGluIHRo aXMgY2FzZSAqLwogICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNiwgcnVuKTsKLSAg ICAgICAgICAgICAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTykg eworICAgICAgICAgICAgICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcx VklERU8pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGFsZXZlbCA8IDEyOCkgewogICAgICAg ICAgICAgICAgICAgICAgICAgcHV0X3NiaXRzKCZzLT5wYiwgOCwgbGV2ZWwpOwogICAgICAgICAg ICAgICAgICAgICB9IGVsc2UgewpAQCAtNjU0LDU1ICs2NTQsNTUgQEAgbmV4dF9jb2VmOgogICAg IHB1dF9iaXRzKCZzLT5wYiwgdGFibGVfdmxjWzExMl1bMV0sIHRhYmxlX3ZsY1sxMTJdWzBdKTsK IH0KIAotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBtcGVnMV9lbmNvZGVfbWJfaW50ZXJu YWwoTXBlZ0VuY0NvbnRleHQgKnMsCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIG1wZWcx X2VuY29kZV9tYl9pbnRlcm5hbChNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCBi bG9ja1s4XVs2NF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgbW90aW9uX3gsIGludCBtb3Rpb25feSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYl9ibG9ja19jb3VudCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBjaHJvbWFfeV9zaGlmdCkKIHsKIC8qIE1QRUctMSBpcyBhbHdheXMgNDIwLiAqLwotI2RlZmlu ZSBJU19NUEVHMShzKSAoY2hyb21hX3lfc2hpZnQgPT0gMSAmJiAocyktPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX01QRUcxVklERU8pCisjZGVmaW5lIElTX01QRUcxKHMpIChjaHJvbWFfeV9zaGlm dCA9PSAxICYmIChzKS0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPKQogICAg IGludCBpLCBjYnA7Ci0gICAgY29uc3QgaW50IG1iX3ggICAgID0gcy0+bWJfeDsKLSAgICBjb25z dCBpbnQgbWJfeSAgICAgPSBzLT5tYl95OwotICAgIGNvbnN0IGludCBmaXJzdF9tYiA9IG1iX3gg PT0gcy0+cmVzeW5jX21iX3ggJiYgbWJfeSA9PSBzLT5yZXN5bmNfbWJfeTsKKyAgICBjb25zdCBp bnQgbWJfeCAgICAgPSBzLT5jLm1iX3g7CisgICAgY29uc3QgaW50IG1iX3kgICAgID0gcy0+Yy5t Yl95OworICAgIGNvbnN0IGludCBmaXJzdF9tYiA9IG1iX3ggPT0gcy0+Yy5yZXN5bmNfbWJfeCAm JiBtYl95ID09IHMtPmMucmVzeW5jX21iX3k7CiAKICAgICAvKiBjb21wdXRlIGNicCAqLwogICAg IGNicCA9IDA7CiAgICAgZm9yIChpID0gMDsgaSA8IG1iX2Jsb2NrX2NvdW50OyBpKyspCi0gICAg ICAgIGlmIChzLT5ibG9ja19sYXN0X2luZGV4W2ldID49IDApCisgICAgICAgIGlmIChzLT5jLmJs b2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKICAgICAgICAgICAgIGNicCB8PSAxIDw8IChtYl9ibG9j a19jb3VudCAtIDEgLSBpKTsKIAotICAgIGlmIChjYnAgPT0gMCAmJiAhZmlyc3RfbWIgJiYgcy0+ bXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2ICYmCi0gICAgICAgIChtYl94ICE9IHMtPm1iX3dpZHRo IC0gMSB8fAotICAgICAgICAgKG1iX3kgIT0gcy0+ZW5kX21iX3kgLSAxICYmIElTX01QRUcxKHMp KSkgJiYKLSAgICAgICAgKChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1AgJiYgKG1v dGlvbl94IHwgbW90aW9uX3kpID09IDApIHx8Ci0gICAgICAgICAocy0+cGljdF90eXBlID09IEFW X1BJQ1RVUkVfVFlQRV9CICYmIHMtPm12X2RpciA9PSBzLT5sYXN0X212X2RpciAmJgotICAgICAg ICAgICgoKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKQotICAgICAgICAgICAgPyAoKHMtPm12 WzBdWzBdWzBdIC0gcy0+bGFzdF9tdlswXVswXVswXSkgfAotICAgICAgICAgICAgICAgKHMtPm12 WzBdWzBdWzFdIC0gcy0+bGFzdF9tdlswXVswXVsxXSkpIDogMCkgfAotICAgICAgICAgICAoKHMt Pm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkKLSAgICAgICAgICAgID8gKChzLT5tdlsxXVswXVsw XSAtIHMtPmxhc3RfbXZbMV1bMF1bMF0pIHwKLSAgICAgICAgICAgICAgIChzLT5tdlsxXVswXVsx XSAtIHMtPmxhc3RfbXZbMV1bMF1bMV0pKSA6IDApKSA9PSAwKSkpIHsKLSAgICAgICAgcy0+bWJf c2tpcF9ydW4rKzsKLSAgICAgICAgcy0+cXNjYWxlIC09IHMtPmRxdWFudDsKKyAgICBpZiAoY2Jw ID09IDAgJiYgIWZpcnN0X21iICYmIHMtPmMubXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2ICYmCisg ICAgICAgIChtYl94ICE9IHMtPmMubWJfd2lkdGggLSAxIHx8CisgICAgICAgICAobWJfeSAhPSBz LT5jLmVuZF9tYl95IC0gMSAmJiBJU19NUEVHMShzKSkpICYmCisgICAgICAgICgocy0+Yy5waWN0 X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1AgJiYgKG1vdGlvbl94IHwgbW90aW9uX3kpID09IDAp IHx8CisgICAgICAgICAocy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgJiYgcy0+ Yy5tdl9kaXIgPT0gcy0+bGFzdF9tdl9kaXIgJiYKKyAgICAgICAgICAoKChzLT5jLm12X2RpciAm IE1WX0RJUl9GT1JXQVJEKQorICAgICAgICAgICAgPyAoKHMtPmMubXZbMF1bMF1bMF0gLSBzLT5j Lmxhc3RfbXZbMF1bMF1bMF0pIHwKKyAgICAgICAgICAgICAgIChzLT5jLm12WzBdWzBdWzFdIC0g cy0+Yy5sYXN0X212WzBdWzBdWzFdKSkgOiAwKSB8CisgICAgICAgICAgICgocy0+Yy5tdl9kaXIg JiBNVl9ESVJfQkFDS1dBUkQpCisgICAgICAgICAgICA/ICgocy0+Yy5tdlsxXVswXVswXSAtIHMt PmMubGFzdF9tdlsxXVswXVswXSkgfAorICAgICAgICAgICAgICAgKHMtPmMubXZbMV1bMF1bMV0g LSBzLT5jLmxhc3RfbXZbMV1bMF1bMV0pKSA6IDApKSA9PSAwKSkpIHsKKyAgICAgICAgcy0+Yy5t Yl9za2lwX3J1bisrOworICAgICAgICBzLT5jLnFzY2FsZSAtPSBzLT5kcXVhbnQ7CiAgICAgICAg IHMtPm1pc2NfYml0cysrOwogICAgICAgICBzLT5sYXN0X2JpdHMrKzsKLSAgICAgICAgaWYgKHMt PnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkgewotICAgICAgICAgICAgcy0+bGFzdF9t dlswXVswXVswXSA9Ci0gICAgICAgICAgICBzLT5sYXN0X212WzBdWzBdWzFdID0KLSAgICAgICAg ICAgIHMtPmxhc3RfbXZbMF1bMV1bMF0gPQotICAgICAgICAgICAgcy0+bGFzdF9tdlswXVsxXVsx XSA9IDA7CisgICAgICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkg eworICAgICAgICAgICAgcy0+Yy5sYXN0X212WzBdWzBdWzBdID0KKyAgICAgICAgICAgIHMtPmMu bGFzdF9tdlswXVswXVsxXSA9CisgICAgICAgICAgICBzLT5jLmxhc3RfbXZbMF1bMV1bMF0gPQor ICAgICAgICAgICAgcy0+Yy5sYXN0X212WzBdWzFdWzFdID0gMDsKICAgICAgICAgfQogICAgIH0g ZWxzZSB7CiAgICAgICAgIGlmIChmaXJzdF9tYikgewotICAgICAgICAgICAgYXZfYXNzZXJ0MChz LT5tYl9za2lwX3J1biA9PSAwKTsKLSAgICAgICAgICAgIGVuY29kZV9tYl9za2lwX3J1bihzLCBz LT5tYl94KTsKKyAgICAgICAgICAgIGF2X2Fzc2VydDAocy0+Yy5tYl9za2lwX3J1biA9PSAwKTsK KyAgICAgICAgICAgIGVuY29kZV9tYl9za2lwX3J1bihzLCBzLT5jLm1iX3gpOwogICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgZW5jb2RlX21iX3NraXBfcnVuKHMsIHMtPm1iX3NraXBfcnVu KTsKKyAgICAgICAgICAgIGVuY29kZV9tYl9za2lwX3J1bihzLCBzLT5jLm1iX3NraXBfcnVuKTsK ICAgICAgICAgfQogCi0gICAgICAgIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBF X0kpIHsKKyAgICAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKSB7 CiAgICAgICAgICAgICBpZiAocy0+ZHF1YW50ICYmIGNicCkgewogICAgICAgICAgICAgICAgIC8q IG1hY3JvYmxvY2tfdHlwZTogbWFjcm9ibG9ja19xdWFudCA9IDEgKi8KICAgICAgICAgICAgICAg ICBwdXRfbWJfbW9kZXMocywgMiwgMSwgMCwgMCk7CkBAIC03MTAsMjMgKzcxMCwyMyBAQCBzdGF0 aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIG1wZWcxX2VuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5j Q29udGV4dCAqcywKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogbWFj cm9ibG9ja190eXBlOiBtYWNyb2Jsb2NrX3F1YW50ID0gMCAqLwogICAgICAgICAgICAgICAgIHB1 dF9tYl9tb2RlcyhzLCAxLCAxLCAwLCAwKTsKLSAgICAgICAgICAgICAgICBzLT5xc2NhbGUgLT0g cy0+ZHF1YW50OworICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKICAg ICAgICAgICAgIH0KICAgICAgICAgICAgIHMtPm1pc2NfYml0cyArPSBnZXRfYml0c19kaWZmKHMp OwogICAgICAgICAgICAgcy0+aV9jb3VudCsrOwotICAgICAgICB9IGVsc2UgaWYgKHMtPm1iX2lu dHJhKSB7CisgICAgICAgIH0gZWxzZSBpZiAocy0+Yy5tYl9pbnRyYSkgewogICAgICAgICAgICAg aWYgKHMtPmRxdWFudCAmJiBjYnApIHsKICAgICAgICAgICAgICAgICBwdXRfbWJfbW9kZXMocywg NiwgMHgwMSwgMCwgMCk7CiAgICAgICAgICAgICAgICAgcHV0X3FzY2FsZShzKTsKICAgICAgICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHV0X21iX21vZGVzKHMsIDUsIDB4MDMsIDAs IDApOwotICAgICAgICAgICAgICAgIHMtPnFzY2FsZSAtPSBzLT5kcXVhbnQ7CisgICAgICAgICAg ICAgICAgcy0+Yy5xc2NhbGUgLT0gcy0+ZHF1YW50OwogICAgICAgICAgICAgfQogICAgICAgICAg ICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAgICAgICAgICAgICBzLT5pX2Nv dW50Kys7Ci0gICAgICAgICAgICBtZW1zZXQocy0+bGFzdF9tdiwgMCwgc2l6ZW9mKHMtPmxhc3Rf bXYpKTsKLSAgICAgICAgfSBlbHNlIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBF X1ApIHsKLSAgICAgICAgICAgIGlmIChzLT5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsKKyAg ICAgICAgICAgIG1lbXNldChzLT5jLmxhc3RfbXYsIDAsIHNpemVvZihzLT5jLmxhc3RfbXYpKTsK KyAgICAgICAgfSBlbHNlIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkg eworICAgICAgICAgICAgaWYgKHMtPmMubXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2KSB7CiAgICAg ICAgICAgICAgICAgaWYgKGNicCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobW90 aW9uX3ggfCBtb3Rpb25feSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMt PmRxdWFudCkgewpAQCAtNzQ4LDM0ICs3NDgsMzQgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUg dm9pZCBtcGVnMV9lbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAg ICAgICAgICAgICAgICAgICBzLT5taXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlmZihzKTsKICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFJBTDogZl9jb2RlIHBhcmFtZXRlciBhZGRlZAogICAgICAg ICAgICAgICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25feCAtIHMtPmxhc3RfbXZbMF1bMF1b MF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmZfY29k ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl94 IC0gcy0+Yy5sYXN0X212WzBdWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBS QUw6IGZfY29kZSBwYXJhbWV0ZXIgYWRkZWQKICAgICAgICAgICAgICAgICAgICAgICAgIG1wZWcx X2VuY29kZV9tb3Rpb24ocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbW90aW9uX3kgLSBzLT5sYXN0X212WzBdWzBdWzFdLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5mX2NvZGUpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25feSAtIHMtPmMubGFzdF9tdlswXVswXVsx XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5mX2Nv ZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZfYml0cyArPSBnZXRfYml0c19kaWZm KHMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAzLCAxKTsgICAgICAgICAvKiBtb3Rp b24gb25seSAqLwotICAgICAgICAgICAgICAgICAgICBpZiAoIXMtPmZyYW1lX3ByZWRfZnJhbWVf ZGN0KQorICAgICAgICAgICAgICAgICAgICBpZiAoIXMtPmMuZnJhbWVfcHJlZF9mcmFtZV9kY3Qp CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIDIpOyAgICAgLyog bW90aW9uX3R5cGU6IGZyYW1lICovCiAgICAgICAgICAgICAgICAgICAgIHMtPm1pc2NfYml0cyAr PSBnZXRfYml0c19kaWZmKHMpOwogICAgICAgICAgICAgICAgICAgICAvLyBSQUw6IGZfY29kZSBw YXJhbWV0ZXIgYWRkZWQKICAgICAgICAgICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihz LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl94IC0gcy0+ bGFzdF9tdlswXVswXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzLT5mX2NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v dGlvbl94IC0gcy0+Yy5sYXN0X212WzBdWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHMtPmMuZl9jb2RlKTsKICAgICAgICAgICAgICAgICAgICAgLy8gUkFM OiBmX2NvZGUgcGFyYW1ldGVyIGFkZGVkCiAgICAgICAgICAgICAgICAgICAgIG1wZWcxX2VuY29k ZV9tb3Rpb24ocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rp b25feSAtIHMtPmxhc3RfbXZbMF1bMF1bMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+Zl9jb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgcy0+cXNjYWxlICAt PSBzLT5kcXVhbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90 aW9uX3kgLSBzLT5jLmxhc3RfbXZbMF1bMF1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcy0+Yy5mX2NvZGUpOworICAgICAgICAgICAgICAgICAgICBzLT5jLnFz Y2FsZSAgLT0gcy0+ZHF1YW50OwogICAgICAgICAgICAgICAgICAgICBzLT5tdl9iaXRzICs9IGdl dF9iaXRzX2RpZmYocyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHMtPmxh c3RfbXZbMF1bMV1bMF0gPSBzLT5sYXN0X212WzBdWzBdWzBdID0gbW90aW9uX3g7Ci0gICAgICAg ICAgICAgICAgcy0+bGFzdF9tdlswXVsxXVsxXSA9IHMtPmxhc3RfbXZbMF1bMF1bMV0gPSBtb3Rp b25feTsKKyAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbMF1bMV1bMF0gPSBzLT5jLmxhc3Rf bXZbMF1bMF1bMF0gPSBtb3Rpb25feDsKKyAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbMF1b MV1bMV0gPSBzLT5jLmxhc3RfbXZbMF1bMF1bMV0gPSBtb3Rpb25feTsKICAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXZfYXNzZXJ0Mighcy0+ZnJhbWVfcHJlZF9mcmFtZV9k Y3QgJiYgcy0+bXZfdHlwZSA9PSBNVl9UWVBFX0ZJRUxEKTsKKyAgICAgICAgICAgICAgICBhdl9h c3NlcnQyKCFzLT5jLmZyYW1lX3ByZWRfZnJhbWVfZGN0ICYmIHMtPmMubXZfdHlwZSA9PSBNVl9U WVBFX0ZJRUxEKTsKIAogICAgICAgICAgICAgICAgIGlmIChjYnApIHsKICAgICAgICAgICAgICAg ICAgICAgaWYgKHMtPmRxdWFudCkgewpAQCAtNzg3LDE5ICs3ODcsMTkgQEAgc3RhdGljIGF2X2Fs d2F5c19pbmxpbmUgdm9pZCBtcGVnMV9lbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQg KnMsCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHV0X2Jp dHMoJnMtPnBiLCAzLCAxKTsgICAgICAgICAgICAgLyogbW90aW9uIG9ubHkgKi8KICAgICAgICAg ICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCAxKTsgICAgICAgICAgICAgLyogbW90aW9u X3R5cGU6IGZpZWxkICovCi0gICAgICAgICAgICAgICAgICAgIHMtPnFzY2FsZSAtPSBzLT5kcXVh bnQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2Rp ZmYocyk7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewotICAgICAg ICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmZpZWxkX3NlbGVjdFswXVtpXSk7 CisgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVsZF9zZWxl Y3RbMF1baV0pOwogICAgICAgICAgICAgICAgICAgICBtcGVnMV9lbmNvZGVfbW90aW9uKHMsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMF1baV1bMF0gLSBz LT5sYXN0X212WzBdW2ldWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPmZfY29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cy0+Yy5tdlswXVtpXVswXSAtIHMtPmMubGFzdF9tdlswXVtpXVswXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CiAgICAgICAgICAgICAgICAg ICAgIG1wZWcxX2VuY29kZV9tb3Rpb24ocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5tdlswXVtpXVsxXSAtIChzLT5sYXN0X212WzBdW2ldWzFdID4+IDEpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmZfY29kZSk7Ci0gICAg ICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMF1baV1bMF0gPSBzLT5tdlswXVtpXVswXTsKLSAg ICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlswXVtpXVsxXSA9IDIgKiBzLT5tdlswXVtpXVsx XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ld WzFdIC0gKHMtPmMubGFzdF9tdlswXVtpXVsxXSA+PiAxKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CisgICAgICAgICAgICAgICAgICAgIHMt PmMubGFzdF9tdlswXVtpXVswXSA9IHMtPmMubXZbMF1baV1bMF07CisgICAgICAgICAgICAgICAg ICAgIHMtPmMubGFzdF9tdlswXVtpXVsxXSA9IDIgKiBzLT5jLm12WzBdW2ldWzFdOwogICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzLT5tdl9iaXRzICs9IGdldF9iaXRzX2RpZmYo cyk7CiAgICAgICAgICAgICB9CkBAIC04MTYsOTEgKzgxNiw5MSBAQCBzdGF0aWMgYXZfYWx3YXlz X2lubGluZSB2b2lkIG1wZWcxX2VuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywK ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICBpZiAocy0+bXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2KSB7CisgICAgICAgICAgICBp ZiAocy0+Yy5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsKICAgICAgICAgICAgICAgICBpZiAo Y2JwKSB7ICAgICAgICAgICAgICAgICAgICAgIC8vIFdpdGggY29kZWQgYmxvYyBwYXR0ZXJuCiAg ICAgICAgICAgICAgICAgICAgIGlmIChzLT5kcXVhbnQpIHsKLSAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChzLT5tdl9kaXIgPT0gTVZfRElSX0ZPUldBUkQpCisgICAgICAgICAgICAgICAgICAg ICAgICBpZiAocy0+Yy5tdl9kaXIgPT0gTVZfRElSX0ZPUldBUkQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHV0X21iX21vZGVzKHMsIDYsIDMsIDEsIDApOwogICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9tYl9tb2Rlcyhz LCA4IC0gcy0+bXZfZGlyLCAyLCAxLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dXRfbWJfbW9kZXMocywgOCAtIHMtPmMubXZfZGlyLCAyLCAxLCAwKTsKICAgICAgICAgICAgICAg ICAgICAgICAgIHB1dF9xc2NhbGUocyk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgICAgICAgICAgICBwdXRfbWJfbW9kZXMocywgNSAtIHMtPm12X2RpciwgMywg MSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRfbWJfbW9kZXMocywgNSAtIHMtPmMu bXZfZGlyLCAzLCAxLCAwKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg IH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gY29kZWQgYmxvYyBwYXR0ZXJu Ci0gICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNSAtIHMtPm12X2RpciwgMik7 Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcy0+ZnJhbWVfcHJlZF9mcmFtZV9kY3QpCisgICAg ICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNSAtIHMtPmMubXZfZGlyLCAyKTsKKyAg ICAgICAgICAgICAgICAgICAgaWYgKCFzLT5jLmZyYW1lX3ByZWRfZnJhbWVfZGN0KQogICAgICAg ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCAyKTsgLyogbW90aW9uX3R5cGU6 IGZyYW1lICovCi0gICAgICAgICAgICAgICAgICAgIHMtPnFzY2FsZSAtPSBzLT5kcXVhbnQ7Cisg ICAgICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7 Ci0gICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7CisgICAg ICAgICAgICAgICAgaWYgKHMtPmMubXZfZGlyICYgTVZfRElSX0ZPUldBUkQpIHsKICAgICAgICAg ICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdIC0gcy0+bGFzdF9tdlswXVswXVswXSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5mX2NvZGUpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gLSBz LT5jLmxhc3RfbXZbMF1bMF1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+Yy5mX2NvZGUpOwogICAgICAgICAgICAgICAgICAgICBtcGVnMV9lbmNvZGVfbW90 aW9uKHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMF1b MF1bMV0gLSBzLT5sYXN0X212WzBdWzBdWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPmZfY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZb MF1bMF1bMF0gPQotICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzBdWzFdWzBdID0gcy0+ bXZbMF1bMF1bMF07Ci0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMF1bMF1bMV0gPQot ICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzBdWzFdWzFdID0gcy0+bXZbMF1bMF1bMV07 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsx XSAtIHMtPmMubGFzdF9tdlswXVswXVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5jLmZfY29kZSk7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9t dlswXVswXVswXSA9CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlswXVsxXVswXSA9 IHMtPmMubXZbMF1bMF1bMF07CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlswXVsw XVsxXSA9CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlswXVsxXVsxXSA9IHMtPmMu bXZbMF1bMF1bMV07CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzLT5t dl9kaXIgJiBNVl9ESVJfQkFDS1dBUkQpIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5tdl9k aXIgJiBNVl9ESVJfQkFDS1dBUkQpIHsKICAgICAgICAgICAgICAgICAgICAgbXBlZzFfZW5jb2Rl X21vdGlvbihzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12 WzFdWzBdWzBdIC0gcy0+bGFzdF9tdlsxXVswXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzLT5iX2NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPmMubXZbMV1bMF1bMF0gLSBzLT5jLmxhc3RfbXZbMV1bMF1bMF0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5iX2NvZGUpOwogICAg ICAgICAgICAgICAgICAgICBtcGVnMV9lbmNvZGVfbW90aW9uKHMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMV1bMF1bMV0gLSBzLT5sYXN0X212WzFdWzBd WzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJfY29kZSk7 Ci0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1bMF1bMF0gPQotICAgICAgICAgICAg ICAgICAgICBzLT5sYXN0X212WzFdWzFdWzBdID0gcy0+bXZbMV1bMF1bMF07Ci0gICAgICAgICAg ICAgICAgICAgIHMtPmxhc3RfbXZbMV1bMF1bMV0gPQotICAgICAgICAgICAgICAgICAgICBzLT5s YXN0X212WzFdWzFdWzFdID0gcy0+bXZbMV1bMF1bMV07CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsxXVswXVsxXSAtIHMtPmMubGFzdF9tdlsxXVswXVsx XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmJfY29kZSk7 CisgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlsxXVswXVswXSA9CisgICAgICAgICAg ICAgICAgICAgIHMtPmMubGFzdF9tdlsxXVsxXVswXSA9IHMtPmMubXZbMV1bMF1bMF07CisgICAg ICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlsxXVswXVsxXSA9CisgICAgICAgICAgICAgICAg ICAgIHMtPmMubGFzdF9tdlsxXVsxXVsxXSA9IHMtPmMubXZbMV1bMF1bMV07CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdl9hc3NlcnQy KHMtPm12X3R5cGUgPT0gTVZfVFlQRV9GSUVMRCk7Ci0gICAgICAgICAgICAgICAgYXZfYXNzZXJ0 Mighcy0+ZnJhbWVfcHJlZF9mcmFtZV9kY3QpOworICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIo cy0+Yy5tdl90eXBlID09IE1WX1RZUEVfRklFTEQpOworICAgICAgICAgICAgICAgIGF2X2Fzc2Vy dDIoIXMtPmMuZnJhbWVfcHJlZF9mcmFtZV9kY3QpOwogICAgICAgICAgICAgICAgIGlmIChjYnAp IHsgICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBjb2RlZCBibG9jIHBhdHRlcm4KICAgICAg ICAgICAgICAgICAgICAgaWYgKHMtPmRxdWFudCkgewotICAgICAgICAgICAgICAgICAgICAgICAg aWYgKHMtPm12X2RpciA9PSBNVl9ESVJfRk9SV0FSRCkKKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIChzLT5jLm12X2RpciA9PSBNVl9ESVJfRk9SV0FSRCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwdXRfbWJfbW9kZXMocywgNiwgMywgMSwgMSk7CiAgICAgICAgICAgICAgICAgICAg ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0X21iX21vZGVzKHMsIDgg LSBzLT5tdl9kaXIsIDIsIDEsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9t Yl9tb2RlcyhzLCA4IC0gcy0+Yy5tdl9kaXIsIDIsIDEsIDEpOwogICAgICAgICAgICAgICAgICAg ICAgICAgcHV0X3FzY2FsZShzKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgICAgICAgICAgIHB1dF9tYl9tb2RlcyhzLCA1IC0gcy0+bXZfZGlyLCAzLCAxLCAx KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9tYl9tb2RlcyhzLCA1IC0gcy0+Yy5tdl9k aXIsIDMsIDEsIDEpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBl bHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBjb2RlZCBibG9jIHBhdHRlcm4KLSAg ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1IC0gcy0+bXZfZGlyLCAyKTsKKyAg ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA1IC0gcy0+Yy5tdl9kaXIsIDIpOwog ICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDIsIDEpOyAgICAgLyogbW90aW9u X3R5cGU6IGZpZWxkICovCi0gICAgICAgICAgICAgICAgICAgIHMtPnFzY2FsZSAtPSBzLT5kcXVh bnQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2Rp ZmYocyk7Ci0gICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7 CisgICAgICAgICAgICAgICAgaWYgKHMtPmMubXZfZGlyICYgTVZfRElSX0ZPUldBUkQpIHsKICAg ICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewotICAgICAgICAgICAg ICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5maWVsZF9zZWxlY3RbMF1baV0pOwor ICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmZpZWxkX3Nl bGVjdFswXVtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtcGVnMV9lbmNvZGVfbW90aW9u KHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBd W2ldWzBdIC0gcy0+bGFzdF9tdlswXVtpXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcy0+Zl9jb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVtpXVswXSAtIHMtPmMubGFzdF9tdlswXVtpXVsw XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5mX2Nv ZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVtpXVsxXSAt IChzLT5sYXN0X212WzBdW2ldWzFdID4+IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzLT5mX2NvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+ bGFzdF9tdlswXVtpXVswXSA9IHMtPm12WzBdW2ldWzBdOwotICAgICAgICAgICAgICAgICAgICAg ICAgcy0+bGFzdF9tdlswXVtpXVsxXSA9IHMtPm12WzBdW2ldWzFdICogMjsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVtpXVsxXSAtIChzLT5j Lmxhc3RfbXZbMF1baV1bMV0gPj4gMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPmMuZl9jb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMu bGFzdF9tdlswXVtpXVswXSA9IHMtPmMubXZbMF1baV1bMF07CisgICAgICAgICAgICAgICAgICAg ICAgICBzLT5jLmxhc3RfbXZbMF1baV1bMV0gPSBzLT5jLm12WzBdW2ldWzFdICogMjsKICAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo cy0+bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7CisgICAgICAgICAgICAgICAgaWYgKHMtPmMu bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCAyOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5w YiwgMSwgcy0+ZmllbGRfc2VsZWN0WzFdW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1 dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVsZF9zZWxlY3RbMV1baV0pOwogICAgICAgICAgICAg ICAgICAgICAgICAgbXBlZzFfZW5jb2RlX21vdGlvbihzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlsxXVtpXVswXSAtIHMtPmxhc3RfbXZbMV1baV1b MF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJfY29k ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZb MV1baV1bMF0gLSBzLT5jLmxhc3RfbXZbMV1baV1bMF0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPmMuYl9jb2RlKTsKICAgICAgICAgICAgICAgICAgICAg ICAgIG1wZWcxX2VuY29kZV9tb3Rpb24ocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcy0+bXZbMV1baV1bMV0gLSAocy0+bGFzdF9tdlsxXVtpXVsxXSA+PiAx KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yl9jb2Rl KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1baV1bMF0gPSBzLT5tdlsx XVtpXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1baV1bMV0gPSBz LT5tdlsxXVtpXVsxXSAqIDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPmMubXZbMV1baV1bMV0gLSAocy0+Yy5sYXN0X212WzFdW2ldWzFdID4+IDEpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmJfY29kZSk7 CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbMV1baV1bMF0gPSBzLT5jLm12 WzFdW2ldWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5sYXN0X212WzFdW2ldWzFd ID0gcy0+Yy5tdlsxXVtpXVsxXSAqIDI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC05MjEsMjAgKzkyMSwyMCBAQCBzdGF0aWMgYXZf YWx3YXlzX2lubGluZSB2b2lkIG1wZWcxX2VuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5jQ29udGV4 dCAqcywKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1iX2Jsb2NrX2NvdW50OyBpKyspCiAgICAg ICAgICAgICBpZiAoY2JwICYgKDEgPDwgKG1iX2Jsb2NrX2NvdW50IC0gMSAtIGkpKSkKICAgICAg ICAgICAgICAgICBtcGVnMV9lbmNvZGVfYmxvY2socywgYmxvY2tbaV0sIGkpOwotICAgICAgICBz LT5tYl9za2lwX3J1biA9IDA7Ci0gICAgICAgIGlmIChzLT5tYl9pbnRyYSkKKyAgICAgICAgcy0+ Yy5tYl9za2lwX3J1biA9IDA7CisgICAgICAgIGlmIChzLT5jLm1iX2ludHJhKQogICAgICAgICAg ICAgcy0+aV90ZXhfYml0cyArPSBnZXRfYml0c19kaWZmKHMpOwogICAgICAgICBlbHNlCiAgICAg ICAgICAgICBzLT5wX3RleF9iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAgICAgfQogfQogCi1z dGF0aWMgdm9pZCBtcGVnMTJfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90IGJs b2NrW11bNjRdLAorc3RhdGljIHZvaWQgbXBlZzEyX2VuY29kZV9tYihNUFZFbmNDb250ZXh0ICpj b25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgbW90aW9uX3gsIGludCBtb3Rpb25feSkKIHsKLSAgICBpZiAoIXMtPm1iX2ludHJhKQot ICAgICAgICBzLT5sYXN0X2RjWzBdID0gcy0+bGFzdF9kY1sxXSA9IHMtPmxhc3RfZGNbMl0gPSAx MjggPDwgcy0+aW50cmFfZGNfcHJlY2lzaW9uOwotICAgIGlmIChzLT5jaHJvbWFfZm9ybWF0ID09 IENIUk9NQV80MjApCisgICAgaWYgKCFzLT5jLm1iX2ludHJhKQorICAgICAgICBzLT5jLmxhc3Rf ZGNbMF0gPSBzLT5jLmxhc3RfZGNbMV0gPSBzLT5jLmxhc3RfZGNbMl0gPSAxMjggPDwgcy0+Yy5p bnRyYV9kY19wcmVjaXNpb247CisgICAgaWYgKHMtPmMuY2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFf NDIwKQogICAgICAgICBtcGVnMV9lbmNvZGVfbWJfaW50ZXJuYWwocywgYmxvY2ssIG1vdGlvbl94 LCBtb3Rpb25feSwgNiwgMSk7CiAgICAgZWxzZQogICAgICAgICBtcGVnMV9lbmNvZGVfbWJfaW50 ZXJuYWwocywgYmxvY2ssIG1vdGlvbl94LCBtb3Rpb25feSwgOCwgMCk7CkBAIC0xMDQ4LDcgKzEw NDgsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4KQogICAgIHN0YXRpYyBBVk9uY2UgaW5pdF9zdGF0aWNfb25jZSA9IEFWX09OQ0VfSU5JVDsK ICAgICBNUEVHMTJFbmNDb250ZXh0ICpjb25zdCBtcGVnMTIgPSBhdmN0eC0+cHJpdl9kYXRhOwog ICAgIE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtID0gJm1wZWcxMi0+bXBlZzsKLSAgICBNcGVn RW5jQ29udGV4dCAgICAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgICAgKmNv bnN0IHMgPSAmbS0+czsKICAgICBpbnQgcmV0OwogICAgIGludCBtYXhfc2l6ZSA9IGF2Y3R4LT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPID8gMTYzODMgOiA0MDk1OwogCkBAIC0x MDcxLDcgKzEwNzEsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2luaXQoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4KQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHMtPnFfc2NhbGVfdHlw ZSA9PSAxKSB7CisgICAgaWYgKHMtPmMucV9zY2FsZV90eXBlID09IDEpIHsKICAgICAgICAgaWYg KGF2Y3R4LT5xbWF4ID4gMjgpIHsKICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VS Uk9SLAogICAgICAgICAgICAgICAgICAgICJub24gbGluZWFyIHF1YW50IG9ubHkgc3VwcG9ydHMg cW1heCA8PSAyOCBjdXJyZW50bHlcbiIpOwpAQCAtMTExMyw3ICsxMTEzLDcgQEAgc3RhdGljIGF2 X2NvbGQgaW50IGVuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICBtLT5lbmNv ZGVfcGljdHVyZV9oZWFkZXIgPSBtcGVnMV9lbmNvZGVfcGljdHVyZV9oZWFkZXI7CiAgICAgcy0+ ZW5jb2RlX21iICAgICAgICAgICAgID0gbXBlZzEyX2VuY29kZV9tYjsKIAotICAgIHMtPm1lLm12 X3BlbmFsdHkgPSBtdl9wZW5hbHR5OworICAgIHMtPmMubWUubXZfcGVuYWx0eSA9IG12X3BlbmFs dHk7CiAgICAgbS0+ZmNvZGVfdGFiICAgICA9IGZjb2RlX3RhYiArIE1BWF9NVjsKICAgICBpZiAo YXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8pIHsKICAgICAgICAgcy0+ bWluX3Fjb2VmZiA9IC0yNTU7CkBAIC0xMTIxLDkgKzExMjEsOSBAQCBzdGF0aWMgYXZfY29sZCBp bnQgZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgIH0gZWxzZSB7CiAgICAg ICAgIHMtPm1pbl9xY29lZmYgPSAtMjA0NzsKICAgICAgICAgcy0+bWF4X3Fjb2VmZiA9IDIwNDc7 Ci0gICAgICAgIHMtPm1wZWdfcXVhbnQgPSAxOworICAgICAgICBzLT5jLm1wZWdfcXVhbnQgPSAx OwogICAgIH0KLSAgICBpZiAocy0+aW50cmFfdmxjX2Zvcm1hdCkgeworICAgIGlmIChzLT5jLmlu dHJhX3ZsY19mb3JtYXQpIHsKICAgICAgICAgcy0+aW50cmFfYWNfdmxjX2xlbmd0aCAgICAgID0K ICAgICAgICAgcy0+aW50cmFfYWNfdmxjX2xhc3RfbGVuZ3RoID0gdW5pX21wZWcyX2FjX3ZsY19s ZW47CiAgICAgfSBlbHNlIHsKQEAgLTExMzgsNyArMTEzOCw3IEBAIHN0YXRpYyBhdl9jb2xkIGlu dCBlbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgIHJldHVybiByZXQ7 CiAKICAgICBpZiAoYXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8gJiYK LSAgICAgICAgcy0+dGhyZWFkX2NvbnRleHRbcy0+c2xpY2VfY29udGV4dF9jb3VudCAtIDFdLT5z dGFydF9tYl95ID4KKyAgICAgICAgcy0+Yy50aHJlYWRfY29udGV4dFtzLT5jLnNsaWNlX2NvbnRl eHRfY291bnQgLSAxXS0+c3RhcnRfbWJfeSA+CiAgICAgICAgICAgICBTTElDRV9NQVhfU1RBUlRf Q09ERSAtIFNMSUNFX01JTl9TVEFSVF9DT0RFKSB7CiAgICAgICAgIC8vIE1QRUctMSBzbGljZXMg bXVzdCBub3Qgc3RhcnQgYXQgYSBNQiByb3cgbnVtYmVyIHRoYXQgd291bGQgbWFrZQogICAgICAg ICAvLyB0aGVpciBzdGFydCBjb2RlID4gU0xJQ0VfTUFYX1NUQVJUX0NPREUuIFNvIG1ha2UgdGhl IGxhc3Qgc2xpY2UKQEAgLTExNDgsMTUgKzExNDgsMTUgQEAgc3RhdGljIGF2X2NvbGQgaW50IGVu Y29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICAgICAgICAgICAgICAgICAgICAi dGhlIGNhc2UgaW4gd2hpY2ggdGhlcmUgaXMgbm8gd29yayB0byBkbyBmb3Igc29tZSAiCiAgICAg ICAgICAgICAgICAgICAgICAgInNsaWNlIGNvbnRleHRzLiIpOwogICAgICAgICBjb25zdCBpbnQg bWJfaGVpZ2h0ID0gU0xJQ0VfTUFYX1NUQVJUX0NPREUgLSBTTElDRV9NSU5fU1RBUlRfQ09ERTsK LSAgICAgICAgY29uc3QgaW50IG5iX3NsaWNlcyA9IHMtPnNsaWNlX2NvbnRleHRfY291bnQgLSAx OworICAgICAgICBjb25zdCBpbnQgbmJfc2xpY2VzID0gcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50 IC0gMTsKIAotICAgICAgICBzLT50aHJlYWRfY29udGV4dFtuYl9zbGljZXNdLT5zdGFydF9tYl95 ID0gbWJfaGVpZ2h0OworICAgICAgICBzLT5jLnRocmVhZF9jb250ZXh0W25iX3NsaWNlc10tPnN0 YXJ0X21iX3kgPSBtYl9oZWlnaHQ7CiAKICAgICAgICAgYXZfYXNzZXJ0MShuYl9zbGljZXMgPj0g MSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJfc2xpY2VzOyBpKyspIHsKLSAgICAg ICAgICAgIHMtPnRocmVhZF9jb250ZXh0W2ldLT5zdGFydF9tYl95ID0KKyAgICAgICAgICAgIHMt PmMudGhyZWFkX2NvbnRleHRbaV0tPnN0YXJ0X21iX3kgPQogICAgICAgICAgICAgICAgIChtYl9o ZWlnaHQgKiAoaSAgICApICsgbmJfc2xpY2VzIC8gMikgLyBuYl9zbGljZXM7Ci0gICAgICAgICAg ICBzLT50aHJlYWRfY29udGV4dFtpXS0+ZW5kX21iX3kgICA9CisgICAgICAgICAgICBzLT5jLnRo cmVhZF9jb250ZXh0W2ldLT5lbmRfbWJfeSAgID0KICAgICAgICAgICAgICAgICAobWJfaGVpZ2h0 ICogKGkgKyAxKSArIG5iX3NsaWNlcyAvIDIpIC8gbmJfc2xpY2VzOwogICAgICAgICB9CiAgICAg fQpAQCAtMTIyOSw5ICsxMjI5LDkgQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIG1wZWcxX29wdGlv bnNbXSA9IHsKIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBtcGVnMl9vcHRpb25zW10gPSB7CiAgICAg Q09NTU9OX09QVFMKICAgICB7ICJpbnRyYV92bGMiLCAgICAgICAgIlVzZSBNUEVHLTIgaW50cmEg VkxDIHRhYmxlLiIsCi0gICAgICBGRl9NUFZfT0ZGU0VUKGludHJhX3ZsY19mb3JtYXQpLCAgICBB Vl9PUFRfVFlQRV9CT09MLCB7IC5pNjQgPSAwIH0sIDAsIDEsIFZFIH0sCi0gICAgeyAibm9uX2xp bmVhcl9xdWFudCIsICJVc2Ugbm9ubGluZWFyIHF1YW50aXplci4iLCAgICBGRl9NUFZfT0ZGU0VU KHFfc2NhbGVfdHlwZSksICAgQVZfT1BUX1RZUEVfQk9PTCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBW RSB9LAotICAgIHsgImFsdGVybmF0ZV9zY2FuIiwgICAiRW5hYmxlIGFsdGVybmF0ZSBzY2FudGFi bGUuIiwgRkZfTVBWX09GRlNFVChhbHRlcm5hdGVfc2NhbiksIEFWX09QVF9UWVBFX0JPT0wsIHsg Lmk2NCA9IDAgfSwgMCwgMSwgVkUgfSwKKyAgICAgIEZGX01QVl9PRkZTRVQoYy5pbnRyYV92bGNf Zm9ybWF0KSwgICAgQVZfT1BUX1RZUEVfQk9PTCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBWRSB9LAor ICAgIHsgIm5vbl9saW5lYXJfcXVhbnQiLCAiVXNlIG5vbmxpbmVhciBxdWFudGl6ZXIuIiwgICAg RkZfTVBWX09GRlNFVChjLnFfc2NhbGVfdHlwZSksICAgQVZfT1BUX1RZUEVfQk9PTCwgeyAuaTY0 ID0gMCB9LCAwLCAxLCBWRSB9LAorICAgIHsgImFsdGVybmF0ZV9zY2FuIiwgICAiRW5hYmxlIGFs dGVybmF0ZSBzY2FudGFibGUuIiwgRkZfTVBWX09GRlNFVChjLmFsdGVybmF0ZV9zY2FuKSwgQVZf T1BUX1RZUEVfQk9PTCwgeyAuaTY0ID0gMCB9LCAwLCAxLCBWRSB9LAogICAgIHsgImE1M2NjIiwg IlVzZSBBNTMgQ2xvc2VkIENhcHRpb25zIChpZiBhdmFpbGFibGUpIiwgT0ZGU0VUKGE1M19jYyks ICAgICAgICAgQVZfT1BUX1RZUEVfQk9PTCwgeyAuaTY0ID0gMSB9LCAwLCAxLCBWRSB9LAogICAg IHsgInNlcV9kaXNwX2V4dCIsICAgICAiV3JpdGUgc2VxdWVuY2VfZGlzcGxheV9leHRlbnNpb24g YmxvY2tzLiIsIE9GRlNFVChzZXFfZGlzcF9leHQpLCBBVl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9 IC0xIH0sIC0xLCAxLCBWRSwgLnVuaXQgPSAic2VxX2Rpc3BfZXh0IiB9LAogICAgIHsgICAgICJh dXRvIiwgICBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgIHsuaTY0ID0gLTF9LCAgMCwgMCwg VkUsIC51bml0ID0gInNlcV9kaXNwX2V4dCIgfSwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBl ZzEyZW5jLmggYi9saWJhdmNvZGVjL21wZWcxMmVuYy5oCmluZGV4IDhmZmE0NzFhNjMuLmE4YWVh ZGJiM2UgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZzEyZW5jLmgKKysrIGIvbGliYXZjb2Rl Yy9tcGVnMTJlbmMuaApAQCAtMjQsMTYgKzI0LDE2IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4K IAotI2luY2x1ZGUgIm1wZWd2aWRlby5oIgorI2luY2x1ZGUgIm1wZWd2aWRlb2VuYy5oIgogI2lu Y2x1ZGUgIm1wZWd2aWRlb2RhdGEuaCIKIAotdm9pZCBmZl9tcGVnMV9lbmNvZGVfc2xpY2VfaGVh ZGVyKE1wZWdFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfbXBlZzFfZW5jb2RlX3NsaWNlX2hlYWRl cihNUFZFbmNDb250ZXh0ICpzKTsKIAogLy8gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBpbnRy YV9kY19wcmVjaXNpb24gaGFzIGJlZW4gc2FuaXRpemVkIGluIGZmX21wdl9lbmNvZGVfaW5pdCgp Ci1zdGF0aWMgaW5saW5lIHZvaWQgZmZfbXBlZzFfZW5jb2RlX2luaXQoTXBlZ0VuY0NvbnRleHQg KnMpCitzdGF0aWMgaW5saW5lIHZvaWQgZmZfbXBlZzFfZW5jb2RlX2luaXQoTVBWRW5jQ29udGV4 dCAqcykKIHsKLSAgICBzLT55X2RjX3NjYWxlX3RhYmxlID0KLSAgICBzLT5jX2RjX3NjYWxlX3Rh YmxlID0gZmZfbXBlZzEyX2RjX3NjYWxlX3RhYmxlW3MtPmludHJhX2RjX3ByZWNpc2lvbl07Cisg ICAgcy0+Yy55X2RjX3NjYWxlX3RhYmxlID0KKyAgICBzLT5jLmNfZGNfc2NhbGVfdGFibGUgPSBm Zl9tcGVnMTJfZGNfc2NhbGVfdGFibGVbcy0+Yy5pbnRyYV9kY19wcmVjaXNpb25dOwogfQogCiAj ZW5kaWYgLyogQVZDT0RFQ19NUEVHMTJFTkNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9t cGVnNHZpZGVvZW5jLmMgYi9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuYwppbmRleCBkZGI2OTU4 MjI5Li45ZjkzM2I1MTdlIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuYwor KysgYi9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuYwpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMg aW5saW5lIE1wZWc0RW5jQ29udGV4dCAqbWFpbmN0eF90b19tcGVnNChNUFZNYWluRW5jQ29udGV4 dCAqbSkKICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGJpdHMgdGhhdCBlbmNvZGluZyB0aGUgOHg4 IGJsb2NrIGluIGJsb2NrIHdvdWxkIG5lZWQuCiAgKiBAcGFyYW1baW5dICBibG9ja19sYXN0X2lu ZGV4IGxhc3QgaW5kZXggaW4gc2NhbnRhYmxlIG9yZGVyIHRoYXQgcmVmZXJzIHRvIGEgbm9uIHpl cm8gZWxlbWVudCBpbiBibG9jay4KICAqLwotc3RhdGljIGlubGluZSBpbnQgZ2V0X2Jsb2NrX3Jh dGUoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbNjRdLAorc3RhdGljIGlubGluZSBp bnQgZ2V0X2Jsb2NrX3JhdGUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1s2 NF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tfbGFzdF9pbmRl eCwgY29uc3QgdWludDhfdCBzY2FudGFibGVbNjRdKQogewogICAgIGludCBsYXN0ID0gMDsKQEAg LTExNSwxMTMgKzExNSwxMTMgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X2Jsb2NrX3JhdGUoTXBl Z0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbNjRdLAogCiAvKioKICAqIFJlc3RvcmUgdGhl IGFjIGNvZWZmaWNpZW50cyBpbiBibG9jayB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IGRlY2lk ZV9hY19wcmVkKCkuCi0gKiBUaGlzIGZ1bmN0aW9uIGFsc28gcmVzdG9yZXMgcy0+YmxvY2tfbGFz dF9pbmRleC4KKyAqIFRoaXMgZnVuY3Rpb24gYWxzbyByZXN0b3JlcyBzLT5jLmJsb2NrX2xhc3Rf aW5kZXguCiAgKiBAcGFyYW1baW4sb3V0XSBibG9jayBNQiBjb2VmZmljaWVudHMsIHRoZXNlIHdp bGwgYmUgcmVzdG9yZWQKICAqIEBwYXJhbVtpbl0gZGlyIGFjIHByZWRpY3Rpb24gZGlyZWN0aW9u IGZvciBlYWNoIDh4OCBibG9jawogICogQHBhcmFtW291dF0gc3Qgc2NhbnRhYmxlIGZvciBlYWNo IDh4OCBibG9jawogICogQHBhcmFtW2luXSB6aWd6YWdfbGFzdF9pbmRleCBpbmRleCByZWZlcnJp bmcgdG8gdGhlIGxhc3Qgbm9uIHplcm8gY29lZmZpY2llbnQgaW4gemlnemFnIG9yZGVyCiAgKi8K LXN0YXRpYyBpbmxpbmUgdm9pZCByZXN0b3JlX2FjX2NvZWZmcyhNcGVnRW5jQ29udGV4dCAqcywg aW50MTZfdCBibG9ja1s2XVs2NF0sCitzdGF0aWMgaW5saW5lIHZvaWQgcmVzdG9yZV9hY19jb2Vm ZnMoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1s2XVs2NF0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGRpcls2XSwgY29uc3QgdWlu dDhfdCAqc3RbNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg aW50IHppZ3phZ19sYXN0X2luZGV4WzZdKQogewogICAgIGludCBpLCBuOwotICAgIG1lbWNweShz LT5ibG9ja19sYXN0X2luZGV4LCB6aWd6YWdfbGFzdF9pbmRleCwgc2l6ZW9mKGludCkgKiA2KTsK KyAgICBtZW1jcHkocy0+Yy5ibG9ja19sYXN0X2luZGV4LCB6aWd6YWdfbGFzdF9pbmRleCwgc2l6 ZW9mKGludCkgKiA2KTsKIAogICAgIGZvciAobiA9IDA7IG4gPCA2OyBuKyspIHsKLSAgICAgICAg aW50MTZfdCAqYWNfdmFsID0gJnMtPmFjX3ZhbFswXVswXVswXSArIHMtPmJsb2NrX2luZGV4W25d ICogMTY7CisgICAgICAgIGludDE2X3QgKmFjX3ZhbCA9ICZzLT5jLmFjX3ZhbFswXVswXVswXSAr IHMtPmMuYmxvY2tfaW5kZXhbbl0gKiAxNjsKIAotICAgICAgICBzdFtuXSA9IHMtPmludHJhX3Nj YW50YWJsZS5wZXJtdXRhdGVkOworICAgICAgICBzdFtuXSA9IHMtPmMuaW50cmFfc2NhbnRhYmxl LnBlcm11dGF0ZWQ7CiAgICAgICAgIGlmIChkaXJbbl0pIHsKICAgICAgICAgICAgIC8qIHRvcCBw cmVkaWN0aW9uICovCiAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgODsgaSsrKQotICAgICAg ICAgICAgICAgIGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpXV0gPSBhY192YWxb aSArIDhdOworICAgICAgICAgICAgICAgIGJsb2NrW25dW3MtPmMuaWRzcC5pZGN0X3Blcm11dGF0 aW9uW2ldXSA9IGFjX3ZhbFtpICsgOF07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAv KiBsZWZ0IHByZWRpY3Rpb24gKi8KICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCA4OyBpKysp Ci0gICAgICAgICAgICAgICAgYmxvY2tbbl1bcy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uW2kgPDwg M11dID0gYWNfdmFsW2ldOworICAgICAgICAgICAgICAgIGJsb2NrW25dW3MtPmMuaWRzcC5pZGN0 X3Blcm11dGF0aW9uW2kgPDwgM11dID0gYWNfdmFsW2ldOwogICAgICAgICB9CiAgICAgfQogfQog CiAvKioKICAqIFJldHVybiB0aGUgb3B0aW1hbCB2YWx1ZSAoMCBvciAxKSBmb3IgdGhlIGFjX3By ZWQgZWxlbWVudCBmb3IgdGhlIGdpdmVuIE1CIGluIE1QRUctNC4KLSAqIFRoaXMgZnVuY3Rpb24g d2lsbCBhbHNvIHVwZGF0ZSBzLT5ibG9ja19sYXN0X2luZGV4IGFuZCBzLT5hY192YWwuCisgKiBU aGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyB1cGRhdGUgcy0+Yy5ibG9ja19sYXN0X2luZGV4IGFuZCBz LT5jLmFjX3ZhbC4KICAqIEBwYXJhbVtpbixvdXRdIGJsb2NrIE1CIGNvZWZmaWNpZW50cywgdGhl c2Ugd2lsbCBiZSB1cGRhdGVkIGlmIDEgaXMgcmV0dXJuZWQKICAqIEBwYXJhbVtpbl0gZGlyIGFj IHByZWRpY3Rpb24gZGlyZWN0aW9uIGZvciBlYWNoIDh4OCBibG9jawogICogQHBhcmFtW291dF0g c3Qgc2NhbnRhYmxlIGZvciBlYWNoIDh4OCBibG9jawogICogQHBhcmFtW291dF0gemlnemFnX2xh c3RfaW5kZXggaW5kZXggcmVmZXJyaW5nIHRvIHRoZSBsYXN0IG5vbiB6ZXJvIGNvZWZmaWNpZW50 IGluIHppZ3phZyBvcmRlcgogICovCi1zdGF0aWMgaW5saW5lIGludCBkZWNpZGVfYWNfcHJlZChN cGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCBibG9ja1s2XVs2NF0sCitzdGF0aWMgaW5saW5lIGlu dCBkZWNpZGVfYWNfcHJlZChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrWzZd WzY0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBkaXJbNl0s IGNvbnN0IHVpbnQ4X3QgKnN0WzZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHppZ3phZ19sYXN0X2luZGV4WzZdKQogewogICAgIGludCBzY29yZSA9IDA7CiAgICAgaW50 IGksIG47Ci0gICAgY29uc3QgaW50OF90ICpjb25zdCBxc2NhbGVfdGFibGUgPSBzLT5jdXJfcGlj LnFzY2FsZV90YWJsZTsKKyAgICBjb25zdCBpbnQ4X3QgKmNvbnN0IHFzY2FsZV90YWJsZSA9IHMt PmMuY3VyX3BpYy5xc2NhbGVfdGFibGU7CiAKLSAgICBtZW1jcHkoemlnemFnX2xhc3RfaW5kZXgs IHMtPmJsb2NrX2xhc3RfaW5kZXgsIHNpemVvZihpbnQpICogNik7CisgICAgbWVtY3B5KHppZ3ph Z19sYXN0X2luZGV4LCBzLT5jLmJsb2NrX2xhc3RfaW5kZXgsIHNpemVvZihpbnQpICogNik7CiAK ICAgICBmb3IgKG4gPSAwOyBuIDwgNjsgbisrKSB7CiAgICAgICAgIGludDE2X3QgKmFjX3ZhbCwg KmFjX3ZhbDE7CiAKLSAgICAgICAgc2NvcmUgLT0gZ2V0X2Jsb2NrX3JhdGUocywgYmxvY2tbbl0s IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkKTsKKyAgICAgICAgc2NvcmUgLT0gZ2V0X2Js b2NrX3JhdGUocywgYmxvY2tbbl0sIHMtPmMuYmxvY2tfbGFzdF9pbmRleFtuXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZCk7 CiAKLSAgICAgICAgYWNfdmFsICA9ICZzLT5hY192YWxbMF1bMF1bMF0gKyBzLT5ibG9ja19pbmRl eFtuXSAqIDE2OworICAgICAgICBhY192YWwgID0gJnMtPmMuYWNfdmFsWzBdWzBdWzBdICsgcy0+ Yy5ibG9ja19pbmRleFtuXSAqIDE2OwogICAgICAgICBhY192YWwxID0gYWNfdmFsOwogICAgICAg ICBpZiAoZGlyW25dKSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgeHkgPSBzLT5tYl94ICsgcy0+ bWJfeSAqIHMtPm1iX3N0cmlkZSAtIHMtPm1iX3N0cmlkZTsKKyAgICAgICAgICAgIGNvbnN0IGlu dCB4eSA9IHMtPmMubWJfeCArIHMtPmMubWJfeSAqIHMtPmMubWJfc3RyaWRlIC0gcy0+Yy5tYl9z dHJpZGU7CiAgICAgICAgICAgICAvKiB0b3AgcHJlZGljdGlvbiAqLwotICAgICAgICAgICAgYWNf dmFsIC09IHMtPmJsb2NrX3dyYXBbbl0gKiAxNjsKLSAgICAgICAgICAgIGlmIChzLT5tYl95ID09 IDAgfHwgcy0+cXNjYWxlID09IHFzY2FsZV90YWJsZVt4eV0gfHwgbiA9PSAyIHx8IG4gPT0gMykg eworICAgICAgICAgICAgYWNfdmFsIC09IHMtPmMuYmxvY2tfd3JhcFtuXSAqIDE2OworICAgICAg ICAgICAgaWYgKHMtPmMubWJfeSA9PSAwIHx8IHMtPmMucXNjYWxlID09IHFzY2FsZV90YWJsZVt4 eV0gfHwgbiA9PSAyIHx8IG4gPT0gMykgewogICAgICAgICAgICAgICAgIC8qIHNhbWUgcXNjYWxl ICovCiAgICAgICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IDg7IGkrKykgewotICAgICAgICAg ICAgICAgICAgICBjb25zdCBpbnQgbGV2ZWwgPSBibG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVybXV0 YXRpb25baV1dOwotICAgICAgICAgICAgICAgICAgICBibG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVy bXV0YXRpb25baV1dID0gbGV2ZWwgLSBhY192YWxbaSArIDhdOwotICAgICAgICAgICAgICAgICAg ICBhY192YWwxW2ldICAgICA9IGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpIDw8 IDNdXTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxldmVsID0gYmxvY2tbbl1bcy0+ Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25baV1dOworICAgICAgICAgICAgICAgICAgICBibG9ja1tu XVtzLT5jLmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpXV0gPSBsZXZlbCAtIGFjX3ZhbFtpICsgOF07 CisgICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFbaV0gICAgID0gYmxvY2tbbl1bcy0+Yy5pZHNw LmlkY3RfcGVybXV0YXRpb25baSA8PCAzXV07CiAgICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFb aSArIDhdID0gbGV2ZWw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgICAgICAvKiBkaWZmZXJlbnQgcXNjYWxlLCB3ZSBtdXN0IHJlc2NhbGUgKi8K ICAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgODsgaSsrKSB7Ci0gICAgICAgICAgICAg ICAgICAgIGNvbnN0IGludCBsZXZlbCA9IGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlv bltpXV07Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRh dGlvbltpXV0gPSBsZXZlbCAtIFJPVU5ERURfRElWKGFjX3ZhbFtpICsgOF0gKiBxc2NhbGVfdGFi bGVbeHldLCBzLT5xc2NhbGUpOwotICAgICAgICAgICAgICAgICAgICBhY192YWwxW2ldICAgICA9 IGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpIDw8IDNdXTsKKyAgICAgICAgICAg ICAgICAgICAgY29uc3QgaW50IGxldmVsID0gYmxvY2tbbl1bcy0+Yy5pZHNwLmlkY3RfcGVybXV0 YXRpb25baV1dOworICAgICAgICAgICAgICAgICAgICBibG9ja1tuXVtzLT5jLmlkc3AuaWRjdF9w ZXJtdXRhdGlvbltpXV0gPSBsZXZlbCAtIFJPVU5ERURfRElWKGFjX3ZhbFtpICsgOF0gKiBxc2Nh bGVfdGFibGVbeHldLCBzLT5jLnFzY2FsZSk7CisgICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFb aV0gICAgID0gYmxvY2tbbl1bcy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25baSA8PCAzXV07CiAg ICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFbaSArIDhdID0gbGV2ZWw7CiAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3Rbbl0gPSBzLT5wZXJtdXRhdGVkX2lu dHJhX2hfc2NhbnRhYmxlOworICAgICAgICAgICAgc3Rbbl0gPSBzLT5jLnBlcm11dGF0ZWRfaW50 cmFfaF9zY2FudGFibGU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQg eHkgPSBzLT5tYl94IC0gMSArIHMtPm1iX3kgKiBzLT5tYl9zdHJpZGU7CisgICAgICAgICAgICBj b25zdCBpbnQgeHkgPSBzLT5jLm1iX3ggLSAxICsgcy0+Yy5tYl95ICogcy0+Yy5tYl9zdHJpZGU7 CiAgICAgICAgICAgICAvKiBsZWZ0IHByZWRpY3Rpb24gKi8KICAgICAgICAgICAgIGFjX3ZhbCAt PSAxNjsKLSAgICAgICAgICAgIGlmIChzLT5tYl94ID09IDAgfHwgcy0+cXNjYWxlID09IHFzY2Fs ZV90YWJsZVt4eV0gfHwgbiA9PSAxIHx8IG4gPT0gMykgeworICAgICAgICAgICAgaWYgKHMtPmMu bWJfeCA9PSAwIHx8IHMtPmMucXNjYWxlID09IHFzY2FsZV90YWJsZVt4eV0gfHwgbiA9PSAxIHx8 IG4gPT0gMykgewogICAgICAgICAgICAgICAgIC8qIHNhbWUgcXNjYWxlICovCiAgICAgICAgICAg ICAgICAgZm9yIChpID0gMTsgaSA8IDg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBjb25z dCBpbnQgbGV2ZWwgPSBibG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25baSA8PCAzXV07 Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltp IDw8IDNdXSA9IGxldmVsIC0gYWNfdmFsW2ldOworICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQgbGV2ZWwgPSBibG9ja1tuXVtzLT5jLmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpIDw8IDNdXTsK KyAgICAgICAgICAgICAgICAgICAgYmxvY2tbbl1bcy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25b aSA8PCAzXV0gPSBsZXZlbCAtIGFjX3ZhbFtpXTsKICAgICAgICAgICAgICAgICAgICAgYWNfdmFs MVtpXSAgICAgPSBsZXZlbDsKLSAgICAgICAgICAgICAgICAgICAgYWNfdmFsMVtpICsgOF0gPSBi bG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25baV1dOworICAgICAgICAgICAgICAgICAg ICBhY192YWwxW2kgKyA4XSA9IGJsb2NrW25dW3MtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2ld XTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg ICAgIC8qIGRpZmZlcmVudCBxc2NhbGUsIHdlIG11c3QgcmVzY2FsZSAqLwogICAgICAgICAgICAg ICAgIGZvciAoaSA9IDE7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg aW50IGxldmVsID0gYmxvY2tbbl1bcy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uW2kgPDwgM11dOwot ICAgICAgICAgICAgICAgICAgICBibG9ja1tuXVtzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25baSA8 PCAzXV0gPSBsZXZlbCAtIFJPVU5ERURfRElWKGFjX3ZhbFtpXSAqIHFzY2FsZV90YWJsZVt4eV0s IHMtPnFzY2FsZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsZXZlbCA9IGJsb2Nr W25dW3MtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2kgPDwgM11dOworICAgICAgICAgICAgICAg ICAgICBibG9ja1tuXVtzLT5jLmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpIDw8IDNdXSA9IGxldmVs IC0gUk9VTkRFRF9ESVYoYWNfdmFsW2ldICogcXNjYWxlX3RhYmxlW3h5XSwgcy0+Yy5xc2NhbGUp OwogICAgICAgICAgICAgICAgICAgICBhY192YWwxW2ldICAgICA9IGxldmVsOwotICAgICAgICAg ICAgICAgICAgICBhY192YWwxW2kgKyA4XSA9IGJsb2NrW25dW3MtPmlkc3AuaWRjdF9wZXJtdXRh dGlvbltpXV07CisgICAgICAgICAgICAgICAgICAgIGFjX3ZhbDFbaSArIDhdID0gYmxvY2tbbl1b cy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25baV1dOwogICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgIHN0W25dID0gcy0+cGVybXV0YXRlZF9pbnRyYV92X3NjYW50 YWJsZTsKKyAgICAgICAgICAgIHN0W25dID0gcy0+Yy5wZXJtdXRhdGVkX2ludHJhX3Zfc2NhbnRh YmxlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpID0gNjM7IGkgPiAwOyBpLS0pICAvLyBG SVhNRSBvcHRpbWl6ZQogICAgICAgICAgICAgaWYgKGJsb2NrW25dW3N0W25dW2ldXSkKICAgICAg ICAgICAgICAgICBicmVhazsKLSAgICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFtuXSA9IGk7Cisg ICAgICAgIHMtPmMuYmxvY2tfbGFzdF9pbmRleFtuXSA9IGk7CiAKLSAgICAgICAgc2NvcmUgKz0g Z2V0X2Jsb2NrX3JhdGUocywgYmxvY2tbbl0sIHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0sIHN0W25d KTsKKyAgICAgICAgc2NvcmUgKz0gZ2V0X2Jsb2NrX3JhdGUocywgYmxvY2tbbl0sIHMtPmMuYmxv Y2tfbGFzdF9pbmRleFtuXSwgc3Rbbl0pOwogICAgIH0KIAogICAgIGlmIChzY29yZSA8IDApIHsK QEAgLTIzNSwzOSArMjM1LDM4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRlY2lkZV9hY19wcmVkKE1w ZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90IGJsb2NrWzZdWzY0XSwKIC8qKgogICogbW9kaWZ5IG1i X3R5cGUgJiBxc2NhbGUgc28gdGhhdCBlbmNvZGluZyBpcyBhY3R1YWxseSBwb3NzaWJsZSBpbiBN UEVHLTQKICAqLwotdm9pZCBmZl9jbGVhbl9tcGVnNF9xc2NhbGVzKE1wZWdFbmNDb250ZXh0ICpz KQordm9pZCBmZl9jbGVhbl9tcGVnNF9xc2NhbGVzKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7 Ci0gICAgaW50IGk7Ci0gICAgaW50OF90ICpjb25zdCBxc2NhbGVfdGFibGUgPSBzLT5jdXJfcGlj LnFzY2FsZV90YWJsZTsKKyAgICBpbnQ4X3QgKmNvbnN0IHFzY2FsZV90YWJsZSA9IHMtPmMuY3Vy X3BpYy5xc2NhbGVfdGFibGU7CiAKICAgICBmZl9jbGVhbl9oMjYzX3FzY2FsZXMocyk7CiAKLSAg ICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAgaWYgKHMtPmMu cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CiAgICAgICAgIGludCBvZGQgPSAwOwog ICAgICAgICAvKiBvaywgY29tZSBvbiwgdGhpcyBpc24ndCBmdW5ueSBhbnltb3JlLCB0aGVyZSdz IG1vcmUgY29kZSBmb3IKICAgICAgICAgICogaGFuZGxpbmcgdGhpcyBNUEVHLTQgbWVzcyB0aGFu IGZvciB0aGUgYWN0dWFsIGFkYXB0aXZlIHF1YW50aXphdGlvbiAqLwogCi0gICAgICAgIGZvciAo aSA9IDA7IGkgPCBzLT5tYl9udW07IGkrKykgewotICAgICAgICAgICAgaW50IG1iX3h5ID0gcy0+ bWJfaW5kZXgyeHlbaV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+Yy5tYl9udW07 IGkrKykgeworICAgICAgICAgICAgaW50IG1iX3h5ID0gcy0+Yy5tYl9pbmRleDJ4eVtpXTsKICAg ICAgICAgICAgIG9kZCArPSBxc2NhbGVfdGFibGVbbWJfeHldICYgMTsKICAgICAgICAgfQogCi0g ICAgICAgIGlmICgyICogb2RkID4gcy0+bWJfbnVtKQorICAgICAgICBpZiAoMiAqIG9kZCA+IHMt PmMubWJfbnVtKQogICAgICAgICAgICAgb2RkID0gMTsKICAgICAgICAgZWxzZQogICAgICAgICAg ICAgb2RkID0gMDsKIAotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bWJfbnVtOyBpKyspIHsK LSAgICAgICAgICAgIGludCBtYl94eSA9IHMtPm1iX2luZGV4Mnh5W2ldOworICAgICAgICBmb3Ig KGludCBpID0gMDsgaSA8IHMtPmMubWJfbnVtOyBpKyspIHsKKyAgICAgICAgICAgIGludCBtYl94 eSA9IHMtPmMubWJfaW5kZXgyeHlbaV07CiAgICAgICAgICAgICBpZiAoKHFzY2FsZV90YWJsZVtt Yl94eV0gJiAxKSAhPSBvZGQpCiAgICAgICAgICAgICAgICAgcXNjYWxlX3RhYmxlW21iX3h5XSsr OwogICAgICAgICAgICAgaWYgKHFzY2FsZV90YWJsZVttYl94eV0gPiAzMSkKICAgICAgICAgICAg ICAgICBxc2NhbGVfdGFibGVbbWJfeHldID0gMzE7CiAgICAgICAgIH0KIAotICAgICAgICBmb3Ig KGkgPSAxOyBpIDwgcy0+bWJfbnVtOyBpKyspIHsKLSAgICAgICAgICAgIGludCBtYl94eSA9IHMt Pm1iX2luZGV4Mnh5W2ldOwotICAgICAgICAgICAgaWYgKHFzY2FsZV90YWJsZVttYl94eV0gIT0g cXNjYWxlX3RhYmxlW3MtPm1iX2luZGV4Mnh5W2kgLSAxXV0gJiYKKyAgICAgICAgZm9yIChpbnQg aSA9IDE7IGkgPCBzLT5jLm1iX251bTsgaSsrKSB7CisgICAgICAgICAgICBpbnQgbWJfeHkgPSBz LT5jLm1iX2luZGV4Mnh5W2ldOworICAgICAgICAgICAgaWYgKHFzY2FsZV90YWJsZVttYl94eV0g IT0gcXNjYWxlX3RhYmxlW3MtPmMubWJfaW5kZXgyeHlbaSAtIDFdXSAmJgogICAgICAgICAgICAg ICAgIChzLT5tYl90eXBlW21iX3h5XSAmIENBTkRJREFURV9NQl9UWVBFX0RJUkVDVCkpIHsKICAg ICAgICAgICAgICAgICBzLT5tYl90eXBlW21iX3h5XSB8PSBDQU5ESURBVEVfTUJfVFlQRV9CSURJ UjsKICAgICAgICAgICAgIH0KQEAgLTMwNCw3ICszMDMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBt cGVnNF9nZXRfZGNfbGVuZ3RoKGludCBsZXZlbCwgaW50IG4pCiAgKiBFbmNvZGUgYW4gOHg4IGJs b2NrLgogICogQHBhcmFtIG4gYmxvY2sgaW5kZXggKDAtMyBhcmUgbHVtYSwgNC01IGFyZSBjaHJv bWEpCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBtcGVnNF9lbmNvZGVfYmxvY2soY29uc3QgTXBl Z0VuY0NvbnRleHQgKnMsCitzdGF0aWMgaW5saW5lIHZvaWQgbXBlZzRfZW5jb2RlX2Jsb2NrKGNv bnN0IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IGludHJhX2RjLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzY2FuX3Rh YmxlLCBQdXRCaXRDb250ZXh0ICpkY19wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHV0Qml0Q29udGV4dCAqYWNfcGIpCkBAIC0zMTIsOSArMzExLDkgQEAgc3RhdGlj IGlubGluZSB2b2lkIG1wZWc0X2VuY29kZV9ibG9jayhjb25zdCBNcGVnRW5jQ29udGV4dCAqcywK ICAgICBpbnQgaSwgbGFzdF9ub25femVybzsKICAgICBjb25zdCB1aW50MzJfdCAqYml0c190YWI7 CiAgICAgY29uc3QgdWludDhfdCAqbGVuX3RhYjsKLSAgICBjb25zdCBpbnQgbGFzdF9pbmRleCA9 IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisgICAgY29uc3QgaW50IGxhc3RfaW5kZXggPSBzLT5j LmJsb2NrX2xhc3RfaW5kZXhbbl07CiAKLSAgICBpZiAocy0+bWJfaW50cmEpIHsgIC8vIE5vdGUg Z2NjICgzLjIuMSBhdCBsZWFzdCkgd2lsbCBvcHRpbWl6ZSB0aGlzIGF3YXkKKyAgICBpZiAocy0+ Yy5tYl9pbnRyYSkgeyAgLy8gTm90ZSBnY2MgKDMuMi4xIGF0IGxlYXN0KSB3aWxsIG9wdGltaXpl IHRoaXMgYXdheQogICAgICAgICAvKiBNUEVHLTQgYmFzZWQgREMgcHJlZGljdG9yICovCiAgICAg ICAgIG1wZWc0X2VuY29kZV9kYyhkY19wYiwgaW50cmFfZGMsIG4pOwogICAgICAgICBpZiAobGFz dF9pbmRleCA8IDEpCkBAIC0zNjUsMTYgKzM2NCwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbXBl ZzRfZW5jb2RlX2Jsb2NrKGNvbnN0IE1wZWdFbmNDb250ZXh0ICpzLAogICAgIH0KIH0KIAotc3Rh dGljIGludCBtcGVnNF9nZXRfYmxvY2tfbGVuZ3RoKE1wZWdFbmNDb250ZXh0ICpzLAorc3RhdGlj IGludCBtcGVnNF9nZXRfYmxvY2tfbGVuZ3RoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqYmxvY2ssIGludCBu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnRyYV9kYywgY29uc3Qg dWludDhfdCAqc2Nhbl90YWJsZSkKIHsKICAgICBpbnQgaSwgbGFzdF9ub25femVybzsKICAgICBj b25zdCB1aW50OF90ICpsZW5fdGFiOwotICAgIGNvbnN0IGludCBsYXN0X2luZGV4ID0gcy0+Ymxv Y2tfbGFzdF9pbmRleFtuXTsKKyAgICBjb25zdCBpbnQgbGFzdF9pbmRleCA9IHMtPmMuYmxvY2tf bGFzdF9pbmRleFtuXTsKICAgICBpbnQgbGVuID0gMDsKIAotICAgIGlmIChzLT5tYl9pbnRyYSkg eyAgLy8gTm90ZSBnY2MgKDMuMi4xIGF0IGxlYXN0KSB3aWxsIG9wdGltaXplIHRoaXMgYXdheQor ICAgIGlmIChzLT5jLm1iX2ludHJhKSB7ICAvLyBOb3RlIGdjYyAoMy4yLjEgYXQgbGVhc3QpIHdp bGwgb3B0aW1pemUgdGhpcyBhd2F5CiAgICAgICAgIC8qIE1QRUctNCBiYXNlZCBEQyBwcmVkaWN0 b3IgKi8KICAgICAgICAgbGVuICs9IG1wZWc0X2dldF9kY19sZW5ndGgoaW50cmFfZGMsIG4pOwog ICAgICAgICBpZiAobGFzdF9pbmRleCA8IDEpCkBAIC00MTksNyArNDE4LDcgQEAgc3RhdGljIGlu dCBtcGVnNF9nZXRfYmxvY2tfbGVuZ3RoKE1wZWdFbmNDb250ZXh0ICpzLAogICAgIHJldHVybiBs ZW47CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtcGVnNF9lbmNvZGVfYmxvY2tzKE1wZWdFbmND b250ZXh0ICpzLAorc3RhdGljIGlubGluZSB2b2lkIG1wZWc0X2VuY29kZV9ibG9ja3MoTVBWRW5j Q29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGludDE2X3QgYmxvY2tbNl1bNjRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgaW50IGludHJhX2RjWzZdLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqIGNvbnN0ICpzY2FuX3RhYmxlLApAQCAt NDI5LDcgKzQyOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtcGVnNF9lbmNvZGVfYmxvY2tzKE1w ZWdFbmNDb250ZXh0ICpzLAogICAgIGludCBpOwogCiAgICAgaWYgKHNjYW5fdGFibGUpIHsKLSAg ICAgICAgaWYgKHMtPmF2Y3R4LT5mbGFnczIgJiBBVl9DT0RFQ19GTEFHMl9OT19PVVRQVVQpIHsK KyAgICAgICAgaWYgKHMtPmMuYXZjdHgtPmZsYWdzMiAmIEFWX0NPREVDX0ZMQUcyX05PX09VVFBV VCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAgICAgICAg ICBza2lwX3B1dF9iaXRzKCZzLT5wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1w ZWc0X2dldF9ibG9ja19sZW5ndGgocywgYmxvY2tbaV0sIGksCkBAIC00NDEsMjggKzQ0MCwyOCBA QCBzdGF0aWMgaW5saW5lIHZvaWQgbXBlZzRfZW5jb2RlX2Jsb2NrcyhNcGVnRW5jQ29udGV4dCAq cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cmFfZGNbaV0sIHNjYW5f dGFibGVbaV0sIGRjX3BiLCBhY19wYik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAg ICBpZiAocy0+YXZjdHgtPmZsYWdzMiAmIEFWX0NPREVDX0ZMQUcyX05PX09VVFBVVCkgeworICAg ICAgICBpZiAocy0+Yy5hdmN0eC0+ZmxhZ3MyICYgQVZfQ09ERUNfRkxBRzJfTk9fT1VUUFVUKSB7 CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgICAgIHNr aXBfcHV0X2JpdHMoJnMtPnBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBlZzRf Z2V0X2Jsb2NrX2xlbmd0aChzLCBibG9ja1tpXSwgaSwgMCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11 dGF0ZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZCkpOwogICAgICAgICB9IGVsc2Ug ewogICAgICAgICAgICAgLyogZW5jb2RlIGVhY2ggYmxvY2sgKi8KICAgICAgICAgICAgIGZvciAo aSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICAgICAgbXBlZzRfZW5jb2RlX2Jsb2NrKHMs IGJsb2NrW2ldLCBpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5p bnRyYV9zY2FudGFibGUucGVybXV0YXRlZCwgZGNfcGIsIGFjX3BiKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZCwgZGNf cGIsIGFjX3BiKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBpbnQgZ2V0 X2JfY2JwKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90IGJsb2NrWzZdWzY0XSwKK3N0YXRpYyBp bmxpbmUgaW50IGdldF9iX2NicChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2Nr WzZdWzY0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW90aW9uX3gsIGludCBt b3Rpb25feSwgaW50IG1iX3R5cGUpCiB7CiAgICAgaW50IGNicCA9IDAsIGk7CiAKICAgICBpZiAo cy0+bXB2X2ZsYWdzICYgRkZfTVBWX0ZMQUdfQ0JQX1JEKSB7CiAgICAgICAgIGludCBzY29yZSAg ICAgICAgPSAwOwotICAgICAgICBjb25zdCBpbnQgbGFtYmRhID0gcy0+bGFtYmRhMiA+PiAoRkZf TEFNQkRBX1NISUZUIC0gNik7CisgICAgICAgIGNvbnN0IGludCBsYW1iZGEgPSBzLT5jLmxhbWJk YTIgPj4gKEZGX0xBTUJEQV9TSElGVCAtIDYpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2 OyBpKyspIHsKICAgICAgICAgICAgIGlmIChzLT5jb2RlZF9zY29yZVtpXSA8IDApIHsKQEAgLTQ4 MiwxNCArNDgxLDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF9iX2NicChNcGVnRW5jQ29udGV4 dCAqcywgaW50MTZfdCBibG9ja1s2XVs2NF0sCiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGkg PSAwOyBpIDwgNjsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtp XSA+PSAwICYmICgoY2JwID4+ICg1IC0gaSkpICYgMSkgPT0gMCkgewotICAgICAgICAgICAgICAg IHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKLSAgICAgICAgICAgICAgICBzLT5iZHNwLmNs ZWFyX2Jsb2NrKHMtPmJsb2NrW2ldKTsKKyAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xhc3Rf aW5kZXhbaV0gPj0gMCAmJiAoKGNicCA+PiAoNSAtIGkpKSAmIDEpID09IDApIHsKKyAgICAgICAg ICAgICAgICBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKKyAgICAgICAgICAgICAgICBz LT5jLmJkc3AuY2xlYXJfYmxvY2socy0+Yy5ibG9ja1tpXSk7CiAgICAgICAgICAgICB9CiAgICAg ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7Ci0g ICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKQorICAgICAgICAgICAg aWYgKHMtPmMuYmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKQogICAgICAgICAgICAgICAgIGNicCB8 PSAxIDw8ICg1IC0gaSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00OTksMjkgKzQ5OCwyOSBAQCBz dGF0aWMgaW5saW5lIGludCBnZXRfYl9jYnAoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxv Y2tbNl1bNjRdLAogLy8gRklYTUUgdGhpcyBpcyBkdXBsaWNhdGVkIHRvIGgyNjMuYwogc3RhdGlj IGNvbnN0IGludCBkcXVhbnRfY29kZVs1XSA9IHsgMSwgMCwgOSwgMiwgMyB9OwogCi1zdGF0aWMg dm9pZCBtcGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxv Y2tbXVs2NF0sCitzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfbWIoTVBWRW5jQ29udGV4dCAqY29u c3QgcywgaW50MTZfdCBibG9ja1tdWzY0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgbW90aW9uX3gsIGludCBtb3Rpb25feSkKIHsKICAgICBpbnQgY2JwYywgY2JweSwgcHJlZF94 LCBwcmVkX3k7Ci0gICAgUHV0Qml0Q29udGV4dCAqY29uc3QgcGIyICAgID0gcy0+ZGF0YV9wYXJ0 aXRpb25pbmcgPyAmcy0+cGIyIDogJnMtPnBiOwotICAgIFB1dEJpdENvbnRleHQgKmNvbnN0IHRl eF9wYiA9IHMtPmRhdGFfcGFydGl0aW9uaW5nICYmIHMtPnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJF X1RZUEVfQiA/ICZzLT50ZXhfcGIgOiAmcy0+cGI7Ci0gICAgUHV0Qml0Q29udGV4dCAqY29uc3Qg ZGNfcGIgID0gcy0+ZGF0YV9wYXJ0aXRpb25pbmcgJiYgcy0+cGljdF90eXBlICE9IEFWX1BJQ1RV UkVfVFlQRV9JID8gJnMtPnBiMiA6ICZzLT5wYjsKLSAgICBjb25zdCBpbnQgaW50ZXJsZWF2ZWRf c3RhdHMgPSAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMSkgJiYgIXMtPmRh dGFfcGFydGl0aW9uaW5nID8gMSA6IDA7CisgICAgUHV0Qml0Q29udGV4dCAqY29uc3QgcGIyICAg ID0gcy0+Yy5kYXRhX3BhcnRpdGlvbmluZyA/ICZzLT5wYjIgOiAmcy0+cGI7CisgICAgUHV0Qml0 Q29udGV4dCAqY29uc3QgdGV4X3BiID0gcy0+Yy5kYXRhX3BhcnRpdGlvbmluZyAmJiBzLT5jLnBp Y3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfQiA/ICZzLT50ZXhfcGIgOiAmcy0+cGI7CisgICAg UHV0Qml0Q29udGV4dCAqY29uc3QgZGNfcGIgID0gcy0+Yy5kYXRhX3BhcnRpdGlvbmluZyAmJiBz LT5jLnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfSSA/ICZzLT5wYjIgOiAmcy0+cGI7Cisg ICAgY29uc3QgaW50IGludGVybGVhdmVkX3N0YXRzID0gKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZf Q09ERUNfRkxBR19QQVNTMSkgJiYgIXMtPmMuZGF0YV9wYXJ0aXRpb25pbmcgPyAxIDogMDsKIAot ICAgIGlmICghcy0+bWJfaW50cmEpIHsKKyAgICBpZiAoIXMtPmMubWJfaW50cmEpIHsKICAgICAg ICAgaW50IGksIGNicDsKIAotICAgICAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVf VFlQRV9CKSB7CisgICAgICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVf QikgewogICAgICAgICAgICAgLyogY29udmVydCBmcm9tIG12X2RpciB0byB0eXBlICovCiAgICAg ICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1iX3R5cGVfdGFibGVbOF0gPSB7IC0xLCAzLCAyLCAx LCAtMSwgLTEsIC0xLCAwIH07Ci0gICAgICAgICAgICBpbnQgbWJfdHlwZSA9IG1iX3R5cGVfdGFi bGVbcy0+bXZfZGlyXTsKKyAgICAgICAgICAgIGludCBtYl90eXBlID0gbWJfdHlwZV90YWJsZVtz LT5jLm12X2Rpcl07CiAKLSAgICAgICAgICAgIGlmIChzLT5tYl94ID09IDApIHsKKyAgICAgICAg ICAgIGlmIChzLT5jLm1iX3ggPT0gMCkgewogICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCAyOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbaV1bMF1bMF0gPQotICAg ICAgICAgICAgICAgICAgICBzLT5sYXN0X212W2ldWzBdWzFdID0KLSAgICAgICAgICAgICAgICAg ICAgcy0+bGFzdF9tdltpXVsxXVswXSA9Ci0gICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZb aV1bMV1bMV0gPSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbaV1bMF1bMF0g PQorICAgICAgICAgICAgICAgICAgICBzLT5jLmxhc3RfbXZbaV1bMF1bMV0gPQorICAgICAgICAg ICAgICAgICAgICBzLT5jLmxhc3RfbXZbaV1bMV1bMF0gPQorICAgICAgICAgICAgICAgICAgICBz LT5jLmxhc3RfbXZbaV1bMV1bMV0gPSAwOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBh dl9hc3NlcnQyKHMtPmRxdWFudCA+PSAtMiAmJiBzLT5kcXVhbnQgPD0gMik7CkBAIC01MjksMTQg KzUyOCwxNCBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNv bnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAgICBhdl9hc3NlcnQyKG1iX3R5 cGUgPj0gMCk7CiAKICAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gaWYgdGhpcyBNQiB3YXMg c2tpcHBlZCBpbiB0aGUgbmV4dCBQLWZyYW1lICovCi0gICAgICAgICAgICBpZiAocy0+bmV4dF9w aWMubWJza2lwX3RhYmxlW3MtPm1iX3kgKiBzLT5tYl9zdHJpZGUgKyBzLT5tYl94XSkgeyAgLy8g RklYTUUgYXZvaWQgRENUICYgLi4uCi0gICAgICAgICAgICAgICAgcy0+bXZbMF1bMF1bMF0gPQot ICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzFdID0KLSAgICAgICAgICAgICAgICBzLT5tdlsx XVswXVswXSA9Ci0gICAgICAgICAgICAgICAgcy0+bXZbMV1bMF1bMV0gPSAwOwotICAgICAgICAg ICAgICAgIHMtPm12X2RpciAgPSBNVl9ESVJfRk9SV0FSRDsgIC8vIGRvZXNuJ3QgbWF0dGVyCi0g ICAgICAgICAgICAgICAgcy0+cXNjYWxlIC09IHMtPmRxdWFudDsKLS8vICAgICAgICAgICAgICAg IHMtPm1iX3NraXBwZWQgPSAxOworICAgICAgICAgICAgaWYgKHMtPmMubmV4dF9waWMubWJza2lw X3RhYmxlW3MtPmMubWJfeSAqIHMtPmMubWJfc3RyaWRlICsgcy0+Yy5tYl94XSkgeyAgLy8gRklY TUUgYXZvaWQgRENUICYgLi4uCisgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVswXSA9Cisg ICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsxXSA9CisgICAgICAgICAgICAgICAgcy0+Yy5t dlsxXVswXVswXSA9CisgICAgICAgICAgICAgICAgcy0+Yy5tdlsxXVswXVsxXSA9IDA7CisgICAg ICAgICAgICAgICAgcy0+Yy5tdl9kaXIgID0gTVZfRElSX0ZPUldBUkQ7ICAvLyBkb2Vzbid0IG1h dHRlcgorICAgICAgICAgICAgICAgIHMtPmMucXNjYWxlIC09IHMtPmRxdWFudDsKKy8vICAgICAg ICAgICAgICAgIHMtPmMubWJfc2tpcHBlZCA9IDE7CiAKICAgICAgICAgICAgICAgICByZXR1cm47 CiAgICAgICAgICAgICB9CkBAIC01NjgsNzEgKzU2Nyw3MSBAQCBzdGF0aWMgdm9pZCBtcGVnNF9l bmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAg ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIs IDEsIDApOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcy0+cXNjYWxlIC09 IHMtPmRxdWFudDsKKyAgICAgICAgICAgICAgICBzLT5jLnFzY2FsZSAtPSBzLT5kcXVhbnQ7CiAK LSAgICAgICAgICAgIGlmICghcy0+cHJvZ3Jlc3NpdmVfc2VxdWVuY2UpIHsKKyAgICAgICAgICAg IGlmICghcy0+Yy5wcm9ncmVzc2l2ZV9zZXF1ZW5jZSkgewogICAgICAgICAgICAgICAgIGlmIChj YnApCi0gICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+aW50ZXJsYWNl ZF9kY3QpOworICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmMuaW50 ZXJsYWNlZF9kY3QpOwogICAgICAgICAgICAgICAgIGlmIChtYl90eXBlKSAgICAgICAgICAgICAg ICAgIC8vIG5vdCBkaXJlY3QgbW9kZQotICAgICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+ cGIsIDEsIHMtPm12X3R5cGUgPT0gTVZfVFlQRV9GSUVMRCk7CisgICAgICAgICAgICAgICAgICAg IHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5tdl90eXBlID09IE1WX1RZUEVfRklFTEQpOwogICAg ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaW50ZXJsZWF2ZWRfc3RhdHMpCiAgICAgICAg ICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAKICAgICAgICAgICAg IGlmICghbWJfdHlwZSkgewotICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIocy0+bXZfZGlyICYg TVZfRElSRUNUKTsKKyAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKHMtPmMubXZfZGlyICYgTVZf RElSRUNUKTsKICAgICAgICAgICAgICAgICBmZl9oMjYzX2VuY29kZV9tb3Rpb25fdmVjdG9yKHMs IG1vdGlvbl94LCBtb3Rpb25feSwgMSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAgICAgIGF2X2Fzc2VydDIobWJfdHlwZSA+IDAgJiYgbWJfdHlwZSA8IDQpOwotICAgICAgICAg ICAgICAgIGlmIChzLT5tdl90eXBlICE9IE1WX1RZUEVfRklFTEQpIHsKLSAgICAgICAgICAgICAg ICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7CisgICAgICAgICAgICAgICAg aWYgKHMtPmMubXZfdHlwZSAhPSBNVl9UWVBFX0ZJRUxEKSB7CisgICAgICAgICAgICAgICAgICAg IGlmIChzLT5jLm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgICBmZl9oMjYzX2VuY29kZV9tb3Rpb25fdmVjdG9yKHMsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdIC0gcy0+bGFz dF9tdlswXVswXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+bXZbMF1bMF1bMV0gLSBzLT5sYXN0X212WzBdWzBdWzFdLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5mX2NvZGUp OwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlswXVswXVswXSA9Ci0gICAgICAg ICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzBdWzFdWzBdID0gcy0+bXZbMF1bMF1bMF07Ci0g ICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzBdWzBdWzFdID0KLSAgICAgICAgICAg ICAgICAgICAgICAgIHMtPmxhc3RfbXZbMF1bMV1bMV0gPSBzLT5tdlswXVswXVsxXTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsw XVswXVswXSAtIHMtPmMubGFzdF9tdlswXVswXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsxXSAtIHMtPmMubGFz dF9tdlswXVswXVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+Yy5mX2NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5s YXN0X212WzBdWzBdWzBdID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubGFzdF9tdlsw XVsxXVswXSA9IHMtPmMubXZbMF1bMF1bMF07CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5j Lmxhc3RfbXZbMF1bMF1bMV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5sYXN0X212 WzBdWzFdWzFdID0gcy0+Yy5tdlswXVswXVsxXTsKICAgICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICAgICBpZiAocy0+bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7CisgICAg ICAgICAgICAgICAgICAgIGlmIChzLT5jLm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkgewogICAg ICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9uX3ZlY3RvcihzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlsx XVswXVswXSAtIHMtPmxhc3RfbXZbMV1bMF1bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzFdWzBdWzFdIC0gcy0+bGFzdF9tdlsx XVswXVsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+Yl9jb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1b MF1bMF0gPQotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlsxXVsxXVswXSA9IHMt Pm12WzFdWzBdWzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlsxXVswXVsx XSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X212WzFdWzFdWzFdID0gcy0+bXZb MV1bMF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPmMubXZbMV1bMF1bMF0gLSBzLT5jLmxhc3RfbXZbMV1bMF1bMF0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMV1b MF1bMV0gLSBzLT5jLmxhc3RfbXZbMV1bMF1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuYl9jb2RlKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHMtPmMubGFzdF9tdlsxXVswXVswXSA9CisgICAgICAgICAgICAgICAgICAgICAg ICBzLT5jLmxhc3RfbXZbMV1bMV1bMF0gPSBzLT5jLm12WzFdWzBdWzBdOworICAgICAgICAgICAg ICAgICAgICAgICAgcy0+Yy5sYXN0X212WzFdWzBdWzFdID0KKyAgICAgICAgICAgICAgICAgICAg ICAgIHMtPmMubGFzdF9tdlsxXVsxXVsxXSA9IHMtPmMubXZbMV1bMF1bMV07CiAgICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg ICBpZiAocy0+bXZfZGlyICYgTVZfRElSX0ZPUldBUkQpIHsKLSAgICAgICAgICAgICAgICAgICAg ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ZmllbGRfc2VsZWN0WzBdWzBdKTsKLSAgICAgICAg ICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ZmllbGRfc2VsZWN0WzBdWzFd KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmMubXZfZGlyICYgTVZfRElSX0ZPUldBUkQp IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVs ZF9zZWxlY3RbMF1bMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBi LCAxLCBzLT5jLmZpZWxkX3NlbGVjdFswXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkgewotICAg ICAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5maWVsZF9zZWxlY3Rb MV1bMF0pOwotICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5m aWVsZF9zZWxlY3RbMV1bMV0pOworICAgICAgICAgICAgICAgICAgICBpZiAocy0+Yy5tdl9kaXIg JiBNVl9ESVJfQkFDS1dBUkQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZz LT5wYiwgMSwgcy0+Yy5maWVsZF9zZWxlY3RbMV1bMF0pOworICAgICAgICAgICAgICAgICAgICAg ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmZpZWxkX3NlbGVjdFsxXVsxXSk7CiAgICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJ Ul9GT1JXQVJEKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jLm12X2RpciAmIE1WX0RJ Ul9GT1JXQVJEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjsg aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9u X3ZlY3RvcihzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+bXZbMF1baV1bMF0gLSBzLT5sYXN0X212WzBdW2ldWzBdLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZb MF1baV1bMV0gLSBzLT5sYXN0X212WzBdW2ldWzFdIC8gMiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmZfY29kZSk7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdF9tdlswXVtpXVswXSA9IHMtPm12WzBdW2ldWzBd OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMF1baV1bMV0gPSBzLT5t dlswXVtpXVsxXSAqIDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ldWzBdIC0gcy0+Yy5sYXN0X212WzBdW2ldWzBd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcy0+Yy5tdlswXVtpXVsxXSAtIHMtPmMubGFzdF9tdlswXVtpXVsxXSAvIDIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmZf Y29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5sYXN0X212WzBdW2ldWzBd ID0gcy0+Yy5tdlswXVtpXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmxh c3RfbXZbMF1baV1bMV0gPSBzLT5jLm12WzBdW2ldWzFdICogMjsKICAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAo cy0+bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChz LT5jLm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkgewogICAgICAgICAgICAgICAgICAgICAgICAg Zm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZm X2gyNjNfZW5jb2RlX21vdGlvbl92ZWN0b3IocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzFdW2ldWzBdIC0gcy0+bGFzdF9t dlsxXVtpXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPm12WzFdW2ldWzFdIC0gcy0+bGFzdF9tdlsxXVtpXVsxXSAvIDIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz LT5iX2NvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZbMV1baV1b MF0gPSBzLT5tdlsxXVtpXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0 X212WzFdW2ldWzFdID0gcy0+bXZbMV1baV1bMV0gKiAyOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsxXVtpXVswXSAtIHMt PmMubGFzdF9tdlsxXVtpXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMV1baV1bMV0gLSBzLT5jLmxhc3RfbXZbMV1b aV1bMV0gLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+Yy5iX2NvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMt PmMubGFzdF9tdlsxXVtpXVswXSA9IHMtPmMubXZbMV1baV1bMF07CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+Yy5sYXN0X212WzFdW2ldWzFdID0gcy0+Yy5tdlsxXVtpXVsxXSAqIDI7 CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICB9CkBAIC02NDUsMTEgKzY0NCwxMSBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNv ZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAKICAg ICAgICAgICAgIGlmIChpbnRlcmxlYXZlZF9zdGF0cykKICAgICAgICAgICAgICAgICBzLT5wX3Rl eF9iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7Ci0gICAgICAgIH0gZWxzZSB7IC8qIHMtPnBpY3Rf dHlwZT09QVZfUElDVFVSRV9UWVBFX0IgKi8KKyAgICAgICAgfSBlbHNlIHsgLyogcy0+Yy5waWN0 X3R5cGU9PUFWX1BJQ1RVUkVfVFlQRV9CICovCiAgICAgICAgICAgICBjYnAgPSBnZXRfcF9jYnAo cywgYmxvY2ssIG1vdGlvbl94LCBtb3Rpb25feSk7CiAKICAgICAgICAgICAgIGlmICgoY2JwIHwg bW90aW9uX3ggfCBtb3Rpb25feSB8IHMtPmRxdWFudCkgPT0gMCAmJgotICAgICAgICAgICAgICAg IHMtPm12X3R5cGUgPT0gTVZfVFlQRV8xNlgxNikgeworICAgICAgICAgICAgICAgIHMtPmMubXZf dHlwZSA9PSBNVl9UWVBFXzE2WDE2KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgTVBWTWFpbkVu Y0NvbnRleHQgKmNvbnN0IG0gPSBzbGljZV90b19tYWluZW5jKHMpOwogICAgICAgICAgICAgICAg IC8qIENoZWNrIGlmIHRoZSBCLWZyYW1lcyBjYW4gc2tpcCBpdCB0b28sIGFzIHdlIG11c3Qgc2tp cCBpdAogICAgICAgICAgICAgICAgICAqIGlmIHdlIHNraXAgaGVyZSB3aHkgZGlkbid0IHRoZXkg anVzdCBjb21wcmVzcwpAQCAtNjU4LDEzICs2NTcsMTMgQEAgc3RhdGljIHZvaWQgbXBlZzRfZW5j b2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRdLAogICAg ICAgICAgICAgICAgICAgICBpbnQgeCwgeSwgb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBj b25zdCB1aW50OF90ICpwX3BpYzsKIAotICAgICAgICAgICAgICAgICAgICB4ID0gcy0+bWJfeCAq IDE2OwotICAgICAgICAgICAgICAgICAgICB5ID0gcy0+bWJfeSAqIDE2OworICAgICAgICAgICAg ICAgICAgICB4ID0gcy0+Yy5tYl94ICogMTY7CisgICAgICAgICAgICAgICAgICAgIHkgPSBzLT5j Lm1iX3kgKiAxNjsKIAotICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB4ICsgeSAqIHMtPmxp bmVzaXplOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB4ICsgeSAqIHMtPmMubGluZXNp emU7CiAgICAgICAgICAgICAgICAgICAgIHBfcGljICA9IHMtPm5ld19waWMtPmRhdGFbMF0gKyBv ZmZzZXQ7CiAKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfc2tpcHBlZCA9IDE7CisgICAgICAg ICAgICAgICAgICAgIHMtPmMubWJfc2tpcHBlZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgbS0+bWF4X2JfZnJhbWVzOyBpKyspIHsKICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJfcGljOwogICAgICAgICAgICAgICAgICAgICAgICAg aW50IGRpZmY7CkBAIC02NzcsMjkgKzY3NiwyOSBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVf bWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoIXBpYy0+c2hhcmVkKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJfcGljICs9IElOUExBQ0VfT0ZGU0VUOwogCi0gICAgICAgICAgICAgICAgICAgICAg ICBpZiAoeCArIDE2ID4gcy0+d2lkdGggfHwgeSArIDE2ID4gcy0+aGVpZ2h0KSB7CisgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoeCArIDE2ID4gcy0+Yy53aWR0aCB8fCB5ICsgMTYgPiBzLT5j LmhlaWdodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4MSwgeTE7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHhlID0gRkZNSU4oMTYsIHMtPndpZHRoIC0geCk7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHllID0gRkZNSU4oMTYsIHMtPmhlaWdo dCAtIHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4ZSA9IEZGTUlOKDE2LCBz LT5jLndpZHRoIC0geCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHllID0gRkZN SU4oMTYsIHMtPmMuaGVpZ2h0IC0geSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlm ZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh5MSA9IDA7IHkxIDwgeWU7 IHkxKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh4MSA9IDA7IHgx IDwgeGU7IHgxKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYg Kz0gRkZBQlMocF9waWNbeDEgKyB5MSAqIHMtPmxpbmVzaXplXSAtIGJfcGljW3gxICsgeTEgKiBz LT5saW5lc2l6ZV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiAr PSBGRkFCUyhwX3BpY1t4MSArIHkxICogcy0+Yy5saW5lc2l6ZV0gLSBiX3BpY1t4MSArIHkxICog cy0+Yy5saW5lc2l6ZV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp ZmYgPSBkaWZmICogMjU2IC8gKHhlICogeWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gcy0+c2FkX2NtcFswXShO VUxMLCBwX3BpYywgYl9waWMsIHMtPmxpbmVzaXplLCAxNik7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGlmZiA9IHMtPnNhZF9jbXBbMF0oTlVMTCwgcF9waWMsIGJfcGljLCBzLT5jLmxp bmVzaXplLCAxNik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg ICAgICAgICBpZiAoZGlmZiA+IHMtPnFzY2FsZSAqIDcwKSB7ICAvLyBGSVhNRSBjaGVjayB0aGF0 IDcwIGlzIG9wdGltYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tYl9za2lwcGVk ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWZmID4gcy0+Yy5xc2NhbGUgKiA3 MCkgeyAgLy8gRklYTUUgY2hlY2sgdGhhdCA3MCBpcyBvcHRpbWFsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+Yy5tYl9za2lwcGVkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzLT5tYl9z a2lwcGVkID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9za2lwcGVkID0gMTsKIAot ICAgICAgICAgICAgICAgIGlmIChzLT5tYl9za2lwcGVkID09IDEpIHsKKyAgICAgICAgICAgICAg ICBpZiAocy0+Yy5tYl9za2lwcGVkID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgLyogc2tp cCBtYWNyb2Jsb2NrICovCiAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwg MSk7CiAKQEAgLTcxNiw3ICs3MTUsNyBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfbWIoTXBl Z0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAgICBj YnBjICA9IGNicCAmIDM7CiAgICAgICAgICAgICBjYnB5ICA9IGNicCA+PiAyOwogICAgICAgICAg ICAgY2JweSBePSAweGY7Ci0gICAgICAgICAgICBpZiAocy0+bXZfdHlwZSA9PSBNVl9UWVBFXzE2 WDE2KSB7CisgICAgICAgICAgICBpZiAocy0+Yy5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsK ICAgICAgICAgICAgICAgICBpZiAocy0+ZHF1YW50KQogICAgICAgICAgICAgICAgICAgICBjYnBj ICs9IDg7CiAgICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLApAQCAtNzI3LDkgKzcyNiw5 IEBAIHN0YXRpYyB2b2lkIG1wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3Qgcywg aW50MTZfdCBibG9ja1tdWzY0XSwKICAgICAgICAgICAgICAgICBpZiAocy0+ZHF1YW50KQogICAg ICAgICAgICAgICAgICAgICBwdXRfYml0cyhwYjIsIDIsIGRxdWFudF9jb2RlW3MtPmRxdWFudCAr IDJdKTsKIAotICAgICAgICAgICAgICAgIGlmICghcy0+cHJvZ3Jlc3NpdmVfc2VxdWVuY2UpIHsK KyAgICAgICAgICAgICAgICBpZiAoIXMtPmMucHJvZ3Jlc3NpdmVfc2VxdWVuY2UpIHsKICAgICAg ICAgICAgICAgICAgICAgaWYgKGNicCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9iaXRz KHBiMiwgMSwgcy0+aW50ZXJsYWNlZF9kY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgcHV0 X2JpdHMocGIyLCAxLCBzLT5jLmludGVybGFjZWRfZGN0KTsKICAgICAgICAgICAgICAgICAgICAg cHV0X2JpdHMocGIyLCAxLCAwKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTczNywxMyArNzM2 LDEzIEBAIHN0YXRpYyB2b2lkIG1wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3Qg cywgaW50MTZfdCBibG9ja1tdWzY0XSwKICAgICAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRz ICs9IGdldF9iaXRzX2RpZmYocyk7CiAKICAgICAgICAgICAgICAgICAvKiBtb3Rpb24gdmVjdG9y czogMTZ4MTYgbW9kZSAqLwotICAgICAgICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24ocywg MCwgMCwgJnByZWRfeCwgJnByZWRfeSk7CisgICAgICAgICAgICAgICAgZmZfaDI2M19wcmVkX21v dGlvbigmcy0+YywgMCwgMCwgJnByZWRfeCwgJnByZWRfeSk7CiAKICAgICAgICAgICAgICAgICBm Zl9oMjYzX2VuY29kZV9tb3Rpb25fdmVjdG9yKHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtb3Rpb25feCAtIHByZWRfeCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl95IC0gcHJlZF95LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Zl9jb2RlKTsKLSAgICAgICAg ICAgIH0gZWxzZSBpZiAocy0+bXZfdHlwZSA9PSBNVl9UWVBFX0ZJRUxEKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CisgICAgICAg ICAgICB9IGVsc2UgaWYgKHMtPmMubXZfdHlwZSA9PSBNVl9UWVBFX0ZJRUxEKSB7CiAgICAgICAg ICAgICAgICAgaWYgKHMtPmRxdWFudCkKICAgICAgICAgICAgICAgICAgICAgY2JwYyArPSA4Owog ICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwKQEAgLTc1NCw1MCArNzUzLDUwIEBAIHN0 YXRpYyB2b2lkIG1wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZf dCBibG9ja1tdWzY0XSwKICAgICAgICAgICAgICAgICBpZiAocy0+ZHF1YW50KQogICAgICAgICAg ICAgICAgICAgICBwdXRfYml0cyhwYjIsIDIsIGRxdWFudF9jb2RlW3MtPmRxdWFudCArIDJdKTsK IAotICAgICAgICAgICAgICAgIGF2X2Fzc2VydDIoIXMtPnByb2dyZXNzaXZlX3NlcXVlbmNlKTsK KyAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKCFzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlKTsK ICAgICAgICAgICAgICAgICBpZiAoY2JwKQotICAgICAgICAgICAgICAgICAgICBwdXRfYml0cyhw YjIsIDEsIHMtPmludGVybGFjZWRfZGN0KTsKKyAgICAgICAgICAgICAgICAgICAgcHV0X2JpdHMo cGIyLCAxLCBzLT5jLmludGVybGFjZWRfZGN0KTsKICAgICAgICAgICAgICAgICBwdXRfYml0cyhw YjIsIDEsIDEpOwogCiAgICAgICAgICAgICAgICAgaWYgKGludGVybGVhdmVkX3N0YXRzKQogICAg ICAgICAgICAgICAgICAgICBzLT5taXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlmZihzKTsKIAogICAg ICAgICAgICAgICAgIC8qIG1vdGlvbiB2ZWN0b3JzOiAxNng4IGludGVybGFjZWQgbW9kZSAqLwot ICAgICAgICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24ocywgMCwgMCwgJnByZWRfeCwgJnBy ZWRfeSk7CisgICAgICAgICAgICAgICAgZmZfaDI2M19wcmVkX21vdGlvbigmcy0+YywgMCwgMCwg JnByZWRfeCwgJnByZWRfeSk7CiAgICAgICAgICAgICAgICAgcHJlZF95IC89IDI7CiAKLSAgICAg ICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmZpZWxkX3NlbGVjdFswXVswXSk7Ci0g ICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5maWVsZF9zZWxlY3RbMF1bMV0p OworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVsZF9zZWxlY3Rb MF1bMF0pOworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5maWVsZF9z ZWxlY3RbMF1bMV0pOwogCiAgICAgICAgICAgICAgICAgZmZfaDI2M19lbmNvZGVfbW90aW9uX3Zl Y3RvcihzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ bXZbMF1bMF1bMF0gLSBwcmVkX3gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5tdlswXVswXVsxXSAtIHByZWRfeSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmZfY29kZSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzBdIC0gcHJlZF94LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsx XSAtIHByZWRfeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHMtPmMuZl9jb2RlKTsKICAgICAgICAgICAgICAgICBmZl9oMjYzX2VuY29kZV9tb3Rpb25fdmVj dG9yKHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5t dlswXVsxXVswXSAtIHByZWRfeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHMtPm12WzBdWzFdWzFdIC0gcHJlZF95LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcy0+Zl9jb2RlKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMV1bMF0gLSBwcmVkX3gsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzFdWzFd IC0gcHJlZF95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cy0+Yy5mX2NvZGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdl9h c3NlcnQyKHMtPm12X3R5cGUgPT0gTVZfVFlQRV84WDgpOworICAgICAgICAgICAgICAgIGF2X2Fz c2VydDIocy0+Yy5tdl90eXBlID09IE1WX1RZUEVfOFg4KTsKICAgICAgICAgICAgICAgICBwdXRf Yml0cygmcy0+cGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19pbnRlcl9NQ0JQ Q19iaXRzW2NicGMgKyAxNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19pbnRl cl9NQ0JQQ19jb2RlW2NicGMgKyAxNl0pOwogICAgICAgICAgICAgICAgIHB1dF9iaXRzKHBiMiwg ZmZfaDI2M19jYnB5X3RhYltjYnB5XVsxXSwgZmZfaDI2M19jYnB5X3RhYltjYnB5XVswXSk7CiAK LSAgICAgICAgICAgICAgICBpZiAoIXMtPnByb2dyZXNzaXZlX3NlcXVlbmNlICYmIGNicCkKLSAg ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMocGIyLCAxLCBzLT5pbnRlcmxhY2VkX2RjdCk7Cisg ICAgICAgICAgICAgICAgaWYgKCFzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlICYmIGNicCkKKyAg ICAgICAgICAgICAgICAgICAgcHV0X2JpdHMocGIyLCAxLCBzLT5jLmludGVybGFjZWRfZGN0KTsK IAogICAgICAgICAgICAgICAgIGlmIChpbnRlcmxlYXZlZF9zdGF0cykKICAgICAgICAgICAgICAg ICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAKICAgICAgICAgICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIG1vdGlv biB2ZWN0b3JzOiA4eDggbW9kZSovCi0gICAgICAgICAgICAgICAgICAgIGZmX2gyNjNfcHJlZF9t b3Rpb24ocywgaSwgMCwgJnByZWRfeCwgJnByZWRfeSk7CisgICAgICAgICAgICAgICAgICAgIGZm X2gyNjNfcHJlZF9tb3Rpb24oJnMtPmMsIGksIDAsICZwcmVkX3gsICZwcmVkX3kpOwogCiAgICAg ICAgICAgICAgICAgICAgIGZmX2gyNjNfZW5jb2RlX21vdGlvbl92ZWN0b3IocywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jdXJfcGljLm1vdGlv bl92YWxbMF1bcy0+YmxvY2tfaW5kZXhbaV1dWzBdIC0gcHJlZF94LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmN1cl9waWMubW90aW9uX3ZhbFsw XVtzLT5ibG9ja19pbmRleFtpXV1bMV0gLSBwcmVkX3ksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Zl9jb2RlKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFsw XVtzLT5jLmJsb2NrX2luZGV4W2ldXVswXSAtIHByZWRfeCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVtz LT5jLmJsb2NrX2luZGV4W2ldXVsxXSAtIHByZWRfeSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmZfY29kZSk7CiAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgfQogCkBAIC04MTgsMjkgKzgxNywyOSBAQCBzdGF0aWMgdm9pZCBtcGVn NF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0s CiAgICAgICAgIGludCBpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKSB7 Ci0gICAgICAgICAgICBpbnQgcHJlZCAgPSBmZl9tcGVnNF9wcmVkX2RjKHMsIGksICZkaXJbaV0p OwotICAgICAgICAgICAgaW50IHNjYWxlID0gaSA8IDQgPyBzLT55X2RjX3NjYWxlIDogcy0+Y19k Y19zY2FsZTsKKyAgICAgICAgICAgIGludCBwcmVkICA9IGZmX21wZWc0X3ByZWRfZGMoJnMtPmMs IGksICZkaXJbaV0pOworICAgICAgICAgICAgaW50IHNjYWxlID0gaSA8IDQgPyBzLT5jLnlfZGNf c2NhbGUgOiBzLT5jLmNfZGNfc2NhbGU7CiAKICAgICAgICAgICAgIHByZWQgPSBGQVNURElWKChw cmVkICsgKHNjYWxlID4+IDEpKSwgc2NhbGUpOwogICAgICAgICAgICAgZGNfZGlmZltpXSA9IGJs b2NrW2ldWzBdIC0gcHJlZDsKLSAgICAgICAgICAgIHMtPmRjX3ZhbFswXVtzLT5ibG9ja19pbmRl eFtpXV0gPSBhdl9jbGlwX3VpbnRwMihibG9ja1tpXVswXSAqIHNjYWxlLCAxMSk7CisgICAgICAg ICAgICBzLT5jLmRjX3ZhbFswXVtzLT5jLmJsb2NrX2luZGV4W2ldXSA9IGF2X2NsaXBfdWludHAy KGJsb2NrW2ldWzBdICogc2NhbGUsIDExKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzLT5h dmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0FDX1BSRUQpIHsKLSAgICAgICAgICAgIHMtPmFj X3ByZWQgPSBkZWNpZGVfYWNfcHJlZChzLCBibG9jaywgZGlyLCBzY2FuX3RhYmxlLCB6aWd6YWdf bGFzdF9pbmRleCk7CisgICAgICAgIGlmIChzLT5jLmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZM QUdfQUNfUFJFRCkgeworICAgICAgICAgICAgcy0+Yy5hY19wcmVkID0gZGVjaWRlX2FjX3ByZWQo cywgYmxvY2ssIGRpciwgc2Nhbl90YWJsZSwgemlnemFnX2xhc3RfaW5kZXgpOwogICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykKLSAgICAgICAgICAg ICAgICBzY2FuX3RhYmxlW2ldID0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CisgICAg ICAgICAgICAgICAgc2Nhbl90YWJsZVtpXSA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0 ZWQ7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBjb21wdXRlIGNicCAqLwogICAgICAgICBjYnAg PSAwOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQotICAgICAgICAgICAgaWYgKHMt PmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMSkKKyAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrX2xh c3RfaW5kZXhbaV0gPj0gMSkKICAgICAgICAgICAgICAgICBjYnAgfD0gMSA8PCAoNSAtIGkpOwog CiAgICAgICAgIGNicGMgPSBjYnAgJiAzOwotICAgICAgICBpZiAocy0+cGljdF90eXBlID09IEFW X1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNU VVJFX1RZUEVfSSkgewogICAgICAgICAgICAgaWYgKHMtPmRxdWFudCkKICAgICAgICAgICAgICAg ICBjYnBjICs9IDQ7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsCkBAIC04NTQsMTQgKzg1 MywxNCBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0 IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAgICAgICAgICAgICBmZl9oMjYzX2lu dGVyX01DQlBDX2JpdHNbY2JwYyArIDRdLAogICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M19p bnRlcl9NQ0JQQ19jb2RlW2NicGMgKyA0XSk7CiAgICAgICAgIH0KLSAgICAgICAgcHV0X2JpdHMo cGIyLCAxLCBzLT5hY19wcmVkKTsKKyAgICAgICAgcHV0X2JpdHMocGIyLCAxLCBzLT5jLmFjX3By ZWQpOwogICAgICAgICBjYnB5ID0gY2JwID4+IDI7CiAgICAgICAgIHB1dF9iaXRzKHBiMiwgZmZf aDI2M19jYnB5X3RhYltjYnB5XVsxXSwgZmZfaDI2M19jYnB5X3RhYltjYnB5XVswXSk7CiAgICAg ICAgIGlmIChzLT5kcXVhbnQpCiAgICAgICAgICAgICBwdXRfYml0cyhkY19wYiwgMiwgZHF1YW50 X2NvZGVbcy0+ZHF1YW50ICsgMl0pOwogCi0gICAgICAgIGlmICghcy0+cHJvZ3Jlc3NpdmVfc2Vx dWVuY2UpCi0gICAgICAgICAgICBwdXRfYml0cyhkY19wYiwgMSwgcy0+aW50ZXJsYWNlZF9kY3Qp OworICAgICAgICBpZiAoIXMtPmMucHJvZ3Jlc3NpdmVfc2VxdWVuY2UpCisgICAgICAgICAgICBw dXRfYml0cyhkY19wYiwgMSwgcy0+Yy5pbnRlcmxhY2VkX2RjdCk7CiAKICAgICAgICAgaWYgKGlu dGVybGVhdmVkX3N0YXRzKQogICAgICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2Rp ZmYocyk7CkBAIC04NzQsNyArODczLDcgQEAgc3RhdGljIHZvaWQgbXBlZzRfZW5jb2RlX21iKE1w ZWdFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRdLAogCiAgICAgICAgIC8q IHJlc3RvcmUgYWMgY29lZmZzICYgbGFzdF9pbmRleCBzdHVmZgogICAgICAgICAgKiBpZiB3ZSBt ZXNzZWQgdGhlbSB1cCB3aXRoIHRoZSBwcmVkaWN0aW9uICovCi0gICAgICAgIGlmIChzLT5hY19w cmVkKQorICAgICAgICBpZiAocy0+Yy5hY19wcmVkKQogICAgICAgICAgICAgcmVzdG9yZV9hY19j b2VmZnMocywgYmxvY2ssIGRpciwgc2Nhbl90YWJsZSwgemlnemFnX2xhc3RfaW5kZXgpOwogICAg IH0KIH0KQEAgLTg5MCwzMSArODg5LDMxIEBAIHZvaWQgZmZfbXBlZzRfc3R1ZmZpbmcoUHV0Qml0 Q29udGV4dCAqcGJjKQogfQogCiAvKiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgd3JpdGluZyB0aGUg aGVhZGVyICovCi12b2lkIGZmX3NldF9tcGVnNF90aW1lKE1wZWdFbmNDb250ZXh0ICpzKQordm9p ZCBmZl9zZXRfbXBlZzRfdGltZShNUFZFbmNDb250ZXh0ICpjb25zdCBzKQogewotICAgIGlmIChz LT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IpIHsKLSAgICAgICAgZmZfbXBlZzRfaW5p dF9kaXJlY3RfbXYocyk7CisgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQ RV9CKSB7CisgICAgICAgIGZmX21wZWc0X2luaXRfZGlyZWN0X212KCZzLT5jKTsKICAgICB9IGVs c2UgewotICAgICAgICBzLT5sYXN0X3RpbWVfYmFzZSA9IHMtPnRpbWVfYmFzZTsKLSAgICAgICAg cy0+dGltZV9iYXNlICAgICAgPSBGRlVESVYocy0+dGltZSwgcy0+YXZjdHgtPnRpbWVfYmFzZS5k ZW4pOworICAgICAgICBzLT5jLmxhc3RfdGltZV9iYXNlID0gcy0+Yy50aW1lX2Jhc2U7CisgICAg ICAgIHMtPmMudGltZV9iYXNlICAgICAgPSBGRlVESVYocy0+Yy50aW1lLCBzLT5jLmF2Y3R4LT50 aW1lX2Jhc2UuZGVuKTsKICAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIG1wZWc0X2VuY29kZV9nb3Bf aGVhZGVyKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0 ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwog ICAgIGludDY0X3QgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHM7CiAgICAgaW50NjRfdCB0aW1lOwog CiAgICAgcHV0X2JpdHMzMigmcy0+cGIsIEdPUF9TVEFSVENPREUpOwogCi0gICAgdGltZSA9IHMt PmN1cl9waWMucHRyLT5mLT5wdHM7CisgICAgdGltZSA9IHMtPmMuY3VyX3BpYy5wdHItPmYtPnB0 czsKICAgICBpZiAobS0+cmVvcmRlcmVkX2lucHV0X3BpY3R1cmVbMV0pCiAgICAgICAgIHRpbWUg PSBGRk1JTih0aW1lLCBtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVsxXS0+Zi0+cHRzKTsKLSAg ICB0aW1lID0gdGltZSAqIHMtPmF2Y3R4LT50aW1lX2Jhc2UubnVtOwotICAgIHMtPmxhc3RfdGlt ZV9iYXNlID0gRkZVRElWKHRpbWUsIHMtPmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsKKyAgICB0aW1l ID0gdGltZSAqIHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5udW07CisgICAgcy0+Yy5sYXN0X3RpbWVf YmFzZSA9IEZGVURJVih0aW1lLCBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsKIAotICAgIHNl Y29uZHMgPSBGRlVESVYodGltZSwgcy0+YXZjdHgtPnRpbWVfYmFzZS5kZW4pOworICAgIHNlY29u ZHMgPSBGRlVESVYodGltZSwgcy0+Yy5hdmN0eC0+dGltZV9iYXNlLmRlbik7CiAgICAgbWludXRl cyA9IEZGVURJVihzZWNvbmRzLCA2MCk7IHNlY29uZHMgPSBGRlVNT0Qoc2Vjb25kcywgNjApOwog ICAgIGhvdXJzICAgPSBGRlVESVYobWludXRlcywgNjApOyBtaW51dGVzID0gRkZVTU9EKG1pbnV0 ZXMsIDYwKTsKICAgICBob3VycyAgID0gRkZVTU9EKGhvdXJzICAsIDI0KTsKQEAgLTkyNCw3ICs5 MjMsNyBAQCBzdGF0aWMgdm9pZCBtcGVnNF9lbmNvZGVfZ29wX2hlYWRlcihNUFZNYWluRW5jQ29u dGV4dCAqY29uc3QgbSkKICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOwogICAgIHB1dF9iaXRz KCZzLT5wYiwgNiwgc2Vjb25kcyk7CiAKLSAgICBwdXRfYml0cygmcy0+cGIsIDEsICEhKHMtPmF2 Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQ0xPU0VEX0dPUCkpOworICAgIHB1dF9iaXRzKCZz LT5wYiwgMSwgISEocy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0NMT1NFRF9HT1Ap KTsKICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDApOyAgLy8gYnJva2VuIGxpbmsgPT0gTk8KIAog ICAgIGZmX21wZWc0X3N0dWZmaW5nKCZzLT5wYik7CkBAIC05MzIsMjAgKzkzMSwyMCBAQCBzdGF0 aWMgdm9pZCBtcGVnNF9lbmNvZGVfZ29wX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3Qg bSkKIAogc3RhdGljIHZvaWQgbXBlZzRfZW5jb2RlX3Zpc3VhbF9vYmplY3RfaGVhZGVyKE1QVk1h aW5FbmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0g Jm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAgIGludCBwcm9m aWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9uOwogICAgIGludCB2b192ZXJfaWQ7CiAKLSAgICBpZiAo cy0+YXZjdHgtPnByb2ZpbGUgIT0gQVZfUFJPRklMRV9VTktOT1dOKSB7Ci0gICAgICAgIHByb2Zp bGVfYW5kX2xldmVsX2luZGljYXRpb24gPSBzLT5hdmN0eC0+cHJvZmlsZSA8PCA0OwotICAgIH0g ZWxzZSBpZiAobS0+bWF4X2JfZnJhbWVzIHx8IHMtPnF1YXJ0ZXJfc2FtcGxlKSB7CisgICAgaWYg KHMtPmMuYXZjdHgtPnByb2ZpbGUgIT0gQVZfUFJPRklMRV9VTktOT1dOKSB7CisgICAgICAgIHBy b2ZpbGVfYW5kX2xldmVsX2luZGljYXRpb24gPSBzLT5jLmF2Y3R4LT5wcm9maWxlIDw8IDQ7Cisg ICAgfSBlbHNlIGlmIChtLT5tYXhfYl9mcmFtZXMgfHwgcy0+Yy5xdWFydGVyX3NhbXBsZSkgewog ICAgICAgICBwcm9maWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9uID0gMHhGMDsgIC8vIGFkdiBzaW1w bGUKICAgICB9IGVsc2UgewogICAgICAgICBwcm9maWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9uID0g MHgwMDsgIC8vIHNpbXBsZQogICAgIH0KIAotICAgIGlmIChzLT5hdmN0eC0+bGV2ZWwgIT0gQVZf TEVWRUxfVU5LTk9XTikKLSAgICAgICAgcHJvZmlsZV9hbmRfbGV2ZWxfaW5kaWNhdGlvbiB8PSBz LT5hdmN0eC0+bGV2ZWw7CisgICAgaWYgKHMtPmMuYXZjdHgtPmxldmVsICE9IEFWX0xFVkVMX1VO S05PV04pCisgICAgICAgIHByb2ZpbGVfYW5kX2xldmVsX2luZGljYXRpb24gfD0gcy0+Yy5hdmN0 eC0+bGV2ZWw7CiAgICAgZWxzZQogICAgICAgICBwcm9maWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9u IHw9IDE7ICAgLy8gbGV2ZWwgMQogCkBAIC05NzcsMTAgKzk3NiwxMCBAQCBzdGF0aWMgdm9pZCBt cGVnNF9lbmNvZGVfdm9sX2hlYWRlcihNcGVnNEVuY0NvbnRleHQgKmNvbnN0IG00LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZvX251bWJlciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2b2xfbnVtYmVyKQogewotICAgIE1wZWdFbmND b250ZXh0ICpjb25zdCBzID0gJm00LT5tLnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9 ICZtNC0+bS5zOwogICAgIGludCB2b192ZXJfaWQsIHZvX3R5cGUsIGFzcGVjdF9yYXRpb19pbmZv OwogCi0gICAgaWYgKG00LT5tLm1heF9iX2ZyYW1lcyB8fCBzLT5xdWFydGVyX3NhbXBsZSkgewor ICAgIGlmIChtNC0+bS5tYXhfYl9mcmFtZXMgfHwgcy0+Yy5xdWFydGVyX3NhbXBsZSkgewogICAg ICAgICB2b192ZXJfaWQgID0gNTsKICAgICAgICAgdm9fdHlwZSA9IEFEVl9TSU1QTEVfVk9fVFlQ RTsKICAgICB9IGVsc2UgewpAQCAtOTk3LDM1ICs5OTYsMzUgQEAgc3RhdGljIHZvaWQgbXBlZzRf ZW5jb2RlX3ZvbF9oZWFkZXIoTXBlZzRFbmNDb250ZXh0ICpjb25zdCBtNCwKICAgICBwdXRfYml0 cygmcy0+cGIsIDQsIHZvX3Zlcl9pZCk7ICAgICAvKiBpcyBvYmogbGF5ZXIgdmVyIGlkICovCiAg ICAgcHV0X2JpdHMoJnMtPnBiLCAzLCAxKTsgICAgICAgICAgICAgLyogaXMgb2JqIGxheWVyIHBy aW9yaXR5ICovCiAKLSAgICBhc3BlY3RfcmF0aW9faW5mbyA9IGZmX2gyNjNfYXNwZWN0X3RvX2lu Zm8ocy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8pOworICAgIGFzcGVjdF9yYXRpb19pbmZv ID0gZmZfaDI2M19hc3BlY3RfdG9faW5mbyhzLT5jLmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlv KTsKIAogICAgIHB1dF9iaXRzKCZzLT5wYiwgNCwgYXNwZWN0X3JhdGlvX2luZm8pOyAvKiBhc3Bl Y3QgcmF0aW8gaW5mbyAqLwogICAgIGlmIChhc3BlY3RfcmF0aW9faW5mbyA9PSBGRl9BU1BFQ1Rf RVhURU5ERUQpIHsKLSAgICAgICAgYXZfcmVkdWNlKCZzLT5hdmN0eC0+c2FtcGxlX2FzcGVjdF9y YXRpby5udW0sICZzLT5hdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4sCi0gICAgICAgICAg ICAgICAgICAgcy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtLCAgcy0+YXZjdHgtPnNh bXBsZV9hc3BlY3RfcmF0aW8uZGVuLCAyNTUpOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgs IHMtPmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSk7Ci0gICAgICAgIHB1dF9iaXRzKCZz LT5wYiwgOCwgcy0+YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuKTsKKyAgICAgICAgYXZf cmVkdWNlKCZzLT5jLmF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSwgJnMtPmMuYXZjdHgt PnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuLAorICAgICAgICAgICAgICAgICAgIHMtPmMuYXZjdHgt PnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtLCAgcy0+Yy5hdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRp by5kZW4sIDI1NSk7CisgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgOCwgcy0+Yy5hdmN0eC0+c2Ft cGxlX2FzcGVjdF9yYXRpby5udW0pOworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDgsIHMtPmMu YXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuKTsKICAgICB9CiAKICAgICBwdXRfYml0cygm cy0+cGIsIDEsIDEpOyAgICAgICAgICAgICAvKiB2b2wgY29udHJvbCBwYXJhbWV0ZXJzPSB5ZXMg Ki8KICAgICBwdXRfYml0cygmcy0+cGIsIDIsIDEpOyAgICAgICAgICAgICAvKiBjaHJvbWEgZm9y bWF0IFlVViA0MjAvWVYxMiAqLwotICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+bG93X2RlbGF5 KTsKKyAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPmMubG93X2RlbGF5KTsKICAgICBwdXRfYml0 cygmcy0+cGIsIDEsIDApOyAgICAgICAgICAgICAvKiB2YnYgcGFyYW1ldGVycz0gbm8gKi8KIAog ICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgUkVDVF9TSEFQRSk7ICAgIC8qIHZvbCBzaGFwZT0gcmVj dGFuZ2xlICovCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsgICAgICAgICAgICAgLyogbWFy a2VyIGJpdCAqLwogCi0gICAgcHV0X2JpdHMoJnMtPnBiLCAxNiwgcy0+YXZjdHgtPnRpbWVfYmFz ZS5kZW4pOworICAgIHB1dF9iaXRzKCZzLT5wYiwgMTYsIHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5k ZW4pOwogICAgIGlmIChtNC0+dGltZV9pbmNyZW1lbnRfYml0cyA8IDEpCiAgICAgICAgIG00LT50 aW1lX2luY3JlbWVudF9iaXRzID0gMTsKICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOyAgICAg ICAgICAgICAvKiBtYXJrZXIgYml0ICovCiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAg ICAgICAgICAgLyogZml4ZWQgdm9wIHJhdGU9bm8gKi8KICAgICBwdXRfYml0cygmcy0+cGIsIDEs IDEpOyAgICAgICAgICAgICAvKiBtYXJrZXIgYml0ICovCi0gICAgcHV0X2JpdHMoJnMtPnBiLCAx Mywgcy0+d2lkdGgpOyAgICAgLyogdm9sIHdpZHRoICovCisgICAgcHV0X2JpdHMoJnMtPnBiLCAx Mywgcy0+Yy53aWR0aCk7ICAgICAvKiB2b2wgd2lkdGggKi8KICAgICBwdXRfYml0cygmcy0+cGIs IDEsIDEpOyAgICAgICAgICAgICAvKiBtYXJrZXIgYml0ICovCi0gICAgcHV0X2JpdHMoJnMtPnBi LCAxMywgcy0+aGVpZ2h0KTsgICAgLyogdm9sIGhlaWdodCAqLworICAgIHB1dF9iaXRzKCZzLT5w YiwgMTMsIHMtPmMuaGVpZ2h0KTsgICAgLyogdm9sIGhlaWdodCAqLwogICAgIHB1dF9iaXRzKCZz LT5wYiwgMSwgMSk7ICAgICAgICAgICAgIC8qIG1hcmtlciBiaXQgKi8KLSAgICBwdXRfYml0cygm cy0+cGIsIDEsIHMtPnByb2dyZXNzaXZlX3NlcXVlbmNlID8gMCA6IDEpOworICAgIHB1dF9iaXRz KCZzLT5wYiwgMSwgcy0+Yy5wcm9ncmVzc2l2ZV9zZXF1ZW5jZSA/IDAgOiAxKTsKICAgICBwdXRf Yml0cygmcy0+cGIsIDEsIDEpOyAgICAgICAgICAgICAvKiBvYm1jIGRpc2FibGUgKi8KICAgICBp ZiAodm9fdmVyX2lkID09IDEpCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAg IC8qIHNwcml0ZSBlbmFibGUgKi8KQEAgLTEwMzMsMTkgKzEwMzIsMTkgQEAgc3RhdGljIHZvaWQg bXBlZzRfZW5jb2RlX3ZvbF9oZWFkZXIoTXBlZzRFbmNDb250ZXh0ICpjb25zdCBtNCwKICAgICAg ICAgcHV0X2JpdHMoJnMtPnBiLCAyLCAwKTsgICAgICAgLyogc3ByaXRlIGVuYWJsZSAqLwogCiAg ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgICAgICAgICAgLyogbm90IDggYml0ID09IGZh bHNlICovCi0gICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5tcGVnX3F1YW50KTsgLyogcXVhbnQg dHlwZSA9ICgwID0gSC4yNjMgc3R5bGUpICovCisgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5j Lm1wZWdfcXVhbnQpOyAvKiBxdWFudCB0eXBlID0gKDAgPSBILjI2MyBzdHlsZSkgKi8KIAotICAg IGlmIChzLT5tcGVnX3F1YW50KSB7Ci0gICAgICAgIGZmX3dyaXRlX3F1YW50X21hdHJpeCgmcy0+ cGIsIHMtPmF2Y3R4LT5pbnRyYV9tYXRyaXgpOwotICAgICAgICBmZl93cml0ZV9xdWFudF9tYXRy aXgoJnMtPnBiLCBzLT5hdmN0eC0+aW50ZXJfbWF0cml4KTsKKyAgICBpZiAocy0+Yy5tcGVnX3F1 YW50KSB7CisgICAgICAgIGZmX3dyaXRlX3F1YW50X21hdHJpeCgmcy0+cGIsIHMtPmMuYXZjdHgt PmludHJhX21hdHJpeCk7CisgICAgICAgIGZmX3dyaXRlX3F1YW50X21hdHJpeCgmcy0+cGIsIHMt PmMuYXZjdHgtPmludGVyX21hdHJpeCk7CiAgICAgfQogCiAgICAgaWYgKHZvX3Zlcl9pZCAhPSAx KQotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPnF1YXJ0ZXJfc2FtcGxlKTsKKyAgICAg ICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLnF1YXJ0ZXJfc2FtcGxlKTsKICAgICBwdXRfYml0 cygmcy0+cGIsIDEsIDEpOyAgICAgICAgICAgICAvKiBjb21wbGV4aXR5IGVzdGltYXRpb24gZGlz YWJsZSAqLwogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+cnRwX21vZGUgPyAwIDogMSk7IC8q IHJlc3luYyBtYXJrZXIgZGlzYWJsZSAqLwotICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ZGF0 YV9wYXJ0aXRpb25pbmcgPyAxIDogMCk7Ci0gICAgaWYgKHMtPmRhdGFfcGFydGl0aW9uaW5nKQor ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5kYXRhX3BhcnRpdGlvbmluZyA/IDEgOiAwKTsK KyAgICBpZiAocy0+Yy5kYXRhX3BhcnRpdGlvbmluZykKICAgICAgICAgcHV0X2JpdHMoJnMtPnBi LCAxLCAwKTsgICAgICAgICAvKiBubyBydmxjICovCiAKICAgICBpZiAodm9fdmVyX2lkICE9IDEp IHsKQEAgLTEwNTcsNyArMTA1Niw3IEBAIHN0YXRpYyB2b2lkIG1wZWc0X2VuY29kZV92b2xfaGVh ZGVyKE1wZWc0RW5jQ29udGV4dCAqY29uc3QgbTQsCiAgICAgZmZfbXBlZzRfc3R1ZmZpbmcoJnMt PnBiKTsKIAogICAgIC8qIHVzZXIgZGF0YSAqLwotICAgIGlmICghKHMtPmF2Y3R4LT5mbGFncyAm IEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKSB7CisgICAgaWYgKCEocy0+Yy5hdmN0eC0+ZmxhZ3Mg JiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNUKSkgewogICAgICAgICBwdXRfYml0czMyKCZzLT5wYiwg VVNFUl9EQVRBX1NUQVJUQ09ERSk7CiAgICAgICAgIGZmX3B1dF9zdHJpbmcoJnMtPnBiLCBMSUJB VkNPREVDX0lERU5ULCAwKTsKICAgICB9CkBAIC0xMDY3LDMyICsxMDY2LDMyIEBAIHN0YXRpYyB2 b2lkIG1wZWc0X2VuY29kZV92b2xfaGVhZGVyKE1wZWc0RW5jQ29udGV4dCAqY29uc3QgbTQsCiBz dGF0aWMgaW50IG1wZWc0X2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAq Y29uc3QgbSkKIHsKICAgICBNcGVnNEVuY0NvbnRleHQgKmNvbnN0IG00ID0gbWFpbmN0eF90b19t cGVnNChtKTsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVu Y0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICB1aW50NjRfdCB0aW1lX2luY3I7CiAgICAg aW50NjRfdCB0aW1lX2RpdiwgdGltZV9tb2Q7CiAKLSAgICBpZiAocy0+cGljdF90eXBlID09IEFW X1BJQ1RVUkVfVFlQRV9JKSB7Ci0gICAgICAgIGlmICghKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NP REVDX0ZMQUdfR0xPQkFMX0hFQURFUikpIHsKLSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+c3Ry aWN0X3N0ZF9jb21wbGlhbmNlIDwgRkZfQ09NUExJQU5DRV9WRVJZX1NUUklDVCkgIC8vIEhBQ0ss IHRoZSByZWZlcmVuY2Ugc3cgaXMgYnVnZ3kKKyAgICBpZiAocy0+Yy5waWN0X3R5cGUgPT0gQVZf UElDVFVSRV9UWVBFX0kpIHsKKyAgICAgICAgaWYgKCEocy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9D T0RFQ19GTEFHX0dMT0JBTF9IRUFERVIpKSB7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+ c3RyaWN0X3N0ZF9jb21wbGlhbmNlIDwgRkZfQ09NUExJQU5DRV9WRVJZX1NUUklDVCkgIC8vIEhB Q0ssIHRoZSByZWZlcmVuY2Ugc3cgaXMgYnVnZ3kKICAgICAgICAgICAgICAgICBtcGVnNF9lbmNv ZGVfdmlzdWFsX29iamVjdF9oZWFkZXIobSk7Ci0gICAgICAgICAgICBpZiAocy0+YXZjdHgtPnN0 cmljdF9zdGRfY29tcGxpYW5jZSA8IEZGX0NPTVBMSUFOQ0VfVkVSWV9TVFJJQ1QgfHwgcy0+cGlj dHVyZV9udW1iZXIgPT0gMCkgIC8vIEhBQ0ssIHRoZSByZWZlcmVuY2Ugc3cgaXMgYnVnZ3kKKyAg ICAgICAgICAgIGlmIChzLT5jLmF2Y3R4LT5zdHJpY3Rfc3RkX2NvbXBsaWFuY2UgPCBGRl9DT01Q TElBTkNFX1ZFUllfU1RSSUNUIHx8IHMtPmMucGljdHVyZV9udW1iZXIgPT0gMCkgIC8vIEhBQ0ss IHRoZSByZWZlcmVuY2Ugc3cgaXMgYnVnZ3kKICAgICAgICAgICAgICAgICBtcGVnNF9lbmNvZGVf dm9sX2hlYWRlcihtNCwgMCwgMCk7CiAgICAgICAgIH0KICAgICAgICAgbXBlZzRfZW5jb2RlX2dv cF9oZWFkZXIobSk7CiAgICAgfQogCi0gICAgcy0+cGFydGl0aW9uZWRfZnJhbWUgPSBzLT5kYXRh X3BhcnRpdGlvbmluZyAmJiBzLT5waWN0X3R5cGUgIT0gQVZfUElDVFVSRV9UWVBFX0I7CisgICAg cy0+Yy5wYXJ0aXRpb25lZF9mcmFtZSA9IHMtPmMuZGF0YV9wYXJ0aXRpb25pbmcgJiYgcy0+Yy5w aWN0X3R5cGUgIT0gQVZfUElDVFVSRV9UWVBFX0I7CiAKICAgICBwdXRfYml0czMyKCZzLT5wYiwg Vk9QX1NUQVJUQ09ERSk7ICAgICAgLyogdm9wIGhlYWRlciAqLwotICAgIHB1dF9iaXRzKCZzLT5w YiwgMiwgcy0+cGljdF90eXBlIC0gMSk7ICAvKiBwaWN0IHR5cGU6IEkgPSAwICwgUCA9IDEgKi8K KyAgICBwdXRfYml0cygmcy0+cGIsIDIsIHMtPmMucGljdF90eXBlIC0gMSk7ICAvKiBwaWN0IHR5 cGU6IEkgPSAwICwgUCA9IDEgKi8KIAotICAgIHRpbWVfZGl2ICA9IEZGVURJVihzLT50aW1lLCBz LT5hdmN0eC0+dGltZV9iYXNlLmRlbik7Ci0gICAgdGltZV9tb2QgID0gRkZVTU9EKHMtPnRpbWUs IHMtPmF2Y3R4LT50aW1lX2Jhc2UuZGVuKTsKLSAgICB0aW1lX2luY3IgPSB0aW1lX2RpdiAtIHMt Pmxhc3RfdGltZV9iYXNlOworICAgIHRpbWVfZGl2ICA9IEZGVURJVihzLT5jLnRpbWUsIHMtPmMu YXZjdHgtPnRpbWVfYmFzZS5kZW4pOworICAgIHRpbWVfbW9kICA9IEZGVU1PRChzLT5jLnRpbWUs IHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4pOworICAgIHRpbWVfaW5jciA9IHRpbWVfZGl2IC0g cy0+Yy5sYXN0X3RpbWVfYmFzZTsKIAogICAgIC8vIFRoaXMgbGltaXRzIHRoZSBmcmFtZSBkdXJh dGlvbiB0byBtYXggMSBkYXkKICAgICBpZiAodGltZV9pbmNyID4gMzYwMCoyNCkgewotICAgICAg ICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgInRpbWVfaW5jciAlIlBSSXU2NCIgdG9v IGxhcmdlXG4iLCB0aW1lX2luY3IpOworICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9H X0VSUk9SLCAidGltZV9pbmNyICUiUFJJdTY0IiB0b28gbGFyZ2VcbiIsIHRpbWVfaW5jcik7CiAg ICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQogICAgIHdoaWxlICh0aW1lX2lu Y3ItLSkKQEAgLTExMDQsMjIgKzExMDMsMjIgQEAgc3RhdGljIGludCBtcGVnNF9lbmNvZGVfcGlj dHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgcHV0X2JpdHMoJnMt PnBiLCBtNC0+dGltZV9pbmNyZW1lbnRfYml0cywgdGltZV9tb2QpOyAvKiB0aW1lIGluY3JlbWVu dCAqLwogICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBtYXJrZXIgKi8KICAgICBwdXRfYml0cygmcy0+cGIsIDEsIDEpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogdm9wIGNvZGVkICovCi0gICAgaWYgKHMtPnBpY3RfdHlwZSA9 PSBBVl9QSUNUVVJFX1RZUEVfUCkgewotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMtPm5v X3JvdW5kaW5nKTsgICAgLyogcm91bmRpbmcgdHlwZSAqLworICAgIGlmIChzLT5jLnBpY3RfdHlw ZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkgeworICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIHMt PmMubm9fcm91bmRpbmcpOyAgICAvKiByb3VuZGluZyB0eXBlICovCiAgICAgfQogICAgIHB1dF9i aXRzKCZzLT5wYiwgMywgMCk7ICAgICAvKiBpbnRyYSBkYyBWTEMgdGhyZXNob2xkICovCi0gICAg aWYgKCFzLT5wcm9ncmVzc2l2ZV9zZXF1ZW5jZSkgewotICAgICAgICBwdXRfYml0cygmcy0+cGIs IDEsICEhKHMtPmN1cl9waWMucHRyLT5mLT5mbGFncyAmIEFWX0ZSQU1FX0ZMQUdfVE9QX0ZJRUxE X0ZJUlNUKSk7Ci0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+YWx0ZXJuYXRlX3NjYW4p OworICAgIGlmICghcy0+Yy5wcm9ncmVzc2l2ZV9zZXF1ZW5jZSkgeworICAgICAgICBwdXRfYml0 cygmcy0+cGIsIDEsICEhKHMtPmMuY3VyX3BpYy5wdHItPmYtPmZsYWdzICYgQVZfRlJBTUVfRkxB R19UT1BfRklFTERfRklSU1QpKTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmFs dGVybmF0ZV9zY2FuKTsKICAgICB9CiAgICAgLy8gRklYTUUgc3ByaXRlIHN0dWZmCiAKLSAgICBw dXRfYml0cygmcy0+cGIsIDUsIHMtPnFzY2FsZSk7CisgICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBz LT5jLnFzY2FsZSk7CiAKLSAgICBpZiAocy0+cGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9J KQotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDMsIHMtPmZfY29kZSk7ICAvKiBmY29kZV9mb3Ig Ki8KLSAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKQotICAgICAgICBw dXRfYml0cygmcy0+cGIsIDMsIHMtPmJfY29kZSk7ICAvKiBmY29kZV9iYWNrICovCisgICAgaWYg KHMtPmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9JKQorICAgICAgICBwdXRfYml0cygm cy0+cGIsIDMsIHMtPmMuZl9jb2RlKTsgIC8qIGZjb2RlX2ZvciAqLworICAgIGlmIChzLT5jLnBp Y3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAz LCBzLT5jLmJfY29kZSk7ICAvKiBmY29kZV9iYWNrICovCiAKICAgICByZXR1cm4gMDsKIH0KQEAg LTEyOTQsNyArMTI5Myw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBlbmNvZGVfaW5pdChBVkNvZGVj Q29udGV4dCAqYXZjdHgpCiAgICAgc3RhdGljIEFWT25jZSBpbml0X3N0YXRpY19vbmNlID0gQVZf T05DRV9JTklUOwogICAgIE1wZWc0RW5jQ29udGV4dCAqY29uc3QgbTQgPSBhdmN0eC0+cHJpdl9k YXRhOwogICAgIE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtID0gJm00LT5tOwotICAgIE1wZWdF bmNDb250ZXh0ICAqY29uc3QgIHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBz ID0gJm0tPnM7CiAgICAgaW50IHJldDsKIAogICAgIGlmIChhdmN0eC0+d2lkdGggPj0gKDE8PDEz KSB8fCBhdmN0eC0+aGVpZ2h0ID49ICgxPDwxMykpIHsKQEAgLTEzMTUsMTAgKzEzMTQsMTAgQEAg c3RhdGljIGF2X2NvbGQgaW50IGVuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAg ICBzLT5pbnRlcl9hY192bGNfbGFzdF9sZW5ndGggPSB1bmlfbXBlZzRfaW50ZXJfcmxfbGVuICsg MTI4ICogNjQ7CiAgICAgcy0+bHVtYV9kY192bGNfbGVuZ3RoICAgICAgID0gdW5pX0RDdGFiX2x1 bV9sZW47CiAgICAgcy0+YWNfZXNjX2xlbmd0aCAgICAgICAgICAgID0gNyArIDIgKyAxICsgNiAr IDEgKyAxMiArIDE7Ci0gICAgcy0+eV9kY19zY2FsZV90YWJsZSAgICAgICAgID0gZmZfbXBlZzRf eV9kY19zY2FsZV90YWJsZTsKLSAgICBzLT5jX2RjX3NjYWxlX3RhYmxlICAgICAgICAgPSBmZl9t cGVnNF9jX2RjX3NjYWxlX3RhYmxlOworICAgIHMtPmMueV9kY19zY2FsZV90YWJsZSAgICAgICAg ID0gZmZfbXBlZzRfeV9kY19zY2FsZV90YWJsZTsKKyAgICBzLT5jLmNfZGNfc2NhbGVfdGFibGUg ICAgICAgICA9IGZmX21wZWc0X2NfZGNfc2NhbGVfdGFibGU7CiAKLSAgICBmZl9xcGVsZHNwX2lu aXQoJnMtPnFkc3ApOworICAgIGZmX3FwZWxkc3BfaW5pdCgmcy0+Yy5xZHNwKTsKICAgICBpZiAo KHJldCA9IGZmX21wdl9lbmNvZGVfaW5pdChhdmN0eCkpIDwgMCkKICAgICAgICAgcmV0dXJuIHJl dDsKIApAQCAtMTMzNSwyMyArMTMzNCwyMyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2lu aXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogCiAgICAgbTQtPnRpbWVfaW5jcmVtZW50X2JpdHMg ICAgID0gYXZfbG9nMihhdmN0eC0+dGltZV9iYXNlLmRlbiAtIDEpICsgMTsKIAotICAgIGlmIChz LT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dMT0JBTF9IRUFERVIpIHsKLSAgICAgICAg cy0+YXZjdHgtPmV4dHJhZGF0YSA9IGF2X21hbGxvYygxMDI0KTsKLSAgICAgICAgaWYgKCFzLT5h dmN0eC0+ZXh0cmFkYXRhKQorICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dM T0JBTF9IRUFERVIpIHsKKyAgICAgICAgYXZjdHgtPmV4dHJhZGF0YSA9IGF2X21hbGxvYygxMDI0 KTsKKyAgICAgICAgaWYgKCFhdmN0eC0+ZXh0cmFkYXRhKQogICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKLSAgICAgICAgaW5pdF9wdXRfYml0cygmcy0+cGIsIHMtPmF2Y3R4LT5l eHRyYWRhdGEsIDEwMjQpOworICAgICAgICBpbml0X3B1dF9iaXRzKCZzLT5wYiwgYXZjdHgtPmV4 dHJhZGF0YSwgMTAyNCk7CiAKICAgICAgICAgbXBlZzRfZW5jb2RlX3Zpc3VhbF9vYmplY3RfaGVh ZGVyKG0pOwogICAgICAgICBtcGVnNF9lbmNvZGVfdm9sX2hlYWRlcihtNCwgMCwgMCk7CiAKIC8v ICAgICAgICAgICAgZmZfbXBlZzRfc3R1ZmZpbmcoJnMtPnBiKTsgPwogICAgICAgICBmbHVzaF9w dXRfYml0cygmcy0+cGIpOwotICAgICAgICBzLT5hdmN0eC0+ZXh0cmFkYXRhX3NpemUgPSBwdXRf Ynl0ZXNfb3V0cHV0KCZzLT5wYik7CisgICAgICAgIGF2Y3R4LT5leHRyYWRhdGFfc2l6ZSA9IHB1 dF9ieXRlc19vdXRwdXQoJnMtPnBiKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg ZmZfbXBlZzRfaW5pdF9wYXJ0aXRpb25zKE1wZWdFbmNDb250ZXh0ICpzKQordm9pZCBmZl9tcGVn NF9pbml0X3BhcnRpdGlvbnMoTVBWRW5jQ29udGV4dCAqY29uc3QgcykKIHsKICAgICB1aW50OF90 ICpzdGFydCA9IHB1dF9iaXRzX3B0cigmcy0+cGIpOwogICAgIHVpbnQ4X3QgKmVuZCAgID0gcy0+ cGIuYnVmX2VuZDsKQEAgLTEzNjQsMTMgKzEzNjMsMTMgQEAgdm9pZCBmZl9tcGVnNF9pbml0X3Bh cnRpdGlvbnMoTXBlZ0VuY0NvbnRleHQgKnMpCiAgICAgaW5pdF9wdXRfYml0cygmcy0+cGIyLCBz dGFydCArIHBiX3NpemUgKyB0ZXhfc2l6ZSwgcGJfc2l6ZSk7CiB9CiAKLXZvaWQgZmZfbXBlZzRf bWVyZ2VfcGFydGl0aW9ucyhNcGVnRW5jQ29udGV4dCAqcykKK3ZvaWQgZmZfbXBlZzRfbWVyZ2Vf cGFydGl0aW9ucyhNUFZFbmNDb250ZXh0ICpjb25zdCBzKQogewogICAgIGNvbnN0IGludCBwYjJf bGVuICAgID0gcHV0X2JpdHNfY291bnQoJnMtPnBiMik7CiAgICAgY29uc3QgaW50IHRleF9wYl9s ZW4gPSBwdXRfYml0c19jb3VudCgmcy0+dGV4X3BiKTsKICAgICBjb25zdCBpbnQgYml0cyAgICAg ICA9IHB1dF9iaXRzX2NvdW50KCZzLT5wYik7CiAKLSAgICBpZiAocy0+cGljdF90eXBlID09IEFW X1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVf VFlQRV9JKSB7CiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMTksIERDX01BUktFUik7CiAgICAg ICAgIHMtPm1pc2NfYml0cyAgKz0gMTkgKyBwYjJfbGVuICsgYml0cyAtIHMtPmxhc3RfYml0czsK ICAgICAgICAgcy0+aV90ZXhfYml0cyArPSB0ZXhfcGJfbGVuOwpAQCAtMTM5MCwxOSArMTM4OSwx OSBAQCB2b2lkIGZmX21wZWc0X21lcmdlX3BhcnRpdGlvbnMoTXBlZ0VuY0NvbnRleHQgKnMpCiAg ICAgcy0+bGFzdF9iaXRzID0gcHV0X2JpdHNfY291bnQoJnMtPnBiKTsKIH0KIAotdm9pZCBmZl9t cGVnNF9lbmNvZGVfdmlkZW9fcGFja2V0X2hlYWRlcihNcGVnRW5jQ29udGV4dCAqcykKK3ZvaWQg ZmZfbXBlZzRfZW5jb2RlX3ZpZGVvX3BhY2tldF9oZWFkZXIoTVBWRW5jQ29udGV4dCAqY29uc3Qg cykKIHsKLSAgICBpbnQgbWJfbnVtX2JpdHMgPSBhdl9sb2cyKHMtPm1iX251bSAtIDEpICsgMTsK KyAgICBpbnQgbWJfbnVtX2JpdHMgPSBhdl9sb2cyKHMtPmMubWJfbnVtIC0gMSkgKyAxOwogCi0g ICAgcHV0X2JpdHMoJnMtPnBiLCBmZl9tcGVnNF9nZXRfdmlkZW9fcGFja2V0X3ByZWZpeF9sZW5n dGgocyksIDApOworICAgIHB1dF9iaXRzKCZzLT5wYiwgZmZfbXBlZzRfZ2V0X3ZpZGVvX3BhY2tl dF9wcmVmaXhfbGVuZ3RoKCZzLT5jKSwgMCk7CiAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAxKTsK IAotICAgIHB1dF9iaXRzKCZzLT5wYiwgbWJfbnVtX2JpdHMsIHMtPm1iX3ggKyBzLT5tYl95ICog cy0+bWJfd2lkdGgpOwotICAgIHB1dF9iaXRzKCZzLT5wYiwgNSAvKiBxdWFudF9wcmVjaXNpb24g Ki8sIHMtPnFzY2FsZSk7CisgICAgcHV0X2JpdHMoJnMtPnBiLCBtYl9udW1fYml0cywgcy0+Yy5t Yl94ICsgcy0+Yy5tYl95ICogcy0+Yy5tYl93aWR0aCk7CisgICAgcHV0X2JpdHMoJnMtPnBiLCA1 IC8qIHF1YW50X3ByZWNpc2lvbiAqLywgcy0+Yy5xc2NhbGUpOwogICAgIHB1dF9iaXRzKCZzLT5w YiwgMSwgMCk7IC8qIG5vIEhFQyAqLwogfQogCi0jZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihN cGVnRW5jQ29udGV4dCwgeCkKKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKE1QVkVuY0NvbnRl eHQsIGMueCkKICNkZWZpbmUgVkUgQVZfT1BUX0ZMQUdfVklERU9fUEFSQU0gfCBBVl9PUFRfRkxB R19FTkNPRElOR19QQVJBTQogc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9IHsKICAg ICB7ICJkYXRhX3BhcnRpdGlvbmluZyIsICJVc2UgZGF0YSBwYXJ0aXRpb25pbmcuIiwgICAgICBP RkZTRVQoZGF0YV9wYXJ0aXRpb25pbmcpLCBBVl9PUFRfVFlQRV9CT09MLCB7IC5pNjQgPSAwIH0s IDAsIDEsIFZFIH0sCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuaCBiL2xp YmF2Y29kZWMvbXBlZzR2aWRlb2VuYy5oCmluZGV4IDA3MjdiZTY3NTAuLjgxNWYxNmYwNzMgMTAw NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZzR2aWRlb2VuYy5oCisrKyBiL2xpYmF2Y29kZWMvbXBl ZzR2aWRlb2VuYy5oCkBAIC0yNywxNCArMjcsMTQgQEAKIAogI2luY2x1ZGUgInB1dF9iaXRzLmgi CiAKLXR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0IE1wZWdFbmNDb250ZXh0OwordHlwZWRl ZiBzdHJ1Y3QgTVBWRW5jQ29udGV4dCBNUFZFbmNDb250ZXh0OwogCi12b2lkIGZmX3NldF9tcGVn NF90aW1lKE1wZWdFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfc2V0X21wZWc0X3RpbWUoTVBWRW5j Q29udGV4dCAqcyk7CiAKLXZvaWQgZmZfbXBlZzRfZW5jb2RlX3ZpZGVvX3BhY2tldF9oZWFkZXIo TXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9tcGVnNF9lbmNvZGVfdmlkZW9fcGFja2V0X2hl YWRlcihNUFZFbmNDb250ZXh0ICpzKTsKIHZvaWQgZmZfbXBlZzRfc3R1ZmZpbmcoUHV0Qml0Q29u dGV4dCAqcGJjKTsKLXZvaWQgZmZfbXBlZzRfaW5pdF9wYXJ0aXRpb25zKE1wZWdFbmNDb250ZXh0 ICpzKTsKLXZvaWQgZmZfbXBlZzRfbWVyZ2VfcGFydGl0aW9ucyhNcGVnRW5jQ29udGV4dCAqcyk7 Ci12b2lkIGZmX2NsZWFuX21wZWc0X3FzY2FsZXMoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBm Zl9tcGVnNF9pbml0X3BhcnRpdGlvbnMoTVBWRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX21wZWc0 X21lcmdlX3BhcnRpdGlvbnMoTVBWRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX2NsZWFuX21wZWc0 X3FzY2FsZXMoTVBWRW5jQ29udGV4dCAqcyk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9tcGVndmlkZW8uYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMKaW5kZXggMTI2ZmVmYTFi ZS4uYTY1MTI1Y2MxMyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW8uYworKysgYi9s aWJhdmNvZGVjL21wZWd2aWRlby5jCkBAIC00MzUsOSArNDM1LDYgQEAgc3RhdGljIHZvaWQgYmFj a3VwX2R1cGxpY2F0ZV9jb250ZXh0KE1wZWdFbmNDb250ZXh0ICpiYWssIE1wZWdFbmNDb250ZXh0 ICpzcmMpCiAgICAgQ09QWShzdGFydF9tYl95KTsKICAgICBDT1BZKGVuZF9tYl95KTsKICAgICBD T1BZKG1lLm1hcF9nZW5lcmF0aW9uKTsKLSAgICBDT1BZKGRjdF9lcnJvcl9zdW0pOwotICAgIENP UFkoZGN0X2NvdW50WzBdKTsKLSAgICBDT1BZKGRjdF9jb3VudFsxXSk7CiAgICAgQ09QWShhY192 YWxfYmFzZSk7CiAgICAgQ09QWShhY192YWxbMF0pOwogICAgIENPUFkoYWNfdmFsWzFdKTsKZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmggYi9saWJhdmNvZGVjL21wZWd2aWRlby5o CmluZGV4IDg1MjI3ZmRiOGYuLmFkYWEwY2YyZDAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBl Z3ZpZGVvLmgKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW8uaApAQCAtMzAsMTggKzMwLDEzIEBA CiAKICNpbmNsdWRlICJibG9ja2RzcC5oIgogI2luY2x1ZGUgImVycm9yX3Jlc2lsaWVuY2UuaCIK LSNpbmNsdWRlICJmZGN0ZHNwLmgiCiAjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKICNpbmNsdWRlICJo MjY0Y2hyb21hLmgiCiAjaW5jbHVkZSAiaDI2M2RzcC5oIgogI2luY2x1ZGUgImhwZWxkc3AuaCIK ICNpbmNsdWRlICJpZGN0ZHNwLmgiCi0jaW5jbHVkZSAibWVfY21wLmgiCiAjaW5jbHVkZSAibW90 aW9uX2VzdC5oIgogI2luY2x1ZGUgIm1wZWdwaWN0dXJlLmgiCi0jaW5jbHVkZSAibXBlZ3ZpZGVv ZW5jZHNwLmgiCi0jaW5jbHVkZSAicGl4YmxvY2tkc3AuaCIKLSNpbmNsdWRlICJwdXRfYml0cy5o IgogI2luY2x1ZGUgInFwZWxkc3AuaCIKICNpbmNsdWRlICJ2aWRlb2RzcC5oIgogCkBAIC0xMDUs OCArMTAwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgewogCiAgICAgZW51bSBB VkNvZGVjSUQgY29kZWNfaWQ7ICAgICAvKiBzZWUgQVZfQ09ERUNfSURfeHh4ICovCiAgICAgaW50 IGVuY29kaW5nOyAgICAgLy8vPCB0cnVlIGlmIHdlIGFyZSBlbmNvZGluZyAodnMgZGVjb2Rpbmcp Ci0gICAgaW50IGx1bWFfZWxpbV90aHJlc2hvbGQ7Ci0gICAgaW50IGNocm9tYV9lbGltX3RocmVz aG9sZDsKICAgICBpbnQgd29ya2Fyb3VuZF9idWdzOyAgICAgICAvLy88IHdvcmthcm91bmQgYnVn cyBpbiBlbmNvZGVycyB3aGljaCBjYW5ub3QgYmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseQogICAg IGludCBjb2RlY190YWc7ICAgICAgICAgICAgIC8vLzwgaW50ZXJuYWwgY29kZWNfdGFnIHVwcGVy IGNhc2UgY29udmVydGVkIGZyb20gYXZjdHggY29kZWNfdGFnCiAgICAgLyogdGhlIGZvbGxvd2lu ZyBmaWVsZHMgYXJlIG1hbmFnZWQgaW50ZXJuYWxseSBieSB0aGUgZW5jb2RlciAqLwpAQCAtMTI1 LDEyICsxMTgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgewogCiAgICAgQnVm ZmVyUG9vbENvbnRleHQgYnVmZmVyX3Bvb2xzOwogCi0gICAgLyoqIGJpdCBvdXRwdXQgKi8KLSAg ICBQdXRCaXRDb250ZXh0IHBiOwotCiAgICAgaW50IHN0YXJ0X21iX3k7ICAgICAgICAgICAgLy8v PCBzdGFydCBtYl95IG9mIHRoaXMgdGhyZWFkIChzbyBjdXJyZW50IHRocmVhZCBzaG91bGQgcHJv Y2VzcyBzdGFydF9tYl95IDw9IHJvdyA8IGVuZF9tYl95KQogICAgIGludCBlbmRfbWJfeTsgICAg ICAgICAgICAgIC8vLzwgZW5kICAgbWJfeSBvZiB0aGlzIHRocmVhZCAoc28gY3VycmVudCB0aHJl YWQgc2hvdWxkIHByb2Nlc3Mgc3RhcnRfbWJfeSA8PSByb3cgPCBlbmRfbWJfeSkKLSAgICBzdHJ1 Y3QgTXBlZ0VuY0NvbnRleHQgKnRocmVhZF9jb250ZXh0W01BWF9USFJFQURTXTsKKyAgICB1bmlv biB7CisgICAgICAgIHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdGhyZWFkX2NvbnRleHRbTUFYX1RI UkVBRFNdOworICAgICAgICBzdHJ1Y3QgTVBWRW5jQ29udGV4dCAgKmVuY19jb250ZXh0c1tNQVhf VEhSRUFEU107CisgICAgfTsKICAgICBpbnQgc2xpY2VfY29udGV4dF9jb3VudDsgICAvLy88IG51 bWJlciBvZiB1c2VkIHRocmVhZF9jb250ZXh0cwogCiAgICAgLyoqCkBAIC0xNDUsMTIgKzEzOCw2 IEBAIHR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0IHsKICAgICAgKi8KICAgICBNUFZXb3Jr UGljdHVyZSBuZXh0X3BpYzsKIAotICAgIC8qKgotICAgICAqIFJlZmVyZW5jZSB0byB0aGUgc291 cmNlIHBpY3R1cmUgZm9yIGVuY29kaW5nLgotICAgICAqIG5vdGUsIGxpbmVzaXplICYgZGF0YSwg bWlnaHQgbm90IG1hdGNoIHRoZSBzb3VyY2UgcGljdHVyZSAoZm9yIGZpZWxkIHBpY3R1cmVzKQot ICAgICAqLwotICAgIEFWRnJhbWUgKm5ld19waWM7Ci0KICAgICAvKioKICAgICAgKiBjb3B5IG9m IHRoZSBjdXJyZW50IHBpY3R1cmUgc3RydWN0dXJlLgogICAgICAqIG5vdGUsIGxpbmVzaXplICYg ZGF0YSwgbWlnaHQgbm90IG1hdGNoIHRoZSBjdXJyZW50IHBpY3R1cmUgKGZvciBmaWVsZCBwaWN0 dXJlcykKQEAgLTE4MSw0NiArMTY4LDI0IEBAIHR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0 IHsKICAgICBpbnQgY2hyb21hX3FzY2FsZTsgICAgICAgICAgLy8vPCBjaHJvbWEgUVAKICAgICB1 bnNpZ25lZCBpbnQgbGFtYmRhOyAgICAgICAgLy8vPCBMYWdyYW5nZSBtdWx0aXBsaWVyIHVzZWQg aW4gcmF0ZSBkaXN0b3J0aW9uCiAgICAgdW5zaWduZWQgaW50IGxhbWJkYTI7ICAgICAgIC8vLzwg KGxhbWJkYSpsYW1iZGEpID4+IEZGX0xBTUJEQV9TSElGVAotICAgIGludCAqbGFtYmRhX3RhYmxl OwotICAgIGludCBhZGFwdGl2ZV9xdWFudDsgICAgICAgICAvLy88IHVzZSBhZGFwdGl2ZSBxdWFu dGl6YXRpb24KLSAgICBpbnQgZHF1YW50OyAgICAgICAgICAgICAgICAgLy8vPCBxc2NhbGUgZGlm ZmVyZW5jZSB0byBwcmV2IHFzY2FsZQogICAgIGludCBwaWN0X3R5cGU7ICAgICAgICAgICAgICAv Ly88IEFWX1BJQ1RVUkVfVFlQRV9JLCBBVl9QSUNUVVJFX1RZUEVfUCwgQVZfUElDVFVSRV9UWVBF X0IsIC4uLgogICAgIGludCBkcm9wcGFibGU7Ci0gICAgaW50IHNraXBkY3Q7ICAgICAgICAgICAg ICAgIC8vLzwgc2tpcCBkY3QgYW5kIGNvZGUgemVybyByZXNpZHVhbAogCiAgICAgLyogbW90aW9u IGNvbXBlbnNhdGlvbiAqLwogICAgIGludCB1bnJlc3RyaWN0ZWRfbXY7ICAgICAgICAvLy88IG12 IGNhbiBwb2ludCBvdXRzaWRlIG9mIHRoZSBjb2RlZCBwaWN0dXJlCiAgICAgaW50IGgyNjNfbG9u Z192ZWN0b3JzOyAgICAgIC8vLzwgdXNlIGhvcnJpYmxlIEguMjYzdjEgbG9uZyB2ZWN0b3IgbW9k ZQogCiAgICAgQmxvY2tEU1BDb250ZXh0IGJkc3A7Ci0gICAgRkRDVERTUENvbnRleHQgZmRzcDsK ICAgICBIMjY0Q2hyb21hQ29udGV4dCBoMjY0Y2hyb21hOwogICAgIEhwZWxEU1BDb250ZXh0IGhk c3A7CiAgICAgSURDVERTUENvbnRleHQgaWRzcDsKLSAgICBNcGVndmlkZW9FbmNEU1BDb250ZXh0 IG1wdmVuY2RzcDsKLSAgICBQaXhibG9ja0RTUENvbnRleHQgcGRzcDsKICAgICBRcGVsRFNQQ29u dGV4dCBxZHNwOwogICAgIFZpZGVvRFNQQ29udGV4dCB2ZHNwOwogICAgIEgyNjNEU1BDb250ZXh0 IGgyNjNkc3A7CiAgICAgaW50IGZfY29kZTsgICAgICAgICAgICAgICAgIC8vLzwgZm9yd2FyZCBN ViByZXNvbHV0aW9uCiAgICAgaW50IGJfY29kZTsgICAgICAgICAgICAgICAgIC8vLzwgYmFja3dh cmQgTVYgcmVzb2x1dGlvbiBmb3IgQi1mcmFtZXMgKE1QRUctNCkKICAgICBpbnQxNl90ICgqcF9m aWVsZF9tdl90YWJsZV9iYXNlKVsyXTsKLSAgICBpbnQxNl90ICgqcF9tdl90YWJsZSlbMl07ICAg ICAgICAgICAgLy8vPCBNViB0YWJsZSAoMU1WIHBlciBNQikgUC1mcmFtZSBlbmNvZGluZwotICAg IGludDE2X3QgKCpiX2ZvcndfbXZfdGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgxTVYg cGVyIE1CKSBmb3J3YXJkIG1vZGUgQi1mcmFtZSBlbmNvZGluZwotICAgIGludDE2X3QgKCpiX2Jh Y2tfbXZfdGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgxTVYgcGVyIE1CKSBiYWNrd2Fy ZCBtb2RlIEItZnJhbWUgZW5jb2RpbmcKLSAgICBpbnQxNl90ICgqYl9iaWRpcl9mb3J3X212X3Rh YmxlKVsyXTsgLy8vPCBNViB0YWJsZSAoMU1WIHBlciBNQikgYmlkaXIgbW9kZSBCLWZyYW1lIGVu Y29kaW5nCi0gICAgaW50MTZfdCAoKmJfYmlkaXJfYmFja19tdl90YWJsZSlbMl07IC8vLzwgTVYg dGFibGUgKDFNViBwZXIgTUIpIGJpZGlyIG1vZGUgQi1mcmFtZSBlbmNvZGluZwotICAgIGludDE2 X3QgKCpiX2RpcmVjdF9tdl90YWJsZSlbMl07ICAgICAvLy88IE1WIHRhYmxlICgxTVYgcGVyIE1C KSBkaXJlY3QgbW9kZSBCLWZyYW1lIGVuY29kaW5nCiAgICAgaW50MTZfdCAoKnBfZmllbGRfbXZf dGFibGVbMl1bMl0pWzJdOyAgIC8vLzwgTVYgdGFibGUgKDJNViBwZXIgTUIpIGludGVybGFjZWQg UC1mcmFtZSBlbmNvZGluZwotICAgIGludDE2X3QgKCpiX2ZpZWxkX212X3RhYmxlWzJdWzJdWzJd KVsyXTsvLy88IE1WIHRhYmxlICg0TVYgcGVyIE1CKSBpbnRlcmxhY2VkIEItZnJhbWUgZW5jb2Rp bmcKLSAgICB1aW50OF90ICgqcF9maWVsZF9zZWxlY3RfdGFibGVbMl0pOyAgLy8vPCBPbmx5IHRo ZSBmaXJzdCBlbGVtZW50IGlzIGFsbG9jYXRlZAotICAgIHVpbnQ4X3QgKCpiX2ZpZWxkX3NlbGVj dF90YWJsZVsyXVsyXSk7IC8vLzwgYWxsb2NhdGVkIGpvaW50bHkgd2l0aCBwX2ZpZWxkX3NlbGVj dF90YWJsZQotCi0gICAgLyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIGVuY29kZXItb25seSAq LwotICAgIHVpbnQxNl90ICptYl92YXI7ICAgICAgICAgICAvLy88IFRhYmxlIGZvciBNQiB2YXJp YW5jZXMKLSAgICB1aW50MTZfdCAqbWNfbWJfdmFyOyAgICAgICAgLy8vPCBUYWJsZSBmb3IgbW90 aW9uIGNvbXBlbnNhdGVkIE1CIHZhcmlhbmNlcwotICAgIHVpbnQ4X3QgKm1iX21lYW47ICAgICAg ICAgICAvLy88IFRhYmxlIGZvciBNQiBsdW1pbmFuY2UKLSAgICB1aW50NjRfdCBlbmNvZGluZ19l cnJvcltNUFZfTUFYX1BMQU5FU107CiAKICAgICBpbnQgbXZfZGlyOwogI2RlZmluZSBNVl9ESVJf Rk9SV0FSRCAgIDEKQEAgLTI1MSw3ICsyMTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29u dGV4dCB7CiAgICAgaW50IG1iX3gsIG1iX3k7CiAgICAgaW50IG1iX3NraXBfcnVuOwogICAgIGlu dCBtYl9pbnRyYTsKLSAgICB1aW50MTZfdCAqbWJfdHlwZTsgIC8vLzwgVGFibGUgZm9yIGNhbmRp ZGF0ZSBNQiB0eXBlcyBmb3IgZW5jb2RpbmcgKGRlZmluZXMgaW4gbXBlZ3ZpZGVvZW5jLmgpCiAK ICAgICBpbnQgYmxvY2tfaW5kZXhbNl07IC8vLzwgaW5kZXggdG8gY3VycmVudCBNQiBpbiBibG9j ayBiYXNlZCBhcnJheXMgd2l0aCBlZGdlcwogICAgIGludCBibG9ja193cmFwWzZdOwpAQCAtMjY1 LDQzICsyMjksNiBAQCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgdWludDE2 X3QgaW50ZXJfbWF0cml4WzY0XTsKICAgICB1aW50MTZfdCBjaHJvbWFfaW50ZXJfbWF0cml4WzY0 XTsKIAotICAgIGludCBpbnRyYV9xdWFudF9iaWFzOyAgICAvLy88IGJpYXMgZm9yIHRoZSBxdWFu dGl6ZXIKLSAgICBpbnQgaW50ZXJfcXVhbnRfYmlhczsgICAgLy8vPCBiaWFzIGZvciB0aGUgcXVh bnRpemVyCi0gICAgaW50IG1pbl9xY29lZmY7ICAgICAgICAgIC8vLzwgbWluaW11bSBlbmNvZGFi bGUgY29lZmZpY2llbnQKLSAgICBpbnQgbWF4X3Fjb2VmZjsgICAgICAgICAgLy8vPCBtYXhpbXVt IGVuY29kYWJsZSBjb2VmZmljaWVudAotICAgIGludCBhY19lc2NfbGVuZ3RoOyAgICAgICAvLy88 IG51bSBvZiBiaXRzIG5lZWRlZCB0byBlbmNvZGUgdGhlIGxvbmdlc3QgZXNjCi0gICAgdWludDhf dCAqaW50cmFfYWNfdmxjX2xlbmd0aDsKLSAgICB1aW50OF90ICppbnRyYV9hY192bGNfbGFzdF9s ZW5ndGg7Ci0gICAgdWludDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sZW5ndGg7Ci0gICAgdWlu dDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sYXN0X2xlbmd0aDsKLSAgICB1aW50OF90ICppbnRl cl9hY192bGNfbGVuZ3RoOwotICAgIHVpbnQ4X3QgKmludGVyX2FjX3ZsY19sYXN0X2xlbmd0aDsK LSAgICB1aW50OF90ICpsdW1hX2RjX3ZsY19sZW5ndGg7Ci0KLSAgICBpbnQgY29kZWRfc2NvcmVb MTJdOwotCi0gICAgLyoqIHByZWNvbXB1dGVkIG1hdHJpeCAoY29tYmluZSBxc2NhbGUgYW5kIERD VCByZW5vcm0pICovCi0gICAgaW50ICgqcV9pbnRyYV9tYXRyaXgpWzY0XTsKLSAgICBpbnQgKCpx X2Nocm9tYV9pbnRyYV9tYXRyaXgpWzY0XTsKLSAgICBpbnQgKCpxX2ludGVyX21hdHJpeClbNjRd OwotICAgIC8qKiBpZGVudGljYWwgdG8gdGhlIGFib3ZlIGJ1dCBmb3IgTU1YICYgdGhlc2UgYXJl IG5vdCBwZXJtdXRhdGVkLCBzZWNvbmQgNjQgZW50cmllcyBhcmUgYmlhcyovCi0gICAgdWludDE2 X3QgKCpxX2ludHJhX21hdHJpeDE2KVsyXVs2NF07Ci0gICAgdWludDE2X3QgKCpxX2Nocm9tYV9p bnRyYV9tYXRyaXgxNilbMl1bNjRdOwotICAgIHVpbnQxNl90ICgqcV9pbnRlcl9tYXRyaXgxNilb Ml1bNjRdOwotCi0gICAgLyogbm9pc2UgcmVkdWN0aW9uICovCi0gICAgaW50ICgqZGN0X2Vycm9y X3N1bSlbNjRdOwotICAgIGludCBkY3RfY291bnRbMl07Ci0gICAgdWludDE2X3QgKCpkY3Rfb2Zm c2V0KVs2NF07Ci0KLSAgICAvKiBzdGF0aXN0aWNzLCB1c2VkIGZvciAyLXBhc3MgZW5jb2Rpbmcg Ki8KLSAgICBpbnQgbXZfYml0czsKLSAgICBpbnQgaV90ZXhfYml0czsKLSAgICBpbnQgcF90ZXhf Yml0czsKLSAgICBpbnQgaV9jb3VudDsKLSAgICBpbnQgbWlzY19iaXRzOyAvLy88IGNicCwgbWJf dHlwZQotICAgIGludCBsYXN0X2JpdHM7IC8vLzwgdGVtcCB2YXIgdXNlZCBmb3IgY2FsY3VsYXRp bmcgdGhlIGFib3ZlIHZhcnMKLQogICAgIC8qIGVycm9yIGNvbmNlYWxtZW50IC8gcmVzeW5jICov CiAgICAgaW50IHJlc3luY19tYl94OyAgICAgICAgICAgICAgICAgLy8vPCB4IHBvc2l0aW9uIG9m IGxhc3QgcmVzeW5jIG1hcmtlcgogICAgIGludCByZXN5bmNfbWJfeTsgICAgICAgICAgICAgICAg IC8vLzwgeSBwb3NpdGlvbiBvZiBsYXN0IHJlc3luYyBtYXJrZXIKQEAgLTMxMSwxMCArMjM4LDYg QEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgewogICAgIC8qIEguMjYzIHNwZWNpZmlj ICovCiAgICAgaW50IGdvYl9pbmRleDsKICAgICBpbnQgb2JtYzsgICAgICAgICAgICAgICAgICAg ICAgIC8vLzwgb3ZlcmxhcHBlZCBibG9jayBtb3Rpb24gY29tcGVuc2F0aW9uCi0gICAgaW50IG1i X2luZm87ICAgICAgICAgICAgICAgICAgICAvLy88IGludGVydmFsIGZvciBvdXRwdXR0aW5nIGlu Zm8gYWJvdXQgbWIgb2Zmc2V0cyBhcyBzaWRlIGRhdGEKLSAgICBpbnQgcHJldl9tYl9pbmZvLCBs YXN0X21iX2luZm87Ci0gICAgdWludDhfdCAqbWJfaW5mb19wdHI7Ci0gICAgaW50IG1iX2luZm9f c2l6ZTsKICAgICBpbnQgZWhjX21vZGU7CiAKICAgICAvKiBILjI2Mysgc3BlY2lmaWMgKi8KQEAg LTM0Miw4ICsyNjUsNiBAQCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgaW50 IGRhdGFfcGFydGl0aW9uaW5nOyAgICAgICAgICAgLy8vPCBkYXRhIHBhcnRpdGlvbmluZyBmbGFn IGZyb20gaGVhZGVyCiAgICAgaW50IHBhcnRpdGlvbmVkX2ZyYW1lOyAgICAgICAgICAgLy8vPCBp cyBjdXJyZW50IGZyYW1lIHBhcnRpdGlvbmVkCiAgICAgaW50IGxvd19kZWxheTsgICAgICAgICAg ICAgICAgICAgLy8vPCBubyByZW9yZGVyaW5nIG5lZWRlZCAvIGhhcyBubyBCLWZyYW1lcwotICAg IFB1dEJpdENvbnRleHQgdGV4X3BiOyAgICAgICAgICAgIC8vLzwgdXNlZCBmb3IgZGF0YSBwYXJ0 aXRpb25lZCBWT1BzCi0gICAgUHV0Qml0Q29udGV4dCBwYjI7ICAgICAgICAgICAgICAgLy8vPCB1 c2VkIGZvciBkYXRhIHBhcnRpdGlvbmVkIFZPUHMKICAgICBpbnQgbXBlZ19xdWFudDsKICAgICBp bnQgcGFkZGluZ19idWdfc2NvcmU7ICAgICAgICAgICAgIC8vLzwgdXNlZCB0byBkZXRlY3QgdGhl IFZFUlkgY29tbW9uIHBhZGRpbmcgYnVnIGluIE1QRUctNAogCkBAIC0zNTQsMTAgKzI3NSw2IEBA IHR5cGVkZWYgc3RydWN0IE1wZWdFbmNDb250ZXh0IHsKICAgICBpbnQgcnYxMF92ZXJzaW9uOyAv Ly88IFJWMTAgdmVyc2lvbjogMCBvciAzCiAgICAgaW50IHJ2MTBfZmlyc3RfZGNfY29kZWRbM107 CiAKLSAgICAvKiBNSlBFRyBzcGVjaWZpYyAqLwotICAgIHN0cnVjdCBNSnBlZ0NvbnRleHQgKm1q cGVnX2N0eDsKLSAgICBpbnQgZXNjX3BvczsKLQogICAgIC8qIE1TTVBFRzQgc3BlY2lmaWMgKi8K ICAgICBpbnQgc2xpY2VfaGVpZ2h0OyAgICAgIC8vLzwgaW4gbWFjcm9ibG9ja3MKICAgICBpbnQg Zmlyc3Rfc2xpY2VfbGluZTsgIC8vLzwgdXNlZCBpbiBNUEVHLTQgdG9vIHRvIGhhbmRsZSByZXN5 bmMgbWFya2VycwpAQCAtMzcxLDE2ICsyODgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0Nv bnRleHQgewogICAgICAgICBNU01QNF9XTVYyLAogICAgICAgICBNU01QNF9WQzEsICAgICAgICAv Ly88IGZvciBWQzEgKGltYWdlKSwgV01WMyAoaW1hZ2UpIGFuZCBNU1MyLgogICAgIH0gbXNtcGVn NF92ZXJzaW9uOwotICAgIGludCBlc2MzX2xldmVsX2xlbmd0aDsKICAgICBpbnQgaW50ZXJfaW50 cmFfcHJlZDsKICAgICBpbnQgbXNwZWw7CiAKICAgICAvKiBkZWNvbXByZXNzaW9uIHNwZWNpZmlj ICovCiAgICAgR2V0Qml0Q29udGV4dCBnYjsKIAotICAgIC8qIE1QRUctMSBzcGVjaWZpYyAqLwot ICAgIGludCBsYXN0X212X2RpcjsgICAgICAgICAvLy88IGxhc3QgbXZfZGlyLCB1c2VkIGZvciBC LWZyYW1lIGVuY29kaW5nCi0KICAgICAvKiBNUEVHLTItc3BlY2lmaWMgLSBJIHdpc2hlZCBub3Qg dG8gaGF2ZSB0byBzdXBwb3J0IHRoaXMgbWVzcy4gKi8KICAgICBpbnQgcHJvZ3Jlc3NpdmVfc2Vx dWVuY2U7CiAgICAgaW50IG1wZWdfZl9jb2RlWzJdWzJdOwpAQCAtNDA5LDE5ICszMjIsOSBAQCB0 eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgaW50IGludGVybGFjZWRfZGN0Owog ICAgIGludCBmaXJzdF9maWVsZDsgICAgICAgICAvLy88IGlzIDEgZm9yIHRoZSBmaXJzdCBmaWVs ZCBvZiBhIGZpZWxkIHBpY3R1cmUgMCBvdGhlcndpc2UKIAotICAgIC8qIFJUUCBzcGVjaWZpYyAq LwotICAgIGludCBydHBfbW9kZTsKLSAgICBpbnQgcnRwX3BheWxvYWRfc2l6ZTsKLQotICAgIHVp bnQ4X3QgKnB0cl9sYXN0Z29iOwotCiAgICAgaW50MTZfdCAoKmJsb2NrKVs2NF07IC8vLzwgcG9p bnRzIHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIGJsb2NrcwogICAgIGludDE2X3QgKCpibG9ja3Mp WzEyXVs2NF07IC8vIGZvciBIUSBtb2RlIHdlIG5lZWQgdG8ga2VlcCB0aGUgYmVzdCBibG9jawot ICAgIHVuaW9uIHsKICAgICBpbnQgKCpkZWNvZGVfbWIpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAq cywgaW50MTZfdCBibG9ja1sxMl1bNjRdKTsgLy8gdXNlZCBieSBzb21lIGNvZGVjcyB0byBhdm9p ZCBhIHN3aXRjaCgpCi0gICAgICAgIHZvaWQgKCplbmNvZGVfbWIpKHN0cnVjdCBNcGVnRW5jQ29u dGV4dCAqcywgaW50MTZfdCBibG9ja1tdWzY0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3kpOwotICAgIH07CiAKICNkZWZpbmUgU0xJQ0VfT0sg ICAgICAgICAwCiAjZGVmaW5lIFNMSUNFX0VSUk9SICAgICAtMQpAQCAtNDQ0LDIwICszNDcsNiBA QCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQxNl90ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2NhbGUpOwogICAg IHZvaWQgKCpkY3RfdW5xdWFudGl6ZV9pbnRlcikoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLCAv LyB1bnF1YW50aXplciB0byB1c2UgKE1QRUctNCBjYW4gdXNlIGJvdGgpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQxNl90ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2Nh bGUpOwotICAgIGludCAoKmRjdF9xdWFudGl6ZSkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLCBp bnQxNl90ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2NhbGUsIGludCAqb3ZlcmZs b3cpOwotICAgIHZvaWQgKCpkZW5vaXNlX2RjdCkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLCBp bnQxNl90ICpibG9jayk7Ci0KLSAgICBpbnQgbXB2X2ZsYWdzOyAgICAgIC8vLzwgZmxhZ3Mgc2V0 IGJ5IHByaXZhdGUgb3B0aW9ucwotICAgIGludCBxdWFudGl6ZXJfbm9pc2Vfc2hhcGluZzsKLQot ICAgIG1lX2NtcF9mdW5jIGlsZGN0X2NtcFsyXTsgLy8vPCAwID0gaW50cmEsIDEgPSBub24taW50 cmEKLSAgICBtZV9jbXBfZnVuYyBuX3NzZV9jbXBbMl07IC8vLzwgZWl0aGVyIFNTRSBvciBOU1NF IGNtcCBmdW5jCi0gICAgbWVfY21wX2Z1bmMgc2FkX2NtcFsyXTsKLSAgICBtZV9jbXBfZnVuYyBz c2VfY21wWzJdOwotICAgIGludCAoKnN1bV9hYnNfZGN0ZWxlbSkoY29uc3QgaW50MTZfdCAqYmxv Y2spOwotCi0gICAgLy8vIEJpdGZpZWxkIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gd2hpY2ggZnJh bWVzIHRvIHJlY29uc3RydWN0LgotICAgIGludCBmcmFtZV9yZWNvbnN0cnVjdGlvbl9iaXRmaWVs ZDsKIAogICAgIC8qIGZsYWcgdG8gaW5kaWNhdGUgYSByZWluaXRpYWxpemF0aW9uIGlzIHJlcXVp cmVkLCBlLmcuIGFmdGVyCiAgICAgICogYSBmcmFtZSBzaXplIGNoYW5nZSAqLwpAQCAtNDY3LDEw ICszNTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAgICAgdW5zaWduZWQg c2xpY2VfY3R4X3NpemU7CiAKICAgICBFUkNvbnRleHQgZXI7Ci0KLSAgICBpbnQgZXJyb3JfcmF0 ZTsKLQotICAgIGludCBpbnRyYV9wZW5hbHR5OwogfSBNcGVnRW5jQ29udGV4dDsKIAogCmRpZmYg LS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb19kZWMuYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVv X2RlYy5jCmluZGV4IDI4NTZkYmZiZDYuLjhjODRiNTljNWUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29k ZWMvbXBlZ3ZpZGVvX2RlYy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2RlYy5jCkBAIC0x MzYsNyArMTM2LDcgQEAgaW50IGZmX21wZWdfdXBkYXRlX3RocmVhZF9jb250ZXh0KEFWQ29kZWND b250ZXh0ICpkc3QsCiAKICAgICAvLyBNUEVHLTIvaW50ZXJsYWNpbmcgaW5mbwogICAgIG1lbWNw eSgmcy0+cHJvZ3Jlc3NpdmVfc2VxdWVuY2UsICZzMS0+cHJvZ3Jlc3NpdmVfc2VxdWVuY2UsCi0g ICAgICAgICAgIChjaGFyICopICZzMS0+cnRwX21vZGUgLSAoY2hhciAqKSAmczEtPnByb2dyZXNz aXZlX3NlcXVlbmNlKTsKKyAgICAgICAgICAgKGNoYXIgKikgJnMxLT5maXJzdF9maWVsZCArIHNp emVvZihzMS0+Zmlyc3RfZmllbGQpIC0gKGNoYXIgKikgJnMxLT5wcm9ncmVzc2l2ZV9zZXF1ZW5j ZSk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVv X2VuYy5jIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKaW5kZXggMzMyNDFkNmNiMC4uNzA2 MWFkMDcxOSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKKysrIGIvbGli YXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKQEAgLTg0LDEzICs4NCwxMyBAQAogI2RlZmluZSBRTUFU X1NISUZUIDIxCiAKIHN0YXRpYyBpbnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQg KmNvbnN0IHMsIGNvbnN0IEFWUGFja2V0ICpwa3QpOwotc3RhdGljIGludCBkY3RfcXVhbnRpemVf cmVmaW5lKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50MTZfdCAqd2VpZ2h0 LCBpbnQxNl90ICpvcmlnLCBpbnQgbiwgaW50IHFzY2FsZSk7Ci1zdGF0aWMgaW50IHNzZV9tYihN cGVnRW5jQ29udGV4dCAqcyk7Ci1zdGF0aWMgdm9pZCBkZW5vaXNlX2RjdF9jKE1wZWdFbmNDb250 ZXh0ICpzLCBpbnQxNl90ICpibG9jayk7Ci1zdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9jKE1wZWdF bmNDb250ZXh0ICpzLAorc3RhdGljIGludCBkY3RfcXVhbnRpemVfcmVmaW5lKE1QVkVuY0NvbnRl eHQgKmNvbnN0IHMsIGludDE2X3QgKmJsb2NrLCBpbnQxNl90ICp3ZWlnaHQsIGludDE2X3QgKm9y aWcsIGludCBuLCBpbnQgcXNjYWxlKTsKK3N0YXRpYyBpbnQgc3NlX21iKE1QVkVuY0NvbnRleHQg KmNvbnN0IHMpOworc3RhdGljIHZvaWQgZGVub2lzZV9kY3RfYyhNUFZFbmNDb250ZXh0ICpjb25z dCBzLCBpbnQxNl90ICpibG9jayk7CitzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9jKE1QVkVuY0Nv bnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2Nr LCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHFzY2FsZSwgaW50ICpvdmVy Zmxvdyk7Ci1zdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTXBlZ0VuY0NvbnRleHQg KnMsIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSwgaW50ICpvdmVyZmxvdyk7Citz dGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTVBWRW5jQ29udGV4dCAqY29uc3Qgcywg aW50MTZfdCAqYmxvY2ssIGludCBuLCBpbnQgcXNjYWxlLCBpbnQgKm92ZXJmbG93KTsKIAogc3Rh dGljIHVpbnQ4X3QgZGVmYXVsdF9mY29kZV90YWJbTUFYX01WICogMiArIDFdOwogCkBAIC0xMDcs NyArMTA3LDcgQEAgY29uc3QgQVZDbGFzcyBmZl9tcHZfZW5jX2NsYXNzID0gewogICAgIC52ZXJz aW9uICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAogfTsKIAotdm9pZCBmZl9jb252ZXJ0X21h dHJpeChNcGVnRW5jQ29udGV4dCAqcywgaW50ICgqcW1hdClbNjRdLAordm9pZCBmZl9jb252ZXJ0 X21hdHJpeChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgKCpxbWF0KVs2NF0sCiAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQxNl90ICgqcW1hdDE2KVsyXVs2NF0sCiAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpxdWFudF9tYXRyaXgsCiAgICAgICAgICAgICAgICAg ICAgICAgIGludCBiaWFzLCBpbnQgcW1pbiwgaW50IHFtYXgsIGludCBpbnRyYSkKQEAgLTEyMCw3 ICsxMjAsNyBAQCB2b2lkIGZmX2NvbnZlcnRfbWF0cml4KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQg KCpxbWF0KVs2NF0sCiAgICAgICAgIGludCBpOwogICAgICAgICBpbnQgcXNjYWxlMjsKIAotICAg ICAgICBpZiAocy0+cV9zY2FsZV90eXBlKSBxc2NhbGUyID0gZmZfbXBlZzJfbm9uX2xpbmVhcl9x c2NhbGVbcXNjYWxlXTsKKyAgICAgICAgaWYgKHMtPmMucV9zY2FsZV90eXBlKSBxc2NhbGUyID0g ZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbcXNjYWxlXTsKICAgICAgICAgZWxzZSAgICAgICAg ICAgICAgICAgcXNjYWxlMiA9IHFzY2FsZSA8PCAxOwogCiAgICAgICAgIGlmIChmZHNwLT5mZGN0 ID09IGZmX2pwZWdfZmRjdF9pc2xvd184ICB8fApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgZmZf Y29udmVydF9tYXRyaXgoTXBlZ0VuY0NvbnRleHQgKnMsIGludCAoKnFtYXQpWzY0XSwKICNlbmRp ZiAvKiBDT05GSUdfRkFBTkRDVCAqLwogICAgICAgICAgICAgZmRzcC0+ZmRjdCA9PSBmZl9qcGVn X2ZkY3RfaXNsb3dfMTApIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKSB7 Ci0gICAgICAgICAgICAgICAgY29uc3QgaW50IGogPSBzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25b aV07CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGogPSBzLT5jLmlkc3AuaWRjdF9wZXJtdXRh dGlvbltpXTsKICAgICAgICAgICAgICAgICBpbnQ2NF90IGRlbiA9IChpbnQ2NF90KSBxc2NhbGUy ICogcXVhbnRfbWF0cml4W2pdOwogICAgICAgICAgICAgICAgIC8qIDEgKiAxIDw9IHFzY2FsZTIg KiBxdWFudF9tYXRyaXhbal0gPD0gMTEyICogMjU1CiAgICAgICAgICAgICAgICAgICogQXNzdW1l IHggPSBxc2NhbGUyICogcXVhbnRfbWF0cml4W2pdCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBm Zl9jb252ZXJ0X21hdHJpeChNcGVnRW5jQ29udGV4dCAqcywgaW50ICgqcW1hdClbNjRdLAogICAg ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGZkc3AtPmZkY3QgPT0gZmZfZmRjdF9pZmFz dCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHsKLSAgICAgICAgICAg ICAgICBjb25zdCBpbnQgaiA9IHMtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpXTsKKyAgICAgICAg ICAgICAgICBjb25zdCBpbnQgaiA9IHMtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2ldOwogICAg ICAgICAgICAgICAgIGludDY0X3QgZGVuID0gZmZfYWFuc2NhbGVzW2ldICogKGludDY0X3QpIHFz Y2FsZTIgKiBxdWFudF9tYXRyaXhbal07CiAgICAgICAgICAgICAgICAgLyogMTI0NyAqIDEgKiAx IDw9IGZmX2FhbnNjYWxlc1tpXSAqIHFzY2FsZTIgKiBxdWFudF9tYXRyaXhbal0gPD0gMzE1MjEg KiAxMTIgKiAyNTUKICAgICAgICAgICAgICAgICAgKiBBc3N1bWUgeCA9IGZmX2FhbnNjYWxlc1tp XSAqIHFzY2FsZTIgKiBxdWFudF9tYXRyaXhbal0KQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIGZm X2NvbnZlcnRfbWF0cml4KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgKCpxbWF0KVs2NF0sCiAgICAg ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg NjQ7IGkrKykgewotICAgICAgICAgICAgICAgIGNvbnN0IGludCBqID0gcy0+aWRzcC5pZGN0X3Bl cm11dGF0aW9uW2ldOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBqID0gcy0+Yy5pZHNwLmlk Y3RfcGVybXV0YXRpb25baV07CiAgICAgICAgICAgICAgICAgaW50NjRfdCBkZW4gPSAoaW50NjRf dCkgcXNjYWxlMiAqIHF1YW50X21hdHJpeFtqXTsKICAgICAgICAgICAgICAgICAvKiAxICogMSA8 PSBxc2NhbGUyICogcXVhbnRfbWF0cml4W2pdIDw9IDExMiAqIDI1NQogICAgICAgICAgICAgICAg ICAqIEFzc3VtZSB4ID0gcXNjYWxlMiAqIHF1YW50X21hdHJpeFtqXQpAQCAtMTg4LDcgKzE4OCw3 IEBAIHZvaWQgZmZfY29udmVydF9tYXRyaXgoTXBlZ0VuY0NvbnRleHQgKnMsIGludCAoKnFtYXQp WzY0XSwKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoc2hpZnQpIHsKLSAgICAgICAgYXZfbG9n KHMtPmF2Y3R4LCBBVl9MT0dfSU5GTywKKyAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xP R19JTkZPLAogICAgICAgICAgICAgICAgIldhcm5pbmcsIFFNQVRfU0hJRlQgaXMgbGFyZ2VyIHRo YW4gJWQsIG92ZXJmbG93cyBwb3NzaWJsZVxuIiwKICAgICAgICAgICAgICAgIFFNQVRfU0hJRlQg LSBzaGlmdCk7CiAgICAgfQpAQCAtMTk2LDMxICsxOTYsMzEgQEAgdm9pZCBmZl9jb252ZXJ0X21h dHJpeChNcGVnRW5jQ29udGV4dCAqcywgaW50ICgqcW1hdClbNjRdLAogCiBzdGF0aWMgaW5saW5l IHZvaWQgdXBkYXRlX3FzY2FsZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIHsKLSAgICBN cGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0 IHMgPSAmbS0+czsKIAotICAgIGlmIChzLT5xX3NjYWxlX3R5cGUgPT0gMSAmJiAwKSB7CisgICAg aWYgKHMtPmMucV9zY2FsZV90eXBlID09IDEgJiYgMCkgewogICAgICAgICBpbnQgaTsKICAgICAg ICAgaW50IGJlc3RkaWZmPUlOVF9NQVg7CiAgICAgICAgIGludCBiZXN0ID0gMTsKIAogICAgICAg ICBmb3IgKGkgPSAwIDsgaTxGRl9BUlJBWV9FTEVNUyhmZl9tcGVnMl9ub25fbGluZWFyX3FzY2Fs ZSk7IGkrKykgewotICAgICAgICAgICAgaW50IGRpZmYgPSBGRkFCUygoZmZfbXBlZzJfbm9uX2xp bmVhcl9xc2NhbGVbaV08PChGRl9MQU1CREFfU0hJRlQgKyA2KSkgLSAoaW50KXMtPmxhbWJkYSAq IDEzOSk7Ci0gICAgICAgICAgICBpZiAoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbaV0gPCBz LT5hdmN0eC0+cW1pbiB8fAotICAgICAgICAgICAgICAgIChmZl9tcGVnMl9ub25fbGluZWFyX3Fz Y2FsZVtpXSA+IHMtPmF2Y3R4LT5xbWF4ICYmICFtLT52YnZfaWdub3JlX3FtYXgpKQorICAgICAg ICAgICAgaW50IGRpZmYgPSBGRkFCUygoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbaV08PChG Rl9MQU1CREFfU0hJRlQgKyA2KSkgLSAoaW50KXMtPmMubGFtYmRhICogMTM5KTsKKyAgICAgICAg ICAgIGlmIChmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtpXSA8IHMtPmMuYXZjdHgtPnFtaW4g fHwKKyAgICAgICAgICAgICAgICAoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbaV0gPiBzLT5j LmF2Y3R4LT5xbWF4ICYmICFtLT52YnZfaWdub3JlX3FtYXgpKQogICAgICAgICAgICAgICAgIGNv bnRpbnVlOwogICAgICAgICAgICAgaWYgKGRpZmYgPCBiZXN0ZGlmZikgewogICAgICAgICAgICAg ICAgIGJlc3RkaWZmID0gZGlmZjsKICAgICAgICAgICAgICAgICBiZXN0ID0gaTsKICAgICAgICAg ICAgIH0KICAgICAgICAgfQotICAgICAgICBzLT5xc2NhbGUgPSBiZXN0OworICAgICAgICBzLT5j LnFzY2FsZSA9IGJlc3Q7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcy0+cXNjYWxlID0gKHMtPmxh bWJkYSAqIDEzOSArIEZGX0xBTUJEQV9TQ0FMRSAqIDY0KSA+PgorICAgICAgICBzLT5jLnFzY2Fs ZSA9IChzLT5jLmxhbWJkYSAqIDEzOSArIEZGX0xBTUJEQV9TQ0FMRSAqIDY0KSA+PgogICAgICAg ICAgICAgICAgICAgICAoRkZfTEFNQkRBX1NISUZUICsgNyk7Ci0gICAgICAgIHMtPnFzY2FsZSA9 IGF2X2NsaXAocy0+cXNjYWxlLCBzLT5hdmN0eC0+cW1pbiwgbS0+dmJ2X2lnbm9yZV9xbWF4ID8g MzEgOiBzLT5hdmN0eC0+cW1heCk7CisgICAgICAgIHMtPmMucXNjYWxlID0gYXZfY2xpcChzLT5j LnFzY2FsZSwgcy0+Yy5hdmN0eC0+cW1pbiwgbS0+dmJ2X2lnbm9yZV9xbWF4ID8gMzEgOiBzLT5j LmF2Y3R4LT5xbWF4KTsKICAgICB9CiAKLSAgICBzLT5sYW1iZGEyID0gKHMtPmxhbWJkYSAqIHMt PmxhbWJkYSArIEZGX0xBTUJEQV9TQ0FMRSAvIDIpID4+CisgICAgcy0+Yy5sYW1iZGEyID0gKHMt PmMubGFtYmRhICogcy0+Yy5sYW1iZGEgKyBGRl9MQU1CREFfU0NBTEUgLyAyKSA+PgogICAgICAg ICAgICAgICAgICBGRl9MQU1CREFfU0hJRlQ7CiB9CiAKQEAgLTIzOCwzNCArMjM4LDM0IEBAIHZv aWQgZmZfd3JpdGVfcXVhbnRfbWF0cml4KFB1dEJpdENvbnRleHQgKnBiLCB1aW50MTZfdCAqbWF0 cml4KQogfQogCiAvKioKLSAqIGluaXQgcy0+Y3VyX3BpYy5xc2NhbGVfdGFibGUgZnJvbSBzLT5s YW1iZGFfdGFibGUKKyAqIGluaXQgcy0+Yy5jdXJfcGljLnFzY2FsZV90YWJsZSBmcm9tIHMtPmxh bWJkYV90YWJsZQogICovCi1zdGF0aWMgdm9pZCBpbml0X3FzY2FsZV90YWIoTXBlZ0VuY0NvbnRl eHQgKnMpCitzdGF0aWMgdm9pZCBpbml0X3FzY2FsZV90YWIoTVBWRW5jQ29udGV4dCAqY29uc3Qg cykKIHsKLSAgICBpbnQ4X3QgKiBjb25zdCBxc2NhbGVfdGFibGUgPSBzLT5jdXJfcGljLnFzY2Fs ZV90YWJsZTsKKyAgICBpbnQ4X3QgKiBjb25zdCBxc2NhbGVfdGFibGUgPSBzLT5jLmN1cl9waWMu cXNjYWxlX3RhYmxlOwogICAgIGludCBpOwogCi0gICAgZm9yIChpID0gMDsgaSA8IHMtPm1iX251 bTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBsYW0gPSBzLT5sYW1iZGFfdGFibGVbcy0+ bWJfaW5kZXgyeHlbaV1dOworICAgIGZvciAoaSA9IDA7IGkgPCBzLT5jLm1iX251bTsgaSsrKSB7 CisgICAgICAgIHVuc2lnbmVkIGludCBsYW0gPSBzLT5sYW1iZGFfdGFibGVbcy0+Yy5tYl9pbmRl eDJ4eVtpXV07CiAgICAgICAgIGludCBxcCA9IChsYW0gKiAxMzkgKyBGRl9MQU1CREFfU0NBTEUg KiA2NCkgPj4gKEZGX0xBTUJEQV9TSElGVCArIDcpOwotICAgICAgICBxc2NhbGVfdGFibGVbcy0+ bWJfaW5kZXgyeHlbaV1dID0gYXZfY2xpcChxcCwgcy0+YXZjdHgtPnFtaW4sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmF2Y3R4LT5xbWF4KTsK KyAgICAgICAgcXNjYWxlX3RhYmxlW3MtPmMubWJfaW5kZXgyeHlbaV1dID0gYXZfY2xpcChxcCwg cy0+Yy5hdmN0eC0+cW1pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+Yy5hdmN0eC0+cW1heCk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCB1 cGRhdGVfZHVwbGljYXRlX2NvbnRleHRfYWZ0ZXJfbWUoTXBlZ0VuY0NvbnRleHQgKmRzdCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNcGVnRW5j Q29udGV4dCAqc3JjKQorc3RhdGljIHZvaWQgdXBkYXRlX2R1cGxpY2F0ZV9jb250ZXh0X2FmdGVy X21lKE1QVkVuY0NvbnRleHQgKmNvbnN0IGRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBNUFZFbmNDb250ZXh0ICpjb25zdCBzcmMpCiB7Ci0j ZGVmaW5lIENPUFkoYSkgZHN0LT5hPSBzcmMtPmEKLSAgICBDT1BZKHBpY3RfdHlwZSk7Ci0gICAg Q09QWShmX2NvZGUpOwotICAgIENPUFkoYl9jb2RlKTsKLSAgICBDT1BZKHFzY2FsZSk7Ci0gICAg Q09QWShsYW1iZGEpOwotICAgIENPUFkobGFtYmRhMik7Ci0gICAgQ09QWShmcmFtZV9wcmVkX2Zy YW1lX2RjdCk7IC8vIEZJWE1FIGRvbid0IHNldCBpbiBlbmNvZGVfaGVhZGVyCi0gICAgQ09QWShw cm9ncmVzc2l2ZV9mcmFtZSk7ICAgIC8vIEZJWE1FIGRvbid0IHNldCBpbiBlbmNvZGVfaGVhZGVy Ci0gICAgQ09QWShwYXJ0aXRpb25lZF9mcmFtZSk7ICAgIC8vIEZJWE1FIGRvbid0IHNldCBpbiBl bmNvZGVfaGVhZGVyCisjZGVmaW5lIENPUFkoYSkgZHN0LT5hID0gc3JjLT5hCisgICAgQ09QWShj LnBpY3RfdHlwZSk7CisgICAgQ09QWShjLmZfY29kZSk7CisgICAgQ09QWShjLmJfY29kZSk7Cisg ICAgQ09QWShjLnFzY2FsZSk7CisgICAgQ09QWShjLmxhbWJkYSk7CisgICAgQ09QWShjLmxhbWJk YTIpOworICAgIENPUFkoYy5mcmFtZV9wcmVkX2ZyYW1lX2RjdCk7IC8vIEZJWE1FIGRvbid0IHNl dCBpbiBlbmNvZGVfaGVhZGVyCisgICAgQ09QWShjLnByb2dyZXNzaXZlX2ZyYW1lKTsgICAgLy8g RklYTUUgZG9uJ3Qgc2V0IGluIGVuY29kZV9oZWFkZXIKKyAgICBDT1BZKGMucGFydGl0aW9uZWRf ZnJhbWUpOyAgICAvLyBGSVhNRSBkb24ndCBzZXQgaW4gZW5jb2RlX2hlYWRlcgogI3VuZGVmIENP UFkKIH0KIApAQCAtMjc2LDI2ICsyNzYsMjYgQEAgc3RhdGljIGF2X2NvbGQgdm9pZCBtcHZfZW5j b2RlX2luaXRfc3RhdGljKHZvaWQpCiB9CiAKIC8qKgotICogU2V0IHRoZSBnaXZlbiBNcGVnRW5j Q29udGV4dCB0byBkZWZhdWx0cyBmb3IgZW5jb2RpbmcuCisgKiBTZXQgdGhlIGdpdmVuIE1QVkVu Y0NvbnRleHQgdG8gZGVmYXVsdHMgZm9yIGVuY29kaW5nLgogICovCiBzdGF0aWMgYXZfY29sZCB2 b2lkIG1wdl9lbmNvZGVfZGVmYXVsdHMoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiB7Ci0g ICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICpj b25zdCBzID0gJm0tPnM7CiAgICAgc3RhdGljIEFWT25jZSBpbml0X3N0YXRpY19vbmNlID0gQVZf T05DRV9JTklUOwogCi0gICAgZmZfbXB2X2NvbW1vbl9kZWZhdWx0cyhzKTsKKyAgICBmZl9tcHZf Y29tbW9uX2RlZmF1bHRzKCZzLT5jKTsKIAogICAgIGlmICghbS0+ZmNvZGVfdGFiKSB7CiAgICAg ICAgIG0tPmZjb2RlX3RhYiA9IGRlZmF1bHRfZmNvZGVfdGFiICsgTUFYX01WOwogICAgICAgICBm Zl90aHJlYWRfb25jZSgmaW5pdF9zdGF0aWNfb25jZSwgbXB2X2VuY29kZV9pbml0X3N0YXRpYyk7 CiAgICAgfQotICAgIGlmICghcy0+eV9kY19zY2FsZV90YWJsZSkgewotICAgICAgICBzLT55X2Rj X3NjYWxlX3RhYmxlID0KLSAgICAgICAgcy0+Y19kY19zY2FsZV90YWJsZSA9IGZmX21wZWcxX2Rj X3NjYWxlX3RhYmxlOworICAgIGlmICghcy0+Yy55X2RjX3NjYWxlX3RhYmxlKSB7CisgICAgICAg IHMtPmMueV9kY19zY2FsZV90YWJsZSA9CisgICAgICAgIHMtPmMuY19kY19zY2FsZV90YWJsZSA9 IGZmX21wZWcxX2RjX3NjYWxlX3RhYmxlOwogICAgIH0KIH0KIAotYXZfY29sZCB2b2lkIGZmX2Rj dF9lbmNvZGVfaW5pdChNcGVnRW5jQ29udGV4dCAqcykKK2F2X2NvbGQgdm9pZCBmZl9kY3RfZW5j b2RlX2luaXQoTVBWRW5jQ29udGV4dCAqY29uc3QgcykKIHsKICAgICBzLT5kY3RfcXVhbnRpemUg PSBkY3RfcXVhbnRpemVfYzsKICAgICBzLT5kZW5vaXNlX2RjdCAgPSBkZW5vaXNlX2RjdF9jOwpA QCAtMzA2LDE5ICszMDYsMTkgQEAgYXZfY29sZCB2b2lkIGZmX2RjdF9lbmNvZGVfaW5pdChNcGVn RW5jQ29udGV4dCAqcykKICAgICBmZl9kY3RfZW5jb2RlX2luaXRfeDg2KHMpOwogI2VuZGlmCiAK LSAgICBpZiAocy0+YXZjdHgtPnRyZWxsaXMpCisgICAgaWYgKHMtPmMuYXZjdHgtPnRyZWxsaXMp CiAgICAgICAgIHMtPmRjdF9xdWFudGl6ZSAgPSBkY3RfcXVhbnRpemVfdHJlbGxpc19jOwogfQog CiBzdGF0aWMgYXZfY29sZCBpbnQgbWVfY21wX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0 IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3Qg cyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICBNRUNt cENvbnRleHQgbWVjYzsKICAgICBtZV9jbXBfZnVuYyBtZV9jbXBbNl07CiAgICAgaW50IHJldDsK IAogICAgIGZmX21lX2NtcF9pbml0KCZtZWNjLCBhdmN0eCk7Ci0gICAgcmV0ID0gZmZfbWVfaW5p dCgmcy0+bWUsIGF2Y3R4LCAmbWVjYywgMSk7CisgICAgcmV0ID0gZmZfbWVfaW5pdCgmcy0+Yy5t ZSwgYXZjdHgsICZtZWNjLCAxKTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIHJl dDsKICAgICByZXQgPSBmZl9zZXRfY21wKCZtZWNjLCBtZV9jbXAsIG0tPmZyYW1lX3NraXBfY21w LCAxKTsKQEAgLTM1NSw4ICszNTUsOCBAQCBzdGF0aWMgYXZfY29sZCBpbnQgbWVfY21wX2luaXQo TVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0eAogI2RlZmlu ZSBBTExPQ1pfQVJSQVlTKHAsIG11bHQsIG51bWIpICgocCkgPSBhdl9jYWxsb2MobnVtYiwgbXVs dCAqIHNpemVvZigqKHApKSkpCiBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9tYXRyaWNlcyhNUFZN YWluRW5jQ29udGV4dCAqY29uc3QgbSwgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogewotICAgIE1w ZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7Ci0gICAgY29uc3QgaW50IG5iX21hdHJpY2Vz ID0gMSArIChzLT5vdXRfZm9ybWF0ID09IEZNVF9NSlBFRykgKyAhbS0+aW50cmFfb25seTsKKyAg ICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgY29uc3QgaW50IG5iX21hdHJp Y2VzID0gMSArIChzLT5jLm91dF9mb3JtYXQgPT0gRk1UX01KUEVHKSArICFtLT5pbnRyYV9vbmx5 OwogICAgIGNvbnN0IHVpbnQxNl90ICppbnRyYV9tYXRyaXgsICppbnRlcl9tYXRyaXg7CiAgICAg aW50IHJldDsKIApAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X21h dHJpY2VzKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBBVkNvZGVjQ29udGV4dCAqYXZjCiAg ICAgICAgICFBTExPQ1pfQVJSQVlTKHMtPnFfaW50cmFfbWF0cml4MTYsIDMyLCBuYl9tYXRyaWNl cykpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKLSAgICBpZiAocy0+b3V0X2Zv cm1hdCA9PSBGTVRfTUpQRUcpIHsKKyAgICBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9NSlBF RykgewogICAgICAgICBzLT5xX2Nocm9tYV9pbnRyYV9tYXRyaXggICA9IHMtPnFfaW50cmFfbWF0 cml4ICAgKyAzMjsKICAgICAgICAgcy0+cV9jaHJvbWFfaW50cmFfbWF0cml4MTYgPSBzLT5xX2lu dHJhX21hdHJpeDE2ICsgMzI7CiAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2V0IHFfaW50ZXJfbWF0 cml4CkBAIC0zODAsMTEgKzM4MCwxMSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9tYXRyaWNl cyhNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgQVZDb2RlY0NvbnRleHQgKmF2YwogICAgICAg ICBzLT5xX2ludGVyX21hdHJpeDE2ID0gcy0+cV9pbnRyYV9tYXRyaXgxNiArIDMyOwogICAgIH0K IAotICAgIGlmIChDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBzLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9NUEVHNCAmJgotICAgICAgICBzLT5tcGVnX3F1YW50KSB7CisgICAgaWYgKENPTkZJR19N UEVHNF9FTkNPREVSICYmIHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgJiYKKyAg ICAgICAgcy0+Yy5tcGVnX3F1YW50KSB7CiAgICAgICAgIGludHJhX21hdHJpeCA9IGZmX21wZWc0 X2RlZmF1bHRfaW50cmFfbWF0cml4OwogICAgICAgICBpbnRlcl9tYXRyaXggPSBmZl9tcGVnNF9k ZWZhdWx0X25vbl9pbnRyYV9tYXRyaXg7Ci0gICAgfSBlbHNlIGlmIChzLT5vdXRfZm9ybWF0ID09 IEZNVF9IMjYzIHx8IHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjEpIHsKKyAgICB9IGVsc2UgaWYg KHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX0gy NjEpIHsKICAgICAgICAgaW50cmFfbWF0cml4ID0KICAgICAgICAgaW50ZXJfbWF0cml4ID0gZmZf bXBlZzFfZGVmYXVsdF9ub25faW50cmFfbWF0cml4OwogICAgIH0gZWxzZSB7CkBAIC0zOTksMTAg KzM5OSwxMCBAQCBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9tYXRyaWNlcyhNUFZNYWluRW5jQ29u dGV4dCAqY29uc3QgbSwgQVZDb2RlY0NvbnRleHQgKmF2YwogCiAgICAgLyogaW5pdCBxIG1hdHJp eCAqLwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7IGkrKykgewotICAgICAgICBpbnQgaiA9 IHMtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbltpXTsKKyAgICAgICAgaW50IGogPSBzLT5jLmlkc3Au aWRjdF9wZXJtdXRhdGlvbltpXTsKIAotICAgICAgICBzLT5pbnRyYV9tYXRyaXhbal0gPSBzLT5j aHJvbWFfaW50cmFfbWF0cml4W2pdID0gaW50cmFfbWF0cml4W2ldOwotICAgICAgICBzLT5pbnRl cl9tYXRyaXhbal0gPSBpbnRlcl9tYXRyaXhbaV07CisgICAgICAgIHMtPmMuaW50cmFfbWF0cml4 W2pdID0gcy0+Yy5jaHJvbWFfaW50cmFfbWF0cml4W2pdID0gaW50cmFfbWF0cml4W2ldOworICAg ICAgICBzLT5jLmludGVyX21hdHJpeFtqXSA9IGludGVyX21hdHJpeFtpXTsKICAgICB9CiAKICAg ICAvKiBwcmVjb21wdXRlIG1hdHJpeCAqLwpAQCAtNDExLDExICs0MTEsMTEgQEAgc3RhdGljIGF2 X2NvbGQgaW50IGluaXRfbWF0cmljZXMoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIEFWQ29k ZWNDb250ZXh0ICphdmMKICAgICAgICAgcmV0dXJuIHJldDsKIAogICAgIGZmX2NvbnZlcnRfbWF0 cml4KHMsIHMtPnFfaW50cmFfbWF0cml4LCBzLT5xX2ludHJhX21hdHJpeDE2LAotICAgICAgICAg ICAgICAgICAgICAgIHMtPmludHJhX21hdHJpeCwgcy0+aW50cmFfcXVhbnRfYmlhcywgYXZjdHgt PnFtaW4sCisgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRyYV9tYXRyaXgsIHMtPmludHJh X3F1YW50X2JpYXMsIGF2Y3R4LT5xbWluLAogICAgICAgICAgICAgICAgICAgICAgIDMxLCAxKTsK ICAgICBpZiAocy0+cV9pbnRlcl9tYXRyaXgpCiAgICAgICAgIGZmX2NvbnZlcnRfbWF0cml4KHMs IHMtPnFfaW50ZXJfbWF0cml4LCBzLT5xX2ludGVyX21hdHJpeDE2LAotICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5pbnRlcl9tYXRyaXgsIHMtPmludGVyX3F1YW50X2JpYXMsIGF2Y3R4LT5x bWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmludGVyX21hdHJpeCwgcy0+aW50 ZXJfcXVhbnRfYmlhcywgYXZjdHgtPnFtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMx LCAwKTsKIAogICAgIHJldHVybiAwOwpAQCAtNDIzLDcgKzQyMyw3IEBAIHN0YXRpYyBhdl9jb2xk IGludCBpbml0X21hdHJpY2VzKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBBVkNvZGVjQ29u dGV4dCAqYXZjCiAKIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0Nv bnRleHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKLSAgICBNcGVnRW5jQ29u dGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+ czsKICAgICAvLyBBbGlnbiB0aGUgZm9sbG93aW5nIHBlci10aHJlYWQgYnVmZmVycyB0byBhdm9p ZCBmYWxzZSBzaGFyaW5nLgogICAgIGVudW0gewogI2lmbmRlZiBfTVNDX1ZFUgpAQCAtNDMyLDEy ICs0MzIsMTIgQEAgc3RhdGljIGF2X2NvbGQgaW50IGluaXRfYnVmZmVycyhNUFZNYWluRW5jQ29u dGV4dCAqY29uc3QgbSwgQVZDb2RlY0NvbnRleHQgKmF2Y3QKICNlbHNlCiAgICAgICAgIEFMSUdO ID0gMTI4LAogI2VuZGlmCi0gICAgICAgIE1FX01BUF9BTExPQ19TSVpFID0gRkZBTElHTigyICog TUVfTUFQX1NJWkUgKiBzaXplb2YoKnMtPm1lLm1hcCksIEFMSUdOKSwKKyAgICAgICAgTUVfTUFQ X0FMTE9DX1NJWkUgPSBGRkFMSUdOKDIgKiBNRV9NQVBfU0laRSAqIHNpemVvZigqcy0+Yy5tZS5t YXApLCBBTElHTiksCiAgICAgICAgIERDVF9FUlJPUl9TSVpFICAgID0gRkZBTElHTigyICogc2l6 ZW9mKCpzLT5kY3RfZXJyb3Jfc3VtKSwgQUxJR04pLAogICAgIH07CiAgICAgc3RhdGljX2Fzc2Vy dChGRk1BWChNRV9NQVBfQUxMT0NfU0laRSwgRENUX0VSUk9SX1NJWkUpICogTUFYX1RIUkVBRFMg KyBBTElHTiAtIDEgPD0gU0laRV9NQVgsCiAgICAgICAgICAgICAgICAgICAiTmVlZCBjaGVja3Mg Zm9yIHBvdGVudGlhbCBvdmVyZmxvdy4iKTsKLSAgICB1bnNpZ25lZCBuYl9zbGljZXMgPSBzLT5z bGljZV9jb250ZXh0X2NvdW50LCBtdl90YWJsZV9zaXplLCBtYl9hcnJheV9zaXplOworICAgIHVu c2lnbmVkIG5iX3NsaWNlcyA9IHMtPmMuc2xpY2VfY29udGV4dF9jb3VudCwgbXZfdGFibGVfc2l6 ZSwgbWJfYXJyYXlfc2l6ZTsKICAgICBjaGFyICpkY3RfZXJyb3IgPSBOVUxMLCAqbWVfbWFwOwog ICAgIGludCBoYXNfYl9mcmFtZXMgPSAhIW0tPm1heF9iX2ZyYW1lcywgbmJfbXZfdGFibGVzID0g MSArIDUgKiBoYXNfYl9mcmFtZXM7CiAgICAgaW50MTZfdCAoKm12X3RhYmxlKVsyXTsKQEAgLTQ1 OCwxNiArNDU4LDE2IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVu Y0NvbnRleHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiAgICAgbWVfbWFwICs9IEZG QUxJR04oKHVpbnRwdHJfdCltZV9tYXAsIEFMSUdOKSAtICh1aW50cHRyX3QpbWVfbWFwOwogCiAg ICAgLyogQWxsb2NhdGUgTUIgdHlwZSB0YWJsZSAqLwotICAgIG1iX2FycmF5X3NpemUgPSBzLT5t Yl9zdHJpZGUgKiBzLT5tYl9oZWlnaHQ7CisgICAgbWJfYXJyYXlfc2l6ZSA9IHMtPmMubWJfc3Ry aWRlICogcy0+Yy5tYl9oZWlnaHQ7CiAgICAgcy0+bWJfdHlwZSA9IGF2X2NhbGxvYyhtYl9hcnJh eV9zaXplLCAzICogc2l6ZW9mKCpzLT5tYl90eXBlKSArIHNpemVvZigqcy0+bWJfbWVhbikpOwog ICAgIGlmICghcy0+bWJfdHlwZSkKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAg ICBpZiAoIUZGX0FMTE9DWl9UWVBFRF9BUlJBWShzLT5sYW1iZGFfdGFibGUsIG1iX2FycmF5X3Np emUpKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogCi0gICAgbXZfdGFibGVfc2l6 ZSA9IChzLT5tYl9oZWlnaHQgKyAyKSAqIHMtPm1iX3N0cmlkZSArIDE7Ci0gICAgaWYgKHMtPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8Ci0gICAgICAgIChzLT5hdmN0eC0+ZmxhZ3Mg JiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpKSB7CisgICAgbXZfdGFibGVfc2l6ZSA9IChz LT5jLm1iX2hlaWdodCArIDIpICogcy0+Yy5tYl9zdHJpZGUgKyAxOworICAgIGlmIChzLT5jLmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8CisgICAgICAgIChzLT5jLmF2Y3R4LT5mbGFn cyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9NRSkpIHsKICAgICAgICAgbmJfbXZfdGFibGVz ICs9IDggKiBoYXNfYl9mcmFtZXM7CiAgICAgICAgIGlmICghQUxMT0NaX0FSUkFZUyhzLT5wX2Zp ZWxkX3NlbGVjdF90YWJsZVswXSwgMiAqICgyICsgNCAqIGhhc19iX2ZyYW1lcyksIG12X3RhYmxl X3NpemUpKQogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKQEAgLTQ3NywxMCAr NDc3LDEwIEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0NvbnRl eHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiAgICAgaWYgKCFtdl90YWJsZSkKICAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICBtLT5tdl90YWJsZV9iYXNlID0gbXZf dGFibGU7Ci0gICAgbXZfdGFibGUgKz0gcy0+bWJfc3RyaWRlICsgMTsKKyAgICBtdl90YWJsZSAr PSBzLT5jLm1iX3N0cmlkZSArIDE7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmJf c2xpY2VzOyArK2kpIHsKLSAgICAgICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMyID0gcy0+dGhy ZWFkX2NvbnRleHRbaV07CisgICAgICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMyID0gcy0+Yy5l bmNfY29udGV4dHNbaV07CiAgICAgICAgIGludDE2X3QgKCp0bXBfbXZfdGFibGUpWzJdID0gbXZf dGFibGU7CiAKICAgICAgICAgaWYgKGRjdF9lcnJvcikgewpAQCAtNDk1LDggKzQ5NSw4IEBAIHN0 YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0s IEFWQ29kZWNDb250ZXh0ICphdmN0CiAgICAgICAgIHMyLT5tYl9tZWFuICAgICAgPSAodWludDhf dCopKHMyLT5tYl92YXIgKyBtYl9hcnJheV9zaXplKTsKICAgICAgICAgczItPmxhbWJkYV90YWJs ZSA9IHMtPmxhbWJkYV90YWJsZTsKIAotICAgICAgICBzMi0+bWUubWFwICAgICAgID0gKHVpbnQz Ml90KiltZV9tYXA7Ci0gICAgICAgIHMyLT5tZS5zY29yZV9tYXAgPSBzMi0+bWUubWFwICsgTUVf TUFQX1NJWkU7CisgICAgICAgIHMyLT5jLm1lLm1hcCAgICAgPSAodWludDMyX3QqKW1lX21hcDsK KyAgICAgICAgczItPmMubWUuc2NvcmVfbWFwID0gczItPmMubWUubWFwICsgTUVfTUFQX1NJWkU7 CiAgICAgICAgIG1lX21hcCAgICAgICAgICArPSBNRV9NQVBfQUxMT0NfU0laRTsKIAogICAgICAg ICBzMi0+cF9tdl90YWJsZSAgICAgICAgICAgID0gdG1wX212X3RhYmxlOwpAQCAtNTMyLDcgKzUz Miw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0NvbnRleHQg KmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2Rl X2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogewogICAgIE1QVk1haW5FbmNDb250ZXh0ICpj b25zdCBtID0gYXZjdHgtPnByaXZfZGF0YTsKLSAgICBNcGVnRW5jQ29udGV4dCAgICAqY29uc3Qg cyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgICAgKmNvbnN0IHMgPSAmbS0+czsKICAgICBB VkNQQlByb3BlcnRpZXMgKmNwYl9wcm9wczsKICAgICBpbnQgaSwgcmV0OwogCkBAIC01NDEsMjQg KzU0MSwyNCBAQCBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQg KmF2Y3R4KQogICAgIHN3aXRjaCAoYXZjdHgtPnBpeF9mbXQpIHsKICAgICBjYXNlIEFWX1BJWF9G TVRfWVVWSjQ0NFA6CiAgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQ0NFA6Ci0gICAgICAgIHMtPmNo cm9tYV9mb3JtYXQgPSBDSFJPTUFfNDQ0OworICAgICAgICBzLT5jLmNocm9tYV9mb3JtYXQgPSBD SFJPTUFfNDQ0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX1BJWF9GTVRfWVVWSjQyMlA6 CiAgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMlA6Ci0gICAgICAgIHMtPmNocm9tYV9mb3JtYXQg PSBDSFJPTUFfNDIyOworICAgICAgICBzLT5jLmNocm9tYV9mb3JtYXQgPSBDSFJPTUFfNDIyOwog ICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX1BJWF9GTVRfWVVWSjQyMFA6CiAgICAgY2FzZSBB Vl9QSVhfRk1UX1lVVjQyMFA6CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcy0+Y2hyb21hX2Zvcm1h dCA9IENIUk9NQV80MjA7CisgICAgICAgIHMtPmMuY2hyb21hX2Zvcm1hdCA9IENIUk9NQV80MjA7 CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGF2Y3R4LT5iaXRzX3Blcl9yYXdfc2FtcGxl ID0gYXZfY2xpcChhdmN0eC0+Yml0c19wZXJfcmF3X3NhbXBsZSwgMCwgOCk7CiAKICAgICBtLT5i aXRfcmF0ZSA9IGF2Y3R4LT5iaXRfcmF0ZTsKLSAgICBzLT53aWR0aCAgICA9IGF2Y3R4LT53aWR0 aDsKLSAgICBzLT5oZWlnaHQgICA9IGF2Y3R4LT5oZWlnaHQ7CisgICAgcy0+Yy53aWR0aCAgICA9 IGF2Y3R4LT53aWR0aDsKKyAgICBzLT5jLmhlaWdodCAgID0gYXZjdHgtPmhlaWdodDsKICAgICBp ZiAoYXZjdHgtPmdvcF9zaXplID4gNjAwICYmCiAgICAgICAgIGF2Y3R4LT5zdHJpY3Rfc3RkX2Nv bXBsaWFuY2UgPiBGRl9DT01QTElBTkNFX0VYUEVSSU1FTlRBTCkgewogICAgICAgICBhdl9sb2co YXZjdHgsIEFWX0xPR19XQVJOSU5HLApAQCAtNTY3LDcgKzU2Nyw3IEBAIGF2X2NvbGQgaW50IGZm X21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgIGF2Y3R4LT5n b3Bfc2l6ZSA9IDYwMDsKICAgICB9CiAgICAgbS0+Z29wX3NpemUgICAgID0gYXZjdHgtPmdvcF9z aXplOwotICAgIHMtPmF2Y3R4ICAgICAgICA9IGF2Y3R4OworICAgIHMtPmMuYXZjdHggICAgICAg ID0gYXZjdHg7CiAgICAgaWYgKGF2Y3R4LT5tYXhfYl9mcmFtZXMgPiBNUFZFTkNfTUFYX0JfRlJB TUVTKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiVG9vIG1hbnkgQi1m cmFtZXMgcmVxdWVzdGVkLCBtYXhpbXVtICIKICAgICAgICAgICAgICAgICJpcyAiIEFWX1NUUklO R0lGWShNUFZFTkNfTUFYX0JfRlJBTUVTKSAiLlxuIik7CkBAIC01NzgsMzAgKzU3OCwzMCBAQCBh dl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAg ICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KICAgICBtLT5tYXhfYl9mcmFtZXMg PSBhdmN0eC0+bWF4X2JfZnJhbWVzOwotICAgIHMtPmNvZGVjX2lkICAgICA9IGF2Y3R4LT5jb2Rl Yy0+aWQ7CisgICAgcy0+Yy5jb2RlY19pZCAgICAgPSBhdmN0eC0+Y29kZWMtPmlkOwogICAgIGlm IChtLT5tYXhfYl9mcmFtZXMgJiYgIShhdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NP REVDX0NBUF9ERUxBWSkpIHsKICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJC LWZyYW1lcyBub3Qgc3VwcG9ydGVkIGJ5IGNvZGVjXG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsKICAgICB9CiAKLSAgICBzLT5xdWFydGVyX3NhbXBsZSAgICAgPSAoYXZjdHgt PmZsYWdzICYgQVZfQ09ERUNfRkxBR19RUEVMKSAhPSAwOworICAgIHMtPmMucXVhcnRlcl9zYW1w bGUgICAgID0gKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUVBFTCkgIT0gMDsKICAgICBz LT5ydHBfbW9kZSAgICAgICAgICAgPSAhIXMtPnJ0cF9wYXlsb2FkX3NpemU7Ci0gICAgcy0+aW50 cmFfZGNfcHJlY2lzaW9uID0gYXZjdHgtPmludHJhX2RjX3ByZWNpc2lvbjsKKyAgICBzLT5jLmlu dHJhX2RjX3ByZWNpc2lvbiA9IGF2Y3R4LT5pbnRyYV9kY19wcmVjaXNpb247CiAKICAgICAvLyB3 b3JrYXJvdW5kIHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiBob3cgYXBwbGljYXRpb25zIHNwZWNp ZnkgZGMgcHJlY2lzaW9uCi0gICAgaWYgKHMtPmludHJhX2RjX3ByZWNpc2lvbiA8IDApIHsKLSAg ICAgICAgcy0+aW50cmFfZGNfcHJlY2lzaW9uICs9IDg7Ci0gICAgfSBlbHNlIGlmIChzLT5pbnRy YV9kY19wcmVjaXNpb24gPj0gOCkKLSAgICAgICAgcy0+aW50cmFfZGNfcHJlY2lzaW9uIC09IDg7 CisgICAgaWYgKHMtPmMuaW50cmFfZGNfcHJlY2lzaW9uIDwgMCkgeworICAgICAgICBzLT5jLmlu dHJhX2RjX3ByZWNpc2lvbiArPSA4OworICAgIH0gZWxzZSBpZiAocy0+Yy5pbnRyYV9kY19wcmVj aXNpb24gPj0gOCkKKyAgICAgICAgcy0+Yy5pbnRyYV9kY19wcmVjaXNpb24gLT0gODsKIAotICAg IGlmIChzLT5pbnRyYV9kY19wcmVjaXNpb24gPCAwKSB7CisgICAgaWYgKHMtPmMuaW50cmFfZGNf cHJlY2lzaW9uIDwgMCkgewogICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwKICAg ICAgICAgICAgICAgICAiaW50cmEgZGMgcHJlY2lzaW9uIG11c3QgYmUgcG9zaXRpdmUsIG5vdGUg c29tZSBhcHBsaWNhdGlvbnMgdXNlIgogICAgICAgICAgICAgICAgICIgMCBhbmQgc29tZSA4IGFz IGJhc2UgbWVhbmluZyA4Yml0LCB0aGUgdmFsdWUgbXVzdCBub3QgYmUgc21hbGxlciB0aGFuIHRo YXRcbiIpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAotICAgIGlm IChzLT5pbnRyYV9kY19wcmVjaXNpb24gPiAoYXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X01QRUcyVklERU8gPyAzIDogMCkpIHsKKyAgICBpZiAocy0+Yy5pbnRyYV9kY19wcmVjaXNpb24g PiAoYXZjdHgtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8gPyAzIDogMCkpIHsK ICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJpbnRyYSBkYyBwcmVjaXNpb24g dG9vIGxhcmdlXG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICB9CkBA IC02MjYsNyArNjI2LDcgQEAgYXZfY29sZCBpbnQgZmZfbXB2X2VuY29kZV9pbml0KEFWQ29kZWND b250ZXh0ICphdmN0eCkKICAgICAgICAgICAgICAgICAgICAgICAgICAocy0+bXB2X2ZsYWdzICYg RkZfTVBWX0ZMQUdfUVBfUkQpKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgIW0tPmZpeGVk X3FzY2FsZTsKIAotICAgIHMtPmxvb3BfZmlsdGVyID0gISEoYXZjdHgtPmZsYWdzICYgQVZfQ09E RUNfRkxBR19MT09QX0ZJTFRFUik7CisgICAgcy0+Yy5sb29wX2ZpbHRlciA9ICEhKGF2Y3R4LT5m bGFncyAmIEFWX0NPREVDX0ZMQUdfTE9PUF9GSUxURVIpOwogCiAgICAgaWYgKGF2Y3R4LT5yY19t YXhfcmF0ZSAmJiAhYXZjdHgtPnJjX2J1ZmZlcl9zaXplKSB7CiAgICAgICAgIHN3aXRjaChhdmN0 eC0+Y29kZWNfaWQpIHsKQEAgLTcwMCwyNyArNzAwLDI3IEBAIGF2X2NvbGQgaW50IGZmX21wdl9l bmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgICAgICBhdmN0eC0+Yml0 X3JhdGVfdG9sZXJhbmNlID0gSU5UX01BWDsKICAgICB9CiAKLSAgICBpZiAoKGF2Y3R4LT5mbGFn cyAmIEFWX0NPREVDX0ZMQUdfNE1WKSAmJiBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVH NCAmJgotICAgICAgICBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjYzICYmIHMtPmNvZGVj X2lkICE9IEFWX0NPREVDX0lEX0gyNjNQICYmCi0gICAgICAgIHMtPmNvZGVjX2lkICE9IEFWX0NP REVDX0lEX0ZMVjEpIHsKKyAgICBpZiAoKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfNE1W KSAmJiBzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0ICYmCisgICAgICAgIHMtPmMu Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2MyAmJiBzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVD X0lEX0gyNjNQICYmCisgICAgICAgIHMtPmMuY29kZWNfaWQgIT0gQVZfQ09ERUNfSURfRkxWMSkg ewogICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIjRNViBub3Qgc3VwcG9ydGVk IGJ5IGNvZGVjXG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICB9CiAK LSAgICBpZiAocy0+b2JtYyAmJiBhdmN0eC0+bWJfZGVjaXNpb24gIT0gRkZfTUJfREVDSVNJT05f U0lNUExFKSB7CisgICAgaWYgKHMtPmMub2JtYyAmJiBhdmN0eC0+bWJfZGVjaXNpb24gIT0gRkZf TUJfREVDSVNJT05fU0lNUExFKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LAogICAgICAgICAgICAgICAgIk9CTUMgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBzaW1wbGUgbWIg ZGVjaXNpb25cbiIpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAot ICAgIGlmIChzLT5xdWFydGVyX3NhbXBsZSAmJiBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9N UEVHNCkgeworICAgIGlmIChzLT5jLnF1YXJ0ZXJfc2FtcGxlICYmIHMtPmMuY29kZWNfaWQgIT0g QVZfQ09ERUNfSURfTVBFRzQpIHsKICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is ICJxcGVsIG5vdCBzdXBwb3J0ZWQgYnkgY29kZWNcbiIpOwogICAgICAgICByZXR1cm4gQVZFUlJP UihFSU5WQUwpOwogICAgIH0KIAotICAgIGlmICgocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf TVBFRzQgfHwKLSAgICAgICAgIHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjMgIHx8Ci0g ICAgICAgICBzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjYzUCkgJiYKKyAgICBpZiAoKHMt PmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwKKyAgICAgICAgIHMtPmMuY29kZWNf aWQgPT0gQVZfQ09ERUNfSURfSDI2MyAgfHwKKyAgICAgICAgIHMtPmMuY29kZWNfaWQgPT0gQVZf Q09ERUNfSURfSDI2M1ApICYmCiAgICAgICAgIChhdmN0eC0+c2FtcGxlX2FzcGVjdF9yYXRpby5u dW0gPiAyNTUgfHwKICAgICAgICAgIGF2Y3R4LT5zYW1wbGVfYXNwZWN0X3JhdGlvLmRlbiA+IDI1 NSkpIHsKICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfV0FSTklORywKQEAgLTczMCw0NCAr NzMwLDQ0IEBAIGF2X2NvbGQgaW50IGZmX21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAq YXZjdHgpCiAgICAgICAgICAgICAgICAgICAgYXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVt LCAgYXZjdHgtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuLCAyNTUpOwogICAgIH0KIAotICAgIGlm ICgocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2MyAgfHwKLSAgICAgICAgIHMtPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0gyNjNQKSAmJgorICAgIGlmICgocy0+Yy5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9IMjYzICB8fAorICAgICAgICAgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9IMjYzUCkgJiYKICAgICAgICAgKGF2Y3R4LT53aWR0aCAgPiAyMDQ4IHx8CiAgICAgICAgICBh dmN0eC0+aGVpZ2h0ID4gMTE1MiApKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VS Uk9SLCAiSC4yNjMgZG9lcyBub3Qgc3VwcG9ydCByZXNvbHV0aW9ucyBhYm92ZSAyMDQ4eDExNTJc biIpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KLSAgICBpZiAocy0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfRkxWMSAmJgorICAgIGlmIChzLT5jLmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX0ZMVjEgJiYKICAgICAgICAgKGF2Y3R4LT53aWR0aCAgPiA2NTUzNSB8fAog ICAgICAgICAgYXZjdHgtPmhlaWdodCA+IDY1NTM1ICkpIHsKICAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfRVJST1IsICJGTFYgZG9lcyBub3Qgc3VwcG9ydCByZXNvbHV0aW9ucyBhYm92ZSAx NmJpdFxuIik7CiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQotICAgIGlm ICgocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2MyAgfHwKLSAgICAgICAgIHMtPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0gyNjNQIHx8Ci0gICAgICAgICBzLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9SVjIwKSAmJgorICAgIGlmICgocy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9I MjYzICB8fAorICAgICAgICAgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjYzUCB8fAor ICAgICAgICAgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9SVjIwKSAmJgogICAgICAgICAo KGF2Y3R4LT53aWR0aCAmMykgfHwKICAgICAgICAgIChhdmN0eC0+aGVpZ2h0JjMpICkpIHsKICAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJ3aWR0aCBhbmQgaGVpZ2h0IG11c3Qg YmUgYSBtdWx0aXBsZSBvZiA0XG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK ICAgICB9CiAKLSAgICBpZiAocy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfUlYxMCAmJgorICAg IGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1JWMTAgJiYKICAgICAgICAgKGF2Y3R4 LT53aWR0aCAmMTUgfHwKICAgICAgICAgIGF2Y3R4LT5oZWlnaHQmMTUgKSkgewogICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIndpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBhIG11 bHRpcGxlIG9mIDE2XG4iKTsKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICB9 CiAKLSAgICBpZiAoKHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1dNVjEgfHwKLSAgICAgICAg IHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1dNVjIpICYmCisgICAgaWYgKChzLT5jLmNvZGVj X2lkID09IEFWX0NPREVDX0lEX1dNVjEgfHwKKyAgICAgICAgIHMtPmMuY29kZWNfaWQgPT0gQVZf Q09ERUNfSURfV01WMikgJiYKICAgICAgICAgIGF2Y3R4LT53aWR0aCAmIDEpIHsKICAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJ3aWR0aCBtdXN0IGJlIG11bHRpcGxlIG9mIDJc biIpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgIH0KIAogICAgIGlmICgo YXZjdHgtPmZsYWdzICYgKEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9EQ1QgfCBBVl9DT0RFQ19G TEFHX0lOVEVSTEFDRURfTUUpKSAmJgotICAgICAgICBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19J RF9NUEVHNCAmJiBzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPKSB7CisgICAg ICAgIHMtPmMuY29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQgJiYgcy0+Yy5jb2RlY19pZCAh PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X0VSUk9SLCAiaW50ZXJsYWNpbmcgbm90IHN1cHBvcnRlZCBieSBjb2RlY1xuIik7CiAgICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQpAQCAtNzkyLDcgKzc5Miw3IEBAIGF2X2Nv bGQgaW50IGZmX21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgfQog CiAgICAgaWYgKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfTE9XX0RFTEFZKSB7Ci0gICAg ICAgIGlmIChzLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPICYmCisgICAgICAg IGlmIChzLT5jLmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUcyVklERU8gJiYKICAgICAgICAg ICAgIGF2Y3R4LT5zdHJpY3Rfc3RkX2NvbXBsaWFuY2UgPj0gRkZfQ09NUExJQU5DRV9OT1JNQUwp IHsKICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLAogICAgICAgICAgICAg ICAgICAgICJsb3cgZGVsYXkgZm9yY2luZyBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgbXBlZzIsICIK QEAgLTgyNiw3ICs4MjYsNyBAQCBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4KQogICAgICAgICAvL3JldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAo cy0+bXBlZ19xdWFudCB8fCBzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPIHx8 IHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8gfHwgcy0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfTUpQRUcgfHwgcy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQU1WIHx8IHMt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1NQRUVESFEpIHsKKyAgICBpZiAocy0+Yy5tcGVnX3F1 YW50IHx8IHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTyB8fCBzLT5jLmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8gfHwgcy0+Yy5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9NSlBFRyB8fCBzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FNViB8fCBzLT5j LmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1NQRUVESFEpIHsKICAgICAgICAgLy8gKGEgKyB4ICog MyAvIDgpIC8geAogICAgICAgICBzLT5pbnRyYV9xdWFudF9iaWFzID0gMyA8PCAoUVVBTlRfQklB U19TSElGVCAtIDMpOwogICAgICAgICBzLT5pbnRlcl9xdWFudF9iaWFzID0gMDsKQEAgLTg0OSwx NDggKzg0OSwxNDggQEAgYXZfY29sZCBpbnQgZmZfbXB2X2VuY29kZV9pbml0KEFWQ29kZWNDb250 ZXh0ICphdmN0eCkKICAgICAgICAgcy0+cnRwX21vZGUgICA9IDE7CiAgICAgICAgIC8qIGZhbGx0 aHJvdWdoICovCiAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPOgotICAgICAgICBzLT5v dXRfZm9ybWF0ID0gRk1UX01QRUcxOwotICAgICAgICBzLT5sb3dfZGVsYXkgID0gISEoYXZjdHgt PmZsYWdzICYgQVZfQ09ERUNfRkxBR19MT1dfREVMQVkpOwotICAgICAgICBhdmN0eC0+ZGVsYXkg ID0gcy0+bG93X2RlbGF5ID8gMCA6IChtLT5tYXhfYl9mcmFtZXMgKyAxKTsKKyAgICAgICAgcy0+ Yy5vdXRfZm9ybWF0ID0gRk1UX01QRUcxOworICAgICAgICBzLT5jLmxvd19kZWxheSAgPSAhIShh dmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0xPV19ERUxBWSk7CisgICAgICAgIGF2Y3R4LT5k ZWxheSAgPSBzLT5jLmxvd19kZWxheSA/IDAgOiAobS0+bWF4X2JfZnJhbWVzICsgMSk7CiAgICAg ICAgIGZmX21wZWcxX2VuY29kZV9pbml0KHMpOwogICAgICAgICBicmVhazsKICNlbmRpZgogI2lm IENPTkZJR19NSlBFR19FTkNPREVSIHx8IENPTkZJR19BTVZfRU5DT0RFUgogICAgIGNhc2UgQVZf Q09ERUNfSURfTUpQRUc6CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9BTVY6Ci0gICAgICAgIHMtPm91 dF9mb3JtYXQgPSBGTVRfTUpQRUc7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCA9IEZNVF9NSlBF RzsKICAgICAgICAgbS0+aW50cmFfb25seSA9IDE7IC8qIGZvcmNlIGludHJhIG9ubHkgZm9yIGpw ZWcgKi8KICAgICAgICAgYXZjdHgtPmRlbGF5ID0gMDsKLSAgICAgICAgcy0+bG93X2RlbGF5ID0g MTsKKyAgICAgICAgcy0+Yy5sb3dfZGVsYXkgPSAxOwogICAgICAgICBicmVhazsKICNlbmRpZgog ICAgIGNhc2UgQVZfQ09ERUNfSURfU1BFRURIUToKLSAgICAgICAgcy0+b3V0X2Zvcm1hdCA9IEZN VF9TUEVFREhROworICAgICAgICBzLT5jLm91dF9mb3JtYXQgPSBGTVRfU1BFRURIUTsKICAgICAg ICAgbS0+aW50cmFfb25seSA9IDE7IC8qIGZvcmNlIGludHJhIG9ubHkgZm9yIFNIUSAqLwogICAg ICAgICBhdmN0eC0+ZGVsYXkgPSAwOwotICAgICAgICBzLT5sb3dfZGVsYXkgPSAxOworICAgICAg ICBzLT5jLmxvd19kZWxheSA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNf SURfSDI2MToKLSAgICAgICAgcy0+b3V0X2Zvcm1hdCA9IEZNVF9IMjYxOworICAgICAgICBzLT5j Lm91dF9mb3JtYXQgPSBGTVRfSDI2MTsKICAgICAgICAgYXZjdHgtPmRlbGF5ICA9IDA7Ci0gICAg ICAgIHMtPmxvd19kZWxheSAgPSAxOworICAgICAgICBzLT5jLmxvd19kZWxheSAgPSAxOwogICAg ICAgICBzLT5ydHBfbW9kZSAgID0gMDsgLyogU2xpY2VkIGVuY29kaW5nIG5vdCBzdXBwb3J0ZWQg Ki8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9IMjYzOgogICAgICAgICBp ZiAoIUNPTkZJR19IMjYzX0VOQ09ERVIpCiAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FTkNP REVSX05PVF9GT1VORDsKICAgICAgICAgaWYgKGZmX21hdGNoXzJ1aW50MTYoZmZfaDI2M19mb3Jt YXQsIEZGX0FSUkFZX0VMRU1TKGZmX2gyNjNfZm9ybWF0KSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcy0+d2lkdGgsIHMtPmhlaWdodCkgPT0gOCkgeworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5jLndpZHRoLCBzLT5jLmhlaWdodCkgPT0gOCkgewogICAgICAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgIlRoZSBzcGVj aWZpZWQgcGljdHVyZSBzaXplIG9mICVkeCVkIGlzIG5vdCB2YWxpZCBmb3IgIgogICAgICAgICAg ICAgICAgICAgICJ0aGUgSC4yNjMgY29kZWMuXG5WYWxpZCBzaXplcyBhcmUgMTI4eDk2LCAxNzZ4 MTQ0LCAiCiAgICAgICAgICAgICAgICAgICAgIjM1MngyODgsIDcwNHg1NzYsIGFuZCAxNDA4eDEx NTIuICIKLSAgICAgICAgICAgICAgICAgICAiVHJ5IEguMjYzKy5cbiIsIHMtPndpZHRoLCBzLT5o ZWlnaHQpOworICAgICAgICAgICAgICAgICAgICJUcnkgSC4yNjMrLlxuIiwgcy0+Yy53aWR0aCwg cy0+Yy5oZWlnaHQpOwogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICAg ICAgfQotICAgICAgICBzLT5vdXRfZm9ybWF0ID0gRk1UX0gyNjM7CisgICAgICAgIHMtPmMub3V0 X2Zvcm1hdCA9IEZNVF9IMjYzOwogICAgICAgICBhdmN0eC0+ZGVsYXkgID0gMDsKLSAgICAgICAg cy0+bG93X2RlbGF5ICA9IDE7CisgICAgICAgIHMtPmMubG93X2RlbGF5ICA9IDE7CiAgICAgICAg IGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURfSDI2M1A6Ci0gICAgICAgIHMtPm91dF9mb3Jt YXQgPSBGTVRfSDI2MzsKLSAgICAgICAgcy0+aDI2M19wbHVzICA9IDE7CisgICAgICAgIHMtPmMu b3V0X2Zvcm1hdCA9IEZNVF9IMjYzOworICAgICAgICBzLT5jLmgyNjNfcGx1cyAgPSAxOwogICAg ICAgICAvKiBGeCAqLwotICAgICAgICBzLT5oMjYzX2FpYyAgICAgICAgPSAoYXZjdHgtPmZsYWdz ICYgQVZfQ09ERUNfRkxBR19BQ19QUkVEKSA/IDEgOiAwOwotICAgICAgICBzLT5tb2RpZmllZF9x dWFudCAgPSBzLT5oMjYzX2FpYzsKLSAgICAgICAgcy0+bG9vcF9maWx0ZXIgICAgID0gKGF2Y3R4 LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfTE9PUF9GSUxURVIpID8gMSA6IDA7Ci0gICAgICAgIHMt PnVucmVzdHJpY3RlZF9tdiA9IHMtPm9ibWMgfHwgcy0+bG9vcF9maWx0ZXIgfHwgcy0+dW12cGx1 czsKLSAgICAgICAgcy0+ZmxpcGZsb3Bfcm91bmRpbmcgPSAxOworICAgICAgICBzLT5jLmgyNjNf YWljICAgICAgICA9IChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0FDX1BSRUQpID8gMSA6 IDA7CisgICAgICAgIHMtPmMubW9kaWZpZWRfcXVhbnQgID0gcy0+Yy5oMjYzX2FpYzsKKyAgICAg ICAgcy0+Yy5sb29wX2ZpbHRlciAgICAgPSAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19M T09QX0ZJTFRFUikgPyAxIDogMDsKKyAgICAgICAgcy0+Yy51bnJlc3RyaWN0ZWRfbXYgPSBzLT5j Lm9ibWMgfHwgcy0+Yy5sb29wX2ZpbHRlciB8fCBzLT5jLnVtdnBsdXM7CisgICAgICAgIHMtPmMu ZmxpcGZsb3Bfcm91bmRpbmcgPSAxOwogCiAgICAgICAgIC8qIC9GeCAqLwogICAgICAgICAvKiBU aGVzZSBhcmUganVzdCB0byBiZSBzdXJlICovCiAgICAgICAgIGF2Y3R4LT5kZWxheSA9IDA7Ci0g ICAgICAgIHMtPmxvd19kZWxheSA9IDE7CisgICAgICAgIHMtPmMubG93X2RlbGF5ID0gMTsKICAg ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9GTFYxOgotICAgICAgICBzLT5vdXRf Zm9ybWF0ICAgICAgPSBGTVRfSDI2MzsKLSAgICAgICAgcy0+aDI2M19mbHYgICAgICAgID0gMjsg LyogZm9ybWF0ID0gMTsgMTEtYml0IGNvZGVzICovCi0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9t diA9IDE7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7CisgICAgICAg IHMtPmMuaDI2M19mbHYgICAgICAgID0gMjsgLyogZm9ybWF0ID0gMTsgMTEtYml0IGNvZGVzICov CisgICAgICAgIHMtPmMudW5yZXN0cmljdGVkX212ID0gMTsKICAgICAgICAgcy0+cnRwX21vZGUg ID0gMDsgLyogZG9uJ3QgYWxsb3cgR09CICovCiAgICAgICAgIGF2Y3R4LT5kZWxheSA9IDA7Ci0g ICAgICAgIHMtPmxvd19kZWxheSA9IDE7CisgICAgICAgIHMtPmMubG93X2RlbGF5ID0gMTsKICAg ICAgICAgYnJlYWs7CiAjaWYgQ09ORklHX1JWMTBfRU5DT0RFUgogICAgIGNhc2UgQVZfQ09ERUNf SURfUlYxMDoKICAgICAgICAgbS0+ZW5jb2RlX3BpY3R1cmVfaGVhZGVyID0gZmZfcnYxMF9lbmNv ZGVfcGljdHVyZV9oZWFkZXI7Ci0gICAgICAgIHMtPm91dF9mb3JtYXQgPSBGTVRfSDI2MzsKKyAg ICAgICAgcy0+Yy5vdXRfZm9ybWF0ID0gRk1UX0gyNjM7CiAgICAgICAgIGF2Y3R4LT5kZWxheSAg PSAwOwotICAgICAgICBzLT5sb3dfZGVsYXkgID0gMTsKKyAgICAgICAgcy0+Yy5sb3dfZGVsYXkg ID0gMTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBDT05GSUdfUlYyMF9FTkNPREVSCiAg ICAgY2FzZSBBVl9DT0RFQ19JRF9SVjIwOgogICAgICAgICBtLT5lbmNvZGVfcGljdHVyZV9oZWFk ZXIgPSBmZl9ydjIwX2VuY29kZV9waWN0dXJlX2hlYWRlcjsKLSAgICAgICAgcy0+b3V0X2Zvcm1h dCAgICAgID0gRk1UX0gyNjM7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgID0gRk1UX0gy NjM7CiAgICAgICAgIGF2Y3R4LT5kZWxheSAgICAgICA9IDA7Ci0gICAgICAgIHMtPmxvd19kZWxh eSAgICAgICA9IDE7Ci0gICAgICAgIHMtPm1vZGlmaWVkX3F1YW50ICA9IDE7Ci0gICAgICAgIHMt PmgyNjNfYWljICAgICAgICA9IDE7Ci0gICAgICAgIHMtPmgyNjNfcGx1cyAgICAgICA9IDE7Ci0g ICAgICAgIHMtPmxvb3BfZmlsdGVyICAgICA9IDE7Ci0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9t diA9IDA7CisgICAgICAgIHMtPmMubG93X2RlbGF5ICAgICAgID0gMTsKKyAgICAgICAgcy0+Yy5t b2RpZmllZF9xdWFudCAgPSAxOworICAgICAgICBzLT5jLmgyNjNfYWljICAgICAgICA9IDE7Cisg ICAgICAgIHMtPmMuaDI2M19wbHVzICAgICAgID0gMTsKKyAgICAgICAgcy0+Yy5sb29wX2ZpbHRl ciAgICAgPSAxOworICAgICAgICBzLT5jLnVucmVzdHJpY3RlZF9tdiA9IDA7CiAgICAgICAgIGJy ZWFrOwogI2VuZGlmCiAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHNDoKLSAgICAgICAgcy0+b3V0 X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7Ci0gICAgICAgIHMtPmgyNjNfcHJlZCAgICAgICA9IDE7 Ci0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9tdiA9IDE7Ci0gICAgICAgIHMtPmZsaXBmbG9wX3Jv dW5kaW5nID0gMTsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAgICAgID0gbS0+bWF4X2JfZnJhbWVz ID8gMCA6IDE7Ci0gICAgICAgIGF2Y3R4LT5kZWxheSAgICAgICA9IHMtPmxvd19kZWxheSA/IDAg OiAobS0+bWF4X2JfZnJhbWVzICsgMSk7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgID0g Rk1UX0gyNjM7CisgICAgICAgIHMtPmMuaDI2M19wcmVkICAgICAgID0gMTsKKyAgICAgICAgcy0+ Yy51bnJlc3RyaWN0ZWRfbXYgPSAxOworICAgICAgICBzLT5jLmZsaXBmbG9wX3JvdW5kaW5nID0g MTsKKyAgICAgICAgcy0+Yy5sb3dfZGVsYXkgICAgICAgPSBtLT5tYXhfYl9mcmFtZXMgPyAwIDog MTsKKyAgICAgICAgYXZjdHgtPmRlbGF5ICAgICAgID0gcy0+Yy5sb3dfZGVsYXkgPyAwIDogKG0t Pm1heF9iX2ZyYW1lcyArIDEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX0NPREVDX0lE X01TTVBFRzRWMjoKLSAgICAgICAgcy0+b3V0X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7Ci0gICAg ICAgIHMtPmgyNjNfcHJlZCAgICAgICA9IDE7Ci0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9tdiA9 IDE7Ci0gICAgICAgIHMtPm1zbXBlZzRfdmVyc2lvbiA9IE1TTVA0X1YyOworICAgICAgICBzLT5j Lm91dF9mb3JtYXQgICAgICA9IEZNVF9IMjYzOworICAgICAgICBzLT5jLmgyNjNfcHJlZCAgICAg ICA9IDE7CisgICAgICAgIHMtPmMudW5yZXN0cmljdGVkX212ID0gMTsKKyAgICAgICAgcy0+Yy5t c21wZWc0X3ZlcnNpb24gPSBNU01QNF9WMjsKICAgICAgICAgYXZjdHgtPmRlbGF5ICAgICAgID0g MDsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAgICAgID0gMTsKKyAgICAgICAgcy0+Yy5sb3dfZGVs YXkgICAgICAgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX0NPREVDX0lEX01TTVBF RzRWMzoKLSAgICAgICAgcy0+b3V0X2Zvcm1hdCAgICAgICAgPSBGTVRfSDI2MzsKLSAgICAgICAg cy0+aDI2M19wcmVkICAgICAgICAgPSAxOwotICAgICAgICBzLT51bnJlc3RyaWN0ZWRfbXYgICA9 IDE7Ci0gICAgICAgIHMtPm1zbXBlZzRfdmVyc2lvbiAgID0gTVNNUDRfVjM7Ci0gICAgICAgIHMt PmZsaXBmbG9wX3JvdW5kaW5nID0gMTsKKyAgICAgICAgcy0+Yy5vdXRfZm9ybWF0ICAgICAgICA9 IEZNVF9IMjYzOworICAgICAgICBzLT5jLmgyNjNfcHJlZCAgICAgICAgID0gMTsKKyAgICAgICAg cy0+Yy51bnJlc3RyaWN0ZWRfbXYgICA9IDE7CisgICAgICAgIHMtPmMubXNtcGVnNF92ZXJzaW9u ICAgPSBNU01QNF9WMzsKKyAgICAgICAgcy0+Yy5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CiAgICAg ICAgIGF2Y3R4LT5kZWxheSAgICAgICAgID0gMDsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAgICAg ICAgPSAxOworICAgICAgICBzLT5jLmxvd19kZWxheSAgICAgICAgID0gMTsKICAgICAgICAgYnJl YWs7CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9XTVYxOgotICAgICAgICBzLT5vdXRfZm9ybWF0ICAg ICAgICA9IEZNVF9IMjYzOwotICAgICAgICBzLT5oMjYzX3ByZWQgICAgICAgICA9IDE7Ci0gICAg ICAgIHMtPnVucmVzdHJpY3RlZF9tdiAgID0gMTsKLSAgICAgICAgcy0+bXNtcGVnNF92ZXJzaW9u ICAgPSBNU01QNF9XTVYxOwotICAgICAgICBzLT5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CisgICAg ICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgICAgPSBGTVRfSDI2MzsKKyAgICAgICAgcy0+Yy5oMjYz X3ByZWQgICAgICAgICA9IDE7CisgICAgICAgIHMtPmMudW5yZXN0cmljdGVkX212ICAgPSAxOwor ICAgICAgICBzLT5jLm1zbXBlZzRfdmVyc2lvbiAgID0gTVNNUDRfV01WMTsKKyAgICAgICAgcy0+ Yy5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CiAgICAgICAgIGF2Y3R4LT5kZWxheSAgICAgICAgID0g MDsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAgICAgICAgPSAxOworICAgICAgICBzLT5jLmxvd19k ZWxheSAgICAgICAgID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBVl9DT0RFQ19JRF9X TVYyOgotICAgICAgICBzLT5vdXRfZm9ybWF0ICAgICAgICA9IEZNVF9IMjYzOwotICAgICAgICBz LT5oMjYzX3ByZWQgICAgICAgICA9IDE7Ci0gICAgICAgIHMtPnVucmVzdHJpY3RlZF9tdiAgID0g MTsKLSAgICAgICAgcy0+bXNtcGVnNF92ZXJzaW9uICAgPSBNU01QNF9XTVYyOwotICAgICAgICBz LT5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CisgICAgICAgIHMtPmMub3V0X2Zvcm1hdCAgICAgICAg PSBGTVRfSDI2MzsKKyAgICAgICAgcy0+Yy5oMjYzX3ByZWQgICAgICAgICA9IDE7CisgICAgICAg IHMtPmMudW5yZXN0cmljdGVkX212ICAgPSAxOworICAgICAgICBzLT5jLm1zbXBlZzRfdmVyc2lv biAgID0gTVNNUDRfV01WMjsKKyAgICAgICAgcy0+Yy5mbGlwZmxvcF9yb3VuZGluZyA9IDE7CiAg ICAgICAgIGF2Y3R4LT5kZWxheSAgICAgICAgID0gMDsKLSAgICAgICAgcy0+bG93X2RlbGF5ICAg ICAgICAgPSAxOworICAgICAgICBzLT5jLmxvd19kZWxheSAgICAgICAgID0gMTsKICAgICAgICAg YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAg ICB9CiAKLSAgICBhdmN0eC0+aGFzX2JfZnJhbWVzID0gIXMtPmxvd19kZWxheTsKKyAgICBhdmN0 eC0+aGFzX2JfZnJhbWVzID0gIXMtPmMubG93X2RlbGF5OwogCi0gICAgcy0+ZW5jb2RpbmcgPSAx OworICAgIHMtPmMuZW5jb2RpbmcgPSAxOwogCi0gICAgcy0+cHJvZ3Jlc3NpdmVfZnJhbWUgICAg PQotICAgIHMtPnByb2dyZXNzaXZlX3NlcXVlbmNlID0gIShhdmN0eC0+ZmxhZ3MgJiAoQVZfQ09E RUNfRkxBR19JTlRFUkxBQ0VEX0RDVCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHx8Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmFsdGVybmF0ZV9zY2FuKTsKKyAgICBzLT5jLnBy b2dyZXNzaXZlX2ZyYW1lICAgID0KKyAgICBzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlID0gIShh dmN0eC0+ZmxhZ3MgJiAoQVZfQ09ERUNfRkxBR19JTlRFUkxBQ0VEX0RDVCB8CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX0NPREVDX0ZMQUdfSU5U RVJMQUNFRF9NRSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5hbHRl cm5hdGVfc2Nhbik7CiAKICAgICBpZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QU05S IHx8IGF2Y3R4LT5tYl9kZWNpc2lvbiA9PSBGRl9NQl9ERUNJU0lPTl9SRCB8fAogICAgICAgICBt LT5mcmFtZV9za2lwX3RocmVzaG9sZCB8fCBtLT5mcmFtZV9za2lwX2ZhY3RvcikgewpAQCAtMTAw OSw4ICsxMDA5LDEwIEBAIGF2X2NvbGQgaW50IGZmX21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29u dGV4dCAqYXZjdHgpCiAgICAgICAgIG0tPmxtaW4gPSBtLT5sbWF4OwogICAgIH0KIAotICAgIC8q IGluaXQgKi8KLSAgICBmZl9tcHZfaWRjdF9pbml0KHMpOworICAgIC8qIGZmX21wdl9jb21tb25f aW5pdCgpIHdpbGwgY29weSAobWVtZHVwKSB0aGUgY29udGVudHMgbWFpbiBzbGljZQorICAgICAq IHRvIHRoZSBzbGljZSBjb250ZXh0cywgc28gd2UgaW5pdGlhbGl6ZSB2YXJpb3VzIGZpZWxkcyBv ZiBpdAorICAgICAqIGJlZm9yZSBjYWxsaW5nIGZmX21wdl9jb21tb25faW5pdCgpLiAqLworICAg IGZmX21wdl9pZGN0X2luaXQoJnMtPmMpOwogICAgIGZmX2ZkY3Rkc3BfaW5pdCgmcy0+ZmRzcCwg YXZjdHgpOwogICAgIGZmX21wZWd2aWRlb2VuY2RzcF9pbml0KCZzLT5tcHZlbmNkc3AsIGF2Y3R4 KTsKICAgICBmZl9waXhibG9ja2RzcF9pbml0KCZzLT5wZHNwLCBhdmN0eCk7CkBAIC0xMDIwLDcg KzEwMjIsNyBAQCBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQg KmF2Y3R4KQogCiAgICAgaWYgKCEoYXZjdHgtPnN0YXRzX291dCA9IGF2X21hbGxvY3ooMjU2KSkg ICAgICAgICAgICAgICB8fAogICAgICAgICAhKHMtPm5ld19waWMgPSBhdl9mcmFtZV9hbGxvYygp KSB8fAotICAgICAgICAhKHMtPnBpY3R1cmVfcG9vbCA9IGZmX21wdl9hbGxvY19waWNfcG9vbCgw KSkpCisgICAgICAgICEocy0+Yy5waWN0dXJlX3Bvb2wgPSBmZl9tcHZfYWxsb2NfcGljX3Bvb2wo MCkpKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogCiAgICAgcmV0ID0gaW5pdF9t YXRyaWNlcyhtLCBhdmN0eCk7CkBAIC0xMDI5LDM1ICsxMDMxLDM2IEBAIGF2X2NvbGQgaW50IGZm X21wdl9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAKICAgICBmZl9kY3RfZW5j b2RlX2luaXQocyk7CiAKLSAgICBpZiAocy0+bXBlZ19xdWFudCB8fCBzLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9NUEVHMlZJREVPKSB7Ci0gICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludHJh ID0gcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7Ci0gICAgICAgIHMtPmRjdF91bnF1YW50 aXplX2ludGVyID0gcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXI7Ci0gICAgfSBlbHNlIGlm IChzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjEp IHsKLSAgICAgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEgPSBzLT5kY3RfdW5xdWFudGl6ZV9o MjYzX2ludHJhOwotICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRlciA9IHMtPmRjdF91bnF1 YW50aXplX2gyNjNfaW50ZXI7CisgICAgaWYgKHMtPmMubXBlZ19xdWFudCB8fCBzLT5jLmNvZGVj X2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8pIHsKKyAgICAgICAgcy0+Yy5kY3RfdW5xdWFu dGl6ZV9pbnRyYSA9IHMtPmMuZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7CisgICAgICAgIHMt PmMuZGN0X3VucXVhbnRpemVfaW50ZXIgPSBzLT5jLmRjdF91bnF1YW50aXplX21wZWcyX2ludGVy OworICAgIH0gZWxzZSBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPmMub3V0 X2Zvcm1hdCA9PSBGTVRfSDI2MSkgeworICAgICAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludHJh ID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhOworICAgICAgICBzLT5jLmRjdF91bnF1 YW50aXplX2ludGVyID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyOwogICAgIH0gZWxz ZSB7Ci0gICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludHJhID0gcy0+ZGN0X3VucXVhbnRpemVf bXBlZzFfaW50cmE7Ci0gICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludGVyID0gcy0+ZGN0X3Vu cXVhbnRpemVfbXBlZzFfaW50ZXI7CisgICAgICAgIHMtPmMuZGN0X3VucXVhbnRpemVfaW50cmEg PSBzLT5jLmRjdF91bnF1YW50aXplX21wZWcxX2ludHJhOworICAgICAgICBzLT5jLmRjdF91bnF1 YW50aXplX2ludGVyID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlcjsKICAgICB9CiAK LSAgICBpZiAoQ09ORklHX0gyNjNfRU5DT0RFUiAmJiBzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYz KSB7CisgICAgaWYgKENPTkZJR19IMjYzX0VOQ09ERVIgJiYgcy0+Yy5vdXRfZm9ybWF0ID09IEZN VF9IMjYzKSB7CiAgICAgICAgIGZmX2gyNjNfZW5jb2RlX2luaXQobSk7CiAjaWYgQ09ORklHX01T TVBFRzRFTkMKLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiAhPSBNU01QNF9VTlVTRUQp CisgICAgICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiAhPSBNU01QNF9VTlVTRUQpCiAgICAg ICAgICAgICBmZl9tc21wZWc0X2VuY29kZV9pbml0KG0pOwogI2VuZGlmCiAgICAgfQogCi0gICAg cmV0ID0gZmZfbXB2X2NvbW1vbl9pbml0KHMpOworICAgIHMtPmMuc2xpY2VfY3R4X3NpemUgPSBz aXplb2YoKnMpOworICAgIHJldCA9IGZmX21wdl9jb21tb25faW5pdCgmcy0+Yyk7CiAgICAgaWYg KHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7CiAKLSAgICBpZiAocy0+c2xpY2VfY29udGV4 dF9jb3VudCA+IDEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT5zbGljZV9jb250 ZXh0X2NvdW50OyArK2kpIHsKLSAgICAgICAgICAgIHMtPnRocmVhZF9jb250ZXh0W2ldLT5ydHBf bW9kZSA9IDE7CisgICAgaWYgKHMtPmMuc2xpY2VfY29udGV4dF9jb3VudCA+IDEpIHsKKyAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLT5jLnNsaWNlX2NvbnRleHRfY291bnQ7ICsraSkgewor ICAgICAgICAgICAgcy0+Yy5lbmNfY29udGV4dHNbaV0tPnJ0cF9tb2RlID0gMTsKIAogICAgICAg ICAgICAgaWYgKGF2Y3R4LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjYzUCkKLSAgICAgICAg ICAgICAgICBzLT50aHJlYWRfY29udGV4dFtpXS0+aDI2M19zbGljZV9zdHJ1Y3R1cmVkID0gMTsK KyAgICAgICAgICAgICAgICBzLT5jLmVuY19jb250ZXh0c1tpXS0+Yy5oMjYzX3NsaWNlX3N0cnVj dHVyZWQgPSAxOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDc2LDggKzEwNzksOCBAQCBhdl9j b2xkIGludCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKICAgICAgICAgICAgIG0tPnRtcF9m cmFtZXNbaV0tPmZvcm1hdCA9IEFWX1BJWF9GTVRfWVVWNDIwUDsKLSAgICAgICAgICAgIG0tPnRt cF9mcmFtZXNbaV0tPndpZHRoICA9IHMtPndpZHRoICA+PiBtLT5icmRfc2NhbGU7Ci0gICAgICAg ICAgICBtLT50bXBfZnJhbWVzW2ldLT5oZWlnaHQgPSBzLT5oZWlnaHQgPj4gbS0+YnJkX3NjYWxl OworICAgICAgICAgICAgbS0+dG1wX2ZyYW1lc1tpXS0+d2lkdGggID0gcy0+Yy53aWR0aCAgPj4g bS0+YnJkX3NjYWxlOworICAgICAgICAgICAgbS0+dG1wX2ZyYW1lc1tpXS0+aGVpZ2h0ID0gcy0+ Yy5oZWlnaHQgPj4gbS0+YnJkX3NjYWxlOwogCiAgICAgICAgICAgICByZXQgPSBhdl9mcmFtZV9n ZXRfYnVmZmVyKG0tPnRtcF9mcmFtZXNbaV0sIDApOwogICAgICAgICAgICAgaWYgKHJldCA8IDAp CkBAIC0xMDk5LDEyICsxMTAyLDEyIEBAIGF2X2NvbGQgaW50IGZmX21wdl9lbmNvZGVfaW5pdChB VkNvZGVjQ29udGV4dCAqYXZjdHgpCiBhdl9jb2xkIGludCBmZl9tcHZfZW5jb2RlX2VuZChBVkNv ZGVjQ29udGV4dCAqYXZjdHgpCiB7CiAgICAgTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0gPSBh dmN0eC0+cHJpdl9kYXRhOwotICAgIE1wZWdFbmNDb250ZXh0ICAgICpjb25zdCBzID0gJm0tPnM7 CisgICAgTVBWRW5jQ29udGV4dCAgICAqY29uc3QgcyA9ICZtLT5zOwogCiAgICAgZmZfcmF0ZV9j b250cm9sX3VuaW5pdCgmbS0+cmNfY29udGV4dCk7CiAKLSAgICBmZl9tcHZfY29tbW9uX2VuZChz KTsKLSAgICBhdl9yZWZzdHJ1Y3RfcG9vbF91bmluaXQoJnMtPnBpY3R1cmVfcG9vbCk7CisgICAg ZmZfbXB2X2NvbW1vbl9lbmQoJnMtPmMpOworICAgIGF2X3JlZnN0cnVjdF9wb29sX3VuaW5pdCgm cy0+Yy5waWN0dXJlX3Bvb2wpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNUFZFTkNfTUFY X0JfRlJBTUVTICsgMTsgaSsrKSB7CiAgICAgICAgIGF2X3JlZnN0cnVjdF91bnJlZigmbS0+aW5w dXRfcGljdHVyZVtpXSk7CkBAIC0xMTMzLDg4ICsxMTM2LDg4IEBAIGF2X2NvbGQgaW50IGZmX21w dl9lbmNvZGVfZW5kKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIH0KIAogLyogcHV0IGJsb2NrW10g dG8gZGVzdFtdICovCi1zdGF0aWMgaW5saW5lIHZvaWQgcHV0X2RjdChNcGVnRW5jQ29udGV4dCAq cywKK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRfZGN0KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IGksIHVpbnQ4X3Qg KmRlc3QsIGludCBsaW5lX3NpemUsIGludCBxc2NhbGUpCiB7Ci0gICAgcy0+ZGN0X3VucXVhbnRp emVfaW50cmEocywgYmxvY2ssIGksIHFzY2FsZSk7Ci0gICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0 LCBsaW5lX3NpemUsIGJsb2NrKTsKKyAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludHJhKCZzLT5j LCBibG9jaywgaSwgcXNjYWxlKTsKKyAgICBzLT5jLmlkc3AuaWRjdF9wdXQoZGVzdCwgbGluZV9z aXplLCBibG9jayk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRfZGVxdWFudF9kY3QoTXBl Z0VuY0NvbnRleHQgKnMsCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkX2RlcXVhbnRfZGN0KE1QVkVu Y0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpi bG9jaywgaW50IGksIHVpbnQ4X3QgKmRlc3QsIGludCBsaW5lX3NpemUsIGludCBxc2NhbGUpCiB7 Ci0gICAgaWYgKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkgewotICAgICAgICBzLT5kY3Rf dW5xdWFudGl6ZV9pbnRlcihzLCBibG9jaywgaSwgcXNjYWxlKTsKKyAgICBpZiAocy0+Yy5ibG9j a19sYXN0X2luZGV4W2ldID49IDApIHsKKyAgICAgICAgcy0+Yy5kY3RfdW5xdWFudGl6ZV9pbnRl cigmcy0+YywgYmxvY2ssIGksIHFzY2FsZSk7CiAKLSAgICAgICAgcy0+aWRzcC5pZGN0X2FkZChk ZXN0LCBsaW5lX3NpemUsIGJsb2NrKTsKKyAgICAgICAgcy0+Yy5pZHNwLmlkY3RfYWRkKGRlc3Qs IGxpbmVfc2l6ZSwgYmxvY2spOwogICAgIH0KIH0KIAogLyoqCiAgKiBQZXJmb3JtcyBkZXF1YW50 aXphdGlvbiBhbmQgSURDVCAoaWYgbmVjZXNzYXJ5KQogICovCi1zdGF0aWMgdm9pZCBtcHZfcmVj b25zdHJ1Y3RfbWIoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbMTJdWzY0XSkKK3N0 YXRpYyB2b2lkIG1wdl9yZWNvbnN0cnVjdF9tYihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQx Nl90IGJsb2NrWzEyXVs2NF0pCiB7Ci0gICAgaWYgKHMtPmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVH X0RDVF9DT0VGRikgeworICAgIGlmIChzLT5jLmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX0RDVF9D T0VGRikgewogICAgICAgIC8qIHByaW50IERDVCBjb2VmZmljaWVudHMgKi8KLSAgICAgICBhdl9s b2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywgIkRDVCBjb2VmZnMgb2YgTUIgYXQgJWR4JWQ6XG4i LCBzLT5tYl94LCBzLT5tYl95KTsKKyAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0RF QlVHLCAiRENUIGNvZWZmcyBvZiBNQiBhdCAlZHglZDpcbiIsIHMtPmMubWJfeCwgcy0+Yy5tYl95 KTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykgewogICAgICAgICAgICBmb3Ig KGludCBqID0gMDsgaiA8IDY0OyBqKyspIHsKLSAgICAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0 eCwgQVZfTE9HX0RFQlVHLCAiJTVkIiwKLSAgICAgICAgICAgICAgICAgICAgICBibG9ja1tpXVtz LT5pZHNwLmlkY3RfcGVybXV0YXRpb25bal1dKTsKKyAgICAgICAgICAgICAgIGF2X2xvZyhzLT5j LmF2Y3R4LCBBVl9MT0dfREVCVUcsICIlNWQiLAorICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr W2ldW3MtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW2pdXSk7CiAgICAgICAgICAgIH0KLSAgICAg ICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfREVCVUcsICJcbiIpOworICAgICAgICAgICBh dl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0RFQlVHLCAiXG4iKTsKICAgICAgICB9CiAgICAgfQog Ci0gICAgaWYgKCgxIDw8IHMtPnBpY3RfdHlwZSkgJiBzLT5mcmFtZV9yZWNvbnN0cnVjdGlvbl9i aXRmaWVsZCkgewotICAgICAgICB1aW50OF90ICpkZXN0X3kgPSBzLT5kZXN0WzBdLCAqZGVzdF9j YiA9IHMtPmRlc3RbMV0sICpkZXN0X2NyID0gcy0+ZGVzdFsyXTsKKyAgICBpZiAoKDEgPDwgcy0+ Yy5waWN0X3R5cGUpICYgcy0+ZnJhbWVfcmVjb25zdHJ1Y3Rpb25fYml0ZmllbGQpIHsKKyAgICAg ICAgdWludDhfdCAqZGVzdF95ID0gcy0+Yy5kZXN0WzBdLCAqZGVzdF9jYiA9IHMtPmMuZGVzdFsx XSwgKmRlc3RfY3IgPSBzLT5jLmRlc3RbMl07CiAgICAgICAgIGludCBkY3RfbGluZXNpemUsIGRj dF9vZmZzZXQ7Ci0gICAgICAgIGNvbnN0IGludCBsaW5lc2l6ZSAgID0gcy0+Y3VyX3BpYy5saW5l c2l6ZVswXTsKLSAgICAgICAgY29uc3QgaW50IHV2bGluZXNpemUgPSBzLT5jdXJfcGljLmxpbmVz aXplWzFdOworICAgICAgICBjb25zdCBpbnQgbGluZXNpemUgICA9IHMtPmMuY3VyX3BpYy5saW5l c2l6ZVswXTsKKyAgICAgICAgY29uc3QgaW50IHV2bGluZXNpemUgPSBzLT5jLmN1cl9waWMubGlu ZXNpemVbMV07CiAgICAgICAgIGNvbnN0IGludCBibG9ja19zaXplID0gODsKIAotICAgICAgICBk Y3RfbGluZXNpemUgPSBsaW5lc2l6ZSA8PCBzLT5pbnRlcmxhY2VkX2RjdDsKLSAgICAgICAgZGN0 X29mZnNldCAgID0gcy0+aW50ZXJsYWNlZF9kY3QgPyBsaW5lc2l6ZSA6IGxpbmVzaXplICogYmxv Y2tfc2l6ZTsKKyAgICAgICAgZGN0X2xpbmVzaXplID0gbGluZXNpemUgPDwgcy0+Yy5pbnRlcmxh Y2VkX2RjdDsKKyAgICAgICAgZGN0X29mZnNldCAgID0gcy0+Yy5pbnRlcmxhY2VkX2RjdCA/IGxp bmVzaXplIDogbGluZXNpemUgKiBibG9ja19zaXplOwogCi0gICAgICAgIGlmICghcy0+bWJfaW50 cmEpIHsKKyAgICAgICAgaWYgKCFzLT5jLm1iX2ludHJhKSB7CiAgICAgICAgICAgICAvKiBObyBN QywgYXMgdGhhdCB3YXMgYWxyZWFkeSBkb25lIG90aGVyd2lzZSAqLwotICAgICAgICAgICAgYWRk X2RlcXVhbnRfZGN0KHMsIGJsb2NrWzBdLCAwLCBkZXN0X3kgICAgICAgICAgICAgICAgICAgICAg ICAgICwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwotICAgICAgICAgICAgYWRkX2RlcXVhbnRf ZGN0KHMsIGJsb2NrWzFdLCAxLCBkZXN0X3kgICAgICAgICAgICAgICsgYmxvY2tfc2l6ZSwgZGN0 X2xpbmVzaXplLCBzLT5xc2NhbGUpOwotICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJs b2NrWzJdLCAyLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICAgICAgICAgICAgICwgZGN0X2xpbmVzaXpl LCBzLT5xc2NhbGUpOwotICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzNdLCAz LCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5xc2Nh bGUpOwotCi0gICAgICAgICAgICBpZiAoIUNPTkZJR19HUkFZIHx8ICEocy0+YXZjdHgtPmZsYWdz ICYgQVZfQ09ERUNfRkxBR19HUkFZKSkgewotICAgICAgICAgICAgICAgIGlmIChzLT5jaHJvbWFf eV9zaGlmdCkgewotICAgICAgICAgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tb NF0sIDQsIGRlc3RfY2IsIHV2bGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwotICAgICAgICAg ICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbNV0sIDUsIGRlc3RfY3IsIHV2bGlu ZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOworICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMs IGJsb2NrWzBdLCAwLCBkZXN0X3kgICAgICAgICAgICAgICAgICAgICAgICAgICwgZGN0X2xpbmVz aXplLCBzLT5jLnFzY2FsZSk7CisgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tb MV0sIDEsIGRlc3RfeSAgICAgICAgICAgICAgKyBibG9ja19zaXplLCBkY3RfbGluZXNpemUsIHMt PmMucXNjYWxlKTsKKyAgICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1syXSwgMiwg ZGVzdF95ICsgZGN0X29mZnNldCAgICAgICAgICAgICAsIGRjdF9saW5lc2l6ZSwgcy0+Yy5xc2Nh bGUpOworICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzNdLCAzLCBkZXN0X3kg KyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5jLnFzY2FsZSk7CisK KyAgICAgICAgICAgIGlmICghQ09ORklHX0dSQVkgfHwgIShzLT5jLmF2Y3R4LT5mbGFncyAmIEFW X0NPREVDX0ZMQUdfR1JBWSkpIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5jaHJvbWFfeV9z aGlmdCkgeworICAgICAgICAgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbNF0s IDQsIGRlc3RfY2IsIHV2bGluZXNpemUsIHMtPmMuY2hyb21hX3FzY2FsZSk7CisgICAgICAgICAg ICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwgdXZsaW5l c2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg ICAgICAgICAgICAgICAgICBkY3RfbGluZXNpemUgPj49IDE7CiAgICAgICAgICAgICAgICAgICAg IGRjdF9vZmZzZXQgICA+Pj0gMTsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0 KHMsIGJsb2NrWzRdLCA0LCBkZXN0X2NiLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5j aHJvbWFfcXNjYWxlKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJs b2NrWzVdLCA1LCBkZXN0X2NyLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFf cXNjYWxlKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzZd LCA2LCBkZXN0X2NiICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxl KTsKLSAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzddLCA3LCBk ZXN0X2NyICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKKyAg ICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzRdLCA0LCBkZXN0X2Ni LCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5jLmNocm9tYV9xc2NhbGUpOworICAgICAg ICAgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbNV0sIDUsIGRlc3RfY3IsICAg ICAgICAgICAgICBkY3RfbGluZXNpemUsIHMtPmMuY2hyb21hX3FzY2FsZSk7CisgICAgICAgICAg ICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1s2XSwgNiwgZGVzdF9jYiArIGRjdF9v ZmZzZXQsIGRjdF9saW5lc2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKKyAgICAgICAgICAgICAg ICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzddLCA3LCBkZXN0X2NyICsgZGN0X29mZnNl dCwgZGN0X2xpbmVzaXplLCBzLT5jLmNocm9tYV9xc2NhbGUpOwogICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIGRjdCBvbmx5 IGluIGludHJhIGJsb2NrICovCi0gICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzBdLCAwLCBk ZXN0X3kgICAgICAgICAgICAgICAgICAgICAgICAgICwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUp OwotICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1sxXSwgMSwgZGVzdF95ICAgICAgICAgICAg ICArIGJsb2NrX3NpemUsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKLSAgICAgICAgICAgIHB1 dF9kY3QocywgYmxvY2tbMl0sIDIsIGRlc3RfeSArIGRjdF9vZmZzZXQgICAgICAgICAgICAgLCBk Y3RfbGluZXNpemUsIHMtPnFzY2FsZSk7Ci0gICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzNd LCAzLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5x c2NhbGUpOwotCi0gICAgICAgICAgICBpZiAoIUNPTkZJR19HUkFZIHx8ICEocy0+YXZjdHgtPmZs YWdzICYgQVZfQ09ERUNfRkxBR19HUkFZKSkgewotICAgICAgICAgICAgICAgIGlmIChzLT5jaHJv bWFfeV9zaGlmdCkgewotICAgICAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzRdLCA0 LCBkZXN0X2NiLCB1dmxpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKLSAgICAgICAgICAgICAg ICAgICAgcHV0X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwgdXZsaW5lc2l6ZSwgcy0+Y2hy b21hX3FzY2FsZSk7CisgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzBdLCAwLCBkZXN0X3kg ICAgICAgICAgICAgICAgICAgICAgICAgICwgZGN0X2xpbmVzaXplLCBzLT5jLnFzY2FsZSk7Cisg ICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzFdLCAxLCBkZXN0X3kgICAgICAgICAgICAgICsg YmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5jLnFzY2FsZSk7CisgICAgICAgICAgICBwdXRf ZGN0KHMsIGJsb2NrWzJdLCAyLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICAgICAgICAgICAgICwgZGN0 X2xpbmVzaXplLCBzLT5jLnFzY2FsZSk7CisgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzNd LCAzLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5j LnFzY2FsZSk7CisKKyAgICAgICAgICAgIGlmICghQ09ORklHX0dSQVkgfHwgIShzLT5jLmF2Y3R4 LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR1JBWSkpIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+ Yy5jaHJvbWFfeV9zaGlmdCkgeworICAgICAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2Nr WzRdLCA0LCBkZXN0X2NiLCB1dmxpbmVzaXplLCBzLT5jLmNocm9tYV9xc2NhbGUpOworICAgICAg ICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzVdLCA1LCBkZXN0X2NyLCB1dmxpbmVzaXpl LCBzLT5jLmNocm9tYV9xc2NhbGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgICAgICAgICAgIGRjdF9vZmZzZXQgICA+Pj0gMTsKICAgICAgICAgICAgICAgICAgICAgZGN0 X2xpbmVzaXplID4+PSAxOwotICAgICAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzRd LCA0LCBkZXN0X2NiLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxl KTsKLSAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwg ICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Ci0gICAgICAgICAg ICAgICAgICAgIHB1dF9kY3QocywgYmxvY2tbNl0sIDYsIGRlc3RfY2IgKyBkY3Rfb2Zmc2V0LCBk Y3RfbGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwotICAgICAgICAgICAgICAgICAgICBwdXRf ZGN0KHMsIGJsb2NrWzddLCA3LCBkZXN0X2NyICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBz LT5jaHJvbWFfcXNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s0 XSwgNCwgZGVzdF9jYiwgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+Yy5jaHJvbWFfcXNj YWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9j ciwgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKKyAgICAg ICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s2XSwgNiwgZGVzdF9jYiArIGRjdF9vZmZz ZXQsIGRjdF9saW5lc2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKKyAgICAgICAgICAgICAgICAg ICAgcHV0X2RjdChzLCBibG9ja1s3XSwgNywgZGVzdF9jciArIGRjdF9vZmZzZXQsIGRjdF9saW5l c2l6ZSwgcy0+Yy5jaHJvbWFfcXNjYWxlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICB9CiAgICAgICAgIH0KQEAgLTEyMzUsMTQgKzEyMzgsMTQgQEAgc3RhdGljIGludCBnZXRfc2Fl KGNvbnN0IHVpbnQ4X3QgKnNyYywgaW50IHJlZiwgaW50IHN0cmlkZSkKICAgICByZXR1cm4gYWNj OwogfQogCi1zdGF0aWMgaW50IGdldF9pbnRyYV9jb3VudChNcGVnRW5jQ29udGV4dCAqcywgY29u c3QgdWludDhfdCAqc3JjLAorc3RhdGljIGludCBnZXRfaW50cmFfY291bnQoTVBWRW5jQ29udGV4 dCAqY29uc3QgcywgY29uc3QgdWludDhfdCAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdWludDhfdCAqcmVmLCBpbnQgc3RyaWRlKQogewogICAgIGludCB4LCB5LCB3LCBo OwogICAgIGludCBhY2MgPSAwOwogCi0gICAgdyA9IHMtPndpZHRoICAmIH4xNTsKLSAgICBoID0g cy0+aGVpZ2h0ICYgfjE1OworICAgIHcgPSBzLT5jLndpZHRoICAmIH4xNTsKKyAgICBoID0gcy0+ Yy5oZWlnaHQgJiB+MTU7CiAKICAgICBmb3IgKHkgPSAwOyB5IDwgaDsgeSArPSAxNikgewogICAg ICAgICBmb3IgKHggPSAwOyB4IDwgdzsgeCArPSAxNikgewpAQCAtMTI2Miw5ICsxMjY1LDkgQEAg c3RhdGljIGludCBnZXRfaW50cmFfY291bnQoTXBlZ0VuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4 X3QgKnNyYywKICAqIEFsbG9jYXRlcyBuZXcgYnVmZmVycyBmb3IgYW4gQVZGcmFtZSBhbmQgY29w aWVzIHRoZSBwcm9wZXJ0aWVzCiAgKiBmcm9tIGFub3RoZXIgQVZGcmFtZS4KICAqLwotc3RhdGlj IGludCBwcmVwYXJlX3BpY3R1cmUoTXBlZ0VuY0NvbnRleHQgKnMsIEFWRnJhbWUgKmYsIGNvbnN0 IEFWRnJhbWUgKnByb3BzX2ZyYW1lKQorc3RhdGljIGludCBwcmVwYXJlX3BpY3R1cmUoTVBWRW5j Q29udGV4dCAqY29uc3QgcywgQVZGcmFtZSAqZiwgY29uc3QgQVZGcmFtZSAqcHJvcHNfZnJhbWUp CiB7Ci0gICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4ID0gcy0+YXZjdHg7CisgICAgQVZDb2RlY0Nv bnRleHQgKmF2Y3R4ID0gcy0+Yy5hdmN0eDsKICAgICBpbnQgcmV0OwogCiAgICAgZi0+d2lkdGgg ID0gYXZjdHgtPndpZHRoICArIDIgKiBFREdFX1dJRFRIOwpAQCAtMTI3NCwxNCArMTI3NywxNCBA QCBzdGF0aWMgaW50IHByZXBhcmVfcGljdHVyZShNcGVnRW5jQ29udGV4dCAqcywgQVZGcmFtZSAq ZiwgY29uc3QgQVZGcmFtZSAqcHJvcHNfZgogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1 cm4gcmV0OwogCi0gICAgcmV0ID0gZmZfbXB2X3BpY19jaGVja19saW5lc2l6ZShhdmN0eCwgZiwg JnMtPmxpbmVzaXplLCAmcy0+dXZsaW5lc2l6ZSk7CisgICAgcmV0ID0gZmZfbXB2X3BpY19jaGVj a19saW5lc2l6ZShhdmN0eCwgZiwgJnMtPmMubGluZXNpemUsICZzLT5jLnV2bGluZXNpemUpOwog ICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwogCiAgICAgZm9yIChpbnQgaSA9 IDA7IGYtPmRhdGFbaV07IGkrKykgewotICAgICAgICBpbnQgb2Zmc2V0ID0gKEVER0VfV0lEVEgg Pj4gKGkgPyBzLT5jaHJvbWFfeV9zaGlmdCA6IDApKSAqCisgICAgICAgIGludCBvZmZzZXQgPSAo RURHRV9XSURUSCA+PiAoaSA/IHMtPmMuY2hyb21hX3lfc2hpZnQgOiAwKSkgKgogICAgICAgICAg ICAgICAgICAgICAgZi0+bGluZXNpemVbaV0gKwotICAgICAgICAgICAgICAgICAgICAgKEVER0Vf V0lEVEggPj4gKGkgPyBzLT5jaHJvbWFfeF9zaGlmdCA6IDApKTsKKyAgICAgICAgICAgICAgICAg ICAgIChFREdFX1dJRFRIID4+IChpID8gcy0+Yy5jaHJvbWFfeF9zaGlmdCA6IDApKTsKICAgICAg ICAgZi0+ZGF0YVtpXSArPSBvZmZzZXQ7CiAgICAgfQogICAgIGYtPndpZHRoICA9IGF2Y3R4LT53 aWR0aDsKQEAgLTEyOTYsMTIgKzEyOTksMTIgQEAgc3RhdGljIGludCBwcmVwYXJlX3BpY3R1cmUo TXBlZ0VuY0NvbnRleHQgKnMsIEFWRnJhbWUgKmYsIGNvbnN0IEFWRnJhbWUgKnByb3BzX2YKIAog c3RhdGljIGludCBsb2FkX2lucHV0X3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0s IGNvbnN0IEFWRnJhbWUgKnBpY19hcmcpCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMg PSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgTVBWUGlj dHVyZSAqcGljID0gTlVMTDsKICAgICBpbnQ2NF90IHB0czsKICAgICBpbnQgZGlzcGxheV9waWN0 dXJlX251bWJlciA9IDAsIHJldDsKICAgICBpbnQgZW5jb2RpbmdfZGVsYXkgPSBtLT5tYXhfYl9m cmFtZXMgPyBtLT5tYXhfYl9mcmFtZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiAocy0+bG93X2RlbGF5ID8gMCA6IDEpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6IChzLT5jLmxvd19kZWxheSA/IDAgOiAxKTsKICAgICBpbnQg Zmx1c2hfb2Zmc2V0ID0gMTsKICAgICBpbnQgZGlyZWN0ID0gMTsKIApAQCAtMTMxNiwxMyArMTMx OSwxMyBAQCBzdGF0aWMgaW50IGxvYWRfaW5wdXRfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAq Y29uc3QgbSwgY29uc3QgQVZGcmFtZSAqcGljX2FyZwogICAgICAgICAgICAgICAgIGludDY0X3Qg bGFzdCA9IG0tPnVzZXJfc3BlY2lmaWVkX3B0czsKIAogICAgICAgICAgICAgICAgIGlmIChwdHMg PD0gbGFzdCkgewotICAgICAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19F UlJPUiwKKyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19FUlJP UiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHB0cyAoJSJQUklkNjQiKSA8 PSBsYXN0ICglIlBSSWQ2NCIpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRzLCBs YXN0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICAg ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoIXMtPmxvd19kZWxheSAmJiBkaXNw bGF5X3BpY3R1cmVfbnVtYmVyID09IDEpCisgICAgICAgICAgICAgICAgaWYgKCFzLT5jLmxvd19k ZWxheSAmJiBkaXNwbGF5X3BpY3R1cmVfbnVtYmVyID09IDEpCiAgICAgICAgICAgICAgICAgICAg IG0tPmR0c19kZWx0YSA9IHB0cyAtIGxhc3Q7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt LT51c2VyX3NwZWNpZmllZF9wdHMgPSBwdHM7CkBAIC0xMzMwLDcgKzEzMzMsNyBAQCBzdGF0aWMg aW50IGxvYWRfaW5wdXRfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3Qg QVZGcmFtZSAqcGljX2FyZwogICAgICAgICAgICAgaWYgKG0tPnVzZXJfc3BlY2lmaWVkX3B0cyAh PSBBVl9OT1BUU19WQUxVRSkgewogICAgICAgICAgICAgICAgIG0tPnVzZXJfc3BlY2lmaWVkX3B0 cyA9CiAgICAgICAgICAgICAgICAgcHRzID0gbS0+dXNlcl9zcGVjaWZpZWRfcHRzICsgMTsKLSAg ICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19JTkZPLAorICAgICAgICAgICAg ICAgIGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9MT0dfSU5GTywKICAgICAgICAgICAgICAgICAgICAg ICAgIldhcm5pbmc6IEFWRnJhbWUucHRzPT8gdHJ5aW5nIHRvIGd1ZXNzICglIlBSSWQ2NCIpXG4i LAogICAgICAgICAgICAgICAgICAgICAgICBwdHMpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAg LTEzMzgsMjEgKzEzNDEsMjEgQEAgc3RhdGljIGludCBsb2FkX2lucHV0X3BpY3R1cmUoTVBWTWFp bkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWRnJhbWUgKnBpY19hcmcKICAgICAgICAgICAg IH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChwaWNfYXJnLT5saW5lc2l6ZVswXSAhPSBzLT5s aW5lc2l6ZSB8fAotICAgICAgICAgICAgcGljX2FyZy0+bGluZXNpemVbMV0gIT0gcy0+dXZsaW5l c2l6ZSB8fAotICAgICAgICAgICAgcGljX2FyZy0+bGluZXNpemVbMl0gIT0gcy0+dXZsaW5lc2l6 ZSkKKyAgICAgICAgaWYgKHBpY19hcmctPmxpbmVzaXplWzBdICE9IHMtPmMubGluZXNpemUgfHwK KyAgICAgICAgICAgIHBpY19hcmctPmxpbmVzaXplWzFdICE9IHMtPmMudXZsaW5lc2l6ZSB8fAor ICAgICAgICAgICAgcGljX2FyZy0+bGluZXNpemVbMl0gIT0gcy0+Yy51dmxpbmVzaXplKQogICAg ICAgICAgICAgZGlyZWN0ID0gMDsKLSAgICAgICAgaWYgKChzLT53aWR0aCAmIDE1KSB8fCAocy0+ aGVpZ2h0ICYgMTUpKQorICAgICAgICBpZiAoKHMtPmMud2lkdGggJiAxNSkgfHwgKHMtPmMuaGVp Z2h0ICYgMTUpKQogICAgICAgICAgICAgZGlyZWN0ID0gMDsKICAgICAgICAgaWYgKCgoaW50cHRy X3QpKHBpY19hcmctPmRhdGFbMF0pKSAmIChTVFJJREVfQUxJR04tMSkpCiAgICAgICAgICAgICBk aXJlY3QgPSAwOwotICAgICAgICBpZiAocy0+bGluZXNpemUgJiAoU1RSSURFX0FMSUdOLTEpKQor ICAgICAgICBpZiAocy0+Yy5saW5lc2l6ZSAmIChTVFJJREVfQUxJR04tMSkpCiAgICAgICAgICAg ICBkaXJlY3QgPSAwOwogCi0gICAgICAgIGZmX2Rsb2cocy0+YXZjdHgsICIlZCAlZCAlIlBUUkRJ RkZfU1BFQ0lGSUVSIiAlIlBUUkRJRkZfU1BFQ0lGSUVSIlxuIiwgcGljX2FyZy0+bGluZXNpemVb MF0sCi0gICAgICAgICAgICAgICAgcGljX2FyZy0+bGluZXNpemVbMV0sIHMtPmxpbmVzaXplLCBz LT51dmxpbmVzaXplKTsKKyAgICAgICAgZmZfZGxvZyhzLT5jLmF2Y3R4LCAiJWQgJWQgJSJQVFJE SUZGX1NQRUNJRklFUiIgJSJQVFJESUZGX1NQRUNJRklFUiJcbiIsIHBpY19hcmctPmxpbmVzaXpl WzBdLAorICAgICAgICAgICAgICAgIHBpY19hcmctPmxpbmVzaXplWzFdLCBzLT5jLmxpbmVzaXpl LCBzLT5jLnV2bGluZXNpemUpOwogCi0gICAgICAgIHBpYyA9IGF2X3JlZnN0cnVjdF9wb29sX2dl dChzLT5waWN0dXJlX3Bvb2wpOworICAgICAgICBwaWMgPSBhdl9yZWZzdHJ1Y3RfcG9vbF9nZXQo cy0+Yy5waWN0dXJlX3Bvb2wpOwogICAgICAgICBpZiAoIXBpYykKICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT01FTSk7CiAKQEAgLTEzNjcsMjEgKzEzNzAsMjEgQEAgc3RhdGljIGludCBs b2FkX2lucHV0X3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWRnJh bWUgKnBpY19hcmcKIAogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsK ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3JjX3N0cmlkZSA9IHBpY19hcmctPmxpbmVzaXpl W2ldOwotICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBkc3Rfc3RyaWRlID0gaSA/IHMtPnV2bGlu ZXNpemUgOiBzLT5saW5lc2l6ZTsKLSAgICAgICAgICAgICAgICBpbnQgaF9zaGlmdCA9IGkgPyBz LT5jaHJvbWFfeF9zaGlmdCA6IDA7Ci0gICAgICAgICAgICAgICAgaW50IHZfc2hpZnQgPSBpID8g cy0+Y2hyb21hX3lfc2hpZnQgOiAwOwotICAgICAgICAgICAgICAgIGludCB3ID0gQVZfQ0VJTF9S U0hJRlQocy0+d2lkdGggLCBoX3NoaWZ0KTsKLSAgICAgICAgICAgICAgICBpbnQgaCA9IEFWX0NF SUxfUlNISUZUKHMtPmhlaWdodCwgdl9zaGlmdCk7CisgICAgICAgICAgICAgICAgcHRyZGlmZl90 IGRzdF9zdHJpZGUgPSBpID8gcy0+Yy51dmxpbmVzaXplIDogcy0+Yy5saW5lc2l6ZTsKKyAgICAg ICAgICAgICAgICBpbnQgaF9zaGlmdCA9IGkgPyBzLT5jLmNocm9tYV94X3NoaWZ0IDogMDsKKyAg ICAgICAgICAgICAgICBpbnQgdl9zaGlmdCA9IGkgPyBzLT5jLmNocm9tYV95X3NoaWZ0IDogMDsK KyAgICAgICAgICAgICAgICBpbnQgdyA9IEFWX0NFSUxfUlNISUZUKHMtPmMud2lkdGggLCBoX3No aWZ0KTsKKyAgICAgICAgICAgICAgICBpbnQgaCA9IEFWX0NFSUxfUlNISUZUKHMtPmMuaGVpZ2h0 LCB2X3NoaWZ0KTsKICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMgPSBwaWNfYXJn LT5kYXRhW2ldOwogICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRzdCA9IHBpYy0+Zi0+ZGF0YVtp XTsKICAgICAgICAgICAgICAgICBpbnQgdnBhZCA9IDE2OwogCi0gICAgICAgICAgICAgICAgaWYg KCAgIHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8KLSAgICAgICAgICAgICAg ICAgICAgJiYgIXMtPnByb2dyZXNzaXZlX3NlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgICYm IEZGQUxJR04ocy0+aGVpZ2h0LCAzMikgLSBzLT5oZWlnaHQgPiAxNikKKyAgICAgICAgICAgICAg ICBpZiAoICAgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPCisgICAgICAg ICAgICAgICAgICAgICYmICFzLT5jLnByb2dyZXNzaXZlX3NlcXVlbmNlCisgICAgICAgICAgICAg ICAgICAgICYmIEZGQUxJR04ocy0+Yy5oZWlnaHQsIDMyKSAtIHMtPmMuaGVpZ2h0ID4gMTYpCiAg ICAgICAgICAgICAgICAgICAgIHZwYWQgPSAzMjsKIAotICAgICAgICAgICAgICAgIGlmICghcy0+ YXZjdHgtPnJjX2J1ZmZlcl9zaXplKQorICAgICAgICAgICAgICAgIGlmICghcy0+Yy5hdmN0eC0+ cmNfYnVmZmVyX3NpemUpCiAgICAgICAgICAgICAgICAgICAgIGRzdCArPSBJTlBMQUNFX09GRlNF VDsKIAogICAgICAgICAgICAgICAgIGlmIChzcmNfc3RyaWRlID09IGRzdF9zdHJpZGUpCkBAIC0x Mzk1LDcgKzEzOTgsNyBAQCBzdGF0aWMgaW50IGxvYWRfaW5wdXRfcGljdHVyZShNUFZNYWluRW5j Q29udGV4dCAqY29uc3QgbSwgY29uc3QgQVZGcmFtZSAqcGljX2FyZwogICAgICAgICAgICAgICAg ICAgICAgICAgc3JjICs9IHNyY19zdHJpZGU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChzLT53aWR0aCAmIDE1KSB8fCAocy0+ aGVpZ2h0ICYgKHZwYWQtMSkpKSB7CisgICAgICAgICAgICAgICAgaWYgKChzLT5jLndpZHRoICYg MTUpIHx8IChzLT5jLmhlaWdodCAmICh2cGFkLTEpKSkgewogICAgICAgICAgICAgICAgICAgICBz LT5tcHZlbmNkc3AuZHJhd19lZGdlcyhkc3QsIGRzdF9zdHJpZGUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcsIGgsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDE2ID4+IGhfc2hpZnQsCkBAIC0xNDM4LDcgKzE0NDEsNyBA QCBmYWlsOgogc3RhdGljIGludCBza2lwX2NoZWNrKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1QVlBpY3R1cmUgKnAsIGNvbnN0IE1QVlBp Y3R1cmUgKnJlZikKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAg IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICBpbnQgeCwgeSwgcGxhbmU7CiAg ICAgaW50IHNjb3JlID0gMDsKICAgICBpbnQ2NF90IHNjb3JlNjQgPSAwOwpAQCAtMTQ0Niw4ICsx NDQ5LDggQEAgc3RhdGljIGludCBza2lwX2NoZWNrKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt LAogICAgIGZvciAocGxhbmUgPSAwOyBwbGFuZSA8IDM7IHBsYW5lKyspIHsKICAgICAgICAgY29u c3QgaW50IHN0cmlkZSA9IHAtPmYtPmxpbmVzaXplW3BsYW5lXTsKICAgICAgICAgY29uc3QgaW50 IGJ3ID0gcGxhbmUgPyAxIDogMjsKLSAgICAgICAgZm9yICh5ID0gMDsgeSA8IHMtPm1iX2hlaWdo dCAqIGJ3OyB5KyspIHsKLSAgICAgICAgICAgIGZvciAoeCA9IDA7IHggPCBzLT5tYl93aWR0aCAq IGJ3OyB4KyspIHsKKyAgICAgICAgZm9yICh5ID0gMDsgeSA8IHMtPmMubWJfaGVpZ2h0ICogYnc7 IHkrKykgeworICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IHMtPmMubWJfd2lkdGggKiBidzsg eCsrKSB7CiAgICAgICAgICAgICAgICAgaW50IG9mZiA9IHAtPnNoYXJlZCA/IDAgOiAxNjsKICAg ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkcHRyID0gcC0+Zi0+ZGF0YVtwbGFuZV0gKyA4 ICogKHggKyB5ICogc3RyaWRlKSArIG9mZjsKICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90 ICpycHRyID0gcmVmLT5mLT5kYXRhW3BsYW5lXSArIDggKiAoeCArIHkgKiBzdHJpZGUpOwpAQCAt MTQ2OCwxMiArMTQ3MSwxMiBAQCBzdGF0aWMgaW50IHNraXBfY2hlY2soTVBWTWFpbkVuY0NvbnRl eHQgKmNvbnN0IG0sCiAgICAgaWYgKHNjb3JlKQogICAgICAgICBzY29yZTY0ID0gc2NvcmU7CiAg ICAgaWYgKG0tPmZyYW1lX3NraXBfZXhwIDwgMCkKLSAgICAgICAgc2NvcmU2NCA9IHBvdyhzY29y ZTY0IC8gKGRvdWJsZSkocy0+bWJfd2lkdGggKiBzLT5tYl9oZWlnaHQpLAorICAgICAgICBzY29y ZTY0ID0gcG93KHNjb3JlNjQgLyAoZG91YmxlKShzLT5jLm1iX3dpZHRoICogcy0+Yy5tYl9oZWln aHQpLAogICAgICAgICAgICAgICAgICAgICAgIC0xLjAvbS0+ZnJhbWVfc2tpcF9leHApOwogCiAg ICAgaWYgKHNjb3JlNjQgPCBtLT5mcmFtZV9za2lwX3RocmVzaG9sZCkKICAgICAgICAgcmV0dXJu IDE7Ci0gICAgaWYgKHNjb3JlNjQgPCAoKG0tPmZyYW1lX3NraXBfZmFjdG9yICogKGludDY0X3Qp IHMtPmxhbWJkYSkgPj4gOCkpCisgICAgaWYgKHNjb3JlNjQgPCAoKG0tPmZyYW1lX3NraXBfZmFj dG9yICogKGludDY0X3QpIHMtPmMubGFtYmRhKSA+PiA4KSkKICAgICAgICAgcmV0dXJuIDE7CiAg ICAgcmV0dXJuIDA7CiB9CkBAIC0xNTAxLDExICsxNTA0LDExIEBAIHN0YXRpYyBpbnQgZW5jb2Rl X2ZyYW1lKEFWQ29kZWNDb250ZXh0ICpjLCBjb25zdCBBVkZyYW1lICpmcmFtZSwgQVZQYWNrZXQg KnBrdCkKIAogc3RhdGljIGludCBlc3RpbWF0ZV9iZXN0X2JfY291bnQoTVBWTWFpbkVuY0NvbnRl eHQgKmNvbnN0IG0pCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKKyAg ICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgQVZQYWNrZXQgKnBrdDsKICAg ICBjb25zdCBpbnQgc2NhbGUgPSBtLT5icmRfc2NhbGU7Ci0gICAgaW50IHdpZHRoICA9IHMtPndp ZHRoICA+PiBzY2FsZTsKLSAgICBpbnQgaGVpZ2h0ID0gcy0+aGVpZ2h0ID4+IHNjYWxlOworICAg IGludCB3aWR0aCAgPSBzLT5jLndpZHRoICA+PiBzY2FsZTsKKyAgICBpbnQgaGVpZ2h0ID0gcy0+ Yy5oZWlnaHQgPj4gc2NhbGU7CiAgICAgaW50IG91dF9zaXplLCBwX2xhbWJkYSwgYl9sYW1iZGEs IGxhbWJkYTI7CiAgICAgaW50NjRfdCBiZXN0X3JkICA9IElOVDY0X01BWDsKICAgICBpbnQgYmVz dF9iX2NvdW50ID0gLTE7CkBAIC0xNTE5LDcgKzE1MjIsNyBAQCBzdGF0aWMgaW50IGVzdGltYXRl X2Jlc3RfYl9jb3VudChNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAgIC8vZW1tc19j KCk7CiAgICAgcF9sYW1iZGEgPSBtLT5sYXN0X2xhbWJkYV9mb3JbQVZfUElDVFVSRV9UWVBFX1Bd OwotICAgIC8vcF9sYW1iZGEgKiBGRkFCUyhzLT5hdmN0eC0+Yl9xdWFudF9mYWN0b3IpICsgcy0+ YXZjdHgtPmJfcXVhbnRfb2Zmc2V0OworICAgIC8vcF9sYW1iZGEgKiBGRkFCUyhzLT5jLmF2Y3R4 LT5iX3F1YW50X2ZhY3RvcikgKyBzLT5jLmF2Y3R4LT5iX3F1YW50X29mZnNldDsKICAgICBiX2xh bWJkYSA9IG0tPmxhc3RfbGFtYmRhX2ZvcltBVl9QSUNUVVJFX1RZUEVfQl07CiAgICAgaWYgKCFi X2xhbWJkYSkgLy8gRklYTUUgd2Ugc2hvdWxkIGRvIHRoaXMgc29tZXdoZXJlIGVsc2UKICAgICAg ICAgYl9sYW1iZGEgPSBwX2xhbWJkYTsKQEAgLTE1MjgsNyArMTUzMSw3IEBAIHN0YXRpYyBpbnQg ZXN0aW1hdGVfYmVzdF9iX2NvdW50KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogCiAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBtLT5tYXhfYl9mcmFtZXMgKyAyOyBpKyspIHsKICAgICAgICAg Y29uc3QgTVBWUGljdHVyZSAqcHJlX2lucHV0X3B0ciA9IGkgPyBtLT5pbnB1dF9waWN0dXJlW2kg LSAxXSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bmV4 dF9waWMucHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMt PmMubmV4dF9waWMucHRyOwogCiAgICAgICAgIGlmIChwcmVfaW5wdXRfcHRyKSB7CiAgICAgICAg ICAgICBjb25zdCB1aW50OF90ICpkYXRhWzRdOwpAQCAtMTU3NCwxNiArMTU3NywxNiBAQCBzdGF0 aWMgaW50IGVzdGltYXRlX2Jlc3RfYl9jb3VudChNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkK ICAgICAgICAgYy0+d2lkdGggICAgICAgID0gd2lkdGg7CiAgICAgICAgIGMtPmhlaWdodCAgICAg ICA9IGhlaWdodDsKICAgICAgICAgYy0+ZmxhZ3MgICAgICAgID0gQVZfQ09ERUNfRkxBR19RU0NB TEUgfCBBVl9DT0RFQ19GTEFHX1BTTlI7Ci0gICAgICAgIGMtPmZsYWdzICAgICAgIHw9IHMtPmF2 Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUVBFTDsKLSAgICAgICAgYy0+bWJfZGVjaXNpb24g ID0gcy0+YXZjdHgtPm1iX2RlY2lzaW9uOwotICAgICAgICBjLT5tZV9jbXAgICAgICAgPSBzLT5h dmN0eC0+bWVfY21wOwotICAgICAgICBjLT5tYl9jbXAgICAgICAgPSBzLT5hdmN0eC0+bWJfY21w OwotICAgICAgICBjLT5tZV9zdWJfY21wICAgPSBzLT5hdmN0eC0+bWVfc3ViX2NtcDsKKyAgICAg ICAgYy0+ZmxhZ3MgICAgICAgfD0gcy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FQ RUw7CisgICAgICAgIGMtPm1iX2RlY2lzaW9uICA9IHMtPmMuYXZjdHgtPm1iX2RlY2lzaW9uOwor ICAgICAgICBjLT5tZV9jbXAgICAgICAgPSBzLT5jLmF2Y3R4LT5tZV9jbXA7CisgICAgICAgIGMt Pm1iX2NtcCAgICAgICA9IHMtPmMuYXZjdHgtPm1iX2NtcDsKKyAgICAgICAgYy0+bWVfc3ViX2Nt cCAgID0gcy0+Yy5hdmN0eC0+bWVfc3ViX2NtcDsKICAgICAgICAgYy0+cGl4X2ZtdCAgICAgID0g QVZfUElYX0ZNVF9ZVVY0MjBQOwotICAgICAgICBjLT50aW1lX2Jhc2UgICAgPSBzLT5hdmN0eC0+ dGltZV9iYXNlOworICAgICAgICBjLT50aW1lX2Jhc2UgICAgPSBzLT5jLmF2Y3R4LT50aW1lX2Jh c2U7CiAgICAgICAgIGMtPm1heF9iX2ZyYW1lcyA9IG0tPm1heF9iX2ZyYW1lczsKIAotICAgICAg ICByZXQgPSBhdmNvZGVjX29wZW4yKGMsIHMtPmF2Y3R4LT5jb2RlYywgTlVMTCk7CisgICAgICAg IHJldCA9IGF2Y29kZWNfb3BlbjIoYywgcy0+Yy5hdmN0eC0+Y29kZWMsIE5VTEwpOwogICAgICAg ICBpZiAocmV0IDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKIApAQCAtMTY1NCw3ICsxNjU3 LDcgQEAgZmFpbDoKICAqLwogc3RhdGljIGludCBzZXRfYmZyYW1lX2NoYWluX2xlbmd0aChNUFZN YWluRW5jQ29udGV4dCAqY29uc3QgbSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9 ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKIAogICAgIC8qIEVp dGhlciBub3RoaW5nIHRvIGRvIG9yIGNhbid0IGRvIGFueXRoaW5nICovCiAgICAgaWYgKG0tPnJl b3JkZXJlZF9pbnB1dF9waWN0dXJlWzBdIHx8ICFtLT5pbnB1dF9waWN0dXJlWzBdKQpAQCAtMTY2 Myw4ICsxNjY2LDggQEAgc3RhdGljIGludCBzZXRfYmZyYW1lX2NoYWluX2xlbmd0aChNUFZNYWlu RW5jQ29udGV4dCAqY29uc3QgbSkKICAgICAvKiBzZXQgbmV4dCBwaWN0dXJlIHR5cGUgJiBvcmRl cmluZyAqLwogICAgIGlmIChtLT5mcmFtZV9za2lwX3RocmVzaG9sZCB8fCBtLT5mcmFtZV9za2lw X2ZhY3RvcikgewogICAgICAgICBpZiAobS0+cGljdHVyZV9pbl9nb3BfbnVtYmVyIDwgbS0+Z29w X3NpemUgJiYKLSAgICAgICAgICAgIHMtPm5leHRfcGljLnB0ciAmJgotICAgICAgICAgICAgc2tp cF9jaGVjayhtLCBtLT5pbnB1dF9waWN0dXJlWzBdLCBzLT5uZXh0X3BpYy5wdHIpKSB7CisgICAg ICAgICAgICBzLT5jLm5leHRfcGljLnB0ciAmJgorICAgICAgICAgICAgc2tpcF9jaGVjayhtLCBt LT5pbnB1dF9waWN0dXJlWzBdLCBzLT5jLm5leHRfcGljLnB0cikpIHsKICAgICAgICAgICAgIC8v IEZJWE1FIGNoZWNrIHRoYXQgdGhlIGdvcCBjaGVjayBhYm92ZSBpcyArLTEgY29ycmVjdAogICAg ICAgICAgICAgYXZfcmVmc3RydWN0X3VucmVmKCZtLT5pbnB1dF9waWN0dXJlWzBdKTsKIApAQCAt MTY3NSw3ICsxNjc4LDcgQEAgc3RhdGljIGludCBzZXRfYmZyYW1lX2NoYWluX2xlbmd0aChNUFZN YWluRW5jQ29udGV4dCAqY29uc3QgbSkKICAgICB9CiAKICAgICBpZiAoLyogbS0+cGljdHVyZV9p bl9nb3BfbnVtYmVyID49IG0tPmdvcF9zaXplIHx8ICovCi0gICAgICAgICFzLT5uZXh0X3BpYy5w dHIgfHwgbS0+aW50cmFfb25seSkgeworICAgICAgICAhcy0+Yy5uZXh0X3BpYy5wdHIgfHwgbS0+ aW50cmFfb25seSkgewogICAgICAgICBtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVswXSA9IG0t PmlucHV0X3BpY3R1cmVbMF07CiAgICAgICAgIG0tPmlucHV0X3BpY3R1cmVbMF0gPSBOVUxMOwog ICAgICAgICBtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVswXS0+Zi0+cGljdF90eXBlID0gQVZf UElDVFVSRV9UWVBFX0k7CkBAIC0xNjg0LDcgKzE2ODcsNyBAQCBzdGF0aWMgaW50IHNldF9iZnJh bWVfY2hhaW5fbGVuZ3RoKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogICAgIH0gZWxzZSB7 CiAgICAgICAgIGludCBiX2ZyYW1lcyA9IDA7CiAKLSAgICAgICAgaWYgKHMtPmF2Y3R4LT5mbGFn cyAmIEFWX0NPREVDX0ZMQUdfUEFTUzIpIHsKKyAgICAgICAgaWYgKHMtPmMuYXZjdHgtPmZsYWdz ICYgQVZfQ09ERUNfRkxBR19QQVNTMikgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBtLT5tYXhfYl9mcmFtZXMgKyAxOyBpKyspIHsKICAgICAgICAgICAgICAgICBpbnQgcGljdF9u dW0gPSBtLT5pbnB1dF9waWN0dXJlWzBdLT5kaXNwbGF5X3BpY3R1cmVfbnVtYmVyICsgaTsKIApA QCAtMTcxMiwxMyArMTcxNSwxMyBAQCBzdGF0aWMgaW50IHNldF9iZnJhbWVfY2hhaW5fbGVuZ3Ro KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0 X2ludHJhX2NvdW50KHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bS0+aW5wdXRfcGljdHVyZVtpICAgIF0tPmYtPmRhdGFbMF0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbS0+aW5wdXRfcGljdHVyZVtpIC0gMV0tPmYtPmRhdGFbMF0s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZXNpemUpICsg MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLmxpbmVzaXpl KSArIDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBtLT5tYXhfYl9mcmFtZXMgKyAxOyBpKyspIHsKICAgICAgICAgICAg ICAgICBpZiAoIW0tPmlucHV0X3BpY3R1cmVbaV0gfHwKICAgICAgICAgICAgICAgICAgICAgbS0+ aW5wdXRfcGljdHVyZVtpXS0+Yl9mcmFtZV9zY29yZSAtIDEgPgotICAgICAgICAgICAgICAgICAg ICAgICAgcy0+bWJfbnVtIC8gbS0+Yl9zZW5zaXRpdml0eSkgeworICAgICAgICAgICAgICAgICAg ICAgICAgcy0+Yy5tYl9udW0gLyBtLT5iX3NlbnNpdGl2aXR5KSB7CiAgICAgICAgICAgICAgICAg ICAgIGJfZnJhbWVzID0gRkZNQVgoMCwgaSAtIDEpOwogICAgICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzQ0LDcgKzE3NDcsNyBAQCBzdGF0aWMgaW50IHNl dF9iZnJhbWVfY2hhaW5fbGVuZ3RoKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogICAgICAg ICB9CiAgICAgICAgIGlmIChtLT5pbnB1dF9waWN0dXJlW2JfZnJhbWVzXS0+Zi0+cGljdF90eXBl ID09IEFWX1BJQ1RVUkVfVFlQRV9CICYmCiAgICAgICAgICAgICBiX2ZyYW1lcyA9PSBtLT5tYXhf Yl9mcmFtZXMpIHsKLSAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLAor ICAgICAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19FUlJPUiwKICAgICAgICAgICAg ICAgICAgICAgIndhcm5pbmcsIHRvbyBtYW55IEItZnJhbWVzIGluIGEgcm93XG4iKTsKICAgICAg ICAgfQogCkBAIC0xNzUzLDEzICsxNzU2LDEzIEBAIHN0YXRpYyBpbnQgc2V0X2JmcmFtZV9jaGFp bl9sZW5ndGgoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgICAgICAgICAgbS0+ Z29wX3NpemUgPiBtLT5waWN0dXJlX2luX2dvcF9udW1iZXIpIHsKICAgICAgICAgICAgICAgICBi X2ZyYW1lcyA9IG0tPmdvcF9zaXplIC0gbS0+cGljdHVyZV9pbl9nb3BfbnVtYmVyIC0gMTsKICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHMtPmF2Y3R4LT5mbGFncyAm IEFWX0NPREVDX0ZMQUdfQ0xPU0VEX0dPUCkKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5hdmN0 eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0NMT1NFRF9HT1ApCiAgICAgICAgICAgICAgICAgICAg IGJfZnJhbWVzID0gMDsKICAgICAgICAgICAgICAgICBtLT5pbnB1dF9waWN0dXJlW2JfZnJhbWVz XS0+Zi0+cGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX0k7CiAgICAgICAgICAgICB9CiAgICAg ICAgIH0KIAotICAgICAgICBpZiAoKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQ0xP U0VEX0dPUCkgJiYgYl9mcmFtZXMgJiYKKyAgICAgICAgaWYgKChzLT5jLmF2Y3R4LT5mbGFncyAm IEFWX0NPREVDX0ZMQUdfQ0xPU0VEX0dPUCkgJiYgYl9mcmFtZXMgJiYKICAgICAgICAgICAgIG0t PmlucHV0X3BpY3R1cmVbYl9mcmFtZXNdLT5mLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBF X0kpCiAgICAgICAgICAgICBiX2ZyYW1lcy0tOwogCkBAIC0xNzg0LDcgKzE3ODcsNyBAQCBzdGF0 aWMgaW50IHNldF9iZnJhbWVfY2hhaW5fbGVuZ3RoKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt KQogCiBzdGF0aWMgaW50IHNlbGVjdF9pbnB1dF9waWN0dXJlKE1QVk1haW5FbmNDb250ZXh0ICpj b25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBW RW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAgIGludCByZXQ7CiAKICAgICBhdl9hc3Nl cnQxKCFtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVswXSk7CkBAIC0xODA0LDcgKzE4MDcsNyBA QCBzdGF0aWMgaW50IHNlbGVjdF9pbnB1dF9waWN0dXJlKE1QVk1haW5FbmNDb250ZXh0ICpjb25z dCBtKQogICAgICAgICBtLT5yZW9yZGVyZWRfaW5wdXRfcGljdHVyZVswXS0+cmVmZXJlbmNlID0K ICAgICAgICAgICAgbS0+cmVvcmRlcmVkX2lucHV0X3BpY3R1cmVbMF0tPmYtPnBpY3RfdHlwZSAh PSBBVl9QSUNUVVJFX1RZUEVfQjsKIAotICAgICAgICBpZiAobS0+cmVvcmRlcmVkX2lucHV0X3Bp Y3R1cmVbMF0tPnNoYXJlZCB8fCBzLT5hdmN0eC0+cmNfYnVmZmVyX3NpemUpIHsKKyAgICAgICAg aWYgKG0tPnJlb3JkZXJlZF9pbnB1dF9waWN0dXJlWzBdLT5zaGFyZWQgfHwgcy0+Yy5hdmN0eC0+ cmNfYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8vIGlucHV0IGlzIGEgc2hhcmVkIHBpeCwg c28gd2UgY2FuJ3QgbW9kaWZ5IGl0IC0+IGFsbG9jYXRlIGEgbmV3CiAgICAgICAgICAgICAvLyBv bmUgJiBlbnN1cmUgdGhhdCB0aGUgc2hhcmVkIG9uZSBpcyByZXVzZWFibGUKICAgICAgICAgICAg IGF2X2ZyYW1lX21vdmVfcmVmKHMtPm5ld19waWMsIG0tPnJlb3JkZXJlZF9pbnB1dF9waWN0dXJl WzBdLT5mKTsKQEAgLTE4MjIsMTggKzE4MjUsMTggQEAgc3RhdGljIGludCBzZWxlY3RfaW5wdXRf cGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKICAgICAgICAgICAgICAgICAgICAg cy0+bmV3X3BpYy0+ZGF0YVtpXSArPSBJTlBMQUNFX09GRlNFVDsKICAgICAgICAgICAgIH0KICAg ICAgICAgfQotICAgICAgICBzLT5jdXJfcGljLnB0ciA9IG0tPnJlb3JkZXJlZF9pbnB1dF9waWN0 dXJlWzBdOworICAgICAgICBzLT5jLmN1cl9waWMucHRyID0gbS0+cmVvcmRlcmVkX2lucHV0X3Bp Y3R1cmVbMF07CiAgICAgICAgIG0tPnJlb3JkZXJlZF9pbnB1dF9waWN0dXJlWzBdID0gTlVMTDsK LSAgICAgICAgYXZfYXNzZXJ0MShzLT5tYl93aWR0aCAgPT0gcy0+YnVmZmVyX3Bvb2xzLmFsbG9j X21iX3dpZHRoKTsKLSAgICAgICAgYXZfYXNzZXJ0MShzLT5tYl9oZWlnaHQgPT0gcy0+YnVmZmVy X3Bvb2xzLmFsbG9jX21iX2hlaWdodCk7Ci0gICAgICAgIGF2X2Fzc2VydDEocy0+bWJfc3RyaWRl ID09IHMtPmJ1ZmZlcl9wb29scy5hbGxvY19tYl9zdHJpZGUpOwotICAgICAgICByZXQgPSBmZl9t cHZfYWxsb2NfcGljX2FjY2Vzc29yaWVzKHMtPmF2Y3R4LCAmcy0+Y3VyX3BpYywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcy0+c2MsICZzLT5idWZmZXJfcG9v bHMsIHMtPm1iX2hlaWdodCk7CisgICAgICAgIGF2X2Fzc2VydDEocy0+Yy5tYl93aWR0aCAgPT0g cy0+Yy5idWZmZXJfcG9vbHMuYWxsb2NfbWJfd2lkdGgpOworICAgICAgICBhdl9hc3NlcnQxKHMt PmMubWJfaGVpZ2h0ID09IHMtPmMuYnVmZmVyX3Bvb2xzLmFsbG9jX21iX2hlaWdodCk7CisgICAg ICAgIGF2X2Fzc2VydDEocy0+Yy5tYl9zdHJpZGUgPT0gcy0+Yy5idWZmZXJfcG9vbHMuYWxsb2Nf bWJfc3RyaWRlKTsKKyAgICAgICAgcmV0ID0gZmZfbXB2X2FsbG9jX3BpY19hY2Nlc3Nvcmllcyhz LT5jLmF2Y3R4LCAmcy0+Yy5jdXJfcGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZzLT5jLnNjLCAmcy0+Yy5idWZmZXJfcG9vbHMsIHMtPmMubWJfaGVpZ2h0 KTsKICAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIGZmX21wdl91bnJlZl9waWN0 dXJlKCZzLT5jdXJfcGljKTsKKyAgICAgICAgICAgIGZmX21wdl91bnJlZl9waWN0dXJlKCZzLT5j LmN1cl9waWMpOwogICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgfQotICAgICAgICBz LT5waWN0dXJlX251bWJlciA9IHMtPmN1cl9waWMucHRyLT5kaXNwbGF5X3BpY3R1cmVfbnVtYmVy OworICAgICAgICBzLT5jLnBpY3R1cmVfbnVtYmVyID0gcy0+Yy5jdXJfcGljLnB0ci0+ZGlzcGxh eV9waWN0dXJlX251bWJlcjsKIAogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTE4NDQsMjkgKzE4 NDcsMjkgQEAgZmFpbDoKIAogc3RhdGljIHZvaWQgZnJhbWVfZW5kKE1QVk1haW5FbmNDb250ZXh0 ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAg TVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogCi0gICAgaWYgKHMtPnVucmVzdHJpY3Rl ZF9tdiAmJgotICAgICAgICBzLT5jdXJfcGljLnJlZmVyZW5jZSAmJgorICAgIGlmIChzLT5jLnVu cmVzdHJpY3RlZF9tdiAmJgorICAgICAgICBzLT5jLmN1cl9waWMucmVmZXJlbmNlICYmCiAgICAg ICAgICFtLT5pbnRyYV9vbmx5KSB7Ci0gICAgICAgIGludCBoc2hpZnQgPSBzLT5jaHJvbWFfeF9z aGlmdDsKLSAgICAgICAgaW50IHZzaGlmdCA9IHMtPmNocm9tYV95X3NoaWZ0OwotICAgICAgICBz LT5tcHZlbmNkc3AuZHJhd19lZGdlcyhzLT5jdXJfcGljLmRhdGFbMF0sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMtPmN1cl9waWMubGluZXNpemVbMF0sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMtPmhfZWRnZV9wb3MsIHMtPnZfZWRnZV9wb3MsCisgICAgICAg IGludCBoc2hpZnQgPSBzLT5jLmNocm9tYV94X3NoaWZ0OworICAgICAgICBpbnQgdnNoaWZ0ID0g cy0+Yy5jaHJvbWFfeV9zaGlmdDsKKyAgICAgICAgcy0+bXB2ZW5jZHNwLmRyYXdfZWRnZXMocy0+ Yy5jdXJfcGljLmRhdGFbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMu Y3VyX3BpYy5saW5lc2l6ZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ Yy5oX2VkZ2VfcG9zLCBzLT5jLnZfZWRnZV9wb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVER0VfV0lEVEgsIEVER0VfV0lEVEgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVER0VfVE9QIHwgRURHRV9CT1RUT00pOwotICAgICAgICBzLT5tcHZlbmNkc3AuZHJh d19lZGdlcyhzLT5jdXJfcGljLmRhdGFbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPmN1cl9waWMubGluZXNpemVbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPmhfZWRnZV9wb3MgPj4gaHNoaWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzLT52X2VkZ2VfcG9zID4+IHZzaGlmdCwKKyAgICAgICAgcy0+bXB2ZW5jZHNwLmRyYXdf ZWRnZXMocy0+Yy5jdXJfcGljLmRhdGFbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPmMuY3VyX3BpYy5saW5lc2l6ZVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+Yy5oX2VkZ2VfcG9zID4+IGhzaGlmdCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcy0+Yy52X2VkZ2VfcG9zID4+IHZzaGlmdCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRURHRV9XSURUSCA+PiBoc2hpZnQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVER0VfV0lEVEggPj4gdnNoaWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFREdFX1RPUCB8IEVER0VfQk9UVE9NKTsKLSAgICAgICAgcy0+bXB2ZW5jZHNwLmRy YXdfZWRnZXMocy0+Y3VyX3BpYy5kYXRhWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzLT5jdXJfcGljLmxpbmVzaXplWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzLT5oX2VkZ2VfcG9zID4+IGhzaGlmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+dl9lZGdlX3BvcyA+PiB2c2hpZnQsCisgICAgICAgIHMtPm1wdmVuY2RzcC5kcmF3 X2VkZ2VzKHMtPmMuY3VyX3BpYy5kYXRhWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzLT5jLmN1cl9waWMubGluZXNpemVbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPmMuaF9lZGdlX3BvcyA+PiBoc2hpZnQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHMtPmMudl9lZGdlX3BvcyA+PiB2c2hpZnQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVER0VfV0lEVEggPj4gaHNoaWZ0LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFREdFX1dJRFRIID4+IHZzaGlmdCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRURHRV9UT1AgfCBFREdFX0JPVFRPTSk7CkBAIC0xODc0LDE1ICsxODc3LDE1IEBA IHN0YXRpYyB2b2lkIGZyYW1lX2VuZChNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAg IGVtbXNfYygpOwogCi0gICAgbS0+bGFzdF9waWN0X3R5cGUgICAgICAgICAgICAgICAgPSBzLT5w aWN0X3R5cGU7Ci0gICAgbS0+bGFzdF9sYW1iZGFfZm9yW3MtPnBpY3RfdHlwZV0gPSBzLT5jdXJf cGljLnB0ci0+Zi0+cXVhbGl0eTsKLSAgICBpZiAocy0+cGljdF90eXBlIT0gQVZfUElDVFVSRV9U WVBFX0IpCi0gICAgICAgIG0tPmxhc3Rfbm9uX2JfcGljdF90eXBlID0gcy0+cGljdF90eXBlOwor ICAgIG0tPmxhc3RfcGljdF90eXBlICAgICAgICAgICAgICAgID0gcy0+Yy5waWN0X3R5cGU7Cisg ICAgbS0+bGFzdF9sYW1iZGFfZm9yW3MtPmMucGljdF90eXBlXSA9IHMtPmMuY3VyX3BpYy5wdHIt PmYtPnF1YWxpdHk7CisgICAgaWYgKHMtPmMucGljdF90eXBlIT0gQVZfUElDVFVSRV9UWVBFX0Ip CisgICAgICAgIG0tPmxhc3Rfbm9uX2JfcGljdF90eXBlID0gcy0+Yy5waWN0X3R5cGU7CiB9CiAK IHN0YXRpYyB2b2lkIHVwZGF0ZV9ub2lzZV9yZWR1Y3Rpb24oTVBWTWFpbkVuY0NvbnRleHQgKmNv bnN0IG0pCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKKyAgICBNUFZF bmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAgICAgaW50IGludHJhLCBpOwogCiAgICAgZm9y IChpbnRyYSA9IDA7IGludHJhIDwgMjsgaW50cmErKykgewpAQCAtMTkwNCwxMyArMTkwNywxMyBA QCBzdGF0aWMgdm9pZCB1cGRhdGVfbm9pc2VfcmVkdWN0aW9uKE1QVk1haW5FbmNDb250ZXh0ICpj b25zdCBtKQogCiBzdGF0aWMgdm9pZCBmcmFtZV9zdGFydChNUFZNYWluRW5jQ29udGV4dCAqY29u c3QgbSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVu Y0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKIAotICAgIHMtPmN1cl9waWMucHRyLT5mLT5waWN0 X3R5cGUgPSBzLT5waWN0X3R5cGU7CisgICAgcy0+Yy5jdXJfcGljLnB0ci0+Zi0+cGljdF90eXBl ID0gcy0+Yy5waWN0X3R5cGU7CiAKLSAgICBpZiAocy0+cGljdF90eXBlICE9IEFWX1BJQ1RVUkVf VFlQRV9CKSB7Ci0gICAgICAgIGZmX21wdl9yZXBsYWNlX3BpY3R1cmUoJnMtPmxhc3RfcGljLCAm cy0+bmV4dF9waWMpOwotICAgICAgICBmZl9tcHZfcmVwbGFjZV9waWN0dXJlKCZzLT5uZXh0X3Bp YywgJnMtPmN1cl9waWMpOworICAgIGlmIChzLT5jLnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZ UEVfQikgeworICAgICAgICBmZl9tcHZfcmVwbGFjZV9waWN0dXJlKCZzLT5jLmxhc3RfcGljLCAm cy0+Yy5uZXh0X3BpYyk7CisgICAgICAgIGZmX21wdl9yZXBsYWNlX3BpY3R1cmUoJnMtPmMubmV4 dF9waWMsICZzLT5jLmN1cl9waWMpOwogICAgIH0KIAogICAgIGF2X2Fzc2VydDIoISFtLT5ub2lz ZV9yZWR1Y3Rpb24gPT0gISFzLT5kY3RfZXJyb3Jfc3VtKTsKQEAgLTE5MjMsMTEgKzE5MjYsMTEg QEAgaW50IGZmX21wdl9lbmNvZGVfcGljdHVyZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFj a2V0ICpwa3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWRnJhbWUgKnBpY19h cmcsIGludCAqZ290X3BhY2tldCkKIHsKICAgICBNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSA9 IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAgTXBlZ0VuY0NvbnRleHQgICAgKmNvbnN0IHMgPSAmbS0+ czsKKyAgICBNUFZFbmNDb250ZXh0ICAgICpjb25zdCBzID0gJm0tPnM7CiAgICAgaW50IHN0dWZm aW5nX2NvdW50LCByZXQ7Ci0gICAgaW50IGNvbnRleHRfY291bnQgPSBzLT5zbGljZV9jb250ZXh0 X2NvdW50OworICAgIGludCBjb250ZXh0X2NvdW50ID0gcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50 OwogCi0gICAgZmZfbXB2X3VucmVmX3BpY3R1cmUoJnMtPmN1cl9waWMpOworICAgIGZmX21wdl91 bnJlZl9waWN0dXJlKCZzLT5jLmN1cl9waWMpOwogCiAgICAgbS0+dmJ2X2lnbm9yZV9xbWF4ID0g MDsKIApAQCAtMTk0Myw4ICsxOTQ2LDggQEAgaW50IGZmX21wdl9lbmNvZGVfcGljdHVyZShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAKICAgICAvKiBvdXRwdXQ/ICovCiAg ICAgaWYgKHMtPm5ld19waWMtPmRhdGFbMF0pIHsKLSAgICAgICAgaW50IGdyb3dpbmdfYnVmZmVy ID0gY29udGV4dF9jb3VudCA9PSAxICYmICFzLT5kYXRhX3BhcnRpdGlvbmluZzsKLSAgICAgICAg c2l6ZV90IHBrdF9zaXplID0gMTAwMDAgKyBzLT5tYl93aWR0aCAqIHMtPm1iX2hlaWdodCAqCisg ICAgICAgIGludCBncm93aW5nX2J1ZmZlciA9IGNvbnRleHRfY291bnQgPT0gMSAmJiAhcy0+Yy5k YXRhX3BhcnRpdGlvbmluZzsKKyAgICAgICAgc2l6ZV90IHBrdF9zaXplID0gMTAwMDAgKyBzLT5j Lm1iX3dpZHRoICogcy0+Yy5tYl9oZWlnaHQgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChncm93aW5nX2J1ZmZlciA/IDY0IDogKE1BWF9NQl9CWVRFUyArIDEwMCkpOwogICAg ICAgICBpZiAoQ09ORklHX01KUEVHX0VOQ09ERVIgJiYgYXZjdHgtPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX01KUEVHKSB7CiAgICAgICAgICAgICByZXQgPSBmZl9tanBlZ19hZGRfaWNjX3Byb2Zp bGVfc2l6ZShhdmN0eCwgcy0+bmV3X3BpYywgJnBrdF9zaXplKTsKQEAgLTE5NTcsMTMgKzE5NjAs MTMgQEAgaW50IGZmX21wdl9lbmNvZGVfcGljdHVyZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFW UGFja2V0ICpwa3QsCiAgICAgICAgIGlmIChzLT5tYl9pbmZvKSB7CiAgICAgICAgICAgICBzLT5t Yl9pbmZvX3B0ciA9IGF2X3BhY2tldF9uZXdfc2lkZV9kYXRhKHBrdCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFWX1BLVF9EQVRBX0gyNjNfTUJfSU5GTywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPm1iX3dpZHRoKnMtPm1iX2hlaWdodCoxMik7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX3dpZHRoKnMtPmMubWJfaGVpZ2h0 KjEyKTsKICAgICAgICAgICAgIGlmICghcy0+bWJfaW5mb19wdHIpCiAgICAgICAgICAgICAgICAg cmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICAgICAgICAgIHMtPnByZXZfbWJfaW5mbyA9IHMt Pmxhc3RfbWJfaW5mbyA9IHMtPm1iX2luZm9fc2l6ZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAg ICBzLT5waWN0X3R5cGUgPSBzLT5uZXdfcGljLT5waWN0X3R5cGU7CisgICAgICAgIHMtPmMucGlj dF90eXBlID0gcy0+bmV3X3BpYy0+cGljdF90eXBlOwogICAgICAgICAvL2VtbXNfYygpOwogICAg ICAgICBmcmFtZV9zdGFydChtKTsKIHZidl9yZXRyeToKQEAgLTE5NzgsNyArMTk4MSw3IEBAIHZi dl9yZXRyeToKIAogICAgICAgICBmcmFtZV9lbmQobSk7CiAKLSAgICAgICBpZiAoKENPTkZJR19N SlBFR19FTkNPREVSIHx8IENPTkZJR19BTVZfRU5DT0RFUikgJiYgcy0+b3V0X2Zvcm1hdCA9PSBG TVRfTUpQRUcpCisgICAgICAgaWYgKChDT05GSUdfTUpQRUdfRU5DT0RFUiB8fCBDT05GSUdfQU1W X0VOQ09ERVIpICYmIHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfTUpQRUcpCiAgICAgICAgICAgICBm Zl9tanBlZ19lbmNvZGVfcGljdHVyZV90cmFpbGVyKCZzLT5wYiwgbS0+aGVhZGVyX2JpdHMpOwog CiAgICAgICAgIGlmIChhdmN0eC0+cmNfYnVmZmVyX3NpemUpIHsKQEAgLTE5ODgsMjUgKzE5OTEs MjQgQEAgdmJ2X3JldHJ5OgogICAgICAgICAgICAgaW50IG1pbl9zdGVwID0gaHEgPyAxIDogKDE8 PChGRl9MQU1CREFfU0hJRlQgKyA3KSkvMTM5OwogCiAgICAgICAgICAgICBpZiAocHV0X2JpdHNf Y291bnQoJnMtPnBiKSA+IG1heF9zaXplICYmCi0gICAgICAgICAgICAgICAgcy0+bGFtYmRhIDwg bS0+bG1heCkgewotICAgICAgICAgICAgICAgIG0tPm5leHRfbGFtYmRhID0gRkZNQVgocy0+bGFt YmRhICsgbWluX3N0ZXAsIHMtPmxhbWJkYSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocy0+cXNjYWxlICsgMSkgLyBzLT5xc2NhbGUpOworICAgICAgICAgICAgICAg IHMtPmMubGFtYmRhIDwgbS0+bG1heCkgeworICAgICAgICAgICAgICAgIG0tPm5leHRfbGFtYmRh ID0gRkZNQVgocy0+Yy5sYW1iZGEgKyBtaW5fc3RlcCwgcy0+Yy5sYW1iZGEgKgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmMucXNjYWxlICsgMSkgLyBzLT5jLnFz Y2FsZSk7CiAgICAgICAgICAgICAgICAgaWYgKHMtPmFkYXB0aXZlX3F1YW50KSB7Ci0gICAgICAg ICAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg cy0+bWJfaGVpZ2h0ICogcy0+bWJfc3RyaWRlOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgcy0+Yy5tYl9oZWlnaHQgKiBzLT5jLm1iX3N0cmlkZTsgaSsrKQog ICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFtYmRhX3RhYmxlW2ldID0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGRk1BWChzLT5sYW1iZGFfdGFibGVbaV0gKyBtaW5fc3RlcCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5sYW1iZGFfdGFibGVbaV0gKiAocy0+ cXNjYWxlICsgMSkgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnFzY2Fs ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFtYmRhX3RhYmxlW2ld ICogKHMtPmMucXNjYWxlICsgMSkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHMtPmMucXNjYWxlKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcy0+bWJf c2tpcHBlZCA9IDA7ICAgICAgICAvLyBkb25lIGluIGZyYW1lX3N0YXJ0KCkKKyAgICAgICAgICAg ICAgICBzLT5jLm1iX3NraXBwZWQgPSAwOyAgICAgICAgLy8gZG9uZSBpbiBmcmFtZV9zdGFydCgp CiAgICAgICAgICAgICAgICAgLy8gZG9uZSBpbiBlbmNvZGVfcGljdHVyZSgpIHNvIHdlIG11c3Qg dW5kbyBpdAotICAgICAgICAgICAgICAgIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U WVBFX1ApIHsKLSAgICAgICAgICAgICAgICAgICAgcy0+bm9fcm91bmRpbmcgXj0gcy0+ZmxpcGZs b3Bfcm91bmRpbmc7CisgICAgICAgICAgICAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJ Q1RVUkVfVFlQRV9QKSB7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubm9fcm91bmRpbmcgXj0g cy0+Yy5mbGlwZmxvcF9yb3VuZGluZzsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgaWYgKHMtPnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfQikgewotICAgICAgICAgICAg ICAgICAgICBzLT50aW1lX2Jhc2UgICAgICAgPSBzLT5sYXN0X3RpbWVfYmFzZTsKLSAgICAgICAg ICAgICAgICAgICAgcy0+bGFzdF9ub25fYl90aW1lID0gcy0+dGltZSAtIHMtPnBwX3RpbWU7Cisg ICAgICAgICAgICAgICAgaWYgKHMtPmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9CKSB7 CisgICAgICAgICAgICAgICAgICAgIHMtPmMudGltZV9iYXNlICAgICAgID0gcy0+Yy5sYXN0X3Rp bWVfYmFzZTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5sYXN0X25vbl9iX3RpbWUgPSBzLT5j LnRpbWUgLSBzLT5jLnBwX3RpbWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg IG0tPnZidl9pZ25vcmVfcW1heCA9IDE7CiAgICAgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBB Vl9MT0dfVkVSQk9TRSwgInJlZW5jb2RpbmcgZnJhbWUgZHVlIHRvIFZCVlxuIik7CkBAIC0yMDIx LDEwICsyMDIzLDEwIEBAIHZidl9yZXRyeToKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IE1QVl9NQVhfUExBTkVTOyBpKyspCiAgICAgICAgICAgICBhdmN0eC0+ZXJyb3JbaV0gKz0gcy0+ ZW5jb2RpbmdfZXJyb3JbaV07Ci0gICAgICAgIGZmX3NpZGVfZGF0YV9zZXRfZW5jb2Rlcl9zdGF0 cyhwa3QsIHMtPmN1cl9waWMucHRyLT5mLT5xdWFsaXR5LAorICAgICAgICBmZl9zaWRlX2RhdGFf c2V0X2VuY29kZXJfc3RhdHMocGt0LCBzLT5jLmN1cl9waWMucHRyLT5mLT5xdWFsaXR5LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ZW5jb2RpbmdfZXJyb3IsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXZjdHgtPmZsYWdzJkFWX0NP REVDX0ZMQUdfUFNOUikgPyBNUFZfTUFYX1BMQU5FUyA6IDAsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzLT5waWN0X3R5cGUpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcy0+Yy5waWN0X3R5cGUpOwogCiAgICAgICAgIGlmIChhdmN0eC0+ ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MxKQogICAgICAgICAgICAgYXNzZXJ0KHB1dF9iaXRz X2NvdW50KCZzLT5wYikgPT0gbS0+aGVhZGVyX2JpdHMgKyBzLT5tdl9iaXRzICsKQEAgLTIwNDEs NyArMjA0Myw3IEBAIHZidl9yZXRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAg ICAgICAgICB9CiAKLSAgICAgICAgICAgIHN3aXRjaCAocy0+Y29kZWNfaWQpIHsKKyAgICAgICAg ICAgIHN3aXRjaCAocy0+Yy5jb2RlY19pZCkgewogICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19J RF9NUEVHMVZJREVPOgogICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPOgog ICAgICAgICAgICAgICAgIHdoaWxlIChzdHVmZmluZ19jb3VudC0tKSB7CkBAIC0yMDY3LDcgKzIw NjksNyBAQCB2YnZfcmV0cnk6CiAgICAgICAgIC8qIHVwZGF0ZSBNUEVHLTEvMiB2YnZfZGVsYXkg Zm9yIENCUiAqLwogICAgICAgICBpZiAoYXZjdHgtPnJjX21heF9yYXRlICAgICAgICAgICAgICAg ICAgICAgICAgICAmJgogICAgICAgICAgICAgYXZjdHgtPnJjX21pbl9yYXRlID09IGF2Y3R4LT5y Y19tYXhfcmF0ZSAmJgotICAgICAgICAgICAgcy0+b3V0X2Zvcm1hdCA9PSBGTVRfTVBFRzEgICAg ICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgcy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9N UEVHMSAgICAgICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICA5MDAwMExMICogKGF2Y3R4 LT5yY19idWZmZXJfc2l6ZSAtIDEpIDw9CiAgICAgICAgICAgICAgICAgYXZjdHgtPnJjX21heF9y YXRlICogMHhGRkZGTEwpIHsKICAgICAgICAgICAgIEFWQ1BCUHJvcGVydGllcyAqcHJvcHM7CkBA IC0yMDg1LDcgKzIwODcsNyBAQCB2YnZfcmV0cnk6CiAgICAgICAgICAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCBlcnJv ciwgbmVnYXRpdmUgYml0c1xuIik7CiAKLSAgICAgICAgICAgIGF2X2Fzc2VydDEocy0+cmVwZWF0 X2ZpcnN0X2ZpZWxkID09IDApOworICAgICAgICAgICAgYXZfYXNzZXJ0MShzLT5jLnJlcGVhdF9m aXJzdF9maWVsZCA9PSAwKTsKIAogICAgICAgICAgICAgdmJ2X2RlbGF5ID0gYml0cyAqIDkwMDAw IC8gYXZjdHgtPnJjX21heF9yYXRlOwogICAgICAgICAgICAgbWluX2RlbGF5ID0gKG1pbmJpdHMg KiA5MDAwMExMICsgYXZjdHgtPnJjX21heF9yYXRlIC0gMSkgLwpAQCAtMjExNSwxMCArMjExNywx MCBAQCB2YnZfcmV0cnk6CiAgICAgICAgIH0KICAgICAgICAgbS0+dG90YWxfYml0cyArPSBtLT5m cmFtZV9iaXRzOwogCi0gICAgICAgIHBrdC0+cHRzID0gcy0+Y3VyX3BpYy5wdHItPmYtPnB0czsK LSAgICAgICAgcGt0LT5kdXJhdGlvbiA9IHMtPmN1cl9waWMucHRyLT5mLT5kdXJhdGlvbjsKLSAg ICAgICAgaWYgKCFzLT5sb3dfZGVsYXkgJiYgcy0+cGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQ RV9CKSB7Ci0gICAgICAgICAgICBpZiAoIXMtPmN1cl9waWMucHRyLT5jb2RlZF9waWN0dXJlX251 bWJlcikKKyAgICAgICAgcGt0LT5wdHMgPSBzLT5jLmN1cl9waWMucHRyLT5mLT5wdHM7CisgICAg ICAgIHBrdC0+ZHVyYXRpb24gPSBzLT5jLmN1cl9waWMucHRyLT5mLT5kdXJhdGlvbjsKKyAgICAg ICAgaWYgKCFzLT5jLmxvd19kZWxheSAmJiBzLT5jLnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZ UEVfQikgeworICAgICAgICAgICAgaWYgKCFzLT5jLmN1cl9waWMucHRyLT5jb2RlZF9waWN0dXJl X251bWJlcikKICAgICAgICAgICAgICAgICBwa3QtPmR0cyA9IHBrdC0+cHRzIC0gbS0+ZHRzX2Rl bHRhOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHBrdC0+ZHRzID0gbS0+cmVv cmRlcmVkX3B0czsKQEAgLTIxMjgsMTIgKzIxMzAsMTIgQEAgdmJ2X3JldHJ5OgogCiAgICAgICAg IC8vIHRoZSBuby1kZWxheSBjYXNlIGlzIGhhbmRsZWQgaW4gZ2VuZXJpYyBjb2RlCiAgICAgICAg IGlmIChhdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9ERUxBWSkgewot ICAgICAgICAgICAgcmV0ID0gZmZfZW5jb2RlX3Jlb3JkZXJlZF9vcGFxdWUoYXZjdHgsIHBrdCwg cy0+Y3VyX3BpYy5wdHItPmYpOworICAgICAgICAgICAgcmV0ID0gZmZfZW5jb2RlX3Jlb3JkZXJl ZF9vcGFxdWUoYXZjdHgsIHBrdCwgcy0+Yy5jdXJfcGljLnB0ci0+Zik7CiAgICAgICAgICAgICBp ZiAocmV0IDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICB9CiAKLSAg ICAgICAgaWYgKHMtPmN1cl9waWMucHRyLT5mLT5mbGFncyAmIEFWX0ZSQU1FX0ZMQUdfS0VZKQor ICAgICAgICBpZiAocy0+Yy5jdXJfcGljLnB0ci0+Zi0+ZmxhZ3MgJiBBVl9GUkFNRV9GTEFHX0tF WSkKICAgICAgICAgICAgIHBrdC0+ZmxhZ3MgfD0gQVZfUEtUX0ZMQUdfS0VZOwogICAgICAgICBp ZiAocy0+bWJfaW5mbykKICAgICAgICAgICAgIGF2X3BhY2tldF9zaHJpbmtfc2lkZV9kYXRhKHBr dCwgQVZfUEtUX0RBVEFfSDI2M19NQl9JTkZPLCBzLT5tYl9pbmZvX3NpemUpOwpAQCAtMjE0MSw3 ICsyMTQzLDcgQEAgdmJ2X3JldHJ5OgogICAgICAgICBtLT5mcmFtZV9iaXRzID0gMDsKICAgICB9 CiAKLSAgICBmZl9tcHZfdW5yZWZfcGljdHVyZSgmcy0+Y3VyX3BpYyk7CisgICAgZmZfbXB2X3Vu cmVmX3BpY3R1cmUoJnMtPmMuY3VyX3BpYyk7CiAKICAgICBhdl9hc3NlcnQxKChtLT5mcmFtZV9i aXRzICYgNykgPT0gMCk7CiAKQEAgLTIxNTAsNyArMjE1Miw3IEBAIHZidl9yZXRyeToKICAgICBy ZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGRjdF9zaW5nbGVfY29lZmZfZWxpbWlu YXRpb24oTXBlZ0VuY0NvbnRleHQgKnMsCitzdGF0aWMgaW5saW5lIHZvaWQgZGN0X3NpbmdsZV9j b2VmZl9lbGltaW5hdGlvbihNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4sIGludCB0aHJlc2hvbGQpCiB7 CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgdGFiWzY0XSA9IHsKQEAgLTIxNjYsOCArMjE2OCw4IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBkY3Rfc2luZ2xlX2NvZWZmX2VsaW1pbmF0aW9uKE1wZWdFbmND b250ZXh0ICpzLAogICAgIGludCBzY29yZSA9IDA7CiAgICAgaW50IHJ1biA9IDA7CiAgICAgaW50 IGk7Ci0gICAgaW50MTZfdCAqYmxvY2sgPSBzLT5ibG9ja1tuXTsKLSAgICBjb25zdCBpbnQgbGFz dF9pbmRleCA9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisgICAgaW50MTZfdCAqYmxvY2sgPSBz LT5jLmJsb2NrW25dOworICAgIGNvbnN0IGludCBsYXN0X2luZGV4ID0gcy0+Yy5ibG9ja19sYXN0 X2luZGV4W25dOwogICAgIGludCBza2lwX2RjOwogCiAgICAgaWYgKHRocmVzaG9sZCA8IDApIHsK QEAgLTIxODEsNyArMjE4Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkY3Rfc2luZ2xlX2NvZWZm X2VsaW1pbmF0aW9uKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAgICByZXR1cm47CiAKICAgICBm b3IgKGkgPSAwOyBpIDw9IGxhc3RfaW5kZXg7IGkrKykgewotICAgICAgICBjb25zdCBpbnQgaiA9 IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOworICAgICAgICBjb25zdCBpbnQgaiA9 IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CiAgICAgICAgIGNvbnN0IGludCBs ZXZlbCA9IEZGQUJTKGJsb2NrW2pdKTsKICAgICAgICAgaWYgKGxldmVsID09IDEpIHsKICAgICAg ICAgICAgIGlmIChza2lwX2RjICYmIGkgPT0gMCkKQEAgLTIxOTcsMTYgKzIxOTksMTYgQEAgc3Rh dGljIGlubGluZSB2b2lkIGRjdF9zaW5nbGVfY29lZmZfZWxpbWluYXRpb24oTXBlZ0VuY0NvbnRl eHQgKnMsCiAgICAgaWYgKHNjb3JlID49IHRocmVzaG9sZCkKICAgICAgICAgcmV0dXJuOwogICAg IGZvciAoaSA9IHNraXBfZGM7IGkgPD0gbGFzdF9pbmRleDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0 IGludCBqID0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CisgICAgICAgIGNvbnN0 IGludCBqID0gcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKICAgICAgICAgYmxv Y2tbal0gPSAwOwogICAgIH0KICAgICBpZiAoYmxvY2tbMF0pCi0gICAgICAgIHMtPmJsb2NrX2xh c3RfaW5kZXhbbl0gPSAwOworICAgICAgICBzLT5jLmJsb2NrX2xhc3RfaW5kZXhbbl0gPSAwOwog ICAgIGVsc2UKLSAgICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFtuXSA9IC0xOworICAgICAgICBz LT5jLmJsb2NrX2xhc3RfaW5kZXhbbl0gPSAtMTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGNs aXBfY29lZmZzKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywKK3N0YXRpYyBpbmxp bmUgdm9pZCBjbGlwX2NvZWZmcyhjb25zdCBNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90 IGJsb2NrW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxhc3RfaW5kZXgp CiB7CiAgICAgaW50IGk7CkBAIC0yMjE0LDEzICsyMjE2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBjbGlwX2NvZWZmcyhNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssCiAgICAgY29u c3QgaW50IG1pbmxldmVsID0gcy0+bWluX3Fjb2VmZjsKICAgICBpbnQgb3ZlcmZsb3cgPSAwOwog Ci0gICAgaWYgKHMtPm1iX2ludHJhKSB7CisgICAgaWYgKHMtPmMubWJfaW50cmEpIHsKICAgICAg ICAgaSA9IDE7IC8vIHNraXAgY2xpcHBpbmcgb2YgaW50cmEgZGMKICAgICB9IGVsc2UKICAgICAg ICAgaSA9IDA7CiAKICAgICBmb3IgKDsgaSA8PSBsYXN0X2luZGV4OyBpKyspIHsKLSAgICAgICAg Y29uc3QgaW50IGogPSBzLT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAg Y29uc3QgaW50IGogPSBzLT5jLmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOwogICAgICAg ICBpbnQgbGV2ZWwgPSBibG9ja1tqXTsKIAogICAgICAgICBpZiAobGV2ZWwgPiBtYXhsZXZlbCkg ewpAQCAtMjIzNCw4ICsyMjM2LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGNsaXBfY29lZmZzKE1w ZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywKICAgICAgICAgYmxvY2tbal0gPSBsZXZl bDsKICAgICB9CiAKLSAgICBpZiAob3ZlcmZsb3cgJiYgcy0+YXZjdHgtPm1iX2RlY2lzaW9uID09 IEZGX01CX0RFQ0lTSU9OX1NJTVBMRSkKLSAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0df SU5GTywKKyAgICBpZiAob3ZlcmZsb3cgJiYgcy0+Yy5hdmN0eC0+bWJfZGVjaXNpb24gPT0gRkZf TUJfREVDSVNJT05fU0lNUExFKQorICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0lO Rk8sCiAgICAgICAgICAgICAgICAid2FybmluZywgY2xpcHBpbmcgJWQgZGN0IGNvZWZmaWNpZW50 cyB0byAlZC4uJWRcbiIsCiAgICAgICAgICAgICAgICBvdmVyZmxvdywgbWlubGV2ZWwsIG1heGxl dmVsKTsKIH0KQEAgLTIyNjQsNyArMjI2Niw3IEBAIHN0YXRpYyB2b2lkIGdldF92aXN1YWxfd2Vp Z2h0KGludDE2X3QgKndlaWdodCwgY29uc3QgdWludDhfdCAqcHRyLCBpbnQgc3RyaWRlKQogICAg IH0KIH0KIAotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBlbmNvZGVfbWJfaW50ZXJuYWwo TXBlZ0VuY0NvbnRleHQgKnMsCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9t Yl9pbnRlcm5hbChNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3ksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWJfYmxv Y2tfaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IG1iX2Jsb2NrX3dpZHRoLApAQCAtMjI3NiwxNSArMjI3OCwxNSBAQCBzdGF0aWMgYXZf YWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywK IC8qIEludGVybGFjZWQgRENUIGlzIG9ubHkgcG9zc2libGUgd2l0aCBNUEVHLTIgYW5kIE1QRUct NAogICogYW5kIG5laXRoZXIgb2YgdGhlc2UgZW5jb2RlcnMgY3VycmVudGx5IHN1cHBvcnRzIDQ0 NC4gKi8KICNkZWZpbmUgSU5URVJMQUNFRF9EQ1QocykgKChjaHJvbWFfZm9ybWF0ID09IENIUk9N QV80MjAgfHwgY2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIyKSAmJiBcCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAocyktPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNF RF9EQ1QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocyktPmMuYXZjdHgtPmZsYWdzICYg QVZfQ09ERUNfRkxBR19JTlRFUkxBQ0VEX0RDVCkKICAgICBpbnQxNl90IHdlaWdodFsxMl1bNjRd OwogICAgIGludDE2X3Qgb3JpZ1sxMl1bNjRdOwotICAgIGNvbnN0IGludCBtYl94ID0gcy0+bWJf eDsKLSAgICBjb25zdCBpbnQgbWJfeSA9IHMtPm1iX3k7CisgICAgY29uc3QgaW50IG1iX3ggPSBz LT5jLm1iX3g7CisgICAgY29uc3QgaW50IG1iX3kgPSBzLT5jLm1iX3k7CiAgICAgaW50IGk7CiAg ICAgaW50IHNraXBfZGN0WzEyXTsKLSAgICBpbnQgZGN0X29mZnNldCA9IHMtPmxpbmVzaXplICog ODsgLy8gZGVmYXVsdCBmb3IgcHJvZ3Jlc3NpdmUgZnJhbWVzCi0gICAgaW50IHV2X2RjdF9vZmZz ZXQgPSBzLT51dmxpbmVzaXplICogODsKKyAgICBpbnQgZGN0X29mZnNldCA9IHMtPmMubGluZXNp emUgKiA4OyAvLyBkZWZhdWx0IGZvciBwcm9ncmVzc2l2ZSBmcmFtZXMKKyAgICBpbnQgdXZfZGN0 X29mZnNldCA9IHMtPmMudXZsaW5lc2l6ZSAqIDg7CiAgICAgY29uc3QgdWludDhfdCAqcHRyX3ks ICpwdHJfY2IsICpwdHJfY3I7CiAgICAgcHRyZGlmZl90IHdyYXBfeSwgd3JhcF9jOwogCkBAIC0y MjkyLDM3ICsyMjk0LDM3IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQgZW5jb2RlX21i X2ludGVybmFsKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAgICBza2lwX2RjdFtpXSA9IHMtPnNr aXBkY3Q7CiAKICAgICBpZiAocy0+YWRhcHRpdmVfcXVhbnQpIHsKLSAgICAgICAgY29uc3QgaW50 IGxhc3RfcXAgPSBzLT5xc2NhbGU7Ci0gICAgICAgIGNvbnN0IGludCBtYl94eSA9IG1iX3ggKyBt Yl95ICogcy0+bWJfc3RyaWRlOworICAgICAgICBjb25zdCBpbnQgbGFzdF9xcCA9IHMtPmMucXNj YWxlOworICAgICAgICBjb25zdCBpbnQgbWJfeHkgPSBtYl94ICsgbWJfeSAqIHMtPmMubWJfc3Ry aWRlOwogCi0gICAgICAgIHMtPmxhbWJkYSA9IHMtPmxhbWJkYV90YWJsZVttYl94eV07Ci0gICAg ICAgIHMtPmxhbWJkYTIgPSAocy0+bGFtYmRhICogcy0+bGFtYmRhICsgRkZfTEFNQkRBX1NDQUxF IC8gMikgPj4KLSAgICAgICAgICAgICAgICAgICAgIEZGX0xBTUJEQV9TSElGVDsKKyAgICAgICAg cy0+Yy5sYW1iZGEgPSBzLT5sYW1iZGFfdGFibGVbbWJfeHldOworICAgICAgICBzLT5jLmxhbWJk YTIgPSAocy0+Yy5sYW1iZGEgKiBzLT5jLmxhbWJkYSArIEZGX0xBTUJEQV9TQ0FMRSAvIDIpID4+ CisgICAgICAgICAgICAgICAgICAgICAgIEZGX0xBTUJEQV9TSElGVDsKIAogICAgICAgICBpZiAo IShzLT5tcHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19RUF9SRCkpIHsKLSAgICAgICAgICAgIHMtPmRx dWFudCA9IHMtPmN1cl9waWMucXNjYWxlX3RhYmxlW21iX3h5XSAtIGxhc3RfcXA7CisgICAgICAg ICAgICBzLT5kcXVhbnQgPSBzLT5jLmN1cl9waWMucXNjYWxlX3RhYmxlW21iX3h5XSAtIGxhc3Rf cXA7CiAKLSAgICAgICAgICAgIGlmIChzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYzKSB7CisgICAg ICAgICAgICBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzKSB7CiAgICAgICAgICAgICAg ICAgcy0+ZHF1YW50ID0gYXZfY2xpcChzLT5kcXVhbnQsIC0yLCAyKTsKIAotICAgICAgICAgICAg ICAgIGlmIChzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkgewotICAgICAgICAgICAg ICAgICAgICBpZiAoIXMtPm1iX2ludHJhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo cy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHMtPmRxdWFudCAmIDEgfHwgcy0+bXZfZGlyICYgTVZfRElSRUNUKQorICAg ICAgICAgICAgICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0KSB7Cisg ICAgICAgICAgICAgICAgICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgeworICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmRxdWFudCAmIDEgfHwgcy0+Yy5tdl9kaXIg JiBNVl9ESVJFQ1QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmRxdWFudCA9 IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBp ZiAocy0+bXZfdHlwZSA9PSBNVl9UWVBFXzhYOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IChzLT5jLm12X3R5cGUgPT0gTVZfVFlQRV84WDgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcy0+ZHF1YW50ID0gMDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmZl9zZXRfcXNjYWxlKHMsIGxh c3RfcXAgKyBzLT5kcXVhbnQpOworICAgICAgICBmZl9zZXRfcXNjYWxlKCZzLT5jLCBsYXN0X3Fw ICsgcy0+ZHF1YW50KTsKICAgICB9IGVsc2UgaWYgKHMtPm1wdl9mbGFncyAmIEZGX01QVl9GTEFH X1FQX1JEKQotICAgICAgICBmZl9zZXRfcXNjYWxlKHMsIHMtPnFzY2FsZSArIHMtPmRxdWFudCk7 CisgICAgICAgIGZmX3NldF9xc2NhbGUoJnMtPmMsIHMtPmMucXNjYWxlICsgcy0+ZHF1YW50KTsK IAotICAgIHdyYXBfeSA9IHMtPmxpbmVzaXplOwotICAgIHdyYXBfYyA9IHMtPnV2bGluZXNpemU7 CisgICAgd3JhcF95ID0gcy0+Yy5saW5lc2l6ZTsKKyAgICB3cmFwX2MgPSBzLT5jLnV2bGluZXNp emU7CiAgICAgcHRyX3kgID0gcy0+bmV3X3BpYy0+ZGF0YVswXSArCiAgICAgICAgICAgICAgKG1i X3kgKiAxNiAqIHdyYXBfeSkgICAgICAgICAgICAgICsgbWJfeCAqIDE2OwogICAgIHB0cl9jYiA9 IHMtPm5ld19waWMtPmRhdGFbMV0gKwpAQCAtMjMzMCwyMiArMjMzMiwyMyBAQCBzdGF0aWMgYXZf YWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9pbnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywK ICAgICBwdHJfY3IgPSBzLT5uZXdfcGljLT5kYXRhWzJdICsKICAgICAgICAgICAgICAobWJfeSAq IG1iX2Jsb2NrX2hlaWdodCAqIHdyYXBfYykgKyBtYl94ICogbWJfYmxvY2tfd2lkdGg7CiAKLSAg ICBpZigobWJfeCAqIDE2ICsgMTYgPiBzLT53aWR0aCB8fCBtYl95ICogMTYgKyAxNiA+IHMtPmhl aWdodCkgJiYgcy0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfQU1WKXsKLSAgICAgICAgdWludDhf dCAqZWJ1ZiA9IHMtPnNjLmVkZ2VfZW11X2J1ZmZlciArIDM4ICogd3JhcF95OwotICAgICAgICBp bnQgY3cgPSAocy0+d2lkdGggICsgY2hyb21hX3hfc2hpZnQpID4+IGNocm9tYV94X3NoaWZ0Owot ICAgICAgICBpbnQgY2ggPSAocy0+aGVpZ2h0ICsgY2hyb21hX3lfc2hpZnQpID4+IGNocm9tYV95 X3NoaWZ0OwotICAgICAgICBzLT52ZHNwLmVtdWxhdGVkX2VkZ2VfbWMoZWJ1ZiwgcHRyX3ksCisg ICAgaWYgKChtYl94ICogMTYgKyAxNiA+IHMtPmMud2lkdGggfHwgbWJfeSAqIDE2ICsgMTYgPiBz LT5jLmhlaWdodCkgJiYKKyAgICAgICAgcy0+Yy5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9BTVYp IHsKKyAgICAgICAgdWludDhfdCAqZWJ1ZiA9IHMtPmMuc2MuZWRnZV9lbXVfYnVmZmVyICsgMzgg KiB3cmFwX3k7CisgICAgICAgIGludCBjdyA9IChzLT5jLndpZHRoICArIGNocm9tYV94X3NoaWZ0 KSA+PiBjaHJvbWFfeF9zaGlmdDsKKyAgICAgICAgaW50IGNoID0gKHMtPmMuaGVpZ2h0ICsgY2hy b21hX3lfc2hpZnQpID4+IGNocm9tYV95X3NoaWZ0OworICAgICAgICBzLT5jLnZkc3AuZW11bGF0 ZWRfZWRnZV9tYyhlYnVmLCBwdHJfeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdyYXBfeSwgd3JhcF95LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2 LCBtYl94ICogMTYsIG1iX3kgKiAxNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHMtPndpZHRoLCBzLT5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cy0+Yy53aWR0aCwgcy0+Yy5oZWlnaHQpOwogICAgICAgICBwdHJfeSA9IGVidWY7Ci0gICAgICAg IHMtPnZkc3AuZW11bGF0ZWRfZWRnZV9tYyhlYnVmICsgMTYgKiB3cmFwX3ksIHB0cl9jYiwKKyAg ICAgICAgcy0+Yy52ZHNwLmVtdWxhdGVkX2VkZ2VfbWMoZWJ1ZiArIDE2ICogd3JhcF95LCBwdHJf Y2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX2MsIHdyYXBfYywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iX2Jsb2NrX3dpZHRoLCBtYl9ibG9ja19o ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYl94ICogbWJfYmxvY2tf d2lkdGgsIG1iX3kgKiBtYl9ibG9ja19oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjdywgY2gpOwogICAgICAgICBwdHJfY2IgPSBlYnVmICsgMTYgKiB3cmFwX3k7Ci0g ICAgICAgIHMtPnZkc3AuZW11bGF0ZWRfZWRnZV9tYyhlYnVmICsgMTYgKiB3cmFwX3kgKyAxNiwg cHRyX2NyLAorICAgICAgICBzLT5jLnZkc3AuZW11bGF0ZWRfZWRnZV9tYyhlYnVmICsgMTYgKiB3 cmFwX3kgKyAxNiwgcHRyX2NyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3Jh cF9jLCB3cmFwX2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYl9ibG9ja193 aWR0aCwgbWJfYmxvY2tfaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWJfeCAqIG1iX2Jsb2NrX3dpZHRoLCBtYl95ICogbWJfYmxvY2tfaGVpZ2h0LApAQCAtMjM1Mywx MSArMjM1NiwxMSBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9pbnRl cm5hbChNcGVnRW5jQ29udGV4dCAqcywKICAgICAgICAgcHRyX2NyID0gZWJ1ZiArIDE2ICogd3Jh cF95ICsgMTY7CiAgICAgfQogCi0gICAgaWYgKHMtPm1iX2ludHJhKSB7CisgICAgaWYgKHMtPmMu bWJfaW50cmEpIHsKICAgICAgICAgaWYgKElOVEVSTEFDRURfRENUKHMpKSB7CiAgICAgICAgICAg ICBpbnQgcHJvZ3Jlc3NpdmVfc2NvcmUsIGludGVybGFjZWRfc2NvcmU7CiAKLSAgICAgICAgICAg IHMtPmludGVybGFjZWRfZGN0ID0gMDsKKyAgICAgICAgICAgIHMtPmMuaW50ZXJsYWNlZF9kY3Qg PSAwOwogICAgICAgICAgICAgcHJvZ3Jlc3NpdmVfc2NvcmUgPSBzLT5pbGRjdF9jbXBbMV0ocywg cHRyX3ksIE5VTEwsIHdyYXBfeSwgOCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzLT5pbGRjdF9jbXBbMV0ocywgcHRyX3kgKyB3cmFwX3kgKiA4LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgd3JhcF95LCA4KSAtIDQwMDsK QEAgLTIzNjgsNyArMjM3MSw3IEBAIHN0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQgZW5jb2Rl X21iX2ludGVybmFsKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5pbGRjdF9jbXBbMV0ocywgcHRyX3kgKyB3cmFwX3ksCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCB3cmFwX3kgKiAy LCA4KTsKICAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3NpdmVfc2NvcmUgPiBpbnRlcmxhY2Vk X3Njb3JlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHMtPmludGVybGFjZWRfZGN0ID0gMTsKKyAg ICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRlcmxhY2VkX2RjdCA9IDE7CiAKICAgICAgICAgICAg ICAgICAgICAgZGN0X29mZnNldCA9IHdyYXBfeTsKICAgICAgICAgICAgICAgICAgICAgdXZfZGN0 X29mZnNldCA9IHdyYXBfYzsKQEAgLTIzODAsMjcgKzIzODMsMjcgQEAgc3RhdGljIGF2X2Fsd2F5 c19pbmxpbmUgdm9pZCBlbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAg ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Ymxv Y2tbMF0sIHB0cl95LCAgICAgICAgICAgICAgICAgIHdyYXBfeSk7Ci0gICAgICAgIHMtPnBkc3Au Z2V0X3BpeGVscyhzLT5ibG9ja1sxXSwgcHRyX3kgKyA4LCAgICAgICAgICAgICAgd3JhcF95KTsK LSAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmJsb2NrWzJdLCBwdHJfeSArIGRjdF9vZmZz ZXQsICAgICB3cmFwX3kpOwotICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+YmxvY2tbM10s IHB0cl95ICsgZGN0X29mZnNldCArIDgsIHdyYXBfeSk7CisgICAgICAgIHMtPnBkc3AuZ2V0X3Bp eGVscyhzLT5jLmJsb2NrWzBdLCBwdHJfeSwgICAgICAgICAgICAgICAgICB3cmFwX3kpOworICAg ICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1sxXSwgcHRyX3kgKyA4LCAgICAgICAg ICAgICAgd3JhcF95KTsKKyAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmMuYmxvY2tbMl0s IHB0cl95ICsgZGN0X29mZnNldCwgICAgIHdyYXBfeSk7CisgICAgICAgIHMtPnBkc3AuZ2V0X3Bp eGVscyhzLT5jLmJsb2NrWzNdLCBwdHJfeSArIGRjdF9vZmZzZXQgKyA4LCB3cmFwX3kpOwogCi0g ICAgICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dSQVkpIHsKKyAgICAg ICAgaWYgKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HUkFZKSB7CiAgICAgICAg ICAgICBza2lwX2RjdFs0XSA9IDE7CiAgICAgICAgICAgICBza2lwX2RjdFs1XSA9IDE7CiAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+YmxvY2tbNF0s IHB0cl9jYiwgd3JhcF9jKTsKLSAgICAgICAgICAgIHMtPnBkc3AuZ2V0X3BpeGVscyhzLT5ibG9j a1s1XSwgcHRyX2NyLCB3cmFwX2MpOworICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMt PmMuYmxvY2tbNF0sIHB0cl9jYiwgd3JhcF9jKTsKKyAgICAgICAgICAgIHMtPnBkc3AuZ2V0X3Bp eGVscyhzLT5jLmJsb2NrWzVdLCBwdHJfY3IsIHdyYXBfYyk7CiAgICAgICAgICAgICBpZiAoY2hy b21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIyKSB7Ci0gICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRf cGl4ZWxzKHMtPmJsb2NrWzZdLCBwdHJfY2IgKyB1dl9kY3Rfb2Zmc2V0LCB3cmFwX2MpOwotICAg ICAgICAgICAgICAgIHMtPnBkc3AuZ2V0X3BpeGVscyhzLT5ibG9ja1s3XSwgcHRyX2NyICsgdXZf ZGN0X29mZnNldCwgd3JhcF9jKTsKKyAgICAgICAgICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMo cy0+Yy5ibG9ja1s2XSwgcHRyX2NiICsgdXZfZGN0X29mZnNldCwgd3JhcF9jKTsKKyAgICAgICAg ICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1s3XSwgcHRyX2NyICsgdXZfZGN0 X29mZnNldCwgd3JhcF9jKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hyb21hX2Zvcm1hdCA9 PSBDSFJPTUFfNDQ0KSB7Ci0gICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmJs b2NrWyA2XSwgcHRyX2NiICsgOCwgd3JhcF9jKTsKLSAgICAgICAgICAgICAgICBzLT5wZHNwLmdl dF9waXhlbHMocy0+YmxvY2tbIDddLCBwdHJfY3IgKyA4LCB3cmFwX2MpOwotICAgICAgICAgICAg ICAgIHMtPnBkc3AuZ2V0X3BpeGVscyhzLT5ibG9ja1sgOF0sIHB0cl9jYiArIHV2X2RjdF9vZmZz ZXQsIHdyYXBfYyk7Ci0gICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmJsb2Nr WyA5XSwgcHRyX2NyICsgdXZfZGN0X29mZnNldCwgd3JhcF9jKTsKLSAgICAgICAgICAgICAgICBz LT5wZHNwLmdldF9waXhlbHMocy0+YmxvY2tbMTBdLCBwdHJfY2IgKyB1dl9kY3Rfb2Zmc2V0ICsg OCwgd3JhcF9jKTsKLSAgICAgICAgICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+YmxvY2tb MTFdLCBwdHJfY3IgKyB1dl9kY3Rfb2Zmc2V0ICsgOCwgd3JhcF9jKTsKKyAgICAgICAgICAgICAg ICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1sgNl0sIHB0cl9jYiArIDgsIHdyYXBfYyk7 CisgICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmMuYmxvY2tbIDddLCBwdHJf Y3IgKyA4LCB3cmFwX2MpOworICAgICAgICAgICAgICAgIHMtPnBkc3AuZ2V0X3BpeGVscyhzLT5j LmJsb2NrWyA4XSwgcHRyX2NiICsgdXZfZGN0X29mZnNldCwgd3JhcF9jKTsKKyAgICAgICAgICAg ICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1sgOV0sIHB0cl9jciArIHV2X2RjdF9v ZmZzZXQsIHdyYXBfYyk7CisgICAgICAgICAgICAgICAgcy0+cGRzcC5nZXRfcGl4ZWxzKHMtPmMu YmxvY2tbMTBdLCBwdHJfY2IgKyB1dl9kY3Rfb2Zmc2V0ICsgOCwgd3JhcF9jKTsKKyAgICAgICAg ICAgICAgICBzLT5wZHNwLmdldF9waXhlbHMocy0+Yy5ibG9ja1sxMV0sIHB0cl9jciArIHV2X2Rj dF9vZmZzZXQgKyA4LCB3cmFwX2MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBl bHNlIHsKQEAgLTI0MDgsNDEgKzI0MTEsNDEgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9p ZCBlbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgIHFwZWxfbWNf ZnVuYyAoKm9wX3FwaXgpWzE2XTsKICAgICAgICAgdWludDhfdCAqZGVzdF95LCAqZGVzdF9jYiwg KmRlc3RfY3I7CiAKLSAgICAgICAgZGVzdF95ICA9IHMtPmRlc3RbMF07Ci0gICAgICAgIGRlc3Rf Y2IgPSBzLT5kZXN0WzFdOwotICAgICAgICBkZXN0X2NyID0gcy0+ZGVzdFsyXTsKKyAgICAgICAg ZGVzdF95ICA9IHMtPmMuZGVzdFswXTsKKyAgICAgICAgZGVzdF9jYiA9IHMtPmMuZGVzdFsxXTsK KyAgICAgICAgZGVzdF9jciA9IHMtPmMuZGVzdFsyXTsKIAotICAgICAgICBpZiAoKCFzLT5ub19y b3VuZGluZykgfHwgcy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7Ci0gICAgICAg ICAgICBvcF9waXggID0gcy0+aGRzcC5wdXRfcGl4ZWxzX3RhYjsKLSAgICAgICAgICAgIG9wX3Fw aXggPSBzLT5xZHNwLnB1dF9xcGVsX3BpeGVsc190YWI7CisgICAgICAgIGlmICgoIXMtPmMubm9f cm91bmRpbmcpIHx8IHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAg ICAgICAgICBvcF9waXggID0gcy0+Yy5oZHNwLnB1dF9waXhlbHNfdGFiOworICAgICAgICAgICAg b3BfcXBpeCA9IHMtPmMucWRzcC5wdXRfcXBlbF9waXhlbHNfdGFiOwogICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgb3BfcGl4ICA9IHMtPmhkc3AucHV0X25vX3JuZF9waXhlbHNfdGFiOwot ICAgICAgICAgICAgb3BfcXBpeCA9IHMtPnFkc3AucHV0X25vX3JuZF9xcGVsX3BpeGVsc190YWI7 CisgICAgICAgICAgICBvcF9waXggID0gcy0+Yy5oZHNwLnB1dF9ub19ybmRfcGl4ZWxzX3RhYjsK KyAgICAgICAgICAgIG9wX3FwaXggPSBzLT5jLnFkc3AucHV0X25vX3JuZF9xcGVsX3BpeGVsc190 YWI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocy0+bXZfZGlyICYgTVZfRElSX0ZPUldBUkQp IHsKLSAgICAgICAgICAgIGZmX21wdl9tb3Rpb24ocywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2Ny LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X3BpYy5kYXRhLAorICAgICAg ICBpZiAocy0+Yy5tdl9kaXIgJiBNVl9ESVJfRk9SV0FSRCkgeworICAgICAgICAgICAgZmZfbXB2 X21vdGlvbigmcy0+YywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2NyLCAwLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBzLT5jLmxhc3RfcGljLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wX3BpeCwgb3BfcXBpeCk7Ci0gICAgICAgICAgICBvcF9waXggID0gcy0+aGRzcC5hdmdf cGl4ZWxzX3RhYjsKLSAgICAgICAgICAgIG9wX3FwaXggPSBzLT5xZHNwLmF2Z19xcGVsX3BpeGVs c190YWI7CisgICAgICAgICAgICBvcF9waXggID0gcy0+Yy5oZHNwLmF2Z19waXhlbHNfdGFiOwor ICAgICAgICAgICAgb3BfcXBpeCA9IHMtPmMucWRzcC5hdmdfcXBlbF9waXhlbHNfdGFiOwogICAg ICAgICB9Ci0gICAgICAgIGlmIChzLT5tdl9kaXIgJiBNVl9ESVJfQkFDS1dBUkQpIHsKLSAgICAg ICAgICAgIGZmX21wdl9tb3Rpb24ocywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2NyLCAxLAotICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5uZXh0X3BpYy5kYXRhLAorICAgICAgICBpZiAocy0+ Yy5tdl9kaXIgJiBNVl9ESVJfQkFDS1dBUkQpIHsKKyAgICAgICAgICAgIGZmX21wdl9tb3Rpb24o JnMtPmMsIGRlc3RfeSwgZGVzdF9jYiwgZGVzdF9jciwgMSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+Yy5uZXh0X3BpYy5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9w aXgsIG9wX3FwaXgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKElOVEVSTEFDRURfRENUKHMp KSB7CiAgICAgICAgICAgICBpbnQgcHJvZ3Jlc3NpdmVfc2NvcmUsIGludGVybGFjZWRfc2NvcmU7 CiAKLSAgICAgICAgICAgIHMtPmludGVybGFjZWRfZGN0ID0gMDsKKyAgICAgICAgICAgIHMtPmMu aW50ZXJsYWNlZF9kY3QgPSAwOwogICAgICAgICAgICAgcHJvZ3Jlc3NpdmVfc2NvcmUgPSBzLT5p bGRjdF9jbXBbMF0ocywgZGVzdF95LCBwdHJfeSwgd3JhcF95LCA4KSArCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMtPmlsZGN0X2NtcFswXShzLCBkZXN0X3kgKyB3cmFwX3kgKiA4 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyX3kg KyB3cmFwX3kgKiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd3JhcF95LCA4KSAtIDQwMDsKIAotICAgICAgICAgICAgaWYgKHMtPmF2Y3R4LT5pbGRj dF9jbXAgPT0gRkZfQ01QX1ZTU0UpCisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+aWxkY3Rf Y21wID09IEZGX0NNUF9WU1NFKQogICAgICAgICAgICAgICAgIHByb2dyZXNzaXZlX3Njb3JlIC09 IDQwMDsKIAogICAgICAgICAgICAgaWYgKHByb2dyZXNzaXZlX3Njb3JlID4gMCkgewpAQCAtMjQ1 Myw3ICsyNDU2LDcgQEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBlbmNvZGVfbWJfaW50 ZXJuYWwoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3cmFwX3kgKiAyLCA4KTsKIAogICAgICAgICAgICAgICAgIGlm IChwcm9ncmVzc2l2ZV9zY29yZSA+IGludGVybGFjZWRfc2NvcmUpIHsKLSAgICAgICAgICAgICAg ICAgICAgcy0+aW50ZXJsYWNlZF9kY3QgPSAxOworICAgICAgICAgICAgICAgICAgICBzLT5jLmlu dGVybGFjZWRfZGN0ID0gMTsKIAogICAgICAgICAgICAgICAgICAgICBkY3Rfb2Zmc2V0ID0gd3Jh cF95OwogICAgICAgICAgICAgICAgICAgICB1dl9kY3Rfb2Zmc2V0ID0gd3JhcF9jOwpAQCAtMjQ2 NCw1MSArMjQ2Nyw1MSBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9p bnRlcm5hbChNcGVnRW5jQ29udGV4dCAqcywKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g ICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbMF0sIHB0cl95LCBkZXN0X3ksIHdy YXBfeSk7Ci0gICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbMV0sIHB0cl95ICsg OCwgZGVzdF95ICsgOCwgd3JhcF95KTsKLSAgICAgICAgcy0+cGRzcC5kaWZmX3BpeGVscyhzLT5i bG9ja1syXSwgcHRyX3kgKyBkY3Rfb2Zmc2V0LAorICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxz KHMtPmMuYmxvY2tbMF0sIHB0cl95LCBkZXN0X3ksIHdyYXBfeSk7CisgICAgICAgIHMtPnBkc3Au ZGlmZl9waXhlbHMocy0+Yy5ibG9ja1sxXSwgcHRyX3kgKyA4LCBkZXN0X3kgKyA4LCB3cmFwX3kp OworICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxzKHMtPmMuYmxvY2tbMl0sIHB0cl95ICsgZGN0 X29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3kgKyBkY3Rfb2Zmc2V0 LCB3cmFwX3kpOwotICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxzKHMtPmJsb2NrWzNdLCBwdHJf eSArIGRjdF9vZmZzZXQgKyA4LAorICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxzKHMtPmMuYmxv Y2tbM10sIHB0cl95ICsgZGN0X29mZnNldCArIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVzdF95ICsgZGN0X29mZnNldCArIDgsIHdyYXBfeSk7CiAKLSAgICAgICAgaWYgKHMtPmF2 Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR1JBWSkgeworICAgICAgICBpZiAocy0+Yy5hdmN0 eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dSQVkpIHsKICAgICAgICAgICAgIHNraXBfZGN0WzRd ID0gMTsKICAgICAgICAgICAgIHNraXBfZGN0WzVdID0gMTsKICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbNF0sIHB0cl9jYiwgZGVzdF9j Yiwgd3JhcF9jKTsKLSAgICAgICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbNV0s IHB0cl9jciwgZGVzdF9jciwgd3JhcF9jKTsKKyAgICAgICAgICAgIHMtPnBkc3AuZGlmZl9waXhl bHMocy0+Yy5ibG9ja1s0XSwgcHRyX2NiLCBkZXN0X2NiLCB3cmFwX2MpOworICAgICAgICAgICAg cy0+cGRzcC5kaWZmX3BpeGVscyhzLT5jLmJsb2NrWzVdLCBwdHJfY3IsIGRlc3RfY3IsIHdyYXBf Yyk7CiAgICAgICAgICAgICBpZiAoIWNocm9tYV95X3NoaWZ0KSB7IC8qIDQyMiAqLwotICAgICAg ICAgICAgICAgIHMtPnBkc3AuZGlmZl9waXhlbHMocy0+YmxvY2tbNl0sIHB0cl9jYiArIHV2X2Rj dF9vZmZzZXQsCisgICAgICAgICAgICAgICAgcy0+cGRzcC5kaWZmX3BpeGVscyhzLT5jLmJsb2Nr WzZdLCBwdHJfY2IgKyB1dl9kY3Rfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVzdF9jYiArIHV2X2RjdF9vZmZzZXQsIHdyYXBfYyk7Ci0gICAgICAgICAgICAg ICAgcy0+cGRzcC5kaWZmX3BpeGVscyhzLT5ibG9ja1s3XSwgcHRyX2NyICsgdXZfZGN0X29mZnNl dCwKKyAgICAgICAgICAgICAgICBzLT5wZHNwLmRpZmZfcGl4ZWxzKHMtPmMuYmxvY2tbN10sIHB0 cl9jciArIHV2X2RjdF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXN0X2NyICsgdXZfZGN0X29mZnNldCwgd3JhcF9jKTsKICAgICAgICAgICAgIH0KICAgICAg ICAgfQogICAgICAgICAvKiBwcmUgcXVhbnRpemF0aW9uICovCi0gICAgICAgIGlmIChzLT5tY19t Yl92YXJbcy0+bWJfc3RyaWRlICogbWJfeSArIG1iX3hdIDwgMiAqIHMtPnFzY2FsZSAqIHMtPnFz Y2FsZSkgeworICAgICAgICBpZiAocy0+bWNfbWJfdmFyW3MtPmMubWJfc3RyaWRlICogbWJfeSAr IG1iX3hdIDwgMiAqIHMtPmMucXNjYWxlICogcy0+Yy5xc2NhbGUpIHsKICAgICAgICAgICAgIC8v IEZJWE1FIG9wdGltaXplCi0gICAgICAgICAgICBpZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJf eSwgZGVzdF95LCB3cmFwX3ksIDgpIDwgMjAgKiBzLT5xc2NhbGUpCisgICAgICAgICAgICBpZiAo cy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfeSwgZGVzdF95LCB3cmFwX3ksIDgpIDwgMjAgKiBzLT5j LnFzY2FsZSkKICAgICAgICAgICAgICAgICBza2lwX2RjdFswXSA9IDE7Ci0gICAgICAgICAgICBp ZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfeSArIDgsIGRlc3RfeSArIDgsIHdyYXBfeSwgOCkg PCAyMCAqIHMtPnFzY2FsZSkKKyAgICAgICAgICAgIGlmIChzLT5zYWRfY21wWzFdKE5VTEwsIHB0 cl95ICsgOCwgZGVzdF95ICsgOCwgd3JhcF95LCA4KSA8IDIwICogcy0+Yy5xc2NhbGUpCiAgICAg ICAgICAgICAgICAgc2tpcF9kY3RbMV0gPSAxOwogICAgICAgICAgICAgaWYgKHMtPnNhZF9jbXBb MV0oTlVMTCwgcHRyX3kgKyBkY3Rfb2Zmc2V0LCBkZXN0X3kgKyBkY3Rfb2Zmc2V0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd3JhcF95LCA4KSA8IDIwICogcy0+cXNjYWxlKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcF95LCA4KSA8IDIwICogcy0+Yy5xc2NhbGUp CiAgICAgICAgICAgICAgICAgc2tpcF9kY3RbMl0gPSAxOwogICAgICAgICAgICAgaWYgKHMtPnNh ZF9jbXBbMV0oTlVMTCwgcHRyX3kgKyBkY3Rfb2Zmc2V0ICsgOCwgZGVzdF95ICsgZGN0X29mZnNl dCArIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX3ksIDgpIDwgMjAgKiBz LT5xc2NhbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX3ksIDgpIDwgMjAg KiBzLT5jLnFzY2FsZSkKICAgICAgICAgICAgICAgICBza2lwX2RjdFszXSA9IDE7Ci0gICAgICAg ICAgICBpZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfY2IsIGRlc3RfY2IsIHdyYXBfYywgOCkg PCAyMCAqIHMtPnFzY2FsZSkKKyAgICAgICAgICAgIGlmIChzLT5zYWRfY21wWzFdKE5VTEwsIHB0 cl9jYiwgZGVzdF9jYiwgd3JhcF9jLCA4KSA8IDIwICogcy0+Yy5xc2NhbGUpCiAgICAgICAgICAg ICAgICAgc2tpcF9kY3RbNF0gPSAxOwotICAgICAgICAgICAgaWYgKHMtPnNhZF9jbXBbMV0oTlVM TCwgcHRyX2NyLCBkZXN0X2NyLCB3cmFwX2MsIDgpIDwgMjAgKiBzLT5xc2NhbGUpCisgICAgICAg ICAgICBpZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfY3IsIGRlc3RfY3IsIHdyYXBfYywgOCkg PCAyMCAqIHMtPmMucXNjYWxlKQogICAgICAgICAgICAgICAgIHNraXBfZGN0WzVdID0gMTsKICAg ICAgICAgICAgIGlmICghY2hyb21hX3lfc2hpZnQpIHsgLyogNDIyICovCiAgICAgICAgICAgICAg ICAgaWYgKHMtPnNhZF9jbXBbMV0oTlVMTCwgcHRyX2NiICsgdXZfZGN0X29mZnNldCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X2NiICsgdXZfZGN0X29mZnNldCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX2MsIDgpIDwgMjAgKiBzLT5xc2Nh bGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcF9jLCA4KSA8IDIwICog cy0+Yy5xc2NhbGUpCiAgICAgICAgICAgICAgICAgICAgIHNraXBfZGN0WzZdID0gMTsKICAgICAg ICAgICAgICAgICBpZiAocy0+c2FkX2NtcFsxXShOVUxMLCBwdHJfY3IgKyB1dl9kY3Rfb2Zmc2V0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfY3IgKyB1dl9kY3Rfb2Zm c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBfYywgOCkgPCAyMCAq IHMtPnFzY2FsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX2MsIDgp IDwgMjAgKiBzLT5jLnFzY2FsZSkKICAgICAgICAgICAgICAgICAgICAgc2tpcF9kY3RbN10gPSAx OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNTM1LDEwMiArMjUzOCwxMDIgQEAgc3Rh dGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBlbmNvZGVfbWJfaW50ZXJuYWwoTXBlZ0VuY0NvbnRl eHQgKnMsCiAgICAgICAgICAgICAgICAgZ2V0X3Zpc3VhbF93ZWlnaHQod2VpZ2h0WzddLCBwdHJf Y3IgKyB1dl9kY3Rfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy YXBfYyk7CiAgICAgICAgIH0KLSAgICAgICAgbWVtY3B5KG9yaWdbMF0sIHMtPmJsb2NrWzBdLCBz aXplb2YoaW50MTZfdCkgKiA2NCAqIG1iX2Jsb2NrX2NvdW50KTsKKyAgICAgICAgbWVtY3B5KG9y aWdbMF0sIHMtPmMuYmxvY2tbMF0sIHNpemVvZihpbnQxNl90KSAqIDY0ICogbWJfYmxvY2tfY291 bnQpOwogICAgIH0KIAogICAgIC8qIERDVCAmIHF1YW50aXplICovCi0gICAgYXZfYXNzZXJ0Mihz LT5vdXRfZm9ybWF0ICE9IEZNVF9NSlBFRyB8fCBzLT5xc2NhbGUgPT0gOCk7CisgICAgYXZfYXNz ZXJ0MihzLT5jLm91dF9mb3JtYXQgIT0gRk1UX01KUEVHIHx8IHMtPmMucXNjYWxlID09IDgpOwog ICAgIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1iX2Jsb2NrX2NvdW50OyBpKyspIHsKICAg ICAgICAgICAgIGlmICghc2tpcF9kY3RbaV0pIHsKICAgICAgICAgICAgICAgICBpbnQgb3ZlcmZs b3c7Ci0gICAgICAgICAgICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFtpXSA9IHMtPmRjdF9xdWFu dGl6ZShzLCBzLT5ibG9ja1tpXSwgaSwgcy0+cXNjYWxlLCAmb3ZlcmZsb3cpOworICAgICAgICAg ICAgICAgIHMtPmMuYmxvY2tfbGFzdF9pbmRleFtpXSA9IHMtPmRjdF9xdWFudGl6ZShzLCBzLT5j LmJsb2NrW2ldLCBpLCBzLT5jLnFzY2FsZSwgJm92ZXJmbG93KTsKICAgICAgICAgICAgICAgICAv LyBGSVhNRSB3ZSBjb3VsZCBkZWNpZGUgdG8gY2hhbmdlIHRvIHF1YW50aXplciBpbnN0ZWFkIG9m CiAgICAgICAgICAgICAgICAgLy8gY2xpcHBpbmcKICAgICAgICAgICAgICAgICAvLyBKUzogSSBk b24ndCB0aGluayB0aGF0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIGl0IGNvdWxkIGxvd2VyCiAgICAg ICAgICAgICAgICAgLy8gICAgIHF1YWxpdHkgaW5zdGVhZCBvZiBpbXByb3ZlIGl0LiBKdXN0IElO VFJBREMgY2xpcHBpbmcKICAgICAgICAgICAgICAgICAvLyAgICAgZGVzZXJ2ZXMgY2hhbmdlcyBp biBxdWFudGl6ZXIKICAgICAgICAgICAgICAgICBpZiAob3ZlcmZsb3cpCi0gICAgICAgICAgICAg ICAgICAgIGNsaXBfY29lZmZzKHMsIHMtPmJsb2NrW2ldLCBzLT5ibG9ja19sYXN0X2luZGV4W2ld KTsKKyAgICAgICAgICAgICAgICAgICAgY2xpcF9jb2VmZnMocywgcy0+Yy5ibG9ja1tpXSwgcy0+ Yy5ibG9ja19sYXN0X2luZGV4W2ldKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg ICAgIHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKKyAgICAgICAgICAgICAgICBzLT5jLmJs b2NrX2xhc3RfaW5kZXhbaV0gPSAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAocy0+cXVhbnRp emVyX25vaXNlX3NoYXBpbmcpIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtYl9ibG9j a19jb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFza2lwX2RjdFtpXSkgewotICAg ICAgICAgICAgICAgICAgICBzLT5ibG9ja19sYXN0X2luZGV4W2ldID0KLSAgICAgICAgICAgICAg ICAgICAgICAgIGRjdF9xdWFudGl6ZV9yZWZpbmUocywgcy0+YmxvY2tbaV0sIHdlaWdodFtpXSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ1tpXSwgaSwg cy0+cXNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5ibG9ja19sYXN0X2luZGV4W2ld ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRjdF9xdWFudGl6ZV9yZWZpbmUocywgcy0+Yy5i bG9ja1tpXSwgd2VpZ2h0W2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcmlnW2ldLCBpLCBzLT5jLnFzY2FsZSk7CiAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHMtPmx1bWFfZWxpbV90aHJlc2hv bGQgJiYgIXMtPm1iX2ludHJhKQorICAgICAgICBpZiAocy0+bHVtYV9lbGltX3RocmVzaG9sZCAm JiAhcy0+Yy5tYl9pbnRyYSkKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAg ICAgICAgICAgICAgICAgZGN0X3NpbmdsZV9jb2VmZl9lbGltaW5hdGlvbihzLCBpLCBzLT5sdW1h X2VsaW1fdGhyZXNob2xkKTsKLSAgICAgICAgaWYgKHMtPmNocm9tYV9lbGltX3RocmVzaG9sZCAm JiAhcy0+bWJfaW50cmEpCisgICAgICAgIGlmIChzLT5jaHJvbWFfZWxpbV90aHJlc2hvbGQgJiYg IXMtPmMubWJfaW50cmEpCiAgICAgICAgICAgICBmb3IgKGkgPSA0OyBpIDwgbWJfYmxvY2tfY291 bnQ7IGkrKykKICAgICAgICAgICAgICAgICBkY3Rfc2luZ2xlX2NvZWZmX2VsaW1pbmF0aW9uKHMs IGksIHMtPmNocm9tYV9lbGltX3RocmVzaG9sZCk7CiAKICAgICAgICAgaWYgKHMtPm1wdl9mbGFn cyAmIEZGX01QVl9GTEFHX0NCUF9SRCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1i X2Jsb2NrX2NvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9p bmRleFtpXSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5ibG9ja19sYXN0X2luZGV4 W2ldID09IC0xKQogICAgICAgICAgICAgICAgICAgICBzLT5jb2RlZF9zY29yZVtpXSA9IElOVF9N QVggLyAyNTY7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoKHMt PmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR1JBWSkgJiYgcy0+bWJfaW50cmEpIHsKLSAg ICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFs0XSA9Ci0gICAgICAgIHMtPmJsb2NrX2xhc3RfaW5k ZXhbNV0gPSAwOwotICAgICAgICBzLT5ibG9ja1s0XVswXSA9Ci0gICAgICAgIHMtPmJsb2NrWzVd WzBdID0gKDEwMjQgKyBzLT5jX2RjX3NjYWxlIC8gMikgLyBzLT5jX2RjX3NjYWxlOworICAgIGlm ICgocy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dSQVkpICYmIHMtPmMubWJfaW50 cmEpIHsKKyAgICAgICAgcy0+Yy5ibG9ja19sYXN0X2luZGV4WzRdID0KKyAgICAgICAgcy0+Yy5i bG9ja19sYXN0X2luZGV4WzVdID0gMDsKKyAgICAgICAgcy0+Yy5ibG9ja1s0XVswXSA9CisgICAg ICAgIHMtPmMuYmxvY2tbNV1bMF0gPSAoMTAyNCArIHMtPmMuY19kY19zY2FsZSAvIDIpIC8gcy0+ Yy5jX2RjX3NjYWxlOwogICAgICAgICBpZiAoIWNocm9tYV95X3NoaWZ0KSB7IC8qIDQyMiAvIDQ0 NCAqLwogICAgICAgICAgICAgZm9yIChpPTY7IGk8MTI7IGkrKykgewotICAgICAgICAgICAgICAg IHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPSAwOwotICAgICAgICAgICAgICAgIHMtPmJsb2NrW2ld WzBdID0gcy0+YmxvY2tbNF1bMF07CisgICAgICAgICAgICAgICAgcy0+Yy5ibG9ja19sYXN0X2lu ZGV4W2ldID0gMDsKKyAgICAgICAgICAgICAgICBzLT5jLmJsb2NrW2ldWzBdID0gcy0+Yy5ibG9j a1s0XVswXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIG5vbiBj IHF1YW50aXplIGNvZGUgcmV0dXJucyBpbmNvcnJlY3QgYmxvY2tfbGFzdF9pbmRleCBGSVhNRQot ICAgIGlmIChzLT5hbHRlcm5hdGVfc2NhbiAmJiBzLT5kY3RfcXVhbnRpemUgIT0gZGN0X3F1YW50 aXplX2MpIHsKKyAgICBpZiAocy0+Yy5hbHRlcm5hdGVfc2NhbiAmJiBzLT5kY3RfcXVhbnRpemUg IT0gZGN0X3F1YW50aXplX2MpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1iX2Jsb2NrX2Nv dW50OyBpKyspIHsKICAgICAgICAgICAgIGludCBqOwotICAgICAgICAgICAgaWYgKHMtPmJsb2Nr X2xhc3RfaW5kZXhbaV0gPiAwKSB7CisgICAgICAgICAgICBpZiAocy0+Yy5ibG9ja19sYXN0X2lu ZGV4W2ldID4gMCkgewogICAgICAgICAgICAgICAgIGZvciAoaiA9IDYzOyBqID4gMDsgai0tKSB7 Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5ibG9ja1tpXVtzLT5pbnRyYV9zY2FudGFibGUu cGVybXV0YXRlZFtqXV0pCisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jLmJsb2NrW2ldW3Mt PmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbal1dKQogICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHMtPmJsb2NrX2xh c3RfaW5kZXhbaV0gPSBqOworICAgICAgICAgICAgICAgIHMtPmMuYmxvY2tfbGFzdF9pbmRleFtp XSA9IGo7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzLT5lbmNvZGVf bWIocywgcy0+YmxvY2ssIG1vdGlvbl94LCBtb3Rpb25feSk7CisgICAgcy0+ZW5jb2RlX21iKHMs IHMtPmMuYmxvY2ssIG1vdGlvbl94LCBtb3Rpb25feSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29k ZV9tYihNcGVnRW5jQ29udGV4dCAqcywgaW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3kpCitzdGF0 aWMgdm9pZCBlbmNvZGVfbWIoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG1vdGlvbl94LCBp bnQgbW90aW9uX3kpCiB7Ci0gICAgaWYgKHMtPmNocm9tYV9mb3JtYXQgPT0gQ0hST01BXzQyMCkK KyAgICBpZiAocy0+Yy5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80MjApCiAgICAgICAgIGVuY29k ZV9tYl9pbnRlcm5hbChzLCBtb3Rpb25feCwgbW90aW9uX3ksICA4LCA4LCA2LCAxLCAxLCBDSFJP TUFfNDIwKTsKLSAgICBlbHNlIGlmIChzLT5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80MjIpCisg ICAgZWxzZSBpZiAocy0+Yy5jaHJvbWFfZm9ybWF0ID09IENIUk9NQV80MjIpCiAgICAgICAgIGVu Y29kZV9tYl9pbnRlcm5hbChzLCBtb3Rpb25feCwgbW90aW9uX3ksIDE2LCA4LCA4LCAxLCAwLCBD SFJPTUFfNDIyKTsKICAgICBlbHNlCiAgICAgICAgIGVuY29kZV9tYl9pbnRlcm5hbChzLCBtb3Rp b25feCwgbW90aW9uX3ksIDE2LCAxNiwgMTIsIDAsIDAsIENIUk9NQV80NDQpOwogfQogCi1zdGF0 aWMgaW5saW5lIHZvaWQgY29weV9jb250ZXh0X2JlZm9yZV9lbmNvZGUoTXBlZ0VuY0NvbnRleHQg KmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg TXBlZ0VuY0NvbnRleHQgKnMpCitzdGF0aWMgaW5saW5lIHZvaWQgY29weV9jb250ZXh0X2JlZm9y ZV9lbmNvZGUoTVBWRW5jQ29udGV4dCAqY29uc3QgZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNUFZFbmNDb250ZXh0ICpjb25zdCBzKQogewog ICAgIGludCBpOwogCi0gICAgbWVtY3B5KGQtPmxhc3RfbXYsIHMtPmxhc3RfbXYsIDIqMioyKnNp emVvZihpbnQpKTsgLy9GSVhNRSBpcyBtZW1jcHkgZmFzdGVyIHRoYW4gYSBsb29wPworICAgIG1l bWNweShkLT5jLmxhc3RfbXYsIHMtPmMubGFzdF9tdiwgMioyKjIqc2l6ZW9mKGludCkpOyAvL0ZJ WE1FIGlzIG1lbWNweSBmYXN0ZXIgdGhhbiBhIGxvb3A/CiAKICAgICAvKiBNUEVHLTEgKi8KLSAg ICBkLT5tYl9za2lwX3J1bj0gcy0+bWJfc2tpcF9ydW47CisgICAgZC0+Yy5tYl9za2lwX3J1biA9 IHMtPmMubWJfc2tpcF9ydW47CiAgICAgZm9yKGk9MDsgaTwzOyBpKyspCi0gICAgICAgIGQtPmxh c3RfZGNbaV0gPSBzLT5sYXN0X2RjW2ldOworICAgICAgICBkLT5jLmxhc3RfZGNbaV0gPSBzLT5j Lmxhc3RfZGNbaV07CiAKICAgICAvKiBzdGF0aXN0aWNzICovCiAgICAgZC0+bXZfYml0cz0gcy0+ bXZfYml0czsKQEAgLTI2NDAsMjUgKzI2NDMsMjUgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvcHlf Y29udGV4dF9iZWZvcmVfZW5jb2RlKE1wZWdFbmNDb250ZXh0ICpkLAogICAgIGQtPm1pc2NfYml0 cz0gcy0+bWlzY19iaXRzOwogICAgIGQtPmxhc3RfYml0cz0gMDsKIAotICAgIGQtPm1iX3NraXBw ZWQ9IDA7Ci0gICAgZC0+cXNjYWxlPSBzLT5xc2NhbGU7CisgICAgZC0+Yy5tYl9za2lwcGVkID0g MDsKKyAgICBkLT5jLnFzY2FsZSA9IHMtPmMucXNjYWxlOwogICAgIGQtPmRxdWFudD0gcy0+ZHF1 YW50OwogCiAgICAgZC0+ZXNjM19sZXZlbF9sZW5ndGg9IHMtPmVzYzNfbGV2ZWxfbGVuZ3RoOwog fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY29weV9jb250ZXh0X2FmdGVyX2VuY29kZShNcGVnRW5j Q29udGV4dCAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IE1wZWdFbmNDb250ZXh0ICpzKQorc3RhdGljIGlubGluZSB2b2lkIGNvcHlfY29udGV4 dF9hZnRlcl9lbmNvZGUoTVBWRW5jQ29udGV4dCAqY29uc3QgZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMp CiB7CiAgICAgaW50IGk7CiAKLSAgICBtZW1jcHkoZC0+bXYsIHMtPm12LCAyKjQqMipzaXplb2Yo aW50KSk7Ci0gICAgbWVtY3B5KGQtPmxhc3RfbXYsIHMtPmxhc3RfbXYsIDIqMioyKnNpemVvZihp bnQpKTsgLy9GSVhNRSBpcyBtZW1jcHkgZmFzdGVyIHRoYW4gYSBsb29wPworICAgIG1lbWNweShk LT5jLm12LCBzLT5jLm12LCAyKjQqMipzaXplb2YoaW50KSk7CisgICAgbWVtY3B5KGQtPmMubGFz dF9tdiwgcy0+Yy5sYXN0X212LCAyKjIqMipzaXplb2YoaW50KSk7IC8vRklYTUUgaXMgbWVtY3B5 IGZhc3RlciB0aGFuIGEgbG9vcD8KIAogICAgIC8qIE1QRUctMSAqLwotICAgIGQtPm1iX3NraXBf cnVuPSBzLT5tYl9za2lwX3J1bjsKKyAgICBkLT5jLm1iX3NraXBfcnVuID0gcy0+Yy5tYl9za2lw X3J1bjsKICAgICBmb3IoaT0wOyBpPDM7IGkrKykKLSAgICAgICAgZC0+bGFzdF9kY1tpXSA9IHMt Pmxhc3RfZGNbaV07CisgICAgICAgIGQtPmMubGFzdF9kY1tpXSA9IHMtPmMubGFzdF9kY1tpXTsK IAogICAgIC8qIHN0YXRpc3RpY3MgKi8KICAgICBkLT5tdl9iaXRzPSBzLT5tdl9iaXRzOwpAQCAt MjY2NywyNSArMjY3MCwyNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29weV9jb250ZXh0X2FmdGVy X2VuY29kZShNcGVnRW5jQ29udGV4dCAqZCwKICAgICBkLT5pX2NvdW50PSBzLT5pX2NvdW50Owog ICAgIGQtPm1pc2NfYml0cz0gcy0+bWlzY19iaXRzOwogCi0gICAgZC0+bWJfaW50cmE9IHMtPm1i X2ludHJhOwotICAgIGQtPm1iX3NraXBwZWQ9IHMtPm1iX3NraXBwZWQ7Ci0gICAgZC0+bXZfdHlw ZT0gcy0+bXZfdHlwZTsKLSAgICBkLT5tdl9kaXI9IHMtPm12X2RpcjsKKyAgICBkLT5jLm1iX2lu dHJhICAgPSBzLT5jLm1iX2ludHJhOworICAgIGQtPmMubWJfc2tpcHBlZCA9IHMtPmMubWJfc2tp cHBlZDsKKyAgICBkLT5jLm12X3R5cGUgICAgPSBzLT5jLm12X3R5cGU7CisgICAgZC0+Yy5tdl9k aXIgICAgID0gcy0+Yy5tdl9kaXI7CiAgICAgZC0+cGI9IHMtPnBiOwotICAgIGlmKHMtPmRhdGFf cGFydGl0aW9uaW5nKXsKKyAgICBpZiAocy0+Yy5kYXRhX3BhcnRpdGlvbmluZykgewogICAgICAg ICBkLT5wYjI9IHMtPnBiMjsKICAgICAgICAgZC0+dGV4X3BiPSBzLT50ZXhfcGI7CiAgICAgfQot ICAgIGQtPmJsb2NrPSBzLT5ibG9jazsKKyAgICBkLT5jLmJsb2NrID0gcy0+Yy5ibG9jazsKICAg ICBmb3IoaT0wOyBpPDg7IGkrKykKLSAgICAgICAgZC0+YmxvY2tfbGFzdF9pbmRleFtpXT0gcy0+ YmxvY2tfbGFzdF9pbmRleFtpXTsKLSAgICBkLT5pbnRlcmxhY2VkX2RjdD0gcy0+aW50ZXJsYWNl ZF9kY3Q7Ci0gICAgZC0+cXNjYWxlPSBzLT5xc2NhbGU7CisgICAgICAgIGQtPmMuYmxvY2tfbGFz dF9pbmRleFtpXT0gcy0+Yy5ibG9ja19sYXN0X2luZGV4W2ldOworICAgIGQtPmMuaW50ZXJsYWNl ZF9kY3QgPSBzLT5jLmludGVybGFjZWRfZGN0OworICAgIGQtPmMucXNjYWxlID0gcy0+Yy5xc2Nh bGU7CiAKICAgICBkLT5lc2MzX2xldmVsX2xlbmd0aD0gcy0+ZXNjM19sZXZlbF9sZW5ndGg7CiB9 CiAKLXN0YXRpYyB2b2lkIGVuY29kZV9tYl9ocShNcGVnRW5jQ29udGV4dCAqcywgTXBlZ0VuY0Nv bnRleHQgKmJhY2t1cCwgTXBlZ0VuY0NvbnRleHQgKmJlc3QsCitzdGF0aWMgdm9pZCBlbmNvZGVf bWJfaHEoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgTVBWRW5jQ29udGV4dCAqY29uc3QgYmFja3Vw LCBNUFZFbmNDb250ZXh0ICpjb25zdCBiZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFB1 dEJpdENvbnRleHQgcGJbMl0sIFB1dEJpdENvbnRleHQgcGIyWzJdLCBQdXRCaXRDb250ZXh0IHRl eF9wYlsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmRtaW4sIGludCAqbmV4dF9i bG9jaywgaW50IG1vdGlvbl94LCBpbnQgbW90aW9uX3kpCiB7CkBAIC0yNjk0LDM4ICsyNjk3LDM4 IEBAIHN0YXRpYyB2b2lkIGVuY29kZV9tYl9ocShNcGVnRW5jQ29udGV4dCAqcywgTXBlZ0VuY0Nv bnRleHQgKmJhY2t1cCwgTXBlZ0VuY0NvbnRlCiAKICAgICBjb3B5X2NvbnRleHRfYmVmb3JlX2Vu Y29kZShzLCBiYWNrdXApOwogCi0gICAgcy0+YmxvY2s9IHMtPmJsb2Nrc1sqbmV4dF9ibG9ja107 Ci0gICAgcy0+cGI9IHBiWypuZXh0X2Jsb2NrXTsKLSAgICBpZihzLT5kYXRhX3BhcnRpdGlvbmlu Zyl7CisgICAgcy0+Yy5ibG9jayA9IHMtPmMuYmxvY2tzWypuZXh0X2Jsb2NrXTsKKyAgICBzLT5w YiAgICAgID0gcGJbKm5leHRfYmxvY2tdOworICAgIGlmIChzLT5jLmRhdGFfcGFydGl0aW9uaW5n KSB7CiAgICAgICAgIHMtPnBiMiAgID0gcGIyICAgWypuZXh0X2Jsb2NrXTsKICAgICAgICAgcy0+ dGV4X3BiPSB0ZXhfcGJbKm5leHRfYmxvY2tdOwogICAgIH0KIAogICAgIGlmKCpuZXh0X2Jsb2Nr KXsKLSAgICAgICAgbWVtY3B5KGRlc3RfYmFja3VwLCBzLT5kZXN0LCBzaXplb2Yocy0+ZGVzdCkp OwotICAgICAgICBzLT5kZXN0WzBdID0gcy0+c2MucmRfc2NyYXRjaHBhZDsKLSAgICAgICAgcy0+ ZGVzdFsxXSA9IHMtPnNjLnJkX3NjcmF0Y2hwYWQgKyAxNipzLT5saW5lc2l6ZTsKLSAgICAgICAg cy0+ZGVzdFsyXSA9IHMtPnNjLnJkX3NjcmF0Y2hwYWQgKyAxNipzLT5saW5lc2l6ZSArIDg7Ci0g ICAgICAgIGF2X2Fzc2VydDAocy0+bGluZXNpemUgPj0gMzIpOyAvL0ZJWE1FCisgICAgICAgIG1l bWNweShkZXN0X2JhY2t1cCwgcy0+Yy5kZXN0LCBzaXplb2Yocy0+Yy5kZXN0KSk7CisgICAgICAg IHMtPmMuZGVzdFswXSA9IHMtPmMuc2MucmRfc2NyYXRjaHBhZDsKKyAgICAgICAgcy0+Yy5kZXN0 WzFdID0gcy0+Yy5zYy5yZF9zY3JhdGNocGFkICsgMTYqcy0+Yy5saW5lc2l6ZTsKKyAgICAgICAg cy0+Yy5kZXN0WzJdID0gcy0+Yy5zYy5yZF9zY3JhdGNocGFkICsgMTYqcy0+Yy5saW5lc2l6ZSAr IDg7CisgICAgICAgIGF2X2Fzc2VydDAocy0+Yy5saW5lc2l6ZSA+PSAzMik7IC8vRklYTUUKICAg ICB9CiAKICAgICBlbmNvZGVfbWIocywgbW90aW9uX3gsIG1vdGlvbl95KTsKIAogICAgIHNjb3Jl PSBwdXRfYml0c19jb3VudCgmcy0+cGIpOwotICAgIGlmKHMtPmRhdGFfcGFydGl0aW9uaW5nKXsK KyAgICBpZiAocy0+Yy5kYXRhX3BhcnRpdGlvbmluZykgewogICAgICAgICBzY29yZSs9IHB1dF9i aXRzX2NvdW50KCZzLT5wYjIpOwogICAgICAgICBzY29yZSs9IHB1dF9iaXRzX2NvdW50KCZzLT50 ZXhfcGIpOwogICAgIH0KIAotICAgIGlmKHMtPmF2Y3R4LT5tYl9kZWNpc2lvbiA9PSBGRl9NQl9E RUNJU0lPTl9SRCl7Ci0gICAgICAgIG1wdl9yZWNvbnN0cnVjdF9tYihzLCBzLT5ibG9jayk7Cisg ICAgaWYocy0+Yy5hdmN0eC0+bWJfZGVjaXNpb24gPT0gRkZfTUJfREVDSVNJT05fUkQpeworICAg ICAgICBtcHZfcmVjb25zdHJ1Y3RfbWIocywgcy0+Yy5ibG9jayk7CiAKLSAgICAgICAgc2NvcmUg Kj0gcy0+bGFtYmRhMjsKKyAgICAgICAgc2NvcmUgKj0gcy0+Yy5sYW1iZGEyOwogICAgICAgICBz Y29yZSArPSBzc2VfbWIocykgPDwgRkZfTEFNQkRBX1NISUZUOwogICAgIH0KIAogICAgIGlmKCpu ZXh0X2Jsb2NrKXsKLSAgICAgICAgbWVtY3B5KHMtPmRlc3QsIGRlc3RfYmFja3VwLCBzaXplb2Yo cy0+ZGVzdCkpOworICAgICAgICBtZW1jcHkocy0+Yy5kZXN0LCBkZXN0X2JhY2t1cCwgc2l6ZW9m KHMtPmMuZGVzdCkpOwogICAgIH0KIAogICAgIGlmKHNjb3JlPCpkbWluKXsKQEAgLTI3MzYsNyAr MjczOSw4IEBAIHN0YXRpYyB2b2lkIGVuY29kZV9tYl9ocShNcGVnRW5jQ29udGV4dCAqcywgTXBl Z0VuY0NvbnRleHQgKmJhY2t1cCwgTXBlZ0VuY0NvbnRlCiAgICAgfQogfQogCi1zdGF0aWMgaW50 IHNzZShNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqc3JjMSwgY29uc3QgdWludDhf dCAqc3JjMiwgaW50IHcsIGludCBoLCBpbnQgc3RyaWRlKXsKK3N0YXRpYyBpbnQgc3NlKGNvbnN0 IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4 X3QgKnNyYzIsIGludCB3LCBpbnQgaCwgaW50IHN0cmlkZSkKK3sKICAgICBjb25zdCB1aW50MzJf dCAqc3EgPSBmZl9zcXVhcmVfdGFiICsgMjU2OwogICAgIGludCBhY2M9MDsKICAgICBpbnQgeCx5 OwpAQCAtMjc1NywxMjkgKzI3NjEsMTI4IEBAIHN0YXRpYyBpbnQgc3NlKE1wZWdFbmNDb250ZXh0 ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLCBjb25zdCB1aW50OF90ICpzcmMyLCBpbnQKICAgICBy ZXR1cm4gYWNjOwogfQogCi1zdGF0aWMgaW50IHNzZV9tYihNcGVnRW5jQ29udGV4dCAqcyl7Citz dGF0aWMgaW50IHNzZV9tYihNUFZFbmNDb250ZXh0ICpjb25zdCBzKQorewogICAgIGludCB3PSAx NjsKICAgICBpbnQgaD0gMTY7Ci0gICAgaW50IGNocm9tYV9tYl93ID0gdyA+PiBzLT5jaHJvbWFf eF9zaGlmdDsKLSAgICBpbnQgY2hyb21hX21iX2ggPSBoID4+IHMtPmNocm9tYV95X3NoaWZ0Owor ICAgIGludCBjaHJvbWFfbWJfdyA9IHcgPj4gcy0+Yy5jaHJvbWFfeF9zaGlmdDsKKyAgICBpbnQg Y2hyb21hX21iX2ggPSBoID4+IHMtPmMuY2hyb21hX3lfc2hpZnQ7CiAKLSAgICBpZihzLT5tYl94 KjE2ICsgMTYgPiBzLT53aWR0aCApIHc9IHMtPndpZHRoIC0gcy0+bWJfeCoxNjsKLSAgICBpZihz LT5tYl95KjE2ICsgMTYgPiBzLT5oZWlnaHQpIGg9IHMtPmhlaWdodC0gcy0+bWJfeSoxNjsKKyAg ICBpZiAocy0+Yy5tYl94KjE2ICsgMTYgPiBzLT5jLndpZHRoICkgdyA9IHMtPmMud2lkdGggLSBz LT5jLm1iX3gqMTY7CisgICAgaWYgKHMtPmMubWJfeSoxNiArIDE2ID4gcy0+Yy5oZWlnaHQpIGgg PSBzLT5jLmhlaWdodC0gcy0+Yy5tYl95KjE2OwogCiAgICAgaWYodz09MTYgJiYgaD09MTYpCi0g ICAgICAgIHJldHVybiBzLT5uX3NzZV9jbXBbMF0ocywgcy0+bmV3X3BpYy0+ZGF0YVswXSArIHMt Pm1iX3ggKiAxNiArIHMtPm1iX3kgKiBzLT5saW5lc2l6ZSAqIDE2LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHMtPmRlc3RbMF0sIHMtPmxpbmVzaXplLCAxNikgKwotICAgICAgICAg ICAgICAgcy0+bl9zc2VfY21wWzFdKHMsIHMtPm5ld19waWMtPmRhdGFbMV0gKyBzLT5tYl94ICog Y2hyb21hX21iX3cgKyBzLT5tYl95ICogcy0+dXZsaW5lc2l6ZSAqIGNocm9tYV9tYl9oLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMV0sIHMtPnV2bGluZXNpemUsIGNo cm9tYV9tYl9oKSArCi0gICAgICAgICAgICAgICBzLT5uX3NzZV9jbXBbMV0ocywgcy0+bmV3X3Bp Yy0+ZGF0YVsyXSArIHMtPm1iX3ggKiBjaHJvbWFfbWJfdyArIHMtPm1iX3kgKiBzLT51dmxpbmVz aXplICogY2hyb21hX21iX2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ZGVz dFsyXSwgcy0+dXZsaW5lc2l6ZSwgY2hyb21hX21iX2gpOworICAgICAgICByZXR1cm4gcy0+bl9z c2VfY21wWzBdKHMsIHMtPm5ld19waWMtPmRhdGFbMF0gKyBzLT5jLm1iX3ggKiAxNiArIHMtPmMu bWJfeSAqIHMtPmMubGluZXNpemUgKiAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzLT5jLmRlc3RbMF0sIHMtPmMubGluZXNpemUsIDE2KSArCisgICAgICAgICAgICAgICBzLT5u X3NzZV9jbXBbMV0ocywgcy0+bmV3X3BpYy0+ZGF0YVsxXSArIHMtPmMubWJfeCAqIGNocm9tYV9t Yl93ICsgcy0+Yy5tYl95ICogcy0+Yy51dmxpbmVzaXplICogY2hyb21hX21iX2gsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5kZXN0WzFdLCBzLT5jLnV2bGluZXNpemUsIGNo cm9tYV9tYl9oKSArCisgICAgICAgICAgICAgICBzLT5uX3NzZV9jbXBbMV0ocywgcy0+bmV3X3Bp Yy0+ZGF0YVsyXSArIHMtPmMubWJfeCAqIGNocm9tYV9tYl93ICsgcy0+Yy5tYl95ICogcy0+Yy51 dmxpbmVzaXplICogY2hyb21hX21iX2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cy0+Yy5kZXN0WzJdLCBzLT5jLnV2bGluZXNpemUsIGNocm9tYV9tYl9oKTsKICAgICBlbHNlCi0g ICAgICAgIHJldHVybiAgc3NlKHMsIHMtPm5ld19waWMtPmRhdGFbMF0gKyBzLT5tYl94ICogMTYg KyBzLT5tYl95ICogcy0+bGluZXNpemUgKiAxNiwKLSAgICAgICAgICAgICAgICAgICAgcy0+ZGVz dFswXSwgdywgaCwgcy0+bGluZXNpemUpICsKLSAgICAgICAgICAgICAgICBzc2Uocywgcy0+bmV3 X3BpYy0+ZGF0YVsxXSArIHMtPm1iX3ggKiBjaHJvbWFfbWJfdyArIHMtPm1iX3kgKiBzLT51dmxp bmVzaXplICogY2hyb21hX21iX2gsCi0gICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMV0sIHcg Pj4gcy0+Y2hyb21hX3hfc2hpZnQsIGggPj4gcy0+Y2hyb21hX3lfc2hpZnQsIHMtPnV2bGluZXNp emUpICsKLSAgICAgICAgICAgICAgICBzc2Uocywgcy0+bmV3X3BpYy0+ZGF0YVsyXSArIHMtPm1i X3ggKiBjaHJvbWFfbWJfdyArIHMtPm1iX3kgKiBzLT51dmxpbmVzaXplICogY2hyb21hX21iX2gs Ci0gICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMl0sIHcgPj4gcy0+Y2hyb21hX3hfc2hpZnQs IGggPj4gcy0+Y2hyb21hX3lfc2hpZnQsIHMtPnV2bGluZXNpemUpOworICAgICAgICByZXR1cm4g IHNzZShzLCBzLT5uZXdfcGljLT5kYXRhWzBdICsgcy0+Yy5tYl94ICogMTYgKyBzLT5jLm1iX3kg KiBzLT5jLmxpbmVzaXplICogMTYsCisgICAgICAgICAgICAgICAgICAgIHMtPmMuZGVzdFswXSwg dywgaCwgcy0+Yy5saW5lc2l6ZSkgKworICAgICAgICAgICAgICAgIHNzZShzLCBzLT5uZXdfcGlj LT5kYXRhWzFdICsgcy0+Yy5tYl94ICogY2hyb21hX21iX3cgKyBzLT5jLm1iX3kgKiBzLT5jLnV2 bGluZXNpemUgKiBjaHJvbWFfbWJfaCwKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5kZXN0WzFd LCB3ID4+IHMtPmMuY2hyb21hX3hfc2hpZnQsIGggPj4gcy0+Yy5jaHJvbWFfeV9zaGlmdCwgcy0+ Yy51dmxpbmVzaXplKSArCisgICAgICAgICAgICAgICAgc3NlKHMsIHMtPm5ld19waWMtPmRhdGFb Ml0gKyBzLT5jLm1iX3ggKiBjaHJvbWFfbWJfdyArIHMtPmMubWJfeSAqIHMtPmMudXZsaW5lc2l6 ZSAqIGNocm9tYV9tYl9oLAorICAgICAgICAgICAgICAgICAgICBzLT5jLmRlc3RbMl0sIHcgPj4g cy0+Yy5jaHJvbWFfeF9zaGlmdCwgaCA+PiBzLT5jLmNocm9tYV95X3NoaWZ0LCBzLT5jLnV2bGlu ZXNpemUpOwogfQogCiBzdGF0aWMgaW50IHByZV9lc3RpbWF0ZV9tb3Rpb25fdGhyZWFkKEFWQ29k ZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewotICAgIE1wZWdFbmNDb250ZXh0ICpzPSAqKHZvaWQq Kilhcmc7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICoodm9pZCoqKWFyZzsKIAogCi0g ICAgcy0+bWUucHJlX3Bhc3M9MTsKLSAgICBzLT5tZS5kaWFfc2l6ZT0gcy0+YXZjdHgtPnByZV9k aWFfc2l6ZTsKLSAgICBzLT5maXJzdF9zbGljZV9saW5lPTE7Ci0gICAgZm9yKHMtPm1iX3k9IHMt PmVuZF9tYl95LTE7IHMtPm1iX3kgPj0gcy0+c3RhcnRfbWJfeTsgcy0+bWJfeS0tKSB7Ci0gICAg ICAgIGZvcihzLT5tYl94PXMtPm1iX3dpZHRoLTE7IHMtPm1iX3ggPj0wIDtzLT5tYl94LS0pIHsK LSAgICAgICAgICAgIGZmX3ByZV9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihzLCBzLT5tYl94LCBz LT5tYl95KTsKLSAgICAgICAgfQotICAgICAgICBzLT5maXJzdF9zbGljZV9saW5lPTA7CisgICAg cy0+Yy5tZS5wcmVfcGFzcyA9IDE7CisgICAgcy0+Yy5tZS5kaWFfc2l6ZSA9IHMtPmMuYXZjdHgt PnByZV9kaWFfc2l6ZTsKKyAgICBzLT5jLmZpcnN0X3NsaWNlX2xpbmUgPSAxOworICAgIGZvciAo cy0+Yy5tYl95ID0gcy0+Yy5lbmRfbWJfeSAtIDE7IHMtPmMubWJfeSA+PSBzLT5jLnN0YXJ0X21i X3k7IHMtPmMubWJfeS0tKSB7CisgICAgICAgIGZvciAocy0+Yy5tYl94ID0gcy0+Yy5tYl93aWR0 aCAtIDE7IHMtPmMubWJfeCA+PTAgOyBzLT5jLm1iX3gtLSkKKyAgICAgICAgICAgIGZmX3ByZV9l c3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihzLCBzLT5jLm1iX3gsIHMtPmMubWJfeSk7CisgICAgICAg IHMtPmMuZmlyc3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgfQogCi0gICAgcy0+bWUucHJlX3Bhc3M9 MDsKKyAgICBzLT5jLm1lLnByZV9wYXNzID0gMDsKIAogICAgIHJldHVybiAwOwogfQogCiBzdGF0 aWMgaW50IGVzdGltYXRlX21vdGlvbl90aHJlYWQoQVZDb2RlY0NvbnRleHQgKmMsIHZvaWQgKmFy Zyl7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKnM9ICoodm9pZCoqKWFyZzsKLQotICAgIHMtPm1lLmRp YV9zaXplPSBzLT5hdmN0eC0+ZGlhX3NpemU7Ci0gICAgcy0+Zmlyc3Rfc2xpY2VfbGluZT0xOwot ICAgIGZvcihzLT5tYl95PSBzLT5zdGFydF9tYl95OyBzLT5tYl95IDwgcy0+ZW5kX21iX3k7IHMt Pm1iX3krKykgewotICAgICAgICBzLT5tYl94PTA7IC8vZm9yIGJsb2NrIGluaXQgYmVsb3cKLSAg ICAgICAgZmZfaW5pdF9ibG9ja19pbmRleChzKTsKLSAgICAgICAgZm9yKHMtPm1iX3g9MDsgcy0+ bWJfeCA8IHMtPm1iX3dpZHRoOyBzLT5tYl94KyspIHsKLSAgICAgICAgICAgIHMtPmJsb2NrX2lu ZGV4WzBdKz0yOwotICAgICAgICAgICAgcy0+YmxvY2tfaW5kZXhbMV0rPTI7Ci0gICAgICAgICAg ICBzLT5ibG9ja19pbmRleFsyXSs9MjsKLSAgICAgICAgICAgIHMtPmJsb2NrX2luZGV4WzNdKz0y OworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAqKHZvaWQqKilhcmc7CisKKyAgICBzLT5j Lm1lLmRpYV9zaXplPSBzLT5jLmF2Y3R4LT5kaWFfc2l6ZTsKKyAgICBzLT5jLmZpcnN0X3NsaWNl X2xpbmU9MTsKKyAgICBmb3IgKHMtPmMubWJfeSA9IHMtPmMuc3RhcnRfbWJfeTsgcy0+Yy5tYl95 IDwgcy0+Yy5lbmRfbWJfeTsgcy0+Yy5tYl95KyspIHsKKyAgICAgICAgcy0+Yy5tYl94PTA7IC8v Zm9yIGJsb2NrIGluaXQgYmVsb3cKKyAgICAgICAgZmZfaW5pdF9ibG9ja19pbmRleCgmcy0+Yyk7 CisgICAgICAgIGZvciAocy0+Yy5tYl94ID0gMDsgcy0+Yy5tYl94IDwgcy0+Yy5tYl93aWR0aDsg cy0+Yy5tYl94KyspIHsKKyAgICAgICAgICAgIHMtPmMuYmxvY2tfaW5kZXhbMF0gKz0gMjsKKyAg ICAgICAgICAgIHMtPmMuYmxvY2tfaW5kZXhbMV0gKz0gMjsKKyAgICAgICAgICAgIHMtPmMuYmxv Y2tfaW5kZXhbMl0gKz0gMjsKKyAgICAgICAgICAgIHMtPmMuYmxvY2tfaW5kZXhbM10gKz0gMjsK IAogICAgICAgICAgICAgLyogY29tcHV0ZSBtb3Rpb24gdmVjdG9yICYgbWJfdHlwZSBhbmQgc3Rv cmUgaW4gY29udGV4dCAqLwotICAgICAgICAgICAgaWYocy0+cGljdF90eXBlPT1BVl9QSUNUVVJF X1RZUEVfQikKLSAgICAgICAgICAgICAgICBmZl9lc3RpbWF0ZV9iX2ZyYW1lX21vdGlvbihzLCBz LT5tYl94LCBzLT5tYl95KTsKKyAgICAgICAgICAgIGlmKHMtPmMucGljdF90eXBlPT1BVl9QSUNU VVJFX1RZUEVfQikKKyAgICAgICAgICAgICAgICBmZl9lc3RpbWF0ZV9iX2ZyYW1lX21vdGlvbihz LCBzLT5jLm1iX3gsIHMtPmMubWJfeSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg ICAgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24ocywgcy0+bWJfeCwgcy0+bWJfeSk7CisgICAg ICAgICAgICAgICAgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24ocywgcy0+Yy5tYl94LCBzLT5j Lm1iX3kpOwogICAgICAgICB9Ci0gICAgICAgIHMtPmZpcnN0X3NsaWNlX2xpbmU9MDsKKyAgICAg ICAgcy0+Yy5maXJzdF9zbGljZV9saW5lID0gMDsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAK IHN0YXRpYyBpbnQgbWJfdmFyX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsK LSAgICBNcGVnRW5jQ29udGV4dCAqcz0gKih2b2lkKiopYXJnOwotICAgIGludCBtYl94LCBtYl95 OworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAqKHZvaWQqKilhcmc7CiAKLSAgICBmb3Io bWJfeT1zLT5zdGFydF9tYl95OyBtYl95IDwgcy0+ZW5kX21iX3k7IG1iX3krKykgewotICAgICAg ICBmb3IobWJfeD0wOyBtYl94IDwgcy0+bWJfd2lkdGg7IG1iX3grKykgeworICAgIGZvciAoaW50 IG1iX3kgPSBzLT5jLnN0YXJ0X21iX3k7IG1iX3kgPCBzLT5jLmVuZF9tYl95OyBtYl95KyspIHsK KyAgICAgICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBzLT5jLm1iX3dpZHRoOyBtYl94Kysp IHsKICAgICAgICAgICAgIGludCB4eCA9IG1iX3ggKiAxNjsKICAgICAgICAgICAgIGludCB5eSA9 IG1iX3kgKiAxNjsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeCA9IHMtPm5ld19waWMt PmRhdGFbMF0gKyAoeXkgKiBzLT5saW5lc2l6ZSkgKyB4eDsKKyAgICAgICAgICAgIGNvbnN0IHVp bnQ4X3QgKnBpeCA9IHMtPm5ld19waWMtPmRhdGFbMF0gKyAoeXkgKiBzLT5jLmxpbmVzaXplKSAr IHh4OwogICAgICAgICAgICAgaW50IHZhcmM7Ci0gICAgICAgICAgICBpbnQgc3VtID0gcy0+bXB2 ZW5jZHNwLnBpeF9zdW0ocGl4LCBzLT5saW5lc2l6ZSk7CisgICAgICAgICAgICBpbnQgc3VtID0g cy0+bXB2ZW5jZHNwLnBpeF9zdW0ocGl4LCBzLT5jLmxpbmVzaXplKTsKIAotICAgICAgICAgICAg dmFyYyA9IChzLT5tcHZlbmNkc3AucGl4X25vcm0xKHBpeCwgcy0+bGluZXNpemUpIC0KKyAgICAg ICAgICAgIHZhcmMgPSAocy0+bXB2ZW5jZHNwLnBpeF9ub3JtMShwaXgsIHMtPmMubGluZXNpemUp IC0KICAgICAgICAgICAgICAgICAgICAgKCgodW5zaWduZWQpIHN1bSAqIHN1bSkgPj4gOCkgKyA1 MDAgKyAxMjgpID4+IDg7CiAKLSAgICAgICAgICAgIHMtPm1iX3ZhciBbcy0+bWJfc3RyaWRlICog bWJfeSArIG1iX3hdID0gdmFyYzsKLSAgICAgICAgICAgIHMtPm1iX21lYW5bcy0+bWJfc3RyaWRl ICogbWJfeSArIG1iX3hdID0gKHN1bSsxMjgpPj44OwotICAgICAgICAgICAgcy0+bWUubWJfdmFy X3N1bV90ZW1wICAgICs9IHZhcmM7CisgICAgICAgICAgICBzLT5tYl92YXIgW3MtPmMubWJfc3Ry aWRlICogbWJfeSArIG1iX3hdID0gdmFyYzsKKyAgICAgICAgICAgIHMtPm1iX21lYW5bcy0+Yy5t Yl9zdHJpZGUgKiBtYl95ICsgbWJfeF0gPSAoc3VtKzEyOCk+Pjg7CisgICAgICAgICAgICBzLT5j Lm1lLm1iX3Zhcl9zdW1fdGVtcCAgICArPSB2YXJjOwogICAgICAgICB9CiAgICAgfQogICAgIHJl dHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCB3cml0ZV9zbGljZV9lbmQoTXBlZ0VuY0NvbnRleHQg KnMpewotICAgIGlmKENPTkZJR19NUEVHNF9FTkNPREVSICYmIHMtPmNvZGVjX2lkPT1BVl9DT0RF Q19JRF9NUEVHNCl7Ci0gICAgICAgIGlmKHMtPnBhcnRpdGlvbmVkX2ZyYW1lKXsKK3N0YXRpYyB2 b2lkIHdyaXRlX3NsaWNlX2VuZChNUFZFbmNDb250ZXh0ICpjb25zdCBzKQoreworICAgIGlmKENP TkZJR19NUEVHNF9FTkNPREVSICYmIHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQp IHsKKyAgICAgICAgaWYgKHMtPmMucGFydGl0aW9uZWRfZnJhbWUpCiAgICAgICAgICAgICBmZl9t cGVnNF9tZXJnZV9wYXJ0aXRpb25zKHMpOwotICAgICAgICB9CiAKICAgICAgICAgZmZfbXBlZzRf c3R1ZmZpbmcoJnMtPnBiKTsKICAgICB9IGVsc2UgaWYgKChDT05GSUdfTUpQRUdfRU5DT0RFUiB8 fCBDT05GSUdfQU1WX0VOQ09ERVIpICYmCi0gICAgICAgICAgICAgICBzLT5vdXRfZm9ybWF0ID09 IEZNVF9NSlBFRykgeworICAgICAgICAgICAgICAgcy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9NSlBF RykgewogICAgICAgICBmZl9tanBlZ19lbmNvZGVfc3R1ZmZpbmcocyk7Ci0gICAgfSBlbHNlIGlm IChDT05GSUdfU1BFRURIUV9FTkNPREVSICYmIHMtPm91dF9mb3JtYXQgPT0gRk1UX1NQRUVESFEp IHsKKyAgICB9IGVsc2UgaWYgKENPTkZJR19TUEVFREhRX0VOQ09ERVIgJiYgcy0+Yy5vdXRfZm9y bWF0ID09IEZNVF9TUEVFREhRKSB7CiAgICAgICAgIGZmX3NwZWVkaHFfZW5kX3NsaWNlKHMpOwog ICAgIH0KIAogICAgIGZsdXNoX3B1dF9iaXRzKCZzLT5wYik7CiAKLSAgICBpZiAoKHMtPmF2Y3R4 LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzEpICYmICFzLT5wYXJ0aXRpb25lZF9mcmFtZSkK KyAgICBpZiAoKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMSkgJiYgIXMt PmMucGFydGl0aW9uZWRfZnJhbWUpCiAgICAgICAgIHMtPm1pc2NfYml0cys9IGdldF9iaXRzX2Rp ZmYocyk7CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlX21iX2luZm8oTXBlZ0VuY0NvbnRleHQgKnMp CitzdGF0aWMgdm9pZCB3cml0ZV9tYl9pbmZvKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7CiAg ICAgdWludDhfdCAqcHRyID0gcy0+bWJfaW5mb19wdHIgKyBzLT5tYl9pbmZvX3NpemUgLSAxMjsK ICAgICBpbnQgb2Zmc2V0ID0gcHV0X2JpdHNfY291bnQoJnMtPnBiKTsKLSAgICBpbnQgbWJhICA9 IHMtPm1iX3ggKyBzLT5tYl93aWR0aCAqIChzLT5tYl95ICUgcy0+Z29iX2luZGV4KTsKLSAgICBp bnQgZ29ibiA9IHMtPm1iX3kgLyBzLT5nb2JfaW5kZXg7CisgICAgaW50IG1iYSAgPSBzLT5jLm1i X3ggKyBzLT5jLm1iX3dpZHRoICogKHMtPmMubWJfeSAlIHMtPmMuZ29iX2luZGV4KTsKKyAgICBp bnQgZ29ibiA9IHMtPmMubWJfeSAvIHMtPmMuZ29iX2luZGV4OwogICAgIGludCBwcmVkX3gsIHBy ZWRfeTsKICAgICBpZiAoQ09ORklHX0gyNjNfRU5DT0RFUikKLSAgICAgICAgZmZfaDI2M19wcmVk X21vdGlvbihzLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsKKyAgICAgICAgZmZfaDI2M19wcmVk X21vdGlvbigmcy0+YywgMCwgMCwgJnByZWRfeCwgJnByZWRfeSk7CiAgICAgYnl0ZXN0cmVhbV9w dXRfbGUzMigmcHRyLCBvZmZzZXQpOwotICAgIGJ5dGVzdHJlYW1fcHV0X2J5dGUoJnB0ciwgcy0+ cXNjYWxlKTsKKyAgICBieXRlc3RyZWFtX3B1dF9ieXRlKCZwdHIsIHMtPmMucXNjYWxlKTsKICAg ICBieXRlc3RyZWFtX3B1dF9ieXRlKCZwdHIsIGdvYm4pOwogICAgIGJ5dGVzdHJlYW1fcHV0X2xl MTYoJnB0ciwgbWJhKTsKICAgICBieXRlc3RyZWFtX3B1dF9ieXRlKCZwdHIsIHByZWRfeCk7IC8q IGhtdjEgKi8KQEAgLTI4ODksNyArMjg5Miw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlX21iX2luZm8o TXBlZ0VuY0NvbnRleHQgKnMpCiAgICAgYnl0ZXN0cmVhbV9wdXRfYnl0ZSgmcHRyLCAwKTsgLyog dm12MiAqLwogfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVfbWJfaW5mbyhNcGVnRW5jQ29udGV4dCAq cywgaW50IHN0YXJ0Y29kZSkKK3N0YXRpYyB2b2lkIHVwZGF0ZV9tYl9pbmZvKE1QVkVuY0NvbnRl eHQgKmNvbnN0IHMsIGludCBzdGFydGNvZGUpCiB7CiAgICAgaWYgKCFzLT5tYl9pbmZvKQogICAg ICAgICByZXR1cm47CkBAIC0yOTEyLDMyICsyOTE1LDMyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9t Yl9pbmZvKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgc3RhcnRjb2RlKQogICAgIHdyaXRlX21iX2lu Zm8ocyk7CiB9CiAKLWludCBmZl9tcHZfcmVhbGxvY2F0ZV9wdXRiaXRidWZmZXIoTXBlZ0VuY0Nv bnRleHQgKnMsIHNpemVfdCB0aHJlc2hvbGQsIHNpemVfdCBzaXplX2luY3JlYXNlKQoraW50IGZm X21wdl9yZWFsbG9jYXRlX3B1dGJpdGJ1ZmZlcihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBzaXpl X3QgdGhyZXNob2xkLCBzaXplX3Qgc2l6ZV9pbmNyZWFzZSkKIHsKICAgICBpZiAocHV0X2J5dGVz X2xlZnQoJnMtPnBiLCAwKSA8IHRocmVzaG9sZAotICAgICAgICAmJiBzLT5zbGljZV9jb250ZXh0 X2NvdW50ID09IDEKLSAgICAgICAgJiYgcy0+cGIuYnVmID09IHMtPmF2Y3R4LT5pbnRlcm5hbC0+ Ynl0ZV9idWZmZXIpIHsKKyAgICAgICAgJiYgcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50ID09IDEK KyAgICAgICAgJiYgcy0+cGIuYnVmID09IHMtPmMuYXZjdHgtPmludGVybmFsLT5ieXRlX2J1ZmZl cikgewogICAgICAgICBpbnQgbGFzdGdvYl9wb3MgPSBzLT5wdHJfbGFzdGdvYiAtIHMtPnBiLmJ1 ZjsKIAogICAgICAgICB1aW50OF90ICpuZXdfYnVmZmVyID0gTlVMTDsKICAgICAgICAgaW50IG5l d19idWZmZXJfc2l6ZSA9IDA7CiAKLSAgICAgICAgaWYgKChzLT5hdmN0eC0+aW50ZXJuYWwtPmJ5 dGVfYnVmZmVyX3NpemUgKyBzaXplX2luY3JlYXNlKSA+PSBJTlRfTUFYLzgpIHsKLSAgICAgICAg ICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiQ2Fubm90IHJlYWxsb2NhdGUgcHV0 Yml0IGJ1ZmZlclxuIik7CisgICAgICAgIGlmICgocy0+Yy5hdmN0eC0+aW50ZXJuYWwtPmJ5dGVf YnVmZmVyX3NpemUgKyBzaXplX2luY3JlYXNlKSA+PSBJTlRfTUFYLzgpIHsKKyAgICAgICAgICAg IGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9MT0dfRVJST1IsICJDYW5ub3QgcmVhbGxvY2F0ZSBwdXRi aXQgYnVmZmVyXG4iKTsKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAg ICAgIH0KIAogICAgICAgICBlbW1zX2MoKTsKIAogICAgICAgICBhdl9mYXN0X3BhZGRlZF9tYWxs b2MoJm5ld19idWZmZXIsICZuZXdfYnVmZmVyX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzLT5hdmN0eC0+aW50ZXJuYWwtPmJ5dGVfYnVmZmVyX3NpemUgKyBzaXplX2luY3Jl YXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuYXZjdHgtPmludGVybmFs LT5ieXRlX2J1ZmZlcl9zaXplICsgc2l6ZV9pbmNyZWFzZSk7CiAgICAgICAgIGlmICghbmV3X2J1 ZmZlcikKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKLSAgICAgICAgbWVt Y3B5KG5ld19idWZmZXIsIHMtPmF2Y3R4LT5pbnRlcm5hbC0+Ynl0ZV9idWZmZXIsIHMtPmF2Y3R4 LT5pbnRlcm5hbC0+Ynl0ZV9idWZmZXJfc2l6ZSk7Ci0gICAgICAgIGF2X2ZyZWUocy0+YXZjdHgt PmludGVybmFsLT5ieXRlX2J1ZmZlcik7Ci0gICAgICAgIHMtPmF2Y3R4LT5pbnRlcm5hbC0+Ynl0 ZV9idWZmZXIgICAgICA9IG5ld19idWZmZXI7Ci0gICAgICAgIHMtPmF2Y3R4LT5pbnRlcm5hbC0+ Ynl0ZV9idWZmZXJfc2l6ZSA9IG5ld19idWZmZXJfc2l6ZTsKKyAgICAgICAgbWVtY3B5KG5ld19i dWZmZXIsIHMtPmMuYXZjdHgtPmludGVybmFsLT5ieXRlX2J1ZmZlciwgcy0+Yy5hdmN0eC0+aW50 ZXJuYWwtPmJ5dGVfYnVmZmVyX3NpemUpOworICAgICAgICBhdl9mcmVlKHMtPmMuYXZjdHgtPmlu dGVybmFsLT5ieXRlX2J1ZmZlcik7CisgICAgICAgIHMtPmMuYXZjdHgtPmludGVybmFsLT5ieXRl X2J1ZmZlciAgICAgID0gbmV3X2J1ZmZlcjsKKyAgICAgICAgcy0+Yy5hdmN0eC0+aW50ZXJuYWwt PmJ5dGVfYnVmZmVyX3NpemUgPSBuZXdfYnVmZmVyX3NpemU7CiAgICAgICAgIHJlYmFzZV9wdXRf Yml0cygmcy0+cGIsIG5ld19idWZmZXIsIG5ld19idWZmZXJfc2l6ZSk7CiAgICAgICAgIHMtPnB0 cl9sYXN0Z29iICAgPSBzLT5wYi5idWYgKyBsYXN0Z29iX3BvczsKICAgICB9CkBAIC0yOTQ3LDEx ICsyOTUwLDEwIEBAIGludCBmZl9tcHZfcmVhbGxvY2F0ZV9wdXRiaXRidWZmZXIoTXBlZ0VuY0Nv bnRleHQgKnMsIHNpemVfdCB0aHJlc2hvbGQsIHNpemVfdCBzCiB9CiAKIHN0YXRpYyBpbnQgZW5j b2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKLSAgICBNcGVnRW5jQ29u dGV4dCAqcz0gKih2b2lkKiopYXJnOwotICAgIGludCBtYl94LCBtYl95LCBtYl95X29yZGVyOwot ICAgIGludCBjaHJfaD0gMTY+PnMtPmNocm9tYV95X3NoaWZ0OworICAgIE1QVkVuY0NvbnRleHQg KmNvbnN0IHMgPSAqKHZvaWQqKilhcmc7CisgICAgaW50IGNocl9oID0gMTYgPj4gcy0+Yy5jaHJv bWFfeV9zaGlmdDsKICAgICBpbnQgaSwgajsKLSAgICBNcGVnRW5jQ29udGV4dCBiZXN0X3MgPSB7 IDAgfSwgYmFja3VwX3M7CisgICAgTVBWRW5jQ29udGV4dCBiZXN0X3MgPSB7IDAgfSwgYmFja3Vw X3M7CiAgICAgdWludDhfdCBiaXRfYnVmWzJdW01BWF9NQl9CWVRFU107CiAgICAgdWludDhfdCBi aXRfYnVmMlsyXVtNQVhfTUJfQllURVNdOwogICAgIHVpbnQ4X3QgYml0X2J1Zl90ZXhbMl1bTUFY X01CX0JZVEVTXTsKQEAgLTI5NzMsODIgKzI5NzUsODMgQEAgc3RhdGljIGludCBlbmNvZGVfdGhy ZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgIGZvcihpPTA7IGk8MzsgaSsr KXsKICAgICAgICAgLyogaW5pdCBsYXN0IGRjIHZhbHVlcyAqLwogICAgICAgICAvKiBub3RlOiBx dWFudCBtYXRyaXggdmFsdWUgKDgpIGlzIGltcGxpZWQgaGVyZSAqLwotICAgICAgICBzLT5sYXN0 X2RjW2ldID0gMTI4IDw8IHMtPmludHJhX2RjX3ByZWNpc2lvbjsKKyAgICAgICAgcy0+Yy5sYXN0 X2RjW2ldID0gMTI4IDw8IHMtPmMuaW50cmFfZGNfcHJlY2lzaW9uOwogCiAgICAgICAgIHMtPmVu Y29kaW5nX2Vycm9yW2ldID0gMDsKICAgICB9Ci0gICAgaWYocy0+Y29kZWNfaWQ9PUFWX0NPREVD X0lEX0FNVil7Ci0gICAgICAgIHMtPmxhc3RfZGNbMF0gPSAxMjgqOC8xMzsKLSAgICAgICAgcy0+ bGFzdF9kY1sxXSA9IDEyOCo4LzE0OwotICAgICAgICBzLT5sYXN0X2RjWzJdID0gMTI4KjgvMTQ7 CisgICAgaWYgKHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQU1WKSB7CisgICAgICAgIHMt PmMubGFzdF9kY1swXSA9IDEyOCAqIDggLyAxMzsKKyAgICAgICAgcy0+Yy5sYXN0X2RjWzFdID0g MTI4ICogOCAvIDE0OworICAgICAgICBzLT5jLmxhc3RfZGNbMl0gPSAxMjggKiA4IC8gMTQ7CiAg ICAgfQotICAgIHMtPm1iX3NraXBfcnVuID0gMDsKLSAgICBtZW1zZXQocy0+bGFzdF9tdiwgMCwg c2l6ZW9mKHMtPmxhc3RfbXYpKTsKKyAgICBzLT5jLm1iX3NraXBfcnVuID0gMDsKKyAgICBtZW1z ZXQocy0+Yy5sYXN0X212LCAwLCBzaXplb2Yocy0+Yy5sYXN0X212KSk7CiAKICAgICBzLT5sYXN0 X212X2RpciA9IDA7CiAKLSAgICBzd2l0Y2gocy0+Y29kZWNfaWQpeworICAgIHN3aXRjaChzLT5j LmNvZGVjX2lkKXsKICAgICBjYXNlIEFWX0NPREVDX0lEX0gyNjM6CiAgICAgY2FzZSBBVl9DT0RF Q19JRF9IMjYzUDoKICAgICBjYXNlIEFWX0NPREVDX0lEX0ZMVjE6CiAgICAgICAgIGlmIChDT05G SUdfSDI2M19FTkNPREVSKQotICAgICAgICAgICAgcy0+Z29iX2luZGV4ID0gSDI2M19HT0JfSEVJ R0hUKHMtPmhlaWdodCk7CisgICAgICAgICAgICBzLT5jLmdvYl9pbmRleCA9IEgyNjNfR09CX0hF SUdIVChzLT5jLmhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURf TVBFRzQ6Ci0gICAgICAgIGlmKENPTkZJR19NUEVHNF9FTkNPREVSICYmIHMtPnBhcnRpdGlvbmVk X2ZyYW1lKQorICAgICAgICBpZihDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBzLT5jLnBhcnRpdGlv bmVkX2ZyYW1lKQogICAgICAgICAgICAgZmZfbXBlZzRfaW5pdF9wYXJ0aXRpb25zKHMpOwogICAg ICAgICBicmVhazsKICAgICB9CiAKLSAgICBzLT5yZXN5bmNfbWJfeD0wOwotICAgIHMtPnJlc3lu Y19tYl95PTA7Ci0gICAgcy0+Zmlyc3Rfc2xpY2VfbGluZSA9IDE7CisgICAgcy0+Yy5yZXN5bmNf bWJfeCA9IDA7CisgICAgcy0+Yy5yZXN5bmNfbWJfeSA9IDA7CisgICAgcy0+Yy5maXJzdF9zbGlj ZV9saW5lID0gMTsKICAgICBzLT5wdHJfbGFzdGdvYiA9IHMtPnBiLmJ1ZjsKLSAgICBmb3IgKG1i X3lfb3JkZXIgPSBzLT5zdGFydF9tYl95OyBtYl95X29yZGVyIDwgcy0+ZW5kX21iX3k7IG1iX3lf b3JkZXIrKykgewotICAgICAgICBpZiAoQ09ORklHX1NQRUVESFFfRU5DT0RFUiAmJiBzLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9TUEVFREhRKSB7CisgICAgZm9yIChpbnQgbWJfeV9vcmRlciA9 IHMtPmMuc3RhcnRfbWJfeTsgbWJfeV9vcmRlciA8IHMtPmMuZW5kX21iX3k7IG1iX3lfb3JkZXIr KykgeworICAgICAgICBpbnQgbWJfeTsKKyAgICAgICAgaWYgKENPTkZJR19TUEVFREhRX0VOQ09E RVIgJiYgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9TUEVFREhRKSB7CiAgICAgICAgICAg ICBpbnQgZmlyc3RfaW5fc2xpY2U7Ci0gICAgICAgICAgICBtYl95ID0gZmZfc3BlZWRocV9tYl95 X29yZGVyX3RvX21iKG1iX3lfb3JkZXIsIHMtPm1iX2hlaWdodCwgJmZpcnN0X2luX3NsaWNlKTsK LSAgICAgICAgICAgIGlmIChmaXJzdF9pbl9zbGljZSAmJiBtYl95X29yZGVyICE9IHMtPnN0YXJ0 X21iX3kpCisgICAgICAgICAgICBtYl95ID0gZmZfc3BlZWRocV9tYl95X29yZGVyX3RvX21iKG1i X3lfb3JkZXIsIHMtPmMubWJfaGVpZ2h0LCAmZmlyc3RfaW5fc2xpY2UpOworICAgICAgICAgICAg aWYgKGZpcnN0X2luX3NsaWNlICYmIG1iX3lfb3JkZXIgIT0gcy0+Yy5zdGFydF9tYl95KQogICAg ICAgICAgICAgICAgIGZmX3NwZWVkaHFfZW5kX3NsaWNlKHMpOwotICAgICAgICAgICAgcy0+bGFz dF9kY1swXSA9IHMtPmxhc3RfZGNbMV0gPSBzLT5sYXN0X2RjWzJdID0gMTAyNCA8PCBzLT5pbnRy YV9kY19wcmVjaXNpb247CisgICAgICAgICAgICBzLT5jLmxhc3RfZGNbMF0gPSBzLT5jLmxhc3Rf ZGNbMV0gPSBzLT5jLmxhc3RfZGNbMl0gPSAxMDI0IDw8IHMtPmMuaW50cmFfZGNfcHJlY2lzaW9u OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbWJfeSA9IG1iX3lfb3JkZXI7CiAgICAg ICAgIH0KLSAgICAgICAgcy0+bWJfeD0wOwotICAgICAgICBzLT5tYl95PSBtYl95OworICAgICAg ICBzLT5jLm1iX3ggPSAwOworICAgICAgICBzLT5jLm1iX3kgPSBtYl95OwogCi0gICAgICAgIGZm X3NldF9xc2NhbGUocywgcy0+cXNjYWxlKTsKLSAgICAgICAgZmZfaW5pdF9ibG9ja19pbmRleChz KTsKKyAgICAgICAgZmZfc2V0X3FzY2FsZSgmcy0+Yywgcy0+Yy5xc2NhbGUpOworICAgICAgICBm Zl9pbml0X2Jsb2NrX2luZGV4KCZzLT5jKTsKIAotICAgICAgICBmb3IobWJfeD0wOyBtYl94IDwg cy0+bWJfd2lkdGg7IG1iX3grKykgewotICAgICAgICAgICAgaW50IHh5PSBtYl95KnMtPm1iX3N0 cmlkZSArIG1iX3g7IC8vIHJlbW92ZWQgY29uc3QsIEgyNjEgbmVlZHMgdG8gYWRqdXN0IHRoaXMK KyAgICAgICAgZm9yIChpbnQgbWJfeCA9IDA7IG1iX3ggPCBzLT5jLm1iX3dpZHRoOyBtYl94Kysp IHsKKyAgICAgICAgICAgIGludCB4eSA9IG1iX3kqcy0+Yy5tYl9zdHJpZGUgKyBtYl94OyAvLyBy ZW1vdmVkIGNvbnN0LCBIMjYxIG5lZWRzIHRvIGFkanVzdCB0aGlzCiAgICAgICAgICAgICBpbnQg bWJfdHlwZT0gcy0+bWJfdHlwZVt4eV07CiAvLyAgICAgICAgICAgIGludCBkOwogICAgICAgICAg ICAgaW50IGRtaW49IElOVF9NQVg7CiAgICAgICAgICAgICBpbnQgZGlyOwotICAgICAgICAgICAg aW50IHNpemVfaW5jcmVhc2UgPSAgcy0+YXZjdHgtPmludGVybmFsLT5ieXRlX2J1ZmZlcl9zaXpl LzQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHMtPm1iX3dpZHRoKk1BWF9NQl9C WVRFUzsKKyAgICAgICAgICAgIGludCBzaXplX2luY3JlYXNlID0gIHMtPmMuYXZjdHgtPmludGVy bmFsLT5ieXRlX2J1ZmZlcl9zaXplLzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr IHMtPmMubWJfd2lkdGgqTUFYX01CX0JZVEVTOwogCiAgICAgICAgICAgICBmZl9tcHZfcmVhbGxv Y2F0ZV9wdXRiaXRidWZmZXIocywgTUFYX01CX0JZVEVTLCBzaXplX2luY3JlYXNlKTsKICAgICAg ICAgICAgIGlmIChwdXRfYnl0ZXNfbGVmdCgmcy0+cGIsIDApIDwgTUFYX01CX0JZVEVTKXsKLSAg ICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgImVuY29kZWQgZnJh bWUgdG9vIGxhcmdlXG4iKTsKKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZf TE9HX0VSUk9SLCAiZW5jb2RlZCBmcmFtZSB0b28gbGFyZ2VcbiIpOwogICAgICAgICAgICAgICAg IHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKHMtPmRhdGFfcGFydGl0 aW9uaW5nKXsKKyAgICAgICAgICAgIGlmIChzLT5jLmRhdGFfcGFydGl0aW9uaW5nKSB7CiAgICAg ICAgICAgICAgICAgaWYgKHB1dF9ieXRlc19sZWZ0KCZzLT5wYjIsICAgIDApIDwgTUFYX01CX0JZ VEVTIHx8CiAgICAgICAgICAgICAgICAgICAgIHB1dF9ieXRlc19sZWZ0KCZzLT50ZXhfcGIsIDAp IDwgTUFYX01CX0JZVEVTKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwg QVZfTE9HX0VSUk9SLCAiZW5jb2RlZCBwYXJ0aXRpb25lZCBmcmFtZSB0b28gbGFyZ2VcbiIpOwor ICAgICAgICAgICAgICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiZW5j b2RlZCBwYXJ0aXRpb25lZCBmcmFtZSB0b28gbGFyZ2VcbiIpOwogICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAg ICAgICBzLT5tYl94ID0gbWJfeDsKLSAgICAgICAgICAgIHMtPm1iX3kgPSBtYl95OyAgLy8gbW92 ZWQgaW50byBsb29wLCBjYW4gZ2V0IGNoYW5nZWQgYnkgSC4yNjEKLSAgICAgICAgICAgIGZmX3Vw ZGF0ZV9ibG9ja19pbmRleChzLCA4LCAwLCBzLT5jaHJvbWFfeF9zaGlmdCk7CisgICAgICAgICAg ICBzLT5jLm1iX3ggPSBtYl94OworICAgICAgICAgICAgcy0+Yy5tYl95ID0gbWJfeTsgIC8vIG1v dmVkIGludG8gbG9vcCwgY2FuIGdldCBjaGFuZ2VkIGJ5IEguMjYxCisgICAgICAgICAgICBmZl91 cGRhdGVfYmxvY2tfaW5kZXgoJnMtPmMsIDgsIDAsIHMtPmMuY2hyb21hX3hfc2hpZnQpOwogCi0g ICAgICAgICAgICBpZihDT05GSUdfSDI2MV9FTkNPREVSICYmIHMtPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0gyNjEpeworICAgICAgICAgICAgaWYoQ09ORklHX0gyNjFfRU5DT0RFUiAmJiBzLT5j LmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjEpewogICAgICAgICAgICAgICAgIGZmX2gyNjFf cmVvcmRlcl9tYl9pbmRleChzKTsKLSAgICAgICAgICAgICAgICB4eT0gcy0+bWJfeSpzLT5tYl9z dHJpZGUgKyBzLT5tYl94OworICAgICAgICAgICAgICAgIHh5ID0gcy0+Yy5tYl95KnMtPmMubWJf c3RyaWRlICsgcy0+Yy5tYl94OwogICAgICAgICAgICAgICAgIG1iX3R5cGU9IHMtPm1iX3R5cGVb eHldOwogICAgICAgICAgICAgfQogCkBAIC0zMDYzLDQwICszMDY2LDM5IEBAIHN0YXRpYyBpbnQg ZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3BhY2tldF9zaXplID49IHMtPnJ0cF9wYXlsb2Fk X3NpemUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYl95ICsgbWJfeCA+IDA7 CiAKLSAgICAgICAgICAgICAgICBpZihzLT5zdGFydF9tYl95ID09IG1iX3kgJiYgbWJfeSA+IDAg JiYgbWJfeD09MCkgaXNfZ29iX3N0YXJ0PTE7CisgICAgICAgICAgICAgICAgaWYgKHMtPmMuc3Rh cnRfbWJfeSA9PSBtYl95ICYmIG1iX3kgPiAwICYmIG1iX3ggPT0gMCkgaXNfZ29iX3N0YXJ0ID0g MTsKIAotICAgICAgICAgICAgICAgIHN3aXRjaChzLT5jb2RlY19pZCl7CisgICAgICAgICAgICAg ICAgc3dpdGNoKHMtPmMuY29kZWNfaWQpewogICAgICAgICAgICAgICAgIGNhc2UgQVZfQ09ERUNf SURfSDI2MzoKICAgICAgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lEX0gyNjNQOgotICAgICAg ICAgICAgICAgICAgICBpZighcy0+aDI2M19zbGljZV9zdHJ1Y3R1cmVkKQotICAgICAgICAgICAg ICAgICAgICAgICAgaWYocy0+bWJfeCB8fCBzLT5tYl95JXMtPmdvYl9pbmRleCkgaXNfZ29iX3N0 YXJ0PTA7CisgICAgICAgICAgICAgICAgICAgIGlmICghcy0+Yy5oMjYzX3NsaWNlX3N0cnVjdHVy ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocy0+Yy5tYl94IHx8IHMtPmMubWJfeSAl IHMtPmMuZ29iX2luZGV4KSBpc19nb2Jfc3RhcnQgPSAwOwogICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lEX01QRUcyVklERU86Ci0gICAg ICAgICAgICAgICAgICAgIGlmKHMtPm1iX3g9PTAgJiYgcy0+bWJfeSE9MCkgaXNfZ29iX3N0YXJ0 PTE7CisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jLm1iX3ggPT0gMCAmJiBzLT5jLm1iX3kg IT0gMCkgaXNfZ29iX3N0YXJ0ID0gMTsKICAgICAgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lE X01QRUcxVklERU86Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9NUEVHMVZJREVPICYmIHMtPm1iX3kgPj0gMTc1IHx8Ci0gICAgICAgICAgICAgICAg ICAgICAgICBzLT5tYl9za2lwX3J1bikKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmMuY29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzFWSURFTyAmJiBzLT5jLm1iX3kgPj0gMTc1IHx8Cisg ICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX3NraXBfcnVuKQogICAgICAgICAgICAgICAg ICAgICAgICAgaXNfZ29iX3N0YXJ0PTA7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICAgICAgIGNhc2UgQVZfQ09ERUNfSURfTUpQRUc6Ci0gICAgICAgICAgICAgICAgICAg IGlmKHMtPm1iX3g9PTAgJiYgcy0+bWJfeSE9MCkgaXNfZ29iX3N0YXJ0PTE7CisgICAgICAgICAg ICAgICAgICAgIGlmIChzLT5jLm1iX3ggPT0gMCAmJiBzLT5jLm1iX3kgIT0gMCkgaXNfZ29iX3N0 YXJ0ID0gMTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQog CiAgICAgICAgICAgICAgICAgaWYoaXNfZ29iX3N0YXJ0KXsKLSAgICAgICAgICAgICAgICAgICAg aWYocy0+c3RhcnRfbWJfeSAhPSBtYl95IHx8IG1iX3ghPTApeworICAgICAgICAgICAgICAgICAg ICBpZiAocy0+Yy5zdGFydF9tYl95ICE9IG1iX3kgfHwgbWJfeCAhPSAwKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICB3cml0ZV9zbGljZV9lbmQocyk7CiAKLSAgICAgICAgICAgICAgICAgICAg ICAgIGlmKENPTkZJR19NUEVHNF9FTkNPREVSICYmIHMtPmNvZGVjX2lkPT1BVl9DT0RFQ19JRF9N UEVHNCAmJiBzLT5wYXJ0aXRpb25lZF9mcmFtZSl7CisgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoQ09ORklHX01QRUc0X0VOQ09ERVIgJiYgcy0+Yy5jb2RlY19pZD09QVZfQ09ERUNfSURfTVBF RzQgJiYgcy0+Yy5wYXJ0aXRpb25lZF9mcmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmZl9tcGVnNF9pbml0X3BhcnRpdGlvbnMocyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQy KChwdXRfYml0c19jb3VudCgmcy0+cGIpJjcpID09IDApOwogICAgICAgICAgICAgICAgICAgICBj dXJyZW50X3BhY2tldF9zaXplPSBwdXRfYml0c19wdHIoJnMtPnBiKSAtIHMtPnB0cl9sYXN0Z29i OwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5lcnJvcl9yYXRlICYmIHMtPnJlc3luY19t Yl94ICsgcy0+cmVzeW5jX21iX3kgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQg ciA9IHB1dF9ieXRlc19jb3VudCgmcy0+cGIsIDApICsgcy0+cGljdHVyZV9udW1iZXIgKyAxNiAr IHMtPm1iX3ggKyBzLT5tYl95OworICAgICAgICAgICAgICAgICAgICBpZiAocy0+ZXJyb3JfcmF0 ZSAmJiBzLT5jLnJlc3luY19tYl94ICsgcy0+Yy5yZXN5bmNfbWJfeSA+IDApIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgIGludCByID0gcHV0X2J5dGVzX2NvdW50KCZzLT5wYiwgMCkgKyBzLT5j LnBpY3R1cmVfbnVtYmVyICsgMTYgKyBzLT5jLm1iX3ggKyBzLT5jLm1iX3k7CiAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgZCA9IDEwMCAvIHMtPmVycm9yX3JhdGU7CiAgICAgICAgICAgICAg ICAgICAgICAgICBpZihyICUgZCA9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dXJyZW50X3BhY2tldF9zaXplPTA7CkBAIC0zMTA1LDE4ICszMTA3LDE4IEBAIHN0YXRpYyBpbnQg ZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKICAgICAgICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg ICAgIHN3aXRjaChzLT5jb2RlY19pZCl7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocy0+ Yy5jb2RlY19pZCkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFWX0NPREVDX0lEX01QRUc0 OgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENPTkZJR19NUEVHNF9FTkNPREVSKSB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfbXBlZzRfZW5jb2RlX3ZpZGVvX3BhY2tldF9o ZWFkZXIocyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfbXBlZzRfY2xlYW5fYnVm ZmVycyhzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZl9tcGVnNF9jbGVhbl9idWZm ZXJzKCZzLT5jKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzFWSURF TzoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPOgogICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKENPTkZJR19NUEVHMVZJREVPX0VOQ09ERVIgfHwgQ09O RklHX01QRUcyVklERU9fRU5DT0RFUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZm X21wZWcxX2VuY29kZV9zbGljZV9oZWFkZXIocyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmZfbXBlZzFfY2xlYW5fYnVmZmVycyhzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmZl9tcGVnMV9jbGVhbl9idWZmZXJzKCZzLT5jKTsKICAgICAgICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug QVZfQ09ERUNfSURfSDI2MzoKQEAgLTMxMjgsMjUgKzMxMzAsMjUgQEAgc3RhdGljIGludCBlbmNv ZGVfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAg IGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MxKSB7CisgICAgICAgICAg ICAgICAgICAgIGlmIChzLT5jLmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzEpIHsK ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRzPSBwdXRfYml0c19jb3VudCgmcy0+cGIp OwogICAgICAgICAgICAgICAgICAgICAgICAgcy0+bWlzY19iaXRzKz0gYml0cyAtIHMtPmxhc3Rf Yml0czsKICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfYml0cz0gYml0czsKICAgICAg ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHMtPnB0cl9sYXN0Z29iICs9 IGN1cnJlbnRfcGFja2V0X3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIHMtPmZpcnN0X3NsaWNl X2xpbmU9MTsKLSAgICAgICAgICAgICAgICAgICAgcy0+cmVzeW5jX21iX3g9bWJfeDsKLSAgICAg ICAgICAgICAgICAgICAgcy0+cmVzeW5jX21iX3k9bWJfeTsKKyAgICAgICAgICAgICAgICAgICAg cy0+cHRyX2xhc3Rnb2IgICAgICAgKz0gY3VycmVudF9wYWNrZXRfc2l6ZTsKKyAgICAgICAgICAg ICAgICAgICAgcy0+Yy5maXJzdF9zbGljZV9saW5lID0gMTsKKyAgICAgICAgICAgICAgICAgICAg cy0+Yy5yZXN5bmNfbWJfeCAgICAgID0gbWJfeDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5y ZXN5bmNfbWJfeSAgICAgID0gbWJfeTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9 CiAKLSAgICAgICAgICAgIGlmKCAgKHMtPnJlc3luY19tYl94ICAgPT0gcy0+bWJfeCkKLSAgICAg ICAgICAgICAgICYmIHMtPnJlc3luY19tYl95KzEgPT0gcy0+bWJfeSl7Ci0gICAgICAgICAgICAg ICAgcy0+Zmlyc3Rfc2xpY2VfbGluZT0wOworICAgICAgICAgICAgaWYoICAocy0+Yy5yZXN5bmNf bWJfeCAgID09IHMtPmMubWJfeCkKKyAgICAgICAgICAgICAgICYmIHMtPmMucmVzeW5jX21iX3kr MSA9PSBzLT5jLm1iX3kpeworICAgICAgICAgICAgICAgIHMtPmMuZmlyc3Rfc2xpY2VfbGluZSA9 IDA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHMtPm1iX3NraXBwZWQ9MDsKKyAgICAg ICAgICAgIHMtPmMubWJfc2tpcHBlZCA9IDA7CiAgICAgICAgICAgICBzLT5kcXVhbnQ9MDsgLy9v bmx5IGZvciBRUF9SRAogCiAgICAgICAgICAgICB1cGRhdGVfbWJfaW5mbyhzLCAwKTsKQEAgLTMx NTcsMTczICszMTU5LDE3MyBAQCBzdGF0aWMgaW50IGVuY29kZV90aHJlYWQoQVZDb2RlY0NvbnRl eHQgKmMsIHZvaWQgKmFyZyl7CiAKICAgICAgICAgICAgICAgICBjb3B5X2NvbnRleHRfYmVmb3Jl X2VuY29kZSgmYmFja3VwX3MsIHMpOwogICAgICAgICAgICAgICAgIGJhY2t1cF9zLnBiPSBzLT5w YjsKLSAgICAgICAgICAgICAgICBiZXN0X3MuZGF0YV9wYXJ0aXRpb25pbmc9IHMtPmRhdGFfcGFy dGl0aW9uaW5nOwotICAgICAgICAgICAgICAgIGJlc3Rfcy5wYXJ0aXRpb25lZF9mcmFtZT0gcy0+ cGFydGl0aW9uZWRfZnJhbWU7Ci0gICAgICAgICAgICAgICAgaWYocy0+ZGF0YV9wYXJ0aXRpb25p bmcpeworICAgICAgICAgICAgICAgIGJlc3Rfcy5jLmRhdGFfcGFydGl0aW9uaW5nID0gcy0+Yy5k YXRhX3BhcnRpdGlvbmluZzsKKyAgICAgICAgICAgICAgICBiZXN0X3MuYy5wYXJ0aXRpb25lZF9m cmFtZSA9IHMtPmMucGFydGl0aW9uZWRfZnJhbWU7CisgICAgICAgICAgICAgICAgaWYgKHMtPmMu ZGF0YV9wYXJ0aXRpb25pbmcpIHsKICAgICAgICAgICAgICAgICAgICAgYmFja3VwX3MucGIyPSBz LT5wYjI7CiAgICAgICAgICAgICAgICAgICAgIGJhY2t1cF9zLnRleF9wYj0gcy0+dGV4X3BiOwog ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FORElEQVRF X01CX1RZUEVfSU5URVIpewotICAgICAgICAgICAgICAgICAgICBzLT5tdl9kaXIgPSBNVl9ESVJf Rk9SV0FSRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9IE1WX1RZUEVfMTZYMTY7 Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAgICAgICAgICAgICAg ICBzLT5tdlswXVswXVswXSA9IHMtPnBfbXZfdGFibGVbeHldWzBdOwotICAgICAgICAgICAgICAg ICAgICBzLT5tdlswXVswXVsxXSA9IHMtPnBfbXZfdGFibGVbeHldWzFdOworICAgICAgICAgICAg ICAgICAgICBzLT5jLm12X2RpciAgICAgID0gTVZfRElSX0ZPUldBUkQ7CisgICAgICAgICAgICAg ICAgICAgIHMtPmMubXZfdHlwZSAgICAgPSBNVl9UWVBFXzE2WDE2OworICAgICAgICAgICAgICAg ICAgICBzLT5jLm1iX2ludHJhICAgID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsw XVswXVswXSA9IHMtPnBfbXZfdGFibGVbeHldWzBdOworICAgICAgICAgICAgICAgICAgICBzLT5j Lm12WzBdWzBdWzFdID0gcy0+cF9tdl90YWJsZVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAg IGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+bXZb MF1bMF1bMF0sIHMtPm12WzBdWzBdWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+Yy5tdlswXVswXVswXSwgcy0+Yy5tdlswXVswXVsx XSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FORElE QVRFX01CX1RZUEVfSU5URVJfSSl7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1W X0RJUl9GT1JXQVJEOwotICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0gTVZfVFlQRV9G SUVMRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7CisgICAgICAgICAgICAg ICAgICAgIHMtPmMubXZfZGlyICAgPSBNVl9ESVJfRk9SV0FSRDsKKyAgICAgICAgICAgICAgICAg ICAgcy0+Yy5tdl90eXBlICA9IE1WX1RZUEVfRklFTEQ7CisgICAgICAgICAgICAgICAgICAgIHMt PmMubWJfaW50cmEgPSAwOwogICAgICAgICAgICAgICAgICAgICBmb3IoaT0wOyBpPDI7IGkrKyl7 Ci0gICAgICAgICAgICAgICAgICAgICAgICBqPSBzLT5maWVsZF9zZWxlY3RbMF1baV0gPSBzLT5w X2ZpZWxkX3NlbGVjdF90YWJsZVtpXVt4eV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5t dlswXVtpXVswXSA9IHMtPnBfZmllbGRfbXZfdGFibGVbaV1bal1beHldWzBdOwotICAgICAgICAg ICAgICAgICAgICAgICAgcy0+bXZbMF1baV1bMV0gPSBzLT5wX2ZpZWxkX212X3RhYmxlW2ldW2pd W3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGogPSBzLT5jLmZpZWxkX3NlbGVjdFsw XVtpXSA9IHMtPnBfZmllbGRfc2VsZWN0X3RhYmxlW2ldW3h5XTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHMtPmMubXZbMF1baV1bMF0gPSBzLT5jLnBfZmllbGRfbXZfdGFibGVbaV1bal1beHld WzBdOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVtpXVsxXSA9IHMtPmMucF9m aWVsZF9tdl90YWJsZVtpXVtqXVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMsICZiYWNrdXBfcywgJmJlc3RfcywgcGIsIHBi MiwgdGV4X3BiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZuZXh0 X2Jsb2NrLCAwLCAwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYobWJf dHlwZSZDQU5ESURBVEVfTUJfVFlQRV9TS0lQUEVEKXsKLSAgICAgICAgICAgICAgICAgICAgcy0+ bXZfZGlyID0gTVZfRElSX0ZPUldBUkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X3R5cGUg PSBNVl9UWVBFXzE2WDE2OwotICAgICAgICAgICAgICAgICAgICBzLT5tYl9pbnRyYT0gMDsKLSAg ICAgICAgICAgICAgICAgICAgcy0+bXZbMF1bMF1bMF0gPSAwOwotICAgICAgICAgICAgICAgICAg ICBzLT5tdlswXVswXVsxXSA9IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyICAg ICAgPSBNVl9ESVJfRk9SV0FSRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl90eXBlICAg ICA9IE1WX1RZUEVfMTZYMTY7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgICAg PSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzBdID0gMDsKKyAgICAgICAg ICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsxXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGVu Y29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+bXZbMF1b MF1bMF0sIHMtPm12WzBdWzBdWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZkbWluLCAmbmV4dF9ibG9jaywgcy0+Yy5tdlswXVswXVswXSwgcy0+Yy5tdlswXVswXVsxXSk7 CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FORElEQVRF X01CX1RZUEVfSU5URVI0Vil7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJ Ul9GT1JXQVJEOwotICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0gTVZfVFlQRV84WDg7 Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAg ICBzLT5jLm12X2RpciAgID0gTVZfRElSX0ZPUldBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMt PmMubXZfdHlwZSAgPSBNVl9UWVBFXzhYODsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9p bnRyYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8NDsgaSsrKXsKLSAgICAg ICAgICAgICAgICAgICAgICAgIHMtPm12WzBdW2ldWzBdID0gcy0+Y3VyX3BpYy5tb3Rpb25fdmFs WzBdW3MtPmJsb2NrX2luZGV4W2ldXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12 WzBdW2ldWzFdID0gcy0+Y3VyX3BpYy5tb3Rpb25fdmFsWzBdW3MtPmJsb2NrX2luZGV4W2ldXVsx XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1baV1bMF0gPSBzLT5jLmN1cl9w aWMubW90aW9uX3ZhbFswXVtzLT5jLmJsb2NrX2luZGV4W2ldXVswXTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHMtPmMubXZbMF1baV1bMV0gPSBzLT5jLmN1cl9waWMubW90aW9uX3ZhbFswXVtz LT5jLmJsb2NrX2luZGV4W2ldXVsxXTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgICBlbmNvZGVfbWJfaHEocywgJmJhY2t1cF9zLCAmYmVzdF9zLCBwYiwgcGIyLCB0 ZXhfcGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG1pbiwgJm5leHRfYmxv Y2ssIDAsIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZihtYl90eXBl JkNBTkRJREFURV9NQl9UWVBFX0ZPUldBUkQpewotICAgICAgICAgICAgICAgICAgICBzLT5tdl9k aXIgPSBNVl9ESVJfRk9SV0FSRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9IE1W X1RZUEVfMTZYMTY7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAg ICAgICAgICAgICAgICBzLT5tdlswXVswXVswXSA9IHMtPmJfZm9yd19tdl90YWJsZVt4eV1bMF07 Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzFdID0gcy0+Yl9mb3J3X212X3RhYmxl W3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl9kaXIgICAgICA9IE1WX0RJUl9G T1JXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X3R5cGUgICAgID0gTVZfVFlQRV8x NlgxNjsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9pbnRyYSAgICA9IDA7CisgICAgICAg ICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gPSBzLT5iX2ZvcndfbXZfdGFibGVbeHldWzBd OworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzFdID0gcy0+Yl9mb3J3X212X3Rh YmxlW3h5XVsxXTsKICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMsICZiYWNrdXBf cywgJmJlc3RfcywgcGIsIHBiMiwgdGV4X3BiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmRtaW4sICZuZXh0X2Jsb2NrLCBzLT5tdlswXVswXVswXSwgcy0+bXZbMF1bMF1bMV0p OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZuZXh0X2Jsb2NrLCBz LT5jLm12WzBdWzBdWzBdLCBzLT5jLm12WzBdWzBdWzFdKTsKICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgaWYobWJfdHlwZSZDQU5ESURBVEVfTUJfVFlQRV9CQUNLV0FSRCl7Ci0g ICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9CQUNLV0FSRDsKLSAgICAgICAg ICAgICAgICAgICAgcy0+bXZfdHlwZSA9IE1WX1RZUEVfMTZYMTY7Ci0gICAgICAgICAgICAgICAg ICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdlsxXVswXVswXSA9 IHMtPmJfYmFja19tdl90YWJsZVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12WzFd WzBdWzFdID0gcy0+Yl9iYWNrX212X3RhYmxlW3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAg cy0+Yy5tdl9kaXIgICAgICA9IE1WX0RJUl9CQUNLV0FSRDsKKyAgICAgICAgICAgICAgICAgICAg cy0+Yy5tdl90eXBlICAgICA9IE1WX1RZUEVfMTZYMTY7CisgICAgICAgICAgICAgICAgICAgIHMt PmMubWJfaW50cmEgICAgPSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzFdWzBdWzBd ID0gcy0+Yl9iYWNrX212X3RhYmxlW3h5XVswXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5t dlsxXVswXVsxXSA9IHMtPmJfYmFja19tdl90YWJsZVt4eV1bMV07CiAgICAgICAgICAgICAgICAg ICAgIGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+ bXZbMV1bMF1bMF0sIHMtPm12WzFdWzBdWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+Yy5tdlsxXVswXVswXSwgcy0+Yy5tdlsxXVsw XVsxXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FO RElEQVRFX01CX1RZUEVfQklESVIpewotICAgICAgICAgICAgICAgICAgICBzLT5tdl9kaXIgPSBN Vl9ESVJfRk9SV0FSRCB8IE1WX0RJUl9CQUNLV0FSRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+ bXZfdHlwZSA9IE1WX1RZUEVfMTZYMTY7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJh PSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVswXVswXSA9IHMtPmJfYmlkaXJfZm9y d19tdl90YWJsZVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzFdID0g cy0+Yl9iaWRpcl9mb3J3X212X3RhYmxlW3h5XVsxXTsKLSAgICAgICAgICAgICAgICAgICAgcy0+ bXZbMV1bMF1bMF0gPSBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGVbeHldWzBdOwotICAgICAgICAg ICAgICAgICAgICBzLT5tdlsxXVswXVsxXSA9IHMtPmJfYmlkaXJfYmFja19tdl90YWJsZVt4eV1b MV07CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyID0gTVZfRElSX0ZPUldBUkQgfCBN Vl9ESVJfQkFDS1dBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9IE1WX1RZ UEVfMTZYMTY7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7CisgICAgICAg ICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gPSBzLT5iX2JpZGlyX2ZvcndfbXZfdGFibGVb eHldWzBdOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzFdID0gcy0+Yl9iaWRp cl9mb3J3X212X3RhYmxlW3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlsxXVsw XVswXSA9IHMtPmJfYmlkaXJfYmFja19tdl90YWJsZVt4eV1bMF07CisgICAgICAgICAgICAgICAg ICAgIHMtPmMubXZbMV1bMF1bMV0gPSBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGVbeHldWzFdOwog ICAgICAgICAgICAgICAgICAgICBlbmNvZGVfbWJfaHEocywgJmJhY2t1cF9zLCAmYmVzdF9zLCBw YiwgcGIyLCB0ZXhfcGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG1pbiwg Jm5leHRfYmxvY2ssIDAsIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBp ZihtYl90eXBlJkNBTkRJREFURV9NQl9UWVBFX0ZPUldBUkRfSSl7Ci0gICAgICAgICAgICAgICAg ICAgIHMtPm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOwotICAgICAgICAgICAgICAgICAgICBzLT5t dl90eXBlID0gTVZfVFlQRV9GSUVMRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9 IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyID0gTVZfRElSX0ZPUldBUkQ7Cisg ICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9IE1WX1RZUEVfRklFTEQ7CisgICAgICAg ICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7CiAgICAgICAgICAgICAgICAgICAgIGZvcihp PTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIGo9IHMtPmZpZWxkX3NlbGVj dFswXVtpXSA9IHMtPmJfZmllbGRfc2VsZWN0X3RhYmxlWzBdW2ldW3h5XTsKLSAgICAgICAgICAg ICAgICAgICAgICAgIHMtPm12WzBdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVswXVtpXVtq XVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVtpXVsxXSA9IHMtPmJf ZmllbGRfbXZfdGFibGVbMF1baV1bal1beHldWzFdOworICAgICAgICAgICAgICAgICAgICAgICAg aiA9IHMtPmMuZmllbGRfc2VsZWN0WzBdW2ldID0gcy0+Yl9maWVsZF9zZWxlY3RfdGFibGVbMF1b aV1beHldOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVtpXVswXSA9IHMtPmJf ZmllbGRfbXZfdGFibGVbMF1baV1bal1beHldWzBdOworICAgICAgICAgICAgICAgICAgICAgICAg cy0+Yy5tdlswXVtpXVsxXSA9IHMtPmJfZmllbGRfbXZfdGFibGVbMF1baV1bal1beHldWzFdOwog ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9tYl9ocShz LCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgMCwgMCk7CiAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgIGlmKG1iX3R5cGUmQ0FORElEQVRFX01CX1RZUEVfQkFDS1dB UkRfSSl7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9CQUNLV0FSRDsK LSAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9IE1WX1RZUEVfRklFTEQ7Ci0gICAgICAg ICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12 X2RpciA9IE1WX0RJUl9CQUNLV0FSRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl90eXBl ID0gTVZfVFlQRV9GSUVMRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9pbnRyYT0gMDsK ICAgICAgICAgICAgICAgICAgICAgZm9yKGk9MDsgaTwyOyBpKyspewotICAgICAgICAgICAgICAg ICAgICAgICAgaj0gcy0+ZmllbGRfc2VsZWN0WzFdW2ldID0gcy0+Yl9maWVsZF9zZWxlY3RfdGFi bGVbMV1baV1beHldOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMV1baV1bMF0gPSBz LT5iX2ZpZWxkX212X3RhYmxlWzFdW2ldW2pdW3h5XVswXTsKLSAgICAgICAgICAgICAgICAgICAg ICAgIHMtPm12WzFdW2ldWzFdID0gcy0+Yl9maWVsZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1bMV07 CisgICAgICAgICAgICAgICAgICAgICAgICBqID0gcy0+Yy5maWVsZF9zZWxlY3RbMV1baV0gPSBz LT5iX2ZpZWxkX3NlbGVjdF90YWJsZVsxXVtpXVt4eV07CisgICAgICAgICAgICAgICAgICAgICAg ICBzLT5jLm12WzFdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1bMF07 CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzFdW2ldWzFdID0gcy0+Yl9maWVsZF9t dl90YWJsZVsxXVtpXVtqXVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMsICZiYWNrdXBfcywgJmJlc3RfcywgcGIsIHBiMiwg dGV4X3BiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZuZXh0X2Js b2NrLCAwLCAwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYobWJfdHlw ZSZDQU5ESURBVEVfTUJfVFlQRV9CSURJUl9JKXsKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZf ZGlyID0gTVZfRElSX0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQ7Ci0gICAgICAgICAgICAgICAg ICAgIHMtPm12X3R5cGUgPSBNVl9UWVBFX0ZJRUxEOwotICAgICAgICAgICAgICAgICAgICBzLT5t Yl9pbnRyYT0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl9kaXIgICA9IE1WX0RJUl9G T1JXQVJEIHwgTVZfRElSX0JBQ0tXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X3R5 cGUgID0gTVZfVFlQRV9GSUVMRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9pbnRyYSA9 IDA7CiAgICAgICAgICAgICAgICAgICAgIGZvcihkaXI9MDsgZGlyPDI7IGRpcisrKXsKICAgICAg ICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBqPSBzLT5maWVsZF9zZWxlY3RbZGlyXVtpXSA9IHMtPmJfZmllbGRfc2VsZWN0 X3RhYmxlW2Rpcl1baV1beHldOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12W2Rp cl1baV1bMF0gPSBzLT5iX2ZpZWxkX212X3RhYmxlW2Rpcl1baV1bal1beHldWzBdOwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPm12W2Rpcl1baV1bMV0gPSBzLT5iX2ZpZWxkX212X3Rh YmxlW2Rpcl1baV1bal1beHldWzFdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBz LT5jLmZpZWxkX3NlbGVjdFtkaXJdW2ldID0gcy0+Yl9maWVsZF9zZWxlY3RfdGFibGVbZGlyXVtp XVt4eV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdltkaXJdW2ldWzBdID0g cy0+Yl9maWVsZF9tdl90YWJsZVtkaXJdW2ldW2pdW3h5XVswXTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5jLm12W2Rpcl1baV1bMV0gPSBzLT5iX2ZpZWxkX212X3RhYmxlW2Rpcl1b aV1bal1beHldWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZi ZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZkbWluLCAmbmV4dF9ibG9jaywgMCwgMCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgIGlmKG1iX3R5cGUmQ0FORElEQVRFX01CX1RZUEVfSU5UUkEpewotICAgICAgICAgICAg ICAgICAgICBzLT5tdl9kaXIgPSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0g TVZfVFlQRV8xNlgxNjsKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDE7Ci0gICAg ICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdID0gMDsKLSAgICAgICAgICAgICAgICAgICAg cy0+bXZbMF1bMF1bMV0gPSAwOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X2RpciAgICAg ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl90eXBlICAgICA9IE1WX1RZUEVfMTZY MTY7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgICAgPSAxOworICAgICAgICAg ICAgICAgICAgICBzLT5jLm12WzBdWzBdWzBdID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+ Yy5tdlswXVswXVsxXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9tYl9ocShzLCAm YmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRleF9wYiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgMCwgMCk7Ci0gICAgICAgICAgICAgICAg ICAgIHMtPm1iaW50cmFfdGFibGVbeHldID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5t YmludHJhX3RhYmxlW3h5XSA9IDE7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg ICAgaWYgKChzLT5tcHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19RUF9SRCkgJiYgZG1pbiA8IElOVF9N QVgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoYmVzdF9zLm12X3R5cGU9PU1WX1RZUEVfMTZY MTYpeyAvL0ZJWE1FIG1vdmUgNG12IGFmdGVyIFFQUkQKLSAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGludCBsYXN0X3FwPSBiYWNrdXBfcy5xc2NhbGU7CisgICAgICAgICAgICAgICAgICAg IGlmIChiZXN0X3MuYy5tdl90eXBlID09IE1WX1RZUEVfMTZYMTYpIHsgLy9GSVhNRSBtb3ZlIDRt diBhZnRlciBRUFJECisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGFzdF9xcCA9 IGJhY2t1cF9zLmMucXNjYWxlOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHFwaSwgcXAs IGRjWzZdOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBhY1s2XVsxNl07Ci0gICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbXZkaXI9IChiZXN0X3MubXZfZGlyJk1WX0RJ Ul9CQUNLV0FSRCkgPyAxIDogMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBt dmRpciA9IChiZXN0X3MuYy5tdl9kaXIgJiBNVl9ESVJfQkFDS1dBUkQpID8gMSA6IDA7CiAgICAg ICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgaW50IGRxdWFudF90YWJbNF09ey0xLDEs LTIsMn07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RvcmVjb2VmcyA9IHMtPm1iX2lu dHJhICYmIHMtPmRjX3ZhbFswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdG9yZWNv ZWZzID0gcy0+Yy5tYl9pbnRyYSAmJiBzLT5jLmRjX3ZhbFswXTsKIAogICAgICAgICAgICAgICAg ICAgICAgICAgYXZfYXNzZXJ0MihiYWNrdXBfcy5kcXVhbnQgPT0gMCk7CiAKICAgICAgICAgICAg ICAgICAgICAgICAgIC8vRklYTUUgaW50cmEKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12 X2Rpcj0gYmVzdF9zLm12X2RpcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12X3R5cGUg PSBNVl9UWVBFXzE2WDE2OwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IGJl c3Rfcy5tYl9pbnRyYTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdID0g YmVzdF9zLm12WzBdWzBdWzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMF1bMF1b MV0gPSBiZXN0X3MubXZbMF1bMF1bMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlsx XVswXVswXSA9IGJlc3Rfcy5tdlsxXVswXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMt Pm12WzFdWzBdWzFdID0gYmVzdF9zLm12WzFdWzBdWzFdOwotCi0gICAgICAgICAgICAgICAgICAg ICAgICBxcGkgPSBzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgPyAyIDogMDsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyICAgPSBiZXN0X3MuYy5tdl9kaXI7Cisg ICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12X3R5cGUgID0gTVZfVFlQRV8xNlgxNjsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgPSBiZXN0X3MuYy5tYl9pbnRyYTsK KyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gPSBiZXN0X3MuYy5tdlsw XVswXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMV0gPSBiZXN0 X3MuYy5tdlswXVswXVsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMV1bMF1b MF0gPSBiZXN0X3MuYy5tdlsxXVswXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMu bXZbMV1bMF1bMV0gPSBiZXN0X3MuYy5tdlsxXVswXVsxXTsKKworICAgICAgICAgICAgICAgICAg ICAgICAgcXBpID0gcy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgPyAyIDogMDsK ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcig7IHFwaTw0OyBxcGkrKyl7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGRxdWFudD0gZHF1YW50X3RhYltxcGldOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHFwPSBsYXN0X3FwICsgZHF1YW50OwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmKHFwIDwgcy0+YXZjdHgtPnFtaW4gfHwgcXAgPiBzLT5hdmN0eC0+cW1h eCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXAgPCBzLT5jLmF2Y3R4LT5xbWlu IHx8IHFwID4gcy0+Yy5hdmN0eC0+cW1heCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3VwX3MuZHF1YW50 PSBkcXVhbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RvcmVjb2Vmcyl7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8NjsgaSsrKXsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjW2ldPSBzLT5kY192YWxbMF1bIHMtPmJs b2NrX2luZGV4W2ldIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1j cHkoYWNbaV0sIHMtPmFjX3ZhbFswXVtzLT5ibG9ja19pbmRleFtpXV0sIHNpemVvZihpbnQxNl90 KSoxNik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY1tpXSA9IHMtPmMu ZGNfdmFsWzBdW3MtPmMuYmxvY2tfaW5kZXhbaV1dOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWVtY3B5KGFjW2ldLCBzLT5jLmFjX3ZhbFswXVtzLT5jLmJsb2NrX2luZGV4 W2ldXSwgc2l6ZW9mKGludDE2X3QpKjE2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRl eF9wYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZu ZXh0X2Jsb2NrLCBzLT5tdlttdmRpcl1bMF1bMF0sIHMtPm12W212ZGlyXVswXVsxXSk7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYoYmVzdF9zLnFzY2FsZSAhPSBxcCl7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9jaywgcy0+ Yy5tdlttdmRpcl1bMF1bMF0sIHMtPmMubXZbbXZkaXJdWzBdWzFdKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoYmVzdF9zLmMucXNjYWxlICE9IHFwKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmKHN0b3JlY29lZnMpewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9yKGk9MDsgaTw2OyBpKyspewotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMtPmRjX3ZhbFswXVsgcy0+YmxvY2tfaW5kZXhbaV0gXT0gZGNb aV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHMtPmFj X3ZhbFswXVtzLT5ibG9ja19pbmRleFtpXV0sIGFjW2ldLCBzaXplb2YoaW50MTZfdCkqMTYpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMuZGNfdmFsWzBdW3Mt PmMuYmxvY2tfaW5kZXhbaV1dID0gZGNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWVtY3B5KHMtPmMuYWNfdmFsWzBdW3MtPmMuYmxvY2tfaW5kZXhbaV1dLCBh Y1tpXSwgc2l6ZW9mKGludDE2X3QpKjE2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KQEAgLTMzMzUsNDUgKzMzMzcsNDUgQEAgc3RhdGljIGludCBlbmNv ZGVfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgICAgICAgICAgICAg ICAgICBpbnQgbXk9IHMtPmJfZGlyZWN0X212X3RhYmxlW3h5XVsxXTsKIAogICAgICAgICAgICAg ICAgICAgICBiYWNrdXBfcy5kcXVhbnQgPSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdl9k aXIgPSBNVl9ESVJfRk9SV0FSRCB8IE1WX0RJUl9CQUNLV0FSRCB8IE1WX0RJUkVDVDsKLSAgICAg ICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGZmX21w ZWc0X3NldF9kaXJlY3RfbXYocywgbXgsIG15KTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5t dl9kaXIgICAgID0gTVZfRElSX0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQgfCBNVl9ESVJFQ1Q7 CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgICA9IDA7CisgICAgICAgICAgICAg ICAgICAgIGZmX21wZWc0X3NldF9kaXJlY3RfbXYoJnMtPmMsIG14LCBteSk7CiAgICAgICAgICAg ICAgICAgICAgIGVuY29kZV9tYl9ocShzLCAmYmFja3VwX3MsICZiZXN0X3MsIHBiLCBwYjIsIHRl eF9wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWluLCAmbmV4dF9ibG9j aywgbXgsIG15KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYoQ09ORklH X01QRUc0X0VOQ09ERVIgJiYgbWJfdHlwZSZDQU5ESURBVEVfTUJfVFlQRV9ESVJFQ1QwKXsKICAg ICAgICAgICAgICAgICAgICAgYmFja3VwX3MuZHF1YW50ID0gMDsKLSAgICAgICAgICAgICAgICAg ICAgcy0+bXZfZGlyID0gTVZfRElSX0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQgfCBNVl9ESVJF Q1Q7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAgICAgICAgICAg ICAgICBmZl9tcGVnNF9zZXRfZGlyZWN0X212KHMsIDAsIDApOworICAgICAgICAgICAgICAgICAg ICBzLT5jLm12X2RpciAgID0gTVZfRElSX0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQgfCBNVl9E SVJFQ1Q7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmEgPSAwOworICAgICAgICAg ICAgICAgICAgICBmZl9tcGVnNF9zZXRfZGlyZWN0X212KCZzLT5jLCAwLCAwKTsKICAgICAgICAg ICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMsICZiYWNrdXBfcywgJmJlc3RfcywgcGIsIHBiMiwg dGV4X3BiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtaW4sICZuZXh0X2Js b2NrLCAwLCAwKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFiZXN0 X3MubWJfaW50cmEgJiYgcy0+bXB2X2ZsYWdzICYgRkZfTVBWX0ZMQUdfU0tJUF9SRCkgeworICAg ICAgICAgICAgICAgIGlmICghYmVzdF9zLmMubWJfaW50cmEgJiYgcy0+bXB2X2ZsYWdzICYgRkZf TVBWX0ZMQUdfU0tJUF9SRCkgewogICAgICAgICAgICAgICAgICAgICBpbnQgY29kZWQ9MDsKICAg ICAgICAgICAgICAgICAgICAgZm9yKGk9MDsgaTw2OyBpKyspCi0gICAgICAgICAgICAgICAgICAg ICAgICBjb2RlZCB8PSBzLT5ibG9ja19sYXN0X2luZGV4W2ldOworICAgICAgICAgICAgICAgICAg ICAgICAgY29kZWQgfD0gcy0+Yy5ibG9ja19sYXN0X2luZGV4W2ldOwogICAgICAgICAgICAgICAg ICAgICBpZihjb2RlZCl7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbXgsbXk7Ci0gICAg ICAgICAgICAgICAgICAgICAgICBtZW1jcHkocy0+bXYsIGJlc3Rfcy5tdiwgc2l6ZW9mKHMtPm12 KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZihDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBi ZXN0X3MubXZfZGlyICYgTVZfRElSRUNUKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNw eShzLT5jLm12LCBiZXN0X3MuYy5tdiwgc2l6ZW9mKHMtPmMubXYpKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBiZXN0X3MuYy5tdl9kaXIgJiBN Vl9ESVJFQ1QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteD1teT0wOyAvL0ZJWE1F IGZpbmQgdGhlIG9uZSB3ZSBhY3R1YWxseSB1c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmZfbXBlZzRfc2V0X2RpcmVjdF9tdihzLCBteCwgbXkpOwotICAgICAgICAgICAgICAgICAg ICAgICAgfWVsc2UgaWYoYmVzdF9zLm12X2RpciZNVl9ESVJfQkFDS1dBUkQpewotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG14PSBzLT5tdlsxXVswXVswXTsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBteT0gcy0+bXZbMV1bMF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmZfbXBlZzRfc2V0X2RpcmVjdF9tdigmcy0+YywgbXgsIG15KTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIH0gZWxzZSBpZiAoYmVzdF9zLmMubXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXggPSBzLT5jLm12WzFdWzBdWzBdOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG15ID0gcy0+Yy5tdlsxXVswXVsxXTsKICAgICAgICAg ICAgICAgICAgICAgICAgIH1lbHNlewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG14PSBz LT5tdlswXVswXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBteT0gcy0+bXZbMF1b MF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXggPSBzLT5jLm12WzBdWzBdWzBd OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ID0gcy0+Yy5tdlswXVswXVsxXTsKICAg ICAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZf ZGlyPSBiZXN0X3MubXZfZGlyOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9 IGJlc3Rfcy5tdl90eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7 Ci0vKiAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzBdID0gYmVzdF9zLm12WzBd WzBdWzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXZbMF1bMF1bMV0gPSBiZXN0X3Mu bXZbMF1bMF1bMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlsxXVswXVswXSA9IGJl c3Rfcy5tdlsxXVswXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzFdWzBdWzFd ID0gYmVzdF9zLm12WzFdWzBdWzFdOyovCisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12 X2RpciAgID0gYmVzdF9zLmMubXZfZGlyOworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5t dl90eXBlICA9IGJlc3Rfcy5jLm12X3R5cGU7CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5j Lm1iX2ludHJhID0gMDsKKy8qICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdlswXVswXVsw XSA9IGJlc3Rfcy5tdlswXVswXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmMubXZb MF1bMF1bMV0gPSBiZXN0X3MubXZbMF1bMF1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICBz LT5jLm12WzFdWzBdWzBdID0gYmVzdF9zLm12WzFdWzBdWzBdOworICAgICAgICAgICAgICAgICAg ICAgICAgcy0+Yy5tdlsxXVswXVsxXSA9IGJlc3Rfcy5tdlsxXVswXVsxXTsqLwogICAgICAgICAg ICAgICAgICAgICAgICAgYmFja3VwX3MuZHF1YW50PSAwOwogICAgICAgICAgICAgICAgICAgICAg ICAgcy0+c2tpcGRjdD0xOwogICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX21iX2hxKHMs ICZiYWNrdXBfcywgJmJlc3RfcywgcGIsIHBiMiwgdGV4X3BiLApAQCAtMzM4OSw3ICszMzkxLDcg QEAgc3RhdGljIGludCBlbmNvZGVfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcp ewogICAgICAgICAgICAgICAgIGZmX2NvcHlfYml0cygmYmFja3VwX3MucGIsIGJpdF9idWZbbmV4 dF9ibG9ja14xXSwgcGJfYml0c19jb3VudCk7CiAgICAgICAgICAgICAgICAgcy0+cGI9IGJhY2t1 cF9zLnBiOwogCi0gICAgICAgICAgICAgICAgaWYocy0+ZGF0YV9wYXJ0aXRpb25pbmcpeworICAg ICAgICAgICAgICAgIGlmIChzLT5jLmRhdGFfcGFydGl0aW9uaW5nKSB7CiAgICAgICAgICAgICAg ICAgICAgIHBiMl9iaXRzX2NvdW50PSBwdXRfYml0c19jb3VudCgmcy0+cGIyKTsKICAgICAgICAg ICAgICAgICAgICAgZmx1c2hfcHV0X2JpdHMoJnMtPnBiMik7CiAgICAgICAgICAgICAgICAgICAg IGZmX2NvcHlfYml0cygmYmFja3VwX3MucGIyLCBiaXRfYnVmMltuZXh0X2Jsb2NrXjFdLCBwYjJf Yml0c19jb3VudCk7CkBAIC0zNDAzLDE3OCArMzQwNSwxNzggQEAgc3RhdGljIGludCBlbmNvZGVf dGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgICAgICAgICAgICAgIHMt Pmxhc3RfYml0cz0gcHV0X2JpdHNfY291bnQoJnMtPnBiKTsKIAogICAgICAgICAgICAgICAgIGlm IChDT05GSUdfSDI2M19FTkNPREVSICYmCi0gICAgICAgICAgICAgICAgICAgIHMtPm91dF9mb3Jt YXQgPT0gRk1UX0gyNjMgJiYgcy0+cGljdF90eXBlIT1BVl9QSUNUVVJFX1RZUEVfQikKKyAgICAg ICAgICAgICAgICAgICAgcy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzICYmIHMtPmMucGljdF90 eXBlIT1BVl9QSUNUVVJFX1RZUEVfQikKICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M191cGRh dGVfbWIocyk7CiAKICAgICAgICAgICAgICAgICBpZihuZXh0X2Jsb2NrPT0wKXsgLy9GSVhNRSAx NiB2cyBsaW5lc2l6ZTE2Ci0gICAgICAgICAgICAgICAgICAgIHMtPmhkc3AucHV0X3BpeGVsc190 YWJbMF1bMF0ocy0+ZGVzdFswXSwgcy0+c2MucmRfc2NyYXRjaHBhZCAgICAgICAgICAgICAgICAg ICAgICwgcy0+bGluZXNpemUgICwxNik7Ci0gICAgICAgICAgICAgICAgICAgIHMtPmhkc3AucHV0 X3BpeGVsc190YWJbMV1bMF0ocy0+ZGVzdFsxXSwgcy0+c2MucmRfc2NyYXRjaHBhZCArIDE2KnMt PmxpbmVzaXplICAgICwgcy0+dXZsaW5lc2l6ZSwgOCk7Ci0gICAgICAgICAgICAgICAgICAgIHMt Pmhkc3AucHV0X3BpeGVsc190YWJbMV1bMF0ocy0+ZGVzdFsyXSwgcy0+c2MucmRfc2NyYXRjaHBh ZCArIDE2KnMtPmxpbmVzaXplICsgOCwgcy0+dXZsaW5lc2l6ZSwgOCk7CisgICAgICAgICAgICAg ICAgICAgIHMtPmMuaGRzcC5wdXRfcGl4ZWxzX3RhYlswXVswXShzLT5jLmRlc3RbMF0sIHMtPmMu c2MucmRfc2NyYXRjaHBhZCAgICAgICAgICAgICAgICAgICAgICwgcy0+Yy5saW5lc2l6ZSAgLDE2 KTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5oZHNwLnB1dF9waXhlbHNfdGFiWzFdWzBdKHMt PmMuZGVzdFsxXSwgcy0+Yy5zYy5yZF9zY3JhdGNocGFkICsgMTYqcy0+Yy5saW5lc2l6ZSAgICAs IHMtPmMudXZsaW5lc2l6ZSwgOCk7CisgICAgICAgICAgICAgICAgICAgIHMtPmMuaGRzcC5wdXRf cGl4ZWxzX3RhYlsxXVswXShzLT5jLmRlc3RbMl0sIHMtPmMuc2MucmRfc2NyYXRjaHBhZCArIDE2 KnMtPmMubGluZXNpemUgKyA4LCBzLT5jLnV2bGluZXNpemUsIDgpOwogICAgICAgICAgICAgICAg IH0KIAotICAgICAgICAgICAgICAgIGlmKHMtPmF2Y3R4LT5tYl9kZWNpc2lvbiA9PSBGRl9NQl9E RUNJU0lPTl9CSVRTKQotICAgICAgICAgICAgICAgICAgICBtcHZfcmVjb25zdHJ1Y3RfbWIocywg cy0+YmxvY2spOworICAgICAgICAgICAgICAgIGlmKHMtPmMuYXZjdHgtPm1iX2RlY2lzaW9uID09 IEZGX01CX0RFQ0lTSU9OX0JJVFMpCisgICAgICAgICAgICAgICAgICAgIG1wdl9yZWNvbnN0cnVj dF9tYihzLCBzLT5jLmJsb2NrKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg ICAgaW50IG1vdGlvbl94ID0gMCwgbW90aW9uX3kgPSAwOwotICAgICAgICAgICAgICAgIHMtPm12 X3R5cGU9TVZfVFlQRV8xNlgxNjsKKyAgICAgICAgICAgICAgICBzLT5jLm12X3R5cGU9TVZfVFlQ RV8xNlgxNjsKICAgICAgICAgICAgICAgICAvLyBvbmx5IG9uZSBNQi1UeXBlIHBvc3NpYmxlCiAK ICAgICAgICAgICAgICAgICBzd2l0Y2gobWJfdHlwZSl7CiAgICAgICAgICAgICAgICAgY2FzZSBD QU5ESURBVEVfTUJfVFlQRV9JTlRSQToKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfZGlyID0g MDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bWJfaW50cmE9IDE7Ci0gICAgICAgICAgICAgICAg ICAgIG1vdGlvbl94PSBzLT5tdlswXVswXVswXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1v dGlvbl95PSBzLT5tdlswXVswXVsxXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iaW50 cmFfdGFibGVbeHldID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5tdl9kaXIgPSAwOwor ICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAxOworICAgICAgICAgICAgICAgICAg ICBtb3Rpb25feD0gcy0+Yy5tdlswXVswXVswXSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1v dGlvbl95PSBzLT5jLm12WzBdWzBdWzFdID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+Yy5t YmludHJhX3RhYmxlW3h5XSA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgICAgIGNhc2UgQ0FORElEQVRFX01CX1RZUEVfSU5URVI6Ci0gICAgICAgICAgICAgICAg ICAgIHMtPm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOwotICAgICAgICAgICAgICAgICAgICBzLT5t Yl9pbnRyYT0gMDsKLSAgICAgICAgICAgICAgICAgICAgbW90aW9uX3g9IHMtPm12WzBdWzBdWzBd ID0gcy0+cF9tdl90YWJsZVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIG1vdGlvbl95PSBz LT5tdlswXVswXVsxXSA9IHMtPnBfbXZfdGFibGVbeHldWzFdOworICAgICAgICAgICAgICAgICAg ICBzLT5jLm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5j Lm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAgICBtb3Rpb25feD0gcy0+Yy5tdlswXVsw XVswXSA9IHMtPnBfbXZfdGFibGVbeHldWzBdOworICAgICAgICAgICAgICAgICAgICBtb3Rpb25f eT0gcy0+Yy5tdlswXVswXVsxXSA9IHMtPnBfbXZfdGFibGVbeHldWzFdOwogICAgICAgICAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENBTkRJREFURV9NQl9UWVBFX0lO VEVSX0k6Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOwot ICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0gTVZfVFlQRV9GSUVMRDsKLSAgICAgICAg ICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZf ZGlyID0gTVZfRElSX0ZPUldBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9 IE1WX1RZUEVfRklFTEQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7CiAg ICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAgICAgICAg ICAgICAgIGo9IHMtPmZpZWxkX3NlbGVjdFswXVtpXSA9IHMtPnBfZmllbGRfc2VsZWN0X3RhYmxl W2ldW3h5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdW2ldWzBdID0gcy0+cF9m aWVsZF9tdl90YWJsZVtpXVtqXVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5t dlswXVtpXVsxXSA9IHMtPnBfZmllbGRfbXZfdGFibGVbaV1bal1beHldWzFdOworICAgICAgICAg ICAgICAgICAgICAgICAgaj0gcy0+Yy5maWVsZF9zZWxlY3RbMF1baV0gPSBzLT5wX2ZpZWxkX3Nl bGVjdF90YWJsZVtpXVt4eV07CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ld WzBdID0gcy0+Yy5wX2ZpZWxkX212X3RhYmxlW2ldW2pdW3h5XVswXTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHMtPmMubXZbMF1baV1bMV0gPSBzLT5jLnBfZmllbGRfbXZfdGFibGVbaV1bal1b eHldWzFdOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgICAgIGNhc2UgQ0FORElEQVRFX01CX1RZUEVfSU5URVI0VjoKLSAgICAg ICAgICAgICAgICAgICAgcy0+bXZfZGlyID0gTVZfRElSX0ZPUldBUkQ7Ci0gICAgICAgICAgICAg ICAgICAgIHMtPm12X3R5cGUgPSBNVl9UWVBFXzhYODsKLSAgICAgICAgICAgICAgICAgICAgcy0+ bWJfaW50cmE9IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyID0gTVZfRElSX0ZP UldBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9IE1WX1RZUEVfOFg4Owor ICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAwOwogICAgICAgICAgICAgICAgICAg ICBmb3IoaT0wOyBpPDQ7IGkrKyl7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVtp XVswXSA9IHMtPmN1cl9waWMubW90aW9uX3ZhbFswXVtzLT5ibG9ja19pbmRleFtpXV1bMF07Ci0g ICAgICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVtpXVsxXSA9IHMtPmN1cl9waWMubW90aW9u X3ZhbFswXVtzLT5ibG9ja19pbmRleFtpXV1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICBz LT5jLm12WzBdW2ldWzBdID0gcy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bcy0+Yy5ibG9ja19p bmRleFtpXV1bMF07CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ldWzFdID0g cy0+Yy5jdXJfcGljLm1vdGlvbl92YWxbMF1bcy0+Yy5ibG9ja19pbmRleFtpXV1bMV07CiAgICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgICAgY2FzZSBDQU5ESURBVEVfTUJfVFlQRV9ESVJFQ1Q6CiAgICAgICAgICAgICAgICAgICAg IGlmIChDT05GSUdfTVBFRzRfRU5DT0RFUikgewotICAgICAgICAgICAgICAgICAgICAgICAgcy0+ bXZfZGlyID0gTVZfRElSX0ZPUldBUkR8TVZfRElSX0JBQ0tXQVJEfE1WX0RJUkVDVDsKLSAgICAg ICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAgICAg ICAgcy0+Yy5tdl9kaXIgPSBNVl9ESVJfRk9SV0FSRHxNVl9ESVJfQkFDS1dBUkR8TVZfRElSRUNU OworICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5tYl9pbnRyYT0gMDsKICAgICAgICAgICAg ICAgICAgICAgICAgIG1vdGlvbl94PXMtPmJfZGlyZWN0X212X3RhYmxlW3h5XVswXTsKICAgICAg ICAgICAgICAgICAgICAgICAgIG1vdGlvbl95PXMtPmJfZGlyZWN0X212X3RhYmxlW3h5XVsxXTsK LSAgICAgICAgICAgICAgICAgICAgICAgIGZmX21wZWc0X3NldF9kaXJlY3RfbXYocywgbW90aW9u X3gsIG1vdGlvbl95KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZmX21wZWc0X3NldF9kaXJl Y3RfbXYoJnMtPmMsIG1vdGlvbl94LCBtb3Rpb25feSk7CiAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURB VEVfTUJfVFlQRV9ESVJFQ1QwOgogICAgICAgICAgICAgICAgICAgICBpZiAoQ09ORklHX01QRUc0 X0VOQ09ERVIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9G T1JXQVJEfE1WX0RJUl9CQUNLV0FSRHxNVl9ESVJFQ1Q7Ci0gICAgICAgICAgICAgICAgICAgICAg ICBzLT5tYl9pbnRyYT0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZmX21wZWc0X3NldF9k aXJlY3RfbXYocywgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12X2RpciA9 IE1WX0RJUl9GT1JXQVJEfE1WX0RJUl9CQUNLV0FSRHxNVl9ESVJFQ1Q7CisgICAgICAgICAgICAg ICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgZmZf bXBlZzRfc2V0X2RpcmVjdF9tdigmcy0+YywgMCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURB VEVfTUJfVFlQRV9CSURJUjoKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfZGlyID0gTVZfRElS X0ZPUldBUkQgfCBNVl9ESVJfQkFDS1dBUkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2lu dHJhPSAwOwotICAgICAgICAgICAgICAgICAgICBzLT5tdlswXVswXVswXSA9IHMtPmJfYmlkaXJf Zm9yd19tdl90YWJsZVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12WzBdWzBdWzFd ID0gcy0+Yl9iaWRpcl9mb3J3X212X3RhYmxlW3h5XVsxXTsKLSAgICAgICAgICAgICAgICAgICAg cy0+bXZbMV1bMF1bMF0gPSBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGVbeHldWzBdOwotICAgICAg ICAgICAgICAgICAgICBzLT5tdlsxXVswXVsxXSA9IHMtPmJfYmlkaXJfYmFja19tdl90YWJsZVt4 eV1bMV07CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfZGlyID0gTVZfRElSX0ZPUldBUkQg fCBNVl9ESVJfQkFDS1dBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7 CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZbMF1bMF1bMF0gPSBzLT5iX2JpZGlyX2Zvcndf bXZfdGFibGVbeHldWzBdOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdWzBdWzFdID0g cy0+Yl9iaWRpcl9mb3J3X212X3RhYmxlW3h5XVsxXTsKKyAgICAgICAgICAgICAgICAgICAgcy0+ Yy5tdlsxXVswXVswXSA9IHMtPmJfYmlkaXJfYmFja19tdl90YWJsZVt4eV1bMF07CisgICAgICAg ICAgICAgICAgICAgIHMtPmMubXZbMV1bMF1bMV0gPSBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGVb eHldWzFdOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNl IENBTkRJREFURV9NQl9UWVBFX0JBQ0tXQVJEOgotICAgICAgICAgICAgICAgICAgICBzLT5tdl9k aXIgPSBNVl9ESVJfQkFDS1dBUkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAw OwotICAgICAgICAgICAgICAgICAgICBtb3Rpb25feD0gcy0+bXZbMV1bMF1bMF0gPSBzLT5iX2Jh Y2tfbXZfdGFibGVbeHldWzBdOwotICAgICAgICAgICAgICAgICAgICBtb3Rpb25feT0gcy0+bXZb MV1bMF1bMV0gPSBzLT5iX2JhY2tfbXZfdGFibGVbeHldWzFdOworICAgICAgICAgICAgICAgICAg ICBzLT5jLm12X2RpciA9IE1WX0RJUl9CQUNLV0FSRDsKKyAgICAgICAgICAgICAgICAgICAgcy0+ Yy5tYl9pbnRyYT0gMDsKKyAgICAgICAgICAgICAgICAgICAgbW90aW9uX3g9IHMtPmMubXZbMV1b MF1bMF0gPSBzLT5iX2JhY2tfbXZfdGFibGVbeHldWzBdOworICAgICAgICAgICAgICAgICAgICBt b3Rpb25feT0gcy0+Yy5tdlsxXVswXVsxXSA9IHMtPmJfYmFja19tdl90YWJsZVt4eV1bMV07CiAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQ0FORElEQVRF X01CX1RZUEVfRk9SV0FSRDoKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfZGlyID0gTVZfRElS X0ZPUldBUkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOwotICAgICAgICAg ICAgICAgICAgICBtb3Rpb25feD0gcy0+bXZbMF1bMF1bMF0gPSBzLT5iX2ZvcndfbXZfdGFibGVb eHldWzBdOwotICAgICAgICAgICAgICAgICAgICBtb3Rpb25feT0gcy0+bXZbMF1bMF1bMV0gPSBz LT5iX2ZvcndfbXZfdGFibGVbeHldWzFdOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X2Rp ciA9IE1WX0RJUl9GT1JXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAw OworICAgICAgICAgICAgICAgICAgICBtb3Rpb25feD0gcy0+Yy5tdlswXVswXVswXSA9IHMtPmJf Zm9yd19tdl90YWJsZVt4eV1bMF07CisgICAgICAgICAgICAgICAgICAgIG1vdGlvbl95PSBzLT5j Lm12WzBdWzBdWzFdID0gcy0+Yl9mb3J3X212X3RhYmxlW3h5XVsxXTsKICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURBVEVfTUJfVFlQRV9GT1JX QVJEX0k6Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X2RpciA9IE1WX0RJUl9GT1JXQVJEOwot ICAgICAgICAgICAgICAgICAgICBzLT5tdl90eXBlID0gTVZfVFlQRV9GSUVMRDsKLSAgICAgICAg ICAgICAgICAgICAgcy0+bWJfaW50cmE9IDA7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZf ZGlyID0gTVZfRElSX0ZPUldBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZfdHlwZSA9 IE1WX1RZUEVfRklFTEQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9IDA7CiAg ICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAgICAgICAg ICAgICAgIGo9IHMtPmZpZWxkX3NlbGVjdFswXVtpXSA9IHMtPmJfZmllbGRfc2VsZWN0X3RhYmxl WzBdW2ldW3h5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzBdW2ldWzBdID0gcy0+ Yl9maWVsZF9tdl90YWJsZVswXVtpXVtqXVt4eV1bMF07Ci0gICAgICAgICAgICAgICAgICAgICAg ICBzLT5tdlswXVtpXVsxXSA9IHMtPmJfZmllbGRfbXZfdGFibGVbMF1baV1bal1beHldWzFdOwor ICAgICAgICAgICAgICAgICAgICAgICAgaj0gcy0+Yy5maWVsZF9zZWxlY3RbMF1baV0gPSBzLT5i X2ZpZWxkX3NlbGVjdF90YWJsZVswXVtpXVt4eV07CisgICAgICAgICAgICAgICAgICAgICAgICBz LT5jLm12WzBdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVswXVtpXVtqXVt4eV1bMF07Cisg ICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzBdW2ldWzFdID0gcy0+Yl9maWVsZF9tdl90 YWJsZVswXVtpXVtqXVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURBVEVfTUJfVFlQRV9C QUNLV0FSRF9JOgotICAgICAgICAgICAgICAgICAgICBzLT5tdl9kaXIgPSBNVl9ESVJfQkFDS1dB UkQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm12X3R5cGUgPSBNVl9UWVBFX0ZJRUxEOwotICAg ICAgICAgICAgICAgICAgICBzLT5tYl9pbnRyYT0gMDsKKyAgICAgICAgICAgICAgICAgICAgcy0+ Yy5tdl9kaXIgPSBNVl9ESVJfQkFDS1dBUkQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubXZf dHlwZSA9IE1WX1RZUEVfRklFTEQ7CisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfaW50cmE9 IDA7CiAgICAgICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8MjsgaSsrKXsKLSAgICAgICAgICAg ICAgICAgICAgICAgIGo9IHMtPmZpZWxkX3NlbGVjdFsxXVtpXSA9IHMtPmJfZmllbGRfc2VsZWN0 X3RhYmxlWzFdW2ldW3h5XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMtPm12WzFdW2ldWzBd ID0gcy0+Yl9maWVsZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1bMF07Ci0gICAgICAgICAgICAgICAg ICAgICAgICBzLT5tdlsxXVtpXVsxXSA9IHMtPmJfZmllbGRfbXZfdGFibGVbMV1baV1bal1beHld WzFdOworICAgICAgICAgICAgICAgICAgICAgICAgaj0gcy0+Yy5maWVsZF9zZWxlY3RbMV1baV0g PSBzLT5iX2ZpZWxkX3NlbGVjdF90YWJsZVsxXVtpXVt4eV07CisgICAgICAgICAgICAgICAgICAg ICAgICBzLT5jLm12WzFdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1b MF07CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12WzFdW2ldWzFdID0gcy0+Yl9maWVs ZF9tdl90YWJsZVsxXVtpXVtqXVt4eV1bMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDQU5ESURBVEVfTUJf VFlQRV9CSURJUl9JOgotICAgICAgICAgICAgICAgICAgICBzLT5tdl9kaXIgPSBNVl9ESVJfRk9S V0FSRCB8IE1WX0RJUl9CQUNLV0FSRDsKLSAgICAgICAgICAgICAgICAgICAgcy0+bXZfdHlwZSA9 IE1WX1RZUEVfRklFTEQ7Ci0gICAgICAgICAgICAgICAgICAgIHMtPm1iX2ludHJhPSAwOworICAg ICAgICAgICAgICAgICAgICBzLT5jLm12X2RpciA9IE1WX0RJUl9GT1JXQVJEIHwgTVZfRElSX0JB Q0tXQVJEOworICAgICAgICAgICAgICAgICAgICBzLT5jLm12X3R5cGUgPSBNVl9UWVBFX0ZJRUxE OworICAgICAgICAgICAgICAgICAgICBzLT5jLm1iX2ludHJhPSAwOwogICAgICAgICAgICAgICAg ICAgICBmb3IoZGlyPTA7IGRpcjwyOyBkaXIrKyl7CiAgICAgICAgICAgICAgICAgICAgICAgICBm b3IoaT0wOyBpPDI7IGkrKyl7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaj0gcy0+Zmll bGRfc2VsZWN0W2Rpcl1baV0gPSBzLT5iX2ZpZWxkX3NlbGVjdF90YWJsZVtkaXJdW2ldW3h5XTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5tdltkaXJdW2ldWzBdID0gcy0+Yl9maWVs ZF9tdl90YWJsZVtkaXJdW2ldW2pdW3h5XVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzLT5tdltkaXJdW2ldWzFdID0gcy0+Yl9maWVsZF9tdl90YWJsZVtkaXJdW2ldW2pdW3h5XVsx XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqPSBzLT5jLmZpZWxkX3NlbGVjdFtkaXJd W2ldID0gcy0+Yl9maWVsZF9zZWxlY3RfdGFibGVbZGlyXVtpXVt4eV07CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcy0+Yy5tdltkaXJdW2ldWzBdID0gcy0+Yl9maWVsZF9tdl90YWJsZVtk aXJdW2ldW2pdW3h5XVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLm12W2Rp cl1baV1bMV0gPSBzLT5iX2ZpZWxkX212X3RhYmxlW2Rpcl1baV1bal1beHldWzFdOwogICAgICAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg ICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiaWxsZWdhbCBNQiB0eXBlXG4iKTsK KyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19FUlJPUiwgImls bGVnYWwgTUIgdHlwZVxuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg ZW5jb2RlX21iKHMsIG1vdGlvbl94LCBtb3Rpb25feSk7CiAKICAgICAgICAgICAgICAgICAvLyBS QUw6IFVwZGF0ZSBsYXN0IG1hY3JvYmxvY2sgdHlwZQotICAgICAgICAgICAgICAgIHMtPmxhc3Rf bXZfZGlyID0gcy0+bXZfZGlyOworICAgICAgICAgICAgICAgIHMtPmxhc3RfbXZfZGlyID0gcy0+ Yy5tdl9kaXI7CiAKICAgICAgICAgICAgICAgICBpZiAoQ09ORklHX0gyNjNfRU5DT0RFUiAmJgot ICAgICAgICAgICAgICAgICAgICBzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYzICYmIHMtPnBpY3Rf dHlwZSE9QVZfUElDVFVSRV9UWVBFX0IpCisgICAgICAgICAgICAgICAgICAgIHMtPmMub3V0X2Zv cm1hdCA9PSBGTVRfSDI2MyAmJiBzLT5jLnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJFX1RZUEVfQikK ICAgICAgICAgICAgICAgICAgICAgZmZfaDI2M191cGRhdGVfbWIocyk7CiAKLSAgICAgICAgICAg ICAgICBtcHZfcmVjb25zdHJ1Y3RfbWIocywgcy0+YmxvY2spOworICAgICAgICAgICAgICAgIG1w dl9yZWNvbnN0cnVjdF9tYihzLCBzLT5jLmJsb2NrKTsKICAgICAgICAgICAgIH0KIAotICAgICAg ICAgICAgcy0+Y3VyX3BpYy5xc2NhbGVfdGFibGVbeHldID0gcy0+cXNjYWxlOworICAgICAgICAg ICAgcy0+Yy5jdXJfcGljLnFzY2FsZV90YWJsZVt4eV0gPSBzLT5jLnFzY2FsZTsKIAogICAgICAg ICAgICAgLyogY2xlYW4gdGhlIE1WIHRhYmxlIGluIElQUyBmcmFtZXMgZm9yIGRpcmVjdCBtb2Rl IGluIEItZnJhbWVzICovCi0gICAgICAgICAgICBpZihzLT5tYl9pbnRyYSAvKiAmJiBJLFAsU19U WVBFICovKXsKKyAgICAgICAgICAgIGlmIChzLT5jLm1iX2ludHJhIC8qICYmIEksUCxTX1RZUEUg Ki8pIHsKICAgICAgICAgICAgICAgICBzLT5wX212X3RhYmxlW3h5XVswXT0wOwogICAgICAgICAg ICAgICAgIHMtPnBfbXZfdGFibGVbeHldWzFdPTA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKChz LT5oMjYzX3ByZWQgfHwgcy0+aDI2M19haWMpICYmIHMtPm1iaW50cmFfdGFibGVbeHldKQotICAg ICAgICAgICAgICAgIGZmX2NsZWFuX2ludHJhX3RhYmxlX2VudHJpZXMocyk7CisgICAgICAgICAg ICB9IGVsc2UgaWYgKChzLT5jLmgyNjNfcHJlZCB8fCBzLT5jLmgyNjNfYWljKSAmJiBzLT5jLm1i aW50cmFfdGFibGVbeHldKQorICAgICAgICAgICAgICAgIGZmX2NsZWFuX2ludHJhX3RhYmxlX2Vu dHJpZXMoJnMtPmMpOwogCi0gICAgICAgICAgICBpZiAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09E RUNfRkxBR19QU05SKSB7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9D T0RFQ19GTEFHX1BTTlIpIHsKICAgICAgICAgICAgICAgICBpbnQgdz0gMTY7CiAgICAgICAgICAg ICAgICAgaW50IGg9IDE2OwogCi0gICAgICAgICAgICAgICAgaWYocy0+bWJfeCoxNiArIDE2ID4g cy0+d2lkdGggKSB3PSBzLT53aWR0aCAtIHMtPm1iX3gqMTY7Ci0gICAgICAgICAgICAgICAgaWYo cy0+bWJfeSoxNiArIDE2ID4gcy0+aGVpZ2h0KSBoPSBzLT5oZWlnaHQtIHMtPm1iX3kqMTY7Cisg ICAgICAgICAgICAgICAgaWYocy0+Yy5tYl94KjE2ICsgMTYgPiBzLT5jLndpZHRoICkgdz0gcy0+ Yy53aWR0aCAtIHMtPmMubWJfeCoxNjsKKyAgICAgICAgICAgICAgICBpZihzLT5jLm1iX3kqMTYg KyAxNiA+IHMtPmMuaGVpZ2h0KSBoPSBzLT5jLmhlaWdodC0gcy0+Yy5tYl95KjE2OwogCiAgICAg ICAgICAgICAgICAgcy0+ZW5jb2RpbmdfZXJyb3JbMF0gKz0gc3NlKAotICAgICAgICAgICAgICAg ICAgICBzLCBzLT5uZXdfcGljLT5kYXRhWzBdICsgcy0+bWJfeCoxNiArIHMtPm1iX3kqcy0+bGlu ZXNpemUqMTYsCi0gICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMF0sIHcsIGgsIHMtPmxpbmVz aXplKTsKKyAgICAgICAgICAgICAgICAgICAgcywgcy0+bmV3X3BpYy0+ZGF0YVswXSArIHMtPmMu bWJfeCoxNiArIHMtPmMubWJfeSpzLT5jLmxpbmVzaXplKjE2LAorICAgICAgICAgICAgICAgICAg ICBzLT5jLmRlc3RbMF0sIHcsIGgsIHMtPmMubGluZXNpemUpOwogICAgICAgICAgICAgICAgIHMt PmVuY29kaW5nX2Vycm9yWzFdICs9IHNzZSgKLSAgICAgICAgICAgICAgICAgICAgcywgcy0+bmV3 X3BpYy0+ZGF0YVsxXSArIHMtPm1iX3gqOCAgKyBzLT5tYl95KnMtPnV2bGluZXNpemUqY2hyX2gs Ci0gICAgICAgICAgICAgICAgICAgIHMtPmRlc3RbMV0sIHc+PjEsIGg+PnMtPmNocm9tYV95X3No aWZ0LCBzLT51dmxpbmVzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcywgcy0+bmV3X3BpYy0+ ZGF0YVsxXSArIHMtPmMubWJfeCo4ICArIHMtPmMubWJfeSpzLT5jLnV2bGluZXNpemUqY2hyX2gs CisgICAgICAgICAgICAgICAgICAgIHMtPmMuZGVzdFsxXSwgdz4+MSwgaD4+cy0+Yy5jaHJvbWFf eV9zaGlmdCwgcy0+Yy51dmxpbmVzaXplKTsKICAgICAgICAgICAgICAgICBzLT5lbmNvZGluZ19l cnJvclsyXSArPSBzc2UoCi0gICAgICAgICAgICAgICAgICAgIHMsIHMtPm5ld19waWMtPmRhdGFb Ml0gKyBzLT5tYl94KjggICsgcy0+bWJfeSpzLT51dmxpbmVzaXplKmNocl9oLAotICAgICAgICAg ICAgICAgICAgICBzLT5kZXN0WzJdLCB3Pj4xLCBoPj5zLT5jaHJvbWFfeV9zaGlmdCwgcy0+dXZs aW5lc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIHMsIHMtPm5ld19waWMtPmRhdGFbMl0gKyBz LT5jLm1iX3gqOCAgKyBzLT5jLm1iX3kqcy0+Yy51dmxpbmVzaXplKmNocl9oLAorICAgICAgICAg ICAgICAgICAgICBzLT5jLmRlc3RbMl0sIHc+PjEsIGg+PnMtPmMuY2hyb21hX3lfc2hpZnQsIHMt PmMudXZsaW5lc2l6ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZihzLT5sb29wX2Zp bHRlcil7Ci0gICAgICAgICAgICAgICAgaWYoQ09ORklHX0gyNjNfRU5DT0RFUiAmJiBzLT5vdXRf Zm9ybWF0ID09IEZNVF9IMjYzKQotICAgICAgICAgICAgICAgICAgICBmZl9oMjYzX2xvb3BfZmls dGVyKHMpOworICAgICAgICAgICAgaWYgKHMtPmMubG9vcF9maWx0ZXIpIHsKKyAgICAgICAgICAg ICAgICBpZiAoQ09ORklHX0gyNjNfRU5DT0RFUiAmJiBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX0gy NjMpCisgICAgICAgICAgICAgICAgICAgIGZmX2gyNjNfbG9vcF9maWx0ZXIoJnMtPmMpOwogICAg ICAgICAgICAgfQotICAgICAgICAgICAgZmZfZGxvZyhzLT5hdmN0eCwgIk1CICVkICVkIGJpdHNc biIsCi0gICAgICAgICAgICAgICAgICAgIHMtPm1iX3ggKyBzLT5tYl95ICogcy0+bWJfc3RyaWRl LCBwdXRfYml0c19jb3VudCgmcy0+cGIpKTsKKyAgICAgICAgICAgIGZmX2Rsb2cocy0+Yy5hdmN0 eCwgIk1CICVkICVkIGJpdHNcbiIsCisgICAgICAgICAgICAgICAgICAgIHMtPmMubWJfeCArIHMt PmMubWJfeSAqIHMtPmMubWJfc3RyaWRlLCBwdXRfYml0c19jb3VudCgmcy0+cGIpKTsKICAgICAg ICAgfQogICAgIH0KIAogI2lmIENPTkZJR19NU01QRUc0RU5DCiAgICAgLy9ub3QgYmVhdXRpZnVs IGhlcmUgYnV0IHdlIG11c3Qgd3JpdGUgaXQgYmVmb3JlIGZsdXNoaW5nIHNvIGl0IGhhcyB0byBi ZSBoZXJlCi0gICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiAhPSBNU01QNF9VTlVTRUQgJiYgcy0+ bXNtcGVnNF92ZXJzaW9uIDwgTVNNUDRfV01WMSAmJgotICAgICAgICBzLT5waWN0X3R5cGUgPT0g QVZfUElDVFVSRV9UWVBFX0kpCisgICAgaWYgKHMtPmMubXNtcGVnNF92ZXJzaW9uICE9IE1TTVA0 X1VOVVNFRCAmJiBzLT5jLm1zbXBlZzRfdmVyc2lvbiA8IE1TTVA0X1dNVjEgJiYKKyAgICAgICAg cy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpCiAgICAgICAgIGZmX21zbXBlZzRf ZW5jb2RlX2V4dF9oZWFkZXIocyk7CiAjZW5kaWYKIApAQCAtMzU4NCwxMyArMzU4NiwxNSBAQCBz dGF0aWMgaW50IGVuY29kZV90aHJlYWQoQVZDb2RlY0NvbnRleHQgKmMsIHZvaWQgKmFyZyl7CiB9 CiAKICNkZWZpbmUgTUVSR0UoZmllbGQpIGRzdC0+ZmllbGQgKz0gc3JjLT5maWVsZDsgc3JjLT5m aWVsZD0wCi1zdGF0aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX21lKE1wZWdFbmNDb250ZXh0 ICpkc3QsIE1wZWdFbmNDb250ZXh0ICpzcmMpewotICAgIE1FUkdFKG1lLnNjZW5lX2NoYW5nZV9z Y29yZSk7Ci0gICAgTUVSR0UobWUubWNfbWJfdmFyX3N1bV90ZW1wKTsKLSAgICBNRVJHRShtZS5t Yl92YXJfc3VtX3RlbXApOworc3RhdGljIHZvaWQgbWVyZ2VfY29udGV4dF9hZnRlcl9tZShNUFZF bmNDb250ZXh0ICpjb25zdCBkc3QsIE1QVkVuY0NvbnRleHQgKmNvbnN0IHNyYykKK3sKKyAgICBN RVJHRShjLm1lLnNjZW5lX2NoYW5nZV9zY29yZSk7CisgICAgTUVSR0UoYy5tZS5tY19tYl92YXJf c3VtX3RlbXApOworICAgIE1FUkdFKGMubWUubWJfdmFyX3N1bV90ZW1wKTsKIH0KIAotc3RhdGlj IHZvaWQgbWVyZ2VfY29udGV4dF9hZnRlcl9lbmNvZGUoTXBlZ0VuY0NvbnRleHQgKmRzdCwgTXBl Z0VuY0NvbnRleHQgKnNyYyl7CitzdGF0aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX2VuY29k ZShNUFZFbmNDb250ZXh0ICpjb25zdCBkc3QsIE1QVkVuY0NvbnRleHQgKmNvbnN0IHNyYykKK3sK ICAgICBpbnQgaTsKIAogICAgIE1FUkdFKGRjdF9jb3VudFswXSk7IC8vbm90ZSwgdGhlIG90aGVy IGRjdCB2YXJzIGFyZSBub3QgcGFydCBvZiB0aGUgY29udGV4dApAQCAtMzYxOSwyMiArMzYyMywy MiBAQCBzdGF0aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX2VuY29kZShNcGVnRW5jQ29udGV4 dCAqZHN0LCBNcGVnRW5jQ29udGV4dCAqc3JjKQogCiBzdGF0aWMgaW50IGVzdGltYXRlX3FwKE1Q Vk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBpbnQgZHJ5X3J1bikKIHsKLSAgICBNcGVnRW5jQ29u dGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+ czsKIAogICAgIGlmIChtLT5uZXh0X2xhbWJkYSl7Ci0gICAgICAgIHMtPmN1cl9waWMucHRyLT5m LT5xdWFsaXR5ID0gbS0+bmV4dF9sYW1iZGE7CisgICAgICAgIHMtPmMuY3VyX3BpYy5wdHItPmYt PnF1YWxpdHkgPSBtLT5uZXh0X2xhbWJkYTsKICAgICAgICAgaWYoIWRyeV9ydW4pIG0tPm5leHRf bGFtYmRhPSAwOwogICAgIH0gZWxzZSBpZiAoIW0tPmZpeGVkX3FzY2FsZSkgewogICAgICAgICBp bnQgcXVhbGl0eSA9IGZmX3JhdGVfZXN0aW1hdGVfcXNjYWxlKG0sIGRyeV9ydW4pOwotICAgICAg ICBzLT5jdXJfcGljLnB0ci0+Zi0+cXVhbGl0eSA9IHF1YWxpdHk7Ci0gICAgICAgIGlmIChzLT5j dXJfcGljLnB0ci0+Zi0+cXVhbGl0eSA8IDApCisgICAgICAgIHMtPmMuY3VyX3BpYy5wdHItPmYt PnF1YWxpdHkgPSBxdWFsaXR5OworICAgICAgICBpZiAocy0+Yy5jdXJfcGljLnB0ci0+Zi0+cXVh bGl0eSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgaWYocy0+YWRh cHRpdmVfcXVhbnQpewogICAgICAgICBpbml0X3FzY2FsZV90YWIocyk7CiAKLSAgICAgICAgc3dp dGNoKHMtPmNvZGVjX2lkKXsKKyAgICAgICAgc3dpdGNoIChzLT5jLmNvZGVjX2lkKSB7CiAgICAg ICAgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzQ6CiAgICAgICAgICAgICBpZiAoQ09ORklHX01QRUc0 X0VOQ09ERVIpCiAgICAgICAgICAgICAgICAgZmZfY2xlYW5fbXBlZzRfcXNjYWxlcyhzKTsKQEAg LTM2NDcsMTY5ICszNjUxLDE3NCBAQCBzdGF0aWMgaW50IGVzdGltYXRlX3FwKE1QVk1haW5FbmND b250ZXh0ICpjb25zdCBtLCBpbnQgZHJ5X3J1bikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICB9CiAKLSAgICAgICAgcy0+bGFtYmRhPSBzLT5sYW1iZGFfdGFibGVbMF07CisgICAgICAgIHMt PmMubGFtYmRhPSBzLT5sYW1iZGFfdGFibGVbMF07CiAgICAgICAgIC8vRklYTUUgYnJva2VuCiAg ICAgfWVsc2UKLSAgICAgICAgcy0+bGFtYmRhID0gcy0+Y3VyX3BpYy5wdHItPmYtPnF1YWxpdHk7 CisgICAgICAgIHMtPmMubGFtYmRhID0gcy0+Yy5jdXJfcGljLnB0ci0+Zi0+cXVhbGl0eTsKICAg ICB1cGRhdGVfcXNjYWxlKG0pOwogICAgIHJldHVybiAwOwogfQogCiAvKiBtdXN0IGJlIGNhbGxl ZCBiZWZvcmUgd3JpdGluZyB0aGUgaGVhZGVyICovCi1zdGF0aWMgdm9pZCBzZXRfZnJhbWVfZGlz dGFuY2VzKE1wZWdFbmNDb250ZXh0ICogcyl7Ci0gICAgYXZfYXNzZXJ0MShzLT5jdXJfcGljLnB0 ci0+Zi0+cHRzICE9IEFWX05PUFRTX1ZBTFVFKTsKLSAgICBzLT50aW1lID0gcy0+Y3VyX3BpYy5w dHItPmYtPnB0cyAqIHMtPmF2Y3R4LT50aW1lX2Jhc2UubnVtOworc3RhdGljIHZvaWQgc2V0X2Zy YW1lX2Rpc3RhbmNlcyhNUFZFbmNDb250ZXh0ICpjb25zdCBzKQoreworICAgIGF2X2Fzc2VydDEo cy0+Yy5jdXJfcGljLnB0ci0+Zi0+cHRzICE9IEFWX05PUFRTX1ZBTFVFKTsKKyAgICBzLT5jLnRp bWUgPSBzLT5jLmN1cl9waWMucHRyLT5mLT5wdHMgKiBzLT5jLmF2Y3R4LT50aW1lX2Jhc2UubnVt OwogCi0gICAgaWYocy0+cGljdF90eXBlPT1BVl9QSUNUVVJFX1RZUEVfQil7Ci0gICAgICAgIHMt PnBiX3RpbWU9IHMtPnBwX3RpbWUgLSAocy0+bGFzdF9ub25fYl90aW1lIC0gcy0+dGltZSk7Ci0g ICAgICAgIGF2X2Fzc2VydDEocy0+cGJfdGltZSA+IDAgJiYgcy0+cGJfdGltZSA8IHMtPnBwX3Rp bWUpOworICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikgeworICAg ICAgICBzLT5jLnBiX3RpbWUgPSBzLT5jLnBwX3RpbWUgLSAocy0+Yy5sYXN0X25vbl9iX3RpbWUg LSBzLT5jLnRpbWUpOworICAgICAgICBhdl9hc3NlcnQxKHMtPmMucGJfdGltZSA+IDAgJiYgcy0+ Yy5wYl90aW1lIDwgcy0+Yy5wcF90aW1lKTsKICAgICB9ZWxzZXsKLSAgICAgICAgcy0+cHBfdGlt ZT0gcy0+dGltZSAtIHMtPmxhc3Rfbm9uX2JfdGltZTsKLSAgICAgICAgcy0+bGFzdF9ub25fYl90 aW1lPSBzLT50aW1lOwotICAgICAgICBhdl9hc3NlcnQxKHMtPnBpY3R1cmVfbnVtYmVyPT0wIHx8 IHMtPnBwX3RpbWUgPiAwKTsKKyAgICAgICAgcy0+Yy5wcF90aW1lID0gcy0+Yy50aW1lIC0gcy0+ Yy5sYXN0X25vbl9iX3RpbWU7CisgICAgICAgIHMtPmMubGFzdF9ub25fYl90aW1lID0gcy0+Yy50 aW1lOworICAgICAgICBhdl9hc3NlcnQxKHMtPmMucGljdHVyZV9udW1iZXI9PTAgfHwgcy0+Yy5w cF90aW1lID4gMCk7CiAgICAgfQogfQogCiBzdGF0aWMgaW50IGVuY29kZV9waWN0dXJlKE1QVk1h aW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25zdCBBVlBhY2tldCAqcGt0KQogewotICAgIE1wZWdF bmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9 ICZtLT5zOwogICAgIGludCBpLCByZXQ7CiAgICAgaW50IGJpdHM7Ci0gICAgaW50IGNvbnRleHRf Y291bnQgPSBzLT5zbGljZV9jb250ZXh0X2NvdW50OworICAgIGludCBjb250ZXh0X2NvdW50ID0g cy0+Yy5zbGljZV9jb250ZXh0X2NvdW50OwogCiAgICAgLyogUmVzZXQgdGhlIGF2ZXJhZ2UgTUIg dmFyaWFuY2UgKi8KLSAgICBzLT5tZS5tYl92YXJfc3VtX3RlbXAgICAgPQotICAgIHMtPm1lLm1j X21iX3Zhcl9zdW1fdGVtcCA9IDA7CisgICAgcy0+Yy5tZS5tYl92YXJfc3VtX3RlbXAgICAgPQor ICAgIHMtPmMubWUubWNfbWJfdmFyX3N1bV90ZW1wID0gMDsKIAogICAgIC8qIHdlIG5lZWQgdG8g aW5pdGlhbGl6ZSBzb21lIHRpbWUgdmFycyBiZWZvcmUgd2UgY2FuIGVuY29kZSBCLWZyYW1lcyAq LwogICAgIC8vIFJBTDogQ29uZGl0aW9uIGFkZGVkIGZvciBNUEVHMVZJREVPCi0gICAgaWYgKHMt Pm91dF9mb3JtYXQgPT0gRk1UX01QRUcxIHx8IChzLT5oMjYzX3ByZWQgJiYgcy0+bXNtcGVnNF92 ZXJzaW9uID09IE1TTVA0X1VOVVNFRCkpCisgICAgaWYgKHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRf TVBFRzEgfHwgKHMtPmMuaDI2M19wcmVkICYmIHMtPmMubXNtcGVnNF92ZXJzaW9uID09IE1TTVA0 X1VOVVNFRCkpCiAgICAgICAgIHNldF9mcmFtZV9kaXN0YW5jZXMocyk7Ci0gICAgaWYoQ09ORklH X01QRUc0X0VOQ09ERVIgJiYgcy0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpCisgICAg aWYgKENPTkZJR19NUEVHNF9FTkNPREVSICYmIHMtPmMuY29kZWNfaWQgPT0gQVZfQ09ERUNfSURf TVBFRzQpCiAgICAgICAgIGZmX3NldF9tcGVnNF90aW1lKHMpOwogCi0gICAgcy0+bWUuc2NlbmVf Y2hhbmdlX3Njb3JlPTA7CisgICAgcy0+Yy5tZS5zY2VuZV9jaGFuZ2Vfc2NvcmU9MDsKIAotLy8g ICAgcy0+bGFtYmRhPSBzLT5jdXJfcGljLnB0ci0+cXVhbGl0eTsgLy9GSVhNRSBxc2NhbGUgLyAu Li4gc3R1ZmYgZm9yIE1FIHJhdGUgZGlzdG9ydGlvbgorLy8gICAgcy0+Yy5sYW1iZGE9IHMtPmMu Y3VyX3BpYy5wdHItPnF1YWxpdHk7IC8vRklYTUUgcXNjYWxlIC8gLi4uIHN0dWZmIGZvciBNRSBy YXRlIGRpc3RvcnRpb24KIAotICAgIGlmKHMtPnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX0kp ewotICAgICAgICBzLT5ub19yb3VuZGluZyA9IHMtPm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9W MzsKLSAgICB9ZWxzZSBpZihzLT5waWN0X3R5cGUhPUFWX1BJQ1RVUkVfVFlQRV9CKXsKLSAgICAg ICAgcy0+bm9fcm91bmRpbmcgXj0gcy0+ZmxpcGZsb3Bfcm91bmRpbmc7CisgICAgaWYgKHMtPmMu cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgICAgIHMtPmMubm9fcm91bmRp bmcgPSBzLT5jLm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9WMzsKKyAgICB9IGVsc2UgaWYgKHMt PmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CisgICAgICAgIHMtPmMubm9fcm91 bmRpbmcgXj0gcy0+Yy5mbGlwZmxvcF9yb3VuZGluZzsKICAgICB9CiAKLSAgICBpZiAocy0+YXZj dHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMikgeworICAgIGlmIChzLT5jLmF2Y3R4LT5m bGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzIpIHsKICAgICAgICAgcmV0ID0gZXN0aW1hdGVfcXAo bSwgMSk7CiAgICAgICAgIGlmIChyZXQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIHJldDsKICAg ICAgICAgZmZfZ2V0XzJwYXNzX2Zjb2RlKG0pOwotICAgIH0gZWxzZSBpZiAoIShzLT5hdmN0eC0+ ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FTQ0FMRSkpIHsKLSAgICAgICAgaWYocy0+cGljdF90eXBl PT1BVl9QSUNUVVJFX1RZUEVfQikKLSAgICAgICAgICAgIHMtPmxhbWJkYSA9IG0tPmxhc3RfbGFt YmRhX2ZvcltzLT5waWN0X3R5cGVdOworICAgIH0gZWxzZSBpZiAoIShzLT5jLmF2Y3R4LT5mbGFn cyAmIEFWX0NPREVDX0ZMQUdfUVNDQUxFKSkgeworICAgICAgICBpZihzLT5jLnBpY3RfdHlwZT09 QVZfUElDVFVSRV9UWVBFX0IpCisgICAgICAgICAgICBzLT5jLmxhbWJkYSA9IG0tPmxhc3RfbGFt YmRhX2ZvcltzLT5jLnBpY3RfdHlwZV07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHMtPmxh bWJkYSA9IG0tPmxhc3RfbGFtYmRhX2ZvclttLT5sYXN0X25vbl9iX3BpY3RfdHlwZV07CisgICAg ICAgICAgICBzLT5jLmxhbWJkYSA9IG0tPmxhc3RfbGFtYmRhX2ZvclttLT5sYXN0X25vbl9iX3Bp Y3RfdHlwZV07CiAgICAgICAgIHVwZGF0ZV9xc2NhbGUobSk7CiAgICAgfQogCiAgICAgZmZfbWVf aW5pdF9waWMocyk7CiAKLSAgICBzLT5tYl9pbnRyYT0wOyAvL2ZvciB0aGUgcmF0ZSBkaXN0b3J0 aW9uICYgYml0IGNvbXBhcmUgZnVuY3Rpb25zCisgICAgcy0+Yy5tYl9pbnRyYSA9IDA7IC8vZm9y IHRoZSByYXRlIGRpc3RvcnRpb24gJiBiaXQgY29tcGFyZSBmdW5jdGlvbnMKICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IGNvbnRleHRfY291bnQ7IGkrKykgewotICAgICAgICBNcGVnRW5jQ29udGV4 dCAqY29uc3Qgc2xpY2UgPSBzLT50aHJlYWRfY29udGV4dFtpXTsKKyAgICAgICAgTVBWRW5jQ29u dGV4dCAqY29uc3Qgc2xpY2UgPSBzLT5jLmVuY19jb250ZXh0c1tpXTsKICAgICAgICAgdWludDhf dCAqc3RhcnQsICplbmQ7CiAgICAgICAgIGludCBoOwogCiAgICAgICAgIGlmIChpKSB7Ci0gICAg ICAgICAgICByZXQgPSBmZl91cGRhdGVfZHVwbGljYXRlX2NvbnRleHQoc2xpY2UsIHMpOworICAg ICAgICAgICAgcmV0ID0gZmZfdXBkYXRlX2R1cGxpY2F0ZV9jb250ZXh0KCZzbGljZS0+YywgJnMt PmMpOwogICAgICAgICAgICAgaWYgKHJldCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKICAgICAgICAgfQotICAgICAgICBzbGljZS0+bWUudGVtcCA9IHNsaWNlLT5tZS5zY3JhdGNo cGFkID0gc2xpY2UtPnNjLnNjcmF0Y2hwYWRfYnVmOworICAgICAgICBzbGljZS0+Yy5tZS50ZW1w ID0gc2xpY2UtPmMubWUuc2NyYXRjaHBhZCA9IHNsaWNlLT5jLnNjLnNjcmF0Y2hwYWRfYnVmOwog Ci0gICAgICAgIGggICAgID0gcy0+bWJfaGVpZ2h0OwotICAgICAgICBzdGFydCA9IHBrdC0+ZGF0 YSArIChzaXplX3QpKCgoaW50NjRfdCkgcGt0LT5zaXplKSAqIHNsaWNlLT5zdGFydF9tYl95IC8g aCk7Ci0gICAgICAgIGVuZCAgID0gcGt0LT5kYXRhICsgKHNpemVfdCkoKChpbnQ2NF90KSBwa3Qt PnNpemUpICogc2xpY2UtPiAgZW5kX21iX3kgLyBoKTsKKyAgICAgICAgaCAgICAgPSBzLT5jLm1i X2hlaWdodDsKKyAgICAgICAgc3RhcnQgPSBwa3QtPmRhdGEgKyAoc2l6ZV90KSgoKGludDY0X3Qp IHBrdC0+c2l6ZSkgKiBzbGljZS0+Yy5zdGFydF9tYl95IC8gaCk7CisgICAgICAgIGVuZCAgID0g cGt0LT5kYXRhICsgKHNpemVfdCkoKChpbnQ2NF90KSBwa3QtPnNpemUpICogc2xpY2UtPmMuICBl bmRfbWJfeSAvIGgpOwogCi0gICAgICAgIGluaXRfcHV0X2JpdHMoJnMtPnRocmVhZF9jb250ZXh0 W2ldLT5wYiwgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgaW5pdF9wdXRfYml0cygmcy0+ Yy5lbmNfY29udGV4dHNbaV0tPnBiLCBzdGFydCwgZW5kIC0gc3RhcnQpOwogICAgIH0KIAogICAg IC8qIEVzdGltYXRlIG1vdGlvbiBmb3IgZXZlcnkgTUIgKi8KLSAgICBpZihzLT5waWN0X3R5cGUg IT0gQVZfUElDVFVSRV9UWVBFX0kpewotICAgICAgICBzLT5sYW1iZGEgID0gKHMtPmxhbWJkYSAg KiBtLT5tZV9wZW5hbHR5X2NvbXBlbnNhdGlvbiArIDEyOCkgPj4gODsKLSAgICAgICAgcy0+bGFt YmRhMiA9IChzLT5sYW1iZGEyICogKGludDY0X3QpIG0tPm1lX3BlbmFsdHlfY29tcGVuc2F0aW9u ICsgMTI4KSA+PiA4OwotICAgICAgICBpZiAocy0+cGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQ RV9CKSB7CisgICAgaWYgKHMtPmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9JKSB7Cisg ICAgICAgIHMtPmMubGFtYmRhICA9IChzLT5jLmxhbWJkYSAgKiBtLT5tZV9wZW5hbHR5X2NvbXBl bnNhdGlvbiArIDEyOCkgPj4gODsKKyAgICAgICAgcy0+Yy5sYW1iZGEyID0gKHMtPmMubGFtYmRh MiAqIChpbnQ2NF90KSBtLT5tZV9wZW5hbHR5X2NvbXBlbnNhdGlvbiArIDEyOCkgPj4gODsKKyAg ICAgICAgaWYgKHMtPmMucGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9CKSB7CiAgICAgICAg ICAgICBpZiAoKG0tPm1lX3ByZSAmJiBtLT5sYXN0X25vbl9iX3BpY3RfdHlwZSA9PSBBVl9QSUNU VVJFX1RZUEVfSSkgfHwKICAgICAgICAgICAgICAgICBtLT5tZV9wcmUgPT0gMikgewotICAgICAg ICAgICAgICAgIHMtPmF2Y3R4LT5leGVjdXRlKHMtPmF2Y3R4LCBwcmVfZXN0aW1hdGVfbW90aW9u X3RocmVhZCwgJnMtPnRocmVhZF9jb250ZXh0WzBdLCBOVUxMLCBjb250ZXh0X2NvdW50LCBzaXpl b2Yodm9pZCopKTsKKyAgICAgICAgICAgICAgICBzLT5jLmF2Y3R4LT5leGVjdXRlKHMtPmMuYXZj dHgsIHByZV9lc3RpbWF0ZV9tb3Rpb25fdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnMtPmMuZW5jX2NvbnRleHRzWzBdLCBOVUxMLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9jb3VudCwgc2l6ZW9mKHZvaWQqKSk7CiAgICAg ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzLT5hdmN0eC0+ZXhlY3V0ZShzLT5hdmN0 eCwgZXN0aW1hdGVfbW90aW9uX3RocmVhZCwgJnMtPnRocmVhZF9jb250ZXh0WzBdLCBOVUxMLCBj b250ZXh0X2NvdW50LCBzaXplb2Yodm9pZCopKTsKLSAgICB9ZWxzZSAvKiBpZihzLT5waWN0X3R5 cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpICoveworICAgICAgICBzLT5jLmF2Y3R4LT5leGVjdXRl KHMtPmMuYXZjdHgsIGVzdGltYXRlX21vdGlvbl90aHJlYWQsICZzLT5jLmVuY19jb250ZXh0c1sw XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBjb250ZXh0X2NvdW50LCBzaXpl b2Yodm9pZCopKTsKKyAgICB9ZWxzZSAvKiBpZihzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJF X1RZUEVfSSkgKi97CiAgICAgICAgIC8qIEktRnJhbWUgKi8KLSAgICAgICAgZm9yKGk9MDsgaTxz LT5tYl9zdHJpZGUqcy0+bWJfaGVpZ2h0OyBpKyspCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgcy0+Yy5tYl9zdHJpZGUgKiBzLT5jLm1iX2hlaWdodDsgaSsrKQogICAgICAgICAgICAgcy0+ bWJfdHlwZVtpXT0gQ0FORElEQVRFX01CX1RZUEVfSU5UUkE7CiAKICAgICAgICAgaWYgKCFtLT5m aXhlZF9xc2NhbGUpIHsKICAgICAgICAgICAgIC8qIGZpbmRpbmcgc3BhdGlhbCBjb21wbGV4aXR5 IGZvciBJLWZyYW1lIHJhdGUgY29udHJvbCAqLwotICAgICAgICAgICAgcy0+YXZjdHgtPmV4ZWN1 dGUocy0+YXZjdHgsIG1iX3Zhcl90aHJlYWQsICZzLT50aHJlYWRfY29udGV4dFswXSwgTlVMTCwg Y29udGV4dF9jb3VudCwgc2l6ZW9mKHZvaWQqKSk7CisgICAgICAgICAgICBzLT5jLmF2Y3R4LT5l eGVjdXRlKHMtPmMuYXZjdHgsIG1iX3Zhcl90aHJlYWQsICZzLT5jLmVuY19jb250ZXh0c1swXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgY29udGV4dF9jb3VudCwgc2l6 ZW9mKHZvaWQqKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yKGk9MTsgaTxjb250ZXh0X2Nv dW50OyBpKyspewotICAgICAgICBtZXJnZV9jb250ZXh0X2FmdGVyX21lKHMsIHMtPnRocmVhZF9j b250ZXh0W2ldKTsKKyAgICAgICAgbWVyZ2VfY29udGV4dF9hZnRlcl9tZShzLCBzLT5jLmVuY19j b250ZXh0c1tpXSk7CiAgICAgfQotICAgIG0tPm1jX21iX3Zhcl9zdW0gPSBzLT5tZS5tY19tYl92 YXJfc3VtX3RlbXA7Ci0gICAgbS0+bWJfdmFyX3N1bSAgICA9IHMtPm1lLiAgIG1iX3Zhcl9zdW1f dGVtcDsKKyAgICBtLT5tY19tYl92YXJfc3VtID0gcy0+Yy5tZS5tY19tYl92YXJfc3VtX3RlbXA7 CisgICAgbS0+bWJfdmFyX3N1bSAgICA9IHMtPmMubWUuICAgbWJfdmFyX3N1bV90ZW1wOwogICAg IGVtbXNfYygpOwogCi0gICAgaWYgKHMtPm1lLnNjZW5lX2NoYW5nZV9zY29yZSA+IG0tPnNjZW5l Y2hhbmdlX3RocmVzaG9sZCAmJgotICAgICAgICBzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U WVBFX1ApIHsKLSAgICAgICAgcy0+cGljdF90eXBlPSBBVl9QSUNUVVJFX1RZUEVfSTsKLSAgICAg ICAgZm9yKGk9MDsgaTxzLT5tYl9zdHJpZGUqcy0+bWJfaGVpZ2h0OyBpKyspCi0gICAgICAgICAg ICBzLT5tYl90eXBlW2ldPSBDQU5ESURBVEVfTUJfVFlQRV9JTlRSQTsKLSAgICAgICAgaWYgKHMt Pm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9WMykKLSAgICAgICAgICAgIHMtPm5vX3JvdW5kaW5n PTE7Ci0gICAgICAgIGZmX2Rsb2cocy0+YXZjdHgsICJTY2VuZSBjaGFuZ2UgZGV0ZWN0ZWQsIGVu Y29kaW5nIGFzIEkgRnJhbWUgJSJQUklkNjQiICUiUFJJZDY0IlxuIiwKKyAgICBpZiAocy0+Yy5t ZS5zY2VuZV9jaGFuZ2Vfc2NvcmUgPiBtLT5zY2VuZWNoYW5nZV90aHJlc2hvbGQgJiYKKyAgICAg ICAgcy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1ApIHsKKyAgICAgICAgcy0+Yy5w aWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfSTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBzLT5jLm1iX3N0cmlkZSAqIHMtPmMubWJfaGVpZ2h0OyBpKyspCisgICAgICAgICAgICBzLT5t Yl90eXBlW2ldID0gQ0FORElEQVRFX01CX1RZUEVfSU5UUkE7CisgICAgICAgIGlmIChzLT5jLm1z bXBlZzRfdmVyc2lvbiA+PSBNU01QNF9WMykKKyAgICAgICAgICAgIHMtPmMubm9fcm91bmRpbmcg PSAxOworICAgICAgICBmZl9kbG9nKHMtPmMuYXZjdHgsICJTY2VuZSBjaGFuZ2UgZGV0ZWN0ZWQs IGVuY29kaW5nIGFzIEkgRnJhbWUgJSJQUklkNjQiICUiUFJJZDY0IlxuIiwKICAgICAgICAgICAg ICAgICBtLT5tYl92YXJfc3VtLCBtLT5tY19tYl92YXJfc3VtKTsKICAgICB9CiAKLSAgICBpZigh cy0+dW12cGx1cyl7Ci0gICAgICAgIGlmKHMtPnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX1Ag fHwgcy0+cGljdF90eXBlPT1BVl9QSUNUVVJFX1RZUEVfUykgewotICAgICAgICAgICAgcy0+Zl9j b2RlID0gZmZfZ2V0X2Jlc3RfZmNvZGUobSwgcy0+cF9tdl90YWJsZSwgQ0FORElEQVRFX01CX1RZ UEVfSU5URVIpOworICAgIGlmICghcy0+Yy51bXZwbHVzKSB7CisgICAgICAgIGlmIChzLT5jLnBp Y3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCB8fCBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNU VVJFX1RZUEVfUykgeworICAgICAgICAgICAgcy0+Yy5mX2NvZGUgPSBmZl9nZXRfYmVzdF9mY29k ZShtLCBzLT5wX212X3RhYmxlLCBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUik7CiAKLSAgICAgICAg ICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHsK KyAgICAgICAgICAgIGlmIChzLT5jLmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJM QUNFRF9NRSkgewogICAgICAgICAgICAgICAgIGludCBhLGI7Ci0gICAgICAgICAgICAgICAgYSA9 IGZmX2dldF9iZXN0X2Zjb2RlKG0sIHMtPnBfZmllbGRfbXZfdGFibGVbMF1bMF0sIENBTkRJREFU RV9NQl9UWVBFX0lOVEVSX0kpOyAvL0ZJWE1FIGZpZWxkX3NlbGVjdAotICAgICAgICAgICAgICAg IGIgPSBmZl9nZXRfYmVzdF9mY29kZShtLCBzLT5wX2ZpZWxkX212X3RhYmxlWzFdWzFdLCBDQU5E SURBVEVfTUJfVFlQRV9JTlRFUl9JKTsKLSAgICAgICAgICAgICAgICBzLT5mX2NvZGU9IEZGTUFY MyhzLT5mX2NvZGUsIGEsIGIpOworICAgICAgICAgICAgICAgIGEgPSBmZl9nZXRfYmVzdF9mY29k ZShtLCBzLT5jLnBfZmllbGRfbXZfdGFibGVbMF1bMF0sIENBTkRJREFURV9NQl9UWVBFX0lOVEVS X0kpOyAvL0ZJWE1FIGZpZWxkX3NlbGVjdAorICAgICAgICAgICAgICAgIGIgPSBmZl9nZXRfYmVz dF9mY29kZShtLCBzLT5jLnBfZmllbGRfbXZfdGFibGVbMV1bMV0sIENBTkRJREFURV9NQl9UWVBF X0lOVEVSX0kpOworICAgICAgICAgICAgICAgIHMtPmMuZl9jb2RlPSBGRk1BWDMocy0+Yy5mX2Nv ZGUsIGEsIGIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmZl9maXhfbG9uZ19wX212 cyhzLCBzLT5pbnRyYV9wZW5hbHR5ID8gQ0FORElEQVRFX01CX1RZUEVfSU5URVIgOiBDQU5ESURB VEVfTUJfVFlQRV9JTlRSQSk7Ci0gICAgICAgICAgICBmZl9maXhfbG9uZ19tdnMocywgTlVMTCwg MCwgcy0+cF9tdl90YWJsZSwgcy0+Zl9jb2RlLCBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUiwgISFz LT5pbnRyYV9wZW5hbHR5KTsKLSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9D T0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHsKKyAgICAgICAgICAgIGZmX2ZpeF9sb25nX212cyhz LCBOVUxMLCAwLCBzLT5wX212X3RhYmxlLCBzLT5jLmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVf SU5URVIsICEhcy0+aW50cmFfcGVuYWx0eSk7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+ ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHsKICAgICAgICAgICAgICAgICBp bnQgajsKICAgICAgICAgICAgICAgICBmb3IoaT0wOyBpPDI7IGkrKyl7CiAgICAgICAgICAgICAg ICAgICAgIGZvcihqPTA7IGo8MjsgaisrKQogICAgICAgICAgICAgICAgICAgICAgICAgZmZfZml4 X2xvbmdfbXZzKHMsIHMtPnBfZmllbGRfc2VsZWN0X3RhYmxlW2ldLCBqLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBfZmllbGRfbXZfdGFibGVbaV1bal0sIHMt PmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVfSU5URVJfSSwgISFzLT5pbnRyYV9wZW5hbHR5KTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jLnBfZmllbGRfbXZf dGFibGVbaV1bal0sIHMtPmMuZl9jb2RlLCBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUl9JLCAhIXMt PmludHJhX3BlbmFsdHkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAg ICAgfSBlbHNlIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IpIHsKKyAgICAg ICAgfSBlbHNlIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikgewogICAg ICAgICAgICAgaW50IGEsIGI7CiAKICAgICAgICAgICAgIGEgPSBmZl9nZXRfYmVzdF9mY29kZSht LCBzLT5iX2ZvcndfbXZfdGFibGUsIENBTkRJREFURV9NQl9UWVBFX0ZPUldBUkQpOwogICAgICAg ICAgICAgYiA9IGZmX2dldF9iZXN0X2Zjb2RlKG0sIHMtPmJfYmlkaXJfZm9yd19tdl90YWJsZSwg Q0FORElEQVRFX01CX1RZUEVfQklESVIpOwotICAgICAgICAgICAgcy0+Zl9jb2RlID0gRkZNQVgo YSwgYik7CisgICAgICAgICAgICBzLT5jLmZfY29kZSA9IEZGTUFYKGEsIGIpOwogCiAgICAgICAg ICAgICBhID0gZmZfZ2V0X2Jlc3RfZmNvZGUobSwgcy0+Yl9iYWNrX212X3RhYmxlLCBDQU5ESURB VEVfTUJfVFlQRV9CQUNLV0FSRCk7CiAgICAgICAgICAgICBiID0gZmZfZ2V0X2Jlc3RfZmNvZGUo bSwgcy0+Yl9iaWRpcl9iYWNrX212X3RhYmxlLCBDQU5ESURBVEVfTUJfVFlQRV9CSURJUik7Ci0g ICAgICAgICAgICBzLT5iX2NvZGUgPSBGRk1BWChhLCBiKTsKKyAgICAgICAgICAgIHMtPmMuYl9j b2RlID0gRkZNQVgoYSwgYik7CiAKLSAgICAgICAgICAgIGZmX2ZpeF9sb25nX212cyhzLCBOVUxM LCAwLCBzLT5iX2ZvcndfbXZfdGFibGUsIHMtPmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVfRk9S V0FSRCwgMSk7Ci0gICAgICAgICAgICBmZl9maXhfbG9uZ19tdnMocywgTlVMTCwgMCwgcy0+Yl9i YWNrX212X3RhYmxlLCBzLT5iX2NvZGUsIENBTkRJREFURV9NQl9UWVBFX0JBQ0tXQVJELCAxKTsK LSAgICAgICAgICAgIGZmX2ZpeF9sb25nX212cyhzLCBOVUxMLCAwLCBzLT5iX2JpZGlyX2Zvcndf bXZfdGFibGUsIHMtPmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVfQklESVIsIDEpOwotICAgICAg ICAgICAgZmZfZml4X2xvbmdfbXZzKHMsIE5VTEwsIDAsIHMtPmJfYmlkaXJfYmFja19tdl90YWJs ZSwgcy0+Yl9jb2RlLCBDQU5ESURBVEVfTUJfVFlQRV9CSURJUiwgMSk7Ci0gICAgICAgICAgICBp ZiAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19JTlRFUkxBQ0VEX01FKSB7CisgICAg ICAgICAgICBmZl9maXhfbG9uZ19tdnMocywgTlVMTCwgMCwgcy0+Yl9mb3J3X212X3RhYmxlLCBz LT5jLmZfY29kZSwgQ0FORElEQVRFX01CX1RZUEVfRk9SV0FSRCwgMSk7CisgICAgICAgICAgICBm Zl9maXhfbG9uZ19tdnMocywgTlVMTCwgMCwgcy0+Yl9iYWNrX212X3RhYmxlLCBzLT5jLmJfY29k ZSwgQ0FORElEQVRFX01CX1RZUEVfQkFDS1dBUkQsIDEpOworICAgICAgICAgICAgZmZfZml4X2xv bmdfbXZzKHMsIE5VTEwsIDAsIHMtPmJfYmlkaXJfZm9yd19tdl90YWJsZSwgcy0+Yy5mX2NvZGUs IENBTkRJREFURV9NQl9UWVBFX0JJRElSLCAxKTsKKyAgICAgICAgICAgIGZmX2ZpeF9sb25nX212 cyhzLCBOVUxMLCAwLCBzLT5iX2JpZGlyX2JhY2tfbXZfdGFibGUsIHMtPmMuYl9jb2RlLCBDQU5E SURBVEVfTUJfVFlQRV9CSURJUiwgMSk7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+Zmxh Z3MgJiBBVl9DT0RFQ19GTEFHX0lOVEVSTEFDRURfTUUpIHsKICAgICAgICAgICAgICAgICBpbnQg ZGlyLCBqOwogICAgICAgICAgICAgICAgIGZvcihkaXI9MDsgZGlyPDI7IGRpcisrKXsKICAgICAg ICAgICAgICAgICAgICAgZm9yKGk9MDsgaTwyOyBpKyspewpAQCAtMzgxNyw3ICszODI2LDcgQEAg c3RhdGljIGludCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29u c3QgQVZQYWNrZXQgKnBrdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZT0g ZGlyID8gKENBTkRJREFURV9NQl9UWVBFX0JBQ0tXQVJEX0l8Q0FORElEQVRFX01CX1RZUEVfQklE SVJfSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKENBTkRJ REFURV9NQl9UWVBFX0ZPUldBUkRfSSB8Q0FORElEQVRFX01CX1RZUEVfQklESVJfSSk7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmZfZml4X2xvbmdfbXZzKHMsIHMtPmJfZmllbGRfc2Vs ZWN0X3RhYmxlW2Rpcl1baV0sIGosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHMtPmJfZmllbGRfbXZfdGFibGVbZGlyXVtpXVtqXSwgZGlyID8gcy0+Yl9jb2Rl IDogcy0+Zl9jb2RlLCB0eXBlLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcy0+Yl9maWVsZF9tdl90YWJsZVtkaXJdW2ldW2pdLCBkaXIgPyBzLT5jLmJf Y29kZSA6IHMtPmMuZl9jb2RlLCB0eXBlLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTM4MjksNzAgKzM4 MzgsNzAgQEAgc3RhdGljIGludCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29u c3QgbSwgY29uc3QgQVZQYWNrZXQgKnBrdCkKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0 dXJuIHJldDsKIAotICAgIGlmIChzLT5xc2NhbGUgPCAzICYmIHMtPm1heF9xY29lZmYgPD0gMTI4 ICYmCi0gICAgICAgIHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSAmJgotICAgICAg ICAhKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUVNDQUxFKSkKLSAgICAgICAgcy0+ cXNjYWxlPSAzOyAvL3JlZHVjZSBjbGlwcGluZyBwcm9ibGVtcworICAgIGlmIChzLT5jLnFzY2Fs ZSA8IDMgJiYgcy0+bWF4X3Fjb2VmZiA8PSAxMjggJiYKKyAgICAgICAgcy0+Yy5waWN0X3R5cGUg PT0gQVZfUElDVFVSRV9UWVBFX0kgJiYKKyAgICAgICAgIShzLT5jLmF2Y3R4LT5mbGFncyAmIEFW X0NPREVDX0ZMQUdfUVNDQUxFKSkKKyAgICAgICAgcy0+Yy5xc2NhbGU9IDM7IC8vcmVkdWNlIGNs aXBwaW5nIHByb2JsZW1zCiAKLSAgICBpZiAocy0+b3V0X2Zvcm1hdCA9PSBGTVRfTUpQRUcpIHsK LSAgICAgICAgcmV0ID0gZmZfY2hlY2tfY29kZWNfbWF0cmljZXMocy0+YXZjdHgsIEZGX01BVFJJ WF9UWVBFX0lOVFJBIHwgRkZfTUFUUklYX1RZUEVfQ0hST01BX0lOVFJBLCAoNyArIHMtPnFzY2Fs ZSkgLyBzLT5xc2NhbGUsIDY1NTM1KTsKKyAgICBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9N SlBFRykgeworICAgICAgICByZXQgPSBmZl9jaGVja19jb2RlY19tYXRyaWNlcyhzLT5jLmF2Y3R4 LCBGRl9NQVRSSVhfVFlQRV9JTlRSQSB8IEZGX01BVFJJWF9UWVBFX0NIUk9NQV9JTlRSQSwgKDcg KyBzLT5jLnFzY2FsZSkgLyBzLT5jLnFzY2FsZSwgNjU1MzUpOwogICAgICAgICBpZiAocmV0IDwg MCkKICAgICAgICAgICAgIHJldHVybiByZXQ7CiAKLSAgICAgICAgaWYgKHMtPmNvZGVjX2lkICE9 IEFWX0NPREVDX0lEX0FNVikgeworICAgICAgICBpZiAocy0+Yy5jb2RlY19pZCAhPSBBVl9DT0RF Q19JRF9BTVYpIHsKICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICogIGx1bWFfbWF0cml4ID0g ZmZfbXBlZzFfZGVmYXVsdF9pbnRyYV9tYXRyaXg7CiAgICAgICAgICAgICBjb25zdCB1aW50MTZf dCAqY2hyb21hX21hdHJpeCA9IGZmX21wZWcxX2RlZmF1bHRfaW50cmFfbWF0cml4OwogCi0gICAg ICAgICAgICBpZiAocy0+YXZjdHgtPmludHJhX21hdHJpeCkgeworICAgICAgICAgICAgaWYgKHMt PmMuYXZjdHgtPmludHJhX21hdHJpeCkgewogICAgICAgICAgICAgICAgIGNocm9tYV9tYXRyaXgg PQotICAgICAgICAgICAgICAgIGx1bWFfbWF0cml4ID0gcy0+YXZjdHgtPmludHJhX21hdHJpeDsK KyAgICAgICAgICAgICAgICBsdW1hX21hdHJpeCA9IHMtPmMuYXZjdHgtPmludHJhX21hdHJpeDsK ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+Y2hyb21hX2ludHJhX21h dHJpeCkKLSAgICAgICAgICAgICAgICBjaHJvbWFfbWF0cml4ID0gcy0+YXZjdHgtPmNocm9tYV9p bnRyYV9tYXRyaXg7CisgICAgICAgICAgICBpZiAocy0+Yy5hdmN0eC0+Y2hyb21hX2ludHJhX21h dHJpeCkKKyAgICAgICAgICAgICAgICBjaHJvbWFfbWF0cml4ID0gcy0+Yy5hdmN0eC0+Y2hyb21h X2ludHJhX21hdHJpeDsKIAogICAgICAgICAgICAgLyogZm9yIG1qcGVnLCB3ZSBkbyBpbmNsdWRl IHFzY2FsZSBpbiB0aGUgbWF0cml4ICovCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8 IDY0OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpbnQgaiA9IHMtPmlkc3AuaWRjdF9wZXJtdXRh dGlvbltpXTsKKyAgICAgICAgICAgICAgICBpbnQgaiA9IHMtPmMuaWRzcC5pZGN0X3Blcm11dGF0 aW9uW2ldOwogCi0gICAgICAgICAgICAgICAgcy0+Y2hyb21hX2ludHJhX21hdHJpeFtqXSA9IGF2 X2NsaXBfdWludDgoKGNocm9tYV9tYXRyaXhbaV0gKiBzLT5xc2NhbGUpID4+IDMpOwotICAgICAg ICAgICAgICAgIHMtPiAgICAgICBpbnRyYV9tYXRyaXhbal0gPSBhdl9jbGlwX3VpbnQ4KCggIGx1 bWFfbWF0cml4W2ldICogcy0+cXNjYWxlKSA+PiAzKTsKKyAgICAgICAgICAgICAgICBzLT5jLmNo cm9tYV9pbnRyYV9tYXRyaXhbal0gPSBhdl9jbGlwX3VpbnQ4KChjaHJvbWFfbWF0cml4W2ldICog cy0+Yy5xc2NhbGUpID4+IDMpOworICAgICAgICAgICAgICAgIHMtPmMuICAgICAgIGludHJhX21h dHJpeFtqXSA9IGF2X2NsaXBfdWludDgoKCAgbHVtYV9tYXRyaXhbaV0gKiBzLT5jLnFzY2FsZSkg Pj4gMyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzLT55X2RjX3NjYWxlX3RhYmxlID0K LSAgICAgICAgICAgIHMtPmNfZGNfc2NhbGVfdGFibGUgPSBmZl9tcGVnMTJfZGNfc2NhbGVfdGFi bGVbcy0+aW50cmFfZGNfcHJlY2lzaW9uXTsKLSAgICAgICAgICAgIHMtPmNocm9tYV9pbnRyYV9t YXRyaXhbMF0gPQotICAgICAgICAgICAgcy0+aW50cmFfbWF0cml4WzBdICA9IGZmX21wZWcxMl9k Y19zY2FsZV90YWJsZVtzLT5pbnRyYV9kY19wcmVjaXNpb25dWzhdOworICAgICAgICAgICAgcy0+ Yy55X2RjX3NjYWxlX3RhYmxlID0KKyAgICAgICAgICAgIHMtPmMuY19kY19zY2FsZV90YWJsZSA9 IGZmX21wZWcxMl9kY19zY2FsZV90YWJsZVtzLT5jLmludHJhX2RjX3ByZWNpc2lvbl07CisgICAg ICAgICAgICBzLT5jLmNocm9tYV9pbnRyYV9tYXRyaXhbMF0gPQorICAgICAgICAgICAgcy0+Yy5p bnRyYV9tYXRyaXhbMF0gID0gZmZfbXBlZzEyX2RjX3NjYWxlX3RhYmxlW3MtPmMuaW50cmFfZGNf cHJlY2lzaW9uXVs4XTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25z dCB1aW50OF90IHlbMzJdID0gezEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEz LDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEzLDEz fTsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGNbMzJdID0gezE0LDE0LDE0LDE0 LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0 LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0LDE0fTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAx OyBpIDwgNjQ7IGkrKykgewotICAgICAgICAgICAgICAgIGludCBqID0gcy0+aWRzcC5pZGN0X3Bl cm11dGF0aW9uW2ZmX3ppZ3phZ19kaXJlY3RbaV1dOworICAgICAgICAgICAgICAgIGludCBqID0g cy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb25bZmZfemlnemFnX2RpcmVjdFtpXV07CiAKLSAgICAg ICAgICAgICAgICBzLT5pbnRyYV9tYXRyaXhbal0gICAgICAgID0gc3A1eF9xc2NhbGVfZml2ZV9x dWFudF90YWJsZVswXVtpXTsKLSAgICAgICAgICAgICAgICBzLT5jaHJvbWFfaW50cmFfbWF0cml4 W2pdID0gc3A1eF9xc2NhbGVfZml2ZV9xdWFudF90YWJsZVsxXVtpXTsKKyAgICAgICAgICAgICAg ICBzLT5jLmludHJhX21hdHJpeFtqXSAgICAgICAgPSBzcDV4X3FzY2FsZV9maXZlX3F1YW50X3Rh YmxlWzBdW2ldOworICAgICAgICAgICAgICAgIHMtPmMuY2hyb21hX2ludHJhX21hdHJpeFtqXSA9 IHNwNXhfcXNjYWxlX2ZpdmVfcXVhbnRfdGFibGVbMV1baV07CiAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICBzLT55X2RjX3NjYWxlX3RhYmxlID0geTsKLSAgICAgICAgICAgIHMtPmNfZGNfc2Nh bGVfdGFibGUgPSBjOwotICAgICAgICAgICAgcy0+aW50cmFfbWF0cml4WzBdID0gMTM7Ci0gICAg ICAgICAgICBzLT5jaHJvbWFfaW50cmFfbWF0cml4WzBdID0gMTQ7CisgICAgICAgICAgICBzLT5j LnlfZGNfc2NhbGVfdGFibGUgPSB5OworICAgICAgICAgICAgcy0+Yy5jX2RjX3NjYWxlX3RhYmxl ID0gYzsKKyAgICAgICAgICAgIHMtPmMuaW50cmFfbWF0cml4WzBdID0gMTM7CisgICAgICAgICAg ICBzLT5jLmNocm9tYV9pbnRyYV9tYXRyaXhbMF0gPSAxNDsKICAgICAgICAgfQogICAgICAgICBm Zl9jb252ZXJ0X21hdHJpeChzLCBzLT5xX2ludHJhX21hdHJpeCwgcy0+cV9pbnRyYV9tYXRyaXgx NiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+aW50cmFfbWF0cml4LCBzLT5pbnRyYV9x dWFudF9iaWFzLCA4LCA4LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5pbnRy YV9tYXRyaXgsIHMtPmludHJhX3F1YW50X2JpYXMsIDgsIDgsIDEpOwogICAgICAgICBmZl9jb252 ZXJ0X21hdHJpeChzLCBzLT5xX2Nocm9tYV9pbnRyYV9tYXRyaXgsIHMtPnFfY2hyb21hX2ludHJh X21hdHJpeDE2LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jaHJvbWFfaW50cmFfbWF0 cml4LCBzLT5pbnRyYV9xdWFudF9iaWFzLCA4LCA4LCAxKTsKLSAgICAgICAgcy0+cXNjYWxlID0g ODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5jaHJvbWFfaW50cmFfbWF0cml4LCBz LT5pbnRyYV9xdWFudF9iaWFzLCA4LCA4LCAxKTsKKyAgICAgICAgcy0+Yy5xc2NhbGUgPSA4Owog ICAgIH0KIAotICAgIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpIHsKLSAg ICAgICAgcy0+Y3VyX3BpYy5wdHItPmYtPmZsYWdzIHw9IEFWX0ZSQU1FX0ZMQUdfS0VZOworICAg IGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgeworICAgICAgICBzLT5j LmN1cl9waWMucHRyLT5mLT5mbGFncyB8PSBBVl9GUkFNRV9GTEFHX0tFWTsKICAgICB9IGVsc2Ug ewotICAgICAgICBzLT5jdXJfcGljLnB0ci0+Zi0+ZmxhZ3MgJj0gfkFWX0ZSQU1FX0ZMQUdfS0VZ OworICAgICAgICBzLT5jLmN1cl9waWMucHRyLT5mLT5mbGFncyAmPSB+QVZfRlJBTUVfRkxBR19L RVk7CiAgICAgfQotICAgIHMtPmN1cl9waWMucHRyLT5mLT5waWN0X3R5cGUgPSBzLT5waWN0X3R5 cGU7CisgICAgcy0+Yy5jdXJfcGljLnB0ci0+Zi0+cGljdF90eXBlID0gcy0+Yy5waWN0X3R5cGU7 CiAKLSAgICBpZiAocy0+Y3VyX3BpYy5wdHItPmYtPmZsYWdzICYgQVZfRlJBTUVfRkxBR19LRVkp CisgICAgaWYgKHMtPmMuY3VyX3BpYy5wdHItPmYtPmZsYWdzICYgQVZfRlJBTUVfRkxBR19LRVkp CiAgICAgICAgIG0tPnBpY3R1cmVfaW5fZ29wX251bWJlciA9IDA7CiAKLSAgICBzLT5tYl94ID0g cy0+bWJfeSA9IDA7CisgICAgcy0+Yy5tYl94ID0gcy0+Yy5tYl95ID0gMDsKICAgICBzLT5sYXN0 X2JpdHM9IHB1dF9iaXRzX2NvdW50KCZzLT5wYik7CiAgICAgcmV0ID0gbS0+ZW5jb2RlX3BpY3R1 cmVfaGVhZGVyKG0pOwogICAgIGlmIChyZXQgPCAwKQpAQCAtMzkwMSwyMCArMzkxMCwyMiBAQCBz dGF0aWMgaW50IGVuY29kZV9waWN0dXJlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25z dCBBVlBhY2tldCAqcGt0KQogICAgIG0tPmhlYWRlcl9iaXRzID0gYml0cyAtIHMtPmxhc3RfYml0 czsKIAogICAgIGZvcihpPTE7IGk8Y29udGV4dF9jb3VudDsgaSsrKXsKLSAgICAgICAgdXBkYXRl X2R1cGxpY2F0ZV9jb250ZXh0X2FmdGVyX21lKHMtPnRocmVhZF9jb250ZXh0W2ldLCBzKTsKKyAg ICAgICAgdXBkYXRlX2R1cGxpY2F0ZV9jb250ZXh0X2FmdGVyX21lKHMtPmMuZW5jX2NvbnRleHRz W2ldLCBzKTsKICAgICB9Ci0gICAgcy0+YXZjdHgtPmV4ZWN1dGUocy0+YXZjdHgsIGVuY29kZV90 aHJlYWQsICZzLT50aHJlYWRfY29udGV4dFswXSwgTlVMTCwgY29udGV4dF9jb3VudCwgc2l6ZW9m KHZvaWQqKSk7CisgICAgcy0+Yy5hdmN0eC0+ZXhlY3V0ZShzLT5jLmF2Y3R4LCBlbmNvZGVfdGhy ZWFkLCAmcy0+Yy5lbmNfY29udGV4dHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBOVUxM LCBjb250ZXh0X2NvdW50LCBzaXplb2Yodm9pZCopKTsKICAgICBmb3IoaT0xOyBpPGNvbnRleHRf Y291bnQ7IGkrKyl7Ci0gICAgICAgIGlmIChzLT5wYi5idWZfZW5kID09IHMtPnRocmVhZF9jb250 ZXh0W2ldLT5wYi5idWYpCi0gICAgICAgICAgICBzZXRfcHV0X2JpdHNfYnVmZmVyX3NpemUoJnMt PnBiLCBGRk1JTihzLT50aHJlYWRfY29udGV4dFtpXS0+cGIuYnVmX2VuZCAtIHMtPnBiLmJ1Ziwg SU5UX01BWC84LUJVRl9CSVRTKSk7Ci0gICAgICAgIG1lcmdlX2NvbnRleHRfYWZ0ZXJfZW5jb2Rl KHMsIHMtPnRocmVhZF9jb250ZXh0W2ldKTsKKyAgICAgICAgaWYgKHMtPnBiLmJ1Zl9lbmQgPT0g cy0+Yy5lbmNfY29udGV4dHNbaV0tPnBiLmJ1ZikKKyAgICAgICAgICAgIHNldF9wdXRfYml0c19i dWZmZXJfc2l6ZSgmcy0+cGIsIEZGTUlOKHMtPmMuZW5jX2NvbnRleHRzW2ldLT5wYi5idWZfZW5k IC0gcy0+cGIuYnVmLCBJTlRfTUFYLzgtQlVGX0JJVFMpKTsKKyAgICAgICAgbWVyZ2VfY29udGV4 dF9hZnRlcl9lbmNvZGUocywgcy0+Yy5lbmNfY29udGV4dHNbaV0pOwogICAgIH0KICAgICBlbW1z X2MoKTsKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZGVub2lzZV9kY3RfYyhNcGVn RW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2spewotICAgIGNvbnN0IGludCBpbnRyYT0gcy0+ bWJfaW50cmE7CitzdGF0aWMgdm9pZCBkZW5vaXNlX2RjdF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0 IHMsIGludDE2X3QgKmJsb2NrKQoreworICAgIGNvbnN0IGludCBpbnRyYT0gcy0+Yy5tYl9pbnRy YTsKICAgICBpbnQgaTsKIAogICAgIHMtPmRjdF9jb3VudFtpbnRyYV0rKzsKQEAgLTM5MzcsNyAr Mzk0OCw3IEBAIHN0YXRpYyB2b2lkIGRlbm9pc2VfZGN0X2MoTXBlZ0VuY0NvbnRleHQgKnMsIGlu dDE2X3QgKmJsb2NrKXsKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQgZGN0X3F1YW50aXplX3RyZWxs aXNfYyhNcGVnRW5jQ29udGV4dCAqcywKK3N0YXRpYyBpbnQgZGN0X3F1YW50aXplX3RyZWxsaXNf YyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgcXNjYWxlLCBpbnQgKm92ZXJmbG93KXsKICAgICBjb25zdCBpbnQgKnFtYXQ7CkBA IC0zOTYxLDcgKzM5NzIsNyBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTXBl Z0VuY0NvbnRleHQgKnMsCiAgICAgaW50IHFtdWwsIHFhZGQsIHN0YXJ0X2ksIGxhc3Rfbm9uX3pl cm8sIGksIGRjOwogICAgIGNvbnN0IGludCBlc2NfbGVuZ3RoPSBzLT5hY19lc2NfbGVuZ3RoOwog ICAgIGNvbnN0IHVpbnQ4X3QgKmxlbmd0aCwgKmxhc3RfbGVuZ3RoOwotICAgIGNvbnN0IGludCBs YW1iZGE9IHMtPmxhbWJkYTIgPj4gKEZGX0xBTUJEQV9TSElGVCAtIDYpOworICAgIGNvbnN0IGlu dCBsYW1iZGE9IHMtPmMubGFtYmRhMiA+PiAoRkZfTEFNQkRBX1NISUZUIC0gNik7CiAgICAgaW50 IG1wZWcyX3FzY2FsZTsKIAogICAgIHMtPmZkc3AuZmRjdChibG9jayk7CkBAIC0zOTcxLDE4ICsz OTgyLDE4IEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50aXplX3RyZWxsaXNfYyhNcGVnRW5jQ29udGV4 dCAqcywKICAgICBxbXVsPSBxc2NhbGUqMTY7CiAgICAgcWFkZD0gKChxc2NhbGUtMSl8MSkqODsK IAotICAgIGlmIChzLT5xX3NjYWxlX3R5cGUpIG1wZWcyX3FzY2FsZSA9IGZmX21wZWcyX25vbl9s aW5lYXJfcXNjYWxlW3FzY2FsZV07CisgICAgaWYgKHMtPmMucV9zY2FsZV90eXBlKSBtcGVnMl9x c2NhbGUgPSBmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtxc2NhbGVdOwogICAgIGVsc2UgICAg ICAgICAgICAgICAgIG1wZWcyX3FzY2FsZSA9IHFzY2FsZSA8PCAxOwogCi0gICAgaWYgKHMtPm1i X2ludHJhKSB7CisgICAgaWYgKHMtPmMubWJfaW50cmEpIHsKICAgICAgICAgaW50IHE7Ci0gICAg ICAgIHNjYW50YWJsZT0gcy0+aW50cmFfc2NhbnRhYmxlLnNjYW50YWJsZTsKLSAgICAgICAgcGVy bV9zY2FudGFibGU9IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkOwotICAgICAgICBpZiAo IXMtPmgyNjNfYWljKSB7CisgICAgICAgIHNjYW50YWJsZT0gcy0+Yy5pbnRyYV9zY2FudGFibGUu c2NhbnRhYmxlOworICAgICAgICBwZXJtX3NjYW50YWJsZT0gcy0+Yy5pbnRyYV9zY2FudGFibGUu cGVybXV0YXRlZDsKKyAgICAgICAgaWYgKCFzLT5jLmgyNjNfYWljKSB7CiAgICAgICAgICAgICBp ZiAobiA8IDQpCi0gICAgICAgICAgICAgICAgcSA9IHMtPnlfZGNfc2NhbGU7CisgICAgICAgICAg ICAgICAgcSA9IHMtPmMueV9kY19zY2FsZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg ICAgICBxID0gcy0+Y19kY19zY2FsZTsKKyAgICAgICAgICAgICAgICBxID0gcy0+Yy5jX2RjX3Nj YWxlOwogICAgICAgICAgICAgcSA9IHEgPDwgMzsKICAgICAgICAgfSBlbHNlewogICAgICAgICAg ICAgLyogRm9yIEFJQyB3ZSBza2lwIHF1YW50L2RlcXVhbnQgb2YgSU5UUkFEQyAqLwpAQCAtMzk5 NSw4ICs0MDA2LDggQEAgc3RhdGljIGludCBkY3RfcXVhbnRpemVfdHJlbGxpc19jKE1wZWdFbmND b250ZXh0ICpzLAogICAgICAgICBzdGFydF9pID0gMTsKICAgICAgICAgbGFzdF9ub25femVybyA9 IDA7CiAgICAgICAgIHFtYXQgPSBuIDwgNCA/IHMtPnFfaW50cmFfbWF0cml4W3FzY2FsZV0gOiBz LT5xX2Nocm9tYV9pbnRyYV9tYXRyaXhbcXNjYWxlXTsKLSAgICAgICAgbWF0cml4ID0gbiA8IDQg PyBzLT5pbnRyYV9tYXRyaXggOiBzLT5jaHJvbWFfaW50cmFfbWF0cml4OwotICAgICAgICBpZihz LT5tcGVnX3F1YW50IHx8IHMtPm91dF9mb3JtYXQgPT0gRk1UX01QRUcxIHx8IHMtPm91dF9mb3Jt YXQgPT0gRk1UX01KUEVHKQorICAgICAgICBtYXRyaXggPSBuIDwgNCA/IHMtPmMuaW50cmFfbWF0 cml4IDogcy0+Yy5jaHJvbWFfaW50cmFfbWF0cml4OworICAgICAgICBpZiAocy0+Yy5tcGVnX3F1 YW50IHx8IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfTVBFRzEgfHwgcy0+Yy5vdXRfZm9ybWF0ID09 IEZNVF9NSlBFRykKICAgICAgICAgICAgIGJpYXM9IDE8PChRTUFUX1NISUZULTEpOwogCiAgICAg ICAgIGlmIChuID4gMyAmJiBzLT5pbnRyYV9jaHJvbWFfYWNfdmxjX2xlbmd0aCkgewpAQCAtNDAw NywxMiArNDAxOCwxMiBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTXBlZ0Vu Y0NvbnRleHQgKnMsCiAgICAgICAgICAgICBsYXN0X2xlbmd0aD0gcy0+aW50cmFfYWNfdmxjX2xh c3RfbGVuZ3RoOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2NhbnRhYmxlPSBz LT5pbnRlcl9zY2FudGFibGUuc2NhbnRhYmxlOwotICAgICAgICBwZXJtX3NjYW50YWJsZT0gcy0+ aW50ZXJfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CisgICAgICAgIHNjYW50YWJsZSAgICAgID0gcy0+ Yy5pbnRlcl9zY2FudGFibGUuc2NhbnRhYmxlOworICAgICAgICBwZXJtX3NjYW50YWJsZSA9IHMt PmMuaW50ZXJfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CiAgICAgICAgIHN0YXJ0X2kgPSAwOwogICAg ICAgICBsYXN0X25vbl96ZXJvID0gLTE7CiAgICAgICAgIHFtYXQgPSBzLT5xX2ludGVyX21hdHJp eFtxc2NhbGVdOwotICAgICAgICBtYXRyaXggPSBzLT5pbnRlcl9tYXRyaXg7CisgICAgICAgIG1h dHJpeCA9IHMtPmMuaW50ZXJfbWF0cml4OwogICAgICAgICBsZW5ndGggICAgID0gcy0+aW50ZXJf YWNfdmxjX2xlbmd0aDsKICAgICAgICAgbGFzdF9sZW5ndGg9IHMtPmludGVyX2FjX3ZsY19sYXN0 X2xlbmd0aDsKICAgICB9CkBAIC00MDg2LDE0ICs0MDk3LDE0IEBAIHN0YXRpYyBpbnQgZGN0X3F1 YW50aXplX3RyZWxsaXNfYyhNcGVnRW5jQ29udGV4dCAqcywKIAogICAgICAgICAgICAgYXZfYXNz ZXJ0MihsZXZlbCk7CiAKLSAgICAgICAgICAgIGlmKHMtPm91dF9mb3JtYXQgPT0gRk1UX0gyNjMg fHwgcy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSl7CisgICAgICAgICAgICBpZiAocy0+Yy5vdXRf Zm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSkgewogICAg ICAgICAgICAgICAgIHVucXVhbnRfY29lZmY9IGFsZXZlbCpxbXVsICsgcWFkZDsKLSAgICAgICAg ICAgIH0gZWxzZSBpZihzLT5vdXRfZm9ybWF0ID09IEZNVF9NSlBFRykgewotICAgICAgICAgICAg ICAgIGogPSBzLT5pZHNwLmlkY3RfcGVybXV0YXRpb25bc2NhbnRhYmxlW2ldXTsKKyAgICAgICAg ICAgIH0gZWxzZSBpZihzLT5jLm91dF9mb3JtYXQgPT0gRk1UX01KUEVHKSB7CisgICAgICAgICAg ICAgICAgaiA9IHMtPmMuaWRzcC5pZGN0X3Blcm11dGF0aW9uW3NjYW50YWJsZVtpXV07CiAgICAg ICAgICAgICAgICAgdW5xdWFudF9jb2VmZiA9IGFsZXZlbCAqIG1hdHJpeFtqXSAqIDg7CiAgICAg ICAgICAgICB9ZWxzZXsgLy8gTVBFRy0xCi0gICAgICAgICAgICAgICAgaiA9IHMtPmlkc3AuaWRj dF9wZXJtdXRhdGlvbltzY2FudGFibGVbaV1dOyAvLyBGSVhNRTogb3B0aW1pemUKLSAgICAgICAg ICAgICAgICBpZihzLT5tYl9pbnRyYSl7CisgICAgICAgICAgICAgICAgaiA9IHMtPmMuaWRzcC5p ZGN0X3Blcm11dGF0aW9uW3NjYW50YWJsZVtpXV07IC8vIEZJWE1FOiBvcHRpbWl6ZQorICAgICAg ICAgICAgICAgIGlmKHMtPmMubWJfaW50cmEpewogICAgICAgICAgICAgICAgICAgICAgICAgdW5x dWFudF9jb2VmZiA9IChpbnQpKCAgYWxldmVsICAqIG1wZWcyX3FzY2FsZSAqIG1hdHJpeFtqXSkg Pj4gNDsKICAgICAgICAgICAgICAgICAgICAgICAgIHVucXVhbnRfY29lZmYgPSAgICh1bnF1YW50 X2NvZWZmIC0gMSkgfCAxOwogICAgICAgICAgICAgICAgIH1lbHNlewpAQCAtNDExOCw3ICs0MTI5 LDcgQEAgc3RhdGljIGludCBkY3RfcXVhbnRpemVfdHJlbGxpc19jKE1wZWdFbmNDb250ZXh0ICpz LAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg ICAgICAgaWYocy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5vdXRfZm9ybWF0ID09IEZN VF9IMjYxKXsKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYz IHx8IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSkgewogICAgICAgICAgICAgICAgICAgICBm b3Ioaj1zdXJ2aXZvcl9jb3VudC0xOyBqPj0wOyBqLS0pewogICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHJ1bj0gaSAtIHN1cnZpdm9yW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHNjb3JlPSBkaXN0b3J0aW9uICsgbGFzdF9sZW5ndGhbVU5JX0FDX0VOQ19JTkRFWChydW4sIGxl dmVsKV0qbGFtYmRhOwpAQCAtNDE0NCw3ICs0MTU1LDcgQEAgc3RhdGljIGludCBkY3RfcXVhbnRp emVfdHJlbGxpc19jKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYocy0+b3V0X2Zvcm1hdCA9PSBG TVRfSDI2MyB8fCBzLT5vdXRfZm9ybWF0ID09IEZNVF9IMjYxKXsKKyAgICAgICAgICAgICAgICBp ZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRf SDI2MSkgewogICAgICAgICAgICAgICAgICAgZm9yKGo9c3Vydml2b3JfY291bnQtMTsgaj49MDsg ai0tKXsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBydW49IGkgLSBzdXJ2aXZvcltqXTsK ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY29yZT0gZGlzdG9ydGlvbiArIHNjb3JlX3Rh YltpLXJ1bl07CkBAIC00MTc3LDcgKzQxODgsNyBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90 cmVsbGlzX2MoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgIHN1cnZpdm9yWyBzdXJ2aXZvcl9j b3VudCsrIF09IGkrMTsKICAgICB9CiAKLSAgICBpZihzLT5vdXRfZm9ybWF0ICE9IEZNVF9IMjYz ICYmIHMtPm91dF9mb3JtYXQgIT0gRk1UX0gyNjEpeworICAgIGlmKHMtPmMub3V0X2Zvcm1hdCAh PSBGTVRfSDI2MyAmJiBzLT5jLm91dF9mb3JtYXQgIT0gRk1UX0gyNjEpewogICAgICAgICBsYXN0 X3Njb3JlPSAyNTYqMjU2KjI1NioxMjA7CiAgICAgICAgIGZvcihpPSBzdXJ2aXZvclswXTsgaTw9 bGFzdF9ub25femVybyArIDE7IGkrKyl7CiAgICAgICAgICAgICBpbnQgc2NvcmU9IHNjb3JlX3Rh YltpXTsKQEAgLTQyMTEsNyArNDIyMiw3IEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50aXplX3RyZWxs aXNfYyhNcGVnRW5jQ29udGV4dCAqcywKICAgICAgICAgICAgIGludCBhbGV2ZWw9IEZGQUJTKGxl dmVsKTsKICAgICAgICAgICAgIGludCB1bnF1YW50X2NvZWZmLCBzY29yZSwgZGlzdG9ydGlvbjsK IAotICAgICAgICAgICAgaWYocy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5vdXRfZm9y bWF0ID09IEZNVF9IMjYxKXsKKyAgICAgICAgICAgIGlmKHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRf SDI2MyB8fCBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX0gyNjEpewogICAgICAgICAgICAgICAgICAg ICB1bnF1YW50X2NvZWZmPSAoYWxldmVsKnFtdWwgKyBxYWRkKT4+MzsKICAgICAgICAgICAgIH0g ZWxzZXsgLy8gTVBFRy0xCiAgICAgICAgICAgICAgICAgICAgIHVucXVhbnRfY29lZmYgPSAoKCgg IGFsZXZlbCAgPDwgMSkgKyAxKSAqIG1wZWcyX3FzY2FsZSAqICgoaW50KSBtYXRyaXhbMF0pKSA+ PiA1OwpAQCAtNDI3MCw3ICs0MjgxLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfYmFzaXModWludDhf dCAqcGVybSl7CiAgICAgfQogfQogCi1zdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9yZWZpbmUoTXBl Z0VuY0NvbnRleHQgKnMsIC8vRklYTUUgYnJlYWtzIGRlbm9pc2U/CitzdGF0aWMgaW50IGRjdF9x dWFudGl6ZV9yZWZpbmUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgLy9GSVhNRSBicmVha3MgZGVu b2lzZT8KICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQxNl90ICp3 ZWlnaHQsIGludDE2X3QgKm9yaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbiwgaW50 IHFzY2FsZSl7CiAgICAgaW50MTZfdCByZW1bNjRdOwpAQCAtNDI4NiwyMSArNDI5NywyMSBAQCBz dGF0aWMgaW50IGRjdF9xdWFudGl6ZV9yZWZpbmUoTXBlZ0VuY0NvbnRleHQgKnMsIC8vRklYTUUg YnJlYWtzIGRlbm9pc2U/CiAgICAgY29uc3QgdWludDhfdCAqbGVuZ3RoOwogICAgIGNvbnN0IHVp bnQ4X3QgKmxhc3RfbGVuZ3RoOwogICAgIGludCBsYW1iZGE7Ci0gICAgaW50IHJsZV9pbmRleCwg cnVuLCBxID0gMSwgc3VtOyAvL3EgaXMgb25seSB1c2VkIHdoZW4gcy0+bWJfaW50cmEgaXMgdHJ1 ZQorICAgIGludCBybGVfaW5kZXgsIHJ1biwgcSA9IDEsIHN1bTsgLy9xIGlzIG9ubHkgdXNlZCB3 aGVuIHMtPmMubWJfaW50cmEgaXMgdHJ1ZQogCiAgICAgaWYoYmFzaXNbMF1bMF0gPT0gMCkKLSAg ICAgICAgYnVpbGRfYmFzaXMocy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uKTsKKyAgICAgICAgYnVp bGRfYmFzaXMocy0+Yy5pZHNwLmlkY3RfcGVybXV0YXRpb24pOwogCiAgICAgcW11bD0gcXNjYWxl KjI7CiAgICAgcWFkZD0gKHFzY2FsZS0xKXwxOwotICAgIGlmIChzLT5tYl9pbnRyYSkgewotICAg ICAgICBzY2FudGFibGU9IHMtPmludHJhX3NjYW50YWJsZS5zY2FudGFibGU7Ci0gICAgICAgIHBl cm1fc2NhbnRhYmxlPSBzLT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZDsKLSAgICAgICAgaWYg KCFzLT5oMjYzX2FpYykgeworICAgIGlmIChzLT5jLm1iX2ludHJhKSB7CisgICAgICAgIHNjYW50 YWJsZT0gcy0+Yy5pbnRyYV9zY2FudGFibGUuc2NhbnRhYmxlOworICAgICAgICBwZXJtX3NjYW50 YWJsZT0gcy0+Yy5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZDsKKyAgICAgICAgaWYgKCFzLT5j LmgyNjNfYWljKSB7CiAgICAgICAgICAgICBpZiAobiA8IDQpCi0gICAgICAgICAgICAgICAgcSA9 IHMtPnlfZGNfc2NhbGU7CisgICAgICAgICAgICAgICAgcSA9IHMtPmMueV9kY19zY2FsZTsKICAg ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBxID0gcy0+Y19kY19zY2FsZTsKKyAgICAg ICAgICAgICAgICBxID0gcy0+Yy5jX2RjX3NjYWxlOwogICAgICAgICB9IGVsc2V7CiAgICAgICAg ICAgICAvKiBGb3IgQUlDIHdlIHNraXAgcXVhbnQvZGVxdWFudCBvZiBJTlRSQURDICovCiAgICAg ICAgICAgICBxID0gMTsKQEAgLTQzMTEsNyArNDMyMiw3IEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50 aXplX3JlZmluZShNcGVnRW5jQ29udGV4dCAqcywgLy9GSVhNRSBicmVha3MgZGVub2lzZT8KICAg ICAgICAgZGM9IGJsb2NrWzBdKnE7CiAvLyAgICAgICAgYmxvY2tbMF0gPSAoYmxvY2tbMF0gKyAo cSA+PiAxKSkgLyBxOwogICAgICAgICBzdGFydF9pID0gMTsKLS8vICAgICAgICBpZihzLT5tcGVn X3F1YW50IHx8IHMtPm91dF9mb3JtYXQgPT0gRk1UX01QRUcxKQorLy8gICAgICAgIGlmKHMtPmMu bXBlZ19xdWFudCB8fCBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX01QRUcxKQogLy8gICAgICAgICAg ICBiaWFzPSAxPDwoUU1BVF9TSElGVC0xKTsKICAgICAgICAgaWYgKG4gPiAzICYmIHMtPmludHJh X2Nocm9tYV9hY192bGNfbGVuZ3RoKSB7CiAgICAgICAgICAgICBsZW5ndGggICAgID0gcy0+aW50 cmFfY2hyb21hX2FjX3ZsY19sZW5ndGg7CkBAIC00MzIxLDE0ICs0MzMyLDE0IEBAIHN0YXRpYyBp bnQgZGN0X3F1YW50aXplX3JlZmluZShNcGVnRW5jQ29udGV4dCAqcywgLy9GSVhNRSBicmVha3Mg ZGVub2lzZT8KICAgICAgICAgICAgIGxhc3RfbGVuZ3RoPSBzLT5pbnRyYV9hY192bGNfbGFzdF9s ZW5ndGg7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBzY2FudGFibGU9IHMtPmlu dGVyX3NjYW50YWJsZS5zY2FudGFibGU7Ci0gICAgICAgIHBlcm1fc2NhbnRhYmxlPSBzLT5pbnRl cl9zY2FudGFibGUucGVybXV0YXRlZDsKKyAgICAgICAgc2NhbnRhYmxlPSBzLT5jLmludGVyX3Nj YW50YWJsZS5zY2FudGFibGU7CisgICAgICAgIHBlcm1fc2NhbnRhYmxlPSBzLT5jLmludGVyX3Nj YW50YWJsZS5wZXJtdXRhdGVkOwogICAgICAgICBkYz0gMDsKICAgICAgICAgc3RhcnRfaSA9IDA7 CiAgICAgICAgIGxlbmd0aCAgICAgPSBzLT5pbnRlcl9hY192bGNfbGVuZ3RoOwogICAgICAgICBs YXN0X2xlbmd0aD0gcy0+aW50ZXJfYWNfdmxjX2xhc3RfbGVuZ3RoOwogICAgIH0KLSAgICBsYXN0 X25vbl96ZXJvID0gcy0+YmxvY2tfbGFzdF9pbmRleFtuXTsKKyAgICBsYXN0X25vbl96ZXJvID0g cy0+Yy5ibG9ja19sYXN0X2luZGV4W25dOwogCiAgICAgZGMgKz0gKDE8PChSRUNPTl9TSElGVC0x KSk7CiAgICAgZm9yKGk9MDsgaTw2NDsgaSsrKXsKQEAgLTQzNTEsNyArNDM2Miw3IEBAIHN0YXRp YyBpbnQgZGN0X3F1YW50aXplX3JlZmluZShNcGVnRW5jQ29udGV4dCAqcywgLy9GSVhNRSBicmVh a3MgZGVub2lzZT8KICAgICAgICAgYXZfYXNzZXJ0Mih3PCgxPDw2KSk7CiAgICAgICAgIHN1bSAr PSB3Knc7CiAgICAgfQotICAgIGxhbWJkYT0gc3VtKih1aW50NjRfdClzLT5sYW1iZGEyID4+IChG Rl9MQU1CREFfU0hJRlQgLSA2ICsgNiArIDYgKyA2KTsKKyAgICBsYW1iZGE9IHN1bSoodWludDY0 X3Qpcy0+Yy5sYW1iZGEyID4+IChGRl9MQU1CREFfU0hJRlQgLSA2ICsgNiArIDYgKyA2KTsKIAog ICAgIHJ1bj0wOwogICAgIHJsZV9pbmRleD0wOwpAQCAtNDM5Miw3ICs0NDAzLDcgQEAgc3RhdGlj IGludCBkY3RfcXVhbnRpemVfcmVmaW5lKE1wZWdFbmNDb250ZXh0ICpzLCAvL0ZJWE1FIGJyZWFr cyBkZW5vaXNlPwogICAgICAgICAgICAgY29uc3QgaW50IGxldmVsPSBibG9ja1swXTsKICAgICAg ICAgICAgIGludCBjaGFuZ2UsIG9sZF9jb2VmZjsKIAotICAgICAgICAgICAgYXZfYXNzZXJ0Mihz LT5tYl9pbnRyYSk7CisgICAgICAgICAgICBhdl9hc3NlcnQyKHMtPmMubWJfaW50cmEpOwogCiAg ICAgICAgICAgICBvbGRfY29lZmY9IHEqbGV2ZWw7CiAKQEAgLTQ2MjIsNyArNDYzMyw3IEBAIHZv aWQgZmZfYmxvY2tfcGVybXV0ZShpbnQxNl90ICpibG9jaywgY29uc3QgdWludDhfdCAqcGVybXV0 YXRpb24sCiAgICAgfQogfQogCi1zdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9jKE1wZWdFbmNDb250 ZXh0ICpzLAorc3RhdGljIGludCBkY3RfcXVhbnRpemVfYyhNUFZFbmNDb250ZXh0ICpjb25zdCBz LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBxc2NhbGUsIGludCAqb3ZlcmZsb3cpCiB7CkBAIC00 NjM4LDEzICs0NjQ5LDEzIEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50aXplX2MoTXBlZ0VuY0NvbnRl eHQgKnMsCiAgICAgaWYocy0+ZGN0X2Vycm9yX3N1bSkKICAgICAgICAgcy0+ZGVub2lzZV9kY3Qo cywgYmxvY2spOwogCi0gICAgaWYgKHMtPm1iX2ludHJhKSB7Ci0gICAgICAgIHNjYW50YWJsZT0g cy0+aW50cmFfc2NhbnRhYmxlLnNjYW50YWJsZTsKLSAgICAgICAgaWYgKCFzLT5oMjYzX2FpYykg eworICAgIGlmIChzLT5jLm1iX2ludHJhKSB7CisgICAgICAgIHNjYW50YWJsZT0gcy0+Yy5pbnRy YV9zY2FudGFibGUuc2NhbnRhYmxlOworICAgICAgICBpZiAoIXMtPmMuaDI2M19haWMpIHsKICAg ICAgICAgICAgIGlmIChuIDwgNCkKLSAgICAgICAgICAgICAgICBxID0gcy0+eV9kY19zY2FsZTsK KyAgICAgICAgICAgICAgICBxID0gcy0+Yy55X2RjX3NjYWxlOwogICAgICAgICAgICAgZWxzZQot ICAgICAgICAgICAgICAgIHEgPSBzLT5jX2RjX3NjYWxlOworICAgICAgICAgICAgICAgIHEgPSBz LT5jLmNfZGNfc2NhbGU7CiAgICAgICAgICAgICBxID0gcSA8PCAzOwogICAgICAgICB9IGVsc2UK ICAgICAgICAgICAgIC8qIEZvciBBSUMgd2Ugc2tpcCBxdWFudC9kZXF1YW50IG9mIElOVFJBREMg Ki8KQEAgLTQ2NTcsNyArNDY2OCw3IEBAIHN0YXRpYyBpbnQgZGN0X3F1YW50aXplX2MoTXBlZ0Vu Y0NvbnRleHQgKnMsCiAgICAgICAgIHFtYXQgPSBuIDwgNCA/IHMtPnFfaW50cmFfbWF0cml4W3Fz Y2FsZV0gOiBzLT5xX2Nocm9tYV9pbnRyYV9tYXRyaXhbcXNjYWxlXTsKICAgICAgICAgYmlhcz0g cy0+aW50cmFfcXVhbnRfYmlhcyooMTw8KFFNQVRfU0hJRlQgLSBRVUFOVF9CSUFTX1NISUZUKSk7 CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2NhbnRhYmxlPSBzLT5pbnRlcl9zY2FudGFibGUuc2Nh bnRhYmxlOworICAgICAgICBzY2FudGFibGU9IHMtPmMuaW50ZXJfc2NhbnRhYmxlLnNjYW50YWJs ZTsKICAgICAgICAgc3RhcnRfaSA9IDA7CiAgICAgICAgIGxhc3Rfbm9uX3plcm8gPSAtMTsKICAg ICAgICAgcW1hdCA9IHMtPnFfaW50ZXJfbWF0cml4W3FzY2FsZV07CkBAIC00Njk4LDggKzQ3MDks OCBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9jKE1wZWdFbmNDb250ZXh0ICpzLAogICAgICpv dmVyZmxvdz0gcy0+bWF4X3Fjb2VmZiA8IG1heDsgLy9vdmVyZmxvdyBtaWdodCBoYXZlIGhhcHBl bmVkCiAKICAgICAvKiB3ZSBuZWVkIHRoaXMgcGVybXV0YXRpb24gc28gdGhhdCB3ZSBjb3JyZWN0 IHRoZSBJRENULCB3ZSBvbmx5IHBlcm11dGUgdGhlICE9MCBlbGVtZW50cyAqLwotICAgIGlmIChz LT5pZHNwLnBlcm1fdHlwZSAhPSBGRl9JRENUX1BFUk1fTk9ORSkKLSAgICAgICAgZmZfYmxvY2tf cGVybXV0ZShibG9jaywgcy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uLAorICAgIGlmIChzLT5jLmlk c3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVSTV9OT05FKQorICAgICAgICBmZl9ibG9ja19wZXJt dXRlKGJsb2NrLCBzLT5jLmlkc3AuaWRjdF9wZXJtdXRhdGlvbiwKICAgICAgICAgICAgICAgICAg ICAgICBzY2FudGFibGUsIGxhc3Rfbm9uX3plcm8pOwogCiAgICAgcmV0dXJuIGxhc3Rfbm9uX3pl cm87CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oIGIvbGliYXZjb2RlYy9t cGVndmlkZW9lbmMuaAppbmRleCBiYzhhM2U4MGQ1Li4xZDEyNGIxYmQxIDEwMDY0NAotLS0gYS9s aWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgK QEAgLTMyLDEzICszMiwxNDIgQEAKIAogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgog I2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKKyNpbmNsdWRlICJmZGN0ZHNwLmgiCiAjaW5jbHVk ZSAibXBlZ3ZpZGVvLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVvZW5jZHNwLmgiCisjaW5jbHVkZSAi cGl4YmxvY2tkc3AuaCIKKyNpbmNsdWRlICJwdXRfYml0cy5oIgogI2luY2x1ZGUgInJhdGVjb250 cm9sLmgiCiAKICNkZWZpbmUgTVBWRU5DX01BWF9CX0ZSQU1FUyAxNgogCit0eXBlZGVmIHN0cnVj dCBNUFZFbmNDb250ZXh0IHsKKyAgICBNcGVnRW5jQ29udGV4dCBjOyAgICAgICAgICAgLy8vPCB0 aGUgY29tbW9uIGJhc2UgY29udGV4dAorCisgICAgLyoqIGJpdCBvdXRwdXQgKi8KKyAgICBQdXRC aXRDb250ZXh0IHBiOworCisgICAgaW50ICpsYW1iZGFfdGFibGU7CisgICAgaW50IGFkYXB0aXZl X3F1YW50OyAgICAgICAgIC8vLzwgdXNlIGFkYXB0aXZlIHF1YW50aXphdGlvbgorICAgIGludCBk cXVhbnQ7ICAgICAgICAgICAgICAgICAvLy88IHFzY2FsZSBkaWZmZXJlbmNlIHRvIHByZXYgcXNj YWxlCisgICAgaW50IHNraXBkY3Q7ICAgICAgICAgICAgICAgIC8vLzwgc2tpcCBkY3QgYW5kIGNv ZGUgemVybyByZXNpZHVhbAorCisgICAgaW50IGx1bWFfZWxpbV90aHJlc2hvbGQ7CisgICAgaW50 IGNocm9tYV9lbGltX3RocmVzaG9sZDsKKworICAgIC8qKgorICAgICAqIFJlZmVyZW5jZSB0byB0 aGUgc291cmNlIHBpY3R1cmUuCisgICAgICovCisgICAgQVZGcmFtZSAqbmV3X3BpYzsKKworICAg IEZEQ1REU1BDb250ZXh0IGZkc3A7CisgICAgTXBlZ3ZpZGVvRW5jRFNQQ29udGV4dCBtcHZlbmNk c3A7CisgICAgUGl4YmxvY2tEU1BDb250ZXh0IHBkc3A7CisKKyAgICBpbnQxNl90ICgqcF9tdl90 YWJsZSlbMl07ICAgICAgICAgICAgLy8vPCBNViB0YWJsZSAoMU1WIHBlciBNQikgUC1mcmFtZQor ICAgIGludDE2X3QgKCpiX2ZvcndfbXZfdGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgx TVYgcGVyIE1CKSBmb3J3YXJkIG1vZGUgQi1mcmFtZQorICAgIGludDE2X3QgKCpiX2JhY2tfbXZf dGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgxTVYgcGVyIE1CKSBiYWNrd2FyZCBtb2Rl IEItZnJhbWUKKyAgICBpbnQxNl90ICgqYl9iaWRpcl9mb3J3X212X3RhYmxlKVsyXTsgLy8vPCBN ViB0YWJsZSAoMU1WIHBlciBNQikgYmlkaXIgbW9kZSBCLWZyYW1lCisgICAgaW50MTZfdCAoKmJf YmlkaXJfYmFja19tdl90YWJsZSlbMl07IC8vLzwgTVYgdGFibGUgKDFNViBwZXIgTUIpIGJpZGly IG1vZGUgQi1mcmFtZQorICAgIGludDE2X3QgKCpiX2RpcmVjdF9tdl90YWJsZSlbMl07ICAgICAv Ly88IE1WIHRhYmxlICgxTVYgcGVyIE1CKSBkaXJlY3QgbW9kZSBCLWZyYW1lCisgICAgaW50MTZf dCAoKmJfZmllbGRfbXZfdGFibGVbMl1bMl1bMl0pWzJdOy8vLzwgTVYgdGFibGUgKDRNViBwZXIg TUIpIGludGVybGFjZWQgQi1mcmFtZQorICAgIHVpbnQ4X3QgKCpwX2ZpZWxkX3NlbGVjdF90YWJs ZVsyXSk7ICAvLy88IE9ubHkgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYWxsb2NhdGVkCisgICAgdWlu dDhfdCAoKmJfZmllbGRfc2VsZWN0X3RhYmxlWzJdWzJdKTsgLy8vPCBhbGxvY2F0ZWQgam9pbnRs eSB3aXRoIHBfZmllbGRfc2VsZWN0X3RhYmxlCisKKyAgICB1aW50MTZfdCAqbWJfdHlwZTsgICAg ICAgICAgLy8vPCBUYWJsZSBmb3IgY2FuZGlkYXRlIE1CIHR5cGVzCisgICAgdWludDE2X3QgKm1i X3ZhcjsgICAgICAgICAgIC8vLzwgVGFibGUgZm9yIE1CIHZhcmlhbmNlcworICAgIHVpbnQxNl90 ICptY19tYl92YXI7ICAgICAgICAvLy88IFRhYmxlIGZvciBtb3Rpb24gY29tcGVuc2F0ZWQgTUIg dmFyaWFuY2VzCisgICAgdWludDhfdCAgKm1iX21lYW47ICAgICAgICAgIC8vLzwgVGFibGUgZm9y IE1CIGx1bWluYW5jZQorICAgIHVpbnQ2NF90IGVuY29kaW5nX2Vycm9yW01QVl9NQVhfUExBTkVT XTsKKworICAgIGludCBpbnRyYV9xdWFudF9iaWFzOyAgICAvLy88IGJpYXMgZm9yIHRoZSBxdWFu dGl6ZXIKKyAgICBpbnQgaW50ZXJfcXVhbnRfYmlhczsgICAgLy8vPCBiaWFzIGZvciB0aGUgcXVh bnRpemVyCisgICAgaW50IG1pbl9xY29lZmY7ICAgICAgICAgIC8vLzwgbWluaW11bSBlbmNvZGFi bGUgY29lZmZpY2llbnQKKyAgICBpbnQgbWF4X3Fjb2VmZjsgICAgICAgICAgLy8vPCBtYXhpbXVt IGVuY29kYWJsZSBjb2VmZmljaWVudAorICAgIGludCBhY19lc2NfbGVuZ3RoOyAgICAgICAvLy88 IG51bSBvZiBiaXRzIG5lZWRlZCB0byBlbmNvZGUgdGhlIGxvbmdlc3QgZXNjCisgICAgdWludDhf dCAqaW50cmFfYWNfdmxjX2xlbmd0aDsKKyAgICB1aW50OF90ICppbnRyYV9hY192bGNfbGFzdF9s ZW5ndGg7CisgICAgdWludDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sZW5ndGg7CisgICAgdWlu dDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sYXN0X2xlbmd0aDsKKyAgICB1aW50OF90ICppbnRl cl9hY192bGNfbGVuZ3RoOworICAgIHVpbnQ4X3QgKmludGVyX2FjX3ZsY19sYXN0X2xlbmd0aDsK KyAgICB1aW50OF90ICpsdW1hX2RjX3ZsY19sZW5ndGg7CisKKyAgICBpbnQgY29kZWRfc2NvcmVb MTJdOworCisgICAgLyoqIHByZWNvbXB1dGVkIG1hdHJpeCAoY29tYmluZSBxc2NhbGUgYW5kIERD VCByZW5vcm0pICovCisgICAgaW50ICgqcV9pbnRyYV9tYXRyaXgpWzY0XTsKKyAgICBpbnQgKCpx X2Nocm9tYV9pbnRyYV9tYXRyaXgpWzY0XTsKKyAgICBpbnQgKCpxX2ludGVyX21hdHJpeClbNjRd OworICAgIC8qKiBpZGVudGljYWwgdG8gdGhlIGFib3ZlIGJ1dCBmb3IgTU1YICYgdGhlc2UgYXJl IG5vdCBwZXJtdXRhdGVkLCBzZWNvbmQgNjQgZW50cmllcyBhcmUgYmlhcyovCisgICAgdWludDE2 X3QgKCpxX2ludHJhX21hdHJpeDE2KVsyXVs2NF07CisgICAgdWludDE2X3QgKCpxX2Nocm9tYV9p bnRyYV9tYXRyaXgxNilbMl1bNjRdOworICAgIHVpbnQxNl90ICgqcV9pbnRlcl9tYXRyaXgxNilb Ml1bNjRdOworCisgICAgLyogbm9pc2UgcmVkdWN0aW9uICovCisgICAgaW50ICgqZGN0X2Vycm9y X3N1bSlbNjRdOworICAgIGludCBkY3RfY291bnRbMl07CisgICAgdWludDE2X3QgKCpkY3Rfb2Zm c2V0KVs2NF07CisKKyAgICAvKiBzdGF0aXN0aWNzLCB1c2VkIGZvciAyLXBhc3MgZW5jb2Rpbmcg Ki8KKyAgICBpbnQgbXZfYml0czsKKyAgICBpbnQgaV90ZXhfYml0czsKKyAgICBpbnQgcF90ZXhf Yml0czsKKyAgICBpbnQgaV9jb3VudDsKKyAgICBpbnQgbWlzY19iaXRzOyAvLy88IGNicCwgbWJf dHlwZQorICAgIGludCBsYXN0X2JpdHM7IC8vLzwgdGVtcCB2YXIgdXNlZCBmb3IgY2FsY3VsYXRp bmcgdGhlIGFib3ZlIHZhcnMKKworICAgIC8qIEguMjYzIHNwZWNpZmljICovCisgICAgaW50IG1i X2luZm87ICAgICAgICAgICAgICAgICAgIC8vLzwgaW50ZXJ2YWwgZm9yIG91dHB1dHRpbmcgaW5m byBhYm91dCBtYiBvZmZzZXRzIGFzIHNpZGUgZGF0YQorICAgIGludCBwcmV2X21iX2luZm8sIGxh c3RfbWJfaW5mbzsKKyAgICBpbnQgbWJfaW5mb19zaXplOworICAgIHVpbnQ4X3QgKm1iX2luZm9f cHRyOworCisgICAgLyogTVBFRy00IHNwZWNpZmljICovCisgICAgUHV0Qml0Q29udGV4dCB0ZXhf cGI7ICAgICAgICAgIC8vLzwgdXNlZCBmb3IgZGF0YSBwYXJ0aXRpb25lZCBWT1BzCisgICAgUHV0 Qml0Q29udGV4dCBwYjI7ICAgICAgICAgICAgIC8vLzwgdXNlZCBmb3IgZGF0YSBwYXJ0aXRpb25l ZCBWT1BzCisKKyAgICAvKiBNU01QRUc0IHNwZWNpZmljICovCisgICAgaW50IGVzYzNfbGV2ZWxf bGVuZ3RoOworCisgICAgLyogTUpQRUcgc3BlY2lmaWMgKi8KKyAgICBzdHJ1Y3QgTUpwZWdDb250 ZXh0ICptanBlZ19jdHg7CisgICAgaW50IGVzY19wb3M7CisKKyAgICAvKiBNUEVHLTEgc3BlY2lm aWMgKi8KKyAgICBpbnQgbGFzdF9tdl9kaXI7ICAgICAgICAgLy8vPCBsYXN0IG12X2RpciwgdXNl ZCBmb3IgQi1mcmFtZSBlbmNvZGluZworCisgICAgLyogUlRQIHNwZWNpZmljICovCisgICAgaW50 IHJ0cF9tb2RlOworICAgIGludCBydHBfcGF5bG9hZF9zaXplOworCisgICAgdWludDhfdCAqcHRy X2xhc3Rnb2I7CisKKyAgICB2b2lkICgqZW5jb2RlX21iKShzdHJ1Y3QgTVBWRW5jQ29udGV4dCAq cywgaW50MTZfdCBibG9ja1tdWzY0XSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbW90aW9u X3gsIGludCBtb3Rpb25feSk7CisKKyAgICBpbnQgKCpkY3RfcXVhbnRpemUpKHN0cnVjdCBNUFZF bmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2Nh bGUsIGludCAqb3ZlcmZsb3cpOworICAgIHZvaWQgKCpkZW5vaXNlX2RjdCkoc3RydWN0IE1QVkVu Y0NvbnRleHQgKnMsIGludDE2X3QgKmJsb2NrKTsKKworICAgIGludCBtcHZfZmxhZ3M7ICAgICAg Ly8vPCBmbGFncyBzZXQgYnkgcHJpdmF0ZSBvcHRpb25zCisgICAgaW50IHF1YW50aXplcl9ub2lz ZV9zaGFwaW5nOworCisgICAgbWVfY21wX2Z1bmMgaWxkY3RfY21wWzJdOyAvLy88IDAgPSBpbnRy YSwgMSA9IG5vbi1pbnRyYQorICAgIG1lX2NtcF9mdW5jIG5fc3NlX2NtcFsyXTsgLy8vPCBlaXRo ZXIgU1NFIG9yIE5TU0UgY21wIGZ1bmMKKyAgICBtZV9jbXBfZnVuYyBzYWRfY21wWzJdOworICAg IG1lX2NtcF9mdW5jIHNzZV9jbXBbMl07CisgICAgaW50ICgqc3VtX2Fic19kY3RlbGVtKShjb25z dCBpbnQxNl90ICpibG9jayk7CisKKyAgICAvLy8gQml0ZmllbGQgY29udGFpbmluZyBpbmZvcm1h dGlvbiB3aGljaCBmcmFtZXMgdG8gcmVjb25zdHJ1Y3QuCisgICAgaW50IGZyYW1lX3JlY29uc3Ry dWN0aW9uX2JpdGZpZWxkOworCisgICAgaW50IGVycm9yX3JhdGU7CisKKyAgICBpbnQgaW50cmFf cGVuYWx0eTsKK30gTVBWRW5jQ29udGV4dDsKKwogdHlwZWRlZiBzdHJ1Y3QgTVBWTWFpbkVuY0Nv bnRleHQgewotICAgIE1wZWdFbmNDb250ZXh0IHM7ICAvLy88IFRoZSBtYWluIHNsaWNlY29udGV4 dAorICAgIE1QVkVuY0NvbnRleHQgczsgICAgICAgICAgICAgICAvLy88IFRoZSBtYWluIHNsaWNl Y29udGV4dAogCiAgICAgaW50IHNjZW5lY2hhbmdlX3RocmVzaG9sZDsKIApAQCAtMTEyLDE0ICsy NDEsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgTVBWTWFpbkVuY0NvbnRleHQgewogICAgIGludDE2X3Qg KCptdl90YWJsZV9iYXNlKVsyXTsKIH0gTVBWTWFpbkVuY0NvbnRleHQ7CiAKLXN0YXRpYyBpbmxp bmUgY29uc3QgTVBWTWFpbkVuY0NvbnRleHQgKnNsaWNlX3RvX21haW5lbmMoY29uc3QgTXBlZ0Vu Y0NvbnRleHQgKnMpCitzdGF0aWMgaW5saW5lIGNvbnN0IE1QVk1haW5FbmNDb250ZXh0ICpzbGlj ZV90b19tYWluZW5jKGNvbnN0IE1QVkVuY0NvbnRleHQgKnMpCiB7CiAjaWZkZWYgTk9fU0xJQ0Vf VEhSRUFESU5HX0hFUkUKLSAgICBhdl9hc3NlcnQyKHMtPnNsaWNlX2NvbnRleHRfY291bnQgPD0g MSAmJgotICAgICAgICAgICAgICAgIShzLT5hdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFW X0NPREVDX0NBUF9TTElDRV9USFJFQURTKSk7CisgICAgYXZfYXNzZXJ0MihzLT5jLnNsaWNlX2Nv bnRleHRfY291bnQgPD0gMSAmJgorICAgICAgICAgICAgICAgIShzLT5jLmF2Y3R4LT5jb2RlYy0+ Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1NMSUNFX1RIUkVBRFMpKTsKICAgICByZXR1cm4g KGNvbnN0IE1QVk1haW5FbmNDb250ZXh0KilzOwogI2Vsc2UKLSAgICByZXR1cm4gcy0+ZW5jcGFy ZW50OworICAgIHJldHVybiBzLT5jLmVuY3BhcmVudDsKICNlbmRpZgogfQogCkBAIC0xNzAsNyAr Mjk5LDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBNUFZNYWluRW5jQ29udGV4dCAqc2xpY2VfdG9f bWFpbmVuYyhjb25zdCBNcGVnRW5jQ29udGV4dCAqcykKIHsgImNocm9tYSIsIE5VTEwsIDAsIEFW X09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IEZGX0NNUF9DSFJPTUEgfSwgSU5UX01JTiwgSU5UX01B WCwgRkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAiY21wX2Z1bmMiIH0sIFwKIHsgIm1zYWQiLCAg ICJTdW0gb2YgYWJzb2x1dGUgZGlmZmVyZW5jZXMsIG1lZGlhbiBwcmVkaWN0ZWQiLCAwLCBBVl9P UFRfVFlQRV9DT05TVCwgey5pNjQgPSBGRl9DTVBfTUVESUFOX1NBRCB9LCBJTlRfTUlOLCBJTlRf TUFYLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJjbXBfZnVuYyIgfQogCi0jZGVmaW5lIEZG X01QVl9PRkZTRVQoeCkgb2Zmc2V0b2YoTXBlZ0VuY0NvbnRleHQsIHgpCisjZGVmaW5lIEZGX01Q Vl9PRkZTRVQoeCkgb2Zmc2V0b2YoTVBWRW5jQ29udGV4dCwgeCkKICNkZWZpbmUgRkZfTVBWX01B SU5fT0ZGU0VUKHgpIG9mZnNldG9mKE1QVk1haW5FbmNDb250ZXh0LCB4KQogI2RlZmluZSBGRl9S Q19PRkZTRVQoeCkgIG9mZnNldG9mKE1QVk1haW5FbmNDb250ZXh0LCByY19jb250ZXh0LngpCiAj ZGVmaW5lIEZGX01QVl9PUFRfRkxBR1MgKEFWX09QVF9GTEFHX1ZJREVPX1BBUkFNIHwgQVZfT1BU X0ZMQUdfRU5DT0RJTkdfUEFSQU0pCkBAIC0yMTcsNyArMzQ2LDcgQEAgRkZfTVBWX09QVF9DTVBf RlVOQywgXAogCiAjZGVmaW5lIEZGX01QVl9DT01NT05fTU9USU9OX0VTVF9PUFRTIFwKIHsgIm12 MCIsICAgICAgICAgICAgImFsd2F5cyB0cnkgYSBtYiB3aXRoIG12PTwwLDA+IiwgICAgICAgICAg ICAgICAgICAgICAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAuaTY0ID0gRkZfTVBWX0ZMQUdfTVYw IH0sICAgIDAsIDAsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1wdl9mbGFncyIgfSxcCi17 Im1vdGlvbl9lc3QiLCAibW90aW9uIGVzdGltYXRpb24gYWxnb3JpdGhtIiwgICAgICAgICAgICAg ICAgICAgICAgIEZGX01QVl9PRkZTRVQobWUubW90aW9uX2VzdCksIEFWX09QVF9UWVBFX0lOVCwg ey5pNjQgPSBGRl9NRV9FUFpTIH0sIEZGX01FX1pFUk8sIEZGX01FX1hPTkUsIEZGX01QVl9PUFRf RkxBR1MsIC51bml0ID0gIm1vdGlvbl9lc3QiIH0sICAgXAoreyJtb3Rpb25fZXN0IiwgIm1vdGlv biBlc3RpbWF0aW9uIGFsZ29yaXRobSIsICAgICAgICAgICAgICAgICAgICAgICBGRl9NUFZfT0ZG U0VUKGMubWUubW90aW9uX2VzdCksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSBGRl9NRV9FUFpT IH0sIEZGX01FX1pFUk8sIEZGX01FX1hPTkUsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1v dGlvbl9lc3QiIH0sICAgXAogeyAiemVybyIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7 IC5pNjQgPSBGRl9NRV9aRVJPIH0sIDAsIDAsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1v dGlvbl9lc3QiIH0sIFwKIHsgImVwenMiLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAu aTY0ID0gRkZfTUVfRVBaUyB9LCAwLCAwLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJtb3Rp b25fZXN0IiB9LCBcCiB7ICJ4b25lIiwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2 NCA9IEZGX01FX1hPTkUgfSwgMCwgMCwgRkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAibW90aW9u X2VzdCIgfSwgXApAQCAtMjMzLDIxICszNjIsMjEgQEAgaW50IGZmX21wdl9lbmNvZGVfaW5pdChB VkNvZGVjQ29udGV4dCAqYXZjdHgpOwogaW50IGZmX21wdl9lbmNvZGVfZW5kKEFWQ29kZWNDb250 ZXh0ICphdmN0eCk7CiBpbnQgZmZfbXB2X2VuY29kZV9waWN0dXJlKEFWQ29kZWNDb250ZXh0ICph dmN0eCwgQVZQYWNrZXQgKnBrdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVZG cmFtZSAqZnJhbWUsIGludCAqZ290X3BhY2tldCk7Ci1pbnQgZmZfbXB2X3JlYWxsb2NhdGVfcHV0 Yml0YnVmZmVyKE1wZWdFbmNDb250ZXh0ICpzLCBzaXplX3QgdGhyZXNob2xkLCBzaXplX3Qgc2l6 ZV9pbmNyZWFzZSk7CitpbnQgZmZfbXB2X3JlYWxsb2NhdGVfcHV0Yml0YnVmZmVyKE1QVkVuY0Nv bnRleHQgKnMsIHNpemVfdCB0aHJlc2hvbGQsIHNpemVfdCBzaXplX2luY3JlYXNlKTsKIAogdm9p ZCBmZl93cml0ZV9xdWFudF9tYXRyaXgoUHV0Qml0Q29udGV4dCAqcGIsIHVpbnQxNl90ICptYXRy aXgpOwogCi12b2lkIGZmX2RjdF9lbmNvZGVfaW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lk IGZmX21wdmVuY19kY3RfaW5pdF9taXBzKE1wZWdFbmNDb250ZXh0ICpzKTsKLXZvaWQgZmZfZGN0 X2VuY29kZV9pbml0X3g4NihNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX2RjdF9lbmNvZGVf aW5pdChNUFZFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfbXB2ZW5jX2RjdF9pbml0X21pcHMoTVBW RW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX2RjdF9lbmNvZGVfaW5pdF94ODYoTVBWRW5jQ29udGV4 dCAqcyk7CiAKLXZvaWQgZmZfY29udmVydF9tYXRyaXgoTXBlZ0VuY0NvbnRleHQgKnMsIGludCAo KnFtYXQpWzY0XSwgdWludDE2X3QgKCpxbWF0MTYpWzJdWzY0XSwKK3ZvaWQgZmZfY29udmVydF9t YXRyaXgoTVBWRW5jQ29udGV4dCAqcywgaW50ICgqcW1hdClbNjRdLCB1aW50MTZfdCAoKnFtYXQx NilbMl1bNjRdLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqcXVhbnRf bWF0cml4LCBpbnQgYmlhcywgaW50IHFtaW4sIGludCBxbWF4LCBpbnQgaW50cmEpOwogCiB2b2lk IGZmX2Jsb2NrX3Blcm11dGUoaW50MTZfdCAqYmxvY2ssIGNvbnN0IHVpbnQ4X3QgKnBlcm11dGF0 aW9uLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNjYW50YWJsZSwgaW50 IGxhc3QpOwogCi1zdGF0aWMgaW5saW5lIGludCBnZXRfYml0c19kaWZmKE1wZWdFbmNDb250ZXh0 ICpzKQorc3RhdGljIGlubGluZSBpbnQgZ2V0X2JpdHNfZGlmZihNUFZFbmNDb250ZXh0ICpzKQog ewogICAgIGNvbnN0IGludCBiaXRzID0gcHV0X2JpdHNfY291bnQoJnMtPnBiKTsKICAgICBjb25z dCBpbnQgbGFzdCA9IHMtPmxhc3RfYml0czsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXNtcGVn NGVuYy5jIGIvbGliYXZjb2RlYy9tc21wZWc0ZW5jLmMKaW5kZXggYmJhMDQ5M2YwMS4uOTllNDE1 MzAzYSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tc21wZWc0ZW5jLmMKKysrIGIvbGliYXZjb2Rl Yy9tc21wZWc0ZW5jLmMKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgYXZfY29sZCB2b2lkIG1z bXBlZzRfZW5jb2RlX2luaXRfc3RhdGljKHZvaWQpCiAKIHN0YXRpYyB2b2lkIGZpbmRfYmVzdF90 YWJsZXMoTVNNUEVHNEVuY0NvbnRleHQgKm1zKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25z dCBzID0gJm1zLT5tLnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtcy0+bS5zOwog ICAgIGludCBpOwogICAgIGludCBiZXN0ICAgICAgICA9IDAsIGJlc3Rfc2l6ZSAgICAgICAgPSBJ TlRfTUFYOwogICAgIGludCBjaHJvbWFfYmVzdCA9IDAsIGJlc3RfY2hyb21hX3NpemUgPSBJTlRf TUFYOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyB2b2lkIGZpbmRfYmVzdF90YWJsZXMoTVNN UEVHNEVuY0NvbnRleHQgKm1zKQogICAgICAgICAgICAgICAgICAgICBpbnQgaW50cmFfbHVtYV9j b3VudCAgPSBtcy0+YWNfc3RhdHNbMV1bMF1bbGV2ZWxdW3J1bl1bbGFzdF07CiAgICAgICAgICAg ICAgICAgICAgIGludCBpbnRyYV9jaHJvbWFfY291bnQ9IG1zLT5hY19zdGF0c1sxXVsxXVtsZXZl bF1bcnVuXVtsYXN0XTsKIAotICAgICAgICAgICAgICAgICAgICBpZihzLT5waWN0X3R5cGU9PUFW X1BJQ1RVUkVfVFlQRV9JKXsKKyAgICAgICAgICAgICAgICAgICAgaWYocy0+Yy5waWN0X3R5cGU9 PUFWX1BJQ1RVUkVfVFlQRV9JKXsKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgICAgICAg Kz0gaW50cmFfbHVtYV9jb3VudCAgKnJsX2xlbmd0aFtpICBdW2xldmVsXVtydW5dW2xhc3RdOwog ICAgICAgICAgICAgICAgICAgICAgICAgY2hyb21hX3NpemUrPSBpbnRyYV9jaHJvbWFfY291bnQq cmxfbGVuZ3RoW2krM11bbGV2ZWxdW3J1bl1bbGFzdF07CiAgICAgICAgICAgICAgICAgICAgIH1l bHNlewpAQCAtMTk2LDE2ICsxOTYsMTYgQEAgc3RhdGljIHZvaWQgZmluZF9iZXN0X3RhYmxlcyhN U01QRUc0RW5jQ29udGV4dCAqbXMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZihzLT5waWN0 X3R5cGU9PUFWX1BJQ1RVUkVfVFlQRV9QKSBjaHJvbWFfYmVzdD0gYmVzdDsKKyAgICBpZihzLT5j LnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX1ApIGNocm9tYV9iZXN0PSBiZXN0OwogCiAgICAg bWVtc2V0KG1zLT5hY19zdGF0cywgMCwgc2l6ZW9mKG1zLT5hY19zdGF0cykpOwogCiAgICAgbXMt PnJsX3RhYmxlX2luZGV4ICAgICAgICA9ICAgICAgICBiZXN0OwogICAgIG1zLT5ybF9jaHJvbWFf dGFibGVfaW5kZXggPSBjaHJvbWFfYmVzdDsKIAotICAgIGlmIChzLT5waWN0X3R5cGUgIT0gbXMt Pm0ubGFzdF9ub25fYl9waWN0X3R5cGUpIHsKKyAgICBpZiAocy0+Yy5waWN0X3R5cGUgIT0gbXMt Pm0ubGFzdF9ub25fYl9waWN0X3R5cGUpIHsKICAgICAgICAgbXMtPnJsX3RhYmxlX2luZGV4PSAy OwotICAgICAgICBpZihzLT5waWN0X3R5cGU9PUFWX1BJQ1RVUkVfVFlQRV9JKQorICAgICAgICBp ZihzLT5jLnBpY3RfdHlwZT09QVZfUElDVFVSRV9UWVBFX0kpCiAgICAgICAgICAgICBtcy0+cmxf Y2hyb21hX3RhYmxlX2luZGV4ID0gMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbXMtPnJs X2Nocm9tYV90YWJsZV9pbmRleCA9IDI7CkBAIC0yMTcsMTUgKzIxNywxNSBAQCBzdGF0aWMgdm9p ZCBmaW5kX2Jlc3RfdGFibGVzKE1TTVBFRzRFbmNDb250ZXh0ICptcykKIHN0YXRpYyBpbnQgbXNt cGVnNF9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiB7 CiAgICAgTVNNUEVHNEVuY0NvbnRleHQgKmNvbnN0IG1zID0gKE1TTVBFRzRFbmNDb250ZXh0Kilt OwotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4 dCAqY29uc3QgcyA9ICZtLT5zOwogCiAgICAgZmluZF9iZXN0X3RhYmxlcyhtcyk7CiAKICAgICBh bGlnbl9wdXRfYml0cygmcy0+cGIpOwotICAgIHB1dF9iaXRzKCZzLT5wYiwgMiwgcy0+cGljdF90 eXBlIC0gMSk7CisgICAgcHV0X2JpdHMoJnMtPnBiLCAyLCBzLT5jLnBpY3RfdHlwZSAtIDEpOwog Ci0gICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBzLT5xc2NhbGUpOwotICAgIGlmIChzLT5tc21wZWc0 X3ZlcnNpb24gPD0gTVNNUDRfVjIpIHsKKyAgICBwdXRfYml0cygmcy0+cGIsIDUsIHMtPmMucXNj YWxlKTsKKyAgICBpZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPD0gTVNNUDRfVjIpIHsKICAgICAg ICAgbXMtPnJsX3RhYmxlX2luZGV4ID0gMjsKICAgICAgICAgbXMtPnJsX2Nocm9tYV90YWJsZV9p bmRleCA9IDI7CiAgICAgfQpAQCAtMjM0LDI0ICsyMzQsMjQgQEAgc3RhdGljIGludCBtc21wZWc0 X2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKICAgICBt cy0+bXZfdGFibGVfaW5kZXggICA9IDE7IC8qIG9ubHkgaWYgUC1mcmFtZSAqLwogICAgIG1zLT51 c2Vfc2tpcF9tYl9jb2RlID0gMTsgLyogb25seSBpZiBQLWZyYW1lICovCiAgICAgbXMtPnBlcl9t Yl9ybF90YWJsZSAgPSAwOwotICAgIGlmIChzLT5tc21wZWc0X3ZlcnNpb24gPT0gTVNNUDRfV01W MSkKLSAgICAgICAgcy0+aW50ZXJfaW50cmFfcHJlZCA9IHMtPndpZHRoICogcy0+aGVpZ2h0IDwg MzIwKjI0MCAmJgorICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiA9PSBNU01QNF9XTVYxKQor ICAgICAgICBzLT5jLmludGVyX2ludHJhX3ByZWQgPSBzLT5jLndpZHRoICogcy0+Yy5oZWlnaHQg PCAzMjAqMjQwICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLT5iaXRfcmF0ZSAg PD0gSUlfQklUUkFURSAgICAgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBp Y3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUDsKLSAgICBmZl9kbG9nKHMtPmF2Y3R4LCAiJWQg JSJQUklkNjQiICVkICVkICVkXG4iLCBzLT5waWN0X3R5cGUsIG0tPmJpdF9yYXRlLAotICAgICAg ICAgICAgcy0+aW50ZXJfaW50cmFfcHJlZCwgcy0+d2lkdGgsIHMtPmhlaWdodCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVf UDsKKyAgICBmZl9kbG9nKHMtPmMuYXZjdHgsICIlZCAlIlBSSWQ2NCIgJWQgJWQgJWRcbiIsIHMt PmMucGljdF90eXBlLCBtLT5iaXRfcmF0ZSwKKyAgICAgICAgICAgIHMtPmMuaW50ZXJfaW50cmFf cHJlZCwgcy0+Yy53aWR0aCwgcy0+Yy5oZWlnaHQpOwogCi0gICAgaWYgKHMtPnBpY3RfdHlwZSA9 PSBBVl9QSUNUVVJFX1RZUEVfSSkgewotICAgICAgICBzLT5zbGljZV9oZWlnaHQ9IHMtPm1iX2hl aWdodC8xOwotICAgICAgICBwdXRfYml0cygmcy0+cGIsIDUsIDB4MTYgKyBzLT5tYl9oZWlnaHQv cy0+c2xpY2VfaGVpZ2h0KTsKKyAgICBpZiAocy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U WVBFX0kpIHsKKyAgICAgICAgcy0+Yy5zbGljZV9oZWlnaHQgPSBzLT5jLm1iX2hlaWdodC8xOwor ICAgICAgICBwdXRfYml0cygmcy0+cGIsIDUsIDB4MTYgKyBzLT5jLm1iX2hlaWdodC9zLT5jLnNs aWNlX2hlaWdodCk7CiAKLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiA9PSBNU01QNF9X TVYxKSB7CisgICAgICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiA9PSBNU01QNF9XTVYxKSB7 CiAgICAgICAgICAgICBmZl9tc21wZWc0X2VuY29kZV9leHRfaGVhZGVyKHMpOwogICAgICAgICAg ICAgaWYgKG0tPmJpdF9yYXRlID4gTUJBQ19CSVRSQVRFKQogICAgICAgICAgICAgICAgIHB1dF9i aXRzKCZzLT5wYiwgMSwgbXMtPnBlcl9tYl9ybF90YWJsZSk7CiAgICAgICAgIH0KIAotICAgICAg ICBpZiAocy0+bXNtcGVnNF92ZXJzaW9uID4gTVNNUDRfVjIpIHsKKyAgICAgICAgaWYgKHMtPmMu bXNtcGVnNF92ZXJzaW9uID4gTVNNUDRfVjIpIHsKICAgICAgICAgICAgIGlmICghbXMtPnBlcl9t Yl9ybF90YWJsZSl7CiAgICAgICAgICAgICAgICAgZmZfbXNtcGVnNF9jb2RlMDEyKCZzLT5wYiwg bXMtPnJsX2Nocm9tYV90YWJsZV9pbmRleCk7CiAgICAgICAgICAgICAgICAgZmZfbXNtcGVnNF9j b2RlMDEyKCZzLT5wYiwgbXMtPnJsX3RhYmxlX2luZGV4KTsKQEAgLTI2MiwxMCArMjYyLDEwIEBA IHN0YXRpYyBpbnQgbXNtcGVnNF9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRl eHQgKmNvbnN0IG0pCiAgICAgfSBlbHNlIHsKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCBt cy0+dXNlX3NraXBfbWJfY29kZSk7CiAKLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiA9 PSBNU01QNF9XTVYxICYmIG0tPmJpdF9yYXRlID4gTUJBQ19CSVRSQVRFKQorICAgICAgICBpZiAo cy0+Yy5tc21wZWc0X3ZlcnNpb24gPT0gTVNNUDRfV01WMSAmJiBtLT5iaXRfcmF0ZSA+IE1CQUNf QklUUkFURSkKICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgbXMtPnBlcl9tYl9ybF90 YWJsZSk7CiAKLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiA+IE1TTVA0X1YyKSB7Cisg ICAgICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiA+IE1TTVA0X1YyKSB7CiAgICAgICAgICAg ICBpZiAoIW1zLT5wZXJfbWJfcmxfdGFibGUpCiAgICAgICAgICAgICAgICAgZmZfbXNtcGVnNF9j b2RlMDEyKCZzLT5wYiwgbXMtPnJsX3RhYmxlX2luZGV4KTsKIApAQCAtMjgxLDE4ICsyODEsMTgg QEAgc3RhdGljIGludCBtc21wZWc0X2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29u dGV4dCAqY29uc3QgbSkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBmZl9tc21wZWc0X2VuY29k ZV9leHRfaGVhZGVyKE1wZWdFbmNDb250ZXh0ICogcykKK3ZvaWQgZmZfbXNtcGVnNF9lbmNvZGVf ZXh0X2hlYWRlcihNUFZFbmNDb250ZXh0ICpjb25zdCBzKQogewogICAgIGNvbnN0IE1QVk1haW5F bmNDb250ZXh0ICpjb25zdCBtID0gc2xpY2VfdG9fbWFpbmVuYyhzKTsKICAgICB1bnNpZ25lZCBm cHM7CiAKLSAgICBpZiAocy0+YXZjdHgtPmZyYW1lcmF0ZS5udW0gPiAwICYmIHMtPmF2Y3R4LT5m cmFtZXJhdGUuZGVuID4gMCkKLSAgICAgICAgZnBzID0gcy0+YXZjdHgtPmZyYW1lcmF0ZS5udW0g LyBzLT5hdmN0eC0+ZnJhbWVyYXRlLmRlbjsKKyAgICBpZiAocy0+Yy5hdmN0eC0+ZnJhbWVyYXRl Lm51bSA+IDAgJiYgcy0+Yy5hdmN0eC0+ZnJhbWVyYXRlLmRlbiA+IDApCisgICAgICAgIGZwcyA9 IHMtPmMuYXZjdHgtPmZyYW1lcmF0ZS5udW0gLyBzLT5jLmF2Y3R4LT5mcmFtZXJhdGUuZGVuOwog ICAgIGVsc2UgewogRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwotICAgICAgICBmcHMg PSBzLT5hdmN0eC0+dGltZV9iYXNlLmRlbiAvIHMtPmF2Y3R4LT50aW1lX2Jhc2UubnVtCisgICAg ICAgIGZwcyA9IHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4gLyBzLT5jLmF2Y3R4LT50aW1lX2Jh c2UubnVtCiAjaWYgRkZfQVBJX1RJQ0tTX1BFUl9GUkFNRQotICAgICAgICAgICAgLyBGRk1BWChz LT5hdmN0eC0+dGlja3NfcGVyX2ZyYW1lLCAxKQorICAgICAgICAgICAgLyBGRk1BWChzLT5jLmF2 Y3R4LT50aWNrc19wZXJfZnJhbWUsIDEpCiAjZW5kaWYKICAgICAgICAgICAgIDsKIEZGX0VOQUJM RV9ERVBSRUNBVElPTl9XQVJOSU5HUwpAQCAtMzAyLDE2ICszMDIsMTYgQEAgRkZfRU5BQkxFX0RF UFJFQ0FUSU9OX1dBUk5JTkdTCiAKICAgICBwdXRfYml0cygmcy0+cGIsIDExLCBGRk1JTihtLT5i aXRfcmF0ZSAvIDEwMjQsIDIwNDcpKTsKIAotICAgIGlmIChzLT5tc21wZWc0X3ZlcnNpb24gPj0g TVNNUDRfVjMpCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ZmxpcGZsb3Bfcm91bmRp bmcpOworICAgIGlmIChzLT5jLm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9WMykKKyAgICAgICAg cHV0X2JpdHMoJnMtPnBiLCAxLCBzLT5jLmZsaXBmbG9wX3JvdW5kaW5nKTsKICAgICBlbHNlCi0g ICAgICAgIGF2X2Fzc2VydDAoIXMtPmZsaXBmbG9wX3JvdW5kaW5nKTsKKyAgICAgICAgYXZfYXNz ZXJ0MCghcy0+Yy5mbGlwZmxvcF9yb3VuZGluZyk7CiB9CiAKIHZvaWQgZmZfbXNtcGVnNF9lbmNv ZGVfbW90aW9uKE1TTVBFRzRFbmNDb250ZXh0ICpjb25zdCBtcywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgbXgsIGludCBteSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAq Y29uc3QgcyA9ICZtcy0+bS5zOworICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbXMtPm0u czsKICAgICBjb25zdCB1aW50MzJfdCAqY29uc3QgbXZfdmVjdG9yX3RhYmxlID0gbXZfdmVjdG9y X3RhYmxlc1ttcy0+bXZfdGFibGVfaW5kZXhdOwogICAgIHVpbnQzMl90IGNvZGU7CiAKQEAgLTMz NCwyMCArMzM0LDIxIEBAIHZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfbW90aW9uKE1TTVBFRzRFbmND b250ZXh0ICpjb25zdCBtcywKICAgICBwdXRfYml0cygmcy0+cGIsIGNvZGUgJiAweGZmLCBjb2Rl ID4+IDgpOwogfQogCi12b2lkIGZmX21zbXBlZzRfaGFuZGxlX3NsaWNlcyhNcGVnRW5jQ29udGV4 dCAqcyl7Ci0gICAgaWYgKHMtPm1iX3ggPT0gMCkgewotICAgICAgICBpZiAocy0+c2xpY2VfaGVp Z2h0ICYmIChzLT5tYl95ICUgcy0+c2xpY2VfaGVpZ2h0KSA9PSAwKSB7Ci0gICAgICAgICAgICBp ZiAocy0+bXNtcGVnNF92ZXJzaW9uIDwgTVNNUDRfV01WMSkgewotICAgICAgICAgICAgICAgIGZm X21wZWc0X2NsZWFuX2J1ZmZlcnMocyk7Cit2b2lkIGZmX21zbXBlZzRfaGFuZGxlX3NsaWNlcyhN UFZFbmNDb250ZXh0ICpjb25zdCBzKQoreworICAgIGlmIChzLT5jLm1iX3ggPT0gMCkgeworICAg ICAgICBpZiAocy0+Yy5zbGljZV9oZWlnaHQgJiYgKHMtPmMubWJfeSAlIHMtPmMuc2xpY2VfaGVp Z2h0KSA9PSAwKSB7CisgICAgICAgICAgICBpZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPCBNU01Q NF9XTVYxKSB7CisgICAgICAgICAgICAgICAgZmZfbXBlZzRfY2xlYW5fYnVmZmVycygmcy0+Yyk7 CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzLT5maXJzdF9zbGljZV9saW5lID0gMTsKKyAg ICAgICAgICAgIHMtPmMuZmlyc3Rfc2xpY2VfbGluZSA9IDE7CiAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICBzLT5maXJzdF9zbGljZV9saW5lID0gMDsKKyAgICAgICAgICAgIHMtPmMuZmly c3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIG1z bXBlZzR2Ml9lbmNvZGVfbW90aW9uKE1wZWdFbmNDb250ZXh0ICogcywgaW50IHZhbCkKK3N0YXRp YyB2b2lkIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGlu dCB2YWwpCiB7CiAgICAgaW50IHJhbmdlLCBiaXRfc2l6ZSwgc2lnbiwgY29kZSwgYml0czsKIApA QCAtMzU1LDcgKzM1Niw3IEBAIHN0YXRpYyB2b2lkIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKE1w ZWdFbmNDb250ZXh0ICogcywgaW50IHZhbCkKICAgICAgICAgLyogemVybyB2ZWN0b3I7IGNvcnJl c3BvbmRzIHRvIGZmX212dGFiWzBdICovCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMHgx KTsKICAgICB9IGVsc2UgewotICAgICAgICBiaXRfc2l6ZSA9IHMtPmZfY29kZSAtIDE7CisgICAg ICAgIGJpdF9zaXplID0gcy0+Yy5mX2NvZGUgLSAxOwogICAgICAgICByYW5nZSA9IDEgPDwgYml0 X3NpemU7CiAgICAgICAgIGlmICh2YWwgPD0gLTY0KQogICAgICAgICAgICAgdmFsICs9IDY0OwpA QCAtMzc5LDcgKzM4MCw3IEBAIHN0YXRpYyB2b2lkIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKE1w ZWdFbmNDb250ZXh0ICogcywgaW50IHZhbCkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIG1zbXBl ZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAorc3RhdGljIHZvaWQgbXNtcGVn NF9lbmNvZGVfbWIoTVBWRW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbW90aW9uX3gsIGludCBtb3Rpb25feSkKIHsKQEAgLTM4OSwxMSArMzkwLDExIEBA IHN0YXRpYyB2b2lkIG1zbXBlZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAog CiAgICAgZmZfbXNtcGVnNF9oYW5kbGVfc2xpY2VzKHMpOwogCi0gICAgaWYgKCFzLT5tYl9pbnRy YSkgeworICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgewogICAgICAgICAvKiBjb21wdXRlIGNicCAq LwogICAgICAgICBjYnAgPSAwOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7Ci0g ICAgICAgICAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKQorICAgICAgICAgICAg aWYgKHMtPmMuYmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKQogICAgICAgICAgICAgICAgIGNicCB8 PSAxIDw8ICg1IC0gaSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1zLT51c2Vfc2tpcF9tYl9j b2RlICYmIChjYnAgfCBtb3Rpb25feCB8IG1vdGlvbl95KSA9PSAwKSB7CkBAIC00MDcsNyArNDA4 LDcgQEAgc3RhdGljIHZvaWQgbXNtcGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0 IHMsCiAgICAgICAgIGlmIChtcy0+dXNlX3NraXBfbWJfY29kZSkKICAgICAgICAgICAgIHB1dF9i aXRzKCZzLT5wYiwgMSwgMCk7ICAgICAvKiBtYiBjb2RlZCAqLwogCi0gICAgICAgIGlmIChzLT5t c21wZWc0X3ZlcnNpb24gPD0gTVNNUDRfVjIpIHsKKyAgICAgICAgaWYgKHMtPmMubXNtcGVnNF92 ZXJzaW9uIDw9IE1TTVA0X1YyKSB7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsCiAgICAg ICAgICAgICAgICAgICAgICBmZl92Ml9tYl90eXBlW2NicCYzXVsxXSwKICAgICAgICAgICAgICAg ICAgICAgIGZmX3YyX21iX3R5cGVbY2JwJjNdWzBdKTsKQEAgLTQyMCw3ICs0MjEsNyBAQCBzdGF0 aWMgdm9pZCBtc21wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywKIAogICAg ICAgICAgICAgcy0+bWlzY19iaXRzICs9IGdldF9iaXRzX2RpZmYocyk7CiAKLSAgICAgICAgICAg IGZmX2gyNjNfcHJlZF9tb3Rpb24ocywgMCwgMCwgJnByZWRfeCwgJnByZWRfeSk7CisgICAgICAg ICAgICBmZl9oMjYzX3ByZWRfbW90aW9uKCZzLT5jLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsK ICAgICAgICAgICAgIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKHMsIG1vdGlvbl94IC0gcHJlZF94 KTsKICAgICAgICAgICAgIG1zbXBlZzR2Ml9lbmNvZGVfbW90aW9uKHMsIG1vdGlvbl95IC0gcHJl ZF95KTsKICAgICAgICAgfWVsc2V7CkBAIC00MzEsNyArNDMyLDcgQEAgc3RhdGljIHZvaWQgbXNt cGVnNF9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICBzLT5t aXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlmZihzKTsKIAogICAgICAgICAgICAgLyogbW90aW9uIHZl Y3RvciAqLwotICAgICAgICAgICAgZmZfaDI2M19wcmVkX21vdGlvbihzLCAwLCAwLCAmcHJlZF94 LCAmcHJlZF95KTsKKyAgICAgICAgICAgIGZmX2gyNjNfcHJlZF9tb3Rpb24oJnMtPmMsIDAsIDAs ICZwcmVkX3gsICZwcmVkX3kpOwogICAgICAgICAgICAgZmZfbXNtcGVnNF9lbmNvZGVfbW90aW9u KG1zLCBtb3Rpb25feCAtIHByZWRfeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtb3Rpb25feSAtIHByZWRfeSk7CiAgICAgICAgIH0KQEAgLTQ0NiwxMSArNDQ3LDExIEBA IHN0YXRpYyB2b2lkIG1zbXBlZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAog ICAgICAgICAvKiBjb21wdXRlIGNicCAqLwogICAgICAgICBjYnAgPSAwOwogICAgICAgICBmb3Ig KGludCBpID0gMDsgaSA8IDY7IGkrKykgewotICAgICAgICAgICAgaW50IHZhbCA9IChzLT5ibG9j a19sYXN0X2luZGV4W2ldID49IDEpOworICAgICAgICAgICAgaW50IHZhbCA9IChzLT5jLmJsb2Nr X2xhc3RfaW5kZXhbaV0gPj0gMSk7CiAgICAgICAgICAgICBjYnAgfD0gdmFsIDw8ICg1IC0gaSk7 CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHMtPm1zbXBlZzRfdmVyc2lvbiA8PSBNU01QNF9WMikg ewotICAgICAgICAgICAgaWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewor ICAgICAgICBpZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPD0gTVNNUDRfVjIpIHsKKyAgICAgICAg ICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewogICAgICAgICAg ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwKICAgICAgICAgICAgICAgICAgICAgICAgICBmZl92Ml9p bnRyYV9jYnBjW2NicCYzXVsxXSwgZmZfdjJfaW50cmFfY2JwY1tjYnAmM11bMF0pOwogICAgICAg ICAgICAgfSBlbHNlIHsKQEAgLTQ2NSwxNCArNDY2LDE0IEBAIHN0YXRpYyB2b2lkIG1zbXBlZzRf ZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAg ZmZfaDI2M19jYnB5X3RhYltjYnA+PjJdWzFdLAogICAgICAgICAgICAgICAgICAgICAgZmZfaDI2 M19jYnB5X3RhYltjYnA+PjJdWzBdKTsKICAgICAgICAgfWVsc2V7Ci0gICAgICAgICAgICBpZiAo cy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKSB7CisgICAgICAgICAgICBpZiAocy0+ Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpIHsKICAgICAgICAgICAgICAgICAvKiBj b21wdXRlIGNvZGVkX2NicDsgdGhlIDB4MyBjb3JyZXNwb25kcyB0byBjaHJvbWEgY2JwOwogICAg ICAgICAgICAgICAgICAqIGx1bWEgY29kZWRfY2JwIGFyZSBzZXQgaW4gdGhlIGxvb3AgYmVsb3cg Ki8KICAgICAgICAgICAgICAgICBjb2RlZF9jYnAgPSBjYnAgJiAweDM7CiAgICAgICAgICAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgdWlu dDhfdCAqY29kZWRfYmxvY2s7Ci0gICAgICAgICAgICAgICAgICAgIGludCBwcmVkID0gZmZfbXNt cGVnNF9jb2RlZF9ibG9ja19wcmVkKHMsIGksICZjb2RlZF9ibG9jayk7Ci0gICAgICAgICAgICAg ICAgICAgIGludCB2YWwgPSAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+PSAxKTsKKyAgICAgICAg ICAgICAgICAgICAgaW50IHByZWQgPSBmZl9tc21wZWc0X2NvZGVkX2Jsb2NrX3ByZWQoJnMtPmMs IGksICZjb2RlZF9ibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWwgPSAocy0+Yy5i bG9ja19sYXN0X2luZGV4W2ldID49IDEpOwogICAgICAgICAgICAgICAgICAgICAqY29kZWRfYmxv Y2sgPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgIHZhbCBePSBwcmVkOwogICAgICAgICAgICAg ICAgICAgICBjb2RlZF9jYnAgfD0gdmFsIDw8ICg1IC0gaSk7CkBAIC00ODgsOSArNDg5LDEwIEBA IHN0YXRpYyB2b2lkIG1zbXBlZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLAog ICAgICAgICAgICAgICAgICAgICAgICAgIGZmX3RhYmxlX21iX25vbl9pbnRyYVtjYnBdWzBdKTsK ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7ICAgICAg ICAgICAgIC8qIG5vIEFDIHByZWRpY3Rpb24geWV0ICovCi0gICAgICAgICAgICBpZihzLT5pbnRl cl9pbnRyYV9wcmVkKXsKLSAgICAgICAgICAgICAgICBzLT5oMjYzX2FpY19kaXI9MDsKLSAgICAg ICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmgyNjNf YWljX2Rpcl1bMV0sIGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmgyNjNfYWljX2Rpcl1bMF0pOwor ICAgICAgICAgICAgaWYgKHMtPmMuaW50ZXJfaW50cmFfcHJlZCkgeworICAgICAgICAgICAgICAg IHMtPmMuaDI2M19haWNfZGlyID0gMDsKKyAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIs IGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmMuaDI2M19haWNfZGlyXVsxXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmMuaDI2M19haWNf ZGlyXVswXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcy0+bWlzY19iaXRz ICs9IGdldF9iaXRzX2RpZmYocyk7CkBAIC01MDUsMjQgKzUwNywyNCBAQCBzdGF0aWMgdm9pZCBt c21wZWc0X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywKIAogc3RhdGljIHZvaWQg bXNtcGVnNF9lbmNvZGVfZGMoTVNNUEVHNEVuY0NvbnRleHQgKmNvbnN0IG1zLCBpbnQgbGV2ZWws IGludCBuLCBpbnQgKmRpcl9wdHIpCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAm bXMtPm0uczsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm1zLT5tLnM7CiAgICAgaW50 IHNpZ24sIGNvZGU7CiAgICAgaW50IHByZWQ7CiAKICAgICBpbnQxNl90ICpkY192YWw7Ci0gICAg cHJlZCA9IGZmX21zbXBlZzRfcHJlZF9kYyhzLCBuLCAmZGNfdmFsLCBkaXJfcHRyKTsKKyAgICBw cmVkID0gZmZfbXNtcGVnNF9wcmVkX2RjKCZzLT5jLCBuLCAmZGNfdmFsLCBkaXJfcHRyKTsKIAog ICAgIC8qIHVwZGF0ZSBwcmVkaWN0b3IgKi8KICAgICBpZiAobiA8IDQpIHsKLSAgICAgICAgKmRj X3ZhbCA9IGxldmVsICogcy0+eV9kY19zY2FsZTsKKyAgICAgICAgKmRjX3ZhbCA9IGxldmVsICog cy0+Yy55X2RjX3NjYWxlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgICpkY192YWwgPSBsZXZlbCAq IHMtPmNfZGNfc2NhbGU7CisgICAgICAgICpkY192YWwgPSBsZXZlbCAqIHMtPmMuY19kY19zY2Fs ZTsKICAgICB9CiAKICAgICAvKiBkbyB0aGUgcHJlZGljdGlvbiAqLwogICAgIGxldmVsIC09IHBy ZWQ7CiAKLSAgICBpZiAocy0+bXNtcGVnNF92ZXJzaW9uIDw9IE1TTVA0X1YyKSB7CisgICAgaWYg KHMtPmMubXNtcGVnNF92ZXJzaW9uIDw9IE1TTVA0X1YyKSB7CiAgICAgICAgIGlmIChuIDwgNCkg ewogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLAogICAgICAgICAgICAgICAgICAgICAgZmZf djJfZGNfbHVtX3RhYmxlW2xldmVsICsgMjU2XVsxXSwKQEAgLTU1Niw3ICs1NTgsNyBAQCBzdGF0 aWMgdm9pZCBtc21wZWc0X2VuY29kZV9kYyhNU01QRUc0RW5jQ29udGV4dCAqY29uc3QgbXMsIGlu dCBsZXZlbCwgaW50IG4sIGludAogCiAvKiBFbmNvZGluZyBvZiBhIGJsb2NrOyB2ZXJ5IHNpbWls YXIgdG8gTVBFRy00IGV4Y2VwdCBmb3IgYSBkaWZmZXJlbnQKICAqIGVzY2FwZSBjb2RpbmcgKHNh bWUgYXMgSC4yNjMpIGFuZCBtb3JlIFZMQyB0YWJsZXMuICovCi12b2lkIGZmX21zbXBlZzRfZW5j b2RlX2Jsb2NrKE1wZWdFbmNDb250ZXh0ICogcywgaW50MTZfdCAqIGJsb2NrLCBpbnQgbikKK3Zv aWQgZmZfbXNtcGVnNF9lbmNvZGVfYmxvY2soTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZf dCAqIGJsb2NrLCBpbnQgbikKIHsKICAgICBNU01QRUc0RW5jQ29udGV4dCAqY29uc3QgbXMgPSAo TVNNUEVHNEVuY0NvbnRleHQqKXM7CiAgICAgaW50IGxldmVsLCBydW4sIGxhc3QsIGksIGosIGxh c3RfaW5kZXg7CkBAIC01NjUsNyArNTY3LDcgQEAgdm9pZCBmZl9tc21wZWc0X2VuY29kZV9ibG9j ayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4pCiAgICAgY29uc3Qg UkxUYWJsZSAqcmw7CiAgICAgY29uc3QgdWludDhfdCAqc2NhbnRhYmxlOwogCi0gICAgaWYgKHMt Pm1iX2ludHJhKSB7CisgICAgaWYgKHMtPmMubWJfaW50cmEpIHsKICAgICAgICAgbXNtcGVnNF9l bmNvZGVfZGMobXMsIGJsb2NrWzBdLCBuLCAmZGNfcHJlZF9kaXIpOwogICAgICAgICBpID0gMTsK ICAgICAgICAgaWYgKG4gPCA0KSB7CkBAIC01NzMsMjMgKzU3NSwyMyBAQCB2b2lkIGZmX21zbXBl ZzRfZW5jb2RlX2Jsb2NrKE1wZWdFbmNDb250ZXh0ICogcywgaW50MTZfdCAqIGJsb2NrLCBpbnQg bikKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJsID0gJmZmX3JsX3RhYmxlWzMgKyBt cy0+cmxfY2hyb21hX3RhYmxlX2luZGV4XTsKICAgICAgICAgfQotICAgICAgICBydW5fZGlmZiA9 IHMtPm1zbXBlZzRfdmVyc2lvbiA+PSBNU01QNF9XTVYxOwotICAgICAgICBzY2FudGFibGU9IHMt PmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkOworICAgICAgICBydW5fZGlmZiA9IHMtPmMubXNt cGVnNF92ZXJzaW9uID49IE1TTVA0X1dNVjE7CisgICAgICAgIHNjYW50YWJsZT0gcy0+Yy5pbnRy YV9zY2FudGFibGUucGVybXV0YXRlZDsKICAgICB9IGVsc2UgewogICAgICAgICBpID0gMDsKICAg ICAgICAgcmwgPSAmZmZfcmxfdGFibGVbMyArIG1zLT5ybF90YWJsZV9pbmRleF07Ci0gICAgICAg IHJ1bl9kaWZmID0gcy0+bXNtcGVnNF92ZXJzaW9uID4gTVNNUDRfVjI7Ci0gICAgICAgIHNjYW50 YWJsZT0gcy0+aW50ZXJfc2NhbnRhYmxlLnBlcm11dGF0ZWQ7CisgICAgICAgIHJ1bl9kaWZmID0g cy0+Yy5tc21wZWc0X3ZlcnNpb24gPiBNU01QNF9WMjsKKyAgICAgICAgc2NhbnRhYmxlPSBzLT5j LmludGVyX3NjYW50YWJsZS5wZXJtdXRhdGVkOwogICAgIH0KIAogICAgIC8qIHJlY2FsY3VsYXRl IGJsb2NrX2xhc3RfaW5kZXggZm9yIE0kIHdtdjEgKi8KLSAgICBpZiAocy0+bXNtcGVnNF92ZXJz aW9uID49IE1TTVA0X1dNVjEgJiYgcy0+YmxvY2tfbGFzdF9pbmRleFtuXSA+IDApIHsKKyAgICBp ZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPj0gTVNNUDRfV01WMSAmJiBzLT5jLmJsb2NrX2xhc3Rf aW5kZXhbbl0gPiAwKSB7CiAgICAgICAgIGZvcihsYXN0X2luZGV4PTYzOyBsYXN0X2luZGV4Pj0w OyBsYXN0X2luZGV4LS0pewogICAgICAgICAgICAgaWYoYmxvY2tbc2NhbnRhYmxlW2xhc3RfaW5k ZXhdXSkgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcy0+YmxvY2tfbGFzdF9pbmRleFtuXT0g bGFzdF9pbmRleDsKKyAgICAgICAgcy0+Yy5ibG9ja19sYXN0X2luZGV4W25dPSBsYXN0X2luZGV4 OwogICAgIH1lbHNlCi0gICAgICAgIGxhc3RfaW5kZXggPSBzLT5ibG9ja19sYXN0X2luZGV4W25d OworICAgICAgICBsYXN0X2luZGV4ID0gcy0+Yy5ibG9ja19sYXN0X2luZGV4W25dOwogICAgIC8q IEFDIGNvZWZzICovCiAgICAgbGFzdF9ub25femVybyA9IGkgLSAxOwogICAgIGZvciAoOyBpIDw9 IGxhc3RfaW5kZXg7IGkrKykgewpAQCAtNjA2LDEwICs2MDgsMTAgQEAgdm9pZCBmZl9tc21wZWc0 X2VuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4p CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmKGxldmVsPD1NQVhfTEVWRUwgJiYgcnVu PD1NQVhfUlVOKXsKLSAgICAgICAgICAgICAgICBtcy0+YWNfc3RhdHNbcy0+bWJfaW50cmFdW24+ M11bbGV2ZWxdW3J1bl1bbGFzdF0rKzsKKyAgICAgICAgICAgICAgICBtcy0+YWNfc3RhdHNbcy0+ Yy5tYl9pbnRyYV1bbj4zXVtsZXZlbF1bcnVuXVtsYXN0XSsrOwogICAgICAgICAgICAgfQogCi0g ICAgICAgICAgICBtcy0+YWNfc3RhdHNbcy0+bWJfaW50cmFdW24gPiAzXVs0MF1bNjNdWzBdKys7 IC8vZXNjMyBsaWtlCisgICAgICAgICAgICBtcy0+YWNfc3RhdHNbcy0+Yy5tYl9pbnRyYV1bbiA+ IDNdWzQwXVs2M11bMF0rKzsgLy9lc2MzIGxpa2UKIAogICAgICAgICAgICAgY29kZSA9IGdldF9y bF9pbmRleChybCwgbGFzdCwgcnVuLCBsZXZlbCk7CiAgICAgICAgICAgICBwdXRfYml0cygmcy0+ cGIsIHJsLT50YWJsZV92bGNbY29kZV1bMV0sIHJsLT50YWJsZV92bGNbY29kZV1bMF0pOwpAQCAt NjI5LDcgKzYzMSw3IEBAIHZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfYmxvY2soTXBlZ0VuY0NvbnRl eHQgKiBzLCBpbnQxNl90ICogYmxvY2ssIGludCBuKQogICAgICAgICAgICAgICAgICAgICBpZiAo cnVuMSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVzYzM7CiAgICAgICAgICAg ICAgICAgICAgIGNvZGUgPSBnZXRfcmxfaW5kZXgocmwsIGxhc3QsIHJ1bjErMSwgbGV2ZWwpOwot ICAgICAgICAgICAgICAgICAgICBpZiAocy0+bXNtcGVnNF92ZXJzaW9uID09IE1TTVA0X1dNVjEg JiYgY29kZSA9PSBybC0+bikKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmMubXNtcGVnNF92 ZXJzaW9uID09IE1TTVA0X1dNVjEgJiYgY29kZSA9PSBybC0+bikKICAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gZXNjMzsKICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGdldF9ybF9pbmRl eChybCwgbGFzdCwgcnVuMSwgbGV2ZWwpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA9 PSBybC0+bikgewpAQCAtNjM3LDEyICs2MzksMTIgQEAgdm9pZCBmZl9tc21wZWc0X2VuY29kZV9i bG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50IG4pCiAgICAgICAg ICAgICAgICAgICAgICAgICAvKiB0aGlyZCBlc2NhcGUgKi8KICAgICAgICAgICAgICAgICAgICAg ICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXRf Yml0cygmcy0+cGIsIDEsIGxhc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMtPm1z bXBlZzRfdmVyc2lvbiA+PSBNU01QNF9XTVYxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp ZiAocy0+Yy5tc21wZWc0X3ZlcnNpb24gPj0gTVNNUDRfV01WMSkgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChzLT5lc2MzX2xldmVsX2xlbmd0aCA9PSAwKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPmVzYzNfbGV2ZWxfbGVuZ3RoID0gODsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbXMtPmVzYzNfcnVuX2xlbmd0aCAgPSA2OwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvL0VTQ0xWTFNaICsgRVNDUlVOU1oKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYocy0+cXNjYWxlPDgpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmKHMtPmMucXNjYWxlPDgpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIDYsIDMpOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dXRfYml0cygmcy0+cGIsIDgsIDMpOwpAQCAtNjc2LDE3ICs2NzgsMTcgQEAgdm9pZCBmZl9tc21w ZWc0X2VuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKiBibG9jaywgaW50 IG4pCiAKIGF2X2NvbGQgdm9pZCBmZl9tc21wZWc0X2VuY29kZV9pbml0KE1QVk1haW5FbmNDb250 ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7Cisg ICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAgIHN0YXRpYyBBVk9uY2UgaW5p dF9zdGF0aWNfb25jZSA9IEFWX09OQ0VfSU5JVDsKIAotICAgIGZmX21zbXBlZzRfY29tbW9uX2lu aXQocyk7CisgICAgZmZfbXNtcGVnNF9jb21tb25faW5pdCgmcy0+Yyk7CiAKLSAgICBpZiAocy0+ bXNtcGVnNF92ZXJzaW9uIDw9IE1TTVA0X1dNVjEpIHsKKyAgICBpZiAocy0+Yy5tc21wZWc0X3Zl cnNpb24gPD0gTVNNUDRfV01WMSkgewogICAgICAgICBtLT5lbmNvZGVfcGljdHVyZV9oZWFkZXIg PSBtc21wZWc0X2VuY29kZV9waWN0dXJlX2hlYWRlcjsKICAgICAgICAgcy0+ZW5jb2RlX21iICAg ICAgICAgICAgID0gbXNtcGVnNF9lbmNvZGVfbWI7CiAgICAgfQogCi0gICAgaWYgKHMtPm1zbXBl ZzRfdmVyc2lvbiA+PSBNU01QNF9XTVYxKSB7CisgICAgaWYgKHMtPmMubXNtcGVnNF92ZXJzaW9u ID49IE1TTVA0X1dNVjEpIHsKICAgICAgICAgcy0+bWluX3Fjb2VmZiA9IC0yNTU7CiAgICAgICAg IHMtPm1heF9xY29lZmYgPSAgMjU1OwogICAgIH0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXNt cGVnNGVuYy5oIGIvbGliYXZjb2RlYy9tc21wZWc0ZW5jLmgKaW5kZXggYmNlMTI2NWJiNS4uMTY3 NjAwZjAxZiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tc21wZWc0ZW5jLmgKKysrIGIvbGliYXZj b2RlYy9tc21wZWc0ZW5jLmgKQEAgLTQxLDE2ICs0MSwxNiBAQCB0eXBlZGVmIHN0cnVjdCBNU01Q RUc0RW5jQ29udGV4dCB7CiAgICAgdW5zaWduZWQgYWNfc3RhdHNbMl1bMl1bTUFYX0xFVkVMICsg MV1bTUFYX1JVTiArIDFdWzJdOwogfSBNU01QRUc0RW5jQ29udGV4dDsKIAotc3RhdGljIGlubGlu ZSBNU01QRUc0RW5jQ29udGV4dCAqbXB2X3RvX21zbXBlZzQoTXBlZ0VuY0NvbnRleHQgKnMpCitz dGF0aWMgaW5saW5lIE1TTVBFRzRFbmNDb250ZXh0ICptcHZfdG9fbXNtcGVnNChNUFZFbmNDb250 ZXh0ICpzKQogewogICAgIC8vIE9ubHkgbGVnYWwgYmVjYXVzZSBubyBNU01QRUctNCBkZWNvZGVy IHVzZXMgc2xpY2UtdGhyZWFkaW5nLgogICAgIHJldHVybiAoTVNNUEVHNEVuY0NvbnRleHQqKXM7 CiB9CiAKIHZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfaW5pdChNUFZNYWluRW5jQ29udGV4dCAqbSk7 Ci12b2lkIGZmX21zbXBlZzRfZW5jb2RlX2V4dF9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMpOwot dm9pZCBmZl9tc21wZWc0X2VuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3Qg KiBibG9jaywgaW50IG4pOwotdm9pZCBmZl9tc21wZWc0X2hhbmRsZV9zbGljZXMoTXBlZ0VuY0Nv bnRleHQgKnMpOwordm9pZCBmZl9tc21wZWc0X2VuY29kZV9leHRfaGVhZGVyKE1QVkVuY0NvbnRl eHQgKnMpOwordm9pZCBmZl9tc21wZWc0X2VuY29kZV9ibG9jayhNUFZFbmNDb250ZXh0ICogcywg aW50MTZfdCAqIGJsb2NrLCBpbnQgbik7Cit2b2lkIGZmX21zbXBlZzRfaGFuZGxlX3NsaWNlcyhN UFZFbmNDb250ZXh0ICpzKTsKIHZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfbW90aW9uKE1TTVBFRzRF bmNDb250ZXh0ICptcywgaW50IG14LCBpbnQgbXkpOwogCiB2b2lkIGZmX21zbXBlZzRfY29kZTAx MihQdXRCaXRDb250ZXh0ICpwYiwgaW50IG4pOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9wcGMv bWVfY21wLmMgYi9saWJhdmNvZGVjL3BwYy9tZV9jbXAuYwppbmRleCA5MGYyMTUyNWQ3Li43NjRl MzBkYTJhIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3BwYy9tZV9jbXAuYworKysgYi9saWJhdmNv ZGVjL3BwYy9tZV9jbXAuYwpAQCAtNTEsNyArNTEsNyBAQAogICAgIGl2ID0gdmVjX3ZzeF9sZCgx LCAgcGl4KTtcCiB9CiAjZW5kaWYKLXN0YXRpYyBpbnQgc2FkMTZfeDJfYWx0aXZlYyhNcGVnRW5j Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0 YXRpYyBpbnQgc2FkMTZfeDJfYWx0aXZlYyhNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90 ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGludCBpOwpAQCAtOTEsNyArOTEsNyBA QCBzdGF0aWMgaW50IHNhZDE2X3gyX2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVp bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4XwogICAgIHJldHVybiBzOwogfQogCi1zdGF0aWMgaW50 IHNhZDE2X3kyX2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEs IGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHNhZDE2X3kyX2FsdGl2ZWMoTVBWRW5j Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAg ICBpbnQgaTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgaW50IHNhZDE2X3kyX2FsdGl2ZWMo TXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4XwogICAg IHJldHVybiBzOwogfQogCi1zdGF0aWMgaW50IHNhZDE2X3h5Ml9hbHRpdmVjKE1wZWdFbmNDb250 ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGlj IGludCBzYWQxNl94eTJfYWx0aXZlYyhNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBpbnQgaTsKQEAgLTIzMCw3ICsyMzAsNyBA QCBzdGF0aWMgaW50IHNhZDE2X3h5Ml9hbHRpdmVjKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1 aW50OF90ICpwaXgxLCBjb25zdCB1aW50OAogICAgIHJldHVybiBzOwogfQogCi1zdGF0aWMgaW50 IHNhZDE2X2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNv bnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHNhZDE2X2FsdGl2ZWMoTVBWRW5jQ29udGV4 dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAg ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBpbnQgaTsK QEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgaW50IHNhZDE2X2FsdGl2ZWMoTXBlZ0VuY0NvbnRl eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKgogICAgIHJldHVybiBz OwogfQogCi1zdGF0aWMgaW50IHNhZDhfYWx0aXZlYyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK3N0YXRpYyBpbnQgc2FkOF9hbHRp dmVjKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkK IHsKICAgICBpbnQgaTsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgaW50IHNhZDhfYWx0aXZl YyhNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAq cAogCiAvKiBTdW0gb2YgU3F1YXJlZCBFcnJvcnMgZm9yIGFuIDh4OCBibG9jaywgQWx0aVZlYy1l bmhhbmNlZC4KICAqIEl0J3MgdGhlIHNhZDhfYWx0aXZlYyBjb2RlIGFib3ZlIHcvIHNxdWFyaW5n IGFkZGVkLiAqLwotc3RhdGljIGludCBzc2U4X2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNv bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitzdGF0aWMgaW50IHNzZThf YWx0aXZlYyhNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50 OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50 IGgpCiB7CiAgICAgaW50IGk7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIGludCBzc2U4X2Fs dGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4 X3QgKnAKIAogLyogU3VtIG9mIFNxdWFyZWQgRXJyb3JzIGZvciBhIDE2eDE2IGJsb2NrLCBBbHRp VmVjLWVuaGFuY2VkLgogICogSXQncyB0aGUgc2FkMTZfYWx0aXZlYyBjb2RlIGFib3ZlIHcvIHNx dWFyaW5nIGFkZGVkLiAqLwotc3RhdGljIGludCBzc2UxNl9hbHRpdmVjKE1wZWdFbmNDb250ZXh0 ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGlu dCBzc2UxNl9hbHRpdmVjKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNv bnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0 cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IGk7CkBAIC0zOTIsNyArMzkyLDcgQEAgc3RhdGljIGlu dCBzc2UxNl9hbHRpdmVjKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj b25zdCB1aW50OF90ICoKICAgICByZXR1cm4gczsKIH0KIAotc3RhdGljIGludCBoYWRhbWFyZDhf ZGlmZjh4OF9hbHRpdmVjKE1wZWdFbmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpkc3QsCitz dGF0aWMgaW50IGhhZGFtYXJkOF9kaWZmOHg4X2FsdGl2ZWMoTVBWRW5jQ29udGV4dCAqcywgY29u c3QgdWludDhfdCAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAgaW50IF9f YXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSkgc3VtOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHN0YXRp YyBpbnQgaGFkYW1hcmQ4X2RpZmY4eDhfYWx0aXZlYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3Qg dWludDhfdCAqZHN0LAogICogT24gdGhlIDk3MCwgdGhlIGhhbmQtbWFkZSBSQSBpcyBzdGlsbCBh IHdpbiAoYXJvdW5kIDY5MCB2cy4gYXJvdW5kIDc4MCksCiAgKiBidXQgeGxjIGdvZXMgdG8gYXJv dW5kIDY2MCBvbiB0aGUgcmVndWxhciBDIGNvZGUuLi4KICAqLwotc3RhdGljIGludCBoYWRhbWFy ZDhfZGlmZjE2eDhfYWx0aXZlYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAqZHN0 LAorc3RhdGljIGludCBoYWRhbWFyZDhfZGlmZjE2eDhfYWx0aXZlYyhNUFZFbmNDb250ZXh0ICpz LCBjb25zdCB1aW50OF90ICpkc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7CiAgICAg aW50IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSkgc3VtOwpAQCAtNzA5LDcgKzcwOSw3IEBA IHN0YXRpYyBpbnQgaGFkYW1hcmQ4X2RpZmYxNng4X2FsdGl2ZWMoTXBlZ0VuY0NvbnRleHQgKnMs IGNvbnN0IHVpbnQ4X3QgKmRzdCwKICAgICByZXR1cm4gc3VtOwogfQogCi1zdGF0aWMgaW50IGhh ZGFtYXJkOF9kaWZmMTZfYWx0aXZlYyhNcGVnRW5jQ29udGV4dCAqcywgY29uc3QgdWludDhfdCAq ZHN0LAorc3RhdGljIGludCBoYWRhbWFyZDhfZGlmZjE2X2FsdGl2ZWMoTVBWRW5jQ29udGV4dCAq cywgY29uc3QgdWludDhfdCAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBp bnQgc2NvcmUgPSBoYWRhbWFyZDhfZGlmZjE2eDhfYWx0aXZlYyhzLCBkc3QsIHNyYywgc3RyaWRl LCA4KTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcmF0ZWNvbnRyb2wuYyBiL2xpYmF2Y29kZWMv cmF0ZWNvbnRyb2wuYwppbmRleCBiMTMxZjYxYjcwLi5kNjBlMTQyNTJlIDEwMDY0NAotLS0gYS9s aWJhdmNvZGVjL3JhdGVjb250cm9sLmMKKysrIGIvbGliYXZjb2RlYy9yYXRlY29udHJvbC5jCkBA IC0zNywyMCArMzcsMjAgQEAKIAogdm9pZCBmZl93cml0ZV9wYXNzMV9zdGF0cyhNUFZNYWluRW5j Q29udGV4dCAqY29uc3QgbSkKIHsKLSAgICBjb25zdCBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9 ICZtLT5zOwotICAgIHNucHJpbnRmKHMtPmF2Y3R4LT5zdGF0c19vdXQsIDI1NiwKKyAgICBjb25z dCBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgc25wcmludGYocy0+Yy5hdmN0 eC0+c3RhdHNfb3V0LCAyNTYsCiAgICAgICAgICAgICAgImluOiVkIG91dDolZCB0eXBlOiVkIHE6 JWQgaXRleDolZCBwdGV4OiVkIG12OiVkIG1pc2M6JWQgIgogICAgICAgICAgICAgICJmY29kZTol ZCBiY29kZTolZCBtYy12YXI6JSJQUklkNjQiIHZhcjolIlBSSWQ2NCIgaWNvdW50OiVkIGhiaXRz OiVkO1xuIiwKLSAgICAgICAgICAgICBzLT5jdXJfcGljLnB0ci0+ZGlzcGxheV9waWN0dXJlX251 bWJlciwKLSAgICAgICAgICAgICBzLT5jdXJfcGljLnB0ci0+Y29kZWRfcGljdHVyZV9udW1iZXIs Ci0gICAgICAgICAgICAgcy0+cGljdF90eXBlLAotICAgICAgICAgICAgIHMtPmN1cl9waWMucHRy LT5mLT5xdWFsaXR5LAorICAgICAgICAgICAgIHMtPmMuY3VyX3BpYy5wdHItPmRpc3BsYXlfcGlj dHVyZV9udW1iZXIsCisgICAgICAgICAgICAgcy0+Yy5jdXJfcGljLnB0ci0+Y29kZWRfcGljdHVy ZV9udW1iZXIsCisgICAgICAgICAgICAgcy0+Yy5waWN0X3R5cGUsCisgICAgICAgICAgICAgcy0+ Yy5jdXJfcGljLnB0ci0+Zi0+cXVhbGl0eSwKICAgICAgICAgICAgICBzLT5pX3RleF9iaXRzLAog ICAgICAgICAgICAgIHMtPnBfdGV4X2JpdHMsCiAgICAgICAgICAgICAgcy0+bXZfYml0cywKICAg ICAgICAgICAgICBzLT5taXNjX2JpdHMsCi0gICAgICAgICAgICAgcy0+Zl9jb2RlLAotICAgICAg ICAgICAgIHMtPmJfY29kZSwKKyAgICAgICAgICAgICBzLT5jLmZfY29kZSwKKyAgICAgICAgICAg ICBzLT5jLmJfY29kZSwKICAgICAgICAgICAgICBtLT5tY19tYl92YXJfc3VtLAogICAgICAgICAg ICAgIG0tPm1iX3Zhcl9zdW0sCiAgICAgICAgICAgICAgcy0+aV9jb3VudCwKQEAgLTEwNCw5ICsx MDQsOSBAQCBzdGF0aWMgZG91YmxlIGJpdHMycXBfY2Iodm9pZCAqcmNlLCBkb3VibGUgcXApCiAK IHN0YXRpYyBkb3VibGUgZ2V0X2RpZmZfbGltaXRlZF9xKE1QVk1haW5FbmNDb250ZXh0ICptLCBj b25zdCBSYXRlQ29udHJvbEVudHJ5ICpyY2UsIGRvdWJsZSBxKQogewotICAgIE1wZWdFbmNDb250 ZXh0ICAgICAqY29uc3QgICBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAgICAgICpjb25z dCAgIHMgPSAmbS0+czsKICAgICBSYXRlQ29udHJvbENvbnRleHQgKmNvbnN0IHJjYyA9ICZtLT5y Y19jb250ZXh0OwotICAgIEFWQ29kZWNDb250ZXh0ICphICAgICAgICAgPSBzLT5hdmN0eDsKKyAg ICBBVkNvZGVjQ29udGV4dCAgICAgKmNvbnN0ICAgYSA9IHMtPmMuYXZjdHg7CiAgICAgY29uc3Qg aW50IHBpY3RfdHlwZSAgICAgICA9IHJjZS0+bmV3X3BpY3RfdHlwZTsKICAgICBjb25zdCBkb3Vi bGUgbGFzdF9wX3EgICAgID0gcmNjLT5sYXN0X3FzY2FsZV9mb3JbQVZfUElDVFVSRV9UWVBFX1Bd OwogICAgIGNvbnN0IGRvdWJsZSBsYXN0X25vbl9iX3EgPSByY2MtPmxhc3RfcXNjYWxlX2Zvclty Y2MtPmxhc3Rfbm9uX2JfcGljdF90eXBlXTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgZG91 YmxlIGdldF9kaWZmX2xpbWl0ZWRfcShNUFZNYWluRW5jQ29udGV4dCAqbSwgY29uc3QgUmF0ZUNv bnRyb2xFbnRyeSAqcgogICovCiBzdGF0aWMgdm9pZCBnZXRfcW1pbm1heChpbnQgKnFtaW5fcmV0 LCBpbnQgKnFtYXhfcmV0LCBNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgaW50IHBpY3RfdHlw ZSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1QVkVuY0Nv bnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICBpbnQgcW1pbiA9IG0tPmxtaW47CiAgICAgaW50 IHFtYXggPSBtLT5sbWF4OwogCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBzdGF0aWMgdm9pZCBnZXRf cW1pbm1heChpbnQgKnFtaW5fcmV0LCBpbnQgKnFtYXhfcmV0LCBNUFZNYWluRW5jQ29udGV4dCAq Y29uc3QgbQogCiAgICAgc3dpdGNoIChwaWN0X3R5cGUpIHsKICAgICBjYXNlIEFWX1BJQ1RVUkVf VFlQRV9COgotICAgICAgICBxbWluID0gKGludCkocW1pbiAqIEZGQUJTKHMtPmF2Y3R4LT5iX3F1 YW50X2ZhY3RvcikgKyBzLT5hdmN0eC0+Yl9xdWFudF9vZmZzZXQgKyAwLjUpOwotICAgICAgICBx bWF4ID0gKGludCkocW1heCAqIEZGQUJTKHMtPmF2Y3R4LT5iX3F1YW50X2ZhY3RvcikgKyBzLT5h dmN0eC0+Yl9xdWFudF9vZmZzZXQgKyAwLjUpOworICAgICAgICBxbWluID0gKGludCkocW1pbiAq IEZGQUJTKHMtPmMuYXZjdHgtPmJfcXVhbnRfZmFjdG9yKSArIHMtPmMuYXZjdHgtPmJfcXVhbnRf b2Zmc2V0ICsgMC41KTsKKyAgICAgICAgcW1heCA9IChpbnQpKHFtYXggKiBGRkFCUyhzLT5jLmF2 Y3R4LT5iX3F1YW50X2ZhY3RvcikgKyBzLT5jLmF2Y3R4LT5iX3F1YW50X29mZnNldCArIDAuNSk7 CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfUElDVFVSRV9UWVBFX0k6Ci0gICAgICAgIHFt aW4gPSAoaW50KShxbWluICogRkZBQlMocy0+YXZjdHgtPmlfcXVhbnRfZmFjdG9yKSArIHMtPmF2 Y3R4LT5pX3F1YW50X29mZnNldCArIDAuNSk7Ci0gICAgICAgIHFtYXggPSAoaW50KShxbWF4ICog RkZBQlMocy0+YXZjdHgtPmlfcXVhbnRfZmFjdG9yKSArIHMtPmF2Y3R4LT5pX3F1YW50X29mZnNl dCArIDAuNSk7CisgICAgICAgIHFtaW4gPSAoaW50KShxbWluICogRkZBQlMocy0+Yy5hdmN0eC0+ aV9xdWFudF9mYWN0b3IpICsgcy0+Yy5hdmN0eC0+aV9xdWFudF9vZmZzZXQgKyAwLjUpOworICAg ICAgICBxbWF4ID0gKGludCkocW1heCAqIEZGQUJTKHMtPmMuYXZjdHgtPmlfcXVhbnRfZmFjdG9y KSArIHMtPmMuYXZjdHgtPmlfcXVhbnRfb2Zmc2V0ICsgMC41KTsKICAgICAgICAgYnJlYWs7CiAg ICAgfQogCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBzdGF0aWMgdm9pZCBnZXRfcW1pbm1heChpbnQg KnFtaW5fcmV0LCBpbnQgKnFtYXhfcmV0LCBNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbQogc3Rh dGljIGRvdWJsZSBtb2RpZnlfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25z dCBSYXRlQ29udHJvbEVudHJ5ICpyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91 YmxlIHEsIGludCBmcmFtZV9udW0pCiB7Ci0gICAgTXBlZ0VuY0NvbnRleHQgICAgICpjb25zdCAg IHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICAgICAgKmNvbnN0ICAgcyA9ICZtLT5zOwog ICAgIFJhdGVDb250cm9sQ29udGV4dCAqY29uc3QgcmNjID0gJm0tPnJjX2NvbnRleHQ7Ci0gICAg Y29uc3QgZG91YmxlIGJ1ZmZlcl9zaXplID0gcy0+YXZjdHgtPnJjX2J1ZmZlcl9zaXplOwotICAg IGNvbnN0IGRvdWJsZSBmcHMgICAgICAgICA9IGdldF9mcHMocy0+YXZjdHgpOwotICAgIGNvbnN0 IGRvdWJsZSBtaW5fcmF0ZSAgICA9IHMtPmF2Y3R4LT5yY19taW5fcmF0ZSAvIGZwczsKLSAgICBj b25zdCBkb3VibGUgbWF4X3JhdGUgICAgPSBzLT5hdmN0eC0+cmNfbWF4X3JhdGUgLyBmcHM7Cisg ICAgY29uc3QgZG91YmxlIGJ1ZmZlcl9zaXplID0gcy0+Yy5hdmN0eC0+cmNfYnVmZmVyX3NpemU7 CisgICAgY29uc3QgZG91YmxlIGZwcyAgICAgICAgID0gZ2V0X2ZwcyhzLT5jLmF2Y3R4KTsKKyAg ICBjb25zdCBkb3VibGUgbWluX3JhdGUgICAgPSBzLT5jLmF2Y3R4LT5yY19taW5fcmF0ZSAvIGZw czsKKyAgICBjb25zdCBkb3VibGUgbWF4X3JhdGUgICAgPSBzLT5jLmF2Y3R4LT5yY19tYXhfcmF0 ZSAvIGZwczsKICAgICBjb25zdCBpbnQgcGljdF90eXBlICAgICAgPSByY2UtPm5ld19waWN0X3R5 cGU7CiAgICAgaW50IHFtaW4sIHFtYXg7CiAKQEAgLTIwNiwxMSArMjA2LDExIEBAIHN0YXRpYyBk b3VibGUgbW9kaWZ5X3FzY2FsZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3QgUmF0 ZUNvbnRyb2xFbnRyeSAqCiAKICAgICAgICAgICAgIHFfbGltaXQgPSBiaXRzMnFwKHJjZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZGTUFYKChtaW5fcmF0ZSAtIGJ1ZmZlcl9zaXpl ICsgcmNjLT5idWZmZXJfaW5kZXgpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPmF2Y3R4LT5yY19taW5fdmJ2X292ZXJmbG93X3VzZSwgMSkpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5hdmN0eC0+cmNfbWluX3Zidl9vdmVyZmxvd191 c2UsIDEpKTsKIAogICAgICAgICAgICAgaWYgKHEgPiBxX2xpbWl0KSB7Ci0gICAgICAgICAgICAg ICAgaWYgKHMtPmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX1JDKQotICAgICAgICAgICAgICAgICAg ICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywKKyAgICAgICAgICAgICAgICBpZiAocy0+ Yy5hdmN0eC0+ZGVidWcgJiBGRl9ERUJVR19SQykKKyAgICAgICAgICAgICAgICAgICAgYXZfbG9n KHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJs aW1pdGluZyBRUCAlZiAtPiAlZlxuIiwgcSwgcV9saW1pdCk7CiAgICAgICAgICAgICAgICAgcSA9 IHFfbGltaXQ7CiAgICAgICAgICAgICB9CkBAIC0yMjYsMTcgKzIyNiwxNyBAQCBzdGF0aWMgZG91 YmxlIG1vZGlmeV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IFJhdGVD b250cm9sRW50cnkgKgogCiAgICAgICAgICAgICBxX2xpbWl0ID0gYml0czJxcChyY2UsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGRk1BWChyY2MtPmJ1ZmZlcl9pbmRleCAqCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5hdmN0eC0+cmNfbWF4X2F2YWlsYWJs ZV92YnZfdXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yy5hdmN0 eC0+cmNfbWF4X2F2YWlsYWJsZV92YnZfdXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMSkpOwogICAgICAgICAgICAgaWYgKHEgPCBxX2xpbWl0KSB7Ci0gICAgICAgICAg ICAgICAgaWYgKHMtPmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX1JDKQotICAgICAgICAgICAgICAg ICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywKKyAgICAgICAgICAgICAgICBpZiAo cy0+Yy5hdmN0eC0+ZGVidWcgJiBGRl9ERUJVR19SQykKKyAgICAgICAgICAgICAgICAgICAgYXZf bG9nKHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJsaW1pdGluZyBRUCAlZiAtPiAlZlxuIiwgcSwgcV9saW1pdCk7CiAgICAgICAgICAgICAgICAg cSA9IHFfbGltaXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgZmZfZGxv ZyhzLT5hdmN0eCwgInE6JWYgbWF4OiVmIG1pbjolZiBzaXplOiVmIGluZGV4OiVmIGFncjolZlxu IiwKKyAgICBmZl9kbG9nKHMtPmMuYXZjdHgsICJxOiVmIG1heDolZiBtaW46JWYgc2l6ZTolZiBp bmRleDolZiBhZ3I6JWZcbiIsCiAgICAgICAgICAgICBxLCBtYXhfcmF0ZSwgbWluX3JhdGUsIGJ1 ZmZlcl9zaXplLCByY2MtPmJ1ZmZlcl9pbmRleCwKICAgICAgICAgICAgIHJjYy0+YnVmZmVyX2Fn Z3Jlc3Npdml0eSk7CiAgICAgaWYgKHJjYy0+cXNxdWlzaCA9PSAwLjAgfHwgcW1pbiA9PSBxbWF4 KSB7CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCBzdGF0aWMgZG91YmxlIG1vZGlmeV9xc2NhbGUoTVBW TWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IFJhdGVDb250cm9sRW50cnkgKgogc3RhdGlj IGRvdWJsZSBnZXRfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBSYXRlQ29udHJv bEVudHJ5ICpyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJhdGVfZmFjdG9y LCBpbnQgZnJhbWVfbnVtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7 CisgICAgTVBWRW5jQ29udGV4dCAgKmNvbnN0IHMgPSAmbS0+czsKICAgICBSYXRlQ29udHJvbENv bnRleHQgKnJjYyA9ICZtLT5yY19jb250ZXh0OwotICAgIEFWQ29kZWNDb250ZXh0ICphICAgICAg ID0gcy0+YXZjdHg7CisgICAgQVZDb2RlY0NvbnRleHQgKmNvbnN0IGEgPSBzLT5jLmF2Y3R4Owog ICAgIGNvbnN0IGludCBwaWN0X3R5cGUgICAgID0gcmNlLT5uZXdfcGljdF90eXBlOwotICAgIGNv bnN0IGRvdWJsZSBtYl9udW0gICAgID0gcy0+bWJfbnVtOworICAgIGNvbnN0IGRvdWJsZSBtYl9u dW0gICAgID0gcy0+Yy5tYl9udW07CiAgICAgZG91YmxlIHEsIGJpdHM7CiAgICAgaW50IGk7CiAK QEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgZG91YmxlIGdldF9xc2NhbGUoTVBWTWFpbkVuY0Nv bnRleHQgKmNvbnN0IG0sIFJhdGVDb250cm9sRW50cnkgKnJjZSwKIAogICAgIGJpdHMgPSBhdl9l eHByX2V2YWwocmNjLT5yY19lcV9ldmFsLCBjb25zdF92YWx1ZXMsIHJjZSk7CiAgICAgaWYgKGlz bmFuKGJpdHMpKSB7Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiRXJy b3IgZXZhbHVhdGluZyByY19lcSBcIiVzXCJcbiIsIHJjYy0+cmNfZXEpOworICAgICAgICBhdl9s b2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiRXJyb3IgZXZhbHVhdGluZyByY19lcSBcIiVz XCJcbiIsIHJjYy0+cmNfZXEpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0zMTEs OCArMzExLDggQEAgc3RhdGljIGRvdWJsZSBnZXRfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpj b25zdCBtLCBSYXRlQ29udHJvbEVudHJ5ICpyY2UsCiAgICAgYml0cyArPSAxLjA7IC8vIGF2b2lk IDEvMCBpc3N1ZXMKIAogICAgIC8qIHVzZXIgb3ZlcnJpZGUgKi8KLSAgICBmb3IgKGkgPSAwOyBp IDwgcy0+YXZjdHgtPnJjX292ZXJyaWRlX2NvdW50OyBpKyspIHsKLSAgICAgICAgUmNPdmVycmlk ZSAqcmNvID0gcy0+YXZjdHgtPnJjX292ZXJyaWRlOworICAgIGZvciAoaSA9IDA7IGkgPCBzLT5j LmF2Y3R4LT5yY19vdmVycmlkZV9jb3VudDsgaSsrKSB7CisgICAgICAgIFJjT3ZlcnJpZGUgKnJj byA9IHMtPmMuYXZjdHgtPnJjX292ZXJyaWRlOwogICAgICAgICBpZiAocmNvW2ldLnN0YXJ0X2Zy YW1lID4gZnJhbWVfbnVtKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChyY29b aV0uZW5kX2ZyYW1lIDwgZnJhbWVfbnVtKQpAQCAtMzI3LDEwICszMjcsMTAgQEAgc3RhdGljIGRv dWJsZSBnZXRfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBSYXRlQ29udHJvbEVu dHJ5ICpyY2UsCiAgICAgcSA9IGJpdHMycXAocmNlLCBiaXRzKTsKIAogICAgIC8qIEkvQiBkaWZm ZXJlbmNlICovCi0gICAgaWYgKHBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSAmJiBzLT5h dmN0eC0+aV9xdWFudF9mYWN0b3IgPCAwLjApCi0gICAgICAgIHEgPSAtcSAqIHMtPmF2Y3R4LT5p X3F1YW50X2ZhY3RvciArIHMtPmF2Y3R4LT5pX3F1YW50X29mZnNldDsKLSAgICBlbHNlIGlmIChw aWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgJiYgcy0+YXZjdHgtPmJfcXVhbnRfZmFjdG9y IDwgMC4wKQotICAgICAgICBxID0gLXEgKiBzLT5hdmN0eC0+Yl9xdWFudF9mYWN0b3IgKyBzLT5h dmN0eC0+Yl9xdWFudF9vZmZzZXQ7CisgICAgaWYgKHBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZ UEVfSSAmJiBzLT5jLmF2Y3R4LT5pX3F1YW50X2ZhY3RvciA8IDAuMCkKKyAgICAgICAgcSA9IC1x ICogcy0+Yy5hdmN0eC0+aV9xdWFudF9mYWN0b3IgKyBzLT5jLmF2Y3R4LT5pX3F1YW50X29mZnNl dDsKKyAgICBlbHNlIGlmIChwaWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IgJiYgcy0+Yy5h dmN0eC0+Yl9xdWFudF9mYWN0b3IgPCAwLjApCisgICAgICAgIHEgPSAtcSAqIHMtPmMuYXZjdHgt PmJfcXVhbnRfZmFjdG9yICsgcy0+Yy5hdmN0eC0+Yl9xdWFudF9vZmZzZXQ7CiAgICAgaWYgKHEg PCAxKQogICAgICAgICBxID0gMTsKIApAQCAtMzQwLDEwICszNDAsMTAgQEAgc3RhdGljIGRvdWJs ZSBnZXRfcXNjYWxlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBSYXRlQ29udHJvbEVudHJ5 ICpyY2UsCiBzdGF0aWMgaW50IGluaXRfcGFzczIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0p CiB7CiAgICAgUmF0ZUNvbnRyb2xDb250ZXh0ICpjb25zdCByY2MgPSAmbS0+cmNfY29udGV4dDsK LSAgICBNcGVnRW5jQ29udGV4dCAgICAgKmNvbnN0ICAgcyA9ICZtLT5zOwotICAgIEFWQ29kZWND b250ZXh0ICphICAgICAgID0gcy0+YXZjdHg7CisgICAgTVBWRW5jQ29udGV4dCAgICAgICpjb25z dCAgIHMgPSAmbS0+czsKKyAgICBBVkNvZGVjQ29udGV4dCAgICAgKmNvbnN0ICAgYSA9IHMtPmMu YXZjdHg7CiAgICAgaW50IGksIHRvb2JpZzsKLSAgICBBVlJhdGlvbmFsIGZwcyAgICAgICAgID0g Z2V0X2Zwc1Eocy0+YXZjdHgpOworICAgIEFWUmF0aW9uYWwgZnBzICAgICAgICAgPSBnZXRfZnBz UShzLT5jLmF2Y3R4KTsKICAgICBkb3VibGUgY29tcGxleGl0eVs1XSAgID0geyAwIH07IC8vIGFw cHJveGltYXRlIGJpdHMgYXQgcXVhbnQ9MQogICAgIHVpbnQ2NF90IGNvbnN0X2JpdHNbNV0gPSB7 IDAgfTsgLy8gcXVhbnRpemVyIGluZGVwZW5kZW50IGJpdHMKICAgICB1aW50NjRfdCBhbGxfY29u c3RfYml0czsKQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgaW50IGluaXRfcGFzczIoTVBWTWFp bkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgICAgICAgICAgICAgICBjb25zdF9iaXRzW0FW X1BJQ1RVUkVfVFlQRV9CXTsKIAogICAgIGlmIChhbGxfYXZhaWxhYmxlX2JpdHMgPCBhbGxfY29u c3RfYml0cykgewotICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgInJlcXVl c3RlZCBiaXRyYXRlIGlzIHRvbyBsb3dcbiIpOworICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwg QVZfTE9HX0VSUk9SLCAicmVxdWVzdGVkIGJpdHJhdGUgaXMgdG9vIGxvd1xuIik7CiAgICAgICAg IHJldHVybiAtMTsKICAgICB9CiAKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgaW50IGluaXRf cGFzczIoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgIGV4cGVjdGVkX2JpdHMg PSAwOwogICAgICAgICByYXRlX2ZhY3RvciAgKz0gc3RlcDsKIAotICAgICAgICByY2MtPmJ1ZmZl cl9pbmRleCA9IHMtPmF2Y3R4LT5yY19idWZmZXJfc2l6ZSAvIDI7CisgICAgICAgIHJjYy0+YnVm ZmVyX2luZGV4ID0gcy0+Yy5hdmN0eC0+cmNfYnVmZmVyX3NpemUgLyAyOwogCiAgICAgICAgIC8q IGZpbmQgcXNjYWxlICovCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByY2MtPm51bV9lbnRyaWVz OyBpKyspIHsKQEAgLTQ1Myw3ICs0NTMsNyBAQCBzdGF0aWMgaW50IGluaXRfcGFzczIoTVBWTWFp bkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgICAgICBleHBlY3RlZF9iaXRzICAgICArPSBi aXRzOwogICAgICAgICB9CiAKLSAgICAgICAgZmZfZGxvZyhzLT5hdmN0eCwKKyAgICAgICAgZmZf ZGxvZyhzLT5jLmF2Y3R4LAogICAgICAgICAgICAgICAgICJleHBlY3RlZF9iaXRzOiAlZiBhbGxf YXZhaWxhYmxlX2JpdHM6ICVkIHJhdGVfZmFjdG9yOiAlZlxuIiwKICAgICAgICAgICAgICAgICBl eHBlY3RlZF9iaXRzLCAoaW50KWFsbF9hdmFpbGFibGVfYml0cywgcmF0ZV9mYWN0b3IpOwogICAg ICAgICBpZiAoZXhwZWN0ZWRfYml0cyA+IGFsbF9hdmFpbGFibGVfYml0cykgewpAQCAtNDY3LDMy ICs0NjcsMzIgQEAgc3RhdGljIGludCBpbml0X3Bhc3MyKE1QVk1haW5FbmNDb250ZXh0ICpjb25z dCBtKQogICAgIC8qIGNoZWNrIGJpdHJhdGUgY2FsY3VsYXRpb25zIGFuZCBwcmludCBpbmZvICov CiAgICAgcXNjYWxlX3N1bSA9IDAuMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgcmNjLT5udW1fZW50 cmllczsgaSsrKSB7Ci0gICAgICAgIGZmX2Rsb2cocy0+YXZjdHgsICJbbGF2YyByY10gZW50cnlb JWRdLm5ld19xc2NhbGUgPSAlLjNmICBxcCA9ICUuM2ZcbiIsCisgICAgICAgIGZmX2Rsb2cocy0+ Yy5hdmN0eCwgIltsYXZjIHJjXSBlbnRyeVslZF0ubmV3X3FzY2FsZSA9ICUuM2YgIHFwID0gJS4z ZlxuIiwKICAgICAgICAgICAgICAgICBpLAogICAgICAgICAgICAgICAgIHJjYy0+ZW50cnlbaV0u bmV3X3FzY2FsZSwKICAgICAgICAgICAgICAgICByY2MtPmVudHJ5W2ldLm5ld19xc2NhbGUgLyBG Rl9RUDJMQU1CREEpOwogICAgICAgICBxc2NhbGVfc3VtICs9IGF2X2NsaXAocmNjLT5lbnRyeVtp XS5uZXdfcXNjYWxlIC8gRkZfUVAyTEFNQkRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcy0+YXZjdHgtPnFtaW4sIHMtPmF2Y3R4LT5xbWF4KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHMtPmMuYXZjdHgtPnFtaW4sIHMtPmMuYXZjdHgtPnFtYXgpOwogICAgIH0KICAg ICBhdl9hc3NlcnQwKHRvb2JpZyA8PSA0MCk7Ci0gICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0df REVCVUcsCisgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAg IltsYXZjIHJjXSByZXF1ZXN0ZWQgYml0cmF0ZTogJSJQUklkNjQiIGJwcyAgZXhwZWN0ZWQgYml0 cmF0ZTogJSJQUklkNjQiIGJwc1xuIiwKICAgICAgICAgICAgbS0+Yml0X3JhdGUsCiAgICAgICAg ICAgIChpbnQ2NF90KShleHBlY3RlZF9iaXRzIC8gKChkb3VibGUpYWxsX2F2YWlsYWJsZV9iaXRz IC8gbS0+Yml0X3JhdGUpKSk7Ci0gICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfREVCVUcsCisg ICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAgIltsYXZjIHJj XSBlc3RpbWF0ZWQgdGFyZ2V0IGF2ZXJhZ2UgcXA6ICUuM2ZcbiIsCiAgICAgICAgICAgIChmbG9h dClxc2NhbGVfc3VtIC8gcmNjLT5udW1fZW50cmllcyk7CiAgICAgaWYgKHRvb2JpZyA9PSAwKSB7 Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0lORk8sCisgICAgICAgIGF2X2xvZyhz LT5jLmF2Y3R4LCBBVl9MT0dfSU5GTywKICAgICAgICAgICAgICAgICJbbGF2YyByY10gVXNpbmcg YWxsIG9mIHJlcXVlc3RlZCBiaXRyYXRlIGlzIG5vdCAiCiAgICAgICAgICAgICAgICAibmVjZXNz YXJ5IGZvciB0aGlzIHZpZGVvIHdpdGggdGhlc2UgcGFyYW1ldGVycy5cbiIpOwogICAgIH0gZWxz ZSBpZiAodG9vYmlnID09IDQwKSB7Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VS Uk9SLAorICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLAogICAgICAgICAg ICAgICAgIltsYXZjIHJjXSBFcnJvcjogYml0cmF0ZSB0b28gbG93IGZvciB0aGlzIHZpZGVvICIK ICAgICAgICAgICAgICAgICJ3aXRoIHRoZXNlIHBhcmFtZXRlcnMuXG4iKTsKICAgICAgICAgcmV0 dXJuIC0xOwogICAgIH0gZWxzZSBpZiAoZmFicyhleHBlY3RlZF9iaXRzIC8gYWxsX2F2YWlsYWJs ZV9iaXRzIC0gMS4wKSA+IDAuMDEpIHsKLSAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0df RVJST1IsCisgICAgICAgIGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9MT0dfRVJST1IsCiAgICAgICAg ICAgICAgICAiW2xhdmMgcmNdIEVycm9yOiAycGFzcyBjdXJ2ZSBmYWlsZWQgdG8gY29udmVyZ2Vc biIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtNTAyLDcgKzUwMiw3IEBAIHN0YXRp YyBpbnQgaW5pdF9wYXNzMihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIAogYXZfY29sZCBp bnQgZmZfcmF0ZV9jb250cm9sX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiB7Ci0g ICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKKyAgICBNUFZFbmNDb250ZXh0ICAq Y29uc3QgcyA9ICZtLT5zOwogICAgIFJhdGVDb250cm9sQ29udGV4dCAqcmNjID0gJm0tPnJjX2Nv bnRleHQ7CiAgICAgaW50IGksIHJlczsKICAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNv bnN0X25hbWVzW10gPSB7CkBAIC01NDAsMTkgKzU0MCwxOSBAQCBhdl9jb2xkIGludCBmZl9yYXRl X2NvbnRyb2xfaW5pdChNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKICAgICB9OwogICAgIGVt bXNfYygpOwogCi0gICAgaWYgKCFzLT5hdmN0eC0+cmNfbWF4X2F2YWlsYWJsZV92YnZfdXNlICYm IHMtPmF2Y3R4LT5yY19idWZmZXJfc2l6ZSkgewotICAgICAgICBpZiAocy0+YXZjdHgtPnJjX21h eF9yYXRlKSB7Ci0gICAgICAgICAgICBzLT5hdmN0eC0+cmNfbWF4X2F2YWlsYWJsZV92YnZfdXNl ID0gYXZfY2xpcGYocy0+YXZjdHgtPnJjX21heF9yYXRlLyhzLT5hdmN0eC0+cmNfYnVmZmVyX3Np emUqZ2V0X2ZwcyhzLT5hdmN0eCkpLCAxLjAvMywgMS4wKTsKKyAgICBpZiAoIXMtPmMuYXZjdHgt PnJjX21heF9hdmFpbGFibGVfdmJ2X3VzZSAmJiBzLT5jLmF2Y3R4LT5yY19idWZmZXJfc2l6ZSkg eworICAgICAgICBpZiAocy0+Yy5hdmN0eC0+cmNfbWF4X3JhdGUpIHsKKyAgICAgICAgICAgIHMt PmMuYXZjdHgtPnJjX21heF9hdmFpbGFibGVfdmJ2X3VzZSA9IGF2X2NsaXBmKHMtPmMuYXZjdHgt PnJjX21heF9yYXRlLyhzLT5jLmF2Y3R4LT5yY19idWZmZXJfc2l6ZSpnZXRfZnBzKHMtPmMuYXZj dHgpKSwgMS4wLzMsIDEuMCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcy0+YXZjdHgt PnJjX21heF9hdmFpbGFibGVfdmJ2X3VzZSA9IDEuMDsKKyAgICAgICAgICAgIHMtPmMuYXZjdHgt PnJjX21heF9hdmFpbGFibGVfdmJ2X3VzZSA9IDEuMDsKICAgICB9CiAKICAgICByZXMgPSBhdl9l eHByX3BhcnNlKCZyY2MtPnJjX2VxX2V2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICByY2Mt PnJjX2VxID8gcmNjLT5yY19lcSA6ICJ0ZXhecUNvbXAiLAogICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3RfbmFtZXMsIGZ1bmMxX25hbWVzLCBmdW5jMSwKLSAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwsIE5VTEwsIDAsIHMtPmF2Y3R4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIE5VTEwsIDAsIHMtPmMuYXZjdHgpOwogICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGF2 X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiRXJyb3IgcGFyc2luZyByY19lcSBcIiVzXCJc biIsIHJjYy0+cmNfZXEpOworICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9S LCAiRXJyb3IgcGFyc2luZyByY19lcSBcIiVzXCJcbiIsIHJjYy0+cmNfZXEpOwogICAgICAgICBy ZXR1cm4gcmVzOwogICAgIH0KIApAQCAtNTY5LDE2ICs1NjksMTYgQEAgYXZfY29sZCBpbnQgZmZf cmF0ZV9jb250cm9sX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAKICAgICAgICAg cmNjLT5sYXN0X3FzY2FsZV9mb3JbaV0gPSBGRl9RUDJMQU1CREEgKiA1OwogICAgIH0KLSAgICBy Y2MtPmJ1ZmZlcl9pbmRleCA9IHMtPmF2Y3R4LT5yY19pbml0aWFsX2J1ZmZlcl9vY2N1cGFuY3k7 CisgICAgcmNjLT5idWZmZXJfaW5kZXggPSBzLT5jLmF2Y3R4LT5yY19pbml0aWFsX2J1ZmZlcl9v Y2N1cGFuY3k7CiAgICAgaWYgKCFyY2MtPmJ1ZmZlcl9pbmRleCkKLSAgICAgICAgcmNjLT5idWZm ZXJfaW5kZXggPSBzLT5hdmN0eC0+cmNfYnVmZmVyX3NpemUgKiAzIC8gNDsKKyAgICAgICAgcmNj LT5idWZmZXJfaW5kZXggPSBzLT5jLmF2Y3R4LT5yY19idWZmZXJfc2l6ZSAqIDMgLyA0OwogCi0g ICAgaWYgKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzIpIHsKKyAgICBpZiAo cy0+Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSB7CiAgICAgICAgIGludCBp OwogICAgICAgICBjaGFyICpwOwogCiAgICAgICAgIC8qIGZpbmQgbnVtYmVyIG9mIHBpY3MgKi8K LSAgICAgICAgcCA9IHMtPmF2Y3R4LT5zdGF0c19pbjsKKyAgICAgICAgcCA9IHMtPmMuYXZjdHgt PnN0YXRzX2luOwogICAgICAgICBmb3IgKGkgPSAtMTsgcDsgaSsrKQogICAgICAgICAgICAgcCA9 IHN0cmNocihwICsgMSwgJzsnKTsKICAgICAgICAgaSArPSBtLT5tYXhfYl9mcmFtZXM7CkBAIC01 OTYsMTIgKzU5NiwxMiBAQCBhdl9jb2xkIGludCBmZl9yYXRlX2NvbnRyb2xfaW5pdChNUFZNYWlu RW5jQ29udGV4dCAqY29uc3QgbSkKIAogICAgICAgICAgICAgcmNlLT5waWN0X3R5cGUgID0gcmNl LT5uZXdfcGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX1A7CiAgICAgICAgICAgICByY2UtPnFz Y2FsZSAgICAgPSByY2UtPm5ld19xc2NhbGUgICAgPSBGRl9RUDJMQU1CREEgKiAyOwotICAgICAg ICAgICAgcmNlLT5taXNjX2JpdHMgID0gcy0+bWJfbnVtICsgMTA7Ci0gICAgICAgICAgICByY2Ut Pm1iX3Zhcl9zdW0gPSBzLT5tYl9udW0gKiAxMDA7CisgICAgICAgICAgICByY2UtPm1pc2NfYml0 cyAgPSBzLT5jLm1iX251bSArIDEwOworICAgICAgICAgICAgcmNlLT5tYl92YXJfc3VtID0gcy0+ Yy5tYl9udW0gKiAxMDA7CiAgICAgICAgIH0KIAogICAgICAgICAvKiByZWFkIHN0YXRzICovCi0g ICAgICAgIHAgPSBzLT5hdmN0eC0+c3RhdHNfaW47CisgICAgICAgIHAgPSBzLT5jLmF2Y3R4LT5z dGF0c19pbjsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJjYy0+bnVtX2VudHJpZXMgLSBtLT5t YXhfYl9mcmFtZXM7IGkrKykgewogICAgICAgICAgICAgUmF0ZUNvbnRyb2xFbnRyeSAqcmNlOwog ICAgICAgICAgICAgaW50IHBpY3R1cmVfbnVtYmVyOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGF2X2Nv bGQgaW50IGZmX3JhdGVfY29udHJvbF9pbml0KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQog ICAgICAgICAgICAgICAgICAgICAgICAgJnJjZS0+bWNfbWJfdmFyX3N1bSwgJnJjZS0+bWJfdmFy X3N1bSwKICAgICAgICAgICAgICAgICAgICAgICAgICZyY2UtPmlfY291bnQsICZyY2UtPmhlYWRl cl9iaXRzKTsKICAgICAgICAgICAgIGlmIChlICE9IDEzKSB7Ci0gICAgICAgICAgICAgICAgYXZf bG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmMu YXZjdHgsIEFWX0xPR19FUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRpc3RpY3Mg YXJlIGRhbWFnZWQgYXQgbGluZSAlZCwgcGFyc2VyIG91dD0lZFxuIiwKICAgICAgICAgICAgICAg ICAgICAgICAgaSwgZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjQ0LDIxICs2 NDQsMjEgQEAgYXZfY29sZCBpbnQgZmZfcmF0ZV9jb250cm9sX2luaXQoTVBWTWFpbkVuY0NvbnRl eHQgKmNvbnN0IG0pCiAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KIAotICAgIGlmICgh KHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzIpKSB7CisgICAgaWYgKCEocy0+ Yy5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSkgewogICAgICAgICByY2MtPnNo b3J0X3Rlcm1fcXN1bSAgID0gMC4wMDE7CiAgICAgICAgIHJjYy0+c2hvcnRfdGVybV9xY291bnQg PSAwLjAwMTsKIAogICAgICAgICByY2MtPnBhc3MxX3JjX2VxX291dHB1dF9zdW0gPSAwLjAwMTsK ICAgICAgICAgcmNjLT5wYXNzMV93YW50ZWRfYml0cyAgICAgID0gMC4wMDE7CiAKLSAgICAgICAg aWYgKHMtPmF2Y3R4LT5xYmx1ciA+IDEuMCkgewotICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4 LCBBVl9MT0dfRVJST1IsICJxYmx1ciB0b28gbGFyZ2VcbiIpOworICAgICAgICBpZiAocy0+Yy5h dmN0eC0+cWJsdXIgPiAxLjApIHsKKyAgICAgICAgICAgIGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9M T0dfRVJST1IsICJxYmx1ciB0b28gbGFyZ2VcbiIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwog ICAgICAgICB9CiAgICAgICAgIC8qIGluaXQgc3R1ZmYgd2l0aCB0aGUgdXNlciBzcGVjaWZpZWQg Y29tcGxleGl0eSAqLwogICAgICAgICBpZiAocmNjLT5pbml0aWFsX2NwbHgpIHsKICAgICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCA2MCAqIDMwOyBpKyspIHsKLSAgICAgICAgICAgICAgICBkb3Vi bGUgYml0cyA9IHJjYy0+aW5pdGlhbF9jcGx4ICogKGkgLyAxMDAwMC4wICsgMS4wKSAqIHMtPm1i X251bTsKKyAgICAgICAgICAgICAgICBkb3VibGUgYml0cyA9IHJjYy0+aW5pdGlhbF9jcGx4ICog KGkgLyAxMDAwMC4wICsgMS4wKSAqIHMtPmMubWJfbnVtOwogICAgICAgICAgICAgICAgIFJhdGVD b250cm9sRW50cnkgcmNlOwogCiAgICAgICAgICAgICAgICAgaWYgKGkgJSAoKG0tPmdvcF9zaXpl ICsgMykgLyA0KSA9PSAwKQpAQCAtNjY5LDE2ICs2NjksMTYgQEAgYXZfY29sZCBpbnQgZmZfcmF0 ZV9jb250cm9sX2luaXQoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgICAgICAg ICAgICAgIHJjZS5waWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfUDsKIAogICAgICAgICAgICAg ICAgIHJjZS5uZXdfcGljdF90eXBlID0gcmNlLnBpY3RfdHlwZTsKLSAgICAgICAgICAgICAgICBy Y2UubWNfbWJfdmFyX3N1bSA9IGJpdHMgKiBzLT5tYl9udW0gLyAxMDAwMDA7Ci0gICAgICAgICAg ICAgICAgcmNlLm1iX3Zhcl9zdW0gICAgPSBzLT5tYl9udW07CisgICAgICAgICAgICAgICAgcmNl Lm1jX21iX3Zhcl9zdW0gPSBiaXRzICogcy0+Yy5tYl9udW0gLyAxMDAwMDA7CisgICAgICAgICAg ICAgICAgcmNlLm1iX3Zhcl9zdW0gICAgPSBzLT5jLm1iX251bTsKIAogICAgICAgICAgICAgICAg IHJjZS5xc2NhbGUgICAgPSBGRl9RUDJMQU1CREEgKiAyOwogICAgICAgICAgICAgICAgIHJjZS5m X2NvZGUgICAgPSAyOwogICAgICAgICAgICAgICAgIHJjZS5iX2NvZGUgICAgPSAxOwogICAgICAg ICAgICAgICAgIHJjZS5taXNjX2JpdHMgPSAxOwogCi0gICAgICAgICAgICAgICAgaWYgKHMtPnBp Y3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewotICAgICAgICAgICAgICAgICAgICByY2Uu aV9jb3VudCAgICA9IHMtPm1iX251bTsKKyAgICAgICAgICAgICAgICBpZiAocy0+Yy5waWN0X3R5 cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpIHsKKyAgICAgICAgICAgICAgICAgICAgcmNlLmlfY291 bnQgICAgPSBzLT5jLm1iX251bTsKICAgICAgICAgICAgICAgICAgICAgcmNlLmlfdGV4X2JpdHMg PSBiaXRzOwogICAgICAgICAgICAgICAgICAgICByY2UucF90ZXhfYml0cyA9IDA7CiAgICAgICAg ICAgICAgICAgICAgIHJjZS5tdl9iaXRzICAgID0gMDsKQEAgLTY5NiwxMyArNjk2LDEzIEBAIGF2 X2NvbGQgaW50IGZmX3JhdGVfY29udHJvbF9pbml0KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt KQogICAgICAgICAgICAgICAgIGdldF9xc2NhbGUobSwgJnJjZSwgcmNjLT5wYXNzMV93YW50ZWRf Yml0cyAvIHJjYy0+cGFzczFfcmNfZXFfb3V0cHV0X3N1bSwgaSk7CiAKICAgICAgICAgICAgICAg ICAvLyBGSVhNRSBtaXNiZWhhdmVzIGEgbGl0dGxlIGZvciB2YXJpYWJsZSBmcHMKLSAgICAgICAg ICAgICAgICByY2MtPnBhc3MxX3dhbnRlZF9iaXRzICs9IG0tPmJpdF9yYXRlIC8gZ2V0X2Zwcyhz LT5hdmN0eCk7CisgICAgICAgICAgICAgICAgcmNjLT5wYXNzMV93YW50ZWRfYml0cyArPSBtLT5i aXRfcmF0ZSAvIGdldF9mcHMocy0+Yy5hdmN0eCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K ICAgICB9CiAKICAgICBpZiAocy0+YWRhcHRpdmVfcXVhbnQpIHsKLSAgICAgICAgdW5zaWduZWQg bWJfYXJyYXlfc2l6ZSA9IHMtPm1iX3N0cmlkZSAqIHMtPm1iX2hlaWdodDsKKyAgICAgICAgdW5z aWduZWQgbWJfYXJyYXlfc2l6ZSA9IHMtPmMubWJfc3RyaWRlICogcy0+Yy5tYl9oZWlnaHQ7CiAK ICAgICAgICAgcmNjLT5jcGx4X3RhYiA9IGF2X21hbGxvY19hcnJheShtYl9hcnJheV9zaXplLCAy ICogc2l6ZW9mKHJjYy0+Y3BseF90YWIpKTsKICAgICAgICAgaWYgKCFyY2MtPmNwbHhfdGFiKQpA QCAtNzI2LDE0ICs3MjYsMTQgQEAgYXZfY29sZCB2b2lkIGZmX3JhdGVfY29udHJvbF91bmluaXQo UmF0ZUNvbnRyb2xDb250ZXh0ICpyY2MpCiAKIGludCBmZl92YnZfdXBkYXRlKE1QVk1haW5FbmND b250ZXh0ICptLCBpbnQgZnJhbWVfc2l6ZSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAgICAgKmNv bnN0ICAgcyA9ICZtLT5zOworICAgIE1QVkVuY0NvbnRleHQgICAgICAqY29uc3QgICBzID0gJm0t PnM7CiAgICAgUmF0ZUNvbnRyb2xDb250ZXh0ICpjb25zdCByY2MgPSAmbS0+cmNfY29udGV4dDsK LSAgICBjb25zdCBkb3VibGUgZnBzICAgICAgICA9IGdldF9mcHMocy0+YXZjdHgpOwotICAgIGNv bnN0IGludCBidWZmZXJfc2l6ZSAgID0gcy0+YXZjdHgtPnJjX2J1ZmZlcl9zaXplOwotICAgIGNv bnN0IGRvdWJsZSBtaW5fcmF0ZSAgID0gcy0+YXZjdHgtPnJjX21pbl9yYXRlIC8gZnBzOwotICAg IGNvbnN0IGRvdWJsZSBtYXhfcmF0ZSAgID0gcy0+YXZjdHgtPnJjX21heF9yYXRlIC8gZnBzOwor ICAgIGNvbnN0IGRvdWJsZSBmcHMgICAgICAgID0gZ2V0X2ZwcyhzLT5jLmF2Y3R4KTsKKyAgICBj b25zdCBpbnQgYnVmZmVyX3NpemUgICA9IHMtPmMuYXZjdHgtPnJjX2J1ZmZlcl9zaXplOworICAg IGNvbnN0IGRvdWJsZSBtaW5fcmF0ZSAgID0gcy0+Yy5hdmN0eC0+cmNfbWluX3JhdGUgLyBmcHM7 CisgICAgY29uc3QgZG91YmxlIG1heF9yYXRlICAgPSBzLT5jLmF2Y3R4LT5yY19tYXhfcmF0ZSAv IGZwczsKIAotICAgIGZmX2Rsb2cocy0+YXZjdHgsICIlZCAlZiAlZCAlZiAlZlxuIiwKKyAgICBm Zl9kbG9nKHMtPmMuYXZjdHgsICIlZCAlZiAlZCAlZiAlZlxuIiwKICAgICAgICAgICAgIGJ1ZmZl cl9zaXplLCByY2MtPmJ1ZmZlcl9pbmRleCwgZnJhbWVfc2l6ZSwgbWluX3JhdGUsIG1heF9yYXRl KTsKIAogICAgIGlmIChidWZmZXJfc2l6ZSkgewpAQCAtNzQxLDkgKzc0MSw5IEBAIGludCBmZl92 YnZfdXBkYXRlKE1QVk1haW5FbmNDb250ZXh0ICptLCBpbnQgZnJhbWVfc2l6ZSkKIAogICAgICAg ICByY2MtPmJ1ZmZlcl9pbmRleCAtPSBmcmFtZV9zaXplOwogICAgICAgICBpZiAocmNjLT5idWZm ZXJfaW5kZXggPCAwKSB7Ci0gICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJP UiwgInJjIGJ1ZmZlciB1bmRlcmZsb3dcbiIpOwotICAgICAgICAgICAgaWYgKGZyYW1lX3NpemUg PiBtYXhfcmF0ZSAmJiBzLT5xc2NhbGUgPT0gcy0+YXZjdHgtPnFtYXgpIHsKLSAgICAgICAgICAg ICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIm1heCBiaXRyYXRlIHBvc3NpYmx5 IHRvbyBzbWFsbCBvciB0cnkgdHJlbGxpcyB3aXRoIGxhcmdlIGxtYXggb3IgaW5jcmVhc2UgcW1h eFxuIik7CisgICAgICAgICAgICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLCAicmMg YnVmZmVyIHVuZGVyZmxvd1xuIik7CisgICAgICAgICAgICBpZiAoZnJhbWVfc2l6ZSA+IG1heF9y YXRlICYmIHMtPmMucXNjYWxlID09IHMtPmMuYXZjdHgtPnFtYXgpIHsKKyAgICAgICAgICAgICAg ICBhdl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0VSUk9SLCAibWF4IGJpdHJhdGUgcG9zc2libHkg dG9vIHNtYWxsIG9yIHRyeSB0cmVsbGlzIHdpdGggbGFyZ2UgbG1heCBvciBpbmNyZWFzZSBxbWF4 XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJjYy0+YnVmZmVyX2luZGV4ID0gMDsK ICAgICAgICAgfQpAQCAtNzU0LDEyICs3NTQsMTIgQEAgaW50IGZmX3Zidl91cGRhdGUoTVBWTWFp bkVuY0NvbnRleHQgKm0sIGludCBmcmFtZV9zaXplKQogICAgICAgICBpZiAocmNjLT5idWZmZXJf aW5kZXggPiBidWZmZXJfc2l6ZSkgewogICAgICAgICAgICAgaW50IHN0dWZmaW5nID0gY2VpbCgo cmNjLT5idWZmZXJfaW5kZXggLSBidWZmZXJfc2l6ZSkgLyA4KTsKIAotICAgICAgICAgICAgaWYg KHN0dWZmaW5nIDwgNCAmJiBzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkKKyAgICAg ICAgICAgIGlmIChzdHVmZmluZyA8IDQgJiYgcy0+Yy5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9N UEVHNCkKICAgICAgICAgICAgICAgICBzdHVmZmluZyA9IDQ7CiAgICAgICAgICAgICByY2MtPmJ1 ZmZlcl9pbmRleCAtPSA4ICogc3R1ZmZpbmc7CiAKLSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+ ZGVidWcgJiBGRl9ERUJVR19SQykKLSAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFW X0xPR19ERUJVRywgInN0dWZmaW5nICVkIGJ5dGVzXG4iLCBzdHVmZmluZyk7CisgICAgICAgICAg ICBpZiAocy0+Yy5hdmN0eC0+ZGVidWcgJiBGRl9ERUJVR19SQykKKyAgICAgICAgICAgICAgICBh dl9sb2cocy0+Yy5hdmN0eCwgQVZfTE9HX0RFQlVHLCAic3R1ZmZpbmcgJWQgYnl0ZXNcbiIsIHN0 dWZmaW5nKTsKIAogICAgICAgICAgICAgcmV0dXJuIHN0dWZmaW5nOwogICAgICAgICB9CkBAIC03 ODcsMzEgKzc4NywzMCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcHJlZGljdG9yKFByZWRpY3RvciAq cCwgZG91YmxlIHEsIGRvdWJsZSB2YXIsIGRvdWJsZSBzaXplKQogc3RhdGljIHZvaWQgYWRhcHRp dmVfcXVhbnRpemF0aW9uKFJhdGVDb250cm9sQ29udGV4dCAqY29uc3QgcmNjLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBkb3Vi bGUgcSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwotICAgIGludCBp OwotICAgIGNvbnN0IGZsb2F0IGx1bWlfbWFza2luZyAgICAgICAgID0gcy0+YXZjdHgtPmx1bWlf bWFza2luZyAvICgxMjguMCAqIDEyOC4wKTsKLSAgICBjb25zdCBmbG9hdCBkYXJrX21hc2tpbmcg ICAgICAgICA9IHMtPmF2Y3R4LT5kYXJrX21hc2tpbmcgLyAoMTI4LjAgKiAxMjguMCk7Ci0gICAg Y29uc3QgZmxvYXQgdGVtcF9jcGx4X21hc2tpbmcgICAgPSBzLT5hdmN0eC0+dGVtcG9yYWxfY3Bs eF9tYXNraW5nOwotICAgIGNvbnN0IGZsb2F0IHNwYXRpYWxfY3BseF9tYXNraW5nID0gcy0+YXZj dHgtPnNwYXRpYWxfY3BseF9tYXNraW5nOwotICAgIGNvbnN0IGZsb2F0IHBfbWFza2luZyAgICAg ICAgICAgID0gcy0+YXZjdHgtPnBfbWFza2luZzsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBz ID0gJm0tPnM7CisgICAgY29uc3QgZmxvYXQgbHVtaV9tYXNraW5nICAgICAgICAgPSBzLT5jLmF2 Y3R4LT5sdW1pX21hc2tpbmcgLyAoMTI4LjAgKiAxMjguMCk7CisgICAgY29uc3QgZmxvYXQgZGFy a19tYXNraW5nICAgICAgICAgPSBzLT5jLmF2Y3R4LT5kYXJrX21hc2tpbmcgLyAoMTI4LjAgKiAx MjguMCk7CisgICAgY29uc3QgZmxvYXQgdGVtcF9jcGx4X21hc2tpbmcgICAgPSBzLT5jLmF2Y3R4 LT50ZW1wb3JhbF9jcGx4X21hc2tpbmc7CisgICAgY29uc3QgZmxvYXQgc3BhdGlhbF9jcGx4X21h c2tpbmcgPSBzLT5jLmF2Y3R4LT5zcGF0aWFsX2NwbHhfbWFza2luZzsKKyAgICBjb25zdCBmbG9h dCBwX21hc2tpbmcgICAgICAgICAgICA9IHMtPmMuYXZjdHgtPnBfbWFza2luZzsKICAgICBjb25z dCBmbG9hdCBib3JkZXJfbWFza2luZyAgICAgICA9IG0tPmJvcmRlcl9tYXNraW5nOwogICAgIGZs b2F0IGJpdHNfc3VtICAgICAgICAgICAgICAgICAgID0gMC4wOwogICAgIGZsb2F0IGNwbHhfc3Vt ICAgICAgICAgICAgICAgICAgID0gMC4wOwogICAgIGZsb2F0ICpjcGx4X3RhYiAgICAgICAgICAg ICAgICAgID0gcmNjLT5jcGx4X3RhYjsKICAgICBmbG9hdCAqYml0c190YWIgICAgICAgICAgICAg ICAgICA9IHJjYy0+Yml0c190YWI7Ci0gICAgY29uc3QgaW50IHFtaW4gICAgICAgICAgICAgICAg ICAgPSBzLT5hdmN0eC0+bWJfbG1pbjsKLSAgICBjb25zdCBpbnQgcW1heCAgICAgICAgICAgICAg ICAgICA9IHMtPmF2Y3R4LT5tYl9sbWF4OwotICAgIGNvbnN0IGludCBtYl93aWR0aCAgICAgICAg ICAgICAgID0gcy0+bWJfd2lkdGg7Ci0gICAgY29uc3QgaW50IG1iX2hlaWdodCAgICAgICAgICAg ICAgPSBzLT5tYl9oZWlnaHQ7CisgICAgY29uc3QgaW50IHFtaW4gICAgICAgICAgICAgICAgICAg PSBzLT5jLmF2Y3R4LT5tYl9sbWluOworICAgIGNvbnN0IGludCBxbWF4ICAgICAgICAgICAgICAg ICAgID0gcy0+Yy5hdmN0eC0+bWJfbG1heDsKKyAgICBjb25zdCBpbnQgbWJfd2lkdGggICAgICAg ICAgICAgICA9IHMtPmMubWJfd2lkdGg7CisgICAgY29uc3QgaW50IG1iX2hlaWdodCAgICAgICAg ICAgICAgPSBzLT5jLm1iX2hlaWdodDsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBzLT5tYl9udW07 IGkrKykgewotICAgICAgICBjb25zdCBpbnQgbWJfeHkgPSBzLT5tYl9pbmRleDJ4eVtpXTsKKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IHMtPmMubWJfbnVtOyBpKyspIHsKKyAgICAgICAgY29uc3Qg aW50IG1iX3h5ID0gcy0+Yy5tYl9pbmRleDJ4eVtpXTsKICAgICAgICAgZmxvYXQgdGVtcF9jcGx4 ID0gc3FydChzLT5tY19tYl92YXJbbWJfeHldKTsgLy8gRklYTUUgbWVyZ2UgaW4gcG93KCkKICAg ICAgICAgZmxvYXQgc3BhdF9jcGx4ID0gc3FydChzLT5tYl92YXJbbWJfeHldKTsKICAgICAgICAg Y29uc3QgaW50IGx1bWkgID0gcy0+bWJfbWVhblttYl94eV07CiAgICAgICAgIGZsb2F0IGJpdHMs IGNwbHgsIGZhY3RvcjsKLSAgICAgICAgaW50IG1iX3ggPSBtYl94eSAlIHMtPm1iX3N0cmlkZTsK LSAgICAgICAgaW50IG1iX3kgPSBtYl94eSAvIHMtPm1iX3N0cmlkZTsKKyAgICAgICAgaW50IG1i X3ggPSBtYl94eSAlIHMtPmMubWJfc3RyaWRlOworICAgICAgICBpbnQgbWJfeSA9IG1iX3h5IC8g cy0+Yy5tYl9zdHJpZGU7CiAgICAgICAgIGludCBtYl9kaXN0YW5jZTsKICAgICAgICAgZmxvYXQg bWJfZmFjdG9yID0gMC4wOwogICAgICAgICBpZiAoc3BhdF9jcGx4IDwgNCkKQEAgLTg2NSw3ICs4 NjQsNyBAQCBzdGF0aWMgdm9pZCBhZGFwdGl2ZV9xdWFudGl6YXRpb24oUmF0ZUNvbnRyb2xDb250 ZXh0ICpjb25zdCByY2MsCiAgICAgLyogaGFuZGxlIHFtaW4vcW1heCBjbGlwcGluZyAqLwogICAg IGlmIChzLT5tcHZfZmxhZ3MgJiBGRl9NUFZfRkxBR19OQVEpIHsKICAgICAgICAgZmxvYXQgZmFj dG9yID0gYml0c19zdW0gLyBjcGx4X3N1bTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHMtPm1i X251bTsgaSsrKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy0+Yy5tYl9udW07IGkr KykgewogICAgICAgICAgICAgZmxvYXQgbmV3cSA9IHEgKiBjcGx4X3RhYltpXSAvIGJpdHNfdGFi W2ldOwogICAgICAgICAgICAgbmV3cSAqPSBmYWN0b3I7CiAKQEAgLTg4Myw4ICs4ODIsOCBAQCBz dGF0aWMgdm9pZCBhZGFwdGl2ZV9xdWFudGl6YXRpb24oUmF0ZUNvbnRyb2xDb250ZXh0ICpjb25z dCByY2MsCiAgICAgICAgICAgICBjcGx4X3N1bSA9IDAuMDAxOwogICAgIH0KIAotICAgIGZvciAo aSA9IDA7IGkgPCBzLT5tYl9udW07IGkrKykgewotICAgICAgICBjb25zdCBpbnQgbWJfeHkgPSBz LT5tYl9pbmRleDJ4eVtpXTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHMtPmMubWJfbnVtOyBp KyspIHsKKyAgICAgICAgY29uc3QgaW50IG1iX3h5ID0gcy0+Yy5tYl9pbmRleDJ4eVtpXTsKICAg ICAgICAgZmxvYXQgbmV3cSAgICAgID0gcSAqIGNwbHhfdGFiW2ldIC8gYml0c190YWJbaV07CiAg ICAgICAgIGludCBpbnRxOwogCkBAIC05MDQsMzkgKzkwMywzOSBAQCBzdGF0aWMgdm9pZCBhZGFw dGl2ZV9xdWFudGl6YXRpb24oUmF0ZUNvbnRyb2xDb250ZXh0ICpjb25zdCByY2MsCiAKIHZvaWQg ZmZfZ2V0XzJwYXNzX2Zjb2RlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1w ZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3Qg cyA9ICZtLT5zOwogICAgIGNvbnN0IFJhdGVDb250cm9sQ29udGV4dCAqcmNjID0gJm0tPnJjX2Nv bnRleHQ7Ci0gICAgY29uc3QgUmF0ZUNvbnRyb2xFbnRyeSAgICpyY2UgPSAmcmNjLT5lbnRyeVtz LT5waWN0dXJlX251bWJlcl07CisgICAgY29uc3QgUmF0ZUNvbnRyb2xFbnRyeSAgICpyY2UgPSAm cmNjLT5lbnRyeVtzLT5jLnBpY3R1cmVfbnVtYmVyXTsKIAotICAgIHMtPmZfY29kZSA9IHJjZS0+ Zl9jb2RlOwotICAgIHMtPmJfY29kZSA9IHJjZS0+Yl9jb2RlOworICAgIHMtPmMuZl9jb2RlID0g cmNlLT5mX2NvZGU7CisgICAgcy0+Yy5iX2NvZGUgPSByY2UtPmJfY29kZTsKIH0KIAogLy8gRklY TUUgcmQgb3IgYXQgbGVhc3QgYXBwcm94IGZvciBkcXVhbnQKIAogZmxvYXQgZmZfcmF0ZV9lc3Rp bWF0ZV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGludCBkcnlfcnVuKQogewot ICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAg KmNvbnN0IHMgPSAmbS0+czsKICAgICBSYXRlQ29udHJvbENvbnRleHQgKnJjYyA9ICZtLT5yY19j b250ZXh0OworICAgIEFWQ29kZWNDb250ZXh0ICpjb25zdCBhID0gcy0+Yy5hdmN0eDsKICAgICBm bG9hdCBxOwogICAgIGludCBxbWluLCBxbWF4OwogICAgIGZsb2F0IGJyX2NvbXBlbnNhdGlvbjsK ICAgICBkb3VibGUgZGlmZjsKICAgICBkb3VibGUgc2hvcnRfdGVybV9xOwogICAgIGRvdWJsZSBm cHM7Ci0gICAgaW50IHBpY3R1cmVfbnVtYmVyID0gcy0+cGljdHVyZV9udW1iZXI7CisgICAgaW50 IHBpY3R1cmVfbnVtYmVyID0gcy0+Yy5waWN0dXJlX251bWJlcjsKICAgICBpbnQ2NF90IHdhbnRl ZF9iaXRzOwotICAgIEFWQ29kZWNDb250ZXh0ICphICAgICAgID0gcy0+YXZjdHg7CiAgICAgUmF0 ZUNvbnRyb2xFbnRyeSBsb2NhbF9yY2UsICpyY2U7CiAgICAgZG91YmxlIGJpdHM7CiAgICAgZG91 YmxlIHJhdGVfZmFjdG9yOwogICAgIGludDY0X3QgdmFyOwotICAgIGNvbnN0IGludCBwaWN0X3R5 cGUgPSBzLT5waWN0X3R5cGU7CisgICAgY29uc3QgaW50IHBpY3RfdHlwZSA9IHMtPmMucGljdF90 eXBlOwogICAgIGVtbXNfYygpOwogCiAgICAgZ2V0X3FtaW5tYXgoJnFtaW4sICZxbWF4LCBtLCBw aWN0X3R5cGUpOwogCi0gICAgZnBzID0gZ2V0X2ZwcyhzLT5hdmN0eCk7CisgICAgZnBzID0gZ2V0 X2ZwcyhzLT5jLmF2Y3R4KTsKICAgICAvKiB1cGRhdGUgcHJlZGljdG9ycyAqLwogICAgIGlmIChw aWN0dXJlX251bWJlciA+IDIgJiYgIWRyeV9ydW4pIHsKICAgICAgICAgY29uc3QgaW50NjRfdCBs YXN0X3ZhciA9CkBAIC05NDksMTAgKzk0OCwxMCBAQCBmbG9hdCBmZl9yYXRlX2VzdGltYXRlX3Fz Y2FsZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgaW50IGRyeV9ydW4pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgbS0+ZnJhbWVfYml0cyAtIG0tPnN0dWZmaW5nX2JpdHMpOwogICAgIH0K IAotICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSB7CisgICAg aWYgKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMikgewogICAgICAgICBh dl9hc3NlcnQwKHBpY3R1cmVfbnVtYmVyID49IDApOwogICAgICAgICBpZiAocGljdHVyZV9udW1i ZXIgPj0gcmNjLT5udW1fZW50cmllcykgewotICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBB Vl9MT0dfRVJST1IsICJJbnB1dCBpcyBsb25nZXIgdGhhbiAyLXBhc3MgbG9nIGZpbGVcbiIpOwor ICAgICAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19FUlJPUiwgIklucHV0IGlzIGxv bmdlciB0aGFuIDItcGFzcyBsb2cgZmlsZVxuIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAg ICAgICAgIH0KICAgICAgICAgcmNlICAgICAgICAgPSAmcmNjLT5lbnRyeVtwaWN0dXJlX251bWJl cl07CkBAIC05NjUsMTcgKzk2NCwxNyBAQCBmbG9hdCBmZl9yYXRlX2VzdGltYXRlX3FzY2FsZShN UFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgaW50IGRyeV9ydW4pCiAgICAgICAgIC8qIEZJWE1F IGFkZCBhIGR0cyBmaWVsZCB0byBBVkZyYW1lIGFuZCBlbnN1cmUgaXQgaXMgc2V0IGFuZCB1c2Ug aXQKICAgICAgICAgICogaGVyZSBpbnN0ZWFkIG9mIHJlb3JkZXJpbmcgYnV0IHRoZSByZW9yZGVy aW5nIGlzIHNpbXBsZXIgZm9yIG5vdwogICAgICAgICAgKiB1bnRpbCBILjI2NCBCLXB5cmFtaWQg bXVzdCBiZSBoYW5kbGVkLiAqLwotICAgICAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RV UkVfVFlQRV9CIHx8IHMtPmxvd19kZWxheSkKLSAgICAgICAgICAgIGR0c19waWMgPSBzLT5jdXJf cGljLnB0cjsKKyAgICAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9C IHx8IHMtPmMubG93X2RlbGF5KQorICAgICAgICAgICAgZHRzX3BpYyA9IHMtPmMuY3VyX3BpYy5w dHI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGR0c19waWMgPSBzLT5sYXN0X3BpYy5wdHI7 CisgICAgICAgICAgICBkdHNfcGljID0gcy0+Yy5sYXN0X3BpYy5wdHI7CiAKICAgICAgICAgaWYg KCFkdHNfcGljIHx8IGR0c19waWMtPmYtPnB0cyA9PSBBVl9OT1BUU19WQUxVRSkKICAgICAgICAg ICAgIHdhbnRlZF9iaXRzX2RvdWJsZSA9IG0tPmJpdF9yYXRlICogKGRvdWJsZSlwaWN0dXJlX251 bWJlciAvIGZwczsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgd2FudGVkX2JpdHNfZG91Ymxl ID0gbS0+Yml0X3JhdGUgKiAoZG91YmxlKWR0c19waWMtPmYtPnB0cyAvIGZwczsKICAgICAgICAg aWYgKHdhbnRlZF9iaXRzX2RvdWJsZSA+IElOVDY0X01BWCkgewotICAgICAgICAgICAgYXZfbG9n KHMtPmF2Y3R4LCBBVl9MT0dfV0FSTklORywgIkJpdHMgZXhjZWVkIDY0Yml0IHJhbmdlXG4iKTsK KyAgICAgICAgICAgIGF2X2xvZyhzLT5jLmF2Y3R4LCBBVl9MT0dfV0FSTklORywgIkJpdHMgZXhj ZWVkIDY0Yml0IHJhbmdlXG4iKTsKICAgICAgICAgICAgIHdhbnRlZF9iaXRzID0gSU5UNjRfTUFY OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHdhbnRlZF9iaXRzID0gKGludDY0X3Qpd2Fu dGVkX2JpdHNfZG91YmxlOwpAQCAtOTg5LDEyICs5ODgsMTIgQEAgZmxvYXQgZmZfcmF0ZV9lc3Rp bWF0ZV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGludCBkcnlfcnVuKQogICAg IHZhciA9IHBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSA/IG0tPm1iX3Zhcl9zdW0gOiBt LT5tY19tYl92YXJfc3VtOwogCiAgICAgc2hvcnRfdGVybV9xID0gMDsgLyogYXZvaWQgd2Fybmlu ZyAqLwotICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSB7Cisg ICAgaWYgKHMtPmMuYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMikgewogICAgICAg ICBpZiAocGljdF90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9JKQogICAgICAgICAgICAgYXZfYXNz ZXJ0MChwaWN0X3R5cGUgPT0gcmNlLT5uZXdfcGljdF90eXBlKTsKIAogICAgICAgICBxID0gcmNl LT5uZXdfcXNjYWxlIC8gYnJfY29tcGVuc2F0aW9uOwotICAgICAgICBmZl9kbG9nKHMtPmF2Y3R4 LCAiJWYgJWYgJWYgbGFzdDolZCB2YXI6JSJQUklkNjQiIHR5cGU6JWQvL1xuIiwgcSwgcmNlLT5u ZXdfcXNjYWxlLAorICAgICAgICBmZl9kbG9nKHMtPmMuYXZjdHgsICIlZiAlZiAlZiBsYXN0OiVk IHZhcjolIlBSSWQ2NCIgdHlwZTolZC8vXG4iLCBxLCByY2UtPm5ld19xc2NhbGUsCiAgICAgICAg ICAgICAgICAgYnJfY29tcGVuc2F0aW9uLCBtLT5mcmFtZV9iaXRzLCB2YXIsIHBpY3RfdHlwZSk7 CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmNlLT5waWN0X3R5cGUgICAgID0KQEAgLTEwMDIsMTMg KzEwMDEsMTMgQEAgZmxvYXQgZmZfcmF0ZV9lc3RpbWF0ZV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRl eHQgKmNvbnN0IG0sIGludCBkcnlfcnVuKQogICAgICAgICByY2UtPm1jX21iX3Zhcl9zdW0gPSBt LT5tY19tYl92YXJfc3VtOwogICAgICAgICByY2UtPm1iX3Zhcl9zdW0gICAgPSBtLT5tYl92YXJf c3VtOwogICAgICAgICByY2UtPnFzY2FsZSAgICAgICAgPSBGRl9RUDJMQU1CREEgKiAyOwotICAg ICAgICByY2UtPmZfY29kZSAgICAgICAgPSBzLT5mX2NvZGU7Ci0gICAgICAgIHJjZS0+Yl9jb2Rl ICAgICAgICA9IHMtPmJfY29kZTsKKyAgICAgICAgcmNlLT5mX2NvZGUgICAgICAgID0gcy0+Yy5m X2NvZGU7CisgICAgICAgIHJjZS0+Yl9jb2RlICAgICAgICA9IHMtPmMuYl9jb2RlOwogICAgICAg ICByY2UtPm1pc2NfYml0cyAgICAgPSAxOwogCiAgICAgICAgIGJpdHMgPSBwcmVkaWN0X3NpemUo JnJjYy0+cHJlZFtwaWN0X3R5cGVdLCByY2UtPnFzY2FsZSwgc3FydCh2YXIpKTsKICAgICAgICAg aWYgKHBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewotICAgICAgICAgICAgcmNlLT5p X2NvdW50ICAgID0gcy0+bWJfbnVtOworICAgICAgICAgICAgcmNlLT5pX2NvdW50ICAgID0gcy0+ Yy5tYl9udW07CiAgICAgICAgICAgICByY2UtPmlfdGV4X2JpdHMgPSBiaXRzOwogICAgICAgICAg ICAgcmNlLT5wX3RleF9iaXRzID0gMDsKICAgICAgICAgICAgIHJjZS0+bXZfYml0cyAgICA9IDA7 CkBAIC0xMDUyLDggKzEwNTEsOCBAQCBmbG9hdCBmZl9yYXRlX2VzdGltYXRlX3FzY2FsZShNUFZN YWluRW5jQ29udGV4dCAqY29uc3QgbSwgaW50IGRyeV9ydW4pCiAgICAgICAgIGF2X2Fzc2VydDAo cSA+IDAuMCk7CiAgICAgfQogCi0gICAgaWYgKHMtPmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX1JD KSB7Ci0gICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0RFQlVHLAorICAgIGlmIChzLT5j LmF2Y3R4LT5kZWJ1ZyAmIEZGX0RFQlVHX1JDKSB7CisgICAgICAgIGF2X2xvZyhzLT5jLmF2Y3R4 LCBBVl9MT0dfREVCVUcsCiAgICAgICAgICAgICAgICAiJWMgcXA6JWQ8JTIuMWY8JWQgJWQgd2Fu dDolIlBSSWQ2NCIgdG90YWw6JSJQUklkNjQiIGNvbXA6JWYgc3RfcTolMi4yZiAiCiAgICAgICAg ICAgICAgICAic2l6ZTolZCB2YXI6JSJQUklkNjQiLyUiUFJJZDY0IiBicjolIlBSSWQ2NCIgZnBz OiVkXG4iLAogICAgICAgICAgICAgICAgYXZfZ2V0X3BpY3R1cmVfdHlwZV9jaGFyKHBpY3RfdHlw ZSksCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Jpc2N2L21lX2NtcF9pbml0LmMgYi9saWJhdmNv ZGVjL3Jpc2N2L21lX2NtcF9pbml0LmMKaW5kZXggZjI0NmU1NWNiMS4uZjIyZGJmZjdmNCAxMDA2 NDQKLS0tIGEvbGliYXZjb2RlYy9yaXNjdi9tZV9jbXBfaW5pdC5jCisrKyBiL2xpYmF2Y29kZWMv cmlzY3YvbWVfY21wX2luaXQuYwpAQCAtMjQsNTUgKzI0LDU1IEBACiAjaW5jbHVkZSAibGliYXZ1 dGlsL2NwdS5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9yaXNjdi9jcHUuaCIKICNpbmNsdWRlICJs aWJhdmNvZGVjL21lX2NtcC5oIgotI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgiCisj aW5jbHVkZSAibGliYXZjb2RlYy9tcGVndmlkZW9lbmMuaCIKIAotaW50IGZmX3BpeF9hYnMxNl9y dnYoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsCitpbnQgZmZfcGl4X2FiczE2X3J2dihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50 OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnM4X3J2dihNcGVn RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwK K2ludCBmZl9waXhfYWJzOF9ydnYoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4 MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRy ZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnMxNl94Ml9ydnYoTXBlZ0VuY0Nv bnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQg ZmZfcGl4X2FiczE2X3gyX3J2dihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgx LCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZf dCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9waXhfYWJzOF94Ml9ydnYoTXBlZ0VuY0NvbnRleHQg KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4 X2FiczhfeDJfcnZ2KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0 IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlk ZSwgaW50IGgpOwotaW50IGZmX3BpeF9hYnMxNl95Ml9ydnYoTXBlZ0VuY0NvbnRleHQgKnYsIGNv bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfcGl4X2FiczE2 X3kyX3J2dihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50 OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBp bnQgaCk7Ci1pbnQgZmZfcGl4X2FiczhfeTJfcnZ2KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1 aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3BpeF9hYnM4X3kyX3J2 dihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw aXgyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7 CiAKLWludCBmZl9zc2UxNl9ydnYoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBp eDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfc3NlMTZfcnZ2KE1QVkVuY0NvbnRleHQg KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAg ICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3NzZThfcnZ2KE1wZWdF bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAor aW50IGZmX3NzZThfcnZ2KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNv bnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwg aW50IGgpOwotaW50IGZmX3NzZTRfcnZ2KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90 ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3NzZTRfcnZ2KE1QVkVuY0NvbnRl eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAg ICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwogCi1pbnQgZmZfdnNzZTE2X3J2 dihNcGVnRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMy LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfdnNzZThfcnZ2KE1wZWdFbmNDb250 ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsIHB0cmRpZmZfdCBz dHJpZGUsIGludCBoKTsKLWludCBmZl92c3NlX2ludHJhMTZfcnZ2KE1wZWdFbmNDb250ZXh0ICpj LCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1teSwgcHRyZGlmZl90IHN0cmlk ZSwgaW50IGgpOwotaW50IGZmX3Zzc2VfaW50cmE4X3J2dihNcGVnRW5jQ29udGV4dCAqYywgY29u c3QgdWludDhfdCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksIHB0cmRpZmZfdCBzdHJpZGUsIGlu dCBoKTsKLWludCBmZl92c2FkMTZfcnZ2KE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90 ICpzMSwgY29uc3QgdWludDhfdCAqczIsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBm Zl92c2FkOF9ydnYoTXBlZ0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1 aW50OF90ICpzMiwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3ZzYWRfaW50cmEx Nl9ydnYoTXBlZ0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMsIGNvbnN0IHVpbnQ4X3Qg KmR1bW15LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfdnNhZF9pbnRyYThfcnZ2 KE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzLCBjb25zdCB1aW50OF90ICpkdW1t eSwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOworaW50IGZmX3Zzc2UxNl9ydnYoTVBWRW5jQ29u dGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLCBwdHJkaWZmX3Qg c3RyaWRlLCBpbnQgaCk7CitpbnQgZmZfdnNzZThfcnZ2KE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0 IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgp OworaW50IGZmX3Zzc2VfaW50cmExNl9ydnYoTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhf dCAqcywgY29uc3QgdWludDhfdCAqZHVtbXksIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKK2lu dCBmZl92c3NlX2ludHJhOF9ydnYoTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqcywg Y29uc3QgdWludDhfdCAqZHVtbXksIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKK2ludCBmZl92 c2FkMTZfcnZ2KE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50 OF90ICpzMiwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOworaW50IGZmX3ZzYWQ4X3J2dihNUFZF bmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsIHB0cmRp ZmZfdCBzdHJpZGUsIGludCBoKTsKK2ludCBmZl92c2FkX2ludHJhMTZfcnZ2KE1QVkVuY0NvbnRl eHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMsIGNvbnN0IHVpbnQ4X3QgKmR1bW15LCBwdHJkaWZmX3Qg c3RyaWRlLCBpbnQgaCk7CitpbnQgZmZfdnNhZF9pbnRyYThfcnZ2KE1QVkVuY0NvbnRleHQgKmMs IGNvbnN0IHVpbnQ4X3QgKnMsIGNvbnN0IHVpbnQ4X3QgKmR1bW15LCBwdHJkaWZmX3Qgc3RyaWRl LCBpbnQgaCk7CiBpbnQgZmZfbnNzZTE2X3J2dihpbnQgbXVsdGlwbGllciwgY29uc3QgdWludDhf dCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAogICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qg c3RyaWRlLCBpbnQgaCk7CiBpbnQgZmZfbnNzZThfcnZ2KGludCBtdWx0aXBsaWVyLCBjb25zdCB1 aW50OF90ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICAgICAgIHB0cmRp ZmZfdCBzdHJpZGUsIGludCBoKTsKIAotc3RhdGljIGludCBuc3NlMTZfcnZ2X3dyYXBwZXIoTXBl Z0VuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwKK3N0 YXRpYyBpbnQgbnNzZTE2X3J2dl93cmFwcGVyKE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4 X3QgKnMxLCBjb25zdCB1aW50OF90ICpzMiwKICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRp ZmZfdCBzdHJpZGUsIGludCBoKQogewogICAgIGlmIChjKQotICAgICAgICByZXR1cm4gZmZfbnNz ZTE2X3J2dihjLT5hdmN0eC0+bnNzZV93ZWlnaHQsIHMxLCBzMiwgc3RyaWRlLCBoKTsKKyAgICAg ICAgcmV0dXJuIGZmX25zc2UxNl9ydnYoYy0+Yy5hdmN0eC0+bnNzZV93ZWlnaHQsIHMxLCBzMiwg c3RyaWRlLCBoKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmZl9uc3NlMTZfcnZ2KDgsIHMx LCBzMiwgc3RyaWRlLCBoKTsKIH0KIAotc3RhdGljIGludCBuc3NlOF9ydnZfd3JhcHBlcihNcGVn RW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAorc3Rh dGljIGludCBuc3NlOF9ydnZfd3JhcHBlcihNUFZFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90 ICpzMSwgY29uc3QgdWludDhfdCAqczIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZm X3Qgc3RyaWRlLCBpbnQgaCkKIHsKICAgICBpZiAoYykKLSAgICAgICAgcmV0dXJuIGZmX25zc2U4 X3J2dihjLT5hdmN0eC0+bnNzZV93ZWlnaHQsIHMxLCBzMiwgc3RyaWRlLCBoKTsKKyAgICAgICAg cmV0dXJuIGZmX25zc2U4X3J2dihjLT5jLmF2Y3R4LT5uc3NlX3dlaWdodCwgczEsIHMyLCBzdHJp ZGUsIGgpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZmX25zc2U4X3J2dig4LCBzMSwgczIs IHN0cmlkZSwgaCk7CiB9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3J2MTBlbmMuYyBiL2xpYmF2 Y29kZWMvcnYxMGVuYy5jCmluZGV4IDBiNTA2NTIxMmQuLjk4NGZlMzM3OWQgMTAwNjQ0Ci0tLSBh L2xpYmF2Y29kZWMvcnYxMGVuYy5jCisrKyBiL2xpYmF2Y29kZWMvcnYxMGVuYy5jCkBAIC0zMywz MyArMzMsMzMgQEAKIAogaW50IGZmX3J2MTBfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5F bmNDb250ZXh0ICpjb25zdCBtKQogewotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0gJm0t PnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogICAgIGludCBmdWxsX2Zy YW1lPSAwOwogCiAgICAgYWxpZ25fcHV0X2JpdHMoJnMtPnBiKTsKIAogICAgIHB1dF9iaXRzKCZz LT5wYiwgMSwgMSk7ICAgICAvKiBtYXJrZXIgKi8KIAotICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwg KHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfUCkpOworICAgIHB1dF9iaXRzKCZzLT5w YiwgMSwgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9QKSk7CiAKICAgICBwdXRf Yml0cygmcy0+cGIsIDEsIDApOyAgICAgLyogbm90IFBCLW1mcmFtZSAqLwogCi0gICAgcHV0X2Jp dHMoJnMtPnBiLCA1LCBzLT5xc2NhbGUpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+Yy5x c2NhbGUpOwogCi0gICAgaWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewor ICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewogICAgICAgICAv KiBzcGVjaWZpYyBNUEVHIGxpa2UgREMgY29kaW5nIG5vdCB1c2VkICovCiAgICAgfQogICAgIC8q IGlmIG11bHRpcGxlIHBhY2tldHMgcGVyIGZyYW1lIGFyZSBzZW50LCB0aGUgcG9zaXRpb24gYXQg d2hpY2gKICAgICAgICB0byBkaXNwbGF5IHRoZSBtYWNyb2Jsb2NrcyBpcyBjb2RlZCBoZXJlICov CiAgICAgaWYoIWZ1bGxfZnJhbWUpewotICAgICAgICBpZiAocy0+bWJfd2lkdGggKiBzLT5tYl9o ZWlnaHQgPj0gKDFVIDw8IDEyKSkgewotICAgICAgICAgICAgYXZwcml2X3JlcG9ydF9taXNzaW5n X2ZlYXR1cmUocy0+YXZjdHgsICJFbmNvZGluZyBmcmFtZXMgd2l0aCAlZCAoPj0gNDA5NikgbWFj cm9ibG9ja3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ bWJfd2lkdGggKiBzLT5tYl9oZWlnaHQpOworICAgICAgICBpZiAocy0+Yy5tYl93aWR0aCAqIHMt PmMubWJfaGVpZ2h0ID49ICgxVSA8PCAxMikpIHsKKyAgICAgICAgICAgIGF2cHJpdl9yZXBvcnRf bWlzc2luZ19mZWF0dXJlKHMtPmMuYXZjdHgsICJFbmNvZGluZyBmcmFtZXMgd2l0aCAlZCAoPj0g NDA5NikgbWFjcm9ibG9ja3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+Yy5tYl93aWR0aCAqIHMtPmMubWJfaGVpZ2h0KTsKICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT1NZUyk7CiAgICAgICAgIH0KICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA2 LCAwKTsgLyogbWJfeCAqLwogICAgICAgICBwdXRfYml0cygmcy0+cGIsIDYsIDApOyAvKiBtYl95 ICovCi0gICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMTIsIHMtPm1iX3dpZHRoICogcy0+bWJfaGVp Z2h0KTsKKyAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxMiwgcy0+Yy5tYl93aWR0aCAqIHMtPmMu bWJfaGVpZ2h0KTsKICAgICB9CiAKICAgICBwdXRfYml0cygmcy0+cGIsIDMsIDApOyAgICAgLyog aWdub3JlZCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9ydjIwZW5jLmMgYi9saWJhdmNvZGVj L3J2MjBlbmMuYwppbmRleCAxYTU5ZmQ0YzcwLi5kZWE4OWM4YmU0IDEwMDY0NAotLS0gYS9saWJh dmNvZGVjL3J2MjBlbmMuYworKysgYi9saWJhdmNvZGVjL3J2MjBlbmMuYwpAQCAtMzYsMzIgKzM2 LDMyIEBACiAKIGludCBmZl9ydjIwX2VuY29kZV9waWN0dXJlX2hlYWRlcihNUFZNYWluRW5jQ29u dGV4dCAqY29uc3QgbSkKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwor ICAgIE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKIAotICAgIHB1dF9iaXRzKCZzLT5w YiwgMiwgcy0+cGljdF90eXBlKTsgLy9JIDAgdnMuIDEgPworICAgIHB1dF9iaXRzKCZzLT5wYiwg Miwgcy0+Yy5waWN0X3R5cGUpOyAvL0kgMCB2cy4gMSA/CiAgICAgcHV0X2JpdHMoJnMtPnBiLCAx LCAwKTsgICAgIC8qIHVua25vd24gYml0ICovCi0gICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBzLT5x c2NhbGUpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+Yy5xc2NhbGUpOwogCi0gICAgcHV0 X3NiaXRzKCZzLT5wYiwgOCwgcy0+cGljdHVyZV9udW1iZXIpOyAvL0ZJWE1FIHdyb25nLCBidXQg Y29ycmVjdCBpcyBub3Qga25vd24KLSAgICBzLT5tYl94PSBzLT5tYl95PSAwOworICAgIHB1dF9z Yml0cygmcy0+cGIsIDgsIHMtPmMucGljdHVyZV9udW1iZXIpOyAvL0ZJWE1FIHdyb25nLCBidXQg Y29ycmVjdCBpcyBub3Qga25vd24KKyAgICBzLT5jLm1iX3ggPSBzLT5jLm1iX3kgPSAwOwogICAg IGZmX2gyNjNfZW5jb2RlX21iYShzKTsKIAotICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+bm9f cm91bmRpbmcpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5ub19yb3VuZGluZyk7CiAK LSAgICBhdl9hc3NlcnQwKHMtPmZfY29kZSA9PSAxKTsKLSAgICBhdl9hc3NlcnQwKHMtPnVucmVz dHJpY3RlZF9tdiA9PSAwKTsKLSAgICBhdl9hc3NlcnQwKHMtPmFsdF9pbnRlcl92bGMgPT0gMCk7 Ci0gICAgYXZfYXNzZXJ0MChzLT51bXZwbHVzID09IDApOwotICAgIGF2X2Fzc2VydDAocy0+bW9k aWZpZWRfcXVhbnQ9PTEpOwotICAgIGF2X2Fzc2VydDAocy0+bG9vcF9maWx0ZXI9PTEpOworICAg IGF2X2Fzc2VydDAocy0+Yy5mX2NvZGUgPT0gMSk7CisgICAgYXZfYXNzZXJ0MChzLT5jLnVucmVz dHJpY3RlZF9tdiA9PSAwKTsKKyAgICBhdl9hc3NlcnQwKHMtPmMuYWx0X2ludGVyX3ZsYyA9PSAw KTsKKyAgICBhdl9hc3NlcnQwKHMtPmMudW12cGx1cyA9PSAwKTsKKyAgICBhdl9hc3NlcnQwKHMt PmMubW9kaWZpZWRfcXVhbnQ9PTEpOworICAgIGF2X2Fzc2VydDAocy0+Yy5sb29wX2ZpbHRlcj09 MSk7CiAKLSAgICBzLT5oMjYzX2FpYz0gcy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9J OwotICAgIGlmKHMtPmgyNjNfYWljKXsKLSAgICAgICAgcy0+eV9kY19zY2FsZV90YWJsZT0KLSAg ICAgICAgcy0+Y19kY19zY2FsZV90YWJsZT0gZmZfYWljX2RjX3NjYWxlX3RhYmxlOworICAgIHMt PmMuaDI2M19haWM9IHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JOworICAgIGlm KHMtPmMuaDI2M19haWMpeworICAgICAgICBzLT5jLnlfZGNfc2NhbGVfdGFibGUgPQorICAgICAg ICBzLT5jLmNfZGNfc2NhbGVfdGFibGUgPSBmZl9haWNfZGNfc2NhbGVfdGFibGU7CiAgICAgfWVs c2V7Ci0gICAgICAgIHMtPnlfZGNfc2NhbGVfdGFibGU9Ci0gICAgICAgIHMtPmNfZGNfc2NhbGVf dGFibGU9IGZmX21wZWcxX2RjX3NjYWxlX3RhYmxlOworICAgICAgICBzLT5jLnlfZGNfc2NhbGVf dGFibGUgPQorICAgICAgICBzLT5jLmNfZGNfc2NhbGVfdGFibGUgPSBmZl9tcGVnMV9kY19zY2Fs ZV90YWJsZTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVj L3Nub3dfZHd0LmMgYi9saWJhdmNvZGVjL3Nub3dfZHd0LmMKaW5kZXggMTI1MDU5N2VlMC4uMGYy Yjg2ZTJjYyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9zbm93X2R3dC5jCisrKyBiL2xpYmF2Y29k ZWMvc25vd19kd3QuYwpAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgZmZfc3BhdGlhbF9pZHd0KElE V1RFTEVNICpidWZmZXIsIElEV1RFTEVNICp0ZW1wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvbXBvc2l0aW9uX2NvdW50LCB5KTsKIH0K IAotc3RhdGljIGlubGluZSBpbnQgd19jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwK K3N0YXRpYyBpbmxpbmUgaW50IHdfYyhNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLCBwdHJkaWZmX3QgbGluZV9zaXplLAogICAgICAgICAg ICAgICAgICAgICAgIGludCB3LCBpbnQgaCwgaW50IHR5cGUpCiB7CiAgICAgaW50IHMsIGksIGo7 CkBAIC04MTAsMzIgKzgxMCwzMiBAQCBzdGF0aWMgaW5saW5lIGludCB3X2Moc3RydWN0IE1wZWdF bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OAogICAgIHJldHVy biBzID4+IDk7CiB9CiAKLXN0YXRpYyBpbnQgdzUzXzhfYyhzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQg KnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBs aW5lX3NpemUsIGludCBoKQorc3RhdGljIGludCB3NTNfOF9jKE1QVkVuY0NvbnRleHQgKnYsIGNv bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBsaW5lX3Np emUsIGludCBoKQogewogICAgIHJldHVybiB3X2ModiwgcGl4MSwgcGl4MiwgbGluZV9zaXplLCA4 LCBoLCAxKTsKIH0KIAotc3RhdGljIGludCB3OTdfOF9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAq diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxp bmVfc2l6ZSwgaW50IGgpCitzdGF0aWMgaW50IHc5N184X2MoTVBWRW5jQ29udGV4dCAqdiwgY29u c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6 ZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHdfYyh2LCBwaXgxLCBwaXgyLCBsaW5lX3NpemUsIDgs IGgsIDApOwogfQogCi1zdGF0aWMgaW50IHc1M18xNl9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAq diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxp bmVfc2l6ZSwgaW50IGgpCitzdGF0aWMgaW50IHc1M18xNl9jKE1QVkVuY0NvbnRleHQgKnYsIGNv bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBsaW5lX3Np emUsIGludCBoKQogewogICAgIHJldHVybiB3X2ModiwgcGl4MSwgcGl4MiwgbGluZV9zaXplLCAx NiwgaCwgMSk7CiB9CiAKLXN0YXRpYyBpbnQgdzk3XzE2X2Moc3RydWN0IE1wZWdFbmNDb250ZXh0 ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLCBwdHJkaWZmX3Qg bGluZV9zaXplLCBpbnQgaCkKK3N0YXRpYyBpbnQgdzk3XzE2X2MoTVBWRW5jQ29udGV4dCAqdiwg Y29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVf c2l6ZSwgaW50IGgpCiB7CiAgICAgcmV0dXJuIHdfYyh2LCBwaXgxLCBwaXgyLCBsaW5lX3NpemUs IDE2LCBoLCAwKTsKIH0KIAotaW50IGZmX3c1M18zMl9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAq diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxp bmVfc2l6ZSwgaW50IGgpCitpbnQgZmZfdzUzXzMyX2MoTVBWRW5jQ29udGV4dCAqdiwgY29uc3Qg dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwg aW50IGgpCiB7CiAgICAgcmV0dXJuIHdfYyh2LCBwaXgxLCBwaXgyLCBsaW5lX3NpemUsIDMyLCBo LCAxKTsKIH0KIAotaW50IGZmX3c5N18zMl9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29u c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6 ZSwgaW50IGgpCitpbnQgZmZfdzk3XzMyX2MoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhf dCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgp CiB7CiAgICAgcmV0dXJuIHdfYyh2LCBwaXgxLCBwaXgyLCBsaW5lX3NpemUsIDMyLCBoLCAwKTsK IH0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvc25vd19kd3QuaCBiL2xpYmF2Y29kZWMvc25vd19k d3QuaAppbmRleCA2ZTdkMjJjNzFhLi5iNTgwM2JjOTlhIDEwMDY0NAotLS0gYS9saWJhdmNvZGVj L3Nub3dfZHd0LmgKKysrIGIvbGliYXZjb2RlYy9zbm93X2R3dC5oCkBAIC0yNiw3ICsyNiw3IEBA CiAKICNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgogCi1zdHJ1Y3QgTXBlZ0VuY0Nv bnRleHQ7Cit0eXBlZGVmIHN0cnVjdCBNUFZFbmNDb250ZXh0IE1QVkVuY0NvbnRleHQ7CiAKIHR5 cGVkZWYgaW50IERXVEVMRU07CiB0eXBlZGVmIHNob3J0IElEV1RFTEVNOwpAQCAtMTQ0LDggKzE0 NCw4IEBAIHZvaWQgZmZfc25vd19pbm5lcl9hZGRfeWJsb2NrKGNvbnN0IHVpbnQ4X3QgKm9ibWMs IGNvbnN0IGludCBvYm1jX3N0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBzcmNfeSwgaW50IHNyY19zdHJpZGUsIHNsaWNlX2J1ZmZlciAqc2IsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgYWRkLCB1aW50OF90ICpkc3Q4KTsKIAotaW50IGZmX3c1M18z Ml9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3Qg dWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpOwotaW50IGZmX3c5N18z Ml9jKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3Qg dWludDhfdCAqcGl4MiwgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpOworaW50IGZmX3c1M18z Ml9jKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsIHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKTsKK2ludCBmZl93OTdfMzJfYyhNUFZF bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLCBw dHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCk7CiAKIHZvaWQgZmZfc3BhdGlhbF9kd3QoaW50ICpi dWZmZXIsIGludCAqdGVtcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgc3RyaWRlLAogICAg ICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgaW50IGRlY29tcG9zaXRpb25fY291bnQpOwpkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9zbm93ZW5jLmMgYi9saWJhdmNvZGVjL3Nub3dlbmMuYwppbmRl eCBmYzJhNTZhODA4Li5mOWIxMGY3ZGFiIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3Nub3dlbmMu YworKysgYi9saWJhdmNvZGVjL3Nub3dlbmMuYwpAQCAtNjEsNyArNjEsNyBAQCB0eXBlZGVmIHN0 cnVjdCBTbm93RW5jQ29udGV4dCB7CiAgICAgaW50IHNjZW5lY2hhbmdlX3RocmVzaG9sZDsKIAog ICAgIE1FQ21wQ29udGV4dCBtZWNjOwotICAgIE1QVk1haW5FbmNDb250ZXh0IG07IC8vIG5lZWRl ZCBmb3IgbW90aW9uIGVzdGltYXRpb24sIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgYW55dGhpbmcg ZWxzZSwgdGhlIGlkZWEgaXMgdG8gZXZlbnR1YWxseSBtYWtlIHRoZSBtb3Rpb24gZXN0aW1hdGlv biBpbmRlcGVuZGVudCBvZiBNcGVnRW5jQ29udGV4dCwgc28gdGhpcyB3aWxsIGJlIHJlbW92ZWQg dGhlbiAoRklYTUUvWFhYKQorICAgIE1QVk1haW5FbmNDb250ZXh0IG07IC8vIG5lZWRlZCBmb3Ig bW90aW9uIGVzdGltYXRpb24sIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgYW55dGhpbmcgZWxzZSwg dGhlIGlkZWEgaXMgdG8gZXZlbnR1YWxseSBtYWtlIHRoZSBtb3Rpb24gZXN0aW1hdGlvbiBpbmRl cGVuZGVudCBvZiBNUFZFbmNDb250ZXh0LCBzbyB0aGlzIHdpbGwgYmUgcmVtb3ZlZCB0aGVuIChG SVhNRS9YWFgpCiAgICAgTVBWUGljdHVyZSBjdXJfcGljLCBsYXN0X3BpYzsKICNkZWZpbmUgTUVf Q0FDSEVfU0laRSAxMDI0CiAgICAgdW5zaWduZWQgbWVfY2FjaGVbTUVfQ0FDSEVfU0laRV07CkBA IC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIGF2X2NvbGQgaW50IGVuY29kZV9pbml0KEFWQ29kZWND b250ZXh0ICphdmN0eCkKIHsKICAgICBTbm93RW5jQ29udGV4dCAqY29uc3QgZW5jID0gYXZjdHgt PnByaXZfZGF0YTsKICAgICBTbm93Q29udGV4dCAqY29uc3QgcyA9ICZlbmMtPmNvbTsKLSAgICBN cGVnRW5jQ29udGV4dCAqY29uc3QgbXB2ID0gJmVuYy0+bS5zOworICAgIE1QVkVuY0NvbnRleHQg KmNvbnN0IG1wdiA9ICZlbmMtPm0uczsKICAgICBpbnQgcGxhbmVfaW5kZXgsIHJldDsKICAgICBp bnQgaTsKIApAQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBlbmNvZGVfaW5p dChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgbWNmKDEyLDEyKQogCiAgICAgZmZfbWVfY21w X2luaXQoJmVuYy0+bWVjYywgYXZjdHgpOwotICAgIHJldCA9IGZmX21lX2luaXQoJm1wdi0+bWUs IGF2Y3R4LCAmZW5jLT5tZWNjLCAwKTsKKyAgICByZXQgPSBmZl9tZV9pbml0KCZtcHYtPmMubWUs IGF2Y3R4LCAmZW5jLT5tZWNjLCAwKTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJu IHJldDsKICAgICBmZl9tcGVndmlkZW9lbmNkc3BfaW5pdCgmZW5jLT5tcHZlbmNkc3AsIGF2Y3R4 KTsKQEAgLTIyNiwyMSArMjI2LDIxIEBAIHN0YXRpYyBhdl9jb2xkIGludCBlbmNvZGVfaW5pdChB VkNvZGVjQ29udGV4dCAqYXZjdHgpCiAKICAgICBzLT52ZXJzaW9uPTA7CiAKLSAgICBtcHYtPmF2 Y3R4ICAgPSBhdmN0eDsKKyAgICBtcHYtPmMuYXZjdHggICA9IGF2Y3R4OwogICAgIGVuYy0+bS5i aXRfcmF0ZSA9IGF2Y3R4LT5iaXRfcmF0ZTsKICAgICBlbmMtPm0ubG1pbiAgPSBhdmN0eC0+bWJf bG1pbjsKICAgICBlbmMtPm0ubG1heCAgPSBhdmN0eC0+bWJfbG1heDsKLSAgICBtcHYtPm1iX251 bSAgPSAoYXZjdHgtPndpZHRoICogYXZjdHgtPmhlaWdodCArIDI1NSkgLyAyNTY7IC8vIEZvciBy YXRlY29udHJvbAorICAgIG1wdi0+Yy5tYl9udW0gID0gKGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5o ZWlnaHQgKyAyNTUpIC8gMjU2OyAvLyBGb3IgcmF0ZWNvbnRyb2wKIAotICAgIG1wdi0+bWUudGVt cCAgICAgID0KLSAgICBtcHYtPm1lLnNjcmF0Y2hwYWQgPSBhdl9jYWxsb2MoYXZjdHgtPndpZHRo ICsgNjQsIDIqMTYqMipzaXplb2YodWludDhfdCkpOwotICAgIG1wdi0+c2Mub2JtY19zY3JhdGNo cGFkPSBhdl9tYWxsb2N6KE1CX1NJWkUqTUJfU0laRSoxMipzaXplb2YodWludDMyX3QpKTsKLSAg ICBtcHYtPm1lLm1hcCAgICAgICA9IGF2X21hbGxvY3ooMiAqIE1FX01BUF9TSVpFICogc2l6ZW9m KCptcHYtPm1lLm1hcCkpOwotICAgIGlmICghbXB2LT5tZS5zY3JhdGNocGFkIHx8ICFtcHYtPm1l Lm1hcCB8fCAhbXB2LT5zYy5vYm1jX3NjcmF0Y2hwYWQpCisgICAgbXB2LT5jLm1lLnRlbXAgICAg ICA9CisgICAgbXB2LT5jLm1lLnNjcmF0Y2hwYWQgPSBhdl9jYWxsb2MoYXZjdHgtPndpZHRoICsg NjQsIDIqMTYqMipzaXplb2YodWludDhfdCkpOworICAgIG1wdi0+Yy5zYy5vYm1jX3NjcmF0Y2hw YWQ9IGF2X21hbGxvY3ooTUJfU0laRSpNQl9TSVpFKjEyKnNpemVvZih1aW50MzJfdCkpOworICAg IG1wdi0+Yy5tZS5tYXAgICAgICAgPSBhdl9tYWxsb2N6KDIgKiBNRV9NQVBfU0laRSAqIHNpemVv ZigqbXB2LT5jLm1lLm1hcCkpOworICAgIGlmICghbXB2LT5jLm1lLnNjcmF0Y2hwYWQgfHwgIW1w di0+Yy5tZS5tYXAgfHwgIW1wdi0+Yy5zYy5vYm1jX3NjcmF0Y2hwYWQpCiAgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT01FTSk7Ci0gICAgbXB2LT5tZS5zY29yZV9tYXAgPSBtcHYtPm1lLm1hcCAr IE1FX01BUF9TSVpFOworICAgIG1wdi0+Yy5tZS5zY29yZV9tYXAgPSBtcHYtPmMubWUubWFwICsg TUVfTUFQX1NJWkU7CiAKLSAgICBtcHYtPm1lLm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9w ZW5hbHR5KCk7CisgICAgbXB2LT5jLm1lLm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9wZW5h bHR5KCk7CiAKICAgICBzLT5tYXhfcmVmX2ZyYW1lcyA9IGF2X2NsaXAoYXZjdHgtPnJlZnMsIDEs IE1BWF9SRUZfRlJBTUVTKTsKIApAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50 IGdldF9wZW5hbHR5X2ZhY3RvcihpbnQgbGFtYmRhLCBpbnQgbGFtYmRhMiwgaW50IHR5cGUpewog c3RhdGljIGludCBlbmNvZGVfcV9icmFuY2goU25vd0VuY0NvbnRleHQgKmVuYywgaW50IGxldmVs LCBpbnQgeCwgaW50IHkpCiB7CiAgICAgU25vd0NvbnRleHQgICAgICAqY29uc3QgcyA9ICZlbmMt PmNvbTsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJmVuYy0+bS5zLm1lOworICAg IE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmZW5jLT5tLnMuYy5tZTsKICAgICB1aW50OF90 IHBfYnVmZmVyWzEwMjRdOwogICAgIHVpbnQ4X3QgaV9idWZmZXJbMTAyNF07CiAgICAgdWludDhf dCBwX3N0YXRlW3NpemVvZihzLT5ibG9ja19zdGF0ZSldOwpAQCAtNDM1LDkgKzQzNSw5IEBAIHN0 YXRpYyBpbnQgZW5jb2RlX3FfYnJhbmNoKFNub3dFbmNDb250ZXh0ICplbmMsIGludCBsZXZlbCwg aW50IHgsIGludCB5KQogICAgIGxhc3RfbXZbMl1bMF09IGJvdHRvbS0+bXg7CiAgICAgbGFzdF9t dlsyXVsxXT0gYm90dG9tLT5teTsKIAotICAgIGVuYy0+bS5zLm1iX3N0cmlkZSA9IDI7Ci0gICAg ZW5jLT5tLnMubWJfeCA9Ci0gICAgZW5jLT5tLnMubWJfeSA9IDA7CisgICAgZW5jLT5tLnMuYy5t Yl9zdHJpZGUgPSAyOworICAgIGVuYy0+bS5zLmMubWJfeCA9CisgICAgZW5jLT5tLnMuYy5tYl95 ID0gMDsKICAgICBjLT5za2lwPSAwOwogCiAgICAgYXZfYXNzZXJ0MShjLT4gIHN0cmlkZSA9PSAg IHN0cmlkZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIGludCBlbmNvZGVfcV9icmFuY2go U25vd0VuY0NvbnRleHQgKmVuYywgaW50IGxldmVsLCBpbnQgeCwgaW50IHkpCiAgICAgYy0+cGVu YWx0eV9mYWN0b3IgICAgPSBnZXRfcGVuYWx0eV9mYWN0b3IoZW5jLT5sYW1iZGEsIGVuYy0+bGFt YmRhMiwgYy0+YXZjdHgtPm1lX2NtcCk7CiAgICAgYy0+c3ViX3BlbmFsdHlfZmFjdG9yPSBnZXRf cGVuYWx0eV9mYWN0b3IoZW5jLT5sYW1iZGEsIGVuYy0+bGFtYmRhMiwgYy0+YXZjdHgtPm1lX3N1 Yl9jbXApOwogICAgIGMtPm1iX3BlbmFsdHlfZmFjdG9yID0gZ2V0X3BlbmFsdHlfZmFjdG9yKGVu Yy0+bGFtYmRhLCBlbmMtPmxhbWJkYTIsIGMtPmF2Y3R4LT5tYl9jbXApOwotICAgIGMtPmN1cnJl bnRfbXZfcGVuYWx0eSA9IGMtPm12X3BlbmFsdHlbZW5jLT5tLnMuZl9jb2RlPTFdICsgTUFYX0RN VjsKKyAgICBjLT5jdXJyZW50X212X3BlbmFsdHkgPSBjLT5tdl9wZW5hbHR5W2VuYy0+bS5zLmMu Zl9jb2RlPTFdICsgTUFYX0RNVjsKIAogICAgIGMtPnhtaW4gPSAtIHgqYmxvY2tfdyAtIDE2KzM7 CiAgICAgYy0+eW1pbiA9IC0geSpibG9ja193IC0gMTYrMzsKQEAgLTU2OSw3ICs1NjksNyBAQCBz dGF0aWMgaW50IGVuY29kZV9xX2JyYW5jaChTbm93RW5jQ29udGV4dCAqZW5jLCBpbnQgbGV2ZWws IGludCB4LCBpbnQgeSkKICAgICAgICAgaWYgKHZhcmQgPD0gNjQgfHwgdmFyZCA8IHZhcmMpCiAg ICAgICAgICAgICBjLT5zY2VuZV9jaGFuZ2Vfc2NvcmUrPSBmZl9zcXJ0KHZhcmQpIC0gZmZfc3Fy dCh2YXJjKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYy0+c2NlbmVfY2hhbmdlX3Njb3Jl ICs9IGVuYy0+bS5zLnFzY2FsZTsKKyAgICAgICAgICAgIGMtPnNjZW5lX2NoYW5nZV9zY29yZSAr PSBlbmMtPm0ucy5jLnFzY2FsZTsKICAgICB9CiAKICAgICBpZihsZXZlbCE9cy0+YmxvY2tfbWF4 X2RlcHRoKXsKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgaW50IGdldF9kYyhTbm93RW5jQ29u dGV4dCAqZW5jLCBpbnQgbWJfeCwgaW50IG1iX3ksIGludCBwbGFuZV9pbmRleCkKICAgICBjb25z dCBpbnQgb2JtY19zdHJpZGU9IHBsYW5lX2luZGV4ID8gKDIqYmxvY2tfc2l6ZSk+PnMtPmNocm9t YV9oX3NoaWZ0IDogMipibG9ja19zaXplOwogICAgIGNvbnN0IGludCByZWZfc3RyaWRlPSBzLT5j dXJyZW50X3BpY3R1cmUtPmxpbmVzaXplW3BsYW5lX2luZGV4XTsKICAgICBjb25zdCB1aW50OF90 ICpzcmMgPSBzLT5pbnB1dF9waWN0dXJlLT5kYXRhW3BsYW5lX2luZGV4XTsKLSAgICBJRFdURUxF TSAqZHN0PSAoSURXVEVMRU0qKWVuYy0+bS5zLnNjLm9ibWNfc2NyYXRjaHBhZCArIHBsYW5lX2lu ZGV4KmJsb2NrX3NpemUqYmxvY2tfc2l6ZSo0OyAvL0ZJWE1FIGNoYW5nZSB0byB1bnNpZ25lZAor ICAgIElEV1RFTEVNICpkc3Q9IChJRFdURUxFTSopZW5jLT5tLnMuYy5zYy5vYm1jX3NjcmF0Y2hw YWQgKyBwbGFuZV9pbmRleCpibG9ja19zaXplKmJsb2NrX3NpemUqNDsgLy9GSVhNRSBjaGFuZ2Ug dG8gdW5zaWduZWQKICAgICBjb25zdCBpbnQgYl9zdHJpZGUgPSBzLT5iX3dpZHRoIDw8IHMtPmJs b2NrX21heF9kZXB0aDsKICAgICBjb25zdCBpbnQgdz0gcC0+d2lkdGg7CiAgICAgY29uc3QgaW50 IGg9IHAtPmhlaWdodDsKQEAgLTc3MCw3ICs3NzAsNyBAQCBzdGF0aWMgaW50IGdldF9ibG9ja19y ZChTbm93RW5jQ29udGV4dCAqZW5jLCBpbnQgbWJfeCwgaW50IG1iX3ksCiAgICAgY29uc3QgaW50 IHJlZl9zdHJpZGU9IHMtPmN1cnJlbnRfcGljdHVyZS0+bGluZXNpemVbcGxhbmVfaW5kZXhdOwog ICAgIHVpbnQ4X3QgKmRzdD0gcy0+Y3VycmVudF9waWN0dXJlLT5kYXRhW3BsYW5lX2luZGV4XTsK ICAgICBjb25zdCB1aW50OF90ICpzcmMgPSBzLT5pbnB1dF9waWN0dXJlLT5kYXRhW3BsYW5lX2lu ZGV4XTsKLSAgICBJRFdURUxFTSAqcHJlZD0gKElEV1RFTEVNKillbmMtPm0ucy5zYy5vYm1jX3Nj cmF0Y2hwYWQgKyBwbGFuZV9pbmRleCpibG9ja19zaXplKmJsb2NrX3NpemUqNDsKKyAgICBJRFdU RUxFTSAqcHJlZD0gKElEV1RFTEVNKillbmMtPm0ucy5jLnNjLm9ibWNfc2NyYXRjaHBhZCArIHBs YW5lX2luZGV4KmJsb2NrX3NpemUqYmxvY2tfc2l6ZSo0OwogICAgIHVpbnQ4X3QgKmN1ciA9IHMt PnNjcmF0Y2hidWY7CiAgICAgdWludDhfdCAqdG1wID0gcy0+ZW11X2VkZ2VfYnVmZmVyOwogICAg IGNvbnN0IGludCBiX3N0cmlkZSA9IHMtPmJfd2lkdGggPDwgcy0+YmxvY2tfbWF4X2RlcHRoOwpA QCAtODQwLDEyICs4NDAsMTIgQEAgc3RhdGljIGludCBnZXRfYmxvY2tfcmQoU25vd0VuY0NvbnRl eHQgKmVuYywgaW50IG1iX3gsIGludCBtYl95LAogICAgICAgICAgICAgZGlzdG9ydGlvbiA9IDA7 CiAgICAgICAgICAgICBmb3IoaT0wOyBpPDQ7IGkrKyl7CiAgICAgICAgICAgICAgICAgaW50IG9m ZiA9IHN4KzE2KihpJjEpICsgKHN5KzE2KihpPj4xKSkqcmVmX3N0cmlkZTsKLSAgICAgICAgICAg ICAgICBkaXN0b3J0aW9uICs9IGVuYy0+bS5zLm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyAr IG9mZiwgZHN0ICsgb2ZmLCByZWZfc3RyaWRlLCAxNik7CisgICAgICAgICAgICAgICAgZGlzdG9y dGlvbiArPSBlbmMtPm0ucy5jLm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyArIG9mZiwgZHN0 ICsgb2ZmLCByZWZfc3RyaWRlLCAxNik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9 ZWxzZXsKICAgICAgICAgYXZfYXNzZXJ0MihibG9ja193PT04KTsKLSAgICAgICAgZGlzdG9ydGlv biA9IGVuYy0+bS5zLm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyArIHN4ICsgc3kqcmVmX3N0 cmlkZSwgZHN0ICsgc3ggKyBzeSpyZWZfc3RyaWRlLCByZWZfc3RyaWRlLCBibG9ja193KjIpOwor ICAgICAgICBkaXN0b3J0aW9uID0gZW5jLT5tLnMuYy5tZS5tZV9jbXBbMF0oJmVuYy0+bS5zLCBz cmMgKyBzeCArIHN5KnJlZl9zdHJpZGUsIGRzdCArIHN4ICsgc3kqcmVmX3N0cmlkZSwgcmVmX3N0 cmlkZSwgYmxvY2tfdyoyKTsKICAgICB9CiAKICAgICBpZihwbGFuZV9pbmRleD09MCl7CkBAIC05 MTEsNyArOTExLDcgQEAgc3RhdGljIGludCBnZXRfNGJsb2NrX3JkKFNub3dFbmNDb250ZXh0ICpl bmMsIGludCBtYl94LCBpbnQgbWJfeSwgaW50IHBsYW5lX2luZGUKICAgICAgICAgfQogCiAgICAg ICAgIGF2X2Fzc2VydDEoYmxvY2tfdz09IDggfHwgYmxvY2tfdz09MTYpOwotICAgICAgICBkaXN0 b3J0aW9uICs9IGVuYy0+bS5zLm1lLm1lX2NtcFtibG9ja193PT04XSgmZW5jLT5tLnMsIHNyYyAr IHggKyB5KnJlZl9zdHJpZGUsIGRzdCArIHggKyB5KnJlZl9zdHJpZGUsIHJlZl9zdHJpZGUsIGJs b2NrX2gpOworICAgICAgICBkaXN0b3J0aW9uICs9IGVuYy0+bS5zLmMubWUubWVfY21wW2Jsb2Nr X3c9PThdKCZlbmMtPm0ucywgc3JjICsgeCArIHkqcmVmX3N0cmlkZSwgZHN0ICsgeCArIHkqcmVm X3N0cmlkZSwgcmVmX3N0cmlkZSwgYmxvY2tfaCk7CiAgICAgfQogCiAgICAgaWYocGxhbmVfaW5k ZXg9PTApewpAQCAtMTc1OSw3ICsxNzU5LDcgQEAgc3RhdGljIGludCBlbmNvZGVfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqcGt0LAogewogICAgIFNub3dFbmNDb250ZXh0 ICpjb25zdCBlbmMgPSBhdmN0eC0+cHJpdl9kYXRhOwogICAgIFNub3dDb250ZXh0ICpjb25zdCBz ID0gJmVuYy0+Y29tOwotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBtcHYgPSAmZW5jLT5tLnM7 CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgbXB2ID0gJmVuYy0+bS5zOwogICAgIFJhbmdlQ29k ZXIgKiBjb25zdCBjPSAmcy0+YzsKICAgICBBVkNvZGVjSW50ZXJuYWwgKmF2Y2kgPSBhdmN0eC0+ aW50ZXJuYWw7CiAgICAgQVZGcmFtZSAqcGljOwpAQCAtMTc5Myw5ICsxNzkzLDkgQEAgc3RhdGlj IGludCBlbmNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqcGt0LAog ICAgIHBpYy0+cGljdF90eXBlID0gcGljdC0+cGljdF90eXBlOwogICAgIHBpYy0+cXVhbGl0eSA9 IHBpY3QtPnF1YWxpdHk7CiAKLSAgICBtcHYtPnBpY3R1cmVfbnVtYmVyID0gYXZjdHgtPmZyYW1l X251bTsKKyAgICBtcHYtPmMucGljdHVyZV9udW1iZXIgPSBhdmN0eC0+ZnJhbWVfbnVtOwogICAg IGlmKGF2Y3R4LT5mbGFncyZBVl9DT0RFQ19GTEFHX1BBU1MyKXsKLSAgICAgICAgbXB2LT5waWN0 X3R5cGUgPSBwaWMtPnBpY3RfdHlwZSA9IGVuYy0+bS5yY19jb250ZXh0LmVudHJ5W2F2Y3R4LT5m cmFtZV9udW1dLm5ld19waWN0X3R5cGU7CisgICAgICAgIG1wdi0+Yy5waWN0X3R5cGUgPSBwaWMt PnBpY3RfdHlwZSA9IGVuYy0+bS5yY19jb250ZXh0LmVudHJ5W2F2Y3R4LT5mcmFtZV9udW1dLm5l d19waWN0X3R5cGU7CiAgICAgICAgIHMtPmtleWZyYW1lID0gcGljLT5waWN0X3R5cGUgPT0gQVZf UElDVFVSRV9UWVBFX0k7CiAgICAgICAgIGlmKCEoYXZjdHgtPmZsYWdzJkFWX0NPREVDX0ZMQUdf UVNDQUxFKSkgewogICAgICAgICAgICAgcGljLT5xdWFsaXR5ID0gZmZfcmF0ZV9lc3RpbWF0ZV9x c2NhbGUoJmVuYy0+bSwgMCk7CkBAIC0xODA0LDcgKzE4MDQsNyBAQCBzdGF0aWMgaW50IGVuY29k ZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAgICAgICAgIH0K ICAgICB9ZWxzZXsKICAgICAgICAgcy0+a2V5ZnJhbWU9IGF2Y3R4LT5nb3Bfc2l6ZT09MCB8fCBh dmN0eC0+ZnJhbWVfbnVtICUgYXZjdHgtPmdvcF9zaXplID09IDA7Ci0gICAgICAgIG1wdi0+cGlj dF90eXBlID0gcGljLT5waWN0X3R5cGUgPSBzLT5rZXlmcmFtZSA/IEFWX1BJQ1RVUkVfVFlQRV9J IDogQVZfUElDVFVSRV9UWVBFX1A7CisgICAgICAgIG1wdi0+Yy5waWN0X3R5cGUgPSBwaWMtPnBp Y3RfdHlwZSA9IHMtPmtleWZyYW1lID8gQVZfUElDVFVSRV9UWVBFX0kgOiBBVl9QSUNUVVJFX1RZ UEVfUDsKICAgICB9CiAKICAgICBpZiAoZW5jLT5wYXNzMV9yYyAmJiBhdmN0eC0+ZnJhbWVfbnVt ID09IDApCkBAIC0xODQxLDkgKzE4NDEsOSBAQCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAgICAgaWYgKHJldCA8IDApCiAgICAg ICAgIHJldHVybiByZXQ7CiAKLSAgICBtcHYtPmN1cl9waWMucHRyICAgICAgICAgPSAmZW5jLT5j dXJfcGljOwotICAgIG1wdi0+Y3VyX3BpYy5wdHItPmYgICAgICA9IHMtPmN1cnJlbnRfcGljdHVy ZTsKLSAgICBtcHYtPmN1cl9waWMucHRyLT5mLT5wdHMgPSBwaWN0LT5wdHM7CisgICAgbXB2LT5j LmN1cl9waWMucHRyICAgICAgICAgPSAmZW5jLT5jdXJfcGljOworICAgIG1wdi0+Yy5jdXJfcGlj LnB0ci0+ZiAgICAgID0gcy0+Y3VycmVudF9waWN0dXJlOworICAgIG1wdi0+Yy5jdXJfcGljLnB0 ci0+Zi0+cHRzID0gcGljdC0+cHRzOwogICAgIGlmKHBpYy0+cGljdF90eXBlID09IEFWX1BJQ1RV UkVfVFlQRV9QKXsKICAgICAgICAgaW50IGJsb2NrX3dpZHRoID0gKHdpZHRoICsxNSk+PjQ7CiAg ICAgICAgIGludCBibG9ja19oZWlnaHQ9IChoZWlnaHQrMTUpPj40OwpAQCAtMTg1MiwzNSArMTg1 MiwzNSBAQCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFW UGFja2V0ICpwa3QsCiAgICAgICAgIGF2X2Fzc2VydDAocy0+Y3VycmVudF9waWN0dXJlLT5kYXRh WzBdKTsKICAgICAgICAgYXZfYXNzZXJ0MChzLT5sYXN0X3BpY3R1cmVbMF0tPmRhdGFbMF0pOwog Ci0gICAgICAgIG1wdi0+YXZjdHggPSBzLT5hdmN0eDsKLSAgICAgICAgbXB2LT5sYXN0X3BpYy5w dHIgICAgPSAmZW5jLT5sYXN0X3BpYzsKLSAgICAgICAgbXB2LT5sYXN0X3BpYy5wdHItPmYgPSBz LT5sYXN0X3BpY3R1cmVbMF07CisgICAgICAgIG1wdi0+Yy5hdmN0eCA9IHMtPmF2Y3R4OworICAg ICAgICBtcHYtPmMubGFzdF9waWMucHRyICAgID0gJmVuYy0+bGFzdF9waWM7CisgICAgICAgIG1w di0+Yy5sYXN0X3BpYy5wdHItPmYgPSBzLT5sYXN0X3BpY3R1cmVbMF07CiAgICAgICAgIG1wdi0+ IG5ld19waWMgICAgID0gcy0+aW5wdXRfcGljdHVyZTsKLSAgICAgICAgbXB2LT5saW5lc2l6ZSAg ID0gc3RyaWRlOwotICAgICAgICBtcHYtPnV2bGluZXNpemUgPSBzLT5jdXJyZW50X3BpY3R1cmUt PmxpbmVzaXplWzFdOwotICAgICAgICBtcHYtPndpZHRoICAgICAgPSB3aWR0aDsKLSAgICAgICAg bXB2LT5oZWlnaHQgICAgID0gaGVpZ2h0OwotICAgICAgICBtcHYtPm1iX3dpZHRoICAgPSBibG9j a193aWR0aDsKLSAgICAgICAgbXB2LT5tYl9oZWlnaHQgID0gYmxvY2tfaGVpZ2h0OwotICAgICAg ICBtcHYtPm1iX3N0cmlkZSAgPSAgICAgbXB2LT5tYl93aWR0aCArIDE7Ci0gICAgICAgIG1wdi0+ Yjhfc3RyaWRlICA9IDIgKiBtcHYtPm1iX3dpZHRoICsgMTsKLSAgICAgICAgbXB2LT5mX2NvZGUg ICAgID0gMTsKLSAgICAgICAgbXB2LT5waWN0X3R5cGUgID0gcGljLT5waWN0X3R5cGU7Ci0gICAg ICAgIG1wdi0+bWUubW90aW9uX2VzdCA9IGVuYy0+bW90aW9uX2VzdDsKLSAgICAgICAgbXB2LT5t ZS5zY2VuZV9jaGFuZ2Vfc2NvcmUgPSAwOwotICAgICAgICBtcHYtPm1lLmRpYV9zaXplID0gYXZj dHgtPmRpYV9zaXplOwotICAgICAgICBtcHYtPnF1YXJ0ZXJfc2FtcGxlICA9IChzLT5hdmN0eC0+ ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FQRUwpIT0wOwotICAgICAgICBtcHYtPm91dF9mb3JtYXQg ICAgICA9IEZNVF9IMjYzOwotICAgICAgICBtcHYtPnVucmVzdHJpY3RlZF9tdiA9IDE7Ci0KLSAg ICAgICAgbXB2LT5sYW1iZGEgPSBlbmMtPmxhbWJkYTsKLSAgICAgICAgbXB2LT5xc2NhbGUgPSAo bXB2LT5sYW1iZGEqMTM5ICsgRkZfTEFNQkRBX1NDQUxFKjY0KSA+PiAoRkZfTEFNQkRBX1NISUZU ICsgNyk7Ci0gICAgICAgIGVuYy0+bGFtYmRhMiAgPSBtcHYtPmxhbWJkYTIgPSAobXB2LT5sYW1i ZGEqbXB2LT5sYW1iZGEgKyBGRl9MQU1CREFfU0NBTEUvMikgPj4gRkZfTEFNQkRBX1NISUZUOwot Ci0gICAgICAgIG1wdi0+cWRzcCA9IGVuYy0+cWRzcDsgLy9tb3ZlCi0gICAgICAgIG1wdi0+aGRz cCA9IHMtPmhkc3A7CisgICAgICAgIG1wdi0+Yy5saW5lc2l6ZSAgID0gc3RyaWRlOworICAgICAg ICBtcHYtPmMudXZsaW5lc2l6ZSA9IHMtPmN1cnJlbnRfcGljdHVyZS0+bGluZXNpemVbMV07Cisg ICAgICAgIG1wdi0+Yy53aWR0aCAgICAgID0gd2lkdGg7CisgICAgICAgIG1wdi0+Yy5oZWlnaHQg ICAgID0gaGVpZ2h0OworICAgICAgICBtcHYtPmMubWJfd2lkdGggICA9IGJsb2NrX3dpZHRoOwor ICAgICAgICBtcHYtPmMubWJfaGVpZ2h0ICA9IGJsb2NrX2hlaWdodDsKKyAgICAgICAgbXB2LT5j Lm1iX3N0cmlkZSAgPSAgICAgbXB2LT5jLm1iX3dpZHRoICsgMTsKKyAgICAgICAgbXB2LT5jLmI4 X3N0cmlkZSAgPSAyICogbXB2LT5jLm1iX3dpZHRoICsgMTsKKyAgICAgICAgbXB2LT5jLmZfY29k ZSAgICAgPSAxOworICAgICAgICBtcHYtPmMucGljdF90eXBlICA9IHBpYy0+cGljdF90eXBlOwor ICAgICAgICBtcHYtPmMubWUubW90aW9uX2VzdCA9IGVuYy0+bW90aW9uX2VzdDsKKyAgICAgICAg bXB2LT5jLm1lLnNjZW5lX2NoYW5nZV9zY29yZSA9IDA7CisgICAgICAgIG1wdi0+Yy5tZS5kaWFf c2l6ZSA9IGF2Y3R4LT5kaWFfc2l6ZTsKKyAgICAgICAgbXB2LT5jLnF1YXJ0ZXJfc2FtcGxlICA9 IChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FQRUwpIT0wOworICAgICAgICBtcHYt PmMub3V0X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7CisgICAgICAgIG1wdi0+Yy51bnJlc3RyaWN0 ZWRfbXYgPSAxOworCisgICAgICAgIG1wdi0+Yy5sYW1iZGEgPSBlbmMtPmxhbWJkYTsKKyAgICAg ICAgbXB2LT5jLnFzY2FsZSA9IChtcHYtPmMubGFtYmRhKjEzOSArIEZGX0xBTUJEQV9TQ0FMRSo2 NCkgPj4gKEZGX0xBTUJEQV9TSElGVCArIDcpOworICAgICAgICBlbmMtPmxhbWJkYTIgID0gbXB2 LT5jLmxhbWJkYTIgPSAobXB2LT5jLmxhbWJkYSptcHYtPmMubGFtYmRhICsgRkZfTEFNQkRBX1ND QUxFLzIpID4+IEZGX0xBTUJEQV9TSElGVDsKKworICAgICAgICBtcHYtPmMucWRzcCA9IGVuYy0+ cWRzcDsgLy9tb3ZlCisgICAgICAgIG1wdi0+Yy5oZHNwID0gcy0+aGRzcDsKICAgICAgICAgZmZf bWVfaW5pdF9waWMobXB2KTsKLSAgICAgICAgcy0+aGRzcCA9IG1wdi0+aGRzcDsKKyAgICAgICAg cy0+aGRzcCA9IG1wdi0+Yy5oZHNwOwogICAgIH0KIAogICAgIGlmIChlbmMtPnBhc3MxX3JjKSB7 CkBAIC0xOTAxLDcgKzE5MDEsNyBAQCByZWRvX2ZyYW1lOgogICAgICAgICByZXR1cm4gQVZFUlJP UihFSU5WQUwpOwogICAgIH0KIAotICAgIG1wdi0+cGljdF90eXBlID0gcGljLT5waWN0X3R5cGU7 CisgICAgbXB2LT5jLnBpY3RfdHlwZSA9IHBpYy0+cGljdF90eXBlOwogICAgIHMtPnFiaWFzID0g cGljLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1AgPyAyIDogMDsKIAogICAgIGZmX3Nu b3dfY29tbW9uX2luaXRfYWZ0ZXJfaGVhZGVyKGF2Y3R4KTsKQEAgLTE5MzcsNyArMTkzNyw3IEBA IHJlZG9fZnJhbWU6CiAgICAgICAgICAgICBpZiggICBwbGFuZV9pbmRleD09MAogICAgICAgICAg ICAgICAgJiYgcGljLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1AKICAgICAgICAgICAg ICAgICYmICEoYXZjdHgtPmZsYWdzJkFWX0NPREVDX0ZMQUdfUEFTUzIpCi0gICAgICAgICAgICAg ICAmJiBtcHYtPm1lLnNjZW5lX2NoYW5nZV9zY29yZSA+IGVuYy0+c2NlbmVjaGFuZ2VfdGhyZXNo b2xkKSB7CisgICAgICAgICAgICAgICAmJiBtcHYtPmMubWUuc2NlbmVfY2hhbmdlX3Njb3JlID4g ZW5jLT5zY2VuZWNoYW5nZV90aHJlc2hvbGQpIHsKICAgICAgICAgICAgICAgICBmZl9pbml0X3Jh bmdlX2VuY29kZXIoYywgcGt0LT5kYXRhLCBwa3QtPnNpemUpOwogICAgICAgICAgICAgICAgIGZm X2J1aWxkX3JhY19zdGF0ZXMoYywgKDFMTDw8MzIpLzIwLCAyNTYtOCk7CiAgICAgICAgICAgICAg ICAgcGljLT5waWN0X3R5cGU9IEFWX1BJQ1RVUkVfVFlQRV9JOwpAQCAtMjA1OCw3ICsyMDU4LDcg QEAgcmVkb19mcmFtZToKICAgICB9CiAgICAgaWYoYXZjdHgtPmZsYWdzJkFWX0NPREVDX0ZMQUdf UEFTUzEpCiAgICAgICAgIGZmX3dyaXRlX3Bhc3MxX3N0YXRzKCZlbmMtPm0pOwotICAgIGVuYy0+ bS5sYXN0X3BpY3RfdHlwZSA9IG1wdi0+cGljdF90eXBlOworICAgIGVuYy0+bS5sYXN0X3BpY3Rf dHlwZSA9IG1wdi0+Yy5waWN0X3R5cGU7CiAKICAgICBlbW1zX2MoKTsKIApAQCAtMjA5MiwxMCAr MjA5MiwxMCBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2VuZChBVkNvZGVjQ29udGV4dCAq YXZjdHgpCiAgICAgICAgIGF2X2ZyZWVwKCZzLT5yZWZfc2NvcmVzW2ldKTsKICAgICB9CiAKLSAg ICBlbmMtPm0ucy5tZS50ZW1wID0gTlVMTDsKLSAgICBhdl9mcmVlcCgmZW5jLT5tLnMubWUuc2Ny YXRjaHBhZCk7Ci0gICAgYXZfZnJlZXAoJmVuYy0+bS5zLm1lLm1hcCk7Ci0gICAgYXZfZnJlZXAo JmVuYy0+bS5zLnNjLm9ibWNfc2NyYXRjaHBhZCk7CisgICAgZW5jLT5tLnMuYy5tZS50ZW1wID0g TlVMTDsKKyAgICBhdl9mcmVlcCgmZW5jLT5tLnMuYy5tZS5zY3JhdGNocGFkKTsKKyAgICBhdl9m cmVlcCgmZW5jLT5tLnMuYy5tZS5tYXApOworICAgIGF2X2ZyZWVwKCZlbmMtPm0ucy5jLnNjLm9i bWNfc2NyYXRjaHBhZCk7CiAKICAgICBhdl9mcmVlcCgmYXZjdHgtPnN0YXRzX291dCk7CiAKZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvc3BlZWRocWVuYy5jIGIvbGliYXZjb2RlYy9zcGVlZGhxZW5j LmMKaW5kZXggMWUyODcwMmYxOC4uN2RkZmI5MjA3NiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9z cGVlZGhxZW5jLmMKKysrIGIvbGliYXZjb2RlYy9zcGVlZGhxZW5jLmMKQEAgLTk4LDkgKzk4LDkg QEAgc3RhdGljIGF2X2NvbGQgdm9pZCBzcGVlZGhxX2luaXRfc3RhdGljX2RhdGEodm9pZCkKIHN0 YXRpYyBpbnQgc3BlZWRocV9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVuY0NvbnRleHQg KmNvbnN0IG0pCiB7CiAgICAgU3BlZWRIUUVuY0NvbnRleHQgKmNvbnN0IGN0eCA9IChTcGVlZEhR RW5jQ29udGV4dCopbTsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAg IE1QVkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKIAotICAgIHB1dF9iaXRzX2xlKCZzLT5w YiwgOCwgMTAwIC0gcy0+cXNjYWxlICogMik7ICAvKiBGSVhNRSB3aHkgZG91YmxlZCAqLworICAg IHB1dF9iaXRzX2xlKCZzLT5wYiwgOCwgMTAwIC0gcy0+Yy5xc2NhbGUgKiAyKTsgIC8qIEZJWE1F IHdoeSBkb3VibGVkICovCiAgICAgcHV0X2JpdHNfbGUoJnMtPnBiLCAyNCwgNCk7ICAvKiBubyBz ZWNvbmQgZmllbGQgKi8KIAogICAgIGN0eC0+c2xpY2Vfc3RhcnQgPSA0OwpAQCAtMTEwLDcgKzEx MCw3IEBAIHN0YXRpYyBpbnQgc3BlZWRocV9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVu Y0NvbnRleHQgKmNvbnN0IG0pCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgZmZfc3BlZWRocV9l bmRfc2xpY2UoTXBlZ0VuY0NvbnRleHQgKnMpCit2b2lkIGZmX3NwZWVkaHFfZW5kX3NsaWNlKE1Q VkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7CiAgICAgU3BlZWRIUUVuY0NvbnRleHQgKmN0eCA9IChT cGVlZEhRRW5jQ29udGV4dCopczsKICAgICBpbnQgc2xpY2VfbGVuOwpAQCAtMTU4LDcgKzE1OCw3 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVfZGMoUHV0Qml0Q29udGV4dCAqcGIsIGludCBk aWZmLCBpbnQgY29tcG9uZW50KQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlX2Jsb2Nr KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCitzdGF0aWMgdm9pZCBl bmNvZGVfYmxvY2soTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29uc3QgaW50MTZfdCBibG9ja1td LCBpbnQgbikKIHsKICAgICBpbnQgYWxldmVsLCBsZXZlbCwgbGFzdF9ub25femVybywgZGMsIGks IGosIHJ1biwgbGFzdF9pbmRleCwgc2lnbjsKICAgICBpbnQgY29kZTsKQEAgLTE2NywxNiArMTY3 LDE2IEBAIHN0YXRpYyB2b2lkIGVuY29kZV9ibG9jayhNcGVnRW5jQ29udGV4dCAqcywgaW50MTZf dCAqYmxvY2ssIGludCBuKQogICAgIC8qIERDIGNvZWYgKi8KICAgICBjb21wb25lbnQgPSAobiA8 PSAzID8gMCA6IChuJjEpICsgMSk7CiAgICAgZGMgPSBibG9ja1swXTsgLyogb3ZlcmZsb3cgaXMg aW1wb3NzaWJsZSAqLwotICAgIHZhbCA9IHMtPmxhc3RfZGNbY29tcG9uZW50XSAtIGRjOyAgLyog b3Bwb3NpdGUgb2YgbW9zdCBjb2RlY3MgKi8KKyAgICB2YWwgPSBzLT5jLmxhc3RfZGNbY29tcG9u ZW50XSAtIGRjOyAgLyogb3Bwb3NpdGUgb2YgbW9zdCBjb2RlY3MgKi8KICAgICBlbmNvZGVfZGMo JnMtPnBiLCB2YWwsIGNvbXBvbmVudCk7Ci0gICAgcy0+bGFzdF9kY1tjb21wb25lbnRdID0gZGM7 CisgICAgcy0+Yy5sYXN0X2RjW2NvbXBvbmVudF0gPSBkYzsKIAogICAgIC8qIG5vdyBxdWFudGlm eSAmIGVuY29kZSBBQyBjb2VmcyAqLwogICAgIGxhc3Rfbm9uX3plcm8gPSAwOwotICAgIGxhc3Rf aW5kZXggPSBzLT5ibG9ja19sYXN0X2luZGV4W25dOworICAgIGxhc3RfaW5kZXggPSBzLT5jLmJs b2NrX2xhc3RfaW5kZXhbbl07CiAKICAgICBmb3IgKGkgPSAxOyBpIDw9IGxhc3RfaW5kZXg7IGkr KykgewotICAgICAgICBqICAgICA9IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOwor ICAgICAgICBqICAgICA9IHMtPmMuaW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CiAgICAg ICAgIGxldmVsID0gYmxvY2tbal07CiAKICAgICAgICAgLyogZW5jb2RlIHVzaW5nIFZMQyAqLwpA QCAtMjA3LDE0ICsyMDcsMTQgQEAgc3RhdGljIHZvaWQgZW5jb2RlX2Jsb2NrKE1wZWdFbmNDb250 ZXh0ICpzLCBpbnQxNl90ICpibG9jaywgaW50IG4pCiAgICAgcHV0X2JpdHNfbGUoJnMtPnBiLCA0 LCA2KTsKIH0KIAotc3RhdGljIHZvaWQgc3BlZWRocV9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQg KmNvbnN0IHMsIGludDE2X3QgYmxvY2tbMTJdWzY0XSwKK3N0YXRpYyB2b2lkIHNwZWVkaHFfZW5j b2RlX21iKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbMTJdWzY0XSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1bnVzZWRfeCwgaW50IHVudXNlZF95KQog ewogICAgIGludCBpOwogICAgIGZvcihpPTA7aTw2O2krKykgewogICAgICAgICBlbmNvZGVfYmxv Y2socywgYmxvY2tbaV0sIGkpOwogICAgIH0KLSAgICBpZiAocy0+Y2hyb21hX2Zvcm1hdCA9PSBD SFJPTUFfNDQ0KSB7CisgICAgaWYgKHMtPmMuY2hyb21hX2Zvcm1hdCA9PSBDSFJPTUFfNDQ0KSB7 CiAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9ja1s4XSwgOCk7CiAgICAgICAgIGVuY29kZV9i bG9jayhzLCBibG9ja1s5XSwgOSk7CiAKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgdm9pZCBz cGVlZGhxX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1sx Ml1bNjRdLAogCiAgICAgICAgIGVuY29kZV9ibG9jayhzLCBibG9ja1sxMF0sIDEwKTsKICAgICAg ICAgZW5jb2RlX2Jsb2NrKHMsIGJsb2NrWzExXSwgMTEpOwotICAgIH0gZWxzZSBpZiAocy0+Y2hy b21hX2Zvcm1hdCA9PSBDSFJPTUFfNDIyKSB7CisgICAgfSBlbHNlIGlmIChzLT5jLmNocm9tYV9m b3JtYXQgPT0gQ0hST01BXzQyMikgewogICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbNl0s IDYpOwogICAgICAgICBlbmNvZGVfYmxvY2socywgYmxvY2tbN10sIDcpOwogICAgIH0KQEAgLTIz NSw3ICsyMzUsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgc3BlZWRocV9lbmNvZGVfaW5pdChBVkNv ZGVjQ29udGV4dCAqYXZjdHgpCiB7CiAgICAgc3RhdGljIEFWT25jZSBpbml0X3N0YXRpY19vbmNl ID0gQVZfT05DRV9JTklUOwogICAgIE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtID0gYXZjdHgt PnByaXZfZGF0YTsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOworICAgIE1Q VkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKICAgICBpbnQgcmV0OwogCiAgICAgaWYgKGF2 Y3R4LT53aWR0aCA+IDY1NTAwIHx8IGF2Y3R4LT5oZWlnaHQgPiA2NTUwMCkgewpAQCAtMjc0LDgg KzI3NCw4IEBAIHN0YXRpYyBhdl9jb2xkIGludCBzcGVlZGhxX2VuY29kZV9pbml0KEFWQ29kZWND b250ZXh0ICphdmN0eCkKICAgICBzLT5pbnRyYV9jaHJvbWFfYWNfdmxjX2xlbmd0aCAgICAgID0K ICAgICBzLT5pbnRyYV9jaHJvbWFfYWNfdmxjX2xhc3RfbGVuZ3RoID0gdW5pX3NwZWVkaHFfYWNf dmxjX2xlbjsKIAotICAgIHMtPnlfZGNfc2NhbGVfdGFibGUgPQotICAgIHMtPmNfZGNfc2NhbGVf dGFibGUgPSBmZl9tcGVnMTJfZGNfc2NhbGVfdGFibGVbM107CisgICAgcy0+Yy55X2RjX3NjYWxl X3RhYmxlID0KKyAgICBzLT5jLmNfZGNfc2NhbGVfdGFibGUgPSBmZl9tcGVnMTJfZGNfc2NhbGVf dGFibGVbM107CiAKICAgICByZXQgPSBmZl9tcHZfZW5jb2RlX2luaXQoYXZjdHgpOwogICAgIGlm IChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9zcGVlZGhxZW5jLmggYi9saWJhdmNv ZGVjL3NwZWVkaHFlbmMuaAppbmRleCBlODA0Y2U3MTRhLi41NjhmODJjNzZlIDEwMDY0NAotLS0g YS9saWJhdmNvZGVjL3NwZWVkaHFlbmMuaAorKysgYi9saWJhdmNvZGVjL3NwZWVkaHFlbmMuaApA QCAtMjksMTEgKzI5LDkgQEAKICNpZm5kZWYgQVZDT0RFQ19TUEVFREhRRU5DX0gKICNkZWZpbmUg QVZDT0RFQ19TUEVFREhRRU5DX0gKIAotI2luY2x1ZGUgPHN0ZGludC5oPgordHlwZWRlZiBzdHJ1 Y3QgTVBWRW5jQ29udGV4dCBNUFZFbmNDb250ZXh0OwogCi0jaW5jbHVkZSAibXBlZ3ZpZGVvLmgi Ci0KLXZvaWQgZmZfc3BlZWRocV9lbmRfc2xpY2UoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBm Zl9zcGVlZGhxX2VuZF9zbGljZShNUFZFbmNDb250ZXh0ICpzKTsKIAogc3RhdGljIGlubGluZSBp bnQgZmZfc3BlZWRocV9tYl9yb3dzX2luX3NsaWNlKGludCBzbGljZV9udW0sIGludCBtYl9oZWln aHQpCiB7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3N2cTFlbmMuYyBiL2xpYmF2Y29kZWMvc3Zx MWVuYy5jCmluZGV4IDY1MmRjMTFiMDMuLmRkYzk0ZGZmZTUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29k ZWMvc3ZxMWVuYy5jCisrKyBiL2xpYmF2Y29kZWMvc3ZxMWVuYy5jCkBAIC01OCw4ICs1OCw4IEBA CiB0eXBlZGVmIHN0cnVjdCBTVlExRW5jQ29udGV4dCB7CiAgICAgLyogRklYTUU6IE5lZWRlZCBm b3IgbW90aW9uIGVzdGltYXRpb24sIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgYW55dGhpbmcKICAg ICAgKiBlbHNlLCB0aGUgaWRlYSBpcyB0byBtYWtlIHRoZSBtb3Rpb24gZXN0aW1hdGlvbiBldmVu dHVhbGx5IGluZGVwZW5kZW50Ci0gICAgICogb2YgTXBlZ0VuY0NvbnRleHQsIHNvIHRoaXMgd2ls bCBiZSByZW1vdmVkIHRoZW4uICovCi0gICAgTXBlZ0VuY0NvbnRleHQgbTsKKyAgICAgKiBvZiBN UFZFbmNDb250ZXh0LCBzbyB0aGlzIHdpbGwgYmUgcmVtb3ZlZCB0aGVuLiAqLworICAgIE1QVkVu Y0NvbnRleHQgbTsKICAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHg7CiAgICAgTUVDbXBDb250ZXh0 IG1lY2M7CiAgICAgSHBlbERTUENvbnRleHQgaGRzcDsKQEAgLTI4OSw3ICsyODksOCBAQCBzdGF0 aWMgaW50IGVuY29kZV9ibG9jayhTVlExRW5jQ29udGV4dCAqcywgdWludDhfdCAqc3JjLCB1aW50 OF90ICpyZWYsCiAgICAgcmV0dXJuIGJlc3Rfc2NvcmU7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRf YmxvY2tfaW5kZXgoTXBlZ0VuY0NvbnRleHQgKnMpeworc3RhdGljIHZvaWQgaW5pdF9ibG9ja19p bmRleChNcGVnRW5jQ29udGV4dCAqY29uc3QgcykKK3sKICAgICBzLT5ibG9ja19pbmRleFswXT0g cy0+Yjhfc3RyaWRlKihzLT5tYl95KjIgICAgKSAgICAgKyBzLT5tYl94KjI7CiAgICAgcy0+Ymxv Y2tfaW5kZXhbMV09IHMtPmI4X3N0cmlkZSoocy0+bWJfeSoyICAgICkgKyAxICsgcy0+bWJfeCoy OwogICAgIHMtPmJsb2NrX2luZGV4WzJdPSBzLT5iOF9zdHJpZGUqKHMtPm1iX3kqMiArIDEpICAg ICArIHMtPm1iX3gqMjsKQEAgLTMwNSw2ICszMDYsNyBAQCBzdGF0aWMgaW50IHN2cTFfZW5jb2Rl X3BsYW5lKFNWUTFFbmNDb250ZXh0ICpzLCBpbnQgcGxhbmUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRlY29kZWRfcGxhbmUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHNyY19zdHJpZGUsIGludCBz dHJpZGUpCiB7CisgICAgTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMyID0gJnMtPm0uYzsKICAgICBp bnQgeCwgeTsKICAgICBpbnQgaTsKICAgICBpbnQgYmxvY2tfd2lkdGgsIGJsb2NrX2hlaWdodDsK QEAgLTMyMywzNiArMzI1LDM2IEBAIHN0YXRpYyBpbnQgc3ZxMV9lbmNvZGVfcGxhbmUoU1ZRMUVu Y0NvbnRleHQgKnMsIGludCBwbGFuZSwKICAgICBibG9ja19oZWlnaHQgPSAoaGVpZ2h0ICsgMTUp IC8gMTY7CiAKICAgICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9QKSB7Ci0g ICAgICAgIHMtPm0uYXZjdHggICAgICAgICAgICAgICAgICAgICAgICAgPSBzLT5hdmN0eDsKLSAg ICAgICAgcy0+bS5sYXN0X3BpYy5kYXRhWzBdICAgICAgICA9IHJlZl9wbGFuZTsKLSAgICAgICAg cy0+bS5saW5lc2l6ZSAgICAgICAgICAgICAgICAgICAgICA9Ci0gICAgICAgIHMtPm0ubGFzdF9w aWMubGluZXNpemVbMF0gICAgPQorICAgICAgICBzMi0+YXZjdHggICAgICAgICAgICAgICAgICAg ICAgICAgPSBzLT5hdmN0eDsKKyAgICAgICAgczItPmxhc3RfcGljLmRhdGFbMF0gICAgICAgID0g cmVmX3BsYW5lOworICAgICAgICBzMi0+bGluZXNpemUgICAgICAgICAgICAgICAgICAgICAgPQor ICAgICAgICBzMi0+bGFzdF9waWMubGluZXNpemVbMF0gICAgPQogICAgICAgICBzLT5tLm5ld19w aWMtPmxpbmVzaXplWzBdICAgICAgPQotICAgICAgICBzLT5tLmN1cl9waWMubGluZXNpemVbMF0g PSBzdHJpZGU7Ci0gICAgICAgIHMtPm0ud2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgPSB3 aWR0aDsKLSAgICAgICAgcy0+bS5oZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICA9IGhlaWdo dDsKLSAgICAgICAgcy0+bS5tYl93aWR0aCAgICAgICAgICAgICAgICAgICAgICA9IGJsb2NrX3dp ZHRoOwotICAgICAgICBzLT5tLm1iX2hlaWdodCAgICAgICAgICAgICAgICAgICAgID0gYmxvY2tf aGVpZ2h0OwotICAgICAgICBzLT5tLm1iX3N0cmlkZSAgICAgICAgICAgICAgICAgICAgID0gcy0+ bS5tYl93aWR0aCArIDE7Ci0gICAgICAgIHMtPm0uYjhfc3RyaWRlICAgICAgICAgICAgICAgICAg ICAgPSAyICogcy0+bS5tYl93aWR0aCArIDE7Ci0gICAgICAgIHMtPm0uZl9jb2RlICAgICAgICAg ICAgICAgICAgICAgICAgPSAxOwotICAgICAgICBzLT5tLnBpY3RfdHlwZSAgICAgICAgICAgICAg ICAgICAgID0gcy0+cGljdF90eXBlOwotICAgICAgICBzLT5tLm1lLnNjZW5lX2NoYW5nZV9zY29y ZSAgICAgICAgID0gMDsKLSAgICAgICAgLy8gcy0+bS5vdXRfZm9ybWF0ICAgICAgICAgICAgICAg ICAgICA9IEZNVF9IMjYzOwotICAgICAgICAvLyBzLT5tLnVucmVzdHJpY3RlZF9tdiAgICAgICAg ICAgICAgID0gMTsKLSAgICAgICAgcy0+bS5sYW1iZGEgICAgICAgICAgICAgICAgICAgICAgICA9 IHMtPnF1YWxpdHk7Ci0gICAgICAgIHMtPm0ucXNjYWxlICAgICAgICAgICAgICAgICAgICAgICAg PSBzLT5tLmxhbWJkYSAqIDEzOSArCisgICAgICAgIHMyLT5jdXJfcGljLmxpbmVzaXplWzBdID0g c3RyaWRlOworICAgICAgICBzMi0+d2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgPSB3aWR0 aDsKKyAgICAgICAgczItPmhlaWdodCAgICAgICAgICAgICAgICAgICAgICAgID0gaGVpZ2h0Owor ICAgICAgICBzMi0+bWJfd2lkdGggICAgICAgICAgICAgICAgICAgICAgPSBibG9ja193aWR0aDsK KyAgICAgICAgczItPm1iX2hlaWdodCAgICAgICAgICAgICAgICAgICAgID0gYmxvY2tfaGVpZ2h0 OworICAgICAgICBzMi0+bWJfc3RyaWRlICAgICAgICAgICAgICAgICAgICAgPSBzMi0+bWJfd2lk dGggKyAxOworICAgICAgICBzMi0+Yjhfc3RyaWRlICAgICAgICAgICAgICAgICAgICAgPSAyICog czItPm1iX3dpZHRoICsgMTsKKyAgICAgICAgczItPmZfY29kZSAgICAgICAgICAgICAgICAgICAg ICAgID0gMTsKKyAgICAgICAgczItPnBpY3RfdHlwZSAgICAgICAgICAgICAgICAgICAgID0gcy0+ cGljdF90eXBlOworICAgICAgICBzMi0+bWUuc2NlbmVfY2hhbmdlX3Njb3JlICAgICAgICAgPSAw OworICAgICAgICAvLyBzMi0+b3V0X2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgPSBGTVRfSDI2 MzsKKyAgICAgICAgLy8gczItPnVucmVzdHJpY3RlZF9tdiAgICAgICAgICAgICAgID0gMTsKKyAg ICAgICAgczItPmxhbWJkYSAgICAgICAgICAgICAgICAgICAgICAgID0gcy0+cXVhbGl0eTsKKyAg ICAgICAgczItPnFzY2FsZSAgICAgICAgICAgICAgICAgICAgICAgID0gczItPmxhbWJkYSAqIDEz OSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGRl9MQU1C REFfU0NBTEUgKiA2NCA+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRkZfTEFNQkRBX1NISUZUICsgNzsKLSAgICAgICAgcy0+bS5sYW1iZGEyICAgICAgICAg ICAgICAgICAgICAgICA9IHMtPm0ubGFtYmRhICogcy0+bS5sYW1iZGEgKworICAgICAgICBzMi0+ bGFtYmRhMiAgICAgICAgICAgICAgICAgICAgICAgPSBzMi0+bGFtYmRhICogczItPmxhbWJkYSAr CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGRl9MQU1CREFf U0NBTEUgLyAyID4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGRl9MQU1CREFfU0hJRlQ7CiAKICAgICAgICAgaWYgKCFzLT5tb3Rpb25fdmFsOFtwbGFuZV0p IHsKLSAgICAgICAgICAgIHMtPm1vdGlvbl92YWw4W3BsYW5lXSAgPSBhdl9tYWxsb2N6KChzLT5t LmI4X3N0cmlkZSAqCisgICAgICAgICAgICBzLT5tb3Rpb25fdmFsOFtwbGFuZV0gID0gYXZfbWFs bG9jeigoczItPmI4X3N0cmlkZSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmxvY2tfaGVpZ2h0ICogMiArIDIpICoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiBzaXplb2YoaW50MTZfdCkpOwotICAg ICAgICAgICAgcy0+bW90aW9uX3ZhbDE2W3BsYW5lXSA9IGF2X21hbGxvY3ooKHMtPm0ubWJfc3Ry aWRlICoKKyAgICAgICAgICAgIHMtPm1vdGlvbl92YWwxNltwbGFuZV0gPSBhdl9tYWxsb2N6KChz Mi0+bWJfc3RyaWRlICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYmxvY2tfaGVpZ2h0ICsgMikgKyAxKSAqCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAyICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAg ICAgIGlmICghcy0+bW90aW9uX3ZhbDhbcGxhbmVdIHx8ICFzLT5tb3Rpb25fdmFsMTZbcGxhbmVd KQpAQCAtMzY1LDE4ICszNjcsMTggQEAgc3RhdGljIGludCBzdnExX2VuY29kZV9wbGFuZShTVlEx RW5jQ29udGV4dCAqcywgaW50IHBsYW5lLAogICAgICAgICBzLT5tLm1iX21lYW4gICA9ICh1aW50 OF90ICopcy0+ZHVtbXk7CiAgICAgICAgIHMtPm0ubWJfdmFyICAgID0gKHVpbnQxNl90ICopcy0+ ZHVtbXk7CiAgICAgICAgIHMtPm0ubWNfbWJfdmFyID0gKHVpbnQxNl90ICopcy0+ZHVtbXk7Ci0g ICAgICAgIHMtPm0uY3VyX3BpYy5tYl90eXBlID0gcy0+ZHVtbXk7CisgICAgICAgIHMyLT5jdXJf cGljLm1iX3R5cGUgPSBzLT5kdW1teTsKIAotICAgICAgICBzLT5tLmN1cl9waWMubW90aW9uX3Zh bFswXSAgID0gcy0+bW90aW9uX3ZhbDhbcGxhbmVdICsgMjsKLSAgICAgICAgcy0+bS5wX212X3Rh YmxlICAgICAgICAgICAgICAgICAgICAgID0gcy0+bW90aW9uX3ZhbDE2W3BsYW5lXSArCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPm0ubWJfc3RyaWRl ICsgMTsKKyAgICAgICAgczItPmN1cl9waWMubW90aW9uX3ZhbFswXSAgID0gcy0+bW90aW9uX3Zh bDhbcGxhbmVdICsgMjsKKyAgICAgICAgcy0+bS5wX212X3RhYmxlICAgICAgICAgICAgID0gcy0+ bW90aW9uX3ZhbDE2W3BsYW5lXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzMi0+bWJfc3RyaWRlICsgMTsKICAgICAgICAgZmZfbWVfaW5pdF9waWMoJnMt Pm0pOwogCi0gICAgICAgIHMtPm0ubWUuZGlhX3NpemUgICAgICA9IHMtPmF2Y3R4LT5kaWFfc2l6 ZTsKLSAgICAgICAgcy0+bS5maXJzdF9zbGljZV9saW5lID0gMTsKKyAgICAgICAgczItPm1lLmRp YV9zaXplICAgICAgPSBzLT5hdmN0eC0+ZGlhX3NpemU7CisgICAgICAgIHMyLT5maXJzdF9zbGlj ZV9saW5lID0gMTsKICAgICAgICAgZm9yICh5ID0gMDsgeSA8IGJsb2NrX2hlaWdodDsgeSsrKSB7 CiAgICAgICAgICAgICBzLT5tLm5ld19waWMtPmRhdGFbMF0gID0gc3JjIC0geSAqIDE2ICogc3Ry aWRlOyAvLyB1Z2x5Ci0gICAgICAgICAgICBzLT5tLm1iX3kgICAgICAgICAgICAgICAgICA9IHk7 CisgICAgICAgICAgICBzMi0+bWJfeSAgICAgICAgICAgICAgICAgID0geTsKIAogICAgICAgICAg ICAgZm9yIChpID0gMDsgaSA8IDE2ICYmIGkgKyAxNiAqIHkgPCBoZWlnaHQ7IGkrKykgewogICAg ICAgICAgICAgICAgIG1lbWNweSgmc3JjW2kgKiBzdHJpZGVdLCAmc3JjX3BsYW5lWyhpICsgMTYg KiB5KSAqIHNyY19zdHJpZGVdLApAQCAtMzg5LDIwICszOTEsMjAgQEAgc3RhdGljIGludCBzdnEx X2VuY29kZV9wbGFuZShTVlExRW5jQ29udGV4dCAqcywgaW50IHBsYW5lLAogICAgICAgICAgICAg ICAgICAgICAgICAxNiAqIGJsb2NrX3dpZHRoKTsKIAogICAgICAgICAgICAgZm9yICh4ID0gMDsg eCA8IGJsb2NrX3dpZHRoOyB4KyspIHsKLSAgICAgICAgICAgICAgICBzLT5tLm1iX3ggPSB4Owot ICAgICAgICAgICAgICAgIGluaXRfYmxvY2tfaW5kZXgoJnMtPm0pOworICAgICAgICAgICAgICAg IHMyLT5tYl94ID0geDsKKyAgICAgICAgICAgICAgICBpbml0X2Jsb2NrX2luZGV4KHMyKTsKIAog ICAgICAgICAgICAgICAgIGZmX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKCZzLT5tLCB4LCB5KTsK ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHMtPm0uZmlyc3Rfc2xpY2VfbGluZSA9IDA7Cisg ICAgICAgICAgICBzMi0+Zmlyc3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgICAgIH0KIAogICAgICAg ICBmZl9maXhfbG9uZ19wX212cygmcy0+bSwgQ0FORElEQVRFX01CX1RZUEVfSU5UUkEpOwotICAg ICAgICBmZl9maXhfbG9uZ19tdnMoJnMtPm0sIE5VTEwsIDAsIHMtPm0ucF9tdl90YWJsZSwgcy0+ bS5mX2NvZGUsCisgICAgICAgIGZmX2ZpeF9sb25nX212cygmcy0+bSwgTlVMTCwgMCwgcy0+bS5w X212X3RhYmxlLCBzMi0+Zl9jb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgQ0FORElEQVRF X01CX1RZUEVfSU5URVIsIDApOwogICAgIH0KIAotICAgIHMtPm0uZmlyc3Rfc2xpY2VfbGluZSA9 IDE7CisgICAgczItPmZpcnN0X3NsaWNlX2xpbmUgPSAxOwogICAgIGZvciAoeSA9IDA7IHkgPCBi bG9ja19oZWlnaHQ7IHkrKykgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTYgJiYgaSArIDE2 ICogeSA8IGhlaWdodDsgaSsrKSB7CiAgICAgICAgICAgICBtZW1jcHkoJnNyY1tpICogc3RyaWRl XSwgJnNyY19wbGFuZVsoaSArIDE2ICogeSkgKiBzcmNfc3RyaWRlXSwKQEAgLTQxMyw3ICs0MTUs NyBAQCBzdGF0aWMgaW50IHN2cTFfZW5jb2RlX3BsYW5lKFNWUTFFbmNDb250ZXh0ICpzLCBpbnQg cGxhbmUsCiAgICAgICAgIGZvciAoOyBpIDwgMTYgJiYgaSArIDE2ICogeSA8IDE2ICogYmxvY2tf aGVpZ2h0OyBpKyspCiAgICAgICAgICAgICBtZW1jcHkoJnNyY1tpICogc3RyaWRlXSwgJnNyY1so aSAtIDEpICogc3RyaWRlXSwgMTYgKiBibG9ja193aWR0aCk7CiAKLSAgICAgICAgcy0+bS5tYl95 ID0geTsKKyAgICAgICAgczItPm1iX3kgPSB5OwogICAgICAgICBmb3IgKHggPSAwOyB4IDwgYmxv Y2tfd2lkdGg7IHgrKykgewogICAgICAgICAgICAgdWludDhfdCByZW9yZGVyX2J1ZmZlclsyXVs2 XVs3ICogMzJdOwogICAgICAgICAgICAgaW50IGNvdW50WzJdWzZdOwpAQCAtNDI4LDExICs0MzAs MTEgQEAgc3RhdGljIGludCBzdnExX2VuY29kZV9wbGFuZShTVlExRW5jQ29udGV4dCAqcywgaW50 IHBsYW5lLAogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KIAotICAg ICAgICAgICAgcy0+bS5tYl94ID0geDsKLSAgICAgICAgICAgIGluaXRfYmxvY2tfaW5kZXgoJnMt Pm0pOworICAgICAgICAgICAgczItPm1iX3ggPSB4OworICAgICAgICAgICAgaW5pdF9ibG9ja19p bmRleChzMik7CiAKICAgICAgICAgICAgIGlmIChzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9U WVBFX0kgfHwKLSAgICAgICAgICAgICAgICAocy0+bS5tYl90eXBlW3ggKyB5ICogcy0+bS5tYl9z dHJpZGVdICYKKyAgICAgICAgICAgICAgICAocy0+bS5tYl90eXBlW3ggKyB5ICogczItPm1iX3N0 cmlkZV0gJgogICAgICAgICAgICAgICAgICBDQU5ESURBVEVfTUJfVFlQRV9JTlRSQSkpIHsKICAg ICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgICAgICAg ICBpbml0X3B1dF9iaXRzKCZzLT5yZW9yZGVyX3BiW2ldLCByZW9yZGVyX2J1ZmZlclswXVtpXSwK QEAgLTQ1Niw4ICs0NTgsOCBAQCBzdGF0aWMgaW50IHN2cTFfZW5jb2RlX3BsYW5lKFNWUTFFbmND b250ZXh0ICpzLCBpbnQgcGxhbmUsCiAgICAgICAgICAgICAgICAgaW50IG14LCBteSwgcHJlZF94 LCBwcmVkX3ksIGR4eTsKICAgICAgICAgICAgICAgICBpbnQxNl90ICptb3Rpb25fcHRyOwogCi0g ICAgICAgICAgICAgICAgbW90aW9uX3B0ciA9IGZmX2gyNjNfcHJlZF9tb3Rpb24oJnMtPm0sIDAs IDAsICZwcmVkX3gsICZwcmVkX3kpOwotICAgICAgICAgICAgICAgIGlmIChzLT5tLm1iX3R5cGVb eCArIHkgKiBzLT5tLm1iX3N0cmlkZV0gJgorICAgICAgICAgICAgICAgIG1vdGlvbl9wdHIgPSBm Zl9oMjYzX3ByZWRfbW90aW9uKHMyLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsKKyAgICAgICAg ICAgICAgICBpZiAocy0+bS5tYl90eXBlW3ggKyB5ICogczItPm1iX3N0cmlkZV0gJgogICAgICAg ICAgICAgICAgICAgICBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUikgewogICAgICAgICAgICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgaW5p dF9wdXRfYml0cygmcy0+cmVvcmRlcl9wYltpXSwgcmVvcmRlcl9idWZmZXJbMV1baV0sCkBAIC01 MDYsMTAgKzUwOCwxMCBAQCBzdGF0aWMgaW50IHN2cTFfZW5jb2RlX3BsYW5lKFNWUTFFbmNDb250 ZXh0ICpzLCBpbnQgcGxhbmUsCiAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl9wdHJbMV0gICAg ICAgICAgICAgICAgICAgICAgPQogICAgICAgICAgICAgICAgICAgICBtb3Rpb25fcHRyWzJdICAg ICAgICAgICAgICAgICAgICAgID0KICAgICAgICAgICAgICAgICAgICAgbW90aW9uX3B0clszXSAg ICAgICAgICAgICAgICAgICAgICA9Ci0gICAgICAgICAgICAgICAgICAgIG1vdGlvbl9wdHJbMCAr IDIgKiBzLT5tLmI4X3N0cmlkZV0gPQotICAgICAgICAgICAgICAgICAgICBtb3Rpb25fcHRyWzEg KyAyICogcy0+bS5iOF9zdHJpZGVdID0KLSAgICAgICAgICAgICAgICAgICAgbW90aW9uX3B0clsy ICsgMiAqIHMtPm0uYjhfc3RyaWRlXSA9Ci0gICAgICAgICAgICAgICAgICAgIG1vdGlvbl9wdHJb MyArIDIgKiBzLT5tLmI4X3N0cmlkZV0gPSAwOworICAgICAgICAgICAgICAgICAgICBtb3Rpb25f cHRyWzAgKyAyICogczItPmI4X3N0cmlkZV0gPQorICAgICAgICAgICAgICAgICAgICBtb3Rpb25f cHRyWzEgKyAyICogczItPmI4X3N0cmlkZV0gPQorICAgICAgICAgICAgICAgICAgICBtb3Rpb25f cHRyWzIgKyAyICogczItPmI4X3N0cmlkZV0gPQorICAgICAgICAgICAgICAgICAgICBtb3Rpb25f cHRyWzMgKyAyICogczItPmI4X3N0cmlkZV0gPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgIH0KIApAQCAtNTIyLDcgKzUyNCw3IEBAIHN0YXRpYyBpbnQgc3ZxMV9lbmNvZGVfcGxh bmUoU1ZRMUVuY0NvbnRleHQgKnMsIGludCBwbGFuZSwKICAgICAgICAgICAgIGlmIChiZXN0ID09 IDApCiAgICAgICAgICAgICAgICAgcy0+aGRzcC5wdXRfcGl4ZWxzX3RhYlswXVswXShkZWNvZGVk LCB0ZW1wLCBzdHJpZGUsIDE2KTsKICAgICAgICAgfQotICAgICAgICBzLT5tLmZpcnN0X3NsaWNl X2xpbmUgPSAwOworICAgICAgICBzMi0+Zmlyc3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgfQogICAg IHJldHVybiAwOwogfQpAQCAtNTM3LDE0ICs1MzksMTQgQEAgc3RhdGljIGF2X2NvbGQgaW50IHN2 cTFfZW5jb2RlX2VuZChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgICAgICAgICBzLT5y ZF90b3RhbCAvIChkb3VibGUpKGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5oZWlnaHQgKgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmN0eC0+ZnJhbWVfbnVtKSk7CiAKLSAg ICBhdl9mcmVlcCgmcy0+bS5tZS5zY3JhdGNocGFkKTsKLSAgICBhdl9mcmVlcCgmcy0+bS5tZS5t YXApOworICAgIGF2X2ZyZWVwKCZzLT5tLmMubWUuc2NyYXRjaHBhZCk7CisgICAgYXZfZnJlZXAo JnMtPm0uYy5tZS5tYXApOwogICAgIGF2X2ZyZWVwKCZzLT5tYl90eXBlKTsKICAgICBhdl9mcmVl cCgmcy0+ZHVtbXkpOwogICAgIGF2X2ZyZWVwKCZzLT5zY3JhdGNoYnVmKTsKIAogICAgIHMtPm0u bWJfdHlwZSA9IE5VTEw7Ci0gICAgZmZfbXB2X2NvbW1vbl9lbmQoJnMtPm0pOworICAgIGZmX21w dl9jb21tb25fZW5kKCZzLT5tLmMpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewog ICAgICAgICBhdl9mcmVlcCgmcy0+bW90aW9uX3ZhbDhbaV0pOwpAQCAtNTgzLDcgKzU4NSw3IEBA IHN0YXRpYyBhdl9jb2xkIGludCBzdnExX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0 eCkKIAogICAgIGZmX2hwZWxkc3BfaW5pdCgmcy0+aGRzcCwgYXZjdHgtPmZsYWdzKTsKICAgICBm Zl9tZV9jbXBfaW5pdCgmcy0+bWVjYywgYXZjdHgpOwotICAgIHJldCA9IGZmX21lX2luaXQoJnMt Pm0ubWUsIGF2Y3R4LCAmcy0+bWVjYywgMCk7CisgICAgcmV0ID0gZmZfbWVfaW5pdCgmcy0+bS5j Lm1lLCBhdmN0eCwgJnMtPm1lY2MsIDApOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1 cm4gcmV0OwogICAgIGZmX21wZWd2aWRlb2VuY2RzcF9pbml0KCZzLT5tLm1wdmVuY2RzcCwgYXZj dHgpOwpAQCAtNjA0LDMxICs2MDYsMzEgQEAgc3RhdGljIGF2X2NvbGQgaW50IHN2cTFfZW5jb2Rl X2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgIHMtPmNfYmxvY2tfaGVpZ2h0ID0gKHMt PmZyYW1lX2hlaWdodCAvIDQgKyAxNSkgLyAxNjsKIAogICAgIHMtPmF2Y3R4ICAgICAgICAgICAg ICAgPSBhdmN0eDsKLSAgICBzLT5tLmF2Y3R4ICAgICAgICAgICAgID0gYXZjdHg7CisgICAgcy0+ bS5jLmF2Y3R4ICAgICAgICAgICA9IGF2Y3R4OwogCi0gICAgaWYgKChyZXQgPSBmZl9tcHZfY29t bW9uX2luaXQoJnMtPm0pKSA8IDApIHsKKyAgICByZXQgPSBmZl9tcHZfY29tbW9uX2luaXQoJnMt Pm0uYyk7CisgICAgaWYgKHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQogCi0g ICAgcy0+bS5waWN0dXJlX3N0cnVjdHVyZSA9IFBJQ1RfRlJBTUU7Ci0gICAgcy0+bS5tZS50ZW1w ICAgICAgICAgICA9Ci0gICAgcy0+bS5tZS5zY3JhdGNocGFkICAgICA9IGF2X21hbGxvY3ooKGF2 Y3R4LT53aWR0aCArIDY0KSAqCisgICAgcy0+bS5jLnBpY3R1cmVfc3RydWN0dXJlID0gUElDVF9G UkFNRTsKKyAgICBzLT5tLmMubWUudGVtcCAgICAgICAgICAgPQorICAgIHMtPm0uYy5tZS5zY3Jh dGNocGFkICAgICA9IGF2X21hbGxvY3ooKGF2Y3R4LT53aWR0aCArIDY0KSAqCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqIDE2ICogMiAqIHNpemVvZih1aW50OF90 KSk7CiAgICAgcy0+bWJfdHlwZSAgICAgICAgICAgICA9IGF2X21hbGxvY3ooKHMtPnlfYmxvY2tf d2lkdGggKyAxKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+ eV9ibG9ja19oZWlnaHQgKiBzaXplb2YoaW50MTZfdCkpOwogICAgIHMtPmR1bW15ICAgICAgICAg ICAgICAgPSBhdl9tYWxsb2N6KChzLT55X2Jsb2NrX3dpZHRoICsgMSkgKgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnlfYmxvY2tfaGVpZ2h0ICogc2l6ZW9mKGlu dDMyX3QpKTsKLSAgICBzLT5tLm1lLm1hcCAgICAgICAgICAgID0gYXZfbWFsbG9jeigyICogTUVf TUFQX1NJWkUgKiBzaXplb2YoKnMtPm0ubWUubWFwKSk7CisgICAgcy0+bS5jLm1lLm1hcCAgICAg ICAgICAgID0gYXZfbWFsbG9jeigyICogTUVfTUFQX1NJWkUgKiBzaXplb2YoKnMtPm0uYy5tZS5t YXApKTsKICAgICBzLT5tLm5ld19waWMgICAgICAgPSBhdl9mcmFtZV9hbGxvYygpOwogCi0gICAg aWYgKCFzLT5tLm1lLnNjcmF0Y2hwYWQgfHwgIXMtPm0ubWUubWFwIHx8CisgICAgaWYgKCFzLT5t LmMubWUuc2NyYXRjaHBhZCB8fCAhcy0+bS5jLm1lLm1hcCB8fAogICAgICAgICAhcy0+bWJfdHlw ZSB8fCAhcy0+ZHVtbXkgfHwgIXMtPm0ubmV3X3BpYykKICAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKLSAgICBzLT5tLm1lLnNjb3JlX21hcCA9IHMtPm0ubWUubWFwICsgTUVfTUFQX1NJ WkU7CisgICAgcy0+bS5jLm1lLnNjb3JlX21hcCA9IHMtPm0uYy5tZS5tYXAgKyBNRV9NQVBfU0la RTsKIAogICAgIGZmX3N2cTFlbmNfaW5pdCgmcy0+c3ZxMWVuY2RzcCk7CiAKLSAgICBzLT5tLm1l Lm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9wZW5hbHR5KCk7CisgICAgcy0+bS5jLm1lLm12 X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9wZW5hbHR5KCk7CiAKICAgICByZXR1cm4gd3JpdGVf aWRlbnQoYXZjdHgsIHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQklURVhBQ1QgPyAi TGF2YyIgOiBMSUJBVkNPREVDX0lERU5UKTsKIH0KQEAgLTcxNiw3ICs3MTgsNyBAQCBzdGF0aWMg aW50IHN2cTFfZW5jb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQYWNrZXQgKnBr dCwKICNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKHN0cnVjdCBTVlExRW5jQ29udGV4dCwgeCkK ICNkZWZpbmUgVkUgQVZfT1BUX0ZMQUdfVklERU9fUEFSQU0gfCBBVl9PUFRfRkxBR19FTkNPRElO R19QQVJBTQogc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9IHsKLSAgICB7ICJtb3Rp b24tZXN0IiwgIk1vdGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsIE9GRlNFVChtLm1lLm1vdGlv bl9lc3QpLCBBVl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9IEZGX01FX0VQWlMgfSwgRkZfTUVfWkVS TywgRkZfTUVfWE9ORSwgVkUsIC51bml0ID0gIm1vdGlvbi1lc3QifSwKKyAgICB7ICJtb3Rpb24t ZXN0IiwgIk1vdGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsIE9GRlNFVChtLmMubWUubW90aW9u X2VzdCksIEFWX09QVF9UWVBFX0lOVCwgeyAuaTY0ID0gRkZfTUVfRVBaUyB9LCBGRl9NRV9aRVJP LCBGRl9NRV9YT05FLCBWRSwgLnVuaXQgPSAibW90aW9uLWVzdCJ9LAogICAgICAgICB7ICJ6ZXJv IiwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IEZGX01FX1pFUk8gfSwgMCwg MCwgRkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAibW90aW9uLWVzdCIgfSwKICAgICAgICAgeyAi ZXB6cyIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBGRl9NRV9FUFpTIH0s IDAsIDAsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1vdGlvbi1lc3QiIH0sCiAgICAgICAg IHsgInhvbmUiLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAuaTY0ID0gRkZfTUVfWE9O RSB9LCAwLCAwLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJtb3Rpb24tZXN0IiB9LApkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy93bXYyZW5jLmMgYi9saWJhdmNvZGVjL3dtdjJlbmMuYwppbmRl eCA4MWIwYWNlMDUzLi5mOWZkOTE4ZGJmIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3dtdjJlbmMu YworKysgYi9saWJhdmNvZGVjL3dtdjJlbmMuYwpAQCAtNDgsMTcgKzQ4LDE3IEBAIHR5cGVkZWYg c3RydWN0IFdNVjJFbmNDb250ZXh0IHsKIAogc3RhdGljIGludCBlbmNvZGVfZXh0X2hlYWRlcihX TVYyRW5jQ29udGV4dCAqdykKIHsKLSAgICBNcGVnRW5jQ29udGV4dCAqY29uc3QgcyA9ICZ3LT5t c21wZWc0Lm0uczsKKyAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJnctPm1zbXBlZzQubS5z OwogICAgIFB1dEJpdENvbnRleHQgcGI7CiAgICAgaW50IGNvZGU7CiAKLSAgICBpbml0X3B1dF9i aXRzKCZwYiwgcy0+YXZjdHgtPmV4dHJhZGF0YSwgV01WMl9FWFRSQURBVEFfU0laRSk7CisgICAg aW5pdF9wdXRfYml0cygmcGIsIHMtPmMuYXZjdHgtPmV4dHJhZGF0YSwgV01WMl9FWFRSQURBVEFf U0laRSk7CiAKLSAgICBwdXRfYml0cygmcGIsIDUsIHMtPmF2Y3R4LT50aW1lX2Jhc2UuZGVuIC8g cy0+YXZjdHgtPnRpbWVfYmFzZS5udW0pOyAvLyB5ZXMgMjkuOTcgLT4gMjkKKyAgICBwdXRfYml0 cygmcGIsIDUsIHMtPmMuYXZjdHgtPnRpbWVfYmFzZS5kZW4gLyBzLT5jLmF2Y3R4LT50aW1lX2Jh c2UubnVtKTsgLy8geWVzIDI5Ljk3IC0+IDI5CiAgICAgcHV0X2JpdHMoJnBiLCAxMSwgRkZNSU4o dy0+bXNtcGVnNC5tLmJpdF9yYXRlIC8gMTAyNCwgMjA0NykpOwogCiAgICAgcHV0X2JpdHMoJnBi LCAxLCB3LT5tc3BlbF9iaXQgICAgICAgID0gMSk7Ci0gICAgcHV0X2JpdHMoJnBiLCAxLCBzLT5s b29wX2ZpbHRlcik7CisgICAgcHV0X2JpdHMoJnBiLCAxLCBzLT5jLmxvb3BfZmlsdGVyKTsKICAg ICBwdXRfYml0cygmcGIsIDEsIHctPmFidF9mbGFnICAgICAgICAgPSAxKTsKICAgICBwdXRfYml0 cygmcGIsIDEsIHctPmpfdHlwZV9iaXQgICAgICAgPSAxKTsKICAgICBwdXRfYml0cygmcGIsIDEs IHctPnRvcF9sZWZ0X212X2ZsYWcgPSAwKTsKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGludCBl bmNvZGVfZXh0X2hlYWRlcihXTVYyRW5jQ29udGV4dCAqdykKIAogICAgIGZsdXNoX3B1dF9iaXRz KCZwYik7CiAKLSAgICBzLT5zbGljZV9oZWlnaHQgPSBzLT5tYl9oZWlnaHQgLyBjb2RlOworICAg IHMtPmMuc2xpY2VfaGVpZ2h0ID0gcy0+Yy5tYl9oZWlnaHQgLyBjb2RlOwogCiAgICAgcmV0dXJu IDA7CiB9CkBAIC03NiwyNSArNzYsMjUgQEAgc3RhdGljIGludCB3bXYyX2VuY29kZV9waWN0dXJl X2hlYWRlcihNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSkKIHsKICAgICBXTVYyRW5jQ29udGV4 dCAqY29uc3QgdyA9IChXTVYyRW5jQ29udGV4dCAqKSBtOwogICAgIE1TTVBFRzRFbmNDb250ZXh0 ICpjb25zdCBtcyA9ICZ3LT5tc21wZWc0OwotICAgIE1wZWdFbmNDb250ZXh0ICpjb25zdCBzID0g Jm0tPnM7CisgICAgTVBWRW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwogCi0gICAgcHV0X2Jp dHMoJnMtPnBiLCAxLCBzLT5waWN0X3R5cGUgLSAxKTsKLSAgICBpZiAocy0+cGljdF90eXBlID09 IEFWX1BJQ1RVUkVfVFlQRV9JKQorICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+Yy5waWN0X3R5 cGUgLSAxKTsKKyAgICBpZiAocy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpCiAg ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNywgMCk7Ci0gICAgcHV0X2JpdHMoJnMtPnBiLCA1LCBz LT5xc2NhbGUpOworICAgIHB1dF9iaXRzKCZzLT5wYiwgNSwgcy0+Yy5xc2NhbGUpOwogCiAgICAg bXMtPmRjX3RhYmxlX2luZGV4ICA9IDE7CiAgICAgbXMtPm12X3RhYmxlX2luZGV4ICA9IDE7IC8q IG9ubHkgaWYgUC1mcmFtZSAqLwogICAgIG1zLT5wZXJfbWJfcmxfdGFibGUgPSAwOwotICAgIHMt Pm1zcGVsICAgICAgICAgICA9IDA7CisgICAgcy0+Yy5tc3BlbCAgICAgICAgICA9IDA7CiAgICAg dy0+cGVyX21iX2FidCAgICAgID0gMDsKICAgICB3LT5hYnRfdHlwZSAgICAgICAgPSAwOwogICAg IHctPmpfdHlwZSAgICAgICAgICA9IDA7CiAKLSAgICBhdl9hc3NlcnQwKHMtPmZsaXBmbG9wX3Jv dW5kaW5nKTsKKyAgICBhdl9hc3NlcnQwKHMtPmMuZmxpcGZsb3Bfcm91bmRpbmcpOwogCi0gICAg aWYgKHMtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewotICAgICAgICBhdl9hc3Nl cnQwKHMtPm5vX3JvdW5kaW5nID09IDEpOworICAgIGlmIChzLT5jLnBpY3RfdHlwZSA9PSBBVl9Q SUNUVVJFX1RZUEVfSSkgeworICAgICAgICBhdl9hc3NlcnQwKHMtPmMubm9fcm91bmRpbmcgPT0g MSk7CiAgICAgICAgIGlmICh3LT5qX3R5cGVfYml0KQogICAgICAgICAgICAgcHV0X2JpdHMoJnMt PnBiLCAxLCB3LT5qX3R5cGUpOwogCkBAIC0xMDgsMTcgKzEwOCwxNyBAQCBzdGF0aWMgaW50IHdt djJfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtKQogCiAg ICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgbXMtPmRjX3RhYmxlX2luZGV4KTsKIAotICAgICAg ICBzLT5pbnRlcl9pbnRyYV9wcmVkID0gMDsKKyAgICAgICAgcy0+Yy5pbnRlcl9pbnRyYV9wcmVk ID0gMDsKICAgICB9IGVsc2UgewogICAgICAgICBpbnQgY2JwX2luZGV4OwogCiAgICAgICAgIHB1 dF9iaXRzKCZzLT5wYiwgMiwgU0tJUF9UWVBFX05PTkUpOwogCiAgICAgICAgIGZmX21zbXBlZzRf Y29kZTAxMigmcy0+cGIsIGNicF9pbmRleCA9IDApOwotICAgICAgICB3LT5jYnBfdGFibGVfaW5k ZXggPSB3bXYyX2dldF9jYnBfdGFibGVfaW5kZXgocywgY2JwX2luZGV4KTsKKyAgICAgICAgdy0+ Y2JwX3RhYmxlX2luZGV4ID0gd212Ml9nZXRfY2JwX3RhYmxlX2luZGV4KCZzLT5jLCBjYnBfaW5k ZXgpOwogCiAgICAgICAgIGlmICh3LT5tc3BlbF9iaXQpCi0gICAgICAgICAgICBwdXRfYml0cygm cy0+cGIsIDEsIHMtPm1zcGVsKTsKKyAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgcy0+ Yy5tc3BlbCk7CiAKICAgICAgICAgaWYgKHctPmFidF9mbGFnKSB7CiAgICAgICAgICAgICBwdXRf Yml0cygmcy0+cGIsIDEsIHctPnBlcl9tYl9hYnQgXiAxKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBz dGF0aWMgaW50IHdtdjJfZW5jb2RlX3BpY3R1cmVfaGVhZGVyKE1QVk1haW5FbmNDb250ZXh0ICpj b25zdCBtKQogICAgICAgICBwdXRfYml0cygmcy0+cGIsIDEsIG1zLT5kY190YWJsZV9pbmRleCk7 CiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgMSwgbXMtPm12X3RhYmxlX2luZGV4KTsKIAotICAg ICAgICBzLT5pbnRlcl9pbnRyYV9wcmVkID0gMDsgLy8gKHMtPndpZHRoICogcy0+aGVpZ2h0IDwg MzIwICogMjQwICYmIG0tPmJpdF9yYXRlIDw9IElJX0JJVFJBVEUpOworICAgICAgICBzLT5jLmlu dGVyX2ludHJhX3ByZWQgPSAwOyAvLyAocy0+Yy53aWR0aCAqIHMtPmMuaGVpZ2h0IDwgMzIwICog MjQwICYmIG0tPmJpdF9yYXRlIDw9IElJX0JJVFJBVEUpOwogICAgIH0KICAgICBzLT5lc2MzX2xl dmVsX2xlbmd0aCA9IDA7CiAgICAgbXMtPmVzYzNfcnVuX2xlbmd0aCAgPSAwOwpAQCAtMTQ3LDcg KzE0Nyw3IEBAIHN0YXRpYyBpbnQgd212Ml9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTVBWTWFpbkVu Y0NvbnRleHQgKmNvbnN0IG0pCiAvKiBOZWFybHkgaWRlbnRpY2FsIHRvIHdtdjEgYnV0IHRoYXQg aXMganVzdCBiZWNhdXNlIHdlIGRvIG5vdCB1c2UgdGhlCiAgKiB1c2VsZXNzIE0kIGNyYXAgZmVh dHVyZXMuIEl0IGlzIGR1cGxpY2F0ZWQgaGVyZSBpbiBjYXNlIHNvbWVvbmUgd2FudHMKICAqIHRv IGFkZCBzdXBwb3J0IGZvciB0aGVzZSBjcmFwIGZlYXR1cmVzLiAqLwotc3RhdGljIHZvaWQgd212 Ml9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0s CitzdGF0aWMgdm9pZCB3bXYyX2VuY29kZV9tYihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQx Nl90IGJsb2NrW11bNjRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl94 LCBpbnQgbW90aW9uX3kpCiB7CiAgICAgV01WMkVuY0NvbnRleHQgKmNvbnN0IHcgPSAoV01WMkVu Y0NvbnRleHQgKikgczsKQEAgLTE1NywxMSArMTU3LDExIEBAIHN0YXRpYyB2b2lkIHdtdjJfZW5j b2RlX21iKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQxNl90IGJsb2NrW11bNjRdLAogCiAg ICAgZmZfbXNtcGVnNF9oYW5kbGVfc2xpY2VzKHMpOwogCi0gICAgaWYgKCFzLT5tYl9pbnRyYSkg eworICAgIGlmICghcy0+Yy5tYl9pbnRyYSkgewogICAgICAgICAvKiBjb21wdXRlIGNicCAqLwog ICAgICAgICBjYnAgPSAwOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQotICAgICAg ICAgICAgaWYgKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKKyAgICAgICAgICAgIGlmIChz LT5jLmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMCkKICAgICAgICAgICAgICAgICBjYnAgfD0gMSA8 PCAoNSAtIGkpOwogCiAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwKQEAgLTE3MCw3ICsxNzAsNyBA QCBzdGF0aWMgdm9pZCB3bXYyX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50 MTZfdCBibG9ja1tdWzY0XSwKIAogICAgICAgICBzLT5taXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlm ZihzKTsKICAgICAgICAgLyogbW90aW9uIHZlY3RvciAqLwotICAgICAgICBmZl9oMjYzX3ByZWRf bW90aW9uKHMsIDAsIDAsICZwcmVkX3gsICZwcmVkX3kpOworICAgICAgICBmZl9oMjYzX3ByZWRf bW90aW9uKCZzLT5jLCAwLCAwLCAmcHJlZF94LCAmcHJlZF95KTsKICAgICAgICAgZmZfbXNtcGVn NF9lbmNvZGVfbW90aW9uKCZ3LT5tc21wZWc0LCBtb3Rpb25feCAtIHByZWRfeCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbl95IC0gcHJlZF95KTsKICAgICAgICAgcy0+ bXZfYml0cyArPSBnZXRfYml0c19kaWZmKHMpOwpAQCAtMTc5LDE5ICsxNzksMTkgQEAgc3RhdGlj IHZvaWQgd212Ml9lbmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxv Y2tbXVs2NF0sCiAgICAgICAgIGNicCAgICAgICA9IDA7CiAgICAgICAgIGNvZGVkX2NicCA9IDA7 CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2OyBpKyspIHsKLSAgICAgICAgICAgIGludCB2YWws IHByZWQ7Ci0gICAgICAgICAgICB2YWwgID0gKHMtPmJsb2NrX2xhc3RfaW5kZXhbaV0gPj0gMSk7 CisgICAgICAgICAgICBpbnQgdmFsID0gKHMtPmMuYmxvY2tfbGFzdF9pbmRleFtpXSA+PSAxKTsK KwogICAgICAgICAgICAgY2JwIHw9IHZhbCA8PCAoNSAtIGkpOwogICAgICAgICAgICAgaWYgKGkg PCA0KSB7CiAgICAgICAgICAgICAgICAgLyogcHJlZGljdCB2YWx1ZSBmb3IgY2xvc2UgYmxvY2tz IG9ubHkgZm9yIGx1bWEgKi8KLSAgICAgICAgICAgICAgICBwcmVkICAgICAgICAgPSBmZl9tc21w ZWc0X2NvZGVkX2Jsb2NrX3ByZWQocywgaSwgJmNvZGVkX2Jsb2NrKTsKKyAgICAgICAgICAgICAg ICBpbnQgcHJlZCAgICAgPSBmZl9tc21wZWc0X2NvZGVkX2Jsb2NrX3ByZWQoJnMtPmMsIGksICZj b2RlZF9ibG9jayk7CiAgICAgICAgICAgICAgICAgKmNvZGVkX2Jsb2NrID0gdmFsOwogICAgICAg ICAgICAgICAgIHZhbCAgICAgICAgICA9IHZhbCBeIHByZWQ7CiAgICAgICAgICAgICB9CiAgICAg ICAgICAgICBjb2RlZF9jYnAgfD0gdmFsIDw8ICg1IC0gaSk7CiAgICAgICAgIH0KIAotICAgICAg ICBpZiAocy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9JKQorICAgICAgICBpZiAocy0+ Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0kpCiAgICAgICAgICAgICBwdXRfYml0cygm cy0+cGIsCiAgICAgICAgICAgICAgICAgICAgICBmZl9tc21wNF9tYl9pX3RhYmxlW2NvZGVkX2Ni cF1bMV0sCiAgICAgICAgICAgICAgICAgICAgICBmZl9tc21wNF9tYl9pX3RhYmxlW2NvZGVkX2Ni cF1bMF0pOwpAQCAtMjAwLDE4ICsyMDAsMTggQEAgc3RhdGljIHZvaWQgd212Ml9lbmNvZGVfbWIo TXBlZ0VuY0NvbnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbXVs2NF0sCiAgICAgICAgICAg ICAgICAgICAgICBmZl93bXYyX2ludGVyX3RhYmxlW3ctPmNicF90YWJsZV9pbmRleF1bY2JwXVsx XSwKICAgICAgICAgICAgICAgICAgICAgIGZmX3dtdjJfaW50ZXJfdGFibGVbdy0+Y2JwX3RhYmxl X2luZGV4XVtjYnBdWzBdKTsKICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCAxLCAwKTsgICAgICAg ICAvKiBubyBBQyBwcmVkaWN0aW9uIHlldCAqLwotICAgICAgICBpZiAocy0+aW50ZXJfaW50cmFf cHJlZCkgewotICAgICAgICAgICAgcy0+aDI2M19haWNfZGlyID0gMDsKKyAgICAgICAgaWYgKHMt PmMuaW50ZXJfaW50cmFfcHJlZCkgeworICAgICAgICAgICAgcy0+Yy5oMjYzX2FpY19kaXIgPSAw OwogICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLAotICAgICAgICAgICAgICAgICAgICAgZmZf dGFibGVfaW50ZXJfaW50cmFbcy0+aDI2M19haWNfZGlyXVsxXSwKLSAgICAgICAgICAgICAgICAg ICAgIGZmX3RhYmxlX2ludGVyX2ludHJhW3MtPmgyNjNfYWljX2Rpcl1bMF0pOworICAgICAgICAg ICAgICAgICAgICAgZmZfdGFibGVfaW50ZXJfaW50cmFbcy0+Yy5oMjYzX2FpY19kaXJdWzFdLAor ICAgICAgICAgICAgICAgICAgICAgZmZfdGFibGVfaW50ZXJfaW50cmFbcy0+Yy5oMjYzX2FpY19k aXJdWzBdKTsKICAgICAgICAgfQogICAgICAgICBzLT5taXNjX2JpdHMgKz0gZ2V0X2JpdHNfZGlm ZihzKTsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICBmZl9t c21wZWc0X2VuY29kZV9ibG9jayhzLCBibG9ja1tpXSwgaSk7Ci0gICAgaWYgKHMtPm1iX2ludHJh KQorICAgIGlmIChzLT5jLm1iX2ludHJhKQogICAgICAgICBzLT5pX3RleF9iaXRzICs9IGdldF9i aXRzX2RpZmYocyk7CiAgICAgZWxzZQogICAgICAgICBzLT5wX3RleF9iaXRzICs9IGdldF9iaXRz X2RpZmYocyk7CkBAIC0yMjAsMTcgKzIyMCwxNyBAQCBzdGF0aWMgdm9pZCB3bXYyX2VuY29kZV9t YihNcGVnRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBibG9ja1tdWzY0XSwKIHN0YXRpYyBh dl9jb2xkIGludCB3bXYyX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKICAg ICBXTVYyRW5jQ29udGV4dCAqY29uc3QgdyA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAgTXBlZ0Vu Y0NvbnRleHQgKmNvbnN0IHMgPSAmdy0+bXNtcGVnNC5tLnM7CisgICAgTVBWRW5jQ29udGV4dCAq Y29uc3QgcyA9ICZ3LT5tc21wZWc0Lm0uczsKICAgICBpbnQgcmV0OwogCiAgICAgdy0+bXNtcGVn NC5tLmVuY29kZV9waWN0dXJlX2hlYWRlciA9IHdtdjJfZW5jb2RlX3BpY3R1cmVfaGVhZGVyOwog ICAgIHMtPmVuY29kZV9tYiAgICAgICAgICAgICAgICAgICAgICAgPSB3bXYyX2VuY29kZV9tYjsK LSAgICBzLT5wcml2YXRlX2N0eCA9ICZ3LT5jb21tb247CisgICAgcy0+Yy5wcml2YXRlX2N0eCA9 ICZ3LT5jb21tb247CiAgICAgcmV0ID0gZmZfbXB2X2VuY29kZV9pbml0KGF2Y3R4KTsKICAgICBp ZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIHJldDsKIAotICAgIGZmX3dtdjJfY29tbW9uX2lu aXQocyk7CisgICAgZmZfd212Ml9jb21tb25faW5pdCgmcy0+Yyk7CiAKICAgICBhdmN0eC0+ZXh0 cmFkYXRhX3NpemUgPSBXTVYyX0VYVFJBREFUQV9TSVpFOwogICAgIGF2Y3R4LT5leHRyYWRhdGEg ICAgICA9IGF2X21hbGxvY3ooYXZjdHgtPmV4dHJhZGF0YV9zaXplICsgQVZfSU5QVVRfQlVGRkVS X1BBRERJTkdfU0laRSk7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3g4Ni9tZV9jbXAuYXNtIGIv bGliYXZjb2RlYy94ODYvbWVfY21wLmFzbQppbmRleCA5MjNlYjgwNzhiLi5hNDk0Y2RlYjY0IDEw MDY0NAotLS0gYS9saWJhdmNvZGVjL3g4Ni9tZV9jbXAuYXNtCisrKyBiL2xpYmF2Y29kZWMveDg2 L21lX2NtcC5hc20KQEAgLTIxNCw3ICsyMTQsNyBAQCBoYWRhbWFyZDh4OF9kaWZmICUrIFNVRkZJ WDoKIGhhZGFtYXJkOF8xNl93cmFwcGVyICUxLCAzCiAlZWxpZiBjcHVmbGFnKG1teCkKIEFMSUdO IDE2Ci07IGludCBmZl9oYWRhbWFyZDhfZGlmZl8gIyMgY3B1KE1wZWdFbmNDb250ZXh0ICpzLCBj b25zdCB1aW50OF90ICpzcmMxLAorOyBpbnQgZmZfaGFkYW1hcmQ4X2RpZmZfICMjIGNwdShNUFZF bmNDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMxLAogOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkK IDsgcjAgPSB2b2lkICpzID0gdW51c2VkLCBpbnQgaCA9IHVudXNlZCAoYWx3YXlzIDgpCiA7IG5v dGUgaG93IHIxLCByMiBhbmQgcjMgYXJlIG5vdCBjbG9iYmVyZWQgaW4gdGhpcyBmdW5jdGlvbiwg c28gMTZ4MTYKQEAgLTI3OCw3ICsyNzgsNyBAQCBJTklUX1hNTSBzc3NlMwogJWRlZmluZSBBQlNf U1VNXzh4OCBBQlNfU1VNXzh4OF82NAogSEFEQU1BUkQ4X0RJRkYgOQogCi07IGludCBmZl9zc2Uq XyooTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsCis7IGludCBmZl9zc2UqXyooTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKIDsgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGlu ZV9zaXplLCBpbnQgaCkKIAogJW1hY3JvIFNVTV9TUVVBUkVEX0VSUk9SUyAxCkBAIC00NjYsNyAr NDY2LDcgQEAgSEZfTk9JU0UgOAogSEZfTk9JU0UgMTYKIAogOy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotO2ludCBmZl9zYWRfPG9wdD4oTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVp bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBo KTsKKztpbnQgZmZfc2FkXzxvcHQ+KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBp eDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIDstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDslMSA9IDgvMTYKICVtYWNybyBTQUQgMQpAQCAt NTIxLDcgKzUyMSw3IEBAIElOSVRfWE1NIHNzZTIKIFNBRCAxNgogCiA7LS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi07aW50IGZmX3NhZF94Ml88b3B0PihNcGVnRW5jQ29udGV4dCAq diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IHN0 cmlkZSwgaW50IGgpOworO2ludCBmZl9zYWRfeDJfPG9wdD4oTVBWRW5jQ29udGV4dCAqdiwgY29u c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IHN0cmlkZSwg aW50IGgpOwogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogOyUxID0gOC8xNgog JW1hY3JvIFNBRF9YMiAxCkBAIC01OTgsNyArNTk4LDcgQEAgSU5JVF9YTU0gc3NlMgogU0FEX1gy IDE2CiAKIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTtpbnQgZmZfc2FkX3ky XzxvcHQ+KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50 OF90ICpwaXgyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Cis7aW50IGZmX3NhZF95Ml88b3B0 PihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw aXgyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7CiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiA7JTEgPSA4LzE2CiAlbWFjcm8gU0FEX1kyIDEKQEAgLTY2OCw3ICs2NjgsNyBA QCBJTklUX1hNTSBzc2UyCiBTQURfWTIgMTYKIAogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLTtpbnQgZmZfc2FkX2FwcHJveF94eTJfPG9wdD4oTXBlZ0VuY0NvbnRleHQgKnYs IGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsIHB0cmRpZmZfdCBzdHJp ZGUsIGludCBoKTsKKztpbnQgZmZfc2FkX2FwcHJveF94eTJfPG9wdD4oTVBWRW5jQ29udGV4dCAq diwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwgcHRyZGlmZl90IHN0 cmlkZSwgaW50IGgpOwogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDslMSA9 IDgvMTYKICVtYWNybyBTQURfQVBQUk9YX1hZMiAxCkBAIC03NjksNyArNzY5LDcgQEAgSU5JVF9Y TU0gc3NlMgogU0FEX0FQUFJPWF9YWTIgMTYKIAogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi07aW50IGZmX3ZzYWRf aW50cmEoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4 X3QgKnBpeDIsCis7aW50IGZmX3ZzYWRfaW50cmEoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWlu dDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKIDsgICAgICAgICAgICAgICAgICBwdHJk aWZmX3QgbGluZV9zaXplLCBpbnQgaCk7CiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDsgJTEgPSA4LzE2CkBAIC04 MzAsNyArODMwLDcgQEAgSU5JVF9YTU0gc3NlMgogVlNBRF9JTlRSQSAxNgogCiA7LS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi07aW50IGZmX3ZzYWRfYXBwcm94KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90 ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorO2ludCBmZl92c2FkX2FwcHJveChNUFZFbmND b250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogOyAg ICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCk7CiA7LS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiA7ICUxID0gOC8xNgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy94ODYvbWVfY21wX2luaXQu YyBiL2xpYmF2Y29kZWMveDg2L21lX2NtcF9pbml0LmMKaW5kZXggOThiNzFiMTg5NC4uNDU0MjVm NzEwOSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy94ODYvbWVfY21wX2luaXQuYworKysgYi9saWJh dmNvZGVjL3g4Ni9tZV9jbXBfaW5pdC5jCkBAIC0yOCw1OSArMjgsNTkgQEAKICNpbmNsdWRlICJs aWJhdnV0aWwveDg2L2FzbS5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC94ODYvY3B1LmgiCiAjaW5j bHVkZSAibGliYXZjb2RlYy9tZV9jbXAuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRl by5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgiCiAKIGludCBmZl9zdW1f YWJzX2RjdGVsZW1fc3NlMihjb25zdCBpbnQxNl90ICpibG9jayk7CiBpbnQgZmZfc3VtX2Fic19k Y3RlbGVtX3Nzc2UzKGNvbnN0IGludDE2X3QgKmJsb2NrKTsKLWludCBmZl9zc2U4X21teChNcGVn RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwK K2ludCBmZl9zc2U4X21teChNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj b25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu dCBoKTsKLWludCBmZl9zc2UxNl9tbXgoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfc3NlMTZfbW14KE1QVkVuY0NvbnRl eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAg ICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl9zc2UxNl9zc2UyKE1w ZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgy LAoraW50IGZmX3NzZTE2X3NzZTIoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4 MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJp ZGUsIGludCBoKTsKIGludCBmZl9oZl9ub2lzZThfbW14KGNvbnN0IHVpbnQ4X3QgKnBpeDEsIHB0 cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKIGludCBmZl9oZl9ub2lzZTE2X21teChjb25zdCB1aW50 OF90ICpwaXgxLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkOF9tbXhleHQo TXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBp eDIsCitpbnQgZmZfc2FkOF9tbXhleHQoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qg c3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfbW14ZXh0KE1wZWdFbmNDb250ZXh0ICp2LCBj b25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3NhZDE2X21t eGV4dChNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90 ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1p bnQgZmZfc2FkMTZfc3NlMihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg Y29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9zYWQxNl9zc2UyKE1QVkVuY0NvbnRleHQgKnYs IGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAg ICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkOF94Ml9tbXhleHQoTXBl Z0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIs CitpbnQgZmZfc2FkOF94Ml9tbXhleHQoTVBWRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZm X3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfeDJfbW14ZXh0KE1wZWdFbmNDb250ZXh0 ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3Nh ZDE2X3gyX21teGV4dChNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25z dCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRl LCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfeDJfc3NlMihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3Qg dWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl9zYWQxNl94Ml9zc2Uy KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBp eDIsCiAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQg ZmZfc2FkOF95Ml9tbXhleHQoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEs IGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfc2FkOF95Ml9tbXhleHQoTVBWRW5jQ29udGV4 dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAg ICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfeTJf bW14ZXh0KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50 OF90ICpwaXgyLAoraW50IGZmX3NhZDE2X3kyX21teGV4dChNUFZFbmNDb250ZXh0ICp2LCBjb25z dCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAgICAgICAgICAgICAgICAg ICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfeTJfc3NlMihNcGVn RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwK K2ludCBmZl9zYWQxNl95Ml9zc2UyKE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBp eDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qg c3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkOF9hcHByb3hfeHkyX21teGV4dChNcGVnRW5jQ29u dGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBm Zl9zYWQ4X2FwcHJveF94eTJfbW14ZXh0KE1QVkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZfYXBwcm94X3h5Ml9tbXhl eHQoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsCitpbnQgZmZfc2FkMTZfYXBwcm94X3h5Ml9tbXhleHQoTVBWRW5jQ29udGV4dCAqdiwg Y29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQgZmZfc2FkMTZf YXBwcm94X3h5Ml9zc2UyKE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj b25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3NhZDE2X2FwcHJveF94eTJfc3NlMihNUFZFbmND b250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQg ZmZfdnNhZF9pbnRyYThfbW14ZXh0KE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpw aXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAoraW50IGZmX3ZzYWRfaW50cmE4X21teGV4dChNUFZF bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQg ZmZfdnNhZF9pbnRyYTE2X21teGV4dChNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl92c2FkX2ludHJhMTZfbW14ZXh0KE1Q VkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1p bnQgZmZfdnNhZF9pbnRyYTE2X3NzZTIoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCitpbnQgZmZfdnNhZF9pbnRyYTE2X3NzZTIoTVBW RW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwK ICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7Ci1pbnQg ZmZfdnNhZDhfYXBwcm94X21teGV4dChNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAq cGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl92c2FkOF9hcHByb3hfbW14ZXh0KE1Q VkVuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIs CiAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKTsKLWludCBmZl92 c2FkMTZfYXBwcm94X21teGV4dChNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4 MSwgY29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl92c2FkMTZfYXBwcm94X21teGV4dChNUFZF bmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAog ICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpOwotaW50IGZmX3Zz YWQxNl9hcHByb3hfc3NlMihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwg Y29uc3QgdWludDhfdCAqcGl4MiwKK2ludCBmZl92c2FkMTZfYXBwcm94X3NzZTIoTVBWRW5jQ29u dGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKICAgICAg ICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7CiAKLSNkZWZpbmUgaGFkYW1h cmRfZnVuYyhjcHUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICBpbnQgZmZfaGFkYW1hcmQ4X2RpZmZfICMjIGNwdShNcGVnRW5jQ29udGV4 dCAqcywgY29uc3QgdWludDhfdCAqc3JjMSwgICAgIFwKKyNkZWZpbmUgaGFkYW1hcmRfZnVuYyhj cHUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICBpbnQgZmZfaGFkYW1hcmQ4X2RpZmZfICMjIGNwdShNUFZFbmNDb250ZXh0ICpzLCBj b25zdCB1aW50OF90ICpzcmMxLCAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1aW50OF90ICpzcmMyLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCk7IFwK LSAgICBpbnQgZmZfaGFkYW1hcmQ4X2RpZmYxNl8gIyMgY3B1KE1wZWdFbmNDb250ZXh0ICpzLCBj b25zdCB1aW50OF90ICpzcmMxLCAgIFwKKyAgICBpbnQgZmZfaGFkYW1hcmQ4X2RpZmYxNl8gIyMg Y3B1KE1QVkVuY0NvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsICAgICAgIFwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYzIsIHB0cmRp ZmZfdCBzdHJpZGUsIGludCBoKTsKIAogaGFkYW1hcmRfZnVuYyhtbXhleHQpCkBAIC04OCw3ICs4 OCw3IEBAIGhhZGFtYXJkX2Z1bmMoc3NlMikKIGhhZGFtYXJkX2Z1bmMoc3NzZTMpCiAKICNpZiBI QVZFX1g4NkFTTQotc3RhdGljIGludCBuc3NlMTZfbW14KE1wZWdFbmNDb250ZXh0ICpjLCBjb25z dCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGludCBuc3NlMTZf bW14KE1QVkVuY0NvbnRleHQgKmMsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3Qg KnBpeDIsCiAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCiB7 CiAgICAgaW50IHNjb3JlMSwgc2NvcmUyOwpAQCAtMTAxLDEyICsxMDEsMTIgQEAgc3RhdGljIGlu dCBuc3NlMTZfbW14KE1wZWdFbmNDb250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25z dCB1aW50OF90ICpwaXgKICAgICAgICAgICAgLSBmZl9oZl9ub2lzZTE2X21teChwaXgyLCBzdHJp ZGUsIGgpIC0gZmZfaGZfbm9pc2U4X21teChwaXgyKzgsIHN0cmlkZSwgaCk7CiAKICAgICBpZiAo YykKLSAgICAgICAgcmV0dXJuIHNjb3JlMSArIEZGQUJTKHNjb3JlMikgKiBjLT5hdmN0eC0+bnNz ZV93ZWlnaHQ7CisgICAgICAgIHJldHVybiBzY29yZTEgKyBGRkFCUyhzY29yZTIpICogYy0+Yy5h dmN0eC0+bnNzZV93ZWlnaHQ7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gc2NvcmUxICsgRkZB QlMoc2NvcmUyKSAqIDg7CiB9CiAKLXN0YXRpYyBpbnQgbnNzZThfbW14KE1wZWdFbmNDb250ZXh0 ICpjLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLAorc3RhdGljIGlu dCBuc3NlOF9tbXgoTVBWRW5jQ29udGV4dCAqYywgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3Qg dWludDhfdCAqcGl4MiwKICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu dCBoKQogewogICAgIGludCBzY29yZTEgPSBmZl9zc2U4X21teChjLCBwaXgxLCBwaXgyLCBzdHJp ZGUsIGgpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBpbnQgbnNzZThfbW14KE1wZWdFbmND b250ZXh0ICpjLCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyCiAgICAg ICAgICAgICAgICAgIGZmX2hmX25vaXNlOF9tbXgocGl4Miwgc3RyaWRlLCBoKTsKIAogICAgIGlm IChjKQotICAgICAgICByZXR1cm4gc2NvcmUxICsgRkZBQlMoc2NvcmUyKSAqIGMtPmF2Y3R4LT5u c3NlX3dlaWdodDsKKyAgICAgICAgcmV0dXJuIHNjb3JlMSArIEZGQUJTKHNjb3JlMikgKiBjLT5j LmF2Y3R4LT5uc3NlX3dlaWdodDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBzY29yZTEgKyBG RkFCUyhzY29yZTIpICogODsKIH0KQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgaW5saW5lIGlu dCBzdW1fbW14KHZvaWQpCiB9CiAKICNkZWZpbmUgUElYX1NBRFhZKHN1ZikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyBpbnQgc2FkOF94 eTJfICMjIHN1ZihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqYmxrMiwgICAgIFwK K3N0YXRpYyBpbnQgc2FkOF94eTJfICMjIHN1ZihNUFZFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50 OF90ICpibGsyLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50 OF90ICpibGsxLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkgXAogeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICAgIF9fYXNtX18gdm9sYXRpbGUgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbnQgc2FkOF94eTJf ICMjIHN1ZihNcGVnRW5jQ29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqYmxrMiwgICAgIFwKICAg ICByZXR1cm4gc3VtXyAjIyBzdWYoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRp YyBpbnQgc2FkMTZfeHkyXyAjIyBzdWYoTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg KmJsazIsICAgIFwKK3N0YXRpYyBpbnQgc2FkMTZfeHkyXyAjIyBzdWYoTVBWRW5jQ29udGV4dCAq diwgY29uc3QgdWludDhfdCAqYmxrMiwgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdWludDhfdCAqYmxrMSwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpIFwKIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgICBfX2FzbV9fIHZvbGF0aWxlICggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMveDg2 L21wZWd2aWRlb2VuYy5jIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvZW5jLmMKaW5kZXggNjEy ZTdmZjc1OC4uOTlkYWNjZWYzYiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVv ZW5jLmMKKysrIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvZW5jLmMKQEAgLTcwLDggKzcwLDkg QEAgREVDTEFSRV9BTElHTkVEKDE2LCBzdGF0aWMgY29uc3QgdWludDE2X3QsIGludl96aWd6YWdf ZGlyZWN0MTYpWzY0XSA9IHsKIAogI2lmIEhBVkVfSU5MSU5FX0FTTQogI2lmIEhBVkVfU1NFMl9J TkxJTkUKLXN0YXRpYyB2b2lkICBkZW5vaXNlX2RjdF9zc2UyKE1wZWdFbmNDb250ZXh0ICpzLCBp bnQxNl90ICpibG9jayl7Ci0gICAgY29uc3QgaW50IGludHJhPSBzLT5tYl9pbnRyYTsKK3N0YXRp YyB2b2lkIGRlbm9pc2VfZGN0X3NzZTIoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50MTZfdCBi bG9ja1tdKQoreworICAgIGNvbnN0IGludCBpbnRyYT0gcy0+Yy5tYl9pbnRyYTsKICAgICBpbnQg KnN1bT0gcy0+ZGN0X2Vycm9yX3N1bVtpbnRyYV07CiAgICAgdWludDE2X3QgKm9mZnNldD0gcy0+ ZGN0X29mZnNldFtpbnRyYV07CiAKQEAgLTEyOCw5ICsxMjksOSBAQCBzdGF0aWMgdm9pZCAgZGVu b2lzZV9kY3Rfc3NlMihNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2spewogI2VuZGlm IC8qIEhBVkVfU1NFMl9JTkxJTkUgKi8KICNlbmRpZiAvKiBIQVZFX0lOTElORV9BU00gKi8KIAot YXZfY29sZCB2b2lkIGZmX2RjdF9lbmNvZGVfaW5pdF94ODYoTXBlZ0VuY0NvbnRleHQgKnMpCith dl9jb2xkIHZvaWQgZmZfZGN0X2VuY29kZV9pbml0X3g4NihNUFZFbmNDb250ZXh0ICpjb25zdCBz KQogewotICAgIGNvbnN0IGludCBkY3RfYWxnbyA9IHMtPmF2Y3R4LT5kY3RfYWxnbzsKKyAgICBj b25zdCBpbnQgZGN0X2FsZ28gPSBzLT5jLmF2Y3R4LT5kY3RfYWxnbzsKIAogICAgIGlmIChkY3Rf YWxnbyA9PSBGRl9EQ1RfQVVUTyB8fCBkY3RfYWxnbyA9PSBGRl9EQ1RfTU1YKSB7CiAjaWYgSEFW RV9NTVhfSU5MSU5FCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3g4Ni9tcGVndmlkZW9lbmNfdGVt cGxhdGUuYyBiL2xpYmF2Y29kZWMveDg2L21wZWd2aWRlb2VuY190ZW1wbGF0ZS5jCmluZGV4IGY5 MzdjNzE2NmIuLjA4NjE5YWM1NzAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMveDg2L21wZWd2aWRl b2VuY190ZW1wbGF0ZS5jCisrKyBiL2xpYmF2Y29kZWMveDg2L21wZWd2aWRlb2VuY190ZW1wbGF0 ZS5jCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL21lbV9pbnRlcm5hbC5o IgogI2luY2x1ZGUgImxpYmF2dXRpbC94ODYvYXNtLmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9t cGVndXRpbHMuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlby5oIgorI2luY2x1ZGUg ImxpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgiCiAjaW5jbHVkZSAiZmRjdC5oIgogCiAjdW5kZWYg TU1SRUdfV0lEVEgKQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgICAgICAgICJwc3VidyAiYSIsICJi IiAgICAgICAgICAgICBcblx0IiAvLyBvdXQ9KChBQlMoYmxvY2tbaV0pKnFtYXRbMF0gLSBiaWFz WzBdKnFtYXRbMF0pPj4xNikqc2lnbihibG9ja1tpXSkKICNlbmRpZgogCi1zdGF0aWMgaW50IFJF TkFNRShkY3RfcXVhbnRpemUpKE1wZWdFbmNDb250ZXh0ICpzLAorc3RhdGljIGludCBSRU5BTUUo ZGN0X3F1YW50aXplKShNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgcXNjYWxlLCBpbnQgKm92ZXJmbG93KQogewpAQCAtMTA1LDE5ICsxMDUsMTkgQEAg c3RhdGljIGludCBSRU5BTUUoZGN0X3F1YW50aXplKShNcGVnRW5jQ29udGV4dCAqcywKICAgICBp ZihzLT5kY3RfZXJyb3Jfc3VtKQogICAgICAgICBzLT5kZW5vaXNlX2RjdChzLCBibG9jayk7CiAK LSAgICBpZiAocy0+bWJfaW50cmEpIHsKKyAgICBpZiAocy0+Yy5tYl9pbnRyYSkgewogICAgICAg ICBpbnQgZHVtbXk7CiAgICAgICAgIGlmIChuIDwgNCl7Ci0gICAgICAgICAgICBxID0gcy0+eV9k Y19zY2FsZTsKKyAgICAgICAgICAgIHEgPSBzLT5jLnlfZGNfc2NhbGU7CiAgICAgICAgICAgICBi aWFzID0gcy0+cV9pbnRyYV9tYXRyaXgxNltxc2NhbGVdWzFdOwogICAgICAgICAgICAgcW1hdCA9 IHMtPnFfaW50cmFfbWF0cml4MTZbcXNjYWxlXVswXTsKICAgICAgICAgfWVsc2V7Ci0gICAgICAg ICAgICBxID0gcy0+Y19kY19zY2FsZTsKKyAgICAgICAgICAgIHEgPSBzLT5jLmNfZGNfc2NhbGU7 CiAgICAgICAgICAgICBiaWFzID0gcy0+cV9jaHJvbWFfaW50cmFfbWF0cml4MTZbcXNjYWxlXVsx XTsKICAgICAgICAgICAgIHFtYXQgPSBzLT5xX2Nocm9tYV9pbnRyYV9tYXRyaXgxNltxc2NhbGVd WzBdOwogICAgICAgICB9CiAgICAgICAgIC8qIG5vdGU6IGJsb2NrWzBdIGlzIGFzc3VtZWQgdG8g YmUgcG9zaXRpdmUgKi8KLSAgICAgICAgaWYgKCFzLT5oMjYzX2FpYykgeworICAgICAgICBpZiAo IXMtPmMuaDI2M19haWMpIHsKICAgICAgICAgX19hc21fXyB2b2xhdGlsZSAoCiAgICAgICAgICAg ICAgICAgIm11bCAlJWVjeCAgICAgICAgICAgICAgICBcblx0IgogICAgICAgICAgICAgICAgIDog Ij1kIiAobGV2ZWwpLCAiPWEiKGR1bW15KQpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBpbnQg UkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgIHFtYXQgPSBz LT5xX2ludGVyX21hdHJpeDE2W3FzY2FsZV1bMF07CiAgICAgfQogCi0gICAgaWYoKHMtPm91dF9m b3JtYXQgPT0gRk1UX0gyNjMgfHwgcy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MSkgJiYgcy0+bXBl Z19xdWFudD09MCl7CisgICAgaWYoKHMtPmMub3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5j Lm91dF9mb3JtYXQgPT0gRk1UX0gyNjEpICYmIHMtPmMubXBlZ19xdWFudD09MCl7CiAKICAgICAg ICAgX19hc21fXyB2b2xhdGlsZSgKICAgICAgICAgICAgICJtb3ZkICUlIkZGX1JFR19hIiwgIk1N IjMgICAgICAgICAgIFxuXHQiIC8vIGxhc3Rfbm9uX3plcm9fcDEKQEAgLTIyMCwxMSArMjIwLDEx IEBAIHN0YXRpYyBpbnQgUkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQgKnMsCiAg ICAgICAgIDogImciIChzLT5tYXhfcWNvZWZmKQogICAgICk7CiAKLSAgICBpZihzLT5tYl9pbnRy YSkgYmxvY2tbMF09IGxldmVsOworICAgIGlmKHMtPmMubWJfaW50cmEpIGJsb2NrWzBdPSBsZXZl bDsKICAgICBlbHNlICAgICAgICAgICAgYmxvY2tbMF09IHRlbXBfYmxvY2tbMF07CiAKLSAgICBh dl9hc3NlcnQyKEFSQ0hfWDg2XzMyIHx8IHMtPmlkc3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVS TV9TSU1QTEUpOwotICAgIGlmIChBUkNIX1g4Nl8zMiAmJiBzLT5pZHNwLnBlcm1fdHlwZSA9PSBG Rl9JRENUX1BFUk1fU0lNUExFKSB7CisgICAgYXZfYXNzZXJ0MihBUkNIX1g4Nl8zMiB8fCBzLT5j Lmlkc3AucGVybV90eXBlICE9IEZGX0lEQ1RfUEVSTV9TSU1QTEUpOworICAgIGlmIChBUkNIX1g4 Nl8zMiAmJiBzLT5jLmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9TSU1QTEUpIHsKICAg ICAgICAgaWYobGFzdF9ub25femVyb19wMSA8PSAxKSBnb3RvIGVuZDsKICAgICAgICAgYmxvY2tb MHgwOF0gPSB0ZW1wX2Jsb2NrWzB4MDFdOyBibG9ja1sweDEwXSA9IHRlbXBfYmxvY2tbMHgwOF07 CiAgICAgICAgIGJsb2NrWzB4MjBdID0gdGVtcF9ibG9ja1sweDEwXTsKQEAgLTI2OCw3ICsyNjgs NyBAQCBzdGF0aWMgaW50IFJFTkFNRShkY3RfcXVhbnRpemUpKE1wZWdFbmNDb250ZXh0ICpzLAog ICAgICAgICBibG9ja1sweDNFXSA9IHRlbXBfYmxvY2tbMHgzRF07IGJsb2NrWzB4MjddID0gdGVt cF9ibG9ja1sweDM2XTsKICAgICAgICAgYmxvY2tbMHgzRF0gPSB0ZW1wX2Jsb2NrWzB4MkZdOyBi bG9ja1sweDJGXSA9IHRlbXBfYmxvY2tbMHgzN107CiAgICAgICAgIGJsb2NrWzB4MzddID0gdGVt cF9ibG9ja1sweDNFXTsgYmxvY2tbMHgzRl0gPSB0ZW1wX2Jsb2NrWzB4M0ZdOwotICAgIH1lbHNl IGlmKHMtPmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9MSUJNUEVHMil7CisgICAgfWVs c2UgaWYocy0+Yy5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fTElCTVBFRzIpewogICAg ICAgICBpZihsYXN0X25vbl96ZXJvX3AxIDw9IDEpIGdvdG8gZW5kOwogICAgICAgICBibG9ja1sw eDA0XSA9IHRlbXBfYmxvY2tbMHgwMV07CiAgICAgICAgIGJsb2NrWzB4MDhdID0gdGVtcF9ibG9j a1sweDA4XTsgYmxvY2tbMHgxMF0gPSB0ZW1wX2Jsb2NrWzB4MTBdOwpAQCAtMzEyLDcgKzMxMiw3 IEBAIHN0YXRpYyBpbnQgUkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQgKnMsCiAg ICAgICAgIGJsb2NrWzB4M0VdID0gdGVtcF9ibG9ja1sweDNEXTsgYmxvY2tbMHgzM10gPSB0ZW1w X2Jsb2NrWzB4MzZdOwogICAgICAgICBibG9ja1sweDJGXSA9IHRlbXBfYmxvY2tbMHgyRl07IGJs b2NrWzB4MzddID0gdGVtcF9ibG9ja1sweDM3XTsKICAgICAgICAgYmxvY2tbMHgzQl0gPSB0ZW1w X2Jsb2NrWzB4M0VdOyBibG9ja1sweDNGXSA9IHRlbXBfYmxvY2tbMHgzRl07Ci0gICAgfSBlbHNl IGlmIChzLT5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fTk9ORSkgeworICAgIH0gZWxz ZSBpZiAocy0+Yy5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fTk9ORSkgewogICAgICAg ICBpZihsYXN0X25vbl96ZXJvX3AxIDw9IDEpIGdvdG8gZW5kOwogICAgICAgICBibG9ja1sweDAx XSA9IHRlbXBfYmxvY2tbMHgwMV07CiAgICAgICAgIGJsb2NrWzB4MDhdID0gdGVtcF9ibG9ja1sw eDA4XTsgYmxvY2tbMHgxMF0gPSB0ZW1wX2Jsb2NrWzB4MTBdOwpAQCAtMzU2LDcgKzM1Niw3IEBA IHN0YXRpYyBpbnQgUkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAg ICAgIGJsb2NrWzB4M0RdID0gdGVtcF9ibG9ja1sweDNEXTsgYmxvY2tbMHgzNl0gPSB0ZW1wX2Js b2NrWzB4MzZdOwogICAgICAgICBibG9ja1sweDJGXSA9IHRlbXBfYmxvY2tbMHgyRl07IGJsb2Nr WzB4MzddID0gdGVtcF9ibG9ja1sweDM3XTsKICAgICAgICAgYmxvY2tbMHgzRV0gPSB0ZW1wX2Js b2NrWzB4M0VdOyBibG9ja1sweDNGXSA9IHRlbXBfYmxvY2tbMHgzRl07Ci0gICAgfSBlbHNlIGlm IChzLT5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fVFJBTlNQT1NFKSB7CisgICAgfSBl bHNlIGlmIChzLT5jLmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9UUkFOU1BPU0UpIHsK ICAgICAgICAgaWYobGFzdF9ub25femVyb19wMSA8PSAxKSBnb3RvIGVuZDsKICAgICAgICAgYmxv Y2tbMHgwOF0gPSB0ZW1wX2Jsb2NrWzB4MDFdOwogICAgICAgICBibG9ja1sweDAxXSA9IHRlbXBf YmxvY2tbMHgwOF07IGJsb2NrWzB4MDJdID0gdGVtcF9ibG9ja1sweDEwXTsKQEAgLTQwMSwxMiAr NDAxLDEyIEBAIHN0YXRpYyBpbnQgUkVOQU1FKGRjdF9xdWFudGl6ZSkoTXBlZ0VuY0NvbnRleHQg KnMsCiAgICAgICAgIGJsb2NrWzB4M0RdID0gdGVtcF9ibG9ja1sweDJGXTsgYmxvY2tbMHgzRV0g PSB0ZW1wX2Jsb2NrWzB4MzddOwogICAgICAgICBibG9ja1sweDM3XSA9IHRlbXBfYmxvY2tbMHgz RV07IGJsb2NrWzB4M0ZdID0gdGVtcF9ibG9ja1sweDNGXTsKICAgICB9IGVsc2UgewotICAgICAg ICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywgInMtPmlkc3AucGVybV90eXBlOiAlZFxu IiwKLSAgICAgICAgICAgICAgICAoaW50KXMtPmlkc3AucGVybV90eXBlKTsKLSAgICAgICAgYXZf YXNzZXJ0MChzLT5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fTk9ORSB8fAotICAgICAg ICAgICAgICAgIHMtPmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9MSUJNUEVHMiB8fAot ICAgICAgICAgICAgICAgIHMtPmlkc3AucGVybV90eXBlID09IEZGX0lEQ1RfUEVSTV9TSU1QTEUg fHwKLSAgICAgICAgICAgICAgICBzLT5pZHNwLnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fVFJB TlNQT1NFKTsKKyAgICAgICAgYXZfbG9nKHMtPmMuYXZjdHgsIEFWX0xPR19ERUJVRywgInMtPmMu aWRzcC5wZXJtX3R5cGU6ICVkXG4iLAorICAgICAgICAgICAgICAgIChpbnQpcy0+Yy5pZHNwLnBl cm1fdHlwZSk7CisgICAgICAgIGF2X2Fzc2VydDAocy0+Yy5pZHNwLnBlcm1fdHlwZSA9PSBGRl9J RENUX1BFUk1fTk9ORSB8fAorICAgICAgICAgICAgICAgIHMtPmMuaWRzcC5wZXJtX3R5cGUgPT0g RkZfSURDVF9QRVJNX0xJQk1QRUcyIHx8CisgICAgICAgICAgICAgICAgcy0+Yy5pZHNwLnBlcm1f dHlwZSA9PSBGRl9JRENUX1BFUk1fU0lNUExFIHx8CisgICAgICAgICAgICAgICAgcy0+Yy5pZHNw LnBlcm1fdHlwZSA9PSBGRl9JRENUX1BFUk1fVFJBTlNQT1NFKTsKICAgICB9CiAgICAgZW5kOgog ICAgIHJldHVybiBsYXN0X25vbl96ZXJvX3AxIC0gMTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNr YXNtL21vdGlvbi5jIGIvdGVzdHMvY2hlY2thc20vbW90aW9uLmMKaW5kZXggN2UzMjJkYTBkNS4u OTYwYTQxYThlZCAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vbW90aW9uLmMKKysrIGIvdGVz dHMvY2hlY2thc20vbW90aW9uLmMKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9t b3Rpb24oY29uc3QgY2hhciAqbmFtZSwgbWVfY21wX2Z1bmMgdGVzdF9mdW5jKQogICAgIExPQ0FM X0FMSUdORURfMTYodWludDhfdCwgaW1nMSwgW1dJRFRIICogSEVJR0hUXSk7CiAgICAgTE9DQUxf QUxJR05FRF8xNih1aW50OF90LCBpbWcyLCBbV0lEVEggKiBIRUlHSFRdKTsKIAotICAgIGRlY2xh cmVfZnVuY19lbW1zKEFWX0NQVV9GTEFHX01NWCwgaW50LCBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQg KmMsCisgICAgZGVjbGFyZV9mdW5jX2VtbXMoQVZfQ1BVX0ZMQUdfTU1YLCBpbnQsIE1QVkVuY0Nv bnRleHQgKmMsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYmxrMSAvKiBh bGlnbiB3aWR0aCAoOCBvciAxNikgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu dDhfdCAqYmxrMiAvKiBhbGlnbiAxICovLCBwdHJkaWZmX3Qgc3RyaWRlLAogICAgICAgICAgICAg ICAgICAgICAgIGludCBoKTsKLS0gCjIuNDUuMgoK --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0064-avcodec-mpeg12enc-speedhqenc-Optimize-writing-escape.patch" Content-Disposition: attachment; filename*0="0064-avcodec-mpeg12enc-speedhqenc-Optimize-writing-escape.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjNTk1YTNiMGEzMzZkNmIwNmI4YTE4ZTMwMDhhNmI3ZThmOTg5YzJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMjoyNjo0NyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNjQvNzddIGF2Y29kZWMvbXBlZzEyZW5jLCBzcGVlZGhxZW5jOiBPcHRpbWl6 ZSB3cml0aW5nIGVzY2FwZQogY29kZXMKClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJk dCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvbXBlZzEy ZW5jLmMgIHwgOSArKysrLS0tLS0KIGxpYmF2Y29kZWMvc3BlZWRocWVuYy5jIHwgOSArKysrLS0t LS0KIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWcxMmVuYy5jIGIvbGliYXZjb2RlYy9tcGVnMTJlbmMu YwppbmRleCA1YTkxZjlmZmYxLi41ODQ1NzNiNDY2IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21w ZWcxMmVuYy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZzEyZW5jLmMKQEAgLTYyOCwxMiArNjI4LDEx IEBAIG5leHRfY29lZjoKICAgICAgICAgICAgICAgICBwdXRfYml0cygmcy0+cGIsIHRhYmxlX3Zs Y1tjb2RlXVsxXSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhYmxlX3ZsY1tjb2Rl XVswXSA8PCAxKSArIHNpZ24pOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg ICAvKiBFc2NhcGUgc2VlbXMgdG8gYmUgcHJldHR5IHJhcmUgPDUlIHNvIEkgZG8gbm90IG9wdGlt aXplIGl0OwotICAgICAgICAgICAgICAgICAqIHRoZSBmb2xsb3dpbmcgdmFsdWUgaXMgdGhlIGNv bW1vbiBlc2NhcGUgdmFsdWUgZm9yIGJvdGgKLSAgICAgICAgICAgICAgICAgKiBwb3NzaWJsZSB0 YWJsZXMgKGkuZS4gdGFibGVfdmxjWzExMV0pLiAqLwotICAgICAgICAgICAgICAgIHB1dF9iaXRz KCZzLT5wYiwgNiwgMHgwMSk7CisgICAgICAgICAgICAgICAgLyogRXNjYXBlIHNlZW1zIHRvIGJl IHByZXR0eSByYXJlIDw1JSBzbyBJIGRvIG5vdCBvcHRpbWl6ZSBpdC4KKyAgICAgICAgICAgICAg ICAgKiBUaGUgZm9sbG93aW5nIGVuY29kZXMgcnVuIHRvZ2V0aGVyIHdpdGggdGhlIGNvbW1vbiBl c2NhcGUKKyAgICAgICAgICAgICAgICAgKiB2YWx1ZSBvZiBib3RoIHRhYmxlcyAwMDAwMDFiLiAq LworICAgICAgICAgICAgICAgIHB1dF9iaXRzKCZzLT5wYiwgNiArIDYsIDB4MDEgPDwgNiB8IHJ1 bik7CiAgICAgICAgICAgICAgICAgLyogZXNjYXBlOiBvbmx5IGNsaXAgaW4gdGhpcyBjYXNlICov Ci0gICAgICAgICAgICAgICAgcHV0X2JpdHMoJnMtPnBiLCA2LCBydW4pOwogICAgICAgICAgICAg ICAgIGlmIChzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUcxVklERU8pIHsKICAgICAg ICAgICAgICAgICAgICAgaWYgKGFsZXZlbCA8IDEyOCkgewogICAgICAgICAgICAgICAgICAgICAg ICAgcHV0X3NiaXRzKCZzLT5wYiwgOCwgbGV2ZWwpOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9z cGVlZGhxZW5jLmMgYi9saWJhdmNvZGVjL3NwZWVkaHFlbmMuYwppbmRleCA3ZGRmYjkyMDc2Li5l Y2JhMmNkODQwIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3NwZWVkaHFlbmMuYworKysgYi9saWJh dmNvZGVjL3NwZWVkaHFlbmMuYwpAQCAtMTk0LDExICsxOTQsMTAgQEAgc3RhdGljIHZvaWQgZW5j b2RlX2Jsb2NrKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IGludDE2X3QgYmxvY2tbXSwg aW50IG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZfc3BlZWRocV92bGNfdGFibGVb Y29kZV1bMF0gfCAoc2lnbiA8PCBmZl9zcGVlZGhxX3ZsY190YWJsZVtjb2RlXVsxXSkpOwogICAg ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBlc2NhcGUgc2VlbXMgdG8gYmUg cHJldHR5IHJhcmUgPDUlIHNvIEkgZG8gbm90IG9wdGltaXplIGl0OwotICAgICAgICAgICAgICAg ICAqIHRoZSB2YWx1ZXMgY29ycmVzcG9uZCB0byBmZl9zcGVlZGhxX3ZsY190YWJsZVsxMjFdICov Ci0gICAgICAgICAgICAgICAgcHV0X2JpdHNfbGUoJnMtPnBiLCA2LCAzMik7Ci0gICAgICAgICAg ICAgICAgLyogZXNjYXBlOiBvbmx5IGNsaXAgaW4gdGhpcyBjYXNlICovCi0gICAgICAgICAgICAg ICAgcHV0X2JpdHNfbGUoJnMtPnBiLCA2LCBydW4pOwotICAgICAgICAgICAgICAgIHB1dF9iaXRz X2xlKCZzLT5wYiwgMTIsIGxldmVsICsgMjA0OCk7CisgICAgICAgICAgICAgICAgICogVGhlIGZv bGxvd2luZyBlbmNvZGVzIHRoZSBlc2NhcGUgdmFsdWUgMTAwMDAwYiB0b2dldGhlciB3aXRoCisg ICAgICAgICAgICAgICAgICogcnVuIGFuZCBsZXZlbC4gKi8KKyAgICAgICAgICAgICAgICBwdXRf Yml0c19sZSgmcy0+cGIsIDYgKyA2ICsgMTIsIDB4MjAgfCBydW4gPDwgNiB8CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV2ZWwgKyAyMDQ4KSA8PCAx Mik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsYXN0X25vbl96ZXJvID0gaTsKICAgICAg ICAgfQotLSAKMi40NS4yCgo= --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0065-avcodec-mpegvideo_enc-Move-lambda-lambda2-to-MPVEncC.patch" Content-Disposition: attachment; filename*0="0065-avcodec-mpegvideo_enc-Move-lambda-lambda2-to-MPVEncC.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxMDBkMzNiNWVjMjhmNDUzNWNiY2MwMDA2MTgwN2YxMDk1NDMzYzVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMjo1MDowNiArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNjUvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogTW92ZSBsYW1iZGEsIGxh bWJkYTIgdG8KIE1QVkVuY0NvbnRleHQKClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJk dCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvaDI2M2Vu Yy5oICAgICAgIHwgIDIgKy0KIGxpYmF2Y29kZWMvbW90aW9uX2VzdC5jICAgIHwgMjQgKysrKysr KysrKystLS0tLS0tLS0tLQogbGliYXZjb2RlYy9tcGVnNHZpZGVvZW5jLmMgfCAgMiArLQogbGli YXZjb2RlYy9tcGVndmlkZW8uaCAgICAgfCAgMiAtLQogbGliYXZjb2RlYy9tcGVndmlkZW9fZW5j LmMgfCA0MiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogbGliYXZjb2Rl Yy9tcGVndmlkZW9lbmMuaCAgfCAgMiArKwogbGliYXZjb2RlYy9zbm93ZW5jLmMgICAgICAgfCAg NiArKystLS0KIGxpYmF2Y29kZWMvc3ZxMWVuYy5jICAgICAgIHwgIDYgKysrLS0tCiA4IGZpbGVz IGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvaDI2M2VuYy5oIGIvbGliYXZjb2RlYy9oMjYzZW5jLmgKaW5kZXggMWY0NTlh MzMyYy4uNjNhZjNhNTc2ZiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9oMjYzZW5jLmgKKysrIGIv bGliYXZjb2RlYy9oMjYzZW5jLmgKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGlubGluZSBpbnQg Z2V0X3BfY2JwKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgIGludCBiZXN0X2NicGNf c2NvcmUgPSBJTlRfTUFYOwogICAgICAgICBpbnQgY2JwYyA9ICgtMSksIGNicHkgPSAoLTEpOwog ICAgICAgICBjb25zdCBpbnQgb2Zmc2V0ID0gKHMtPmMubXZfdHlwZSA9PSBNVl9UWVBFXzE2WDE2 ID8gMCA6IDE2KSArIChzLT5kcXVhbnQgPyA4IDogMCk7Ci0gICAgICAgIGNvbnN0IGludCBsYW1i ZGEgPSBzLT5jLmxhbWJkYTIgPj4gKEZGX0xBTUJEQV9TSElGVCAtIDYpOworICAgICAgICBjb25z dCBpbnQgbGFtYmRhID0gcy0+bGFtYmRhMiA+PiAoRkZfTEFNQkRBX1NISUZUIC0gNik7CiAKICAg ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgIGludCBzY29y ZSA9IGZmX2gyNjNfaW50ZXJfTUNCUENfYml0c1tpICsgb2Zmc2V0XSAqIGxhbWJkYTsKZGlmZiAt LWdpdCBhL2xpYmF2Y29kZWMvbW90aW9uX2VzdC5jIGIvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmMK aW5kZXggOTIzYmY1Njg3Yi4uYjJiODg4MjM3YiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tb3Rp b25fZXN0LmMKKysrIGIvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmMKQEAgLTkwMiw5ICs5MDIsOSBA QCB2b2lkIGZmX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMs CiAgICAgYXZfYXNzZXJ0MChzLT5jLmxpbmVzaXplID09IGMtPnN0cmlkZSk7CiAgICAgYXZfYXNz ZXJ0MChzLT5jLnV2bGluZXNpemUgPT0gYy0+dXZzdHJpZGUpOwogCi0gICAgYy0+cGVuYWx0eV9m YWN0b3IgICAgID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmMubGFtYmRhLCBzLT5jLmxhbWJkYTIs IGMtPmF2Y3R4LT5tZV9jbXApOwotICAgIGMtPnN1Yl9wZW5hbHR5X2ZhY3RvciA9IGdldF9wZW5h bHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0eC0+bWVfc3ViX2Nt cCk7Ci0gICAgYy0+bWJfcGVuYWx0eV9mYWN0b3IgID0gZ2V0X3BlbmFsdHlfZmFjdG9yKHMtPmMu bGFtYmRhLCBzLT5jLmxhbWJkYTIsIGMtPmF2Y3R4LT5tYl9jbXApOworICAgIGMtPnBlbmFsdHlf ZmFjdG9yICAgICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5sYW1iZGEsIHMtPmxhbWJkYTIsIGMt PmF2Y3R4LT5tZV9jbXApOworICAgIGMtPnN1Yl9wZW5hbHR5X2ZhY3RvciA9IGdldF9wZW5hbHR5 X2ZhY3RvcihzLT5sYW1iZGEsIHMtPmxhbWJkYTIsIGMtPmF2Y3R4LT5tZV9zdWJfY21wKTsKKyAg ICBjLT5tYl9wZW5hbHR5X2ZhY3RvciAgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+bGFtYmRhLCBz LT5sYW1iZGEyLCBjLT5hdmN0eC0+bWJfY21wKTsKICAgICBjLT5jdXJyZW50X212X3BlbmFsdHkg PSBjLT5tdl9wZW5hbHR5W3MtPmMuZl9jb2RlXSArIE1BWF9ETVY7CiAKICAgICBnZXRfbGltaXRz KHMsIDE2Km1iX3gsIDE2Km1iX3ksIDApOwpAQCAtOTY4LDE0ICs5NjgsMTQgQEAgdm9pZCBmZl9l c3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihNUFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgIGMtPm1j X21iX3Zhcl9zdW1fdGVtcCArPSAodmFyZCsxMjgpPj44OwogCiAgICAgaWYgKGMtPmF2Y3R4LT5t Yl9kZWNpc2lvbiA+IEZGX01CX0RFQ0lTSU9OX1NJTVBMRSkgewotICAgICAgICBpbnQgcF9zY29y ZSA9IEZGTUlOKHZhcmQsIHZhcmMgLSA1MDAgKyAocy0+Yy5sYW1iZGEyID4+IEZGX0xBTUJEQV9T SElGVCkqMTAwKTsKLSAgICAgICAgaW50IGlfc2NvcmUgPSB2YXJjIC0gNTAwICsgKHMtPmMubGFt YmRhMiA+PiBGRl9MQU1CREFfU0hJRlQpKjIwOworICAgICAgICBpbnQgcF9zY29yZSA9IEZGTUlO KHZhcmQsIHZhcmMgLSA1MDAgKyAocy0+bGFtYmRhMiA+PiBGRl9MQU1CREFfU0hJRlQpKjEwMCk7 CisgICAgICAgIGludCBpX3Njb3JlID0gdmFyYyAtIDUwMCArIChzLT5sYW1iZGEyID4+IEZGX0xB TUJEQV9TSElGVCkqMjA7CiAgICAgICAgIGMtPnNjZW5lX2NoYW5nZV9zY29yZSs9IGZmX3NxcnQo cF9zY29yZSkgLSBmZl9zcXJ0KGlfc2NvcmUpOwogCiAgICAgICAgIGlmICh2YXJkKjIgKyAyMDAq MjU2ID4gdmFyYyAmJiAhcy0+aW50cmFfcGVuYWx0eSkKICAgICAgICAgICAgIG1iX3R5cGV8PSBD QU5ESURBVEVfTUJfVFlQRV9JTlRSQTsKICAgICAgICAgaWYgKHZhcmMqMiArIDIwMCoyNTYgPiB2 YXJkIHx8IHMtPmMucXNjYWxlID4gMjQpewotLy8gICAgICAgIGlmICh2YXJjKjIgKyAyMDAqMjU2 ICsgNTAqKHMtPmMubGFtYmRhMj4+RkZfTEFNQkRBX1NISUZUKSA+IHZhcmQpeworLy8gICAgICAg IGlmICh2YXJjKjIgKyAyMDAqMjU2ICsgNTAqKHMtPmxhbWJkYTI+PkZGX0xBTUJEQV9TSElGVCkg PiB2YXJkKXsKICAgICAgICAgICAgIG1iX3R5cGV8PSBDQU5ESURBVEVfTUJfVFlQRV9JTlRFUjsK ICAgICAgICAgICAgIGMtPnN1Yl9tb3Rpb25fc2VhcmNoKHMsICZteCwgJm15LCBkbWluLCAwLCAw LCAwLCAxNik7CiAgICAgICAgICAgICBpZiAocy0+bXB2X2ZsYWdzICYgRkZfTVBWX0ZMQUdfTVYw KQpAQCAtMTA1MCw4ICsxMDUwLDggQEAgdm9pZCBmZl9lc3RpbWF0ZV9wX2ZyYW1lX21vdGlvbihN UFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgcy0+Yy5jdXJfcGljLm1iX3R5cGVb bWJfeSpzLT5jLm1iX3N0cmlkZSArIG1iX3hdID0gMDsKIAogICAgICAgICB7Ci0gICAgICAgICAg ICBpbnQgcF9zY29yZSA9IEZGTUlOKHZhcmQsIHZhcmMtNTAwKyhzLT5jLmxhbWJkYTI+PkZGX0xB TUJEQV9TSElGVCkqMTAwKTsKLSAgICAgICAgICAgIGludCBpX3Njb3JlID0gdmFyYy01MDArKHMt PmMubGFtYmRhMj4+RkZfTEFNQkRBX1NISUZUKSoyMDsKKyAgICAgICAgICAgIGludCBwX3Njb3Jl ID0gRkZNSU4odmFyZCwgdmFyYy01MDArKHMtPmxhbWJkYTI+PkZGX0xBTUJEQV9TSElGVCkqMTAw KTsKKyAgICAgICAgICAgIGludCBpX3Njb3JlID0gdmFyYy01MDArKHMtPmxhbWJkYTI+PkZGX0xB TUJEQV9TSElGVCkqMjA7CiAgICAgICAgICAgICBjLT5zY2VuZV9jaGFuZ2Vfc2NvcmUrPSBmZl9z cXJ0KHBfc2NvcmUpIC0gZmZfc3FydChpX3Njb3JlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTEw NzEsNyArMTA3MSw3IEBAIGludCBmZl9wcmVfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTVBWRW5j Q29udGV4dCAqY29uc3QgcywKIAogICAgIGF2X2Fzc2VydDAocy0+Yy5xdWFydGVyX3NhbXBsZT09 MCB8fCBzLT5jLnF1YXJ0ZXJfc2FtcGxlPT0xKTsKIAotICAgIGMtPnByZV9wZW5hbHR5X2ZhY3Rv ciA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0 eC0+bWVfcHJlX2NtcCk7CisgICAgYy0+cHJlX3BlbmFsdHlfZmFjdG9yID0gZ2V0X3BlbmFsdHlf ZmFjdG9yKHMtPmxhbWJkYSwgcy0+bGFtYmRhMiwgYy0+YXZjdHgtPm1lX3ByZV9jbXApOwogICAg IGMtPmN1cnJlbnRfbXZfcGVuYWx0eSA9IGMtPm12X3BlbmFsdHlbcy0+Yy5mX2NvZGVdICsgTUFY X0RNVjsKIAogICAgIGdldF9saW1pdHMocywgMTYqbWJfeCwgMTYqbWJfeSwgMCk7CkBAIC0xNTEw LDkgKzE1MTAsOSBAQCB2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRl eHQgKmNvbnN0IHMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjLT5wZW5hbHR5X2Zh Y3RvciAgICA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBj LT5hdmN0eC0+bWVfY21wKTsKLSAgICBjLT5zdWJfcGVuYWx0eV9mYWN0b3I9IGdldF9wZW5hbHR5 X2ZhY3RvcihzLT5jLmxhbWJkYSwgcy0+Yy5sYW1iZGEyLCBjLT5hdmN0eC0+bWVfc3ViX2NtcCk7 Ci0gICAgYy0+bWJfcGVuYWx0eV9mYWN0b3IgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+Yy5sYW1i ZGEsIHMtPmMubGFtYmRhMiwgYy0+YXZjdHgtPm1iX2NtcCk7CisgICAgYy0+cGVuYWx0eV9mYWN0 b3IgICAgPSBnZXRfcGVuYWx0eV9mYWN0b3Iocy0+bGFtYmRhLCBzLT5sYW1iZGEyLCBjLT5hdmN0 eC0+bWVfY21wKTsKKyAgICBjLT5zdWJfcGVuYWx0eV9mYWN0b3I9IGdldF9wZW5hbHR5X2ZhY3Rv cihzLT5sYW1iZGEsIHMtPmxhbWJkYTIsIGMtPmF2Y3R4LT5tZV9zdWJfY21wKTsKKyAgICBjLT5t Yl9wZW5hbHR5X2ZhY3RvciA9IGdldF9wZW5hbHR5X2ZhY3RvcihzLT5sYW1iZGEsIHMtPmxhbWJk YTIsIGMtPmF2Y3R4LT5tYl9jbXApOwogCiAgICAgaWYgKHMtPmMuY29kZWNfaWQgPT0gQVZfQ09E RUNfSURfTVBFRzQpCiAgICAgICAgIGRtaW49IGRpcmVjdF9zZWFyY2gocywgbWJfeCwgbWJfeSk7 CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWc0dmlkZW9lbmMuYyBiL2xpYmF2Y29kZWMvbXBl ZzR2aWRlb2VuYy5jCmluZGV4IDlmOTMzYjUxN2UuLmZlZmQ5NGVlOTkgMTAwNjQ0Ci0tLSBhL2xp YmF2Y29kZWMvbXBlZzR2aWRlb2VuYy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZzR2aWRlb2VuYy5j CkBAIC00NjEsNyArNDYxLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X2JfY2JwKE1QVkVuY0Nv bnRleHQgKmNvbnN0IHMsIGludDE2X3QgYmxvY2tbNl1bNjRdLAogCiAgICAgaWYgKHMtPm1wdl9m bGFncyAmIEZGX01QVl9GTEFHX0NCUF9SRCkgewogICAgICAgICBpbnQgc2NvcmUgICAgICAgID0g MDsKLSAgICAgICAgY29uc3QgaW50IGxhbWJkYSA9IHMtPmMubGFtYmRhMiA+PiAoRkZfTEFNQkRB X1NISUZUIC0gNik7CisgICAgICAgIGNvbnN0IGludCBsYW1iZGEgPSBzLT5sYW1iZGEyID4+IChG Rl9MQU1CREFfU0hJRlQgLSA2KTsKIAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7 CiAgICAgICAgICAgICBpZiAocy0+Y29kZWRfc2NvcmVbaV0gPCAwKSB7CmRpZmYgLS1naXQgYS9s aWJhdmNvZGVjL21wZWd2aWRlby5oIGIvbGliYXZjb2RlYy9tcGVndmlkZW8uaAppbmRleCBhZGFh MGNmMmQwLi41MzAxMzM4MTg4IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlby5oCisr KyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgKQEAgLTE2Niw4ICsxNjYsNiBAQCB0eXBlZGVmIHN0 cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAKICAgICBpbnQgcXNjYWxlOyAgICAgICAgICAgICAgICAg Ly8vPCBRUAogICAgIGludCBjaHJvbWFfcXNjYWxlOyAgICAgICAgICAvLy88IGNocm9tYSBRUAot ICAgIHVuc2lnbmVkIGludCBsYW1iZGE7ICAgICAgICAvLy88IExhZ3JhbmdlIG11bHRpcGxpZXIg dXNlZCBpbiByYXRlIGRpc3RvcnRpb24KLSAgICB1bnNpZ25lZCBpbnQgbGFtYmRhMjsgICAgICAg Ly8vPCAobGFtYmRhKmxhbWJkYSkgPj4gRkZfTEFNQkRBX1NISUZUCiAgICAgaW50IHBpY3RfdHlw ZTsgICAgICAgICAgICAgIC8vLzwgQVZfUElDVFVSRV9UWVBFX0ksIEFWX1BJQ1RVUkVfVFlQRV9Q LCBBVl9QSUNUVVJFX1RZUEVfQiwgLi4uCiAgICAgaW50IGRyb3BwYWJsZTsKIApkaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgYi9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMu YwppbmRleCA3MDYxYWQwNzE5Li42YzFkMTU3YjY0IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21w ZWd2aWRlb19lbmMuYworKysgYi9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYwpAQCAtMjA0LDcg KzIwNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfcXNjYWxlKE1QVk1haW5FbmNDb250 ZXh0ICpjb25zdCBtKQogICAgICAgICBpbnQgYmVzdCA9IDE7CiAKICAgICAgICAgZm9yIChpID0g MCA7IGk8RkZfQVJSQVlfRUxFTVMoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGUpOyBpKyspIHsK LSAgICAgICAgICAgIGludCBkaWZmID0gRkZBQlMoKGZmX21wZWcyX25vbl9saW5lYXJfcXNjYWxl W2ldPDwoRkZfTEFNQkRBX1NISUZUICsgNikpIC0gKGludClzLT5jLmxhbWJkYSAqIDEzOSk7Cisg ICAgICAgICAgICBpbnQgZGlmZiA9IEZGQUJTKChmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtp XTw8KEZGX0xBTUJEQV9TSElGVCArIDYpKSAtIChpbnQpcy0+bGFtYmRhICogMTM5KTsKICAgICAg ICAgICAgIGlmIChmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtpXSA8IHMtPmMuYXZjdHgtPnFt aW4gfHwKICAgICAgICAgICAgICAgICAoZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbaV0gPiBz LT5jLmF2Y3R4LT5xbWF4ICYmICFtLT52YnZfaWdub3JlX3FtYXgpKQogICAgICAgICAgICAgICAg IGNvbnRpbnVlOwpAQCAtMjE1LDEyICsyMTUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0 ZV9xc2NhbGUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0pCiAgICAgICAgIH0KICAgICAgICAg cy0+Yy5xc2NhbGUgPSBiZXN0OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHMtPmMucXNjYWxlID0g KHMtPmMubGFtYmRhICogMTM5ICsgRkZfTEFNQkRBX1NDQUxFICogNjQpID4+CisgICAgICAgIHMt PmMucXNjYWxlID0gKHMtPmxhbWJkYSAqIDEzOSArIEZGX0xBTUJEQV9TQ0FMRSAqIDY0KSA+Pgog ICAgICAgICAgICAgICAgICAgICAoRkZfTEFNQkRBX1NISUZUICsgNyk7CiAgICAgICAgIHMtPmMu cXNjYWxlID0gYXZfY2xpcChzLT5jLnFzY2FsZSwgcy0+Yy5hdmN0eC0+cW1pbiwgbS0+dmJ2X2ln bm9yZV9xbWF4ID8gMzEgOiBzLT5jLmF2Y3R4LT5xbWF4KTsKICAgICB9CiAKLSAgICBzLT5jLmxh bWJkYTIgPSAocy0+Yy5sYW1iZGEgKiBzLT5jLmxhbWJkYSArIEZGX0xBTUJEQV9TQ0FMRSAvIDIp ID4+CisgICAgcy0+bGFtYmRhMiA9IChzLT5sYW1iZGEgKiBzLT5sYW1iZGEgKyBGRl9MQU1CREFf U0NBTEUgLyAyKSA+PgogICAgICAgICAgICAgICAgICBGRl9MQU1CREFfU0hJRlQ7CiB9CiAKQEAg LTI2MSw4ICsyNjEsOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfZHVwbGljYXRlX2NvbnRleHRfYWZ0 ZXJfbWUoTVBWRW5jQ29udGV4dCAqY29uc3QgZHN0LAogICAgIENPUFkoYy5mX2NvZGUpOwogICAg IENPUFkoYy5iX2NvZGUpOwogICAgIENPUFkoYy5xc2NhbGUpOwotICAgIENPUFkoYy5sYW1iZGEp OwotICAgIENPUFkoYy5sYW1iZGEyKTsKKyAgICBDT1BZKGxhbWJkYSk7CisgICAgQ09QWShsYW1i ZGEyKTsKICAgICBDT1BZKGMuZnJhbWVfcHJlZF9mcmFtZV9kY3QpOyAvLyBGSVhNRSBkb24ndCBz ZXQgaW4gZW5jb2RlX2hlYWRlcgogICAgIENPUFkoYy5wcm9ncmVzc2l2ZV9mcmFtZSk7ICAgIC8v IEZJWE1FIGRvbid0IHNldCBpbiBlbmNvZGVfaGVhZGVyCiAgICAgQ09QWShjLnBhcnRpdGlvbmVk X2ZyYW1lKTsgICAgLy8gRklYTUUgZG9uJ3Qgc2V0IGluIGVuY29kZV9oZWFkZXIKQEAgLTE0NzYs NyArMTQ3Niw3IEBAIHN0YXRpYyBpbnQgc2tpcF9jaGVjayhNUFZNYWluRW5jQ29udGV4dCAqY29u c3QgbSwKIAogICAgIGlmIChzY29yZTY0IDwgbS0+ZnJhbWVfc2tpcF90aHJlc2hvbGQpCiAgICAg ICAgIHJldHVybiAxOwotICAgIGlmIChzY29yZTY0IDwgKChtLT5mcmFtZV9za2lwX2ZhY3RvciAq IChpbnQ2NF90KSBzLT5jLmxhbWJkYSkgPj4gOCkpCisgICAgaWYgKHNjb3JlNjQgPCAoKG0tPmZy YW1lX3NraXBfZmFjdG9yICogKGludDY0X3QpIHMtPmxhbWJkYSkgPj4gOCkpCiAgICAgICAgIHJl dHVybiAxOwogICAgIHJldHVybiAwOwogfQpAQCAtMTk5MSw4ICsxOTkxLDggQEAgdmJ2X3JldHJ5 OgogICAgICAgICAgICAgaW50IG1pbl9zdGVwID0gaHEgPyAxIDogKDE8PChGRl9MQU1CREFfU0hJ RlQgKyA3KSkvMTM5OwogCiAgICAgICAgICAgICBpZiAocHV0X2JpdHNfY291bnQoJnMtPnBiKSA+ IG1heF9zaXplICYmCi0gICAgICAgICAgICAgICAgcy0+Yy5sYW1iZGEgPCBtLT5sbWF4KSB7Ci0g ICAgICAgICAgICAgICAgbS0+bmV4dF9sYW1iZGEgPSBGRk1BWChzLT5jLmxhbWJkYSArIG1pbl9z dGVwLCBzLT5jLmxhbWJkYSAqCisgICAgICAgICAgICAgICAgcy0+bGFtYmRhIDwgbS0+bG1heCkg eworICAgICAgICAgICAgICAgIG0tPm5leHRfbGFtYmRhID0gRkZNQVgocy0+bGFtYmRhICsgbWlu X3N0ZXAsIHMtPmxhbWJkYSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocy0+Yy5xc2NhbGUgKyAxKSAvIHMtPmMucXNjYWxlKTsKICAgICAgICAgICAgICAgICBpZiAo cy0+YWRhcHRpdmVfcXVhbnQpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBzLT5jLm1iX2hlaWdodCAqIHMtPmMubWJfc3RyaWRlOyBpKyspCkBAIC0yMjk3LDggKzIy OTcsOCBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGVuY29kZV9tYl9pbnRlcm5hbChN UFZFbmNDb250ZXh0ICpjb25zdCBzLAogICAgICAgICBjb25zdCBpbnQgbGFzdF9xcCA9IHMtPmMu cXNjYWxlOwogICAgICAgICBjb25zdCBpbnQgbWJfeHkgPSBtYl94ICsgbWJfeSAqIHMtPmMubWJf c3RyaWRlOwogCi0gICAgICAgIHMtPmMubGFtYmRhID0gcy0+bGFtYmRhX3RhYmxlW21iX3h5XTsK LSAgICAgICAgcy0+Yy5sYW1iZGEyID0gKHMtPmMubGFtYmRhICogcy0+Yy5sYW1iZGEgKyBGRl9M QU1CREFfU0NBTEUgLyAyKSA+PgorICAgICAgICBzLT5sYW1iZGEgID0gcy0+bGFtYmRhX3RhYmxl W21iX3h5XTsKKyAgICAgICAgcy0+bGFtYmRhMiA9IChzLT5sYW1iZGEgKiBzLT5sYW1iZGEgKyBG Rl9MQU1CREFfU0NBTEUgLyAyKSA+PgogICAgICAgICAgICAgICAgICAgICAgICBGRl9MQU1CREFf U0hJRlQ7CiAKICAgICAgICAgaWYgKCEocy0+bXB2X2ZsYWdzICYgRkZfTVBWX0ZMQUdfUVBfUkQp KSB7CkBAIC0yNzIzLDcgKzI3MjMsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfbWJfaHEoTVBWRW5j Q29udGV4dCAqY29uc3QgcywgTVBWRW5jQ29udGV4dCAqY29uc3QgYmFja3VwLCBNUAogICAgIGlm KHMtPmMuYXZjdHgtPm1iX2RlY2lzaW9uID09IEZGX01CX0RFQ0lTSU9OX1JEKXsKICAgICAgICAg bXB2X3JlY29uc3RydWN0X21iKHMsIHMtPmMuYmxvY2spOwogCi0gICAgICAgIHNjb3JlICo9IHMt PmMubGFtYmRhMjsKKyAgICAgICAgc2NvcmUgKj0gcy0+bGFtYmRhMjsKICAgICAgICAgc2NvcmUg Kz0gc3NlX21iKHMpIDw8IEZGX0xBTUJEQV9TSElGVDsKICAgICB9CiAKQEAgLTM2NTEsMTAgKzM2 NTEsMTAgQEAgc3RhdGljIGludCBlc3RpbWF0ZV9xcChNUFZNYWluRW5jQ29udGV4dCAqY29uc3Qg bSwgaW50IGRyeV9ydW4pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAg IHMtPmMubGFtYmRhPSBzLT5sYW1iZGFfdGFibGVbMF07CisgICAgICAgIHMtPmxhbWJkYSA9IHMt PmxhbWJkYV90YWJsZVswXTsKICAgICAgICAgLy9GSVhNRSBicm9rZW4KICAgICB9ZWxzZQotICAg ICAgICBzLT5jLmxhbWJkYSA9IHMtPmMuY3VyX3BpYy5wdHItPmYtPnF1YWxpdHk7CisgICAgICAg IHMtPmxhbWJkYSA9IHMtPmMuY3VyX3BpYy5wdHItPmYtPnF1YWxpdHk7CiAgICAgdXBkYXRlX3Fz Y2FsZShtKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTM2OTUsNyArMzY5NSw3IEBAIHN0YXRpYyBp bnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWUGFj a2V0ICpwa3QpCiAKICAgICBzLT5jLm1lLnNjZW5lX2NoYW5nZV9zY29yZT0wOwogCi0vLyAgICBz LT5jLmxhbWJkYT0gcy0+Yy5jdXJfcGljLnB0ci0+cXVhbGl0eTsgLy9GSVhNRSBxc2NhbGUgLyAu Li4gc3R1ZmYgZm9yIE1FIHJhdGUgZGlzdG9ydGlvbgorLy8gICAgcy0+bGFtYmRhID0gcy0+Yy5j dXJfcGljLnB0ci0+cXVhbGl0eTsgLy9GSVhNRSBxc2NhbGUgLyAuLi4gc3R1ZmYgZm9yIE1FIHJh dGUgZGlzdG9ydGlvbgogCiAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQ RV9JKSB7CiAgICAgICAgIHMtPmMubm9fcm91bmRpbmcgPSBzLT5jLm1zbXBlZzRfdmVyc2lvbiA+ PSBNU01QNF9WMzsKQEAgLTM3MTAsOSArMzcxMCw5IEBAIHN0YXRpYyBpbnQgZW5jb2RlX3BpY3R1 cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWUGFja2V0ICpwa3QpCiAgICAg ICAgIGZmX2dldF8ycGFzc19mY29kZShtKTsKICAgICB9IGVsc2UgaWYgKCEocy0+Yy5hdmN0eC0+ ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1FTQ0FMRSkpIHsKICAgICAgICAgaWYocy0+Yy5waWN0X3R5 cGU9PUFWX1BJQ1RVUkVfVFlQRV9CKQotICAgICAgICAgICAgcy0+Yy5sYW1iZGEgPSBtLT5sYXN0 X2xhbWJkYV9mb3Jbcy0+Yy5waWN0X3R5cGVdOworICAgICAgICAgICAgcy0+bGFtYmRhID0gbS0+ bGFzdF9sYW1iZGFfZm9yW3MtPmMucGljdF90eXBlXTsKICAgICAgICAgZWxzZQotICAgICAgICAg ICAgcy0+Yy5sYW1iZGEgPSBtLT5sYXN0X2xhbWJkYV9mb3JbbS0+bGFzdF9ub25fYl9waWN0X3R5 cGVdOworICAgICAgICAgICAgcy0+bGFtYmRhID0gbS0+bGFzdF9sYW1iZGFfZm9yW20tPmxhc3Rf bm9uX2JfcGljdF90eXBlXTsKICAgICAgICAgdXBkYXRlX3FzY2FsZShtKTsKICAgICB9CiAKQEAg LTM3MjgsNiArMzcyOCw4IEBAIHN0YXRpYyBpbnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0Nv bnRleHQgKmNvbnN0IG0sIGNvbnN0IEFWUGFja2V0ICpwa3QpCiAgICAgICAgICAgICByZXQgPSBm Zl91cGRhdGVfZHVwbGljYXRlX2NvbnRleHQoJnNsaWNlLT5jLCAmcy0+Yyk7CiAgICAgICAgICAg ICBpZiAocmV0IDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAg c2xpY2UtPmxhbWJkYSAgPSBzLT5sYW1iZGE7CisgICAgICAgICAgICBzbGljZS0+bGFtYmRhMiA9 IHMtPmxhbWJkYTI7CiAgICAgICAgIH0KICAgICAgICAgc2xpY2UtPmMubWUudGVtcCA9IHNsaWNl LT5jLm1lLnNjcmF0Y2hwYWQgPSBzbGljZS0+Yy5zYy5zY3JhdGNocGFkX2J1ZjsKIApAQCAtMzc0 MCw4ICszNzQyLDggQEAgc3RhdGljIGludCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4 dCAqY29uc3QgbSwgY29uc3QgQVZQYWNrZXQgKnBrdCkKIAogICAgIC8qIEVzdGltYXRlIG1vdGlv biBmb3IgZXZlcnkgTUIgKi8KICAgICBpZiAocy0+Yy5waWN0X3R5cGUgIT0gQVZfUElDVFVSRV9U WVBFX0kpIHsKLSAgICAgICAgcy0+Yy5sYW1iZGEgID0gKHMtPmMubGFtYmRhICAqIG0tPm1lX3Bl bmFsdHlfY29tcGVuc2F0aW9uICsgMTI4KSA+PiA4OwotICAgICAgICBzLT5jLmxhbWJkYTIgPSAo cy0+Yy5sYW1iZGEyICogKGludDY0X3QpIG0tPm1lX3BlbmFsdHlfY29tcGVuc2F0aW9uICsgMTI4 KSA+PiA4OworICAgICAgICBzLT5sYW1iZGEgID0gKHMtPmxhbWJkYSAgKiBtLT5tZV9wZW5hbHR5 X2NvbXBlbnNhdGlvbiArIDEyOCkgPj4gODsKKyAgICAgICAgcy0+bGFtYmRhMiA9IChzLT5sYW1i ZGEyICogKGludDY0X3QpIG0tPm1lX3BlbmFsdHlfY29tcGVuc2F0aW9uICsgMTI4KSA+PiA4Owog ICAgICAgICBpZiAocy0+Yy5waWN0X3R5cGUgIT0gQVZfUElDVFVSRV9UWVBFX0IpIHsKICAgICAg ICAgICAgIGlmICgobS0+bWVfcHJlICYmIG0tPmxhc3Rfbm9uX2JfcGljdF90eXBlID09IEFWX1BJ Q1RVUkVfVFlQRV9JKSB8fAogICAgICAgICAgICAgICAgIG0tPm1lX3ByZSA9PSAyKSB7CkBAIC0z OTcyLDcgKzM5NzQsNyBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV90cmVsbGlzX2MoTVBWRW5j Q29udGV4dCAqY29uc3QgcywKICAgICBpbnQgcW11bCwgcWFkZCwgc3RhcnRfaSwgbGFzdF9ub25f emVybywgaSwgZGM7CiAgICAgY29uc3QgaW50IGVzY19sZW5ndGg9IHMtPmFjX2VzY19sZW5ndGg7 CiAgICAgY29uc3QgdWludDhfdCAqbGVuZ3RoLCAqbGFzdF9sZW5ndGg7Ci0gICAgY29uc3QgaW50 IGxhbWJkYT0gcy0+Yy5sYW1iZGEyID4+IChGRl9MQU1CREFfU0hJRlQgLSA2KTsKKyAgICBjb25z dCBpbnQgbGFtYmRhID0gcy0+bGFtYmRhMiA+PiAoRkZfTEFNQkRBX1NISUZUIC0gNik7CiAgICAg aW50IG1wZWcyX3FzY2FsZTsKIAogICAgIHMtPmZkc3AuZmRjdChibG9jayk7CkBAIC00MzYyLDcg KzQzNjQsNyBAQCBzdGF0aWMgaW50IGRjdF9xdWFudGl6ZV9yZWZpbmUoTVBWRW5jQ29udGV4dCAq Y29uc3QgcywgLy9GSVhNRSBicmVha3MgZGVub2lzZT8KICAgICAgICAgYXZfYXNzZXJ0Mih3PCgx PDw2KSk7CiAgICAgICAgIHN1bSArPSB3Knc7CiAgICAgfQotICAgIGxhbWJkYT0gc3VtKih1aW50 NjRfdClzLT5jLmxhbWJkYTIgPj4gKEZGX0xBTUJEQV9TSElGVCAtIDYgKyA2ICsgNiArIDYpOwor ICAgIGxhbWJkYSA9IHN1bSoodWludDY0X3Qpcy0+bGFtYmRhMiA+PiAoRkZfTEFNQkRBX1NISUZU IC0gNiArIDYgKyA2ICsgNik7CiAKICAgICBydW49MDsKICAgICBybGVfaW5kZXg9MDsKZGlmZiAt LWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmggYi9saWJhdmNvZGVjL21wZWd2aWRlb2Vu Yy5oCmluZGV4IDFkMTI0YjFiZDEuLmEyYjU0NGQ3MGUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMv bXBlZ3ZpZGVvZW5jLmgKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9lbmMuaApAQCAtNDcsNiAr NDcsOCBAQCB0eXBlZGVmIHN0cnVjdCBNUFZFbmNDb250ZXh0IHsKICAgICAvKiogYml0IG91dHB1 dCAqLwogICAgIFB1dEJpdENvbnRleHQgcGI7CiAKKyAgICB1bnNpZ25lZCBpbnQgbGFtYmRhOyAg ICAgICAgLy8vPCBMYWdyYW5nZSBtdWx0aXBsaWVyIHVzZWQgaW4gcmF0ZSBkaXN0b3J0aW9uCisg ICAgdW5zaWduZWQgaW50IGxhbWJkYTI7ICAgICAgIC8vLzwgKGxhbWJkYSpsYW1iZGEpID4+IEZG X0xBTUJEQV9TSElGVAogICAgIGludCAqbGFtYmRhX3RhYmxlOwogICAgIGludCBhZGFwdGl2ZV9x dWFudDsgICAgICAgICAvLy88IHVzZSBhZGFwdGl2ZSBxdWFudGl6YXRpb24KICAgICBpbnQgZHF1 YW50OyAgICAgICAgICAgICAgICAgLy8vPCBxc2NhbGUgZGlmZmVyZW5jZSB0byBwcmV2IHFzY2Fs ZQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9zbm93ZW5jLmMgYi9saWJhdmNvZGVjL3Nub3dlbmMu YwppbmRleCBmOWIxMGY3ZGFiLi4yNjlmYzhhNTk5IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3Nu b3dlbmMuYworKysgYi9saWJhdmNvZGVjL3Nub3dlbmMuYwpAQCAtMTg3Myw5ICsxODczLDkgQEAg c3RhdGljIGludCBlbmNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAq cGt0LAogICAgICAgICBtcHYtPmMub3V0X2Zvcm1hdCAgICAgID0gRk1UX0gyNjM7CiAgICAgICAg IG1wdi0+Yy51bnJlc3RyaWN0ZWRfbXYgPSAxOwogCi0gICAgICAgIG1wdi0+Yy5sYW1iZGEgPSBl bmMtPmxhbWJkYTsKLSAgICAgICAgbXB2LT5jLnFzY2FsZSA9IChtcHYtPmMubGFtYmRhKjEzOSAr IEZGX0xBTUJEQV9TQ0FMRSo2NCkgPj4gKEZGX0xBTUJEQV9TSElGVCArIDcpOwotICAgICAgICBl bmMtPmxhbWJkYTIgID0gbXB2LT5jLmxhbWJkYTIgPSAobXB2LT5jLmxhbWJkYSptcHYtPmMubGFt YmRhICsgRkZfTEFNQkRBX1NDQUxFLzIpID4+IEZGX0xBTUJEQV9TSElGVDsKKyAgICAgICAgbXB2 LT5sYW1iZGEgICA9IGVuYy0+bGFtYmRhOworICAgICAgICBtcHYtPmMucXNjYWxlID0gKG1wdi0+ bGFtYmRhKjEzOSArIEZGX0xBTUJEQV9TQ0FMRSo2NCkgPj4gKEZGX0xBTUJEQV9TSElGVCArIDcp OworICAgICAgICBlbmMtPmxhbWJkYTIgID0gbXB2LT5sYW1iZGEyID0gKG1wdi0+bGFtYmRhKm1w di0+bGFtYmRhICsgRkZfTEFNQkRBX1NDQUxFLzIpID4+IEZGX0xBTUJEQV9TSElGVDsKIAogICAg ICAgICBtcHYtPmMucWRzcCA9IGVuYy0+cWRzcDsgLy9tb3ZlCiAgICAgICAgIG1wdi0+Yy5oZHNw ID0gcy0+aGRzcDsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvc3ZxMWVuYy5jIGIvbGliYXZjb2Rl Yy9zdnExZW5jLmMKaW5kZXggZGRjOTRkZmZlNS4uNmU1MTQ2ZDZhNSAxMDA2NDQKLS0tIGEvbGli YXZjb2RlYy9zdnExZW5jLmMKKysrIGIvbGliYXZjb2RlYy9zdnExZW5jLmMKQEAgLTM0MiwxMSAr MzQyLDExIEBAIHN0YXRpYyBpbnQgc3ZxMV9lbmNvZGVfcGxhbmUoU1ZRMUVuY0NvbnRleHQgKnMs IGludCBwbGFuZSwKICAgICAgICAgczItPm1lLnNjZW5lX2NoYW5nZV9zY29yZSAgICAgICAgID0g MDsKICAgICAgICAgLy8gczItPm91dF9mb3JtYXQgICAgICAgICAgICAgICAgICAgID0gRk1UX0gy NjM7CiAgICAgICAgIC8vIHMyLT51bnJlc3RyaWN0ZWRfbXYgICAgICAgICAgICAgICA9IDE7Ci0g ICAgICAgIHMyLT5sYW1iZGEgICAgICAgICAgICAgICAgICAgICAgICA9IHMtPnF1YWxpdHk7Ci0g ICAgICAgIHMyLT5xc2NhbGUgICAgICAgICAgICAgICAgICAgICAgICA9IHMyLT5sYW1iZGEgKiAx MzkgKworICAgICAgICBzLT5tLmxhbWJkYSAgICAgICAgICAgICAgICAgICAgICAgPSBzLT5xdWFs aXR5OworICAgICAgICBzMi0+cXNjYWxlICAgICAgICAgICAgICAgICAgICAgICAgPSBzLT5tLmxh bWJkYSAqIDEzOSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGRl9MQU1CREFfU0NBTEUgKiA2NCA+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRkZfTEFNQkRBX1NISUZUICsgNzsKLSAgICAgICAgczItPmxhbWJkYTIg ICAgICAgICAgICAgICAgICAgICAgID0gczItPmxhbWJkYSAqIHMyLT5sYW1iZGEgKworICAgICAg ICBzLT5tLmxhbWJkYTIgICAgICAgICAgICAgICAgICAgICAgPSBzLT5tLmxhbWJkYSAqIHMtPm0u bGFtYmRhICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZG X0xBTUJEQV9TQ0FMRSAvIDIgPj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZGX0xBTUJEQV9TSElGVDsKIAotLSAKMi40NS4yCgo= --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0066-avcodec-mpegvideo_enc-Don-t-reset-statistics-twice.patch" Content-Disposition: attachment; filename*0="0066-avcodec-mpegvideo_enc-Don-t-reset-statistics-twice.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSBhYzYyODNhN2QyNmJhZDg4MTQzNzJjYTcwYmI4ZTk4MGE1MTIwOWRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMjo1Mzo0NCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNjYvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogRG9uJ3QgcmVzZXQgc3Rh dGlzdGljcyB0d2ljZQoKVGhpcyBoYXBwZW5zIGN1cnJlbnRseSBmb3IgdGhlIG5vbi1tYWluIHNs aWNlIGNvbnRleHRzLgpCdXQgdGhlc2UgdmFyaWFibGVzIGdldCByZXNldCBhdCB0aGUgc3RhcnQg b2YgZW5jb2RlX3RocmVhZCgpCmFueXdheSBmb3IgYWxsIHNsaWNlcywgc28gdGhpcyBpcyB1bm5l Y2Vzc2FyeS4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVp bmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jIHwgMTcg KysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgYi9saWJh dmNvZGVjL21wZWd2aWRlb19lbmMuYwppbmRleCA2YzFkMTU3YjY0Li43NDkyYTlmZGJkIDEwMDY0 NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYworKysgYi9saWJhdmNvZGVjL21wZWd2 aWRlb19lbmMuYwpAQCAtMzU4NSw2ICszNTg1LDcgQEAgc3RhdGljIGludCBlbmNvZGVfdGhyZWFk KEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgIHJldHVybiAwOwogfQogCisjZGVm aW5lIEFERChmaWVsZCkgICBkc3QtPmZpZWxkICs9IHNyYy0+ZmllbGQ7CiAjZGVmaW5lIE1FUkdF KGZpZWxkKSBkc3QtPmZpZWxkICs9IHNyYy0+ZmllbGQ7IHNyYy0+ZmllbGQ9MAogc3RhdGljIHZv aWQgbWVyZ2VfY29udGV4dF9hZnRlcl9tZShNUFZFbmNDb250ZXh0ICpjb25zdCBkc3QsIE1QVkVu Y0NvbnRleHQgKmNvbnN0IHNyYykKIHsKQEAgLTM1OTksMTQgKzM2MDAsMTQgQEAgc3RhdGljIHZv aWQgbWVyZ2VfY29udGV4dF9hZnRlcl9lbmNvZGUoTVBWRW5jQ29udGV4dCAqY29uc3QgZHN0LCBN UFZFbmNDb250ZXh0ICoKIAogICAgIE1FUkdFKGRjdF9jb3VudFswXSk7IC8vbm90ZSwgdGhlIG90 aGVyIGRjdCB2YXJzIGFyZSBub3QgcGFydCBvZiB0aGUgY29udGV4dAogICAgIE1FUkdFKGRjdF9j b3VudFsxXSk7Ci0gICAgTUVSR0UobXZfYml0cyk7Ci0gICAgTUVSR0UoaV90ZXhfYml0cyk7Ci0g ICAgTUVSR0UocF90ZXhfYml0cyk7Ci0gICAgTUVSR0UoaV9jb3VudCk7Ci0gICAgTUVSR0UobWlz Y19iaXRzKTsKLSAgICBNRVJHRShlbmNvZGluZ19lcnJvclswXSk7Ci0gICAgTUVSR0UoZW5jb2Rp bmdfZXJyb3JbMV0pOwotICAgIE1FUkdFKGVuY29kaW5nX2Vycm9yWzJdKTsKKyAgICBBREQobXZf Yml0cyk7CisgICAgQUREKGlfdGV4X2JpdHMpOworICAgIEFERChwX3RleF9iaXRzKTsKKyAgICBB REQoaV9jb3VudCk7CisgICAgQUREKG1pc2NfYml0cyk7CisgICAgQUREKGVuY29kaW5nX2Vycm9y WzBdKTsKKyAgICBBREQoZW5jb2RpbmdfZXJyb3JbMV0pOworICAgIEFERChlbmNvZGluZ19lcnJv clsyXSk7CiAKICAgICBpZiAoZHN0LT5kY3RfZXJyb3Jfc3VtKSB7CiAgICAgICAgIGZvcihpPTA7 IGk8NjQ7IGkrKyl7Ci0tIAoyLjQ1LjIKCg== --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0067-avcodec-mpegvideoenc-Constify-vlc-length-pointees.patch" Content-Disposition: attachment; filename*0="0067-avcodec-mpegvideoenc-Constify-vlc-length-pointees.patch" Content-Transfer-Encoding: base64 RnJvbSA2NTgwMzM1OTNlYjg4NWNhNGZlMzc4MDQ1ODFhYWU1MmQ4ODZlZDg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMzowMzoyMiArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNjcvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvZW5jOiBDb25zdGlmeSB2bGMgbGVu Z3RoIHBvaW50ZWVzCgpUaGVzZSBwb2ludGVycyBwb2ludCB0byBzdGF0aWMgdGFibGVzIHdoaWNo IG11c3Qgbm90IGJlIG1vZGlmaWVkCmJ5IGFueW9uZSBhZnRlciB0aGV5IGhhdmUgYmVlbiBpbml0 aWFsaXplZC4gU28gY29uc3RpZnkgdGhlIHBvaW50ZWVzLgoKU2lnbmVkLW9mZi1ieTogQW5kcmVh cyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQogbGliYXZj b2RlYy9tZV9jbXAuYyAgICAgICB8ICA0ICsrLS0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgg fCAxNCArKysrKysrLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tZV9jbXAuYyBiL2xpYmF2Y29k ZWMvbWVfY21wLmMKaW5kZXggMDlhODMwZDE1ZS4uMmE4ZWRlNTk1NSAxMDA2NDQKLS0tIGEvbGli YXZjb2RlYy9tZV9jbXAuYworKysgYi9saWJhdmNvZGVjL21lX2NtcC5jCkBAIC03NTgsNyArNzU4 LDcgQEAgc3RhdGljIGludCByZDh4OF9jKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IHVp bnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKnMKICAgICBMT0NBTF9BTElHTkVEXzE2KHVpbnQ4 X3QsIGxzcmMyLCBbNjRdKTsKICAgICBpbnQgaSwgbGFzdCwgcnVuLCBiaXRzLCBsZXZlbCwgZGlz dG9ydGlvbiwgc3RhcnRfaTsKICAgICBjb25zdCBpbnQgZXNjX2xlbmd0aCA9IHMtPmFjX2VzY19s ZW5ndGg7Ci0gICAgdWludDhfdCAqbGVuZ3RoLCAqbGFzdF9sZW5ndGg7CisgICAgY29uc3QgdWlu dDhfdCAqbGVuZ3RoLCAqbGFzdF9sZW5ndGg7CiAKICAgICBjb3B5X2Jsb2NrOChsc3JjMSwgc3Jj MSwgOCwgc3RyaWRlLCA4KTsKICAgICBjb3B5X2Jsb2NrOChsc3JjMiwgc3JjMiwgOCwgc3RyaWRl LCA4KTsKQEAgLTgzMSw3ICs4MzEsNyBAQCBzdGF0aWMgaW50IGJpdDh4OF9jKE1QVkVuY0NvbnRl eHQgKmNvbnN0IHMsIGNvbnN0IHVpbnQ4X3QgKnNyYzEsIGNvbnN0IHVpbnQ4X3QgKgogICAgIExP Q0FMX0FMSUdORURfMTYoaW50MTZfdCwgdGVtcCwgWzY0XSk7CiAgICAgaW50IGksIGxhc3QsIHJ1 biwgYml0cywgbGV2ZWwsIHN0YXJ0X2k7CiAgICAgY29uc3QgaW50IGVzY19sZW5ndGggPSBzLT5h Y19lc2NfbGVuZ3RoOwotICAgIHVpbnQ4X3QgKmxlbmd0aCwgKmxhc3RfbGVuZ3RoOworICAgIGNv bnN0IHVpbnQ4X3QgKmxlbmd0aCwgKmxhc3RfbGVuZ3RoOwogCiAgICAgcy0+cGRzcC5kaWZmX3Bp eGVsc191bmFsaWduZWQodGVtcCwgc3JjMSwgc3JjMiwgc3RyaWRlKTsKIApkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9tcGVndmlkZW9lbmMuaCBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgKaW5k ZXggYTJiNTQ0ZDcwZS4uNjk4NWM0MTk1NSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlk ZW9lbmMuaAorKysgYi9saWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oCkBAIC04NywxMyArODcsMTMg QEAgdHlwZWRlZiBzdHJ1Y3QgTVBWRW5jQ29udGV4dCB7CiAgICAgaW50IG1pbl9xY29lZmY7ICAg ICAgICAgIC8vLzwgbWluaW11bSBlbmNvZGFibGUgY29lZmZpY2llbnQKICAgICBpbnQgbWF4X3Fj b2VmZjsgICAgICAgICAgLy8vPCBtYXhpbXVtIGVuY29kYWJsZSBjb2VmZmljaWVudAogICAgIGlu dCBhY19lc2NfbGVuZ3RoOyAgICAgICAvLy88IG51bSBvZiBiaXRzIG5lZWRlZCB0byBlbmNvZGUg dGhlIGxvbmdlc3QgZXNjCi0gICAgdWludDhfdCAqaW50cmFfYWNfdmxjX2xlbmd0aDsKLSAgICB1 aW50OF90ICppbnRyYV9hY192bGNfbGFzdF9sZW5ndGg7Ci0gICAgdWludDhfdCAqaW50cmFfY2hy b21hX2FjX3ZsY19sZW5ndGg7Ci0gICAgdWludDhfdCAqaW50cmFfY2hyb21hX2FjX3ZsY19sYXN0 X2xlbmd0aDsKLSAgICB1aW50OF90ICppbnRlcl9hY192bGNfbGVuZ3RoOwotICAgIHVpbnQ4X3Qg KmludGVyX2FjX3ZsY19sYXN0X2xlbmd0aDsKLSAgICB1aW50OF90ICpsdW1hX2RjX3ZsY19sZW5n dGg7CisgICAgY29uc3QgdWludDhfdCAqaW50cmFfYWNfdmxjX2xlbmd0aDsKKyAgICBjb25zdCB1 aW50OF90ICppbnRyYV9hY192bGNfbGFzdF9sZW5ndGg7CisgICAgY29uc3QgdWludDhfdCAqaW50 cmFfY2hyb21hX2FjX3ZsY19sZW5ndGg7CisgICAgY29uc3QgdWludDhfdCAqaW50cmFfY2hyb21h X2FjX3ZsY19sYXN0X2xlbmd0aDsKKyAgICBjb25zdCB1aW50OF90ICppbnRlcl9hY192bGNfbGVu Z3RoOworICAgIGNvbnN0IHVpbnQ4X3QgKmludGVyX2FjX3ZsY19sYXN0X2xlbmd0aDsKKyAgICBj b25zdCB1aW50OF90ICpsdW1hX2RjX3ZsY19sZW5ndGg7CiAKICAgICBpbnQgY29kZWRfc2NvcmVb MTJdOwogCi0tIAoyLjQ1LjIKCg== --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0068-avcodec-motion_est-Move-ff_h263_round_chroma-to-h263.patch" Content-Disposition: attachment; filename*0="0068-avcodec-motion_est-Move-ff_h263_round_chroma-to-h263.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4YjExOTFjYjQzYjYyNzg0MGQ1NzU2OGIzNmZkYmZkYzIxNGY2MDcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxMzoyNjozNyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNjgvNzddIGF2Y29kZWMvbW90aW9uX2VzdDogTW92ZSBmZl9oMjYzX3JvdW5k X2Nocm9tYSgpIHRvCiBoMjYzLmgKClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8 YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvaDI2My5oICAg ICAgICAgICAgIHwgMTAgKysrKysrKysrKwogbGliYXZjb2RlYy9tb3Rpb25fZXN0LmMgICAgICAg fCAgMSArCiBsaWJhdmNvZGVjL21vdGlvbl9lc3QuaCAgICAgICB8IDEwIC0tLS0tLS0tLS0KIGxp YmF2Y29kZWMvbXBlZ3ZpZGVvX2RlYy5jICAgIHwgIDEgKwogbGliYXZjb2RlYy9tcGVndmlkZW9f bW90aW9uLmMgfCAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2My5oIGIvbGliYXZjb2RlYy9o MjYzLmgKaW5kZXggMjdhNWYzMWM1OS4uNTlmOTM3MDcwZSAxMDA2NDQKLS0tIGEvbGliYXZjb2Rl Yy9oMjYzLmgKKysrIGIvbGliYXZjb2RlYy9oMjYzLmgKQEAgLTI3LDYgKzI3LDE2IEBACiAKICNk ZWZpbmUgSDI2M19HT0JfSEVJR0hUKGgpICgoaCkgPD0gNDAwID8gMSA6IChoKSA8PSA4MDAgPyAy IDogNCkKIAorc3RhdGljIGlubGluZSBpbnQgZmZfaDI2M19yb3VuZF9jaHJvbWEoaW50IHgpCit7 CisgICAgLy9GSVhNRSBzdGF0aWMgb3Igbm90PworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGgy NjNfY2hyb21hX3JvdW5kdGFiWzE2XSA9IHsKKyAgICAvLyAgMCAgMSAgMiAgMyAgNCAgNSAgNiAg NyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNQorICAgICAgICAwLCAwLCAwLCAxLCAxLCAxLCAxLCAx LCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLAorICAgIH07CisgICAgcmV0dXJuIGgyNjNfY2hyb21h X3JvdW5kdGFiW3ggJiAweGZdICsgKHggPj4gMyk7Cit9CisKIGF2X2NvbnN0IGludCBmZl9oMjYz X2FzcGVjdF90b19pbmZvKEFWUmF0aW9uYWwgYXNwZWN0KTsKIGludDE2X3QgKmZmX2gyNjNfcHJl ZF9tb3Rpb24oTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgYmxvY2ssIGludCBkaXIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAqcHgsIGludCAqcHkpOwpkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9tb3Rpb25fZXN0LmMgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwppbmRleCBiMmI4 ODgyMzdiLi5kYjYxMGMzMjQ1IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwor KysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg PGxpbWl0cy5oPgogCiAjaW5jbHVkZSAiYXZjb2RlYy5oIgorI2luY2x1ZGUgImgyNjMuaCIKICNp bmNsdWRlICJtYXRob3BzLmgiCiAjaW5jbHVkZSAibW90aW9uX2VzdC5oIgogI2luY2x1ZGUgIm1w ZWd1dGlscy5oIgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmggYi9saWJhdmNv ZGVjL21vdGlvbl9lc3QuaAppbmRleCAxNjk3NWFiZmUxLi5mZTNkNjFmYWZiIDEwMDY0NAotLS0g YS9saWJhdmNvZGVjL21vdGlvbl9lc3QuaAorKysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuaApA QCAtMTA2LDE2ICsxMDYsNiBAQCB0eXBlZGVmIHN0cnVjdCBNb3Rpb25Fc3RDb250ZXh0IHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBoKTsKIH0gTW90aW9uRXN0 Q29udGV4dDsKIAotc3RhdGljIGlubGluZSBpbnQgZmZfaDI2M19yb3VuZF9jaHJvbWEoaW50IHgp Ci17Ci0gICAgLy9GSVhNRSBzdGF0aWMgb3Igbm90PwotICAgIHN0YXRpYyBjb25zdCB1aW50OF90 IGgyNjNfY2hyb21hX3JvdW5kdGFiWzE2XSA9IHsKLSAgICAvLyAgMCAgMSAgMiAgMyAgNCAgNSAg NiAgNyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNQotICAgICAgICAwLCAwLCAwLCAxLCAxLCAxLCAx LCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLAotICAgIH07Ci0gICAgcmV0dXJuIGgyNjNfY2hy b21hX3JvdW5kdGFiW3ggJiAweGZdICsgKHggPj4gMyk7Ci19Ci0KIC8qKgogICogUGVyZm9ybXMg b25lLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIE1vdGlvbkVzdENvbnRleHQuCiAgKi8KZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2RlYy5jIGIvbGliYXZjb2RlYy9tcGVndmlk ZW9fZGVjLmMKaW5kZXggOGM4NGI1OWM1ZS4uNDAxOWI0ZjBkYSAxMDA2NDQKLS0tIGEvbGliYXZj b2RlYy9tcGVndmlkZW9fZGVjLmMKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZGVjLmMKQEAg LTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgImF2Y29kZWMuaCIKICNpbmNsdWRlICJkZWNvZGUu aCIKKyNpbmNsdWRlICJoMjYzLmgiCiAjaW5jbHVkZSAiaDI2NGNocm9tYS5oIgogI2luY2x1ZGUg ImludGVybmFsLmgiCiAjaW5jbHVkZSAibXBlZ3V0aWxzLmgiCmRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL21wZWd2aWRlb19tb3Rpb24uYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX21vdGlvbi5jCmlu ZGV4IDZlOTM2OGRkOWMuLmVkYzQ5MzEwOTIgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZ3Zp ZGVvX21vdGlvbi5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX21vdGlvbi5jCkBAIC0yOSw2 ICsyOSw3IEBACiAKICNpbmNsdWRlICJhdmNvZGVjLmgiCiAjaW5jbHVkZSAiaDI2MS5oIgorI2lu Y2x1ZGUgImgyNjMuaCIKICNpbmNsdWRlICJtcGVndXRpbHMuaCIKICNpbmNsdWRlICJtcGVndmlk ZW8uaCIKICNpbmNsdWRlICJtcGVnNHZpZGVvZGVjLmgiCi0tIAoyLjQ1LjIKCg== --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0069-avcodec-mpegvideo-Move-MotionEstContext-to-MPVEncCon.patch" Content-Disposition: attachment; filename*0="0069-avcodec-mpegvideo-Move-MotionEstContext-to-MPVEncCon.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmZDVlNjg3OGE5OTU2YjEyM2MxZDczZDY0NzJiYzRhY2Y0MjBhN2Y1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNDoyNDo1NiArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNjkvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvOiBNb3ZlIE1vdGlvbkVzdENvbnRl eHQgdG8KIE1QVkVuY0NvbnRleHQKCkFsbCB0aGF0IGlzIG5lY2Vzc2FyeSB0byBkbyBzbyBpcyBw ZXJmb3JtIGZmX21lX2luaXRfcGljKCkKb24gZXZlcnkgc2xpY2UuCgpTaWduZWQtb2ZmLWJ5OiBB bmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KLS0tCiBs aWJhdmNvZGVjL2gyNjFlbmMuYyAgICAgICAgICAgICB8ICAyICstCiBsaWJhdmNvZGVjL2l0dWgy NjNlbmMuYyAgICAgICAgICB8ICAyICstCiBsaWJhdmNvZGVjL21vdGlvbl9lc3QuYyAgICAgICAg ICB8IDM2ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGxpYmF2Y29kZWMvbW90aW9uX2Vz dF90ZW1wbGF0ZS5jIHwgMzIgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogbGliYXZjb2RlYy9t cGVnMTJlbmMuYyAgICAgICAgICAgfCAgMiArLQogbGliYXZjb2RlYy9tcGVndmlkZW8uYyAgICAg ICAgICAgfCAgNiAtLS0tLQogbGliYXZjb2RlYy9tcGVndmlkZW8uaCAgICAgICAgICAgfCAgMyAt LS0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jICAgICAgIHwgNDEgKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmggICAgICAgIHwgIDQg KysrLQogbGliYXZjb2RlYy9zbm93ZW5jLmMgICAgICAgICAgICAgfCAzNiArKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL3N2cTFlbmMuYyAgICAgICAgICAgICB8IDI0ICsr KysrKysrKy0tLS0tLS0tLS0KIDExIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDk4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2MWVuYy5jIGIvbGliYXZj b2RlYy9oMjYxZW5jLmMKaW5kZXggN2MzYzg3NTJkZi4uYWU1ZDdiMTIwNSAxMDA2NDQKLS0tIGEv bGliYXZjb2RlYy9oMjYxZW5jLmMKKysrIGIvbGliYXZjb2RlYy9oMjYxZW5jLmMKQEAgLTM3Nyw3 ICszNzcsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgaDI2MV9lbmNvZGVfaW5pdChBVkNvZGVjQ29u dGV4dCAqYXZjdHgpCiAgICAgcy0+bWF4X3Fjb2VmZiAgICAgICA9IDEyNzsKICAgICBzLT5hY19l c2NfbGVuZ3RoICAgID0gSDI2MV9FU0NfTEVOOwogCi0gICAgcy0+Yy5tZS5tdl9wZW5hbHR5ID0g bXZfcGVuYWx0eTsKKyAgICBzLT5tZS5tdl9wZW5hbHR5ID0gbXZfcGVuYWx0eTsKIAogICAgIHMt PmludHJhX2FjX3ZsY19sZW5ndGggICAgICA9IHMtPmludGVyX2FjX3ZsY19sZW5ndGggICAgICA9 IHVuaV9oMjYxX3JsX2xlbjsKICAgICBzLT5pbnRyYV9hY192bGNfbGFzdF9sZW5ndGggPSBzLT5p bnRlcl9hY192bGNfbGFzdF9sZW5ndGggPSB1bmlfaDI2MV9ybF9sZW5fbGFzdDsKZGlmZiAtLWdp dCBhL2xpYmF2Y29kZWMvaXR1aDI2M2VuYy5jIGIvbGliYXZjb2RlYy9pdHVoMjYzZW5jLmMKaW5k ZXggNmJkN2I2YTZjZC4uMmUwODdjNTE4ZCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9pdHVoMjYz ZW5jLmMKKysrIGIvbGliYXZjb2RlYy9pdHVoMjYzZW5jLmMKQEAgLTgyMCw3ICs4MjAsNyBAQCBh dl9jb2xkIHZvaWQgZmZfaDI2M19lbmNvZGVfaW5pdChNUFZNYWluRW5jQ29udGV4dCAqY29uc3Qg bSkKIHsKICAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0gJm0tPnM7CiAKLSAgICBzLT5jLm1l Lm12X3BlbmFsdHkgPSBmZl9oMjYzX2dldF9tdl9wZW5hbHR5KCk7IC8vIEZJWE1FIGV4YWN0IHRh YmxlIGZvciBNU01QRUc0ICYgSC4yNjMrCisgICAgcy0+bWUubXZfcGVuYWx0eSA9IGZmX2gyNjNf Z2V0X212X3BlbmFsdHkoKTsgLy8gRklYTUUgZXhhY3QgdGFibGUgZm9yIE1TTVBFRzQgJiBILjI2 MysKIAogICAgIGZmX2gyNjNkc3BfaW5pdCgmcy0+Yy5oMjYzZHNwKTsKIApkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9tb3Rpb25fZXN0LmMgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwppbmRleCBk YjYxMGMzMjQ1Li5hZjA2YWNkOWIyIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21vdGlvbl9lc3Qu YworKysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRp YyBpbnQgZ2V0X2ZsYWdzKE1vdGlvbkVzdENvbnRleHQgKmMsIGludCBkaXJlY3QsIGludCBjaHJv bWEpewogc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNtcF9kaXJlY3RfaW5saW5lKE1QVkVu Y0NvbnRleHQgKmNvbnN0IHMsIGNvbnN0IGludCB4LCBjb25zdCBpbnQgeSwgY29uc3QgaW50IHN1 YngsIGNvbnN0IGludCBzdWJ5LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBzaXpl LCBjb25zdCBpbnQgaCwgaW50IHJlZl9pbmRleCwgaW50IHNyY19pbmRleCwKICAgICAgICAgICAg ICAgICAgICAgICBtZV9jbXBfZnVuYyBjbXBfZnVuYywgbWVfY21wX2Z1bmMgY2hyb21hX2NtcF9m dW5jLCBpbnQgcXBlbCl7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1l OworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgY29uc3QgaW50 IHN0cmlkZT0gYy0+c3RyaWRlOwogICAgIGNvbnN0IGludCBoeCA9IHN1YnggKyB4ICogKDEgPDwg KDEgKyBxcGVsKSk7CiAgICAgY29uc3QgaW50IGh5ID0gc3VieSArIHkgKiAoMSA8PCAoMSArIHFw ZWwpKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgY21w X2RpcmVjdF9pbmxpbmUoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgY29uc3QgaW50CiBzdGF0aWMg YXZfYWx3YXlzX2lubGluZSBpbnQgY21wX2lubGluZShNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBj b25zdCBpbnQgeCwgY29uc3QgaW50IHksIGNvbnN0IGludCBzdWJ4LCBjb25zdCBpbnQgc3VieSwK ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2l6ZSwgY29uc3QgaW50IGgsIGludCBy ZWZfaW5kZXgsIGludCBzcmNfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgbWVfY21wX2Z1 bmMgY21wX2Z1bmMsIG1lX2NtcF9mdW5jIGNocm9tYV9jbXBfZnVuYywgaW50IHFwZWwsIGludCBj aHJvbWEpewotICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKKyAgICBN b3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGNvbnN0IGludCBzdHJpZGU9 IGMtPnN0cmlkZTsKICAgICBjb25zdCBpbnQgdXZzdHJpZGU9IGMtPnV2c3RyaWRlOwogICAgIGNv bnN0IGludCBkeHk9IHN1YnggKyAoc3VieTw8KDErcXBlbCkpOyAvL0ZJWE1FIGxvZzJfc3VicGVs PwpAQCAtMzcwLDcgKzM3MCw3IEBAIGF2X2NvbGQgaW50IGZmX21lX2luaXQoTW90aW9uRXN0Q29u dGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogCiB2b2lkIGZmX21lX2luaXRfcGljKE1Q VkVuY0NvbnRleHQgKmNvbnN0IHMpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9 ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAKIC8q RklYTUUgcy0+Yy5ub19yb3VuZGluZyBiX3R5cGUqLwogICAgIGlmIChjLT5hdmN0eC0+ZmxhZ3Mg JiBBVl9DT0RFQ19GTEFHX1FQRUwpIHsKQEAgLTQxMSw3ICs0MTEsNyBAQCBzdGF0aWMgaW50IHNh ZF9ocGVsX21vdGlvbl9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgaCkKIHsKLSAgICBN b3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4 dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3I9IGMtPnN1 Yl9wZW5hbHR5X2ZhY3RvcjsKICAgICBpbnQgbXgsIG15LCBkbWluaDsKICAgICBjb25zdCB1aW50 OF90ICpwaXgsICpwdHI7CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNl dF9wX212X3RhYmxlcyhNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgbXgsIGludCBteSwgaW50 IG0KICAqLwogc3RhdGljIGlubGluZSB2b2lkIGdldF9saW1pdHMoTVBWRW5jQ29udGV4dCAqY29u c3QgcywgaW50IHgsIGludCB5LCBpbnQgYmZyYW1lKQogewotICAgIE1vdGlvbkVzdENvbnRleHQg KmNvbnN0IGMgPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMt Pm1lOwogICAgIGludCByYW5nZT0gYy0+YXZjdHgtPm1lX3JhbmdlID4+ICgxICsgISEoYy0+Zmxh Z3MmRkxBR19RUEVMKSk7CiAgICAgaW50IG1heF9yYW5nZSA9IE1BWF9NViA+PiAoMSArICEhKGMt PmZsYWdzJkZMQUdfUVBFTCkpOwogLyoKQEAgLTU4Nyw3ICs1ODcsNyBAQCBzdGF0aWMgaW5saW5l IHZvaWQgaW5pdF9tdjRfcmVmKE1vdGlvbkVzdENvbnRleHQgKmMpewogCiBzdGF0aWMgaW5saW5l IGludCBoMjYzX212NF9zZWFyY2goTVBWRW5jQ29udGV4dCAqY29uc3QgcywgaW50IG14LCBpbnQg bXksIGludCBzaGlmdCkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPmMu bWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBjb25zdCBp bnQgc2l6ZT0gMTsKICAgICBjb25zdCBpbnQgaD04OwogICAgIGludCBibG9jazsKQEAgLTczMCw3 ICs3MzAsNyBAQCBzdGF0aWMgaW5saW5lIGludCBoMjYzX212NF9zZWFyY2goTVBWRW5jQ29udGV4 dCAqY29uc3QgcywgaW50IG14LCBpbnQgbXksIGludCBzaAogCiBzdGF0aWMgaW5saW5lIHZvaWQg aW5pdF9pbnRlcmxhY2VkX3JlZihNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQgcmVmX2luZGV4 KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKKyAgICBNb3Rp b25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogCiAgICAgYy0+cmVmWzErcmVmX2luZGV4 XVswXSA9IGMtPnJlZlswK3JlZl9pbmRleF1bMF0gKyBzLT5jLmxpbmVzaXplOwogICAgIGMtPnNy Y1sxXVswXSA9IGMtPnNyY1swXVswXSArIHMtPmMubGluZXNpemU7CkBAIC03NDUsNyArNzQ1LDcg QEAgc3RhdGljIGlubGluZSB2b2lkIGluaXRfaW50ZXJsYWNlZF9yZWYoTVBWRW5jQ29udGV4dCAq Y29uc3QgcywgaW50IHJlZl9pbmRleCkKIHN0YXRpYyBpbnQgaW50ZXJsYWNlZF9zZWFyY2goTVBW RW5jQ29udGV4dCAqY29uc3QgcywgaW50IHJlZl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50MTZfdCAoKm12X3RhYmxlc1syXVsyXSlbMl0sIHVpbnQ4X3QgKmZpZWxkX3Nl bGVjdF90YWJsZXNbMl0sIGludCBteCwgaW50IG15LCBpbnQgdXNlcl9maWVsZF9zZWxlY3QpCiB7 Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOworICAgIE1vdGlvbkVz dENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgY29uc3QgaW50IHNpemU9MDsKICAgICBj b25zdCBpbnQgaD04OwogICAgIGludCBibG9jazsKQEAgLTg4OCw3ICs4ODgsNyBAQCBzdGF0aWMg aW5saW5lIGludCBnZXRfcGVuYWx0eV9mYWN0b3IoaW50IGxhbWJkYSwgaW50IGxhbWJkYTIsIGlu dCB0eXBlKXsKIHZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24oTVBWRW5jQ29udGV4dCAq Y29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1iX3gsIGludCBt Yl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+Yy5tZTsKKyAgICBN b3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGNvbnN0IHVpbnQ4X3QgKnBp eCwgKnBwaXg7CiAgICAgaW50IHN1bSwgbXggPSAwLCBteSA9IDAsIGRtaW4gPSAwOwogICAgIGlu dCB2YXJjOyAgICAgICAgICAgIC8vLzwgdGhlIHZhcmlhbmNlIG9mIHRoZSBibG9jayAoc3VtIG9m IHNxdWFyZWQgKHBbeV1beF0tYXZlcmFnZSkpCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIGZm X2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiBpbnQgZmZf cHJlX2VzdGltYXRlX3BfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWJfeCwgaW50IG1iX3kpCiB7Ci0g ICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENv bnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgaW50IG14LCBteSwgZG1pbjsKICAgICBpbnQg UFsxMF1bMl07CiAgICAgY29uc3QgaW50IHNoaWZ0ID0gMSArIHMtPmMucXVhcnRlcl9zYW1wbGU7 CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBpbnQgZmZfcHJlX2VzdGltYXRlX3BfZnJhbWVfbW90aW9u KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiBzdGF0aWMgaW50IGVzdGltYXRlX21vdGlvbl9iKE1Q VkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCBtYl94LCBpbnQgbWJfeSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50MTZfdCAoKm12X3RhYmxlKVsyXSwgaW50IHJlZl9pbmRleCwgaW50 IGZfY29kZSkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7Cisg ICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBpbnQgbXggPSAwLCBt eSA9IDAsIGRtaW4gPSAwOwogICAgIGludCBQWzEwXVsyXTsKICAgICBjb25zdCBpbnQgc2hpZnQ9 IDErcy0+Yy5xdWFydGVyX3NhbXBsZTsKQEAgLTExODIsNyArMTE4Miw3IEBAIHN0YXRpYyBpbmxp bmUgaW50IGNoZWNrX2JpZGlyX212KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgLy9GSVhN RSBvcHRpbWl6ZT8KICAgICAvL0ZJWE1FIGJldHRlciBmX2NvZGUgcHJlZGljdGlvbiAobWF4IG12 ICYgZGlzdGFuY2UpCiAgICAgLy9GSVhNRSBwb2ludGVycwotICAgIE1vdGlvbkVzdENvbnRleHQg KiBjb25zdCBjPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMt Pm1lOwogICAgIGNvbnN0IHVpbnQ4X3QgKiBjb25zdCBtdl9wZW5hbHR5X2YgPSBjLT5tdl9wZW5h bHR5W3MtPmMuZl9jb2RlXSArIE1BWF9ETVY7IC8vIGZfY29kZSBvZiB0aGUgcHJldiBmcmFtZQog ICAgIGNvbnN0IHVpbnQ4X3QgKiBjb25zdCBtdl9wZW5hbHR5X2IgPSBjLT5tdl9wZW5hbHR5W3Mt PmMuYl9jb2RlXSArIE1BWF9ETVY7IC8vIGZfY29kZSBvZiB0aGUgcHJldiBmcmFtZQogICAgIGlu dCBzdHJpZGU9IGMtPnN0cmlkZTsKQEAgLTEyMzksNyArMTIzOSw3IEBAIHN0YXRpYyBpbmxpbmUg aW50IGNoZWNrX2JpZGlyX212KE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAvKiByZWZpbmUgdGhl IGJpZGlyIHZlY3RvcnMgaW4gaHEgbW9kZSBhbmQgcmV0dXJuIHRoZSBzY29yZSBpbiBib3RoIGxx ICYgaHEgbW9kZSovCiBzdGF0aWMgaW5saW5lIGludCBiaWRpcl9yZWZpbmUoTVBWRW5jQ29udGV4 dCAqY29uc3QgcywgaW50IG1iX3gsIGludCBtYl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQg KiBjb25zdCBjPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMt Pm1lOwogICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+Yy5tYl9zdHJpZGU7CiAgICAgY29u c3QgaW50IHh5ID0gbWJfeSAqbW90X3N0cmlkZSArIG1iX3g7CiAgICAgaW50IGZibWluOwpAQCAt MTM4Niw3ICsxMzg2LDcgQEAgQ0hFQ0tfQklESVIoLShhKSwtKGIpLC0oYyksLShkKSkKIAogc3Rh dGljIGlubGluZSBpbnQgZGlyZWN0X3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBpbnQg bWJfeCwgaW50IG1iX3kpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5j Lm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgaW50IFBb MTBdWzJdOwogICAgIGNvbnN0IGludCBtb3Rfc3RyaWRlID0gcy0+Yy5tYl9zdHJpZGU7CiAgICAg Y29uc3QgaW50IG1vdF94eSA9IG1iX3kqbW90X3N0cmlkZSArIG1iX3g7CkBAIC0xNDg5LDcgKzE0 ODksNyBAQCBzdGF0aWMgaW5saW5lIGludCBkaXJlY3Rfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNv bnN0IHMsIGludCBtYl94LCBpbnQgbWJfeSkKIHZvaWQgZmZfZXN0aW1hdGVfYl9mcmFtZV9tb3Rp b24oTVBWRW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IG1iX3gsIGludCBtYl95KQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAm cy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGlu dCBmbWluLCBibWluLCBkbWluLCBmYm1pbiwgYmltaW4sIGZpbWluOwogICAgIGludCB0eXBlPTA7 CiAgICAgY29uc3QgaW50IHh5ID0gbWJfeSpzLT5jLm1iX3N0cmlkZSArIG1iX3g7CkBAIC0xNjAx LDcgKzE2MDEsNyBAQCB2b2lkIGZmX2VzdGltYXRlX2JfZnJhbWVfbW90aW9uKE1QVkVuY0NvbnRl eHQgKmNvbnN0IHMsCiBpbnQgZmZfZ2V0X2Jlc3RfZmNvZGUoTVBWTWFpbkVuY0NvbnRleHQgKmNv bnN0IG0sIGNvbnN0IGludDE2X3QgKCptdl90YWJsZSlbMl0sIGludCB0eXBlKQogewogICAgIE1Q VkVuY0NvbnRleHQgKmNvbnN0IHMgPSAmbS0+czsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25z dCBjID0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsK IAogICAgIGlmIChjLT5tb3Rpb25fZXN0ICE9IEZGX01FX1pFUk8pIHsKICAgICAgICAgaW50IHNj b3JlWzhdOwpAQCAtMTY1Niw3ICsxNjU2LDcgQEAgaW50IGZmX2dldF9iZXN0X2Zjb2RlKE1QVk1h aW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25zdCBpbnQxNl90ICgqbXZfdGFibGUpWzJdLAogCiB2 b2lkIGZmX2ZpeF9sb25nX3BfbXZzKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCB0eXBlKQog ewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25F c3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGNvbnN0IGludCBmX2NvZGU9IHMtPmMu Zl9jb2RlOwogICAgIGludCB5LCByYW5nZTsKICAgICBhdl9hc3NlcnQwKHMtPmMucGljdF90eXBl PT1BVl9QSUNUVVJFX1RZUEVfUCk7CkBAIC0xNzA2LDcgKzE3MDYsNyBAQCB2b2lkIGZmX2ZpeF9s b25nX3BfbXZzKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCB0eXBlKQogdm9pZCBmZl9maXhf bG9uZ19tdnMoTVBWRW5jQ29udGV4dCAqY29uc3QgcywgdWludDhfdCAqZmllbGRfc2VsZWN0X3Rh YmxlLCBpbnQgZmllbGRfc2VsZWN0LAogICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAoKm12 X3RhYmxlKVsyXSwgaW50IGZfY29kZSwgaW50IHR5cGUsIGludCB0cnVuY2F0ZSkKIHsKLSAgICBN b3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4 dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBpbnQgeSwgaF9yYW5nZSwgdl9yYW5nZTsKIAogICAg IC8vIFJBTDogOCBpbiBNUEVHLTEsIDE2IGluIE1QRUctNApkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9tb3Rpb25fZXN0X3RlbXBsYXRlLmMgYi9saWJhdmNvZGVjL21vdGlvbl9lc3RfdGVtcGxhdGUu YwppbmRleCA3YzdlNjQ1NjI1Li5hYTY2OWUwZWU3IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21v dGlvbl9lc3RfdGVtcGxhdGUuYworKysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3RfdGVtcGxhdGUu YwpAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgaW50IGhwZWxfbW90aW9uX3NlYXJjaChNUFZFbmND b250ZXh0ICpjb25zdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz cmNfaW5kZXgsIGludCByZWZfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHNpemUsIGludCBoKQogewotICAgIE1vdGlvbkVzdENvbnRleHQgKiBjb25zdCBjPSAm cy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0gJnMtPm1lOwogICAgIGNv bnN0IGludCBteCA9ICpteF9wdHI7CiAgICAgY29uc3QgaW50IG15ID0gKm15X3B0cjsKICAgICBj b25zdCBpbnQgcGVuYWx0eV9mYWN0b3I9IGMtPnN1Yl9wZW5hbHR5X2ZhY3RvcjsKQEAgLTE2Niw3 ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRfbWJfc2NvcmUoTVBWRW5jQ29udGV4dCAq Y29uc3QgcywgaW50IG14LCBpbnQgbXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgaW50IHNpemUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGgsIGludCBhZGRfcmF0ZSkKIHsKLSAgICBNb3Rpb25Fc3RDb250 ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9 ICZzLT5tZTsKICAgICBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3I9IGMtPm1iX3BlbmFsdHlfZmFj dG9yOwogICAgIGNvbnN0IGludCBmbGFncz0gYy0+bWJfZmxhZ3M7CiAgICAgY29uc3QgaW50IHFw ZWw9IGZsYWdzICYgRkxBR19RUEVMOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBpbnQgcXBl bF9tb3Rpb25fc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgpCiB7Ci0gICAgTW90aW9u RXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNv bnN0IGMgPSAmcy0+bWU7CiAgICAgY29uc3QgaW50IG14ID0gKm14X3B0cjsKICAgICBjb25zdCBp bnQgbXkgPSAqbXlfcHRyOwogICAgIGNvbnN0IGludCBwZW5hbHR5X2ZhY3Rvcj0gYy0+c3ViX3Bl bmFsdHlfZmFjdG9yOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyBpbnQgcXBlbF9tb3Rpb25f c2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAgICAgIGludCBiZXN0X3Bvc1s4XVsy XTsKIAogICAgICAgICBtZW1zZXQoYmVzdCwgNjQsIHNpemVvZihpbnQpKjgpOwotICAgICAgICBp ZihzLT5jLm1lLmRpYV9zaXplPj0yKXsKKyAgICAgICAgaWYocy0+bWUuZGlhX3NpemU+PTIpewog ICAgICAgICAgICAgY29uc3QgaW50IHRsPSBzY29yZV9tYXBbKGluZGV4LSgxPDxNRV9NQVBfU0hJ RlQpLTEpJihNRV9NQVBfU0laRS0xKV07CiAgICAgICAgICAgICBjb25zdCBpbnQgYmw9IHNjb3Jl X21hcFsoaW5kZXgrKDE8PE1FX01BUF9TSElGVCktMSkmKE1FX01BUF9TSVpFLTEpXTsKICAgICAg ICAgICAgIGNvbnN0IGludCB0cj0gc2NvcmVfbWFwWyhpbmRleC0oMTw8TUVfTUFQX1NISUZUKSsx KSYoTUVfTUFQX1NJWkUtMSldOwpAQCAtNDE3LDcgKzQxNyw3IEBAIHN0YXRpYyBhdl9hbHdheXNf aW5saW5lIGludCBzbWFsbF9kaWFtb25kX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBzLCBp bnQgKmJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2lu ZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykK IHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9u RXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJv bWFfY21wZjsKICAgICBpbnQgbmV4dF9kaXI9LTE7CiAgICAgTE9BRF9DT01NT04KQEAgLTQ1OCw3 ICs0NTgsNyBAQCBzdGF0aWMgaW50IGZ1bm55X2RpYW1vbmRfc2VhcmNoKE1QVkVuY0NvbnRleHQg KmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVu YWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg c2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3Qg Yz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAg ICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBpbnQgZGlhX3NpemU7CiAgICAg TE9BRF9DT01NT04KQEAgLTUwMCw3ICs1MDAsNyBAQCBzdGF0aWMgaW50IGhleF9zZWFyY2goTVBW RW5jQ29udGV4dCAqY29uc3QgcywgaW50ICpiZXN0LCBpbnQgZG1pbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNfaW5kZXgsIGludCByZWZfaW5kZXgsIGNv bnN0IGludCBwZW5hbHR5X2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBzaXplLCBpbnQgaCwgaW50IGZsYWdzLCBpbnQgZGlhX3NpemUpCiB7Ci0gICAg TW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENvbnRl eHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgbWVfY21wX2Z1bmMgY21wZiwgY2hyb21hX2NtcGY7 CiAgICAgTE9BRF9DT01NT04KICAgICBMT0FEX0NPTU1PTjIKQEAgLTUzNCw3ICs1MzQsNyBAQCBz dGF0aWMgaW50IGwyc19kaWFfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVz dCwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg c3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBm bGFncykKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAg TW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBm LCBjaHJvbWFfY21wZjsKICAgICBMT0FEX0NPTU1PTgogICAgIExPQURfQ09NTU9OMgpAQCAtNTcy LDcgKzU3Miw3IEBAIHN0YXRpYyBpbnQgdW1oX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz LCBpbnQgKmJlc3QsIGludCBkbWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHNyY19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50IHBlbmFsdHlfZmFj dG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGlu dCBoLCBpbnQgZmxhZ3MpCiB7Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5j Lm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgbWVfY21w X2Z1bmMgY21wZiwgY2hyb21hX2NtcGY7CiAgICAgTE9BRF9DT01NT04KICAgICBMT0FEX0NPTU1P TjIKQEAgLTYxOSw3ICs2MTksNyBAQCBzdGF0aWMgaW50IGZ1bGxfc2VhcmNoKE1QVkVuY0NvbnRl eHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQg cGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29u c3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsK ICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAgICBMT0FEX0NPTU1PTgogICAg IExPQURfQ09NTU9OMgpAQCAtNjgyLDcgKzY4Miw3IEBAIHN0YXRpYyBpbnQgc2FiX2RpYW1vbmRf c2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQgcmVm X2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsKLSAgICBNb3Rp b25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0Q29udGV4dCAq Y29uc3QgYyA9ICZzLT5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFfY21wZjsKICAg ICBNaW5pbWEgbWluaW1hW01BWF9TQUJfU0laRV07CiAgICAgY29uc3QgaW50IG1pbmltYV9jb3Vu dD0gRkZBQlMoYy0+ZGlhX3NpemUpOwpAQCAtNzcyLDcgKzc3Miw3IEBAIHN0YXRpYyBpbnQgdmFy X2RpYW1vbmRfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRt aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4 LCBpbnQgcmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncykKIHsK LSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90aW9uRXN0 Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBtZV9jbXBfZnVuYyBjbXBmLCBjaHJvbWFf Y21wZjsKICAgICBpbnQgZGlhX3NpemU7CiAgICAgTE9BRF9DT01NT04KQEAgLTgzMiw3ICs4MzIs NyBAQCBzdGF0aWMgaW50IHZhcl9kaWFtb25kX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25zdCBz LCBpbnQgKmJlc3QsIGludCBkbWluLAogc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGRpYW1v bmRfc2VhcmNoKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsIGludCAqYmVzdCwgaW50IGRtaW4sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjX2luZGV4LCBpbnQg cmVmX2luZGV4LCBjb25zdCBpbnQgcGVuYWx0eV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgaW50IGgsIGludCBmbGFncyl7Ci0gICAgTW90 aW9uRXN0Q29udGV4dCAqIGNvbnN0IGM9ICZzLT5jLm1lOworICAgIE1vdGlvbkVzdENvbnRleHQg KmNvbnN0IGMgPSAmcy0+bWU7CiAgICAgaWYoYy0+ZGlhX3NpemU9PS0xKQogICAgICAgICByZXR1 cm4gZnVubnlfZGlhbW9uZF9zZWFyY2gocywgYmVzdCwgZG1pbiwgc3JjX2luZGV4LCByZWZfaW5k ZXgsIHBlbmFsdHlfZmFjdG9yLCBzaXplLCBoLCBmbGFncyk7CiAgICAgZWxzZSBpZihjLT5kaWFf c2l6ZTwtMSkKQEAgLTg2MSw3ICs4NjEsNyBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQg ZXB6c19tb3Rpb25fc2VhcmNoX2ludGVybmFsKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBQWzEwXVsyXSwgaW50IHNyY19pbmRleCwgaW50 IHJlZl9pbmRleCwgY29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgcmVmX212X3NjYWxlLCBpbnQgZmxhZ3MsIGludCBzaXplLCBpbnQg aCkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90 aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBpbnQgYmVzdFsyXT17MCwgMH07 ICAgICAgLyoqPCB4IGFuZCB5IGNvb3JkaW5hdGVzIG9mIHRoZSBiZXN0IG1vdGlvbiB2ZWN0b3Iu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5lLiB0aGUgZGlmZmVyZW5jZSBiZXR3 ZWVuIHRoZSBwb3NpdGlvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi bG9jayBjdXJyZW50bHkgYmVpbmcgZW5jb2RlZCBhbmQgdGhlIHBvc2l0aW9uIG9mCkBAIC05Nzks NyArOTc5LDcgQEAgaW50IGZmX2VwenNfbW90aW9uX3NlYXJjaChNUFZFbmNDb250ZXh0ICpjb25z dCBzLCBpbnQgKm14X3B0ciwgaW50ICpteV9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGludDE2X3QgKCpsYXN0X212KVsyXSwgaW50IHJlZl9tdl9zY2FsZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBoKQogewotICAgIE1vdGlvbkVzdENvbnRl eHQgKiBjb25zdCBjPSAmcy0+Yy5tZTsKKyAgICBNb3Rpb25Fc3RDb250ZXh0ICpjb25zdCBjID0g JnMtPm1lOwogLy9GSVhNRSBjb252ZXJ0IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgc2FtZSB3YXkg aWYgZmFzdGVyCiAgICAgaWYoYy0+ZmxhZ3M9PTAgJiYgaD09MTYgJiYgc2l6ZT09MCl7CiAgICAg ICAgIHJldHVybiBlcHpzX21vdGlvbl9zZWFyY2hfaW50ZXJuYWwocywgbXhfcHRyLCBteV9wdHIs IFAsIHNyY19pbmRleCwgcmVmX2luZGV4LCBsYXN0X212LCByZWZfbXZfc2NhbGUsIDAsIDAsIDE2 KTsKQEAgLTk5NSw3ICs5OTUsNyBAQCBzdGF0aWMgaW50IGVwenNfbW90aW9uX3NlYXJjaDIoTVBW RW5jQ29udGV4dCAqY29uc3QgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNy Y19pbmRleCwgaW50IHJlZl9pbmRleCwgY29uc3QgaW50MTZfdCAoKmxhc3RfbXYpWzJdLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVmX212X3NjYWxlLCBjb25zdCBpbnQgc2l6 ZSkKIHsKLSAgICBNb3Rpb25Fc3RDb250ZXh0ICogY29uc3QgYz0gJnMtPmMubWU7CisgICAgTW90 aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZzLT5tZTsKICAgICBpbnQgYmVzdFsyXT17MCwgMH07 CiAgICAgaW50IGQsIGRtaW47CiAgICAgdW5zaWduZWQgbWFwX2dlbmVyYXRpb247CmRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL21wZWcxMmVuYy5jIGIvbGliYXZjb2RlYy9tcGVnMTJlbmMuYwppbmRl eCA1ODQ1NzNiNDY2Li5lNGFjMjU2NTM4IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWcxMmVu Yy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZzEyZW5jLmMKQEAgLTExMTIsNyArMTExMiw3IEBAIHN0 YXRpYyBhdl9jb2xkIGludCBlbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAg bS0+ZW5jb2RlX3BpY3R1cmVfaGVhZGVyID0gbXBlZzFfZW5jb2RlX3BpY3R1cmVfaGVhZGVyOwog ICAgIHMtPmVuY29kZV9tYiAgICAgICAgICAgICA9IG1wZWcxMl9lbmNvZGVfbWI7CiAKLSAgICBz LT5jLm1lLm12X3BlbmFsdHkgPSBtdl9wZW5hbHR5OworICAgIHMtPm1lLm12X3BlbmFsdHkgPSBt dl9wZW5hbHR5OwogICAgIG0tPmZjb2RlX3RhYiAgICAgPSBmY29kZV90YWIgKyBNQVhfTVY7CiAg ICAgaWYgKGF2Y3R4LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPKSB7CiAgICAg ICAgIHMtPm1pbl9xY29lZmYgPSAtMjU1OwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlk ZW8uYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMKaW5kZXggYTY1MTI1Y2MxMy4uZWZjOWVlMjRk NiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW8uYworKysgYi9saWJhdmNvZGVjL21w ZWd2aWRlby5jCkBAIC00MDYsNyArNDA2LDYgQEAgc3RhdGljIGF2X2NvbGQgdm9pZCBmcmVlX2R1 cGxpY2F0ZV9jb250ZXh0KE1wZWdFbmNDb250ZXh0ICpzKQogCiAgICAgYXZfZnJlZXAoJnMtPnNj LmVkZ2VfZW11X2J1ZmZlcik7CiAgICAgYXZfZnJlZXAoJnMtPnNjLnNjcmF0Y2hwYWRfYnVmKTsK LSAgICBzLT5tZS50ZW1wID0gcy0+bWUuc2NyYXRjaHBhZCA9CiAgICAgcy0+c2Mub2JtY19zY3Jh dGNocGFkID0gTlVMTDsKICAgICBzLT5zYy5saW5lc2l6ZSA9IDA7CiAKQEAgLTQyOCwxMyArNDI3 LDEwIEBAIHN0YXRpYyB2b2lkIGJhY2t1cF9kdXBsaWNhdGVfY29udGV4dChNcGVnRW5jQ29udGV4 dCAqYmFrLCBNcGVnRW5jQ29udGV4dCAqc3JjKQogewogI2RlZmluZSBDT1BZKGEpIGJhay0+YSA9 IHNyYy0+YQogICAgIENPUFkoc2MpOwotICAgIENPUFkobWUubWFwKTsKLSAgICBDT1BZKG1lLnNj b3JlX21hcCk7CiAgICAgQ09QWShibG9ja3MpOwogICAgIENPUFkoYmxvY2spOwogICAgIENPUFko c3RhcnRfbWJfeSk7CiAgICAgQ09QWShlbmRfbWJfeSk7Ci0gICAgQ09QWShtZS5tYXBfZ2VuZXJh dGlvbik7CiAgICAgQ09QWShhY192YWxfYmFzZSk7CiAgICAgQ09QWShhY192YWxbMF0pOwogICAg IENPUFkoYWNfdmFsWzFdKTsKQEAgLTYzNiw4ICs2MzIsNiBAQCBzdGF0aWMgdm9pZCBjbGVhcl9j b250ZXh0KE1wZWdFbmNDb250ZXh0ICpzKQogICAgIHMtPmFjX3ZhbFswXSA9CiAgICAgcy0+YWNf dmFsWzFdID0KICAgICBzLT5hY192YWxbMl0gPU5VTEw7Ci0gICAgcy0+bWUuc2NyYXRjaHBhZCA9 IE5VTEw7Ci0gICAgcy0+bWUudGVtcCA9IE5VTEw7CiAgICAgbWVtc2V0KCZzLT5zYywgMCwgc2l6 ZW9mKHMtPnNjKSk7CiAKIApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW8uaCBiL2xp YmF2Y29kZWMvbXBlZ3ZpZGVvLmgKaW5kZXggNTMwMTMzODE4OC4uMWRjZmNhNmIwMyAxMDA2NDQK LS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW8uaAorKysgYi9saWJhdmNvZGVjL21wZWd2aWRlby5o CkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiaDI2M2RzcC5oIgogI2luY2x1ZGUgImhwZWxk c3AuaCIKICNpbmNsdWRlICJpZGN0ZHNwLmgiCi0jaW5jbHVkZSAibW90aW9uX2VzdC5oIgogI2lu Y2x1ZGUgIm1wZWdwaWN0dXJlLmgiCiAjaW5jbHVkZSAicXBlbGRzcC5oIgogI2luY2x1ZGUgInZp ZGVvZHNwLmgiCkBAIC0yMDUsOCArMjA0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRl eHQgewogICAgIGludCBsYXN0X212WzJdWzJdWzJdOyAgICAgICAgICAgICAvLy88IGxhc3QgTVYs IHVzZWQgZm9yIE1WIHByZWRpY3Rpb24gaW4gTVBFRy0xICYgQi1mcmFtZSBNUEVHLTQKICAgICBp bnQxNl90IGRpcmVjdF9zY2FsZV9tdlsyXVs2NF07ICAgLy8vPCBwcmVjb21wdXRlZCB0byBhdm9p ZCBkaXZpc2lvbnMgaW4gZmZfbXBlZzRfc2V0X2RpcmVjdF9tdgogCi0gICAgTW90aW9uRXN0Q29u dGV4dCBtZTsKLQogICAgIGludCBub19yb3VuZGluZzsgIC8qKjwgYXBwbHkgbm8gcm91bmRpbmcg dG8gbW90aW9uIGNvbXBlbnNhdGlvbiAoTVBFRy00LCBtc21wZWc0LCAuLi4pCiAgICAgICAgICAg ICAgICAgICAgICAgICBmb3IgQi1mcmFtZXMgcm91bmRpbmcgbW9kZSBpcyBhbHdheXMgMCAqLwog CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYyBiL2xpYmF2Y29kZWMvbXBl Z3ZpZGVvX2VuYy5jCmluZGV4IDc0OTJhOWZkYmQuLjExNmNhMDA3YmEgMTAwNjQ0Ci0tLSBhL2xp YmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5j CkBAIC0zMTgsNyArMzE4LDcgQEAgc3RhdGljIGF2X2NvbGQgaW50IG1lX2NtcF9pbml0KE1QVk1h aW5FbmNDb250ZXh0ICpjb25zdCBtLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgKICAgICBpbnQgcmV0 OwogCiAgICAgZmZfbWVfY21wX2luaXQoJm1lY2MsIGF2Y3R4KTsKLSAgICByZXQgPSBmZl9tZV9p bml0KCZzLT5jLm1lLCBhdmN0eCwgJm1lY2MsIDEpOworICAgIHJldCA9IGZmX21lX2luaXQoJnMt Pm1lLCBhdmN0eCwgJm1lY2MsIDEpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4g cmV0OwogICAgIHJldCA9IGZmX3NldF9jbXAoJm1lY2MsIG1lX2NtcCwgbS0+ZnJhbWVfc2tpcF9j bXAsIDEpOwpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZl cnMoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiAjZWxz ZQogICAgICAgICBBTElHTiA9IDEyOCwKICNlbmRpZgotICAgICAgICBNRV9NQVBfQUxMT0NfU0la RSA9IEZGQUxJR04oMiAqIE1FX01BUF9TSVpFICogc2l6ZW9mKCpzLT5jLm1lLm1hcCksIEFMSUdO KSwKKyAgICAgICAgTUVfTUFQX0FMTE9DX1NJWkUgPSBGRkFMSUdOKDIgKiBNRV9NQVBfU0laRSAq IHNpemVvZigqcy0+bWUubWFwKSwgQUxJR04pLAogICAgICAgICBEQ1RfRVJST1JfU0laRSAgICA9 IEZGQUxJR04oMiAqIHNpemVvZigqcy0+ZGN0X2Vycm9yX3N1bSksIEFMSUdOKSwKICAgICB9Owog ICAgIHN0YXRpY19hc3NlcnQoRkZNQVgoTUVfTUFQX0FMTE9DX1NJWkUsIERDVF9FUlJPUl9TSVpF KSAqIE1BWF9USFJFQURTICsgQUxJR04gLSAxIDw9IFNJWkVfTUFYLApAQCAtNDk1LDggKzQ5NSw4 IEBAIHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2J1ZmZlcnMoTVBWTWFpbkVuY0NvbnRleHQgKmNv bnN0IG0sIEFWQ29kZWNDb250ZXh0ICphdmN0CiAgICAgICAgIHMyLT5tYl9tZWFuICAgICAgPSAo dWludDhfdCopKHMyLT5tYl92YXIgKyBtYl9hcnJheV9zaXplKTsKICAgICAgICAgczItPmxhbWJk YV90YWJsZSA9IHMtPmxhbWJkYV90YWJsZTsKIAotICAgICAgICBzMi0+Yy5tZS5tYXAgICAgID0g KHVpbnQzMl90KiltZV9tYXA7Ci0gICAgICAgIHMyLT5jLm1lLnNjb3JlX21hcCA9IHMyLT5jLm1l Lm1hcCArIE1FX01BUF9TSVpFOworICAgICAgICBzMi0+bWUubWFwICAgICAgID0gKHVpbnQzMl90 KiltZV9tYXA7CisgICAgICAgIHMyLT5tZS5zY29yZV9tYXAgPSBzMi0+bWUubWFwICsgTUVfTUFQ X1NJWkU7CiAgICAgICAgIG1lX21hcCAgICAgICAgICArPSBNRV9NQVBfQUxMT0NfU0laRTsKIAog ICAgICAgICBzMi0+cF9tdl90YWJsZSAgICAgICAgICAgID0gdG1wX212X3RhYmxlOwpAQCAtMjc5 MSw4ICsyNzkxLDggQEAgc3RhdGljIGludCBwcmVfZXN0aW1hdGVfbW90aW9uX3RocmVhZChBVkNv ZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKICAgICBNUFZFbmNDb250ZXh0ICpjb25zdCBzID0g Kih2b2lkKiopYXJnOwogCiAKLSAgICBzLT5jLm1lLnByZV9wYXNzID0gMTsKLSAgICBzLT5jLm1l LmRpYV9zaXplID0gcy0+Yy5hdmN0eC0+cHJlX2RpYV9zaXplOworICAgIHMtPm1lLnByZV9wYXNz ID0gMTsKKyAgICBzLT5tZS5kaWFfc2l6ZSA9IHMtPmMuYXZjdHgtPnByZV9kaWFfc2l6ZTsKICAg ICBzLT5jLmZpcnN0X3NsaWNlX2xpbmUgPSAxOwogICAgIGZvciAocy0+Yy5tYl95ID0gcy0+Yy5l bmRfbWJfeSAtIDE7IHMtPmMubWJfeSA+PSBzLT5jLnN0YXJ0X21iX3k7IHMtPmMubWJfeS0tKSB7 CiAgICAgICAgIGZvciAocy0+Yy5tYl94ID0gcy0+Yy5tYl93aWR0aCAtIDE7IHMtPmMubWJfeCA+ PTAgOyBzLT5jLm1iX3gtLSkKQEAgLTI4MDAsNyArMjgwMCw3IEBAIHN0YXRpYyBpbnQgcHJlX2Vz dGltYXRlX21vdGlvbl90aHJlYWQoQVZDb2RlY0NvbnRleHQgKmMsIHZvaWQgKmFyZyl7CiAgICAg ICAgIHMtPmMuZmlyc3Rfc2xpY2VfbGluZSA9IDA7CiAgICAgfQogCi0gICAgcy0+Yy5tZS5wcmVf cGFzcyA9IDA7CisgICAgcy0+bWUucHJlX3Bhc3MgPSAwOwogCiAgICAgcmV0dXJuIDA7CiB9CkBA IC0yODA4LDcgKzI4MDgsNyBAQCBzdGF0aWMgaW50IHByZV9lc3RpbWF0ZV9tb3Rpb25fdGhyZWFk KEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogc3RhdGljIGludCBlc3RpbWF0ZV9tb3Rp b25fdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgIE1QVkVuY0NvbnRl eHQgKmNvbnN0IHMgPSAqKHZvaWQqKilhcmc7CiAKLSAgICBzLT5jLm1lLmRpYV9zaXplPSBzLT5j LmF2Y3R4LT5kaWFfc2l6ZTsKKyAgICBzLT5tZS5kaWFfc2l6ZSA9IHMtPmMuYXZjdHgtPmRpYV9z aXplOwogICAgIHMtPmMuZmlyc3Rfc2xpY2VfbGluZT0xOwogICAgIGZvciAocy0+Yy5tYl95ID0g cy0+Yy5zdGFydF9tYl95OyBzLT5jLm1iX3kgPCBzLT5jLmVuZF9tYl95OyBzLT5jLm1iX3krKykg ewogICAgICAgICBzLT5jLm1iX3g9MDsgLy9mb3IgYmxvY2sgaW5pdCBiZWxvdwpAQCAtMjg0Niw3 ICsyODQ2LDcgQEAgc3RhdGljIGludCBtYl92YXJfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2 b2lkICphcmcpewogCiAgICAgICAgICAgICBzLT5tYl92YXIgW3MtPmMubWJfc3RyaWRlICogbWJf eSArIG1iX3hdID0gdmFyYzsKICAgICAgICAgICAgIHMtPm1iX21lYW5bcy0+Yy5tYl9zdHJpZGUg KiBtYl95ICsgbWJfeF0gPSAoc3VtKzEyOCk+Pjg7Ci0gICAgICAgICAgICBzLT5jLm1lLm1iX3Zh cl9zdW1fdGVtcCAgICArPSB2YXJjOworICAgICAgICAgICAgcy0+bWUubWJfdmFyX3N1bV90ZW1w ICAgICs9IHZhcmM7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0zNTg5LDkg KzM1ODksOSBAQCBzdGF0aWMgaW50IGVuY29kZV90aHJlYWQoQVZDb2RlY0NvbnRleHQgKmMsIHZv aWQgKmFyZyl7CiAjZGVmaW5lIE1FUkdFKGZpZWxkKSBkc3QtPmZpZWxkICs9IHNyYy0+ZmllbGQ7 IHNyYy0+ZmllbGQ9MAogc3RhdGljIHZvaWQgbWVyZ2VfY29udGV4dF9hZnRlcl9tZShNUFZFbmND b250ZXh0ICpjb25zdCBkc3QsIE1QVkVuY0NvbnRleHQgKmNvbnN0IHNyYykKIHsKLSAgICBNRVJH RShjLm1lLnNjZW5lX2NoYW5nZV9zY29yZSk7Ci0gICAgTUVSR0UoYy5tZS5tY19tYl92YXJfc3Vt X3RlbXApOwotICAgIE1FUkdFKGMubWUubWJfdmFyX3N1bV90ZW1wKTsKKyAgICBNRVJHRShtZS5z Y2VuZV9jaGFuZ2Vfc2NvcmUpOworICAgIE1FUkdFKG1lLm1jX21iX3Zhcl9zdW1fdGVtcCk7Cisg ICAgTUVSR0UobWUubWJfdmFyX3N1bV90ZW1wKTsKIH0KIAogc3RhdGljIHZvaWQgbWVyZ2VfY29u dGV4dF9hZnRlcl9lbmNvZGUoTVBWRW5jQ29udGV4dCAqY29uc3QgZHN0LCBNUFZFbmNDb250ZXh0 ICpjb25zdCBzcmMpCkBAIC0zNjg0LDggKzM2ODQsOCBAQCBzdGF0aWMgaW50IGVuY29kZV9waWN0 dXJlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25zdCBBVlBhY2tldCAqcGt0KQogICAg IGludCBjb250ZXh0X2NvdW50ID0gcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50OwogCiAgICAgLyog UmVzZXQgdGhlIGF2ZXJhZ2UgTUIgdmFyaWFuY2UgKi8KLSAgICBzLT5jLm1lLm1iX3Zhcl9zdW1f dGVtcCAgICA9Ci0gICAgcy0+Yy5tZS5tY19tYl92YXJfc3VtX3RlbXAgPSAwOworICAgIHMtPm1l Lm1iX3Zhcl9zdW1fdGVtcCAgICA9CisgICAgcy0+bWUubWNfbWJfdmFyX3N1bV90ZW1wID0gMDsK IAogICAgIC8qIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBzb21lIHRpbWUgdmFycyBiZWZvcmUgd2Ug Y2FuIGVuY29kZSBCLWZyYW1lcyAqLwogICAgIC8vIFJBTDogQ29uZGl0aW9uIGFkZGVkIGZvciBN UEVHMVZJREVPCkBAIC0zNjk0LDcgKzM2OTQsNyBAQCBzdGF0aWMgaW50IGVuY29kZV9waWN0dXJl KE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBtLCBjb25zdCBBVlBhY2tldCAqcGt0KQogICAgIGlm IChDT05GSUdfTVBFRzRfRU5DT0RFUiAmJiBzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01Q RUc0KQogICAgICAgICBmZl9zZXRfbXBlZzRfdGltZShzKTsKIAotICAgIHMtPmMubWUuc2NlbmVf Y2hhbmdlX3Njb3JlPTA7CisgICAgcy0+bWUuc2NlbmVfY2hhbmdlX3Njb3JlPTA7CiAKIC8vICAg IHMtPmxhbWJkYSA9IHMtPmMuY3VyX3BpYy5wdHItPnF1YWxpdHk7IC8vRklYTUUgcXNjYWxlIC8g Li4uIHN0dWZmIGZvciBNRSByYXRlIGRpc3RvcnRpb24KIApAQCAtMzcxNyw4ICszNzE3LDYgQEAg c3RhdGljIGludCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29u c3QgQVZQYWNrZXQgKnBrdCkKICAgICAgICAgdXBkYXRlX3FzY2FsZShtKTsKICAgICB9CiAKLSAg ICBmZl9tZV9pbml0X3BpYyhzKTsKLQogICAgIHMtPmMubWJfaW50cmEgPSAwOyAvL2ZvciB0aGUg cmF0ZSBkaXN0b3J0aW9uICYgYml0IGNvbXBhcmUgZnVuY3Rpb25zCiAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBjb250ZXh0X2NvdW50OyBpKyspIHsKICAgICAgICAgTVBWRW5jQ29udGV4dCAqY29u c3Qgc2xpY2UgPSBzLT5jLmVuY19jb250ZXh0c1tpXTsKQEAgLTM3MzIsNyArMzczMCw4IEBAIHN0 YXRpYyBpbnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0IG0sIGNvbnN0 IEFWUGFja2V0ICpwa3QpCiAgICAgICAgICAgICBzbGljZS0+bGFtYmRhICA9IHMtPmxhbWJkYTsK ICAgICAgICAgICAgIHNsaWNlLT5sYW1iZGEyID0gcy0+bGFtYmRhMjsKICAgICAgICAgfQotICAg ICAgICBzbGljZS0+Yy5tZS50ZW1wID0gc2xpY2UtPmMubWUuc2NyYXRjaHBhZCA9IHNsaWNlLT5j LnNjLnNjcmF0Y2hwYWRfYnVmOworICAgICAgICBzbGljZS0+bWUudGVtcCA9IHNsaWNlLT5tZS5z Y3JhdGNocGFkID0gc2xpY2UtPmMuc2Muc2NyYXRjaHBhZF9idWY7CisgICAgICAgIGZmX21lX2lu aXRfcGljKHNsaWNlKTsKIAogICAgICAgICBoICAgICA9IHMtPmMubWJfaGVpZ2h0OwogICAgICAg ICBzdGFydCA9IHBrdC0+ZGF0YSArIChzaXplX3QpKCgoaW50NjRfdCkgcGt0LT5zaXplKSAqIHNs aWNlLT5jLnN0YXJ0X21iX3kgLyBoKTsKQEAgLTM3NzAsMTEgKzM3NjksMTEgQEAgc3RhdGljIGlu dCBlbmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3QgQVZQYWNr ZXQgKnBrdCkKICAgICBmb3IoaT0xOyBpPGNvbnRleHRfY291bnQ7IGkrKyl7CiAgICAgICAgIG1l cmdlX2NvbnRleHRfYWZ0ZXJfbWUocywgcy0+Yy5lbmNfY29udGV4dHNbaV0pOwogICAgIH0KLSAg ICBtLT5tY19tYl92YXJfc3VtID0gcy0+Yy5tZS5tY19tYl92YXJfc3VtX3RlbXA7Ci0gICAgbS0+ bWJfdmFyX3N1bSAgICA9IHMtPmMubWUuICAgbWJfdmFyX3N1bV90ZW1wOworICAgIG0tPm1jX21i X3Zhcl9zdW0gPSBzLT5tZS5tY19tYl92YXJfc3VtX3RlbXA7CisgICAgbS0+bWJfdmFyX3N1bSAg ICA9IHMtPm1lLiAgIG1iX3Zhcl9zdW1fdGVtcDsKICAgICBlbW1zX2MoKTsKIAotICAgIGlmIChz LT5jLm1lLnNjZW5lX2NoYW5nZV9zY29yZSA+IG0tPnNjZW5lY2hhbmdlX3RocmVzaG9sZCAmJgor ICAgIGlmIChzLT5tZS5zY2VuZV9jaGFuZ2Vfc2NvcmUgPiBtLT5zY2VuZWNoYW5nZV90aHJlc2hv bGQgJiYKICAgICAgICAgcy0+Yy5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX1ApIHsKICAg ICAgICAgcy0+Yy5waWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfSTsKICAgICAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBzLT5jLm1iX3N0cmlkZSAqIHMtPmMubWJfaGVpZ2h0OyBpKyspCmRpZmYg LS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb2VuYy5oIGIvbGliYXZjb2RlYy9tcGVndmlkZW9l bmMuaAppbmRleCA2OTg1YzQxOTU1Li4zNDQzODcxNGUwIDEwMDY0NAotLS0gYS9saWJhdmNvZGVj L21wZWd2aWRlb2VuYy5oCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZW5jLmgKQEAgLTMzLDYg KzMzLDcgQEAKICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKICNpbmNsdWRlICJsaWJh dnV0aWwvb3B0LmgiCiAjaW5jbHVkZSAiZmRjdGRzcC5oIgorI2luY2x1ZGUgIm1vdGlvbl9lc3Qu aCIKICNpbmNsdWRlICJtcGVndmlkZW8uaCIKICNpbmNsdWRlICJtcGVndmlkZW9lbmNkc3AuaCIK ICNpbmNsdWRlICJwaXhibG9ja2RzcC5oIgpAQCAtNjUsNiArNjYsNyBAQCB0eXBlZGVmIHN0cnVj dCBNUFZFbmNDb250ZXh0IHsKICAgICBGRENURFNQQ29udGV4dCBmZHNwOwogICAgIE1wZWd2aWRl b0VuY0RTUENvbnRleHQgbXB2ZW5jZHNwOwogICAgIFBpeGJsb2NrRFNQQ29udGV4dCBwZHNwOwor ICAgIE1vdGlvbkVzdENvbnRleHQgbWU7CiAKICAgICBpbnQxNl90ICgqcF9tdl90YWJsZSlbMl07 ICAgICAgICAgICAgLy8vPCBNViB0YWJsZSAoMU1WIHBlciBNQikgUC1mcmFtZQogICAgIGludDE2 X3QgKCpiX2ZvcndfbXZfdGFibGUpWzJdOyAgICAgICAvLy88IE1WIHRhYmxlICgxTVYgcGVyIE1C KSBmb3J3YXJkIG1vZGUgQi1mcmFtZQpAQCAtMzQ4LDcgKzM1MCw3IEBAIEZGX01QVl9PUFRfQ01Q X0ZVTkMsIFwKIAogI2RlZmluZSBGRl9NUFZfQ09NTU9OX01PVElPTl9FU1RfT1BUUyBcCiB7ICJt djAiLCAgICAgICAgICAgICJhbHdheXMgdHJ5IGEgbWIgd2l0aCBtdj08MCwwPiIsICAgICAgICAg ICAgICAgICAgICAgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IEZGX01QVl9GTEFHX01W MCB9LCAgICAwLCAwLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJtcHZfZmxhZ3MiIH0sXAot eyJtb3Rpb25fZXN0IiwgIm1vdGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsICAgICAgICAgICAg ICAgICAgICAgICBGRl9NUFZfT0ZGU0VUKGMubWUubW90aW9uX2VzdCksIEFWX09QVF9UWVBFX0lO VCwgey5pNjQgPSBGRl9NRV9FUFpTIH0sIEZGX01FX1pFUk8sIEZGX01FX1hPTkUsIEZGX01QVl9P UFRfRkxBR1MsIC51bml0ID0gIm1vdGlvbl9lc3QiIH0sICAgXAoreyJtb3Rpb25fZXN0IiwgIm1v dGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsICAgICAgICAgICAgICAgICAgICAgICBGRl9NUFZf T0ZGU0VUKG1lLm1vdGlvbl9lc3QpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gRkZfTUVfRVBa UyB9LCBGRl9NRV9aRVJPLCBGRl9NRV9YT05FLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJt b3Rpb25fZXN0IiB9LCAgIFwKIHsgInplcm8iLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwg eyAuaTY0ID0gRkZfTUVfWkVSTyB9LCAwLCAwLCBGRl9NUFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJt b3Rpb25fZXN0IiB9LCBcCiB7ICJlcHpzIiwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsg Lmk2NCA9IEZGX01FX0VQWlMgfSwgMCwgMCwgRkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAibW90 aW9uX2VzdCIgfSwgXAogeyAieG9uZSIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7IC5p NjQgPSBGRl9NRV9YT05FIH0sIDAsIDAsIEZGX01QVl9PUFRfRkxBR1MsIC51bml0ID0gIm1vdGlv bl9lc3QiIH0sIFwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvc25vd2VuYy5jIGIvbGliYXZjb2Rl Yy9zbm93ZW5jLmMKaW5kZXggMjY5ZmM4YTU5OS4uMGM5OWIyMDM3OSAxMDA2NDQKLS0tIGEvbGli YXZjb2RlYy9zbm93ZW5jLmMKKysrIGIvbGliYXZjb2RlYy9zbm93ZW5jLmMKQEAgLTIxNyw3ICsy MTcsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4KQogICAgIG1jZigxMiwxMikKIAogICAgIGZmX21lX2NtcF9pbml0KCZlbmMtPm1lY2MsIGF2 Y3R4KTsKLSAgICByZXQgPSBmZl9tZV9pbml0KCZtcHYtPmMubWUsIGF2Y3R4LCAmZW5jLT5tZWNj LCAwKTsKKyAgICByZXQgPSBmZl9tZV9pbml0KCZtcHYtPm1lLCBhdmN0eCwgJmVuYy0+bWVjYywg MCk7CiAgICAgaWYgKHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgZmZfbXBlZ3Zp ZGVvZW5jZHNwX2luaXQoJmVuYy0+bXB2ZW5jZHNwLCBhdmN0eCk7CkBAIC0yMzIsMTUgKzIzMiwx NSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 KQogICAgIGVuYy0+bS5sbWF4ICA9IGF2Y3R4LT5tYl9sbWF4OwogICAgIG1wdi0+Yy5tYl9udW0g ID0gKGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5oZWlnaHQgKyAyNTUpIC8gMjU2OyAvLyBGb3IgcmF0 ZWNvbnRyb2wKIAotICAgIG1wdi0+Yy5tZS50ZW1wICAgICAgPQotICAgIG1wdi0+Yy5tZS5zY3Jh dGNocGFkID0gYXZfY2FsbG9jKGF2Y3R4LT53aWR0aCArIDY0LCAyKjE2KjIqc2l6ZW9mKHVpbnQ4 X3QpKTsKKyAgICBtcHYtPm1lLnRlbXAgICAgICA9CisgICAgbXB2LT5tZS5zY3JhdGNocGFkID0g YXZfY2FsbG9jKGF2Y3R4LT53aWR0aCArIDY0LCAyKjE2KjIqc2l6ZW9mKHVpbnQ4X3QpKTsKICAg ICBtcHYtPmMuc2Mub2JtY19zY3JhdGNocGFkPSBhdl9tYWxsb2N6KE1CX1NJWkUqTUJfU0laRSox MipzaXplb2YodWludDMyX3QpKTsKLSAgICBtcHYtPmMubWUubWFwICAgICAgID0gYXZfbWFsbG9j eigyICogTUVfTUFQX1NJWkUgKiBzaXplb2YoKm1wdi0+Yy5tZS5tYXApKTsKLSAgICBpZiAoIW1w di0+Yy5tZS5zY3JhdGNocGFkIHx8ICFtcHYtPmMubWUubWFwIHx8ICFtcHYtPmMuc2Mub2JtY19z Y3JhdGNocGFkKQorICAgIG1wdi0+bWUubWFwICAgICAgID0gYXZfbWFsbG9jeigyICogTUVfTUFQ X1NJWkUgKiBzaXplb2YoKm1wdi0+bWUubWFwKSk7CisgICAgaWYgKCFtcHYtPm1lLnNjcmF0Y2hw YWQgfHwgIW1wdi0+bWUubWFwIHx8ICFtcHYtPmMuc2Mub2JtY19zY3JhdGNocGFkKQogICAgICAg ICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotICAgIG1wdi0+Yy5tZS5zY29yZV9tYXAgPSBtcHYt PmMubWUubWFwICsgTUVfTUFQX1NJWkU7CisgICAgbXB2LT5tZS5zY29yZV9tYXAgPSBtcHYtPm1l Lm1hcCArIE1FX01BUF9TSVpFOwogCi0gICAgbXB2LT5jLm1lLm12X3BlbmFsdHkgPSBmZl9oMjYz X2dldF9tdl9wZW5hbHR5KCk7CisgICAgbXB2LT5tZS5tdl9wZW5hbHR5ID0gZmZfaDI2M19nZXRf bXZfcGVuYWx0eSgpOwogCiAgICAgcy0+bWF4X3JlZl9mcmFtZXMgPSBhdl9jbGlwKGF2Y3R4LT5y ZWZzLCAxLCBNQVhfUkVGX0ZSQU1FUyk7CiAKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgaW5s aW5lIGludCBnZXRfcGVuYWx0eV9mYWN0b3IoaW50IGxhbWJkYSwgaW50IGxhbWJkYTIsIGludCB0 eXBlKXsKIHN0YXRpYyBpbnQgZW5jb2RlX3FfYnJhbmNoKFNub3dFbmNDb250ZXh0ICplbmMsIGlu dCBsZXZlbCwgaW50IHgsIGludCB5KQogewogICAgIFNub3dDb250ZXh0ICAgICAgKmNvbnN0IHMg PSAmZW5jLT5jb207Ci0gICAgTW90aW9uRXN0Q29udGV4dCAqY29uc3QgYyA9ICZlbmMtPm0ucy5j Lm1lOworICAgIE1vdGlvbkVzdENvbnRleHQgKmNvbnN0IGMgPSAmZW5jLT5tLnMubWU7CiAgICAg dWludDhfdCBwX2J1ZmZlclsxMDI0XTsKICAgICB1aW50OF90IGlfYnVmZmVyWzEwMjRdOwogICAg IHVpbnQ4X3QgcF9zdGF0ZVtzaXplb2Yocy0+YmxvY2tfc3RhdGUpXTsKQEAgLTg0MCwxMiArODQw LDEyIEBAIHN0YXRpYyBpbnQgZ2V0X2Jsb2NrX3JkKFNub3dFbmNDb250ZXh0ICplbmMsIGludCBt Yl94LCBpbnQgbWJfeSwKICAgICAgICAgICAgIGRpc3RvcnRpb24gPSAwOwogICAgICAgICAgICAg Zm9yKGk9MDsgaTw0OyBpKyspewogICAgICAgICAgICAgICAgIGludCBvZmYgPSBzeCsxNiooaSYx KSArIChzeSsxNiooaT4+MSkpKnJlZl9zdHJpZGU7Ci0gICAgICAgICAgICAgICAgZGlzdG9ydGlv biArPSBlbmMtPm0ucy5jLm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyArIG9mZiwgZHN0ICsg b2ZmLCByZWZfc3RyaWRlLCAxNik7CisgICAgICAgICAgICAgICAgZGlzdG9ydGlvbiArPSBlbmMt Pm0ucy5tZS5tZV9jbXBbMF0oJmVuYy0+bS5zLCBzcmMgKyBvZmYsIGRzdCArIG9mZiwgcmVmX3N0 cmlkZSwgMTYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfWVsc2V7CiAgICAgICAg IGF2X2Fzc2VydDIoYmxvY2tfdz09OCk7Ci0gICAgICAgIGRpc3RvcnRpb24gPSBlbmMtPm0ucy5j Lm1lLm1lX2NtcFswXSgmZW5jLT5tLnMsIHNyYyArIHN4ICsgc3kqcmVmX3N0cmlkZSwgZHN0ICsg c3ggKyBzeSpyZWZfc3RyaWRlLCByZWZfc3RyaWRlLCBibG9ja193KjIpOworICAgICAgICBkaXN0 b3J0aW9uID0gZW5jLT5tLnMubWUubWVfY21wWzBdKCZlbmMtPm0ucywgc3JjICsgc3ggKyBzeSpy ZWZfc3RyaWRlLCBkc3QgKyBzeCArIHN5KnJlZl9zdHJpZGUsIHJlZl9zdHJpZGUsIGJsb2NrX3cq Mik7CiAgICAgfQogCiAgICAgaWYocGxhbmVfaW5kZXg9PTApewpAQCAtOTExLDcgKzkxMSw3IEBA IHN0YXRpYyBpbnQgZ2V0XzRibG9ja19yZChTbm93RW5jQ29udGV4dCAqZW5jLCBpbnQgbWJfeCwg aW50IG1iX3ksIGludCBwbGFuZV9pbmRlCiAgICAgICAgIH0KIAogICAgICAgICBhdl9hc3NlcnQx KGJsb2NrX3c9PSA4IHx8IGJsb2NrX3c9PTE2KTsKLSAgICAgICAgZGlzdG9ydGlvbiArPSBlbmMt Pm0ucy5jLm1lLm1lX2NtcFtibG9ja193PT04XSgmZW5jLT5tLnMsIHNyYyArIHggKyB5KnJlZl9z dHJpZGUsIGRzdCArIHggKyB5KnJlZl9zdHJpZGUsIHJlZl9zdHJpZGUsIGJsb2NrX2gpOworICAg ICAgICBkaXN0b3J0aW9uICs9IGVuYy0+bS5zLm1lLm1lX2NtcFtibG9ja193PT04XSgmZW5jLT5t LnMsIHNyYyArIHggKyB5KnJlZl9zdHJpZGUsIGRzdCArIHggKyB5KnJlZl9zdHJpZGUsIHJlZl9z dHJpZGUsIGJsb2NrX2gpOwogICAgIH0KIAogICAgIGlmKHBsYW5lX2luZGV4PT0wKXsKQEAgLTE4 NjYsOSArMTg2Niw5IEBAIHN0YXRpYyBpbnQgZW5jb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICph dmN0eCwgQVZQYWNrZXQgKnBrdCwKICAgICAgICAgbXB2LT5jLmI4X3N0cmlkZSAgPSAyICogbXB2 LT5jLm1iX3dpZHRoICsgMTsKICAgICAgICAgbXB2LT5jLmZfY29kZSAgICAgPSAxOwogICAgICAg ICBtcHYtPmMucGljdF90eXBlICA9IHBpYy0+cGljdF90eXBlOwotICAgICAgICBtcHYtPmMubWUu bW90aW9uX2VzdCA9IGVuYy0+bW90aW9uX2VzdDsKLSAgICAgICAgbXB2LT5jLm1lLnNjZW5lX2No YW5nZV9zY29yZSA9IDA7Ci0gICAgICAgIG1wdi0+Yy5tZS5kaWFfc2l6ZSA9IGF2Y3R4LT5kaWFf c2l6ZTsKKyAgICAgICAgbXB2LT5tZS5tb3Rpb25fZXN0ID0gZW5jLT5tb3Rpb25fZXN0OworICAg ICAgICBtcHYtPm1lLnNjZW5lX2NoYW5nZV9zY29yZSA9IDA7CisgICAgICAgIG1wdi0+bWUuZGlh X3NpemUgPSBhdmN0eC0+ZGlhX3NpemU7CiAgICAgICAgIG1wdi0+Yy5xdWFydGVyX3NhbXBsZSAg PSAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19RUEVMKSE9MDsKICAgICAgICAgbXB2 LT5jLm91dF9mb3JtYXQgICAgICA9IEZNVF9IMjYzOwogICAgICAgICBtcHYtPmMudW5yZXN0cmlj dGVkX212ID0gMTsKQEAgLTE5MzcsNyArMTkzNyw3IEBAIHJlZG9fZnJhbWU6CiAgICAgICAgICAg ICBpZiggICBwbGFuZV9pbmRleD09MAogICAgICAgICAgICAgICAgJiYgcGljLT5waWN0X3R5cGUg PT0gQVZfUElDVFVSRV9UWVBFX1AKICAgICAgICAgICAgICAgICYmICEoYXZjdHgtPmZsYWdzJkFW X0NPREVDX0ZMQUdfUEFTUzIpCi0gICAgICAgICAgICAgICAmJiBtcHYtPmMubWUuc2NlbmVfY2hh bmdlX3Njb3JlID4gZW5jLT5zY2VuZWNoYW5nZV90aHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAg ICYmIG1wdi0+bWUuc2NlbmVfY2hhbmdlX3Njb3JlID4gZW5jLT5zY2VuZWNoYW5nZV90aHJlc2hv bGQpIHsKICAgICAgICAgICAgICAgICBmZl9pbml0X3JhbmdlX2VuY29kZXIoYywgcGt0LT5kYXRh LCBwa3QtPnNpemUpOwogICAgICAgICAgICAgICAgIGZmX2J1aWxkX3JhY19zdGF0ZXMoYywgKDFM TDw8MzIpLzIwLCAyNTYtOCk7CiAgICAgICAgICAgICAgICAgcGljLT5waWN0X3R5cGU9IEFWX1BJ Q1RVUkVfVFlQRV9JOwpAQCAtMjA5Miw5ICsyMDkyLDkgQEAgc3RhdGljIGF2X2NvbGQgaW50IGVu Y29kZV9lbmQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgICBhdl9mcmVlcCgmcy0+cmVm X3Njb3Jlc1tpXSk7CiAgICAgfQogCi0gICAgZW5jLT5tLnMuYy5tZS50ZW1wID0gTlVMTDsKLSAg ICBhdl9mcmVlcCgmZW5jLT5tLnMuYy5tZS5zY3JhdGNocGFkKTsKLSAgICBhdl9mcmVlcCgmZW5j LT5tLnMuYy5tZS5tYXApOworICAgIGVuYy0+bS5zLm1lLnRlbXAgPSBOVUxMOworICAgIGF2X2Zy ZWVwKCZlbmMtPm0ucy5tZS5zY3JhdGNocGFkKTsKKyAgICBhdl9mcmVlcCgmZW5jLT5tLnMubWUu bWFwKTsKICAgICBhdl9mcmVlcCgmZW5jLT5tLnMuYy5zYy5vYm1jX3NjcmF0Y2hwYWQpOwogCiAg ICAgYXZfZnJlZXAoJmF2Y3R4LT5zdGF0c19vdXQpOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9z dnExZW5jLmMgYi9saWJhdmNvZGVjL3N2cTFlbmMuYwppbmRleCA2ZTUxNDZkNmE1Li4xM2Y4NmE3 NmRiIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL3N2cTFlbmMuYworKysgYi9saWJhdmNvZGVjL3N2 cTFlbmMuYwpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBpbnQgc3ZxMV9lbmNvZGVfcGxhbmUo U1ZRMUVuY0NvbnRleHQgKnMsIGludCBwbGFuZSwKICAgICAgICAgczItPmI4X3N0cmlkZSAgICAg ICAgICAgICAgICAgICAgID0gMiAqIHMyLT5tYl93aWR0aCArIDE7CiAgICAgICAgIHMyLT5mX2Nv ZGUgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgIHMyLT5waWN0X3R5cGUgICAg ICAgICAgICAgICAgICAgICA9IHMtPnBpY3RfdHlwZTsKLSAgICAgICAgczItPm1lLnNjZW5lX2No YW5nZV9zY29yZSAgICAgICAgID0gMDsKKyAgICAgICAgcy0+bS5tZS5zY2VuZV9jaGFuZ2Vfc2Nv cmUgICAgICAgID0gMDsKICAgICAgICAgLy8gczItPm91dF9mb3JtYXQgICAgICAgICAgICAgICAg ICAgID0gRk1UX0gyNjM7CiAgICAgICAgIC8vIHMyLT51bnJlc3RyaWN0ZWRfbXYgICAgICAgICAg ICAgICA9IDE7CiAgICAgICAgIHMtPm0ubGFtYmRhICAgICAgICAgICAgICAgICAgICAgICA9IHMt PnF1YWxpdHk7CkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIGludCBzdnExX2VuY29kZV9wbGFu ZShTVlExRW5jQ29udGV4dCAqcywgaW50IHBsYW5lLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgczItPm1iX3N0cmlkZSArIDE7CiAgICAgICAgIGZmX21lX2lu aXRfcGljKCZzLT5tKTsKIAotICAgICAgICBzMi0+bWUuZGlhX3NpemUgICAgICA9IHMtPmF2Y3R4 LT5kaWFfc2l6ZTsKKyAgICAgICAgcy0+bS5tZS5kaWFfc2l6ZSAgICAgPSBzLT5hdmN0eC0+ZGlh X3NpemU7CiAgICAgICAgIHMyLT5maXJzdF9zbGljZV9saW5lID0gMTsKICAgICAgICAgZm9yICh5 ID0gMDsgeSA8IGJsb2NrX2hlaWdodDsgeSsrKSB7CiAgICAgICAgICAgICBzLT5tLm5ld19waWMt PmRhdGFbMF0gID0gc3JjIC0geSAqIDE2ICogc3RyaWRlOyAvLyB1Z2x5CkBAIC01MzksOCArNTM5 LDggQEAgc3RhdGljIGF2X2NvbGQgaW50IHN2cTFfZW5jb2RlX2VuZChBVkNvZGVjQ29udGV4dCAq YXZjdHgpCiAgICAgICAgICAgICAgICBzLT5yZF90b3RhbCAvIChkb3VibGUpKGF2Y3R4LT53aWR0 aCAqIGF2Y3R4LT5oZWlnaHQgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhdmN0eC0+ZnJhbWVfbnVtKSk7CiAKLSAgICBhdl9mcmVlcCgmcy0+bS5jLm1lLnNjcmF0Y2hw YWQpOwotICAgIGF2X2ZyZWVwKCZzLT5tLmMubWUubWFwKTsKKyAgICBhdl9mcmVlcCgmcy0+bS5t ZS5zY3JhdGNocGFkKTsKKyAgICBhdl9mcmVlcCgmcy0+bS5tZS5tYXApOwogICAgIGF2X2ZyZWVw KCZzLT5tYl90eXBlKTsKICAgICBhdl9mcmVlcCgmcy0+ZHVtbXkpOwogICAgIGF2X2ZyZWVwKCZz LT5zY3JhdGNoYnVmKTsKQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgc3Zx MV9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAKICAgICBmZl9ocGVsZHNwX2lu aXQoJnMtPmhkc3AsIGF2Y3R4LT5mbGFncyk7CiAgICAgZmZfbWVfY21wX2luaXQoJnMtPm1lY2Ms IGF2Y3R4KTsKLSAgICByZXQgPSBmZl9tZV9pbml0KCZzLT5tLmMubWUsIGF2Y3R4LCAmcy0+bWVj YywgMCk7CisgICAgcmV0ID0gZmZfbWVfaW5pdCgmcy0+bS5tZSwgYXZjdHgsICZzLT5tZWNjLCAw KTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIHJldDsKICAgICBmZl9tcGVndmlk ZW9lbmNkc3BfaW5pdCgmcy0+bS5tcHZlbmNkc3AsIGF2Y3R4KTsKQEAgLTYxMywyNCArNjEzLDI0 IEBAIHN0YXRpYyBhdl9jb2xkIGludCBzdnExX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICph dmN0eCkKICAgICAgICAgcmV0dXJuIHJldDsKIAogICAgIHMtPm0uYy5waWN0dXJlX3N0cnVjdHVy ZSA9IFBJQ1RfRlJBTUU7Ci0gICAgcy0+bS5jLm1lLnRlbXAgICAgICAgICAgID0KLSAgICBzLT5t LmMubWUuc2NyYXRjaHBhZCAgICAgPSBhdl9tYWxsb2N6KChhdmN0eC0+d2lkdGggKyA2NCkgKgor ICAgIHMtPm0ubWUudGVtcCAgICAgICAgICAgPQorICAgIHMtPm0ubWUuc2NyYXRjaHBhZCAgICAg PSBhdl9tYWxsb2N6KChhdmN0eC0+d2lkdGggKyA2NCkgKgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDIgKiAxNiAqIDIgKiBzaXplb2YodWludDhfdCkpOwogICAgIHMt Pm1iX3R5cGUgICAgICAgICAgICAgPSBhdl9tYWxsb2N6KChzLT55X2Jsb2NrX3dpZHRoICsgMSkg KgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnlfYmxvY2tfaGVp Z2h0ICogc2l6ZW9mKGludDE2X3QpKTsKICAgICBzLT5kdW1teSAgICAgICAgICAgICAgID0gYXZf bWFsbG9jeigocy0+eV9ibG9ja193aWR0aCArIDEpICoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzLT55X2Jsb2NrX2hlaWdodCAqIHNpemVvZihpbnQzMl90KSk7Ci0g ICAgcy0+bS5jLm1lLm1hcCAgICAgICAgICAgID0gYXZfbWFsbG9jeigyICogTUVfTUFQX1NJWkUg KiBzaXplb2YoKnMtPm0uYy5tZS5tYXApKTsKKyAgICBzLT5tLm1lLm1hcCAgICAgICAgICAgID0g YXZfbWFsbG9jeigyICogTUVfTUFQX1NJWkUgKiBzaXplb2YoKnMtPm0ubWUubWFwKSk7CiAgICAg cy0+bS5uZXdfcGljICAgICAgID0gYXZfZnJhbWVfYWxsb2MoKTsKIAotICAgIGlmICghcy0+bS5j Lm1lLnNjcmF0Y2hwYWQgfHwgIXMtPm0uYy5tZS5tYXAgfHwKKyAgICBpZiAoIXMtPm0ubWUuc2Ny YXRjaHBhZCB8fCAhcy0+bS5tZS5tYXAgfHwKICAgICAgICAgIXMtPm1iX3R5cGUgfHwgIXMtPmR1 bW15IHx8ICFzLT5tLm5ld19waWMpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Ci0g ICAgcy0+bS5jLm1lLnNjb3JlX21hcCA9IHMtPm0uYy5tZS5tYXAgKyBNRV9NQVBfU0laRTsKKyAg ICBzLT5tLm1lLnNjb3JlX21hcCA9IHMtPm0ubWUubWFwICsgTUVfTUFQX1NJWkU7CiAKICAgICBm Zl9zdnExZW5jX2luaXQoJnMtPnN2cTFlbmNkc3ApOwogCi0gICAgcy0+bS5jLm1lLm12X3BlbmFs dHkgPSBmZl9oMjYzX2dldF9tdl9wZW5hbHR5KCk7CisgICAgcy0+bS5tZS5tdl9wZW5hbHR5ID0g ZmZfaDI2M19nZXRfbXZfcGVuYWx0eSgpOwogCiAgICAgcmV0dXJuIHdyaXRlX2lkZW50KGF2Y3R4 LCBzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNUID8gIkxhdmMiIDogTElC QVZDT0RFQ19JREVOVCk7CiB9CkBAIC03MTgsNyArNzE4LDcgQEAgc3RhdGljIGludCBzdnExX2Vu Y29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QsCiAjZGVmaW5l IE9GRlNFVCh4KSBvZmZzZXRvZihzdHJ1Y3QgU1ZRMUVuY0NvbnRleHQsIHgpCiAjZGVmaW5lIFZF IEFWX09QVF9GTEFHX1ZJREVPX1BBUkFNIHwgQVZfT1BUX0ZMQUdfRU5DT0RJTkdfUEFSQU0KIHN0 YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRpb25zW10gPSB7Ci0gICAgeyAibW90aW9uLWVzdCIsICJN b3Rpb24gZXN0aW1hdGlvbiBhbGdvcml0aG0iLCBPRkZTRVQobS5jLm1lLm1vdGlvbl9lc3QpLCBB Vl9PUFRfVFlQRV9JTlQsIHsgLmk2NCA9IEZGX01FX0VQWlMgfSwgRkZfTUVfWkVSTywgRkZfTUVf WE9ORSwgVkUsIC51bml0ID0gIm1vdGlvbi1lc3QifSwKKyAgICB7ICJtb3Rpb24tZXN0IiwgIk1v dGlvbiBlc3RpbWF0aW9uIGFsZ29yaXRobSIsIE9GRlNFVChtLm1lLm1vdGlvbl9lc3QpLCBBVl9P UFRfVFlQRV9JTlQsIHsgLmk2NCA9IEZGX01FX0VQWlMgfSwgRkZfTUVfWkVSTywgRkZfTUVfWE9O RSwgVkUsIC51bml0ID0gIm1vdGlvbi1lc3QifSwKICAgICAgICAgeyAiemVybyIsIE5VTEwsIDAs IEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBGRl9NRV9aRVJPIH0sIDAsIDAsIEZGX01QVl9P UFRfRkxBR1MsIC51bml0ID0gIm1vdGlvbi1lc3QiIH0sCiAgICAgICAgIHsgImVwenMiLCBOVUxM LCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAuaTY0ID0gRkZfTUVfRVBaUyB9LCAwLCAwLCBGRl9N UFZfT1BUX0ZMQUdTLCAudW5pdCA9ICJtb3Rpb24tZXN0IiB9LAogICAgICAgICB7ICJ4b25lIiwg TlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IEZGX01FX1hPTkUgfSwgMCwgMCwg RkZfTVBWX09QVF9GTEFHUywgLnVuaXQgPSAibW90aW9uLWVzdCIgfSwKLS0gCjIuNDUuMgoK --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0070-avcodec-mpegvideo_enc-Move-code-to-initialize-variab.patch" Content-Disposition: attachment; filename*0="0070-avcodec-mpegvideo_enc-Move-code-to-initialize-variab.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkZjNlYTJjNzUxNmU2Y2RiYjNjNWM0YmVmYjgwNzQ0ZDdhMjkxMDk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNDo0NzowMCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNzAvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogTW92ZSBjb2RlIHRvIGlu aXRpYWxpemUKIHZhcmlhYmxlcyBpbW1lZGlhdGVseQoKQWxzbyBhdm9pZCBjYXN0cyBhbmQgcGFy ZW50aGVzZXMuCihUaGlzIGlzIG9ubHkgcG9zc2libGUgbm93IGJlY2F1c2UgZmZfdXBkYXRlX2R1 cGxpY2F0ZV9jb250ZXh0KCkKbm8gbG9uZ2VyIHRvdWNoZXMgdGhlIFB1dEJpdENvbnRleHQuKQoK U2lnbmVkLW9mZi1ieTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0 bG9vay5jb20+Ci0tLQogbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgfCAxMyArKysrKy0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jIGIvbGliYXZjb2RlYy9tcGVndmlk ZW9fZW5jLmMKaW5kZXggMTE2Y2EwMDdiYS4uNjJlM2U1YTIyZiAxMDA2NDQKLS0tIGEvbGliYXZj b2RlYy9tcGVndmlkZW9fZW5jLmMKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKQEAg LTM3MjAsOCArMzcyMCwxMSBAQCBzdGF0aWMgaW50IGVuY29kZV9waWN0dXJlKE1QVk1haW5FbmND b250ZXh0ICpjb25zdCBtLCBjb25zdCBBVlBhY2tldCAqcGt0KQogICAgIHMtPmMubWJfaW50cmEg PSAwOyAvL2ZvciB0aGUgcmF0ZSBkaXN0b3J0aW9uICYgYml0IGNvbXBhcmUgZnVuY3Rpb25zCiAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb250ZXh0X2NvdW50OyBpKyspIHsKICAgICAgICAgTVBW RW5jQ29udGV4dCAqY29uc3Qgc2xpY2UgPSBzLT5jLmVuY19jb250ZXh0c1tpXTsKLSAgICAgICAg dWludDhfdCAqc3RhcnQsICplbmQ7Ci0gICAgICAgIGludCBoOworICAgICAgICBpbnQgaCA9IHMt PmMubWJfaGVpZ2h0OworICAgICAgICB1aW50OF90ICpzdGFydCA9IHBrdC0+ZGF0YSArIChpbnQ2 NF90KXBrdC0+c2l6ZSAqIHNsaWNlLT5jLnN0YXJ0X21iX3kgLyBoOworICAgICAgICB1aW50OF90 ICplbmQgICA9IHBrdC0+ZGF0YSArIChpbnQ2NF90KXBrdC0+c2l6ZSAqIHNsaWNlLT5jLiAgZW5k X21iX3kgLyBoOworCisgICAgICAgIGluaXRfcHV0X2JpdHMoJnNsaWNlLT5wYiwgc3RhcnQsIGVu ZCAtIHN0YXJ0KTsKIAogICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgcmV0ID0gZmZfdXBk YXRlX2R1cGxpY2F0ZV9jb250ZXh0KCZzbGljZS0+YywgJnMtPmMpOwpAQCAtMzczMiwxMiArMzcz NSw2IEBAIHN0YXRpYyBpbnQgZW5jb2RlX3BpY3R1cmUoTVBWTWFpbkVuY0NvbnRleHQgKmNvbnN0 IG0sIGNvbnN0IEFWUGFja2V0ICpwa3QpCiAgICAgICAgIH0KICAgICAgICAgc2xpY2UtPm1lLnRl bXAgPSBzbGljZS0+bWUuc2NyYXRjaHBhZCA9IHNsaWNlLT5jLnNjLnNjcmF0Y2hwYWRfYnVmOwog ICAgICAgICBmZl9tZV9pbml0X3BpYyhzbGljZSk7Ci0KLSAgICAgICAgaCAgICAgPSBzLT5jLm1i X2hlaWdodDsKLSAgICAgICAgc3RhcnQgPSBwa3QtPmRhdGEgKyAoc2l6ZV90KSgoKGludDY0X3Qp IHBrdC0+c2l6ZSkgKiBzbGljZS0+Yy5zdGFydF9tYl95IC8gaCk7Ci0gICAgICAgIGVuZCAgID0g cGt0LT5kYXRhICsgKHNpemVfdCkoKChpbnQ2NF90KSBwa3QtPnNpemUpICogc2xpY2UtPmMuICBl bmRfbWJfeSAvIGgpOwotCi0gICAgICAgIGluaXRfcHV0X2JpdHMoJnMtPmMuZW5jX2NvbnRleHRz W2ldLT5wYiwgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKICAgICB9CiAKICAgICAvKiBFc3RpbWF0ZSBt b3Rpb24gZm9yIGV2ZXJ5IE1CICovCi0tIAoyLjQ1LjIKCg== --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0071-avcodec-motion_est-Reset-scene_change-score-MB-varia.patch" Content-Disposition: attachment; filename*0="0071-avcodec-motion_est-Reset-scene_change-score-MB-varia.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzYWI5MTFmMjE2NGI0Yzk4ZDI3YTJmNTk0NTcyMGUxZWU1MTFjOTMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNToxODoxNyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNzEvNzddIGF2Y29kZWMvbW90aW9uX2VzdDogUmVzZXQgc2NlbmVfY2hhbmdl IHNjb3JlLCBNQgogdmFyaWFuY2Ugc3RhdHMKClJlc2V0IHRoZW0gaW4gZmZfbWVfaW5pdF9waWMo KS4gSXQgaXMgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGZvciBpdAphbmQgYWxsb3dzIHRvIHJlbW92 ZSByZXNldHRpbmcgY29kZSBmcm9tIG11bHRpcGxlIHBsYWNlcwooZS5nLiBtcGVndmlkZW9fZW5j LmMgcmVzZXR0ZWQgaXQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMKKG9uZSBmb3IgdGhlIG1haW4g c2xpY2UgY29udGV4dCwgb25lIGZvciBhbGwgdGhlIG90aGVycykpLgoKU2lnbmVkLW9mZi1ieTog QW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQog bGliYXZjb2RlYy9tb3Rpb25fZXN0LmMgICAgfCAgNCArKysrCiBsaWJhdmNvZGVjL21wZWd2aWRl b19lbmMuYyB8IDEyICsrKy0tLS0tLS0tLQogbGliYXZjb2RlYy9zbm93ZW5jLmMgICAgICAgfCAg MSAtCiAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tb3Rpb25fZXN0LmMgYi9saWJhdmNvZGVjL21vdGlvbl9l c3QuYwppbmRleCBhZjA2YWNkOWIyLi4zNWY4NTNiYzYxIDEwMDY0NAotLS0gYS9saWJhdmNvZGVj L21vdGlvbl9lc3QuYworKysgYi9saWJhdmNvZGVjL21vdGlvbl9lc3QuYwpAQCAtMzk3LDYgKzM5 NywxMCBAQCB2b2lkIGZmX21lX2luaXRfcGljKE1QVkVuY0NvbnRleHQgKmNvbnN0IHMpCiAgICAg ICAgIGMtPmhwZWxfcHV0WzJdWzBdPSBjLT5ocGVsX3B1dFsyXVsxXT0KICAgICAgICAgYy0+aHBl bF9wdXRbMl1bMl09IGMtPmhwZWxfcHV0WzJdWzNdPSB6ZXJvX2hwZWw7CiAgICAgfQorICAgIC8q IFJlc2V0IHRoZSBhdmVyYWdlIE1CIHZhcmlhbmNlIGFuZCBzY2VuZSBjaGFuZ2Ugc3RhdHMgKi8K KyAgICBjLT5zY2VuZV9jaGFuZ2Vfc2NvcmUgPSAwOworICAgIGMtPm1iX3Zhcl9zdW1fdGVtcCAg ICA9CisgICAgYy0+bWNfbWJfdmFyX3N1bV90ZW1wID0gMDsKIH0KIAogI2RlZmluZSBDSEVDS19T QURfSEFMRl9NVihzdWZmaXgsIHgsIHkpIFwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3Zp ZGVvX2VuYy5jIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKaW5kZXggNjJlM2U1YTIyZi4u ZTg0ZjFkZDQ2NyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKKysrIGIv bGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKQEAgLTM1ODksOSArMzU4OSw5IEBAIHN0YXRpYyBp bnQgZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9pZCAqYXJnKXsKICNkZWZpbmUg TUVSR0UoZmllbGQpIGRzdC0+ZmllbGQgKz0gc3JjLT5maWVsZDsgc3JjLT5maWVsZD0wCiBzdGF0 aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX21lKE1QVkVuY0NvbnRleHQgKmNvbnN0IGRzdCwg TVBWRW5jQ29udGV4dCAqY29uc3Qgc3JjKQogewotICAgIE1FUkdFKG1lLnNjZW5lX2NoYW5nZV9z Y29yZSk7Ci0gICAgTUVSR0UobWUubWNfbWJfdmFyX3N1bV90ZW1wKTsKLSAgICBNRVJHRShtZS5t Yl92YXJfc3VtX3RlbXApOworICAgIEFERChtZS5zY2VuZV9jaGFuZ2Vfc2NvcmUpOworICAgIEFE RChtZS5tY19tYl92YXJfc3VtX3RlbXApOworICAgIEFERChtZS5tYl92YXJfc3VtX3RlbXApOwog fQogCiBzdGF0aWMgdm9pZCBtZXJnZV9jb250ZXh0X2FmdGVyX2VuY29kZShNUFZFbmNDb250ZXh0 ICpjb25zdCBkc3QsIE1QVkVuY0NvbnRleHQgKmNvbnN0IHNyYykKQEAgLTM2ODMsMTAgKzM2ODMs NiBAQCBzdGF0aWMgaW50IGVuY29kZV9waWN0dXJlKE1QVk1haW5FbmNDb250ZXh0ICpjb25zdCBt LCBjb25zdCBBVlBhY2tldCAqcGt0KQogICAgIGludCBiaXRzOwogICAgIGludCBjb250ZXh0X2Nv dW50ID0gcy0+Yy5zbGljZV9jb250ZXh0X2NvdW50OwogCi0gICAgLyogUmVzZXQgdGhlIGF2ZXJh Z2UgTUIgdmFyaWFuY2UgKi8KLSAgICBzLT5tZS5tYl92YXJfc3VtX3RlbXAgICAgPQotICAgIHMt Pm1lLm1jX21iX3Zhcl9zdW1fdGVtcCA9IDA7Ci0KICAgICAvKiB3ZSBuZWVkIHRvIGluaXRpYWxp emUgc29tZSB0aW1lIHZhcnMgYmVmb3JlIHdlIGNhbiBlbmNvZGUgQi1mcmFtZXMgKi8KICAgICAv LyBSQUw6IENvbmRpdGlvbiBhZGRlZCBmb3IgTVBFRzFWSURFTwogICAgIGlmIChzLT5jLm91dF9m b3JtYXQgPT0gRk1UX01QRUcxIHx8IChzLT5jLmgyNjNfcHJlZCAmJiBzLT5jLm1zbXBlZzRfdmVy c2lvbiA9PSBNU01QNF9VTlVTRUQpKQpAQCAtMzY5NCw4ICszNjkwLDYgQEAgc3RhdGljIGludCBl bmNvZGVfcGljdHVyZShNUFZNYWluRW5jQ29udGV4dCAqY29uc3QgbSwgY29uc3QgQVZQYWNrZXQg KnBrdCkKICAgICBpZiAoQ09ORklHX01QRUc0X0VOQ09ERVIgJiYgcy0+Yy5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9NUEVHNCkKICAgICAgICAgZmZfc2V0X21wZWc0X3RpbWUocyk7CiAKLSAgICBz LT5tZS5zY2VuZV9jaGFuZ2Vfc2NvcmU9MDsKLQogLy8gICAgcy0+bGFtYmRhID0gcy0+Yy5jdXJf cGljLnB0ci0+cXVhbGl0eTsgLy9GSVhNRSBxc2NhbGUgLyAuLi4gc3R1ZmYgZm9yIE1FIHJhdGUg ZGlzdG9ydGlvbgogCiAgICAgaWYgKHMtPmMucGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9J KSB7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Nub3dlbmMuYyBiL2xpYmF2Y29kZWMvc25vd2Vu Yy5jCmluZGV4IDBjOTliMjAzNzkuLmZlNzEwNDhhNDUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMv c25vd2VuYy5jCisrKyBiL2xpYmF2Y29kZWMvc25vd2VuYy5jCkBAIC0xODY3LDcgKzE4NjcsNiBA QCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0 ICpwa3QsCiAgICAgICAgIG1wdi0+Yy5mX2NvZGUgICAgID0gMTsKICAgICAgICAgbXB2LT5jLnBp Y3RfdHlwZSAgPSBwaWMtPnBpY3RfdHlwZTsKICAgICAgICAgbXB2LT5tZS5tb3Rpb25fZXN0ID0g ZW5jLT5tb3Rpb25fZXN0OwotICAgICAgICBtcHYtPm1lLnNjZW5lX2NoYW5nZV9zY29yZSA9IDA7 CiAgICAgICAgIG1wdi0+bWUuZGlhX3NpemUgPSBhdmN0eC0+ZGlhX3NpemU7CiAgICAgICAgIG1w di0+Yy5xdWFydGVyX3NhbXBsZSAgPSAocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19R UEVMKSE9MDsKICAgICAgICAgbXB2LT5jLm91dF9mb3JtYXQgICAgICA9IEZNVF9IMjYzOwotLSAK Mi40NS4yCgo= --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0072-avcodec-mpegvideo_enc-Defer-initialization-of-mb-pos.patch" Content-Disposition: attachment; filename*0="0072-avcodec-mpegvideo_enc-Defer-initialization-of-mb-pos.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2ZDJkMzRlYzNiMjdjMzE1OTM4ODI2MjMzOTQ2ZDIxMDVlMzAzN2YzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAyMToyODowMCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNzIvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogRGVmZXIgaW5pdGlhbGl6 YXRpb24gb2YgbWItcG9zCiBkZXBlbmRlbnQgdmFycwoKT25seSBzZXQgdGhlbSBhZnRlciBtYl94 IGFuZCBtYl95IGFyZSBrbm93biB3aGljaCBoYXBwZW5zCm9ubHkgYWZ0ZXIgdGhlIGNhbGwgdG8g ZmZfaDI2MV9yZW9yZGVyX21iX2luZGV4KCkuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFJoZWlu aGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KLS0tCiBsaWJhdmNvZGVjL21w ZWd2aWRlb19lbmMuYyB8IDEwICsrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlv bnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW9f ZW5jLmMgYi9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYwppbmRleCBlODRmMWRkNDY3Li5kYzE2 NWQ5MmQyIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYworKysgYi9saWJh dmNvZGVjL21wZWd2aWRlb19lbmMuYwpAQCAtMzAyNCw4ICszMDI0LDcgQEAgc3RhdGljIGludCBl bmNvZGVfdGhyZWFkKEFWQ29kZWNDb250ZXh0ICpjLCB2b2lkICphcmcpewogICAgICAgICBmZl9p bml0X2Jsb2NrX2luZGV4KCZzLT5jKTsKIAogICAgICAgICBmb3IgKGludCBtYl94ID0gMDsgbWJf eCA8IHMtPmMubWJfd2lkdGg7IG1iX3grKykgewotICAgICAgICAgICAgaW50IHh5ID0gbWJfeSpz LT5jLm1iX3N0cmlkZSArIG1iX3g7IC8vIHJlbW92ZWQgY29uc3QsIEgyNjEgbmVlZHMgdG8gYWRq dXN0IHRoaXMKLSAgICAgICAgICAgIGludCBtYl90eXBlPSBzLT5tYl90eXBlW3h5XTsKKyAgICAg ICAgICAgIGludCBtYl90eXBlLCB4eTsKIC8vICAgICAgICAgICAgaW50IGQ7CiAgICAgICAgICAg ICBpbnQgZG1pbj0gSU5UX01BWDsKICAgICAgICAgICAgIGludCBkaXI7CkBAIC0zMDQ5LDExICsz MDQ4LDEwIEBAIHN0YXRpYyBpbnQgZW5jb2RlX3RocmVhZChBVkNvZGVjQ29udGV4dCAqYywgdm9p ZCAqYXJnKXsKICAgICAgICAgICAgIHMtPmMubWJfeSA9IG1iX3k7ICAvLyBtb3ZlZCBpbnRvIGxv b3AsIGNhbiBnZXQgY2hhbmdlZCBieSBILjI2MQogICAgICAgICAgICAgZmZfdXBkYXRlX2Jsb2Nr X2luZGV4KCZzLT5jLCA4LCAwLCBzLT5jLmNocm9tYV94X3NoaWZ0KTsKIAotICAgICAgICAgICAg aWYoQ09ORklHX0gyNjFfRU5DT0RFUiAmJiBzLT5jLmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gy NjEpeworICAgICAgICAgICAgaWYgKENPTkZJR19IMjYxX0VOQ09ERVIgJiYgcy0+Yy5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9IMjYxKQogICAgICAgICAgICAgICAgIGZmX2gyNjFfcmVvcmRlcl9t Yl9pbmRleChzKTsKLSAgICAgICAgICAgICAgICB4eSA9IHMtPmMubWJfeSpzLT5jLm1iX3N0cmlk ZSArIHMtPmMubWJfeDsKLSAgICAgICAgICAgICAgICBtYl90eXBlPSBzLT5tYl90eXBlW3h5XTsK LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHh5ICAgICAgPSBzLT5jLm1iX3kgKiBzLT5jLm1i X3N0cmlkZSArIHMtPmMubWJfeDsKKyAgICAgICAgICAgIG1iX3R5cGUgPSBzLT5tYl90eXBlW3h5 XTsKIAogICAgICAgICAgICAgLyogd3JpdGUgZ29iIC8gdmlkZW8gcGFja2V0IGhlYWRlciAgKi8K ICAgICAgICAgICAgIGlmKHMtPnJ0cF9tb2RlKXsKLS0gCjIuNDUuMgoK --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0073-avcodec-mpegvideo_enc-Use-better-variable-name.patch" Content-Disposition: attachment; filename*0="0073-avcodec-mpegvideo_enc-Use-better-variable-name.patch" Content-Transfer-Encoding: base64 RnJvbSAxYWIzNjYyZmVhODQ5ZjkxMTYxOGZlOWQ3Mjc2YmY0OWViYmJmZmQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAyMTo1NTozNCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNzMvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvX2VuYzogVXNlIGJldHRlciB2YXJp YWJsZSBuYW1lCgpBbHNvIGZpeGVzIHNoYWRvd2luZy4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMg UmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29k ZWMvbXBlZ3ZpZGVvX2VuYy5jIHwgMTAgKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5z ZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2 aWRlb19lbmMuYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jCmluZGV4IGRjMTY1ZDkyZDIu Ljk1ZDc3NDE1NWEgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jCisrKyBi L2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2VuYy5jCkBAIC01MzQsNyArNTM0LDcgQEAgYXZfY29sZCBp bnQgZmZfbXB2X2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICBNUFZNYWlu RW5jQ29udGV4dCAqY29uc3QgbSA9IGF2Y3R4LT5wcml2X2RhdGE7CiAgICAgTVBWRW5jQ29udGV4 dCAgICAqY29uc3QgcyA9ICZtLT5zOwogICAgIEFWQ1BCUHJvcGVydGllcyAqY3BiX3Byb3BzOwot ICAgIGludCBpLCByZXQ7CisgICAgaW50IGdjZCwgcmV0OwogCiAgICAgbXB2X2VuY29kZV9kZWZh dWx0cyhtKTsKIApAQCAtODE4LDExICs4MTgsMTEgQEAgYXZfY29sZCBpbnQgZmZfbXB2X2VuY29k ZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICAgICAgbS0+Yl9mcmFtZV9zdHJhdGVn eSA9IDA7CiAgICAgfQogCi0gICAgaSA9IGF2X2djZChhdmN0eC0+dGltZV9iYXNlLmRlbiwgYXZj dHgtPnRpbWVfYmFzZS5udW0pOwotICAgIGlmIChpID4gMSkgeworICAgIGdjZCA9IGF2X2djZChh dmN0eC0+dGltZV9iYXNlLmRlbiwgYXZjdHgtPnRpbWVfYmFzZS5udW0pOworICAgIGlmIChnY2Qg PiAxKSB7CiAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0lORk8sICJyZW1vdmluZyBjb21t b24gZmFjdG9ycyBmcm9tIGZyYW1lcmF0ZVxuIik7Ci0gICAgICAgIGF2Y3R4LT50aW1lX2Jhc2Uu ZGVuIC89IGk7Ci0gICAgICAgIGF2Y3R4LT50aW1lX2Jhc2UubnVtIC89IGk7CisgICAgICAgIGF2 Y3R4LT50aW1lX2Jhc2UuZGVuIC89IGdjZDsKKyAgICAgICAgYXZjdHgtPnRpbWVfYmFzZS5udW0g Lz0gZ2NkOwogICAgICAgICAvL3JldHVybiAtMTsKICAgICB9CiAKLS0gCjIuNDUuMgoK --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0074-avcodec-h261dec-Set-FF_CODEC_CAP_SKIP_FRAME_FILL_PAR.patch" Content-Disposition: attachment; filename*0="0074-avcodec-h261dec-Set-FF_CODEC_CAP_SKIP_FRAME_FILL_PAR.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4YmYxNjVjYmFiMjA2NDEyOWEzZDM4Y2E3MGI3ZGQ3MDk5Nzk3OGEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNjo1NToyMiArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNzQvNzddIGF2Y29kZWMvaDI2MWRlYzogU2V0IEZGX0NPREVDX0NBUF9TS0lQ X0ZSQU1FX0ZJTExfUEFSQU0KClRoaXMgZGVjb2RlciBzZXRzIHRoZSBBVkNvZGVjQ29udGV4dCBm aWVsZHMgZXZlbiB3aGVuIGEgZnJhbWUKaXMgc2tpcHBlZC4KClNpZ25lZC1vZmYtYnk6IEFuZHJl YXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2 Y29kZWMvaDI2MWRlYy5jIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKCmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL2gyNjFkZWMuYyBiL2xpYmF2Y29kZWMvaDI2MWRlYy5jCmlu ZGV4IGMzMmRkZDJkZGYuLjFmNTdjOWY4ZmUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaDI2MWRl Yy5jCisrKyBiL2xpYmF2Y29kZWMvaDI2MWRlYy5jCkBAIC02MTcsNCArNjE3LDUgQEAgY29uc3Qg RkZDb2RlYyBmZl9oMjYxX2RlY29kZXIgPSB7CiAgICAgLmNsb3NlICAgICAgICAgID0gZmZfbXB2 X2RlY29kZV9jbG9zZSwKICAgICAucC5jYXBhYmlsaXRpZXMgPSBBVl9DT0RFQ19DQVBfRFIxLAog ICAgIC5wLm1heF9sb3dyZXMgICA9IDMsCisgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNf Q0FQX1NLSVBfRlJBTUVfRklMTF9QQVJBTSwKIH07Ci0tIAoyLjQ1LjIKCg== --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0075-avcodec-error_resilience-Avoid-me_cmp.h-inclusion.patch" Content-Disposition: attachment; filename*0="0075-avcodec-error_resilience-Avoid-me_cmp.h-inclusion.patch" Content-Transfer-Encoding: base64 RnJvbSAxZjMyYWQxNTE3MTFiMzcxY2IxYTdhNTBjMTM4ODY4ZjNkOTRlNzNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNzowMzozMSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNzUvNzddIGF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZTogQXZvaWQgbWVfY21w LmggaW5jbHVzaW9uCgpVc2Ugc3BlbGwgb3V0IHdoYXQgbWVfY21wX2Z1bmMgbWVhbnMuCkF2b2lk cyBpbmNsdXNpb25zIGluIHRoZSBILjI2NCBkZWNvZGVyIGFzIHdlbGwgYXMgYWxsCm1wZWd2aWRl byBkZWNvZGVycy4KClNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5y aGVpbmhhcmR0QG91dGxvb2suY29tPgotLS0KIGxpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5o IHwgNiArKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmggYi9saWJhdmNv ZGVjL2Vycm9yX3Jlc2lsaWVuY2UuaAppbmRleCA0MDA1MDE4Njc2Li44ZTQzMjE5YjA5IDEwMDY0 NAotLS0gYS9saWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuaAorKysgYi9saWJhdmNvZGVjL2Vy cm9yX3Jlc2lsaWVuY2UuaApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgPHN0ZGF0b21pYy5o PgogCiAjaW5jbHVkZSAiYXZjb2RlYy5oIgotI2luY2x1ZGUgIm1lX2NtcC5oIgogCiAvLy8gY3Vy cmVudCBNQiBpcyB0aGUgZmlyc3QgYWZ0ZXIgYSByZXN5bmMgbWFya2VyCiAjZGVmaW5lIFZQX1NU QVJUICAgICAgICAgICAgICAgMQpAQCAtMzcsNiArMzYsOCBAQAogI2RlZmluZSBFUl9NQl9FUlJP UiAoRVJfQUNfRVJST1J8RVJfRENfRVJST1J8RVJfTVZfRVJST1IpCiAjZGVmaW5lIEVSX01CX0VO RCAgIChFUl9BQ19FTkR8RVJfRENfRU5EfEVSX01WX0VORCkKIAordHlwZWRlZiBzdHJ1Y3QgTVBW RW5jQ29udGV4dCBNUFZFbmNDb250ZXh0OworCiB0eXBlZGVmIHN0cnVjdCBFUlBpY3R1cmUgewog ICAgIEFWRnJhbWUgKmY7CiAgICAgY29uc3Qgc3RydWN0IFRocmVhZEZyYW1lICp0ZjsKQEAgLTUz LDcgKzU0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVJQaWN0dXJlIHsKIHR5cGVkZWYgc3RydWN0IEVS Q29udGV4dCB7CiAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4OwogCi0gICAgbWVfY21wX2Z1bmMg c2FkOworICAgIGludCAoKnNhZCkoTVBWRW5jQ29udGV4dCAqdW51c2VkLCBjb25zdCB1aW50OF90 ICpibGsxLAorICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYmxrMiwgcHRyZGlmZl90IHN0 cmlkZSwgaW50IGgpOwogICAgIGludCBtZWNjX2luaXRlZDsKIAogICAgIGludCAqbWJfaW5kZXgy eHk7Ci0tIAoyLjQ1LjIKCg== --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0076-avcodec-mpegvideo-Move-unquantize-functions-into-a-f.patch" Content-Disposition: attachment; filename*0="0076-avcodec-mpegvideo-Move-unquantize-functions-into-a-f.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzZGY3Nzk5MWI5YzUwM2I1YzU2MDdmNjQxY2E4Zjc1MzQzOTdlMWNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogU3VuLCAyIE1hciAyMDI1IDA1OjQ0OjA5ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCA3Ni83N10gYXZjb2RlYy9tcGVndmlkZW86IE1vdmUgdW5xdWFudGl6ZSBmdW5j dGlvbnMgaW50byBhCiBmaWxlIG9mIHRoZWlyIG93bgoKVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBm b3Igb25seSBrZWVwaW5nIHRoZSBhY3R1YWxseSB1c2VkCnVucXVhbnRpemUgZnVuY3Rpb25zIGlu IE1wZWdFbmNDb250ZXh0LgoKU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRy ZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICB8ICAgMSArCiBsaWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtLmMgICAg ICAgIHwgICAxICsKIGxpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9faW5pdF9taXBzLmMgfCAgIDEg KwogbGliYXZjb2RlYy9tcGVndmlkZW8uYyAgICAgICAgICAgICAgICB8IDIzNyArLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL21wZWd2aWRlby5oICAgICAgICAgICAgICAgIHwgICA1 IC0KIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuYyAgICAgfCAyNzMgKysrKysrKysr KysrKysrKysrKysrKysrKysKIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaCAgICAg fCAgMzcgKysrKwogbGliYXZjb2RlYy9uZW9uL21wZWd2aWRlby5jICAgICAgICAgICB8ICAgMSAr CiBsaWJhdmNvZGVjL3BwYy9tcGVndmlkZW9fYWx0aXZlYy5jICAgIHwgICAxICsKIGxpYmF2Y29k ZWMveDg2L21wZWd2aWRlby5jICAgICAgICAgICAgfCAgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwg MzE4IGluc2VydGlvbnMoKyksIDI0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh dmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmgKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01h a2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCAzN2IyMDFlYzRhLi5iMmFiYjNiODYz IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvTWFrZWZp bGUKQEAgLTE0Nyw2ICsxNDcsNyBAQCBPQkpTLSQoQ09ORklHX01QRUdBVURJT0hFQURFUikgICAg ICAgICArPSBtcGVnYXVkaW9kZWNoZWFkZXIubyBtcGVnYXVkaW90YWJzLm8KIE9CSlMtJChDT05G SUdfTVBFRzRBVURJTykgICAgICAgICAgICAgICs9IG1wZWc0YXVkaW8ubyBtcGVnNGF1ZGlvX3Nh bXBsZV9yYXRlcy5vCiBPQkpTLSQoQ09ORklHX01QRUdWSURFTykgICAgICAgICAgICAgICArPSBt cGVndmlkZW8ubyBybC5vIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1wZWd2aWRlb19tb3Rpb24ubyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtcGVndmlkZW9fdW5xdWFudGl6ZS5vIFwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1wZWd2aWRlb2RhdGEubyBtcGVncGljdHVyZS5vICBcCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b191cHBlcjQubwogT0JK Uy0kKENPTkZJR19NUEVHVklERU9ERUMpICAgICAgICAgICAgKz0gbXBlZ3ZpZGVvX2RlYy5vIG1w ZWd1dGlscy5vCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtLmMgYi9s aWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtLmMKaW5kZXggMjhhM2YyY2RkOS4uZTMyNDUxYjU1 NCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9hcm0vbXBlZ3ZpZGVvX2FybS5jCisrKyBiL2xpYmF2 Y29kZWMvYXJtL21wZWd2aWRlb19hcm0uYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImxp YmF2dXRpbC9hcm0vY3B1LmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9hdmNvZGVjLmgiCiAjaW5j bHVkZSAibGliYXZjb2RlYy9tcGVndmlkZW8uaCIKKyNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2 aWRlb191bnF1YW50aXplLmgiCiAjaW5jbHVkZSAibXBlZ3ZpZGVvX2FybS5oIgogI2luY2x1ZGUg ImFzbS1vZmZzZXRzLmgiCiAKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9tcGVndmlkZW9f aW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX2luaXRfbWlwcy5jCmluZGV4 IDFkMDJiMGM5MzcuLmE5YWNhZTk0Y2UgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbWlwcy9tcGVn dmlkZW9faW5pdF9taXBzLmMKKysrIGIvbGliYXZjb2RlYy9taXBzL21wZWd2aWRlb19pbml0X21p cHMuYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMu aCIKICNpbmNsdWRlICJsaWJhdnV0aWwvbWlwcy9jcHUuaCIKKyNpbmNsdWRlICJsaWJhdmNvZGVj L21wZWd2aWRlb191bnF1YW50aXplLmgiCiAjaW5jbHVkZSAiaDI2M2RzcF9taXBzLmgiCiAjaW5j bHVkZSAibXBlZ3ZpZGVvX21pcHMuaCIKIApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlk ZW8uYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMKaW5kZXggZWZjOWVlMjRkNi4uOWE0MDkzN2Ji ZCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW8uYworKysgYi9saWJhdmNvZGVjL21w ZWd2aWRlby5jCkBAIC00MSwyMjEgKzQxLDkgQEAKICNpbmNsdWRlICJtcGVndXRpbHMuaCIKICNp bmNsdWRlICJtcGVndmlkZW8uaCIKICNpbmNsdWRlICJtcGVndmlkZW9kYXRhLmgiCisjaW5jbHVk ZSAibXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvcmVmc3RydWN0 LmgiCiAKLXN0YXRpYyB2b2lkIGRjdF91bnF1YW50aXplX21wZWcxX2ludHJhX2MoTXBlZ0VuY0Nv bnRleHQgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJs b2NrLCBpbnQgbiwgaW50IHFzY2FsZSkKLXsKLSAgICBpbnQgaSwgbGV2ZWwsIG5Db2VmZnM7Ci0g ICAgY29uc3QgdWludDE2X3QgKnF1YW50X21hdHJpeDsKLQotICAgIG5Db2VmZnM9IHMtPmJsb2Nr X2xhc3RfaW5kZXhbbl07Ci0KLSAgICBibG9ja1swXSAqPSBuIDwgNCA/IHMtPnlfZGNfc2NhbGUg OiBzLT5jX2RjX3NjYWxlOwotICAgIC8qIFhYWDogb25seSBNUEVHLTEgKi8KLSAgICBxdWFudF9t YXRyaXggPSBzLT5pbnRyYV9tYXRyaXg7Ci0gICAgZm9yKGk9MTtpPD1uQ29lZmZzO2krKykgewot ICAgICAgICBpbnQgaj0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07Ci0gICAgICAg IGxldmVsID0gYmxvY2tbal07Ci0gICAgICAgIGlmIChsZXZlbCkgewotICAgICAgICAgICAgaWYg KGxldmVsIDwgMCkgewotICAgICAgICAgICAgICAgIGxldmVsID0gLWxldmVsOwotICAgICAgICAg ICAgICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBxdWFudF9tYXRyaXhbal0pID4+ IDM7Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSAobGV2ZWwgLSAxKSB8IDE7Ci0gICAgICAgICAg ICAgICAgbGV2ZWwgPSAtbGV2ZWw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg ICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBxdWFudF9tYXRyaXhbal0pID4+IDM7 Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSAobGV2ZWwgLSAxKSB8IDE7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgICBibG9ja1tqXSA9IGxldmVsOwotICAgICAgICB9Ci0gICAgfQotfQotCi1z dGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlcl9jKE1wZWdFbmNDb250ZXh0ICpz LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50 IG4sIGludCBxc2NhbGUpCi17Ci0gICAgaW50IGksIGxldmVsLCBuQ29lZmZzOwotICAgIGNvbnN0 IHVpbnQxNl90ICpxdWFudF9tYXRyaXg7Ci0KLSAgICBuQ29lZmZzPSBzLT5ibG9ja19sYXN0X2lu ZGV4W25dOwotCi0gICAgcXVhbnRfbWF0cml4ID0gcy0+aW50ZXJfbWF0cml4OwotICAgIGZvcihp PTA7IGk8PW5Db2VmZnM7IGkrKykgewotICAgICAgICBpbnQgaj0gcy0+aW50cmFfc2NhbnRhYmxl LnBlcm11dGF0ZWRbaV07Ci0gICAgICAgIGxldmVsID0gYmxvY2tbal07Ci0gICAgICAgIGlmIChs ZXZlbCkgewotICAgICAgICAgICAgaWYgKGxldmVsIDwgMCkgewotICAgICAgICAgICAgICAgIGxl dmVsID0gLWxldmVsOwotICAgICAgICAgICAgICAgIGxldmVsID0gKCgobGV2ZWwgPDwgMSkgKyAx KSAqIHFzY2FsZSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgKChpbnQpIChxdWFudF9tYXRy aXhbal0pKSkgPj4gNDsKLSAgICAgICAgICAgICAgICBsZXZlbCA9IChsZXZlbCAtIDEpIHwgMTsK LSAgICAgICAgICAgICAgICBsZXZlbCA9IC1sZXZlbDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgICAgbGV2ZWwgPSAoKChsZXZlbCA8PCAxKSArIDEpICogcXNjYWxlICoKLSAg ICAgICAgICAgICAgICAgICAgICAgICAoKGludCkgKHF1YW50X21hdHJpeFtqXSkpKSA+PiA0Owot ICAgICAgICAgICAgICAgIGxldmVsID0gKGxldmVsIC0gMSkgfCAxOwotICAgICAgICAgICAgfQot ICAgICAgICAgICAgYmxvY2tbal0gPSBsZXZlbDsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3Rh dGljIHZvaWQgZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmFfYyhNcGVnRW5jQ29udGV4dCAqcywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGludCBu LCBpbnQgcXNjYWxlKQotewotICAgIGludCBpLCBsZXZlbCwgbkNvZWZmczsKLSAgICBjb25zdCB1 aW50MTZfdCAqcXVhbnRfbWF0cml4OwotCi0gICAgaWYgKHMtPnFfc2NhbGVfdHlwZSkgcXNjYWxl ID0gZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbcXNjYWxlXTsKLSAgICBlbHNlICAgICAgICAg ICAgICAgICBxc2NhbGUgPDw9IDE7Ci0KLSAgICBuQ29lZmZzPSBzLT5ibG9ja19sYXN0X2luZGV4 W25dOwotCi0gICAgYmxvY2tbMF0gKj0gbiA8IDQgPyBzLT55X2RjX3NjYWxlIDogcy0+Y19kY19z Y2FsZTsKLSAgICBxdWFudF9tYXRyaXggPSBzLT5pbnRyYV9tYXRyaXg7Ci0gICAgZm9yKGk9MTtp PD1uQ29lZmZzO2krKykgewotICAgICAgICBpbnQgaj0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11 dGF0ZWRbaV07Ci0gICAgICAgIGxldmVsID0gYmxvY2tbal07Ci0gICAgICAgIGlmIChsZXZlbCkg ewotICAgICAgICAgICAgaWYgKGxldmVsIDwgMCkgewotICAgICAgICAgICAgICAgIGxldmVsID0g LWxldmVsOwotICAgICAgICAgICAgICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBx dWFudF9tYXRyaXhbal0pID4+IDQ7Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7Ci0g ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxldmVsID0gKGludCkobGV2ZWwg KiBxc2NhbGUgKiBxdWFudF9tYXRyaXhbal0pID4+IDQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg ICAgICBibG9ja1tqXSA9IGxldmVsOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9p ZCBkY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9iaXRleGFjdChNcGVnRW5jQ29udGV4dCAqcywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGludCBu LCBpbnQgcXNjYWxlKQotewotICAgIGludCBpLCBsZXZlbCwgbkNvZWZmczsKLSAgICBjb25zdCB1 aW50MTZfdCAqcXVhbnRfbWF0cml4OwotICAgIGludCBzdW09LTE7Ci0KLSAgICBpZiAocy0+cV9z Y2FsZV90eXBlKSBxc2NhbGUgPSBmZl9tcGVnMl9ub25fbGluZWFyX3FzY2FsZVtxc2NhbGVdOwot ICAgIGVsc2UgICAgICAgICAgICAgICAgIHFzY2FsZSA8PD0gMTsKLQotICAgIG5Db2VmZnM9IHMt PmJsb2NrX2xhc3RfaW5kZXhbbl07Ci0KLSAgICBibG9ja1swXSAqPSBuIDwgNCA/IHMtPnlfZGNf c2NhbGUgOiBzLT5jX2RjX3NjYWxlOwotICAgIHN1bSArPSBibG9ja1swXTsKLSAgICBxdWFudF9t YXRyaXggPSBzLT5pbnRyYV9tYXRyaXg7Ci0gICAgZm9yKGk9MTtpPD1uQ29lZmZzO2krKykgewot ICAgICAgICBpbnQgaj0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07Ci0gICAgICAg IGxldmVsID0gYmxvY2tbal07Ci0gICAgICAgIGlmIChsZXZlbCkgewotICAgICAgICAgICAgaWYg KGxldmVsIDwgMCkgewotICAgICAgICAgICAgICAgIGxldmVsID0gLWxldmVsOwotICAgICAgICAg ICAgICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBxdWFudF9tYXRyaXhbal0pID4+ IDQ7Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7Ci0gICAgICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgICAgIGxldmVsID0gKGludCkobGV2ZWwgKiBxc2NhbGUgKiBxdWFudF9t YXRyaXhbal0pID4+IDQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBibG9ja1tqXSA9IGxl dmVsOwotICAgICAgICAgICAgc3VtKz1sZXZlbDsKLSAgICAgICAgfQotICAgIH0KLSAgICBibG9j a1s2M11ePXN1bSYxOwotfQotCi1zdGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRl cl9jKE1wZWdFbmNDb250ZXh0ICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQxNl90ICpibG9jaywgaW50IG4sIGludCBxc2NhbGUpCi17Ci0gICAgaW50IGksIGxldmVs LCBuQ29lZmZzOwotICAgIGNvbnN0IHVpbnQxNl90ICpxdWFudF9tYXRyaXg7Ci0gICAgaW50IHN1 bT0tMTsKLQotICAgIGlmIChzLT5xX3NjYWxlX3R5cGUpIHFzY2FsZSA9IGZmX21wZWcyX25vbl9s aW5lYXJfcXNjYWxlW3FzY2FsZV07Ci0gICAgZWxzZSAgICAgICAgICAgICAgICAgcXNjYWxlIDw8 PSAxOwotCi0gICAgbkNvZWZmcz0gcy0+YmxvY2tfbGFzdF9pbmRleFtuXTsKLQotICAgIHF1YW50 X21hdHJpeCA9IHMtPmludGVyX21hdHJpeDsKLSAgICBmb3IoaT0wOyBpPD1uQ29lZmZzOyBpKysp IHsKLSAgICAgICAgaW50IGo9IHMtPmludHJhX3NjYW50YWJsZS5wZXJtdXRhdGVkW2ldOwotICAg ICAgICBsZXZlbCA9IGJsb2NrW2pdOwotICAgICAgICBpZiAobGV2ZWwpIHsKLSAgICAgICAgICAg IGlmIChsZXZlbCA8IDApIHsKLSAgICAgICAgICAgICAgICBsZXZlbCA9IC1sZXZlbDsKLSAgICAg ICAgICAgICAgICBsZXZlbCA9ICgoKGxldmVsIDw8IDEpICsgMSkgKiBxc2NhbGUgKgotICAgICAg ICAgICAgICAgICAgICAgICAgICgoaW50KSAocXVhbnRfbWF0cml4W2pdKSkpID4+IDU7Ci0gICAg ICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgICAgIGxldmVsID0gKCgobGV2ZWwgPDwgMSkgKyAxKSAqIHFzY2FsZSAqCi0gICAgICAg ICAgICAgICAgICAgICAgICAgKChpbnQpIChxdWFudF9tYXRyaXhbal0pKSkgPj4gNTsKLSAgICAg ICAgICAgIH0KLSAgICAgICAgICAgIGJsb2NrW2pdID0gbGV2ZWw7Ci0gICAgICAgICAgICBzdW0r PWxldmVsOwotICAgICAgICB9Ci0gICAgfQotICAgIGJsb2NrWzYzXV49c3VtJjE7Ci19Ci0KLXN0 YXRpYyB2b2lkIGRjdF91bnF1YW50aXplX2gyNjNfaW50cmFfYyhNcGVnRW5jQ29udGV4dCAqcywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4s IGludCBxc2NhbGUpCi17Ci0gICAgaW50IGksIGxldmVsLCBxbXVsLCBxYWRkOwotICAgIGludCBu Q29lZmZzOwotCi0gICAgYXZfYXNzZXJ0MihzLT5ibG9ja19sYXN0X2luZGV4W25dPj0wIHx8IHMt PmgyNjNfYWljKTsKLQotICAgIHFtdWwgPSBxc2NhbGUgPDwgMTsKLQotICAgIGlmICghcy0+aDI2 M19haWMpIHsKLSAgICAgICAgYmxvY2tbMF0gKj0gbiA8IDQgPyBzLT55X2RjX3NjYWxlIDogcy0+ Y19kY19zY2FsZTsKLSAgICAgICAgcWFkZCA9IChxc2NhbGUgLSAxKSB8IDE7Ci0gICAgfWVsc2V7 Ci0gICAgICAgIHFhZGQgPSAwOwotICAgIH0KLSAgICBpZihzLT5hY19wcmVkKQotICAgICAgICBu Q29lZmZzPTYzOwotICAgIGVsc2UKLSAgICAgICAgbkNvZWZmcz0gcy0+aW50cmFfc2NhbnRhYmxl LnJhc3Rlcl9lbmRbIHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0gXTsKLQotICAgIGZvcihpPTE7IGk8 PW5Db2VmZnM7IGkrKykgewotICAgICAgICBsZXZlbCA9IGJsb2NrW2ldOwotICAgICAgICBpZiAo bGV2ZWwpIHsKLSAgICAgICAgICAgIGlmIChsZXZlbCA8IDApIHsKLSAgICAgICAgICAgICAgICBs ZXZlbCA9IGxldmVsICogcW11bCAtIHFhZGQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgICAgIGxldmVsID0gbGV2ZWwgKiBxbXVsICsgcWFkZDsKLSAgICAgICAgICAgIH0KLSAg ICAgICAgICAgIGJsb2NrW2ldID0gbGV2ZWw7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRp YyB2b2lkIGRjdF91bnF1YW50aXplX2gyNjNfaW50ZXJfYyhNcGVnRW5jQ29udGV4dCAqcywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4sIGlu dCBxc2NhbGUpCi17Ci0gICAgaW50IGksIGxldmVsLCBxbXVsLCBxYWRkOwotICAgIGludCBuQ29l ZmZzOwotCi0gICAgYXZfYXNzZXJ0MihzLT5ibG9ja19sYXN0X2luZGV4W25dPj0wKTsKLQotICAg IHFhZGQgPSAocXNjYWxlIC0gMSkgfCAxOwotICAgIHFtdWwgPSBxc2NhbGUgPDwgMTsKLQotICAg IG5Db2VmZnM9IHMtPmludGVyX3NjYW50YWJsZS5yYXN0ZXJfZW5kWyBzLT5ibG9ja19sYXN0X2lu ZGV4W25dIF07Ci0KLSAgICBmb3IoaT0wOyBpPD1uQ29lZmZzOyBpKyspIHsKLSAgICAgICAgbGV2 ZWwgPSBibG9ja1tpXTsKLSAgICAgICAgaWYgKGxldmVsKSB7Ci0gICAgICAgICAgICBpZiAobGV2 ZWwgPCAwKSB7Ci0gICAgICAgICAgICAgICAgbGV2ZWwgPSBsZXZlbCAqIHFtdWwgLSBxYWRkOwot ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXZlbCA9IGxldmVsICogcW11 bCArIHFhZGQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBibG9ja1tpXSA9IGxldmVsOwot ICAgICAgICB9Ci0gICAgfQotfQotCiAKIHN0YXRpYyB2b2lkIGdyYXkxNih1aW50OF90ICpkc3Qs IGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IGxpbmVzaXplLCBpbnQgaCkKIHsKQEAgLTMy NSwyOCArMTEzLDcgQEAgYXZfY29sZCB2b2lkIGZmX21wdl9pZGN0X2luaXQoTXBlZ0VuY0NvbnRl eHQgKnMpCiAgICAgZmZfcGVybXV0ZV9zY2FudGFibGUocy0+cGVybXV0YXRlZF9pbnRyYV92X3Nj YW50YWJsZSwgZmZfYWx0ZXJuYXRlX3ZlcnRpY2FsX3NjYW4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+aWRzcC5pZGN0X3Blcm11dGF0aW9uKTsKIAotICAgIHMtPmRjdF91bnF1YW50aXpl X2gyNjNfaW50cmEgID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYV9jOwotICAgIHMtPmRjdF91 bnF1YW50aXplX2gyNjNfaW50ZXIgID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9jOwotICAg IHMtPmRjdF91bnF1YW50aXplX21wZWcxX2ludHJhID0gZGN0X3VucXVhbnRpemVfbXBlZzFfaW50 cmFfYzsKLSAgICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlciA9IGRjdF91bnF1YW50aXpl X21wZWcxX2ludGVyX2M7Ci0gICAgcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmEgPSBkY3Rf dW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9jOwotICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9D T0RFQ19GTEFHX0JJVEVYQUNUKQotICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRy YSA9IGRjdF91bnF1YW50aXplX21wZWcyX2ludHJhX2JpdGV4YWN0OwotICAgIHMtPmRjdF91bnF1 YW50aXplX21wZWcyX2ludGVyID0gZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXJfYzsKLQotI2lm IEhBVkVfSU5UUklOU0lDU19ORU9OCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X25lb24ocyk7Ci0j ZW5kaWYKLQotI2lmIEFSQ0hfQVJNCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X2FybShzKTsKLSNl bGlmIEFSQ0hfUFBDCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X3BwYyhzKTsKLSNlbGlmIEFSQ0hf WDg2Ci0gICAgZmZfbXB2X2NvbW1vbl9pbml0X3g4NihzKTsKLSNlbGlmIEFSQ0hfTUlQUwotICAg IGZmX21wdl9jb21tb25faW5pdF9taXBzKHMpOwotI2VuZGlmCisgICAgZmZfbXB2X3VucXVhbnRp emVfaW5pdChzKTsKIH0KIAogc3RhdGljIGF2X2NvbGQgaW50IGluaXRfZHVwbGljYXRlX2NvbnRl eHQoTXBlZ0VuY0NvbnRleHQgKnMpCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlby5o IGIvbGliYXZjb2RlYy9tcGVndmlkZW8uaAppbmRleCAxZGNmY2E2YjAzLi43Mzc5MTYwMTU5IDEw MDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlby5oCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3Zp ZGVvLmgKQEAgLTM2MiwxMSArMzYyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQg ewogdm9pZCBmZl9tcHZfY29tbW9uX2RlZmF1bHRzKE1wZWdFbmNDb250ZXh0ICpzKTsKIAogaW50 IGZmX21wdl9jb21tb25faW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lkIGZmX21wdl9jb21t b25faW5pdF9hcm0oTXBlZ0VuY0NvbnRleHQgKnMpOwotdm9pZCBmZl9tcHZfY29tbW9uX2luaXRf bmVvbihNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lkIGZmX21wdl9jb21tb25faW5pdF9wcGMoTXBl Z0VuY0NvbnRleHQgKnMpOwotdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2KE1wZWdFbmNDb250 ZXh0ICpzKTsKLXZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMoTXBlZ0VuY0NvbnRleHQgKnMp OwogLyoqCiAgKiBJbml0aWFsaXplIGFuIE1wZWdFbmNDb250ZXh0J3MgdGhyZWFkIGNvbnRleHRz LiBQcmVzdW1lcyB0aGF0CiAgKiBzbGljZV9jb250ZXh0X2NvdW50IGlzIGFscmVhZHkgc2V0IGFu ZCB0aGF0IGFsbCB0aGUgZmllbGRzCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb191 bnF1YW50aXplLmMgYi9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTJiYWNkZjQyNAotLS0gL2Rldi9udWxsCisr KyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuYwpAQCAtMCwwICsxLDI3MyBAQAor LyoKKyAqIFVucXVhbnRpemUgZnVuY3Rpb25zIGZvciBtcGVndmlkZW8KKyAqIENvcHlyaWdodCAo YykgMjAwMCwyMDAxIEZhYnJpY2UgQmVsbGFyZAorICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMDQg TWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KKyAqCisgKiA0TVYgJiBocSAm IEItZnJhbWUgZW5jb2Rpbmcgc3R1ZmYgYnkgTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5p QGdteC5hdD4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZt cGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1 ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJsaWJhdnV0 aWwvYXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgorI2luY2x1 ZGUgImF2Y29kZWMuaCIKKyNpbmNsdWRlICJtcGVndmlkZW8uaCIKKyNpbmNsdWRlICJtcGVndmlk ZW9kYXRhLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIKKworc3RhdGljIHZv aWQgZGN0X3VucXVhbnRpemVfbXBlZzFfaW50cmFfYyhNcGVnRW5jQ29udGV4dCAqcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGludCBuLCBpbnQg cXNjYWxlKQoreworICAgIGludCBpLCBsZXZlbCwgbkNvZWZmczsKKyAgICBjb25zdCB1aW50MTZf dCAqcXVhbnRfbWF0cml4OworCisgICAgbkNvZWZmcz0gcy0+YmxvY2tfbGFzdF9pbmRleFtuXTsK KworICAgIGJsb2NrWzBdICo9IG4gPCA0ID8gcy0+eV9kY19zY2FsZSA6IHMtPmNfZGNfc2NhbGU7 CisgICAgLyogWFhYOiBvbmx5IE1QRUctMSAqLworICAgIHF1YW50X21hdHJpeCA9IHMtPmludHJh X21hdHJpeDsKKyAgICBmb3IoaT0xO2k8PW5Db2VmZnM7aSsrKSB7CisgICAgICAgIGludCBqPSBz LT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAgbGV2ZWwgPSBibG9ja1tq XTsKKyAgICAgICAgaWYgKGxldmVsKSB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPCAwKSB7Cisg ICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAo aW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkgPj4gMzsKKyAgICAgICAgICAg ICAgICBsZXZlbCA9IChsZXZlbCAtIDEpIHwgMTsKKyAgICAgICAgICAgICAgICBsZXZlbCA9IC1s ZXZlbDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAoaW50 KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkgPj4gMzsKKyAgICAgICAgICAgICAg ICBsZXZlbCA9IChsZXZlbCAtIDEpIHwgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJs b2NrW2pdID0gbGV2ZWw7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGRjdF91 bnF1YW50aXplX21wZWcxX2ludGVyX2MoTXBlZ0VuY0NvbnRleHQgKnMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSkK K3sKKyAgICBpbnQgaSwgbGV2ZWwsIG5Db2VmZnM7CisgICAgY29uc3QgdWludDE2X3QgKnF1YW50 X21hdHJpeDsKKworICAgIG5Db2VmZnM9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisKKyAgICBx dWFudF9tYXRyaXggPSBzLT5pbnRlcl9tYXRyaXg7CisgICAgZm9yKGk9MDsgaTw9bkNvZWZmczsg aSsrKSB7CisgICAgICAgIGludCBqPSBzLT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsK KyAgICAgICAgbGV2ZWwgPSBibG9ja1tqXTsKKyAgICAgICAgaWYgKGxldmVsKSB7CisgICAgICAg ICAgICBpZiAobGV2ZWwgPCAwKSB7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7Cisg ICAgICAgICAgICAgICAgbGV2ZWwgPSAoKChsZXZlbCA8PCAxKSArIDEpICogcXNjYWxlICoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoKGludCkgKHF1YW50X21hdHJpeFtqXSkpKSA+PiA0Owor ICAgICAgICAgICAgICAgIGxldmVsID0gKGxldmVsIC0gMSkgfCAxOworICAgICAgICAgICAgICAg IGxldmVsID0gLWxldmVsOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBs ZXZlbCA9ICgoKGxldmVsIDw8IDEpICsgMSkgKiBxc2NhbGUgKgorICAgICAgICAgICAgICAgICAg ICAgICAgICgoaW50KSAocXVhbnRfbWF0cml4W2pdKSkpID4+IDQ7CisgICAgICAgICAgICAgICAg bGV2ZWwgPSAobGV2ZWwgLSAxKSB8IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBibG9j a1tqXSA9IGxldmVsOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBkY3RfdW5x dWFudGl6ZV9tcGVnMl9pbnRyYV9jKE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4sIGludCBxc2NhbGUpCit7 CisgICAgaW50IGksIGxldmVsLCBuQ29lZmZzOworICAgIGNvbnN0IHVpbnQxNl90ICpxdWFudF9t YXRyaXg7CisKKyAgICBpZiAocy0+cV9zY2FsZV90eXBlKSBxc2NhbGUgPSBmZl9tcGVnMl9ub25f bGluZWFyX3FzY2FsZVtxc2NhbGVdOworICAgIGVsc2UgICAgICAgICAgICAgICAgIHFzY2FsZSA8 PD0gMTsKKworICAgIG5Db2VmZnM9IHMtPmJsb2NrX2xhc3RfaW5kZXhbbl07CisKKyAgICBibG9j a1swXSAqPSBuIDwgNCA/IHMtPnlfZGNfc2NhbGUgOiBzLT5jX2RjX3NjYWxlOworICAgIHF1YW50 X21hdHJpeCA9IHMtPmludHJhX21hdHJpeDsKKyAgICBmb3IoaT0xO2k8PW5Db2VmZnM7aSsrKSB7 CisgICAgICAgIGludCBqPSBzLT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAg ICAgbGV2ZWwgPSBibG9ja1tqXTsKKyAgICAgICAgaWYgKGxldmVsKSB7CisgICAgICAgICAgICBp ZiAobGV2ZWwgPCAwKSB7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7CisgICAgICAg ICAgICAgICAgbGV2ZWwgPSAoaW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkg Pj4gNDsKKyAgICAgICAgICAgICAgICBsZXZlbCA9IC1sZXZlbDsKKyAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAoaW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50 X21hdHJpeFtqXSkgPj4gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrW2pdID0g bGV2ZWw7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGRjdF91bnF1YW50aXpl X21wZWcyX2ludHJhX2JpdGV4YWN0KE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IG4sIGludCBxc2NhbGUpCit7 CisgICAgaW50IGksIGxldmVsLCBuQ29lZmZzOworICAgIGNvbnN0IHVpbnQxNl90ICpxdWFudF9t YXRyaXg7CisgICAgaW50IHN1bT0tMTsKKworICAgIGlmIChzLT5xX3NjYWxlX3R5cGUpIHFzY2Fs ZSA9IGZmX21wZWcyX25vbl9saW5lYXJfcXNjYWxlW3FzY2FsZV07CisgICAgZWxzZSAgICAgICAg ICAgICAgICAgcXNjYWxlIDw8PSAxOworCisgICAgbkNvZWZmcz0gcy0+YmxvY2tfbGFzdF9pbmRl eFtuXTsKKworICAgIGJsb2NrWzBdICo9IG4gPCA0ID8gcy0+eV9kY19zY2FsZSA6IHMtPmNfZGNf c2NhbGU7CisgICAgc3VtICs9IGJsb2NrWzBdOworICAgIHF1YW50X21hdHJpeCA9IHMtPmludHJh X21hdHJpeDsKKyAgICBmb3IoaT0xO2k8PW5Db2VmZnM7aSsrKSB7CisgICAgICAgIGludCBqPSBz LT5pbnRyYV9zY2FudGFibGUucGVybXV0YXRlZFtpXTsKKyAgICAgICAgbGV2ZWwgPSBibG9ja1tq XTsKKyAgICAgICAgaWYgKGxldmVsKSB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPCAwKSB7Cisg ICAgICAgICAgICAgICAgbGV2ZWwgPSAtbGV2ZWw7CisgICAgICAgICAgICAgICAgbGV2ZWwgPSAo aW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkgPj4gNDsKKyAgICAgICAgICAg ICAgICBsZXZlbCA9IC1sZXZlbDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgbGV2ZWwgPSAoaW50KShsZXZlbCAqIHFzY2FsZSAqIHF1YW50X21hdHJpeFtqXSkgPj4gNDsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrW2pdID0gbGV2ZWw7CisgICAgICAgICAg ICBzdW0rPWxldmVsOworICAgICAgICB9CisgICAgfQorICAgIGJsb2NrWzYzXV49c3VtJjE7Cit9 CisKK3N0YXRpYyB2b2lkIGRjdF91bnF1YW50aXplX21wZWcyX2ludGVyX2MoTXBlZ0VuY0NvbnRl eHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2Nr LCBpbnQgbiwgaW50IHFzY2FsZSkKK3sKKyAgICBpbnQgaSwgbGV2ZWwsIG5Db2VmZnM7CisgICAg Y29uc3QgdWludDE2X3QgKnF1YW50X21hdHJpeDsKKyAgICBpbnQgc3VtPS0xOworCisgICAgaWYg KHMtPnFfc2NhbGVfdHlwZSkgcXNjYWxlID0gZmZfbXBlZzJfbm9uX2xpbmVhcl9xc2NhbGVbcXNj YWxlXTsKKyAgICBlbHNlICAgICAgICAgICAgICAgICBxc2NhbGUgPDw9IDE7CisKKyAgICBuQ29l ZmZzPSBzLT5ibG9ja19sYXN0X2luZGV4W25dOworCisgICAgcXVhbnRfbWF0cml4ID0gcy0+aW50 ZXJfbWF0cml4OworICAgIGZvcihpPTA7IGk8PW5Db2VmZnM7IGkrKykgeworICAgICAgICBpbnQg aj0gcy0+aW50cmFfc2NhbnRhYmxlLnBlcm11dGF0ZWRbaV07CisgICAgICAgIGxldmVsID0gYmxv Y2tbal07CisgICAgICAgIGlmIChsZXZlbCkgeworICAgICAgICAgICAgaWYgKGxldmVsIDwgMCkg eworICAgICAgICAgICAgICAgIGxldmVsID0gLWxldmVsOworICAgICAgICAgICAgICAgIGxldmVs ID0gKCgobGV2ZWwgPDwgMSkgKyAxKSAqIHFzY2FsZSAqCisgICAgICAgICAgICAgICAgICAgICAg ICAgKChpbnQpIChxdWFudF9tYXRyaXhbal0pKSkgPj4gNTsKKyAgICAgICAgICAgICAgICBsZXZl bCA9IC1sZXZlbDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGV2ZWwg PSAoKChsZXZlbCA8PCAxKSArIDEpICogcXNjYWxlICoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAoKGludCkgKHF1YW50X21hdHJpeFtqXSkpKSA+PiA1OworICAgICAgICAgICAgfQorICAgICAg ICAgICAgYmxvY2tbal0gPSBsZXZlbDsKKyAgICAgICAgICAgIHN1bSs9bGV2ZWw7CisgICAgICAg IH0KKyAgICB9CisgICAgYmxvY2tbNjNdXj1zdW0mMTsKK30KKworc3RhdGljIHZvaWQgZGN0X3Vu cXVhbnRpemVfaDI2M19pbnRyYV9jKE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSkKK3sK KyAgICBpbnQgaSwgbGV2ZWwsIHFtdWwsIHFhZGQ7CisgICAgaW50IG5Db2VmZnM7CisKKyAgICBh dl9hc3NlcnQyKHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0+PTAgfHwgcy0+aDI2M19haWMpOworCisg ICAgcW11bCA9IHFzY2FsZSA8PCAxOworCisgICAgaWYgKCFzLT5oMjYzX2FpYykgeworICAgICAg ICBibG9ja1swXSAqPSBuIDwgNCA/IHMtPnlfZGNfc2NhbGUgOiBzLT5jX2RjX3NjYWxlOworICAg ICAgICBxYWRkID0gKHFzY2FsZSAtIDEpIHwgMTsKKyAgICB9ZWxzZXsKKyAgICAgICAgcWFkZCA9 IDA7CisgICAgfQorICAgIGlmKHMtPmFjX3ByZWQpCisgICAgICAgIG5Db2VmZnM9NjM7CisgICAg ZWxzZQorICAgICAgICBuQ29lZmZzPSBzLT5pbnRyYV9zY2FudGFibGUucmFzdGVyX2VuZFsgcy0+ YmxvY2tfbGFzdF9pbmRleFtuXSBdOworCisgICAgZm9yKGk9MTsgaTw9bkNvZWZmczsgaSsrKSB7 CisgICAgICAgIGxldmVsID0gYmxvY2tbaV07CisgICAgICAgIGlmIChsZXZlbCkgeworICAgICAg ICAgICAgaWYgKGxldmVsIDwgMCkgeworICAgICAgICAgICAgICAgIGxldmVsID0gbGV2ZWwgKiBx bXVsIC0gcWFkZDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGV2ZWwg PSBsZXZlbCAqIHFtdWwgKyBxYWRkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYmxvY2tb aV0gPSBsZXZlbDsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgZGN0X3VucXVh bnRpemVfaDI2M19pbnRlcl9jKE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSkKK3sKKyAg ICBpbnQgaSwgbGV2ZWwsIHFtdWwsIHFhZGQ7CisgICAgaW50IG5Db2VmZnM7CisKKyAgICBhdl9h c3NlcnQyKHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0+PTApOworCisgICAgcWFkZCA9IChxc2NhbGUg LSAxKSB8IDE7CisgICAgcW11bCA9IHFzY2FsZSA8PCAxOworCisgICAgbkNvZWZmcz0gcy0+aW50 ZXJfc2NhbnRhYmxlLnJhc3Rlcl9lbmRbIHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0gXTsKKworICAg IGZvcihpPTA7IGk8PW5Db2VmZnM7IGkrKykgeworICAgICAgICBsZXZlbCA9IGJsb2NrW2ldOwor ICAgICAgICBpZiAobGV2ZWwpIHsKKyAgICAgICAgICAgIGlmIChsZXZlbCA8IDApIHsKKyAgICAg ICAgICAgICAgICBsZXZlbCA9IGxldmVsICogcW11bCAtIHFhZGQ7CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgIGxldmVsID0gbGV2ZWwgKiBxbXVsICsgcWFkZDsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIGJsb2NrW2ldID0gbGV2ZWw7CisgICAgICAgIH0KKyAgICB9 Cit9CisKK2F2X2NvbGQgdm9pZCBmZl9tcHZfdW5xdWFudGl6ZV9pbml0KE1wZWdFbmNDb250ZXh0 ICpzKQoreworICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50cmEgID0gZGN0X3VucXVhbnRp emVfaDI2M19pbnRyYV9jOworICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50ZXIgID0gZGN0 X3VucXVhbnRpemVfaDI2M19pbnRlcl9jOworICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcxX2lu dHJhID0gZGN0X3VucXVhbnRpemVfbXBlZzFfaW50cmFfYzsKKyAgICBzLT5kY3RfdW5xdWFudGl6 ZV9tcGVnMV9pbnRlciA9IGRjdF91bnF1YW50aXplX21wZWcxX2ludGVyX2M7CisgICAgcy0+ZGN0 X3VucXVhbnRpemVfbXBlZzJfaW50cmEgPSBkY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9jOwor ICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNUKQorICAgICAg ICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYSA9IGRjdF91bnF1YW50aXplX21wZWcyX2lu dHJhX2JpdGV4YWN0OworICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcyX2ludGVyID0gZGN0X3Vu cXVhbnRpemVfbXBlZzJfaW50ZXJfYzsKKworI2lmIEhBVkVfSU5UUklOU0lDU19ORU9OCisgICAg ZmZfbXB2X2NvbW1vbl9pbml0X25lb24ocyk7CisjZW5kaWYKKworI2lmIEFSQ0hfQVJNCisgICAg ZmZfbXB2X2NvbW1vbl9pbml0X2FybShzKTsKKyNlbGlmIEFSQ0hfUFBDCisgICAgZmZfbXB2X2Nv bW1vbl9pbml0X3BwYyhzKTsKKyNlbGlmIEFSQ0hfWDg2CisgICAgZmZfbXB2X2NvbW1vbl9pbml0 X3g4NihzKTsKKyNlbGlmIEFSQ0hfTUlQUworICAgIGZmX21wdl9jb21tb25faW5pdF9taXBzKHMp OworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXpl LmggYi9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uMWU3NTkwNTYxYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2 Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogVW5x dWFudGl6ZSBmdW5jdGlvbnMgZm9yIG1wZWd2aWRlbworICogQ29weXJpZ2h0IChjKSAyMDAwLDIw MDEgRmFicmljZSBCZWxsYXJkCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCBNaWNoYWVsIE5p ZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgorICoKKyAqIDRNViAmIGhxICYgQi1mcmFtZSBl bmNvZGluZyBzdHVmZiBieSBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0Pgor ICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEFWQ09ERUNf TVBFR1ZJREVPX1VOUVVBTlRJWkVfSAorI2RlZmluZSBBVkNPREVDX01QRUdWSURFT19VTlFVQU5U SVpFX0gKKwordHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgTXBlZ0VuY0NvbnRleHQ7CisK K3ZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZm X21wdl9jb21tb25faW5pdF9hcm0oTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9tcHZfY29t bW9uX2luaXRfbmVvbihNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX21wdl9jb21tb25faW5p dF9wcGMoTXBlZ0VuY0NvbnRleHQgKnMpOwordm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2KE1w ZWdFbmNDb250ZXh0ICpzKTsKK3ZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMoTXBlZ0VuY0Nv bnRleHQgKnMpOworCisjZW5kaWYgLyogQVZDT0RFQ19NUEVHVklERU9fVU5RVUFOVElaRV9IICov CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL25lb24vbXBlZ3ZpZGVvLmMgYi9saWJhdmNvZGVjL25l b24vbXBlZ3ZpZGVvLmMKaW5kZXggOGYwNWQ3N2E2NS4uYThiMmEwNjA2ZCAxMDA2NDQKLS0tIGEv bGliYXZjb2RlYy9uZW9uL21wZWd2aWRlby5jCisrKyBiL2xpYmF2Y29kZWMvbmVvbi9tcGVndmlk ZW8uYwpAQCAtMzIsNiArMzIsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJsaWJhdmNvZGVjL21w ZWd2aWRlby5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIK IAogc3RhdGljIHZvaWQgaW5saW5lIGZmX2RjdF91bnF1YW50aXplX2gyNjNfbmVvbihpbnQgcXNj YWxlLCBpbnQgcWFkZCwgaW50IG5Db2VmZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrKQpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9wcGMvbXBlZ3ZpZGVvX2FsdGl2ZWMuYyBiL2xpYmF2Y29kZWMvcHBjL21wZWd2aWRlb19hbHRp dmVjLmMKaW5kZXggYmNiNTliYTg0NS4uYzM2MWNhNzg1NyAxMDA2NDQKLS0tIGEvbGliYXZjb2Rl Yy9wcGMvbXBlZ3ZpZGVvX2FsdGl2ZWMuYworKysgYi9saWJhdmNvZGVjL3BwYy9tcGVndmlkZW9f YWx0aXZlYy5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL3BwYy91dGls X2FsdGl2ZWMuaCIKIAogI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgiCisjaW5jbHVk ZSAibGliYXZjb2RlYy9tcGVndmlkZW9fdW5xdWFudGl6ZS5oIgogCiAjaWYgSEFWRV9BTFRJVkVD CiAKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMveDg2L21wZWd2aWRlby5jIGIvbGliYXZjb2RlYy94 ODYvbXBlZ3ZpZGVvLmMKaW5kZXggOTg3ODYwN2E4MS4uMTFhNWVlNDc0YiAxMDA2NDQKLS0tIGEv bGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvLmMKKysrIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVv LmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJsaWJhdmNvZGVjL2F2Y29kZWMuaCIKICNp bmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlby5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBl Z3ZpZGVvZGF0YS5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUu aCIKIAogI2lmIEhBVkVfTU1YX0lOTElORQogCi0tIAoyLjQ1LjIKCg== --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/x-patch; charset=UTF-8; name="0077-avcodec-mpegvideo-Only-keep-the-actually-used-unquan.patch" Content-Disposition: attachment; filename*0="0077-avcodec-mpegvideo-Only-keep-the-actually-used-unquan.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzZDE2NTZiYThiYWUzZmIxODIwYmNhOWI5MjlhZWI0MWIyZDI4YjhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJk dEBvdXRsb29rLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAxNToyNDo1NyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNzcvNzddIGF2Y29kZWMvbXBlZ3ZpZGVvOiBPbmx5IGtlZXAgdGhlIGFjdHVh bGx5IHVzZWQKIHVucXVhbnRpemUgZnVuY3MKCkZvciBhbGwgZW5jb2RlcnMgYW5kIGFsbCBkZWNv ZGVycyBleGNlcHQgTVBFRy00IHRoZSB1bnF1YW50aXplCmZ1bmN0aW9ucyB0byB1c2UgZG9uJ3Qg Y2hhbmdlIGF0IGFsbCBhbmQgdGhlcmVmb3JlIG5lZWRuJ3QgYmUKa2VwdCBpbiB0aGUgY29udGV4 dC4gU28gZGlzY2FyZCB0aGVtIGFmdGVyIHNldHRpbmcgdGhlbTsKZm9yIE1QRUctNCwgdGhlIGZ1 bmN0aW9ucyBnZXQgYXNzaWduZWQgb24gYSBwZXItZnJhbWUgYmFzaXMuCgpEZWNvZGVycyBub3Qg dXNpbmcgYW55IHVucXVhbnRpemUgZnVuY3Rpb25zIChILjI2MSwgTVBFRy0xLzIpCmFzIHdlbGwg YXMgZGVjb2RlcnMgdGhhdCBvbmx5IGNhbGwgZmZfbXB2X3JlY29uc3RydWN0X21iKCkKdGhyb3Vn aCBlcnJvciByZXNpbGllbmNlIChSVjMwLzQwLCB0aGUgVkMtMSBmYW1pbHkpIGRvbid0IGhhdmUK dGhlIHJlbWFpbmluZyBwb2ludGVycyBzZXQgYXQgYWxsLgoKU2lnbmVkLW9mZi1ieTogQW5kcmVh cyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+Ci0tLQogbGliYXZj b2RlYy9hcm0vbXBlZ3ZpZGVvX2FybS5jICAgICAgICB8ICA1ICsrLS0KIGxpYmF2Y29kZWMvYXJt L21wZWd2aWRlb19hcm0uaCAgICAgICAgfCAgNCArLS0KIGxpYmF2Y29kZWMvYXJtL21wZWd2aWRl b19hcm12NXRlLmMgICAgfCAgMiArLQogbGliYXZjb2RlYy9oMjYzZGVjLmMgICAgICAgICAgICAg ICAgICB8IDE1ICsrKystLS0tLS0tCiBsaWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX2luaXRfbWlw cy5jIHwgIDkgKysrKy0tLQogbGliYXZjb2RlYy9tcGVnNHZpZGVvZGVjLmMgICAgICAgICAgICB8 IDEzICsrKysrKysrKwogbGliYXZjb2RlYy9tcGVnNHZpZGVvZGVjLmggICAgICAgICAgICB8ICA1 ICsrKysKIGxpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMgICAgICAgICAgICAgICAgfCAgMiAtLQogbGli YXZjb2RlYy9tcGVndmlkZW8uaCAgICAgICAgICAgICAgICB8IDEyIC0tLS0tLS0tLQogbGliYXZj b2RlYy9tcGVndmlkZW9fZW5jLmMgICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrLS0t LS0tLQogbGliYXZjb2RlYy9tcGVndmlkZW9fdW5xdWFudGl6ZS5jICAgICB8IDE1ICsrKysrKy0t LS0tCiBsaWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmggICAgIHwgMzggKysrKysrKysr KysrKysrKysrKysrKy0tLS0tCiBsaWJhdmNvZGVjL25lb24vbXBlZ3ZpZGVvLmMgICAgICAgICAg IHwgIDMgKystCiBsaWJhdmNvZGVjL3BwYy9tcGVndmlkZW9fYWx0aXZlYy5jICAgIHwgIDcgKyst LS0KIGxpYmF2Y29kZWMveDg2L21wZWd2aWRlby5jICAgICAgICAgICAgfCAgNSArKy0tCiAxNSBm aWxlcyBjaGFuZ2VkLCAxMDggaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy9hcm0vbXBlZ3ZpZGVvX2FybS5jIGIvbGliYXZjb2RlYy9hcm0vbXBl Z3ZpZGVvX2FybS5jCmluZGV4IGUzMjQ1MWI1NTQuLmU1ZTQxOGI2YzQgMTAwNjQ0Ci0tLSBhL2xp YmF2Y29kZWMvYXJtL21wZWd2aWRlb19hcm0uYworKysgYi9saWJhdmNvZGVjL2FybS9tcGVndmlk ZW9fYXJtLmMKQEAgLTQ2LDEyICs0NiwxMyBAQCB2b2lkIGZmX2RjdF91bnF1YW50aXplX2gyNjNf aW50ZXJfbmVvbihNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssCiB2b2lkIGZmX2Rj dF91bnF1YW50aXplX2gyNjNfaW50cmFfbmVvbihNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAq YmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbiwgaW50 IHFzY2FsZSk7CiAKLWF2X2NvbGQgdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfYXJtKE1wZWdFbmND b250ZXh0ICpzKQorYXZfY29sZCB2b2lkIGZmX21wdl91bnF1YW50aXplX2luaXRfYXJtKE1QVlVu cXVhbnREU1BDb250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIHsKICAgICBpbnQgY3B1X2ZsYWdzID0gYXZfZ2V0 X2NwdV9mbGFncygpOwogCiAgICAgaWYgKGhhdmVfYXJtdjV0ZShjcHVfZmxhZ3MpKQotICAgICAg ICBmZl9tcHZfY29tbW9uX2luaXRfYXJtdjV0ZShzKTsKKyAgICAgICAgZmZfbXB2X3VucXVhbnRp emVfaW5pdF9hcm12NXRlKHMpOwogCiAgICAgaWYgKGhhdmVfbmVvbihjcHVfZmxhZ3MpKSB7CiAg ICAgICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50cmEgPSBmZl9kY3RfdW5xdWFudGl6ZV9o MjYzX2ludHJhX25lb247CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJt LmggYi9saWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtLmgKaW5kZXggNzA5YWU2YjI0Ny4uOTNk YTdhNTY2NCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9hcm0vbXBlZ3ZpZGVvX2FybS5oCisrKyBi L2xpYmF2Y29kZWMvYXJtL21wZWd2aWRlb19hcm0uaApAQCAtMTksOCArMTksOCBAQAogI2lmbmRl ZiBBVkNPREVDX0FSTV9NUEVHVklERU9fQVJNX0gKICNkZWZpbmUgQVZDT0RFQ19BUk1fTVBFR1ZJ REVPX0FSTV9ICiAKLSNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWd2aWRlby5oIgorI2luY2x1ZGUg ImxpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIKIAotdm9pZCBmZl9tcHZfY29tbW9u X2luaXRfYXJtdjV0ZShNcGVnRW5jQ29udGV4dCAqcyk7Cit2b2lkIGZmX21wdl91bnF1YW50aXpl X2luaXRfYXJtdjV0ZShNUFZVbnF1YW50RFNQQ29udGV4dCAqcyk7CiAKICNlbmRpZiAvKiBBVkNP REVDX0FSTV9NUEVHVklERU9fQVJNX0ggKi8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXJtL21w ZWd2aWRlb19hcm12NXRlLmMgYi9saWJhdmNvZGVjL2FybS9tcGVndmlkZW9fYXJtdjV0ZS5jCmlu ZGV4IGUyMGJiNGM2NDUuLjI3MzdmNjg2NDMgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYXJtL21w ZWd2aWRlb19hcm12NXRlLmMKKysrIGIvbGliYXZjb2RlYy9hcm0vbXBlZ3ZpZGVvX2FybXY1dGUu YwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVy X2FybXY1dGUoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgZmZfZGN0X3VucXVhbnRpemVfaDI2M19h cm12NXRlKGJsb2NrLCBxbXVsLCBxYWRkLCBuQ29lZmZzICsgMSk7CiB9CiAKLWF2X2NvbGQgdm9p ZCBmZl9tcHZfY29tbW9uX2luaXRfYXJtdjV0ZShNcGVnRW5jQ29udGV4dCAqcykKK2F2X2NvbGQg dm9pZCBmZl9tcHZfdW5xdWFudGl6ZV9pbml0X2FybXY1dGUoTVBWVW5xdWFudERTUENvbnRleHQg KnMpCiB7CiAgICAgcy0+ZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYSA9IGRjdF91bnF1YW50aXpl X2gyNjNfaW50cmFfYXJtdjV0ZTsKICAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyID0g ZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9hcm12NXRlOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9oMjYzZGVjLmMgYi9saWJhdmNvZGVjL2gyNjNkZWMuYwppbmRleCA4NDM0ZjZlN2NmLi44ZDAw ZTViZjNkIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjNkZWMuYworKysgYi9saWJhdmNvZGVj L2gyNjNkZWMuYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIm1wZWd2aWRlby5oIgogI2lu Y2x1ZGUgIm1wZWd2aWRlb2RhdGEuaCIKICNpbmNsdWRlICJtcGVndmlkZW9kZWMuaCIKKyNpbmNs dWRlICJtcGVndmlkZW9fdW5xdWFudGl6ZS5oIgogI2luY2x1ZGUgIm1zbXBlZzRkZWMuaCIKICNp bmNsdWRlICJ0aHJlYWQuaCIKICNpbmNsdWRlICJ3bXYyZGVjLmgiCkBAIC05MCw2ICs5MSw3IEBA IHN0YXRpYyBlbnVtIEFWUGl4ZWxGb3JtYXQgaDI2M19nZXRfZm9ybWF0KEFWQ29kZWNDb250ZXh0 ICphdmN0eCkKIGF2X2NvbGQgaW50IGZmX2gyNjNfZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQg KmF2Y3R4KQogewogICAgIE1wZWdFbmNDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKKyAg ICBNUFZVbnF1YW50RFNQQ29udGV4dCB1bnF1YW50X2RzcF9jdHg7CiAgICAgaW50IHJldDsKIAog ICAgIHMtPm91dF9mb3JtYXQgICAgICA9IEZNVF9IMjYzOwpAQCAtMTA1LDEwICsxMDcsMTEgQEAg YXZfY29sZCBpbnQgZmZfaDI2M19kZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAg ICAgcy0+eV9kY19zY2FsZV90YWJsZSA9CiAgICAgcy0+Y19kY19zY2FsZV90YWJsZSA9IGZmX21w ZWcxX2RjX3NjYWxlX3RhYmxlOwogCisgICAgZmZfbXB2X3VucXVhbnRpemVfaW5pdCgmdW5xdWFu dF9kc3BfY3R4LCBhdmN0eCwgMCk7CiAgICAgLy8gZGN0X3VucXVhbnRpemUgZGVmYXVsdHMgZm9y IEguMjYzOwogICAgIC8vIHRoZXkgbWlnaHQgY2hhbmdlIG9uIGEgcGVyLWZyYW1lIGJhc2lzIGZv ciBNUEVHLTQuCi0gICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEgPSBzLT5kY3RfdW5xdWFudGl6 ZV9oMjYzX2ludHJhOwotICAgIHMtPmRjdF91bnF1YW50aXplX2ludGVyID0gcy0+ZGN0X3VucXVh bnRpemVfaDI2M19pbnRlcjsKKyAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRyYSA9IHVucXVhbnRf ZHNwX2N0eC5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhOworICAgIHMtPmRjdF91bnF1YW50aXpl X2ludGVyID0gdW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX2gyNjNfaW50ZXI7CiAKICAg ICAvKiBzZWxlY3Qgc3ViIGNvZGVjICovCiAgICAgc3dpdGNoIChhdmN0eC0+Y29kZWMtPmlkKSB7 CkBAIC0xMTcsOSArMTIwLDYgQEAgYXZfY29sZCBpbnQgZmZfaDI2M19kZWNvZGVfaW5pdChBVkNv ZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgIGF2Y3R4LT5jaHJvbWFfc2FtcGxlX2xvY2F0aW9u ID0gQVZDSFJPTUFfTE9DX0NFTlRFUjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBVl9DT0RF Q19JRF9NUEVHNDoKLSAgICAgICAgLy8gZGN0X3VucXVhbnRpemVfaW50ZXIgaXMgb25seSB1c2Vk IHdpdGggTVBFRy0yIHF1YW50aXplcnMsCi0gICAgICAgIC8vIHNvIHdlIGNhbiBhbHJlYWR5IHNl dCBkY3RfdW5xdWFudGl6ZV9pbnRlciBoZXJlIG9uY2UgYW5kIGZvciBhbGwuCi0gICAgICAgIHMt PmRjdF91bnF1YW50aXplX2ludGVyID0gcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXI7CiAg ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURfTVNNUEVHNFYxOgogICAgICAgICBz LT5oMjYzX3ByZWQgICAgICAgPSAxOwpAQCAtNTA4LDExICs1MDgsNiBAQCByZXRyeToKICAgICAg ICAgICAgIGdvdG8gcmV0cnk7CiAgICAgICAgIGlmIChzLT5zdHVkaW9fcHJvZmlsZSAhPSAocy0+ aWRzcC5pZGN0ID09IE5VTEwpKQogICAgICAgICAgICAgZmZfbXB2X2lkY3RfaW5pdChzKTsKLSAg ICAgICAgaWYgKHMtPm1wZWdfcXVhbnQpIHsKLSAgICAgICAgICAgIHMtPmRjdF91bnF1YW50aXpl X2ludHJhID0gcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7Ci0gICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRyYSA9IHMtPmRjdF91bnF1YW50aXpl X2gyNjNfaW50cmE7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBBZnRlciBILjI2MyAmIE1Q RUctNCBoZWFkZXIgZGVjb2RlIHdlIGhhdmUgdGhlIGhlaWdodCwgd2lkdGgsCmRpZmYgLS1naXQg YS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX2luaXRfbWlwcy5jIGIvbGliYXZjb2RlYy9taXBz L21wZWd2aWRlb19pbml0X21pcHMuYwppbmRleCBhOWFjYWU5NGNlLi4wZGU4MjQ1NDYwIDEwMDY0 NAotLS0gYS9saWJhdmNvZGVjL21pcHMvbXBlZ3ZpZGVvX2luaXRfbWlwcy5jCisrKyBiL2xpYmF2 Y29kZWMvbWlwcy9tcGVndmlkZW9faW5pdF9taXBzLmMKQEAgLTI0LDcgKzI0LDggQEAKICNpbmNs dWRlICJoMjYzZHNwX21pcHMuaCIKICNpbmNsdWRlICJtcGVndmlkZW9fbWlwcy5oIgogCi1hdl9j b2xkIHZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMoTXBlZ0VuY0NvbnRleHQgKnMpCithdl9j b2xkIHZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdF9taXBzKE1QVlVucXVhbnREU1BDb250ZXh0 ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVkNvZGVjQ29u dGV4dCAqYXZjdHgsIGludCBxX3NjYWxlX3R5cGUpCiB7CiAgICAgaW50IGNwdV9mbGFncyA9IGF2 X2dldF9jcHVfZmxhZ3MoKTsKIApAQCAtMzQsMTUgKzM1LDE1IEBAIGF2X2NvbGQgdm9pZCBmZl9t cHZfY29tbW9uX2luaXRfbWlwcyhNcGVnRW5jQ29udGV4dCAqcykKICAgICAgICAgcy0+ZGN0X3Vu cXVhbnRpemVfbXBlZzFfaW50cmEgPSBmZl9kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRyYV9tbWk7 CiAgICAgICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcxX2ludGVyID0gZmZfZGN0X3VucXVhbnRp emVfbXBlZzFfaW50ZXJfbW1pOwogCi0gICAgICAgIGlmICghKHMtPmF2Y3R4LT5mbGFncyAmIEFW X0NPREVDX0ZMQUdfQklURVhBQ1QpKQotICAgICAgICAgICAgaWYgKCFzLT5xX3NjYWxlX3R5cGUp CisgICAgICAgIGlmICghKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKQor ICAgICAgICAgICAgaWYgKCFxX3NjYWxlX3R5cGUpCiAgICAgICAgICAgICAgICAgcy0+ZGN0X3Vu cXVhbnRpemVfbXBlZzJfaW50cmEgPSBmZl9kY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9tbWk7 CiAgICAgfQogCiAgICAgaWYgKGhhdmVfbXNhKGNwdV9mbGFncykpIHsKICAgICAgICAgcy0+ZGN0 X3VucXVhbnRpemVfaDI2M19pbnRyYSA9IGZmX2RjdF91bnF1YW50aXplX2gyNjNfaW50cmFfbXNh OwogICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyID0gZmZfZGN0X3VucXVhbnRp emVfaDI2M19pbnRlcl9tc2E7Ci0gICAgICAgIGlmICghcy0+cV9zY2FsZV90eXBlKQorICAgICAg ICBpZiAoIXFfc2NhbGVfdHlwZSkKICAgICAgICAgICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcy X2ludGVyID0gZmZfZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXJfbXNhOwogICAgIH0KIH0KZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZzR2aWRlb2RlYy5jIGIvbGliYXZjb2RlYy9tcGVnNHZp ZGVvZGVjLmMKaW5kZXggMTM5YjZkNGIwOC4uODgwMzgwMWI2MyAxMDA2NDQKLS0tIGEvbGliYXZj b2RlYy9tcGVnNHZpZGVvZGVjLmMKKysrIGIvbGliYXZjb2RlYy9tcGVnNHZpZGVvZGVjLmMKQEAg LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJtcGVndmlkZW8uaCIKICNpbmNsdWRlICJtcGVndmlk ZW9kYXRhLmgiCiAjaW5jbHVkZSAibXBlZ3ZpZGVvZGVjLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVv X3VucXVhbnRpemUuaCIKICNpbmNsdWRlICJtcGVnNHZpZGVvLmgiCiAjaW5jbHVkZSAibXBlZzR2 aWRlb2RhdGEuaCIKICNpbmNsdWRlICJtcGVnNHZpZGVvZGVjLmgiCkBAIC0zMzkwLDYgKzMzOTEs OSBAQCBzdGF0aWMgaW50IGRlY29kZV92b3BfaGVhZGVyKE1wZWc0RGVjQ29udGV4dCAqY3R4LCBH ZXRCaXRDb250ZXh0ICpnYiwKICAgICAgICAgfQogICAgIH0KIAorICAgIHMtPmRjdF91bnF1YW50 aXplX2ludHJhID0gcy0+bXBlZ19xdWFudCA/IGN0eC0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50 cmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjdHgtPmRj dF91bnF1YW50aXplX2gyNjNfaW50cmE7CisKIGVuZDoKICAgICAvKiBkZXRlY3QgYnVnZ3kgZW5j b2RlcnMgd2hpY2ggZG9uJ3Qgc2V0IHRoZSBsb3dfZGVsYXkgZmxhZwogICAgICAqIChkaXZ4NC94 dmlkL29wZW5kaXZ4KS4gTm90ZSB3ZSBjYW5ub3QgZGV0ZWN0IGRpdng1IHdpdGhvdXQgQi1mcmFt ZXMKQEAgLTM4NjIsNiArMzg2Niw3IEBAIHN0YXRpYyBhdl9jb2xkIGludCBkZWNvZGVfaW5pdChB VkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgc3RhdGljIEFWT25jZSBpbml0X3N0YXRpY19vbmNl ID0gQVZfT05DRV9JTklUOwogICAgIE1wZWc0RGVjQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXZf ZGF0YTsKICAgICBNcGVnRW5jQ29udGV4dCAqcyA9ICZjdHgtPm07CisgICAgTVBWVW5xdWFudERT UENvbnRleHQgdW5xdWFudF9kc3BfY3R4OwogICAgIGludCByZXQ7CiAKICAgICBjdHgtPmRpdnhf dmVyc2lvbiA9CkBAIC0zODcyLDYgKzM4NzcsMTQgQEAgc3RhdGljIGF2X2NvbGQgaW50IGRlY29k ZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICBpZiAoKHJldCA9IGZmX2gyNjNfZGVj b2RlX2luaXQoYXZjdHgpKSA8IDApCiAgICAgICAgIHJldHVybiByZXQ7CiAKKyAgICBmZl9tcHZf dW5xdWFudGl6ZV9pbml0KCZ1bnF1YW50X2RzcF9jdHgsIGF2Y3R4LCAwKTsKKworICAgIGN0eC0+ ZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYSAgPSB1bnF1YW50X2RzcF9jdHguZGN0X3VucXVhbnRp emVfaDI2M19pbnRyYTsKKyAgICBjdHgtPmRjdF91bnF1YW50aXplX21wZWcyX2ludHJhID0gdW5x dWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX21wZWcyX2ludHJhOworICAgIC8vIGRjdF91bnF1 YW50aXplX2ludGVyIGlzIG9ubHkgdXNlZCB3aXRoIE1QRUctMiBxdWFudGl6ZXJzLAorICAgIC8v IHNvIHdlIGNhbiBhbHJlYWR5IHNldCBkY3RfdW5xdWFudGl6ZV9pbnRlciBoZXJlIG9uY2UgYW5k IGZvciBhbGwuCisgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50ZXIgPSB1bnF1YW50X2RzcF9jdHgu ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXI7CisKICAgICBzLT5oMjYzX3ByZWQgPSAxOwogICAg IHMtPmxvd19kZWxheSA9IDA7IC8qIGRlZmF1bHQsIG1pZ2h0IGJlIG92ZXJyaWRkZW4gaW4gdGhl IHZvbCBoZWFkZXIgZHVyaW5nIGhlYWRlciBwYXJzaW5nICovCiAgICAgcy0+ZGVjb2RlX21iID0g bXBlZzRfZGVjb2RlX21iOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVnNHZpZGVvZGVjLmgg Yi9saWJhdmNvZGVjL21wZWc0dmlkZW9kZWMuaAppbmRleCBiYjE0ZDI0Yzg4Li4zYTI1NGYyODM4 IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWc0dmlkZW9kZWMuaAorKysgYi9saWJhdmNvZGVj L21wZWc0dmlkZW9kZWMuaApAQCAtODgsNiArODgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZzRE ZWNDb250ZXh0IHsKIAogICAgIE1wZWc0VmlkZW9EU1BDb250ZXh0IG1kc3A7CiAKKyAgICB2b2lk ICgqZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmEpKE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2 Ki8sIGludCBuLCBpbnQgcXNjYWxlKTsKKyAgICB2b2lkICgqZGN0X3VucXVhbnRpemVfaDI2M19p bnRyYSkoTXBlZ0VuY0NvbnRleHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7CisK ICAgICBERUNMQVJFX0FMSUdORUQoOCwgaW50MzJfdCwgYmxvY2szMilbMTJdWzY0XTsKICAgICAv LyAwID0gRENULCAxID0gRFBDTSB0b3AgdG8gYm90dG9tIHNjYW4sIC0xID0gRFBDTSBib3R0b20g dG8gdG9wIHNjYW4KICAgICBpbnQgZHBjbV9kaXJlY3Rpb247CmRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL21wZWd2aWRlby5jIGIvbGliYXZjb2RlYy9tcGVndmlkZW8uYwppbmRleCA5YTQwOTM3YmJk Li43OTRiMmQwZjY2IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21wZWd2aWRlby5jCisrKyBiL2xp YmF2Y29kZWMvbXBlZ3ZpZGVvLmMKQEAgLTExMiw4ICsxMTIsNiBAQCBhdl9jb2xkIHZvaWQgZmZf bXB2X2lkY3RfaW5pdChNcGVnRW5jQ29udGV4dCAqcykKICAgICAgICAgICAgICAgICAgICAgICAg ICBzLT5pZHNwLmlkY3RfcGVybXV0YXRpb24pOwogICAgIGZmX3Blcm11dGVfc2NhbnRhYmxlKHMt PnBlcm11dGF0ZWRfaW50cmFfdl9zY2FudGFibGUsIGZmX2FsdGVybmF0ZV92ZXJ0aWNhbF9zY2Fu LAogICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmlkc3AuaWRjdF9wZXJtdXRhdGlvbik7Ci0K LSAgICBmZl9tcHZfdW5xdWFudGl6ZV9pbml0KHMpOwogfQogCiBzdGF0aWMgYXZfY29sZCBpbnQg aW5pdF9kdXBsaWNhdGVfY29udGV4dChNcGVnRW5jQ29udGV4dCAqcykKZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvbXBlZ3ZpZGVvLmggYi9saWJhdmNvZGVjL21wZWd2aWRlby5oCmluZGV4IDczNzkx NjAxNTkuLjJkNjBjOWRkZjAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmgKKysr IGIvbGliYXZjb2RlYy9tcGVndmlkZW8uaApAQCAtMzI2LDE4ICszMjYsNiBAQCB0eXBlZGVmIHN0 cnVjdCBNcGVnRW5jQ29udGV4dCB7CiAjZGVmaW5lIFNMSUNFX0VORCAgICAgICAtMiAvLy88ZW5k IG1hcmtlciBmb3VuZAogI2RlZmluZSBTTElDRV9OT0VORCAgICAgLTMgLy8vPG5vIGVuZCBtYXJr ZXIgb3IgZXJyb3IgZm91bmQgYnV0IG1iIGNvdW50IGV4Y2VlZGVkCiAKLSAgICB2b2lkICgqZGN0 X3VucXVhbnRpemVfbXBlZzFfaW50cmEpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwg aW50IHFzY2FsZSk7Ci0gICAgdm9pZCAoKmRjdF91bnF1YW50aXplX21wZWcxX2ludGVyKShzdHJ1 Y3QgTXBlZ0VuY0NvbnRleHQgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90 ICpibG9jay8qYWxpZ24gMTYqLywgaW50IG4sIGludCBxc2NhbGUpOwotICAgIHZvaWQgKCpkY3Rf dW5xdWFudGl6ZV9tcGVnMl9pbnRyYSkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2Ki8sIGludCBuLCBp bnQgcXNjYWxlKTsKLSAgICB2b2lkICgqZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXIpKHN0cnVj dCBNcGVnRW5jQ29udGV4dCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg KmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7Ci0gICAgdm9pZCAoKmRjdF91 bnF1YW50aXplX2gyNjNfaW50cmEpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50 IHFzY2FsZSk7Ci0gICAgdm9pZCAoKmRjdF91bnF1YW50aXplX2gyNjNfaW50ZXIpKHN0cnVjdCBN cGVnRW5jQ29udGV4dCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJs b2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7CiAgICAgdm9pZCAoKmRjdF91bnF1 YW50aXplX2ludHJhKShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnMsIC8vIHVucXVhbnRpemVyIHRv IHVzZSAoTVBFRy00IGNhbiB1c2UgYm90aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7CiAgICAgdm9pZCAo KmRjdF91bnF1YW50aXplX2ludGVyKShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnMsIC8vIHVucXVh bnRpemVyIHRvIHVzZSAoTVBFRy00IGNhbiB1c2UgYm90aCkKZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvbXBlZ3ZpZGVvX2VuYy5jIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKaW5kZXggOTVk Nzc0MTU1YS4uN2JlNDg1YmNhZCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5j LmMKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKQEAgLTYwLDYgKzYwLDcgQEAKICNp bmNsdWRlICJtanBlZ2VuY19jb21tb24uaCIKICNpbmNsdWRlICJtYXRob3BzLmgiCiAjaW5jbHVk ZSAibXBlZ3V0aWxzLmgiCisjaW5jbHVkZSAibXBlZ3ZpZGVvX3VucXVhbnRpemUuaCIKICNpbmNs dWRlICJtanBlZ2VuYy5oIgogI2luY2x1ZGUgInNwZWVkaHFlbmMuaCIKICNpbmNsdWRlICJtc21w ZWc0ZW5jLmgiCkBAIC0zMTAsNiArMzExLDI0IEBAIGF2X2NvbGQgdm9pZCBmZl9kY3RfZW5jb2Rl X2luaXQoTVBWRW5jQ29udGV4dCAqY29uc3QgcykKICAgICAgICAgcy0+ZGN0X3F1YW50aXplICA9 IGRjdF9xdWFudGl6ZV90cmVsbGlzX2M7CiB9CiAKK3N0YXRpYyBhdl9jb2xkIHZvaWQgaW5pdF91 bnF1YW50aXplKE1wZWdFbmNDb250ZXh0ICpjb25zdCBzLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgp Cit7CisgICAgTVBWVW5xdWFudERTUENvbnRleHQgdW5xdWFudF9kc3BfY3R4OworCisgICAgZmZf bXB2X3VucXVhbnRpemVfaW5pdCgmdW5xdWFudF9kc3BfY3R4LCBhdmN0eCwgcy0+cV9zY2FsZV90 eXBlKTsKKworICAgIGlmIChzLT5tcGVnX3F1YW50IHx8IHMtPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX01QRUcyVklERU8pIHsKKyAgICAgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEgPSB1bnF1 YW50X2RzcF9jdHguZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7CisgICAgICAgIHMtPmRjdF91 bnF1YW50aXplX2ludGVyID0gdW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX21wZWcyX2lu dGVyOworICAgIH0gZWxzZSBpZiAocy0+b3V0X2Zvcm1hdCA9PSBGTVRfSDI2MyB8fCBzLT5vdXRf Zm9ybWF0ID09IEZNVF9IMjYxKSB7CisgICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludHJhID0g dW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX2gyNjNfaW50cmE7CisgICAgICAgIHMtPmRj dF91bnF1YW50aXplX2ludGVyID0gdW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX2gyNjNf aW50ZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcy0+ZGN0X3VucXVhbnRpemVfaW50cmEgPSB1 bnF1YW50X2RzcF9jdHguZGN0X3VucXVhbnRpemVfbXBlZzFfaW50cmE7CisgICAgICAgIHMtPmRj dF91bnF1YW50aXplX2ludGVyID0gdW5xdWFudF9kc3BfY3R4LmRjdF91bnF1YW50aXplX21wZWcx X2ludGVyOworICAgIH0KK30KKwogc3RhdGljIGF2X2NvbGQgaW50IG1lX2NtcF9pbml0KE1QVk1h aW5FbmNDb250ZXh0ICpjb25zdCBtLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiB7CiAgICAgTVBW RW5jQ29udGV4dCAqY29uc3QgcyA9ICZtLT5zOwpAQCAtMTAxMyw2ICsxMDMyLDcgQEAgYXZfY29s ZCBpbnQgZmZfbXB2X2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICAgKiB0 byB0aGUgc2xpY2UgY29udGV4dHMsIHNvIHdlIGluaXRpYWxpemUgdmFyaW91cyBmaWVsZHMgb2Yg aXQKICAgICAgKiBiZWZvcmUgY2FsbGluZyBmZl9tcHZfY29tbW9uX2luaXQoKS4gKi8KICAgICBm Zl9tcHZfaWRjdF9pbml0KCZzLT5jKTsKKyAgICBpbml0X3VucXVhbnRpemUoJnMtPmMsIGF2Y3R4 KTsKICAgICBmZl9mZGN0ZHNwX2luaXQoJnMtPmZkc3AsIGF2Y3R4KTsKICAgICBmZl9tcGVndmlk ZW9lbmNkc3BfaW5pdCgmcy0+bXB2ZW5jZHNwLCBhdmN0eCk7CiAgICAgZmZfcGl4YmxvY2tkc3Bf aW5pdCgmcy0+cGRzcCwgYXZjdHgpOwpAQCAtMTAzMSwxNSArMTA1MSwxMSBAQCBhdl9jb2xkIGlu dCBmZl9tcHZfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogCiAgICAgZmZfZGN0 X2VuY29kZV9pbml0KHMpOwogCi0gICAgaWYgKHMtPmMubXBlZ19xdWFudCB8fCBzLT5jLmNvZGVj X2lkID09IEFWX0NPREVDX0lEX01QRUcyVklERU8pIHsKLSAgICAgICAgcy0+Yy5kY3RfdW5xdWFu dGl6ZV9pbnRyYSA9IHMtPmMuZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmE7Ci0gICAgICAgIHMt PmMuZGN0X3VucXVhbnRpemVfaW50ZXIgPSBzLT5jLmRjdF91bnF1YW50aXplX21wZWcyX2ludGVy OwotICAgIH0gZWxzZSBpZiAocy0+Yy5vdXRfZm9ybWF0ID09IEZNVF9IMjYzIHx8IHMtPmMub3V0 X2Zvcm1hdCA9PSBGTVRfSDI2MSkgewotICAgICAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludHJh ID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhOwotICAgICAgICBzLT5jLmRjdF91bnF1 YW50aXplX2ludGVyID0gcy0+Yy5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyOwotICAgIH0gZWxz ZSB7Ci0gICAgICAgIHMtPmMuZGN0X3VucXVhbnRpemVfaW50cmEgPSBzLT5jLmRjdF91bnF1YW50 aXplX21wZWcxX2ludHJhOwotICAgICAgICBzLT5jLmRjdF91bnF1YW50aXplX2ludGVyID0gcy0+ Yy5kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlcjsKKyAgICBpZiAocy0+Yy5zbGljZV9jb250ZXh0 X2NvdW50ID4gMSkgeworICAgICAgICBzLT5ydHBfbW9kZSA9IDE7CisKKyAgICAgICAgaWYgKGF2 Y3R4LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjYzUCkKKyAgICAgICAgICAgIHMtPmMuaDI2 M19zbGljZV9zdHJ1Y3R1cmVkID0gMTsKICAgICB9CiAKICAgICBpZiAoQ09ORklHX0gyNjNfRU5D T0RFUiAmJiBzLT5jLm91dF9mb3JtYXQgPT0gRk1UX0gyNjMpIHsKZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuYyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVh bnRpemUuYwppbmRleCAxMmJhY2RmNDI0Li5mZTQ1ZjM1MGQ3IDEwMDY0NAotLS0gYS9saWJhdmNv ZGVjL21wZWd2aWRlb191bnF1YW50aXplLmMKKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fdW5x dWFudGl6ZS5jCkBAIC0yNDYsMjggKzI0NiwyOSBAQCBzdGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6 ZV9oMjYzX2ludGVyX2MoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgfQogfQogCi1hdl9jb2xkIHZv aWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdChNcGVnRW5jQ29udGV4dCAqcykKK2F2X2NvbGQgdm9p ZCBmZl9tcHZfdW5xdWFudGl6ZV9pbml0KE1QVlVucXVhbnREU1BDb250ZXh0ICpzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBpbnQg cV9zY2FsZV90eXBlKQogewogICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50cmEgID0gZGN0 X3VucXVhbnRpemVfaDI2M19pbnRyYV9jOwogICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50 ZXIgID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9jOwogICAgIHMtPmRjdF91bnF1YW50aXpl X21wZWcxX2ludHJhID0gZGN0X3VucXVhbnRpemVfbXBlZzFfaW50cmFfYzsKICAgICBzLT5kY3Rf dW5xdWFudGl6ZV9tcGVnMV9pbnRlciA9IGRjdF91bnF1YW50aXplX21wZWcxX2ludGVyX2M7CiAg ICAgcy0+ZGN0X3VucXVhbnRpemVfbXBlZzJfaW50cmEgPSBkY3RfdW5xdWFudGl6ZV9tcGVnMl9p bnRyYV9jOwotICAgIGlmIChzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNU KQorICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0JJVEVYQUNUKQogICAgICAg ICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYSA9IGRjdF91bnF1YW50aXplX21wZWcyX2lu dHJhX2JpdGV4YWN0OwogICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcyX2ludGVyID0gZGN0X3Vu cXVhbnRpemVfbXBlZzJfaW50ZXJfYzsKIAogI2lmIEhBVkVfSU5UUklOU0lDU19ORU9OCi0gICAg ZmZfbXB2X2NvbW1vbl9pbml0X25lb24ocyk7CisgICAgZmZfbXB2X3VucXVhbnRpemVfaW5pdF9u ZW9uKHMsIGF2Y3R4KTsKICNlbmRpZgogCiAjaWYgQVJDSF9BUk0KLSAgICBmZl9tcHZfY29tbW9u X2luaXRfYXJtKHMpOworICAgIGZmX21wdl91bnF1YW50aXplX2luaXRfYXJtKHMsIGF2Y3R4KTsK ICNlbGlmIEFSQ0hfUFBDCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X3BwYyhzKTsKKyAgICBmZl9t cHZfdW5xdWFudGl6ZV9pbml0X3BwYyhzLCBhdmN0eCk7CiAjZWxpZiBBUkNIX1g4NgotICAgIGZm X21wdl9jb21tb25faW5pdF94ODYocyk7CisgICAgZmZfbXB2X3VucXVhbnRpemVfaW5pdF94ODYo cywgYXZjdHgpOwogI2VsaWYgQVJDSF9NSVBTCi0gICAgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMo cyk7CisgICAgZmZfbXB2X3VucXVhbnRpemVfaW5pdF9taXBzKHMuIGF2Y3R4LCBxX3NjYWxlX3R5 cGUpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50 aXplLmggYi9saWJhdmNvZGVjL21wZWd2aWRlb191bnF1YW50aXplLmgKaW5kZXggMWU3NTkwNTYx Yy4uY2ZhMzQ5Y2NjZCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fdW5xdWFudGl6 ZS5oCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX3VucXVhbnRpemUuaApAQCAtMjUsMTMgKzI1 LDM5IEBACiAjaWZuZGVmIEFWQ09ERUNfTVBFR1ZJREVPX1VOUVVBTlRJWkVfSAogI2RlZmluZSBB VkNPREVDX01QRUdWSURFT19VTlFVQU5USVpFX0gKIAorI2luY2x1ZGUgPHN0ZGludC5oPgorCisj aW5jbHVkZSAiY29uZmlnLmgiCisKK3R5cGVkZWYgc3RydWN0IEFWQ29kZWNDb250ZXh0IEFWQ29k ZWNDb250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgTXBlZ0VuY0NvbnRleHQ7 CiAKLXZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lk IGZmX21wdl9jb21tb25faW5pdF9hcm0oTXBlZ0VuY0NvbnRleHQgKnMpOwotdm9pZCBmZl9tcHZf Y29tbW9uX2luaXRfbmVvbihNcGVnRW5jQ29udGV4dCAqcyk7Ci12b2lkIGZmX21wdl9jb21tb25f aW5pdF9wcGMoTXBlZ0VuY0NvbnRleHQgKnMpOwotdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2 KE1wZWdFbmNDb250ZXh0ICpzKTsKLXZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X21pcHMoTXBlZ0Vu Y0NvbnRleHQgKnMpOwordHlwZWRlZiBzdHJ1Y3QgTVBWVW5xdWFudERTUENvbnRleHQgeworICAg IHZvaWQgKCpkY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRyYSkoc3RydWN0IE1wZWdFbmNDb250ZXh0 ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2 Ki8sIGludCBuLCBpbnQgcXNjYWxlKTsKKyAgICB2b2lkICgqZGN0X3VucXVhbnRpemVfbXBlZzFf aW50ZXIpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludDE2X3QgKmJsb2NrLyphbGlnbiAxNiovLCBpbnQgbiwgaW50IHFzY2FsZSk7CisgICAg dm9pZCAoKmRjdF91bnF1YW50aXplX21wZWcyX2ludHJhKShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQg KnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jay8qYWxpZ24gMTYq LywgaW50IG4sIGludCBxc2NhbGUpOworICAgIHZvaWQgKCpkY3RfdW5xdWFudGl6ZV9tcGVnMl9p bnRlcikoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2Ki8sIGludCBuLCBpbnQgcXNjYWxlKTsKKyAgICB2 b2lkICgqZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYSkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2svKmFsaWduIDE2Ki8s IGludCBuLCBpbnQgcXNjYWxlKTsKKyAgICB2b2lkICgqZGN0X3VucXVhbnRpemVfaDI2M19pbnRl cikoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50MTZfdCAqYmxvY2svKmFsaWduIDE2Ki8sIGludCBuLCBpbnQgcXNjYWxlKTsKK30gTVBWVW5x dWFudERTUENvbnRleHQ7CisKKyNpZiAhQVJDSF9NSVBTCisjZGVmaW5lIGZmX21wdl91bnF1YW50 aXplX2luaXQocywgYXZjdHgsIHFfc2NhbGVfdHlwZSkgZmZfbXB2X3VucXVhbnRpemVfaW5pdChz LCBhdmN0eCkKKyNlbmRpZgorCit2b2lkIGZmX21wdl91bnF1YW50aXplX2luaXQoTVBWVW5xdWFu dERTUENvbnRleHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LCBpbnQgcV9zY2FsZV90eXBlKTsKK3ZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5p dF9hcm0oTVBWVW5xdWFudERTUENvbnRleHQgKnMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Cit2 b2lkIGZmX21wdl91bnF1YW50aXplX2luaXRfbmVvbihNUFZVbnF1YW50RFNQQ29udGV4dCAqcywg QVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKK3ZvaWQgZmZfbXB2X3VucXVhbnRpemVfaW5pdF9wcGMo TVBWVW5xdWFudERTUENvbnRleHQgKnMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Cit2b2lkIGZm X21wdl91bnF1YW50aXplX2luaXRfeDg2KE1QVlVucXVhbnREU1BDb250ZXh0ICpzLCBBVkNvZGVj Q29udGV4dCAqYXZjdHgpOwordm9pZCBmZl9tcHZfdW5xdWFudGl6ZV9pbml0X21pcHMoTVBWVW5x dWFudERTUENvbnRleHQgKnMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBxX3NjYWxlX3R5cGUpOwogCiAjZW5kaWYgLyogQVZDT0RF Q19NUEVHVklERU9fVU5RVUFOVElaRV9IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL25lb24v bXBlZ3ZpZGVvLmMgYi9saWJhdmNvZGVjL25lb24vbXBlZ3ZpZGVvLmMKaW5kZXggYThiMmEwNjA2 ZC4uMjRjZjhmZTliMiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9uZW9uL21wZWd2aWRlby5jCisr KyBiL2xpYmF2Y29kZWMvbmVvbi9tcGVndmlkZW8uYwpAQCAtMTI1LDcgKzEyNSw4IEBAIHN0YXRp YyB2b2lkIGRjdF91bnF1YW50aXplX2gyNjNfaW50cmFfbmVvbihNcGVnRW5jQ29udGV4dCAqcywg aW50MTZfdCAqYmxvY2ssCiB9CiAKIAotYXZfY29sZCB2b2lkIGZmX21wdl9jb21tb25faW5pdF9u ZW9uKE1wZWdFbmNDb250ZXh0ICpzKQorYXZfY29sZCB2b2lkIGZmX21wdl91bnF1YW50aXplX2lu aXRfbmVvbihNUFZVbnF1YW50RFNQQ29udGV4dCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogewogICAgIGludCBjcHVf ZmxhZ3MgPSBhdl9nZXRfY3B1X2ZsYWdzKCk7CiAKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcHBj L21wZWd2aWRlb19hbHRpdmVjLmMgYi9saWJhdmNvZGVjL3BwYy9tcGVndmlkZW9fYWx0aXZlYy5j CmluZGV4IGMzNjFjYTc4NTcuLmYyODAxZmRkNTAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvcHBj L21wZWd2aWRlb19hbHRpdmVjLmMKKysrIGIvbGliYXZjb2RlYy9wcGMvbXBlZ3ZpZGVvX2FsdGl2 ZWMuYwpAQCAtMTE3LDE0ICsxMTcsMTUgQEAgc3RhdGljIHZvaWQgZGN0X3VucXVhbnRpemVfaDI2 M19hbHRpdmVjKE1wZWdFbmNDb250ZXh0ICpzLAogCiAjZW5kaWYgLyogSEFWRV9BTFRJVkVDICov CiAKLWF2X2NvbGQgdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfcHBjKE1wZWdFbmNDb250ZXh0ICpz KQorYXZfY29sZCB2b2lkIGZmX21wdl91bnF1YW50aXplX2luaXRfcHBjKE1QVlVucXVhbnREU1BD b250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWQ29k ZWNDb250ZXh0ICphdmN0eCkKIHsKICNpZiBIQVZFX0FMVElWRUMKICAgICBpZiAoIVBQQ19BTFRJ VkVDKGF2X2dldF9jcHVfZmxhZ3MoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgocy0+ YXZjdHgtPmRjdF9hbGdvID09IEZGX0RDVF9BVVRPKSB8fAotICAgICAgICAocy0+YXZjdHgtPmRj dF9hbGdvID09IEZGX0RDVF9BTFRJVkVDKSkgeworICAgIGlmICgoYXZjdHgtPmRjdF9hbGdvID09 IEZGX0RDVF9BVVRPKSB8fAorICAgICAgICAoYXZjdHgtPmRjdF9hbGdvID09IEZGX0RDVF9BTFRJ VkVDKSkgewogICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhID0gZGN0X3VucXVh bnRpemVfaDI2M19hbHRpdmVjOwogICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVy ID0gZGN0X3VucXVhbnRpemVfaDI2M19hbHRpdmVjOwogICAgIH0KZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMveDg2L21wZWd2aWRlby5jIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvLmMKaW5kZXgg MTFhNWVlNDc0Yi4uMmQwMjZhZmM0MSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy94ODYvbXBlZ3Zp ZGVvLmMKKysrIGIvbGliYXZjb2RlYy94ODYvbXBlZ3ZpZGVvLmMKQEAgLTQ1MCw3ICs0NTAsOCBA QCBfX2FzbV9fIHZvbGF0aWxlKAogCiAjZW5kaWYgLyogSEFWRV9NTVhfSU5MSU5FICovCiAKLWF2 X2NvbGQgdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2KE1wZWdFbmNDb250ZXh0ICpzKQorYXZf Y29sZCB2b2lkIGZmX21wdl91bnF1YW50aXplX2luaXRfeDg2KE1QVlVucXVhbnREU1BDb250ZXh0 ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWQ29kZWNDb250 ZXh0ICphdmN0eCkKIHsKICNpZiBIQVZFX01NWF9JTkxJTkUKICAgICBpbnQgY3B1X2ZsYWdzID0g YXZfZ2V0X2NwdV9mbGFncygpOwpAQCAtNDYwLDcgKzQ2MSw3IEBAIGF2X2NvbGQgdm9pZCBmZl9t cHZfY29tbW9uX2luaXRfeDg2KE1wZWdFbmNDb250ZXh0ICpzKQogICAgICAgICBzLT5kY3RfdW5x dWFudGl6ZV9oMjYzX2ludGVyID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9tbXg7CiAgICAg ICAgIHMtPmRjdF91bnF1YW50aXplX21wZWcxX2ludHJhID0gZGN0X3VucXVhbnRpemVfbXBlZzFf aW50cmFfbW14OwogICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9tcGVnMV9pbnRlciA9IGRjdF91 bnF1YW50aXplX21wZWcxX2ludGVyX21teDsKLSAgICAgICAgaWYgKCEocy0+YXZjdHgtPmZsYWdz ICYgQVZfQ09ERUNfRkxBR19CSVRFWEFDVCkpCisgICAgICAgIGlmICghKGF2Y3R4LT5mbGFncyAm IEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKQogICAgICAgICAgICAgcy0+ZGN0X3VucXVhbnRpemVf bXBlZzJfaW50cmEgPSBkY3RfdW5xdWFudGl6ZV9tcGVnMl9pbnRyYV9tbXg7CiAgICAgICAgIHMt PmRjdF91bnF1YW50aXplX21wZWcyX2ludGVyID0gZGN0X3VucXVhbnRpemVfbXBlZzJfaW50ZXJf bW14OwogICAgIH0KLS0gCjIuNDUuMgoK --------------9QiYbQBBvMxpoUafndAf0vI8 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --------------9QiYbQBBvMxpoUafndAf0vI8--