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 CFE63A3160 for ; Fri, 11 Oct 2019 10:02:00 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3EFFA1E993; Fri, 11 Oct 2019 10:02:00 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by dpdk.org (Postfix) with ESMTP id 947711E985 for ; Fri, 11 Oct 2019 10:01:58 +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, 11 Oct 2019 10:01:58 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C60B75@smartserver.smartshare.dk> In-Reply-To: <2601191342CEEE43887BDE71AB9772580191975172@irsmsx105.ger.corp.intel.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] packet data access bug in bpf and pdump libs Thread-Index: AdV+kTXN2BQ6Vc4vROaqRZzQvdouSAAAKAywAAYU1AAAACSpAAAASjUAAAA4BwAABFDGAAAdg3wAABKc9zAAIJDBUA== References: <98CBD80474FA8B44BF855DF32C47DC35C60B67@smartserver.smartshare.dk> <2601191342CEEE43887BDE71AB977258019197431F@irsmsx105.ger.corp.intel.com> <20191009080218.3711bef3@hermes.lan> <98CBD80474FA8B44BF855DF32C47DC35C60B69@smartserver.smartshare.dk> <20191009081442.3e7f1af4@hermes.lan> <98CBD80474FA8B44BF855DF32C47DC35C60B6A@smartserver.smartshare.dk> <20191009102432.1199e792@hermes.lan> <98CBD80474FA8B44BF855DF32C47DC35C60B6B@smartserver.smartshare.dk> <2601191342CEEE43887BDE71AB9772580191975172@irsmsx105.ger.corp.intel.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Ananyev, Konstantin" , "Stephen Hemminger" Cc: "dpdk-dev" , "Jerin Jacob" Subject: Re: [dpdk-dev] packet data access bug in bpf and pdump libs 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91 bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEFuYW55ZXYsDQo+IEtvbnN0YW50aW4NCj4gU2Vu dDogVGh1cnNkYXksIE9jdG9iZXIgMTAsIDIwMTkgNTozNyBQTQ0KPiANCj4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE1vcnRlbiBCcsO4cnVwIFttYWlsdG86bWJAc21h cnRzaGFyZXN5c3RlbXMuY29tXQ0KPiA+IFNlbnQ6IFRodXJzZGF5LCBPY3RvYmVyIDEwLCAyMDE5 IDg6MzAgQU0NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZy b206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgU3RlcGhl bg0KPiBIZW1taW5nZXINCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciA5LCAyMDE5IDc6 MjUgUE0NCj4gPiA+DQo+ID4gPiBPbiBXZWQsIDkgT2N0IDIwMTkgMTc6MjA6NTggKzAyMDANCj4g PiA+IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+IHdyb3RlOg0KPiA+ ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206 IFN0ZXBoZW4gSGVtbWluZ2VyIFttYWlsdG86c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmddDQo+ ID4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDksIDIwMTkgNToxNSBQTQ0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gT24gV2VkLCA5IE9jdCAyMDE5IDE3OjA2OjI0ICswMjAwDQo+ID4gPiA+ ID4gTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4gd3JvdGU6DQo+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4g PiA+ID4gRnJvbTogU3RlcGhlbiBIZW1taW5nZXIgW21haWx0bzpzdGVwaGVuQG5ldHdvcmtwbHVt YmVyLm9yZ10NCj4gPiA+ID4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDksIDIwMTkg NTowMiBQTQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBPbiBXZWQsIDkgT2N0IDIwMTkg MTE6MTE6NDYgKzAwMDANCj4gPiA+ID4gPiA+ID4gIkFuYW55ZXYsIEtvbnN0YW50aW4iIDxrb25z dGFudGluLmFuYW55ZXZAaW50ZWwuY29tPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiBIaSBNb3J0ZW4sDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiA+ID4gPiBIaSBLb25zdGFudGluIGFuZCBTdGVwaGVuLA0KPiA+ID4gPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IEkganVzdCBub3RpY2VkIHRoZSBzYW1lIGJ1ZyBpbiB5 b3VyIGJwZiBhbmQgcGNhcA0KPiBsaWJyYXJpZXM6DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+ID4gWW91IGFyZSB1c2luZyBydGVfcGt0bWJ1Zl9tdG9kKCksIGJ1dCBzaG91bGQg YmUgdXNpbmcNCj4gPiA+ID4gPiA+ID4gcnRlX3BrdG1idWZfcmVhZCgpLiBPdGhlcndpc2UgeW91 IGNhbm5vdCByZWFkIGRhdGEgYWNyb3NzDQo+ID4gPiBtdWx0aXBsZQ0KPiA+ID4gPiA+ID4gPiBz ZWdtZW50cy4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IEluIHBsYWluIGRhdGEg YnVmZmVyIG1vZGUgZXhwZWN0ZWQgaW5wdXQgZm9yIEJQRiBwcm9ncmFtDQo+IGlzDQo+ID4gPiBz dGFydA0KPiA+ID4gPiA+IG9mDQo+ID4gPiA+ID4gPiA+IGZpcnN0IHNlZ21lbnQgcGFja2V0IGRh dGEuDQo+ID4gPiA+ID4gPiA+ID4gT3RoZXIgc2VnbWVudHMgYXJlIHNpbXBseSBub3QgYXZhaWxh YmxlIHRvIEJQRiBwcm9ncmFtIGluDQo+ID4gPiB0aGF0DQo+ID4gPiA+ID4gbW9kZS4NCj4gPiA+ ID4gPiA+ID4gPiBBRkFJSywgY0JQRiB1c2VzIHRoZSBzYW1lIG1vZGVsLg0KPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g PiA+IE1lZCB2ZW5saWcgaGlsc2VuIC8ga2luZCByZWdhcmRzDQo+ID4gPiA+ID4gPiA+ID4gPiAt IE1vcnRlbiBCcsO4cnVwDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gRm9yIHBhY2tldCBjYXB0dXJlLCB0aGUgQlBGIHByb2dyYW0gaXMgb25seSBhbGxvd2Vk IHRvIGxvb2sNCj4gYXQNCj4gPiA+ID4gPiBmaXJzdA0KPiA+ID4gPiA+ID4gPiBzZWdtZW50Lg0K PiA+ID4gPiA+ID4gPiBwa3RtYnVmX3JlYWQgaXMgZXhwZW5zaXZlIGFuZCBjYW4gY2F1c2UgYSBj b3B5Lg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEl0IGlzIG9ubHkgZXhwZW5zaXZlIGlmIGdv aW5nIGJleW9uZCB0aGUgZmlyc3Qgc2VnbWVudDoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBz dGF0aWMgaW5saW5lIGNvbnN0IHZvaWQgKnJ0ZV9wa3RtYnVmX3JlYWQoY29uc3Qgc3RydWN0DQo+ IHJ0ZV9tYnVmDQo+ID4gPiAqbSwNCj4gPiA+ID4gPiA+IAl1aW50MzJfdCBvZmYsIHVpbnQzMl90 IGxlbiwgdm9pZCAqYnVmKQ0KPiA+ID4gPiA+ID4gew0KPiA+ID4gPiA+ID4gCWlmIChsaWtlbHko b2ZmICsgbGVuIDw9IHJ0ZV9wa3RtYnVmX2RhdGFfbGVuKG0pKSkNCj4gPiA+ID4gPiA+IAkJcmV0 dXJuIHJ0ZV9wa3RtYnVmX210b2Rfb2Zmc2V0KG0sIGNoYXIgKiwgb2ZmKTsNCj4gPiA+ID4gPiA+ IAllbHNlDQo+ID4gPiA+ID4gPiAJCXJldHVybiBfX3J0ZV9wa3RtYnVmX3JlYWQobSwgb2ZmLCBs ZW4sIGJ1Zik7DQo+ID4gPiA+ID4gPiB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBCdXQgaXQgd291 bGQgbWVhbiBwb3RlbnRpYWxseSBiaWcgYnVmZmVyIG9uIHRoZSBzdGFjayAoaW4gY2FzZSkNCj4g PiA+ID4NCj4gPiA+ID4gTm8sIHRoZSBidWZmZXIgb25seSBuZWVkcyB0byBiZSB0aGUgc2l6ZSBv ZiB0aGUgYWNjZXNzZWQgZGF0YS4gSQ0KPiB1c2UNCj4gPiA+IGl0IGxpa2UgdGhpczoNCj4gPiA+ ID4NCj4gPiA+ID4gY2hhciBidWZmZXJbc2l6ZW9mKHVpbnQzMl90KV07DQo+ID4gPiA+DQo+ID4g PiA+IGZvciAoOzsgcGMrKykgew0KPiA+ID4gPiAgICAgc3dpdGNoIChwYy0+Y29kZSkgew0KPiA+ ID4gPiAgICAgICAgIGNhc2UgQlBGX0xEX0FCU18zMjoNCj4gPiA+ID4gICAgICAgICAgICAgcCA9 IHJ0ZV9wa3RtYnVmX3JlYWQobSwgcGMtPmssIHNpemVvZih1aW50MzJfdCksDQo+IGJ1ZmZlcik7 DQo+ID4gPiA+ICAgICAgICAgICAgIGlmICh1bmxpa2VseShwID09IE5VTEwpKSByZXR1cm4gMDsg LyogQXR0ZW1wdGluZyB0bw0KPiByZWFkDQo+ID4gPiBiZXlvbmQgcGFja2V0LiBCYWlsIG91dC4g Ki8NCj4gPiA+ID4gICAgICAgICAgICAgYSA9IHJ0ZV9iZV90b19jcHVfMzIoKihjb25zdCB1aW50 MzJfdCAqKXApOw0KPiA+ID4gPiAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiA+ID4gICAgICAg ICBjYXNlIEJQRl9MRF9BQlNfMTY6DQo+ID4gPiA+ICAgICAgICAgICAgIHAgPSBydGVfcGt0bWJ1 Zl9yZWFkKG0sIHBjLT5rLCBzaXplb2YodWludDE2X3QpLA0KPiBidWZmZXIpOw0KPiA+ID4gPiAg ICAgICAgICAgICBpZiAodW5saWtlbHkocCA9PSBOVUxMKSkgcmV0dXJuIDA7IC8qIEF0dGVtcHRp bmcgdG8NCj4gcmVhZA0KPiA+ID4gYmV5b25kIHBhY2tldC4gQmFpbCBvdXQuICovDQo+ID4gPiA+ ICAgICAgICAgICAgIGEgPSBydGVfYmVfdG9fY3B1XzE2KCooY29uc3QgdWludDE2X3QgKilwKTsN Cj4gPiA+ID4gICAgICAgICAgICAgY29udGludWU7DQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gUmVh ZGluZyBkb3duIHRoZSBjaGFpbiBvZiBtYnVmIHNlZ21lbnRzIHRvIGZpbmQgYSB1aW50MzJfdCAo YW5kDQo+IHRoYXQNCj4gPiA+IHBvdGVudGlhbGx5IGNyb3NzZXMpDQo+ID4gPiBzZWVtcyBsaWtl IGEgd2FzdGUuDQo+IA0KPiArMQ0KPiBBZ2FpbiBqdXN0IGltYWdpbmUgaG93IHBhaW5mdWwgaXQg d291bGQgYmUgdG8gc3VwcG9ydCBpdCBpbiBKSVQuLi4NCj4gDQpDb21waWxpbmcgdGhlIEJQRl9M RF9BQlMgaW5zdHJ1Y3Rpb24gaW50byBhIGZ1bmN0aW9uIGNhbGwgKGkuZS4gYSBzZXJpZXMgb2Yg aW5zdHJ1Y3Rpb25zKSBpbnN0ZWFkIG9mIGEgc2luZ2xlIGluc3RydWN0aW9uIGRvZXNuJ3Qgc2Vl bSBsaWtlIGEgc2hvd3N0b3BwZXIgdG8gbWUuIFRoZSBtYWpvciBtb2RpZmljYXRpb24gaXMgcHJv YmFibHkgaW4gdGhlIGJwZiBsaWJyYXJ5LCBwYXNzaW5nIHRoZSBtYnVmIGluc3RlYWQgb2YgYSBw b2ludGVyIHRvIHRoZSBkYXRhIG9mIHRoZSBmaXJzdCBzZWdtZW50Lg0KDQo+IEFub3RoZXIgdGhp bmcgLSBpbiBsaWJydGVfYnBmLCBpZiBSVEVfQlBGX0FSR19QVFIgaXMgdXNlZCwNCj4gaXQgbWVh bnMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgZm9yIGV4ZWMvaml0IGlzIGp1c3QgYSBwbGFpbiBkYXRh IGJ1ZmZlcg0KPiBhbmQgaXQgZG9lc27igJl0DQo+IG1ha2UgYW55IGFzc3VtcHRpb25zIGFib3V0 IGl0IChtYnVmIG9yIG5vdCwgZXRjLikuDQo+IA0KPiBUaG91Z2ggdGhlcmUgaXMgYSBwb3NzaWJp bGl0eSB0byBhY2Nlc3MgbWJ1ZiBtZXRhZGF0YQ0KPiBhbmQgY2FsbCAgcnRlX3BrdG1idWZfcmVh ZCgpIG9yIGFueSBvdGhlciBmdW5jdGlvbnMgZnJvbSB5b3VyIGVCUEYNCj4gY29kZSwNCj4gYnV0 IGZvciB0aGF0IHlvdSBuZWVkIHRvIHNwZWNpZnkgUlRFX0JQRl9BUkdfUFRSX01CVUYgYXQgbG9h ZCBzdGFnZS4NCj4gDQpTbyBvbmUgd2F5IG9mIHNvbHZpbmcgaXQgaXMgbWFraW5nIGFuIGNCUEYg dG8gZUJQRiBjb252ZXJ0ZXIgdGhhdCBkb2VzIHRoaXMgdHJpY2tlcnksIGlmIGNvbnZlcnNpb24g dG8gZUJQRiBpcyB0aGUgcGF0aCB0YWtlbi4gQWx0aG91Z2ggdGhhdCBjb3VsZCBiZSBoYXJkZXIg dG8gaW1wbGVtZW50IHRoYW4gc2ltcGx5IGFkZGluZyBhIGNCUEYgcHJvY2Vzc29yIChvciBKSVQg Y29tcGlsZXIpIGRpcmVjdGx5IGluIHRoZSBicGYgbGlicmFyeS4NCg0KQyBpcyBub3QgQysrLCBh bmQgcGVyaGFwcyBjQlBGIGFuZCBlQlBGIGRvIG5vdCBoYXZlIGFzIG1hbnkgdGhpbmdzIGluIGNv bW1vbiBhcyB0aGVpciBuYW1lcyBtaWdodCBzdWdnZXN0Lg0KDQo+ID4gPg0KPiA+DQo+ID4gU2xv dyBhbmQgcGFpbmZ1bMKgaXMgdGhlIG9ubHkgd2F5IHRvIHJlYWQgYmV5b25kIHRoZSBmaXJzdCBz ZWdtZW50LCBJDQo+IGFncmVlLg0KPiA+DQo+ID4gQnV0IHdoZW4gcmVhZGluZyBmcm9tIHRoZSBm aXJzdCBzZWdtZW50LCBydGVfcGt0bWJ1Zl9yZWFkKCkgYmFzaWNhbGx5DQo+IGRvZXMgdGhlIHNh bWUgYXMgeW91ciBjb2RlLiBTbyB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IHBlcmZvcm1hbmNlDQo+ ID4gcGVuYWx0eSBmcm9tIHN1cHBvcnRpbmcgYm90aCBieSB1c2luZyBydGVfcGt0bWJ1Zl9yZWFk KCkgaW5zdGVhZC4NCj4gPg0KPiA+IEkgdGhpbmsgdGhlIG1vZGlmaWNhdGlvbiBpbiB0aGUgcGR1 bXAgbGlicmFyeSBpcyBzaW1wbGUsIGFzIHlvdQ0KPiBhbHJlYWR5IHBhc3MgdGhlIG1idWYuIEJ1 dCB0aGUgYnBmIGxpYnJhcnkgcmVxdWlyZXMgbW9yZSB3b3JrLCBhcyBpdA0KPiBwYXNzZXMgYQ0K PiA+IHBvaW50ZXIgdG8gdGhlIGRhdGEgaW4gdGhlIGZpcnN0IHNlZ21lbnQgdG8gdGhlIHByb2Nl c3NpbmcgZnVuY3Rpb24NCj4gaW5zdGVhZCBvZiBwYXNzaW5nIHRoZSBtYnVmLg0KPiA+DQo+ID4g PiBUaGUgcHVycG9zZSBvZiB0aGUgZmlsdGVyIGlzIHRvIGxvb2sgYXQgcGFja2V0IGhlYWRlcnMu DQo+ID4NCj4gPiBTb21lIG1pZ2h0IGxvb2sgZGVlcGVyLiBTbyB3aHkgcHJldmVudCBpdD8gRS5n LiBvdXIgU3RyYWlnaFNoYXBlcg0KPiBhcHBsaWFuY2Ugc29tZXRpbWVzIGxvb2tzIGRlZXBlciwg YnV0IGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHdlDQo+ID4gc3RvcHBlZCB1c2luZyBCUEYgZm9y IHRoaXMgYSBsb25nIHRpbWUgYWdvLg0KPiA+DQo+ID4gPiBBbnkgZHJpdmVyDQo+ID4gPiBtYWtp bmcgbWJ1ZnMgdGhhdA0KPiA+ID4gYXJlIGRyaXBwbGVzIG9mIGRhdGEgaXMgYnJva2VuLg0KPiA+ DQo+ID4gSSBhZ3JlZSB2ZXJ5IG11Y2ggd2l0aCB5b3Ugb24gdGhpcyByZWdhcmRpbmcgZ2VuZXJh bC1wdXJwb3NlIE5JQ3MhDQo+IEFsdGhvdWdoIEkga25vdyBvZiBhbiBleGNlcHRpb24gdGhhdCBj b25maXJtcyB0aGUgcnVsZS4uLiBhIGZldyB5ZWFyDQo+ID4gYWdvIHdlIHdvcmtlZCB3aXRoIGEg Y29tcG9uZW50IHZlbmRvciB3aXRoIHNvbWUgdmVyeSBjbGV2ZXINCj4gcGVyZm9ybWFuY2Ugb3B0 aW1pemF0aW9ucyBkb2luZyBleGFjdGx5IHRoaXMgZm9yIHNwZWNpZmljIHB1cnBvc2VzLg0KPiA+ IFVuZm9ydHVuYXRlbHkgaXQncyB1bmRlciBOREEsIHNvIEkgY2FuJ3QgZ28gaW50byBkZXRhaWxz Lg0KPiA+DQo+ID4gPiBjaGFpbmluZyBpcyByZWFsbHkgbWVhbnQgZm9yIGNhc2Ugb2YganVtYm8g b3IgdHNvLg0KPiA+ID4NCj4gPg0KPiA+IFRyeSB0aGlua2luZyBiZXlvbmQgUE1EIGluZ3Jlc3Mu IFRoZXJlIGFyZSBtdWx0aXBsZSB1c2UgY2FzZXMgaW4NCj4gZWdyZXNzLiBIZXJlIGFyZSBhIGNv dXBsZToNCj4gPg0KPiA+IC0gSVAgTXVsdGljYXN0IHRvIG11bHRpcGxlIHN1Ym5ldHMgb24gYSBM YXllciAzIHN3aXRjaC4gVGhlIFZMQU4gSUQNCj4gYW5kIFNvdXJjZSBNQUMgbXVzdCBiZSByZXBs YWNlZCBpbiBlYWNoIHBhY2tldDsgdGhpcyBjYW4gYmUgZG9uZSB1c2luZw0KPiA+IHNlZ21lbnRz Lg0KPiA+IC0gVHVubmVsIGVuY2Fwc3VsYXRpb24uIEUuZy4gcHV0dGluZyBhIHBhY2tldCBpbnRv IGEgVlhMQU4gdHVubmVsDQo+IGNvdWxkIGJlIGRvbmUgdXNpbmcgc2VnbWVudHMuDQoNCkkgYXBw bGF1ZCBTdGVwaGVuJ3MgaW5pdGlhdGl2ZSB0byBhZGQgYSBwZHVtcCBsaWJyYXJ5IHdpdGggY0JQ RiBmaWx0ZXJpbmchIEl0IGlzIGFuIGltcG9ydGFudCBuZXR3b3JrIGFwcGxpYW5jZSBmZWF0dXJl IGZvciBuZXR3b3JrIGNvbnN1bHRhbnRzIGFuZCBuZXR3b3JrIG9wZXJhdG9ycyBpbiBzbWFsbC9t ZWRpdW0gYnVzaW5lc3NlcyAtIHRoZXkgYXJlIG5vdCBwcm9ncmFtbWVycywgc28gZUJQRiBpcyBu b3QgYW4gb3B0aW9uIGZvciB0aGVzZSBndXlzLg0KDQpBbHRob3VnaCBJIGhhdmUgdHJpZWQgdG8g bWFrZSBhIHBvaW50IHRoYXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgcGFja2V0IHNlZ21lbnRzIGNv dWxkIGJlIHJlbGV2YW50LCBub3Qgc3VwcG9ydGluZyBtdWx0aXBsZSBwYWNrZXQgc2VnbWVudHMg aXMgY2VydGFpbmx5IGJldHRlciB0aGFuIG5vdCBhZGRpbmcgdGhlIHBkdW1wIGxpYnJhcnkhIEp1 c3QgcGxlYXNlIGRvbid0IHRha2UgdG9vIG1hbnkgc3RlcHMgaW4gYSBkaXJlY3Rpb24gdGhhdCBt YWtlcyBpdCB0b28gaGFyZCB0byBhZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgcGFja2V0IHNlZ21l bnRzIGxhdGVyLg0KDQpBbHNvIHRoYW5rcyB0byBLb25zdGFudGluIGZvciB0aGUgYnBmIGxpYnJh cnksIGl0cyBob29rcyBhbmQgdGhlIHBvc3NpYmlsaXRpZXMgaXQgb3BlbnMhDQoNClRoaXMgZGlz Y3Vzc2lvbiBoYXMgY2xlYXJseSByZXZlYWxlZCB0aGF0IHdoYXQgSSByZXBvcnRlZCBhcyBiZWlu ZyBhICJidWciIGlzIGhhcmQgdG8gY29ycmVjdCBpbiB0aGUgYnBmIGxpYnJhcnksIHNvIGxldCdz IGRvd25ncmFkZSBpdCB0byBhICJsaW1pdGF0aW9uIi4NCg0KDQpNZWQgdmVubGlnIGhpbHNlbiAv IGtpbmQgcmVnYXJkcw0KLSBNb3J0ZW4gQnLDuHJ1cA0KDQoNCg0K