From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 052FC1AFF for ; Mon, 24 Sep 2018 12:52:02 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Sep 2018 03:52:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,297,1534834800"; d="scan'208";a="259759050" Received: from irsmsx154.ger.corp.intel.com ([163.33.192.96]) by orsmga005.jf.intel.com with ESMTP; 24 Sep 2018 03:51:59 -0700 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.54]) by IRSMSX154.ger.corp.intel.com ([169.254.12.187]) with mapi id 14.03.0319.002; Mon, 24 Sep 2018 11:51:58 +0100 From: "Ananyev, Konstantin" To: Akhil Goyal , Jerin Jacob , "Joseph, Anoob" CC: "dev@dpdk.org" , "Awal, Mohammad Abdul" , "Doherty, Declan" , Narayana Prasad , Hemant Agrawal , "shreyansh.jain@nxp.com" Thread-Topic: [dpdk-dev] [RFC] ipsec: new library for IPsec data-path processing Thread-Index: AQHUO8sQ1vNhPIIy2kCq+ieD7nPPdqTefpOAgABfO7CAAuY7AIALGZsggAAAuDCABMYgAIABKxCAgAHAZSCAAYwIoIADN3IAgAX719A= Date: Mon, 24 Sep 2018 10:51:57 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258EA95A705@irsmsx105.ger.corp.intel.com> References: <1535129598-27301-1-git-send-email-konstantin.ananyev@intel.com> <358d1b6c-26f2-b125-07a4-cfb1c0e2a57b@caviumnetworks.com> <2601191342CEEE43887BDE71AB977258EA95089D@irsmsx105.ger.corp.intel.com> <475cf471-b46a-671a-5485-0042c652430c@caviumnetworks.com> <2601191342CEEE43887BDE71AB977258EA954BAD@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258EA954E9D@irsmsx105.ger.corp.intel.com> <20180916105640.GA4803@jerin> <2601191342CEEE43887BDE71AB977258EA95724C@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258EA957E3A@irsmsx105.ger.corp.intel.com> In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDBkN2Q2MDAtZjljYi00ZjljLWI3ODMtZWM2OGMxMDQzOGFkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiV25KaGsxN3ZuekFWWEJmcFVYU2JIRCszMmlaa1lhbEpOdUU1YlVFV1BNYXlHdlwvNWpZcnVJY2UxclpyOFdtelcifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC] ipsec: new library for IPsec data-path processing 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: , X-List-Received-Date: Mon, 24 Sep 2018 10:52:03 -0000 SGkgQWtoaWwsDQoNCj4gDQo+IEhpIEtvbnN0YW50aW4sDQo+IA0KPiBPbiA5LzE4LzIwMTggNjox MiBQTSwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPj4+IEkgYW0gbm90IHNheWluZyB0 aGlzIHNob3VsZCBiZSB0aGUgT05MWSB3YXkgdG8gZG8gYXMgaXQgZG9lcyBub3Qgd29yaw0KPiA+ Pj4gdmVyeSB3ZWxsIHdpdGggbm9uIE5QVS9GUEdBIGNsYXNzIG9mIFNvQy4NCj4gPj4+DQo+ID4+ PiBTbyBob3cgYWJvdXQgbWFraW5nIHRoZSBwcm9wb3NlZCBJUFNlYyBsaWJyYXJ5IGFzIHBsdWdp bi9kcml2ZXIgdG8NCj4gPj4+IHJ0ZV9zZWN1cml0eS4NCj4gPj4gQXMgSSBtZW50aW9uZWQgYWJv dmUsIEkgZG9uJ3QgdGhpbmsgdGhhdCBwdXNoaW5nIHdob2xlIElQU2VjIGRhdGEtcGF0aCBpbnRv IHJ0ZV9zZWN1cml0eQ0KPiA+PiBpcyB0aGUgYmVzdCBwb3NzaWJsZSBhcHByb2FjaC4NCj4gPj4g VGhvdWdoIEkgcHJvYmFibHkgdW5kZXJzdGFuZCB5b3VyIGNvbmNlcm46DQo+ID4+IEluIFJGQyBj b2RlIHdlIGFsd2F5cyBkbyB3aG9sZSBwcmVwYXJlL3Byb2Nlc3MgaW4gU1cgKGF0dGFjaC9yZW1v dmUgRVNQIGhlYWRlcnMvdHJhaWxlcnMsIHNvIHBhZGRpbmdzIGV0Yy4pLA0KPiA+PiBpLmUuIHJp Z2h0IG5vdyBvbmx5IGRldmljZSB0eXBlczogUlRFX1NFQ1VSSVRZX0FDVElPTl9UWVBFX05PTkUg YW5kIFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJTkVfQ1JZUFRPIGFyZSBjb3ZlcmVkLg0K PiA+PiBUaG91Z2ggdGhlcmUgYXJlIGRldmljZXMgd2hlcmUgbW9zdCBvZiBwcmVwYXJlL3Byb2Nl c3MgY2FuIGJlIGRvbmUgaW4gSFcNCj4gPj4gKFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJ TkVfUFJPVE9DT0wvUlRFX1NFQ1VSSVRZX0FDVElPTl9UWVBFX0xPT0tBU0lERV9QUk9UT0NPTCks DQo+ID4+IHBsdXMgaW4gZnV0dXJlIGNvdWxkIGJlIGRldmljZXMgd2hlcmUgcHJlcGFyZS9wcm9j ZXNzIHdvdWxkIGJlIHNwbGl0IGJldHdlZW4gSFcvU1cgaW4gYSBjdXN0b20gd2F5Lg0KPiA+PiBJ cyB0aGF0IHNvPw0KPiA+PiBUbyBhZGRyZXNzIHRoYXQgaXNzdWUgSSBzdXBwb3NlIHdlIGNhbiBk bzoNCj4gPj4gMS4gQWRkIHN1cHBvcnQgZm9yIFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJ TkVfUFJPVE9DT0wgYW5kIFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9MT09LQVNJREVfUFJPVE9D T0wNCj4gPj4gICAgICBzZWN1cml0eSBkZXZpY2VzIGludG8gaXBzZWMuDQo+ID4+ICAgICAgV2Ug cGxhbm5lZCB0byBkbyBpdCBhbnl3YXksIGp1c3QgZG9uJ3QgaGF2ZSBpdCBkb25lIHlldC4NCj4g Pj4gMi4gRm9yIGN1c3RvbSBjYXNlIC0gaW50cm9kdWNlIFJURV9TRUNVUklUWV9BQ1RJT05fVFlQ RV9JTkxJTkVfQ1VTVE9NIGFuZA0KPiBSVEVfU0VDVVJJVFlfQUNUSU9OX1RZUEVfTE9PS0FTSURF X0NVU1RPTQ0KPiA+PiAgICAgIGFuZCBhZGQgaW50byBydGVfc2VjdXJpdHlfb3BzICAgbmV3IGZ1 bmN0aW9uczoNCj4gPj4gICAgICB1aW50MTZfdCBsb29rYXNpZGVfcHJlcGFyZShzdHJ1Y3QgcnRl X3NlY3VyaXR5X3Nlc3Npb24gKnNlc3MsIHN0cnVjdCBydGVfbWJ1ZiAqbWJbXSwgc3RydWN0IHN0 cnVjdCBydGVfY3J5cHRvX29wICpjb3BbXSwgdWludDE2X3QNCj4gbnVtKTsNCj4gPj4gICAgICB1 aW50MTZfdCBsb29rYXNpZGVfcHJvY2VzcyhzdHJ1Y3QgcnRlX3NlY3VyaXR5X3Nlc3Npb24gKnNl c3MsIHN0cnVjdCBydGVfbWJ1ZiAqbWJbXSwgc3RydWN0IHN0cnVjdCBydGVfY3J5cHRvX29wICpj b3BbXSwgdWludDE2X3QNCj4gbnVtKTsNCj4gPj4gICAgICB1aW50MTZfdCBpbmxpbmVfcHJvY2Vz cyhzdHJ1Y3QgcnRlX3NlY3VyaXR5X3Nlc3Npb24gKnNlc3MsIHN0cnVjdCBydGVfbWJ1ZiAqbWJb XSwgc3RydWN0IHN0cnVjdCBydGVfY3J5cHRvX29wICpjb3BbXSwgdWludDE2X3QgbnVtKTsNCj4g Pj4gICAgICBTbyBmb3IgY3VzdG9tIEhXLCBQTUQgY2FuIG92ZXJ3cml0ZSBub3JtYWwgcHJlcGFy ZS9wcm9jZXNzIGJlaGF2aW9yLg0KPiA+Pg0KPiA+IEFjdHVhbGx5ICBhZnRlciBhbm90aGVyIHRo b3VnaHQ6DQo+ID4gTXkgcHJldmlvdXMgYXNzdW1wdGlvbiAocHJvYmFibHkgd3Jvbmcgb25lKSB3 YXMgdGhhdCBmb3IgYm90aA0KPiA+IFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJTkVfUFJP VE9DT0wgYW5kIFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9MT09LQVNJREVfUFJPVE9DT0wNCj4g PiBkZXZpY2VzIGNhbiBkbyB3aG9sZSBkYXRhLXBhdGggaXBzZWMgcHJvY2Vzc2luZyB0b3RhbGx5 IGluIEhXIC0gbm8gbmVlZCBmb3IgYW55IFNXIHN1cHBvcnQgKGV4Y2VwdCBpbml0L2NvbmZpZyku DQo+ID4gTm93IGxvb2tpbmcgYXQgZHBhYSBhbmQgZHBhYTIgZGV2aWNlcyAodGhlIG9ubHkgb25l cyB0aGF0IHN1cHBvcnRzIFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9MT09LQVNJREVfUFJPVE9D T0wgcmlnaHQgbm93KQ0KPiA+IEkgYW0gbm90IHNvIHN1cmUgYWJvdXQgdGhhdCAtIGxvb2tzIGxp a2Ugc29tZSBTVyBoZWxwIG1pZ2h0IGJlIG5lZWRlZCBmb3IgcmVwbGF5IHdpbmRvdyB1cGRhdGVz LCBldGMuDQo+ID4gSGVtYW50LCBTaHJleWFuc2ggLSBjYW4geW91IGd1eXMgY29uZmlybSB3aGF0 IGlzIGV4cGVjdGVkIGZyb20gUlRFX1NFQ1VSSVRZX0FDVElPTl9UWVBFX0xPT0tBU0lERV9QUk9U T0NPTCBkZXZpY2VzDQo+ID4gKEhXL1NXIHJvc2VzL3Jlc3BvbnNpYmlsaXRpZXMpPw0KPiA+IEFi b3V0IFJURV9TRUNVUklUWV9BQ1RJT05fVFlQRV9JTkxJTkVfUFJPVE9DT0wgIC0gSSBkaWRuJ3Qg ZmluZCBhbnkgZHJpdmVyIGluc2lkZSBEUERLIHNvdXJjZSB0cmVlIHRoYXQgZG9lcyBzdXBwb3J0 IHRoYXQNCj4gY2FwYWJpbGl0eS4NCj4gPiBTbyBteSBxdWVzdGlvbiBpcyB0aGVyZSBhbnkgZGV2 aWNlcy9kcml2ZXJzIHRoYXQgZG8gc3VwcG9ydCBpdD8NCj4gPiBJZiBzbywgd2hlcmUgY291bGQg c291cmNlIGNvZGUgY291bGQgYmUgZm91bmQsIGFuZCB3aGF0IGFyZSBIVy9TVyByb2xlcy9yZXNw b25zaWJpbGl0aWVzIGZvciB0aGF0IHR5cGUgb2YgZGV2aWNlcz8NCj4gPiBLb25zdGFudGluDQo+ ID4NCj4gPg0KPiBJbiBjYXNlIG9mIExPT0tBU0lERSwgdGhlIHByb3RvY29sIGVycm9ycyBsaWtl IGFudGlyZXBsYXkgYW5kIHNlcXVlbmNlDQo+IG51bWJlciBvdmVyZmxvdyBzaGFsbCBiZSB0aGUg cmVzcG9uc2liaWxpdHkgb2YgZWl0aGVyIFBNRCBvciB0aGUgSFcuDQo+IEl0IHNob3VsZCBub3Rp ZnkgdGhlIGFwcGxpY2F0aW9uIHRoYXQgdGhlIGVycm9yIGhhcyBvY2N1cnJlZCBhbmQNCj4gYXBw bGljYXRpb24gbmVlZCB0byBkZWNpZGUgd2hhdCBpdCBuZWVkcyB0byBkZWNpZGUgbmV4dC4NCg0K T2ssIHRoYW5rcyBmb3IgY2xhcmlmaWNhdGlvbi4NCkp1c3QgdG8gY29uZmlybSAtICBkbyB3ZSBo YXZlIGEgZGVmaW5lZCB3YXkgZm9yIGl0IHJpZ2h0IG5vdyBpbiBydGVfc2VjdXJpdHk/DQoNCj4g DQo+IEFzIEplcmluIHNhaWQgaW4gb3RoZXIgZW1haWwsIHRoZSByb2xlcy9yZXNwb25zaWJpbGl0 eSBvZiB0aGUgUE1EIGluDQo+IGNhc2Ugb2YgaW5saW5lIHByb3RvIGFuZCBsb29rYXNpZGUgY2Fz ZSwgbm90aGluZyBtdWNoIGlzIHJlcXVpcmVkIGZyb20NCj4gdGhlIGFwcGxpY2F0aW9uIHRvIGRv IGFueSBwcm9jZXNzaW5nIGZvciBpcHNlYy4NCj4gDQo+IEFzIHBlciBteSB1bmRlcnN0YW5kaW5n LCB0aGUgcHJvcG9zZWQgUkZDIGlzIHRvIG1ha2UgdGhlIGFwcGxpY2F0aW9uDQo+IGNvZGUgY2xl YW5lciBmb3LCoCB0aGUgcHJvdG9jb2wgcHJvY2Vzc2luZy4NCg0KWWVzLCB1bmlmaWVkIGRhdGEt cGF0aCBBUEkgaXMgZGVmaW5pdGVseSBvbmUgb2YgdGhlIG1haW4gZ29hbHMuIA0KDQo+IDEuIEZv ciBpbmxpbmUgcHJvdG8gYW5kIGxvb2thc2lkZSB0aGVyZSB3b24ndCBiZSBhbnkgY2hhbmdlIGlu IHRoZSBkYXRhDQo+IHBhdGguIFRoZSBtYWluIGNoYW5nZXMgd291bGQgYmUgaW4gdGhlIGNvbnRy b2wgcGF0aC4NCg0KWWVzLCBmcm9tIHlvdXIgYW5kIEplcmluIGRlc2NyaXB0aW9uIGRhdGEtcGF0 aCBwcm9jZXNzaW5nIGxvb2tzDQpyZWFsbHkgbGlnaHR3ZWlnaHQgZm9yIHRoZXNlIGNhc2VzLg0K Rm9yIGNvbnRyb2wgcGF0aCAtIHRoZXJlIGlzIG5vIG11Y2ggY2hhbmdlLCB1c2VyIHdvdWxkIGhh dmUgdG8gY2FsbCANCnJ0ZV9pcHNlY19zYV9pbml0KCkgdG8gc3RhcnQgdXNpbmcgZ2l2ZW4gU0Eu DQoNCj4gDQo+IDIuIEJ1dCBpbiBjYXNlIG9mIGlubGluZSBjcnlwdG8gYW5kIFJURV9TRUNVUklU WV9BQ1RJT05fVFlQRV9OT05FLCB0aGUNCj4gcHJvdG9jb2wgcHJvY2Vzc2luZyB3aWxsIGJlIGRv bmUgaW4gdGhlIGxpYnJhcnkgYW5kIHRoZXJlIHdvdWxkIGJlDQo+IGNoYW5nZXMgaW4gYm90aCBj b250cm9sIGFuZCBkYXRhIHBhdGguDQoNClllcy4NCg0KPiANCj4gQXMgdGhlIHJ0ZV9zZWN1cml0 eSBjdXJyZW50bHkgcHJvdmlkZSBnZW5lcmljIEFQSXMgZm9yIGNvbnRyb2wgcGF0aCBvbmx5DQo+ IGFuZCB3ZSBtYXkgaGF2ZSBpdCBleHBhbmRlZCBmb3IgcHJvdG9jb2wgc3BlY2lmaWMgZGF0YXBh dGggcHJvY2Vzc2luZy4NCj4gU28gZm9yIHRoZSBhcHBsaWNhdGlvbiwgd29ya2luZyB3aXRoIGlu bGluZSBjcnlwdG8vIGlubGluZSBwcm90byB3b3VsZA0KPiBiZSBxdWl0ZSBzaW1pbGFyIGFuZCBp dCB3b24ndCBuZWVkIHRvIGRvIHNvbWUgZXh0cmEgcHJvY2Vzc2luZyBmb3INCj4gaW5saW5lIGNy eXB0by4NCj4gU2FtZSB3aWxsIGJlIHRoZSBjYXNlIGZvciBSVEVfU0VDVVJJVFlfQUNUSU9OX1RZ UEVfTk9ORSBhbmQgbG9va2FzaWRlLg0KPiANCj4gV2UgbWF5IGhhdmUgdGhlIHByb3RvY29sIHNw ZWNpZmljIEFQSXMgcmVzaWRlIGluc2lkZSB0aGUgcnRlX3NlY3VyaXR5DQo+IGFuZCB3ZSBjYW4g dXNlIGVpdGhlciB0aGUgY3J5cHRvL25ldCBQTUQgdW5kZXJuZWF0aCBpdC4NCg0KQXMgSSB1bmRl cnN0YW5kLCB5b3Ugc3VnZ2VzdCBpbnN0ZWFkIG9mIGludHJvZHVjaW5nIG5ldyBsaWJyYXJ5LA0K aW50cm9kdWNlIHNpbWlsYXIgZGF0YS1wYXRoIGZ1bmN0aW9ucyBpbnNpZGUgcnRlX3NlY3VyaXR5 Lg0KUHJvYmFibHkgc29tZXRoaW5nIGxpa2U6DQoNCnVpbnQxNl90IHJ0ZV9zZWN1cml0eV9wcm9j ZXNzKHN0cnVjdCBydGVfc2VjdXJpdHlfc2Vzc2lvbiAqcywgc3RydWN0IHJ0ZV9tYnVmICptYltd LCB1aW50MTZfdCBudW0pOw0KdWludDE2X3QgcnRlX3NlY3VyaXR5X2NyeXB0b19wcmVwYXJlKHN0 cnVjdCBydGVfaXBzZWNfc2EgKnNhLCBzdHJ1Y3QgcnRlX21idWYgKm1iW10sIA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBydGVfY3J5cHRvX29wICpjb3BbXSwgdWludDE2X3QgbnVtKTsNCi4uLg0KSXMg dGhhdCBjb3JyZWN0Pw0KDQpJIHRob3VnaHQgYWJvdXQgdGhhdCBhcHByb2FjaCB0b28sIGFuZCBp bmRlZWQgZnJvbSBvbmUgc2lkZSBpdCBsb29rcyBjbGVhbmVyIGFuZCBlYXNpZXINCnRvIGN1c3Rv bWl6ZSAtIGVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zIHdvdWxkIGp1c3QgY2FsbCByZWxhdGVkIGZ1 bmN0aW9uIGluc2lkZSBydGVfc2VjdXJpdHlfb3BzLg0KVGhlIHByb2JsZW0gd2l0aCB0aGF0IGFw cHJvYWNoIC0gaXQgd291bGQgbWVhbiB0aGF0IGVhY2ggU0Egd291bGQgYmUgYWJsZSB0byB3b3Jr IHdpdGggb25lDQpkZXZpY2Ugb25seS4NClNvIGlmIHNvbWVvbmUgbmVlZHMgYW4gU0EgdGhhdCBj b3VsZCBiZSBwcm9jZXNzZWQgYnkgbXVsdGlwbGUgY29yZXMgYW5kIG11bHRpcGxlIGNyeXB0by1k ZXZpY2VzDQppbiBwYXJhbGxlbCBzdWNoIGFwcHJvYWNoIHdvdWxkbuKAmXQgZml0Lg0KVGhhdCB3 YXMgdGhlIG1haW4gcmVhc29uIHRvIGtlZXAgcnRlX3NlY3VyaXR5IGFzIGl0IGlzIHJpZ2h0IG5v dyBhbmQgZ28gYWhlYWQgd2l0aCBuZXcgbGlicmFyeS4NCk9uZSB0aGluZyB0aGF0IHdvcnJpZXMg bWUgLSAgZG8gd2UgbmVlZCBhIHdheSB0byBzaGFyZSBTUU4gYW5kIHJlcGxheSB3aW5kb3cgaW5m b3JtYXRpb24NCmJldHdlZW4gcnRlX3NlY3VyaXR5IGFuZCB1cHBlciBsYXllciAocnRlX2lwc2Vj KT8NCklmICdubycsIHRoZW4gb2ssIGlmICd5ZXMnIHRoZW4gcHJvYmFibHkgd2UgbmVlZCB0byBk aXNjdXNzIGhvdyB0byBkbyBpdCBub3c/DQoNCj4gDQo+IE1vdmluZyB0aGUgU1BEIGxvb2t1cCBp bnNpZGUgdGhlIGlwc2VjIGxpYnJhcnkgbWF5IG5vdCBiZSBiZW5lZmljaWFsIGluDQo+IHRlcm1z IG9mIHBlcmZvcm1hbmNlIGFzIHdlbGwgYXMgY29uZmlndXJhYmlsaXR5IGZvciB0aGUgYXBwbGlj YXRpb24uIEl0DQo+IHdvdWxkIGp1c3QgYmUgYmFzZWQgb24gdGhlIHJzcyBoYXNoLg0KDQpJZiBT UEQgYyBiZSBkb25lIGNvbXBsZXRlbHkgaW4gSFcgLSB0aGF0J3MgZmluZS4NCkkganVzdCBkb24n dCB0aGluayB0aGVyZSBhcmUgbWFueSBkZXZpY2VzIHRoZXNlIGRheXMgdGhhdCB3b3VsZG4ndCBy ZXF1aXJlDQphbnkgU1cgaW50ZXJ2ZW50aW9uIGZvciBTUEQgbG9va3VwLCBhbmQgSSB0aGluayBS U1Mgd291bGQgYmUgZW5vdWdoIGhlcmUgDQoodGhvdWdoIGZsb3ctZGlyZWN0b3IgbWlnaHQgYmUp Lg0KQXMgSSBzYWlkIGJlZm9yZSwgbXkgdGhvdWdodCB3YXMgdGhhdCBtaWdodCBiZSBBQ0wgbGli cmFyeSB3b3VsZCBiZSBlbm91Z2gNCmhlcmUgYXMgU1cgZmFsbGJhY2ssIGJ1dCBpZiBwZW9wbGUg dGhpbmsgd2UgbmVlZCBhIHNwZWNpYWwgQVBJL2ltcGxlbWVudGF0aW9uDQpmb3IgaXQgLSB0aGF0 J3Mgb2sgYnkgbWUgdG9vLg0KS29uc3RhbnRpbg0K