From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 669B8160; Mon, 15 Oct 2018 05:03:05 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Oct 2018 20:03:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,383,1534834800"; d="scan'208";a="78759679" Received: from kmsmsx151.gar.corp.intel.com ([172.21.73.86]) by fmsmga008.fm.intel.com with ESMTP; 14 Oct 2018 20:03:02 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.13]) by KMSMSX151.gar.corp.intel.com ([169.254.10.74]) with mapi id 14.03.0319.002; Mon, 15 Oct 2018 11:03:01 +0800 From: "Zhao1, Wei" To: Ilya Maximets , "Zhang, Qi Z" , Laurent Hardy CC: "Lu, Wenzhuo" , "Ananyev, Konstantin" , "stable@dpdk.org" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] net/ixgbe: fix busy polling while fiber link update Thread-Index: AQHUSRgNQX2uzJKLekeq5MEAlIUV2aTrsTgAgAAVKwCALe+P8P//y6IAgAH3Y5D//5ePgIAEw23Q Date: Mon, 15 Oct 2018 03:03:01 +0000 Message-ID: References: <20180831123824eucas1p1cd2981c716c4764703e24c3eeb4d33c7~P_GOOSRuf0867908679eucas1p1K@eucas1p1.samsung.com> <039ED4275CED7440929022BC67E706115327FA5E@SHSMSX103.ccr.corp.intel.com> <20180910150708eucas1p220c16857c4277b311ddc000b9337d9cb~TEk8KngQJ1365413654eucas1p2a@eucas1p2.samsung.com> <039ED4275CED7440929022BC67E7061153284304@SHSMSX103.ccr.corp.intel.com> <20180912080338eucas1p1bfdacb30aa969cd607ccf99f64d6bf80~TmFveK2Dy2157121571eucas1p1U@eucas1p1.samsung.com> <20181011102428eucas1p2fe26b12282d2b456ddc2cb96ad7552f0~cht-bhDPv2507925079eucas1p2L@eucas1p2.samsung.com> <20181012101219eucas1p15ec4079f2144dca8faac241f7b8d7e86~c1MrB5N3j3123931239eucas1p16@eucas1p1.samsung.com> In-Reply-To: <20181012101219eucas1p15ec4079f2144dca8faac241f7b8d7e86~c1MrB5N3j3123931239eucas1p16@eucas1p1.samsung.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [172.30.20.205] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] net/ixgbe: fix busy polling while fiber link update 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, 15 Oct 2018 03:03:06 -0000 SGnvvIwgSWx5YSBNYXhpbWV0cw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZy b206IElseWEgTWF4aW1ldHMgW21haWx0bzppLm1heGltZXRzQHNhbXN1bmcuY29tXQ0KPiBTZW50 OiBGcmlkYXksIE9jdG9iZXIgMTIsIDIwMTggNjoxNSBQTQ0KPiBUbzogWmhhbzEsIFdlaSA8d2Vp LnpoYW8xQGludGVsLmNvbT47IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47DQo+ IExhdXJlbnQgSGFyZHkgPGxhdXJlbnQuaGFyZHlANndpbmQuY29tPg0KPiBDYzogTHUsIFdlbnpo dW8gPHdlbnpodW8ubHVAaW50ZWwuY29tPjsgQW5hbnlldiwgS29uc3RhbnRpbg0KPiA8a29uc3Rh bnRpbi5hbmFueWV2QGludGVsLmNvbT47IHN0YWJsZUBkcGRrLm9yZzsgZGV2QGRwZGsub3JnDQo+ IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSF0gbmV0L2l4Z2JlOiBmaXggYnVzeSBwb2xs aW5nIHdoaWxlIGZpYmVyIGxpbmsNCj4gdXBkYXRlDQo+IA0KPiBPbiAxMi4xMC4yMDE4IDEyOjE5 LCBaaGFvMSwgV2VpIHdyb3RlOg0KPiA+IEhp77yMDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogSWx5YSBNYXhpbWV0cyBbbWFpbHRvOmkubWF4aW1ldHNA c2Ftc3VuZy5jb21dDQo+ID4+IFNlbnQ6IFRodXJzZGF5LCBPY3RvYmVyIDExLCAyMDE4IDY6Mjcg UE0NCj4gPj4gVG86IFpoYW8xLCBXZWkgPHdlaS56aGFvMUBpbnRlbC5jb20+OyBaaGFuZywgUWkg Wg0KPiA+PiA8cWkuei56aGFuZ0BpbnRlbC5jb20+OyBMYXVyZW50IEhhcmR5IDxsYXVyZW50Lmhh cmR5QDZ3aW5kLmNvbT4NCj4gPj4gQ2M6IEx1LCBXZW56aHVvIDx3ZW56aHVvLmx1QGludGVsLmNv bT47IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPj4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5j b20+OyBzdGFibGVAZHBkay5vcmc7IGRldkBkcGRrLm9yZw0KPiA+PiBTdWJqZWN0OiBSZTogW2Rw ZGstZGV2XSBbUEFUQ0hdIG5ldC9peGdiZTogZml4IGJ1c3kgcG9sbGluZyB3aGlsZQ0KPiA+PiBm aWJlciBsaW5rIHVwZGF0ZQ0KPiA+Pg0KPiA+PiBPbiAxMS4xMC4yMDE4IDEyOjU2LCBaaGFvMSwg V2VpIHdyb3RlOg0KPiA+Pj4gSGksICBJbHlhIE1heGltZXRzIEFORCBsYXVyZW50LmhhcmR5DQo+ ID4+DQo+ID4+IEhpLCB0aGFua3MgZm9yIHNoYXJpbmcgeW91ciB0aG91Z2h0cy4NCj4gPj4gQ29t bWVudHMgaW5saW5lLg0KPiA+Pg0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9y Z10gT24gQmVoYWxmIE9mIElseWEgTWF4aW1ldHMNCj4gPj4+PiBTZW50OiBXZWRuZXNkYXksIFNl cHRlbWJlciAxMiwgMjAxOCA0OjA1IFBNDQo+ID4+Pj4gVG86IFpoYW5nLCBRaSBaIDxxaS56Lnpo YW5nQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+Pj4+IENjOiBMdSwgV2Vuemh1byA8d2Vu emh1by5sdUBpbnRlbC5jb20+OyBBbmFueWV2LCBLb25zdGFudGluDQo+ID4+Pj4gPGtvbnN0YW50 aW4uYW5hbnlldkBpbnRlbC5jb20+OyBMYXVyZW50IEhhcmR5DQo+ID4+Pj4gPGxhdXJlbnQuaGFy ZHlANndpbmQuY29tPjsgRGFpLCBXZWkgPHdlaS5kYWlAaW50ZWwuY29tPjsNCj4gPj4+PiBzdGFi bGVAZHBkay5vcmcNCj4gPj4+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIG5ldC9p eGdiZTogZml4IGJ1c3kgcG9sbGluZyB3aGlsZQ0KPiA+Pj4+IGZpYmVyIGxpbmsgdXBkYXRlDQo+ ID4+Pj4NCj4gPj4+PiBPbiAxMi4wOS4yMDE4IDA5OjQ5LCBaaGFuZywgUWkgWiB3cm90ZToNCj4g Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ Pj4+PiBGcm9tOiBJbHlhIE1heGltZXRzIFttYWlsdG86aS5tYXhpbWV0c0BzYW1zdW5nLmNvbV0N Cj4gPj4+Pj4+IFNlbnQ6IE1vbmRheSwgU2VwdGVtYmVyIDEwLCAyMDE4IDExOjA5IFBNDQo+ID4+ Pj4+PiBUbzogWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPjsgZGV2QGRwZGsub3Jn DQo+ID4+Pj4+PiBDYzogTHUsIFdlbnpodW8gPHdlbnpodW8ubHVAaW50ZWwuY29tPjsgQW5hbnll diwgS29uc3RhbnRpbg0KPiA+Pj4+Pj4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+OyBM YXVyZW50IEhhcmR5DQo+ID4+Pj4+PiA8bGF1cmVudC5oYXJkeUA2d2luZC5jb20+OyBEYWksIFdl aSA8d2VpLmRhaUBpbnRlbC5jb20+Ow0KPiA+Pj4+Pj4gc3RhYmxlQGRwZGsub3JnDQo+ID4+Pj4+ PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0hdIG5ldC9peGdiZTogZml4IGJ1c3kgcG9s bGluZyB3aGlsZQ0KPiA+Pj4+Pj4gZmliZXIgbGluayB1cGRhdGUNCj4gPj4+Pj4+DQo+ID4+Pj4+ PiBPbiAwNC4wOS4yMDE4IDA5OjA4LCBaaGFuZywgUWkgWiB3cm90ZToNCj4gPj4+Pj4+PiBIaSBJ bHlhOg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4+Pj4+Pj4+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhh bGYgT2YgSWx5YQ0KPiA+Pj4+Pj4+PiBNYXhpbWV0cw0KPiA+Pj4+Pj4+PiBTZW50OiBGcmlkYXks IEF1Z3VzdCAzMSwgMjAxOCA4OjQwIFBNDQo+ID4+Pj4+Pj4+IFRvOiBkZXZAZHBkay5vcmcNCj4g Pj4+Pj4+Pj4gQ2M6IEx1LCBXZW56aHVvIDx3ZW56aHVvLmx1QGludGVsLmNvbT47IEFuYW55ZXYs IEtvbnN0YW50aW4NCj4gPj4+Pj4+Pj4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+OyBM YXVyZW50IEhhcmR5DQo+ID4+Pj4+Pj4+IDxsYXVyZW50LmhhcmR5QDZ3aW5kLmNvbT47IERhaSwg V2VpIDx3ZWkuZGFpQGludGVsLmNvbT47IElseWENCj4gPj4+Pj4+Pj4gTWF4aW1ldHMgPGkubWF4 aW1ldHNAc2Ftc3VuZy5jb20+OyBzdGFibGVAZHBkay5vcmcNCj4gPj4+Pj4+Pj4gU3ViamVjdDog W2RwZGstZGV2XSBbUEFUQ0hdIG5ldC9peGdiZTogZml4IGJ1c3kgcG9sbGluZyB3aGlsZQ0KPiA+ Pj4+Pj4+PiBmaWJlciBsaW5rIHVwZGF0ZQ0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBJZiB0aGUg bXVsdGlzcGVlZCBmaWJlciBsaW5rIGlzIGluIERPV04gc3RhdGUsIGl4Z2JlX3NldHVwX2xpbmsN Cj4gPj4+Pj4+Pj4gY291bGQgdGFrZSBhcm91bmQgYSBzZWNvbmQgb2YgYnVzeSBwb2xsaW5nLiBU aGlzIGlzIGhpZ2hseQ0KPiA+Pj4+Pj4+PiBpbmNvbnZlbmllbnQgZm9yIHRoZSBjYXNlIHdoZXJl IHNpbmdsZSB0aHJlYWQgcGVyaW9kaWNhbGx5DQo+ID4+Pj4+Pj4+IGNoZWNrcyB0aGUNCj4gPj4+ PiBsaW5rIHN0YXR1c2VzLg0KPiA+Pj4+Pj4+PiBGb3IgZXhhbXBsZSwgT1ZTIG1haW4gdGhyZWFk IHBlcmlvZGljYWxseSB1cGRhdGVzIHRoZSBsaW5rDQo+ID4+Pj4+Pj4+IHN0YXR1c2VzIGFuZCBo YW5ncyBmb3IgYSByZWFsbHkgbG9uZyB0aW1lIGJ1c3kgd2FpdGluZyBvbg0KPiA+Pj4+Pj4+PiBp eGdiZV9zZXR1cF9saW5rKCkgZm9yIGEgRE9XTiBmaWJlciBwb3J0cy4gRm9yIGNhc2Ugd2l0aCAz IGRvd24NCj4gPj4+Pj4+Pj4gcG9ydHMgaXQgaGFuZ3MgZm9yIGEgMyBzZWNvbmRzIGFuZCB1bmFi bGUgdG8gZG8gYW55dGhpbmcNCj4gPj4+Pj4+Pj4gaW5jbHVkaW5nDQo+ID4+IHBhY2tldCBwcm9j ZXNzaW5nLg0KPiA+Pj4+Pj4+PiBGaXggdGhhdCBieSBzaGlmdGluZyB0aGF0IHdvcmthcm91bmQg dG8gYSBzZXBhcmF0ZSB0aHJlYWQgYnkNCj4gPj4+Pj4+Pj4gYWxhcm0gaGFuZGxlciB0aGF0IHdp bGwgdHJ5IHRvIHNldCB1cCBsaW5rIGlmIGl0IGlzIERPV04uDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+ PiBEb2VzIHRoYXQgbWVhbiB3ZSB3aWxsIGJsb2NrIHRoZSBpbnRlcnJ1cHQgdGhyZWFkIGZvciAz IHNlY29uZHM/DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gVGhyZWUgdGltZXMgZm9yIG9uZSBzZWNvbmQu IE90aGVyIHdvcmsgY291bGQgYmUgc2NoZWR1bGVkDQo+IGJldHdlZW4uDQo+ID4+Pj4+PiBJTUhP LCBpdCdzIG11Y2ggYmV0dGVyIHRoYW4gYmxvY2tpbmcgdXN1YWwgY2FsbGVyIGZvciAzIHNlY29u ZHMuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IEFsc28sIGNhbiB3ZSBndWFyYW50ZWUgdGhlcmUgd2ls bCBub3QgYmUgYW55IHJhY2UgY29uZGl0aW9uIGlmDQo+ID4+Pj4+Pj4gd2UgY2FsbA0KPiA+Pj4+ Pj4gaXhnYmVfc2V0dXBfbGluayBhdCBhbm90aGVyIHRocmVhZCwgdGhlIGJhc2UgY29kZSBBUEkg aXMgbm90DQo+ID4+Pj4+PiBhc3N1bWVkIHRvIGJlIHRocmVhZC1zYWZlIGFzIEkga25vdy4NCj4g Pj4+Pj4+DQo+ID4+Pj4+PiBUaGUgb25seSB1c2VyIG9mICdpeGdiZV9zZXR1cF9saW5rJyBpcyAn aXhnYmVfZGV2X3N0YXJ0JywgYnV0IGl0DQo+ID4+Pj4+PiBjb3VsZCBiZSBjYWxsZWQgb25seSBp ZiBkZXZpY2Ugc3RvcHBlZC4gJ2l4Z2JlX2Rldl9zdG9wJyBjYW5jZWxzDQo+ID4+Pj4+PiB0aGUN Cj4gPj4gYWxhcm0uDQo+ID4+Pj4+PiBSYWNlIHdpdGggJ2xpbmtfdXBkYXRlJyBhdm9pZGVkIGJ5 DQo+ICdJWEdCRV9GTEFHX05FRURfTElOS19DT05GSUcnDQo+ID4+Pj4gZmxhZy4NCj4gPj4+Pj4N Cj4gPj4+Pj4gSSBndWVzcywgaXQnIG5vdCBvbmx5IGFib3V0IHdoZW4gaXhnYl9zZXR1cF9saW5r IHJhY2Ugd2l0aCBpdHNlbGYsDQo+ID4+Pj4+IGJ1dCBhbHNvDQo+ID4+Pj4gd2hlbiBpdCByYWNl IHdpdGggb3RoZXIgQVBJcy4NCj4gPj4+Pj4gQWxzbyB0aGUgY29uY2VybiBpcywgZXZlbiBpbiBj dXJyZW50IHZlcnNpb24sIHdlIGNhbiBwcm92ZSB0aGVyZQ0KPiA+Pj4+PiBpcyBubyBpc3N1ZSwN Cj4gPj4+PiBob3cgY2FuIHdlIGd1YXJhbnRlZSB3ZSBhcmUgc2FmZSBmb3IgZnV0dXJlIGJhc2Ug Y29kZSB1cGRhdGU/IEl0J3MNCj4gPj4+PiBub3QgZGVzaWduZWQgYXMgdGhyZWFkLXNhZmUuDQo+ ID4+Pj4+IEZvciBteSBvcHRpb24sIHRoZSBjaGFuZ2UgaXMgcmlza3kuDQo+ID4+Pj4NCj4gPj4+ PiBJbiBjdXJyZW50IGltcGxlbWVudGF0aW9uIGludGVycnVwdCBoYW5kbGVyIGFscmVhZHkgY2Fs bHMgdGhlDQo+ID4+Pj4gJ2l4Z2JlX2Rldl9saW5rX3VwZGF0ZScgd2hpY2ggc3Vic2VxdWVudGx5 IGNhbGxzICdpeGdiZV9zZXR1cF9saW5rJw0KPiA+Pj4+IGluIG91ciBjYXNlIGlmIExTQyBpbnRl cnJ1cHRzIGVuYWJsZWQuIFNvLCBteSBjaGFuZ2UgbWFrZXMgdGhlDQo+ID4+Pj4gZHJpdmVyIGV2 ZW4gc2FmZXIgYnkgbW92aW5nICdpeGdiZV9zZXR1cF9saW5rJyB0byB0aGUgc2FtZSBpbnRlcnJ1 cHQNCj4gdGhyZWFkLg0KPiA+Pj4+IE90aGVyd2lzZSB0d28gdGhyZWFkcyAoaW50ZXJydXB0cyBo YW5kbGVyIGFuZCB0aGUgbGluayBzdGF0dXMNCj4gPj4+PiBjaGVja2luZw0KPiA+Pj4+IHRocmVh ZCkgY291bGQgY2FsbCAnaXhnYmVfc2V0dXBfbGluaycgc2ltdWx0YW5lb3VzbHkuDQo+ID4+Pj4N Cj4gPj4+Pj4NCj4gPj4+Pj4gQnR3LCBzaW5jZSBpeGdiZSBzdXBwb3J0IExTQywgaXQgaXMgbm90 IG5lY2Vzc2FyeSBmb3IgInNpbmdsZQ0KPiA+Pj4+PiB0aHJlYWQNCj4gPj4+PiBwZXJpb2RpY2Fs bHkgY2hlY2tzIHRoZSBsaW5rIHN0YXR1c2VzIiwgcmlnaHQ/DQo+ID4+Pj4NCj4gPj4+PiBJbiBj dXJyZW50IGltcGxlbWVudGF0aW9uIGl0IHdpbGwgdGFrZSBhdCBsZWFzdCA1IHNlY29uZHMgKDQg KyAxKQ0KPiA+Pj4+IGZvciB0aGUgaW50ZXJydXB0IGhhbmRsZXIgdG8gZGV0ZWN0IERPV04gbGlu ayBzdGF0ZSBmb3IgaXhnYmUNCj4gPj4+PiBtdWx0aXNwZWVkIGZpYmVyLiBUaGlzIGlzIHRvbyBt dWNoIGZvciBtYW55IHJlYWwgd29ybGQgY2FzZXMuDQo+ID4+Pg0KPiA+Pj4gSSBoYXZlIHJldmll d2VkICB0aGlzIHBhdGNoLCBub3cgSSBhZ3JlZSB3aXRoIHlvdSBvZiB0aGUgcG9pbnQgdGhhdA0K PiA+Pj4gd2hlbiBwb3J0IGlzIGRvd24sICIgbWFpbiB0aHJlYWQgcGVyaW9kaWNhbGx5IHVwZGF0 ZXMgdGhlIGxpbmsNCj4gPj4+IHN0YXR1c2VzIGFuZA0KPiA+PiBoYW5ncyBmb3IgYSByZWFsbHkg bG9uZyB0aW1lIGJ1c3kgd2FpdGluZyBvbiBpeGdiZV9zZXR1cF9saW5rKCkgZm9yIGENCj4gPj4g RE9XTiBmaWJlciBwb3J0cyAiLg0KPiA+Pj4gVGhpcyBpcyBpbnRyb2R1Y2VkIGJ5IGEgcGF0Y2gg aW4gdGhlIGZvbGxvd2luZzoNCj4gPj4+IFNIQS0xOiBjMTJkMjJmNjViMTMyYzU2ZGI3YjRmZGJm ZDVkZGNlMjdkMWU5NTcyDQo+ID4+PiAqIG5ldC9peGdiZTogZW5zdXJlIGxpbmsgc3RhdHVzIGlz IHVwZGF0ZWQNCj4gPj4+DQo+ID4+PiBCZWNhdXNlIGluIHRoaXMgcGF0Y2gsIGl4Z2JlX3NldHVw X2xpbmsoKSBpcyBjYWxsZWQgd2l0aCBpbnB1dA0KPiA+Pj4gcGFyYW1ldGVyDQo+ID4+IGF1dG9u ZWdfd2FpdF90b19jb21wbGV0ZT0xLCB0aGlzIHdpbGwgY2F1c2UgbG9vcCBjaGVjayBhbmQgc2xl ZXAgZGVsYXkuDQo+ID4+PiBBdCBsZWFzdCA4MjU5OSBzZWVtcyBoYXMgdGhpcyBkZWxheS4oQlRX LCB3aGl2aCB0eXBlIG9mIE5JQyBhcmUgeW91DQo+ID4+PiB1c2U/IFg1NTAgb3IgODI1OTkpDQo+ ID4+DQo+ID4+IEkgaGF2ZSA4MjU5OS4NCj4gPj4NCj4gPj4+IFlvdXIgc29sdXRpb24gaXMgYWRk IGEgZWFsX2FsYXJtX3NldCBmb3IgaXhnYmVfc2V0dXBfbGluayBpbiB0aGUNCj4gPj4+IHRocmVh ZCBvZg0KPiA+PiBQTUQgZHJpdmVyLCBhbmQgZG8gdGhlIHNldCB1cCB3b3JrIGluIHRoYXQgdGhy ZWFkLCBpcyB0aGF0IHJpZ2h0Pw0KPiA+Pj4gQW5kIG1haW4gdGhyZWFkIGF2b2lkIGhhbmcgYnkg dGhlIGZsYWcgb2YNCj4gPj4gSVhHQkVfRkxBR19ORUVEX0xJTktfQ09ORklHLg0KPiA+Pj4gSSB0 aGluayB0aGlzIGlzIGEgZ29vZCBpZGVhIGZvciB0aGlzIHByb2JsZW0sIGJ1dCBpdCBtYXkgY2F1 c2UNCj4gPj4+IHByb2JsZW0gZm9yIG90aGVyIGxlZ2FjeSB1c2VyIG9mIGl4Z2JlIHBtZCwgYmVj YXVzZSB0aGVpciBsZWdhY3kNCj4gPj4+IGNvZGUsIHdoaWNoIHVzZQ0KPiA+PiBtYWluIHRocmVh ZCAgdG8gY2hlY2sgbGluayBzdGF0ZSBhbmQgc2V0dXBfbGluayB3aGVuIHBvcnQgaXMgZG93biwN Cj4gPj4gYW5kIHRoZXkgYXJlIG5vdCBhd2FyZSBvZiBpdCBpcyBkb25lIGJ5IG90aGVyIHRocmVh ZCBpZiBhZGQgeW91ciBwYXRjaC4NCj4gPj4NCj4gPj4gV2hhdCBhcmUgdGhlc2UgYXBwbGljYXRp b25zPyBJIHNlZSBubyBwdWJsaWMgQVBJIGZvciBzZXR1cF9saW5rIGZ1bmN0aW9uLg0KPiA+PiBJ dCdzIGludGVybmFsIHRvIGRyaXZlciBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGV4dGVybmFsbHku DQo+ID4+IEFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQo+ID4NCj4gPiBydGVfZXRoX2xpbmtfZ2V0 KCkgLCAgaXQgd2lsbCBhbHNvIGNhbGwgdGhlIGZ1bmN0aW9uIG9mIGl4Z2JlX3NldHVwX2xpbmso KS4NCj4gPg0KPiANCj4gcnRlX2V0aF9saW5rX2dldCgpIGRvZXMgbm90IGNhbGwgaXhnYmVfc2V0 dXBfbGluaygpLg0KPiBJdCBvbmx5IGNhbGxzIGRldl9vcHMtPmxpbmtfdXBkYXRlKCkuDQoNCk5v LCAgZGV2X29wcy0+bGlua191cGRhdGUgY2FsbCBmdW5jdGlvbiBpeGdiZV9kZXZfbGlua191cGRh dGUoKQ0KLT4gaXhnYmVfZGV2X2xpbmtfdXBkYXRlX3NoYXJlKCkgLT4gaXhnYmVfc2V0dXBfbGlu aygpDQoNCg0KDQo+IA0KPiA+DQo+ID4+DQo+ID4+Pg0KPiA+Pj4gQW5kIGlzIHRoYXQgb2sgaWYg d2UgY2hhbmdlIGNvZGUgaW4gaXhnYmVfZGV2X2xpbmtfdXBkYXRlX3NoYXJlKCkgdG8NCj4gPj4+ DQo+ID4+PiBpeGdiZV9kZXZfbGlua191cGRhdGVfc2hhcmUoKQ0KPiA+Pj4gew0KPiA+Pj4NCj4g Pj4+IAkvKiBjaGVjayBpZiBpdCBuZWVkcyB0byB3YWl0IHRvIGNvbXBsZXRlLCBpZiBsc2MgaW50 ZXJydXB0IGlzIGVuYWJsZWQgKi8NCj4gPj4+IAlpZiAod2FpdF90b19jb21wbGV0ZSA9PSAwIHx8 IGRldi0+ZGF0YS0+ZGV2X2NvbmYuaW50cl9jb25mLmxzYyAhPSAwKQ0KPiA+Pj4gCQl3YWl0ID0g MDsNCj4gPj4+DQo+ID4+PiAJaWYgKChpbnRyLT5mbGFncyAmIElYR0JFX0ZMQUdfTkVFRF9MSU5L X0NPTkZJRykgJiYNCj4gPj4+IAkJaXhnYmVfZ2V0X21lZGlhX3R5cGUoaHcpID09IGl4Z2JlX21l ZGlhX3R5cGVfZmliZXIpIHsNCj4gPj4+IAkJc3BlZWQgPSBody0+cGh5LmF1dG9uZWdfYWR2ZXJ0 aXNlZDsNCj4gPj4+IAkJaWYgKCFzcGVlZCkNCj4gPj4+IAkJCWl4Z2JlX2dldF9saW5rX2NhcGFi aWxpdGllcyhodywgJnNwZWVkLCAmYXV0b25lZyk7DQo+ID4+PiAJCWl4Z2JlX3NldHVwX2xpbmso aHcsIHNwZWVkLCB3YWl0KTsNCj4gPj4+IAl9DQo+ID4+PiB9DQo+ID4+Pg0KPiA+Pj4gVGhlbiwg eW91ciBhcHBsaWNhdGlvbiBjYW4gY2FsbCBydGVfZXRoX2xpbmtfZ2V0X25vd2FpdCAoKSB0byBt YWtlDQo+ID4+PiB3YWl0X3RvX2NvbXBsZXRlPTAgd2hlbiBkb2luZyBwZXJpb2RpYyBsaW5rIHN0 YXRlIGNoZWNrLCBXaGljaCB3aWxsDQo+ID4+PiBub3QNCj4gPj4gY2F1c2UgIGxvb3AgY2hlY2sg YW5kIHNsZWVwIGRlbGF5LiBMZWdhY3kgY29kZSBvZiBvdGhlciB1c2VyIGNhbGwNCj4gPj4gcnRl X2V0aF9saW5rX2dldCgpICB3aWxsIG5vdCBiZSBhZmZlY3RlZCBhbHNvLg0KPiA+Pj4gQnV0LCBJ IGFtIE5PVCBjb25maWRlbnQgLHdoZXRoZXIgdGhpcyB3aWxsIGludHJvZHVjZSBuZXcgcHJvYmxl bQ0KPiA+Pj4gd2hlbg0KPiA+PiBzZXQgdXAgbGluayB3aXRob3V0IHdhaXQhDQo+ID4+PiBTbywg dGhpcyBpcyBqdXN0IGEgZGlzY3Vzc2lvbiB0b3BpYy4NCj4gPj4NCj4gPj4gVW5mb3J0dW5hdGVs eSB0aGlzIHdpbGwgbm90IGhlbHAuIFRha2UgYSBsb29rIHRvIHRoZSBmdW5jdGlvbg0KPiA+PiAn aXhnYmVfc2V0dXBfbWFjX2xpbmtfbXVsdGlzcGVlZF9maWJlcigpJywgd2hpY2ggaXMgdGhlIG1h aW4NCj4gPj4gcHJvYmxlbWF0aWMgZnVuY3Rpb24gaGVyZS4gJ3dhaXRfdG9fY29tcGxldGUnIGhl cmUgdXNlZCBvbmx5IGFzDQo+ID4+IGFyZ3VtZW50IGZvciBpeGdiZV9zZXR1cF9tYWNfbGluaygp LCBhbmQgdGhlIGJ1c3kgd2FpdGluZyBsb29wcyBhcmUNCj4gb3V0c2lkZSBvZiBpdC4NCj4gPj4g UmVnYXJkbGVzcyBvZiB0aGUgJ3dhaXRfdG9fY29tcGxldGUnIHZhbHVlLCB0aGlzIGZ1bmN0aW9u IHdpbGwgYnVzeQ0KPiA+PiBwb2xsIHRoZSBsaW5rIGZvciAxMDQwIG1zIHRyeWluZyB0byBzZXR1 cCAxMEdCIHNwZWVkIGFuZCAxNDBtcyBtb3JlDQo+ID4+IHRyeWluZyB0byBzZXR1cCAxR0Igc3Bl ZWQuIEFmdGVyIHRoYXQsIGl0IHdpbGwgY2FsbCBpdHNlbGYNCj4gPj4gcmVjdXJzaXZlbHkgYW5k IHdhaXQgYWdhaW4uLi4gTG9va3MgbGlrZSBJIG1pc2NhbGN1bGF0ZWQgbGFzdCB0aW1lLg0KPiA+ PiBSaWdodCBub3cgaXQnbGwgYmUgbW9yZSB0aGFuIDIgc2Vjb25kcyBmb3IgZWFjaCBkb3duIHBv cnQgc2luY2UgZm9sbG93aW5nDQo+IHBhdGNoIG1lcmdlZDoNCj4gPj4gOGZjMWYzMmZhNjE1ICgi bmV0L2l4Z2JlOiB3YWl0IGxvbmdlciBmb3IgbGluayBhZnRlciBmaWJlciBNQUMgc2V0dXAiKS4N Cj4gPg0KPiA+IFllcywgeW91IGFyZSByaWdodCwgbGluayBzdGF0ZSBjaGVjayBsb29wIGluIGZ1 bmN0aW9uDQo+ID4gaXhnYmVfc2V0dXBfbWFjX2xpbmtfbXVsdGlzcGVlZF9maWJlcigpIGFyZSBu b3QgYmxvY2tlZCBieSBib29sDQo+IGF1dG9uZWdfd2FpdF90b19jb21wbGV0ZSwgSXQgd2lsbCBj YXVzZSBhYm91dCAxcyB3YWl0IHdoZW4gcG9ydCBpcyBkb3duLg0KPiA+IEFuZCBhbHNvLCBjYW4g d2UgdXBkYXRlIGNvZGUgaW4gZnVuY3Rpb24NCj4gaXhnYmVfc2V0dXBfbWFjX2xpbmtfbXVsdGlz cGVlZF9maWJlcigpIHRvICBibG9jayBsaW5rIHN0YXRlIGNoZWNrIGxvb3ANCj4gdXNpbmcgYXV0 b25lZ193YWl0X3RvX2NvbXBsZXRlPw0KPiA+IEkgYW0gbm90IHN1cmUuIEJlY2F1c2UgdGhlcmUg aXMgYSBjb21tZW50IGZvciB0aGlzIGxvb3AgY2hlY2s6DQo+ID4gCQkvKg0KPiA+IAkJICogV2Fp dCBmb3IgdGhlIGNvbnRyb2xsZXIgdG8gYWNxdWlyZSBsaW5rLiAgUGVyIElFRUUgODAyLjNhcCwN Cj4gPiAJCSAqIFNlY3Rpb24gNzMuMTAuMiwgd2UgbWF5IGhhdmUgdG8gd2FpdCB1cCB0byA1MDBt cyBpZiBLUiBpcw0KPiA+IAkJICogYXR0ZW1wdGVkLiAgODI1OTkgdXNlcyB0aGUgc2FtZSB0aW1p bmcgZm9yIDEwZyBTRkkuDQo+ID4gCQkgKi8NCj4gPiBJdCBzZWVtcyB3ZSBoYXZlIHRvIHdhaXQg Zm9yIGF0IGxlYXN0IDUwMG1zIGZvciBzcGVjIHJlcXVpcmVtZW50IGJlZm9yZQ0KPiB3ZSBjaGVj ayBsaW5rIGFmdGVyIGNvbmZpZ3VyYXRpb24uDQo+ID4gSWYgdGhhdCBpcyB0cnVlLCB3ZSBjYW4g bm90IGRvIGFueSBjaGFuZ2UgdG8gdGhlc2UgbG9vcCBjaGVjay4NCj4gPiBCdXQgd2h5IG5vdCBt YWluIHRocmVhZCB0YWtlIHNvbWUgYWN0aW9uIHRvIHN0b3AgcGVyaW9kaWMgbGluayBzYXRlIGNo ZWNrDQo+IHdoZW4gaXQgZmluZCBpdCBoYXMgYmVlbiBoYW5nIG9yIGxpbmsgaXMgZG93bj8NCj4g DQo+IFRvIGZpbmQgdGhhdCBkZXZpY2UgaXMgRE9XTiwgdGhyZWFkIHdpbGwgaGF2ZSB0byBjYWxs IHRoaXMgZnVuY3Rpb24gYXQgbGVhc3QNCj4gb25jZSBmb3IgZWFjaCBwb3J0IGFuZCB3YWl0IGEg ZmV3IHNlY29uZHMuDQo+IEFuZCBob3cgaW4gdGhhdCBjYXNlIHdlJ2xsIGtub3cgdGhhdCBkZXZp Y2UgaXMgVVAgYWdhaW4/DQo+IEFzIEkgYWxyZWFkeSB3cm90ZSBpbiBkaXNjdXNzaW9uIGZvciB0 aGlzIHBhdGNoLCBMU0MgaXMgbm90IGFuIG9wdGlvbiwgYmVjYXVzZSBpdA0KPiB0YWtlcyBhdCBs ZWFzdCA1IHNlY29uZHMgdG8gZGV0ZWN0IGxpbmsgc3RhdGUgY2hhbmdlLCB3aGljaCBpcyB3YXkg dG9vIG11Y2gNCj4gZm9yIG1hbnkgcmVhbCB3b3JsZCBhcHBzLg0KPiANCj4gPg0KPiA+DQo+ID4N Cj4gPj4NCj4gPj4+DQo+ID4+PiBIaSwgbGF1cmVudC5oYXJkeQ0KPiA+Pj4gIFlvdSBhcmUgdGhl IGF1dGhvciBmb3IgdGhlIHBhdGNoICgqIG5ldC9peGdiZTogZW5zdXJlIGxpbmsgc3RhdHVzDQo+ ID4+PiBpcw0KPiA+PiB1cGRhdGVkKSwgd2h5IGRvIHlvdSBpbXBsZW1lbnQgY29kZSB0aGF0IHdh eT8NCj4gPj4+IElzIHRoYXQgbXVzdCB0aGF0ICBzZXQgdXAgbGluayB3aXRoIHdhaXQ/DQo+ID4+ Pg0KPiA+Pj4gaXhnYmVfc2V0dXBfbGluayhodywgc3BlZWQsIHRydWUpOw0KPiA+Pj4NCj4gPj4+ DQo+ID4+Pg0KPiA+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4g UmVnYXJkcw0KPiA+Pj4+Pj4+IFFpDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4g Rml4ZXM6IGMxMmQyMmY2NWIxMyAoIm5ldC9peGdiZTogZW5zdXJlIGxpbmsgc3RhdHVzIGlzDQo+ ID4+Pj4+Pj4+IHVwZGF0ZWQiKQ0KPiA+Pj4+Pj4+PiBDQzogc3RhYmxlQGRwZGsub3JnDQo+ID4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IElseWEgTWF4aW1ldHMgPGkubWF4aW1l dHNAc2Ftc3VuZy5jb20+DQo+ID4+Pj4+Pj4+IC0tLQ0KPiA+Pj4+Pj4+PiAgZHJpdmVycy9uZXQv aXhnYmUvaXhnYmVfZXRoZGV2LmMgfCA0Mw0KPiA+Pj4+Pj4+PiArKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLQ0KPiA+Pj4+Pj4+PiAgMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMo KyksIDExIGRlbGV0aW9ucygtKQ0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMNCj4gPj4+Pj4+Pj4gYi9kcml2ZXJzL25l dC9peGdiZS9peGdiZV9ldGhkZXYuYw0KPiA+Pj4+Pj4+PiBpbmRleCAyNmIxOTI3MzcuLmEzM2I5 YTZlOCAxMDA2NDQNCj4gPj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRo ZGV2LmMNCj4gPj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMN Cj4gPj4+Pj4+Pj4gQEAgLTIyMSw2ICsyMjEsOCBAQCBzdGF0aWMgaW50DQo+ID4+Pj4+Pj4+IGl4 Z2JlX2Rldl9pbnRlcnJ1cHRfYWN0aW9uKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+Pj4+ Pj4+PiAgCQkJCSAgICAgIHN0cnVjdCBydGVfaW50cl9oYW5kbGUgKmhhbmRsZSk7DQo+ID4+IHN0 YXRpYw0KPiA+Pj4+IHZvaWQNCj4gPj4+Pj4+Pj4gaXhnYmVfZGV2X2ludGVycnVwdF9oYW5kbGVy KHZvaWQgKnBhcmFtKTsgIHN0YXRpYyB2b2lkDQo+ID4+Pj4+Pj4+IGl4Z2JlX2Rldl9pbnRlcnJ1 cHRfZGVsYXllZF9oYW5kbGVyKHZvaWQgKnBhcmFtKTsNCj4gPj4+Pj4+Pj4gK3N0YXRpYyB2b2lk IGl4Z2JlX2Rldl9zZXR1cF9saW5rX2FsYXJtX2hhbmRsZXIodm9pZCAqcGFyYW0pOw0KPiA+Pj4+ Pj4+PiArDQo+ID4+Pj4+Pj4+ICBzdGF0aWMgaW50IGl4Z2JlX2FkZF9yYXIoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsIHN0cnVjdA0KPiA+Pj4+Pj4+PiBldGhlcl9hZGRyICptYWNfYWRkciwNCj4g Pj4+Pj4+Pj4gIAkJCSB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG9vbCk7ICBzdGF0aWMgdm9p ZA0KPiA+Pj4+Pj4+PiBpeGdiZV9yZW1vdmVfcmFyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1 aW50MzJfdCBpbmRleCk7IEBADQo+ID4+Pj4+Pj4+IC0yNzkxLDYgKzI3OTMsOCBAQCBpeGdiZV9k ZXZfc3RvcChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4g IAlQTURfSU5JVF9GVU5DX1RSQUNFKCk7DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICsJcnRlX2Vh bF9hbGFybV9jYW5jZWwoaXhnYmVfZGV2X3NldHVwX2xpbmtfYWxhcm1faGFuZGxlciwNCj4gPj4g ZGV2KTsNCj4gPj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+PiAgCS8qIGRpc2FibGUgaW50ZXJydXB0cyAq Lw0KPiA+Pj4+Pj4+PiAgCWl4Z2JlX2Rpc2FibGVfaW50cihodyk7DQo+ID4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+IEBAIC0zOTY5LDYgKzM5NzMsMjUgQEAgaXhnYmV2Zl9jaGVja19saW5rKHN0cnVjdCBp eGdiZV9odw0KPiAqaHcsDQo+ID4+Pj4+Pj4+IGl4Z2JlX2xpbmtfc3BlZWQgKnNwZWVkLA0KPiA+ Pj4+Pj4+PiAgCXJldHVybiByZXRfdmFsOw0KPiA+Pj4+Pj4+PiAgfQ0KPiA+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+PiArc3RhdGljIHZvaWQNCj4gPj4+Pj4+Pj4gK2l4Z2JlX2Rldl9zZXR1cF9saW5rX2Fs YXJtX2hhbmRsZXIodm9pZCAqcGFyYW0pIHsNCj4gPj4+Pj4+Pj4gKwlzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiA9IChzdHJ1Y3QgcnRlX2V0aF9kZXYgKilwYXJhbTsNCj4gPj4+Pj4+Pj4gKwlzdHJ1 Y3QgaXhnYmVfaHcgKmh3ID0NCj4gPj4+Pj4+Pj4gSVhHQkVfREVWX1BSSVZBVEVfVE9fSFcoZGV2 LT5kYXRhLT5kZXZfcHJpdmF0ZSk7DQo+ID4+Pj4+Pj4+ICsJc3RydWN0IGl4Z2JlX2ludGVycnVw dCAqaW50ciA9DQo+ID4+Pj4+Pj4+ICsJCUlYR0JFX0RFVl9QUklWQVRFX1RPX0lOVFIoZGV2LT5k YXRhLQ0KPiA+Pj4gZGV2X3ByaXZhdGUpOw0KPiA+Pj4+Pj4+PiArCXUzMiBzcGVlZDsNCj4gPj4+ Pj4+Pj4gKwlib29sIGF1dG9uZWcgPSBmYWxzZTsNCj4gPj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+PiAr CXNwZWVkID0gaHctPnBoeS5hdXRvbmVnX2FkdmVydGlzZWQ7DQo+ID4+Pj4+Pj4+ICsJaWYgKCFz cGVlZCkNCj4gPj4+Pj4+Pj4gKwkJaXhnYmVfZ2V0X2xpbmtfY2FwYWJpbGl0aWVzKGh3LCAmc3Bl ZWQsICZhdXRvbmVnKTsNCj4gPj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+PiArCWl4Z2JlX3NldHVwX2xp bmsoaHcsIHNwZWVkLCB0cnVlKTsNCj4gPj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+PiArCWludHItPmZs YWdzICY9IH5JWEdCRV9GTEFHX05FRURfTElOS19DT05GSUc7IH0NCj4gPj4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+PiAgLyogcmV0dXJuIDAgbWVhbnMgbGluayBzdGF0dXMgY2hhbmdlZCwgLTEgbWVhbnMg bm90IGNoYW5nZWQgKi8NCj4gPj4+Pj4+Pj4gaW50IGl4Z2JlX2Rldl9saW5rX3VwZGF0ZV9zaGFy ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgQEAgLQ0KPiA+Pj4+IDM5ODEsOQ0KPiA+Pj4+Pj4+ PiArNDAwNCw3IEBAIGl4Z2JlX2Rldl9saW5rX3VwZGF0ZV9zaGFyZShzdHJ1Y3QgcnRlX2V0aF9k ZXYNCj4gPj4gKmRldiwNCj4gPj4+Pj4+Pj4gIAkJSVhHQkVfREVWX1BSSVZBVEVfVE9fSU5UUihk ZXYtPmRhdGEtDQo+ID4+PiBkZXZfcHJpdmF0ZSk7DQo+ID4+Pj4+Pj4+ICAJaW50IGxpbmtfdXA7 DQo+ID4+Pj4+Pj4+ICAJaW50IGRpYWc7DQo+ID4+Pj4+Pj4+IC0JdTMyIHNwZWVkID0gMDsNCj4g Pj4+Pj4+Pj4gIAlpbnQgd2FpdCA9IDE7DQo+ID4+Pj4+Pj4+IC0JYm9vbCBhdXRvbmVnID0gZmFs c2U7DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICAJbWVtc2V0KCZsaW5rLCAwLCBzaXplb2YobGlu aykpOw0KPiA+Pj4+Pj4+PiAgCWxpbmsubGlua19zdGF0dXMgPSBFVEhfTElOS19ET1dOOyBAQCAt Mzk5MywxMyArNDAxNCw4DQo+ID4+IEBADQo+ID4+Pj4+Pj4+IGl4Z2JlX2Rldl9saW5rX3VwZGF0 ZV9zaGFyZShzdHJ1Y3QNCj4gPj4+Pj4+IHJ0ZV9ldGhfZGV2DQo+ID4+Pj4+Pj4+ICpkZXYsDQo+ ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICAJaHctPm1hYy5nZXRfbGlua19zdGF0dXMgPSB0cnVlOw0K PiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiAtCWlmICgoaW50ci0+ZmxhZ3MgJiBJWEdCRV9GTEFHX05F RURfTElOS19DT05GSUcpICYmDQo+ID4+Pj4+Pj4+IC0JCWl4Z2JlX2dldF9tZWRpYV90eXBlKGh3 KSA9PQ0KPiA+PiBpeGdiZV9tZWRpYV90eXBlX2ZpYmVyKSB7DQo+ID4+Pj4+Pj4+IC0JCXNwZWVk ID0gaHctPnBoeS5hdXRvbmVnX2FkdmVydGlzZWQ7DQo+ID4+Pj4+Pj4+IC0JCWlmICghc3BlZWQp DQo+ID4+Pj4+Pj4+IC0JCQlpeGdiZV9nZXRfbGlua19jYXBhYmlsaXRpZXMoaHcsICZzcGVlZCwN Cj4gPj4gJmF1dG9uZWcpOw0KPiA+Pj4+Pj4+PiAtCQlpeGdiZV9zZXR1cF9saW5rKGh3LCBzcGVl ZCwgdHJ1ZSk7DQo+ID4+Pj4+Pj4+IC0JfQ0KPiA+Pj4+Pj4+PiArCWlmIChpbnRyLT5mbGFncyAm IElYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRykNCj4gPj4+Pj4+Pj4gKwkJcmV0dXJuIHJ0ZV9l dGhfbGlua3N0YXR1c19zZXQoZGV2LCAmbGluayk7DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICAJ LyogY2hlY2sgaWYgaXQgbmVlZHMgdG8gd2FpdCB0byBjb21wbGV0ZSwgaWYgbHNjIGludGVycnVw dCBpcw0KPiA+PiBlbmFibGVkICovDQo+ID4+Pj4+Pj4+ICAJaWYgKHdhaXRfdG9fY29tcGxldGUg PT0gMCB8fCBkZXYtPmRhdGEtDQo+ID4+PiBkZXZfY29uZi5pbnRyX2NvbmYubHNjDQo+ID4+Pj4+ Pj4+ICE9DQo+ID4+Pj4+Pj4+IDApIEBADQo+ID4+Pj4+Pj4+IC00MDE3LDExICs0MDMzLDE0IEBA IGl4Z2JlX2Rldl9saW5rX3VwZGF0ZV9zaGFyZShzdHJ1Y3QNCj4gPj4+PiBydGVfZXRoX2Rldg0K PiA+Pj4+Pj4gKmRldiwNCj4gPj4+Pj4+Pj4gIAl9DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICAJ aWYgKGxpbmtfdXAgPT0gMCkgew0KPiA+Pj4+Pj4+PiAtCQlpbnRyLT5mbGFncyB8PSBJWEdCRV9G TEFHX05FRURfTElOS19DT05GSUc7DQo+ID4+Pj4+Pj4+ICsJCWlmIChpeGdiZV9nZXRfbWVkaWFf dHlwZShodykgPT0NCj4gPj4gaXhnYmVfbWVkaWFfdHlwZV9maWJlcikNCj4gPj4+PiB7DQo+ID4+ Pj4+Pj4+ICsJCQlpbnRyLT5mbGFncyB8PQ0KPiA+PiBJWEdCRV9GTEFHX05FRURfTElOS19DT05G SUc7DQo+ID4+Pj4+Pj4+ICsJCQlydGVfZWFsX2FsYXJtX3NldCgxMCwNCj4gPj4+Pj4+Pj4gKw0K PiA+PiAJaXhnYmVfZGV2X3NldHVwX2xpbmtfYWxhcm1faGFuZGxlciwgZGV2KTsNCj4gPj4+Pj4+ Pj4gKwkJfQ0KPiA+Pj4+Pj4+PiAgCQlyZXR1cm4gcnRlX2V0aF9saW5rc3RhdHVzX3NldChkZXYs ICZsaW5rKTsNCj4gPj4+Pj4+Pj4gIAl9DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IC0JaW50ci0+ ZmxhZ3MgJj0gfklYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRzsNCj4gPj4+Pj4+Pj4gIAlsaW5r Lmxpbmtfc3RhdHVzID0gRVRIX0xJTktfVVA7DQo+ID4+Pj4+Pj4+ICAJbGluay5saW5rX2R1cGxl eCA9IEVUSF9MSU5LX0ZVTExfRFVQTEVYOw0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBAQCAtNTEy OCw2ICs1MTQ3LDggQEAgaXhnYmV2Zl9kZXZfc3RvcChzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPj4g KmRldikNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gIAlQTURfSU5JVF9GVU5DX1RSQUNFKCk7DQo+ ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICsJcnRlX2VhbF9hbGFybV9jYW5jZWwoaXhnYmVfZGV2X3Nl dHVwX2xpbmtfYWxhcm1faGFuZGxlciwNCj4gPj4gZGV2KTsNCj4gPj4+Pj4+Pj4gKw0KPiA+Pj4+ Pj4+PiAgCWl4Z2JldmZfaW50cl9kaXNhYmxlKGRldik7DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ ICAJaHctPmFkYXB0ZXJfc3RvcHBlZCA9IDE7DQo+ID4+Pj4+Pj4+IC0tDQo+ID4+Pj4+Pj4+IDIu MTcuMQ0KPiA+Pj4+Pj4+DQo=