From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94313FF8860 for ; Mon, 27 Apr 2026 15:21:53 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 690A6402EA; Mon, 27 Apr 2026 17:21:52 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id A214B402BC for ; Mon, 27 Apr 2026 17:21:50 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 5303220778; Mon, 27 Apr 2026 17:21:50 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v5] mempool: improve cache behaviour and performance Date: Mon, 27 Apr 2026 17:21:46 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35F65824@smartserver.smartshare.dk> In-Reply-To: <20260419095526.39526-1-mb@smartsharesystems.com> X-MimeOLE: Produced By Microsoft Exchange V6.5 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v5] mempool: improve cache behaviour and performance Thread-Index: AdzP4qoNb2t0Ok1ZRbiYs0AZNsQKHQGdbYBQ References: <20260408141315.904381-1-mb@smartsharesystems.com> <20260419095526.39526-1-mb@smartsharesystems.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: , "Andrew Rybchenko" , "Bruce Richardson" , "Jingjing Wu" , "Praveen Shetty" , "Hemant Agrawal" , "Sachin Saxena" 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 UElORyBmb3IgcmV2aWV3Lg0KDQpJTUhPLCByZWR1Y2luZyB0aGUgbWVtcG9vbCBjYWNoZSBtaXNz IHJhdGUgYnkgZmFjdG9yIDIuNCBpcyBhIHJlbGV2YW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50 IFsqXS4NCg0KSSdkIGxpa2UgdG8gc2VlIHRoaXMgcGF0Y2ggZ28gaW50byBEUERLIDI2LjA3LCBz byB0aGUgZXhwZWN0ZWQgQUJJL0FQSSBicmVha2luZyBjbGVhbnVwIHBhdGNoIGNhbiBnbyBpbnRv IERQREsgMjYuMTEuDQoNClsqXSByZWZlcnJpbmcgdG8gcGVyZm9ybWFuY2UgZGF0YSBpbiB0aGUg cGF0Y2ggZGVzY3JpcHRpb246DQo+IFdpdGggYSByZWFsIFdBTiBPcHRpbWl6YXRpb24gYXBwbGlj YXRpb24sIHdoZXJlIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkDQo+IHBhY2tldHMgdmFyaWVzIChh cyB0aGV5IGFyZSBoZWxkIGluIGUuZy4gc2hhcGVyIHF1ZXVlcyksIHRoZSBtZW1wb29sDQo+IGNh Y2hlIG1pc3MgcmF0ZSBkcm9wcGVkIGZyb20gY2EuIDEvMjAgb2JqZWN0cyB0byBjYS4gMS80OCBv YmplY3RzLg0KPiBUaGlzIHdhcyBkZXBsb3llZCBpbiBwcm9kdWN0aW9uIGF0IGFuIElTUCwgYW5k IHVzaW5nIGFuIGVmZmVjdGl2ZSBjYWNoZQ0KPiBzaXplIG9mIDM4NCBvYmplY3RzLg0KDQotTW9y dGVuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTW9ydGVuIEJyw7hy dXAgW21haWx0bzptYkBzbWFydHNoYXJlc3lzdGVtcy5jb21dDQo+IFNlbnQ6IFN1bmRheSwgMTkg QXByaWwgMjAyNiAxMS41NQ0KPiANCj4gVGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIG1lbXBvb2wg Y2FjaGUgdG8gZWxpbWluYXRlIHNvbWUgdW5leHBlY3RlZA0KPiBiZWhhdmlvdXIgYW5kIHJlZHVj ZSB0aGUgbWVtcG9vbCBjYWNoZSBtaXNzIHJhdGUuDQo+IA0KPiAxLg0KPiBUaGUgYWN0dWFsIGNh Y2hlIHNpemUgd2FzIDEuNSB0aW1lcyB0aGUgY2FjaGUgc2l6ZSBzcGVjaWZpZWQgYXQgcnVuLQ0K PiB0aW1lDQo+IG1lbXBvb2wgY3JlYXRpb24uDQo+IFRoaXMgd2FzIG9idmlvdXNseSBub3QgZXhw ZWN0ZWQgYnkgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4NCj4gDQo+IDIuDQo+IEluIGdldCBvcGVy YXRpb25zLCB0aGUgY2hlY2sgZm9yIHdoZW4gdG8gdXNlIHRoZSBjYWNoZSBhcyBib3VuY2UgYnVm ZmVyDQo+IGRpZCBub3QgcmVzcGVjdCB0aGUgcnVuLXRpbWUgY29uZmlndXJlZCBjYWNoZSBzaXpl LA0KPiBidXQgY29tcGFyZWQgdG8gdGhlIGJ1aWxkIHRpbWUgbWF4aW11bSBwb3NzaWJsZSBjYWNo ZSBzaXplDQo+IChSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSwgZGVmYXVsdCA1MTIpLg0KPiBF LmcuIHdpdGggYSBjb25maWd1cmVkIGNhY2hlIHNpemUgb2YgMzIgb2JqZWN0cywgZ2V0dGluZyAy NTYgb2JqZWN0cw0KPiB3b3VsZCBmaXJzdCBmZXRjaCAzMiArIDI1NiA9IDI4OCBvYmplY3RzIGlu dG8gdGhlIGNhY2hlLA0KPiBhbmQgdGhlbiBtb3ZlIHRoZSAyNTYgb2JqZWN0cyBmcm9tIHRoZSBj YWNoZSB0byB0aGUgZGVzdGluYXRpb24gbWVtb3J5LA0KPiBpbnN0ZWFkIG9mIGZldGNoaW5nIHRo ZSAyNTYgb2JqZWN0cyBkaXJlY3RseSB0byB0aGUgZGVzdGluYXRpb24gbWVtb3J5Lg0KPiBUaGlz IGhhZCBhIHBlcmZvcm1hbmNlIGNvc3QuDQo+IEhvd2V2ZXIsIHRoaXMgaXMgdW5saWtlbHkgdG8g b2NjdXIgaW4gcmVhbCBhcHBsaWNhdGlvbnMsIHNvIGl0IGlzIG5vdA0KPiBpbXBvcnRhbnQgaW4g aXRzZWxmLg0KPiANCj4gMy4NCj4gV2hlbiBwdXR0aW5nIG9iamVjdHMgaW50byBhIG1lbXBvb2ws IGFuZCB0aGUgbWVtcG9vbCBjYWNoZSBkaWQgbm90IGhhdmUNCj4gZnJlZSBzcGFjZSBmb3Igc28g bWFueSBvYmplY3RzLA0KPiB0aGUgY2FjaGUgd2FzIGZsdXNoZWQgY29tcGxldGVseSwgYW5kIHRo ZSBuZXcgb2JqZWN0cyB3ZXJlIHRoZW4gcHV0DQo+IGludG8NCj4gdGhlIGNhY2hlLg0KPiBJLmUu IHRoZSBjYWNoZSBkcmFpbiBsZXZlbCB3YXMgemVyby4NCj4gVGhpcyAoY29tcGxldGUgY2FjaGUg Zmx1c2gpIG1lYW50IHRoYXQgYSBzdWJzZXF1ZW50IGdldCBvcGVyYXRpb24gKHdpdGgNCj4gdGhl IHNhbWUgbnVtYmVyIG9mIG9iamVjdHMpIGNvbXBsZXRlbHkgZW1wdGllZCB0aGUgY2FjaGUsDQo+ IHNvIGFub3RoZXIgc3Vic2VxdWVudCBnZXQgb3BlcmF0aW9uIHJlcXVpcmVkIHJlcGxlbmlzaGlu ZyB0aGUgY2FjaGUuDQo+IA0KPiBTaW1pbGFybHksDQo+IFdoZW4gZ2V0dGluZyBvYmplY3RzIGZy b20gYSBtZW1wb29sLCBhbmQgdGhlIG1lbXBvb2wgY2FjaGUgZGlkIG5vdCBob2xkDQo+IHNvDQo+ IG1hbnkgb2JqZWN0cywNCj4gdGhlIGNhY2hlIHdhcyByZXBsZW5pc2hlZCB0byBjYWNoZS0+c2l6 ZSArIHJlbWFpbmluZyBvYmplY3RzLA0KPiBhbmQgdGhlbiAodGhlIHJlbWFpbmluZyBwYXJ0IG9m KSB0aGUgcmVxdWVzdGVkIG9iamVjdHMgd2VyZSBmZXRjaGVkIHZpYQ0KPiB0aGUgY2FjaGUsDQo+ IHdoaWNoIGxlZnQgdGhlIGNhY2hlIGZpbGxlZCAodG8gY2FjaGUtPnNpemUpIGF0IGNvbXBsZXRp b24uDQo+IEkuZS4gdGhlIGNhY2hlIHJlZmlsbCBsZXZlbCB3YXMgY2FjaGUtPnNpemUgKHBsdXMg c29tZSwgZGVwZW5kaW5nIG9uDQo+IHJlcXVlc3Qgc2l6ZSkuDQo+IA0KPiAoMSkgd2FzIGltcHJv dmVkIGJ5IGdlbmVyYWxseSBjb21wYXJpbmcgdG8gY2FjaGUtPnNpemUgaW5zdGVhZCBvZg0KPiBj YWNoZS0+Zmx1c2h0aHJlc2gsIHdoZW4gY29uc2lkZXJpbmcgdGhlIGNhcGFjaXR5IG9mIHRoZSBj YWNoZS4NCj4gVGhlIGNhY2hlLT5mbHVzaHRocmVzaCBmaWVsZCBpcyBrZXB0IGZvciBBUEkvQUJJ IGNvbXBhdGliaWxpdHkNCj4gcHVycG9zZXMsDQo+IGFuZCBpbml0aWFsaXplZCB0byBjYWNoZS0+ c2l6ZSBpbnN0ZWFkIG9mIGNhY2hlLT5zaXplICogMS41Lg0KPiANCj4gKDIpIHdhcyBpbXByb3Zl ZCBieSBnZW5lcmFsbHkgY29tcGFyaW5nIHRvIGNhY2hlLT5zaXplIC8gMiBpbnN0ZWFkIG9mDQo+ IFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFLCB3aGVuIGNoZWNraW5nIHRoZSBib3VuY2UgYnVm ZmVyIGxpbWl0Lg0KPiANCj4gKDMpIHdhcyBpbXByb3ZlZCBieSBmbHVzaGluZyBhbmQgcmVwbGVu aXNoaW5nIHRoZSBjYWNoZSBieSBoYWxmIGl0cw0KPiBzaXplLA0KPiBzbyBhIGZsdXNoL3JlZmls bCBjYW4gYmUgZm9sbG93ZWQgcmFuZG9tbHkgYnkgZ2V0IG9yIHB1dCByZXF1ZXN0cy4NCj4gVGhp cyBhbHNvIHJlZHVjZWQgdGhlIG51bWJlciBvZiBvYmplY3RzIGluIGVhY2ggZmx1c2gvcmVmaWxs IG9wZXJhdGlvbi4NCj4gDQo+IEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhlc2UgY2hhbmdlcywgdGhl IHNpemUgb2YgdGhlIGFycmF5IGhvbGRpbmcgdGhlDQo+IG9iamVjdHMgaW4gdGhlIGNhY2hlIChj YWNoZS0+b2Jqc1tdKSBubyBsb25nZXIgbmVlZHMgdG8gYmUNCj4gMiAqIFJURV9NRU1QT09MX0NB Q0hFX01BWF9TSVpFLCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8NCj4gUlRFX01FTVBPT0xfQ0FDSEVf TUFYX1NJWkUgYXQgYW4gQVBJL0FCSSBicmVha2luZyByZWxlYXNlLg0KPiANCj4gUGVyZm9ybWFu Y2UgZGF0YToNCj4gV2l0aCBhIHJlYWwgV0FOIE9wdGltaXphdGlvbiBhcHBsaWNhdGlvbiwgd2hl cmUgdGhlIG51bWJlciBvZiBhbGxvY2F0ZWQNCj4gcGFja2V0cyB2YXJpZXMgKGFzIHRoZXkgYXJl IGhlbGQgaW4gZS5nLiBzaGFwZXIgcXVldWVzKSwgdGhlIG1lbXBvb2wNCj4gY2FjaGUgbWlzcyBy YXRlIGRyb3BwZWQgZnJvbSBjYS4gMS8yMCBvYmplY3RzIHRvIGNhLiAxLzQ4IG9iamVjdHMuDQo+ IFRoaXMgd2FzIGRlcGxveWVkIGluIHByb2R1Y3Rpb24gYXQgYW4gSVNQLCBhbmQgdXNpbmcgYW4g ZWZmZWN0aXZlIGNhY2hlDQo+IHNpemUgb2YgMzg0IG9iamVjdHMuDQo+IA0KPiBBcyBhIGNvbnNl cXVlbmNlIG9mIHRoZSBpbXByb3ZlZCBtZW1wb29sIGNhY2hlIGFsZ29yaXRobSwgc29tZSBkcml2 ZXJzDQo+IHdlcmUgdXBkYXRlZCBhY2NvcmRpbmdseToNCj4gLSBUaGUgSW50ZWwgaWRwZiBQTUQg d2FzIHVwZGF0ZWQgcmVnYXJkaW5nIGhvdyBtdWNoIHRvIGJhY2tmaWxsIHRoZQ0KPiAgIG1lbXBv b2wgY2FjaGUgaW4gdGhlIEFWWDUxMiBjb2RlLg0KPiAtIFRoZSBOWFAgZHBhYSBhbmQgZHBhYTIg bWVtcG9vbCBkcml2ZXJzIHdlcmUgdXBkYXRlZCB0byBub3Qgc2V0IHRoZQ0KPiAgIG1lbXBvb2wg Y2FjaGUgZmx1c2ggdGhyZXNob2xkOyBkb2luZyB0aGlzIG5vIGxvbmdlciBoYXMgYW55IGVmZmVj dCwNCj4gYW5kDQo+ICAgdGh1cyBiZWNhbWUgc3VwZXJmbHVvdXMuDQo+IA0KPiBCdWd6aWxsYSBJ RDogMTAyNw0KPiBGaXhlczogZWE1ZGQyNzQ0YjkwICgibWVtcG9vbDogY2FjaGUgb3B0aW1pc2F0 aW9ucyIpDQo+IFNpZ25lZC1vZmYtYnk6IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lz dGVtcy5jb20+DQo+IC0tLQ0KPiBEZXBlbmRzLW9uOiBwYXRjaC0xNjMxODEgKCJuZXQvaW50ZWw6 IGRvIG5vdCBieXBhc3MgbWJ1ZiBsaWIgZm9yIG1idWYNCj4gZmFzdC1mcmVlIikNCj4gLS0tDQo+ IHY1Og0KPiAqIEZsdXNoIHRoZSBjYWNoZSBmcm9tIHRoZSBib3R0b20sIHdoZXJlIG9iamVjdHMg YXJlIGNvbGRlciwgYW5kIG1vdmUNCj4gZG93bg0KPiAgIHRoZSByZW1haW5pbmcgb2JqZWN0cywg d2hpY2ggYXJlIGhvdHRlci4NCj4gKiBJbiB0aGUgSW50ZWwgaWRwZiBQTUQsIG1vdmUgdXAgdGhl IGhvdCBvYmplY3RzIGluIHRoZSBjYWNoZSBhbmQNCj4gcmVmaWxsDQo+ICAgd2l0aCBjb2xkIG9i amVjdHMgYXQgdGhlIGJvdHRvbS4NCj4gdjQ6DQo+ICogQWRkZWQgQnVnemlsbGEgSUQuDQo+ICog QWRkZWQgRml4ZXMgdGFnLiBGb3IgcmVmZXJlbmNlIG9ubHkuDQo+ICogTW92ZWQgZmFzdC1mcmVl IHJlbGF0ZWQgdXBkYXRlIG9mIEludGVsIGNvbW1vbiBkcml2ZXIgb3V0IGFzIGENCj4gc2VwYXJh dGUNCj4gICBwYXRjaCwgYW5kIGRlcGVuZCBvbiB0aGF0IHBhdGNoLg0KPiAqIE9taXR0ZWQgdW5y ZWxhdGVkIGNoYW5nZXMgdG8gdGhlIEludGVsIGlkcGYgQVZYNTEyIGRyaXZlciwNCj4gc3BlY2lm aWNhbGx5DQo+ICAgZml4aW5nIGFuIGluZGVudGF0aW9uIGFuZCBhZGRpbmcgbWJ1ZiBpbnN0cnVt ZW50YXRpb24uDQo+ICogT21pdHRlZCB1bnJlbGF0ZWQgY2hhbmdlcyB0byB0aGUgbWVtcG9vbCBs aWJyYXJ5LCBzcGVjaWZpY2FsbHkgYWRkaW5nDQo+ICAgX19ydGVfcmVzdHJpY3QgYW5kIGNoYW5n aW5nIGEgY291cGxlIG9mIGNvbW1lbnRzIHRvIHByb3BlciBzZW50ZW5jZXMuDQo+ICogUGxlYXNl IGNoZWNrcGF0Y2hlcyBieSBzd2FwcGluZyBvcGVyYXRvcnMgaW4gYSBjb3VwbGUgb2YgY29tcGFy aXNvbnMuDQo+IHYzOg0KPiAqIEZpeGVkIG15IGNvcHktcGFzdGUgYnVnIGluIGlkcGZfc3BsaXRx X3JlYXJtKCkuDQo+IHYyOg0KPiAqIEZpeGVkIGlzc3VlIGZvdW5kIGJ5IGFiaWRpZmY6DQo+ICAg UmV2ZXJ0ZWQgY2FjaGUgb2JqZWN0cyBhcnJheSBzaXplIHJlZHVjdGlvbi4gQWRkZWQgYSBub3Rl IGluc3RlYWQuDQo+ICogQWRkZWQgbWlzc2luZyBtYnVmIGluc3RydW1lbnRhdGlvbiB0byB0aGUg SW50ZWwgaWRwZiBBVlg1MTIgZHJpdmVyLg0KPiAqIFVwZGF0ZWQgaWRwZl9zcGxpdHFfcmVhcm0o KSBsaWtlIGlkcGZfc2luZ2xlcV9yZWFybSgpLg0KPiAqIEFkZGVkIGEgZmV3IG1vcmUgX19ydGVf YXNzdW1lKCkuIChJbnNwaXJlZCBieSBBSSByZXZpZXcpDQo+ICogVXBkYXRlZCBOWFAgZHBhYSBh bmQgZHBhYTIgbWVtcG9vbCBkcml2ZXJzIHRvIG5vdCBzZXQgbWVtcG9vbCBjYWNoZQ0KPiAgIGZs dXNoIHRocmVzaG9sZC4NCj4gKiBBZGRlZCByZWxlYXNlIG5vdGVzLg0KPiAqIEFkZGVkIGRlcHJl Y2F0aW9uIG5vdGVzLg0KPiAtLS0NCj4gIGRvYy9ndWlkZXMvcmVsX25vdGVzL2RlcHJlY2F0aW9u LnJzdCAgICAgICAgICB8ICA3ICsrDQo+ICBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzI2 XzA3LnJzdCAgICAgICAgfCAxMCArKysNCj4gIGRyaXZlcnMvbWVtcG9vbC9kcGFhL2RwYWFfbWVt cG9vbC5jICAgICAgICAgICB8IDE0IC0tLS0NCj4gIGRyaXZlcnMvbWVtcG9vbC9kcGFhMi9kcGFh Ml9od19tZW1wb29sLmMgICAgICB8IDE0IC0tLS0NCj4gIC4uLi9uZXQvaW50ZWwvaWRwZi9pZHBm X2NvbW1vbl9yeHR4X2F2eDUxMi5jICB8IDUyICsrKysrKysrKysrLS0tDQo+ICBsaWIvbWVtcG9v bC9ydGVfbWVtcG9vbC5jICAgICAgICAgICAgICAgICAgICAgfCAxNCArLS0tDQo+ICBsaWIvbWVt cG9vbC9ydGVfbWVtcG9vbC5oICAgICAgICAgICAgICAgICAgICAgfCA3MCArKysrKysrKysrKyst LS0tLS0tDQo+ICA3IGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCA3NyBkZWxldGlv bnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9kZXByZWNhdGlv bi5yc3QNCj4gYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9kZXByZWNhdGlvbi5yc3QNCj4gaW5kZXgg MzVjOWI0ZTA2Yy4uNDA3NjBmZmZiYiAxMDA2NDQNCj4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90 ZXMvZGVwcmVjYXRpb24ucnN0DQo+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL2RlcHJlY2F0 aW9uLnJzdA0KPiBAQCAtMTU0LDMgKzE1NCwxMCBAQCBEZXByZWNhdGlvbiBOb3RpY2VzDQo+ICAq IGJ1cy92bWJ1czogU3RhcnRpbmcgRFBESyAyNS4xMSwgYWxsIHRoZSB2bWJ1cyBBUEkgZGVmaW5l ZCBpbg0KPiAgICBgYGRyaXZlcnMvYnVzL3ZtYnVzL3J0ZV9idXNfdm1idXMuaGBgIHdpbGwgYmVj b21lIGludGVybmFsIHRvIERQREsuDQo+ICAgIFRob3NlIEFQSSBmdW5jdGlvbnMgYXJlIHVzZWQg aW50ZXJuYWxseSBieSBEUERLIGNvcmUgYW5kIG5ldHZzYyBQTUQuDQo+ICsNCj4gKyogbWVtcG9v bDogVGhlIGBgZmx1c2h0aHJlc2hgYCBmaWVsZCBpbiBgYHN0cnVjdCBydGVfbWVtcG9vbF9jYWNo ZWBgDQo+ICsgIGlzIG9ic29sZXRlLCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIERQREsgMjYuMTEu DQo+ICsNCj4gKyogbWVtcG9vbDogVGhlIG9iamVjdCBhcnJheSBpbiBgYHN0cnVjdCBydGVfbWVt cG9vbF9jYWNoZWBgIGlzDQo+IG92ZXJzaXplIGJ5DQo+ICsgIGZhY3RvciB0d28sIGFuZCB3aWxs IGJlIHJlZHVjZWQgdG8gYGBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRWBgIGluDQo+ICsgIERQ REsgMjYuMTEuDQo+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzI2 XzA3LnJzdA0KPiBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjZfMDcucnN0DQo+IGlu ZGV4IDA2MGIyNmZmNjEuLjY3ZmQ5N2ZhNjEgMTAwNjQ0DQo+IC0tLSBhL2RvYy9ndWlkZXMvcmVs X25vdGVzL3JlbGVhc2VfMjZfMDcucnN0DQo+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3Jl bGVhc2VfMjZfMDcucnN0DQo+IEBAIC0yNCw2ICsyNCwxNiBAQCBEUERLIFJlbGVhc2UgMjYuMDcN Cj4gIE5ldyBGZWF0dXJlcw0KPiAgLS0tLS0tLS0tLS0tDQo+IA0KPiArKiAqKkNoYW5nZWQgZWZm ZWN0aXZlIHNpemUgb2YgbWVtcG9vbCBjYWNoZS4qKg0KPiArDQo+ICsgICogVGhlIGVmZmVjdGl2 ZSBzaXplIG9mIGEgbWVtcG9vbCBjYWNoZSB3YXMgY2hhbmdlZCB0byBtYXRjaCB0aGUNCj4gc3Bl Y2lmaWVkIHNpemUgYXQgbWVtcG9vbCBjcmVhdGlvbjsgdGhlIGVmZmVjdGl2ZSBzaXplIHdhcyBw cmV2aW91c2x5DQo+IDUwICUgbGFyZ2VyIHRoYW4gcmVxdWVzdGVkLg0KPiArICAqIFRoZSBgYGZs dXNodGhyZXNoYGAgZmllbGQgb2YgdGhlIGBgc3RydWN0IHJ0ZV9tZW1wb29sX2NhY2hlYGANCj4g YmVjYW1lIG9ic29sZXRlLCBidXQgd2FzIGtlcHQgZm9yIEFQSS9BQkkgY29tcGF0aWJpbGl0eSBw dXJwb3Nlcy4NCj4gKyAgKiBUaGUgZWZmZWN0aXZlIHNpemUgb2YgdGhlIGBgb2Jqc2BgIGFycmF5 IGluIHRoZSBgYHN0cnVjdA0KPiBydGVfbWVtcG9vbF9jYWNoZWBgIHdhcyByZWR1Y2VkIHRvIGBg UlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkVgYCwgYnV0DQo+IGl0cyBzaXplIHdhcyBrZXB0IGZv ciBBUEkvQUJJIGNvbXBhdGliaWxpdHkgcHVycG9zZXMuDQo+ICsNCj4gKyogKipJbXByb3ZlZCBt ZW1wb29sIGNhY2hlIGZsdXNoL3JlZmlsbCBhbGdvcml0aG0uKioNCj4gKw0KPiArICAqIFRoZSBt ZW1wb29sIGNhY2hlIGZsdXNoL3JlZmlsbCBhbGdvcml0aG0gd2FzIGltcHJvdmVkLCB0byByZWR1 Y2UNCj4gdGhlIG1lbXBvb2wgY2FjaGUgbWlzcyByYXRlLg0KPiArDQo+ICAuLiBUaGlzIHNlY3Rp b24gc2hvdWxkIGNvbnRhaW4gbmV3IGZlYXR1cmVzIGFkZGVkIGluIHRoaXMgcmVsZWFzZS4NCj4g ICAgIFNhbXBsZSBmb3JtYXQ6DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZW1wb29sL2Rw YWEvZHBhYV9tZW1wb29sLmMNCj4gYi9kcml2ZXJzL21lbXBvb2wvZHBhYS9kcGFhX21lbXBvb2wu Yw0KPiBpbmRleCAyZjkzOTViM2Y0Li4yZjg1NTVhMDI2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz L21lbXBvb2wvZHBhYS9kcGFhX21lbXBvb2wuYw0KPiArKysgYi9kcml2ZXJzL21lbXBvb2wvZHBh YS9kcGFhX21lbXBvb2wuYw0KPiBAQCAtNTgsOCArNTgsNiBAQCBkcGFhX21idWZfY3JlYXRlX3Bv b2woc3RydWN0IHJ0ZV9tZW1wb29sICptcCkNCj4gIAlzdHJ1Y3QgYm1hbl9wb29sX3BhcmFtcyBw YXJhbXMgPSB7DQo+ICAJCS5mbGFncyA9IEJNQU5fUE9PTF9GTEFHX0RZTkFNSUNfQlBJRA0KPiAg CX07DQo+IC0JdW5zaWduZWQgaW50IGxjb3JlX2lkOw0KPiAtCXN0cnVjdCBydGVfbWVtcG9vbF9j YWNoZSAqY2FjaGU7DQo+IA0KPiAgCU1FTVBPT0xfSU5JVF9GVU5DX1RSQUNFKCk7DQo+IA0KPiBA QCAtMTI5LDE4ICsxMjcsNiBAQCBkcGFhX21idWZfY3JlYXRlX3Bvb2woc3RydWN0IHJ0ZV9tZW1w b29sICptcCkNCj4gIAlydGVfbWVtY3B5KGJwX2luZm8sICh2b2lkICopJnJ0ZV9kcGFhX2JwaWRf aW5mb1ticGlkXSwNCj4gIAkJICAgc2l6ZW9mKHN0cnVjdCBkcGFhX2JwX2luZm8pKTsNCj4gIAlt cC0+cG9vbF9kYXRhID0gKHZvaWQgKilicF9pbmZvOw0KPiAtCS8qIFVwZGF0ZSBwZXIgY29yZSBt ZW1wb29sIGNhY2hlIHRocmVzaG9sZCB0byBvcHRpbWFsIHZhbHVlIHdoaWNoDQo+IGlzDQo+IC0J ICogbnVtYmVyIG9mIGJ1ZmZlcnMgdGhhdCBjYW4gYmUgcmVsZWFzZWQgdG8gSFcgYnVmZmVyIHBv b2wgaW4NCj4gLQkgKiBhIHNpbmdsZSBBUEkgY2FsbC4NCj4gLQkgKi8NCj4gLQlmb3IgKGxjb3Jl X2lkID0gMDsgbGNvcmVfaWQgPCBSVEVfTUFYX0xDT1JFOyBsY29yZV9pZCsrKSB7DQo+IC0JCWNh Y2hlID0gJm1wLT5sb2NhbF9jYWNoZVtsY29yZV9pZF07DQo+IC0JCURQQUFfTUVNUE9PTF9ERUJV RygibENvcmUgJWQ6IGNhY2hlLT5mbHVzaHRocmVzaCAlZCAtPiAlZCIsDQo+IC0JCQlsY29yZV9p ZCwgY2FjaGUtPmZsdXNodGhyZXNoLA0KPiAtCQkJKHVpbnQzMl90KShjYWNoZS0+c2l6ZSArIERQ QUFfTUJVRl9NQVhfQUNRX1JFTCkpOw0KPiAtCQlpZiAoY2FjaGUtPmZsdXNodGhyZXNoKQ0KPiAt CQkJY2FjaGUtPmZsdXNodGhyZXNoID0gY2FjaGUtPnNpemUgKw0KPiBEUEFBX01CVUZfTUFYX0FD UV9SRUw7DQo+IC0JfQ0KPiANCj4gIAlEUEFBX01FTVBPT0xfSU5GTygiQk1BTiBwb29sIGNyZWF0 ZWQgZm9yIGJwaWQgPSVkIiwgYnBpZCk7DQo+ICAJcmV0dXJuIDA7DQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21lbXBvb2wvZHBhYTIvZHBhYTJfaHdfbWVtcG9vbC5jDQo+IGIvZHJpdmVycy9tZW1w b29sL2RwYWEyL2RwYWEyX2h3X21lbXBvb2wuYw0KPiBpbmRleCAwMmI2NzQxODUzLi5lZTAwMWQ4 Y2UwIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lbXBvb2wvZHBhYTIvZHBhYTJfaHdfbWVtcG9v bC5jDQo+ICsrKyBiL2RyaXZlcnMvbWVtcG9vbC9kcGFhMi9kcGFhMl9od19tZW1wb29sLmMNCj4g QEAgLTU0LDggKzU0LDYgQEAgcnRlX2h3X21idWZfY3JlYXRlX3Bvb2woc3RydWN0IHJ0ZV9tZW1w b29sICptcCkNCj4gIAlzdHJ1Y3QgZHBhYTJfYnBfaW5mbyAqYnBfaW5mbzsNCj4gIAlzdHJ1Y3Qg ZHBicF9hdHRyIGRwYnBfYXR0cjsNCj4gIAl1aW50MzJfdCBicGlkOw0KPiAtCXVuc2lnbmVkIGlu dCBsY29yZV9pZDsNCj4gLQlzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlOw0KPiAgCWlu dCByZXQ7DQo+IA0KPiAgCWF2YWlsX2RwYnAgPSBkcGFhMl9hbGxvY19kcGJwX2RldigpOw0KPiBA QCAtMTUyLDE4ICsxNTAsNiBAQCBydGVfaHdfbWJ1Zl9jcmVhdGVfcG9vbChzdHJ1Y3QgcnRlX21l bXBvb2wgKm1wKQ0KPiAgCURQQUEyX01FTVBPT0xfREVCVUcoIkJQIExpc3QgY3JlYXRlZCBmb3Ig YnBpZCA9JWQiLA0KPiBkcGJwX2F0dHIuYnBpZCk7DQo+IA0KPiAgCWhfYnBfbGlzdCA9IGJwX2xp c3Q7DQo+IC0JLyogVXBkYXRlIHBlciBjb3JlIG1lbXBvb2wgY2FjaGUgdGhyZXNob2xkIHRvIG9w dGltYWwgdmFsdWUgd2hpY2gNCj4gaXMNCj4gLQkgKiBudW1iZXIgb2YgYnVmZmVycyB0aGF0IGNh biBiZSByZWxlYXNlZCB0byBIVyBidWZmZXIgcG9vbCBpbg0KPiAtCSAqIGEgc2luZ2xlIEFQSSBj YWxsLg0KPiAtCSAqLw0KPiAtCWZvciAobGNvcmVfaWQgPSAwOyBsY29yZV9pZCA8IFJURV9NQVhf TENPUkU7IGxjb3JlX2lkKyspIHsNCj4gLQkJY2FjaGUgPSAmbXAtPmxvY2FsX2NhY2hlW2xjb3Jl X2lkXTsNCj4gLQkJRFBBQTJfTUVNUE9PTF9ERUJVRygibENvcmUgJWQ6IGNhY2hlLT5mbHVzaHRo cmVzaCAlZCAtPg0KPiAlZCIsDQo+IC0JCQlsY29yZV9pZCwgY2FjaGUtPmZsdXNodGhyZXNoLA0K PiAtCQkJKHVpbnQzMl90KShjYWNoZS0+c2l6ZSArIERQQUEyX01CVUZfTUFYX0FDUV9SRUwpKTsN Cj4gLQkJaWYgKGNhY2hlLT5mbHVzaHRocmVzaCkNCj4gLQkJCWNhY2hlLT5mbHVzaHRocmVzaCA9 IGNhY2hlLT5zaXplICsNCj4gRFBBQTJfTUJVRl9NQVhfQUNRX1JFTDsNCj4gLQl9DQo+IA0KPiAg CXJldHVybiAwOw0KPiAgZXJyNDoNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ludGVsL2lk cGYvaWRwZl9jb21tb25fcnh0eF9hdng1MTIuYw0KPiBiL2RyaXZlcnMvbmV0L2ludGVsL2lkcGYv aWRwZl9jb21tb25fcnh0eF9hdng1MTIuYw0KPiBpbmRleCA5YWYyNzVjZDlkLi5kZDIyNjNiOGQ3 IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC9pbnRlbC9pZHBmL2lkcGZfY29tbW9uX3J4dHhf YXZ4NTEyLmMNCj4gKysrIGIvZHJpdmVycy9uZXQvaW50ZWwvaWRwZi9pZHBmX2NvbW1vbl9yeHR4 X2F2eDUxMi5jDQo+IEBAIC0xNDgsMTUgKzE0OCwzMSBAQCBpZHBmX3NpbmdsZXFfcmVhcm0oc3Ry dWN0IGlkcGZfcnhfcXVldWUgKnJ4cSkNCj4gIAkvKiBDYW4gdGhpcyBiZSBzYXRpc2ZpZWQgZnJv bSB0aGUgY2FjaGU/ICovDQo+ICAJaWYgKGNhY2hlLT5sZW4gPCBJRFBGX1JYUV9SRUFSTV9USFJF U0gpIHsNCj4gIAkJLyogTm8uIEJhY2tmaWxsIHRoZSBjYWNoZSBmaXJzdCwgYW5kIHRoZW4gZmls bCBmcm9tIGl0ICovDQo+IC0JCXVpbnQzMl90IHJlcSA9IElEUEZfUlhRX1JFQVJNX1RIUkVTSCAr IChjYWNoZS0+c2l6ZSAtDQo+IC0JCQkJCQkJY2FjaGUtPmxlbik7DQo+IA0KPiAtCQkvKiBIb3cg bWFueSBkbyB3ZSByZXF1aXJlIGkuZS4gbnVtYmVyIHRvIGZpbGwgdGhlIGNhY2hlICsNCj4gdGhl IHJlcXVlc3QgKi8NCj4gKwkJLyogQmFja2ZpbGwgd291bGQgZXhjZWVkIHRoZSBjYWNoZSBib3Vu Y2UgYnVmZmVyIGxpbWl0PyAqLw0KPiArCQlfX3J0ZV9hc3N1bWUoY2FjaGUtPnNpemUgLyAyIDw9 IFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFDQo+IC8gMik7DQo+ICsJCWlmICh1bmxpa2VseShj YWNoZS0+c2l6ZSAvIDIgPCBJRFBGX1JYUV9SRUFSTV9USFJFU0gpKSB7DQo+ICsJCQlpZHBmX3Np bmdsZXFfcmVhcm1fY29tbW9uKHJ4cSk7DQo+ICsJCQlyZXR1cm47DQo+ICsJCX0NCj4gKw0KPiAr CQkvKg0KPiArCQkgKiBCYWNrZmlsbCB0aGUgY2FjaGUgZnJvbSB0aGUgYmFja2VuZDsNCj4gKwkJ ICogbW92ZSB1cCB0aGUgaG90IG9iamVjdHMgaW4gdGhlIGNhY2hlIHRvIHRoZSB0b3AgaGFsZiBv Zg0KPiB0aGUgY2FjaGUsDQo+ICsJCSAqIGFuZCBmZXRjaCAoc2l6ZSAvIDIpIG9iamVjdHMgdG8g dGhlIGJvdHRvbSBvZiB0aGUgY2FjaGUuDQo+ICsJCSAqLw0KPiArCQlfX3J0ZV9hc3N1bWUoY2Fj aGUtPmxlbiA8IGNhY2hlLT5zaXplIC8gMik7DQo+ICsJCXJ0ZV9tZW1jcHkoJmNhY2hlLT5vYmpz W2NhY2hlLT5zaXplIC8gMl0sICZjYWNoZS0+b2Jqc1swXSwNCj4gKwkJCQlzaXplb2Yodm9pZCAq KSAqIGNhY2hlLT5sZW4pOw0KPiAgCQlpbnQgcmV0ID0gcnRlX21lbXBvb2xfb3BzX2RlcXVldWVf YnVsaw0KPiAtCQkJCShyeHEtPm1wLCAmY2FjaGUtPm9ianNbY2FjaGUtPmxlbl0sIHJlcSk7DQo+ ICsJCQkJKHJ4cS0+bXAsICZjYWNoZS0+b2Jqc1swXSwgY2FjaGUtPnNpemUgLyAyKTsNCj4gIAkJ aWYgKHJldCA9PSAwKSB7DQo+IC0JCQljYWNoZS0+bGVuICs9IHJlcTsNCj4gKwkJCWNhY2hlLT5s ZW4gKz0gY2FjaGUtPnNpemUgLyAyOw0KPiAgCQl9IGVsc2Ugew0KPiArCQkJLyoNCj4gKwkJCSAq IE5vIGZ1cnRoZXIgYWN0aW9uIGlzIHJlcXVpcmVkIGZvciByb2xsIGJhY2ssIGFzDQo+IHRoZSBv YmplY3RzIG1vdmVkDQo+ICsJCQkgKiBpbiB0aGUgY2FjaGUgd2VyZSBhY3R1YWxseSBjb3BpZWQs IGFuZCB0aGUgY2FjaGUNCj4gcmVtYWlucyBpbnRhY3QuDQo+ICsJCQkgKi8NCj4gIAkJCWlmIChy eHEtPnJ4cmVhcm1fbmIgKyBJRFBGX1JYUV9SRUFSTV9USFJFU0ggPj0NCj4gIAkJCSAgICByeHEt Pm5iX3J4X2Rlc2MpIHsNCj4gIAkJCQlfX20xMjhpIGRtYV9hZGRyMDsNCj4gQEAgLTU2NSwxNSAr NTgxLDMxIEBAIGlkcGZfc3BsaXRxX3JlYXJtKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeF9idWZx KQ0KPiAgCS8qIENhbiB0aGlzIGJlIHNhdGlzZmllZCBmcm9tIHRoZSBjYWNoZT8gKi8NCj4gIAlp ZiAoY2FjaGUtPmxlbiA8IElEUEZfUlhRX1JFQVJNX1RIUkVTSCkgew0KPiAgCQkvKiBOby4gQmFj a2ZpbGwgdGhlIGNhY2hlIGZpcnN0LCBhbmQgdGhlbiBmaWxsIGZyb20gaXQgKi8NCj4gLQkJdWlu dDMyX3QgcmVxID0gSURQRl9SWFFfUkVBUk1fVEhSRVNIICsgKGNhY2hlLT5zaXplIC0NCj4gLQkJ CQkJCQljYWNoZS0+bGVuKTsNCj4gDQo+IC0JCS8qIEhvdyBtYW55IGRvIHdlIHJlcXVpcmUgaS5l LiBudW1iZXIgdG8gZmlsbCB0aGUgY2FjaGUgKw0KPiB0aGUgcmVxdWVzdCAqLw0KPiArCQkvKiBC YWNrZmlsbCB3b3VsZCBleGNlZWQgdGhlIGNhY2hlIGJvdW5jZSBidWZmZXIgbGltaXQ/ICovDQo+ ICsJCV9fcnRlX2Fzc3VtZShjYWNoZS0+c2l6ZSAvIDIgPD0gUlRFX01FTVBPT0xfQ0FDSEVfTUFY X1NJWkUNCj4gLyAyKTsNCj4gKwkJaWYgKHVubGlrZWx5KGNhY2hlLT5zaXplIC8gMiA8IElEUEZf UlhRX1JFQVJNX1RIUkVTSCkpIHsNCj4gKwkJCWlkcGZfc3BsaXRxX3JlYXJtX2NvbW1vbihyeF9i dWZxKTsNCj4gKwkJCXJldHVybjsNCj4gKwkJfQ0KPiArDQo+ICsJCS8qDQo+ICsJCSAqIEJhY2tm aWxsIHRoZSBjYWNoZSBmcm9tIHRoZSBiYWNrZW5kOw0KPiArCQkgKiBtb3ZlIHVwIHRoZSBob3Qg b2JqZWN0cyBpbiB0aGUgY2FjaGUgdG8gdGhlIHRvcCBoYWxmIG9mDQo+IHRoZSBjYWNoZSwNCj4g KwkJICogYW5kIGZldGNoIChzaXplIC8gMikgb2JqZWN0cyB0byB0aGUgYm90dG9tIG9mIHRoZSBj YWNoZS4NCj4gKwkJICovDQo+ICsJCV9fcnRlX2Fzc3VtZShjYWNoZS0+bGVuIDwgY2FjaGUtPnNp emUgLyAyKTsNCj4gKwkJcnRlX21lbWNweSgmY2FjaGUtPm9ianNbY2FjaGUtPnNpemUgLyAyXSwg JmNhY2hlLT5vYmpzWzBdLA0KPiArCQkJCXNpemVvZih2b2lkICopICogY2FjaGUtPmxlbik7DQo+ ICAJCWludCByZXQgPSBydGVfbWVtcG9vbF9vcHNfZGVxdWV1ZV9idWxrDQo+IC0JCQkJKHJ4X2J1 ZnEtPm1wLCAmY2FjaGUtPm9ianNbY2FjaGUtPmxlbl0sIHJlcSk7DQo+ICsJCQkJKHJ4X2J1ZnEt Pm1wLCAmY2FjaGUtPm9ianNbMF0sIGNhY2hlLT5zaXplIC8NCj4gMik7DQo+ICAJCWlmIChyZXQg PT0gMCkgew0KPiAtCQkJY2FjaGUtPmxlbiArPSByZXE7DQo+ICsJCQljYWNoZS0+bGVuICs9IGNh Y2hlLT5zaXplIC8gMjsNCj4gIAkJfSBlbHNlIHsNCj4gKwkJCS8qDQo+ICsJCQkgKiBObyBmdXJ0 aGVyIGFjdGlvbiBpcyByZXF1aXJlZCBmb3Igcm9sbCBiYWNrLCBhcw0KPiB0aGUgb2JqZWN0cyBt b3ZlZA0KPiArCQkJICogaW4gdGhlIGNhY2hlIHdlcmUgYWN0dWFsbHkgY29waWVkLCBhbmQgdGhl IGNhY2hlDQo+IHJlbWFpbnMgaW50YWN0Lg0KPiArCQkJICovDQo+ICAJCQlpZiAocnhfYnVmcS0+ cnhyZWFybV9uYiArIElEUEZfUlhRX1JFQVJNX1RIUkVTSCA+PQ0KPiAgCQkJICAgIHJ4X2J1ZnEt Pm5iX3J4X2Rlc2MpIHsNCj4gIAkJCQlfX20xMjhpIGRtYV9hZGRyMDsNCj4gZGlmZiAtLWdpdCBh L2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmMgYi9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5jDQo+ IGluZGV4IDMwNDJkOTRjMTQuLjgwNWI1MmNjNTggMTAwNjQ0DQo+IC0tLSBhL2xpYi9tZW1wb29s L3J0ZV9tZW1wb29sLmMNCj4gKysrIGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuYw0KPiBAQCAt NTIsMTEgKzUyLDYgQEAgc3RhdGljIHZvaWQNCj4gIG1lbXBvb2xfZXZlbnRfY2FsbGJhY2tfaW52 b2tlKGVudW0gcnRlX21lbXBvb2xfZXZlbnQgZXZlbnQsDQo+ICAJCQkgICAgICBzdHJ1Y3QgcnRl X21lbXBvb2wgKm1wKTsNCj4gDQo+IC0vKiBOb3RlOiBhdm9pZCB1c2luZyBmbG9hdGluZyBwb2lu dCBzaW5jZSB0aGF0IGNvbXBpbGVyDQo+IC0gKiBtYXkgbm90IHRoaW5rIHRoYXQgaXMgY29uc3Rh bnQuDQo+IC0gKi8NCj4gLSNkZWZpbmUgQ0FMQ19DQUNIRV9GTFVTSFRIUkVTSChjKSAoKChjKSAq IDMpIC8gMikNCj4gLQ0KPiAgI2lmIGRlZmluZWQoUlRFX0FSQ0hfWDg2KQ0KPiAgLyoNCj4gICAq IHJldHVybiB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IgYmV0d2VlbiBhIGFuZCBiIChmYXN0 IGFsZ29yaXRobSkNCj4gQEAgLTc1NywxMyArNzUyLDggQEAgcnRlX21lbXBvb2xfZnJlZShzdHJ1 Y3QgcnRlX21lbXBvb2wgKm1wKQ0KPiAgc3RhdGljIHZvaWQNCj4gIG1lbXBvb2xfY2FjaGVfaW5p dChzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLCB1aW50MzJfdCBzaXplKQ0KPiAgew0K PiAtCS8qIENoZWNrIHRoYXQgY2FjaGUgaGF2ZSBlbm91Z2ggc3BhY2UgZm9yIGZsdXNoIHRocmVz aG9sZCAqLw0KPiAtDQo+IAlSVEVfQlVJTERfQlVHX09OKENBTENfQ0FDSEVfRkxVU0hUSFJFU0go UlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWg0KPiBFKSA+DQo+IC0JCQkgUlRFX1NJWkVPRl9GSUVM RChzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUsIG9ianMpIC8NCj4gLQkJCSBSVEVfU0laRU9GX0ZJ RUxEKHN0cnVjdCBydGVfbWVtcG9vbF9jYWNoZSwNCj4gb2Jqc1swXSkpOw0KPiAtDQo+ICAJY2Fj aGUtPnNpemUgPSBzaXplOw0KPiAtCWNhY2hlLT5mbHVzaHRocmVzaCA9IENBTENfQ0FDSEVfRkxV U0hUSFJFU0goc2l6ZSk7DQo+ICsJY2FjaGUtPmZsdXNodGhyZXNoID0gc2l6ZTsgLyogT2Jzb2xl dGU7IGZvciBBUEkvQUJJIGNvbXBhdGliaWxpdHkNCj4gcHVycG9zZXMgb25seSAqLw0KPiAgCWNh Y2hlLT5sZW4gPSAwOw0KPiAgfQ0KPiANCj4gQEAgLTg1MCw3ICs4NDAsNyBAQCBydGVfbWVtcG9v bF9jcmVhdGVfZW1wdHkoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQNCj4gbiwgdW5zaWduZWQg ZWx0X3NpemUsDQo+IA0KPiAgCS8qIGFza2VkIGNhY2hlIHRvbyBiaWcgKi8NCj4gIAlpZiAoY2Fj aGVfc2l6ZSA+IFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFIHx8DQo+IC0JICAgIENBTENfQ0FD SEVfRkxVU0hUSFJFU0goY2FjaGVfc2l6ZSkgPiBuKSB7DQo+ICsJICAgIGNhY2hlX3NpemUgPiBu KSB7DQo+ICAJCXJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gIAkJcmV0dXJuIE5VTEw7DQo+ICAJfQ0K PiBkaWZmIC0tZ2l0IGEvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaCBiL2xpYi9tZW1wb29sL3J0 ZV9tZW1wb29sLmgNCj4gaW5kZXggMmU1NGZjNDQ2Ni4uNDMyYzQzYWIxNSAxMDA2NDQNCj4gLS0t IGEvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaA0KPiArKysgYi9saWIvbWVtcG9vbC9ydGVfbWVt cG9vbC5oDQo+IEBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBfX3J0ZV9jYWNoZV9hbGlnbmVkIHJ0 ZV9tZW1wb29sX2RlYnVnX3N0YXRzIHsNCj4gICAqLw0KPiAgc3RydWN0IF9fcnRlX2NhY2hlX2Fs aWduZWQgcnRlX21lbXBvb2xfY2FjaGUgew0KPiAgCXVpbnQzMl90IHNpemU7CSAgICAgIC8qKjwg U2l6ZSBvZiB0aGUgY2FjaGUgKi8NCj4gLQl1aW50MzJfdCBmbHVzaHRocmVzaDsgLyoqPCBUaHJl c2hvbGQgYmVmb3JlIHdlIGZsdXNoIGV4Y2Vzcw0KPiBlbGVtZW50cyAqLw0KPiArCXVpbnQzMl90 IGZsdXNodGhyZXNoOyAvKio8IE9ic29sZXRlOyBmb3IgQVBJL0FCSSBjb21wYXRpYmlsaXR5DQo+ IHB1cnBvc2VzIG9ubHkgKi8NCj4gIAl1aW50MzJfdCBsZW47CSAgICAgIC8qKjwgQ3VycmVudCBj YWNoZSBjb3VudCAqLw0KPiAgI2lmZGVmIFJURV9MSUJSVEVfTUVNUE9PTF9TVEFUUw0KPiAgCXVp bnQzMl90IHVudXNlZDsNCj4gQEAgLTEwNyw4ICsxMDcsMTAgQEAgc3RydWN0IF9fcnRlX2NhY2hl X2FsaWduZWQgcnRlX21lbXBvb2xfY2FjaGUgew0KPiAgCS8qKg0KPiAgCSAqIENhY2hlIG9iamVj dHMNCj4gIAkgKg0KPiAtCSAqIENhY2hlIGlzIGFsbG9jYXRlZCB0byB0aGlzIHNpemUgdG8gYWxs b3cgaXQgdG8gb3ZlcmZsb3cgaW4NCj4gY2VydGFpbg0KPiAtCSAqIGNhc2VzIHRvIGF2b2lkIG5l ZWRsZXNzIGVtcHR5aW5nIG9mIGNhY2hlLg0KPiArCSAqIE5vdGU6DQo+ICsJICogQ2FjaGUgaXMg YWxsb2NhdGVkIGF0IGRvdWJsZSBzaXplIGZvciBBUEkvQUJJIGNvbXBhdGliaWxpdHkNCj4gcHVy cG9zZXMgb25seS4NCj4gKwkgKiBXaGVuIHJlZHVjaW5nIGl0cyBzaXplIGF0IGFuIEFQSS9BQkkg YnJlYWtpbmcgcmVsZWFzZSwNCj4gKwkgKiByZW1lbWJlciB0byBhZGQgYSBjYWNoZSBndWFyZCBh ZnRlciBpdC4NCj4gIAkgKi8NCj4gIAlhbGlnbmFzKFJURV9DQUNIRV9MSU5FX1NJWkUpIHZvaWQN Cj4gKm9ianNbUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUgKiAyXTsNCj4gIH07DQo+IEBAIC0x MDQ2LDEyICsxMDQ4LDE3IEBAIHJ0ZV9tZW1wb29sX2ZyZWUoc3RydWN0IHJ0ZV9tZW1wb29sICpt cCk7DQo+ICAgKiBAcGFyYW0gY2FjaGVfc2l6ZQ0KPiAgICogICBJZiBjYWNoZV9zaXplIGlzIG5v bi16ZXJvLCB0aGUgcnRlX21lbXBvb2wgbGlicmFyeSB3aWxsIHRyeSB0bw0KPiAgICogICBsaW1p dCB0aGUgYWNjZXNzZXMgdG8gdGhlIGNvbW1vbiBsb2NrbGVzcyBwb29sLCBieSBtYWludGFpbmlu ZyBhDQo+IC0gKiAgIHBlci1sY29yZSBvYmplY3QgY2FjaGUuIFRoaXMgYXJndW1lbnQgbXVzdCBi ZSBsb3dlciBvciBlcXVhbCB0bw0KPiAtICogICBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSBh bmQgbiAvIDEuNS4NCj4gKyAqICAgcGVyLWxjb3JlIG9iamVjdCBjYWNoZS4gVGhpcyBhcmd1bWVu dCBtdXN0IGJlIGFuIGV2ZW4gbnVtYmVyLA0KPiArICogICBsb3dlciBvciBlcXVhbCB0byBSVEVf TUVNUE9PTF9DQUNIRV9NQVhfU0laRSBhbmQgbi4NCj4gICAqICAgVGhlIGFjY2VzcyB0byB0aGUg cGVyLWxjb3JlIHRhYmxlIGlzIG9mIGNvdXJzZQ0KPiAgICogICBmYXN0ZXIgdGhhbiB0aGUgbXVs dGktcHJvZHVjZXIvY29uc3VtZXIgcG9vbC4gVGhlIGNhY2hlIGNhbiBiZQ0KPiAgICogICBkaXNh YmxlZCBpZiB0aGUgY2FjaGVfc2l6ZSBhcmd1bWVudCBpcyBzZXQgdG8gMDsgaXQgY2FuIGJlIHVz ZWZ1bA0KPiB0bw0KPiAgICogICBhdm9pZCBsb3Npbmcgb2JqZWN0cyBpbiBjYWNoZS4NCj4gKyAq ICAgTm90ZToNCj4gKyAqICAgTWVtcG9vbCBwdXQvZ2V0IHJlcXVlc3RzIG9mIG1vcmUgdGhhbiBj YWNoZV9zaXplIC8gMiBvYmplY3RzIG1heQ0KPiBiZQ0KPiArICogICBwYXJ0aWFsbHkgb3IgZnVs bHkgc2VydmVkIGRpcmVjdGx5IGJ5IHRoZSBtdWx0aS1wcm9kdWNlci9jb25zdW1lcg0KPiArICog ICBwb29sLCB0byBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgY29weWluZyB0aGUgb2JqZWN0cyB0d2lj ZSAoaW5zdGVhZA0KPiBvZg0KPiArICogICBvbmNlKSB3aGVuIHVzaW5nIHRoZSBjYWNoZSBhcyBh IGJvdW5jZSBidWZmZXIuDQo+ICAgKiBAcGFyYW0gcHJpdmF0ZV9kYXRhX3NpemUNCj4gICAqICAg VGhlIHNpemUgb2YgdGhlIHByaXZhdGUgZGF0YSBhcHBlbmRlZCBhZnRlciB0aGUgbWVtcG9vbA0K PiAgICogICBzdHJ1Y3R1cmUuIFRoaXMgaXMgdXNlZnVsIGZvciBzdG9yaW5nIHNvbWUgcHJpdmF0 ZSBkYXRhIGFmdGVyIHRoZQ0KPiBAQCAtMTM5MCwyNCArMTM5NywzMiBAQCBydGVfbWVtcG9vbF9k b19nZW5lcmljX3B1dChzdHJ1Y3QgcnRlX21lbXBvb2wNCj4gKm1wLCB2b2lkICogY29uc3QgKm9i al90YWJsZSwNCj4gIAlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgcHV0X2J1bGss IDEpOw0KPiAgCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBwdXRfb2Jqcywgbik7 DQo+IA0KPiAtCV9fcnRlX2Fzc3VtZShjYWNoZS0+Zmx1c2h0aHJlc2ggPD0gUlRFX01FTVBPT0xf Q0FDSEVfTUFYX1NJWkUgKg0KPiAyKTsNCj4gLQlfX3J0ZV9hc3N1bWUoY2FjaGUtPmxlbiA8PSBS VEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSAqIDIpOw0KPiAtCV9fcnRlX2Fzc3VtZShjYWNoZS0+ bGVuIDw9IGNhY2hlLT5mbHVzaHRocmVzaCk7DQo+IC0JaWYgKGxpa2VseShjYWNoZS0+bGVuICsg biA8PSBjYWNoZS0+Zmx1c2h0aHJlc2gpKSB7DQo+ICsJX19ydGVfYXNzdW1lKGNhY2hlLT5zaXpl IDw9IFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFKTsNCj4gKwlfX3J0ZV9hc3N1bWUoY2FjaGUt PnNpemUgLyAyIDw9IFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFIC8gMik7DQo+ICsJX19ydGVf YXNzdW1lKGNhY2hlLT5sZW4gPD0gUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUpOw0KPiArCV9f cnRlX2Fzc3VtZShjYWNoZS0+bGVuIDw9IGNhY2hlLT5zaXplKTsNCj4gKwlpZiAobGlrZWx5KGNh Y2hlLT5sZW4gKyBuIDw9IGNhY2hlLT5zaXplKSkgew0KPiAgCQkvKiBTdWZmaWNpZW50IHJvb20g aW4gdGhlIGNhY2hlIGZvciB0aGUgb2JqZWN0cy4gKi8NCj4gIAkJY2FjaGVfb2JqcyA9ICZjYWNo ZS0+b2Jqc1tjYWNoZS0+bGVuXTsNCj4gIAkJY2FjaGUtPmxlbiArPSBuOw0KPiAtCX0gZWxzZSBp ZiAobiA8PSBjYWNoZS0+Zmx1c2h0aHJlc2gpIHsNCj4gKwl9IGVsc2UgaWYgKG4gPD0gY2FjaGUt PnNpemUgLyAyKSB7DQo+ICAJCS8qDQo+IC0JCSAqIFRoZSBjYWNoZSBpcyBiaWcgZW5vdWdoIGZv ciB0aGUgb2JqZWN0cywgYnV0IC0gYXMNCj4gZGV0ZWN0ZWQgYnkNCj4gLQkJICogdGhlIGNvbXBh cmlzb24gYWJvdmUgLSBoYXMgaW5zdWZmaWNpZW50IHJvb20gZm9yIHRoZW0uDQo+IC0JCSAqIEZs dXNoIHRoZSBjYWNoZSB0byBtYWtlIHJvb20gZm9yIHRoZSBvYmplY3RzLg0KPiArCQkgKiBUaGUg bnVtYmVyIG9mIG9iamVjdHMgaXMgd2l0aGluIHRoZSBjYWNoZSBib3VuY2UgYnVmZmVyDQo+IGxp bWl0LA0KPiArCQkgKiBidXQgLSBhcyBkZXRlY3RlZCBieSB0aGUgY29tcGFyaXNvbiBhYm92ZSAt IHRoZSBjYWNoZQ0KPiBoYXMNCj4gKwkJICogaW5zdWZmaWNpZW50IHJvb20gZm9yIHRoZW0uDQo+ ICsJCSAqIEZsdXNoIHRoZSBjYWNoZSB0byB0aGUgYmFja2VuZCB0byBtYWtlIHJvb20gZm9yIHRo ZQ0KPiBvYmplY3RzOw0KPiArCQkgKiBmbHVzaCAoc2l6ZSAvIDIpIG9iamVjdHMgZnJvbSB0aGUg Ym90dG9tIG9mIHRoZSBjYWNoZSwNCj4gd2hlcmUNCj4gKwkJICogb2JqZWN0cyBhcmUgbGVzcyBo b3QsIGFuZCBtb3ZlIGRvd24gdGhlIHJlbWFpbmluZw0KPiBvYmplY3RzLCB3aGljaA0KPiArCQkg KiBhcmUgbW9yZSBob3QsIGZyb20gdGhlIHVwcGVyIGhhbGYgb2YgdGhlIGNhY2hlLg0KPiAgCQkg Ki8NCj4gLQkJY2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1swXTsNCj4gLQkJcnRlX21lbXBvb2xf b3BzX2VucXVldWVfYnVsayhtcCwgY2FjaGVfb2JqcywgY2FjaGUtPmxlbik7DQo+IC0JCWNhY2hl LT5sZW4gPSBuOw0KPiArCQlfX3J0ZV9hc3N1bWUoY2FjaGUtPmxlbiA+IGNhY2hlLT5zaXplIC8g Mik7DQo+ICsJCXJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1bGsobXAsICZjYWNoZS0+b2Jqc1sw XSwgY2FjaGUtDQo+ID5zaXplIC8gMik7DQo+ICsJCXJ0ZV9tZW1jcHkoJmNhY2hlLT5vYmpzWzBd LCAmY2FjaGUtPm9ianNbY2FjaGUtPnNpemUgLyAyXSwNCj4gKwkJCQlzaXplb2Yodm9pZCAqKSAq IChjYWNoZS0+bGVuIC0gY2FjaGUtPnNpemUgLw0KPiAyKSk7DQo+ICsJCWNhY2hlX29ianMgPSAm Y2FjaGUtPm9ianNbY2FjaGUtPmxlbiAtIGNhY2hlLT5zaXplIC8gMl07DQo+ICsJCWNhY2hlLT5s ZW4gPSBjYWNoZS0+bGVuIC0gY2FjaGUtPnNpemUgLyAyICsgbjsNCj4gIAl9IGVsc2Ugew0KPiAt CQkvKiBUaGUgcmVxdWVzdCBpdHNlbGYgaXMgdG9vIGJpZyBmb3IgdGhlIGNhY2hlLiAqLw0KPiAr CQkvKiBUaGUgcmVxdWVzdCBpdHNlbGYgaXMgdG9vIGJpZy4gKi8NCj4gIAkJZ290byBkcml2ZXJf ZW5xdWV1ZV9zdGF0c19pbmNyZW1lbnRlZDsNCj4gIAl9DQo+IA0KPiBAQCAtMTUyNCw3ICsxNTM5 LDcgQEAgcnRlX21lbXBvb2xfZG9fZ2VuZXJpY19nZXQoc3RydWN0IHJ0ZV9tZW1wb29sDQo+ICpt cCwgdm9pZCAqKm9ial90YWJsZSwNCj4gIAkvKiBUaGUgY2FjaGUgaXMgYSBzdGFjaywgc28gY29w eSB3aWxsIGJlIGluIHJldmVyc2Ugb3JkZXIuICovDQo+ICAJY2FjaGVfb2JqcyA9ICZjYWNoZS0+ b2Jqc1tjYWNoZS0+bGVuXTsNCj4gDQo+IC0JX19ydGVfYXNzdW1lKGNhY2hlLT5sZW4gPD0gUlRF X01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUgKiAyKTsNCj4gKwlfX3J0ZV9hc3N1bWUoY2FjaGUtPmxl biA8PSBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSk7DQo+ICAJaWYgKGxpa2VseShuIDw9IGNh Y2hlLT5sZW4pKSB7DQo+ICAJCS8qIFRoZSBlbnRpcmUgcmVxdWVzdCBjYW4gYmUgc2F0aXNmaWVk IGZyb20gdGhlIGNhY2hlLiAqLw0KPiAgCQlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNo ZSwgZ2V0X3N1Y2Nlc3NfYnVsaywgMSk7DQo+IEBAIC0xNTQ4LDEzICsxNTYzLDEzIEBAIHJ0ZV9t ZW1wb29sX2RvX2dlbmVyaWNfZ2V0KHN0cnVjdCBydGVfbWVtcG9vbA0KPiAqbXAsIHZvaWQgKipv YmpfdGFibGUsDQo+ICAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbGVuOyBpbmRleCsrKQ0KPiAg CQkqb2JqX3RhYmxlKysgPSAqLS1jYWNoZV9vYmpzOw0KPiANCj4gLQkvKiBEZXF1ZXVlIGJlbG93 IHdvdWxkIG92ZXJmbG93IG1lbSBhbGxvY2F0ZWQgZm9yIGNhY2hlPyAqLw0KPiAtCWlmICh1bmxp a2VseShyZW1haW5pbmcgPiBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSkpDQo+ICsJLyogRGVx dWV1ZSBiZWxvdyB3b3VsZCBleGNlZWQgdGhlIGNhY2hlIGJvdW5jZSBidWZmZXIgbGltaXQ/ICov DQo+ICsJX19ydGVfYXNzdW1lKGNhY2hlLT5zaXplIC8gMiA8PSBSVEVfTUVNUE9PTF9DQUNIRV9N QVhfU0laRSAvIDIpOw0KPiArCWlmICh1bmxpa2VseShyZW1haW5pbmcgPiBjYWNoZS0+c2l6ZSAv IDIpKQ0KPiAgCQlnb3RvIGRyaXZlcl9kZXF1ZXVlOw0KPiANCj4gLQkvKiBGaWxsIHRoZSBjYWNo ZSBmcm9tIHRoZSBiYWNrZW5kOyBmZXRjaCBzaXplICsgcmVtYWluaW5nDQo+IG9iamVjdHMuICov DQo+IC0JcmV0ID0gcnRlX21lbXBvb2xfb3BzX2RlcXVldWVfYnVsayhtcCwgY2FjaGUtPm9ianMs DQo+IC0JCQljYWNoZS0+c2l6ZSArIHJlbWFpbmluZyk7DQo+ICsJLyogRmlsbCB0aGUgY2FjaGUg ZnJvbSB0aGUgYmFja2VuZDsgZmV0Y2ggKHNpemUgLyAyKSBvYmplY3RzLiAqLw0KPiArCXJldCA9 IHJ0ZV9tZW1wb29sX29wc19kZXF1ZXVlX2J1bGsobXAsIGNhY2hlLT5vYmpzLCBjYWNoZS0+c2l6 ZSAvDQo+IDIpOw0KPiAgCWlmICh1bmxpa2VseShyZXQgPCAwKSkgew0KPiAgCQkvKg0KPiAgCQkg KiBXZSBhcmUgYnVmZmVyIGNvbnN0cmFpbmVkLCBhbmQgbm90IGFibGUgdG8gZmV0Y2ggYWxsDQo+ IHRoYXQuDQo+IEBAIC0xNTY4LDEwICsxNTgzLDExIEBAIHJ0ZV9tZW1wb29sX2RvX2dlbmVyaWNf Z2V0KHN0cnVjdCBydGVfbWVtcG9vbA0KPiAqbXAsIHZvaWQgKipvYmpfdGFibGUsDQo+ICAJUlRF X01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIGdldF9zdWNjZXNzX2J1bGssIDEpOw0KPiAg CVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBnZXRfc3VjY2Vzc19vYmpzLCBuKTsN Cj4gDQo+IC0JX19ydGVfYXNzdW1lKGNhY2hlLT5zaXplIDw9IFJURV9NRU1QT09MX0NBQ0hFX01B WF9TSVpFKTsNCj4gLQlfX3J0ZV9hc3N1bWUocmVtYWluaW5nIDw9IFJURV9NRU1QT09MX0NBQ0hF X01BWF9TSVpFKTsNCj4gLQljYWNoZV9vYmpzID0gJmNhY2hlLT5vYmpzW2NhY2hlLT5zaXplICsg cmVtYWluaW5nXTsNCj4gLQljYWNoZS0+bGVuID0gY2FjaGUtPnNpemU7DQo+ICsJX19ydGVfYXNz dW1lKGNhY2hlLT5zaXplIC8gMiA8PSBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSAvIDIpOw0K PiArCV9fcnRlX2Fzc3VtZShyZW1haW5pbmcgPD0gUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUg LyAyKTsNCj4gKwlfX3J0ZV9hc3N1bWUocmVtYWluaW5nIDw9IGNhY2hlLT5zaXplIC8gMik7DQo+ ICsJY2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1tjYWNoZS0+c2l6ZSAvIDJdOw0KPiArCWNhY2hl LT5sZW4gPSBjYWNoZS0+c2l6ZSAvIDIgLSByZW1haW5pbmc7DQo+ICAJZm9yIChpbmRleCA9IDA7 IGluZGV4IDwgcmVtYWluaW5nOyBpbmRleCsrKQ0KPiAgCQkqb2JqX3RhYmxlKysgPSAqLS1jYWNo ZV9vYmpzOw0KPiANCj4gLS0NCj4gMi40My4wDQoNCg==