From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 8201F4D15C
	for <ffmpegdev@gitmailbox.com>; Wed, 16 Apr 2025 06:27:41 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8121A687B93;
	Wed, 16 Apr 2025 09:27:35 +0300 (EEST)
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12olkn2091.outbound.protection.outlook.com [40.92.21.91])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 507DD687B93
 for <ffmpeg-devel@ffmpeg.org>; Wed, 16 Apr 2025 09:27:28 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Zo/cnBMEE4OXYzFXAp+TI65sGEzNC5FcsZxZsShixCR0p1Wpa3ThwIGam4nzddmK1Ro+7mcfcvW5but+V7QP+gA4C7dUAnCFXcZ0o2BN/FCtB8lR+tbfxuA6epbKQhbx5K3xrRmWeWmU2jPSOATHQVwAo+mzoZjvp4bFXc0T0ZTlgJFoZT3gw+y9gDxSmaAoTCva+YtUP/JeR6JfnZzt0YJsdU6MqtwUQnhr+C7A2blzTF5VwLEpEO/4iZxy1sh9MB/k9eWeAOnVEYT7gdvp/fdTQhPhcSeB026zAW/o5IISl9xL34mMHKy3W/DgqwfofaWRJoC0/OVbbhJfbEXRWQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=at4o09Ce+dfBVhBE5m6ifEcxYDET70Wr2HyPpvs4Ojo=;
 b=J622R3yOcZfkKEOzTX5LG/IX8eSRCt6PDHEfqUZMr8gXyjqspzIxShww3i7wk/1yxkYuxUyFGDWnnmKths57O86MOitsdiolI5NS3ctBCZjFF1fyfGoCKdVgoUetQWTXT0ftb9vIug6cBcC3+qmGHamUjLzBn0ey9Y3ctBXvJP5SAseBN8OeZz0KSjwU2uVzth7DSSdm/yJCbrT9ulvMN7mXmPnGTAR7MKmVK9KjSNNXMzpNTLAWuH3i5YlYms6Qz4WOMOgnOP8YQvW4ooBE6LidlzgoZ+24/dqglV3S3447rqsAOy5dhZu3Q/qdYh+OF666VcdEcYzAXopcmQ8UQA==
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=hotmail.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=at4o09Ce+dfBVhBE5m6ifEcxYDET70Wr2HyPpvs4Ojo=;
 b=F74Z1L8rRnrUO6tfge1C86Ce0s8OIzf5fimcEkv1wndGcY/995p3ac+cK0mp58t6ruq4SkQKVyi9evtCHEiHMERlnpeVCEmpaorLm8jlEgYKJDcihixlVYCy/5OEwA4osEY2FGRP4S0dPOc783+Nm+ltYLGPVsz/COC23goRqanQRQLyhZuG/1lrsdmmvUkm4pGMoVSdeEk3EnPGT8GJPGcebI6q3QVw+Ck3Qxv+behnW6GLqoIEpkOiAdc7ddTXpn0du4+F/6sc1PyQ0kB7cqp8LhscPxG6ysH0ZdV47jFdmyAjDpBmLuwGSN+n1TaEw40wdGPqyYaU26HuYLugwg==
Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by
 PH3PPFF9D1C34EA.NAMP223.PROD.OUTLOOK.COM (2603:10b6:518:1::547) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.32; Wed, 16 Apr
 2025 06:27:24 +0000
Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
 ([fe80::bf09:8e9:b07f:98a7]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
 ([fe80::bf09:8e9:b07f:98a7%4]) with mapi id 15.20.8632.030; Wed, 16 Apr 2025
 06:27:24 +0000
From: "softworkz ." <softworkz-at-hotmail.com@ffmpeg.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Thread-Topic: [FFmpeg-devel] [PATCH 2/9] fftools/textformat: Quality
 improvements
Thread-Index: AQHbrTth1w+2rYOrWU2mhQ1ZN1rSQ7Oj6pAAgAALFfCAAcYdAIAABaAQ
Date: Wed, 16 Apr 2025 06:27:23 +0000
Message-ID: <DM8P223MB036508E3C3044737A1989524BABD2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
References: <pull.66.ffstaging.FFmpeg.1744634826.ffmpegagent@gmail.com>
 <04cce9150062afbe63fcf54af0f8480c386f4286.1744634827.git.ffmpegagent@gmail.com>
 <GV1P250MB073708D33D46AB881810F1728FB22@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
 <DM8P223MB03659AF3483E00EC43597670BAB22@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
 <GV1P250MB073716AA776C301A980CB90B8FBD2@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
In-Reply-To: <GV1P250MB073716AA776C301A980CB90B8FBD2@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM8P223MB0365:EE_|PH3PPFF9D1C34EA:EE_
x-ms-office365-filtering-correlation-id: 7a29a3bb-a80d-49e9-feee-08dd7cafc013
x-microsoft-antispam: BCL:0;
 ARA:14566002|8062599003|19110799003|8060799006|15080799006|7092599003|461199028|3412199025|440099028|18061999006|41001999003|102099032;
x-microsoft-antispam-message-info: =?utf-8?B?dldhaVpSV2d6dXdGdFNFVnZjKzRNeHFUdmQzcEJqbTVBR1VvQ3BYbDJ0OGtD?=
 =?utf-8?B?bFhaREhWUFArYWJiMHBpZUZaMUVFeUtZdlRzb3ZvK3FWcytLcXVaaTFoL3Mx?=
 =?utf-8?B?aDdteTAxdG1DWlNrd09aVlluajF2S3k4Ky9DK0hYT1J3eGxQVVpibnIzZmJj?=
 =?utf-8?B?bXdRb0RCNU5xWG00NTBEWHNOczFHNndYcytGQlNhVW1RUm1TN0tYRk5CMDE1?=
 =?utf-8?B?d0FmdjlMeVVVYWo5SEdJKzdZZ2JyMitvUDJaeTdGdGdBV0loQnk5cEJnTThl?=
 =?utf-8?B?akhHSExVaUhZb2s3S2hCbStHWGw1K2dLUEFWVzVENFlLTElxMVJWWHBhWXhy?=
 =?utf-8?B?ek12QWpJTytxazlQNEhYMUpXRWIxZVNpSjFPNjFKaUlZQlpQY2lhdy9lY2JQ?=
 =?utf-8?B?NkUyak41V2NYZFZEOVd4SThWQ0JyTjV3S1hFVGdzcXBMRGVsbXBwZEdjdGtq?=
 =?utf-8?B?aEFxWFJ3WDJzWmxtakQwYkMvUUlUMlMraDEvT3Y5Y2QzTHpKSHlhbENWdVN4?=
 =?utf-8?B?emlKTzRCWXMwMzdLZ3ZnQjFtcTFPWjNrSlVodGhkelNyZVRDbGM5aWRsNTRZ?=
 =?utf-8?B?dHl2Ulc5cVN2citYTWdqK25mMEpJSTZQRGl5S0pEcm5heFA3RFY4c3d6eDBZ?=
 =?utf-8?B?RGNiVUhXMXl4ZW54bGFsdXM3N1FtbWpRZk8xb3BML0VncWR4VVBTN1RrMWxT?=
 =?utf-8?B?aitlWkxEVTVka0lPSEtzQUJHWHptZ0NpRndxZjV3ME1pMFVuVitVb0NWam1M?=
 =?utf-8?B?OXl0bW5MSUR6QWpIYXFtNUJSTURmcG1mYmVBRU9pbkZ6SWlrNkRzZlZ4Mk1X?=
 =?utf-8?B?MGZpZE9Ka3R1MnRvOWZOc1VabGtPclhIa0RzV1VHUnF1bTc4RUszblg3UEZM?=
 =?utf-8?B?SWE4L2gybURaOVdLV0Z6NlRJcGVPckxES1FtRmdvSWlZOElFRFFSYWk3b1gz?=
 =?utf-8?B?cnNnYWpvdnIxSDlENERCUGlISnlmRjMwbjBiRW5oMmthV3h4Z2llQ1ZOZE9D?=
 =?utf-8?B?dHZaYmdRdGMrUEhxVFcwNzZjaUU2dnBpYVVmSXVuK045S284R1lIdHdWUElr?=
 =?utf-8?B?dUkrenk3S3llK0ZPUzFVSCtlakxUMlZHNjNmTGNNbWkxNE1JMzdzR0hmbE5R?=
 =?utf-8?B?WGJkSS9XaGxNSC8yMVdSdXdRc2dGUmJvQUtRc0FUVk0rQmprdDRoWktGL1pj?=
 =?utf-8?B?UXhBb2hOaVgzdjE5QjJ2YzhxcG1KRkIwUEV2ai9iTWZOa1oycUsrMm4vQUl5?=
 =?utf-8?B?UTdkNnNrQlBMVVdwVll5YlJ0eW1wNDEyYUh0RGwwa0l0cmZvWWc2bS93UGNl?=
 =?utf-8?B?VTd2VzhZZTQ2RkFCRDFNMnBJSmV2TDhiNUpJNjV0am5tWnVhZWJWK3o1eXNp?=
 =?utf-8?B?VVRuWDF2bEE4MmhMK0RGUUNxR1BNUWlCUjkvSjZZb0FvNklGc0o2d0pDTmxX?=
 =?utf-8?B?YjBQbzFEZ3czTEc1YmlOdWZLWHRveTQzS1BFZnY2S1g4dUcvcmViYXhsSits?=
 =?utf-8?B?S1oyNWU4clNRNUhjNEZPSTBZWm9KUEJ4MS92SkkrSnNwMnJEdjh6RkNRM2dG?=
 =?utf-8?Q?QofmjaBBuudePdDQ/BFkqVTJI=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Qmp1Wlo0b3ltbW9vUGJySGdlNVJvN2hqaVZhc2NoSGxVRE1MODZnZGhnT0dw?=
 =?utf-8?B?OURiRnl6VTZDOFRDeU9ucjdoZ3Y5K1V2cWJxMzJIcDJoN2ZPaEc4d3pBK3dE?=
 =?utf-8?B?czUxajM0bU1UcXZ6SFNVMmJJb1V2Y2wyanc3dWVQYm1RY2FESE0rbWV4KzMy?=
 =?utf-8?B?bEptSElvUEpQNVR6Z2dCR09hU0JMOU5uTXB5eUt2ZllVWElLRUU2ZTFsTlBE?=
 =?utf-8?B?ek5sc2ZKeCtLbzh3MHE0QWF1QUVWb2xob0VUNEd0Tlh2RXc1amk3a09VTlF1?=
 =?utf-8?B?TUpnS0Z4QkttcmFGZ2ltaEo0SW14RWNXYzVkQi9DUnhHamhPRGQzOVFTYjNS?=
 =?utf-8?B?b0xDTWJzQjBqOUFVU1NoOWNxWnp0QzZHa0xQT0pha0JQZ3dOK0ZONUkrcWUw?=
 =?utf-8?B?V3BXTmRaUVk2cWxaM3EycHpUdUtnYjNOS1pFVVQvOExva2k0QkM1OW9UalUw?=
 =?utf-8?B?elNIbjVPODJ2UW9iMlBlQTlkMVZwOWlMTzJTVlczaUxBODUzZlN5T3hJaEVP?=
 =?utf-8?B?TEl2S3E4dGZvdnBkTlZySGIxNW1KUGRlQ3FSVTdkTXpCMWt3c0lyUFVKVlRQ?=
 =?utf-8?B?V2R2V1g2czg2TnR0czZ0bVZkQnJEUUx0T0ZxT0UzVHBZV0RpTnF1d0wwcSt5?=
 =?utf-8?B?UWJiRTUyRVQ0SUt0WXJzSjhPWTU3RkQxZTQ5ZE9XaFpxQnFoeDdkMStUc0pY?=
 =?utf-8?B?ZG45amhQQzFSN1lmRzkrcTZWdW1wRlo3M21LUURCT013Q0NDRFFaWGtUblBB?=
 =?utf-8?B?MXpGRGV1OU1JcEc2Sk9xS0xGb1hHa2l2cnRQMkYxeUd4V1lGaVJOK0hIeHFh?=
 =?utf-8?B?Q2hsWGZTRDdSblBvNWg4Ujl2NStnd2VFL0tYcEVQNFUrWmxPVkxCaUtGNmhI?=
 =?utf-8?B?bkJsTEJwZzVsTlZTL2tNekY5SEg5c3lKaGFScUhKLzVLSFlra2ZuanJWb21O?=
 =?utf-8?B?NzE2MGN1SU9FRVpoN205VzA0aW5pSGlacUFHTXdaWmFKTFpuR1l3L0ZDNk4z?=
 =?utf-8?B?T0xCSEFnTDFKL1NmVzMxSlRKc29uaTBDTDVVNERzaEYwcmpUNnFtWkZrNmsv?=
 =?utf-8?B?TGpjY2RrMStJbEQ2SGRPZDluQ1pQbU9zN1dWeGs0YytlblY5THpPbk9jOXdz?=
 =?utf-8?B?WXdVRUc2ME9PN3M3bVY2RTRBWSt5QUE4djJVRG9MdXBnc3Nrd2E2Q25KZXFz?=
 =?utf-8?B?VkFxUXNTRGdmQlZGeFhRdUszN0VubEZ4ODluWm5ESDFYUldHSXZEQVhjL1Rr?=
 =?utf-8?B?T2FNanpHOG9za3E2K0pidHVXSTIvdHNvVFJYb2pRRlc2YXhUa1V0dTUrUUNp?=
 =?utf-8?B?OWhUU1NNcEVRQ2x0UXQ2WmZKK2RuU0RUS2xzOWZSaFFEOTdXZmlJUVViWSt4?=
 =?utf-8?B?OVE4T05pdWROdmpWK1NyZCtPR3dPdjVoZkhDcGhqMDBjYVh2NWxOb1pJdkNG?=
 =?utf-8?B?TzRIS1dnNzAwb1djaXpDZkVGZ3JBQ2JZc1kzbU9IT294bElLSGVxei9udVNF?=
 =?utf-8?B?LzNBWUJ0dlZGUXJkeHllNFA3RmFmNW1rT2RObi9qRVpvdUJEcWtySkpCa1Bs?=
 =?utf-8?B?NUdZVkhQQkxMRjA5V3NVeW91SUhVUzlhL2hHRkhUSFI3ZHpRRnBxNkZMODFX?=
 =?utf-8?Q?U65j8piK0KshNYQmj3LQbVm/EBFcC3IV7+7DCiYl7gck=3D?=
MIME-Version: 1.0
X-OriginatorOrg: sct-15-20-7719-20-msonline-outlook-92255.templateTenant
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a29a3bb-a80d-49e9-feee-08dd7cafc013
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Apr 2025 06:27:23.9710 (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: PH3PPFF9D1C34EA
Subject: Re: [FFmpeg-devel] [PATCH 2/9] fftools/textformat: Quality
 improvements
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/DM8P223MB036508E3C3044737A1989524BABD2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZmZtcGVnLWRldmVsIDxm
Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YNCj4gQW5kcmVhcyBS
aGVpbmhhcmR0DQo+IFNlbnQ6IE1pdHR3b2NoLCAxNi4gQXByaWwgMjAyNSAwNjo1MQ0KPiBUbzog
ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcNCj4gU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxdIFtQ
QVRDSCAyLzldIGZmdG9vbHMvdGV4dGZvcm1hdDogUXVhbGl0eQ0KPiBpbXByb3ZlbWVudHMNCj4g
DQo+IHNvZnR3b3JreiAuOg0KPiA+DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t
LS0NCj4gPj4gRnJvbTogZmZtcGVnLWRldmVsIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu
b3JnPiBPbiBCZWhhbGYgT2YNCj4gPj4gQW5kcmVhcyBSaGVpbmhhcmR0DQo+ID4+IFNlbnQ6IERp
ZW5zdGFnLCAxNS4gQXByaWwgMjAyNSAwMzowNg0KPiA+PiBUbzogZmZtcGVnLWRldmVsQGZmbXBl
Zy5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCAyLzldIGZmdG9v
bHMvdGV4dGZvcm1hdDogUXVhbGl0eQ0KPiA+PiBpbXByb3ZlbWVudHMNCj4gPj4NCj4gPj4gc29m
dHdvcmt6Og0KPiA+Pj4gRnJvbTogc29mdHdvcmt6IDxzb2Z0d29ya3pAaG90bWFpbC5jb20+DQo+
ID4+Pg0KPiA+Pj4gU2lnbmVkLW9mZi1ieTogc29mdHdvcmt6IDxzb2Z0d29ya3pAaG90bWFpbC5j
b20+DQo+ID4+PiAtLS0NCj4gPj4+ICBmZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmMg
fCAxMjEgKysrKysrKysrKysrKysrKysrKy0tLS0tLQ0KPiAtLQ0KPiA+PiAtLS0NCj4gPj4+ICBm
ZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmggfCAgIDYgKy0NCj4gPj4+ICBmZnRvb2xz
L3RleHRmb3JtYXQvdGZfZGVmYXVsdC5jICAgfCAgIDggKy0NCj4gPj4+ICBmZnRvb2xzL3RleHRm
b3JtYXQvdGZfaW5pLmMgICAgICAgfCAgIDIgKy0NCj4gPj4+ICBmZnRvb2xzL3RleHRmb3JtYXQv
dGZfanNvbi5jICAgICAgfCAgIDggKy0NCj4gPj4+ICBmZnRvb2xzL3RleHRmb3JtYXQvdGZfeG1s
LmMgICAgICAgfCAgIDMgLQ0KPiA+Pj4gIGZmdG9vbHMvdGV4dGZvcm1hdC90d19hdmlvLmMgICAg
ICB8ICAgOSArKy0NCj4gPj4+ICA3IGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA1
NiBkZWxldGlvbnMoLSkNCj4gPj4+DQo+ID4+PiBkaWZmIC0tZ2l0IGEvZmZ0b29scy90ZXh0Zm9y
bWF0L2F2dGV4dGZvcm1hdC5jDQo+ID4+IGIvZmZ0b29scy90ZXh0Zm9ybWF0L2F2dGV4dGZvcm1h
dC5jDQo+ID4+PiBpbmRleCAxY2U1MWQxMWUyLi40MDYwMjVkMTlkIDEwMDY0NA0KPiA+Pj4gLS0t
IGEvZmZ0b29scy90ZXh0Zm9ybWF0L2F2dGV4dGZvcm1hdC5jDQo+ID4+PiArKysgYi9mZnRvb2xz
L3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmMNCj4gPj4+IEBAIC05Myw5ICs5Myw4IEBAIHN0YXRp
YyBjb25zdCBBVkNsYXNzIHRleHRjb250ZXh0X2NsYXNzID0gew0KPiA+Pj4NCj4gPj4+ICBzdGF0
aWMgdm9pZCBicHJpbnRfYnl0ZXMoQVZCUHJpbnQgKmJwLCBjb25zdCB1aW50OF90ICp1YnVmLA0K
PiBzaXplX3QNCj4gPj4gdWJ1Zl9zaXplKQ0KPiA+Pj4gIHsNCj4gPj4+IC0gICAgaW50IGk7DQo+
ID4+PiAgICAgIGF2X2JwcmludGYoYnAsICIwWCIpOw0KPiA+Pj4gLSAgICBmb3IgKGkgPSAwOyBp
IDwgdWJ1Zl9zaXplOyBpKyspDQo+ID4+PiArICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1
YnVmX3NpemU7IGkrKykNCj4gPj4NCj4gPj4gV2h5IG5vdCBzaXplX3Q/DQo+ID4NCj4gPiBCZWNh
dXNlIGl0IGNyZWF0ZXMgbW9yZSB3YXJuaW5ncyBhYm91dCBuYXJyb3dpbmcgY29udmVyc2lvbnMu
DQo+ID4NCj4gPg0KPiA+DQo+ID4+PiAgICAgICAgICBhdl9icHJpbnRmKGJwLCAiJTAyWCIsIHVi
dWZbaV0pOw0KPiA+Pj4gIH0NCj4gPj4+DQo+ID4+PiBAQCAtMTEwLDggKzEwOSw2IEBAIGludCBh
dnRleHRfY29udGV4dF9jbG9zZShBVlRleHRGb3JtYXRDb250ZXh0DQo+ID4+ICoqcHRjdHgpDQo+
ID4+Pg0KPiA+Pj4gICAgICBhdl9oYXNoX2ZyZWVwKCZ0Y3R4LT5oYXNoKTsNCj4gPj4+DQo+ID4+
PiAtICAgIGF2X2hhc2hfZnJlZXAoJnRjdHgtPmhhc2gpOw0KPiA+Pj4gLQ0KPiA+Pj4gICAgICBp
ZiAodGN0eC0+Zm9ybWF0dGVyLT51bmluaXQpDQo+ID4+PiAgICAgICAgICB0Y3R4LT5mb3JtYXR0
ZXItPnVuaW5pdCh0Y3R4KTsNCj4gPj4+ICAgICAgZm9yIChpID0gMDsgaSA8IFNFQ1RJT05fTUFY
X05CX0xFVkVMUzsgaSsrKQ0KPiA+Pj4gQEAgLTE0MSwxMiArMTM4LDE4IEBAIGludCBhdnRleHRf
Y29udGV4dF9vcGVuKEFWVGV4dEZvcm1hdENvbnRleHQNCj4gPj4gKipwdGN0eCwNCj4gPj4+ICAg
ICAgQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eDsNCj4gPj4+ICAgICAgaW50IGksIHJldCA9IDA7
DQo+ID4+Pg0KPiA+Pj4gLSAgICBpZiAoISh0Y3R4ID0gYXZfbWFsbG9jeihzaXplb2YoQVZUZXh0
Rm9ybWF0Q29udGV4dCkpKSkgew0KPiA+Pj4gKyAgICBpZiAoIXB0Y3R4IHx8ICFmb3JtYXR0ZXIp
DQo+ID4+PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KPiA+Pg0KPiA+PiBDYW4g
dGhpcyBoYXBwZW4/DQo+ID4NCj4gPiBzZWUgYmVsb3cNCj4gPg0KPiA+Pj4gKw0KPiA+Pj4gKyAg
ICBpZiAoIWZvcm1hdHRlci0+cHJpdl9zaXplICYmIGZvcm1hdHRlci0+cHJpdl9jbGFzcykNCj4g
Pj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQo+ID4+DQo+ID4+IFN0dWZmIGxp
a2UgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGFuZCBzaG91bGQgbm90IGJlIGNoZWNrZWQgKG9y
DQo+ID4+IGFjdHVhbGx5OiB0aGUgcHJvcGVyIHBsYWNlIHRvIGNoZWNrIHN0dWZmIGxpa2UgdGhp
cyBpcyBpbiB0ZXN0DQo+IHRvb2xzDQo+ID4+IGxpa2UgbGF2Yy90ZXN0cy9hdmNvZGVjLmMsIGJ1
dCBJIGRvbid0IHRoaW5rIGl0IGlzIHdvcnRoIGl0IGZvcg0KPiA+PiBmZnRvb2xzKS4NCj4gPg0K
PiA+IEkgcHJvYmFibHkgb3ZlcmRpZCBpdCBhIGJpdCB3aXRoIGNoZWNrcywgYnV0IHRoZSBnb2Fs
IGZvciB0aGlzIEFQSQ0KPiA+IGlzIHN0aWxsIHRvIGJlY29tZSBwdWJsaWMgYXQgc29tZSBwb2lu
dCAobGlrZSBpbiBhdnV0aWwpLCBzbyBJDQo+ID4gdHJpZWQgdG8gbW92ZSB0b3dhcmRzIHRoYXQg
ZGlyZWN0aW9uIGFscmVhZHkuDQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPj4+ICsNCj4gPj4+ICsg
ICAgaWYgKCEoKHRjdHggPSBhdl9tYWxsb2N6KHNpemVvZihBVlRleHRGb3JtYXRDb250ZXh0KSkp
KSkgew0KPiA+Pj4gICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOw0KPiA+Pj4gICAgICAg
ICAgZ290byBmYWlsOw0KPiA+Pj4gICAgICB9DQo+ID4+Pg0KPiA+Pj4gLSAgICBpZiAoISh0Y3R4
LT5wcml2ID0gYXZfbWFsbG9jeihmb3JtYXR0ZXItPnByaXZfc2l6ZSkpKSB7DQo+ID4+PiArICAg
IGlmIChmb3JtYXR0ZXItPnByaXZfc2l6ZSAmJiAhKCh0Y3R4LT5wcml2ID0NCj4gPj4gYXZfbWFs
bG9jeihmb3JtYXR0ZXItPnByaXZfc2l6ZSkpKSkgew0KPiA+Pj4gICAgICAgICAgcmV0ID0gQVZF
UlJPUihFTk9NRU0pOw0KPiA+Pj4gICAgICAgICAgZ290byBmYWlsOw0KPiA+Pj4gICAgICB9DQo+
ID4+PiBAQCAtMjE1LDE1ICsyMTgsMTUgQEAgaW50IGF2dGV4dF9jb250ZXh0X29wZW4oQVZUZXh0
Rm9ybWF0Q29udGV4dA0KPiA+PiAqKnB0Y3R4LA0KPiA+Pj4NCj4gPj4+ICAgICAgLyogdmFsaWRh
dGUgcmVwbGFjZSBzdHJpbmcgKi8NCj4gPj4+ICAgICAgew0KPiA+Pj4gLSAgICAgICAgY29uc3Qg
dWludDhfdCAqcCA9IHRjdHgtPnN0cmluZ192YWxpZGF0aW9uX3JlcGxhY2VtZW50Ow0KPiA+Pj4g
LSAgICAgICAgY29uc3QgdWludDhfdCAqZW5kcCA9IHAgKyBzdHJsZW4ocCk7DQo+ID4+PiArICAg
ICAgICBjb25zdCB1aW50OF90ICpwID0gKHVpbnQ4X3QgKil0Y3R4LQ0KPiA+Pj4gc3RyaW5nX3Zh
bGlkYXRpb25fcmVwbGFjZW1lbnQ7DQo+ID4+PiArICAgICAgICBjb25zdCB1aW50OF90ICplbmRw
ID0gcCArIHN0cmxlbigoY29uc3QgY2hhciAqKXApOw0KPiA+Pj4gICAgICAgICAgd2hpbGUgKCpw
KSB7DQo+ID4+PiAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcDAgPSBwOw0KPiA+Pj4gICAg
ICAgICAgICAgIGludDMyX3QgY29kZTsNCj4gPj4+ICAgICAgICAgICAgICByZXQgPSBhdl91dGY4
X2RlY29kZSgmY29kZSwgJnAsIGVuZHAsIHRjdHgtDQo+ID4+PiBzdHJpbmdfdmFsaWRhdGlvbl91
dGY4X2ZsYWdzKTsNCj4gPj4+ICAgICAgICAgICAgICBpZiAocmV0IDwgMCkgew0KPiA+Pj4gICAg
ICAgICAgICAgICAgICBBVkJQcmludCBicDsNCj4gPj4+IC0gICAgICAgICAgICAgICAgYXZfYnBy
aW50X2luaXQoJmJwLCAwLCBBVl9CUFJJTlRfU0laRV9BVVRPTUFUSUMpOw0KPiA+Pj4gKyAgICAg
ICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnAsIDAsIEFWX0JQUklOVF9TSVpFX1VOTElNSVRF
RCk7DQo+ID4+DQo+ID4+IFRoaXMgYWRkcyBhIG1lbWxlYWsgb24gZGF0YSB3aGVyZSBpdCBtYWtl
cyBhIGRpZmZlcmVuY2UuDQo+ID4NCj4gPiBXaHk/IFRoZSBzdHJpbmdfdmFsaWRhdGlvbl9yZXBs
YWNlbWVudCBzdHJpbmcgc2hvdWxkIGJlIHNob3J0IGVub3VnaA0KPiA+IHRvIGZpdCBpbnRvIHRo
ZSBzdGFjay1hbGxvY2F0ZWQgbWVtb3J5LCBubz8NCj4gPg0KPiA+DQo+ID4+PiAgICAgICAgICAg
ICAgICAgIGJwcmludF9ieXRlcygmYnAsIHAwLCBwIC0gcDApLA0KPiA+Pj4gICAgICAgICAgICAg
ICAgICAgICAgYXZfbG9nKHRjdHgsIEFWX0xPR19FUlJPUiwNCj4gPj4+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiSW52YWxpZCBVVEY4IHNlcXVlbmNlICVzIGZvdW5kIGluDQo+ID4+IHN0
cmluZyB2YWxpZGF0aW9uIHJlcGxhY2UgJyVzJ1xuIiwNCj4gPj4+IEBAIC0yNTksNiArMjYyLDkg
QEAgc3RhdGljIGNvbnN0IGNoYXIgdW5pdF9iaXRfcGVyX3NlY29uZF9zdHJbXSA9DQo+ID4+ICJi
aXQvcyI7DQo+ID4+Pg0KPiA+Pj4gIHZvaWQgYXZ0ZXh0X3ByaW50X3NlY3Rpb25faGVhZGVyKEFW
VGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNvbnN0DQo+ID4+IHZvaWQgKmRhdGEsIGludCBzZWN0
aW9uX2lkKQ0KPiA+Pj4gIHsNCj4gPj4+ICsgICAgaWYgKCF0Y3R4IHx8IHNlY3Rpb25faWQgPCAw
IHx8IHNlY3Rpb25faWQgPj0gdGN0eC0NCj4gPm5iX3NlY3Rpb25zKQ0KPiA+Pj4gKyAgICAgICAg
cmV0dXJuOw0KPiA+Pg0KPiA+PiBDYW4gdGhpcyBoYXBwZW4/DQo+ID4NCj4gPiBGb3IgYSBwdWJs
aWMgQVBJIC0gbWFueSB0aGluZ3MgY2FuIGhhcHBlbi4uLg0KPiA+DQo+ID4NCj4gPj4+ICAgICAg
dGN0eC0+bGV2ZWwrKzsNCj4gPj4+ICAgICAgYXZfYXNzZXJ0MCh0Y3R4LT5sZXZlbCA8IFNFQ1RJ
T05fTUFYX05CX0xFVkVMUyk7DQo+ID4+Pg0KPiA+Pj4gQEAgLTI3Miw2ICsyNzgsOSBAQCB2b2lk
DQo+ID4+IGF2dGV4dF9wcmludF9zZWN0aW9uX2hlYWRlcihBVlRleHRGb3JtYXRDb250ZXh0ICp0
Y3R4LCBjb25zdCB2b2lkDQo+ID4+ICpkYXRhLCBpbg0KPiA+Pj4NCj4gPj4+ICB2b2lkIGF2dGV4
dF9wcmludF9zZWN0aW9uX2Zvb3RlcihBVlRleHRGb3JtYXRDb250ZXh0ICp0Y3R4KQ0KPiA+Pj4g
IHsNCj4gPj4+ICsgICAgaWYgKCF0Y3R4IHx8IHRjdHgtPmxldmVsIDwgMCB8fCB0Y3R4LT5sZXZl
bCA+PQ0KPiA+PiBTRUNUSU9OX01BWF9OQl9MRVZFTFMpDQo+ID4+PiArICAgICAgICByZXR1cm47
DQo+ID4+DQo+ID4+IENhbiB0aGlzIGhhcHBlbj8NCj4gPg0KPiA+IFllcyAtIHdoZW4gc29tZXdo
ZXJlIGluIEZGbXBlZyBzb21lIG91dHB1dCBpcyBjaGFuZ2VkIHdpdGhvdXQNCj4gdGhpbmtpbmcN
Cj4gPiBhYm91dCB0aGF0IHRoZXJlJ3MgYSBuZXN0aW5nIGxpbWl0IG9mIFNFQ1RJT05fTUFYX05C
X0xFVkVMUy4NCj4gPiBFdmVuIHdoZW4gb25seSAyIG9yIDMgc2VjdGlvbiB0eXBlcyBhcmUgZGVm
aW5lZCwgdGhlIGxldmVsIGNhbiBnbw0KPiBiZXlvbmQNCj4gPiB0aGF0IHZhbHVlLg0KPiA+DQo+
ID4NCj4gPj4NCj4gPj4+ICsNCj4gPj4+ICAgICAgaW50IHNlY3Rpb25faWQgPSB0Y3R4LT5zZWN0
aW9uW3RjdHgtPmxldmVsXS0+aWQ7DQo+ID4+PiAgICAgIGludCBwYXJlbnRfc2VjdGlvbl9pZCA9
IHRjdHgtPmxldmVsDQo+ID4+PiAgICAgICAgICA/IHRjdHgtPnNlY3Rpb25bdGN0eC0+bGV2ZWwg
LSAxXS0+aWQNCj4gPj4+IEBAIC0yODksNyArMjk4LDEyIEBAIHZvaWQNCj4gPj4gYXZ0ZXh0X3By
aW50X3NlY3Rpb25fZm9vdGVyKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgpDQo+ID4+Pg0KPiA+
Pj4gIHZvaWQgYXZ0ZXh0X3ByaW50X2ludGVnZXIoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwg
Y29uc3QgY2hhcg0KPiA+PiAqa2V5LCBpbnQ2NF90IHZhbCkNCj4gPj4+ICB7DQo+ID4+PiAtICAg
IGNvbnN0IHN0cnVjdCBBVlRleHRGb3JtYXRTZWN0aW9uICpzZWN0aW9uID0gdGN0eC0NCj4gPnNl
Y3Rpb25bdGN0eC0NCj4gPj4+IGxldmVsXTsNCj4gPj4+ICsgICAgY29uc3QgQVZUZXh0Rm9ybWF0
U2VjdGlvbiAqc2VjdGlvbjsNCj4gPj4+ICsNCj4gPj4+ICsgICAgaWYgKCF0Y3R4IHx8ICFrZXkg
fHwgdGN0eC0+bGV2ZWwgPCAwIHx8IHRjdHgtPmxldmVsID49DQo+ID4+IFNFQ1RJT05fTUFYX05C
X0xFVkVMUykNCj4gPj4+ICsgICAgICAgIHJldHVybjsNCj4gPj4NCj4gPj4gQ2FuIHRoaXMgaGFw
cGVuPw0KPiA+DQo+ID4NCj4gPiBzZWUgYWJvdmUNCj4gPg0KPiA+DQo+ID4+DQo+ID4+PiArDQo+
ID4+PiArICAgIHNlY3Rpb24gPSB0Y3R4LT5zZWN0aW9uW3RjdHgtPmxldmVsXTsNCj4gPj4+DQo+
ID4+PiAgICAgIGlmIChzZWN0aW9uLT5zaG93X2FsbF9lbnRyaWVzIHx8IGF2X2RpY3RfZ2V0KHNl
Y3Rpb24tDQo+ID4+PiBlbnRyaWVzX3RvX3Nob3csIGtleSwgTlVMTCwgMCkpIHsNCj4gPj4+ICAg
ICAgICAgIHRjdHgtPmZvcm1hdHRlci0+cHJpbnRfaW50ZWdlcih0Y3R4LCBrZXksIHZhbCk7DQo+
ID4+PiBAQCAtMjk5LDI0ICszMTMsMjggQEAgdm9pZA0KPiBhdnRleHRfcHJpbnRfaW50ZWdlcihB
VlRleHRGb3JtYXRDb250ZXh0DQo+ID4+ICp0Y3R4LCBjb25zdCBjaGFyICprZXksIGludDY0X3Qg
dmENCj4gPj4+DQo+ID4+PiAgc3RhdGljIGlubGluZSBpbnQgdmFsaWRhdGVfc3RyaW5nKEFWVGV4
dEZvcm1hdENvbnRleHQgKnRjdHgsIGNoYXINCj4gPj4gKipkc3RwLCBjb25zdCBjaGFyICpzcmMp
DQo+ID4+PiAgew0KPiA+Pj4gLSAgICBjb25zdCB1aW50OF90ICpwLCAqZW5kcDsNCj4gPj4+ICsg
ICAgY29uc3QgdWludDhfdCAqcCwgKmVuZHAsICpzcmNwID0gKGNvbnN0IHVpbnQ4X3QgKilzcmM7
DQo+ID4+PiAgICAgIEFWQlByaW50IGRzdGJ1ZjsNCj4gPj4+ICsgICAgQVZCUHJpbnQgYnA7DQo+
ID4+PiAgICAgIGludCBpbnZhbGlkX2NoYXJzX25iID0gMCwgcmV0ID0gMDsNCj4gPj4+DQo+ID4+
PiArICAgIGlmICghdGN0eCB8fCAhZHN0cCB8fCAhc3JjKQ0KPiA+Pj4gKyAgICAgICAgcmV0dXJu
IEFWRVJST1IoRUlOVkFMKTsNCj4gPj4+ICsNCj4gPj4NCj4gPj4gQ2FuIHRoaXMgaGFwcGVuPw0K
PiA+Pg0KPiA+Pj4gKyAgICAqZHN0cCA9IE5VTEw7DQo+ID4+PiAgICAgIGF2X2JwcmludF9pbml0
KCZkc3RidWYsIDAsIEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRCk7DQo+ID4+PiArICAgIGF2X2Jw
cmludF9pbml0KCZicCwgMCwgQVZfQlBSSU5UX1NJWkVfVU5MSU1JVEVEKTsNCj4gPj4+DQo+ID4+
PiAtICAgIGVuZHAgPSBzcmMgKyBzdHJsZW4oc3JjKTsNCj4gPj4+IC0gICAgZm9yIChwID0gc3Jj
OyAqcDspIHsNCj4gPj4+IC0gICAgICAgIHVpbnQzMl90IGNvZGU7DQo+ID4+PiArICAgIGVuZHAg
PSBzcmNwICsgc3RybGVuKHNyYyk7DQo+ID4+PiArICAgIGZvciAocCA9IHNyY3A7ICpwOykgew0K
PiA+Pj4gKyAgICAgICAgaW50MzJfdCBjb2RlOw0KPiA+Pj4gICAgICAgICAgaW50IGludmFsaWQg
PSAwOw0KPiA+Pj4gICAgICAgICAgY29uc3QgdWludDhfdCAqcDAgPSBwOw0KPiA+Pj4NCj4gPj4+
ICAgICAgICAgIGlmIChhdl91dGY4X2RlY29kZSgmY29kZSwgJnAsIGVuZHAsIHRjdHgtDQo+ID4+
PiBzdHJpbmdfdmFsaWRhdGlvbl91dGY4X2ZsYWdzKSA8IDApIHsNCj4gPj4+IC0gICAgICAgICAg
ICBBVkJQcmludCBicDsNCj4gPj4+IC0gICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnAsIDAs
IEFWX0JQUklOVF9TSVpFX0FVVE9NQVRJQyk7DQo+ID4+PiAtICAgICAgICAgICAgYnByaW50X2J5
dGVzKCZicCwgcDAsIHAtcDApOw0KPiA+Pj4gLSAgICAgICAgICAgIGF2X2xvZyh0Y3R4LCBBVl9M
T0dfREVCVUcsDQo+ID4+PiAtICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIFVURi04IHNlcXVl
bmNlICVzIGZvdW5kIGluIHN0cmluZw0KPiA+PiAnJXMnXG4iLCBicC5zdHIsIHNyYyk7DQo+ID4+
PiArICAgICAgICAgICAgYXZfYnByaW50X2NsZWFyKCZicCk7DQo+ID4+PiArICAgICAgICAgICAg
YnByaW50X2J5dGVzKCZicCwgcDAsIHAgLSBwMCk7DQo+ID4+PiArICAgICAgICAgICAgYXZfbG9n
KHRjdHgsIEFWX0xPR19ERUJVRywgIkludmFsaWQgVVRGLTggc2VxdWVuY2UgJXMNCj4gPj4gZm91
bmQgaW4gc3RyaW5nICclcydcbiIsIGJwLnN0ciwgc3JjKTsNCj4gPj4+ICAgICAgICAgICAgICBp
bnZhbGlkID0gMTsNCj4gPj4+ICAgICAgICAgIH0NCj4gPj4+DQo+ID4+PiBAQCAtMzM2LDcgKzM1
NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50DQo+ID4+IHZhbGlkYXRlX3N0cmluZyhBVlRleHRGb3Jt
YXRDb250ZXh0ICp0Y3R4LCBjaGFyICoqZHN0cCwgY29uc3QNCj4gPj4+ICAgICAgICAgIH0NCj4g
Pj4+DQo+ID4+PiAgICAgICAgICBpZiAoIWludmFsaWQgfHwgdGN0eC0+c3RyaW5nX3ZhbGlkYXRp
b24gPT0NCj4gPj4gQVZfVEVYVEZPUk1BVF9TVFJJTkdfVkFMSURBVElPTl9JR05PUkUpDQo+ID4+
PiAtICAgICAgICAgICAgYXZfYnByaW50X2FwcGVuZF9kYXRhKCZkc3RidWYsIHAwLCBwLXAwKTsN
Cj4gPj4+ICsgICAgICAgICAgICBhdl9icHJpbnRfYXBwZW5kX2RhdGEoJmRzdGJ1ZiwgKGNvbnN0
IGNoYXIgKilwMCwgcCAtDQo+ID4+IHAwKTsNCj4gPj4+ICAgICAgfQ0KPiA+Pj4NCj4gPj4+ICAg
ICAgaWYgKGludmFsaWRfY2hhcnNfbmIgJiYgdGN0eC0+c3RyaW5nX3ZhbGlkYXRpb24gPT0NCj4g
Pj4gQVZfVEVYVEZPUk1BVF9TVFJJTkdfVkFMSURBVElPTl9SRVBMQUNFKQ0KPiA+Pj4gQEAgLTM0
Niw2ICszNjQsNyBAQCBzdGF0aWMgaW5saW5lIGludA0KPiA+PiB2YWxpZGF0ZV9zdHJpbmcoQVZU
ZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY2hhciAqKmRzdHAsIGNvbnN0DQo+ID4+Pg0KPiA+Pj4g
IGVuZDoNCj4gPj4+ICAgICAgYXZfYnByaW50X2ZpbmFsaXplKCZkc3RidWYsIGRzdHApOw0KPiA+
Pj4gKyAgICBhdl9icHJpbnRfZmluYWxpemUoJmJwLCBOVUxMKTsNCj4gPj4+ICAgICAgcmV0dXJu
IHJldDsNCj4gPj4+ICB9DQo+ID4+Pg0KPiA+Pj4gQEAgLTM1OCwxNyArMzc3LDE4IEBAIHN0cnVj
dCB1bml0X3ZhbHVlIHsNCj4gPj4+ICAgICAgY29uc3QgY2hhciAqdW5pdDsNCj4gPj4+ICB9Ow0K
PiA+Pj4NCj4gPj4+IC1zdGF0aWMgY2hhciAqdmFsdWVfc3RyaW5nKEFWVGV4dEZvcm1hdENvbnRl
eHQgKnRjdHgsIGNoYXIgKmJ1ZiwNCj4gaW50DQo+ID4+IGJ1Zl9zaXplLCBzdHJ1Y3QgdW5pdF92
YWx1ZSB1dikNCj4gPj4+ICtzdGF0aWMgY2hhciAqdmFsdWVfc3RyaW5nKGNvbnN0IEFWVGV4dEZv
cm1hdENvbnRleHQgKnRjdHgsIGNoYXINCj4gPj4gKmJ1ZiwgaW50IGJ1Zl9zaXplLCBzdHJ1Y3Qg
dW5pdF92YWx1ZSB1dikNCj4gPj4+ICB7DQo+ID4+PiAgICAgIGRvdWJsZSB2YWxkOw0KPiA+Pj4g
LSAgICBpbnQ2NF90IHZhbGk7DQo+ID4+PiArICAgIGludDY0X3QgdmFsaSA9IDA7DQo+ID4+PiAg
ICAgIGludCBzaG93X2Zsb2F0ID0gMDsNCj4gPj4+DQo+ID4+PiAgICAgIGlmICh1di51bml0ID09
IHVuaXRfc2Vjb25kX3N0cikgew0KPiA+Pj4gICAgICAgICAgdmFsZCA9IHV2LnZhbC5kOw0KPiA+
Pj4gICAgICAgICAgc2hvd19mbG9hdCA9IDE7DQo+ID4+PiAgICAgIH0gZWxzZSB7DQo+ID4+PiAt
ICAgICAgICB2YWxkID0gdmFsaSA9IHV2LnZhbC5pOw0KPiA+Pj4gKyAgICAgICAgdmFsZCA9IChk
b3VibGUpdXYudmFsLmk7DQo+ID4+PiArICAgICAgICB2YWxpID0gdXYudmFsLmk7DQo+ID4+PiAg
ICAgIH0NCj4gPj4+DQo+ID4+PiAgICAgIGlmICh1di51bml0ID09IHVuaXRfc2Vjb25kX3N0ciAm
JiB0Y3R4LQ0KPiA+Pj4gdXNlX3ZhbHVlX3NleGFnZXNpbWFsX2Zvcm1hdCkgew0KPiA+Pj4gQEAg
LTM4NywxNyArNDA3LDE3IEBAIHN0YXRpYyBjaGFyDQo+ICp2YWx1ZV9zdHJpbmcoQVZUZXh0Rm9y
bWF0Q29udGV4dA0KPiA+PiAqdGN0eCwgY2hhciAqYnVmLCBpbnQgYnVmX3NpemUsIHN0DQo+ID4+
PiAgICAgICAgICAgICAgaW50NjRfdCBpbmRleDsNCj4gPj4+DQo+ID4+PiAgICAgICAgICAgICAg
aWYgKHV2LnVuaXQgPT0gdW5pdF9ieXRlX3N0ciAmJiB0Y3R4LQ0KPiA+Pj4gdXNlX2J5dGVfdmFs
dWVfYmluYXJ5X3ByZWZpeCkgew0KPiA+Pj4gLSAgICAgICAgICAgICAgICBpbmRleCA9IChpbnQ2
NF90KSAobG9nMih2YWxkKSkgLyAxMDsNCj4gPj4+IC0gICAgICAgICAgICAgICAgaW5kZXggPSBh
dl9jbGlwKGluZGV4LCAwLA0KPiA+PiBGRl9BUlJBWV9FTEVNUyhzaV9wcmVmaXhlcykgLSAxKTsN
Cj4gPj4+ICsgICAgICAgICAgICAgICAgaW5kZXggPSAoaW50NjRfdCkobG9nMih2YWxkKSAvIDEw
KTsNCj4gPj4+ICsgICAgICAgICAgICAgICAgaW5kZXggPSBhdl9jbGlwNjQoaW5kZXgsIDAsDQo+
ID4+IEZGX0FSUkFZX0VMRU1TKHNpX3ByZWZpeGVzKSAtIDEpOw0KPiA+Pj4gICAgICAgICAgICAg
ICAgICB2YWxkIC89IHNpX3ByZWZpeGVzW2luZGV4XS5iaW5fdmFsOw0KPiA+Pj4gICAgICAgICAg
ICAgICAgICBwcmVmaXhfc3RyaW5nID0gc2lfcHJlZml4ZXNbaW5kZXhdLmJpbl9zdHI7DQo+ID4+
PiAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gPj4+IC0gICAgICAgICAgICAgICAgaW5kZXggPSAo
aW50NjRfdCkgKGxvZzEwKHZhbGQpKSAvIDM7DQo+ID4+PiAtICAgICAgICAgICAgICAgIGluZGV4
ID0gYXZfY2xpcChpbmRleCwgMCwNCj4gPj4gRkZfQVJSQVlfRUxFTVMoc2lfcHJlZml4ZXMpIC0g
MSk7DQo+ID4+PiArICAgICAgICAgICAgICAgIGluZGV4ID0gKGludDY0X3QpKGxvZzEwKHZhbGQp
IC8gMyk7DQo+ID4+PiArICAgICAgICAgICAgICAgIGluZGV4ID0gYXZfY2xpcDY0KGluZGV4LCAw
LA0KPiA+PiBGRl9BUlJBWV9FTEVNUyhzaV9wcmVmaXhlcykgLSAxKTsNCj4gPj4+ICAgICAgICAg
ICAgICAgICAgdmFsZCAvPSBzaV9wcmVmaXhlc1tpbmRleF0uZGVjX3ZhbDsNCj4gPj4+ICAgICAg
ICAgICAgICAgICAgcHJlZml4X3N0cmluZyA9IHNpX3ByZWZpeGVzW2luZGV4XS5kZWNfc3RyOw0K
PiA+Pj4gICAgICAgICAgICAgIH0NCj4gPj4+IC0gICAgICAgICAgICB2YWxpID0gdmFsZDsNCj4g
Pj4+ICsgICAgICAgICAgICB2YWxpID0gKGludDY0X3QpdmFsZDsNCj4gPj4+ICAgICAgICAgIH0N
Cj4gPj4+DQo+ID4+PiAgICAgICAgICBpZiAoc2hvd19mbG9hdCB8fCAodGN0eC0+dXNlX3ZhbHVl
X3ByZWZpeCAmJiB2YWxkICE9DQo+ID4+IChpbnQ2NF90KXZhbGQpKQ0KPiA+Pj4gQEAgLTQyNSw5
ICs0NDUsMTQgQEAgdm9pZA0KPiBhdnRleHRfcHJpbnRfdW5pdF9pbnQoQVZUZXh0Rm9ybWF0Q29u
dGV4dA0KPiA+PiAqdGN0eCwgY29uc3QgY2hhciAqa2V5LCBpbnQgdmFsdWUNCj4gPj4+DQo+ID4+
PiAgaW50IGF2dGV4dF9wcmludF9zdHJpbmcoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY29u
c3QgY2hhcg0KPiAqa2V5LA0KPiA+PiBjb25zdCBjaGFyICp2YWwsIGludCBmbGFncykNCj4gPj4+
ICB7DQo+ID4+PiAtICAgIGNvbnN0IHN0cnVjdCBBVlRleHRGb3JtYXRTZWN0aW9uICpzZWN0aW9u
ID0gdGN0eC0NCj4gPnNlY3Rpb25bdGN0eC0NCj4gPj4+IGxldmVsXTsNCj4gPj4+ICsgICAgY29u
c3QgQVZUZXh0Rm9ybWF0U2VjdGlvbiAqc2VjdGlvbjsNCj4gPj4+ICAgICAgaW50IHJldCA9IDA7
DQo+ID4+Pg0KPiA+Pj4gKyAgICBpZiAoIXRjdHggfHwgIWtleSB8fCAhdmFsIHx8IHRjdHgtPmxl
dmVsIDwgMCB8fCB0Y3R4LT5sZXZlbA0KPiA+PQ0KPiA+PiBTRUNUSU9OX01BWF9OQl9MRVZFTFMp
DQo+ID4+PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KPiA+Pg0KPiA+PiBDYW4g
dGhpcyBoYXBwZW4/DQo+ID4+DQo+ID4+PiArDQo+ID4+PiArICAgIHNlY3Rpb24gPSB0Y3R4LT5z
ZWN0aW9uW3RjdHgtPmxldmVsXTsNCj4gPj4+ICsNCj4gPj4+ICAgICAgaWYgKHRjdHgtPnNob3df
b3B0aW9uYWxfZmllbGRzID09IFNIT1dfT1BUSU9OQUxfRklFTERTX05FVkVSDQo+IHx8DQo+ID4+
PiAgICAgICAgICAodGN0eC0+c2hvd19vcHRpb25hbF9maWVsZHMgPT0gU0hPV19PUFRJT05BTF9G
SUVMRFNfQVVUTw0KPiA+Pj4gICAgICAgICAgICAgICYmIChmbGFncyAmIEFWX1RFWFRGT1JNQVRf
UFJJTlRfU1RSSU5HX09QVElPTkFMKQ0KPiA+Pj4gQEAgLTQ2Miw3ICs0ODcsNyBAQCBpbnQgYXZ0
ZXh0X3ByaW50X3N0cmluZyhBVlRleHRGb3JtYXRDb250ZXh0DQo+ID4+ICp0Y3R4LCBjb25zdCBj
aGFyICprZXksIGNvbnN0IGNoYXIgKg0KPiA+Pj4gIHZvaWQgYXZ0ZXh0X3ByaW50X3JhdGlvbmFs
KEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNvbnN0IGNoYXINCj4gPj4gKmtleSwgQVZSYXRp
b25hbCBxLCBjaGFyIHNlcCkNCj4gPj4+ICB7DQo+ID4+PiAgICAgIEFWQlByaW50IGJ1ZjsNCj4g
Pj4+IC0gICAgYXZfYnByaW50X2luaXQoJmJ1ZiwgMCwgQVZfQlBSSU5UX1NJWkVfQVVUT01BVElD
KTsNCj4gPj4+ICsgICAgYXZfYnByaW50X2luaXQoJmJ1ZiwgMCwgQVZfQlBSSU5UX1NJWkVfVU5M
SU1JVEVEKTsNCj4gPj4NCj4gPj4gVGhpcyBpcyBzdHJpY3RseSB3b3JzZSB0aGFuIHdoYXQgd2Fz
IGhlcmUgYmVmb3JlOiBXaXRoIFVOTElNSVRFRA0KPiB5b3UNCj4gPj4gd291bGQgaGF2ZSBhIG1l
bWxlYWsgaW4gY2FzZSB0aGUgaW50ZXJuYWwgYnVmZmVyIHdvdWxkbid0IHN1ZmZpY2UuDQo+ID4+
IChCdXQgYW55d2F5LCB0aGlzIHNob3VsZCB1c2Ugc25wcmludGYuIEkganVzdCBzZW50IGEgcGF0
Y2ggZm9yDQo+IHRoaXMuKQ0KPiA+DQo+ID4gVG8gYmUgaG9uZXN0LCBJIGRvbid0IHNlZSBtdWNo
IHZhbHVlIGluIEFWX0JQUklOVF9TSVpFX0FVVE9NQVRJQy4NCj4gPiBXaGVuIEkgd291bGQgbmVl
ZCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlcyBvZiBhbGwgYnByaW50DQo+IG9wZXJhdGlvbnMs
DQo+ID4gYWxsIHRoZSBjb252ZW5pZW5jZSB3b3VsZCBnbyBvdmVyIGJvYXJkIGluc3RhbnRseS4g
VXNpbmcNCj4gPiBBVl9CUFJJTlRfU0laRV9BVVRPTUFUSUMgd2l0aG91dCByZXR1cm4gdmFsdWUg
Y2hlY2tpbmcgaXMgZXJyb3ItDQo+IHByb25lDQo+ID4gYW5kIGNhbiBjYXVzZSBlcnJvcnMgd2hp
Y2ggbWlnaHQgYmUgaGFyZCB0byBpZGVudGlmeS4NCj4gPiBPbiB0aGUgb3RoZXIgc2lkZSwgaWRl
bnRpZnlpbmcgcGxhY2VzIGluIGNvZGUgd2hlcmUNCj4gQVZfQlBSSU5UX1NJWkVfVU5MSU1JVEVE
DQo+ID4gaXMgdXNlZCBhbmQgZmluYWxpemUgaXMgbmVlZGVkIGlzIGEgbG90IGVhc2llciBhbmQg
ZG9lc24ndCBldmVuIG5lZWQNCj4gPiBhIHNwZWNpZmljIGNhc2UgYW5kL29yIGRlYnVnZ2luZyB0
byBmaW5kIG91dC4NCj4gPg0KPiA+IEluIHRoZSB3b3JzdCBjYXNlLCBJJ2Qgc3RpbGwgcHJlZmVy
IGEgbWVtb3J5IGxlYWsgb3ZlciBpbmNvcnJlY3QNCj4gPiBiZWhhdmlvciAob3Igd2VsbCAtIGFs
d2F5cyBkZXBlbmRzIG9uIHRoZSBjYXNlKS4gQnkgdGhhdCBJIGRvbid0DQo+IG1lYW4NCj4gPiBl
cnJvcnMgdGhhdCBhcmUgcmVwb3J0ZWQgYW5kIGNhdXNpbmcgZmFpbHVyZSBidXQgdGhvc2UgdGhp
bmdzIHRoYXQNCj4gYXJlDQo+ID4gZmFpbGluZyBzaWxlbnRseSBhbmQgYXJlIGhhcmQgdG8gbm90
aWNlIG9yIHRyYWNlIGJhY2sgd2hlbiBub3RpY2luZy4NCj4gPg0KPiA+IFN1cmVseSBvdGhlcnMg
bWF5IHNlZSBpdCBkaWZmZXJlbnRseS4NCj4gPg0KPiA+DQo+ID4NCj4gPj4NCj4gPj4+ICAgICAg
YXZfYnByaW50ZigmYnVmLCAiJWQlYyVkIiwgcS5udW0sIHNlcCwgcS5kZW4pOw0KPiA+Pj4gICAg
ICBhdnRleHRfcHJpbnRfc3RyaW5nKHRjdHgsIGtleSwgYnVmLnN0ciwgMCk7DQo+ID4+PiAgfQ0K
PiA+Pj4gQEAgLTQ3MCwxMiArNDk1LDExIEBAIHZvaWQNCj4gYXZ0ZXh0X3ByaW50X3JhdGlvbmFs
KEFWVGV4dEZvcm1hdENvbnRleHQNCj4gPj4gKnRjdHgsIGNvbnN0IGNoYXIgKmtleSwgQVZSYXRp
b25hDQo+ID4+PiAgdm9pZCBhdnRleHRfcHJpbnRfdGltZShBVlRleHRGb3JtYXRDb250ZXh0ICp0
Y3R4LCBjb25zdCBjaGFyDQo+ICprZXksDQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQ2NF90IHRzLCBjb25zdCBBVlJhdGlvbmFsICp0aW1lX2Jhc2UsDQo+IGludA0KPiA+PiBpc19k
dXJhdGlvbikNCj4gPj4+ICB7DQo+ID4+PiAtICAgIGNoYXIgYnVmWzEyOF07DQo+ID4+PiAtDQo+
ID4+PiAgICAgIGlmICgoIWlzX2R1cmF0aW9uICYmIHRzID09IEFWX05PUFRTX1ZBTFVFKSB8fCAo
aXNfZHVyYXRpb24gJiYNCj4gPj4gdHMgPT0gMCkpIHsNCj4gPj4+ICAgICAgICAgIGF2dGV4dF9w
cmludF9zdHJpbmcodGN0eCwga2V5LCAiTi9BIiwNCj4gPj4gQVZfVEVYVEZPUk1BVF9QUklOVF9T
VFJJTkdfT1BUSU9OQUwpOw0KPiA+Pj4gICAgICB9IGVsc2Ugew0KPiA+Pj4gLSAgICAgICAgZG91
YmxlIGQgPSB0cyAqIGF2X3EyZCgqdGltZV9iYXNlKTsNCj4gPj4+ICsgICAgICAgIGNoYXIgYnVm
WzEyOF07DQo+ID4+PiArICAgICAgICBkb3VibGUgZCA9IGF2X3EyZCgqdGltZV9iYXNlKSAqIChk
b3VibGUpdHM7DQo+ID4+DQo+ID4+IFdlIGFjdHVhbGx5IHRyeSB0byBhdm9pZCBleHBsaWNpdCBj
YXN0cyB3aGVyZSBwb3NzaWJsZS4NCj4gPg0KPiA+DQo+ID4gSSdsbCBhbnN3ZXIgdGhhdCBzZXBh
cmF0ZWx5Lg0KPiA+DQo+ID4NCj4gPg0KPiA+Pj4gICAgICAgICAgc3RydWN0IHVuaXRfdmFsdWUg
dXY7DQo+ID4+PiAgICAgICAgICB1di52YWwuZCA9IGQ7DQo+ID4+PiAgICAgICAgICB1di51bml0
ID0gdW5pdF9zZWNvbmRfc3RyOw0KPiA+Pj4gQEAgLTQ5Niw3ICs1MjAsOCBAQCB2b2lkIGF2dGV4
dF9wcmludF9kYXRhKEFWVGV4dEZvcm1hdENvbnRleHQNCj4gPj4gKnRjdHgsIGNvbnN0IGNoYXIg
Km5hbWUsDQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRh
LCBpbnQgc2l6ZSkNCj4gPj4+ICB7DQo+ID4+PiAgICAgIEFWQlByaW50IGJwOw0KPiA+Pj4gLSAg
ICBpbnQgb2Zmc2V0ID0gMCwgbCwgaTsNCj4gPj4+ICsgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsN
Cj4gPj4+ICsgICAgaW50IGwsIGk7DQo+ID4+Pg0KPiA+Pj4gICAgICBhdl9icHJpbnRfaW5pdCgm
YnAsIDAsIEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRCk7DQo+ID4+PiAgICAgIGF2X2JwcmludGYo
JmJwLCAiXG4iKTsNCj4gPj4+IEBAIC01MjMsMjUgKzU0OCwyOSBAQCB2b2lkIGF2dGV4dF9wcmlu
dF9kYXRhKEFWVGV4dEZvcm1hdENvbnRleHQNCj4gPj4gKnRjdHgsIGNvbnN0IGNoYXIgKm5hbWUs
DQo+ID4+PiAgdm9pZCBhdnRleHRfcHJpbnRfZGF0YV9oYXNoKEFWVGV4dEZvcm1hdENvbnRleHQg
KnRjdHgsIGNvbnN0IGNoYXINCj4gPj4gKm5hbWUsDQo+ID4+PiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIGludCBzaXplKQ0KPiA+Pj4gIHsNCj4gPj4+
IC0gICAgY2hhciAqcCwgYnVmW0FWX0hBU0hfTUFYX1NJWkUgKiAyICsgNjRdID0geyAwIH07DQo+
ID4+PiArICAgIGNoYXIgYnVmW0FWX0hBU0hfTUFYX1NJWkUgKiAyICsgNjRdID0geyAwIH07DQo+
ID4+PiArICAgIGludCBsZW47DQo+ID4+Pg0KPiA+Pj4gICAgICBpZiAoIXRjdHgtPmhhc2gpDQo+
ID4+PiAgICAgICAgICByZXR1cm47DQo+ID4+Pg0KPiA+Pj4gICAgICBhdl9oYXNoX2luaXQodGN0
eC0+aGFzaCk7DQo+ID4+PiAgICAgIGF2X2hhc2hfdXBkYXRlKHRjdHgtPmhhc2gsIGRhdGEsIHNp
emUpOw0KPiA+Pj4gLSAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXM6IiwgYXZfaGFz
aF9nZXRfbmFtZSh0Y3R4LQ0KPiA+Pj4gaGFzaCkpOw0KPiA+Pj4gLSAgICBwID0gYnVmICsgc3Ry
bGVuKGJ1Zik7DQo+ID4+PiAtICAgIGF2X2hhc2hfZmluYWxfaGV4KHRjdHgtPmhhc2gsIHAsIGJ1
ZiArIHNpemVvZihidWYpIC0gcCk7DQo+ID4+PiArICAgIGxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6
ZW9mKGJ1ZiksICIlczoiLA0KPiBhdl9oYXNoX2dldF9uYW1lKHRjdHgtDQo+ID4+PiBoYXNoKSk7
DQo+ID4+PiArICAgIGF2X2hhc2hfZmluYWxfaGV4KHRjdHgtPmhhc2gsICh1aW50OF90ICopJmJ1
ZltsZW5dLA0KPiA+PiAoaW50KXNpemVvZihidWYpIC0gbGVuKTsNCj4gPj4NCj4gPj4gSXMgaXQg
Z3VhcmFudGVlZCB0aGF0IHRoZSBvdXRwdXQgb2Ygc25wcmludGYoKSBpcyBub3QgdHJ1bmNhdGVk
Pw0KPiA+DQo+ID4gTUFYX0hBU0hfTkFNRV9TSVpFIGlzIDExIGFuZCBBVl9IQVNIX01BWF9TSVpF
IDY0LCBtYWtlIDE5MiAtIDExID4gMA0KPiA+DQo+ID4NCj4gPj4NCj4gPj4+ICAgICAgYXZ0ZXh0
X3ByaW50X3N0cmluZyh0Y3R4LCBuYW1lLCBidWYsIDApOw0KPiA+Pj4gIH0NCj4gPj4+DQo+ID4+
PiAgdm9pZCBhdnRleHRfcHJpbnRfaW50ZWdlcnMoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwg
Y29uc3QgY2hhcg0KPiA+PiAqbmFtZSwNCj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqZGF0YSwgaW50IHNpemUsIGNvbnN0DQo+ID4+IGNoYXIgKmZvcm1h
dCwNCj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbnMs
IGludCBieXRlcywgaW50DQo+ID4+IG9mZnNldF9hZGQpDQo+ID4+PiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqZGF0YSwgaW50IHNpemUsIGNvbnN0IGNoYXINCj4gPj4gKmZv
cm1hdCwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1ucywgaW50
IGJ5dGVzLCBpbnQNCj4gb2Zmc2V0X2FkZCkNCj4gPj4+ICB7DQo+ID4+PiAgICAgIEFWQlByaW50
IGJwOw0KPiA+Pj4gLSAgICBpbnQgb2Zmc2V0ID0gMCwgbCwgaTsNCj4gPj4+ICsgICAgdW5zaWdu
ZWQgb2Zmc2V0ID0gMDsNCj4gPj4+ICsgICAgaW50IGwsIGk7DQo+ID4+PiArDQo+ID4+PiArICAg
IGlmICghbmFtZSB8fCAhZGF0YSB8fCAhZm9ybWF0IHx8IGNvbHVtbnMgPD0gMCB8fCBieXRlcyA8
PSAwKQ0KPiA+Pj4gKyAgICAgICAgcmV0dXJuOw0KPiA+Pg0KPiA+PiBDYW4gdGhpcyBoYXBwZW4/
DQo+ID4NCj4gPiBTdXJlLCBhcyBhIHB1YmxpYyBBUEkuIE9mIGNvdXJzZSwgb25lIGNhbiBzcGVu
ZCB0aW1lLCB0cnlpbmcgdG8NCj4gZGV0ZXJtaW5lDQo+ID4gd2hpY2ggY29uZGl0aW9ucyBhcmUg
cmVhbGlzdGljYWxseSBwb3NzaWJsZSBvciBub3QuIEJ1dCB0aGF0DQo+IGludHJvZHVjZXMNCj4g
PiBwb3RlbnRpYWwgb2YgaHVtYW4gZXJyb3IsIHNvIC0gdW5sZXNzIGl0J3MgYSByZWFsbHkgaG90
IHBhdGgsIG9uZQ0KPiBjaGVjaw0KPiA+IHRvIG1hbnkgaXMgYmV0dGVyIHRoYW4gb25lIHRvbyBs
ZXNzLg0KPiA+DQo+ID4NCj4gPj4NCj4gPj4+DQo+ID4+PiAgICAgIGF2X2JwcmludF9pbml0KCZi
cCwgMCwgQVZfQlBSSU5UX1NJWkVfVU5MSU1JVEVEKTsNCj4gPj4+ICAgICAgYXZfYnByaW50Zigm
YnAsICJcbiIpOw0KPiA+Pj4gQEAgLTYwNywxMiArNjM2LDE4IEBAIGludA0KPiA+PiBhdnRleHR3
cml0ZXJfY29udGV4dF9vcGVuKEFWVGV4dFdyaXRlckNvbnRleHQgKipwd2N0eCwgY29uc3QNCj4g
Pj4gQVZUZXh0V3JpdGVyICp3DQo+ID4+PiAgICAgIEFWVGV4dFdyaXRlckNvbnRleHQgKndjdHg7
DQo+ID4+PiAgICAgIGludCByZXQgPSAwOw0KPiA+Pj4NCj4gPj4+IC0gICAgaWYgKCEod2N0eCA9
IGF2X21hbGxvY3ooc2l6ZW9mKEFWVGV4dFdyaXRlckNvbnRleHQpKSkpIHsNCj4gPj4+ICsgICAg
aWYgKCFwd2N0eCB8fCAhd3JpdGVyKQ0KPiA+Pj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO
VkFMKTsNCj4gPj4+ICsNCj4gPj4+ICsgICAgaWYgKCF3cml0ZXItPnByaXZfc2l6ZSAmJiB3cml0
ZXItPnByaXZfY2xhc3MpDQo+ID4+DQo+ID4+IFN0dWZmIGxpa2UgdGhpcyBzaG91bGQgbmV2ZXIg
aGFwcGVuIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZQ0KPiA+PiBjaGVja2VkLg0KPiA+DQo+
ID4gT0suDQo+ID4NCj4gPj4NCj4gPj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7
DQo+ID4+PiArDQo+ID4+PiArICAgIGlmICghKCh3Y3R4ID0gYXZfbWFsbG9jeihzaXplb2YoQVZU
ZXh0V3JpdGVyQ29udGV4dCkpKSkpIHsNCj4gPj4+ICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5P
TUVNKTsNCj4gPj4+ICAgICAgICAgIGdvdG8gZmFpbDsNCj4gPj4+ICAgICAgfQ0KPiA+Pj4NCj4g
Pj4+IC0gICAgaWYgKCEod2N0eC0+cHJpdiA9IGF2X21hbGxvY3ood3JpdGVyLT5wcml2X3NpemUp
KSkgew0KPiA+Pj4gKyAgICBpZiAod3JpdGVyLT5wcml2X3NpemUgJiYgISgod2N0eC0+cHJpdiA9
IGF2X21hbGxvY3ood3JpdGVyLQ0KPiA+Pj4gcHJpdl9zaXplKSkpKSB7DQo+ID4+PiAgICAgICAg
ICByZXQgPSBBVkVSUk9SKEVOT01FTSk7DQo+ID4+PiAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4+
PiAgICAgIH0NCj4gPj4+IGRpZmYgLS1naXQgYS9mZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9y
bWF0LmgNCj4gPj4gYi9mZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmgNCj4gPj4+IGlu
ZGV4IDAzNTY0ZDE0YTcuLmU1MTkwOTRmNGYgMTAwNjQ0DQo+ID4+PiAtLS0gYS9mZnRvb2xzL3Rl
eHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmgNCj4gPj4+ICsrKyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC9h
dnRleHRmb3JtYXQuaA0KPiA+Pj4gQEAgLTIxLDkgKzIxLDcgQEANCj4gPj4+ICAjaWZuZGVmIEZG
VE9PTFNfVEVYVEZPUk1BVF9BVlRFWFRGT1JNQVRfSA0KPiA+Pj4gICNkZWZpbmUgRkZUT09MU19U
RVhURk9STUFUX0FWVEVYVEZPUk1BVF9IDQo+ID4+Pg0KPiA+Pj4gLSNpbmNsdWRlIDxzdGRkZWYu
aD4NCj4gPj4+ICAjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4+PiAtI2luY2x1ZGUgImxpYmF2dXRp
bC9hdHRyaWJ1dGVzLmgiDQo+ID4+PiAgI2luY2x1ZGUgImxpYmF2dXRpbC9kaWN0LmgiDQo+ID4+
PiAgI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2aW8uaCINCj4gPj4+ICAjaW5jbHVkZSAibGliYXZ1
dGlsL2JwcmludC5oIg0KPiA+Pj4gQEAgLTEwMyw3ICsxMDEsNyBAQCBzdHJ1Y3QgQVZUZXh0Rm9y
bWF0Q29udGV4dCB7DQo+ID4+PiAgICAgIHVuc2lnbmVkIGludA0KPiA+PiBuYl9pdGVtX3R5cGVb
U0VDVElPTl9NQVhfTkJfTEVWRUxTXVtTRUNUSU9OX01BWF9OQl9TRUNUSU9OU107DQo+ID4+Pg0K
PiA+Pj4gICAgICAvKiogc2VjdGlvbiBwZXIgZWFjaCBsZXZlbCAqLw0KPiA+Pj4gLSAgICBjb25z
dCBzdHJ1Y3QgQVZUZXh0Rm9ybWF0U2VjdGlvbg0KPiA+PiAqc2VjdGlvbltTRUNUSU9OX01BWF9O
Ql9MRVZFTFNdOw0KPiA+Pj4gKyAgICBjb25zdCBBVlRleHRGb3JtYXRTZWN0aW9uICpzZWN0aW9u
W1NFQ1RJT05fTUFYX05CX0xFVkVMU107DQo+ID4+PiAgICAgIEFWQlByaW50IHNlY3Rpb25fcGJ1
ZltTRUNUSU9OX01BWF9OQl9MRVZFTFNdOyAvLy88IGdlbmVyaWMNCj4gPj4gcHJpbnQgYnVmZmVy
IGRlZGljYXRlZCB0byBlYWNoIHNlY3Rpb24sDQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8gIHVzZWQgYnkNCj4gPj4gdmFyaW91cyBm
b3JtYXR0ZXJzDQo+ID4+Pg0KPiA+Pj4gQEAgLTEyNCw3ICsxMjIsNyBAQCBzdHJ1Y3QgQVZUZXh0
Rm9ybWF0Q29udGV4dCB7DQo+ID4+PiAgI2RlZmluZSBBVl9URVhURk9STUFUX1BSSU5UX1NUUklO
R19WQUxJREFURSAyDQo+ID4+Pg0KPiA+Pj4gIGludCBhdnRleHRfY29udGV4dF9vcGVuKEFWVGV4
dEZvcm1hdENvbnRleHQgKipwdGN0eCwgY29uc3QNCj4gPj4gQVZUZXh0Rm9ybWF0dGVyICpmb3Jt
YXR0ZXIsIEFWVGV4dFdyaXRlckNvbnRleHQgKndyaXRlcl9jb250ZXh0LA0KPiBjb25zdA0KPiA+
PiBjaGFyICphcmdzLA0KPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj
dCBBVlRleHRGb3JtYXRTZWN0aW9uDQo+ICpzZWN0aW9ucywNCj4gPj4gaW50IG5iX3NlY3Rpb25z
LA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWVGV4dEZvcm1hdFNlY3Rp
b24gKnNlY3Rpb25zLCBpbnQNCj4gPj4gbmJfc2VjdGlvbnMsDQo+ID4+PiAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHNob3dfdmFsdWVfdW5pdCwNCj4gPj4+ICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgdXNlX3ZhbHVlX3ByZWZpeCwNCj4gPj4+ICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgdXNlX2J5dGVfdmFsdWVfYmluYXJ5X3ByZWZpeCwNCj4gPj4+IGRpZmYgLS1naXQg
YS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfZGVmYXVsdC5jDQo+ID4+IGIvZmZ0b29scy90ZXh0Zm9y
bWF0L3RmX2RlZmF1bHQuYw0KPiA+Pj4gaW5kZXggMTRlZjlmZThmOS4uM2IwNWQyNWYzNiAxMDA2
NDQNCj4gPj4+IC0tLSBhL2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl9kZWZhdWx0LmMNCj4gPj4+ICsr
KyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl9kZWZhdWx0LmMNCj4gPj4+IEBAIC03MCw5ICs3MCwx
MCBAQCBERUZJTkVfRk9STUFUVEVSX0NMQVNTKGRlZmF1bHQpOw0KPiA+Pj4gIC8qIGxhbWUgdXBw
ZXJjYXNpbmcgcm91dGluZSwgYXNzdW1lcyB0aGUgc3RyaW5nIGlzIGxvd2VyIGNhc2UNCj4gQVND
SUkNCj4gPj4gKi8NCj4gPj4+ICBzdGF0aWMgaW5saW5lIGNoYXIgKnVwY2FzZV9zdHJpbmcoY2hh
ciAqZHN0LCBzaXplX3QgZHN0X3NpemUsDQo+IGNvbnN0DQo+ID4+IGNoYXIgKnNyYykNCj4gPj4+
ICB7DQo+ID4+PiAtICAgIGludCBpOw0KPiA+Pj4gKyAgICB1bnNpZ25lZCBpOw0KPiA+Pj4gKw0K
PiA+Pg0KPiA+PiBXaHkgbm90IHNpemVfdD8NCj4gPg0KPiA+IHNlZSBhYm92ZS4NCj4gPg0KPiA+
Pg0KPiA+Pj4gICAgICBmb3IgKGkgPSAwOyBzcmNbaV0gJiYgaSA8IGRzdF9zaXplIC0gMTsgaSsr
KQ0KPiA+Pj4gLSAgICAgICAgZHN0W2ldID0gYXZfdG91cHBlcihzcmNbaV0pOw0KPiA+Pj4gKyAg
ICAgICAgZHN0W2ldID0gKGNoYXIpYXZfdG91cHBlcihzcmNbaV0pOw0KPiA+Pj4gICAgICBkc3Rb
aV0gPSAwOw0KPiA+Pj4gICAgICByZXR1cm4gZHN0Ow0KPiA+Pj4gIH0NCj4gPj4+IEBAIC0xMDgs
NiArMTA5LDkgQEAgc3RhdGljIHZvaWQNCj4gPj4gZGVmYXVsdF9wcmludF9zZWN0aW9uX2Zvb3Rl
cihBVlRleHRGb3JtYXRDb250ZXh0ICp3Y3R4KQ0KPiA+Pj4gICAgICBjb25zdCBzdHJ1Y3QgQVZU
ZXh0Rm9ybWF0U2VjdGlvbiAqc2VjdGlvbiA9IHdjdHgtDQo+ID5zZWN0aW9uW3djdHgtDQo+ID4+
PiBsZXZlbF07DQo+ID4+PiAgICAgIGNoYXIgYnVmWzMyXTsNCj4gPj4+DQo+ID4+PiArICAgIGlm
ICghc2VjdGlvbikNCj4gPj4+ICsgICAgICAgIHJldHVybjsNCj4gPj4NCj4gPj4gQ2FuIHRoaXMg
aGFwcGVuPw0KPiA+DQo+ID4gTm8sIGJ1dCBoZXJlIGl0IHNob3VsZCBhY3R1YWxseSBjYWxsIHRo
ZSBmdW5jdGlvbiBpbiB0Zl9pbnRlcm5hbCBhbmQNCj4gd2l0aA0KPiA+IHRoYXQgaXQgY2FuIGhh
cHBlbi4gVGhpcyBtdXN0IGhhdmUgZ290dGVuIGxvc3QgZnJvbSByZWJhc2luZy4NCj4gPg0KPiA+
DQo+ID4+PiArDQo+ID4+PiAgICAgIGlmIChkZWYtPm5vcHJpbnRfd3JhcHBlcnMgfHwgZGVmLT5u
ZXN0ZWRfc2VjdGlvblt3Y3R4LQ0KPiA+bGV2ZWxdKQ0KPiA+Pj4gICAgICAgICAgcmV0dXJuOw0K
PiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfaW5pLmMNCj4g
Pj4gYi9mZnRvb2xzL3RleHRmb3JtYXQvdGZfaW5pLmMNCj4gPj4+IGluZGV4IDllMWFhNjBlMDku
LmVjNDcxZmQ0ODAgMTAwNjQ0DQo+ID4+PiAtLS0gYS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfaW5p
LmMNCj4gPj4+ICsrKyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl9pbmkuYw0KPiA+Pj4gQEAgLTky
LDcgKzkyLDcgQEAgc3RhdGljIGNoYXIgKmluaV9lc2NhcGVfc3RyKEFWQlByaW50ICpkc3QsIGNv
bnN0DQo+ID4+IGNoYXIgKnNyYykNCj4gPj4+ICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAq
Lw0KPiA+Pj4gICAgICAgICAgZGVmYXVsdDoNCj4gPj4+ICAgICAgICAgICAgICBpZiAoKHVuc2ln
bmVkIGNoYXIpYyA8IDMyKQ0KPiA+Pj4gLSAgICAgICAgICAgICAgICBhdl9icHJpbnRmKGRzdCwg
IlxceDAwJTAyeCIsIGMgJiAweGZmKTsNCj4gPj4+ICsgICAgICAgICAgICAgICAgYXZfYnByaW50
Zihkc3QsICJcXHgwMCUwMngiLCAodW5zaWduZWQgY2hhciljKTsNCj4gPj4+ICAgICAgICAgICAg
ICBlbHNlDQo+ID4+PiAgICAgICAgICAgICAgICAgIGF2X2JwcmludF9jaGFycyhkc3QsIGMsIDEp
Ow0KPiA+Pj4gICAgICAgICAgICAgIGJyZWFrOw0KPiA+Pj4gZGlmZiAtLWdpdCBhL2ZmdG9vbHMv
dGV4dGZvcm1hdC90Zl9qc29uLmMNCj4gPj4gYi9mZnRvb2xzL3RleHRmb3JtYXQvdGZfanNvbi5j
DQo+ID4+PiBpbmRleCAyNDgzOGIzNWVjLi5mMjg2ODM4ZDNjIDEwMDY0NA0KPiA+Pj4gLS0tIGEv
ZmZ0b29scy90ZXh0Zm9ybWF0L3RmX2pzb24uYw0KPiA+Pj4gKysrIGIvZmZ0b29scy90ZXh0Zm9y
bWF0L3RmX2pzb24uYw0KPiA+Pj4gQEAgLTgyLDEzICs4MiwxOCBAQCBzdGF0aWMgY29uc3QgY2hh
ciAqanNvbl9lc2NhcGVfc3RyKEFWQlByaW50DQo+ID4+ICpkc3QsIGNvbnN0IGNoYXIgKnNyYywg
dm9pZCAqbG9nX2N0eA0KPiA+Pj4gICAgICBzdGF0aWMgY29uc3QgY2hhciBqc29uX3N1YnN0W10g
ID0geyAnIicsICdcXCcsICAnYicsICAnZicsDQo+ID4+ICduJywgICdyJywgICd0JywgMCB9Ow0K
PiA+Pj4gICAgICBjb25zdCBjaGFyICpwOw0KPiA+Pj4NCj4gPj4+ICsgICAgaWYgKCFzcmMpIHsN
Cj4gPj4+ICsgICAgICAgIGF2X2xvZyhsb2dfY3R4LCBBVl9MT0dfRVJST1IsICJqc29uX2VzY2Fw
ZV9zdHI6IE5VTEwNCj4gc291cmNlDQo+ID4+IHN0cmluZ1xuIik7DQo+ID4+PiArICAgICAgICBy
ZXR1cm4gTlVMTDsNCj4gPj4+ICsgICAgfQ0KPiA+Pg0KPiA+PiBDYW4gdGhpcyBldmVuIGhhcHBl
bj8NCj4gPj4NCj4gPj4+ICsNCj4gPj4+ICAgICAgZm9yIChwID0gc3JjOyAqcDsgcCsrKSB7DQo+
ID4+PiAgICAgICAgICBjaGFyICpzID0gc3RyY2hyKGpzb25fZXNjYXBlLCAqcCk7DQo+ID4+PiAg
ICAgICAgICBpZiAocykgew0KPiA+Pj4gICAgICAgICAgICAgIGF2X2JwcmludF9jaGFycyhkc3Qs
ICdcXCcsIDEpOw0KPiA+Pj4gICAgICAgICAgICAgIGF2X2JwcmludF9jaGFycyhkc3QsIGpzb25f
c3Vic3RbcyAtIGpzb25fZXNjYXBlXSwgMSk7DQo+ID4+PiAgICAgICAgICB9IGVsc2UgaWYgKCh1
bnNpZ25lZCBjaGFyKSpwIDwgMzIpIHsNCj4gPj4+IC0gICAgICAgICAgICBhdl9icHJpbnRmKGRz
dCwgIlxcdTAwJTAyeCIsICpwICYgMHhmZik7DQo+ID4+PiArICAgICAgICAgICAgYXZfYnByaW50
Zihkc3QsICJcXHUwMCUwMngiLCAodW5zaWduZWQgY2hhcikqcCk7DQo+ID4+PiAgICAgICAgICB9
IGVsc2Ugew0KPiA+Pj4gICAgICAgICAgICAgIGF2X2JwcmludF9jaGFycyhkc3QsICpwLCAxKTsN
Cj4gPj4+ICAgICAgICAgIH0NCj4gPj4+IEBAIC0xMDcsNiArMTEyLDcgQEAgc3RhdGljIHZvaWQN
Cj4gPj4ganNvbl9wcmludF9zZWN0aW9uX2hlYWRlcihBVlRleHRGb3JtYXRDb250ZXh0ICp3Y3R4
LCBjb25zdCB2b2lkDQo+ICpkYXQNCj4gPj4+ICAgICAgICAgIHdjdHgtPnNlY3Rpb25bd2N0eC0+
bGV2ZWwtMV0gOiBOVUxMOw0KPiA+Pj4NCj4gPj4+ICAgICAgaWYgKHdjdHgtPmxldmVsICYmIHdj
dHgtPm5iX2l0ZW1bd2N0eC0+bGV2ZWwtMV0pDQo+ID4+PiArICAgIGlmICh3Y3R4LT5sZXZlbCAm
JiB3Y3R4LT5uYl9pdGVtW3djdHgtPmxldmVsIC0gMV0pDQo+ID4+PiAgICAgICAgICB3cml0ZXJf
cHV0X3N0cih3Y3R4LCAiLFxuIik7DQo+ID4+Pg0KPiA+Pj4gICAgICBpZiAoc2VjdGlvbi0+Zmxh
Z3MgJiBBVl9URVhURk9STUFUX1NFQ1RJT05fRkxBR19JU19XUkFQUEVSKSB7DQo+ID4+PiBkaWZm
IC0tZ2l0IGEvZmZ0b29scy90ZXh0Zm9ybWF0L3RmX3htbC5jDQo+ID4+IGIvZmZ0b29scy90ZXh0
Zm9ybWF0L3RmX3htbC5jDQo+ID4+PiBpbmRleCA3NjI3MWRiYWE2Li5lY2VlZGE4MWU1IDEwMDY0
NA0KPiA+Pj4gLS0tIGEvZmZ0b29scy90ZXh0Zm9ybWF0L3RmX3htbC5jDQo+ID4+PiArKysgYi9m
ZnRvb2xzL3RleHRmb3JtYXQvdGZfeG1sLmMNCj4gPj4+IEBAIC0xOCwxMCArMTgsNyBAQA0KPiA+
Pj4gICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUENCj4gPj4gMDIxMTAtMTMwMSBVU0ENCj4gPj4+ICAgKi8NCj4gPj4+DQo+ID4+
PiAtI2luY2x1ZGUgPGxpbWl0cy5oPg0KPiA+Pj4gLSNpbmNsdWRlIDxzdGRhcmcuaD4NCj4gPj4+
ICAjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4+PiAtI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4+PiAg
I2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+Pj4NCj4gPj4+ICAjaW5jbHVkZSAiYXZ0ZXh0Zm9ybWF0
LmgiDQo+ID4+PiBkaWZmIC0tZ2l0IGEvZmZ0b29scy90ZXh0Zm9ybWF0L3R3X2F2aW8uYw0KPiA+
PiBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90d19hdmlvLmMNCj4gPj4+IGluZGV4IGQzMzVkMzVhNTYu
LjNjNzQ5MmFhMDYgMTAwNjQ0DQo+ID4+PiAtLS0gYS9mZnRvb2xzL3RleHRmb3JtYXQvdHdfYXZp
by5jDQo+ID4+PiArKysgYi9mZnRvb2xzL3RleHRmb3JtYXQvdHdfYXZpby5jDQo+ID4+PiBAQCAt
NjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBpb193OChBVlRleHRXcml0ZXJDb250ZXh0ICp3Y3R4
LCBpbnQNCj4gPj4gYikNCj4gPj4+ICBzdGF0aWMgdm9pZCBpb19wdXRfc3RyKEFWVGV4dFdyaXRl
ckNvbnRleHQgKndjdHgsIGNvbnN0IGNoYXINCj4gKnN0cikNCj4gPj4+ICB7DQo+ID4+PiAgICAg
IElPV3JpdGVyQ29udGV4dCAqY3R4ID0gd2N0eC0+cHJpdjsNCj4gPj4+IC0gICAgYXZpb193cml0
ZShjdHgtPmF2aW9fY29udGV4dCwgc3RyLCBzdHJsZW4oc3RyKSk7DQo+ID4+PiArICAgIGF2aW9f
d3JpdGUoY3R4LT5hdmlvX2NvbnRleHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopc3RyLA0KPiA+
PiAoaW50KXN0cmxlbihzdHIpKTsNCj4gPj4+ICB9DQo+ID4+Pg0KPiA+Pj4gIHN0YXRpYyB2b2lk
IGlvX3ByaW50ZihBVlRleHRXcml0ZXJDb250ZXh0ICp3Y3R4LCBjb25zdCBjaGFyICpmbXQsDQo+
ID4+IC4uLikNCj4gPj4+IEBAIC04OSwxMCArODksMTIgQEAgY29uc3QgQVZUZXh0V3JpdGVyIGF2
dGV4dHdyaXRlcl9hdmlvID0gew0KPiA+Pj4NCj4gPj4+ICBpbnQgYXZ0ZXh0d3JpdGVyX2NyZWF0
ZV9maWxlKEFWVGV4dFdyaXRlckNvbnRleHQgKipwd2N0eCwgY29uc3QNCj4gPj4gY2hhciAqb3V0
cHV0X2ZpbGVuYW1lLCBpbnQgY2xvc2Vfb25fdW5pbml0KQ0KPiA+Pj4gIHsNCj4gPj4+ICsgICAg
aWYgKCFwd2N0eCB8fCAhb3V0cHV0X2ZpbGVuYW1lIHx8ICFvdXRwdXRfZmlsZW5hbWVbMF0pDQo+
ID4+PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KPiA+Pg0KPiA+PiBDYW4gdGhp
cyBoYXBwZW4/DQo+ID4NCj4gPiBXaGVuIHB1YmxpYyAtIHllcy4NCj4gDQo+IENhbiBpdCBoYXBw
ZW4gbm93Pw0KPiANCj4gPg0KPiA+DQo+ID4gR2VuZXJhbGx5LCBJIHdvbmRlcjogZG9uJ3QgeW91
IGZpbmQgaXQgcmlza3kgdG8gbWFrZSBkZWNpc2lvbnMgYWJvdXQNCj4gPiBmdW5jdGlvbiBpbXBs
ZW1lbnRhdGlvbnMgdGhhdCBhcmUgYmFzZWQgb24ga25vd2xlZGdlIGFib3V0IHRoZQ0KPiBjYWxs
aW5nDQo+ID4gY29kZT8gKCJjYW4gdGhpcyBoYXBwZW4/IikNCj4gPiBJIG1lYW4sIHRoZSBjYWxs
aW5nIGNvZGUgZG9lc24ndCBrbm93IGFib3V0IHRoZSBhc3N1bXB0aW9ucyB5b3UNCj4gPiB3ZXJl
IG1ha2luZyBhbmQgb24gd2hpY2ggYmVoYXZpb3IgdGhlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGJl
DQo+IHJlbHlpbmcgb24uDQo+IA0KPiBOb3QgcHJvdmlkaW5nIGEgcG9pbnRlciB0byBzdG9yZSB0
aGUgQVZUZXh0V3JpdGVyQ29udGV4dCogaXMgaW5zYW5lDQo+IGFuZA0KPiBhIHByb2dyYW1tZXIg
ZXJyb3IuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4uIERvaW5nIHNvIHNob3VsZCBsZWFkIHRvDQo+
IHVuZGVmaW5lZCBiZWhhdmlvciAoanVzdCBhcyBlLmcuIHBhc3NpbmcgYSBOVUxMIHBvaW50ZXIg
dG8gc3RybGVuKCkNCj4gZG9lcyksIGV2ZW4gd2hlbiBwdWJsaWMuDQoNCkhpIEFuZHJlYXMsDQoN
CmZvciB0aGUgQVZUZXh0V3JpdGVyQ29udGV4dCBJIGFncmVlLCBoYXZlbid0IG1hZGUgc3VjaCBj
aGVja3MgaW4gDQp0aGUgZm9ybWF0dGVycyBlaXRoZXIuIEZvciBvdGhlciBjYXNlcyBJIHRoaW5r
IC0gaXQgZGVwZW5kcy4uDQoNCg0KPiA+IEZvciB0aGlzIHBhdGNoc2V0IC0gbW9zdCBpbXBvcnRh
bnRseSBmb3IgZXZlcnl0aGluZyBpbiBncmFwaHByaW50LmMsDQo+ID4gSSBoYWQgd29ya2VkIHdp
dGggdGhlIGRlbGliZXJhdGUgaW50ZW50aW9uIGZvciBjaGVja2luZyBldmVyeXRoaW5nDQo+IHRo
YXQNCj4gPiBjYW4gYmUgY2hlY2tlZC4NCj4gDQo+IFlvdSBzaG91bGQgcmF0aGVyIGxvb2sgYXQg
dGhlIGNhbGxzaXRlcyBhbmQgZW5zdXJlIHRoYXQgdGhleSBkb24ndA0KPiBjYWxsDQo+IHRoZXNl
IGZ1bmN0aW9ucyBpbiBhbiBpbnNhbmUgd2F5Lg0KPiBUaGUgbW90aXZhdGlvbiBoZXJlIGlzIHRo
ZSBmYWN0IHRoYXQgZ3JhcGgtcHJpbnRpbmcNCj4gPiBpcyBhbHdheXMgcnVuICh3aGVuIGNvbmZp
Z3VyZWQpLCBldmVuIHdoZW4gdGhlIEZGbXBlZyBydW4gaGFzIGZhaWxlZA0KPiA+IG9yIGVycm9y
ZWQsIGJlY2F1c2UgdGhvc2UgYXJlIG9mdGVuIHRoZSBtb3N0IGludGVyZXN0aW5nIGNhc2VzIGZv
cg0KPiA+IHZpZXdpbmcgdGhlIGdyYXBoIG9yIGdldHRpbmcgdGhlIGRhdGEuDQo+ID4gQnV0IGlu
IGNhc2Ugb2YgZXJyb3JzIGFuZCBhYm9ydGlvbiwgd2UgY2Fubm90IG1ha2UgYW55IGFzc3VtcHRp
b25zDQo+ID4gYW55bW9yZSBhbmQgdGhlIGFuc3dlciB0byAiY2FuIHRoaXMgaGFwcGVuPyIgbWln
aHQgYmUgbW9yZSBvZnRlbg0KPiAieWVzIg0KPiA+IHRoYW4gdXN1YWwuDQo+IA0KPiBPZiBjb3Vy
c2Ugd2UgY2FuIG1ha2UgYXNzdW1wdGlvbnMuIEFsbCB3ZSBuZWVkIHRvIGRvIGlzIGNoZWNrIHRo
ZSBvbmVzDQo+IHRoYXQgY2FuIGhhcHBlbiBhdCB0aGUgY2FsbCBzaXRlLiBXaGVyZSB0aGV5IGJl
bG9uZy4NCg0KQW5kIHdoZW4gc29tZWJvZHkgbWFrZXMgY2hhbmdlcyBhdCB0aG9zZSBjYWxsIHNp
dGVzPyBUaGF0IHBlcnNvbiANCndvbid0IGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIGFzc3VtcHRp
b25zIHdlIGhhZCBtYWRlLg0KDQoNClRob3VnaCwgaW4gZ3JhcGhwcmludC5jIGl0J3MgcHJpbWFy
aWx5IGFib3V0IHRyYXZlcnNpbmcgdGhyb3VnaA0KbWFueSBkaWZmZXJlbnQgc3RydWN0dXJlcyB0
byBjb2xsZWN0IGFsbCB0aGUgZGF0YS4gVGhpcyBpcyB3aGVyZSBJJ20NCnNheWluZyB0aGF0IHdl
IGNhbm5vdCBtYWtlIGFueSBhc3N1bXB0aW9ucyBiZWNhdXNlIHdlIGFsc28gZG8gdGhpcyANCndo
ZW4gRkZtcGVnIGlzIGVycm9yaW5nIG91dCBhbmQgaXQncyBoYXJkbHkgZmVhc2libGUgdG8gZm9y
ZXNlZSBhbGwNCnBvc3NpYmxlIG91dGNvbWVzIC0gdGhhdOKAmXMgd2hhdCBJIG1lYW50IG9yaWdp
bmFsbHkuDQoNCg0KPiA+DQo+ID4gSSBob3BlIHlvdSBkb24ndCBtaW5kIHRvIHBvc3Rwb25lIHRo
ZSByZW1vdmFsIG9mIGNoZWNrcyBhIGxpdHRsZQ0KPiBiaXQuDQo+IA0KPiAiUmVtb3ZhbCBvZiBj
aGVja3MiPyBUaGlzIHBhdGNoIGlzIGFib3V0IGFkZGluZyBjaGVja3MuIENoZWNrcyB3aGljaA0K
PiBJTU8NCj4gc2hvdWxkIG5vdCBiZSB0aGVyZSBpbiB0aGUgZmlyc3QgcGxhY2UuDQoNCkkgbWVh
biBwb3N0cG9uaW5nIHRoZSByZW1vdmFsIG9mIGNoZWNrcyBmcm9tIHRoZSBjb21taXQgdGhhdCBp
cyBhZGRpbmcNCnRoZW0uDQoNCkJlY2F1c2U6DQoNCj4gPiBJdCBkb2Vzbid0IGZlZWwgcmlnaHQg
dG8gbWUgbm93LCB0byBnbyBvdmVyIGFuZCBqdXN0IGJsaW5kbHkgcmVtb3ZlDQo+ID4gYWxsIG9m
IHRoZW0uIEkgd291bGQgcmF0aGVyIGxpa2UgdG8gZGlzY3VzcyBhIHN0cmF0ZWd5L3BhdHRlcm4g
aW4NCj4gdGhpcw0KPiA+IHJlZ2FyZCBhYm91dCB3aGljaCBjaGVja3Mgc2hvdWxkIGJlIG1hZGUg
YXQgd2hpY2ggcGxhY2VzIGFuZCB3aGVyZQ0KPiA+IG5vdCwgYWxzbyBpbiB0aGUgbGlnaHQgb2Yg
cG9zc2libHkgYmVpbmcgcHJvbW90ZWQgdG8gYSBwdWJsaWMgQVBJLg0KPiA+IEZpbmFsbHksIEkn
ZCBhbHNvIGxpa2UgdG8gaGVhciBTdGVmYW5vcyBvcGluaW9uIC0gaXQncyBtb3N0bHkgaGlzDQo+
ID4gY29kZSB0aGF0IHdlJ3JlIG1vdmluZyBhcm91bmQgaGVyZSDwn5iKDQoNCkkgd2lsbCBmb2xs
b3ctdXAgb24gdGhpcyBzdWJqZWN0IHNob3J0bHkuDQoNClRoYW5rIHlvdSB2ZXJ5IG11Y2gNCnN3
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWct
ZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVn
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0
IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0
aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==