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 2C30C4CECB
	for <ffmpegdev@gitmailbox.com>; Tue, 15 Apr 2025 03:20:11 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 32718687CF5;
	Tue, 15 Apr 2025 06:20:06 +0300 (EEST)
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11olkn2093.outbound.protection.outlook.com [40.92.19.93])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0E18A687A17
 for <ffmpeg-devel@ffmpeg.org>; Tue, 15 Apr 2025 06:19:59 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=q1Kh2xvMkK8M6x60KT2FZCJ2ZOuymY41M+IEDPMY6tL7MAtLmu0qHhUj5hycchI+OJit60iaqvNevZg7osWnlXh66w2GNMgfauztu4BiC0HL8YSCNjgOwlVk3bpPaYd7JdWxBmTeaCopBnak73UwQcBTTwij/DGz8ggr00fNPVruH8XOcUChKFTQbKvmt5Xs0dNHPifWo5ctHiOLfGdCQGFSoMMB2MdT2t4ZoVGVwI6pK4WkAIl+xyunBPlHSga/Ldk89eHbai1MAlFxX+Tji7fQVlVeXMrbXtNyyQ7oUOpsi9A1pj3z+mHw8qn62gC6KX28w1Cr7M8fjm56C2a7sQ==
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=dguMVLOxTHnLik4miilxAQZaXNuPf7oxhbnt430kmQE=;
 b=DTATalWvpmiKHqroiHSBOGcH8Bf2AilC6DfF6JMwKKY/chkmHxBpO5v4sxks+S2oscmqa3pthpjTFu8zieSUvWjT3K8E9RuyD8qWi88FYHTaApJ6qQZDlt3R2cnq0IkcLiQCTruxt6D3JQZbs51tr6zXWwsf2fECw56aPILdb81MYpZ5AO95XnZT7v7fRb0bhYUUildTbvaoBF+iNOWnWNwiqIG4uRVW2Ef7mt+nzRaPzjt+Z/Skk2gRA3RTNmE6ZN1xDukt2HFKNsBh5SFLjGK+9UXoI3mJyjN01af/Y3m0PCA5lCDXkMu2JzJWR6j/PnWIp/AcnxD32OrPhVEjXw==
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=dguMVLOxTHnLik4miilxAQZaXNuPf7oxhbnt430kmQE=;
 b=QXaswRTuKRXl/BFvz1JpXz+WFzLVlKJzsaqzU4PSCkVcJVVAWsvC5spT8/zvLFdPg2jRkU+wnHMvRMk5Zuxn2iKYvtMaXj4WX+WkqZuhP1qABIbpIf9ceqddjxpULRsIZsuQFscCuDbXHny5qWxyyqkGk3gHzy1hUQTuU524kBB8utleQcqAK4c/2i/vdDF6n28mAmXUummH+exzkR76ImXCQgy9hblD4CIY/4HJRvDIwEY6+C7q18ESb/LWKUf+pMhY4S/U7iTfUryxe7pYmBHypK7NSQyc3bFdCF2v0GZWkKVamaNCscNq20Ismjcp+ya9hVLHvyNhYNLJVejmwQ==
Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by
 BL3P223MB0067.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:348::15) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8632.36; Tue, 15 Apr 2025 03:19:55 +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; Tue, 15 Apr 2025
 03:19:54 +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+2rYOrWU2mhQ1ZN1rSQ7Oj6pAAgAALFfA=
Date: Tue, 15 Apr 2025 03:19:54 +0000
Message-ID: <DM8P223MB03659AF3483E00EC43597670BAB22@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>
In-Reply-To: <GV1P250MB073708D33D46AB881810F1728FB22@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_|BL3P223MB0067:EE_
x-ms-office365-filtering-correlation-id: ee68dc49-0494-4a3e-3caa-08dd7bcc649d
x-ms-exchange-slblob-mailprops: 9IecXKUgicA7+VuJlYgio7csxP7RAb93mBgDLhfhuW+GXapu0MUacqACVr0gNDb55gskbSRSRJbkrBAKKNaH9zLvaHvlres1BtOJ9p4sFFnIZ3DY9HwZai8qLpJ9O5cc9sgLbkjL5iFkSDFd1K6e7CuiYTI32yVrOBvAOkcIudVgNA5YfSiPJyxIOq61O+mkYt0Di5BWmHnnodj7WyeCXWjXRvM1h86ZVr6aNPKSY990zC0O0uOEm/QoNQr0eYfFo3F5rRz2fxmxGMN37Ki3YNdgCcFRBNJ76UFwwinPF8lkzrR+XvBRqNKVIF2mi0EcrL8CNpQgVut/e2Madsw+G0suvN5U9UoysJPaqJ4AICCZxPX8eXJFeLGYR2sKlCcithuh1lP9JBaPv7dreg9kfl85zgBVlqnUiBdTsvWBDPsFt74Q82uLBtZwlMBCD1y1ajB/zss7beR6buhM9mCj8iP2uN2uFWAPk2gL3Yl4/65uEz0Qs9K2tzdm0HmPTwktz9fgfMPwZoS9VkbKLRkSDbKv93B9CnBrdZZd+cpcua9lXK4WuE5xT194++hymnUNkSdCRdnw4JUEu3RccoLnmaOh35gxvUpGW7/ViHwF9rJ+CP+JZlxaB+zdiCHzGtcmHtOKxpq+HyP0JEDVr/TeZWn5vWOfRJdZWQCrGElcJ9Uy1PfOcurIKODRj1sZHgLlK+R+QOSqZu35D/lOq14axdyKY6xGwq3wX53JRYo1seKZm9q2Us44qw==
x-microsoft-antispam: BCL:0;
 ARA:14566002|15080799006|8062599003|7092599003|8060799006|19110799003|461199028|3412199025|440099028|102099032|41001999003|18061999006;
