From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH v6 3/5] drm/i915/gen11: Convert combo PHY logic to use new 'enum phy' namespace Date: Wed, 4 Sep 2019 07:57:26 -0700 Message-ID: <20190904145726.GO13677@mdroper-desk.amr.corp.intel.com> References: <20190709183934.445-1-matthew.d.roper@intel.com> <20190709183934.445-4-matthew.d.roper@intel.com> <875zm841pi.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5251989468 for ; Wed, 4 Sep 2019 14:57:27 +0000 (UTC) Content-Disposition: inline In-Reply-To: <875zm841pi.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMDQsIDIwMTkgYXQgMDQ6NDI6NDlQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gVHVlLCAwOSBKdWwgMjAxOSwgTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4gd3JvdGU6Cj4gPiBDb252ZXJ0IHRoZSBjb2RlIHRoYXQgb3BlcmF0ZXMgZGlyZWN0 bHkgb24gZ2VuMTEgY29tYm8gUEhZJ3MgdG8gdXNlIHRoZQo+ID4gbmV3IG5hbWVzcGFjZS4gIENv bWJvIFBIWSByZWdpc3RlcnMgYXJlIHRob3NlIG5hbWVkICJJQ0xfUE9SVF8qIiBwbHVzCj4gPiBJ Q0xfRFBIWV9DSEtOLgo+ID4KPiA+IE5vdGUgdGhhdCBhIGxvdCBvZiB0aGUgUEhZIHByb2dyYW1t aW5nIGhhcHBlbnMgaW4gdGhlIE1JUEkgRFNJIGNvZGUuCj4gPiBGb3IgY2xhcml0eSBJJ3ZlIGFk ZGVkIGEgZm9yX2VhY2hfZHNpX3BoeSgpIHRvIGxvb3Agb3ZlciB0aGUgcGh5cyB1c2VkCj4gPiBi eSBEU0kuICBTaW5jZSBEU0kgYWx3YXlzIHVzZXMgQSAmIEIgb24gZ2VuMTEsIHBvcnQ9cGh5IGlu IGFsbCBjYXNlcyBzbwo+ID4gaXQgZG9lc24ndCBhY3R1YWxseSBtYXR0ZXIgd2hpY2ggZm9ybSB3 ZSB1c2UgaW4gdGhlIERTSSBjb2RlLiAgSSd2ZSB1c2VkCj4gPiB0aGUgcGh5IGl0ZXJhdG9yIGlu IGNvZGUgdGhhdCdzIGV4cGxpY2l0bHkgd29ya2luZyB3aXRoIHRoZSBjb21ibyBQSFksCj4gPiBi dXQgbGVmdCB0aGUgcmVzdCBvZiB0aGUgRFNJIGNvZGUgdXNpbmcgdGhlIHBvcnQgaXRlcmF0b3Ig YW5kIG5hbWVzcGFjZQo+ID4gdG8gbWluaW1pemUgcGF0Y2ggZGVsdGFzLiAgV2UgY2FuIHN3aXRj aCB0aGUgcmVzdCBvZiB0aGUgRFNJIGNvZGUgb3Zlcgo+ID4gdG8gdXNlIHBoeSB0ZXJtaW5vbG9n eSBsYXRlciBpZiB0aGlzIHdpbmRzIHVwIGJlaW5nIHRvbyBjb25mdXNpbmcuCj4gCj4gT25lIGl0 c3ktYml0c3kgZGV0YWlsLCB3aGVyZSBkb2VzIHRoaXMgaW5pdGlhbGl6ZSBpbnRlbF9kc2ktPnBo eXM/Cj4gTG9va2luZyBhdCB0aGUgY29kZSwgSSdtIHRoaW5raW5nIG5vd2hlcmUuCgpBdCB0aGUg bW9tZW50IHdlJ3JlIHJlbHlpbmcgb24gdGhlIGZhY3QgdGhhdCBwb3J0PT1waHkgYWx3YXlzIGZv ciBEU0kgb24KdGhlIHBsYXRmb3JtcyB0aGlzIGNvZGUgYXBwbGllcyB0by4gIGludGVsX2RzaS0+ cG9ydHMgaXMgaW5pdGlhbGl6ZWQKCiAgICAgICAgaWYgKGRldl9wcml2LT52YnQuZHNpLmNvbmZp Zy0+ZHVhbF9saW5rKQogICAgICAgICAgICAgICAgaW50ZWxfZHNpLT5wb3J0cyA9IEJJVChQT1JU X0EpIHwgQklUKFBPUlRfQik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgaW50ZWxfZHNp LT5wb3J0cyA9IEJJVChwb3J0KTsKCmFuZCB0aGF0J3MgdW5pb25lZCB3aXRoIGludGVsX2RzaS0+ cGh5cwoKICAgICAgICAvKiBiaXQgbWFzayBvZiBwb3J0cyAodmx2IGRzaSkgb3IgcGh5cyAoaWNs IGRzaSkgYmVpbmcgZHJpdmVuICovCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgdTE2 IHBvcnRzOyAgICAgIC8qIFZMViBEU0kgKi8KICAgICAgICAgICAgICAgIHUxNiBwaHlzOyAgICAg ICAvKiBJQ0wgRFNJICovCiAgICAgICAgfTsKCnNvIEkgdGhpbmsgdGhlIGluaXRpYWxpemF0aW9u IHNob3VsZCBiZSB0aGUgc2FtZSBhcyBpdCB3YXMgYmVmb3JlIHRoaXMgcGF0Y2guCgpBcyBJIG1l bnRpb25lZCBhYm92ZSwgdGhpcyBwYXRjaCBvbmx5IGNoYW5nZXMgdGhlIGluc3RhbmNlcyBvZiAn ZW51bSBwb3J0JyB0bwonZW51bSBwaHknIHdoZXJlIHRoZXkgd2VyZSBzcGVjaWZpY2FsbHkgdG91 Y2hpbmcgdGhlIGNvbWJvIFBIWSByZWdpc3RlcnMsIGFuZApsZWZ0IGEgYnVuY2ggb2YgdGhlIG90 aGVyIGNvZGUgdXNpbmcgJ2VudW0gcG9ydCcgdG8gbWluaW1pemUgdGhlIGluaXRpYWwgY29kZQpk aWZmcy4gIEl0J3MgcHJvYmFibHkgdGltZSBub3cgdG8gZm9sbG93IHVwIHdpdGggYW5vdGhlciBw YXRjaCB0aGF0IGNvbnZlcnRzCnRoZSByZXN0IG9mIHRoZSBmaWxlIHRvIHBoeSB1c2FnZSB0byBh dm9pZCBjb25mdXNpb247IEknbGwgd3JpdGUgYSBwYXRjaCB0byBkbwp0aGF0IGxhdGVyIHRvZGF5 IG9yIHRvbW9ycm93LgoKPiAKPiBXZSBoYXZlIGFuIElDTCBEU0kgbWFjaGluZSBpbiBDSSwgd2hp Y2ggcmVwb3J0cyBhbGwgZ3JlZW4gb24gdGhpcwo+IHBhdGNoLi4uIGJ1dCBtb3N0IGxpa2VseSB0 aGUgZGlzcGxheSBpcyBhbGwgYmxhY2sgaW5zdGVhZC4gRFNJIGJlaW5nCj4gRFNJLCBpdCBpcyBl bnRpcmVseSBwb3NzaWJsZSB3ZSBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdpdGhvdXQgaGF2aW5n IGEKPiBjYW1lcmEgY2FwdHVyZSB0aGUgZGlzcGxheS4KCkhtbS4gIEFsbCBncmVlbiBhbGwgdGhl IHRpbWUgb3Igb25seSBvbiBzcGVjaWZpYyB0ZXN0cy9vcGVyYXRpb25zPyAgSSBhc3N1bWUKdGhp cyBpcyBodHRwczovL2ludGVsLWdmeC1jaS4wMS5vcmcvaGFyZHdhcmUvZmktaWNsLWRzaS8gPyAg U3RyYW5nZWx5IEkgZG9uJ3QKc2VlIGFuIGk5MTVfZGlzcGxheV9pbmZvIGZvciB0aGF0IG1hY2hp bmUsIGJ1dCB0aGUgY3VycmVudCBDSSByZXN1bHRzIHNlZW0gdG8KYmUgbW9zdGx5IHBhc3Npbmcu ICBJcyB0aGVyZSBhIHNwZWNpZmljIGZhaWxpbmcgdGVzdCBJIHNob3VsZCBsb29rIGF0PwoKCk1h dHQKCj4gCj4gQlIsCj4gSmFuaS4KPiAKPiAKPiA+Cj4gPiB2NjogRHJvcCBhbiBpbmNsdWRlIG9m IGRybS9pOTE1X2RybS5oOyB0aGF0IHdhcyBwcmV2aW91c2x5IGluY2x1ZGVkIGp1c3QKPiA+ICAg ICBmb3IgdGhlIGRlZmluaXRpb24gb2YgJ2VudW0gcG9ydCcgd2hpY2ggdGhpcyBwYXRjaCByZW1v dmVzIHRoZSBuZWVkCj4gPiAgICAgZm9yLiAgKEpvc2UpCj4gPgo+ID4gQ2M6IEpvc8OpIFJvYmVy dG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogTWF0 dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiA+IFJldmlld2VkLWJ5OiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gUmV2aWV3ZWQt Ynk6IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+ID4gLS0t Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMgICAgICAgIHwgMTI3 ICsrKysrKysrLS0tLS0tLS0KPiA+ICAuLi4vZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29t Ym9fcGh5LmMgICAgfCAxNDMgKysrKysrKysrLS0tLS0tLS0tCj4gPiAgLi4uL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2NvbWJvX3BoeS5oICAgIHwgICA0ICstCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyAgICAgIHwgIDQ1ICsrKy0tLQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oICB8ICAgNCArCj4gPiAgLi4u L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jICAgIHwgIDE2ICstCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2kuaCAgICAgIHwgIDEyICstCj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgICAgIHwgIDc0ICsr KystLS0tLQo+ID4gIDggZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDIxMiBkZWxl dGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pY2xfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYwo+ID4g aW5kZXggOGYxMzI0YzJmNTM5Li40ZDk1MmFjY2ZhYWEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pY2xfZHNpLmMKPiA+IEBAIC0yMDIsNjMgKzIwMiw2MiBAQCBzdGF0aWMg dm9pZCBkc2lfcHJvZ3JhbV9zd2luZ19hbmRfZGVlbXBoYXNpcyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfZHNpICpp bnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiA+IC0JZW51bSBw b3J0IHBvcnQ7Cj4gPiArCWVudW0gcGh5IHBoeTsKPiA+ICAJdTMyIHRtcDsKPiA+ICAJaW50IGxh bmU7Cj4gPiAgCj4gPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMp IHsKPiA+IC0KPiA+ICsJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ ID4gIAkJLyoKPiA+ICAJCSAqIFByb2dyYW0gdm9sdGFnZSBzd2luZyBhbmQgcHJlLWVtcGhhc2lz IGxldmVsIHZhbHVlcyBhcyBwZXIKPiA+ICAJCSAqIHRhYmxlIGluIEJTUEVDIHVuZGVyIERESSBi dWZmZXIgcHJvZ3JhbWluZwo+ID4gIAkJICovCj4gPiAtCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BP UlRfVFhfRFc1X0xOMChwb3J0KSk7Cj4gPiArCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhf RFc1X0xOMChwaHkpKTsKPiA+ICAJCXRtcCAmPSB+KFNDQUxJTkdfTU9ERV9TRUxfTUFTSyB8IFJU RVJNX1NFTEVDVF9NQVNLKTsKPiA+ICAJCXRtcCB8PSBTQ0FMSU5HX01PREVfU0VMKDB4Mik7Cj4g PiAgCQl0bXAgfD0gVEFQMl9ESVNBQkxFIHwgVEFQM19ESVNBQkxFOwo+ID4gIAkJdG1wIHw9IFJU RVJNX1NFTEVDVCgweDYpOwo+ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfR1JQKHBv cnQpLCB0bXApOwo+ID4gKwkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfR1JQKHBoeSksIHRt cCk7Cj4gPiAgCj4gPiAtCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0FVWChwb3J0 KSk7Cj4gPiArCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0FVWChwaHkpKTsKPiA+ ICAJCXRtcCAmPSB+KFNDQUxJTkdfTU9ERV9TRUxfTUFTSyB8IFJURVJNX1NFTEVDVF9NQVNLKTsK PiA+ICAJCXRtcCB8PSBTQ0FMSU5HX01PREVfU0VMKDB4Mik7Cj4gPiAgCQl0bXAgfD0gVEFQMl9E SVNBQkxFIHwgVEFQM19ESVNBQkxFOwo+ID4gIAkJdG1wIHw9IFJURVJNX1NFTEVDVCgweDYpOwo+ ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfQVVYKHBvcnQpLCB0bXApOwo+ID4gKwkJ STkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfQVVYKHBoeSksIHRtcCk7Cj4gPiAgCj4gPiAtCQl0 bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gPiArCQl0bXAgPSBJ OTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0xOMChwaHkpKTsKPiA+ICAJCXRtcCAmPSB+KFNXSU5H X1NFTF9MT1dFUl9NQVNLIHwgU1dJTkdfU0VMX1VQUEVSX01BU0sgfAo+ID4gIAkJCSBSQ09NUF9T Q0FMQVJfTUFTSyk7Cj4gPiAgCQl0bXAgfD0gU1dJTkdfU0VMX1VQUEVSKDB4Mik7Cj4gPiAgCQl0 bXAgfD0gU1dJTkdfU0VMX0xPV0VSKDB4Mik7Cj4gPiAgCQl0bXAgfD0gUkNPTVBfU0NBTEFSKDB4 OTgpOwo+ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzJfR1JQKHBvcnQpLCB0bXApOwo+ ID4gKwkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzJfR1JQKHBoeSksIHRtcCk7Cj4gPiAgCj4g PiAtCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0FVWChwb3J0KSk7Cj4gPiArCQl0 bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0FVWChwaHkpKTsKPiA+ICAJCXRtcCAmPSB+ KFNXSU5HX1NFTF9MT1dFUl9NQVNLIHwgU1dJTkdfU0VMX1VQUEVSX01BU0sgfAo+ID4gIAkJCSBS Q09NUF9TQ0FMQVJfTUFTSyk7Cj4gPiAgCQl0bXAgfD0gU1dJTkdfU0VMX1VQUEVSKDB4Mik7Cj4g PiAgCQl0bXAgfD0gU1dJTkdfU0VMX0xPV0VSKDB4Mik7Cj4gPiAgCQl0bXAgfD0gUkNPTVBfU0NB TEFSKDB4OTgpOwo+ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzJfQVVYKHBvcnQpLCB0 bXApOwo+ID4gKwkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzJfQVVYKHBoeSksIHRtcCk7Cj4g PiAgCj4gPiAtCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0FVWChwb3J0KSk7Cj4g PiArCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0FVWChwaHkpKTsKPiA+ICAJCXRt cCAmPSB+KFBPU1RfQ1VSU09SXzFfTUFTSyB8IFBPU1RfQ1VSU09SXzJfTUFTSyB8Cj4gPiAgCQkJ IENVUlNPUl9DT0VGRl9NQVNLKTsKPiA+ICAJCXRtcCB8PSBQT1NUX0NVUlNPUl8xKDB4MCk7Cj4g PiAgCQl0bXAgfD0gUE9TVF9DVVJTT1JfMigweDApOwo+ID4gIAkJdG1wIHw9IENVUlNPUl9DT0VG RigweDNmKTsKPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0X0FVWChwb3J0KSwgdG1w KTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0X0FVWChwaHkpLCB0bXApOwo+ID4g IAo+ID4gIAkJZm9yIChsYW5lID0gMDsgbGFuZSA8PSAzOyBsYW5lKyspIHsKPiA+ICAJCQkvKiBC c3BlYzogbXVzdCBub3QgdXNlIEdSUCByZWdpc3RlciBmb3Igd3JpdGUgKi8KPiA+IC0JCQl0bXAg PSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxhbmUsIHBvcnQpKTsKPiA+ICsJCQl0bXAg PSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxhbmUsIHBoeSkpOwo+ID4gIAkJCXRtcCAm PSB+KFBPU1RfQ1VSU09SXzFfTUFTSyB8IFBPU1RfQ1VSU09SXzJfTUFTSyB8Cj4gPiAgCQkJCSBD VVJTT1JfQ09FRkZfTUFTSyk7Cj4gPiAgCQkJdG1wIHw9IFBPU1RfQ1VSU09SXzEoMHgwKTsKPiA+ ICAJCQl0bXAgfD0gUE9TVF9DVVJTT1JfMigweDApOwo+ID4gIAkJCXRtcCB8PSBDVVJTT1JfQ09F RkYoMHgzZik7Cj4gPiAtCQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzRfTE4obGFuZSwgcG9y dCksIHRtcCk7Cj4gPiArCQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzRfTE4obGFuZSwgcGh5 KSwgdG1wKTsKPiA+ICAJCX0KPiA+ICAJfQo+ID4gIH0KPiA+IEBAIC0zNjQsMTAgKzM2MywxMCBA QCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfcG93ZXJfdXBfbGFuZXMoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX2RzaSAq aW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAtCWVudW0g cG9ydCBwb3J0Owo+ID4gKwllbnVtIHBoeSBwaHk7Cj4gPiAgCj4gPiAtCWZvcl9lYWNoX2RzaV9w b3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpCj4gPiAtCQlpbnRlbF9jb21ib19waHlfcG93ZXJf dXBfbGFuZXMoZGV2X3ByaXYsIHBvcnQsIHRydWUsCj4gPiArCWZvcl9lYWNoX2RzaV9waHkocGh5 LCBpbnRlbF9kc2ktPnBoeXMpCj4gPiArCQlpbnRlbF9jb21ib19waHlfcG93ZXJfdXBfbGFuZXMo ZGV2X3ByaXYsIHBoeSwgdHJ1ZSwKPiA+ICAJCQkJCSAgICAgICBpbnRlbF9kc2ktPmxhbmVfY291 bnQsIGZhbHNlKTsKPiA+ICB9Cj4gPiAgCj4gPiBAQCAtMzc1LDQ2ICszNzQsNDYgQEAgc3RhdGlj IHZvaWQgZ2VuMTFfZHNpX2NvbmZpZ19waHlfbGFuZXNfc2VxdWVuY2Uoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX2Rz aSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAtCWVu dW0gcG9ydCBwb3J0Owo+ID4gKwllbnVtIHBoeSBwaHk7Cj4gPiAgCXUzMiB0bXA7Cj4gPiAgCWlu dCBsYW5lOwo+ID4gIAo+ID4gIAkvKiBTdGVwIDRiKGkpIHNldCBsb2FkZ2VuIHNlbGVjdCBmb3Ig dHJhbnNtaXQgYW5kIGF1eCBsYW5lcyAqLwo+ID4gLQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBp bnRlbF9kc2ktPnBvcnRzKSB7Cj4gPiAtCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0 X0FVWChwb3J0KSk7Cj4gPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMp IHsKPiA+ICsJCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzRfQVVYKHBoeSkpOwo+ID4g IAkJdG1wICY9IH5MT0FER0VOX1NFTEVDVDsKPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhf RFc0X0FVWChwb3J0KSwgdG1wKTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0X0FV WChwaHkpLCB0bXApOwo+ID4gIAkJZm9yIChsYW5lID0gMDsgbGFuZSA8PSAzOyBsYW5lKyspIHsK PiA+IC0JCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxhbmUsIHBvcnQpKTsK PiA+ICsJCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxhbmUsIHBoeSkpOwo+ ID4gIAkJCXRtcCAmPSB+TE9BREdFTl9TRUxFQ1Q7Cj4gPiAgCQkJaWYgKGxhbmUgIT0gMikKPiA+ ICAJCQkJdG1wIHw9IExPQURHRU5fU0VMRUNUOwo+ID4gLQkJCUk5MTVfV1JJVEUoSUNMX1BPUlRf VFhfRFc0X0xOKGxhbmUsIHBvcnQpLCB0bXApOwo+ID4gKwkJCUk5MTVfV1JJVEUoSUNMX1BPUlRf VFhfRFc0X0xOKGxhbmUsIHBoeSksIHRtcCk7Cj4gPiAgCQl9Cj4gPiAgCX0KPiA+ICAKPiA+ICAJ LyogU3RlcCA0YihpaSkgc2V0IGxhdGVuY3kgb3B0aW1pemF0aW9uIGZvciB0cmFuc21pdCBhbmQg YXV4IGxhbmVzICovCj4gPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9y dHMpIHsKPiA+IC0JCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzJfQVVYKHBvcnQpKTsK PiA+ICsJZm9yX2VhY2hfZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ID4gKwkJdG1w ID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXMl9BVVgocGh5KSk7Cj4gPiAgCQl0bXAgJj0gfkZS Q19MQVRFTkNZX09QVElNX01BU0s7Cj4gPiAgCQl0bXAgfD0gRlJDX0xBVEVOQ1lfT1BUSU1fVkFM KDB4NSk7Cj4gPiAtCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXMl9BVVgocG9ydCksIHRtcCk7 Cj4gPiAtCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gPiAr CQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXMl9BVVgocGh5KSwgdG1wKTsKPiA+ICsJCXRtcCA9 IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzJfTE4wKHBoeSkpOwo+ID4gIAkJdG1wICY9IH5GUkNf TEFURU5DWV9PUFRJTV9NQVNLOwo+ID4gIAkJdG1wIHw9IEZSQ19MQVRFTkNZX09QVElNX1ZBTCgw eDUpOwo+ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzJfR1JQKHBvcnQpLCB0bXApOwo+ ID4gKwkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzJfR1JQKHBoeSksIHRtcCk7Cj4gPiAgCj4g PiAgCQkvKiBGb3IgRUhMIHNldCBsYXRlbmN5IG9wdGltaXphdGlvbiBmb3IgUENTX0RXMSBsYW5l cyAqLwo+ID4gIAkJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSkgewo+ID4gLQkJCXRtcCA9 IEk5MTVfUkVBRChJQ0xfUE9SVF9QQ1NfRFcxX0FVWChwb3J0KSk7Cj4gPiArCQkJdG1wID0gSTkx NV9SRUFEKElDTF9QT1JUX1BDU19EVzFfQVVYKHBoeSkpOwo+ID4gIAkJCXRtcCAmPSB+TEFURU5D WV9PUFRJTV9NQVNLOwo+ID4gIAkJCXRtcCB8PSBMQVRFTkNZX09QVElNX1ZBTCgwKTsKPiA+IC0J CQlJOTE1X1dSSVRFKElDTF9QT1JUX1BDU19EVzFfQVVYKHBvcnQpLCB0bXApOwo+ID4gKwkJCUk5 MTVfV1JJVEUoSUNMX1BPUlRfUENTX0RXMV9BVVgocGh5KSwgdG1wKTsKPiA+ICAKPiA+IC0JCQl0 bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfUENTX0RXMV9MTjAocG9ydCkpOwo+ID4gKwkJCXRtcCA9 IEk5MTVfUkVBRChJQ0xfUE9SVF9QQ1NfRFcxX0xOMChwaHkpKTsKPiA+ICAJCQl0bXAgJj0gfkxB VEVOQ1lfT1BUSU1fTUFTSzsKPiA+ICAJCQl0bXAgfD0gTEFURU5DWV9PUFRJTV9WQUwoMHgxKTsK PiA+IC0JCQlJOTE1X1dSSVRFKElDTF9QT1JUX1BDU19EVzFfR1JQKHBvcnQpLCB0bXApOwo+ID4g KwkJCUk5MTVfV1JJVEUoSUNMX1BPUlRfUENTX0RXMV9HUlAocGh5KSwgdG1wKTsKPiA+ICAJCX0K PiA+ICAJfQo+ID4gIAo+ID4gQEAgLTQyNSwxNiArNDI0LDE2IEBAIHN0YXRpYyB2b2lkIGdlbjEx X2RzaV92b2x0YWdlX3N3aW5nX3Byb2dyYW1fc2VxKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5j X3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAgCXUzMiB0bXA7Cj4gPiAtCWVudW0g cG9ydCBwb3J0Owo+ID4gKwllbnVtIHBoeSBwaHk7Cj4gPiAgCj4gPiAgCS8qIGNsZWFyIGNvbW1v biBrZWVwZXIgZW5hYmxlIGJpdCAqLwo+ID4gLQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRl bF9kc2ktPnBvcnRzKSB7Cj4gPiAtCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfUENTX0RXMV9M TjAocG9ydCkpOwo+ID4gKwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7 Cj4gPiArCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfUENTX0RXMV9MTjAocGh5KSk7Cj4gPiAg CQl0bXAgJj0gfkNPTU1PTl9LRUVQRVJfRU47Cj4gPiAtCQlJOTE1X1dSSVRFKElDTF9QT1JUX1BD U19EVzFfR1JQKHBvcnQpLCB0bXApOwo+ID4gLQkJdG1wID0gSTkxNV9SRUFEKElDTF9QT1JUX1BD U19EVzFfQVVYKHBvcnQpKTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfUENTX0RXMV9HUlAo cGh5KSwgdG1wKTsKPiA+ICsJCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9QQ1NfRFcxX0FVWChw aHkpKTsKPiA+ICAJCXRtcCAmPSB+Q09NTU9OX0tFRVBFUl9FTjsKPiA+IC0JCUk5MTVfV1JJVEUo SUNMX1BPUlRfUENTX0RXMV9BVVgocG9ydCksIHRtcCk7Cj4gPiArCQlJOTE1X1dSSVRFKElDTF9Q T1JUX1BDU19EVzFfQVVYKHBoeSksIHRtcCk7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJLyoKPiA+IEBA IC00NDIsMzMgKzQ0MSwzMyBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfdm9sdGFnZV9zd2luZ19w cm9ncmFtX3NlcShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+ICAJICogTm90ZTog bG9hZGdlbiBzZWxlY3QgcHJvZ3JhbSBpcyBkb25lCj4gPiAgCSAqIGFzIHBhcnQgb2YgbGFuZSBw aHkgc2VxdWVuY2UgY29uZmlndXJhdGlvbgo+ID4gIAkgKi8KPiA+IC0JZm9yX2VhY2hfZHNpX3Bv cnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ID4gLQkJdG1wID0gSTkxNV9SRUFEKElDTF9Q T1JUX0NMX0RXNShwb3J0KSk7Cj4gPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2kt PnBoeXMpIHsKPiA+ICsJCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzUocGh5KSk7Cj4g PiAgCQl0bXAgfD0gU1VTX0NMT0NLX0NPTkZJRzsKPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BPUlRf Q0xfRFc1KHBvcnQpLCB0bXApOwo+ID4gKwkJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUocGh5 KSwgdG1wKTsKPiA+ICAJfQo+ID4gIAo+ID4gIAkvKiBDbGVhciB0cmFpbmluZyBlbmFibGUgdG8g Y2hhbmdlIHN3aW5nIHZhbHVlcyAqLwo+ID4gLQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRl bF9kc2ktPnBvcnRzKSB7Cj4gPiAtCQl0bXAgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0xO MChwb3J0KSk7Cj4gPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2ktPnBoeXMpIHsK PiA+ICsJCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBoeSkpOwo+ID4gIAkJ dG1wICY9IH5UWF9UUkFJTklOR19FTjsKPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1 X0dSUChwb3J0KSwgdG1wKTsKPiA+IC0JCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVf QVVYKHBvcnQpKTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwaHkpLCB0 bXApOwo+ID4gKwkJdG1wID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9BVVgocGh5KSk7Cj4g PiAgCQl0bXAgJj0gflRYX1RSQUlOSU5HX0VOOwo+ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9U WF9EVzVfQVVYKHBvcnQpLCB0bXApOwo+ID4gKwkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVf QVVYKHBoeSksIHRtcCk7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJLyogUHJvZ3JhbSBzd2luZyBhbmQg ZGUtZW1waGFzaXMgKi8KPiA+ICAJZHNpX3Byb2dyYW1fc3dpbmdfYW5kX2RlZW1waGFzaXMoZW5j b2Rlcik7Cj4gPiAgCj4gPiAgCS8qIFNldCB0cmFpbmluZyBlbmFibGUgdG8gdHJpZ2dlciB1cGRh dGUgKi8KPiA+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ ID4gLQkJdG1wID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOwo+ID4gKwlm b3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKSB7Cj4gPiArCQl0bXAgPSBJOTE1 X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0xOMChwaHkpKTsKPiA+ICAJCXRtcCB8PSBUWF9UUkFJTklO R19FTjsKPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdG1wKTsK PiA+IC0JCXRtcCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfQVVYKHBvcnQpKTsKPiA+ICsJ CUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwaHkpLCB0bXApOwo+ID4gKwkJdG1wID0g STkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9BVVgocGh5KSk7Cj4gPiAgCQl0bXAgfD0gVFhfVFJB SU5JTkdfRU47Cj4gPiAtCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9BVVgocG9ydCksIHRt cCk7Cj4gPiArCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9BVVgocGh5KSwgdG1wKTsKPiA+ ICAJfQo+ID4gIH0KPiA+ICAKPiA+IEBAIC00OTcsNiArNDk2LDcgQEAgc3RhdGljIHZvaWQgZ2Vu MTFfZHNpX3NldHVwX2RwaHlfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikK PiA+ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5j b2Rlci0+YmFzZSk7Cj4gPiAgCXUzMiB0bXA7Cj4gPiAgCWVudW0gcG9ydCBwb3J0Owo+ID4gKwll bnVtIHBoeSBwaHk7Cj4gPiAgCj4gPiAgCS8qIFByb2dyYW0gVC1JTklUIG1hc3RlciByZWdpc3Rl cnMgKi8KPiA+ICAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ ID4gQEAgLTU0NiwxMCArNTQ2LDEwIEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9zZXR1cF9kcGh5 X3RpbWluZ3Moc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPiAgCX0KPiA+ICAKPiA+ ICAJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSkgewo+ID4gLQkJZm9yX2VhY2hfZHNpX3Bv cnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ID4gLQkJCXRtcCA9IEk5MTVfUkVBRChJQ0xf RFBIWV9DSEtOKHBvcnQpKTsKPiA+ICsJCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9kc2kt PnBoeXMpIHsKPiA+ICsJCQl0bXAgPSBJOTE1X1JFQUQoSUNMX0RQSFlfQ0hLTihwaHkpKTsKPiA+ ICAJCQl0bXAgfD0gSUNMX0RQSFlfQ0hLTl9BRkVfT1ZFUl9QUElfU1RSQVA7Cj4gPiAtCQkJSTkx NV9XUklURShJQ0xfRFBIWV9DSEtOKHBvcnQpLCB0bXApOwo+ID4gKwkJCUk5MTVfV1JJVEUoSUNM X0RQSFlfQ0hLTihwaHkpLCB0bXApOwo+ID4gIAkJfQo+ID4gIAl9Cj4gPiAgfQo+ID4gQEAgLTU1 OSwxNSArNTU5LDEyIEBAIHN0YXRpYyB2b2lkIGdlbjExX2RzaV9nYXRlX2Nsb2NrcyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9k c2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ID4gIAl1 MzIgdG1wOwo+ID4gLQllbnVtIHBvcnQgcG9ydDsKPiA+ICAJZW51bSBwaHkgcGh5Owo+ID4gIAo+ ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiA+ICAJdG1wID0gSTkxNV9S RUFEKElDTF9EUENMS0FfQ0ZHQ1IwKTsKPiA+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50 ZWxfZHNpLT5wb3J0cykgewo+ID4gLQkJcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYs IHBvcnQpOwo+ID4gKwlmb3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKQo+ID4g IAkJdG1wIHw9IElDTF9EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZGKHBoeSk7Cj4gPiAtCX0KPiA+ ICAKPiA+ICAJSTkxNV9XUklURShJQ0xfRFBDTEtBX0NGR0NSMCwgdG1wKTsKPiA+ICAJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiA+IEBAIC01NzgsMTUgKzU3NSwxMiBAQCBz dGF0aWMgdm9pZCBnZW4xMV9kc2lfdW5nYXRlX2Nsb2NrcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9 IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ID4gIAl1MzIgdG1wOwo+ID4gLQll bnVtIHBvcnQgcG9ydDsKPiA+ICAJZW51bSBwaHkgcGh5Owo+ID4gIAo+ID4gIAltdXRleF9sb2Nr KCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiA+ICAJdG1wID0gSTkxNV9SRUFEKElDTF9EUENMS0Ff Q0ZHQ1IwKTsKPiA+IC0JZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykg ewo+ID4gLQkJcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIHBvcnQpOwo+ID4gKwlm b3JfZWFjaF9kc2lfcGh5KHBoeSwgaW50ZWxfZHNpLT5waHlzKQo+ID4gIAkJdG1wICY9IH5JQ0xf RFBDTEtBX0NGR0NSMF9ERElfQ0xLX09GRihwaHkpOwo+ID4gLQl9Cj4gPiAgCj4gPiAgCUk5MTVf V1JJVEUoSUNMX0RQQ0xLQV9DRkdDUjAsIHRtcCk7Cj4gPiAgCW11dGV4X3VubG9jaygmZGV2X3By aXYtPmRwbGxfbG9jayk7Cj4gPiBAQCAtNTk4LDIyICs1OTIsMTkgQEAgc3RhdGljIHZvaWQgZ2Vu MTFfZHNpX21hcF9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp Owo+ID4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZl bmNvZGVyLT5iYXNlKTsKPiA+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSBjcnRj X3N0YXRlLT5zaGFyZWRfZHBsbDsKPiA+IC0JZW51bSBwb3J0IHBvcnQ7Cj4gPiAgCWVudW0gcGh5 IHBoeTsKPiA+ICAJdTMyIHZhbDsKPiA+ICAKPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRw bGxfbG9jayk7Cj4gPiAgCj4gPiAgCXZhbCA9IEk5MTVfUkVBRChJQ0xfRFBDTEtBX0NGR0NSMCk7 Cj4gPiAtCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiA+IC0J CXBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBwb3J0KTsKPiA+ICsJZm9yX2VhY2hf ZHNpX3BoeShwaHksIGludGVsX2RzaS0+cGh5cykgewo+ID4gIAkJdmFsICY9IH5JQ0xfRFBDTEtB X0NGR0NSMF9ERElfQ0xLX1NFTF9NQVNLKHBoeSk7Cj4gPiAgCQl2YWwgfD0gSUNMX0RQQ0xLQV9D RkdDUjBfRERJX0NMS19TRUwocGxsLT5pbmZvLT5pZCwgcGh5KTsKPiA+ICAJfQo+ID4gIAlJOTE1 X1dSSVRFKElDTF9EUENMS0FfQ0ZHQ1IwLCB2YWwpOwo+ID4gIAo+ID4gLQlmb3JfZWFjaF9kc2lf cG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gPiAtCQlwaHkgPSBpbnRlbF9wb3J0X3Rv X3BoeShkZXZfcHJpdiwgcG9ydCk7Cj4gPiArCWZvcl9lYWNoX2RzaV9waHkocGh5LCBpbnRlbF9k c2ktPnBoeXMpIHsKPiA+ICAJCXZhbCAmPSB+SUNMX0RQQ0xLQV9DRkdDUjBfRERJX0NMS19PRkYo cGh5KTsKPiA+ICAJfQo+ID4gIAlJOTE1X1dSSVRFKElDTF9EUENMS0FfQ0ZHQ1IwLCB2YWwpOwo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9f cGh5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbWJvX3BoeS5jCj4g PiBpbmRleCBkM2Q1MjQ0NzY1ZTYuLmFjODIxOGEwNDBhYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29tYm9fcGh5LmMKPiA+IEBAIC02LDEzICs2 LDEzIEBACj4gPiAgI2luY2x1ZGUgImludGVsX2NvbWJvX3BoeS5oIgo+ID4gICNpbmNsdWRlICJp bnRlbF9kcnYuaCIKPiA+ICAKPiA+IC0jZGVmaW5lIGZvcl9lYWNoX2NvbWJvX3BvcnQoX19kZXZf cHJpdiwgX19wb3J0KSBcCj4gPiAtCWZvciAoKF9fcG9ydCkgPSBQT1JUX0E7IChfX3BvcnQpIDwg STkxNV9NQVhfUE9SVFM7IChfX3BvcnQpKyspCVwKPiA+IC0JCWZvcl9lYWNoX2lmKGludGVsX3Bv cnRfaXNfY29tYm9waHkoX19kZXZfcHJpdiwgX19wb3J0KSkKPiA+ICsjZGVmaW5lIGZvcl9lYWNo X2NvbWJvX3BoeShfX2Rldl9wcml2LCBfX3BoeSkgXAo+ID4gKwlmb3IgKChfX3BoeSkgPSBQSFlf QTsgKF9fcGh5KSA8IEk5MTVfTUFYX1BIWVM7IChfX3BoeSkrKykJXAo+ID4gKwkJZm9yX2VhY2hf aWYoaW50ZWxfcGh5X2lzX2NvbWJvKF9fZGV2X3ByaXYsIF9fcGh5KSkKPiA+ICAKPiA+IC0jZGVm aW5lIGZvcl9lYWNoX2NvbWJvX3BvcnRfcmV2ZXJzZShfX2Rldl9wcml2LCBfX3BvcnQpIFwKPiA+ IC0JZm9yICgoX19wb3J0KSA9IEk5MTVfTUFYX1BPUlRTOyAoX19wb3J0KS0tID4gUE9SVF9BOykg XAo+ID4gLQkJZm9yX2VhY2hfaWYoaW50ZWxfcG9ydF9pc19jb21ib3BoeShfX2Rldl9wcml2LCBf X3BvcnQpKQo+ID4gKyNkZWZpbmUgZm9yX2VhY2hfY29tYm9fcGh5X3JldmVyc2UoX19kZXZfcHJp diwgX19waHkpIFwKPiA+ICsJZm9yICgoX19waHkpID0gSTkxNV9NQVhfUEhZUzsgKF9fcGh5KS0t ID4gUEhZX0E7KSBcCj4gPiArCQlmb3JfZWFjaF9pZihpbnRlbF9waHlfaXNfY29tYm8oX19kZXZf cHJpdiwgX19waHkpKQo+ID4gIAo+ID4gIGVudW0gewo+ID4gIAlQUk9DTU9OXzBfODVWX0RPVF8w LAo+ID4gQEAgLTM4LDE4ICszOCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9wcm9jbW9u IHsKPiA+ICB9Owo+ID4gIAo+ID4gIC8qCj4gPiAtICogQ05MIGhhcyBqdXN0IG9uZSBzZXQgb2Yg cmVnaXN0ZXJzLCB3aGlsZSBJQ0wgaGFzIHR3byBzZXRzOiBvbmUgZm9yIHBvcnQgQSBhbmQKPiA+ IC0gKiB0aGUgb3RoZXIgZm9yIHBvcnQgQi4gVGhlIENOTCByZWdpc3RlcnMgYXJlIGVxdWl2YWxl bnQgdG8gdGhlIElDTCBwb3J0IEEKPiA+IC0gKiByZWdpc3RlcnMsIHRoYXQncyB3aHkgd2UgY2Fs bCB0aGUgSUNMIG1hY3JvcyBldmVuIHRob3VnaCB0aGUgZnVuY3Rpb24gaGFzIENOTAo+ID4gLSAq IG9uIGl0cyBuYW1lLgo+ID4gKyAqIENOTCBoYXMganVzdCBvbmUgc2V0IG9mIHJlZ2lzdGVycywg d2hpbGUgZ2VuMTEgaGFzIGEgc2V0IGZvciBlYWNoIGNvbWJvIFBIWS4KPiA+ICsgKiBUaGUgQ05M IHJlZ2lzdGVycyBhcmUgZXF1aXZhbGVudCB0byB0aGUgZ2VuMTEgUEhZIEEgcmVnaXN0ZXJzLCB0 aGF0J3Mgd2h5IHdlCj4gPiArICogY2FsbCB0aGUgSUNMIG1hY3JvcyBldmVuIHRob3VnaCB0aGUg ZnVuY3Rpb24gaGFzIENOTCBvbiBpdHMgbmFtZS4KPiA+ICAgKi8KPiA+ICBzdGF0aWMgY29uc3Qg c3RydWN0IGNubF9wcm9jbW9uICoKPiA+IC1jbmxfZ2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KQo+ID4gK2NubF9n ZXRfcHJvY21vbl9yZWZfdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg ZW51bSBwaHkgcGh5KQo+ID4gIHsKPiA+ICAJY29uc3Qgc3RydWN0IGNubF9wcm9jbW9uICpwcm9j bW9uOwo+ID4gIAl1MzIgdmFsOwo+ID4gIAo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRf Q09NUF9EVzMocG9ydCkpOwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzMo cGh5KSk7Cj4gPiAgCXN3aXRjaCAodmFsICYgKFBST0NFU1NfSU5GT19NQVNLIHwgVk9MVEFHRV9J TkZPX01BU0spKSB7Cj4gPiAgCWRlZmF1bHQ6Cj4gPiAgCQlNSVNTSU5HX0NBU0UodmFsKTsKPiA+ IEBAIC03NSwzMiArNzQsMzIgQEAgY25sX2dldF9wcm9jbW9uX3JlZl92YWx1ZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKPiA+ICB9Cj4gPiAgCj4g PiAgc3RhdGljIHZvaWQgY25sX3NldF9wcm9jbW9uX3JlZl92YWx1ZXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCQkgICAgICAgZW51bSBwb3J0IHBvcnQpCj4gPiAr CQkJCSAgICAgICBlbnVtIHBoeSBwaHkpCj4gPiAgewo+ID4gIAljb25zdCBzdHJ1Y3QgY25sX3By b2Ntb24gKnByb2Ntb247Cj4gPiAgCXUzMiB2YWw7Cj4gPiAgCj4gPiAtCXByb2Ntb24gPSBjbmxf Z2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcG9ydCk7Cj4gPiArCXByb2Ntb24gPSBj bmxfZ2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcGh5KTsKPiA+ICAKPiA+IC0JdmFs ID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcxKHBvcnQpKTsKPiA+ICsJdmFsID0gSTkxNV9S RUFEKElDTF9QT1JUX0NPTVBfRFcxKHBoeSkpOwo+ID4gIAl2YWwgJj0gfigoMHhmZiA8PCAxNikg fCAweGZmKTsKPiA+ICAJdmFsIHw9IHByb2Ntb24tPmR3MTsKPiA+IC0JSTkxNV9XUklURShJQ0xf UE9SVF9DT01QX0RXMShwb3J0KSwgdmFsKTsKPiA+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9DT01Q X0RXMShwaHkpLCB2YWwpOwo+ID4gIAo+ID4gLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFc5 KHBvcnQpLCBwcm9jbW9uLT5kdzkpOwo+ID4gLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFcx MChwb3J0KSwgcHJvY21vbi0+ZHcxMCk7Cj4gPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9E VzkocGh5KSwgcHJvY21vbi0+ZHc5KTsKPiA+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RX MTAocGh5KSwgcHJvY21vbi0+ZHcxMCk7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBib29sIGNo ZWNrX3BoeV9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCSAg ZW51bSBwb3J0IHBvcnQsIGk5MTVfcmVnX3QgcmVnLCB1MzIgbWFzaywKPiA+ICsJCQkgIGVudW0g cGh5IHBoeSwgaTkxNV9yZWdfdCByZWcsIHUzMiBtYXNrLAo+ID4gIAkJCSAgdTMyIGV4cGVjdGVk X3ZhbCkKPiA+ICB7Cj4gPiAgCXUzMiB2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiA+ICAKPiA+ICAJ aWYgKCh2YWwgJiBtYXNrKSAhPSBleHBlY3RlZF92YWwpIHsKPiA+IC0JCURSTV9ERUJVR19EUklW RVIoIlBvcnQgJWMgY29tYm8gUEhZIHJlZyAlMDh4IHN0YXRlIG1pc21hdGNoOiAiCj4gPiArCQlE Uk1fREVCVUdfRFJJVkVSKCJDb21ibyBQSFkgJWMgcmVnICUwOHggc3RhdGUgbWlzbWF0Y2g6ICIK PiA+ICAJCQkJICJjdXJyZW50ICUwOHggbWFzayAlMDh4IGV4cGVjdGVkICUwOHhcbiIsCj4gPiAt CQkJCSBwb3J0X25hbWUocG9ydCksCj4gPiArCQkJCSBwaHlfbmFtZShwaHkpLAo+ID4gIAkJCQkg cmVnLnJlZywgdmFsLCBtYXNrLCBleHBlY3RlZF92YWwpOwo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ ID4gIAl9Cj4gPiBAQCAtMTA5LDE4ICsxMDgsMTggQEAgc3RhdGljIGJvb2wgY2hlY2tfcGh5X3Jl ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgfQo+ID4gIAo+ID4gIHN0 YXRpYyBib29sIGNubF92ZXJpZnlfcHJvY21vbl9yZWZfdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiA+IC0JCQkJCSAgZW51bSBwb3J0IHBvcnQpCj4gPiArCQkJCQkg IGVudW0gcGh5IHBoeSkKPiA+ICB7Cj4gPiAgCWNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiAqcHJv Y21vbjsKPiA+ICAJYm9vbCByZXQ7Cj4gPiAgCj4gPiAtCXByb2Ntb24gPSBjbmxfZ2V0X3Byb2Nt b25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcG9ydCk7Cj4gPiArCXByb2Ntb24gPSBjbmxfZ2V0X3By b2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcGh5KTsKPiA+ICAKPiA+IC0JcmV0ID0gY2hlY2tf cGh5X3JlZyhkZXZfcHJpdiwgcG9ydCwgSUNMX1BPUlRfQ09NUF9EVzEocG9ydCksCj4gPiArCXJl dCA9IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYsIHBoeSwgSUNMX1BPUlRfQ09NUF9EVzEocGh5KSwK PiA+ICAJCQkgICAgKDB4ZmYgPDwgMTYpIHwgMHhmZiwgcHJvY21vbi0+ZHcxKTsKPiA+IC0JcmV0 ICY9IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYsIHBvcnQsIElDTF9QT1JUX0NPTVBfRFc5KHBvcnQp LAo+ID4gKwlyZXQgJj0gY2hlY2tfcGh5X3JlZyhkZXZfcHJpdiwgcGh5LCBJQ0xfUE9SVF9DT01Q X0RXOShwaHkpLAo+ID4gIAkJCSAgICAgLTFVLCBwcm9jbW9uLT5kdzkpOwo+ID4gLQlyZXQgJj0g Y2hlY2tfcGh5X3JlZyhkZXZfcHJpdiwgcG9ydCwgSUNMX1BPUlRfQ09NUF9EVzEwKHBvcnQpLAo+ ID4gKwlyZXQgJj0gY2hlY2tfcGh5X3JlZyhkZXZfcHJpdiwgcGh5LCBJQ0xfUE9SVF9DT01QX0RX MTAocGh5KSwKPiA+ICAJCQkgICAgIC0xVSwgcHJvY21vbi0+ZHcxMCk7Cj4gPiAgCj4gPiAgCXJl dHVybiByZXQ7Cj4gPiBAQCAtMTM0LDE1ICsxMzMsMTUgQEAgc3RhdGljIGJvb2wgY25sX2NvbWJv X3BoeV9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICAKPiA+ ICBzdGF0aWMgYm9vbCBjbmxfY29tYm9fcGh5X3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgewo+ID4gLQllbnVtIHBvcnQgcG9ydCA9IFBPUlRfQTsK PiA+ICsJZW51bSBwaHkgcGh5ID0gUEhZX0E7Cj4gPiAgCWJvb2wgcmV0Owo+ID4gIAo+ID4gIAlp ZiAoIWNubF9jb21ib19waHlfZW5hYmxlZChkZXZfcHJpdikpCj4gPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gPiAgCj4gPiAtCXJldCA9IGNubF92ZXJpZnlfcHJvY21vbl9yZWZfdmFsdWVzKGRldl9wcml2 LCBwb3J0KTsKPiA+ICsJcmV0ID0gY25sX3ZlcmlmeV9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3By aXYsIHBoeSk7Cj4gPiAgCj4gPiAtCXJldCAmPSBjaGVja19waHlfcmVnKGRldl9wcml2LCBwb3J0 LCBDTkxfUE9SVF9DTDFDTV9EVzUsCj4gPiArCXJldCAmPSBjaGVja19waHlfcmVnKGRldl9wcml2 LCBwaHksIENOTF9QT1JUX0NMMUNNX0RXNSwKPiA+ICAJCQkgICAgIENMX1BPV0VSX0RPV05fRU5B QkxFLCBDTF9QT1dFUl9ET1dOX0VOQUJMRSk7Cj4gPiAgCj4gPiAgCXJldHVybiByZXQ7Cj4gPiBA QCAtMTU3LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGNubF9jb21ib19waHlzX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAlJOTE1X1dSSVRFKENISUNLRU5fTUlT Q18yLCB2YWwpOwo+ID4gIAo+ID4gIAkvKiBEdW1teSBQT1JUX0EgdG8gZ2V0IHRoZSBjb3JyZWN0 IENOTCByZWdpc3RlciBmcm9tIHRoZSBJQ0wgbWFjcm8gKi8KPiA+IC0JY25sX3NldF9wcm9jbW9u X3JlZl92YWx1ZXMoZGV2X3ByaXYsIFBPUlRfQSk7Cj4gPiArCWNubF9zZXRfcHJvY21vbl9yZWZf dmFsdWVzKGRldl9wcml2LCBQSFlfQSk7Cj4gPiAgCj4gPiAgCXZhbCA9IEk5MTVfUkVBRChDTkxf UE9SVF9DT01QX0RXMCk7Cj4gPiAgCXZhbCB8PSBDT01QX0lOSVQ7Cj4gPiBAQCAtMTgxLDM5ICsx ODAsMzkgQEAgc3RhdGljIHZvaWQgY25sX2NvbWJvX3BoeXNfdW5pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIGJvb2wgaWNsX2Nv bWJvX3BoeV9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IC0J CQkJICBlbnVtIHBvcnQgcG9ydCkKPiA+ICsJCQkJICBlbnVtIHBoeSBwaHkpCj4gPiAgewo+ID4g IAkvKiBUaGUgUEhZIEMgYWRkZWQgYnkgRUhMIGhhcyBubyBQSFlfTUlTQyByZWdpc3RlciAqLwo+ ID4gLQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpICYmIHBvcnQgPT0gUE9SVF9DKQo+ID4g LQkJcmV0dXJuIEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSkgJiBDT01QX0lOSVQ7 Cj4gPiArCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikgJiYgcGh5ID09IFBIWV9DKQo+ID4g KwkJcmV0dXJuIEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwaHkpKSAmIENPTVBfSU5JVDsK PiA+ICAJZWxzZQo+ID4gLQkJcmV0dXJuICEoSTkxNV9SRUFEKElDTF9QSFlfTUlTQyhwb3J0KSkg Jgo+ID4gKwkJcmV0dXJuICEoSTkxNV9SRUFEKElDTF9QSFlfTUlTQyhwaHkpKSAmCj4gPiAgCQkJ IElDTF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOKSAmJgo+ID4gLQkJCShJOTE1X1JFQUQo SUNMX1BPUlRfQ09NUF9EVzAocG9ydCkpICYgQ09NUF9JTklUKTsKPiA+ICsJCQkoSTkxNV9SRUFE KElDTF9QT1JUX0NPTVBfRFcwKHBoeSkpICYgQ09NUF9JTklUKTsKPiA+ICB9Cj4gPiAgCj4gPiAg c3RhdGljIGJvb2wgaWNsX2NvbWJvX3BoeV92ZXJpZnlfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCQkgICAgICAgZW51bSBwb3J0IHBvcnQpCj4gPiArCQkJ CSAgICAgICBlbnVtIHBoeSBwaHkpCj4gPiAgewo+ID4gIAlib29sIHJldDsKPiA+ICAKPiA+IC0J aWYgKCFpY2xfY29tYm9fcGh5X2VuYWJsZWQoZGV2X3ByaXYsIHBvcnQpKQo+ID4gKwlpZiAoIWlj bF9jb21ib19waHlfZW5hYmxlZChkZXZfcHJpdiwgcGh5KSkKPiA+ICAJCXJldHVybiBmYWxzZTsK PiA+ICAKPiA+IC0JcmV0ID0gY25sX3ZlcmlmeV9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYs IHBvcnQpOwo+ID4gKwlyZXQgPSBjbmxfdmVyaWZ5X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJp diwgcGh5KTsKPiA+ICAKPiA+IC0JaWYgKHBvcnQgPT0gUE9SVF9BKQo+ID4gLQkJcmV0ICY9IGNo ZWNrX3BoeV9yZWcoZGV2X3ByaXYsIHBvcnQsIElDTF9QT1JUX0NPTVBfRFc4KHBvcnQpLAo+ID4g KwlpZiAocGh5ID09IFBIWV9BKQo+ID4gKwkJcmV0ICY9IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYs IHBoeSwgSUNMX1BPUlRfQ09NUF9EVzgocGh5KSwKPiA+ICAJCQkJICAgICBJUkVGR0VOLCBJUkVG R0VOKTsKPiA+ICAKPiA+IC0JcmV0ICY9IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYsIHBvcnQsIElD TF9QT1JUX0NMX0RXNShwb3J0KSwKPiA+ICsJcmV0ICY9IGNoZWNrX3BoeV9yZWcoZGV2X3ByaXYs IHBoeSwgSUNMX1BPUlRfQ0xfRFc1KHBoeSksCj4gPiAgCQkJICAgICBDTF9QT1dFUl9ET1dOX0VO QUJMRSwgQ0xfUE9XRVJfRE9XTl9FTkFCTEUpOwo+ID4gIAo+ID4gIAlyZXR1cm4gcmV0Owo+ID4g IH0KPiA+ICAKPiA+ICB2b2lkIGludGVsX2NvbWJvX3BoeV9wb3dlcl91cF9sYW5lcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAtCQkJCSAgICBlbnVtIHBvcnQgcG9ydCwg Ym9vbCBpc19kc2ksCj4gPiArCQkJCSAgICBlbnVtIHBoeSBwaHksIGJvb2wgaXNfZHNpLAo+ID4g IAkJCQkgICAgaW50IGxhbmVfY291bnQsIGJvb2wgbGFuZV9yZXZlcnNhbCkKPiA+ICB7Cj4gPiAg CXU4IGxhbmVfbWFzazsKPiA+IEBAIC0yNTgsMTAgKzI1NywxMCBAQCB2b2lkIGludGVsX2NvbWJv X3BoeV9wb3dlcl91cF9sYW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g PiAgCQl9Cj4gPiAgCX0KPiA+ICAKPiA+IC0JdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NMX0RX MTAocG9ydCkpOwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFcxMChwaHkpKTsK PiA+ICAJdmFsICY9IH5QV1JfRE9XTl9MTl9NQVNLOwo+ID4gIAl2YWwgfD0gbGFuZV9tYXNrIDw8 IFBXUl9ET1dOX0xOX1NISUZUOwo+ID4gLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NMX0RXMTAocG9y dCksIHZhbCk7Cj4gPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFcxMChwaHkpLCB2YWwpOwo+ ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdTMyIGVobF9jb21ib19waHlfYV9tdXgoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiB2YWwpCj4gPiBAQCAtMjkyLDE0ICsyOTEsMTQgQEAg c3RhdGljIHUzMiBlaGxfY29tYm9fcGh5X2FfbXV4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCB1MzIgdmFsKQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGljbF9jb21ib19waHlzX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIHsKPiA+IC0JZW51bSBwb3J0 IHBvcnQ7Cj4gPiArCWVudW0gcGh5IHBoeTsKPiA+ICAKPiA+IC0JZm9yX2VhY2hfY29tYm9fcG9y dChkZXZfcHJpdiwgcG9ydCkgewo+ID4gKwlmb3JfZWFjaF9jb21ib19waHkoZGV2X3ByaXYsIHBo eSkgewo+ID4gIAkJdTMyIHZhbDsKPiA+ICAKPiA+IC0JCWlmIChpY2xfY29tYm9fcGh5X3Zlcmlm eV9zdGF0ZShkZXZfcHJpdiwgcG9ydCkpIHsKPiA+IC0JCQlEUk1fREVCVUdfRFJJVkVSKCJQb3J0 ICVjIGNvbWJvIFBIWSBhbHJlYWR5IGVuYWJsZWQsIHdvbid0IHJlcHJvZ3JhbSBpdC5cbiIsCj4g PiAtCQkJCQkgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ICsJCWlmIChpY2xfY29tYm9fcGh5X3Zlcmlm eV9zdGF0ZShkZXZfcHJpdiwgcGh5KSkgewo+ID4gKwkJCURSTV9ERUJVR19EUklWRVIoIkNvbWJv IFBIWSAlYyBhbHJlYWR5IGVuYWJsZWQsIHdvbid0IHJlcHJvZ3JhbSBpdC5cbiIsCj4gPiArCQkJ CQkgcGh5X25hbWUocGh5KSk7Cj4gPiAgCQkJY29udGludWU7Cj4gPiAgCQl9Cj4gPiAgCj4gPiBA QCAtMzA4LDcgKzMwNyw3IEBAIHN0YXRpYyB2b2lkIGljbF9jb21ib19waHlzX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAkJICogcmVnaXN0ZXIgZm9yIGl0IGFu ZCBubyBuZWVkIHRvIHByb2dyYW0gdGhlCj4gPiAgCQkgKiBERV9JT19DT01QX1BXUl9ET1dOIHNl dHRpbmcgb24gUEhZIEMuCj4gPiAgCQkgKi8KPiA+IC0JCWlmIChJU19FTEtIQVJUTEFLRShkZXZf cHJpdikgJiYgcG9ydCA9PSBQT1JUX0MpCj4gPiArCQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3By aXYpICYmIHBoeSA9PSBQSFlfQykKPiA+ICAJCQlnb3RvIHNraXBfcGh5X21pc2M7Cj4gPiAgCj4g PiAgCQkvKgo+ID4gQEAgLTMxOSw1OSArMzE4LDU5IEBAIHN0YXRpYyB2b2lkIGljbF9jb21ib19w aHlzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAkJICogYmFz ZWQgb24gd2hldGhlciBvdXIgVkJUIGluZGljYXRlcyB0aGUgcHJlc2VuY2Ugb2YgYW55Cj4gPiAg CQkgKiAiaW50ZXJuYWwiIGNoaWxkIGRldmljZXMuCj4gPiAgCQkgKi8KPiA+IC0JCXZhbCA9IEk5 MTVfUkVBRChJQ0xfUEhZX01JU0MocG9ydCkpOwo+ID4gLQkJaWYgKElTX0VMS0hBUlRMQUtFKGRl dl9wcml2KSAmJiBwb3J0ID09IFBPUlRfQSkKPiA+ICsJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUEhZ X01JU0MocGh5KSk7Cj4gPiArCQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpICYmIHBoeSA9 PSBQSFlfQSkKPiA+ICAJCQl2YWwgPSBlaGxfY29tYm9fcGh5X2FfbXV4KGRldl9wcml2LCB2YWwp Owo+ID4gIAkJdmFsICY9IH5JQ0xfUEhZX01JU0NfREVfSU9fQ09NUF9QV1JfRE9XTjsKPiA+IC0J CUk5MTVfV1JJVEUoSUNMX1BIWV9NSVNDKHBvcnQpLCB2YWwpOwo+ID4gKwkJSTkxNV9XUklURShJ Q0xfUEhZX01JU0MocGh5KSwgdmFsKTsKPiA+ICAKPiA+ICBza2lwX3BoeV9taXNjOgo+ID4gLQkJ Y25sX3NldF9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBvcnQpOwo+ID4gKwkJY25sX3Nl dF9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBoeSk7Cj4gPiAgCj4gPiAtCQlpZiAocG9y dCA9PSBQT1JUX0EpIHsKPiA+IC0JCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzgo cG9ydCkpOwo+ID4gKwkJaWYgKHBoeSA9PSBQSFlfQSkgewo+ID4gKwkJCXZhbCA9IEk5MTVfUkVB RChJQ0xfUE9SVF9DT01QX0RXOChwaHkpKTsKPiA+ICAJCQl2YWwgfD0gSVJFRkdFTjsKPiA+IC0J CQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFc4KHBvcnQpLCB2YWwpOwo+ID4gKwkJCUk5MTVf V1JJVEUoSUNMX1BPUlRfQ09NUF9EVzgocGh5KSwgdmFsKTsKPiA+ICAJCX0KPiA+ICAKPiA+IC0J CXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSk7Cj4gPiArCQl2YWwgPSBJ OTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzAocGh5KSk7Cj4gPiAgCQl2YWwgfD0gQ09NUF9JTklU Owo+ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSwgdmFsKTsKPiA+ICsJ CUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzAocGh5KSwgdmFsKTsKPiA+ICAKPiA+IC0JCXZh bCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzUocG9ydCkpOwo+ID4gKwkJdmFsID0gSTkxNV9S RUFEKElDTF9QT1JUX0NMX0RXNShwaHkpKTsKPiA+ICAJCXZhbCB8PSBDTF9QT1dFUl9ET1dOX0VO QUJMRTsKPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFc1KHBvcnQpLCB2YWwpOwo+ID4g KwkJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUocGh5KSwgdmFsKTsKPiA+ICAJfQo+ID4gIH0K PiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBpY2xfY29tYm9fcGh5c191bmluaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIHsKPiA+IC0JZW51bSBwb3J0IHBvcnQ7Cj4gPiAr CWVudW0gcGh5IHBoeTsKPiA+ICAKPiA+IC0JZm9yX2VhY2hfY29tYm9fcG9ydF9yZXZlcnNlKGRl dl9wcml2LCBwb3J0KSB7Cj4gPiArCWZvcl9lYWNoX2NvbWJvX3BoeV9yZXZlcnNlKGRldl9wcml2 LCBwaHkpIHsKPiA+ICAJCXUzMiB2YWw7Cj4gPiAgCj4gPiAtCQlpZiAocG9ydCA9PSBQT1JUX0Eg JiYKPiA+IC0JCSAgICAhaWNsX2NvbWJvX3BoeV92ZXJpZnlfc3RhdGUoZGV2X3ByaXYsIHBvcnQp KQo+ID4gLQkJCURSTV9XQVJOKCJQb3J0ICVjIGNvbWJvIFBIWSBIVyBzdGF0ZSBjaGFuZ2VkIHVu ZXhwZWN0ZWRseVxuIiwKPiA+IC0JCQkJIHBvcnRfbmFtZShwb3J0KSk7Cj4gPiArCQlpZiAocGh5 ID09IFBIWV9BICYmCj4gPiArCQkgICAgIWljbF9jb21ib19waHlfdmVyaWZ5X3N0YXRlKGRldl9w cml2LCBwaHkpKQo+ID4gKwkJCURSTV9XQVJOKCJDb21ibyBQSFkgJWMgSFcgc3RhdGUgY2hhbmdl ZCB1bmV4cGVjdGVkbHlcbiIsCj4gPiArCQkJCSBwaHlfbmFtZShwaHkpKTsKPiA+ICAKPiA+ICAJ CS8qCj4gPiAgCQkgKiBBbHRob3VnaCBFSEwgYWRkcyBhIGNvbWJvIFBIWSBDLCB0aGVyZSdzIG5v IFBIWV9NSVNDCj4gPiAgCQkgKiByZWdpc3RlciBmb3IgaXQgYW5kIG5vIG5lZWQgdG8gcHJvZ3Jh bSB0aGUKPiA+ICAJCSAqIERFX0lPX0NPTVBfUFdSX0RPV04gc2V0dGluZyBvbiBQSFkgQy4KPiA+ ICAJCSAqLwo+ID4gLQkJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSAmJiBwb3J0ID09IFBP UlRfQykKPiA+ICsJCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikgJiYgcGh5ID09IFBIWV9D KQo+ID4gIAkJCWdvdG8gc2tpcF9waHlfbWlzYzsKPiA+ICAKPiA+IC0JCXZhbCA9IEk5MTVfUkVB RChJQ0xfUEhZX01JU0MocG9ydCkpOwo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QSFlfTUlT QyhwaHkpKTsKPiA+ICAJCXZhbCB8PSBJQ0xfUEhZX01JU0NfREVfSU9fQ09NUF9QV1JfRE9XTjsK PiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BIWV9NSVNDKHBvcnQpLCB2YWwpOwo+ID4gKwkJSTkxNV9X UklURShJQ0xfUEhZX01JU0MocGh5KSwgdmFsKTsKPiA+ICAKPiA+ICBza2lwX3BoeV9taXNjOgo+ ID4gLQkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcwKHBvcnQpKTsKPiA+ICsJCXZh bCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwaHkpKTsKPiA+ICAJCXZhbCAmPSB+Q09N UF9JTklUOwo+ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSwgdmFsKTsK PiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzAocGh5KSwgdmFsKTsKPiA+ICAJfQo+ ID4gIH0KPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NvbWJvX3BoeS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9j b21ib19waHkuaAo+ID4gaW5kZXggZTZlMTk1YTgzYjE5Li42NjA4ODZmODZjNTkgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbWJvX3BoeS5oCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbWJvX3BoeS5oCj4g PiBAQCAtNywxNCArNywxNCBAQAo+ID4gICNkZWZpbmUgX19JTlRFTF9DT01CT19QSFlfSF9fCj4g PiAgCj4gPiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gPiAtI2luY2x1ZGUgPGRybS9pOTE1 X2RybS5oPgo+ID4gIAo+ID4gIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ID4gK2VudW0gcGh5 Owo+ID4gIAo+ID4gIHZvaWQgaW50ZWxfY29tYm9fcGh5X2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPiA+ICB2b2lkIGludGVsX2NvbWJvX3BoeV91bmluaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICB2b2lkIGludGVsX2NvbWJvX3BoeV9w b3dlcl91cF9sYW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAtCQkJ CSAgICBlbnVtIHBvcnQgcG9ydCwgYm9vbCBpc19kc2ksCj4gPiArCQkJCSAgICBlbnVtIHBoeSBw aHksIGJvb2wgaXNfZHNpLAo+ID4gIAkJCQkgICAgaW50IGxhbmVfY291bnQsIGJvb2wgbGFuZV9y ZXZlcnNhbCk7Cj4gPiAgCj4gPiAgI2VuZGlmIC8qIF9fSU5URUxfQ09NQk9fUEhZX0hfXyAqLwo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gPiBpbmRleCBiNWJj MDBjNGUzZmUuLmQ5ZWE1ODAzODY0MiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGRpLmMKPiA+IEBAIC0yNDE0LDcgKzI0MTQsNyBAQCBzdGF0aWMgdm9pZCBj bmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgaWNsX2RkaV9jb21ib192c3dpbmdfcHJvZ3JhbShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAtCQkJCQl1MzIgbGV2ZWwsIGVu dW0gcG9ydCBwb3J0LCBpbnQgdHlwZSwKPiA+ICsJCQkJCXUzMiBsZXZlbCwgZW51bSBwaHkgcGh5 LCBpbnQgdHlwZSwKPiA+ICAJCQkJCWludCByYXRlKQo+ID4gIHsKPiA+ICAJY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0gTlVMTDsKPiA+IEBAIC0yNDMy LDQxICsyNDMyLDQxIEBAIHN0YXRpYyB2b2lkIGljbF9kZGlfY29tYm9fdnN3aW5nX3Byb2dyYW0o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAl9Cj4gPiAgCj4gPiAgCS8q IFNldCBQT1JUX1RYX0RXNSAqLwo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1 X0xOMChwb3J0KSk7Cj4gPiArCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBo eSkpOwo+ID4gIAl2YWwgJj0gfihTQ0FMSU5HX01PREVfU0VMX01BU0sgfCBSVEVSTV9TRUxFQ1Rf TUFTSyB8Cj4gPiAgCQkgIFRBUDJfRElTQUJMRSB8IFRBUDNfRElTQUJMRSk7Cj4gPiAgCXZhbCB8 PSBTQ0FMSU5HX01PREVfU0VMKDB4Mik7Cj4gPiAgCXZhbCB8PSBSVEVSTV9TRUxFQ1QoMHg2KTsK PiA+ICAJdmFsIHw9IFRBUDNfRElTQUJMRTsKPiA+IC0JSTkxNV9XUklURShJQ0xfUE9SVF9UWF9E VzVfR1JQKHBvcnQpLCB2YWwpOwo+ID4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAo cGh5KSwgdmFsKTsKPiA+ICAKPiA+ICAJLyogUHJvZ3JhbSBQT1JUX1RYX0RXMiAqLwo+ID4gLQl2 YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gPiArCXZhbCA9IEk5 MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzJfTE4wKHBoeSkpOwo+ID4gIAl2YWwgJj0gfihTV0lOR19T RUxfTE9XRVJfTUFTSyB8IFNXSU5HX1NFTF9VUFBFUl9NQVNLIHwKPiA+ICAJCSBSQ09NUF9TQ0FM QVJfTUFTSyk7Cj4gPiAgCXZhbCB8PSBTV0lOR19TRUxfVVBQRVIoZGRpX3RyYW5zbGF0aW9uc1ts ZXZlbF0uZHcyX3N3aW5nX3NlbCk7Cj4gPiAgCXZhbCB8PSBTV0lOR19TRUxfTE9XRVIoZGRpX3Ry YW5zbGF0aW9uc1tsZXZlbF0uZHcyX3N3aW5nX3NlbCk7Cj4gPiAgCS8qIFByb2dyYW0gUmNvbXAg c2NhbGFyIGZvciBldmVyeSB0YWJsZSBlbnRyeSAqLwo+ID4gIAl2YWwgfD0gUkNPTVBfU0NBTEFS KDB4OTgpOwo+ID4gLQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXMl9HUlAocG9ydCksIHZhbCk7 Cj4gPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFcyX0dSUChwaHkpLCB2YWwpOwo+ID4gIAo+ ID4gIAkvKiBQcm9ncmFtIFBPUlRfVFhfRFc0ICovCj4gPiAgCS8qIFdlIGNhbm5vdCB3cml0ZSB0 byBHUlAuIEl0IHdvdWxkIG92ZXJ3cml0ZSBpbmRpdmlkdWFsIGxvYWRnZW4uICovCj4gPiAgCWZv ciAobG4gPSAwOyBsbiA8PSAzOyBsbisrKSB7Cj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BP UlRfVFhfRFc0X0xOKGxuLCBwb3J0KSk7Cj4gPiArCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRf VFhfRFc0X0xOKGxuLCBwaHkpKTsKPiA+ICAJCXZhbCAmPSB+KFBPU1RfQ1VSU09SXzFfTUFTSyB8 IFBPU1RfQ1VSU09SXzJfTUFTSyB8Cj4gPiAgCQkJIENVUlNPUl9DT0VGRl9NQVNLKTsKPiA+ICAJ CXZhbCB8PSBQT1NUX0NVUlNPUl8xKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9wb3N0X2N1 cnNvcl8xKTsKPiA+ICAJCXZhbCB8PSBQT1NUX0NVUlNPUl8yKGRkaV90cmFuc2xhdGlvbnNbbGV2 ZWxdLmR3NF9wb3N0X2N1cnNvcl8yKTsKPiA+ICAJCXZhbCB8PSBDVVJTT1JfQ09FRkYoZGRpX3Ry YW5zbGF0aW9uc1tsZXZlbF0uZHc0X2N1cnNvcl9jb2VmZik7Cj4gPiAtCQlJOTE1X1dSSVRFKElD TF9QT1JUX1RYX0RXNF9MTihsbiwgcG9ydCksIHZhbCk7Cj4gPiArCQlJOTE1X1dSSVRFKElDTF9Q T1JUX1RYX0RXNF9MTihsbiwgcGh5KSwgdmFsKTsKPiA+ICAJfQo+ID4gIAo+ID4gIAkvKiBQcm9n cmFtIFBPUlRfVFhfRFc3ICovCj4gPiAtCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzdf TE4wKHBvcnQpKTsKPiA+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXN19MTjAocGh5 KSk7Cj4gPiAgCXZhbCAmPSB+Tl9TQ0FMQVJfTUFTSzsKPiA+ICAJdmFsIHw9IE5fU0NBTEFSKGRk aV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3N19uX3NjYWxhcik7Cj4gPiAtCUk5MTVfV1JJVEUoSUNM X1BPUlRfVFhfRFc3X0dSUChwb3J0KSwgdmFsKTsKPiA+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9U WF9EVzdfR1JQKHBoeSksIHZhbCk7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGljbF9j b21ib19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiA+IEBAIC0yNDc0LDcgKzI0NzQsNyBAQCBzdGF0aWMgdm9pZCBpY2xfY29tYm9fcGh5X2Rk aV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCQkJ CQkgICAgICBlbnVtIGludGVsX291dHB1dF90eXBlIHR5cGUpCj4gPiAgewo+ID4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK PiA+IC0JZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Owo+ID4gKwllbnVtIHBoeSBwaHkg PSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCk7Cj4gPiAgCWludCB3 aWR0aCA9IDA7Cj4gPiAgCWludCByYXRlID0gMDsKPiA+ICAJdTMyIHZhbDsKPiA+IEBAIC0yNDk1 LDEyICsyNDk1LDEyIEBAIHN0YXRpYyB2b2lkIGljbF9jb21ib19waHlfZGRpX3Zzd2luZ19zZXF1 ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJICogc2V0IFBPUlRfUENT X0RXMSBjbW5rZWVwZXJfZW5hYmxlIHRvIDFiLAo+ID4gIAkgKiBlbHNlIGNsZWFyIHRvIDBiLgo+ ID4gIAkgKi8KPiA+IC0JdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1BDU19EVzFfTE4wKHBvcnQp KTsKPiA+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1BDU19EVzFfTE4wKHBoeSkpOwo+ID4g IAlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkKPiA+ICAJCXZhbCAmPSB+Q09NTU9OX0tF RVBFUl9FTjsKPiA+ICAJZWxzZQo+ID4gIAkJdmFsIHw9IENPTU1PTl9LRUVQRVJfRU47Cj4gPiAt CUk5MTVfV1JJVEUoSUNMX1BPUlRfUENTX0RXMV9HUlAocG9ydCksIHZhbCk7Cj4gPiArCUk5MTVf V1JJVEUoSUNMX1BPUlRfUENTX0RXMV9HUlAocGh5KSwgdmFsKTsKPiA+ICAKPiA+ICAJLyogMi4g UHJvZ3JhbSBsb2FkZ2VuIHNlbGVjdCAqLwo+ID4gIAkvKgo+ID4gQEAgLTI1MTAsMzMgKzI1MTAs MzMgQEAgc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkgKiA+IDYgR0h6IChMTjA9MCwgTE4xPTAs IExOMj0wLCBMTjM9MCkKPiA+ICAJICovCj4gPiAgCWZvciAobG4gPSAwOyBsbiA8PSAzOyBsbisr KSB7Cj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxuLCBwb3J0KSk7 Cj4gPiArCQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKGxuLCBwaHkpKTsKPiA+ ICAJCXZhbCAmPSB+TE9BREdFTl9TRUxFQ1Q7Cj4gPiAgCj4gPiAgCQlpZiAoKHJhdGUgPD0gNjAw MDAwICYmIHdpZHRoID09IDQgJiYgbG4gPj0gMSkgfHwKPiA+ICAJCSAgICAocmF0ZSA8PSA2MDAw MDAgJiYgd2lkdGggPCA0ICYmIChsbiA9PSAxIHx8IGxuID09IDIpKSkgewo+ID4gIAkJCXZhbCB8 PSBMT0FER0VOX1NFTEVDVDsKPiA+ICAJCX0KPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhf RFc0X0xOKGxuLCBwb3J0KSwgdmFsKTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0 X0xOKGxuLCBwaHkpLCB2YWwpOwo+ID4gIAl9Cj4gPiAgCj4gPiAgCS8qIDMuIFNldCBQT1JUX0NM X0RXNSBTVVMgQ2xvY2sgQ29uZmlnIHRvIDExYiAqLwo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoSUNM X1BPUlRfQ0xfRFc1KHBvcnQpKTsKPiA+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NMX0RX NShwaHkpKTsKPiA+ICAJdmFsIHw9IFNVU19DTE9DS19DT05GSUc7Cj4gPiAtCUk5MTVfV1JJVEUo SUNMX1BPUlRfQ0xfRFc1KHBvcnQpLCB2YWwpOwo+ID4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX0NM X0RXNShwaHkpLCB2YWwpOwo+ID4gIAo+ID4gIAkvKiA0LiBDbGVhciB0cmFpbmluZyBlbmFibGUg dG8gY2hhbmdlIHN3aW5nIHZhbHVlcyAqLwo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRf VFhfRFc1X0xOMChwb3J0KSk7Cj4gPiArCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVf TE4wKHBoeSkpOwo+ID4gIAl2YWwgJj0gflRYX1RSQUlOSU5HX0VOOwo+ID4gLQlJOTE1X1dSSVRF KElDTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4gPiArCUk5MTVfV1JJVEUoSUNMX1BP UlRfVFhfRFc1X0dSUChwaHkpLCB2YWwpOwo+ID4gIAo+ID4gIAkvKiA1LiBQcm9ncmFtIHN3aW5n IGFuZCBkZS1lbXBoYXNpcyAqLwo+ID4gLQlpY2xfZGRpX2NvbWJvX3Zzd2luZ19wcm9ncmFtKGRl dl9wcml2LCBsZXZlbCwgcG9ydCwgdHlwZSwgcmF0ZSk7Cj4gPiArCWljbF9kZGlfY29tYm9fdnN3 aW5nX3Byb2dyYW0oZGV2X3ByaXYsIGxldmVsLCBwaHksIHR5cGUsIHJhdGUpOwo+ID4gIAo+ID4g IAkvKiA2LiBTZXQgdHJhaW5pbmcgZW5hYmxlIHRvIHRyaWdnZXIgdXBkYXRlICovCj4gPiAtCXZh bCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiA+ICsJdmFsID0gSTkx NV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocGh5KSk7Cj4gPiAgCXZhbCB8PSBUWF9UUkFJTklO R19FTjsKPiA+IC0JSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfR1JQKHBvcnQpLCB2YWwpOwo+ ID4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocGh5KSwgdmFsKTsKPiA+ICB9Cj4g PiAgCj4gPiAgc3RhdGljIHZvaWQgaWNsX21nX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gQEAgLTMxMjEsNiArMzEyMSw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ID4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZl bmNvZGVyLT5iYXNlKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiAgCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rl ci0+cG9ydDsKPiA+ICsJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYs IHBvcnQpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190 b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAgCWJvb2wgaXNfbXN0ID0gaW50ZWxfY3J0 Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFBfTVNUKTsKPiA+ICAJaW50IGxl dmVsID0gaW50ZWxfZGRpX2RwX2xldmVsKGludGVsX2RwKTsKPiA+IEBAIC0zMTU2LDcgKzMxNTcs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKPiA+ICAJCWJvb2wgbGFuZV9yZXZlcnNhbCA9Cj4gPiAgCQkJZGlnX3Bv cnQtPnNhdmVkX3BvcnRfYml0cyAmIERESV9CVUZfUE9SVF9SRVZFUlNBTDsKPiA+ICAKPiA+IC0J CWludGVsX2NvbWJvX3BoeV9wb3dlcl91cF9sYW5lcyhkZXZfcHJpdiwgcG9ydCwgZmFsc2UsCj4g PiArCQlpbnRlbF9jb21ib19waHlfcG93ZXJfdXBfbGFuZXMoZGV2X3ByaXYsIHBoeSwgZmFsc2Us Cj4gPiAgCQkJCQkgICAgICAgY3J0Y19zdGF0ZS0+bGFuZV9jb3VudCwKPiA+ICAJCQkJCSAgICAg ICBsYW5lX3JldmVyc2FsKTsKPiA+ICAJfQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmgKPiA+IGluZGV4IGQ1MzI4NWZiODgzZi4uOGE0YTU3ZWY4MmEy IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5oCj4gPiBAQCAtMjY4LDYgKzI2OCwxMCBAQCBlbnVtIHBoeSB7Cj4gPiAgCWZvciAoKF9fcG9y dCkgPSBQT1JUX0E7IChfX3BvcnQpIDwgSTkxNV9NQVhfUE9SVFM7IChfX3BvcnQpKyspCVwKPiA+ ICAJCWZvcl9lYWNoX2lmKChfX3BvcnRzX21hc2spICYgQklUKF9fcG9ydCkpCj4gPiAgCj4gPiAr I2RlZmluZSBmb3JfZWFjaF9waHlfbWFza2VkKF9fcGh5LCBfX3BoeXNfbWFzaykgXAo+ID4gKwlm b3IgKChfX3BoeSkgPSBQSFlfQTsgKF9fcGh5KSA8IEk5MTVfTUFYX1BIWVM7IChfX3BoeSkrKykJ XAo+ID4gKwkJZm9yX2VhY2hfaWYoKF9fcGh5c19tYXNrKSAmIEJJVChfX3BoeSkpCj4gPiArCj4g PiAgI2RlZmluZSBmb3JfZWFjaF9jcnRjKGRldiwgY3J0YykgXAo+ID4gIAlsaXN0X2Zvcl9lYWNo X2VudHJ5KGNydGMsICYoZGV2KS0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKQo+ID4gIAo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV9wb3dlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bv d2VyLmMKPiA+IGluZGV4IDc0MzdmYzcxZDI4OS4uYTI0ZDE4NTliMzdiIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5j Cj4gPiBAQCAtMzk3LDcgKzM5Nyw3IEBAIHN0YXRpYyB2b2lkIGhzd19wb3dlcl93ZWxsX2Rpc2Fi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAloc3dfd2FpdF9mb3Jf cG93ZXJfd2VsbF9kaXNhYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiA+ICB9Cj4gPiAgCj4g PiAtI2RlZmluZSBJQ0xfQVVYX1BXX1RPX1BPUlQocHdfaWR4KQkoKHB3X2lkeCkgLSBJQ0xfUFdf Q1RMX0lEWF9BVVhfQSkKPiA+ICsjZGVmaW5lIElDTF9BVVhfUFdfVE9fUEhZKHB3X2lkeCkJKChw d19pZHgpIC0gSUNMX1BXX0NUTF9JRFhfQVVYX0EpCj4gPiAgCj4gPiAgc3RhdGljIHZvaWQKPiA+ ICBpY2xfY29tYm9fcGh5X2F1eF9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiBAQCAtNDA1LDIxICs0MDUsMjEgQEAgaWNsX2NvbWJvX3BoeV9h dXhfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gIHsKPiA+ICAJY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9yZWdzICpyZWdzID0gcG93 ZXJfd2VsbC0+ZGVzYy0+aHN3LnJlZ3M7Cj4gPiAgCWludCBwd19pZHggPSBwb3dlcl93ZWxsLT5k ZXNjLT5oc3cuaWR4Owo+ID4gLQllbnVtIHBvcnQgcG9ydCA9IElDTF9BVVhfUFdfVE9fUE9SVChw d19pZHgpOwo+ID4gKwllbnVtIHBoeSBwaHkgPSBJQ0xfQVVYX1BXX1RPX1BIWShwd19pZHgpOwo+ ID4gIAl1MzIgdmFsOwo+ID4gIAo+ID4gIAl2YWwgPSBJOTE1X1JFQUQocmVncy0+ZHJpdmVyKTsK PiA+ICAJSTkxNV9XUklURShyZWdzLT5kcml2ZXIsIHZhbCB8IEhTV19QV1JfV0VMTF9DVExfUkVR KHB3X2lkeCkpOwo+ID4gIAo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFcxMihw b3J0KSk7Cj4gPiAtCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFcxMihwb3J0KSwgdmFsIHwgSUNM X0xBTkVfRU5BQkxFX0FVWCk7Cj4gPiArCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzEy KHBoeSkpOwo+ID4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX0NMX0RXMTIocGh5KSwgdmFsIHwgSUNM X0xBTkVfRU5BQkxFX0FVWCk7Cj4gPiAgCj4gPiAgCWhzd193YWl0X2Zvcl9wb3dlcl93ZWxsX2Vu YWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gPiAgCj4gPiAgCS8qIERpc3BsYXkgV0EgIzEx Nzg6IGljbCAqLwo+ID4gIAlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikgJiYKPiA+ICAJICAgIHB3 X2lkeCA+PSBJQ0xfUFdfQ1RMX0lEWF9BVVhfQSAmJiBwd19pZHggPD0gSUNMX1BXX0NUTF9JRFhf QVVYX0IgJiYKPiA+IC0JICAgICFpbnRlbF9iaW9zX2lzX3BvcnRfZWRwKGRldl9wcml2LCBwb3J0 KSkgewo+ID4gKwkgICAgIWludGVsX2Jpb3NfaXNfcG9ydF9lZHAoZGV2X3ByaXYsIChlbnVtIHBv cnQpcGh5KSkgewo+ID4gIAkJdmFsID0gSTkxNV9SRUFEKElDTF9BVVhfQU5BT1ZSRDEocHdfaWR4 KSk7Cj4gPiAgCQl2YWwgfD0gSUNMX0FVWF9BTkFPVlJEMV9FTkFCTEUgfCBJQ0xfQVVYX0FOQU9W UkQxX0xET19CWVBBU1M7Cj4gPiAgCQlJOTE1X1dSSVRFKElDTF9BVVhfQU5BT1ZSRDEocHdfaWR4 KSwgdmFsKTsKPiA+IEBAIC00MzIsMTEgKzQzMiwxMSBAQCBpY2xfY29tYm9fcGh5X2F1eF9wb3dl cl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIHsK PiA+ICAJY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9yZWdzICpyZWdzID0gcG93ZXJfd2Vs bC0+ZGVzYy0+aHN3LnJlZ3M7Cj4gPiAgCWludCBwd19pZHggPSBwb3dlcl93ZWxsLT5kZXNjLT5o c3cuaWR4Owo+ID4gLQllbnVtIHBvcnQgcG9ydCA9IElDTF9BVVhfUFdfVE9fUE9SVChwd19pZHgp Owo+ID4gKwllbnVtIHBoeSBwaHkgPSBJQ0xfQVVYX1BXX1RPX1BIWShwd19pZHgpOwo+ID4gIAl1 MzIgdmFsOwo+ID4gIAo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFcxMihwb3J0 KSk7Cj4gPiAtCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFcxMihwb3J0KSwgdmFsICYgfklDTF9M QU5FX0VOQUJMRV9BVVgpOwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFcxMihw aHkpKTsKPiA+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzEyKHBoeSksIHZhbCAmIH5JQ0xf TEFORV9FTkFCTEVfQVVYKTsKPiA+ICAKPiA+ICAJdmFsID0gSTkxNV9SRUFEKHJlZ3MtPmRyaXZl cik7Cj4gPiAgCUk5MTVfV1JJVEUocmVncy0+ZHJpdmVyLCB2YWwgJiB+SFNXX1BXUl9XRUxMX0NU TF9SRVEocHdfaWR4KSk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kc2kuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNp LmgKPiA+IGluZGV4IDZkMjA0MzQ2MzZjZC4uMWNkMjRiZDQ2NTE4IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2kuaAo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2kuaAo+ID4gQEAgLTQ5LDggKzQ5LDExIEBA IHN0cnVjdCBpbnRlbF9kc2kgewo+ID4gIAo+ID4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICph dHRhY2hlZF9jb25uZWN0b3I7Cj4gPiAgCj4gPiAtCS8qIGJpdCBtYXNrIG9mIHBvcnRzIGJlaW5n IGRyaXZlbiAqLwo+ID4gLQl1MTYgcG9ydHM7Cj4gPiArCS8qIGJpdCBtYXNrIG9mIHBvcnRzICh2 bHYgZHNpKSBvciBwaHlzIChpY2wgZHNpKSBiZWluZyBkcml2ZW4gKi8KPiA+ICsJdW5pb24gewo+ ID4gKwkJdTE2IHBvcnRzOwkvKiBWTFYgRFNJICovCj4gPiArCQl1MTYgcGh5czsJLyogSUNMIERT SSAqLwo+ID4gKwl9Owo+ID4gIAo+ID4gIAkvKiBpZiB0cnVlLCB1c2UgSFMgbW9kZSwgb3RoZXJ3 aXNlIExQICovCj4gPiAgCWJvb2wgaHM7Cj4gPiBAQCAtMTMyLDcgKzEzNSwxMCBAQCBzdGF0aWMg aW5saW5lIHN0cnVjdCBpbnRlbF9kc2lfaG9zdCAqdG9faW50ZWxfZHNpX2hvc3Qoc3RydWN0IG1p cGlfZHNpX2hvc3QgKmgpCj4gPiAgCXJldHVybiBjb250YWluZXJfb2YoaCwgc3RydWN0IGludGVs X2RzaV9ob3N0LCBiYXNlKTsKPiA+ICB9Cj4gPiAgCj4gPiAtI2RlZmluZSBmb3JfZWFjaF9kc2lf cG9ydChfX3BvcnQsIF9fcG9ydHNfbWFzaykgZm9yX2VhY2hfcG9ydF9tYXNrZWQoX19wb3J0LCBf X3BvcnRzX21hc2spCj4gPiArI2RlZmluZSBmb3JfZWFjaF9kc2lfcG9ydChfX3BvcnQsIF9fcG9y dHNfbWFzaykgXAo+ID4gKwlmb3JfZWFjaF9wb3J0X21hc2tlZChfX3BvcnQsIF9fcG9ydHNfbWFz aykKPiA+ICsjZGVmaW5lIGZvcl9lYWNoX2RzaV9waHkoX19waHksIF9fcGh5c19tYXNrKSBcCj4g PiArCWZvcl9lYWNoX3BoeV9tYXNrZWQoX19waHksIF9fcGh5c19tYXNrKQo+ID4gIAo+ID4gIHN0 YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2RzaSAqZW5jX3RvX2ludGVsX2RzaShzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIpCj4gPiAgewo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBp bmRleCBkM2ZjNTc1YTk0ZGIuLjk1YjljYTFmZGEyZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiA+IEBAIC0xNzk0LDIwICsxNzk0LDIwIEBAIGVudW0gaTkxNV9wb3dlcl93ZWxs X2lkIHsKPiA+ICAjZGVmaW5lIF9JQ0xfQ09NQk9QSFlfQQkJCTB4MTYyMDAwCj4gPiAgI2RlZmlu ZSBfSUNMX0NPTUJPUEhZX0IJCQkweDZDMDAwCj4gPiAgI2RlZmluZSBfRUhMX0NPTUJPUEhZX0MJ CQkweDE2MDAwMAo+ID4gLSNkZWZpbmUgX0lDTF9DT01CT1BIWShwb3J0KQkJX1BJQ0socG9ydCwg X0lDTF9DT01CT1BIWV9BLCBcCj4gPiArI2RlZmluZSBfSUNMX0NPTUJPUEhZKHBoeSkJCV9QSUNL KHBoeSwgX0lDTF9DT01CT1BIWV9BLCBcCj4gPiAgCQkJCQkgICAgICBfSUNMX0NPTUJPUEhZX0Is IFwKPiA+ICAJCQkJCSAgICAgIF9FSExfQ09NQk9QSFlfQykKPiA+ICAKPiA+ICAvKiBDTkwvSUNM IFBvcnQgQ0xfRFcgcmVnaXN0ZXJzICovCj4gPiAtI2RlZmluZSBfSUNMX1BPUlRfQ0xfRFcoZHcs IHBvcnQpCShfSUNMX0NPTUJPUEhZKHBvcnQpICsgXAo+ID4gKyNkZWZpbmUgX0lDTF9QT1JUX0NM X0RXKGR3LCBwaHkpCShfSUNMX0NPTUJPUEhZKHBoeSkgKyBcCj4gPiAgCQkJCQkgNCAqIChkdykp Cj4gPiAgCj4gPiAgI2RlZmluZSBDTkxfUE9SVF9DTDFDTV9EVzUJCV9NTUlPKDB4MTYyMDE0KQo+ ID4gLSNkZWZpbmUgSUNMX1BPUlRfQ0xfRFc1KHBvcnQpCQlfTU1JTyhfSUNMX1BPUlRfQ0xfRFco NSwgcG9ydCkpCj4gPiArI2RlZmluZSBJQ0xfUE9SVF9DTF9EVzUocGh5KQkJX01NSU8oX0lDTF9Q T1JUX0NMX0RXKDUsIHBoeSkpCj4gPiAgI2RlZmluZSAgIENMX1BPV0VSX0RPV05fRU5BQkxFCQko MSA8PCA0KQo+ID4gICNkZWZpbmUgICBTVVNfQ0xPQ0tfQ09ORklHCQkoMyA8PCAwKQo+ID4gIAo+ ID4gLSNkZWZpbmUgSUNMX1BPUlRfQ0xfRFcxMChwb3J0KQkJX01NSU8oX0lDTF9QT1JUX0NMX0RX KDEwLCBwb3J0KSkKPiA+ICsjZGVmaW5lIElDTF9QT1JUX0NMX0RXMTAocGh5KQkJX01NSU8oX0lD TF9QT1JUX0NMX0RXKDEwLCBwaHkpKQo+ID4gICNkZWZpbmUgIFBHX1NFUV9ERUxBWV9PVkVSUklE RV9NQVNLCSgzIDw8IDI1KQo+ID4gICNkZWZpbmUgIFBHX1NFUV9ERUxBWV9PVkVSUklERV9TSElG VAkyNQo+ID4gICNkZWZpbmUgIFBHX1NFUV9ERUxBWV9PVkVSUklERV9FTkFCTEUJKDEgPDwgMjQp Cj4gPiBAQCAtMTgyMiwyMyArMTgyMiwyMyBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7Cj4g PiAgI2RlZmluZSAgUFdSX0RPV05fTE5fTUFTSwkJKDB4ZiA8PCA0KQo+ID4gICNkZWZpbmUgIFBX Ul9ET1dOX0xOX1NISUZUCQk0Cj4gPiAgCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9DTF9EVzEyKHBv cnQpCQlfTU1JTyhfSUNMX1BPUlRfQ0xfRFcoMTIsIHBvcnQpKQo+ID4gKyNkZWZpbmUgSUNMX1BP UlRfQ0xfRFcxMihwaHkpCQlfTU1JTyhfSUNMX1BPUlRfQ0xfRFcoMTIsIHBoeSkpCj4gPiAgI2Rl ZmluZSAgIElDTF9MQU5FX0VOQUJMRV9BVVgJCSgxIDw8IDApCj4gPiAgCj4gPiAgLyogQ05ML0lD TCBQb3J0IENPTVBfRFcgcmVnaXN0ZXJzICovCj4gPiAgI2RlZmluZSBfSUNMX1BPUlRfQ09NUAkJ CTB4MTAwCj4gPiAtI2RlZmluZSBfSUNMX1BPUlRfQ09NUF9EVyhkdywgcG9ydCkJKF9JQ0xfQ09N Qk9QSFkocG9ydCkgKyBcCj4gPiArI2RlZmluZSBfSUNMX1BPUlRfQ09NUF9EVyhkdywgcGh5KQko X0lDTF9DT01CT1BIWShwaHkpICsgXAo+ID4gIAkJCQkJIF9JQ0xfUE9SVF9DT01QICsgNCAqIChk dykpCj4gPiAgCj4gPiAgI2RlZmluZSBDTkxfUE9SVF9DT01QX0RXMAkJX01NSU8oMHgxNjIxMDAp Cj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9DT01QX0RXMChwb3J0KQkJX01NSU8oX0lDTF9QT1JUX0NP TVBfRFcoMCwgcG9ydCkpCj4gPiArI2RlZmluZSBJQ0xfUE9SVF9DT01QX0RXMChwaHkpCQlfTU1J TyhfSUNMX1BPUlRfQ09NUF9EVygwLCBwaHkpKQo+ID4gICNkZWZpbmUgICBDT01QX0lOSVQJCQko MSA8PCAzMSkKPiA+ICAKPiA+ICAjZGVmaW5lIENOTF9QT1JUX0NPTVBfRFcxCQlfTU1JTygweDE2 MjEwNCkKPiA+IC0jZGVmaW5lIElDTF9QT1JUX0NPTVBfRFcxKHBvcnQpCQlfTU1JTyhfSUNMX1BP UlRfQ09NUF9EVygxLCBwb3J0KSkKPiA+ICsjZGVmaW5lIElDTF9QT1JUX0NPTVBfRFcxKHBoeSkJ CV9NTUlPKF9JQ0xfUE9SVF9DT01QX0RXKDEsIHBoeSkpCj4gPiAgCj4gPiAgI2RlZmluZSBDTkxf UE9SVF9DT01QX0RXMwkJX01NSU8oMHgxNjIxMGMpCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9DT01Q X0RXMyhwb3J0KQkJX01NSU8oX0lDTF9QT1JUX0NPTVBfRFcoMywgcG9ydCkpCj4gPiArI2RlZmlu ZSBJQ0xfUE9SVF9DT01QX0RXMyhwaHkpCQlfTU1JTyhfSUNMX1BPUlRfQ09NUF9EVygzLCBwaHkp KQo+ID4gICNkZWZpbmUgICBQUk9DRVNTX0lORk9fRE9UXzAJCSgwIDw8IDI2KQo+ID4gICNkZWZp bmUgICBQUk9DRVNTX0lORk9fRE9UXzEJCSgxIDw8IDI2KQo+ID4gICNkZWZpbmUgICBQUk9DRVNT X0lORk9fRE9UXzQJCSgyIDw8IDI2KQo+ID4gQEAgLTE4NTAsMTQgKzE4NTAsMTQgQEAgZW51bSBp OTE1X3Bvd2VyX3dlbGxfaWQgewo+ID4gICNkZWZpbmUgICBWT0xUQUdFX0lORk9fTUFTSwkJKDMg PDwgMjQpCj4gPiAgI2RlZmluZSAgIFZPTFRBR0VfSU5GT19TSElGVAkJMjQKPiA+ICAKPiA+IC0j ZGVmaW5lIElDTF9QT1JUX0NPTVBfRFc4KHBvcnQpCQlfTU1JTyhfSUNMX1BPUlRfQ09NUF9EVyg4 LCBwb3J0KSkKPiA+ICsjZGVmaW5lIElDTF9QT1JUX0NPTVBfRFc4KHBoeSkJCV9NTUlPKF9JQ0xf UE9SVF9DT01QX0RXKDgsIHBoeSkpCj4gPiAgI2RlZmluZSAgIElSRUZHRU4JCQkoMSA8PCAyNCkK PiA+ICAKPiA+ICAjZGVmaW5lIENOTF9QT1JUX0NPTVBfRFc5CQlfTU1JTygweDE2MjEyNCkKPiA+ IC0jZGVmaW5lIElDTF9QT1JUX0NPTVBfRFc5KHBvcnQpCQlfTU1JTyhfSUNMX1BPUlRfQ09NUF9E Vyg5LCBwb3J0KSkKPiA+ICsjZGVmaW5lIElDTF9QT1JUX0NPTVBfRFc5KHBoeSkJCV9NTUlPKF9J Q0xfUE9SVF9DT01QX0RXKDksIHBoeSkpCj4gPiAgCj4gPiAgI2RlZmluZSBDTkxfUE9SVF9DT01Q X0RXMTAJCV9NTUlPKDB4MTYyMTI4KQo+ID4gLSNkZWZpbmUgSUNMX1BPUlRfQ09NUF9EVzEwKHBv cnQpCV9NTUlPKF9JQ0xfUE9SVF9DT01QX0RXKDEwLCBwb3J0KSkKPiA+ICsjZGVmaW5lIElDTF9Q T1JUX0NPTVBfRFcxMChwaHkpCQlfTU1JTyhfSUNMX1BPUlRfQ09NUF9EVygxMCwgcGh5KSkKPiA+ ICAKPiA+ICAvKiBDTkwvSUNMIFBvcnQgUENTIHJlZ2lzdGVycyAqLwo+ID4gICNkZWZpbmUgX0NO TF9QT1JUX1BDU19EVzFfR1JQX0FFCTB4MTYyMzA0Cj4gPiBAQCAtMTg3MCwxNCArMTg3MCwxNCBA QCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7Cj4gPiAgI2RlZmluZSBfQ05MX1BPUlRfUENTX0RX MV9MTjBfQwkJMHgxNjJDMDQKPiA+ICAjZGVmaW5lIF9DTkxfUE9SVF9QQ1NfRFcxX0xOMF9ECQkw eDE2MkUwNAo+ID4gICNkZWZpbmUgX0NOTF9QT1JUX1BDU19EVzFfTE4wX0YJCTB4MTYyODA0Cj4g PiAtI2RlZmluZSBDTkxfUE9SVF9QQ1NfRFcxX0dSUChwb3J0KQlfTU1JTyhfUElDSyhwb3J0LCBc Cj4gPiArI2RlZmluZSBDTkxfUE9SVF9QQ1NfRFcxX0dSUChwaHkpCV9NTUlPKF9QSUNLKHBoeSwg XAo+ID4gIAkJCQkJCSAgICBfQ05MX1BPUlRfUENTX0RXMV9HUlBfQUUsIFwKPiA+ICAJCQkJCQkg ICAgX0NOTF9QT1JUX1BDU19EVzFfR1JQX0IsIFwKPiA+ICAJCQkJCQkgICAgX0NOTF9QT1JUX1BD U19EVzFfR1JQX0MsIFwKPiA+ICAJCQkJCQkgICAgX0NOTF9QT1JUX1BDU19EVzFfR1JQX0QsIFwK PiA+ICAJCQkJCQkgICAgX0NOTF9QT1JUX1BDU19EVzFfR1JQX0FFLCBcCj4gPiAgCQkJCQkJICAg IF9DTkxfUE9SVF9QQ1NfRFcxX0dSUF9GKSkKPiA+IC0jZGVmaW5lIENOTF9QT1JUX1BDU19EVzFf TE4wKHBvcnQpCV9NTUlPKF9QSUNLKHBvcnQsIFwKPiA+ICsjZGVmaW5lIENOTF9QT1JUX1BDU19E VzFfTE4wKHBoeSkJX01NSU8oX1BJQ0socGh5LCBcCj4gPiAgCQkJCQkJICAgIF9DTkxfUE9SVF9Q Q1NfRFcxX0xOMF9BRSwgXAo+ID4gIAkJCQkJCSAgICBfQ05MX1BPUlRfUENTX0RXMV9MTjBfQiwg XAo+ID4gIAkJCQkJCSAgICBfQ05MX1BPUlRfUENTX0RXMV9MTjBfQywgXAo+ID4gQEAgLTE4ODgs MTUgKzE4ODgsMTUgQEAgZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgewo+ID4gICNkZWZpbmUgX0lD TF9QT1JUX1BDU19BVVgJCTB4MzAwCj4gPiAgI2RlZmluZSBfSUNMX1BPUlRfUENTX0dSUAkJMHg2 MDAKPiA+ICAjZGVmaW5lIF9JQ0xfUE9SVF9QQ1NfTE4obG4pCQkoMHg4MDAgKyAobG4pICogMHgx MDApCj4gPiAtI2RlZmluZSBfSUNMX1BPUlRfUENTX0RXX0FVWChkdywgcG9ydCkJKF9JQ0xfQ09N Qk9QSFkocG9ydCkgKyBcCj4gPiArI2RlZmluZSBfSUNMX1BPUlRfUENTX0RXX0FVWChkdywgcGh5 KQkoX0lDTF9DT01CT1BIWShwaHkpICsgXAo+ID4gIAkJCQkJIF9JQ0xfUE9SVF9QQ1NfQVVYICsg NCAqIChkdykpCj4gPiAtI2RlZmluZSBfSUNMX1BPUlRfUENTX0RXX0dSUChkdywgcG9ydCkJKF9J Q0xfQ09NQk9QSFkocG9ydCkgKyBcCj4gPiArI2RlZmluZSBfSUNMX1BPUlRfUENTX0RXX0dSUChk dywgcGh5KQkoX0lDTF9DT01CT1BIWShwaHkpICsgXAo+ID4gIAkJCQkJIF9JQ0xfUE9SVF9QQ1Nf R1JQICsgNCAqIChkdykpCj4gPiAtI2RlZmluZSBfSUNMX1BPUlRfUENTX0RXX0xOKGR3LCBsbiwg cG9ydCkgKF9JQ0xfQ09NQk9QSFkocG9ydCkgKyBcCj4gPiArI2RlZmluZSBfSUNMX1BPUlRfUENT X0RXX0xOKGR3LCBsbiwgcGh5KSAoX0lDTF9DT01CT1BIWShwaHkpICsgXAo+ID4gIAkJCQkJICBf SUNMX1BPUlRfUENTX0xOKGxuKSArIDQgKiAoZHcpKQo+ID4gLSNkZWZpbmUgSUNMX1BPUlRfUENT X0RXMV9BVVgocG9ydCkJX01NSU8oX0lDTF9QT1JUX1BDU19EV19BVVgoMSwgcG9ydCkpCj4gPiAt I2RlZmluZSBJQ0xfUE9SVF9QQ1NfRFcxX0dSUChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfUENTX0RX X0dSUCgxLCBwb3J0KSkKPiA+IC0jZGVmaW5lIElDTF9QT1JUX1BDU19EVzFfTE4wKHBvcnQpCV9N TUlPKF9JQ0xfUE9SVF9QQ1NfRFdfTE4oMSwgMCwgcG9ydCkpCj4gPiArI2RlZmluZSBJQ0xfUE9S VF9QQ1NfRFcxX0FVWChwaHkpCV9NTUlPKF9JQ0xfUE9SVF9QQ1NfRFdfQVVYKDEsIHBoeSkpCj4g PiArI2RlZmluZSBJQ0xfUE9SVF9QQ1NfRFcxX0dSUChwaHkpCV9NTUlPKF9JQ0xfUE9SVF9QQ1Nf RFdfR1JQKDEsIHBoeSkpCj4gPiArI2RlZmluZSBJQ0xfUE9SVF9QQ1NfRFcxX0xOMChwaHkpCV9N TUlPKF9JQ0xfUE9SVF9QQ1NfRFdfTE4oMSwgMCwgcGh5KSkKPiA+ICAjZGVmaW5lICAgQ09NTU9O X0tFRVBFUl9FTgkJKDEgPDwgMjYpCj4gPiAgI2RlZmluZSAgIExBVEVOQ1lfT1BUSU1fTUFTSwkJ KDB4MyA8PCAyKQo+ID4gICNkZWZpbmUgICBMQVRFTkNZX09QVElNX1ZBTCh4KQkJKCh4KSA8PCAy KQo+ID4gQEAgLTE5MzMsMTggKzE5MzMsMTggQEAgZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgewo+ ID4gICNkZWZpbmUgX0lDTF9QT1JUX1RYX0dSUAkJMHg2ODAKPiA+ICAjZGVmaW5lIF9JQ0xfUE9S VF9UWF9MTihsbikJCSgweDg4MCArIChsbikgKiAweDEwMCkKPiA+ICAKPiA+IC0jZGVmaW5lIF9J Q0xfUE9SVF9UWF9EV19BVVgoZHcsIHBvcnQpCShfSUNMX0NPTUJPUEhZKHBvcnQpICsgXAo+ID4g KyNkZWZpbmUgX0lDTF9QT1JUX1RYX0RXX0FVWChkdywgcGh5KQkoX0lDTF9DT01CT1BIWShwaHkp ICsgXAo+ID4gIAkJCQkJIF9JQ0xfUE9SVF9UWF9BVVggKyA0ICogKGR3KSkKPiA+IC0jZGVmaW5l IF9JQ0xfUE9SVF9UWF9EV19HUlAoZHcsIHBvcnQpCShfSUNMX0NPTUJPUEhZKHBvcnQpICsgXAo+ ID4gKyNkZWZpbmUgX0lDTF9QT1JUX1RYX0RXX0dSUChkdywgcGh5KQkoX0lDTF9DT01CT1BIWShw aHkpICsgXAo+ID4gIAkJCQkJIF9JQ0xfUE9SVF9UWF9HUlAgKyA0ICogKGR3KSkKPiA+IC0jZGVm aW5lIF9JQ0xfUE9SVF9UWF9EV19MTihkdywgbG4sIHBvcnQpIChfSUNMX0NPTUJPUEhZKHBvcnQp ICsgXAo+ID4gKyNkZWZpbmUgX0lDTF9QT1JUX1RYX0RXX0xOKGR3LCBsbiwgcGh5KSAoX0lDTF9D T01CT1BIWShwaHkpICsgXAo+ID4gIAkJCQkJICBfSUNMX1BPUlRfVFhfTE4obG4pICsgNCAqIChk dykpCj4gPiAgCj4gPiAgI2RlZmluZSBDTkxfUE9SVF9UWF9EVzJfR1JQKHBvcnQpCV9NTUlPKF9D TkxfUE9SVF9UWF9EV19HUlAoMiwgcG9ydCkpCj4gPiAgI2RlZmluZSBDTkxfUE9SVF9UWF9EVzJf TE4wKHBvcnQpCV9NTUlPKF9DTkxfUE9SVF9UWF9EV19MTjAoMiwgcG9ydCkpCj4gPiAtI2RlZmlu ZSBJQ0xfUE9SVF9UWF9EVzJfQVVYKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19BVVgoMiwg cG9ydCkpCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzJfR1JQKHBvcnQpCV9NTUlPKF9JQ0xf UE9SVF9UWF9EV19HUlAoMiwgcG9ydCkpCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzJfTE4w KHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTigyLCAwLCBwb3J0KSkKPiA+ICsjZGVmaW5l IElDTF9QT1JUX1RYX0RXMl9BVVgocGh5KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfQVVYKDIsIHBo eSkpCj4gPiArI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzJfR1JQKHBoeSkJX01NSU8oX0lDTF9QT1JU X1RYX0RXX0dSUCgyLCBwaHkpKQo+ID4gKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFcyX0xOMChwaHkp CV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTigyLCAwLCBwaHkpKQo+ID4gICNkZWZpbmUgICBTV0lO R19TRUxfVVBQRVIoeCkJCSgoKHgpID4+IDMpIDw8IDE1KQo+ID4gICNkZWZpbmUgICBTV0lOR19T RUxfVVBQRVJfTUFTSwkJKDEgPDwgMTUpCj4gPiAgI2RlZmluZSAgIFNXSU5HX1NFTF9MT1dFUih4 KQkJKCgoeCkgJiAweDcpIDw8IDExKQo+ID4gQEAgLTE5NjEsMTAgKzE5NjEsMTAgQEAgZW51bSBp OTE1X3Bvd2VyX3dlbGxfaWQgewo+ID4gICNkZWZpbmUgQ05MX1BPUlRfVFhfRFc0X0xOKGxuLCBw b3J0KSAgIF9NTUlPKF9DTkxfUE9SVF9UWF9EV19MTjAoNCwgKHBvcnQpKSArIFwKPiA+ICAJCQkJ CSAgICgobG4pICogKF9DTkxfUE9SVF9UWF9EVzRfTE4xX0FFIC0gXAo+ID4gIAkJCQkJCSAgICBf Q05MX1BPUlRfVFhfRFc0X0xOMF9BRSkpKQo+ID4gLSNkZWZpbmUgSUNMX1BPUlRfVFhfRFc0X0FV WChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfQVVYKDQsIHBvcnQpKQo+ID4gLSNkZWZpbmUg SUNMX1BPUlRfVFhfRFc0X0dSUChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfR1JQKDQsIHBv cnQpKQo+ID4gLSNkZWZpbmUgSUNMX1BPUlRfVFhfRFc0X0xOMChwb3J0KQlfTU1JTyhfSUNMX1BP UlRfVFhfRFdfTE4oNCwgMCwgcG9ydCkpCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzRfTE4o bG4sIHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTig0LCBsbiwgcG9ydCkpCj4gPiArI2Rl ZmluZSBJQ0xfUE9SVF9UWF9EVzRfQVVYKHBoeSkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0FVWCg0 LCBwaHkpKQo+ID4gKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFc0X0dSUChwaHkpCV9NTUlPKF9JQ0xf UE9SVF9UWF9EV19HUlAoNCwgcGh5KSkKPiA+ICsjZGVmaW5lIElDTF9QT1JUX1RYX0RXNF9MTjAo cGh5KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfTE4oNCwgMCwgcGh5KSkKPiA+ICsjZGVmaW5lIElD TF9QT1JUX1RYX0RXNF9MTihsbiwgcGh5KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfTE4oNCwgbG4s IHBoeSkpCj4gPiAgI2RlZmluZSAgIExPQURHRU5fU0VMRUNUCQkoMSA8PCAzMSkKPiA+ICAjZGVm aW5lICAgUE9TVF9DVVJTT1JfMSh4KQkJKCh4KSA8PCAxMikKPiA+ICAjZGVmaW5lICAgUE9TVF9D VVJTT1JfMV9NQVNLCQkoMHgzRiA8PCAxMikKPiA+IEBAIC0xOTc1LDkgKzE5NzUsOSBAQCBlbnVt IGk5MTVfcG93ZXJfd2VsbF9pZCB7Cj4gPiAgCj4gPiAgI2RlZmluZSBDTkxfUE9SVF9UWF9EVzVf R1JQKHBvcnQpCV9NTUlPKF9DTkxfUE9SVF9UWF9EV19HUlAoNSwgcG9ydCkpCj4gPiAgI2RlZmlu ZSBDTkxfUE9SVF9UWF9EVzVfTE4wKHBvcnQpCV9NTUlPKF9DTkxfUE9SVF9UWF9EV19MTjAoNSwg cG9ydCkpCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzVfQVVYKHBvcnQpCV9NTUlPKF9JQ0xf UE9SVF9UWF9EV19BVVgoNSwgcG9ydCkpCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzVfR1JQ KHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19HUlAoNSwgcG9ydCkpCj4gPiAtI2RlZmluZSBJ Q0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTig1LCAwLCBw b3J0KSkKPiA+ICsjZGVmaW5lIElDTF9QT1JUX1RYX0RXNV9BVVgocGh5KQlfTU1JTyhfSUNMX1BP UlRfVFhfRFdfQVVYKDUsIHBoeSkpCj4gPiArI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzVfR1JQKHBo eSkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0dSUCg1LCBwaHkpKQo+ID4gKyNkZWZpbmUgSUNMX1BP UlRfVFhfRFc1X0xOMChwaHkpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTig1LCAwLCBwaHkpKQo+ ID4gICNkZWZpbmUgICBUWF9UUkFJTklOR19FTgkJKDEgPDwgMzEpCj4gPiAgI2RlZmluZSAgIFRB UDJfRElTQUJMRQkJCSgxIDw8IDMwKQo+ID4gICNkZWZpbmUgICBUQVAzX0RJU0FCTEUJCQkoMSA8 PCAyOSkKPiA+IEBAIC0xOTg4LDEwICsxOTg4LDEwIEBAIGVudW0gaTkxNV9wb3dlcl93ZWxsX2lk IHsKPiA+ICAKPiA+ICAjZGVmaW5lIENOTF9QT1JUX1RYX0RXN19HUlAocG9ydCkJX01NSU8oX0NO TF9QT1JUX1RYX0RXX0dSUCg3LCAocG9ydCkpKQo+ID4gICNkZWZpbmUgQ05MX1BPUlRfVFhfRFc3 X0xOMChwb3J0KQlfTU1JTyhfQ05MX1BPUlRfVFhfRFdfTE4wKDcsIChwb3J0KSkpCj4gPiAtI2Rl ZmluZSBJQ0xfUE9SVF9UWF9EVzdfQVVYKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19BVVgo NywgcG9ydCkpCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzdfR1JQKHBvcnQpCV9NTUlPKF9J Q0xfUE9SVF9UWF9EV19HUlAoNywgcG9ydCkpCj4gPiAtI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzdf TE4wKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTig3LCAwLCBwb3J0KSkKPiA+IC0jZGVm aW5lIElDTF9QT1JUX1RYX0RXN19MTihsbiwgcG9ydCkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0xO KDcsIGxuLCBwb3J0KSkKPiA+ICsjZGVmaW5lIElDTF9QT1JUX1RYX0RXN19BVVgocGh5KQlfTU1J TyhfSUNMX1BPUlRfVFhfRFdfQVVYKDcsIHBoeSkpCj4gPiArI2RlZmluZSBJQ0xfUE9SVF9UWF9E VzdfR1JQKHBoeSkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0dSUCg3LCBwaHkpKQo+ID4gKyNkZWZp bmUgSUNMX1BPUlRfVFhfRFc3X0xOMChwaHkpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19MTig3LCAw LCBwaHkpKQo+ID4gKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFc3X0xOKGxuLCBwaHkpCV9NTUlPKF9J Q0xfUE9SVF9UWF9EV19MTig3LCBsbiwgcGh5KSkKPiA+ICAjZGVmaW5lICAgTl9TQ0FMQVIoeCkJ CQkoKHgpIDw8IDI0KQo+ID4gICNkZWZpbmUgICBOX1NDQUxBUl9NQVNLCQkJKDB4N0YgPDwgMjQp Cj4gCj4gLS0gCj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRl cgoKLS0gCk1hdHQgUm9wZXIKR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKVlRULU9TR0MgUGxh dGZvcm0gRW5hYmxlbWVudApJbnRlbCBDb3Jwb3JhdGlvbgooOTE2KSAzNTYtMjc5NQpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=