From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from SHSQR01.spreadtrum.com (unknown [222.66.158.135]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3205A379964 for ; Wed, 27 May 2026 09:33:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=222.66.158.135 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779874433; cv=none; b=m82QREaw6AOw2nUmCfSrM958HEOlvFEFZqem/bUIVJ00/ECdk6q7t4Cl7ch7rV0yw3akf+0nQ7Y+buZ4kQVseX+rY1Mxk5NmifzILC8ia4Zn19yPw0UGAKBPkqdmoFL0JBUxokq1S0XEypVQ8fYqrmDqcg8wQWROkRMmymFbfk0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779874433; c=relaxed/simple; bh=tczvwM3ErzWn3SP9lSlVSYgiiD3u5ncCRse+7zxYeQw=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=nvw1aILkeWqCynVUmVZsTKwkMDVqRy2AsGYdTiEViDidEJ5sCVYz9LW/HTIvZ2jJivxHL0OpQQf9Y014n6YAXjs3anexDWPQlO4NPRhBLlaLt2N+cZSSvo636AlBL77BgnHeQGcTfa0aZrA6EJevjG80mCZp8GcUks08QILQFQY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=unisoc.com; spf=pass smtp.mailfrom=unisoc.com; dkim=pass (2048-bit key) header.d=unisoc.com header.i=@unisoc.com header.b=rRwPBjEM; arc=none smtp.client-ip=222.66.158.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=unisoc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=unisoc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=unisoc.com header.i=@unisoc.com header.b="rRwPBjEM" Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTP id 64R9WqgH029854; Wed, 27 May 2026 17:32:52 +0800 (+08) (envelope-from Yi.Sun@unisoc.com) Received: from SHDLP.spreadtrum.com (BJMBX01.spreadtrum.com [10.0.64.7]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4gQPSq2r18z2MHYXK; Wed, 27 May 2026 17:28:59 +0800 (CST) Received: from BJMBX02.spreadtrum.com (10.0.64.8) by BJMBX01.spreadtrum.com (10.0.64.7) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Wed, 27 May 2026 17:32:50 +0800 Received: from BJMBX02.spreadtrum.com ([fe80::25c6:a6ca:5208:2d95]) by BJMBX02.spreadtrum.com ([fe80::25c6:a6ca:5208:2d95%19]) with mapi id 15.00.1497.048; Wed, 27 May 2026 17:32:49 +0800 From: =?utf-8?B?5a2Z5q+FIChZaSBTdW4p?= To: Yury Norov CC: "yury.norov@gmail.com" , "mnazarewicz@gmail.com" , "akpm@linux-foundation.org" , "mina86@mina86.com" , "akinobu.mita@gmail.com" , "linux-kernel@vger.kernel.org" , =?utf-8?B?5a2Z5q+FIChZaSBTdW4p?= , =?utf-8?B?546L55qTIChIYW9faGFvIFdhbmcp?= , =?utf-8?B?546L56eRIChLZSBXYW5nKQ==?= Subject: =?utf-8?B?562U5aSNOiBbUEFUQ0ggdjMgMS8yXSBsaWI6IGJpdG1hcDogYWRkIGZpbmRf?= =?utf-8?B?bGFzdF9iaXRfZnJvbSgpIGFuZCBfZmluZF9sYXN0X2JpdF9mcm9tKCk=?= Thread-Topic: [PATCH v3 1/2] lib: bitmap: add find_last_bit_from() and _find_last_bit_from() Thread-Index: AQHc44DoOcieqLy+5k2dBeO2d3wJ1bYNNiMAgBR3J+A= Date: Wed, 27 May 2026 09:32:49 +0000 Message-ID: <23fc41cda8164b47a6236bc7fa350a1f@BJMBX02.spreadtrum.com> References: <20260514090607.231387-1-yi.sun@unisoc.com> <20260514090607.231387-2-yi.sun@unisoc.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MAIL:SHSQR01.spreadtrum.com 64R9WqgH029854 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unisoc.com; s=default; t=1779874392; bh=tczvwM3ErzWn3SP9lSlVSYgiiD3u5ncCRse+7zxYeQw=; h=From:To:CC:Subject:Date:References:In-Reply-To; b=rRwPBjEMrVqqEa0FR1yNKETAvKngt8wElf0V/RQ9jMnkQJr9zOVRxIPozfTfCZLeb fldJNordF6Bi8ybm3C0oshWSM+4mKhpU530mN4x+gtyqqKJAViZgfGVwaxjRm1VUEB THBfZBHbrP8HXo23SSi0vmBq0Z40S6Z+9FyDRE2s7hlkPp1xsDLJRZB+Fc3Ir0PK4N r9CdgH3M/DXxcQQy//lbvyFVMPFB/6FxpxD6LlfFLmsQyjEZv77Q0fCz5q0bmdmgZ7 xHFug62ucAFLYCpizDPs9R5RZADLaE6QUaxHQB5KcL0a1S2RJp5lsShkG73FEMEiwb /574TKHCW8rHQ== DQoNCj4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IFl1cnkgTm9yb3YgPHlu b3JvdkBudmlkaWEuY29tPg0KPiDlj5HpgIHml7bpl7Q6IDIwMjblubQ15pyIMTXml6UgMDo0OQ0K PiDmlLbku7bkuro6IOWtmeavhSAoWWkgU3VuKSA8WWkuU3VuQHVuaXNvYy5jb20+DQo+IOaKhOmA gTogeXVyeS5ub3JvdkBnbWFpbC5jb207IG1uYXphcmV3aWN6QGdtYWlsLmNvbTsgYWtwbUBsaW51 eC0NCj4gZm91bmRhdGlvbi5vcmc7IG1pbmE4NkBtaW5hODYuY29tOyBha2lub2J1Lm1pdGFAZ21h aWwuY29tOyBsaW51eC0NCj4ga2VybmVsQHZnZXIua2VybmVsLm9yZw0KPiDkuLvpopg6IFJlOiBb UEFUQ0ggdjMgMS8yXSBsaWI6IGJpdG1hcDogYWRkIGZpbmRfbGFzdF9iaXRfZnJvbSgpIGFuZA0K PiBfZmluZF9sYXN0X2JpdF9mcm9tKCkNCj4gDQo+IA0KPiDms6jmhI86IOi/meWwgemCruS7tuad peiHquS6juWklumDqOOAgumZpOmdnuS9oOehruWumumCruS7tuWGheWuueWuieWFqO+8jOWQpuWI meS4jeimgeeCueWHu+S7u+S9lemTvg0KPiDmjqXlkozpmYTku7bjgIINCj4gQ0FVVElPTjogVGhp cyBlbWFpbCBvcmlnaW5hdGVkIGZyb20gb3V0c2lkZSBvZiB0aGUgb3JnYW5pemF0aW9uLiBEbyBu b3QgY2xpY2sgbGlua3MNCj4gb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IHJlY29nbml6 ZSB0aGUgc2VuZGVyIGFuZCBrbm93IHRoZSBjb250ZW50IGlzDQo+IHNhZmUuDQo+IA0KPiANCj4g DQo+IE9uIFRodSwgTWF5IDE0LCAyMDI2IGF0IDA1OjA2OjA2UE0gKzA4MDAsIFlpIFN1biB3cm90 ZToNCj4gPiBJbiBzb21lIHNjZW5hcmlvcywgaXQncyBub3QgZGVzaXJhYmxlIHRvIGtlZXAgc2Vh cmNoaW5nIHRocm91Z2ggdGhlDQo+ID4gYmVnaW5uaW5nIG9mIHRoZSBiaXRtYXAsIGJ1dCByYXRo ZXIgdG8gc2VhcmNoIHdpdGhpbiBhIHNwZWNpZmljIHBhcnQuDQo+ID4gVGhlIG5ld2x5IGFkZGVk IGZ1bmN0aW9uIGNhbiBhY2NvbXBsaXNoIHRoaXMgcXVpY2tseS4NCj4gPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IFlpIFN1biA8eWkuc3VuQHVuaXNvYy5jb20+DQo+IA0KPiBPbiB0aGUgcHJldmlvdXMg cm91bmQgeW91IHNhaWQ6DQo+IA0KPiAgIGZpbmRfbGFzdF9iaXRfcmFuZ2UoKSBpcyBvbmx5IHVz ZWQgaGVyZSBmb3Igbm93LCBidXQgSSBiZWxpZXZlIGl0IHdpbGwgYmUgdXNlZnVsIGluDQo+IHRo ZSBmdXR1cmUuDQo+IA0KPiBBbmQgZGlkbid0IGxldCBtZSBhbnN3ZXIgYnkgb3V0ZGF0aW5nIHRo YXQgZGlzY3Vzc2lvbiB3aXRoIHR3byBuZXcNCj4gdmVyc2lvbnMuIFBsZWFzZSBkb24ndCBkbyBs aWtlIHRoYXQuDQo+IA0KPiBTbyBteSBhbnN3ZXIgdG8gdGhlIHNlbnRlbmNlIGFib3ZlIGlzOiB1 bmxlc3MgdGhhdCBicmlnaHQgZnV0dXJlIGNvbWVzDQo+IHRydWUsIHRoZSBmaW5kX2xhc3RfYml0 X3JhbmdlKCkgaXMgdW51c2VkLCBleGNlcHQgZm9yIG9uZSBpbi1ob3VzZQ0KPiBjYXNlLiBUaGlz IG1ha2VzIGl0IHF1ZXN0aW9uYWJsZSBpZiB3ZSByZWFsbHkgbmVlZCB0aGUgbmV3IGV4cG9zZWQg QVBJDQo+IGF0IGFsbC4uLg0KPiANCj4gVGhlcmUgYXJlIDYzIHJlZmVyZW5jZXMgb2YgdGhlIGZp bmRfbGFzdF9iaXQoKS4gUGxlYXNlIGluc3BlY3QgdGhlbSBhbGwuDQo+IElmIHRoZXJlIHdpbGwg YmUgYW5vdGhlciB1c2VyLCB0aGlzIHF1ZXN0aW9uIHdpbGwgYmUgb3V0IG9mIHRoZSB0YWJsZS4N Cj4gDQo+ID4gLS0tDQo+ID4gIGluY2x1ZGUvbGludXgvZmluZC5oIHwgMzMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ID4gIGxpYi9maW5kX2JpdC5jICAgICAgIHwgMjIgKysr KysrKysrKysrKysrKysrKysrKw0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMo KykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbmQuaCBiL2luY2x1ZGUv bGludXgvZmluZC5oDQo+ID4gaW5kZXggNmMyYmU4Y2E2MTVkLi4xN2YxZGI3YjQxZmIgMTAwNjQ0 DQo+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9maW5kLmgNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4 L2ZpbmQuaA0KPiA+IEBAIC0zMyw2ICszMyw4IEBAIHVuc2lnbmVkIGxvbmcgX2ZpbmRfZmlyc3Rf YW5kX2FuZF9iaXQoY29uc3QgdW5zaWduZWQNCj4gbG9uZyAqYWRkcjEsIGNvbnN0IHVuc2lnbmVk DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg bG9uZyAqYWRkcjMsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7DQo+ID4gIGV4dGVybiB1bnNpZ25lZCBs b25nIF9maW5kX2ZpcnN0X3plcm9fYml0KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIsIHVuc2ln bmVkDQo+IGxvbmcgc2l6ZSk7DQo+ID4gIGV4dGVybiB1bnNpZ25lZCBsb25nIF9maW5kX2xhc3Rf Yml0KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIsIHVuc2lnbmVkIGxvbmcNCj4gc2l6ZSk7DQo+ ID4gK2V4dGVybiB1bnNpZ25lZCBsb25nIF9maW5kX2xhc3RfYml0X2Zyb20oY29uc3QgdW5zaWdu ZWQgbG9uZyAqYWRkciwgdW5zaWduZWQNCj4gbG9uZyBzaXplLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQpOw0KPiA+DQo+ID4g ICNpZmRlZiBfX0JJR19FTkRJQU4NCj4gPiAgdW5zaWduZWQgbG9uZyBfZmluZF9maXJzdF96ZXJv X2JpdF9sZShjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZCBsb25nDQo+IHNpemUp Ow0KPiA+IEBAIC00MTMsNiArNDE1LDM3IEBAIHVuc2lnbmVkIGxvbmcgZmluZF9sYXN0X2JpdChj b25zdCB1bnNpZ25lZCBsb25nICphZGRyLA0KPiB1bnNpZ25lZCBsb25nIHNpemUpDQo+ID4gIH0N Cj4gPiAgI2VuZGlmDQo+ID4NCj4gPiArLyoqDQo+ID4gKyAqIGZpbmRfbGFzdF9iaXRfZnJvbSAt IGZpbmQgdGhlIGxhc3Qgc2V0IGJpdCBpbiBhIG1lbW9yeSByZWdpb24NCj4gPiArICogQGFkZHI6 IFRoZSBhZGRyZXNzIHRvIGJhc2UgdGhlIHNlYXJjaCBvbg0KPiA+ICsgKiBAc2l6ZTogVGhlIGJp dG1hcCBzaXplIGluIGJpdHMNCj4gPiArICogQG9mZnNldDogVGhlIGJpdCBudW1iZXIgdG8gc3Rh cnQgc2VhcmNoaW5nIGF0DQo+ID4gKyAqDQo+ID4gKyAqIENvbXBhcmVkIHRvIHRoZSBmaW5kX2xh c3RfYml0KCksDQo+ID4gKyAqIGZpbmRfbGFzdF9iaXRfZnJvbSgpIGhhcyBhbiBhZGRpdGlvbmFs IHBhcmFtZXRlciBAb2Zmc2V0LA0KPiA+ICsgKiBzbyBpdCBjYW4gc2VhcmNoIHdpdGhpbiBhIHNw ZWNpZmljIHJhbmdlIG9mIHRoZSBiaXRtYXAsDQo+ID4gKyAqIGp1c3QgbGlrZSB0aGUgZmluZF9u ZXh0X2JpdCgpLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm5zIHRoZSBiaXQgbnVtYmVyIG9mIHRo ZSBsYXN0IHNldCBiaXQsIG9yIHNpemUuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgX19hbHdheXNf aW5saW5lDQo+ID4gK3Vuc2lnbmVkIGxvbmcgZmluZF9sYXN0X2JpdF9mcm9tKGNvbnN0IHVuc2ln bmVkIGxvbmcgKmFkZHIsIHVuc2lnbmVkIGxvbmcNCj4gc2l6ZSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldCkNCj4gPiArew0KPiA+ICsgICAg IGlmIChzbWFsbF9jb25zdF9uYml0cyhzaXplKSkgew0KPiA+ICsgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyB2YWw7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5KG9mZnNl dCA+PSBzaXplKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemU7DQo+ID4g Kw0KPiA+ICsgICAgICAgICAgICAgdmFsID0gKmFkZHIgJiBHRU5NQVNLKHNpemUgLSAxLCBvZmZz ZXQpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIHJldHVybiB2YWwgPyBfX2Zscyh2YWwpIDog c2l6ZTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBfZmluZF9sYXN0X2Jp dF9mcm9tKGFkZHIsIHNpemUsIG9mZnNldCk7DQo+ID4gK30NCj4gDQo+IE9uIHRoZSBwcmV2aW91 cyByb3VuZCBJIHN1Z2dlc3RlZCB0aGUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24NCj4gZmluZF9s YXN0X2JpdCgpLCBzbyB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhbiBvdXRsaW5lDQo+ IF9maW5kX2xhc3RfYml0X2Zyb20oKSBmdW5jdGlvbiBhbmQgZXhwb3NlIGl0LiBDYW4geW91IGNv bXBhcmUgdGhlDQo+IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIHBlcmZvcm1hbmNlIGltcGFjdC4g SWYgdGhleSBhcmUgb24gcGFyLA0KPiBJJ2Qgc3RpY2sgdG8gb25lIHJlLXVzaW5nIHRoZSBleGlz dGluZyBjb2RlLg0KDQpVc2luZyB0aGUgbmV3IEFQSSBmaW5kX2xhc3RfYml0X2Zyb20oKSBpcyBh Ym91dCA0JSBmYXN0ZXIgdGhhbiB1c2luZyBmaW5kX2xhc3RfYml0KCkuDQpUaGlzIGlzIGxpa2Vs eSBiZWNhdXNlIGZpbmRfbGFzdF9iaXQoKSByZXF1aXJlcyBhZGRpdGlvbmFsIG9mZnNldCBjYWxj dWxhdGlvbnMuDQphcyBzaG93biBiZWxvdzoNCmluZGV4X2JpdHNfYWxpZ24gPSByb3VuZF9kb3du KGluZGV4LCBCSVRTX1BFUl9MT05HKTsNCmluZGV4X2lkeCA9IGluZGV4IC8gQklUU19QRVJfTE9O RzsNCmkgPSBmaW5kX2xhc3RfYml0KG1hcCArIGluZGV4X2lkeCwgZW5kIC0gaW5kZXhfYml0c19h bGlnbikgKyBpbmRleF9iaXRzX2FsaWduOw0KDQoNClNvIHdoaWNoIGFwcHJvYWNoIGRvIHlvdSBw cmVmZXI/IFVzaW5nIHRoZSBuZXcgQVBJIG9yIG5vdD8NCkkgd2lsbCBzZW5kIHBhdGNoIHY0IChp bmNsdWRpbmcgdGVzdGluZyBjb2RlKSBiYXNlZCBvbiB5b3VyIHN1Z2dlc3Rpb24uDQoNCj4gDQo+ IFRoYW5rcywNCj4gWXVyeQ0KPiANCj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgKiBmaW5kX25leHRf YW5kX2JpdF93cmFwIC0gZmluZCB0aGUgbmV4dCBzZXQgYml0IGluIGJvdGggbWVtb3J5IHJlZ2lv bnMNCj4gPiAgICogQGFkZHIxOiBUaGUgZmlyc3QgYWRkcmVzcyB0byBiYXNlIHRoZSBzZWFyY2gg b24NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2ZpbmRfYml0LmMgYi9saWIvZmluZF9iaXQuYw0KPiA+ IGluZGV4IDVhYzUyZGZjZTczMC4uMTk2Yjk0NmRhZmZmIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9m aW5kX2JpdC5jDQo+ID4gKysrIGIvbGliL2ZpbmRfYml0LmMNCj4gPiBAQCAtMjM3LDYgKzIzNywy OCBAQCB1bnNpZ25lZCBsb25nIF9maW5kX2xhc3RfYml0KGNvbnN0IHVuc2lnbmVkIGxvbmcNCj4g KmFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkNCj4gPiAgRVhQT1JUX1NZTUJPTChfZmluZF9sYXN0 X2JpdCk7DQo+ID4gICNlbmRpZg0KPiA+DQo+ID4gK3Vuc2lnbmVkIGxvbmcgX2ZpbmRfbGFzdF9i aXRfZnJvbShjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZCBsb25nDQo+IHNpemUs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQp DQo+ID4gK3sNCj4gPiArICAgICB1bnNpZ25lZCBsb25nIHZhbCwgaWR4LCBzdGFydF9pZHg7DQo+ ID4gKw0KPiA+ICsgICAgIGlmICh1bmxpa2VseShvZmZzZXQgPj0gc2l6ZSkpDQo+ID4gKyAgICAg ICAgICAgICByZXR1cm4gc2l6ZTsNCj4gPiArDQo+ID4gKyAgICAgc3RhcnRfaWR4ID0gb2Zmc2V0 IC8gQklUU19QRVJfTE9ORzsNCj4gPiArICAgICBpZHggPSAoc2l6ZSAtIDEpIC8gQklUU19QRVJf TE9ORzsNCj4gPiArICAgICB2YWwgPSBhZGRyW2lkeF0gJiBCSVRNQVBfTEFTVF9XT1JEX01BU0so c2l6ZSk7DQo+ID4gKw0KPiA+ICsgICAgIHdoaWxlICghdmFsICYmIGlkeCA+IHN0YXJ0X2lkeCkN Cj4gPiArICAgICAgICAgICAgIHZhbCA9IGFkZHJbLS1pZHhdOw0KPiA+ICsNCj4gPiArICAgICBp ZiAoaWR4ID09IHN0YXJ0X2lkeCkNCj4gPiArICAgICAgICAgICAgIHZhbCAmPSBCSVRNQVBfRklS U1RfV09SRF9NQVNLKG9mZnNldCk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiB2YWwgPyBpZHgg KiBCSVRTX1BFUl9MT05HICsgX19mbHModmFsKSA6IHNpemU7DQo+ID4gK30NCj4gPiArRVhQT1JU X1NZTUJPTChfZmluZF9sYXN0X2JpdF9mcm9tKTsNCj4gPiArDQo+ID4gIHVuc2lnbmVkIGxvbmcg ZmluZF9uZXh0X2NsdW1wOCh1bnNpZ25lZCBsb25nICpjbHVtcCwgY29uc3QgdW5zaWduZWQgbG9u Zw0KPiAqYWRkciwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpDQo+ID4gIHsNCj4gPiAtLQ0KPiA+IDIuMzQu MQ0K