From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id DC5971B4DC for ; Fri, 1 Feb 2019 16:40:54 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Feb 2019 07:40:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,549,1539673200"; d="scan'208";a="112945783" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga006.jf.intel.com with ESMTP; 01 Feb 2019 07:40:53 -0800 Received: from fmsmsx154.amr.corp.intel.com (10.18.116.70) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.408.0; Fri, 1 Feb 2019 07:40:53 -0800 Received: from fmsmsx108.amr.corp.intel.com ([169.254.9.99]) by FMSMSX154.amr.corp.intel.com ([169.254.6.237]) with mapi id 14.03.0415.000; Fri, 1 Feb 2019 07:40:52 -0800 From: "Eads, Gage" To: Ola Liljedahl , Honnappa Nagarahalli , "Richardson, Bruce" , "dev@dpdk.org" CC: nd Thread-Topic: [RFC] lfring: lock-free ring buffer Thread-Index: AQHUtwUD27HnS9OItk2iqwDKLNhf3qXFCdhggAA5FICAAfcNcIAAeAQAgANX1fA= Date: Fri, 1 Feb 2019 15:40:51 +0000 Message-ID: <9184057F7FC11744A2107296B6B8EB1E541CDFAB@FMSMSX108.amr.corp.intel.com> References: <1548678513-14348-1-git-send-email-ola.liljedahl@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CC413@FMSMSX108.amr.corp.intel.com> <1548714375.11472.76.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CD01D@FMSMSX108.amr.corp.intel.com> <1548848178.2915.40.camel@arm.com> In-Reply-To: <1548848178.2915.40.camel@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZjc1N2Q2YTMtMjgxMC00OTY5LTkzZjUtNGZhMjE0MWMwODM1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiM3AzdHZIWkFHTWY4aXc3dDhFM0I3dGkrSEV0XC9SVm5oZ1wvZEdPWlpHUU5LbUhcL3h2Y0h5UUZCM3VZRXNpeUV3dCJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.1.200.107] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC] lfring: lock-free ring buffer 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: Fri, 01 Feb 2019 15:40:55 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT2xhIExpbGplZGFobCBb bWFpbHRvOk9sYS5MaWxqZWRhaGxAYXJtLmNvbV0NCj4gU2VudDogV2VkbmVzZGF5LCBKYW51YXJ5 IDMwLCAyMDE5IDU6MzYgQU0NCj4gVG86IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIDxIb25uYXBwYS5O YWdhcmFoYWxsaUBhcm0uY29tPjsgUmljaGFyZHNvbiwNCj4gQnJ1Y2UgPGJydWNlLnJpY2hhcmRz b25AaW50ZWwuY29tPjsgRWFkcywgR2FnZSA8Z2FnZS5lYWRzQGludGVsLmNvbT47DQo+IGRldkBk cGRrLm9yZw0KPiBDYzogbmQgPG5kQGFybS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUkZDXSBsZnJp bmc6IGxvY2stZnJlZSByaW5nIGJ1ZmZlcg0KPiANCj4gT24gV2VkLCAyMDE5LTAxLTMwIGF0IDA1 OjE3ICswMDAwLCBFYWRzLCBHYWdlIHdyb3RlOg0KPiA8U05JUD4NCj4gPg0KPiA+ID4gPiAyLiBP biB0aGUgcGx1cyBzaWRlLCB0aGUgZW5xdWV1ZSBmdW5jdGlvbiBkZXNpZ24gdGhhdCBhbGxvd3Mg aXQgdG8NCj4gPiA+ID4gdXNlDQo+ID4gPiA+IDEvMiB0aGUgYXRvbWljcyBvZiBtaW5lIGFwcGVh cnMgdG8gYmUgaW5kZXBlbmRlbnQgb2YgcmVzZXJ2aW5nDQo+ID4gPiA+IHJpbmcgc2xvdHMsIGFu ZCBzaG91bGQgdHJhbnNmZXIgb3ZlciBmYWlybHkgY2xlYW5seS4gSSdtIGEgbGl0dGxlDQo+ID4g PiA+IGNvbmNlcm5lZCBhYm91dCB0aGUgcGVyZm9ybWFuY2UgdmFyaWFiaWxpdHkgaXQgaW50cm9k dWNlcyAoaS5lLiBpZg0KPiA+ID4gPiB0aGUgdGhyZWFkIGdldHMgaW50byAiY2F0Y2ggdXAiIG1v ZGUpLA0KPiA+ID4gSWYgYSB0aHJlYWQgaGFzIHRvIGNhdGNoIHVwLCBpdCBtZWFucyBpdCBpcyB1 c2luZyBhIHN0YWxlDQo+ID4gPiAoaGVhZC90YWlsKSBpbmRleCAobW9yZSB0aGFuIG9uZSByaW5n IGxhcCBiZWhhaW5kKS4gQmV0dGVyIHRvIHRyeSB0bw0KPiA+ID4gbG9hZCBhIGZyZXNoIHZhbHVl IChpZiBvbmUgaXMNCj4gPiA+IGF2YWlsYWJsZSkgdGhhbiB0byBpdGVyYXRlIG92ZXIgdGhlIHJp bmcgdW50aWwgaXQgaGFzIGNhdWdodCB1cC4gU28NCj4gPiA+IEkgdGhpbmsgdGhpcyBpcyB0aGUg YmV0dGVyL2Zhc3RlciBkZXNpZ24uDQo+ID4gPg0KPiA+ID4gQ2F0Y2ggdXAgbW9kZSBpcyBub3Qg dHJpZ2dlcmVkIGJ5IGZpbmRpbmcgYW4gb2NjdXBpZWQgc2xvdCBmb3IgdGhlDQo+ID4gPiBjdXJy ZW50IGxhcCAodGhhdCB3YXMganVzdCB3cml0dGVuIGJ5IHNvbWUgb3RoZXIgdGhyZWFkKS4gT3Ig YXQNCj4gPiA+IGxlYXN0IHRoaXMgaXMgdGhlIGlkZWEuDQo+ID4gPiBJZiB3ZQ0KPiA+ID4gZmlu ZCBhIGZyZXNobHkgd3JpdHRlbiBzbG90LCB3ZSBqdXN0IG1vdmUgdG8gdGhlIG5leHQgc2xvdC4N Cj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IHBhcnRpY3VsYXJseSBmb3IgbGFyZ2VyIHJpbmdzLCBz aW5jZSByZWFsLXRpbWUgc29mdHdhcmUgdmFsdWVzDQo+ID4gPiA+IHByZWRpY3RhYmlsaXR5Lg0K PiA+ID4gPiBXaGF0IGlmIHRoZSByZWxvYWQgY3JpdGVyaWEgd2FzIGluc3RlYWQgc29tZXRoaW5n IGxpa2U6DQo+ID4gPiA+DQo+ID4gPiA+ICNkZWZpbmUgRU5RX1JFVFJZX0xJTUlUIDMyIC8vYXJi aXRyYXJ5DQo+ID4gPiA+DQo+ID4gPiA+IGlmIChvbGQuZS5pZHggIT0gdGFpbCAtIHNpemUpIHsN Cj4gPiA+ID4gwqDCoMKgwqBpZiAoKytmYWlsX2NudCA8IEVOUV9SRVRSWV9MSU1JVCkgew0KPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgdGFpbCsrOw0KPiA+ID4gPiDCoMKgwqDCoH0gZWxzZSB7DQo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqBmYWlsX2NudCA9IDA7DQo+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqB0YWlsID0gcnRlX2xmcmluZ19yZWxvYWQoLi4uKTsNCj4gPiA+ID4gwqDCoMKgwqB9DQo+ ID4gPiA+IMKgwqDCoMKgZ290byByZXN0YXJ0Ow0KPiA+ID4gPiB9DQo+ID4gPiA+IGZhaWxfY250 ID0gMDsNCj4gPiA+IFRoZXJlIGFyZSB0aHJlZSBjYXNlcyAoc2xvdCBpbmRleCBtdXN0IGJlIGJl dHdlZW4gcS0+dGFpbCBhbmQNCj4gPiA+IHEtPmhlYWQgKyBxLQ0KPiA+ID4gPg0KPiA+ID4gPiBz aXplKToNCj4gPiA+IHNsb3QuaWR4ID09IHRhaWwgLSBzaXplOiBzbG90IGlzIGZyZWUsIHRyeSB0 byB3cml0ZSBpdCBzbG90LmlkeCA9PSB0YWlsOg0KPiA+ID4gc2xvdCBoYXMganVzdCBiZWVuDQo+ ID4gPiB3cml0dGVuIChieSBvdGhlciB0aHJlYWQpLCBza2lwIHRvIG5leHQgc2xvdCAodGFpbCsr KSBub25lIG9mIHRoZSBhYm92ZToNCj4gPiA+IHRocmVhZCBpcw0KPiA+ID4gYmVoaW5kIChhdCBs ZWFzdCBvbmUgbGFwKSwgcmUtbG9hZCB0YWlsIGZyb20gcS0NCj4gPiA+ID4NCj4gPiA+ID4gdGFp bA0KPiA+ID4gSSB0aGluayB1c2luZyB0aGUgcmV0cnkgY291bnQgYWN0dWFsbHkgZGVsYXlzIGNh dGNoaW5nIHVwIHRvIGEgZnJlc2gNCj4gPiA+IHBvc2l0aW9uLg0KPiA+ID4NCj4gPiBNaXNjb21t dW5pY2F0aW9uIGhlcmUgLS0gYnkgImNhdGNoIHVwIiwgSSBtZWFudCB0aGUgY2FzZSB3aGVyZSB0 aGUNCj4gPiB0aHJlYWQgaXMgYmVoaW5kIGJ1dCBieSBsZXNzIHRoYW4gb25lIGxhcCAodGhlIHNl Y29uZCBjYXNlIHlvdQ0KPiA+IGRlc2NyaWJlKS4gSW4gdGhlIHdvcnN0IGNhc2UsIHRoZSB0aHJl YWQgd291bGQgaGF2ZSB0byByZWFkIE4tMSAoTiA9DQo+ID4gcmluZyBzaXplKSBlbnRyaWVzIGJl Zm9yZSByZWFjaGluZyB0aGUgbmV4dCBhdmFpbGFibGUgZW50cnksIGFuZCBOIGNvdWxkIGVhc2ls eQ0KPiBiZSBpbiB0aGUgdGhvdXNhbmRzLg0KPiA+IFRoYXQncyB0aGUgcGVyZm9ybWFuY2UgdmFy aWFiaWxpdHkgSSB3YXMgcmVmZXJyaW5nIHRvLCBhbmQgd2h5IEkNCj4gPiBzdWdnZXN0ZWQgY2Fw cGluZyB0aGUgZmFpbGVkIHNsb3QgcmVhZHMgYXQgMzIuIE1haW50YWluaW5nIGEgbG9jYWwNCj4g PiBmYWlsX2NudCB2YXJpYWJsZSBpcyBhIHNtYWxsIHByaWNlIHRvIHBheSAocmVsYXRpdmUgdG8g YSBDQVMpIHRvDQo+ID4gcHJldmVudCBhIHJpbmcgZW5xdWV1ZSBsYXRlbmN5IHNwaWtlLg0KPiBP SywgSSBtaXN1bmRlcnN0b29kLiBXZSBjYW4gcmVsb2FkIHRoZSBwcml2YXRlIHRhaWwgZnJvbSB0 aGUgc2hhcmVkIHJpbmcgYnVmZmVyDQo+IHRhaWwgZWFybGllci4gWW91IGNvdWxkIGFjdHVhbGx5 IGRvIHRoaXMgb24gZXZlcnkgZmFpbGVkIENBUyBidXQgSSB0aGluayB0aGF0IHdvdWxkDQo+IGJl IG92ZXJraWxsLiBZb3VyIGRlc2lnbiB3aXRoIGEgcmV0cnkgbGltaXQgaXMgYmV0dGVyLCB3ZSBu ZWVkIHRvIGZpbmQgb3V0IHdoYXQgaXMgYQ0KPiBzdWl0YWJsZSB2YWx1ZSBmb3IgdGhlIHJldHJ5 IGxpbWl0Lg0KPiANCg0KVG9vIGxhdGUgZm9yIGxmcmluZyB2MiB1bmZvcnR1bmF0ZWx5LCBidXQg dGhpcyBpZGVhIHdpbGwgYWN0dWFsbHkgYnJlYWsgbG9jay1mcmVlZG9tLiBGb3IgZXhhbXBsZSwg c2F5IHRoZSB0YWlsIGluZGV4IGlzIDMzIHNsb3RzIGJlaGluZCB0aGUgbmV4dCBhdmFpbGFibGUg c2xvdC4gQW4gZW5xdWV1ZWluZyB0aHJlYWQgd291bGQgZ2V0IHN0dWNrIHJldHJ5aW5nIHNsb3Rz IGZyb20gdGFpbCBpbmRleCAtPiB0YWlsIGluZGV4ICsgMzIgdW50aWwgYW5vdGhlciB0aHJlYWQg dXBkYXRlcyB0aGUgdGFpbCBpbmRleC4gDQoNCj4gPg0KPiA+IEJ1dCB5b3UncmUgcmlnaHQgdGhh dCB3ZSBzaG91bGQgc3RpbGwgY2F0Y2ggdGhlIDErIGxhcCBiZWhpbmQgY2FzZSwgc28NCj4gPiB0 aGUgcmVsb2FkIGNyaXRlcmlhIGNvdWxkIGJlOg0KPiA+DQo+ID4gI2RlZmluZSBFTlFfUkVUUllf TElNSVQgMzIgLy9hcmJpdHJhcnkNCj4gPg0KPiA+IGlmIChvbGQuZS5pZHggIT0gdGFpbCAtIHNp emUpIHsNCj4gPiDCoMKgwqDCoGlmICgrK2ZhaWxfY250IDwgRU5RX1JFVFJZX0xJTUlUICYmIG9s ZC5lLmlkeCA9PSB0YWlsKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHRhaWwrKzsNCj4gPiDCoMKg wqDCoH0gZWxzZSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGZhaWxfY250ID0gMDsNCj4gPiDCoMKg wqDCoMKgwqDCoMKgdGFpbCA9IHJ0ZV9sZnJpbmdfcmVsb2FkKC4uLik7DQo+ID4gwqDCoMKgwqB9 DQo+ID4gwqDCoMKgwqBnb3RvIHJlc3RhcnQ7DQo+ID4gfQ0KPiA+IGZhaWxfY250ID0gMDsNCj4g QWdyZWUuDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAzLiBVc2lu ZyBhIHplcm8tbGVuZ3RoIGFycmF5IHRvIG1hcmsgdGhlIHN0YXJ0IG9mIHRoZSByaW5nIGlzIGEN Cj4gPiA+ID4gbmljZSBhcHByb2FjaA0KPiA+ID4gPiAtLSBJJ2xsIGluY29ycG9yYXRlIHRoYXQg aW50byB0aGUgcGF0Y2hzZXQuDQo+ID4gPiA+DQo+ID4gPiA+IEF0IGFuIGFsZ29yaXRobSBsZXZl bCwgSSBkb24ndCBzZWUgYW55IG90aGVyIGRpZmZlcmVuY2VzLg0KPiA+ID4gPiBJbXBsZW1lbnRh dGlvbi13aXNlLCB3ZSdsbCBuZWVkIHRvIG5haWwgdGhlIG1lbW9yeSBvcmRlcmluZyBmbGFncw0K PiA+ID4gPiB0byBiZXN0IHN1cHBvcnQgd2VhayBjb25zaXN0ZW5jeSBtYWNoaW5lcywgYXMgeW91 IHBvaW50ZWQgb3V0IGVsc2V3aGVyZS4NCj4gPiA+IFRoZXJlIGlzIG5vIHByZS1hY3F1aXNpdGlv biBvZiBzbG90cyBpbiBlbnF1ZXVlIGFuZCBkZXF1ZXVlLiBUaGF0DQo+ID4gPiBzZXBhcmF0ZSBz dGVwIG1ha2VzIGxvY2stZnJlZWRvbSBpbXBvc3NpYmxlIChJIHRoaW5rKS4NCj4gPiA+DQo+ID4g Q2FuIHlvdSBlbGFib3JhdGU/DQo+IEkgdGhpbmsgbG9jay1mcmVlZG9tIGlzIGltcG9zc2libGUg d2l0aCB0aGUgaW5pdGlhbCBhY3F1aXNpdGlvbiBvZiBlbGVtZW50cy4NCj4gVGhpcyBhY3F1aXNp dGlvbiBjcmVhdGVzIGEgc2lkZSBlZmZlY3QgdGhhdCBjYW5ub3QgYmUgdW5kb25lIG9yIGhlbHBl ZCBieSBvdGhlcg0KPiB0aHJlYWRzLg0KPiANCj4gWW91IGNhbiBzdGlsbCBpbXBsZW1lbnQgYSAi bm9uLWJsb2NraW5nIiByaW5nIGJ1ZmZlciAobGlrZSB5b3VyIG9yaWdpbmFsIGRlc2lnbikNCj4g d2hpY2ggaGlkZXMgYW55IGRlbGF5IGluIHRocmVhZHMgdGhhdCBhY2Nlc3MgdGhlIHJpbmcgYnVm ZmVyIGJ1dCBpc24ndCBwcm9wZXJseQ0KPiBsb2NrLWZyZWUgKHdoaWNoIGNvdWxkIGJlIGNvbnNp ZGVyZWQgdW5uZWNlc3NhcnkgaW4gYSBEUERLIGVudmlyb25tZW50LA0KPiB0aHJlYWRzIG1heSBn ZXQgZGVsYXllZCBidXQgc2hvdWxkbid0IGRpZSBvciBibG9jayBmb3JldmVyKS4NCj4gDQoNCkkg dGhpbmsgSSBzZWUgd2hhdCB5b3UncmUgc2F5aW5nLiBGb3IgZXhhbXBsZSBJZiBhIGRlcXVldWVp bmcgdGhyZWFkIHJlc2VydmVzIE4gZWxlbWVudHMgYW5kIHRoZW4gaXMgcHJlZW1wdGVkLCBpdCdz IGVmZmVjdGl2ZWx5IHJlZHVjZWQgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgZWxlbWVudHMgYnkg TiBkdXJpbmcgdGhhdCBwZXJpb2QuDQoNClByYWN0aWNhbGx5IHNwZWFraW5nLCBJIGRvbid0IHRo aW5rIHRoaXMgaXMgYSBwcm9ibGVtLiBOb3QganVzdCBiZWNhdXNlIHRocmVhZHMgc2hvdWxkbid0 IGRpZSBvciBibG9jayBmb3JldmVyLCBidXQgaWYgYSB0aHJlYWQgY2FuIGJlIHByZWVtcHRlZCBh ZnRlciByZXNlcnZpbmcgTiByaW5nIHNsb3RzIChidXQgYmVmb3JlIGVucXVldWVpbmcgdG8gb3Ig ZGVxdWV1ZWluZyBmcm9tIHRoZW0pLCB0aGUgbmV0IGVmZmVjdCBpcyB0aG9zZSBOIGJ1ZmZlcnMg YXJlIHRha2VuIG91dCBvZiB0aGUgc3lzdGVtLiBUaGlzIGlzbid0IHJlYWxseSBkaWZmZXJlbnQg dGhhbiBpZiBpdCB0aGF0IHRocmVhZCB3YXMgcHJlZW1wdGVkICpvdXRzaWRlKiBvZiB0aGUgcmlu ZyBmdW5jdGlvbnMgd2hpbGUgaG9sZGluZyBOIGJ1ZmZlcnMgLS0gdGhlIGFwcGxpY2F0aW9uIHNo b3VsZCBiZSBkZXNpZ25lZCB0byBiZSByZXNpbGllbnQgdG8gdGhhdC4NCg0KPiA+ICBJIGRvbid0 IGN1cnJlbnRseSBzZWUgYW55IG90aGVyIHdheSB0byBzdXBwb3J0IHJ0ZV9yaW5nIGJ1bGsNCj4g PiBzZW1hbnRpY3MsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgY3JlYXRpbmcgYSBub24tYmxvY2tp bmcgbWVtcG9vbA0KPiA+IGhhbmRsZXIsIHNvIHdlIHNob3VsZCBjbGVhciB1cCBhbnkgZG91YnQu DQo+IE9LLCBJIHdhc24ndCBhd2FyZSBvZiB0aGlzIHN0cmljdCBkZXBlbmRlbmN5IG9uIGJ1bGsg ZW5xdWV1ZSBhbmQgZGVxdWV1ZS4gQnVsaw0KPiBkZXF1ZXVlIChtZW1wb29sIGFsbG9jYXRlcyBi dWZmZXJzIGZyb20gdGhlIHJpbmcpIHNob3VsZCBiZSBlYXN5IHRvIHN1cHBvcnQNCj4gdGhvdWdo LiBCdWxrIGVucXVldWUgKG1lbXBvb2wgZnJlZXMgYnVmZmVycyB0byB0aGUgcmluZykgd2lsbCB3 b3JrIGFzIGxvbmcgYXMNCj4gdGhlIHJpbmcgaXMgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYWxsIGZy ZWUgYnVmZmVycyBzbyBpdCBjYW4gbmV2ZXIgYmVjb21lIGZ1bGwgKG5lZWQNCj4gdG8gcmVsb2Fk IGhlYWQvdGFpbCBwb2ludGVycyBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2VzIHRvIGF2b2lkIHNw dXJpb3VzDQo+IGZ1bGwvZW1wdHkgc3RhdHVzKS4gSSBhc3N1bWUgdGhpcyBpcyB0aGUgY2FzZSwg aW5pdGlhbGx5IGFsbCBmcmVlIGJ1ZmZlcnMgd2lsbCBiZSBzdG9yZWQNCj4gaW4gdGhlIHJpbmc/ DQo+IA0KPiA+DQo+ID4gSW4gdGhlIE5CIHJpbmcgcGF0Y2hzZXQgZWFjaCB0aHJlYWQgcmVzZXJ2 ZXMgYSBudW1iZXIgb2Ygc2xvdHMgYmVmb3JlDQo+ID4gcGVyZm9ybWluZyB0aGUgZW5xL2RlcSwg YnV0IGRvZXNuJ3QgcmVzZXJ2ZSAqc3BlY2lmaWMqIHNsb3RzICh1bmxpa2UNCj4gPiBydGVfcmlu ZykuIFRoaXMgcmVzZXJ2YXRpb24gaXMgYXRvbWljLCBzbyB0aGF0IHdlIG5ldmVyIG92ZXItc3Vi c2NyaWJlDQo+ID4gdmFsaWQgcmluZyBlbnRyaWVzIChmb3IgZGVxdWV1ZSkgb3IgdW51c2VkIHJp bmcgZW50cmllcyAoZm9yIGVucXVldWUpLg0KPiA+IFRoaXMgZ3VhcmFudGVlcyB0aGF0IHRoZSBl bnEvZGVxIG9wZXJhdGlvbiB3aWxsIGV2ZW50dWFsbHkgY29tcGxldGUsDQo+ID4gcmVnYXJkbGVz cyBvZiB0aGUgYmVoYXZpb3Igb2Ygb3RoZXIgdGhyZWFkcy4gVGhpcyBpcyB3aHkgdGhlIGVucXVl dWUNCj4gPiBsb29wIGRvZXNuJ3QgY2hlY2sgaWYgc3BhY2UgaXMgYXZhaWxhYmxlIGFuZCB0aGUg ZGVxdWV1ZSBsb29wIGRvZXNuJ3QNCj4gPiBjaGVjayBpZiBhbnkgbW9yZSB2YWxpZCBlbnRyaWVz IHJlbWFpbi4NCj4gSSBpbml0aWFsbHkgdGhvdWdodCB0aGVzZSBhY3F1aXNpdGlvbnMgd2VyZSBq dXN0IGZvciBjb21wYXRpYmlsaXR5IHdpdGggcnRlX3JpbmcNCj4gKHVwZGF0ZSB0aGUgc2FtZSBt ZXRhZGF0YSBzbyB0aGF0IHRoZSB1c2VyIGNhbiBtaXggTVAvTUMgYW5kIFNQL1NDIGNhbGxzKSBi dXQNCj4gcmVhbGlzZSB0aGV5IGFyZSB0aGVyZSBmb3IgdGhlIGJ1bGsgZW5xdWV1ZS9kZXF1ZXVl LiBCdXQgZG9pbmcgdGhpcyBhY3F1aXNpdGlvbg0KPiBtZWFucyBlYWNoIGVucXVldWUgb3IgZGVx dWV1ZSB3aWxsIHVwZGF0ZSB0d28gbWV0YWRhdGEgdmFyaWFibGVzIHNvIGNyZWF0ZXMNCj4gbW9y ZSBjb250ZW50aW9uIGFuZCBsZXNzIHNjYWxhYmlsaXR5LiBJIHRoaW5rIGl0IHdvdWxkIGJlIGdv b2QgaWYgd2UgY291bGQgcHJvdmlkZQ0KPiB0aGUgYnVsayBiZWhhdmlvdXIgKndpdGhvdXQqIHRo aXMgaW5pdGlhbCBhY3F1aXNpdGlvbiBhbmQgb25seSB1cGRhdGUgb25lDQo+IG1ldGFkYXRhIGxv Y2F0aW9uIHBlciBlbnF1ZXVlL2RlcXVldWUgb3BlcmF0aW9uLg0KPiANCg0KQWdyZWVkLiBJIHNl ZSBsZnJpbmcgdjIgaGFzIGF2b2lkZWQgdGhpcyBvbiB0aGUgZGVxdWV1ZSBzaWRlLCBidXQgSSB0 aGluayBpdCdzIHVuYXZvaWRhYmxlIG9uIHRoZSBlbnF1ZXVlIHNpZGUgLS0gc2luY2Ugd2UgY2Fu J3Qgd3JpdGUgcmluZyBlbnRyaWVzIGFuZCBDQVMgdGhlIHRhaWwgcG9pbnRlciBpbiBvbmUgYmln IGF0b21pYyBvcGVyYXRpb24uIEFGQUlDVCwgc2xvdCByZXNlcnZhdGlvbnMgYXJlIHVuYXZvaWRh YmxlIHRoZXJlIHRvIGFjaGlldmUgYnVsayBzZW1hbnRpY3MuDQoNCj4gPg0KPiA+IFRoaXMgc29y dCBvZiByZXNlcnZhdGlvbiBzaG91bGQgYmUgY29tcGF0aWJsZSB3aXRoIGxmcmluZywgYnV0DQo+ ID4gcmVxdWlyZXMgY2hhbmdlcyAoZS5nLiB0d28gc2V0cyBvZiBoZWFkL3RhaWwgcG9pbnRlcnMp Lg0KPiA+DQo+IDxTTklQPg0KPiA+DQo+IC0tDQo+IE9sYSBMaWxqZWRhaGwsIE5ldHdvcmtpbmcg U3lzdGVtIEFyY2hpdGVjdCwgQXJtIFBob25lICs0NjcwNjg2NjM3MywgU2t5cGUNCj4gb2xhLmxp bGplZGFobA0KDQo=