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 76CBAA054F; Sat, 4 Jun 2022 10:07:28 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 12E544021E; Sat, 4 Jun 2022 10:07:28 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 7358540041 for ; Sat, 4 Jun 2022 10:07:26 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v1 0/5] Direct re-arming of buffers on receive side Date: Sat, 4 Jun 2022 10:07:24 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D870EA@smartserver.smartshare.dk> X-MimeOLE: Produced By Microsoft Exchange V6.5 In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v1 0/5] Direct re-arming of buffers on receive side Thread-Index: Adh3oig009YccHs5QkGgFbhaSs8WYQAQ7mBQ References: <20220420081650.2043183-1-feifei.wang2@arm.com> <20220516061012.618787-1-feifei.wang2@arm.com> <5320c9dd-8f53-155e-7900-ff02bfa11b4d@yandex.ru> <48994ee9-74b4-7fcc-f61b-c8f45686a031@yandex.ru> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Konstantin Ananyev" , "Honnappa Nagarahalli" , "Feifei Wang" Cc: "nd" , , "Ruifeng Wang" , 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 PiBGcm9tOiBLb25zdGFudGluIEFuYW55ZXYgW21haWx0bzprb25zdGFudGluLnYuYW5hbnlldkB5 YW5kZXgucnVdDQo+IFNlbnQ6IFNhdHVyZGF5LCA0IEp1bmUgMjAyMiAwMS4zMg0KPiANCj4gPiA8 c25pcD4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiBba29uc3RhbnRpbi52LmFuYW55ZXZAeWFuZGV4 LnJ1IGFwcGVhcnMgc2ltaWxhciB0byBzb21lb25lIHdobw0KPiA+Pj4+IHByZXZpb3VzbHkgc2Vu dCB5b3UgZW1haWwsIGJ1dCBtYXkgbm90IGJlIHRoYXQgcGVyc29uLiBMZWFybiB3aHkNCj4gdGhp cw0KPiA+Pj4+IGNvdWxkIGJlIGEgcmlzayBhdCBodHRwczovL2FrYS5tcy9MZWFybkFib3V0U2Vu ZGVySWRlbnRpZmljYXRpb24uXQ0KPiA+Pj4+DQo+ID4+Pj4gMTYvMDUvMjAyMiAwNzoxMCwgRmVp ZmVpIFdhbmcg0L/QuNGI0LXRgjoNCj4gPj4+Pj4NCj4gPj4+Pj4+PiBDdXJyZW50bHksIHRoZSB0 cmFuc21pdCBzaWRlIGZyZWVzIHRoZSBidWZmZXJzIGludG8gdGhlIGxjb3JlDQo+ID4+Pj4+Pj4g Y2FjaGUgYW5kIHRoZSByZWNlaXZlIHNpZGUgYWxsb2NhdGVzIGJ1ZmZlcnMgZnJvbSB0aGUgbGNv cmUNCj4gY2FjaGUuDQo+ID4+Pj4+Pj4gVGhlIHRyYW5zbWl0IHNpZGUgdHlwaWNhbGx5IGZyZWVz IDMyIGJ1ZmZlcnMgcmVzdWx0aW5nIGluDQo+ID4+Pj4+Pj4gMzIqOD0yNTZCIG9mIHN0b3JlcyB0 byBsY29yZSBjYWNoZS4gVGhlIHJlY2VpdmUgc2lkZSBhbGxvY2F0ZXMNCj4gMzINCj4gPj4+Pj4+ PiBidWZmZXJzIGFuZCBzdG9yZXMgdGhlbSBpbiB0aGUgcmVjZWl2ZSBzaWRlIHNvZnR3YXJlIHJp bmcsDQo+ID4+Pj4+Pj4gcmVzdWx0aW5nIGluIDMyKjg9MjU2QiBvZiBzdG9yZXMgYW5kIDI1NkIg b2YgbG9hZCBmcm9tIHRoZQ0KPiBsY29yZSBjYWNoZS4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFRo aXMgcGF0Y2ggcHJvcG9zZXMgYSBtZWNoYW5pc20gdG8gYXZvaWQgZnJlZWluZyB0by9hbGxvY2F0 aW5nDQo+ID4+Pj4+Pj4gZnJvbSB0aGUgbGNvcmUgY2FjaGUuIGkuZS4gdGhlIHJlY2VpdmUgc2lk ZSB3aWxsIGZyZWUgdGhlDQo+IGJ1ZmZlcnMNCj4gPj4+Pj4+PiBmcm9tIHRyYW5zbWl0IHNpZGUg ZGlyZWN0bHkgaW50byBpdCdzIHNvZnR3YXJlIHJpbmcuIFRoaXMgd2lsbA0KPiA+Pj4+Pj4+IGF2 b2lkIHRoZSAyNTZCIG9mIGxvYWRzIGFuZCBzdG9yZXMgaW50cm9kdWNlZCBieSB0aGUgbGNvcmUN Cj4gY2FjaGUuDQo+ID4+Pj4+Pj4gSXQgYWxzbyBmcmVlcyB1cCB0aGUgY2FjaGUgbGluZXMgdXNl ZCBieSB0aGUgbGNvcmUgY2FjaGUuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBIb3dldmVyLCB0aGlz IHNvbHV0aW9uIHBvc2VzIHNldmVyYWwgY29uc3RyYWludHM6DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+ PiAxKVRoZSByZWNlaXZlIHF1ZXVlIG5lZWRzIHRvIGtub3cgd2hpY2ggdHJhbnNtaXQgcXVldWUg aXQNCj4gc2hvdWxkDQo+ID4+Pj4+Pj4gdGFrZSB0aGUgYnVmZmVycyBmcm9tLiBUaGUgYXBwbGlj YXRpb24gbG9naWMgZGVjaWRlcyB3aGljaA0KPiA+Pj4+Pj4+IHRyYW5zbWl0IHBvcnQgdG8gdXNl IHRvIHNlbmQgb3V0IHRoZSBwYWNrZXRzLiBJbiBtYW55IHVzZSBjYXNlcw0KPiA+Pj4+Pj4+IHRo ZSBOSUMgbWlnaHQgaGF2ZSBhIHNpbmdsZSBwb3J0IChbMV0sIFsyXSwgWzNdKSwgaW4gd2hpY2gg Y2FzZQ0KPiBhDQo+ID4+Pj4+Pj4gZ2l2ZW4gdHJhbnNtaXQgcXVldWUgaXMgYWx3YXlzIG1hcHBl ZCB0byBhIHNpbmdsZSByZWNlaXZlIHF1ZXVlDQo+ID4+Pj4+Pj4gKDE6MSBSeCBxdWV1ZTogVHgg cXVldWUpLiBUaGlzIGlzIGVhc3kgdG8gY29uZmlndXJlLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4g SWYgdGhlIE5JQyBoYXMgMiBwb3J0cyAodGhlcmUgYXJlIHNldmVyYWwgcmVmZXJlbmNlcyksIHRo ZW4gd2UNCj4gPj4+Pj4+PiB3aWxsIGhhdmUNCj4gPj4+Pj4+PiAxOjIgKFJYIHF1ZXVlOiBUWCBx dWV1ZSkgbWFwcGluZyB3aGljaCBpcyBzdGlsbCBlYXN5IHRvDQo+IGNvbmZpZ3VyZS4NCj4gPj4+ Pj4+PiBIb3dldmVyLCBpZiB0aGlzIGlzIGdlbmVyYWxpemVkIHRvICdOJyBwb3J0cywgdGhlIGNv bmZpZ3VyYXRpb24NCj4gPj4+Pj4+PiBjYW4gYmUgbG9uZy4gTW9yZSBvdmVyIHRoZSBQTUQgd291 bGQgaGF2ZSB0byBzY2FuIGEgbGlzdCBvZg0KPiA+Pj4+Pj4+IHRyYW5zbWl0IHF1ZXVlcyB0byBw dWxsIHRoZSBidWZmZXJzIGZyb20uDQo+ID4+Pj4+DQo+ID4+Pj4+PiBKdXN0IHRvIHJlLWl0ZXJh dGUgc29tZSBnZW5lcmljIGNvbmNlcm5zIGFib3V0IHRoaXMgcHJvcG9zYWw6DQo+ID4+Pj4+PiAg ICAgLSBXZSBlZmZlY3RpdmVseSBsaW5rIFJYIGFuZCBUWCBxdWV1ZXMgLSB3aGVuIHRoaXMgZmVh dHVyZQ0KPiBpcyBlbmFibGVkLA0KPiA+Pj4+Pj4gICAgICAgdXNlciBjYW4ndCBzdG9wIFRYIHF1 ZXVlIHdpdGhvdXQgc3RvcHBpbmcgbGlua2VkIFJYIHF1ZXVlDQo+IGZpcnN0Lg0KPiA+Pj4+Pj4g ICAgICAgUmlnaHQgbm93IHVzZXIgaXMgZnJlZSB0byBzdGFydC9zdG9wIGFueSBxdWV1ZXMgYXQg aGlzDQo+IHdpbGwuDQo+ID4+Pj4+PiAgICAgICBJZiB0aGF0IGZlYXR1cmUgd2lsbCBhbGxvdyB0 byBsaW5rIHF1ZXVlcyBmcm9tIGRpZmZlcmVudA0KPiBwb3J0cywNCj4gPj4+Pj4+ICAgICAgIHRo ZW4gZXZlbiBwb3J0cyB3aWxsIGJlY29tZSBkZXBlbmRlbnQgYW5kIHVzZXIgd2lsbCBoYXZlDQo+ IHRvIHBheSBleHRyYQ0KPiA+Pj4+Pj4gICAgICAgY2FyZSB3aGVuIG1hbmFnaW5nIHN1Y2ggcG9y dHMuDQo+ID4+Pj4+DQo+ID4+Pj4+IFtGZWlmZWldIFdoZW4gZGlyZWN0IHJlYXJtIGVuYWJsZWQs IHRoZXJlIGFyZSB0d28gcGF0aCBmb3IgdGhyZWFkDQo+IHRvDQo+ID4+Pj4+IGNob29zZS4gSWYg dGhlcmUgYXJlIGVub3VnaCBUeCBmcmVlZCBidWZmZXJzLCBSeCBjYW4gcHV0IGJ1ZmZlcnMNCj4g Pj4+Pj4gZnJvbSBUeC4NCj4gPj4+Pj4gT3RoZXJ3aXNlLCBSeCB3aWxsIHB1dCBidWZmZXJzIGZy b20gbWVtcG9vbCBhcyB1c3VhbC4gVGh1cywgdXNlcnMNCj4gZG8NCj4gPj4+Pj4gbm90IG5lZWQg dG8gcGF5IG11Y2ggYXR0ZW50aW9uIG1hbmFnaW5nIHBvcnRzLg0KPiA+Pj4+DQo+ID4+Pj4gV2hh dCBJIGFtIHRhbGtpbmcgYWJvdXQ6IHJpZ2h0IG5vdyBkaWZmZXJlbnQgcG9ydCBvciBkaWZmZXJl bnQNCj4gcXVldWVzDQo+ID4+Pj4gb2YgdGhlIHNhbWUgcG9ydCBjYW4gYmUgdHJlYXRlZCBhcyBp bmRlcGVuZGVudCBlbnRpdGllczoNCj4gPj4+PiBpbiBnZW5lcmFsIHVzZXIgaXMgZnJlZSB0byBz dGFydC9zdG9wIChhbmQgZXZlbiByZWNvbmZpZ3VyZSBpbg0KPiBzb21lDQo+ID4+Pj4gY2FzZXMp IG9uZSBlbnRpdHkgd2l0aG91dCBuZWVkIHRvIHN0b3Agb3RoZXIgZW50aXR5Lg0KPiA+Pj4+IEku RSB1c2VyIGNhbiBzdG9wIGFuZCByZS1jb25maWd1cmUgVFggcXVldWUgd2hpbGUga2VlcCByZWNl aXZpbmcNCj4gPj4+PiBwYWNrZXRzIGZyb20gUlggcXVldWUuDQo+ID4+Pj4gV2l0aCBkaXJlY3Qg cmUtYXJtIGVuYWJsZWQsIEkgdGhpbmsgaXQgd291bGRuJ3QgYmUgcG9zc2libGUgYW55DQo+IG1v cmU6DQo+ID4+Pj4gYmVmb3JlIHN0b3BwaW5nL3JlY29uZmlndXJpbmcgVFggcXVldWUgdXNlciB3 b3VsZCBoYXZlIG1ha2Ugc3VyZQ0KPiB0aGF0DQo+ID4+Pj4gY29ycmVzcG9uZGluZyBSWCBxdWV1 ZSB3b3VsZG4ndCBiZSB1c2VkIGJ5IGRhdGFwYXRoLg0KPiA+Pj4gSSBhbSB0cnlpbmcgdG8gdW5k ZXJzdGFuZCB0aGUgcHJvYmxlbSBiZXR0ZXIuIEZvciB0aGUgVFggcXVldWUgdG8NCj4gYmUgc3Rv cHBlZCwNCj4gPj4gdGhlIHVzZXIgbXVzdCBoYXZlIGJsb2NrZWQgdGhlIGRhdGEgcGxhbmUgZnJv bSBhY2Nlc3NpbmcgdGhlIFRYDQo+IHF1ZXVlLg0KPiA+Pg0KPiA+PiBTdXJlbHkgaXQgaXMgdXNl ciByZXNwb25zaWJpbGl0eSB0bm90IHRvIGNhbGwgdHhfYnVyc3QoKSBmb3INCj4gc3RvcHBlZC9y ZWxlYXNlZCBxdWV1ZS4NCj4gPj4gVGhlIHByb2JsZW0gaXMgdGhhdCB3aGlsZSBUWCBmb3IgdGhh dCBxdWV1ZSBpcyBzdG9wcGVkLCBSWCBmb3INCj4gcmVsYXRlZCBxdWV1ZSBzdGlsbA0KPiA+PiBj YW4gY29udGludWUuDQo+ID4+IFNvIHJ4X2J1cnN0KCkgd2lsbCB0cnkgdG8gcmVhZC9tb2RpZnkg VFggcXVldWUgZGF0YSwgdGhhdCBtaWdodCBiZQ0KPiBhbHJlYWR5IGZyZWVkLA0KPiA+PiBvciBz aW11bHRhbmVvdXNseSBtb2RpZmllZCBieSBjb250cm9sIHBhdGguDQo+ID4gVW5kZXJzdG9vZCwg YWdyZWUgb24gdGhlIGlzc3VlDQo+ID4NCj4gPj4NCj4gPj4gQWdhaW4sIGl0IGFsbCBjYW4gYmUg bWl0aWdhdGVkIGJ5IGNhcmVmdWxseSByZS1kZXNpZ25pbmcgYW5kDQo+IG1vZGlmeWluZyBjb250 cm9sIGFuZA0KPiA+PiBkYXRhLXBhdGggaW5zaWRlIHVzZXIgYXBwIC0gYnkgZG9pbmcgZXh0cmEg Y2hlY2tzIGFuZA0KPiBzeW5jaHJvbml6YXRpb25zLCBldGMuDQo+ID4+IEJ1dCBmcm9tIHByYWN0 aWNhbCBwb2ludCAtIEkgcHJlc3VtZSBtb3N0IG9mIHVzZXJzIHNpbXBseSB3b3VsZA0KPiBhdm9p ZCB1c2luZyB0aGlzDQo+ID4+IGZlYXR1cmUgZHVlIGFsbCBwb3RlbnRpYWwgcHJvYmxlbXMgaXQg bWlnaHQgY2F1c2UuDQo+ID4gVGhhdCBpcyBzdWJqZWN0aXZlLCBpdCBhbGwgZGVwZW5kcyBvbiB0 aGUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzDQo+IHVzZXJzIHNlZSBpbiB0aGVpciBhcHBsaWNh dGlvbi4NCj4gPiBJTU8sIHRoZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBzZWVuIHdpdGggdGhp cyBwYXRjaCBpcyB3b3J0aCBmZXcNCj4gY2hhbmdlcy4NCj4gDQo+IFllcywgaXQgaXMgc3ViamVj dGl2ZSB0aWxsIHNvbWUgZXh0ZW50LCB0aG91Z2ggbXkgZmVlbGluZw0KPiB0aGF0IGl0IG1pZ2h0 IGVuZC11cCBiZWluZyBzb3J0IG9mIHN5bnRoZXRpYyBpbXByb3ZlbWVudCB1c2VkIG9ubHkNCj4g Ynkgc29tZSBzaG93LWNhc2UgYmVuY2htYXJrcy4NCg0KSSBiZWxpZXZlIHRoYXQgb25lIHNwZWNp ZmljIGltcG9ydGFudCB1c2UgY2FzZSBoYXMgYWxyZWFkeSBiZWVuIG1lbnRpb25lZCwgc28gSSBk b24ndCB0aGluayB0aGlzIGlzIGEgYmVuY2htYXJrIG9ubHkgZmVhdHVyZS4NCg0KPiAgRnJvbSBt eSBwZXJzcGVjdGl2ZSwgaXQgd291bGQgYmUgbXVjaCBtb3JlIHBsYXVzaWJsZSwNCj4gaWYgd2Ug Y2FuIGludHJvZHVjZSBzb21lIHNvcnQgb2YgZ2VuZXJpYyBpbXByb3ZlbWVudCwgdGhhdCBkb2Vz bid0DQo+IGltcG9zZSBhbGwgdGhlc2UgZXh0cmEgY29uc3RyYWludHMgYW5kIGltcGxpY2F0aW9u cy4NCj4gTGlrZSBvbmUsIGRpc2N1c3NlZCBiZWxvdyBpbiB0aGF0IHRocmVhZCB3aXRoIFpDIG1l bXBvb2wgYXBwcm9hY2guDQo+IA0KDQpDb25zaWRlcmluZyB0aGlzIGZlYXR1cmUgZnJvbSBhIGhp Z2ggbGV2ZWwgcGVyc3BlY3RpdmUsIEkgYWdyZWUgd2l0aCBLb25zdGFudGluJ3MgY29uY2VybnMs IHNvIEknbGwgYWxzbyBzdXBwb3J0IGhpcyB2aWV3cy4NCg0KSWYgdGhpcyBwYXRjaCBpcyBzdXBw b3NlZCB0byBiZSBhIGdlbmVyaWMgZmVhdHVyZSwgcGxlYXNlIGFkZCBzdXBwb3J0IGZvciBpdCBp biBhbGwgTklDIFBNRHMsIG5vdCBqdXN0IG9uZS4gKFJlZ2FyZGxlc3MgaWYgdGhlIGZlYXR1cmUg aXMgZGVmaW5lZCBhcyAxOjEgbWFwcGluZyBvciBOOk0gbWFwcGluZy4pIEl0IGlzIHB1cmVseSBz b2Z0d2FyZSwgc28gaXQgc2hvdWxkIGJlIGF2YWlsYWJsZSBmb3IgYWxsIFBNRHMsIG5vdCBqdXN0 IHlvdXIgZmF2b3JpdGUgaGFyZHdhcmUhIENvbnNpZGVyIHRoZSAiZmFzdCBtYnVmIGZyZWUiIGZl YXR1cmUsIHdoaWNoIGlzIHB1cmUgc29mdHdhcmU7IHdoeSBpcyB0aGF0IGZlYXR1cmUgbm90IGlt cGxlbWVudGVkIGluIGFsbCBQTURzPw0KDQpBIHNlY29uZGFyeSBwb2ludCBJJ20gbWFraW5nIGhl cmUgaXMgdGhhdCB0aGlzIHNwZWNpZmljIGZlYXR1cmUgd2lsbCBsZWFkIHRvIGFuIGVub3Jtb3Vz IGFtb3VudCBvZiBjb3B5LXBhc3RlIGNvZGUsIGluc3RlYWQgb2YgYSBnZW5lcmljIGxpYnJhcnkg ZnVuY3Rpb24gZWFzaWx5IGF2YWlsYWJsZSBmb3IgYWxsIFBNRHMuDQoNCj4gDQo+ID4+DQo+ID4+ PiBMaWtlIEZlaWZlaSBzYXlzLCB0aGUgUlggc2lkZSBoYXMgdGhlIG5vcm1hbCBwYWNrZXQgYWxs b2NhdGlvbiBwYXRoDQo+IHN0aWxsIGF2YWlsYWJsZS4NCj4gPj4+IEFsc28gdGhpcyBzb3VuZHMg bGlrZSBhIGNvcm5lciBjYXNlIHRvIG1lLCB3ZSBjYW4gaGFuZGxlIHRoaXMNCj4gdGhyb3VnaCBj aGVja3MgaW4NCj4gPj4gdGhlIHF1ZXVlX3N0b3AgQVBJLg0KPiA+Pg0KPiA+PiBEZXBlbmRzLg0K PiA+PiBpZiBpdCB3b3VsZCBiZSBhbGxvd2VkIHRvIGxpbmsgcXVldWVzIG9ubHkgZnJvbSB0aGUg c2FtZSBwb3J0LCB0aGVuDQo+IHllcywgZXh0cmENCj4gPj4gY2hlY2tzIGZvciBxdWV1ZS1zdG9w IG1pZ2h0IGJlIGVub3VnaC4NCj4gPj4gQXMgcmlnaHQgbm93IERQREsgZG9lc24ndCBhbGxvdyB1 c2VyIHRvIGNoYW5nZSBudW1iZXIgb2YgcXVldWVzDQo+IHdpdGhvdXQNCj4gPj4gZGV2X3N0b3Ao KSBmaXJzdC4NCj4gPj4gVGhvdWdoIGlmIGl0IHdvdWxkIGJlIGFsbG93ZWQgdG8gbGluayBxdWV1 ZXMgZnJvbSBkaWZmZXJlbnQgcG9ydHMsDQo+IHRoZW4gc2l0dWF0aW9uDQo+ID4+IHdpbGwgYmUg bXVjaCB3b3JzZS4NCj4gPj4gUmlnaHQgbm93IHBvcnRzIGFyZSB0b3RhbGx5IGluZGVwZW5kZW50 IGVudGl0aWVzIChleGNlcHQgc29tZQ0KPiBzcGVjaWFsIGNhc2VzIGxpa2UNCj4gPj4gbGluay1i b25kaW5nLCBldGMuKS4NCj4gPj4gQXMgb25lIHBvcnQgY2FuIGtlZXAgZG9pbmcgUlgvVFgsIHNl Y29uZCBvbmUgY2FuIGJlIHN0b3BwZWQsIHJlLQ0KPiBjb25mZ3VyZWQsDQo+ID4+IGV2ZW4gZGV0 YWNoZWQsIGFuZCBuZXdseSBhdHRhY2hlZCBkZXZpY2UgbWlnaHQgcmUtdXNlIHNhbWUgcG9ydA0K PiBudW1iZXIuDQo+ID4gSSBzZWUgdGhpcyBhcyBhIHNpbWlsYXIgcmVzdHJpY3Rpb24gdG8gdGhl IG9uZSBkaXNjdXNzZWQgYWJvdmUuDQo+IA0KPiBZZXMsIHRoZXkgYXJlIHNpbWlsYXIgaW4gcHJp bmNpcGFsLCB0aG91Z2ggSSB0aGluayB0aGF0IHRoZSBjYXNlDQo+IHdpdGggcXVldWVzIGZyb20g ZGlmZmVyZW50IHBvcnQgd291bGQgbWFrZSB0aGluZ3MgbXVjaCBtb3JlIGNvbXBsZXguDQo+IA0K PiAgPiBEbyB5b3Ugc2VlIGFueSBpc3N1ZXMgaWYgd2UgZW5mb3JjZSB0aGlzIHdpdGggY2hlY2tz Pw0KPiANCj4gSGFyZCB0byB0ZWxsIHN0cmFpZ2h0d2F5LCBhIGxvdCB3aWxsIGRlcGVuZCBob3cg c21hcnQNCj4gc3VjaCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBiZS4NCj4gVXN1YWxseSBEUERLIHRl bmRzIG5vdCB0byBhdm9pZCBoZWF2eQ0KPiBzeW5jaHJvbml6YXRpb25zIHdpdGhpbiBpdHMgZGF0 YS1wYXRoIGZ1bmN0aW9ucy4NCg0KQ2VydGFpbmx5ISBJbXBsZW1lbnRpbmcgbW9yZSBhbmQgbW9y ZSBvZiBzdWNoIGZlYXR1cmVzIGluIHRoZSBQTURzIHdpbGwgbGVhZCB0byBsb25nZXIgYW5kIGxv bmdlciBkYXRhIHBsYW5lIGNvZGUgcGF0aHMgaW4gdGhlIFBNRHMuIEl0IGlzIHRoZSAic2FsYW1p IG1ldGhvZCIsIHdoZXJlIGVhY2ggc21hbGwgcGllY2UgbWFrZXMgbm8gcGVyZm9ybWFuY2UgZGlm ZmVyZW5jZSwgYnV0IHRoZXkgYWxsIGFkZCB1cCwgYW5kIGV2ZW50dWFsbHkgdGhlIHN1bSBvZiB0 aGVtIGRvZXMgaW1wYWN0IHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgZ2VuZXJhbCB1c2UgY2FzZSBu ZWdhdGl2ZWx5Lg0KDQo+IA0KPiA+Pg0KPiA+Pg0KPiA+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+PiAt IHZlcnkgbGltaXRlZCB1c2FnZSBzY2VuYXJpbyAtIGl0IHdpbGwgaGF2ZSBhIHBvc2l0aXZlIGVm ZmVjdA0KPiBvbmx5DQo+ID4+Pj4+PiAgICAgIHdoZW4gd2UgaGF2ZSBhIGZpeGVkIGZvcndhcmRp bmcgbWFwcGluZzogYWxsIChvciBuZWFybHkNCj4gYWxsKSBwYWNrZXRzDQo+ID4+Pj4+PiAgICAg IGZyb20gdGhlIFJYIHF1ZXVlIGFyZSBmb3J3YXJkZWQgaW50byB0aGUgc2FtZSBUWCBxdWV1ZS4N Cj4gPj4+Pj4NCj4gPj4+Pj4gW0ZlaWZlaV0gQWx0aG91Z2ggdGhlIHVzYWdlIHNjZW5hcmlvIGlz IGxpbWl0ZWQsIHRoaXMgdXNhZ2UNCj4gc2NlbmFyaW8NCj4gPj4+Pj4gaGFzIGEgd2lkZSByYW5n ZSBvZiBhcHBsaWNhdGlvbnMsIHN1Y2ggYXMgTklDIHdpdGggb25lIHBvcnQuDQo+ID4+Pj4NCj4g Pj4+PiB5ZXMsIHRoZXJlIGFyZSBOSUNzIHdpdGggb25lIHBvcnQsIGJ1dCBubyBndWFyYW50ZWUg dGhlcmUgd291bGRuJ3QNCj4gYmUNCj4gPj4+PiBzZXZlcmFsIHN1Y2ggTklDcyB3aXRoaW4gdGhl IHN5c3RlbS4NCj4gPj4+IFdoYXQgSSBzZWUgaW4gbXkgaW50ZXJhY3Rpb25zIGlzLCBhIHNpbmds ZSBOSUMvRFBVIGlzIHVuZGVyDQo+IHV0aWxpemVkIGZvciBhIDINCj4gPj4gc29ja2V0IHN5c3Rl bS4gU29tZSBhcmUgYWRkaW5nIG1vcmUgc29ja2V0cyB0byB0aGUgc3lzdGVtIHRvIGJldHRlcg0K PiB1dGlsaXplIHRoZQ0KPiA+PiBEUFUuIFRoZSBOSUMgYmFuZHdpZHRoIGNvbnRpbnVlcyB0byBn cm93IHNpZ25pZmljYW50bHkuIEkgZG8gbm90DQo+IHRoaW5rIHRoZXJlIHdpbGwNCj4gPj4gYmUg YSBtdWx0aS1EUFUgcGVyIHNlcnZlciBzY2VuYXJpby4NCj4gPj4NCj4gPj4NCj4gPj4gSW50ZXJl c3RpbmcuLi4gZnJvbSBteSBleHBlcmllbmNlIGl0IGlzIHZpc2EtdmVyc2E6DQo+ID4+IGluIG1h bnkgY2FzZXMgMjAwR2IvcyBpcyBub3QgdGhhdCBtdWNoIHRoZXNlIGRheXMgdG8gc2F0dXJhdGUg bW9kZXJuDQo+IDIgc29ja2V0DQo+ID4+IHg4NiBzZXJ2ZXIuDQo+ID4+IFRob3VnaCBJIHN1cHBv c2UgYSBsb3QgZGVwZW5kcyBvbiBwYXJ0aWN1bGFyIEhXIGFuZCBhY3R1YWwgd29ya2xvYWQuDQo+ ID4+DQo+ID4+Pg0KPiA+Pj4+DQo+ID4+Pj4+IEZ1cnRyaGVybW9yZSwgSSB0aGluayB0aGlzIGlz IGEgdHJhZGVvZmYgYmV0d2VlbiBwZXJmb3JtYW5jZSBhbmQNCj4gPj4+Pj4gZmxleGliaWxpdHku DQo+ID4+Pj4+IE91ciBnb2FsIGlzIHRvIGFjaGlldmUgYmVzdCBwZXJmb3JtYW5jZSwgdGhpcyBt ZWFucyB3ZSBuZWVkIHRvDQo+IGdpdmUNCj4gPj4+Pj4gdXAgc29tZSBmbGV4aWJpbGl0eSBkZWNp c2l2ZWx5LiBGb3IgZXhhbXBsZSBvZiAnRkFTVF9GUkVFIE1vZGUnLA0KPiBpdA0KPiA+Pj4+PiBk ZWxldGVzIG1vc3Qgb2YgdGhlIGJ1ZmZlciBjaGVjayAocmVmY250ID4gMSwgZXh0ZXJuYWwgYnVm ZmVyLA0KPiBjaGFpbg0KPiA+Pj4+PiBidWZmZXIpLCBjaG9vc2VzIGEgc2hvcmVzdCBwYXRoLCBh bmQgdGhlbiBhY2hpZXZlIHNpZ25pZmljYW50DQo+ID4+Pj4+IHBlcmZvcm1hbmNlDQo+ID4+Pj4g aW1wcm92ZW1lbnQuDQo+ID4+Pj4+PiBXb25kZXIgZGlkIHlvdSBoYWQgYSBjaGFuY2UgdG8gY29u c2lkZXIgbWVtcG9vbC1jYWNoZSBaQyBBUEksDQo+ID4+Pj4+PiBzaW1pbGFyIHRvIG9uZSB3ZSBo YXZlIGZvciB0aGUgcmluZz8NCj4gPj4+Pj4+IEl0IHdvdWxkIGFsbG93IHVzIG9uIFRYIGZyZWUg cGF0aCB0byBhdm9pZCBjb3B5aW5nIG1idWZzIHRvDQo+ID4+Pj4+PiB0ZW1wb3JhcnkgYXJyYXkg b24gdGhlIHN0YWNrLg0KPiA+Pj4+Pj4gSW5zdGVhZCB3ZSBjYW4gcHV0IHRoZW0gc3RyYWlnaHQg ZnJvbSBUWCBTVyByaW5nIHRvIHRoZSBtZW1wb29sDQo+IGNhY2hlLg0KPiA+Pj4+Pj4gVGhhdCBz aG91bGQgc2F2ZSBleHRyYSBzdG9yZS9sb2FkIGZvciBtYnVmIGFuZCBtaWdodCBoZWxwIHRvDQo+ ID4+Pj4+PiBhY2hpZXZlIHNvbWUgcGVyZm9ybWFuY2UgZ2FpbiB3aXRob3V0IGJ5LXBhc3Npbmcg bWVtcG9vbC4NCj4gPj4+Pj4+IEl0IHByb2JhYmx5IHdvdWxkbid0IGJlIGFzIGZhc3QgYXMgd2hh dCB5b3UgcHJvcG9zaW5nLCBidXQgbWlnaHQNCj4gYmUNCj4gPj4+Pj4+IGZhc3QgZW5vdWdoIHRv IGNvbnNpZGVyIGFzIGFsdGVybmF0aXZlLg0KPiA+Pj4+Pj4gQWdhaW4sIGl0IHdvdWxkIGJlIGEg Z2VuZXJpYyBvbmUsIHNvIHdlIGNhbiBhdm9pZCBhbGwgdGhlc2UNCj4gPj4+Pj4+IGltcGxpY2F0 aW9ucyBhbmQgbGltaXRhdGlvbnMuDQo+ID4+Pj4+DQo+ID4+Pj4+IFtGZWlmZWldIEkgdGhpbmsg dGhpcyBpcyBhIGdvb2QgdHJ5LiBIb3dldmVyLCB0aGUgbW9zdCBpbXBvcnRhbnQNCj4gPj4+Pj4g dGhpbmcgaXMgdGhhdCBpZiB3ZSBjYW4gYnlwYXNzIHRoZSBtZW1wb29sIGRlY2lzaXZlbHkgdG8g cHVyc3VlDQo+IHRoZQ0KPiA+Pj4+PiBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBnYWlucy4NCj4g Pj4+Pg0KPiA+Pj4+IEkgdW5kZXJzdGFuZCB0aGUgaW50ZW50aW9uLCBhbmQgSSBwZXJzb25hbGx5 IHRoaW5rIHRoaXMgaXMgd3JvbmcNCj4gYW5kDQo+ID4+Pj4gZGFuZ2Vyb3VzIGF0dGl0dWRlLg0K PiA+Pj4+IFdlIGhhdmUgbWVtcG9vbCBhYnN0cmFjdGlvbiBpbiBwbGFjZSBmb3IgdmVyeSBnb29k IHJlYXNvbi4NCj4gPj4+PiBTbyB3ZSBuZWVkIHRvIHRyeSB0byBpbXByb3ZlIG1lbXBvb2wgcGVy Zm9ybWFuY2UgKGFuZCBBUEkgaWYNCj4gPj4+PiBuZWNlc3NhcnkpIGF0IGZpcnN0IHBsYWNlLCBu b3QgdG8gYXZvaWQgaXQgYW5kIGJyZWFrIG91ciBvd24gcnVsZXMNCj4gYW5kDQo+ID4+IHJlY29t bWVuZGF0aW9ucy4NCj4gPj4+IFRoZSBhYnN0cmFjdGlvbiBjYW4gYmUgdGhvdWdodCBvZiBhdCBh IGhpZ2hlciBsZXZlbC4gaS5lLiB0aGUNCj4gZHJpdmVyIG1hbmFnZXMgdGhlDQo+ID4+IGJ1ZmZl ciBhbGxvY2F0aW9uL2ZyZWUgYW5kIGlzIGhpZGRlbiBmcm9tIHRoZSBhcHBsaWNhdGlvbi4gVGhl DQo+IGFwcGxpY2F0aW9uIGRvZXMNCj4gPj4gbm90IG5lZWQgdG8gYmUgYXdhcmUgb2YgaG93IHRo ZXNlIGNoYW5nZXMgYXJlIGltcGxlbWVudGVkLg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+ Pj4+IEZvciBaQywgdGhlcmUgbWF5YmUgYSBwcm9ibGVtIGZvciBpdCBpbiBpNDBlLiBUaGUgcmVh c29uIGZvciB0aGF0DQo+ID4+Pj4+IHB1dCBUeCBidWZmZXJzIGludG8gdGVtcG9yYXJ5IGlzIHRo YXQgaTQwZV90eF9lbnRyeSBpbmNsdWRlcw0KPiBidWZmZXINCj4gPj4+Pj4gcG9pbnRlciBhbmQg aW5kZXguDQo+ID4+Pj4+IFRodXMgd2UgY2Fubm90IHB1dCBUeCBTV19yaW5nIGVudHJ5IGludG8g bWVtcG9vbCBkaXJlY3RseSwgd2UNCj4gbmVlZA0KPiA+Pj4+PiB0byBmaXJzdGx0IGV4dHJhY3Qg bWJ1ZiBwb2ludGVyLiBGaW5hbGx5LCB0aG91Z2ggd2UgdXNlIFpDLCB3ZQ0KPiBzdGlsbA0KPiA+ Pj4+PiBjYW4ndCBhdm9pZCB1c2luZyBhIHRlbXBvcmFyeSBzdGFjayB0byBleHRyYWN0IFR4IGJ1 ZmZlcg0KPiBwb2ludGVycy4NCj4gPj4+Pg0KPiA+Pj4+IFdoZW4gdGFsa2luZyBhYm91dCBaQyBB UEkgZm9yIG1lbXBvb2wgY2FjaGUgSSBtZWFudCBzb21ldGhpbmcNCj4gbGlrZToNCj4gPj4+PiB2 b2lkICoqIG1lbXBvb2xfY2FjaGVfcHV0X3pjX3N0YXJ0KHN0cnVjdCBydGVfbWVtcG9vbF9jYWNo ZSAqbWMsDQo+ID4+Pj4gdWludDMyX3QgKm5iX2VsZW0sIHVpbnQzMl90IGZsYWdzKTsgdm9pZA0K PiA+Pj4+IG1lbXBvb2xfY2FjaGVfcHV0X3pjX2ZpbmlzaChzdHJ1Y3QNCj4gPj4+PiBydGVfbWVt cG9vbF9jYWNoZSAqbWMsIHVpbnQzMl90IG5iX2VsZW0pOyBpLmUuIF9zdGFydF8gd2lsbCByZXR1 cm4NCj4gPj4+PiB1c2VyIGEgcG9pbnRlciBpbnNpZGUgbXAtY2FjaGUgd2hlcmUgdG8gcHV0IGZy ZWUgZWxlbXMgYW5kIG1heA0KPiBudW1iZXINCj4gPj4+PiBvZiBzbG90cyB0aGF0IGNhbiBiZSBz YWZlbHkgZmlsbGVkLg0KPiA+Pj4+IF9maW5pc2hfIHdpbGwgdXBkYXRlIG1jLT5sZW4uDQo+ID4+ Pj4gQXMgYW4gZXhhbXBsZToNCj4gPj4+Pg0KPiA+Pj4+IC8qIGV4cGVjdCB0byBmcmVlIE4gbWJ1 ZnMgKi8NCj4gPj4+PiB1aW50MzJfdCBuID0gTjsNCj4gPj4+PiB2b2lkICoqcCA9IG1lbXBvb2xf Y2FjaGVfcHV0X3pjX3N0YXJ0KG1jLCAmbiwgLi4uKTsNCj4gPj4+Pg0KPiA+Pj4+IC8qIGZyZWUg dXAgdG8gbiBlbGVtcyAqLw0KPiA+Pj4+IGZvciAoaSA9IDA7IGkgIT0gbjsgaSsrKSB7DQo+ID4+ Pj4NCj4gPj4+PiAgICAgIC8qIGdldCBuZXh0IGZyZWUgbWJ1ZiBmcm9tIHNvbWV3aGVyZSAqLw0K PiA+Pj4+ICAgICAgbWIgPSBleHRyYWN0X2FuZF9wcmVmcmVlX21idWYoLi4uKTsNCj4gPj4+Pg0K PiA+Pj4+ICAgICAgLyogbm8gbW9yZSBmcmVlIG1idWZzIGZvciBub3cgKi8NCj4gPj4+PiAgICAg IGlmIChtYiA9PSBOVUxMKQ0KPiA+Pj4+ICAgICAgICAgYnJlYWs7DQo+ID4+Pj4NCj4gPj4+PiAg ICAgIHBbaV0gPSBtYjsNCj4gPj4+PiB9DQo+ID4+Pj4NCj4gPj4+PiAvKiBmaW5hbGl6ZSBaQyBw dXQsIHdpdGggX2lfIGZyZWVkIGVsZW1zICovDQo+ID4+Pj4gbWVtcG9vbF9jYWNoZV9wdXRfemNf ZmluaXNoKG1jLCBpKTsNCj4gPj4+Pg0KPiA+Pj4+IFRoYXQgd2F5LCBJIHRoaW5rIHdlIGNhbiBv dmVyY29tZSB0aGUgaXNzdWUgd2l0aCBpNDBlX3R4X2VudHJ5IHlvdQ0KPiA+Pj4+IG1lbnRpb25l ZCBhYm92ZS4gUGx1cyBpdCBtaWdodCBiZSB1c2VmdWwgaW4gb3RoZXIgc2ltaWxhciBwbGFjZXMu DQo+ID4+Pj4NCj4gPj4+PiBBbm90aGVyIGFsdGVybmF0aXZlIGlzIG9idmlvdXNseSB0byBzcGxp dCBpNDBlX3R4X2VudHJ5IGludG8gdHdvDQo+ID4+Pj4gc3RydWN0cyAob25lIGZvciBtYnVmLCBz ZWNvbmQgZm9yIGl0cyBtZXRhZGF0YSkgYW5kIGhhdmUgYQ0KPiBzZXBhcmF0ZQ0KPiA+Pj4+IGFy cmF5IGZvciBlYWNoIG9mIHRoZW0uDQo+ID4+Pj4gVGhvdWdoIHdpdGggdGhhdCBhcHByb2FjaCB3 ZSBuZWVkIHRvIG1ha2Ugc3VyZSBubyBwZXJmIGRyb3BzIHdpbGwNCj4gYmUNCj4gPj4+PiBpbnRy b2R1Y2VkLCBwbHVzIHByb2JhYmx5IG1vcmUgY29kZSBjaGFuZ2VzIHdpbGwgYmUgcmVxdWlyZWQu DQo+ID4+PiBDb21taXQgJzUxNzFiNGVlNmI2IiBhbHJlYWR5IGRvZXMgdGhpcyAoaW4gYSBkaWZm ZXJlbnQgd2F5KSwgYnV0DQo+IGp1c3QgZm9yDQo+ID4+IEFWWDUxMi4gVW5mb3J0dW5hdGVseSwg aXQgZG9lcyBub3QgcmVjb3JkIGFueSBwZXJmb3JtYW5jZQ0KPiBpbXByb3ZlbWVudHMuIFdlDQo+ ID4+IGNvdWxkIHBvcnQgdGhpcyB0byBBcm0gTkVPTiBhbmQgbG9vayBhdCB0aGUgcGVyZm9ybWFu Y2UuDQo+ID4NCj4gDQoNCg==