From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <yipeng1.wang@intel.com>
Received: from mga03.intel.com (mga03.intel.com [134.134.136.65])
 by dpdk.org (Postfix) with ESMTP id 537FC4CC3
 for <dev@dpdk.org>; Wed,  1 Aug 2018 03:40:13 +0200 (CEST)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from fmsmga006.fm.intel.com ([10.253.24.20])
 by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 31 Jul 2018 18:40:11 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.51,429,1526367600"; d="scan'208";a="250655880"
Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129])
 by fmsmga006.fm.intel.com with ESMTP; 31 Jul 2018 18:40:11 -0700
Received: from orsmsx105.amr.corp.intel.com ([169.254.2.59]) by
 ORSMSX102.amr.corp.intel.com ([169.254.3.209]) with mapi id 14.03.0319.002;
 Tue, 31 Jul 2018 18:40:06 -0700
From: "Wang, Yipeng1" <yipeng1.wang@intel.com>
To: Michel Machado <michel@digirati.com.br>, "Wiles, Keith"
 <keith.wiles@intel.com>, "Fu, Qiaobin" <qiaobinf@bu.edu>
CC: "Richardson, Bruce" <bruce.richardson@intel.com>, "De Lara Guarch, Pablo"
 <pablo.de.lara.guarch@intel.com>, "dev@dpdk.org" <dev@dpdk.org>, "Doucette,
 Cody, Joseph" <doucette@bu.edu>, "Gobriel, Sameh" <sameh.gobriel@intel.com>,
 "Tai, Charlie" <charlie.tai@intel.com>
Thread-Topic: [dpdk-dev] [PATCH] hash table: add a bucket iterator function
Thread-Index: AQHUJpuIvVZn3TGPwk+UdIhd8WkN66SmpQeAgAHFNVCAAOfaAIAAk50AgAAJ7ICAADAgoA==
Date: Wed, 1 Aug 2018 01:40:06 +0000
Message-ID: <D2C4A16CA39F7F4E8E384D204491D7A66148315C@ORSMSX105.amr.corp.intel.com>
References: <20180728174851.46422-1-qiaobinf@bu.edu>
 <5CCC4983-8B4F-480B-B6E1-3A01806BC416@intel.com>
 <D2C4A16CA39F7F4E8E384D204491D7A66148250A@ORSMSX105.amr.corp.intel.com>
 <7E249D4F-3CAA-4EDB-936D-4DFAEA55F0D8@bu.edu>
 <C8469D06-5B3E-4781-8334-F79C7B6C183C@intel.com>
 <8a2eb96f-bf40-a6af-c22c-072f915e063e@digirati.com.br>
In-Reply-To: <8a2eb96f-bf40-a6af-c22c-072f915e063e@digirati.com.br>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-product: dlpe-windows
dlp-version: 11.0.400.15
dlp-reaction: no-action
x-ctpclassification: CTP_NT
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZTJmYmM5ZmQtMDY4ZC00Yzg1LTkyN2MtOTJjMDZjM2NhZjg5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiNFJya0VcL2dOdnA0Tk5nMkZFYVZ2WG1vM1wvZTJ1alNsd0R3K0dCUFRSaDhHbVJsMWhKYjNwR3ZSWlZFcnFLdVhEIn0=
x-originating-ip: [10.22.254.139]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-dev] [PATCH] hash table: add a bucket iterator function
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>
X-List-Received-Date: Wed, 01 Aug 2018 01:40:14 -0000

