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 AEB53A04A2;
	Tue, 12 May 2020 12:34:28 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 083BE1BFDB;
	Tue, 12 May 2020 12:34:28 +0200 (CEST)
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on2071.outbound.protection.outlook.com [40.107.20.71])
 by dpdk.org (Postfix) with ESMTP id E5D5F1BFD7
 for <dev@dpdk.org>; Tue, 12 May 2020 12:34:25 +0200 (CEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Xh2OVdWI9v1sLfqickk5tvRht98KenX63GD+w7AxZwBclSRFb2PGWEXf39ytFIxYkbpvrBnwt3Mv2Zg1jWHBIEo7+H+vBZKKUOYuqvIQQrIWONLjj+F5FLjF5IHZ953qeEfgd7jQdQ6zQN+zUZ/fQAEcPPxBiMcmin8nidCD1HlyUSPP78SaMqcoaYE8HYD25kVVB5elBlXFZ4Wab8pmx+1OZC7owonRzJ1IHPde/2kdst/BqARzMWrpvJnK2G53fohQORmWoXbgCB/OcuDBI+Kbo5iAFTF0/Px0uatfItJ8tZu1YSbVs5LniHTL6nZ3F8quf52WOz5NS2o54eprdQ==
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=72ssrkWgMupBWZvEctEIQW/e6Kv9Tts8AlvmIBVHo/A=;
 b=UfjDhSqoJfBTwCMNTERzigpMmooZJg9kpXk/KuZ7R2WyCpxRfaemGuEphKPJz1DDfNZx2qdIbhLHDR+0+p3NSXaEUEjH//5OVejEp0BsQQgFyFoWjhjbs/RnxD00c6hmKtCLvaVaRHp9qtUH/I9GBj2XUVMF81fcIKu9wiGO4WBK4H456v1nrqom05oyzKyIv6jf45L0xLzjXCsqAZirMnnWWxYPw8b77q6Prmqt/GLqW6gdPgZSLIe1z3cQcYPo6IuW5CHZ2WqJ9U71yCE//8ujFtlVkZHuvzGG9A9nbB3S69eCMIfWoaSHhupo1s35oGR3PtHQxCACiQUrVVVR0A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com;
 dkim=pass header.d=mellanox.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=72ssrkWgMupBWZvEctEIQW/e6Kv9Tts8AlvmIBVHo/A=;
 b=hFqfsdpHLIeTsraXQn5Cuar27CH6RlnQ+4irvpzDBtW63G1/+TI6sKJP8cOECALk4F7uRJVAWCWpuHZo4EqRBJk9zfzcUu4bEeoKid2lM/QXydQuuX4fXjt33v+LdzAb21F6h6OhExVDnCB+3kFMprSl60fIm7hi/jXQ8EMNmkY=
Received: from AM0PR05MB6610.eurprd05.prod.outlook.com (2603:10a6:208:12f::18)
 by AM0PR05MB6066.eurprd05.prod.outlook.com (2603:10a6:208:12d::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.34; Tue, 12 May
 2020 10:34:24 +0000
Received: from AM0PR05MB6610.eurprd05.prod.outlook.com
 ([fe80::900:c0ac:78bd:18fc]) by AM0PR05MB6610.eurprd05.prod.outlook.com
 ([fe80::900:c0ac:78bd:18fc%6]) with mapi id 15.20.2958.035; Tue, 12 May 2020
 10:34:23 +0000
From: Wisam Monther <wisamm@mellanox.com>
To: Andrew Rybchenko <arybchenko@solarflare.com>, "dev@dpdk.org"
 <dev@dpdk.org>, Jack Min <jackmin@mellanox.com>, Thomas Monjalon
 <thomas@monjalon.net>, "jerinjacobk@gmail.com" <jerinjacobk@gmail.com>,
 "ajit.khaparde@broadcom.com" <ajit.khaparde@broadcom.com>
Thread-Topic: [PATCH v6 2/5] app/flow-perf: add insertion rate calculation
Thread-Index: AQHWJ4SlE9Hwz4dCH0ChukRKdZWx9aiiyc8AgAAGtXA=
Date: Tue, 12 May 2020 10:34:23 +0000
Message-ID: <AM0PR05MB66102B9738AA6F0241FDC2BAA9BE0@AM0PR05MB6610.eurprd05.prod.outlook.com>
References: <20200506123627.22340-2-wisamm@mellanox.com>
 <20200511110912.11535-1-wisamm@mellanox.com>
 <20200511110912.11535-3-wisamm@mellanox.com>
 <d9501d56-64ba-4aa7-0bea-92de2084453c@solarflare.com>
In-Reply-To: <d9501d56-64ba-4aa7-0bea-92de2084453c@solarflare.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: solarflare.com; dkim=none (message not signed)
 header.d=none;solarflare.com; dmarc=none action=none
 header.from=mellanox.com;
x-originating-ip: [188.161.228.59]
x-ms-publictraffictype: Email
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: cd8fd42a-e758-4225-d2b1-08d7f66009db
x-ms-traffictypediagnostic: AM0PR05MB6066:|AM0PR05MB6066:
x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <AM0PR05MB6066EA992C4F471128E7AF34A9BE0@AM0PR05MB6066.eurprd05.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:6790;
x-forefront-prvs: 0401647B7F
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: jdW3YLz5pGj+47DSAkJ3uOJTINpC8Umeyltn8ac7LsA0EJb7NMvXgl1WpjGhTm0DOxvcakSsCmC4dPJyDq60nrJSjPtfYylE5z6toIh1iyVieH3i0diPNuYLCftvMswzAO0G8Ewbq71uavfMFIlUvuPjZQQKuMoXWzKXAPo8Vxg1AHNyfL5ZZ5e3gws3w28CF0Ty+cS9nOsvK4GleL6uh4E7n19umqMh9z/QF+AfRLlYEUxDjub4WlPPElPCpMPCwnA3j1S4XGFzCk8k5/gk+5JJbEHcrbavA7Vp4ID16Fyp8jK/wb+fUCh+4eUzoK6J7dmys2ZRpUDb9sHJduHg/uB9AZ0LWcs0T2J7d0aRevhIpXHwbxjPu0JLMOLKuWdwtOQ7ZO9VH3tNsWh55ES/lnfjLffbyI8IuqwrDrzxOnILEEH47PGg3RIofPv6TogdeQtNqOB8RSqZPQN4tNyCLAqb6wk9yvCBMIGnYFfmHT89jxPXDbVWC96Z4FaBdZz66kRSMI3RjEvesUxODQiajw==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:AM0PR05MB6610.eurprd05.prod.outlook.com; PTR:; CAT:NONE;
 SFTY:;
 SFS:(4636009)(346002)(136003)(376002)(39860400002)(366004)(396003)(33430700001)(478600001)(71200400001)(316002)(6506007)(2906002)(7696005)(26005)(8936002)(33440700001)(186003)(52536014)(9686003)(5660300002)(66946007)(66476007)(55016002)(64756008)(66556008)(66446008)(76116006)(86362001)(30864003)(33656002)(8676002)(110136005);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata: c4d30fm1ge1RWq2jVmUiOoi+NkMKOi2OPd55363FzD3shDXsX/fV2tu2MAjcBHyqdf9ggAZnow3IbT9B05S51ldUUK+FOvfSlzlJF+6hPul3XTxKNMXFcQvLqq1PVoL3sUevwXyPw2DGgpPtGNXtJfRgTuaTLRlSyBK5bNYq3iKeaXQ7P2209csog8ctvdUfbLCveEU2+c9/z/zdrcx4PREM022KWJbFzkFaC4ndBGRQG/qWa/4vKRjvMoQh7ST0FPZjHbjPle55Y1pUa0YFihQcVTxUERrQzmJq6+i7SHE9LuKSWtZyPmff3Zl1yi6+/LChBn9Aqof+EN0BrRs5M8S2t0vdpfXHZn8TzxUW5uh3qSdnxKhYNe6n3KhkW8WMmJWcMk7/qulLA7i5+K9B/Z47hEZBHjyoxJAZISJWzcC/JeN4ob02UMgmQRYsLsow7OoApycbHDlVHpyBul+5zJhdrWswLqFhS25PL4Mj1bJalaHH+8/geQFKy17stxKY
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: Mellanox.com
X-MS-Exchange-CrossTenant-Network-Message-Id: cd8fd42a-e758-4225-d2b1-08d7f66009db
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 May 2020 10:34:23.7739 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: tvqIul/5d1wS3IzTvbVj3sgbvq+q7TXhXKSKLxgaQ/JlzzCHL41hfTTr2wpbwLaI+GGlDWb9towJ5ojOdMGoAg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB6066
Subject: Re: [dpdk-dev] [PATCH v6 2/5] app/flow-perf: add insertion rate
	calculation
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>

Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5
YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT4NCj5TZW50OiBNb25kYXksIE1heSAxMSwgMjAyMCAzOjA1
IFBNDQo+VG86IFdpc2FtIE1vbnRoZXIgPHdpc2FtbUBtZWxsYW5veC5jb20+OyBkZXZAZHBkay5v
cmc7IEphY2sgTWluDQo+PGphY2ttaW5AbWVsbGFub3guY29tPjsgVGhvbWFzIE1vbmphbG9uIDx0
aG9tYXNAbW9uamFsb24ubmV0PjsNCj5qZXJpbmphY29ia0BnbWFpbC5jb207IGFqaXQua2hhcGFy
ZGVAYnJvYWRjb20uY29tDQo+U3ViamVjdDogUmU6IFtQQVRDSCB2NiAyLzVdIGFwcC9mbG93LXBl
cmY6IGFkZCBpbnNlcnRpb24gcmF0ZSBjYWxjdWxhdGlvbg0KPg0KPk9uIDUvMTEvMjAgMjowOSBQ
TSwgV2lzYW0gSmFkZG8gd3JvdGU6DQo+PiBBZGQgaW5zZXJ0aW9uIHJhdGUgY2FsY3VsYXRpb24g
ZmVhdHVyZSBpbnRvIGZsb3cNCj4+IHBlcmZvcm1hbmNlIGFwcGxpY2F0aW9uLg0KPj4NCj4+IFRo
ZSBhcHBsaWNhdGlvbiBub3cgcHJvdmlkZSB0aGUgYWJpbGl0eSB0byB0ZXN0DQo+PiBpbnNlcnRp
b24gcmF0ZSBvZiBzcGVjaWZpYyBydGVfZmxvdyBydWxlLCBieQ0KPj4gc3RyZXNzaW5nIGl0IHRv
IHRoZSBOSUMsIGFuZCBjYWxjdWxhdGUgdGhlDQo+PiBpbnNlcnRpb24gcmF0ZS4NCj4+DQo+PiBU
aGUgYXBwbGljYXRpb24gb2ZmZXJzIHNvbWUgb3B0aW9ucyBpbiB0aGUgY29tbWFuZA0KPj4gbGlu
ZSwgdG8gY29uZmlndXJlIHdoaWNoIHJ1bGUgdG8gYXBwbHkuDQo+Pg0KPj4gQWZ0ZXIgdGhhdCB0
aGUgYXBwbGljYXRpb24gd2lsbCBzdGFydCBwcm9kdWNpbmcNCj4+IHJ1bGVzIHdpdGggc2FtZSBw
YXR0ZXJuIGJ1dCBpbmNyZWFzaW5nIHRoZSBvdXRlciBJUA0KPj4gc291cmNlIGFkZHJlc3MgYnkg
MSBlYWNoIHRpbWUsIHRodXMgaXQgd2lsbCBnaXZlDQo+PiBkaWZmZXJlbnQgZmxvdyBlYWNoIHRp
bWUsIGFuZCBhbGwgb3RoZXIgaXRlbXMgd2lsbA0KPj4gaGF2ZSBvcGVuIG1hc2tzLg0KPj4NCj4+
IFRoZSBjdXJyZW50IGRlc2lnbiBoYXZlIHNpbmdsZSBjb3JlIGluc2VydGlvbiByYXRlLg0KPj4g
SW4gdGhlIGZ1dHVyZSB3ZSBtYXkgaGF2ZSBhIG11bHRpIGNvcmUgaW5zZXJ0aW9uDQo+PiByYXRl
IG1lYXN1cmVtZW50IHN1cHBvcnQgaW4gdGhlIGFwcC4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBX
aXNhbSBKYWRkbyA8d2lzYW1tQG1lbGxhbm94LmNvbT4NCj4+IC0tLQ0KPj4gIGFwcC90ZXN0LWZs
b3ctcGVyZi9NYWtlZmlsZSAgICAgICAgICAgIHwgICAzICsNCj4+ICBhcHAvdGVzdC1mbG93LXBl
cmYvYWN0aW9uc19nZW4uYyAgICAgICB8IDE2NCArKysrKysrKysNCj4+ICBhcHAvdGVzdC1mbG93
LXBlcmYvYWN0aW9uc19nZW4uaCAgICAgICB8ICAyOSArKw0KPj4gIGFwcC90ZXN0LWZsb3ctcGVy
Zi9jb25maWcuaCAgICAgICAgICAgIHwgIDE2ICsNCj4+ICBhcHAvdGVzdC1mbG93LXBlcmYvZmxv
d19nZW4uYyAgICAgICAgICB8IDE0NSArKysrKysrKw0KPj4gIGFwcC90ZXN0LWZsb3ctcGVyZi9m
bG93X2dlbi5oICAgICAgICAgIHwgIDM3ICsrDQo+PiAgYXBwL3Rlc3QtZmxvdy1wZXJmL2l0ZW1z
X2dlbi5jICAgICAgICAgfCAyNzcgKysrKysrKysrKysrKysrDQo+PiAgYXBwL3Rlc3QtZmxvdy1w
ZXJmL2l0ZW1zX2dlbi5oICAgICAgICAgfCAgMzEgKysNCj4+ICBhcHAvdGVzdC1mbG93LXBlcmYv
bWFpbi5jICAgICAgICAgICAgICB8IDQ3MiArKysrKysrKysrKysrKysrKysrKysrKystDQo+PiAg
YXBwL3Rlc3QtZmxvdy1wZXJmL21lc29uLmJ1aWxkICAgICAgICAgfCAgIDMgKw0KPj4gIGRvYy9n
dWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjBfMDUucnN0IHwgICAzICsNCj4+ICBkb2MvZ3VpZGVz
L3Rvb2xzL2Zsb3ctcGVyZi5yc3QgICAgICAgICB8IDE5NSArKysrKysrKystDQo+PiAgMTIgZmls
ZXMgY2hhbmdlZCwgMTM2OCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQ0KPj4gIGNyZWF0
ZSBtb2RlIDEwMDY0NCBhcHAvdGVzdC1mbG93LXBlcmYvYWN0aW9uc19nZW4uYw0KPj4gIGNyZWF0
ZSBtb2RlIDEwMDY0NCBhcHAvdGVzdC1mbG93LXBlcmYvYWN0aW9uc19nZW4uaA0KPj4gIGNyZWF0
ZSBtb2RlIDEwMDY0NCBhcHAvdGVzdC1mbG93LXBlcmYvZmxvd19nZW4uYw0KPj4gIGNyZWF0ZSBt
b2RlIDEwMDY0NCBhcHAvdGVzdC1mbG93LXBlcmYvZmxvd19nZW4uaA0KPj4gIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBhcHAvdGVzdC1mbG93LXBlcmYvaXRlbXNfZ2VuLmMNCj4+ICBjcmVhdGUgbW9kZSAx
MDA2NDQgYXBwL3Rlc3QtZmxvdy1wZXJmL2l0ZW1zX2dlbi5oDQo+Pg0KPj4gZGlmZiAtLWdpdCBh
L2FwcC90ZXN0LWZsb3ctcGVyZi9NYWtlZmlsZSBiL2FwcC90ZXN0LWZsb3ctcGVyZi9NYWtlZmls
ZQ0KPj4gaW5kZXggZGIwNDNjMTdhLi40ZjJkYjc1OTEgMTAwNjQ0DQo+PiAtLS0gYS9hcHAvdGVz
dC1mbG93LXBlcmYvTWFrZWZpbGUNCj4+ICsrKyBiL2FwcC90ZXN0LWZsb3ctcGVyZi9NYWtlZmls
ZQ0KPj4gQEAgLTE2LDYgKzE2LDkgQEAgQ0ZMQUdTICs9ICQoV0VSUk9SX0ZMQUdTKQ0KPj4gICMN
Cj4+ICAjIGFsbCBzb3VyY2UgYXJlIHN0b3JlZCBpbiBTUkNTLXkNCj4+ICAjDQo+PiArU1JDUy15
ICs9IGFjdGlvbnNfZ2VuLmMNCj4+ICtTUkNTLXkgKz0gZmxvd19nZW4uYw0KPj4gK1NSQ1MteSAr
PSBpdGVtc19nZW4uYw0KPj4gIFNSQ1MteSArPSBtYWluLmMNCj4+DQo+PiAgaW5jbHVkZSAkKFJU
RV9TREspL21rL3J0ZS5hcHAubWsNCj4+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1mbG93LXBlcmYv
YWN0aW9uc19nZW4uYyBiL2FwcC90ZXN0LWZsb3ctDQo+cGVyZi9hY3Rpb25zX2dlbi5jDQo+PiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwLi4xNmJiM2NmMjANCj4+IC0t
LSAvZGV2L251bGwNCj4+ICsrKyBiL2FwcC90ZXN0LWZsb3ctcGVyZi9hY3Rpb25zX2dlbi5jDQo+
PiBAQCAtMCwwICsxLDE2NCBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt
My1DbGF1c2UNCj4+ICsgKiBDb3B5cmlnaHQgMjAyMCBNZWxsYW5veCBUZWNobm9sb2dpZXMsIEx0
ZA0KPj4gKyAqDQo+PiArICogVGhlIGZpbGUgY29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9ucyBv
ZiBhY3Rpb25zIGdlbmVyYXRvcnMuDQo+PiArICogRWFjaCBnZW5lcmF0b3IgaXMgcmVzcG9uc2li
bGUgZm9yIHByZXBhcmluZyBpdCdzIGFjdGlvbiBpbnN0YW5jZQ0KPj4gKyAqIGFuZCBpbml0aWFs
aXppbmcgaXQgd2l0aCBuZWVkZWQgZGF0YS4NCj4+ICsgKi8NCj4+ICsNCj4+ICsjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+DQo+PiArI2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCj4+ICsjaW5jbHVkZSA8
cnRlX2Zsb3cuaD4NCj4+ICsjaW5jbHVkZSA8cnRlX2V0aGRldi5oPg0KPj4gKw0KPj4gKyNpbmNs
dWRlICJhY3Rpb25zX2dlbi5oIg0KPj4gKyNpbmNsdWRlICJjb25maWcuaCINCj4+ICsNCj4+ICsv
KiBTdG9yYWdlIGZvciBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3JzcyBpbmNsdWRpbmcgZXh0ZXJu
YWwgZGF0YS4gKi8NCj4+ICtzdHJ1Y3QgYWN0aW9uX3Jzc19kYXRhIHsNCj4+ICsJc3RydWN0IHJ0
ZV9mbG93X2FjdGlvbl9yc3MgY29uZjsNCj4+ICsJdWludDhfdCBrZXlbNDBdOw0KPj4gKwl1aW50
MTZfdCBxdWV1ZVsxMjhdOw0KPj4gK307DQo+PiArDQo+PiArdm9pZA0KPj4gK2FkZF9tYXJrKHN0
cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbnMsDQo+PiArCXVpbnQ4X3QgYWN0aW9uc19jb3Vu
dGVyKQ0KPj4gK3sNCj4+ICsJc3RhdGljIHN0cnVjdCBydGVfZmxvd19hY3Rpb25fbWFyayBtYXJr
X2FjdGlvbjsNCj4NCj5GdW5jdGlvbi1sb2NhbCBzdGF0aWMgdmFyaWFibGVzIGEgYml0IGJldHRl
ciB0aGFuIGZpbGUtbG9jYWwNCj5vciBnbG9iYWwgdmFyaWFibGUsIGJ1dCBqdXN0IGEgYml0LiBT
ZWUgYmVsb3cuDQo+QXQgYmFyZSBtaW5pbXVtIGl0IHJlcXVpcmVzIGEgY2hlY2sgdGhhdCB0aGUg
YWN0aW9uIGlzIG5vdA0KPmluIHVzZSBhbHJlYWR5LiBTYW1lIGluIG1hbnkgY2FzZXMgYmVsb3cu
DQoNClllcyBpdCdzIGJldHRlciwNCldoYXQgeW91IG1lYW4gYnkgIiBBdCBiYXJlIG1pbmltdW0g
aXQgcmVxdWlyZXMgYSBjaGVjayB0aGF0IHRoZSBhY3Rpb24gaXMgbm90IGluIHVzZSBhbHJlYWR5
Ig0KQ2FuIHlvdSBwbGVhc2UgZWxhYm9yYXRlPw0KDQo+DQo+PiArDQo+PiArCWRvIHsNCj4+ICsJ
CW1hcmtfYWN0aW9uLmlkID0gTUFSS19JRDsNCj4+ICsJfSB3aGlsZSAoMCk7DQo+DQo+V2h5IGRv
IHlvdSB1c2UgZHVtbXkgZG8td2hpbGUgbG9vcCBoZXJlPyBNYW55IHNpbWlsYXIgY2FzZXMNCj5i
ZWxvdy4NCg0KU29tZXRpbWVzLCBpdCBjcmVhdGUgdGhlIGZsb3cgYmVmb3JlIHNldHRpbmcgdGhl
IGNvcnJlY3QgaWQsIEkgdGhpbmsgaXQncyBjb21waWxlciBzdHVmZg0KU28gdGhlIGR1bW15IGxv
b3AgdG8gbWFrZSBzdXJlIHRoZSBjb21waWxlciBmaW5pc2ggaXQncyBleGVjdXRpb24gYW5kIG1h
a2Ugc3VyZQ0KV2hlbiB0aGUgZmxvdyBpcyBjcmVhdGVkIHRoZSBhY3Rpb24gaGF2ZSBjb3JyZWN0
IHZhbHVlLg0KDQo+DQo+PiArDQo+PiArCWFjdGlvbnNbYWN0aW9uc19jb3VudGVyXS50eXBlID0g
UlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUFSSzsNCj4+ICsJYWN0aW9uc1thY3Rpb25zX2NvdW50ZXJd
LmNvbmYgPSAmbWFya19hY3Rpb247DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQNCj4+ICthZGRfcXVl
dWUoc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9ucywNCj4+ICsJdWludDhfdCBhY3Rpb25z
X2NvdW50ZXIsIHVpbnQxNl90IHF1ZXVlKQ0KPj4gK3sNCj4+ICsJc3RhdGljIHN0cnVjdCBydGVf
Zmxvd19hY3Rpb25fcXVldWUgcXVldWVfYWN0aW9uOw0KPg0KPkl0IGRvZXMgbm90IGFsbG93IHRv
IHVzZSB0aGUgYWN0aW9uIHR3aWNlIHRvIGRlbGl2ZXIgdG8NCj50byBxdWV1ZXMuDQoNClllcywg
aXQncyBuZWVkZWQgb25seSBvbmNlDQoNCj4NCj4+ICsNCj4+ICsJZG8gew0KPj4gKwkJcXVldWVf
YWN0aW9uLmluZGV4ID0gcXVldWU7DQo+PiArCX0gd2hpbGUgKDApOw0KPj4gKw0KPj4gKwlhY3Rp
b25zW2FjdGlvbnNfY291bnRlcl0udHlwZSA9IFJURV9GTE9XX0FDVElPTl9UWVBFX1FVRVVFOw0K
Pj4gKwlhY3Rpb25zW2FjdGlvbnNfY291bnRlcl0uY29uZiA9ICZxdWV1ZV9hY3Rpb247DQo+PiAr
fQ0KPj4gKw0KPj4gK3ZvaWQNCj4+ICthZGRfanVtcChzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICph
Y3Rpb25zLA0KPj4gKwl1aW50OF90IGFjdGlvbnNfY291bnRlciwgdWludDE2X3QgbmV4dF90YWJs
ZSkNCj4+ICt7DQo+PiArCXN0YXRpYyBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2p1bXAganVtcF9h
Y3Rpb247DQo+PiArDQo+PiArCWRvIHsNCj4+ICsJCWp1bXBfYWN0aW9uLmdyb3VwID0gbmV4dF90
YWJsZTsNCj4+ICsJfSB3aGlsZSAoMCk7DQo+PiArDQo+PiArCWFjdGlvbnNbYWN0aW9uc19jb3Vu
dGVyXS50eXBlID0gUlRFX0ZMT1dfQUNUSU9OX1RZUEVfSlVNUDsNCj4+ICsJYWN0aW9uc1thY3Rp
b25zX2NvdW50ZXJdLmNvbmYgPSAmanVtcF9hY3Rpb247DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQN
Cj4+ICthZGRfcnNzKHN0cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbnMsDQo+PiArCXVpbnQ4
X3QgYWN0aW9uc19jb3VudGVyLCB1aW50MTZfdCAqcXVldWVzLA0KPj4gKwl1aW50MTZfdCBxdWV1
ZXNfbnVtYmVyKQ0KPj4gK3sNCj4+ICsJc3RhdGljIHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNz
ICpyc3NfYWN0aW9uOw0KPj4gKwlzdGF0aWMgc3RydWN0IGFjdGlvbl9yc3NfZGF0YSAqcnNzX2Rh
dGE7DQo+DQo+SXQgaXMgYmV0dGVyIHRvIGFkZCBhbiBlbXB0eSBsaW5lIGhlcmUgdG8gc3BsaXQg
c3RhdGljIGFuZA0KPm5vbi1zdGF0aWMgdmFyaWFibGUgYW5kIG1ha2UgaXQgZWFzeSB0byBjYXRj
aCB0aGUgZGlmZmVyZW5jZS4NCj4NCj4+ICsJdWludDE2X3QgcXVldWU7DQo+PiArDQo+PiArCXJz
c19kYXRhID0gcnRlX21hbGxvYygicnNzX2RhdGEiLA0KPj4gKwkJc2l6ZW9mKHN0cnVjdCBhY3Rp
b25fcnNzX2RhdGEpLCAwKTsNCj4NCj5Eb2VzIGl0IG1lYW4gdGhhdCB0aGUgc2Vjb25kIGludm9j
YXRpb24gd2lsbCBtYWtlDQo+YSBtZW1vcnkgbGVhaz8NCg0KTm90IGV4YWN0bHksIGJlY2F1c2Ug
dGhlIHNlY29uZCBpbnZvY2F0aW9uIG1heSBoYXZlIGRpZmZlcmVudCBxdWV1ZXMgYW5kIG5lZWQN
ClRvIGJlIHVzZWQgd2l0aCBkaWZmZXJlbnQgZmxvdywgc28gSSB0aGluayBpdCdzIG9rIHRvIHJl
IG1hbGxvYyBpdC4NCg0KPg0KPj4gKw0KPj4gKwlpZiAocnNzX2RhdGEgPT0gTlVMTCkNCj4+ICsJ
CXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIk5vIE1lbW9yeSBhdmFpbGFibGUhIik7DQo+PiArDQo+
PiArCSpyc3NfZGF0YSA9IChzdHJ1Y3QgYWN0aW9uX3Jzc19kYXRhKXsNCj4+ICsJCS5jb25mID0g
KHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzKXsNCj4+ICsJCQkuZnVuYyA9IFJURV9FVEhfSEFT
SF9GVU5DVElPTl9ERUZBVUxULA0KPj4gKwkJCS5sZXZlbCA9IDAsDQo+PiArCQkJLnR5cGVzID0g
R0VUX1JTU19IRigpLA0KPj4gKwkJCS5rZXlfbGVuID0gc2l6ZW9mKHJzc19kYXRhLT5rZXkpLA0K
Pj4gKwkJCS5xdWV1ZV9udW0gPSBxdWV1ZXNfbnVtYmVyLA0KPj4gKwkJCS5rZXkgPSByc3NfZGF0
YS0+a2V5LA0KPj4gKwkJCS5xdWV1ZSA9IHJzc19kYXRhLT5xdWV1ZSwNCj4+ICsJCX0sDQo+PiAr
CQkua2V5ID0geyAxIH0sDQo+PiArCQkucXVldWUgPSB7IDAgfSwNCj4+ICsJfTsNCj4+ICsNCj4+
ICsJZm9yIChxdWV1ZSA9IDA7IHF1ZXVlIDwgcXVldWVzX251bWJlcjsgcXVldWUrKykNCj4+ICsJ
CXJzc19kYXRhLT5xdWV1ZVtxdWV1ZV0gPSBxdWV1ZXNbcXVldWVdOw0KPj4gKw0KPj4gKwlyc3Nf
YWN0aW9uID0gJnJzc19kYXRhLT5jb25mOw0KPj4gKw0KPj4gKwlhY3Rpb25zW2FjdGlvbnNfY291
bnRlcl0udHlwZSA9IFJURV9GTE9XX0FDVElPTl9UWVBFX1JTUzsNCj4+ICsJYWN0aW9uc1thY3Rp
b25zX2NvdW50ZXIrK10uY29uZiA9IHJzc19hY3Rpb247DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQN
Cj4+ICthZGRfY291bnQoc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9ucywNCj4+ICsJdWlu
dDhfdCBhY3Rpb25zX2NvdW50ZXIpDQo+PiArew0KPj4gKwlzdGF0aWMgc3RydWN0IHJ0ZV9mbG93
X2FjdGlvbl9jb3VudCBjb3VudF9hY3Rpb247DQo+DQo+QWdhaW4gaXQgbWVhbnMgaXQgaXMgaW1w
b3NzaWJsZSB0byB1c2UgdGhlIGFjdGlvbiB0d2ljZSBpbiBvbmUNCj5ydWxlLg0KDQpZZXMsDQpJ
ZiBJIHJlbW92ZWQgdGhlIHN0YXRpYyBmcm9tIHRoZSBpbm5lciBzY29wZSBoZXJlLA0KVGhlIGFj
dGlvbiB3aWxsIGJlIGZyZWVkIHdoZW4gd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgZmlsZSwNCkFu
ZCBzaW5jZSB0aGUgZGVzaWduIGhlcmUgdG8gYWRkIHRoZSBhY3Rpb24gaW50byBhY3Rpb25zIGFy
cmF5IHRvIGJlIHVzZWQgbGF0ZXIgaW4gdGhlIGNyZWF0aW9uLA0KSXQgd2lsbCBub3QgaGF2ZSBj
b3JyZWN0IGFjdGlvbiBpbiBjYXNlIG9mIG5vbmUtc3RhdGljIGluIHRoZSBpbm5lciBzY29wZS4N
Cg0KSWYgYW55IGFjdGlvbiBuZWVkcyB0byBoYXZlIHByaXZpbGVnZSB0byBiZSBjYWxsZWQgdHdp
Y2UgaW4gc2luZ2xlIHJ1bGUNCk5ldyBzdXBwb3J0IG5lZWRzIHRvIGJlIGRvbmUuDQoNClRoaXMg
aXMgdGhlIGRlc2lnbiBmb3IgaXQsIEknbGwgYWRkIGludG8gdGhlIGtub3duIGxpbWl0YXRpb24u
DQoNCj4+ICtzdGF0aWMgdm9pZA0KPj4gK2ZpbGxfaXRlbXMoc3RydWN0IHJ0ZV9mbG93X2l0ZW0g
Kml0ZW1zLA0KPj4gKwl1aW50MzJfdCBmbG93X2l0ZW1zLCB1aW50MzJfdCBvdXRlcl9pcF9zcmMp
DQo+DQo+SXQgbG9va3MgbGlrZSBpdCBpcyBiZXR0ZXIgdG8gaGF2ZSB0aGUgZnVuY3Rpb24gaW5z
aWRlDQo+aXRlbXNfZ2VuLmMuIEl0IHdvdWxkIGFsbG93IHRvIG1ha2UgYWxsIGFkZF88aXRlbT4g
ZnVuY3Rpb25zDQo+bG9jYWwgdG8gaXRlbXNfZ2VuLmMuDQo+DQo+PiArew0KPj4gKwl1aW50OF90
IGl0ZW1zX2NvdW50ZXIgPSAwOw0KPj4gKw0KPj4gKwkvKiBTdXBwb3J0IG91dGVyIGl0ZW1zIHVw
IHRvIHR1bm5lbCBsYXllciBvbmx5LiAqLw0KPj4gKw0KPj4gKwlpZiAoZmxvd19pdGVtcyAmIEZM
T1dfSVRFTV9NQVNLKFJURV9GTE9XX0lURU1fVFlQRV9NRVRBKSkNCj4+ICsJCWFkZF9tZXRhX2Rh
dGEoaXRlbXMsIGl0ZW1zX2NvdW50ZXIrKyk7DQo+PiArCWlmIChmbG93X2l0ZW1zICYgRkxPV19J
VEVNX01BU0soUlRFX0ZMT1dfSVRFTV9UWVBFX1RBRykpDQo+PiArCQlhZGRfbWV0YV90YWcoaXRl
bXMsIGl0ZW1zX2NvdW50ZXIrKyk7DQo+PiArCWlmIChmbG93X2l0ZW1zICYgRkxPV19JVEVNX01B
U0soUlRFX0ZMT1dfSVRFTV9UWVBFX0VUSCkpDQo+PiArCQlhZGRfZXRoZXIoaXRlbXMsIGl0ZW1z
X2NvdW50ZXIrKyk7DQo+PiArCWlmIChmbG93X2l0ZW1zICYgRkxPV19JVEVNX01BU0soUlRFX0ZM
T1dfSVRFTV9UWVBFX1ZMQU4pKQ0KPj4gKwkJYWRkX3ZsYW4oaXRlbXMsIGl0ZW1zX2NvdW50ZXIr
Kyk7DQo+PiArCWlmIChmbG93X2l0ZW1zICYgRkxPV19JVEVNX01BU0soUlRFX0ZMT1dfSVRFTV9U
WVBFX0lQVjQpKQ0KPj4gKwkJYWRkX2lwdjQoaXRlbXMsIGl0ZW1zX2NvdW50ZXIrKywgb3V0ZXJf
aXBfc3JjKTsNCj4+ICsJaWYgKGZsb3dfaXRlbXMgJiBGTE9XX0lURU1fTUFTSyhSVEVfRkxPV19J
VEVNX1RZUEVfSVBWNikpDQo+PiArCQlhZGRfaXB2NihpdGVtcywgaXRlbXNfY291bnRlcisrLCBv
dXRlcl9pcF9zcmMpOw0KPj4gKwlpZiAoZmxvd19pdGVtcyAmIEZMT1dfSVRFTV9NQVNLKFJURV9G
TE9XX0lURU1fVFlQRV9UQ1ApKQ0KPj4gKwkJYWRkX3RjcChpdGVtcywgaXRlbXNfY291bnRlcisr
KTsNCj4+ICsJaWYgKGZsb3dfaXRlbXMgJiBGTE9XX0lURU1fTUFTSyhSVEVfRkxPV19JVEVNX1RZ
UEVfVURQKSkNCj4+ICsJCWFkZF91ZHAoaXRlbXMsIGl0ZW1zX2NvdW50ZXIrKyk7DQo+PiArCWlm
IChmbG93X2l0ZW1zICYgRkxPV19JVEVNX01BU0soUlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOKSkN
Cj4+ICsJCWFkZF92eGxhbihpdGVtcywgaXRlbXNfY291bnRlcisrKTsNCj4+ICsJaWYgKGZsb3df
aXRlbXMgJg0KPkZMT1dfSVRFTV9NQVNLKFJURV9GTE9XX0lURU1fVFlQRV9WWExBTl9HUEUpKQ0K
Pj4gKwkJYWRkX3Z4bGFuX2dwZShpdGVtcywgaXRlbXNfY291bnRlcisrKTsNCj4+ICsJaWYgKGZs
b3dfaXRlbXMgJiBGTE9XX0lURU1fTUFTSyhSVEVfRkxPV19JVEVNX1RZUEVfR1JFKSkNCj4+ICsJ
CWFkZF9ncmUoaXRlbXMsIGl0ZW1zX2NvdW50ZXIrKyk7DQo+PiArCWlmIChmbG93X2l0ZW1zICYN
Cj5GTE9XX0lURU1fTUFTSyhSVEVfRkxPV19JVEVNX1RZUEVfR0VORVZFKSkNCj4+ICsJCWFkZF9n
ZW5ldmUoaXRlbXMsIGl0ZW1zX2NvdW50ZXIrKyk7DQo+PiArCWlmIChmbG93X2l0ZW1zICYgRkxP
V19JVEVNX01BU0soUlRFX0ZMT1dfSVRFTV9UWVBFX0dUUCkpDQo+PiArCQlhZGRfZ3RwKGl0ZW1z
LCBpdGVtc19jb3VudGVyKyspOw0KPg0KPkl0IGNvdWxkIGJlIGRvbmUgaW4gYSBsb29wOiBkZWZp
bmUgYW4gYXJyYXkgb2Ygc3RydWN0dXJlcw0KPkZMT1dfSVRFTV9NQVNLKHByb3RvKSB2YWx1ZXMg
YW5kIGFkZCBmdW5jdGlvbiB3aGljaCBzaG91bGQgYmUNCj5jYWxsZWQuIFRoZSBvbmx5IGV4Y2Vw
dGlvbiBpcyBJUHY0L0lQdjYgd2hpY2ggcmVxdWlyZXMgZXh0cmEgYXJndW1lbnQgLQ0KPnNvIGFs
bCBhZGQgY2FsbGJhY2tzIHNob3VsZCBoYXZlIGFkZF9kYXRhIGFyZ3VtZW50DQo+d2hpY2ggaXMg
YSBzdHJ1Y3R1cmUgd2l0aCBwb3NzaWJsZSB0dW5pbmdzLg0KDQpPaywgbGV0IG1lIHJlLXBocmFz
ZSB0byBtYWtlIHN1cmUgSSBnb3QgaXQ6DQoxLSBNb3ZlIGl0IHRvIGl0ZW1zX2dlbi5jDQoyLSBD
cmVhdGUgYXJyYXkgb2Ygc3RydWN0dXJlcyB3aXRoIGFsbCBpdGVtcy4NClRoZSBzdHJ1Y3R1cmUg
c2hvdWxkIGJlIHNvbWV0aGluZyBsaWtlIHRoaXM6DQogc3RhdGljIGNvbnN0IHN0cnVjdCBpdGVt
c19kaWN0IHsNCiAgICAgICAgY29uc3QgdWludDY0X3QgbWFzazsNCiAgICAgICAgdm9pZCAoKmZ1
bmN0KShzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqaXRlbXMsDQogICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90IGl0ZW1zX2NvdW50ZXIsIHJ0ZV9iZTMyX3Qgc3JjX2lwKTsNCiAgICAgICAgYm9v
bCBhZGRfYXJnczsNCiAgICB9DQozLSBJIG5lZWQgdG8gY2hhbmdlIHRoZSBzaWduYXR1cmUgInBh
cmFtZXRlcnMiIHRvIGFsbCBvdGhlciB0aGFuIGlwdjQsaXB2NiB0byBoYXZlIGFub3RoZXIgcGFy
YW1ldGVyIHRvDQpIYXZlIG1hdGNoZWQgc2luZ3R1cmUuDQo0LSBpbiBub25lLWlwdjQtaXB2NiBp
dGVtIEkgbmVlZCB0byBjYWxsIHRoZSBSVEVfU0VUX1VTRUQoc3JjX2lwKTsgDQo1LSBsb29wIG92
ZXIgdGhlIGFycmF5IHRvIGFkZCBpdGVtcw0KDQpJcyB0aGlzIHJpZ2h0Pw0KDQo+DQo+PiArDQo+
PiArCWl0ZW1zW2l0ZW1zX2NvdW50ZXJdLnR5cGUgPSBSVEVfRkxPV19JVEVNX1RZUEVfRU5EOw0K
Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZA0KPj4gK2ZpbGxfYWN0aW9ucyhzdHJ1Y3QgcnRl
X2Zsb3dfYWN0aW9uICphY3Rpb25zLA0KPj4gKwl1aW50MzJfdCBmbG93X2FjdGlvbnMsIHVpbnQz
Ml90IGNvdW50ZXIsIHVpbnQxNl90IG5leHRfdGFibGUsDQo+PiArCXVpbnQxNl90IGhhaXJwaW5x
KQ0KPg0KPg0KPkl0IGxvb2tzIGxpa2UgaXQgaXMgYmV0dGVyIHRvIGhhdmUgdGhlIGZ1bmN0aW9u
IGluc2lkZQ0KPmFjdGlvbnNfZ2VuLmMuIEl0IHdvdWxkIGFsbG93IHRvIG1ha2UgYWxsIGFkZF88
YWN0aW9uPg0KPmZ1bmN0aW9ucyBsb2NhbCB0byBhY3Rpb25zX2dlbi5jLg0KDQpTdXJlLCBidXQg
IHRoaXMgb25lIHdpbGwgcmVtYWluIGFzIGlzLCBzaW5jZSB0aGUgYWN0aW9ucyBoYXZlIGRpZmZl
cmVudCBzaWduYXR1cmUgYW5kIG90aGVyIGFjdGlvbnMgd2hlbiBiZSBhZGRlZA0KV2lsbCBoYXZl
IG1vcmUgZGlmZmVyZW50IHBhcmFtZXRlcnMuDQoNCj4NCj4+ICt7DQo+PiArCXVpbnQ4X3QgYWN0
aW9uc19jb3VudGVyID0gMDsNCj4+ICsJdWludDE2X3QgaGFpcnBpbl9xdWV1ZXNbaGFpcnBpbnFd
Ow0KPj4gKwl1aW50MTZfdCBxdWV1ZXNbUlhRX05VTV07DQo+PiArCXVpbnQxNl90IGk7DQo+PiAr
DQo+PiArCS8qIE5vbmUtZmF0ZSBhY3Rpb25zICovDQo+PiArCWlmIChmbG93X2FjdGlvbnMgJg0K
PkZMT1dfSVRFTV9NQVNLKFJURV9GTE9XX0FDVElPTl9UWVBFX01BUkspKQ0KPj4gKwkJYWRkX21h
cmsoYWN0aW9ucywgYWN0aW9uc19jb3VudGVyKyspOw0KPj4gKwlpZiAoZmxvd19hY3Rpb25zICYN
Cj5GTE9XX0lURU1fTUFTSyhSVEVfRkxPV19BQ1RJT05fVFlQRV9DT1VOVCkpDQo+PiArCQlhZGRf
Y291bnQoYWN0aW9ucywgYWN0aW9uc19jb3VudGVyKyspOw0KPj4gKwlpZiAoZmxvd19hY3Rpb25z
ICYNCj5GTE9XX0lURU1fTUFTSyhSVEVfRkxPV19BQ1RJT05fVFlQRV9TRVRfTUVUQSkpDQo+PiAr
CQlhZGRfc2V0X21ldGEoYWN0aW9ucywgYWN0aW9uc19jb3VudGVyKyspOw0KPj4gKwlpZiAoZmxv
d19hY3Rpb25zICYNCj5GTE9XX0lURU1fTUFTSyhSVEVfRkxPV19BQ1RJT05fVFlQRV9TRVRfVEFH
KSkNCj4+ICsJCWFkZF9zZXRfdGFnKGFjdGlvbnMsIGFjdGlvbnNfY291bnRlcisrKTsNCj4+ICsN
Cj4+ICsJLyogRmF0ZSBhY3Rpb25zICovDQo+PiArCWlmIChmbG93X2FjdGlvbnMgJg0KPkZMT1df
SVRFTV9NQVNLKFJURV9GTE9XX0FDVElPTl9UWVBFX1FVRVVFKSkNCj4+ICsJCWFkZF9xdWV1ZShh
Y3Rpb25zLCBhY3Rpb25zX2NvdW50ZXIrKywgY291bnRlciAlDQo+UlhRX05VTSk7DQo+PiArCWlm
IChmbG93X2FjdGlvbnMgJg0KPkZMT1dfSVRFTV9NQVNLKFJURV9GTE9XX0FDVElPTl9UWVBFX1JT
UykpIHsNCj4+ICsJCWZvciAoaSA9IDA7IGkgPCBSWFFfTlVNOyBpKyspDQo+PiArCQkJcXVldWVz
W2ldID0gaTsNCj4+ICsJCWFkZF9yc3MoYWN0aW9ucywgYWN0aW9uc19jb3VudGVyKyssIHF1ZXVl
cywgUlhRX05VTSk7DQo+PiArCX0NCj4+ICsJaWYgKGZsb3dfYWN0aW9ucyAmDQo+RkxPV19JVEVN
X01BU0soUlRFX0ZMT1dfQUNUSU9OX1RZUEVfSlVNUCkpDQo+PiArCQlhZGRfanVtcChhY3Rpb25z
LCBhY3Rpb25zX2NvdW50ZXIrKywgbmV4dF90YWJsZSk7DQo+PiArCWlmIChmbG93X2FjdGlvbnMg
Jg0KPkZMT1dfSVRFTV9NQVNLKFJURV9GTE9XX0FDVElPTl9UWVBFX1BPUlRfSUQpKQ0KPj4gKwkJ
YWRkX3BvcnRfaWQoYWN0aW9ucywgYWN0aW9uc19jb3VudGVyKyspOw0KPj4gKwlpZiAoZmxvd19h
Y3Rpb25zICYNCj5GTE9XX0lURU1fTUFTSyhSVEVfRkxPV19BQ1RJT05fVFlQRV9EUk9QKSkNCj4+
ICsJCWFkZF9kcm9wKGFjdGlvbnMsIGFjdGlvbnNfY291bnRlcisrKTsNCj4+ICsJaWYgKGZsb3df
YWN0aW9ucyAmIEhBSVJQSU5fUVVFVUVfQUNUSU9OKQ0KPj4gKwkJYWRkX3F1ZXVlKGFjdGlvbnMs
IGFjdGlvbnNfY291bnRlcisrLA0KPj4gKwkJCShjb3VudGVyICUgaGFpcnBpbnEpICsgUlhRX05V
TSk7DQo+PiArCWlmIChmbG93X2FjdGlvbnMgJiBIQUlSUElOX1JTU19BQ1RJT04pIHsNCj4+ICsJ
CWZvciAoaSA9IDA7IGkgPCBoYWlycGlucTsgaSsrKQ0KPj4gKwkJCWhhaXJwaW5fcXVldWVzW2ld
ID0gaSArIFJYUV9OVU07DQo+PiArCQlhZGRfcnNzKGFjdGlvbnMsIGFjdGlvbnNfY291bnRlcisr
LCBoYWlycGluX3F1ZXVlcywNCj5oYWlycGlucSk7DQo+PiArCX0NCj4+ICsNCj4+ICsJYWN0aW9u
c1thY3Rpb25zX2NvdW50ZXJdLnR5cGUgPSBSVEVfRkxPV19BQ1RJT05fVFlQRV9FTkQ7DQo+PiAr
fQ0KPj4gKw0KPj4gKw0KPj4gK3ZvaWQNCj4+ICthZGRfZXRoZXIoc3RydWN0IHJ0ZV9mbG93X2l0
ZW0gKml0ZW1zLCB1aW50OF90IGl0ZW1zX2NvdW50ZXIpDQo+PiArew0KPj4gKwlzdGF0aWMgc3Ry
dWN0IHJ0ZV9mbG93X2l0ZW1fZXRoIGV0aF9zcGVjOw0KPj4gKwlzdGF0aWMgc3RydWN0IHJ0ZV9m
bG93X2l0ZW1fZXRoIGV0aF9tYXNrOw0KPg0KPlNhbWUgYXMgYWN0aW9ucywgaXQgZG9lcyBub3Qg
YWxsb3cgdG8gaGF2ZSB0d28gRXRoIGl0ZW1zDQo+aW4gb25lIHJ1bGUuIEhvd2V2ZXIsIGl0IGxv
b2tzIGxpa2UgY3VycmVudCBkZXNpZ24gZG9lcyBub3QNCj5jb3ZlciBpdCBhbHJlYWR5IG9uIG1h
c2sgbGV2ZWwuDQoNClllcywgaW5kZWVkLg0KQWxyZWFkeSBhZGQgdGhpcyBpbiBmbG93X3BlcmYu
cnN0IGFzIGtub3duIGxpbWl0YXRpb24uDQoNCj4NCj4+ICAJCS8qIENvbnRyb2wgKi8NCj4+ICAJ
CXsgImhlbHAiLCAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCB9LA0KPj4gKwkJeyAiZmxv
d3MtY291bnQiLCAgICAgICAgICAgICAgICAxLCAwLCAwIH0sDQo+PiArCQl7ICJkdW1wLWl0ZXJh
dGlvbnMiLCAgICAgICAgICAgIDAsIDAsIDAgfSwNCj4NCj5JdCBsb29rcyBsaWtlIGFib3ZlIGl0
IHRoZSBwYXRoIHdoaWNoIHNob3VsZCBiZSBkZWZpbmVkDQo+aGVyZS4NCg0KSSdtIG5vdCBmb2xs
b3dpbmcsIHdoYXQgZG8geW91IG1lYW4/DQoNCj4NCj4+ICsJCS8qIEF0dHJpYnV0ZXMgKi8NCj4+
ICsJCXsgImluZ3Jlc3MiLCAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCB9LA0KPj4gKwkJeyAi
ZWdyZXNzIiwgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwIH0sDQo+PiArCQl7ICJ0cmFuc2Zl
ciIsICAgICAgICAgICAgICAgICAgIDAsIDAsIDAgfSwNCj4+ICsJCXsgImdyb3VwIiwgICAgICAg
ICAgICAgICAgICAgICAgMSwgMCwgMCB9LA0KPj4gKwkJLyogSXRlbXMgKi8NCj4+ICsJCXsgImV0
aGVyIiwgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCB9LA0KPj4gKwkJeyAidmxhbiIsICAg
ICAgICAgICAgICAgICAgICAgICAwLCAwLCAwIH0sDQo+PiArCQl7ICJpcHY0IiwgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDAsIDAgfSwNCj4+ICsJCXsgImlwdjYiLCAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCB9LA0KPj4gKwkJeyAidGNwIiwgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLCAwIH0sDQo+PiArCQl7ICJ1ZHAiLCAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAg
fSwNCj4+ICsJCXsgInZ4bGFuIiwgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCB9LA0KPj4g
KwkJeyAidnhsYW4tZ3BlIiwgICAgICAgICAgICAgICAgICAwLCAwLCAwIH0sDQo+PiArCQl7ICJn
cmUiLCAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAgfSwNCj4+ICsJCXsgImdlbmV2ZSIs
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCB9LA0KPj4gKwkJeyAiZ3RwIiwgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAwIH0sDQo+PiArCQl7ICJtZXRhIiwgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDAgfSwNCj4+ICsJCXsgInRhZyIsICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwgMCB9LA0KPj4gKwkJLyogQWN0aW9ucyAqLw0KPj4gKwkJeyAicG9ydC1pZCIsICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAwIH0sDQo+PiArCQl7ICJyc3MiLCAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDAgfSwNCj4+ICsJCXsgInF1ZXVlIiwgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwgMCB9LA0KPj4gKwkJeyAianVtcCIsICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAw
IH0sDQo+PiArCQl7ICJtYXJrIiwgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAgfSwNCj4+
ICsJCXsgImNvdW50IiwgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCB9LA0KPj4gKwkJeyAi
c2V0LW1ldGEiLCAgICAgICAgICAgICAgICAgICAwLCAwLCAwIH0sDQo+PiArCQl7ICJzZXQtdGFn
IiwgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAgfSwNCj4+ICsJCXsgImRyb3AiLCAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMCB9LA0KPj4gKwkJeyAiaGFpcnBpbi1xdWV1ZSIsICAgICAg
ICAgICAgICAxLCAwLCAwIH0sDQo+PiArCQl7ICJoYWlycGluLXJzcyIsICAgICAgICAgICAgICAg
IDEsIDAsIDAgfSwNCj4NCj5UaGlzIHBhcnQgc2hvdWxkIGJlIGFkZGVkIGJ5IGNvZGUgd2hpY2gg
aXRlcmF0ZXMgYnkNCj5mbG93X29wdGlvbnMuIEkuZS4gYWxsb2NhdGUgbGdvcHRzIGR5bmFtaWNh
bGx5LCBjb3B5DQo+c3RhdGljIG9wdGlvbnMgdGhlcmUgYnkgbWVtY3B5KCkgYW5kIGFkZCBkeW5h
bWljIGFzDQo+ZGVzY3JpYmVkIGFib3ZlLiBNYXkgYmUgZmxvd19vcHRpb25zIHJlcXVpcmUgZXh0
cmENCj5maWVsZCAgJ2hhc19hcmcnLg0KDQpSZWdhcmQgdGhpcyBvbmUsDQpTb21lIG9wdGlvbiBo
YXZlIHNwZWNpYWwgY29kZSwgbGlrZSBoYWlycGluLCBncm91cCBhbmQgY29udHJvbCwgc28gZXZl
biB3aXRoIGhhc19hcmcNCkl0IGNhbm5vdCBiZSBsb29wZWQgaW4gcHJldHR5IHdheSwgSSB0cmll
ZCBpdCBhbmQgaXQgYmVjYW1lIHVnbHksIEkgcHJlZmVyIHRvIGxlYXZlIHRoaXMgYXMgaXQuDQpJ
IGRvbid0IHRoaW5rIGl0J3MgY3JpdGljYWwgdG8gZ2V0IHJpZCBvZiBpdD8gV2hhdCBkbyB5b3Ug
dGhpbms/DQoNCg==