From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 3/5] drm/i915: Move SST DP link retraining into the ->post_hotplug() hook Date: Mon, 5 Mar 2018 15:41:44 -0800 Message-ID: <20180305234142.GA4151@intel.com> References: <20180117192149.17760-1-ville.syrjala@linux.intel.com> <20180117192149.17760-3-ville.syrjala@linux.intel.com> <1517354219.4938.24.camel@redhat.com> <20180131132710.GK5453@intel.com> <20180228071731.GB2386@intel.com> <1519844854.26611.4.camel@redhat.com> <20180228192730.GA11481@intel.com> <1519846866.26611.8.camel@redhat.com> <20180228195756.GB11481@intel.com> <1519848624.26611.10.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id F323D6E4EF for ; Mon, 5 Mar 2018 23:38:49 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1519848624.26611.10.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMjgsIDIwMTggYXQgMDM6MTA6MjRQTSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBPbiBXZWQsIDIwMTgtMDItMjggYXQgMTE6NTcgLTA4MDAsIE1hbmFzaSBOYXZhcmUgd3Jv dGU6Cj4gPiBPbiBXZWQsIEZlYiAyOCwgMjAxOCBhdCAwMjo0MTowNlBNIC0wNTAwLCBMeXVkZSBQ YXVsIHdyb3RlOgo+ID4gPiBPbiBXZWQsIDIwMTgtMDItMjggYXQgMTE6MjcgLTA4MDAsIE1hbmFz aSBOYXZhcmUgd3JvdGU6Cj4gPiA+ID4gT24gV2VkLCBGZWIgMjgsIDIwMTggYXQgMDI6MDc6MzRQ TSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90ZToKPiA+ID4gPiA+IAo+ID4gPiA+ID4gT24gVHVlLCAy MDE4LTAyLTI3IGF0IDIzOjE3IC0wODAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4gPiA+ID4g PiBWaWxsZSwgIHRoYW5rcyBmb3IgdGhlIHBhdGNoIGFuZAo+ID4gPiA+ID4gPiBTb3JyeSBmb3Ig bm90IGJlaW5nIGFibGUgdG8gcmV2aWV3IHRoaXMgZWFybGllci4KPiA+ID4gPiA+ID4gUGxlYXNl IGZpbmQgc29tZSBjb21tZW50cyBiZWxvdzoKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IE9uIFdl ZCwgSmFuIDMxLCAyMDE4IGF0IDAzOjI3OjEwUE0gKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90 ZToKPiA+ID4gPiA+ID4gPiBPbiBUdWUsIEphbiAzMCwgMjAxOCBhdCAwNjoxNjo1OVBNIC0wNTAw LCBMeXVkZSBQYXVsIHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gT24gV2VkLCAyMDE4LTAxLTE3IGF0 IDIxOjIxICswMjAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiBGcm9t OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiA+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gRG9pbmcgbGluayByZXRyYWluaW5nIGZyb20g dGhlIHNob3J0IHB1bHNlIGhhbmRsZXIgaXMKPiA+ID4gPiA+ID4gPiA+ID4gcHJvYmxlbWF0aWMK PiA+ID4gPiA+ID4gPiA+ID4gc2luY2UKPiA+ID4gPiA+ID4gPiA+ID4gdGhhdCBtaWdodCBpbnRy b2R1Y2UgZGVhZGxvY2tzIHdpdGggTVNUIHNpZGViYW5kIHByb2Nlc3NpbmcuCj4gPiA+ID4gPiA+ ID4gPiA+IEN1cnJlbnRseQo+ID4gPiA+ID4gPiA+ID4gPiB3ZSBkb24ndCByZXRyYWluIE1TVCBs aW5rcyBmcm9tIHRoaXMgY29kZSwgYnV0IHdlIHdhbnQgdG8KPiA+ID4gPiA+ID4gPiA+ID4gY2hh bmdlCj4gPiA+ID4gPiA+ID4gPiA+IHRoYXQuCj4gPiA+ID4gPiA+ID4gPiA+IFNvIGJldHRlciB0 byBtb3ZlIHRoZSBlbnRpcmUgdGhpbmcgdG8gdGhlIGhvdHBsdWcgd29yay4gV2UgY2FuCj4gPiA+ ID4gPiA+ID4gPiA+IHV0aWxpemUKPiA+ID4gPiA+ID4gPiA+ID4gdGhlIG5ldyBlbmNvZGVyLT5o b3RwbHVnKCkgaG9vayBmb3IgdGhpcy4KPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiA+IFRoZSBvbmx5IHRoaW5nIHdlIGxlYXZlIGluIHRoZSBzaG9ydCBwdWxzZSBoYW5kbGVyIGlz IHRoZSBsaW5rCj4gPiA+ID4gPiA+ID4gPiA+IHN0YXR1cwo+ID4gPiA+ID4gPiA+ID4gPiBjaGVj ay4gVGhhdCBvbmUgc3RpbGwgZGVwZW5kcyBvbiB0aGUgbGluayBwYXJhbWV0ZXJzIHN0b3JlZAo+ ID4gPiA+ID4gPiA+ID4gPiB1bmRlcgo+ID4gPiA+ID4gPiA+ID4gPiBpbnRlbF9kcCwgc28gbm8g bG9ja2luZyBhcm91bmQgdGhhdCBidXQgcmFjZXMgc2hvdWxkIGJlIG1vc3RseQo+ID4gPiA+ID4g PiA+ID4gPiBoYXJtbGVzcwo+ID4gPiA+ID4gPiA+ID4gPiBhcyB0aGUgYWN0dWFsIHJldHJhaW5p bmcgY29kZSB3aWxsIHJlY2hlY2sgdGhlIGxpbmsgc3RhdGUgaWYKPiA+ID4gPiA+ID4gPiA+ID4g d2UKPiA+ID4gPiA+ID4gPiA+ID4gZW5kIHVwIHRoZXJlIGJ5IG1pc3Rha2UuCj4gPiA+ID4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiB2MjogUmViYXNlIGR1ZSB0byAtPnBvc3RfaG90cGx1 ZygpIG5vdyBiZWluZyBqdXN0IC0+aG90cGx1ZygpCj4gPiA+ID4gPiA+ID4gPiA+ICAgICBDaGVj ayB0aGUgY29ubmVjdG9yIHR5cGUgdG8gZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgZG8KPiA+ID4g PiA+ID4gPiA+ID4gICAgIHRoZSBIRE1JIHRoaW5nIG9yIHRoZSBEUCB0aGluayBmb3IgRERJCj4g PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBDYzogTWFuYXNpIE5hdmFyZSA8bWFu YXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiA+ID4gQ2M6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gPiA+ID4g PiA+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4gPiA+ID4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiA+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgfCAgMTAgKy0KPiA+ID4gPiA+ID4gPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgIHwgMTk2Cj4gPiA+ID4gPiA+ID4gPiA+ICsr KysrKysrKysrKysrKysrKysrKystLQo+ID4gPiA+ID4gPiA+ID4gPiAtLS0tCj4gPiA+ID4gPiA+ ID4gPiA+IC0tLS0tLS0tCj4gPiA+ID4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiA+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggfCAgIDIgKwo+ID4gPiA+ID4gPiA+ID4g PiAgMyBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCj4g PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiA+ID4gPiA+ID4gPiBpbmRleCAyNTc5M2JkYzY5MmYu LjVmM2Q1OGYxYWU2ZSAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTI4ODAsNyArMjg4MCwx MCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kZGlfaG90cGx1ZyhzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ ID4gaW50ZWxfZW5jb2Rlcgo+ID4gPiA+ID4gPiA+ID4gPiAqZW5jb2RlciwKPiA+ID4gPiA+ID4g PiA+ID4gIAlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiA+ID4gPiA+ID4g PiA+ICAKPiA+ID4gPiA+ID4gPiA+ID4gIAlmb3IgKDs7KSB7Cj4gPiA+ID4gPiA+ID4gPiA+IC0J CXJldCA9IGludGVsX2hkbWlfcmVzZXRfbGluayhlbmNvZGVyLCAmY3R4KTsKPiA+ID4gPiA+ID4g PiA+ID4gKwkJaWYgKGNvbm5lY3Rvci0+YmFzZS5jb25uZWN0b3JfdHlwZSA9PQo+ID4gPiA+ID4g PiA+ID4gPiBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUEpCj4gPiA+ID4gPiA+ID4gPiA+ICsJCQly ZXQgPSBpbnRlbF9oZG1pX3Jlc2V0X2xpbmsoZW5jb2RlciwKPiA+ID4gPiA+ID4gPiA+ID4gJmN0 eCk7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCWVsc2UKPiA+ID4gPiA+ID4gPiA+ID4gKwkJCXJldCA9 IGludGVsX2RwX3JldHJhaW5fbGluayhlbmNvZGVyLAo+ID4gPiA+ID4gPiA+ID4gPiAmY3R4KTsK PiA+ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ID4gPiAgCQlpZiAocmV0ID09IC1FREVB RExLKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ICAJCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ ID4gPiA+ID4gPiA+ID4gPiBAQCAtMzAwNywxMCArMzAxMCw3IEBAIHZvaWQgaW50ZWxfZGRpX2lu aXQoc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gPiA+ID4g PiA+ID4gKmRldl9wcml2LAo+ID4gPiA+ID4gPiA+ID4gPiBlbnVtIHBvcnQgcG9ydCkKPiA+ID4g PiA+ID4gPiA+ID4gIAlkcm1fZW5jb2Rlcl9pbml0KCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyLAo+ ID4gPiA+ID4gPiA+ID4gPiAmaW50ZWxfZGRpX2Z1bmNzLAo+ID4gPiA+ID4gPiA+ID4gPiAgCQkJ IERSTV9NT0RFX0VOQ09ERVJfVE1EUywgIkRESSAlYyIsCj4gPiA+ID4gPiA+ID4gPiA+IHBvcnRf bmFtZShwb3J0KSk7Cj4gPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+ID4gLQlpZiAo aW5pdF9oZG1pKQo+ID4gPiA+ID4gPiA+ID4gPiAtCQlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0g aW50ZWxfZGRpX2hvdHBsdWc7Cj4gPiA+ID4gPiA+ID4gPiA+IC0JZWxzZQo+ID4gPiA+ID4gPiA+ ID4gPiAtCQlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0KPiA+ID4gPiA+ID4gPiA+ID4gaW50ZWxf ZW5jb2Rlcl9ob3RwbHVnOwo+ID4gPiA+ID4gPiA+ID4gPiArCWludGVsX2VuY29kZXItPmhvdHBs dWcgPSBpbnRlbF9kZGlfaG90cGx1ZzsKPiA+ID4gPiA+ID4gPiA+ID4gIAlpbnRlbF9lbmNvZGVy LT5jb21wdXRlX291dHB1dF90eXBlID0KPiA+ID4gPiA+ID4gPiA+ID4gaW50ZWxfZGRpX2NvbXB1 dGVfb3V0cHV0X3R5cGU7Cj4gPiA+ID4gPiA+ID4gPiA+ICAJaW50ZWxfZW5jb2Rlci0+Y29tcHV0 ZV9jb25maWcgPQo+ID4gPiA+ID4gPiA+ID4gPiBpbnRlbF9kZGlfY29tcHV0ZV9jb25maWc7Cj4g PiA+ID4gPiA+ID4gPiA+ICAJaW50ZWxfZW5jb2Rlci0+ZW5hYmxlID0gaW50ZWxfZW5hYmxlX2Rk aTsKPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPiA+ID4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jCj4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IDZiYmYxNDQxMGMyYS4uMTUyMDE2ZTA5YTExIDEw MDY0NAo+ID4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jCj4gPiA+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTQyNzUsMTIgKzQyNzUsODMgQEAgaW50ZWxfZHBfY2hl Y2tfbXN0X3N0YXR1cyhzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ID4gaW50ZWxfZHAKPiA+ID4gPiA+ ID4gPiA+ID4gKmludGVsX2RwKQo+ID4gPiA+ID4gPiA+ID4gPiAgCXJldHVybiAtRUlOVkFMOwo+ ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiA+ IC1zdGF0aWMgdm9pZAo+ID4gPiA+ID4gPiA+ID4gPiAtaW50ZWxfZHBfcmV0cmFpbl9saW5rKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgYm9vbAo+ ID4gPiA+ID4gPiA+ID4gPiAraW50ZWxfZHBfbmVlZHNfbGlua19yZXRyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gPiA+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJ dTggbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV07Cj4gPiA+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiA+ID4gKwlpZiAoIWludGVsX2RwX2dldF9saW5rX3N0YXR1cyhpbnRlbF9k cCwgbGlua19zdGF0dXMpKQo+ID4gPiA+ID4gPiA+ID4gPiB7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJ CURSTV9FUlJPUigiRmFpbGVkIHRvIGdldCBsaW5rIHN0YXR1c1xuIik7Cj4gPiA+ID4gPiA+ID4g PiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKwkvKgo+ID4gPiA+ID4gPiA+ID4gPiArCSAqIFZhbGlk YXRlIHRoZSBjYWNoZWQgdmFsdWVzIG9mIGludGVsX2RwLT5saW5rX3JhdGUKPiA+ID4gPiA+ID4g PiA+ID4gYW5kCj4gPiA+ID4gPiA+ID4gPiA+ICsJICogaW50ZWxfZHAtPmxhbmVfY291bnQgYmVm b3JlIGF0dGVtcHRpbmcgdG8gcmV0cmFpbi4KPiA+ID4gPiA+ID4gPiA+ID4gKwkgKi8KPiA+ID4g PiA+ID4gPiA+ID4gKwlpZiAoIWludGVsX2RwX2xpbmtfcGFyYW1zX3ZhbGlkKGludGVsX2RwLCBp bnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+ID4gPiBsaW5rX3JhdGUsCj4gPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gPiArCQkJCQlpbnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+ID4gPmxh bmVfY291bnQpKQo+ID4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKwkvKiBSZXRyYWluIGlmIENoYW5uZWwgRVEgb3Ig Q1Igbm90IG9rICovCj4gPiA+ID4gPiA+ID4gPiA+ICsJcmV0dXJuICFkcm1fZHBfY2hhbm5lbF9l cV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtCj4gPiA+ID4gPiA+ID4gPiA+ID4gbGFuZV9jb3Vu dCk7Cj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gPiA+ID4gPiArICogSWYgZGlz cGxheSBpcyBub3cgY29ubmVjdGVkIGNoZWNrIGxpbmtzIHN0YXR1cywKPiA+ID4gPiA+ID4gPiA+ ID4gKyAqIHRoZXJlIGhhcyBiZWVuIGtub3duIGlzc3VlcyBvZiBsaW5rIGxvc3MgdHJpZ2dlcmlu Zwo+ID4gPiA+ID4gPiA+ID4gPiArICogbG9uZyBwdWxzZS4KPiA+ID4gPiA+ID4gPiA+ID4gKyAq Cj4gPiA+ID4gPiA+ID4gPiA+ICsgKiBTb21lIHNpbmtzIChlZy4gQVNVUyBQQjI4N1EpIHNlZW0g dG8gcGVyZm9ybSBzb21lCj4gPiA+ID4gPiA+ID4gPiA+ICsgKiB3ZWlyZCBIUEQgcGluZyBwb25n IGR1cmluZyBtb2Rlc2V0cy4gU28gd2UgY2FuIGFwcGFyZW50bHkKPiA+ID4gPiA+ID4gPiA+ID4g KyAqIGVuZCB1cCB3aXRoIEhQRCBnb2luZyBsb3cgZHVyaW5nIGEgbW9kZXNldCwgYW5kIHRoZW4K PiA+ID4gPiA+ID4gPiA+ID4gKyAqIGdvaW5nIGJhY2sgdXAgc29vbiBhZnRlci4gQW5kIG9uY2Ug dGhhdCBoYXBwZW5zIHdlIG11c3QKPiA+ID4gPiA+ID4gPiA+ID4gKyAqIHJldHJhaW4gdGhlIGxp bmsgdG8gZ2V0IGEgcGljdHVyZS4gVGhhdCdzIGluIGNhc2Ugbm8KPiA+ID4gPiA+ID4gPiA+ID4g KyAqIHVzZXJzcGFjZSBjb21wb25lbnQgcmVhY3RlZCB0byBpbnRlcm1pdHRlbnQgSFBEIGRpcC4K PiA+ID4gPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4gPiA+ID4gPiAraW50IGludGVsX2RwX3Jl dHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gPiA+ID4gPiA+ ID4gKwkJCSAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4Cj4gPiA+ID4gPiA+ID4gPiA+ ICpjdHgpCj4gPiA+ID4gPiA+ID4gPiA+ICB7Cj4gPiA+ID4gPiA+ID4gPiA+IC0Jc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIgPQo+ID4gPiA+ID4gPiA+ID4gPiAmZHBfdG9fZGlnX3BvcnQo aW50ZWxfZHApLQo+ID4gPiA+ID4gPiA+ID4gPiA+IGJhc2U7Cj4gPiA+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZW5jb2Rlci0KPiA+ID4gPiA+ID4gPiA+ID4gPiBiYXNlLmRldik7Cj4gPiA+ID4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhlbmNvZGVyLQo+ID4gPiA+ID4gPiA+ID4gPiA+IGJhc2UuY3J0Yyk7Cj4gPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItCj4gPiA+ID4gPiA+ID4gPiA+ID4gYmFzZSk7 Cj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2RwLQo+ID4gPiA+ID4gPiA+ID4gPiA+IGF0dGFjaGVk X2Nvbm5lY3RvcjsKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJc3Ry dWN0IGludGVsX2NydGMgKmNydGM7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJaW50IHJldDsKPiA+ID4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiArCS8qIEZJWE1FIGhhbmRsZSB0aGUgTVNU IGNvbm5lY3RvcnMgYXMgd2VsbCAqLwo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g PiA+ICsJaWYgKCFjb25uZWN0b3IgfHwgY29ubmVjdG9yLT5iYXNlLnN0YXR1cyAhPQo+ID4gPiA+ ID4gPiA+ID4gPiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKPiA+ID4gPiA+ID4gPiA+ID4g KwkJcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gKwlyZXQg PSBkcm1fbW9kZXNldF9sb2NrKCZkZXZfcHJpdi0KPiA+ID4gPiA+ID4gPiA+ID4gPiBkcm0ubW9k ZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiA+IGN0eCk7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJaWYgKHJldCkKPiA+ID4gPiA+ID4gPiA+ ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiAr CWNvbm5fc3RhdGUgPSBjb25uZWN0b3ItPmJhc2Uuc3RhdGU7Cj4gPiA+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiA+ID4gKwljcnRjID0gdG9faW50ZWxfY3J0Yyhjb25uX3N0YXRlLT5jcnRj KTsKPiA+ID4gPiA+ID4gPiA+ID4gKwlpZiAoIWNydGMpCj4gPiA+ID4gPiA+ID4gPiA+ICsJCXJl dHVybiAwOwo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ICsJcmV0ID0gZHJt X21vZGVzZXRfbG9jaygmY3J0Yy0+YmFzZS5tdXRleCwgY3R4KTsKPiA+ID4gPiA+ID4gPiA+ID4g KwlpZiAocmV0KQo+ID4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gcmV0Owo+ID4gPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ICsJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ ID4gKwlXQVJOX09OKCFpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpKTsKPiA+ ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiArCWlmICghY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUpCj4gPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gPiA+ICsJaWYgKGNvbm5fc3RhdGUtPmNvbW1pdCAmJgo+ID4gPiA+ ID4gPiA+ID4gPiArCSAgICAhdHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oJmNvbm5fc3RhdGUtPmNv bW1pdC0KPiA+ID4gPiA+ID4gPiA+ID4gPiBod19kb25lKSkKPiA+ID4gPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gPiA+ICsJaWYgKCFpbnRlbF9kcF9uZWVkc19saW5rX3JldHJhaW4oaW50ZWxfZHApKQo+ ID4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gTkFLLCB0aGlzIGRlZmluaXRlbHkgd29uJ3Qgd29yayBmb3IgaW1wbGVtZW50aW5nIE1T VCByZXRyYWluaW5nLgo+ID4gPiA+ID4gPiA+ID4gVGhlcmUncwo+ID4gPiA+ID4gPiA+ID4gc29t ZQo+ID4gPiA+ID4gPiA+ID4gcHJldHR5IGh1Z2UgZGlmZmVyZW5jZXMgd2l0aCBob3cgcmV0cmFp bmluZyBuZWVkcyB0byBiZSBoYW5kbGVkCj4gPiA+ID4gPiA+ID4gPiBvbgo+ID4gPiA+ID4gPiA+ ID4gU1NUCj4gPiA+ID4gPiA+ID4gPiB2cy4gTVNULgo+ID4gPiA+ID4gPiA+ID4gQW4gZXhhbXBs ZSB3aXRoIHNvbWUgbm9ybWFsIFNTVCBzaW5rIHZzLiB3aGF0IGhhcHBlbnMgb24gbXkKPiA+ID4g PiA+ID4gPiA+IGNhbGRpZ2l0Cj4gPiA+ID4gPiA+ID4gPiBUUzMKPiA+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gU1NUOgo+ID4gPiA+ID4gPiA+ID4gICAgIDEuIGNvbW1pdCBtb2Rlc2V0 LCBldmVyeXRoaW5nIGlzIE9LCj4gPiA+ID4gPiA+ID4gPiAgICAgMi4gc29tZXRoaW5nIGhhcHBl bnMsIHNpbmsgc2VuZHMgc2hvcnRwdWxzZSBhbmQgY2hhbmdlcyBsaW5rCj4gPiA+ID4gPiA+ID4g PiBzdGF0dXMKPiA+ID4gPiA+ID4gPiA+IHJlZ2lzdGVycwo+ID4gPiA+ID4gPiA+ID4gICAgIGlu IGRwY2QKPiA+ID4gPiA+ID4gPiA+ICAgICAzLiBTb3VyY2UgcmVjZWl2ZXMgc2hvcnQgcHVsc2Us IHRyaWVzIHJldHJhaW5pbmcgZml2ZSB0aW1lcwo+ID4gPiA+ID4gPiA+ID4gICAgIDQuIGlmIHRo aXMgc3VjY2VlZHM6Cj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIDUuIHdlJ3JlIGRvbmUgaGVyZQo+ ID4gPiA+ID4gPiA+ID4gICAgIDYuIGlmIHRoaXMgZmFpbHM6Cj4gPiA+ID4gPiA+ID4gPiAgICAg ICAgIDcuIG1hcmsgbGluayBzdGF0dXMgYXMgYmFkCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIDgu IGdldCBmYWxsYmFjayBwYXJhbWV0ZXJzCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIDkuIGhvdHBs dWcgZXZlbnQKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gTVNUIChpOTE1IGRvZXNu J3QgZG8gdGhpcyB5ZXQsIGJ1dCB0aGlzIGlzIGdlbmVyYWxseSBob3cgaXQKPiA+ID4gPiA+ID4g PiA+IG5lZWRzIHRvCj4gPiA+ID4gPiA+ID4gPiBiZQo+ID4gPiA+ID4gPiA+ID4gaGFuZGxlZCk6 Cj4gPiA+ID4gPiA+ID4gPiAgICAgMS4gY29tbWl0IG1vZGVzZXQsIGV2ZXJ5dGhpbmcgaXMgT0sK PiA+ID4gPiA+ID4gPiA+ICAgICAyLiBzb21ldGhpbmcgaGFwcGVucyAoaW4gbXkgY2FzZSwgdGhl IE1TVCBodWIgZGlzY292ZXJzIGl0Cj4gPiA+ID4gPiA+ID4gPiBoYWQKPiA+ID4gPiA+ID4gPiA+ IHRoZQo+ID4gPiA+ID4gPiA+ID4gd3JvbmcgbWF4Cj4gPiA+ID4gPiA+ID4gPiAgICAgbGluayBy YXRlL2xhbmUgY291bnQpLCBzaW5rIHNlbmRzIEVTSSBpbmRpY2F0aW5nIGNoYW5uZWwgRVEKPiA+ ID4gPiA+ID4gPiA+IGhhcwo+ID4gPiA+ID4gPiA+ID4gZmFpbGVkCj4gPiA+ID4gPiA+ID4gPiAg ICAgMy4gcmV0cmFpbmluZyBjb21tZW5jZXMgd2l0aCBmaXZlIHJldHJpZXMuCj4gPiA+ID4gPiA+ ID4gPiAgICAgNC4gaWYgdGhpcyBzdWNjZWVkczoKPiA+ID4gPiA+ID4gPiA+ICAgICAgICA1LiBj b250aW51ZQo+ID4gPiA+ID4gPiA+ID4gICAgIDYuIGlmIHRoaXMgZmFpbHMgKEkgYWN0dWFsbHkg aGF2ZW4ndCBzZWVuIHRoaXMgb25jZSB5ZXQpCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIDcuIG1h cmsgbGluayBzdGF0dXMgYXMgYmFkIG9uIGFsbCBkb3duc3RyZWFtIGNvbm5lY3RvcnMKPiA+ID4g PiA+ID4gPiA+ICAgICAgICAgOC4gZ2V0IGZhbGxiYWNrIHBhcmFtZXRlcnMKPiA+ID4gPiA+ID4g PiA+ICAgICAgICAgOS4gaG90cGx1ZyBldmVudAo+ID4gPiA+ID4gPiA+ID4gICAgIDEwLiB0aGUg cmV0cmFpbiBkaWRuJ3QgYWN0dWFsbHkgd29yayAoZGVzcGl0ZSB3aGF0IHRoZSBTU1QKPiA+ID4g PiA+ID4gPiA+IGxpbmsKPiA+ID4gPiA+ID4gPiA+IHN0YXR1cwo+ID4gPiA+ID4gPiA+ID4gICAg IHJlZ2lzdGVycyB0b2xkIHVzKS4gZ28gYmFjayB0byBzdGVwIDMgZml2ZSBtb3JlIHRpbWVzCj4g PiA+ID4gPiA+ID4gPiAgICAgMTEuIGlmIHRoaXMgZmFpbHM6Cj4gPiA+ID4gPiA+ID4gPiAgICAg ICAgIDEyLiBtYXJrIGxpbmsgc3RhdHVzIGFzIGJhZCBvbiBhbGwgZG93bnN0cmVhbSBjb25uZWN0 b3JzCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIDEzLiBnZXQgZmFsbGJhY2sgcGFyYW1ldGVycwo+ ID4gPiA+ID4gPiA+ID4gICAgICAgICAxNC4gaG90cGx1ZyBldmVudAo+ID4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiBzaW1wbHkgcHV0OiB3ZSByZWFsbHkgc2hvdWxkIGtlZXAgdGhlICJk byB3ZSBuZWVkIHRvIHJldHJhaW4/Igo+ID4gPiA+ID4gPiA+ID4gbG9naWMKPiA+ID4gPiA+ID4g PiA+IG91dAo+ID4gPiA+ID4gPiA+ID4gb2YgdGhlCj4gPiA+ID4gPiA+ID4gPiBhY3R1YWwgcmV0 cmFpbmluZyBoZWxwZXJzIHNvIHRoYXQgU1NUL01TVCBjb2RlcGF0aHMgY2FuIGRvIHRoZWlyCj4g PiA+ID4gPiA+ID4gPiBvd24KPiA+ID4gPiA+ID4gPiA+IGNoZWNrcyB0bwo+ID4gPiA+ID4gPiA+ ID4gZmlndXJlIHRoaXMgb3V0Lgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IE5vLCB3ZSBu ZWVkIGl0IHNpbmNlIHdlIHdhbnQgdG8gY2hlY2sgaXQgKmFmdGVyKiBhbnkgbW9kZXNldCBoYXMK PiA+ID4gPiA+ID4gPiBmaW5pc2hlZC4gV2l0aCBNU1QgSSB0aGluayB3aGF0IHdlJ2xsIHdhbnQg dG8gZG8gaXMgZmluZCBhbGwgdGhlCj4gPiA+ID4gPiA+ID4gcGlwZXMKPiA+ID4gPiA+ID4gPiBh ZmZlY3RlZCBieSB0aGUgbGluayBmYWlsdXJlLCBsb2NrIHRoZW0sIGFuZCB3YWl0IHVudGlsIHRo ZXkncmUKPiA+ID4gPiA+ID4gPiBkb25lCj4gPiA+ID4gPiA+ID4gd2l0aCB0aGVpciBtb2Rlc2V0 cywgdGhlbiB3ZSBjaGVjayB0aGUgbGluayBzdGF0ZS4gSWYgaXQncyBiYWQgd2UKPiA+ID4gPiA+ ID4gPiBwcm9jZWVkIHRvIHJldHJhaW4gdGhlIGxpbmsuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+ID4gU28gYmFzaWNhbGx5IGp1c3Qgd2Fsa2luZyBvdmVyIHRoZSBNU1QgZW5jb2RlcnMgaW4g YWRkaXRpb24gdG8gdGhlCj4gPiA+ID4gPiA+ID4gU1NUIGVuY29kZXIsIGFuZCByZXBlYXRpbmcg bW9zdCBvZiB0aGUgc3RlcHMgaW4gdGhpcyBjb2RlIGZvcgo+ID4gPiA+ID4gPiA+IGVhY2guCj4g PiA+ID4gPiA+ID4gSGVuY2UgdGhlIHRoZSBNU1QgRklYTUUgSSBsZWZ0IGluIHRoZXJlIDspCj4g PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBMeXVkZSwKPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+IEkgYWdyZWUgd2l0aCBWaWxsZSBoZXJlLCBjYW4gd2UgYWRkIHRoZSBNU1Qg cmV0cmFpbiByZXF1aXJlZCBjaGVjawo+ID4gPiA+ID4gPiBmcm9tCj4gPiA+ID4gPiA+IHdpdGhp biB0aGUgaW50ZWxfZHBfcmV0cmFpbl9saW5rKCk/IFNvIGZvciBub3cgdGhlIEZJWE1FIHNob3Vs ZCBiZQo+ID4gPiA+ID4gPiBsZWZ0Cj4gPiA+ID4gPiA+IHRoZXJlCj4gPiA+ID4gPiA+IGFuZCBN U1QgcmV0cmFpbmluZyBjaGVjayBjYW4gYmUgYWRkZWQgZnJvbSB5b3VyIHBhdGNoZXMuCj4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiBNYW5hc2kKPiA+ID4gPiA+IAo+ID4gPiA+ID4gWWVwISBTb3Jy eSBJIHByb2JhYmx5IHNob3VsZCBoYXZlIHJlaXRlcmF0ZWQgdGhpcyBwYXJ0IG92ZXIgZW1haWwK PiA+ID4gPiA+IHNpbmNlIEkKPiA+ID4gPiA+IG9ubHkKPiA+ID4gPiA+IG1lbnRpb25lZCBpdCB0 byB2aWxsZSBkaXJlY3RseTogdGhpcyBwYXJ0IHNob3VsZCBkZWZpbml0ZWx5IHdvcmsgZmluZSwK PiA+ID4gPiA+IGFuZAo+ID4gPiA+ID4gaW50ZWxfZHBfcmV0cmFpbl9saW5rKCkgaXMgYWN0dWFs bHkgd2hlcmUgd2UgaGFuZGxlIE1TVCByZXRyYWluaW5nIGluCj4gPiA+ID4gPiB0aGUKPiA+ID4g PiA+IGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSByZXRyYWluaW5nIHNlcmllczoKPiA+ID4gPiA+IAo+ ID4gPiA+ID4gamZ5aSwgeW91IGNhbiBmaW5kIHRoYXQgaGVyZToKPiA+ID4gPiA+IGh0dHBzOi8v Z2l0aHViLmNvbS9MeXVkZS9saW51eC90cmVlL3dpcC9pOTE1LW1zdC1mYWxsYmFjay1hNAo+ID4g PiA+ID4gSXQncyBhbG1vc3QgcmVhZHkgZm9yIHRoZSBNTCwganVzdCB3YW50IHRvIGdldCB0aGUg b3RoZXIgcGF0Y2hlcyB0aGlzCj4gPiA+ID4gPiBpcwo+ID4gPiA+ID4gZ29pbmcKPiA+ID4gPiA+ IHRvIHJlbHkgb24gaW4gZmlyc3QgYW5kIGZpeCBzb21lIHNtYWxsIGNvbmNlcm5zIEkndmUgZ290 IGFib3V0IHRoYXQKPiA+ID4gPiA+IHNlcmllcycKPiA+ID4gPiA+IGN1cnJlbnQgaW1wbGVtZW50 YXRpb24gb2YgaGFuZGxpbmcgbW9kZXNldHMgYWZ0ZXIgYSBmYWlsZWQgcmV0cmFpbgo+ID4gPiA+ ID4gc2VxdWVuY2UKPiA+ID4gPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gR3JlYXQhCj4gPiA+ID4g QWZ0ZXIgdGhlIGZhaWxlZCByZXRyYWluIHNlcXVlbmNlLCBpdCB3aWxsIGtlZXAgb24gcmV0cnlp bmcgdW50aWwgaGFzCj4gPiA+ID4gdHJpZWQKPiA+ID4gPiBhbGwKPiA+ID4gPiB0aGUgbGluayBy YXRlL2xhbmUgY291bnQgY29tYmluYXRpb25zIHVudGlsIFJCUiAxIGxhbmUgYW5kIHRoZW4gZmFp bAo+ID4gPiA+IHdpdGggYQo+ID4gPiA+IEVSUk9SIG1lc3NhZ2UuCj4gPiA+ID4gV2hhdCB3YXMg dGhlIGNvbmNlcm4gb24gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgbW9kZXN0ZSBhZnRl cgo+ID4gPiA+IGZhaWxlZAo+ID4gPiA+IHJldHJhaW4/Cj4gPiA+IAo+ID4gPiBJIGFjdHVhbGx5 IHRha2UgdGhhdCBiYWNrLiBXYXMgd29ycmllZCB0aGF0IG5vdCBmcmVlaW5nIGV4aXN0aW5nIFZD UEkKPiA+ID4gYWxsb2NhdGlvbnMgZHVyaW5nIHRoZSBmaXJzdCBhdG9taWMgY2hlY2sgcGhhc2Ug Zm9yIHRoZSBmaXJzdCBtb2Rlc2V0Cj4gPiA+IGFmdGVyIGEKPiA+ID4gcmV0cmFpbiBmYWlsdXJl IG1pZ2h0IGNhdXNlIGF0b21pYyBjaGVja3MgdG8gZmFpbCBmcm9tIG5vdCBoYXZpbmcgZW5vdWdo Cj4gPiA+IFZDUEkgCj4gPiA+IHNwYWNlLCBidXQgdGhlbiBJIHJlYWxpemVkIHRoYXQgd291bGRu J3QgbWF0dGVyIHNpbmNlIGlmIHdlJ3JlIG5vdCBhYmxlIHRvCj4gPiA+IGZpdAo+ID4gPiBvbmUg ZGlzcGxheSBpbnRvIHRoZSBWQ1BJIHdpdGggYSByZWR1Y2VkIHBibl9kaXYsIHRoYXQganVzdCBt ZWFucyBmaXR0aW5nCj4gPiA+IGJvdGgKPiA+ID4gZGlzcGxheXMgd2l0aCBhIHJlZHVjZWQgcGJu X2RpdiB3b3VsZCBhbHNvIGJlIGltcG9zc2libGUgOlAuCj4gPiA+IAo+ID4gCj4gPiBCdXQgdGhl biBpbiB0aGF0IGNhc2UsIGluIG9yZWRyIHRvIHJldHJ5IGF0IGxvd2VyIGxpbmsgcmF0ZXMsIGJv dGggdGhlc2UKPiA+IG1vbml0b3JzIHdpbGwKPiA+IGhhdmUgdG8gZHJvcCB0byB0aGUgbmV4dCBs b3dlciByZXNvbHV0aW9ucyB0byBmaXQgdGhlIHJlZHVjZWQgcGJuX2Rpdi4KPiAKPiBZZXAsIHRo YXQncyB0aGUgaWRlYSEgSW4gd2hpY2ggY2FzZSB0aGUgYXRvbWljIGNoZWNrIHNob3VsZCBmYWls LCB3aGljaCBzaG91bGQKPiBjYXVzZSB1c2Vyc3BhY2UgdG8gdHJ5IGF0IGEgcmVkdWNlZCByZXNv bHV0aW9uIG9yIHRha2Ugc29tZSBvdGhlciByZXBhcmF0aXZlCj4gYWN0aW9uCj4gPiAKPiA+IE1h bmFzaQo+ID4gIAo+ID4gPiA+IAo+ID4gPiA+IE1hbmFzaQo+ID4gPiA+ICAKPiA+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiA+ICAJLyogU3VwcHJlc3Mg dW5kZXJydW5zIGNhdXNlZCBieSByZS10cmFpbmluZyAqLwo+ID4gPiA+ID4gPiA+ID4gPiAgCWlu dGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIGNydGMtCj4gPiA+ ID4gPiA+ID4gPiA+ID4gcGlwZSwKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ IGZhbHNlKTsKPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTQyOTgsNTEgKzQzNjksNDkgQEAgaW50ZWxf ZHBfcmV0cmFpbl9saW5rKHN0cnVjdCBpbnRlbF9kcAo+ID4gPiA+ID4gPiA+ID4gPiAqaW50ZWxf ZHApCj4gPiA+ID4gPiA+ID4gPiA+ICAJaWYgKGNydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVy KQo+ID4gPiA+ID4gPiA+ID4gPiAgCQlpbnRlbF9zZXRfcGNoX2ZpZm9fdW5kZXJydW5fcmVwb3J0 aW5nKGRldl9wcmkKPiA+ID4gPiA+ID4gPiA+ID4gdiwKPiA+ID4gPiA+ID4gPiA+ID4gIAkJCQkJ CSAgICAgIGludGVsX2MKPiA+ID4gPiA+ID4gPiA+ID4gcnRjXwo+ID4gPiA+ID4gPiA+ID4gPiBw Y2hfCj4gPiA+ID4gPiA+ID4gPiA+IHRyYW5zY29kCj4gPiA+ID4gPiA+ID4gPiA+IGVyKGNydGMp LCB0cnVlKTsKPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiArCXJldHVybiAw Owo+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4g PiA+IC1zdGF0aWMgdm9pZAo+ID4gPiA+ID4gPiA+ID4gPiAtaW50ZWxfZHBfY2hlY2tfbGlua19z dGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gPiA+ID4gPiA+ID4gKy8qCj4g PiA+ID4gPiA+ID4gPiA+ICsgKiBJZiBkaXNwbGF5IGlzIG5vdyBjb25uZWN0ZWQgY2hlY2sgbGlu a3Mgc3RhdHVzLAo+ID4gPiA+ID4gPiA+ID4gPiArICogdGhlcmUgaGFzIGJlZW4ga25vd24gaXNz dWVzIG9mIGxpbmsgbG9zcyB0cmlnZ2VyaW5nCj4gPiA+ID4gPiA+ID4gPiA+ICsgKiBsb25nIHB1 bHNlLgo+ID4gPiA+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gPiA+ID4gKyAqIFNvbWUgc2lu a3MgKGVnLiBBU1VTIFBCMjg3USkgc2VlbSB0byBwZXJmb3JtIHNvbWUKPiA+ID4gPiA+ID4gPiA+ ID4gKyAqIHdlaXJkIEhQRCBwaW5nIHBvbmcgZHVyaW5nIG1vZGVzZXRzLiBTbyB3ZSBjYW4gYXBw YXJlbnRseQo+ID4gPiA+ID4gPiA+ID4gPiArICogZW5kIHVwIHdpdGggSFBEIGdvaW5nIGxvdyBk dXJpbmcgYSBtb2Rlc2V0LCBhbmQgdGhlbgo+ID4gPiA+ID4gPiA+ID4gPiArICogZ29pbmcgYmFj ayB1cCBzb29uIGFmdGVyLiBBbmQgb25jZSB0aGF0IGhhcHBlbnMgd2UgbXVzdAo+ID4gPiA+ID4g PiA+ID4gPiArICogcmV0cmFpbiB0aGUgbGluayB0byBnZXQgYSBwaWN0dXJlLiBUaGF0J3MgaW4g Y2FzZSBubwo+ID4gPiA+ID4gPiA+ID4gPiArICogdXNlcnNwYWNlIGNvbXBvbmVudCByZWFjdGVk IHRvIGludGVybWl0dGVudCBIUEQgZGlwLgo+ID4gPiA+ID4gPiA+ID4gPiArICovCj4gPiA+ID4g PiA+ID4gPiA+ICtzdGF0aWMgYm9vbCBpbnRlbF9kcF9ob3RwbHVnKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ID4gPiA+ID4gPiA+ID4gPiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yCj4gPiA+ID4gPiA+ID4gPiA+ICpjb25uZWN0b3IpCj4gPiA+ID4gPiA+ID4gPiA+ICB7 Cj4gPiA+ID4gPiA+ID4gPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0K PiA+ID4gPiA+ID4gPiA+ID4gdG9faTkxNShpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApKTsKPiA+ ID4gPiA+ID4gPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9Cj4g PiA+ID4gPiA+ID4gPiA+ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCktCj4gPiA+ID4gPiA+ID4g PiA+ID4gYmFzZTsKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IC0Jc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUgPQo+ID4gPiA+ID4gPiA+ID4gPiAtCQlp bnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yLT5iYXNlLnN0YXRlOwo+ID4gPiA+ID4gPiA+ID4g PiAtCXU4IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdOwo+ID4gPiA+ID4gPiA+ID4g PiAtCj4gPiA+ID4gPiA+ID4gPiA+IC0JV0FSTl9PTighZHJtX21vZGVzZXRfaXNfbG9ja2VkKCZk ZXZfcHJpdi0KPiA+ID4gPiA+ID4gPiA+ID4gPiBkcm0ubW9kZV9jb25maWcuY29ubmVjdGlvbl9t dXRleCkpOwo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4g PiA+ID4gPiAtCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKGludGVsX2RwLCBsaW5rX3N0 YXR1cykpCj4gPiA+ID4gPiA+ID4gPiA+IHsKPiA+ID4gPiA+ID4gPiA+ID4gLQkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gZ2V0IGxpbmsgc3RhdHVzXG4iKTsKPiA+ID4gPiA+ID4gPiA+ID4gLQkJcmV0 dXJuOwo+ID4gPiA+ID4gPiA+ID4gPiAtCX0KPiA+ID4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJt X21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ID4gPiA+ID4gPiA+ID4gPiArCWJvb2wgY2hhbmdl ZDsKPiA+ID4gPiA+ID4gPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ ID4gPiA+ID4gPiA+IC0JaWYgKCFjb25uX3N0YXRlLT5jcnRjKQo+ID4gPiA+ID4gPiA+ID4gPiAt CQlyZXR1cm47Cj4gPiA+ID4gPiA+ID4gPiA+ICsJY2hhbmdlZCA9IGludGVsX2VuY29kZXJfaG90 cGx1ZyhlbmNvZGVyLCBjb25uZWN0b3IpOwo+ID4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ ID4gPiA+IC0JV0FSTl9PTighZHJtX21vZGVzZXRfaXNfbG9ja2VkKCZjb25uX3N0YXRlLT5jcnRj LQo+ID4gPiA+ID4gPiA+ID4gPiA+IG11dGV4KSk7Cj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiA+ID4gPiA+ ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ID4gPiAtCWlmICghY29ubl9zdGF0ZS0+Y3J0Yy0+c3Rh dGUtPmFjdGl2ZSkKPiA+ID4gPiA+ID4gPiA+ID4gLQkJcmV0dXJuOwo+ID4gPiA+ID4gPiA+ID4g PiArCWZvciAoOzspIHsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEhlcmUgaWYgdGhpcyBpcyBn ZXR0aW5nIGV4ZWN1dGVkIGR1ZSB0byBocGQgcGluZyBwb25nIGR1cmluZyB0aGUKPiA+ID4gPiA+ ID4gbW9kZXNldAo+ID4gPiA+ID4gPiBhbmQgdGhhdCBtb2Rlc2V0IGlzIGFscmVhZHkgaGFwcGVu aW5nIGF0IGEgbGluayBmYWxsYmFjayBwYXJhbWV0ZXIKPiA+ID4gPiA+ID4gdGhlbgo+ID4gPiA+ ID4gPiB3aGlsZSB3ZSBjYWxsIHJldHJhaW4gbGluaywgd2Ugc2hvdWxkIGFsc28gdmFsaWRhdGUg dGhlIGxpbmsKPiA+ID4gPiA+ID4gcGFyYW1ldGVycwo+ID4gPiA+ID4gPiBzbyB0aGF0IGl0IGRv ZXNudCB0cnkgdG8gcmV0cmFpbiB3aXRoIHN0YWxlIHZhbHVlcy4KPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+IEkgdGhpbmsgd2UgbmVlZCB0byBjYWxsIGludGVsX2RwX2xpbmtfcGFyYW1zX3ZhbGlk KCkgYmVmb3JlIHJldHJhaW4uCgpJIG1pc3NlZCB0aGF0IGludGVsX2RwX3JldHJhaW5fbGluaygp IGRvZXMgY2FsbCBpbnRlbF9kcF9saW5rX3BhcmFtc192YWxpZCgpIHRocm91Z2gKaW50ZWxfZHBf bmVlZHNfcmV0cmFpbigpLiBTbyBpZ25vcmUgbXkgY29uY2VybiBhYm92ZS4KV2l0aCB0aGF0LAoK QWNrZWQtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+CgpNYW5h c2kKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ICsJCXJldCA9IGludGVsX2RwX3JldHJh aW5fbGluayhlbmNvZGVyLCAmY3R4KTsKPiA+ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ ID4gPiAtCWlmIChjb25uX3N0YXRlLT5jb21taXQgJiYKPiA+ID4gPiA+ID4gPiA+ID4gLQkgICAg IXRyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCZjb25uX3N0YXRlLT5jb21taXQtCj4gPiA+ID4gPiA+ ID4gPiA+ID4gaHdfZG9uZSkpCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiAt CQlyZXR1cm47Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiA+ ID4gPiA+ID4gPiA+ID4gKwkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPiA+ID4gPiA+ ID4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gPiA+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gPiA+ ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiA+IC0JLyoKPiA+ID4gPiA+ID4gPiA+ID4gLQkgKiBWYWxp ZGF0ZSB0aGUgY2FjaGVkIHZhbHVlcyBvZiBpbnRlbF9kcC0+bGlua19yYXRlCj4gPiA+ID4gPiA+ ID4gPiA+IGFuZAo+ID4gPiA+ID4gPiA+ID4gPiAtCSAqIGludGVsX2RwLT5sYW5lX2NvdW50IGJl Zm9yZSBhdHRlbXB0aW5nIHRvIHJldHJhaW4uCj4gPiA+ID4gPiA+ID4gPiA+IC0JICovCj4gPiA+ ID4gPiA+ID4gPiA+IC0JaWYgKCFpbnRlbF9kcF9saW5rX3BhcmFtc192YWxpZChpbnRlbF9kcCwg aW50ZWxfZHAtCj4gPiA+ID4gPiA+ID4gPiA+ID4gbGlua19yYXRlLAo+ID4gPiA+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiA+ID4gLQkJCQkJaW50ZWxfZHAtCj4gPiA+ID4gPiA+ID4gPiA+ID5s YW5lX2NvdW50KSkKPiA+ID4gPiA+ID4gPiA+ID4gLQkJcmV0dXJuOwo+ID4gPiA+ID4gPiA+ID4g PiArCQlicmVhazsKPiA+ID4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4gPiA+ICAKPiA+ ID4gPiA+ID4gPiA+ID4gLQkvKiBSZXRyYWluIGlmIENoYW5uZWwgRVEgb3IgQ1Igbm90IG9rICov Cj4gPiA+ID4gPiA+ID4gPiA+IC0JaWYgKCFkcm1fZHBfY2hhbm5lbF9lcV9vayhsaW5rX3N0YXR1 cywgaW50ZWxfZHAtCj4gPiA+ID4gPiA+ID4gPiA+ID4gbGFuZV9jb3VudCkpIAo+ID4gPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gewo+ID4gPiA+ID4gPiA+ID4gPiAtCQlEUk1fREVC VUdfS01TKCIlczogY2hhbm5lbCBFUSBub3Qgb2ssCj4gPiA+ID4gPiA+ID4gPiA+IHJldHJhaW5p bmdcbiIsCj4gPiA+ID4gPiA+ID4gPiA+IC0JCQkgICAgICBpbnRlbF9lbmNvZGVyLT5iYXNlLm5h bWUpOwo+ID4gPiA+ID4gPiA+ID4gPiArCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4g PiA+ID4gPiA+ID4gPiA+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ID4gPiA+ ID4gPiA+ID4gPiArCVdBUk4ocmV0LCAiQWNxdWlyaW5nIG1vZGVzZXQgbG9ja3MgZmFpbGVkIHdp dGggJWlcbiIsCj4gPiA+ID4gPiA+ID4gPiA+IHJldCk7Cj4gPiA+ID4gPiA+ID4gPiA+ICAKPiA+ ID4gPiA+ID4gPiA+ID4gLQkJaW50ZWxfZHBfcmV0cmFpbl9saW5rKGludGVsX2RwKTsKPiA+ID4g PiA+ID4gPiA+ID4gLQl9Cj4gPiA+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIGNoYW5nZWQ7Cj4gPiA+ ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+ID4gIC8q Cj4gPiA+ID4gPiA+ID4gPiA+IEBAIC00NDAwLDcgKzQ0NjksOSBAQCBpbnRlbF9kcF9zaG9ydF9w dWxzZShzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gPiA+ID4gPiA+ID4gKmludGVsX2RwKQo+ID4gPiA+ ID4gPiA+ID4gPiAgCQkJRFJNX0RFQlVHX0RSSVZFUigiQ1Agb3Igc2luayBzcGVjaWZpYwo+ID4g PiA+ID4gPiA+ID4gPiBpcnEKPiA+ID4gPiA+ID4gPiA+ID4gdW5oYW5kbGVkXG4iKTsKPiA+ID4g PiA+ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+ID4gLQlp bnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhpbnRlbF9kcCk7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJ LyogZGVmZXIgdG8gdGhlIGhvdHBsdWcgd29yayBmb3IgbGluayByZXRyYWluaW5nIGlmCj4gPiA+ ID4gPiA+ID4gPiA+IG5lZWRlZCAqLwo+ID4gPiA+ID4gPiA+ID4gPiArCWlmIChpbnRlbF9kcF9u ZWVkc19saW5rX3JldHJhaW4oaW50ZWxfZHApKQo+ID4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4g ZmFsc2U7Cj4gPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+ID4gIAlpZiAoaW50ZWxf ZHAtPmNvbXBsaWFuY2UudGVzdF90eXBlID09Cj4gPiA+ID4gPiA+ID4gPiA+IERQX1RFU1RfTElO S19UUkFJTklORykKPiA+ID4gPiA+ID4gPiA+ID4gewo+ID4gPiA+ID4gPiA+ID4gPiAgCQlEUk1f REVCVUdfS01TKCJMaW5rIFRyYWluaW5nIENvbXBsaWFuY2UgVGVzdAo+ID4gPiA+ID4gPiA+ID4g PiByZXF1ZXN0ZWRcbiIpOwo+ID4gPiA+ID4gPiA+ID4gPiBAQCAtNDc4NSwyMCArNDg1Niw2IEBA IGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiA+IGludGVsX2Nvbm5l Y3Rvcgo+ID4gPiA+ID4gPiA+ID4gPiAqY29ubmVjdG9yKQo+ID4gPiA+ID4gPiA+ID4gPiAgCQkg Ki8KPiA+ID4gPiA+ID4gPiA+ID4gIAkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25u ZWN0ZWQ7Cj4gPiA+ID4gPiA+ID4gPiA+ICAJCWdvdG8gb3V0Owo+ID4gPiA+ID4gPiA+ID4gPiAt CX0gZWxzZSB7Cj4gPiA+ID4gPiA+ID4gPiA+IC0JCS8qCj4gPiA+ID4gPiA+ID4gPiA+IC0JCSAq IElmIGRpc3BsYXkgaXMgbm93IGNvbm5lY3RlZCBjaGVjayBsaW5rcwo+ID4gPiA+ID4gPiA+ID4g PiBzdGF0dXMsCj4gPiA+ID4gPiA+ID4gPiA+IC0JCSAqIHRoZXJlIGhhcyBiZWVuIGtub3duIGlz c3VlcyBvZiBsaW5rIGxvc3MKPiA+ID4gPiA+ID4gPiA+ID4gdHJpZ2dlcnJpbmcKPiA+ID4gPiA+ ID4gPiA+ID4gLQkJICogbG9uZyBwdWxzZS4KPiA+ID4gPiA+ID4gPiA+ID4gLQkJICoKPiA+ID4g PiA+ID4gPiA+ID4gLQkJICogU29tZSBzaW5rcyAoZWcuIEFTVVMgUEIyODdRKSBzZWVtIHRvCj4g PiA+ID4gPiA+ID4gPiA+IHBlcmZvcm0KPiA+ID4gPiA+ID4gPiA+ID4gc29tZQo+ID4gPiA+ID4g PiA+ID4gPiAtCQkgKiB3ZWlyZCBIUEQgcGluZyBwb25nIGR1cmluZyBtb2Rlc2V0cy4gU28gd2UK PiA+ID4gPiA+ID4gPiA+ID4gY2FuCj4gPiA+ID4gPiA+ID4gPiA+IGFwcGFyZW50bHkKPiA+ID4g PiA+ID4gPiA+ID4gLQkJICogZW5kIHVwIHdpdGggSFBEIGdvaW5nIGxvdyBkdXJpbmcgYQo+ID4g PiA+ID4gPiA+ID4gPiBtb2Rlc2V0LAo+ID4gPiA+ID4gPiA+ID4gPiBhbmQKPiA+ID4gPiA+ID4g PiA+ID4gdGhlbgo+ID4gPiA+ID4gPiA+ID4gPiAtCQkgKiBnb2luZyBiYWNrIHVwIHNvb24gYWZ0 ZXIuIEFuZCBvbmNlIHRoYXQKPiA+ID4gPiA+ID4gPiA+ID4gaGFwcGVucyB3ZQo+ID4gPiA+ID4g PiA+ID4gPiBtdXN0Cj4gPiA+ID4gPiA+ID4gPiA+IC0JCSAqIHJldHJhaW4gdGhlIGxpbmsgdG8g Z2V0IGEgcGljdHVyZS4gVGhhdCdzCj4gPiA+ID4gPiA+ID4gPiA+IGluCj4gPiA+ID4gPiA+ID4g PiA+IGNhc2UKPiA+ID4gPiA+ID4gPiA+ID4gbm8KPiA+ID4gPiA+ID4gPiA+ID4gLQkJICogdXNl cnNwYWNlIGNvbXBvbmVudCByZWFjdGVkIHRvCj4gPiA+ID4gPiA+ID4gPiA+IGludGVybWl0dGVu dAo+ID4gPiA+ID4gPiA+ID4gPiBIUEQKPiA+ID4gPiA+ID4gPiA+ID4gZGlwLgo+ID4gPiA+ID4g PiA+ID4gPiAtCQkgKi8KPiA+ID4gPiA+ID4gPiA+ID4gLQkJaW50ZWxfZHBfY2hlY2tfbGlua19z dGF0dXMoaW50ZWxfZHApOwo+ID4gPiA+ID4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gPiA+ID4g IAo+ID4gPiA+ID4gPiA+ID4gPiAgCS8qCj4gPiA+ID4gPiA+ID4gPiA+IEBAIC01MzQwLDM3ICs1 Mzk3LDEwIEBAIGludGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ID4gaW50 ZWxfZGlnaXRhbF9wb3J0Cj4gPiA+ID4gPiA+ID4gPiA+ICppbnRlbF9kaWdfcG9ydCwgYm9vbCBs b25nX2hwZCkKPiA+ID4gPiA+ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4g PiA+ID4gPiA+ID4gIAlpZiAoIWludGVsX2RwLT5pc19tc3QpIHsKPiA+ID4gPiA+ID4gPiA+ID4g LQkJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiA+ID4gPiA+ID4gPiA+ID4g LQkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9kcC0KPiA+ID4gPiA+ ID4gPiA+ID4gPiBhdHRhY2hlZF9jb25uZWN0b3ItPmJhc2U7Cj4gPiA+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gPiAtCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiA+ID4gPiA+ID4g PiA+IC0JCWludCBpcmV0Owo+ID4gPiA+ID4gPiA+ID4gPiAtCQlib29sIGhhbmRsZWQgPSBmYWxz ZTsKPiA+ID4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiA+ID4gPiAtCQlkcm1fbW9kZXNldF9h Y3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiA+ID4gPiA+ID4gPiA+IC1yZXRyeToKPiA+ID4gPiA+ ID4gPiA+ID4gLQkJaXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRldl9wcml2LQo+ID4gPiA+ID4g PiA+ID4gPiA+IGRybS5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCAmY3R4KTsKPiA+ID4g PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IC0JCWlmIChpcmV0KQo+ID4gPiA+ID4gPiA+ ID4gPiAtCQkJZ290byBlcnI7Cj4gPiA+ID4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4gPiA+ID4g LQkJY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gPiA+ID4gPiA+ID4gPiA+IC0JCWlm IChjcnRjKSB7Cj4gPiA+ID4gPiA+ID4gPiA+IC0JCQlpcmV0ID0gZHJtX21vZGVzZXRfbG9jaygm Y3J0Yy0+bXV0ZXgsCj4gPiA+ID4gPiA+ID4gPiA+ICZjdHgpOwo+ID4gPiA+ID4gPiA+ID4gPiAt CQkJaWYgKGlyZXQpCj4gPiA+ID4gPiA+ID4gPiA+IC0JCQkJZ290byBlcnI7Cj4gPiA+ID4gPiA+ ID4gPiA+IC0JCX0KPiA+ID4gPiA+ID4gPiA+ID4gKwkJYm9vbCBoYW5kbGVkOwo+ID4gPiA+ID4g PiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiA+ICAJCWhhbmRsZWQgPSBpbnRlbF9kcF9zaG9ydF9w dWxzZShpbnRlbF9kcCk7Cj4gPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+ID4gLWVy cjoKPiA+ID4gPiA+ID4gPiA+ID4gLQkJaWYgKGlyZXQgPT0gLUVERUFETEspIHsKPiA+ID4gPiA+ ID4gPiA+ID4gLQkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPiA+ID4gPiA+ID4gPiA+ IC0JCQlnb3RvIHJldHJ5Owo+ID4gPiA+ID4gPiA+ID4gPiAtCQl9Cj4gPiA+ID4gPiA+ID4gPiA+ IC0KPiA+ID4gPiA+ID4gPiA+ID4gLQkJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+ ID4gPiA+ID4gPiA+ID4gLQkJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ID4gPiA+ ID4gPiA+ID4gPiAtCQlXQVJOKGlyZXQsICJBY3F1aXJpbmcgbW9kZXNldCBsb2NrcyBmYWlsZWQK PiA+ID4gPiA+ID4gPiA+ID4gd2l0aAo+ID4gPiA+ID4gPiA+ID4gPiAlaVxuIiwgaXJldCk7Cj4g PiA+ID4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4gPiA+ID4gIAkJLyogU2hvcnQgcHVsc2UgY2Fu IHNpZ25pZnkgbG9zcyBvZiBoZGNwCj4gPiA+ID4gPiA+ID4gPiA+IGF1dGhlbnRpY2F0aW9uICov Cj4gPiA+ID4gPiA+ID4gPiA+ICAJCWludGVsX2hkY3BfY2hlY2tfbGluayhpbnRlbF9kcC0KPiA+ ID4gPiA+ID4gPiA+ID4gPiBhdHRhY2hlZF9jb25uZWN0b3IpOwo+ID4gPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ID4gPiBAQCAtNjQwMCw3ICs2NDMwLDcg QEAgYm9vbCBpbnRlbF9kcF9pbml0KHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gPiBkcm1faTkxNV9w cml2YXRlCj4gPiA+ID4gPiA+ID4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gPiA+ID4gPiA+ID4gIAkJ CSAgICAgIkRQICVjIiwgcG9ydF9uYW1lKHBvcnQpKSkKPiA+ID4gPiA+ID4gPiA+ID4gIAkJZ290 byBlcnJfZW5jb2Rlcl9pbml0Owo+ID4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiA+ IC0JaW50ZWxfZW5jb2Rlci0+aG90cGx1ZyA9IGludGVsX2VuY29kZXJfaG90cGx1ZzsKPiA+ID4g PiA+ID4gPiA+ID4gKwlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxfZHBfaG90cGx1ZzsK PiA+ID4gPiA+ID4gPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9Cj4gPiA+ ID4gPiA+ID4gPiA+IGludGVsX2RwX2NvbXB1dGVfY29uZmlnOwo+ID4gPiA+ID4gPiA+ID4gPiAg CWludGVsX2VuY29kZXItPmdldF9od19zdGF0ZSA9IGludGVsX2RwX2dldF9od19zdGF0ZTsKPiA+ ID4gPiA+ID4gPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5nZXRfY29uZmlnID0gaW50ZWxfZHBfZ2V0 X2NvbmZpZzsKPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPiA+ID4gPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggNWVhMWRjM2Y2M2JmLi5kZGYyOGE0 NDJjZDcgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gPiA+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xNjExLDYgKzE2MTEsOCBAQCBpbnQK PiA+ID4gPiA+ID4gPiA+ID4gaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFsdWVz KHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+ID4gPiA+ ID4gPiA+ICAJCQkJCSAgICBpbnQgbGlua19yYXRlLAo+ID4gPiA+ID4gPiA+ID4gPiB1aW50OF90 Cj4gPiA+ID4gPiA+ID4gPiA+IGxhbmVfY291bnQpOwo+ID4gPiA+ID4gPiA+ID4gPiAgdm9pZCBp bnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4g PiA+ID4gPiA+ID4gPiAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVs X2RwICppbnRlbF9kcCk7Cj4gPiA+ID4gPiA+ID4gPiA+ICtpbnQgaW50ZWxfZHBfcmV0cmFpbl9s aW5rKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiA+ID4gPiA+ID4gPiArCQkJ ICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHgKPiA+ID4gPiA+ID4gPiA+ID4gKmN0eCk7 Cj4gPiA+ID4gPiA+ID4gPiA+ICB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLCBpbnQgbW9kZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ICB2b2lkIGludGVsX2Rw X2VuY29kZXJfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiA+ID4gPiA+ID4g PiA+ID4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kKHN0cnVjdCBpbnRlbF9lbmNvZGVy Cj4gPiA+ID4gPiA+ID4gPiA+ICppbnRlbF9lbmNvZGVyKTsKPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiAtLSAKPiA+ID4gPiA+ID4gPiBWaWxsZSBTeXJqw6Rsw6QKPiA+ID4gPiA+ID4gPiBJ bnRlbCBPVEMKPiA+ID4gPiA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+ID4gPiA+ID4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4g PiA+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+ID4gPiA+ID4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+ ID4gPiA+IAo+ID4gPiA+ID4gLS0gCj4gPiA+ID4gPiBDaGVlcnMsCj4gPiA+ID4gPiAJTHl1ZGUg UGF1bAo+ID4gPiAKPiA+ID4gLS0gCj4gPiA+IENoZWVycywKPiA+ID4gCUx5dWRlIFBhdWwKPiAt LSAKPiBDaGVlcnMsCj4gCUx5dWRlIFBhdWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==