From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC 14/15] drm/i915: Use new IS_GEN range helpers Date: Thu, 8 Feb 2018 16:22:25 +0200 Message-ID: <20180208142225.GC5453@intel.com> References: <20180208130606.15556-1-tvrtko.ursulin@linux.intel.com> <20180208130606.15556-15-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4AF5C6E60D for ; Thu, 8 Feb 2018 14:22:31 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180208130606.15556-15-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBGZWIgMDgsIDIwMTggYXQgMDE6MDY6MDVQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBDb2NjaW5lbGxlIHRyYW5zZm9ybWF0aW9uOgo+IAo+ICBAQAo+ICBleHByZXNzaW9uIHAs IGc7Cj4gIEBACj4gICgKPiAgLUlOVEVMX0dFTihwKSA+IGcKPiAgK0lTX0dFTl9HVChwLCBnKQoK SSB0aGluayB0aGlzIHN0dWZmIG1ha2VzIHRoZSBjb2RlIHByZXR0eSBjbG9zZSB0byBpbGxlZ2li bGUuCkluIHRoaXMgcGFydGljdWxhciBjYXNlIGV2ZW4gbW9yZSBzbyBiZWNhdXNlICJHVCIgYWN0 dWFsbHkKbWVhbnMgc29tZXRoaW5nIHZlcnkgZGlmZmVyZW50IHRvIHVzLgoKPiAgfAo+ICAtSU5U RUxfR0VOKHApIDwgZwo+ICArSVNfR0VOX0xUKHAsIGcpCj4gIHwKPiAgLUlOVEVMX0dFTihwKSA+ PSBnCj4gICtJU19HRU5fR1RFKHAsIGcpCj4gIHwKPiAgLUlOVEVMX0dFTihwKSA8PSBnCj4gICtJ U19HRU5fTFRFKHAsIGcpCj4gICkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyAgICAgICAgICAgICAgICB8ICA4NiArKysrLS0tLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgICAgICAgfCAgMTYgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgICAgICAgfCAg MTggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgICAg ICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMg ICAgICAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMg ICAgICAgICAgICAgICAgfCAgMzAgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9yZXF1ZXN0LmMgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zdG9sZW4uYyAgICAgICAgICAgICB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV90aWxpbmcuYyAgICAgICAgICAgICB8ICAgOCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICAgICAgICB8ICA0MCArKy0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAgICAgICAgICB8ICA1OCAr KystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYyAgICAgICAgICAg ICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAg ICAgICAgICAgICAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNw ZW5kLmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zeXNmcy5jICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyAgICAgICAgICAgICAgICAgfCAgIDggKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyAgICAgICAgICAgICAgICAgfCAgIDIg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgICAgICAgICAgICAgICAgICAg fCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICAgICAgICAg ICAgICAgfCAgMTAgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8u YyAgICAgICAgICAgfCAgMTQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jICAgICAgICAgICAgICAgfCAxOTQgKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICAgICAgIHwgIDI4ICstLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jICAgICAgICAgICAgICB8ICAgNCAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgICAgICB8 ICAyMiArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgICAgICAgICAg ICAgICAgfCAgMzAgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9maWZvX3VuZGVy cnVuLmMgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5n Y2hlY2suYyAgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZGNwLmMgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZG1pLmMgICAgICAgICAgICAgICAgICB8ICAxMCArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgICAgICB8ICAgNiArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgICAgICAgICAgICAgICB8ICAxMCArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgICAgICAgICAgICAgICAgICB8ICAgMiAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAgICAgICAgICB8 ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgICAgICAgICAg ICAgICB8ICAxMCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jICAg ICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAg ICAgICAgICAgICAgICAgICB8IDEwMCArKysrKy0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wc3IuYyAgICAgICAgICAgICAgICAgICB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICAgICAgICB8ICAzNCArKy0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYyAgICAgICAgICAgICAgICAgIHwgIDE0ICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICAgICAgICAgICAgICAgIHwgIDMw ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYyAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgICAg ICAgICAgICAgfCAgMjAgKy0tCj4gIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvaGVyZW5jeS5jICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb250ZXh0LmMgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyAgIHwgIDEyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYyAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUuYyAgICAgIHwgICAyICstCj4gIDUxIGZp bGVzIGNoYW5nZWQsIDQ1NyBpbnNlcnRpb25zKCspLCA0NTcgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCAzODQ5ZGVkMzU0ZTMuLjBjZWRiY2M4 YzZlMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTcwOCw3ICs3 MDgsNyBAQCBzdGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQo+ICAJCQkgICBJOTE1X1JFQUQoR0VOOF9QQ1VfSUlSKSk7Cj4gIAkJc2Vx X3ByaW50ZihtLCAiUENVIGludGVycnVwdCBlbmFibGU6XHQlMDh4XG4iLAo+ICAJCQkgICBJOTE1 X1JFQUQoR0VOOF9QQ1VfSUVSKSk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOCkgewo+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4KSkgewo+ICAJCXNl cV9wcmludGYobSwgIk1hc3RlciBJbnRlcnJ1cHQgQ29udHJvbDpcdCUwOHhcbiIsCj4gIAkJCSAg IEk5MTVfUkVBRChHRU44X01BU1RFUl9JUlEpKTsKPiAgCj4gQEAgLTg0NSw3ICs4NDUsNyBAQCBz dGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpk YXRhKQo+ICAJCXNlcV9wcmludGYobSwgIkdyYXBoaWNzIEludGVycnVwdCBtYXNrOgkJJTA4eFxu IiwKPiAgCQkJICAgSTkxNV9SRUFEKEdUSU1SKSk7Cj4gIAl9Cj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA2KSB7Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpIHsKPiAgCQlm b3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiAgCQkJc2VxX3ByaW50Ziht LAo+ICAJCQkJICAgIkdyYXBoaWNzIEludGVycnVwdCBtYXNrICglcyk6CSUwOHhcbiIsCj4gQEAg LTEwNTYsNyArMTA1Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVx dWVuY3k6ICVkIE1IelxuIiwKPiAgCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJwcy0+ ZWZmaWNpZW50X2ZyZXEpKTsKPiAgCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7 Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+ICsJfSBlbHNlIGlm IChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+ICAJCXUzMiBycF9zdGF0ZV9saW1pdHM7Cj4g IAkJdTMyIGd0X3BlcmZfc3RhdHVzOwo+ICAJCXUzMiBycF9zdGF0ZV9jYXA7Cj4gQEAgLTEwODAs NyArMTA4MCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZf cHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+ICAJCXJlcWYgPSBJOTE1X1JFQUQoR0VONl9SUE5T V1JFUSk7Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCQlpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgOSkpCj4gIAkJCXJlcWYgPj49IDIzOwo+ICAJCWVsc2Ugewo+ICAJCQly ZXFmICY9IH5HRU42X1RVUkJPX0RJU0FCTEU7Cj4gQEAgLTExMzMsNyArMTEzMyw3IEBAIHN0YXRp YyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNl ZCkKPiAgCQkJICAgcnBzLT5wbV9pbnRybXNrX21ieik7Cj4gIAkJc2VxX3ByaW50ZihtLCAiR1Rf UEVSRl9TVEFUVVM6IDB4JTA4eFxuIiwgZ3RfcGVyZl9zdGF0dXMpOwo+ICAJCXNlcV9wcmludGYo bSwgIlJlbmRlciBwLXN0YXRlIHJhdGlvOiAlZFxuIiwKPiAtCQkJICAgKGd0X3BlcmZfc3RhdHVz ICYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSA/IDB4MWZmMDAgOiAweGZmMDApKSA+PiA4KTsK PiArCQkJICAgKGd0X3BlcmZfc3RhdHVzICYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpID8gMHgx ZmYwMCA6IDB4ZmYwMCkpID4+IDgpOwo+ICAJCXNlcV9wcmludGYobSwgIlJlbmRlciBwLXN0YXRl IFZJRDogJWRcbiIsCj4gIAkJCSAgIGd0X3BlcmZfc3RhdHVzICYgMHhmZik7Cj4gIAkJc2VxX3By aW50ZihtLCAiUmVuZGVyIHAtc3RhdGUgbGltaXQ6ICVkXG4iLAo+IEBAIC0xMjE4LDEzICsxMjE4 LDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVfaW5zdGRvbmVfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAlzZXFfcHJpbnRmKG0sICJcdFx0SU5TVERPTkU6IDB4JTA4eFxu IiwKPiAgCQkgICBpbnN0ZG9uZS0+aW5zdGRvbmUpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDw9IDMpCj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgMykpCj4gIAkJcmV0dXJu Owo+ICAKPiAgCXNlcV9wcmludGYobSwgIlx0XHRTQ19JTlNURE9ORTogMHglMDh4XG4iLAo+ICAJ CSAgIGluc3Rkb25lLT5zbGljZV9jb21tb24pOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDw9IDYpCj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNikpCj4gIAkJcmV0dXJuOwo+ ICAKPiAgCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzbGljZSwg c3Vic2xpY2UpCj4gQEAgLTE0NzgsNyArMTQ3OCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9kcnBjX2lu Zm8oc3RydWN0IHNlcV9maWxlICptKQo+ICAJdHJhY2VfaTkxNV9yZWdfcncoZmFsc2UsIEdFTjZf R1RfQ09SRV9TVEFUVVMsIGd0X2NvcmVfc3RhdHVzLCA0LCB0cnVlKTsKPiAgCj4gIAlyY2N0bDEg PSBJOTE1X1JFQUQoR0VONl9SQ19DT05UUk9MKTsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+ICAJCWdlbjlfcG93 ZXJnYXRlX2VuYWJsZSA9IEk5MTVfUkVBRChHRU45X1BHX0VOQUJMRSk7Cj4gIAkJZ2VuOV9wb3dl cmdhdGVfc3RhdHVzID0gSTkxNV9SRUFEKEdFTjlfUFdSR1RfRE9NQUlOX1NUQVRVUyk7Cj4gIAl9 Cj4gQEAgLTE0OTEsNyArMTQ5MSw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9kcnBjX2luZm8oc3RydWN0 IHNlcV9maWxlICptKQo+ICAJCSAgIHllc25vKHJjY3RsMSAmIEdFTjZfUkNfQ1RMX1JDMWVfRU5B QkxFKSk7Cj4gIAlzZXFfcHJpbnRmKG0sICJSQzYgRW5hYmxlZDogJXNcbiIsCj4gIAkJICAgeWVz bm8ocmNjdGwxICYgR0VONl9SQ19DVExfUkM2X0VOQUJMRSkpOwo+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4gIAkJ c2VxX3ByaW50ZihtLCAiUmVuZGVyIFdlbGwgR2F0aW5nIEVuYWJsZWQ6ICVzXG4iLAo+ICAJCQl5 ZXNubyhnZW45X3Bvd2VyZ2F0ZV9lbmFibGUgJiBHRU45X1JFTkRFUl9QR19FTkFCTEUpKTsKPiAg CQlzZXFfcHJpbnRmKG0sICJNZWRpYSBXZWxsIEdhdGluZyBFbmFibGVkOiAlc1xuIiwKPiBAQCAt MTUyNSw3ICsxNTI1LDcgQEAgc3RhdGljIGludCBnZW42X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0pCj4gIAo+ICAJc2VxX3ByaW50ZihtLCAiQ29yZSBQb3dlciBEb3duOiAlc1xuIiwKPiAg CQkgICB5ZXNubyhndF9jb3JlX3N0YXR1cyAmIEdFTjZfQ09SRV9DUERfU1RBVEVfTUFTSykpOwo+ IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2 X3ByaXYsIDkpKSB7Cj4gIAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIFBvd2VyIFdlbGw6ICVzXG4i LAo+ICAJCQkoZ2VuOV9wb3dlcmdhdGVfc3RhdHVzICYKPiAgCQkJIEdFTjlfUFdSR1RfUkVOREVS X1NUQVRVU19NQVNLKSA/ICJVcCIgOiAiRG93biIpOwo+IEBAIC0xNTU5LDcgKzE1NTksNyBAQCBz dGF0aWMgaW50IGk5MTVfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQo+ICAKPiAgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRl dl9wcml2KSkKPiAgCQllcnIgPSB2bHZfZHJwY19pbmZvKG0pOwo+IC0JZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA2KQo+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikp Cj4gIAkJZXJyID0gZ2VuNl9kcnBjX2luZm8obSk7Cj4gIAllbHNlCj4gIAkJZXJyID0gaXJvbmxh a2VfZHJwY19pbmZvKG0pOwo+IEBAIC0xNjA2LDExICsxNjA2LDExIEBAIHN0YXRpYyBpbnQgaTkx NV9mYmNfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJaWYgKGlu dGVsX2ZiY19pc19hY3RpdmUoZGV2X3ByaXYpKSB7Cj4gIAkJdTMyIG1hc2s7Cj4gIAo+IC0JCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDgpKQo+ICAJCQltYXNrID0gSTkxNV9SRUFEKElWQl9GQkNfU1RBVFVTMikgJiBCRFdfRkJDX0NP TVBfU0VHX01BU0s7Cj4gLQkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KQo+ICsJ CWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDcpKQo+ICAJCQltYXNrID0gSTkxNV9SRUFE KElWQl9GQkNfU1RBVFVTMikgJiBJVkJfRkJDX0NPTVBfU0VHX01BU0s7Cj4gLQkJZWxzZSBpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA1KQo+ICsJCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3By aXYsIDUpKQo+ICAJCQltYXNrID0gSTkxNV9SRUFEKElMS19EUEZDX1NUQVRVUykgJiBJTEtfRFBG Q19DT01QX1NFR19NQVNLOwo+ICAJCWVsc2UgaWYgKElTX0c0WChkZXZfcHJpdikpCj4gIAkJCW1h c2sgPSBJOTE1X1JFQUQoRFBGQ19TVEFUVVMpICYgRFBGQ19DT01QX1NFR19NQVNLOwo+IEBAIC0x NjMxLDcgKzE2MzEsNyBAQCBzdGF0aWMgaW50IGk5MTVfZmJjX2ZhbHNlX2NvbG9yX2dldCh2b2lk ICpkYXRhLCB1NjQgKnZhbCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGF0YTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDcgfHwgIUhBU19G QkMoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNykgfHwgIUhBU19GQkMo ZGV2X3ByaXYpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAgCSp2YWwgPSBkZXZfcHJpdi0+ ZmJjLmZhbHNlX2NvbG9yOwo+IEBAIC0xNjQ0LDcgKzE2NDQsNyBAQCBzdGF0aWMgaW50IGk5MTVf ZmJjX2ZhbHNlX2NvbG9yX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKPiAgCXUzMiByZWc7Cj4gIAo+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA3IHx8ICFIQVNfRkJDKGRldl9wcml2KSkKPiArCWlmIChJU19H RU5fTFQoZGV2X3ByaXYsIDcpIHx8ICFIQVNfRkJDKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gLUVO T0RFVjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwo+IEBAIC0xNjc2 LDcgKzE2NzYsNyBAQCBzdGF0aWMgaW50IGk5MTVfaXBzX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKPiAgCXNlcV9wcmludGYobSwgIkVuYWJsZWQgYnkga2VybmVsIHBh cmFtZXRlcjogJXNcbiIsCj4gIAkJICAgeWVzbm8oaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2lwcykp Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA4KSkgewo+ICAJCXNlcV9wdXRzKG0sICJDdXJyZW50bHk6IHVua25vd25c biIpOwo+ICAJfSBlbHNlIHsKPiAgCQlpZiAoSTkxNV9SRUFEKElQU19DVEwpICYgSVBTX0VOQUJM RSkKPiBAQCAtMTY5OCw3ICsxNjk4LDcgQEAgc3RhdGljIGludCBpOTE1X3NyX3N0YXR1cyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01B SU5fSU5JVCk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA5KSkKPiAgCQkvKiBubyBnbG9iYWwgU1Igc3RhdHVzOyBpbnNw ZWN0IHBlci1wbGFuZSBXTSAqLzsKPiAgCWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYp KQo+ICAJCXNyX2VuYWJsZWQgPSBJOTE1X1JFQUQoV00xX0xQX0lMSykgJiBXTTFfTFBfU1JfRU47 Cj4gQEAgLTE5NzgsNyArMTk3OCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zd2l6emxlX2luZm8oc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCQkgICBJOTE1X1JFQUQxNihDMERSQjMp KTsKPiAgCQlzZXFfcHJpbnRmKG0sICJDMURSQjMgPSAweCUwNHhcbiIsCj4gIAkJCSAgIEk5MTVf UkVBRDE2KEMxRFJCMykpOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYp IHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpIHsKPiAgCQlzZXFfcHJp bnRmKG0sICJNQURfRElNTV9DMCA9IDB4JTA4eFxuIiwKPiAgCQkJICAgSTkxNV9SRUFEKE1BRF9E SU1NX0MwKSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiTUFEX0RJTU1fQzEgPSAweCUwOHhcbiIsCj4g QEAgLTE5ODcsNyArMTk4Nyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zd2l6emxlX2luZm8oc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCQkgICBJOTE1X1JFQUQoTUFEX0RJTU1fQzIp KTsKPiAgCQlzZXFfcHJpbnRmKG0sICJUSUxFQ1RMID0gMHglMDh4XG4iLAo+ICAJCQkgICBJOTE1 X1JFQUQoVElMRUNUTCkpOwo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gKwkJ aWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+ICAJCQlzZXFfcHJpbnRmKG0sICJHQU1UQVJC TU9ERSA9IDB4JTA4eFxuIiwKPiAgCQkJCSAgIEk5MTVfUkVBRChHQU1UQVJCTU9ERSkpOwo+ICAJ CWVsc2UKPiBAQCAtMjA5NSw5ICsyMDk1LDkgQEAgc3RhdGljIGludCBpOTE1X3BwZ3R0X2luZm8o c3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ICsJ aWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+ICAJCWdlbjhfcHBndHRfaW5mbyhtLCBkZXZf cHJpdik7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gKwllbHNlIGlm IChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPiAgCQlnZW42X3BwZ3R0X2luZm8obSwgZGV2X3By aXYpOwo+ICAKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShmaWxlLCAmZGV2LT5maWxl bGlzdCwgbGhlYWQpIHsKPiBAQCAtMjE5MSw3ICsyMTkxLDcgQEAgc3RhdGljIGludCBpOTE1X3Jw c19ib29zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQkgICBhdG9t aWNfcmVhZCgmcnBzLT5ib29zdHMpKTsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5maWxlbGlzdF9t dXRleCk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNiAmJgo+ICsJaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDYpICYmCj4gIAkgICAgcnBzLT5lbmFibGVkICYmCj4gIAkgICAg ZGV2X3ByaXYtPmd0LmFjdGl2ZV9yZXF1ZXN0cykgewo+ICAJCXUzMiBycHVwLCBycHVwZWk7Cj4g QEAgLTIyMjIsNyArMjIyMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ycHNfYm9vc3RfaW5mbyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIHN0YXRpYyBpbnQgaTkxNV9sbGMoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gLQljb25zdCBib29sIGVk cmFtID0gSU5URUxfR0VOKGRldl9wcml2KSA+IDg7Cj4gKwljb25zdCBib29sIGVkcmFtID0gSVNf R0VOX0dUKGRldl9wcml2LCA4KTsKPiAgCj4gIAlzZXFfcHJpbnRmKG0sICJMTEM6ICVzXG4iLCB5 ZXNubyhIQVNfTExDKGRldl9wcml2KSkpOwo+ICAJc2VxX3ByaW50ZihtLCAiJXM6ICVsbHVNQlxu IiwgZWRyYW0gPyAiZURSQU0iIDogImVMTEMiLAo+IEBAIC0yNjc1LDcgKzI2NzUsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZW5lcmd5X3VKKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAg CXVuc2lnbmVkIGxvbmcgbG9uZyBwb3dlcjsKPiAgCXUzMiB1bml0czsKPiAgCj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDYpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA2KSkKPiAg CQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 Cj4gQEAgLTMyOTAsNyArMzI5MCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kZGJfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCWVudW0gcGlwZSBwaXBlOwo+ICAJaW50IHBs YW5lOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKPiArCWlmIChJU19HRU5f TFQoZGV2X3ByaXYsIDkpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAgCWRybV9tb2Rlc2V0 X2xvY2tfYWxsKGRldik7Cj4gQEAgLTM2ODksNyArMzY4OSw3IEBAIHN0YXRpYyB2b2lkIHdtX2xh dGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IHVpbnQxNl90IHdtWzhdKQo+ICAJ CSAqIC0gV00xKyBsYXRlbmN5IHZhbHVlcyBpbiAwLjV1cyB1bml0cwo+ICAJCSAqIC0gbGF0ZW5j aWVzIGFyZSBpbiB1cyBvbiBnZW45L3Zsdi9jaHYKPiAgCQkgKi8KPiAtCQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA5IHx8Cj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpIHx8Cj4g IAkJICAgIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8Cj4gIAkJICAgIElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpIHx8Cj4gIAkJICAgIElTX0c0WChkZXZfcHJpdikpCj4gQEAgLTM3MDksNyArMzcw OSw3IEBAIHN0YXRpYyBpbnQgcHJpX3dtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKmRhdGEpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5w cml2YXRlOwo+ICAJY29uc3QgdWludDE2X3QgKmxhdGVuY2llczsKPiAgCj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ICAJ CWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiAgCWVsc2UKPiAgCQlsYXRl bmNpZXMgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3k7Cj4gQEAgLTM3MjQsNyArMzcyNCw3IEBA IHN0YXRpYyBpbnQgc3ByX3dtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KmRhdGEpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRl Owo+ICAJY29uc3QgdWludDE2X3QgKmxhdGVuY2llczsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ICAJCWxhdGVu Y2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiAgCWVsc2UKPiAgCQlsYXRlbmNpZXMg PSBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3k7Cj4gQEAgLTM3MzksNyArMzczOSw3IEBAIHN0YXRp YyBpbnQgY3VyX3dtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ICAJ Y29uc3QgdWludDE2X3QgKmxhdGVuY2llczsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA5KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ICAJCWxhdGVuY2llcyA9 IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiAgCWVsc2UKPiAgCQlsYXRlbmNpZXMgPSBkZXZf cHJpdi0+d20uY3VyX2xhdGVuY3k7Cj4gQEAgLTM3NTMsNyArMzc1Myw3IEBAIHN0YXRpYyBpbnQg cHJpX3dtX2xhdGVuY3lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmls ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW5vZGUtPmlf cHJpdmF0ZTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChk ZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA1KSAmJiAhSVNfRzRYKGRldl9w cml2KSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gIAlyZXR1cm4gc2luZ2xlX29wZW4oZmls ZSwgcHJpX3dtX2xhdGVuY3lfc2hvdywgZGV2X3ByaXYpOwo+IEBAIC0zODMyLDcgKzM4MzIsNyBA QCBzdGF0aWMgc3NpemVfdCBwcmlfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwg Y29uc3QgY2hhciBfX3VzZXIgKnVidWYsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBtLT5wcml2YXRlOwo+ICAJdWludDE2X3QgKmxhdGVuY2llczsKPiAgCj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkp KQo+ICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiAgCWVsc2UKPiAg CQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3k7Cj4gQEAgLTM4NDcsNyArMzg0 Nyw3IEBAIHN0YXRpYyBzc2l6ZV90IHNwcl93bV9sYXRlbmN5X3dyaXRlKHN0cnVjdCBmaWxlICpm aWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7Cj4gIAl1aW50MTZfdCAqbGF0ZW5jaWVzOwo+ICAKPiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgOSkpCj4gIAkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5Owo+ICAJZWxz ZQo+ICAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5zcHJfbGF0ZW5jeTsKPiBAQCAtMzg2Miw3 ICszODYyLDcgQEAgc3RhdGljIHNzaXplX3QgY3VyX3dtX2xhdGVuY3lfd3JpdGUoc3RydWN0IGZp bGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsKPiAgCXVpbnQxNl90ICpsYXRlbmNpZXM7Cj4g IAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA5KSkKPiAgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7Cj4g IAllbHNlCj4gIAkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5Owo+IEBAIC00 MTAwLDcgKzQxMDAsNyBAQCBpOTE1X21heF9mcmVxX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkK PiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKPiAgCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2 LCA2KSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gIAkqdmFsID0gaW50ZWxfZ3B1X2ZyZXEo ZGV2X3ByaXYsIGRldl9wcml2LT5ndF9wbS5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KTsKPiBAQCAt NDExNSw3ICs0MTE1LDcgQEAgaTkxNV9tYXhfZnJlcV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkK PiAgCXUzMiBod19tYXgsIGh3X21pbjsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPCA2KQo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNikpCj4gIAkJcmV0 dXJuIC1FTk9ERVY7Cj4gIAo+ICAJRFJNX0RFQlVHX0RSSVZFUigiTWFudWFsbHkgc2V0dGluZyBt YXggZnJlcSB0byAlbGx1XG4iLCB2YWwpOwo+IEBAIC00MTU2LDcgKzQxNTYsNyBAQCBpOTE1X21p bl9mcmVxX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDYpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA2KSkKPiAgCQlyZXR1cm4gLUVOT0RF VjsKPiAgCj4gIAkqdmFsID0gaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ndF9w bS5ycHMubWluX2ZyZXFfc29mdGxpbWl0KTsKPiBAQCAtNDE3MSw3ICs0MTcxLDcgQEAgaTkxNV9t aW5fZnJlcV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgCXUzMiBod19tYXgsIGh3X21pbjsK PiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQo+ICsJaWYg KElTX0dFTl9MVChkZXZfcHJpdiwgNikpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+ICAJRFJN X0RFQlVHX0RSSVZFUigiTWFudWFsbHkgc2V0dGluZyBtaW4gZnJlcSB0byAlbGx1XG4iLCB2YWwp Owo+IEBAIC00NDY5LDcgKzQ0NjksNyBAQCBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0dXMoc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gIAlzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyBzc2V1Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkKPiArCWlm IChJU19HRU5fTFQoZGV2X3ByaXYsIDgpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAgCXNl cV9wdXRzKG0sICJTU0VVIERldmljZSBJbmZvXG4iKTsKPiBAQCAtNDQ4Niw3ICs0NDg2LDcgQEAg c3RhdGljIGludCBpOTE1X3NzZXVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51 c2VkKQo+ICAJCWJyb2Fkd2VsbF9zc2V1X2RldmljZV9zdGF0dXMoZGV2X3ByaXYsICZzc2V1KTsK PiAgCX0gZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiAgCQlnZW45X3NzZXVfZGV2aWNl X3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDEwKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDEwKSkgewo+ ICAJCWdlbjEwX3NzZXVfZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwo+ICAJfQo+ICAK PiBAQCAtNDUwMSw3ICs0NTAxLDcgQEAgc3RhdGljIGludCBpOTE1X2ZvcmNld2FrZV9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGlub2RlLT5pX3ByaXZhdGU7Cj4gIAo+IC0JaWYgKElOVEVM X0dFTihpOTE1KSA8IDYpCj4gKwlpZiAoSVNfR0VOX0xUKGk5MTUsIDYpKQo+ICAJCXJldHVybiAw Owo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+IEBAIC00NTE0LDcgKzQ1MTQs NyBAQCBzdGF0aWMgaW50IGk5MTVfZm9yY2V3YWtlX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9k ZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gaW5vZGUtPmlfcHJpdmF0ZTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNikK PiArCWlmIChJU19HRU5fTFQoaTkxNSwgNikpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV91c2VyX3B1dChpOTE1KTsKPiBAQCAtNDYxMiw3ICs0NjEyLDcgQEAg c3RhdGljIGludCBpOTE1X2RycnNfY3RsX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICAJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNykKPiArCWlmIChJU19HRU5fTFQo ZGV2X3ByaXYsIDcpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAgCWRybV9tb2Rlc2V0X2xv Y2tfYWxsKGRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggYmI2MDVlMGI5OTZj Li44ZTEwOGViMjMzZWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtNDU5LDEy ICs0NTksMTIgQEAgc3RhdGljIGludCBpOTE1X2dldF9icmlkZ2VfZGV2KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgc3RhdGljIGludAo+ICBpbnRlbF9hbGxvY19tY2hiYXJf cmVzb3VyY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpbnQg cmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA0ID8gTUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkx NTsKPiArCWludCByZWcgPSBJU19HRU5fR1RFKGRldl9wcml2LCA0KSA/IE1DSEJBUl9JOTY1IDog TUNIQkFSX0k5MTU7Cj4gIAl1MzIgdGVtcF9sbywgdGVtcF9oaSA9IDA7Cj4gIAl1NjQgbWNoYmFy X2FkZHI7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQp Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpCj4gIAkJcGNpX3JlYWRfY29uZmlnX2R3 b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcgKyA0LCAmdGVtcF9oaSk7Cj4gIAlwY2lfcmVh ZF9jb25maWdfZHdvcmQoZGV2X3ByaXYtPmJyaWRnZV9kZXYsIHJlZywgJnRlbXBfbG8pOwo+ICAJ bWNoYmFyX2FkZHIgPSAoKHU2NCl0ZW1wX2hpIDw8IDMyKSB8IHRlbXBfbG87Cj4gQEAgLTQ5MSw3 ICs0OTEsNyBAQCBpbnRlbF9hbGxvY19tY2hiYXJfcmVzb3VyY2Uoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNCkKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkKPiAg CQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcgKyA0LAo+ ICAJCQkJICAgICAgIHVwcGVyXzMyX2JpdHMoZGV2X3ByaXYtPm1jaF9yZXMuc3RhcnQpKTsKPiAg Cj4gQEAgLTUwNCw3ICs1MDQsNyBAQCBpbnRlbF9hbGxvY19tY2hiYXJfcmVzb3VyY2Uoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICBzdGF0aWMgdm9pZAo+ICBpbnRlbF9zZXR1 cF9tY2hiYXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpbnQg bWNoYmFyX3JlZyA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCA/IE1DSEJBUl9JOTY1IDogTUNI QkFSX0k5MTU7Cj4gKwlpbnQgbWNoYmFyX3JlZyA9IElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpID8g TUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKPiAgCXUzMiB0ZW1wOwo+ICAJYm9vbCBlbmFibGVk Owo+ICAKPiBAQCAtNTQzLDcgKzU0Myw3IEBAIGludGVsX3NldHVwX21jaGJhcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHN0YXRpYyB2b2lkCj4gIGludGVsX3RlYXJkb3du X21jaGJhcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWludCBt Y2hiYXJfcmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA0ID8gTUNIQkFSX0k5NjUgOiBNQ0hC QVJfSTkxNTsKPiArCWludCBtY2hiYXJfcmVnID0gSVNfR0VOX0dURShkZXZfcHJpdiwgNCkgPyBN Q0hCQVJfSTk2NSA6IE1DSEJBUl9JOTE1Owo+ICAKPiAgCWlmIChkZXZfcHJpdi0+bWNoYmFyX25l ZWRfZGlzYWJsZSkgewo+ICAJCWlmIChJU19JOTE1RyhkZXZfcHJpdikgfHwgSVNfSTkxNUdNKGRl dl9wcml2KSkgewo+IEBAIC05ODMsNyArOTgzLDcgQEAgc3RhdGljIGludCBpOTE1X21taW9fc2V0 dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICogdGhlIHJlZ2lzdGVy IEJBUiByZW1haW5zIHRoZSBzYW1lIHNpemUgZm9yIGFsbCB0aGUgZWFybGllcgo+ICAJICogZ2Vu ZXJhdGlvbnMgdXAgdG8gSXJvbmxha2UuCj4gIAkgKi8KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDwgNSkKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDUpKQo+ICAJCW1taW9fc2l6ZSA9 IDUxMiAqIDEwMjQ7Cj4gIAllbHNlCj4gIAkJbW1pb19zaXplID0gMiAqIDEwMjQgKiAxMDI0Owo+ IEBAIC0xMTgxLDcgKzExODEsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICogcHJvcGVybHkgZGVhZCBhZnRl cndhcmRzLiBTbyB3ZSdsbCBqdXN0IGRpc2FibGUgdGhlbSBmb3IgYWxsCj4gIAkgKiBwcmUtZ2Vu NSBjaGlwc2V0cy4KPiAgCSAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewo+ ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4gIAkJaWYgKHBjaV9lbmFibGVfbXNp KHBkZXYpIDwgMCkKPiAgCQkJRFJNX0RFQlVHX0RSSVZFUigiY2FuJ3QgZW5hYmxlIE1TSSIpOwo+ ICAJfQo+IEBAIC0xNjcyLDcgKzE2NzIsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3N1c3BlbmRf bGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIGhpYmVybmF0aW9uKQo+ICAJICogRnVq aXRzdSBGU0MgUzcxMTAKPiAgCSAqIEFjZXIgQXNwaXJlIDE4MzBUCj4gIAkgKi8KPiAtCWlmICgh KGhpYmVybmF0aW9uICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA2KSkKPiArCWlmICghKGhpYmVy bmF0aW9uICYmIElTX0dFTl9MVChkZXZfcHJpdiwgNikpKQo+ICAJCXBjaV9zZXRfcG93ZXJfc3Rh dGUocGRldiwgUENJX0QzaG90KTsKPiAgCj4gIAlkZXZfcHJpdi0+c3VzcGVuZGVkX3RvX2lkbGUg PSBzdXNwZW5kX3RvX2lkbGUoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGlu ZGV4IGI2NmYyODhiZGU3ZC4uMWQ4YzMxOGRkZWZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gQEAgLTI4NTUsNyArMjg1NSw3IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgKiBpbnRlcnJ1cHRzLgo+ICAgKi8KPiAgI2RlZmlu ZSBIQVNfQVVYX0lSUShkZXZfcHJpdikgICB0cnVlCj4gLSNkZWZpbmUgSEFTX0dNQlVTX0lSUShk ZXZfcHJpdikgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKPiArI2RlZmluZSBIQVNfR01CVVNf SVJRKGRldl9wcml2KSAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpCj4gIAo+ICAvKiBXaXRoIHRo ZSA5NDUgYW5kIGxhdGVyLCBZIHRpbGluZyBnb3QgYWRqdXN0ZWQgc28gdGhhdCBpdCB3YXMgMzIg MTI4LWJ5dGUKPiAgICogcm93cywgd2hpY2ggY2hhbmdlZCB0aGUgYWxpZ25tZW50IHJlcXVpcmVt ZW50cyBhbmQgZmVuY2UgcHJvZ3JhbW1pbmcuCj4gQEAgLTI4NjYsNyArMjg2Niw3IEBAIGludGVs X2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAjZGVmaW5l IFNVUFBPUlRTX1RWKGRldl9wcml2KQkJKChkZXZfcHJpdiktPmluZm8uc3VwcG9ydHNfdHYpCj4g ICNkZWZpbmUgSTkxNV9IQVNfSE9UUExVRyhkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFz X2hvdHBsdWcpCj4gIAo+IC0jZGVmaW5lIEhBU19GV19CTEMoZGV2X3ByaXYpIAkoSU5URUxfR0VO KGRldl9wcml2KSA+IDIpCj4gKyNkZWZpbmUgSEFTX0ZXX0JMQyhkZXZfcHJpdikgCShJU19HRU5f R1QoZGV2X3ByaXYsIDIpKQo+ICAjZGVmaW5lIEhBU19GQkMoZGV2X3ByaXYpCSgoZGV2X3ByaXYp LT5pbmZvLmhhc19mYmMpCj4gICNkZWZpbmUgSEFTX0NVUl9GQkMoZGV2X3ByaXYpCSghSEFTX0dN Q0hfRElTUExBWShkZXZfcHJpdikgJiYgSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA3KQo+ ICAKPiBAQCAtMjk1MSw3ICsyOTUxLDcgQEAgaW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAjZGVmaW5lIEhBU19HTUNIX0RJU1BMQVkoZGV2 X3ByaXYpICgoZGV2X3ByaXYpLT5pbmZvLmhhc19nbWNoX2Rpc3BsYXkpCj4gIAo+IC0jZGVmaW5l IEhBU19MU1BDT04oZGV2X3ByaXYpIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKyNkZWZp bmUgSEFTX0xTUENPTihkZXZfcHJpdikgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ICAKPiAg LyogRFBGID09IGR5bmFtaWMgcGFyaXR5IGZlYXR1cmUgKi8KPiAgI2RlZmluZSBIQVNfTDNfRFBG KGRldl9wcml2KSAoKGRldl9wcml2KS0+aW5mby5oYXNfbDNfZHBmKQo+IEBAIC0yOTc0LDcgKzI5 NzQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfdnRkX2FjdGl2ZSh2b2lkKQo+ICAKPiAg c3RhdGljIGlubGluZSBib29sIGludGVsX3NjYW5vdXRfbmVlZHNfdnRkX3dhKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JcmV0dXJuIElOVEVMX0dFTihkZXZfcHJp dikgPj0gNiAmJiBpbnRlbF92dGRfYWN0aXZlKCk7Cj4gKwlyZXR1cm4gSVNfR0VOX0dURShkZXZf cHJpdiwgNikgJiYgaW50ZWxfdnRkX2FjdGl2ZSgpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5l IGJvb2wKPiBAQCAtMzU2MSw3ICszNTYxLDcgQEAgdm9pZCBpOTE1X2dlbV9mbHVzaF9nZ3R0X3dy aXRlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBzdGF0aWMgaW5saW5l IHZvaWQgaTkxNV9nZW1fY2hpcHNldF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIHsKPiAgCXdtYigpOwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQo+ ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNikpCj4gIAkJaW50ZWxfZ3R0X2NoaXBzZXRfZmx1 c2goKTsKPiAgfQo+ICAKPiBAQCAtMzk5Niw3ICszOTk2LDcgQEAgc3RhdGljIGlubGluZSBpOTE1 X3JlZ190IGk5MTVfdmdhY250cmxfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgewo+ICAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpKQo+ICAJCXJldHVybiBWTFZfVkdBQ05UUkw7Cj4gLQllbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDUpCj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA1KSkK PiAgCQlyZXR1cm4gQ1BVX1ZHQUNOVFJMOwo+ICAJZWxzZQo+ICAJCXJldHVybiBWR0FDTlRSTDsK PiBAQCAtNDE2NCw3ICs0MTY0LDcgQEAgaW50IHJlbWFwX2lvX21hcHBpbmcoc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsCj4gIAo+ICBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9od3NfY3NiX3dy aXRlX2luZGV4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gLQlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDEwKQo+ICsJaWYgKElTX0dFTl9HVEUoaTkxNSwgMTApKQo+ICAJCXJl dHVybiBDTkxfSFdTX0NTQl9XUklURV9JTkRFWDsKPiAgCWVsc2UKPiAgCQlyZXR1cm4gSTkxNV9I V1NfQ1NCX1dSSVRFX0lOREVYOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDFkNTIw OGYyNGI2MC4uOWExY2VlM2E1OTBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAg LTM4Niw3ICszODYsNyBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9mZW5jZShzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSwKPiAgCSAqIGVhY2ggY2xpZW50IHRvIHdhaXRib29zdCBvbmNlIGluIGEgYnVz eSBwZXJpb2QuCj4gIAkgKi8KPiAgCWlmIChycHNfY2xpZW50ICYmICFpOTE1X2dlbV9yZXF1ZXN0 X3N0YXJ0ZWQocnEpKSB7Cj4gLQkJaWYgKElOVEVMX0dFTihycS0+aTkxNSkgPj0gNikKPiArCQlp ZiAoSVNfR0VOX0dURShycS0+aTkxNSwgNikpCj4gIAkJCWdlbjZfcnBzX2Jvb3N0KHJxLCBycHNf Y2xpZW50KTsKPiAgCX0KPiAgCj4gQEAgLTMxNDgsNyArMzE0OCw3IEBAIHZvaWQgaTkxNV9nZW1f cmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKGRldl9wcml2 LT5ndC5hd2FrZSkgewo+ICAJCWludGVsX3Nhbml0aXplX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7 Cj4gIAkJaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4gLQkJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNikKPiArCQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4g IAkJCWdlbjZfcnBzX2J1c3koZGV2X3ByaXYpOwo+ICAJfQo+ICB9Cj4gQEAgLTM0NzQsNyArMzQ3 NCw3IEBAIGk5MTVfZ2VtX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKPiAgCUdFTV9CVUdfT04oZXBvY2ggPT0gSTkxNV9FUE9DSF9JTlZBTElEKTsKPiAgCXJlYXJt X2hhbmdjaGVjayA9IGZhbHNlOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYp Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4gIAkJZ2VuNl9ycHNfaWRsZShkZXZf cHJpdik7Cj4gIAo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RP TUFJTl9HVF9JUlEpOwo+IEBAIC00ODgyLDcgKzQ4ODIsNyBAQCB2b2lkIGk5MTVfZ2VtX3Nhbml0 aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJICogaXQgbWF5IGltcGFjdCB0 aGUgZGlzcGxheSBhbmQgd2UgYXJlIHVuY2VydGFpbiBhYm91dCB0aGUgc3RhYmlsaXR5Cj4gIAkg KiBvZiB0aGUgcmVzZXQsIHNvIHRoaXMgY291bGQgYmUgYXBwbGllZCB0byBldmVuIGVhcmxpZXIg Z2VuLgo+ICAJICovCj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDUpIHsKPiArCWlmIChJU19H RU5fR1RFKGk5MTUsIDUpKSB7Cj4gIAkJaW50IHJlc2V0ID0gaW50ZWxfZ3B1X3Jlc2V0KGk5MTUs IEFMTF9FTkdJTkVTKTsKPiAgCQlXQVJOX09OKHJlc2V0ICYmIHJlc2V0ICE9IC1FTk9ERVYpOwo+ ICAJfQo+IEBAIC01MDEwLDcgKzUwMTAsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIHZvaWQgaTkxNV9nZW1faW5pdF9zd2l6emxp bmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDUgfHwKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDUpIHx8Cj4g IAkgICAgZGV2X3ByaXYtPm1tLmJpdF82X3N3aXp6bGVfeCA9PSBJOTE1X0JJVF82X1NXSVpaTEVf Tk9ORSkKPiAgCQlyZXR1cm47Cj4gIAo+IEBAIC01MDg0LDcgKzUwODQsNyBAQCBpbnQgaTkxNV9n ZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkvKiBEb3Vi bGUgbGF5ZXIgc2VjdXJpdHkgYmxhbmtldCwgc2VlIGk5MTVfZ2VtX2luaXQoKSAqLwo+ICAJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ICAKPiAt CWlmIChIQVNfRURSQU0oZGV2X3ByaXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQo+ICsJ aWYgKEhBU19FRFJBTShkZXZfcHJpdikgJiYgSVNfR0VOX0xUKGRldl9wcml2LCA5KSkKPiAgCQlJ OTE1X1dSSVRFKEhTV19JRElDUiwgSTkxNV9SRUFEKEhTV19JRElDUikgfCBJRElIQVNITVNLKDB4 ZikpOwo+ICAKPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkKPiBAQCAtNTA5Niw3ICs1MDk2 LDcgQEAgaW50IGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJCQl1MzIgdGVtcCA9IEk5MTVfUkVBRChHRU43X01TR19DVEwpOwo+ICAJCQl0ZW1w ICY9IH4oV0FJVF9GT1JfUENIX0ZMUl9BQ0sgfCBXQUlUX0ZPUl9QQ0hfUkVTRVRfQUNLKTsKPiAg CQkJSTkxNV9XUklURShHRU43X01TR19DVEwsIHRlbXApOwo+IC0JCX0gZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA3KSB7Cj4gKwkJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2 LCA3KSkgewo+ICAJCQl1MzIgdGVtcCA9IEk5MTVfUkVBRChIU1dfTkRFX1JTVFdSTl9PUFQpOwo+ ICAJCQl0ZW1wICY9IH5SRVNFVF9QQ0hfSEFORFNIQUtFX0VOQUJMRTsKPiAgCQkJSTkxNV9XUklU RShIU1dfTkRFX1JTVFdSTl9PUFQsIHRlbXApOwo+IEBAIC01NDIwLDEwICs1NDIwLDEwIEBAIGk5 MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICB7Cj4gIAlpbnQgaTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3ICYm ICFJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJgo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDcpICYmICFJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJgo+ICAJICAgICFJU19DSEVSUllWSUVX KGRldl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3MgPSAzMjsKPiAtCWVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCB8fAo+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShk ZXZfcHJpdiwgNCkgfHwKPiAgCQkgSVNfSTk0NUcoZGV2X3ByaXYpIHx8IElTX0k5NDVHTShkZXZf cHJpdikgfHwKPiAgCQkgSVNfRzMzKGRldl9wcml2KSB8fCBJU19QSU5FVklFVyhkZXZfcHJpdikp Cj4gIAkJZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0gMTY7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDQ0MDEwNjhmZjQ2OC4uZjJkYTZlNmQy M2MwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ IEBAIC0yNTIyLDcgKzI1MjIsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJZXhlYzJfbGlzdFtpXS5yZWxvY3NfcHRyID0gZXhl Y19saXN0W2ldLnJlbG9jc19wdHI7Cj4gIAkJZXhlYzJfbGlzdFtpXS5hbGlnbm1lbnQgPSBleGVj X2xpc3RbaV0uYWxpZ25tZW50Owo+ICAJCWV4ZWMyX2xpc3RbaV0ub2Zmc2V0ID0gZXhlY19saXN0 W2ldLm9mZnNldDsKPiAtCQlpZiAoSU5URUxfR0VOKHRvX2k5MTUoZGV2KSkgPCA0KQo+ICsJCWlm IChJU19HRU5fTFQodG9faTkxNShkZXYpLCA0KSkKPiAgCQkJZXhlYzJfbGlzdFtpXS5mbGFncyA9 IEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOwo+ICAJCWVsc2UKPiAgCQkJZXhlYzJfbGlzdFtpXS5m bGFncyA9IDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Zl bmNlX3JlZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiBp bmRleCBiODMzOGQ3NWM2ZjMuLmZlNjllOTcwZDFlZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4gQEAgLTU1Nyw3ICs1NTcsNyBAQCBpOTE1X2dlbV9k ZXRlY3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAl1aW50MzJfdCBzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTjsKPiAgCXVp bnQzMl90IHN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOwo+ICAKPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggfHwgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsK PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA4KSB8fCBJU19WQUxMRVlWSUVXKGRldl9wcml2 KSkgewo+ICAJCS8qCj4gIAkJICogT24gQkRXKywgc3dpenpsaW5nIGlzIG5vdCB1c2VkLiBXZSBs ZWF2ZSB0aGUgQ1BVIG1lbW9yeQo+ICAJCSAqIGNvbnRyb2xsZXIgaW4gY2hhcmdlIG9mIG9wdGlt aXppbmcgbWVtb3J5IGFjY2Vzc2VzIHdpdGhvdXQKPiBAQCAtNTY3LDcgKzU2Nyw3IEBAIGk5MTVf Z2VtX2RldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCQkgKi8KPiAgCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKPiAg CQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKPiAtCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3By aXYsIDYpKSB7Cj4gIAkJaWYgKGRldl9wcml2LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUpIHsKPiAg CQkJaWYgKEk5MTVfUkVBRChESVNQX0FSQl9DVEwpICYKPiAgCQkJICAgIERJU1BfVElMRV9TVVJG QUNFX1NXSVpaTElORykgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXgg MGMwZjFhZmZkZGFkLi42ZmIwOTQ5ZmFjYjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwo+IEBAIC0xNTQsNyArMTU0LDcgQEAgaW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9w cGd0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkgKiBXZSBkb24ndCBh bGxvdyBkaXNhYmxpbmcgUFBHVFQgZm9yIGdlbjkrIGFzIGl0J3MgYSByZXF1aXJlbWVudCBmb3IK PiAgCSAqIGV4ZWNsaXN0cywgdGhlIHNvbGUgbWVjaGFuaXNtIGF2YWlsYWJsZSB0byBzdWJtaXQg d29yay4KPiAgCSAqLwo+IC0JaWYgKGVuYWJsZV9wcGd0dCA9PSAwICYmIElOVEVMX0dFTihkZXZf cHJpdikgPCA5KQo+ICsJaWYgKGVuYWJsZV9wcGd0dCA9PSAwICYmIElTX0dFTl9MVChkZXZfcHJp diwgOSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKGVuYWJsZV9wcGd0dCA9PSAxKQo+IEBA IC0yMTA5LDcgKzIxMDksNyBAQCBzdGF0aWMgaW50IF9faHdfcHBndHRfaW5pdChzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQsCj4gIAlwcGd0dC0+YmFzZS5pOTE1ID0gZGV2X3ByaXY7Cj4gIAlw cGd0dC0+YmFzZS5kbWEgPSAmZGV2X3ByaXYtPmRybS5wZGV2LT5kZXY7Cj4gIAo+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA4KQo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgOCkpCj4g IAkJcmV0dXJuIGdlbjZfcHBndHRfaW5pdChwcGd0dCk7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIGdl bjhfcHBndHRfaW5pdChwcGd0dCk7Cj4gQEAgLTIxNzAsNyArMjE3MCw3IEBAIHN0YXRpYyB2b2lk IGd0dF93cml0ZV93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAkgKiBkcml2ZXIuCj4gIAkgKi8KPiAgCWlmIChIQVNfUEFHRV9TSVpFUyhkZXZfcHJpdiwg STkxNV9HVFRfUEFHRV9TSVpFXzY0SykgJiYKPiAtCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpIDw9 IDEwKQo+ICsJICAgIElTX0dFTl9MVEUoZGV2X3ByaXYsIDEwKSkKPiAgCQlJOTE1X1dSSVRFKEdF TjhfR0FNV19FQ09fREVWX1JXX0lBLAo+ICAJCQkgICBJOTE1X1JFQUQoR0VOOF9HQU1XX0VDT19E RVZfUldfSUEpIHwKPiAgCQkJICAgR0FNV19FQ09fRU5BQkxFXzY0S19JUFNfRklFTEQpOwo+IEBA IC0yMTkzLDcgKzIxOTMsNyBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlnZW42X3BwZ3R0X2VuYWJsZShkZXZfcHJpdik7Cj4g IAllbHNlIGlmIChJU19HRU43KGRldl9wcml2KSkKPiAgCQlnZW43X3BwZ3R0X2VuYWJsZShkZXZf cHJpdik7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gKwllbHNlIGlm IChJU19HRU5fR1RFKGRldl9wcml2LCA4KSkKPiAgCQlnZW44X3BwZ3R0X2VuYWJsZShkZXZfcHJp dik7Cj4gIAllbHNlCj4gIAkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihkZXZfcHJpdikpOwo+IEBA IC0yMzM4LDkgKzIzMzgsOSBAQCBzdGF0aWMgdm9pZCBnZW44X2NoZWNrX2FuZF9jbGVhcl9mYXVs dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB2b2lkIGk5MTVfY2hlY2tf YW5kX2NsZWFyX2ZhdWx0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsK PiAgCS8qIEZyb20gR0VOOCBvbndhcmRzIHdlIG9ubHkgaGF2ZSBvbmUgJ0FsbCBFbmdpbmUgRmF1 bHQgUmVnaXN0ZXInICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+ICAJCWdlbjhfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0 cyhkZXZfcHJpdik7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gKwll bHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPiAgCQlnZW42X2NoZWNrX2FuZF9jbGVh cl9mYXVsdHMoZGV2X3ByaXYpOwo+ICAJZWxzZQo+ICAJCXJldHVybjsKPiBAQCAtMjM1Myw3ICsy MzUzLDcgQEAgdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkvKiBEb24ndCBib3RoZXIgbWVzc2luZyB3aXRoIGZh dWx0cyBwcmUgR0VONiBhcyB3ZSBoYXZlIGxpdHRsZQo+ICAJICogZG9jdW1lbnRhdGlvbiBzdXBw b3J0aW5nIHRoYXQgaXQncyBhIGdvb2QgaWRlYS4KPiAgCSAqLwo+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCA2KQo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNikpCj4gIAkJcmV0dXJu Owo+ICAKPiAgCWk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhkZXZfcHJpdik7Cj4gQEAgLTI5 OTksNyArMjk5OSw3IEBAIHN0YXRpYyBpbnQgZ2d0dF9wcm9iZV9jb21tb24oc3RydWN0IGk5MTVf Z2d0dCAqZ2d0dCwgdTY0IHNpemUpCj4gIAkgKiByZXNvcnQgdG8gYW4gdW5jYWNoZWQgbWFwcGlu Zy4gVGhlIFdDIGlzc3VlIGlzIGVhc2lseSBjYXVnaHQgYnkgdGhlCj4gIAkgKiByZWFkYmFjayBj aGVjayB3aGVuIHdyaXRpbmcgR1RUIFBURSBlbnRyaWVzLgo+ICAJICovCj4gLQlpZiAoSVNfR0VO OV9MUChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiArCWlmIChJU19H RU45X0xQKGRldl9wcml2KSB8fCBJU19HRU5fR1RFKGRldl9wcml2LCAxMCkpCj4gIAkJZ2d0dC0+ Z3NtID0gaW9yZW1hcF9ub2NhY2hlKHBoeXNfYWRkciwgc2l6ZSk7Cj4gIAllbHNlCj4gIAkJZ2d0 dC0+Z3NtID0gaW9yZW1hcF93YyhwaHlzX2FkZHIsIHNpemUpOwo+IEBAIC0zMjk0LDcgKzMyOTQs NyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9wcml2YXRlX3BhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAo+ICAJcHBhdC0+aTkxNSA9IGRldl9wcml2Owo+ICAKPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDEw KSkKPiAgCQljbmxfc2V0dXBfcHJpdmF0ZV9wcGF0KHBwYXQpOwo+ICAJZWxzZSBpZiAoSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikgfHwgSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJY2h2X3NldHVw X3ByaXZhdGVfcHBhdChwcGF0KTsKPiBAQCAtMzMzNCw3ICszMzM0LDcgQEAgc3RhdGljIGludCBn ZW44X2dtY2hfcHJvYmUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPiAgCj4gIAlwY2lfcmVhZF9j b25maWdfd29yZChwZGV2LCBTTkJfR01DSF9DVFJMLCAmc25iX2dtY2hfY3RsKTsKPiAgCj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgOSkpIHsKPiAgCQlzaXplID0gZ2VuOF9nZXRfdG90YWxfZ3R0X3NpemUoc25iX2dtY2hfY3Rs KTsKPiAgCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQlzaXplID0g Y2h2X2dldF90b3RhbF9ndHRfc2l6ZShzbmJfZ21jaF9jdGwpOwo+IEBAIC0zNDE4LDcgKzM0MTgs NyBAQCBzdGF0aWMgaW50IGdlbjZfZ21jaF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+ ICAJCWdndHQtPmJhc2UucHRlX2VuY29kZSA9IGhzd19wdGVfZW5jb2RlOwo+ICAJZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gIAkJZ2d0dC0+YmFzZS5wdGVfZW5jb2RlID0gYnl0 X3B0ZV9lbmNvZGU7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpCj4gKwll bHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA3KSkKPiAgCQlnZ3R0LT5iYXNlLnB0ZV9lbmNv ZGUgPSBpdmJfcHRlX2VuY29kZTsKPiAgCWVsc2UKPiAgCQlnZ3R0LT5iYXNlLnB0ZV9lbmNvZGUg PSBzbmJfcHRlX2VuY29kZTsKPiBAQCAtMzQ4MSw5ICszNDgxLDkgQEAgaW50IGk5MTVfZ2d0dF9w cm9iZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlnZ3R0LT5iYXNl Lmk5MTUgPSBkZXZfcHJpdjsKPiAgCWdndHQtPmJhc2UuZG1hID0gJmRldl9wcml2LT5kcm0ucGRl di0+ZGV2Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDUpCj4gKwlpZiAoSVNf R0VOX0xURShkZXZfcHJpdiwgNSkpCj4gIAkJcmV0ID0gaTkxNV9nbWNoX3Byb2JlKGdndHQpOwo+ IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDgpCj4gKwllbHNlIGlmIChJU19HRU5f TFQoZGV2X3ByaXYsIDgpKQo+ICAJCXJldCA9IGdlbjZfZ21jaF9wcm9iZShnZ3R0KTsKPiAgCWVs c2UKPiAgCQlyZXQgPSBnZW44X2dtY2hfcHJvYmUoZ2d0dCk7Cj4gQEAgLTM1NzQsNyArMzU3NCw3 IEBAIGludCBpOTE1X2dndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAo+ICBpbnQgaTkxNV9nZ3R0X2VuYWJsZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNiAmJiAhaW50 ZWxfZW5hYmxlX2d0dCgpKQo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNikgJiYgIWludGVs X2VuYWJsZV9ndHQoKSkKPiAgCQlyZXR1cm4gLUVJTzsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAt MzYzMSw3ICszNjMxLDcgQEAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJZ2d0dC0+YmFzZS5jbG9zZWQg PSBmYWxzZTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gKwlpZiAo SVNfR0VOX0dURShkZXZfcHJpdiwgOCkpIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfcHBhdCAqcHBhdCA9 ICZkZXZfcHJpdi0+cHBhdDsKPiAgCj4gIAkJYml0bWFwX3NldChwcGF0LT5kaXJ0eSwgMCwgcHBh dC0+bWF4X2VudHJpZXMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMK PiBpbmRleCBhOGViMjJhOTViMGYuLjM4YTMzNTJlODI3YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiBAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lk IG1hcmtfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIAlpbnRlbF9l bmFibGVfZ3RfcG93ZXJzYXZlKGk5MTUpOwo+ICAJaTkxNV91cGRhdGVfZ2Z4X3ZhbChpOTE1KTsK PiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKPiArCWlmIChJU19HRU5fR1RFKGk5MTUsIDYp KQo+ICAJCWdlbjZfcnBzX2J1c3koaTkxNSk7Cj4gIAlpOTE1X3BtdV9ndF91bnBhcmtlZChpOTE1 KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xl bi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBpbmRleCBmMThk YTllMmJlOGUuLjVjNzI0NmRiMDZhMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9zdG9sZW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3N0b2xlbi5jCj4gQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGludCBpOTE1X2FkanVzdF9zdG9s ZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICovCj4gIAo+ICAJLyog TWFrZSBzdXJlIHdlIGRvbid0IGNsb2JiZXIgdGhlIEdUVCBpZiBpdCdzIHdpdGhpbiBzdG9sZW4g bWVtb3J5ICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmCj4gKwlpZiAoSVNf R0VOX0xURShkZXZfcHJpdiwgNCkgJiYKPiAgCSAgICAhSVNfRzMzKGRldl9wcml2KSAmJiAhSVNf UElORVZJRVcoZGV2X3ByaXYpICYmICFJU19HNFgoZGV2X3ByaXYpKSB7Cj4gIAkJc3RydWN0IHJl c291cmNlIHN0b2xlblsyXSA9IHsqZHNtLCAqZHNtfTsKPiAgCQlzdHJ1Y3QgcmVzb3VyY2UgZ2d0 dF9yZXM7Cj4gQEAgLTMzNiw3ICszMzYsNyBAQCBpbnQgaTkxNV9nZW1faW5pdF9zdG9sZW4oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCXJldHVybiAwOwo+ICAJfQo+ICAK PiAtCWlmIChpbnRlbF92dGRfYWN0aXZlKCkgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDgpIHsK PiArCWlmIChpbnRlbF92dGRfYWN0aXZlKCkgJiYgSVNfR0VOX0xUKGRldl9wcml2LCA4KSkgewo+ ICAJCURSTV9JTkZPKCJETUFSIGFjdGl2ZSwgZGlzYWJsaW5nIHVzZSBvZiBzdG9sZW4gbWVtb3J5 XG4iKTsKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiBAQCAtNDEyLDcgKzQxMiw3IEBAIGludCBpOTE1 X2dlbV9pbml0X3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ ICAJc3RvbGVuX3VzYWJsZV9zdGFydCA9IDA7Cj4gIAkvKiBXYVNraXBTdG9sZW5NZW1vcnlGaXJz dFBhZ2U6YmR3KyAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA4KSkKPiAgCQlzdG9sZW5fdXNhYmxlX3N0YXJ0ID0gNDA5NjsK PiAgCj4gIAlkZXZfcHJpdi0+c3RvbGVuX3VzYWJsZV9zaXplID0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aWxpbmcuYwo+IGluZGV4IGQ5ZGM5ZGY1MjNiNS4uOGExZTcwODI1NzlhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiBAQCAtODAsNyArODAs NyBAQCB1MzIgaTkxNV9nZW1fZmVuY2Vfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKPiAgCj4gIAlHRU1fQlVHX09OKCFzdHJpZGUpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oaTkx NSkgPj0gNCkgewo+ICsJaWYgKElTX0dFTl9HVEUoaTkxNSwgNCkpIHsKPiAgCQlzdHJpZGUgKj0g aTkxNV9nZW1fdGlsZV9oZWlnaHQodGlsaW5nKTsKPiAgCQlHRU1fQlVHX09OKCFJU19BTElHTkVE KHN0cmlkZSwgSTk2NV9GRU5DRV9QQUdFKSk7Cj4gIAkJcmV0dXJuIHJvdW5kdXAoc2l6ZSwgc3Ry aWRlKTsKPiBAQCAtMTIwLDcgKzEyMCw3IEBAIHUzMiBpOTE1X2dlbV9mZW5jZV9hbGlnbm1lbnQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBzaXplLAo+ICAJaWYgKHRpbGluZyA9 PSBJOTE1X1RJTElOR19OT05FKQo+ICAJCXJldHVybiBJOTE1X0dUVF9NSU5fQUxJR05NRU5UOwo+ ICAKPiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCkKPiArCWlmIChJU19HRU5fR1RFKGk5MTUs IDQpKQo+ICAJCXJldHVybiBJOTY1X0ZFTkNFX1BBR0U7Cj4gIAo+ICAJLyoKPiBAQCAtMTQ4LDEw ICsxNDgsMTAgQEAgaTkxNV90aWxpbmdfb2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPiAgCS8qIGNoZWNrIG1heGltdW0gc3RyaWRlICYgb2JqZWN0IHNpemUgKi8KPiAgCS8qIGk5 NjUrIHN0b3JlcyB0aGUgZW5kIGFkZHJlc3Mgb2YgdGhlIGd0dCBtYXBwaW5nIGluIHRoZSBmZW5j ZQo+ICAJICogcmVnLCBzbyBkb250IGJvdGhlciB0byBjaGVjayB0aGUgc2l6ZSAqLwo+IC0JaWYg KElOVEVMX0dFTihpOTE1KSA+PSA3KSB7Cj4gKwlpZiAoSVNfR0VOX0dURShpOTE1LCA3KSkgewo+ ICAJCWlmIChzdHJpZGUgLyAxMjggPiBHRU43X0ZFTkNFX01BWF9QSVRDSF9WQUwpCj4gIAkJCXJl dHVybiBmYWxzZTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDQpIHsKPiArCX0g ZWxzZSBpZiAoSVNfR0VOX0dURShpOTE1LCA0KSkgewo+ICAJCWlmIChzdHJpZGUgLyAxMjggPiBJ OTY1X0ZFTkNFX01BWF9QSVRDSF9WQUwpCj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCX0gZWxzZSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggNjdjOTAyNDEyMTkz Li5jNWE3ZWQ0ZDljMWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMK PiBAQCAtMzc2LDEzICszNzYsMTMgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUo c3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAgCWVycl9wcmludGYobSwgIiAg SU5TVERPTkU6IDB4JTA4eFxuIiwKPiAgCQkgICBlZS0+aW5zdGRvbmUuaW5zdGRvbmUpOwo+ICAK PiAtCWlmIChlZS0+ZW5naW5lX2lkICE9IFJDUyB8fCBJTlRFTF9HRU4obS0+aTkxNSkgPD0gMykK PiArCWlmIChlZS0+ZW5naW5lX2lkICE9IFJDUyB8fCBJU19HRU5fTFRFKG0tPmk5MTUsIDMpKQo+ ICAJCXJldHVybjsKPiAgCj4gIAllcnJfcHJpbnRmKG0sICIgIFNDX0lOU1RET05FOiAweCUwOHhc biIsCj4gIAkJICAgZWUtPmluc3Rkb25lLnNsaWNlX2NvbW1vbik7Cj4gIAo+IC0JaWYgKElOVEVM X0dFTihtLT5pOTE1KSA8PSA2KQo+ICsJaWYgKElTX0dFTl9MVEUobS0+aTkxNSwgNikpCj4gIAkJ cmV0dXJuOwo+ICAKPiAgCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKG0tPmk5MTUs IHNsaWNlLCBzdWJzbGljZSkKPiBAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyB2b2lkIGVycm9y X3ByaW50X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAJCQkg ICB1cHBlcl8zMl9iaXRzKHN0YXJ0KSwgbG93ZXJfMzJfYml0cyhzdGFydCksCj4gIAkJCSAgIHVw cGVyXzMyX2JpdHMoZW5kKSwgbG93ZXJfMzJfYml0cyhlbmQpKTsKPiAgCX0KPiAtCWlmIChJTlRF TF9HRU4obS0+aTkxNSkgPj0gNCkgewo+ICsJaWYgKElTX0dFTl9HVEUobS0+aTkxNSwgNCkpIHsK PiAgCQllcnJfcHJpbnRmKG0sICIgIEJCQUREUjogMHglMDh4XyUwOHhcbiIsCj4gIAkJCSAgICh1 MzIpKGVlLT5iYmFkZHI+PjMyKSwgKHUzMillZS0+YmJhZGRyKTsKPiAgCQllcnJfcHJpbnRmKG0s ICIgIEJCX1NUQVRFOiAweCUwOHhcbiIsIGVlLT5iYnN0YXRlKTsKPiBAQCAtNDY0LDcgKzQ2NCw3 IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jf c3RhdGVfYnVmICptLAo+ICAJZXJyX3ByaW50ZihtLCAiICBJTlNUUE06IDB4JTA4eFxuIiwgZWUt Pmluc3RwbSk7Cj4gIAllcnJfcHJpbnRmKG0sICIgIEZBRERSOiAweCUwOHggJTA4eFxuIiwgdXBw ZXJfMzJfYml0cyhlZS0+ZmFkZHIpLAo+ICAJCSAgIGxvd2VyXzMyX2JpdHMoZWUtPmZhZGRyKSk7 Cj4gLQlpZiAoSU5URUxfR0VOKG0tPmk5MTUpID49IDYpIHsKPiArCWlmIChJU19HRU5fR1RFKG0t Pmk5MTUsIDYpKSB7Cj4gIAkJZXJyX3ByaW50ZihtLCAiICBSQyBQU01JOiAweCUwOHhcbiIsIGVl LT5yY19wc21pKTsKPiAgCQllcnJfcHJpbnRmKG0sICIgIEZBVUxUX1JFRzogMHglMDh4XG4iLCBl ZS0+ZmF1bHRfcmVnKTsKPiAgCQllcnJfcHJpbnRmKG0sICIgIFNZTkNfMDogMHglMDh4XG4iLAo+ IEBAIC00NzgsNyArNDc4LDcgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfZW5naW5lKHN0cnVj dCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gIAlpZiAoVVNFU19QUEdUVChtLT5pOTE1 KSkgewo+ICAJCWVycl9wcmludGYobSwgIiAgR0ZYX01PREU6IDB4JTA4eFxuIiwgZWUtPnZtX2lu Zm8uZ2Z4X21vZGUpOwo+ICAKPiAtCQlpZiAoSU5URUxfR0VOKG0tPmk5MTUpID49IDgpIHsKPiAr CQlpZiAoSVNfR0VOX0dURShtLT5pOTE1LCA4KSkgewo+ICAJCQlpbnQgaTsKPiAgCQkJZm9yIChp ID0gMDsgaSA8IDQ7IGkrKykKPiAgCQkJCWVycl9wcmludGYobSwgIiAgUERQJWQ6IDB4JTAxNmxs eFxuIiwKPiBAQCAtNjkxLDEwICs2OTEsMTAgQEAgaW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3Ry KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gIAlmb3IgKGkgPSAwOyBpIDwg ZXJyb3ItPm5mZW5jZTsgaSsrKQo+ICAJCWVycl9wcmludGYobSwgIiAgZmVuY2VbJWRdID0gJTA4 bGx4XG4iLCBpLCBlcnJvci0+ZmVuY2VbaV0pOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDYpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+ICAJCWVycl9w cmludGYobSwgIkVSUk9SOiAweCUwOHhcbiIsIGVycm9yLT5lcnJvcik7Cj4gIAo+IC0JCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgp KQo+ICAJCQllcnJfcHJpbnRmKG0sICJGQVVMVF9UTEJfREFUQTogMHglMDh4IDB4JTA4eFxuIiwK PiAgCQkJCSAgIGVycm9yLT5mYXVsdF9kYXRhMSwgZXJyb3ItPmZhdWx0X2RhdGEwKTsKPiAgCj4g QEAgLTEwODcsMTAgKzEwODcsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX2ZlbmNl cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHsKPiAgCWludCBpOwo+ICAK PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA2KSkgewo+ICAJCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX2ZlbmNlX3Jl Z3M7IGkrKykKPiAgCQkJZXJyb3ItPmZlbmNlW2ldID0gSTkxNV9SRUFENjQoRkVOQ0VfUkVHX0dF TjZfTE8oaSkpOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiAr CX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpIHsKPiAgCQlmb3IgKGkgPSAwOyBp IDwgZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzOyBpKyspCj4gIAkJCWVycm9yLT5mZW5jZVtpXSA9 IEk5MTVfUkVBRDY0KEZFTkNFX1JFR185NjVfTE8oaSkpOwo+ICAJfSBlbHNlIHsKPiBAQCAtMTE5 Miw5ICsxMTkyLDkgQEAgc3RhdGljIHZvaWQgZXJyb3JfcmVjb3JkX2VuZ2luZV9yZWdpc3RlcnMo c3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDYpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+ICAJCWVl LT5yY19wc21pID0gSTkxNV9SRUFEKFJJTkdfUFNNSV9DVEwoZW5naW5lLT5tbWlvX2Jhc2UpKTsK PiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gKwkJaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDgpKSB7Cj4gIAkJCWVlLT5mYXVsdF9yZWcgPSBJOTE1X1JFQUQoR0VOOF9SSU5H X0ZBVUxUX1JFRyk7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJZ2VuNl9yZWNvcmRfc2VtYXBob3JlX3N0 YXRlKGVuZ2luZSwgZWUpOwo+IEBAIC0xMjAyLDEzICsxMjAyLDEzIEBAIHN0YXRpYyB2b2lkIGVy cm9yX3JlY29yZF9lbmdpbmVfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3Is Cj4gIAkJfQo+ICAJfQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiAr CWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+ICAJCWVlLT5mYWRkciA9IEk5MTVfUkVB RChSSU5HX0RNQV9GQUREKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gIAkJZWUtPmlwZWlyID0gSTkx NV9SRUFEKFJJTkdfSVBFSVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAgCQllZS0+aXBlaHIgPSBJ OTE1X1JFQUQoUklOR19JUEVIUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+ICAJCWVlLT5pbnN0cHMg PSBJOTE1X1JFQUQoUklOR19JTlNUUFMoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAgCQllZS0+YmJh ZGRyID0gSTkxNV9SRUFEKFJJTkdfQkJBRERSKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gLQkJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICsJCWlmIChJU19HRU5fR1RFKGRldl9wcml2 LCA4KSkgewo+ICAJCQllZS0+ZmFkZHIgfD0gKHU2NCkgSTkxNV9SRUFEKFJJTkdfRE1BX0ZBRERf VURXKGVuZ2luZS0+bW1pb19iYXNlKSkgPDwgMzI7Cj4gIAkJCWVlLT5iYmFkZHIgfD0gKHU2NCkg STkxNV9SRUFEKFJJTkdfQkJBRERSX1VEVyhlbmdpbmUtPm1taW9fYmFzZSkpIDw8IDMyOwo+ICAJ CX0KPiBAQCAtMTIzMCw3ICsxMjMwLDcgQEAgc3RhdGljIHZvaWQgZXJyb3JfcmVjb3JkX2VuZ2lu ZV9yZWdpc3RlcnMoc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwKPiAgCWVlLT5oZWFkID0g STkxNV9SRUFEX0hFQUQoZW5naW5lKTsKPiAgCWVlLT50YWlsID0gSTkxNV9SRUFEX1RBSUwoZW5n aW5lKTsKPiAgCWVlLT5jdGwgPSBJOTE1X1JFQURfQ1RMKGVuZ2luZSk7Cj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+IDIpCj4gKwlpZiAoSVNfR0VOX0dUKGRldl9wcml2LCAyKSkKPiAgCQll ZS0+bW9kZSA9IEk5MTVfUkVBRF9NT0RFKGVuZ2luZSk7Cj4gIAo+ICAJaWYgKCFIV1NfTkVFRFNf UEhZU0lDQUwoZGV2X3ByaXYpKSB7Cj4gQEAgLTEyODAsNyArMTI4MCw3IEBAIHN0YXRpYyB2b2lk IGVycm9yX3JlY29yZF9lbmdpbmVfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJy b3IsCj4gIAkJZWxzZSBpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gIAkJCWVlLT52bV9pbmZvLnBw X2Rpcl9iYXNlID0KPiAgCQkJCUk5MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkpOwo+ IC0JCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiArCQllbHNlIGlmIChJU19H RU5fR1RFKGRldl9wcml2LCA4KSkKPiAgCQkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+ICAJ CQkJZWUtPnZtX2luZm8ucGRwW2ldID0KPiAgCQkJCQlJOTE1X1JFQUQoR0VOOF9SSU5HX1BEUF9V RFcoZW5naW5lLCBpKSk7Cj4gQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHN0YXRpYyB2b2lkIGk5MTVf Y2FwdHVyZV9yZWdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ aWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ICAJCWVycm9yLT5lcnJfaW50ID0gSTkxNV9SRUFEKEdF TjdfRVJSX0lOVCk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICsJ aWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKSB7Cj4gIAkJZXJyb3ItPmZhdWx0X2RhdGEwID0g STkxNV9SRUFEKEdFTjhfRkFVTFRfVExCX0RBVEEwKTsKPiAgCQllcnJvci0+ZmF1bHRfZGF0YTEg PSBJOTE1X1JFQUQoR0VOOF9GQVVMVF9UTEJfREFUQTEpOwo+ICAJfQo+IEBAIC0xNjU5LDE2ICsx NjU5LDE2IEBAIHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJfQo+ICAKPiAgCS8qIDI6IFJlZ2lzdGVycyB3aGlj aCBiZWxvbmcgdG8gbXVsdGlwbGUgZ2VuZXJhdGlvbnMgKi8KPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDcpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNykpCj4gIAkJZXJyb3It PmZvcmNld2FrZSA9IEk5MTVfUkVBRF9GVyhGT1JDRVdBS0VfTVQpOwo+ICAKPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkg ewo+ICAJCWVycm9yLT5kZXJybXIgPSBJOTE1X1JFQUQoREVSUk1SKTsKPiAgCQllcnJvci0+ZXJy b3IgPSBJOTE1X1JFQUQoRVJST1JfR0VONik7Cj4gIAkJZXJyb3ItPmRvbmVfcmVnID0gSTkxNV9S RUFEKERPTkVfUkVHKTsKPiAgCX0KPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1 KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKQo+ICAJCWVycm9yLT5jY2lkID0gSTkx NV9SRUFEKENDSUQpOwo+ICAKPiAgCS8qIDM6IEZlYXR1cmUgc3BlY2lmaWMgcmVnaXN0ZXJzICov Cj4gQEAgLTE2NzgsNyArMTY3OCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJfQo+ICAKPiAgCS8qIDQ6 IEV2ZXJ5dGhpbmcgZWxzZSAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKSB7Cj4gIAkJZXJyb3ItPmllciA9IEk5MTVf UkVBRChHRU44X0RFX01JU0NfSUVSKTsKPiAgCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQo+ICAJ CQllcnJvci0+Z3RpZXJbaV0gPSBJOTE1X1JFQUQoR0VOOF9HVF9JRVIoaSkpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYwo+IGluZGV4IGI4ODZiZDQ1OWFjYy4uZjAyZDY4MmE1Y2E5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTMwOCwxNyArMzA4LDE3IEBAIHZvaWQgZ2VuNV9k aXNhYmxlX2d0X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90 IG1hc2spCj4gIAo+ICBzdGF0aWMgaTkxNV9yZWdfdCBnZW42X3BtX2lpcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDggPyBHRU44X0dUX0lJUigyKSA6IEdFTjZfUE1JSVI7Cj4gKwlyZXR1cm4gSVNfR0VOX0dU RShkZXZfcHJpdiwgOCkgPyBHRU44X0dUX0lJUigyKSA6IEdFTjZfUE1JSVI7Cj4gIH0KPiAgCj4g IHN0YXRpYyBpOTE1X3JlZ190IGdlbjZfcG1faW1yKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgewo+IC0JcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCA/IEdFTjhf R1RfSU1SKDIpIDogR0VONl9QTUlNUjsKPiArCXJldHVybiBJU19HRU5fR1RFKGRldl9wcml2LCA4 KSA/IEdFTjhfR1RfSU1SKDIpIDogR0VONl9QTUlNUjsKPiAgfQo+ICAKPiAgc3RhdGljIGk5MTVf cmVnX3QgZ2VuNl9wbV9pZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7 Cj4gLQlyZXR1cm4gSU5URUxfR0VOKGRldl9wcml2KSA+PSA4ID8gR0VOOF9HVF9JRVIoMikgOiBH RU42X1BNSUVSOwo+ICsJcmV0dXJuIElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpID8gR0VOOF9HVF9J RVIoMikgOiBHRU42X1BNSUVSOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtNTg1LDcgKzU4NSw3IEBA IHUzMiBpOTE1X3BpcGVzdGF0X2VuYWJsZV9tYXNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+aXJxX2xvY2sp Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkKPiArCWlmIChJU19HRU5fTFQo ZGV2X3ByaXYsIDUpKQo+ICAJCWdvdG8gb3V0Owo+ICAKPiAgCS8qCj4gQEAgLTY3Niw3ICs2NzYs NyBAQCBzdGF0aWMgdm9pZCBpOTE1X2VuYWJsZV9hc2xlX3BpcGVzdGF0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9j ayk7Cj4gIAo+ICAJaTkxNV9lbmFibGVfcGlwZXN0YXQoZGV2X3ByaXYsIFBJUEVfQiwgUElQRV9M RUdBQ1lfQkxDX0VWRU5UX1NUQVRVUyk7Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0 KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+ICAJCWk5MTVfZW5hYmxlX3BpcGVz dGF0KGRldl9wcml2LCBQSVBFX0EsCj4gIAkJCQkgICAgIFBJUEVfTEVHQUNZX0JMQ19FVkVOVF9T VEFUVVMpOwo+ICAKPiBAQCAtOTQ3LDcgKzk0Nyw3IEBAIHN0YXRpYyBib29sIGk5MTVfZ2V0X2Ny dGNfc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwK PiAgCWlmIChzdGltZSkKPiAgCQkqc3RpbWUgPSBrdGltZV9nZXQoKTsKPiAgCj4gLQlpZiAoSVNf R0VOMihkZXZfcHJpdikgfHwgSVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDUpIHsKPiArCWlmIChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpIHx8 IElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4gIAkJLyogTm8gb2J2aW91cyBwaXhlbGNvdW50 IHJlZ2lzdGVyLiBPbmx5IHF1ZXJ5IHZlcnRpY2FsCj4gIAkJICogc2Nhbm91dCBwb3NpdGlvbiBm cm9tIERpc3BsYXkgc2NhbiBsaW5lIHJlZ2lzdGVyLgo+ICAJCSAqLwo+IEBAIC0xMDA3LDcgKzEw MDcsNyBAQCBzdGF0aWMgYm9vbCBpOTE1X2dldF9jcnRjX3NjYW5vdXRwb3Moc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4gIAllbHNlCj4gIAkJcG9zaXRpb24gKz0g dnRvdGFsIC0gdmJsX2VuZDsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikgfHwgSVNfRzRY KGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiArCWlmIChJU19HRU4y KGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpIHx8IElTX0dFTl9HVEUoZGV2X3ByaXYsIDUp KSB7Cj4gIAkJKnZwb3MgPSBwb3NpdGlvbjsKPiAgCQkqaHBvcyA9IDA7Cj4gIAl9IGVsc2Ugewo+ IEBAIC0xNjUyLDcgKzE2NTIsNyBAQCBzdGF0aWMgdm9pZCBkaXNwbGF5X3BpcGVfY3JjX2lycV9o YW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkgKiBkb24ndCB0 cnVzdCB0aGF0IG9uZSBlaXRoZXIuCj4gIAkJICovCj4gIAkJaWYgKHBpcGVfY3JjLT5za2lwcGVk ID09IDAgfHwKPiAtCQkgICAgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCAmJiBwaXBlX2NyYy0+ c2tpcHBlZCA9PSAxKSkgewo+ICsJCSAgICAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkgJiYgcGlw ZV9jcmMtPnNraXBwZWQgPT0gMSkpIHsKPiAgCQkJcGlwZV9jcmMtPnNraXBwZWQrKzsKPiAgCQkJ c3Bpbl91bmxvY2soJnBpcGVfY3JjLT5sb2NrKTsKPiAgCQkJcmV0dXJuOwo+IEBAIC0xNzAyLDEy ICsxNzAyLDEyIEBAIHN0YXRpYyB2b2lkIGk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICB7Cj4gIAl1aW50MzJfdCByZXMxLCByZXMy Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDMpCj4gKwlpZiAoSVNfR0VOX0dU RShkZXZfcHJpdiwgMykpCj4gIAkJcmVzMSA9IEk5MTVfUkVBRChQSVBFX0NSQ19SRVNfUkVTMV9J OTE1KHBpcGUpKTsKPiAgCWVsc2UKPiAgCQlyZXMxID0gMDsKPiAgCj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOX0dURShk ZXZfcHJpdiwgNSkgfHwgSVNfRzRYKGRldl9wcml2KSkKPiAgCQlyZXMyID0gSTkxNV9SRUFEKFBJ UEVfQ1JDX1JFU19SRVMyX0c0WChwaXBlKSk7Cj4gIAllbHNlCj4gIAkJcmVzMiA9IDA7Cj4gQEAg LTE3MzYsNyArMTczNiw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBtX2lpcikKPiAgCQlzcGluX3VubG9j aygmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiAgCX0KPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA4KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+ICAJCXJldHVybjsK PiAgCj4gIAlpZiAoSEFTX1ZFQk9YKGRldl9wcml2KSkgewo+IEBAIC0yNDgyLDcgKzI0ODIsNyBA QCBzdGF0aWMgaXJxcmV0dXJuX3QgaXJvbmxha2VfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq YXJnKQo+ICAJaWYgKGd0X2lpcikgewo+ICAJCUk5MTVfV1JJVEUoR1RJSVIsIGd0X2lpcik7Cj4g IAkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikK PiArCQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4gIAkJCXNuYl9ndF9pcnFfaGFuZGxl cihkZXZfcHJpdiwgZ3RfaWlyKTsKPiAgCQllbHNlCj4gIAkJCWlsa19ndF9pcnFfaGFuZGxlcihk ZXZfcHJpdiwgZ3RfaWlyKTsKPiBAQCAtMjQ5MiwxMyArMjQ5MiwxMyBAQCBzdGF0aWMgaXJxcmV0 dXJuX3QgaXJvbmxha2VfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ICAJaWYgKGRl X2lpcikgewo+ICAJCUk5MTVfV1JJVEUoREVJSVIsIGRlX2lpcik7Cj4gIAkJcmV0ID0gSVJRX0hB TkRMRUQ7Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykKPiArCQlpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgNykpCj4gIAkJCWl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKGRldl9wcml2 LCBkZV9paXIpOwo+ICAJCWVsc2UKPiAgCQkJaWxrX2Rpc3BsYXlfaXJxX2hhbmRsZXIoZGV2X3By aXYsIGRlX2lpcik7Cj4gIAl9Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikg ewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7Cj4gIAkJdTMyIHBtX2lpciA9IEk5 MTVfUkVBRChHRU42X1BNSUlSKTsKPiAgCQlpZiAocG1faWlyKSB7Cj4gIAkJCUk5MTVfV1JJVEUo R0VONl9QTUlJUiwgcG1faWlyKTsKPiBAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgZ2VuOF9kZV9pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXN0ZXJfY3Rs KQo+ICAJCQlyZXQgPSBJUlFfSEFORExFRDsKPiAgCj4gIAkJCXRtcF9tYXNrID0gR0VOOF9BVVhf Q0hBTk5FTF9BOwo+IC0JCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJCQlpZiAo SVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJCQl0bXBfbWFzayB8PSBHRU45X0FVWF9DSEFO TkVMX0IgfAo+ICAJCQkJCSAgICBHRU45X0FVWF9DSEFOTkVMX0MgfAo+ICAJCQkJCSAgICBHRU45 X0FVWF9DSEFOTkVMX0Q7Cj4gQEAgLTI2MzMsNyArMjYzMyw3IEBAIGdlbjhfZGVfaXJxX2hhbmRs ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzdGVyX2N0bCkKPiAg CQkJaW50ZWxfY3B1X2ZpZm9fdW5kZXJydW5faXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpcGUpOwo+ ICAKPiAgCQlmYXVsdF9lcnJvcnMgPSBpaXI7Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSkKPiArCQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJCWZhdWx0X2Vycm9y cyAmPSBHRU45X0RFX1BJUEVfSVJRX0ZBVUxUX0VSUk9SUzsKPiAgCQllbHNlCj4gIAkJCWZhdWx0 X2Vycm9ycyAmPSBHRU44X0RFX1BJUEVfSVJRX0ZBVUxUX0VSUk9SUzsKPiBAQCAtMjgwMiw3ICsy ODAyLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9jbGVhcl9lcnJvcl9yZWdpc3RlcnMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKCFJU19HRU4yKGRldl9wcml2KSkKPiAg CQlJOTE1X1dSSVRFKFBHVEJMX0VSLCBJOTE1X1JFQUQoUEdUQkxfRVIpKTsKPiAgCj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA0KSkK PiAgCQlJOTE1X1dSSVRFKElQRUlSLCBJOTE1X1JFQUQoSVBFSVIpKTsKPiAgCWVsc2UKPiAgCQlJ OTE1X1dSSVRFKElQRUlSX0k5NjUsIEk5MTVfUkVBRChJUEVJUl9JOTY1KSk7Cj4gQEAgLTI5NDQs NyArMjk0NCw3IEBAIHN0YXRpYyBpbnQgaXJvbmxha2VfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFm bGFnczsKPiAtCXVpbnQzMl90IGJpdCA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNyA/Cj4gKwl1 aW50MzJfdCBiaXQgPSBJU19HRU5fR1RFKGRldl9wcml2LCA3KSA/Cj4gIAkJREVfUElQRV9WQkxB TktfSVZCKHBpcGUpIDogREVfUElQRV9WQkxBTksocGlwZSk7Cj4gIAo+ICAJc3Bpbl9sb2NrX2ly cXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOwo+IEBAIC0yOTk0LDcgKzI5OTQs NyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsK PiAtCXVpbnQzMl90IGJpdCA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNyA/Cj4gKwl1aW50MzJf dCBiaXQgPSBJU19HRU5fR1RFKGRldl9wcml2LCA3KSA/Cj4gIAkJREVfUElQRV9WQkxBTktfSVZC KHBpcGUpIDogREVfUElQRV9WQkxBTksocGlwZSk7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycXNhdmUo JmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOwo+IEBAIC0zMDQ2LDcgKzMwNDYsNyBAQCBz dGF0aWMgdm9pZCBpYnhfaXJxX3ByZV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICBzdGF0aWMgdm9pZCBnZW41X2d0X2lycV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCUdFTjNfSVJRX1JFU0VUKEdUKTsKPiAtCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDYpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4gIAkJ R0VOM19JUlFfUkVTRVQoR0VONl9QTSk7Cj4gIH0KPiAgCj4gQEAgLTMzMzAsMTIgKzMzMzAsMTIg QEAgc3RhdGljIHZvaWQgaWxrX2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICB7Cj4gIAl1MzIgaG90cGx1Z19pcnFzLCBlbmFibGVkX2lycXM7Cj4gIAo+ IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2 X3ByaXYsIDgpKSB7Cj4gIAkJaG90cGx1Z19pcnFzID0gR0VOOF9QT1JUX0RQX0FfSE9UUExVRzsK PiAgCQllbmFibGVkX2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldl9wcml2LCBocGRf YmR3KTsKPiAgCj4gIAkJYmR3X3VwZGF0ZV9wb3J0X2lycShkZXZfcHJpdiwgaG90cGx1Z19pcnFz LCBlbmFibGVkX2lycXMpOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcp IHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNykpIHsKPiAgCQlob3RwbHVn X2lycXMgPSBERV9EUF9BX0hPVFBMVUdfSVZCOwo+ICAJCWVuYWJsZWRfaXJxcyA9IGludGVsX2hw ZF9lbmFibGVkX2lycXMoZGV2X3ByaXYsIGhwZF9pdmIpOwo+ICAKPiBAQCAtMzQ0OCw3ICszNDQ4 LDcgQEAgc3RhdGljIHZvaWQgZ2VuNV9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgCj4gIAlHRU4zX0lSUV9JTklUKEdULCBkZXZfcHJpdi0+Z3RfaXJxX21hc2ss IGd0X2lycXMpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiArCWlm IChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+ICAJCS8qCj4gIAkJICogUlBTIGludGVycnVw dHMgd2lsbCBnZXQgZW5hYmxlZC9kaXNhYmxlZCBvbiBkZW1hbmQgd2hlbiBSUFMKPiAgCQkgKiBp dHNlbGYgaXMgZW5hYmxlZC9kaXNhYmxlZC4KPiBAQCAtMzQ2OCw3ICszNDY4LDcgQEAgc3RhdGlj IGludCBpcm9ubGFrZV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXUz MiBkaXNwbGF5X21hc2ssIGV4dHJhX21hc2s7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNykgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDcpKSB7Cj4gIAkJZGlzcGxh eV9tYXNrID0gKERFX01BU1RFUl9JUlFfQ09OVFJPTCB8IERFX0dTRV9JVkIgfAo+ICAJCQkJREVf UENIX0VWRU5UX0lWQiB8IERFX0FVWF9DSEFOTkVMX0FfSVZCKTsKPiAgCQlleHRyYV9tYXNrID0g KERFX1BJUEVDX1ZCTEFOS19JVkIgfCBERV9QSVBFQl9WQkxBTktfSVZCIHwKPiBAQCAtMzU5Niw3 ICszNTk2LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9kZV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJdTMyIGRlX21pc2NfbWFza2VkID0gR0VOOF9E RV9NSVNDX0dTRTsKPiAgCWVudW0gcGlwZSBwaXBlOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+ICAJCWRl X3BpcGVfbWFza2VkIHw9IEdFTjlfREVfUElQRV9JUlFfRkFVTFRfRVJST1JTOwo+ICAJCWRlX3Bv cnRfbWFza2VkIHw9IEdFTjlfQVVYX0NIQU5ORUxfQiB8IEdFTjlfQVVYX0NIQU5ORUxfQyB8Cj4g IAkJCQkgIEdFTjlfQVVYX0NIQU5ORUxfRDsKPiBAQCAtNDA0OCwxNiArNDA0OCwxNiBAQCB2b2lk IGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAq Cj4gIAkgKiBUT0RPOiB2ZXJpZnkgaWYgdGhpcyBjYW4gYmUgcmVwcm9kdWNlZCBvbiBWTFYsQ0hW Lgo+ICAJICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA3KQo+ICsJaWYgKElTX0dF Tl9MVEUoZGV2X3ByaXYsIDcpKQo+ICAJCXJwcy0+cG1faW50cm1za19tYnogfD0gR0VONl9QTV9S UF9VUF9FSV9FWFBJUkVEOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4g KwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpCj4gIAkJcnBzLT5wbV9pbnRybXNrX21ieiB8 PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JFRElSRUNUX1RPX0dVQzsKPiAgCj4gIAlpZiAoSVNfR0VO MihkZXZfcHJpdikpIHsKPiAgCQkvKiBHZW4yIGRvZXNuJ3QgaGF2ZSBhIGhhcmR3YXJlIGZyYW1l IGNvdW50ZXIgKi8KPiAgCQlkZXYtPm1heF92YmxhbmtfY291bnQgPSAwOwo+IC0JfSBlbHNlIGlm IChJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewo+ICsJfSBl bHNlIGlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4g IAkJZGV2LT5tYXhfdmJsYW5rX2NvdW50ID0gMHhmZmZmZmZmZjsgLyogZnVsbCAzMiBiaXQgY291 bnRlciAqLwo+ICAJCWRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIgPSBnNHhfZ2V0X3Zi bGFua19jb3VudGVyOwo+ICAJfSBlbHNlIHsKPiBAQCAtNDEwNCw3ICs0MTA0LDcgQEAgdm9pZCBp bnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZGV2 LT5kcml2ZXItPmVuYWJsZV92YmxhbmsgPSBpOTY1X2VuYWJsZV92Ymxhbms7Cj4gIAkJZGV2LT5k cml2ZXItPmRpc2FibGVfdmJsYW5rID0gaTk2NV9kaXNhYmxlX3ZibGFuazsKPiAgCQlkZXZfcHJp di0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0gaTkxNV9ocGRfaXJxX3NldHVwOwo+IC0JfSBlbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOX0dU RShkZXZfcHJpdiwgOCkpIHsKPiAgCQlkZXYtPmRyaXZlci0+aXJxX2hhbmRsZXIgPSBnZW44X2ly cV9oYW5kbGVyOwo+ICAJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbCA9IGdlbjhfaXJxX3Jl c2V0Owo+ICAJCWRldi0+ZHJpdmVyLT5pcnFfcG9zdGluc3RhbGwgPSBnZW44X2lycV9wb3N0aW5z dGFsbDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IGluZGV4IGYwY2ZkZWNlMTRhZS4uZDMx NjA1ZWJhZDY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBAQCAtMzI1Myw3ICsz MjUzLDcgQEAgaW50IGk5MTVfcGVyZl9hZGRfY29uZmlnX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJZ290byByZWdfZXJyOwo+ICAJfQo+ICAKPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkgewo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgOCkp IHsKPiAgCQlpZiAoYXJncy0+bl9mbGV4X3JlZ3MgIT0gMCkgewo+ICAJCQllcnIgPSAtRUlOVkFM Owo+ICAJCQlnb3RvIHJlZ19lcnI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCj4gaW5kZXggYTBm NTY5MjU1MzJlLi43YTk5YTJlN2VlZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wbXUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKPiBA QCAtMzE5LDcgKzMxOSw3IEBAIGVuZ2luZV9ldmVudF9zdGF0dXMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAo+ICAJY2FzZSBJOTE1X1NBTVBMRV9XQUlUOgo+ICAJCWJyZWFrOwo+ICAJ Y2FzZSBJOTE1X1NBTVBMRV9TRU1BOgo+IC0JCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8 IDYpCj4gKwkJaWYgKElTX0dFTl9MVChlbmdpbmUtPmk5MTUsIDYpKQo+ICAJCQlyZXR1cm4gLUVO T0RFVjsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gQEAgLTMzOSw3ICszMzksNyBAQCBjb25m aWdfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1NjQgY29uZmlnKQo+ICAJ CQlyZXR1cm4gLUVOT0RFVjsKPiAgCQkvKiBGYWxsLXRocm91Z2guICovCj4gIAljYXNlIEk5MTVf UE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1k6Cj4gLQkJaWYgKElOVEVMX0dFTihpOTE1KSA8IDYpCj4g KwkJaWYgKElTX0dFTl9MVChpOTE1LCA2KSkKPiAgCQkJcmV0dXJuIC1FTk9ERVY7Cj4gIAkJYnJl YWs7Cj4gIAljYXNlIEk5MTVfUE1VX0lOVEVSUlVQVFM6Cj4gQEAgLTEwMDUsNyArMTAwNSw3IEBA IHZvaWQgaTkxNV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g IHsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA8PSAyKSB7Cj4gKwlp ZiAoSVNfR0VOX0xURShpOTE1LCAyKSkgewo+ICAJCURSTV9JTkZPKCJQTVUgbm90IHN1cHBvcnRl ZCBmb3IgdGhpcyBHUFUuIik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAo+IGluZGV4IGU5Yzc5YjU2MDgyMy4uZmQzOTQ4ZjFkNDRhIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4gQEAgLTM3OTIsNyArMzc5Miw3IEBAIGVudW0gaTkxNV9wb3dlcl93ZWxs X2lkIHsKPiAgI2RlZmluZSBJTlRFUlZBTF8xXzI4X1VTKHVzKQlyb3VuZHVwKCgodXMpICogMTAw KSA+PiA3LCAyNSkKPiAgI2RlZmluZSBJTlRFUlZBTF8xXzMzX1VTKHVzKQkoKCh1cykgKiAzKSAg ID4+IDIpCj4gICNkZWZpbmUgSU5URVJWQUxfMF84MzNfVVModXMpCSgoKHVzKSAqIDYpIC8gNSkK PiAtI2RlZmluZSBHVF9JTlRFUlZBTF9GUk9NX1VTKGRldl9wcml2LCB1cykgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSA/IFwKPiArI2RlZmluZSBHVF9JTlRFUlZBTF9GUk9NX1VTKGRldl9wcml2 LCB1cykgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpID8gXAo+ICAJCQkJKElTX0dFTjlfTFAoZGV2 X3ByaXYpID8gXAo+ICAJCQkJSU5URVJWQUxfMF84MzNfVVModXMpIDogXAo+ICAJCQkJSU5URVJW QUxfMV8zM19VUyh1cykpIDogXAo+IEBAIC0zODAxLDcgKzM4MDEsNyBAQCBlbnVtIGk5MTVfcG93 ZXJfd2VsbF9pZCB7Cj4gICNkZWZpbmUgSU5URVJWQUxfMV8yOF9UT19VUyhpbnRlcnZhbCkgICgo KGludGVydmFsKSA8PCA3KSAvIDEwMCkKPiAgI2RlZmluZSBJTlRFUlZBTF8xXzMzX1RPX1VTKGlu dGVydmFsKSAgKCgoaW50ZXJ2YWwpIDw8IDIpIC8gMykKPiAgI2RlZmluZSBJTlRFUlZBTF8wXzgz M19UT19VUyhpbnRlcnZhbCkgKCgoaW50ZXJ2YWwpICogNSkgIC8gNikKPiAtI2RlZmluZSBHVF9Q TV9JTlRFUlZBTF9UT19VUyhkZXZfcHJpdiwgaW50ZXJ2YWwpIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkgPyBcCj4gKyNkZWZpbmUgR1RfUE1fSU5URVJWQUxfVE9fVVMoZGV2X3ByaXYsIGludGVy dmFsKSAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkgPyBcCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChJU19HRU45X0xQKGRldl9wcml2KSA/IFwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSU5URVJWQUxfMF84MzNfVE9fVVMoaW50ZXJ2YWwpIDogXAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJTlRFUlZBTF8xXzMzX1RPX1VTKGludGVydmFsKSkgOiBcCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiBpbmRleCA4ZjNhYTRkYzBjOTguLmFmZThkYTQ4NzY2 MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gQEAgLTMyLDI1ICszMiwy NSBAQAo+ICBzdGF0aWMgdm9pZCBpOTE1X3NhdmVfZGlzcGxheShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCS8qIERpc3BsYXkgYXJiaXRyYXRpb24gY29udHJvbCAq Lwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCkKPiArCWlmIChJU19HRU5fTFRFKGRl dl9wcml2LCA0KSkKPiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlRFNQQVJCID0gSTkxNV9SRUFE KERTUEFSQik7Cj4gIAo+ICAJLyogc2F2ZSBGQkMgaW50ZXJ2YWwgKi8KPiAtCWlmIChIQVNfRkJD KGRldl9wcml2KSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQgJiYgIUlTX0c0WChkZXZfcHJp dikpCj4gKwlpZiAoSEFTX0ZCQyhkZXZfcHJpdikgJiYgSVNfR0VOX0xURShkZXZfcHJpdiwgNCkg JiYgIUlTX0c0WChkZXZfcHJpdikpCj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUZCQ19DT05U Uk9MID0gSTkxNV9SRUFEKEZCQ19DT05UUk9MKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTkx NV9yZXN0b3JlX2Rpc3BsYXkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7 Cj4gIAkvKiBEaXNwbGF5IGFyYml0cmF0aW9uICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8PSA0KQo+ICsJaWYgKElTX0dFTl9MVEUoZGV2X3ByaXYsIDQpKQo+ICAJCUk5MTVfV1JJVEUo RFNQQVJCLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlRFNQQVJCKTsKPiAgCj4gIAkvKiBvbmx5IHJl c3RvcmUgRkJDIGluZm8gb24gdGhlIHBsYXRmb3JtIHRoYXQgc3VwcG9ydHMgRkJDKi8KPiAgCWlu dGVsX2ZiY19nbG9iYWxfZGlzYWJsZShkZXZfcHJpdik7Cj4gIAo+ICAJLyogcmVzdG9yZSBGQkMg aW50ZXJ2YWwgKi8KPiAtCWlmIChIQVNfRkJDKGRldl9wcml2KSAmJiBJTlRFTF9HRU4oZGV2X3By aXYpIDw9IDQgJiYgIUlTX0c0WChkZXZfcHJpdikpCj4gKwlpZiAoSEFTX0ZCQyhkZXZfcHJpdikg JiYgSVNfR0VOX0xURShkZXZfcHJpdiwgNCkgJiYgIUlTX0c0WChkZXZfcHJpdikpCj4gIAkJSTkx NV9XUklURShGQkNfQ09OVFJPTCwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUZCQ19DT05UUk9MKTsK PiAgCj4gIAlpOTE1X3JlZGlzYWJsZV92Z2EoZGV2X3ByaXYpOwo+IEBAIC03MCw3ICs3MCw3IEBA IGludCBpOTE1X3NhdmVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJCQkJICAgICAmZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUdDREdNQlVTKTsKPiAgCj4gIAkvKiBD YWNoZSBtb2RlIHN0YXRlICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDcpCj4gKwlp ZiAoSVNfR0VOX0xUKGRldl9wcml2LCA3KSkKPiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlQ0FD SEVfTU9ERV8wID0gSTkxNV9SRUFEKENBQ0hFX01PREVfMCk7Cj4gIAo+ICAJLyogTWVtb3J5IEFy Yml0cmF0aW9uIHN0YXRlICovCj4gQEAgLTExNCw3ICsxMTQsNyBAQCBpbnQgaTkxNV9yZXN0b3Jl X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWk5MTVfcmVzdG9y ZV9kaXNwbGF5KGRldl9wcml2KTsKPiAgCj4gIAkvKiBDYWNoZSBtb2RlIHN0YXRlICovCj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDcpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA3 KSkKPiAgCQlJOTE1X1dSSVRFKENBQ0hFX01PREVfMCwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUNB Q0hFX01PREVfMCB8Cj4gIAkJCSAgIDB4ZmZmZjAwMDApOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zeXNmcy5jCj4gaW5kZXggYzc0YTIwYjgwMTgyLi4zZDhmZDU4OTEyY2IgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIGk5MTVfc2V0 dXBfc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcmV0ID0gMDsK PiAgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2 KSkKPiAgCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoJmtkZXYtPmtvYmosIHZsdl9hdHRycyk7 Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gKwllbHNlIGlmIChJU19H RU5fR1RFKGRldl9wcml2LCA2KSkKPiAgCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoJmtkZXYt PmtvYmosIGdlbjZfYXR0cnMpOwo+ICAJaWYgKHJldCkKPiAgCQlEUk1fRVJST1IoIlJQUyBzeXNm cyBzZXR1cCBmYWlsZWRcbiIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19w bGFuZS5jCj4gaW5kZXggMGVlMzIyNzU5OTRhLi5lNTlhNTBiNDRlODUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBAIC0xNzIsNyArMTcyLDcgQEAg aW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KPiAgCSAqIFktdGlsaW5nIGlzIG5vdCBzdXBwb3J0ZWQg aW4gSUYtSUQgSW50ZXJsYWNlIG1vZGUgaW4KPiAgCSAqIEdFTjkgYW5kIGFib3ZlLgo+ICAJICov Cj4gLQlpZiAoc3RhdGUtPmZiICYmIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBjcnRjX3N0 YXRlLT5iYXNlLmVuYWJsZSAmJgo+ICsJaWYgKHN0YXRlLT5mYiAmJiBJU19HRU5fR1RFKGRldl9w cml2LCA5KSAmJiBjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSAmJgo+ICAJICAgIGFkanVzdGVkX21v ZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsKPiAgCQlpZiAoc3RhdGUtPmZi LT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+ICAJCSAgICBzdGF0ZS0+ ZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkgewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXVkaW8uYwo+IGluZGV4IGZmNDU1YzcyNDc3NS4uZjg3MDUxMzhiZjRhIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gQEAgLTcwNCw3ICs3MDQsNyBAQCB2b2lk IGludGVsX2luaXRfYXVkaW9faG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkgewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9 IGlsa19hdWRpb19jb2RlY19lbmFibGU7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29k ZWNfZGlzYWJsZSA9IGlsa19hdWRpb19jb2RlY19kaXNhYmxlOwo+IC0JfSBlbHNlIGlmIChJU19I QVNXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiArCX0gZWxz ZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpIHsK PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19lbmFibGUgPSBoc3dfYXVkaW9fY29k ZWNfZW5hYmxlOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2Rpc2FibGUgPSBo c3dfYXVkaW9fY29kZWNfZGlzYWJsZTsKPiAgCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZf cHJpdikpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiBpbmRleCBhYWI2ZDE1Mzhm ZmYuLmIxM2ZiOTk5MzQwYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jZGNsay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+IEBA IC0xODk1LDcgKzE4OTUsNyBAQCB2b2lkIGludGVsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRpYyBpbnQgaW50ZWxfcGl4ZWxfcmF0ZV90b19jZGNs ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgIGludCBwaXhl bF9yYXRlKQo+ICB7Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCAxMCkpCj4gIAkJcmV0dXJuIERJVl9ST1VORF9VUChwaXhlbF9y YXRlLCAyKTsKPiAgCWVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCS8qCj4g QEAgLTE5NTAsNyArMTk1MCw3IEBAIGludCBpbnRlbF9jcnRjX2NvbXB1dGVfbWluX2NkY2xrKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJLyogQWNjb3JkaW5n IHRvIEJTcGVjLCAiVGhlIENEIGNsb2NrIGZyZXF1ZW5jeSBtdXN0IGJlIGF0IGxlYXN0IHR3aWNl Cj4gIAkgKiB0aGUgZnJlcXVlbmN5IG9mIHRoZSBBemFsaWEgQkNMSy4iIGFuZCBCQ0xLIGlzIDk2 IE1IeiBieSBkZWZhdWx0Lgo+ICAJICovCj4gLQlpZiAoY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvICYm IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChjcnRjX3N0YXRlLT5oYXNfYXVkaW8g JiYgSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJbWluX2NkY2xrID0gbWF4KDIgKiA5NjAw MCwgbWluX2NkY2xrKTsKPiAgCj4gIAkvKgo+IEBAIC0yMjIwLDcgKzIyMjAsNyBAQCBzdGF0aWMg aW50IGludGVsX2NvbXB1dGVfbWF4X2RvdGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIHsKPiAgCWludCBtYXhfY2RjbGtfZnJlcSA9IGRldl9wcml2LT5tYXhfY2RjbGtf ZnJlcTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiArCWlmIChJU19H RU5fR1RFKGRldl9wcml2LCAxMCkpCj4gIAkJcmV0dXJuIDIgKiBtYXhfY2RjbGtfZnJlcTsKPiAg CWVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCS8qCj4gQEAgLTIyMzMsNyAr MjIzMyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlyZXR1cm4gbWF4X2NkY2xrX2ZyZXE7Cj4gIAll bHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gbWF4X2NkY2xrX2Zy ZXEqOTUvMTAwOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4gKwllbHNl IGlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDQpKQo+ICAJCXJldHVybiAyKm1heF9jZGNsa19mcmVx KjkwLzEwMDsKPiAgCWVsc2UKPiAgCQlyZXR1cm4gbWF4X2NkY2xrX2ZyZXEqOTAvMTAwOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+IGluZGV4IGFhNjZlOTUyYTk1ZC4uMzFjOWE1YjYy Mjk3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gQEAgLTIyMiw3ICsyMjIs NyBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfY3NjX21hdHJpeChzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gIAlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9NRShwaXBlKSwg MCk7Cj4gIAlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9MTyhwaXBlKSwgMCk7Cj4gIAo+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA2KSB7Cj4gKwlpZiAoSVNfR0VOX0dUKGRldl9wcml2 LCA2KSkgewo+ICAJCXVpbnQxNl90IHBvc3RvZmYgPSAwOwo+ICAKPiAgCQlpZiAoaW50ZWxfY3J0 Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+ IGluZGV4IDFjZDRhN2MyMmJkNS4uODcxNTc2NzkwNjY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY3J0LmMKPiBAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydF9zZXRf ZHBtcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRf bW9kZTsKPiAgCXUzMiBhZHBhOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUp Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpCj4gIAkJYWRwYSA9IEFEUEFfSE9UUExV R19CSVRTOwo+ICAJZWxzZQo+ICAJCWFkcGEgPSAwOwo+IEBAIC03OTksNyArNzk5LDcgQEAgaW50 ZWxfY3J0X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJaWYgKHJl dCA+IDApIHsKPiAgCQlpZiAoaW50ZWxfY3J0X2RldGVjdF9kZGMoY29ubmVjdG9yKSkKPiAgCQkJ c3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4gLQkJZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDQpCj4gKwkJZWxzZSBpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA0KSkK PiAgCQkJc3RhdHVzID0gaW50ZWxfY3J0X2xvYWRfZGV0ZWN0KGNydCwKPiAgCQkJCXRvX2ludGVs X2NydGMoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YyktPnBpcGUpOwo+ICAJCWVsc2UgaWYgKGk5MTVf bW9kcGFyYW1zLmxvYWRfZGV0ZWN0X3Rlc3QpCj4gQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIGlu dGVsX2NydF9yZXNldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmRldik7Cj4gIAlzdHJ1 Y3QgaW50ZWxfY3J0ICpjcnQgPSBpbnRlbF9lbmNvZGVyX3RvX2NydCh0b19pbnRlbF9lbmNvZGVy KGVuY29kZXIpKTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7Cj4gKwlp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpIHsKPiAgCQl1MzIgYWRwYTsKPiAgCj4gIAkJYWRw YSA9IEk5MTVfUkVBRChjcnQtPmFkcGFfcmVnKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ IGluZGV4IDhjYTM3NmFjYThiZC4uNWFlOWNkMDJjZDM5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGRpLmMKPiBAQCAtMTQ1OCw3ICsxNDU4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX2Ns b2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4g IAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gOCkKPiArCWlmIChJU19HRU5fTFRFKGRl dl9wcml2LCA4KSkKPiAgCQloc3dfZGRpX2Nsb2NrX2dldChlbmNvZGVyLCBwaXBlX2NvbmZpZyk7 Cj4gIAllbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiAgCQlza2xfZGRpX2Nsb2NrX2dl dChlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTIxNTIsNyArMjE1Miw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2RkaV9jbGtfc2VsZWN0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ICAKPiAgCQlJOTE1X1dSSVRFKERQTExfQ1RSTDIsIHZhbCk7Cj4gIAo+IC0JfSBlbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU5fTFQoZGV2X3By aXYsIDkpKSB7Cj4gIAkJSTkxNV9XUklURShQT1JUX0NMS19TRUwocG9ydCksIGhzd19wbGxfdG9f ZGRpX3BsbF9zZWwocGxsKSk7Cj4gIAl9Cj4gIAo+IEBAIC0yMTcwLDcgKzIxNzAsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZGlfY2xrX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpCj4gIAllbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiAgCQlJOTE1X1dSSVRFKERQ TExfQ1RSTDIsIEk5MTVfUkVBRChEUExMX0NUUkwyKSB8Cj4gIAkJCSAgIERQTExfQ1RSTDJfRERJ X0NMS19PRkYocG9ydCkpOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCj4g KwllbHNlIGlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDkpKQo+ICAJCUk5MTVfV1JJVEUoUE9SVF9D TEtfU0VMKHBvcnQpLCBQT1JUX0NMS19TRUxfTk9ORSk7Cj4gIH0KPiAgCj4gQEAgLTIyMDcsNyAr MjIwNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICAJaWYgKCFpc19tc3QpCj4gIAkJaW50ZWxfZHBfc2lua19k cG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1TX09OKTsKPiAgCWludGVsX2RwX3N0YXJ0X2xpbmtf dHJhaW4oaW50ZWxfZHApOwo+IC0JaWYgKHBvcnQgIT0gUE9SVF9BIHx8IElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkKPiArCWlmIChwb3J0ICE9IFBPUlRfQSB8fCBJU19HRU5fR1RFKGRldl9wcml2 LCA5KSkKPiAgCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICB9Cj4gIAo+ IEBAIC0yNDA5LDcgKzI0MDksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZGRpX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9k cCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gIAllbnVtIHBvcnQgcG9ydCA9 IGVuY29kZXItPnBvcnQ7Cj4gIAo+IC0JaWYgKHBvcnQgPT0gUE9SVF9BICYmIElOVEVMX0dFTihk ZXZfcHJpdikgPCA5KQo+ICsJaWYgKHBvcnQgPT0gUE9SVF9BICYmIElTX0dFTl9MVChkZXZfcHJp diwgOSkpCj4gIAkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKPiAgCj4gIAlp bnRlbF9lZHBfYmFja2xpZ2h0X29uKGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4IGFlNmY1YjdiNzk3OC4uMDY4 NzA1YzkxMzMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rldmlj ZV9pbmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5j Cj4gQEAgLTM4MCw3ICszODAsNyBAQCBzdGF0aWMgdTMyIHJlYWRfdGltZXN0YW1wX2ZyZXF1ZW5j eShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAl1MzIgZjE5XzJfbWh6ID0g MTkyMDA7Cj4gIAl1MzIgZjI0X21oeiA9IDI0MDAwOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDw9IDQpIHsKPiArCWlmIChJU19HRU5fTFRFKGRldl9wcml2LCA0KSkgewo+ICAJCS8q IFBSTXMgc2F5Ogo+ICAJCSAqCj4gIAkJICogICAgICJUaGUgdmFsdWUgaW4gdGhpcyByZWdpc3Rl ciBpbmNyZW1lbnRzIG9uY2UgZXZlcnkgMTYKPiBAQCAtMzg4LDcgKzM4OCw3IEBAIHN0YXRpYyB1 MzIgcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCQkgKiAgICAgICjigJxDTEtDRkfigJ0pIE1DSEJBUiByZWdpc3RlcikKPiAgCQkg Ki8KPiAgCQlyZXR1cm4gZGV2X3ByaXYtPnJhd2Nsa19mcmVxIC8gMTY7Cj4gLQl9IGVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPD0gOCkgewo+ICsJfSBlbHNlIGlmIChJU19HRU5fTFRFKGRl dl9wcml2LCA4KSkgewo+ICAJCS8qIFBSTXMgc2F5Ogo+ICAJCSAqCj4gIAkJICogICAgICJUaGUg UENVIFRTQyBjb3VudHMgMTBucyBpbmNyZW1lbnRzOyB0aGlzIHRpbWVzdGFtcAo+IEBAIC0zOTYs NyArMzk2LDcgQEAgc3RhdGljIHUzMiByZWFkX3RpbWVzdGFtcF9mcmVxdWVuY3koc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCSAqICAgICAgcm9sbGluZyBvdmVyIGV2ZXJ5 IDEuNSBob3VycykuCj4gIAkJICovCj4gIAkJcmV0dXJuIGYxMl81X21oejsKPiAtCX0gZWxzZSBp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA5KSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTl9MVEUo ZGV2X3ByaXYsIDkpKSB7Cj4gIAkJdTMyIGN0Y19yZWcgPSBJOTE1X1JFQUQoQ1RDX01PREUpOwo+ ICAJCXUzMiBmcmVxID0gMDsKPiAgCj4gQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgdTMyIHJl YWRfdGltZXN0YW1wX2ZyZXF1ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAkJfQo+ICAKPiAgCQlyZXR1cm4gZnJlcTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8PSAxMCkgewo+ICsJfSBlbHNlIGlmIChJU19HRU5fTFRFKGRldl9wcml2LCAxMCkp IHsKPiAgCQl1MzIgY3RjX3JlZyA9IEk5MTVfUkVBRChDVENfTU9ERSk7Cj4gIAkJdTMyIGZyZXEg PSAwOwo+ICAJCXUzMiBycG1fY29uZmlnX3JlZyA9IDA7Cj4gQEAgLTQ4MCw3ICs0ODAsNyBAQCB2 b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2aWNlX2lu Zm8gKmluZm8pCj4gIAkJY29udGFpbmVyX29mKGluZm8sIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl LCBpbmZvKTsKPiAgCWVudW0gcGlwZSBwaXBlOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDEwKSB7Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgMTApKSB7Cj4gIAkJZm9y X2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiAgCQkJaW5mby0+bnVtX3NjYWxlcnNbcGlwZV0g PSAyOwo+ICAJfSBlbHNlIGlmIChJU19HRU45KGRldl9wcml2KSkgewo+IEBAIC01MDcsNyArNTA3 LDcgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGludGVsX2Rl dmljZV9pbmZvICppbmZvKQo+ICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8 fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYs IHBpcGUpCj4gIAkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMjsKPiAtCX0gZWxzZSBpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikpIHsKPiArCX0gZWxz ZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNSkgfHwgSVNfRzRYKGRldl9wcml2KSkgewo+ICAJ CWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gIAkJCWluZm8tPm51bV9zcHJpdGVzW3Bp cGVdID0gMTsKPiAgCX0KPiBAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2lu Zm9fcnVudGltZV9pbml0KHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbykKPiAgCQlicm9h ZHdlbGxfc3NldV9pbmZvX2luaXQoZGV2X3ByaXYpOwo+ICAJZWxzZSBpZiAoSVNfR0VOOShkZXZf cHJpdikpCj4gIAkJZ2VuOV9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gLQllbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgMTApKQo+ICAJCWdlbjEwX3NzZXVfaW5mb19pbml0KGRldl9wcml2KTsKPiAgCj4gIAkvKiBJ bml0aWFsaXplIGNvbW1hbmQgc3RyZWFtIHRpbWVzdGFtcCBmcmVxdWVuY3kgKi8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMGQ1MjA3ZGJmZGFjLi4wMGVmYzRlNmI3 Y2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEwNDQsNyAr MTA0NCw3IEBAIGludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhvbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAKPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2 LCA0KSkgewo+ICAJCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IG9sZF9jcnRjX3N0 YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiAgCQlpOTE1X3JlZ190IHJlZyA9IFBJUEVDT05GKGNwdV90 cmFuc2NvZGVyKTsKPiAgCj4gQEAgLTE1NDIsNyArMTU0Miw3IEBAIHN0YXRpYyB2b2lkIGk5eHhf ZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCVBPU1RJTkdfUkVBRChyZWcp Owo+ICAJdWRlbGF5KDE1MCk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkg ewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKSB7Cj4gIAkJSTkxNV9XUklURShEUExM X01EKGNydGMtPnBpcGUpLAo+ICAJCQkgICBjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmRwbGxf bWQpOwo+ICAJfSBlbHNlIHsKPiBAQCAtMjAyOSwxMiArMjAyOSwxMiBAQCBzdGF0aWMgdW5zaWdu ZWQgaW50IGludGVsX2N1cnNvcl9hbGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcgo+ICAKPiAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9saW5lYXJfYWxpZ25t ZW50KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5 KSkKPiAgCQlyZXR1cm4gMjU2ICogMTAyNDsKPiAgCWVsc2UgaWYgKElTX0k5NjVHKGRldl9wcml2 KSB8fCBJU19JOTY1R00oZGV2X3ByaXYpIHx8Cj4gIAkJIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYp IHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXJldHVybiAxMjggKiAxMDI0Owo+IC0J ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICsJZWxzZSBpZiAoSVNfR0VOX0dU RShkZXZfcHJpdiwgNCkpCj4gIAkJcmV0dXJuIDQgKiAxMDI0Owo+ICAJZWxzZQo+ICAJCXJldHVy biAwOwo+IEBAIC0yMDUzLDcgKzIwNTMsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX3N1 cmZfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICAJY2FzZSBE Uk1fRk9STUFUX01PRF9MSU5FQVI6Cj4gIAkJcmV0dXJuIGludGVsX2xpbmVhcl9hbGlnbm1lbnQo ZGV2X3ByaXYpOwo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiAtCQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkK PiAgCQkJcmV0dXJuIDI1NiAqIDEwMjQ7Cj4gIAkJcmV0dXJuIDA7Cj4gIAljYXNlIEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0NDUzoKPiBAQCAtMzE2Myw3ICszMTYzLDcgQEAgc3RhdGljIHUzMiBp OXh4X3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1BJUEVfQ1NDX0VOQUJMRTsKPiAgCj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDQpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA0KSkKPiAg CQlkc3BjbnRyIHw9IERJU1BQTEFORV9TRUxfUElQRShjcnRjLT5waXBlKTsKPiAgCj4gIAlzd2l0 Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkgewo+IEBAIC0zMTkzLDcgKzMxOTMsNyBAQCBzdGF0aWMg dTMyIGk5eHhfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICAJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDQgJiYKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSAmJgo+ICAJICAgIGZiLT5t b2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiAgCQlkc3BjbnRyIHw9IERJU1BQ TEFORV9USUxFRDsKPiAgCj4gQEAgLTMyMTYsNyArMzIxNiw3IEBAIGludCBpOXh4X2NoZWNrX3Bs YW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCj4g IAlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmc3JjX3gsICZzcmNfeSwgcGxhbmVfc3RhdGUsIDApOwo+ ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gKwlpZiAoSVNfR0VOX0dURShk ZXZfcHJpdiwgNCkpCj4gIAkJb2Zmc2V0ID0gaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldCgmc3Jj X3gsICZzcmNfeSwKPiAgCQkJCQkJICAgcGxhbmVfc3RhdGUsIDApOwo+ICAJZWxzZQo+IEBAIC0z MjYwLDE0ICszMjYwLDE0IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUsCj4gIAo+ICAJbGluZWFyX29mZnNldCA9IGludGVsX2ZiX3h5X3Rv X2xpbmVhcih4LCB5LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNCkKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkKPiAgCQlkc3BhZGRy X29mZnNldCA9IHBsYW5lX3N0YXRlLT5tYWluLm9mZnNldDsKPiAgCWVsc2UKPiAgCQlkc3BhZGRy X29mZnNldCA9IGxpbmVhcl9vZmZzZXQ7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9w cml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDwgNCkgewo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNCkpIHsKPiAgCQkvKiBwaXBl c3JjIGFuZCBkc3BzaXplIGNvbnRyb2wgdGhlIHNpemUgdGhhdCBpcyBzY2FsZWQgZnJvbSwKPiAg CQkgKiB3aGljaCBzaG91bGQgYWx3YXlzIGJlIHRoZSB1c2VyJ3MgcmVxdWVzdGVkIHNpemUuCj4g IAkJICovCj4gQEAgLTMyOTEsNyArMzI5MSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJCSAgICAgIGludGVsX3BsYW5lX2dn dHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArCj4gIAkJCSAgICAgIGRzcGFkZHJfb2Zmc2V0KTsKPiAg CQlJOTE1X1dSSVRFX0ZXKERTUE9GRlNFVChpOXh4X3BsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4g LQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+ICsJfSBlbHNlIGlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+ICAJCUk5MTVfV1JJVEVfRlcoRFNQU1VSRihpOXh4 X3BsYW5lKSwKPiAgCQkJICAgICAgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3RhdGUp ICsKPiAgCQkJICAgICAgZHNwYWRkcl9vZmZzZXQpOwo+IEBAIC0zMzE3LDcgKzMzMTcsNyBAQCBz dGF0aWMgdm9pZCBpOXh4X2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK PiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsK PiAgCj4gIAlJOTE1X1dSSVRFX0ZXKERTUENOVFIoaTl4eF9wbGFuZSksIDApOwo+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNCkKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkK PiAgCQlJOTE1X1dSSVRFX0ZXKERTUFNVUkYoaTl4eF9wbGFuZSksIDApOwo+ICAJZWxzZQo+ICAJ CUk5MTVfV1JJVEVfRlcoRFNQQUREUihpOXh4X3BsYW5lKSwgMCk7Cj4gQEAgLTM1MzgsNyArMzUz OCw3IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAKPiAgCXBsYW5lX2N0bCA9IFBMQU5FX0NUTF9FTkFCTEU7Cj4gIAo+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMCAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikp IHsKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDEwKSAmJiAhSVNfR0VNSU5JTEFLRShkZXZf cHJpdikpIHsKPiAgCQlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9hbHBoYShmYi0+Zm9ybWF0 LT5mb3JtYXQpOwo+ICAJCXBsYW5lX2N0bCB8PQo+ICAJCQlQTEFORV9DVExfUElQRV9HQU1NQV9F TkFCTEUgfAo+IEBAIC0zNTUwLDcgKzM1NTAsNyBAQCB1MzIgc2tsX3BsYW5lX2N0bChjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXBsYW5lX2N0bCB8PSBza2xf cGxhbmVfY3RsX3RpbGluZyhmYi0+bW9kaWZpZXIpOwo+ICAJcGxhbmVfY3RsIHw9IHNrbF9wbGFu ZV9jdGxfcm90YXRlKHJvdGF0aW9uICYgRFJNX01PREVfUk9UQVRFX01BU0spOwo+ICAKPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDEwKSkKPiAgCQlwbGFuZV9jdGwgfD0gY25sX3BsYW5lX2N0bF9mbGlwKHJvdGF0aW9uICYKPiAg CQkJCQkJRFJNX01PREVfUkVGTEVDVF9NQVNLKTsKPiAgCj4gQEAgLTM2MTgsNyArMzYxOCw3IEBA IF9faW50ZWxfZGlzcGxheV9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgc3RhdGlj IGJvb2wgZ3B1X3Jlc2V0X2Nsb2JiZXJzX2Rpc3BsYXkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICB7Cj4gIAlyZXR1cm4gaW50ZWxfaGFzX2dwdV9yZXNldChkZXZfcHJpdikg JiYKPiAtCQlJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSAmJiAhSVNfRzRYKGRldl9wcml2KTsKPiAr CQlJU19HRU5fTFQoZGV2X3ByaXYsIDUpICYmICFJU19HNFgoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ ICB2b2lkIGludGVsX3ByZXBhcmVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+IEBAIC0zNzU3LDcgKzM3NTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcGlw ZV9jb25maWcoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YQo+ICAJ CSAgIChuZXdfY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpKTsKPiAgCj4gIAkvKiBvbiBza3ls YWtlIHRoaXMgaXMgZG9uZSBieSBkZXRhY2hpbmcgc2NhbGVycyAqLwo+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOSkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4g IAkJc2tsX2RldGFjaF9zY2FsZXJzKGNydGMpOwo+ICAKPiAgCQlpZiAobmV3X2NydGNfc3RhdGUt PnBjaF9wZml0LmVuYWJsZWQpCj4gQEAgLTQ2ODMsNyArNDY4Myw3IEBAIHNrbF91cGRhdGVfc2Nh bGVyKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCBib29sIGZvcmNlX2RldGFj aCwKPiAgCSAqIE9uY2UgTlYxMiBpcyBlbmFibGVkLCBoYW5kbGUgaXQgaGVyZSB3aGlsZSBhbGxv Y2F0aW5nIHNjYWxlcgo+ICAJICogZm9yIE5WMTIuCj4gIAkgKi8KPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkgJiYgY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgJiYKPiArCWlmIChJU19H RU5fR1RFKGRldl9wcml2LCA5KSAmJiBjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSAmJgo+ICAJICAg IG5lZWRfc2NhbGluZyAmJiBhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5U RVJMQUNFKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiUGlwZS9QbGFuZSBzY2FsaW5nIG5vdCBzdXBw b3J0ZWQgd2l0aCBJRi1JRCBtb2RlXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtNTQ3 Nyw3ICs1NDc3LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAlpZiAocHNsX2Nsa2dhdGVfd2EpCj4gIAkJ Z2xrX3BpcGVfc2NhbGVyX2Nsb2NrX2dhdGluZ193YShkZXZfcHJpdiwgcGlwZSwgdHJ1ZSk7Cj4g IAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA5KSkKPiAgCQlza3lsYWtlX3BmaXRfZW5hYmxlKGludGVsX2NydGMpOwo+ICAJZWxz ZQo+ICAJCWlyb25sYWtlX3BmaXRfZW5hYmxlKGludGVsX2NydGMpOwo+IEBAIC01NjIzLDcgKzU2 MjMsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90 cmFuc2NvZGVyKSkKPiAgCQlpbnRlbF9kZGlfZGlzYWJsZV90cmFuc2NvZGVyX2Z1bmMoZGV2X3By aXYsIGNwdV90cmFuc2NvZGVyKTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ICAJCXNreWxha2Vfc2NhbGVyX2Rp c2FibGUoaW50ZWxfY3J0Yyk7Cj4gIAllbHNlCj4gIAkJaXJvbmxha2VfcGZpdF9kaXNhYmxlKGlu dGVsX2NydGMsIGZhbHNlKTsKPiBAQCAtNjMwNyw3ICs2MzA3LDcgQEAgc3RhdGljIGJvb2wgaW50 ZWxfY3J0Y19zdXBwb3J0c19kb3VibGVfd2lkZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKPiAgCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+ICAKPiAgCS8qIEdERyBkb3VibGUgd2lkZSBvbiBlaXRoZXIgcGlw ZSwgb3RoZXJ3aXNlIHBpcGUgQSBvbmx5ICovCj4gLQlyZXR1cm4gSU5URUxfR0VOKGRldl9wcml2 KSA8IDQgJiYKPiArCXJldHVybiBJU19HRU5fTFQoZGV2X3ByaXYsIDQpICYmCj4gIAkJKGNydGMt PnBpcGUgPT0gUElQRV9BIHx8IElTX0k5MTVHKGRldl9wcml2KSk7Cj4gIH0KPiAgCj4gQEAgLTYz NjcsNyArNjM2Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gIAlpbnQg Y2xvY2tfbGltaXQgPSBkZXZfcHJpdi0+bWF4X2RvdGNsa19mcmVxOwo+ICAKPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDwgNCkgewo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNCkpIHsK PiAgCQljbG9ja19saW1pdCA9IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSAqIDkgLyAxMDsKPiAg Cj4gIAkJLyoKPiBAQCAtNjQyMCw3ICs2NDIwLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJLyogQ2FudGlnYSsgY2Fu bm90IGhhbmRsZSBtb2RlcyB3aXRoIGEgaHN5bmMgZnJvbnQgcG9yY2ggb2YgMC4KPiAgCSAqIFdh UHJ1bmVNb2RlV2l0aEluY29ycmVjdEhzeW5jT2Zmc2V0OmN0ZyxlbGssaWxrLHNuYixpdmIsdmx2 LGhzdy4KPiAgCSAqLwo+IC0JaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNCB8fCBJU19HNFgo ZGV2X3ByaXYpKSAmJgo+ICsJaWYgKChJU19HRU5fR1QoZGV2X3ByaXYsIDQpIHx8IElTX0c0WChk ZXZfcHJpdikpICYmCj4gIAkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oc3luY19zdGFydCA9PSBhZGp1 c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5KQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiBAQCAt NjU3Nyw3ICs2NTc3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21f bihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWludCBwaXBlID0gY3J0Yy0+cGlwZTsKPiAg CWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyID0gY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2Rl cjsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7Cj4gKwlpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgNSkpIHsKPiAgCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9NMSh0cmFuc2Nv ZGVyKSwgVFVfU0laRShtX24tPnR1KSB8IG1fbi0+Z21jaF9tKTsKPiAgCQlJOTE1X1dSSVRFKFBJ UEVfREFUQV9OMSh0cmFuc2NvZGVyKSwgbV9uLT5nbWNoX24pOwo+ICAJCUk5MTVfV1JJVEUoUElQ RV9MSU5LX00xKHRyYW5zY29kZXIpLCBtX24tPmxpbmtfbSk7Cj4gQEAgLTY1ODcsNyArNjU4Nyw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gIAkJICogcmVnaXN0ZXJzIGFyZSBub3QgdW5uZWNlc3NhcmlseSBhY2Nl c3NlZCkuCj4gIAkJICovCj4gIAkJaWYgKG0yX24yICYmIChJU19DSEVSUllWSUVXKGRldl9wcml2 KSB8fAo+IC0JCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkgJiYgY3J0Yy0+Y29uZmlnLT5o YXNfZHJycykgewo+ICsJCSAgICBJU19HRU5fTFQoZGV2X3ByaXYsIDgpKSAmJiBjcnRjLT5jb25m aWctPmhhc19kcnJzKSB7Cj4gIAkJCUk5MTVfV1JJVEUoUElQRV9EQVRBX00yKHRyYW5zY29kZXIp LAo+ICAJCQkJCVRVX1NJWkUobTJfbjItPnR1KSB8IG0yX24yLT5nbWNoX20pOwo+ICAJCQlJOTE1 X1dSSVRFKFBJUEVfREFUQV9OMih0cmFuc2NvZGVyKSwgbTJfbjItPmdtY2hfbik7Cj4gQEAgLTY5 NzEsNyArNjk3MSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY29tcHV0ZV9kcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJCWRwbGwgfD0gRFBMTEJfTFZEU19QMl9DTE9DS19ESVZfMTQ7Cj4g IAkJYnJlYWs7Cj4gIAl9Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+ICAJCWRwbGwgfD0gKDYgPDwgUExMX0xPQURfUFVM U0VfUEhBU0VfU0hJRlQpOwo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5zZHZvX3R2X2Nsb2NrKQo+ IEBAIC02OTg1LDcgKzY5ODUsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NvbXB1dGVfZHBsbChzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWRwbGwgfD0gRFBMTF9WQ09fRU5BQkxFOwo+ICAJY3J0 Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS5kcGxsID0gZHBsbDsKPiAgCj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA0KSB7Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpIHsKPiAg CQl1MzIgZHBsbF9tZCA9IChjcnRjX3N0YXRlLT5waXhlbF9tdWx0aXBsaWVyIC0gMSkKPiAgCQkJ PDwgRFBMTF9NRF9VRElfTVVMVElQTElFUl9TSElGVDsKPiAgCQljcnRjX3N0YXRlLT5kcGxsX2h3 X3N0YXRlLmRwbGxfbWQgPSBkcGxsX21kOwo+IEBAIC03MDU4LDcgKzcwNTgsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj KQo+ICAJCQl2c3luY3NoaWZ0ICs9IGFkanVzdGVkX21vZGUtPmNydGNfaHRvdGFsOwo+ICAJfQo+ ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMykKPiArCWlmIChJU19HRU5fR1QoZGV2 X3ByaXYsIDMpKQo+ICAJCUk5MTVfV1JJVEUoVlNZTkNTSElGVChjcHVfdHJhbnNjb2RlciksIHZz eW5jc2hpZnQpOwo+ICAKPiAgCUk5MTVfV1JJVEUoSFRPVEFMKGNwdV90cmFuc2NvZGVyKSwKPiBA QCAtNzIxNyw3ICs3MjE3LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAl9Cj4gIAo+ICAJaWYgKGludGVsX2NydGMtPmNv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0Up IHsKPiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQgfHwKPiArCQlpZiAoSVNfR0VOX0xU KGRldl9wcml2LCA0KSB8fAo+ICAJCSAgICBpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMt PmNvbmZpZywgSU5URUxfT1VUUFVUX1NEVk8pKQo+ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9J TlRFUkxBQ0VfV19GSUVMRF9JTkRJQ0FUSU9OOwo+ICAJCWVsc2UKPiBAQCAtNzQyOCw3ICs3NDI4 LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9nZXRfcGZpdF9jb25maWcoc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKPiAgCXVpbnQzMl90IHRtcDsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8PSAzICYmCj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgMykgJiYKPiAgCSAg ICAoSVNfSTgzMChkZXZfcHJpdikgfHwgIUlTX01PQklMRShkZXZfcHJpdikpKQo+ICAJCXJldHVy bjsKPiAgCj4gQEAgLTc0MzcsNyArNzQzNyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRf Y29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCXJldHVybjsKPiAgCj4gIAkvKiBD aGVjayB3aGV0aGVyIHRoZSBwZml0IGlzIGF0dGFjaGVkIHRvIG91ciBwaXBlLiAqLwo+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7Cj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA0 KSkgewo+ICAJCWlmIChjcnRjLT5waXBlICE9IFBJUEVfQikKPiAgCQkJcmV0dXJuOwo+ICAJfSBl bHNlIHsKPiBAQCAtNzUwNiw3ICs3NTA2LDcgQEAgaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9jb25m aWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ICAJdmFsID0gSTkxNV9SRUFEKERTUENO VFIoaTl4eF9wbGFuZSkpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsK PiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+ICAJCWlmICh2YWwgJiBESVNQUExB TkVfVElMRUQpIHsKPiAgCQkJcGxhbmVfY29uZmlnLT50aWxpbmcgPSBJOTE1X1RJTElOR19YOwo+ ICAJCQlmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiBAQCAtNzUyMCw3 ICs3NTIwLDcgQEAgaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRl dl9wcml2KSkgewo+ICAJCW9mZnNldCA9IEk5MTVfUkVBRChEU1BPRkZTRVQoaTl4eF9wbGFuZSkp Owo+ICAJCWJhc2UgPSBJOTE1X1JFQUQoRFNQU1VSRihpOXh4X3BsYW5lKSkgJiAweGZmZmZmMDAw Owo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiArCX0gZWxzZSBp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpIHsKPiAgCQlpZiAocGxhbmVfY29uZmlnLT50aWxp bmcpCj4gIAkJCW9mZnNldCA9IEk5MTVfUkVBRChEU1BUSUxFT0ZGKGk5eHhfcGxhbmUpKTsKPiAg CQllbHNlCj4gQEAgLTc2MjYsNyArNzYyNiw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJICAgICh0bXAgJiBQSVBFQ09ORl9D T0xPUl9SQU5HRV9TRUxFQ1QpKQo+ICAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3Jhbmdl ID0gdHJ1ZTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCj4gKwlpZiAoSVNf R0VOX0xUKGRldl9wcml2LCA0KSkKPiAgCQlwaXBlX2NvbmZpZy0+ZG91YmxlX3dpZGUgPSB0bXAg JiBQSVBFQ09ORl9ET1VCTEVfV0lERTsKPiAgCj4gIAlpbnRlbF9nZXRfcGlwZV90aW1pbmdzKGNy dGMsIHBpcGVfY29uZmlnKTsKPiBAQCAtNzYzNCw3ICs3NjM0LDcgQEAgc3RhdGljIGJvb2wgaTl4 eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ICAJaTl4eF9n ZXRfcGZpdF9jb25maWcoY3J0YywgcGlwZV9jb25maWcpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDQpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+ICAJ CS8qIE5vIHdheSB0byByZWFkIGl0IG91dCBvbiBwaXBlcyBCIGFuZCBDICovCj4gIAkJaWYgKElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIGNydGMtPnBpcGUgIT0gUElQRV9BKQo+ICAJCQl0bXAg PSBkZXZfcHJpdi0+Y2h2X2RwbGxfbWRbY3J0Yy0+cGlwZV07Cj4gQEAgLTgxOTQsNyArODE5NCw3 IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfc2V0X3BpcGVtaXNjKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcgPSBpbnRlbF9jcnRjLT5jb25m aWc7Cj4gIAo+IC0JaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9w cml2KSA+PSA5KSB7Cj4gKwlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCBJU19HRU5fR1RF KGRldl9wcml2LCA5KSkgewo+ICAJCXUzMiB2YWwgPSAwOwo+ICAKPiAgCQlzd2l0Y2ggKGludGVs X2NydGMtPmNvbmZpZy0+cGlwZV9icHApIHsKPiBAQCAtODQyNSw3ICs4NDI1LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAKPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA1 KSkgewo+ICAJCW1fbi0+bGlua19tID0gSTkxNV9SRUFEKFBJUEVfTElOS19NMSh0cmFuc2NvZGVy KSk7Cj4gIAkJbV9uLT5saW5rX24gPSBJOTE1X1JFQUQoUElQRV9MSU5LX04xKHRyYW5zY29kZXIp KTsKPiAgCQltX24tPmdtY2hfbSA9IEk5MTVfUkVBRChQSVBFX0RBVEFfTTEodHJhbnNjb2Rlcikp Cj4gQEAgLTg0MzcsNyArODQzNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVy X2dldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJICogZ2VuIDwgOCkgYW5kIGlm IERSUlMgaXMgc3VwcG9ydGVkICh0byBtYWtlIHN1cmUgdGhlCj4gIAkJICogcmVnaXN0ZXJzIGFy ZSBub3QgdW5uZWNlc3NhcmlseSByZWFkKS4KPiAgCQkgKi8KPiAtCQlpZiAobTJfbjIgJiYgSU5U RUxfR0VOKGRldl9wcml2KSA8IDggJiYKPiArCQlpZiAobTJfbjIgJiYgSVNfR0VOX0xUKGRldl9w cml2LCA4KSAmJgo+ICAJCQljcnRjLT5jb25maWctPmhhc19kcnJzKSB7Cj4gIAkJCW0yX24yLT5s aW5rX20gPSBJOTE1X1JFQUQoUElQRV9MSU5LX00yKHRyYW5zY29kZXIpKTsKPiAgCQkJbTJfbjIt PmxpbmtfbiA9CUk5MTVfUkVBRChQSVBFX0xJTktfTjIodHJhbnNjb2RlcikpOwo+IEBAIC04NTM2 LDEyICs4NTM2LDEyIEBAIHNreWxha2VfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgCXZhbCA9IEk5MTVfUkVBRChQTEFORV9DVEwocGlwZSwg cGxhbmVfaWQpKTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiArCWlm IChJU19HRU5fR1RFKGRldl9wcml2LCAxMSkpCj4gIAkJcGl4ZWxfZm9ybWF0ID0gdmFsICYgSUNM X1BMQU5FX0NUTF9GT1JNQVRfTUFTSzsKPiAgCWVsc2UKPiAgCQlwaXhlbF9mb3JtYXQgPSB2YWwg JiBQTEFORV9DVExfRk9STUFUX01BU0s7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCAxMCkgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAgCQlhbHBoYSA9IEk5 MTVfUkVBRChQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxhbmVfaWQpKTsKPiAgCQlhbHBoYSAmPSBQ TEFORV9DT0xPUl9BTFBIQV9NQVNLOwo+ICAJfSBlbHNlIHsKPiBAQCAtOTE4OCw3ICs5MTg4LDcg QEAgc3RhdGljIHZvaWQgaGFzd2VsbF9nZXRfZGRpX3BvcnRfc3RhdGUoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAkgKiBEREkgRS4gU28ganVzdCBjaGVjayB3aGV0aGVyIHRoaXMgcGlwZSBp cyB3aXJlZCB0byBEREkgRSBhbmQgd2hldGhlcgo+ICAJICogdGhlIFBDSCB0cmFuc2NvZGVyIGlz IG9uLgo+ICAJICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYKPiArCWlmIChJ U19HRU5fTFQoZGV2X3ByaXYsIDkpICYmCj4gIAkgICAgKHBvcnQgPT0gUE9SVF9FKSAmJiBJOTE1 X1JFQUQoTFBUX1RSQU5TQ09ORikgJiBUUkFOU19FTkFCTEUpIHsKPiAgCQlwaXBlX2NvbmZpZy0+ aGFzX3BjaF9lbmNvZGVyID0gdHJ1ZTsKPiAgCj4gQEAgLTkyMzgsMTEgKzkyMzgsMTEgQEAgc3Rh dGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gIAlwaXBlX2NvbmZpZy0+Z2FtbWFfbW9kZSA9Cj4gIAkJSTkxNV9SRUFEKEdBTU1BX01PREUo Y3J0Yy0+cGlwZSkpICYgR0FNTUFfTU9ERV9NT0RFX01BU0s7Cj4gIAo+IC0JaWYgKElTX0JST0FE V0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwlpZiAoSVNf QlJPQURXRUxMKGRldl9wcml2KSB8fCBJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+ICAJCXUz MiB0bXAgPSBJOTE1X1JFQUQoUElQRU1JU0MoY3J0Yy0+cGlwZSkpOwo+ICAJCWJvb2wgY2xyc3Bh Y2VfeXV2ID0gdG1wICYgUElQRU1JU0NfT1VUUFVUX0NPTE9SU1BBQ0VfWVVWOwo+ICAKPiAtCQlp ZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkg ewo+ICsJCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19HRU5fR1RFKGRldl9wcml2 LCAxMCkpIHsKPiAgCQkJYm9vbCBibGVuZF9tb2RlXzQyMCA9IHRtcCAmCj4gIAkJCQkJICAgICAg UElQRU1JU0NfWVVWNDIwX01PREVfRlVMTF9CTEVORDsKPiAgCj4gQEAgLTkyNTgsNyArOTI1OCw3 IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ICAJcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVS KGNydGMtPnBpcGUpOwo+ICAJaWYgKGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQo ZGV2X3ByaXYsIHBvd2VyX2RvbWFpbikpIHsKPiAgCQlwb3dlcl9kb21haW5fbWFzayB8PSBCSVRf VUxMKHBvd2VyX2RvbWFpbik7Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAr CQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJCXNreWxha2VfZ2V0X3BmaXRfY29u ZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKPiAgCQllbHNlCj4gIAkJCWlyb25sYWtlX2dldF9wZml0 X2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTEwMjI3LDcgKzEwMjI3LDcgQEAgaW50 IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmZiOwo+ICAJaW50IHJldDsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA5ICYmIHBsYW5lLT5pZCAhPSBQTEFORV9DVVJTT1IpIHsKPiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA5KSAmJiBwbGFuZS0+aWQgIT0gUExBTkVfQ1VSU09SKSB7Cj4gIAkJcmV0ID0g c2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUoCj4gIAkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19z dGF0ZSksCj4gIAkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKSk7Cj4gQEAgLTEw Mjc2LDIxICsxMDI3NiwyMSBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAo+ICAJCQkgdHVybl9v ZmYsIHR1cm5fb24sIG1vZGVfY2hhbmdlZCk7Cj4gIAo+ICAJaWYgKHR1cm5fb24pIHsKPiAtCQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikpCj4gKwkJaWYg KElTX0dFTl9MVChkZXZfcHJpdiwgNSkgJiYgIUlTX0c0WChkZXZfcHJpdikpCj4gIAkJCXBpcGVf Y29uZmlnLT51cGRhdGVfd21fcHJlID0gdHJ1ZTsKPiAgCj4gIAkJLyogbXVzdCBkaXNhYmxlIGN4 c3IgYXJvdW5kIHBsYW5lIGVuYWJsZS9kaXNhYmxlICovCj4gIAkJaWYgKHBsYW5lLT5pZCAhPSBQ TEFORV9DVVJTT1IpCj4gIAkJCXBpcGVfY29uZmlnLT5kaXNhYmxlX2N4c3IgPSB0cnVlOwo+ICAJ fSBlbHNlIGlmICh0dXJuX29mZikgewo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSAm JiAhSVNfRzRYKGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA1KSAmJiAh SVNfRzRYKGRldl9wcml2KSkKPiAgCQkJcGlwZV9jb25maWctPnVwZGF0ZV93bV9wb3N0ID0gdHJ1 ZTsKPiAgCj4gIAkJLyogbXVzdCBkaXNhYmxlIGN4c3IgYXJvdW5kIHBsYW5lIGVuYWJsZS9kaXNh YmxlICovCj4gIAkJaWYgKHBsYW5lLT5pZCAhPSBQTEFORV9DVVJTT1IpCj4gIAkJCXBpcGVfY29u ZmlnLT5kaXNhYmxlX2N4c3IgPSB0cnVlOwo+ICAJfSBlbHNlIGlmIChpbnRlbF93bV9uZWVkX3Vw ZGF0ZSgmcGxhbmUtPmJhc2UsIHBsYW5lX3N0YXRlKSkgewo+IC0JCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNSAmJiAhSVNfRzRYKGRldl9wcml2KSkgewo+ICsJCWlmIChJU19HRU5fTFQoZGV2 X3ByaXYsIDUpICYmICFJU19HNFgoZGV2X3ByaXYpKSB7Cj4gIAkJCS8qIEZJWE1FIGJvbGxvY2tz ICovCj4gIAkJCXBpcGVfY29uZmlnLT51cGRhdGVfd21fcHJlID0gdHJ1ZTsKPiAgCQkJcGlwZV9j b25maWctPnVwZGF0ZV93bV9wb3N0ID0gdHJ1ZTsKPiBAQCAtMTA0MDcsMTEgKzEwNDA3LDExIEBA IHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICAJCQlyZXR1cm4gcmV0Owo+ICAJCX0KPiAgCX0gZWxzZSBpZiAoZGV2X3ByaXYtPmRpc3Bs YXkuY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20pIHsKPiAtCQlpZiAoSEFTX1BDSF9TUExJVChkZXZf cHJpdikgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCj4gKwkJaWYgKEhBU19QQ0hfU1BMSVQo ZGV2X3ByaXYpICYmIElTX0dFTl9MVChkZXZfcHJpdiwgOSkpCj4gIAkJCXBpcGVfY29uZmlnLT53 bS5pbGsuaW50ZXJtZWRpYXRlID0gcGlwZV9jb25maWctPndtLmlsay5vcHRpbWFsOwo+ICAJfQo+ ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA5KSkgewo+ICAJCWlmIChtb2RlX2NoYW5nZWQpCj4gIAkJCXJldCA9IHNrbF91 cGRhdGVfc2NhbGVyX2NydGMocGlwZV9jb25maWcpOwo+ICAKPiBAQCAtMTA0OTksNyArMTA0OTks NyBAQCBjb21wdXRlX2Jhc2VsaW5lX3BpcGVfYnBwKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICAJaWYgKChJU19HNFgoZGV2X3ByaXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8Cj4g IAkgICAgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpKQo+ICAJCWJwcCA9IDEwKjM7Cj4gLQllbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA1KSkKPiAgCQlicHAgPSAxMiozOwo+ICAJZWxzZQo+ICAJCWJwcCA9IDgqMzsKPiBA QCAtMTA2NDEsNyArMTA2NDEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmln KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCSAgICAgIHBpcGVfY29uZmlnLT5waXBlX3Ny Y193LCBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCwKPiAgCQkgICAgICBwaXBlX2NvbmZpZy0+cGl4 ZWxfcmF0ZSk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA5KSkKPiAgCQlEUk1fREVCVUdfS01TKCJudW1fc2NhbGVyczog JWQsIHNjYWxlcl91c2VyczogMHgleCwgc2NhbGVyX2lkOiAlZFxuIiwKPiAgCQkJICAgICAgY3J0 Yy0+bnVtX3NjYWxlcnMsCj4gIAkJCSAgICAgIHBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGUuc2Nh bGVyX3VzZXJzLAo+IEBAIC0xMDY4Miw3ICsxMDY4Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2R1 bXBfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCSAgICAgIHBsYW5l LT5iYXNlLmlkLCBwbGFuZS0+bmFtZSwKPiAgCQkJICAgICAgZmItPmJhc2UuaWQsIGZiLT53aWR0 aCwgZmItPmhlaWdodCwKPiAgCQkJICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShmYi0+Zm9ybWF0 LT5mb3JtYXQsICZmb3JtYXRfbmFtZSkpOwo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpCj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ICAJCQlEUk1fREVCVUdfS01T KCJcdHNjYWxlcjolZCBzcmMgJWR4JWQrJWQrJWQgZHN0ICVkeCVkKyVkKyVkXG4iLAo+ICAJCQkJ ICAgICAgc3RhdGUtPnNjYWxlcl9pZCwKPiAgCQkJCSAgICAgIHN0YXRlLT5iYXNlLnNyYy54MSA+ PiAxNiwKPiBAQCAtMTExNjcsNyArMTExNjcsNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCVBJUEVfQ09ORl9DSEVDS19J KGxhbmVfY291bnQpOwo+ICAJUElQRV9DT05GX0NIRUNLX1gobGFuZV9sYXRfb3B0aW1fbWFzayk7 Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4KSB7Cj4gKwlpZiAoSVNfR0VOX0xU KGRldl9wcml2LCA4KSkgewo+ICAJCVBJUEVfQ09ORl9DSEVDS19NX04oZHBfbV9uKTsKPiAgCj4g IAkJaWYgKGN1cnJlbnRfY29uZmlnLT5oYXNfZHJycykKPiBAQCAtMTExOTMsNyArMTExOTMsNyBA QCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShwaXhlbF9tdWx0aXBsaWVyKTsKPiAgCVBJ UEVfQ09ORl9DSEVDS19CT09MKGhhc19oZG1pX3NpbmspOwo+IC0JaWYgKChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgOCAmJiAhSVNfSEFTV0VMTChkZXZfcHJpdikpIHx8Cj4gKwlpZiAoKElTX0dFTl9M VChkZXZfcHJpdiwgOCkgJiYgIUlTX0hBU1dFTEwoZGV2X3ByaXYpKSB8fAo+ICAJICAgIElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCVBJUEVf Q09ORl9DSEVDS19CT09MKGxpbWl0ZWRfY29sb3JfcmFuZ2UpOwo+ICAKPiBAQCAtMTEyMjAsNyAr MTEyMjAsNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQuY29udHJv bCk7Cj4gIAkvKiBwZml0IHJhdGlvcyBhcmUgYXV0b2NvbXB1dGVkIGJ5IHRoZSBodyBvbiBnZW40 KyAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQo+ICsJaWYgKElTX0dFTl9MVChk ZXZfcHJpdiwgNCkpCj4gIAkJUElQRV9DT05GX0NIRUNLX1goZ21jaF9wZml0LnBnbV9yYXRpb3Mp Owo+ICAJUElQRV9DT05GX0NIRUNLX1goZ21jaF9wZml0Lmx2ZHNfYm9yZGVyX2JpdHMpOwo+ICAK PiBAQCAtMTEyNjYsNyArMTEyNjYsNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9w bGwuY3RybCk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChkc2lfcGxsLmRpdik7Cj4gIAo+IC0JaWYg KElTX0c0WChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KQo+ICsJaWYgKElT X0c0WChkZXZfcHJpdikgfHwgSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpCj4gIAkJUElQRV9DT05G X0NIRUNLX0kocGlwZV9icHApOwo+ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWShi YXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayk7Cj4gQEAgLTExMzE2LDcgKzExMzE2LDcgQEAg c3RhdGljIHZvaWQgdmVyaWZ5X3dtX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCWNv bnN0IGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCWludCBwbGFuZSwgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICAKPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgOSB8fCAhbmV3X3N0YXRlLT5hY3RpdmUpCj4gKwlpZiAoSVNf R0VOX0xUKGRldl9wcml2LCA5KSB8fCAhbmV3X3N0YXRlLT5hY3RpdmUpCj4gIAkJcmV0dXJuOwo+ ICAKPiAgCXNrbF9waXBlX3dtX2dldF9od19zdGF0ZShjcnRjLCAmaHdfd20pOwo+IEBAIC0xMjI5 Myw3ICsxMjI5Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJCQkgKgo+ICAJCQkJICogTm8gY2x1ZSB3 aGF0IHRoaXMgaXMgc3VwcG9zZWQgdG8gYWNoaWV2ZS4KPiAgCQkJCSAqLwo+IC0JCQkJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCQkJCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5 KSkKPiAgCQkJCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MoaW50ZWxfc3Rh dGUsCj4gIAkJCQkJCQkJCSAgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSkp Owo+ICAJCQl9Cj4gQEAgLTEyNDg1LDcgKzEyNDg1LDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9t aWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkgKiBGSVhNRSBkb2luZyB3YXRl cm1hcmtzIGFuZCBmYiBjbGVhbnVwIGZyb20gYSB2Ymxhbmsgd29ya2VyCj4gIAkgKiAoYXNzdW1p bmcgd2UgaGFkIGFueSkgd291bGQgc29sdmUgdGhlc2UgcHJvYmxlbXMuCj4gIAkgKi8KPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJiBzdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUp IHsKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDkpICYmIHN0YXRlLT5sZWdhY3lfY3Vyc29y X3VwZGF0ZSkgewo+ICAJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsK PiAgCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiAgCQlpbnQgaTsKPiBAQCAtMTI1OTIsNyAr MTI1OTIsNyBAQCBzdGF0aWMgdm9pZCBhZGRfcnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gIAlpZiAoIWRtYV9mZW5jZV9pc19pOTE1KGZlbmNlKSkKPiAgCQly ZXR1cm47Cj4gIAo+IC0JaWYgKElOVEVMX0dFTih0b19pOTE1KGNydGMtPmRldikpIDwgNikKPiAr CWlmIChJU19HRU5fTFQodG9faTkxNShjcnRjLT5kZXYpLCA2KSkKPiAgCQlyZXR1cm47Cj4gIAo+ ICAJaWYgKGRybV9jcnRjX3ZibGFua19nZXQoY3J0YykpCj4gQEAgLTEyNzcwLDcgKzEyNzcwLDcg QEAgc2tsX21heF9zY2FsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0Yywgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUKPiAgCWNydGNfY2xvY2sgPSBjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiAgCW1heF9kb3RjbGsgPSB0b19pbnRlbF9h dG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSktPmNkY2xrLmxvZ2ljYWwuY2RjbGs7 Cj4gIAo+IC0JaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTApCj4gKwlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfR0VOX0dURShk ZXZfcHJpdiwgMTApKQo+ICAJCW1heF9kb3RjbGsgKj0gMjsKPiAgCj4gIAlpZiAoV0FSTl9PTl9P TkNFKCFjcnRjX2Nsb2NrIHx8IG1heF9kb3RjbGsgPCBjcnRjX2Nsb2NrKSkKPiBAQCAtMTI4MDEs NyArMTI4MDEsNyBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUsCj4gIAlzdHJ1Y3QgZHJtX3JlY3QgY2xpcCA9IHt9Owo+ICAJaW50IHJldDsKPiAg Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwlpZiAoSVNfR0VOX0dURShk ZXZfcHJpdiwgOSkpIHsKPiAgCQkvKiB1c2Ugc2NhbGVyIHdoZW4gY29sb3JrZXkgaXMgbm90IHJl cXVpcmVkICovCj4gIAkJaWYgKCFzdGF0ZS0+Y2tleS5mbGFncykgewo+ICAJCQltaW5fc2NhbGUg PSAxOwo+IEBAIC0xMjgyNSw3ICsxMjgyNSw3IEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCWlmICghc3RhdGUtPmJhc2UuZmIpCj4gIAkJ cmV0dXJuIDA7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4gIAkJcmV0ID0gc2tsX2NoZWNrX3BsYW5lX3N1 cmZhY2UoY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7 Cj4gQEAgLTEyODM5LDcgKzEyODM5LDcgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJCXN0YXRlLT5jdGwgPSBpOXh4X3BsYW5lX2N0bChj cnRjX3N0YXRlLCBzdGF0ZSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZf cHJpdiwgMTApIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCXN0YXRlLT5jb2xvcl9j dGwgPSBnbGtfcGxhbmVfY29sb3JfY3RsKGNydGNfc3RhdGUsIHN0YXRlKTsKPiAgCj4gIAlyZXR1 cm4gMDsKPiBAQCAtMTI4NzQsNyArMTI4NzQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9j cnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJaWYgKGludGVsX2NzdGF0 ZS0+dXBkYXRlX3BpcGUpCj4gIAkJaW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKG9sZF9pbnRlbF9j c3RhdGUsIGludGVsX2NzdGF0ZSk7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpCj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPiAgCQlza2xfZGV0YWNo X3NjYWxlcnMoaW50ZWxfY3J0Yyk7Cj4gIAo+ICBvdXQ6Cj4gQEAgLTEyOTk4LDkgKzEyOTk4LDkg QEAgc3RhdGljIGJvb2wgaW50ZWxfcHJpbWFyeV9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCSAgICBtb2RpZmllciAhPSBEUk1fRk9STUFUX01P RF9MSU5FQVIpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJcmV0dXJuIHNr bF9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA0KQo+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpCj4g IAkJcmV0dXJuIGk5NjVfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsKPiAgCWVsc2UK PiAgCQlyZXR1cm4gaTh4eF9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOwo+IEBAIC0x MzE5Nyw3ICsxMzE5Nyw3IEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAo+ICAJcHJpbWFyeS0+ Y2FuX3NjYWxlID0gZmFsc2U7Cj4gIAlwcmltYXJ5LT5tYXhfZG93bnNjYWxlID0gMTsKPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2 LCA5KSkgewo+ICAJCXByaW1hcnktPmNhbl9zY2FsZSA9IHRydWU7Cj4gIAkJc3RhdGUtPnNjYWxl cl9pZCA9IC0xOwo+ICAJfQo+IEBAIC0xMzIwNiw3ICsxMzIwNiw3IEBAIGludGVsX3ByaW1hcnlf cGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBl IHBpcGUpCj4gIAkgKiBPbiBnZW4yLzMgb25seSBwbGFuZSBBIGNhbiBkbyBGQkMsIGJ1dCB0aGUg cGFuZWwgZml0dGVyIGFuZCBMVkRTCj4gIAkgKiBwb3J0IGlzIGhvb2tlZCB0byBwaXBlIEIuIEhl bmNlIHdlIHdhbnQgcGxhbmUgQSBmZWVkaW5nIHBpcGUgQi4KPiAgCSAqLwo+IC0JaWYgKEhBU19G QkMoZGV2X3ByaXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQo+ICsJaWYgKEhBU19GQkMo ZGV2X3ByaXYpICYmIElTX0dFTl9MVChkZXZfcHJpdiwgNCkpCj4gIAkJcHJpbWFyeS0+aTl4eF9w bGFuZSA9IChlbnVtIGk5eHhfcGxhbmVfaWQpICFwaXBlOwo+ICAJZWxzZQo+ICAJCXByaW1hcnkt Pmk5eHhfcGxhbmUgPSAoZW51bSBpOXh4X3BsYW5lX2lkKSBwaXBlOwo+IEBAIC0xMzIxNCw3ICsx MzIxNCw3IEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAlwcmltYXJ5LT5mcm9udGJ1ZmZlcl9i aXQgPSBJTlRFTF9GUk9OVEJVRkZFUihwaXBlLCBwcmltYXJ5LT5pZCk7Cj4gIAlwcmltYXJ5LT5j aGVja19wbGFuZSA9IGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmU7Cj4gIAo+IC0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7 Cj4gIAkJaW50ZWxfcHJpbWFyeV9mb3JtYXRzID0gc2tsX3ByaW1hcnlfZm9ybWF0czsKPiAgCQlu dW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoc2tsX3ByaW1hcnlfZm9ybWF0cyk7Cj4gIAo+IEBAIC0x MzIyNiw3ICsxMzIyNiw3IEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAkJcHJpbWFyeS0+dXBk YXRlX3BsYW5lID0gc2tsX3VwZGF0ZV9wbGFuZTsKPiAgCQlwcmltYXJ5LT5kaXNhYmxlX3BsYW5l ID0gc2tsX2Rpc2FibGVfcGxhbmU7Cj4gIAkJcHJpbWFyeS0+Z2V0X2h3X3N0YXRlID0gc2tsX3Bs YW5lX2dldF9od19zdGF0ZTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0 KSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKSB7Cj4gIAkJaW50ZWxf cHJpbWFyeV9mb3JtYXRzID0gaTk2NV9wcmltYXJ5X2Zvcm1hdHM7Cj4gIAkJbnVtX2Zvcm1hdHMg PSBBUlJBWV9TSVpFKGk5NjVfcHJpbWFyeV9mb3JtYXRzKTsKPiAgCQltb2RpZmllcnMgPSBpOXh4 X2Zvcm1hdF9tb2RpZmllcnM7Cj4gQEAgLTEzMjQ0LDE0ICsxMzI0NCwxNCBAQCBpbnRlbF9wcmlt YXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0g cGlwZSBwaXBlKQo+ICAJCXByaW1hcnktPmdldF9od19zdGF0ZSA9IGk5eHhfcGxhbmVfZ2V0X2h3 X3N0YXRlOwo+ICAJfQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKwlp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFu ZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmcHJpbWFyeS0+YmFzZSwKPiAgCQkJCQkgICAgICAgMCwg JmludGVsX3BsYW5lX2Z1bmNzLAo+ICAJCQkJCSAgICAgICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMs IG51bV9mb3JtYXRzLAo+ICAJCQkJCSAgICAgICBtb2RpZmllcnMsCj4gIAkJCQkJICAgICAgIERS TV9QTEFORV9UWVBFX1BSSU1BUlksCj4gIAkJCQkJICAgICAgICJwbGFuZSAxJWMiLCBwaXBlX25h bWUocGlwZSkpOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1IHx8IElTX0c0 WChkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA1KSB8fCBJU19H NFgoZGV2X3ByaXYpKQo+ICAJCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3By aXYtPmRybSwgJnByaW1hcnktPmJhc2UsCj4gIAkJCQkJICAgICAgIDAsICZpbnRlbF9wbGFuZV9m dW5jcywKPiAgCQkJCQkgICAgICAgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywK PiBAQCAtMTMyNjksMTIgKzEzMjY5LDEyIEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAlpZiAo cmV0KQo+ICAJCWdvdG8gZmFpbDsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MCkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDEwKSkgewo+ICAJCXN1cHBvcnRlZF9y b3RhdGlvbnMgPQo+ICAJCQlEUk1fTU9ERV9ST1RBVEVfMCB8IERSTV9NT0RFX1JPVEFURV85MCB8 Cj4gIAkJCURSTV9NT0RFX1JPVEFURV8xODAgfCBEUk1fTU9ERV9ST1RBVEVfMjcwIHwKPiAgCQkJ RFJNX01PREVfUkVGTEVDVF9YOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPiAgCQlzdXBw b3J0ZWRfcm90YXRpb25zID0KPiAgCQkJRFJNX01PREVfUk9UQVRFXzAgfCBEUk1fTU9ERV9ST1RB VEVfOTAgfAo+ICAJCQlEUk1fTU9ERV9ST1RBVEVfMTgwIHwgRFJNX01PREVfUk9UQVRFXzI3MDsK PiBAQCAtMTMyODIsMTQgKzEzMjgyLDE0IEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAkJc3Vw cG9ydGVkX3JvdGF0aW9ucyA9Cj4gIAkJCURSTV9NT0RFX1JPVEFURV8wIHwgRFJNX01PREVfUk9U QVRFXzE4MCB8Cj4gIAkJCURSTV9NT0RFX1JFRkxFQ1RfWDsKPiAtCX0gZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDQpKSB7Cj4gIAkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9Cj4gIAkJCURSTV9NT0RFX1JPVEFURV8w IHwgRFJNX01PREVfUk9UQVRFXzE4MDsKPiAgCX0gZWxzZSB7Cj4gIAkJc3VwcG9ydGVkX3JvdGF0 aW9ucyA9IERSTV9NT0RFX1JPVEFURV8wOwo+ICAJfQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDQpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpCj4gIAkJZHJtX3Bs YW5lX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eSgmcHJpbWFyeS0+YmFzZSwKPiAgCQkJCQkJICAg RFJNX01PREVfUk9UQVRFXzAsCj4gIAkJCQkJCSAgIHN1cHBvcnRlZF9yb3RhdGlvbnMpOwo+IEBA IC0xMzM2MiwxMyArMTMzNjIsMTMgQEAgaW50ZWxfY3Vyc29yX3BsYW5lX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZmFpbDsK PiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICsJaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDQpKQo+ICAJCWRybV9wbGFuZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoJmN1 cnNvci0+YmFzZSwKPiAgCQkJCQkJICAgRFJNX01PREVfUk9UQVRFXzAsCj4gIAkJCQkJCSAgIERS TV9NT0RFX1JPVEFURV8wIHwKPiAgCQkJCQkJICAgRFJNX01PREVfUk9UQVRFXzE4MCk7Cj4gIAo+ IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJU19HRU5fR1RFKGRldl9w cml2LCA5KSkKPiAgCQlzdGF0ZS0+c2NhbGVyX2lkID0gLTE7Cj4gIAo+ICAJZHJtX3BsYW5lX2hl bHBlcl9hZGQoJmN1cnNvci0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gQEAg LTEzNTQ4LDcgKzEzNTQ4LDcgQEAgc3RhdGljIGJvb2wgaGFzX2VkcF9hKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIHN0YXRpYyBib29sIGludGVsX2NydF9wcmVzZW50 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPiAgCQly ZXR1cm4gZmFsc2U7Cj4gIAo+ICAJaWYgKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8IElTX0JEV19V TFQoZGV2X3ByaXYpKQo+IEBAIC0xMzkyOSw3ICsxMzkyOSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxf ZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiLAo+ICAJ CS8qIGZhbGwgdGhyb3VnaCAqLwo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKPiAg CWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDwgOSkgewo+ICsJCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDkpKSB7Cj4gIAkJCURSTV9E RUJVR19LTVMoIlVuc3VwcG9ydGVkIHRpbGluZyAweCVsbHghXG4iLAo+ICAJCQkJICAgICAgbW9k ZV9jbWQtPm1vZGlmaWVyWzBdKTsKPiAgCQkJZ290byBlcnI7Cj4gQEAgLTEzOTQ3LDcgKzEzOTQ3 LDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBpbnRlbF9mcmFt ZWJ1ZmZlciAqaW50ZWxfZmIsCj4gIAkgKiBnZW4yLzMgZGlzcGxheSBlbmdpbmUgdXNlcyB0aGUg ZmVuY2UgaWYgcHJlc2VudCwKPiAgCSAqIHNvIHRoZSB0aWxpbmcgbW9kZSBtdXN0IG1hdGNoIHRo ZSBmYiBtb2RpZmllciBleGFjdGx5Lgo+ICAJICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDQgJiYKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDQpICYmCj4gIAkgICAgdGlsaW5n ICE9IGludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhtb2RlX2NtZC0+bW9kaWZpZXJbMF0pKSB7 Cj4gIAkJRFJNX0RFQlVHX0tNUygidGlsaW5nX21vZGUgbXVzdCBtYXRjaCBmYiBtb2RpZmllciBl eGFjdGx5IG9uIGdlbjIvM1xuIik7Cj4gIAkJZ290byBlcnI7Cj4gQEAgLTEzOTgxLDcgKzEzOTgx LDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBpbnRlbF9mcmFt ZWJ1ZmZlciAqaW50ZWxfZmIsCj4gIAljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Cj4gIAkJYnJl YWs7Cj4gIAljYXNlIERSTV9GT1JNQVRfWFJHQjE1NTU6Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPiAzKSB7Cj4gKwkJaWYgKElTX0dFTl9HVChkZXZfcHJpdiwgMykpIHsKPiAgCQkJRFJN X0RFQlVHX0tNUygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiAgCQkJCSAgICAg IGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1l KSk7Cj4gIAkJCWdvdG8gZXJyOwo+IEBAIC0xMzk4OSw3ICsxMzk4OSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2Zi LAo+ICAJCWJyZWFrOwo+ICAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ICAJCWlmICghSVNf VkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmCj4gLQkJ ICAgIElOVEVMX0dFTihkZXZfcHJpdikgPCA5KSB7Cj4gKwkJICAgIElTX0dFTl9MVChkZXZfcHJp diwgOSkpIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAl c1xuIiwKPiAgCQkJCSAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zv cm1hdCwgJmZvcm1hdF9uYW1lKSk7Cj4gIAkJCWdvdG8gZXJyOwo+IEBAIC0xMzk5OCw3ICsxMzk5 OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJh bWVidWZmZXIgKmludGVsX2ZiLAo+ICAJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ICAJY2Fz ZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgo+ICAJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEw Ogo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkgewo+ICsJCWlmIChJU19HRU5fTFQo ZGV2X3ByaXYsIDQpKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoInVuc3VwcG9ydGVkIHBpeGVsIGZv cm1hdDogJXNcbiIsCj4gIAkJCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5w aXhlbF9mb3JtYXQsICZmb3JtYXRfbmFtZSkpOwo+ICAJCQlnb3RvIGVycjsKPiBAQCAtMTQwMTUs NyArMTQwMTUsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGlu dGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiwKPiAgCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+ICAJ Y2FzZSBEUk1fRk9STUFUX1lWWVU6Cj4gIAljYXNlIERSTV9GT1JNQVRfVllVWToKPiAtCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikpIHsKPiArCQlpZiAo SVNfR0VOX0xUKGRldl9wcml2LCA1KSAmJiAhSVNfRzRYKGRldl9wcml2KSkgewo+ICAJCQlEUk1f REVCVUdfS01TKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ICAJCQkJICAgICAg ZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUp KTsKPiAgCQkJZ290byBlcnI7Cj4gQEAgLTE0MTYyLDcgKzE0MTYyLDcgQEAgdm9pZCBpbnRlbF9p bml0X2Rpc3BsYXlfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7 Cj4gIAlpbnRlbF9pbml0X2NkY2xrX2hvb2tzKGRldl9wcml2KTsKPiAgCj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsK PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcgPSBoYXN3ZWxsX2dldF9waXBl X2NvbmZpZzsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcg PQo+ICAJCQlza3lsYWtlX2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZzsKPiBAQCAtMTQyNDEsNyAr MTQyNDEsNyBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4g PSBoc3dfZmRpX2xpbmtfdHJhaW47Cj4gIAl9Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPiAgCQlkZXZfcHJpdi0+ ZGlzcGxheS51cGRhdGVfY3J0Y3MgPSBza2xfdXBkYXRlX2NydGNzOwo+ICAJZWxzZQo+ICAJCWRl dl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9jcnRjcyA9IGludGVsX3VwZGF0ZV9jcnRjczsKPiBAQCAt MTQ3NzQsNyArMTQ3NzQsNyBAQCBpbnRlbF9zYW5pdGl6ZV9wbGFuZV9tYXBwaW5nKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMgKmNy dGM7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKPiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA0KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0 YygmZGV2X3ByaXYtPmRybSwgY3J0Yykgewo+IEBAIC0xNTIxMCw3ICsxNTIxMCw3IEBAIGludGVs X21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp IHsKPiAgCQl2bHZfd21fZ2V0X2h3X3N0YXRlKGRldik7Cj4gIAkJdmx2X3dtX3Nhbml0aXplKGRl dl9wcml2KTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwl9 IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4gIAkJc2tsX3dtX2dldF9od19z dGF0ZShkZXYpOwo+ICAJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkgewo+ICAJ CWlsa193bV9nZXRfaHdfc3RhdGUoZGV2KTsKPiBAQCAtMTUzNjEsNyArMTUzNjEsNyBAQCB2b2lk IGludGVsX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IsCj4gICAqLwo+ICBpbnQgaW50ZWxfbW9kZXNldF92Z2Ffc2V0X3N0YXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBzdGF0ZSkKPiAgewo+IC0JdW5zaWdu ZWQgcmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ID8gU05CX0dNQ0hfQ1RSTCA6IElOVEVM X0dNQ0hfQ1RSTDsKPiArCXVuc2lnbmVkIHJlZyA9IElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpID8g U05CX0dNQ0hfQ1RSTCA6IElOVEVMX0dNQ0hfQ1RSTDsKPiAgCXUxNiBnbWNoX2N0cmw7Cj4gIAo+ ICAJaWYgKHBjaV9yZWFkX2NvbmZpZ193b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcsICZn bWNoX2N0cmwpKSB7Cj4gQEAgLTE1NDY3LDEzICsxNTQ2NywxMyBAQCBpbnRlbF9kaXNwbGF5X2Nh cHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAK PiAgCQllcnJvci0+cGxhbmVbaV0uY29udHJvbCA9IEk5MTVfUkVBRChEU1BDTlRSKGkpKTsKPiAg CQllcnJvci0+cGxhbmVbaV0uc3RyaWRlID0gSTkxNV9SRUFEKERTUFNUUklERShpKSk7Cj4gLQkJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gMykgewo+ICsJCWlmIChJU19HRU5fTFRFKGRldl9w cml2LCAzKSkgewo+ICAJCQllcnJvci0+cGxhbmVbaV0uc2l6ZSA9IEk5MTVfUkVBRChEU1BTSVpF KGkpKTsKPiAgCQkJZXJyb3ItPnBsYW5lW2ldLnBvcyA9IEk5MTVfUkVBRChEU1BQT1MoaSkpOwo+ ICAJCX0KPiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA3ICYmICFJU19IQVNXRUxMKGRl dl9wcml2KSkKPiArCQlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNykgJiYgIUlTX0hBU1dFTEwo ZGV2X3ByaXYpKQo+ICAJCQllcnJvci0+cGxhbmVbaV0uYWRkciA9IEk5MTVfUkVBRChEU1BBRERS KGkpKTsKPiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gKwkJaWYgKElTX0dF Tl9HVEUoZGV2X3ByaXYsIDQpKSB7Cj4gIAkJCWVycm9yLT5wbGFuZVtpXS5zdXJmYWNlID0gSTkx NV9SRUFEKERTUFNVUkYoaSkpOwo+ICAJCQllcnJvci0+cGxhbmVbaV0udGlsZV9vZmZzZXQgPSBJ OTE1X1JFQUQoRFNQVElMRU9GRihpKSk7Cj4gIAkJfQo+IEBAIC0xNTUzOCwxMyArMTU1MzgsMTMg QEAgaW50ZWxfZGlzcGxheV9wcmludF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jf c3RhdGVfYnVmICptLAo+ICAJCWVycl9wcmludGYobSwgIlBsYW5lIFslZF06XG4iLCBpKTsKPiAg CQllcnJfcHJpbnRmKG0sICIgIENOVFI6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5jb250cm9s KTsKPiAgCQllcnJfcHJpbnRmKG0sICIgIFNUUklERTogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ld LnN0cmlkZSk7Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gMykgewo+ICsJCWlmIChJ U19HRU5fTFRFKGRldl9wcml2LCAzKSkgewo+ICAJCQllcnJfcHJpbnRmKG0sICIgIFNJWkU6ICUw OHhcbiIsIGVycm9yLT5wbGFuZVtpXS5zaXplKTsKPiAgCQkJZXJyX3ByaW50ZihtLCAiICBQT1M6 ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5wb3MpOwo+ICAJCX0KPiAtCQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8PSA3ICYmICFJU19IQVNXRUxMKGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VO X0xURShkZXZfcHJpdiwgNykgJiYgIUlTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAJCQllcnJfcHJp bnRmKG0sICIgIEFERFI6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5hZGRyKTsKPiAtCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDQpKSB7Cj4gIAkJCWVycl9wcmludGYobSwgIiAgU1VSRjogJTA4eFxuIiwgZXJyb3ItPnBsYW5l W2ldLnN1cmZhY2UpOwo+ICAJCQllcnJfcHJpbnRmKG0sICIgIFRJTEVPRkY6ICUwOHhcbiIsIGVy cm9yLT5wbGFuZVtpXS50aWxlX29mZnNldCk7Cj4gIAkJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+IGluZGV4IGFiYmUxZTRlMGFmNS4uMzE5ZDBkMDBmNGNhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHN0YXRpYyBpOTE1X3JlZ190IHNrbF9h dXhfZGF0YV9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMg aTkxNV9yZWdfdCBpbnRlbF9hdXhfY3RsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJCQkgICAgZW51bSBwb3J0IHBvcnQpCj4gIHsKPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJcmV0 dXJuIHNrbF9hdXhfY3RsX3JlZyhkZXZfcHJpdiwgcG9ydCk7Cj4gIAllbHNlIGlmIChIQVNfUENI X1NQTElUKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gaWxrX2F1eF9jdGxfcmVnKGRldl9wcml2LCBw b3J0KTsKPiBAQCAtMTQ3OCw3ICsxNDc4LDcgQEAgc3RhdGljIGk5MTVfcmVnX3QgaW50ZWxfYXV4 X2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMgaTkx NV9yZWdfdCBpbnRlbF9hdXhfZGF0YV9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJCQkJICAgICBlbnVtIHBvcnQgcG9ydCwgaW50IGluZGV4KQo+ICB7Cj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkp KQo+ICAJCXJldHVybiBza2xfYXV4X2RhdGFfcmVnKGRldl9wcml2LCBwb3J0LCBpbmRleCk7Cj4g IAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gaWxrX2F1eF9k YXRhX3JlZyhkZXZfcHJpdiwgcG9ydCwgaW5kZXgpOwo+IEBAIC0xNzI2LDcgKzE3MjYsNyBAQCBp bnRlbF9kcF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAg Cj4gIAkJaW50ZWxfZml4ZWRfcGFuZWxfbW9kZShwYW5lbF9tb2RlLCBhZGp1c3RlZF9tb2RlKTsK PiAgCj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ICsJCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA5KSkgewo+ICAJCQlpbnQgcmV0Owo+ICAJCQlyZXQgPSBza2xfdXBkYXRl X3NjYWxlcl9jcnRjKHBpcGVfY29uZmlnKTsKPiAgCQkJaWYgKHJldCkKPiBAQCAtMzIwOCw3ICsz MjA4LDcgQEAgaW50ZWxfZHBfdm9sdGFnZV9tYXgoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfZHBf dG9fZGV2KGludGVsX2RwKSk7Cj4gIAllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGlu dGVsX2RwKS0+YmFzZS5wb3J0Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp IHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+ICAJCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsKPiAgCQly ZXR1cm4gaW50ZWxfZGRpX2RwX3ZvbHRhZ2VfbWF4KGVuY29kZXIpOwo+ICAJfSBlbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiBAQCAt MzIyNyw3ICszMjI3LDcgQEAgaW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLCB1aW50OF90IHZvbHRhZ2Vfc3dpbmcpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2RwX3RvX2RldihpbnRlbF9kcCkpOwo+ ICAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UucG9ydDsK PiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwlpZiAoSVNfR0VOX0dU RShkZXZfcHJpdiwgOSkpIHsKPiAgCQlzd2l0Y2ggKHZvbHRhZ2Vfc3dpbmcgJiBEUF9UUkFJTl9W T0xUQUdFX1NXSU5HX01BU0spIHsKPiAgCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVW RUxfMDoKPiAgCQkJcmV0dXJuIERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzM7Cj4gQEAgLTM3NjAs NyArMzc2MCw3IEBAIGludGVsX2VkcF9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiAgCQlEUk1fREVCVUdfS01TKCJEZXRlY3RlZCBFRFAgUFNSIFBhbmVsLlxuIik7Cj4gIAl9 Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJgo+ICsJaWYgKElTX0dFTl9H VEUoZGV2X3ByaXYsIDkpICYmCj4gIAkgICAgKGludGVsX2RwLT5wc3JfZHBjZFswXSAmIERQX1BT UjJfSVNfU1VQUE9SVEVEKSkgewo+ICAJCXVpbnQ4X3QgZnJhbWVfc3luY19jYXA7Cj4gIAo+IEBA IC01NDY4LDEwICs1NDY4LDEwIEBAIGJvb2wgaW50ZWxfZHBfaXNfcG9ydF9lZHAoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKPiAgCSAqIGVEUCBub3Qg c3VwcG9ydGVkIG9uIGc0eC4gc28gYmFpbCBvdXQgZWFybHkganVzdAo+ICAJICogZm9yIGEgYml0 IGV4dHJhIHNhZmV0eSBpbiBjYXNlIHRoZSBWQlQgaXMgYm9ua2Vycy4KPiAgCSAqLwo+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA1KQo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNSkp Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAm JiBwb3J0ID09IFBPUlRfQSkKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDkpICYmIHBvcnQg PT0gUE9SVF9BKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAgCXJldHVybiBpbnRlbF9iaW9zX2lz X3BvcnRfZWRwKGRldl9wcml2LCBwb3J0KTsKPiBAQCAtNTgzMCw3ICs1ODMwLDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZHBfc2V0X2RycnNfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA4ICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDgpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ICAJCXN3aXRjaCAo aW5kZXgpIHsKPiAgCQljYXNlIERSUlNfSElHSF9SUjoKPiAgCQkJaW50ZWxfZHBfc2V0X21fbihp bnRlbF9jcnRjLCBNMV9OMSk7Cj4gQEAgLTU4NDIsNyArNTg0Miw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RwX3NldF9kcnJzX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCQlkZWZhdWx0Ogo+ICAJCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIHJlZnJlc2hyYXRlIHR5 cGVcbiIpOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDYpIHsK PiArCX0gZWxzZSBpZiAoSVNfR0VOX0dUKGRldl9wcml2LCA2KSkgewo+ICAJCWk5MTVfcmVnX3Qg cmVnID0gUElQRUNPTkYoY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIpOwo+ICAJCXUzMiB2YWw7 Cj4gIAo+IEBAIC02MTE1LDcgKzYxMTUsNyBAQCBpbnRlbF9kcF9kcnJzX2luaXQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2 LT5kcnJzLndvcmssIGludGVsX2VkcF9kcnJzX2Rvd25jbG9ja193b3JrKTsKPiAgCW11dGV4X2lu aXQoJmRldl9wcml2LT5kcnJzLm11dGV4KTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8PSA2KSB7Cj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNikpIHsKPiAgCQlEUk1fREVC VUdfS01TKCJEUlJTIHN1cHBvcnRlZCBmb3IgR2VuNyBhbmQgYWJvdmVcbiIpOwo+ICAJCXJldHVy biBOVUxMOwo+ICAJfQo+IEBAIC02MzUzLDcgKzYzNTMsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5l Y3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAgCWludGVs X2RwLT5hY3RpdmVfcGlwZSA9IElOVkFMSURfUElQRTsKPiAgCj4gIAkvKiBpbnRlbF9kcCB2ZnVu Y3MgKi8KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKwlpZiAoSVNfR0VOX0dU RShkZXZfcHJpdiwgOSkpCj4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IHNr bF9nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7Cj4gIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2 KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAJCWludGVsX2RwLT5nZXRfYXV4X2Nsb2Nr X2RpdmlkZXIgPSBoc3dfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwo+IEBAIC02MzYyLDcgKzYzNjIs NyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCwKPiAgCWVsc2UKPiAgCQlpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19kaXZp ZGVyID0gZzR4X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ICAJCWludGVs X2RwLT5nZXRfYXV4X3NlbmRfY3RsID0gc2tsX2dldF9hdXhfc2VuZF9jdGw7Cj4gIAllbHNlCj4g IAkJaW50ZWxfZHAtPmdldF9hdXhfc2VuZF9jdGwgPSBnNHhfZ2V0X2F1eF9zZW5kX2N0bDsKPiBA QCAtNjUwMSw3ICs2NTAxLDcgQEAgYm9vbCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQlpbnRlbF9lbmNvZGVyLT5lbmFibGUgPSB2bHZfZW5hYmxl X2RwOwo+ICAJCWludGVsX2VuY29kZXItPmRpc2FibGUgPSB2bHZfZGlzYWJsZV9kcDsKPiAgCQlp bnRlbF9lbmNvZGVyLT5wb3N0X2Rpc2FibGUgPSB2bHZfcG9zdF9kaXNhYmxlX2RwOwo+IC0JfSBl bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgNSkpIHsKPiAgCQlpbnRlbF9lbmNvZGVyLT5wcmVfZW5hYmxlID0gZzR4 X3ByZV9lbmFibGVfZHA7Cj4gIAkJaW50ZWxfZW5jb2Rlci0+ZW5hYmxlID0gZzR4X2VuYWJsZV9k cDsKPiAgCQlpbnRlbF9lbmNvZGVyLT5kaXNhYmxlID0gaWxrX2Rpc2FibGVfZHA7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gaW5kZXggNTFjNWFlNGU5MTE2Li43YmRlNmI5 ODUzZTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3Iu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiBAQCAtMjEw LDcgKzIxMCw3IEBAIHZvaWQgaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKPiAgCXVuc2lnbmVkIGNydGNfbWFzayA9IDEgPDwgZHJtX2NydGNfaW5kZXgo JmNydGMtPmJhc2UpOwo+ICAKPiAgCS8qIFBDSCBvbmx5IGF2YWlsYWJsZSBvbiBJTEsrICovCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2 LCA1KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaWYgKHBsbCA9PSBOVUxMKQo+IEBAIC0xODYwLDcg KzE4NjAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcGxsX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkgewo+ICsJaWYg KElTX0dFTl9MVChkZXZfcHJpdiwgOSkpIHsKPiAgCQl1aW50MzJfdCB2YWwgPSBJOTE1X1JFQUQo TENQTExfQ1RMKTsKPiAgCj4gIAkJLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYwo+IGluZGV4IDdlZWJmYmI5NWU4OS4uOTcwNmJkOGQ5ZTc3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtMTkzLDcgKzE5Myw3IEBAIF9faW50ZWxf ZW5naW5lX2NvbnRleHRfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4 IGNsYXNzKQo+ICAJY2FzZSBWSURFT19ERUNPREVfQ0xBU1M6Cj4gIAljYXNlIFZJREVPX0VOSEFO Q0VNRU5UX0NMQVNTOgo+ICAJY2FzZSBDT1BZX0VOR0lORV9DTEFTUzoKPiAtCQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDgpCj4gKwkJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgOCkpCj4gIAkJ CXJldHVybiAwOwo+ICAJCXJldHVybiBHRU44X0xSX0NPTlRFWFRfT1RIRVJfU0laRTsKPiAgCX0K PiBAQCAtNjk2LDEwICs2OTYsMTAgQEAgdTY0IGludGVsX2VuZ2luZV9nZXRfYWN0aXZlX2hlYWQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAJdTY0IGFjdGhkOwo+ICAKPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkp Cj4gIAkJYWN0aGQgPSBJOTE1X1JFQUQ2NF8yeDMyKFJJTkdfQUNUSEQoZW5naW5lLT5tbWlvX2Jh c2UpLAo+ICAJCQkJCSBSSU5HX0FDVEhEX1VEVyhlbmdpbmUtPm1taW9fYmFzZSkpOwo+IC0JZWxz ZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShk ZXZfcHJpdiwgNCkpCj4gIAkJYWN0aGQgPSBJOTE1X1JFQUQoUklOR19BQ1RIRChlbmdpbmUtPm1t aW9fYmFzZSkpOwo+ICAJZWxzZQo+ICAJCWFjdGhkID0gSTkxNV9SRUFEKEFDVEhEKTsKPiBAQCAt NzEyLDcgKzcxMiw3IEBAIHU2NCBpbnRlbF9lbmdpbmVfZ2V0X2xhc3RfYmF0Y2hfaGVhZChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gIAl1NjQgYmJhZGRyOwo+ICAKPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDgpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpCj4g IAkJYmJhZGRyID0gSTkxNV9SRUFENjRfMngzMihSSU5HX0JCQUREUihlbmdpbmUtPm1taW9fYmFz ZSksCj4gIAkJCQkJICBSSU5HX0JCQUREUl9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAgCWVs c2UKPiBAQCAtMTQ3Miw3ICsxNDcyLDcgQEAgc3RhdGljIGJvb2wgcmluZ19pc19pZGxlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCQlpZGxlID0gZmFsc2U7Cj4gIAo+ICAJLyog Tm8gYml0IGZvciBnZW4yLCBzbyBhc3N1bWUgdGhlIENTIHBhcnNlciBpcyBpZGxlICovCj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDIgJiYgIShJOTE1X1JFQURfTU9ERShlbmdpbmUpICYg TU9ERV9JRExFKSkKPiArCWlmIChJU19HRU5fR1QoZGV2X3ByaXYsIDIpICYmICEoSTkxNV9SRUFE X01PREUoZW5naW5lKSAmIE1PREVfSURMRSkpCj4gIAkJaWRsZSA9IGZhbHNlOwo+ICAKPiAgCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiBAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgdm9p ZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAlk cm1fcHJpbnRmKG0sICJcdFJJTkdfQ1RMOiAgIDB4JTA4eCVzXG4iLAo+ICAJCSAgIEk5MTVfUkVB RChSSU5HX0NUTChlbmdpbmUtPm1taW9fYmFzZSkpLAo+ICAJCSAgIEk5MTVfUkVBRChSSU5HX0NU TChlbmdpbmUtPm1taW9fYmFzZSkpICYgKFJJTkdfV0FJVCB8IFJJTkdfV0FJVF9TRU1BUEhPUkUp ID8gIiBbd2FpdGluZ10iIDogIiIpOwo+IC0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID4g Mikgewo+ICsJaWYgKElTX0dFTl9HVChlbmdpbmUtPmk5MTUsIDIpKSB7Cj4gIAkJZHJtX3ByaW50 ZihtLCAiXHRSSU5HX01PREU6ICAweCUwOHglc1xuIiwKPiAgCQkJICAgSTkxNV9SRUFEKFJJTkdf TUlfTU9ERShlbmdpbmUtPm1taW9fYmFzZSkpLAo+ICAJCQkgICBJOTE1X1JFQUQoUklOR19NSV9N T0RFKGVuZ2luZS0+bW1pb19iYXNlKSkgJiAoTU9ERV9JRExFKSA/ICIgW2lkbGVdIiA6ICIiKTsK PiBAQCAtMTgwMCwxNiArMTgwMCwxNiBAQCB2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCWFkZHIgPSBpbnRlbF9lbmdpbmVfZ2V0X2xhc3Rf YmF0Y2hfaGVhZChlbmdpbmUpOwo+ICAJZHJtX3ByaW50ZihtLCAiXHRCQkFERFI6IDB4JTA4eF8l MDh4XG4iLAo+ICAJCSAgIHVwcGVyXzMyX2JpdHMoYWRkciksIGxvd2VyXzMyX2JpdHMoYWRkcikp Owo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA4KSkKPiAgCQlhZGRyID0gSTkxNV9SRUFENjRfMngzMihSSU5HX0RNQV9GQUREKGVu Z2luZS0+bW1pb19iYXNlKSwKPiAgCQkJCQlSSU5HX0RNQV9GQUREX1VEVyhlbmdpbmUtPm1taW9f YmFzZSkpOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICsJZWxzZSBp ZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpCj4gIAkJYWRkciA9IEk5MTVfUkVBRChSSU5HX0RN QV9GQUREKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gIAllbHNlCj4gIAkJYWRkciA9IEk5MTVfUkVB RChETUFfRkFERF9JOFhYKTsKPiAgCWRybV9wcmludGYobSwgIlx0RE1BX0ZBRERSOiAweCUwOHhf JTA4eFxuIiwKPiAgCQkgICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8zMl9iaXRzKGFkZHIp KTsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA0KSkgewo+ICAJCWRybV9wcmludGYobSwgIlx0SVBFSVI6IDB4JTA4eFxuIiwK PiAgCQkJICAgSTkxNV9SRUFEKFJJTkdfSVBFSVIoZW5naW5lLT5tbWlvX2Jhc2UpKSk7Cj4gIAkJ ZHJtX3ByaW50ZihtLCAiXHRJUEVIUjogMHglMDh4XG4iLAo+IEBAIC0xODY5LDcgKzE4NjksNyBA QCB2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiAgCQl9Cj4gIAkJZHJtX3ByaW50ZihtLCAiXHRcdEhXIGFjdGl2ZT8gMHgleFxuIiwgZXhlY2xp c3RzLT5hY3RpdmUpOwo+ICAJCXJjdV9yZWFkX3VubG9jaygpOwo+IC0JfSBlbHNlIGlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID4gNikgewo+ICsJfSBlbHNlIGlmIChJU19HRU5fR1QoZGV2X3ByaXYs IDYpKSB7Cj4gIAkJZHJtX3ByaW50ZihtLCAiXHRQUF9ESVJfQkFTRTogMHglMDh4XG4iLAo+ICAJ CQkgICBJOTE1X1JFQUQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUpKSk7Cj4gIAkJZHJtX3ByaW50 ZihtLCAiXHRQUF9ESVJfQkFTRV9SRUFEOiAweCUwOHhcbiIsCj4gQEAgLTE4OTksNyArMTg5OSw3 IEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAo+ICAJfQo+ICAJc3Bpbl91bmxvY2tfaXJxKCZiLT5yYl9sb2NrKTsKPiAgCj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikp IHsKPiAgCQlkcm1fcHJpbnRmKG0sICJcdFJJTkdfSU1SOiAlMDh4XG4iLCBJOTE1X1JFQURfSU1S KGVuZ2luZSkpOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+IGluZGV4IDBh ZDg1NDA5NWMzOC4uMzBkYTYwODVmODRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMK PiBAQCAtNDgsMTcgKzQ4LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBmYmNfc3VwcG9ydGVkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIHN0YXRpYyBpbmxpbmUgYm9v bCBmYmNfb25fcGlwZV9hX29ubHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICB7Cj4gLQlyZXR1cm4gSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2 KSA+PSA4Owo+ICsJcmV0dXJuIElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0dFTl9HVEUoZGV2 X3ByaXYsIDgpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5lIGJvb2wgZmJjX29uX3BsYW5lX2Ff b25seShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCXJldHVybiBJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgNDsKPiArCXJldHVybiBJU19HRU5fTFQoZGV2X3ByaXYsIDQp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5lIGJvb2wgbm9fZmJjX29uX211bHRpcGxlX3BpcGVz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JcmV0dXJuIElOVEVM X0dFTihkZXZfcHJpdikgPD0gMzsKPiArCXJldHVybiBJU19HRU5fTFRFKGRldl9wcml2LCAzKTsK PiAgfQo+ICAKPiAgLyoKPiBAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZiY19j YWxjdWxhdGVfY2ZiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ aW50ZWxfZmJjX2dldF9wbGFuZV9zb3VyY2Vfc2l6ZShjYWNoZSwgTlVMTCwgJmxpbmVzKTsKPiAg CWlmIChJU19HRU43KGRldl9wcml2KSkKPiAgCQlsaW5lcyA9IG1pbihsaW5lcywgMjA0OCk7Cj4g LQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gKwllbHNlIGlmIChJU19HRU5f R1RFKGRldl9wcml2LCA4KSkKPiAgCQlsaW5lcyA9IG1pbihsaW5lcywgMjU2MCk7Cj4gIAo+ICAJ LyogSGFyZHdhcmUgbmVlZHMgdGhlIGZ1bGwgYnVmZmVyIHN0cmlkZSwgbm90IGp1c3QgdGhlIGFj dGl2ZSBhcmVhLiAqLwo+IEBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIHZvaWQgZ2VuN19mYmNf YWN0aXZhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgc3RhdGlj IGJvb2wgaW50ZWxfZmJjX2h3X2lzX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIHsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCj4gKwlpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgNSkpCj4gIAkJcmV0dXJuIGlsa19mYmNfaXNfYWN0aXZlKGRldl9w cml2KTsKPiAgCWVsc2UgaWYgKElTX0dNNDUoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBnNHhfZmJj X2lzX2FjdGl2ZShkZXZfcHJpdik7Cj4gQEAgLTM3MSw5ICszNzEsOSBAQCBzdGF0aWMgdm9pZCBp bnRlbF9mYmNfaHdfYWN0aXZhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAKPiAgCWZiYy0+YWN0aXZlID0gdHJ1ZTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA3KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDcpKQo+ICAJCWdlbjdfZmJjX2Fj dGl2YXRlKGRldl9wcml2KTsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkK PiArCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKQo+ICAJCWlsa19mYmNfYWN0aXZh dGUoZGV2X3ByaXYpOwo+ICAJZWxzZSBpZiAoSVNfR000NShkZXZfcHJpdikpCj4gIAkJZzR4X2Zi Y19hY3RpdmF0ZShkZXZfcHJpdik7Cj4gQEAgLTM4Nyw3ICszODcsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9mYmNfaHdfZGVhY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAo+ICAJZmJjLT5hY3RpdmUgPSBmYWxzZTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA1KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKQo+ICAJCWlsa19mYmNf ZGVhY3RpdmF0ZShkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19HTTQ1KGRldl9wcml2KSkKPiAg CQlnNHhfZmJjX2RlYWN0aXZhdGUoZGV2X3ByaXYpOwo+IEBAIC01NjgsNyArNTY4LDcgQEAgc3Rh dGljIGludCBmaW5kX2NvbXByZXNzaW9uX3RocmVzaG9sZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAo+ICAJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlX2lu X3JhbmdlKGRldl9wcml2LCBub2RlLCBzaXplID4+PSAxLAo+ICAJCQkJCQkgICA0MDk2LCAwLCBl bmQpOwo+IC0JaWYgKHJldCAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQpIHsKPiArCWlmIChy ZXQgJiYgSVNfR0VOX0xURShkZXZfcHJpdiwgNCkpIHsKPiAgCQlyZXR1cm4gMDsKPiAgCX0gZWxz ZSBpZiAocmV0KSB7Cj4gIAkJY29tcHJlc3Npb25fdGhyZXNob2xkIDw8PSAxOwo+IEBAIC02MDEs NyArNjAxLDcgQEAgc3RhdGljIGludCBpbnRlbF9mYmNfYWxsb2NfY2ZiKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQo+ICAKPiAgCWZiYy0+dGhyZXNob2xkID0gcmV0Owo+ICAKPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDUpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpCj4g IAkJSTkxNV9XUklURShJTEtfRFBGQ19DQl9CQVNFLCBmYmMtPmNvbXByZXNzZWRfZmIuc3RhcnQp Owo+ICAJZWxzZSBpZiAoSVNfR000NShkZXZfcHJpdikpIHsKPiAgCQlJOTE1X1dSSVRFKERQRkNf Q0JfQkFTRSwgZmJjLT5jb21wcmVzc2VkX2ZiLnN0YXJ0KTsKPiBAQCAtNzI0LDEwICs3MjQsMTAg QEAgc3RhdGljIGJvb2wgaW50ZWxfZmJjX2h3X3RyYWNraW5nX2NvdmVyc19zY3JlZW4oc3RydWN0 IGludGVsX2NydGMgKmNydGMpCj4gIAlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYt PmZiYzsKPiAgCXVuc2lnbmVkIGludCBlZmZlY3RpdmVfdywgZWZmZWN0aXZlX2gsIG1heF93LCBt YXhfaDsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4IHx8IElTX0hBU1dFTEwo ZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkgfHwgSVNfSEFTV0VM TChkZXZfcHJpdikpIHsKPiAgCQltYXhfdyA9IDQwOTY7Cj4gIAkJbWF4X2ggPSA0MDk2Owo+IC0J fSBlbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkg ewo+ICsJfSBlbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElTX0dFTl9HVEUoZGV2X3ByaXYs IDUpKSB7Cj4gIAkJbWF4X3cgPSA0MDk2Owo+ICAJCW1heF9oID0gMjA0ODsKPiAgCX0gZWxzZSB7 Cj4gQEAgLTgyMCw3ICs4MjAsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNfY2FuX2FjdGl2YXRl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJmcmFt ZWJ1ZmZlciBub3QgdGlsZWQgb3IgZmVuY2VkIjsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmICFJU19HNFgoZGV2X3ByaXYpICYmCj4g KwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNCkgJiYgIUlTX0c0WChkZXZfcHJpdikgJiYKPiAg CSAgICBjYWNoZS0+cGxhbmUucm90YXRpb24gIT0gRFJNX01PREVfUk9UQVRFXzApIHsKPiAgCQlm YmMtPm5vX2ZiY19yZWFzb24gPSAicm90YXRpb24gdW5zdXBwb3J0ZWQiOwo+ICAJCXJldHVybiBm YWxzZTsKPiBAQCAtMTMyNSw3ICsxMzI1LDcgQEAgc3RhdGljIGludCBpbnRlbF9zYW5pdGl6ZV9m YmNfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmICghSEFT X0ZCQyhkZXZfcHJpdikpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JaWYgKElTX0JST0FEV0VMTChk ZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJaWYgKElTX0JST0FEV0VM TChkZXZfcHJpdikgfHwgSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJcmV0dXJuIDE7Cj4g IAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTEzODIsNyArMTM4Miw3IEBAIHZvaWQgaW50ZWxfZmJjX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJfQo+ICAKPiAgCS8qIFRo aXMgdmFsdWUgd2FzIHB1bGxlZCBvdXQgb2Ygc29tZW9uZSdzIGhhdCAqLwo+IC0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPD0gNCAmJiAhSVNfR000NShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VO X0xURShkZXZfcHJpdiwgNCkgJiYgIUlTX0dNNDUoZGV2X3ByaXYpKQo+ICAJCUk5MTVfV1JJVEUo RkJDX0NPTlRST0wsIDUwMCA8PCBGQkNfQ1RMX0lOVEVSVkFMX1NISUZUKTsKPiAgCj4gIAkvKiBX ZSBzdGlsbCBkb24ndCBoYXZlIGFueSBzb3J0IG9mIGhhcmR3YXJlIHN0YXRlIHJlYWRvdXQgZm9y IEZCQywgc28KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191 bmRlcnJ1bi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4g aW5kZXggNzdjMTIzY2M4ODE3Li4wNTIxMjA4MDQxYWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMg Ym9vbCBfX2ludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCQlpcm9ubGFrZV9zZXRfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2 LCBwaXBlLCBlbmFibGUpOwo+ICAJZWxzZSBpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gIAkJaXZ5 YnJpZGdlX3NldF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXYsIHBpcGUsIGVuYWJsZSwgb2xk KTsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiArCWVsc2UgaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+ICAJCWJyb2Fkd2VsbF9zZXRfZmlmb191bmRlcnJ1bl9y ZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUpOwo+ICAKPiAgCXJldHVybiBvbGQ7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCA0MmU0NWFlODczOTMuLjNlNGRi MWMwMzI5ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hl Y2suYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jCj4gQEAg LTk3LDcgKzk3LDcgQEAgc2VtYXBob3JlX3dhaXRzX2ZvcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsIHUzMiAqc2Vxbm8pCj4gIAkgKiByaW5nYnVmZmVyIGl0c2VsZi4KPiAgCSAqLwo+ ICAJaGVhZCA9IEk5MTVfUkVBRF9IRUFEKGVuZ2luZSkgJiBIRUFEX0FERFI7Cj4gLQliYWNrd2Fy ZHMgPSAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSA/IDUgOiA0Owo+ICsJYmFja3dhcmRzID0g KElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKSA/IDUgOiA0Owo+ICAJdmFkZHIgPSAodm9pZCBfX2lv bWVtICopZW5naW5lLT5idWZmZXItPnZhZGRyOwo+ICAKPiAgCWZvciAoaSA9IGJhY2t3YXJkczsg aTsgLS1pKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3Au YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+IGluZGV4IDE0Y2E1ZDMwNTdh Ny4uOWM1ZWUyZGFlOWZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+IEBAIC02 NTEsNyArNjUxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRjcF9wcm9wX3dvcmsoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQo+ICBib29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCj4gIHsKPiAgCS8qIFBPUlQgRSBk b2Vzbid0IGhhdmUgSERDUCwgYW5kIFBPUlQgRiBpcyBkaXNhYmxlZCAqLwo+IC0JcmV0dXJuICgo SU5URUxfR0VOKGRldl9wcml2KSA+PSA4IHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSAmJgo+ICsJ cmV0dXJuICgoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkgfHwgSVNfSEFTV0VMTChkZXZfcHJpdikp ICYmCj4gIAkJIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIHBvcnQgPCBQT1JUX0UpOwo+ICB9 Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBpbmRleCBmNWQ3YmZiNDMwMDYuLmVh NjRkZjUwODA1MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1p LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBAQCAtMTQ4MSwx MSArMTQ4MSwxMSBAQCBzdGF0aWMgaW50IGludGVsX2hkbWlfc291cmNlX21heF90bWRzX2Nsb2Nr KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJCSZkZXZfcHJpdi0+dmJ0LmRkaV9w b3J0X2luZm9bZW5jb2Rlci0+cG9ydF07Cj4gIAlpbnQgbWF4X3RtZHNfY2xvY2s7Cj4gIAo+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikp Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgMTApIHx8IElTX0dFTUlOSUxBS0UoZGV2X3By aXYpKQo+ICAJCW1heF90bWRzX2Nsb2NrID0gNTk0MDAwOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA4IHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgOCkgfHwgSVNfSEFTV0VMTChkZXZfcHJpdikpCj4gIAkJbWF4X3Rt ZHNfY2xvY2sgPSAzMDAwMDA7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUp Cj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA1KSkKPiAgCQltYXhfdG1kc19jbG9j ayA9IDIyNTAwMDsKPiAgCWVsc2UKPiAgCQltYXhfdG1kc19jbG9jayA9IDE2NTAwMDsKPiBAQCAt MTc1NCw3ICsxNzU0LDcgQEAgYm9vbCBpbnRlbF9oZG1pX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0g NDsKPiAgCj4gLQlpZiAoc2NkYy0+c2NyYW1ibGluZy5zdXBwb3J0ZWQgJiYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTAgfHwKPiArCWlmIChzY2RjLT5zY3JhbWJsaW5nLnN1cHBvcnRlZCAmJiAo SVNfR0VOX0dURShkZXZfcHJpdiwgMTApIHx8Cj4gIAkJCQkJICAgSVNfR0VNSU5JTEFLRShkZXZf cHJpdikpKSB7Cj4gIAkJaWYgKHNjZGMtPnNjcmFtYmxpbmcubG93X3JhdGVzKQo+ICAJCQlwaXBl X2NvbmZpZy0+aGRtaV9zY3JhbWJsaW5nID0gdHJ1ZTsKPiBAQCAtMjMyNCw3ICsyMzI0LDcgQEAg dm9pZCBpbnRlbF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0LAo+ICAJY29ubmVjdG9yLT5kb3VibGVzY2FuX2FsbG93ZWQgPSAwOwo+ ICAJY29ubmVjdG9yLT5zdGVyZW9fYWxsb3dlZCA9IDE7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VO X0dURShkZXZfcHJpdiwgMTApIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCWNvbm5l Y3Rvci0+eWNiY3JfNDIwX2FsbG93ZWQgPSB0cnVlOwo+ICAKPiAgCWludGVsX2hkbWktPmRkY19i dXMgPSBpbnRlbF9oZG1pX2RkY19waW4oZGV2X3ByaXYsIHBvcnQpOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCj4gaW5kZXggMzgwYzA4MzhkOGIzLi4xYTA4ZjZiZGFmNTAgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0xNDg4LDcgKzE0ODgsNyBAQCBzdGF0aWMgdm9pZCBl bmFibGVfZXhlY2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCSAqIGRl ZXBlciBGSUZPIGl0J3Mgbm90IG5lZWRlZCBhbmQgaXQncyBub3Qgd29ydGggYWRkaW5nCj4gIAkg KiBtb3JlIHN0YXRlbWVudHMgdG8gdGhlIGlycSBoYW5kbGVyIHRvIHN1cHBvcnQgaXQuCj4gIAkg Ki8KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ICsJaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDExKSkKPiAgCQlJOTE1X1dSSVRFKFJJTkdfTU9ERV9HRU43KGVuZ2luZSksCj4g IAkJCSAgIF9NQVNLRURfQklUX0RJU0FCTEUoR0VOMTFfR0ZYX0RJU0FCTEVfTEVHQUNZX01PREUp KTsKPiAgCWVsc2UKPiBAQCAtMjA1Nyw3ICsyMDU3LDcgQEAgaW50IGxvZ2ljYWxfcmVuZGVyX3Jp bmdfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkJZW5naW5lLT5pcnFf a2VlcF9tYXNrIHw9IEdUX1JFTkRFUl9MM19QQVJJVFlfRVJST1JfSU5URVJSVVBUOwo+ICAKPiAg CS8qIE92ZXJyaWRlIHNvbWUgZm9yIHJlbmRlciByaW5nLiAqLwo+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPiAgCQllbmdp bmUtPmluaXRfaHcgPSBnZW45X2luaXRfcmVuZGVyX3Jpbmc7Cj4gIAllbHNlCj4gIAkJZW5naW5l LT5pbml0X2h3ID0gZ2VuOF9pbml0X3JlbmRlcl9yaW5nOwo+IEBAIC0yMTAwLDcgKzIxMDAsNyBA QCBtYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICogTm8g ZXhwbGljaXQgUlBDUyByZXF1ZXN0IGlzIG5lZWRlZCB0byBlbnN1cmUgZnVsbAo+ICAJICogc2xp Y2Uvc3Vic2xpY2UvRVUgZW5hYmxlbWVudCBwcmlvciB0byBHZW45Lgo+ICAJKi8KPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDkpKQo+ ICAJCXJldHVybiAwOwo+ICAKPiAgCS8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IGlu ZGV4IDQ2NzdhYzBiMTBkNy4uNTc3Mzg1Y2IzYzhkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2x2ZHMuYwo+IEBAIC0xMzksMTIgKzEzOSwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9sdmRzX2dl dF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiAgCj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDUpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA1KSkKPiAgCQlw aXBlX2NvbmZpZy0+Z21jaF9wZml0Lmx2ZHNfYm9yZGVyX2JpdHMgPQo+ICAJCQl0bXAgJiBMVkRT X0JPUkRFUl9FTkFCTEU7Cj4gIAo+ICAJLyogZ2VuMi8zIHN0b3JlIGRpdGhlciBzdGF0ZSBpbiBw Zml0IGNvbnRyb2wsIG5lZWRzIHRvIG1hdGNoICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDQpIHsKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDQpKSB7Cj4gIAkJdG1wID0gSTkx NV9SRUFEKFBGSVRfQ09OVFJPTCk7Cj4gIAo+ICAJCXBpcGVfY29uZmlnLT5nbWNoX3BmaXQuY29u dHJvbCB8PSB0bXAgJiBQQU5FTF84VE82X0RJVEhFUl9FTkFCTEU7Cj4gQEAgLTE4OSw3ICsxODks NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9sdmRzX3Bwc19nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJLyogQ29udmVydCBmcm9tIDEwMG1zIHRvIDEwMHVz IHVuaXRzICovCj4gIAlwcHMtPnQ0ID0gdmFsICogMTAwMDsKPiAgCj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8PSA0ICYmCj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNCkgJiYKPiAg CSAgICBwcHMtPnQxX3QyID09IDAgJiYgcHBzLT50NSA9PSAwICYmIHBwcy0+dDMgPT0gMCAmJiBw cHMtPnR4ID09IDApIHsKPiAgCQlEUk1fREVCVUdfS01TKCJQYW5lbCBwb3dlciB0aW1pbmdzIHVu aW5pdGlhbGl6ZWQsICIKPiAgCQkJICAgICAgInNldHRpbmcgZGVmYXVsdHNcbiIpOwo+IEBAIC0z OTYsNyArMzk2LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfbHZkc19jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiAgCXVuc2lnbmVkIGludCBsdmRzX2Jw cDsKPiAgCj4gIAkvKiBTaG91bGQgbmV2ZXIgaGFwcGVuISEgKi8KPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgNCAmJiBpbnRlbF9jcnRjLT5waXBlID09IDApIHsKPiArCWlmIChJU19HRU5f TFQoZGV2X3ByaXYsIDQpICYmIGludGVsX2NydGMtPnBpcGUgPT0gMCkgewo+ICAJCURSTV9FUlJP UigiQ2FuJ3Qgc3VwcG9ydCBMVkRTIG9uIHBpcGUgQVxuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ ICAJfQo+IEBAIC05MTQsNyArOTE0LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfbHZkc19zdXBwb3J0 ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCS8qIE90aGVyd2lz ZSBMVkRTIHdhcyBvbmx5IGF0dGFjaGVkIHRvIG1vYmlsZSBwcm9kdWN0cywKPiAgCSAqIGV4Y2Vw dCBmb3IgdGhlIGluZ2xvcmlvdXMgODMwZ20gKi8KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDw9IDQgJiYKPiArCWlmIChJU19HRU5fTFRFKGRldl9wcml2LCA0KSAmJgo+ICAJICAgIElTX01P QklMRShkZXZfcHJpdikgJiYgIUlTX0k4MzAoZGV2X3ByaXYpKQo+ICAJCXJldHVybiB0cnVlOwo+ ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gaW5kZXggYWJiN2E4YzFlMzQwLi4wMmIy NzY4YjU1NmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gQEAgLTE4Nyw3ICsx ODcsNyBAQCBzdGF0aWMgYm9vbCBnZXRfbW9jc19zZXR0aW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAkJdGFibGUtPnRhYmxlID0gYnJveHRvbl9tb2NzX3RhYmxlOwo+ ICAJCXJlc3VsdCA9IHRydWU7Cj4gIAl9IGVsc2Ugewo+IC0JCVdBUk5fT05DRShJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDksCj4gKwkJV0FSTl9PTkNFKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpLAo+ ICAJCQkgICJQbGF0Zm9ybSB0aGF0IHNob3VsZCBoYXZlIGEgTU9DUyB0YWJsZSBkb2VzIG5vdC5c biIpOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gaW5kZXgg NDFlOTQ2NWQ0NGE4Li43NTIwODVhMmEyZDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ZlcmxheS5jCj4gQEAgLTk0NSw3ICs5NDUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcGZpdF92 c2NhbGVfcmF0aW8oc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gIAkvKiBYWFg6IFRo aXMgaXMgbm90IHRoZSBzYW1lIGxvZ2ljIGFzIGluIHRoZSB4b3JnIGRyaXZlciwgYnV0IG1vcmUg aW4KPiAgCSAqIGxpbmUgd2l0aCB0aGUgaW50ZWwgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGk5NjUK PiAgCSAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewo+ICsJaWYgKElTX0dF Tl9HVEUoZGV2X3ByaXYsIDQpKSB7Cj4gIAkJLyogb24gaTk2NSB1c2UgdGhlIFBHTSByZWcgdG8g cmVhZCBvdXQgdGhlIGF1dG9zY2FsZXIgdmFsdWVzICovCj4gIAkJcmF0aW8gPSBJOTE1X1JFQUQo UEZJVF9QR01fUkFUSU9TKSA+PiBQRklUX1ZFUlRfU0NBTEVfU0hJRlRfOTY1Owo+ICAJfSBlbHNl IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCA3OGE1M2M4YjE3ODkuLjU1 NzI0OTU4M2Y4ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5l bC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0zMjYs NyArMzI2LDcgQEAgdm9pZCBpbnRlbF9nbWNoX3BhbmVsX2ZpdHRpbmcoc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMsCj4gIAkJYnJlYWs7Cj4gIAljYXNlIERSTV9NT0RFX1NDQUxFX0FTUEVD VDoKPiAgCQkvKiBTY2FsZSBidXQgcHJlc2VydmUgdGhlIGFzcGVjdCByYXRpbyAqLwo+IC0JCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gKwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDQpKQo+ICAJCQlpOTY1X3NjYWxlX2FzcGVjdChwaXBlX2NvbmZpZywgJnBmaXRfY29udHJvbCk7 Cj4gIAkJZWxzZQo+ICAJCQlpOXh4X3NjYWxlX2FzcGVjdChwaXBlX2NvbmZpZywgJnBmaXRfY29u dHJvbCwKPiBAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgaW50ZWxfZ21jaF9wYW5lbF9maXR0aW5n KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCWlmIChwaXBlX2NvbmZpZy0+cGlw ZV9zcmNfaCAhPSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5IHx8Cj4gIAkJICAgIHBpcGVf Y29uZmlnLT5waXBlX3NyY193ICE9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkpIHsKPiAg CQkJcGZpdF9jb250cm9sIHw9IFBGSVRfRU5BQkxFOwo+IC0JCQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA0KQo+ICsJCQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkpCj4gIAkJCQlwZml0 X2NvbnRyb2wgfD0gUEZJVF9TQ0FMSU5HX0FVVE87Cj4gIAkJCWVsc2UKPiAgCQkJCXBmaXRfY29u dHJvbCB8PSAoVkVSVF9BVVRPX1NDQUxFIHwKPiBAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgaW50 ZWxfZ21jaF9wYW5lbF9maXR0aW5nKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAK PiAgCS8qIDk2NSsgd2FudHMgZnV6enkgZml0dGluZyAqLwo+ICAJLyogRklYTUU6IGhhbmRsZSBt dWx0aXBsZSBwYW5lbHMgYnkgZmFpbGluZyBncmFjZWZ1bGx5ICovCj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA0KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+ICAJCXBm aXRfY29udHJvbCB8PSAoKGludGVsX2NydGMtPnBpcGUgPDwgUEZJVF9QSVBFX1NISUZUKSB8Cj4g IAkJCQkgUEZJVF9GSUxURVJfRlVaWlkpOwo+ICAKPiBAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQg aW50ZWxfZ21jaF9wYW5lbF9maXR0aW5nKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ ICAJfQo+ICAKPiAgCS8qIE1ha2Ugc3VyZSBwcmUtOTY1IHNldCBkaXRoZXIgY29ycmVjdGx5IGZv ciAxOGJwcCBwYW5lbHMuICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQgJiYgcGlw ZV9jb25maWctPnBpcGVfYnBwID09IDE4KQo+ICsJaWYgKElTX0dFTl9MVChkZXZfcHJpdiwgNCkg JiYgcGlwZV9jb25maWctPnBpcGVfYnBwID09IDE4KQo+ICAJCXBmaXRfY29udHJvbCB8PSBQQU5F TF84VE82X0RJVEhFUl9FTkFCTEU7Cj4gIAo+ICAJcGlwZV9jb25maWctPmdtY2hfcGZpdC5jb250 cm9sID0gcGZpdF9jb250cm9sOwo+IEBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIHUzMiBpOXh4 X2dldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJdTMy IHZhbDsKPiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQoQkxDX1BXTV9DVEwpICYgQkFDS0xJR0hUX0RV VFlfQ1lDTEVfTUFTSzsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPiArCWlmIChJ U19HRU5fTFQoZGV2X3ByaXYsIDQpKQo+ICAJCXZhbCA+Pj0gMTsKPiAgCj4gIAlpZiAocGFuZWwt PmJhY2tsaWdodC5jb21iaW5hdGlvbl9tb2RlKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w aXBlX2NyYy5jCj4gaW5kZXggMWY1Y2Q1NzJhN2ZmLi4wMTdiZDI2MDJjOTkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMKPiBAQCAtNjA0LDcgKzYwNCw3IEBAIHN0YXRp YyBpbnQgZ2V0X25ld19jcmNfY3RsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIHsKPiAgCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gaTh4eF9waXBl X2NyY19jdGxfcmVnKHNvdXJjZSwgdmFsKTsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPCA1KQo+ICsJZWxzZSBpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA1KSkKPiAgCQlyZXR1cm4g aTl4eF9waXBlX2NyY19jdGxfcmVnKGRldl9wcml2LCBwaXBlLCBzb3VyY2UsIHZhbCk7Cj4gIAll bHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2 KSkKPiAgCQlyZXR1cm4gdmx2X3BpcGVfY3JjX2N0bF9yZWcoZGV2X3ByaXYsIHBpcGUsIHNvdXJj ZSwgdmFsKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA3YTExMmQwNzVjMjQuLjM3 NDIxZmU0YzBhMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0yNTcxLDkgKzI1 NzEsOSBAQCBzdGF0aWMgdWludDMyX3QgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQKPiAgaWxrX2Rp c3BsYXlfZmlmb19zaXplKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgewo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA4KSkKPiAgCQlyZXR1cm4gMzA3MjsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNykKPiArCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDcpKQo+ICAJ CXJldHVybiA3Njg7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIDUxMjsKPiBAQCAtMjU4MywxMCArMjU4 MywxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50Cj4gIGlsa19wbGFuZV93bV9yZWdfbWF4KGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkgICAgIGludCBsZXZlbCwg Ym9vbCBpc19zcHJpdGUpCj4gIHsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4g KwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpCj4gIAkJLyogQkRXIHByaW1hcnkvc3ByaXRl IHBsYW5lIHdhdGVybWFya3MgKi8KPiAgCQlyZXR1cm4gbGV2ZWwgPT0gMCA/IDI1NSA6IDIwNDc7 Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpCj4gKwllbHNlIGlmIChJU19H RU5fR1RFKGRldl9wcml2LCA3KSkKPiAgCQkvKiBJVkIvSFNXIHByaW1hcnkvc3ByaXRlIHBsYW5l IHdhdGVybWFya3MgKi8KPiAgCQlyZXR1cm4gbGV2ZWwgPT0gMCA/IDEyNyA6IDEwMjM7Cj4gIAll bHNlIGlmICghaXNfc3ByaXRlKQo+IEBAIC0yNjAwLDcgKzI2MDAsNyBAQCBpbGtfcGxhbmVfd21f cmVnX21heChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRp YyB1bnNpZ25lZCBpbnQKPiAgaWxrX2N1cnNvcl93bV9yZWdfbWF4KGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGxldmVsKQo+ICB7Cj4gLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA3KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDcpKQo+ICAJCXJl dHVybiBsZXZlbCA9PSAwID8gNjMgOiAyNTU7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIGxldmVsID09 IDAgPyAzMSA6IDYzOwo+IEBAIC0yNjA4LDcgKzI2MDgsNyBAQCBpbGtfY3Vyc29yX3dtX3JlZ19t YXgoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgbGV2ZWwpCj4g IAo+ICBzdGF0aWMgdW5zaWduZWQgaW50IGlsa19mYmNfd21fcmVnX21heChjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDgpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpCj4gIAkJcmV0dXJuIDMx Owo+ICAJZWxzZQo+ICAJCXJldHVybiAxNTsKPiBAQCAtMjYzNyw3ICsyNjM3LDcgQEAgc3RhdGlj IHVuc2lnbmVkIGludCBpbGtfcGxhbmVfd21fbWF4KGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAkJICogRklGTyBzaXplIGlzIG9ubHkgaGFsZiBvZiB0aGUgc2VsZgo+ICAJCSAqIHJl ZnJlc2ggRklGTyBzaXplIG9uIElMSy9TTkIuCj4gIAkJICovCj4gLQkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPD0gNikKPiArCQlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNikpCj4gIAkJCWZp Zm9fc2l6ZSAvPSAyOwo+ICAJfQo+ICAKPiBAQCAtMjc5OCw3ICsyNzk4LDcgQEAgaHN3X2NvbXB1 dGVfbGluZXRpbWVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiAg c3RhdGljIHZvaWQgaW50ZWxfcmVhZF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCQkJCSAgdWludDE2X3Qgd21bOF0pCj4gIHsKPiAtCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+ ICAJCXVpbnQzMl90IHZhbDsKPiAgCQlpbnQgcmV0LCBpOwo+ICAJCWludCBsZXZlbCwgbWF4X2xl dmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4gQEAgLTI4ODMsMTQgKzI4ODMsMTQg QEAgc3RhdGljIHZvaWQgaW50ZWxfcmVhZF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQl3bVsyXSA9IChzc2twZCA+PiAxMikgJiAweEZGOwo+ICAJCXdt WzNdID0gKHNza3BkID4+IDIwKSAmIDB4MUZGOwo+ICAJCXdtWzRdID0gKHNza3BkID4+IDMyKSAm IDB4MUZGOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiArCX0g ZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpIHsKPiAgCQl1aW50MzJfdCBzc2twZCA9 IEk5MTVfUkVBRChNQ0hfU1NLUEQpOwo+ICAKPiAgCQl3bVswXSA9IChzc2twZCA+PiBTU0tQRF9X TTBfU0hJRlQpICYgU1NLUERfV01fTUFTSzsKPiAgCQl3bVsxXSA9IChzc2twZCA+PiBTU0tQRF9X TTFfU0hJRlQpICYgU1NLUERfV01fTUFTSzsKPiAgCQl3bVsyXSA9IChzc2twZCA+PiBTU0tQRF9X TTJfU0hJRlQpICYgU1NLUERfV01fTUFTSzsKPiAgCQl3bVszXSA9IChzc2twZCA+PiBTU0tQRF9X TTNfU0hJRlQpICYgU1NLUERfV01fTUFTSzsKPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA1KSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDUpKSB7Cj4g IAkJdWludDMyX3QgbWx0ciA9IEk5MTVfUkVBRChNTFRSX0lMSyk7Cj4gIAo+ICAJCS8qIElMSyBw cmltYXJ5IExQMCBsYXRlbmN5IGlzIDcwMCBucyAqLwo+IEBAIC0yOTI1LDExICsyOTI1LDExIEBA IHN0YXRpYyB2b2lkIGludGVsX2ZpeHVwX2N1cl93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgaW50IGlsa193bV9tYXhfbGV2ZWwoY29uc3Qgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAkvKiBob3cgbWFueSBXTSBsZXZlbHMg YXJlIHdlIGV4cGVjdGluZyAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiAr CWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPiAgCQlyZXR1cm4gNzsKPiAgCWVsc2UgaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJcmV0 dXJuIDQ7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gKwllbHNlIGlm IChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkKPiAgCQlyZXR1cm4gMzsKPiAgCWVsc2UKPiAgCQly ZXR1cm4gMjsKPiBAQCAtMjk1NCw3ICsyOTU0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJpbnRf d21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJICogLSBs YXRlbmNpZXMgYXJlIGluIHVzIG9uIGdlbjkuCj4gIAkJICogLSBiZWZvcmUgdGhlbiwgV00xKyBs YXRlbmN5IHZhbHVlcyBhcmUgaW4gMC41dXMgdW5pdHMKPiAgCQkgKi8KPiAtCQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KQo+ICsJCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkKPiAg CQkJbGF0ZW5jeSAqPSAxMDsKPiAgCQllbHNlIGlmIChsZXZlbCA+IDApCj4gIAkJCWxhdGVuY3kg Kj0gNTsKPiBAQCAtMzA5MCw3ICszMDkwLDcgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBl X3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gIAl1c2FibGVfbGV2ZWwgPSBt YXhfbGV2ZWw7Cj4gIAo+ICAJLyogSUxLL1NOQjogTFAyKyB3YXRlcm1hcmtzIG9ubHkgdy9vIHNw cml0ZXMgKi8KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDYgJiYgcGlwZV93bS0+c3By aXRlc19lbmFibGVkKQo+ICsJaWYgKElTX0dFTl9MVEUoZGV2X3ByaXYsIDYpICYmIHBpcGVfd20t PnNwcml0ZXNfZW5hYmxlZCkKPiAgCQl1c2FibGVfbGV2ZWwgPSAxOwo+ICAKPiAgCS8qIElMSy9T TkIvSVZCOiBMUDErIHdhdGVybWFya3Mgb25seSB3L28gc2NhbGluZyAqLwo+IEBAIC0zMjM1LDEy ICszMjM1LDEyIEBAIHN0YXRpYyB2b2lkIGlsa193bV9tZXJnZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICAJaW50IGxhc3RfZW5hYmxlZF9sZXZlbCA9IG1heF9sZXZlbDsKPiAgCj4gIAkvKiBJ TEsvU05CL0lWQjogTFAxKyB3YXRlcm1hcmtzIG9ubHkgdy8gc2luZ2xlIHBpcGUgKi8KPiAtCWlm ICgoSU5URUxfR0VOKGRldl9wcml2KSA8PSA2IHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpICYm Cj4gKwlpZiAoKElTX0dFTl9MVEUoZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJp dikpICYmCj4gIAkgICAgY29uZmlnLT5udW1fcGlwZXNfYWN0aXZlID4gMSkKPiAgCQlsYXN0X2Vu YWJsZWRfbGV2ZWwgPSAwOwo+ICAKPiAgCS8qIElMSzogRkJDIFdNIG11c3QgYmUgZGlzYWJsZWQg YWx3YXlzICovCj4gLQltZXJnZWQtPmZiY193bV9lbmFibGVkID0gSU5URUxfR0VOKGRldl9wcml2 KSA+PSA2Owo+ICsJbWVyZ2VkLT5mYmNfd21fZW5hYmxlZCA9IElTX0dFTl9HVEUoZGV2X3ByaXYs IDYpOwo+ICAKPiAgCS8qIG1lcmdlIGVhY2ggV00xKyBsZXZlbCAqLwo+ICAJZm9yIChsZXZlbCA9 IDE7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IEBAIC0zMzMwLDcgKzMzMzAsNyBA QCBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9yZXN1bHRzKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAkJaWYgKHItPmVuYWJsZSkKPiAgCQkJcmVzdWx0cy0+d21fbHBbd21fbHAgLSAxXSB8 PSBXTTFfTFBfU1JfRU47Cj4gIAo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4g KwkJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDgpKQo+ICAJCQlyZXN1bHRzLT53bV9scFt3bV9s cCAtIDFdIHw9Cj4gIAkJCQlyLT5mYmNfdmFsIDw8IFdNMV9MUF9GQkNfU0hJRlRfQkRXOwo+ICAJ CWVsc2UKPiBAQCAtMzM0MSw3ICszMzQxLDcgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21f cmVzdWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCSAqIEFsd2F5cyBzZXQgV00xU19M UF9FTiB3aGVuIHNwcl92YWwgIT0gMCwgZXZlbiBpZiB0aGUKPiAgCQkgKiBsZXZlbCBpcyBkaXNh YmxlZC4gRG9pbmcgb3RoZXJ3aXNlIGNvdWxkIGNhdXNlIHVuZGVycnVucy4KPiAgCQkgKi8KPiAt CQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA2ICYmIHItPnNwcl92YWwpIHsKPiArCQlpZiAo SVNfR0VOX0xURShkZXZfcHJpdiwgNikgJiYgci0+c3ByX3ZhbCkgewo+ICAJCQlXQVJOX09OKHdt X2xwICE9IDEpOwo+ICAJCQlyZXN1bHRzLT53bV9scF9zcHJbd21fbHAgLSAxXSA9IFdNMVNfTFBf RU4gfCByLT5zcHJfdmFsOwo+ICAJCX0gZWxzZQo+IEBAIC0zNTQ2LDcgKzM1NDYsNyBAQCBzdGF0 aWMgdm9pZCBpbGtfd3JpdGVfd21fdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCSAgICBwcmV2aW91cy0+d21fbHBfc3ByWzBdICE9IHJlc3VsdHMtPndtX2xwX3Nw clswXSkKPiAgCQlJOTE1X1dSSVRFKFdNMVNfTFBfSUxLLCByZXN1bHRzLT53bV9scF9zcHJbMF0p Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKPiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA3KSkgewo+ICAJCWlmIChkaXJ0eSAmIFdNX0RJUlRZX0xQKDIpICYmIHBy ZXZpb3VzLT53bV9scF9zcHJbMV0gIT0gcmVzdWx0cy0+d21fbHBfc3ByWzFdKQo+ICAJCQlJOTE1 X1dSSVRFKFdNMlNfTFBfSVZCLCByZXN1bHRzLT53bV9scF9zcHJbMV0pOwo+ICAJCWlmIChkaXJ0 eSAmIFdNX0RJUlRZX0xQKDMpICYmIHByZXZpb3VzLT53bV9scF9zcHJbMl0gIT0gcmVzdWx0cy0+ d21fbHBfc3ByWzJdKQo+IEBAIC0zNzg1LDcgKzM3ODUsNyBAQCBza2xfZGRiX2dldF9waXBlX2Fs bG9jYXRpb25fbGltaXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlkZGJfc2l6ZSA9IElO VEVMX0lORk8oZGV2X3ByaXYpLT5kZGJfc2l6ZTsKPiAgCVdBUk5fT04oZGRiX3NpemUgPT0gMCk7 Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKPiArCWlmIChJU19HRU5fTFQo ZGV2X3ByaXYsIDExKSkKPiAgCQlkZGJfc2l6ZSAtPSA0OyAvKiA0IGJsb2NrcyBmb3IgYnlwYXNz IHBhdGggYWxsb2NhdGlvbiAqLwo+ICAKPiAgCS8qCj4gQEAgLTM5OTYsNyArMzk5Niw3IEBAIGlu dCBza2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YywKPiAgCWNydGNfY2xvY2sgPSBjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlLmNydGNfY2xv Y2s7Cj4gIAlkb3RjbGsgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5jZGNsay5sb2dp Y2FsLmNkY2xrOwo+ICAKPiAtCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJTlRFTF9H RU4oZGV2X3ByaXYpID49IDEwKQo+ICsJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElT X0dFTl9HVEUoZGV2X3ByaXYsIDEwKSkKPiAgCQlkb3RjbGsgKj0gMjsKPiAgCj4gIAlwaXBlX21h eF9waXhlbF9yYXRlID0gZGl2X3JvdW5kX3VwX3UzMl9maXhlZDE2KGRvdGNsaywgcGlwZV9kb3du c2NhbGUpOwo+IEBAIC00MzMwLDcgKzQzMzAsNyBAQCBza2xfd21fbWV0aG9kMShjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IHBpeGVsX3JhdGUsCj4gIAl3 bV9pbnRlcm1lZGlhdGVfdmFsID0gbGF0ZW5jeSAqIHBpeGVsX3JhdGUgKiBjcHA7Cj4gIAlyZXQg PSBkaXZfZml4ZWQxNih3bV9pbnRlcm1lZGlhdGVfdmFsLCAxMDAwICogZGJ1Zl9ibG9ja19zaXpl KTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCAxMCkpCj4gIAkJcmV0ID0gYWRkX2ZpeGVkMTZfdTMyKHJldCwgMSk7Cj4g IAo+ICAJcmV0dXJuIHJldDsKPiBAQCAtNDQzOCw3ICs0NDM4LDcgQEAgc2tsX2NvbXB1dGVfcGxh bmVfd21fcGFyYW1zKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CXdwLT5wbGFuZV9waXhlbF9yYXRlID0gc2tsX2FkanVzdGVkX3BsYW5lX3BpeGVsX3JhdGUoY3N0 YXRlLAo+ICAJCQkJCQkJICAgICBpbnRlbF9wc3RhdGUpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDExICYmCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgMTEpICYmCj4g IAkgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCAmJiB3cC0+Y3Bw ID09IDgpCj4gIAkJd3AtPmRidWZfYmxvY2tfc2l6ZSA9IDI1NjsKPiAgCWVsc2UKPiBAQCAtNDQ3 Myw3ICs0NDczLDcgQEAgc2tsX2NvbXB1dGVfcGxhbmVfd21fcGFyYW1zKGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCQkgICB3cC0+eV9taW5fc2NhbmxpbmVz LAo+ICAJCQkJCSAgIHdwLT5kYnVmX2Jsb2NrX3NpemUpOwo+ICAKPiAtCQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMCkKPiArCQlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgMTApKQo+ICAJ CQlpbnRlcm1fcGJwbCsrOwo+ICAKPiAgCQl3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lID0gZGl2 X2ZpeGVkMTYoaW50ZXJtX3BicGwsCj4gQEAgLTQ1NzMsNyArNDU3Myw3IEBAIHN0YXRpYyBpbnQg c2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJCX0KPiAgCX0KPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkg ewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDExKSkgewo+ICAJCWlmICh3cC0+eV90aWxl ZCkgewo+ICAJCQl1aW50MzJfdCBleHRyYV9saW5lczsKPiAgCQkJdWludF9maXhlZF8xNl8xNl90 IGZwX21pbl9kaXNwX2J1Zl9uZWVkZWQ7Cj4gQEAgLTQ3MDUsMTQgKzQ3MDUsMTQgQEAgc3RhdGlj IHZvaWQgc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlLAo+ICAJCWdvdG8gZXhpdDsKPiAgCj4gIAkvKiBUcmFuc2l0aW9uIFdNIGFyZSBub3Qg cmVjb21tZW5kZWQgYnkgSFcgdGVhbSBmb3IgR0VOOSAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPD0gOSkKPiArCWlmIChJU19HRU5fTFRFKGRldl9wcml2LCA5KSkKPiAgCQlnb3RvIGV4 aXQ7Cj4gIAo+ICAJLyogVHJhbnNpdGlvbiBXTSBkb24ndCBtYWtlIGFueSBzZW5zZSBpZiBpcGMg aXMgZGlzYWJsZWQgKi8KPiAgCWlmICghZGV2X3ByaXYtPmlwY19lbmFibGVkKQo+ICAJCWdvdG8g ZXhpdDsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiArCWlmIChJU19H RU5fR1RFKGRldl9wcml2LCAxMCkpCj4gIAkJdHJhbnNfbWluID0gNDsKPiAgCj4gIAl0cmFuc19v ZmZzZXRfYiA9IHRyYW5zX21pbiArIHRyYW5zX2Ftb3VudDsKPiBAQCAtNDgzNSw3ICs0ODM1LDcg QEAgc3RhdGljIHZvaWQgc2tsX3dyaXRlX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjLAo+ICAKPiAgCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIFBMQU5FX0JVRl9D RkcocGlwZSwgcGxhbmVfaWQpLAo+ICAJCQkgICAgJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRd KTsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4gKwlpZiAoSVNfR0VOX0xUKGRl dl9wcml2LCAxMSkpCj4gIAkJc2tsX2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwKPiAgCQkJCSAg ICBQTEFORV9OVjEyX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAo+ICAJCQkJICAgICZkZGItPnlf cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKPiBAQCAtNTI0OSw3ICs1MjQ5LDcgQEAgc3RhdGljIHZv aWQgaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAlpbGtfd21fbWVyZ2UoZGV2LCAmY29uZmlnLCAmbWF4LCAmbHBfd21fMV8yKTsKPiAg Cj4gIAkvKiA1LzYgc3BsaXQgb25seSBpbiBzaW5nbGUgcGlwZSBjb25maWcgb24gSVZCKyAqLwo+ IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNyAmJgo+ICsJaWYgKElTX0dFTl9HVEUoZGV2 X3ByaXYsIDcpICYmCj4gIAkgICAgY29uZmlnLm51bV9waXBlc19hY3RpdmUgPT0gMSAmJiBjb25m aWcuc3ByaXRlc19lbmFibGVkKSB7Cj4gIAkJaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2LCAx LCAmY29uZmlnLCBJTlRFTF9EREJfUEFSVF81XzYsICZtYXgpOwo+ICAJCWlsa193bV9tZXJnZShk ZXYsICZjb25maWcsICZtYXgsICZscF93bV81XzYpOwo+IEBAIC01ODQ4LDcgKzU4NDgsNyBAQCB2 b2lkIGlsa193bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWh3LT53 bV9scFsyXSA9IEk5MTVfUkVBRChXTTNfTFBfSUxLKTsKPiAgCj4gIAlody0+d21fbHBfc3ByWzBd ID0gSTkxNV9SRUFEKFdNMVNfTFBfSUxLKTsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDcpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA3KSkgewo+ICAJCWh3LT53bV9scF9z cHJbMV0gPSBJOTE1X1JFQUQoV00yU19MUF9JVkIpOwo+ICAJCWh3LT53bV9scF9zcHJbMl0gPSBJ OTE1X1JFQUQoV00zU19MUF9JVkIpOwo+ICAJfQo+IEBAIC02MDc2LDcgKzYwNzYsNyBAQCBzdGF0 aWMgdTMyIGludGVsX3Jwc19saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1OCB2YWwpCj4gIAkgKiB0aGUgaHcgcnVucyBhdCB0aGUgbWluaW1hbCBjbG9jayBiZWZvcmUg c2VsZWN0aW5nIHRoZSBkZXNpcmVkCj4gIAkgKiBmcmVxdWVuY3ksIGlmIHRoZSBkb3duIHRocmVz aG9sZCBleHBpcmVzIGluIHRoYXQgd2luZG93IHdlIHdpbGwgbm90Cj4gIAkgKiByZWNlaXZlIGEg ZG93biBpbnRlcnJ1cHQuICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4g KwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpIHsKPiAgCQlsaW1pdHMgPSAocnBzLT5tYXhf ZnJlcV9zb2Z0bGltaXQpIDw8IDIzOwo+ICAJCWlmICh2YWwgPD0gcnBzLT5taW5fZnJlcV9zb2Z0 bGltaXQpCj4gIAkJCWxpbWl0cyB8PSAocnBzLT5taW5fZnJlcV9zb2Z0bGltaXQpIDw8IDE0Owo+ IEBAIC02MjIyLDcgKzYyMjIsNyBAQCBzdGF0aWMgaW50IGdlbjZfc2V0X3JwcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkKPiAgCWlmICh2YWwgIT0gcnBzLT5jdXJf ZnJlcSkgewo+ICAJCWdlbjZfc2V0X3Jwc190aHJlc2hvbGRzKGRldl9wcml2LCB2YWwpOwo+ICAK PiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA5KSkKPiAgCQkJSTkxNV9XUklURShHRU42X1JQTlNXUkVRLAo+ICAJCQkJICAgR0VO OV9GUkVRVUVOQ1kodmFsKSk7Cj4gIAkJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwg SVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiBAQCAtNjY1MCw3ICs2NjUwLDcgQEAgc3RhdGljIHZv aWQgZ2VuOV9lbmFibGVfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CUk5MTVfV1JJVEUoR0VONl9SQ19DT05UUk9MLCAwKTsKPiAgCj4gIAkvKiAyYjogUHJvZ3JhbSBS QzYgdGhyZXNob2xkcy4qLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsKPiAr CWlmIChJU19HRU5fR1RFKGRldl9wcml2LCAxMCkpIHsKPiAgCQlJOTE1X1dSSVRFKEdFTjZfUkM2 X1dBS0VfUkFURV9MSU1JVCwgNTQgPDwgMTYgfCA4NSk7Cj4gIAkJSTkxNV9XUklURShHRU4xMF9N RURJQV9XQUtFX1JBVEVfTElNSVQsIDE1MCk7Cj4gIAl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2 X3ByaXYpKSB7Cj4gQEAgLTY5NDAsNyArNjk0MCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfdXBkYXRl X3JpbmdfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCSAqIE5v IGZsb29yIHJlcXVpcmVkIGZvciByaW5nIGZyZXF1ZW5jeSBvbiBTS0wuCj4gIAkJCSAqLwo+ICAJ CQlyaW5nX2ZyZXEgPSBncHVfZnJlcTsKPiAtCQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOCkgewo+ICsJCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOCkpIHsKPiAg CQkJLyogbWF4KDIgKiBHVCwgRERSKS4gTkI6IEdUIGlzIDUwTUh6IHVuaXRzICovCj4gIAkJCXJp bmdfZnJlcSA9IG1heChtaW5fcmluZ19mcmVxLCBncHVfZnJlcSk7Cj4gIAkJfSBlbHNlIGlmIChJ U19IQVNXRUxMKGRldl9wcml2KSkgewo+IEBAIC03OTU3LDcgKzc5NTcsNyBAQCB2b2lkIGludGVs X2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CQljaGVycnl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsKPiAgCWVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXZhbGxleXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUo ZGV2X3ByaXYpOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+ICsJZWxz ZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4gIAkJZ2VuNl9pbml0X3Jwc19mcmVxdWVu Y2llcyhkZXZfcHJpdik7Cj4gIAo+ICAJLyogRGVyaXZlIGluaXRpYWwgdXNlciBwcmVmZXJlbmNl cy9saW1pdHMgZnJvbSB0aGUgaGFyZHdhcmUgbGltaXRzICovCj4gQEAgLTgwMTIsNyArODAxMiw3 IEBAIHZvaWQgaW50ZWxfY2xlYW51cF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAgKi8KPiAgdm9pZCBpbnRlbF9zdXNwZW5kX2d0X3Bvd2Vyc2F2ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgNikKPiArCWlmIChJU19HRU5fTFQoZGV2X3ByaXYsIDYpKQo+ICAJCXJldHVy bjsKPiAgCj4gIAkvKiBnZW42X3Jwc19pZGxlKCkgd2lsbCBiZSBjYWxsZWQgbGF0ZXIgdG8gZGlz YWJsZSBpbnRlcnJ1cHRzICovCj4gQEAgLTgwNDYsMTMgKzgwNDYsMTMgQEAgc3RhdGljIHZvaWQg aW50ZWxfZGlzYWJsZV9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ aWYgKCFkZXZfcHJpdi0+Z3RfcG0ucmM2LmVuYWJsZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwg OSkpCj4gIAkJZ2VuOV9kaXNhYmxlX3JjNihkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19DSEVS UllWSUVXKGRldl9wcml2KSkKPiAgCQljaGVycnl2aWV3X2Rpc2FibGVfcmM2KGRldl9wcml2KTsK PiAgCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXZhbGxleXZpZXdfZGlz YWJsZV9yYzYoZGV2X3ByaXYpOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2 KQo+ICsJZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4gIAkJZ2VuNl9kaXNhYmxl X3JjNihkZXZfcHJpdik7Cj4gIAo+ICAJZGV2X3ByaXYtPmd0X3BtLnJjNi5lbmFibGVkID0gZmFs c2U7Cj4gQEAgLTgwNjUsMTMgKzgwNjUsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9y cHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKCFkZXZfcHJpdi0+ Z3RfcG0ucnBzLmVuYWJsZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJZ2VuOV9k aXNhYmxlX3JwcyhkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2 KSkKPiAgCQljaGVycnl2aWV3X2Rpc2FibGVfcnBzKGRldl9wcml2KTsKPiAgCWVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXZhbGxleXZpZXdfZGlzYWJsZV9ycHMoZGV2X3By aXYpOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+ICsJZWxzZSBpZiAo SVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4gIAkJZ2VuNl9kaXNhYmxlX3JwcyhkZXZfcHJpdik7 Cj4gIAllbHNlIGlmIChJU19JUk9OTEFLRV9NKGRldl9wcml2KSkKPiAgCQlpcm9ubGFrZV9kaXNh YmxlX2RycHMoZGV2X3ByaXYpOwo+IEBAIC04MTE0LDExICs4MTE0LDExIEBAIHN0YXRpYyB2b2lk IGludGVsX2VuYWJsZV9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ CWNoZXJyeXZpZXdfZW5hYmxlX3JjNihkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSkKPiAgCQl2YWxsZXl2aWV3X2VuYWJsZV9yYzYoZGV2X3ByaXYpOwo+IC0J ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJZWxzZSBpZiAoSVNfR0VOX0dU RShkZXZfcHJpdiwgOSkpCj4gIAkJZ2VuOV9lbmFibGVfcmM2KGRldl9wcml2KTsKPiAgCWVsc2Ug aWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJZ2VuOF9lbmFibGVfcmM2KGRldl9wcml2 KTsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPiArCWVsc2UgaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDYpKQo+ICAJCWdlbjZfZW5hYmxlX3JjNihkZXZfcHJpdik7Cj4g IAo+ICAJZGV2X3ByaXYtPmd0X3BtLnJjNi5lbmFibGVkID0gdHJ1ZTsKPiBAQCAtODEzNywxMSAr ODEzNywxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCQljaGVycnl2aWV3X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwo+ ICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkgewo+ICAJCXZhbGxleXZpZXdf ZW5hYmxlX3JwcyhkZXZfcHJpdik7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+ICAJCWdl bjlfZW5hYmxlX3JwcyhkZXZfcHJpdik7Cj4gIAl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZf cHJpdikpIHsKPiAgCQlnZW44X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwo+IC0JfSBlbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZf cHJpdiwgNikpIHsKPiAgCQlnZW42X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwo+ICAJfSBlbHNlIGlm IChJU19JUk9OTEFLRV9NKGRldl9wcml2KSkgewo+ICAJCWlyb25sYWtlX2VuYWJsZV9kcnBzKGRl dl9wcml2KTsKPiBAQCAtOTA1Niw3ICs5MDU2LDcgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlpOTE1X2lyb25sYWtlX2dldF9tZW1f ZnJlcShkZXZfcHJpdik7Cj4gIAo+ICAJLyogRm9yIEZJRk8gd2F0ZXJtYXJrIHVwZGF0ZXMgKi8K PiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiArCWlmIChJU19HRU5fR1RFKGRl dl9wcml2LCA5KSkgewo+ICAJCXNrbF9zZXR1cF93bV9sYXRlbmN5KGRldl9wcml2KTsKPiAgCQlk ZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MgPSBza2xfaW5pdGlhbF93bTsKPiAg CQlkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNfdXBkYXRlX3dhdGVybWFya3MgPSBza2xfYXRvbWlj X3VwZGF0ZV9jcnRjX3dtOwo+IEBAIC05MjAyLDcgKzkyMDIsNyBAQCBpbnQgc2FuZHlicmlkZ2Vf cGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1 MzIgKnZhbAo+ICAJKnZhbCA9IEk5MTVfUkVBRF9GVyhHRU42X1BDT0RFX0RBVEEpOwo+ICAJSTkx NV9XUklURV9GVyhHRU42X1BDT0RFX0RBVEEsIDApOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID4gNikKPiArCWlmIChJU19HRU5fR1QoZGV2X3ByaXYsIDYpKQo+ICAJCXN0YXR1cyA9 IGdlbjdfY2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYpOwo+ICAJZWxzZQo+ICAJCXN0YXR1 cyA9IGdlbjZfY2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYpOwo+IEBAIC05MjUwLDcgKzky NTAsNyBAQCBpbnQgc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGVfdGltZW91dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJSTkxNV9XUklURV9GVyhHRU42X1BDT0RFX0RB VEEsIDApOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNikKPiArCWlmIChJU19H RU5fR1QoZGV2X3ByaXYsIDYpKQo+ICAJCXN0YXR1cyA9IGdlbjdfY2hlY2tfbWFpbGJveF9zdGF0 dXMoZGV2X3ByaXYpOwo+ICAJZWxzZQo+ICAJCXN0YXR1cyA9IGdlbjZfY2hlY2tfbWFpbGJveF9z dGF0dXMoZGV2X3ByaXYpOwo+IEBAIC05Mzc5LDcgKzkzNzksNyBAQCBzdGF0aWMgaW50IGNodl9m cmVxX29wY29kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpCj4g IAo+ICBpbnQgaW50ZWxfZ3B1X2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgdmFsKQo+ICB7Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKQo+ICAJCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCh2 YWwgKiBHVF9GUkVRVUVOQ1lfTVVMVElQTElFUiwKPiAgCQkJCQkgR0VOOV9GUkVRX1NDQUxFUik7 Cj4gIAllbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiBAQCAtOTM5Miw3ICs5Mzky LDcgQEAgaW50IGludGVsX2dwdV9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgaW50IHZhbCkKPiAgCj4gIGludCBpbnRlbF9mcmVxX29wY29kZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpCj4gIHsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJcmV0dXJuIERJ Vl9ST1VORF9DTE9TRVNUKHZhbCAqIEdFTjlfRlJFUV9TQ0FMRVIsCj4gIAkJCQkJIEdUX0ZSRVFV RU5DWV9NVUxUSVBMSUVSKTsKPiAgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ IEBAIC05NTM3LDcgKzk1MzcsNyBAQCB1MzIgaW50ZWxfZ2V0X2NhZ2Yoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcnBzdGF0KQo+ICB7Cj4gIAl1MzIgY2FnZjsKPiAgCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3By aXYsIDkpKQo+ICAJCWNhZ2YgPSAocnBzdGF0ICYgR0VOOV9DQUdGX01BU0spID4+IEdFTjlfQ0FH Rl9TSElGVDsKPiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VM TChkZXZfcHJpdikpCj4gIAkJY2FnZiA9IChycHN0YXQgJiBIU1dfQ0FHRl9NQVNLKSA+PiBIU1df Q0FHRl9TSElGVDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+IGluZGV4IDJlZjM3NGY5MzZi OS4uMTE2Y2NlMTk0YWM5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Bzci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBAQCAtMTI2 LDcgKzEyNiw3IEBAIHN0YXRpYyB2b2lkIHZsdl9wc3JfZW5hYmxlX3Npbmsoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiAgc3RhdGljIGk5MTVfcmVnX3QgcHNyX2F1eF9jdGxfcmVnKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgICAgICBlbnVtIHBvcnQgcG9y dCkKPiAgewo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA5KSkKPiAgCQlyZXR1cm4gRFBfQVVYX0NIX0NUTChwb3J0KTsKPiAgCWVs c2UKPiAgCQlyZXR1cm4gRURQX1BTUl9BVVhfQ1RMOwo+IEBAIC0xMzUsNyArMTM1LDcgQEAgc3Rh dGljIGk5MTVfcmVnX3QgcHNyX2F1eF9jdGxfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgc3RhdGljIGk5MTVfcmVnX3QgcHNyX2F1eF9kYXRhX3JlZyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkJZW51bSBwb3J0IHBvcnQsIGludCBpbmRl eCkKPiAgewo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCA5KSkKPiAgCQlyZXR1cm4gRFBfQVVYX0NIX0RBVEEocG9ydCwgaW5kZXgp Owo+ICAJZWxzZQo+ICAJCXJldHVybiBFRFBfUFNSX0FVWF9EQVRBKGluZGV4KTsKPiBAQCAtNTIx LDcgKzUyMSw3IEBAIHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAo+ICAJZGV2X3ByaXYtPnBzci5lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRl KTsKPiAgCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGludGVsX2RwOwo+ICAKPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkg ewo+ICAJCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7Cj4gIAl9IGVsc2Ugewo+ICAJCS8q Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGM5MWQ3MTA2 ZmJjZi4uMmM0YWQ4OWQ5ZDU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYwo+IEBAIC0zNDYsNyArMzQ2LDcgQEAgc3RhdGljIHZvaWQgcmluZ19zZXR1cF9waHlz X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCXUzMiBhZGRy Owo+ICAKPiAgCWFkZHIgPSBkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haC0+YnVzYWRkcjsKPiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJp diwgNCkpCj4gIAkJYWRkciB8PSAoZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgtPmJ1c2FkZHIg Pj4gMjgpICYgMHhmMDsKPiAgCUk5MTVfV1JJVEUoSFdTX1BHQSwgYWRkcik7Cj4gIH0KPiBAQCAt Mzg2LDcgKzM4Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJCW1taW8gPSBSSU5HX0hXU19QR0Eo ZW5naW5lLT5tbWlvX2Jhc2UpOwo+ICAJfQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDYpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4gIAkJSTkxNV9XUklURShS SU5HX0hXU1RBTShlbmdpbmUtPm1taW9fYmFzZSksIDB4ZmZmZmZmZmYpOwo+ICAKPiAgCUk5MTVf V1JJVEUobW1pbywgZW5naW5lLT5zdGF0dXNfcGFnZS5nZ3R0X29mZnNldCk7Cj4gQEAgLTQxNCw3 ICs0MTQsNyBAQCBzdGF0aWMgYm9vbCBzdG9wX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdp bmUtPmk5MTU7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiAyKSB7Cj4gKwlpZiAo SVNfR0VOX0dUKGRldl9wcml2LCAyKSkgewo+ICAJCUk5MTVfV1JJVEVfTU9ERShlbmdpbmUsIF9N QVNLRURfQklUX0VOQUJMRShTVE9QX1JJTkcpKTsKPiAgCQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXIoZGV2X3ByaXYsCj4gIAkJCQkJICAgIFJJTkdfTUlfTU9ERShlbmdpbmUtPm1taW9fYmFz ZSksCj4gQEAgLTUyMSw3ICs1MjEsNyBAQCBzdGF0aWMgaW50IGluaXRfcmluZ19jb21tb24oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAKPiAgCWludGVsX2VuZ2luZV9pbml0X2hh bmdjaGVjayhlbmdpbmUpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMikKPiAr CWlmIChJU19HRU5fR1QoZGV2X3ByaXYsIDIpKQo+ICAJCUk5MTVfV1JJVEVfTU9ERShlbmdpbmUs IF9NQVNLRURfQklUX0RJU0FCTEUoU1RPUF9SSU5HKSk7Cj4gIAo+ICBvdXQ6Cj4gQEAgLTY1NSw3 ICs2NTUsNyBAQCBzdGF0aWMgaW50IGluaXRfcmVuZGVyX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAJaWYgKElTX0dFTihkZXZfcHJpdiwgNiwgNykpCj4gIAkJSTkxNV9X UklURShJTlNUUE0sIF9NQVNLRURfQklUX0VOQUJMRShJTlNUUE1fRk9SQ0VfT1JERVJJTkcpKTsK PiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+ICsJaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDYpKQo+ICAJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfmVuZ2luZS0+aXJxX2tl ZXBfbWFzayk7Cj4gIAo+ICAJcmV0dXJuIGluaXRfd29ya2Fyb3VuZHNfcmluZyhlbmdpbmUpOwo+ IEBAIC0xMzYwLDcgKzEzNjAsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAKPiAtCVdBUk5fT04oSU5URUxfR0VOKGRldl9w cml2KSA+IDIgJiYKPiArCVdBUk5fT04oSVNfR0VOX0dUKGRldl9wcml2LCAyKSAmJgo+ICAJCShJ OTE1X1JFQURfTU9ERShlbmdpbmUpICYgTU9ERV9JRExFKSA9PSAwKTsKPiAgCj4gIAlpbnRlbF9y aW5nX3VucGluKGVuZ2luZS0+YnVmZmVyKTsKPiBAQCAtMTkwMCw3ICsxOTAwLDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcmluZ19pbml0X3NlbWFwaG9yZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAJaWYgKCFIQVNfTEVHQUNZX1NFTUFQSE9SRVMoZGV2X3ByaXYpKQo+ICAJ CXJldHVybjsKPiAgCj4gLQlHRU1fQlVHX09OKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KTsKPiAr CUdFTV9CVUdfT04oSVNfR0VOX0xUKGRldl9wcml2LCA2KSk7Cj4gIAllbmdpbmUtPnNlbWFwaG9y ZS5zeW5jX3RvID0gZ2VuNl9yaW5nX3N5bmNfdG87Cj4gIAllbmdpbmUtPnNlbWFwaG9yZS5zaWdu YWwgPSBnZW42X3NpZ25hbDsKPiAgCj4gQEAgLTE5NTcsMTUgKzE5NTcsMTUgQEAgc3RhdGljIHZv aWQgaW50ZWxfcmluZ19pbml0X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIHsKPiAgCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gR1RfUkVOREVSX1VTRVJfSU5URVJS VVBUIDw8IGVuZ2luZS0+aXJxX3NoaWZ0Owo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDYpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+ICAJCWVuZ2luZS0+ aXJxX2VuYWJsZSA9IGdlbjZfaXJxX2VuYWJsZTsKPiAgCQllbmdpbmUtPmlycV9kaXNhYmxlID0g Z2VuNl9pcnFfZGlzYWJsZTsKPiAgCQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyID0gZ2VuNl9z ZXFub19iYXJyaWVyOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsK PiArCX0gZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNSkpIHsKPiAgCQllbmdpbmUtPmly cV9lbmFibGUgPSBnZW41X2lycV9lbmFibGU7Cj4gIAkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdl bjVfaXJxX2Rpc2FibGU7Cj4gIAkJZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllciA9IGdlbjVfc2Vx bm9fYmFycmllcjsKPiAtCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAzKSB7Cj4g Kwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDMpKSB7Cj4gIAkJZW5naW5lLT5pcnFf ZW5hYmxlID0gaTl4eF9pcnFfZW5hYmxlOwo+ICAJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBpOXh4 X2lycV9kaXNhYmxlOwo+ICAJfSBlbHNlIHsKPiBAQCAtMTk5Myw3ICsxOTkzLDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g IHsKPiAgCS8qIGdlbjgrIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIGV4ZWNsaXN0cyAqLwo+IC0J R0VNX0JVR19PTihJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpOwo+ICsJR0VNX0JVR19PTihJU19H RU5fR1RFKGRldl9wcml2LCA4KSk7Cj4gIAo+ICAJaW50ZWxfcmluZ19pbml0X2lycShkZXZfcHJp diwgZW5naW5lKTsKPiAgCWludGVsX3JpbmdfaW5pdF9zZW1hcGhvcmVzKGRldl9wcml2LCBlbmdp bmUpOwo+IEBAIC0yMDIxLDkgKzIwMjEsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX2RlZmF1 bHRfdmZ1bmNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAllbmdp bmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Npb24gPSBpOXh4X3NldF9kZWZhdWx0X3N1Ym1pc3Npb247 Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCA2KSkKPiAgCQllbmdpbmUtPmVtaXRfYmJfc3RhcnQgPSBnZW42X2VtaXRfYmJf c3RhcnQ7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gKwllbHNlIGlm IChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkKPiAgCQllbmdpbmUtPmVtaXRfYmJfc3RhcnQgPSBp OTY1X2VtaXRfYmJfc3RhcnQ7Cj4gIAllbHNlIGlmIChJU19JODMwKGRldl9wcml2KSB8fCBJU19J ODQ1RyhkZXZfcHJpdikpCj4gIAkJZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0gaTgzMF9lbWl0X2Ji X3N0YXJ0Owo+IEBAIC0yMDQxLDcgKzIwNDEsNyBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmlu Z19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJaWYgKEhBU19MM19E UEYoZGV2X3ByaXYpKQo+ICAJCWVuZ2luZS0+aXJxX2tlZXBfbWFzayA9IEdUX1JFTkRFUl9MM19Q QVJJVFlfRVJST1JfSU5URVJSVVBUOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDYpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+ICAJCWVuZ2luZS0+aW5p dF9jb250ZXh0ID0gaW50ZWxfcmNzX2N0eF9pbml0Owo+ICAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9 IGdlbjdfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gIAkJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+IEBA IC0yMDQ5LDcgKzIwNDksNyBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJfSBlbHNlIGlmIChJU19HRU41KGRldl9w cml2KSkgewo+ICAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjRfcmVuZGVyX3JpbmdfZmx1c2g7 Cj4gIAl9IGVsc2Ugewo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPiArCQlpZiAo SVNfR0VOX0xUKGRldl9wcml2LCA0KSkKPiAgCQkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMl9y ZW5kZXJfcmluZ19mbHVzaDsKPiAgCQllbHNlCj4gIAkJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdl bjRfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gQEAgLTIwNjUsNyArMjA2NSw3IEBAIGludCBpbnRlbF9p bml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g IAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNikgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDYpKSB7Cj4gIAkJcmV0ID0g aW50ZWxfZW5naW5lX2NyZWF0ZV9zY3JhdGNoKGVuZ2luZSwgUEFHRV9TSVpFKTsKPiAgCQlpZiAo cmV0KQo+ICAJCQlyZXR1cm4gcmV0Owo+IEBAIC0yMDg0LDcgKzIwODQsNyBAQCBpbnQgaW50ZWxf aW5pdF9ic2RfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAK PiAgCWludGVsX3JpbmdfZGVmYXVsdF92ZnVuY3MoZGV2X3ByaXYsIGVuZ2luZSk7Cj4gIAo+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3By aXYsIDYpKSB7Cj4gIAkJLyogZ2VuNiBic2QgbmVlZHMgYSBzcGVjaWFsIHdhIGZvciB0YWlsIHVw ZGF0ZXMgKi8KPiAgCQlpZiAoSVNfR0VONihkZXZfcHJpdikpCj4gIAkJCWVuZ2luZS0+c2V0X2Rl ZmF1bHRfc3VibWlzc2lvbiA9IGdlbjZfYnNkX3NldF9kZWZhdWx0X3N1Ym1pc3Npb247Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+IGluZGV4IDBiZjk3ZWQ1ZmZhYy4uM2RkNWYyYzI0NGQ5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+IEBAIC0xMzM1LDEzICsxMzM1LDEz IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZW5jb2RlciwKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyogU2V0IHRoZSBTRFZPIGNv bnRyb2wgcmVncy4gKi8KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiArCWlm IChJU19HRU5fR1RFKGRldl9wcml2LCA0KSkgewo+ICAJCS8qIFRoZSByZWFsIG1vZGUgcG9sYXJp dHkgaXMgc2V0IGJ5IHRoZSBTRFZPIGNvbW1hbmRzLCB1c2luZwo+ICAJCSAqIHN0cnVjdCBpbnRl bF9zZHZvX2R0ZC4gKi8KPiAgCQlzZHZveCA9IFNEVk9fVlNZTkNfQUNUSVZFX0hJR0ggfCBTRFZP X0hTWU5DX0FDVElWRV9ISUdIOwo+ICAJCWlmICghSEFTX1BDSF9TUExJVChkZXZfcHJpdikgJiYg Y3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiAgCQkJc2R2b3ggfD0gSERNSV9DT0xP Ul9SQU5HRV8xNl8yMzU7Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1KQo+ICsJCWlm IChJU19HRU5fTFQoZGV2X3ByaXYsIDUpKQo+ICAJCQlzZHZveCB8PSBTRFZPX0JPUkRFUl9FTkFC TEU7Cj4gIAl9IGVsc2Ugewo+ICAJCXNkdm94ID0gSTkxNV9SRUFEKGludGVsX3Nkdm8tPnNkdm9f cmVnKTsKPiBAQCAtMTM1OCwxMSArMTM1OCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3By ZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gIAkJc2R2b3gg fD0gU0RWT19QSVBFX1NFTChjcnRjLT5waXBlKTsKPiAgCj4gIAlpZiAoY3J0Y19zdGF0ZS0+aGFz X2F1ZGlvKSB7Cj4gLQkJV0FSTl9PTl9PTkNFKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KTsKPiAr CQlXQVJOX09OX09OQ0UoSVNfR0VOX0xUKGRldl9wcml2LCA0KSk7Cj4gIAkJc2R2b3ggfD0gU0RW T19BVURJT19FTkFCTEU7Cj4gIAl9Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NCkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKSB7Cj4gIAkJLyogZG9uZSBpbiBj cnRjX21vZGVfc2V0IGFzIHRoZSBkcGxsX21kIHJlZyBtdXN0IGJlIHdyaXR0ZW4gZWFybHkgKi8K PiAgCX0gZWxzZSBpZiAoSVNfSTk0NUcoZGV2X3ByaXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikg fHwKPiAgCQkgICBJU19HMzMoZGV2X3ByaXYpIHx8IElTX1BJTkVWSUVXKGRldl9wcml2KSkgewo+ IEBAIC0xMzczLDcgKzEzNzMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9lbmFibGUo c3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gIAl9Cj4gIAo+ICAJaWYgKGlu cHV0X2R0ZC5wYXJ0Mi5zZHZvX2ZsYWdzICYgU0RWT19ORUVEX1RPX1NUQUxMICYmCj4gLQkgICAg SU5URUxfR0VOKGRldl9wcml2KSA8IDUpCj4gKwkgICAgSVNfR0VOX0xUKGRldl9wcml2LCA1KSkK PiAgCQlzZHZveCB8PSBTRFZPX1NUQUxMX1NFTEVDVDsKPiAgCWludGVsX3Nkdm9fd3JpdGVfc2R2 b3goaW50ZWxfc2R2bywgc2R2b3gpOwo+ICB9Cj4gQEAgLTI0MzMsNyArMjQzMyw3IEBAIGludGVs X3Nkdm9fYWRkX2hkbWlfcHJvcGVydGllcyhzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9y LT5iYXNlLmJhc2UuZGV2KTsKPiAgCj4gIAlpbnRlbF9hdHRhY2hfZm9yY2VfYXVkaW9fcHJvcGVy dHkoJmNvbm5lY3Rvci0+YmFzZS5iYXNlKTsKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDQgJiYgSVNfTU9CSUxFKGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYs IDQpICYmIElTX01PQklMRShkZXZfcHJpdikpIHsKPiAgCQlpbnRlbF9hdHRhY2hfYnJvYWRjYXN0 X3JnYl9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLmJhc2UpOwo+ICAJfQo+ICAJaW50ZWxfYXR0 YWNoX2FzcGVjdF9yYXRpb19wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLmJhc2UpOwo+IEBAIC0y NTAyLDcgKzI1MDIsNyBAQCBpbnRlbF9zZHZvX2R2aV9pbml0KHN0cnVjdCBpbnRlbF9zZHZvICpp bnRlbF9zZHZvLCBpbnQgZGV2aWNlKQo+ICAJY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9IERS TV9NT0RFX0NPTk5FQ1RPUl9EVklEOwo+ICAKPiAgCS8qIGdlbjMgZG9lc24ndCBkbyB0aGUgaGRt aSBiaXRzIGluIHRoZSBTRFZPIHJlZ2lzdGVyICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA0ICYmCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNCkgJiYKPiAgCSAgICBpbnRl bF9zZHZvX2lzX2hkbWlfY29ubmVjdG9yKGludGVsX3Nkdm8sIGRldmljZSkpIHsKPiAgCQljb25u ZWN0b3ItPmNvbm5lY3Rvcl90eXBlID0gRFJNX01PREVfQ09OTkVDVE9SX0hETUlBOwo+ICAJCWlu dGVsX3Nkdm8tPmlzX2hkbWkgPSB0cnVlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gaW5kZXggM2JlMjJjMGZjZmI1Li5hMjhjNWY4M2ZhMDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYwo+IEBAIC0yNjMsNyArMjYzLDcgQEAgc2tsX3VwZGF0ZV9wbGFuZShz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAKPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZf cHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiArCWlmIChJU19HRU5fR1RF KGRldl9wcml2LCAxMCkgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJSTkxNV9XUklU RV9GVyhQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxhbmVfaWQpLAo+ICAJCQkgICAgICBwbGFuZV9z dGF0ZS0+Y29sb3JfY3RsKTsKPiAgCWlmIChrZXktPmZsYWdzKSB7Cj4gQEAgLTg2NSw3ICs4NjUs NyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK PiAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5iYXNlLnNyYzsKPiAgCXN0cnVjdCBk cm1fcmVjdCAqZHN0ID0gJnN0YXRlLT5iYXNlLmRzdDsKPiAgCXN0cnVjdCBkcm1fcmVjdCBjbGlw ID0ge307Cj4gLQlpbnQgbWF4X3N0cmlkZSA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSA/IDMy NzY4IDogMTYzODQ7Cj4gKwlpbnQgbWF4X3N0cmlkZSA9IElTX0dFTl9HVEUoZGV2X3ByaXYsIDkp ID8gMzI3NjggOiAxNjM4NDsKPiAgCWludCBoc2NhbGUsIHZzY2FsZTsKPiAgCWludCBtYXhfc2Nh bGUsIG1pbl9zY2FsZTsKPiAgCWJvb2wgY2FuX3NjYWxlOwo+IEBAIC04OTIsNyArODkyLDcgQEAg aW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAl9 Cj4gIAo+ICAJLyogc2V0dXAgY2FuX3NjYWxlLCBtaW5fc2NhbGUsIG1heF9zY2FsZSAqLwo+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3By aXYsIDkpKSB7Cj4gIAkJLyogdXNlIHNjYWxlciB3aGVuIGNvbG9ya2V5IGlzIG5vdCByZXF1aXJl ZCAqLwo+ICAJCWlmICghc3RhdGUtPmNrZXkuZmxhZ3MpIHsKPiAgCQkJY2FuX3NjYWxlID0gMTsK PiBAQCAtMTAxMiw4ICsxMDEyLDggQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUsCj4gIAo+ICAJCXdpZHRoX2J5dGVzID0gKChzcmNfeCAqIGNwcCkg JiA2MykgKyBzcmNfdyAqIGNwcDsKPiAgCj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5 ICYmIChzcmNfdyA+IDIwNDggfHwgc3JjX2ggPiAyMDQ4IHx8Cj4gLQkJICAgIHdpZHRoX2J5dGVz ID4gNDA5NiB8fCBmYi0+cGl0Y2hlc1swXSA+IDQwOTYpKSB7Cj4gKwkJaWYgKElTX0dFTl9MVChk ZXZfcHJpdiwgOSkgJiYgKHNyY193ID4gMjA0OCB8fCBzcmNfaCA+IDIwNDggfHwKPiArCQkJCQkg ICAgICAgd2lkdGhfYnl0ZXMgPiA0MDk2IHx8IGZiLT5waXRjaGVzWzBdID4gNDA5NikpIHsKPiAg CQkJRFJNX0RFQlVHX0tNUygiU291cmNlIGRpbWVuc2lvbnMgZXhjZWVkIGhhcmR3YXJlIGxpbWl0 c1xuIik7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiBAQCAtMTAzMSw3ICsxMDMxLDcg QEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4g IAlkc3QtPnkxID0gY3J0Y195Owo+ICAJZHN0LT55MiA9IGNydGNfeSArIGNydGNfaDsKPiAgCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwlpZiAoSVNfR0VOX0dURShkZXZf cHJpdiwgOSkpIHsKPiAgCQlyZXQgPSBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShjcnRjX3N0YXRl LCBzdGF0ZSk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiBAQCAtMTA0Myw3ICsx MDQzLDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUsCj4gIAkJCXJldHVybiByZXQ7Cj4gIAo+ICAJCXN0YXRlLT5jdGwgPSB2bHZfc3ByaXRlX2N0 bChjcnRjX3N0YXRlLCBzdGF0ZSk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNykgewo+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGRldl9wcml2LCA3KSkgewo+ICAJCXJl dCA9IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdGF0ZSk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJ cmV0dXJuIHJldDsKPiBAQCAtMTA1Nyw3ICsxMDU3LDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJc3RhdGUtPmN0bCA9IGc0eF9zcHJp dGVfY3RsKGNydGNfc3RhdGUsIHN0YXRlKTsKPiAgCX0KPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiArCWlmIChJU19HRU5f R1RFKGRldl9wcml2LCAxMCkgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJc3RhdGUt PmNvbG9yX2N0bCA9IGdsa19wbGFuZV9jb2xvcl9jdGwoY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICAK PiAgCXJldHVybiAwOwo+IEBAIC0xMjkwLDExICsxMjkwLDExIEBAIHN0YXRpYyBib29sIGludGVs X3Nwcml0ZV9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPiAgCSAgICBtb2RpZmllciAhPSBEUk1fRk9STUFUX01PRF9MSU5FQVIpCj4gIAkJcmV0dXJu IGZhbHNlOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKwlpZiAoSVNf R0VOX0dURShkZXZfcHJpdiwgOSkpCj4gIAkJcmV0dXJuIHNrbF9tb2Rfc3VwcG9ydGVkKGZvcm1h dCwgbW9kaWZpZXIpOwo+ICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpCj4gIAkJcmV0dXJuIHZsdl9tb2Rfc3VwcG9ydGVkKGZvcm1h dCwgbW9kaWZpZXIpOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+ICsJ ZWxzZSBpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgNikpCj4gIAkJcmV0dXJuIHNuYl9tb2Rfc3Vw cG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOwo+ICAJZWxzZQo+ICAJCXJldHVybiBnNHhfbW9kX3N1 cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsKPiBAQCAtMTMxNyw3ICsxMzE3LDcgQEAgYm9vbCBz a2xfcGxhbmVfaGFzX2NjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlp ZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2 LCAxMCkpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+ICAJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3By aXYpKQo+IEBAIC0xMzU0LDcgKzEzNTQsNyBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCX0KPiAgCWludGVsX3BsYW5lLT5i YXNlLnN0YXRlID0gJnN0YXRlLT5iYXNlOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpIHsKPiArCWlmIChJU19HRU5fR1RFKGRldl9wcml2LCA5KSkgewo+ICAJCWludGVsX3Bs YW5lLT5jYW5fc2NhbGUgPSB0cnVlOwo+ICAJCXN0YXRlLT5zY2FsZXJfaWQgPSAtMTsKPiAgCj4g QEAgLTEzODAsNyArMTM4MCw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXBsYW5lX2Zvcm1hdHMgPSB2bHZfcGxhbmVf Zm9ybWF0czsKPiAgCQludW1fcGxhbmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUodmx2X3BsYW5lX2Zv cm1hdHMpOwo+ICAJCW1vZGlmaWVycyA9IGk5eHhfcGxhbmVfZm9ybWF0X21vZGlmaWVyczsKPiAt CX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7Cj4gKwl9IGVsc2UgaWYgKElT X0dFTl9HVEUoZGV2X3ByaXYsIDcpKSB7Cj4gIAkJaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikp IHsKPiAgCQkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IHRydWU7Cj4gIAkJCWludGVsX3BsYW5l LT5tYXhfZG93bnNjYWxlID0gMjsKPiBAQCAtMTQxNCw3ICsxNDE0LDcgQEAgaW50ZWxfc3ByaXRl X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJfQo+ ICAJfQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiArCWlmIChJU19H RU5fR1RFKGRldl9wcml2LCA5KSkgewo+ICAJCXN1cHBvcnRlZF9yb3RhdGlvbnMgPQo+ICAJCQlE Uk1fTU9ERV9ST1RBVEVfMCB8IERSTV9NT0RFX1JPVEFURV85MCB8Cj4gIAkJCURSTV9NT0RFX1JP VEFURV8xODAgfCBEUk1fTU9ERV9ST1RBVEVfMjcwOwo+IEBAIC0xNDM1LDcgKzE0MzUsNyBAQCBp bnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCj4gIAlwb3NzaWJsZV9jcnRjcyA9ICgxIDw8IHBpcGUpOwo+ICAKPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpCj4gKwlpZiAoSVNfR0VOX0dURShkZXZfcHJpdiwgOSkpCj4g IAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmaW50ZWxf cGxhbmUtPmJhc2UsCj4gIAkJCQkJICAgICAgIHBvc3NpYmxlX2NydGNzLCAmaW50ZWxfc3ByaXRl X3BsYW5lX2Z1bmNzLAo+ICAJCQkJCSAgICAgICBwbGFuZV9mb3JtYXRzLCBudW1fcGxhbmVfZm9y bWF0cywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMKPiBpbmRleCBiM2RhYmMyMTllNmEuLmU5YmVk ODljYzFmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYwo+IEBAIC0xMDY3LDcgKzEwNjcs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF90dl9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICAKPiAgCXNldF9jb2xvcl9jb252ZXJzaW9uKGRldl9wcml2LCBjb2xvcl9j b252ZXJzaW9uKTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICsJaWYg KElTX0dFTl9HVEUoZGV2X3ByaXYsIDQpKQo+ICAJCUk5MTVfV1JJVEUoVFZfQ0xSX0tOT0JTLCAw eDAwNDA0MDAwKTsKPiAgCWVsc2UKPiAgCQlJOTE1X1dSSVRFKFRWX0NMUl9LTk9CUywgMHgwMDYw NjAwMCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCA3Mzk1OWFlNTYy NDEuLjRhZTcyYzJmMTkyMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4g QEAgLTQzNSw3ICs0MzUsNyBAQCB1NjQgaW50ZWxfdW5jb3JlX2VkcmFtX3NpemUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJLyogVGhlIG5lZWRlZCBjYXBhYmlsaXR5IGJp dHMgZm9yIHNpemUgY2FsY3VsYXRpb24KPiAgCSAqIGFyZSBub3QgdGhlcmUgd2l0aCBwcmUgZ2Vu OSBzbyByZXR1cm4gMTI4TUIgYWx3YXlzLgo+ICAJICovCj4gLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDkpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCA5KSkKPiAgCQlyZXR1cm4gMTI4 ICogMTAyNCAqIDEwMjQ7Cj4gIAo+ICAJcmV0dXJuIGdlbjlfZWRyYW1fc2l6ZShkZXZfcHJpdik7 Cj4gQEAgLTQ0NSw3ICs0NDUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZWRyYW1fZGV0 ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJaWYgKElTX0hB U1dFTEwoZGV2X3ByaXYpIHx8Cj4gIAkgICAgSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fAo+IC0J ICAgIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ICsJICAgIElTX0dFTl9HVEUoZGV2X3By aXYsIDkpKSB7Cj4gIAkJZGV2X3ByaXYtPmVkcmFtX2NhcCA9IF9fcmF3X2k5MTVfcmVhZDMyKGRl dl9wcml2LAo+ICAJCQkJCQkJSFNXX0VEUkFNX0NBUCk7Cj4gIAo+IEBAIC04MzcsNyArODM3LDcg QEAgZmluZF9md19kb21haW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg b2Zmc2V0KQo+ICAJeyAuc3RhcnQgPSAocyksIC5lbmQgPSAoZSksIC5kb21haW5zID0gKGQpIH0K PiAgCj4gICNkZWZpbmUgSEFTX0ZXVEFCTEUoZGV2X3ByaXYpIFwKPiAtCShJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkgfHwgXAo+ICsJKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpIHx8IFwKPiAgCSBJ U19DSEVSUllWSUVXKGRldl9wcml2KSB8fCBcCj4gIAkgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikp Cj4gIAo+IEBAIC0xMjUzLDcgKzEyNTMsNyBAQCBzdGF0aWMgdm9pZCBmd19kb21haW5faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRl bF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgewo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNSB8fCBpbnRlbF92Z3B1X2Fj dGl2ZShkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOX0xURShkZXZfcHJpdiwgNSkgfHwgaW50ZWxf dmdwdV9hY3RpdmUoZGV2X3ByaXYpKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAoSVNfR0VONihk ZXZfcHJpdikpIHsKPiBAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5j b3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAkJZGV2X3ByaXYtPnVuY29yZS5md19jbGVhciA9IF9NQVNLRURfQklUX0RJU0FCTEUoRk9SQ0VX QUtFX0tFUk5FTCk7Cj4gIAl9Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkg ewo+ICsJaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDkpKSB7Cj4gIAkJZGV2X3ByaXYtPnVuY29y ZS5mdW5jcy5mb3JjZV93YWtlX2dldCA9Cj4gIAkJCWZ3X2RvbWFpbnNfZ2V0X3dpdGhfZmFsbGJh Y2s7Cj4gIAkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX3B1dCA9IGZ3X2RvbWFp bnNfcHV0Owo+IEBAIC0xNTQxLDcgKzE1NDEsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3N0b3BfZW5n aW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgCj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDMpCj4gKwlpZiAoSVNfR0VOX0xUKGRldl9wcml2LCAz KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGRl dl9wcml2LCBlbmdpbmVfbWFzaywgaWQpCj4gQEAgLTE4NzQsOSArMTg3NCw5IEBAIHN0YXRpYyBy ZXNldF9mdW5jIGludGVsX2dldF9ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJaWYgKCFpOTE1X21vZHBhcmFtcy5yZXNldCkKPiAgCQlyZXR1cm4gTlVMTDsK PiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ICsJaWYgKElTX0dFTl9HVEUo ZGV2X3ByaXYsIDgpKQo+ICAJCXJldHVybiBnZW44X3Jlc2V0X2VuZ2luZXM7Cj4gLQllbHNlIGlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gKwllbHNlIGlmIChJU19HRU5fR1RFKGRldl9w cml2LCA2KSkKPiAgCQlyZXR1cm4gZ2VuNl9yZXNldF9lbmdpbmVzOwo+ICAJZWxzZSBpZiAoSVNf R0VONShkZXZfcHJpdikpCj4gIAkJcmV0dXJuIGlyb25sYWtlX2RvX3Jlc2V0Owo+IEBAIC0xODg0 LDcgKzE4ODQsNyBAQCBzdGF0aWMgcmVzZXRfZnVuYyBpbnRlbF9nZXRfZ3B1X3Jlc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlyZXR1cm4gZzR4X2RvX3Jlc2V0Owo+ ICAJZWxzZSBpZiAoSVNfRzMzKGRldl9wcml2KSB8fCBJU19QSU5FVklFVyhkZXZfcHJpdikpCj4g IAkJcmV0dXJuIGczM19kb19yZXNldDsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMykKPiArCWVsc2UgaWYgKElTX0dFTl9HVEUoZGV2X3ByaXYsIDMpKQo+ICAJCXJldHVybiBp OTE1X2RvX3Jlc2V0Owo+ICAJZWxzZQo+ICAJCXJldHVybiBOVUxMOwo+IEBAIC0xOTg3LDcgKzE5 ODcsNyBAQCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9yZWFkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAlpZiAoSEFTX0ZXVEFCTEUoZGV2X3ByaXYpKSB7Cj4g IAkJZndfZG9tYWlucyA9IF9fZnd0YWJsZV9yZWdfcmVhZF9md19kb21haW5zKG9mZnNldCk7Cj4g LQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+ICsJfSBlbHNlIGlmIChJ U19HRU5fR1RFKGRldl9wcml2LCA2KSkgewo+ICAJCWZ3X2RvbWFpbnMgPSBfX2dlbjZfcmVnX3Jl YWRfZndfZG9tYWlucyhvZmZzZXQpOwo+ICAJfSBlbHNlIHsKPiAgCQlXQVJOX09OKCFJU19HRU4o ZGV2X3ByaXYsIDIsIDUpKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gaW5kZXggN2EwZDFlMTdjMWFkLi44ZGVlZDU1Njli N2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvaGVyZW5jeS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2NvaGVyZW5jeS5jCj4gQEAgLTIwNCwxMiArMjA0LDEyIEBAIHN0YXRpYyBpbnQgZ3B1X3Nl dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCXJldHVybiBQVFJfRVJSKGNz KTsKPiAgCX0KPiAgCj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpIHsKPiArCWlmIChJU19H RU5fR1RFKGk5MTUsIDgpKSB7Cj4gIAkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8 IDEgPDwgMjI7Cj4gIAkJKmNzKysgPSBsb3dlcl8zMl9iaXRzKGk5MTVfZ2d0dF9vZmZzZXQodm1h KSArIG9mZnNldCk7Cj4gIAkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKGk5MTVfZ2d0dF9vZmZzZXQo dm1hKSArIG9mZnNldCk7Cj4gIAkJKmNzKysgPSB2Owo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4o aTkxNSkgPj0gNCkgewo+ICsJfSBlbHNlIGlmIChJU19HRU5fR1RFKGk5MTUsIDQpKSB7Cj4gIAkJ KmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IDEgPDwgMjI7Cj4gIAkJKmNzKysgPSAw Owo+ICAJCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgb2Zmc2V0Owo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4 IDU2YTgwM2QxMTkxNi4uMTJlYzdiMzljZTc3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTE1OSw3ICsxNTksNyBA QCBzdGF0aWMgaW50IGdwdV9maWxsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g IAl9Cj4gIAo+ICAJZmxhZ3MgPSAwOwo+IC0JaWYgKElOVEVMX0dFTih2bS0+aTkxNSkgPD0gNSkK PiArCWlmIChJU19HRU5fTFRFKHZtLT5pOTE1LCA1KSkKPiAgCQlmbGFncyB8PSBJOTE1X0RJU1BB VENIX1NFQ1VSRTsKPiAgCj4gIAllcnIgPSBlbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+IGlu ZGV4IGYzMmFhNmJiNzllMi4uMmM4ZjUwMGVkN2Y3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+IEBAIC0zNTUsNyArMzU1LDcg QEAgc3RhdGljIGludCBpZ3RfcGFydGlhbF90aWxpbmcodm9pZCAqYXJnKQo+ICAJCSAgICB0aWxl LnN3aXp6bGUgPT0gSTkxNV9CSVRfNl9TV0laWkxFXzlfMTBfMTcpCj4gIAkJCWNvbnRpbnVlOwo+ ICAKPiAtCQlpZiAoSU5URUxfR0VOKGk5MTUpIDw9IDIpIHsKPiArCQlpZiAoSVNfR0VOX0xURShp OTE1LCAyKSkgewo+ICAJCQl0aWxlLmhlaWdodCA9IDE2Owo+ICAJCQl0aWxlLndpZHRoID0gMTI4 Owo+ICAJCQl0aWxlLnNpemUgPSAxMTsKPiBAQCAtMzcwLDkgKzM3MCw5IEBAIHN0YXRpYyBpbnQg aWd0X3BhcnRpYWxfdGlsaW5nKHZvaWQgKmFyZykKPiAgCQkJdGlsZS5zaXplID0gMTI7Cj4gIAkJ fQo+ICAKPiAtCQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNCkKPiArCQlpZiAoSVNfR0VOX0xUKGk5 MTUsIDQpKQo+ICAJCQltYXhfcGl0Y2ggPSA4MTkyIC8gdGlsZS53aWR0aDsKPiAtCQllbHNlIGlm IChJTlRFTF9HRU4oaTkxNSkgPCA3KQo+ICsJCWVsc2UgaWYgKElTX0dFTl9MVChpOTE1LCA3KSkK PiAgCQkJbWF4X3BpdGNoID0gMTI4ICogSTk2NV9GRU5DRV9NQVhfUElUQ0hfVkFMIC8gdGlsZS53 aWR0aDsKPiAgCQllbHNlCj4gIAkJCW1heF9waXRjaCA9IDEyOCAqIEdFTjdfRkVOQ0VfTUFYX1BJ VENIX1ZBTCAvIHRpbGUud2lkdGg7Cj4gQEAgLTM4NSw3ICszODUsNyBAQCBzdGF0aWMgaW50IGln dF9wYXJ0aWFsX3RpbGluZyh2b2lkICphcmcpCj4gIAkJCWlmIChlcnIpCj4gIAkJCQlnb3RvIG91 dF91bmxvY2s7Cj4gIAo+IC0JCQlpZiAocGl0Y2ggPiAyICYmIElOVEVMX0dFTihpOTE1KSA+PSA0 KSB7Cj4gKwkJCWlmIChwaXRjaCA+IDIgJiYgSVNfR0VOX0dURShpOTE1LCA0KSkgewo+ICAJCQkJ dGlsZS5zdHJpZGUgPSB0aWxlLndpZHRoICogKHBpdGNoIC0gMSk7Cj4gIAkJCQllcnIgPSBjaGVj a19wYXJ0aWFsX21hcHBpbmcob2JqLCAmdGlsZSwgZW5kKTsKPiAgCQkJCWlmIChlcnIgPT0gLUVJ TlRSKQo+IEBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGludCBpZ3RfcGFydGlhbF90aWxpbmco dm9pZCAqYXJnKQo+ICAJCQkJCWdvdG8gb3V0X3VubG9jazsKPiAgCQkJfQo+ICAKPiAtCQkJaWYg KHBpdGNoIDwgbWF4X3BpdGNoICYmIElOVEVMX0dFTihpOTE1KSA+PSA0KSB7Cj4gKwkJCWlmIChw aXRjaCA8IG1heF9waXRjaCAmJiBJU19HRU5fR1RFKGk5MTUsIDQpKSB7Cj4gIAkJCQl0aWxlLnN0 cmlkZSA9IHRpbGUud2lkdGggKiAocGl0Y2ggKyAxKTsKPiAgCQkJCWVyciA9IGNoZWNrX3BhcnRp YWxfbWFwcGluZyhvYmosICZ0aWxlLCBlbmQpOwo+ICAJCQkJaWYgKGVyciA9PSAtRUlOVFIpCj4g QEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgaW50IGlndF9wYXJ0aWFsX3RpbGluZyh2b2lkICph cmcpCj4gIAkJCX0KPiAgCQl9Cj4gIAo+IC0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCkgewo+ ICsJCWlmIChJU19HRU5fR1RFKGk5MTUsIDQpKSB7Cj4gIAkJCWZvcl9lYWNoX3ByaW1lX251bWJl cihwaXRjaCwgbWF4X3BpdGNoKSB7Cj4gIAkJCQl0aWxlLnN0cmlkZSA9IHRpbGUud2lkdGggKiBw aXRjaDsKPiAgCQkJCWVyciA9IGNoZWNrX3BhcnRpYWxfbWFwcGluZyhvYmosICZ0aWxlLCBlbmQp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFu Z2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNr LmMKPiBpbmRleCBkMWQyYzI0NTZmNjkuLjkyYmMwNTlhNzhmNCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBAQCAtMTM2LDcg KzEzNiw3IEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNlX2JhdGNoKHN0cnVjdCBoYW5nICpoLAo+ ICAJfQo+ICAKPiAgCWJhdGNoID0gaC0+YmF0Y2g7Cj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49 IDgpIHsKPiArCWlmIChJU19HRU5fR1RFKGk5MTUsIDgpKSB7Cj4gIAkJKmJhdGNoKysgPSBNSV9T VE9SRV9EV09SRF9JTU1fR0VONDsKPiAgCQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHMoaHdzX2Fk ZHJlc3MoaHdzLCBycSkpOwo+ICAJCSpiYXRjaCsrID0gdXBwZXJfMzJfYml0cyhod3NfYWRkcmVz cyhod3MsIHJxKSk7Cj4gQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJz ZV9iYXRjaChzdHJ1Y3QgaGFuZyAqaCwKPiAgCQkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9T VEFSVCB8IDEgPDwgOCB8IDE7Cj4gIAkJKmJhdGNoKysgPSBsb3dlcl8zMl9iaXRzKHZtYS0+bm9k ZS5zdGFydCk7Cj4gIAkJKmJhdGNoKysgPSB1cHBlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7 Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KSB7Cj4gKwl9IGVsc2UgaWYgKElT X0dFTl9HVEUoaTkxNSwgNikpIHsKPiAgCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9H RU40Owo+ICAJCSpiYXRjaCsrID0gMDsKPiAgCQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHMoaHdz X2FkZHJlc3MoaHdzLCBycSkpOwo+IEBAIC0xNjMsNyArMTYzLDcgQEAgc3RhdGljIGludCBlbWl0 X3JlY3Vyc2VfYmF0Y2goc3RydWN0IGhhbmcgKmgsCj4gIAkJKmJhdGNoKysgPSBNSV9BUkJfQ0hF Q0s7Cj4gIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAxIDw8IDg7Cj4gIAkJ KmJhdGNoKysgPSBsb3dlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7Cj4gLQl9IGVsc2UgaWYg KElOVEVMX0dFTihpOTE1KSA+PSA0KSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTl9HVEUoaTkxNSwg NCkpIHsKPiAgCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgMSA8PCAyMjsK PiAgCQkqYmF0Y2grKyA9IDA7Cj4gIAkJKmJhdGNoKysgPSBsb3dlcl8zMl9iaXRzKGh3c19hZGRy ZXNzKGh3cywgcnEpKTsKPiBAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1 cnNlX2JhdGNoKHN0cnVjdCBoYW5nICpoLAo+ICAJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChoLT5p OTE1KTsKPiAgCj4gIAlmbGFncyA9IDA7Cj4gLQlpZiAoSU5URUxfR0VOKHZtLT5pOTE1KSA8PSA1 KQo+ICsJaWYgKElTX0dFTl9MVEUodm0tPmk5MTUsIDUpKQo+ICAJCWZsYWdzIHw9IEk5MTVfRElT UEFUQ0hfU0VDVVJFOwo+ICAKPiAgCWVyciA9IHJxLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEs IHZtYS0+bm9kZS5zdGFydCwgUEFHRV9TSVpFLCBmbGFncyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUuYwo+IGluZGV4IDJmNjM2NzY0MzE3MS4uNzE3 N2Y5N2U3MmVmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF91bmNvcmUuYwo+IEBAIC0xNzMsNyArMTczLDcgQEAgaW50IGludGVsX3VuY29yZV9saXZlX3Nl bGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCS8qIENvbmZpcm0gdGhl IHRhYmxlIHdlIGxvYWQgaXMgc3RpbGwgdmFsaWQgKi8KPiAgCWVyciA9IGludGVsX2Z3X3RhYmxl X2NoZWNrKGk5MTUtPnVuY29yZS5md19kb21haW5zX3RhYmxlLAo+ICAJCQkJICAgaTkxNS0+dW5j b3JlLmZ3X2RvbWFpbnNfdGFibGVfZW50cmllcywKPiAtCQkJCSAgIElOVEVMX0dFTihpOTE1KSA+ PSA5KTsKPiArCQkJCSAgIElTX0dFTl9HVEUoaTkxNSwgOSkpOwo+ICAJaWYgKGVycikKPiAgCQly ZXR1cm4gZXJyOwo+ICAKPiAtLSAKPiAyLjE0LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwg T1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=