From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <konstantin.ananyev@intel.com>
Received: from mga09.intel.com (mga09.intel.com [134.134.136.24])
 by dpdk.org (Postfix) with ESMTP id 0D641282
 for <dev@dpdk.org>; Fri, 14 Apr 2017 01:19:51 +0200 (CEST)
Received: from orsmga004.jf.intel.com ([10.7.209.38])
 by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 13 Apr 2017 16:19:48 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.37,195,1488873600"; d="scan'208";a="77098368"
Received: from irsmsx101.ger.corp.intel.com ([163.33.3.153])
 by orsmga004.jf.intel.com with ESMTP; 13 Apr 2017 16:19:46 -0700
Received: from irsmsx109.ger.corp.intel.com ([169.254.13.12]) by
 IRSMSX101.ger.corp.intel.com ([163.33.3.153]) with mapi id 14.03.0319.002;
 Fri, 14 Apr 2017 00:19:46 +0100
From: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
To: jigsaw <jigsaw@gmail.com>, Adrien Mazarguil <adrien.mazarguil@6wind.com>
CC: "dev@dpdk.org" <dev@dpdk.org>
Thread-Topic: [dpdk-dev] Proposal of mbuf Race Condition Detection
Thread-Index: AQHStFtIFcJwTLZ8P0q9t7Pjljv3wqHDU4gAgABkbICAADTwEA==
Date: Thu, 13 Apr 2017 23:19:45 +0000
Message-ID: <2601191342CEEE43887BDE71AB9772583FAE8F95@IRSMSX109.ger.corp.intel.com>
References: <CAHVfvh6rPgy9X=pSjOCSo4J5rf-aGAkYjs7qh6H5dKGTT1rE8g@mail.gmail.com>
 <20170413145910.GG3790@6wind.com>
 <CAHVfvh4j6UdLBqRP7PJmhhSwy+nZd262B9bG9gG=TxDYSKj9QA@mail.gmail.com>
In-Reply-To: <CAHVfvh4j6UdLBqRP7PJmhhSwy+nZd262B9bG9gG=TxDYSKj9QA@mail.gmail.com>
Accept-Language: en-IE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-product: dlpe-windows
dlp-version: 10.0.102.7
dlp-reaction: no-action
x-originating-ip: [163.33.239.180]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-dev] Proposal of mbuf Race Condition Detection
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 13 Apr 2017 23:19:52 -0000

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IFttYWlsdG86ZGV2
LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBqaWdzYXcNCj4gU2VudDogVGh1cnNkYXks
IEFwcmlsIDEzLCAyMDE3IDk6NTkgUE0NCj4gVG86IEFkcmllbiBNYXphcmd1aWwgPGFkcmllbi5t
YXphcmd1aWxANndpbmQuY29tPg0KPiBDYzogZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBb
ZHBkay1kZXZdIFByb3Bvc2FsIG9mIG1idWYgUmFjZSBDb25kaXRpb24gRGV0ZWN0aW9uDQo+IA0K
PiBIaSBBZHJpZW4sDQo+IA0KPiBUaGFua3MgZm9yIHlvdXIgY29tbWVudC4NCj4gDQo+IFRoZSBM
T0NLL1VOTE9DSyBtYXkgYmUgY2FsbGVkIGJ5IHVzZXIgYXBwbGljYXRpb24gb25seS4gVGhlcmUg
YXJlIHNldmVyYWwNCj4gcmVhc29ucy4NCj4gDQo+IDEuIElmIHRoZSBsaWIgY2FsbHMgTE9DSywg
dXNlciBhcHBsaWNhdGlvbiBtYXkgYmUgcHVuaXNoZWQgdW5leHBlY3RlZGx5Lg0KPiBDb25zaWRl
ciB3aGF0IGlmIHRoZSBSeCBidXJzdCBmdW5jdGlvbiBjYWxscyB0aGUgTE9DSyBpbiBjb3JlICMx
LCBhbmQgdGhlbg0KPiB0aGUgbWJ1ZiBpcyBoYW5kZWQgb3ZlciBmcm9tDQo+IGNvcmUgIzEgdG8g
Y29yZSAjMiB0aHJvdWdoIGEgZW5xdWV1ZS9kZXF1ZXVlIG9wZXJhdGlvbiwgYXMgYmVsb3c6DQo+
IA0KPiBSeCgxKSAtLT4gRW5xdWV1ZSgxKSAtLT4gRGVxdWV1ZSgyKQ0KPiBMT0NLRUQgICAgICAg
ICAgICAgICAgICAgICAgIFBhbmljIQ0KPiANCj4gVGhlIGNvcmUgIzIgd2lsbCB0aGVuIHBhbmlj
IGJlY2F1c2UgdGhlIG1idWYgaXMgb3duZWQgYnkgY29yZSAjMSB3aXRob3V0DQo+IGJlaW5nIHJl
bGVhc2VkLg0KPiANCj4gMi4gUnggYW5kIFR4IGJvdGggdXN1YWxseSB3b3JrcyBpbiBhIGJ1cnN0
IG1vZGUsIGNvbWJpbmVkIHdpdGggcHJlZmV0Y2gNCj4gb3BlcmF0aW9uLiBNZWFud2hpbGUNCj4g
TE9DSyBhbmQgVU5MT0NLIGNhbm5vdCB3b3JrIHdlbGwgd2l0aCBwcmVmZXRjaCwgYmVjYXVzZSBp
dCByZXF1aXJlcyBkYXRhDQo+IGFjY2VzcyBvZiBtYnVmIGhlYWRlci4NCj4gDQo+IDMuIFRoZSBj
cml0aWNhbCBzZXNzaW9uIHRlbmRzIHRvIGJlIHNtYWxsLiBIZXJlIHdlICh1c2VyIGFwcGxpY2F0
aW9uKSBuZWVkDQo+IHRvIGZpbmQgYSBiYWxhbmNlOiB3aXRoIGxvbmdlciBpbnRlcnZhbCBvZiBj
cml0aWNhbA0KPiBzZWN0aW9uLCB3ZSBjYW4gaGF2ZSBtb3JlIHNlY3VyZWQgY29kZTsgaG93ZXZl
ciwgbG9uZ2VyIGR1cmF0aW9uIGxlYWRzIHRvDQo+IG1vcmUgY29tcGxpY2F0ZWQgYnVzaW5lc3MN
Cj4gbG9naWMuDQo+IA0KPiBIZW5jZSwgd2UgdXJnZSB1c2VyIGFwcGxpY2F0aW9uIHRvIHVzZSBM
T0NLL1VOTE9DSyB3aXRoIHRoZSBjb21tb24gc2Vuc2Ugb2YNCj4gY3JpdGljYWwgc2VjdGlvbnMu
DQo+IA0KPiBUYWtlIHRoZSBleGFtcGxlcy9sM2Z3ZCBmb3IgZXhhbXBsZS4gQSBwcm9wZXIgTE9D
Sy9VTkxPQ0sgcGFpciBpcyBzaG93bg0KPiBiZWxvdzoNCj4gDQo+ID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2Qv
bDNmd2RfZW1faGxtX3NzZS5oDQo+IGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW1faGxtX3NzZS5o
DQo+IGluZGV4IDc3MTRhMjAuLjlkYjAxOTAgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVzL2wzZndk
L2wzZndkX2VtX2hsbV9zc2UuaA0KPiArKysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG1f
c3NlLmgNCj4gQEAgLTI5OSw2ICsyOTksMTUgQEAgbDNmd2RfZW1fc2VuZF9wYWNrZXRzKGludCBu
Yl9yeCwgc3RydWN0IHJ0ZV9tYnVmDQo+ICoqcGt0c19idXJzdCwNCj4gDQo+ICAgICAgICAgZm9y
IChqID0gMDsgaiA8IG47IGogKz0gOCkgew0KPiANCj4gKyAgICAgICAgICAgIFJURV9NQlVGX0xP
Q0socGt0c19idXJzdFtqXSk7DQo+ICsgICAgICAgICAgICBSVEVfTUJVRl9MT0NLKHBrdHNfYnVy
c3RbaisxXSk7DQo+ICsgICAgICAgICAgICBSVEVfTUJVRl9MT0NLKHBrdHNfYnVyc3RbaisyXSk7
DQo+ICsgICAgICAgICAgICBSVEVfTUJVRl9MT0NLKHBrdHNfYnVyc3RbaiszXSk7DQo+ICsgICAg
ICAgICAgICBSVEVfTUJVRl9MT0NLKHBrdHNfYnVyc3Rbais0XSk7DQo+ICsgICAgICAgICAgICBS
VEVfTUJVRl9MT0NLKHBrdHNfYnVyc3Rbais1XSk7DQo+ICsgICAgICAgICAgICBSVEVfTUJVRl9M
T0NLKHBrdHNfYnVyc3Rbais2XSk7DQo+ICsgICAgICAgICAgICBSVEVfTUJVRl9MT0NLKHBrdHNf
YnVyc3Rbais3XSk7DQo+ICsNCj4gICAgICAgICAgICAgICAgIHVpbnQzMl90IHBrdF90eXBlID0N
Cj4gICAgICAgICAgICAgICAgICAgICAgICAgcGt0c19idXJzdFtqXS0+cGFja2V0X3R5cGUgJg0K
PiAgICAgICAgICAgICAgICAgICAgICAgICBwa3RzX2J1cnN0W2orMV0tPnBhY2tldF90eXBlICYN
Cj4gQEAgLTMzMyw4ICszNDIsMTAgQEAgbDNmd2RfZW1fc2VuZF9wYWNrZXRzKGludCBuYl9yeCwg
c3RydWN0IHJ0ZV9tYnVmDQo+ICoqcGt0c19idXJzdCwNCj4gICAgICAgICAgICAgICAgIH0NCj4g
ICAgICAgICB9DQo+IA0KPiAtICAgICAgIGZvciAoOyBqIDwgbmJfcng7IGorKykNCj4gKyAgICAg
IGZvciAoOyBqIDwgbmJfcng7IGorKykgew0KPiArICAgICAgICAgICAgICBSVEVfTUJVRl9MT0NL
KHBrdHNfYnVyc3Rbal0pOw0KPiAgICAgICAgICAgICAgICAgZHN0X3BvcnRbal0gPSBlbV9nZXRf
ZHN0X3BvcnQocWNvbmYsIHBrdHNfYnVyc3Rbal0sIHBvcnRpZCk7DQo+ICsgICAgICB9DQo+IA0K
PiAgICAgICAgIHNlbmRfcGFja2V0c19tdWx0aShxY29uZiwgcGt0c19idXJzdCwgZHN0X3BvcnQs
IG5iX3J4KTsNCj4gDQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9zc2UuaCBi
L2V4YW1wbGVzL2wzZndkL2wzZndkX3NzZS5oDQo+IGluZGV4IDFhZmExZjAuLjI5Mzg1NTggMTAw
NjQ0DQo+IC0tLSBhL2V4YW1wbGVzL2wzZndkL2wzZndkX3NzZS5oDQo+ICsrKyBiL2V4YW1wbGVz
L2wzZndkL2wzZndkX3NzZS5oDQo+IEBAIC0zMjIsNiArMzIyLDkgQEAgc2VuZF9wYWNrZXRzeDQo
c3RydWN0IGxjb3JlX2NvbmYgKnFjb25mLCB1aW50OF90IHBvcnQsDQo+IHN0cnVjdCBydGVfbWJ1
ZiAqbVtdLA0KPiANCj4gICAgICAgICBsZW4gPSBxY29uZi0+dHhfbWJ1ZnNbcG9ydF0ubGVuOw0K
PiANCj4gKyAgICAgIGZvciAoaiA9IDA7IGogPCBudW07ICsraikNCj4gKyAgICAgICAgICAgIFJU
RV9NQlVGX1VOTE9DSyhtKTsNCj4gKw0KPiAgICAgICAgIC8qDQo+ICAgICAgICAgICogSWYgVFgg
YnVmZmVyIGZvciB0aGF0IHF1ZXVlIGlzIGVtcHR5LCBhbmQgd2UgaGF2ZSBlbm91Z2ggcGFja2V0
cywNCj4gICAgICAgICAgKiB0aGVuIHNlbmQgdGhlbSBzdHJhaWdodHdheS4NCj4gQEAgLTQ5Miw4
ICs0OTUsMTAgQEAgc2VuZF9wYWNrZXRzX211bHRpKHN0cnVjdCBsY29yZV9jb25mICpxY29uZiwg
c3RydWN0DQo+IHJ0ZV9tYnVmICoqcGt0c19idXJzdCwNCj4gICAgICAgICAgICAgICAgIGlmIChs
aWtlbHkocG4gIT0gQkFEX1BPUlQpKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3Bh
Y2tldHN4NChxY29uZiwgcG4sIHBrdHNfYnVyc3QgKyBqLCBrKTsNCj4gICAgICAgICAgICAgICAg
IGVsc2UNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIChtID0gajsgbSAhPSBqICsgazsg
bSsrKQ0KPiArICAgICAgICAgICAgICAgICAgICAgIGZvciAobSA9IGo7IG0gIT0gaiArIGs7IG0r
Kykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX01CVUZfVU5MT0NLKHBr
dHNfYnVyc3RbbV0pOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9wa3Rt
YnVmX2ZyZWUocGt0c19idXJzdFttXSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAN
Cj4gICAgICAgICB9DQo+ICB9DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KPiANCj4gTm90ZSB0aGF0IGRhdGEgcmFjZSBtYXkgb3IgbWF5IG5vdCBoYXZlIHZp
c2libGUgY29uc2VxdWVuY2UuIElmIHR3byBjb3Jlcw0KPiB1bmNvbnNjaW91c2x5IHByb2Nlc3Mg
c2FtZSBtYnVmDQo+IGF0IGRpZmZlcmVudCB0aW1lLCB0aGV5IG1heSBuZXZlciBub3RpY2UgaXQ7
IGJ1dCBpZiB0d28gY29yZXMgYWNjZXNzIHNhbWUNCj4gbWJ1ZiBhdCB0aGUgc2FtZSBwaHlzaWNh
bCB0aW1lLCB0aGUNCj4gY29uc2VxdWVuY2UgaXMgdXN1YWxseSB2aXNpYmxlIChjcmFzaCkuIFdl
IGRvbid0IHNlZWsgZm9yIGEgc29sdXRpb24gdGhhdA0KPiBjYXB0dXJlcyBldmVuIHBvdGVudGlh
bCBkYXRhIHJhY2U7DQo+IGluc3RlYWQsIHdlIHNlZWsgZm9yIGEgc29sdXRpb24gdGhhdCBjYW4g
Y2FwdHVyZSBkYXRhIHJhY2UgdGhhdCBoYXBwZW5zDQo+IHNpbXVsdGFuZW91c2x5IGluIHR3byBv
ciBtb3JlIGNvcmVzLg0KPiBUaGVyZWZvcmUsIHdlIGRvIG5vdCBuZWVkIHRvIGV4dGVuZCB0aGUg
Ym9yZGVyIG9mIGxvY2tpbmcgYXMgd2lkZSBhcw0KPiBwb3NzaWJsZS4gV2Ugd2lsbCBhcHBseSBs
b2NraW5nIG9ubHkgd2hlbg0KPiB3ZSBhcmUgZm9jdXNpbmcgb24gYSBzaW5nbGUgbWJ1ZiBwcm9j
ZXNzaW5nLg0KPiANCj4gSW4gYSByZWFsIGxpZmUgYXBwbGljYXRpb24sIGEgY29yZSB3aWxsIHNw
ZW5kIHF1aXRlIHNvbWUgdGltZSBvbiBlYWNoIG1idWYuDQo+IFRoZSBpbnRlcnZhbCByYW5nZXMg
ZnJvbSBhIGZldyBodW5kcmVkDQo+IGN5Y2xlcyB0byBhIGZldyB0aG91c2FuZCBjeWNsZXMuIEFu
ZCB1c3VhbGx5IG5vdCBtb3JlIHRoYW4gYSBoYW5kZnVsIG9mDQo+IG1idWYgYXJlIGludm9sdmVk
LiBUaGlzIGlzIGEgaWRlYWwgdXNlIGNhc2UNCj4gZm9yIGxvY2tpbmcgbWJ1Zi4NCj4gDQo+IEkg
YWdyZWUgdGhhdCB0aGUgcmFjZSBkZXRlY3Rpb24gc2hhbGwgbm90IGJlIGNvbXBpbGVkIGJ5IGRl
ZmF1bHQsIHNpbmNlDQo+IG10b2QgaXMgb2Z0ZW4gY2FsbGVkLCBhbmQgZXZlcnkgbXRvZCBpbXBs
aWVzIGENCj4gdmlzaXQgdG8gbG9jYWwgY2FjaGUuIEZ1cnRoZXIsIHJlY3Vyc2l2ZSBjYWxsIG9m
IExPQ0svVU5MT0NLIHNoYWxsIGJlDQo+IHN1cHBvcnRlZCBhcyB3ZWxsLiBCdXQgSSBkb24ndCB0
aGluayByZWZjbnQgbG9naWMNCj4gc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3VudDsgdGhlc2Ug
dHdvIGFyZSBvcnRob2dvbmFsIGRlc2lnbnMsIElNTy4gKioqKioNCj4gUGxzIGNvcnJlY3QgbWUg
aWYgSSBhbSB3cm9uZyBoZXJlLiAqKioqKg0KPiANCj4gTmV0aGVyIGRvZXMgTE9DSy9VTkxPQ0sg
aXMgYXdhcmUgb2YgbWJ1ZiBhbGxvYy9mcmVlLCBmb3Igc2FtZSByZWFzb24uIFRoYXQNCj4gaXMg
d2h5IEkgc2FpZCBMT0NLL1VOTE9DSyBuZWVkcyB0bw0KPiBzdXJ2aXZlIG1idWYgYWxsb2MgaW5p
dGlhbGl6YXRpb24uDQo+IA0KPiBPZiBjb3Vyc2Ugd2UgbmVlZCB0byBzdXBwb3J0IGxvY2tpbmcg
bXVsdGlwbGUgbWJ1ZnMgYXQgdGhlIHNhbWUgdGltZS4gRm9yDQo+IGVhY2ggY29yZSwgd2Ugd2ls
bCB0aGVuIHByZXNlcnZlLCBzYXksIDggc2xvdHMuDQo+IEl0IHdvcmtzIGV4YWN0bHkgbGlrZSBh
IGRpcmVjdCBtYXBwZWQgY2FjaGVsaW5lLiBUaGF0IGlzLCB3ZSBjYW4gdXNlIDRiaXRzDQo+IGZy
b20gdGhlIG1idWYgYWRkcmVzcyB0byBsb2NhdGUgaXRzIGNhY2hlbGluZS4NCj4gSWYgdGhlIGNh
Y2hlbGluZSBoYXMgYmVlbiBvY2N1cGllZCwgd2UgZG8gYW4gZXZpY3Rpb247IHRoYXQgaXMsIHRo
ZSBuZXcNCj4gbWJ1ZiB3aWxsIHRha2UgdGhlIHBsYWNlIG9mIHRoZSBvbGQgb25lLiBUaGUgb2xk
IG9uZSBpcw0KPiB0aGVuIFVOTE9DS2VkLCB1bmZvcnR1bmF0ZWx5Lg0KPiANCj4gSG9uZXN0bHkg
SSBoYXZlIG5vdCB5ZXQgdHJpZWQgdGhpcyBhcHByb2FjaCBpbiByZWFsIGxpZmUgYXBwbGljYXRp
b24uIEJ1dCBJDQo+IGhhdmUgYmVlbiB0aGlua2luZyBvdmVyIHRoZSBwcm9ibGVtIG9mIGRhdGEg
cmFjZSBkZXRlY3Rpb24NCj4gZm9yIGEgbG9uZyB0aW1lLCBhbmQgSSBmb3VuZCB0aGUgcmVzdHJp
Y3Rpb24gYW5kIHJlcXVpcmVtZW50IG1ha2VzIHRoaXMNCj4gc29sdXRpb24gdGhlIG9ubHkgdmlh
YmxlIG9uZS4gVGhlcmUgYXJlIGh1bmRyZWRzIG9mIHBhcGVycw0KPiBwdWJsaXNoZWQgaW4gdGhl
IGZpZWxkIG9uIGRhdGEgcmFjZSBjb25kaXRpb24gZGV0ZWN0aW9uLCBidXQgdGhlIGxpZ2h0ZXN0
DQo+IG9mIHRoZSBvcHRpb25zIGhhcyBhdCBsZWFzdCA1eCBvZiBwZXJmb3JtYW5jZQ0KPiBwZW5h
bHR5LCBub3QgdG8gbWVudGlvbiB0aGUgc3BhY2UgY29tcGxleGl0eSwgbWFraW5nIGl0IG5vdCBh
cHBsaWNhYmxlIGluDQo+IHByYWN0aWNlLg0KPiANCj4gQWdhaW4sIHBscywgYW55b25lIGhhcyBz
YW1lIHBhaW5mdWwgZXhwZXJpZW5jZSBvZiBkYXRhIHJhY2UgYnVncywgc2hhcmUNCj4gd2l0aCBt
ZSB5b3VyIGNvbmNlcm5zLiBJdCB3b3VsZCBiZSBuaWNlIHRvIGNvbWUgdXAgd2l0aA0KPiBzb21l
IHByYWN0aWNhbCBkZXZpY2UgdG8gYWRkcmVzcyB0aGlzIHByb2JsZW0uIEkgYmVsaWV2ZSA2V2lu
ZCBhbmQgb3RoZXIgSVANCj4gc3RhY2sgdmVuZG9ycyBtdXN0IHNoYXJlIHRoZSBzYW1lIGZlZWxp
bmcgYW5kIG9waW5pb24uDQo+IA0KPiB0aHggJg0KPiByZ2RzLA0KPiANCj4gUWluZ2xhaQ0KPiAN
Cj4gDQo+IA0KPiBPbiBUaHUsIEFwciAxMywgMjAxNyBhdCA1OjU5IFBNLCBBZHJpZW4gTWF6YXJn
dWlsIDwNCj4gYWRyaWVuLm1hemFyZ3VpbEA2d2luZC5jb20+IHdyb3RlOg0KPiANCj4gPiBIaSBR
aW5nbGFpLA0KPiA+DQo+ID4gT24gVGh1LCBBcHIgMTMsIDIwMTcgYXQgMDQ6Mzg6MTlQTSArMDMw
MCwgamlnc2F3IHdyb3RlOg0KPiA+ID4gSGksDQo+ID4gPg0KPiA+ID4gSSBoYXZlIGEgcHJvcG9z
YWwgZm9yIG1idWYgcmFjZSBjb25kaXRpb24gZGV0ZWN0aW9uIGFuZCBJIHdvdWxkIGxpa2UgdG8N
Cj4gPiBnZXQNCj4gPiA+IHlvdXIgb3BpbmlvbnMgYmVmb3JlDQo+ID4gPiBjb21taXR0aW5nIGFu
eSBwYXRjaC4NCj4gPiA+DQo+ID4gPiBSYWNlIGNvbmRpdGlvbiBpcyB0aGUgd29yc3QgYnVnIEkg
Y2FuIHRoaW5rIG9mOyBhcyBpdCBjYXVzZXMgY3Jhc2hpbmcNCj4gPiBsb25nDQo+ID4gPiBhZnRl
ciB0aGUgZmlyc3QgY3JpbWUgc2NlbmUsDQo+ID4gPiBhbmQgdGhlIGNvbnNlcXVlbmNlIGlzIHVu
cHJlZGljdGFibGUgYW5kIGRpZmZpY3VsdCB0byB1bmRlcnN0YW5kLg0KPiA+ID4NCj4gPiA+IEJl
c2lkZXMsIHJhY2UgY29uZGl0aW9uIGlzIHZlcnkgZGlmZmljdWx0IHRvIHJlcHJvZHVjZS4gVXN1
YWxseSB3ZSBnZXQgYQ0KPiA+ID4gY29yZWR1bXAgZnJvbSBsaXZlIG5ldHdvcmssDQo+ID4gPiBi
dXQgdGhlIGNvcmVkdW1wIGl0c2VsZiBkZWxpdmVycyBuZWFybHkgemVybyBpbmZvLiBXZSBqdXN0
IGtub3cgdGhhdCB0aGUNCj4gPiA+IG1idWYgaXMgc29tZWhvdyBicm9rZW4sIGFuZA0KPiA+ID4g
aXQgaXMgcGVyaGFwcyBvdmVyd3JpdHRlbiBieSBhbm90aGVyIGNvcmUgYXQgYW55IG1vbWVudC4N
Cj4gPiA+DQo+ID4gPiBUaGVyZSBhcmUgdG9vbHMgc3VjaCBhcyBWYWxncmluZCBhbmQgVGhyZWFk
U2FuaXRpemVyIHRvIGNhcHR1cmUgdGhpcw0KPiA+IGZhdWx0Lg0KPiA+ID4gQnV0IHRoZSBvdmVy
aGVhZCBicm91Z2h0DQo+ID4gPiBieSB0aGUgdG9vbHMgYXJlIHRvbyBoaWdoIHRvIGJlIGRlcGxv
eWVkIGluIHBlcmZvcm1hbmNlIHRlc3QsIG5vdCB0bw0KPiA+ID4gbWVudGlvbiBpbiB0aGUgbGl2
ZSBuZXR3b3JrLiBCdXQNCj4gPiA+IHJhY2UgY29uZGl0aW9uIHJhcmVseSBoYXBwZW5zIHVuZGVy
IGxvdyBwcmVzc3VyZS4NCj4gPiA+DQo+ID4gPiBFdmVuIHdvcnNlLCBldmVuIGluIHRoZW9yeSwg
dGhlIHRvb2xzIG1lbnRpb25lZCBhcmUgbm90IGNhcGFibGUgb2YNCj4gPiA+IGNhcHR1cmluZyB0
aGUgc2NlbmFyaW8sIGJlY2F1c2UNCj4gPiA+IHRoZXkgcmVxdWlyZXMgZXhwbGljaXQgY2FsbHMg
b24gbG9ja2luZyBwcmltaXRpdmVzIHN1Y2ggYXMgcHRocmVhZCBtdXRleC4NCj4gPiA+IFRoaXMg
aXMgYmVjYXVzZSB0aGUgc2VtYW50aWNzDQo+ID4gPiBhcmUgbm90IHVuZGVyc3Rvb2QgYnkgdGhl
IHRvb2xzIHdpdGhvdXQgZXhwbGljaXQgbG9jay91bmxvY2suDQo+ID4gPg0KPiA+ID4gV2l0aCBz
dWNoIGtub3duIHJlc3RyaWN0aW9ucywgSSBoYXZlIGEgcHJvcG9zYWwgcm91Z2hseSBhcyBiZWxv
dy4NCj4gPiA+DQo+ID4gPiBUaGUgaWRlYSBpcyB0byBhc2sgY29kZXIgdG8gZG8gZXhwbGljaXQg
bG9jay91bmxvY2sgb24gZWFjaCBtYnVmIHRoYXQNCj4gPiA+IG1hdHRlcnMuIFRoZSBwc2V1ZG8g
Y29kZSBpcyBhcyBiZWxvdzoNCj4gPiA+DQo+ID4gPiAgICAgUlRFX01CVUZfTE9DSyhtKTsNCj4g
PiA+ICAgICAvKiB1c2UgbWJ1ZiBhcyB1c3VhbCAqLw0KPiA+ID4gICAgIC4uLg0KPiA+ID4gICAg
IFJURV9NQlVGX1VOTE9DSyhtKTsNCj4gPiA+DQo+ID4gPiBEdXJpbmcgdGhlIHByb3RlY3RlZCBj
cml0aWNhbCBzZWN0aW9uLCBvbmx5IHRoZSBjb3JlIHdoaWNoIGhvbGRzIHRoZSBsb2NrDQo+ID4g
PiBjYW4gYWNjZXNzIHRoZSBtYnVmOyB3aGlsZQ0KPiA+ID4gb3RoZXIgY29yZXMsIGlmIHRoZXkg
ZGFyZSB0byB1c2UgbWJ1ZiwgdGhleSB3aWxsIGJlIHB1bmlzaGVkIGJ5IHNlZ2ZhdWx0Lg0KPiA+
ID4NCj4gPiA+IFNpbmNlIHRoZSBwcm9wb3NhbCBzaGFsbCBiZSBmZWFzaWJsZSBhdCBsZWFzdCBp
biBwZXJmb3JtYW5jZSB0ZXN0LCB0aGUNCj4gPiA+IG92ZXJoZWFkIG9mIGxvY2tpbmcgYW5kDQo+
ID4gPiBwdW5pc2htZW50IG11c3QgYmUgc21hbGwuIEFuZCB0aGUgYWNjZXNzIHRvIG1idWYgbXVz
dCBiZSBhcyB1c3VhbC4NCj4gPiA+DQo+ID4gPiBIZW5jZSwgdGhlIFJURV9NQlVGX0xPQ0sgaXMg
YWN0dWFsbHkgZG9pbmcgdGhlIGZvbGxvd2luZyAocHNldWRvIGNvZGUpOg0KPiA+ID4NCj4gPiA+
IFJURV9NQlVGX0xPQ0sobSkNCj4gPiA+IHsNCj4gPiA+ICAgICBzdG9yZV9wZXJfY29yZV9jYWNo
ZShtLCBtLT5idWZfYWRkcik7DQo+ID4gPiAgICAgbS0+YnVmX2FkZHIgPSBOVUxMOw0KPiA+ID4g
ICAgIG1iKCk7IC8vIG1lbW9yeSBiYXJyaWVyDQo+ID4gPiB9DQo+ID4gPg0KPiA+ID4gQW5kIFJU
RV9NQlVGX1VOTE9DSyBpcyBzaW1wbHkgdGhlIHJldmVyc2U6DQo+ID4gPg0KPiA+ID4gUlRFX01C
VUZfVU5MT0NLKG0pDQo+ID4gPiB7DQo+ID4gPiAgICAgcHVyZ2VfcGVyX2NvcmVfY2FjaGUobSk7
DQo+ID4gPiAgICAgbS0+YnVmX2FkZHIgPSBsb2FkX3Blcl9jb3JlX2NhY2hlKG0pOw0KPiA+ID4g
ICAgIG1iKCk7DQo+ID4gPiB9DQo+ID4gPg0KPiA+ID4gQXMgd2UgY2FuIHNlZSB0aGF0IHRoZSBp
ZGVhIGlzIHRvIHJlLXdyaXRlIG0tPmJ1Zl9hZGRyIHdpdGggTlVMTCwgYW5kDQo+ID4gc3RvcmUN
Cj4gPiA+IGl0IGluIGEgcGVyLWNvcmUNCj4gPiA+IGNhY2hlLiBUaGUgb3RoZXIgY29yZXMsIHdo
aWxlIHRyeWluZyB0byBhY2Nlc3MgdGhlIG1idWYgZHVyaW5nIGNyaXRpY2FsDQo+ID4gPiBzZWN0
aW9uLCB3aWxsIGJlIGNlcnRhaW5seQ0KPiA+ID4gcHVuaXNoZWQuDQo+ID4gPg0KPiA+ID4gVGhl
biBvZiBjb3Vyc2Ugd2UgbmVlZCB0byBrZWVwIHRoZSBvd25lciBjb3JlIHdvcmtpbmcuIFRoaXMg
aXMgZG9uZSBieQ0KPiA+ID4gbWFraW5nIGNoYW5nZXMgdG8NCj4gPiA+IG10b2QsIGFzIGJlbG93
Og0KPiA+ID4NCj4gPiA+ICNkZWZpbmUgcnRlX3BrdG1idWZfbXRvZF9vZmZzZXQobSwgdCwgbykg
XA0KPiA+ID4gICAgICgodCkoKGNoYXIgKikobSktPmJ1Zl9hZGRyICsgbG9hZF9wZXJfY29yZV9j
YWNoZShtKSArIChtKS0+ZGF0YV9vZmYgKw0KPiA+ID4gKG8pKSkNCj4gPiA+DQo+ID4gPiBUaGUg
cGVyLWNvcmUgY2FjaGUgb2YgbWJ1ZiB3b3JrcyBsaWtlIGEga2V5LXZhbHVlIGRhdGFiYXNlLCB3
aGljaCB3b3Jrcw0KPiA+ID4gbGlrZSBhIGRpcmVjdC1tYXBwaW5nDQo+ID4gPiBjYWNoZS4gSWYg
YW4gZXZpY3Rpb24gaGFwcGVucyAoYSBuZXdseSBhcnJpdmluZyBtYnVmIG11c3Qga2ljayBvdXQg
YW4gb2xkDQo+ID4gPiBvbmUpLCB0aGVuIHRoZSB3ZSByZXN0b3JlDQo+ID4gPiB0aGUgYnVmX2Fk
ZHIgb2YgdGhlIGV2aWN0ZWQgbWJ1Zi4gT2YgY291cnNlIHRoZSBSVEVfTUJVRl9VTkxPQ0sgd2ls
bCB0aGVuDQo+ID4gPiB0YWtlIGNhcmUgb2Ygc3VjaA0KPiA+ID4gc2l0dWF0aW9uLg0KPiA+ID4N
Cj4gPiA+IE5vdGUgdGhhdCB3ZSBleHBlY3QgdGhlIExPQ0svVU5MT0NLIHRvIHdvcmsgZXZlbiB3
aGVuIHRoZSBtYnVmIGlzIGZyZWVkDQo+ID4gYW5kDQo+ID4gPiBhbGxvY2F0ZWQsIHNpbmNlDQo+
ID4gPiB3ZSBkb24ndCB0cnVzdCB0aGUgcmVmY250LiBBIGRvdWJsZS1mcmVlIGlzIGFjdHVhbGx5
IHZlcnkgcmFyZTsgYnV0IGRhdGENCj4gPiA+IHJhY2UgY2FuIG9jY3VyIHdpdGhvdXQgZG91Ymxl
LWZyZWUuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdXJ2aXZlIHRoZQ0KPiA+ID4gYWxsb2NhdGlv
biBvZiBtYnVmLCB0aGF0IGlzIHJ0ZV9wa3RtYnVmX2luaXQsIHdoaWNoIHJlc2V0IHRoZQ0KPiA+
ID4gYnVmX2FkZHIuDQo+ID4gPg0KPiA+ID4gRnVydGhlciwgb3RoZXIgZGVyZWZlcmVuY2UgdG8g
YnVmX2FkZHIgaW4gcnRlX21idWYuaCBuZWVkIHRvIGJlIHJldmlzZWQuDQo+ID4gPiBCdXQgaXQg
aXMgbm90IGEgYmlnIGRlYWwgKEkgaG9wZSkuDQo+ID4gPg0KPiA+ID4gVGhlIHJ1bnRpbWUgb3Zl
cmhlYWQgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB2ZXJ5IGxpZ2h0LXdlaWdodGVkLCBhbmQN
Cj4gPiA+IHByb2JhYmx5IGlzIGFibGUgdG8gdHVybmVkDQo+ID4gPiBvbiBldmVuIGluIGxpdmUg
bmV0d29yay4gQW5kIGl0IGlzIG5vdCBpbnRydXNpdmUgYXQgYWxsOiBubyBjaGFuZ2UgaXMNCj4g
PiA+IG5lZWRlZCBpbiBzdHJ1Y3QgcnRlX21idWY7IHdlIGp1c3QNCj4gPiA+IG5lZWQgYSBPKE4p
IHNwYWNlIGNvbXBsZXhpdHkgKHdoZXJlIE4gaXMgbnVtYmVyIG9mIGNvcmVzKSwgYW5kIE8oMSkN
Cj4gPiBydW50aW1lDQo+ID4gPiBjb21wbGV4aXR5Lg0KPiA+ID4NCj4gPiA+IEFscmlnaHQsIHRo
YXQgaXMgYmFzaWNhbGx5IHdoYXQgaXMgaW4gbXkgbWluZC4gQmVmb3JlIGFueSBwYXRjaCBpcw0K
PiA+ID4gcHJvdmlkZWQsIG9yIGFueSBwZXJmIGFuYWx5c2lzIGlzIG1hZGUsIEkgd291bGQgbGlr
ZSB0byBrbm93IHdoYXQgYXJlIHRoZQ0KPiA+ID4gcmlza3MgZm9ybSBkZXNpZ24gcG9pbnQgb2Yg
dmlldy4gUGxlYXNlIGxlYXZlIHlvdXIgZmVlZGJhY2suDQo+ID4NCj4gPiBZb3VyIHByb3Bvc2Fs
IG1ha2VzIHNlbnNlIGJ1dCBJJ20gbm90IHN1cmUgd2hlcmUgZGV2ZWxvcGVycyBzaG91bGQgY2Fs
bA0KPiA+IFJURV9NQlVGX0xPQ0soKSBhbmQgUlRFX01CVUZfVU5MT0NLKCkuIElzIGl0IHRhcmdl
dGVkIGF0IHVzZXIgYXBwbGljYXRpb25zDQo+ID4gb25seT8gSXMgaXQgdG8gYmUgdXNlZCBpbnRl
cm5hbGx5IGJ5IERQREsgYXMgd2VsbD8gRG9lcyBpdCBpbmNsdWRlIFBNRHM/DQo+ID4NCj4gPiBJ
IHRoaW5rIGFueSBvdmVyaGVhZCBvdXRzaWRlIG9mIGRlYnVnZ2luZyBtb2RlLCBhcyBtaW5pbWFs
IGFzIGl0IGlzLCBpcyB0b28NCj4gPiBtdWNoIG9mIGEgInB1bmlzaG1lbnQiIGZvciB3ZWxsIGJl
aGF2aW5nIGFwcGxpY2F0aW9ucy4gVGhlIGNvc3Qgb2YgYSBtZW1vcnkNCj4gPiBiYXJyaWVyIGNh
biBiZSBleHRyZW1lbHkgaGlnaCBhbmQgdGhpcyBpcyBvbmUgb2YgdGhlIHJlYXNvbnMgRFBESyBw
cm9jZXNzZXMNCj4gPiBtYnVmcyBhcyBidWxrcyBldmVyeSB0aW1lIGl0IGdldHMgdGhlIGNoYW5j
ZS4gUlRFX01CVUZfTE9DSygpIGFuZA0KPiA+IFJURV9NQlVGX1VOTE9DSygpIHNob3VsZCB0aHVz
IGV4aXN0IHVuZGVyIHNvbWUgY29tcGlsYXRpb24gb3B0aW9uIGRpc2FibGVkDQo+ID4gYnkgZGVm
YXVsdCwgYW5kIHRob3VnaHQgYXMgYW4gYWRkaXRpb25hbCBkZWJ1Z2dpbmcgdG9vbC4NCj4gPg0K
PiA+IEFsc28gdGhlIGltcGxlbWVudGF0aW9uIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgZXhwZW5z
aXZlIHRoYW4geW91cg0KPiA+IHN1Z2dlc3Rpb24sIGluIG15IG9waW5pb24gdGhlIHJlZmVyZW5j
ZSBjb3VudCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudA0KPiA+IGFuZC9vciBSVEVfTUJVRl9M
T0NLKCkgbXVzdCBiZSByZWN1cnNpdmUsIGJlY2F1c2UgdGhpcyBpcyBob3cgbWJ1ZnMNCj4gPiB3
b3JrLiBGcmVlaW5nIG1idWZzIG11bHRpcGxlIHRpbWVzIGlzIHBlcmZlY3RseSB2YWxpZCBpbiBt
YW55IGNhc2VzLg0KPiA+DQo+ID4gSG93IGNhbiBvbmUgbG9jayBzZXZlcmFsIG1idWZzIGF0IG9u
Y2UgYnkgdGhlIHdheT8NCj4gPg0KPiA+IFNpbmNlIGl0IGFmZmVjdHMgcGVyZm9ybWFuY2UsIHRo
aXMgY2FuIG9ubHkgbWFrZSBzZW5zZSBhcyBhIGRlYnVnZ2luZyB0b29sDQo+ID4gZGV2ZWxvcGVy
cyBjYW4gdXNlIHdoZW4gdGhleSBlbmNvdW50ZXIgc29tZSBjb3JydXB0aW9uIGlzc3VlIHRoZXkg
Y2Fubm90DQo+ID4gaWRlbnRpZnksIHNvbWV3aGF0IGxpa2UgcG9pc29uaW5nIGJ1ZmZlcnMgYmVm
b3JlIHRoZXkgYXJlIGZyZWVkLiBOb3Qgc3VyZQ0KPiA+IGl0J3Mgd29ydGggdGhlIHRyb3VibGUu
DQoNCkkgYW0gYWdyZWUgd2l0aCBBZHJpYW4gaGVyZSAtIGl0IGRvZXNuJ3QgIGxvb2sgd29ydGgg
aXQ6DQpGcm9tIG9uZSBzaWRlIGl0IGFkZHMgcXVpdGUgYSBsb3Qgb2Ygb3ZlcmhlYWQgYW5kIGNv
bXBsZXhpdHkgdG8gdGhlIG1idWYgY29kZS4NCkZyb20gb3RoZXIgc2lkZSBpdCB1c2FnZSBzZWVt
cyBwcmV0dHkgbGltaXRlZCAtIHRoZXJlIHdvdWxkIGJlIGEgbG90IG9mIGNhc2VzIHdoZW4gaXQg
d291bGRuJ3QgYmUNCmFibGUgdG8gZGV0ZWN0IHJhY2UgY29uZGl0aW9uIGFueXdheS4uDQpTbyBt
eSBvcGluaW9uIGlzIE5BQ0suDQpCVFcsIGlmIHlvdXIgYXBwIGlzIGludGVudGlvbmFsbHkgdHJ5
aW5nIHRvIGRvIHJlYWQvd3JpdGUgdG8gdGhlIHNhbWUgbWJ1ZnMgc2ltdWx0YW5lb3VzbHkgZnJv
bSBkaWZmZXJlbnQgdGhyZWFkcw0Kd2l0aG91dCBzb21lIGV4cGxpY2l0IHN5bmNocm9uaXphdGlv
biwgdGhlbiBtb3N0IGxpa2VseSB0aGVyZSBpcyBzb21ldGhpbmcgd3Jvbmcgd2l0aCBpdC4NCktv
bnN0YW50aW4NCg==