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 CE0C0A0548; Tue, 22 Jun 2021 15:18:58 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 50E564003F; Tue, 22 Jun 2021 15:18:58 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 083E74003C for ; Tue, 22 Jun 2021 15:18:56 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Date: Tue, 22 Jun 2021 15:18:55 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C6187E@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [PATCH] parray: introduce internal API for dynamic arrays X-MimeOLE: Produced By Microsoft Exchange V6.5 Thread-Index: AQHXYQxT3nKj3OToOE+g04oypCLg2asTbdkAgAAOoICAAATCgIAAFeZggAAOq/CABIvGAIAAHL6ggAAPB4CAATs50IAEplTQgAApWQCAAAaAEIAAD6vwgAE+xUCAABC+wIAALMLAgAAR5UA= References: <20210614105839.3379790-1-thomas@monjalon.net> <98CBD80474FA8B44BF855DF32C47DC35C6184E@smartserver.smartshare.dk> <2004320.XGyPsaEoyj@thomas> <0bb118ba-2658-a7d7-ad8f-bf27f62849f7@intel.com> <98CBD80474FA8B44BF855DF32C47DC35C6187A@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35C6187B@smartserver.smartshare.dk> <98CB D80474FA8B44BF855DF32C47DC35C6187D@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Ananyev, Konstantin" , "Yigit, Ferruh" , "Thomas Monjalon" , "Richardson, Bruce" Cc: , , , , , Subject: Re: [dpdk-dev] [PATCH] parray: introduce internal API for dynamic arrays 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 Sender: "dev" PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEFu YW55ZXYsDQo+IEtvbnN0YW50aW4NCj4gDQo+ID4NCj4gPiA+IEZyb206IGRldiBbbWFpbHRvOmRl di1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgQW5hbnlldiwNCj4gPiA+IEtvbnN0YW50 aW4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gRnJvbTogZGV2IFttYWlsdG86ZGV2LWJvdW5j ZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBBbmFueWV2LA0KPiA+ID4gPiA+IEtvbnN0YW50aW4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gRnJvbTogZGV2IFttYWlsdG86 ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZg0KPiBBbmFueWV2LA0KPiA+ID4gPiA+ ID4gPiBLb25zdGFudGluDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBIb3cgY2Fu IHdlIGhpZGUgdGhlIGNhbGxiYWNrcyBzaW5jZSB0aGV5IGFyZSB1c2VkIGJ5DQo+IGlubGluZQ0K PiA+ID4gPiA+IGJ1cnN0DQo+ID4gPiA+ID4gPiA+IGZ1bmN0aW9ucy4NCj4gPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+IEkgcHJvYmFibHkgSSBvd2UgYSBiZXR0ZXIgZXhwbGFuYXRpb24g dG8gd2hhdCBJIG1lYW50IGluDQo+ID4gPiBmaXJzdA0KPiA+ID4gPiA+IG1haWwuDQo+ID4gPiA+ ID4gPiA+ID4gT3RoZXJ3aXNlIGl0IHNvdW5kcyBjb25mdXNpbmcuDQo+ID4gPiA+ID4gPiA+ID4g SSdsbCB0cnkgdG8gd3JpdGUgYSBtb3JlIGRldGFpbGVkIG9uZSBpbiBuZXh0IGZldyBkYXlzLg0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBBY3R1YWxseSBJIGdhdmUgaXQgYW5vdGhlciB0 aG91Z2h0IG92ZXIgd2Vla2VuZCwgYW5kIG1pZ2h0DQo+IGJlDQo+ID4gPiB3ZQ0KPiA+ID4gPiA+ IGNhbg0KPiA+ID4gPiA+ID4gPiBoaWRlIHJ0ZV9ldGhfZGV2X2NiIGV2ZW4gaW4gYSBzaW1wbGVy IHdheS4gSSdkIHVzZQ0KPiA+ID4gZXRoX3J4X2J1cnN0KCkNCj4gPiA+ID4gPiBhcw0KPiA+ID4g PiA+ID4gPiBhbiBleGFtcGxlLCBidXQgdGhlIHNhbWUgcHJpbmNpcGxlIGFwcGxpZXMgdG8gb3Ro ZXIgJ2Zhc3QnDQo+ID4gPiA+ID4gZnVuY3Rpb25zLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiAgMS4gTmVlZGVkIGNoYW5nZXMgZm9yIFBNRHMgcnhfcGt0X2J1cnN0KCk6DQo+ID4gPiA+ ID4gPiA+ICAgICBhKSBjaGFuZ2UgZnVuY3Rpb24gcHJvdG90eXBlIHRvIGFjY2VwdCAndWludDE2 X3QNCj4gcG9ydF9pZCcNCj4gPiA+IGFuZA0KPiA+ID4gPiA+ID4gPiAndWludDE2X3QgcXVldWVf aWQnLA0KPiA+ID4gPiA+ID4gPiAgICAgICAgICBpbnN0ZWFkIG9mIGN1cnJlbnQgJ3ZvaWQgKicu DQo+ID4gPiA+ID4gPiA+ICAgICBiKSBFYWNoIFBNRCByeF9wa3RfYnVyc3QoKSB3aWxsIGhhdmUg dG8gY2FsbA0KPiA+ID4gPiA+IHJ0ZV9ldGhfcnhfZXBpbG9nKCkNCj4gPiA+ID4gPiA+ID4gZnVu Y3Rpb24gYXQgcmV0dXJuLg0KPiA+ID4gPiA+ID4gPiAgICAgICAgICBUaGlzICBpbmxpbmUgZnVu Y3Rpb24gd2lsbCBkbyBhbGwgQ0IgY2FsbHMgZm9yDQo+IHRoYXQNCj4gPiA+IHF1ZXVlLg0KPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBUbyBiZSBtb3JlIHNwZWNpZmljLCBsZXQgc2F5IHdl IGhhdmUgc29tZSBQTUQ6IHh5eiB3aXRoIFJYDQo+ID4gPiA+ID4gZnVuY3Rpb246DQo+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+IHVpbnQxNl90DQo+ID4gPiA+ID4gPiA+IHh5el9yZWN2X3Br dHModm9pZCAqcnhfcXVldWUsIHN0cnVjdCBydGVfbWJ1ZiAqKnJ4X3BrdHMsDQo+ID4gPiB1aW50 MTZfdA0KPiA+ID4gPiA+ID4gPiBuYl9wa3RzKQ0KPiA+ID4gPiA+ID4gPiB7DQo+ID4gPiA+ID4g PiA+ICAgICAgc3RydWN0IHh5el9yeF9xdWV1ZSAqcnhxID0gcnhfcXVldWU7DQo+ID4gPiA+ID4g PiA+ICAgICAgdWludDE2X3QgbmJfcnggPSAwOw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiAgICAgIC8qIGRvIGFjdHVhbCBzdHVmZiBoZXJlICovDQo+ID4gPiA+ID4gPiA+ICAgICAuLi4u DQo+ID4gPiA+ID4gPiA+ICAgICByZXR1cm4gbmJfcng7DQo+ID4gPiA+ID4gPiA+IH0NCj4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSXQgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0bzoNCj4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gdWludDE2X3QNCj4gPiA+ID4gPiA+ID4geHl6X3JlY3Zf cGt0cyh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwgc3RydWN0DQo+ID4gPiBy dGVfbWJ1Zg0KPiA+ID4gPiA+ID4gPiAqKnJ4X3BrdHMsIHVpbnQxNl90IG5iX3BrdHMpDQo+ID4g PiA+ID4gPiA+IHsNCj4gPiA+ID4gPiA+ID4gICAgICAgICAgc3RydWN0IHh5el9yeF9xdWV1ZSAq cnhxOw0KPiA+ID4gPiA+ID4gPiAgICAgICAgICB1aW50MTZfdCBuYl9yeDsNCj4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gICAgICAgICAgcnhxID0gX3J0ZV9ldGhfcnhfcHJvbG9nKHBvcnRf aWQsIHF1ZXVlX2lkKTsNCj4gPiA+ID4gPiA+ID4gICAgICAgICAgaWYgKHJ4cSA9PSBOVUxMKQ0K PiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gPiA+ID4gPiA+ICAgICAg ICAgIG5iX3J4ID0gX3h5el9yZWFsX3JlY3ZfcGt0cyhyeHEsIHJ4X3BrdHMsDQo+IG5iX3BrdHMp Ow0KPiA+ID4gPiA+ID4gPiAgICAgICAgICByZXR1cm4gX3J0ZV9ldGhfcnhfZXBpbG9nKHBvcnRf aWQsIHF1ZXVlX2lkLA0KPiByeF9wa3RzLA0KPiA+ID4gPiA+ID4gPiBuYl9wa3RzKTsNCj4gPiA+ ID4gPiA+ID4gfQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBBbmQgc29tZXdoZXJlIGlu IGV0aGRldl9wcml2YXRlLmg6DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IHN0YXRpYyBp bmxpbmUgdm9pZCAqDQo+ID4gPiA+ID4gPiA+IF9ydGVfZXRoX3J4X3Byb2xvZyh1aW50MTZfdCBw b3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCk7DQo+ID4gPiA+ID4gPiA+IHsNCj4gPiA+ID4gPiA+ ID4gICAgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRd Ow0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAjaWZkZWYgUlRFX0VUSERFVl9ERUJVR19S WA0KPiA+ID4gPiA+ID4gPiAgICAgICAgIFJURV9FVEhfVkFMSURfUE9SVElEX09SX0VSUl9SRVQo cG9ydF9pZCwgTlVMTCk7DQo+ID4gPiA+ID4gPiA+ICAgICAgICAgUlRFX0ZVTkNfUFRSX09SX0VS Ul9SRVQoKmRldi0+cnhfcGt0X2J1cnN0LCBOVUxMKTsNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gICAgICAgICBpZiAocXVldWVfaWQgPj0gZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXMpIHsN Cj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIFJURV9FVEhERVZfTE9HKEVSUiwgIkludmFs aWQgUlgNCj4gcXVldWVfaWQ9JXVcbiIsDQo+ID4gPiA+ID4gPiA+IHF1ZXVlX2lkKTsNCj4gPiA+ ID4gPiA+ID4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiA+ID4gPiAgICAg ICAgIH0NCj4gPiA+ID4gPiA+ID4gI2VuZGlmDQo+ID4gPiA+ID4gPiA+ICAgcmV0dXJuIGRldi0+ ZGF0YS0+cnhfcXVldWVzW3F1ZXVlX2lkXTsNCj4gPiA+ID4gPiA+ID4gfQ0KPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiBzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gPiA+ID4gPiA+IF9y dGVfZXRoX3J4X2VwaWxvZyh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4g c3RydWN0DQo+ID4gPiA+ID4gcnRlX21idWYNCj4gPiA+ID4gPiA+ID4gKipyeF9wa3RzLCBjb25z dCB1aW50MTZfdCBuYl9wa3RzKTsNCj4gPiA+ID4gPiA+ID4gew0KPiA+ID4gPiA+ID4gPiAgICAg c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAjaWZkZWYgUlRFX0VUSERFVl9SWFRYX0NBTExCQUNL Uw0KPiA+ID4gPiA+ID4gPiAgICAgICAgIHN0cnVjdCBydGVfZXRoX3J4dHhfY2FsbGJhY2sgKmNi Ow0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAgICAgICAgIC8qIF9fQVRPTUlDX1JFTEVB U0UgbWVtb3J5IG9yZGVyIHdhcyB1c2VkIHdoZW4gdGhlDQo+ID4gPiA+ID4gPiA+ICAgICAgICAg ICogY2FsbCBiYWNrIHdhcyBpbnNlcnRlZCBpbnRvIHRoZSBsaXN0Lg0KPiA+ID4gPiA+ID4gPiAg ICAgICAgICAqIFNpbmNlIHRoZXJlIGlzIGEgY2xlYXIgZGVwZW5kZW5jeSBiZXR3ZWVuDQo+IGxv YWRpbmcNCj4gPiA+ID4gPiA+ID4gICAgICAgICAgKiBjYiBhbmQgY2ItPmZuL2NiLT5uZXh0LCBf X0FUT01JQ19BQ1FVSVJFIG1lbW9yeQ0KPiA+ID4gb3JkZXIgaXMNCj4gPiA+ID4gPiA+ID4gICAg ICAgICAgKiBub3QgcmVxdWlyZWQuDQo+ID4gPiA+ID4gPiA+ICAgICAgICAgICovDQo+ID4gPiA+ ID4gPiA+ICAgICAgICAgY2IgPSBfX2F0b21pY19sb2FkX24oJmRldi0NCj4gPnBvc3RfcnhfYnVy c3RfY2JzW3F1ZXVlX2lkXSwNCj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfX0FUT01JQ19SRUxBWEVEKTsNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g ICAgICAgICBpZiAodW5saWtlbHkoY2IgIT0gTlVMTCkpIHsNCj4gPiA+ID4gPiA+ID4gICAgICAg ICAgICAgICAgIGRvIHsNCj4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgbmJf cnggPSBjYi0+Zm4ucngocG9ydF9pZCwNCj4gcXVldWVfaWQsDQo+ID4gPiA+ID4gcnhfcGt0cywN Cj4gPiA+ID4gPiA+ID4gbmJfcngsDQo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iX3BrdHMsDQo+IGNiLQ0KPiA+ID4gPiA+ID5w YXJhbSk7DQo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNiID0gY2ItPm5l eHQ7DQo+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB9IHdoaWxlIChjYiAhPSBOVUxMKTsN Cj4gPiA+ID4gPiA+ID4gICAgICAgICB9DQo+ID4gPiA+ID4gPiA+ICNlbmRpZg0KPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiAgICAgICAgIHJ0ZV9ldGhkZXZfdHJhY2VfcnhfYnVyc3QocG9y dF9pZCwgcXVldWVfaWQsICh2b2lkDQo+ID4gPiA+ID4gKiopcnhfcGt0cywNCj4gPiA+ID4gPiA+ ID4gbmJfcngpOw0KPiA+ID4gPiA+ID4gPiAgICAgICAgIHJldHVybiBuYl9yeDsNCj4gPiA+ID4g PiA+ID4gIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGF0IHdvdWxkIG1ha2UgdGhlIGNv bXBpbGVyIGlubGluZSBfcnRlX2V0aF9yeF9lcGlsb2coKSBpbnRvDQo+IHRoZQ0KPiA+ID4gPiA+ IGRyaXZlciB3aGVuIGNvbXBpbGluZyB0aGUgRFBESyBsaWJyYXJ5LiBCdXQNCj4gPiA+ID4gPiA+ IFJURV9FVEhERVZfUlhUWF9DQUxMQkFDS1MgaXMgYSBkZWZpbml0aW9uIGZvciB0aGUgYXBwbGlj YXRpb24NCj4gPiA+ID4gPiBkZXZlbG9wZXIgdG8gdXNlIHdoZW4gY29tcGlsaW5nIHRoZSBEUERL IGFwcGxpY2F0aW9uLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSSBiZWxpZXZlIGl0IGlzIGZvciBi b3RoIC0gdXNlciBhcHAgYW5kIERQREsgZHJpdmVycy4NCj4gPiA+ID4gPiBBRkFJSywgdGhleSBi b3RoIGhhdmUgdG8gdXNlIHRoZSBzYW1lIHJ0ZV9jb25maWcuaCwgb3RoZXJ3aXNlDQo+ID4gPiB0 aGluZ3MNCj4gPiA+ID4gPiB3aWxsIGJlIGJyb2tlbi4NCj4gPiA+ID4gPiBJZiBsZXQgc2F5IFJU RV9FVEhERVZfUlhUWF9DQUxMQkFDS1MgaXMgbm90IGVuYWJsZWQgaW4gZXRoZGV2LA0KPiB0aGVu DQo+ID4gPiA+ID4gdXNlciB3b3VsZG4ndCBiZSBhYmxlIHRvIGFkZCBhIGNhbGxiYWNrIGF0IGZp cnN0IHBsYWNlLg0KPiA+ID4gPg0KPiA+ID4gPiBJbiB0aGUgY2FzZSBvZiBSVEVfRVRIREVWX1JY VFhfQ0FMTEJBQ0tTLCBpdCBpcyBpbmRlcGVuZGVudDoNCj4gPiA+DQo+ID4gPiBOb3QgcmVhbGx5 Lg0KPiA+ID4gVGhlcmUgYXJlIGZldyBsaWJyYXJpZXMgd2l0aGluIERQREsgdGhhdCBkbyByZWx5 IG9uIHJ4L3R4DQo+IGNhbGxiYWNrczoNCj4gPiA+IGJwZiwgbGF0ZW5jeXN0YXQsIHBkdW1wLCBw b3dlci4NCj4gPg0KPiA+IEkgZG8gbm90IGNvbnNpZGVyIHRoZXNlIHRvIGJlIGNvcmUgbGlicmFy aWVzIGluIERQREsuIElmIHRoZXNlDQo+IGxpYnJhcmllcyBhcmUgdXNlZCBpbiBhbiBhcHBsaWNh dGlvbiwgdGhhdCBhcHBsaWNhdGlvbiBtdXN0IGJlIGNvbXBpbGVkDQo+IHdpdGgNCj4gPiBSVEVf RVRIREVWX1JYVFhfQ0FMTEJBQ0tTLg0KPiA+DQo+ID4gPiBXaXRoIHRoZSBhcHByb2FjaCBhYm92 ZSB0aGVpciBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgYnJva2VuIC0NCj4gPiA+IHNldHVwIGZ1bmN0 aW9ucyB3aWxsIHJldHVybiBzdWNjZXNzLCBidXQgYWN0dWFsIGNhbGxiYWNrcyB3aWxsIG5vdA0K PiBiZQ0KPiA+ID4gaW52b2tlZC4NCj4gPg0KPiA+IEkganVzdCB0b29rIGEgbG9vayBhdCBicGYg YW5kIGxhdGVuY3lzdGF0LiBCcGYgY29ycmVjdGx5IGNoZWNrcyBmb3INCj4gdGhlIHJldHVybiBj b2RlLCBhbmQgcmV0dXJucyBhbiBlcnJvciBpZiBldGhkZXYgaGFzIGJlZW4gY29tcGlsZWQNCj4g d2l0aG91dA0KPiA+IFJURV9FVEhERVZfUlhUWF9DQUxMQkFDS1MuIExhdGVuY3lzdGF0IGNoZWNr cyBmb3IgdGhlIHJldHVybiBjb2RlLA0KPiBidXQgb25seSBsb2dzIHRoZSBlcnJvciBhbmQgY29u dGludWVzIGFzIGlmIGV2ZXJ5dGhpbmcgaXMgZ29vZA0KPiA+IGFueXdheS4gVGhhdCBpcyBhIGJ1 ZyBpbiB0aGUgbGF0ZW5jeXN0YXQgbGlicmFyeS4NCj4gDQo+IElmIFJURV9FVEhERVZfUlhUWF9D QUxMQkFDS1MgSXMgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgYm90aCBEUERLIGFuZA0KPiB1c2Vy IGFwcCAtIGV2ZXJ5dGhpbmcgd2lsbCB3b3JrIGFzIGV4cGVjdGVkLg0KPiBCdXQsIGFzIEkgdW5k ZXJzdGFuZCwgeW91IGNvbnNpZGVyIGFwcHJvYWNoIHdoZW4NCj4gUlRFX0VUSERFVl9SWFRYX0NB TExCQUNLUyBJcyBlbmFibGVkIGluIHRoZSBEUERLLCBidXQgZGlzYWJsZWQgaW4gdGhlDQo+IGFw cC4NCj4gU3VjaCBhcHByb2FjaCB3aWxsIGNhdXNlIGEgcHJvYmxlbXMgd2l0aCBzb21lICBsaWJy YXJpZXMgLSBhcyBJDQo+IG91dGxpbmVkIGFib3ZlLg0KPiANCj4gPg0KPiA+ID4gRnJvbSBvdGhl ciBzaWRlLCBzb21lIGxpYnJhcmllcyBkbyBpbnZva2UgcngvdHggYnVyc3Qgb24gdGhlaXIgb3du Og0KPiBpcC0NCj4gPiA+IHBpcGVsaW5lLCBncmFwaC4NCj4gPiA+IEZvciB0aGVtIGNhbGxiYWNr IGludm9jYXRpb24gd2lsbCBjb250aW51ZSB0byB3b3JrLCBldmVuIHdoZW4NCj4gPiA+IFJURV9F VEhERVZfUlhUWF9DQUxMQkFDS1MgaXMgZGlzYWJsZWQgaW4gdGhlIGFwcC4NCj4gPiA+IEluIGdl bmVyYWwsIGJ1aWxkaW5nIERQREsgbGlicyBhbmQgdXNlciBhcHAgd2l0aCBkaWZmZXJlbnQNCj4g cnRlX2NvbmZpZy5oDQo+ID4gPiBpcyByZWFsbHkgYSBiYWQgaWRlYS4NCj4gPiA+IEl0IG1pZ2h0 IHdvcmsgaW4gc29tZSBjYXNlcywgYnV0IEkgYmVsaWV2ZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGFu ZA0KPiB1c2VyDQo+ID4gPiBzaG91bGQgbm90IHJlbHkgb24gaXQuDQo+ID4gPiBJZiB1c2VyIG5l ZWRzIHRvIGRpc2FibGUgUlRFX0VUSERFVl9SWFRYX0NBTExCQUNLUyBpbiBoaXMgYXBwLCB0aGVu DQo+IHRoZQ0KPiA+ID4gcHJvcGVyIHdheSB3b3VsZCBiZToNCj4gPiA+IC0gdXBkYXRlIHJ0ZV9j b25maWcuaA0KPiA+ID4gLSByZWJ1aWxkIGJvdGggRFBESyBhbmQgdGhlIGFwcCB3aXRoIG5ldyBj b25maWcNCj4gPg0KPiA+IEluIHByaW5jaXBsZSwgSSBjb21wbGV0ZWx5IGFncmVlIHdpdGggeW91 ciByZWFzb25pbmcgZnJvbSBhIGhpZ2gNCj4gbGV2ZWwgcGVyc3BlY3RpdmUuDQo+ID4NCj4gPiBI b3dldmVyLCBhY2NlcHRpbmcgaXQgd291bGQgcHJvYmFibHkgbGVhZCB0byB0aGUNCj4gUlRFX0VU SERFVl9SWFRYX0NBTExCQUNLUyBjb21waWxlIHRpbWUgY29uZmlndXJhdGlvbiBvcHRpb24gYmVp bmcNCj4gY29tcGxldGVseQ0KPiA+IHJlbW92ZWQsDQo+IA0KPiBGb3Igbm93LCB3ZSBhcmUgbm90 IHRhbGtpbmcgYWJvdXQgcmVtb3Zpbmcgb3IgZXZlbiBkZXByZWNhdGluZw0KPiBSVEVfRVRIREVW X1JYVFhfQ0FMTEJBQ0tTLg0KPiBXaGF0IEkgYW0gdGFsa2luZyBhYm91dCAtIHVzZXIgaGFzIHRv IHVzZSBpdCAoYW5kIG90aGVyIHJ0ZV9jb25maWcuaA0KPiBvcHRpb25zKSBwcm9wZXJseS4NCj4g SGUgY2FuJ3QgdXNlIGRpZmZlcmVudCBjb25maWdzIGZvciBEUERLIGxpYnMgYW5kIGFwcCBhbmQg ZXhwZWN0IHRoaW5ncw0KPiAnanVzdCB3b3JrJy4NCj4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkIHJp Z2h0IG5vdywgSSB0aGluayBpdCB3aWxsIG5ldmVyIGJlLg0KPiBJZiBpdCB3b3JrcyByaWdodCBu b3csIHRoaXMgaXMganVzdCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpY3MsIHdoaWNoDQo+IHVzZXIg c2hvdWxkIG5vdCByZWx5IG9uLg0KDQpJIGFncmVlLg0KDQo+IA0KPiA+IGFuZCBldGhkZXYgY2Fs bGJhY2tzIGJlaW5nIGFsd2F5cyBzdXBwb3J0ZWQuIEFuZCBJIGRvbid0IHRoaW5rIHN1Y2ggYQ0K PiBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBvZiBhIGNvcmUgRFBESyBsaWJyYXJ5IHNob3VsZCBi ZQ0KPiA+IGFjY2VwdGVkLg0KPiANCj4gQXMgSSBzYWlkIGFib3ZlLCBSVEVfRVRIREVWX1JYVFhf Q0FMTEJBQ0tTIElzIHN0aWxsIHRoZXJlLg0KPiBJZiBpdCBpcyByZWFsbHkgY3JpdGljYWwgZm9y IHlvdXIgYXBwIHRvIGRpc2FibGUgaXQgLSB5b3UgY2FuIHN0aWxsIGRvDQo+IGl0LCB5b3UganVz dCBuZWVkIHRvIGRvIGl0IGluIGEgcHJvcGVyIHdheS4NCg0KSSBob3BlIHNvLiBUaGlzIGlzIGV4 YWN0bHkgd2hhdCBJIGFtIHBsZWFkaW5nIGZvcjogS2VlcCB0aGUgYWJpbGl0eSB0byBkaXNhYmxl IFJURV9FVEhERVZfUlhUWF9DQUxMQkFDS1MgYXQgY29tcGlsZSB0aW1lLCBzbyB0aGVyZSBpcyBu byBwZXJmb3JtYW5jZSBpbXBhY3QgZm9yIGFwcGxpY2F0aW9ucyBub3QgdXNpbmcgaXQuDQoNCkkg YWxzbyBhZ3JlZSB3aXRoIHRoZSBsaW1pdGF0aW9uIHRoYXQgYm90aCBsaWJyYXJ5IGFuZCBhcHBs aWNhdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgd2l0aCB0aGUgc2FtZSBjb25maWd1cmF0aW9uLg0K DQo+IA0KPiA+IDxyYW50IG9uPg0KPiA+IEkgd2FzIG9wcG9zZWQgdG8gdGhlICJjYWxsYmFjayBo b29rcyIgY29uY2VwdCBmcm9tIHRoZSBiZWdpbm5pbmcsIGFuZA0KPiBzdGlsbCBhbS4gVGhlIHBh dGggdGhhdCBwYWNrZXRzIHRha2UgdGhyb3VnaCB2YXJpb3VzIGZ1bmN0aW9ucyBhbmQNCj4gPiBw aXBlbGluZSBzdGFnZXMgc2hvdWxkIGJlIGRldGVybWluZWQgYW5kIGltcGxlbWVudGVkIGJ5IHRo ZQ0KPiBhcHBsaWNhdGlvbiwgbm90IGJ5IHRoZSBEUERLIGxpYnJhcmllcy4NCj4gPg0KPiA+IElm IHdlIHdhbnQgdG8gcHJvdmlkZSBhIHN0YW5kYXJkaXplZCBhZHZhbmNlZCBJUCBwaXBlbGluZSBm b3IgRFBESywNCj4gd2UgY291bGQgb2ZmZXIgaXQgYXMgYSBtaWRkbGUgbGF5ZXIgbGlicmFyeSB1 c2luZyB0aGUgdW5kZXJseWluZyBEUERLDQo+ID4gbGlicmFyaWVzIHRvIGltcGxlbWVudCB2YXJp b3VzIGNhbGxiYWNrcywgSVAgZnJhZ21lbnRhdGlvbg0KPiByZWFzc2VtYmx5LCBldGMuLiBEb24n dCB0d2VhayB0aGUgY29yZSBsaWJyYXJpZXMgKGNvc3RpbmcgbWVtb3J5IGFuZC9vcg0KPiA+IHBl cmZvcm1hbmNlKSB0byBzdXBwb3J0IGFuIGluY3JlYXNpbmcgYW1vdW50IG9mIHN1cHBsZW1lbnRh bA0KPiBsaWJyYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdXNlZCBieSBhbGwgYXBwbGljYXRpb25z Lg0KPiA+DQo+ID4gV2UgZG9uJ3Qgd2FudCBEUERLIHRvIGJlY29tZSBsaWtlIHRoZSBMaW51eCBJ UCBzdGFjaywgd2l0aCBjYWxsYmFjaw0KPiBob29rcyBhbmQgcnVudGltZSBpbnN0YWxsYWJsZSBw cm90b2NvbCBoYW5kbGluZyBldmVyeXdoZXJlLiBBbGwgdGhpcw0KPiA+IGNydWZ0IHdpdGggdGhl aXIgc21hbGwgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25zIGFkZHMgdXAhDQo+ID4gPHJhbnQgb2Zm Pg0KPiA+DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBJZiBpdCBpcyBub3QgY29tcGlsZWQgd2l0 aCB0aGUgRFBESyBsaWJyYXJ5LCBhdHRlbXB0cyB0byBpbnN0YWxsDQo+ID4gPiBjYWxsYmFja3Mg ZnJvbSB0aGUgYXBwbGljYXRpb24gd2lsbCBmYWlsIHdpdGggRU5PVFNVUC4NCj4gPiA+ID4NCj4g PiA+ID4gSWYgaXQgaXMgbm90IGNvbXBpbGVkIHdpdGggdGhlIERQREsgYXBwbGljYXRpb24sIG5v IHRpbWUgd2lsbCBiZQ0KPiA+ID4gc3BlbnQgdHJ5aW5nIHRvIGRldGVybWluZSBpZiBhbnkgdGhl cmUgYXJlIGFueSBjYWxsYmFja3MgdG8gY2FsbC4NCj4gPiA+ID4NCj4gPiA+ID4gPiBCVFcsICBz dWNoIGNoYW5nZSB3aWxsIGFsbG93IHVzIHRvIG1ha2UNCj4gUlRFX0VUSERFVl9SWFRYX0NBTExC QUNLUw0KPiA+ID4gPiA+IGludGVybmFsIGZvciBldGhkZXYvUE1EIGxheWVyLCB3aGljaCBpcyBh IGdvb2QgdGhpbmcgZnJvbSBteQ0KPiA+ID4gPiA+IHBlcnNwZWN0aXZlLg0KPiA+ID4gPg0KPiA+ ID4gPiBJZiBpdCBjYW4gYmUgZG9uZSB3aXRob3V0IGRlZ3JhZGluZyBwZXJmb3JtYW5jZSBmb3Ig YXBwbGljYXRpb25zDQo+IG5vdA0KPiA+ID4gdXNpbmcgY2FsbGJhY2tzLg0KDQo=