From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Move context management under GEM Date: Fri, 4 Oct 2019 11:27:42 +0100 Message-ID: <3f76b196-d9ba-7a47-5b30-96a52ae534fa@linux.intel.com> References: <20191003093639.10186-17-chris@chris-wilson.co.uk> <20191003142026.10971-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9DF156E2E4 for ; Fri, 4 Oct 2019 10:27:46 +0000 (UTC) In-Reply-To: <20191003142026.10971-1-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAzLzEwLzIwMTkgMTU6MjAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBLZWVwIHRyYWNrIG9m IHRoZSBHRU0gY29udGV4dHMgdW5kZXJuZWF0aCBpOTE1LT5nZW0uY29udGV4dHMgYW5kIGFzc2ln bgo+IHRoZW0gdGhlaXIgb3duIGxvY2sgZm9yIHRoZSBwdXJwb3NlcyBvZiBsaXN0IG1hbmFnZW1l bnQuCj4gCj4gdjI6IEZvY3VzIG9uIGxvY2sgdHJhY2tpbmc7IGN0eC0+dm0gaXMgcHJvdGVjdGVk IGJ5IGN0eC0+bXV0ZXgKPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KPiAtLS0KPiBBbm90aGVyIG1pc3NlZCBfX2Fzc2lnbl9wcGd0dCBpbnNpZGUgdGhl IG1vY2suCj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4 dC5jICAgfCAxODMgKysrKysrKysrLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fY29udGV4dC5oICAgfCAgMjcgKystCj4gICAuLi4vZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmggfCAgIDIgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYyAgIHwgICAzICstCj4gICAuLi4vZ3B1L2RybS9p OTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jICAgfCAgMzYgKystLQo+ICAgLi4uL2RybS9p OTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIHwgMTY4ICsrKysrKysrLS0tLS0t LS0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyB8ICAg NyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jICAgICAgIHwg IDEwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAg fCAgIDUgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jICAg IHwgIDI0ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNr LmMgIHwgIDM5ICsrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5j ICAgICAgICB8ICAgNiArLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJv dW5kcy5jICAgIHwgIDIyICsrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxl ci5jICAgICAgICAgIHwgIDI0ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgICAgICAgICAgIHwgIDUwICsrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jICAgICAgICAgICAgICAgfCAgIDIgLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgICAgICAgIHwgIDI3ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDEwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYyAgICAgICAgICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgICB8ICAyNCArKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgICAgICAgICB8ICA3NyArKysrLS0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oICAgICAgICAgICAgIHwgICAyICstCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYyAgICAgfCAgIDggLQo+ICAgLi4u L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYyAgIHwgICAzIC0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyB8ICAxNSArLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jIHwgIDEyICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYyAgICAgfCAgIDcgKy0K PiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8ICAgNiAr LQo+ICAgMjkgZmlsZXMgY2hhbmdlZCwgNDE1IGluc2VydGlvbnMoKyksIDM5MCBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2Nv bnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKPiBp bmRleCBhZTU4ODU0NGJmM2EuLmRhZGI4MjBiMDUwMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0yMTgsOSArMjE4LDEyIEBAIHN0YXRp YyBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZGVmYXVsdF9lbmdpbmVzKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgpCj4gICAKPiAgIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJl ZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgewo+IC0JbG9ja2RlcF9hc3NlcnRf aGVsZCgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlHRU1fQlVHX09OKCFpOTE1 X2dlbV9jb250ZXh0X2lzX2Nsb3NlZChjdHgpKTsKPiAgIAo+ICsJc3Bpbl9sb2NrKCZjdHgtPmk5 MTUtPmdlbS5jb250ZXh0cy5sb2NrKTsKPiArCWxpc3RfZGVsKCZjdHgtPmxpbmspOwo+ICsJc3Bp bl91bmxvY2soJmN0eC0+aTkxNS0+Z2VtLmNvbnRleHRzLmxvY2spOwo+ICsKPiAgIAlmcmVlX2Vu Z2luZXMocmN1X2FjY2Vzc19wb2ludGVyKGN0eC0+ZW5naW5lcykpOwo+ICAgCW11dGV4X2Rlc3Ry b3koJmN0eC0+ZW5naW5lc19tdXRleCk7Cj4gICAKPiBAQCAtMjMwLDY3ICsyMzMsNTQgQEAgc3Rh dGljIHZvaWQgaTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgpCj4gICAJa2ZyZWUoY3R4LT5uYW1lKTsKPiAgIAlwdXRfcGlkKGN0eC0+cGlkKTsKPiAgIAo+ IC0JbGlzdF9kZWwoJmN0eC0+bGluayk7Cj4gICAJbXV0ZXhfZGVzdHJveSgmY3R4LT5tdXRleCk7 Cj4gICAKPiAgIAlrZnJlZV9yY3UoY3R4LCByY3UpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lk IGNvbnRleHRzX2ZyZWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3N0YXRpYyB2 b2lkIGNvbnRleHRzX2ZyZWVfYWxsKHN0cnVjdCBsbGlzdF9ub2RlICpsaXN0KQo+ICAgewo+IC0J c3RydWN0IGxsaXN0X25vZGUgKmZyZWVkID0gbGxpc3RfZGVsX2FsbCgmaTkxNS0+Y29udGV4dHMu ZnJlZV9saXN0KTsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCAqY247Cj4gICAK PiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAt CWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3R4LCBjbiwgZnJlZWQsIGZyZWVfbGluaykKPiAr CWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3R4LCBjbiwgbGlzdCwgZnJlZV9saW5rKQo+ICAg CQlpOTE1X2dlbV9jb250ZXh0X2ZyZWUoY3R4KTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBj b250ZXh0c19mcmVlX2ZpcnN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICtzdGF0 aWMgdm9pZCBjb250ZXh0c19mbHVzaF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0cyAqZ2Mp Cj4gICB7Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+IC0Jc3RydWN0IGxsaXN0 X25vZGUgKmZyZWVkOwo+IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+IC0KPiAtCWZyZWVkID0gbGxpc3RfZGVsX2ZpcnN0KCZpOTE1LT5jb250ZXh0 cy5mcmVlX2xpc3QpOwo+IC0JaWYgKCFmcmVlZCkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JY3R4ID0g Y29udGFpbmVyX29mKGZyZWVkLCB0eXBlb2YoKmN0eCksIGZyZWVfbGluayk7Cj4gLQlpOTE1X2dl bV9jb250ZXh0X2ZyZWUoY3R4KTsKPiArCWNvbnRleHRzX2ZyZWVfYWxsKGxsaXN0X2RlbF9hbGwo JmdjLT5mcmVlX2xpc3QpKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgY29udGV4dHNfZnJl ZV93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgewo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPQo+IC0JCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmk5MTUp LCBjb250ZXh0cy5mcmVlX3dvcmspOwo+ICsJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHRzICpnYyA9 Cj4gKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZ2MpLCBmcmVlX3dvcmspOwo+ICAgCj4g LQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWNvbnRleHRzX2ZyZWUo aTkxNSk7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJY29u dGV4dHNfZmx1c2hfZnJlZShnYyk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgaTkxNV9nZW1fY29udGV4 dF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCA9IGNvbnRhaW5lcl9vZihyZWYsIHR5cGVvZigqY3R4KSwgcmVmKTsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5pOTE1Owo+ICsJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHRzICpnYyA9ICZjdHgtPmk5MTUtPmdlbS5jb250ZXh0czsKPiAgIAo+ICAgCXRy YWNlX2k5MTVfY29udGV4dF9mcmVlKGN0eCk7Cj4gLQlpZiAobGxpc3RfYWRkKCZjdHgtPmZyZWVf bGluaywgJmk5MTUtPmNvbnRleHRzLmZyZWVfbGlzdCkpCj4gLQkJcXVldWVfd29yayhpOTE1LT53 cSwgJmk5MTUtPmNvbnRleHRzLmZyZWVfd29yayk7Cj4gKwlpZiAobGxpc3RfYWRkKCZjdHgtPmZy ZWVfbGluaywgJmdjLT5mcmVlX2xpc3QpKQo+ICsJCXF1ZXVlX3dvcmsoY3R4LT5pOTE1LT53cSwg JmdjLT5mcmVlX3dvcmspOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3Nl KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICB7Cj4gLQlpOTE1X2dlbV9jb250ZXh0 X3NldF9jbG9zZWQoY3R4KTsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ICAg Cj4gLQlpZiAoY3R4LT52bSkKPiAtCQlpOTE1X3ZtX2Nsb3NlKGN0eC0+dm0pOwo+ICsJaTkxNV9n ZW1fY29udGV4dF9zZXRfY2xvc2VkKGN0eCk7Cj4gICAKPiAgIAltdXRleF9sb2NrKCZjdHgtPm11 dGV4KTsKPiAgIAo+ICsJdm0gPSBpOTE1X2dlbV9jb250ZXh0X3ZtKGN0eCk7Cj4gKwlpZiAodm0p Cj4gKwkJaTkxNV92bV9jbG9zZSh2bSk7Cj4gKwo+ICAgCWN0eC0+ZmlsZV9wcml2ID0gRVJSX1BU UigtRUJBREYpOwo+ICAgCj4gICAJLyoKPiBAQCAtMzE3LDcgKzMwNyw2IEBAIF9fY3JlYXRlX2Nv bnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwo+ICAgCj4gICAJa3JlZl9pbml0KCZjdHgtPnJlZik7Cj4gLQlsaXN0X2FkZF90 YWlsKCZjdHgtPmxpbmssICZpOTE1LT5jb250ZXh0cy5saXN0KTsKPiAgIAljdHgtPmk5MTUgPSBp OTE1Owo+ICAgCWN0eC0+c2NoZWQucHJpb3JpdHkgPSBJOTE1X1VTRVJfUFJJT1JJVFkoSTkxNV9Q UklPUklUWV9OT1JNQUwpOwo+ICAgCW11dGV4X2luaXQoJmN0eC0+bXV0ZXgpOwo+IEBAIC0zNDMs NiArMzMyLDEwIEBAIF9fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCj4gICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5oYW5nX3RpbWVzdGFtcCk7 IGkrKykKPiAgIAkJY3R4LT5oYW5nX3RpbWVzdGFtcFtpXSA9IGppZmZpZXMgLSBDT05URVhUX0ZB U1RfSEFOR19KSUZGSUVTOwo+ICAgCj4gKwlzcGluX2xvY2soJmk5MTUtPmdlbS5jb250ZXh0cy5s b2NrKTsKPiArCWxpc3RfYWRkX3RhaWwoJmN0eC0+bGluaywgJmk5MTUtPmdlbS5jb250ZXh0cy5s aXN0KTsKPiArCXNwaW5fdW5sb2NrKCZpOTE1LT5nZW0uY29udGV4dHMubG9jayk7Cj4gKwo+ICAg CXJldHVybiBjdHg7Cj4gICAKPiAgIGVycl9mcmVlOgo+IEBAIC0zNzIsMTEgKzM2NSwxMSBAQCBz dGF0aWMgdm9pZCBfX2FwcGx5X3BwZ3R0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgdm9pZCAq dm0pCj4gICBzdGF0aWMgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqCj4gICBfX3NldF9wcGd0 dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSkKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKm9sZCA9IGN0eC0+dm07 Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpvbGQgPSBpOTE1X2dlbV9jb250ZXh0X3Zt KGN0eCk7Cj4gICAKPiAgIAlHRU1fQlVHX09OKG9sZCAmJiBpOTE1X3ZtX2lzXzRsdmwodm0pICE9 IGk5MTVfdm1faXNfNGx2bChvbGQpKTsKPiAgIAo+IC0JY3R4LT52bSA9IGk5MTVfdm1fb3Blbih2 bSk7Cj4gKwlyY3VfYXNzaWduX3BvaW50ZXIoY3R4LT52bSwgaTkxNV92bV9vcGVuKHZtKSk7Cj4g ICAJY29udGV4dF9hcHBseV9hbGwoY3R4LCBfX2FwcGx5X3BwZ3R0LCB2bSk7Cj4gICAKPiAgIAly ZXR1cm4gb2xkOwo+IEBAIC0zODUsNyArMzc4LDcgQEAgX19zZXRfcHBndHQoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICBzdGF0 aWMgdm9pZCBfX2Fzc2lnbl9wcGd0dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAg CQkJICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICB7Cj4gLQlpZiAodm0gPT0g Y3R4LT52bSkKPiArCWlmICh2bSA9PSByY3VfYWNjZXNzX3BvaW50ZXIoY3R4LT52bSkpCj4gICAJ CXJldHVybjsKPiAgIAo+ICAgCXZtID0gX19zZXRfcHBndHQoY3R4LCB2bSk7Cj4gQEAgLTQxNywy NyArNDEwLDI1IEBAIHN0YXRpYyB2b2lkIF9fYXNzaWduX3RpbWVsaW5lKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgsCj4gICB9Cj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqCj4gLWk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdW5zaWduZWQgaW50IGZsYWdzKQo+ICtpOTE1X2dlbV9jcmVhdGVfY29udGV4 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50IGZsYWdzKQo+ICAg ewo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAKPiAtCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJaWYgKGZsYWdz ICYgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19TSU5HTEVfVElNRUxJTkUgJiYKPiAtCSAgICAh SEFTX0VYRUNMSVNUUyhkZXZfcHJpdikpCj4gKwkgICAgIUhBU19FWEVDTElTVFMoaTkxNSkpCj4g ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICAgCj4gLQkvKiBSZWFwIHRoZSBtb3N0IHN0 YWxlIGNvbnRleHQgKi8KPiAtCWNvbnRleHRzX2ZyZWVfZmlyc3QoZGV2X3ByaXYpOwo+ICsJLyog UmVhcCB0aGUgc3RhbGUgY29udGV4dHMgKi8KPiArCWNvbnRleHRzX2ZsdXNoX2ZyZWUoJmk5MTUt PmdlbS5jb250ZXh0cyk7Cj4gICAKPiAtCWN0eCA9IF9fY3JlYXRlX2NvbnRleHQoZGV2X3ByaXYp Owo+ICsJY3R4ID0gX19jcmVhdGVfY29udGV4dChpOTE1KTsKPiAgIAlpZiAoSVNfRVJSKGN0eCkp Cj4gICAJCXJldHVybiBjdHg7Cj4gICAKPiAtCWlmIChIQVNfRlVMTF9QUEdUVChkZXZfcHJpdikp IHsKPiArCWlmIChIQVNfRlVMTF9QUEdUVChpOTE1KSkgewo+ICAgCQlzdHJ1Y3QgaTkxNV9wcGd0 dCAqcHBndHQ7Cj4gICAKPiAtCQlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRlKGRldl9wcml2KTsK PiArCQlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRlKGk5MTUpOwo+ICAgCQlpZiAoSVNfRVJSKHBw Z3R0KSkgewo+ICAgCQkJRFJNX0RFQlVHX0RSSVZFUigiUFBHVFQgc2V0dXAgZmFpbGVkICglbGQp XG4iLAo+ICAgCQkJCQkgUFRSX0VSUihwcGd0dCkpOwo+IEBAIC00NDUsMTQgKzQzNiwxNyBAQCBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHVuc2lnbmVkIGludCBmbGFncykKPiAgIAkJCXJldHVybiBFUlJfQ0FTVChwcGd0dCk7Cj4gICAJ CX0KPiAgIAo+ICsJCW11dGV4X2xvY2soJmN0eC0+bXV0ZXgpOwo+ICAgCQlfX2Fzc2lnbl9wcGd0 dChjdHgsICZwcGd0dC0+dm0pOwo+ICsJCW11dGV4X3VubG9jaygmY3R4LT5tdXRleCk7Cj4gKwo+ ICAgCQlpOTE1X3ZtX3B1dCgmcHBndHQtPnZtKTsKPiAgIAl9Cj4gICAKPiAgIAlpZiAoZmxhZ3Mg JiBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElORSkgewo+ICAgCQlzdHJ1 Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICAgCj4gLQkJdGltZWxpbmUgPSBpbnRlbF90 aW1lbGluZV9jcmVhdGUoJmRldl9wcml2LT5ndCwgTlVMTCk7Cj4gKwkJdGltZWxpbmUgPSBpbnRl bF90aW1lbGluZV9jcmVhdGUoJmk5MTUtPmd0LCBOVUxMKTsKPiAgIAkJaWYgKElTX0VSUih0aW1l bGluZSkpIHsKPiAgIAkJCWNvbnRleHRfY2xvc2UoY3R4KTsKPiAgIAkJCXJldHVybiBFUlJfQ0FT VCh0aW1lbGluZSk7Cj4gQEAgLTQ5Nyw0OCArNDkxLDQwIEBAIGk5MTVfZ2VtX2NvbnRleHRfY3Jl YXRlX2tlcm5lbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHByaW8pCj4gICAJ cmV0dXJuIGN0eDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBpbml0X2NvbnRleHRzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICtzdGF0aWMgdm9pZCBpbml0X2NvbnRleHRzKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0cyAqZ2MpCj4gICB7Cj4gLQltdXRleF9pbml0KCZpOTE1LT5j b250ZXh0cy5tdXRleCk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmaTkxNS0+Y29udGV4dHMubGlzdCk7 Cj4gLQo+IC0JLyogVXNpbmcgdGhlIHNpbXBsZSBpZGEgaW50ZXJmYWNlLCB0aGUgbWF4IGlzIGxp bWl0ZWQgYnkgc2l6ZW9mKGludCkgKi8KPiAtCUJVSUxEX0JVR19PTihNQVhfQ09OVEVYVF9IV19J RCA+IElOVF9NQVgpOwo+IC0JQlVJTERfQlVHX09OKEdFTjExX01BWF9DT05URVhUX0hXX0lEID4g SU5UX01BWCk7Cj4gLQlpZGFfaW5pdCgmaTkxNS0+Y29udGV4dHMuaHdfaWRhKTsKPiAtCUlOSVRf TElTVF9IRUFEKCZpOTE1LT5jb250ZXh0cy5od19pZF9saXN0KTsKCmh3X2lkIHJlbW92YWwgc2hv dWxkIGdvIHRvIHRoYXQgZGlmZmVyZW50IHBhdGNoLgoKPiArCXNwaW5fbG9ja19pbml0KCZnYy0+ bG9jayk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZ2MtPmxpc3QpOwo+ICAgCj4gLQlJTklUX1dPUkso Jmk5MTUtPmNvbnRleHRzLmZyZWVfd29yaywgY29udGV4dHNfZnJlZV93b3JrZXIpOwo+IC0JaW5p dF9sbGlzdF9oZWFkKCZpOTE1LT5jb250ZXh0cy5mcmVlX2xpc3QpOwo+ICsJSU5JVF9XT1JLKCZn Yy0+ZnJlZV93b3JrLCBjb250ZXh0c19mcmVlX3dvcmtlcik7Cj4gKwlpbml0X2xsaXN0X2hlYWQo JmdjLT5mcmVlX2xpc3QpOwo+ICAgfQo+ICAgCj4gLWludCBpOTE1X2dlbV9jb250ZXh0c19pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAraW50IGk5MTVfZ2VtX2luaXRf Y29udGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gICAJc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgIAo+ICAgCS8qIFJlYXNzdXJlIG91cnNlbHZlcyB3 ZSBhcmUgb25seSBjYWxsZWQgb25jZSAqLwo+IC0JR0VNX0JVR19PTihkZXZfcHJpdi0+a2VybmVs X2NvbnRleHQpOwo+ICsJR0VNX0JVR19PTihpOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4gICAKPiAt CWluaXRfY29udGV4dHMoZGV2X3ByaXYpOwo+ICsJaW5pdF9jb250ZXh0cygmaTkxNS0+Z2VtLmNv bnRleHRzKTsKPiAgIAo+ICAgCS8qIGxvd2VzdCBwcmlvcml0eTsgaWRsZSB0YXNrICovCj4gLQlj dHggPSBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoZGV2X3ByaXYsIEk5MTVfUFJJT1JJ VFlfTUlOKTsKPiArCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2tlcm5lbChpOTE1LCBJ OTE1X1BSSU9SSVRZX01JTik7Cj4gICAJaWYgKElTX0VSUihjdHgpKSB7Cj4gICAJCURSTV9FUlJP UigiRmFpbGVkIHRvIGNyZWF0ZSBkZWZhdWx0IGdsb2JhbCBjb250ZXh0XG4iKTsKPiAgIAkJcmV0 dXJuIFBUUl9FUlIoY3R4KTsKPiAgIAl9Cj4gLQlkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQgPSBj dHg7Cj4gKwlpOTE1LT5rZXJuZWxfY29udGV4dCA9IGN0eDsKPiAgIAo+ICAgCURSTV9ERUJVR19E UklWRVIoIiVzIGNvbnRleHQgc3VwcG9ydCBpbml0aWFsaXplZFxuIiwKPiAtCQkJIERSSVZFUl9D QVBTKGRldl9wcml2KS0+aGFzX2xvZ2ljYWxfY29udGV4dHMgPwo+ICsJCQkgRFJJVkVSX0NBUFMo aTkxNSktPmhhc19sb2dpY2FsX2NvbnRleHRzID8KPiAgIAkJCSAibG9naWNhbCIgOiAiZmFrZSIp Owo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLXZvaWQgaTkxNV9nZW1fY29udGV4dHNfZmlu aShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArdm9pZCBpOTE1X2dlbV9kcml2ZXJf cmVsZWFzZV9fY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4g LQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJ ZGVzdHJveV9rZXJuZWxfY29udGV4dCgmaTkxNS0+a2VybmVsX2NvbnRleHQpOwo+ICAgfQo+ICAg Cj4gQEAgLTU1NywxMSArNTQzLDE2IEBAIHN0YXRpYyBpbnQgdm1faWRyX2NsZWFudXAoaW50IGlk LCB2b2lkICpwLCB2b2lkICpkYXRhKQo+ICAgc3RhdGljIGludCBnZW1fY29udGV4dF9yZWdpc3Rl cihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkJCXN0cnVjdCBkcm1faTkxNV9m aWxlX3ByaXZhdGUgKmZwcml2KQo+ICAgewo+ICsJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm07Cj4gICAJaW50IHJldDsKPiAgIAo+ICAgCWN0eC0+ZmlsZV9wcml2ID0gZnByaXY7Cj4gLQlp ZiAoY3R4LT52bSkKPiAtCQljdHgtPnZtLT5maWxlID0gZnByaXY7Cj4gKwo+ICsJbXV0ZXhfbG9j aygmY3R4LT5tdXRleCk7Cj4gKwl2bSA9IGk5MTVfZ2VtX2NvbnRleHRfdm0oY3R4KTsKPiArCWlm ICh2bSkKPiArCQlXUklURV9PTkNFKHZtLT5maWxlLCBmcHJpdik7IC8qIFhYWCAqLwo+ICsJbXV0 ZXhfdW5sb2NrKCZjdHgtPm11dGV4KTsKPiAgIAo+ICAgCWN0eC0+cGlkID0gZ2V0X3Rhc2tfcGlk KGN1cnJlbnQsIFBJRFRZUEVfUElEKTsKPiAgIAljdHgtPm5hbWUgPSBrYXNwcmludGYoR0ZQX0tF Uk5FTCwgIiVzWyVkXSIsCj4gQEAgLTU5OCw5ICs1ODksNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4 dF9vcGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCWlkcl9pbml0KCZmaWxl X3ByaXYtPmNvbnRleHRfaWRyKTsKPiAgIAlpZHJfaW5pdF9iYXNlKCZmaWxlX3ByaXYtPnZtX2lk ciwgMSk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAg CWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIDApOwo+IC0JbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlpZiAoSVNfRVJSKGN0eCkpIHsKPiAgIAkJ ZXJyID0gUFRSX0VSUihjdHgpOwo+ICAgCQlnb3RvIGVycjsKPiBAQCAtNjI4LDYgKzYxNyw3IEBA IGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs Cj4gICB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfY2xvc2Uoc3RydWN0IGRybV9maWxlICpmaWxlKQo+ ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUt PmRyaXZlcl9wcml2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBmaWxlX3By aXYtPmRldl9wcml2Owo+ICAgCj4gICAJaWRyX2Zvcl9lYWNoKCZmaWxlX3ByaXYtPmNvbnRleHRf aWRyLCBjb250ZXh0X2lkcl9jbGVhbnVwLCBOVUxMKTsKPiAgIAlpZHJfZGVzdHJveSgmZmlsZV9w cml2LT5jb250ZXh0X2lkcik7Cj4gQEAgLTYzNiw2ICs2MjYsOCBAQCB2b2lkIGk5MTVfZ2VtX2Nv bnRleHRfY2xvc2Uoc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICAgCWlkcl9mb3JfZWFjaCgmZmls ZV9wcml2LT52bV9pZHIsIHZtX2lkcl9jbGVhbnVwLCBOVUxMKTsKPiAgIAlpZHJfZGVzdHJveSgm ZmlsZV9wcml2LT52bV9pZHIpOwo+ICAgCW11dGV4X2Rlc3Ryb3koJmZpbGVfcHJpdi0+dm1faWRy X2xvY2spOwo+ICsKPiArCWNvbnRleHRzX2ZsdXNoX2ZyZWUoJmk5MTUtPmdlbS5jb250ZXh0cyk7 Cj4gICB9Cj4gICAKPiAgIGludCBpOTE1X2dlbV92bV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiBAQCAtODE0LDE2ICs4MDYsMTIgQEAgc3RhdGljIGlu dCBnZXRfcHBndHQoc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LAo+ICAg CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ICAgCWludCByZXQ7Cj4gICAKPiAtCWlm ICghY3R4LT52bSkKPiArCWlmICghcmN1X2FjY2Vzc19wb2ludGVyKGN0eC0+dm0pKQo+ICAgCQly ZXR1cm4gLUVOT0RFVjsKPiAgIAo+IC0JLyogWFhYIHJjdSBhY3F1aXJlPyAqLwo+IC0JcmV0ID0g bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiArCXJjdV9yZWFkX2xvY2soKTsKPiAg IAl2bSA9IGk5MTVfdm1fZ2V0KGN0eC0+dm0pOwo+IC0JbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJcmN1X3JlYWRfdW5sb2NrKCk7Cj4gICAKPiAgIAlyZXQg PSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmZpbGVfcHJpdi0+dm1faWRyX2xvY2spOwo+ICAg CWlmIChyZXQpCj4gQEAgLTkzMiw3ICs5MjAsNyBAQCBzdGF0aWMgaW50IHNldF9wcGd0dChzdHJ1 Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYsCj4gICAJaWYgKGFyZ3MtPnNpemUp Cj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAgCj4gLQlpZiAoIWN0eC0+dm0pCj4gKwlpZiAoIXJj dV9hY2Nlc3NfcG9pbnRlcihjdHgtPnZtKSkKPiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4gICAKPiAg IAlpZiAodXBwZXJfMzJfYml0cyhhcmdzLT52YWx1ZSkpCj4gQEAgLTk0NiwxNyArOTM0LDIwIEBA IHN0YXRpYyBpbnQgc2V0X3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVf cHJpdiwKPiAgIAlpZiAoIXZtKQo+ICAgCQlyZXR1cm4gLUVOT0VOVDsKPiAgIAo+IC0JZXJyID0g bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPm11dGV4KTsKPiAgIAlpZiAo ZXJyKQo+ICAgCQlnb3RvIG91dDsKPiAgIAo+IC0JaWYgKHZtID09IGN0eC0+dm0pCj4gKwlpZiAo aTkxNV9nZW1fY29udGV4dF9pc19jbG9zZWQoY3R4KSkgewo+ICsJCWVyciA9IC1FTk9FTlQ7Cj4g KwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKHZtID09IHJjdV9hY2Nlc3NfcG9pbnRlcihj dHgtPnZtKSkKPiAgIAkJZ290byB1bmxvY2s7Cj4gICAKPiAgIAkvKiBUZWFyZG93biB0aGUgZXhp c3Rpbmcgb2JqOnZtYSBjYWNoZSwgaXQgd2lsbCBoYXZlIHRvIGJlIHJlYnVpbHQuICovCj4gLQlt dXRleF9sb2NrKCZjdHgtPm11dGV4KTsKPiAgIAlsdXRfY2xvc2UoY3R4KTsKPiAtCW11dGV4X3Vu bG9jaygmY3R4LT5tdXRleCk7Cj4gICAKPiAgIAlvbGQgPSBfX3NldF9wcGd0dChjdHgsIHZtKTsK PiAgIAo+IEBAIC05NzYsOCArOTY3LDcgQEAgc3RhdGljIGludCBzZXRfcHBndHQoc3RydWN0IGRy bV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LAo+ICAgCX0KPiAgIAo+ICAgdW5sb2NrOgo+ IC0JbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiArCW11 dGV4X3VubG9jaygmY3R4LT5tdXRleCk7Cj4gICBvdXQ6Cj4gICAJaTkxNV92bV9wdXQodm0pOwo+ ICAgCXJldHVybiBlcnI7Cj4gQEAgLTE4MzMsMTAgKzE4MjMsMTEgQEAgc3RhdGljIGludCBjbG9u ZV92bShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZHN0LAo+ICAgCQkgICAgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKnNyYykKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bTsKPiArCWludCBlcnIgPSAwOwo+ICAgCj4gICAJcmN1X3JlYWRfbG9jaygpOwo+ICAgCWRvIHsK PiAtCQl2bSA9IFJFQURfT05DRShzcmMtPnZtKTsKPiArCQl2bSA9IHJjdV9kZXJlZmVyZW5jZShz cmMtPnZtKTsKPiAgIAkJaWYgKCF2bSkKPiAgIAkJCWJyZWFrOwo+ICAgCj4gQEAgLTE4NTgsNyAr MTg0OSw3IEBAIHN0YXRpYyBpbnQgY2xvbmVfdm0oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmRz dCwKPiAgIAkJICogaXQgY2Fubm90IGJlIHJlYWxsb2NhdGVkIGVsc2V3aGVyZS4KPiAgIAkJICov Cj4gICAKPiAtCQlpZiAodm0gPT0gUkVBRF9PTkNFKHNyYy0+dm0pKQo+ICsJCWlmICh2bSA9PSBy Y3VfYWNjZXNzX3BvaW50ZXIoc3JjLT52bSkpCj4gICAJCQlicmVhazsKPiAgIAo+ICAgCQlpOTE1 X3ZtX3B1dCh2bSk7Cj4gQEAgLTE4NjYsMTEgKzE4NTcsMTYgQEAgc3RhdGljIGludCBjbG9uZV92 bShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZHN0LAo+ICAgCXJjdV9yZWFkX3VubG9jaygpOwo+ ICAgCj4gICAJaWYgKHZtKSB7Cj4gLQkJX19hc3NpZ25fcHBndHQoZHN0LCB2bSk7Cj4gKwkJaWYg KCFtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRzdC0+bXV0ZXgpKSB7Cj4gKwkJCV9fYXNzaWdu X3BwZ3R0KGRzdCwgdm0pOwo+ICsJCQltdXRleF91bmxvY2soJmRzdC0+bXV0ZXgpOwo+ICsJCX0g ZWxzZSB7Cj4gKwkJCWVyciA9IC1FSU5UUjsKPiArCQl9Cj4gICAJCWk5MTVfdm1fcHV0KHZtKTsK PiAgIAl9Cj4gICAKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ICAg c3RhdGljIGludCBjcmVhdGVfY2xvbmUoc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gX191c2Vy ICpleHQsIHZvaWQgKmRhdGEpCj4gQEAgLTE5NjAsMTIgKzE5NTYsNyBAQCBpbnQgaTkxNV9nZW1f Y29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiAgIAkJcmV0dXJuIC1FSU87Cj4gICAJfQo+ICAgCj4gLQlyZXQgPSBpOTE1X211dGV4X2xvY2tf aW50ZXJydXB0aWJsZShkZXYpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAg IAlleHRfZGF0YS5jdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBhcmdzLT5mbGFn cyk7Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAlpZiAoSVNfRVJS KGV4dF9kYXRhLmN0eCkpCj4gICAJCXJldHVybiBQVFJfRVJSKGV4dF9kYXRhLmN0eCk7Cj4gICAK PiBAQCAtMjA5MiwxMCArMjA4MywxMiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCj4gICAJY2FzZSBJ OTE1X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkU6Cj4gICAJCWFyZ3MtPnNpemUgPSAwOwo+IC0JCWlm IChjdHgtPnZtKQo+IC0JCQlhcmdzLT52YWx1ZSA9IGN0eC0+dm0tPnRvdGFsOwo+ICsJCXJjdV9y ZWFkX2xvY2soKTsKPiArCQlpZiAocmN1X2FjY2Vzc19wb2ludGVyKGN0eC0+dm0pKQo+ICsJCQlh cmdzLT52YWx1ZSA9IHJjdV9kZXJlZmVyZW5jZShjdHgtPnZtKS0+dG90YWw7Cj4gICAJCWVsc2UK PiAgIAkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZtLnRvdGFsOwo+ICsJCXJj dV9yZWFkX3VubG9jaygpOwo+ICAgCQlicmVhazsKPiAgIAo+ICAgCWNhc2UgSTkxNV9DT05URVhU X1BBUkFNX05PX0VSUk9SX0NBUFRVUkU6Cj4gQEAgLTIxNjEsNyArMjE1NCw3IEBAIGludCBpOTE1 X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCj4gICBpbnQgaTkxNV9nZW1fY29udGV4dF9yZXNldF9zdGF0c19pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCSAgICAgICB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUo ZGV2KTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcmVzZXRfc3RhdHMgKmFyZ3MgPSBkYXRhOwo+ICAg CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJaW50IHJldDsKPiBAQCAtMjE4Myw3 ICsyMTc2LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfcmVzZXRfc3RhdHNfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgIAkgKi8KPiAgIAo+ICAgCWlmIChjYXBhYmxlKENBUF9TWVNf QURNSU4pKQo+IC0JCWFyZ3MtPnJlc2V0X2NvdW50ID0gaTkxNV9yZXNldF9jb3VudCgmZGV2X3By aXYtPmdwdV9lcnJvcik7Cj4gKwkJYXJncy0+cmVzZXRfY291bnQgPSBpOTE1X3Jlc2V0X2NvdW50 KCZpOTE1LT5ncHVfZXJyb3IpOwo+ICAgCWVsc2UKPiAgIAkJYXJncy0+cmVzZXRfY291bnQgPSAw Owo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9j b250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oCj4g aW5kZXggNTBiYzI3ZDMwYzAzLi45MjM0NTg2ODMwZDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmgKPiBAQCAtMTEsNyArMTEsOSBAQAo+ICAgCj4g ICAjaW5jbHVkZSAiZ3QvaW50ZWxfY29udGV4dC5oIgo+ICAgCj4gKyNpbmNsdWRlICJpOTE1X2Ry di5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZ2VtLmgiCj4gKyNpbmNsdWRlICJpOTE1X2dlbV9ndHQu aCIKPiAgICNpbmNsdWRlICJpOTE1X3NjaGVkdWxlci5oIgo+ICAgI2luY2x1ZGUgImludGVsX2Rl dmljZV9pbmZvLmgiCj4gICAKPiBAQCAtMTE4LDggKzEyMCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9v bCBpOTE1X2dlbV9jb250ZXh0X2lzX2tlcm5lbChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 KQo+ICAgfQo+ICAgCj4gICAvKiBpOTE1X2dlbV9jb250ZXh0LmMgKi8KPiAtaW50IF9fbXVzdF9j aGVjayBpOTE1X2dlbV9jb250ZXh0c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gLXZvaWQgaTkxNV9nZW1fY29udGV4dHNfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+ICtpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2luaXRfY29udGV4 dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICt2b2lkIGk5MTVfZ2VtX2RyaXZl cl9yZWxlYXNlX19jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICAK PiAgIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gICAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4gQEAgLTE1OCw2ICsxNjAsMjcg QEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfcHV0KHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgpCj4gICAJa3JlZl9wdXQoJmN0eC0+cmVmLCBpOTE1X2dlbV9jb250ZXh0 X3JlbGVhc2UpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqCj4gK2k5MTVfZ2VtX2NvbnRleHRfdm0oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCkKPiArewo+ICsJcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoY3R4LT52bSwg bG9ja2RlcF9pc19oZWxkKCZjdHgtPm11dGV4KSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUg c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqCj4gK2k5MTVfZ2VtX2NvbnRleHRfZ2V0X3ZtX3Jj dShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bTsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4gKwl2bSA9IHJjdV9kZXJl ZmVyZW5jZShjdHgtPnZtKTsKPiArCWlmICghdm0pCj4gKwkJdm0gPSAmY3R4LT5pOTE1LT5nZ3R0 LnZtOwo+ICsJdm0gPSBpOTE1X3ZtX2dldCh2bSk7Cj4gKwlyY3VfcmVhZF91bmxvY2soKTsKPiAr Cj4gKwlyZXR1cm4gdm07Cj4gK30KPiArCj4gICBzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X2dl bV9lbmdpbmVzICoKPiAgIGk5MTVfZ2VtX2NvbnRleHRfZW5naW5lcyhzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4KQo+ICAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fY29udGV4dF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAo+IGluZGV4IDg3YmUyNzg3N2UyMi4uYWI4ZTEzNjdkZmM4 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0 X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4 dF90eXBlcy5oCj4gQEAgLTg4LDcgKzg4LDcgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewo+ ICAgCSAqIEluIG90aGVyIG1vZGVzLCB0aGlzIGlzIGEgTlVMTCBwb2ludGVyIHdpdGggdGhlIGV4 cGVjdGF0aW9uIHRoYXQKPiAgIAkgKiB0aGUgY2FsbGVyIHVzZXMgdGhlIHNoYXJlZCBnbG9iYWwg R1RULgo+ICAgCSAqLwo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gKwlzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIF9fcmN1ICp2bTsKPiAgIAo+ICAgCS8qKgo+ICAgCSAqIEBw aWQ6IHByb2Nlc3MgaWQgb2YgY3JlYXRvcgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDg4YTg4MWJlMTJlYy4uOTg4MTZjMzVmZmMz IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCj4gQEAgLTcyOCw3ICs3MjgsNyBAQCBzdGF0aWMgaW50IGViX3NlbGVjdF9jb250ZXh0KHN0 cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+ICAgCQlyZXR1cm4gLUVOT0VOVDsKPiAgIAo+ICAg CWViLT5nZW1fY29udGV4dCA9IGN0eDsKPiAtCWlmIChjdHgtPnZtKQo+ICsJaWYgKHJjdV9hY2Nl c3NfcG9pbnRlcihjdHgtPnZtKSkKPiAgIAkJZWItPmludmFsaWRfZmxhZ3MgfD0gRVhFQ19PQkpF Q1RfTkVFRFNfR1RUOwo+ICAgCj4gICAJZWItPmNvbnRleHRfZmxhZ3MgPSAwOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwo+IGluZGV4IDE3MzhhMTVlYjkx MS4uNGY5NzA0NzQwMTNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV91c2VycHRyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fdXNlcnB0ci5jCj4gQEAgLTc1OCw3ICs3NTgsOCBAQCBpOTE1X2dlbV91c2VycHRyX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCSAqIE9uIGFsbW9zdCBhbGwgb2YgdGhlIG9s ZGVyIGh3LCB3ZSBjYW5ub3QgdGVsbCB0aGUgR1BVIHRoYXQKPiAgIAkJICogYSBwYWdlIGlzIHJl YWRvbmx5Lgo+ICAgCQkgKi8KPiAtCQl2bSA9IGRldl9wcml2LT5rZXJuZWxfY29udGV4dC0+dm07 Cj4gKwkJdm0gPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRldl9wcml2LT5rZXJuZWxfY29u dGV4dC0+dm0sCj4gKwkJCQkJICAgICAgIHRydWUpOyAvKiBzdGF0aWMgdm0gKi8KPiAgIAkJaWYg KCF2bSB8fCAhdm0tPmhhc19yZWFkX29ubHkpCj4gICAJCQlyZXR1cm4gLUVOT0RFVjsKPiAgIAl9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9w YWdlcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMK PiBpbmRleCA5OGIyYTZjY2ZjYzEuLjMzMTQ4NThmMzA0NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gQEAgLTEzMjIsMTUgKzEz MjIsMTUgQEAgc3RhdGljIGludCBpZ3RfcHBndHRfcGluX3VwZGF0ZSh2b2lkICphcmcpCj4gICAJ c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGFyZzsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBjdHgtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBzdXBwb3J0 ZWQgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+cGFnZV9zaXplczsKPiAtCXN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtID0gY3R4LT52bTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwo+ICAgCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIgaXQ7Cj4gKwlzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKPiAgIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4g ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gICAJdW5zaWduZWQgaW50IGZsYWdzID0gUElOX1VT RVIgfCBQSU5fT0ZGU0VUX0ZJWEVEOwo+ICAgCXVuc2lnbmVkIGludCBuOwo+ICAgCWludCBmaXJz dCwgbGFzdDsKPiAtCWludCBlcnI7Cj4gKwlpbnQgZXJyID0gMDsKPiAgIAo+ICAgCS8qCj4gICAJ ICogTWFrZSBzdXJlIHRoZXJlJ3Mgbm8gZnVubnkgYnVzaW5lc3Mgd2hlbiBkb2luZyBhIFBJTl9V UERBVEUgLS0gaW4gdGhlCj4gQEAgLTEzNDAsOSArMTM0MCwxMCBAQCBzdGF0aWMgaW50IGlndF9w cGd0dF9waW5fdXBkYXRlKHZvaWQgKmFyZykKPiAgIAkgKiBodWdlLWd0dC1wYWdlcy4KPiAgIAkg Ki8KPiAgIAo+IC0JaWYgKCF2bSB8fCAhaTkxNV92bV9pc180bHZsKHZtKSkgewo+ICsJdm0gPSBp OTE1X2dlbV9jb250ZXh0X2dldF92bV9yY3UoY3R4KTsKPiArCWlmICghaTkxNV92bV9pc180bHZs KHZtKSkgewo+ICAgCQlwcl9pbmZvKCI0OGIgUFBHVFQgbm90IHN1cHBvcnRlZCwgc2tpcHBpbmdc biIpOwo+IC0JCXJldHVybiAwOwo+ICsJCWdvdG8gb3V0X3ZtOwo+ICAgCX0KPiAgIAo+ICAgCWZp cnN0ID0gaWxvZzIoSTkxNV9HVFRfUEFHRV9TSVpFXzY0Syk7Cj4gQEAgLTE0NTEsNiArMTQ1Miw4 IEBAIHN0YXRpYyBpbnQgaWd0X3BwZ3R0X3Bpbl91cGRhdGUodm9pZCAqYXJnKQo+ICAgCWk5MTVf dm1hX2Nsb3NlKHZtYSk7Cj4gICBvdXRfcHV0Ogo+ICAgCWk5MTVfZ2VtX29iamVjdF9wdXQob2Jq KTsKPiArb3V0X3ZtOgo+ICsJaTkxNV92bV9wdXQodm0pOwo+ICAgCj4gICAJcmV0dXJuIGVycjsK PiAgIH0KPiBAQCAtMTQ2MCw3ICsxNDYzLDcgQEAgc3RhdGljIGludCBpZ3RfdG1wZnNfZmFsbGJh Y2sodm9pZCAqYXJnKQo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBhcmc7Cj4g ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7Cj4gICAJc3RydWN0 IHZmc21vdW50ICpnZW1mcyA9IGk5MTUtPm1tLmdlbWZzOwo+IC0Jc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0gPSBjdHgtPnZtID86ICZpOTE1LT5nZ3R0LnZtOwo+ICsJc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0gPSBpOTE1X2dlbV9jb250ZXh0X2dldF92bV9yY3UoY3R4KTsKPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwo+ICAgCXUzMiAqdmFkZHI7Cj4gQEAgLTE1MTAsNiArMTUxMyw3IEBAIHN0YXRpYyBpbnQg aWd0X3RtcGZzX2ZhbGxiYWNrKHZvaWQgKmFyZykKPiAgIG91dF9yZXN0b3JlOgo+ICAgCWk5MTUt Pm1tLmdlbWZzID0gZ2VtZnM7Cj4gICAKPiArCWk5MTVfdm1fcHV0KHZtKTsKPiAgIAlyZXR1cm4g ZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTE1MTcsMTQgKzE1MjEsMTQgQEAgc3RhdGljIGludCBpZ3Rf c2hyaW5rX3RocCh2b2lkICphcmcpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCA9IGFyZzsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkx NTsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gY3R4LT52bSA/OiAmaTkxNS0+ Z2d0dC52bTsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gaTkxNV9nZW1fY29u dGV4dF9nZXRfdm1fcmN1KGN0eCk7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyIGl0Owo+ICAgCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZTsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAl1bnNpZ25lZCBp bnQgZmxhZ3MgPSBQSU5fVVNFUjsKPiAgIAl1bnNpZ25lZCBpbnQgbjsKPiAtCWludCBlcnI7Cj4g KwlpbnQgZXJyID0gMDsKPiAgIAo+ICAgCS8qCj4gICAJICogU2FuaXR5IGNoZWNrIHNocmlua2lu ZyBodWdlLXBhZ2VkIG9iamVjdCAtLSBtYWtlIHN1cmUgbm90aGluZyBibG93cwo+IEBAIC0xNTMz LDEyICsxNTM3LDE0IEBAIHN0YXRpYyBpbnQgaWd0X3Nocmlua190aHAodm9pZCAqYXJnKQo+ICAg Cj4gICAJaWYgKCFpZ3RfY2FuX2FsbG9jYXRlX3RocChpOTE1KSkgewo+ICAgCQlwcl9pbmZvKCJt aXNzaW5nIFRIUCBzdXBwb3J0LCBza2lwcGluZ1xuIik7Cj4gLQkJcmV0dXJuIDA7Cj4gKwkJZ290 byBvdXRfdm07Cj4gICAJfQo+ICAgCj4gICAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z aG1lbShpOTE1LCBTWl8yTSk7Cj4gLQlpZiAoSVNfRVJSKG9iaikpCj4gLQkJcmV0dXJuIFBUUl9F UlIob2JqKTsKPiArCWlmIChJU19FUlIob2JqKSkgewo+ICsJCWVyciA9IFBUUl9FUlIob2JqKTsK PiArCQlnb3RvIG91dF92bTsKPiArCX0KPiAgIAo+ICAgCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNl KG9iaiwgdm0sIE5VTEwpOwo+ICAgCWlmIChJU19FUlIodm1hKSkgewo+IEBAIC0xNjA3LDYgKzE2 MTMsOCBAQCBzdGF0aWMgaW50IGlndF9zaHJpbmtfdGhwKHZvaWQgKmFyZykKPiAgIAlpOTE1X3Zt YV9jbG9zZSh2bWEpOwo+ICAgb3V0X3B1dDoKPiAgIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7 Cj4gK291dF92bToKPiArCWk5MTVfdm1fcHV0KHZtKTsKPiAgIAo+ICAgCXJldHVybiBlcnI7Cj4g ICB9Cj4gQEAgLTE2NzUsNiArMTY4Myw3IEBAIGludCBpOTE1X2dlbV9odWdlX3BhZ2VfbGl2ZV9z ZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJfTsKPiAgIAlzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAr CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ICAgCWludGVsX3dha2VyZWZfdCB3YWtl cmVmOwo+ICAgCWludCBlcnI7Cj4gICAKPiBAQCAtMTY5OSw4ICsxNzA4LDExIEBAIGludCBpOTE1 X2dlbV9odWdlX3BhZ2VfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiAgIAl9Cj4gICAKPiAtCWlmIChjdHgtPnZtKQo+ IC0JCWN0eC0+dm0tPnNjcnViXzY0SyA9IHRydWU7Cj4gKwltdXRleF9sb2NrKCZjdHgtPm11dGV4 KTsKPiArCXZtID0gaTkxNV9nZW1fY29udGV4dF92bShjdHgpOwo+ICsJaWYgKHZtKQo+ICsJCVdS SVRFX09OQ0Uodm0tPnNjcnViXzY0SywgdHJ1ZSk7Cj4gKwltdXRleF91bmxvY2soJmN0eC0+bXV0 ZXgpOwo+ICAgCj4gICAJZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgY3R4KTsKPiAgIAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2Nv bnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29u dGV4dC5jCj4gaW5kZXggMmZiMzFhZGEyZmE3Li5kNDRmYTlkMzU2ZjEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQu Ywo+IEBAIC01MywxOSArNTMsMTcgQEAgc3RhdGljIGludCBsaXZlX25vcF9zd2l0Y2godm9pZCAq YXJnKQo+ICAgCWlmIChJU19FUlIoZmlsZSkpCj4gICAJCXJldHVybiBQVFJfRVJSKGZpbGUpOwo+ ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJY3R4 ID0ga2NhbGxvYyhuY3R4LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwo+ICAgCWlmICghY3R4 KSB7Cj4gICAJCWVyciA9IC1FTk9NRU07Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCWdvdG8g b3V0X2ZpbGU7Cj4gICAJfQo+ICAgCj4gICAJZm9yIChuID0gMDsgbiA8IG5jdHg7IG4rKykgewo+ ICAgCQljdHhbbl0gPSBsaXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7Cj4gICAJCWlmIChJU19FUlIo Y3R4W25dKSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihjdHhbbl0pOwo+IC0JCQlnb3RvIG91dF91 bmxvY2s7Cj4gKwkJCWdvdG8gb3V0X2ZpbGU7Cj4gICAJCX0KPiAgIAl9Cj4gICAKPiBAQCAtNzks NyArNzcsNyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3N3aXRjaCh2b2lkICphcmcpCj4gICAJCQly cSA9IGlndF9yZXF1ZXN0X2FsbG9jKGN0eFtuXSwgZW5naW5lKTsKPiAgIAkJCWlmIChJU19FUlIo cnEpKSB7Cj4gICAJCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gLQkJCQlnb3RvIG91dF91bmxvY2s7 Cj4gKwkJCQlnb3RvIG91dF9maWxlOwo+ICAgCQkJfQo+ICAgCQkJaTkxNV9yZXF1ZXN0X2FkZChy cSk7Cj4gICAJCX0KPiBAQCAtODcsNyArODUsNyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3N3aXRj aCh2b2lkICphcmcpCj4gICAJCQlwcl9lcnIoIkZhaWxlZCB0byBwb3B1bGF0ZWQgJWQgY29udGV4 dHNcbiIsIG5jdHgpOwo+ICAgCQkJaW50ZWxfZ3Rfc2V0X3dlZGdlZCgmaTkxNS0+Z3QpOwo+ICAg CQkJZXJyID0gLUVJTzsKPiAtCQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCQlnb3RvIG91dF9maWxl Owo+ICAgCQl9Cj4gICAKPiAgIAkJdGltZXNbMV0gPSBrdGltZV9nZXRfcmF3KCk7Cj4gQEAgLTk3 LDcgKzk1LDcgQEAgc3RhdGljIGludCBsaXZlX25vcF9zd2l0Y2godm9pZCAqYXJnKQo+ICAgCj4g ICAJCWVyciA9IGlndF9saXZlX3Rlc3RfYmVnaW4oJnQsIGk5MTUsIF9fZnVuY19fLCBlbmdpbmUt Pm5hbWUpOwo+ICAgCQlpZiAoZXJyKQo+IC0JCQlnb3RvIG91dF91bmxvY2s7Cj4gKwkJCWdvdG8g b3V0X2ZpbGU7Cj4gICAKPiAgIAkJZW5kX3RpbWUgPSBqaWZmaWVzICsgaTkxNV9zZWxmdGVzdC50 aW1lb3V0X2ppZmZpZXM7Cj4gICAJCWZvcl9lYWNoX3ByaW1lX251bWJlcl9mcm9tKHByaW1lLCAy LCA4MTkyKSB7Cj4gQEAgLTEwNyw3ICsxMDUsNyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3N3aXRj aCh2b2lkICphcmcpCj4gICAJCQkJcnEgPSBpZ3RfcmVxdWVzdF9hbGxvYyhjdHhbbiAlIG5jdHhd LCBlbmdpbmUpOwo+ICAgCQkJCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCQkJCWVyciA9IFBUUl9F UlIocnEpOwo+IC0JCQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJCQlnb3RvIG91dF9maWxlOwo+ ICAgCQkJCX0KPiAgIAo+ICAgCQkJCS8qCj4gQEAgLTE0Myw3ICsxNDEsNyBAQCBzdGF0aWMgaW50 IGxpdmVfbm9wX3N3aXRjaCh2b2lkICphcmcpCj4gICAKPiAgIAkJZXJyID0gaWd0X2xpdmVfdGVz dF9lbmQoJnQpOwo+ICAgCQlpZiAoZXJyKQo+IC0JCQlnb3RvIG91dF91bmxvY2s7Cj4gKwkJCWdv dG8gb3V0X2ZpbGU7Cj4gICAKPiAgIAkJcHJfaW5mbygiU3dpdGNoIGxhdGVuY2llcyBvbiAlczog MSA9ICVsbHVucywgJWx1ID0gJWxsdW5zXG4iLAo+ICAgCQkJZW5naW5lLT5uYW1lLAo+IEBAIC0x NTEsOCArMTQ5LDcgQEAgc3RhdGljIGludCBsaXZlX25vcF9zd2l0Y2godm9pZCAqYXJnKQo+ICAg CQkJcHJpbWUgLSAxLCBkaXY2NF91NjQoa3RpbWVfdG9fbnModGltZXNbMV0pLCBwcmltZSAtIDEp KTsKPiAgIAl9Cj4gICAKPiAtb3V0X3VubG9jazoKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gK291dF9maWxlOgo+ICAgCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZp bGUpOwo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gQEAgLTI1MywxMiArMjUwLDEwIEBAIHN0YXRp YyBpbnQgbGl2ZV9wYXJhbGxlbF9zd2l0Y2godm9pZCAqYXJnKQo+ICAgCWlmIChJU19FUlIoZmls ZSkpCj4gICAJCXJldHVybiBQVFJfRVJSKGZpbGUpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJY3R4ID0gbGl2ZV9jb250ZXh0KGk5MTUsIGZp bGUpOwo+ICAgCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4g LQkJZ290byBvdXRfbG9ja2VkOwo+ICsJCWdvdG8gb3V0X2ZpbGU7Cj4gICAJfQo+ICAgCj4gICAJ ZW5naW5lcyA9IGk5MTVfZ2VtX2NvbnRleHRfbG9ja19lbmdpbmVzKGN0eCk7Cj4gQEAgLTI2OCw3 ICsyNjMsNyBAQCBzdGF0aWMgaW50IGxpdmVfcGFyYWxsZWxfc3dpdGNoKHZvaWQgKmFyZykKPiAg IAlpZiAoIWRhdGEpIHsKPiAgIAkJaTkxNV9nZW1fY29udGV4dF91bmxvY2tfZW5naW5lcyhjdHgp Owo+ICAgCQllcnIgPSAtRU5PTUVNOwo+IC0JCWdvdG8gb3V0X2xvY2tlZDsKPiArCQlnb3RvIG91 dDsKPiAgIAl9Cj4gICAKPiAgIAltID0gMDsgLyogVXNlIHRoZSBmaXJzdCBjb250ZXh0IGFzIG91 ciB0ZW1wbGF0ZSBmb3IgdGhlIGVuZ2luZXMgKi8KPiBAQCAtMjc2LDcgKzI3MSw3IEBAIHN0YXRp YyBpbnQgbGl2ZV9wYXJhbGxlbF9zd2l0Y2godm9pZCAqYXJnKQo+ICAgCQllcnIgPSBpbnRlbF9j b250ZXh0X3BpbihjZSk7Cj4gICAJCWlmIChlcnIpIHsKPiAgIAkJCWk5MTVfZ2VtX2NvbnRleHRf dW5sb2NrX2VuZ2luZXMoY3R4KTsKPiAtCQkJZ290byBvdXRfbG9ja2VkOwo+ICsJCQlnb3RvIG91 dDsKPiAgIAkJfQo+ICAgCQlkYXRhW20rK10uY2VbMF0gPSBpbnRlbF9jb250ZXh0X2dldChjZSk7 Cj4gICAJfQo+IEBAIC0yODcsNyArMjgyLDcgQEAgc3RhdGljIGludCBsaXZlX3BhcmFsbGVsX3N3 aXRjaCh2b2lkICphcmcpCj4gICAJCWN0eCA9IGxpdmVfY29udGV4dChpOTE1LCBmaWxlKTsKPiAg IAkJaWYgKElTX0VSUihjdHgpKSB7Cj4gICAJCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4gLQkJCWdv dG8gb3V0X2xvY2tlZDsKPiArCQkJZ290byBvdXQ7Cj4gICAJCX0KPiAgIAo+ICAgCQlmb3IgKG0g PSAwOyBtIDwgY291bnQ7IG0rKykgewo+IEBAIC0yOTYsMjAgKzI5MSwxOCBAQCBzdGF0aWMgaW50 IGxpdmVfcGFyYWxsZWxfc3dpdGNoKHZvaWQgKmFyZykKPiAgIAo+ICAgCQkJY2UgPSBpbnRlbF9j b250ZXh0X2NyZWF0ZShjdHgsIGRhdGFbbV0uY2VbMF0tPmVuZ2luZSk7Cj4gICAJCQlpZiAoSVNf RVJSKGNlKSkKPiAtCQkJCWdvdG8gb3V0X2xvY2tlZDsKPiArCQkJCWdvdG8gb3V0Owo+ICAgCj4g ICAJCQllcnIgPSBpbnRlbF9jb250ZXh0X3BpbihjZSk7Cj4gICAJCQlpZiAoZXJyKSB7Cj4gICAJ CQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwo+IC0JCQkJZ290byBvdXRfbG9ja2VkOwo+ICsJCQkJ Z290byBvdXQ7Cj4gICAJCQl9Cj4gICAKPiAgIAkJCWRhdGFbbV0uY2Vbbl0gPSBjZTsKPiAgIAkJ fQo+ICAgCX0KPiAgIAo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCj4gICAJZm9yIChmbiA9IGZ1bmM7ICFlcnIgJiYgKmZuOyBmbisrKSB7Cj4gICAJCXN0cnVj dCBpZ3RfbGl2ZV90ZXN0IHQ7Cj4gICAJCWludCBuOwo+IEBAIC0zNTQsOCArMzQ3LDcgQEAgc3Rh dGljIGludCBsaXZlX3BhcmFsbGVsX3N3aXRjaCh2b2lkICphcmcpCj4gICAJCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJfQo+ICAgCj4gLQltdXRleF9sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtb3V0X2xvY2tlZDoKPiArb3V0Ogo+ICAgCWZvciAo biA9IDA7IG4gPCBjb3VudDsgbisrKSB7Cj4gICAJCWZvciAobSA9IDA7IG0gPCBBUlJBWV9TSVpF KGRhdGEtPmNlKTsgbSsrKSB7Cj4gICAJCQlpZiAoIWRhdGFbbl0uY2VbbV0pCj4gQEAgLTM2NSw4 ICszNTcsOCBAQCBzdGF0aWMgaW50IGxpdmVfcGFyYWxsZWxfc3dpdGNoKHZvaWQgKmFyZykKPiAg IAkJCWludGVsX2NvbnRleHRfcHV0KGRhdGFbbl0uY2VbbV0pOwo+ICAgCQl9Cj4gICAJfQo+IC0J bXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlrZnJlZShkYXRhKTsK PiArb3V0X2ZpbGU6Cj4gICAJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7Cj4gICAJcmV0dXJu IGVycjsKPiAgIH0KPiBAQCAtNjI2LDExICs2MTgsOSBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhl Yyh2b2lkICphcmcpCj4gICAJCWlmIChJU19FUlIoZmlsZSkpCj4gICAJCQlyZXR1cm4gUFRSX0VS UihmaWxlKTsKPiAgIAo+IC0JCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IC0KPiAgIAkJZXJyID0gaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19mdW5jX18sIGVu Z2luZS0+bmFtZSk7Cj4gICAJCWlmIChlcnIpCj4gLQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJ Z290byBvdXRfZmlsZTsKPiAgIAo+ICAgCQluY29udGV4dHMgPSAwOwo+ICAgCQluZHdvcmRzID0g MDsKPiBAQCAtNjQyLDcgKzYzMiw3IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFy ZykKPiAgIAkJCWN0eCA9IGtlcm5lbF9jb250ZXh0KGk5MTUpOwo+ICAgCQkJaWYgKElTX0VSUihj dHgpKSB7Cj4gICAJCQkJZXJyID0gUFRSX0VSUihjdHgpOwo+IC0JCQkJZ290byBvdXRfdW5sb2Nr Owo+ICsJCQkJZ290byBvdXRfZmlsZTsKPiAgIAkJCX0KPiAgIAo+ICAgCQkJY2UgPSBpOTE1X2dl bV9jb250ZXh0X2dldF9lbmdpbmUoY3R4LCBlbmdpbmUtPmxlZ2FjeV9pZHgpOwo+IEBAIC02NTQs NyArNjQ0LDcgQEAgc3RhdGljIGludCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgCQkJCQll cnIgPSBQVFJfRVJSKG9iaik7Cj4gICAJCQkJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKPiAgIAkJ CQkJa2VybmVsX2NvbnRleHRfY2xvc2UoY3R4KTsKPiAtCQkJCQlnb3RvIG91dF91bmxvY2s7Cj4g KwkJCQkJZ290byBvdXRfZmlsZTsKPiAgIAkJCQl9Cj4gICAJCQl9Cj4gICAKPiBAQCAtNjYzLDE3 ICs2NTMsMTggQEAgc3RhdGljIGludCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgCQkJCXBy X2VycigiRmFpbGVkIHRvIGZpbGwgZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRoIGdwdSAoJXMpIFtm dWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPiAgIAkJCQkgICAgICAgbmR3b3JkcywgZHcsIG1h eF9kd29yZHMob2JqKSwKPiAgIAkJCQkgICAgICAgZW5naW5lLT5uYW1lLAo+IC0JCQkJICAgICAg IHllc25vKCEhY3R4LT52bSksIGVycik7Cj4gKwkJCQkgICAgICAgeWVzbm8oISFyY3VfYWNjZXNz X3BvaW50ZXIoY3R4LT52bSkpLAo+ICsJCQkJICAgICAgIGVycik7Cj4gICAJCQkJaW50ZWxfY29u dGV4dF9wdXQoY2UpOwo+ICAgCQkJCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGN0eCk7Cj4gLQkJCQln b3RvIG91dF91bmxvY2s7Cj4gKwkJCQlnb3RvIG91dF9maWxlOwo+ICAgCQkJfQo+ICAgCj4gICAJ CQllcnIgPSB0aHJvdHRsZShjZSwgdHEsIEFSUkFZX1NJWkUodHEpKTsKPiAgIAkJCWlmIChlcnIp IHsKPiAgIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7Cj4gICAJCQkJa2VybmVsX2NvbnRleHRf Y2xvc2UoY3R4KTsKPiAtCQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJCWdvdG8gb3V0X2ZpbGU7 Cj4gICAJCQl9Cj4gICAKPiAgIAkJCWlmICgrK2R3ID09IG1heF9kd29yZHMob2JqKSkgewo+IEBA IC03MDMsMTEgKzY5NCwxMCBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCj4g ICAJCQlkdyArPSByZW07Cj4gICAJCX0KPiAgIAo+IC1vdXRfdW5sb2NrOgo+ICtvdXRfZmlsZToK PiAgIAkJdGhyb3R0bGVfcmVsZWFzZSh0cSwgQVJSQVlfU0laRSh0cSkpOwo+ICAgCQlpZiAoaWd0 X2xpdmVfdGVzdF9lbmQoJnQpKQo+ICAgCQkJZXJyID0gLUVJTzsKPiAtCQltdXRleF91bmxvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJCW1vY2tfZmlsZV9mcmVlKGk5MTUs IGZpbGUpOwo+ICAgCQlpZiAoZXJyKQo+IEBAIC03NDIsMjIgKzczMiwyMCBAQCBzdGF0aWMgaW50 IGlndF9zaGFyZWRfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgCWlmIChJU19FUlIoZmlsZSkpCj4g ICAJCXJldHVybiBQVFJfRVJSKGZpbGUpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCj4gICAJcGFyZW50ID0gbGl2ZV9jb250ZXh0KGk5MTUsIGZpbGUp Owo+ICAgCWlmIChJU19FUlIocGFyZW50KSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKHBhcmVudCk7 Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCWdvdG8gb3V0X2ZpbGU7Cj4gICAJfQo+ICAgCj4g ICAJaWYgKCFwYXJlbnQtPnZtKSB7IC8qIG5vdCBmdWxsLXBwZ3R0OyBub3RoaW5nIHRvIHNoYXJl ICovCj4gICAJCWVyciA9IDA7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCWdvdG8gb3V0X2Zp bGU7Cj4gICAJfQo+ICAgCj4gICAJZXJyID0gaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwg X19mdW5jX18sICIiKTsKPiAgIAlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiArCQln b3RvIG91dF9maWxlOwo+ICAgCj4gICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQp IHsKPiAgIAkJdW5zaWduZWQgbG9uZyBuY29udGV4dHMsIG5kd29yZHMsIGR3Owo+IEBAIC03ODEs NyArNzY5LDkgQEAgc3RhdGljIGludCBpZ3Rfc2hhcmVkX2N0eF9leGVjKHZvaWQgKmFyZykKPiAg IAkJCQlnb3RvIG91dF90ZXN0Owo+ICAgCQkJfQo+ICAgCj4gKwkJCW11dGV4X2xvY2soJmN0eC0+ bXV0ZXgpOwo+ICAgCQkJX19hc3NpZ25fcHBndHQoY3R4LCBwYXJlbnQtPnZtKTsKPiArCQkJbXV0 ZXhfdW5sb2NrKCZjdHgtPm11dGV4KTsKPiAgIAo+ICAgCQkJY2UgPSBpOTE1X2dlbV9jb250ZXh0 X2dldF9lbmdpbmUoY3R4LCBlbmdpbmUtPmxlZ2FjeV9pZHgpOwo+ICAgCQkJR0VNX0JVR19PTihJ U19FUlIoY2UpKTsKPiBAQCAtODAxLDcgKzc5MSw4IEBAIHN0YXRpYyBpbnQgaWd0X3NoYXJlZF9j dHhfZXhlYyh2b2lkICphcmcpCj4gICAJCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAl bHUgWyVsdS8lbHVdIHdpdGggZ3B1ICglcykgW2Z1bGwtcHBndHQ/ICVzXSwgZXJyPSVkXG4iLAo+ ICAgCQkJCSAgICAgICBuZHdvcmRzLCBkdywgbWF4X2R3b3JkcyhvYmopLAo+ICAgCQkJCSAgICAg ICBlbmdpbmUtPm5hbWUsCj4gLQkJCQkgICAgICAgeWVzbm8oISFjdHgtPnZtKSwgZXJyKTsKPiAr CQkJCSAgICAgICB5ZXNubyghIXJjdV9hY2Nlc3NfcG9pbnRlcihjdHgtPnZtKSksCj4gKwkJCQkg ICAgICAgZXJyKTsKPiAgIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7Cj4gICAJCQkJa2VybmVs X2NvbnRleHRfY2xvc2UoY3R4KTsKPiAgIAkJCQlnb3RvIG91dF90ZXN0Owo+IEBAIC04NDAsMTcg KzgzMSwxMyBAQCBzdGF0aWMgaW50IGlndF9zaGFyZWRfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAg CQkJZHcgKz0gcmVtOwo+ICAgCQl9Cj4gICAKPiAtCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICAgCQlpOTE1X2dlbV9kcmFpbl9mcmVlZF9vYmplY3RzKGk5MTUpOwo+ IC0JCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCX0KPiAgIG91dF90 ZXN0Ogo+ICAgCXRocm90dGxlX3JlbGVhc2UodHEsIEFSUkFZX1NJWkUodHEpKTsKPiAgIAlpZiAo aWd0X2xpdmVfdGVzdF9lbmQoJnQpKQo+ICAgCQllcnIgPSAtRUlPOwo+IC1vdXRfdW5sb2NrOgo+ IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gK291dF9maWxl Ogo+ICAgCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOwo+ICAgCXJldHVybiBlcnI7Cj4gICB9 Cj4gQEAgLTEyMjIsOCArMTIwOSw2IEBAIF9faWd0X2N0eF9zc2V1KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ICAgCWlmIChmbGFncyAmIFRFU1RfUkVTRVQpCj4gICAJCWlndF9nbG9i YWxfcmVzZXRfbG9jaygmaTkxNS0+Z3QpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCj4gICAJY3R4ID0gbGl2ZV9jb250ZXh0KGk5MTUsIGZpbGUpOwo+ ICAgCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQlyZXQgPSBQVFJfRVJSKGN0eCk7Cj4gQEAgLTEy NzgsOCArMTI2Myw2IEBAIF9faWd0X2N0eF9zc2V1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAgCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiAgIAo+ICAgb3V0X3VubG9jazoK PiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAgCWlmIChm bGFncyAmIFRFU1RfUkVTRVQpCj4gICAJCWlndF9nbG9iYWxfcmVzZXRfdW5sb2NrKCZpOTE1LT5n dCk7Cj4gICAKPiBAQCAtMTMzOSwyMyArMTMyMiwyNCBAQCBzdGF0aWMgaW50IGlndF9jdHhfcmVh ZG9ubHkodm9pZCAqYXJnKQo+ICAgCWlmIChJU19FUlIoZmlsZSkpCj4gICAJCXJldHVybiBQVFJf RVJSKGZpbGUpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCj4gICAJZXJyID0gaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19mdW5jX18sICIi KTsKPiAgIAlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiArCQlnb3RvIG91dF9maWxl Owo+ICAgCj4gICAJY3R4ID0gbGl2ZV9jb250ZXh0KGk5MTUsIGZpbGUpOwo+ICAgCWlmIChJU19F UlIoY3R4KSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4gLQkJZ290byBvdXRfdW5sb2Nr Owo+ICsJCWdvdG8gb3V0X2ZpbGU7Cj4gICAJfQo+ICAgCj4gLQl2bSA9IGN0eC0+dm0gPzogJmk5 MTUtPmdndHQuYWxpYXMtPnZtOwo+ICsJcmN1X3JlYWRfbG9jaygpOwo+ICsJdm0gPSByY3VfZGVy ZWZlcmVuY2UoY3R4LT52bSkgPzogJmk5MTUtPmdndHQuYWxpYXMtPnZtOwo+ICAgCWlmICghdm0g fHwgIXZtLT5oYXNfcmVhZF9vbmx5KSB7Cj4gKwkJcmN1X3JlYWRfdW5sb2NrKCk7Cj4gICAJCWVy ciA9IDA7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCWdvdG8gb3V0X2ZpbGU7Cj4gICAJfQo+ ICsJcmN1X3JlYWRfdW5sb2NrKCk7Cj4gICAKPiAgIAluZHdvcmRzID0gMDsKPiAgIAlkdyA9IDA7 Cj4gQEAgLTEzNzMsNyArMTM1Nyw3IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9yZWFkb25seSh2b2lk ICphcmcpCj4gICAJCQkJaWYgKElTX0VSUihvYmopKSB7Cj4gICAJCQkJCWVyciA9IFBUUl9FUlIo b2JqKTsKPiAgIAkJCQkJaTkxNV9nZW1fY29udGV4dF91bmxvY2tfZW5naW5lcyhjdHgpOwo+IC0J CQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJCQlnb3RvIG91dF9maWxlOwo+ICAgCQkJCX0KPiAg IAo+ICAgCQkJCWlmIChwcmFuZG9tX3UzMl9zdGF0ZSgmcHJuZykgJiAxKQo+IEBAIC0xMzg0LDE1 ICsxMzY4LDE3IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9yZWFkb25seSh2b2lkICphcmcpCj4gICAJ CQlpZiAoZXJyKSB7Cj4gICAJCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVs dS8lbHVdIHdpdGggZ3B1ICglcykgW2Z1bGwtcHBndHQ/ICVzXSwgZXJyPSVkXG4iLAo+ICAgCQkJ CSAgICAgICBuZHdvcmRzLCBkdywgbWF4X2R3b3JkcyhvYmopLAo+IC0JCQkJICAgICAgIGNlLT5l bmdpbmUtPm5hbWUsIHllc25vKCEhY3R4LT52bSksIGVycik7Cj4gKwkJCQkgICAgICAgY2UtPmVu Z2luZS0+bmFtZSwKPiArCQkJCSAgICAgICB5ZXNubyghIXJjdV9hY2Nlc3NfcG9pbnRlcihjdHgt PnZtKSksCj4gKwkJCQkgICAgICAgZXJyKTsKPiAgIAkJCQlpOTE1X2dlbV9jb250ZXh0X3VubG9j a19lbmdpbmVzKGN0eCk7Cj4gLQkJCQlnb3RvIG91dF91bmxvY2s7Cj4gKwkJCQlnb3RvIG91dF9m aWxlOwo+ICAgCQkJfQo+ICAgCj4gICAJCQllcnIgPSB0aHJvdHRsZShjZSwgdHEsIEFSUkFZX1NJ WkUodHEpKTsKPiAgIAkJCWlmIChlcnIpIHsKPiAgIAkJCQlpOTE1X2dlbV9jb250ZXh0X3VubG9j a19lbmdpbmVzKGN0eCk7Cj4gLQkJCQlnb3RvIG91dF91bmxvY2s7Cj4gKwkJCQlnb3RvIG91dF9m aWxlOwo+ICAgCQkJfQo+ICAgCj4gICAJCQlpZiAoKytkdyA9PSBtYXhfZHdvcmRzKG9iaikpIHsK PiBAQCAtMTQyNCwyMCArMTQxMCwxOSBAQCBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9p ZCAqYXJnKQo+ICAgCQlkdyArPSByZW07Cj4gICAJfQo+ICAgCj4gLW91dF91bmxvY2s6Cj4gK291 dF9maWxlOgo+ICAgCXRocm90dGxlX3JlbGVhc2UodHEsIEFSUkFZX1NJWkUodHEpKTsKPiAgIAlp ZiAoaWd0X2xpdmVfdGVzdF9lbmQoJnQpKQo+ICAgCQllcnIgPSAtRUlPOwo+IC0JbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAgCW1vY2tfZmlsZV9mcmVlKGk5 MTUsIGZpbGUpOwo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBjaGVj a19zY3JhdGNoKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHU2NCBvZmZzZXQpCj4gK3N0 YXRpYyBpbnQgY2hlY2tfc2NyYXRjaChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgdTY0 IG9mZnNldCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUgPQo+IC0JCV9fZHJt X21tX2ludGVydmFsX2ZpcnN0KCZjdHgtPnZtLT5tbSwKPiArCQlfX2RybV9tbV9pbnRlcnZhbF9m aXJzdCgmdm0tPm1tLAo+ICAgCQkJCQlvZmZzZXQsIG9mZnNldCArIHNpemVvZih1MzIpIC0gMSk7 Cj4gICAJaWYgKCFub2RlIHx8IG5vZGUtPnN0YXJ0ID4gb2Zmc2V0KQo+ICAgCQlyZXR1cm4gMDsK PiBAQCAtMTQ1NSw2ICsxNDQwLDcgQEAgc3RhdGljIGludCB3cml0ZV90b19zY3JhdGNoKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBjdHgtPmk5MTU7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ICAgCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxOwo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAgCXUzMiAqY21kOwo+IEBA IC0xNDg3LDE3ICsxNDczLDE4IEBAIHN0YXRpYyBpbnQgd3JpdGVfdG9fc2NyYXRjaChzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCj4gICAJaW50ZWxfZ3RfY2hpcHNldF9mbHVzaChl bmdpbmUtPmd0KTsKPiAgIAo+IC0Jdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCBjdHgtPnZt LCBOVUxMKTsKPiArCXZtID0gaTkxNV9nZW1fY29udGV4dF9nZXRfdm1fcmN1KGN0eCk7Cj4gKwl2 bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtLCBOVUxMKTsKPiAgIAlpZiAoSVNfRVJSKHZt YSkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUih2bWEpOwo+IC0JCWdvdG8gZXJyOwo+ICsJCWdvdG8g ZXJyX3ZtOwo+ICAgCX0KPiAgIAo+ICAgCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJ Tl9VU0VSIHwgUElOX09GRlNFVF9GSVhFRCk7Cj4gICAJaWYgKGVycikKPiAtCQlnb3RvIGVycjsK PiArCQlnb3RvIGVycl92bTsKPiAgIAo+IC0JZXJyID0gY2hlY2tfc2NyYXRjaChjdHgsIG9mZnNl dCk7Cj4gKwllcnIgPSBjaGVja19zY3JhdGNoKHZtLCBvZmZzZXQpOwo+ICAgCWlmIChlcnIpCj4g ICAJCWdvdG8gZXJyX3VucGluOwo+ICAgCj4gQEAgLTE1MjMsNiArMTUxMCw3IEBAIHN0YXRpYyBp bnQgd3JpdGVfdG9fc2NyYXRjaChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCj4g ICAJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gICAKPiArCWk5MTVfdm1fcHV0KHZtKTsKPiAgIAly ZXR1cm4gMDsKPiAgIAo+ICAgc2tpcF9yZXF1ZXN0Ogo+IEBAIC0xNTMxLDYgKzE1MTksOCBAQCBz dGF0aWMgaW50IHdyaXRlX3RvX3NjcmF0Y2goc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAgIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAgIGVycl91bnBpbjoKPiAgIAlpOTE1X3ZtYV91 bnBpbih2bWEpOwo+ICtlcnJfdm06Cj4gKwlpOTE1X3ZtX3B1dCh2bSk7Cj4gICBlcnI6Cj4gICAJ aTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICAgCXJldHVybiBlcnI7Cj4gQEAgLTE1NDIsNiAr MTUzMiw3IEBAIHN0YXRpYyBpbnQgcmVhZF9mcm9tX3NjcmF0Y2goc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0 eC0+aTkxNTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsJc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gICAJY29uc3QgdTMyIFJDU19HUFIwID0gMHgyNjAw OyAvKiBub3QgYWxsIGVuZ2luZXMgaGF2ZSB0aGVpciBvd24gR1BSISAqLwo+ICAgCWNvbnN0IHUz MiByZXN1bHQgPSAweDEwMDsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiBAQCAtMTU4 NiwxNyArMTU3NywxOCBAQCBzdGF0aWMgaW50IHJlYWRfZnJvbV9zY3JhdGNoKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgsCj4gICAKPiAgIAlpbnRlbF9ndF9jaGlwc2V0X2ZsdXNoKGVuZ2lu ZS0+Z3QpOwo+ICAgCj4gLQl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIGN0eC0+dm0sIE5V TEwpOwo+ICsJdm0gPSBpOTE1X2dlbV9jb250ZXh0X2dldF92bV9yY3UoY3R4KTsKPiArCXZtYSA9 IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgdm0sIE5VTEwpOwo+ICAgCWlmIChJU19FUlIodm1hKSkg ewo+ICAgCQllcnIgPSBQVFJfRVJSKHZtYSk7Cj4gLQkJZ290byBlcnI7Cj4gKwkJZ290byBlcnJf dm07Cj4gICAJfQo+ICAgCj4gICAJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwgUElOX1VT RVIgfCBQSU5fT0ZGU0VUX0ZJWEVEKTsKPiAgIAlpZiAoZXJyKQo+IC0JCWdvdG8gZXJyOwo+ICsJ CWdvdG8gZXJyX3ZtOwo+ICAgCj4gLQllcnIgPSBjaGVja19zY3JhdGNoKGN0eCwgb2Zmc2V0KTsK PiArCWVyciA9IGNoZWNrX3NjcmF0Y2godm0sIG9mZnNldCk7Cj4gICAJaWYgKGVycikKPiAgIAkJ Z290byBlcnJfdW5waW47Cj4gICAKPiBAQCAtMTYyNywxMiArMTYxOSwxMiBAQCBzdGF0aWMgaW50 IHJlYWRfZnJvbV9zY3JhdGNoKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJZXJy ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgZmFsc2UpOwo+ICAgCWk5 MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKPiAgIAlpZiAoZXJyKQo+IC0JCWdvdG8gZXJyOwo+ ICsJCWdvdG8gZXJyX3ZtOwo+ICAgCj4gICAJY21kID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAo b2JqLCBJOTE1X01BUF9XQik7Cj4gICAJaWYgKElTX0VSUihjbWQpKSB7Cj4gICAJCWVyciA9IFBU Ul9FUlIoY21kKTsKPiAtCQlnb3RvIGVycjsKPiArCQlnb3RvIGVycl92bTsKPiAgIAl9Cj4gICAK PiAgIAkqdmFsdWUgPSBjbWRbcmVzdWx0IC8gc2l6ZW9mKCpjbWQpXTsKPiBAQCAtMTY0Nyw2ICsx NjM5LDggQEAgc3RhdGljIGludCByZWFkX2Zyb21fc2NyYXRjaChzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAo+ICAgCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICAgZXJyX3VucGluOgo+ICAg CWk5MTVfdm1hX3VucGluKHZtYSk7Cj4gK2Vycl92bToKPiArCWk5MTVfdm1fcHV0KHZtKTsKPiAg IGVycjoKPiAgIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gICAJcmV0dXJuIGVycjsKPiBA QCAtMTY3NywyNyArMTY3MSwyNSBAQCBzdGF0aWMgaW50IGlndF92bV9pc29sYXRpb24odm9pZCAq YXJnKQo+ICAgCWlmIChJU19FUlIoZmlsZSkpCj4gICAJCXJldHVybiBQVFJfRVJSKGZpbGUpOwo+ ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJZXJy ID0gaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19mdW5jX18sICIiKTsKPiAgIAlpZiAo ZXJyKQo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiArCQlnb3RvIG91dF9maWxlOwo+ICAgCj4gICAJ Y3R4X2EgPSBsaXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7Cj4gICAJaWYgKElTX0VSUihjdHhfYSkp IHsKPiAgIAkJZXJyID0gUFRSX0VSUihjdHhfYSk7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ICsJ CWdvdG8gb3V0X2ZpbGU7Cj4gICAJfQo+ICAgCj4gICAJY3R4X2IgPSBsaXZlX2NvbnRleHQoaTkx NSwgZmlsZSk7Cj4gICAJaWYgKElTX0VSUihjdHhfYikpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihj dHhfYik7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCWdvdG8gb3V0X2ZpbGU7Cj4gICAJfQo+ ICAgCj4gICAJLyogV2UgY2FuIG9ubHkgdGVzdCB2bSBpc29sYXRpb24sIGlmIHRoZSB2bSBhcmUg ZGlzdGluY3QgKi8KPiAgIAlpZiAoY3R4X2EtPnZtID09IGN0eF9iLT52bSkKPiAtCQlnb3RvIG91 dF91bmxvY2s7Cj4gKwkJZ290byBvdXRfZmlsZTsKPiAgIAo+ICAgCXZtX3RvdGFsID0gY3R4X2Et PnZtLT50b3RhbDsKPiAgIAlHRU1fQlVHX09OKGN0eF9iLT52bS0+dG90YWwgIT0gdm1fdG90YWwp Owo+IEBAIC0xNzI2LDcgKzE3MTgsNyBAQCBzdGF0aWMgaW50IGlndF92bV9pc29sYXRpb24odm9p ZCAqYXJnKQo+ICAgCQkJCWVyciA9IHJlYWRfZnJvbV9zY3JhdGNoKGN0eF9iLCBlbmdpbmUsCj4g ICAJCQkJCQkJb2Zmc2V0LCAmdmFsdWUpOwo+ICAgCQkJaWYgKGVycikKPiAtCQkJCWdvdG8gb3V0 X3VubG9jazsKPiArCQkJCWdvdG8gb3V0X2ZpbGU7Cj4gICAKPiAgIAkJCWlmICh2YWx1ZSkgewo+ ICAgCQkJCXByX2VycigiJXM6IFJlYWQgJTA4eCBmcm9tIHNjcmF0Y2ggKG9mZnNldCAweCUwOHhf JTA4eCksIGFmdGVyICVsdSByZWFkcyFcbiIsCj4gQEAgLTE3MzUsNyArMTcyNyw3IEBAIHN0YXRp YyBpbnQgaWd0X3ZtX2lzb2xhdGlvbih2b2lkICphcmcpCj4gICAJCQkJICAgICAgIGxvd2VyXzMy X2JpdHMob2Zmc2V0KSwKPiAgIAkJCQkgICAgICAgdGhpcyk7Cj4gICAJCQkJZXJyID0gLUVJTlZB TDsKPiAtCQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJCWdvdG8gb3V0X2ZpbGU7Cj4gICAJCQl9 Cj4gICAKPiAgIAkJCXRoaXMrKzsKPiBAQCAtMTc0NSwxMSArMTczNyw5IEBAIHN0YXRpYyBpbnQg aWd0X3ZtX2lzb2xhdGlvbih2b2lkICphcmcpCj4gICAJcHJfaW5mbygiQ2hlY2tlZCAlbHUgc2Ny YXRjaCBvZmZzZXRzIGFjcm9zcyAlZCBlbmdpbmVzXG4iLAo+ICAgCQljb3VudCwgUlVOVElNRV9J TkZPKGk5MTUpLT5udW1fZW5naW5lcyk7Cj4gICAKPiAtb3V0X3VubG9jazoKPiArb3V0X2ZpbGU6 Cj4gICAJaWYgKGlndF9saXZlX3Rlc3RfZW5kKCZ0KSkKPiAgIAkJZXJyID0gLUVJTzsKPiAtCW11 dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAgCW1vY2tfZmlsZV9m cmVlKGk5MTUsIGZpbGUpOwo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gQEAgLTE3ODEsMTMgKzE3 NzEsOSBAQCBzdGF0aWMgaW50IG1vY2tfY29udGV4dF9iYXJyaWVyKHZvaWQgKmFyZykKPiAgIAkg KiBhIHJlcXVlc3Q7IHVzZWZ1bCBmb3IgcmV0aXJpbmcgb2xkIHN0YXRlIGFmdGVyIGxvYWRpbmcg bmV3Lgo+ICAgCSAqLwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCj4gICAJY3R4ID0gbW9ja19jb250ZXh0KGk5MTUsICJtb2NrIik7Cj4gLQlpZiAoIWN0 eCkgewo+IC0JCWVyciA9IC1FTk9NRU07Cj4gLQkJZ290byB1bmxvY2s7Cj4gLQl9Cj4gKwlpZiAo IWN0eCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAgIAo+ICAgCWNvdW50ZXIgPSAwOwo+ICAgCWVy ciA9IGNvbnRleHRfYmFycmllcl90YXNrKGN0eCwgMCwKPiBAQCAtMTg2MCw4ICsxODQ2LDYgQEAg c3RhdGljIGludCBtb2NrX2NvbnRleHRfYmFycmllcih2b2lkICphcmcpCj4gICAKPiAgIG91dDoK PiAgIAltb2NrX2NvbnRleHRfY2xvc2UoY3R4KTsKPiAtdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgI3VuZGVmIHBy X2ZtdAo+ICAgI2RlZmluZSBwcl9mbXQoeCkgeAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vc2VsZnRlc3RzL21vY2tfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+IGluZGV4IDAxMDRmMTZiMTMyNy4uNzRk ZGQ2ODJjOWNkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVz dHMvbW9ja19jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRl c3RzL21vY2tfY29udGV4dC5jCj4gQEAgLTQyLDcgKzQyLDEwIEBAIG1vY2tfY29udGV4dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJaWYgKCFwcGd0dCkKPiAgIAkJCWdvdG8g ZXJyX3B1dDsKPiAgIAo+ICsJCW11dGV4X2xvY2soJmN0eC0+bXV0ZXgpOwo+ICAgCQlfX3NldF9w cGd0dChjdHgsICZwcGd0dC0+dm0pOwo+ICsJCW11dGV4X3VubG9jaygmY3R4LT5tdXRleCk7Cj4g Kwo+ICAgCQlpOTE1X3ZtX3B1dCgmcHBndHQtPnZtKTsKPiAgIAl9Cj4gICAKPiBAQCAtNjUsNyAr NjgsNyBAQCB2b2lkIG1vY2tfY29udGV4dF9jbG9zZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4KQo+ICAgCj4gICB2b2lkIG1vY2tfaW5pdF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAgIHsKPiAtCWluaXRfY29udGV4dHMoaTkxNSk7Cj4gKwlpbml0X2NvbnRl eHRzKCZpOTE1LT5nZW0uY29udGV4dHMpOwo+ICAgfQo+ICAgCj4gICBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqCj4gQEAgLTc0LDggKzc3LDYgQEAgbGl2ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gICAJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eDsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gLQlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJY3R4ID0gaTkxNV9nZW1fY3Jl YXRlX2NvbnRleHQoaTkxNSwgMCk7Cj4gICAJaWYgKElTX0VSUihjdHgpKQo+ICAgCQlyZXR1cm4g Y3R4Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKPiBpbmRleCAzNWE0 MGMyODIwYTIuLmJlMzRkOTdhYzE4ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9jb250ZXh0LmMKPiBAQCAtMjIxLDEyICsyMjEsMjAgQEAgaW50ZWxfY29udGV4dF9pbml0KHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgIAkJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKPiAgIAkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICsJ c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gKwo+ICAgCUdFTV9CVUdfT04oIWVuZ2lu ZS0+Y29wcyk7Cj4gICAKPiAgIAlrcmVmX2luaXQoJmNlLT5yZWYpOwo+ICAgCj4gICAJY2UtPmdl bV9jb250ZXh0ID0gY3R4Owo+IC0JY2UtPnZtID0gaTkxNV92bV9nZXQoY3R4LT52bSA/OiAmZW5n aW5lLT5ndC0+Z2d0dC0+dm0pOwo+ICsJcmN1X3JlYWRfbG9jaygpOwo+ICsJdm0gPSByY3VfZGVy ZWZlcmVuY2UoY3R4LT52bSk7Cj4gKwlpZiAodm0pCj4gKwkJY2UtPnZtID0gaTkxNV92bV9nZXQo dm0pOwo+ICsJZWxzZQo+ICsJCWNlLT52bSA9IGk5MTVfdm1fZ2V0KCZlbmdpbmUtPmd0LT5nZ3R0 LT52bSk7Cj4gKwlyY3VfcmVhZF91bmxvY2soKTsKPiAgIAlpZiAoY3R4LT50aW1lbGluZSkKPiAg IAkJY2UtPnRpbWVsaW5lID0gaW50ZWxfdGltZWxpbmVfZ2V0KGN0eC0+dGltZWxpbmUpOwo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBpbmRleCA0Njg0MzhmYjQ3YWYuLjQ3 MWMyM2QwY2ZmYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9s cmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gQEAgLTk4 MSw2ICs5ODEsMTEgQEAgX19leGVjbGlzdHNfc2NoZWR1bGVfaW4oc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCj4gICAJCWNlLT5scmNfZGVzYyB8PQo+ICAgCQkJKHU2NCkoZW5naW5lLT5jb250ZXh0 X3RhZysrICUgTlVNX0NPTlRFWFRfVEFHKSA8PAo+ICAgCQkJR0VOMTFfU1dfQ1RYX0lEX1NISUZU Owo+ICsKPiArI2RlZmluZSBHRU4xMV9NQVhfQ09OVEVYVF9IV19JRCAoMTw8MTEpIC8qIGV4Y2x1 c2l2ZSAqLwo+ICsvKiBpbiBHZW4xMiBJRCAweDdGRiBpcyByZXNlcnZlZCB0byBpbmRpY2F0ZSBp ZGxlICovCj4gKyNkZWZpbmUgR0VOMTJfTUFYX0NPTlRFWFRfSFdfSUQgICAgICAgIChHRU4xMV9N QVhfQ09OVEVYVF9IV19JRCAtIDEpCj4gKwo+ICAgCQlCVUlMRF9CVUdfT04oTlVNX0NPTlRFWFRf VEFHID4gR0VOMTJfTUFYX0NPTlRFWFRfSFdfSUQpOwo+ICAgCX0KPiAgIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMKPiBpbmRleCA4NmNmZmJiMGE5Y2IuLjdj ODM4YTU3ZTE3NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250 ZXh0LmMKPiBAQCAtMTU1LDEzICsxNTUsOSBAQCBzdGF0aWMgaW50IGxpdmVfY29udGV4dF9zaXpl KHZvaWQgKmFyZykKPiAgIAkgKiBIVyB0cmllcyB0byB3cml0ZSBwYXN0IHRoZSBlbmQgb2Ygb25l Lgo+ICAgCSAqLwo+ICAgCj4gLQltdXRleF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gLQo+ICAgCWZpeG1lID0ga2VybmVsX2NvbnRleHQoZ3QtPmk5MTUpOwo+IC0JaWYgKElT X0VSUihmaXhtZSkpIHsKPiAtCQllcnIgPSBQVFJfRVJSKGZpeG1lKTsKPiAtCQlnb3RvIHVubG9j azsKPiAtCX0KPiArCWlmIChJU19FUlIoZml4bWUpKQo+ICsJCXJldHVybiBQVFJfRVJSKGZpeG1l KTsKPiAgIAo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LT5pOTE1LCBpZCkgewo+ICAg CQlzdHJ1Y3Qgewo+IEBAIC0yMDEsOCArMTk3LDYgQEAgc3RhdGljIGludCBsaXZlX2NvbnRleHRf c2l6ZSh2b2lkICphcmcpCj4gICAJfQo+ICAgCj4gICAJa2VybmVsX2NvbnRleHRfY2xvc2UoZml4 bWUpOwo+IC11bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmd0LT5pOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTMwNSwxMiArMjk5LDEwIEBA IHN0YXRpYyBpbnQgbGl2ZV9hY3RpdmVfY29udGV4dCh2b2lkICphcmcpCj4gICAJaWYgKElTX0VS UihmaWxlKSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4gICAKPiAtCW11dGV4X2xvY2so Jmd0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJZml4bWUgPSBsaXZlX2NvbnRl eHQoZ3QtPmk5MTUsIGZpbGUpOwo+ICAgCWlmIChJU19FUlIoZml4bWUpKSB7Cj4gICAJCWVyciA9 IFBUUl9FUlIoZml4bWUpOwo+IC0JCWdvdG8gdW5sb2NrOwo+ICsJCWdvdG8gb3V0X2ZpbGU7Cj4g ICAJfQo+ICAgCj4gICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QtPmk5MTUsIGlkKSB7Cj4g QEAgLTMyMyw4ICszMTUsNyBAQCBzdGF0aWMgaW50IGxpdmVfYWN0aXZlX2NvbnRleHQodm9pZCAq YXJnKQo+ICAgCQkJYnJlYWs7Cj4gICAJfQo+ICAgCj4gLXVubG9jazoKPiAtCW11dGV4X3VubG9j aygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICtvdXRfZmlsZToKPiAgIAltb2NrX2Zp bGVfZnJlZShndC0+aTkxNSwgZmlsZSk7Cj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiBAQCAtNDE4 LDEyICs0MDksMTAgQEAgc3RhdGljIGludCBsaXZlX3JlbW90ZV9jb250ZXh0KHZvaWQgKmFyZykK PiAgIAlpZiAoSVNfRVJSKGZpbGUpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKPiAgIAo+ IC0JbXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlmaXht ZSA9IGxpdmVfY29udGV4dChndC0+aTkxNSwgZmlsZSk7Cj4gICAJaWYgKElTX0VSUihmaXhtZSkp IHsKPiAgIAkJZXJyID0gUFRSX0VSUihmaXhtZSk7Cj4gLQkJZ290byB1bmxvY2s7Cj4gKwkJZ290 byBvdXRfZmlsZTsKPiAgIAl9Cj4gICAKPiAgIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndC0+ aTkxNSwgaWQpIHsKPiBAQCAtNDM2LDggKzQyNSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9yZW1vdGVf Y29udGV4dCh2b2lkICphcmcpCj4gICAJCQlicmVhazsKPiAgIAl9Cj4gICAKPiAtdW5sb2NrOgo+ IC0JbXV0ZXhfdW5sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gK291dF9maWxl Ogo+ICAgCW1vY2tfZmlsZV9mcmVlKGd0LT5pOTE1LCBmaWxlKTsKPiAgIAlyZXR1cm4gZXJyOwo+ ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5n Y2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCj4g aW5kZXggZmZiYjNkMjNiODg3Li5lOGE0MGRmNzliZDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYwo+IEBAIC01OCw5ICs1OCw3IEBAIHN0YXRp YyBpbnQgaGFuZ19pbml0KHN0cnVjdCBoYW5nICpoLCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICAg CW1lbXNldChoLCAwLCBzaXplb2YoKmgpKTsKPiAgIAloLT5ndCA9IGd0Owo+ICAgCj4gLQltdXRl eF9sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJaC0+Y3R4ID0ga2VybmVs X2NvbnRleHQoZ3QtPmk5MTUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gICAJaWYgKElTX0VSUihoLT5jdHgpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUiho LT5jdHgpOwo+ICAgCj4gQEAgLTEzMyw3ICsxMzEsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcmVx dWVzdCAqCj4gICBoYW5nX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCBoYW5nICpoLCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2d0ICpndCA9IGgt Pmd0Owo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSBoLT5jdHgtPnZtID86ICZl bmdpbmUtPmd0LT5nZ3R0LT52bTsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0g aTkxNV9nZW1fY29udGV4dF9nZXRfdm1fcmN1KGgtPmN0eCk7Cj4gICAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7Cj4g ICAJc3RydWN0IGk5MTVfdm1hICpod3MsICp2bWE7Cj4gQEAgLTE0MywxMiArMTQxLDE1IEBAIGhh bmdfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGhhbmcgKmgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIAlpbnQgZXJyOwo+ICAgCj4gICAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9pbnRlcm5hbChndC0+aTkxNSwgUEFHRV9TSVpFKTsKPiAtCWlmIChJU19FUlIob2JqKSkK PiArCWlmIChJU19FUlIob2JqKSkgewo+ICsJCWk5MTVfdm1fcHV0KHZtKTsKPiAgIAkJcmV0dXJu IEVSUl9DQVNUKG9iaik7Cj4gKwl9Cj4gICAKPiAgIAl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9w aW5fbWFwKG9iaiwgaTkxNV9jb2hlcmVudF9tYXBfdHlwZShndC0+aTkxNSkpOwo+ICAgCWlmIChJ U19FUlIodmFkZHIpKSB7Cj4gICAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiArCQlpOTE1 X3ZtX3B1dCh2bSk7Cj4gICAJCXJldHVybiBFUlJfQ0FTVCh2YWRkcik7Cj4gICAJfQo+ICAgCj4g QEAgLTE1OSwxNiArMTYwLDIyIEBAIGhhbmdfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGhhbmcgKmgs IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAloLT5iYXRjaCA9IHZhZGRyOwo+ ICAgCj4gICAJdm1hID0gaTkxNV92bWFfaW5zdGFuY2UoaC0+b2JqLCB2bSwgTlVMTCk7Cj4gLQlp ZiAoSVNfRVJSKHZtYSkpCj4gKwlpZiAoSVNfRVJSKHZtYSkpIHsKPiArCQlpOTE1X3ZtX3B1dCh2 bSk7Cj4gICAJCXJldHVybiBFUlJfQ0FTVCh2bWEpOwo+ICsJfQo+ICAgCj4gICAJaHdzID0gaTkx NV92bWFfaW5zdGFuY2UoaC0+aHdzLCB2bSwgTlVMTCk7Cj4gLQlpZiAoSVNfRVJSKGh3cykpCj4g KwlpZiAoSVNfRVJSKGh3cykpIHsKPiArCQlpOTE1X3ZtX3B1dCh2bSk7Cj4gICAJCXJldHVybiBF UlJfQ0FTVChod3MpOwo+ICsJfQo+ICAgCj4gICAJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwg MCwgUElOX1VTRVIpOwo+IC0JaWYgKGVycikKPiArCWlmIChlcnIpIHsKPiArCQlpOTE1X3ZtX3B1 dCh2bSk7Cj4gICAJCXJldHVybiBFUlJfUFRSKGVycik7Cj4gKwl9Cj4gICAKPiAgIAllcnIgPSBp OTE1X3ZtYV9waW4oaHdzLCAwLCAwLCBQSU5fVVNFUik7Cj4gICAJaWYgKGVycikKPiBAQCAtMjY2 LDYgKzI3Myw3IEBAIGhhbmdfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGhhbmcgKmgsIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpOTE1X3ZtYV91bnBpbihod3MpOwo+ICAgdW5w aW5fdm1hOgo+ICAgCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4gKwlpOTE1X3ZtX3B1dCh2bSk7Cj4g ICAJcmV0dXJuIGVyciA/IEVSUl9QVFIoZXJyKSA6IHJxOwo+ICAgfQo+ICAgCj4gQEAgLTM4Miw5 ICszOTAsNyBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9ub3Aodm9pZCAqYXJnKQo+ICAgCWlmIChJ U19FUlIoZmlsZSkpCj4gICAJCXJldHVybiBQVFJfRVJSKGZpbGUpOwo+ICAgCj4gLQltdXRleF9s b2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJY3R4ID0gbGl2ZV9jb250ZXh0 KGd0LT5pOTE1LCBmaWxlKTsKPiAtCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICAgCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKGN0eCk7 Cj4gICAJCWdvdG8gb3V0Owo+IEBAIC00NTgsOSArNDY0LDcgQEAgc3RhdGljIGludCBpZ3RfcmVz ZXRfbm9wX2VuZ2luZSh2b2lkICphcmcpCj4gICAJaWYgKElTX0VSUihmaWxlKSkKPiAgIAkJcmV0 dXJuIFBUUl9FUlIoZmlsZSk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmd0LT5pOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAgIAljdHggPSBsaXZlX2NvbnRleHQoZ3QtPmk5MTUsIGZpbGUpOwo+IC0J bXV0ZXhfdW5sb2NrKCZndC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJaWYgKElTX0VS UihjdHgpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIoY3R4KTsKPiAgIAkJZ290byBvdXQ7Cj4gQEAg LTcwNSw5ICs3MDksNyBAQCBzdGF0aWMgaW50IGFjdGl2ZV9lbmdpbmUodm9pZCAqZGF0YSkKPiAg IAkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4gICAKPiAgIAlmb3IgKGNvdW50ID0gMDsgY291bnQg PCBBUlJBWV9TSVpFKGN0eCk7IGNvdW50KyspIHsKPiAtCQltdXRleF9sb2NrKCZlbmdpbmUtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCQljdHhbY291bnRdID0gbGl2ZV9jb250ZXh0KGVu Z2luZS0+aTkxNSwgZmlsZSk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZlbmdpbmUtPmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICAgCQlpZiAoSVNfRVJSKGN0eFtjb3VudF0pKSB7Cj4gICAJCQllcnIg PSBQVFJfRVJSKGN0eFtjb3VudF0pOwo+ICAgCQkJd2hpbGUgKC0tY291bnQpCj4gQEAgLTEyOTEs NiArMTI5Myw3IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X2V2aWN0X3BwZ3R0KHZvaWQgKmFyZykK PiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOwo+ICAgCXN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHg7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKPiAgIAlz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gICAJaW50IGVycjsKPiAgIAo+IEBAIC0xMjk4LDE4ICsx MzAxLDIwIEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X2V2aWN0X3BwZ3R0KHZvaWQgKmFyZykKPiAg IAlpZiAoSVNfRVJSKGZpbGUpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKPiAgIAo+IC0J bXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWN0eCA9IGxpdmVf Y29udGV4dChndC0+aTkxNSwgZmlsZSk7Cj4gLQltdXRleF91bmxvY2soJmd0LT5pOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgIAlpZiAoSVNfRVJSKGN0eCkpIHsKPiAgIAkJZXJyID0gUFRSX0VS UihjdHgpOwo+ICAgCQlnb3RvIG91dDsKPiAgIAl9Cj4gICAKPiAgIAllcnIgPSAwOwo+IC0JaWYg KGN0eC0+dm0pIC8qIGFsaWFzaW5nID09IGdsb2JhbCBndHQgbG9ja2luZywgY292ZXJlZCBhYm92 ZSAqLwo+IC0JCWVyciA9IF9faWd0X3Jlc2V0X2V2aWN0X3ZtYShndCwgY3R4LT52bSwKPiArCXZt ID0gaTkxNV9nZW1fY29udGV4dF9nZXRfdm1fcmN1KGN0eCk7Cj4gKwlpZiAoIWk5MTVfaXNfZ2d0 dCh2bSkpIHsKPiArCQkvKiBhbGlhc2luZyA9PSBnbG9iYWwgZ3R0IGxvY2tpbmcsIGNvdmVyZWQg YWJvdmUgKi8KPiArCQllcnIgPSBfX2lndF9yZXNldF9ldmljdF92bWEoZ3QsIHZtLAo+ICAgCQkJ CQkgICAgZXZpY3Rfdm1hLCBFWEVDX09CSkVDVF9XUklURSk7Cj4gKwl9Cj4gKwlpOTE1X3ZtX3B1 dCh2bSk7Cj4gICAKPiAgIG91dDoKPiAgIAltb2NrX2ZpbGVfZnJlZShndC0+aTkxNSwgZmlsZSk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPiBpbmRleCAwNGMxY2Y1NzM2 NDIuLjhkYzQyYzVjNzU2OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xy Yy5jCj4gQEAgLTE2MzEsNyArMTYzMSwxMSBAQCBzdGF0aWMgaW50IHNtb2tlX3N1Ym1pdChzdHJ1 Y3QgcHJlZW1wdF9zbW9rZSAqc21va2UsCj4gICAJaW50IGVyciA9IDA7Cj4gICAKPiAgIAlpZiAo YmF0Y2gpIHsKPiAtCQl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShiYXRjaCwgY3R4LT52bSwgTlVM TCk7Cj4gKwkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gKwo+ICsJCXZtID0gaTkx NV9nZW1fY29udGV4dF9nZXRfdm1fcmN1KGN0eCk7Cj4gKwkJdm1hID0gaTkxNV92bWFfaW5zdGFu Y2UoYmF0Y2gsIHZtLCBOVUxMKTsKPiArCQlpOTE1X3ZtX3B1dCh2bSk7Cj4gICAJCWlmIChJU19F UlIodm1hKSkKPiAgIAkJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKPiBpbmRleCA0ZWUyZTJiYWJk MGQuLjdjN2FjZWI4NWE3NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3Rfd29ya2Fyb3VuZHMuYwo+IEBAIC0yNjAsNyArMjYwLDYgQEAgc3dpdGNoX3RvX3NjcmF0 Y2hfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCXJxID0gaWd0 X3NwaW5uZXJfY3JlYXRlX3JlcXVlc3Qoc3BpbiwgY2UsIE1JX05PT1ApOwo+ICAgCj4gICAJaW50 ZWxfY29udGV4dF9wdXQoY2UpOwo+IC0Ja2VybmVsX2NvbnRleHRfY2xvc2UoY3R4KTsKPiAgIAo+ ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCXNwaW4gPSBOVUxMOwo+IEBAIC0yNzksNiArMjc4 LDcgQEAgc3dpdGNoX3RvX3NjcmF0Y2hfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4gICAJaWYgKGVyciAmJiBzcGluKQo+ICAgCQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7 Cj4gICAKPiArCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGN0eCk7Cj4gICAJcmV0dXJuIGVycjsKPiAg IH0KPiAgIAo+IEBAIC0zNTUsNiArMzU1LDcgQEAgc3RhdGljIGludCBjaGVja193aGl0ZWxpc3Rf YWNyb3NzX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIHN0YXRpYyBz dHJ1Y3QgaTkxNV92bWEgKmNyZWF0ZV9iYXRjaChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwlzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAlp bnQgZXJyOwo+ICAgCj4gQEAgLTM2Miw3ICszNjMsOSBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1h ICpjcmVhdGVfYmF0Y2goc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAlpZiAoSVNf RVJSKG9iaikpCj4gICAJCXJldHVybiBFUlJfQ0FTVChvYmopOwo+ICAgCj4gLQl2bWEgPSBpOTE1 X3ZtYV9pbnN0YW5jZShvYmosIGN0eC0+dm0sIE5VTEwpOwo+ICsJdm0gPSBpOTE1X2dlbV9jb250 ZXh0X2dldF92bV9yY3UoY3R4KTsKPiArCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgdm0s IE5VTEwpOwo+ICsJaTkxNV92bV9wdXQodm0pOwo+ICAgCWlmIChJU19FUlIodm1hKSkgewo+ICAg CQllcnIgPSBQVFJfRVJSKHZtYSk7Cj4gICAJCWdvdG8gZXJyX29iajsKPiBAQCAtNDYzLDEyICs0 NjYsMTUgQEAgc3RhdGljIGludCBjaGVja19kaXJ0eV93aGl0ZWxpc3Qoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKPiAgIAkJMHhmZmZmMDBmZiwKPiAgIAkJMHhmZmZmZmZmZiwKPiAgIAl9 Owo+ICsJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gICAJc3RydWN0IGk5MTVfdm1h ICpzY3JhdGNoOwo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqYmF0Y2g7Cj4gICAJaW50IGVyciA9IDAs IGksIHY7Cj4gICAJdTMyICpjcywgKnJlc3VsdHM7Cj4gICAKPiAtCXNjcmF0Y2ggPSBjcmVhdGVf c2NyYXRjaChjdHgtPnZtLCAyICogQVJSQVlfU0laRSh2YWx1ZXMpICsgMSk7Cj4gKwl2bSA9IGk5 MTVfZ2VtX2NvbnRleHRfZ2V0X3ZtX3JjdShjdHgpOwo+ICsJc2NyYXRjaCA9IGNyZWF0ZV9zY3Jh dGNoKHZtLCAyICogQVJSQVlfU0laRSh2YWx1ZXMpICsgMSk7Cj4gKwlpOTE1X3ZtX3B1dCh2bSk7 Cj4gICAJaWYgKElTX0VSUihzY3JhdGNoKSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIoc2NyYXRjaCk7 Cj4gICAKPiBAQCAtMTAxMCw2ICsxMDE2LDcgQEAgc3RhdGljIGludCBsaXZlX2lzb2xhdGVkX3do aXRlbGlzdCh2b2lkICphcmcpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUoY2xpZW50KTsgaSsrKSB7Cj4gKwkJc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm07Cj4gICAJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjOwo+ICAgCj4gICAJCWMg PSBrZXJuZWxfY29udGV4dChpOTE1KTsKPiBAQCAtMTAxOCwyMiArMTAyNSwyNyBAQCBzdGF0aWMg aW50IGxpdmVfaXNvbGF0ZWRfd2hpdGVsaXN0KHZvaWQgKmFyZykKPiAgIAkJCWdvdG8gZXJyOwo+ ICAgCQl9Cj4gICAKPiAtCQljbGllbnRbaV0uc2NyYXRjaFswXSA9IGNyZWF0ZV9zY3JhdGNoKGMt PnZtLCAxMDI0KTsKPiArCQl2bSA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0X3ZtX3JjdShjKTsKPiAr Cj4gKwkJY2xpZW50W2ldLnNjcmF0Y2hbMF0gPSBjcmVhdGVfc2NyYXRjaCh2bSwgMTAyNCk7Cj4g ICAJCWlmIChJU19FUlIoY2xpZW50W2ldLnNjcmF0Y2hbMF0pKSB7Cj4gICAJCQllcnIgPSBQVFJf RVJSKGNsaWVudFtpXS5zY3JhdGNoWzBdKTsKPiArCQkJaTkxNV92bV9wdXQodm0pOwo+ICAgCQkJ a2VybmVsX2NvbnRleHRfY2xvc2UoYyk7Cj4gICAJCQlnb3RvIGVycjsKPiAgIAkJfQo+ICAgCj4g LQkJY2xpZW50W2ldLnNjcmF0Y2hbMV0gPSBjcmVhdGVfc2NyYXRjaChjLT52bSwgMTAyNCk7Cj4g KwkJY2xpZW50W2ldLnNjcmF0Y2hbMV0gPSBjcmVhdGVfc2NyYXRjaCh2bSwgMTAyNCk7Cj4gICAJ CWlmIChJU19FUlIoY2xpZW50W2ldLnNjcmF0Y2hbMV0pKSB7Cj4gICAJCQllcnIgPSBQVFJfRVJS KGNsaWVudFtpXS5zY3JhdGNoWzFdKTsKPiAgIAkJCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNl KCZjbGllbnRbaV0uc2NyYXRjaFswXSwgMCk7Cj4gKwkJCWk5MTVfdm1fcHV0KHZtKTsKPiAgIAkJ CWtlcm5lbF9jb250ZXh0X2Nsb3NlKGMpOwo+ICAgCQkJZ290byBlcnI7Cj4gICAJCX0KPiAgIAo+ ICAgCQljbGllbnRbaV0uY3R4ID0gYzsKPiArCQlpOTE1X3ZtX3B1dCh2bSk7Cj4gICAJfQo+ICAg Cj4gICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L3NjaGVkdWxlci5jCj4gaW5kZXggMDNmNTY3MDg0NTQ4Li42ODUwZjFmNDAyNDEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gQEAgLTM2NSw3ICszNjUsOCBA QCBzdGF0aWMgdm9pZCBzZXRfY29udGV4dF9wcGd0dF9mcm9tX3NoYWRvdyhzdHJ1Y3QgaW50ZWxf dmdwdV93b3JrbG9hZCAqd29ya2xvYWQsCj4gICAJCQkJCSAgc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfdmdwdV9tbSAqbW0gPSB3b3JrbG9hZC0+ c2hhZG93X21tOwo+IC0Jc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0ID0gaTkxNV92bV90b19wcGd0 dChjdHgtPnZtKTsKPiArCXN0cnVjdCBpOTE1X3BwZ3R0ICpwcGd0dCA9Cj4gKwkJaTkxNV92bV90 b19wcGd0dChpOTE1X2dlbV9jb250ZXh0X2dldF92bV9yY3UoY3R4KSk7Cj4gICAJaW50IGkgPSAw Owo+ICAgCj4gICAJaWYgKG1tLT5wcGd0dF9tbS5yb290X2VudHJ5X3R5cGUgPT0gR1RUX1RZUEVf UFBHVFRfUk9PVF9MNF9FTlRSWSkgewo+IEBAIC0zNzgsNiArMzc5LDggQEAgc3RhdGljIHZvaWQg c2V0X2NvbnRleHRfcHBndHRfZnJvbV9zaGFkb3coc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQg Kndvcmtsb2FkLAo+ICAgCQkJcHhfZG1hKHBkKSA9IG1tLT5wcGd0dF9tbS5zaGFkb3dfcGRwc1tp XTsKPiAgIAkJfQo+ICAgCX0KPiArCj4gKwlpOTE1X3ZtX3B1dCgmcHBndHQtPnZtKTsKPiAgIH0K PiAgIAo+ICAgc3RhdGljIGludAo+IEBAIC0xMjMwLDIwICsxMjMzLDE4IEBAIGludCBpbnRlbF92 Z3B1X3NldHVwX3N1Ym1pc3Npb24oc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4gICAJc3RydWN0 IGludGVsX3ZncHVfc3VibWlzc2lvbiAqcyA9ICZ2Z3B1LT5zdWJtaXNzaW9uOwo+ICAgCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4Owo+ICsJc3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0Owo+ICAgCWVudW0gaW50ZWxfZW5naW5l X2lkIGk7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gLQo+ICAgCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2tlcm5lbChp OTE1LCBJOTE1X1BSSU9SSVRZX01BWCk7Cj4gLQlpZiAoSVNfRVJSKGN0eCkpIHsKPiAtCQlyZXQg PSBQVFJfRVJSKGN0eCk7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+IC0JfQo+ICsJaWYgKElTX0VS UihjdHgpKQo+ICsJCXJldHVybiBQVFJfRVJSKGN0eCk7Cj4gICAKPiAgIAlpOTE1X2dlbV9jb250 ZXh0X3NldF9mb3JjZV9zaW5nbGVfc3VibWlzc2lvbihjdHgpOwo+ICAgCj4gLQlpOTE1X2NvbnRl eHRfcHBndHRfcm9vdF9zYXZlKHMsIGk5MTVfdm1fdG9fcHBndHQoY3R4LT52bSkpOwo+ICsJcHBn dHQgPSBpOTE1X3ZtX3RvX3BwZ3R0KGk5MTVfZ2VtX2NvbnRleHRfZ2V0X3ZtX3JjdShjdHgpKTsK PiArCWk5MTVfY29udGV4dF9wcGd0dF9yb290X3NhdmUocywgcHBndHQpOwo+ICAgCj4gICAJZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaSkgewo+ICAgCQlzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2U7Cj4gQEAgLTEyODgsMTIgKzEyODksMTIgQEAgaW50IGludGVsX3ZncHVfc2V0dXBfc3Vi bWlzc2lvbihzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKPiAgIAlhdG9taWNfc2V0KCZzLT5ydW5u aW5nX3dvcmtsb2FkX251bSwgMCk7Cj4gICAJYml0bWFwX3plcm8ocy0+dGxiX2hhbmRsZV9wZW5k aW5nLCBJOTE1X05VTV9FTkdJTkVTKTsKPiAgIAo+ICsJaTkxNV92bV9wdXQoJnBwZ3R0LT52bSk7 Cj4gICAJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJcmV0dXJuIDA7Cj4gICAKPiAgIG91dF9zaGFkb3dfY3R4 Ogo+IC0JaTkxNV9jb250ZXh0X3BwZ3R0X3Jvb3RfcmVzdG9yZShzLCBpOTE1X3ZtX3RvX3BwZ3R0 KGN0eC0+dm0pKTsKPiArCWk5MTVfY29udGV4dF9wcGd0dF9yb290X3Jlc3RvcmUocywgcHBndHQp Owo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGkpIHsKPiAgIAkJaWYgKElTX0VS UihzLT5zaGFkb3dbaV0pKQo+ICAgCQkJYnJlYWs7Cj4gQEAgLTEzMDEsOSArMTMwMiw4IEBAIGlu dCBpbnRlbF92Z3B1X3NldHVwX3N1Ym1pc3Npb24oc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4g ICAJCWludGVsX2NvbnRleHRfdW5waW4ocy0+c2hhZG93W2ldKTsKPiAgIAkJaW50ZWxfY29udGV4 dF9wdXQocy0+c2hhZG93W2ldKTsKPiAgIAl9Cj4gKwlpOTE1X3ZtX3B1dCgmcHBndHQtPnZtKTsK PiAgIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwo+IC1vdXRfdW5sb2NrOgo+IC0JbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCAwZTkwYWM2MDhlMDcu LmIwNGNlYmMyNmVjYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAg LTMxNiwxMiArMzE2LDE4IEBAIHN0YXRpYyB2b2lkIHByaW50X2NvbnRleHRfc3RhdHMoc3RydWN0 IHNlcV9maWxlICptLAo+ICAgCQkJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAg ewo+ICAgCXN0cnVjdCBmaWxlX3N0YXRzIGtzdGF0cyA9IHt9Owo+IC0Jc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eDsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsICpjbjsKPiAg IAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZpOTE1LT5jb250ZXh0cy5saXN0LCBsaW5r KSB7Cj4gKwlzcGluX2xvY2soJmk5MTUtPmdlbS5jb250ZXh0cy5sb2NrKTsKPiArCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShjdHgsIGNuLCAmaTkxNS0+Z2VtLmNvbnRleHRzLmxpc3QsIGxpbmsp IHsKPiAgIAkJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXNfaXRlciBpdDsKPiAgIAkJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlOwo+ICAgCj4gKwkJaWYgKCFrcmVmX2dldF91bmxlc3NfemVybygmY3R4 LT5yZWYpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJc3Bpbl91bmxvY2soJmk5MTUtPmdlbS5j b250ZXh0cy5sb2NrKTsKPiArCj4gICAJCWZvcl9lYWNoX2dlbV9lbmdpbmUoY2UsCj4gICAJCQkJ ICAgIGk5MTVfZ2VtX2NvbnRleHRfbG9ja19lbmdpbmVzKGN0eCksIGl0KSB7Cj4gICAJCQlpbnRl bF9jb250ZXh0X2xvY2tfcGlubmVkKGNlKTsKPiBAQCAtMzM4LDcgKzM0NCw5IEBAIHN0YXRpYyB2 b2lkIHByaW50X2NvbnRleHRfc3RhdHMoc3RydWN0IHNlcV9maWxlICptLAo+ICAgCQlpOTE1X2dl bV9jb250ZXh0X3VubG9ja19lbmdpbmVzKGN0eCk7Cj4gICAKPiAgIAkJaWYgKCFJU19FUlJfT1Jf TlVMTChjdHgtPmZpbGVfcHJpdikpIHsKPiAtCQkJc3RydWN0IGZpbGVfc3RhdHMgc3RhdHMgPSB7 IC52bSA9IGN0eC0+dm0sIH07Cj4gKwkJCXN0cnVjdCBmaWxlX3N0YXRzIHN0YXRzID0gewo+ICsJ CQkJLnZtID0gcmN1X2FjY2Vzc19wb2ludGVyKGN0eC0+dm0pLAo+ICsJCQl9Owo+ICAgCQkJc3Ry dWN0IGRybV9maWxlICpmaWxlID0gY3R4LT5maWxlX3ByaXYtPmZpbGU7Cj4gICAJCQlzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2s7Cj4gICAJCQljaGFyIG5hbWVbODBdOwo+IEBAIC0zNTUsNyArMzYz LDEyIEBAIHN0YXRpYyB2b2lkIHByaW50X2NvbnRleHRfc3RhdHMoc3RydWN0IHNlcV9maWxlICpt LAo+ICAgCj4gICAJCQlwcmludF9maWxlX3N0YXRzKG0sIG5hbWUsIHN0YXRzKTsKPiAgIAkJfQo+ ICsKPiArCQlzcGluX2xvY2soJmk5MTUtPmdlbS5jb250ZXh0cy5sb2NrKTsKPiArCQlsaXN0X3Nh ZmVfcmVzZXRfbmV4dChjdHgsIGNuLCBsaW5rKTsKPiArCQlpOTE1X2dlbV9jb250ZXh0X3B1dChj dHgpOwo+ICAgCX0KPiArCXNwaW5fdW5sb2NrKCZpOTE1LT5nZW0uY29udGV4dHMubG9jayk7Cj4g ICAKPiAgIAlwcmludF9maWxlX3N0YXRzKG0sICJba11jb250ZXh0cyIsIGtzdGF0cyk7Cj4gICB9 Cj4gQEAgLTM2Myw3ICszNzYsNiBAQCBzdGF0aWMgdm9pZCBwcmludF9jb250ZXh0X3N0YXRzKHN0 cnVjdCBzZXFfZmlsZSAqbSwKPiAgIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2luZm8oc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+IC0JaW50IHJldDsKPiAg IAo+ICAgCXNlcV9wcmludGYobSwgIiV1IHNocmlua2FibGUgWyV1IGZyZWVdIG9iamVjdHMsICVs bHUgYnl0ZXNcbiIsCj4gICAJCSAgIGk5MTUtPm1tLnNocmlua19jb3VudCwKPiBAQCAtMzcyLDEy ICszODQsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9pbmZvKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKPiAgIAo+ICAgCXNlcV9wdXRjKG0sICdcbicpOwo+ICAgCj4gLQly ZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAgIAlwcmludF9jb250ZXh0X3N0YXRz KG0sIGk5MTUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAg IAo+ICAgCXJldHVybiAwOwo+ICAgfQo+IEBAIC0xNTc5LDE5ICsxNTg2LDE5IEBAIHN0YXRpYyB2 b2lkIGRlc2NyaWJlX2N0eF9yaW5nKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGludGVsX3Jp bmcgKnJpbmcpCj4gICAKPiAgIHN0YXRpYyBpbnQgaTkxNV9jb250ZXh0X3N0YXR1cyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiAtCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHg7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7 Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCAqY247Cj4gICAKPiAtCWxpc3RfZm9y X2VhY2hfZW50cnkoY3R4LCAmZGV2X3ByaXYtPmNvbnRleHRzLmxpc3QsIGxpbmspIHsKPiArCXNw aW5fbG9jaygmaTkxNS0+Z2VtLmNvbnRleHRzLmxvY2spOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKGN0eCwgY24sICZpOTE1LT5nZW0uY29udGV4dHMubGlzdCwgbGluaykgewo+ICAgCQlz dHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyIGl0Owo+ICAgCQlzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2U7Cj4gICAKPiArCQlpZiAoIWtyZWZfZ2V0X3VubGVzc196ZXJvKCZjdHgtPnJlZikpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlzcGluX3VubG9jaygmaTkxNS0+Z2VtLmNvbnRleHRzLmxv Y2spOwo+ICsKPiAgIAkJc2VxX3B1dHMobSwgIkhXIGNvbnRleHQgIik7Cj4gICAJCWlmIChjdHgt PnBpZCkgewo+ICAgCQkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwo+IEBAIC0xNjI2LDkgKzE2 MzMsMTIgQEAgc3RhdGljIGludCBpOTE1X2NvbnRleHRfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqdW51c2VkKQo+ICAgCQlpOTE1X2dlbV9jb250ZXh0X3VubG9ja19lbmdpbmVzKGN0 eCk7Cj4gICAKPiAgIAkJc2VxX3B1dGMobSwgJ1xuJyk7Cj4gLQl9Cj4gICAKPiAtCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJCXNwaW5fbG9jaygmaTkxNS0+Z2VtLmNvbnRl eHRzLmxvY2spOwo+ICsJCWxpc3Rfc2FmZV9yZXNldF9uZXh0KGN0eCwgY24sIGxpbmspOwo+ICsJ CWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4gKwl9Cj4gKwlzcGluX3VubG9jaygmaTkxNS0+ Z2VtLmNvbnRleHRzLmxvY2spOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gaW5kZXggNTMyM2U0ZmE1NWQ5Li4wMjRkYTU4MmJhMGYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtMTY2NSwxMCArMTY2NSw4IEBAIHN0YXRpYyB2b2lk IGk5MTVfZHJpdmVyX3Bvc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmls ZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4gICAKPiAtCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiAgIAlpOTE1X2dlbV9jb250ZXh0X2Nsb3NlKGZpbGUpOwo+ICAgCWk5MTVf Z2VtX3JlbGVhc2UoZGV2LCBmaWxlKTsKPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+ICAgCj4gICAJa2ZyZWVfcmN1KGZpbGVfcHJpdiwgcmN1KTsKPiAgIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+IGluZGV4IGNiNjNiMmJkMGNlOC4uMzViNjEwZDUyMzc5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTE1MzYsMjUgKzE1MzYsNiBAQCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSB7Cj4gICAJaW50IGF1ZGlvX3Bvd2VyX3JlZmNvdW50Owo+ICAgCXUzMiBh dWRpb19mcmVxX2NudHJsOwo+ICAgCj4gLQlzdHJ1Y3Qgewo+IC0JCXN0cnVjdCBtdXRleCBtdXRl eDsKPiAtCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gLQkJc3RydWN0IGxsaXN0X2hlYWQgZnJl ZV9saXN0Owo+IC0JCXN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7Cj4gLQo+IC0JCS8qIFRo ZSBodyB3YW50cyB0byBoYXZlIGEgc3RhYmxlIGNvbnRleHQgaWRlbnRpZmllciBmb3IgdGhlCj4g LQkJICogbGlmZXRpbWUgb2YgdGhlIGNvbnRleHQgKGZvciBPQSwgUEFTSUQsIGZhdWx0cywgZXRj KS4KPiAtCQkgKiBUaGlzIGlzIGxpbWl0ZWQgaW4gZXhlY2xpc3RzIHRvIDIxIGJpdHMuCj4gLQkJ ICovCj4gLQkJc3RydWN0IGlkYSBod19pZGE7Cj4gLSNkZWZpbmUgTUFYX0NPTlRFWFRfSFdfSUQg KDE8PDIxKSAvKiBleGNsdXNpdmUgKi8KPiAtI2RlZmluZSBNQVhfR1VDX0NPTlRFWFRfSFdfSUQg KDEgPDwgMjApIC8qIGV4Y2x1c2l2ZSAqLwo+IC0jZGVmaW5lIEdFTjExX01BWF9DT05URVhUX0hX X0lEICgxPDwxMSkgLyogZXhjbHVzaXZlICovCj4gLS8qIGluIEdlbjEyIElEIDB4N0ZGIGlzIHJl c2VydmVkIHRvIGluZGljYXRlIGlkbGUgKi8KPiAtI2RlZmluZSBHRU4xMl9NQVhfQ09OVEVYVF9I V19JRAkoR0VOMTFfTUFYX0NPTlRFWFRfSFdfSUQgLSAxKQo+IC0JCXN0cnVjdCBsaXN0X2hlYWQg aHdfaWRfbGlzdDsKPiAtCX0gY29udGV4dHM7Cj4gLQo+ICAgCXUzMiBmZGlfcnhfY29uZmlnOwo+ ICAgCj4gICAJLyogU2hhZG93IGZvciBESVNQTEFZX1BIWV9DT05UUk9MIHdoaWNoIGNhbid0IGJl IHNhZmVseSByZWFkICovCj4gQEAgLTE3MTAsNiArMTY5MSwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSB7Cj4gICAKPiAgIAlzdHJ1Y3Qgewo+ICAgCQlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg cG1fbm90aWZpZXI7Cj4gKwo+ICsJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0cyB7Cj4gKwkJCXNw aW5sb2NrX3QgbG9jazsgLyogbG9ja3MgbGlzdCAqLwo+ICsJCQlzdHJ1Y3QgbGlzdF9oZWFkIGxp c3Q7Cj4gKwo+ICsJCQlzdHJ1Y3QgbGxpc3RfaGVhZCBmcmVlX2xpc3Q7Cj4gKwkJCXN0cnVjdCB3 b3JrX3N0cnVjdCBmcmVlX3dvcms7Cj4gKwkJfSBjb250ZXh0czsKPiAgIAl9IGdlbTsKPiAgIAo+ ICAgCS8qIEZvciBpOTQ1Z20gdmJsYW5rIGlycSB2cy4gQzMgd29ya2Fyb3VuZCAqLwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDVhNjY0YmRlYWQ4Yy4uZjZkYjQxNTk4NWQ1IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTEyNjYsNyArMTI2Niw3IEBAIGludCBpOTE1 X2dlbV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJZ290byBl cnJfdW5sb2NrOwo+ICAgCX0KPiAgIAo+IC0JcmV0ID0gaTkxNV9nZW1fY29udGV4dHNfaW5pdChk ZXZfcHJpdik7Cj4gKwlyZXQgPSBpOTE1X2dlbV9pbml0X2NvbnRleHRzKGRldl9wcml2KTsKPiAg IAlpZiAocmV0KSB7Cj4gICAJCUdFTV9CVUdfT04ocmV0ID09IC1FSU8pOwo+ICAgCQlnb3RvIGVy cl9zY3JhdGNoOwo+IEBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJfQo+ICAgZXJyX2NvbnRleHQ6Cj4g ICAJaWYgKHJldCAhPSAtRUlPKQo+IC0JCWk5MTVfZ2VtX2NvbnRleHRzX2ZpbmkoZGV2X3ByaXYp Owo+ICsJCWk5MTVfZ2VtX2RyaXZlcl9yZWxlYXNlX19jb250ZXh0cyhkZXZfcHJpdik7Cj4gICBl cnJfc2NyYXRjaDoKPiAgIAlpbnRlbF9ndF9kcml2ZXJfcmVsZWFzZSgmZGV2X3ByaXYtPmd0KTsK PiAgIGVycl91bmxvY2s6Cj4gQEAgLTE0MTYsMTEgKzE0MTYsOSBAQCB2b2lkIGk5MTVfZ2VtX2Ry aXZlcl9yZW1vdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCj4gICB2 b2lkIGk5MTVfZ2VtX2RyaXZlcl9yZWxlYXNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIHsKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK PiAgIAlpbnRlbF9lbmdpbmVzX2NsZWFudXAoZGV2X3ByaXYpOwo+IC0JaTkxNV9nZW1fY29udGV4 dHNfZmluaShkZXZfcHJpdik7Cj4gKwlpOTE1X2dlbV9kcml2ZXJfcmVsZWFzZV9fY29udGV4dHMo ZGV2X3ByaXYpOwo+ICAgCWludGVsX2d0X2RyaXZlcl9yZWxlYXNlKCZkZXZfcHJpdi0+Z3QpOwo+ IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiAgIAlp bnRlbF93YV9saXN0X2ZyZWUoJmRldl9wcml2LT5ndF93YV9saXN0KTsKPiAgIAo+IEBAIC0xNDMw LDcgKzE0MjgsNyBAQCB2b2lkIGk5MTVfZ2VtX2RyaXZlcl9yZWxlYXNlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVj dHMoZGV2X3ByaXYpOwo+ICAgCj4gLQlXQVJOX09OKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+Y29u dGV4dHMubGlzdCkpOwo+ICsJV0FSTl9PTighbGlzdF9lbXB0eSgmZGV2X3ByaXYtPmdlbS5jb250 ZXh0cy5saXN0KSk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgaTkxNV9nZW1faW5pdF9tbWlvKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j Cj4gaW5kZXggMWQyNjYzNGNhNTk3Li43YjE1YmI4OTE5NzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0xMzY2LDcgKzEzNjYsOSBAQCBzdGF0aWMgaW50IGdlbjhf aW5pdF9zY3JhdGNoKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAgCWlmICh2bS0+ aGFzX3JlYWRfb25seSAmJgo+ICAgCSAgICB2bS0+aTkxNS0+a2VybmVsX2NvbnRleHQgJiYKPiAg IAkgICAgdm0tPmk5MTUtPmtlcm5lbF9jb250ZXh0LT52bSkgewo+IC0JCXN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKmNsb25lID0gdm0tPmk5MTUtPmtlcm5lbF9jb250ZXh0LT52bTsKPiArCQlz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpjbG9uZSA9Cj4gKwkJCXJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQodm0tPmk5MTUtPmtlcm5lbF9jb250ZXh0LT52bSwKPiArCQkJCQkJICB0cnVlKTsg Lyogc3RhdGljICovCj4gICAKPiAgIAkJR0VNX0JVR19PTighY2xvbmUtPmhhc19yZWFkX29ubHkp Owo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBpbmRleCBlY2ZiYzM3YjczOGIuLjIz MTM4OGQwNmM4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gQEAgLTE4NTMsOCAr MTg1Myw4IEBAIHN0YXRpYyBpbnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gICAJfTsKPiAgICN1bmRlZiBjdHhfZmxleGV1Tgo+ ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAtCXN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHg7Cj4gLQlpbnQgaTsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs ICpjbjsKPiArCWludCBpLCBlcnI7Cj4gICAKPiAgIAlmb3IgKGkgPSAyOyBpIDwgQVJSQVlfU0la RShyZWdzKTsgaSsrKQo+ICAgCQlyZWdzW2ldLnZhbHVlID0gb2FfY29uZmlnX2ZsZXhfcmVnKG9h X2NvbmZpZywgcmVnc1tpXS5yZWcpOwo+IEBAIC0xODc3LDE2ICsxODc3LDI3IEBAIHN0YXRpYyBp bnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpz dHJlYW0sCj4gICAJICogY29udGV4dC4gQ29udGV4dHMgaWRsZSBhdCB0aGUgdGltZSBvZiByZWNv bmZpZ3VyYXRpb24gYXJlIG5vdAo+ICAgCSAqIHRyYXBwZWQgYmVoaW5kIHRoZSBiYXJyaWVyLgo+ ICAgCSAqLwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZpOTE1LT5jb250ZXh0cy5saXN0 LCBsaW5rKSB7Cj4gLQkJaW50IGVycjsKPiAtCj4gKwlzcGluX2xvY2soJmk5MTUtPmdlbS5jb250 ZXh0cy5sb2NrKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdHgsIGNuLCAmaTkxNS0+ Z2VtLmNvbnRleHRzLmxpc3QsIGxpbmspIHsKPiAgIAkJaWYgKGN0eCA9PSBpOTE1LT5rZXJuZWxf Y29udGV4dCkKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gKwkJaWYgKCFrcmVmX2dldF91bmxlc3Nf emVybygmY3R4LT5yZWYpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJc3Bpbl91bmxvY2soJmk5 MTUtPmdlbS5jb250ZXh0cy5sb2NrKTsKPiArCj4gICAJCWVyciA9IGdlbjhfY29uZmlndXJlX2Nv bnRleHQoY3R4LCByZWdzLCBBUlJBWV9TSVpFKHJlZ3MpKTsKPiAtCQlpZiAoZXJyKQo+ICsJCWlm IChlcnIpIHsKPiArCQkJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiAgIAkJCXJldHVybiBl cnI7Cj4gKwkJfQo+ICsKPiArCQlzcGluX2xvY2soJmk5MTUtPmdlbS5jb250ZXh0cy5sb2NrKTsK PiArCQlsaXN0X3NhZmVfcmVzZXRfbmV4dChjdHgsIGNuLCBsaW5rKTsKPiArCQlpOTE1X2dlbV9j b250ZXh0X3B1dChjdHgpOwo+ICAgCX0KPiArCXNwaW5fdW5sb2NrKCZpOTE1LT5nZW0uY29udGV4 dHMubG9jayk7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIEFmdGVyIHVwZGF0aW5nIGFsbCBvdGhlciBj b250ZXh0cywgd2UgbmVlZCB0byBtb2RpZnkgb3Vyc2VsdmVzLgo+IEBAIC0xODk1LDcgKzE5MDYs NiBAQCBzdGF0aWMgaW50IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCSAqLwo+ICAgCWZvcl9lYWNoX3VhYmlfZW5naW5lKGVu Z2luZSwgaTkxNSkgewo+ICAgCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBlbmdpbmUtPmtl cm5lbF9jb250ZXh0Owo+IC0JCWludCBlcnI7Cj4gICAKPiAgIAkJaWYgKGVuZ2luZS0+Y2xhc3Mg IT0gUkVOREVSX0NMQVNTKQo+ICAgCQkJY29udGludWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lz ZnMuYwo+IGluZGV4IDAzNGI4YWJjNTA2Mi4uMmE3MjQwN2E2MzgwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc3lzZnMuYwo+IEBAIC0xNDQsOSArMTQ0LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBhdHRyaWJ1dGVfZ3JvdXAgbWVkaWFfcmM2X2F0dHJfZ3JvdXAgPSB7Cj4gICB9Owo+ICAgI2Vu ZGlmCj4gICAKPiAtc3RhdGljIGludCBsM19hY2Nlc3NfdmFsaWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBsb2ZmX3Qgb2Zmc2V0KQo+ICtzdGF0aWMgaW50IGwzX2FjY2Vzc192 YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgbG9mZl90IG9mZnNldCkKPiAgIHsK PiAtCWlmICghSEFTX0wzX0RQRihkZXZfcHJpdikpCj4gKwlpZiAoIUhBU19MM19EUEYoaTkxNSkp Cj4gICAJCXJldHVybiAtRVBFUk07Cj4gICAKPiAgIAlpZiAob2Zmc2V0ICUgNCAhPSAwKQo+IEBA IC0xNjQsMzEgKzE2NCwyNCBAQCBpOTE1X2wzX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVj dCBrb2JqZWN0ICprb2JqLAo+ICAgCSAgICAgbG9mZl90IG9mZnNldCwgc2l6ZV90IGNvdW50KQo+ ICAgewo+ICAgCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2 KTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwo+ICAg CWludCBzbGljZSA9IChpbnQpKHVpbnRwdHJfdClhdHRyLT5wcml2YXRlOwo+ICAgCWludCByZXQ7 Cj4gICAKPiAtCWNvdW50ID0gcm91bmRfZG93bihjb3VudCwgNCk7Cj4gLQo+IC0JcmV0ID0gbDNf YWNjZXNzX3ZhbGlkKGRldl9wcml2LCBvZmZzZXQpOwo+ICsJcmV0ID0gbDNfYWNjZXNzX3ZhbGlk KGk5MTUsIG9mZnNldCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+ICsJ Y291bnQgPSByb3VuZF9kb3duKGNvdW50LCA0KTsKPiAgIAljb3VudCA9IG1pbl90KHNpemVfdCwg R0VON19MM0xPR19TSVpFIC0gb2Zmc2V0LCBjb3VudCk7Cj4gKwltZW1zZXQoYnVmLCAwLCBjb3Vu dCk7Cj4gICAKPiAtCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7Cj4g LQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JaWYgKGRldl9wcml2LT5sM19wYXJp dHkucmVtYXBfaW5mb1tzbGljZV0pCj4gKwlzcGluX2xvY2soJmk5MTUtPmdlbS5jb250ZXh0cy5s b2NrKTsKPiArCWlmIChpOTE1LT5sM19wYXJpdHkucmVtYXBfaW5mb1tzbGljZV0pCj4gICAJCW1l bWNweShidWYsCj4gLQkJICAgICAgIGRldl9wcml2LT5sM19wYXJpdHkucmVtYXBfaW5mb1tzbGlj ZV0gKyAob2Zmc2V0LzQpLAo+ICsJCSAgICAgICBpOTE1LT5sM19wYXJpdHkucmVtYXBfaW5mb1tz bGljZV0gKyBvZmZzZXQgLyA0LAo+ICAgCQkgICAgICAgY291bnQpOwo+IC0JZWxzZQo+IC0JCW1l bXNldChidWYsIDAsIGNvdW50KTsKPiAtCj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKPiArCXNwaW5fdW5sb2NrKCZpOTE1LT5nZW0uY29udGV4dHMubG9jayk7Cj4gICAKPiAg IAlyZXR1cm4gY291bnQ7Cj4gICB9Cj4gQEAgLTE5OSw0NiArMTkyLDQ2IEBAIGk5MTVfbDNfd3Jp dGUoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLAo+ICAgCSAgICAgIGxv ZmZfdCBvZmZzZXQsIHNpemVfdCBjb3VudCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZGV2aWNlICprZGV2 ID0ga29ial90b19kZXYoa29iaik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gJmRldl9wcml2LT5kcm07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGtk ZXZfbWlub3JfdG9faTkxNShrZGV2KTsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 Owo+ICAgCWludCBzbGljZSA9IChpbnQpKHVpbnRwdHJfdClhdHRyLT5wcml2YXRlOwo+IC0JdTMy ICoqcmVtYXBfaW5mbzsKPiArCXUzMiAqcmVtYXBfaW5mbywgKmZyZWVtZSA9IE5VTEw7Cj4gICAJ aW50IHJldDsKPiAgIAo+IC0JcmV0ID0gbDNfYWNjZXNzX3ZhbGlkKGRldl9wcml2LCBvZmZzZXQp Owo+ICsJcmV0ID0gbDNfYWNjZXNzX3ZhbGlkKGk5MTUsIG9mZnNldCk7Cj4gICAJaWYgKHJldCkK PiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IC0JcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVw dGlibGUoZGV2KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiArCXJlbWFwX2luZm8g PSBremFsbG9jKEdFTjdfTDNMT0dfU0laRSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXJlbWFwX2lu Zm8pCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gICAKPiAtCXJlbWFwX2luZm8gPSAmZGV2X3ByaXYt PmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNlXTsKPiAtCWlmICghKnJlbWFwX2luZm8pIHsKPiAt CQkqcmVtYXBfaW5mbyA9IGt6YWxsb2MoR0VON19MM0xPR19TSVpFLCBHRlBfS0VSTkVMKTsKPiAt CQlpZiAoISpyZW1hcF9pbmZvKSB7Cj4gLQkJCXJldCA9IC1FTk9NRU07Cj4gLQkJCWdvdG8gb3V0 Owo+IC0JCX0KPiArCXNwaW5fbG9jaygmaTkxNS0+Z2VtLmNvbnRleHRzLmxvY2spOwo+ICsKPiAr CWlmIChpOTE1LT5sM19wYXJpdHkucmVtYXBfaW5mb1tzbGljZV0pIHsKPiArCQlmcmVlbWUgPSBy ZW1hcF9pbmZvOwo+ICsJCXJlbWFwX2luZm8gPSBpOTE1LT5sM19wYXJpdHkucmVtYXBfaW5mb1tz bGljZV07Cj4gKwl9IGVsc2Ugewo+ICsJCWk5MTUtPmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNl XSA9IHJlbWFwX2luZm87Cj4gICAJfQo+ICAgCj4gLQkvKiBUT0RPOiBJZGVhbGx5IHdlIHJlYWxs eSB3YW50IGEgR1BVIHJlc2V0IGhlcmUgdG8gbWFrZSBzdXJlIGVycm9ycwo+IC0JICogYXJlbid0 IHByb3BhZ2F0ZWQuIFNpbmNlIEkgY2Fubm90IGZpbmQgYSBzdGFibGUgd2F5IHRvIHJlc2V0IHRo ZSBHUFUKPiAtCSAqIGF0IHRoaXMgcG9pbnQgaXQgaXMgbGVmdCBhcyBhIFRPRE8uCj4gLQkqLwo+ IC0JbWVtY3B5KCpyZW1hcF9pbmZvICsgKG9mZnNldC80KSwgYnVmLCBjb3VudCk7Cj4gKwljb3Vu dCA9IHJvdW5kX2Rvd24oY291bnQsIDQpOwoKVGhpcyByb3VuZF9kb3duIGlzIG5ldy4KCj4gKwlt ZW1jcHkocmVtYXBfaW5mbyArIG9mZnNldCAvIDQsIGJ1ZiwgY291bnQpOwo+ICAgCj4gICAJLyog TkI6IFdlIGRlZmVyIHRoZSByZW1hcHBpbmcgdW50aWwgd2Ugc3dpdGNoIHRvIHRoZSBjb250ZXh0 ICovCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRldl9wcml2LT5jb250ZXh0cy5saXN0 LCBsaW5rKQo+IC0JCWN0eC0+cmVtYXBfc2xpY2UgfD0gKDE8PHNsaWNlKTsKPiArCWxpc3RfZm9y X2VhY2hfZW50cnkoY3R4LCAmaTkxNS0+Z2VtLmNvbnRleHRzLmxpc3QsIGxpbmspCj4gKwkJY3R4 LT5yZW1hcF9zbGljZSB8PSBCSVQoc2xpY2UpOwo+ICAgCj4gLQlyZXQgPSBjb3VudDsKPiArCXNw aW5fdW5sb2NrKCZpOTE1LT5nZW0uY29udGV4dHMubG9jayk7Cj4gKwlrZnJlZShmcmVlbWUpOwo+ ICAgCj4gLW91dDoKPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJLyoK PiArCSAqIFRPRE86IElkZWFsbHkgd2UgcmVhbGx5IHdhbnQgYSBHUFUgcmVzZXQgaGVyZSB0byBt YWtlIHN1cmUgZXJyb3JzCj4gKwkgKiBhcmVuJ3QgcHJvcGFnYXRlZC4gU2luY2UgSSBjYW5ub3Qg ZmluZCBhIHN0YWJsZSB3YXkgdG8gcmVzZXQgdGhlIEdQVQo+ICsJICogYXQgdGhpcyBwb2ludCBp dCBpcyBsZWZ0IGFzIGEgVE9ETy4KPiArCSAqLwo+ICAgCj4gLQlyZXR1cm4gcmV0Owo+ICsJcmV0 dXJuIGNvdW50Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1 dGUgZHBmX2F0dHJzID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBpbmRleCAxZjJj ZjZjZmFmYjUuLjdlZjdhMWUxNjY0YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3RyYWNlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgK PiBAQCAtOTUyLDcgKzk1Miw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkxNV9jb250ZXh0LAo+ ICAgCVRQX2Zhc3RfYXNzaWduKAo+ICAgCQkJX19lbnRyeS0+ZGV2ID0gY3R4LT5pOTE1LT5kcm0u cHJpbWFyeS0+aW5kZXg7Cj4gICAJCQlfX2VudHJ5LT5jdHggPSBjdHg7Cj4gLQkJCV9fZW50cnkt PnZtID0gY3R4LT52bTsKPiArCQkJX19lbnRyeS0+dm0gPSByY3VfYWNjZXNzX3BvaW50ZXIoY3R4 LT52bSk7Cj4gICAJKSwKPiAgIAo+ICAgCVRQX3ByaW50aygiZGV2PSV1LCBjdHg9JXAsIGN0eF92 bT0lcCIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmMKPiBpbmRl eCAwMzQ2YzNlNWI2YjYuLmJmYTQwYTViNmQ5OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jCj4gQEAgLTEzOCwxMSArMTM4LDkgQEAgc3RhdGljIGludCBp Z3RfZ2VtX3N1c3BlbmQodm9pZCAqYXJnKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKPiAg IAo+ICAgCWVyciA9IC1FTk9NRU07Cj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgIAljdHggPSBsaXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7Cj4gICAJaWYgKCFJU19F UlIoY3R4KSkKPiAgIAkJZXJyID0gc3dpdGNoX3RvX2NvbnRleHQoaTkxNSwgY3R4KTsKPiAtCW11 dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJaWYgKGVycikKPiAgIAkJ Z290byBvdXQ7Cj4gICAKPiBAQCAtMTU3LDkgKzE1NSw3IEBAIHN0YXRpYyBpbnQgaWd0X2dlbV9z dXNwZW5kKHZvaWQgKmFyZykKPiAgIAo+ICAgCXBtX3Jlc3VtZShpOTE1KTsKPiAgIAo+IC0JbXV0 ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJZXJyID0gc3dpdGNoX3RvX2Nv bnRleHQoaTkxNSwgY3R4KTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gICBvdXQ6Cj4gICAJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7Cj4gICAJcmV0dXJu IGVycjsKPiBAQCAtMTc3LDExICsxNzMsOSBAQCBzdGF0aWMgaW50IGlndF9nZW1faGliZXJuYXRl KHZvaWQgKmFyZykKPiAgIAkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4gICAKPiAgIAllcnIgPSAt RU5PTUVNOwo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJY3R4 ID0gbGl2ZV9jb250ZXh0KGk5MTUsIGZpbGUpOwo+ICAgCWlmICghSVNfRVJSKGN0eCkpCj4gICAJ CWVyciA9IHN3aXRjaF90b19jb250ZXh0KGk5MTUsIGN0eCk7Cj4gLQltdXRleF91bmxvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0Owo+ICAg Cj4gQEAgLTE5Niw5ICsxOTAsNyBAQCBzdGF0aWMgaW50IGlndF9nZW1faGliZXJuYXRlKHZvaWQg KmFyZykKPiAgIAo+ICAgCXBtX3Jlc3VtZShpOTE1KTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJZXJyID0gc3dpdGNoX3RvX2NvbnRleHQoaTkxNSwg Y3R4KTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICBvdXQ6 Cj4gICAJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7Cj4gICAJcmV0dXJuIGVycjsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYwo+IGluZGV4 IGYzOWYwMjgyZTc4Yy4uMGFmOWE1OGQwMTFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMKPiBAQCAtNDczLDcgKzQ3Myw2IEBAIHN0 YXRpYyBpbnQgaWd0X2V2aWN0X2NvbnRleHRzKHZvaWQgKmFyZykKPiAgIAkJfQo+ICAgCj4gICAJ CWNvdW50ID0gMDsKPiAtCQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAg IAkJb25zdGFja19mZW5jZV9pbml0KCZmZW5jZSk7Cj4gICAJCWRvIHsKPiAgIAkJCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOwo+IEBAIC01MTAsOCArNTA5LDYgQEAgc3RhdGljIGludCBpZ3RfZXZp Y3RfY29udGV4dHModm9pZCAqYXJnKQo+ICAgCQkJY291bnQrKzsKPiAgIAkJCWVyciA9IDA7Cj4g ICAJCX0gd2hpbGUoMSk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCj4gICAJCW9uc3RhY2tfZmVuY2VfZmluaSgmZmVuY2UpOwo+ICAgCQlwcl9pbmZvKCJT dWJtaXR0ZWQgJWx1IGNvbnRleHRzL3JlcXVlc3RzIG9uICVzXG4iLAo+ICAgCQkJY291bnQsIGVu Z2luZS0+bmFtZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9ndHQuYwo+IGluZGV4IGU0MGU2Y2ZhNTFmMS4uOGQ4MTIxYzAyMTYxIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+IEBAIC0xMjQ2LDYg KzEyNDYsNyBAQCBzdGF0aWMgaW50IGV4ZXJjaXNlX21vY2soc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCj4gICAJCQkJICAgICB1bnNpZ25lZCBsb25nIGVuZF90aW1lKSkKPiAgIHsKPiAg IAljb25zdCB1NjQgbGltaXQgPSB0b3RhbHJhbV9wYWdlcygpIDw8IFBBR0VfU0hJRlQ7Cj4gKwlz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4Owo+ICAgCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKPiAgIAlpbnQgZXJyOwo+IEBAIC0x MjU0LDcgKzEyNTUsOSBAQCBzdGF0aWMgaW50IGV4ZXJjaXNlX21vY2soc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gICAJaWYgKCFjdHgpCj4gICAJCXJldHVybiAtRU5PTUVNOwo+ICAg Cj4gLQllcnIgPSBmdW5jKGk5MTUsIGN0eC0+dm0sIDAsIG1pbihjdHgtPnZtLT50b3RhbCwgbGlt aXQpLCBlbmRfdGltZSk7Cj4gKwl2bSA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0X3ZtX3JjdShjdHgp Owo+ICsJZXJyID0gZnVuYyhpOTE1LCB2bSwgMCwgbWluKHZtLT50b3RhbCwgbGltaXQpLCBlbmRf dGltZSk7Cj4gKwlpOTE1X3ZtX3B1dCh2bSk7Cj4gICAKPiAgIAltb2NrX2NvbnRleHRfY2xvc2Uo Y3R4KTsKPiAgIAlyZXR1cm4gZXJyOwo+IEBAIC0xODAxLDE1ICsxODA0LDE1IEBAIHN0YXRpYyBp bnQgaWd0X2NzX3RsYih2b2lkICphcmcpCj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiAgIAl9Cj4g ICAKPiAtCXZtID0gY3R4LT52bTsKPiAtCWlmICghdm0pCj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ ICsJdm0gPSBpOTE1X2dlbV9jb250ZXh0X2dldF92bV9yY3UoY3R4KTsKPiArCWlmIChpOTE1X2lz X2dndHQodm0pKQo+ICsJCWdvdG8gb3V0X3ZtOwo+ICAgCj4gICAJLyogQ3JlYXRlIHR3byBwYWdl czsgZHVtbXkgd2UgcHJlZmlsbCB0aGUgVExCLCBhbmQgaW50ZW5kZWQgKi8KPiAgIAliYmUgPSBp OTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIFBBR0VfU0laRSk7Cj4gICAJaWYg KElTX0VSUihiYmUpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIoYmJlKTsKPiAtCQlnb3RvIG91dF91 bmxvY2s7Cj4gKwkJZ290byBvdXRfdm07Cj4gICAJfQo+ICAgCj4gICAJYmF0Y2ggPSBpOTE1X2dl bV9vYmplY3RfcGluX21hcChiYmUsIEk5MTVfTUFQX1dDKTsKPiBAQCAtMjAxNCw2ICsyMDE3LDgg QEAgc3RhdGljIGludCBpZ3RfY3NfdGxiKHZvaWQgKmFyZykKPiAgIAlpOTE1X2dlbV9vYmplY3Rf cHV0KGFjdCk7Cj4gICBvdXRfcHV0X2JiZToKPiAgIAlpOTE1X2dlbV9vYmplY3RfcHV0KGJiZSk7 Cj4gK291dF92bToKPiArCWk5MTVfdm1fcHV0KHZtKTsKPiAgIG91dF91bmxvY2s6Cj4gICAJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAltb2NrX2ZpbGVfZnJlZShp OTE1LCBmaWxlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVx dWVzdC5jCj4gaW5kZXggZDdkNjhjNmE2YmQ1Li4wODk3YTdiMDQ5NDQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCj4gQEAgLTE4MSw5ICsx ODEsNyBAQCBzdGF0aWMgaW50IGlndF9yZXF1ZXN0X3Jld2luZCh2b2lkICphcmcpCj4gICAJc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICAgCWludCBlcnIgPSAtRUlOVkFMOwo+ICAgCj4gLQlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAljdHhbMF0gPSBtb2NrX2Nv bnRleHQoaTkxNSwgIkEiKTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gICAKPiAgIAljZSA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2luZShjdHhbMF0sIFJD UzApOwo+ICAgCUdFTV9CVUdfT04oSVNfRVJSKGNlKSk7Cj4gQEAgLTE5Nyw5ICsxOTUsNyBAQCBz dGF0aWMgaW50IGlndF9yZXF1ZXN0X3Jld2luZCh2b2lkICphcmcpCj4gICAJaTkxNV9yZXF1ZXN0 X2dldChyZXF1ZXN0KTsKPiAgIAlpOTE1X3JlcXVlc3RfYWRkKHJlcXVlc3QpOwo+ICAgCj4gLQlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAljdHhbMV0gPSBtb2NrX2Nv bnRleHQoaTkxNSwgIkIiKTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gICAKPiAgIAljZSA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2luZShjdHhbMV0sIFJD UzApOwo+ICAgCUdFTV9CVUdfT04oSVNfRVJSKGNlKSk7Cj4gQEAgLTQzOCw5ICs0MzQsNyBAQCBz dGF0aWMgaW50IG1vY2tfYnJlYWRjcnVtYnNfc21va2V0ZXN0KHZvaWQgKmFyZykKPiAgIAl9Cj4g ICAKPiAgIAlmb3IgKG4gPSAwOyBuIDwgdC5uY29udGV4dHM7IG4rKykgewo+IC0JCW11dGV4X2xv Y2soJnQuZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAkJdC5jb250ZXh0c1tu XSA9IG1vY2tfY29udGV4dCh0LmVuZ2luZS0+aTkxNSwgIm1vY2siKTsKPiAtCQltdXRleF91bmxv Y2soJnQuZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAkJaWYgKCF0LmNvbnRl eHRzW25dKSB7Cj4gICAJCQlyZXQgPSAtRU5PTUVNOwo+ICAgCQkJZ290byBvdXRfY29udGV4dHM7 Cj4gQEAgLTczNCw5ICs3MjgsOSBAQCBzdGF0aWMgaW50IGxpdmVfZW1wdHlfcmVxdWVzdCh2b2lk ICphcmcpCj4gICBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpyZWN1cnNpdmVfYmF0Y2goc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCA9IGk5MTUtPmtlcm5lbF9jb250ZXh0Owo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0gPSBjdHgtPnZtID86ICZpOTE1LT5nZ3R0LnZtOwo+ICAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7Cj4gICAJY29uc3QgaW50IGdlbiA9IElOVEVMX0dFTihpOTE1KTsK PiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwo+ICAgCXUzMiAqY21kOwo+ICAgCWludCBlcnI7Cj4gQEAgLTc0NSw3ICs3MzksOSBAQCBz dGF0aWMgc3RydWN0IGk5MTVfdm1hICpyZWN1cnNpdmVfYmF0Y2goc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gICAJaWYgKElTX0VSUihvYmopKQo+ICAgCQlyZXR1cm4gRVJSX0NBU1Qo b2JqKTsKPiAgIAo+ICsJdm0gPSBpOTE1X2dlbV9jb250ZXh0X2dldF92bV9yY3UoY3R4KTsKPiAg IAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtLCBOVUxMKTsKPiArCWk5MTVfdm1fcHV0 KHZtKTsKPiAgIAlpZiAoSVNfRVJSKHZtYSkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUih2bWEpOwo+ ICAgCQlnb3RvIGVycjsKPiBAQCAtMTIyMCw5ICsxMjE2LDcgQEAgc3RhdGljIGludCBsaXZlX2Jy ZWFkY3J1bWJzX3Ntb2tldGVzdCh2b2lkICphcmcpCj4gICAJfQo+ICAgCj4gICAJZm9yIChuID0g MDsgbiA8IHRbMF0ubmNvbnRleHRzOyBuKyspIHsKPiAtCQltdXRleF9sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgIAkJdFswXS5jb250ZXh0c1tuXSA9IGxpdmVfY29udGV4dChpOTE1 LCBmaWxlKTsKPiAtCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAg CQlpZiAoIXRbMF0uY29udGV4dHNbbl0pIHsKPiAgIAkJCXJldCA9IC1FTk9NRU07Cj4gICAJCQln b3RvIG91dF9jb250ZXh0czsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92 bWEuYwo+IGluZGV4IGFjMWZmNTU4ZWI5MC4uNThiNWY0MGEwN2RkIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMKPiBAQCAtMjQsNiArMjQsNyBAQAo+ICAg Cj4gICAjaW5jbHVkZSA8bGludXgvcHJpbWVfbnVtYmVycy5oPgo+ICAgCj4gKyNpbmNsdWRlICJn ZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+ICAgI2luY2x1ZGUgImdlbS9zZWxmdGVzdHMvbW9ja19j b250ZXh0LmgiCj4gICAKPiAgICNpbmNsdWRlICJpOTE1X3NjYXR0ZXJsaXN0LmgiCj4gQEAgLTM4 LDcgKzM5LDcgQEAgc3RhdGljIGJvb2wgYXNzZXJ0X3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwK PiAgIHsKPiAgIAlib29sIG9rID0gdHJ1ZTsKPiAgIAo+IC0JaWYgKHZtYS0+dm0gIT0gY3R4LT52 bSkgewo+ICsJaWYgKHZtYS0+dm0gIT0gcmN1X2FjY2Vzc19wb2ludGVyKGN0eC0+dm0pKSB7Cj4g ICAJCXByX2VycigiVk1BIGNyZWF0ZWQgd2l0aCB3cm9uZyBWTVxuIik7Cj4gICAJCW9rID0gZmFs c2U7Cj4gICAJfQo+IEBAIC0xMTMsMTEgKzExNCwxMyBAQCBzdGF0aWMgaW50IGNyZWF0ZV92bWFz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnko b2JqLCBvYmplY3RzLCBzdF9saW5rKSB7Cj4gICAJCWZvciAocGlubmVkID0gMDsgcGlubmVkIDw9 IDE7IHBpbm5lZCsrKSB7Cj4gICAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgY29udGV4dHMs IGxpbmspIHsKPiAtCQkJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gY3R4LT52bTsK PiArCQkJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ICAgCQkJCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwo+ICAgCQkJCWludCBlcnI7Cj4gICAKPiArCQkJCXZtID0gaTkxNV9nZW1fY29u dGV4dF9nZXRfdm1fcmN1KGN0eCk7Cj4gICAJCQkJdm1hID0gY2hlY2tlZF92bWFfaW5zdGFuY2Uo b2JqLCB2bSwgTlVMTCk7Cj4gKwkJCQlpOTE1X3ZtX3B1dCh2bSk7Cj4gICAJCQkJaWYgKElTX0VS Uih2bWEpKQo+ICAgCQkJCQlyZXR1cm4gUFRSX0VSUih2bWEpOwo+ICAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwo+IGluZGV4IDRlNmNk ZTBkNDg1OS4uMzM1ZjM3YmE5OGRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwo+IEBAIC01OSwxMSArNTksOSBAQCBzdGF0aWMg dm9pZCBtb2NrX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAKPiAg IAlpOTE1X2dlbV9kcmFpbl93b3JrcXVldWUoaTkxNSk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUs IGlkKQo+ICAgCQltb2NrX2VuZ2luZV9mcmVlKGVuZ2luZSk7Cj4gLQlpOTE1X2dlbV9jb250ZXh0 c19maW5pKGk5MTUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiArCWk5MTVfZ2VtX2RyaXZlcl9yZWxlYXNlX19jb250ZXh0cyhpOTE1KTsKPiAgIAo+ICAgCWlu dGVsX3RpbWVsaW5lc19maW5pKGk5MTUpOwo+ICAgCj4gQEAgLTIwNiw3ICsyMDQsNyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqbW9ja19nZW1fZGV2aWNlKHZvaWQpCj4gICAJcmV0dXJuIGk5 MTU7Cj4gICAKPiAgIGVycl9jb250ZXh0Ogo+IC0JaTkxNV9nZW1fY29udGV4dHNfZmluaShpOTE1 KTsKPiArCWk5MTVfZ2VtX2RyaXZlcl9yZWxlYXNlX19jb250ZXh0cyhpOTE1KTsKPiAgIGVycl9l bmdpbmU6Cj4gICAJbW9ja19lbmdpbmVfZnJlZShpOTE1LT5lbmdpbmVbUkNTMF0pOwo+ICAgZXJy X3VubG9jazoKPiAKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4