From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 79D33A0562; Fri, 3 Apr 2020 23:18:53 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 659D41C125; Fri, 3 Apr 2020 23:18:52 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by dpdk.org (Postfix) with ESMTP id C0CC21C124 for ; Fri, 3 Apr 2020 23:18:50 +0200 (CEST) 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 Date: Fri, 3 Apr 2020 23:18:39 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C60F40@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [PATCH v2 0/4] Introduce IF proxy library Thread-Index: AdYJ626bQRTN12DiSu6UkUK5TX5HVwACaZ0w References: <20200306164104.15528-1-aostruszka@marvell.com> <7886ce41-84eb-c7c0-fa4d-cd3a44825630@semihalf.com> <20334513.huCnfhLgOn@xps> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Jerin Jacob" , "Thomas Monjalon" , "Andrzej Ostruszka [C]" Cc: "David Marchand" , "dpdk-dev" , "Richardson, Bruce" , "Anatoly Burakov" Subject: Re: [dpdk-dev] [PATCH v2 0/4] Introduce IF proxy library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEpl cmluIEphY29iDQo+IFNlbnQ6IEZyaWRheSwgQXByaWwgMywgMjAyMCA5OjA5IFBNDQo+IA0KPiBP biBGcmksIEFwciAzLCAyMDIwIGF0IDEwOjQ5IFBNIFRob21hcyBNb25qYWxvbiA8dGhvbWFzQG1v bmphbG9uLm5ldD4NCj4gd3JvdGU6DQo+ID4NCj4gPiAwMi8wNC8yMDIwIDE1OjQ4LCBBbmRyemVq IE9zdHJ1c3prYSBbQ106DQo+ID4gPiBPbiAzLzI2LzIwIDY6NDIgUE0sIEFuZHJ6ZWogT3N0cnVz emthIHdyb3RlOg0KPiA+ID4gPiBPbiAzLzI1LzIwIDEyOjExIFBNLCBNb3J0ZW4gQnLDuHJ1cCB3 cm90ZToNCj4gPiA+IFsuLi5dDQo+ID4gPiA+PiBBbmQgSSBhbSBzdGlsbCBzdHJvbmdseSBvcHBv c2VkIHRvIHRoZSBjYWxsYmFjayBtZXRob2Q6DQo+ID4gPiA+DQo+ID4gPiA+IE5vdGVkIC0gaG93 ZXZlciBmb3Igbm93IEkgd291bGQgbGlrZSB0byBrZWVwIHRoZW0uICBJIGRvbid0IGhhdmUNCj4g bXVjaA0KPiA+ID4gPiBleHBlcmllbmNlIHdpdGggdGhpcyBsaWJyYXJ5IHNvIGlmIHRoZXkgcHJv dmUgdG8gYmUgaW5hZGVxdWF0ZQ0KPiB0aGVuIHdlDQo+ID4gPiA+IHdpbGwgcmVtb3ZlIHRoZW0u ICBSaWdodCBub3cgdGhleSBzZWVtIHRvIGFkZCBzb21lIGZsZXhpYmlsaXR5DQo+IHRoYXQgSSBs aWtlOg0KPiA+ID4gPiAtIGlmIHNvbWV0aGluZyBzaG91bGQgYmUgY2hhbmdlZCBnbG9iYWxseSBh bmQgb25jZSAoYW5kIGl0IGlzDQo+IHNhZmUgdG8gZG8NCj4gPiA+ID4gICBzbyEpIHRoZW4gaXQg Y2FuIGJlIGRvbmUgZnJvbSB0aGUgY2FsbGJhY2sNCj4gPiA+ID4gLSBpZiBzb21ldGhpbmcgY2Fu IGJlIHByZXBhcmVkIG9uY2UgYW5kIGNvbnN1bWVkIGxhdGVyIGJ5IGxjb3Jlcw0KPiB0aGVuIGl0 DQo+ID4gPiA+ICAgY2FuIGJlIGRvbmUgaW4gY2FsbGJhY2sgYW5kIHRoZSBjYWxsYmFjayByZXR1 cm5zIDAgc28gdGhhdA0KPiBldmVudCBpcw0KPiA+ID4gPiAgIHN0aWxsIHF1ZXVlZCBhbmQgbGNv cmVzICh1bmRlciBhc3N1bXB0aW9uIHRoYXQgcXVldWVzIGFyZSBwZXINCj4gbGNvcmUpDQo+ID4g PiA+ICAgcGljayB1cCB3aGF0IGhhcyBiZWVuIHByZXBhcmVkLg0KPiA+ID4NCj4gPiA+IE1vcnRl bg0KPiA+ID4NCj4gPiA+IEkndmUgYmVlbiB0aGlua2luZyBhYm91dCB0aGlzIGEgYml0IGFuZCB3 b3VsZCBsaWtlIHRvIGtub3cgeW91cg0KPiAoYW5kDQo+ID4gPiBvdGhlcnMpIG9waW5pb24gYWJv dXQgZm9sbG93aW5nIHByb3Bvc2VkIGVuaGFuY2VtZW50Lg0KPiA+ID4NCj4gPiA+IFJpZ2h0IG5v dywgaG93IHF1ZXVlcyBhcmUgdXNlZCBpcyBsZWZ0IHRvIHRoZSBhcHBsaWNhdGlvbiBkZWNpc2lv bg0KPiAocGVyDQo+ID4gPiBsY29yZSwgcGVyIHBvcnQsIC4uLikgLSBhbmQgSSBpbnRlbmQgdG8g a2VlcCBpdCB0aGF0IHdheSAtIGJ1dCB0aGV5DQo+IGFyZQ0KPiA+ID4gIm1hdGNoIGFsbCIuICBX aGF0IEkgbWVhbiBieSB0aGF0IGlzIHRoYXQgKHVubGlrZSBjYWxsYmFja3Mgd2hlcmUNCj4geW91 DQo+ID4gPiBoYXZlIHNlcGFyYXRlIHBlciBldmVudCB0eXBlKSBxdWV1ZSBoYXMgbm8gY2hhbmNl IHRvIGJlIHNlbGVjdGl2ZS4NCj4gPiA+DQo+ID4gPiBTbyBpZiBzb21lb25lIHdvdWxkIGxpa2Ug dG8gZ28gd2l0aCBxdWV1ZXMgb25seSB0aGV5IGhlIHdvdWxkIGhhdmUNCj4gdG8NCj4gPiA+IGNv b3JkaW5hdGUgYmV0d2VlbiBxdWV1ZXMgKG9yIHRoZWlyICJvd25lcnMiKSB3aGljaCBvbmUgZG9l cyB0aGUNCj4gPiA+IGhhbmRsaW5nIG9mIGFuIGV2ZW50IHRoYXQgc3VwcG9zZWRseSBzaG91bGQg YmUgaGFuZGxlZCBvbmx5IG9uY2UuDQo+ID4gPg0KPiA+ID4gTGV0J3MgdGFrZSB0aGlzIGZvcndh cmRpbmcgZXhhbXBsZSAtIHRoZSBxdWV1ZXMgYXJlIHBlciBsY29yZSBhbmQNCj4gZWFjaA0KPiA+ ID4gbGNvcmUga2VlcHMgaXRzIG93biBjb3B5IG9mIEFSUCB0YWJsZSAoaGFzaCkgc28gd2hlbiB0 aGUgY2hhbmdlIGlzDQo+ID4gPiBub3RpY2VkIHRoZSBldmVudCBpcyBxdWV1ZWQgdG8gYWxsIHJl Z2lzdGVyZWQgcXVldWUsIGVhY2ggbGNvcmUNCj4gdXBkYXRlcw0KPiA+ID4gaXRzIG93biBjb3B5 IGFuZCBldmVyeXRoaW5nIGlzIE9LLiAgSG93ZXZlciB0aGUgcm91dGluZyBpcyBnbG9iYWwNCj4g KGFuZA0KPiA+ID4gcmlnaHQgbm93IGlzIHVwZGF0ZWQgZnJvbSBjYWxsYmFjaykgYW5kIGlmIG5v IGNhbGxiYWNrIGlzIHVzZWQgZm9yDQo+IHRoYXQNCj4gPiA+IHRoZW4gdGhlIGV2ZW50IHdvdWxk IGJlIHF1ZXVlZCB0byBhbGwgbGNvcmVzIGFuZCBhcHBsaWNhdGlvbiB3b3VsZA0KPiBuZWVkDQo+ ID4gPiB0byBzZWxlY3QgdGhlIG9uZSB3aGljaCBkb2VzIHRoZSB1cGRhdGUuDQo+ID4gPg0KPiA+ ID4gV291bGQgdGhhdCBiZSBlYXNpZXIvYmV0dGVyIHRvIHJlZ2lzdGVyIHF1ZXVlIHRvZ2V0aGVy IHdpdGggYQ0KPiBiaXRtYXNrIG9mDQo+ID4gPiBldmVudCB0eXBlcyB0aGF0IGdpdmVuIHF1ZXVl IGlzIGFjY2VwdGluZz8gIFRoYW4gZHVyaW5nIHNldHVwIHBoYXNlDQo+ID4gPiBhcHBsaWNhdGlv biB3b3VsZCBzZWxlY3QganVzdCBvbmUgcXVldWUgdG8gaGFuZGxlICJnbG9iYWwiIGV2ZW50cw0K PiBhbmQNCj4gPiA+IHRoZSBsb2dpYyBvZiBldmVudCBoYW5kbGluZyBmb3IgbGNvcmVzIHNob3Vs ZCBiZSBzaW1wbGllci4NCj4gPiA+DQo+ID4gPiBMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluay4N Cj4gPg0KPiA+IEkgdGhpbmsgd2Ugd2FudCB0byBhdm9pZCBjb21wbGljYXRlIGRlc2lnbi4NCj4g PiBTbyBsZXQncyBjaG9vc2UgYmV0d2VlbiBjYWxsYmFjayBhbmQgbWVzc2FnZSBxdWV1ZS4NCj4g PiBJIHZvdGUgZm9yIG1lc3NhZ2UgcXVldWUgYmVjYXVzZSBpdCBjYW4gaGFuZGxlIGFueSBzaXR1 YXRpb24sDQo+ID4gYW5kIGl0IGFsbG93cyB0byBjb250cm9sIHRoZSBjb250ZXh0IG9mIHRoZSBl dmVudCBwcm9jZXNzaW5nLg0KPiANCj4gSU1PLCBpdCBzaG91bGQgYmUgbGVmdCB0byBhcHBsaWNh dGlvbiBkZWNpc2lvbiwgQXBwbGljYXRpb24gY2FuIHVzZQ0KPiBlaXRoZXIgY2FsbGJhY2sgb3IN Cj4gbWVzc2FnZSBxdWV1ZSBiYXNlZCBvbiB0aGVpciBkZXNpZ24gYW5kIEkgZG9uJ3QgdGhpbmss IERQREsgbmVlZHMgdG8NCj4gZW5mb3JjZSBjZXJ0YWluIG1vZGVsLg0KPiBPbiB0aGUgdXBzaWRl LCBHaXZpbmcgdHdvIG9wdGlvbnMsIHRoZSBhcHBsaWNhdGlvbiBjYW4gY2hvb3NlIHRoZSByaWdo dA0KPiBtb2RlbC4NCj4gVGhlIHNpbXBsZSB1c2UgY2FzZSBsaWtlIHVwZGF0aW5nIHRoZSBnbG9i YWwgcm91dGluZyB0YWJsZSwgVGhlDQo+IGNhbGxiYWNrIHNjaGVtZSB3b3VsZCBiZSBtb3JlIHRo YW4gZW5vdWdoLg0KPiBUaGUgZG93bnNpZGUgb2YgcHVzaGluZyB0aGUgYXJjaGl0ZWN0dXJlIHRv IG1lc3NhZ2UgcXVldWUgd291bGQNCj4gYmUgdGhhdCBhcHBsaWNhdGlvbiBlaXRoZXIgbmVlZCB0 byBjcmVhdGUgYWRkaXRpb25hbCBjb250cm9sIHRocmVhZCB0bw0KPiBwb2xsIG9yIGNhbGwgc2Vs ZWN0KCkNCj4gZ2V0IHRoZSBldmVudCBvciBpbiB3b3JzdCBjYXNlIGNoZWNrIHRoZSBtZXNzYWdl IHF1ZXVlIGVtcHRpbmVzcyBpbg0KPiBmYXN0cGF0aC4NCj4gU28gd2h5IHRvIGVuZm9yY2U/DQo+ IA0KPiBUaG91Z2h0cz8NCg0KQSBtZXNzYWdlIHF1ZXVlIHdvdWxkIG5vdCByZXF1aXJlIGFuIGFk ZGl0aW9uYWwgY29udHJvbCB0aHJlYWQuIEl0IHdvdWxkIHVzZSB0aGUgZXhpc3RpbmcgY29udHJv bCB0aHJlYWQgdGhhdCB0aGUgYXBwbGljYXRpb24gYWxyZWFkeSBoYXMuDQoNCkkgdGhpbmsgeW91 IGFyZSBtaXNzaW5nIGFuIGltcG9ydGFudCBwb2ludDoNCg0KVGhlIGFwcGxpY2F0aW9uIG5lZWRz IHRvIGhhbmRsZSBhbGwgY29udHJvbCBwbGFuZSBpbnRlcmFjdGlvbnMsIG5vdCBqdXN0IGNvbnRy b2wgcGxhbmUgaW50ZXJhY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGludGVyZmFjZSBwcm94eSBsaWJy YXJ5Lg0KDQpTbyB0aGUgYXBwbGljYXRpb24gYWxyZWFkeSBoYXMgKG9yIG5lZWRzIHRvIGFkZCkg bWVjaGFuaXNtcyBpbiBwbGFjZSBmb3IgdGhpcy4gRS5nLiBpZiBhIGNvbnRyb2wgcGxhbmUgZXZl bnQgKGZyb20gdGhlIGludGVyZmFjZSBwcm94eSBsaWJyYXJ5IG9yIHNvbWUgb3RoZXIgdHJpZ2dl cikgbmVlZHMgdG8gYmUgZGlzdHJpYnV0ZWQgYWNyb3NzIGEgc2luZ2xlIG9yIG11bHRpcGxlIGRh dGEgcGxhbmUgbGNvcmVzLCB0aGUgYXBwbGljYXRpb24gYWxyZWFkeSBoYXMgKG9yIG5lZWRzIHRv IGFkZCkgYSBtZWNoYW5pc20gZm9yIGRvaW5nIGl0LiBBZGRpbmcgYSBzcGVjaWZpYyBtZWNoYW5p c20gb25seSBpbiB0aGlzIGxpYnJhcnkgZG9lcyBub3QgaGVscCBhbGwgdGhlIG90aGVyIGNvbnRy b2wgcGxhbmUgaW50ZXJhY3Rpb25zIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBoYW5kbGUuIEFj dHVhbGx5IGl0IGRvZXMgdGhlIG9wcG9zaXRlOiBpdCByZXF1aXJlcyB0aGF0IHRoZSBhcHBsaWNh dGlvbiBoYW5kbGVzIGV2ZW50cyBmcm9tIHRoZSBpbnRlcmZhY2UgcHJveHkgbGlicmFyeSBpbiBh IHNwZWNpZmljIHdheSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSB3YXkgdGhlIGFwcGxpY2F0 aW9uIGFscmVhZHkgaGFuZGxlcyBvdGhlciBjb250cm9sIHBsYW5lIGV2ZW50cy4NCg0KU28gSSdt IGFsc28gdm90aW5nIGZvciBzaW1wbGljaXR5OiBBIHNpbmdsZSBldmVudCBxdWV1ZSwgbGVhdmlu ZyBpdCB1cCB0byB0aGUgYXBwbGljYXRpb24gaG93IHRvIGhhbmRsZSB0aGVzZSBldmVudHMuDQoN Cj4gPiBUaGUgb3RoZXIgcmVhc29uIGlzIHRoYXQgSSBiZWxpZXZlIHdlIG5lZWQgbWVzc2FnZSBx dWV1ZWluZyBmb3INCj4gPiBvdGhlciBwdXJwb3NlcyBpbiBEUERLIChleDogbXVsdGktcHJvY2Vz cywgdGVsZW1ldHJ5KS4NCj4gDQo+IEFzIGZhciBhcyBJIGtub3csIHRlbGVtZXRyeSBpcyB1c2lu ZyBMaW51eCBzb2NrZXQgZnJvIElQQywgSSBhbSBub3QNCj4gc3VyZQ0KPiB3aHkgZG8gd2UgbmVl ZCB0byBzdGFuZGFyZGl6ZSBtZXNzYWdlIHF1ZXVlIGluZnJhPyBCZWNhc3VlLCBlYWNoIHVzZQ0K PiBjYXNlIGlzIGRpZmZlcmVudC4NCg0KSSB0aGluayBUaG9tYXMgaXMgc3VnZ2VzdGluZyB0aGF0 IHdlIGNvbnNpZGVyIHRoZSBnZW5lcmljIGNhc2Ugb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY29u dHJvbCBwbGFuZSwgYXMgSSBkZXNjcmliZWQgYWJvdmUuIE5vdCBqdXN0IGludGVyYWN0aW9uIHdp dGggdGhlIGludGVyZmFjZSBwcm94eSBldmVudHMuDQoNCj4gPg0KPiA+IFlvdSBzdGFydCB0aGlu a2luZyBhYm91dCBjb21wbGV4IG1lc3NhZ2UgbWFuYWdlbWVudC4NCj4gPiBBbmQgSSBzdGFydCB0 aGlua2luZyBhYm91dCBvdGhlciB1c2FnZXMgb2YgbWVzc2FnZSBxdWV1ZWluZy4NCj4gPiBTbyBJ IHRoaW5rIGl0IGlzIHRoZSByaWdodCB0aW1lIHRvIGludHJvZHVjZSBhIGdlbmVyaWMgbWVzc2Fn aW5nIGluDQo+IERQREsuDQo+ID4gTm90ZTogdGhlIElQQyBydGVfbXAgc2hvdWxkIGJlIGJ1aWx0 IG9uIHRvcCBvZiBzdWNoIGdlbmVyaWMNCj4gbWVzc2FnaW5nLg0KPiA+DQo+ID4gSWYgeW91IGFn cmVlLCB3ZSBjYW4gc3RhcnQgYSBuZXcgZW1haWwgdGhyZWFkIHRvIGJldHRlciBkaXNjdXNzDQo+ ID4gdGhlIGdlbmVyaWMgbWVzc2FnaW5nIHN1Yi1zeXN0ZW0uDQoNCkkgYWdyZWUgdGhhdCBpdCBz aG91bGQgYmUgc2VwYXJhdGVkIGZyb20gdGhlIGludGVyZmFjZSBwcm94eSBsaWJyYXJ5Lg0KDQpB bmQgeWVzLCBEUERLIGlzIG1pc3NpbmcgYSBnZW5lcmljIGZyYW1ld29yayAtIG9yIGF0IGxlYXN0 IGEgImJlc3QgcHJhY3RpY2VzIiBkZXNjcmlwdGlvbiAtIGZvciBpbnRlcmFjdGlvbiBiZXR3ZWVu IHRoZSBjb250cm9sIHBsYW5lIGFuZCB0aGUgZGF0YSBwbGFuZS4gU28gZmFyLCBldmVyeSBEUERL IGFwcGxpY2F0aW9uIGRldmVsb3BlciBoYXMgdG8gY29tZSB1cCB3aXRoIGhpcyBvd24uDQoNCj4g PiBJIGRlc2NyaWJlIGhlcmUgdGhlIDMgcHJvcGVydGllcyBJIGhhdmUgaW4gbWluZDoNCj4gPg0K PiA+IDEvIE1lc3NhZ2UgcG9saWN5DQo+ID4gT25lIHZlcnkgaW1wb3J0YW50IHJ1bGUgaW4gRFBE SyBpcyB0byBsZXQgdGhlIGNvbnRyb2wgdG8gdGhlDQo+IGFwcGxpY2F0aW9uLg0KPiA+IFNvIHRo ZSBtZXNzYWdpbmcgcG9saWN5IG11c3QgYmUgbWFuYWdlZCBieSB0aGUgYXBwbGljYXRpb24gdmlh IERQREsNCj4gQVBJLg0KPiANCj4gRG8geW91IG1lYW4gc2VuZCgpIGFuZCByZWN2KCkgc2hvdWxk IGJlIHdyYXBwZWQgYXJvdW5kIERQREsgY2FsbD8NCj4gDQo+ID4NCj4gPiAyLyBNZXNzYWdlIHF1 ZXVlDQo+ID4gSXQgc2VlbXMgd2Ugc2hvdWxkIHJlbHkgb24gWmVyb01RLiBIZXJlIGlzIHdoeToN Cj4gPiBodHRwOi8vemd1aWRlLnplcm9tcS5vcmcvcGFnZTphbGwjV2h5LVdlLU5lZWRlZC1aZXJv TVENCj4gDQo+IElNTywgWmVyb01RIHVzZWQgZm9yIElQQyBvdmVyIG5ldHdvcmsgZXRjLiBJbiB0 aGlzIGNhc2UsIHRoZSBwdXJwb3NlIGlzDQo+IHRvIHBhc3MgdGhlIE5ldGxpbmsgbWVzc2FnZSBJ TiBUSEUgU0FNRSBTWVNURU0gdG8gYXBwbGljYXRpb24uDQo+IERvIHlvdSBuZWVkIGV4dGVybmFs IGxpYnJhcnkgZGVwZW5kZW5jeT8gT24gdGhlIHNhbWUgc3lzdGVtIG9yDQo+IG11bHRpcHJvY2Vz cyBhcHBsaWNhdGlvbiwgb3VyIHJ0ZV9yaW5nIHdvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2guDQo+ IFJpZ2h0Pw0KPiBJZiBub3QsIHBsZWFzZSBlbnVtZXJhdGUgdGhlIHVzZSBjYXNlLg0KPiANCj4g Pg0KPiA+IDMvIE1lc3NhZ2UgZm9ybWF0DQo+ID4gSSBhbSBub3Qgc3VyZSB3aGV0aGVyIHdlIGNh biBtYW5hZ2Ugd2l0aCAic2ltcGxlIHN0cmluZ3MiLCBUTFYsDQo+ID4gb3Igc2hvdWxkIHdlIHVz ZSBzb21ldGhpbmcgbW9yZSBjb21wbGV4IGxpa2UgcHJvdG9idWY/DQoNCkxlYW4gYW5kIG1lYW4g aXMgdGhlIHdheSB0byBnby4gQSBiaW5hcnkgZm9ybWF0LCBwbGVhc2UuIE5vIG1vcmUgSlNPTiBv ciBzaW1pbGFyIGJsb2F0ZWQgZW5jb2RpbmchDQoNCj4gDQo+IEluIHRoaXMgdXNlIGNhc2UsIHdl IGFyZSByZWx5aW5nIHRoZSBOZXRsaW5rIG1lc3NhZ2UgdG8gYXBwbGljYXRpb24gYXQNCj4gbGVh c3QNCj4gaW4gTGludXggY2FzZS4gSSB0aGluayB0aGUgbWVzc2FnZSBzaG91bGQgYmUgc2ltaWxh ciB0byBOZXRsaW5rIG1lc3NhZ2UNCj4gYW5kIGdpdmUNCj4gcHJvdmlzaW9uIGZvciBvdGhlciBP UydlcyBzdWNoIGFzIHNjaGVtZS4NCj4gDQo+IFdoeSByZWludmVudCB0aGUgd2hlZWw/DQoNCg==