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 52A3D42388 for ; Fri, 15 Apr 2022 11:08:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7E75068B4C8; Fri, 15 Apr 2022 14:08:22 +0300 (EEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-oln040092072077.outbound.protection.outlook.com [40.92.72.77]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AAF7368B4B8 for ; Fri, 15 Apr 2022 14:08:15 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i5VKWOTOXsR5ia+d64xQUIFB9Cjl7QQGKQgQNGx+1Yi1vgXLIUWAJUXvUJHzsnSnHd9iDuFEET/KfHfu7q1UVtjdRsWvJtabl7M/SMeNlkOGSfHkIRajNW/geJOpNqIPkvIef12PHYBdWvQpJIo5m1ISoviE5q6bW97zb0N/rJEEIRzTzyrp8ipeHc7sPkKJLu/8lA1QzX7ud6OpNte6eJ/iRNX0HrJDuMdJGIcVlQNB07hOSkspTOUXhBW3dNUucZ0yFZlfkELp+7rwphXcX3fRVwTEfxiYjbwGt4gHzJrJC3vKTz4tEFrKqyZsorjb3C83Z4y2/w2xpFB5dfMORQ== 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=O76aYORjPq6sBaFswWldd7wZJY81fL1lLeutvl+AreY=; b=Z+37HWB1CWIWWRgSbL5AkHb89Mq5tFdxzENAsCJNBJEVCnGpGo3oru8MNROdkT7qRDs6GTGL0BvFJ002j6OFZTepRv5WkXfEbuZ4iGZBXMZbSjlRieksS2uuRPZEoa5XQj3QzH6Av9HK3ob/xX36BpPVlcN2yyQv1wNOQGX+SRUnAp0T5cQN8KHy5au+QFfCJTWu0uLtVnNAVxKl2vD0vVIdVdlSiztHOWMNgjTKMSGKp6h3WRlESir24PSYVOP7gRIt3XW/MrZ3rm3ToThB2+8eN7BsQY9MR4nuTHUuKjxfxOhYdea5Its8axlQrQUECJVqWSaAs4WJ5wAK0bDVqw== 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=O76aYORjPq6sBaFswWldd7wZJY81fL1lLeutvl+AreY=; b=m7/VllPXfd/kwqeEq49V08ULOpyUmFEr4KQg0ZutT2pIesR+BQjI55RH2tgX6j3syehPZjFmlrqU/seUQbRDBSQ5I4KkuQkOWQPIVNZz9BthvetNes1zUQ8ltwIg+WojbznQ2OZWlDzyGh0vVOU72Jy4KuHbaS0u8cJAI4yGL9555YKcg2qLJCMo7d3lS/UV1PeyWOllNoSKSqkw1iGX278hLLMKOUHW4qLP5NLT5Trth6Gg1EC0seEB1+xOVLVN6ZACDbsl24hmVIg4YGFLOTh8mgzNyvOy+fQpuQtmaYkXf7X4ZPyHU4Dim2oyOKyXlPLHH46pmgwlycd+xzulrg== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by AM5PR0101MB2514.eurprd01.prod.exchangelabs.com (2603:10a6:203:31::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.29; Fri, 15 Apr 2022 11:08:13 +0000 Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::fcc3:1285:374c:9b2]) by AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::fcc3:1285:374c:9b2%5]) with mapi id 15.20.5164.023; Fri, 15 Apr 2022 11:08:13 +0000 Message-ID: Date: Fri, 15 Apr 2022 13:08:11 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220412055333.62424-1-leo.izen@gmail.com> <20220412055333.62424-3-leo.izen@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20220412055333.62424-3-leo.izen@gmail.com> X-TMN: [DawWlWdbreEFdyR/FYcrXDI0YOSTu3z/] X-ClientProxiedBy: AS8PR04CA0059.eurprd04.prod.outlook.com (2603:10a6:20b:312::34) To AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) X-Microsoft-Original-Message-ID: <03d06466-abea-3867-b667-9116c80e3c5c@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cb71dcd1-80ff-45e0-c421-08da1ed03b96 X-MS-TrafficTypeDiagnostic: AM5PR0101MB2514:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yEYs6r6ilUSU03ciXHcSnjVyVch5igByHrDuiAotjakBumsMh/8pjdfHDRlFG5xAyKFuBafJcMEa+Mxea+u4weIckaZq5aqSBc2s8/cEaMpIhmaEQFNvCgOHMriprRtcYsjYfcXLp7kFysc9U3tBUFI0VDKRhzrdBiFrc8Zk2bXe1BrQkJLzDBTwZZ7cwhcQudkdtATqQDzYWO0TO2uIwEtk575KC8kgfuHbNLH4uJUP+aUdOJYoP9LlB81se4MgTpBH2XiqdZsCiFXoHnH7AlyrlFNDmwi2Uk7y1eGpx3xDKIKHB9OJSMbh+08EyLWojeP83Py3G3a0Bz7gQoxbMPrABHQ2mkwGwC0/qmJBCKhCroU3LSNgcR834TX44Hy1GKv1lK5gzwBziofVteYjWN3s21qK6SqVlIjUDKh3Moy4iImkpW5Kn5+tA3Uou6ohEYgylbnIqo4V3oBM7bvcT8CeKu8klV7kjciiqG/i4jyePr+B7oiqUBkiaunrdNMYuKAEpTJgp1u1A3GiiOSPmjO1lcXoN2wqgDYUx+fr9xEUEEIuqOqMXsYouESK2Nc3EieJ96Yl4g+7pJUe1I10pgcLuXHYLtn2RWyX/8bPQw6tkPWtoC1LXnvkcEw4YD8WeW9GHXu895hIbOM0jhePXik5+BbTfXE/KBLMnsCiwCs= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OEhGT0t2NnNBdjlhQ25GcXJoTGhaU2tXWGcrVURYRWNuUDUxUStKamovTFBX?= =?utf-8?B?M0V6WkRyYjJtdkJoUXVKL1JYMHJ1Tmt3cU9vUGNsdm4xalgvRFo1cGw3NXE4?= =?utf-8?B?cS9KeXhNMDRNcXJBenBpcktqU3JTQllMdmcybXBwcWJyNmpEQmpFQVM0TDhm?= =?utf-8?B?ZkZzMmpTV1hNOGFtcElUWlFvWjMyU0lENXRFbWx2eVlLNHlyZk5iOExSVjVP?= =?utf-8?B?eUxMM3Q2R3psVHBybVlFcWJqdnZlK2hCWGxJdWRGZGZROEViSW4rWmRDV3lt?= =?utf-8?B?UjU5TzFBQTloK2d5Nm8wTnVRaEluSTM3QmdWeW16U3U4M3MrWUd1OTRqaHNZ?= =?utf-8?B?R2ZXMERGZ2xyOUZUcFc1REdJd0dRUFZqY0VKV3hOWk44ZHB2Zk92NzdEMzJZ?= =?utf-8?B?SjhVdmVhSzQ5Q05XM2l0UXhGV1o1aWJaa1kvOW9QVTJzQXlaaVgxZGJMR2FY?= =?utf-8?B?RFhMUzVwb0RKWVJWdXZkZ1Jka0NybkZWTU5MamEreTVESDNDa2lkMnNvMEhB?= =?utf-8?B?U1drWHJhYnBud3p6dWV5Mk8zUU9TdzNaRDJkUmtIYmpudWhXU0EzTFR2bjhS?= =?utf-8?B?VGduRlZjVVA1SUZ5VFBpeTJWUTdkWDFDaEV3RnhZKzBsenl4MisvbGxmcWVw?= =?utf-8?B?cXVqTUF0Yi80ejJzR3ZpTC9oWlo5TWQwckQyTm1yajVUY3RoTmwvZHBHOTJD?= =?utf-8?B?OFJyZWcvQkVoczBoTUdTN0REbkFnNmo1T2pXMExHWXhBZEJGUXJybVJ1NFVv?= =?utf-8?B?bGVnM1RHSzRrSXBDdzBqd2Z1MGRzZ2o2QkVoM3VEMzlSdU16MG5XWWIxTlJZ?= =?utf-8?B?Mk9UVys3Zm5jenpoS1hNSDUxQUpSQzBxb2IyR1dZN0ZNSCtnci9KTi96aTR1?= =?utf-8?B?Rk0zR1BHeUFENXR2N25wTElQSnZnVDBua0xhZDVrdW9ucFN0RjdOMDJqa1VS?= =?utf-8?B?eEJwRm1MaDdPYm1CNHhOdDBqd1o2SkpoRXlNWk0vRFJBQnBuSjhqeXQ1SEVt?= =?utf-8?B?RVBCeFMyTHBUeHVVaWJscVBtcG1sektpSFFpRnB6Z3ZBUFVQN1pISUxabk1V?= =?utf-8?B?bEVwdzZhRE9ONHhRNWlVQXdaTzY5ZGI1WlMvcVdvTDFqL0NVeFM5SStvY3Nv?= =?utf-8?B?alBqOUxlbTRiWVc4S0JDb2tXaEpPei9wQkNJbGE0YW9rNzRjdDZtVzc2Kzl3?= =?utf-8?B?d29kbStRQnlPemNvMzkwSCtzQjFtd1p3aTZYMCtycWNMSzk4cDZBWDVXN0lG?= =?utf-8?B?Q1VKTm93ZGk3Uk9INnhydm1URlhaeUg3citaTzBzVTRGOUpDaGpiRlI3eXBR?= =?utf-8?B?bmFTdXpIcDM1Y3o4T21VR0FvY3k2Z1hRR0l5d3pZK2FqNlU4a0ZmbTUrMGJv?= =?utf-8?B?Wk1aR1MzdkFRQWtMcm5LdEhEc1hKVGY5SHRiVk5zRlYwYm43YW54SURTS3h1?= =?utf-8?B?S3pPZDBFNTdKTGhxWExmMStxbXNhRTNmMXhyYlR5UDJuYnB5QkZMczFjRjdl?= =?utf-8?B?OE5Ka3Q2NVY1QldUSlM3bHlIVlZlTEgvaHJRaXFiZVdtWUMwMGNid1FqVi80?= =?utf-8?B?RHpYVjBlVHExeGJySkVvdGluTER5VUN0WUk0cURZZ3p1RldQb3JwMS9sTEht?= =?utf-8?B?QmtST2p3TlhFd0NVaE95bmh2RDM1NnZpL1pDTkE1aHZpVjhidkNFYk1wbmJh?= =?utf-8?B?MG94cHkwTjJweHVqOHlkQWhmVGtuTGM2YjU5a0UxUmJ3QVZvMjdKbDNSd1B3?= =?utf-8?B?eVhjRVVtckxOZUhNTmJkY1IwMWhPU2VzbGJTSWErallxM2F2eUR1ZEdXaWhT?= =?utf-8?B?VlJwMzVNRUFsVmZBOExxeksyRGt5RU5pVHhjekxjUVE5bkRKSlJTVTBqMFFI?= =?utf-8?B?eXN3ekZmZURLK0NKNUZ0RmVnb3hjQnRkQzNGMk5DYzBYcTgyQUJ0a1ZEUWhG?= =?utf-8?B?WUpnQnpLdFRwTmxqR25RWEhrZit4V1VDWDl6N0RzSlcreFBMcksrTERJMDhU?= =?utf-8?B?aE5Ia29CVGtnPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cb71dcd1-80ff-45e0-c421-08da1ed03b96 X-MS-Exchange-CrossTenant-AuthSource: AS8PR01MB7944.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2022 11:08:13.1394 (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: AM5PR0101MB2514 Subject: Re: [FFmpeg-devel] [PATCH v14 2/4] avcodec/libjxl: add Jpeg XL decoding via libjxl 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="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: TGVvIEl6ZW46Cj4gVGhpcyBjb21taXQgYWRkcyBkZWNvZGluZyBzdXBwb3J0IHRvIGxpYmF2Y29k ZWMKPiBmb3IgSnBlZyBYTCBpbWFnZXMgdmlhIHRoZSBleHRlcm5hbCBsaWJyYXJ5IGxpYmp4bC4K PiAtLS0KPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICB8ICAgMSArCj4gIGNvbmZpZ3VyZSAg ICAgICAgICAgICAgICAgfCAgIDUgKwo+ICBkb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpIHwgICA3 ICsKPiAgbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICB8ICAgMSArCj4gIGxpYmF2Y29kZWMvYWxs Y29kZWNzLmMgICAgfCAgIDEgKwo+ICBsaWJhdmNvZGVjL2xpYmp4bC5jICAgICAgIHwgIDcwICsr KysrKysrKysKPiAgbGliYXZjb2RlYy9saWJqeGwuaCAgICAgICB8ICA0OCArKysrKysrCj4gIGxp YmF2Y29kZWMvbGlianhsZGVjLmMgICAgfCAyNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgOCBmaWxlcyBjaGFuZ2VkLCA0MDcgaW5zZXJ0aW9ucygrKQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9saWJqeGwuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZjb2RlYy9saWJqeGwuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9saWJq eGxkZWMuYwo+IAo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCj4gaW5k ZXggODU5YTUwMDVkNC4uZmFlYTg0ZWJmMSAxMDA2NDQKPiAtLS0gYS9NQUlOVEFJTkVSUwo+ICsr KyBiL01BSU5UQUlORVJTCj4gQEAgLTE5NCw2ICsxOTQsNyBAQCBDb2RlY3M6Cj4gICAgbGliY29k ZWMyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICBUb21hcyBIw6RyZGluCj4gICAgbGliZGly YWMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXZpZCBDb25yYWQKPiAgICBsaWJkYXZz Mi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh1aXdlbiBSZW4KPiArICBsaWJqeGwqLmMs IGxpYmp4bC5oICAgICAgICAgICAgICAgICAgIExlbyBJemVuCj4gICAgbGliZ3NtLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNaWNoZWwgQmFyZGlhdXgKPiAgICBsaWJrdmF6YWFyLmMg ICAgICAgICAgICAgICAgICAgICAgICAgIEFydHR1IFlsw6QtT3V0aW5lbgo+ICAgIGxpYm9wZW5o MjY0ZW5jLmMgICAgICAgICAgICAgICAgICAgICAgTWFydGluIFN0b3Jzam8sIExpbmppZSBGdQo+ IGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKPiBpbmRleCA5Yzg5NjU4NTJiLi5j MzZkNWRiYzhiIDEwMDc1NQo+IC0tLSBhL2NvbmZpZ3VyZQo+ICsrKyBiL2NvbmZpZ3VyZQo+IEBA IC0yNDAsNiArMjQwLDcgQEAgRXh0ZXJuYWwgbGlicmFyeSBzdXBwb3J0Ogo+ICAgIC0tZW5hYmxl LWxpYmllYzYxODgzICAgICBlbmFibGUgaWVjNjE4ODMgdmlhIGxpYmllYzYxODgzIFtub10KPiAg ICAtLWVuYWJsZS1saWJpbGJjICAgICAgICAgZW5hYmxlIGlMQkMgZGUvZW5jb2RpbmcgdmlhIGxp YmlsYmMgW25vXQo+ICAgIC0tZW5hYmxlLWxpYmphY2sgICAgICAgICBlbmFibGUgSkFDSyBhdWRp byBzb3VuZCBzZXJ2ZXIgW25vXQo+ICsgIC0tZW5hYmxlLWxpYmp4bCAgICAgICAgICBlbmFibGUg SlBFRyBYTCBkZWNvZGluZyB2aWEgbGlianhsIFtub10KPiAgICAtLWVuYWJsZS1saWJrbHZhbmMg ICAgICAgZW5hYmxlIEtlcm5lbCBMYWJzIFZBTkMgcHJvY2Vzc2luZyBbbm9dCj4gICAgLS1lbmFi bGUtbGlia3ZhemFhciAgICAgIGVuYWJsZSBIRVZDIGVuY29kaW5nIHZpYSBsaWJrdmF6YWFyIFtu b10KPiAgICAtLWVuYWJsZS1saWJsZW5zZnVuICAgICAgZW5hYmxlIGxlbnNmdW4gbGVucyBjb3Jy ZWN0aW9uIFtub10KPiBAQCAtMTgzMyw2ICsxODM0LDcgQEAgRVhURVJOQUxfTElCUkFSWV9MSVNU PSIKPiAgICAgIGxpYmllYzYxODgzCj4gICAgICBsaWJpbGJjCj4gICAgICBsaWJqYWNrCj4gKyAg ICBsaWJqeGwKPiAgICAgIGxpYmtsdmFuYwo+ICAgICAgbGlia3ZhemFhcgo+ICAgICAgbGlibW9k cGx1Zwo+IEBAIC0zMzMxLDYgKzMzMzMsNyBAQCBsaWJnc21fbXNfZGVjb2Rlcl9kZXBzPSJsaWJn c20iCj4gIGxpYmdzbV9tc19lbmNvZGVyX2RlcHM9ImxpYmdzbSIKPiAgbGliaWxiY19kZWNvZGVy X2RlcHM9ImxpYmlsYmMiCj4gIGxpYmlsYmNfZW5jb2Rlcl9kZXBzPSJsaWJpbGJjIgo+ICtsaWJq eGxfZGVjb2Rlcl9kZXBzPSJsaWJqeGwgbGlianhsX3RocmVhZHMiCj4gIGxpYmt2YXphYXJfZW5j b2Rlcl9kZXBzPSJsaWJrdmF6YWFyIgo+ICBsaWJtb2RwbHVnX2RlbXV4ZXJfZGVwcz0ibGlibW9k cGx1ZyIKPiAgbGlibXAzbGFtZV9lbmNvZGVyX2RlcHM9ImxpYm1wM2xhbWUiCj4gQEAgLTY1NDMs NiArNjU0Niw4IEBAIGVuYWJsZWQgbGliZ3NtICAgICAgICAgICAgJiYgeyBmb3IgZ3NtX2hkciBp biAiZ3NtLmgiICJnc20vZ3NtLmgiOyBkbwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNoZWNrX2xpYiBsaWJnc20gIiR7Z3NtX2hkcn0iIGdzbV9jcmVhdGUgLWxnc20gJiYg YnJlYWs7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lIHx8IGRpZSAiRVJS T1I6IGxpYmdzbSBub3QgZm91bmQiOyB9Cj4gIGVuYWJsZWQgbGliaWxiYyAgICAgICAgICAgJiYg cmVxdWlyZSBsaWJpbGJjIGlsYmMuaCBXZWJSdGNJbGJjZml4X0luaXREZWNvZGUgLWxpbGJjICRw dGhyZWFkc19leHRyYWxpYnMKPiArZW5hYmxlZCBsaWJqeGwgICAgICAgICAgICAmJiByZXF1aXJl X3BrZ19jb25maWcgbGlianhsICJsaWJqeGwgPj0gMC43LjAiIGp4bC9kZWNvZGUuaCBKeGxEZWNv ZGVyVmVyc2lvbiAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVfcGtn X2NvbmZpZyBsaWJqeGxfdGhyZWFkcyAibGlianhsX3RocmVhZHMgPj0gMC43LjAiIGp4bC90aHJl YWRfcGFyYWxsZWxfcnVubmVyLmggSnhsVGhyZWFkUGFyYWxsZWxSdW5uZXIKPiAgZW5hYmxlZCBs aWJrbHZhbmMgICAgICAgICAmJiByZXF1aXJlIGxpYmtsdmFuYyBsaWJrbHZhbmMvdmFuYy5oIGts dmFuY19jb250ZXh0X2NyZWF0ZSAtbGtsdmFuYwo+ICBlbmFibGVkIGxpYmt2YXphYXIgICAgICAg ICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJrdmF6YWFyICJrdmF6YWFyID49IDAuOC4xIiBrdmF6 YWFyLmgga3Z6X2FwaV9nZXQKPiAgZW5hYmxlZCBsaWJsZW5zZnVuICAgICAgICAmJiByZXF1aXJl X3BrZ19jb25maWcgbGlibGVuc2Z1biBsZW5zZnVuIGxlbnNmdW4uaCBsZl9kYl9uZXcKPiBkaWZm IC0tZ2l0IGEvZG9jL2dlbmVyYWxfY29udGVudHMudGV4aSBiL2RvYy9nZW5lcmFsX2NvbnRlbnRz LnRleGkKPiBpbmRleCAyMzg1NjhmMmJiLi45M2E5MGE1ZTUyIDEwMDY0NAo+IC0tLSBhL2RvYy9n ZW5lcmFsX2NvbnRlbnRzLnRleGkKPiArKysgYi9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpCj4g QEAgLTE3MSw2ICsxNzEsMTMgQEAgR28gdG8gQHVybHtodHRwczovL2dpdGh1Yi5jb20vVGltb3Ro eUd1L2xpYmlsYmN9IGFuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBmb3IKPiAgaW5zdGFsbGlu ZyB0aGUgbGlicmFyeS4gVGhlbiBwYXNzIEBjb2Rley0tZW5hYmxlLWxpYmlsYmN9IHRvIGNvbmZp Z3VyZSB0bwo+ICBlbmFibGUgaXQuCj4gIAo+ICtAc2VjdGlvbiBsaWJqeGwKPiArCj4gK0pQRUcg WEwgaXMgYW4gaW1hZ2UgZm9ybWF0IGludGVuZGVkIHRvIGZ1bGx5IHJlcGxhY2UgbGVnYWN5IEpQ RUcgZm9yIGFuIGV4dGVuZGVkCj4gK3BlcmlvZCBvZiBsaWZlLiBTZWUgQHVybHtodHRwczovL2pw ZWd4bC5pbmZvL30gZm9yIG1vcmUgaW5mb3JtYXRpb24sIGFuZCBzZWUKPiArQHVybHtodHRwczov L2dpdGh1Yi5jb20vbGlianhsL2xpYmp4bH0gZm9yIHRoZSBsaWJyYXJ5IHNvdXJjZS4gWW91IGNh biBwYXNzCj4gK0Bjb2Rley0tZW5hYmxlLWxpYmp4bH0gdG8gY29uZmlndXJlIGluIG9yZGVyIGVu YWJsZSB0aGUgbGlianhsIHdyYXBwZXIuCj4gKwo+ICBAc2VjdGlvbiBsaWJ2cHgKPiAgCj4gIEZG bXBlZyBjYW4gbWFrZSB1c2Ugb2YgdGhlIGxpYnZweCBsaWJyYXJ5IGZvciBWUDgvVlA5IGRlY29k aW5nIGFuZCBlbmNvZGluZy4KPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xp YmF2Y29kZWMvTWFrZWZpbGUKPiBpbmRleCA5MGY0NjAzNWQ5Li44ZmMzYjNjYzVmIDEwMDY0NAo+ IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiArKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4g QEAgLTEwNjEsNiArMTA2MSw3IEBAIE9CSlMtJChDT05GSUdfTElCR1NNX01TX0RFQ09ERVIpICAg ICAgICAgICs9IGxpYmdzbWRlYy5vCj4gIE9CSlMtJChDT05GSUdfTElCR1NNX01TX0VOQ09ERVIp ICAgICAgICAgICs9IGxpYmdzbWVuYy5vCj4gIE9CSlMtJChDT05GSUdfTElCSUxCQ19ERUNPREVS KSAgICAgICAgICAgICs9IGxpYmlsYmMubwo+ICBPQkpTLSQoQ09ORklHX0xJQklMQkNfRU5DT0RF UikgICAgICAgICAgICArPSBsaWJpbGJjLm8KPiArT0JKUy0kKENPTkZJR19MSUJKWExfREVDT0RF UikgICAgICAgICAgICAgKz0gbGlianhsZGVjLm8gbGlianhsLm8KPiAgT0JKUy0kKENPTkZJR19M SUJLVkFaQUFSX0VOQ09ERVIpICAgICAgICAgKz0gbGlia3ZhemFhci5vCj4gIE9CSlMtJChDT05G SUdfTElCTVAzTEFNRV9FTkNPREVSKSAgICAgICAgICs9IGxpYm1wM2xhbWUubwo+ICBPQkpTLSQo Q09ORklHX0xJQk9QRU5DT1JFX0FNUk5CX0RFQ09ERVIpICArPSBsaWJvcGVuY29yZS1hbXIubwo+ IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jIGIvbGliYXZjb2RlYy9hbGxjb2Rl Y3MuYwo+IGluZGV4IDU4NTkxOGRhOTMuLjA3ZjViYWZkMjcgMTAwNjQ0Cj4gLS0tIGEvbGliYXZj b2RlYy9hbGxjb2RlY3MuYwo+ICsrKyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKPiBAQCAtNzUx LDYgKzc1MSw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYmdzbV9tc19lbmNvZGVyOwo+ ICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJnc21fbXNfZGVjb2RlcjsKPiAgZXh0ZXJuIGNv bnN0IEZGQ29kZWMgZmZfbGliaWxiY19lbmNvZGVyOwo+ICBleHRlcm4gY29uc3QgRkZDb2RlYyBm Zl9saWJpbGJjX2RlY29kZXI7Cj4gK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYmp4bF9kZWNv ZGVyOwo+ICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJtcDNsYW1lX2VuY29kZXI7Cj4gIGV4 dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYm9wZW5jb3JlX2Ftcm5iX2VuY29kZXI7Cj4gIGV4dGVy biBjb25zdCBGRkNvZGVjIGZmX2xpYm9wZW5jb3JlX2Ftcm5iX2RlY29kZXI7Cj4gZGlmZiAtLWdp dCBhL2xpYmF2Y29kZWMvbGlianhsLmMgYi9saWJhdmNvZGVjL2xpYmp4bC5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi4yMDRkOTFkOGE4Cj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2xpYmF2Y29kZWMvbGlianhsLmMKPiBAQCAtMCwwICsxLDcwIEBACj4gKy8qCj4g KyAqIEpQRUcgWEwgZGUvZW5jb2RpbmcgdmlhIGxpYmp4bCwgY29tbW9uIHN1cHBvcnQgaW1wbGVt ZW50YXRpb24KPiArICogQ29weXJpZ2h0IChjKSAyMDIxIExlbyBJemVuIDxsZW8uaXplbkBnbWFp bC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiAr ICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3 aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIEBmaWxlCj4gKyAqIEpQRUcg WEwgdmlhIGxpYmp4bCBjb21tb24gc3VwcG9ydCBpbXBsZW1lbnRhdGlvbgo+ICsgKi8KPiArCj4g KyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgi Cj4gKwo+ICsjaW5jbHVkZSA8anhsL21lbW9yeV9tYW5hZ2VyLmg+Cj4gKyNpbmNsdWRlICJsaWJq eGwuaCIKPiArCj4gK3NpemVfdCBmZl9saWJqeGxfZ2V0X3RocmVhZGNvdW50KGludCB0aHJlYWRz KQo+ICt7Cj4gKyAgICBpZiAodGhyZWFkcyA8PSAwKQo+ICsgICAgICAgIHJldHVybiBhdl9jcHVf Y291bnQoKTsKPiArICAgIGlmICh0aHJlYWRzID09IDEpCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4g KyAgICByZXR1cm4gdGhyZWFkczsKPiArfQo+ICsKPiArLyoqCj4gKyAqIFdyYXBwZXIgYXJvdW5k IGF2X21hbGxvYyB1c2VkIGFzIGEganBlZ3hsX2FsbG9jX2Z1bmMuCj4gKyAqCj4gKyAqIEBwYXJh bSAgb3BhcXVlIG9wYXF1ZSBwb2ludGVyIGZvciBqcGVneGxfYWxsb2NfZnVuYywgYWx3YXlzIGln bm9yZWQKPiArICogQHBhcmFtICBzaXplIFNpemUgaW4gYnl0ZXMgZm9yIHRoZSBtZW1vcnkgYmxv Y2sgdG8gYmUgYWxsb2NhdGVkCj4gKyAqIEByZXR1cm4gUG9pbnRlciB0byB0aGUgYWxsb2NhdGVk IGJsb2NrLCBvciBgTlVMTGAgaWYgaXQgY2Fubm90IGJlIGFsbG9jYXRlZAo+ICsgKi8KPiArc3Rh dGljIHZvaWQgKmxpYmp4bF9hdl9tYWxsb2Modm9pZCAqb3BhcXVlLCBzaXplX3Qgc2l6ZSkKPiAr ewo+ICsgICAgcmV0dXJuIGF2X21hbGxvYyhzaXplKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIFdy YXBwZXIgYXJvdW5kIGF2X2ZyZWUgdXNlZCBhcyBhIGpwZWd4bF9mcmVlX2Z1bmMuCj4gKyAqCj4g KyAqIEBwYXJhbSBvcGFxdWUgIG9wYXF1ZSBwb2ludGVyIGZvciBqcGVneGxfZnJlZV9mdW5jLCBh bHdheXMgaWdub3JlZAo+ICsgKiBAcGFyYW0gYWRkcmVzcyBQb2ludGVyIHRvIHRoZSBhbGxvY2F0 ZWQgYmxvY2ssIHRvIGZyZWUuIGBOVUxMYCBwZXJtaXR0ZWQgYXMgYSBuby1vcC4KPiArICovCj4g K3N0YXRpYyB2b2lkIGxpYmp4bF9hdl9mcmVlKHZvaWQgKm9wYXF1ZSwgdm9pZCAqYWRkcmVzcykK PiArewo+ICsgICAgYXZfZnJlZShhZGRyZXNzKTsKPiArfQo+ICsKPiArdm9pZCBmZl9saWJqeGxf aW5pdF9tZW1vcnlfbWFuYWdlcihKeGxNZW1vcnlNYW5hZ2VyICptYW5hZ2VyKQo+ICt7Cj4gKyAg ICBtYW5hZ2VyLT5vcGFxdWUgPSBOVUxMOwo+ICsgICAgbWFuYWdlci0+YWxsb2MgPSAmbGlianhs X2F2X21hbGxvYzsKPiArICAgIG1hbmFnZXItPmZyZWUgPSAmbGlianhsX2F2X2ZyZWU7Cj4gK30K PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9saWJqeGwuaCBiL2xpYmF2Y29kZWMvbGlianhsLmgK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjUzODdjNDM4ZmQKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZjb2RlYy9saWJqeGwuaAo+IEBAIC0wLDAgKzEsNDgg QEAKPiArLyoKPiArICogSlBFRyBYTCBkZS9lbmNvZGluZyB2aWEgbGlianhsLCBjb21tb24gc3Vw cG9ydCBoZWFkZXIKPiArICogQ29weXJpZ2h0IChjKSAyMDIxIExlbyBJemVuIDxsZW8uaXplbkBn bWFpbC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoK PiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9u ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIEBmaWxlCj4gKyAqIEpQ RUcgWEwgdmlhIGxpYmp4bCBjb21tb24gc3VwcG9ydCBoZWFkZXIKPiArICovCj4gKwo+ICsjaWZu ZGVmIEFWQ09ERUNfTElCSlhMX0gKPiArI2RlZmluZSBBVkNPREVDX0xJQkpYTF9ICj4gKwo+ICsj aW5jbHVkZSA8anhsL21lbW9yeV9tYW5hZ2VyLmg+Cj4gKwo+ICsvKioKPiArICogVHJhbnNmb3Jt IHRocmVhZGNvdW50IGluIGZmbXBlZyB0byBvbmUgdXNlZCBieSBsaWJqeGwuCj4gKyAqCj4gKyAq IEBwYXJhbSAgdGhyZWFkcyBmZm1wZWcncyB0aHJlYWRzIEFWT3B0aW9uCj4gKyAqIEByZXR1cm4g ICAgICAgICB0aHJlYWQgY291bnQgZm9yIGxpYmp4bCdzIHBhcmFsbGVsIHJ1bm5lcgo+ICsgKi8K PiArc2l6ZV90IGZmX2xpYmp4bF9nZXRfdGhyZWFkY291bnQoaW50IHRocmVhZHMpOwo+ICsKPiAr LyoqCj4gKyAqIEluaXRpYWxpemUgYW5kIHBvcHVsYXRlIGEgSnhsTWVtb3J5TWFuYWdlcgo+ICsg KiB3aXRoIGF2X21hbGxvYygpIGFuZCBhdl9mcmVlKCkgc28gbGlianhsIHdpbGwgdXNlIHRoZXNl Cj4gKyAqIGZ1bmN0aW9ucy4KPiArICogQHBhcmFtIG1hbmFnZXIgYSBwb2ludGVyIHRvIGEgSnhs TWVtb3J5TWFuYWdlciBzdHJ1Y3QKPiArICovCj4gK3ZvaWQgZmZfbGlianhsX2luaXRfbWVtb3J5 X21hbmFnZXIoSnhsTWVtb3J5TWFuYWdlciAqbWFuYWdlcik7Cj4gKwo+ICsjZW5kaWYgLyogQVZD T0RFQ19MSUJKWExfSCAqLwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xpYmp4bGRlYy5jIGIv bGliYXZjb2RlYy9saWJqeGxkZWMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMDAwMC4uYTdkMjA1YjA4MQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdmNvZGVjL2xp Ymp4bGRlYy5jCj4gQEAgLTAsMCArMSwyNzQgQEAKPiArLyoKPiArICogSlBFRyBYTCBkZWNvZGlu ZyBzdXBwb3J0IHZpYSBsaWJqeGwKPiArICogQ29weXJpZ2h0IChjKSAyMDIxIExlbyBJemVuIDxs ZW8uaXplbkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBl Zy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiAr ICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGlj ZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y LCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIEBmaWxl Cj4gKyAqIEpQRUcgWEwgZGVjb2RlciB1c2luZyBsaWJqeGwKPiArICovCj4gKwo+ICsjaW5jbHVk ZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYnVmZmVyLmgi Cj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvY29tbW9uLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwv ZXJyb3IuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKPiArI2luY2x1ZGUgImxpYmF2 dXRpbC9waXhkZXNjLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvcGl4Zm10LmgiCj4gKyNpbmNs dWRlICJsaWJhdnV0aWwvZnJhbWUuaCIKPiArCj4gKyNpbmNsdWRlICJhdmNvZGVjLmgiCj4gKyNp bmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgo+ICsjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPiArCj4g KyNpbmNsdWRlIDxqeGwvZGVjb2RlLmg+Cj4gKyNpbmNsdWRlIDxqeGwvdGhyZWFkX3BhcmFsbGVs X3J1bm5lci5oPgo+ICsjaW5jbHVkZSAibGlianhsLmgiCj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBM aWJKeGxEZWNvZGVDb250ZXh0IHsKPiArICAgIHZvaWQgKnJ1bm5lcjsKPiArICAgIEp4bERlY29k ZXIgKmRlY29kZXI7Cj4gKyAgICBKeGxCYXNpY0luZm8gYmFzaWNfaW5mbzsKPiArICAgIEp4bFBp eGVsRm9ybWF0IGp4bF9waXhmbXQ7Cj4gKyAgICBKeGxEZWNvZGVyU3RhdHVzIGV2ZW50czsKPiAr ICAgIEFWQnVmZmVyUmVmICppY2NwOwo+ICt9IExpYkp4bERlY29kZUNvbnRleHQ7Cj4gKwo+ICtz dGF0aWMgaW50IGxpYmp4bF9pbml0X2p4bF9kZWNvZGVyKEFWQ29kZWNDb250ZXh0ICphdmN0eCkK PiArewo+ICsgICAgTGliSnhsRGVjb2RlQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsK PiArCj4gKyAgICBjdHgtPmV2ZW50cyA9IEpYTF9ERUNfQkFTSUNfSU5GTyB8IEpYTF9ERUNfRlVM TF9JTUFHRSB8IEpYTF9ERUNfQ09MT1JfRU5DT0RJTkc7Cj4gKyAgICBpZiAoSnhsRGVjb2RlclN1 YnNjcmliZUV2ZW50cyhjdHgtPmRlY29kZXIsIGN0eC0+ZXZlbnRzKSAhPSBKWExfREVDX1NVQ0NF U1MpIHsKPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVycm9yIHN1YnNj cmliaW5nIHRvIEpYTCBldmVudHNcbiIpOwo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVS TkFMOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChKeGxEZWNvZGVyU2V0UGFyYWxsZWxSdW5uZXIo Y3R4LT5kZWNvZGVyLCBKeGxUaHJlYWRQYXJhbGxlbFJ1bm5lciwgY3R4LT5ydW5uZXIpICE9IEpY TF9ERUNfU1VDQ0VTUykgewo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAi RmFpbGVkIHRvIHNldCBKeGxUaHJlYWRQYXJhbGxlbFJ1bm5lclxuIik7Cj4gKyAgICAgICAgcmV0 dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgbWVtc2V0KCZjdHgtPmJh c2ljX2luZm8sIDAsIHNpemVvZihKeGxCYXNpY0luZm8pKTsKPiArICAgIG1lbXNldCgmY3R4LT5q eGxfcGl4Zm10LCAwLCBzaXplb2YoSnhsUGl4ZWxGb3JtYXQpKTsKPiArCj4gKyAgICByZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGF2X2NvbGQgaW50IGxpYmp4bF9kZWNvZGVfaW5pdChBVkNv ZGVjQ29udGV4dCAqYXZjdHgpCj4gK3sKPiArICAgIExpYkp4bERlY29kZUNvbnRleHQgKmN0eCA9 IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICBKeGxNZW1vcnlNYW5hZ2VyIG1hbmFnZXI7Cj4gKwo+ ICsgICAgZmZfbGlianhsX2luaXRfbWVtb3J5X21hbmFnZXIoJm1hbmFnZXIpOwo+ICsgICAgY3R4 LT5kZWNvZGVyID0gSnhsRGVjb2RlckNyZWF0ZSgmbWFuYWdlcik7Cj4gKyAgICBpZiAoIWN0eC0+ ZGVjb2Rlcikgewo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVk IHRvIGNyZWF0ZSBKeGxEZWNvZGVyXG4iKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRF Uk5BTDsKPiArICAgIH0KPiArCj4gKyAgICBjdHgtPnJ1bm5lciA9IEp4bFRocmVhZFBhcmFsbGVs UnVubmVyQ3JlYXRlKCZtYW5hZ2VyLCBmZl9saWJqeGxfZ2V0X3RocmVhZGNvdW50KGF2Y3R4LT50 aHJlYWRfY291bnQpKTsKPiArICAgIGlmICghY3R4LT5ydW5uZXIpIHsKPiArICAgICAgICBhdl9s b2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBjcmVhdGUgSnhsVGhyZWFkUGFyYWxs ZWxSdW5uZXJcbiIpOwo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwo+ICsgICAg fQo+ICsKPiArICAgIHJldHVybiBsaWJqeGxfaW5pdF9qeGxfZGVjb2RlcihhdmN0eCk7Cj4gK30K PiArCj4gK3N0YXRpYyBlbnVtIEFWUGl4ZWxGb3JtYXQgbGlianhsX2dldF9waXhfZm10KEFWQ29k ZWNDb250ZXh0ICphdmN0eCwgSnhsQmFzaWNJbmZvICpiYXNpY19pbmZvLCBKeGxQaXhlbEZvcm1h dCAqZm9ybWF0KQo+ICt7Cj4gKyAgICBmb3JtYXQtPmVuZGlhbm5lc3MgPSBKWExfTkFUSVZFX0VO RElBTjsKPiArICAgIGZvcm1hdC0+bnVtX2NoYW5uZWxzID0gYmFzaWNfaW5mby0+bnVtX2NvbG9y X2NoYW5uZWxzICsgKGJhc2ljX2luZm8tPmFscGhhX2JpdHMgPiAwKTsKPiArICAgIC8qIEdyYXkg Ki8KPiArICAgIGlmIChiYXNpY19pbmZvLT5udW1fY29sb3JfY2hhbm5lbHMgPT0gMSkgewo+ICsg ICAgICAgIGlmIChiYXNpY19pbmZvLT5iaXRzX3Blcl9zYW1wbGUgPD0gOCkgewo+ICsgICAgICAg ICAgICBmb3JtYXQtPmRhdGFfdHlwZSA9IEpYTF9UWVBFX1VJTlQ4Owo+ICsgICAgICAgICAgICBy ZXR1cm4gYmFzaWNfaW5mby0+YWxwaGFfYml0cyA/IEFWX1BJWF9GTVRfWUE4IDogQVZfUElYX0ZN VF9HUkFZODsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaWYgKGJhc2ljX2luZm8tPmV4cG9uZW50 X2JpdHNfcGVyX3NhbXBsZSB8fCBiYXNpY19pbmZvLT5iaXRzX3Blcl9zYW1wbGUgPiAxNikgewo+ ICsgICAgICAgICAgICBpZiAoYmFzaWNfaW5mby0+YWxwaGFfYml0cykKPiArICAgICAgICAgICAg ICAgIHJldHVybiBBVl9QSVhfRk1UX05PTkU7Cj4gKyAgICAgICAgICAgIGZvcm1hdC0+ZGF0YV90 eXBlID0gSlhMX1RZUEVfRkxPQVQ7Cj4gKyAgICAgICAgICAgIHJldHVybiBBVl9QSVhfRk1UX0dS QVlGMzI7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGZvcm1hdC0+ZGF0YV90eXBlID0gSlhMX1RZ UEVfVUlOVDE2Owo+ICsgICAgICAgIHJldHVybiBiYXNpY19pbmZvLT5hbHBoYV9iaXRzID8gQVZf UElYX0ZNVF9ZQTE2IDogQVZfUElYX0ZNVF9HUkFZMTY7Cj4gKyAgICB9Cj4gKyAgICAvKiByZ2Ig b25seSAqLwo+ICsgICAgLyogbGlianhsIG9ubHkgc3VwcG9ydHMgcGFja2VkIFJHQiBhbmQgZ3Jh eSBvdXRwdXQgYXQgdGhlIG1vbWVudCAqLwo+ICsgICAgaWYgKGJhc2ljX2luZm8tPm51bV9jb2xv cl9jaGFubmVscyA9PSAzKSB7Cj4gKyAgICAgICAgaWYgKGJhc2ljX2luZm8tPmJpdHNfcGVyX3Nh bXBsZSA8PSA4KSB7Cj4gKyAgICAgICAgICAgIGZvcm1hdC0+ZGF0YV90eXBlID0gSlhMX1RZUEVf VUlOVDg7Cj4gKyAgICAgICAgICAgIHJldHVybiBiYXNpY19pbmZvLT5hbHBoYV9iaXRzID8gQVZf UElYX0ZNVF9SR0JBIDogQVZfUElYX0ZNVF9SR0IyNDsKPiArICAgICAgICB9Cj4gKyAgICAgICAg aWYgKGJhc2ljX2luZm8tPmJpdHNfcGVyX3NhbXBsZSA+IDE2KQo+ICsgICAgICAgICAgICBhdl9s b2coYXZjdHgsIEFWX0xPR19XQVJOSU5HLCAiRG93bnNhbXBsaW5nIGxhcmdlciBpbnRlZ2VyIHRv IDE2LWJpdCB2aWEgbGlianhsXG4iKTsKPiArICAgICAgICBpZiAoYmFzaWNfaW5mby0+ZXhwb25l bnRfYml0c19wZXJfc2FtcGxlKQo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19X QVJOSU5HLCAiRG93bnNhbXBsaW5nIGZsb2F0IHRvIDE2LWJpdCBpbnRlZ2VyIHZpYSBsaWJqeGxc biIpOwo+ICsgICAgICAgIGZvcm1hdC0+ZGF0YV90eXBlID0gSlhMX1RZUEVfVUlOVDE2Owo+ICsg ICAgICAgIHJldHVybiBiYXNpY19pbmZvLT5hbHBoYV9iaXRzID8gQVZfUElYX0ZNVF9SR0JBNjQg OiBBVl9QSVhfRk1UX1JHQjQ4Owo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiBBVl9QSVhfRk1U X05PTkU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGlianhsX2RlY29kZV9mcmFtZShBVkNvZGVj Q29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLCBpbnQgKmdvdF9mcmFtZSwgQVZQYWNrZXQg KmF2cGt0KQo+ICt7Cj4gKyAgICBMaWJKeGxEZWNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJp dl9kYXRhOwo+ICsgICAgdWludDhfdCAqYnVmID0gYXZwa3QtPmRhdGE7Cj4gKyAgICBzaXplX3Qg cmVtYWluaW5nID0gYXZwa3QtPnNpemUsIGljY3BfbGVuOwo+ICsgICAgSnhsRGVjb2RlclN0YXR1 cyBqcmV0Owo+ICsgICAgaW50IHJldDsKPiArICAgICpnb3RfZnJhbWUgPSAwOwo+ICsKPiArICAg IHdoaWxlICgxKSB7Cj4gKwo+ICsgICAgICAgIGpyZXQgPSBKeGxEZWNvZGVyU2V0SW5wdXQoY3R4 LT5kZWNvZGVyLCBidWYsIHJlbWFpbmluZyk7Cj4gKwo+ICsgICAgICAgIGlmIChqcmV0ID09IEpY TF9ERUNfRVJST1IpIHsKPiArICAgICAgICAgICAgLyogdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVu IGhlcmUgdW5sZXNzIHRoZXJlJ3MgYSBidWcgaW4gbGlianhsICovCj4gKyAgICAgICAgICAgIGF2 X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiVW5rbm93biBsaWJqeGwgZGVjb2RlIGVycm9yXG4i KTsKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gKyAgICAgICAgfQo+ ICsKPiArICAgICAgICBqcmV0ID0gSnhsRGVjb2RlclByb2Nlc3NJbnB1dChjdHgtPmRlY29kZXIp Owo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogSnhsRGVjb2RlclJlbGVhc2VJbnB1dCByZXR1 cm5zIHRoZSBudW1iZXIKPiArICAgICAgICAgKiBvZiBieXRlcyByZW1haW5pbmcgdG8gYmUgcmVh ZCwgcmF0aGVyIHRoYW4KPiArICAgICAgICAgKiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaXQg ZGlkIHJlYWQKPiArICAgICAgICAgKi8KPiArICAgICAgICByZW1haW5pbmcgPSBKeGxEZWNvZGVy UmVsZWFzZUlucHV0KGN0eC0+ZGVjb2Rlcik7Cj4gKyAgICAgICAgYnVmID0gYXZwa3QtPmRhdGEg KyBhdnBrdC0+c2l6ZSAtIHJlbWFpbmluZzsKPiArCj4gKyAgICAgICAgc3dpdGNoKGpyZXQpIHsK PiArICAgICAgICBjYXNlIEpYTF9ERUNfRVJST1I6Cj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0VSUk9SLCAiVW5rbm93biBsaWJqeGwgZGVjb2RlIGVycm9yXG4iKTsKPiArICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAgICAgY2FzZSBKWExf REVDX05FRURfTU9SRV9JTlBVVDoKPiArICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA9PSAwKSB7 Cj4gKyAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIlVuZXhwZWN0 ZWQgZW5kIG9mIEpYTCBjb2Rlc3RyZWFtXG4iKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGF2X2xv ZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiTkVFRF9NT1JFX0lOUFVUIGV2ZW50IGVtaXR0ZWRcbiIp Owo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICBjYXNlIEpYTF9ERUNfQkFTSUNf SU5GTzoKPiArICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJCQVNJQ19J TkZPIGV2ZW50IGVtaXR0ZWRcbiIpOwo+ICsgICAgICAgICAgICBpZiAoSnhsRGVjb2RlckdldEJh c2ljSW5mbyhjdHgtPmRlY29kZXIsICZjdHgtPmJhc2ljX2luZm8pICE9IEpYTF9ERUNfU1VDQ0VT Uykgewo+ICsgICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICAqIHRoaXMgc2hv dWxkIG5ldmVyIGhhcHBlbgo+ICsgICAgICAgICAgICAgICAgICogaWYgaXQgZG9lcyBpdCBpcyBs aWtlbHkgYSBsaWJqeGwgZGVjb2RlciBidWcKPiArICAgICAgICAgICAgICAgICAqLwo+ICsgICAg ICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJCYWQgbGlianhsIGJhc2lj IGluZm8gZXZlbnRcbiIpOwo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJO QUw7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgYXZjdHgtPnBpeF9mbXQgPSBsaWJq eGxfZ2V0X3BpeF9mbXQoYXZjdHgsICZjdHgtPmJhc2ljX2luZm8sICZjdHgtPmp4bF9waXhmbXQp Owo+ICsgICAgICAgICAgICBpZiAoYXZjdHgtPnBpeF9mbXQgPT0gQVZfUElYX0ZNVF9OT05FKSB7 Cj4gKyAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkJhZCBsaWJq eGwgcGl4ZWwgZm9ybWF0XG4iKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0VY VEVSTkFMOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIHJldCA9IGZmX3NldF9kaW1l bnNpb25zKGF2Y3R4LCBjdHgtPmJhc2ljX2luZm8ueHNpemUsIGN0eC0+YmFzaWNfaW5mby55c2l6 ZSk7Cj4gKyAgICAgICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgY2FzZSBKWExfREVDX0NP TE9SX0VOQ09ESU5HOgo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywg IkNPTE9SX0VOQ09ESU5HIGV2ZW50IGVtaXR0ZWRcbiIpOwo+ICsgICAgICAgICAgICBqcmV0ID0g SnhsRGVjb2RlckdldElDQ1Byb2ZpbGVTaXplKGN0eC0+ZGVjb2RlciwgJmN0eC0+anhsX3BpeGZt dCwgSlhMX0NPTE9SX1BST0ZJTEVfVEFSR0VUX09SSUdJTkFMLCAmaWNjcF9sZW4pOwo+ICsgICAg ICAgICAgICBpZiAoanJldCA9PSBKWExfREVDX1NVQ0NFU1MgJiYgaWNjcF9sZW4gPiAwKSB7Cj4g KyAgICAgICAgICAgICAgICBhdl9idWZmZXJfdW5yZWYoJmN0eC0+aWNjcCk7Cj4gKyAgICAgICAg ICAgICAgICBjdHgtPmljY3AgPSBhdl9idWZmZXJfYWxsb2MoaWNjcF9sZW4pOwo+ICsgICAgICAg ICAgICAgICAgaWYgKCFjdHgtPmljY3ApCj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKPiArICAgICAgICAgICAgICAgIGpyZXQgPSBKeGxEZWNvZGVyR2V0Q29s b3JBc0lDQ1Byb2ZpbGUoY3R4LT5kZWNvZGVyLCAmY3R4LT5qeGxfcGl4Zm10LCBKWExfQ09MT1Jf UFJPRklMRV9UQVJHRVRfT1JJR0lOQUwsIGN0eC0+aWNjcC0+ZGF0YSwgaWNjcF9sZW4pOwo+ICsg ICAgICAgICAgICAgICAgaWYgKGpyZXQgIT0gSlhMX0RFQ19TVUNDRVNTKQo+ICsgICAgICAgICAg ICAgICAgICAgIGF2X2J1ZmZlcl91bnJlZigmY3R4LT5pY2NwKTsKPiArICAgICAgICAgICAgfQo+ ICsgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICBjYXNlIEpYTF9ERUNfTkVFRF9JTUFH RV9PVVRfQlVGRkVSOgo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywg Ik5FRURfSU1BR0VfT1VUX0JVRkZFUiBldmVudCBlbWl0dGVkXG4iKTsKPiArICAgICAgICAgICAg cmV0ID0gZmZfZ2V0X2J1ZmZlcihhdmN0eCwgZnJhbWUsIDApOwo+ICsgICAgICAgICAgICBpZiAo cmV0IDwgMCkKPiArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgICAgIGN0 eC0+anhsX3BpeGZtdC5hbGlnbiA9IGZyYW1lLT5saW5lc2l6ZVswXTsKPiArICAgICAgICAgICAg aWYgKEp4bERlY29kZXJTZXRJbWFnZU91dEJ1ZmZlcihjdHgtPmRlY29kZXIsICZjdHgtPmp4bF9w aXhmbXQsIGZyYW1lLT5kYXRhWzBdLCBmcmFtZS0+YnVmWzBdLT5zaXplKSAhPSBKWExfREVDX1NV Q0NFU1MpIHsKPiArICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAi QmFkIGxpYmp4bCBkZWMgbmVlZCBpbWFnZSBvdXQgYnVmZmVyIGV2ZW50XG4iKTsKPiArICAgICAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwo+ICsgICAgICAgICAgICB9Cj4gKyAg ICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIGNhc2UgSlhMX0RFQ19GVUxMX0lNQUdFOgo+ ICsgICAgICAgICAgICAvKiBmdWxsIGltYWdlIGlzIG9uZSBmcmFtZSwgZXZlbiBpZiBhbmltYXRl ZCAqLwo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIkZVTExfSU1B R0UgZXZlbnQgZW1pdHRlZFxuIik7Cj4gKyAgICAgICAgICAgICpnb3RfZnJhbWUgPSAxOwoKT25s eSBzZXQgdGhpcyBhZnRlciB5b3Uga25vdyB0aGF0IHlvdSByZXR1cm4gc3VjY2Vzc2Z1bGx5IChp LmUuIGFmdGVyCnRoZSBhdl9mcmFtZV9uZXdfc2lkZV9kYXRhX2Zyb21fYnVmKCkpLgoKPiArICAg ICAgICAgICAgZnJhbWUtPnBpY3RfdHlwZSA9IEFWX1BJQ1RVUkVfVFlQRV9JOwo+ICsgICAgICAg ICAgICBmcmFtZS0+a2V5X2ZyYW1lID0gMTsKPiArICAgICAgICAgICAgaWYgKGN0eC0+aWNjcCkg ewo+ICsgICAgICAgICAgICAgICAgQVZGcmFtZVNpZGVEYXRhICpzZCA9IGF2X2ZyYW1lX25ld19z aWRlX2RhdGFfZnJvbV9idWYoZnJhbWUsIEFWX0ZSQU1FX0RBVEFfSUNDX1BST0ZJTEUsIGN0eC0+ aWNjcCk7Cj4gKyAgICAgICAgICAgICAgICBpZiAoIXNkKQo+ICsgICAgICAgICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKyAgICAgICAgICAgICAgICAvKiBvd25lcnNoaXAg aXMgdHJhbnNmZXJlZCwgYW5kIGl0IGlzIG5vdCByZWYtZWQgKi8KPiArICAgICAgICAgICAgICAg IGN0eC0+aWNjcCA9IE5VTEw7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgcmV0dXJu IGF2cGt0LT5zaXplIC0gcmVtYWluaW5nOwoKSWYgdGhpcyBkZWNvZGVyIGlzIHN1cHBvc2VkIHRv IHByb2R1Y2UgbXVsdGlwbGUgZnJhbWVzIGZyb20gb25lIHBhY2tldApvZiBpbnB1dCwgaXQgbmVl ZHMgdG8gdXNlIHRoZSByZWNlaXZlX2ZyYW1lLWNhbGxiYWNrLiBGb3IgdmlkZW8KZGVjb2RlcnMs IGl0IGlzIG9ubHkgY2hlY2tlZCB3aGV0aGVyIHRoZSByZXR1cm4gdmFsdWUgaXMgPj0gMCBvciBu b3QKKHNlZSBsaW5lcyA0NTEtNDU2IGluIGRlY29kZS5jKS4KCj4gKyAgICAgICAgY2FzZSBKWExf REVDX1NVQ0NFU1M6Cj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAi U1VDQ0VTUyBldmVudCBlbWl0dGVkXG4iKTsKPiArICAgICAgICAgICAgLyoKPiArICAgICAgICAg ICAgICogVGhlIGZpbGUgaGFzIGZpbmlzaGVkIGRlY29kaW5nCj4gKyAgICAgICAgICAgICAqIHJl c2V0IHRoZSBkZWNvZGVyIHRvIGxldCB1cwo+ICsgICAgICAgICAgICAgKiByZXVzZSBpdCBhZ2Fp biBmb3IgdGhlIG5leHQgaW1hZ2UKPiArICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgIEp4 bERlY29kZXJSZXNldChjdHgtPmRlY29kZXIpOwo+ICsgICAgICAgICAgICBsaWJqeGxfaW5pdF9q eGxfZGVjb2RlcihhdmN0eCk7CgpZb3UgYXJlIG9ubHkgcmVzZXR0aW5nIHRoZSBkZWNvZGVyIG9u IHN1Y2Nlc3MuIFdoYXQgaGFwcGVucyBpZiBhbnkgb2YKdGhlIGVycm9ycyBoYXBwZW5lZD8gV291 bGQgdGhlIGRlY29kZXIgbmVlZCB0byBiZSByZXNldCBiZWZvcmUgZGVjb2RpbmcKdGhlIG5leHQg cGljdHVyZT8KCj4gKyAgICAgICAgICAgIGJ1ZiA9IGF2cGt0LT5kYXRhOwo+ICsgICAgICAgICAg ICByZW1haW5pbmcgPSBhdnBrdC0+c2l6ZTsKPiArICAgICAgICAgICAgY29udGludWU7CgpEaWRu J3QgeW91IGFscmVhZHkgZmVlZCB0aGlzIGRhdGEgdG8gdGhlIGRlY29kZXI/IFRoaXMgc29tZWhv dyBsb29rcwpsaWtlIGEgcmVjaXBlIGZvciBhbiBpbmZpbml0ZSBsb29wLgoKPiArICAgICAgICBk ZWZhdWx0Ogo+ICsgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJCYWQg bGlianhsIGV2ZW50OiAlZFxuIiwganJldCk7Cj4gKyAgICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9FWFRFUk5BTDsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiArCj4gK3N0YXRpYyBhdl9j b2xkIGludCBsaWJqeGxfZGVjb2RlX2Nsb3NlKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPiArewo+ ICsgICAgTGliSnhsRGVjb2RlQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXZfZGF0YTsKPiArCj4g KyAgICBpZiAoY3R4LT5ydW5uZXIpCj4gKyAgICAgICAgSnhsVGhyZWFkUGFyYWxsZWxSdW5uZXJE ZXN0cm95KGN0eC0+cnVubmVyKTsKPiArICAgIGN0eC0+cnVubmVyID0gTlVMTDsKPiArICAgIGlm IChjdHgtPmRlY29kZXIpCj4gKyAgICAgICAgSnhsRGVjb2RlckRlc3Ryb3koY3R4LT5kZWNvZGVy KTsKPiArICAgIGN0eC0+ZGVjb2RlciA9IE5VTEw7Cj4gKyAgICBhdl9idWZmZXJfdW5yZWYoJmN0 eC0+aWNjcCk7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2NvbnN0IEZGQ29kZWMg ZmZfbGlianhsX2RlY29kZXIgPSB7Cj4gKyAgICAucC5uYW1lICAgICAgICAgICA9ICJsaWJqeGwi LAo+ICsgICAgLnAubG9uZ19uYW1lICAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgibGlianhs IEpQRUcgWEwiKSwKPiArICAgIC5wLnR5cGUgICAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVP LAo+ICsgICAgLnAuaWQgICAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9KUEVHWEwsCj4gKyAgICAu cHJpdl9kYXRhX3NpemUgICA9IHNpemVvZihMaWJKeGxEZWNvZGVDb250ZXh0KSwKPiArICAgIC5p bml0ICAgICAgICAgICAgID0gbGlianhsX2RlY29kZV9pbml0LAo+ICsgICAgRkZfQ09ERUNfREVD T0RFX0NCKGxpYmp4bF9kZWNvZGVfZnJhbWUpLAo+ICsgICAgLmNsb3NlICAgICAgICAgICAgPSBs aWJqeGxfZGVjb2RlX2Nsb3NlLAo+ICsgICAgLnAuY2FwYWJpbGl0aWVzICAgPSBBVl9DT0RFQ19D QVBfRFIxIHwgQVZfQ09ERUNfQ0FQX09USEVSX1RIUkVBRFMsCj4gKyAgICAuY2Fwc19pbnRlcm5h bCAgICA9IEZGX0NPREVDX0NBUF9BVVRPX1RIUkVBRFMgfCBGRl9DT0RFQ19DQVBfSU5JVF9DTEVB TlVQLAo+ICsgICAgLnAud3JhcHBlcl9uYW1lICAgPSAibGlianhsIiwKPiArfTsKCi0gQW5kcmVh cwoKUFM6IEkgYXBvbG9naXplIGluIGFkdmFuY2UgaWYgYW55IG9mIHRoZSBhYm92ZSBwb2ludHMg aGFzIGFscmVhZHkgYmVlbgpyYWlzZWQgYW5kIHNob3duIHRvIGJlIG5vbi1pc3N1ZXMuCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1Ympl Y3QgInVuc3Vic2NyaWJlIi4K