From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60063.outbound.protection.outlook.com [40.107.6.63]) by dpdk.org (Postfix) with ESMTP id 30DA95F36 for ; Mon, 28 Jan 2019 23:31:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7CoB59jX1eNigzrTDsV8JD6abrCHh7QbnNACU5eVNCs=; b=WE1LQMtC+Yu6KozT55QdF2a1hWnzZqo/lyqz6Q52U7boWQPAN3CCuzWst4+sRVtLHedSG1P/BnSVu5VhbGUIPoXff/0jTMgyMgJikYaWkxTqArlpACihPjI8NX4P/hPyt9nYGvC19yecI3Vf6gNzbwLDPpW2NoA56YPGfoMGj04= Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com (10.168.95.140) by HE1PR0801MB1769.eurprd08.prod.outlook.com (10.168.150.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.31; Mon, 28 Jan 2019 22:31:14 +0000 Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::f5e3:70fc:e834:3c42]) by HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::f5e3:70fc:e834:3c42%3]) with mapi id 15.20.1558.023; Mon, 28 Jan 2019 22:31:14 +0000 From: Ola Liljedahl To: "jerinj@marvell.com" , "mczekaj@marvell.com" , "gage.eads@intel.com" , "dev@dpdk.org" CC: "olivier.matz@6wind.com" , "stephen@networkplumber.org" , nd , "bruce.richardson@intel.com" , "arybchenko@solarflare.com" , "konstantin.ananyev@intel.com" Thread-Topic: [dpdk-dev] [PATCH v3 2/5] ring: add a non-blocking implementation Thread-Index: AQHUr0H3NsJBTf2hT0+nXGXAmKraP6W7ZOeAgABKckCAAPt7gIADjkUwgARS7wCAAIhhsIAAP3qA Date: Mon, 28 Jan 2019 22:31:14 +0000 Message-ID: <1548714685.11472.81.camel@arm.com> References: <20190115235227.14013-1-gage.eads@intel.com> <20190118152326.22686-1-gage.eads@intel.com> <20190118152326.22686-3-gage.eads@intel.com> <1548168583.31150.32.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CA46E@FMSMSX108.amr.corp.intel.com> <1548238575.31150.73.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CB6FE@FMSMSX108.amr.corp.intel.com> <1548671766.3076.16.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CC312@FMSMSX108.amr.corp.intel.com> In-Reply-To: <9184057F7FC11744A2107296B6B8EB1E541CC312@FMSMSX108.amr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.18.5.2-0ubuntu3.2 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ola.Liljedahl@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1769; 6:o4fnV3hhHo00EckF37gzVsObp6OhVvleBJKEb6pJoJxFsXZvy6yyzzpgS4MKuiRKhnNVhprVEMpK5KoHAvVlweeRsLMB6ghwrkEoyij7NuwJQdkMj1nR5LhSu8KDCwqPPCOsTAOS82Zy4wyFuaDAR5tOiulwA0kKaHkL4V3kJATwJALqxSMmWoPRiDA3gD6qvxqE6lPtX+ow8OS/gBk3lLPMy5s4JIdHoQX1BPYCwd1rkL3vB82nC/wOO6KGUqMRVD8IM0bjE5C+gNnIFEwOudNbeqbhXyWXpZCXXEz6VcAy4Tq5piqZUjvrVnpk/4h7eF7lrKoYktYu31sQXiLvcZN+Ub3t7uR3T+SJJCnsRTkbxpm7lb+48wJaC7P3BEAz244AvLeonNO0nNUPpifH6ATobf2SZL5EUy9nQ0yQtsucNMKIJli1rrvLhElA/kBGaVN1rC0Kj374gui8jsiFEA==; 5:hv824JUhFWyjOj0YiDTmqYvpa0Y83/sxYdgTrvU1cBZ+pv8rkxf9Ny+NF0IgTD90GQDULYgH6z28XwOM7LkfaLzaesalOFsdJxA1FlpBQrKAoN9+TxX1YU3OXTyI6W0fpnU/Y2mqoQID1L0cmNdGunXTk5q+aJC4QYOJW4v+ZEXFPZ8dpDmbyr+ZFpZjJX4o6NqD301du+khq5FSWan4uw==; 7:4JF7gxpXvbFW20qj6/ISbCFf2/DyN0h2LWbbJilSKgLddIbho2f2kJv2armqVL1AwP82/IAjSwMAxNZhRgzak/ai3bcwujP0jAd88FJSzCfbPUXhj0wD/UGqciOS4l6m48464wSM8BYGIK/7rJuOkQ== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 78d84269-680c-4993-f7f4-08d685705031 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1769; x-ms-traffictypediagnostic: HE1PR0801MB1769: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr nodisclaimer: True x-microsoft-antispam-prvs: x-forefront-prvs: 0931CB1479 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(396003)(346002)(376002)(136003)(199004)(189003)(52314003)(13464003)(966005)(6246003)(14444005)(256004)(4326008)(2501003)(229853002)(8936002)(6436002)(14454004)(478600001)(105586002)(6306002)(68736007)(66066001)(106356001)(86362001)(25786009)(103116003)(71190400001)(6506007)(53546011)(53936002)(71200400001)(6486002)(50226002)(72206003)(6512007)(97736004)(2201001)(8676002)(6116002)(93886005)(30864003)(486006)(2616005)(305945005)(11346002)(446003)(99286004)(102836004)(476003)(7736002)(186003)(54906003)(2906002)(36756003)(81156014)(26005)(76176011)(3846002)(110136005)(81166006)(316002)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1769; H:HE1PR0801MB2076.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: nUMPuN+SsZsV2Yqen7Ym4rZox6p9djkPsMXL12j98d1A8qbhtm4Vxo5W5kKM0evRrNdMyK5xPE4QsYtw/F1YoC0s8C4nhF3K32PPHWr+5Hmp5frwNDuGUMNnYBqBA+wuyeES7MiTcoEGWKb4mJqGOgKdkmI1W6M97mhvrEbM2Pyral4AgPxU2qAXeBAL8uY9UNchAV3EAvT+wc2Czq0ff4cvSuvDoL9jc6Bt0GlHsdHt7rsE7MlPHo4P4i2JAsvIOD4eNouPcaConLxU+l6FHxWMyW7Xzc31Q/38kjHsN+ci0XpLP8IZpfUXg/ISTsMEj9FjhHTV8GET8cO+uDjUYOa6cuKvHwDUUfl8pFlJgiuEcEFUSbmVkWN962CsQ42JSfeOOyxR38910JhvhM7vC2gOeWmhkYjycA0drgB+jj8= Content-Type: text/plain; charset="utf-8" Content-ID: <9C7935FF3C70474F848B6D14BD0E626F@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78d84269-680c-4993-f7f4-08d685705031 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jan 2019 22:31:14.6426 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1769 Subject: Re: [dpdk-dev] [PATCH v3 2/5] ring: add a non-blocking implementation 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, 28 Jan 2019 22:31:18 -0000 T24gTW9uLCAyMDE5LTAxLTI4IGF0IDE4OjU0ICswMDAwLCBFYWRzLCBHYWdlIHdyb3RlOg0KPiAN Cj4gPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE9sYSBMaWxq ZWRhaGwgW21haWx0bzpPbGEuTGlsamVkYWhsQGFybS5jb21dDQo+ID4gU2VudDogTW9uZGF5LCBK YW51YXJ5IDI4LCAyMDE5IDQ6MzYgQU0NCj4gPiBUbzogamVyaW5qQG1hcnZlbGwuY29tOyBtY3pl a2FqQG1hcnZlbGwuY29tOyBFYWRzLCBHYWdlDQo+ID4gPGdhZ2UuZWFkc0BpbnRlbC5jb20+OyBk ZXZAZHBkay5vcmcNCj4gPiBDYzogb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsgc3RlcGhlbkBuZXR3 b3JrcGx1bWJlci5vcmc7IG5kDQo+ID4gPG5kQGFybS5jb20+OyBSaWNoYXJkc29uLCBCcnVjZSA8 YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+Ow0KPiA+IGFyeWJjaGVua29Ac29sYXJmbGFyZS5j b207IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNv bT4NCj4gPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjMgMi81XSByaW5nOiBhZGQg YSBub24tYmxvY2tpbmcNCj4gPiBpbXBsZW1lbnRhdGlvbg0KPiA+IA0KPiA+IE9uIEZyaSwgMjAx OS0wMS0yNSBhdCAxNzoyMSArMDAwMCwgRWFkcywgR2FnZSB3cm90ZToNCj4gPiA+IA0KPiA+ID4g DQo+ID4gPiA+IA0KPiA+ID4gPiANCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiA+ID4gRnJvbTogT2xhIExpbGplZGFobCBbbWFpbHRvOk9sYS5MaWxqZWRhaGxAYXJtLmNv bV0NCj4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBKYW51YXJ5IDIzLCAyMDE5IDQ6MTYgQU0NCj4g PiA+ID4gVG86IEVhZHMsIEdhZ2UgPGdhZ2UuZWFkc0BpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcN Cj4gPiA+ID4gQ2M6IG9saXZpZXIubWF0ekA2d2luZC5jb207IHN0ZXBoZW5AbmV0d29ya3BsdW1i ZXIub3JnOyBuZA0KPiA+ID4gPiA8bmRAYXJtLmNvbT47IFJpY2hhcmRzb24sIEJydWNlIDxicnVj ZS5yaWNoYXJkc29uQGludGVsLmNvbT47DQo+ID4gPiA+IGFyeWJjaGVua29Ac29sYXJmbGFyZS5j b207IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPiA+ID4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRl bC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2MyAyLzVdIHJp bmc6IGFkZCBhIG5vbi1ibG9ja2luZw0KPiA+ID4gPiBpbXBsZW1lbnRhdGlvbg0KPiA+ID4gPiAN Cj4gPiA+ID4gT24gVHVlLCAyMDE5LTAxLTIyIGF0IDIxOjMxICswMDAwLCBFYWRzLCBHYWdlIHdy b3RlOg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IEhpIE9sYSwNCj4gPiA+ID4g PiANCj4gPiA+ID4gPiA8c25pcD4NCj4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4g PiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gQEAgLTMzMSw2ICs0MzMsMzE5IEBAIHZvaWQgcnRlX3Jp bmdfZHVtcChGSUxFICpmLCBjb25zdCBzdHJ1Y3QNCj4gPiA+ID4gPiA+ID4gcnRlX3JpbmcgKnIp Ow0KPiA+ID4gPiA+ID4gPiDCoCNlbmRpZg0KPiA+ID4gPiA+ID4gPiDCoCNpbmNsdWRlICJydGVf cmluZ19nZW5lcmljXzY0LmgiDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiArLyogQGlu dGVybmFsIDEyOC1iaXQgc3RydWN0dXJlIHVzZWQgYnkgdGhlIG5vbi1ibG9ja2luZyByaW5nDQo+ ID4gPiA+ID4gPiA+ICsqLyBzdHJ1Y3QgbmJfcmluZ19lbnRyeSB7DQo+ID4gPiA+ID4gPiA+ICsJ dm9pZCAqcHRyOyAvKio8IERhdGEgcG9pbnRlciAqLw0KPiA+ID4gPiA+ID4gPiArCXVpbnQ2NF90 IGNudDsgLyoqPCBNb2RpZmljYXRpb24gY291bnRlciAqLw0KPiA+ID4gPiA+ID4gV2h5IG5vdCBt YWtlICdjbnQnIHVpbnRwdHJfdD8gVGhpcyB3YXkgMzItYml0IGFyY2hpdGVjdHVyZXMgd2lsbA0K PiA+ID4gPiA+ID4gYWxzbyBiZSBzdXBwb3J0ZWQuIEkgdGhpbmsgdGhlcmUgYXJlIHNvbWUgY2xh aW1zIHRoYXQgRFBESyBzdGlsbA0KPiA+ID4gPiA+ID4gc3VwcG9ydHMgZS5nLg0KPiA+ID4gPiA+ ID4gQVJNdjdhDQo+ID4gPiA+ID4gPiBhbmQgcG9zc2libHkgYWxzbyAzMi1iaXQgeDg2Pw0KPiA+ ID4gPiA+IEkgY2hvc2UgYSA2NC1iaXQgbW9kaWZpY2F0aW9uIGNvdW50ZXIgYmVjYXVzZSAocHJh Y3RpY2FsbHkNCj4gPiA+ID4gPiBzcGVha2luZykgdGhlIEFCQSBwcm9ibGVtIHdpbGwgbm90IG9j Y3VyIHdpdGggc3VjaCBhIGxhcmdlIGNvdW50ZXINCj4gPiA+ID4gPiAtLSBkZWZpbml0ZWx5IG5v dCB3aXRoaW4gbXkgbGlmZXRpbWUuIFNlZSB0aGUgIkRpc2N1c3Npb24iIHNlY3Rpb24NCj4gPiA+ ID4gPiBvZiB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQo+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gV2l0aCBhIDMyLWJpdCBjb3VudGVyLCB0aGVyZSBpcyBhIHZlcnkgKHZl cnkpIGxvdyBsaWtlbGlob29kIG9mDQo+ID4gPiA+ID4gaXQsIGJ1dCBpdCBpcyBwb3NzaWJsZS4g UGVyc29uYWxseSwgSSBkb24ndCBmZWVsIGNvbWZvcnRhYmxlDQo+ID4gPiA+ID4gcHJvdmlkaW5n IHN1Y2ggY29kZSwgYmVjYXVzZSBhKSBJIGRvdWJ0IGFsbCB1c2VycyB3b3VsZCB1bmRlcnN0YW5k DQo+ID4gPiA+ID4gdGhlIGltcGxlbWVudGF0aW9uIHdlbGwgZW5vdWdoIHRvIGRvIHRoZSByaXNr L3Jld2FyZCBhbmFseXNpcywgYW5kDQo+ID4gPiA+ID4gYikgc3VjaCBhIGJ1ZyB3b3VsZCBiZSBu ZWFyIGltcG9zc2libGUgdG8gcmVwcm9kdWNlIGFuZCByb290LWNhdXNlDQo+ID4gPiA+ID4gaWYg aXQgZGlkIG9jY3VyLg0KPiA+ID4gPiBXaXRoIGEgNjQtYml0IGNvdW50ZXIgKGFuZCAzMi1iaXQg cG9pbnRlciksIDMyLWJpdCBhcmNoaXRlY3R1cmVzIChlLmcuDQo+ID4gPiA+IEFSTXY3YSBhbmQN Cj4gPiA+ID4gcHJvYmFibHkgeDg2IGFzIHdlbGwpIHdvbid0IGJlIGFibGUgdG8gc3VwcG9ydCB0 aGlzIGFzIHRoZXkgYXQgYmVzdA0KPiA+ID4gPiBzdXBwb3J0IDY0LWJpdCBDQVMgKEFSTXY3YSBo YXMgTERSRVhEL1NUUkVYRCkuIFNvIHlvdSBhcmUNCj4gPiA+ID4gZXNzZW50aWFsbHkgcHV0dGlu ZyBhIDY0LWJpdCAoYW5kIDEyOC1iaXQgQ0FTKSByZXF1aXJlbWVudCBvbiB0aGUNCj4gPiA+ID4g aW1wbGVtZW50YXRpb24uDQo+ID4gPiA+IA0KPiA+ID4gWWVzLCBJIGFtLiBJIHRyaWVkIHRvIG1h a2UgdGhhdCBjbGVhciBpbiB0aGUgY292ZXIgbGV0dGVyLg0KPiA+ID4gDQo+ID4gPiA+IA0KPiA+ ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiArfTsNCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLyogVGhlIG5vbi1ibG9ja2luZyByaW5nIGFsZ29y aXRobSBpcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwNCj4gPiA+ID4gPiA+ID4gK3J0ZSByaW5nIChk ZXJpdmVkDQo+ID4gPiA+ID4gPiA+ICsgKiBmcm9tIEZyZWVCU0QncyBidWZyaW5nLmgpIGFuZCBp bnNwaXJlZCBieSBNaWNoYWVsIGFuZA0KPiA+ID4gPiA+ID4gPiArU2NvdHQncyBub24tYmxvY2tp bmcNCj4gPiA+ID4gPiA+ID4gKyAqIGNvbmN1cnJlbnQgcXVldWUuDQo+ID4gPiA+ID4gPiA+ICsg Ki8NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiA+ICsg KiBAaW50ZXJuYWwNCj4gPiA+ID4gPiA+ID4gKyAqwqDCoMKgRW5xdWV1ZSBzZXZlcmFsIG9iamVj dHMgb24gdGhlIG5vbi1ibG9ja2luZyByaW5nDQo+ID4gPiA+ID4gPiA+ICsoc2luZ2xlLXByb2R1 Y2VyIG9ubHkpDQo+ID4gPiA+ID4gPiA+ICsgKg0KPiA+ID4gPiA+ID4gPiArICogQHBhcmFtIHIN Cj4gPiA+ID4gPiA+ID4gKyAqwqDCoMKgQSBwb2ludGVyIHRvIHRoZSByaW5nIHN0cnVjdHVyZS4N Cj4gPiA+ID4gPiA+ID4gKyAqIEBwYXJhbSBvYmpfdGFibGUNCj4gPiA+ID4gPiA+ID4gKyAqwqDC oMKgQSBwb2ludGVyIHRvIGEgdGFibGUgb2Ygdm9pZCAqIHBvaW50ZXJzIChvYmplY3RzKS4NCj4g PiA+ID4gPiA+ID4gKyAqIEBwYXJhbSBuDQo+ID4gPiA+ID4gPiA+ICsgKsKgwqDCoFRoZSBudW1i ZXIgb2Ygb2JqZWN0cyB0byBhZGQgaW4gdGhlIHJpbmcgZnJvbSB0aGUgb2JqX3RhYmxlLg0KPiA+ ID4gPiA+ID4gPiArICogQHBhcmFtIGJlaGF2aW9yDQo+ID4gPiA+ID4gPiA+ICsgKsKgwqDCoFJU RV9SSU5HX1FVRVVFX0ZJWEVEOsKgwqDCoMKgRW5xdWV1ZSBhIGZpeGVkIG51bWJlciBvZiBpdGVt cw0KPiA+ID4gPiA+ID4gPiArdG8gdGhlIHJpbmcNCj4gPiA+ID4gPiA+ID4gKyAqwqDCoMKgUlRF X1JJTkdfUVVFVUVfVkFSSUFCTEU6IEVucXVldWUgYXMgbWFueSBpdGVtcyBhcw0KPiA+ID4gPiA+ ID4gPiArcG9zc2libGUgdG8gdGhlIHJpbmcNCj4gPiA+ID4gPiA+ID4gKyAqIEBwYXJhbSBmcmVl X3NwYWNlDQo+ID4gPiA+ID4gPiA+ICsgKsKgwqDCoHJldHVybnMgdGhlIGFtb3VudCBvZiBzcGFj ZSBhZnRlciB0aGUgZW5xdWV1ZSBvcGVyYXRpb24NCj4gPiA+ID4gPiA+ID4gK2hhcyBmaW5pc2hl ZA0KPiA+ID4gPiA+ID4gPiArICogQHJldHVybg0KPiA+ID4gPiA+ID4gPiArICrCoMKgwqBBY3R1 YWwgbnVtYmVyIG9mIG9iamVjdHMgZW5xdWV1ZWQuDQo+ID4gPiA+ID4gPiA+ICsgKsKgwqDCoElm IGJlaGF2aW9yID09IFJURV9SSU5HX1FVRVVFX0ZJWEVELCB0aGlzIHdpbGwgYmUgMCBvciBuDQo+ ID4gPiA+ID4gPiA+IG9ubHkuDQo+ID4gPiA+ID4gPiA+ICsgKi8NCj4gPiA+ID4gPiA+ID4gK3N0 YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludA0KPiA+ID4gPiA+ID4gPiArX19y dGVfcmluZ19kb19uYl9lbnF1ZXVlX3NwKHN0cnVjdCBydGVfcmluZyAqciwgdm9pZCAqIGNvbnN0 DQo+ID4gPiA+ID4gPiA+ICpvYmpfdGFibGUsDQo+ID4gPiA+ID4gPiA+ICsJCQnCoMKgwqDCoHVu c2lnbmVkIGludCBuLA0KPiA+ID4gPiA+ID4gPiArCQkJwqDCoMKgwqBlbnVtIHJ0ZV9yaW5nX3F1 ZXVlX2JlaGF2aW9yDQo+ID4gPiA+ID4gPiA+IGJlaGF2aW9yLA0KPiA+ID4gPiA+ID4gPiArCQkJ wqDCoMKgwqB1bnNpZ25lZCBpbnQgKmZyZWVfc3BhY2UpIHsNCj4gPiA+ID4gPiA+ID4gKwl1aW50 MzJfdCBmcmVlX2VudHJpZXM7DQo+ID4gPiA+ID4gPiA+ICsJc2l6ZV90IGhlYWQsIG5leHQ7DQo+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKwluID0gX19ydGVfcmluZ19tb3ZlX3Byb2Rf aGVhZF82NChyLCAxLCBuLCBiZWhhdmlvciwNCj4gPiA+ID4gPiA+ID4gKwkJCQkJwqAmaGVhZCwg Jm5leHQsDQo+ID4gPiA+ID4gPiA+ICZmcmVlX2VudHJpZXMpOw0KPiA+ID4gPiA+ID4gPiArCWlm IChuID09IDApDQo+ID4gPiA+ID4gPiA+ICsJCWdvdG8gZW5kOw0KPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ICsJRU5RVUVVRV9QVFJTX05CKHIsICZyWzFdLCBoZWFkLCBvYmpfdGFibGUs IG4pOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsJci0+cHJvZF82NC50YWlsICs9 IG47DQo+ID4gPiA+ID4gPiBEb24ndCB3ZSBuZWVkIHJlbGVhc2Ugb3JkZXIgd2hlbiAob3Igc21w X3dtYiBiZXR3ZWVuKSB3cml0aW5nIG9mDQo+ID4gPiA+ID4gPiB0aGUgcmluZyBwb2ludGVycyBh bmQgdGhlIHVwZGF0ZSBvZiB0YWlsPyBCeSB1cGRhdGluZyB0aGUgdGFpbA0KPiA+ID4gPiA+ID4g cG9pbnRlciwgd2UgYXJlIHN5bmNocm9uaXNpbmcgd2l0aCBhIGNvbnN1bWVyLg0KPiA+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gPiBJIHByZWZlciB1c2luZyBfX2F0b21pYyBvcGVyYXRpb25zIGV2ZW4g Zm9yIGxvYWQgYW5kIHN0b3JlLiBZb3UNCj4gPiA+ID4gPiA+IGNhbiBzZWUgd2hpY2ggcGFydHMg b2YgdGhlIGNvZGUgdGhhdCBzeW5jaHJvbmlzZSB3aXRoIGVhY2ggb3RoZXIsDQo+ID4gPiA+ID4g PiBlLmcuDQo+ID4gPiA+ID4gPiBzdG9yZS1yZWxlYXNlIHRvIHNvbWUgbG9jYXRpb24gc3luY2hy b25pc2VzIHdpdGggbG9hZC1hY3F1aXJlDQo+ID4gPiA+ID4gPiBmcm9tIHRoZSBzYW1lIGxvY2F0 aW9uLiBJZiB5b3UgZG9uJ3Qga25vdyBob3cgZGlmZmVyZW50IHRocmVhZHMNCj4gPiA+ID4gPiA+ IHN5bmNocm9uaXNlIHdpdGggZWFjaCBvdGhlciwgeW91IGFyZSB2ZXJ5IGxpa2VseSB0byBtYWtl IG1pc3Rha2VzLg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gWW91IGNhbiB0ZWxsIHRoaXMgY29k ZSB3YXMgd3JpdHRlbiB3aGVuIEkgdGhvdWdodCB4ODYtNjQgd2FzIHRoZQ0KPiA+ID4gPiA+IG9u bHkgdmlhYmxlIHRhcmdldCA6KS4gWWVzLCB5b3UgYXJlIGNvcnJlY3QuDQo+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gV2l0aCByZWdhcmRzIHRvIHVzaW5nIF9fYXRvbWljIGludHJpbnNpY3MsIEknbSBw bGFubmluZyBvbiB0YWtpbmcNCj4gPiA+ID4gPiBhIHNpbWlsYXIgYXBwcm9hY2ggdG8gdGhlIGZ1 bmN0aW9ucyBkdXBsaWNhdGVkIGluDQo+ID4gPiA+ID4gcnRlX3JpbmdfZ2VuZXJpYy5oIGFuZA0K PiA+ID4gPiA+IHJ0ZV9yaW5nX2MxMV9tZW0uaDogb25lIHZlcnNpb24gdGhhdCB1c2VzIHJ0ZV9h dG9taWMgZnVuY3Rpb25zDQo+ID4gPiA+ID4gKGFuZCB0aHVzIHN0cmljdGVyIG1lbW9yeSBvcmRl cmluZykgYW5kIG9uZSB0aGF0IHVzZXMgX19hdG9taWMNCj4gPiA+ID4gPiBpbnRyaW5zaWNzIChh bmQgdGh1cyBjYW4gYmVuZWZpdCBmcm9tIG1vcmUgcmVsYXhlZCBtZW1vcnkgb3JkZXJpbmcpLg0K PiA+IEZyb20gYSBjb2RlIHBvaW50IG9mIHZpZXcsIEkgc3Ryb25nbHkgcHJlZmVyIHRoZSBhdG9t aWMgb3BlcmF0aW9ucyB0byBiZQ0KPiA+IHZpc2libGUNCj4gPiBpbiB0aGUgdG9wIGxldmVsIGNv ZGUsIG5vdCBoaWRkZW4gaW4gc3Vicm91dGluZXMuIEZvciBjb3JyZWN0bmVzcywgaXQgaXMNCj4g PiB2aXRhbCB0aGF0DQo+ID4gbWVtb3J5IGFjY2Vzc2VzIGFyZSBwZXJmb3JtZWQgd2l0aCB0aGUg cmVxdWlyZWQgb3JkZXJpbmcgYW5kIHRoYXQgYWNxdWlyZQ0KPiA+IGFuZA0KPiA+IHJlbGVhc2Ug bWF0Y2hlcyB1cC4gSGlkaW5nIGUuZy4gbG9hZC1hY3F1aXJlIGFuZCBzdG9yZS1yZWxlYXNlIGlu DQo+ID4gc3Vicm91dGluZXMgKGluDQo+ID4gYSBkaWZmZXJlbnQgZmlsZSEpIG1ha2UgdGhpcyBk aWZmaWN1bHQuIFRoZXJlIGhhdmUgYWxyZWFkeSBiZWVuIHN1Y2ggYnVncw0KPiA+IGZvdW5kIGlu DQo+ID4gcnRlX3JpbmcuDQo+ID4gDQo+IEFmdGVyIHdvcmtpbmcgb24gdGhlIGFjcS9yZWwgb3Jk ZXJpbmcgdGhpcyB3ZWVrZW5kLCBJIGFncmVlLiBUaGlzJ2xsIGJlDQo+IGVhc2llci9jbGVhbmVy IGlmIHdlIGVuZCB1cCBvbmx5IHVzaW5nIHRoZSBDMTEgdmVyc2lvbi4NCkZhYnVsb3VzIQ0KDQpB cyBJIHdyb3RlIGluIGEgcmVzcG9uc2UgdG8gSmVyaW4sIHdpdGggYSBzbWFsbCBjaGVhdCAoTG9h ZFN0b3JlIGZlbmNlK3N0b3JlLQ0KcmVsYXhlZCBpbnN0ZWFkIG9mIHN0b3JlLXJlbGVhc2UgaW4g dGhlIGRlcXVldWUgZnVuY3Rpb24gd2hlcmUgd2Ugb25seSByZWFkDQpzaGFyZWQgZGF0YSBpbiB0 aGUgY3JpdGljYWwgc2VjdGlvbiksIEMxMSBzaG91bGQgcHJvdmlkZSB0aGUgc2FtZSBvcmRlcmlu ZyBhbmQNCnRodXMgdGhlIHNhbWUgcGVyZm9ybWFuY2UgYXMgdGhlIGV4cGxpY2l0IGJhcnJpZXIg dmVyc2lvbi4gQmVuY2htYXJraW5nIHdpbGwNCnNob3cuDQoNCj4gDQo+ID4gDQo+ID4gPiANCj4g PiA+ID4gDQo+ID4gPiA+IFdoYXQncyB0aGUgYWR2YW50YWdlIG9mIGhhdmluZyB0d28gZGlmZmVy ZW50IGltcGxlbWVudGF0aW9ucz8gV2hhdA0KPiA+ID4gPiBpcyB0aGUgZGlzYWR2YW50YWdlPw0K PiA+ID4gPiANCj4gPiA+ID4gVGhlIGV4aXN0aW5nIHJpbmcgYnVmZmVyIGNvZGUgb3JpZ2luYWxs eSBoYWQgb25seSB0aGUgImxlZ2FjeSINCj4gPiA+ID4gaW1wbGVtZW50YXRpb24NCj4gPiA+ID4g d2hpY2ggd2FzIGtlcHQgd2hlbiB0aGUgX19hdG9taWMgaW1wbGVtZW50YXRpb24gd2FzIGFkZGVk LiBUaGUNCj4gPiA+ID4gcmVhc29uIGNsYWltZWQgd2FzIHRoYXQgc29tZSBvbGRlciBjb21waWxl cnMgZm9yIHg4NiBkbyBub3Qgc3VwcG9ydA0KPiA+ID4gPiBHQ0MgX19hdG9taWMgYnVpbHRpbnMu IEJ1dCBJIHRob3VnaHQgdGhlcmUgd2FzIGNvbnNlbnN1cyB0aGF0IG5ldw0KPiA+ID4gPiBmdW5j dGlvbmFsaXR5IGNvdWxkIGhhdmUgb25seSBfX2F0b21pYyBpbXBsZW1lbnRhdGlvbnMuDQo+ID4g PiA+IA0KPiA+ID4gV2hlbiBDT05GSUdfUlRFX1JJTkdfVVNFX0MxMV9NRU1fTU9ERUwgd2FzIGlu dHJvZHVjZWQsIGl0IHdhcyBsZWZ0DQo+ID4gPiBkaXNhYmxlZCBmb3IgdGh1bmRlcnhbMV0gZm9y IHBlcmZvcm1hbmNlIHJlYXNvbnMuIEFzc3VtaW5nIHRoYXQgaGFzbid0DQo+ID4gPiBjaGFuZ2Vk LCB0aGUgYWR2YW50YWdlIHRvIGhhdmluZyB0d28gdmVyc2lvbnMgaXMgdG8gYmVzdCBzdXBwb3J0 IGFsbCBvZg0KPiA+ID4gRFBESydzDQo+ID4gcGxhdGZvcm1zLg0KPiA+ID4gDQo+ID4gPiBUaGUg ZGlzYWR2YW50YWdlIGlzIG9mIGNvdXJzZSBkdXBsaWNhdGVkIGNvZGUgYW5kIHRoZSBhZGRpdGlv bmFsDQo+ID4gPiBtYWludGVuYW5jZSBidXJkZW4uDQo+ID4gVGhlIG9ubHkgd2F5IEkgc2VlIHRo YXQgYSBDMTEgbWVtb3J5IG1vZGVsIGltcGxlbWVudGF0aW9uIGNhbiBiZSBzbG93ZXINCj4gPiB0 aGFuIHVzaW5nIHNtcF93bWIvcm1iIGlzIGlmIHlvdSBuZWVkIHRvIG9yZGVyIGxvYWRzIGJlZm9y ZSBhIHN5bmNocm9uaXppbmcNCj4gPiBzdG9yZSBhbmQgdGhlcmUgYXJlIGFsc28gb3V0c3RhbmRp bmcgc3RvcmVzIHdoaWNoIGRvIG5vdCByZXF1aXJlIG9yZGVyaW5nLg0KPiA+IHNtcF9ybWIoKSBo YW5kbGVzIHRoaXMgd2hpbGUgc3RvcmUtcmVsZWFzZSB3aWxsIGFsc28gKHVubmVjZXNzYXJpbHkp IG9yZGVyDQo+ID4gdGhvc2UNCj4gPiBvdXRzdGFuZGluZyBzdG9yZXMuIFRoaXMgc2l0dWF0aW9u IG9jY3VycyBlLmcuIGluIHJpbmcgYnVmZmVyIGRlcXVldWUNCj4gPiBvcGVyYXRpb25zDQo+ID4g d2hlcmUgcmluZyBzbG90cyBhcmUgcmVhZCAoYW5kIHBvc3NpYmx5IHdyaXR0ZW4gdG8gdGhyZWFk LXByaXZhdGUgbWVtb3J5KQ0KPiA+IGJlZm9yZQ0KPiA+IHRoZSByaW5nIHNsb3RzIGFyZSByZWxl YXNlIChlLmcuIHVzaW5nIENBUy1yZWxlYXNlIG9yIHN0b3JlLXJlbGVhc2UpLg0KPiA+IA0KPiA+ IEkgaW1hZ2luZSB0aGF0IHRoZSBMU1UvY2FjaGUgc3Vic3lzdGVtIG9uIFRodW5kZXJYL09DVEVP Ti1UWCBhbHNvIGhhdmUNCj4gPiBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGlzIHByb2JsZW0uIElm IHRoZXJlIGFyZSBhIGxhcmdlIGFtb3VudHMgb2Ygc3RvcmVzDQo+ID4gcGVuZGluZyBpbiB0aGUg bG9hZC9zdG9yZSB1bml0LCBzdG9yZS1yZWxlYXNlIG1pZ2h0IGhhdmUgdG8gd2FpdCBmb3IgYSBs b25nDQo+ID4gdGltZQ0KPiA+IGJlZm9yZSB0aGUgc3luY2hyb25pemluZyBzdG9yZSBjYW4gY29t cGxldGUuDQo+ID4gDQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gVGhhdCBzYWlkLCBpZiB0aGUgdGh1 bmRlcnggbWFpbnRhaW5lcnMgYXJlIG9rIHdpdGggaXQsIEknbSBjZXJ0YWlubHkNCj4gPiA+IG9w ZW4gdG8gb25seSBkb2luZyB0aGUgX19hdG9taWMgdmVyc2lvbi4gTm90ZSB0aGF0IGV2ZW4gaW4g dGhlDQo+ID4gPiBfX2F0b21pYyB2ZXJzaW9uLCBiYXNlZCBvbiBIb25uYXBhJ3MgZmluZGluZ3Nb Ml0sIHVzaW5nIGEgRFBESy1kZWZpbmVkDQo+ID4gPiBydGVfYXRvbWljMTI4X2NtcHNldCgpICh3 aXRoIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHN1cHBvcnQgbWFjaGluZXMNCj4gPiA+IHdpdGgg d2VhayBjb25zaXN0ZW5jeSkgYXBwZWFycyB0byBiZSBhIGJldHRlciBvcHRpb24gdGhhbg0KPiA+ IF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfMTYuDQo+ID4gX19hdG9taWNfY29tcGFyZV9leGNo YW5nZV8xNigpIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIGxvY2stZnJlZS4gSXQgaXMgbm90DQo+ ID4gbG9jay1mcmVlIG9uIEFSTS9BQXJjaDY0IGFuZCB0aGUgc3VwcG9ydCBpbiBHQ0MgaXMgZm9y bWFsbHkgYnJva2VuIChjYW4ndA0KPiA+IHVzZQ0KPiA+IGNtcGV4Y2hnMTZiIHRvIGltcGxlbWVu dCBfX2F0b21pY19sb2FkXzE2KS4NCj4gPiANCj4gPiBTbyB5ZXMsIEkgdGhpbmsgRFBESyB3aWxs IGhhdmUgdG8gZGVmaW5lIGFuZCBpbXBsZW1lbnQgdGhlIDEyOC1iaXQgYXRvbWljDQo+ID4gY29t cGFyZSBhbmQgZXhjaGFuZ2Ugb3BlcmF0aW9uICh3aGF0ZXZlciBpdCB3aWxsIGJlIGNhbGxlZCku IEZvcg0KPiA+IGNvbXBhdGliaWxpdHkNCj4gPiB3aXRoIEFSTXY4LjAsIHdlIGNhbid0IHJlcXVp cmUgdGhlICJvbGQiIHZhbHVlIHJldHVybmVkIGJ5IGEgZmFpbGVkIGNvbXBhcmUtDQo+ID4gZXhj aGFuZ2Ugb3BlcmF0aW9uIHRvIGJlIHJlYWQgYXRvbWljYWxseSAoTERYUCBkb2VzIG5vdCBndWFy YW50ZWVkIGF0b21pY2l0eQ0KPiA+IGJ5IGl0c2VsZikuIEJ1dCB0aGlzIGlzIHNlbGRvbSBhIHBy b2JsZW0sIG1hbnkgZGVzaWducyByZWFkIHRoZSBtZW1vcnkNCj4gPiBsb2NhdGlvbg0KPiA+IHVz aW5nIHR3byBzZXBhcmF0ZSA2NC1iaXQgbG9hZHMgKHNvIG5vdCBhdG9taWMpIGFueXdheSwgaXQg aXMgYSBzdWNjZXNzZnVsDQo+ID4gYXRvbWljDQo+ID4gY29tcGFyZSBleGNoYW5nZSBvcGVyYXRp b24gd2hpY2ggcHJvdmlkZXMgYXRvbWljaXR5Lg0KPiA+IA0KPiBPay4gSSBhZ3JlZSwgSSBkb24n dCBleHBlY3QgdGhhdCB0byBiZSBhIHByb2JsZW0uIFRoZSAxMjgtYml0IENBUyBwYXRjaCBJIGp1 c3QNCj4gc3VibWl0dGVkWzFdICh3aGljaCB3YXMgZGV2ZWxvcGVkIGJlZm9yZSByZWFkaW5nIHRo aXMpIHdpbGwgaGF2ZSB0byBiZQ0KPiBjaGFuZ2VkLg0KPiANCj4gWzFdIGh0dHA6Ly9tYWlscy5k cGRrLm9yZy9hcmNoaXZlcy9kZXYvMjAxOS1KYW51YXJ5LzEyNDE1OS5odG1sDQpJIHdpbGwgdGFr ZSBhIGxvb2sgYW5kIGNvbW5tZW50IG9uIHRoaXMuDQoNCj4gDQo+IFRoYW5rcywNCj4gR2FnZQ0K PiANCj4gPC9zbmlwPg0KLS0gDQpPbGEgTGlsamVkYWhsLCBOZXR3b3JraW5nIFN5c3RlbSBBcmNo aXRlY3QsIEFybQ0KUGhvbmUgKzQ2NzA2ODY2MzczLCBTa3lwZSBvbGEubGlsamVkYWhsDQoNCg==