SGksDQoNClRoYW5rcyBmb3IgZXhwbGFpbmluZyB0aGUgdXNlIGNhc2UuIEkgbm93IHVuZGVyc3Rh
bmQgYW5kIEkgYWdyZWUgdGhhdCByZXBsYWNpbmcgc3RhbGUgZW50cmllcyBkdXJpbmcgaW5zZXJ0
aW9uIGlzIGFuIGludGVyZXN0aW5nIGFuZCB1c2VmdWwgYWRkaXRpb24gdG8gdGhpcyBsaWJyYXJ5
LiANCg0KTXkgY29uY2VybiBpcyBzdGlsbCB0aGF0IGl0IG1heSBiZSBub3QgYSBnb29kIHByYWN0
aWNlIHRvIGV4cG9zZSB0aGUgYnVja2V0aXplZCBzdHJ1Y3R1cmUgb2YgdGhlIHJ0ZV9oYXNoLiBG
b3IgZXhhbXBsZSwgaW4gZnV0dXJlLCBydGVfaGFzaCBtYXkgdXNlIHRocmVlIGhhc2ggZnVuY3Rp
b25zLCBvciBhcyBJIG1lbnRpb25lZCBlYWNoIGJ1Y2tldCBtYXkgaGF2ZSBhbiBhZGRpdGlvbmFs
IGxpbmtlZCBsaXN0IG9yIGV2ZW4gYSBzZWNvbmQgbGV2ZWwgaGFzaCB0YWJsZSwgb3IgaWYgdGhl
IGhvcHNjb3RjaCBoYXNoIHJlcGxhY2VzIGN1Y2tvbyBoYXNoIGFzIHRoZSBuZXcgYWxnb3JpdGht
LiBXaGVuIHRoZXNlIGhhcHBlbiwgdGhlIHByb3Bvc2VkIEFQSSBtYXkgbG9zZSB0aGVpciBvcmln
aW5hbCBpbnRlbnRpb24uIEFzIGEgZ2VuZXJhbCBoYXNoIHRhYmxlIGxpYnJhcnksIGNvbW1vbiB1
c2VycyBzaG91bGQgYXNzdW1lIGEgYmxhY2sgYm94IG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4NCg0K
Rm9yIHRoZSBpdGVyYXRpb24gZnVuY3Rpb24sIEkgYWdyZWUgb24gdGhlIGFkdmFudGFnZSBvdmVy
IGN1cnJlbnQgZW50cnkgYnkgZW50cnkgaXRlcmF0aW9uLiBCdXQgaXQgZXhwb3NlcyB0aGUgYnVj
a2V0IGluZGV4IGFzIHdlbGwuDQoNCkhvdyBhYm91dCBhbiBBUEkgdGhhdCBpcyBtb3JlIHVuaXZl
cnNhbD8gRm9yIGV4YW1wbGUsIGFuIEFQSSBzdWNoIGFzICJydGVfaXRlcmF0ZV9jb25mbGljdF9l
bnRyaWVzIi4gIEFmdGVyIGFuIGluc2VydGlvbiBmYWlsdXJlLCB0aGlzIGZ1bmN0aW9uIHdpbGwg
aXRlcmF0ZSBhbGwgZW50cmllcyB0aGF0IG1heSBjb25mbGljdCB3aXRoIHRoZSBuZXdseSBpbnNl
cnRlZCBrZXkgYW5kIHlvdSBjb3VsZCBkZWNpZGUgd2hpY2ggZW50cnkgdG8gZXZpY3Q/IA0KDQpU
aGFua3MNCllpcGVuZw0KDQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBNaWNo
ZWwgTWFjaGFkbyBbbWFpbHRvOm1pY2hlbEBkaWdpcmF0aS5jb20uYnJdDQo+U2VudDogVHVlc2Rh
eSwgSnVseSAzMSwgMjAxOCA4OjMzIEFNDQo+VG86IFdpbGVzLCBLZWl0aCA8a2VpdGgud2lsZXNA
aW50ZWwuY29tPjsgRnUsIFFpYW9iaW4gPHFpYW9iaW5mQGJ1LmVkdT4NCj5DYzogV2FuZywgWWlw
ZW5nMSA8eWlwZW5nMS53YW5nQGludGVsLmNvbT47IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5y
aWNoYXJkc29uQGludGVsLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbw0KPjxwYWJsby5kZS5s
YXJhLmd1YXJjaEBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmc7IERvdWNldHRlLCBDb2R5LCBKb3Nl
cGggPGRvdWNldHRlQGJ1LmVkdT47IEdvYnJpZWwsIFNhbWVoDQo+PHNhbWVoLmdvYnJpZWxAaW50
ZWwuY29tPjsgVGFpLCBDaGFybGllIDxjaGFybGllLnRhaUBpbnRlbC5jb20+DQo+U3ViamVjdDog
UmU6IFtkcGRrLWRldl0gW1BBVENIXSBoYXNoIHRhYmxlOiBhZGQgYSBidWNrZXQgaXRlcmF0b3Ig
ZnVuY3Rpb24NCj4NCj5PbiAwNy8zMS8yMDE4IDEwOjU3IEFNLCBXaWxlcywgS2VpdGggd3JvdGU6
DQo+Pg0KPj4+IE9uIEp1bCAzMSwgMjAxOCwgYXQgMTowOSBBTSwgRnUsIFFpYW9iaW4gPHFpYW9i
aW5mQGJ1LmVkdT4gd3JvdGU6DQo+Pj4NCj4+PiBIaSBZaXBlbmcsDQo+Pj4NCj4+PiBUaGFua3Mg
Zm9yIHRoZSBmZWVkYmFja3MhDQo+Pj4NCj4+Pj4gT24gSnVsIDMwLCAyMDE4LCBhdCA0OjI0IFBN
LCBXYW5nLCBZaXBlbmcxIDx5aXBlbmcxLndhbmdAaW50ZWwuY29tPiB3cm90ZToNCj4+Pj4NCj4+
Pj4gSGksIFFpYW9iaW4sDQo+Pj4+DQo+Pj4+IFRoYW5rcyBmb3IgdGhlIHBhdGNoLiBJZiBJIHVu
ZGVyc3RhbmQgY29ycmVjdGx5IHlvdXIgdXNlIGNhc2UgaXMgdG8gdXNlIGhhc2ggdGFibGUgYXMg
YSAiY2FjaGUiIHRoYXQgbmV3IGVudHJpZXMgc2hvdWxkIGV2aWN0IHN0YWxlDQo+b25lcyBhdXRv
bWF0aWNhbGx5LiBDb3VsZCB5b3UgYmUgbW9yZSBzcGVjaWZpYyBvbiB5b3VyIHVzZSBzY2VuYXJp
b3Mgc28gdGhhdCBJIGNhbiBoYXZlIG1vcmUgY29udGV4dD8NCj4+Pj4NCj4+Pg0KPj4+IEFjdHVh
bGx5LCB3ZSBkaWRu4oCZdCB1c2UgaGFzaCB0YWJsZSBhcyBhIOKAnGNhY2hl4oCdLCBhbmQgdGhl
cmUgaXMgbm8gYXV0b21hdGlvbiB0byBldmljdCBzdGFsZSBvbmVzLiBJbnN0ZWFkLCB0aGUNCj5m
dW5jdGlvbnJ0ZV9oYXNoX2J1Y2tldF9pdGVyYXRlKCkgYWxsb3dzIHRoZSBjYWxsZXJzIHRvIGl0
ZXJhdGUgb3ZlciB0aGUgaGFzaCB0YWJsZSBpbiBhbiBpbmNyZW1lbnRhbCB3YXksIGkuZS4sIG9u
ZSBidWNrZXQgYnkgYW5vdGhlcg0KPmJ1Y2tldCwgc28gdGhhdCB0aGUgY2FsbGVyIGRvZXNu4oCZ
dCBoYXZlIHRvIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgaGFzaCB0YWJsZSBpbiBvbmUgdGltZS4g
VGhpcyB3YXkgY2FuIGF2b2lkIGNyZWF0aW5nIGhpY2N1cHMgYW5kDQo+YWNoaWV2ZSBiZXR0ZXIg
Y2FjaGUgcGVyZm9ybWFuY2UuIE9uZSBwb3NzaWJsZSB1c2Ugc2NlbmFyaW8gaXMgd2hlbiBERG9T
IGF0dGFja3MgaGFwcGVuLCBvbmUgbWF5IHdhbnQgdG8gdGFrZSBtb3JlIENQVSB0aW1lIHRvDQo+
cHJvY2VzcyB0aGUgcGFja2V0cywgdGh1cyBpdGVyYXRpbmcgb3ZlciB0aGUgaGFzaCB0YWJsZSBp
bmNyZW1lbnRhbGx5IGlzIGRlc2lyYWJsZS4NCj4+DQo+PiBJIGRvIG5vdCBzZWUgdGhpcyBhcyBh
IGNhY2hlLCBidXQgb25seSBhIHdheSB0byBpdGVyYXRlIG92ZXIgdGhlIGhhc2ggdGFibGUuDQo+
Pg0KPj4+DQo+Pj4+IFdlIGFyZSBhY3R1YWxseSB3b3JraW5nIG9uIGFuIGV4dGVuZGFibGUgdmVy
c2lvbiBvZiBydGVfaGFzaCB3aGljaCB3aWxsIGxpbmsgZXh0cmEgYnVja2V0cyB0byBjdXJyZW50
IHRhYmxlIGlmIHRoZSB0YWJsZSBpcyBmdWxsLiBBcw0KPmxvbmcgYXMgdGhlIHRhYmxlIGlzIHNp
emVkIGFwcHJvcHJpYXRlbHksIHRoZXJlIHdpbGwgYmUgbm8gY29uZmxpY3QgaXNzdWVzIHRodXMg
eW91IGRvbuKAmXQgbmVlZCB0byByZXBsYWNlIG9sZCBlbnRyaWVzLiBXaWxsIHRoaXMgc29sdmUg
eW91cg0KPmlzc3VlPyBBbHNvLCBpZiB0aGUg4oCcY2FjaGXigJ0gbW9kZSBpcyB3aGF0IHlvdSB3
YW50LCB3ZSBoYXZlIHRoZSBtZW1iZXJzaGlwIGxpYnJhcnkg4oCccnRlX21lbWJlcuKAnS4gSXMg
aXQgYXBwbGljYWJsZSB0byB5b3VyIGNhc2U/DQo+Pj4NCj4+PiBJIGFncmVlIHRoYXQgYWRkaW5n
IGV4dHJhIGJ1Y2tldHMgdG8gY3VycmVudCB0YWJsZSB3aGVuIHRoZSB0YWJsZSBpcyBmdWxsIGNh
biBhbGxldmlhdGUgdGhpcyBzY2VuYXJpby4gSW5kZWVkLCB3ZSBhbHNvIGNvbnNpZGVyZWQgdGhp
cw0KPnNvbHV0aW9uIGJlZm9yZSBjb21pbmcgdXAgb3VyIHByb3Bvc2VkIHNvbHV0aW9uLiBIb3dl
dmVyLCBpdOKAmXMgc3RpbGwgaGlnaGx5IGRlc2lyYWJsZSB0byBoYXZlIGEgYnVja2V0IGl0ZXJh
dG9yIGZ1bmN0aW9uLiBDb25zaWRlcmluZw0KPnRoZSBzY2VuYXJpbyB3aGVyZSB0aGUgbWFjaGlu
ZeKAmXMgbWVtb3J5IGlzIGxpbWl0ZWQgYW5kIGNhbm5vdCBhbHdheXMgYWxsb2NhdGUgbmV3IG1l
bW9yeSB0byB0aGUgaGFzaCB0YWJsZSAoZS5nLiwgRERvUyBhdHRhY2tzLA0KPnN3aXRjaCBtZWFz
dXJlbWVudCB0YXNrcywgZXRjLiksIGEgc29sdXRpb24gaXMgdG8gYWxsb3cgdGhlIGNhbGxlcnMg
ZXZpY3Qgc29tZSBsZXNzIGltcG9ydGFudCAodGhlIGNyaXRlcmlhIGZvciB0aGUgZXZpY3Rpb24g
aXMgYmFzZWQgb24gdGhlDQo+Y2FsbGVy4oCZcyBuZWVkcykgZW50cmllcy4NCj4+Pg0KPj4+IElu
ZGVlZCwgd2UgZG9u4oCZdCBoYXZlIHRoZSDigJxjYWNoZeKAnSBtb2RlLCBvdXIgaW1wbGVtZW50
YXRpb24gaXMgYSB3YXkgdG8gYWNoaWV2ZSBiZXR0ZXIgY2FjaGUgcGVyZm9ybWFuY2UuIFNvLCB0
aGUgcnRlX21lbWJlcg0KPndvbuKAmXQgaGVscCBoZXJlLg0KPj4+DQo+Pj4+DQo+Pj4+IHcuci50
LiB0aGUgcGF0Y2ggc2V0IHlvdSBwcm9wb3NlZCwgbXkgY29uY2VybiBpcyB0aGF0IHRoZSBuZXcg
QVBJIHdpbGwgZXhwb3NlIHRvbyBtdWNoIGludGVybmFscyB0byB0aGUgdXNlciwgZS5nLiB0aGUN
Cj5idWNrZXQvZW50cmllcyBzdHJ1Y3R1cmUgc2hvdWxkIGJlIGltcGxlbWVudGF0aW9uIGRlcGVu
ZGVudC4gRXhwb3NpbmcgaW50ZXJuYWwgc3RydWN0dXJlcyB3b3VsZCBwcmV2ZW50IGltcHJvdmlu
ZyB0aGUNCj5pbXBsZW1lbnRhdGlvbiBkb3duIHRoZSByb2FkIHVubGVzcyB3ZSBrZWVwIGNoYW5n
aW5nIEFQSSB3aGljaCBpcyBub3QgcmVjb21tZW5kZWQuDQo+Pj4+DQo+Pj4NCj4+PiBUaGUgZnVu
Y3Rpb25zIHdlIGFkZCBoZXJlIGdpdmUgYSB3YXkgZm9yIHRoZSBjYWxsZXJzIHRvIGl0ZXJhdGUg
b3ZlciB0aGUgc3BlY2lmaWMgYnVja2V0LCB3aGljaCBwb3RlbnRpYWxseSBjb250YWlucyB0aGUg
ZW50cnkuIFRoZXNlDQo+ZnVuY3Rpb25zIGNhbiBiZSBtYWRlIGdlbmVyYWwgZW5vdWdoIHRvIGFs
bG93IGNhbGxlcnMgdG8gaGV1cmlzdGljYWxseSBldmljdCBzb21lIGVudHJpZXMsIGFuZCBhZGQg
dGhlIG5ldyBvbmVzIHRvIHRoZSBoYXNoIHRhYmxlLg0KPk90aGVyd2lzZSwgdGhlcmUgaXMgbm8g
d2F5IHRvIGV2aWN0IHNvbWUgbGVzcyBpbXBvcnRhbnQgZW50cmllcy4NCj4+DQo+PiBXZSBoYXZl
IG1hbnkgb3RoZXIgaXRlcmF0b3JzIGluIERQREsgYW5kIHRoaXMgb25lIGlzIG5vIGRpZmZlcmVu
dC4gSWYgd2UgY2FuIGhpZGUgdGhlIGludGVybmFscywgdGhlbiBpdCB3b3VsZCBiZSBnb29kLiBU
aGUgY2FsbGJhY2sNCj5mdW5jdGlvbiBzaG91bGQgbm90IGV4cG9zZSBhbnkgaW50ZXJuYWxzIG9u
bHkgdGhlIHZhbHVlIGluIHRoZSBoYXNoIHRhYmxlLCB3aGljaCBJIGJlbGlldmUgaXMgZG8ganVz
dCB0aGF0LCByaWdodD8NCj4NCj4gICAgVGhlIHVzZSBjYXNlIHRoYXQgbGVkIHRvIHRoaXMgaXRl
cmF0b3IgaXMgdGhlIGZvbGxvd2luZzogYSBoYXNoDQo+dGFibGUgb2YgZmxvd3MgaXMgb3Zlcmxv
YWRlZCBkdWUgdG8gYSBEb1MgYXR0YWNrLiBUaGUgZWFzeSBvcHRpb24gaXMgdG8NCj5pZ25vcmUg
bmV3IGZsb3dzLCBidXQgdGhpcyBpcyBub3Qgb3B0aW1hbCB3aGVuIHRoZXJlJ3MgaW5mb3JtYXRp
b24NCj5wb2ludGluZyBvdXQgdGhhdCBhIGdpdmVuIG5ldyBmbG93IGlzIG1vcmUgaW1wb3J0YW50
IHRoYW4gb25lIGZsb3cgaW4NCj50aGUgYnVja2V0IGluIHdoaWNoIHRoZSBuZXcgZmxvdyBtdXN0
IGJlIGluc2VydGVkLiBTbyB0aGUgaGlnaC1sZXZlbA0KPmludGVycHJldGF0aW9uIGZvciB0aGlz
IGl0ZXJhdG9yIGlzIHRvIGZpbmQgb3V0IHdoaWNoIGFyZSB0aGUgY2FuZGlkYXRlcw0KPnN1Y2gg
dGhhdCBvbmUgbXVzdCBiZSBkcm9wcGVkIHRvIGFkZCBhIG5ldyBmbG93LiBUaGF0IGlzIHdoeSB0
aGUgcGF0Y2gNCj5hZGRzIHJ0ZV9oYXNoX2dldF9wcmltYXJ5X2J1Y2tldCgpIGFuZCBydGVfaGFz
aF9nZXRfc2Vjb25kYXJ5X2J1Y2tldCgpLg0KPldlIGRvbid0IG5lZWQgbW9yZSB0aGFuIHRoZXNl
IGNhbmRpZGF0ZXMgYmVjYXVzZSB0aGUgbWVtb3J5IGxvb2t1cHMNCj53b3VsZCBiZSBvdmVyd2hl
bG1pbmcuIEluIGZhY3QsIHdlIGhhdmUgZm91bmQgdGhhdCB0aGUgZWlnaHQgY2FuZGlkYXRlcw0K
PnRoYXQgcnRlX2hhc2hfZ2V0X3ByaW1hcnlfYnVja2V0KCkgZ2l2ZXMgaXMgYWxyZWFkeSBnb29k
IGVub3VnaC4NCj4NCj4gICAgT25jZSB3ZSBzb2x2ZWQgdGhlIHByb2JsZW0gYWJvdmUsIHdlJ3Zl
IG5vdGljZWQgdGhhdCB3aXRoIHNtYWxsDQo+YWRqdXN0bWVudHMgb2YgdGhlIGNvZGUsIGl0IHdv
dWxkIG1ha2UgaXQgZWFzeSB0byBzY2FuIGEgaGFzaCB0YWJsZSBmb3INCj5zdGFsZSBlbnRyaWVz
IG9uZSBidWNrZXQgYXQgYSB0aW1lIGluc3RlYWQgb2YgYW4gZW50cnkgYXQgYSB0aW1lICh0aGUN
Cj5yZWd1bGFyIGl0ZXJhdG9yKS4gVGhlIGlkZWEgaXMgdGhhdCBvbmNlIG9uZSByZWFkcyB0aGUg
YnVja2V0IGxvY2F0aW9uLA0KPnRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWxsIGVudHJpZXMg
aXMgY29taW5nIHRvZ2V0aGVyIGludG8gdGhlDQo+cHJvY2Vzc29yIGNhY2hlLCBzbyB3ZSBjYW4g
dGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGluZm9ybWF0aW9uIHRoYXQgaXMNCj5hbHJlYWR5IHRoZXJl
Lg0KPg0KPiAgICBXaGlsZSB0aGUgc2Vjb25kIGZlYXR1cmUgaXMgZ29vZCB0byBoYXZlLCB0aGUg
Zmlyc3Qgb25lIGlzIHRoZQ0KPmZlYXR1cmUgd2UgbXVzdCBoYXZlIGluIG91ciBzb2Z0d2FyZS4N
Cj4NCj5bIF0ncw0KPk1pY2hlbCBNYWNoYWRvDQo=