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 D13724D106
	for <ffmpegdev@gitmailbox.com>; Wed, 16 Apr 2025 05:05:42 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 50E32687BAE;
	Wed, 16 Apr 2025 08:05:37 +0300 (EEST)
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05olkn2040.outbound.protection.outlook.com [40.92.90.40])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E167C687A49
 for <ffmpeg-devel@ffmpeg.org>; Wed, 16 Apr 2025 08:05:30 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jvgAV/Kp4sJG1i7qUNEElygybqR4l1sP0WSTKZoZJ1H5BEL0+lARE3OT0VkjMQCZg/d/uCh+krdMaSSH2qTsxE0HFVGz7u6ujFuV3rwrBrlhB0e/sYQumjT+IyYS9s+7lYkUu0oztQBzl2oGL+DDUpkz+6Muyuk0r05Scb11l8U3lRR3DRicRKW51j9rNj8dHCCeiW7CFzTwLoD53BsyhSoKWGaqRqMtgkVAUYMDLvAbY6W2hqCAieDvMb3Pv9NqERX9BWgG6oQ7+p0uYUxF0a/NZIkLUeVXRrjvMdJXSf5BPaTiBnn2qxX0bJwr81QkwVbraoebVGe4iqXydDu3+g==
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=CGh7wI2kNWWoQOeCoiVNsF6+mILm7JpN9pVP1LLoW3g=;
 b=LbkM9sWI21SPPMSrhSzaV1hxcqS2ibhxh0I7pyqRplCftHoEjQk3tfBTC1//KG9qnB+kninj7hZmYmDOeJML+CPwb4LSiZqfnQlXuf4CO8nfBGIYLtdk/KQ0TLC4Zyf0H3qGhCcGEBi6PK7XOLjoxR0ecKyJfb4KQYIRqZuLQhtf/LO37ohxWKrkBTwLwgSCh1mhL0fCCJXKIowtHfUihI/4sFuLZxgqZKeEttoa+r8Q+gg4DqfYEXBqW7KrCWGq0OP1nct0lO879DIrANTC1szvKXDEiqqUYLZ+yAYJkhIRm4rDFMq8OyN8LqQ7eL/GGMoCk9kLBnvx8rt7quh4JA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
 dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=CGh7wI2kNWWoQOeCoiVNsF6+mILm7JpN9pVP1LLoW3g=;
 b=W1v3/15OroRnNihOzXgLXvZwNKf1+xaM2CzCfLBYlfpVSvnjzzNeyl4iX0D+2tk4uNKpnrzj8KRaLIKHnFZcsOpfokCfuVoVhvpgU8B6e2hXo9IyYaZNmzWtQwcaYLuBxId70SL+F9/yklgenD/1Markj+cQQOVXYUkyeBbGjKIEWA84kxNr/3V9R7RXbtt3mekziiFK3f0XRo/BEsFSmJUecL1jmkZgGhhZp7A+xcTs+ssLAVZWDowRoB0NHmxjcP7TKectVNppZV2e0EbE0PSK296K6yFdvIdwAoceqnFBGdkKCdW35wCeVN1CPAPOYNsy8HdyOW5XGrBuctotrw==
Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17)
 by DU0P250MB0646.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:329::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.20; Wed, 16 Apr
 2025 04:50:46 +0000
Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM
 ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM
 ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.8655.012; Wed, 16 Apr 2025
 04:50:46 +0000
Message-ID: <GV1P250MB073716AA776C301A980CB90B8FBD2@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
Date: Wed, 16 Apr 2025 06:50:44 +0200
User-Agent: Mozilla Thunderbird
To: ffmpeg-devel@ffmpeg.org
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>
Content-Language: en-US
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
In-Reply-To: <DM8P223MB03659AF3483E00EC43597670BAB22@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
X-ClientProxiedBy: FR4P281CA0361.DEUP281.PROD.OUTLOOK.COM
 (2603:10a6:d10:f8::17) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM
 (2603:10a6:150:8e::17)
X-Microsoft-Original-Message-ID: <dfee648c-2ace-466b-9f79-2bb2d6d7fe76@outlook.com>
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0646:EE_
X-MS-Office365-Filtering-Correlation-Id: c917ead5-4315-4f60-67f9-08dd7ca24025
X-Microsoft-Antispam: BCL:0;
 ARA:14566002|15080799006|6090799003|461199028|8060799006|19110799003|5072599009|7092599003|18061999006|41001999003|440099028|3412199025;
