From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70074.outbound.protection.outlook.com [40.107.7.74]) by dpdk.org (Postfix) with ESMTP id 7D8421B3EE for ; Thu, 3 Jan 2019 21:35:58 +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=X6lyLZoj0irib28ZbGKypQrDH9scbNYfC+oXTNoE9iY=; b=ZLKGRZVyn/Bzau3123q3ut7hCFaWb7vaPdMdn1+STsEUhgR0r4EIhjhuZ0MWJWLmGsnPeAyYaebD6nRbNkxUHNlfxYQEKBpXvq1Eqpl7p336R9Ll3rIpYPwYVqpjw7WjgneXK+36iUdsTc/Y9dE3tOE6OR9oya698z1O3t6Yr30= Received: from AM6PR08MB3672.eurprd08.prod.outlook.com (20.177.115.76) by AM6PR08MB4277.eurprd08.prod.outlook.com (20.179.5.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1495.6; Thu, 3 Jan 2019 20:35:57 +0000 Received: from AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::25ec:2db7:d268:2b7b]) by AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::25ec:2db7:d268:2b7b%2]) with mapi id 15.20.1495.005; Thu, 3 Jan 2019 20:35:57 +0000 From: Honnappa Nagarahalli To: "Gavin Hu (Arm Technology China)" , Jerin Jacob Kollanukkaran , "dev@dpdk.org" CC: "david.marchand@redhat.com" , "chaozhu@linux.vnet.ibm.com" , nd , "bruce.richardson@intel.com" , "thomas@monjalon.net" , "hemant.agrawal@nxp.com" , "stephen@networkplumber.org" , nd Thread-Topic: [EXT] [PATCH v3 5/6] spinlock: reimplement with atomic one-way barrier builtins Thread-Index: AQHUnZqm9YlTdhkLE0Ow4DCtXGPz+qWSNDCAgAAWcwCAC7W/YA== Date: Thu, 3 Jan 2019 20:35:56 +0000 Message-ID: References: <20181227041349.3058-1-gavin.hu@arm.com> <20181227041349.3058-6-gavin.hu@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM6PR08MB4277; 6:7VRcvtcjJfcXDe6e2CTTzYg6x/745XM577evhzBV8hH52t1UInj9uOPkhPsUaLSmqEHXxQTHWO2IDvL498jBeNni4dWIEvTTKPhQGfzNWsumLMJ0zYux13uXTO+JEcM47svGRP1NaOvxe2Qw5aKqbleGq8wFyFfUsF3gdXz/MRtUt/RAvayyZSPNWaDr2bJeSpIHlOJxeDZVW83+yBXqozsUCggbZlrQcWLkZNSpULCefim/auyiCqpEMVtZH70MD9B1xiuyoLAtEkpf7ozNaJHwcX1DltYf0Ymv9HBpVDpQwhj4ypLdQwLKxWafbStjd+MoxTxEOuPpFddcu0DAo312gyCUdcuZb0EZksdAGZ0KUT/BHXbcMV15gXY3fmyoYuOgQT/8O5w4BQx5E31fgit/FSwj+d5gCNVu98I4iPYamF94iNnGnO8Td66gmNdIgzjwf2yXV9uigS27abfE/w==; 5:nI2d2RNcKaxETbjhXAFkASx246cthGtXtD20+oNil2o8EORAJxHm0B0Es8aDj3Xq0Kp4QujZBFeSWhAsSb0zkjz7JEuBAIWp1Hh7odrRrQTcnsaY+zgLI4XLbD17N4mvkrct2j4yoGwYzPQtC9IWGnuaBPiz51VVHRN1PDBNY/u3GbOtu7dsA7MtSiPTDXzfCNeiOfZlL4vOigMQ39FQoQ==; 7:XhEGhZz/31PIGpv8AXWLStefhYxU517oiRpzhZ/055PkW3EA4Qt1+LeYA2BDfZas0tIqd2pS1FXhSRU/IZzWpFnuiOOCWcLvvGkE2Bj66bmd6GDaJWy3t+BARgH/6o4uNoUzmEecLpym6LF6FHuGLg== x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 2c8b42ee-a23e-4dfa-8c26-08d671bb1098 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600109)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM6PR08MB4277; x-ms-traffictypediagnostic: AM6PR08MB4277: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(908002)(999002)(5005026)(6040522)(8220060)(2401047)(8121501046)(93006095)(93001095)(3231475)(944501520)(52105112)(10201501046)(3002001)(6055026)(6041310)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:AM6PR08MB4277; BCL:0; PCL:0; RULEID:; SRVR:AM6PR08MB4277; x-forefront-prvs: 0906E83A25 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(376002)(136003)(39860400002)(366004)(396003)(52314003)(199004)(189003)(53936002)(478600001)(26005)(25786009)(6116002)(102836004)(3846002)(6506007)(72206003)(6246003)(105586002)(7696005)(86362001)(99286004)(76176011)(106356001)(305945005)(2501003)(9686003)(7736002)(55016002)(97736004)(256004)(14444005)(4326008)(14454004)(5660300001)(11346002)(446003)(2906002)(476003)(110136005)(54906003)(33656002)(6436002)(93886005)(229853002)(81156014)(316002)(4001150100001)(71200400001)(71190400001)(8676002)(8936002)(66066001)(486006)(74316002)(186003)(81166006)(68736007); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR08MB4277; H:AM6PR08MB3672.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: hBe4ci/HLQu2Gzlvtsyr4nRMMAmW2RmylzoeKSMYjltmlGvDvW3Vb4BVfE6aj3MYhqOORAZeHjV4K/D0LRite0YqzLax98bws8oTHZ6kACxL2ldzwshAfEjEFV3dxc+5CILZX8Qr5/omGGB/FwLmBAWVhKYbV/pzfklaP/odR25HKEC1Tpjwuqon34pyItjjFowRlLNzgLBvhW1e0lWy0nJJJ/LH7E/P0YBymsS7ZspXTqGBaRhvPmXnJYgONg53VT0VMPZK12AczDEm0Dpq2k5svXU1awkydHVZr5NKjLHE45c23HWNaU3RsyWI3oIz spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c8b42ee-a23e-4dfa-8c26-08d671bb1098 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jan 2019 20:35:57.0290 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4277 Subject: Re: [dpdk-dev] [EXT] [PATCH v3 5/6] spinlock: reimplement with atomic one-way barrier builtins 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: Thu, 03 Jan 2019 20:35:58 -0000 PiA+DQo+ID4gT24gVGh1LCAyMDE4LTEyLTI3IGF0IDEyOjEzICswODAwLCBHYXZpbiBIdSB3cm90 ZToNCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiAtLS0NCj4gPiA+IFRoZSBfX3N5bmMgYnVpbHRpbiBi YXNlZCBpbXBsZW1lbnRhdGlvbiBnZW5lcmF0ZXMgZnVsbCBtZW1vcnkNCj4gPiA+IGJhcnJpZXJz ICgnZG1iIGlzaCcpIG9uIEFybSBwbGF0Zm9ybXMuIFVzaW5nIEMxMSBhdG9taWMgYnVpbHRpbnMg dG8NCj4gPiA+IGdlbmVyYXRlIG9uZSB3YXkgYmFycmllcnMuDQo+ID4gPg0KPiA+ID4gSGVyZSBp cyB0aGUgYXNzZW1ibHkgY29kZSBvZiBfX3N5bmNfY29tcGFyZV9hbmRfc3dhcCBidWlsdGluLg0K PiA+ID4gX19zeW5jX2Jvb2xfY29tcGFyZV9hbmRfc3dhcChkc3QsIGV4cCwgc3JjKTsNCj4gPiA+ ICAgIDB4MDAwMDAwMDAwMDkwZjFiMCA8KzE2PjogICAgZTAgMDcgNDAgZjkgbGRyIHgwLCBbc3As ICM4XQ0KPiA+ID4gICAgMHgwMDAwMDAwMDAwOTBmMWI0IDwrMjA+OiAgICBlMSAwZiA0MCA3OSBs ZHJoICAgIHcxLCBbc3AsICM2XQ0KPiA+ID4gICAgMHgwMDAwMDAwMDAwOTBmMWI4IDwrMjQ+OiAg ICBlMiAwYiA0MCA3OSBsZHJoICAgIHcyLCBbc3AsICM0XQ0KPiA+ID4gICAgMHgwMDAwMDAwMDAw OTBmMWJjIDwrMjg+OiAgICAyMSAzYyAwMCAxMiBhbmQgdzEsIHcxLCAjMHhmZmZmDQo+ID4gPiAg ICAweDAwMDAwMDAwMDA5MGYxYzAgPCszMj46ICAgIDAzIDdjIDVmIDQ4IGxkeHJoICAgdzMsIFt4 MF0NCj4gPiA+ICAgIDB4MDAwMDAwMDAwMDkwZjFjNCA8KzM2PjogICAgN2YgMDAgMDEgNmIgY21w IHczLCB3MQ0KPiA+ID4gICAgMHgwMDAwMDAwMDAwOTBmMWM4IDwrNDA+OiAgICA2MSAwMCAwMCA1 NCBiLm5lICAgIDB4OTBmMWQ0DQo+ID4gPiA8cnRlX2F0b21pYzE2X2NtcHNldCs1Mj4gIC8vIGIu YW55DQo+ID4gPiAgICAweDAwMDAwMDAwMDA5MGYxY2MgPCs0ND46ICAgIDAyIGZjIDA0IDQ4IHN0 bHhyaCAgdzQsIHcyLCBbeDBdDQo+ID4gPiAgICAweDAwMDAwMDAwMDA5MGYxZDAgPCs0OD46ICAg IDg0IGZmIGZmIDM1IGNibnogICAgdzQsIDB4OTBmMWMwDQo+ID4gPiA8cnRlX2F0b21pYzE2X2Nt cHNldCszMj4NCj4gPiA+ICAgIDB4MDAwMDAwMDAwMDkwZjFkNCA8KzUyPjogICAgYmYgM2IgMDMg ZDUgZG1iIGlzaA0KPiA+ID4gICAgMHgwMDAwMDAwMDAwOTBmMWQ4IDwrNTY+OiAgICBlMCAxNyA5 ZiAxYSBjc2V0ICAgIHcwLCBlcSAgLy8gZXEgPQ0KPiA+ID4gbm9uZQ0KPiA+ID4NCj4gPiA+IFRo ZSBiZW5jaG1hcmtpbmcgcmVzdWx0cyBzaG93ZWQgM1ggcGVyZm9ybWFuY2UgZ2FpbiBvbiBDYXZp dW0NCj4gPiA+IFRodW5kZXJYMiBhbmQNCj4gPiA+IDEzJSBvbiBRdWFsY29tbSBGYWxtb24gYW5k IDMuNyUgb24gNC1BNzIgTWFydmVsbCBtYWNjaGlhdG9iaW4uDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXg0KVHlwbywgc2hvdWxkIGJlIEZhbGtvcg0K DQo+ID4gPiBIZXJlIGlzIHRoZSBleGFtcGxlIHRlc3QgcmVzdWx0IG9uIFRYMjoNCj4gPiA+DQo+ ID4gPiAqKiogc3BpbmxvY2tfYXV0b3Rlc3Qgd2l0aG91dCB0aGlzIHBhdGNoICoqKiBDb3JlIFsx MjNdIENvc3QgVGltZSA9DQo+ID4gPiA2Mzk4MjIgdXMgQ29yZSBbMTI0XSBDb3N0IFRpbWUgPSA2 MzMyNTMgdXMgQ29yZSBbMTI1XSBDb3N0IFRpbWUgPQ0KPiA+ID4gNjQ2MDMwIHVzIENvcmUgWzEy Nl0gQ29zdCBUaW1lID0gNjQzMTg5IHVzIENvcmUgWzEyN10gQ29zdCBUaW1lID0NCj4gPiA+IDY0 NzAzOSB1cyBUb3RhbCBDb3N0IFRpbWUgPSA5NTQzMzI5OCB1cw0KPiA+ID4NCj4gPiA+ICoqKiBz cGlubG9ja19hdXRvdGVzdCB3aXRoIHRoaXMgcGF0Y2ggKioqIENvcmUgWzEyM10gQ29zdCBUaW1l ID0NCj4gPiA+IDE2MzYxNSB1cyBDb3JlIFsxMjRdIENvc3QgVGltZSA9IDE2NjQ3MSB1cyBDb3Jl IFsxMjVdIENvc3QgVGltZSA9DQo+ID4gPiAxODkwNDQgdXMgQ29yZSBbMTI2XSBDb3N0IFRpbWUg PSAxOTU3NDUgdXMgQ29yZSBbMTI3XSBDb3N0IFRpbWUgPQ0KPiA+ID4gNzg0MjMgdXMgVG90YWwg Q29zdCBUaW1lID0gMjczMzk2NTYgdXMNCj4gPiA+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBHYXZp biBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4NCj4gPiA+IFJldmlld2VkLWJ5OiBQaGlsIFlhbmcgPHBo aWwueWFuZ0Bhcm0uY29tPg0KPiA+ID4gUmV2aWV3ZWQtYnk6IEhvbm5hcHBhIE5hZ2FyYWhhbGxp IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPg0KPiA+ID4gUmV2aWV3ZWQtYnk6IE9sYSBM aWxqZWRhaGwgPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT4NCj4gPiA+IFJldmlld2VkLWJ5OiBTdGV2 ZSBDYXBwZXIgPFN0ZXZlLkNhcHBlckBhcm0uY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgbGliL2xp YnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvZ2VuZXJpYy9ydGVfc3BpbmxvY2suaCB8IDE4DQo+ID4g PiArKysrKysrKysrKysrLS0tLS0NCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9u cygrKSwgNSBkZWxldGlvbnMoLSkNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0 ZV9lYWwvY29tbW9uL2luY2x1ZGUvZ2VuZXJpYy9ydGVfc3BpbmxvY2suaA0KPiA+ID4gYi9saWIv bGlicnRlX2VhbC9jb21tb24vaW5jbHVkZS9nZW5lcmljL3J0ZV9zcGlubG9jay5oDQo+ID4gPiBp bmRleCBjNGMzZmMzMWUuLjg3YWU3YTRmMSAxMDA2NDQNCj4gPiA+IC0tLSBhL2xpYi9saWJydGVf ZWFsL2NvbW1vbi9pbmNsdWRlL2dlbmVyaWMvcnRlX3NwaW5sb2NrLmgNCj4gPiA+ICsrKyBiL2xp Yi9saWJydGVfZWFsL2NvbW1vbi9pbmNsdWRlL2dlbmVyaWMvcnRlX3NwaW5sb2NrLmgNCj4gPiA+ IEBAIC02MSw5ICs2MSwxNCBAQCBydGVfc3BpbmxvY2tfbG9jayhydGVfc3BpbmxvY2tfdCAqc2wp OyAgc3RhdGljDQo+ID4gPiBpbmxpbmUgdm9pZCAgcnRlX3NwaW5sb2NrX2xvY2socnRlX3NwaW5s b2NrX3QgKnNsKSAgew0KPiA+ID4gLQl3aGlsZSAoX19zeW5jX2xvY2tfdGVzdF9hbmRfc2V0KCZz bC0+bG9ja2VkLCAxKSkNCj4gPiA+IC0JCXdoaWxlKHNsLT5sb2NrZWQpDQo+ID4gPiArCWludCBl eHAgPSAwOw0KPiA+ID4gKw0KPiA+ID4gKwl3aGlsZSAoIV9fYXRvbWljX2NvbXBhcmVfZXhjaGFu Z2Vfbigmc2wtPmxvY2tlZCwgJmV4cCwgMSwgMCwNCj4gPiA+ICsJCQkJX19BVE9NSUNfQUNRVUlS RSwgX19BVE9NSUNfUkVMQVhFRCkpDQo+ID4gew0KPiA+DQo+ID4gSG93IGFib3V0IHJlbW92ZSBl eHBsaWN0IGV4cCA9IDAgYW5kIGNoYW5nZSB0bw0KPiA+IF9fYXRvbWljX3Rlc3RfYW5kX3NldChm bGFnLCBfX0FUT01JQ19BQ1FVSVJFKTsNCj4gPg0KPiA+IGkuZQ0KPiA+IHdoaWxlIChfYXRvbWlj X3Rlc3RfYW5kX3NldChmbGFnLCBfX0FUT01JQ19BQ1FVSVJFKSkNCj4gPg0KPiBXaWxsIGRvIGl0 IGluIHY0Lg0KVGhlIG9wZXJhbmQgZm9yICdfX2F0b21pY190ZXN0X2FuZF9zZXQnIG5lZWRzIHRv IGJlIGEgYm9vbCBvciBjaGFyLiBUaGlzIG1lYW5zLCBzbC0+bG9ja2VkIG5lZWQgdG8gYmUgY2hh bmdlZCB0byBib29sIG9yIGNoYXIuIEJ1dCB0aGUgQVBJICdydGVfc3BpbmxvY2tfbG9ja190bScg YWxzbyB1c2VzIHNsLT5sb2NrZWQuIFRoZSByZXF1aXJlbWVudHMgb2YgJ3J0ZV9zcGlubG9ja19s b2NrX3RtJyBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuDQoNCj4gPg0KPiA+ID4gKwkJd2hpbGUgKF9f YXRvbWljX2xvYWRfbigmc2wtPmxvY2tlZCwgX19BVE9NSUNfUkVMQVhFRCkpDQo+ID4gPiAgCQkJ cnRlX3BhdXNlKCk7DQo+ID4gPiArCQlleHAgPSAwOw0KPiA+DQo+ID4gV2UgY2FuIHJlbW92ZSBl eHAgPSAwIHdpdGggYWJvdmUgc2NoZW1lLg0KPiA+DQo+ID4gPiArCX0NCj4gPiA+ICB9DQo+ID4g PiAgI2VuZGlmDQo+ID4gPg0KPiA+ID4gQEAgLTgwLDcgKzg1LDcgQEAgcnRlX3NwaW5sb2NrX3Vu bG9jayAocnRlX3NwaW5sb2NrX3QgKnNsKTsgIHN0YXRpYw0KPiA+ID4gaW5saW5lIHZvaWQgIHJ0 ZV9zcGlubG9ja191bmxvY2sgKHJ0ZV9zcGlubG9ja190ICpzbCkgIHsNCj4gPiA+IC0JX19zeW5j X2xvY2tfcmVsZWFzZSgmc2wtPmxvY2tlZCk7DQo+ID4gPiArCV9fYXRvbWljX3N0b3JlX24oJnNs LT5sb2NrZWQsIDAsIF9fQVRPTUlDX1JFTEVBU0UpOw0KPiA+ICB9DQo+ID4gPiAgI2VuZGlmDQo+ ID4gPg0KPiA+ID4gQEAgLTk5LDcgKzEwNCwxMCBAQCBydGVfc3BpbmxvY2tfdHJ5bG9jayAocnRl X3NwaW5sb2NrX3QgKnNsKTsNCj4gPiA+IHN0YXRpYyBpbmxpbmUgaW50ICBydGVfc3BpbmxvY2tf dHJ5bG9jayAocnRlX3NwaW5sb2NrX3QgKnNsKSAgew0KPiA+ID4gLQlyZXR1cm4gX19zeW5jX2xv Y2tfdGVzdF9hbmRfc2V0KCZzbC0+bG9ja2VkLDEpID09IDA7DQo+ID4gPiArCWludCBleHAgPSAw Ow0KPiA+ID4gKwlyZXR1cm4gX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCZzbC0+bG9ja2Vk LCAmZXhwLCAxLA0KPiA+ID4gKwkJCQkwLCAvKiBkaXNhbGxvdyBzcHVyaW91cyBmYWlsdXJlICov DQo+ID4gPiArCQkJCV9fQVRPTUlDX0FDUVVJUkUsIF9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+DQo+ ID4gSGVyZSB0byByZW1vdmUgZXhwbGljaXQgZXhwLg0KPiA+DQo+ID4gcmV0dXJuIChfX2F0b21p Y190ZXN0X2FuZF9zZXQoZmxhZywgX19BVE9NSUNfQUNRVUlSRSkgPT0gMCkNCj4gDQo+IFdpbGwg ZG8gaXQgaW4gdjQuDQo+IA0KPiA+ID4gIH0NCj4gPiA+ICAjZW5kaWYNCj4gPiA+DQo+ID4gPiBA QCAtMTEzLDcgKzEyMSw3IEBAIHJ0ZV9zcGlubG9ja190cnlsb2NrIChydGVfc3BpbmxvY2tfdCAq c2wpDQo+ID4gPiAgICovDQo+ID4gPiAgc3RhdGljIGlubGluZSBpbnQgcnRlX3NwaW5sb2NrX2lz X2xvY2tlZCAocnRlX3NwaW5sb2NrX3QgKnNsKSAgew0KPiA+ID4gLQlyZXR1cm4gc2wtPmxvY2tl ZDsNCj4gPiA+ICsJcmV0dXJuIF9fYXRvbWljX2xvYWRfbigmc2wtPmxvY2tlZCwgX19BVE9NSUNf QUNRVUlSRSk7DQo+ID4NCj4gPiBfX0FUT01JQ19SRUxBWEVEIHdvdWxkIGJlIGVub3VnaCBoZXJl LiBSaWdodCA/DQo+IFllcywgaXQgaXMgZW5vdWdoIGZvciBjdXJyZW50IERQREsgdXNlcywgdXNl ZCBmb3IgdGVzdGluZyBhbmQgYXNzZXJ0aW9ucyBvbmx5Lg0KPiANCj4gRm9yIGdlbmVyYWwgYXBw bGljYWJpbGl0eSwgd2Ugc2V0IGFjcXVpcmUgYXMgY29uY2VybmVkIGFib3V0IGl0IGlzIHVzZWQg Zm9yDQo+IHJlYWRpbmcgcHJvdGVjdGVkIGRhdGEgd2hpbGUgdGhlIGxvY2sgaXMgbm90IHRha2Vu IGJ5IGFueWJvZHkuDQo+IEluIHRoaXMgdXNlIGNhc2UsIEFjcXVpcmUgd2lsbCBwcm9wZXJseSBz ZWUgYWxsIHVwZGF0ZXMgZnJvbSBiZWZvcmUgdGhlIGxvY2sNCj4gd2FzIHJlbGVhc2VkLCBidXQg dGhpcyBpcyBzdGlsbCBkYW5nZXJvdXMsIGFzIGR1cmluZyB0aGUgY291cnNlLCBzb21lb25lIGVs c2UNCj4gbWlnaHQgaGF2ZSB0YWtlbiB0aGUgbG9jayBhbmQgY2hhbmdlZCB0aGUgZGF0YS4NCj4g DQo+IEFueXdheSwgSSB3aWxsIHNldCBSZWxheGVkIGluIHY0IGFzIHRoZSBhYm92ZSB1c2Ugc2Nl bmFyaW8gd2FzIG5vdA0KPiByZWNvbW1lbmRlZCBhbmQgbm90IHByZXNlbnQgaW4gRFBESy4NCklN Tywgb25jZSB0aGUgQVBJIGlzIHByb3ZpZGVkIHRoZSBhcHBsaWNhdGlvbiBjYW4gbWFrZSB1c2Ug b2YgaXQgaW4gYW55d2F5IGl0IHdhbnRzLiBPbmNlIHVzZSBjYXNlIEkgY2FuIHRoaW5rIG9mIGlz IGZvbGxvd3M6DQoNCmlmIChydGVfc3BpbmxvY2tfaXNfbG9ja2VkKCZzbCkgPT0gdHJ1ZSkgew0K CWFjY2Vzc19zaGFyZWRfZGF0YSgpOw0KfQ0KDQphY2Nlc3Nfc2hhcmVkX2RhdGEoKSBjYW4gZ2V0 IGhvaXN0ZWQvZXhlY3V0ZWQgc3BlY3VsYXRpdmVseSBiZWZvcmUgdGhlICdpZicgc3RhdGVtZW50 LiBUaGlzIG5lZWRzIHRvIGJlIHByZXZlbnRlZCwgaGVuY2Ugd2UgbmVlZCAnYWNxdWlyZScgc2Vt YW50aWNzLg0KDQo+IA0KPiA+DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICAvKioNCg==