From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CBE03A0093; Mon, 7 Nov 2022 09:56:51 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 661BD40156; Mon, 7 Nov 2022 09:56:51 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 6D89440151 for ; Mon, 7 Nov 2022 09:56:49 +0100 (CET) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v2 2/3] mempool: include non-DPDK threads in statistics Date: Mon, 7 Nov 2022 09:56:46 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D8748F@smartserver.smartshare.dk> In-Reply-To: <2a9c1a31-ef82-3542-d5a1-cf73dea73140@lysator.liu.se> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v2 2/3] mempool: include non-DPDK threads in statistics Thread-Index: AdjyelWrOyih7diwTR+RLXwq4aqzwQABbyPQ References: <20221030115445.2115-1-mb@smartsharesystems.com> <20221031112634.18329-1-mb@smartsharesystems.com> <20221031112634.18329-2-mb@smartsharesystems.com> <6c37816f-4136-772a-1ff2-501eb1d3a244@lysator.liu.se> <98CBD80474FA8B44BF855DF32C47DC35D87473@smartserver.smartshare.dk> <22a82237-3e7c-70bc-c98c-b9fd4a088513@lysator.liu.se> <98CBD80474FA8B44BF855DF32C47DC35D8747D@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87483@smartserver.smartshare.dk> <2a9c1a31-ef82-3542-d5a1-cf73dea73140@lysator.liu.se> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , , , , , Cc: , X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBGcm9tOiBNYXR0aWFzIFLDtm5uYmxvbSBbbWFpbHRvOmhvZm9yc0BseXNhdG9yLmxpdS5zZV0N Cj4gU2VudDogTW9uZGF5LCA3IE5vdmVtYmVyIDIwMjIgMDguMjcNCj4gDQo+IE9uIDIwMjItMTEt MDQgMTE6MDEsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+PiBGcm9tOiBNYXR0aWFzIFLDtm5u YmxvbSBbbWFpbHRvOmhvZm9yc0BseXNhdG9yLmxpdS5zZV0NCj4gPj4gU2VudDogRnJpZGF5LCA0 IE5vdmVtYmVyIDIwMjIgMDkuNTkNCj4gPj4NCj4gPj4gT24gMjAyMi0xMS0wMyAwOTo1OSwgTW9y dGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+Pj4gRnJvbTogTWF0dGlhcyBSw7ZubmJsb20gW21haWx0 bzpob2ZvcnNAbHlzYXRvci5saXUuc2VdDQo+ID4+Pj4gU2VudDogV2VkbmVzZGF5LCAyIE5vdmVt YmVyIDIwMjIgMTguNTMNCj4gPj4+Pg0KPiA+Pj4+IE9uIDIwMjItMTEtMDIgMTA6MDksIE1vcnRl biBCcsO4cnVwIHdyb3RlOg0KPiA+Pj4+Pj4gRnJvbTogTWF0dGlhcyBSw7ZubmJsb20gW21haWx0 bzpob2ZvcnNAbHlzYXRvci5saXUuc2VdDQo+ID4+Pj4+PiBTZW50OiBXZWRuZXNkYXksIDIgTm92 ZW1iZXIgMjAyMiAwOC41Mw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE9uIDIwMjItMTAtMzEgMTI6MjYs IE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+Pj4+Pj4+IE9mZnNldCB0aGUgc3RhdHMgYXJyYXkg aW5kZXggYnkgb25lLCBhbmQgY291bnQgbm9uLURQREsgdGhyZWFkcw0KPiA+PiBhdA0KPiA+Pj4+ Pj4gaW5kZXgNCj4gPj4+Pj4+PiB6ZXJvLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVGhpcyBwYXRj aCBwcm92aWRlcyB0d28gYmVuZWZpdHM6DQo+ID4+Pj4+Pj4gKiBOb24tRFBESyB0aHJlYWRzIGFy ZSBhbHNvIGluY2x1ZGVkIGluIHRoZSBzdGF0aXN0aWNzLg0KPiA+Pj4+Pj4+ICogQSBjb25kaXRp b25hbCBpbiB0aGUgZmFzdCBwYXRoIGlzIHJlbW92ZWQuIFN0YXRpYyBicmFuY2gNCj4gPj4+PiBw cmVkaWN0aW9uDQo+ID4+Pj4+PiB3YXMNCj4gPj4+Pj4+PiAgICAgICBjb3JyZWN0LCBzbyB0aGUg cGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgaXMgbmVnbGlnaWJsZS4NCj4gPj4+Pj4+Pg0KPiA+Pj4+ Pj4+IHYyOg0KPiA+Pj4+Pj4+ICogTmV3LiBObyB2MSBvZiB0aGlzIHBhdGNoIGluIHRoZSBzZXJp ZXMuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBTdWdnZXN0ZWQtYnk6IFN0ZXBoZW4gSGVtbWluZ2Vy IDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz4NCj4gPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBN b3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiA+Pj4+Pj4+IC0tLQ0K PiA+Pj4+Pj4+ICAgICAgbGliL21lbXBvb2wvcnRlX21lbXBvb2wuYyB8ICAyICstDQo+ID4+Pj4+ Pj4gICAgICBsaWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oIHwgMTIgKysrKysrLS0tLS0tDQo+ID4+ Pj4+Pj4gICAgICAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMo LSkNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvbWVtcG9vbC9ydGVfbWVt cG9vbC5jDQo+ID4+IGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuYw0KPiA+Pj4+Pj4+IGluZGV4 IDYyZDFjZTc2NGUuLmU2MjA4MTI1ZTAgMTAwNjQ0DQo+ID4+Pj4+Pj4gLS0tIGEvbGliL21lbXBv b2wvcnRlX21lbXBvb2wuYw0KPiA+Pj4+Pj4+ICsrKyBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29s LmMNCj4gPj4+Pj4+PiBAQCAtMTI3Miw3ICsxMjcyLDcgQEAgcnRlX21lbXBvb2xfZHVtcChGSUxF ICpmLCBzdHJ1Y3QNCj4gPj4gcnRlX21lbXBvb2wNCj4gPj4+Pj4+ICptcCkNCj4gPj4+Pj4+PiAg ICAgICNpZmRlZiBSVEVfTElCUlRFX01FTVBPT0xfU1RBVFMNCj4gPj4+Pj4+PiAgICAgIAlydGVf bWVtcG9vbF9vcHNfZ2V0X2luZm8obXAsICZpbmZvKTsNCj4gPj4+Pj4+PiAgICAgIAltZW1zZXQo JnN1bSwgMCwgc2l6ZW9mKHN1bSkpOw0KPiA+Pj4+Pj4+IC0JZm9yIChsY29yZV9pZCA9IDA7IGxj b3JlX2lkIDwgUlRFX01BWF9MQ09SRTsgbGNvcmVfaWQrKykgew0KPiA+Pj4+Pj4+ICsJZm9yIChs Y29yZV9pZCA9IDA7IGxjb3JlX2lkIDwgUlRFX01BWF9MQ09SRSArIDE7DQo+ID4+IGxjb3JlX2lk KyspIHsNCj4gPj4+Pj4+PiAgICAgIAkJc3VtLnB1dF9idWxrICs9IG1wLT5zdGF0c1tsY29yZV9p ZF0ucHV0X2J1bGs7DQo+ID4+Pj4+Pj4gICAgICAJCXN1bS5wdXRfb2JqcyArPSBtcC0+c3RhdHNb bGNvcmVfaWRdLnB1dF9vYmpzOw0KPiA+Pj4+Pj4+ICAgICAgCQlzdW0ucHV0X2NvbW1vbl9wb29s X2J1bGsgKz0gbXAtDQo+ID4+Pj4+Pj4gc3RhdHNbbGNvcmVfaWRdLnB1dF9jb21tb25fcG9vbF9i dWxrOw0KPiA+Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oDQo+ ID4+IGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaA0KPiA+Pj4+Pj4+IGluZGV4IDljNGJmNTU0 OWYuLjE2ZTdlNjJlM2MgMTAwNjQ0DQo+ID4+Pj4+Pj4gLS0tIGEvbGliL21lbXBvb2wvcnRlX21l bXBvb2wuaA0KPiA+Pj4+Pj4+ICsrKyBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gPj4+ Pj4+PiBAQCAtMjM4LDggKzIzOCwxMSBAQCBzdHJ1Y3QgcnRlX21lbXBvb2wgew0KPiA+Pj4+Pj4+ ICAgICAgCXN0cnVjdCBydGVfbWVtcG9vbF9tZW1oZHJfbGlzdCBtZW1fbGlzdDsgLyoqPCBMaXN0 IG9mDQo+ID4+Pj4gbWVtb3J5DQo+ID4+Pj4+PiBjaHVua3MgKi8NCj4gPj4+Pj4+Pg0KPiA+Pj4+ Pj4+ICAgICAgI2lmZGVmIFJURV9MSUJSVEVfTUVNUE9PTF9TVEFUUw0KPiA+Pj4+Pj4+IC0JLyoq IFBlci1sY29yZSBzdGF0aXN0aWNzLiAqLw0KPiA+Pj4+Pj4+IC0Jc3RydWN0IHJ0ZV9tZW1wb29s X2RlYnVnX3N0YXRzIHN0YXRzW1JURV9NQVhfTENPUkVdOw0KPiA+Pj4+Pj4+ICsJLyoqIFBlci1s Y29yZSBzdGF0aXN0aWNzLg0KPiA+Pj4+Pj4+ICsJICoNCj4gPj4+Pj4+PiArCSAqIE9mZnNldCBi eSBvbmUsIHRvIGluY2x1ZGUgbm9uLURQREsgdGhyZWFkcy4NCj4gPj4+Pj4+PiArCSAqLw0KPiA+ Pj4+Pj4+ICsJc3RydWN0IHJ0ZV9tZW1wb29sX2RlYnVnX3N0YXRzIHN0YXRzW1JURV9NQVhfTENP UkUgKyAxXTsNCj4gPj4+Pj4+PiAgICAgICNlbmRpZg0KPiA+Pj4+Pj4+ICAgICAgfSAgX19ydGVf Y2FjaGVfYWxpZ25lZDsNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEBAIC0zMDQsMTAgKzMwNyw3IEBA IHN0cnVjdCBydGVfbWVtcG9vbCB7DQo+ID4+Pj4+Pj4gICAgICAgKi8NCj4gPj4+Pj4+PiAgICAg ICNpZmRlZiBSVEVfTElCUlRFX01FTVBPT0xfU1RBVFMNCj4gPj4+Pj4+PiAgICAgICNkZWZpbmUg UlRFX01FTVBPT0xfU1RBVF9BREQobXAsIG5hbWUsIG4pIGRvIHsNCj4gPj4+PiBcDQo+ID4+Pj4+ Pj4gLQkJdW5zaWduZWQgX19sY29yZV9pZCA9IHJ0ZV9sY29yZV9pZCgpOyAgICAgICAgICAgXA0K PiA+Pj4+Pj4+IC0JCWlmIChfX2xjb3JlX2lkIDwgUlRFX01BWF9MQ09SRSkgeyAgICAgICAgICAg ICAgIFwNCj4gPj4+Pj4+PiAtCQkJbXAtPnN0YXRzW19fbGNvcmVfaWRdLm5hbWUgKz0gbjsgICAg ICAgIFwNCj4gPj4+Pj4+PiAtCQl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ID4+Pj4+Pj4gKwkJKG1wKS0+c3RhdHNbcnRlX2xjb3JlX2lkKCkgKyAx XS5uYW1lICs9IG47ICAgICAgXA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFRoaXMgcmVsaWVzIG9uIExD T1JFX0lEX0FOWSBiZWluZyBVSU5UMzJfTUFYLCBhbmQgYSB3cmFwIHRvIDAsDQo+IGZvcg0KPiA+ Pj4+IGFuDQo+ID4+Pj4+PiB1bnJlZ2lzdGVyZWQgbm9uLUVBTCB0aHJlYWQ/IE1pZ2h0IGJlIHdv cnRoIGEgY29tbWVudCwgb3IgYmV0dGVyDQo+IGENCj4gPj4+Pj4+IHJld3JpdGUgd2l0aCBhbiBl eHBsaWNpdCBMQ09SRV9JRF9BTlkgY29tcGFyaXNvbi4NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhlIHB1 cnBvc2Ugb2YgdGhpcyBwYXRjaCBpcyB0byBhdm9pZCB0aGUgY29tcGFyaXNvbiBoZXJlLg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBZZXMsIGl0IHJlbGllcyBvbiB0aGUgd3JhcCB0byB6ZXJvLCBhbmQgdGhl c2UgY29uZGl0aW9uczoNCj4gPj4+Pj4gMS4gTENPUkVfSURfQU5ZIGJlaW5nIFVJTlQzMl9NQVgs IGFuZA0KPiA+Pj4+PiAyLiB0aGUgcmV0dXJuIHR5cGUgb2YgcnRlX2xjb3JlX2lkKCkgYmVpbmcg dW5zaWduZWQgaW50LCBhbmQNCj4gPj4+Pj4gMy4gdW5zaWduZWQgaW50IGJlaW5nIHVpbnQzMl90 Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBXaGVuIEkgd3JvdGUgdGhpcywgSSBjb25zaWRlcmVkIGl0IHNh ZmUgdG8gYXNzdW1lIHRoYXQNCj4gTENPUkVfSURfQU5ZDQo+ID4+Pj4gd2lsbCByZW1haW4gdGhl IHVuc2lnbmVkIGVxdWl2YWxlbnQgb2YgLTEgdXNpbmcgdGhlIHJldHVybiB0eXBlIG9mDQo+ID4+ Pj4gcnRlX2xjb3JlX2lkKCkuIEluIG90aGVyIHdvcmRzOiBJZiB0aGUgcmV0dXJuIHR5cGUgb2YN Cj4gcnRlX2xjb3JlX2lkKCkNCj4gPj4+PiBzaG91bGQgY2hhbmdlIGZyb20gMzIgdG8gNjQgYml0 LCBMQ09SRV9JRF9BTlkgd291bGQgYmUgdXBkYXRlZA0KPiA+Pj4+IGFjY29yZGluZ2x5IHRvIFVJ TlQ2NF9NQVguDQo+ID4+Pj4+DQo+ID4+Pj4+IEJlY2F1c2Ugb2YgdGhpcyBhc3N1bXB0aW9uLCBJ IGRpZG4ndCB1c2UgWyhydGVfbGNvcmVfaWQoKSArIDEpICYNCj4gPj4+PiBVSU5UMzJfTUFYXSwg YnV0IGp1c3QgW3J0ZV9sY29yZV9pZCgpICsgMV0uDQo+ID4+Pj4+DQo+ID4+Pj4+IEkgc3RydWdn bGVkIHdyaXRpbmcgYW4gYXBwcm9wcmlhdGUgY29tbWVudCB3aXRob3V0IG1ha2luZyBpdA0KPiA+ Pj4+IHVuYWNjZXB0YWJseSBsb25nLCBidXQgZXZlbnR1YWxseSBnYXZlIHVwLCBhbmQgc2V0dGxl ZCBmb3IgdGhlDQo+IG9uZS0NCj4gPj4gbGluZQ0KPiA+Pj4+IGNvbW1lbnQgaW4gdGhlIHN0cnVj dHVyZSBvbmx5Lg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFlvdSBhbnl3YXlzIG5lZWQg YSBjb25kaXRpb25hbC4gQW4gYXRvbWljIGFkZCBtdXN0IGJlIHVzZWQgaW4NCj4gdGhlDQo+ID4+ Pj4+PiB1bnJlZ2lzdGVyZWQgRUFMIHRocmVhZCBjYXNlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBHb29k IHBvaW50OiBUaGUgIis9IG4iIG11c3QgYmUgYXRvbWljIGZvciBub24taXNvbGF0ZWQgdGhyZWFk cy4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IElmIHRoZSB2YXJpb3VzIHVucmVnaXN0ZXJlZCBu b24tRUFMIHRocmVhZHMgYXJlIHJ1biBvbiBpc29sYXRlZA0KPiA+PiBjb3Jlcw0KPiA+Pj4+IG9y IG5vdCBkb2VzIG5vdCBtYXR0ZXIuDQo+ID4+Pg0KPiA+Pj4gQWdyZWU6IFRoZXkgYWxsIHNoYXJl IHRoZSBzYW1lIGluZGV4LCBhbmQgdGh1cyBtYXkgcmFjZSwgcmVnYXJkbGVzcw0KPiA+PiB3aGlj aCBjb3JlcyB0aGV5IGFyZSB1c2luZy4NCj4gPj4+DQo+ID4+PiBSZXBocmFzaW5nOiBUaGUgIis9 IG4iIG11c3QgYmUgYXRvbWljIGZvciB0aGUgdW5yZWdpc3RlcmVkIG5vbi1FQUwNCj4gPj4gdGhy ZWFkcy4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+Pj4gSSBqdXN0IHRvb2sgYSBsb29rIGF0IGhvdyBz b2Z0d2FyZSBtYWludGFpbmVkIHN0YXRzIGFyZSBoYW5kbGVkDQo+ID4+Pj4gZWxzZXdoZXJlLCBh bmQgdGhlIGZpcnN0IHRoaW5nIEkgZm91bmQsIGlzIHRoZSBJT0FUIERNQSBkcml2ZXIsDQo+ID4+ IHdoaWNoDQo+ID4+Pj4gYWxzbyBzZWVtcyB0byBiZSB1c2luZyBub24tYXRvbWljIGluY3JlbWVu dCBbMV0gcmVnYXJkbGVzcyBpZiB1c2VkDQo+ID4+IGJ5IGENCj4gPj4+PiBEUERLIHRocmVhZCBv ciBub3QuDQo+ID4+Pj4+DQo+ID4+Pj4+IFsxXTogaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20v ZHBkay92MjIuMTEtDQo+ID4+Pj4gcmMyL3NvdXJjZS9kcml2ZXJzL2RtYS9pb2F0L2lvYXRfZG1h ZGV2LmMjTDIyOA0KPiA+Pj4+Pg0KPiA+Pj4+PiBIb3dldmVyLCBkb2luZyBpdCB3cm9uZyBlbHNl d2hlcmUgZG9lc24ndCBtYWtlIGl0IGNvcnJlY3QgZG9pbmcNCj4gaXQNCj4gPj4+PiB3cm9uZyBo ZXJlIHRvby4gOi0pDQo+ID4+Pj4+DQo+ID4+Pj4+IEF0b21pYyBpbmNyZW1lbnRzIGFyZSBjb3N0 bHksIHNvIEkgd291bGQgcmF0aGVyIGZvbGxvdyB5b3VyDQo+ID4+Pj4gc3VnZ2VzdGlvbiBhbmQg cmVpbnRyb2R1Y2UgdGhlIGNvbXBhcmlzb24uIEhvdyBhYm91dDoNCj4gPj4+Pj4NCj4gPj4+Pj4g I2RlZmluZSBSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwgbmFtZSwgbikgZG8geyBcDQo+ID4+Pj4+ ICAgICAgICB1bnNpZ25lZCBpbnQgX19sY29yZV9pZCA9IHJ0ZV9sY29yZV9pZCgpOyBcDQo+ID4+ Pj4+ICAgICAgICBpZiAobGlrZWx5KF9fbGNvcmVfaWQgPCBSVEVfTUFYX0xDT1JFKSkgeyBcDQo+ ID4+Pj4+ICAgICAgICAgICAgKG1wKS0+c3RhdHNbX19sY29yZV9pZF0ubmFtZSArPSBuOyBcDQo+ ID4+Pj4+ICAgICAgICB9IGVsc2Ugew0KPiA+Pj4+PiAgICAgICAgICAgIHJ0ZV9hdG9taWM2NF9h ZGQoIFwNCj4gPj4+Pj4gICAgICAgICAgICAgICAgICAgIChydGVfYXRvbWljNjRfdCopJigobXAp LQ0KPiA+Pj4gc3RhdHNbUlRFX01BWF9MQ09SRV0ubmFtZSksDQo+ID4+Pj4gbik7XA0KPiA+Pj4+ PiAgICAgICAgfSBcDQo+ID4+Pj4+IH0NCj4gPj4+PiBZb3UgYXJlIHN1cHBvc2VkIHRvIHVzZSBH Q0MgQzExIGludHJpbnNpY3MgKGUuZy4sDQo+ID4+Pj4gX19hdG9taWNfZmV0Y2hfYWRkKCkpLg0K PiA+Pj4NCj4gPj4+IFVwcy4gSSBmb3Jnb3QhDQo+ID4+Pg0KPiA+Pj4gVGhpcyBzaG91bGQgYmUg ZW1waGFzaXplZCBldmVyeXdoZXJlIGluIHRoZSBydGVfYXRvbWljIGxpYnJhcnksIHRvDQo+ID4+ IHByZXZlbnQgc3VjaCBtaXN0YWtlcy4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiBJbiBhZGRpdGlv bjogdGVjaG5pY2FsbHksIHlvdSBtdXN0IHVzZSBhbiBhdG9taWMgc3RvcmUgZm9yIHRoZSBFQUwN Cj4gPj4+PiB0aHJlYWQgY2FzZSAoYW5kIGFuIGF0b21pYyBsb2FkIG9uIHRoZSByZWFkZXIgc2lk ZSksIGFsdGhvdWdoDQo+IHRoZXJlDQo+ID4+IGFyZQ0KPiA+Pj4+IHRvbnMgb2YgZXhhbXBsZXMg aW4gRFBESyB3aGVyZSB0ZWFyaW5nIGlzIGlnbm9yZWQuIChUaGUgZ2VuZXJhdGVkDQo+ID4+IGNv ZGUNCj4gPj4+PiB3aWxsIGxpa2VseSBsb29rIHRoZSBzYW1lLikNCj4gPj4+DQo+ID4+PiBUaGUg Y291bnRlcnMgYXJlIDY0IGJpdCBhbGlnbmVkLCBidXQgdGVhcmluZyBjb3VsZCBoYXBwZW4gb24g MzIgYml0DQo+ID4+IGFyY2hpdGVjdHVyZXMuDQo+ID4+Pg0KPiA+Pg0KPiA+PiBUaGUgY29tcGls ZXIgaXMgZnJlZSB0byBkbyBpdCBvbiBhbnkgYXJjaGl0ZWN0dXJlLCBidXQgSSdtIG5vdCBzdXJl DQo+IGlmDQo+ID4+IGl0IGhhcHBlbnMgbXVjaCBpbiBwcmFjdGljZS4NCj4gPj4NCj4gPj4+IE15 IGluaXRpYWwgcmVhY3Rpb24gdG8geW91ciBjb21tZW50IHdhcyB0byBkbyBpdCBjb3JyZWN0bHkg b24gdGhlDQo+IEVBTA0KPiA+PiB0aHJlYWRzIHRvbywgdG8gYXZvaWQgdGVhcmluZyB0aGVyZSB0 b28uIEhvd2V2ZXIsIHRoZXJlIG1pZ2h0IGJlIGENCj4gPj4gcGVyZm9ybWFuY2UgY29zdCBmb3Ig MzIgYml0IGFyY2hpdGVjdHVyZXMsIHNvIEkgd2lsbCBjb25zaWRlciB0aGF0DQo+ID4+IHRoZXNl IGFyZSBvbmx5IGRlYnVnIGNvdW50ZXJzLCBhbmQgYWNjZXB0IHRoZSByaXNrIG9mIHRlYXJpbmcu DQo+ID4+Pg0KPiA+Pg0KPiA+PiBXaGF0IHdvdWxkIHRoYXQgY29zdCBjb25zaXN0IG9mPw0KPiA+ DQo+ID4gSSBoYXZlIHRlc3RlZCBpdCB0aGlzIG1vcm5pbmcgb24gR29kYm9sdDoNCj4gaHR0cHM6 Ly9nb2Rib2x0Lm9yZy96L2Z6N2YzY3Y4Yg0KPiA+DQo+ID4gY3RyICs9IG4gYmVjb21lczoNCj4g Pg0KPiA+ICAgICAgICAgIGFkZCAgICAgUVdPUkQgUFRSIGN0cltyaXBdLCByZGkNCj4gPg0KPiA+ IFdoZXJlYXMgX19hdG9taWNfZmV0Y2hfYWRkKCZjdHIsIG4sIF9fQVRPTUlDX1JFTEFYRUQpIGJl Y29tZXM6DQo+ID4NCj4gPiAgICAgICAgICBsb2NrIGFkZCAgICAgICAgUVdPUkQgUFRSIGN0clty aXBdLCByZGkNCj4gPg0KPiANCj4gU2luY2UgdGhlcmUgaXMgYSBzaW5nbGUgd3JpdGVyL3Byb2R1 Y2VyLCBvbmx5IHRoZSBzdG9yZSBuZWVkIGJlIGF0b21pYywNCj4gbm90IHRoZSBjb21wbGV0ZSBs b2FkK2FkZCtzdG9yZSBzZXF1ZW5jZS4NCj4gDQo+IF9fYXRvbWljX3N0b3JlX24oJmN0ciwgY3Ry ICsgMSwgX19BVE9NSUNfUkVMQVhFRCk7DQo+IA0KPiBTdWNoIGEgY29uc3RydWN0IHdpbGwgbm90 IHJlc3VsdCBpbiBhIGxvY2sgYWRkIGluc3RydWN0aW9uLg0KDQpJIHdhcyB0cnlpbmcgdG8gZ2V0 IHJpZCBvZiB0aGUgY29uZGl0aW9uYWwgYnkgaGFuZGxpbmcgYm90aCBraW5kcyBvZiB0aHJlYWRz IHRoZSBzYW1lIHdheS4gSG93ZXZlciwgd2l0aG91dCB0aGUgY29uZGl0aW9uYWwsIHRoZSB1bnJl Z2lzdGVyZWQgbm9uLUVBTCB0aHJlYWRzIG5lZWQgdG8gdXNlIF9fYXRvbWljX2ZldGNoX2FkZCB3 b3VsZCBzcGlsbCBvdmVyIHRvIHRoZSBFQUwgdGhyZWFkcy4gU28gSSBjb25jbHVkZWQgdGhhdCB0 aGUgY29uZGl0aW9uYWwgc2hvdWxkIHJlbWFpbi4NCg0KPiANCj4gSSd2ZSBoYXBwZW5lZCB0byBm aW5pc2hlZCBhIGRyYWZ0IHZlcnNpb24gb2YgYSBjaGFwdGVyIG9uIHRoaXMgdG9waWMsDQo+IGlu DQo+IHRoZSBkYXRhIHBsYW5lIGJvb2sgSSdtIHdyaXRpbmc6DQo+IGh0dHBzOi8vZXJpY3Nzb24u Z2l0aHViLmlvL2RhdGFwbGFuZWJvb2svc3RhdHMvc3RhdHMuaHRtbCNwZXItY29yZS0NCj4gY291 bnRlcnMNCg0KVGhhbmtzIGZvciB0aGUgbGluay4gSSBqdXN0IHRvb2sgYSBsb29rIGF0IGl0LCBh bmQgaXQgbG9va3MgZ3JlYXQhDQoNCj4gDQo+IEkgd2lsbCBhZGQgYSBzZWN0aW9uIHdpdGggdGhp cyAiYWRkIGFuIGV4dHJhIGluc3RhbmNlIHRvIGRlYWwgd2l0aA0KPiB1bnJlZ2lzdGVyZWQgbm9u LUVBTCB0aHJlYWRzIiBhcHByb2FjaCB0YWtlbiBpbiB5b3VyIHBhdGNoLg0KPiANCj4gPj4NCj4g Pj4gSW4gdGhlb3J5IEMxMSBhdG9taWNzIGNvdWxkIGJlIGltcGxlbWVudGVkICJpbiBzb2Z0d2Fy ZSIgKGkuZS4sDQo+IHdpdGhvdXQNCj4gPj4gdGhlIHByb3BlciBJU0EtbGV2ZWwgZ3VhcmFudGVl cywgd2l0aCBsb2NrcyksIGJ1dCBkb2VzIGFueSBvZiB0aGUNCj4gPj4gRFBESy1zdXBwb3J0ZWQg Y29tcGlsZXIvMzItYml0IElTQXMgYWN0dWFsbHkgZG8gc28/DQo+ID4NCj4gPiBBZGRpbmcgLW0z MiB0byB0aGUgY29tcGlsZXIgb3B0aW9ucywgY3RyICs9IG4gYmVjb21lczoNCj4gPg0KPiA+ICAg ICAgICAgIHhvciAgICAgZWR4LCBlZHgNCj4gPiAgICAgICAgICBtb3YgICAgIGVheCwgRFdPUkQg UFRSIFtlc3ArNF0NCj4gPiAgICAgICAgICBhZGQgICAgIERXT1JEIFBUUiBjdHIsIGVheA0KPiA+ ICAgICAgICAgIGFkYyAgICAgRFdPUkQgUFRSIGN0cis0LCBlZHgNCj4gPg0KPiA+IEFuZCBfX2F0 b21pY19mZXRjaF9hZGQoJmN0ciwgbiwgX19BVE9NSUNfUkVMQVhFRCkgYmVjb21lczoNCj4gPg0K PiA+ICAgICAgICAgIHB1c2ggICAgZWRpDQo+ID4gICAgICAgICAgeG9yICAgICBlZGksIGVkaQ0K PiA+ICAgICAgICAgIHB1c2ggICAgZXNpDQo+ID4gICAgICAgICAgcHVzaCAgICBlYngNCj4gPiAg ICAgICAgICBzdWIgICAgIGVzcCwgOA0KPiA+ICAgICAgICAgIG1vdiAgICAgZXNpLCBEV09SRCBQ VFIgW2VzcCsyNF0NCj4gPiAgICAgICAgICBtb3YgICAgIGVheCwgRFdPUkQgUFRSIGN0cg0KPiA+ ICAgICAgICAgIG1vdiAgICAgZWR4LCBEV09SRCBQVFIgY3RyKzQNCj4gPiAuTDQ6DQo+ID4gICAg ICAgICAgbW92ICAgICBlY3gsIGVheA0KPiA+ICAgICAgICAgIG1vdiAgICAgZWJ4LCBlZHgNCj4g PiAgICAgICAgICBhZGQgICAgIGVjeCwgZXNpDQo+ID4gICAgICAgICAgYWRjICAgICBlYngsIGVk aQ0KPiA+ICAgICAgICAgIG1vdiAgICAgRFdPUkQgUFRSIFtlc3BdLCBlY3gNCj4gPiAgICAgICAg ICBtb3YgICAgIERXT1JEIFBUUiBbZXNwKzRdLCBlYngNCj4gPiAgICAgICAgICBtb3YgICAgIGVi eCwgRFdPUkQgUFRSIFtlc3BdDQo+ID4gICAgICAgICAgbW92ICAgICBlY3gsIERXT1JEIFBUUiBb ZXNwKzRdDQo+ID4gICAgICAgICAgbG9jayBjbXB4Y2hnOGIgIFFXT1JEIFBUUiBjdHINCj4gPiAg ICAgICAgICBqbmUgICAgIC5MNA0KPiA+ICAgICAgICAgIGFkZCAgICAgZXNwLCA4DQo+ID4gICAg ICAgICAgcG9wICAgICBlYngNCj4gPiAgICAgICAgICBwb3AgICAgIGVzaQ0KPiA+ICAgICAgICAg IHBvcCAgICAgZWRpDQo+ID4NCj4gPj4NCj4gPj4gSXQncyBhbHNvIG5vdCBvYnZpb3VzIHRoYXQg aWYgdGhlcmUsIGZvciBhIGNlcnRhaW4NCj4gPj4gY29tcGlsZXIvSVNBLWNvbWJpbmF0aW9uLCBp cyBhIHBlcmZvcm1hbmNlIGltcGFjdCB0byBwYXkgZm9yDQo+ID4+IGNvcnJlY3RuZXNzLCBjb3Jy ZWN0bmVzcyB3b3VsZCBoYXZlIHRvIGdpdmUgd2F5Lg0KPiA+DQo+ID4gSW4gdGhpcyBwYXJ0aWN1 bGFyIGNhc2UsIGFuZCBiZWNhdXNlIHRoZXkgYXJlIG9ubHkgZGVidWcgY291bnRlcnMsIEkNCj4g d2lsbCBhcmd1ZSB0aGF0IERQREsgZ2VuZXJhbGx5IHVzZXMgbm9uLWF0b21pYyBhY2Nlc3MgdG8g NjQgYml0DQo+IHN0YXRpc3RpY3MgY291bnRlcnMuIFRoaXMgd2FzIGFsc28gdGhlIGNhc2UgZm9y IHRoZXNlIGNvdW50ZXJzIGJlZm9yZQ0KPiB0aGlzIHBhdGNoLg0KPiA+DQo+ID4gSSBhbSBwbGFu bmluZyB0byBmaW5pc2ggdjMgb2YgdGhpcyBwYXRjaCBzZXJpZXMgdG9kYXksIHNvIEkgaG9wZSB5 b3UNCj4gY2FuIGFncmVlIHRvIGNsb3NlIHRoZSBhdG9taWNpdHkgZGlzY3Vzc2lvbiB3aXRoIGFu b3RoZXIgYXJndW1lbnQ6DQo+IE1ha2luZyBzdGF0aXN0aWNzIGNvdW50ZXJzIGF0b21pYyBzaG91 bGQgYmUgZWxldmF0ZWQgdG8gYSBnZW5lcmFsIHBhdGNoDQo+IGFjcm9zcyBEUERLLCBhbmQgbm90 IHBhcnQgb2YgdGhpcyBtZW1wb29sIHBhdGNoIHNlcmllcy4NCj4gPg0KPiANCj4gQXMgSSB0aGlu ayBJIGluZGljYXRlZCwgSSB0aGluayB0aGlzIGlzIGEgbWlub3IgaXNzdWUuIEknbSBPSyB3aXRo IHRoZQ0KPiBjb2RlIGFzLXdyaXR0ZW4uDQoNClRoYW5rcy4gV2UgY2FuIGFsd2F5cyBtaWNyby1v cHRpbWl6ZSB0aGUgdW5yZWdpc3RlcmVkIG5vbi1FQUwgdGhyZWFkIGNvdW50ZXJzIGxhdGVyLiA6 LSkNCg0KPiANCj4gPiBUaGUgdjMgcGF0Y2ggKHdoaWNoIEkgYW0gd29ya2luZyBvbiByaWdodCBu b3cpIGNvdW50cyBhdG9taWNhbGx5IGZvcg0KPiB0aGUgdW5yZWdpc3RlcmVkIG5vbi1FQUwgdGhy ZWFkczoNCj4gPg0KPiA+ICNkZWZpbmUgUlRFX01FTVBPT0xfU1RBVF9BREQobXAsIG5hbWUsIG4p IGRvIHsNCj4gXA0KPiA+IAkJdW5zaWduZWQgaW50IF9fbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQo KTsNCj4gXA0KPiA+IAkJaWYgKGxpa2VseShfX2xjb3JlX2lkIDwgUlRFX01BWF9MQ09SRSkpDQo+ IFwNCj4gPiAJCQkobXApLT5zdGF0c1tfX2xjb3JlX2lkXS5uYW1lICs9IG47DQo+IFwNCj4gPiAJ CWVsc2UNCj4gXA0KPiA+IAkJCV9fYXRvbWljX2ZldGNoX2FkZCgmKChtcCktDQo+ID5zdGF0c1tS VEVfTUFYX0xDT1JFXS5uYW1lKSwgIFwNCj4gPiAJCQkJCSAgIG4sIF9fQVRPTUlDX1JFTEFYRUQp OyAgICAgICAgICAgICAgICBcDQo+ID4gCX0gd2hpbGUgKDApDQo+ID4NCj4gPiBQUzogRXhjZWxs ZW50IGRpc2N1c3Npb24gLSB0aGFuayB5b3UgZm9yIGdldHRpbmcgaW52b2x2ZWQsIE1hdHRpYXMu DQo+ID4NCg0K