x-microsoft-antispam-message-info: =?utf-8?B?dXRsNFpOM1d5Mk9XeTZvSWtnbDFiWTV0Rkl1eXRpK3hla0s3ZktNUCtLdW5H?=
 =?utf-8?B?QmRQaDJYdk82UUFyR0xXTWRGTzVCelBRVGV1MGlldCtCbTN4RWlXVERQM3F5?=
 =?utf-8?B?VG9pc2VCZFF0eEsrQ1lPcDV4VTNqa1dwcUQ4R2V2TmpvZlNQdkVSa3ZVaTRW?=
 =?utf-8?B?UndYUjMwTkdaeko4RldUY3NIVENjZFhZeWphaE8vdGcxWHNOUzV3ZHZjZDZx?=
 =?utf-8?B?WHZYL2FTY1V1U0x3dXV6cmtiUnIvUERuRU1DZGNOVEFzQ2NXV01XVlNmeTVv?=
 =?utf-8?B?dEhWcllER05Sc2x6TnJ2Tk9xVDRKeVNPbm8rYURIUzRmRnNsRjNWay92VHNr?=
 =?utf-8?B?em9EbVBQYUZvZ1NQOUprSUdNcUsxaTZCMmRMWGEvNmE0Uk1Zb0NiYlZDYmpP?=
 =?utf-8?B?Tm8wR0pMNFhTSGpFQTh4cFN5b2hJTndYeFc3c1hRek1CeE8yQ2JzTXFSRXVC?=
 =?utf-8?B?MWsrZzI0S3kyMmNVcGtZbmpUbXpITzNKd1pXd3B4U1doZlRDTmcyUnNDYldB?=
 =?utf-8?B?cHFrQ0VVR3VkcHl4U2FzYlhkQnpTNDZINVhXNlQrbnBVS0NGeGw2ZTVldkRR?=
 =?utf-8?B?U0VkUEt6MWxSRWRYa25iaFE3Tm1lOVBEMnpJMHY3ZFArR25DR1NDU3VjcmVj?=
 =?utf-8?B?ZlZ2bmQzVVluMkZ5cU1rU0FNTXBqWmd1ZW1UQkd1aE1WOUxVcklLUkhyYndk?=
 =?utf-8?B?K0JGK0lyVlpkVE84WktIei9OMG8rTHEwSU5UWHNDRno1ci9SZktIWmNxbk83?=
 =?utf-8?B?c21xcFF6NXFXNFpDaDFyOE04Z1IwR1llYTNtdFFSbG5VU3dFREk2YVVFejQv?=
 =?utf-8?B?MDRIZHZhQ1E4ZEZ0bG0xTkxNVEFIbGhZM2pVb0lJZFZyTFRiMWdyalBRWjB0?=
 =?utf-8?B?eEMrN2RVUnRXOEN5SitSTmVBbDUrNnJSakNOQ09CL2NnMWZsZ0YxYzczc09J?=
 =?utf-8?B?TnkwN0N1SUZGQXNGUEdCcWFCc09NaVdYTzlCaGhsaTRwMVYzZzBHb0xNWXpu?=
 =?utf-8?B?Z1NYNCtlYUsxZDVUL0tYeEpUT3kzb2JXQm56bEhpTFUybWtkZjFGc1pqZ3Y5?=
 =?utf-8?B?YUVBY0NGblpkQWp0VjgrblU1UjZDaTNPd2ppZUgyVnZ6bmM1RlFjL0wxaURs?=
 =?utf-8?B?K3lDOVgwSVVYOVVqVVZSWVZGd3JWWXBhUGRTNXQwZVhLMi9NeDhRQng0Y2hG?=
 =?utf-8?B?eUY3Nk13eFkweXJ4bDVScVRlcllrMzBlNTRVRHNxem53R0pJQjB4U3JHS3lE?=
 =?utf-8?B?YUNnNU8xbnJ2K1NWdW1qamc0ODVEblNwcm1BZnRuK3hvU3hHeW1wQ1RiSTIz?=
 =?utf-8?B?bWkxRUQ3Yk5pUWNrekRUNElWcHVZKzFDRjM5VkN1YVFDRlVjQ1BQVjcvNE5H?=
 =?utf-8?B?czNyUDFidjVOTjM3b3gxM3lmckZQMzdnemJ5Z09nMGhZcWVjdzNqTEJteE1H?=
 =?utf-8?B?ZVpZY0hHS3RSVTNXTVJCT0VyZW1JdlhpeVpqbG5KeHhmUmk2bTl1TlQ0N3p6?=
 =?utf-8?B?bWR2bUg4Q3NCRVA0QVhiaE1IRTZqc0xsMlkzTTFTbm5yQlBJcXlhT0Rxdmh0?=
 =?utf-8?Q?sx+0ekt2K6zC4Mos/S8Nk/hK0=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cGpqQUREMUllNW1tZ3RKa210V05pZE5MUzF2TjFXSEY2RlRKbFBkM2hNMSt5?=
 =?utf-8?B?TStLUlJXOHZKeENON1pWRVY2c09pLzJ0QnNqbzAvV1hCTzVKRFpUZmJudzJv?=
 =?utf-8?B?cVJ4bHYwaFdxai9YMjVRRlBqbFI5ZCs3VHZvZnkxSVBkMXVwQ2ZTOUdBUFlI?=
 =?utf-8?B?MWhRUVFSUk9FNFRpZTgzTk9rbjJqWHF2SkhDSnB1VnR3eGppZXFqMzNVeTJu?=
 =?utf-8?B?SWRYSDc0SVFIZ1dMOWMvZVQ5TXNBeDA0bTQrcTRKOGgwZnNLT3g4K2U0ZVlh?=
 =?utf-8?B?UXc1TzFxTE1PVklscmgvc0tyQnI5ZjBCcmJBSUJXT2lMdk1Cb1lUTzV5VmtV?=
 =?utf-8?B?cFFZeTg4bFN0Vkdlcy9xYStld3RiNVhmVnJ0MGI5ZFZzYVEzZEtvS056cWpu?=
 =?utf-8?B?U25EdFF6a1Rwd1RrWnNraHNKZjYvNG9nd3RZOVBIaEVuSHJwdHJabWx1em84?=
 =?utf-8?B?cFpFSVJBcXpRUXBNaDRlY3VvaFJyU1RtbGpPSU1rb24wVklYVHZBNUxlNDh0?=
 =?utf-8?B?RGJDRGdHK3hKVzI0ZlNmekNIcmsrUHF3ZlkzK3JiVG54RTVITS9wdCtvYUw3?=
 =?utf-8?B?bzlNb0RJNDlWYmZ1ejZLY0orc2tMSWZCRUlJZlVwanA5L044QjZEbGpISE41?=
 =?utf-8?B?U0xSdFVDd2lEeFVWSURJeFdkdjIrQnZUYjkvR0NBeklBM0hGKzFEMzdNNEJi?=
 =?utf-8?B?b0JSVy9GdnNITmdRcDRsRW43eEJGMllkWDBGZnNyRjB1ZnlkNWRCMGIxVGNr?=
 =?utf-8?B?eXdYMTk1UnlrZWZVdUY3WUhKTUJUN3VZcGRxUDlma3JKc2JjaHl4S3A2VDda?=
 =?utf-8?B?VWZCc2hDcVFDWjRZUEVEYjZaVjJsNFIrdXhVcUJ0cytOU0pHZmNvQTEzZTZJ?=
 =?utf-8?B?RHJxcjZPMFpITUVocE1qQnBENEtvRGhZcGhHT1F3NnIyTFVWa3hNc3VIQjBJ?=
 =?utf-8?B?LzVPUm0rT3B1ZURnMjFUWDBGT3dnNnl4QlBlcHFiY3hzd01kTkpGdWM3eXh0?=
 =?utf-8?B?MUNYL1pibkM4VjlBRTdVTE0zZDU2blpBL0w2Szg2TjhDbGNHWm50WDVUTWZl?=
 =?utf-8?B?cVp0Wmo4RTh0dWhUTlBBbTlIQUFvUUd5YnF3a3JxclhHQTIrbFNwZ21CUm5r?=
 =?utf-8?B?Tm1EVWo0Wk54bmlBeXcySGxtM0VQZnE5a3gvczFZdlZxbUVRUndadUFTbjBZ?=
 =?utf-8?B?R0pJTnJFYXlnenUzbElHeWlXODljTDNnN2lVS0JoNWlrS2hnR0l4dHB3Q0l2?=
 =?utf-8?B?dmNiUXVVN1RCNmJoMzdDQXhyV0FjUDZXbERRTEpaRjVQd3A2aDlWTDJvam9m?=
 =?utf-8?B?Q1l6eGp5Mm1vWHF3dFlxc1FydVFLekxwUEJnL0VjVFBRR1JwNHpYdFZwRnBJ?=
 =?utf-8?B?NzJVL0M0dVhhcVV1ZGRRUkZMY3NXY2RCYklKK29tMHg3WDBVWnNKaDRvMGRl?=
 =?utf-8?B?aGZmMldPQ2ZpUTRDUUhZWUorSlZzWkxpd1VtSmFzTW93dDRBd3VwVXZleG9w?=
 =?utf-8?B?RW05ZEFacG12Zm5OakRwbGhVRjRKRUJHem05SldESFhJaEg0YUhPYTB5dnFE?=
 =?utf-8?B?QWRFZUNhV2RBVUgzSlpMV1FPU01nRUtXSTFEK01sMGlYRmJyTGpqSUJCK3Vq?=
 =?utf-8?Q?bBr5tttFoPj4oUCeou0faCfNy6BhYBw/PY5/YzWijEgg=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: ee68dc49-0494-4a3e-3caa-08dd7bcc649d
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2025 03:19:54.7598 (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: BL3P223MB0067
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/DM8P223MB03659AF3483E00EC43597670BAB22@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZmZtcGVnLWRldmVsIDxm
Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YNCj4gQW5kcmVhcyBS
aGVpbmhhcmR0DQo+IFNlbnQ6IERpZW5zdGFnLCAxNS4gQXByaWwgMjAyNSAwMzowNg0KPiBUbzog
ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcNCj4gU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxdIFtQ
QVRDSCAyLzldIGZmdG9vbHMvdGV4dGZvcm1hdDogUXVhbGl0eQ0KPiBpbXByb3ZlbWVudHMNCj4g
DQo+IHNvZnR3b3JrejoNCj4gPiBGcm9tOiBzb2Z0d29ya3ogPHNvZnR3b3JrekBob3RtYWlsLmNv
bT4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IHNvZnR3b3JreiA8c29mdHdvcmt6QGhvdG1haWwu
Y29tPg0KPiA+IC0tLQ0KPiA+ICBmZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmMgfCAx
MjEgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tDQo+IC0tLQ0KPiA+ICBmZnRvb2xzL3RleHRm
b3JtYXQvYXZ0ZXh0Zm9ybWF0LmggfCAgIDYgKy0NCj4gPiAgZmZ0b29scy90ZXh0Zm9ybWF0L3Rm
X2RlZmF1bHQuYyAgIHwgICA4ICstDQo+ID4gIGZmdG9vbHMvdGV4dGZvcm1hdC90Zl9pbmkuYyAg
ICAgICB8ICAgMiArLQ0KPiA+ICBmZnRvb2xzL3RleHRmb3JtYXQvdGZfanNvbi5jICAgICAgfCAg
IDggKy0NCj4gPiAgZmZ0b29scy90ZXh0Zm9ybWF0L3RmX3htbC5jICAgICAgIHwgICAzIC0NCj4g
PiAgZmZ0b29scy90ZXh0Zm9ybWF0L3R3X2F2aW8uYyAgICAgIHwgICA5ICsrLQ0KPiA+ICA3IGZp
bGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkNCj4gPg0KPiA+
IGRpZmYgLS1naXQgYS9mZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmMNCj4gYi9mZnRv
b2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmMNCj4gPiBpbmRleCAxY2U1MWQxMWUyLi40MDYw
MjVkMTlkIDEwMDY0NA0KPiA+IC0tLSBhL2ZmdG9vbHMvdGV4dGZvcm1hdC9hdnRleHRmb3JtYXQu
Yw0KPiA+ICsrKyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC9hdnRleHRmb3JtYXQuYw0KPiA+IEBAIC05
Myw5ICs5Myw4IEBAIHN0YXRpYyBjb25zdCBBVkNsYXNzIHRleHRjb250ZXh0X2NsYXNzID0gew0K
PiA+DQo+ID4gIHN0YXRpYyB2b2lkIGJwcmludF9ieXRlcyhBVkJQcmludCAqYnAsIGNvbnN0IHVp
bnQ4X3QgKnVidWYsIHNpemVfdA0KPiB1YnVmX3NpemUpDQo+ID4gIHsNCj4gPiAtICAgIGludCBp
Ow0KPiA+ICAgICAgYXZfYnByaW50ZihicCwgIjBYIik7DQo+ID4gLSAgICBmb3IgKGkgPSAwOyBp
IDwgdWJ1Zl9zaXplOyBpKyspDQo+ID4gKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdWJ1
Zl9zaXplOyBpKyspDQo+IA0KPiBXaHkgbm90IHNpemVfdD8NCg0KQmVjYXVzZSBpdCBjcmVhdGVz
IG1vcmUgd2FybmluZ3MgYWJvdXQgbmFycm93aW5nIGNvbnZlcnNpb25zLg0KDQoNCg0KPiA+ICAg
ICAgICAgIGF2X2JwcmludGYoYnAsICIlMDJYIiwgdWJ1ZltpXSk7DQo+ID4gIH0NCj4gPg0KPiA+
IEBAIC0xMTAsOCArMTA5LDYgQEAgaW50IGF2dGV4dF9jb250ZXh0X2Nsb3NlKEFWVGV4dEZvcm1h
dENvbnRleHQNCj4gKipwdGN0eCkNCj4gPg0KPiA+ICAgICAgYXZfaGFzaF9mcmVlcCgmdGN0eC0+
aGFzaCk7DQo+ID4NCj4gPiAtICAgIGF2X2hhc2hfZnJlZXAoJnRjdHgtPmhhc2gpOw0KPiA+IC0N
Cj4gPiAgICAgIGlmICh0Y3R4LT5mb3JtYXR0ZXItPnVuaW5pdCkNCj4gPiAgICAgICAgICB0Y3R4
LT5mb3JtYXR0ZXItPnVuaW5pdCh0Y3R4KTsNCj4gPiAgICAgIGZvciAoaSA9IDA7IGkgPCBTRUNU
SU9OX01BWF9OQl9MRVZFTFM7IGkrKykNCj4gPiBAQCAtMTQxLDEyICsxMzgsMTggQEAgaW50IGF2
dGV4dF9jb250ZXh0X29wZW4oQVZUZXh0Rm9ybWF0Q29udGV4dA0KPiAqKnB0Y3R4LA0KPiA+ICAg
ICAgQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eDsNCj4gPiAgICAgIGludCBpLCByZXQgPSAwOw0K
PiA+DQo+ID4gLSAgICBpZiAoISh0Y3R4ID0gYXZfbWFsbG9jeihzaXplb2YoQVZUZXh0Rm9ybWF0
Q29udGV4dCkpKSkgew0KPiA+ICsgICAgaWYgKCFwdGN0eCB8fCAhZm9ybWF0dGVyKQ0KPiA+ICsg
ICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQo+IA0KPiBDYW4gdGhpcyBoYXBwZW4/DQoN
CnNlZSBiZWxvdw0KDQo+ID4gKw0KPiA+ICsgICAgaWYgKCFmb3JtYXR0ZXItPnByaXZfc2l6ZSAm
JiBmb3JtYXR0ZXItPnByaXZfY2xhc3MpDQo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO
VkFMKTsNCj4gDQo+IFN0dWZmIGxpa2UgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGFuZCBzaG91
bGQgbm90IGJlIGNoZWNrZWQgKG9yDQo+IGFjdHVhbGx5OiB0aGUgcHJvcGVyIHBsYWNlIHRvIGNo
ZWNrIHN0dWZmIGxpa2UgdGhpcyBpcyBpbiB0ZXN0IHRvb2xzDQo+IGxpa2UgbGF2Yy90ZXN0cy9h
dmNvZGVjLmMsIGJ1dCBJIGRvbid0IHRoaW5rIGl0IGlzIHdvcnRoIGl0IGZvcg0KPiBmZnRvb2xz
KS4NCg0KSSBwcm9iYWJseSBvdmVyZGlkIGl0IGEgYml0IHdpdGggY2hlY2tzLCBidXQgdGhlIGdv
YWwgZm9yIHRoaXMgQVBJIA0KaXMgc3RpbGwgdG8gYmVjb21lIHB1YmxpYyBhdCBzb21lIHBvaW50
IChsaWtlIGluIGF2dXRpbCksIHNvIEkgDQp0cmllZCB0byBtb3ZlIHRvd2FyZHMgdGhhdCBkaXJl
Y3Rpb24gYWxyZWFkeS4NCg0KDQoNCg0KPiA+ICsNCj4gPiArICAgIGlmICghKCh0Y3R4ID0gYXZf
bWFsbG9jeihzaXplb2YoQVZUZXh0Rm9ybWF0Q29udGV4dCkpKSkpIHsNCj4gPiAgICAgICAgICBy
ZXQgPSBBVkVSUk9SKEVOT01FTSk7DQo+ID4gICAgICAgICAgZ290byBmYWlsOw0KPiA+ICAgICAg
fQ0KPiA+DQo+ID4gLSAgICBpZiAoISh0Y3R4LT5wcml2ID0gYXZfbWFsbG9jeihmb3JtYXR0ZXIt
PnByaXZfc2l6ZSkpKSB7DQo+ID4gKyAgICBpZiAoZm9ybWF0dGVyLT5wcml2X3NpemUgJiYgISgo
dGN0eC0+cHJpdiA9DQo+IGF2X21hbGxvY3ooZm9ybWF0dGVyLT5wcml2X3NpemUpKSkpIHsNCj4g
PiAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7DQo+ID4gICAgICAgICAgZ290byBmYWls
Ow0KPiA+ICAgICAgfQ0KPiA+IEBAIC0yMTUsMTUgKzIxOCwxNSBAQCBpbnQgYXZ0ZXh0X2NvbnRl
eHRfb3BlbihBVlRleHRGb3JtYXRDb250ZXh0DQo+ICoqcHRjdHgsDQo+ID4NCj4gPiAgICAgIC8q
IHZhbGlkYXRlIHJlcGxhY2Ugc3RyaW5nICovDQo+ID4gICAgICB7DQo+ID4gLSAgICAgICAgY29u
c3QgdWludDhfdCAqcCA9IHRjdHgtPnN0cmluZ192YWxpZGF0aW9uX3JlcGxhY2VtZW50Ow0KPiA+
IC0gICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZHAgPSBwICsgc3RybGVuKHApOw0KPiA+ICsgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKnAgPSAodWludDhfdCAqKXRjdHgtDQo+ID5zdHJpbmdfdmFsaWRh
dGlvbl9yZXBsYWNlbWVudDsNCj4gPiArICAgICAgICBjb25zdCB1aW50OF90ICplbmRwID0gcCAr
IHN0cmxlbigoY29uc3QgY2hhciAqKXApOw0KPiA+ICAgICAgICAgIHdoaWxlICgqcCkgew0KPiA+
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwMCA9IHA7DQo+ID4gICAgICAgICAgICAgIGlu
dDMyX3QgY29kZTsNCj4gPiAgICAgICAgICAgICAgcmV0ID0gYXZfdXRmOF9kZWNvZGUoJmNvZGUs
ICZwLCBlbmRwLCB0Y3R4LQ0KPiA+c3RyaW5nX3ZhbGlkYXRpb25fdXRmOF9mbGFncyk7DQo+ID4g
ICAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7DQo+ID4gICAgICAgICAgICAgICAgICBBVkJQcmlu
dCBicDsNCj4gPiAtICAgICAgICAgICAgICAgIGF2X2JwcmludF9pbml0KCZicCwgMCwgQVZfQlBS
SU5UX1NJWkVfQVVUT01BVElDKTsNCj4gPiArICAgICAgICAgICAgICAgIGF2X2JwcmludF9pbml0
KCZicCwgMCwgQVZfQlBSSU5UX1NJWkVfVU5MSU1JVEVEKTsNCj4gDQo+IFRoaXMgYWRkcyBhIG1l
bWxlYWsgb24gZGF0YSB3aGVyZSBpdCBtYWtlcyBhIGRpZmZlcmVuY2UuDQoNCldoeT8gVGhlIHN0
cmluZ192YWxpZGF0aW9uX3JlcGxhY2VtZW50IHN0cmluZyBzaG91bGQgYmUgc2hvcnQgZW5vdWdo
DQp0byBmaXQgaW50byB0aGUgc3RhY2stYWxsb2NhdGVkIG1lbW9yeSwgbm8/DQoNCg0KPiA+ICAg
ICAgICAgICAgICAgICAgYnByaW50X2J5dGVzKCZicCwgcDAsIHAgLSBwMCksDQo+ID4gICAgICAg
ICAgICAgICAgICAgICAgYXZfbG9nKHRjdHgsIEFWX0xPR19FUlJPUiwNCj4gPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkludmFsaWQgVVRGOCBzZXF1ZW5jZSAlcyBmb3VuZCBpbg0KPiBz
dHJpbmcgdmFsaWRhdGlvbiByZXBsYWNlICclcydcbiIsDQo+ID4gQEAgLTI1OSw2ICsyNjIsOSBA
QCBzdGF0aWMgY29uc3QgY2hhciB1bml0X2JpdF9wZXJfc2Vjb25kX3N0cltdID0NCj4gImJpdC9z
IjsNCj4gPg0KPiA+ICB2b2lkIGF2dGV4dF9wcmludF9zZWN0aW9uX2hlYWRlcihBVlRleHRGb3Jt
YXRDb250ZXh0ICp0Y3R4LCBjb25zdA0KPiB2b2lkICpkYXRhLCBpbnQgc2VjdGlvbl9pZCkNCj4g
PiAgew0KPiA+ICsgICAgaWYgKCF0Y3R4IHx8IHNlY3Rpb25faWQgPCAwIHx8IHNlY3Rpb25faWQg
Pj0gdGN0eC0+bmJfc2VjdGlvbnMpDQo+ID4gKyAgICAgICAgcmV0dXJuOw0KPiANCj4gQ2FuIHRo
aXMgaGFwcGVuPw0KDQpGb3IgYSBwdWJsaWMgQVBJIC0gbWFueSB0aGluZ3MgY2FuIGhhcHBlbi4u
Lg0KDQoNCj4gPiAgICAgIHRjdHgtPmxldmVsKys7DQo+ID4gICAgICBhdl9hc3NlcnQwKHRjdHgt
PmxldmVsIDwgU0VDVElPTl9NQVhfTkJfTEVWRUxTKTsNCj4gPg0KPiA+IEBAIC0yNzIsNiArMjc4
LDkgQEAgdm9pZA0KPiBhdnRleHRfcHJpbnRfc2VjdGlvbl9oZWFkZXIoQVZUZXh0Rm9ybWF0Q29u
dGV4dCAqdGN0eCwgY29uc3Qgdm9pZA0KPiAqZGF0YSwgaW4NCj4gPg0KPiA+ICB2b2lkIGF2dGV4
dF9wcmludF9zZWN0aW9uX2Zvb3RlcihBVlRleHRGb3JtYXRDb250ZXh0ICp0Y3R4KQ0KPiA+ICB7
DQo+ID4gKyAgICBpZiAoIXRjdHggfHwgdGN0eC0+bGV2ZWwgPCAwIHx8IHRjdHgtPmxldmVsID49
DQo+IFNFQ1RJT05fTUFYX05CX0xFVkVMUykNCj4gPiArICAgICAgICByZXR1cm47DQo+IA0KPiBD
YW4gdGhpcyBoYXBwZW4/DQoNClllcyAtIHdoZW4gc29tZXdoZXJlIGluIEZGbXBlZyBzb21lIG91
dHB1dCBpcyBjaGFuZ2VkIHdpdGhvdXQgdGhpbmtpbmcNCmFib3V0IHRoYXQgdGhlcmUncyBhIG5l
c3RpbmcgbGltaXQgb2YgU0VDVElPTl9NQVhfTkJfTEVWRUxTLg0KRXZlbiB3aGVuIG9ubHkgMiBv
ciAzIHNlY3Rpb24gdHlwZXMgYXJlIGRlZmluZWQsIHRoZSBsZXZlbCBjYW4gZ28gYmV5b25kDQp0
aGF0IHZhbHVlLg0KDQoNCj4gDQo+ID4gKw0KPiA+ICAgICAgaW50IHNlY3Rpb25faWQgPSB0Y3R4
LT5zZWN0aW9uW3RjdHgtPmxldmVsXS0+aWQ7DQo+ID4gICAgICBpbnQgcGFyZW50X3NlY3Rpb25f
aWQgPSB0Y3R4LT5sZXZlbA0KPiA+ICAgICAgICAgID8gdGN0eC0+c2VjdGlvblt0Y3R4LT5sZXZl
bCAtIDFdLT5pZA0KPiA+IEBAIC0yODksNyArMjk4LDEyIEBAIHZvaWQNCj4gYXZ0ZXh0X3ByaW50
X3NlY3Rpb25fZm9vdGVyKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgpDQo+ID4NCj4gPiAgdm9p
ZCBhdnRleHRfcHJpbnRfaW50ZWdlcihBVlRleHRGb3JtYXRDb250ZXh0ICp0Y3R4LCBjb25zdCBj
aGFyDQo+ICprZXksIGludDY0X3QgdmFsKQ0KPiA+ICB7DQo+ID4gLSAgICBjb25zdCBzdHJ1Y3Qg
QVZUZXh0Rm9ybWF0U2VjdGlvbiAqc2VjdGlvbiA9IHRjdHgtPnNlY3Rpb25bdGN0eC0NCj4gPmxl
dmVsXTsNCj4gPiArICAgIGNvbnN0IEFWVGV4dEZvcm1hdFNlY3Rpb24gKnNlY3Rpb247DQo+ID4g
Kw0KPiA+ICsgICAgaWYgKCF0Y3R4IHx8ICFrZXkgfHwgdGN0eC0+bGV2ZWwgPCAwIHx8IHRjdHgt
PmxldmVsID49DQo+IFNFQ1RJT05fTUFYX05CX0xFVkVMUykNCj4gPiArICAgICAgICByZXR1cm47
DQo+IA0KPiBDYW4gdGhpcyBoYXBwZW4/DQoNCg0Kc2VlIGFib3ZlDQoNCg0KPiANCj4gPiArDQo+
ID4gKyAgICBzZWN0aW9uID0gdGN0eC0+c2VjdGlvblt0Y3R4LT5sZXZlbF07DQo+ID4NCj4gPiAg
ICAgIGlmIChzZWN0aW9uLT5zaG93X2FsbF9lbnRyaWVzIHx8IGF2X2RpY3RfZ2V0KHNlY3Rpb24t
DQo+ID5lbnRyaWVzX3RvX3Nob3csIGtleSwgTlVMTCwgMCkpIHsNCj4gPiAgICAgICAgICB0Y3R4
LT5mb3JtYXR0ZXItPnByaW50X2ludGVnZXIodGN0eCwga2V5LCB2YWwpOw0KPiA+IEBAIC0yOTks
MjQgKzMxMywyOCBAQCB2b2lkIGF2dGV4dF9wcmludF9pbnRlZ2VyKEFWVGV4dEZvcm1hdENvbnRl
eHQNCj4gKnRjdHgsIGNvbnN0IGNoYXIgKmtleSwgaW50NjRfdCB2YQ0KPiA+DQo+ID4gIHN0YXRp
YyBpbmxpbmUgaW50IHZhbGlkYXRlX3N0cmluZyhBVlRleHRGb3JtYXRDb250ZXh0ICp0Y3R4LCBj
aGFyDQo+ICoqZHN0cCwgY29uc3QgY2hhciAqc3JjKQ0KPiA+ICB7DQo+ID4gLSAgICBjb25zdCB1
aW50OF90ICpwLCAqZW5kcDsNCj4gPiArICAgIGNvbnN0IHVpbnQ4X3QgKnAsICplbmRwLCAqc3Jj
cCA9IChjb25zdCB1aW50OF90ICopc3JjOw0KPiA+ICAgICAgQVZCUHJpbnQgZHN0YnVmOw0KPiA+
ICsgICAgQVZCUHJpbnQgYnA7DQo+ID4gICAgICBpbnQgaW52YWxpZF9jaGFyc19uYiA9IDAsIHJl
dCA9IDA7DQo+ID4NCj4gPiArICAgIGlmICghdGN0eCB8fCAhZHN0cCB8fCAhc3JjKQ0KPiA+ICsg
ICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQo+ID4gKw0KPiANCj4gQ2FuIHRoaXMgaGFw
cGVuPw0KPiANCj4gPiArICAgICpkc3RwID0gTlVMTDsNCj4gPiAgICAgIGF2X2JwcmludF9pbml0
KCZkc3RidWYsIDAsIEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRCk7DQo+ID4gKyAgICBhdl9icHJp
bnRfaW5pdCgmYnAsIDAsIEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRCk7DQo+ID4NCj4gPiAtICAg
IGVuZHAgPSBzcmMgKyBzdHJsZW4oc3JjKTsNCj4gPiAtICAgIGZvciAocCA9IHNyYzsgKnA7KSB7
DQo+ID4gLSAgICAgICAgdWludDMyX3QgY29kZTsNCj4gPiArICAgIGVuZHAgPSBzcmNwICsgc3Ry
bGVuKHNyYyk7DQo+ID4gKyAgICBmb3IgKHAgPSBzcmNwOyAqcDspIHsNCj4gPiArICAgICAgICBp
bnQzMl90IGNvZGU7DQo+ID4gICAgICAgICAgaW50IGludmFsaWQgPSAwOw0KPiA+ICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKnAwID0gcDsNCj4gPg0KPiA+ICAgICAgICAgIGlmIChhdl91dGY4X2Rl
Y29kZSgmY29kZSwgJnAsIGVuZHAsIHRjdHgtDQo+ID5zdHJpbmdfdmFsaWRhdGlvbl91dGY4X2Zs
YWdzKSA8IDApIHsNCj4gPiAtICAgICAgICAgICAgQVZCUHJpbnQgYnA7DQo+ID4gLSAgICAgICAg
ICAgIGF2X2JwcmludF9pbml0KCZicCwgMCwgQVZfQlBSSU5UX1NJWkVfQVVUT01BVElDKTsNCj4g
PiAtICAgICAgICAgICAgYnByaW50X2J5dGVzKCZicCwgcDAsIHAtcDApOw0KPiA+IC0gICAgICAg
ICAgICBhdl9sb2codGN0eCwgQVZfTE9HX0RFQlVHLA0KPiA+IC0gICAgICAgICAgICAgICAgICAg
IkludmFsaWQgVVRGLTggc2VxdWVuY2UgJXMgZm91bmQgaW4gc3RyaW5nDQo+ICclcydcbiIsIGJw
LnN0ciwgc3JjKTsNCj4gPiArICAgICAgICAgICAgYXZfYnByaW50X2NsZWFyKCZicCk7DQo+ID4g
KyAgICAgICAgICAgIGJwcmludF9ieXRlcygmYnAsIHAwLCBwIC0gcDApOw0KPiA+ICsgICAgICAg
ICAgICBhdl9sb2codGN0eCwgQVZfTE9HX0RFQlVHLCAiSW52YWxpZCBVVEYtOCBzZXF1ZW5jZSAl
cw0KPiBmb3VuZCBpbiBzdHJpbmcgJyVzJ1xuIiwgYnAuc3RyLCBzcmMpOw0KPiA+ICAgICAgICAg
ICAgICBpbnZhbGlkID0gMTsNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiBAQCAtMzM2LDcgKzM1
NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50DQo+IHZhbGlkYXRlX3N0cmluZyhBVlRleHRGb3JtYXRD
b250ZXh0ICp0Y3R4LCBjaGFyICoqZHN0cCwgY29uc3QNCj4gPiAgICAgICAgICB9DQo+ID4NCj4g
PiAgICAgICAgICBpZiAoIWludmFsaWQgfHwgdGN0eC0+c3RyaW5nX3ZhbGlkYXRpb24gPT0NCj4g
QVZfVEVYVEZPUk1BVF9TVFJJTkdfVkFMSURBVElPTl9JR05PUkUpDQo+ID4gLSAgICAgICAgICAg
IGF2X2JwcmludF9hcHBlbmRfZGF0YSgmZHN0YnVmLCBwMCwgcC1wMCk7DQo+ID4gKyAgICAgICAg
ICAgIGF2X2JwcmludF9hcHBlbmRfZGF0YSgmZHN0YnVmLCAoY29uc3QgY2hhciAqKXAwLCBwIC0N
Cj4gcDApOw0KPiA+ICAgICAgfQ0KPiA+DQo+ID4gICAgICBpZiAoaW52YWxpZF9jaGFyc19uYiAm
JiB0Y3R4LT5zdHJpbmdfdmFsaWRhdGlvbiA9PQ0KPiBBVl9URVhURk9STUFUX1NUUklOR19WQUxJ
REFUSU9OX1JFUExBQ0UpDQo+ID4gQEAgLTM0Niw2ICszNjQsNyBAQCBzdGF0aWMgaW5saW5lIGlu
dA0KPiB2YWxpZGF0ZV9zdHJpbmcoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY2hhciAqKmRz
dHAsIGNvbnN0DQo+ID4NCj4gPiAgZW5kOg0KPiA+ICAgICAgYXZfYnByaW50X2ZpbmFsaXplKCZk
c3RidWYsIGRzdHApOw0KPiA+ICsgICAgYXZfYnByaW50X2ZpbmFsaXplKCZicCwgTlVMTCk7DQo+
ID4gICAgICByZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtMzU4LDE3ICszNzcsMTgg
QEAgc3RydWN0IHVuaXRfdmFsdWUgew0KPiA+ICAgICAgY29uc3QgY2hhciAqdW5pdDsNCj4gPiAg
fTsNCj4gPg0KPiA+IC1zdGF0aWMgY2hhciAqdmFsdWVfc3RyaW5nKEFWVGV4dEZvcm1hdENvbnRl
eHQgKnRjdHgsIGNoYXIgKmJ1ZiwgaW50DQo+IGJ1Zl9zaXplLCBzdHJ1Y3QgdW5pdF92YWx1ZSB1
dikNCj4gPiArc3RhdGljIGNoYXIgKnZhbHVlX3N0cmluZyhjb25zdCBBVlRleHRGb3JtYXRDb250
ZXh0ICp0Y3R4LCBjaGFyDQo+ICpidWYsIGludCBidWZfc2l6ZSwgc3RydWN0IHVuaXRfdmFsdWUg
dXYpDQo+ID4gIHsNCj4gPiAgICAgIGRvdWJsZSB2YWxkOw0KPiA+IC0gICAgaW50NjRfdCB2YWxp
Ow0KPiA+ICsgICAgaW50NjRfdCB2YWxpID0gMDsNCj4gPiAgICAgIGludCBzaG93X2Zsb2F0ID0g
MDsNCj4gPg0KPiA+ICAgICAgaWYgKHV2LnVuaXQgPT0gdW5pdF9zZWNvbmRfc3RyKSB7DQo+ID4g
ICAgICAgICAgdmFsZCA9IHV2LnZhbC5kOw0KPiA+ICAgICAgICAgIHNob3dfZmxvYXQgPSAxOw0K
PiA+ICAgICAgfSBlbHNlIHsNCj4gPiAtICAgICAgICB2YWxkID0gdmFsaSA9IHV2LnZhbC5pOw0K
PiA+ICsgICAgICAgIHZhbGQgPSAoZG91YmxlKXV2LnZhbC5pOw0KPiA+ICsgICAgICAgIHZhbGkg
PSB1di52YWwuaTsNCj4gPiAgICAgIH0NCj4gPg0KPiA+ICAgICAgaWYgKHV2LnVuaXQgPT0gdW5p
dF9zZWNvbmRfc3RyICYmIHRjdHgtDQo+ID51c2VfdmFsdWVfc2V4YWdlc2ltYWxfZm9ybWF0KSB7
DQo+ID4gQEAgLTM4NywxNyArNDA3LDE3IEBAIHN0YXRpYyBjaGFyICp2YWx1ZV9zdHJpbmcoQVZU
ZXh0Rm9ybWF0Q29udGV4dA0KPiAqdGN0eCwgY2hhciAqYnVmLCBpbnQgYnVmX3NpemUsIHN0DQo+
ID4gICAgICAgICAgICAgIGludDY0X3QgaW5kZXg7DQo+ID4NCj4gPiAgICAgICAgICAgICAgaWYg
KHV2LnVuaXQgPT0gdW5pdF9ieXRlX3N0ciAmJiB0Y3R4LQ0KPiA+dXNlX2J5dGVfdmFsdWVfYmlu
YXJ5X3ByZWZpeCkgew0KPiA+IC0gICAgICAgICAgICAgICAgaW5kZXggPSAoaW50NjRfdCkgKGxv
ZzIodmFsZCkpIC8gMTA7DQo+ID4gLSAgICAgICAgICAgICAgICBpbmRleCA9IGF2X2NsaXAoaW5k
ZXgsIDAsDQo+IEZGX0FSUkFZX0VMRU1TKHNpX3ByZWZpeGVzKSAtIDEpOw0KPiA+ICsgICAgICAg
ICAgICAgICAgaW5kZXggPSAoaW50NjRfdCkobG9nMih2YWxkKSAvIDEwKTsNCj4gPiArICAgICAg
ICAgICAgICAgIGluZGV4ID0gYXZfY2xpcDY0KGluZGV4LCAwLA0KPiBGRl9BUlJBWV9FTEVNUyhz
aV9wcmVmaXhlcykgLSAxKTsNCj4gPiAgICAgICAgICAgICAgICAgIHZhbGQgLz0gc2lfcHJlZml4
ZXNbaW5kZXhdLmJpbl92YWw7DQo+ID4gICAgICAgICAgICAgICAgICBwcmVmaXhfc3RyaW5nID0g
c2lfcHJlZml4ZXNbaW5kZXhdLmJpbl9zdHI7DQo+ID4gICAgICAgICAgICAgIH0gZWxzZSB7DQo+
ID4gLSAgICAgICAgICAgICAgICBpbmRleCA9IChpbnQ2NF90KSAobG9nMTAodmFsZCkpIC8gMzsN
Cj4gPiAtICAgICAgICAgICAgICAgIGluZGV4ID0gYXZfY2xpcChpbmRleCwgMCwNCj4gRkZfQVJS
QVlfRUxFTVMoc2lfcHJlZml4ZXMpIC0gMSk7DQo+ID4gKyAgICAgICAgICAgICAgICBpbmRleCA9
IChpbnQ2NF90KShsb2cxMCh2YWxkKSAvIDMpOw0KPiA+ICsgICAgICAgICAgICAgICAgaW5kZXgg
PSBhdl9jbGlwNjQoaW5kZXgsIDAsDQo+IEZGX0FSUkFZX0VMRU1TKHNpX3ByZWZpeGVzKSAtIDEp
Ow0KPiA+ICAgICAgICAgICAgICAgICAgdmFsZCAvPSBzaV9wcmVmaXhlc1tpbmRleF0uZGVjX3Zh
bDsNCj4gPiAgICAgICAgICAgICAgICAgIHByZWZpeF9zdHJpbmcgPSBzaV9wcmVmaXhlc1tpbmRl
eF0uZGVjX3N0cjsNCj4gPiAgICAgICAgICAgICAgfQ0KPiA+IC0gICAgICAgICAgICB2YWxpID0g
dmFsZDsNCj4gPiArICAgICAgICAgICAgdmFsaSA9IChpbnQ2NF90KXZhbGQ7DQo+ID4gICAgICAg
ICAgfQ0KPiA+DQo+ID4gICAgICAgICAgaWYgKHNob3dfZmxvYXQgfHwgKHRjdHgtPnVzZV92YWx1
ZV9wcmVmaXggJiYgdmFsZCAhPQ0KPiAoaW50NjRfdCl2YWxkKSkNCj4gPiBAQCAtNDI1LDkgKzQ0
NSwxNCBAQCB2b2lkIGF2dGV4dF9wcmludF91bml0X2ludChBVlRleHRGb3JtYXRDb250ZXh0DQo+
ICp0Y3R4LCBjb25zdCBjaGFyICprZXksIGludCB2YWx1ZQ0KPiA+DQo+ID4gIGludCBhdnRleHRf
cHJpbnRfc3RyaW5nKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNvbnN0IGNoYXIgKmtleSwN
Cj4gY29uc3QgY2hhciAqdmFsLCBpbnQgZmxhZ3MpDQo+ID4gIHsNCj4gPiAtICAgIGNvbnN0IHN0
cnVjdCBBVlRleHRGb3JtYXRTZWN0aW9uICpzZWN0aW9uID0gdGN0eC0+c2VjdGlvblt0Y3R4LQ0K
PiA+bGV2ZWxdOw0KPiA+ICsgICAgY29uc3QgQVZUZXh0Rm9ybWF0U2VjdGlvbiAqc2VjdGlvbjsN
Cj4gPiAgICAgIGludCByZXQgPSAwOw0KPiA+DQo+ID4gKyAgICBpZiAoIXRjdHggfHwgIWtleSB8
fCAhdmFsIHx8IHRjdHgtPmxldmVsIDwgMCB8fCB0Y3R4LT5sZXZlbCA+PQ0KPiBTRUNUSU9OX01B
WF9OQl9MRVZFTFMpDQo+ID4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCj4gDQo+
IENhbiB0aGlzIGhhcHBlbj8NCj4gDQo+ID4gKw0KPiA+ICsgICAgc2VjdGlvbiA9IHRjdHgtPnNl
Y3Rpb25bdGN0eC0+bGV2ZWxdOw0KPiA+ICsNCj4gPiAgICAgIGlmICh0Y3R4LT5zaG93X29wdGlv
bmFsX2ZpZWxkcyA9PSBTSE9XX09QVElPTkFMX0ZJRUxEU19ORVZFUiB8fA0KPiA+ICAgICAgICAg
ICh0Y3R4LT5zaG93X29wdGlvbmFsX2ZpZWxkcyA9PSBTSE9XX09QVElPTkFMX0ZJRUxEU19BVVRP
DQo+ID4gICAgICAgICAgICAgICYmIChmbGFncyAmIEFWX1RFWFRGT1JNQVRfUFJJTlRfU1RSSU5H
X09QVElPTkFMKQ0KPiA+IEBAIC00NjIsNyArNDg3LDcgQEAgaW50IGF2dGV4dF9wcmludF9zdHJp
bmcoQVZUZXh0Rm9ybWF0Q29udGV4dA0KPiAqdGN0eCwgY29uc3QgY2hhciAqa2V5LCBjb25zdCBj
aGFyICoNCj4gPiAgdm9pZCBhdnRleHRfcHJpbnRfcmF0aW9uYWwoQVZUZXh0Rm9ybWF0Q29udGV4
dCAqdGN0eCwgY29uc3QgY2hhcg0KPiAqa2V5LCBBVlJhdGlvbmFsIHEsIGNoYXIgc2VwKQ0KPiA+
ICB7DQo+ID4gICAgICBBVkJQcmludCBidWY7DQo+ID4gLSAgICBhdl9icHJpbnRfaW5pdCgmYnVm
LCAwLCBBVl9CUFJJTlRfU0laRV9BVVRPTUFUSUMpOw0KPiA+ICsgICAgYXZfYnByaW50X2luaXQo
JmJ1ZiwgMCwgQVZfQlBSSU5UX1NJWkVfVU5MSU1JVEVEKTsNCj4gDQo+IFRoaXMgaXMgc3RyaWN0
bHkgd29yc2UgdGhhbiB3aGF0IHdhcyBoZXJlIGJlZm9yZTogV2l0aCBVTkxJTUlURUQgeW91DQo+
IHdvdWxkIGhhdmUgYSBtZW1sZWFrIGluIGNhc2UgdGhlIGludGVybmFsIGJ1ZmZlciB3b3VsZG4n
dCBzdWZmaWNlLg0KPiAoQnV0IGFueXdheSwgdGhpcyBzaG91bGQgdXNlIHNucHJpbnRmLiBJIGp1
c3Qgc2VudCBhIHBhdGNoIGZvciB0aGlzLikNCg0KVG8gYmUgaG9uZXN0LCBJIGRvbid0IHNlZSBt
dWNoIHZhbHVlIGluIEFWX0JQUklOVF9TSVpFX0FVVE9NQVRJQy4NCldoZW4gSSB3b3VsZCBuZWVk
IHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWVzIG9mIGFsbCBicHJpbnQgb3BlcmF0aW9ucywNCmFs
bCB0aGUgY29udmVuaWVuY2Ugd291bGQgZ28gb3ZlciBib2FyZCBpbnN0YW50bHkuIFVzaW5nIA0K
QVZfQlBSSU5UX1NJWkVfQVVUT01BVElDIHdpdGhvdXQgcmV0dXJuIHZhbHVlIGNoZWNraW5nIGlz
IGVycm9yLXByb25lDQphbmQgY2FuIGNhdXNlIGVycm9ycyB3aGljaCBtaWdodCBiZSBoYXJkIHRv
IGlkZW50aWZ5Lg0KT24gdGhlIG90aGVyIHNpZGUsIGlkZW50aWZ5aW5nIHBsYWNlcyBpbiBjb2Rl
IHdoZXJlIEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRA0KaXMgdXNlZCBhbmQgZmluYWxpemUgaXMg
bmVlZGVkIGlzIGEgbG90IGVhc2llciBhbmQgZG9lc24ndCBldmVuIG5lZWQNCmEgc3BlY2lmaWMg
Y2FzZSBhbmQvb3IgZGVidWdnaW5nIHRvIGZpbmQgb3V0Lg0KDQpJbiB0aGUgd29yc3QgY2FzZSwg
SSdkIHN0aWxsIHByZWZlciBhIG1lbW9yeSBsZWFrIG92ZXIgaW5jb3JyZWN0IA0KYmVoYXZpb3Ig
KG9yIHdlbGwgLSBhbHdheXMgZGVwZW5kcyBvbiB0aGUgY2FzZSkuIEJ5IHRoYXQgSSBkb24ndCBt
ZWFuIA0KZXJyb3JzIHRoYXQgYXJlIHJlcG9ydGVkIGFuZCBjYXVzaW5nIGZhaWx1cmUgYnV0IHRo
b3NlIHRoaW5ncyB0aGF0IGFyZQ0KZmFpbGluZyBzaWxlbnRseSBhbmQgYXJlIGhhcmQgdG8gbm90
aWNlIG9yIHRyYWNlIGJhY2sgd2hlbiBub3RpY2luZy4NCg0KU3VyZWx5IG90aGVycyBtYXkgc2Vl
IGl0IGRpZmZlcmVudGx5Lg0KDQoNCg0KPiANCj4gPiAgICAgIGF2X2JwcmludGYoJmJ1ZiwgIiVk
JWMlZCIsIHEubnVtLCBzZXAsIHEuZGVuKTsNCj4gPiAgICAgIGF2dGV4dF9wcmludF9zdHJpbmco
dGN0eCwga2V5LCBidWYuc3RyLCAwKTsNCj4gPiAgfQ0KPiA+IEBAIC00NzAsMTIgKzQ5NSwxMSBA
QCB2b2lkIGF2dGV4dF9wcmludF9yYXRpb25hbChBVlRleHRGb3JtYXRDb250ZXh0DQo+ICp0Y3R4
LCBjb25zdCBjaGFyICprZXksIEFWUmF0aW9uYQ0KPiA+ICB2b2lkIGF2dGV4dF9wcmludF90aW1l
KEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNvbnN0IGNoYXIgKmtleSwNCj4gPiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQ2NF90IHRzLCBjb25zdCBBVlJhdGlvbmFsICp0aW1lX2Jhc2Us
IGludA0KPiBpc19kdXJhdGlvbikNCj4gPiAgew0KPiA+IC0gICAgY2hhciBidWZbMTI4XTsNCj4g
PiAtDQo+ID4gICAgICBpZiAoKCFpc19kdXJhdGlvbiAmJiB0cyA9PSBBVl9OT1BUU19WQUxVRSkg
fHwgKGlzX2R1cmF0aW9uICYmDQo+IHRzID09IDApKSB7DQo+ID4gICAgICAgICAgYXZ0ZXh0X3By
aW50X3N0cmluZyh0Y3R4LCBrZXksICJOL0EiLA0KPiBBVl9URVhURk9STUFUX1BSSU5UX1NUUklO
R19PUFRJT05BTCk7DQo+ID4gICAgICB9IGVsc2Ugew0KPiA+IC0gICAgICAgIGRvdWJsZSBkID0g
dHMgKiBhdl9xMmQoKnRpbWVfYmFzZSk7DQo+ID4gKyAgICAgICAgY2hhciBidWZbMTI4XTsNCj4g
PiArICAgICAgICBkb3VibGUgZCA9IGF2X3EyZCgqdGltZV9iYXNlKSAqIChkb3VibGUpdHM7DQo+
IA0KPiBXZSBhY3R1YWxseSB0cnkgdG8gYXZvaWQgZXhwbGljaXQgY2FzdHMgd2hlcmUgcG9zc2li
bGUuDQoNCg0KSSdsbCBhbnN3ZXIgdGhhdCBzZXBhcmF0ZWx5Lg0KDQoNCg0KPiA+ICAgICAgICAg
IHN0cnVjdCB1bml0X3ZhbHVlIHV2Ow0KPiA+ICAgICAgICAgIHV2LnZhbC5kID0gZDsNCj4gPiAg
ICAgICAgICB1di51bml0ID0gdW5pdF9zZWNvbmRfc3RyOw0KPiA+IEBAIC00OTYsNyArNTIwLDgg
QEAgdm9pZCBhdnRleHRfcHJpbnRfZGF0YShBVlRleHRGb3JtYXRDb250ZXh0DQo+ICp0Y3R4LCBj
b25zdCBjaGFyICpuYW1lLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmRhdGEsIGludCBzaXplKQ0KPiA+ICB7DQo+ID4gICAgICBBVkJQcmludCBicDsNCj4gPiAt
ICAgIGludCBvZmZzZXQgPSAwLCBsLCBpOw0KPiA+ICsgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsN
Cj4gPiArICAgIGludCBsLCBpOw0KPiA+DQo+ID4gICAgICBhdl9icHJpbnRfaW5pdCgmYnAsIDAs
IEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRCk7DQo+ID4gICAgICBhdl9icHJpbnRmKCZicCwgIlxu
Iik7DQo+ID4gQEAgLTUyMywyNSArNTQ4LDI5IEBAIHZvaWQgYXZ0ZXh0X3ByaW50X2RhdGEoQVZU
ZXh0Rm9ybWF0Q29udGV4dA0KPiAqdGN0eCwgY29uc3QgY2hhciAqbmFtZSwNCj4gPiAgdm9pZCBh
dnRleHRfcHJpbnRfZGF0YV9oYXNoKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNvbnN0IGNo
YXINCj4gKm5hbWUsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpkYXRhLCBpbnQgc2l6ZSkNCj4gPiAgew0KPiA+IC0gICAgY2hhciAqcCwgYnVmW0FWX0hB
U0hfTUFYX1NJWkUgKiAyICsgNjRdID0geyAwIH07DQo+ID4gKyAgICBjaGFyIGJ1ZltBVl9IQVNI
X01BWF9TSVpFICogMiArIDY0XSA9IHsgMCB9Ow0KPiA+ICsgICAgaW50IGxlbjsNCj4gPg0KPiA+
ICAgICAgaWYgKCF0Y3R4LT5oYXNoKQ0KPiA+ICAgICAgICAgIHJldHVybjsNCj4gPg0KPiA+ICAg
ICAgYXZfaGFzaF9pbml0KHRjdHgtPmhhc2gpOw0KPiA+ICAgICAgYXZfaGFzaF91cGRhdGUodGN0
eC0+aGFzaCwgZGF0YSwgc2l6ZSk7DQo+ID4gLSAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYp
LCAiJXM6IiwgYXZfaGFzaF9nZXRfbmFtZSh0Y3R4LQ0KPiA+aGFzaCkpOw0KPiA+IC0gICAgcCA9
IGJ1ZiArIHN0cmxlbihidWYpOw0KPiA+IC0gICAgYXZfaGFzaF9maW5hbF9oZXgodGN0eC0+aGFz
aCwgcCwgYnVmICsgc2l6ZW9mKGJ1ZikgLSBwKTsNCj4gPiArICAgIGxlbiA9IHNucHJpbnRmKGJ1
Ziwgc2l6ZW9mKGJ1ZiksICIlczoiLCBhdl9oYXNoX2dldF9uYW1lKHRjdHgtDQo+ID5oYXNoKSk7
DQo+ID4gKyAgICBhdl9oYXNoX2ZpbmFsX2hleCh0Y3R4LT5oYXNoLCAodWludDhfdCAqKSZidWZb
bGVuXSwNCj4gKGludClzaXplb2YoYnVmKSAtIGxlbik7DQo+IA0KPiBJcyBpdCBndWFyYW50ZWVk
IHRoYXQgdGhlIG91dHB1dCBvZiBzbnByaW50ZigpIGlzIG5vdCB0cnVuY2F0ZWQ/DQoNCk1BWF9I
QVNIX05BTUVfU0laRSBpcyAxMSBhbmQgQVZfSEFTSF9NQVhfU0laRSA2NCwgbWFrZSAxOTIgLSAx
MSA+IDANCg0KDQo+IA0KPiA+ICAgICAgYXZ0ZXh0X3ByaW50X3N0cmluZyh0Y3R4LCBuYW1lLCBi
dWYsIDApOw0KPiA+ICB9DQo+ID4NCj4gPiAgdm9pZCBhdnRleHRfcHJpbnRfaW50ZWdlcnMoQVZU
ZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY29uc3QgY2hhcg0KPiAqbmFtZSwNCj4gPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRhdGEsIGludCBzaXplLCBjb25z
dA0KPiBjaGFyICpmb3JtYXQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY29sdW1ucywgaW50IGJ5dGVzLCBpbnQNCj4gb2Zmc2V0X2FkZCkNCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGF0YSwgaW50IHNpemUsIGNvbnN0IGNoYXIN
Cj4gKmZvcm1hdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbnMs
IGludCBieXRlcywgaW50IG9mZnNldF9hZGQpDQo+ID4gIHsNCj4gPiAgICAgIEFWQlByaW50IGJw
Ow0KPiA+IC0gICAgaW50IG9mZnNldCA9IDAsIGwsIGk7DQo+ID4gKyAgICB1bnNpZ25lZCBvZmZz
ZXQgPSAwOw0KPiA+ICsgICAgaW50IGwsIGk7DQo+ID4gKw0KPiA+ICsgICAgaWYgKCFuYW1lIHx8
ICFkYXRhIHx8ICFmb3JtYXQgfHwgY29sdW1ucyA8PSAwIHx8IGJ5dGVzIDw9IDApDQo+ID4gKyAg
ICAgICAgcmV0dXJuOw0KPiANCj4gQ2FuIHRoaXMgaGFwcGVuPw0KDQpTdXJlLCBhcyBhIHB1Ymxp
YyBBUEkuIE9mIGNvdXJzZSwgb25lIGNhbiBzcGVuZCB0aW1lLCB0cnlpbmcgdG8gZGV0ZXJtaW5l
DQp3aGljaCBjb25kaXRpb25zIGFyZSByZWFsaXN0aWNhbGx5IHBvc3NpYmxlIG9yIG5vdC4gQnV0
IHRoYXQgaW50cm9kdWNlcw0KcG90ZW50aWFsIG9mIGh1bWFuIGVycm9yLCBzbyAtIHVubGVzcyBp
dCdzIGEgcmVhbGx5IGhvdCBwYXRoLCBvbmUgY2hlY2sNCnRvIG1hbnkgaXMgYmV0dGVyIHRoYW4g
b25lIHRvbyBsZXNzLg0KDQoNCj4gDQo+ID4NCj4gPiAgICAgIGF2X2JwcmludF9pbml0KCZicCwg
MCwgQVZfQlBSSU5UX1NJWkVfVU5MSU1JVEVEKTsNCj4gPiAgICAgIGF2X2JwcmludGYoJmJwLCAi
XG4iKTsNCj4gPiBAQCAtNjA3LDEyICs2MzYsMTggQEAgaW50DQo+IGF2dGV4dHdyaXRlcl9jb250
ZXh0X29wZW4oQVZUZXh0V3JpdGVyQ29udGV4dCAqKnB3Y3R4LCBjb25zdA0KPiBBVlRleHRXcml0
ZXIgKncNCj4gPiAgICAgIEFWVGV4dFdyaXRlckNvbnRleHQgKndjdHg7DQo+ID4gICAgICBpbnQg
cmV0ID0gMDsNCj4gPg0KPiA+IC0gICAgaWYgKCEod2N0eCA9IGF2X21hbGxvY3ooc2l6ZW9mKEFW
VGV4dFdyaXRlckNvbnRleHQpKSkpIHsNCj4gPiArICAgIGlmICghcHdjdHggfHwgIXdyaXRlcikN
Cj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KPiA+ICsNCj4gPiArICAgIGlm
ICghd3JpdGVyLT5wcml2X3NpemUgJiYgd3JpdGVyLT5wcml2X2NsYXNzKQ0KPiANCj4gU3R1ZmYg
bGlrZSB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJl
DQo+IGNoZWNrZWQuDQoNCk9LLg0KDQo+IA0KPiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ
TlZBTCk7DQo+ID4gKw0KPiA+ICsgICAgaWYgKCEoKHdjdHggPSBhdl9tYWxsb2N6KHNpemVvZihB
VlRleHRXcml0ZXJDb250ZXh0KSkpKSkgew0KPiA+ICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5P
TUVNKTsNCj4gPiAgICAgICAgICBnb3RvIGZhaWw7DQo+ID4gICAgICB9DQo+ID4NCj4gPiAtICAg
IGlmICghKHdjdHgtPnByaXYgPSBhdl9tYWxsb2N6KHdyaXRlci0+cHJpdl9zaXplKSkpIHsNCj4g
PiArICAgIGlmICh3cml0ZXItPnByaXZfc2l6ZSAmJiAhKCh3Y3R4LT5wcml2ID0gYXZfbWFsbG9j
eih3cml0ZXItDQo+ID5wcml2X3NpemUpKSkpIHsNCj4gPiAgICAgICAgICByZXQgPSBBVkVSUk9S
KEVOT01FTSk7DQo+ID4gICAgICAgICAgZ290byBmYWlsOw0KPiA+ICAgICAgfQ0KPiA+IGRpZmYg
LS1naXQgYS9mZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmgNCj4gYi9mZnRvb2xzL3Rl
eHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmgNCj4gPiBpbmRleCAwMzU2NGQxNGE3Li5lNTE5MDk0ZjRm
IDEwMDY0NA0KPiA+IC0tLSBhL2ZmdG9vbHMvdGV4dGZvcm1hdC9hdnRleHRmb3JtYXQuaA0KPiA+
ICsrKyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC9hdnRleHRmb3JtYXQuaA0KPiA+IEBAIC0yMSw5ICsy
MSw3IEBADQo+ID4gICNpZm5kZWYgRkZUT09MU19URVhURk9STUFUX0FWVEVYVEZPUk1BVF9IDQo+
ID4gICNkZWZpbmUgRkZUT09MU19URVhURk9STUFUX0FWVEVYVEZPUk1BVF9IDQo+ID4NCj4gPiAt
I2luY2x1ZGUgPHN0ZGRlZi5oPg0KPiA+ICAjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gLSNpbmNs
dWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIg0KPiA+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2Rp
Y3QuaCINCj4gPiAgI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2aW8uaCINCj4gPiAgI2luY2x1ZGUg
ImxpYmF2dXRpbC9icHJpbnQuaCINCj4gPiBAQCAtMTAzLDcgKzEwMSw3IEBAIHN0cnVjdCBBVlRl
eHRGb3JtYXRDb250ZXh0IHsNCj4gPiAgICAgIHVuc2lnbmVkIGludA0KPiBuYl9pdGVtX3R5cGVb
U0VDVElPTl9NQVhfTkJfTEVWRUxTXVtTRUNUSU9OX01BWF9OQl9TRUNUSU9OU107DQo+ID4NCj4g
PiAgICAgIC8qKiBzZWN0aW9uIHBlciBlYWNoIGxldmVsICovDQo+ID4gLSAgICBjb25zdCBzdHJ1
Y3QgQVZUZXh0Rm9ybWF0U2VjdGlvbg0KPiAqc2VjdGlvbltTRUNUSU9OX01BWF9OQl9MRVZFTFNd
Ow0KPiA+ICsgICAgY29uc3QgQVZUZXh0Rm9ybWF0U2VjdGlvbiAqc2VjdGlvbltTRUNUSU9OX01B
WF9OQl9MRVZFTFNdOw0KPiA+ICAgICAgQVZCUHJpbnQgc2VjdGlvbl9wYnVmW1NFQ1RJT05fTUFY
X05CX0xFVkVMU107IC8vLzwgZ2VuZXJpYw0KPiBwcmludCBidWZmZXIgZGVkaWNhdGVkIHRvIGVh
Y2ggc2VjdGlvbiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLy8gIHVzZWQgYnkNCj4gdmFyaW91cyBmb3JtYXR0ZXJzDQo+ID4NCj4gPiBA
QCAtMTI0LDcgKzEyMiw3IEBAIHN0cnVjdCBBVlRleHRGb3JtYXRDb250ZXh0IHsNCj4gPiAgI2Rl
ZmluZSBBVl9URVhURk9STUFUX1BSSU5UX1NUUklOR19WQUxJREFURSAyDQo+ID4NCj4gPiAgaW50
IGF2dGV4dF9jb250ZXh0X29wZW4oQVZUZXh0Rm9ybWF0Q29udGV4dCAqKnB0Y3R4LCBjb25zdA0K
PiBBVlRleHRGb3JtYXR0ZXIgKmZvcm1hdHRlciwgQVZUZXh0V3JpdGVyQ29udGV4dCAqd3JpdGVy
X2NvbnRleHQsIGNvbnN0DQo+IGNoYXIgKmFyZ3MsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0cnVjdCBBVlRleHRGb3JtYXRTZWN0aW9uICpzZWN0aW9ucywNCj4gaW50IG5i
X3NlY3Rpb25zLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVlRleHRGb3Jt
YXRTZWN0aW9uICpzZWN0aW9ucywgaW50DQo+IG5iX3NlY3Rpb25zLA0KPiA+ICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc2hvd192YWx1ZV91bml0LA0KPiA+ICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgdXNlX3ZhbHVlX3ByZWZpeCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHVzZV9ieXRlX3ZhbHVlX2JpbmFyeV9wcmVmaXgsDQo+ID4gZGlmZiAtLWdpdCBhL2Zm
dG9vbHMvdGV4dGZvcm1hdC90Zl9kZWZhdWx0LmMNCj4gYi9mZnRvb2xzL3RleHRmb3JtYXQvdGZf
ZGVmYXVsdC5jDQo+ID4gaW5kZXggMTRlZjlmZThmOS4uM2IwNWQyNWYzNiAxMDA2NDQNCj4gPiAt
LS0gYS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfZGVmYXVsdC5jDQo+ID4gKysrIGIvZmZ0b29scy90
ZXh0Zm9ybWF0L3RmX2RlZmF1bHQuYw0KPiA+IEBAIC03MCw5ICs3MCwxMCBAQCBERUZJTkVfRk9S
TUFUVEVSX0NMQVNTKGRlZmF1bHQpOw0KPiA+ICAvKiBsYW1lIHVwcGVyY2FzaW5nIHJvdXRpbmUs
IGFzc3VtZXMgdGhlIHN0cmluZyBpcyBsb3dlciBjYXNlIEFTQ0lJDQo+ICovDQo+ID4gIHN0YXRp
YyBpbmxpbmUgY2hhciAqdXBjYXNlX3N0cmluZyhjaGFyICpkc3QsIHNpemVfdCBkc3Rfc2l6ZSwg
Y29uc3QNCj4gY2hhciAqc3JjKQ0KPiA+ICB7DQo+ID4gLSAgICBpbnQgaTsNCj4gPiArICAgIHVu
c2lnbmVkIGk7DQo+ID4gKw0KPiANCj4gV2h5IG5vdCBzaXplX3Q/DQoNCnNlZSBhYm92ZS4NCg0K
PiANCj4gPiAgICAgIGZvciAoaSA9IDA7IHNyY1tpXSAmJiBpIDwgZHN0X3NpemUgLSAxOyBpKysp
DQo+ID4gLSAgICAgICAgZHN0W2ldID0gYXZfdG91cHBlcihzcmNbaV0pOw0KPiA+ICsgICAgICAg
IGRzdFtpXSA9IChjaGFyKWF2X3RvdXBwZXIoc3JjW2ldKTsNCj4gPiAgICAgIGRzdFtpXSA9IDA7
DQo+ID4gICAgICByZXR1cm4gZHN0Ow0KPiA+ICB9DQo+ID4gQEAgLTEwOCw2ICsxMDksOSBAQCBz
dGF0aWMgdm9pZA0KPiBkZWZhdWx0X3ByaW50X3NlY3Rpb25fZm9vdGVyKEFWVGV4dEZvcm1hdENv
bnRleHQgKndjdHgpDQo+ID4gICAgICBjb25zdCBzdHJ1Y3QgQVZUZXh0Rm9ybWF0U2VjdGlvbiAq
c2VjdGlvbiA9IHdjdHgtPnNlY3Rpb25bd2N0eC0NCj4gPmxldmVsXTsNCj4gPiAgICAgIGNoYXIg
YnVmWzMyXTsNCj4gPg0KPiA+ICsgICAgaWYgKCFzZWN0aW9uKQ0KPiA+ICsgICAgICAgIHJldHVy
bjsNCj4gDQo+IENhbiB0aGlzIGhhcHBlbj8NCg0KTm8sIGJ1dCBoZXJlIGl0IHNob3VsZCBhY3R1
YWxseSBjYWxsIHRoZSBmdW5jdGlvbiBpbiB0Zl9pbnRlcm5hbCBhbmQgd2l0aA0KdGhhdCBpdCBj
YW4gaGFwcGVuLiBUaGlzIG11c3QgaGF2ZSBnb3R0ZW4gbG9zdCBmcm9tIHJlYmFzaW5nLg0KDQoN
Cj4gPiArDQo+ID4gICAgICBpZiAoZGVmLT5ub3ByaW50X3dyYXBwZXJzIHx8IGRlZi0+bmVzdGVk
X3NlY3Rpb25bd2N0eC0+bGV2ZWxdKQ0KPiA+ICAgICAgICAgIHJldHVybjsNCj4gPg0KPiA+IGRp
ZmYgLS1naXQgYS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfaW5pLmMNCj4gYi9mZnRvb2xzL3RleHRm
b3JtYXQvdGZfaW5pLmMNCj4gPiBpbmRleCA5ZTFhYTYwZTA5Li5lYzQ3MWZkNDgwIDEwMDY0NA0K
PiA+IC0tLSBhL2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl9pbmkuYw0KPiA+ICsrKyBiL2ZmdG9vbHMv
dGV4dGZvcm1hdC90Zl9pbmkuYw0KPiA+IEBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBjaGFyICpp
bmlfZXNjYXBlX3N0cihBVkJQcmludCAqZHN0LCBjb25zdA0KPiBjaGFyICpzcmMpDQo+ID4gICAg
ICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovDQo+ID4gICAgICAgICAgZGVmYXVsdDoNCj4gPiAg
ICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFyKWMgPCAzMikNCj4gPiAtICAgICAgICAgICAg
ICAgIGF2X2JwcmludGYoZHN0LCAiXFx4MDAlMDJ4IiwgYyAmIDB4ZmYpOw0KPiA+ICsgICAgICAg
ICAgICAgICAgYXZfYnByaW50Zihkc3QsICJcXHgwMCUwMngiLCAodW5zaWduZWQgY2hhciljKTsN
Cj4gPiAgICAgICAgICAgICAgZWxzZQ0KPiA+ICAgICAgICAgICAgICAgICAgYXZfYnByaW50X2No
YXJzKGRzdCwgYywgMSk7DQo+ID4gICAgICAgICAgICAgIGJyZWFrOw0KPiA+IGRpZmYgLS1naXQg
YS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfanNvbi5jDQo+IGIvZmZ0b29scy90ZXh0Zm9ybWF0L3Rm
X2pzb24uYw0KPiA+IGluZGV4IDI0ODM4YjM1ZWMuLmYyODY4MzhkM2MgMTAwNjQ0DQo+ID4gLS0t
IGEvZmZ0b29scy90ZXh0Zm9ybWF0L3RmX2pzb24uYw0KPiA+ICsrKyBiL2ZmdG9vbHMvdGV4dGZv
cm1hdC90Zl9qc29uLmMNCj4gPiBAQCAtODIsMTMgKzgyLDE4IEBAIHN0YXRpYyBjb25zdCBjaGFy
ICpqc29uX2VzY2FwZV9zdHIoQVZCUHJpbnQNCj4gKmRzdCwgY29uc3QgY2hhciAqc3JjLCB2b2lk
ICpsb2dfY3R4DQo+ID4gICAgICBzdGF0aWMgY29uc3QgY2hhciBqc29uX3N1YnN0W10gID0geyAn
IicsICdcXCcsICAnYicsICAnZicsDQo+ICduJywgICdyJywgICd0JywgMCB9Ow0KPiA+ICAgICAg
Y29uc3QgY2hhciAqcDsNCj4gPg0KPiA+ICsgICAgaWYgKCFzcmMpIHsNCj4gPiArICAgICAgICBh
dl9sb2cobG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAianNvbl9lc2NhcGVfc3RyOiBOVUxMIHNvdXJj
ZQ0KPiBzdHJpbmdcbiIpOw0KPiA+ICsgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICsgICAgfQ0K
PiANCj4gQ2FuIHRoaXMgZXZlbiBoYXBwZW4/DQo+IA0KPiA+ICsNCj4gPiAgICAgIGZvciAocCA9
IHNyYzsgKnA7IHArKykgew0KPiA+ICAgICAgICAgIGNoYXIgKnMgPSBzdHJjaHIoanNvbl9lc2Nh
cGUsICpwKTsNCj4gPiAgICAgICAgICBpZiAocykgew0KPiA+ICAgICAgICAgICAgICBhdl9icHJp
bnRfY2hhcnMoZHN0LCAnXFwnLCAxKTsNCj4gPiAgICAgICAgICAgICAgYXZfYnByaW50X2NoYXJz
KGRzdCwganNvbl9zdWJzdFtzIC0ganNvbl9lc2NhcGVdLCAxKTsNCj4gPiAgICAgICAgICB9IGVs
c2UgaWYgKCh1bnNpZ25lZCBjaGFyKSpwIDwgMzIpIHsNCj4gPiAtICAgICAgICAgICAgYXZfYnBy
aW50Zihkc3QsICJcXHUwMCUwMngiLCAqcCAmIDB4ZmYpOw0KPiA+ICsgICAgICAgICAgICBhdl9i
cHJpbnRmKGRzdCwgIlxcdTAwJTAyeCIsICh1bnNpZ25lZCBjaGFyKSpwKTsNCj4gPiAgICAgICAg
ICB9IGVsc2Ugew0KPiA+ICAgICAgICAgICAgICBhdl9icHJpbnRfY2hhcnMoZHN0LCAqcCwgMSk7
DQo+ID4gICAgICAgICAgfQ0KPiA+IEBAIC0xMDcsNiArMTEyLDcgQEAgc3RhdGljIHZvaWQNCj4g
anNvbl9wcmludF9zZWN0aW9uX2hlYWRlcihBVlRleHRGb3JtYXRDb250ZXh0ICp3Y3R4LCBjb25z
dCB2b2lkICpkYXQNCj4gPiAgICAgICAgICB3Y3R4LT5zZWN0aW9uW3djdHgtPmxldmVsLTFdIDog
TlVMTDsNCj4gPg0KPiA+ICAgICAgaWYgKHdjdHgtPmxldmVsICYmIHdjdHgtPm5iX2l0ZW1bd2N0
eC0+bGV2ZWwtMV0pDQo+ID4gKyAgICBpZiAod2N0eC0+bGV2ZWwgJiYgd2N0eC0+bmJfaXRlbVt3
Y3R4LT5sZXZlbCAtIDFdKQ0KPiA+ICAgICAgICAgIHdyaXRlcl9wdXRfc3RyKHdjdHgsICIsXG4i
KTsNCj4gPg0KPiA+ICAgICAgaWYgKHNlY3Rpb24tPmZsYWdzICYgQVZfVEVYVEZPUk1BVF9TRUNU
SU9OX0ZMQUdfSVNfV1JBUFBFUikgew0KPiA+IGRpZmYgLS1naXQgYS9mZnRvb2xzL3RleHRmb3Jt
YXQvdGZfeG1sLmMNCj4gYi9mZnRvb2xzL3RleHRmb3JtYXQvdGZfeG1sLmMNCj4gPiBpbmRleCA3
NjI3MWRiYWE2Li5lY2VlZGE4MWU1IDEwMDY0NA0KPiA+IC0tLSBhL2ZmdG9vbHMvdGV4dGZvcm1h
dC90Zl94bWwuYw0KPiA+ICsrKyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl94bWwuYw0KPiA+IEBA
IC0xOCwxMCArMTgsNyBAQA0KPiA+ICAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BDQo+IDAyMTEwLTEzMDEgVVNBDQo+ID4gICAq
Lw0KPiA+DQo+ID4gLSNpbmNsdWRlIDxsaW1pdHMuaD4NCj4gPiAtI2luY2x1ZGUgPHN0ZGFyZy5o
Pg0KPiA+ICAjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gLSNpbmNsdWRlIDxzdGRpby5oPg0KPiA+
ICAjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ID4NCj4gPiAgI2luY2x1ZGUgImF2dGV4dGZvcm1hdC5o
Ig0KPiA+IGRpZmYgLS1naXQgYS9mZnRvb2xzL3RleHRmb3JtYXQvdHdfYXZpby5jDQo+IGIvZmZ0
b29scy90ZXh0Zm9ybWF0L3R3X2F2aW8uYw0KPiA+IGluZGV4IGQzMzVkMzVhNTYuLjNjNzQ5MmFh
MDYgMTAwNjQ0DQo+ID4gLS0tIGEvZmZ0b29scy90ZXh0Zm9ybWF0L3R3X2F2aW8uYw0KPiA+ICsr
KyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90d19hdmlvLmMNCj4gPiBAQCAtNjMsNyArNjMsNyBAQCBz
dGF0aWMgdm9pZCBpb193OChBVlRleHRXcml0ZXJDb250ZXh0ICp3Y3R4LCBpbnQNCj4gYikNCj4g
PiAgc3RhdGljIHZvaWQgaW9fcHV0X3N0cihBVlRleHRXcml0ZXJDb250ZXh0ICp3Y3R4LCBjb25z
dCBjaGFyICpzdHIpDQo+ID4gIHsNCj4gPiAgICAgIElPV3JpdGVyQ29udGV4dCAqY3R4ID0gd2N0
eC0+cHJpdjsNCj4gPiAtICAgIGF2aW9fd3JpdGUoY3R4LT5hdmlvX2NvbnRleHQsIHN0ciwgc3Ry
bGVuKHN0cikpOw0KPiA+ICsgICAgYXZpb193cml0ZShjdHgtPmF2aW9fY29udGV4dCwgKGNvbnN0
IHVuc2lnbmVkIGNoYXIgKilzdHIsDQo+IChpbnQpc3RybGVuKHN0cikpOw0KPiA+ICB9DQo+ID4N
Cj4gPiAgc3RhdGljIHZvaWQgaW9fcHJpbnRmKEFWVGV4dFdyaXRlckNvbnRleHQgKndjdHgsIGNv
bnN0IGNoYXIgKmZtdCwNCj4gLi4uKQ0KPiA+IEBAIC04OSwxMCArODksMTIgQEAgY29uc3QgQVZU
ZXh0V3JpdGVyIGF2dGV4dHdyaXRlcl9hdmlvID0gew0KPiA+DQo+ID4gIGludCBhdnRleHR3cml0
ZXJfY3JlYXRlX2ZpbGUoQVZUZXh0V3JpdGVyQ29udGV4dCAqKnB3Y3R4LCBjb25zdA0KPiBjaGFy
ICpvdXRwdXRfZmlsZW5hbWUsIGludCBjbG9zZV9vbl91bmluaXQpDQo+ID4gIHsNCj4gPiArICAg
IGlmICghcHdjdHggfHwgIW91dHB1dF9maWxlbmFtZSB8fCAhb3V0cHV0X2ZpbGVuYW1lWzBdKQ0K
PiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQo+IA0KPiBDYW4gdGhpcyBoYXBw
ZW4/DQoNCldoZW4gcHVibGljIC0geWVzLg0KDQoNCkdlbmVyYWxseSwgSSB3b25kZXI6IGRvbid0
IHlvdSBmaW5kIGl0IHJpc2t5IHRvIG1ha2UgZGVjaXNpb25zIGFib3V0DQpmdW5jdGlvbiBpbXBs
ZW1lbnRhdGlvbnMgdGhhdCBhcmUgYmFzZWQgb24ga25vd2xlZGdlIGFib3V0IHRoZSBjYWxsaW5n
DQpjb2RlPyAoImNhbiB0aGlzIGhhcHBlbj8iKQ0KSSBtZWFuLCB0aGUgY2FsbGluZyBjb2RlIGRv
ZXNuJ3Qga25vdyBhYm91dCB0aGUgYXNzdW1wdGlvbnMgeW91IA0Kd2VyZSBtYWtpbmcgYW5kIG9u
IHdoaWNoIGJlaGF2aW9yIHRoZSBpbXBsZW1lbnRhdGlvbiBtaWdodCBiZSByZWx5aW5nIG9uLg0K
DQpGb3IgdGhpcyBwYXRjaHNldCAtIG1vc3QgaW1wb3J0YW50bHkgZm9yIGV2ZXJ5dGhpbmcgaW4g
Z3JhcGhwcmludC5jLA0KSSBoYWQgd29ya2VkIHdpdGggdGhlIGRlbGliZXJhdGUgaW50ZW50aW9u
IGZvciBjaGVja2luZyBldmVyeXRoaW5nIHRoYXQNCmNhbiBiZSBjaGVja2VkLiBUaGUgbW90aXZh
dGlvbiBoZXJlIGlzIHRoZSBmYWN0IHRoYXQgZ3JhcGgtcHJpbnRpbmcNCmlzIGFsd2F5cyBydW4g
KHdoZW4gY29uZmlndXJlZCksIGV2ZW4gd2hlbiB0aGUgRkZtcGVnIHJ1biBoYXMgZmFpbGVkDQpv
ciBlcnJvcmVkLCBiZWNhdXNlIHRob3NlIGFyZSBvZnRlbiB0aGUgbW9zdCBpbnRlcmVzdGluZyBj
YXNlcyBmb3IgDQp2aWV3aW5nIHRoZSBncmFwaCBvciBnZXR0aW5nIHRoZSBkYXRhLiANCkJ1dCBp
biBjYXNlIG9mIGVycm9ycyBhbmQgYWJvcnRpb24sIHdlIGNhbm5vdCBtYWtlIGFueSBhc3N1bXB0
aW9ucyANCmFueW1vcmUgYW5kIHRoZSBhbnN3ZXIgdG8gImNhbiB0aGlzIGhhcHBlbj8iIG1pZ2h0
IGJlIG1vcmUgb2Z0ZW4gInllcyINCnRoYW4gdXN1YWwuDQoNCkkgaG9wZSB5b3UgZG9uJ3QgbWlu
ZCB0byBwb3N0cG9uZSB0aGUgcmVtb3ZhbCBvZiBjaGVja3MgYSBsaXR0bGUgYml0Lg0KSXQgZG9l
c24ndCBmZWVsIHJpZ2h0IHRvIG1lIG5vdywgdG8gZ28gb3ZlciBhbmQganVzdCBibGluZGx5IHJl
bW92ZQ0KYWxsIG9mIHRoZW0uIEkgd291bGQgcmF0aGVyIGxpa2UgdG8gZGlzY3VzcyBhIHN0cmF0
ZWd5L3BhdHRlcm4gaW4gdGhpcw0KcmVnYXJkIGFib3V0IHdoaWNoIGNoZWNrcyBzaG91bGQgYmUg
bWFkZSBhdCB3aGljaCBwbGFjZXMgYW5kIHdoZXJlDQpub3QsIGFsc28gaW4gdGhlIGxpZ2h0IG9m
IHBvc3NpYmx5IGJlaW5nIHByb21vdGVkIHRvIGEgcHVibGljIEFQSS4NCkZpbmFsbHksIEknZCBh
bHNvIGxpa2UgdG8gaGVhciBTdGVmYW5vcyBvcGluaW9uIC0gaXQncyBtb3N0bHkgaGlzIA0KY29k
ZSB0aGF0IHdlJ3JlIG1vdmluZyBhcm91bmQgaGVyZSDwn5iKDQoNCg0KVGhhbmtzDQpzdw0KX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVs
IG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcv
bWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5r
IGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3Vi
amVjdCAidW5zdWJzY3JpYmUiLgo=