From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id CD6A441D8D;
	Mon, 27 Feb 2023 09:12:58 +0100 (CET)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 69E9240A84;
	Mon, 27 Feb 2023 09:12:58 +0100 (CET)
Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com
 [67.231.156.173])
 by mails.dpdk.org (Postfix) with ESMTP id 3035D40A7D
 for <dev@dpdk.org>; Mon, 27 Feb 2023 09:12:57 +0100 (CET)
Received: from pps.filterd (m0045851.ppops.net [127.0.0.1])
 by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id
 31R7THE0001480; Mon, 27 Feb 2023 00:12:56 -0800
Received: from nam12-bn8-obe.outbound.protection.outlook.com
 (mail-bn8nam12lp2171.outbound.protection.outlook.com [104.47.55.171])
 by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqtprfh-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Mon, 27 Feb 2023 00:12:56 -0800
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=nHgZDQVq+amKCN3uI4+9F62YQC8POkkkSxO1PaL2846aUJXoOnXJUE0ePkwekxwbKh1jVGXqH+m749WS9HB+59Ubf2xFSEogtUP/QdwaA5096gfPobNJrCJD4tAB0W+XT6Ag4PsOhJT+3sMuBq14vpFR2Fk4fk8ERiBTFglNlU3wRHin9eE2byGsYjWsRIZsqOm629hf/551feka++/lF9TC8tR9xLPa0NvGwV5ZXoy5s4fGBV/0T4UWCB8089o4bZfSsakE/YlDnoOYWkDn2OCKPz2uHSkSYXU2zUKdzPZdlPoj6cjWpGKwym6R5ilkDorMEWDaqQKFEaYQtjrebw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Y/9OBcoEeaoiW87HFtOYFRVc1UKbs7YUNLqR1yFLCVQ=;
 b=oYzV0Kgb40cg4cxixOGSNjPcAZw0oBLAf1D7TmqLK1DDRCJXzwVq/5cJdgMUC1VNP/a4dL7Ih6YGj4CMZ87CUMDZRDuTyy6BqFoIVPa+jaGcNb1qHy4GctSSergLN/v+e01MhDJ7fNEDqoVY4mlS444wmOG2PpLaAxTFHAGXZ9uCWJJ0oBfi9rpXdCPNeZnnSxKLp2ecfG4zS+aXYuZVOEO5YHwsSd8gwqPMhMzNVxc3njVEfFXiq8bwkDrh9/apg9ztMOySvrwvJru2EQrqm5bYRXLSH2HIqM+2R8eJAF7Xo+3QhZDzoKlGwCgbdLU77CdrpjOiNxE6BqBChwGsAg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com;
 dkim=pass header.d=marvell.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Y/9OBcoEeaoiW87HFtOYFRVc1UKbs7YUNLqR1yFLCVQ=;
 b=uRvXtwI4Xy/mm39KyKsQtbHC3N/U4u3K9oILRge3cgMiBEPpiBBR25P+12OOks6uz64ibCcXGUvnIz8JOYDPyoX6KZSbcXnHyDP0Dc9VIxpgOh496LBQo6n+awWux/zpU9WyaI5evZKUNK7aIEk4VZOX2EpIgFCYrxKZBpJbGbo=
Received: from DM4PR18MB4368.namprd18.prod.outlook.com (2603:10b6:5:39d::6) by
 IA1PR18MB5516.namprd18.prod.outlook.com (2603:10b6:208:451::9) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.6134.29; Mon, 27 Feb 2023 08:12:52 +0000
Received: from DM4PR18MB4368.namprd18.prod.outlook.com
 ([fe80::6d6a:99da:de:ea6b]) by DM4PR18MB4368.namprd18.prod.outlook.com
 ([fe80::6d6a:99da:de:ea6b%7]) with mapi id 15.20.6134.029; Mon, 27 Feb 2023
 08:12:52 +0000
From: Tomasz Duszynski <tduszynski@marvell.com>
To: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>, Konstantin Ananyev
 <konstantin.ananyev@huawei.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: RE: [EXT] Re: [PATCH v11 1/4] lib: add generic support for reading
 PMU events
Thread-Topic: [EXT] Re: [PATCH v11 1/4] lib: add generic support for reading
 PMU events
Thread-Index: AQHZQi/ugndN0uHRZEy+gbr3w2CIfa7SPocAgAB/jGCAAC7XAIADOSHQgAHFjQCAAB7GUIAAEK+AgAAF7wCAAHbvAIAJ4WHg
Date: Mon, 27 Feb 2023 08:12:52 +0000
Message-ID: <DM4PR18MB4368B434182FD854FF8B6B7CD2AF9@DM4PR18MB4368.namprd18.prod.outlook.com>
References: <20230213113156.385482-1-tduszynski@marvell.com>
 <20230216175502.3164820-1-tduszynski@marvell.com>
 <20230216175502.3164820-2-tduszynski@marvell.com>
 <4b055bbc-36e5-671c-8117-fb0ee7307d55@yandex.ru>
 <DM4PR18MB43685A2D4112F65069769D09D2A19@DM4PR18MB4368.namprd18.prod.outlook.com>
 <b00d773b3a2d4dd3a81cb67733d8a76a@huawei.com>
 <DM4PR18MB43683E3C58B0A84A5023E835D2A79@DM4PR18MB4368.namprd18.prod.outlook.com>
 <b356335a28654a879dc07ad6a3681f13@huawei.com>
 <DM4PR18MB43685ADA6E197BDADEED73D8D2A49@DM4PR18MB4368.namprd18.prod.outlook.com>
 <f16155a4624d4682a991b21526c8ae9a@huawei.com>
 <DM4PR18MB4368402E9D3750697EBE4F81D2A49@DM4PR18MB4368.namprd18.prod.outlook.com>
 <ca8ee464-1b90-c794-9290-dd0e13d1271b@yandex.ru>
