From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id F234C495BD for ; Fri, 14 Jun 2024 02:30:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8C96468D447; Fri, 14 Jun 2024 05:30:16 +0300 (EEST) Received: from AUS01-ME3-obe.outbound.protection.outlook.com (mail-me3aus01olkn2181.outbound.protection.outlook.com [40.92.63.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5428968D154 for ; Fri, 14 Jun 2024 05:30:09 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mv1bmM4ih5V6ZgRoGD7Oaxk94PsNaJn4JeTV344mBNC/slONJs85V2XhGwc1BOzuRRBRA6Tr+WxgCZF3+4bbQRVKmEFBEO/jkKwsJkbwfI9FaOlI9A7dF1VXcIW6WxVsh4oAa6dqZLNMS1jZyqr4J0NTkYzPh6rhAmsi4+WqOg7atzGd/Qir5nnvwrjbf87CYnJH6CcCkTUky5aGSh7MbaHHNQaAT32nxKrodnledNVExPI30Rf7J7KBBVWZ0lDZy9SFZokJwqWJxhqZybdj+0QiWcrU05SwW7xvrh2nRulpnqlcPD5jYM4UDqfGSyM1ls2UpjD5Vs4If2+tHH4ZbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=R6qUkDW7LaKxCf8vgsEHtWTEt6Y80/0drqZhpU+gt7I=; b=BFd8yVrNGsWtWp7VANAY75VIWIDwdcd4qEIG0O2vs6RBoC5dVRtv3VgGJDEIARNBMXnd6sVLszfXzuiuvjPIpCK62kJ8w/+l0tVuAgNFsYfCH8JXd01Y7qN/KR+uxL/DCxlccl6w9wGPv8w0ninE40bDLTOcwxfxH1Hz0939OjAImTm0P8i7gsg9e/QAc2FIEQDfDaczOrB2lKtunXhAm3vNB8c5V5Q+FscnnZA5UgqlhEIbocUC2aNufQMogpglNiEXhPeOOo0yR2i5CTodVGODcrF0mB+xfgeN3BCMMfmcOHrKFdCQrcUZY+V5tH/ui1rS3/B/GiI7pLzja8ajKQ== 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=msn.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R6qUkDW7LaKxCf8vgsEHtWTEt6Y80/0drqZhpU+gt7I=; b=mg83dtG+18cHPJtFLWsHZJ4DkyPOvbQZ8kg6ODFeC02yMDwhmE/7QHrMwlAWrpFW2AzYTXD0Dg2DtaiznC9e59E6fenw6phD+OiX6pVSkiftzUXWNl0a9GOZCaekz9X363vHLhFal553NePHXR4zPN+WlD6sKakYeNPEFUHp6NC64RnLGQ3S4AaGquASTYfW3J/NGPlDZWAO1KukuaKqz/OZaY+ZwKpYrTSt/8I7O10ZUR8HBjtazcvh4n1ntyLhKCyx+Gv/q/neHlspgFwcCzFgQnK4MwgDaRgNCusAeLuYrOpxgLwfrcqPJeUgQlYnM0Rg0FIm6xavwsykFQC7hQ== Received: from MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:bb::12) by ME3P282MB0946.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.38; Fri, 14 Jun 2024 02:29:56 +0000 Received: from MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM ([fe80::2611:f10b:4168:af8a]) by MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM ([fe80::2611:f10b:4168:af8a%2]) with mapi id 15.20.7677.024; Fri, 14 Jun 2024 02:29:56 +0000 From: Robin shi To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH] rtp enc/dec update for vvc Thread-Index: AQHavgF6dxVuDjKtr0qYh++Vyj3gfLHGiRFagAAARZo= Date: Fri, 14 Jun 2024 02:29:56 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [khtVVwbXA1wOc65q5PJzfRddJZ1SQCHa] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MEYP282MB1592:EE_|ME3P282MB0946:EE_ x-ms-office365-filtering-correlation-id: 107a38b7-b647-401f-c698-08dc8c19e173 x-microsoft-antispam: BCL:0; ARA:14566002|9400799019|461199023|3412199020|4302099008|3430499029|102099029|440099023|1602099007|56899028; x-microsoft-antispam-message-info: 5IMgEMF5R4bDWULieXuQ69IRC0k92Ace2Ly+vUKyh4FU8M3j1MUjmTE1CGwOm8qcW1vLgdSZQcEI0niAQAmY8mEAtdWfHjI+qgSI8IeErhCuKweV+sdDEZMhnPdtsThGPiy2vcwnpm8OAxJ2zM7cx1Py+0ddL4VkCv/f0hgOPdStXqMxeW5DbQc6Nfp950Q6beWAycZzBPHg7ePbpQ+PV7EL5ylw55EgPT+Nu0vf0OcwpYcR8pb4OfiF1T/9ejh5aaggy7CbVzsadjN1He0+Y6uxK+PlBZL2WcX/mm0Q2mR/pP/wgNY/c4UKsz6URHy00A57p253E3F/yvkxa4FcA5j30v/KyQys0ynTRcVYdgJqGbtpLpM58XxA1dI1bO7zLDjbC6hia4j4VnOO4UlJHauW9k4j3NRbk2/QFX553Cji/onfIOLpNnvwCqHXGGAqECMZEzdvaCcxaWASHzppJI98zTzPdr/O3kZOH8PY+eEALnQ+yXVVPrERdLWwlRrn4ZwQ0HlWCjrevpZ1iyHyHnNIieJE+HPej28R1yR6VT9o9Ge/Tf1FedcKHCKWQewKCZxebAth3SJRRVdxricXvVA1LKErN6q4fqfys+z3ubDwskeEDrsSn8wRr8vPmO9x2pi4qLpTsjA8AyJae1uIj6k2q00DndfxPAFBvYJ1wluUL7acs/LFgKdq6OKAex2VVWXWq7MSJzq+SssNJycZd05nQ6pMdcdyqdeEYy6D323MXEkcaExV0EwMeoW45XAnih1BRCfHTtJsrzJym2B7Gw== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?R0VzYzRhYklzS0x1ZDRKWklMQmkrbzREODE2RC9Ycko5VE9xa1RhMVN5SEFY?= =?gb2312?B?Z2ErblFkZjBBdVMxRVkzQkwrNGRVaDBNNDJEWkFPWmNJb0gyblhOWjI3OUsy?= =?gb2312?B?dE9JQnJMS0EveGdWeTFRK2dSZHdvRFZVakNLb2RXWjYyNlhCdUM0Nkk3cURI?= =?gb2312?B?QkRpWlZ2cE1rdnQyQ1Q3VWlmZC8rbzZZYnBmdTR4TVovUVovL3NKQ1FoamJX?= =?gb2312?B?NnMybHo1UjVxRTN5Ty83dW1XYkNYZXBQazBzTjFFOEV5ODZiU1JweWRQMmE1?= =?gb2312?B?Y3pQcXBtRDdtSEpJQUp1T1lxOC9oOGdlS2VwTDBRQ1Q4RjhIVHV5K3JLYXVV?= =?gb2312?B?Z1djSmFaL1p1bFpmT1YyM3JRVnIrT1NWZ1E2cE9sMnBVR3JMWCt1anl0eU9N?= =?gb2312?B?NjlJQngwK0dEVzFheXpZUUZCL1Y1YjRPQjdHd3hFdGpZbkd4MHp4L3AxYVdU?= =?gb2312?B?bXNKblhJbG1DbzNaMjUwME9nWFY1WCtBeU5CdnpsdkszWWRhbzc5dlVZYXdE?= =?gb2312?B?aWZHbEtKMTNQbTVhOGQwVEVuODJheXRZeU5TWDd4aGZyeVZOV1Q1WURFL1Nz?= =?gb2312?B?Z3FkOEswYTJxTHZCUEtvMDlFbG5oNk1RdkZuMW81VGJabmh6YnIrQXhqTG91?= =?gb2312?B?Y0NoOU9OLzZ6M1Z0d094T0ZneG5RYTNlakhoUU5Nd0hNcEs3QkJKbExzdm1v?= =?gb2312?B?R0ZLVkNBbVVNWm15TjI4Z3prcEJ5Zm82Z21maitIdm5JVHZJTmMzRk95SEhJ?= =?gb2312?B?SjdESXMwZFppTkl4QjNlUmZMM0UreGNjRmNpS3VHUVdGZFc0OVd1QkYrRk55?= =?gb2312?B?SGs3eE4wRm56OERwVjRpVVgwTW9uaHBZdkJ1S1BpMVp5ci93Yk5vWjBTQXhp?= =?gb2312?B?U1hTNkxEMWR4enp0ZWVIeGlxRmJiRU5EaEp6ZjRXVWVUS0VMc3ZYK2tjQWdr?= =?gb2312?B?TUU5bTNNR3JiWXo3L1BtSThMakhORlpybDJHNDgxQzhyM01HOG1Vblo1QWgw?= =?gb2312?B?M0h5UVRCVGVkcytXeTFRMEgwUjBzUjg2RHJVMGtRT2VlYW9tdzc4UGMwdUtC?= =?gb2312?B?amZHNkdqeG15aTgwa2Fxd2pwVUVpbTBEekNnZ3NDZ3c4em1nVFc1NEpjMjVs?= =?gb2312?B?YXRoU0tPdk05cng0SWpLQ2RabklHRERRQ2FPTXhzMFIzNUFEcmpBRW9nM2JQ?= =?gb2312?B?V2xkV29TUThneVBlYWtuSDRGMnFZU043aHRZemg2ZURoV2cwS0JzL2VVbCt0?= =?gb2312?B?WGRsdTVISE1tazZEZVVvMi8wZ0RGR0Jsd01YWEwvam1QTVpSRkRYemFsM3VT?= =?gb2312?B?eGdkNDczV3lFU1dTdjlHZWhXUmNVOEpKenN0RGNIdk53K1JkZmE1L1JZSG96?= =?gb2312?B?VnhxRjR5TTFBV0ZZdlBLQUxmUGJZeFUwYUJjTTNNb2I0OCtzbGlFZkl5b25V?= =?gb2312?B?L2NvZHJYTnVwVm5VZ3BLY09pelhVSXpyd3lGVkRQWC9Xc3pjeTFyRHVaUWk2?= =?gb2312?B?WnpVVm4zQm5mdVVRa2paemlYNzdvVTZVQUlUejBWaFpjLzFKdjVObDQ2OWN2?= =?gb2312?B?bmc0Ny9zbjVpTklCYTJZZUprdDhTVGx3K0hmQ1krVEc4MUtrbEZaS3pmSzJM?= =?gb2312?B?NldaaXZIcXcvK3luRTFjWEVWcW52RGc9PQ==?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-746f3.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 107a38b7-b647-401f-c698-08dc8c19e173 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2024 02:29:56.3942 (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: ME3P282MB0946 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] rtp enc/dec update for vvc X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: U2lnbmVkLW9mZi1ieTogZnRhZnQyMDAwIDxmdGFmdDIwMDBAbXNuLmNvbT4NCi0tLQ0KICAuZ2l0 aWdub3JlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KICBjb25maWd1cmUgICAgICAgICAg ICAgICAgICAgICAgfCAgIDQgKw0KICBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgICAgICAgfCAg IDEgKw0KICBsaWJhdmNvZGVjL2FsbGNvZGVjcy5jICAgICAgICAgfCAgIDEgKw0KICBsaWJhdmNv ZGVjL2xpYnZ2ZW5jLmMgICAgICAgICAgfCA1NjYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrDQogIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICAgICAgICB8ICAgMSArDQogIGxpYmF2 Zm9ybWF0L3J0cGRlYy5jICAgICAgICAgICB8ICAgMSArDQogIGxpYmF2Zm9ybWF0L3J0cGRlY19m b3JtYXRzLmggICB8ICAgMSArDQogIGxpYmF2Zm9ybWF0L3J0cGRlY192dmMuYyAgICAgICB8IDM0 OSArKysrKysrKysrKysrKysrKysrKw0KICBsaWJhdmZvcm1hdC9ydHBlbmMuYyAgICAgICAgICAg fCAgIDIgKw0KICBsaWJhdmZvcm1hdC9ydHBlbmNfaDI2NF9oZXZjLmMgfCAgOTQgKysrKystDQog IGxpYmF2Zm9ybWF0L3NkcC5jICAgICAgICAgICAgICB8IDE4MiArKysrKysrKysrKw0KICAxMiBm aWxlcyBjaGFuZ2VkLCAxMTk3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pDQogIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2xpYnZ2ZW5jLmMNCiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYmF2Zm9ybWF0L3J0cGRlY192dmMuYw0KDQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5n aXRpZ25vcmUNCmluZGV4IGU4MTBkMTExMDcuLmQ3NDQxYTZjZGMgMTAwNjQ0DQotLS0gYS8uZ2l0 aWdub3JlDQorKysgYi8uZ2l0aWdub3JlDQpAQCAtNDEsMyArNDEsNCBAQA0KICAvc3JjDQogIC9t YXBmaWxlDQogIC90b29scy9weXRob24vX19weWNhY2hlX18vDQorL2J1aWxkDQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUNCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUNCmlu ZGV4IDgzMjg0NDI3ZGYuLmQzMzE2ODhlYjQgMTAwNzU1DQotLS0gYS9jb25maWd1cmUNCisrKyBi L2NvbmZpZ3VyZQ0KQEAgLTI5Niw2ICsyOTYsNyBAQCBFeHRlcm5hbCBsaWJyYXJ5IHN1cHBvcnQ6 DQogICAgLS1lbmFibGUtbGlid2VicCAgICAgICAgIGVuYWJsZSBXZWJQIGVuY29kaW5nIHZpYSBs aWJ3ZWJwIFtub10NCiAgICAtLWVuYWJsZS1saWJ4MjY0ICAgICAgICAgZW5hYmxlIEguMjY0IGVu Y29kaW5nIHZpYSB4MjY0IFtub10NCiAgICAtLWVuYWJsZS1saWJ4MjY1ICAgICAgICAgZW5hYmxl IEhFVkMgZW5jb2RpbmcgdmlhIHgyNjUgW25vXQ0KKyAgLS1lbmFibGUtbGlidnZlbmMgICAgICAg IGVuYWJsZSBILjI2Ni9WVkMgZW5jb2RpbmcgdmlhIHZ2ZW5jIFtub10NCiAgICAtLWVuYWJsZS1s aWJ4ZXZlICAgICAgICAgZW5hYmxlIEVWQyBlbmNvZGluZyB2aWEgbGlieGV2ZSBbbm9dDQogICAg LS1lbmFibGUtbGlieGV2ZCAgICAgICAgIGVuYWJsZSBFVkMgZGVjb2RpbmcgdmlhIGxpYnhldmQg W25vXQ0KICAgIC0tZW5hYmxlLWxpYnhhdnMgICAgICAgICBlbmFibGUgQVZTIGVuY29kaW5nIHZp YSB4YXZzIFtub10NCkBAIC0xODY3LDYgKzE4NjgsNyBAQCBFWFRFUk5BTF9MSUJSQVJZX0dQTF9M SVNUPSINCiAgICAgIGxpYnZpZHN0YWINCiAgICAgIGxpYngyNjQNCiAgICAgIGxpYngyNjUNCisg ICAgbGlidnZlbmMNCiAgICAgIGxpYnhhdnMNCiAgICAgIGxpYnhhdnMyDQogICAgICBsaWJ4dmlk DQpAQCAtMzU2OSw2ICszNTcxLDcgQEAgbGlieDI2NHJnYl9lbmNvZGVyX2RlcHM9ImxpYngyNjQi DQogIGxpYngyNjRyZ2JfZW5jb2Rlcl9zZWxlY3Q9ImxpYngyNjRfZW5jb2RlciINCiAgbGlieDI2 NV9lbmNvZGVyX2RlcHM9ImxpYngyNjUiDQogIGxpYngyNjVfZW5jb2Rlcl9zZWxlY3Q9ImF0c2Nf YTUzIGRvdmlfcnB1ZW5jIg0KK2xpYnZ2ZW5jX2VuY29kZXJfZGVwcz0ibGlidnZlbmMiDQogIGxp YnhhdnNfZW5jb2Rlcl9kZXBzPSJsaWJ4YXZzIg0KICBsaWJ4YXZzMl9lbmNvZGVyX2RlcHM9Imxp YnhhdnMyIg0KICBsaWJ4ZXZkX2RlY29kZXJfZGVwcz0ibGlieGV2ZCINCkBAIC03MDQxLDYgKzcw NDQsNyBAQCBlbmFibGVkIGxpYngyNjQgICAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZw0K bGlieDI2NCB4MjY0ICJzdGRpbnQuaCB4MjY0LmgiIHgNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGVja19jcHBfY29uZGl0aW9uIGxpYngyNjIgeDI2NC5oDQoiWDI2NF9NUEVHMiIN CiAgZW5hYmxlZCBsaWJ4MjY1ICAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlieDI2 NSB4MjY1IHgyNjUuaA0KeDI2NV9hcGlfZ2V0ICYmDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVxdWlyZV9jcHBfY29uZGl0aW9uIGxpYngyNjUgeDI2NS5oDQoiWDI2NV9CVUlMRCA+ PSA4OSINCitlbmFibGVkIGxpYnZ2ZW5jICAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBs aWJ2dmVuYyAibGlidnZlbmMgPj0NCjEuNi4xIiAidnZlbmMvdnZlbmMuaCIgdnZlbmNfZ2V0X3Zl cnNpb24NCiAgZW5hYmxlZCBsaWJ4YXZzICAgICAgICAgICAmJiByZXF1aXJlIGxpYnhhdnMgInN0 ZGludC5oIHhhdnMuaCINCnhhdnNfZW5jb2Rlcl9lbmNvZGUgIi1seGF2cyAkcHRocmVhZHNfZXh0 cmFsaWJzICRsaWJtX2V4dHJhbGlicyINCiAgZW5hYmxlZCBsaWJ4YXZzMiAgICAgICAgICAmJiBy ZXF1aXJlX3BrZ19jb25maWcgbGlieGF2czIgInhhdnMyID49DQoxLjMuMCIgInN0ZGludC5oIHhh dnMyLmgiIHhhdnMyX2FwaV9nZXQNCiAgZW5hYmxlZCBsaWJ4ZXZkICAgICAgICAgICAmJiByZXF1 aXJlX3BrZ19jb25maWcgbGlieGV2ZCAieGV2ZCA+PQ0KMC40LjEiICJ4ZXZkLmgiIHhldmRfZGVj b2RlDQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZp bGUNCmluZGV4IDFhNDQzNTI5MDYuLjJlOThlMWM3MmYgMTAwNjQ0DQotLS0gYS9saWJhdmNvZGVj L01ha2VmaWxlDQorKysgYi9saWJhdmNvZGVjL01ha2VmaWxlDQpAQCAtMTE1NSw2ICsxMTU1LDcg QEAgT0JKUy0kKENPTkZJR19MSUJXRUJQX0FOSU1fRU5DT0RFUikgICAgICAgKz0NCmxpYndlYnBl bmNfY29tbW9uLm8gbGlid2VicGVuY19hbmltDQogIE9CSlMtJChDT05GSUdfTElCWDI2Ml9FTkNP REVSKSAgICAgICAgICAgICs9IGxpYngyNjQubw0KICBPQkpTLSQoQ09ORklHX0xJQlgyNjRfRU5D T0RFUikgICAgICAgICAgICArPSBsaWJ4MjY0Lm8NCiAgT0JKUy0kKENPTkZJR19MSUJYMjY1X0VO Q09ERVIpICAgICAgICAgICAgKz0gbGlieDI2NS5vDQorT0JKUy0kKENPTkZJR19MSUJWVkVOQ19F TkNPREVSKSAgICAgICAgICAgKz0gbGlidnZlbmMubw0KICBPQkpTLSQoQ09ORklHX0xJQlhBVlNf RU5DT0RFUikgICAgICAgICAgICArPSBsaWJ4YXZzLm8NCiAgT0JKUy0kKENPTkZJR19MSUJYQVZT Ml9FTkNPREVSKSAgICAgICAgICAgKz0gbGlieGF2czIubw0KICBPQkpTLSQoQ09ORklHX0xJQlhF VkRfREVDT0RFUikgICAgICAgICAgICArPSBsaWJ4ZXZkLm8NCmRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL2FsbGNvZGVjcy5jIGIvbGliYXZjb2RlYy9hbGxjb2RlY3MuYw0KaW5kZXggYjEwMmE4MDY5 ZS4uNzY1MGFiZWJlNCAxMDA2NDQNCi0tLSBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMNCisrKyBi L2xpYmF2Y29kZWMvYWxsY29kZWNzLmMNCkBAIC04MDcsNiArODA3LDcgQEAgZXh0ZXJuIGNvbnN0 IEZGQ29kZWMgZmZfbGlieDI2Ml9lbmNvZGVyOw0KICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9s aWJ4MjY0X2VuY29kZXI7DQogIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYngyNjRyZ2JfZW5j b2RlcjsNCiAgZXh0ZXJuIEZGQ29kZWMgZmZfbGlieDI2NV9lbmNvZGVyOw0KK2V4dGVybiBjb25z dCBGRkNvZGVjIGZmX2xpYnZ2ZW5jX2VuY29kZXI7DQogIGV4dGVybiBjb25zdCBGRkNvZGVjIGZm X2xpYnhldmVfZW5jb2RlcjsNCiAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlieGV2ZF9kZWNv ZGVyOw0KICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ4YXZzX2VuY29kZXI7DQpkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy9saWJ2dmVuYy5jIGIvbGliYXZjb2RlYy9saWJ2dmVuYy5jDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uNzhkNGY1NWEyYQ0KLS0tIC9kZXYv bnVsbA0KKysrIGIvbGliYXZjb2RlYy9saWJ2dmVuYy5jDQpAQCAtMCwwICsxLDU2NiBAQA0KKy8q DQorICogSC4yNjYgZW5jb2RpbmcgdXNpbmcgdGhlIFZWZW5DIGxpYnJhcnkNCisgKg0KKyAqIENv cHlyaWdodCAoQykgMjAyMiwgVGhvbWFzIFNpZWRlbA0KKyAqDQorICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLg0KKyAqDQorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisg Kg0KKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUN CisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BDQowMjExMC0xMzAxIFVTQQ0KKyAqLw0KKw0KKyNpbmNsdWRlICJjb25maWdfY29t cG9uZW50cy5oIg0KKw0KKyNpbmNsdWRlIDx2dmVuYy92dmVuYy5oPg0KKyNpbmNsdWRlIDx2dmVu Yy92dmVuY0NmZy5oPg0KKyNpbmNsdWRlIDx2dmVuYy92ZXJzaW9uLmg+DQorDQorI2luY2x1ZGUg ImF2Y29kZWMuaCINCisjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCINCisjaW5jbHVkZSAiZW5j b2RlLmgiDQorI2luY2x1ZGUgImludGVybmFsLmgiDQorI2luY2x1ZGUgInBhY2tldF9pbnRlcm5h bC5oIg0KKyNpbmNsdWRlICJwcm9maWxlcy5oIg0KKw0KKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1 dGlsLmgiDQorI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCINCisjaW5jbHVkZSAibGliYXZ1dGls L3BpeGRlc2MuaCINCisjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIg0KKyNpbmNsdWRlICJsaWJh dnV0aWwvY29tbW9uLmgiDQorI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIg0KKyNpbmNs dWRlICJsaWJhdnV0aWwvZnJhbWUuaCINCisjaW5jbHVkZSAibGliYXZ1dGlsL2xvZy5oIg0KKw0K K3R5cGVkZWYgc3RydWN0IFZWZW5DT3B0aW9ucyB7DQorICAgIGludCBwcmVzZXQ7ICAgICAgICAg ICAgICAgICAvLyBwcmVzZXQgMDogZmFzdGVyICA0OiBzbG93ZXINCisgICAgaW50IHFwOyAgICAg ICAgICAgICAgICAgICAgIC8vIHF1YW50aXphdGlvbiBwYXJhbWV0ZXIgMC02Mw0KKyAgICBpbnQg c3ViamVjdGl2ZU9wdGltaXphdGlvbjsgLy8gcGVyY2VwdHVhbGx5IG1vdGl2YXRlZCBRUA0KYWRh cHRhdGlvbiwgWFBTTlIgYmFzZWQNCisgICAgaW50IGZsYWc4Yml0Q29kaW5nOyAgICAgICAgIC8v IGVuY29kZSBpbiA4Yml0IGluc3RlYWQgb2YgMTBiaXQNCisgICAgaW50IGludHJhUmVmcmVzaFNl YzsgICAgICAgIC8vIGludHJhIHBlcmlvZC9yZWZyZXNoIGluIHNlY29uZHMNCisgICAgaW50IGxl dmVsSWRjOyAgICAgICAgICAgICAgIC8vIHZ2YyBsZXZlbF9pZGMNCisgICAgaW50IHRpZXI7ICAg ICAgICAgICAgICAgICAgIC8vIHZ2YyB0aWVyDQorICAgIEFWRGljdGlvbmFyeSAqdnZlbmNfb3B0 czsNCit9IFZWZW5DT3B0aW9uczsNCisNCit0eXBlZGVmIHN0cnVjdCBWVmVuQ0NvbnRleHQgew0K KyAgICBBVkNsYXNzICAgICAgICAgKmF2X2NsYXNzOw0KKyAgICBWVmVuQ09wdGlvbnMgICAgb3B0 aW9uczsgICAgICAvLyBlbmNvZGVyIG9wdGlvbnMNCisgICAgdnZlbmNFbmNvZGVyICAgICp2dmVu Y0VuYzsNCisgICAgdnZlbmNBY2Nlc3NVbml0ICpwQVU7DQorICAgIGJvb2wgICAgICAgICAgICBl bmNvZGVEb25lOw0KK30gVlZlbkNDb250ZXh0Ow0KKw0KKw0KK3N0YXRpYyBhdl9jb2xkIHZvaWQg ZmZfdnZlbmNfbG9nX2NhbGxiYWNrKHZvaWQgKmN0eCwgaW50IGxldmVsLA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBh cmdzKQ0KK3sNCisgICAgdnZlbmNfY29uZmlnIHBhcmFtczsNCisgICAgdnZlbmNFbmNvZGVyICp2 dmVuY0VuYyA9ICh2dmVuY0VuY29kZXIgKiljdHg7DQorICAgIGlmICh2dmVuY0VuYyl7DQorICAg ICAgICB2dmVuY19jb25maWdfZGVmYXVsdCgmcGFyYW1zKTsNCisgICAgICAgIHZ2ZW5jX2dldF9j b25maWcodnZlbmNFbmMsICZwYXJhbXMpOw0KKyAgICAgICAgaWYgKChpbnQpcGFyYW1zLm1fdmVy Ym9zaXR5ID49IGxldmVsKQ0KKyAgICAgICAgICAgIHZmcHJpbnRmKGxldmVsID09IDEgPyBzdGRl cnIgOiBzdGRvdXQsIGZtdCwgYXJncyk7DQorICAgIH0NCit9DQorDQorc3RhdGljIHZvaWQgZmZf dnZlbmNfc2V0X3ZlcmJvc2l0b3J5KHZ2ZW5jX2NvbmZpZyogcGFyYW1zICkNCit7DQorICAgIHBh cmFtcy0+bV92ZXJib3NpdHkgPSBWVkVOQ19WRVJCT1NFOw0KKyAgICBpZiAoYXZfbG9nX2dldF9s ZXZlbCgpID49IEFWX0xPR19ERUJVRykNCisgICAgICAgIHBhcmFtcy0+bV92ZXJib3NpdHkgPSBW VkVOQ19ERVRBSUxTOw0KKyAgICBlbHNlIGlmIChhdl9sb2dfZ2V0X2xldmVsKCkgPj0gQVZfTE9H X1ZFUkJPU0UpDQorICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfTk9USUNFOyAg ICAgIC8vIG91dHB1dCBwZXIgcGljdHVyZSBpbmZvDQorICAgIGVsc2UgaWYgKGF2X2xvZ19nZXRf bGV2ZWwoKSA+PSBBVl9MT0dfSU5GTykNCisgICAgICAgIHBhcmFtcy0+bV92ZXJib3NpdHkgPSBW VkVOQ19XQVJOSU5HOyAgICAgLy8gZmZtcGVnIGRlZmF1bHQNCmZmbXBlZyBsb2dsZXZlbA0KKyAg ICBlbHNlDQorICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfU0lMRU5UOw0KK30N CisNCitzdGF0aWMgaW50IGZmX3Z2ZW5jX3NldF9waWNfZm9ybWF0KEFWQ29kZWNDb250ZXh0ICph dmN0eCwgdnZlbmNfY29uZmlnKg0KcGFyYW1zICkNCit7DQorICAgIFZWZW5DQ29udGV4dCAqcyA9 KFZWZW5DQ29udGV4dCAqKSBhdmN0eC0+cHJpdl9kYXRhOw0KKw0KKyAgICBwYXJhbXMtPm1faW50 ZXJuQ2hyb21hRm9ybWF0ID0gVlZFTkNfQ0hST01BXzQyMDsNCisgICAgcGFyYW1zLT5tX2lucHV0 Qml0RGVwdGhbMF0gICA9IDEwOw0KKw0KKyAgICBpZiAoYXZjdHgtPnBpeF9mbXQgIT0gQVZfUElY X0ZNVF9ZVVY0MjBQMTBMRSl7DQorICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwN CisgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzLCBjdXJyZW50bHkg b25seSBzdXBwb3J0IGZvcg0KeXV2NDIwcDEwbGVcbiIsDQorICAgICAgICAgICAgICAgIGF2X2dl dF9waXhfZm10X25hbWUoYXZjdHgtPnBpeF9mbXQpKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9S KEVJTlZBTCk7DQorICAgIH0NCisNCisgICAgaWYgKHMtPm9wdGlvbnMuZmxhZzhiaXRDb2Rpbmcp IHsNCisjaWYgVlZFTkNfVkVSU0lPTl9NQUpPUiA+IDEgfHwgKFZWRU5DX1ZFUlNJT05fTUFKT1Ig PT0gMSAmJg0KVlZFTkNfVkVSU0lPTl9NSU5PUiA+IDkpIHx8IChWVkVOQ19WRVJTSU9OX01BSk9S ID09IDEgJiYNClZWRU5DX1ZFUlNJT05fTUlOT1IgPj0gOSAmJiBWVkVOQ19WRVJTSU9OX1BBVENI ID49IDEpDQorICAgICAgICAgICAgcGFyYW1zLT5tX2ludGVybmFsQml0RGVwdGhbMF0gPSA4Ow0K KyNlbHNlDQorICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsDQorICAgICAg ICAgICAgICAgICJ1bnN1cHBvcnRlZCA4Yml0IGNvZGluZyBtb2RlLiA4Yml0IGNvZGluZyBuZWVk cyBhdA0KbGVhc3QgdnZlbmMgdmVyc2lvbiA+PSAxLjkuMSAiDQorICAgICAgICAgICAgICAgICIo Y3VycmVudCB2ZXJzaW9uICVzKVxuIiwgdnZlbmNfZ2V0X3ZlcnNpb24oKSApOw0KKyAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQorI2VuZGlmDQorICAgIH0NCisgICAgcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGZmX3Z2ZW5jX3NldF9jb2xvcl9mb3JtYXQoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LA0KdnZlbmNfY29uZmlnKiBwYXJhbXMgKQ0KK3sNCisgICAgaWYgKGF2 Y3R4LT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEKQ0KKyAgICAgICAg cGFyYW1zLT5tX2NvbG91clByaW1hcmllcyA9IChpbnQpIGF2Y3R4LT5jb2xvcl9wcmltYXJpZXM7 DQorICAgIGlmIChhdmN0eC0+Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJRUQpDQor ICAgICAgICBwYXJhbXMtPm1fbWF0cml4Q29lZmZpY2llbnRzID0gKGludCkgYXZjdHgtPmNvbG9y c3BhY2U7DQorICAgIGlmIChhdmN0eC0+Y29sb3JfdHJjICE9IEFWQ09MX1RSQ19VTlNQRUNJRklF RCkgew0KKyAgICAgICAgcGFyYW1zLT5tX3RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gKGludCkg YXZjdHgtPmNvbG9yX3RyYzsNCisNCisgICAgICAgIGlmIChhdmN0eC0+Y29sb3JfdHJjID09IEFW Q09MX1RSQ19TTVBURTIwODQpDQorICAgICAgICAgICAgcGFyYW1zLT5tX0hkck1vZGUgPSAoYXZj dHgtPmNvbG9yX3ByaW1hcmllcyA9PQ0KQVZDT0xfUFJJX0JUMjAyMCkgPw0KKyAgICAgICAgICAg ICAgICBWVkVOQ19IRFJfUFFfQlQyMDIwIDogVlZFTkNfSERSX1BROw0KKyAgICAgICAgZWxzZSBp ZiAoYXZjdHgtPmNvbG9yX3RyYyA9PSBBVkNPTF9UUkNfQlQyMDIwXzEwDQorICAgICAgICAgICAg ICAgICB8fCBhdmN0eC0+Y29sb3JfdHJjID09IEFWQ09MX1RSQ19BUklCX1NURF9CNjcpDQorICAg ICAgICAgICAgcGFyYW1zLT5tX0hkck1vZGUgPSAoYXZjdHgtPmNvbG9yX3RyYyA9PSBBVkNPTF9U UkNfQlQyMDIwXzEwIHx8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmN0eC0+ Y29sb3JfcHJpbWFyaWVzID09DQpBVkNPTF9QUklfQlQyMDIwIHx8DQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhdmN0eC0+Y29sb3JzcGFjZSA9PQ0KQVZDT0xfU1BDX0JUMjAyMF9O Q0wgfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5jb2xvcnNwYWNl ID09IEFWQ09MX1NQQ19CVDIwMjBfQ0wpID8NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVlZFTkNfSERSX0hMR19CVDIwMjAgOiBWVkVOQ19IRFJfSExHOw0KKyAgICB9DQorDQorICAg IGlmIChwYXJhbXMtPm1fSGRyTW9kZSA9PSBWVkVOQ19IRFJfT0ZGDQorICAgICAgICAmJiAoYXZj dHgtPmNvbG9yX3ByaW1hcmllcyAhPSBBVkNPTF9QUklfVU5TUEVDSUZJRUQNCisgICAgICAgICAg ICB8fCBhdmN0eC0+Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJRUQpKSB7DQorICAg ICAgICBwYXJhbXMtPm1fdnVpUGFyYW1ldGVyc1ByZXNlbnQgPSAxOw0KKyAgICAgICAgcGFyYW1z LT5tX2NvbG91ckRlc2NyaXB0aW9uUHJlc2VudCA9IHRydWU7DQorICAgIH0NCit9DQorDQorc3Rh dGljIHZvaWQgZmZfdnZlbmNfc2V0X2ZyYW1lcmF0ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZ2 ZW5jX2NvbmZpZyoNCnBhcmFtcyApDQorew0KKyAgICBwYXJhbXMtPm1fRnJhbWVSYXRlID0gYXZj dHgtPnRpbWVfYmFzZS5kZW47DQorICAgIHBhcmFtcy0+bV9GcmFtZVNjYWxlID0gYXZjdHgtPnRp bWVfYmFzZS5udW07DQorDQorRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUw0KKw0KKyNp ZiBGRl9BUElfVElDS1NfUEVSX0ZSQU1FDQorICAgIGlmIChhdmN0eC0+dGlja3NfcGVyX2ZyYW1l ID09IDEpIHsNCisjZW5kaWYNCisgICAgICAgIHBhcmFtcy0+bV9UaWNrc1BlclNlY29uZCA9IC0x OyAgIC8vIGF1dG8gbW9kZSBmb3IgdGlja3MgcGVyDQpmcmFtZSA9IDENCisjaWYgRkZfQVBJX1RJ Q0tTX1BFUl9GUkFNRQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcGFyYW1zLT5tX1RpY2tzUGVy U2Vjb25kID0NCisgICAgICAgICAgICBjZWlsKChhdmN0eC0+dGltZV9iYXNlLmRlbiAvIChkb3Vi bGUpIGF2Y3R4LT50aW1lX2Jhc2UubnVtKSAqDQorICAgICAgICAgICAgICAgICAoZG91YmxlKSBh dmN0eC0+dGlja3NfcGVyX2ZyYW1lKTsNCisgICAgfQ0KKyNlbmRpZg0KK0ZGX0VOQUJMRV9ERVBS RUNBVElPTl9XQVJOSU5HUw0KK30NCisNCitzdGF0aWMgaW50IGZmX3Z2ZW5jX3BhcnNlX3Z2ZW5j X3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsDQp2dmVuY19jb25maWcqIHBhcmFtcywgY2hh ciogc3RhdHNmaWxlICkNCit7DQorICAgIGludCBwYXJzZV9yZXQsIHJldDsNCisgICAgVlZlbkND b250ZXh0ICpzOw0KKyAgICBBVkRpY3Rpb25hcnlFbnRyeSAqZW4gPSBOVUxMOw0KKyAgICBzID0o VlZlbkNDb250ZXh0ICopIGF2Y3R4LT5wcml2X2RhdGE7DQorICAgIHJldCA9IDA7DQorDQorICAg IHdoaWxlICgoZW4gPSBhdl9kaWN0X2dldChzLT5vcHRpb25zLnZ2ZW5jX29wdHMsICIiLCBlbiwN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX0RJQ1RfSUdOT1JFX1NVRkZJWCkpKSB7 DQorICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgInZ2ZW5jX3NldF9wYXJhbTog JyVzOiVzJ1xuIiwgZW4tPmtleSwNCisgICAgICAgICAgICAgICBlbi0+dmFsdWUpOw0KKyAgICAg ICAgcGFyc2VfcmV0ID0gdnZlbmNfc2V0X3BhcmFtKHBhcmFtcywgZW4tPmtleSwgZW4tPnZhbHVl KTsNCisgICAgICAgIHN3aXRjaCAocGFyc2VfcmV0KSB7DQorICAgICAgICBjYXNlIFZWRU5DX1BB UkFNX0JBRF9OQU1FOg0KKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAi VW5rbm93biB2dmVuYyBvcHRpb246ICVzLlxuIiwNCisgICAgICAgICAgICAgICAgICAgZW4tPmtl eSk7DQorICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOw0KKyAgICAgICAgICAgIGJy ZWFrOw0KKyAgICAgICAgY2FzZSBWVkVOQ19QQVJBTV9CQURfVkFMVUU6DQorICAgICAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsDQorICAgICAgICAgICAgICAgICAgICJJbnZhbGlk IHZ2ZW5jIHZhbHVlIGZvciAlczogJXMuXG4iLCBlbi0+a2V5LA0KZW4tPnZhbHVlKTsNCisgICAg ICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAg ICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKw0KKyAgICAg ICAgaWYgKG1lbWNtcChlbi0+a2V5LCAicmNzdGF0c2ZpbGUiLCAxMSkgPT0gMCB8fA0KKyAgICAg ICAgICAgIG1lbWNtcChlbi0+a2V5LCAiUkNTdGF0c0ZpbGUiLCAxMSkgPT0gMCkgew0KKyAgICAg ICAgICAgIHN0cm5jcHkoc3RhdHNmaWxlLCBlbi0+dmFsdWUsIHN0cmxlbihzdGF0c2ZpbGUpKTsN CisgICAgICAgICAgICBzdGF0c2ZpbGVbc3RybGVuKHN0YXRzZmlsZSldID0gJ1wwJzsNCisgICAg ICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IGZmX3Z2 ZW5jX3NldF9yY19tb2RlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdnZlbmNfY29uZmlnKg0KcGFy YW1zKQ0KK3sNCisgICAgaWYgKHBhcmFtcy0+bV9SQ1Bhc3MgIT0gLTEgJiYgcGFyYW1zLT5tX1JD TnVtUGFzc2VzID09IDEpDQorICAgICAgICBwYXJhbXMtPm1fUkNOdW1QYXNzZXMgPSAyOyAgICAg ICAvKiBlbmFibGUgMnBhc3MgbW9kZSAqLw0KKw0KKyAgICBpZihhdmN0eC0+cmNfbWF4X3JhdGUp IHsNCisjaWYgVlZFTkNfVkVSU0lPTl9NQUpPUiA+IDEgfHwgKFZWRU5DX1ZFUlNJT05fTUFKT1Ig PT0gMSAmJg0KVlZFTkNfVkVSU0lPTl9NSU5PUiA+IDgpDQorICAgICAgICBwYXJhbXMtPm1fUkNN YXhCaXRyYXRlID0gYXZjdHgtPnJjX21heF9yYXRlOw0KKyNlbmRpZg0KKw0KKyNpZiBWVkVOQ19W RVJTSU9OX01BSk9SID09IDEgJiYgVlZFTkNfVkVSU0lPTl9NSU5PUiA8IDExDQorICAgICAgICAv KiByY19tYXhfcmF0ZSB3aXRob3V0IGEgYml0X3JhdGUgZW5hYmxlcyBjYXBwZWQgQ1FGIG1vZGUu DQorICAgICAgICAoUVAgKyBzdWJqLiBvcHRpbWl6YXRpb24gKyBtYXguIGJpdHJhdGUpICovDQor ICAgICAgICBpZighYXZjdHgtPmJpdF9yYXRlKSB7DQorICAgICAgICAgICAgYXZfbG9nKCBhdmN0 eCwgQVZfTE9HX0VSUk9SLA0KKyAgICAgICAgICAgICAgICAiQ2FwcGVkIENvbnN0YW50IFF1YWxp dHkgRmFjdG9yIG1vZGUgKGNhcHBlZCBDUUYpIG5lZWRzDQphdCAiDQorICAgICAgICAgICAgICAg ICJsZWFzdCB2dmVuYyB2ZXJzaW9uID49IDEuMTEuMCAoY3VycmVudCB2ZXJzaW9uICVzKVxuIiwN CisgICAgICAgICAgICAgICAgdnZlbmNfZ2V0X3ZlcnNpb24oKSk7DQorICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1IoRUlOVkFMKTsNCisgICAgICAgIH0NCisjZW5kaWYNCisgICAgfQ0KKyAgICBy ZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBmZl92dmVuY19pbml0X2V4dHJhZGF0YShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIFZWZW5DQ29udGV4dCAqcykNCit7DQorICAgIGludCByZXQ7DQor ICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dMT0JBTF9IRUFERVIpIHsNCisg ICAgICAgIHJldCA9IHZ2ZW5jX2dldF9oZWFkZXJzKHMtPnZ2ZW5jRW5jLCBzLT5wQVUpOw0KKyAg ICAgICAgaWYgKDAgIT0gcmV0KSB7DQorICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df RVJST1IsDQorICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IGhlYWRlcnMgKFNQUyxQUFMp IGZyb20gdnZjDQplbmNvZGVyKHZ2ZW5jKTogJXNcbiIsDQorICAgICAgICAgICAgICAgICAgIHZ2 ZW5jX2dldF9sYXN0X2Vycm9yKHMtPnZ2ZW5jRW5jKSk7DQorICAgICAgICAgICAgdnZlbmNfZW5j b2Rlcl9jbG9zZShzLT52dmVuY0VuYyk7DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO VkFMKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIGlmIChzLT5wQVUtPnBheWxvYWRVc2VkU2l6 ZSA8PSAwKSB7DQorICAgICAgICAgICAgdnZlbmNfZW5jb2Rlcl9jbG9zZShzLT52dmVuY0VuYyk7 DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7DQorICAgICAgICB9DQor DQorICAgICAgICBhdmN0eC0+ZXh0cmFkYXRhX3NpemUgPSBzLT5wQVUtPnBheWxvYWRVc2VkU2l6 ZTsNCisgICAgICAgIGF2Y3R4LT5leHRyYWRhdGEgPQ0KKyAgICAgICAgICAgIGF2X21hbGxvY3oo YXZjdHgtPmV4dHJhZGF0YV9zaXplICsNCkFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOw0K KyAgICAgICAgaWYgKCFhdmN0eC0+ZXh0cmFkYXRhKSB7DQorICAgICAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsDQorICAgICAgICAgICAgICAgICAgICJDYW5ub3QgYWxsb2NhdGUg VlZDIGhlYWRlciBvZiBzaXplICVkLlxuIiwNCisgICAgICAgICAgICAgICAgICAgYXZjdHgtPmV4 dHJhZGF0YV9zaXplKTsNCisgICAgICAgICAgICB2dmVuY19lbmNvZGVyX2Nsb3NlKHMtPnZ2ZW5j RW5jKTsNCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKyAgICAgICAgfQ0K Kw0KKyAgICAgICAgbWVtY3B5KGF2Y3R4LT5leHRyYWRhdGEsIHMtPnBBVS0+cGF5bG9hZCwgYXZj dHgtPmV4dHJhZGF0YV9zaXplKTsNCisgICAgICAgIG1lbXNldChhdmN0eC0+ZXh0cmFkYXRhICsg YXZjdHgtPmV4dHJhZGF0YV9zaXplLCAwLA0KKyAgICAgICAgICAgICAgIEFWX0lOUFVUX0JVRkZF Ul9QQURESU5HX1NJWkUpOw0KKyAgICB9DQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMg YXZfY29sZCBpbnQgZmZfdnZlbmNfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0K K3sNCisgICAgaW50IHJldDsNCisgICAgaW50IGZyYW1lcmF0ZSwgcXA7DQorICAgIFZWZW5DQ29u dGV4dCAqczsNCisgICAgdnZlbmNfY29uZmlnIHBhcmFtczsNCisgICAgdnZlbmNQcmVzZXRNb2Rl IHByZXNldDsNCisgICAgY2hhciBzdGF0c2ZpbGVbMTAyNF0gPSAidnZlbmMtcmNzdGF0cy5qc29u IjsNCisNCisgICAgcyA9IChWVmVuQ0NvbnRleHQgKikgYXZjdHgtPnByaXZfZGF0YTsNCisgICAg cXAgPSBzLT5vcHRpb25zLnFwOw0KKyAgICBwcmVzZXQgPSAodnZlbmNQcmVzZXRNb2RlKSBzLT5v cHRpb25zLnByZXNldDsNCisNCisgICAgaWYgKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdf SU5URVJMQUNFRF9EQ1QpIHsNCisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLA0K KyAgICAgICAgICAgICAgICJmZl92dmVuY19lbmNvZGVfaW5pdDo6aW5pdCgpIGludGVybGFjZWQg ZW5jb2Rpbmcgbm90DQpzdXBwb3J0ZWQgeWV0XG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOw0KKyAgICB9DQorDQorICAgIHZ2ZW5jX2NvbmZpZ19kZWZhdWx0KCZwYXJh bXMpOw0KKw0KKyAgICBmcmFtZXJhdGUgPSBhdmN0eC0+dGltZV9iYXNlLmRlbiAvIGF2Y3R4LT50 aW1lX2Jhc2UubnVtOw0KKyAgICB2dmVuY19pbml0X2RlZmF1bHQoJnBhcmFtcywgYXZjdHgtPndp ZHRoLCBhdmN0eC0+aGVpZ2h0LCBmcmFtZXJhdGUsDQorICAgICAgICAgICAgICAgICAgICAgICAo cXAgPj0gMCkgPyAwIDogYXZjdHgtPmJpdF9yYXRlLCAocXAgPCAwKSA/IDMyIDoNCnFwLCBwcmVz ZXQpOw0KKw0KKyAgICBmZl92dmVuY19zZXRfdmVyYm9zaXRvcnkoJnBhcmFtcyk7DQorDQorICAg IGlmIChhdmN0eC0+dGhyZWFkX2NvdW50ID4gMCkNCisgICAgICAgIHBhcmFtcy5tX251bVRocmVh ZHMgPSBhdmN0eC0+dGhyZWFkX2NvdW50Ow0KKw0KKyAgICAvKiBHT1Agc2V0dGluZ3MgKElEUi9D UkEpICovDQorICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0NMT1NFRF9HT1Ap DQorICAgICAgICBwYXJhbXMubV9EZWNvZGluZ1JlZnJlc2hUeXBlID0gVlZFTkNfRFJUX0lEUjsN CisNCisgICAgaWYgKGF2Y3R4LT5nb3Bfc2l6ZSA9PSAxKSB7DQorICAgICAgICBwYXJhbXMubV9H T1BTaXplID0gMTsNCisgICAgICAgIHBhcmFtcy5tX0ludHJhUGVyaW9kID0gMTsNCisgICAgfSBl bHNlIHsNCisgICAgICAgIHBhcmFtcy5tX0ludHJhUGVyaW9kU2VjID0gcy0+b3B0aW9ucy5pbnRy YVJlZnJlc2hTZWM7DQorICAgIH0NCisNCisgICAgcGFyYW1zLm1fQWNjZXNzVW5pdERlbGltaXRl ciA9IHRydWU7DQorICAgIHBhcmFtcy5tX1JDTnVtUGFzc2VzID0gMTsNCisNCisgICAgcGFyYW1z Lm1fdXNlUGVyY2VwdFFQQSA9IHMtPm9wdGlvbnMuc3ViamVjdGl2ZU9wdGltaXphdGlvbjsNCisg ICAgcGFyYW1zLm1fbGV2ZWwgICAgICAgICA9ICh2dmVuY0xldmVsKSBzLT5vcHRpb25zLmxldmVs SWRjOw0KKyAgICBwYXJhbXMubV9sZXZlbFRpZXIgICAgID0gKHZ2ZW5jVGllcikgcy0+b3B0aW9u cy50aWVyOw0KKw0KKyAgICBmZl92dmVuY19zZXRfZnJhbWVyYXRlKGF2Y3R4LCAmcGFyYW1zKTsN CisNCisgICAgcmV0ID0gZmZfdnZlbmNfc2V0X3BpY19mb3JtYXQoYXZjdHgsICZwYXJhbXMpOw0K KyAgICBpZiggcmV0ICE9IDAgKQ0KKyAgICAgICAgcmV0dXJuIHJldDsNCisNCisgICAgZmZfdnZl bmNfc2V0X2NvbG9yX2Zvcm1hdChhdmN0eCwgJnBhcmFtcyk7DQorDQorICAgIHJldCA9IGZmX3Z2 ZW5jX3BhcnNlX3Z2ZW5jX3BhcmFtcyhhdmN0eCwgJnBhcmFtcywgJnN0YXRzZmlsZVswXSk7DQor ICAgIGlmKCByZXQgIT0gMCApDQorICAgICAgICByZXR1cm4gcmV0Ow0KKw0KKw0KKyAgICByZXQg PSBmZl92dmVuY19zZXRfcmNfbW9kZShhdmN0eCwgJnBhcmFtcyk7DQorICAgIGlmKCByZXQgIT0g MCApDQorICAgICAgICByZXR1cm4gcmV0Ow0KKw0KKyAgICBzLT52dmVuY0VuYyA9IHZ2ZW5jX2Vu Y29kZXJfY3JlYXRlKCk7DQorICAgIGlmIChOVUxMID09IHMtPnZ2ZW5jRW5jKSB7DQorICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImNhbm5vdCBjcmVhdGUgdnZjIGVuY29kZXIg KHZ2ZW5jKVxuIik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKyAgICB9DQor DQorICAgIHZ2ZW5jX3NldF9tc2dfY2FsbGJhY2soJnBhcmFtcywgcy0+dnZlbmNFbmMsIGZmX3Z2 ZW5jX2xvZ19jYWxsYmFjayk7DQorICAgIHJldCA9IHZ2ZW5jX2VuY29kZXJfb3BlbihzLT52dmVu Y0VuYywgJnBhcmFtcyk7DQorICAgIGlmICgwICE9IHJldCkgew0KKyAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsICJjYW5ub3Qgb3BlbiB2dmMgZW5jb2RlciAodnZlbmMpOg0KJXNc biIsDQorICAgICAgICAgICAgICAgdnZlbmNfZ2V0X2xhc3RfZXJyb3Iocy0+dnZlbmNFbmMpKTsN CisgICAgICAgIHZ2ZW5jX2VuY29kZXJfY2xvc2Uocy0+dnZlbmNFbmMpOw0KKyAgICAgICAgcmV0 dXJuIEFWRVJST1IoRUlOVkFMKTsNCisgICAgfQ0KKw0KKyAgICB2dmVuY19nZXRfY29uZmlnKHMt PnZ2ZW5jRW5jLCAmcGFyYW1zKTsgICAgIC8qIGdldCB0aGUgYWRhcHRlZA0KY29uZmlnICovDQor DQorICAgIGF2X2xvZyhhdmN0eCwgYXZfbG9nX2dldF9sZXZlbCgpLCAidnZlbmMgdmVyc2lvbjog JXNcbiIsDQp2dmVuY19nZXRfdmVyc2lvbigpKTsNCisgICAgYXZfbG9nKGF2Y3R4LCBhdl9sb2df Z2V0X2xldmVsKCksICIlc1xuIiwNCisgICAgICAgICAgICB2dmVuY19nZXRfY29uZmlnX2FzX3N0 cmluZygmcGFyYW1zLCBwYXJhbXMubV92ZXJib3NpdHkpKTsNCisNCisgICAgaWYgKHBhcmFtcy5t X1JDTnVtUGFzc2VzID09IDIpIHsNCisgICAgICAgIHJldCA9IHZ2ZW5jX2luaXRfcGFzcyhzLT52 dmVuY0VuYywgcGFyYW1zLm1fUkNQYXNzIC0gMSwNCiZzdGF0c2ZpbGVbMF0pOw0KKyAgICAgICAg aWYgKDAgIT0gcmV0KSB7DQorICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is DQorICAgICAgICAgICAgICAgICAgICJjYW5ub3QgaW5pdCBwYXNzICVkIGZvciB2dmMgZW5jb2Rl ciAodnZlbmMpOiAlc1xuIiwNCisgICAgICAgICAgICAgICAgICAgcGFyYW1zLm1fUkNQYXNzLCB2 dmVuY19nZXRfbGFzdF9lcnJvcihzLT52dmVuY0VuYykpOw0KKyAgICAgICAgICAgIHZ2ZW5jX2Vu Y29kZXJfY2xvc2Uocy0+dnZlbmNFbmMpOw0KKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcy0+cEFVID0gdnZlbmNfYWNjZXNz VW5pdF9hbGxvYygpOw0KKyAgICBpZiggIXMtPnBBVSApew0KKyAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfRkFUQUwsICJjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBBVQ0KcGF5bG9hZFxu Iik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKyAgICB9DQorICAgIHZ2ZW5j X2FjY2Vzc1VuaXRfYWxsb2NfcGF5bG9hZChzLT5wQVUsIGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5o ZWlnaHQpOw0KKyAgICBpZiggIXMtPnBBVSApew0KKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9M T0dfRkFUQUwsICJjYW5ub3QgYWxsb2NhdGUgcGF5bG9hZCBtZW1vcnkgb2YNCnNpemUgJWRcbiIs DQorICAgICAgICAgICAgICAgIGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5oZWlnaHQgKTsNCisgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgIH0NCisNCisgICAgcmV0ID0gZmZfdnZl bmNfaW5pdF9leHRyYWRhdGEoYXZjdHgsIHMpOw0KKyAgICBpZiggcmV0ICE9IDAgKQ0KKyAgICAg ICAgcmV0dXJuIHJldDsNCisNCisgICAgcy0+ZW5jb2RlRG9uZSA9IGZhbHNlOw0KKyAgICByZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIGF2X2NvbGQgaW50IGZmX3Z2ZW5jX2VuY29kZV9jbG9zZShB VkNvZGVjQ29udGV4dCAqIGF2Y3R4KQ0KK3sNCisgICAgVlZlbkNDb250ZXh0ICpzID0gKFZWZW5D Q29udGV4dCAqKSBhdmN0eC0+cHJpdl9kYXRhOw0KKyAgICBpZiAocy0+dnZlbmNFbmMpIHsNCisg ICAgICAgIGlmIChhdl9sb2dfZ2V0X2xldmVsKCkgPj0gQVZfTE9HX1ZFUkJPU0UpDQorICAgICAg ICAgICAgdnZlbmNfcHJpbnRfc3VtbWFyeShzLT52dmVuY0VuYyk7DQorDQorICAgICAgICBpZiAo MCAhPSB2dmVuY19lbmNvZGVyX2Nsb3NlKHMtPnZ2ZW5jRW5jKSkgew0KKyAgICAgICAgICAgIGF2 X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiY2Fubm90IGNsb3NlIHZ2ZW5jXG4iKTsNCisgICAg ICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgdnZlbmNfYWNj ZXNzVW5pdF9mcmVlKHMtPnBBVSwgdHJ1ZSk7DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitz dGF0aWMgYXZfY29sZCBpbnQgZmZfdnZlbmNfZW5jb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICph dmN0eCwNCkFWUGFja2V0ICpwa3QsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBBVkZyYW1lICpmcmFtZSwgaW50DQoqZ290X3BhY2tldCkNCit7DQorICAg IFZWZW5DQ29udGV4dCAqcyA9IChWVmVuQ0NvbnRleHQgKikgYXZjdHgtPnByaXZfZGF0YTsNCisg ICAgdnZlbmNZVVZCdWZmZXIgKnB5dXZidWY7DQorICAgIHZ2ZW5jWVVWQnVmZmVyIHl1dmJ1ZjsN CisgICAgaW50IHBpY3RfdHlwZTsNCisgICAgaW50IHJldDsNCisNCisgICAgcHl1dmJ1ZiA9IE5V TEw7DQorICAgIGlmIChmcmFtZSkgew0KKyAgICAgICAgaWYgKGF2Y3R4LT5waXhfZm10ID09IEFW X1BJWF9GTVRfWVVWNDIwUDEwTEUpIHsNCisgICAgICAgICAgICB2dmVuY19ZVVZCdWZmZXJfZGVm YXVsdCgmeXV2YnVmKTsNCisgICAgICAgICAgICB5dXZidWYucGxhbmVzWzBdLnB0ciA9IChpbnQx Nl90ICopIGZyYW1lLT5kYXRhWzBdOw0KKyAgICAgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMV0ucHRy ID0gKGludDE2X3QgKikgZnJhbWUtPmRhdGFbMV07DQorICAgICAgICAgICAgeXV2YnVmLnBsYW5l c1syXS5wdHIgPSAoaW50MTZfdCAqKSBmcmFtZS0+ZGF0YVsyXTsNCisNCisgICAgICAgICAgICB5 dXZidWYucGxhbmVzWzBdLndpZHRoID0gZnJhbWUtPndpZHRoOw0KKyAgICAgICAgICAgIHl1dmJ1 Zi5wbGFuZXNbMF0uaGVpZ2h0ID0gZnJhbWUtPmhlaWdodDsNCisgICAgICAgICAgICAvKiBzdHJp ZGUgaXMgdXNlZCBpbiAxNmJpdHNhbXBsZXMgKDE2Yml0KSBpbiB2dmVuYywgZmZtcGVnDQp1c2Vz IHN0cmlkZSBpbiBieXRlcyAqLw0KKyAgICAgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMF0uc3RyaWRl ID0gZnJhbWUtPmxpbmVzaXplWzBdID4+IDE7DQorDQorICAgICAgICAgICAgeXV2YnVmLnBsYW5l c1sxXS53aWR0aCA9IGZyYW1lLT53aWR0aCA+PiAxOw0KKyAgICAgICAgICAgIHl1dmJ1Zi5wbGFu ZXNbMV0uaGVpZ2h0ID0gZnJhbWUtPmhlaWdodCA+PiAxOw0KKyAgICAgICAgICAgIHl1dmJ1Zi5w bGFuZXNbMV0uc3RyaWRlID0gZnJhbWUtPmxpbmVzaXplWzFdID4+IDE7DQorDQorICAgICAgICAg ICAgeXV2YnVmLnBsYW5lc1syXS53aWR0aCA9IGZyYW1lLT53aWR0aCA+PiAxOw0KKyAgICAgICAg ICAgIHl1dmJ1Zi5wbGFuZXNbMl0uaGVpZ2h0ID0gZnJhbWUtPmhlaWdodCA+PiAxOw0KKyAgICAg ICAgICAgIHl1dmJ1Zi5wbGFuZXNbMl0uc3RyaWRlID0gZnJhbWUtPmxpbmVzaXplWzJdID4+IDE7 DQorDQorICAgICAgICAgICAgeXV2YnVmLmN0cyA9IGZyYW1lLT5wdHM7DQorICAgICAgICAgICAg eXV2YnVmLmN0c1ZhbGlkID0gdHJ1ZTsNCisgICAgICAgICAgICBweXV2YnVmID0gJnl1dmJ1ZjsN CisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJS T1IsDQorICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBpbnB1dCBjb2xvcnNwYWNlISBp bnB1dCBtdXN0IGJlDQp5dXY0MjBwMTBsZSIpOw0KKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9S KEVJTlZBTCk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgaWYgKCFzLT5lbmNvZGVEb25l KSB7DQorICAgICAgICByZXQgPSB2dmVuY19lbmNvZGUocy0+dnZlbmNFbmMsIHB5dXZidWYsIHMt PnBBVSwgJnMtPmVuY29kZURvbmUpOw0KKyAgICAgICAgaWYgKHJldCAhPSAwKSB7DQorICAgICAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJlcnJvciBpbiB2dmVuYzo6ZW5jb2Rl IC0NCnJldDolZFxuIiwNCisgICAgICAgICAgICAgICAgICAgcmV0KTsNCisgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAg ICAgKmdvdF9wYWNrZXQgPSAwOw0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisNCisgICAg aWYgKHMtPnBBVS0+cGF5bG9hZFVzZWRTaXplID4gMCkgew0KKyAgICAgICAgcmV0ID0gZmZfZ2V0 X2VuY29kZV9idWZmZXIoYXZjdHgsIHBrdCwgcy0+cEFVLT5wYXlsb2FkVXNlZFNpemUsIDApOw0K KyAgICAgICAgaWYgKHJldCA8IDApIHsNCisgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19FUlJPUiwgIkVycm9yIGdldHRpbmcgb3V0cHV0IHBhY2tldC5cbiIpOw0KKyAgICAgICAgICAg IHJldHVybiByZXQ7DQorICAgICAgICB9DQorDQorICAgICAgICBtZW1jcHkocGt0LT5kYXRhLCBz LT5wQVUtPnBheWxvYWQsIHMtPnBBVS0+cGF5bG9hZFVzZWRTaXplKTsNCisNCisgICAgICAgIGlm IChzLT5wQVUtPmN0c1ZhbGlkKQ0KKyAgICAgICAgICAgIHBrdC0+cHRzID0gcy0+cEFVLT5jdHM7 DQorICAgICAgICBpZiAocy0+cEFVLT5kdHNWYWxpZCkNCisgICAgICAgICAgICBwa3QtPmR0cyA9 IHMtPnBBVS0+ZHRzOw0KKyAgICAgICAgcGt0LT5mbGFncyB8PSBBVl9QS1RfRkxBR19LRVkgKiBz LT5wQVUtPnJhcDsNCisNCisgICAgICAgIHN3aXRjaCAocy0+cEFVLT5zbGljZVR5cGUpIHsNCisg ICAgICAgIGNhc2UgVlZFTkNfSV9TTElDRToNCisgICAgICAgICAgICBwaWN0X3R5cGUgPSBBVl9Q SUNUVVJFX1RZUEVfSTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgVlZFTkNf UF9TTElDRToNCisgICAgICAgICAgICBwaWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfUDsNCisg ICAgICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgVlZFTkNfQl9TTElDRToNCisgICAgICAg ICAgICBwaWN0X3R5cGUgPSBBVl9QSUNUVVJFX1RZUEVfQjsNCisgICAgICAgICAgICBicmVhazsN CisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJS T1IsICJVbmtub3duIHBpY3R1cmUgdHlwZQ0KZW5jb3VudGVyZWQuXG4iKTsNCisgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsNCisgICAgICAgIH0NCisNCisgICAgICAgIGZmX3Np ZGVfZGF0YV9zZXRfZW5jb2Rlcl9zdGF0cyhwa3QsIDAsIE5VTEwsIDAsIHBpY3RfdHlwZSk7DQor DQorICAgICAgICAqZ290X3BhY2tldCA9IDE7DQorDQorICAgICAgICByZXR1cm4gMDsNCisgICAg fSBlbHNlIHsNCisgICAgICAgICpnb3RfcGFja2V0ID0gMDsNCisgICAgICAgIHJldHVybiAwOw0K KyAgICB9DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3QgZW51bSBBVlBp eGVsRm9ybWF0IHBpeF9mbXRzX3Z2ZW5jW10gPSB7DQorICAgIEFWX1BJWF9GTVRfWVVWNDIwUDEw TEUsDQorICAgIEFWX1BJWF9GTVRfTk9ORQ0KK307DQorDQorI2RlZmluZSBPRkZTRVQoeCkgb2Zm c2V0b2YoVlZlbkNDb250ZXh0LCB4KQ0KKyNkZWZpbmUgVkUgQVZfT1BUX0ZMQUdfVklERU9fUEFS QU0gfCBBVl9PUFRfRkxBR19FTkNPRElOR19QQVJBTQ0KK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBs aWJ2dmVuY19vcHRpb25zW10gPSB7DQorICAgIHsicHJlc2V0IiwgInNldCBlbmNvZGluZyBwcmVz ZXQoMDogZmFzdGVyIC0gNDogc2xvd2VyIiwgT0ZGU0VUKA0Kb3B0aW9ucy5wcmVzZXQpLCBBVl9P UFRfVFlQRV9JTlQsIHsuaTY0ID0gMn0gLCAwICwgNCAsIFZFLCAicHJlc2V0In0sDQorICAgICAg ICB7ICJmYXN0ZXIiLCAiMCIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZWRU5DX0ZB U1RFUn0sDQpJTlRfTUlOLCBJTlRfTUFYLCBWRSwgInByZXNldCIgfSwNCisgICAgICAgIHsgImZh c3QiLCAgICIxIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfRkFTVH0sDQpJ TlRfTUlOLCBJTlRfTUFYLCBWRSwgInByZXNldCIgfSwNCisgICAgICAgIHsgIm1lZGl1bSIsICIy IiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfTUVESVVNfSwNCklOVF9NSU4s IElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LA0KKyAgICAgICAgeyAic2xvdyIsICAgIjMiLCAwLCBB Vl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSBWVkVOQ19TTE9XfSwNCklOVF9NSU4sIElOVF9NQVgs IFZFLCAicHJlc2V0IiB9LA0KKyAgICAgICAgeyAic2xvd2VyIiwgIjQiLCAwLCBBVl9PUFRfVFlQ RV9DT05TVCwgey5pNjQgPSBWVkVOQ19TTE9XRVJ9LA0KSU5UX01JTiwgSU5UX01BWCwgVkUsICJw cmVzZXQiIH0sDQorICAgIHsgInFwIiAgICAgLCAic2V0IHF1YW50aXphdGlvbiIsIE9GRlNFVChv cHRpb25zLnFwKSwNCkFWX09QVF9UWVBFX0lOVCwgIHsuaTY0ID0gLTF9LCAtMSAsIDYzICxWRSwg InFwX21vZGUiIH0sDQorICAgIHsgInBlcmlvZCIgLCAic2V0IChpbnRyYSkgcmVmcmVzaCBwZXJp b2QgaW4gc2Vjb25kcyIsDQpPRkZTRVQob3B0aW9ucy5pbnRyYVJlZnJlc2hTZWMpLCBBVl9PUFRf VFlQRV9JTlQsICB7Lmk2NCA9IDF9LCAgMSAsDQpJTlRfTUFYICxWRSwiaXJlZnJlc2hzZWMiIH0s DQorICAgIHsgInN1YmpvcHQiLCAic2V0IHN1YmplY3RpdmUgKHBlcmNlcHR1YWxseSBtb3RpdmF0 ZWQpDQpvcHRpbWl6YXRpb24iLCBPRkZTRVQob3B0aW9ucy5zdWJqZWN0aXZlT3B0aW1pemF0aW9u KSwgQVZfT1BUX1RZUEVfQk9PTCwNCnsuaTY0ID0gMX0sICAwICwgMSwgVkV9LA0KKyAgICB7ICJi aXRkZXB0aDgiLCAic2V0IDhiaXQgY29kaW5nIG1vZGUiLA0KT0ZGU0VUKG9wdGlvbnMuZmxhZzhi aXRDb2RpbmcpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9IDB9LCAgMCAsIDEsIFZFfSwNCisg ICAgeyAidnZlbmMtcGFyYW1zIiwgInNldCB0aGUgdnZlbmMgY29uZmlndXJhdGlvbiB1c2luZyBh IDotc2VwYXJhdGVkDQpsaXN0IG9mIGtleT12YWx1ZSBwYXJhbWV0ZXJzIiwgT0ZGU0VUKG9wdGlv bnMudnZlbmNfb3B0cyksDQpBVl9PUFRfVFlQRV9ESUNULCB7IDAgfSwgMCwgMCwgVkUgfSwNCisg ICAgeyAibGV2ZWxpZGMiLCAidnZjIGxldmVsX2lkYyIsIE9GRlNFVCggb3B0aW9ucy5sZXZlbElk YyksDQpBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMH0sIDAsIDEwNSwgVkUsICJsZXZlbGlkYyJ9 LA0KKyAgICAgICAgeyAiMCIsICAgImF1dG8iLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQg PSAwfSwgIElOVF9NSU4sDQpJTlRfTUFYLCBWRSwgImxldmVsaWRjIn0sDQorICAgICAgICB7ICIx IiwgICAiMSIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDE2fSwgSU5UX01JTiwN CklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwNCisgICAgICAgIHsgIjIiLCAgICIyIiAgICwgMCwg QVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMzJ9LCBJTlRfTUlOLA0KSU5UX01BWCwgVkUsICJs ZXZlbGlkYyJ9LA0KKyAgICAgICAgeyAiMi4xIiwgIjIuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05T VCwgey5pNjQgPSAzNX0sIElOVF9NSU4sDQpJTlRfTUFYLCBWRSwgImxldmVsaWRjIn0sDQorICAg ICAgICB7ICIzIiwgICAiMyIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDQ4fSwg SU5UX01JTiwNCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwNCisgICAgICAgIHsgIjMuMSIsICIz LjEiICwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gNTF9LCBJTlRfTUlOLA0KSU5UX01B WCwgVkUsICJsZXZlbGlkYyJ9LA0KKyAgICAgICAgeyAiNCIsICAgIjQiICAgLCAwLCBBVl9PUFRf VFlQRV9DT05TVCwgey5pNjQgPSA2NH0sIElOVF9NSU4sDQpJTlRfTUFYLCBWRSwgImxldmVsaWRj In0sDQorICAgICAgICB7ICI0LjEiLCAiNC4xIiAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2 NCA9IDY3fSwgSU5UX01JTiwNCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwNCisgICAgICAgIHsg IjUiLCAgICI1IiAgICwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gODB9LCBJTlRfTUlO LA0KSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LA0KKyAgICAgICAgeyAiNS4xIiwgIjUuMSIgLCAw LCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA4M30sIElOVF9NSU4sDQpJTlRfTUFYLCBWRSwg ImxldmVsaWRjIn0sDQorICAgICAgICB7ICI1LjIiLCAiNS4yIiAsIDAsIEFWX09QVF9UWVBFX0NP TlNULCB7Lmk2NCA9IDg2fSwgSU5UX01JTiwNCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwNCisg ICAgICAgIHsgIjYiLCAgICI2IiAgICwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gOTZ9 LCBJTlRfTUlOLA0KSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LA0KKyAgICAgICAgeyAiNi4xIiwg IjYuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA5OX0sIElOVF9NSU4sDQpJTlRf TUFYLCBWRSwgImxldmVsaWRjIn0sDQorICAgICAgICB7ICI2LjIiLCAiNi4yIiAsIDAsIEFWX09Q VF9UWVBFX0NPTlNULCB7Lmk2NCA9IDEwMn0sIElOVF9NSU4sDQpJTlRfTUFYLCBWRSwgImxldmVs aWRjIn0sDQorICAgICAgICB7ICI2LjMiLCAiNi4zIiAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7 Lmk2NCA9IDEwNX0sIElOVF9NSU4sDQpJTlRfTUFYLCBWRSwgImxldmVsaWRjIn0sDQorICAgIHsg InRpZXIiLCAic2V0IHZ2YyB0aWVyIiwgT0ZGU0VUKCBvcHRpb25zLnRpZXIpLCBBVl9PUFRfVFlQ RV9JTlQsDQp7Lmk2NCA9IDB9LCAgMCAsIDEgLCBWRSwgInRpZXIifSwNCisgICAgICAgIHsgIm1h aW4iLCAibWFpbiIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDB9LCBJTlRfTUlOLA0K SU5UX01BWCwgVkUsICJ0aWVyIn0sDQorICAgICAgICB7ICJoaWdoIiwgImhpZ2giLCAwLCBBVl9P UFRfVFlQRV9DT05TVCwgey5pNjQgPSAxfSwgSU5UX01JTiwNCklOVF9NQVgsIFZFLCAidGllciJ9 LA0KKyAgICB7TlVMTH0NCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBBVkNsYXNzIGNsYXNzX2xpYnZ2 ZW5jID0gew0KKyAgICAuY2xhc3NfbmFtZSA9ICJsaWJ2dmVuYy12dmMgZW5jb2RlciIsDQorICAg IC5pdGVtX25hbWUgID0gYXZfZGVmYXVsdF9pdGVtX25hbWUsDQorICAgIC5vcHRpb24gICAgID0g bGlidnZlbmNfb3B0aW9ucywNCisgICAgLnZlcnNpb24gICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9J TlQsDQorfTsNCisNCitzdGF0aWMgY29uc3QgRkZDb2RlY0RlZmF1bHQgdnZlbmNfZGVmYXVsdHNb XSA9IHsNCisgICAgeyAiYiIsICIwIiB9LA0KKyAgICB7ICJnIiwgIi0xIiB9LA0KKyAgICB7IE5V TEwgfSwNCit9Ow0KKw0KK0ZGQ29kZWMgZmZfbGlidnZlbmNfZW5jb2RlciA9IHsNCisgICAgLnAu bmFtZSAgICAgICAgID0gImxpYnZ2ZW5jIiwNCisgICAgQ09ERUNfTE9OR19OQU1FKCJILjI2NiAv IFZWQyBFbmNvZGVyIFZWZW5DIiksDQorICAgIC5wLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQ RV9WSURFTywNCisgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNfSURfVlZDLA0KKyAgICAu cC5jYXBhYmlsaXRpZXMgPSBBVl9DT0RFQ19DQVBfREVMQVkgfCBBVl9DT0RFQ19DQVBfT1RIRVJf VEhSRUFEUywNCisgICAgLnAucHJvZmlsZXMgICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoZmZf dnZjX3Byb2ZpbGVzKSwNCisgICAgLnAucHJpdl9jbGFzcyAgID0gJmNsYXNzX2xpYnZ2ZW5jLA0K KyAgICAucC53cmFwcGVyX25hbWUgPSAibGlidnZlbmMiLA0KKyAgICAucHJpdl9kYXRhX3NpemUg PSBzaXplb2YoVlZlbkNDb250ZXh0KSwNCisgICAgLnAucGl4X2ZtdHMgICAgID0gcGl4X2ZtdHNf dnZlbmMsDQorICAgIC5pbml0ICAgICAgICAgICA9IGZmX3Z2ZW5jX2VuY29kZV9pbml0LA0KKyAg ICBGRl9DT0RFQ19FTkNPREVfQ0IoZmZfdnZlbmNfZW5jb2RlX2ZyYW1lKSwNCisgICAgLmNsb3Nl ICAgICAgICAgID0gZmZfdnZlbmNfZW5jb2RlX2Nsb3NlLA0KKyAgICAuZGVmYXVsdHMgICAgICAg ICA9IHZ2ZW5jX2RlZmF1bHRzLA0KKyAgICAuY2Fwc19pbnRlcm5hbCAgPSBGRl9DT0RFQ19DQVBf QVVUT19USFJFQURTLA0KK307DQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9s aWJhdmZvcm1hdC9NYWtlZmlsZQ0KaW5kZXggYWYzMWQ2Zjc5NS4uN2Y2ZGIzZDZkNiAxMDA2NDQN Ci0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlDQorKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQ0K QEAgLTU0LDYgKzU0LDcgQEAgT0JKUy0kKENPTkZJR19SVFBERUMpICAgICAgICAgICAgICAgICAg ICArPSByZHQubw0KICAgICAgICAgICAgICAgICAgXA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY19oMjYzX3JmYzIxOTAubyAgICAgICBcDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwZGVjX2gyNjQubyAg ICAgICAgICAgICAgIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBydHBkZWNfaGV2Yy5vICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcnRwZGVjX3Z2Yy5vICAgICAgICAgICAgICAgIFwNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBkZWNfaWxiYy5v ICAgICAgICAgICAgICAgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJ0cGRlY19qcGVnLm8gICAgICAgICAgICAgICBcDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwZGVjX2xhdG0ubyAgICAgICAgICAgICAgIFwN CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ydHBkZWMuYyBiL2xpYmF2Zm9ybWF0L3J0cGRlYy5j DQppbmRleCA3MjliZjgzNjg1Li4zNGVmOTJhMmEwIDEwMDY0NA0KLS0tIGEvbGliYXZmb3JtYXQv cnRwZGVjLmMNCisrKyBiL2xpYmF2Zm9ybWF0L3J0cGRlYy5jDQpAQCAtOTgsNiArOTgsNyBAQCBz dGF0aWMgY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciAqY29uc3QNCnJ0cF9keW5hbWlj X3Byb3RvY29sX2hhbmRsZXJfbGlzdFsNCiAgICAgICZmZl9oMjYzX3JmYzIxOTBfZHluYW1pY19o YW5kbGVyLA0KICAgICAgJmZmX2gyNjRfZHluYW1pY19oYW5kbGVyLA0KICAgICAgJmZmX2hldmNf ZHluYW1pY19oYW5kbGVyLA0KKyAgICAmZmZfdnZjX2R5bmFtaWNfaGFuZGxlciwNCiAgICAgICZm Zl9pbGJjX2R5bmFtaWNfaGFuZGxlciwNCiAgICAgICZmZl9qcGVnX2R5bmFtaWNfaGFuZGxlciwN CiAgICAgICZmZl9tcDRhX2xhdG1fZHluYW1pY19oYW5kbGVyLA0KZGlmZiAtLWdpdCBhL2xpYmF2 Zm9ybWF0L3J0cGRlY19mb3JtYXRzLmggYi9saWJhdmZvcm1hdC9ydHBkZWNfZm9ybWF0cy5oDQpp bmRleCBkYWQyYjhhYzFiLi5hZjJlMTdmYjk5IDEwMDY0NA0KLS0tIGEvbGliYXZmb3JtYXQvcnRw ZGVjX2Zvcm1hdHMuaA0KKysrIGIvbGliYXZmb3JtYXQvcnRwZGVjX2Zvcm1hdHMuaA0KQEAgLTY1 LDYgKzY1LDcgQEAgZXh0ZXJuIGNvbnN0IFJUUER5bmFtaWNQcm90b2NvbEhhbmRsZXINCmZmX2gy NjNfMjAwMF9keW5hbWljX2hhbmRsZXI7DQogIGV4dGVybiBjb25zdCBSVFBEeW5hbWljUHJvdG9j b2xIYW5kbGVyIGZmX2gyNjNfcmZjMjE5MF9keW5hbWljX2hhbmRsZXI7DQogIGV4dGVybiBjb25z dCBSVFBEeW5hbWljUHJvdG9jb2xIYW5kbGVyIGZmX2gyNjRfZHluYW1pY19oYW5kbGVyOw0KICBl eHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBmZl9oZXZjX2R5bmFtaWNfaGFu ZGxlcjsNCitleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBmZl92dmNfZHlu YW1pY19oYW5kbGVyOw0KICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBm Zl9pbGJjX2R5bmFtaWNfaGFuZGxlcjsNCiAgZXh0ZXJuIGNvbnN0IFJUUER5bmFtaWNQcm90b2Nv bEhhbmRsZXIgZmZfanBlZ19keW5hbWljX2hhbmRsZXI7DQogIGV4dGVybiBjb25zdCBSVFBEeW5h bWljUHJvdG9jb2xIYW5kbGVyIGZmX21wNGFfbGF0bV9keW5hbWljX2hhbmRsZXI7DQpkaWZmIC0t Z2l0IGEvbGliYXZmb3JtYXQvcnRwZGVjX3Z2Yy5jIGIvbGliYXZmb3JtYXQvcnRwZGVjX3Z2Yy5j DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uODZmMDE4MmIwMQ0KLS0t IC9kZXYvbnVsbA0KKysrIGIvbGliYXZmb3JtYXQvcnRwZGVjX3Z2Yy5jDQpAQCAtMCwwICsxLDM0 OSBAQA0KKy8qDQorICogUlRQIHBhcnNlciBmb3IgVlZDL0guMjY2IHBheWxvYWQgZm9ybWF0IChk cmFmdCB2ZXJzaW9uIDAuMSkNCisgKiBDb3B5cmlnaHQgKGMpIDIwMjQgUm9iaW5TaGkgPHNoaXFp ZmVuZ0BnbWFpbC5jb20+DQorICoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuDQor ICoNCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICogRkZtcGVnIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVQ0KKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhbG9uZyB3aXRoIEZG bXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqIEZvdW5kYXRpb24s IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUENCjAyMTEw LTEzMDEgVVNBDQorICovDQorDQorI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIg0KKyNp bmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCINCisjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5o Ig0KKw0KKyNpbmNsdWRlICJhdmZvcm1hdC5oIg0KKyNpbmNsdWRlICJpbnRlcm5hbC5oIg0KKyNp bmNsdWRlICJydHBkZWMuaCINCisjaW5jbHVkZSAicnRwZGVjX2Zvcm1hdHMuaCINCisNCisjZGVm aW5lIFJUUF9WVkNfUEFZTE9BRF9IRUFERVJfU0laRSAgICAgICAyDQorI2RlZmluZSBSVFBfVlZD X0ZVX0hFQURFUl9TSVpFICAgICAgICAgICAgMQ0KKyNkZWZpbmUgUlRQX1ZWQ19ET05MX0ZJRUxE X1NJWkUgICAgICAgICAgIDINCisjZGVmaW5lIFJUUF9WVkNfRE9ORF9GSUVMRF9TSVpFICAgICAg ICAgICAxDQorI2RlZmluZSBSVFBfVlZDX0FQX05BTFVfTEVOR1RIX0ZJRUxEX1NJWkUgMg0KKyNk ZWZpbmUgVlZDX1NQRUNJRklFRF9OQUxfVU5JVF9UWVBFUyAgICAgIDI4DQorDQorLyogU0RQIG91 dC1vZi1iYW5kIHNpZ25hbGluZyBkYXRhICovDQorc3RydWN0IFBheWxvYWRDb250ZXh0IHsNCisg ICAgaW50IHVzaW5nX2RvbmxfZmllbGQ7DQorICAgIGludCBwcm9maWxlX2lkOw0KKyAgICB1aW50 OF90ICpzcHMsICpwcHMsICp2cHMsICpzZWk7DQorICAgIGludCBzcHNfc2l6ZSwgcHBzX3NpemUs IHZwc19zaXplLCBzZWlfc2l6ZTsNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1aW50OF90IHN0YXJ0 X3NlcXVlbmNlW10gPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEgfTsNCisNCitzdGF0aWMgYXZf Y29sZCBpbnQgdnZjX3NkcF9wYXJzZV9mbXRwX2NvbmZpZyhBVkZvcm1hdENvbnRleHQgKnMsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWU3RyZWFtICpz dHJlYW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh eWxvYWRDb250ZXh0ICp2dmNfZGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYXR0ciwgY29uc3QNCmNoYXIgKnZhbHVlKQ0KK3sN CisgICAgLyogcHJvZmlsZS1zcGFjZTogMC0zICovDQorICAgIC8qIHByb2ZpbGUtaWQ6IDAtMzEg Ki8NCisgICAgaWYgKCFzdHJjbXAoYXR0ciwgInByb2ZpbGUtaWQiKSkgew0KKyAgICAgICAgdnZj X2RhdGEtPnByb2ZpbGVfaWQgPSBhdG9pKHZhbHVlKTsNCisgICAgICAgIGF2X2xvZyhzLCBBVl9M T0dfVFJBQ0UsICJTRFA6IGZvdW5kIHByb2ZpbGUtaWQ6ICVkXG4iLA0KdnZjX2RhdGEtPnByb2Zp bGVfaWQpOw0KKyAgICB9DQorDQorICAgIC8qIHRpZXItZmxhZzogMC0xICovDQorICAgIC8qIGxl dmVsLWlkOiAwLTI1NSAqLw0KKyAgICAvKiBpbnRlcm9wLWNvbnN0cmFpbnRzOiBbYmFzZTE2XSAq Lw0KKyAgICAvKiBwcm9maWxlLWNvbXBhdGliaWxpdHktaW5kaWNhdG9yOiBbYmFzZTE2XSAqLw0K KyAgICAvKiBzcHJvcC1zdWItbGF5ZXItaWQ6IDAtNiwgZGVmaW5lcyBoaWdoZXN0IHBvc3NpYmxl IHZhbHVlIGZvciBUSUQsDQpkZWZhdWx0OiA2ICovDQorICAgIC8qIHJlY3Ytc3ViLWxheWVyLWlk OiAwLTYgKi8NCisgICAgLyogbWF4LXJlY3YtbGV2ZWwtaWQ6IDAtMjU1ICovDQorICAgIC8qIHR4 LW1vZGU6IE1TTSxTU00gKi8NCisgICAgLyogc3Byb3AtdnBzOiBbYmFzZTY0XSAqLw0KKyAgICAv KiBzcHJvcC1zcHM6IFtiYXNlNjRdICovDQorICAgIC8qIHNwcm9wLXBwczogW2Jhc2U2NF0gKi8N CisgICAgLyogc3Byb3Atc2VpOiBbYmFzZTY0XSAqLw0KKyAgICBpZiAoIXN0cmNtcChhdHRyLCAi c3Byb3AtdnBzIikgfHwgIXN0cmNtcChhdHRyLCAic3Byb3Atc3BzIikgfHwNCisgICAgICAgICFz dHJjbXAoYXR0ciwgInNwcm9wLXBwcyIpIHx8ICFzdHJjbXAoYXR0ciwgInNwcm9wLXNlaSIpKSB7 DQorICAgICAgICB1aW50OF90ICoqZGF0YV9wdHIgPSBOVUxMOw0KKyAgICAgICAgaW50ICpzaXpl X3B0ciA9IE5VTEw7DQorICAgICAgICBpZiAoIXN0cmNtcChhdHRyLCAic3Byb3AtdnBzIikpIHsN CisgICAgICAgICAgICBkYXRhX3B0ciA9ICZ2dmNfZGF0YS0+dnBzOw0KKyAgICAgICAgICAgIHNp emVfcHRyID0gJnZ2Y19kYXRhLT52cHNfc2l6ZTsNCisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNt cChhdHRyLCAic3Byb3Atc3BzIikpIHsNCisgICAgICAgICAgICBkYXRhX3B0ciA9ICZ2dmNfZGF0 YS0+c3BzOw0KKyAgICAgICAgICAgIHNpemVfcHRyID0gJnZ2Y19kYXRhLT5zcHNfc2l6ZTsNCisg ICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhdHRyLCAic3Byb3AtcHBzIikpIHsNCisgICAgICAg ICAgICBkYXRhX3B0ciA9ICZ2dmNfZGF0YS0+cHBzOw0KKyAgICAgICAgICAgIHNpemVfcHRyID0g JnZ2Y19kYXRhLT5wcHNfc2l6ZTsNCisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhdHRyLCAi c3Byb3Atc2VpIikpIHsNCisgICAgICAgICAgICBkYXRhX3B0ciA9ICZ2dmNfZGF0YS0+c2VpOw0K KyAgICAgICAgICAgIHNpemVfcHRyID0gJnZ2Y19kYXRhLT5zZWlfc2l6ZTsNCisgICAgICAgIH0g ZWxzZQ0KKyAgICAgICAgICAgIGF2X2Fzc2VydDAoMCk7DQorDQorICAgICAgICBmZl9oMjY0X3Bh cnNlX3Nwcm9wX3BhcmFtZXRlcl9zZXRzKHMsIGRhdGFfcHRyLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3B0ciwgdmFsdWUpOw0KKyAgICB9DQorDQor ICAgIC8qIG1heC1sc3IsIG1heC1scHMsIG1heC1jcGIsIG1heC1kcGIsIG1heC1iciwgbWF4LXRy LCBtYXgtdGMgKi8NCisgICAgLyogbWF4LWZwcyAqLw0KKw0KKyAgICAvKiBzcHJvcC1tYXgtZG9u LWRpZmY6IDAtMzI3NjcNCisNCisgICAgICAgICBXaGVuIHRoZSBSVFAgc3RyZWFtIGRlcGVuZHMg b24gb25lIG9yIG1vcmUgb3RoZXIgUlRQDQorICAgICAgICAgc3RyZWFtcyAoaW4gdGhpcyBjYXNl IHR4LW1vZGUgTVVTVCBiZSBlcXVhbCB0byAiTVNNIiBhbmQNCisgICAgICAgICBNU00gaXMgaW4g dXNlKSwgdGhpcyBwYXJhbWV0ZXIgTVVTVCBiZSBwcmVzZW50IGFuZCB0aGUNCisgICAgICAgICB2 YWx1ZSBNVVNUIGJlIGdyZWF0ZXIgdGhhbiAwLg0KKyAgICAqLw0KKyAgICBpZiAoIXN0cmNtcChh dHRyLCAic3Byb3AtbWF4LWRvbi1kaWZmIikpIHsNCisgICAgICAgIGlmIChhdG9pKHZhbHVlKSA+ IDApDQorICAgICAgICAgICAgdnZjX2RhdGEtPnVzaW5nX2RvbmxfZmllbGQgPSAxOw0KKyAgICAg ICAgYXZfbG9nKHMsIEFWX0xPR19UUkFDRSwgIkZvdW5kIHNwcm9wLW1heC1kb24tZGlmZiBpbiBT RFAsIERPTg0KZmllbGQgdXNhZ2UgaXM6ICVkXG4iLA0KKyAgICAgICAgICAgICAgICB2dmNfZGF0 YS0+dXNpbmdfZG9ubF9maWVsZCk7DQorICAgIH0NCisgICAgLy8gVlZDIGRvbnQgaGF2ZSBzcHJv cC1kZXBhY2stYnVmLW5hbHVzIHNldHRpbmcgYWNjb3JkaW5nIHRvDQpyZmM5MzI4ICsgICAgLyog c3Byb3AtZGVwYWNrLWJ1Zi1ieXRlczogMC00Mjk0OTY3Mjk1ICovDQorICAgIC8qIGRlcGFjay1i dWYtY2FwICovDQorICAgIC8qIHNwcm9wLXNlZ21lbnRhdGlvbi1pZDogMC0zICovDQorICAgIC8q IHNwcm9wLXNwYXRpYWwtc2VnbWVudGF0aW9uLWlkYzogW2Jhc2UxNl0gKi8NCisgICAgLyogZGVj LXBhcmFsbGVsLWNhOiAqLw0KKyAgICAvKiBpbmNsdWRlLWRwaCAqLw0KKw0KKyAgICByZXR1cm4g MDsNCit9DQorDQorc3RhdGljIGF2X2NvbGQgaW50IHZ2Y19wYXJzZV9zZHBfbGluZShBVkZvcm1h dENvbnRleHQgKmN0eCwgaW50IHN0X2luZGV4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBheWxvYWRDb250ZXh0ICp2dmNfZGF0YSwgY29uc3QNCmNoYXIgKmxpbmUp DQorew0KKyAgICBBVlN0cmVhbSAqY3VycmVudF9zdHJlYW07DQorICAgIEFWQ29kZWNQYXJhbWV0 ZXJzICpwYXI7DQorICAgIGNvbnN0IGNoYXIgKnNkcF9saW5lX3B0ciA9IGxpbmU7DQorDQorICAg IGlmIChzdF9pbmRleCA8IDApDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgY3VycmVudF9z dHJlYW0gPSBjdHgtPnN0cmVhbXNbc3RfaW5kZXhdOw0KKyAgICBwYXIgID0gY3VycmVudF9zdHJl YW0tPmNvZGVjcGFyOw0KKw0KKyAgICBpZiAoYXZfc3Ryc3RhcnQoc2RwX2xpbmVfcHRyLCAiZnJh bWVzaXplOiIsICZzZHBfbGluZV9wdHIpKSB7DQorICAgICAgICBmZl9oMjY0X3BhcnNlX2ZyYW1l c2l6ZShwYXIsIHNkcF9saW5lX3B0cik7DQorICAgIH0gZWxzZSBpZiAoYXZfc3Ryc3RhcnQoc2Rw X2xpbmVfcHRyLCAiZm10cDoiLCAmc2RwX2xpbmVfcHRyKSkgew0KKyAgICAgICAgaW50IHJldCA9 IGZmX3BhcnNlX2ZtdHAoY3R4LCBjdXJyZW50X3N0cmVhbSwgdnZjX2RhdGEsDQpzZHBfbGluZV9w dHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dmNfc2RwX3BhcnNlX2ZtdHBf Y29uZmlnKTsNCisgICAgICAgIGlmICh2dmNfZGF0YS0+dnBzX3NpemUgfHwgdnZjX2RhdGEtPnNw c19zaXplIHx8DQorICAgICAgICAgICAgdnZjX2RhdGEtPnBwc19zaXplIHx8IHZ2Y19kYXRhLT5z ZWlfc2l6ZSkgew0KKyAgICAgICAgICAgIHBhci0+ZXh0cmFkYXRhX3NpemUgPSB2dmNfZGF0YS0+ dnBzX3NpemUgKyB2dmNfZGF0YS0+c3BzX3NpemUgKw0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2dmNfZGF0YS0+cHBzX3NpemUgKyB2dmNfZGF0YS0+c2VpX3NpemU7DQorICAg ICAgICAgICAgaWYgKChyZXQgPSBmZl9hbGxvY19leHRyYWRhdGEocGFyLCBwYXItPmV4dHJhZGF0 YV9zaXplKSkgPj0NCjApIHsNCisgICAgICAgICAgICAgICAgaW50IHBvcyA9IDA7DQorICAgICAg ICAgICAgICAgIG1lbWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZjX2RhdGEtPnZwcywNCnZ2 Y19kYXRhLT52cHNfc2l6ZSk7DQorICAgICAgICAgICAgICAgIHBvcyArPSB2dmNfZGF0YS0+dnBz X3NpemU7DQorICAgICAgICAgICAgICAgIG1lbWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZj X2RhdGEtPnNwcywNCnZ2Y19kYXRhLT5zcHNfc2l6ZSk7DQorICAgICAgICAgICAgICAgIHBvcyAr PSB2dmNfZGF0YS0+c3BzX3NpemU7DQorICAgICAgICAgICAgICAgIG1lbWNweShwYXItPmV4dHJh ZGF0YSArIHBvcywgdnZjX2RhdGEtPnBwcywNCnZ2Y19kYXRhLT5wcHNfc2l6ZSk7DQorICAgICAg ICAgICAgICAgIHBvcyArPSB2dmNfZGF0YS0+cHBzX3NpemU7DQorICAgICAgICAgICAgICAgIG1l bWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZjX2RhdGEtPnNlaSwNCnZ2Y19kYXRhLT5zZWlf c2l6ZSk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2dmNfZGF0 YS0+dnBzKTsNCisgICAgICAgICAgICBhdl9mcmVlcCgmdnZjX2RhdGEtPnNwcyk7DQorICAgICAg ICAgICAgYXZfZnJlZXAoJnZ2Y19kYXRhLT5wcHMpOw0KKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2 dmNfZGF0YS0+c2VpKTsNCisgICAgICAgICAgICB2dmNfZGF0YS0+dnBzX3NpemUgPSAwOw0KKyAg ICAgICAgICAgIHZ2Y19kYXRhLT5zcHNfc2l6ZSA9IDA7DQorICAgICAgICAgICAgdnZjX2RhdGEt PnBwc19zaXplID0gMDsNCisgICAgICAgICAgICB2dmNfZGF0YS0+c2VpX3NpemUgPSAwOw0KKyAg ICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHJldDsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludCB2dmNfaGFuZGxlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKmN0 eCwgUGF5bG9hZENvbnRleHQNCipydHBfdnZjX2N0eCwNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBVlN0cmVhbSAqc3QsIEFWUGFja2V0ICpwa3QsIHVpbnQzMl90DQoqdGltZXN0YW1w LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50 IGxlbiwgdWludDE2X3Qgc2VxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBm bGFncykNCit7DQorICAgIGNvbnN0IHVpbnQ4X3QgKnJ0cF9wbCA9IGJ1ZjsNCisgICAgaW50IHRp ZCwgbGlkLCBuYWxfdHlwZTsNCisgICAgaW50IGZpcnN0X2ZyYWdtZW50LCBsYXN0X2ZyYWdtZW50 LCBwaWNfZnJhZ21lbnQsIGZ1X3R5cGU7DQorICAgIHVpbnQ4X3QgbmV3X25hbF9oZWFkZXJbMl07 DQorICAgIGludCByZXMgPSAwOw0KKw0KKyAgICAvKiBzYW5pdHkgY2hlY2sgZm9yIHNpemUgb2Yg aW5wdXQgcGFja2V0OiAxIGJ5dGUgcGF5bG9hZCBhdCBsZWFzdCAqLw0KKyAgICBpZiAobGVuIDwg UlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFICsgMSkgew0KKyAgICAgICAgYXZfbG9nKGN0eCwg QVZfTE9HX0VSUk9SLCAiVG9vIHNob3J0IFJUUC9WVkMgcGFja2V0LCBnb3QgJWQNCmJ5dGVzXG4i LCBsZW4pOw0KKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7DQorICAgIH0NCisN CisgICAgLyoNCisgICAgICogZGVjb2RlIHRoZSBWVkMgcGF5bG9hZCBoZWFkZXIgYWNjb3JkaW5n IHRvIHNlY3Rpb24gNCBvZiBkcmFmdA0KdmVyc2lvbiA2Og0KKyAgICAgKg0KKyAgICAgKiAgICst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKw0KKyAgICAgKiAgIHwwfDF8MnwzfDR8NXw2 fDd8MHwxfDJ8M3w0fDV8Nnw3fA0KKyAgICAgKiAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSst Ky0rLSstKw0KKyAgICAgKiAgIHxGfFp8IExheWVySUQgICB8IFR5cGUgICAgfCBUSUQgfA0KKyAg ICAgKiAgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKw0KKyAgICAgKg0KKyAgICAg KiAgICAgIEZvcmJpZGRlbiB6ZXJvIChGKTogMSBiaXQNCisgICAgICogICAgICBSZXNlcnZlZCAo Wik6IDEgYml0cw0KKyAgICAgKiAgICAgIE5VSCBsYXllciBJRCAoTGF5ZXJJZCk6IDYgYml0cw0K KyAgICAgKiAgICAgIE5BTCB1bml0IHR5cGUgKFR5cGUpOiA1IGJpdHMNCisgICAgICogICAgICBO VUggdGVtcG9yYWwgSUQgcGx1cyAxIChUSUQpOiAzIGJpdHMNCisgICAgICovDQorICAgIG5hbF90 eXBlID0gIChidWZbMV0gPj4gMykgJiAweDFmOw0KKyAgICBsaWQgID0gYnVmWzBdICYgMHgzZjsN CisgICAgdGlkICA9IGJ1ZlsxXSAmIDB4MDc7DQorDQorICAgIC8qIHNhbml0eSBjaGVjayBmb3Ig Y29ycmVjdCBsYXllciBJRCAqLw0KKyAgICBpZiAobGlkKSB7DQorICAgICAgICAvKiBmdXR1cmUg c2NhbGFibGUgb3IgM0QgdmlkZW8gY29kaW5nIGV4dGVuc2lvbnMgKi8NCisgICAgICAgIGF2cHJp dl9yZXBvcnRfbWlzc2luZ19mZWF0dXJlKGN0eCwgIk11bHRpLWxheWVyIFZWQyBjb2RpbmciKTsN CisgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsNCisgICAgfQ0KKw0KKyAgICAv KiBzYW5pdHkgY2hlY2sgZm9yIGNvcnJlY3QgdGVtcG9yYWwgSUQgKi8NCisgICAgaWYgKCF0aWQp IHsNCisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIklsbGVnYWwgdGVtcG9yYWwg SUQgaW4gUlRQL1ZWQw0KcGFja2V0XG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOw0KKyAgICB9DQorDQorICAgIC8qIHNhbml0eSBjaGVjayBmb3IgY29ycmVjdCBOQUwg dW5pdCB0eXBlICovDQorICAgIGlmIChuYWxfdHlwZSA+IDMxKSB7DQorICAgICAgICBhdl9sb2co Y3R4LCBBVl9MT0dfRVJST1IsICJVbnN1cHBvcnRlZCAoVlZDKSBOQUwgdHlwZSAoJWQpXG4iLA0K bmFsX3R5cGUpOw0KKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7DQorICAgIH0N CisNCisgICAgc3dpdGNoIChuYWxfdHlwZSkgew0KKyAgICAvKiB2aWRlbyBwYXJhbWV0ZXIgc2V0 IChWUFMpICovDQorICAgIGNhc2UgMTQ6DQorICAgIC8qIHNlcXVlbmNlIHBhcmFtZXRlciBzZXQg KFNQUykgKi8NCisgICAgY2FzZSAxNToNCisgICAgLyogcGljdHVyZSBwYXJhbWV0ZXIgc2V0IChQ UFMpICovDQorICAgIGNhc2UgMTY6DQorICAgIC8qICBzdXBwbGVtZW50YWwgZW5oYW5jZW1lbnQg aW5mb3JtYXRpb24gKFNFSSkgKi8NCisgICAgY2FzZSAyMzoNCisgICAgY2FzZSAyNDoNCisgICAg Lyogc2luZ2xlIE5BTCB1bml0IHBhY2tldCAqLw0KKyAgICBkZWZhdWx0Og0KKyAgICAgICAgLyog Y3JlYXRlIEEvViBwYWNrZXQgKi8NCisgICAgICAgIGlmICgocmVzID0gYXZfbmV3X3BhY2tldChw a3QsIHNpemVvZihzdGFydF9zZXF1ZW5jZSkgKyBsZW4pKSA8IDApDQorICAgICAgICAgICAgcmV0 dXJuIHJlczsNCisgICAgICAgIC8qIEEvViBwYWNrZXQ6IGNvcHkgc3RhcnQgc2VxdWVuY2UgKi8N CisgICAgICAgIG1lbWNweShwa3QtPmRhdGEsIHN0YXJ0X3NlcXVlbmNlLCBzaXplb2Yoc3RhcnRf c2VxdWVuY2UpKTsNCisgICAgICAgIC8qIEEvViBwYWNrZXQ6IGNvcHkgTkFMIHVuaXQgZGF0YSAq Lw0KKyAgICAgICAgbWVtY3B5KHBrdC0+ZGF0YSArIHNpemVvZihzdGFydF9zZXF1ZW5jZSksIGJ1 ZiwgbGVuKTsNCisNCisgICAgICAgIGJyZWFrOw0KKyAgICAvKiBhZ2dyZWdhdGVkIHBhY2tldCAo QVApIC0gd2l0aCB0d28gb3IgbW9yZSBOQUwgdW5pdHMgKi8NCisgICAgY2FzZSAyODoNCisgICAg ICAgIC8qIHBhc3MgdGhlIFZWQyBwYXlsb2FkIGhlYWRlciAqLw0KKyAgICAgICAgYnVmICs9IFJU UF9WVkNfUEFZTE9BRF9IRUFERVJfU0laRTsNCisgICAgICAgIGxlbiAtPSBSVFBfVlZDX1BBWUxP QURfSEVBREVSX1NJWkU7DQorDQorICAgICAgICAvKiBwYXNzIHRoZSBWVkMgRE9OTCBmaWVsZCAq Lw0KKyAgICAgICAgaWYgKHJ0cF92dmNfY3R4LT51c2luZ19kb25sX2ZpZWxkKSB7DQorICAgICAg ICAgICAgYnVmICs9IFJUUF9WVkNfRE9OTF9GSUVMRF9TSVpFOw0KKyAgICAgICAgICAgIGxlbiAt PSBSVFBfVlZDX0RPTkxfRklFTERfU0laRTsNCisgICAgICAgIH0NCisNCisgICAgICAgIHJlcyA9 IGZmX2gyNjRfaGFuZGxlX2FnZ3JlZ2F0ZWRfcGFja2V0KGN0eCwgcnRwX3Z2Y19jdHgsIHBrdCwN CmJ1ZiwgbGVuLA0KKw0KcnRwX3Z2Y19jdHgtPnVzaW5nX2RvbmxfZmllbGQgPw0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRQX1ZWQ19ET05EX0ZJRUxE X1NJWkUgOiAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwgMCk7DQorICAgICAgICBpZiAocmVzIDwgMCkNCisgICAgICAgICAgICByZXR1cm4g cmVzOw0KKyAgICAgICAgYnJlYWs7DQorICAgIC8qIGZyYWdtZW50YXRpb24gdW5pdCAoRlUpICov DQorICAgIGNhc2UgMjk6DQorICAgICAgICAvKiBwYXNzIHRoZSBWVkMgcGF5bG9hZCBoZWFkZXIg Ki8NCisgICAgICAgIGJ1ZiArPSBSVFBfVlZDX1BBWUxPQURfSEVBREVSX1NJWkU7DQorICAgICAg ICBsZW4gLT0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOw0KKw0KKyAgICAgICAgLyoNCisg ICAgICAgICogICAgIGNyZWF0ZSB0aGUgRlUgaGVhZGVyDQorICAgICAgICAqDQorICAgICAgICAq ICAgICAwIDEgMiAzIDQgNSA2IDcNCisgICAgICAgICogICAgICstLS0tLS0tLS0tLS0tLS0rDQor ICAgICAgICAqICAgICB8MHwxfDJ8M3w0fDV8Nnw3fA0KKyAgICAgICAgKiAgICAgKy0rLSstKy0r LSstKy0rLSsNCisgICAgICAgICogICAgIHxTfEV8UHwgRnVUeXBlIHwNCisgICAgICAgICogICAg ICstLS0tLS0tLS0tLS0tLS0rDQorICAgICAgICAqICAgICAgIFMgICAgICAgPSB2YXJpYWJsZQ0K KyAgICAgICAgKiAgICAgICBFICAgICAgID0gdmFyaWFibGUNCisgICAgICAgICogICAgICAgUCAg ICAgICA9IHZhcmlhYmxlDQorICAgICAgICAqICAgICAgIEZ1VHlwZSAgPSBOQUwgdW5pdCB0eXBl DQorICAgICAgICAqLw0KKyAgICAgICAgZmlyc3RfZnJhZ21lbnQgPSBidWZbMF0gJiAweDgwOw0K KyAgICAgICAgbGFzdF9mcmFnbWVudCAgPSBidWZbMF0gJiAweDQwOw0KKyAgICAgICAgcGljX2Zy YWdtZW50ICAgPSBidWZbMF0gJiAweDEwOw0KKyAgICAgICAgZnVfdHlwZSAgICAgICAgPSBidWZb MF0gJiAweDNmOw0KKw0KKyAgICAgICAgLyogcGFzcyB0aGUgVlZDIEZVIGhlYWRlciAqLw0KKyAg ICAgICAgYnVmICs9IFJUUF9WVkNfRlVfSEVBREVSX1NJWkU7DQorICAgICAgICBsZW4gLT0gUlRQ X1ZWQ19GVV9IRUFERVJfU0laRTsNCisNCisgICAgICAgIC8qIHBhc3MgdGhlIFZWQyBET05MIGZp ZWxkICovDQorICAgICAgICBpZiAocnRwX3Z2Y19jdHgtPnVzaW5nX2RvbmxfZmllbGQpIHsNCisg ICAgICAgICAgICBidWYgKz0gUlRQX1ZWQ19ET05MX0ZJRUxEX1NJWkU7DQorICAgICAgICAgICAg bGVuIC09IFJUUF9WVkNfRE9OTF9GSUVMRF9TSVpFOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAg YXZfbG9nKGN0eCwgQVZfTE9HX1RSQUNFLCAiIEZVIHR5cGUgJWQgd2l0aCAlZCBieXRlc1xuIiwN CmZ1X3R5cGUsIGxlbik7DQorDQorICAgICAgICAvKiBzYW5pdHkgY2hlY2sgZm9yIHNpemUgb2Yg aW5wdXQgcGFja2V0OiAxIGJ5dGUgcGF5bG9hZCBhdA0KbGVhc3QgKi8NCisgICAgICAgIGlmIChs ZW4gPD0gMCkgew0KKyAgICAgICAgICAgIGlmIChsZW4gPCAwKSB7DQorICAgICAgICAgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAgICAgICAgICAgICJUb28g c2hvcnQgUlRQL1ZWQyBwYWNrZXQsIGdvdCAlZCBieXRlcyBvZiBOQUwNCnVuaXQgdHlwZSAlZFxu IiwNCisgICAgICAgICAgICAgICAgICAgICAgIGxlbiwgbmFsX3R5cGUpOw0KKyAgICAgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsNCisgICAgICAgICAgICB9IGVsc2Ugew0K KyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFQUdBSU4pOw0KKyAgICAgICAgICAgIH0N CisgICAgICAgIH0NCisNCisgICAgICAgIGlmIChmaXJzdF9mcmFnbWVudCAmJiBsYXN0X2ZyYWdt ZW50KSB7DQorICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiSWxsZWdhbCBj b21iaW5hdGlvbiBvZiBTIGFuZCBFDQpiaXQgaW4gUlRQL1ZWQyBwYWNrZXRcbiIpOw0KKyAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOw0KKyAgICAgICAgfQ0KKw0KKyAgICAg ICAgbmV3X25hbF9oZWFkZXJbMF0gPSBydHBfcGxbMF07DQorICAgICAgICBuZXdfbmFsX2hlYWRl clsxXSA9IHJ0cF9wbFsxXTsNCisNCisgICAgICAgIG5ld19uYWxfaGVhZGVyWzFdID0gKG5ld19u YWxfaGVhZGVyWzFdICYgMHgwNykgfCAoZnVfdHlwZSA8PCAzKTsNCisNCisgICAgICAgIHJlcyA9 IGZmX2gyNjRfaGFuZGxlX2ZyYWdfcGFja2V0KHBrdCwgYnVmLCBsZW4sIGZpcnN0X2ZyYWdtZW50 LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X25hbF9oZWFk ZXIsDQpzaXplb2YobmV3X25hbF9oZWFkZXIpKTsNCisNCisgICAgICAgIGJyZWFrOw0KKyAgICAv KiBQQUNJIHBhY2tldCAqLw0KKyAgICBjYXNlIDMwOg0KKyAgICAgICAgLyogVGVtcG9yYWwgc2Nh bGFiaWxpdHkgY29udHJvbCBpbmZvcm1hdGlvbiAoVFNDSSkgKi8NCisgICAgICAgIGF2cHJpdl9y ZXBvcnRfbWlzc2luZ19mZWF0dXJlKGN0eCwgIlBBQ0kgcGFja2V0cyBmb3IgUlRQL1ZWQyIpOw0K KyAgICAgICAgcmVzID0gQVZFUlJPUl9QQVRDSFdFTENPTUU7DQorICAgICAgICBicmVhazsNCisg ICAgfQ0KKw0KKyAgICBwa3QtPnN0cmVhbV9pbmRleCA9IHN0LT5pbmRleDsNCisNCisgICAgcmV0 dXJuIHJlczsNCit9DQorDQorY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBmZl92dmNf ZHluYW1pY19oYW5kbGVyID0gew0KKyAgICAuZW5jX25hbWUgICAgICAgICA9ICJIMjY2IiwNCisg ICAgLmNvZGVjX3R5cGUgICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sDQorICAgIC5jb2RlY19p ZCAgICAgICAgID0gQVZfQ09ERUNfSURfVlZDLA0KKyAgICAubmVlZF9wYXJzaW5nICAgICA9IEFW U1RSRUFNX1BBUlNFX0ZVTEwsDQorICAgIC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKFBheWxv YWRDb250ZXh0KSwNCisgICAgLnBhcnNlX3NkcF9hX2xpbmUgPSB2dmNfcGFyc2Vfc2RwX2xpbmUs DQorICAgIC5wYXJzZV9wYWNrZXQgICAgID0gdnZjX2hhbmRsZV9wYWNrZXQsDQorfTsNCmRpZmYg LS1naXQgYS9saWJhdmZvcm1hdC9ydHBlbmMuYyBiL2xpYmF2Zm9ybWF0L3J0cGVuYy5jDQppbmRl eCA3YjRhZTM3ZDEzLi44NDhiMjQ1YWQ3IDEwMDY0NA0KLS0tIGEvbGliYXZmb3JtYXQvcnRwZW5j LmMNCisrKyBiL2xpYmF2Zm9ybWF0L3J0cGVuYy5jDQpAQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMg aW50IGlzX3N1cHBvcnRlZChlbnVtIEFWQ29kZWNJRCBpZCkNCiAgICAgIGNhc2UgQVZfQ09ERUNf SURfSDI2M1A6DQogICAgICBjYXNlIEFWX0NPREVDX0lEX0gyNjQ6DQogICAgICBjYXNlIEFWX0NP REVDX0lEX0hFVkM6DQorICAgIGNhc2UgQVZfQ09ERUNfSURfVlZDOg0KICAgICAgY2FzZSBBVl9D T0RFQ19JRF9NUEVHMVZJREVPOg0KICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMlZJREVPOg0K ICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHNDoNCkBAIC02MDUsNiArNjA2LDcgQEAgc3RhdGlj IGludCBydHBfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqczEsDQpBVlBhY2tldCAqcGt0 KQ0KICAgICAgICAgIGZmX3J0cF9zZW5kX2gyNjMoczEsIHBrdC0+ZGF0YSwgc2l6ZSk7DQogICAg ICAgICAgYnJlYWs7DQogICAgICBjYXNlIEFWX0NPREVDX0lEX0hFVkM6DQorICAgIGNhc2UgQVZf Q09ERUNfSURfVlZDOg0KICAgICAgICAgIGZmX3J0cF9zZW5kX2gyNjRfaGV2YyhzMSwgcGt0LT5k YXRhLCBzaXplKTsNCiAgICAgICAgICBicmVhazsNCiAgICAgIGNhc2UgQVZfQ09ERUNfSURfVk9S QklTOg0KZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3J0cGVuY19oMjY0X2hldmMuYyBiL2xpYmF2 Zm9ybWF0L3J0cGVuY19oMjY0X2hldmMuYw0KaW5kZXggMGM4OGZjMmEyMy4uN2RiZDlmM2UxMSAx MDA2NDQNCi0tLSBhL2xpYmF2Zm9ybWF0L3J0cGVuY19oMjY0X2hldmMuYw0KKysrIGIvbGliYXZm b3JtYXQvcnRwZW5jX2gyNjRfaGV2Yy5jDQpAQCAtODQsOSArODQsMzggQEAgc3RhdGljIHZvaWQg bmFsX3NlbmQoQVZGb3JtYXRDb250ZXh0ICpzMSwgY29uc3QNCnVpbnQ4X3QgKmJ1ZiwgaW50IHNp emUsIGludCBsYXN0DQogICAgICAgICAgICAgIGlmIChidWZmZXJlZF9zaXplID09IDApIHsNCiAg ICAgICAgICAgICAgICAgIGlmIChjb2RlYyA9PSBBVl9DT0RFQ19JRF9IMjY0KSB7DQogICAgICAg ICAgICAgICAgICAgICAgKnMtPmJ1Zl9wdHIrKyA9IDI0Ow0KLSAgICAgICAgICAgICAgICB9IGVs c2Ugew0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVjID09IEFWX0NPREVDX0lEX0hF VkMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAqcy0+YnVmX3B0cisrID0gNDggPDwgMTsNCiAg ICAgICAgICAgICAgICAgICAgICAqcy0+YnVmX3B0cisrID0gMTsNCisgICAgICAgICAgICAgICAg fSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIC8vIFZWQyBjYXNlLCByZmM5MzI4LCBwYWdl IDIwDQorICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZpcnN0X25hbF90eXBlID0gYnVmWzBd Ow0KKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsYXN0X25hbF90eXBlID0gYnVmWzFdOw0K KyAgICAgICAgICAgICAgICAgICAgZmlyc3RfbmFsX3R5cGUgJj0gfigxPDw3KTsgLy8gY2xlYXIg dGhlIEYgYml0LA0KaW5pdGlhbGx5DQorICAgICAgICAgICAgICAgICAgICBsYXN0X25hbF90eXBl ID0gKGxhc3RfbmFsX3R5cGUgJiAweDA3KSB8ICgyOCA8PCAzKTsNCisgICAgICAgICAgICAgICAg ICAgICpzLT5idWZfcHRyKysgPSBmaXJzdF9uYWxfdHlwZTsNCisgICAgICAgICAgICAgICAgICAg ICpzLT5idWZfcHRyKysgPSBsYXN0X25hbF90eXBlOw0KKyAgICAgICAgICAgICAgICB9DQorICAg ICAgICAgICAgfSBlbHNlIGlmIChjb2RlYyA9PSBBVl9DT0RFQ19JRF9WVkMpIHsNCisgICAgICAg ICAgICAgICAgLy8gVlZDIGNhc2UsIHJmYzkzMjgsIHBhZ2UgMjAsIHVzZSBsb3dlc3QgbGF5ZXJp ZC90aWQNCisgICAgICAgICAgICAgICAgdWludDhfdCBmaXJzdF9uYWxfdHlwZSA9IHMtPmJ1Zlsw XTsNCisgICAgICAgICAgICAgICAgdWludDhfdCBsYXN0X25hbF90eXBlID0gcy0+YnVmWzFdOw0K KyAgICAgICAgICAgICAgICB1aW50OF90IG5ld19maXJzdF9uYWxfdHlwZSA9IGJ1ZlswXTsNCisg ICAgICAgICAgICAgICAgdWludDhfdCBuZXdfbGFzdF9uYWxfdHlwZSA9IGJ1ZlsxXTsNCisgICAg ICAgICAgICAgICAgaW50IGN1cl9mID0gZmlyc3RfbmFsX3R5cGUgPj4gNzsNCisgICAgICAgICAg ICAgICAgaW50IG5ld19mID0gbmV3X2ZpcnN0X25hbF90eXBlID4+IDc7DQorICAgICAgICAgICAg ICAgIGlmICghY3VyX2YgJiYgbmV3X2YpIHsNCisgICAgICAgICAgICAgICAgICAgIHMtPmJ1Zlsw XSB8PSAxIDw8IDc7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaW50IGN1 cl9saWQgPSBmaXJzdF9uYWxfdHlwZSAmIDB4M2Y7DQorICAgICAgICAgICAgICAgIGludCBuZXdf bGlkID0gbmV3X2ZpcnN0X25hbF90eXBlICYgMHgzZjsNCisgICAgICAgICAgICAgICAgaWYgKGN1 cl9saWQgPiBuZXdfbGlkKSB7DQorICAgICAgICAgICAgICAgICAgICBzLT5idWZbMF0gfD0gbmV3 X2xpZDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpbnQgY3VyX3RpZCA9 IGxhc3RfbmFsX3R5cGUgJiAweDA3Ow0KKyAgICAgICAgICAgICAgICBpbnQgbmV3X3RpZCA9IG5l d19sYXN0X25hbF90eXBlICYgMHgwNzsNCisgICAgICAgICAgICAgICAgaWYgKGN1cl90aWQgPiBu ZXdfdGlkKSB7DQorICAgICAgICAgICAgICAgICAgICBzLT5idWZbMV0gfD0gbmV3X3RpZDsNCiAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBBVl9XQjE2 KHMtPmJ1Zl9wdHIsIHNpemUpOw0KQEAgLTEwMCw2ICsxMjksNyBAQCBzdGF0aWMgdm9pZCBuYWxf c2VuZChBVkZvcm1hdENvbnRleHQgKnMxLCBjb25zdA0KdWludDhfdCAqYnVmLCBpbnQgc2l6ZSwg aW50IGxhc3QNCiAgICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICAgIGludCBmbGFn X2J5dGUsIGhlYWRlcl9zaXplOw0KKyAgICAgICAgdWludDhfdCBuYWxfdHlwZTsNCiAgICAgICAg ICBmbHVzaF9idWZmZXJlZChzMSwgMCk7DQogICAgICAgICAgaWYgKGNvZGVjID09IEFWX0NPREVD X0lEX0gyNjQgJiYgKHMtPmZsYWdzICYNCkZGX1JUUF9GTEFHX0gyNjRfTU9ERTApKSB7DQogICAg ICAgICAgICAgIGF2X2xvZyhzMSwgQVZfTE9HX0VSUk9SLA0KQEAgLTEwOSwyMCArMTM5LDIwIEBA IHN0YXRpYyB2b2lkIG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4dCAqczEsIGNvbnN0DQp1aW50OF90 ICpidWYsIGludCBzaXplLCBpbnQgbGFzdA0KICAgICAgICAgIH0NCiAgICAgICAgICBhdl9sb2co czEsIEFWX0xPR19ERUJVRywgIk5BTCBzaXplICVkID4gJWRcbiIsIHNpemUsDQpzLT5tYXhfcGF5 bG9hZF9zaXplKTsNCiAgICAgICAgICBpZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfSDI2NCkgew0K LSAgICAgICAgICAgIHVpbnQ4X3QgdHlwZSA9IGJ1ZlswXSAmIDB4MUY7DQorICAgICAgICAgICAg bmFsX3R5cGUgPSBidWZbMF0gJiAweDFGOw0KICAgICAgICAgICAgICB1aW50OF90IG5yaSA9IGJ1 ZlswXSAmIDB4NjA7DQogICAgICAgICAgICAgICBzLT5idWZbMF0gPSAyODsgICAgICAgIC8qIEZV IEluZGljYXRvcjsgVHlwZSA9IDI4IC0tLT4NCkZVLUEgKi8NCiAgICAgICAgICAgICAgcy0+YnVm WzBdIHw9IG5yaTsNCi0gICAgICAgICAgICBzLT5idWZbMV0gPSB0eXBlOw0KKyAgICAgICAgICAg IHMtPmJ1ZlsxXSA9IG5hbF90eXBlOw0KICAgICAgICAgICAgICBzLT5idWZbMV0gfD0gMSA8PCA3 Ow0KICAgICAgICAgICAgICBidWYgICs9IDE7DQogICAgICAgICAgICAgIHNpemUgLT0gMTsNCiAg ICAgICAgICAgICAgIGZsYWdfYnl0ZSAgID0gMTsNCiAgICAgICAgICAgICAgaGVhZGVyX3NpemUg PSAyOw0KLSAgICAgICAgfSBlbHNlIHsNCi0gICAgICAgICAgICB1aW50OF90IG5hbF90eXBlID0g KGJ1ZlswXSA+PiAxKSAmIDB4M0Y7DQorICAgICAgICB9IGVsc2UgaWYgKGNvZGVjID09IEFWX0NP REVDX0lEX0hFVkMpIHsNCisgICAgICAgICAgICBuYWxfdHlwZSA9IChidWZbMF0gPj4gMSkgJiAw eDNGOw0KICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgKiBjcmVhdGUgdGhlIEhFVkMg cGF5bG9hZCBoZWFkZXIgYW5kIHRyYW5zbWl0IHRoZSBidWZmZXINCmFzIGZyYWdtZW50YXRpb24g dW5pdHMgKEZVKQ0KICAgICAgICAgICAgICAgKg0KQEAgLTE1NCw4ICsxODQsNTQgQEAgc3RhdGlj IHZvaWQgbmFsX3NlbmQoQVZGb3JtYXRDb250ZXh0ICpzMSwgY29uc3QNCnVpbnQ4X3QgKmJ1Ziwg aW50IHNpemUsIGludCBsYXN0DQogICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICBzLT5i dWZbMl0gID0gbmFsX3R5cGU7DQogICAgICAgICAgICAgIC8qIHNldCB0aGUgUyBiaXQ6IG1hcmsg YXMgc3RhcnQgZnJhZ21lbnQgKi8NCi0gICAgICAgICAgICBzLT5idWZbMl0gfD0gMSA8PCA3Ow0K KyAgICAgICAgICAgIHMtPmJ1ZlsxXSA9IChzLT5idWZbMV0gJiAweDA3KSB8ICgyOSA8PCAzKTsN CisNCisgICAgICAgICAgICAvKiBwYXNzIHRoZSBvcmlnaW5hbCBOQUwgaGVhZGVyICovDQorICAg ICAgICAgICAgYnVmICArPSAyOw0KKyAgICAgICAgICAgIHNpemUgLT0gMjsNCisNCisgICAgICAg ICAgICBmbGFnX2J5dGUgICA9IDI7DQorICAgICAgICAgICAgaGVhZGVyX3NpemUgPSAzOw0KKyAg ICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBzLT5idWZbMF0gPSBidWZbMF07DQorICAgICAg ICAgICAgcy0+YnVmWzFdID0gYnVmWzFdOw0KKyAgICAgICAgICAgIC8qDQorICAgICAgICAgICAg ICogY3JlYXRlIHRoZSBWVkMgcGF5bG9hZCBoZWFkZXIgYW5kIHRyYW5zbWl0IHRoZSBidWZmZXIg YXMNCmZyYWdtZW50YXRpb24gdW5pdHMgKEZVKQ0KKyAgICAgICAgICAgICAqDQorICAgICAgICAg ICAgICogICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsNCisgICAgICAgICAgICAg KiAgIHwwfDF8MnwzfDR8NXw2fDd8MHwxfDJ8M3w0fDV8Nnw3fA0KKyAgICAgICAgICAgICAqICAg Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rDQorICAgICAgICAgICAgICogICB8Rnxa fCBMYXllcklEICAgfCBUeXBlICAgIHwgVElEIHwNCisgICAgICAgICAgICAgKiAgICstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKw0KKyAgICAgICAgICAgICAqICAgICAgRiAgICAgICA9 IDANCisgICAgICAgICAgICAgKiAgICAgIFR5cGUgICAgPSAyOSAoZnJhZ21lbnRhdGlvbiB1bml0 IChGVSkpDQorICAgICAgICAgICAgICogICAgICBMYXllcklkID0gMA0KKyAgICAgICAgICAgICAq ICAgICAgVElEICAgICA9IDENCisgICAgICAgICAgICAgKi8NCisgICAgICAgICAgICBuYWxfdHlw ZSA9IChidWZbMV0gPj4gMykgJiAweDFGOw0KKyAgICAgICAgICAgIHMtPmJ1ZlsxXSA9IChzLT5i dWZbMV0gJiAweDA3KSB8ICgyOSA8PCAzKTsNCiAgKyAgICAgICAgICAgIC8qDQorICAgICAgICAg ICAgICogICAgIGNyZWF0ZSB0aGUgRlUgaGVhZGVyDQorICAgICAgICAgICAgICoNCisgICAgICAg ICAgICAgKiAgICAgMCAxIDIgMyA0IDUgNiA3DQorICAgICAgICAgICAgICogICAgICstLS0tLS0t LS0tLS0tLS0rDQorICAgICAgICAgICAgICogICAgIHwwfDF8MnwzfDR8NXw2fDd8DQorICAgICAg ICAgICAgICogICAgICstKy0rLSstKy0rLSstKy0rDQorICAgICAgICAgICAgICogICAgIHxTfEV8 UHwgRnVUeXBlIHwNCisgICAgICAgICAgICAgKiAgICAgKy0tLS0tLS0tLS0tLS0tLSsNCisgICAg ICAgICAgICAgKiAgICAgICBTICAgICAgID0gdmFyaWFibGUNCisgICAgICAgICAgICAgKiAgICAg ICBFICAgICAgID0gdmFyaWFibGUNCisgICAgICAgICAgICAgKiAgICAgICBQICAgICAgID0gdmFy aWFibGUNCisgICAgICAgICAgICAgKiAgICAgICBGdVR5cGUgID0gTkFMIHVuaXQgdHlwZQ0KKyAg ICAgICAgICAgICAqLw0KKyAgICAgICAgICAgIHMtPmJ1ZlsyXSAgPSBuYWxfdHlwZTsNCisgICAg ICAgICAgICAvKiBzZXQgdGhlIFMgYml0OiBtYXJrIGFzIHN0YXJ0IGZyYWdtZW50ICovDQorICAg ICAgICAgICAgcy0+YnVmWzJdIHw9IDEgPDwgNzsNCisgICAgICAgICAgICAvLyBTZXQgdGhlIFAg Yml0IGlmIGl0J3MgdGhlIGxhc3QgZnJhZ21lbnQgYW5kIGlmIGl0J3MgYQ0KVkNMIE5BTCB1bml0 DQorICAgICAgICAgICAgaWYgKG5hbF90eXBlIDw9IDExKSB7DQorICAgICAgICAgICAgICAgIHMt PmJ1ZlsyXSAmPSB+KDEgPDwgNSk7ICAvLyBDbGVhciB0aGUgUCBiaXQgb3RoZXJ3aXNlDQorICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAvKiBwYXNzIHRoZSBvcmlnaW5hbCBOQUwgaGVhZGVy ICovDQogICAgICAgICAgICAgIGJ1ZiAgKz0gMjsNCiAgICAgICAgICAgICAgc2l6ZSAtPSAyOw0K QEAgLTE3MCw4ICsyNDYsMTQgQEAgc3RhdGljIHZvaWQgbmFsX3NlbmQoQVZGb3JtYXRDb250ZXh0 ICpzMSwgY29uc3QNCnVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUsIGludCBsYXN0DQogICAgICAgICAg ICAgIGJ1ZiAgKz0gcy0+bWF4X3BheWxvYWRfc2l6ZSAtIGhlYWRlcl9zaXplOw0KICAgICAgICAg ICAgICBzaXplIC09IHMtPm1heF9wYXlsb2FkX3NpemUgLSBoZWFkZXJfc2l6ZTsNCiAgICAgICAg ICAgICAgcy0+YnVmW2ZsYWdfYnl0ZV0gJj0gfigxIDw8IDcpOw0KKyAgICAgICAgICAgIGlmIChj b2RlYyA9PSBBVl9DT0RFQ19JRF9WVkMgJiYgbmFsX3R5cGUgPD0gMTEpIHsNCisgICAgICAgICAg ICAgICAgcy0+YnVmW2ZsYWdfYnl0ZV0gJj0gfigxIDw8IDUpOyAgLy8gQ2xlYXIgdGhlIFAgYml0 DQpvdGhlcndpc2UNCisgICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIHMtPmJ1 ZltmbGFnX2J5dGVdIHw9IDEgPDwgNjsNCisgICAgICAgIGlmIChjb2RlYyA9PSBBVl9DT0RFQ19J RF9WVkMgJiYgbmFsX3R5cGUgPD0gMTEpIHsNCisgICAgICAgICAgICBzLT5idWZbZmxhZ19ieXRl XSB8PSAxIDw8IDU7ICAvLyBTZXQgdGhlIFAgYml0DQorICAgICAgICB9DQogICAgICAgICAgbWVt Y3B5KCZzLT5idWZbaGVhZGVyX3NpemVdLCBidWYsIHNpemUpOw0KICAgICAgICAgIGZmX3J0cF9z ZW5kX2RhdGEoczEsIHMtPmJ1Ziwgc2l6ZSArIGhlYWRlcl9zaXplLCBsYXN0KTsNCiAgICAgIH0N CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9zZHAuYyBiL2xpYmF2Zm9ybWF0L3NkcC5jDQppbmRl eCBjY2ZhYThhZmY1Li4yZmJmMTczZTQxIDEwMDY0NA0KLS0tIGEvbGliYXZmb3JtYXQvc2RwLmMN CisrKyBiL2xpYmF2Zm9ybWF0L3NkcC5jDQpAQCAtMzMsNiArMzMsNyBAQA0KICAjaW5jbHVkZSAi aW50ZXJuYWwuaCINCiAgI2luY2x1ZGUgImF2Yy5oIg0KICAjaW5jbHVkZSAiaGV2Yy5oIg0KKyNp bmNsdWRlICJ2dmMuaCINCiAgI2luY2x1ZGUgInJ0cC5oIg0KICAjaW5jbHVkZSAidmVyc2lvbi5o Ig0KICAjaWYgQ09ORklHX05FVFdPUksNCkBAIC0zNDcsNiArMzQ4LDE3NiBAQCBlcnI6DQogICAg ICByZXR1cm4gcmV0Ow0KICB9DQogICsNCitzdGF0aWMgaW50IGNhbGN1bGF0ZV9wdGxfc2l6ZSh1 aW50OF90ICpleHRyYWRhdGEpIHsNCisgICAgaW50IG9mZnNldCA9IDA7DQorICAgIC8qDQorICAg ICAgICAqIHVuc2lnbmVkIGludCg5KSBvbHNfaWR4Ow0KKyAgICAgICAgKiB1bnNpZ25lZCBpbnQo MykgbnVtX3N1YmxheWVyczsNCisgICAgICAgICogdW5zaWduZWQgaW50KDIpIGNvbnN0YW50X2Zy YW1lX3JhdGU7DQorICAgICAgICAqIHVuc2lnbmVkIGludCgyKSBjaHJvbWFfZm9ybWF0X2lkYzsg ICAgICovDQorICAgIHVpbnQ4X3QgbnVtX3N1YmxheWVycyA9IChBVl9SQjE2KCZleHRyYWRhdGFb b2Zmc2V0XSkgPj4gNCkgJiAweDA3Ow0KKyAgICBvZmZzZXQgKz0gMjsNCisgICAgLyogIHVuc2ln bmVkIGludCgzKSBiaXRfZGVwdGhfbWludXM4Ow0KKyAgICAgICAgYml0KDUpIHJlc2VydmVkID0g oa4xMTExMaGvYjsgKi8NCisgICAgb2Zmc2V0ICs9IDE7DQorICAgIC8qICBiaXQoMikgcmVzZXJ2 ZWQgPSChrjAwoa9iOw0KKyAgICAgICAgdW5zaWduZWQgaW50ICg2KSBudW1fYnl0ZXNfY29uc3Ry YWludF9pbmZvICovDQorICAgIHVpbnQ4X3QgbnVtX2J5dGVzX2NvbnN0cmFpbnRfaW5mbyA9IEFW X1JCOCgmZXh0cmFkYXRhW29mZnNldF0pICYgMHgzZjsNCisgICAgb2Zmc2V0ICs9IDE7DQorICAg IC8qICB1bnNpZ25lZCBpbnQgKDcpIGdlbmVyYWxfcHJvZmlsZV9pZGMNCisgICAgICAgIHVuc2ln bmVkIGludCAoMSkgZ2VuZXJhbF90aWVyX2ZsYWcgKi8NCisgICAgb2Zmc2V0ICs9IDE7DQorICAg IC8qICB1bnNpZ25lZCBpbnQgKDgpIGdlbmVyYWxfbGV2ZWxfaWRjICovDQorICAgIG9mZnNldCAr PSAxOw0KKyAgICAvKg0KKyAgICAqICAgdW5zaWduZWQgaW50ICgxKSBwdGxfZnJhbWVfb25seV9j b25zdHJhaW50X2ZsYWcNCisgICAgKiAgIHVuc2lnbmVkIGludCAoMSkgcHRsX211bHRpbGF5ZXJf ZW5hYmxlZF9mbGFnDQorICAgICogICB1bnNpZ25lZCBpbnQgKDgqbnVtX2J5dGVzX2NvbnN0cmFp bnRfaW5mbyAtMikNCmdlbmVyYWxfY29uc3RyYWludF9pbmZvICovDQorICAgIG9mZnNldCArPSBu dW1fYnl0ZXNfY29uc3RyYWludF9pbmZvOw0KKw0KKyAgICBpZiAobnVtX3N1YmxheWVycyA+IDEp IHsNCisgICAgICAgIC8vIHB0bF9zdWJsYXllcl9sZXZlbF9wcmVzZW50X2ZsYWdzDQorICAgICAg ICB1aW50OF90IHB0bF9zdWJsYXllcl9sZXZlbF9wcmVzZW50X2ZsYWdzID0gZXh0cmFkYXRhW29m ZnNldF07DQorICAgICAgICBvZmZzZXQgKz0gMTsNCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUg bnVtYmVyIG9mIHN1YmxheWVyX2xldmVsX2lkYyBieXRlcw0KKyAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBudW1fc3VibGF5ZXJzIC0gMTsgaSsrKSB7DQorICAgICAgICAgICAgaWYgKHB0bF9z dWJsYXllcl9sZXZlbF9wcmVzZW50X2ZsYWdzICYgKDEgPDwgaSkpIHsNCisgICAgICAgICAgICAg ICAgb2Zmc2V0ICs9IDE7IC8vIEFkZCBhIGJ5dGUgZm9yIGVhY2ggc3VibGF5ZXJfbGV2ZWxfaWRj DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorICAgIC8qICB1bnNpZ25lZCBp bnQoOCkgbnVtX3N1Yl9wcm9maWxlczsgKi8NCisgICAgdWludDhfdCBwdGxfbnVtX3N1Yl9wcm9m aWxlcyA9IGV4dHJhZGF0YVtvZmZzZXRdOw0KKyAgICBvZmZzZXQgKz0gMTsNCisgICAgLyogIHVu c2lnbmVkIGludCgzMikgZ2VuZXJhbF9zdWJfcHJvZmlsZV9pZGNbal07ICovDQorICAgIG9mZnNl dCArPSA0ICogcHRsX251bV9zdWJfcHJvZmlsZXM7DQorICAgIC8vRW5kIG9mIFZ2Y1BUTFJlY29y ZA0KKyAgICAvKg0KKyAgICAqICAgdW5zaWduZWQgaW50KDE2KSBtYXhfcGljdHVyZV93aWR0aDsq Lw0KKyAgICBvZmZzZXQgKz0gMjsNCisgICAgLyoNCisgICAgKiAgIHVuc2lnbmVkIGludCgxNikg bWF4X3BpY3R1cmVfaGVpZ2h0OyovDQorICAgIG9mZnNldCArPSAyOw0KKyAgICAvKg0KKyAgICAq ICAgdW5zaWduZWQgaW50KDE2KSBhdmdfZnJhbWVfcmF0ZTsgKi8NCisgICAgb2Zmc2V0ICs9IDI7 DQorICAgIHJldHVybiBvZmZzZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZXh0cmFkYXRhMnBzZXRz X3Z2Y2MoY29uc3QgQVZDb2RlY1BhcmFtZXRlcnMgKnBhciwgY2hhciAqKm91dCkNCit7DQorICAg IGNoYXIgKnBzZXRzOw0KKyAgICB1aW50OF90ICpleHRyYWRhdGEgPSBwYXItPmV4dHJhZGF0YTsN CisgICAgaW50IGV4dHJhZGF0YV9zaXplID0gcGFyLT5leHRyYWRhdGFfc2l6ZTsNCisgICAgdWlu dDhfdCAqdG1wYnVmID0gTlVMTDsNCisgICAgaW50IHBzX3Bvc1szXSA9IHsgMCB9Ow0KKyAgICBz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBzX25hbWVzWzNdID0geyAidnBzIiwgInNwcyIsICJw cHMiIH07DQorICAgIGludCBudW1fYXJyYXlzLCBudW1fbmFsdXM7DQorICAgIGludCBwb3MsIGks IGosIHJldCA9IDA7DQorDQorICAgICpvdXQgPSBOVUxMOw0KKw0KKyAgICBpZiAocGFyLT5leHRy YWRhdGFbMF0gIT0gMSkgew0KKyAgICAgICAgQVZJT0NvbnRleHQgKnBiOw0KKw0KKyAgICAgICAg cmV0ID0gYXZpb19vcGVuX2R5bl9idWYoJnBiKTsNCisgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAg ICAgICAgICAgIHJldHVybiByZXQ7DQorDQorICAgICAgICByZXQgPSBmZl9pc29tX3dyaXRlX3Z2 Y2MocGIsIHBhci0+ZXh0cmFkYXRhLA0KcGFyLT5leHRyYWRhdGFfc2l6ZSwgMCk7DQorICAgICAg ICBpZiAocmV0IDwgMCkgew0KKyAgICAgICAgICAgIGF2aW9fY2xvc2VfZHluX2J1ZihwYiwgJnRt cGJ1Zik7DQorICAgICAgICAgICAgZ290byBlcnI7DQorICAgICAgICB9DQorICAgICAgICBleHRy YWRhdGFfc2l6ZSA9IGF2aW9fY2xvc2VfZHluX2J1ZihwYiwgJmV4dHJhZGF0YSk7DQorICAgICAg ICB0bXBidWYgPSBleHRyYWRhdGE7DQorICAgIH0NCisNCisgICAgaW50IHB0bF9wcmVzZW50X2Zs YWcgPSAoZXh0cmFkYXRhWzBdICYgMHgwMSk7DQorDQorICAgIHBvcyA9IDE7IC8vIFN0YXJ0IGFm dGVyIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gYnl0ZQ0KKyAgICBpZiAocHRsX3ByZXNlbnRf ZmxhZykgew0KKyAgICAgICAgLy8gUFRMIGlzIHByZXNlbnQsIHNvIHBhcnNlIFBUTCBmaWVsZHMg KHRoZSBudW1iZXIgb2YgYnl0ZXMNCmRlcGVuZHMgb24gUFRMIHN0cnVjdHVyZSkNCisgICAgICAg IHBvcyArPSBjYWxjdWxhdGVfcHRsX3NpemUoZXh0cmFkYXRhICsgMSk7DQorICAgIH0NCisgICAg aWYgKHBvcyArIDEgPiBleHRyYWRhdGFfc2l6ZSkNCisgICAgICAgIGdvdG8gZXJyOw0KKyAgICBu dW1fYXJyYXlzID0gZXh0cmFkYXRhW3BvcysrXTsNCisgICAgZm9yIChpID0gMDsgaSA8IG51bV9h cnJheXM7IGkrKykgew0KKyAgICAgICAgaW50IG51bV9uYWx1cywgbmFsdV90eXBlOw0KKyAgICAg ICAgaWYgKHBvcyArIDMgPiBleHRyYWRhdGFfc2l6ZSkNCisgICAgICAgICAgICBnb3RvIGVycjsN CisgICAgICAgIG5hbHVfdHlwZSA9IGV4dHJhZGF0YVtwb3NdICYgMHgxZjsNCisgICAgICAgIGlm IChuYWx1X3R5cGUgPT0gMTQpIC8vIFZQUw0KKyAgICAgICAgICAgIHBzX3Bvc1swXSA9IHBvczsN CisgICAgICAgIGVsc2UgaWYgKG5hbHVfdHlwZSA9PSAxNSkgLy8gU1BTDQorICAgICAgICAgICAg cHNfcG9zWzFdID0gcG9zOw0KKyAgICAgICAgZWxzZSBpZiAobmFsdV90eXBlID09IDE2KSAvLyBQ UFMNCisgICAgICAgICAgICBwc19wb3NbMl0gPSBwb3M7DQorICAgICAgICBudW1fbmFsdXMgPSBB Vl9SQjE2KCZleHRyYWRhdGFbcG9zICsgMV0pOw0KKyAgICAgICAgcG9zICs9IDM7DQorICAgICAg ICBmb3IgKGogPSAwOyBqIDwgbnVtX25hbHVzOyBqKyspIHsNCisgICAgICAgICAgICBpbnQgbGVu Ow0KKyAgICAgICAgICAgIGlmIChwb3MgKyAyID4gZXh0cmFkYXRhX3NpemUpDQorICAgICAgICAg ICAgICAgIGdvdG8gZXJyOw0KKyAgICAgICAgICAgIGxlbiA9IEFWX1JCMTYoJmV4dHJhZGF0YVtw b3NdKTsNCisgICAgICAgICAgICBwb3MgKz0gMjsNCisgICAgICAgICAgICBpZiAocG9zICsgbGVu ID4gZXh0cmFkYXRhX3NpemUpDQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOw0KKyAgICAgICAg ICAgIHBvcyArPSBsZW47DQorICAgICAgICB9DQorICAgIH0NCisgICAgaWYgKCFwc19wb3NbMV0g fHwgIXBzX3Bvc1syXSkNCisgICAgICAgIGdvdG8gZXJyOw0KKyAgICBwc2V0cyA9IGF2X21hbGxv Y3ooTUFYX1BTRVRfU0laRSk7DQorICAgIGlmICghcHNldHMpIHsNCisgICAgICAgIHJldCA9IEFW RVJST1IoRU5PTUVNKTsNCisgICAgICAgIGdvdG8gZXJyOw0KKyAgICB9DQorDQorICAgIHBzZXRz WzBdID0gJ1wwJzsNCisNCisgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgew0KKyAgICAgICAg aWYgKCFwc19wb3NbaV0pIHsNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIH0NCisg ICAgICAgIHBvcyA9IHBzX3Bvc1tpXTsNCisNCisgICAgICAgIGlmIChpID4gMCAmJiBwc19wb3Nb aS0xXSkNCisgICAgICAgICAgICBhdl9zdHJsY2F0KHBzZXRzLCAiOyAiLCBNQVhfUFNFVF9TSVpF KTsNCisgICAgICAgIGF2X3N0cmxjYXRmKHBzZXRzLCBNQVhfUFNFVF9TSVpFLCAic3Byb3AtJXM9 IiwgcHNfbmFtZXNbaV0pOw0KKw0KKyAgICAgICAgLy8gU2tpcHBpbmcgYm91bmRhcnkgY2hlY2tz IGluIHRoZSBpbnB1dCBoZXJlOyB3ZSd2ZSBhbHJlYWR5DQp0cmF2ZXJzZWQNCisgICAgICAgIC8v IHRoZSB3aG9sZSBodmNjIHN0cnVjdHVyZSBhYm92ZSB3aXRob3V0IGlzc3Vlcw0KKyAgICAgICAg bnVtX25hbHVzID0gQVZfUkIxNigmZXh0cmFkYXRhW3BvcyArIDFdKTsNCisgICAgICAgIHBvcyAr PSAzOw0KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bV9uYWx1czsgaisrKSB7DQorICAgICAg ICAgICAgaW50IGxlbiA9IEFWX1JCMTYoJmV4dHJhZGF0YVtwb3NdKTsNCisgICAgICAgICAgICBp bnQgc3RycG9zOw0KKyAgICAgICAgICAgIHBvcyArPSAyOw0KKyAgICAgICAgICAgIGlmIChqID4g MCkNCisgICAgICAgICAgICAgICAgYXZfc3RybGNhdChwc2V0cywgIiwiLCBNQVhfUFNFVF9TSVpF KTsNCisgICAgICAgICAgICBzdHJwb3MgPSBzdHJsZW4ocHNldHMpOw0KKyAgICAgICAgICAgIGlm ICghYXZfYmFzZTY0X2VuY29kZShwc2V0cyArIHN0cnBvcywgTUFYX1BTRVRfU0laRSAtIHN0cnBv cywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4dHJhZGF0YVtwb3NdLCBs ZW4pKSB7DQorICAgICAgICAgICAgICAgIGF2X2ZyZWUocHNldHMpOw0KKyAgICAgICAgICAgICAg ICBnb3RvIGVycjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcG9zICs9IGxlbjsNCisg ICAgICAgIH0NCisgICAgfQ0KKyAgICBhdl9mcmVlKHRtcGJ1Zik7DQorDQorICAgICpvdXQgPSBw c2V0czsNCisgICAgcmV0dXJuIDA7DQorZXJyOg0KKyAgICBpZiAocmV0ID49IDApDQorICAgICAg ICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOw0KKyAgICBhdl9mcmVlKHRtcGJ1Zik7DQorICAg IHJldHVybiByZXQ7DQorfQ0KKw0KICBzdGF0aWMgaW50IGV4dHJhZGF0YTJjb25maWcoQVZGb3Jt YXRDb250ZXh0ICpzLCBjb25zdA0KQVZDb2RlY1BhcmFtZXRlcnMgKnBhciwNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXQpDQogIHsNCkBAIC01NzksNiArNzUwLDE3IEBA IHN0YXRpYyBpbnQgc2RwX3dyaXRlX21lZGlhX2F0dHJpYnV0ZXMoY2hhciAqYnVmZiwNCmludCBz aXplLCBjb25zdCBBVlN0cmVhbSAqc3QsDQogICAgICAgICAgICAgIGF2X3N0cmxjYXRmKGJ1ZmYs IHNpemUsICJhPWZtdHA6JWQgJXNcclxuIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBheWxvYWRfdHlwZSwgY29uZmlnKTsNCiAgICAgICAgICBicmVhazsNCisgICAg Y2FzZSBBVl9DT0RFQ19JRF9WVkM6DQorICAgICAgICBpZiAocC0+ZXh0cmFkYXRhX3NpemUpIHsN CisgICAgICAgICAgICByZXQgPSBleHRyYWRhdGEycHNldHNfdnZjYyhwLCAmY29uZmlnKTsNCisg ICAgICAgICAgICBpZiAocmV0IDwgMCkNCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCisg ICAgICAgIH0NCisgICAgICAgIGF2X3N0cmxjYXRmKGJ1ZmYsIHNpemUsICJhPXJ0cG1hcDolZCBI MjY2LzkwMDAwXHJcbiIsDQpwYXlsb2FkX3R5cGUpOw0KKyAgICAgICAgaWYgKGNvbmZpZykNCisg ICAgICAgICAgICBhdl9zdHJsY2F0ZihidWZmLCBzaXplLCAiYT1mbXRwOiVkICVzXHJcbiIsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfdHlwZSwgY29uZmln KTsNCisgICAgICAgIGJyZWFrOw0KICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHNDoNCiAgICAg ICAgICBpZiAocC0+ZXh0cmFkYXRhX3NpemUpIHsNCiAgICAgICAgICAgICAgcmV0ID0gZXh0cmFk YXRhMmNvbmZpZyhmbXQsIHAsICZjb25maWcpOw0KLS0NCjIuMzQuMQ0KDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KZmZtcGVnLWRldmVsIG1haWxpbmcg bGlzdA0KZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcNCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZmbXBlZy1kZXZlbA0KDQpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwNCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0 ICJ1bnN1YnNjcmliZSIuDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0 QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==