From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 2DEDEA04B7;
	Wed, 14 Oct 2020 13:42:37 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 0EA931DC4D;
	Wed, 14 Oct 2020 13:42:36 +0200 (CEST)
Received: from hqnvemgate26.nvidia.com (hqnvemgate26.nvidia.com
 [216.228.121.65]) by dpdk.org (Postfix) with ESMTP id 079E01DC47
 for <dev@dpdk.org>; Wed, 14 Oct 2020 13:42:32 +0200 (CEST)
Received: from hqmail.nvidia.com (Not Verified[216.228.121.13]) by
 hqnvemgate26.nvidia.com (using TLS: TLSv1.2, AES256-SHA)
 id <B5f86e41a0000>; Wed, 14 Oct 2020 04:42:18 -0700
Received: from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL109.nvidia.com
 (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 14 Oct
 2020 11:42:18 +0000
Received: from NAM02-BL2-obe.outbound.protection.outlook.com (104.47.38.52) by
 HQMAIL101.nvidia.com (172.20.187.10) with Microsoft SMTP Server
 (TLS) id
 15.0.1473.3 via Frontend Transport; Wed, 14 Oct 2020 11:42:18 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Zk+9odp6WeCnQ2hbXve0gtAr9zI3ROt+hDtl1e1WOlsXYMHQ4aBQuzZQarXrzhxDYfSObGcoNRxQoDmHZvsyq01WLBONRczVpaOLzvzmlgcUfU9ob0RFKFDvZq9vZNOUTt+mklVWnq7h41rIFwsA0oGpjspRQyI8C2TxTDA8jwAiwDwPoLDpGQ+UQUGVY0ysQZ9JO25v+Nv96hxDzd0gJU214DBmU/i1hlDvW339Jx7E0PVw+JKrBOrB+cwudQtnFmSvZKUK9LJU68ID6YeanQDskgozzO5W4FHyyIiQqS8TUOsNM3PqROBZJMBXxOrquaC8+x9ls2NiuWgO0VB1IQ==
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-SenderADCheck;
 bh=uHH2DGQh9U6Y4JeZSlpiiVy8Poeijqe4oCdioLUjV4k=;
 b=jOkm5ezEkf2EazM/DOlrdwzde7MkgoRYODyNlTOedYVQlK6VmTTYHKEVbCBecfIhgTQl7QpBdeBqTf2CUu+3W6F3ntC3RNR+VUg4MQXwLBxeTimxic/pGhVLmHuCR6W3gWLNYvj23unKEjUFEIuQPlfoCHNz5V89AetmZGv81Fo/kSiiPi6bhluavF1jLVdpi8CZyEXQoKto3Rj4w6UiopUrGWwyMteOLAUF9NkzRi/D0bVEUsiLZ5x8IHn1DaXUSDimIg5wvj9ojWdTm0wySmTUlYPKWnPIv+sVwn/AEl9e0K/9pKbFoS2dd3mwcozq599+JiziHKr0XJaV0ySaow==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
 dkim=pass header.d=nvidia.com; arc=none
Received: from MWHPR1201MB2525.namprd12.prod.outlook.com
 (2603:10b6:300:e0::19) by MWHPR1201MB2476.namprd12.prod.outlook.com
 (2603:10b6:300:de::23) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.22; Wed, 14 Oct
 2020 11:42:17 +0000
Received: from MWHPR1201MB2525.namprd12.prod.outlook.com
 ([fe80::3ccb:ec09:9346:54b1]) by MWHPR1201MB2525.namprd12.prod.outlook.com
 ([fe80::3ccb:ec09:9346:54b1%7]) with mapi id 15.20.3477.021; Wed, 14 Oct 2020
 11:42:16 +0000
From: Andrey Vesnovaty <andreyv@nvidia.com>
To: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>, "dev@dpdk.org"
 <dev@dpdk.org>
CC: "jer@marvell.com" <jer@marvell.com>, "jerinjacobk@gmail.com"
 <jerinjacobk@gmail.com>, NBU-Contact-Thomas Monjalon <thomas@monjalon.net>,
 "ferruh.yigit@intel.com" <ferruh.yigit@intel.com>,
 "stephen@networkplumber.org" <stephen@networkplumber.org>,
 "bruce.richardson@intel.com" <bruce.richardson@intel.com>, Ori Kam
 <orika@nvidia.com>, Slava Ovsiienko <viacheslavo@nvidia.com>,
 "andrey.vesnovaty@gmail.com" <andrey.vesnovaty@gmail.com>, "mdr@ashroe.eu"
 <mdr@ashroe.eu>, "nhorman@tuxdriver.com" <nhorman@tuxdriver.com>,
 "ajit.khaparde@broadcom.com" <ajit.khaparde@broadcom.com>,
 "samik.gupta@broadcom.com" <samik.gupta@broadcom.com>
Thread-Topic: [dpdk-dev] [PATCH v7 1/2] ethdev: add flow shared action API
Thread-Index: AQHWnWm2rCwoe3NncEu6tcF3cwumgamUCoyAgAGZ+FCAAQ0CAIAAUWdw
Date: Wed, 14 Oct 2020 11:42:16 +0000
Message-ID: <MWHPR1201MB2525F33E911F325DC5879AA3DB050@MWHPR1201MB2525.namprd12.prod.outlook.com>
References: <20200702120511.16315-1-andreyv@mellanox.com>
 <20201008115143.13208-1-andreyv@nvidia.com>
 <20201008115143.13208-2-andreyv@nvidia.com>
 <3d2a7271-3e5b-9527-481b-5086e9a7affd@oktetlabs.ru>
 <MWHPR1201MB2525B99A326205E8A34AABDCDB040@MWHPR1201MB2525.namprd12.prod.outlook.com>
 <d3a63fbe-7373-bfd7-b166-12c56fe782c6@oktetlabs.ru>
In-Reply-To: <d3a63fbe-7373-bfd7-b166-12c56fe782c6@oktetlabs.ru>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: oktetlabs.ru; dkim=none (message not signed)
 header.d=none;oktetlabs.ru; dmarc=none action=none header.from=nvidia.com;
x-originating-ip: [87.71.167.32]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a8b9680c-fc23-44b4-1b49-08d870363398
x-ms-traffictypediagnostic: MWHPR1201MB2476:
x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <MWHPR1201MB24760185C546DBA6EF9EEAE1DB050@MWHPR1201MB2476.namprd12.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: IMkhAv2bAhf4/nPjv7Bc18Phh9HI4iLI5j2icTbh2Asz2hrHrNYVk4qA0HR2xNy6K8gJk/giRBMTiOWv2AkSrxmldgXZz4LFF0ViyZftvGT9UtSO9sPFfN8XHfDuWz3ZkbtFr3tixcObP/6Chmi+qAzK/ItAKXT3HD6/FtMNvdcXKJqSOFv2BQvOz4nQPHBMOUW/yBmR3lTHn8+QKQ6R8q1sYX3Bdd16cAEtojxHO6/nnno/19YXZH1YauFv/NT7qccCHF6bsw8q9E9SbcfanE3Egrj0kf+Nslq2m0SQoFQ0t11dWYJmxwSZgB6nok5G5bAGGVAMtT2eWR0lmBRfog==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:MWHPR1201MB2525.namprd12.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(4636009)(346002)(136003)(376002)(366004)(396003)(39860400002)(66476007)(478600001)(26005)(316002)(86362001)(9686003)(110136005)(55016002)(6506007)(7696005)(53546011)(2906002)(186003)(54906003)(33656002)(30864003)(5660300002)(7416002)(66556008)(52536014)(66946007)(64756008)(66446008)(76116006)(8676002)(8936002)(4326008)(71200400001)(83380400001);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata: Bc/t1KD6yNW6gCLrYtrNRgItw3IQpahb3ppA7WHhlw/bkOYLYpDGMvvma52K9W+NukpCFDJkitYSr3VcYnG6DM/OSXu2cnJEgJqxJb2sp7DXinpqo0F3tUFX7pSG1GpEJz3WupaUXcG+uShlT8aAu5G9MQKZcw82WiESvbbSZcK6H4Qm/B5vvK3T2e4MkQVb8PxpbiXPpCIwOx+/VAvDplYz+o2Ho1ieYNZryryngIbVYkjS4/6Sd6sxH5oECDoqwDU9nFlONJWbUo79i54TTJcVA7JUwwsj6zlwILmN6yhRx7EB4grd2bkuasRACa/VRycST7oYdy+c5US6nMf+6wR61nonyhB0LDiosYzaVESMtkoCNuQ+Af1k+bW1QcM6rfr5qG0EI12jdjbUKDDbI5aqQyhpeNUEelvfIF6kqFoUWR/UCTLV1ou9ViYvisORIZDStIlvCWSeeiyduATIQvVhdQHjbM2Iubws28l8tqesnVwTiRnOsYhqU09zxs3yWv0jFeho+aaVLEI2aYpuVJfQ4DZs8NOzwSFqpe4lJzE406zzVsaSNmK8VszTR1fz9AxbOZLNCxaMEYyL3iZjynd+KEB+utPSdGrfAXCAaN13PFrEBA0HN3TpR9uyS3blgjYup6eTh7tjAGULfA584w==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MWHPR1201MB2525.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a8b9680c-fc23-44b4-1b49-08d870363398
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Oct 2020 11:42:16.6307 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 1Mh12LC0yrQ1LQEMiA9RMm5ChJwK3Kyxmr9+7g4LcpgJxsBMBR+Mh1XbdMzJTjmrCCEqNnRvQFnVq5Tsl4fGfA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1201MB2476
X-OriginatorOrg: Nvidia.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1;
 t=1602675738; bh=uHH2DGQh9U6Y4JeZSlpiiVy8Poeijqe4oCdioLUjV4k=;
 h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:
 CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:
 In-Reply-To:Accept-Language:Content-Language:X-MS-Has-Attach:
 X-MS-TNEF-Correlator:authentication-results:x-originating-ip:
 x-ms-publictraffictype:x-ms-office365-filtering-correlation-id:
 x-ms-traffictypediagnostic:x-ld-processed:
 x-ms-exchange-transport-forked:x-microsoft-antispam-prvs:
 x-ms-oob-tlc-oobclassifiers:x-ms-exchange-senderadcheck:
 x-microsoft-antispam:x-microsoft-antispam-message-info:
 x-forefront-antispam-report:x-ms-exchange-antispam-messagedata:
 Content-Type:Content-Transfer-Encoding:MIME-Version:
 X-MS-Exchange-CrossTenant-AuthAs:
 X-MS-Exchange-CrossTenant-AuthSource:
 X-MS-Exchange-CrossTenant-Network-Message-Id:
 X-MS-Exchange-CrossTenant-originalarrivaltime:
 X-MS-Exchange-CrossTenant-fromentityheader:
 X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype:
 X-MS-Exchange-CrossTenant-userprincipalname:
 X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg;
 b=qZdZUQF0+qegCVik9CY0qXPei81b5jEjALfX8GGDxyM4vu1Dv7Z2qNNcTxwysZZ/e
 PRXgTvHhhhtSY4PVaD19s0xYOIUJa91UaR+HqQ7W0Zk5RG+TDXp0eC5wg7OQS4HCbx
 ZpivLZnWWIpG1tjcIF73pNKlGYRg0u+5z1sIrGhiu2HuHuoAmKvFcUqjJCQ/Cmc9uC
 d6G97UaP1sMwAb8rrdn7gE8GlUywaMhQCMLfM6fg+BLIAOH7IaU/XYQ2IzAICbpV8c
 8wQpCqn5Y/UYxUKQZ7rmBq72zTYzzfhV4G3IKHvcI9l1MWuHJzBRmpdFUb8j0C6lpx
 vBZ2ZOCp2wSLA==
Subject: Re: [dpdk-dev] [PATCH v7 1/2] ethdev: add flow shared action API
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
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
Sender: "dev" <dev-bounces@dpdk.org>

SGkgQW5kcmV3DQoNCkFsbCB5b3VyIHN1Z2dlc3Rpb25zIGFwcGxpZWQgaW4gdjggc2VyaWVzLg0K
DQpUaGFua3MsDQpBbmRyZXkNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t
OiBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT4NCj4gU2Vu
dDogV2VkbmVzZGF5LCBPY3RvYmVyIDE0LCAyMDIwIDk6NTAgQU0NCj4gVG86IEFuZHJleSBWZXNu
b3ZhdHkgPGFuZHJleXZAbnZpZGlhLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogamVyQG1hcnZl
bGwuY29tOyBqZXJpbmphY29ia0BnbWFpbC5jb207IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxv
bg0KPiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IGZlcnJ1aC55aWdpdEBpbnRlbC5jb207DQo+IHN0
ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnOyBicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbTsgT3Jp
IEthbQ0KPiA8b3Jpa2FAbnZpZGlhLmNvbT47IFNsYXZhIE92c2lpZW5rbyA8dmlhY2hlc2xhdm9A
bnZpZGlhLmNvbT47DQo+IGFuZHJleS52ZXNub3ZhdHlAZ21haWwuY29tOyBtZHJAYXNocm9lLmV1
OyBuaG9ybWFuQHR1eGRyaXZlci5jb207DQo+IGFqaXQua2hhcGFyZGVAYnJvYWRjb20uY29tOyBz
YW1pay5ndXB0YUBicm9hZGNvbS5jb20NCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENI
IHY3IDEvMl0gZXRoZGV2OiBhZGQgZmxvdyBzaGFyZWQgYWN0aW9uIEFQSQ0KPiANCj4gSGkgQW5k
cmV5LA0KPiANCj4gT24gMTAvMTMvMjAgMTE6MDYgUE0sIEFuZHJleSBWZXNub3ZhdHkgd3JvdGU6
DQo+ID4gSGkgQW5kcmV3Lg0KPiA+DQo+ID4gVGhhbmtzIGZvciB0aGUgaW5wdXQuDQo+ID4gQWxs
IHNwZWxsaW5nICYgcmVwaHJhc2VzIHdpbGwgYmUgYXBwbGllZCAgUFNCIGZvciB0aGUgcmVzdC4N
Cj4gPiBXaWxsIHB1Ymxpc2ggdjggdmVyeSBzb29uLg0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IEFu
ZHJleQ0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEFu
ZHJldyBSeWJjaGVua28gPEFuZHJldy5SeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiA+PiBTZW50
OiBNb25kYXksIE9jdG9iZXIgMTIsIDIwMjAgNToxOSBQTQ0KPiA+PiBUbzogQW5kcmV5IFZlc25v
dmF0eSA8YW5kcmV5dkBudmlkaWEuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4+IENjOiBqZXJAbWFy
dmVsbC5jb207IGplcmluamFjb2JrQGdtYWlsLmNvbTsgTkJVLUNvbnRhY3QtVGhvbWFzDQo+IE1v
bmphbG9uDQo+ID4+IDx0aG9tYXNAbW9uamFsb24ubmV0PjsgZmVycnVoLnlpZ2l0QGludGVsLmNv
bTsNCj4gPj4gc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc7IGJydWNlLnJpY2hhcmRzb25AaW50
ZWwuY29tOyBPcmkgS2FtDQo+ID4+IDxvcmlrYUBudmlkaWEuY29tPjsgU2xhdmEgT3ZzaWllbmtv
IDx2aWFjaGVzbGF2b0BudmlkaWEuY29tPjsNCj4gPj4gYW5kcmV5LnZlc25vdmF0eUBnbWFpbC5j
b207IG1kckBhc2hyb2UuZXU7IG5ob3JtYW5AdHV4ZHJpdmVyLmNvbTsNCj4gPj4gYWppdC5raGFw
YXJkZUBicm9hZGNvbS5jb207IHNhbWlrLmd1cHRhQGJyb2FkY29tLmNvbQ0KPiA+PiBTdWJqZWN0
OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjcgMS8yXSBldGhkZXY6IGFkZCBmbG93IHNoYXJlZCBh
Y3Rpb24gQVBJDQo+ID4+DQo+ID4+ICJhZGQgZmxvdyBzaGFyZWQgYWN0aW9uIEFQSSINCj4gPj4N
Cj4gPj4gSXMgZmxvdyBzaGFyZWQ/IE1heSBiZSAiYWRkIHNoYXJlZCBhY3Rpb25zIHRvIGZsb3cg
QVBJIi4NCj4gPg0KPiA+IEFjY2VwdGVkLCB3aWxsIHVwZGF0ZSBjb21taXQgbWVzc2FnZS4NCj4g
Pj4NCj4gPj4gT24gMTAvOC8yMCAyOjUxIFBNLCBBbmRyZXkgVmVzbm92YXR5IHdyb3RlOg0KPiA+
Pj4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBleHRlbnNpb24gb2YgRFBESyBmbG93IGFjdGlvbiBB
UEkgZW5hYmxpbmcNCj4gPj4NCj4gPj4gIlRoaXMgY29tbWl0IiBhbmQgIkRQREsiIGFyZSBub3Qg
bmVjZXNzYXJ5IGluIGRlc2NyaXB0aW9uLg0KPiA+PiBJdCBpcyBhIGNvbW1pdCBkZXNjcmlwdGlv
biBhbmQgdGhlIHBhdGNoIGlzIHRvIERQREsgdHJlZS4NCj4gPj4gQ29uc2lkZXIganVzdDoNCj4g
Pj4gIkludHJvZHVjZSBleHRlbnNpb24gb2YgZmxvdyBhY3Rpb24gQVBJIGVuYWJsaW5nLi4uIg0K
PiA+DQo+ID4gQWNjZXB0ZWQsIHdpbGwgdXBkYXRlIGNvbW1pdCBtZXNzYWdlLg0KPiA+Pg0KPiA+
Pj4gc2hhcmluZyBvZiBzaW5nbGUgcnRlX2Zsb3dfYWN0aW9uIGluIG11bHRpcGxlIGZsb3dzLiBU
aGUgQVBJIGludGVuZGVkIGZvcg0KPiA+Pj4gUE1Ecywgd2hlcmUgbXVsdGlwbGUgSFcgb2ZmbG9h
ZGVkIGZsb3dzIGNhbiByZXVzZSB0aGUgc2FtZSBIVw0KPiA+Pj4gZXNzZW5jZS9vYmplY3QgcmVw
cmVzZW50aW5nIGZsb3cgYWN0aW9uIGFuZCBtb2RpZmljYXRpb24gb2Ygc3VjaCBhbg0KPiA+Pj4g
ZXNzZW5jZS9vYmplY3QgYWZmZWN0cyBhbGwgdGhlIHJ1bGVzIHVzaW5nIGl0Lg0KPiA+Pj4NCj4g
Pj4+IE1vdGl2YXRpb24gYW5kIGV4YW1wbGUNCj4gPj4+ID09PQ0KPiA+Pj4gQWRkaW5nIG9yIHJl
bW92aW5nIG9uZSBvciBtb3JlIHF1ZXVlcyB0byBSU1MgdXNlZCBieSBtdWx0aXBsZSBmbG93IHJ1
bGVzDQo+ID4+PiBpbXBvc2VzIHBlciBydWxlIHRvbGwgZm9yIGN1cnJlbnQgRFBESyBmbG93IEFQ
STsgdGhlIHNjZW5hcmlvIHJlcXVpcmVzDQo+ID4+PiBmb3IgZWFjaCBmbG93IHNoYXJpbmcgY2xv
bmVkIFJTUyBhY3Rpb246DQo+ID4+PiAtIGNhbGwgYHJ0ZV9mbG93X2Rlc3Ryb3koKWANCj4gPj4+
IC0gY2FsbCBgcnRlX2Zsb3dfY3JlYXRlKClgIHdpdGggbW9kaWZpZWQgUlNTIGFjdGlvbg0KPiA+
Pj4NCj4gPj4+IEFQSSBmb3Igc2hhcmluZyBhY3Rpb24gYW5kIGl0cyBpbi1wbGFjZSB1cGRhdGUg
YmVuZWZpdHM6DQo+ID4+PiAtIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2YgbXVsdGlwbGUgUlNTIGZs
b3cgcnVsZXMgcmVjb25maWd1cmF0aW9uDQo+ID4+PiAtIG9wdGltaXplIHJlc291cmNlIHV0aWxp
emF0aW9uIGJ5IHNoYXJpbmcgYWN0aW9uIGFjcm9zcyBtdWx0aXBsZQ0KPiA+Pj4gICBmbG93cw0K
PiA+Pj4NCj4gPj4+IENoYW5nZSBkZXNjcmlwdGlvbg0KPiA+Pj4gPT09DQo+ID4+Pg0KPiA+Pj4g
U2hhcmVkIGFjdGlvbg0KPiA+Pj4gPT09DQo+ID4+PiBJbiBvcmRlciB0byByZXByZXNlbnQgZmxv
dyBhY3Rpb24gc2hhcmVkIGJ5IG11bHRpcGxlIGZsb3dzIG5ldyBhY3Rpb24NCj4gPj4+IHR5cGUg
UlRFX0ZMT1dfQUNUSU9OX1RZUEVfU0hBUkVEIGlzIGludHJvZHVjZWQgKHNlZSBgZW51bQ0KPiA+
Pj4gcnRlX2Zsb3dfYWN0aW9uX3R5cGVgKS4NCj4gPj4+IEFjdHVhbGx5IHRoZSBpbnRyb2R1Y2Vk
IEFQSSBkZWNvdXBsZXMgYWN0aW9uIGZyb20gYW55IHNwZWNpZmljIGZsb3cgYW5kDQo+ID4+PiBl
bmFibGVzIHNoYXJpbmcgb2Ygc2luZ2xlIGFjdGlvbiBieSBpdHMgaGFuZGxlIGFjcm9zcyBtdWx0
aXBsZSBmbG93cy4NCj4gPj4+DQo+ID4+PiBTaGFyZWQgYWN0aW9uIGNyZWF0ZS91c2UvZGVzdHJv
eQ0KPiA+Pj4gPT09DQo+ID4+PiBTaGFyZWQgYWN0aW9uIG1heSBiZSByZXVzZWQgYnkgc29tZSBv
ciBub25lIGZsb3cgcnVsZXMgYXQgYW55IGdpdmVuDQo+ID4+PiBtb21lbnQsIGkuZS4gc2hhcmVk
IGFjdGlvbiByZXNpZGVzIG91dHNpZGUgb2YgdGhlIGNvbnRleHQgb2YgYW55IGZsb3cuDQo+ID4+
PiBTaGFyZWQgYWN0aW9uIHJlcHJlc2VudCBIVyByZXNvdXJjZXMvb2JqZWN0cyB1c2VkIGZvciBh
Y3Rpb24gb2ZmbG9hZGluZw0KPiA+Pj4gaW1wbGVtZW50YXRpb24uDQo+ID4+PiBBUEkgZm9yIHNo
YXJlZCBhY3Rpb24gY3JlYXRlIChzZWUgYHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fY3JlYXRlKClg
KToNCj4gPj4+IC0gc2hvdWxkIGFsbG9jYXRlIEhXIHJlc291cmNlcyBhbmQgbWFrZSByZWxhdGVk
IGluaXRpYWxpemF0aW9ucyByZXF1aXJlZA0KPiA+Pj4gICBmb3Igc2hhcmVkIGFjdGlvbiBpbXBs
ZW1lbnRhdGlvbi4NCj4gPj4+IC0gbWFrZSBuZWNlc3NhcnkgcHJlcGFyYXRpb25zIHRvIG1haW50
YWluIHNoYXJlZCBhY2Nlc3MgdG8NCj4gPj4+ICAgdGhlIGFjdGlvbiByZXNvdXJjZXMsIGNvbmZp
Z3VyYXRpb24gYW5kIHN0YXRlLg0KPiA+Pj4gQVBJIGZvciBzaGFyZWQgYWN0aW9uIGRlc3Ryb3kg
KHNlZSBgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl9kZXN0cm95KClgKQ0KPiA+Pj4gc2hvdWxkIHJl
bGVhc2UgSFcgcmVzb3VyY2VzIGFuZCBtYWtlIHJlbGF0ZWQgY2xlYW51cHMgcmVxdWlyZWQgZm9y
IHNoYXJlZA0KPiA+Pj4gYWN0aW9uIGltcGxlbWVudGF0aW9uLg0KPiA+Pj4NCj4gPj4+IEluIG9y
ZGVyIHRvIHNoYXJlIHNvbWUgZmxvdyBhY3Rpb24gcmV1c2UgdGhlIGhhbmRsZSBvZiB0eXBlDQo+
ID4+PiBgc3RydWN0IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25gIHJldHVybmVkIGJ5DQo+ID4+PiBy
dGVfZmxvd19zaGFyZWRfYWN0aW9uX2NyZWF0ZSgpIGFzIGEgYGNvbmZgIGZpZWxkIG9mDQo+ID4+
PiBgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbmAgKHNlZSAiZXhhbXBsZSIgc2VjdGlvbikuDQo+ID4+
Pg0KPiA+Pj4gSWYgc29tZSBzaGFyZWQgYWN0aW9uIG5vdCB1c2VkIGJ5IGFueSBmbG93IHJ1bGUg
YWxsIHJlc291cmNlcyBhbGxvY2F0ZWQNCj4gPj4+IGJ5IHRoZSBzaGFyZWQgYWN0aW9uIGNhbiBi
ZSByZWxlYXNlZCBieSBydGVfZmxvd19zaGFyZWRfYWN0aW9uX2Rlc3Ryb3koKQ0KPiA+Pj4gKHNl
ZSAiZXhhbXBsZSIgc2VjdGlvbikuIFRoZSBzaGFyZWQgYWN0aW9uIGhhbmRsZSBwYXNzZWQgYXMg
YXJndW1lbnQgdG8NCj4gPj4+IGRlc3Ryb3kgQVBJIHNob3VsZCBub3QgYmUgdXNlZCBhbnkgZnVy
dGhlciBpLmUuIHJlc3VsdCBvZiB0aGUgdXNhZ2UgaXMNCj4gPj4+IHVuZGVmaW5lZC4NCj4gPj4+
DQo+ID4+PiBTaGFyZWQgYWN0aW9uIHJlLWNvbmZpZ3VyYXRpb24NCj4gPj4+ID09PQ0KPiA+Pj4g
U2hhcmVkIGFjdGlvbiBiZWhhdmlvciBkZWZpbmVkIGJ5IGl0cyBjb25maWd1cmF0aW9uIGNhbiBi
ZSB1cGRhdGVkIHZpYQ0KPiA+Pj4gcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl91cGRhdGUoKSAoc2Vl
ICJleGFtcGxlIiBzZWN0aW9uKS4gVGhlIHNoYXJlZA0KPiA+Pj4gYWN0aW9uIHVwZGF0ZSBvcGVy
YXRpb24gbW9kaWZpZXMgSFcgcmVsYXRlZCByZXNvdXJjZXMvb2JqZWN0cyBhbGxvY2F0ZWQNCj4g
Pj4+IG9uIHRoZSBhY3Rpb24gY3JlYXRpb24uIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBwZXJm
b3JtZWQgYnkgdGhlIHVwZGF0ZQ0KPiA+Pj4gb3BlcmF0aW9uIHNob3VsZCBub3QgZGVwZW5kIG9u
IHRoZSBudW1iZXIgb2YgZmxvd3Mgc2hhcmluZyB0aGUgcmVsYXRlZA0KPiA+Pj4gYWN0aW9uLiBP
biByZXR1cm4gb2Ygc2hhcmVkIGFjdGlvbiB1cGRhdGUgQVBJIGFjdGlvbiBiZWhhdmlvciBzaG91
bGQgYmUNCj4gPj4+IGFjY29yZGluZyB0byB1cGRhdGVkIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBm
bG93cyBzaGFyaW5nIHRoZSBhY3Rpb24uDQo+ID4+Pg0KPiA+Pj4gU2hhcmVkIGFjdGlvbiBxdWVy
eQ0KPiA+Pj4gPT09DQo+ID4+PiBQcm92aWRlIHNlcGFyYXRlIEFQSSB0byBxdWVyeSBzaGFyZWQg
YWN0aW9uIHN0YXRlIChzZWUNCj4gPj4+IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fdXBkYXRlKCkp
LiBUYWtpbmcgYSBjb3VudGVyIGFzIGFuIGV4YW1wbGU6IHF1ZXJ5DQo+ID4+PiByZXR1cm5zIHZh
bHVlIGFnZ3JlZ2F0aW5nIGFsbCBjb3VudGVyIGluY3JlbWVudHMgYWNyb3NzIGFsbCBmbG93IHJ1
bGVzDQo+ID4+PiBzaGFyaW5nIHRoZSBjb3VudGVyLiBUaGlzIEFQSSBkb2Vzbid0IHF1ZXJ5IHNo
YXJlZCBhY3Rpb24gY29uZmlndXJhdGlvbg0KPiA+Pj4gc2luY2UgaXQgaXMgY29udHJvbGxlZCBi
eSBydGVfZmxvd19zaGFyZWRfYWN0aW9uX2NyZWF0ZSgpIGFuZA0KPiA+Pj4gcnRlX2Zsb3dfc2hh
cmVkX2FjdGlvbl91cGRhdGUoKSBBUElzIGFuZCBubyBzdXBwb3NlZCB0byBjaGFuZ2UgYnkgb3Ro
ZXINCj4gPj4+IG1lYW5zLg0KPiA+Pj4NCj4gPj4+IFBNRCBzdXBwb3J0DQo+ID4+PiA9PT0NCj4g
Pj4+IFRoZSBzdXBwb3J0IG9mIGludHJvZHVjZWQgQVBJIGlzIHB1cmUgUE1EIHNwZWNpZmljIGRl
c2lnbiBhbmQNCj4gPj4+IHJlc3BvbnNpYmlsaXR5IGZvciBlYWNoIGFjdGlvbiB0eXBlIChzZWUg
c3RydWN0IHJ0ZV9mbG93X29wcykuDQo+ID4+Pg0KPiA+Pj4gdGVzdHBtZA0KPiA+Pj4gPT09DQo+
ID4+PiBJbiBvcmRlciB0byB1dGlsaXplIGludHJvZHVjZWQgQVBJIHRlc3RwbWQgY2xpIG1heSBp
bXBsZW1lbnQgZm9sbG93aW5nDQo+ID4+PiBleHRlbnNpb24NCj4gPj4+IGNyZWF0ZS91cGRhdGUv
ZGVzdHJveS9xdWVyeSBzaGFyZWQgYWN0aW9uIGFjY29yZGluZ2x5DQo+ID4+Pg0KPiA+Pj4gZmxv
dyBzaGFyZWRfYWN0aW9uIChwb3J0KSBjcmVhdGUge2FjdGlvbl9pZCAoaWQpfSAoYWN0aW9uKSAv
IGVuZA0KPiA+Pj4gZmxvdyBzaGFyZWRfYWN0aW9uIChwb3J0KSB1cGRhdGUgKGlkKSAoYWN0aW9u
KSAvIGVuZA0KPiA+Pj4gZmxvdyBzaGFyZWRfYWN0aW9uIChwb3J0KSBkZXN0cm95IGFjdGlvbl9p
ZCAoaWQpIHthY3Rpb25faWQgKGlkKSBbLi4uXX0NCj4gPj4+IGZsb3cgc2hhcmVkX2FjdGlvbiAo
cG9ydCkgcXVlcnkgKGlkKQ0KPiA+Pj4NCj4gPj4+IHRlc3RwbWQgZXhhbXBsZQ0KPiA+Pj4gPT09
DQo+ID4+Pg0KPiA+Pj4gY29uZmlndXJlIHJzcyB0byBxdWV1ZXMgMSAmIDINCj4gPj4+DQo+ID4+
Pj4gZmxvdyBzaGFyZWRfYWN0aW9uIDAgY3JlYXRlIGFjdGlvbl9pZCAxMDAgcnNzIHF1ZXVlcyAx
IDIgZW5kIC8gZW5kDQo+ID4+Pg0KPiA+Pj4gY3JlYXRlIGZsb3cgcnVsZSB1dGlsaXppbmcgc2hh
cmVkIGFjdGlvbg0KPiA+Pj4NCj4gPj4+PiBmbG93IGNyZWF0ZSAwIGluZ3Jlc3MgXA0KPiA+Pj4g
ICAgIHBhdHRlcm4gZXRoIGRzdCBpcyAwYzo0MjphMToxNTpmZDphYyAvIGlwdjYgLyB0Y3AgLyBl
bmQgXA0KPiA+Pj4gICBhY3Rpb25zIHNoYXJlZCAxMDAgLyBlbmQNCj4gPj4+DQo+ID4+PiBhZGQg
MiBtb3JlIHF1ZXVlcw0KPiA+Pj4NCj4gPj4+PiBmbG93IHNoYXJlZF9hY3Rpb24gMCBtb2RpZnkg
MTAwIHJzcyBxdWV1ZXMgMSAyIDMgNCBlbmQgLyBlbmQNCj4gPj4NCj4gPj4gdGVzdHBtZCBpcyBv
dXQtb2Ytc2NvcGUgb2YgdGhlIHBhdGNoIGFuZCBpdCBpcyBiZXR0ZXIgdG8NCj4gPj4gcmVtb3Zl
IHRoZSBkZXNjcmlwdGlvbiB0byBhdm9pZCB1bnN5bmMgaWYgdGVzdHBtZA0KPiA+PiBjb21tYW5k
cyBhcmUgY2hhbmdlZC4NCj4gPg0KPiA+IFRoZXJlIGlzIHN0aWxsIGFkZGVkIHZhbHVlIGlzIHRl
c3RwbWQgZXhhbXBsZSBkZW1vbnN0cmF0aW5nIHVzYWdlIG9mDQo+ID4gc2hhcmVkIGFjdGlvbiB3
aXRoIHJ0ZSBmbG93cy4gSSB3aWxsIHVwZGF0ZSB0aGUgZXhhbXBsZSB0byByZWZsZWN0IHRoZSBj
dXJyZW50DQo+ID4gdGVzdHBtZCBzeW50YXggZm9yIHNoYXJlZCBhY3Rpb24uDQo+IA0KPiBZZXMg
YW5kIG5vLiBJTUhPIEl0IHdvdWxkIGJlIE9LIGZvciBzZXJpZXMgZGVzY3JpcHRpb24gZXRjLA0K
PiBidXQgbm90IE9LIGZvciB0aGUgY2hhbmdlc2V0IGRlc2NyaXB0aW9uIHdoaWNoIHdpbGwgYmUN
Cj4ga2VwdCBpbiB0aGUgaGlzdG9yeSBhbmQgd2lsbCBiZWNvbWUgbWlzbGVhZGluZyB3aGVuDQo+
IGNvbW1hbmRzIGFyZSBjaGFuZ2VkLiBJIHRoaW5rIHRoYXQgbm8gaW5mb3JtYXRpb24gaXMgYmV0
dGVyDQo+IHRoYW4gcG90ZW50aWFsbHkgd3JvbmcgaW5mb3JtYXRpb24uDQo+IA0KPiBbc25pcF0N
Cj4gDQo+ID4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldl92ZXJz
aW9uLm1hcA0KPiA+PiBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXZfdmVyc2lvbi5tYXAN
Cj4gPj4+IGluZGV4IGM5NWVmNTE1N2EuLmE4YTQ4MjFkYmIgMTAwNjQ0DQo+ID4+PiAtLS0gYS9s
aWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2X3ZlcnNpb24ubWFwDQo+ID4+PiArKysgYi9saWIv
bGlicnRlX2V0aGRldi9ydGVfZXRoZGV2X3ZlcnNpb24ubWFwDQo+ID4+PiBAQCAtMjI5LDYgKzIy
OSwxMCBAQCBFWFBFUklNRU5UQUwgew0KPiA+Pj4gIAkjIGFkZGVkIGluIDIwLjExDQo+ID4+PiAg
CXJ0ZV9ldGhfbGlua19zcGVlZF90b19zdHI7DQo+ID4+PiAgCXJ0ZV9ldGhfbGlua190b19zdHI7
DQo+ID4+PiArCXJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fY3JlYXRlOw0KPiA+Pj4gKwlydGVfZmxv
d19zaGFyZWRfYWN0aW9uX2Rlc3Ryb3k7DQo+ID4+PiArCXJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25f
dXBkYXRlOw0KPiA+Pj4gKwlydGVfZmxvd19zaGFyZWRfYWN0aW9uX3F1ZXJ5Ow0KPiA+Pg0KPiA+
PiBTaG91bGRuJ3QgaXQgYmUgYWxwaGFiZXRpY2FsbHkgc29ydGVkPw0KPiA+DQo+ID4gUXVlcnkg
YmVmb3JlIHVwZGF0ZT8NCj4gDQo+IHllcw0KPiANCj4gW3NuaXBdDQo+IA0KPiA+Pj4gZGlmZiAt
LWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93LmggYi9saWIvbGlicnRlX2V0aGRldi9y
dGVfZmxvdy5oDQo+ID4+PiBpbmRleCBkYThiZmE1NDg5Li45MDUwYWRlYzIzIDEwMDY0NA0KPiA+
Pj4gLS0tIGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaA0KPiA+Pj4gKysrIGIvbGliL2xp
YnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaA0KPiANCj4gW3NuaXBdDQo+IA0KPiA+Pj4gQEAgLTMzNTcs
NiArMzM4MCwxNTAgQEAgaW50DQo+ID4+PiAgcnRlX2Zsb3dfZ2V0X2FnZWRfZmxvd3ModWludDE2
X3QgcG9ydF9pZCwgdm9pZCAqKmNvbnRleHRzLA0KPiA+Pj4gIAkJCXVpbnQzMl90IG5iX2NvbnRl
eHRzLCBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPj4+DQo+ID4+PiArLyoqDQo+
ID4+PiArICogU3BlY2lmeSBzaGFyZWQgYWN0aW9uIGNvbmZpZ3VyYXRpb24NCj4gPj4+ICsgKi8N
Cj4gPj4+ICtzdHJ1Y3QgcnRlX2Zsb3dfc2hhcmVkX2FjdGlvbl9jb25mIHsNCj4gPj4+ICsJLyoq
DQo+ID4+PiArCSAqIEZsb3cgZGlyZWN0aW9uIGZvciBzaGFyZWQgYWN0aW9uIGNvbmZpZ3VyYXRp
b24uDQo+ID4+PiArCSAqDQo+ID4+PiArCSAqIFNocmVkIGFjdGlvbiBzaG91bGQgYmUgdmFsaWQg
YXQgbGVhc3QgZm9yIG9uZSBmbG93IGRpcmVjdGlvbiwNCj4gPj4+ICsJICogb3RoZXJ3aXNlIGl0
IGlzIGludmFsaWQgZm9yIGJvdGggaW5ncmVzcyBhbmQgZWdyZXNzIHJ1bGVzLg0KPiA+Pj4gKwkg
Ki8NCj4gPj4+ICsJdWludDMyX3QgaW5ncmVzczoxOw0KPiA+Pj4gKwkvKio8IEFjdGlvbiB2YWxp
ZCBmb3IgcnVsZXMgYXBwbGllZCB0byBpbmdyZXNzIHRyYWZmaWMuICovDQo+ID4+PiArCXVpbnQz
Ml90IGVncmVzczoxOw0KPiA+Pj4gKwkvKio8IEFjdGlvbiB2YWxpZCBmb3IgcnVsZXMgYXBwbGll
ZCB0byBlZ3Jlc3MgdHJhZmZpYy4gKi8NCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0K
PiA+Pj4gKyAqIEB3YXJuaW5nDQo+ID4+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBt
YXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+Pj4gKyAqDQo+ID4+PiArICogQ3Jl
YXRlIHNoYXJlZCBhY3Rpb24gZm9yIHJldXNlIGluIG11bHRpcGxlIGZsb3cgcnVsZXMuDQo+ID4+
PiArICogVGhlIGNyZWF0ZWQgc2hhcmVkIGFjdGlvbiBoYXMgc2luZ2xlIHN0YXRlIGFuZCBjb25m
aWd1cmF0aW9uDQo+ID4+PiArICogYWNyb3NzIGFsbCBmbG93IHJ1bGVzIHVzaW5nIGl0Lg0KPiA+
Pj4gKyAqDQo+ID4+PiArICogQHBhcmFtW2luXSBwb3J0X2lkDQo+ID4+PiArICogICAgVGhlIHBv
cnQgaWRlbnRpZmllciBvZiB0aGUgRXRoZXJuZXQgZGV2aWNlLg0KPiA+Pj4gKyAqIEBwYXJhbVtp
bl0gY29uZg0KPiA+Pj4gKyAqICAgU2hhcmVkIGFjdGlvbiBjb25maWd1cmF0aW9uLg0KPiA+Pj4g
KyAqIEBwYXJhbVtpbl0gYWN0aW9uDQo+ID4+PiArICogICBBY3Rpb24gY29uZmlndXJhdGlvbiBm
b3Igc2hhcmVkIGFjdGlvbiBjcmVhdGlvbi4NCj4gPj4+ICsgKiBAcGFyYW1bb3V0XSBlcnJvcg0K
PiA+Pj4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4g
UE1EcyBpbml0aWFsaXplIHRoaXMNCj4gPj4+ICsgKiAgIHN0cnVjdHVyZSBpbiBjYXNlIG9mIGVy
cm9yIG9ubHkuDQo+ID4+PiArICogQHJldHVybg0KPiA+Pj4gKyAqICAgQSB2YWxpZCBoYW5kbGUg
aW4gY2FzZSBvZiBzdWNjZXNzLCBOVUxMIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldA0K
PiA+Pj4gKyAqICAgdG8gb25lIG9mIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkOg0KPiA+Pj4gKyAq
ICAgLSAoRU5PU1lTKSBpZiB1bmRlcmx5aW5nIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMg
ZnVuY3Rpb25hbGl0eS4NCj4gPj4+ICsgKiAgIC0gKEVJTykgaWYgdW5kZXJseWluZyBkZXZpY2Ug
aXMgcmVtb3ZlZC4NCj4gPj4+ICsgKiAgIC0gKEVJTlZBTCkgaWYgKmFjdGlvbiogaW52YWxpZC4N
Cj4gPj4+ICsgKiAgIC0gKEVOT1RTVVApIGlmICphY3Rpb24qIHZhbGlkIGJ1dCB1bnN1cHBvcnRl
ZC4NCj4gPj4NCj4gPj4gRU5PREVWID8NCj4gPg0KPiA+IENhbiB5b3UgZWxhYm9yYXRlPw0KPiAN
Cj4gDQo+IEVOT0RFViBpcyByZXR1cm5lZCBpZiBwb3J0X2lkIGlzIGludmFsaWQgYW5kIGl0IHNo
b3VsZCBiZQ0KPiBkb2N1bWVudGVkIGhlcmUgaWYgeW91IHRyeSB0byBsaXN0IGFsbCByZXR1cm4g
dmFsdWVzLg0K