In-Reply-To: <ca8ee464-1b90-c794-9290-dd0e13d1271b@yandex.ru>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM4PR18MB4368:EE_|IA1PR18MB5516:EE_
x-ms-office365-filtering-correlation-id: 01cc586d-ab70-4151-b8f3-08db189a6c7b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: L974OKuMrvmadxb0cxz6LdFmTjS8vXtt8Mf2JVCM6yNLqnUBkT1gS8MKe2UC9IEP7vDAHFFT4FUKYHpQhq1VzxuXf1DcFaHdh6Xg/a0R95z5nINsOSOKtKj7K6/ZoMYXGCC7yVtNTCHW+dvCNDgQnJGiVRg8UTG9C6GQoB2jzk/OkQPQtkee2oDqKcr79H0vhUk4FPFu9s42S5TOgu5osKOQT02p826PYYqe2BH0XYwE8MmhskjRrld6oN875ReLVyOugyL67qYGfhO20YKfEbq6/UsmG4j0lmBBJNukPjQb4O9PaaDfBrsjP26xQ3jA+yo2hsODN0AEvX0iRmpIVJLAziDHd2gbovxcqyOa6bUpbNF7TZEFbRVlqtxD046+eIxxiseXKq+FdqmV7GFNM5il07blrkAG6PbIevPBbE4b1iYBhu16n5cB+xpuW2sy7wfzWN6+474HO/HGvYo2PsdnM9o6MfeLpu9hOAL9TioxUz8bV9XboozOBEZFLnIOX5RNoacKaHK9HQ06d9nESWe6hTjChvLULW2j0QUS7oOt6/ToJzPCB4c68RI4u+8xzsNxO+zpCPKyvlA89Fx1CDRZMVcQj9fe7m3jqmRlorA/T5NZlETIgBxSkgZw9KzF2vh3gzH02XHv7bkliWj42E6AE7P0j3dMCi6N6h5vy0ox/YiBXiCTYO8XuGO4Vk3q05GzmzXl7u0xUJ52OszelZWWAarTg80YKNRGnqqjrIU=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:DM4PR18MB4368.namprd18.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230025)(4636009)(136003)(396003)(39860400002)(366004)(346002)(376002)(451199018)(9686003)(186003)(38100700002)(122000001)(83380400001)(38070700005)(52536014)(8936002)(66946007)(66556008)(66476007)(66446008)(76116006)(41300700001)(8676002)(2906002)(5660300002)(30864003)(71200400001)(7696005)(55016003)(478600001)(6506007)(64756008)(26005)(316002)(33656002)(110136005)(86362001)(66899018)(41533002);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dXYrOFc4S2Y1STV5T1d3RTRkYWdoNy9kVkx5MWQrT1Z0aUJ6TVhJdWhsL2JI?=
 =?utf-8?B?aC85RTVKN2srUVcvZjVSb2xPVDMzQytUdHd3R1ZhWU5ZUXBQYjhMV2RROFJG?=
 =?utf-8?B?L0JqZkwwS3J2a1lwdE5iQ0wwQWZMQU1raDVySDVDQUdZWnVmZ3M2Z3M0eVNw?=
 =?utf-8?B?T0RHbGt4L01KajVjekNVZU8yU0RNMWwvOXZqcy9BT2lQT3ArV0J0NzhOSE56?=
 =?utf-8?B?R2tQZ0pna25rblVHeStEVmZJUXNSY2d0N2NaNWJxMVBYdnZrU0Nhb2o1c25N?=
 =?utf-8?B?elF0cUdlRTN0UXNpbDh0VDZnbHM3amhlYUNxS0JtRktic2xBeWFoOWc4TjdS?=
 =?utf-8?B?b2tTWldBM1V1STVXSjBzVTdiRHZoRHYwRERCaWZlU0JLalROaGc0ckZ6YTlY?=
 =?utf-8?B?dXF6YTdaOEt3TUY4TmEya3RvbG9HdFgxc3VNN0lid1JpYmZvWlVHMkg0WWVw?=
 =?utf-8?B?RXpLS2RmQWtGcFM0YmhwRnM0UFRxUFpDMUtEMEdNK2Q1cVZpclVlN1BnMzdz?=
 =?utf-8?B?WWhDYnRiakJ5T2tUZkRhQ296NXFPdXdsK2dwN3pDVDB4anNGb0U2UDgyT1dK?=
 =?utf-8?B?bnNJcjVkZnF0TkRTN3JWUStpWkk2M05XT0tnWGtvdVFwOEw4cjVKVTF2NXlk?=
 =?utf-8?B?bjliT2VEcG9oT3kzaWd3VVpQOGwxWHBoNHo2QkNLZE9lbzc0R3RhNGdTVUJ1?=
 =?utf-8?B?TVhHMHdnQUVTTmhjbVBqRklJNjFITkhJT3VDT00yaXRNNjYzYkFlRjJHMUNq?=
 =?utf-8?B?aDVEd3loSlFQTmsxMnpmOEM0VWJnY1orTlhhS0hzV3FqL3B3V3RxeGFqR0Zt?=
 =?utf-8?B?QWwyaHJ4WGFsSEFRTUkxRjdOeG5ybmJGRUdvMzc3MnNZWW9oVHRBcGhROTVv?=
 =?utf-8?B?NFNtRUZNdG9FUnNxUkNyWlhFaVJpbGdwTEFER0g4U3FJcmJhWXhVV3JDa1cx?=
 =?utf-8?B?aG5ucEFaUUpEbkJaZWo1MnhLMUtsL1BXbzZ6S2R0Ymc4cHNDc1l5M3FqaUtW?=
 =?utf-8?B?bHlTYVB1M0x0S2VORnNFNmh4cWRDaE83NWFReTAyYTN4UGFKZ25vbEFSRFdl?=
 =?utf-8?B?d0NsY3hlQjQvTTNKNUJzbm96VXRsM0lBcWRPK0RUTzEza2l3WnlhajBoMjVa?=
 =?utf-8?B?V2IrU0xrNTQ5M244VHBpZWUvV0RtUHpmSk40UUtsTWppcHNHdkN1U0hHb1RK?=
 =?utf-8?B?QXptU3FPamttU01JNzRKWkptV0F0OTIzMmJPSitDTGtTcXBSOEg5bG5kSC9X?=
 =?utf-8?B?UDJ2akQ4VXdsdG1JNnp3aFVtOWpLUU1SMEJZN055aWJ4Y2NMNCs2Y3h5R0Rr?=
 =?utf-8?B?L29IQ0VjTEZGYU1lZ1hZK1FqSjltcUprdFd2Smcwb0JXNkZwWVhJdy9lL1pV?=
 =?utf-8?B?bGFkS0M0aVBqLzFTQXZYaXVsWjFYaXR4RnJJNnJHdndmaE9uQW1ON2VSRUdS?=
 =?utf-8?B?L05ObjZ4WU1NS1gybmx5bGFVK0llWkowRWJUL1RSTUxUV0lJYWlvRUE1RjhY?=
 =?utf-8?B?SkNmOHFsSE9uYVpFRmxCWDNkOTNLR0NLelRPMnk4RTZoWjFXMzF5c0NpNnMw?=
 =?utf-8?B?MWZ4UHJ0WndRSERMZlFnWEhndGVBdTRTb0o5eGsvWXVLM0MrZ1BYYlk4cWhC?=
 =?utf-8?B?elExeHpWNDhsTGV3TnNaMjRKUHpiZGFPY045eDZnUmlBcGdrRVMzbXhQd0M5?=
 =?utf-8?B?Z0xsMmJrKzBxeGp5Wk1ZRldOK3dLai91cUpBNUR4OXBEZyt4U3BMcWJoWFBy?=
 =?utf-8?B?b2VuUkZGaVEzTWJtaXZvYmVOczEwcVYxN0djaFhHSnU3R2c1R0ZCZEhhUkQr?=
 =?utf-8?B?eUdlZUxxcFVvakYwVDlVV09ZeEFaWUhmalpkN3JlZnE2OUZ3MFVENWRFVVFT?=
 =?utf-8?B?TzkxYUZwb3dkWnpvS3BPUVlGOEpZVDVwSlJnK1JVRnluVkt5cjFRbzY2MjhG?=
 =?utf-8?B?WFJ0dW9LS293WnJGbWFhM2U0WU9mY2VPdXdwOE9wMHgyQU1Rd1ZFbEVOc3N3?=
 =?utf-8?B?OW0zd2ZHY2pqbFh0V21veklDUllIaGRlelNJYTBaOXdadlUrSHgzVTNmMGJU?=
 =?utf-8?B?eTFOTUJWYnlSWWU3dmN4cUM0WW51M0JTZFRqQk9JQ3ZiNlNtRUd1cyttcHM2?=
 =?utf-8?Q?dOFpBSBnInpdZzHjGBMDw2r99?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: marvell.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM4PR18MB4368.namprd18.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 01cc586d-ab70-4151-b8f3-08db189a6c7b
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2023 08:12:52.6509 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 5P7mM8qUt1/Tsf5QiJS6v3o9wjDU0poXgdyRqfHWQfzTV//elo1mW4R2QasjsRyc9887J3KxmGoCWUOXv5kq0w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR18MB5516
X-Proofpoint-ORIG-GUID: 4xSTdEEj3PmvgB1g7gvz-m1AfrXHXc2a
X-Proofpoint-GUID: 4xSTdEEj3PmvgB1g7gvz-m1AfrXHXc2a
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22
 definitions=2023-02-26_22,2023-02-24_01,2023-02-09_01
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEtvbnN0YW50aW4gQW5hbnll
diA8a29uc3RhbnRpbi52LmFuYW55ZXZAeWFuZGV4LnJ1Pg0KPlNlbnQ6IFR1ZXNkYXksIEZlYnJ1
YXJ5IDIxLCAyMDIzIDE6NDggQU0NCj5UbzogVG9tYXN6IER1c3p5bnNraSA8dGR1c3p5bnNraUBt
YXJ2ZWxsLmNvbT47IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi5hbmFueWV2QGh1YXdl
aS5jb20+Ow0KPmRldkBkcGRrLm9yZw0KPlN1YmplY3Q6IFJlOiBbRVhUXSBSZTogW1BBVENIIHYx
MSAxLzRdIGxpYjogYWRkIGdlbmVyaWMgc3VwcG9ydCBmb3IgcmVhZGluZyBQTVUgZXZlbnRzDQo+
DQo+DQo+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvcG11L3J0ZV9wbXUuaCBiL2xpYi9wbXUv
cnRlX3BtdS5oIG5ldyBmaWxlDQo+Pj4+Pj4+Pj4+IG1vZGUNCj4+Pj4+Pj4+Pj4gMTAwNjQ0IGlu
ZGV4IDAwMDAwMDAwMDAuLjZiNjY0YzMzMzYNCj4+Pj4+Pj4+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+
Pj4+Pj4+PiArKysgYi9saWIvcG11L3J0ZV9wbXUuaA0KPj4+Pj4+Pj4+PiBAQCAtMCwwICsxLDIx
MiBAQA0KPj4+Pj4+Pj4+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz
ZQ0KPj4+Pj4+Pj4+PiArICogQ29weXJpZ2h0KGMpIDIwMjMgTWFydmVsbCAgKi8NCj4+Pj4+Pj4+
Pj4gKw0KPj4+Pj4+Pj4+PiArI2lmbmRlZiBfUlRFX1BNVV9IXw0KPj4+Pj4+Pj4+PiArI2RlZmlu
ZSBfUlRFX1BNVV9IXw0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICsvKioNCj4+Pj4+Pj4+Pj4g
KyAqIEBmaWxlDQo+Pj4+Pj4+Pj4+ICsgKg0KPj4+Pj4+Pj4+PiArICogUE1VIGV2ZW50IHRyYWNp
bmcgb3BlcmF0aW9ucw0KPj4+Pj4+Pj4+PiArICoNCj4+Pj4+Pj4+Pj4gKyAqIFRoaXMgZmlsZSBk
ZWZpbmVzIGdlbmVyaWMgQVBJIGFuZCB0eXBlcyBuZWNlc3NhcnkgdG8gc2V0dXANCj4+Pj4+Pj4+
Pj4gK1BNVSBhbmQNCj4+Pj4+Pj4+Pj4gKyAqIHJlYWQgc2VsZWN0ZWQgY291bnRlcnMgaW4gcnVu
dGltZS4NCj4+Pj4+Pj4+Pj4gKyAqLw0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICsjaWZkZWYg
X19jcGx1c3BsdXMNCj4+Pj4+Pj4+Pj4gK2V4dGVybiAiQyIgew0KPj4+Pj4+Pj4+PiArI2VuZGlm
DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+
DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxydGVfYXRvbWljLmg+DQo+Pj4+
Pj4+Pj4+ICsjaW5jbHVkZSA8cnRlX2JyYW5jaF9wcmVkaWN0aW9uLmg+ICNpbmNsdWRlIDxydGVf
Y29tbW9uLmg+DQo+Pj4+Pj4+Pj4+ICsjaW5jbHVkZSA8cnRlX2NvbXBhdC5oPiAjaW5jbHVkZSA8
cnRlX3NwaW5sb2NrLmg+DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gKy8qKiBNYXhpbXVtIG51
bWJlciBvZiBldmVudHMgaW4gYSBncm91cCAqLyAjZGVmaW5lDQo+Pj4+Pj4+Pj4+ICtNQVhfTlVN
X0dST1VQX0VWRU5UUyA4DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gKy8qKg0KPj4+Pj4+Pj4+
PiArICogQSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyBhIGdyb3VwIG9mIGV2ZW50cy4NCj4+Pj4+Pj4+
Pj4gKyAqLw0KPj4+Pj4+Pj4+PiArc3RydWN0IHJ0ZV9wbXVfZXZlbnRfZ3JvdXAgew0KPj4+Pj4+
Pj4+PiArCXN0cnVjdCBwZXJmX2V2ZW50X21tYXBfcGFnZQ0KPj4+Pj4+Pj4+PiArKm1tYXBfcGFn
ZXNbTUFYX05VTV9HUk9VUF9FVkVOVFNdOw0KPj4+Pj4+Pj4+PiArLyoqPCBhcnJheSBvZiB1c2Vy
IHBhZ2VzDQo+Pj4+Pj4+ICovDQo+Pj4+Pj4+Pj4+ICsJaW50IGZkc1tNQVhfTlVNX0dST1VQX0VW
RU5UU107IC8qKjwgYXJyYXkgb2YgZXZlbnQgZGVzY3JpcHRvcnMgKi8NCj4+Pj4+Pj4+Pj4gKwli
b29sIGVuYWJsZWQ7IC8qKjwgdHJ1ZSBpZiBncm91cCB3YXMgZW5hYmxlZCBvbiBwYXJ0aWN1bGFy
IGxjb3JlICovDQo+Pj4+Pj4+Pj4+ICsJVEFJTFFfRU5UUlkocnRlX3BtdV9ldmVudF9ncm91cCkg
bmV4dDsgLyoqPCBsaXN0IGVudHJ5ICovIH0NCj4+Pj4+Pj4+Pj4gK19fcnRlX2NhY2hlX2FsaWdu
ZWQ7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gKy8qKg0KPj4+Pj4+Pj4+PiArICogQSBzdHJ1
Y3R1cmUgZGVzY3JpYmluZyBhbiBldmVudC4NCj4+Pj4+Pj4+Pj4gKyAqLw0KPj4+Pj4+Pj4+PiAr
c3RydWN0IHJ0ZV9wbXVfZXZlbnQgew0KPj4+Pj4+Pj4+PiArCWNoYXIgKm5hbWU7IC8qKjwgbmFt
ZSBvZiBhbiBldmVudCAqLw0KPj4+Pj4+Pj4+PiArCXVuc2lnbmVkIGludCBpbmRleDsgLyoqPCBl
dmVudCBpbmRleCBpbnRvIGZkcy9tbWFwX3BhZ2VzICovDQo+Pj4+Pj4+Pj4+ICsJVEFJTFFfRU5U
UlkocnRlX3BtdV9ldmVudCkgbmV4dDsgLyoqPCBsaXN0IGVudHJ5ICovIH07DQo+Pj4+Pj4+Pj4+
ICsNCj4+Pj4+Pj4+Pj4gKy8qKg0KPj4+Pj4+Pj4+PiArICogQSBQTVUgc3RhdGUgY29udGFpbmVy
Lg0KPj4+Pj4+Pj4+PiArICovDQo+Pj4+Pj4+Pj4+ICtzdHJ1Y3QgcnRlX3BtdSB7DQo+Pj4+Pj4+
Pj4+ICsJY2hhciAqbmFtZTsgLyoqPCBuYW1lIG9mIGNvcmUgUE1VIGxpc3RlZCB1bmRlciAvc3lz
L2J1cy9ldmVudF9zb3VyY2UvZGV2aWNlcyAqLw0KPj4+Pj4+Pj4+PiArCXJ0ZV9zcGlubG9ja190
IGxvY2s7IC8qKjwgc2VyaWFsaXplIGFjY2VzcyB0byBldmVudCBncm91cCBsaXN0ICovDQo+Pj4+
Pj4+Pj4+ICsJVEFJTFFfSEVBRCgsIHJ0ZV9wbXVfZXZlbnRfZ3JvdXApIGV2ZW50X2dyb3VwX2xp
c3Q7IC8qKjwgbGlzdCBvZiBldmVudCBncm91cHMgKi8NCj4+Pj4+Pj4+Pj4gKwl1bnNpZ25lZCBp
bnQgbnVtX2dyb3VwX2V2ZW50czsgLyoqPCBudW1iZXIgb2YgZXZlbnRzIGluIGEgZ3JvdXAgKi8N
Cj4+Pj4+Pj4+Pj4gKwlUQUlMUV9IRUFEKCwgcnRlX3BtdV9ldmVudCkgZXZlbnRfbGlzdDsgLyoq
PCBsaXN0IG9mIG1hdGNoaW5nIGV2ZW50cyAqLw0KPj4+Pj4+Pj4+PiArCXVuc2lnbmVkIGludCBp
bml0aWFsaXplZDsgLyoqPCBpbml0aWFsaXphdGlvbiBjb3VudGVyICovIH07DQo+Pj4+Pj4+Pj4+
ICsNCj4+Pj4+Pj4+Pj4gKy8qKiBsY29yZSBldmVudCBncm91cCAqLw0KPj4+Pj4+Pj4+PiArUlRF
X0RFQ0xBUkVfUEVSX0xDT1JFKHN0cnVjdCBydGVfcG11X2V2ZW50X2dyb3VwLA0KPj4+Pj4+Pj4+
PiArX2V2ZW50X2dyb3VwKTsNCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+PiArLyoqIFBNVSBzdGF0
ZSBjb250YWluZXIgKi8NCj4+Pj4+Pj4+Pj4gK2V4dGVybiBzdHJ1Y3QgcnRlX3BtdSBydGVfcG11
Ow0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICsvKiogRWFjaCBhcmNoaXRlY3R1cmUgc3VwcG9y
dGluZyBQTVUgbmVlZHMgdG8gcHJvdmlkZSBpdHMgb3duDQo+Pj4+Pj4+Pj4+ICt2ZXJzaW9uICov
ICNpZm5kZWYgcnRlX3BtdV9wbWNfcmVhZCAjZGVmaW5lDQo+Pj4+Pj4+Pj4+ICtydGVfcG11X3Bt
Y19yZWFkKGluZGV4KSAoeyAwOyB9KSAjZW5kaWYNCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+PiAr
LyoqDQo+Pj4+Pj4+Pj4+ICsgKiBAd2FybmluZw0KPj4+Pj4+Pj4+PiArICogQGIgRVhQRVJJTUVO
VEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+Pj4+Pj4+Pj4+
ICsgKg0KPj4+Pj4+Pj4+PiArICogUmVhZCBQTVUgY291bnRlci4NCj4+Pj4+Pj4+Pj4gKyAqDQo+
Pj4+Pj4+Pj4+ICsgKiBAd2FybmluZyBUaGlzIHNob3VsZCBiZSBub3QgY2FsbGVkIGRpcmVjdGx5
Lg0KPj4+Pj4+Pj4+PiArICoNCj4+Pj4+Pj4+Pj4gKyAqIEBwYXJhbSBwYw0KPj4+Pj4+Pj4+PiAr
ICogICBQb2ludGVyIHRvIHRoZSBtbWFwcGVkIHVzZXIgcGFnZS4NCj4+Pj4+Pj4+Pj4gKyAqIEBy
ZXR1cm4NCj4+Pj4+Pj4+Pj4gKyAqICAgQ291bnRlciB2YWx1ZSByZWFkIGZyb20gaGFyZHdhcmUu
DQo+Pj4+Pj4+Pj4+ICsgKi8NCj4+Pj4+Pj4+Pj4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5l
IHVpbnQ2NF90DQo+Pj4+Pj4+Pj4+ICtfX3J0ZV9wbXVfcmVhZF91c2VycGFnZShzdHJ1Y3QgcGVy
Zl9ldmVudF9tbWFwX3BhZ2UgKnBjKSB7DQo+Pj4+Pj4+Pj4+ICsJdWludDY0X3Qgd2lkdGgsIG9m
ZnNldDsNCj4+Pj4+Pj4+Pj4gKwl1aW50MzJfdCBzZXEsIGluZGV4Ow0KPj4+Pj4+Pj4+PiArCWlu
dDY0X3QgcG1jOw0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICsJZm9yICg7Oykgew0KPj4+Pj4+
Pj4+PiArCQlzZXEgPSBwYy0+bG9jazsNCj4+Pj4+Pj4+Pj4gKwkJcnRlX2NvbXBpbGVyX2JhcnJp
ZXIoKTsNCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IEFyZSB5b3Ugc3VyZSB0aGF0IGNvbXBpbGVyX2Jh
cnJpZXIoKSBpcyBlbm91Z2ggaGVyZT8NCj4+Pj4+Pj4+PiBPbiBzb21lIGFyY2hzIENQVSBpdHNl
bGYgaGFzIGZyZWVkb20gdG8gcmUtb3JkZXIgcmVhZHMuDQo+Pj4+Pj4+Pj4gT3IgSSBhbSBtaXNz
aW5nIHNvbWV0aGluZyBvYnZpb3VzIGhlcmU/DQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+
PiBJdCdzIGEgbWF0dGVyIG9mIG5vdCBrZWVwaW5nIG9sZCBzdHVmZiBjYWNoZWQgaW4gcmVnaXN0
ZXJzIGFuZA0KPj4+Pj4+Pj4gbWFraW5nIHN1cmUgdGhhdCB3ZSBoYXZlIHR3byByZWFkcyBvZiBs
b2NrLiBDUFUgcmVvcmRlcmluZyB3b24ndA0KPj4+Pj4+Pj4gZG8gYW55IGhhcm0gaGVyZS4NCj4+
Pj4+Pj4NCj4+Pj4+Pj4gU29ycnksIEkgZGlkbid0IGdldCB5b3UgaGVyZToNCj4+Pj4+Pj4gU3Vw
cG9zZSBDUFUgd2lsbCByZS1vcmRlciByZWFkcyBhbmQgd2lsbCByZWFkIGxvY2sgKmFmdGVyKiBp
bmRleCBvciBvZmZzZXQgdmFsdWUuDQo+Pj4+Pj4+IFdvdWxkbid0IGl0IG1lYW4gdGhhdCBpbiB0
aGF0IGNhc2UgaW5kZXggYW5kL29yIG9mZnNldCBjYW4gY29udGFpbiBvbGQvaW52YWxpZCB2YWx1
ZXM/DQo+Pj4+Pj4+DQo+Pj4+Pj4NCj4+Pj4+PiBUaGlzIG51bWJlciBpcyBqdXN0IGFuIGluZGlj
YXRvciB3aGV0aGVyIGtlcm5lbCBkaWQgY2hhbmdlIHNvbWV0aGluZyBvciBub3QuDQo+Pj4+Pg0K
Pj4+Pj4gWW91IGFyZSB0YWxraW5nIGFib3V0IHBjLT5sb2NrLCByaWdodD8NCj4+Pj4+IFllcywg
SSBkbyB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgc29ydCBvZiBzZXFsb2NrLg0KPj4+Pj4gVGhhdCdz
IHdoeSBJIGFtIHB1enpsZWQgd2h5IHdlIGRvIG5vdCBjYXJlIGFib3V0IHBvc3NpYmxlIGNwdSBy
ZWFkLXJlb3JkZXJpbmcuDQo+Pj4+PiBNYW51YWwgZm9yIHBlcmZfZXZlbnRfb3BlbigpIGFsc28g
aGFzIGEgY29kZSBzbmlwcGV0IHdpdGggY29tcGlsZXIgYmFycmllciBvbmx5Li4uDQo+Pj4+Pg0K
Pj4+Pj4+IElmIGNwdSByZW9yZGVyaW5nIHdpbGwgY29tZSBpbnRvIHBsYXkgdGhlbiB0aGlzIHdp
bGwgbm90IGNoYW5nZQ0KPj4+Pj4+IGFueXRoaW5nIGZyb20gcG92IG9mIHRoaXMNCj4+PiBsb29w
Lg0KPj4+Pj4+IEFsbCB3ZSB3YW50IGlzIGZyZXNoIGRhdGEgd2hlbiBuZWVkZWQgYW5kIG5vIGlu
dm9sdmVtZW50IG9mDQo+Pj4+Pj4gY29tcGlsZXIgd2hlbiBpdCBjb21lcyB0byByZW9yZGVyaW5n
IGNvZGUuDQo+Pj4+Pg0KPj4+Pj4gT2ssIGNhbiB5b3UgcHJvYmFibHkgZXhwbGFpbiB0byBtZSB3
aHkgdGhlIGZvbGxvd2luZyBjb3VsZCBub3QgaGFwcGVuOg0KPj4+Pj4gVDA6DQo+Pj4+PiBwYy0+
c2VxbG9jaz09MDsgcGMtPmluZGV4PT1JMTsgcGMtPm9mZnNldD09TzE7DQo+Pj4+PiBUMToNCj4+
Pj4+ICAgICAgIGNwdSAjMCByZWFkIHBtdSAoZHVlIHRvIGNwdSByZWFkIHJlb3JkZXIsIHdlIGdl
dCBpbmRleCB2YWx1ZSBiZWZvcmUgc2VxbG9jayk6DQo+Pj4+PiAgICAgICAgaW5kZXg9cGMtPmlu
ZGV4OyAgLy9pbmRleD09STE7DQo+Pj4+PiBUMjoNCj4+Pj4+ICAgICAgIGNwdSAjMSBrZXJuZWwg
dmVudF91cGRhdGVfdXNlcnBhZ2U6DQo+Pj4+PiAgICAgICBwYy0+bG9jaysrOyAvLyBwYy0+bG9j
az09MQ0KPj4+Pj4gICAgICAgcGMtPmluZGV4PUkyOw0KPj4+Pj4gICAgICAgcGMtPm9mZnNldD1P
MjsNCj4+Pj4+ICAgICAgIC4uLg0KPj4+Pj4gICAgICAgcGMtPmxvY2srKzsgLy9wYy0+bG9jaz09
Mg0KPj4+Pj4gVDM6DQo+Pj4+PiAgICAgICBjcHUgIzAgY29udGludWUgd2l0aCByZWFkIHBtdToN
Cj4+Pj4+ICAgICAgIHNlcT1wYy0+bG9jazsgLy9zZXEgPT0gMg0KPj4+Pj4gICAgICAgIG9mZnNl
dD1wYy0+b2Zmc2V0OyAvLyBvZmZzZXQgPT0gTzINCj4+Pj4+ICAgICAgICAuLi4uDQo+Pj4+PiAg
ICAgICAgcG1jID0gcnRlX3BtdV9wbWNfcmVhZChpbmRleCAtIDEpOyAgLy8gTm90ZSB0aGF0IHdl
IHJlYWQgYXQgSTEsIG5vdCBJMg0KPj4+Pj4gICAgICAgIG9mZnNldCArPSBwbWM7IC8vb2Zmc2V0
ID09IE8yICsgcG1jcmVhZChJMS0xKTsNCj4+Pj4+ICAgICAgICBpZiAocGMtPmxvY2sgPT0gc2Vx
KSAvLyB0aGV5IGFyZSBlcXVhbCwgcmV0dXJuDQo+Pj4+PiAgICAgICAgICAgICAgcmV0dXJuIG9m
ZnNldDsNCj4+Pj4+DQo+Pj4+PiBPciwgaXQgY2FuIGhhcHBlbiwgYnV0IGJ5IHNvbWUgcmVhc29u
IHdlIGRvbid0IGNhcmUgbXVjaD8NCj4+Pj4+DQo+Pj4+DQo+Pj4+IFRoaXMgY29kZSBkb2VzIHNl
bGYtbW9uaXRvcmluZyBhbmQgdXNlciBwYWdlICh3aG9sZSBncm91cCBhY3R1YWxseSkNCj4+Pj4g
aXMgcGVyIHRocmVhZCBydW5uaW5nIG9uIGN1cnJlbnQgY3B1LiBIZW5jZSBJIGFtIG5vdCBzdXJl
IHdoYXQgYXJlDQo+Pj4+IHlvdSB0cnlpbmcgdG8gcHJvdmUgd2l0aCB0aGF0DQo+Pj4gZXhhbXBs
ZS4NCj4+Pg0KPj4+IEkgYW0gbm90IHRyeWluZyB0byBwcm92ZSBhbnl0aGluZyBzbyBmYXIuDQo+
Pj4gSSBhbSBhc2tpbmcgaXMgc3VjaCBzaXR1YXRpb24gcG9zc2libGUgb3Igbm90LCBhbmQgaWYg
bm90LCB3aHk/DQo+Pj4gTXkgY3VycmVudCB1bmRlcnN0YW5kaW5nIChwb3NzaWJseSB3cm9uZykg
aXMgdGhhdCBhZnRlciB5b3UgbW1hcGVkDQo+Pj4gdGhlc2UgcGFnZXMsIGtlcm5lbCBzdGlsbCBj
YW4gYXN5bmNocm9ub3VzbHkgdXBkYXRlIHRoZW0uDQo+Pj4gU28sIHdoZW4gcmVhZGluZyB0aGUg
ZGF0YSBmcm9tIHRoZXNlIHBhZ2VzIHlvdSBoYXZlIHRvIGNoZWNrICdsb2NrJw0KPj4+IHZhbHVl
IGJlZm9yZSBhbmQgYWZ0ZXIgYWNjZXNzaW5nIG90aGVyIGRhdGEuDQo+Pj4gSWYgc28sIHdoeSBw
b3NzaWJsZSBjcHUgcmVhZC1yZW9yZGVyaW5nIGRvZXNuJ3QgbWF0dGVyPw0KPj4+DQo+Pg0KPj4g
TG9vay4gSSdsbCByZWl0ZXJhdGUgdGhhdC4NCj4+DQo+PiAxLiBUaGF0IHVzZXIgcGFnZS9ncm91
cC9QTVUgY29uZmlnIGlzIHBlciBwcm9jZXNzLiBPdGhlciBwcm9jZXNzZXMgZG8gbm90IGFjY2Vz
cyB0aGF0Lg0KPg0KPk9rLCB0aGF0J3MgY2xlYXIuDQo+DQo+DQo+PiAgICAgQWxsIHRoaXMgaGFw
cGVucyBvbiB0aGUgdmVyeSBzYW1lIENQVSB3aGVyZSBjdXJyZW50IHRocmVhZCBpcyBydW5uaW5n
Lg0KPg0KPk9rLi4uIGJ1dCBjYW4ndCB0aGlzIHBhZ2UgYmUgdXBkYXRlZCBieSBrZXJuZWwgdGhy
ZWFkIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHkgb24gZGlmZmVyZW50IENQVT8NCj4NCg0KSSBhbHJl
YWR5IHBvaW50ZWQgb3V0IHRoYXQgZXZlbnQvY291bnRlciBjb25maWd1cmF0aW9uIGlzIGJvdW5k
IHRvIGN1cnJlbnQgY3B1LiBIb3cgY2FuIHBvc3NpYmx5DQpvdGhlciBjcHUgdXBkYXRlIHRoYXQg
Y29uZmlndXJhdGlvbj8gVGhpcyBjYW5ub3Qgd29yay4gDQoNCg0KSWYgeW91IHRoaW5rIHRoYXQg
dGhlcmUncyBzb21lIHByb2JsZW0gd2l0aCB0aGUgY29kZSAob3IgaXMgc2ltcGx5IGJyb2tlbiBv
biB5b3VyIHNldHVwKSBhbmQgbG9naWMgDQpoYXMgb2J2aW91cyBmbGF3IGFuZCB5b3UgY2FuIHBy
b3ZpZGUgbWVhbmluZ2Z1bCBldmlkZW5jZSBvZiB0aGF0IHRoZW4gSSdkIGJlIG1vcmUgdGhhbiBo
YXBweSB0byANCmFwcGx5IHRoYXQgZml4LiBPdGhlcndpc2UgdGhhdCBkaXNjdXNzaW9uIHdpbGwg
Z2V0IHVzIG5vd2hlcmUuIA0KDQo+DQo+PiAyLiBTdXBwb3NlIHlvdSd2ZSBhbHJlYWR5IHJlYWQg
c2VxLiBOb3cgZm9yIHNvbWUgcmVhc29uIGtlcm5lbCB1cGRhdGVzIGRhdGEgaW4gcGFnZSBzZXEg
d2FzIHJlYWQNCj5mcm9tLg0KPj4gMy4gS2VybmVsIHdpbGwgZW50ZXIgY3JpdGljYWwgc2VjdGlv
biBkdXJpbmcgdXBkYXRlLiBzZXEgY2hhbmdlcyBhbG9uZyB3aXRoIG90aGVyIGRhdGEgd2l0aG91
dA0KPmFwcCBrbm93aW5nIGFib3V0IGl0Lg0KPj4gICAgIElmIHlvdSB3YW50IG5pdHR5IGdyaXR0
eSBkZXRhaWxzIGNvbnN1bHQga2VybmVsIHNvdXJjZXMuDQo+DQo+TG9vaywgSSBkb24ndCBoYXZl
IHRvIGJlZyB5b3UgdG8gYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucy4NCj5JbiBmYWN0LCBJIGV4cGVj
dCBsaWJyYXJ5IGF1dGhvciB0byBkb2N1bWVudCBhbGwgc3VjaCBuYXJyb3cgdGhpbmdzDQo+Y2xl
YXJseSBlaXRoZXIgaW4gaW4gUEcsIG9yIGluIHNvdXJjZSBjb2RlIGNvbW1lbnRzIChpZGVhbGx5
IGluIGJvdGgpLg0KPklmIG5vdCwgdGhlbiBmcm9tIG15IHBlcnNwZWN0aXZlIHRoZSBwYXRjaCBp
cyBub3QgcmVhZHkgc3RhZ2UgYW5kDQo+c2hvdWxkbid0IGJlIGFjY2VwdGVkLg0KPkkgZG9uJ3Qg
a25vdyBpcyBjb21waWxlci1iYXJyaWVyIGlzIGVub3VnaCBoZXJlIG9yIG5vdCwgYnV0IEkgdGhp
bmsgaXQNCj5pcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xlYXIgZXhwbGFuYXRpb24gaW4gdGhlIGRv
Y3MuDQo+SSBzdXBwb3NlIGl0IHdvdWxkbid0IGJlIG9ubHkgbWUgd2hvIHdpbGwgZ2V0IGNvbmZ1
c2VkIGhlcmUuDQo+U28gcGxlYXNlIHRha2UgYW4gZWZmb3J0IGFuZCBkb2N1bWVudCBpdCBjbGVh
cmx5IHdoeSB5b3UgYmVsaWV2ZSB0aGVyZQ0KPmlzIG5vIHJhY2UtY29uZGl0aW9uLg0KPg0KPj4g
NC4gYXBwIHJlc3VtZXMgYW5kIGhhcyBzb21lIHN0YWxlIGRhdGEgYnV0ICpXSUxMKiByZWFkIG5l
dyBzZXEuIENvZGUgbG9vcHMgYWdhaW4gYmVjYXVzZSB2YWx1ZXMNCj5kbyBub3QgbWF0Y2guDQo+
DQo+SWYgdGhlIGtlcm5lbCB3aWxsIGFsd2F5cyBleGVjdXRlIHVwZGF0ZSBmb3IgdGhpcyBwYWdl
IGluIHRoZSBzYW1lDQo+dGhyZWFkIGNvbnRleHQsIHRoZW4geWVzLCAtIHVzZXIgY29kZSB3aWxs
IGFsd2F5cyBub3RlIHRoZSBkaWZmZXJlbmNlDQo+YWZ0ZXIgcmVzdW1lLg0KPkJ1dCB3aHkgaXQg
Y2FuJ3QgaGFwcGVuIHRoYXQgeW91ciB1c2VyLXRocmVhZCByZWFkcyB0aGlzIHBhZ2Ugb24gb25l
DQo+Q1BVLCB3aGlsZSBzb21lIGtlcm5lbCBjb2RlIG9uIG90aGVyIENQVSB1cGRhdGVzIGl0IHNp
bXVsdGFuZW91c2x5Pw0KPg0KPg0KPj4gNS4gT3RoZXJ3aXNlIHNlcSB2YWx1ZXMgbWF0Y2ggYW5k
IGRhdGEgaXMgdmFsaWQuDQo+Pg0KPj4+IEFsc28gdGhlcmUgd2FzIGFub3RoZXIgcXVlc3Rpb24g
YmVsb3csIHdoaWNoIHlvdSBwcm9iYWJseSAgbWlzc2VkLCBzbyBJIGNvcGllZCBpdCBoZXJlOg0K
Pj4+IEFub3RoZXIgcXVlc3Rpb24gLSBkbyB3ZSByZWFsbHkgbmVlZCAgdG8gaGF2ZSBfX3J0ZV9w
bXVfcmVhZF91c2VycGFnZSgpIGFuZCBydGVfcG11X3JlYWQoKSBhcw0KPj4+IHN0YXRpYyBpbmxp
bmUgZnVuY3Rpb25zIGluIHB1YmxpYyBoZWFkZXI/DQo+Pj4gQXMgSSB1bmRlcnN0YW5kLCBiZWNh
dXNlIG9mIHRoYXQgd2UgYWxzbyBoYXZlIHRvIG1ha2UgJ3N0cnVjdCBydGVfcG11XyonDQo+Pj4g
ZGVmaW5pdGlvbnMgYWxzbyBwdWJsaWMuDQo+Pj4NCj4+DQo+PiBUaGVzZSBmdW5jdGlvbnMgbmVl
ZCB0byBiZSBpbmxpbmVkIG90aGVyd2lzZSBwZXJmb3JtYW5jZSB0YWtlcyBhIGhpdC4NCj4NCj5J
IHVuZGVyc3RhbmQgdGhhdCBwZXJmb21hbmNlIG1pZ2h0IGJlIGFmZmVjdGVkLCBidXQgaG93IGJp
ZyBpcyBoaXQ/DQo+SSBleHBlY3QgYWN0dWFsIFBNVSByZWFkIHdpbGwgbm90IGJlIGZyZWUgYW55
d2F5LCByaWdodD8NCj5JZiB0aGUgZGlmZiBpcyBzbWFsbCwgbWlnaHQgYmUgaXQgaXMgd29ydGgg
dG8gZ28gZm9yIHN1Y2ggY2hhbmdlLA0KPnJlbW92aW5nIHVubmVlZGVkIHN0cnVjdHVyZXMgZnJv
bSBwdWJsaWMgaGVhZGVycyB3b3VsZCBoZWxwIGEgbG90IGluDQo+ZnV0dXJlIGluIHRlcm1zIG9m
IEFCSS9BUEkgc3RhYmlsaXR5Lg0KPg0KPg0KPg0KPj4+Pg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4g
KwkJaW5kZXggPSBwYy0+aW5kZXg7DQo+Pj4+Pj4+Pj4+ICsJCW9mZnNldCA9IHBjLT5vZmZzZXQ7
DQo+Pj4+Pj4+Pj4+ICsJCXdpZHRoID0gcGMtPnBtY193aWR0aDsNCj4+Pj4+Pj4+Pj4gKw0KPj4+
Pj4+Pj4+PiArCQkvKiBpbmRleCBzZXQgdG8gMCBtZWFucyB0aGF0IHBhcnRpY3VsYXIgY291bnRl
ciBjYW5ub3QgYmUgdXNlZCAqLw0KPj4+Pj4+Pj4+PiArCQlpZiAobGlrZWx5KHBjLT5jYXBfdXNl
cl9yZHBtYyAmJiBpbmRleCkpIHsNCj4+Pj4+Pj4+Pj4gKwkJCXBtYyA9IHJ0ZV9wbXVfcG1jX3Jl
YWQoaW5kZXggLSAxKTsNCj4+Pj4+Pj4+Pj4gKwkJCXBtYyA8PD0gNjQgLSB3aWR0aDsNCj4+Pj4+
Pj4+Pj4gKwkJCXBtYyA+Pj0gNjQgLSB3aWR0aDsNCj4+Pj4+Pj4+Pj4gKwkJCW9mZnNldCArPSBw
bWM7DQo+Pj4+Pj4+Pj4+ICsJCX0NCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+PiArCQlydGVfY29t
cGlsZXJfYmFycmllcigpOw0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICsJCWlmIChsaWtlbHko
cGMtPmxvY2sgPT0gc2VxKSkNCj4+Pj4+Pj4+Pj4gKwkJCXJldHVybiBvZmZzZXQ7DQo+Pj4+Pj4+
Pj4+ICsJfQ0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICsJcmV0dXJuIDA7DQo+Pj4+Pj4+Pj4+
ICt9DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gKy8qKg0KPj4+Pj4+Pj4+PiArICogQHdhcm5p
bmcNCj4+Pj4+Pj4+Pj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3
aXRob3V0IHByaW9yIG5vdGljZQ0KPj4+Pj4+Pj4+PiArICoNCj4+Pj4+Pj4+Pj4gKyAqIEVuYWJs
ZSBncm91cCBvZiBldmVudHMgb24gdGhlIGNhbGxpbmcgbGNvcmUuDQo+Pj4+Pj4+Pj4+ICsgKg0K
Pj4+Pj4+Pj4+PiArICogQHdhcm5pbmcgVGhpcyBzaG91bGQgYmUgbm90IGNhbGxlZCBkaXJlY3Rs
eS4NCj4+Pj4+Pj4+Pj4gKyAqDQo+Pj4+Pj4+Pj4+ICsgKiBAcmV0dXJuDQo+Pj4+Pj4+Pj4+ICsg
KiAgIDAgaW4gY2FzZSBvZiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBvdGhlcndpc2UuDQo+Pj4+
Pj4+Pj4+ICsgKi8NCj4+Pj4+Pj4+Pj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPj4+Pj4+Pj4+PiAr
aW50DQo+Pj4+Pj4+Pj4+ICtfX3J0ZV9wbXVfZW5hYmxlX2dyb3VwKHZvaWQpOw0KPj4+Pj4+Pj4+
PiArDQo+Pj4+Pj4+Pj4+ICsvKioNCj4+Pj4+Pj4+Pj4gKyAqIEB3YXJuaW5nDQo+Pj4+Pj4+Pj4+
ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBu
b3RpY2UNCj4+Pj4+Pj4+Pj4gKyAqDQo+Pj4+Pj4+Pj4+ICsgKiBJbml0aWFsaXplIFBNVSBsaWJy
YXJ5Lg0KPj4+Pj4+Pj4+PiArICoNCj4+Pj4+Pj4+Pj4gKyAqIEB3YXJuaW5nIFRoaXMgc2hvdWxk
IGJlIG5vdCBjYWxsZWQgZGlyZWN0bHkuDQo+Pj4+Pj4+Pj4+ICsgKg0KPj4+Pj4+Pj4+PiArICog
QHJldHVybg0KPj4+Pj4+Pj4+PiArICogICAwIGluIGNhc2Ugb2Ygc3VjY2VzcywgbmVnYXRpdmUg
dmFsdWUgb3RoZXJ3aXNlLg0KPj4+Pj4+Pj4+PiArICovDQo+Pj4+Pj4+Pj4+ICtfX3J0ZV9leHBl
cmltZW50YWwNCj4+Pj4+Pj4+Pj4gK2ludA0KPj4+Pj4+Pj4+PiArcnRlX3BtdV9pbml0KHZvaWQp
Ow0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICsvKioNCj4+Pj4+Pj4+Pj4gKyAqIEB3YXJuaW5n
DQo+Pj4+Pj4+Pj4+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0
aG91dCBwcmlvciBub3RpY2UNCj4+Pj4+Pj4+Pj4gKyAqDQo+Pj4+Pj4+Pj4+ICsgKiBGaW5hbGl6
ZSBQTVUgbGlicmFyeS4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIFBNVQ0KPj4+Pj4+Pj4+
PiArY291bnRlcnMgYXJlIG5vIGxvbmdlciBiZWluZw0KPj4+Pj4gcmVhZC4NCj4+Pj4+Pj4+Pj4g
KyAqLw0KPj4+Pj4+Pj4+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+Pj4+Pj4+Pj4+ICt2b2lkDQo+
Pj4+Pj4+Pj4+ICtydGVfcG11X2Zpbmkodm9pZCk7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4g
Ky8qKg0KPj4+Pj4+Pj4+PiArICogQHdhcm5pbmcNCj4+Pj4+Pj4+Pj4gKyAqIEBiIEVYUEVSSU1F
TlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPj4+Pj4+Pj4+
PiArICoNCj4+Pj4+Pj4+Pj4gKyAqIEFkZCBldmVudCB0byB0aGUgZ3JvdXAgb2YgZW5hYmxlZCBl
dmVudHMuDQo+Pj4+Pj4+Pj4+ICsgKg0KPj4+Pj4+Pj4+PiArICogQHBhcmFtIG5hbWUNCj4+Pj4+
Pj4+Pj4gKyAqICAgTmFtZSBvZiBhbiBldmVudCBsaXN0ZWQgdW5kZXIgL3N5cy9idXMvZXZlbnRf
c291cmNlL2RldmljZXMvcG11L2V2ZW50cy4NCj4+Pj4+Pj4+Pj4gKyAqIEByZXR1cm4NCj4+Pj4+
Pj4+Pj4gKyAqICAgRXZlbnQgaW5kZXggaW4gY2FzZSBvZiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1
ZSBvdGhlcndpc2UuDQo+Pj4+Pj4+Pj4+ICsgKi8NCj4+Pj4+Pj4+Pj4gK19fcnRlX2V4cGVyaW1l
bnRhbA0KPj4+Pj4+Pj4+PiAraW50DQo+Pj4+Pj4+Pj4+ICtydGVfcG11X2FkZF9ldmVudChjb25z
dCBjaGFyICpuYW1lKTsNCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+PiArLyoqDQo+Pj4+Pj4+Pj4+
ICsgKiBAd2FybmluZw0KPj4+Pj4+Pj4+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBt
YXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+Pj4+Pj4+Pj4+ICsgKg0KPj4+Pj4+Pj4+
PiArICogUmVhZCBoYXJkd2FyZSBjb3VudGVyIGNvbmZpZ3VyZWQgdG8gY291bnQgb2NjdXJyZW5j
ZXMgb2YgYW4gZXZlbnQuDQo+Pj4+Pj4+Pj4+ICsgKg0KPj4+Pj4+Pj4+PiArICogQHBhcmFtIGlu
ZGV4DQo+Pj4+Pj4+Pj4+ICsgKiAgIEluZGV4IG9mIGFuIGV2ZW50IHRvIGJlIHJlYWQuDQo+Pj4+
Pj4+Pj4+ICsgKiBAcmV0dXJuDQo+Pj4+Pj4+Pj4+ICsgKiAgIEV2ZW50IHZhbHVlIHJlYWQgZnJv
bSByZWdpc3Rlci4gSW4gY2FzZSBvZiBlcnJvcnMgb3IgbGFjayBvZiBzdXBwb3J0DQo+Pj4+Pj4+
Pj4+ICsgKiAgIDAgaXMgcmV0dXJuZWQuIEluIG90aGVyIHdvcmRzLCBzdHJlYW0gb2YgemVyb3Mg
aW4gYSB0cmFjZSBmaWxlDQo+Pj4+Pj4+Pj4+ICsgKiAgIGluZGljYXRlcyBwcm9ibGVtIHdpdGgg
cmVhZGluZyBwYXJ0aWN1bGFyIFBNVSBldmVudCByZWdpc3Rlci4NCj4+Pj4+Pj4+Pj4gKyAqLw0K
Pj4+Pj4NCj4+Pj4+IEFub3RoZXIgcXVlc3Rpb24gLSBkbyB3ZSByZWFsbHkgbmVlZCAgdG8gaGF2
ZQ0KPj4+Pj4gX19ydGVfcG11X3JlYWRfdXNlcnBhZ2UoKSBhbmQgcnRlX3BtdV9yZWFkKCkgYXMg
c3RhdGljIGlubGluZSBmdW5jdGlvbnMgaW4gcHVibGljIGhlYWRlcj8NCj4+Pj4+IEFzIEkgdW5k
ZXJzdGFuZCwgYmVjYXVzZSBvZiB0aGF0IHdlIGFsc28gaGF2ZSB0byBtYWtlICdzdHJ1Y3QgcnRl
X3BtdV8qJw0KPj4+Pj4gZGVmaW5pdGlvbnMgYWxzbyBwdWJsaWMuDQo+Pj4+Pg0KPj4+Pj4+Pj4+
PiArX19ydGVfZXhwZXJpbWVudGFsDQo+Pj4+Pj4+Pj4+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lu
bGluZSB1aW50NjRfdCBydGVfcG11X3JlYWQodW5zaWduZWQNCj4+Pj4+Pj4+Pj4gK2ludA0KPj4+
Pj4+Pj4+PiAraW5kZXgpIHsNCj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgcnRlX3BtdV9ldmVudF9ncm91
cCAqZ3JvdXAgPSAmUlRFX1BFUl9MQ09SRShfZXZlbnRfZ3JvdXApOw0KPj4+Pj4+Pj4+PiArCWlu
dCByZXQ7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gKwlpZiAodW5saWtlbHkoIXJ0ZV9wbXUu
aW5pdGlhbGl6ZWQpKQ0KPj4+Pj4+Pj4+PiArCQlyZXR1cm4gMDsNCj4+Pj4+Pj4+Pj4gKw0KPj4+
Pj4+Pj4+PiArCWlmICh1bmxpa2VseSghZ3JvdXAtPmVuYWJsZWQpKSB7DQo+Pj4+Pj4+Pj4+ICsJ
CXJldCA9IF9fcnRlX3BtdV9lbmFibGVfZ3JvdXAoKTsNCj4+Pj4+Pj4+Pj4gKwkJaWYgKHJldCkN
Cj4+Pj4+Pj4+Pj4gKwkJCXJldHVybiAwOw0KPj4+Pj4+Pj4+PiArCX0NCj4+Pj4+Pj4+Pj4gKw0K
Pj4+Pj4+Pj4+PiArCWlmICh1bmxpa2VseShpbmRleCA+PSBydGVfcG11Lm51bV9ncm91cF9ldmVu
dHMpKQ0KPj4+Pj4+Pj4+PiArCQlyZXR1cm4gMDsNCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+PiAr
CXJldHVybiBfX3J0ZV9wbXVfcmVhZF91c2VycGFnZShncm91cC0+bW1hcF9wYWdlc1tpbmRleF0p
Ow0KPj4+Pj4+Pj4+PiArfQ0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICsjaWZkZWYgX19jcGx1
c3BsdXMNCj4+Pj4+Pj4+Pj4gK30NCj4+Pj4+Pj4+Pj4gKyNlbmRpZg0KPj4+Pj4+Pj4+PiArDQo+
Pg0KDQo=