From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D1A88A0A02; Tue, 27 Apr 2021 17:07:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B9B25410FD; Tue, 27 Apr 2021 17:07:06 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 22F37410D8 for ; Tue, 27 Apr 2021 17:07:06 +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: Tue, 27 Apr 2021 17:07:04 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C61718@smartserver.smartshare.dk> In-Reply-To: <20210427135755.927-4-olivier.matz@6wind.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 3/4] net: introduce functions to verify L4 checksums Thread-Index: Adc7bWwPQk2SdvVoRye7IRqSV4TBtAAA55pA References: <20210427135755.927-1-olivier.matz@6wind.com> <20210427135755.927-4-olivier.matz@6wind.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Olivier Matz" , Cc: "Keith Wiles" , "Hongzhi Guo" , "Thomas Monjalon" Subject: Re: [dpdk-dev] [PATCH 3/4] net: introduce functions to verify L4 checksums X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" PiBGcm9tOiBPbGl2aWVyIE1hdHogW21haWx0bzpvbGl2aWVyLm1hdHpANndpbmQuY29tXQ0KPiBT ZW50OiBUdWVzZGF5LCBBcHJpbCAyNywgMjAyMSAzOjU4IFBNDQo+IA0KPiBTaW5jZSBjb21taXQg ZDVkZjJhZTA0MjhhICgibmV0OiBmaXggdW5uZWVkZWQgcmVwbGFjZW1lbnQgb2YgVENQDQo+IGNo ZWNrc3VtIDAiKSwgdGhlIGZ1bmN0aW9ucyBydGVfaXB2NF91ZHB0Y3BfY2tzdW0oKSBhbmQNCj4g cnRlX2lwdjZfdWRwdGNwX2Nrc3VtKCkgY2FuIHJldHVybiBlaXRoZXIgMHgwMDAwIG9yIDB4ZmZm ZiB3aGVuIHVzZWQgdG8NCj4gdmVyaWZ5IGEgcGFja2V0IGNvbnRhaW5pbmcgYSB2YWxpZCBjaGVj a3N1bS4NCj4gDQo+IFNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZCB0byBjYWxj dWxhdGUgdGhlIGNoZWNrc3VtIHRvIHNldA0KPiBpbg0KPiBhIHBhY2tldCwgaW50cm9kdWNlIDIg bmV3IGhlbHBlcnMgZm9yIGNoZWNrc3VtIHZlcmlmaWNhdGlvbi4gVGhleQ0KPiByZXR1cm4NCj4g MCBpZiB0aGUgY2hlY2tzdW0gaXMgdmFsaWQgaW4gdGhlIHBhY2tldC4NCj4gDQo+IFVzZSB0aGlz IG5ldyBoZWxwZXIgaW4gbmV0L3RhcCBkcml2ZXIuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPbGl2 aWVyIE1hdHogPG9saXZpZXIubWF0ekA2d2luZC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9uZXQv dGFwL3J0ZV9ldGhfdGFwLmMgfCAgIDcgKy0NCj4gIGxpYi9uZXQvcnRlX2lwLmggICAgICAgICAg ICAgIHwgMTI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0NCj4gIDIgZmlsZXMg Y2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3RhcC9ydGVfZXRoX3RhcC5jDQo+IGIvZHJpdmVycy9uZXQvdGFw L3J0ZV9ldGhfdGFwLmMNCj4gaW5kZXggNzEyODJlODA2NS4uYjE0ZDVhMWQ1NSAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9uZXQvdGFwL3J0ZV9ldGhfdGFwLmMNCj4gKysrIGIvZHJpdmVycy9uZXQv dGFwL3J0ZV9ldGhfdGFwLmMNCj4gQEAgLTM2NSwxMSArMzY1LDEyIEBAIHRhcF92ZXJpZnlfY3N1 bShzdHJ1Y3QgcnRlX21idWYgKm1idWYpDQo+ICAJCQkJCXJldHVybjsNCj4gIAkJCQl9DQo+ICAJ CQl9DQo+IC0JCQlja3N1bSA9IHJ0ZV9pcHY0X3VkcHRjcF9ja3N1bShsM19oZHIsIGw0X2hkcik7 DQo+ICsJCQlja3N1bV9vayA9ICFydGVfaXB2NF91ZHB0Y3BfY2tzdW1fdmVyaWZ5KGwzX2hkciwN Cj4gKwkJCQkJCQkJIGw0X2hkcik7DQo+ICAJCX0gZWxzZSB7IC8qIGwzID09IFJURV9QVFlQRV9M M19JUFY2LCBjaGVja2VkIGFib3ZlICovDQo+IC0JCQlja3N1bSA9IHJ0ZV9pcHY2X3VkcHRjcF9j a3N1bShsM19oZHIsIGw0X2hkcik7DQo+ICsJCQlja3N1bV9vayA9ICFydGVfaXB2Nl91ZHB0Y3Bf Y2tzdW1fdmVyaWZ5KGwzX2hkciwNCj4gKwkJCQkJCQkJIGw0X2hkcik7DQo+ICAJCX0NCj4gLQkJ Y2tzdW1fb2sgPSAoY2tzdW0gPT0gMCkgfHwgKGNrc3VtID09IDB4ZmZmZik7DQo+ICAJCW1idWYt Pm9sX2ZsYWdzIHw9IGNrc3VtX29rID8NCj4gIAkJCVBLVF9SWF9MNF9DS1NVTV9HT09EIDogUEtU X1JYX0w0X0NLU1VNX0JBRDsNCj4gIAl9DQo+IGRpZmYgLS1naXQgYS9saWIvbmV0L3J0ZV9pcC5o IGIvbGliL25ldC9ydGVfaXAuaA0KPiBpbmRleCA4YzE4OTAwOWIwLi5lZjg0YmNjNWJmIDEwMDY0 NA0KPiAtLS0gYS9saWIvbmV0L3J0ZV9pcC5oDQo+ICsrKyBiL2xpYi9uZXQvcnRlX2lwLmgNCj4g QEAgLTM0NCwyMCArMzQ0LDEwIEBAIHJ0ZV9pcHY0X3BoZHJfY2tzdW0oY29uc3Qgc3RydWN0IHJ0 ZV9pcHY0X2hkcg0KPiAqaXB2NF9oZHIsIHVpbnQ2NF90IG9sX2ZsYWdzKQ0KPiAgfQ0KPiANCj4g IC8qKg0KPiAtICogUHJvY2VzcyB0aGUgSVB2NCBVRFAgb3IgVENQIGNoZWNrc3VtLg0KPiAtICoN Cj4gLSAqIFRoZSBJUCBhbmQgbGF5ZXIgNCBjaGVja3N1bSBtdXN0IGJlIHNldCB0byAwIGluIHRo ZSBwYWNrZXQgYnkNCj4gLSAqIHRoZSBjYWxsZXIuDQo+IC0gKg0KPiAtICogQHBhcmFtIGlwdjRf aGRyDQo+IC0gKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBjb250aWd1b3VzIElQdjQgaGVhZGVyLg0K PiAtICogQHBhcmFtIGw0X2hkcg0KPiAtICogICBUaGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5n IG9mIHRoZSBMNCBoZWFkZXIuDQo+IC0gKiBAcmV0dXJuDQo+IC0gKiAgIFRoZSBjb21wbGVtZW50 ZWQgY2hlY2tzdW0gdG8gc2V0IGluIHRoZSBJUCBwYWNrZXQuDQo+ICsgKiBAaW50ZXJuYWwgQ2Fs Y3VsYXRlIHRoZSBub24tY29tcGxlbWVudGVkIElQdjQgTDQgY2hlY2tzdW0NCj4gICAqLw0KPiAg c3RhdGljIGlubGluZSB1aW50MTZfdA0KPiAtcnRlX2lwdjRfdWRwdGNwX2Nrc3VtKGNvbnN0IHN0 cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyLCBjb25zdCB2b2lkDQo+ICpsNF9oZHIpDQo+ICtf X3J0ZV9pcHY0X3VkcHRjcF9ja3N1bShjb25zdCBzdHJ1Y3QgcnRlX2lwdjRfaGRyICppcHY0X2hk ciwgY29uc3QNCj4gdm9pZCAqbDRfaGRyKQ0KPiAgew0KPiAgCXVpbnQzMl90IGNrc3VtOw0KPiAg CXVpbnQzMl90IGwzX2xlbiwgbDRfbGVuOw0KPiBAQCAtMzc0LDE2ICszNjQsNjIgQEAgcnRlX2lw djRfdWRwdGNwX2Nrc3VtKGNvbnN0IHN0cnVjdCBydGVfaXB2NF9oZHINCj4gKmlwdjRfaGRyLCBj b25zdCB2b2lkICpsNF9oZHIpDQo+ICAJY2tzdW0gKz0gcnRlX2lwdjRfcGhkcl9ja3N1bShpcHY0 X2hkciwgMCk7DQo+IA0KPiAgCWNrc3VtID0gKChja3N1bSAmIDB4ZmZmZjAwMDApID4+IDE2KSAr IChja3N1bSAmIDB4ZmZmZik7DQo+IC0JY2tzdW0gPSAofmNrc3VtKSAmIDB4ZmZmZjsNCj4gKw0K PiArCXJldHVybiAodWludDE2X3QpY2tzdW07DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICogUHJv Y2VzcyB0aGUgSVB2NCBVRFAgb3IgVENQIGNoZWNrc3VtLg0KPiArICoNCj4gKyAqIFRoZSBJUCBh bmQgbGF5ZXIgNCBjaGVja3N1bSBtdXN0IGJlIHNldCB0byAwIGluIHRoZSBwYWNrZXQgYnkNCj4g KyAqIHRoZSBjYWxsZXIuDQo+ICsgKg0KPiArICogQHBhcmFtIGlwdjRfaGRyDQo+ICsgKiAgIFRo ZSBwb2ludGVyIHRvIHRoZSBjb250aWd1b3VzIElQdjQgaGVhZGVyLg0KPiArICogQHBhcmFtIGw0 X2hkcg0KPiArICogICBUaGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBMNCBoZWFk ZXIuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBjb21wbGVtZW50ZWQgY2hlY2tzdW0gdG8g c2V0IGluIHRoZSBJUCBwYWNrZXQuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbmxpbmUgdWludDE2X3QN Cj4gK3J0ZV9pcHY0X3VkcHRjcF9ja3N1bShjb25zdCBzdHJ1Y3QgcnRlX2lwdjRfaGRyICppcHY0 X2hkciwgY29uc3Qgdm9pZA0KPiAqbDRfaGRyKQ0KPiArew0KPiArCXVpbnQxNl90IGNrc3VtID0g X19ydGVfaXB2NF91ZHB0Y3BfY2tzdW0oaXB2NF9oZHIsIGw0X2hkcik7DQo+ICsNCj4gKwlja3N1 bSA9IH5ja3N1bTsNCj4gKw0KPiAgCS8qDQo+IC0JICogUGVyIFJGQyA3Njg6SWYgdGhlIGNvbXB1 dGVkIGNoZWNrc3VtIGlzIHplcm8gZm9yIFVEUCwNCj4gKwkgKiBQZXIgUkZDIDc2ODogSWYgdGhl IGNvbXB1dGVkIGNoZWNrc3VtIGlzIHplcm8gZm9yIFVEUCwNCj4gIAkgKiBpdCBpcyB0cmFuc21p dHRlZCBhcyBhbGwgb25lcw0KPiAgCSAqICh0aGUgZXF1aXZhbGVudCBpbiBvbmUncyBjb21wbGVt ZW50IGFyaXRobWV0aWMpLg0KPiAgCSAqLw0KPiAgCWlmIChja3N1bSA9PSAwICYmIGlwdjRfaGRy LT5uZXh0X3Byb3RvX2lkID09IElQUFJPVE9fVURQKQ0KPiAgCQlja3N1bSA9IDB4ZmZmZjsNCj4g DQo+IC0JcmV0dXJuICh1aW50MTZfdClja3N1bTsNCj4gKwlyZXR1cm4gY2tzdW07DQo+ICt9DQoN ClRoZSBHQ0Mgc3RhdGljIGJyYW5jaCBwcmVkaWN0b3IgdHJlYXRzIHRoZSBhYm92ZSBjb21wYXJp c29uIGFzIGxpa2VseS4gUGxheWluZyBhcm91bmQgd2l0aCBHb2Rib2x0LCBJIGNhbWUgdXAgd2l0 aCB0aGlzIGFsdGVybmF0aXZlOg0KDQoJaWYgKGxpa2VseShja3N1bSAhPSAwKSkgcmV0dXJuIGNr c3VtOw0KCWlmIChpcHY0X2hkci0+bmV4dF9wcm90b19pZCA9PSBJUFBST1RPX1VEUCkgcmV0dXJu IDB4ZmZmZjsNCglyZXR1cm4gMDsNCg0KPiArDQo+ICsvKioNCj4gKyAqIFZhbGlkYXRlIHRoZSBJ UHY0IFVEUCBvciBUQ1AgY2hlY2tzdW0uDQo+ICsgKg0KPiArICogQHBhcmFtIGlwdjRfaGRyDQo+ ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBjb250aWd1b3VzIElQdjQgaGVhZGVyLg0KPiArICog QHBhcmFtIGw0X2hkcg0KPiArICogICBUaGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRo ZSBMNCBoZWFkZXIuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIFJldHVybiAwIGlmIHRoZSBjaGVj a3N1bSBpcyBjb3JyZWN0LCBlbHNlIC0xLg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwN Cj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ICtydGVfaXB2NF91ZHB0Y3BfY2tzdW1fdmVyaWZ5KGNv bnN0IHN0cnVjdCBydGVfaXB2NF9oZHIgKmlwdjRfaGRyLA0KPiArCQkJICAgICBjb25zdCB2b2lk ICpsNF9oZHIpDQo+ICt7DQo+ICsJdWludDE2X3QgY2tzdW0gPSBfX3J0ZV9pcHY0X3VkcHRjcF9j a3N1bShpcHY0X2hkciwgbDRfaGRyKTsNCj4gKw0KPiArCWlmIChja3N1bSAhPSAweGZmZmYpDQo+ ICsJCXJldHVybiAtMTsNCg0KVGhlIEdDQyBzdGF0aWMgYnJhbmNoIHByZWRpY3RvciB0cmVhdHMg dGhlIGFib3ZlIGNvbXBhcmlzb24gYXMgbGlrZWx5LCBzbyBJIHdvdWxkIHByZWZlciB1bmxpa2Vs eSgpIGFyb3VuZCBpdC4NCg0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAgLyoqDQo+ IEBAIC00NDgsNiArNDg0LDI1IEBAIHJ0ZV9pcHY2X3BoZHJfY2tzdW0oY29uc3Qgc3RydWN0IHJ0 ZV9pcHY2X2hkcg0KPiAqaXB2Nl9oZHIsIHVpbnQ2NF90IG9sX2ZsYWdzKQ0KPiAgCXJldHVybiBf X3J0ZV9yYXdfY2tzdW1fcmVkdWNlKHN1bSk7DQo+ICB9DQo+IA0KPiArLyoqDQo+ICsgKiBAaW50 ZXJuYWwgQ2FsY3VsYXRlIHRoZSBub24tY29tcGxlbWVudGVkIElQdjQgTDQgY2hlY2tzdW0NCj4g KyAqLw0KPiArc3RhdGljIGlubGluZSB1aW50MTZfdA0KPiArX19ydGVfaXB2Nl91ZHB0Y3BfY2tz dW0oY29uc3Qgc3RydWN0IHJ0ZV9pcHY2X2hkciAqaXB2Nl9oZHIsIGNvbnN0DQo+IHZvaWQgKmw0 X2hkcikNCj4gK3sNCj4gKwl1aW50MzJfdCBja3N1bTsNCj4gKwl1aW50MzJfdCBsNF9sZW47DQo+ ICsNCj4gKwlsNF9sZW4gPSBydGVfYmVfdG9fY3B1XzE2KGlwdjZfaGRyLT5wYXlsb2FkX2xlbik7 DQo+ICsNCj4gKwlja3N1bSA9IHJ0ZV9yYXdfY2tzdW0obDRfaGRyLCBsNF9sZW4pOw0KPiArCWNr c3VtICs9IHJ0ZV9pcHY2X3BoZHJfY2tzdW0oaXB2Nl9oZHIsIDApOw0KPiArDQo+ICsJY2tzdW0g PSAoKGNrc3VtICYgMHhmZmZmMDAwMCkgPj4gMTYpICsgKGNrc3VtICYgMHhmZmZmKTsNCj4gKw0K PiArCXJldHVybiAodWludDE2X3QpY2tzdW07DQo+ICt9DQo+ICsNCj4gIC8qKg0KPiAgICogUHJv Y2VzcyB0aGUgSVB2NiBVRFAgb3IgVENQIGNoZWNrc3VtLg0KPiAgICoNCj4gQEAgLTQ2NCwxNiAr NTE5LDEwIEBAIHJ0ZV9pcHY2X3BoZHJfY2tzdW0oY29uc3Qgc3RydWN0IHJ0ZV9pcHY2X2hkcg0K PiAqaXB2Nl9oZHIsIHVpbnQ2NF90IG9sX2ZsYWdzKQ0KPiAgc3RhdGljIGlubGluZSB1aW50MTZf dA0KPiAgcnRlX2lwdjZfdWRwdGNwX2Nrc3VtKGNvbnN0IHN0cnVjdCBydGVfaXB2Nl9oZHIgKmlw djZfaGRyLCBjb25zdCB2b2lkDQo+ICpsNF9oZHIpDQo+ICB7DQo+IC0JdWludDMyX3QgY2tzdW07 DQo+IC0JdWludDMyX3QgbDRfbGVuOw0KPiAtDQo+IC0JbDRfbGVuID0gcnRlX2JlX3RvX2NwdV8x NihpcHY2X2hkci0+cGF5bG9hZF9sZW4pOw0KPiArCXVpbnQxNl90IGNrc3VtID0gX19ydGVfaXB2 Nl91ZHB0Y3BfY2tzdW0oaXB2Nl9oZHIsIGw0X2hkcik7DQo+IA0KPiAtCWNrc3VtID0gcnRlX3Jh d19ja3N1bShsNF9oZHIsIGw0X2xlbik7DQo+IC0JY2tzdW0gKz0gcnRlX2lwdjZfcGhkcl9ja3N1 bShpcHY2X2hkciwgMCk7DQo+ICsJY2tzdW0gPSB+Y2tzdW07DQo+IA0KPiAtCWNrc3VtID0gKChj a3N1bSAmIDB4ZmZmZjAwMDApID4+IDE2KSArIChja3N1bSAmIDB4ZmZmZik7DQo+IC0JY2tzdW0g PSAofmNrc3VtKSAmIDB4ZmZmZjsNCj4gIAkvKg0KPiAgCSAqIFBlciBSRkMgNzY4OiBJZiB0aGUg Y29tcHV0ZWQgY2hlY2tzdW0gaXMgemVybyBmb3IgVURQLA0KPiAgCSAqIGl0IGlzIHRyYW5zbWl0 dGVkIGFzIGFsbCBvbmVzDQo+IEBAIC00ODIsNyArNTMxLDM0IEBAIHJ0ZV9pcHY2X3VkcHRjcF9j a3N1bShjb25zdCBzdHJ1Y3QgcnRlX2lwdjZfaGRyDQo+ICppcHY2X2hkciwgY29uc3Qgdm9pZCAq bDRfaGRyKQ0KPiAgCWlmIChja3N1bSA9PSAwICYmIGlwdjZfaGRyLT5wcm90byA9PSBJUFBST1RP X1VEUCkNCj4gIAkJY2tzdW0gPSAweGZmZmY7DQoNClNhbWUgY29tbWVudCBhYm91dCBHQ0Mgc3Rh dGljIGJyYW5jaCBwcmVkaWN0aW9uIGFzIGFib3ZlLg0KDQo+IA0KPiAtCXJldHVybiAodWludDE2 X3QpY2tzdW07DQo+ICsJcmV0dXJuIGNrc3VtOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAqIFZh bGlkYXRlIHRoZSBJUHY2IFVEUCBvciBUQ1AgY2hlY2tzdW0uDQo+ICsgKg0KPiArICogVGhlIGZ1 bmN0aW9uIGFjY2VwdHMgYSAwIGNoZWNrc3VtLCBzaW5jZSBpdCBjYW4gZXhjZXB0aW9uYWxseQ0K PiBoYXBwZW4uIFNlZSA4LjENCj4gKyAqIChVcHBlci1MYXllciBDaGVja3N1bXMpIGluIFJGQyA4 MjAwLg0KPiArICoNCj4gKyAqIEBwYXJhbSBpcHY2X2hkcg0KPiArICogICBUaGUgcG9pbnRlciB0 byB0aGUgY29udGlndW91cyBJUHY2IGhlYWRlci4NCj4gKyAqIEBwYXJhbSBsNF9oZHINCj4gKyAq ICAgVGhlIHBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgTDQgaGVhZGVyLg0KPiArICog QHJldHVybg0KPiArICogICBSZXR1cm4gMCBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdCwgZWxz ZSAtMS4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtzdGF0aWMgaW5saW5lIGlu dA0KPiArcnRlX2lwdjZfdWRwdGNwX2Nrc3VtX3ZlcmlmeShjb25zdCBzdHJ1Y3QgcnRlX2lwdjZf aGRyICppcHY2X2hkciwNCj4gKwkJCSAgICAgY29uc3Qgdm9pZCAqbDRfaGRyKQ0KPiArew0KPiAr CXVpbnQxNl90IGNrc3VtOw0KPiArDQo+ICsJY2tzdW0gPSBfX3J0ZV9pcHY2X3VkcHRjcF9ja3N1 bShpcHY2X2hkciwgbDRfaGRyKTsNCj4gKwlpZiAoY2tzdW0gIT0gMHhmZmZmKQ0KPiArCQlyZXR1 cm4gLTE7DQoNClNhbWUgY29tbWVudCBhYm91dCBHQ0Mgc3RhdGljIGJyYW5jaCBwcmVkaWN0aW9u IGFzIGFib3ZlLg0KDQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gIH0NCj4gDQo+ICAvKiogSVB2NiBm cmFnbWVudCBleHRlbnNpb24gaGVhZGVyLiAqLw0KPiAtLQ0KPiAyLjI5LjINCj4gDQoNCldpdGgg b3Igd2l0aG91dCBteSBzdWdnZXN0ZWQgbW9kaWZpY2F0aW9uczoNCg0KQWNrZWQtYnk6IE1vcnRl biBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+DQoNCldpdGhvdXQgbXkgc3VnZ2Vz dGVkIG1vZGlmaWNhdGlvbnM6DQoNClJldmlld2VkLWJ5OiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21h cnRzaGFyZXN5c3RlbXMuY29tPg0KDQo=