X-Microsoft-Antispam-Message-Info: =?utf-8?B?NmpLdzBjejZPeWRRV0FyMzgrUHdzK3RCMWxGRzZyN0JjSjJhV0FyRzB0dDlo?=
 =?utf-8?B?UThiY1ZhUlVmNWpDUnFXci9kWlc0ZVE2Z24vMFNSOXgvS095OS95SUVpSm5k?=
 =?utf-8?B?ajhOencvMWxBcWZLcmh0RUNrZ29aMjYvRG5yUk1XWlFVbVUyRVBQVDdmVEd0?=
 =?utf-8?B?TFp5dDhuL2ZVZGIrSkZLMjBreG5nVlZwTWRYbjFldTcwZmRlcmdUTHllRGxH?=
 =?utf-8?B?cFhwZUNCQy9NNE9BVVEyTnQ5THkyWWt3Uy9EMUczMW1PektwUUc0VnN2MmpS?=
 =?utf-8?B?N0xITjJ5eGdTU1BORjVjNXBYU2dsbW85eVNWWGFCZEtTOEQ4WjhQSmRnTHBP?=
 =?utf-8?B?Zmp5OEJFa2pvamdJdlNqUXlHTzlqSldKRTFvaHdYckYweVRKLzhFQTlram1N?=
 =?utf-8?B?VUtBZVhsME5EQXJCMFlMSlFpaDI3ZldNdkYxZU5aSUhXTVZTRHZ3UHhqNHBv?=
 =?utf-8?B?NEQ4aEdpd1RHYVJlTi8weHBGdFFpUE1henFoZ3RpN0ExSzlIS1NKSUc1YTNY?=
 =?utf-8?B?WmxSZDlXcWlhV004QWtBY3hUUGs0WS9qMW5hMHB3M1RETVFmdE16M2dVWVdu?=
 =?utf-8?B?YS9sOEFZSFR5UDN0a3cyWW1WNnhjOU41RnBCSk5GdDN3Z3dtS3JycXlCOE1z?=
 =?utf-8?B?UE5LVUt2NkxYc3Q5Skc3akVVTE1wNjZ2bWdWK0liNjhzby9zZWVMQWJOYytT?=
 =?utf-8?B?WkszWnBhaGpNcmF1QUFISm9SdGpXVjZTL3B3ZktaVEFWQ0doaTFjR25nS2JM?=
 =?utf-8?B?dzkwZk9XR3c0Z1RxVmdWalhETFpuMXRObXk5R2ZyRG4xbFlmNzArekZCdFI3?=
 =?utf-8?B?aFh0T0Fkd2ZyQnc2V3ZsRkFLcmJuUmpmWDM2TTJSK2RMeWVqOGtYQkVmeFA3?=
 =?utf-8?B?cHc0UWlVSC9mamhpbWtpQ3FDcHBWZ01XRUw3bkp3WjhlakRrV0cvZUcvMGNx?=
 =?utf-8?B?YVRwRENtZXJnb0FGRHpmdW9NelhQOE5ETEJMbExETjFwbGxSNnRiUDQxNVNj?=
 =?utf-8?B?ai9uZEhuNkxzMmV0Mmw5YVRDNGJMZmpMVFFDZHpYcGQ5d0xWUm1qWkpGY3Vv?=
 =?utf-8?B?NkJHSzB6NU5qM3poMVBPQThQMG9FTE1pTythRXI1WTE1ampIT3NyYVkyWUx2?=
 =?utf-8?B?aU52M3ZHQllzQXdPV3Q5Q3VPakhoS0x2RHZkelBYbjFrZlJ6WDB6OXNIUjJX?=
 =?utf-8?B?VnNZUzFsZDd4SnhncFRCMTMrYStwMVdoalA5aUtHN21TcW1BN0I2b3VoaElZ?=
 =?utf-8?B?SUdMWnNiR2lFZnR1dUdGYlVmbDNkNGppSzFnWGZTV1NvMW1MTDV5NFVHQVZq?=
 =?utf-8?B?OW9xZ2YybDFwWnRPd242M0d6Y21ScVVQdU4zZXJCd1NqM2JvQW1iMjF2Qmg2?=
 =?utf-8?B?dHYzd2ZiVjdXRHdKV2xoMTdSS1pmb0txb0lPWGtRYVU3RVZaUmJVY3JaQU1x?=
 =?utf-8?B?Y2x1SDlvQVBQdkpwYm9abDRLUzRCeVg3eXluamVNSXVCYVoreldEcGlaZTZF?=
 =?utf-8?B?aWFucm5hc1VocktJOVRPUnQ2empJdVV1NldkcW9icVJRVWR3elhVOVJIZFBV?=
 =?utf-8?B?Skw4UURqdmo3MWZucmVhZUJwUEVvaHVUQkUxT3RmUVN5NzZSd2JkQlFUbUw1?=
 =?utf-8?B?Um1IS25rRFVZVHZTNmNjUEZOOXkrbkE9PQ==?=
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aXFSekwrMEpUWTM5ZVZzZjBGdW1wZU9JZmZLZ2o3czBsRkFIVUdqeEs3aWJY?=
 =?utf-8?B?eDg2YUN5S21hQWpYVUFCYmdtSE5FT1pRdTc2UTZndnlLUms0Z3lzdEZ5VG5X?=
 =?utf-8?B?ZE9MTG56Z3M5YVB4M3k4bVE5cDJ0amlVOVVCaU45WmxuR3dEMUxoTFkwcVZy?=
 =?utf-8?B?eWJoMXR6K1JBMnVCbXFLZkRYcDFEK2k2UTJZZGtuMjVscVlTMlhvOUg0K1Ra?=
 =?utf-8?B?bldua3dsSVI2Y0JKZzlZdmtsWTFCeDV2VWpramxmZE9iRlRZY1lHaUFMS1Rm?=
 =?utf-8?B?eFhKYlNHUW9BbkJyaU5wMzNKL0FTSENYelQ3bmF6eHhteDZlQk1DRkdSeTY2?=
 =?utf-8?B?bjJmU3A4Z3FxYzJ1Y1BkTDN3VXJWazRUQm9JRkp5VFZHc3FZU053UmQ1c1Rj?=
 =?utf-8?B?SE5aVEw2dUFRRWtrVHdVdzJoS2FLQ01HSFRVU1BRaE9ERlVIa3c3RlAxUjFW?=
 =?utf-8?B?REZmY2srbWNpKzFPaDl3cGU1UndHeGhOVUxHMWZtT21XZnpXcytHcHpWVlQ3?=
 =?utf-8?B?emMwSzk3MWFOWGZ5bFVTWVJ3dWZoN1hacmdwWU9YYkx1anU0MVNFczgxdWEz?=
 =?utf-8?B?WXdwclYrb2haQjZJRjAzOSs0VHN4Q09UNkp4YzJhYmxVVHZ6V2RHektEc0Vh?=
 =?utf-8?B?c3RFd2xhdDNjUTBoN3BBOGlDNW81S0IrbEJTS2h4WXVQamZmblV6OExVWms3?=
 =?utf-8?B?UGtHelFORENIMEl6eXpYZURtWUxyVnFoZVBVbmkxSzVCQnIwR21nT0lXSUxh?=
 =?utf-8?B?dDNXNnhlTzF2bGI0clkzTWQrV3prcXNVM0draGZXSkN0MG9aOGZzL3Fmazd0?=
 =?utf-8?B?TVdtM1RJcHVSZXhjOXAyd0FhVXJsUkhvQXRza0d1Y1pucWNHRFhlRGZSbWoy?=
 =?utf-8?B?ZUpnNHMvVjVQQzNLZHBSUXFQMnltMjY5SnB1K0ZGVmgzZG0rcERmRVUzNi9z?=
 =?utf-8?B?QldwdHVOcUtuR1dyZU5SN3ZMclZiUWVKRG5UNjRkcWo5UlgvalpwQ2RuRDBQ?=
 =?utf-8?B?Qkk1cUlUWkk1SWt6Mm12ODUzM2NaUmJiZDREdkhYVUtmOVhjdzdhbGVYaVNu?=
 =?utf-8?B?WWJod1Qvc1lYakNHc00xNmx2YkFCaUFoVGtxMG83ZmJaby9oYlBYR0MwVmNT?=
 =?utf-8?B?Tzc2YnFHakd6cjNianFjdjNBRXJGSUpzRStmaFlIeXUrRzZIeHZ0TFVmeXAy?=
 =?utf-8?B?N2ZIOWJnZVluVzBkNDRORm9GYTBlMWVpdjg1YmVSNUxESkZJZVBKOWVQRlRD?=
 =?utf-8?B?U2kzY0wwUDJzNHZHRjdKeFJYcnYzckZIa0dBR2puS0xQejhEdWVmRFhoWXBt?=
 =?utf-8?B?azZYdDk4aFMyY3pISFBuSXlpT0UwQjhZR1gwWUpadklOUVRUc3JVMHN1Ry9I?=
 =?utf-8?B?bW1Md0VwNXZ3T3phNXNhRFVKV0hING84VFYxS1h6VkZNV21WYzJHNmZZYVVo?=
 =?utf-8?B?Z2E3M1lRQndTWFkvVjUwTk41WnFjcHp5T0RXTXV4R1gvTGpPNUc3dlRuOGFB?=
 =?utf-8?B?cUhnNS91RG92WHk5YTEvMUl2Mm5OcjJXalp1TFhPS2ZxWnNRaWF4Z3FNbkFu?=
 =?utf-8?B?NTN5QnVQN3JuZSt6N0NyNzQ5TlR5RzYxRHhDNC9LbzI5ZEtTN0lRNm9zR3pm?=
 =?utf-8?B?M2hmSXBlbElQWlNQVnhCVTJRRmtzMWFFbXl5NmhURXFpVXAva0NoTGl3U3ZU?=
 =?utf-8?B?R3ZCU3BIMi9scnEwWWFudUR2RE1BeDVDb2xhMlJLdFZBVWptci84SFZ1cGkv?=
 =?utf-8?Q?piy7Fi/20p+H+4qLTDW+jZlIeukrevr/i3QdVaz?=
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c917ead5-4315-4f60-67f9-08dd7ca24025
X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 04:50:46.3133 (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: DU0P250MB0646
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/GV1P250MB073716AA776C301A980CB90B8FBD2@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

c29mdHdvcmt6IC46Cj4gCj4gCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206
IGZmbXBlZy1kZXZlbCA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4gT24gQmVoYWxm
IE9mCj4+IEFuZHJlYXMgUmhlaW5oYXJkdAo+PiBTZW50OiBEaWVuc3RhZywgMTUuIEFwcmlsIDIw
MjUgMDM6MDYKPj4gVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4+IFN1YmplY3Q6IFJlOiBb
RkZtcGVnLWRldmVsXSBbUEFUQ0ggMi85XSBmZnRvb2xzL3RleHRmb3JtYXQ6IFF1YWxpdHkKPj4g
aW1wcm92ZW1lbnRzCj4+Cj4+IHNvZnR3b3JrejoKPj4+IEZyb206IHNvZnR3b3JreiA8c29mdHdv
cmt6QGhvdG1haWwuY29tPgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IHNvZnR3b3JreiA8c29mdHdv
cmt6QGhvdG1haWwuY29tPgo+Pj4gLS0tCj4+PiAgZmZ0b29scy90ZXh0Zm9ybWF0L2F2dGV4dGZv
cm1hdC5jIHwgMTIxICsrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+PiAtLS0KPj4+ICBmZnRv
b2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmggfCAgIDYgKy0KPj4+ICBmZnRvb2xzL3RleHRm
b3JtYXQvdGZfZGVmYXVsdC5jICAgfCAgIDggKy0KPj4+ICBmZnRvb2xzL3RleHRmb3JtYXQvdGZf
aW5pLmMgICAgICAgfCAgIDIgKy0KPj4+ICBmZnRvb2xzL3RleHRmb3JtYXQvdGZfanNvbi5jICAg
ICAgfCAgIDggKy0KPj4+ICBmZnRvb2xzL3RleHRmb3JtYXQvdGZfeG1sLmMgICAgICAgfCAgIDMg
LQo+Pj4gIGZmdG9vbHMvdGV4dGZvcm1hdC90d19hdmlvLmMgICAgICB8ICAgOSArKy0KPj4+ICA3
IGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKPj4+Cj4+
PiBkaWZmIC0tZ2l0IGEvZmZ0b29scy90ZXh0Zm9ybWF0L2F2dGV4dGZvcm1hdC5jCj4+IGIvZmZ0
b29scy90ZXh0Zm9ybWF0L2F2dGV4dGZvcm1hdC5jCj4+PiBpbmRleCAxY2U1MWQxMWUyLi40MDYw
MjVkMTlkIDEwMDY0NAo+Pj4gLS0tIGEvZmZ0b29scy90ZXh0Zm9ybWF0L2F2dGV4dGZvcm1hdC5j
Cj4+PiArKysgYi9mZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0Zm9ybWF0LmMKPj4+IEBAIC05Myw5
ICs5Myw4IEBAIHN0YXRpYyBjb25zdCBBVkNsYXNzIHRleHRjb250ZXh0X2NsYXNzID0gewo+Pj4K
Pj4+ICBzdGF0aWMgdm9pZCBicHJpbnRfYnl0ZXMoQVZCUHJpbnQgKmJwLCBjb25zdCB1aW50OF90
ICp1YnVmLCBzaXplX3QKPj4gdWJ1Zl9zaXplKQo+Pj4gIHsKPj4+IC0gICAgaW50IGk7Cj4+PiAg
ICAgIGF2X2JwcmludGYoYnAsICIwWCIpOwo+Pj4gLSAgICBmb3IgKGkgPSAwOyBpIDwgdWJ1Zl9z
aXplOyBpKyspCj4+PiArICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1YnVmX3NpemU7IGkr
KykKPj4KPj4gV2h5IG5vdCBzaXplX3Q/Cj4gCj4gQmVjYXVzZSBpdCBjcmVhdGVzIG1vcmUgd2Fy
bmluZ3MgYWJvdXQgbmFycm93aW5nIGNvbnZlcnNpb25zLgo+IAo+IAo+IAo+Pj4gICAgICAgICAg
YXZfYnByaW50ZihicCwgIiUwMlgiLCB1YnVmW2ldKTsKPj4+ICB9Cj4+Pgo+Pj4gQEAgLTExMCw4
ICsxMDksNiBAQCBpbnQgYXZ0ZXh0X2NvbnRleHRfY2xvc2UoQVZUZXh0Rm9ybWF0Q29udGV4dAo+
PiAqKnB0Y3R4KQo+Pj4KPj4+ICAgICAgYXZfaGFzaF9mcmVlcCgmdGN0eC0+aGFzaCk7Cj4+Pgo+
Pj4gLSAgICBhdl9oYXNoX2ZyZWVwKCZ0Y3R4LT5oYXNoKTsKPj4+IC0KPj4+ICAgICAgaWYgKHRj
dHgtPmZvcm1hdHRlci0+dW5pbml0KQo+Pj4gICAgICAgICAgdGN0eC0+Zm9ybWF0dGVyLT51bmlu
aXQodGN0eCk7Cj4+PiAgICAgIGZvciAoaSA9IDA7IGkgPCBTRUNUSU9OX01BWF9OQl9MRVZFTFM7
IGkrKykKPj4+IEBAIC0xNDEsMTIgKzEzOCwxOCBAQCBpbnQgYXZ0ZXh0X2NvbnRleHRfb3BlbihB
VlRleHRGb3JtYXRDb250ZXh0Cj4+ICoqcHRjdHgsCj4+PiAgICAgIEFWVGV4dEZvcm1hdENvbnRl
eHQgKnRjdHg7Cj4+PiAgICAgIGludCBpLCByZXQgPSAwOwo+Pj4KPj4+IC0gICAgaWYgKCEodGN0
eCA9IGF2X21hbGxvY3ooc2l6ZW9mKEFWVGV4dEZvcm1hdENvbnRleHQpKSkpIHsKPj4+ICsgICAg
aWYgKCFwdGN0eCB8fCAhZm9ybWF0dGVyKQo+Pj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO
VkFMKTsKPj4KPj4gQ2FuIHRoaXMgaGFwcGVuPwo+IAo+IHNlZSBiZWxvdwo+IAo+Pj4gKwo+Pj4g
KyAgICBpZiAoIWZvcm1hdHRlci0+cHJpdl9zaXplICYmIGZvcm1hdHRlci0+cHJpdl9jbGFzcykK
Pj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4+Cj4+IFN0dWZmIGxpa2UgdGhp
cyBzaG91bGQgbmV2ZXIgaGFwcGVuIGFuZCBzaG91bGQgbm90IGJlIGNoZWNrZWQgKG9yCj4+IGFj
dHVhbGx5OiB0aGUgcHJvcGVyIHBsYWNlIHRvIGNoZWNrIHN0dWZmIGxpa2UgdGhpcyBpcyBpbiB0
ZXN0IHRvb2xzCj4+IGxpa2UgbGF2Yy90ZXN0cy9hdmNvZGVjLmMsIGJ1dCBJIGRvbid0IHRoaW5r
IGl0IGlzIHdvcnRoIGl0IGZvcgo+PiBmZnRvb2xzKS4KPiAKPiBJIHByb2JhYmx5IG92ZXJkaWQg
aXQgYSBiaXQgd2l0aCBjaGVja3MsIGJ1dCB0aGUgZ29hbCBmb3IgdGhpcyBBUEkgCj4gaXMgc3Rp
bGwgdG8gYmVjb21lIHB1YmxpYyBhdCBzb21lIHBvaW50IChsaWtlIGluIGF2dXRpbCksIHNvIEkg
Cj4gdHJpZWQgdG8gbW92ZSB0b3dhcmRzIHRoYXQgZGlyZWN0aW9uIGFscmVhZHkuCj4gCj4gCj4g
Cj4gCj4+PiArCj4+PiArICAgIGlmICghKCh0Y3R4ID0gYXZfbWFsbG9jeihzaXplb2YoQVZUZXh0
Rm9ybWF0Q29udGV4dCkpKSkpIHsKPj4+ICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsK
Pj4+ICAgICAgICAgIGdvdG8gZmFpbDsKPj4+ICAgICAgfQo+Pj4KPj4+IC0gICAgaWYgKCEodGN0
eC0+cHJpdiA9IGF2X21hbGxvY3ooZm9ybWF0dGVyLT5wcml2X3NpemUpKSkgewo+Pj4gKyAgICBp
ZiAoZm9ybWF0dGVyLT5wcml2X3NpemUgJiYgISgodGN0eC0+cHJpdiA9Cj4+IGF2X21hbGxvY3oo
Zm9ybWF0dGVyLT5wcml2X3NpemUpKSkpIHsKPj4+ICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5P
TUVNKTsKPj4+ICAgICAgICAgIGdvdG8gZmFpbDsKPj4+ICAgICAgfQo+Pj4gQEAgLTIxNSwxNSAr
MjE4LDE1IEBAIGludCBhdnRleHRfY29udGV4dF9vcGVuKEFWVGV4dEZvcm1hdENvbnRleHQKPj4g
KipwdGN0eCwKPj4+Cj4+PiAgICAgIC8qIHZhbGlkYXRlIHJlcGxhY2Ugc3RyaW5nICovCj4+PiAg
ICAgIHsKPj4+IC0gICAgICAgIGNvbnN0IHVpbnQ4X3QgKnAgPSB0Y3R4LT5zdHJpbmdfdmFsaWRh
dGlvbl9yZXBsYWNlbWVudDsKPj4+IC0gICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZHAgPSBwICsg
c3RybGVuKHApOwo+Pj4gKyAgICAgICAgY29uc3QgdWludDhfdCAqcCA9ICh1aW50OF90ICopdGN0
eC0KPj4+IHN0cmluZ192YWxpZGF0aW9uX3JlcGxhY2VtZW50Owo+Pj4gKyAgICAgICAgY29uc3Qg
dWludDhfdCAqZW5kcCA9IHAgKyBzdHJsZW4oKGNvbnN0IGNoYXIgKilwKTsKPj4+ICAgICAgICAg
IHdoaWxlICgqcCkgewo+Pj4gICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnAwID0gcDsKPj4+
ICAgICAgICAgICAgICBpbnQzMl90IGNvZGU7Cj4+PiAgICAgICAgICAgICAgcmV0ID0gYXZfdXRm
OF9kZWNvZGUoJmNvZGUsICZwLCBlbmRwLCB0Y3R4LQo+Pj4gc3RyaW5nX3ZhbGlkYXRpb25fdXRm
OF9mbGFncyk7Cj4+PiAgICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKPj4+ICAgICAgICAgICAg
ICAgICAgQVZCUHJpbnQgYnA7Cj4+PiAtICAgICAgICAgICAgICAgIGF2X2JwcmludF9pbml0KCZi
cCwgMCwgQVZfQlBSSU5UX1NJWkVfQVVUT01BVElDKTsKPj4+ICsgICAgICAgICAgICAgICAgYXZf
YnByaW50X2luaXQoJmJwLCAwLCBBVl9CUFJJTlRfU0laRV9VTkxJTUlURUQpOwo+Pgo+PiBUaGlz
IGFkZHMgYSBtZW1sZWFrIG9uIGRhdGEgd2hlcmUgaXQgbWFrZXMgYSBkaWZmZXJlbmNlLgo+IAo+
IFdoeT8gVGhlIHN0cmluZ192YWxpZGF0aW9uX3JlcGxhY2VtZW50IHN0cmluZyBzaG91bGQgYmUg
c2hvcnQgZW5vdWdoCj4gdG8gZml0IGludG8gdGhlIHN0YWNrLWFsbG9jYXRlZCBtZW1vcnksIG5v
Pwo+IAo+IAo+Pj4gICAgICAgICAgICAgICAgICBicHJpbnRfYnl0ZXMoJmJwLCBwMCwgcCAtIHAw
KSwKPj4+ICAgICAgICAgICAgICAgICAgICAgIGF2X2xvZyh0Y3R4LCBBVl9MT0dfRVJST1IsCj4+
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgVVRGOCBzZXF1ZW5jZSAlcyBm
b3VuZCBpbgo+PiBzdHJpbmcgdmFsaWRhdGlvbiByZXBsYWNlICclcydcbiIsCj4+PiBAQCAtMjU5
LDYgKzI2Miw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIHVuaXRfYml0X3Blcl9zZWNvbmRfc3RyW10g
PQo+PiAiYml0L3MiOwo+Pj4KPj4+ICB2b2lkIGF2dGV4dF9wcmludF9zZWN0aW9uX2hlYWRlcihB
VlRleHRGb3JtYXRDb250ZXh0ICp0Y3R4LCBjb25zdAo+PiB2b2lkICpkYXRhLCBpbnQgc2VjdGlv
bl9pZCkKPj4+ICB7Cj4+PiArICAgIGlmICghdGN0eCB8fCBzZWN0aW9uX2lkIDwgMCB8fCBzZWN0
aW9uX2lkID49IHRjdHgtPm5iX3NlY3Rpb25zKQo+Pj4gKyAgICAgICAgcmV0dXJuOwo+Pgo+PiBD
YW4gdGhpcyBoYXBwZW4/Cj4gCj4gRm9yIGEgcHVibGljIEFQSSAtIG1hbnkgdGhpbmdzIGNhbiBo
YXBwZW4uLi4KPiAKPiAKPj4+ICAgICAgdGN0eC0+bGV2ZWwrKzsKPj4+ICAgICAgYXZfYXNzZXJ0
MCh0Y3R4LT5sZXZlbCA8IFNFQ1RJT05fTUFYX05CX0xFVkVMUyk7Cj4+Pgo+Pj4gQEAgLTI3Miw2
ICsyNzgsOSBAQCB2b2lkCj4+IGF2dGV4dF9wcmludF9zZWN0aW9uX2hlYWRlcihBVlRleHRGb3Jt
YXRDb250ZXh0ICp0Y3R4LCBjb25zdCB2b2lkCj4+ICpkYXRhLCBpbgo+Pj4KPj4+ICB2b2lkIGF2
dGV4dF9wcmludF9zZWN0aW9uX2Zvb3RlcihBVlRleHRGb3JtYXRDb250ZXh0ICp0Y3R4KQo+Pj4g
IHsKPj4+ICsgICAgaWYgKCF0Y3R4IHx8IHRjdHgtPmxldmVsIDwgMCB8fCB0Y3R4LT5sZXZlbCA+
PQo+PiBTRUNUSU9OX01BWF9OQl9MRVZFTFMpCj4+PiArICAgICAgICByZXR1cm47Cj4+Cj4+IENh
biB0aGlzIGhhcHBlbj8KPiAKPiBZZXMgLSB3aGVuIHNvbWV3aGVyZSBpbiBGRm1wZWcgc29tZSBv
dXRwdXQgaXMgY2hhbmdlZCB3aXRob3V0IHRoaW5raW5nCj4gYWJvdXQgdGhhdCB0aGVyZSdzIGEg
bmVzdGluZyBsaW1pdCBvZiBTRUNUSU9OX01BWF9OQl9MRVZFTFMuCj4gRXZlbiB3aGVuIG9ubHkg
MiBvciAzIHNlY3Rpb24gdHlwZXMgYXJlIGRlZmluZWQsIHRoZSBsZXZlbCBjYW4gZ28gYmV5b25k
Cj4gdGhhdCB2YWx1ZS4KPiAKPiAKPj4KPj4+ICsKPj4+ICAgICAgaW50IHNlY3Rpb25faWQgPSB0
Y3R4LT5zZWN0aW9uW3RjdHgtPmxldmVsXS0+aWQ7Cj4+PiAgICAgIGludCBwYXJlbnRfc2VjdGlv
bl9pZCA9IHRjdHgtPmxldmVsCj4+PiAgICAgICAgICA/IHRjdHgtPnNlY3Rpb25bdGN0eC0+bGV2
ZWwgLSAxXS0+aWQKPj4+IEBAIC0yODksNyArMjk4LDEyIEBAIHZvaWQKPj4gYXZ0ZXh0X3ByaW50
X3NlY3Rpb25fZm9vdGVyKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgpCj4+Pgo+Pj4gIHZvaWQg
YXZ0ZXh0X3ByaW50X2ludGVnZXIoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY29uc3QgY2hh
cgo+PiAqa2V5LCBpbnQ2NF90IHZhbCkKPj4+ICB7Cj4+PiAtICAgIGNvbnN0IHN0cnVjdCBBVlRl
eHRGb3JtYXRTZWN0aW9uICpzZWN0aW9uID0gdGN0eC0+c2VjdGlvblt0Y3R4LQo+Pj4gbGV2ZWxd
Owo+Pj4gKyAgICBjb25zdCBBVlRleHRGb3JtYXRTZWN0aW9uICpzZWN0aW9uOwo+Pj4gKwo+Pj4g
KyAgICBpZiAoIXRjdHggfHwgIWtleSB8fCB0Y3R4LT5sZXZlbCA8IDAgfHwgdGN0eC0+bGV2ZWwg
Pj0KPj4gU0VDVElPTl9NQVhfTkJfTEVWRUxTKQo+Pj4gKyAgICAgICAgcmV0dXJuOwo+Pgo+PiBD
YW4gdGhpcyBoYXBwZW4/Cj4gCj4gCj4gc2VlIGFib3ZlCj4gCj4gCj4+Cj4+PiArCj4+PiArICAg
IHNlY3Rpb24gPSB0Y3R4LT5zZWN0aW9uW3RjdHgtPmxldmVsXTsKPj4+Cj4+PiAgICAgIGlmIChz
ZWN0aW9uLT5zaG93X2FsbF9lbnRyaWVzIHx8IGF2X2RpY3RfZ2V0KHNlY3Rpb24tCj4+PiBlbnRy
aWVzX3RvX3Nob3csIGtleSwgTlVMTCwgMCkpIHsKPj4+ICAgICAgICAgIHRjdHgtPmZvcm1hdHRl
ci0+cHJpbnRfaW50ZWdlcih0Y3R4LCBrZXksIHZhbCk7Cj4+PiBAQCAtMjk5LDI0ICszMTMsMjgg
QEAgdm9pZCBhdnRleHRfcHJpbnRfaW50ZWdlcihBVlRleHRGb3JtYXRDb250ZXh0Cj4+ICp0Y3R4
LCBjb25zdCBjaGFyICprZXksIGludDY0X3QgdmEKPj4+Cj4+PiAgc3RhdGljIGlubGluZSBpbnQg
dmFsaWRhdGVfc3RyaW5nKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNoYXIKPj4gKipkc3Rw
LCBjb25zdCBjaGFyICpzcmMpCj4+PiAgewo+Pj4gLSAgICBjb25zdCB1aW50OF90ICpwLCAqZW5k
cDsKPj4+ICsgICAgY29uc3QgdWludDhfdCAqcCwgKmVuZHAsICpzcmNwID0gKGNvbnN0IHVpbnQ4
X3QgKilzcmM7Cj4+PiAgICAgIEFWQlByaW50IGRzdGJ1ZjsKPj4+ICsgICAgQVZCUHJpbnQgYnA7
Cj4+PiAgICAgIGludCBpbnZhbGlkX2NoYXJzX25iID0gMCwgcmV0ID0gMDsKPj4+Cj4+PiArICAg
IGlmICghdGN0eCB8fCAhZHN0cCB8fCAhc3JjKQo+Pj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1Io
RUlOVkFMKTsKPj4+ICsKPj4KPj4gQ2FuIHRoaXMgaGFwcGVuPwo+Pgo+Pj4gKyAgICAqZHN0cCA9
IE5VTEw7Cj4+PiAgICAgIGF2X2JwcmludF9pbml0KCZkc3RidWYsIDAsIEFWX0JQUklOVF9TSVpF
X1VOTElNSVRFRCk7Cj4+PiArICAgIGF2X2JwcmludF9pbml0KCZicCwgMCwgQVZfQlBSSU5UX1NJ
WkVfVU5MSU1JVEVEKTsKPj4+Cj4+PiAtICAgIGVuZHAgPSBzcmMgKyBzdHJsZW4oc3JjKTsKPj4+
IC0gICAgZm9yIChwID0gc3JjOyAqcDspIHsKPj4+IC0gICAgICAgIHVpbnQzMl90IGNvZGU7Cj4+
PiArICAgIGVuZHAgPSBzcmNwICsgc3RybGVuKHNyYyk7Cj4+PiArICAgIGZvciAocCA9IHNyY3A7
ICpwOykgewo+Pj4gKyAgICAgICAgaW50MzJfdCBjb2RlOwo+Pj4gICAgICAgICAgaW50IGludmFs
aWQgPSAwOwo+Pj4gICAgICAgICAgY29uc3QgdWludDhfdCAqcDAgPSBwOwo+Pj4KPj4+ICAgICAg
ICAgIGlmIChhdl91dGY4X2RlY29kZSgmY29kZSwgJnAsIGVuZHAsIHRjdHgtCj4+PiBzdHJpbmdf
dmFsaWRhdGlvbl91dGY4X2ZsYWdzKSA8IDApIHsKPj4+IC0gICAgICAgICAgICBBVkJQcmludCBi
cDsKPj4+IC0gICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnAsIDAsIEFWX0JQUklOVF9TSVpF
X0FVVE9NQVRJQyk7Cj4+PiAtICAgICAgICAgICAgYnByaW50X2J5dGVzKCZicCwgcDAsIHAtcDAp
Owo+Pj4gLSAgICAgICAgICAgIGF2X2xvZyh0Y3R4LCBBVl9MT0dfREVCVUcsCj4+PiAtICAgICAg
ICAgICAgICAgICAgICJJbnZhbGlkIFVURi04IHNlcXVlbmNlICVzIGZvdW5kIGluIHN0cmluZwo+
PiAnJXMnXG4iLCBicC5zdHIsIHNyYyk7Cj4+PiArICAgICAgICAgICAgYXZfYnByaW50X2NsZWFy
KCZicCk7Cj4+PiArICAgICAgICAgICAgYnByaW50X2J5dGVzKCZicCwgcDAsIHAgLSBwMCk7Cj4+
PiArICAgICAgICAgICAgYXZfbG9nKHRjdHgsIEFWX0xPR19ERUJVRywgIkludmFsaWQgVVRGLTgg
c2VxdWVuY2UgJXMKPj4gZm91bmQgaW4gc3RyaW5nICclcydcbiIsIGJwLnN0ciwgc3JjKTsKPj4+
ICAgICAgICAgICAgICBpbnZhbGlkID0gMTsKPj4+ICAgICAgICAgIH0KPj4+Cj4+PiBAQCAtMzM2
LDcgKzM1NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50Cj4+IHZhbGlkYXRlX3N0cmluZyhBVlRleHRG
b3JtYXRDb250ZXh0ICp0Y3R4LCBjaGFyICoqZHN0cCwgY29uc3QKPj4+ICAgICAgICAgIH0KPj4+
Cj4+PiAgICAgICAgICBpZiAoIWludmFsaWQgfHwgdGN0eC0+c3RyaW5nX3ZhbGlkYXRpb24gPT0K
Pj4gQVZfVEVYVEZPUk1BVF9TVFJJTkdfVkFMSURBVElPTl9JR05PUkUpCj4+PiAtICAgICAgICAg
ICAgYXZfYnByaW50X2FwcGVuZF9kYXRhKCZkc3RidWYsIHAwLCBwLXAwKTsKPj4+ICsgICAgICAg
ICAgICBhdl9icHJpbnRfYXBwZW5kX2RhdGEoJmRzdGJ1ZiwgKGNvbnN0IGNoYXIgKilwMCwgcCAt
Cj4+IHAwKTsKPj4+ICAgICAgfQo+Pj4KPj4+ICAgICAgaWYgKGludmFsaWRfY2hhcnNfbmIgJiYg
dGN0eC0+c3RyaW5nX3ZhbGlkYXRpb24gPT0KPj4gQVZfVEVYVEZPUk1BVF9TVFJJTkdfVkFMSURB
VElPTl9SRVBMQUNFKQo+Pj4gQEAgLTM0Niw2ICszNjQsNyBAQCBzdGF0aWMgaW5saW5lIGludAo+
PiB2YWxpZGF0ZV9zdHJpbmcoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY2hhciAqKmRzdHAs
IGNvbnN0Cj4+Pgo+Pj4gIGVuZDoKPj4+ICAgICAgYXZfYnByaW50X2ZpbmFsaXplKCZkc3RidWYs
IGRzdHApOwo+Pj4gKyAgICBhdl9icHJpbnRfZmluYWxpemUoJmJwLCBOVUxMKTsKPj4+ICAgICAg
cmV0dXJuIHJldDsKPj4+ICB9Cj4+Pgo+Pj4gQEAgLTM1OCwxNyArMzc3LDE4IEBAIHN0cnVjdCB1
bml0X3ZhbHVlIHsKPj4+ICAgICAgY29uc3QgY2hhciAqdW5pdDsKPj4+ICB9Owo+Pj4KPj4+IC1z
dGF0aWMgY2hhciAqdmFsdWVfc3RyaW5nKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNoYXIg
KmJ1ZiwgaW50Cj4+IGJ1Zl9zaXplLCBzdHJ1Y3QgdW5pdF92YWx1ZSB1dikKPj4+ICtzdGF0aWMg
Y2hhciAqdmFsdWVfc3RyaW5nKGNvbnN0IEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNoYXIK
Pj4gKmJ1ZiwgaW50IGJ1Zl9zaXplLCBzdHJ1Y3QgdW5pdF92YWx1ZSB1dikKPj4+ICB7Cj4+PiAg
ICAgIGRvdWJsZSB2YWxkOwo+Pj4gLSAgICBpbnQ2NF90IHZhbGk7Cj4+PiArICAgIGludDY0X3Qg
dmFsaSA9IDA7Cj4+PiAgICAgIGludCBzaG93X2Zsb2F0ID0gMDsKPj4+Cj4+PiAgICAgIGlmICh1
di51bml0ID09IHVuaXRfc2Vjb25kX3N0cikgewo+Pj4gICAgICAgICAgdmFsZCA9IHV2LnZhbC5k
Owo+Pj4gICAgICAgICAgc2hvd19mbG9hdCA9IDE7Cj4+PiAgICAgIH0gZWxzZSB7Cj4+PiAtICAg
ICAgICB2YWxkID0gdmFsaSA9IHV2LnZhbC5pOwo+Pj4gKyAgICAgICAgdmFsZCA9IChkb3VibGUp
dXYudmFsLmk7Cj4+PiArICAgICAgICB2YWxpID0gdXYudmFsLmk7Cj4+PiAgICAgIH0KPj4+Cj4+
PiAgICAgIGlmICh1di51bml0ID09IHVuaXRfc2Vjb25kX3N0ciAmJiB0Y3R4LQo+Pj4gdXNlX3Zh
bHVlX3NleGFnZXNpbWFsX2Zvcm1hdCkgewo+Pj4gQEAgLTM4NywxNyArNDA3LDE3IEBAIHN0YXRp
YyBjaGFyICp2YWx1ZV9zdHJpbmcoQVZUZXh0Rm9ybWF0Q29udGV4dAo+PiAqdGN0eCwgY2hhciAq
YnVmLCBpbnQgYnVmX3NpemUsIHN0Cj4+PiAgICAgICAgICAgICAgaW50NjRfdCBpbmRleDsKPj4+
Cj4+PiAgICAgICAgICAgICAgaWYgKHV2LnVuaXQgPT0gdW5pdF9ieXRlX3N0ciAmJiB0Y3R4LQo+
Pj4gdXNlX2J5dGVfdmFsdWVfYmluYXJ5X3ByZWZpeCkgewo+Pj4gLSAgICAgICAgICAgICAgICBp
bmRleCA9IChpbnQ2NF90KSAobG9nMih2YWxkKSkgLyAxMDsKPj4+IC0gICAgICAgICAgICAgICAg
aW5kZXggPSBhdl9jbGlwKGluZGV4LCAwLAo+PiBGRl9BUlJBWV9FTEVNUyhzaV9wcmVmaXhlcykg
LSAxKTsKPj4+ICsgICAgICAgICAgICAgICAgaW5kZXggPSAoaW50NjRfdCkobG9nMih2YWxkKSAv
IDEwKTsKPj4+ICsgICAgICAgICAgICAgICAgaW5kZXggPSBhdl9jbGlwNjQoaW5kZXgsIDAsCj4+
IEZGX0FSUkFZX0VMRU1TKHNpX3ByZWZpeGVzKSAtIDEpOwo+Pj4gICAgICAgICAgICAgICAgICB2
YWxkIC89IHNpX3ByZWZpeGVzW2luZGV4XS5iaW5fdmFsOwo+Pj4gICAgICAgICAgICAgICAgICBw
cmVmaXhfc3RyaW5nID0gc2lfcHJlZml4ZXNbaW5kZXhdLmJpbl9zdHI7Cj4+PiAgICAgICAgICAg
ICAgfSBlbHNlIHsKPj4+IC0gICAgICAgICAgICAgICAgaW5kZXggPSAoaW50NjRfdCkgKGxvZzEw
KHZhbGQpKSAvIDM7Cj4+PiAtICAgICAgICAgICAgICAgIGluZGV4ID0gYXZfY2xpcChpbmRleCwg
MCwKPj4gRkZfQVJSQVlfRUxFTVMoc2lfcHJlZml4ZXMpIC0gMSk7Cj4+PiArICAgICAgICAgICAg
ICAgIGluZGV4ID0gKGludDY0X3QpKGxvZzEwKHZhbGQpIC8gMyk7Cj4+PiArICAgICAgICAgICAg
ICAgIGluZGV4ID0gYXZfY2xpcDY0KGluZGV4LCAwLAo+PiBGRl9BUlJBWV9FTEVNUyhzaV9wcmVm
aXhlcykgLSAxKTsKPj4+ICAgICAgICAgICAgICAgICAgdmFsZCAvPSBzaV9wcmVmaXhlc1tpbmRl
eF0uZGVjX3ZhbDsKPj4+ICAgICAgICAgICAgICAgICAgcHJlZml4X3N0cmluZyA9IHNpX3ByZWZp
eGVzW2luZGV4XS5kZWNfc3RyOwo+Pj4gICAgICAgICAgICAgIH0KPj4+IC0gICAgICAgICAgICB2
YWxpID0gdmFsZDsKPj4+ICsgICAgICAgICAgICB2YWxpID0gKGludDY0X3QpdmFsZDsKPj4+ICAg
ICAgICAgIH0KPj4+Cj4+PiAgICAgICAgICBpZiAoc2hvd19mbG9hdCB8fCAodGN0eC0+dXNlX3Zh
bHVlX3ByZWZpeCAmJiB2YWxkICE9Cj4+IChpbnQ2NF90KXZhbGQpKQo+Pj4gQEAgLTQyNSw5ICs0
NDUsMTQgQEAgdm9pZCBhdnRleHRfcHJpbnRfdW5pdF9pbnQoQVZUZXh0Rm9ybWF0Q29udGV4dAo+
PiAqdGN0eCwgY29uc3QgY2hhciAqa2V5LCBpbnQgdmFsdWUKPj4+Cj4+PiAgaW50IGF2dGV4dF9w
cmludF9zdHJpbmcoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY29uc3QgY2hhciAqa2V5LAo+
PiBjb25zdCBjaGFyICp2YWwsIGludCBmbGFncykKPj4+ICB7Cj4+PiAtICAgIGNvbnN0IHN0cnVj
dCBBVlRleHRGb3JtYXRTZWN0aW9uICpzZWN0aW9uID0gdGN0eC0+c2VjdGlvblt0Y3R4LQo+Pj4g
bGV2ZWxdOwo+Pj4gKyAgICBjb25zdCBBVlRleHRGb3JtYXRTZWN0aW9uICpzZWN0aW9uOwo+Pj4g
ICAgICBpbnQgcmV0ID0gMDsKPj4+Cj4+PiArICAgIGlmICghdGN0eCB8fCAha2V5IHx8ICF2YWwg
fHwgdGN0eC0+bGV2ZWwgPCAwIHx8IHRjdHgtPmxldmVsID49Cj4+IFNFQ1RJT05fTUFYX05CX0xF
VkVMUykKPj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4+Cj4+IENhbiB0aGlz
IGhhcHBlbj8KPj4KPj4+ICsKPj4+ICsgICAgc2VjdGlvbiA9IHRjdHgtPnNlY3Rpb25bdGN0eC0+
bGV2ZWxdOwo+Pj4gKwo+Pj4gICAgICBpZiAodGN0eC0+c2hvd19vcHRpb25hbF9maWVsZHMgPT0g
U0hPV19PUFRJT05BTF9GSUVMRFNfTkVWRVIgfHwKPj4+ICAgICAgICAgICh0Y3R4LT5zaG93X29w
dGlvbmFsX2ZpZWxkcyA9PSBTSE9XX09QVElPTkFMX0ZJRUxEU19BVVRPCj4+PiAgICAgICAgICAg
ICAgJiYgKGZsYWdzICYgQVZfVEVYVEZPUk1BVF9QUklOVF9TVFJJTkdfT1BUSU9OQUwpCj4+PiBA
QCAtNDYyLDcgKzQ4Nyw3IEBAIGludCBhdnRleHRfcHJpbnRfc3RyaW5nKEFWVGV4dEZvcm1hdENv
bnRleHQKPj4gKnRjdHgsIGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqCj4+PiAgdm9pZCBh
dnRleHRfcHJpbnRfcmF0aW9uYWwoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY29uc3QgY2hh
cgo+PiAqa2V5LCBBVlJhdGlvbmFsIHEsIGNoYXIgc2VwKQo+Pj4gIHsKPj4+ICAgICAgQVZCUHJp
bnQgYnVmOwo+Pj4gLSAgICBhdl9icHJpbnRfaW5pdCgmYnVmLCAwLCBBVl9CUFJJTlRfU0laRV9B
VVRPTUFUSUMpOwo+Pj4gKyAgICBhdl9icHJpbnRfaW5pdCgmYnVmLCAwLCBBVl9CUFJJTlRfU0la
RV9VTkxJTUlURUQpOwo+Pgo+PiBUaGlzIGlzIHN0cmljdGx5IHdvcnNlIHRoYW4gd2hhdCB3YXMg
aGVyZSBiZWZvcmU6IFdpdGggVU5MSU1JVEVEIHlvdQo+PiB3b3VsZCBoYXZlIGEgbWVtbGVhayBp
biBjYXNlIHRoZSBpbnRlcm5hbCBidWZmZXIgd291bGRuJ3Qgc3VmZmljZS4KPj4gKEJ1dCBhbnl3
YXksIHRoaXMgc2hvdWxkIHVzZSBzbnByaW50Zi4gSSBqdXN0IHNlbnQgYSBwYXRjaCBmb3IgdGhp
cy4pCj4gCj4gVG8gYmUgaG9uZXN0LCBJIGRvbid0IHNlZSBtdWNoIHZhbHVlIGluIEFWX0JQUklO
VF9TSVpFX0FVVE9NQVRJQy4KPiBXaGVuIEkgd291bGQgbmVlZCB0byBjaGVjayB0aGUgcmV0dXJu
IHZhbHVlcyBvZiBhbGwgYnByaW50IG9wZXJhdGlvbnMsCj4gYWxsIHRoZSBjb252ZW5pZW5jZSB3
b3VsZCBnbyBvdmVyIGJvYXJkIGluc3RhbnRseS4gVXNpbmcgCj4gQVZfQlBSSU5UX1NJWkVfQVVU
T01BVElDIHdpdGhvdXQgcmV0dXJuIHZhbHVlIGNoZWNraW5nIGlzIGVycm9yLXByb25lCj4gYW5k
IGNhbiBjYXVzZSBlcnJvcnMgd2hpY2ggbWlnaHQgYmUgaGFyZCB0byBpZGVudGlmeS4KPiBPbiB0
aGUgb3RoZXIgc2lkZSwgaWRlbnRpZnlpbmcgcGxhY2VzIGluIGNvZGUgd2hlcmUgQVZfQlBSSU5U
X1NJWkVfVU5MSU1JVEVECj4gaXMgdXNlZCBhbmQgZmluYWxpemUgaXMgbmVlZGVkIGlzIGEgbG90
IGVhc2llciBhbmQgZG9lc24ndCBldmVuIG5lZWQKPiBhIHNwZWNpZmljIGNhc2UgYW5kL29yIGRl
YnVnZ2luZyB0byBmaW5kIG91dC4KPiAKPiBJbiB0aGUgd29yc3QgY2FzZSwgSSdkIHN0aWxsIHBy
ZWZlciBhIG1lbW9yeSBsZWFrIG92ZXIgaW5jb3JyZWN0IAo+IGJlaGF2aW9yIChvciB3ZWxsIC0g
YWx3YXlzIGRlcGVuZHMgb24gdGhlIGNhc2UpLiBCeSB0aGF0IEkgZG9uJ3QgbWVhbiAKPiBlcnJv
cnMgdGhhdCBhcmUgcmVwb3J0ZWQgYW5kIGNhdXNpbmcgZmFpbHVyZSBidXQgdGhvc2UgdGhpbmdz
IHRoYXQgYXJlCj4gZmFpbGluZyBzaWxlbnRseSBhbmQgYXJlIGhhcmQgdG8gbm90aWNlIG9yIHRy
YWNlIGJhY2sgd2hlbiBub3RpY2luZy4KPiAKPiBTdXJlbHkgb3RoZXJzIG1heSBzZWUgaXQgZGlm
ZmVyZW50bHkuCj4gCj4gCj4gCj4+Cj4+PiAgICAgIGF2X2JwcmludGYoJmJ1ZiwgIiVkJWMlZCIs
IHEubnVtLCBzZXAsIHEuZGVuKTsKPj4+ICAgICAgYXZ0ZXh0X3ByaW50X3N0cmluZyh0Y3R4LCBr
ZXksIGJ1Zi5zdHIsIDApOwo+Pj4gIH0KPj4+IEBAIC00NzAsMTIgKzQ5NSwxMSBAQCB2b2lkIGF2
dGV4dF9wcmludF9yYXRpb25hbChBVlRleHRGb3JtYXRDb250ZXh0Cj4+ICp0Y3R4LCBjb25zdCBj
aGFyICprZXksIEFWUmF0aW9uYQo+Pj4gIHZvaWQgYXZ0ZXh0X3ByaW50X3RpbWUoQVZUZXh0Rm9y
bWF0Q29udGV4dCAqdGN0eCwgY29uc3QgY2hhciAqa2V5LAo+Pj4gICAgICAgICAgICAgICAgICAg
ICAgICAgaW50NjRfdCB0cywgY29uc3QgQVZSYXRpb25hbCAqdGltZV9iYXNlLCBpbnQKPj4gaXNf
ZHVyYXRpb24pCj4+PiAgewo+Pj4gLSAgICBjaGFyIGJ1ZlsxMjhdOwo+Pj4gLQo+Pj4gICAgICBp
ZiAoKCFpc19kdXJhdGlvbiAmJiB0cyA9PSBBVl9OT1BUU19WQUxVRSkgfHwgKGlzX2R1cmF0aW9u
ICYmCj4+IHRzID09IDApKSB7Cj4+PiAgICAgICAgICBhdnRleHRfcHJpbnRfc3RyaW5nKHRjdHgs
IGtleSwgIk4vQSIsCj4+IEFWX1RFWFRGT1JNQVRfUFJJTlRfU1RSSU5HX09QVElPTkFMKTsKPj4+
ICAgICAgfSBlbHNlIHsKPj4+IC0gICAgICAgIGRvdWJsZSBkID0gdHMgKiBhdl9xMmQoKnRpbWVf
YmFzZSk7Cj4+PiArICAgICAgICBjaGFyIGJ1ZlsxMjhdOwo+Pj4gKyAgICAgICAgZG91YmxlIGQg
PSBhdl9xMmQoKnRpbWVfYmFzZSkgKiAoZG91YmxlKXRzOwo+Pgo+PiBXZSBhY3R1YWxseSB0cnkg
dG8gYXZvaWQgZXhwbGljaXQgY2FzdHMgd2hlcmUgcG9zc2libGUuCj4gCj4gCj4gSSdsbCBhbnN3
ZXIgdGhhdCBzZXBhcmF0ZWx5Lgo+IAo+IAo+IAo+Pj4gICAgICAgICAgc3RydWN0IHVuaXRfdmFs
dWUgdXY7Cj4+PiAgICAgICAgICB1di52YWwuZCA9IGQ7Cj4+PiAgICAgICAgICB1di51bml0ID0g
dW5pdF9zZWNvbmRfc3RyOwo+Pj4gQEAgLTQ5Niw3ICs1MjAsOCBAQCB2b2lkIGF2dGV4dF9wcmlu
dF9kYXRhKEFWVGV4dEZvcm1hdENvbnRleHQKPj4gKnRjdHgsIGNvbnN0IGNoYXIgKm5hbWUsCj4+
PiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBpbnQgc2l6ZSkK
Pj4+ICB7Cj4+PiAgICAgIEFWQlByaW50IGJwOwo+Pj4gLSAgICBpbnQgb2Zmc2V0ID0gMCwgbCwg
aTsKPj4+ICsgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKPj4+ICsgICAgaW50IGwsIGk7Cj4+Pgo+
Pj4gICAgICBhdl9icHJpbnRfaW5pdCgmYnAsIDAsIEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRCk7
Cj4+PiAgICAgIGF2X2JwcmludGYoJmJwLCAiXG4iKTsKPj4+IEBAIC01MjMsMjUgKzU0OCwyOSBA
QCB2b2lkIGF2dGV4dF9wcmludF9kYXRhKEFWVGV4dEZvcm1hdENvbnRleHQKPj4gKnRjdHgsIGNv
bnN0IGNoYXIgKm5hbWUsCj4+PiAgdm9pZCBhdnRleHRfcHJpbnRfZGF0YV9oYXNoKEFWVGV4dEZv
cm1hdENvbnRleHQgKnRjdHgsIGNvbnN0IGNoYXIKPj4gKm5hbWUsCj4+PiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIGludCBzaXplKQo+Pj4gIHsKPj4+
IC0gICAgY2hhciAqcCwgYnVmW0FWX0hBU0hfTUFYX1NJWkUgKiAyICsgNjRdID0geyAwIH07Cj4+
PiArICAgIGNoYXIgYnVmW0FWX0hBU0hfTUFYX1NJWkUgKiAyICsgNjRdID0geyAwIH07Cj4+PiAr
ICAgIGludCBsZW47Cj4+Pgo+Pj4gICAgICBpZiAoIXRjdHgtPmhhc2gpCj4+PiAgICAgICAgICBy
ZXR1cm47Cj4+Pgo+Pj4gICAgICBhdl9oYXNoX2luaXQodGN0eC0+aGFzaCk7Cj4+PiAgICAgIGF2
X2hhc2hfdXBkYXRlKHRjdHgtPmhhc2gsIGRhdGEsIHNpemUpOwo+Pj4gLSAgICBzbnByaW50Zihi
dWYsIHNpemVvZihidWYpLCAiJXM6IiwgYXZfaGFzaF9nZXRfbmFtZSh0Y3R4LQo+Pj4gaGFzaCkp
Owo+Pj4gLSAgICBwID0gYnVmICsgc3RybGVuKGJ1Zik7Cj4+PiAtICAgIGF2X2hhc2hfZmluYWxf
aGV4KHRjdHgtPmhhc2gsIHAsIGJ1ZiArIHNpemVvZihidWYpIC0gcCk7Cj4+PiArICAgIGxlbiA9
IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlczoiLCBhdl9oYXNoX2dldF9uYW1lKHRjdHgt
Cj4+PiBoYXNoKSk7Cj4+PiArICAgIGF2X2hhc2hfZmluYWxfaGV4KHRjdHgtPmhhc2gsICh1aW50
OF90ICopJmJ1ZltsZW5dLAo+PiAoaW50KXNpemVvZihidWYpIC0gbGVuKTsKPj4KPj4gSXMgaXQg
Z3VhcmFudGVlZCB0aGF0IHRoZSBvdXRwdXQgb2Ygc25wcmludGYoKSBpcyBub3QgdHJ1bmNhdGVk
Pwo+IAo+IE1BWF9IQVNIX05BTUVfU0laRSBpcyAxMSBhbmQgQVZfSEFTSF9NQVhfU0laRSA2NCwg
bWFrZSAxOTIgLSAxMSA+IDAKPiAKPiAKPj4KPj4+ICAgICAgYXZ0ZXh0X3ByaW50X3N0cmluZyh0
Y3R4LCBuYW1lLCBidWYsIDApOwo+Pj4gIH0KPj4+Cj4+PiAgdm9pZCBhdnRleHRfcHJpbnRfaW50
ZWdlcnMoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY29uc3QgY2hhcgo+PiAqbmFtZSwKPj4+
IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGF0YSwgaW50IHNp
emUsIGNvbnN0Cj4+IGNoYXIgKmZvcm1hdCwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNvbHVtbnMsIGludCBieXRlcywgaW50Cj4+IG9mZnNldF9hZGQpCj4+PiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZGF0YSwgaW50IHNpemUsIGNvbnN0
IGNoYXIKPj4gKmZvcm1hdCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29s
dW1ucywgaW50IGJ5dGVzLCBpbnQgb2Zmc2V0X2FkZCkKPj4+ICB7Cj4+PiAgICAgIEFWQlByaW50
IGJwOwo+Pj4gLSAgICBpbnQgb2Zmc2V0ID0gMCwgbCwgaTsKPj4+ICsgICAgdW5zaWduZWQgb2Zm
c2V0ID0gMDsKPj4+ICsgICAgaW50IGwsIGk7Cj4+PiArCj4+PiArICAgIGlmICghbmFtZSB8fCAh
ZGF0YSB8fCAhZm9ybWF0IHx8IGNvbHVtbnMgPD0gMCB8fCBieXRlcyA8PSAwKQo+Pj4gKyAgICAg
ICAgcmV0dXJuOwo+Pgo+PiBDYW4gdGhpcyBoYXBwZW4/Cj4gCj4gU3VyZSwgYXMgYSBwdWJsaWMg
QVBJLiBPZiBjb3Vyc2UsIG9uZSBjYW4gc3BlbmQgdGltZSwgdHJ5aW5nIHRvIGRldGVybWluZQo+
IHdoaWNoIGNvbmRpdGlvbnMgYXJlIHJlYWxpc3RpY2FsbHkgcG9zc2libGUgb3Igbm90LiBCdXQg
dGhhdCBpbnRyb2R1Y2VzCj4gcG90ZW50aWFsIG9mIGh1bWFuIGVycm9yLCBzbyAtIHVubGVzcyBp
dCdzIGEgcmVhbGx5IGhvdCBwYXRoLCBvbmUgY2hlY2sKPiB0byBtYW55IGlzIGJldHRlciB0aGFu
IG9uZSB0b28gbGVzcy4KPiAKPiAKPj4KPj4+Cj4+PiAgICAgIGF2X2JwcmludF9pbml0KCZicCwg
MCwgQVZfQlBSSU5UX1NJWkVfVU5MSU1JVEVEKTsKPj4+ICAgICAgYXZfYnByaW50ZigmYnAsICJc
biIpOwo+Pj4gQEAgLTYwNywxMiArNjM2LDE4IEBAIGludAo+PiBhdnRleHR3cml0ZXJfY29udGV4
dF9vcGVuKEFWVGV4dFdyaXRlckNvbnRleHQgKipwd2N0eCwgY29uc3QKPj4gQVZUZXh0V3JpdGVy
ICp3Cj4+PiAgICAgIEFWVGV4dFdyaXRlckNvbnRleHQgKndjdHg7Cj4+PiAgICAgIGludCByZXQg
PSAwOwo+Pj4KPj4+IC0gICAgaWYgKCEod2N0eCA9IGF2X21hbGxvY3ooc2l6ZW9mKEFWVGV4dFdy
aXRlckNvbnRleHQpKSkpIHsKPj4+ICsgICAgaWYgKCFwd2N0eCB8fCAhd3JpdGVyKQo+Pj4gKyAg
ICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPj4+ICsKPj4+ICsgICAgaWYgKCF3cml0ZXIt
PnByaXZfc2l6ZSAmJiB3cml0ZXItPnByaXZfY2xhc3MpCj4+Cj4+IFN0dWZmIGxpa2UgdGhpcyBz
aG91bGQgbmV2ZXIgaGFwcGVuIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZQo+PiBjaGVja2Vk
Lgo+IAo+IE9LLgo+IAo+Pgo+Pj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPj4+
ICsKPj4+ICsgICAgaWYgKCEoKHdjdHggPSBhdl9tYWxsb2N6KHNpemVvZihBVlRleHRXcml0ZXJD
b250ZXh0KSkpKSkgewo+Pj4gICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOwo+Pj4gICAg
ICAgICAgZ290byBmYWlsOwo+Pj4gICAgICB9Cj4+Pgo+Pj4gLSAgICBpZiAoISh3Y3R4LT5wcml2
ID0gYXZfbWFsbG9jeih3cml0ZXItPnByaXZfc2l6ZSkpKSB7Cj4+PiArICAgIGlmICh3cml0ZXIt
PnByaXZfc2l6ZSAmJiAhKCh3Y3R4LT5wcml2ID0gYXZfbWFsbG9jeih3cml0ZXItCj4+PiBwcml2
X3NpemUpKSkpIHsKPj4+ICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKPj4+ICAgICAg
ICAgIGdvdG8gZmFpbDsKPj4+ICAgICAgfQo+Pj4gZGlmZiAtLWdpdCBhL2ZmdG9vbHMvdGV4dGZv
cm1hdC9hdnRleHRmb3JtYXQuaAo+PiBiL2ZmdG9vbHMvdGV4dGZvcm1hdC9hdnRleHRmb3JtYXQu
aAo+Pj4gaW5kZXggMDM1NjRkMTRhNy4uZTUxOTA5NGY0ZiAxMDA2NDQKPj4+IC0tLSBhL2ZmdG9v
bHMvdGV4dGZvcm1hdC9hdnRleHRmb3JtYXQuaAo+Pj4gKysrIGIvZmZ0b29scy90ZXh0Zm9ybWF0
L2F2dGV4dGZvcm1hdC5oCj4+PiBAQCAtMjEsOSArMjEsNyBAQAo+Pj4gICNpZm5kZWYgRkZUT09M
U19URVhURk9STUFUX0FWVEVYVEZPUk1BVF9ICj4+PiAgI2RlZmluZSBGRlRPT0xTX1RFWFRGT1JN
QVRfQVZURVhURk9STUFUX0gKPj4+Cj4+PiAtI2luY2x1ZGUgPHN0ZGRlZi5oPgo+Pj4gICNpbmNs
dWRlIDxzdGRpbnQuaD4KPj4+IC0jaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKPj4+
ICAjaW5jbHVkZSAibGliYXZ1dGlsL2RpY3QuaCIKPj4+ICAjaW5jbHVkZSAibGliYXZmb3JtYXQv
YXZpby5oIgo+Pj4gICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50LmgiCj4+PiBAQCAtMTAzLDcg
KzEwMSw3IEBAIHN0cnVjdCBBVlRleHRGb3JtYXRDb250ZXh0IHsKPj4+ICAgICAgdW5zaWduZWQg
aW50Cj4+IG5iX2l0ZW1fdHlwZVtTRUNUSU9OX01BWF9OQl9MRVZFTFNdW1NFQ1RJT05fTUFYX05C
X1NFQ1RJT05TXTsKPj4+Cj4+PiAgICAgIC8qKiBzZWN0aW9uIHBlciBlYWNoIGxldmVsICovCj4+
PiAtICAgIGNvbnN0IHN0cnVjdCBBVlRleHRGb3JtYXRTZWN0aW9uCj4+ICpzZWN0aW9uW1NFQ1RJ
T05fTUFYX05CX0xFVkVMU107Cj4+PiArICAgIGNvbnN0IEFWVGV4dEZvcm1hdFNlY3Rpb24gKnNl
Y3Rpb25bU0VDVElPTl9NQVhfTkJfTEVWRUxTXTsKPj4+ICAgICAgQVZCUHJpbnQgc2VjdGlvbl9w
YnVmW1NFQ1RJT05fTUFYX05CX0xFVkVMU107IC8vLzwgZ2VuZXJpYwo+PiBwcmludCBidWZmZXIg
ZGVkaWNhdGVkIHRvIGVhY2ggc2VjdGlvbiwKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vLyAgdXNlZCBieQo+PiB2YXJpb3VzIGZvcm1hdHRl
cnMKPj4+Cj4+PiBAQCAtMTI0LDcgKzEyMiw3IEBAIHN0cnVjdCBBVlRleHRGb3JtYXRDb250ZXh0
IHsKPj4+ICAjZGVmaW5lIEFWX1RFWFRGT1JNQVRfUFJJTlRfU1RSSU5HX1ZBTElEQVRFIDIKPj4+
Cj4+PiAgaW50IGF2dGV4dF9jb250ZXh0X29wZW4oQVZUZXh0Rm9ybWF0Q29udGV4dCAqKnB0Y3R4
LCBjb25zdAo+PiBBVlRleHRGb3JtYXR0ZXIgKmZvcm1hdHRlciwgQVZUZXh0V3JpdGVyQ29udGV4
dCAqd3JpdGVyX2NvbnRleHQsIGNvbnN0Cj4+IGNoYXIgKmFyZ3MsCj4+PiAtICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RydWN0IEFWVGV4dEZvcm1hdFNlY3Rpb24gKnNlY3Rpb25zLAo+
PiBpbnQgbmJfc2VjdGlvbnMsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVZU
ZXh0Rm9ybWF0U2VjdGlvbiAqc2VjdGlvbnMsIGludAo+PiBuYl9zZWN0aW9ucywKPj4+ICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2hvd192YWx1ZV91bml0LAo+Pj4gICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCB1c2VfdmFsdWVfcHJlZml4LAo+Pj4gICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCB1c2VfYnl0ZV92YWx1ZV9iaW5hcnlfcHJlZml4LAo+Pj4gZGlmZiAtLWdpdCBh
L2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl9kZWZhdWx0LmMKPj4gYi9mZnRvb2xzL3RleHRmb3JtYXQv
dGZfZGVmYXVsdC5jCj4+PiBpbmRleCAxNGVmOWZlOGY5Li4zYjA1ZDI1ZjM2IDEwMDY0NAo+Pj4g
LS0tIGEvZmZ0b29scy90ZXh0Zm9ybWF0L3RmX2RlZmF1bHQuYwo+Pj4gKysrIGIvZmZ0b29scy90
ZXh0Zm9ybWF0L3RmX2RlZmF1bHQuYwo+Pj4gQEAgLTcwLDkgKzcwLDEwIEBAIERFRklORV9GT1JN
QVRURVJfQ0xBU1MoZGVmYXVsdCk7Cj4+PiAgLyogbGFtZSB1cHBlcmNhc2luZyByb3V0aW5lLCBh
c3N1bWVzIHRoZSBzdHJpbmcgaXMgbG93ZXIgY2FzZSBBU0NJSQo+PiAqLwo+Pj4gIHN0YXRpYyBp
bmxpbmUgY2hhciAqdXBjYXNlX3N0cmluZyhjaGFyICpkc3QsIHNpemVfdCBkc3Rfc2l6ZSwgY29u
c3QKPj4gY2hhciAqc3JjKQo+Pj4gIHsKPj4+IC0gICAgaW50IGk7Cj4+PiArICAgIHVuc2lnbmVk
IGk7Cj4+PiArCj4+Cj4+IFdoeSBub3Qgc2l6ZV90Pwo+IAo+IHNlZSBhYm92ZS4KPiAKPj4KPj4+
ICAgICAgZm9yIChpID0gMDsgc3JjW2ldICYmIGkgPCBkc3Rfc2l6ZSAtIDE7IGkrKykKPj4+IC0g
ICAgICAgIGRzdFtpXSA9IGF2X3RvdXBwZXIoc3JjW2ldKTsKPj4+ICsgICAgICAgIGRzdFtpXSA9
IChjaGFyKWF2X3RvdXBwZXIoc3JjW2ldKTsKPj4+ICAgICAgZHN0W2ldID0gMDsKPj4+ICAgICAg
cmV0dXJuIGRzdDsKPj4+ICB9Cj4+PiBAQCAtMTA4LDYgKzEwOSw5IEBAIHN0YXRpYyB2b2lkCj4+
IGRlZmF1bHRfcHJpbnRfc2VjdGlvbl9mb290ZXIoQVZUZXh0Rm9ybWF0Q29udGV4dCAqd2N0eCkK
Pj4+ICAgICAgY29uc3Qgc3RydWN0IEFWVGV4dEZvcm1hdFNlY3Rpb24gKnNlY3Rpb24gPSB3Y3R4
LT5zZWN0aW9uW3djdHgtCj4+PiBsZXZlbF07Cj4+PiAgICAgIGNoYXIgYnVmWzMyXTsKPj4+Cj4+
PiArICAgIGlmICghc2VjdGlvbikKPj4+ICsgICAgICAgIHJldHVybjsKPj4KPj4gQ2FuIHRoaXMg
aGFwcGVuPwo+IAo+IE5vLCBidXQgaGVyZSBpdCBzaG91bGQgYWN0dWFsbHkgY2FsbCB0aGUgZnVu
Y3Rpb24gaW4gdGZfaW50ZXJuYWwgYW5kIHdpdGgKPiB0aGF0IGl0IGNhbiBoYXBwZW4uIFRoaXMg
bXVzdCBoYXZlIGdvdHRlbiBsb3N0IGZyb20gcmViYXNpbmcuCj4gCj4gCj4+PiArCj4+PiAgICAg
IGlmIChkZWYtPm5vcHJpbnRfd3JhcHBlcnMgfHwgZGVmLT5uZXN0ZWRfc2VjdGlvblt3Y3R4LT5s
ZXZlbF0pCj4+PiAgICAgICAgICByZXR1cm47Cj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2ZmdG9vbHMv
dGV4dGZvcm1hdC90Zl9pbmkuYwo+PiBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl9pbmkuYwo+Pj4g
aW5kZXggOWUxYWE2MGUwOS4uZWM0NzFmZDQ4MCAxMDA2NDQKPj4+IC0tLSBhL2ZmdG9vbHMvdGV4
dGZvcm1hdC90Zl9pbmkuYwo+Pj4gKysrIGIvZmZ0b29scy90ZXh0Zm9ybWF0L3RmX2luaS5jCj4+
PiBAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgY2hhciAqaW5pX2VzY2FwZV9zdHIoQVZCUHJpbnQg
KmRzdCwgY29uc3QKPj4gY2hhciAqc3JjKQo+Pj4gICAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdo
ICovCj4+PiAgICAgICAgICBkZWZhdWx0Ogo+Pj4gICAgICAgICAgICAgIGlmICgodW5zaWduZWQg
Y2hhciljIDwgMzIpCj4+PiAtICAgICAgICAgICAgICAgIGF2X2JwcmludGYoZHN0LCAiXFx4MDAl
MDJ4IiwgYyAmIDB4ZmYpOwo+Pj4gKyAgICAgICAgICAgICAgICBhdl9icHJpbnRmKGRzdCwgIlxc
eDAwJTAyeCIsICh1bnNpZ25lZCBjaGFyKWMpOwo+Pj4gICAgICAgICAgICAgIGVsc2UKPj4+ICAg
ICAgICAgICAgICAgICAgYXZfYnByaW50X2NoYXJzKGRzdCwgYywgMSk7Cj4+PiAgICAgICAgICAg
ICAgYnJlYWs7Cj4+PiBkaWZmIC0tZ2l0IGEvZmZ0b29scy90ZXh0Zm9ybWF0L3RmX2pzb24uYwo+
PiBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl9qc29uLmMKPj4+IGluZGV4IDI0ODM4YjM1ZWMuLmYy
ODY4MzhkM2MgMTAwNjQ0Cj4+PiAtLS0gYS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfanNvbi5jCj4+
PiArKysgYi9mZnRvb2xzL3RleHRmb3JtYXQvdGZfanNvbi5jCj4+PiBAQCAtODIsMTMgKzgyLDE4
IEBAIHN0YXRpYyBjb25zdCBjaGFyICpqc29uX2VzY2FwZV9zdHIoQVZCUHJpbnQKPj4gKmRzdCwg
Y29uc3QgY2hhciAqc3JjLCB2b2lkICpsb2dfY3R4Cj4+PiAgICAgIHN0YXRpYyBjb25zdCBjaGFy
IGpzb25fc3Vic3RbXSAgPSB7ICciJywgJ1xcJywgICdiJywgICdmJywKPj4gJ24nLCAgJ3InLCAg
J3QnLCAwIH07Cj4+PiAgICAgIGNvbnN0IGNoYXIgKnA7Cj4+Pgo+Pj4gKyAgICBpZiAoIXNyYykg
ewo+Pj4gKyAgICAgICAgYXZfbG9nKGxvZ19jdHgsIEFWX0xPR19FUlJPUiwgImpzb25fZXNjYXBl
X3N0cjogTlVMTCBzb3VyY2UKPj4gc3RyaW5nXG4iKTsKPj4+ICsgICAgICAgIHJldHVybiBOVUxM
Owo+Pj4gKyAgICB9Cj4+Cj4+IENhbiB0aGlzIGV2ZW4gaGFwcGVuPwo+Pgo+Pj4gKwo+Pj4gICAg
ICBmb3IgKHAgPSBzcmM7ICpwOyBwKyspIHsKPj4+ICAgICAgICAgIGNoYXIgKnMgPSBzdHJjaHIo
anNvbl9lc2NhcGUsICpwKTsKPj4+ICAgICAgICAgIGlmIChzKSB7Cj4+PiAgICAgICAgICAgICAg
YXZfYnByaW50X2NoYXJzKGRzdCwgJ1xcJywgMSk7Cj4+PiAgICAgICAgICAgICAgYXZfYnByaW50
X2NoYXJzKGRzdCwganNvbl9zdWJzdFtzIC0ganNvbl9lc2NhcGVdLCAxKTsKPj4+ICAgICAgICAg
IH0gZWxzZSBpZiAoKHVuc2lnbmVkIGNoYXIpKnAgPCAzMikgewo+Pj4gLSAgICAgICAgICAgIGF2
X2JwcmludGYoZHN0LCAiXFx1MDAlMDJ4IiwgKnAgJiAweGZmKTsKPj4+ICsgICAgICAgICAgICBh
dl9icHJpbnRmKGRzdCwgIlxcdTAwJTAyeCIsICh1bnNpZ25lZCBjaGFyKSpwKTsKPj4+ICAgICAg
ICAgIH0gZWxzZSB7Cj4+PiAgICAgICAgICAgICAgYXZfYnByaW50X2NoYXJzKGRzdCwgKnAsIDEp
Owo+Pj4gICAgICAgICAgfQo+Pj4gQEAgLTEwNyw2ICsxMTIsNyBAQCBzdGF0aWMgdm9pZAo+PiBq
c29uX3ByaW50X3NlY3Rpb25faGVhZGVyKEFWVGV4dEZvcm1hdENvbnRleHQgKndjdHgsIGNvbnN0
IHZvaWQgKmRhdAo+Pj4gICAgICAgICAgd2N0eC0+c2VjdGlvblt3Y3R4LT5sZXZlbC0xXSA6IE5V
TEw7Cj4+Pgo+Pj4gICAgICBpZiAod2N0eC0+bGV2ZWwgJiYgd2N0eC0+bmJfaXRlbVt3Y3R4LT5s
ZXZlbC0xXSkKPj4+ICsgICAgaWYgKHdjdHgtPmxldmVsICYmIHdjdHgtPm5iX2l0ZW1bd2N0eC0+
bGV2ZWwgLSAxXSkKPj4+ICAgICAgICAgIHdyaXRlcl9wdXRfc3RyKHdjdHgsICIsXG4iKTsKPj4+
Cj4+PiAgICAgIGlmIChzZWN0aW9uLT5mbGFncyAmIEFWX1RFWFRGT1JNQVRfU0VDVElPTl9GTEFH
X0lTX1dSQVBQRVIpIHsKPj4+IGRpZmYgLS1naXQgYS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfeG1s
LmMKPj4gYi9mZnRvb2xzL3RleHRmb3JtYXQvdGZfeG1sLmMKPj4+IGluZGV4IDc2MjcxZGJhYTYu
LmVjZWVkYTgxZTUgMTAwNjQ0Cj4+PiAtLS0gYS9mZnRvb2xzL3RleHRmb3JtYXQvdGZfeG1sLmMK
Pj4+ICsrKyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90Zl94bWwuYwo+Pj4gQEAgLTE4LDEwICsxOCw3
IEBACj4+PiAgICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQQo+PiAwMjExMC0xMzAxIFVTQQo+Pj4gICAqLwo+Pj4KPj4+IC0jaW5j
bHVkZSA8bGltaXRzLmg+Cj4+PiAtI2luY2x1ZGUgPHN0ZGFyZy5oPgo+Pj4gICNpbmNsdWRlIDxz
dGRpbnQuaD4KPj4+IC0jaW5jbHVkZSA8c3RkaW8uaD4KPj4+ICAjaW5jbHVkZSA8c3RyaW5nLmg+
Cj4+Pgo+Pj4gICNpbmNsdWRlICJhdnRleHRmb3JtYXQuaCIKPj4+IGRpZmYgLS1naXQgYS9mZnRv
b2xzL3RleHRmb3JtYXQvdHdfYXZpby5jCj4+IGIvZmZ0b29scy90ZXh0Zm9ybWF0L3R3X2F2aW8u
Ywo+Pj4gaW5kZXggZDMzNWQzNWE1Ni4uM2M3NDkyYWEwNiAxMDA2NDQKPj4+IC0tLSBhL2ZmdG9v
bHMvdGV4dGZvcm1hdC90d19hdmlvLmMKPj4+ICsrKyBiL2ZmdG9vbHMvdGV4dGZvcm1hdC90d19h
dmlvLmMKPj4+IEBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIGlvX3c4KEFWVGV4dFdyaXRl
ckNvbnRleHQgKndjdHgsIGludAo+PiBiKQo+Pj4gIHN0YXRpYyB2b2lkIGlvX3B1dF9zdHIoQVZU
ZXh0V3JpdGVyQ29udGV4dCAqd2N0eCwgY29uc3QgY2hhciAqc3RyKQo+Pj4gIHsKPj4+ICAgICAg
SU9Xcml0ZXJDb250ZXh0ICpjdHggPSB3Y3R4LT5wcml2Owo+Pj4gLSAgICBhdmlvX3dyaXRlKGN0
eC0+YXZpb19jb250ZXh0LCBzdHIsIHN0cmxlbihzdHIpKTsKPj4+ICsgICAgYXZpb193cml0ZShj
dHgtPmF2aW9fY29udGV4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzdHIsCj4+IChpbnQpc3Ry
bGVuKHN0cikpOwo+Pj4gIH0KPj4+Cj4+PiAgc3RhdGljIHZvaWQgaW9fcHJpbnRmKEFWVGV4dFdy
aXRlckNvbnRleHQgKndjdHgsIGNvbnN0IGNoYXIgKmZtdCwKPj4gLi4uKQo+Pj4gQEAgLTg5LDEw
ICs4OSwxMiBAQCBjb25zdCBBVlRleHRXcml0ZXIgYXZ0ZXh0d3JpdGVyX2F2aW8gPSB7Cj4+Pgo+
Pj4gIGludCBhdnRleHR3cml0ZXJfY3JlYXRlX2ZpbGUoQVZUZXh0V3JpdGVyQ29udGV4dCAqKnB3
Y3R4LCBjb25zdAo+PiBjaGFyICpvdXRwdXRfZmlsZW5hbWUsIGludCBjbG9zZV9vbl91bmluaXQp
Cj4+PiAgewo+Pj4gKyAgICBpZiAoIXB3Y3R4IHx8ICFvdXRwdXRfZmlsZW5hbWUgfHwgIW91dHB1
dF9maWxlbmFtZVswXSkKPj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4+Cj4+
IENhbiB0aGlzIGhhcHBlbj8KPiAKPiBXaGVuIHB1YmxpYyAtIHllcy4KCkNhbiBpdCBoYXBwZW4g
bm93PwoKPiAKPiAKPiBHZW5lcmFsbHksIEkgd29uZGVyOiBkb24ndCB5b3UgZmluZCBpdCByaXNr
eSB0byBtYWtlIGRlY2lzaW9ucyBhYm91dAo+IGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyB0aGF0
IGFyZSBiYXNlZCBvbiBrbm93bGVkZ2UgYWJvdXQgdGhlIGNhbGxpbmcKPiBjb2RlPyAoImNhbiB0
aGlzIGhhcHBlbj8iKQo+IEkgbWVhbiwgdGhlIGNhbGxpbmcgY29kZSBkb2Vzbid0IGtub3cgYWJv
dXQgdGhlIGFzc3VtcHRpb25zIHlvdSAKPiB3ZXJlIG1ha2luZyBhbmQgb24gd2hpY2ggYmVoYXZp
b3IgdGhlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGJlIHJlbHlpbmcgb24uCgpOb3QgcHJvdmlkaW5n
IGEgcG9pbnRlciB0byBzdG9yZSB0aGUgQVZUZXh0V3JpdGVyQ29udGV4dCogaXMgaW5zYW5lIGFu
ZAphIHByb2dyYW1tZXIgZXJyb3IuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4uIERvaW5nIHNvIHNo
b3VsZCBsZWFkIHRvCnVuZGVmaW5lZCBiZWhhdmlvciAoanVzdCBhcyBlLmcuIHBhc3NpbmcgYSBO
VUxMIHBvaW50ZXIgdG8gc3RybGVuKCkKZG9lcyksIGV2ZW4gd2hlbiBwdWJsaWMuCgo+IAo+IEZv
ciB0aGlzIHBhdGNoc2V0IC0gbW9zdCBpbXBvcnRhbnRseSBmb3IgZXZlcnl0aGluZyBpbiBncmFw
aHByaW50LmMsCj4gSSBoYWQgd29ya2VkIHdpdGggdGhlIGRlbGliZXJhdGUgaW50ZW50aW9uIGZv
ciBjaGVja2luZyBldmVyeXRoaW5nIHRoYXQKPiBjYW4gYmUgY2hlY2tlZC4gCgpZb3Ugc2hvdWxk
IHJhdGhlciBsb29rIGF0IHRoZSBjYWxsc2l0ZXMgYW5kIGVuc3VyZSB0aGF0IHRoZXkgZG9uJ3Qg
Y2FsbAp0aGVzZSBmdW5jdGlvbnMgaW4gYW4gaW5zYW5lIHdheS4KClRoZSBtb3RpdmF0aW9uIGhl
cmUgaXMgdGhlIGZhY3QgdGhhdCBncmFwaC1wcmludGluZwo+IGlzIGFsd2F5cyBydW4gKHdoZW4g
Y29uZmlndXJlZCksIGV2ZW4gd2hlbiB0aGUgRkZtcGVnIHJ1biBoYXMgZmFpbGVkCj4gb3IgZXJy
b3JlZCwgYmVjYXVzZSB0aG9zZSBhcmUgb2Z0ZW4gdGhlIG1vc3QgaW50ZXJlc3RpbmcgY2FzZXMg
Zm9yIAo+IHZpZXdpbmcgdGhlIGdyYXBoIG9yIGdldHRpbmcgdGhlIGRhdGEuIAo+IEJ1dCBpbiBj
YXNlIG9mIGVycm9ycyBhbmQgYWJvcnRpb24sIHdlIGNhbm5vdCBtYWtlIGFueSBhc3N1bXB0aW9u
cyAKPiBhbnltb3JlIGFuZCB0aGUgYW5zd2VyIHRvICJjYW4gdGhpcyBoYXBwZW4/IiBtaWdodCBi
ZSBtb3JlIG9mdGVuICJ5ZXMiCj4gdGhhbiB1c3VhbC4KCk9mIGNvdXJzZSB3ZSBjYW4gbWFrZSBh
c3N1bXB0aW9ucy4gQWxsIHdlIG5lZWQgdG8gZG8gaXMgY2hlY2sgdGhlIG9uZXMKdGhhdCBjYW4g
aGFwcGVuIGF0IHRoZSBjYWxsIHNpdGUuIFdoZXJlIHRoZXkgYmVsb25nLgoKPiAKPiBJIGhvcGUg
eW91IGRvbid0IG1pbmQgdG8gcG9zdHBvbmUgdGhlIHJlbW92YWwgb2YgY2hlY2tzIGEgbGl0dGxl
IGJpdC4KCiJSZW1vdmFsIG9mIGNoZWNrcyI/IFRoaXMgcGF0Y2ggaXMgYWJvdXQgYWRkaW5nIGNo
ZWNrcy4gQ2hlY2tzIHdoaWNoIElNTwpzaG91bGQgbm90IGJlIHRoZXJlIGluIHRoZSBmaXJzdCBw
bGFjZS4KCj4gSXQgZG9lc24ndCBmZWVsIHJpZ2h0IHRvIG1lIG5vdywgdG8gZ28gb3ZlciBhbmQg
anVzdCBibGluZGx5IHJlbW92ZQo+IGFsbCBvZiB0aGVtLiBJIHdvdWxkIHJhdGhlciBsaWtlIHRv
IGRpc2N1c3MgYSBzdHJhdGVneS9wYXR0ZXJuIGluIHRoaXMKPiByZWdhcmQgYWJvdXQgd2hpY2gg
Y2hlY2tzIHNob3VsZCBiZSBtYWRlIGF0IHdoaWNoIHBsYWNlcyBhbmQgd2hlcmUKPiBub3QsIGFs
c28gaW4gdGhlIGxpZ2h0IG9mIHBvc3NpYmx5IGJlaW5nIHByb21vdGVkIHRvIGEgcHVibGljIEFQ
SS4KPiBGaW5hbGx5LCBJJ2QgYWxzbyBsaWtlIHRvIGhlYXIgU3RlZmFub3Mgb3BpbmlvbiAtIGl0
J3MgbW9zdGx5IGhpcyAKPiBjb2RlIHRoYXQgd2UncmUgbW92aW5nIGFyb3VuZCBoZXJlIPCfmIoK
Ci0gQW5kcmVhcwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRw
czovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2Ny
aWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1w
ZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=