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 AE4F241C87; Mon, 13 Feb 2023 10:30:38 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 98FFD40A81; Mon, 13 Feb 2023 10:30:38 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 1A49D400D6 for ; Mon, 13 Feb 2023 10:30:37 +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 v8] mempool cache: add zero-copy get and put functions Date: Mon, 13 Feb 2023 10:30:34 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D87733@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v8] mempool cache: add zero-copy get and put functions Thread-Index: AQHZPJcD9sYo5/g2OkuXWuiIQOI8vK7LuNhggAAtOjCAADRhkIAAdqvA References: <98CBD80474FA8B44BF855DF32C47DC35D87488@smartserver.smartshare.dk> <20230209145833.129986-1-mb@smartsharesystems.com> <98CBD80474FA8B44BF855DF32C47DC35D87732@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Honnappa Nagarahalli" , , , "Kamalakshitha Aligeri" , , , Cc: "nd" , , "nd" 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 PiBGcm9tOiBIb25uYXBwYSBOYWdhcmFoYWxsaSBbbWFpbHRvOkhvbm5hcHBhLk5hZ2FyYWhhbGxp QGFybS5jb21dDQo+IFNlbnQ6IE1vbmRheSwgMTMgRmVicnVhcnkgMjAyMyAwNS4zMA0KPiANCj4g PHNuaXA+DQo+IA0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBAaW50ZXJuYWwgdXNlZCBieSBy dGVfbWVtcG9vbF9jYWNoZV96Y19wdXRfYnVsaygpIGFuZA0KPiA+ID4gPiBydGVfbWVtcG9vbF9k b19nZW5lcmljX3B1dCgpLg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIFplcm8tY29weSBwdXQg b2JqZWN0cyBpbiBhIG1lbXBvb2wgY2FjaGUgYmFja2VkIGJ5IHRoZQ0KPiBzcGVjaWZpZWQNCj4g PiA+ID4gbWVtcG9vbC4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBAcGFyYW0gY2FjaGUNCj4g PiA+ID4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sIGNhY2hlLg0KPiA+ID4gPiArICog QHBhcmFtIG1wDQo+ID4gPiA+ICsgKiAgIEEgcG9pbnRlciB0byB0aGUgbWVtcG9vbC4NCj4gPiA+ ID4gKyAqIEBwYXJhbSBuDQo+ID4gPiA+ICsgKiAgIFRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0byBi ZSBwdXQgaW4gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ID4gPiA+ICsgKiBAcmV0dXJuDQo+ID4gPiA+ ICsgKiAgIFRoZSBwb2ludGVyIHRvIHdoZXJlIHRvIHB1dCB0aGUgb2JqZWN0cyBpbiB0aGUgbWVt cG9vbA0KPiBjYWNoZS4NCj4gPiA+ID4gKyAqICAgTlVMTCBpZiB0aGUgcmVxdWVzdCBpdHNlbGYg aXMgdG9vIGJpZyBmb3IgdGhlIGNhY2hlLCBpLmUuDQo+ID4gPiA+ICsgKiAgIGV4Y2VlZHMgdGhl IGNhY2hlIGZsdXNoIHRocmVzaG9sZC4NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIF9f cnRlX2Fsd2F5c19pbmxpbmUgdm9pZCAqKg0KPiA+ID4gPiArX19ydGVfbWVtcG9vbF9jYWNoZV96 Y19wdXRfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiA+ID4gPiArCQlz dHJ1Y3QgcnRlX21lbXBvb2wgKm1wLA0KPiA+ID4gPiArCQl1bnNpZ25lZCBpbnQgbikNCj4gPiA+ ID4gK3sNCj4gPiA+ID4gKwl2b2lkICoqY2FjaGVfb2JqczsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr CVJURV9BU1NFUlQoY2FjaGUgIT0gTlVMTCk7DQo+ID4gPiA+ICsJUlRFX0FTU0VSVChtcCAhPSBO VUxMKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWlmIChuIDw9IGNhY2hlLT5mbHVzaHRocmVzaCAt IGNhY2hlLT5sZW4pIHsNCj4gPiA+ID4gKwkJLyoNCj4gPiA+ID4gKwkJICogVGhlIG9iamVjdHMg Y2FuIGJlIGFkZGVkIHRvIHRoZSBjYWNoZSB3aXRob3V0DQo+IGNyb3NzaW5nDQo+ID4gPiB0aGUN Cj4gPiA+ID4gKwkJICogZmx1c2ggdGhyZXNob2xkLg0KPiA+ID4gPiArCQkgKi8NCj4gPiA+ID4g KwkJY2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1tjYWNoZS0+bGVuXTsNCj4gPiA+ID4gKwkJY2Fj aGUtPmxlbiArPSBuOw0KPiA+ID4gPiArCX0gZWxzZSBpZiAobGlrZWx5KG4gPD0gY2FjaGUtPmZs dXNodGhyZXNoKSkgew0KPiA+ID4gPiArCQkvKg0KPiA+ID4gPiArCQkgKiBUaGUgcmVxdWVzdCBp dHNlbGYgZml0cyBpbnRvIHRoZSBjYWNoZS4NCj4gPiA+ID4gKwkJICogQnV0IGZpcnN0LCB0aGUg Y2FjaGUgbXVzdCBiZSBmbHVzaGVkIHRvIHRoZQ0KPiBiYWNrZW5kLCBzbw0KPiA+ID4gPiArCQkg KiBhZGRpbmcgdGhlIG9iamVjdHMgZG9lcyBub3QgY3Jvc3MgdGhlIGZsdXNoDQo+IHRocmVzaG9s ZC4NCj4gPiA+ID4gKwkJICovDQo+ID4gPiA+ICsJCWNhY2hlX29ianMgPSAmY2FjaGUtPm9ianNb MF07DQo+ID4gPiA+ICsJCXJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1bGsobXAsIGNhY2hlX29i anMsIGNhY2hlLQ0KPiA+ID4gPiA+bGVuKTsNCj4gPiA+IFRoaXMgaXMgYSBmbHVzaCBvZiB0aGUg Y2FjaGUuIEl0IGlzIHByb2JhYmx5IHdvcnRoIGhhdmluZyBhIGNvdW50ZXINCj4gPiA+IGZvciB0 aGlzLg0KPiA+DQo+ID4gV2Ugc29tZXdoYXQgYWxyZWFkeSBkby4gVGhlIHB1dF9jb21tb25fcG9v bF9idWxrIGNvdW50ZXIgaXMNCj4gPiBpbmNyZW1lbnRlZCBpbiBydGVfbWVtcG9vbF9vcHNfZW5x dWV1ZV9idWxrKCkgWzFdLg0KPiA+DQo+ID4gWzFdOiBodHRwczovL2VsaXhpci5ib290bGluLmNv bS9kcGRrL3YyMi4xMS4xL3NvdXJjZS9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oI0w4MjQNCj4g Pg0KPiA+IFRoaXMgY291bnRlciBkb2Vzbid0IGV4YWN0bHkgY291bnQgdGhlIG51bWJlciBvZiB0 aW1lcyB0aGUgY2FjaGUgd2FzDQo+ID4gZmx1c2hlZCwgYmVjYXVzZSBpdCBhbHNvIGNvdW50cyBi dWxrIHB1dCB0cmFuc2FjdGlvbnMgbm90IGdvaW5nIHZpYQ0KPiB0aGUgY2FjaGUuDQo+ID4NCj4g PiBUaGlua2luZyBmdXJ0aGVyIGFib3V0IGl0LCBJIGFncmVlIHRoYXQgc3BlY2lmaWMgY291bnRl cnMgZm9yIGNhY2hlDQo+IGZsdXNoIGFuZA0KPiA+IGNhY2hlIHJlZmlsbCBjb3VsZCBiZSB1c2Vm dWwsIGFuZCBzaG91bGQgYmUgYWRkZWQuIEhvd2V2ZXIsIGJlaW5nDQo+IHRoaXMgbGF0ZSwgSQ0K PiA+IHdvdWxkIHByZWZlciBwb3N0cG9uaW5nIHRoZW0gZm9yIGEgc2VwYXJhdGUgcGF0Y2guDQo+ IEFncmVlLCBjYW4gYmUgaW4gYSBzZXBhcmF0ZSBwYXRjaCwgdGhleSBuZXZlciBleGlzdGVkLg0K DQpPSy4gV2UgaGF2ZSBhZ3JlZWQgdG8gcG9zdHBvbmUgdGhlIGNvdW50ZXIgZGlzY3Vzc2lvbiB0 byBhIHNlcGFyYXRlIHBhdGNoLiBTbyBsZXQncyByZXN1bWUgdGhlIGRpc2N1c3Npb24gdGhlcmUu DQoNClN1Y2ggYSBwYXRjaCB3aWxsIG5vdCBtYWtlIGl0IGZvciBSQzEsIHNvIEkgaGF2ZSBwdXQg aXQgb24gbXkgVE9ETyBsaXN0IGZvciBsYXRlci4NCg0KPiANCj4gPg0KPiA+ID4NCj4gPiA+ID4g KwkJY2FjaGUtPmxlbiA9IG47DQo+ID4gPiA+ICsJfSBlbHNlIHsNCj4gPiA+ID4gKwkJLyogVGhl IHJlcXVlc3QgaXRzZWxmIGlzIHRvbyBiaWcgZm9yIHRoZSBjYWNoZS4gKi8NCj4gPiA+IFRoaXMg aXMgcG9zc2libHkgYW4gZXJyb3IgY29uZGl0aW9uLiBEbyB3ZSBuZWVkIHRvIHNldCBydGVfZXJy bm8/DQo+ID4NCj4gPiBJIGNvbnNpZGVyZWQgdGhpcyB3aGVuIEkgd3JvdGUgdGhlIGZ1bmN0aW9u LCBhbmQgY29uY2x1ZGVkIHRoYXQgdGhpcw0KPiBmdW5jdGlvbg0KPiA+IG9ubHkgcmV0dXJucyBO VUxMIGFzIG5vcm1hbCBiZWhhdmlvciwgbmV2ZXIgYmVjYXVzZSBvZiBmYWlsdXJlLiBFLmcuDQo+ IGlmIGEgY2FjaGUNCj4gPiBjYW4gb25seSBob2xkIDQgbWJ1ZnMsIGFuZCB0aGUgUE1EIHRyaWVz IHRvIHN0b3JlIDMyIG1idWZzLCBpdCBpcw0KPiBjb3JyZWN0DQo+ID4gYmVoYXZpb3Igb2YgdGhl IFBNRCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYW5kIGxlYXJuIHRoYXQgdGhlIGNhY2hlIGlzDQo+ IHRvbyBzbWFsbA0KPiA+IGZvciBkaXJlY3QgYWNjZXNzOyBpdCBpcyBub3QgYSBmYWlsdXJlIGlu IHRoZSBQTUQgbm9yIGluIHRoZSBjYWNoZS4NCj4gVGhpcyBjb25kaXRpb24gaGFwcGVucyB3aGVu IHRoZXJlIGlzIGEgbWlzbWF0Y2ggYmV0d2VlbiB0aGUgY2FjaGUNCj4gY29uZmlndXJhdGlvbiBh bmQgdGhlIGJlaGF2aW9yIG9mIHRoZSBQTUQuIEZyb20gdGhpcyBwZXJzcGVjdGl2ZSBJDQo+IHRo aW5rIHRoaXMgaXMgYW4gZXJyb3IuIFRoaXMgY291bGQgZ28gdW5ub3RpY2VkLCBJIGRvIG5vdCB0 aGluayB0aGlzDQo+IG1pc2NvbmZpZ3VyYXRpb24gaXMgcmVwb3J0ZWQgYW55d2hlcmUuDQoNCk5v IHN0cm9uZyBvYmplY3Rpb24gZnJvbSBtZS4NCg0KSW4gdjksIEkgd2lsbCBhbHNvIHNldCBydGVf ZXJybm89RUlOVkFMIGhlcmUuDQoNCj4gDQo+ID4NCj4gPiBJZiBpdCBjb3VsZCByZXR1cm4gTlVM TCBkdWUgdG8gYSB2YXJpZXR5IG9mIHJlYXNvbnMsIEkgd291bGQgcHJvYmFibHkNCj4gYWdyZWUg dGhhdA0KPiA+IHdlICpuZWVkKiB0byBzZXQgcnRlX2Vycm5vLCBzbyB0aGUgYXBwbGljYXRpb24g Y291bGQgZGV0ZXJtaW5lIHRoZQ0KPiByZWFzb24uDQo+ID4NCj4gPiBCdXQgc2luY2UgaXQgY2Fu IG9ubHkgcmV0dXJuIE5VTEwgZHVlIHRvIG9uZSByZWFzb24gKHdoaWNoIGludm9sdmVzDQo+IGNv cnJlY3QNCj4gPiB1c2Ugb2YgdGhlIGZ1bmN0aW9uKSwgSSBjb252aW5jZWQgbXlzZWxmIHRoYXQg c2V0dGluZyBydGVfZXJybm8gd291bGQNCj4gbm90DQo+ID4gY29udmV5IGFueSBhZGRpdGlvbmFs IGluZm9ybWF0aW9uIHRoYW4gdGhlIE5VTEwgcmV0dXJuIHZhbHVlIGl0c2VsZiwNCj4gYW5kIGJl IGENCj4gPiB3YXN0ZSBvZiBwZXJmb3JtYW5jZSBpbiB0aGUgZmFzdCBwYXRoLiBJZiB5b3UgZGlz YWdyZWUsIHRoZW4gaXQNCj4gc2hvdWxkIGJlIHNldCB0bw0KPiA+IEVJTlZBTCwgbGlrZSB3aGVu IHJ0ZV9tZW1wb29sX2NhY2hlX3pjX2dldF9idWxrKCkgaXMgY2FsbGVkIHdpdGggYQ0KPiByZXF1 ZXN0DQo+ID4gdG9vIGJpZyBmb3IgdGhlIGNhY2hlLg0KPiA+DQo+ID4gPiBEbyB3ZSBuZWVkIGEg Y291bnRlciBoZXJlIHRvIGNhcHR1cmUgdGhhdD8NCj4gPg0KPiA+IEdvb2QgcXVlc3Rpb24uIEkg ZG9uJ3Qga25vdy4gSXQgd291bGQgaW5kaWNhdGUgdGhhdCBhIGNhY2hlIGlzDQo+IHNtYWxsZXIg dGhhbg0KPiA+IGV4cGVjdGVkIGJ5IHRoZSB1c2VycyB0cnlpbmcgdG8gYWNjZXNzIHRoZSBjYWNo ZSBkaXJlY3RseS4NCj4gPg0KPiA+IEFuZCBpZiB3ZSBhZGQgc3VjaCBhIGNvdW50ZXIsIHdlIHNo b3VsZCBwcm9iYWJseSBhZGQgYSBzaW1pbGFyDQo+IGNvdW50ZXIgZm9yDQo+ID4gdGhlIGNhY2hl IGdldCBmdW5jdGlvbiB0b28uDQo+IEFncmVlDQo+IA0KPiA+DQo+ID4gQnV0IGFnYWluLCBiZWlu ZyB0aGlzIGxhdGUsIEkgd291bGQgcG9zdHBvbmUgc3VjaCBjb3VudGVycyBmb3IgYQ0KPiBzZXBh cmF0ZQ0KPiA+IHBhdGNoLiBBbmQgdGhleSBzaG91bGQgdHJpZ2dlciBtb3JlIGRpc2N1c3Npb25z IGFib3V0IHJlcXVpcmVkL3VzZWZ1bA0KPiA+IGNvdW50ZXJzLg0KPiBBZ3JlZSwgc2hvdWxkIGJl IHBvc3Rwb25lZCB0byBhbm90aGVyIHBhdGNoLg0KDQpBZ3JlZWQuIExldCdzIG1vdmUgdGhlIGNv dW50ZXIgZGlzY3Vzc2lvbiB0byB0aGUgY291bnRlcnMgcGF0Y2gsIHdoZW4gcHJvdmlkZWQuDQoN Cj4gDQo+ID4NCj4gPiBGb3IgcmVmZXJlbmNlLCB0aGUgcnRlX21lbXBvb2xfZGVidWdfc3RhdHMg aXMgY2FjaGUgYWxpZ25lZCBhbmQNCj4gY3VycmVudGx5DQo+ID4gaG9sZHMgMTIgNjQtYml0IGNv dW50ZXJzLCBzbyB3ZSBjYW4gYWRkIDQgbW9yZSAtIHdoaWNoIGlzIGV4YWN0bHkgdGhlDQo+IG51 bWJlcg0KPiA+IGRpc2N1c3NlZCBoZXJlIC0gd2l0aG91dCBjaGFuZ2luZyBpdHMgc2l6ZS4gU28g dGhpcyBpcyBub3QgYSBiYXJyaWVyDQo+IHRvIGFkZGluZw0KPiA+IHRob3NlIGNvdW50ZXJzLg0K PiA+DQo+ID4gRnVydGhlcm1vcmUsIEkgc3VwcG9zZSB0aGF0IHdlIG9ubHkgd2FudCB0byBpbmNy ZWFzZSB0aGUgY291bnRlciB3aGVuDQo+IHRoZQ0KPiA+IGNhbGxlZCB0aHJvdWdoIHRoZSBtZW1w b29sIGNhY2hlIEFQSSwgbm90IHdoZW4gY2FsbGVkIGluZGlyZWN0bHkNCj4gdGhyb3VnaA0KPiA+ IHRoZSBtZW1wb29sIEFQSS4gVGhpcyB3b3VsZCBtZWFuIHRoYXQgdGhlIG9yZGluYXJ5IG1lbXBv b2wgZnVuY3Rpb25zDQo+ID4gY2Fubm90IGNhbGwgdGhlIG1lbXBvb2wgY2FjaGUgZnVuY3Rpb25z LCBvciB0aGUgd3JvbmcgY291bnRlcnMgd291bGQNCj4gPiBpbmNyZWFzZS4gU28gYWRkaW5nIHN1 Y2ggY291bnRlcnMgaXMgbm90IGNvbXBsZXRlbHkgdHJpdmlhbC4NCj4gPg0KPiA+ID4NCj4gPiA+ ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJUlRF X01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9idWxrLCAxKTsNCj4gPiA+ID4gKwlS VEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgcHV0X29ianMsIG4pOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsJcmV0dXJuIGNhY2hlX29ianM7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4g PiA+ID4gKy8qKg0KPiA+ID4gPiArICogQHdhcm5pbmcNCj4gPiA+ID4gKyAqIEBiIEVYUEVSSU1F TlRBTDogVGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dA0KPiA+ID4g cHJpb3INCj4gPiA+ID4gbm90aWNlLg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIFplcm8tY29w eSBwdXQgb2JqZWN0cyBpbiBhIG1lbXBvb2wgY2FjaGUgYmFja2VkIGJ5IHRoZQ0KPiBzcGVjaWZp ZWQNCj4gPiA+ID4gbWVtcG9vbC4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBAcGFyYW0gY2Fj aGUNCj4gPiA+ID4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sIGNhY2hlLg0KPiA+ID4g PiArICogQHBhcmFtIG1wDQo+ID4gPiA+ICsgKiAgIEEgcG9pbnRlciB0byB0aGUgbWVtcG9vbC4N Cj4gPiA+ID4gKyAqIEBwYXJhbSBuDQo+ID4gPiA+ICsgKiAgIFRoZSBudW1iZXIgb2Ygb2JqZWN0 cyB0byBiZSBwdXQgaW4gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ID4gPiA+ICsgKiBAcmV0dXJuDQo+ ID4gPiA+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHdoZXJlIHRvIHB1dCB0aGUgb2JqZWN0cyBpbiB0 aGUgbWVtcG9vbA0KPiBjYWNoZS4NCj4gPiA+ID4gKyAqICAgTlVMTCBpZiB0aGUgcmVxdWVzdCBp dHNlbGYgaXMgdG9vIGJpZyBmb3IgdGhlIGNhY2hlLCBpLmUuDQo+ID4gPiA+ICsgKiAgIGV4Y2Vl ZHMgdGhlIGNhY2hlIGZsdXNoIHRocmVzaG9sZC4NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArX19y dGVfZXhwZXJpbWVudGFsDQo+ID4gPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lk ICoqDQo+ID4gPiA+ICtydGVfbWVtcG9vbF9jYWNoZV96Y19wdXRfYnVsayhzdHJ1Y3QgcnRlX21l bXBvb2xfY2FjaGUgKmNhY2hlLA0KPiA+ID4gPiArCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLA0K PiA+ID4gPiArCQl1bnNpZ25lZCBpbnQgbikNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlSVEVfQVNT RVJUKGNhY2hlICE9IE5VTEwpOw0KPiA+ID4gPiArCVJURV9BU1NFUlQobXAgIT0gTlVMTCk7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKwlydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfYnVsayhj YWNoZSwgbXAsIG4pOw0KPiA+ID4gPiArCXJldHVybiBfX3J0ZV9tZW1wb29sX2NhY2hlX3pjX3B1 dF9idWxrKGNhY2hlLCBtcCwgbik7IH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ ICsgKiBAd2FybmluZw0KPiA+ID4gPiArICogQGIgRVhQRVJJTUVOVEFMOiBUaGlzIEFQSSBtYXkg Y2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0DQo+ID4gPiBwcmlvcg0KPiA+ID4gPiBub3Rp Y2UuDQo+ID4gPiA+ICsgKg0KPiA+ID4gPiArICogWmVyby1jb3B5IHVuLXB1dCBvYmplY3RzIGlu IGEgbWVtcG9vbCBjYWNoZS4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBAcGFyYW0gY2FjaGUN Cj4gPiA+ID4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sIGNhY2hlLg0KPiA+ID4gPiAr ICogQHBhcmFtIG4NCj4gPiA+ID4gKyAqICAgVGhlIG51bWJlciBvZiBvYmplY3RzIG5vdCBwdXQg aW4gdGhlIG1lbXBvb2wgY2FjaGUgYWZ0ZXINCj4gPiA+IGNhbGxpbmcNCj4gPiA+ID4gKyAqICAg cnRlX21lbXBvb2xfY2FjaGVfemNfcHV0X2J1bGsoKS4NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiAr X19ydGVfZXhwZXJpbWVudGFsDQo+ID4gPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2 b2lkDQo+ID4gPiA+ICtydGVfbWVtcG9vbF9jYWNoZV96Y19wdXRfcmV3aW5kKHN0cnVjdCBydGVf bWVtcG9vbF9jYWNoZSAqY2FjaGUsDQo+ID4gPiA+ICsJCXVuc2lnbmVkIGludCBuKQ0KPiBFYXJs aWVyIHRoZXJlIHdhcyBhIGRpc2N1c3Npb24gb24gdGhlIEFQSSBuYW1lLg0KDQpUaGUgZGlzY3Vz c2lvbiB3YXMgaGVyZToNCg0KaHR0cDovL2luYm94LmRwZGsub3JnL2Rldi85OENCRDgwNDc0RkE4 QjQ0QkY4NTVERjMyQzQ3REMzNUQ4NzVFOEBzbWFydHNlcnZlci5zbWFydHNoYXJlLmRrLw0KDQo+ IElNTywgd2Ugc2hvdWxkIGtlZXAgdGhlIEFQSSBuYW1lcyBzaW1pbGFyIHRvIHRob3NlIGluIHJp bmcgbGlicmFyeS4NCj4gVGhpcyB3b3VsZCBwcm92aWRlIGNvbnNpc3RlbmN5IGFjcm9zcyB0aGUg bGlicmFyaWVzLg0KPiBUaGVyZSB3ZXJlIHNvbWUgY29uY2VybnMgZXhwcmVzc2VkIGluIFBNRCBo YXZpbmcgdG8gY2FsbCAyIEFQSXMuIEkgZG8NCj4gbm90IHRoaW5rIGNoYW5naW5nIHRvIDIgQVBJ cyB3aWxsIGhhdmUgYW55IHBlcmYgaW1wYWN0Lg0KDQpUaGVyZSBpcyBhbHNvIHRoZSBkaWZmZXJl bmNlIHRoYXQgdGhlIHJpbmcgbGlicmFyeSBpbXBsZW1lbnRzIGxvY2tpbmcgd2l0aCB0aGVzZSBB UElzLCB3aGVyZWFzIHRoZSBtZW1wb29sIGNhY2hlIEFQSSBkbyBub3QgbmVlZCBsb2NraW5nLiBU aGUgcmluZydzIF9zdGFydCgpIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBlbnRlciB0aGUgY3JpdGlj YWwgc2VjdGlvbiwgYW5kIHRoZSBfZmluaXNoKCkgZnVuY3Rpb24gdG8gbGVhdmUgdGhlIGNyaXRp Y2FsIHNlY3Rpb24uDQoNCkkgYW0gdXN1YWxseSBpbiBmYXZvciBvZiBjb25zaXN0ZW5jeSwgYnV0 IEkgd291bGQgYXJndWUgdGhpczogRm9yIGZ1bmN0aW9ucyAoaW4gdGhlIG1lbXBvb2wgY2FjaGUp IHRoYXQgYXJlIGxvY2tsZXNzLCBpdCBtaWdodCBiZSBjb25mdXNpbmcgaWYgdGhleSBoYXZlIG5h bWVzIChmcm9tIHRoZSByaW5nIGxpYnJhcnkpIHRoYXQgaW1wbHkgbG9ja2luZy4gRFBESyBpcyBh bHJlYWR5IGJhZCBhdCBkb2N1bWVudGluZyB0aGUgdGhyZWFkIHNhZmVuZXNzIG9mIHZhcmlvdXMg ZnVuY3Rpb25zOyBsZXQncyBub3QgbWFrZSBpdCB3b3JzZSBieSB1c2luZyBjb25mdXNpbmcgZnVu Y3Rpb24gbmFtZXMuDQoNClRoaXMgaXMgYSBkZW1vY3JhY3ksIHNvIEkgYW0gb3BlbiB0byBjaGFu Z2luZyB0aGUgQVBJIGZvciBjb25zaXN0ZW5jeSwgaWYgdGhlIGNvbW11bml0eSBpbnNpc3RzLiBB bnlvbmUgaW50ZXJlc3RlZCwgcGxlYXNlIGluZGljYXRlIHdoaWNoIEFQSSB5b3UgcHJlZmVyIGZv ciB0aGUgemVyby1jb3B5IG1lbXBvb2wgY2FjaGUuDQoNCkEuIFRoZSB1bmlxdWUgQVBJIHByb3Zp ZGVkIGluIHRoaXMgcGF0Y2g6DQpydGVfbWVtcG9vbF9jYWNoZV96Y19nZXRfYnVsaygpLCBydGVf bWVtcG9vbF9jYWNoZV96Y19wdXRfYnVsaygpLCBhbmQgdGhlIG9wdGlvbmFsIHJ0ZV9tZW1wb29s X2NhY2hlX3pjX3B1dF9yZXdpbmQoKTsgb3INCg0KQi4gQW4gQVBJIHdpdGggX3N0YXJ0IGFuZCBf ZmluaXNoLCBsaWtlIGluIHRoZSByaW5nIGxpYnJhcnk6DQpydGVfbWVtcG9vbF9jYWNoZV96Y19n ZXRfYnVsa19zdGFydCBhbmQgX2ZpbmlzaCgpLCBhbmQgcnRlX21lbXBvb2xfY2FjaGVfemNfcHV0 X2J1bGtfc3RhcnQoKSBhbmQgX2ZpbmlzaCgpLg0KDQpJIGFtIGluIGZhdm9yIG9mIEE6IEtlZXAg dGhlIHVuaXF1ZSBuYW1lcyBhcyBwcm92aWRlZCBpbiB0aGUgcGF0Y2guDQoNCktvbnN0YW50aW4g YWNjZXB0ZWQgQSwgc28gdW5sZXNzIGhlIHNheXMgb3RoZXJ3aXNlLCBJJ2xsIHRyZWF0IHRoYXQg YXMgYSB2b3RlIGZvciBBLg0KDQo+IA0KPiBBbHNvLCB3aGF0IGlzIHRoZSB1c2UgY2FzZSBmb3Ig dGhlICdyZXdpbmQnIEFQST8NCg0KSXQgaXMgZm9yIHVzZSBjYXNlcyB3aGVyZSB0aGUgYXBwbGlj YXRpb24vUE1EIGlzIG9wcG9ydHVuaXN0aWMgYW5kIHByZXBhcmVzIGZvciB6ZXJvLWNvcHlpbmcg YSBmdWxsIGJ1cnN0LCBidXQgd2hpbGUgemVyby1jb3B5aW5nIHJlYWxpemVzIHRoYXQgdGhlcmUg d2FzIG5vdCBhIGZ1bGwgYnVyc3QgdG8gemVyby1jb3B5Lg0KDQpFLmcuIGEgUE1EIGZyZWVpbmcg bWJ1ZnMgYWZ0ZXIgdHJhbnNtaXQuIEl0IGhvcGVzIHRvICJmYXN0IGZyZWUiIHRoZSBlbnRpcmUg YnVyc3QsIGFuZCBwcmVwYXJlcyBmb3IgemVyby1jb3B5aW5nIHRoZSBmdWxsIGJ1cnN0IHRvIHRo ZSBtZW1wb29sOyBidXQgd2hpbGUgemVyby1jb3B5aW5nIHRoZSBtYnVmcyB0byB0aGUgbWVtcG9v bCwgYSBmZXcgb2YgdGhlIG1idWZzIGRvbid0IGxpdmUgdXAgdG8gdGhlIGNyaXRlcmlhIGZvciAi ZmFzdCBmcmVlIiwgc28gdGhleSBjYW5ub3QgYmUgemVyby1jb3BpZWQsIGFuZCB0aHVzIHRoZSBQ TUQgZnJlZXMgdGhvc2UgZmV3IG1idWZzIG5vcm1hbGx5IGluc3RlYWQuIFRoZW4gdGhlIFBNRCBt dXN0IGNhbGwgcmV3aW5kKCkgdG8gYWRqdXN0IHRoZSB6ZXJvLWNvcHkgYnVyc3Qgc2l6ZSBhY2Nv cmRpbmdseSB3aGVuIGRvbmUuDQoNCg==