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 E1C99A04B1; Fri, 28 Aug 2020 11:04:03 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BC50B1C0CC; Fri, 28 Aug 2020 11:04:02 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by dpdk.org (Postfix) with ESMTP id 43C5F1C0CA for ; Fri, 28 Aug 2020 11:04:01 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Fri, 28 Aug 2020 11:03:59 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C61261@smartserver.smartshare.dk> In-Reply-To: <20200827114117.GD569@bricha3-MOBL.ger.corp.intel.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [RFC] ethdev: rte_eth_rx_burst() requirements fornb_pkts Thread-Index: AdZ8ZwMRJwFZkq+GR9imuDUfCUDzLAAqzt3g References: <20200827075452.1751-1-jia.guo@intel.com> <98CBD80474FA8B44BF855DF32C47DC35C61257@smartserver.smartshare.dk> <20200827090944.GA569@bricha3-MOBL.ger.corp.intel.com> <98CBD80474FA8B44BF855DF32C47DC35C6125A@smartserver.smartshare.dk> <20200827094333.GC569@bricha3-MOBL.ger.corp.intel.com> <98CBD80474FA8B44BF855DF32C47DC35C6125B@smartserver.smartshare.dk> <20200827114117.GD569@bricha3-MOBL.ger.corp.intel.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Bruce Richardson" Cc: "Jeff Guo" , "Thomas Monjalon" , "Ferruh Yigit" , "Andrew Rybchenko" , , , , , , , , Subject: Re: [dpdk-dev] [RFC] ethdev: rte_eth_rx_burst() requirements fornb_pkts 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" PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEJy dWNlIFJpY2hhcmRzb24NCj4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCAyNywgMjAyMCAxOjQxIFBN DQo+IA0KPiBPbiBUaHUsIEF1ZyAyNywgMjAyMCBhdCAxMjoxMzo1MVBNICswMjAwLCBNb3J0ZW4g QnLDuHJ1cCB3cm90ZToNCj4gPiA+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsu b3JnXSBPbiBCZWhhbGYgT2YgQnJ1Y2UNCj4gUmljaGFyZHNvbg0KPiA+ID4gU2VudDogVGh1cnNk YXksIEF1Z3VzdCAyNywgMjAyMCAxMTo0NCBBTQ0KPiA+ID4NCj4gPiA+IE9uIFRodSwgQXVnIDI3 LCAyMDIwIGF0IDExOjMxOjE1QU0gKzAyMDAsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+ID4g PiA+IEZyb206IEJydWNlIFJpY2hhcmRzb24gW21haWx0bzpicnVjZS5yaWNoYXJkc29uQGludGVs LmNvbV0NCj4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgQXVndXN0IDI3LCAyMDIwIDExOjEwIEFN DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiBUaHUsIEF1ZyAyNywgMjAyMCBhdCAxMDo0MDoxMUFN ICswMjAwLCBNb3J0ZW4gQnLDuHJ1cCB3cm90ZToNCj4gPiA+ID4gPiA+IEplZmYgYW5kIEV0aGVy bmV0IEFQSSBtYWludGFpbmVycyBUaG9tYXMsIEZlcnJ1aCBhbmQgQW5kcmV3LA0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IEknbSBoaWphY2tpbmcgdGhpcyBwYXRjaCB0aHJlYWQgdG8gcHJvcG9z ZSBhIHNtYWxsIEFQSQ0KPiA+ID4gbW9kaWZpY2F0aW9uDQo+ID4gPiA+ID4gdGhhdCBwcmV2ZW50 cyB1bm5lY2Vzc2FyaWx5IHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9ucy4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiA+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBC ZWhhbGYgT2YgSmVmZg0KPiBHdW8NCj4gPiA+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIEF1Z3Vz dCAyNywgMjAyMCA5OjU1IEFNDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRoZSBsaW1p dGF0aW9uIG9mIGJ1cnN0IHNpemUgaW4gdmVjdG9yIHJ4IHdhcyByZW1vdmVkLA0KPiBzaW5jZSBp dA0KPiA+ID4gPiA+IHNob3VsZA0KPiA+ID4gPiA+ID4gPiByZXRyaWV2ZSBhcyBtdWNoIHJlY2Vp dmVkIHBhY2tldHMgYXMgcG9zc2libGUuIEFuZCBhbHNvIHRoZQ0KPiA+ID4gPiA+IHNjYXR0ZXJl ZA0KPiA+ID4gPiA+ID4gPiByZWNlaXZlIHBhdGggc2hvdWxkIHVzZSBhIHdyYXBwZXIgZnVuY3Rp b24gdG8gYWNoaWV2ZSB0aGUNCj4gZ29hbA0KPiA+ID4gb2YNCj4gPiA+ID4gPiA+ID4gYnVyc3Qg bWF4aW1pemluZy4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGhpcyBwYXRjaCBzZXQg YWltcyB0byBtYXhpbWl6ZSB2ZWN0b3IgcnggYnVyc3QgZm9yIGZvcg0KPiA+ID4gPiA+ID4gPiBp eGdiZS9pNDBlL2ljZS9pYXZmIFBNRHMuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gTm93IEknbSBnb2luZyB0byBiZSBwZWRhbnRpYyBhbmQgc2F5IHRoYXQgaXQgc3Rp bGwgZG9lc24ndA0KPiA+ID4gY29uZm9ybSB0bw0KPiA+ID4gPiA+IHRoZSBydGVfZXRoX3J4X2J1 cnN0KCkgQVBJLCBiZWNhdXNlIHRoZSBBUEkgZG9lcyBub3Qgc3BlY2lmeQ0KPiBhbnkNCj4gPiA+ ID4gPiBtaW5pbXVtIHJlcXVpcmVtZW50IGZvciBuYl9wa3RzLg0KPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+IEluIHRoZW9yeSwgdGhhdCBjb3VsZCBhbHNvIGJlIGZpeGVkIGluIHRoZSBkcml2ZXIg YnkgY2FsbGluZw0KPiB0aGUNCj4gPiA+IG5vbi0NCj4gPiA+ID4gPiB2ZWN0b3IgZnVuY3Rpb24g ZnJvbSB0aGUgdmVjdG9yIGZ1bmN0aW9ucyBpZiBuYl9wa3RzIGlzIHRvbw0KPiBzbWFsbA0KPiA+ ID4gZm9yDQo+ID4gPiA+ID4gdGhlIHZlY3RvciBpbXBsZW1lbnRhdGlvbi4NCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBIb3dldmVyLCBJIHRoaW5rIHRoYXQgY2FsbGluZyBydGVfZXRoX3J4X2J1 cnN0KCkgd2l0aCBhIHNtYWxsDQo+ID4gPiBuYl9wa3RzDQo+ID4gPiA+ID4gaXMgc2lsbHkgYW5k IG5vdCBpbiB0aGUgc3Bpcml0IG9mIERQREssIGFuZCBpbnRyb2R1Y2luZyBhbg0KPiA+ID4gYWRk aXRpb25hbA0KPiA+ID4gPiA+IGNvbXBhcmlzb24gZm9yIGEgc21hbGwgbmJfcGt0cyBpbiB0aGUg ZHJpdmVyIHZlY3RvciBmdW5jdGlvbnMNCj4gd291bGQNCj4gPiA+ID4gPiBkZWdyYWRlIHRoZWly IHBlcmZvcm1hbmNlIChvbmx5IHNsaWdodGx5LCBidXQgYW55d2F5KS4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiBBY3R1YWxseSwgSSdkIGxpa2UgdG8gc2VlIGEgY29uZmlybWVk IG1lYXN1cmVtZW50IHNob3dpbmcgYQ0KPiA+ID4gc2xvd2Rvd24NCj4gPiA+ID4gPiBiZWZvcmUN Cj4gPiA+ID4gPiB3ZSBkaXNjYXJkIHN1Y2ggYW4gb3B0aW9uLiA6LSkNCj4gPiA+ID4NCj4gPiA+ ID4gR29vZCBwb2ludCENCj4gPiA+ID4NCj4gPiA+ID4gPiBXaGlsZSBJIGFncmVlIHRoYXQgdXNp bmcgc21hbGwgYnVyc3RzIGlzDQo+ID4gPiA+ID4gbm90DQo+ID4gPiA+ID4ga2VlcGluZyB3aXRo IHRoZSBkZXNpZ24gYXBwcm9hY2ggb2YgRFBESyBvZiB1c2luZyBsYXJnZSBidXJzdHMNCj4gdG8N Cj4gPiA+ID4gPiBhbW9ydGl6ZQ0KPiA+ID4gPiA+IGNvc3RzIGFuZCBhbGxvdyBwcmVmZXRjaGlu ZywgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIGEgdXNlci9hcHANCj4gbWF5DQo+ID4gPiB3YW50DQo+ ID4gPiA+ID4gYQ0KPiA+ID4gPiA+IHNtYWxsIGJ1cnN0IHNpemUsIGUuZy4gNCwgZm9yIGxhdGVu Y3kgcmVhc29ucywgYW5kIHdlIG5lZWQgYQ0KPiB3YXkgdG8NCj4gPiA+ID4gPiBzdXBwb3J0DQo+ ID4gPiA+ID4gdGhhdC4NCj4gPiA+ID4gPg0KPiA+ID4gPiBJIGFzc3VtZSB0aGF0IGNhbGxpbmcg cnRlX2V0aF9yeF9idXJzdCgpIHdpdGggbmJfcGt0cz0zMiByZXR1cm5zDQo+IDQNCj4gPiA+IHBh Y2tldHMgaWYgb25seSA0IHBhY2tldHMgYXJlIGF2YWlsYWJsZSwgc28geW91IHdvdWxkIG5lZWQg dG8gYmUNCj4gPiA+IGV4dHJlbWVseSBsYXRlbmN5IHNlbnNpdGl2ZSB0byBjYWxsIGl0IHdpdGgg YSBzbWFsbGVyIG5iX3BrdHMuIEkNCj4gZ3Vlc3MNCj4gPiA+IHRoYXQgaGlnaCBmcmVxdWVuY3kg dHJhZGluZyBpcyB0aGUgb25seSByZWFsIGxpZmUgc2NlbmFyaW8gaGVyZS4NCj4gPiA+ID4NCj4g PiA+IFllcywgaXQgcmVhbGx5IGJvaWxzIGRvd24gdG8gd2hldGhlciB5b3UgYXJlIHByZXBhcmVk IHRvIGFjY2VwdA0KPiBsb3dlcg0KPiA+ID4gbWF4IHRocm91Z2hwdXQgb3IgZHJvcHBlZCBwYWNr ZXRzIGluIG9yZGVyIHRvIGdhaW4gbG93ZXIgbGF0ZW5jeS4NCj4gPiA+DQo+ID4gPiA+ID4gU2lu Y2UgdGhlIHBhdGggc2VsZWN0aW9uIGlzIGR5bmFtaWMsIHdlIG5lZWQgdG8gZWl0aGVyOg0KPiA+ ID4gPiA+IGEpIHByb3ZpZGUgYSB3YXkgZm9yIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhhdCB0aGV5 IHdpbGwgdXNlDQo+IHNtYWxsZXINCj4gPiA+ID4gPiBidXJzdHMNCj4gPiA+ID4gPiBhbmQgc28g dGhhdCB2ZWN0b3IgZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgdXNlZA0KDQpBZnRlciB0aGlua2lu ZyBhYm91dCBpdCwgYW5kIGFsc28gaW5zcGlyZWQgYnkgSGFpeXVlJ3MgY29tbWVudCBpbiB0aGUg b3RoZXIgdGhyZWFkLCB0aGlzIG1heSBiZSBhIGdvb2Qgb3B0aW9uLiBDb25maWd1cmUgdGhlIGRy aXZlciB3aXRoIHRoZSBidXJzdCBzaXplIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGlzIGdvaW5nIHRv IHVzZSwgc28gdGhlIGRyaXZlciBjYW4gc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbi4g VGhlIGRyaXZlciBjb3VsZCBldmVuIHNlbGVjdCBhbm90aGVyIHZlY3RvciBmdW5jdGlvbiwgb3B0 aW1pemVkIGZvciB0aGUgc3BlY2lmaWMgc2l6ZS4NCg0KSXQgY291bGQgYmUgYSBmaWVsZCBpbiB0 aGUgcnRlX2V0aF9yeG1vZGUgc3RydWN0dXJlLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBydGVfZXRo X2NvbmYgc3RydWN0dXJlIHVzZWQgaW4gdGhlIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpIGZ1bmN0 aW9uLg0KDQpUaGlzIHdvdWxkIGFsc28gbWFrZSB0aGUgbmJfcGt0cyBpbiB0aGUgcnRlX2V0aF9y eF9idXJzdCgpIG9ic29sZXRlLiBTbyB3ZSBjb3VsZCBhZGQgYSBmdW5jdGlvbiB3aXRob3V0IHRo ZSBuYl9wa3RzIHBhcmFtZXRlci4NCg0KQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgaW50cm9kdWNl IG5ldyB2YXJpYW50cyBvZiB0aGUgcnRlX2V0aF9yeF9idXJzdCgpIGZ1bmN0aW9uIHdpdGggZml4 ZWQgYnVyc3Qgc2l6ZSwgZS5nLiBydGVfZXRoX3J4X2J1cnN0MzIoKSB0byByZWNlaXZlIGEgYnVy c3Qgb2YgMzIgcGFja2V0cywgcnRlX2V0aF9yeF9idXJzdDY0KCkgZm9yIDY0IHBhY2tldHMsIGFu ZCBydGVfZXRoX3J4X2J1cnN0MTI4KCkuIEFzc3VtaW5nIHRoYXQgdGhlIHBlcmZvcm1hbmNlIGRp ZmZlcmVuY2UgYmV5b25kIGEgY2VydGFpbiB2ZWN0b3Igc2l6ZSBpcyBpbnNpZ25pZmljYW50LCBl LmcuIDEyOCBwYWNrZXRzLCB3ZSBkb24ndCBuZWVkIHRvIGFkZCBmdW5jdGlvbnMgZm9yIGxhcmdl ciB2ZWN0b3JzIHRoYW4gdGhhdC4NCg0KT3IgbXkgc3VnZ2VzdGlvbiBoZXJlIG1pZ2h0IGp1c3Qg YmUgYSBjYXNlIG9mIG92ZXItb3B0aW1pemluZyB3aXRoIGluc2lnbmlmaWNhbnQgcGVyZm9ybWFu Y2UgYmVuZWZpdHMuDQoNCj4gPiA+ID4gPiBiKSBoYXZlIHRoZSB2ZWN0b3IgZnVuY3Rpb25zIHRy YW5zcGFyZW50bHkgZmFsbGJhY2sgdG8gdGhlDQo+IHNjYWxhcg0KPiA+ID4gb25lcw0KPiA+ID4g PiA+IGlmDQo+ID4gPiA+ID4gdXNlZCB3aXRoIHNtYWxsZXIgYnVyc3RzDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBPZiB0aGVzZSwgb3B0aW9uIGIpIGlzIHNpbXBsZXIsIGFuZCBzaG91bGQgYmUgbG93 IGNvc3Qgc2luY2UNCj4gYW55DQo+ID4gPiBjaGVjaw0KPiA+ID4gPiA+IGlzDQo+ID4gPiA+ID4g anVzdCBvbmNlIHBlciBidXJzdCwgYW5kIC0gYXNzdW1pbmcgYW4gYXBwIGlzIHdyaXR0ZW4gdXNp bmcgdGhlDQo+ID4gPiBzYW1lDQo+ID4gPiA+ID4gcmVxdWVzdC1zaXplIGVhY2ggdGltZSAtIHNo b3VsZCBiZSBlbnRpcmVseSBwcmVkaWN0YWJsZSBhZnRlcg0KPiB0aGUNCj4gPiA+IGZpcnN0DQo+ ID4gPiA+ID4gY2FsbC4NCj4gPiA+ID4gPg0KPiA+ID4gPiBXaHkgZG9lcyBldmVyeW9uZSBhc3N1 bWUgdGhhdCBEUERLIGFwcGxpY2F0aW9ucyBhcmUgc28gc2ltcGxlDQo+IHRoYXQNCj4gPiA+IHRo ZSBicmFuY2ggcHJlZGljdG9yIHdpbGwgY292ZXIgdGhlIGVudGlyZSBkYXRhIHBhdGg/IEkgaGVh ciB0aGlzDQo+ID4gPiBhcmd1bWVudCBvdmVyIGFuZCBvdmVyIGFnYWluLCBhbmQgYnkgcHJpbmNp cGxlIEkgZGlzYWdyZWUgd2l0aCBpdCENCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBGYWlyIGVub3Vn aCwgdGhhdCB3YXMgYW4gYXNzdW1wdGlvbiBvbiBteSBwYXJ0LiBEbyB5b3Ugc2VlIGluIHlvdXIN Cj4gYXBwcw0KPiA+ID4gbWFueSBjYXNlcyB3aGVyZSBicmFuY2hlcyBhcmUgZ2V0dGluZyBtaXNw cmVkaWN0ZWQgZGVzcGl0ZSBnb2luZw0KPiB0aGUNCj4gPiA+IHNhbWUNCj4gPiA+IHdheSBlYWNo IHRpbWUgdGhvdWdoIHRoZSBjb2RlPw0KPiA+ID4NCj4gPiBXZSBoYXZlbid0IGxvb2tlZCBkZWVw bHkgaW50byB0aGlzLCBidXQgSSBkb24ndCB0aGluayBzby4NCj4gPg0KPiA+IE15IG9iamVjdGlv biBpcyBvZiBhIG1vcmUgZ2VuZXJhbCBuYXR1cmUuIEFzIGEgbGlicmFyeSwgRFBESyBjYW5ub3QN Cj4gYXNzdW1lIHRoYXQgYXBwbGljYXRpb25zIHVzaW5nIGl0IGFyZSBzaW1wbGUsIGFuZCAtIGJh c2VkIG9uIHRoYXQNCj4gYXNzdW1wdGlvbiAtIHRha2UgYXdheSByZXNvdXJjZXMgdGhhdCBjb3Vs ZCBoYXZlIGJlZW4gYXZhaWxhYmxlIGZvciB0aGUNCj4gYXBwbGljYXRpb24uDQo+ID4NCj4gPiBU aGUgSW50ZWwgZ2VuZXJhbCBvcHRpbWl6YXRpb24gZ3VpZGVsaW5lcyBzcGVjaWZpZXMgdGhhdCBj b2RlIHNob3VsZA0KPiBiZSBhcnJhbmdlZCB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIHN0YXRp YyBicmFuY2ggcHJlZGljdGlvbg0KPiBhbGdvcml0aG06IG1ha2UgdGhlIGZhbGwtdGhyb3VnaCBj b2RlIGZvbGxvd2luZyBhIGNvbmRpdGlvbmFsIGJyYW5jaCBiZQ0KPiB0aGUgbGlrZWx5IHRhcmdl dCBmb3IgYSBicmFuY2ggd2l0aCBhIGZvcndhcmQgdGFyZ2V0LCBhbmQgbWFrZSB0aGUNCj4gZmFs bC10aHJvdWdoIGNvZGUgZm9sbG93aW5nIGEgY29uZGl0aW9uYWwgYnJhbmNoIGJlIHRoZSB1bmxp a2VseSB0YXJnZXQNCj4gZm9yIGEgYnJhbmNoIHdpdGggYSBiYWNrd2FyZCB0YXJnZXQuDQo+ID4N Cj4gPiBJdCBhbHNvIHNheXM6IENvbmRpdGlvbmFsIGJyYW5jaGVzIHRoYXQgYXJlIG5ldmVyIHRh a2VuIGRvIG5vdA0KPiBjb25zdW1lIEJUQiByZXNvdXJjZXMuDQo+ID4NCj4gPiBTb21laG93IHRo aXMgbGFzdCBkZXRhaWwgaXMgY29tcGxldGVseSBpZ25vcmVkIGJ5IERQREsgZGV2ZWxvcGVycy4N Cj4gPg0KPiA+IFdlIHB1dCBhIGxvdCBvZiBlZmZvcnQgaW50byBjb25zZXJ2aW5nIHJlc291cmNl cyBpbiBtb3N0IGFyZWFzIGluDQo+IERQREssIGJ1dCB3aGVuIGl0IGNvbWVzIHRvIHRoZSBicmFu Y2ggcHJlZGljdGlvbiB0YXJnZXQgYnVmZmVyIChCVEIpLA0KPiB3ZSBnbGFkbHkgb3JnYW5pemUg Y29kZSB3aXRoIGJyYW5jaGVzIHR1cm5pbmcgdGhlIHdyb25nIHdheSwgdGh1cw0KPiB1bm5lY2Vz c2FyaWx5IGNvbnN1bWluZyBCVEIgZW50cmllcy4gQW5kIHRoZSBhcmd1bWVudCBnb2VzOiBUaGUg YnJhbmNoDQo+IHByZWRpY3RvciB3aWxsIGNhdGNoIGl0IGFmdGVyIHRoZSBmaXJzdCB0aW1lLg0K PiA+DQo+IA0KPiBMb29rcyBsaWtlIHNvbWV0aGluZyB0byBpbnZlc3RpZ2F0ZSBtb3JlLiBUaGFu a3MgZm9yIGJyaW5naW5nIHRoaXMgdXAuDQo+IA0KPiA+ID4gPiBIb3cgYWJvdXQgYyk6IGFkZCBy dGVfZXRoX3J4KCkgYW5kIHJ0ZV9ldGhfdHgoKSBmdW5jdGlvbnMgZm9yDQo+ID4gPiByZWNlaXZp bmcvdHJhbnNtaXR0aW5nIGEgc2luZ2xlIHBhY2tldC4gVGhlIHJpbmcgbGlicmFyeSBoYXMgc3Vj aA0KPiA+ID4gZnVuY3Rpb25zLg0KPiA+ID4gPg0KPiA+ID4gPiBPcHRpbWl6ZWQgc2luZ2xlLXBh Y2tldCBmdW5jdGlvbnMgbWlnaHQgZXZlbiBwZXJmb3JtIGJldHRlciB0aGFuDQo+ID4gPiBjYWxs aW5nIHRoZSBidXJzdCBmdW5jdGlvbnMgd2l0aCBuYl9wa3RzPTEuIEdyZWF0IGZvciBsYXRlbmN5 DQo+IGZvY3VzZWQNCj4gPiA+IGFwcGxpY2F0aW9ucy4gOi0pDQo+ID4gPiA+DQo+ID4gPiBUaGF0 IGlzIGFub3RoZXIgb3B0aW9uLCB5ZXMuDQo+ID4gPiBBIGZ1cnRoZXIgb3B0aW9uIGlzIHRvIGFk ZCB0byB0aGUgdmVjdG9yIGNvZGUgYSBvbmUtb2ZmIHN3aXRjaCB0bw0KPiBjaGVjaw0KPiA+ID4g Zmlyc3QNCj4gPiA+IHRpbWUgaXQncyBjYWxsZWQgdGhhdCB0aGUgcmVxdWVzdCBzaXplIGlzIG5v dCBsb3dlciB0aGFuIHRoZSBtaW4NCj4gPiA+IHN1cHBvcnRlZA0KPiA+ID4gKGFnYWluIGJhc2lu ZyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IG9uZSBpcyBub3QgZ29pbmcgdG8gYmUgdmFyeWluZw0K PiB0aGUNCj4gPiA+IGJ1cnN0IHNpemUgYXNrZWQgLSB3aGljaCBtYXkgbm90IGJlIHRydWUgaW4g Y2FsbCBjYXNlcyBidXQgd29uJ3QNCj4gbGVhdmUNCj4gPiA+IHVzDQo+ID4gPiBhbnkgd29yc2Ug b2ZmIHRoYW4gd2UgYXJlIG5vdyEpLg0KPiA+DQo+ID4gSSBjZXJ0YWlubHkgZG9uJ3Qgc3VwcG9y dCB0aGlzIG9wdGlvbi4gQnV0IGl0IHdhcyB3b3J0aCBtZW50aW9uaW5nLg0KPiA+DQo+IA0KPiBS aWdodC4gRm9yIG5vdyB0aGVuLCBpdCBzZWVtcyBsaWtlIGp1c3QgZG9jdW1lbnRpbmcgYSBtaW5p bXVtIGJ1cnN0DQo+IHNpemUgaXMNCj4gcmVhc29uYWJsZS4NCg0KSSBhZ3JlZS4gSXQgaXMgc28g ZmFyIGZyb20gdGhlIHNwaXJpdCBvZiBEUERLIHRvIGNhbGwgcnRlX2V0aF9yeF9idXJzdCgpIHdp dGggYSBzbWFsbCBuYl9wa3RzIHRoYXQgdGhlIGRyaXZlciBkZXZlbG9wZXJzIGRpZG4ndCBldmVu IGNvbnNpZGVyIGl0LiBUaGUgQVBJIGRvY3VtZW50YXRpb24gbmVlZHMgZml4aW5nLCBub3QgdGhl IGRyaXZlcnMuDQoNCkl0IGRvZXNuJ3QgdGFrZSBjYXJlIG9mIHlvdXIgZXhhbXBsZSA0IHBhY2tl dCBsYXRlbmN5IHNlbnNpdGl2ZSBhcHBsaWNhdGlvbiwgdGhvdWdoLiBXaGljaCBCVFcgYWxzbyBk b2VzbuKAmXQgd29yayB0b2RheSBvbiBkcml2ZXJzIHdpdGggdmVjdG9yIHN1cHBvcnQuIFNvIGl0 IG1pZ2h0IG5vdCBiZSBhIHJlYWwgd29ybGQgc2NlbmFyaW8gYW55d2F5LiA6LSkNCg0KPiANCj4g L0JydWNlDQoNCg==