From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 13/21] drm/i915: Pull i915_vma_pin under the vm->mutex Date: Tue, 17 Sep 2019 13:37:55 +0100 Message-ID: References: <20190902040303.14195-1-chris@chris-wilson.co.uk> <20190902040303.14195-13-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B41F6EC3C for ; Tue, 17 Sep 2019 12:38:00 +0000 (UTC) In-Reply-To: <20190902040303.14195-13-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 CgpPbiAwMi8wOS8yMDE5IDA1OjAyLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gUmVwbGFjZSB0aGUg c3RydWN0X211dGV4IHJlcXVpcmVtZW50IGZvciBwaW5uaW5nIHRoZSBpOTE1X3ZtYSB3aXRoIHRo ZQo+IGxvY2FsIHZtLT5tdXRleCBpbnN0ZWFkLiBOb3RlIHRoYXQgdGhlIHZtLT5tdXRleCBpcyB0 YWludGVkIGJ5IHRoZQo+IHNocmlua2VyICh3ZSByZXF1aXJlIHVuYmluZGluZyBmcm9tIGluc2lk ZSBmcy1yZWNsYWltKSBhbmQgc28gd2UgY2Fubm90Cj4gYWxsb2NhdGUgd2hpbGUgaG9sZGluZyB0 aGF0IG11dGV4LiBJbnN0ZWFkIHdlIGhhdmUgdG8gcHJlYWxsb2NhdGUKPiB3b3JrZXJzIHRvIGRv IGFsbG9jYXRlIGFuZCBhcHBseSB0aGUgUFRFIHVwZGF0ZXMgYWZ0ZXIgd2UgaGF2ZSB3ZQo+IHJl c2VydmVkIHRoZWlyIHNsb3QgaW4gdGhlIGRybV9tbSAodXNpbmcgZmVuY2VzIHRvIG9yZGVyIHRo ZSBQVEUgd3JpdGVzCj4gd2l0aCB0aGUgR1BVIHdvcmsgYW5kIHdpdGggbGF0ZXIgdW5iaW5kKS4K PiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j ICB8ICAyOSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmRldi5j ICAgIHwgICA4ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJs YXkuYyAgfCAgMTEgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NsaWVudF9i bHQuYyAgICB8ICAxMyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2Nv bnRleHQuYyAgIHwgIDIwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f ZG9tYWluLmMgICAgfCAgMTkgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYyAgICB8ICA0OCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX21tYW4uYyAgICAgIHwgIDI0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0LmMgICAgfCAgMzMgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9vYmplY3QuaCAgICB8ICAgNSArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fc2hyaW5rZXIuYyAgfCAgNzEgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fc3RvbGVuLmMgICAgfCAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV90aWxpbmcuYyAgICB8ICAxNSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYyAgIHwgIDI3ICstCj4gICAuLi4vZ3B1L2RybS9pOTE1 L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jICAgfCAgMjMgKy0KPiAgIC4uLi9kcm0vaTkxNS9n ZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8ICAxMiArLQo+ICAgLi4uL2RybS9pOTE1 L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jICAgIHwgICAyIC0KPiAgIC4uLi9kcm0vaTkx NS9nZW0vc2VsZnRlc3RzL2lndF9nZW1fdXRpbHMuYyAgICB8ICAgNyArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyAgICAgICAgICAgIHwgICA1ICstCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMgICAgfCAgIDQgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jICB8ICAxOSArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2FwZXJ0dXJlX2dtLmMgICAgICAgIHwgIDEyICstCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jICAgICAgICAgICAgfCAgOTQgKysrLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaCAgICAgICAgICAgIHwgICA3ICsK PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlX3R5cGVzLmggICAgICB8ICAgNSAr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgOTQg KystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYyAgICAgICAgIHwg IDIwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYyAgICAg fCAgIDUgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAg ICB8IDEwNCArKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAg ICAgICAgfCAgMzggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgICAg ICAgICAgICB8ICAzMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAg ICAgICAgICAgIHwgNDc2ICsrKysrKysrKysrKy0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV92bWEuaCAgICAgICAgICAgICAgIHwgIDc1ICsrLQo+ICAgLi4uL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYyAgIHwgIDM2ICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMgfCAgOTEgKystLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMgICAgIHwgICA4ICstCj4gICAzNiBmaWxl cyBjaGFuZ2VkLCA4MTggaW5zZXJ0aW9ucygrKSwgNjgyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNWUzYjIy ZTNmNjFkLi44MWMwZDdhMzVjNGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0yMDc5LDcgKzIwNzksNiBAQCBpbnRlbF9waW5fYW5k X2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgIAl1bnNpZ25lZCBp bnQgcGluY3RsOwo+ICAgCXUzMiBhbGlnbm1lbnQ7Cj4gICAKPiAtCVdBUk5fT04oIW11dGV4X2lz X2xvY2tlZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKPiAgIAlpZiAoV0FSTl9PTighaTkxNV9nZW1f b2JqZWN0X2lzX2ZyYW1lYnVmZmVyKG9iaikpKQo+ICAgCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFM KTsKPiAgIAo+IEBAIC0yMTYzLDggKzIxNjIsNiBAQCBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29i aihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgIAo+ICAgdm9pZCBpbnRlbF91bnBpbl9m Yl92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gICB7Cj4g LQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZtLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCj4gICAJaTkxNV9nZW1fb2JqZWN0X2xvY2sodm1hLT5vYmopOwo+ICAgCWlmIChmbGFncyAm IFBMQU5FX0hBU19GRU5DRSkKPiAgIAkJaTkxNV92bWFfdW5waW5fZmVuY2Uodm1hKTsKPiBAQCAt MzA2NSwxMiArMzA2MiwxMCBAQCBpbnRlbF9hbGxvY19pbml0aWFsX3BsYW5lX29iaihzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgIAkJcmV0dXJuIGZhbHNlOwo+ICAgCX0KPiAgIAo+IC0JbXV0 ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoZGV2X3ByaXYsCj4gICAJCQkJCQkJICAgICBi YXNlX2FsaWduZWQsCj4gICAJCQkJCQkJICAgICBiYXNlX2FsaWduZWQsCj4gICAJCQkJCQkJICAg ICBzaXplX2FsaWduZWQpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g ICAJaWYgKCFvYmopCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAo+IEBAIC0zMjMyLDEzICszMjI3 LDExIEBAIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFuZV9vYmooc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMsCj4gICAJaW50ZWxfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSA9Cj4gICAJ CWludGVsX2ZiX3BpdGNoKGZiLCAwLCBpbnRlbF9zdGF0ZS0+YmFzZS5yb3RhdGlvbik7Cj4gICAK PiAtCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAlpbnRlbF9zdGF0ZS0+dm1h ID0KPiAgIAkJaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooZmIsCj4gICAJCQkJCSAgICZpbnRl bF9zdGF0ZS0+dmlldywKPiAgIAkJCQkJICAgaW50ZWxfcGxhbmVfdXNlc19mZW5jZShpbnRlbF9z dGF0ZSksCj4gICAJCQkJCSAgICZpbnRlbF9zdGF0ZS0+ZmxhZ3MpOwo+IC0JbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJaWYgKElTX0VSUihpbnRlbF9zdGF0ZS0+dm1hKSkg ewo+ICAgCQlEUk1fRVJST1IoImZhaWxlZCB0byBwaW4gYm9vdCBmYiBvbiBwaXBlICVkOiAlbGlc biIsCj4gICAJCQkgIGludGVsX2NydGMtPnBpcGUsIFBUUl9FUlIoaW50ZWxfc3RhdGUtPnZtYSkp Owo+IEBAIC0xNDM2NCw4ICsxNDM1Nyw2IEBAIHN0YXRpYyB2b2lkIGZiX29ial9idW1wX3JlbmRl cl9wcmlvcml0eShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgICogYml0cy4g IFNvbWUgb2xkZXIgcGxhdGZvcm1zIG5lZWQgc3BlY2lhbCBwaHlzaWNhbCBhZGRyZXNzIGhhbmRs aW5nIGZvcgo+ICAgICogY3Vyc29yIHBsYW5lcy4KPiAgICAqCj4gLSAqIE11c3QgYmUgY2FsbGVk IHdpdGggc3RydWN0X211dGV4IGhlbGQuCj4gLSAqCj4gICAgKiBSZXR1cm5zIDAgb24gc3VjY2Vz cywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICAgICovCj4gICBpbnQKPiBAQCAt MTQ0MjIsMTUgKzE0NDEzLDggQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gLQlyZXQg PSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCWlmIChyZXQpIHsKPiAtCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiAt CQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAgIAlyZXQgPSBpbnRlbF9wbGFuZV9waW5fZmIodG9f aW50ZWxfcGxhbmVfc3RhdGUobmV3X3N0YXRlKSk7Cj4gICAKPiAtCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdl cyhvYmopOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gQEAgLTE0NDc5LDggKzE0 NDYzLDYgQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiAgICAqIEBvbGRfc3RhdGU6IHRoZSBzdGF0ZSBmcm9tIHRoZSBwcmV2aW91cyBtb2Rlc2V0Cj4g ICAgKgo+ICAgICogQ2xlYW5zIHVwIGEgZnJhbWVidWZmZXIgdGhhdCBoYXMganVzdCBiZWVuIHJl bW92ZWQgZnJvbSBhIHBsYW5lLgo+IC0gKgo+IC0gKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHN0cnVj dF9tdXRleCBoZWxkLgo+ICAgICovCj4gICB2b2lkCj4gICBpbnRlbF9jbGVhbnVwX3BsYW5lX2Zi KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+IEBAIC0xNDQ5Niw5ICsxNDQ3OCw3IEBAIGludGVs X2NsZWFudXBfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJfQo+ICAgCj4g ICAJLyogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBpbnRlbF9wcmVw YXJlX3BsYW5lX2ZiKCkhICovCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gICAJaW50ZWxfcGxhbmVfdW5waW5fZmIodG9faW50ZWxfcGxhbmVfc3RhdGUob2xk X3N0YXRlKSk7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK PiAgIH0KPiAgIAo+ICAgaW50Cj4gQEAgLTE0Njk4LDcgKzE0Njc4LDYgQEAgaW50ZWxfbGVnYWN5 X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJCQkgICB1MzIgc3Jj X3csIHUzMiBzcmNfaCwKPiAgIAkJCSAgIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAq Y3R4KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjcnRjLT5kZXYpOwo+ICAgCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0 ZSwgKm5ld19wbGFuZV9zdGF0ZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlID0KPiBAQCAtMTQ3NjQsMTMgKzE0NzQzLDkgQEAgaW50ZWxfbGVnYWN5X2N1cnNv cl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJaWYgKHJldCkKPiAgIAkJZ290 byBvdXRfZnJlZTsKPiAgIAo+IC0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZf cHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gb3V0X2ZyZWU7 Cj4gLQo+ICAgCXJldCA9IGludGVsX3BsYW5lX3Bpbl9mYih0b19pbnRlbF9wbGFuZV9zdGF0ZShu ZXdfcGxhbmVfc3RhdGUpKTsKPiAgIAlpZiAocmV0KQo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiAr CQlnb3RvIG91dF9mcmVlOwo+ICAgCj4gICAJaW50ZWxfZnJvbnRidWZmZXJfZmx1c2godG9faW50 ZWxfZnJvbnRidWZmZXIoZmIpLCBPUklHSU5fRkxJUCk7Cj4gICAJaW50ZWxfZnJvbnRidWZmZXJf dHJhY2sodG9faW50ZWxfZnJvbnRidWZmZXIob2xkX3BsYW5lX3N0YXRlLT5mYiksCj4gQEAgLTE0 ODAwLDggKzE0Nzc1LDYgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCj4gICAKPiAgIAlpbnRlbF9wbGFuZV91bnBpbl9mYih0b19pbnRlbF9wbGFu ZV9zdGF0ZShvbGRfcGxhbmVfc3RhdGUpKTsKPiAgIAo+IC1vdXRfdW5sb2NrOgo+IC0JbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICBvdXRfZnJlZToKPiAgIAlp ZiAobmV3X2NydGNfc3RhdGUpCj4gICAJCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZShjcnRjLCAm bmV3X2NydGNfc3RhdGUtPmJhc2UpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2ZiZGV2LmMKPiBpbmRleCBkNTllZWU1YzVkOWMuLmEzZGVhM2YyZGFjZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiZGV2LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiZGV2LmMKPiBAQCAtMjA0LDcgKzIw NCw2IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhl bHBlciwKPiAgIAkJc2l6ZXMtPmZiX2hlaWdodCA9IGludGVsX2ZiLT5iYXNlLmhlaWdodDsKPiAg IAl9Cj4gICAKPiAtCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmRldl9wcml2LT5ydW50aW1lX3BtKTsKPiAgIAo+ICAg CS8qIFBpbiB0aGUgR0dUVCB2bWEgZm9yIG91ciBhY2Nlc3MgdmlhIGluZm8tPnNjcmVlbl9iYXNl Lgo+IEBAIC0yNjYsNyArMjY1LDYgQEAgc3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqaGVscGVyLAo+ICAgCWlmYmRldi0+dm1hX2ZsYWdzID0gZmxhZ3M7Cj4g ICAKPiAgIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0sIHdha2Vy ZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJdmdhX3N3aXRj aGVyb29fY2xpZW50X2ZiX3NldChwZGV2LCBpbmZvKTsKPiAgIAlyZXR1cm4gMDsKPiAgIAo+IEBA IC0yNzQsNyArMjcyLDYgQEAgc3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqaGVscGVyLAo+ICAgCWludGVsX3VucGluX2ZiX3ZtYSh2bWEsIGZsYWdzKTsKPiAg IG91dF91bmxvY2s6Cj4gICAJaW50ZWxfcnVudGltZV9wbV9wdXQoJmRldl9wcml2LT5ydW50aW1l X3BtLCB3YWtlcmVmKTsKPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAg CXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiBAQCAtMjkxLDExICsyODgsOCBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9mYmRldl9kZXN0cm95KHN0cnVjdCBpbnRlbF9mYmRldiAqaWZiZGV2KQo+ICAgCj4g ICAJZHJtX2ZiX2hlbHBlcl9maW5pKCZpZmJkZXYtPmhlbHBlcik7Cj4gICAKPiAtCWlmIChpZmJk ZXYtPnZtYSkgewo+IC0JCW11dGV4X2xvY2soJmlmYmRldi0+aGVscGVyLmRldi0+c3RydWN0X211 dGV4KTsKPiArCWlmIChpZmJkZXYtPnZtYSkKPiAgIAkJaW50ZWxfdW5waW5fZmJfdm1hKGlmYmRl di0+dm1hLCBpZmJkZXYtPnZtYV9mbGFncyk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZpZmJkZXYtPmhl bHBlci5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQl9Cj4gICAKPiAgIAlpZiAoaWZiZGV2LT5mYikK PiAgIAkJZHJtX2ZyYW1lYnVmZmVyX3JlbW92ZSgmaWZiZGV2LT5mYi0+YmFzZSk7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCAyOWVkZmMz NDM3MTYuLjRmMzY1NTdiM2YzYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfb3ZlcmxheS5jCj4gQEAgLTEzMDMsMTUgKzEzMDMsMTEgQEAgc3RhdGljIGludCBn ZXRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LCBib29sIHVzZV9waHlz KQo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAgCWludCBlcnI7Cj4gICAKPiAtCW11dGV4 X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlvYmogPSBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX3N0b2xlbihpOTE1LCBQQUdFX1NJWkUpOwo+ICAgCWlmIChvYmogPT0gTlVM TCkKPiAgIAkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBQQUdF X1NJWkUpOwo+IC0JaWYgKElTX0VSUihvYmopKSB7Cj4gLQkJZXJyID0gUFRSX0VSUihvYmopOwo+ IC0JCWdvdG8gZXJyX3VubG9jazsKPiAtCX0KPiArCWlmIChJU19FUlIob2JqKSkKPiArCQlyZXR1 cm4gUFRSX0VSUihvYmopOwo+ICAgCj4gICAJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGlu KG9iaiwgTlVMTCwgMCwgMCwgUElOX01BUFBBQkxFKTsKPiAgIAlpZiAoSVNfRVJSKHZtYSkpIHsK PiBAQCAtMTMzMiwxMyArMTMyOCwxMCBAQCBzdGF0aWMgaW50IGdldF9yZWdpc3RlcnMoc3RydWN0 IGludGVsX292ZXJsYXkgKm92ZXJsYXksIGJvb2wgdXNlX3BoeXMpCj4gICAJfQo+ICAgCj4gICAJ b3ZlcmxheS0+cmVnX2JvID0gb2JqOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAgIAlyZXR1cm4gMDsKPiAgIAo+ICAgZXJyX3B1dF9ibzoKPiAgIAlpOTE1X2dl bV9vYmplY3RfcHV0KG9iaik7Cj4gLWVycl91bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NsaWVudF9ibHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jbGllbnRfYmx0LmMKPiBpbmRleCBmOTk5 MjA2NTI3NTEuLjllNzJiNDJhODZmNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fY2xpZW50X2JsdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2NsaWVudF9ibHQuYwo+IEBAIC0xNTIsNiArMTUyLDE3IEBAIHN0YXRpYyB2 b2lkIGNsZWFyX3BhZ2VzX2RtYV9mZW5jZV9jYihzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwKPiAg IAlpcnFfd29ya19xdWV1ZSgmdy0+aXJxX3dvcmspOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQg bW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQo+ICt7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWVyciA9IGk5MTVfcmVxdWVzdF9hd2FpdF9h Y3RpdmUocnEsICZ2bWEtPmFjdGl2ZSk7Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4g Kwo+ICsJcmV0dXJuIGk5MTVfYWN0aXZlX3JlZigmdm1hLT5hY3RpdmUsIHJxLT50aW1lbGluZSwg cnEpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgY2xlYXJfcGFnZXNfd29ya2VyKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKPiAgIHsKPiAgIAlzdHJ1Y3QgY2xlYXJfcGFnZXNfd29yayAqdyA9 IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKncpLCB3b3JrKTsKPiBAQCAtMjExLDcgKzIyMiw3 IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3BhZ2VzX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCj4gICAJICoga2VlcCB0cmFjayBvZiB0aGUgR1BVIGFjdGl2aXR5IHdpdGhpbiB0aGlzIHZt YS9yZXF1ZXN0LCBhbmQKPiAgIAkgKiBwcm9wYWdhdGUgdGhlIHNpZ25hbCBmcm9tIHRoZSByZXF1 ZXN0IHRvIHctPmRtYS4KPiAgIAkgKi8KPiAtCWVyciA9IGk5MTVfYWN0aXZlX3JlZigmdm1hLT5h Y3RpdmUsIHJxLT50aW1lbGluZSwgcnEpOwo+ICsJZXJyID0gbW92ZV90b19hY3RpdmUodm1hLCBy cSk7Cj4gICAJaWYgKGVycikKPiAgIAkJZ290byBvdXRfcmVxdWVzdDsKPiAgIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IGYxYzBlNWQ5NThm My4uNjUzZjcyNzUzMDZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fY29udGV4dC5jCj4gQEAgLTMxMyw4ICszMTMsNiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9j b250ZXh0X2ZyZWUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAlHRU1fQlVHX09O KCFpOTE1X2dlbV9jb250ZXh0X2lzX2Nsb3NlZChjdHgpKTsKPiAgIAo+ICAgCXJlbGVhc2VfaHdf aWQoY3R4KTsKPiAtCWlmIChjdHgtPnZtKQo+IC0JCWk5MTVfdm1fcHV0KGN0eC0+dm0pOwo+ICAg Cj4gICAJZnJlZV9lbmdpbmVzKHJjdV9hY2Nlc3NfcG9pbnRlcihjdHgtPmVuZ2luZXMpKTsKPiAg IAltdXRleF9kZXN0cm95KCZjdHgtPmVuZ2luZXNfbXV0ZXgpOwo+IEBAIC0zNzksOSArMzc3LDEz IEBAIHZvaWQgaTkxNV9nZW1fY29udGV4dF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpCj4gICAK PiAgIHN0YXRpYyB2b2lkIGNvbnRleHRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCkKPiAgIHsKPiArCWk5MTVfZ2VtX2NvbnRleHRfc2V0X2Nsb3NlZChjdHgpOwo+ICsKPiArCWlm IChjdHgtPnZtKQo+ICsJCWk5MTVfdm1fY2xvc2UoY3R4LT52bSk7Cj4gKwo+ICAgCW11dGV4X2xv Y2soJmN0eC0+bXV0ZXgpOwo+ICAgCj4gLQlpOTE1X2dlbV9jb250ZXh0X3NldF9jbG9zZWQoY3R4 KTsKPiAgIAljdHgtPmZpbGVfcHJpdiA9IEVSUl9QVFIoLUVCQURGKTsKPiAgIAo+ICAgCS8qCj4g QEAgLTQ3NCw3ICs0NzYsNyBAQCBfX3NldF9wcGd0dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LCBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgIAo+ICAgCUdFTV9CVUdfT04o b2xkICYmIGk5MTVfdm1faXNfNGx2bCh2bSkgIT0gaTkxNV92bV9pc180bHZsKG9sZCkpOwo+ICAg Cj4gLQljdHgtPnZtID0gaTkxNV92bV9nZXQodm0pOwo+ICsJY3R4LT52bSA9IGk5MTVfdm1fb3Bl bih2bSk7Cj4gICAJY29udGV4dF9hcHBseV9hbGwoY3R4LCBfX2FwcGx5X3BwZ3R0LCB2bSk7Cj4g ICAKPiAgIAlyZXR1cm4gb2xkOwo+IEBAIC00ODgsNyArNDkwLDcgQEAgc3RhdGljIHZvaWQgX19h c3NpZ25fcHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAo+ICAgCXZtID0g X19zZXRfcHBndHQoY3R4LCB2bSk7Cj4gICAJaWYgKHZtKQo+IC0JCWk5MTVfdm1fcHV0KHZtKTsK PiArCQlpOTE1X3ZtX2Nsb3NlKHZtKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgX19zZXRf dGltZWxpbmUoc3RydWN0IGludGVsX3RpbWVsaW5lICoqZHN0LAo+IEBAIC05NTMsNyArOTU1LDcg QEAgc3RhdGljIGludCBnZXRfcHBndHQoc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmls ZV9wcml2LAo+ICAgCWlmIChyZXQgPCAwKQo+ICAgCQlnb3RvIGVycl91bmxvY2s7Cj4gICAKPiAt CWk5MTVfdm1fZ2V0KHZtKTsKPiArCWk5MTVfdm1fb3Blbih2bSk7Cj4gICAKPiAgIAlhcmdzLT5z aXplID0gMDsKPiAgIAlhcmdzLT52YWx1ZSA9IHJldDsKPiBAQCAtOTczLDcgKzk3NSw3IEBAIHN0 YXRpYyB2b2lkIHNldF9wcGd0dF9iYXJyaWVyKHZvaWQgKmRhdGEpCj4gICAJaWYgKElOVEVMX0dF TihvbGQtPmk5MTUpIDwgOCkKPiAgIAkJZ2VuNl9wcGd0dF91bnBpbl9hbGwoaTkxNV92bV90b19w cGd0dChvbGQpKTsKPiAgIAo+IC0JaTkxNV92bV9wdXQob2xkKTsKPiArCWk5MTVfdm1fY2xvc2Uo b2xkKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBlbWl0X3BwZ3R0X3VwZGF0ZShzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkKPiBAQCAtMTA5MCw4ICsxMDkyLDggQEAgc3Rh dGljIGludCBzZXRfcHBndHQoc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2 LAo+ICAgCQkJCSAgIHNldF9wcGd0dF9iYXJyaWVyLAo+ICAgCQkJCSAgIG9sZCk7Cj4gICAJaWYg KGVycikgewo+IC0JCWk5MTVfdm1fcHV0KF9fc2V0X3BwZ3R0KGN0eCwgb2xkKSk7Cj4gLQkJaTkx NV92bV9wdXQob2xkKTsKPiArCQlpOTE1X3ZtX2Nsb3NlKF9fc2V0X3BwZ3R0KGN0eCwgb2xkKSk7 Cj4gKwkJaTkxNV92bV9jbG9zZShvbGQpOwo+ICAgCX0KPiAgIAo+ICAgdW5sb2NrOgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9tYWluLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9tYWluLmMKPiBpbmRleCBmMGM0MzdiNmU5 OTUuLjQ2YTIzNDA5ZTFjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fZG9tYWluLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fZG9tYWluLmMKPiBAQCAtMjAyLDcgKzIwMiwxMSBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3Nl dF9jYWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQkgICAg aTkxNV9nZW1fdmFsaWRfZ3R0X3NwYWNlKHZtYSwgY2FjaGVfbGV2ZWwpKQo+ICAgCQkJY29udGlu dWU7Cj4gICAKPiAtCQlyZXQgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKPiArCQlyZXQgPSBtdXRl eF9sb2NrX2ludGVycnVwdGlibGUoJnZtYS0+dm0tPm11dGV4KTsKPiArCQlpZiAoIXJldCkgewo+ ICsJCQlyZXQgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKPiArCQkJbXV0ZXhfdW5sb2NrKCZ2bWEt PnZtLT5tdXRleCk7Cj4gKwkJfQo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAg IAo+IEBAIC0yODgsNyArMjkyLDEyIEBAIGludCBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xl dmVsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCQlpZiAoIWRybV9tbV9u b2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiAgIAkJCQljb250aW51ZTsKPiAgIAo+IC0JCQly ZXQgPSBpOTE1X3ZtYV9iaW5kKHZtYSwgY2FjaGVfbGV2ZWwsIFBJTl9VUERBVEUpOwo+ICsJCQkv KiBXYWl0IGZvciBhbiBlYXJsaWVyIGFzeW5jIGJpbmQgKi8KPiArCQkJcmV0ID0gaTkxNV9hY3Rp dmVfd2FpdCgmdm1hLT5hY3RpdmUpOwo+ICsJCQlpZiAocmV0KQo+ICsJCQkJcmV0dXJuIHJldDsK PiArCj4gKwkJCXJldCA9IGk5MTVfdm1hX2JpbmQodm1hLCBjYWNoZV9sZXZlbCwgUElOX1VQREFU RSwgTlVMTCk7Cj4gICAJCQlpZiAocmV0KQo+ICAgCQkJCXJldHVybiByZXQ7Cj4gICAJCX0KPiBA QCAtMzg5LDE2ICszOTgsMTEgQEAgaW50IGk5MTVfZ2VtX3NldF9jYWNoaW5nX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBv dXQ7Cj4gICAKPiAtCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gb3V0Owo+IC0KPiAgIAlyZXQgPSBp OTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7Cj4gICAJaWYgKHJldCA9PSAw KSB7Cj4gICAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBsZXZl bCk7Cj4gICAJCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKPiAgIAl9Cj4gLQltdXRleF91 bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICBvdXQ6Cj4gICAJaTkxNV9n ZW1fb2JqZWN0X3B1dChvYmopOwo+IEBAIC00ODMsNiArNDg3LDcgQEAgc3RhdGljIHZvaWQgaTkx NV9nZW1fb2JqZWN0X2J1bXBfaW5hY3RpdmVfZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQo+ICAgCQlpZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiAg IAkJCWNvbnRpbnVlOwo+ICAgCj4gKwkJR0VNX0JVR19PTih2bWEtPnZtICE9ICZpOTE1LT5nZ3R0 LnZtKTsKPiAgIAkJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmJvdW5k X2xpc3QpOwo+ICAgCX0KPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmdndHQudm0ubXV0ZXgpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGlu ZGV4IGMwNDkxOTlhMWRmNS4uYzNkZDhjZTdlMmI3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTU1MCw4ICs1NTAsMTEgQEAg ZWJfYWRkX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPiAgIAkJZWJfdW5yZXNlcnZl X3ZtYSh2bWEsIHZtYS0+ZXhlY19mbGFncyk7Cj4gICAKPiAgIAkJbGlzdF9hZGRfdGFpbCgmdm1h LT5leGVjX2xpbmssICZlYi0+dW5ib3VuZCk7Cj4gLQkJaWYgKGRybV9tbV9ub2RlX2FsbG9jYXRl ZCgmdm1hLT5ub2RlKSkKPiArCQlpZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUp KSB7Cj4gKwkJCW11dGV4X2xvY2soJnZtYS0+dm0tPm11dGV4KTsKPiAgIAkJCWVyciA9IGk5MTVf dm1hX3VuYmluZCh2bWEpOwo+ICsJCQltdXRleF91bmxvY2soJnZtYS0+dm0tPm11dGV4KTsKPiAr CQl9Cj4gICAJCWlmICh1bmxpa2VseShlcnIpKQo+ICAgCQkJdm1hLT5leGVjX2ZsYWdzID0gTlVM TDsKPiAgIAl9Cj4gQEAgLTY5OCw3ICs3MDEsOSBAQCBzdGF0aWMgaW50IGViX3Jlc2VydmUoc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gICAKPiAgIAkJY2FzZSAxOgo+ICAgCQkJLyogVG9v IGZyYWdtZW50ZWQsIHVuYmluZCBldmVyeXRoaW5nIGFuZCByZXRyeSAqLwo+ICsJCQltdXRleF9s b2NrKCZlYi0+Y29udGV4dC0+dm0tPm11dGV4KTsKPiAgIAkJCWVyciA9IGk5MTVfZ2VtX2V2aWN0 X3ZtKGViLT5jb250ZXh0LT52bSk7Cj4gKwkJCW11dGV4X3VubG9jaygmZWItPmNvbnRleHQtPnZt LT5tdXRleCk7Cj4gICAJCQlpZiAoZXJyKQo+ICAgCQkJCXJldHVybiBlcnI7Cj4gICAJCQlicmVh azsKPiBAQCAtOTcyLDcgKzk3Nyw5IEBAIHN0YXRpYyB2b2lkIHJlbG9jX2NhY2hlX3Jlc2V0KHN0 cnVjdCByZWxvY19jYWNoZSAqY2FjaGUpCj4gICAJCQlnZ3R0LT52bS5jbGVhcl9yYW5nZSgmZ2d0 dC0+dm0sCj4gICAJCQkJCSAgICAgY2FjaGUtPm5vZGUuc3RhcnQsCj4gICAJCQkJCSAgICAgY2Fj aGUtPm5vZGUuc2l6ZSk7Cj4gKwkJCW11dGV4X2xvY2soJmdndHQtPnZtLm11dGV4KTsKPiAgIAkJ CWRybV9tbV9yZW1vdmVfbm9kZSgmY2FjaGUtPm5vZGUpOwo+ICsJCQltdXRleF91bmxvY2soJmdn dHQtPnZtLm11dGV4KTsKPiAgIAkJfSBlbHNlIHsKPiAgIAkJCWk5MTVfdm1hX3VucGluKChzdHJ1 Y3QgaTkxNV92bWEgKiljYWNoZS0+bm9kZS5tbSk7Cj4gICAJCX0KPiBAQCAtMTA0NywxMSArMTA1 NCwxMyBAQCBzdGF0aWMgdm9pZCAqcmVsb2NfaW9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiAgIAkJCQkJICAgICAgIFBJTl9OT0VWSUNUKTsKPiAgIAkJaWYgKElTX0VSUih2 bWEpKSB7Cj4gICAJCQltZW1zZXQoJmNhY2hlLT5ub2RlLCAwLCBzaXplb2YoY2FjaGUtPm5vZGUp KTsKPiArCQkJbXV0ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCQkJZXJyID0gZHJtX21t X2luc2VydF9ub2RlX2luX3JhbmdlCj4gICAJCQkJKCZnZ3R0LT52bS5tbSwgJmNhY2hlLT5ub2Rl LAo+ICAgCQkJCSBQQUdFX1NJWkUsIDAsIEk5MTVfQ09MT1JfVU5FVklDVEFCTEUsCj4gICAJCQkJ IDAsIGdndHQtPm1hcHBhYmxlX2VuZCwKPiAgIAkJCQkgRFJNX01NX0lOU0VSVF9MT1cpOwo+ICsJ CQltdXRleF91bmxvY2soJmdndHQtPnZtLm11dGV4KTsKPiAgIAkJCWlmIChlcnIpIC8qIG5vIGlu YWN0aXZlIGFwZXJ0dXJlIHNwYWNlLCB1c2UgY3B1IHJlbG9jICovCj4gICAJCQkJcmV0dXJuIE5V TEw7Cj4gICAJCX0gZWxzZSB7Cj4gQEAgLTE0MTYsNyArMTQyNSw3IEBAIGViX3JlbG9jYXRlX2Vu dHJ5KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAo+ICAgCQlpZiAocmVsb2MtPndyaXRlX2Rv bWFpbiA9PSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04gJiYKPiAgIAkJICAgIElTX0dFTihl Yi0+aTkxNSwgNikpIHsKPiAgIAkJCWVyciA9IGk5MTVfdm1hX2JpbmQodGFyZ2V0LCB0YXJnZXQt Pm9iai0+Y2FjaGVfbGV2ZWwsCj4gLQkJCQkJICAgIFBJTl9HTE9CQUwpOwo+ICsJCQkJCSAgICBQ SU5fR0xPQkFMLCBOVUxMKTsKPiAgIAkJCWlmIChXQVJOX09OQ0UoZXJyLAo+ICAgCQkJCSAgICAg ICJVbmV4cGVjdGVkIGZhaWx1cmUgdG8gYmluZCB0YXJnZXQgVk1BISIpKQo+ICAgCQkJCXJldHVy biBlcnI7Cj4gQEAgLTIxNDAsMzUgKzIxNDksNiBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVz dCAqZWJfdGhyb3R0bGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAgCXJldHVybiBpOTE1 X3JlcXVlc3RfZ2V0KHJxKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50Cj4gLV9fZWJfcGluX2Nv bnRleHQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSkKPiAtewo+IC0JaW50IGVycjsKPiAtCj4gLQlpZiAobGlrZWx5KGF0b21pY19pbmNfbm90X3pl cm8oJmNlLT5waW5fY291bnQpKSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQllcnIgPSBtdXRleF9s b2NrX2ludGVycnVwdGlibGUoJmViLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWlmIChl cnIpCj4gLQkJcmV0dXJuIGVycjsKPiAtCj4gLQllcnIgPSBfX2ludGVsX2NvbnRleHRfZG9fcGlu KGNlKTsKPiAtCW11dGV4X3VubG9jaygmZWItPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0K PiAtCXJldHVybiBlcnI7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkCj4gLV9fZWJfdW5waW5fY29u dGV4dChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQo+IC17Cj4gLQlpZiAobGlrZWx5KGF0b21pY19hZGRfdW5sZXNzKCZjZS0+cGluX2NvdW50LCAt MSwgMSkpKQo+IC0JCXJldHVybjsKPiAtCj4gLQltdXRleF9sb2NrKCZlYi0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAtCW11dGV4X3VubG9j aygmZWItPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC19Cj4gLQo+ICAgc3RhdGljIGludCBf X2ViX3Bpbl9lbmdpbmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsOwo+IEBAIC0y MTg4LDcgKzIxNjgsNyBAQCBzdGF0aWMgaW50IF9fZWJfcGluX2VuZ2luZShzdHJ1Y3QgaTkxNV9l eGVjYnVmZmVyICplYiwgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAgCSAqIEdHVFQgc3Bh Y2UsIHNvIGRvIHRoaXMgZmlyc3QgYmVmb3JlIHdlIHJlc2VydmUgYSBzZXFubyBmb3IKPiAgIAkg KiBvdXJzZWx2ZXMuCj4gICAJICovCj4gLQllcnIgPSBfX2ViX3Bpbl9jb250ZXh0KGViLCBjZSk7 Cj4gKwllcnIgPSBpbnRlbF9jb250ZXh0X3BpbihjZSk7Cj4gICAJaWYgKGVycikKPiAgIAkJcmV0 dXJuIGVycjsKPiAgIAo+IEBAIC0yMjMyLDcgKzIyMTIsNyBAQCBzdGF0aWMgaW50IF9fZWJfcGlu X2VuZ2luZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgc3RydWN0IGludGVsX2NvbnRleHQg KmNlKQo+ICAgCWludGVsX2NvbnRleHRfZXhpdChjZSk7Cj4gICAJaW50ZWxfY29udGV4dF90aW1l bGluZV91bmxvY2sodGwpOwo+ICAgZXJyX3VucGluOgo+IC0JX19lYl91bnBpbl9jb250ZXh0KGVi LCBjZSk7Cj4gKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAg fQo+ICAgCj4gQEAgLTIyNDUsNyArMjIyNSw3IEBAIHN0YXRpYyB2b2lkIGViX3VucGluX2VuZ2lu ZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAgIAlpbnRlbF9jb250ZXh0X2V4aXQoY2Up Owo+ICAgCW11dGV4X3VubG9jaygmdGwtPm11dGV4KTsKPiAgIAo+IC0JX19lYl91bnBpbl9jb250 ZXh0KGViLCBjZSk7Cj4gKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAgIH0KPiAgIAo+ICAg c3RhdGljIHVuc2lnbmVkIGludAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fbW1hbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21t YW4uYwo+IGluZGV4IDgyZGIyYjc4MzEyMy4uOWE4YzMwN2M1YWViIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jCj4gQEAgLTI1MSwxNiArMjUxLDYgQEAgdm1f ZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPiAgIAkJZ290byBl cnJfcnBtOwo+ICAgCX0KPiAgIAo+IC0JcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGli bGUoZGV2KTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBlcnJfcmVzZXQ7Cj4gLQo+IC0JLyogQWNj ZXNzIHRvIHNub29wYWJsZSBwYWdlcyB0aHJvdWdoIHRoZSBHVFQgaXMgaW5jb2hlcmVudC4gKi8K PiAtCWlmIChvYmotPmNhY2hlX2xldmVsICE9IEk5MTVfQ0FDSEVfTk9ORSAmJiAhSEFTX0xMQyhp OTE1KSkgewo+IC0JCXJldCA9IC1FRkFVTFQ7Cj4gLQkJZ290byBlcnJfdW5sb2NrOwo+IC0JfQo+ IC0KPiAgIAkvKiBOb3cgcGluIGl0IGludG8gdGhlIEdUVCBhcyBuZWVkZWQgKi8KPiAgIAl2bWEg PSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxMLCAwLCAwLAo+ICAgCQkJCSAgICAg ICBQSU5fTUFQUEFCTEUgfAo+IEBAIC0yOTMsNyArMjgzLDEzIEBAIHZtX2ZhdWx0X3QgaTkxNV9n ZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gICAJfQo+ICAgCWlmIChJU19FUlIodm1h KSkgewo+ICAgCQlyZXQgPSBQVFJfRVJSKHZtYSk7Cj4gLQkJZ290byBlcnJfdW5sb2NrOwo+ICsJ CWdvdG8gZXJyX3Jlc2V0Owo+ICsJfQo+ICsKPiArCS8qIEFjY2VzcyB0byBzbm9vcGFibGUgcGFn ZXMgdGhyb3VnaCB0aGUgR1RUIGlzIGluY29oZXJlbnQuICovCj4gKwlpZiAob2JqLT5jYWNoZV9s ZXZlbCAhPSBJOTE1X0NBQ0hFX05PTkUgJiYgIUhBU19MTEMoaTkxNSkpIHsKPiArCQlyZXQgPSAt RUZBVUxUOwo+ICsJCWdvdG8gZXJyX3VucGluOwo+ICAgCX0KCldoeSBoYXZlIHlvdSBtb3ZlZCB0 aGlzIGNoZWNrIHRvIGFmdGVyIHBpbm5pbmc/Cgo+ICAgCj4gICAJcmV0ID0gaTkxNV92bWFfcGlu X2ZlbmNlKHZtYSk7Cj4gQEAgLTMyMSwxNCArMzE3LDEyIEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1f ZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gICAJCWludGVsX3dha2VyZWZfYXV0bygmaTkx NS0+Z2d0dC51c2VyZmF1bHRfd2FrZXJlZiwKPiAgIAkJCQkgICBtc2Vjc190b19qaWZmaWVzX3Rp bWVvdXQoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkpOwo+ICAgCj4gLQlp OTE1X3ZtYV9zZXRfZ2d0dF93cml0ZSh2bWEpOwo+IC0KPiArCWlmICh3cml0ZSkKPiArCQlpOTE1 X3ZtYV9zZXRfZ2d0dF93cml0ZSh2bWEpOwoKTm9pc2UgZm9yIHdoYXQgdGhpcyBwYXRjaCBpcyBj b25jZXJuZWQ/Cgo+ICAgZXJyX2ZlbmNlOgo+ICAgCWk5MTVfdm1hX3VucGluX2ZlbmNlKHZtYSk7 Cj4gICBlcnJfdW5waW46Cj4gICAJX19pOTE1X3ZtYV91bnBpbih2bWEpOwo+IC1lcnJfdW5sb2Nr Ogo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICBlcnJfcmVzZXQ6Cj4g ICAJaW50ZWxfZ3RfcmVzZXRfdW5sb2NrKGdndHQtPnZtLmd0LCBzcmN1KTsKPiAgIGVycl9ycG06 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYwo+IGluZGV4IDBl ZjYwZGFlMjNhNy4uZGJmOWJlOWE3OWY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9vYmplY3QuYwo+IEBAIC0xNTUsMjEgKzE1NSwzMCBAQCBzdGF0aWMgdm9pZCBf X2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAg IAo+ICAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7 Cj4gICAJbGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIG9uLCBmcmVlZCwgZnJlZWQpIHsK PiAtCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZuOwo+IC0KPiAgIAkJdHJhY2VfaTkxNV9nZW1f b2JqZWN0X2Rlc3Ryb3kob2JqKTsKPiAgIAo+IC0JCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+IC0KPiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2biwgJm9i ai0+dm1hLmxpc3QsIG9ial9saW5rKSB7Cj4gLQkJCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfYWN0 aXZlKHZtYSkpOwo+IC0JCQlhdG9taWNfYW5kKH5JOTE1X1ZNQV9QSU5fTUFTSywgJnZtYS0+Zmxh Z3MpOwo+IC0JCQlpOTE1X3ZtYV9kZXN0cm95KHZtYSk7Cj4gKwkJaWYgKCFsaXN0X2VtcHR5KCZv YmotPnZtYS5saXN0KSkgewo+ICsJCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCj4gKwkJCS8q Cj4gKwkJCSAqIE5vdGUgdGhhdCB0aGUgdm1hIGtlZXBzIGFuIG9iamVjdCByZWZlcmVuY2Ugd2hp bGUKPiArCQkJICogaXQgaXMgYWN0aXZlLCBzbyBpdCAqc2hvdWxkKiBub3Qgc2xlZXAgd2hpbGUg d2UKPiArCQkJICogZGVzdHJveSBpdC4gT3VyIGRlYnVnIGNvZGUgZXJycyBpbnNpdHMgaXQgKm1p Z2h0Ki4KPiArCQkJICogRm9yIHRoZSBtb21lbnQsIHBsYXkgYWxvbmcuCj4gKwkJCSAqLwo+ICsJ CQlzcGluX2xvY2soJm9iai0+dm1hLmxvY2spOwo+ICsJCQl3aGlsZSAoKHZtYSA9IGxpc3RfZmly c3RfZW50cnlfb3JfbnVsbCgmb2JqLT52bWEubGlzdCwKPiArCQkJCQkJCSAgICAgICBzdHJ1Y3Qg aTkxNV92bWEsCj4gKwkJCQkJCQkgICAgICAgb2JqX2xpbmspKSkgCgpXaGF0IGlzIHRoZSBwb2lu dCBvZiBoYXZpbmcgYSB3aGlsZSBsb29wIGluc2lkZSB0b3AtbGV2ZWwgaWYgIWxpc3RfZW1wdHkg CmNoZWNrPyBMb29rcyB0aGVvcmV0aWNhbGx5IHJhY3ksIGFuZCBldmVuIGlmIHRoYXQgaXMgaXJy ZWxldmFudCwgaXQgCndvdWxkIGJlIGNsZWFyZXIgdG8ganVzdCBkbyB0aGUgd2hpbGUgbG9vcC4K CnsKPiArCQkJCUdFTV9CVUdfT04odm1hLT5vYmogIT0gb2JqKTsKPiArCQkJCXNwaW5fdW5sb2Nr KCZvYmotPnZtYS5sb2NrKTsKPiArCj4gKwkJCQlpOTE1X3ZtYV9kZXN0cm95KHZtYSk7Cj4gKwo+ ICsJCQkJc3Bpbl9sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiArCQkJfQo+ICsJCQlzcGluX3VubG9j aygmb2JqLT52bWEubG9jayk7Cj4gICAJCX0KPiAtCQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZv YmotPnZtYS5saXN0KSk7Cj4gLQkJR0VNX0JVR19PTighUkJfRU1QVFlfUk9PVCgmb2JqLT52bWEu dHJlZSkpOwo+IC0KPiAtCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICAgCj4gICAJCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJm9iai0+YmluZF9jb3VudCkpOwo+ICAg CQlHRU1fQlVHX09OKG9iai0+dXNlcmZhdWx0X2NvdW50KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4gaW5kZXggMjliOWVkZGM0YzdmLi5hNzhhZjI1ZGNl MzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVj dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4g QEAgLTEwNiw2ICsxMDYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF9s b2NrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJZG1hX3Jlc3ZfbG9jayhv YmotPmJhc2UucmVzdiwgTlVMTCk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlubGluZSBib29sIGk5 MTVfZ2VtX29iamVjdF90cnlsb2NrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g K3sKPiArCXJldHVybiBkbWFfcmVzdl90cnlsb2NrKG9iai0+YmFzZS5yZXN2KTsKPiArfQo+ICsK PiAgIHN0YXRpYyBpbmxpbmUgaW50Cj4gICBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRp YmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaHJpbmtlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3Nocmlua2VyLmMKPiBpbmRleCBkMmMwNWQ3NTI5MDku LmZkNjA0ZWExMmY3ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fc2hyaW5rZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9zaHJpbmtlci5jCj4gQEAgLTE2LDQwICsxNiw2IEBACj4gICAKPiAgICNpbmNsdWRlICJpOTE1 X3RyYWNlLmgiCj4gICAKPiAtc3RhdGljIGJvb2wgc2hyaW5rZXJfbG9jayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJICB1bnNpZ25lZCBpbnQgZmxhZ3MsCj4gLQkJCSAgYm9v bCAqdW5sb2NrKQo+IC17Cj4gLQlzdHJ1Y3QgbXV0ZXggKm0gPSAmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleDsKPiAtCj4gLQlzd2l0Y2ggKG11dGV4X3RyeWxvY2tfcmVjdXJzaXZlKG0pKSB7Cj4gLQlj YXNlIE1VVEVYX1RSWUxPQ0tfUkVDVVJTSVZFOgo+IC0JCSp1bmxvY2sgPSBmYWxzZTsKPiAtCQly ZXR1cm4gdHJ1ZTsKPiAtCj4gLQljYXNlIE1VVEVYX1RSWUxPQ0tfRkFJTEVEOgo+IC0JCSp1bmxv Y2sgPSBmYWxzZTsKPiAtCQlpZiAoZmxhZ3MgJiBJOTE1X1NIUklOS19BQ1RJVkUgJiYKPiAtCQkg ICAgbXV0ZXhfbG9ja19raWxsYWJsZV9uZXN0ZWQobSwgSTkxNV9NTV9TSFJJTktFUikgPT0gMCkK PiAtCQkJKnVubG9jayA9IHRydWU7Cj4gLQkJcmV0dXJuICp1bmxvY2s7Cj4gLQo+IC0JY2FzZSBN VVRFWF9UUllMT0NLX1NVQ0NFU1M6Cj4gLQkJKnVubG9jayA9IHRydWU7Cj4gLQkJcmV0dXJuIHRy dWU7Cj4gLQl9Cj4gLQo+IC0JQlVHKCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHNocmlua2Vy X3VubG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9vbCB1bmxvY2spCj4gLXsK PiAtCWlmICghdW5sb2NrKQo+IC0JCXJldHVybjsKPiAtCj4gLQltdXRleF91bmxvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC19Cj4gLQo+ICAgc3RhdGljIGJvb2wgc3dhcF9hdmFpbGFi bGUodm9pZCkKPiAgIHsKPiAgIAlyZXR1cm4gZ2V0X25yX3N3YXBfcGFnZXMoKSA+IDA7Cj4gQEAg LTE1NSwxMCArMTIxLDYgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmID0gMDsKPiAgIAl1bnNpZ25lZCBs b25nIGNvdW50ID0gMDsKPiAgIAl1bnNpZ25lZCBsb25nIHNjYW5uZWQgPSAwOwo+IC0JYm9vbCB1 bmxvY2s7Cj4gLQo+IC0JaWYgKCFzaHJpbmtlcl9sb2NrKGk5MTUsIHNocmluaywgJnVubG9jaykp Cj4gLQkJcmV0dXJuIDA7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIFdoZW4gc2hyaW5raW5nIHRoZSBh Y3RpdmUgbGlzdCwgd2Ugc2hvdWxkIGFsc28gY29uc2lkZXIgYWN0aXZlCj4gQEAgLTI2OCw4ICsy MzAsNiBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4g ICAJaWYgKHNocmluayAmIEk5MTVfU0hSSU5LX0JPVU5EKQo+ICAgCQlpbnRlbF9ydW50aW1lX3Bt X3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gICAKPiAtCXNocmlua2VyX3VubG9j ayhpOTE1LCB1bmxvY2spOwo+IC0KPiAgIAlpZiAobnJfc2Nhbm5lZCkKPiAgIAkJKm5yX3NjYW5u ZWQgKz0gc2Nhbm5lZDsKPiAgIAlyZXR1cm4gY291bnQ7Cj4gQEAgLTMzOSwxOSArMjk5LDE0IEBA IGk5MTVfZ2VtX3Nocmlua2VyX3NjYW4oc3RydWN0IHNocmlua2VyICpzaHJpbmtlciwgc3RydWN0 IHNocmlua19jb250cm9sICpzYykKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 Cj4gICAJCWNvbnRhaW5lcl9vZihzaHJpbmtlciwgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUsIG1t LnNocmlua2VyKTsKPiAgIAl1bnNpZ25lZCBsb25nIGZyZWVkOwo+IC0JYm9vbCB1bmxvY2s7Cj4g ICAKPiAgIAlzYy0+bnJfc2Nhbm5lZCA9IDA7Cj4gICAKPiAtCWlmICghc2hyaW5rZXJfbG9jayhp OTE1LCAwLCAmdW5sb2NrKSkKPiAtCQlyZXR1cm4gU0hSSU5LX1NUT1A7Cj4gLQo+ICAgCWZyZWVk ID0gaTkxNV9nZW1fc2hyaW5rKGk5MTUsCj4gICAJCQkJc2MtPm5yX3RvX3NjYW4sCj4gICAJCQkJ JnNjLT5ucl9zY2FubmVkLAo+ICAgCQkJCUk5MTVfU0hSSU5LX0JPVU5EIHwKPiAtCQkJCUk5MTVf U0hSSU5LX1VOQk9VTkQgfAo+IC0JCQkJSTkxNV9TSFJJTktfV1JJVEVCQUNLKTsKPiArCQkJCUk5 MTVfU0hSSU5LX1VOQk9VTkQpOwo+ICAgCWlmIChzYy0+bnJfc2Nhbm5lZCA8IHNjLT5ucl90b19z Y2FuICYmIGN1cnJlbnRfaXNfa3N3YXBkKCkpIHsKPiAgIAkJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7Cj4gICAKPiBAQCAtMzY2LDggKzMyMSw2IEBAIGk5MTVfZ2VtX3Nocmlua2VyX3NjYW4oc3Ry dWN0IHNocmlua2VyICpzaHJpbmtlciwgc3RydWN0IHNocmlua19jb250cm9sICpzYykKPiAgIAkJ fQo+ICAgCX0KPiAgIAo+IC0Jc2hyaW5rZXJfdW5sb2NrKGk5MTUsIHVubG9jayk7Cj4gLQo+ICAg CXJldHVybiBzYy0+bnJfc2Nhbm5lZCA/IGZyZWVkIDogU0hSSU5LX1NUT1A7Cj4gICB9Cj4gICAK PiBAQCAtMzg0LDYgKzMzNyw3IEBAIGk5MTVfZ2VtX3Nocmlua2VyX29vbShzdHJ1Y3Qgbm90aWZp ZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpCj4gICAJZnJlZWRf cGFnZXMgPSAwOwo+ICAgCXdpdGhfaW50ZWxfcnVudGltZV9wbSgmaTkxNS0+cnVudGltZV9wbSwg d2FrZXJlZikKPiAgIAkJZnJlZWRfcGFnZXMgKz0gaTkxNV9nZW1fc2hyaW5rKGk5MTUsIC0xVUws IE5VTEwsCj4gKwkJCQkJICAgICAgIEk5MTVfU0hSSU5LX0FDVElWRSB8Cj4gICAJCQkJCSAgICAg ICBJOTE1X1NIUklOS19CT1VORCB8Cj4gICAJCQkJCSAgICAgICBJOTE1X1NIUklOS19VTkJPVU5E IHwKPiAgIAkJCQkJICAgICAgIEk5MTVfU0hSSU5LX1dSSVRFQkFDSyk7Cj4gQEAgLTQxOSwxMCAr MzczLDYgQEAgaTkxNV9nZW1fc2hyaW5rZXJfdm1hcChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5i LCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZt YSwgKm5leHQ7Cj4gICAJdW5zaWduZWQgbG9uZyBmcmVlZF9wYWdlcyA9IDA7Cj4gICAJaW50ZWxf d2FrZXJlZl90IHdha2VyZWY7Cj4gLQlib29sIHVubG9jazsKPiAtCj4gLQlpZiAoIXNocmlua2Vy X2xvY2soaTkxNSwgMCwgJnVubG9jaykpCj4gLQkJcmV0dXJuIE5PVElGWV9ET05FOwo+ICAgCj4g ICAJd2l0aF9pbnRlbF9ydW50aW1lX3BtKCZpOTE1LT5ydW50aW1lX3BtLCB3YWtlcmVmKQo+ICAg CQlmcmVlZF9wYWdlcyArPSBpOTE1X2dlbV9zaHJpbmsoaTkxNSwgLTFVTCwgTlVMTCwKPiBAQCAt NDM5LDE1ICszODksMTEgQEAgaTkxNV9nZW1fc2hyaW5rZXJfdm1hcChzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIKPiAgIAkJaWYgKCF2bWEt PmlvbWFwIHx8IGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKQo+ICAgCQkJY29udGludWU7Cj4gICAK PiAtCQltdXRleF91bmxvY2soJmk5MTUtPmdndHQudm0ubXV0ZXgpOwo+ICAgCQlpZiAoaTkxNV92 bWFfdW5iaW5kKHZtYSkgPT0gMCkKPiAgIAkJCWZyZWVkX3BhZ2VzICs9IGNvdW50Owo+IC0JCW11 dGV4X2xvY2soJmk5MTUtPmdndHQudm0ubXV0ZXgpOwo+ICAgCX0KPiAgIAltdXRleF91bmxvY2so Jmk5MTUtPmdndHQudm0ubXV0ZXgpOwo+ICAgCj4gLQlzaHJpbmtlcl91bmxvY2soaTkxNSwgdW5s b2NrKTsKPiAtCj4gICAJKih1bnNpZ25lZCBsb25nICopcHRyICs9IGZyZWVkX3BhZ2VzOwo+ICAg CXJldHVybiBOT1RJRllfRE9ORTsKPiAgIH0KPiBAQCAtNDkwLDIyICs0MzYsOSBAQCB2b2lkIGk5 MTVfZ2VtX3Nocmlua2VyX3RhaW50c19tdXRleChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKPiAgIAo+ICAgCWZzX3JlY2xhaW1fYWNxdWlyZShHRlBfS0VSTkVMKTsKPiAgIAo+IC0JLyoK PiAtCSAqIEFzIHdlIGludmFyaWFibHkgcmVseSBvbiB0aGUgc3RydWN0X211dGV4IHdpdGhpbiB0 aGUgc2hyaW5rZXIsCj4gLQkgKiBidXQgaGF2ZSBhIGNvbXBsaWNhdGVkIHJlY3Vyc2lvbiBkYW5j ZSwgdGFpbnQgYWxsIHRoZSBtdXRleGVzIHVzZWQKPiAtCSAqIHdpdGhpbiB0aGUgc2hyaW5rZXIg d2l0aCB0aGUgc3RydWN0X211dGV4LiBGb3IgY29tcGxldGVuZXNzLCB3ZQo+IC0JICogdGFpbnQg d2l0aCBhbGwgc3ViY2xhc3Mgb2Ygc3RydWN0X211dGV4LCBldmVuIHRob3VnaCB3ZSBzaG91bGQK PiAtCSAqIG9ubHkgbmVlZCB0YWludGluZyBieSBJOTE1X01NX05PUk1BTCB0byBjYXRjaCBwb3Nz aWJsZSBBQkJBCj4gLQkgKiBkZWFkbG9ja3MgZnJvbSB1c2luZyBzdHJ1Y3RfbXV0ZXggaW5zaWRl IEBtdXRleC4KPiAtCSAqLwo+IC0JbXV0ZXhfYWNxdWlyZSgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eC5kZXBfbWFwLAo+IC0JCSAgICAgIEk5MTVfTU1fU0hSSU5LRVIsIDAsIF9SRVRfSVBfKTsKPiAt Cj4gICAJbXV0ZXhfYWNxdWlyZSgmbXV0ZXgtPmRlcF9tYXAsIDAsIDAsIF9SRVRfSVBfKTsKPiAg IAltdXRleF9yZWxlYXNlKCZtdXRleC0+ZGVwX21hcCwgMCwgX1JFVF9JUF8pOwo+ICAgCj4gLQlt dXRleF9yZWxlYXNlKCZpOTE1LT5kcm0uc3RydWN0X211dGV4LmRlcF9tYXAsIDAsIF9SRVRfSVBf KTsKPiAtCj4gICAJZnNfcmVjbGFpbV9yZWxlYXNlKEdGUF9LRVJORUwpOwo+ICAgCj4gICAJaWYg KHVubG9jaykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jCj4g aW5kZXggMGQ4MWRlMTQ2MWI0Li5kMmFlZDcyOGFkOGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jCj4gQEAgLTYyMSw4ICs2MjEsNiBAQCBpOTE1X2dl bV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdgo+ICAgCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+ bW0uc3RvbGVuKSkKPiAgIAkJcmV0dXJuIE5VTEw7Cj4gICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJRFJNX0RFQlVHX0RSSVZF UigiY3JlYXRpbmcgcHJlYWxsb2NhdGVkIHN0b2xlbiBvYmplY3Q6IHN0b2xlbl9vZmZzZXQ9JXBh LCBndHRfb2Zmc2V0PSVwYSwgc2l6ZT0lcGFcbiIsCj4gICAJCQkgJnN0b2xlbl9vZmZzZXQsICZn dHRfb2Zmc2V0LCAmc2l6ZSk7Cj4gICAKPiBAQCAtNjc0LDIxICs2NzIsMjUgQEAgaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYKPiAgIAkgKiBzZXR0aW5nIHVwIHRoZSBHVFQgc3BhY2UuIFRoZSBhY3R1 YWwgcmVzZXJ2YXRpb24gd2lsbCBvY2N1cgo+ICAgCSAqIGxhdGVyLgo+ICAgCSAqLwo+ICsJbXV0 ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCXJldCA9IGk5MTVfZ2VtX2d0dF9yZXNlcnZl KCZnZ3R0LT52bSwgJnZtYS0+bm9kZSwKPiAgIAkJCQkgICBzaXplLCBndHRfb2Zmc2V0LCBvYmot PmNhY2hlX2xldmVsLAo+ICAgCQkJCSAgIDApOwo+ICAgCWlmIChyZXQpIHsKPiAgIAkJRFJNX0RF QlVHX0RSSVZFUigiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBHVFQgc3BhY2VcbiIpOwo+ICsJ CW11dGV4X3VubG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCQlnb3RvIGVycl9wYWdlczsKPiAg IAl9Cj4gICAKPiAgIAlHRU1fQlVHX09OKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9k ZSkpOwo+ICAgCj4gKwlHRU1fQlVHX09OKHZtYS0+cGFnZXMpOwo+ICAgCXZtYS0+cGFnZXMgPSBv YmotPm1tLnBhZ2VzOwo+ICsJYXRvbWljX3NldCgmdm1hLT5wYWdlc19jb3VudCwgSTkxNV9WTUFf UEFHRVNfQUNUSVZFKTsKCldoYXQgaXMgSTkxNV9WTUFfUEFHRVNfQUNUSVZFIHVzZWQgZm9yPyBQ aW5uZWQ/IEhhcyBwYWdlcz8KCj4gKwo+ICAgCXNldF9iaXQoSTkxNV9WTUFfR0xPQkFMX0JJTkRf QklULCBfX2k5MTVfdm1hX2ZsYWdzKHZtYSkpOwo+ICAgCV9faTkxNV92bWFfc2V0X21hcF9hbmRf ZmVuY2VhYmxlKHZtYSk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmdndHQtPnZtLm11dGV4KTsKPiAg IAlsaXN0X2FkZF90YWlsKCZ2bWEtPnZtX2xpbmssICZnZ3R0LT52bS5ib3VuZF9saXN0KTsKPiAg IAltdXRleF91bmxvY2soJmdndHQtPnZtLm11dGV4KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fdGlsaW5nLmMKPiBpbmRleCBjYTBjMmY0NTE3NDIuLmI5Y2ZhZTBl NDQzNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdGls aW5nLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdGlsaW5nLmMK PiBAQCAtMTgxLDIyICsxODEsMjUgQEAgc3RhdGljIGludAo+ICAgaTkxNV9nZW1fb2JqZWN0X2Zl bmNlX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkJCSAgICAg IGludCB0aWxpbmdfbW9kZSwgdW5zaWduZWQgaW50IHN0cmlkZSkKPiAgIHsKPiArCXN0cnVjdCBp OTE1X2dndHQgKmdndHQgPSAmdG9faTkxNShvYmotPmJhc2UuZGV2KS0+Z2d0dDsKPiAgIAlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKPiAtCWludCByZXQ7Cj4gKwlpbnQgcmV0ID0gMDsKPiAgIAo+ICAg CWlmICh0aWxpbmdfbW9kZSA9PSBJOTE1X1RJTElOR19OT05FKQo+ICAgCQlyZXR1cm4gMDsKPiAg IAo+ICsJbXV0ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCWZvcl9lYWNoX2dndHRfdm1h KHZtYSwgb2JqKSB7Cj4gICAJCWlmIChpOTE1X3ZtYV9mZW5jZV9wcmVwYXJlKHZtYSwgdGlsaW5n X21vZGUsIHN0cmlkZSkpCj4gICAJCQljb250aW51ZTsKCnZtYV9mZW5jZV9wcmVwYXJlIGRvZXNu J3QgbmVlZCB0byBiZSB1bmRlciBtdXRleCwgYnV0IGl0J3MgbXVjaCBlYXNpZXIgCmZvciB0aGlz IGxvb3AsIHllcz8KCj4gICAKPiAgIAkJcmV0ID0gaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gICAJ CWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gKwkJCWJyZWFrOwo+ICAgCX0KPiArCW11dGV4 X3VubG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiBy ZXQ7Cj4gICB9Cj4gICAKPiAgIGludAo+IEBAIC0yMTIsNyArMjE1LDYgQEAgaTkxNV9nZW1fb2Jq ZWN0X3NldF90aWxpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAo+ICAg CUdFTV9CVUdfT04oIWk5MTVfdGlsaW5nX29rKG9iaiwgdGlsaW5nLCBzdHJpZGUpKTsKPiAgIAlH RU1fQlVHX09OKCFzdHJpZGUgXiAodGlsaW5nID09IEk5MTVfVElMSU5HX05PTkUpKTsKPiAtCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJaWYg KCh0aWxpbmcgfCBzdHJpZGUpID09IG9iai0+dGlsaW5nX2FuZF9zdHJpZGUpCj4gICAJCXJldHVy biAwOwo+IEBAIC0zNjQsMTIgKzM2Niw3IEBAIGk5MTVfZ2VtX3NldF90aWxpbmdfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJfQo+ICAgCX0KPiAgIAo+IC0J ZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlp ZiAoZXJyKQo+IC0JCWdvdG8gZXJyOwo+IC0KPiAgIAllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0 X3RpbGluZyhvYmosIGFyZ3MtPnRpbGluZ19tb2RlLCBhcmdzLT5zdHJpZGUpOwo+IC0JbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAKPiAgIAkvKiBXZSBoYXZlIHRvIG1haW50 YWluIHRoaXMgZXhpc3RpbmcgQUJJLi4uICovCj4gICAJYXJncy0+c3RyaWRlID0gaTkxNV9nZW1f b2JqZWN0X2dldF9zdHJpZGUob2JqKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV91c2VycHRyLmMKPiBpbmRleCA3NGRhMzU2MTFkN2MuLmNkMzYyMzZlM2ZhZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwo+IEBAIC05Miw3 ICs5Miw2IEBAIHVzZXJwdHJfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25v dGlmaWVyICpfbW4sCj4gICAJc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiA9Cj4gICAJCWNv bnRhaW5lcl9vZihfbW4sIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwo+ICAgCXN0cnVj dCBpbnRlcnZhbF90cmVlX25vZGUgKml0Owo+IC0Jc3RydWN0IG11dGV4ICp1bmxvY2sgPSBOVUxM Owo+ICAgCXVuc2lnbmVkIGxvbmcgZW5kOwo+ICAgCWludCByZXQgPSAwOwo+ICAgCj4gQEAgLTEy OSwzMyArMTI4LDEzIEBAIHVzZXJwdHJfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3Qg bW11X25vdGlmaWVyICpfbW4sCj4gICAJCX0KPiAgIAkJc3Bpbl91bmxvY2soJm1uLT5sb2NrKTsK PiAgIAo+IC0JCWlmICghdW5sb2NrKSB7Cj4gLQkJCXVubG9jayA9ICZtbi0+bW0tPmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXg7Cj4gLQo+IC0JCQlzd2l0Y2ggKG11dGV4X3RyeWxvY2tfcmVjdXJzaXZl KHVubG9jaykpIHsKPiAtCQkJZGVmYXVsdDoKPiAtCQkJY2FzZSBNVVRFWF9UUllMT0NLX0ZBSUxF RDoKPiAtCQkJCWlmIChtdXRleF9sb2NrX2tpbGxhYmxlX25lc3RlZCh1bmxvY2ssIEk5MTVfTU1f U0hSSU5LRVIpKSB7Cj4gLQkJCQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+IC0JCQkJCXJl dHVybiAtRUlOVFI7Cj4gLQkJCQl9Cj4gLQkJCQkvKiBmYWxsIHRocm91Z2ggKi8KPiAtCQkJY2Fz ZSBNVVRFWF9UUllMT0NLX1NVQ0NFU1M6Cj4gLQkJCQlicmVhazsKPiAtCj4gLQkJCWNhc2UgTVVU RVhfVFJZTE9DS19SRUNVUlNJVkU6Cj4gLQkJCQl1bmxvY2sgPSBFUlJfUFRSKC1FRVhJU1QpOwo+ IC0JCQkJYnJlYWs7Cj4gLQkJCX0KPiAtCQl9Cj4gLQo+ICAgCQlyZXQgPSBpOTE1X2dlbV9vYmpl Y3RfdW5iaW5kKG9iaiwKPiAgIAkJCQkJICAgICBJOTE1X0dFTV9PQkpFQ1RfVU5CSU5EX0FDVElW RSk7Cj4gICAJCWlmIChyZXQgPT0gMCkKPiAgIAkJCXJldCA9IF9faTkxNV9nZW1fb2JqZWN0X3B1 dF9wYWdlcyhvYmosIEk5MTVfTU1fU0hSSU5LRVIpOwo+ICAgCQlpOTE1X2dlbV9vYmplY3RfcHV0 KG9iaik7Cj4gICAJCWlmIChyZXQpCj4gLQkJCWdvdG8gdW5sb2NrOwo+ICsJCQlyZXR1cm4gcmV0 Owo+ICAgCj4gICAJCXNwaW5fbG9jaygmbW4tPmxvY2spOwo+ICAgCj4gQEAgLTE2OCwxMCArMTQ3 LDYgQEAgdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZp ZXIgKl9tbiwKPiAgIAl9Cj4gICAJc3Bpbl91bmxvY2soJm1uLT5sb2NrKTsKPiAgIAo+IC11bmxv Y2s6Cj4gLQlpZiAoIUlTX0VSUl9PUl9OVUxMKHVubG9jaykpCj4gLQkJbXV0ZXhfdW5sb2NrKHVu bG9jayk7Cj4gLQo+ICAgCXJldHVybiByZXQ7Cj4gICAKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IGluZGV4IGM1Y2VhNDM3OTIx Ni4uY2Q3NzExNDdiNDFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9z ZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3Nl bGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiBAQCAtMjUsNiArMjUsMTcgQEAgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGludCBwYWdlX3NpemVzW10gPSB7Cj4gICAJSTkxNV9HVFRfUEFHRV9TSVpFXzRLLAo+ ICAgfTsKPiAgIAo+ICtzdGF0aWMgaW50IHVubG9ja2VkX3ZtYV91bmJpbmQoc3RydWN0IGk5MTVf dm1hICp2bWEpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmdm1hLT52bS0+ bXV0ZXgpOwo+ICsJcmV0ID0gaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gKwltdXRleF91bmxvY2so JnZtYS0+dm0tPm11dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICAgc3RhdGlj IHVuc2lnbmVkIGludCBnZXRfbGFyZ2VzdF9wYWdlX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCj4gICAJCQkJCSAgdTY0IHJlbSkKPiAgIHsKPiBAQCAtMzMzLDcgKzM0NCwxMSBA QCBzdGF0aWMgaW50IGlndF9jaGVja19wYWdlX3NpemVzKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdm1hLT52bS0+aTkxNTsKPiAgIAl1 bnNpZ25lZCBpbnQgc3VwcG9ydGVkID0gSU5URUxfSU5GTyhpOTE1KS0+cGFnZV9zaXplczsKPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7Cj4gLQlpbnQgZXJy ID0gMDsKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gaTkxNV9hY3RpdmVfd2FpdCgmdm1hLT5h Y3RpdmUpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwoKVG91Y2hlZCB1cG9uIHRoaXMg aW4gdGhlIHByZXZpb3VzIGVtYWlsLCBidXQgSSB0aGluayB3ZSBuZWVkIHRvIHB1dCBzb21lIApj bGVhciBub3RlcyBpbiB3cml0aW5nLCBpbiBzb21lIGdvb2QgcGxhY2UsIHJlZ2FyZGluZyB3aGVu IGNhbGxlcnMgbmVlZCAKdG8gZXhwbGljaXRseSBkbyB0aGlzIGFuZCB3aGVuIG5vdC4gRG9uJ3Qg a25vdyB3aGVyZSB0aG91Z2guLiBjb21taXQgCm1lc3NhZ2UgaXMgd2Vhay4gTWF5YmUga2VybmVs IGRvYyBuZXh0IHRvIGk5MTVfdm1hX3VuYmluZD8KCj4gICAKPiAgIAlpZiAoIUhBU19QQUdFX1NJ WkVTKGk5MTUsIHZtYS0+cGFnZV9zaXplcy5zZykpIHsKPiAgIAkJcHJfZXJyKCJ1bnN1cHBvcnRl ZCBwYWdlX3NpemVzLnNnPSV1LCBzdXBwb3J0ZWQ9JXVcbiIsCj4gQEAgLTUyNiw3ICs1NDEsNyBA QCBzdGF0aWMgaW50IGlndF9tb2NrX3BwZ3R0X21pc2FsaWduZWRfZG1hKHZvaWQgKmFyZykKPiAg IAkJICogcGFnZXMuCj4gICAJCSAqLwo+ICAgCQlmb3IgKG9mZnNldCA9IDQwOTY7IG9mZnNldCA8 IHBhZ2Vfc2l6ZTsgb2Zmc2V0ICs9IDQwOTYpIHsKPiAtCQkJZXJyID0gaTkxNV92bWFfdW5iaW5k KHZtYSk7Cj4gKwkJCWVyciA9IHVubG9ja2VkX3ZtYV91bmJpbmQodm1hKTsKPiAgIAkJCWlmIChl cnIpIHsKPiAgIAkJCQlpOTE1X3ZtYV9jbG9zZSh2bWEpOwo+ICAgCQkJCWdvdG8gb3V0X3VucGlu Owo+IEBAIC05NDEsNyArOTU2LDcgQEAgc3RhdGljIGludCBfX2lndF93cml0ZV9odWdlKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgIAlpZiAoSVNfRVJSKHZtYSkpCj4gICAJCXJldHVybiBQ VFJfRVJSKHZtYSk7Cj4gICAKPiAtCWVyciA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwo+ICsJZXJy ID0gdW5sb2NrZWRfdm1hX3VuYmluZCh2bWEpOwo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0 X3ZtYV9jbG9zZTsKPiAgIAo+IEBAIC0xMzkwLDcgKzE0MDUsNyBAQCBzdGF0aWMgaW50IGlndF9w cGd0dF9waW5fdXBkYXRlKHZvaWQgKmFyZykKPiAgIAkJCWdvdG8gb3V0X3VucGluOwo+ICAgCQl9 Cj4gICAKPiAtCQllcnIgPSBpOTE1X3ZtYV9iaW5kKHZtYSwgSTkxNV9DQUNIRV9OT05FLCBQSU5f VVBEQVRFKTsKPiArCQllcnIgPSBpOTE1X3ZtYV9iaW5kKHZtYSwgSTkxNV9DQUNIRV9OT05FLCBQ SU5fVVBEQVRFLCBOVUxMKTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCWdvdG8gb3V0X3VucGluOwo+ ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1 X2dlbV9jb250ZXh0LmMKPiBpbmRleCBkYTU0YTcxOGM3MTIuLmFhNjdjMDJiYTk4YyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRl eHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1f Y29udGV4dC5jCj4gQEAgLTc0NywxMCArNzQ3LDcgQEAgZW1pdF9ycGNzX3F1ZXJ5KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJaWYgKGVycikKPiAgIAkJZ290byBza2lwX3Jl cXVlc3Q7Cj4gICAKPiAtCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKPiAtCWk5MTVfdm1hX2Nsb3Nl KGJhdGNoKTsKPiAtCWk5MTVfdm1hX3B1dChiYXRjaCk7Cj4gLQo+ICsJaTkxNV92bWFfdW5waW5f YW5kX3JlbGVhc2UoJmJhdGNoLCAwKTsKCklzIHRoaXMgY29uc29saWRhdGlvbiBlbmFibGVkIGJ5 IHRoaXMgcGF0Y2ggb3Igd2FzIG90aGVyd2lzZSBwb3NzaWJsZT8gClNvbWV0aGluZyByaW5ncyBm YW1pbGlhciBhYm91dCBzb21lIHByb2JsZW0gd2l0aCAKaTkxNV92bWFfdW5waW5fYW5kX3JlbGVh c2UgYnV0IEkgY2FuJ3QgcmVtZW1iZXIgd2hhdC4uIFNlbWFudGljcyBhcmUgYSAKYml0IHdlaXJk IHRob3VnaC4uIHdoZXJlYXMgcGF0dGVybiBiZWZvcmUgd2FzIHRvIGk5MTVfdm1hX3B1dCBhZnRl ciAKaW5zdGFudGlhdGluZyBhIHZtYSwgbm93IGl0IGlzIHVucGluX2FuZF9yZWxlYXNlLi4gcmVs ZWFzZSBiZWluZyBhIGJpdCAKb2YgYW4gb2RkIHRlcm0gaW4gdGhpcyBzcGFjZS4gVGhlcmUgd2Fz L2lzIG5vIHN5bW1ldHJ5IHdpdGggZ2V0L3B1dCAKYW55d2F5IHNvIEkgZ3Vlc3MgaXQncyBmaW5l LgoKPiAgIAlpOTE1X3ZtYV91bnBpbih2bWEpOwo+ICAgCj4gICAJKnJxX291dCA9IGk5MTVfcmVx dWVzdF9nZXQocnEpOwo+IEBAIC03NjQsOCArNzYxLDcgQEAgZW1pdF9ycGNzX3F1ZXJ5KHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICBlcnJfcmVxdWVzdDoKPiAgIAlpOTE1X3Jl cXVlc3RfYWRkKHJxKTsKPiAgIGVycl9iYXRjaDoKPiAtCWk5MTVfdm1hX3VucGluKGJhdGNoKTsK PiAtCWk5MTVfdm1hX3B1dChiYXRjaCk7Cj4gKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgm YmF0Y2gsIDApOwo+ICAgZXJyX3ZtYToKPiAgIAlpOTE1X3ZtYV91bnBpbih2bWEpOwo+ICAgCj4g QEAgLTEzMDksOSArMTMwNSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfdG9fc2NyYXRjaChzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gc2tpcF9yZXF1 ZXN0Owo+ICAgCj4gLQlpOTE1X3ZtYV91bnBpbih2bWEpOwo+IC0JaTkxNV92bWFfY2xvc2Uodm1h KTsKPiAtCWk5MTVfdm1hX3B1dCh2bWEpOwo+ICsJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2Uo JnZtYSwgMCk7Cj4gICAKPiAgIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAgIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCj4gaW5k ZXggMWQyN2JhYmZmMGNlLi45YzIxN2RmZTk2YTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwo+IEBAIC0yMDUsNyArMjA1 LDYgQEAgc3RhdGljIGludCBpZ3RfcGFydGlhbF90aWxpbmcodm9pZCAqYXJnKQo+ICAgCQlnb3Rv IG91dDsKPiAgIAl9Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7 Cj4gICAKPiAgIAlpZiAoMSkgewo+IEBAIC0zMTgsNyArMzE3LDYgQEAgbmV4dF90aWxpbmc6IDsK PiAgIAo+ICAgb3V0X3VubG9jazoKPiAgIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVu dGltZV9wbSwgd2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICAgb3V0Ogo+ICAg CWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pZ3RfZ2VtX3V0aWxzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vc2VsZnRlc3RzL2lndF9nZW1fdXRpbHMuYwo+IGluZGV4IGVlNWRjMTNhMzBiMy4uNjcx OGRhMjBmMzVkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVz dHMvaWd0X2dlbV91dGlscy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0 ZXN0cy9pZ3RfZ2VtX3V0aWxzLmMKPiBAQCAtMTU0LDkgKzE1NCw3IEBAIGludCBpZ3RfZ3B1X2Zp bGxfZHcoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ICAgCj4gICAJaTkxNV9yZXF1ZXN0X2Fk ZChycSk7Cj4gICAKPiAtCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKPiAtCWk5MTVfdm1hX2Nsb3Nl KGJhdGNoKTsKPiAtCWk5MTVfdm1hX3B1dChiYXRjaCk7Cj4gKwlpOTE1X3ZtYV91bnBpbl9hbmRf cmVsZWFzZSgmYmF0Y2gsIDApOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICAKPiBAQCAtMTY1LDcg KzE2Myw2IEBAIGludCBpZ3RfZ3B1X2ZpbGxfZHcoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ ICAgZXJyX3JlcXVlc3Q6Cj4gICAJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gICBlcnJfYmF0Y2g6 Cj4gLQlpOTE1X3ZtYV91bnBpbihiYXRjaCk7Cj4gLQlpOTE1X3ZtYV9wdXQoYmF0Y2gpOwo+ICsJ aTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmJhdGNoLCAwKTsKPiAgIAlyZXR1cm4gZXJyOwo+ ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwo+IGluZGV4IGQ0OGVjOWE3NmVkMS4u YzJhZmZmYjk0NDc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCj4gQEAgLTIw NywxMSArMjA3LDEyIEBAIHZvaWQgaW50ZWxfZ3RfZmx1c2hfZ2d0dF93cml0ZXMoc3RydWN0IGlu dGVsX2d0ICpndCkKPiAgIAo+ICAgCXdpdGhfaW50ZWxfcnVudGltZV9wbSgmaTkxNS0+cnVudGlt ZV9wbSwgd2FrZXJlZikgewo+ICAgCQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBndC0+ dW5jb3JlOwo+ICsJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAKPiAtCQlzcGluX2xvY2tfaXJx KCZ1bmNvcmUtPmxvY2spOwo+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZ1bmNvcmUtPmxvY2ssIGZs YWdzKTsKPiAgIAkJaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZF9mdyh1bmNvcmUsCj4gICAJCQkJ CSAgICAgUklOR19IRUFEKFJFTkRFUl9SSU5HX0JBU0UpKTsKPiAtCQlzcGluX3VubG9ja19pcnEo JnVuY29yZS0+bG9jayk7Cj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdW5jb3JlLT5sb2Nr LCBmbGFncyk7Cj4gICAJfQo+ICAgfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGFjNTVhMGQwNTRiZC4uODU1ZTk3Y2NhZjlmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0xMzM2 LDE1ICsxMzM2LDEzIEBAIHZvaWQgaW50ZWxfcmluZ19mcmVlKHN0cnVjdCBrcmVmICpyZWYpCj4g ICB7Cj4gICAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBjb250YWluZXJfb2YocmVmLCB0eXBl b2YoKnJpbmcpLCByZWYpOwo+ICAgCj4gLQlpOTE1X3ZtYV9jbG9zZShyaW5nLT52bWEpOwo+ICAg CWk5MTVfdm1hX3B1dChyaW5nLT52bWEpOwo+IC0KPiAgIAlrZnJlZShyaW5nKTsKPiAgIH0KPiAg IAo+ICAgc3RhdGljIHZvaWQgX19yaW5nX2NvbnRleHRfZmluaShzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpCj4gICB7Cj4gLQlpOTE1X2dlbV9vYmplY3RfcHV0KGNlLT5zdGF0ZS0+b2JqKTsKPiAr CWk5MTVfdm1hX3B1dChjZS0+c3RhdGUpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCByaW5n X2NvbnRleHRfZGVzdHJveShzdHJ1Y3Qga3JlZiAqcmVmKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCj4gaW5kZXggYTAwOThmYzM1OTIxLi5lNTNlZWEx MDUwZjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFu Z2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hl Y2suYwo+IEBAIC0xMTI3LDE1ICsxMTI3LDE0IEBAIHN0YXRpYyBpbnQgZXZpY3Rfdm1hKHZvaWQg KmRhdGEpCj4gICB7Cj4gICAJc3RydWN0IGV2aWN0X3ZtYSAqYXJnID0gZGF0YTsKPiAgIAlzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9IGFyZy0+dm1hLT52bTsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gdm0tPmk5MTU7Cj4gICAJc3RydWN0IGRybV9tbV9ub2RlIGV2 aWN0ID0gYXJnLT52bWEtPm5vZGU7Cj4gICAJaW50IGVycjsKPiAgIAo+ICAgCWNvbXBsZXRlKCZh cmctPmNvbXBsZXRpb24pOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiArCW11dGV4X2xvY2soJnZtLT5tdXRleCk7Cj4gICAJZXJyID0gaTkxNV9nZW1fZXZp Y3RfZm9yX25vZGUodm0sICZldmljdCwgMCk7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICsJbXV0ZXhfdW5sb2NrKCZ2bS0+bXV0ZXgpOwo+ICAgCj4gICAJcmV0 dXJuIGVycjsKPiAgIH0KPiBAQCAtMTE0MywzOSArMTE0MiwzMyBAQCBzdGF0aWMgaW50IGV2aWN0 X3ZtYSh2b2lkICpkYXRhKQo+ICAgc3RhdGljIGludCBldmljdF9mZW5jZSh2b2lkICpkYXRhKQo+ ICAgewo+ICAgCXN0cnVjdCBldmljdF92bWEgKmFyZyA9IGRhdGE7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZy0+dm1hLT52bS0+aTkxNTsKPiAgIAlpbnQgZXJyOwo+ICAg Cj4gICAJY29tcGxldGUoJmFyZy0+Y29tcGxldGlvbik7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAkvKiBNYXJrIHRoZSBmZW5jZSByZWdpc3Rl ciBhcyBkaXJ0eSB0byBmb3JjZSB0aGUgbW1pbyB1cGRhdGUuICovCj4gICAJZXJyID0gaTkxNV9n ZW1fb2JqZWN0X3NldF90aWxpbmcoYXJnLT52bWEtPm9iaiwgSTkxNV9USUxJTkdfWSwgNTEyKTsK PiAgIAlpZiAoZXJyKSB7Cj4gICAJCXByX2VycigiSW52YWxpZCBZLXRpbGluZyBzZXR0aW5nczsg ZXJyOiVkXG4iLCBlcnIpOwo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiArCQlyZXR1cm4gZXJyOwo+ ICAgCX0KPiAgIAo+ICAgCWVyciA9IGk5MTVfdm1hX3BpbihhcmctPnZtYSwgMCwgMCwgUElOX0dM T0JBTCB8IFBJTl9NQVBQQUJMRSk7Cj4gICAJaWYgKGVycikgewo+ICAgCQlwcl9lcnIoIlVuYWJs ZSB0byBwaW4gdm1hIGZvciBZLXRpbGVkIGZlbmNlOyBlcnI6JWRcbiIsIGVycik7Cj4gLQkJZ290 byBvdXRfdW5sb2NrOwo+ICsJCXJldHVybiBlcnI7Cj4gICAJfQo+ICAgCj4gICAJZXJyID0gaTkx NV92bWFfcGluX2ZlbmNlKGFyZy0+dm1hKTsKPiAgIAlpOTE1X3ZtYV91bnBpbihhcmctPnZtYSk7 Cj4gICAJaWYgKGVycikgewo+ICAgCQlwcl9lcnIoIlVuYWJsZSB0byBwaW4gWS10aWxlZCBmZW5j ZTsgZXJyOiVkXG4iLCBlcnIpOwo+IC0JCWdvdG8gb3V0X3VubG9jazsKPiArCQlyZXR1cm4gZXJy Owo+ICAgCX0KPiAgIAo+ICAgCWk5MTVfdm1hX3VucGluX2ZlbmNlKGFyZy0+dm1hKTsKPiAgIAo+ IC1vdXRfdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCj4gLQlyZXR1cm4gZXJyOwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBp bnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9hcGVydHVyZV9nbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2FwZXJ0dXJlX2dtLmMKPiBpbmRleCA1ZmYyNDM3YjI5OTguLmQ5OTZiYmM3 ZWE1OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20u Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9hcGVydHVyZV9nbS5jCj4gQEAgLTYx LDE0ICs2MSwxNCBAQCBzdGF0aWMgaW50IGFsbG9jX2dtKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1 LCBib29sIGhpZ2hfZ20pCj4gICAJCWZsYWdzID0gUElOX01BUFBBQkxFOwo+ICAgCX0KPiAgIAo+ IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmdndHQudm0ubXV0ZXgpOwo+ICAgCW1taW9faHdfYWNjZXNzX3ByZShkZXZf cHJpdik7Cj4gICAJcmV0ID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmZGV2X3ByaXYtPmdndHQudm0s IG5vZGUsCj4gICAJCQkJICBzaXplLCBJOTE1X0dUVF9QQUdFX1NJWkUsCj4gICAJCQkJICBJOTE1 X0NPTE9SX1VORVZJQ1RBQkxFLAo+ICAgCQkJCSAgc3RhcnQsIGVuZCwgZmxhZ3MpOwo+ICAgCW1t aW9faHdfYWNjZXNzX3Bvc3QoZGV2X3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5nZ3R0LnZtLm11 dGV4KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlndnRfZXJyKCJmYWlsIHRvIGFsbG9jICVzIGdtIHNw YWNlIGZyb20gaG9zdFxuIiwKPiAgIAkJCWhpZ2hfZ20gPyAiaGlnaCIgOiAibG93Iik7Cj4gQEAg LTk4LDkgKzk4LDkgQEAgc3RhdGljIGludCBhbGxvY192Z3B1X2dtKHN0cnVjdCBpbnRlbF92Z3B1 ICp2Z3B1KQo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICBvdXRfZnJlZV9hcGVydHVyZToKPiAtCW11 dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiArCW11dGV4X2xvY2soJmRl dl9wcml2LT5nZ3R0LnZtLm11dGV4KTsKPiAgIAlkcm1fbW1fcmVtb3ZlX25vZGUoJnZncHUtPmdt Lmxvd19nbV9ub2RlKTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z2d0dC52bS5tdXRleCk7Cj4gICAJcmV0 dXJuIHJldDsKPiAgIH0KPiAgIAo+IEBAIC0xMDgsMTAgKzEwOCwxMCBAQCBzdGF0aWMgdm9pZCBm cmVlX3ZncHVfZ20oc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4gICB7Cj4gICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdmdwdS0+Z3Z0LT5kZXZfcHJpdjsKPiAgIAo+IC0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPmdndHQudm0ubXV0ZXgpOwo+ICAgCWRybV9tbV9yZW1vdmVfbm9kZSgmdmdwdS0+ Z20ubG93X2dtX25vZGUpOwo+ICAgCWRybV9tbV9yZW1vdmVfbm9kZSgmdmdwdS0+Z20uaGlnaF9n bV9ub2RlKTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z2d0dC52bS5tdXRleCk7Cj4gICB9Cj4gICAKPiAg IC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+IGluZGV4IDZhNDQ3ZjFkMDExMC4u NmEzN2VkNTI5NTdhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0 aXZlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4gQEAgLTE0 Niw2ICsxNDYsNyBAQCBfX2FjdGl2ZV9yZXRpcmUoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpCj4g ICAJaWYgKCFyZXRpcmUpCj4gICAJCXJldHVybjsKPiAgIAo+ICsJR0VNX0JVR19PTihyY3VfYWNj ZXNzX3BvaW50ZXIocmVmLT5leGNsKSk7Cj4gICAJcmJ0cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9l bnRyeV9zYWZlKGl0LCBuLCAmcm9vdCwgbm9kZSkgewo+ICAgCQlHRU1fQlVHX09OKGk5MTVfYWN0 aXZlX3JlcXVlc3RfaXNzZXQoJml0LT5iYXNlKSk7Cj4gICAJCWttZW1fY2FjaGVfZnJlZShnbG9i YWwuc2xhYl9jYWNoZSwgaXQpOwo+IEBAIC0yNDUsNiArMjQ2LDggQEAgdm9pZCBfX2k5MTVfYWN0 aXZlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJcmVmLT5mbGFncyA9 IDA7Cj4gICAJcmVmLT5hY3RpdmUgPSBhY3RpdmU7Cj4gICAJcmVmLT5yZXRpcmUgPSByZXRpcmU7 Cj4gKwo+ICsJcmVmLT5leGNsID0gTlVMTDsKPiAgIAlyZWYtPnRyZWUgPSBSQl9ST09UOwo+ICAg CXJlZi0+Y2FjaGUgPSBOVUxMOwo+ICAgCWluaXRfbGxpc3RfaGVhZCgmcmVmLT5wcmVhbGxvY2F0 ZWRfYmFycmllcnMpOwo+IEBAIC0zNDEsNiArMzQ0LDQ1IEBAIGludCBpOTE1X2FjdGl2ZV9yZWYo c3RydWN0IGk5MTVfYWN0aXZlICpyZWYsCj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ICtz dGF0aWMgdm9pZCBleGNsX2NiKHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2Vf Y2IgKmNiKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiA9IGNvbnRhaW5lcl9vZihj YiwgdHlwZW9mKCpyZWYpLCBleGNsX2NiKTsKPiArCj4gKwlSQ1VfSU5JVF9QT0lOVEVSKHJlZi0+ ZXhjbCwgTlVMTCk7Cj4gKwlkbWFfZmVuY2VfcHV0KGYpOwo+ICsKPiArCWFjdGl2ZV9yZXRpcmUo cmVmKTsKPiArfQo+ICsKPiArdm9pZCBpOTE1X2FjdGl2ZV9zZXRfZXhjbHVzaXZlKHN0cnVjdCBp OTE1X2FjdGl2ZSAqcmVmLCBzdHJ1Y3QgZG1hX2ZlbmNlICpmKQo+ICt7Cj4gKwlHRU1fQlVHX09O KGk5MTVfYWN0aXZlX2lzX2lkbGUocmVmKSk7Cj4gKwo+ICsJZG1hX2ZlbmNlX2dldChmKTsKPiAr Cj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4gKwlpZiAocmN1X2FjY2Vzc19wb2ludGVyKHJlZi0+ZXhj bCkpIHsKPiArCQlzdHJ1Y3QgZG1hX2ZlbmNlICpvbGQ7Cj4gKwo+ICsJCW9sZCA9IGRtYV9mZW5j ZV9nZXRfcmN1X3NhZmUoJnJlZi0+ZXhjbCk7Cj4gKwkJaWYgKG9sZCkgewo+ICsJCQlpZiAoZG1h X2ZlbmNlX3JlbW92ZV9jYWxsYmFjayhvbGQsICZyZWYtPmV4Y2xfY2IpKQo+ICsJCQkJYXRvbWlj X2RlYygmcmVmLT5jb3VudCk7Cj4gKwkJCWRtYV9mZW5jZV9wdXQob2xkKTsKPiArCQl9CgpQdXQg c29tZSBjb21tZW50YXJ5IGluIGRlc2NyaWJpbmcgdGhlIGJ1c2luZXNzIGRvbmUgd2l0aCByZWYt PmV4Y2wgYW5kIApjYWxsYmFja3MuIE9yIHRoaXMgZ29lcyBhd2F5IGxhdGVyPwoKPiArCX0KPiAr CXJjdV9yZWFkX3VubG9jaygpOwo+ICsKPiArCWF0b21pY19pbmMoJnJlZi0+Y291bnQpOwo+ICsJ cmN1X2Fzc2lnbl9wb2ludGVyKHJlZi0+ZXhjbCwgZik7Cj4gKwo+ICsJaWYgKGRtYV9mZW5jZV9h ZGRfY2FsbGJhY2soZiwgJnJlZi0+ZXhjbF9jYiwgZXhjbF9jYikpIHsKPiArCQlSQ1VfSU5JVF9Q T0lOVEVSKHJlZi0+ZXhjbCwgTlVMTCk7Cj4gKwkJYXRvbWljX2RlYygmcmVmLT5jb3VudCk7Cj4g KwkJZG1hX2ZlbmNlX3B1dChmKTsKPiArCX0KPiArfQo+ICsKPiAgIGludCBpOTE1X2FjdGl2ZV9h Y3F1aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICAgewo+ICAgCWludCBlcnI7Cj4gQEAg LTM5OSw2ICs0NDEsMjUgQEAgdm9pZCBpOTE1X2FjdGl2ZV91bmdyYWIoc3RydWN0IGk5MTVfYWN0 aXZlICpyZWYpCj4gICAJX19hY3RpdmVfdW5ncmFiKHJlZik7Cj4gICB9Cj4gICAKPiArc3RhdGlj IGludCBleGNsX3dhaXQoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpCj4gK3sKPiArCXN0cnVjdCBk bWFfZmVuY2UgKm9sZDsKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCWlmICghcmN1X2FjY2Vzc19w b2ludGVyKHJlZi0+ZXhjbCkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmN1X3JlYWRfbG9jaygp Owo+ICsJb2xkID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmcmVmLT5leGNsKTsKPiArCXJjdV9y ZWFkX3VubG9jaygpOwoKcmVmLT5leGNsIGNhbiBnbyBzb21ldGhpbmcgdG8gTlVMTCBidXQgbm90 IE5VTEwgdG8gc29tZXRoaW5nIGluIGhlcmU/Cgo+ICsJaWYgKG9sZCkgewo+ICsJCWVyciA9IGRt YV9mZW5jZV93YWl0KG9sZCwgdHJ1ZSk7Cj4gKwkJZG1hX2ZlbmNlX3B1dChvbGQpOwo+ICsJfQo+ ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gICBpbnQgaTkxNV9hY3RpdmVfd2FpdChzdHJ1 Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiAgIHsKPiAgIAlzdHJ1Y3QgYWN0aXZlX25vZGUgKml0LCAq bjsKPiBAQCAtNDE5LDYgKzQ4MCwxMCBAQCBpbnQgaTkxNV9hY3RpdmVfd2FpdChzdHJ1Y3QgaTkx NV9hY3RpdmUgKnJlZikKPiAgIAkJcmV0dXJuIDA7Cj4gICAJfQo+ICAgCj4gKwllcnIgPSBleGNs X3dhaXQocmVmKTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICAgCXJidHJlZV9w b3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShpdCwgbiwgJnJlZi0+dHJlZSwgbm9kZSkgewo+ ICAgCQlpZiAoaXNfYmFycmllcigmaXQtPmJhc2UpKSB7IC8qIHVuY29ubmVjdGVkIGlkbGUtYmFy cmllciAqLwo+ICAgCQkJZXJyID0gLUVCVVNZOwo+IEBAIC00MzAsNiArNDk1LDcgQEAgaW50IGk5 MTVfYWN0aXZlX3dhaXQoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpCj4gICAJCQlicmVhazsKPiAg IAl9Cj4gICAKPiArb3V0Ogo+ICAgCV9fYWN0aXZlX3JldGlyZShyZWYpOwo+ICAgCWlmIChlcnIp Cj4gICAJCXJldHVybiBlcnI7Cj4gQEAgLTQ1NCwyNiArNTIwLDIyIEBAIGludCBpOTE1X3JlcXVl c3RfYXdhaXRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gICAKPiAg IGludCBpOTE1X3JlcXVlc3RfYXdhaXRfYWN0aXZlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBz dHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiAgIHsKPiAtCXN0cnVjdCBhY3RpdmVfbm9kZSAqaXQs ICpuOwo+IC0JaW50IGVycjsKPiAtCj4gLQlpZiAoUkJfRU1QVFlfUk9PVCgmcmVmLT50cmVlKSkK PiAtCQlyZXR1cm4gMDsKPiArCWludCBlcnIgPSAwOwo+ICAgCj4gLQkvKiBhd2FpdCBhbGxvY2F0 ZXMgYW5kIHNvIHdlIG5lZWQgdG8gYXZvaWQgaGl0dGluZyB0aGUgc2hyaW5rZXIgKi8KPiAtCWVy ciA9IGk5MTVfYWN0aXZlX2FjcXVpcmUocmVmKTsKPiAtCWlmIChlcnIpCj4gLQkJcmV0dXJuIGVy cjsKPiArCWlmIChyY3VfYWNjZXNzX3BvaW50ZXIocmVmLT5leGNsKSkgewoKZXhjbF93YWl0IHVz ZWQgaWYtbm90LXJldHVybiBwYXR0ZXJuLCBidXQgZXNzZW50aWFseSB0aGUgc2FtZSBxdWVzdGlv biAKYWJvdXQgcG9zc2libGUgcmFjZXMuIEkgZ3Vlc3MgdGhlcmUgYXJlbid0IGFueSBzaW5jZSBv bmx5IHJldGlyZW1lbnQgaXMgCnJlbGV2YW50IHdoaWNoIGlzIHNvbWV0aGluZy10by1OVUxMIGFu ZCB0aGF0J3MgaGFuZGxlZCBmaW5lLiBCdXQgSSBhbSAKbm90IHN1cmUsIHBvc3NpYmx5IGNvbW1l bnRzIGFyZSBpbiBvcmRlci4KCj4gKwkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gICAKPiAt CW11dGV4X2xvY2soJnJlZi0+bXV0ZXgpOwo+IC0JcmJ0cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9l bnRyeV9zYWZlKGl0LCBuLCAmcmVmLT50cmVlLCBub2RlKSB7Cj4gLQkJZXJyID0gaTkxNV9yZXF1 ZXN0X2F3YWl0X2FjdGl2ZV9yZXF1ZXN0KHJxLCAmaXQtPmJhc2UpOwo+IC0JCWlmIChlcnIpCj4g LQkJCWJyZWFrOwo+ICsJCXJjdV9yZWFkX2xvY2soKTsKPiArCQlmZW5jZSA9IGRtYV9mZW5jZV9n ZXRfcmN1X3NhZmUoJnJlZi0+ZXhjbCk7Cj4gKwkJcmN1X3JlYWRfdW5sb2NrKCk7Cj4gKwkJaWYg KGZlbmNlKSB7Cj4gKwkJCWVyciA9IGk5MTVfcmVxdWVzdF9hd2FpdF9kbWFfZmVuY2UocnEsIGZl bmNlKTsKPiArCQkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7Cj4gKwkJfQo+ICAgCX0KPiAtCW11dGV4 X3VubG9jaygmcmVmLT5tdXRleCk7Cj4gICAKPiAtCWk5MTVfYWN0aXZlX3JlbGVhc2UocmVmKTsK PiArCS8qIEluIHRoZSBmdXR1cmUgd2UgbWF5IGNob29zZSB0byBhd2FpdCBvbiBhbGwgZmVuY2Vz ICovCj4gKwo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf YWN0aXZlLmgKPiBpbmRleCBmOTUwNThmOTkwNTcuLmFmM2Q1MzZlMjZmZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9hY3RpdmUuaAo+IEBAIC0zNzMsNiArMzczLDEzIEBAIGludCBpOTE1X2Fj dGl2ZV9yZWYoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYsCj4gICAJCSAgICBzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgKnRsLAo+ICAgCQkgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwo+ICAgCj4g K3ZvaWQgaTkxNV9hY3RpdmVfc2V0X2V4Y2x1c2l2ZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwg c3RydWN0IGRtYV9mZW5jZSAqZik7Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9hY3Rp dmVfaGFzX2V4Y2x1c2l2ZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiArewo+ICsJcmV0dXJu IHJjdV9hY2Nlc3NfcG9pbnRlcihyZWYtPmV4Y2wpOwo+ICt9Cj4gKwo+ICAgaW50IGk5MTVfYWN0 aXZlX3dhaXQoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpOwo+ICAgCj4gICBpbnQgaTkxNV9yZXF1 ZXN0X2F3YWl0X2FjdGl2ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfYWN0aXZlX3R5cGVzLmgKPiBpbmRleCAxODU0ZTdkMTY4YzEuLjg2ZTdhMjMy ZWEzYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZV90eXBl cy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMuaAo+IEBA IC04LDYgKzgsNyBAQAo+ICAgI2RlZmluZSBfSTkxNV9BQ1RJVkVfVFlQRVNfSF8KPiAgIAo+ICAg I2luY2x1ZGUgPGxpbnV4L2F0b21pYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLmg+ Cj4gICAjaW5jbHVkZSA8bGludXgvbGxpc3QuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9tdXRleC5o Pgo+ICAgI2luY2x1ZGUgPGxpbnV4L3JidHJlZS5oPgo+IEBAIC01MSw2ICs1MiwxMCBAQCBzdHJ1 Y3QgaTkxNV9hY3RpdmUgewo+ICAgCXN0cnVjdCBtdXRleCBtdXRleDsKPiAgIAlhdG9taWNfdCBj b3VudDsKPiAgIAo+ICsJLyogUHJlYWxsb2NhdGVkICJleGNsdXNpdmUiIG5vZGUgKi8KPiArCXN0 cnVjdCBkbWFfZmVuY2UgX19yY3UgKmV4Y2w7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NiIGV4Y2xf Y2I7Cj4gKwo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAjZGVmaW5lIEk5MTVfQUNUSVZF X0dSQUJfQklUIDAKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDgxNGY2MmZj YTcyNy4uM2VlZDJlZmE4ZDEzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTYy LDIwICs2MiwzMSBAQAo+ICAgI2luY2x1ZGUgImludGVsX3BtLmgiCj4gICAKPiAgIHN0YXRpYyBp bnQKPiAtaW5zZXJ0X21hcHBhYmxlX25vZGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwKPiAtICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpub2RlLCB1MzIgc2l6ZSkKPiAr aW5zZXJ0X21hcHBhYmxlX25vZGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwgc3RydWN0IGRybV9t bV9ub2RlICpub2RlLCB1MzIgc2l6ZSkKPiAgIHsKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0g bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZnZ3R0LT52bS5tdXRleCk7Cj4gKwlpZiAoZXJyKQo+ ICsJCXJldHVybiBlcnI7Cj4gKwo+ICAgCW1lbXNldChub2RlLCAwLCBzaXplb2YoKm5vZGUpKTsK PiAtCXJldHVybiBkcm1fbW1faW5zZXJ0X25vZGVfaW5fcmFuZ2UoJmdndHQtPnZtLm1tLCBub2Rl LAo+IC0JCQkJCSAgIHNpemUsIDAsIEk5MTVfQ09MT1JfVU5FVklDVEFCTEUsCj4gLQkJCQkJICAg MCwgZ2d0dC0+bWFwcGFibGVfZW5kLAo+IC0JCQkJCSAgIERSTV9NTV9JTlNFUlRfTE9XKTsKPiAr CWVyciA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZSgmZ2d0dC0+dm0ubW0sIG5vZGUsCj4g KwkJCQkJICBzaXplLCAwLCBJOTE1X0NPTE9SX1VORVZJQ1RBQkxFLAo+ICsJCQkJCSAgMCwgZ2d0 dC0+bWFwcGFibGVfZW5kLAo+ICsJCQkJCSAgRFJNX01NX0lOU0VSVF9MT1cpOwo+ICsKPiArCW11 dGV4X3VubG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gICB9Cj4g ICAKPiAgIHN0YXRpYyB2b2lkCj4gLXJlbW92ZV9tYXBwYWJsZV9ub2RlKHN0cnVjdCBkcm1fbW1f bm9kZSAqbm9kZSkKPiArcmVtb3ZlX21hcHBhYmxlX25vZGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0 dCwgc3RydWN0IGRybV9tbV9ub2RlICpub2RlKQo+ICAgewo+ICsJbXV0ZXhfbG9jaygmZ2d0dC0+ dm0ubXV0ZXgpOwo+ICAgCWRybV9tbV9yZW1vdmVfbm9kZShub2RlKTsKPiArCW11dGV4X3VubG9j aygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgfQo+ICAgCj4gICBpbnQKPiBAQCAtODcsNyArOTgsOCBA QCBpOTE1X2dlbV9nZXRfYXBlcnR1cmVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAl1NjQgcGlubmVkOwo+ICAg Cj4gLQltdXRleF9sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gKwlpZiAobXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZnZ3R0LT52bS5tdXRleCkpCj4gKwkJcmV0dXJuIC1FSU5UUjsKPiAgIAo+ICAg CXBpbm5lZCA9IGdndHQtPnZtLnJlc2VydmVkOwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm1h LCAmZ2d0dC0+dm0uYm91bmRfbGlzdCwgdm1fbGluaykKPiBAQCAtMTA5LDIwICsxMjEsMzEgQEAg aW50IGk5MTVfZ2VtX29iamVjdF91bmJpbmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPiAgIAlMSVNUX0hFQUQoc3RpbGxfaW5fbGlzdCk7Cj4gICAJaW50IHJldCA9IDA7Cj4gICAK PiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Cj4g LQo+ICAgCXNwaW5fbG9jaygmb2JqLT52bWEubG9jayk7Cj4gICAJd2hpbGUgKCFyZXQgJiYgKHZt YSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmb2JqLT52bWEubGlzdCwKPiAgIAkJCQkJCSAg ICAgICBzdHJ1Y3QgaTkxNV92bWEsCj4gICAJCQkJCQkgICAgICAgb2JqX2xpbmspKSkgewo+ICsJ CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gdm1hLT52bTsKPiArCj4gKwkJcmV0ID0g LUVCVVNZOwo+ICsJCWlmICghaTkxNV92bV90cnlvcGVuKHZtKSkKPiArCQkJYnJlYWs7CgpUaGlz IGlzIHNvbWUgcmFjZSBiZXR3ZWVuIGRpZmZlcmVudCBwYXRocyBvZiB2bSBjbG9zaW5nL2Rlc3Ry dWN0aW9uIGFuZCAKdm1hIGNsZWFudXA/IFdlIG5lZWQgYSBjb21tZW50IGFib3V0IGl0IHNvbWV3 aGVyZS4uIEhlcmUgSSBndWVzcyBpcyBhIApnb29kIHBsYWNlLgoKQW5kIHdoeSBicmVhayBhbmQg bm90IGNvbnRpbnVlLCB0aGVyZSB3aWxsIGJlIGEgc2Vjb25kIGNhbGwgY29taW5nIGZyb20gCnNv bWV3aGVyZSB3aGVuIGl0IGZhaWxzPwoKPiArCj4gICAJCWxpc3RfbW92ZV90YWlsKCZ2bWEtPm9i al9saW5rLCAmc3RpbGxfaW5fbGlzdCk7Cj4gICAJCXNwaW5fdW5sb2NrKCZvYmotPnZtYS5sb2Nr KTsKPiAgIAo+IC0JCXJldCA9IC1FQlVTWTsKPiAgIAkJaWYgKGZsYWdzICYgSTkxNV9HRU1fT0JK RUNUX1VOQklORF9BQ1RJVkUgfHwKPiAtCQkgICAgIWk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKQo+ IC0JCQlyZXQgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKPiArCQkgICAgIWk5MTVfdm1hX2lzX2Fj dGl2ZSh2bWEpKSB7Cj4gKwkJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gdm1hLT52 bTsKPiArCj4gKwkJCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmdm0tPm11dGV4KTsK PiArCQkJaWYgKCFyZXQpIHsKPiArCQkJCXJldCA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwo+ICsJ CQkJbXV0ZXhfdW5sb2NrKCZ2bS0+bXV0ZXgpOwo+ICsJCQl9Cj4gKwkJfQo+ICAgCj4gKwkJaTkx NV92bV9jbG9zZSh2bSk7Cj4gICAJCXNwaW5fbG9jaygmb2JqLT52bWEubG9jayk7Cj4gICAJfQo+ ICAgCWxpc3Rfc3BsaWNlKCZzdGlsbF9pbl9saXN0LCAmb2JqLT52bWEubGlzdCk7Cj4gQEAgLTMz OCwxMCArMzYxLDYgQEAgaTkxNV9nZW1fZ3R0X3ByZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCj4gICAJdTY0IHJlbWFpbiwgb2Zmc2V0Owo+ICAgCWludCByZXQ7Cj4gICAKPiAt CXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ICAgCXdha2VyZWYgPSBpbnRlbF9y dW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7Cj4gICAJdm1hID0gRVJSX1BUUigtRU5P REVWKTsKPiAgIAlpZiAoIWk5MTVfZ2VtX29iamVjdF9pc190aWxlZChvYmopKQo+IEBAIC0zNTUs MTIgKzM3NCwxMCBAQCBpOTE1X2dlbV9ndHRfcHJlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiAgIAl9IGVsc2Ugewo+ICAgCQlyZXQgPSBpbnNlcnRfbWFwcGFibGVfbm9kZShn Z3R0LCAmbm9kZSwgUEFHRV9TSVpFKTsKPiAgIAkJaWYgKHJldCkKPiAtCQkJZ290byBvdXRfdW5s b2NrOwo+ICsJCQlnb3RvIG91dF9ycG07Cj4gICAJCUdFTV9CVUdfT04oIWRybV9tbV9ub2RlX2Fs bG9jYXRlZCgmbm9kZSkpOwo+ICAgCX0KPiAgIAo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCj4gICAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJy dXB0aWJsZShvYmopOwo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gb3V0X3VucGluOwo+IEBAIC00 MTQsMTcgKzQzMSwxNCBAQCBpOTE1X2dlbV9ndHRfcHJlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgIAo+ICAgCWk5MTVfZ2VtX29iamVjdF91bmxvY2tfZmVuY2Uob2JqLCBm ZW5jZSk7Cj4gICBvdXRfdW5waW46Cj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgIAlpZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZub2RlKSkgewo+ICAgCQlnZ3R0 LT52bS5jbGVhcl9yYW5nZSgmZ2d0dC0+dm0sIG5vZGUuc3RhcnQsIG5vZGUuc2l6ZSk7Cj4gLQkJ cmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUpOwo+ICsJCXJlbW92ZV9tYXBwYWJsZV9ub2RlKGdn dHQsICZub2RlKTsKPiAgIAl9IGVsc2Ugewo+ICAgCQlpOTE1X3ZtYV91bnBpbih2bWEpOwo+ICAg CX0KPiAtb3V0X3VubG9jazoKPiArb3V0X3JwbToKPiAgIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgm aTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gQEAgLTUzMSwx MCArNTQ1LDYgQEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gICAJdm9pZCBfX3VzZXIgKnVzZXJfZGF0YTsKPiAgIAlpbnQgcmV0Owo+ ICAgCj4gLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAgIAlpZiAoaTkxNV9n ZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShvYmopKSB7Cj4gICAJCS8qCj4gICAJCSAqIEF2b2lk IHdha2luZyB0aGUgZGV2aWNlIHVwIGlmIHdlIGNhbiBmYWxsYmFjaywgYXMKPiBAQCAtNTQ0LDEw ICs1NTQsOCBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgIAkJICogdXNpbmcgdGhlIGNhY2hlIGJ5cGFzcyBvZiBpbmRpcmVjdCBH R1RUIGFjY2Vzcy4KPiAgIAkJICovCj4gICAJCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dl dF9pZl9pbl91c2UocnBtKTsKPiAtCQlpZiAoIXdha2VyZWYpIHsKPiAtCQkJcmV0ID0gLUVGQVVM VDsKPiAtCQkJZ290byBvdXRfdW5sb2NrOwo+IC0JCX0KPiArCQlpZiAoIXdha2VyZWYpCj4gKwkJ CXJldHVybiAtRUZBVUxUOwo+ICAgCX0gZWxzZSB7Cj4gICAJCS8qIE5vIGJhY2tpbmcgcGFnZXMs IG5vIGZhbGxiYWNrLCB3ZSBtdXN0IGZvcmNlIEdHVFQgYWNjZXNzICovCj4gICAJCXdha2VyZWYg PSBpbnRlbF9ydW50aW1lX3BtX2dldChycG0pOwo+IEBAIC01NjksOCArNTc3LDYgQEAgaTkxNV9n ZW1fZ3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJ CUdFTV9CVUdfT04oIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmbm9kZSkpOwo+ICAgCX0KPiAgIAo+ IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJcmV0ID0g aTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShvYmopOwo+ICAgCWlmIChyZXQpCj4g ICAJCWdvdG8gb3V0X3VucGluOwo+IEBAIC02MzQsMTggKzY0MCwxNSBAQCBpOTE1X2dlbV9ndHRf cHdyaXRlX2Zhc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAo+ICAgCWk5 MTVfZ2VtX29iamVjdF91bmxvY2tfZmVuY2Uob2JqLCBmZW5jZSk7Cj4gICBvdXRfdW5waW46Cj4g LQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlpbnRlbF9ndF9mbHVz aF9nZ3R0X3dyaXRlcyhnZ3R0LT52bS5ndCk7Cj4gICAJaWYgKGRybV9tbV9ub2RlX2FsbG9jYXRl ZCgmbm9kZSkpIHsKPiAgIAkJZ2d0dC0+dm0uY2xlYXJfcmFuZ2UoJmdndHQtPnZtLCBub2RlLnN0 YXJ0LCBub2RlLnNpemUpOwo+IC0JCXJlbW92ZV9tYXBwYWJsZV9ub2RlKCZub2RlKTsKPiArCQly ZW1vdmVfbWFwcGFibGVfbm9kZShnZ3R0LCAmbm9kZSk7Cj4gICAJfSBlbHNlIHsKPiAgIAkJaTkx NV92bWFfdW5waW4odm1hKTsKPiAgIAl9Cj4gICBvdXRfcnBtOgo+ICAgCWludGVsX3J1bnRpbWVf cG1fcHV0KHJwbSwgd2FrZXJlZik7Cj4gLW91dF91bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiBAQCAt OTY3LDggKzk3MCw2IEBAIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAgCWludCByZXQ7 Cj4gICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRl eCk7Cj4gLQo+ICAgCWlmIChmbGFncyAmIFBJTl9NQVBQQUJMRSAmJgo+ICAgCSAgICAoIXZpZXcg fHwgdmlldy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpKSB7Cj4gICAJCS8qIElmIHRo ZSByZXF1aXJlZCBzcGFjZSBpcyBsYXJnZXIgdGhhbiB0aGUgYXZhaWxhYmxlCj4gQEAgLTEwMTUs MTQgKzEwMTYsOSBAQCBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiAgIAkJCQlyZXR1cm4gRVJSX1BUUigtRU5PU1BDKTsKPiAgIAkJfQo+ ICAgCj4gLQkJV0FSTihpOTE1X3ZtYV9pc19waW5uZWQodm1hKSwKPiAtCQkgICAgICJibyBpcyBh bHJlYWR5IHBpbm5lZCBpbiBnZ3R0IHdpdGggaW5jb3JyZWN0IGFsaWdubWVudDoiCj4gLQkJICAg ICAiIG9mZnNldD0lMDh4LCByZXEuYWxpZ25tZW50PSVsbHgsIgo+IC0JCSAgICAgIiByZXEubWFw X2FuZF9mZW5jZWFibGU9JWQsIHZtYS0+bWFwX2FuZF9mZW5jZWFibGU9JWRcbiIsCj4gLQkJICAg ICBpOTE1X2dndHRfb2Zmc2V0KHZtYSksIGFsaWdubWVudCwKPiAtCQkgICAgICEhKGZsYWdzICYg UElOX01BUFBBQkxFKSwKPiAtCQkgICAgIGk5MTVfdm1hX2lzX21hcF9hbmRfZmVuY2VhYmxlKHZt YSkpOwoKV2h5IHJlbW92aW5nIHRoZSBXQVJOPwoKPiArCQltdXRleF9sb2NrKCZ2bWEtPnZtLT5t dXRleCk7Cj4gICAJCXJldCA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwo+ICsJCW11dGV4X3VubG9j aygmdm1hLT52bS0+bXV0ZXgpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPiAgIAl9Cj4gQEAgLTEzMjgsNyArMTMyNCw5IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9l bmdpbmVzX3JlY29yZF9kZWZhdWx0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAg IAkJICogZnJvbSB0aGUgR1RUIHRvIHByZXZlbnQgc3VjaCBhY2NpZGVudHMgYW5kIHJlY2xhaW0g dGhlCj4gICAJCSAqIHNwYWNlLgo+ICAgCQkgKi8KPiArCQltdXRleF9sb2NrKCZzdGF0ZS0+dm0t Pm11dGV4KTsKPiAgIAkJZXJyID0gaTkxNV92bWFfdW5iaW5kKHN0YXRlKTsKPiArCQltdXRleF91 bmxvY2soJnN0YXRlLT52bS0+bXV0ZXgpOwo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJZ290byBvdXQ7 Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiBpbmRleCA3YWJjYWMz YjVlMmUuLjQ0ZjViNjM4ZmE0MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ldmljdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZp Y3QuYwo+IEBAIC00Nyw4ICs0Nyw3IEBAIHN0YXRpYyBpbnQgZ2d0dF9mbHVzaChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkgKiBib3VuZCBieSB0aGVpciBhY3RpdmUgcmVmZXJl bmNlLgo+ICAgCSAqLwo+ICAgCXJldHVybiBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsCj4g LQkJCQkgICAgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Cj4gLQkJCQkgICAgICBJOTE1X1dB SVRfTE9DS0VELAo+ICsJCQkJICAgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUsCj4gICAJCQkJ ICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAgfQo+ICAgCj4gQEAgLTEwNCw3ICsxMDMs NyBAQCBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0sCj4gICAJc3RydWN0IGk5MTVfdm1hICphY3RpdmU7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0J bG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJbG9j a2RlcF9hc3NlcnRfaGVsZCgmdm0tPm11dGV4KTsKPiAgIAl0cmFjZV9pOTE1X2dlbV9ldmljdCh2 bSwgbWluX3NpemUsIGFsaWdubWVudCwgZmxhZ3MpOwo+ICAgCj4gICAJLyoKPiBAQCAtMTI3LDE1 ICsxMjYsNiBAQCBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCj4gICAJCQkJICAgIG1pbl9zaXplLCBhbGlnbm1lbnQsIGNhY2hlX2xldmVsLAo+ ICAgCQkJCSAgICBzdGFydCwgZW5kLCBtb2RlKTsKPiAgIAo+IC0JLyoKPiAtCSAqIFJldGlyZSBi ZWZvcmUgd2Ugc2VhcmNoIHRoZSBhY3RpdmUgbGlzdC4gQWx0aG91Z2ggd2UgaGF2ZQo+IC0JICog cmVhc29uYWJsZSBhY2N1cmFjeSBpbiBvdXIgcmV0aXJlbWVudCBsaXN0cywgd2UgbWF5IGhhdmUK PiAtCSAqIGEgc3RyYXkgcGluIChwcmV2ZW50aW5nIGV2aWN0aW9uKSB0aGF0IGNhbiBvbmx5IGJl IHJlc29sdmVkIGJ5Cj4gLQkgKiByZXRpcmluZy4KPiAtCSAqLwo+IC0JaWYgKCEoZmxhZ3MgJiBQ SU5fTk9OQkxPQ0spKQo+IC0JCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKCk5vdCBu ZWVkZWQgYW55IG1vcmUgYmVjYXVzZT8KCj4gLQo+ICAgc2VhcmNoX2FnYWluOgo+ICAgCWFjdGl2 ZSA9IE5VTEw7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmV2aWN0aW9uX2xpc3QpOwo+IEBAIC0yNjks NyArMjU5LDcgQEAgaW50IGk5MTVfZ2VtX2V2aWN0X2Zvcl9ub2RlKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAo+ICAgCWJvb2wgY2hlY2tfY29sb3I7Cj4gICAJaW50IHJldCA9IDA7Cj4g ICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtLT5tdXRleCk7Cj4gICAJR0VNX0JVR19PTighSVNf QUxJR05FRChzdGFydCwgSTkxNV9HVFRfUEFHRV9TSVpFKSk7Cj4gICAJR0VNX0JVR19PTighSVNf QUxJR05FRChlbmQsIEk5MTVfR1RUX1BBR0VfU0laRSkpOwo+ICAgCj4gQEAgLTM3NSw3ICszNjUs NyBAQCBpbnQgaTkxNV9nZW1fZXZpY3Rfdm0oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0p Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWEsICpuZXh0Owo+ICAgCWludCByZXQ7Cj4gICAKPiAt CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJnZtLT5tdXRleCk7Cj4gICAJdHJhY2VfaTkxNV9nZW1fZXZpY3Rf dm0odm0pOwo+ICAgCj4gICAJLyogU3dpdGNoIGJhY2sgdG8gdGhlIGRlZmF1bHQgY29udGV4dCBp biBvcmRlciB0byB1bnBpbgo+IEBAIC0zOTAsNyArMzgwLDYgQEAgaW50IGk5MTVfZ2VtX2V2aWN0 X3ZtKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAgCX0KPiAgIAo+ICAgCUlOSVRf TElTVF9IRUFEKCZldmljdGlvbl9saXN0KTsKPiAtCW11dGV4X2xvY2soJnZtLT5tdXRleCk7Cj4g ICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZ2bS0+Ym91bmRfbGlzdCwgdm1fbGluaykgewo+ ICAgCQlpZiAoaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpCj4gICAJCQljb250aW51ZTsKPiBAQCAt Mzk4LDcgKzM4Nyw2IEBAIGludCBpOTE1X2dlbV9ldmljdF92bShzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSkKPiAgIAkJX19pOTE1X3ZtYV9waW4odm1hKTsKPiAgIAkJbGlzdF9hZGQoJnZt YS0+ZXZpY3RfbGluaywgJmV2aWN0aW9uX2xpc3QpOwo+ICAgCX0KPiAtCW11dGV4X3VubG9jaygm dm0tPm11dGV4KTsKPiAgIAo+ICAgCXJldCA9IDA7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKHZtYSwgbmV4dCwgJmV2aWN0aW9uX2xpc3QsIGV2aWN0X2xpbmspIHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+IGluZGV4IDYxNWE5ZjRlZjMwYy4uNDE0 ZDgzOTY2OGQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Zl bmNlX3JlZy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVn LmMKPiBAQCAtMjM3LDYgKzIzNyw3IEBAIHN0YXRpYyBpbnQgZmVuY2VfdXBkYXRlKHN0cnVjdCBp OTE1X2ZlbmNlX3JlZyAqZmVuY2UsCj4gICAKPiAgIAlvbGQgPSB4Y2hnKCZmZW5jZS0+dm1hLCBO VUxMKTsKPiAgIAlpZiAob2xkKSB7Cj4gKwkJLyogWFhYIElkZWFsbHkgd2Ugd291bGQgbW92ZSB0 aGUgd2FpdGluZyB0byBvdXRzaWRlIHRoZSBtdXRleCAqLwo+ICAgCQlyZXQgPSBpOTE1X2FjdGl2 ZV93YWl0KCZvbGQtPmFjdGl2ZSk7Cj4gICAJCWlmIChyZXQpIHsKPiAgIAkJCWZlbmNlLT52bWEg PSBvbGQ7Cj4gQEAgLTMzMSwxMyArMzMyLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9mZW5jZV9y ZWcgKmZlbmNlX2ZpbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJcmV0dXJu IEVSUl9QVFIoLUVERUFETEspOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgX19pOTE1X3ZtYV9w aW5fZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK2ludCBfX2k5MTVfdm1hX3Bpbl9mZW5j ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0 ID0gaTkxNV92bV90b19nZ3R0KHZtYS0+dm0pOwo+ICAgCXN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAq ZmVuY2U7Cj4gICAJc3RydWN0IGk5MTVfdm1hICpzZXQgPSBpOTE1X2dlbV9vYmplY3RfaXNfdGls ZWQodm1hLT5vYmopID8gdm1hIDogTlVMTDsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gKwlsb2NrZGVw X2Fzc2VydF9oZWxkKCZ2bWEtPnZtLT5tdXRleCk7Cj4gKwo+ICAgCS8qIEp1c3QgdXBkYXRlIG91 ciBwbGFjZSBpbiB0aGUgTFJVIGlmIG91ciBmZW5jZSBpcyBnZXR0aW5nIHJldXNlZC4gKi8KPiAg IAlpZiAodm1hLT5mZW5jZSkgewo+ICAgCQlmZW5jZSA9IHZtYS0+ZmVuY2U7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCA1NmQyN2NmMDlhM2QuLmIyZTQ4Mjc3ODhmYyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTE1MCwxNiArMTUwLDE4 IEBAIHN0YXRpYyB2b2lkIGdtY2hfZ2d0dF9pbnZhbGlkYXRlKHN0cnVjdCBpOTE1X2dndHQgKmdn dHQpCj4gICAKPiAgIHN0YXRpYyBpbnQgcHBndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2 bWEsCj4gICAJCQkgIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKPiAtCQkJICB1 MzIgdW51c2VkKQo+ICsJCQkgIHUzMiBmbGFncykKPiAgIHsKPiAgIAl1MzIgcHRlX2ZsYWdzOwo+ ICAgCWludCBlcnI7Cj4gICAKPiAtCWlmICghaTkxNV92bWFfaXNfYm91bmQodm1hLCBJOTE1X1ZN QV9MT0NBTF9CSU5EKSkgewo+ICsJaWYgKGZsYWdzICYgSTkxNV9WTUFfQUxMT0MpIHsKPiAgIAkJ ZXJyID0gdm1hLT52bS0+YWxsb2NhdGVfdmFfcmFuZ2Uodm1hLT52bSwKPiAgIAkJCQkJCSB2bWEt Pm5vZGUuc3RhcnQsIHZtYS0+c2l6ZSk7Cj4gICAJCWlmIChlcnIpCj4gICAJCQlyZXR1cm4gZXJy Owo+ICsKPiArCQlzZXRfYml0KEk5MTVfVk1BX0FMTE9DX0JJVCwgX19pOTE1X3ZtYV9mbGFncyh2 bWEpKTsKPiAgIAl9Cj4gICAKPiAgIAkvKiBBcHBsaWNhYmxlIHRvIFZMViwgYW5kIGdlbjgrICov Cj4gQEAgLTE2Nyw2ICsxNjksNyBAQCBzdGF0aWMgaW50IHBwZ3R0X2JpbmRfdm1hKHN0cnVjdCBp OTE1X3ZtYSAqdm1hLAo+ICAgCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkodm1hLT5v YmopKQo+ICAgCQlwdGVfZmxhZ3MgfD0gUFRFX1JFQURfT05MWTsKPiAgIAo+ICsJR0VNX0JVR19P TighdGVzdF9iaXQoSTkxNV9WTUFfQUxMT0NfQklULCBfX2k5MTVfdm1hX2ZsYWdzKHZtYSkpKTsK PiAgIAl2bWEtPnZtLT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLCB2bWEsIGNhY2hlX2xldmVsLCBw dGVfZmxhZ3MpOwo+ICAgCXdtYigpOwo+ICAgCj4gQEAgLTE3NSw3ICsxNzgsOCBAQCBzdGF0aWMg aW50IHBwZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgCj4gICBzdGF0aWMg dm9pZCBwcGd0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgewo+IC0Jdm1h LT52bS0+Y2xlYXJfcmFuZ2Uodm1hLT52bSwgdm1hLT5ub2RlLnN0YXJ0LCB2bWEtPnNpemUpOwo+ ICsJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChJOTE1X1ZNQV9BTExPQ19CSVQsIF9faTkxNV92bWFf ZmxhZ3Modm1hKSkpCj4gKwkJdm1hLT52bS0+Y2xlYXJfcmFuZ2Uodm1hLT52bSwgdm1hLT5ub2Rl LnN0YXJ0LCB2bWEtPnNpemUpOwoKVk1BIGJvdW5kIGFuZCBhbGxvY2F0ZWQgYXJlIG5vdyBzeW5v bnltcz8KCj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgcHBndHRfc2V0X3BhZ2VzKHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQo+IEBAIC01MDMsMTUgKzUwNywyNSBAQCBzdGF0aWMgdm9pZCBpOTE1X2Fk ZHJlc3Nfc3BhY2VfZmluaShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgIAltdXRl eF9kZXN0cm95KCZ2bS0+bXV0ZXgpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIHBwZ3R0X2Rl c3Ryb3lfdm1hKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICt2b2lkIF9faTkxNV92 bV9jbG9zZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgIHsKPiAgIAlzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwgKnZuOwo+ICAgCj4gLQltdXRleF9sb2NrKCZ2bS0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2biwgJnZtLT5i b3VuZF9saXN0LCB2bV9saW5rKQo+ICsJbXV0ZXhfbG9jaygmdm0tPm11dGV4KTsKPiArCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIHZuLCAmdm0tPmJvdW5kX2xpc3QsIHZtX2xpbmspIHsK PiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7Cj4gKwo+ICsJ CWlmICgha3JlZl9nZXRfdW5sZXNzX3plcm8oJm9iai0+YmFzZS5yZWZjb3VudCkpCj4gKwkJCWNv bnRpbnVlOwo+ICsKPiArCQlhdG9taWNfYW5kKH5JOTE1X1ZNQV9QSU5fTUFTSywgJnZtYS0+Zmxh Z3MpOwo+ICsJCVdBUk5fT04oaTkxNV92bWFfdW5iaW5kKHZtYSkpOwo+ICAgCQlpOTE1X3ZtYV9k ZXN0cm95KHZtYSk7Cj4gKwo+ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiArCX0KPiAg IAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ2bS0+Ym91bmRfbGlzdCkpOwo+IC0JbXV0ZXhfdW5s b2NrKCZ2bS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF91bmxvY2soJnZtLT5t dXRleCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIF9faTkxNV92bV9yZWxlYXNlKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKPiBAQCAtNTE5LDggKzUzMyw2IEBAIHN0YXRpYyB2b2lkIF9f aTkxNV92bV9yZWxlYXNlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIAlzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSA9Cj4gICAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlLCByY3Uud29yayk7Cj4gICAKPiAtCXBwZ3R0X2Rlc3Ryb3lfdm1hKHZt KTsKPiAtCj4gICAJdm0tPmNsZWFudXAodm0pOwo+ICAgCWk5MTVfYWRkcmVzc19zcGFjZV9maW5p KHZtKTsKPiAgIAo+IEBAIC01MzUsNyArNTQ3LDYgQEAgdm9pZCBpOTE1X3ZtX3JlbGVhc2Uoc3Ry dWN0IGtyZWYgKmtyZWYpCj4gICAJR0VNX0JVR19PTihpOTE1X2lzX2dndHQodm0pKTsKPiAgIAl0 cmFjZV9pOTE1X3BwZ3R0X3JlbGVhc2Uodm0pOwo+ICAgCj4gLQl2bS0+Y2xvc2VkID0gdHJ1ZTsK PiAgIAlxdWV1ZV9yY3Vfd29yayh2bS0+aTkxNS0+d3EsICZ2bS0+cmN1KTsKPiAgIH0KPiAgIAo+ IEBAIC01NDMsNiArNTU0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9hZGRyZXNzX3NwYWNlX2luaXQo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sIGludCBzdWJjbGFzcykKPiAgIHsKPiAgIAlr cmVmX2luaXQoJnZtLT5yZWYpOwo+ICAgCUlOSVRfUkNVX1dPUksoJnZtLT5yY3UsIF9faTkxNV92 bV9yZWxlYXNlKTsKPiArCWF0b21pY19zZXQoJnZtLT5vcGVuLCAxKTsKPiAgIAo+ICAgCS8qCj4g ICAJICogVGhlIHZtLT5tdXRleCBtdXN0IGJlIHJlY2xhaW0gc2FmZSAoZm9yIHVzZSBpbiB0aGUg c2hyaW5rZXIpLgo+IEBAIC0xNzY5LDEyICsxNzgxLDggQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0 dF9mcmVlX3BkKHN0cnVjdCBnZW42X3BwZ3R0ICpwcGd0dCkKPiAgIHN0YXRpYyB2b2lkIGdlbjZf cHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgIHsKPiAgIAlz dHJ1Y3QgZ2VuNl9wcGd0dCAqcHBndHQgPSB0b19nZW42X3BwZ3R0KGk5MTVfdm1fdG9fcHBndHQo dm0pKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdm0tPmk5MTU7Cj4gICAK PiAtCS8qIEZJWE1FIHJlbW92ZSB0aGUgc3RydWN0X211dGV4IHRvIGJyaW5nIHRoZSBsb2NraW5n IHVuZGVyIGNvbnRyb2wgKi8KPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAgCWk5MTVfdm1hX2Rlc3Ryb3kocHBndHQtPnZtYSk7Cj4gLQltdXRleF91bmxvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJZ2VuNl9wcGd0dF9mcmVlX3BkKHBwZ3R0 KTsKPiAgIAlmcmVlX3NjcmF0Y2godm0pOwo+IEBAIC0xODYzLDcgKzE4NzEsOCBAQCBzdGF0aWMg c3RydWN0IGk5MTVfdm1hICpwZF92bWFfY3JlYXRlKHN0cnVjdCBnZW42X3BwZ3R0ICpwcGd0dCwg aW50IHNpemUpCj4gICAKPiAgIAlpOTE1X2FjdGl2ZV9pbml0KGk5MTUsICZ2bWEtPmFjdGl2ZSwg TlVMTCwgTlVMTCk7Cj4gICAKPiAtCXZtYS0+dm0gPSAmZ2d0dC0+dm07Cj4gKwltdXRleF9pbml0 KCZ2bWEtPnBhZ2VzX211dGV4KTsKPiArCXZtYS0+dm0gPSBpOTE1X3ZtX2dldCgmZ2d0dC0+dm0p Owo+ICAgCXZtYS0+b3BzID0gJnBkX3ZtYV9vcHM7Cj4gICAJdm1hLT5wcml2YXRlID0gcHBndHQ7 Cj4gICAKPiBAQCAtMTg4Myw3ICsxODkyLDcgQEAgaW50IGdlbjZfcHBndHRfcGluKHN0cnVjdCBp OTE1X3BwZ3R0ICpiYXNlKQo+ICAgCXN0cnVjdCBnZW42X3BwZ3R0ICpwcGd0dCA9IHRvX2dlbjZf cHBndHQoYmFzZSk7Cj4gICAJaW50IGVyciA9IDA7Cj4gICAKPiAtCUdFTV9CVUdfT04ocHBndHQt PmJhc2Uudm0uY2xvc2VkKTsKPiArCUdFTV9CVUdfT04oIWF0b21pY19yZWFkKCZwcGd0dC0+YmFz ZS52bS5vcGVuKSk7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIFdvcmthcm91bmQgdGhlIGxpbWl0ZWQg bWF4aW11bSB2bWEtPnBpbl9jb3VudCBhbmQgdGhlIGFsaWFzaW5nX3BwZ3R0Cj4gQEAgLTI0NjAs MTQgKzI0NjksMTggQEAgc3RhdGljIGludCBhbGlhc2luZ19ndHRfYmluZF92bWEoc3RydWN0IGk5 MTVfdm1hICp2bWEsCj4gICAJaWYgKGZsYWdzICYgSTkxNV9WTUFfTE9DQUxfQklORCkgewo+ICAg CQlzdHJ1Y3QgaTkxNV9wcGd0dCAqYWxpYXMgPSBpOTE1X3ZtX3RvX2dndHQodm1hLT52bSktPmFs aWFzOwo+ICAgCj4gLQkJaWYgKCFpOTE1X3ZtYV9pc19ib3VuZCh2bWEsIEk5MTVfVk1BX0xPQ0FM X0JJTkQpKSB7Cj4gKwkJaWYgKGZsYWdzICYgSTkxNV9WTUFfQUxMT0MpIHsKPiAgIAkJCXJldCA9 IGFsaWFzLT52bS5hbGxvY2F0ZV92YV9yYW5nZSgmYWxpYXMtPnZtLAo+ICAgCQkJCQkJCSAgdm1h LT5ub2RlLnN0YXJ0LAo+ICAgCQkJCQkJCSAgdm1hLT5zaXplKTsKPiAgIAkJCWlmIChyZXQpCj4g ICAJCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJCXNldF9iaXQoSTkxNV9WTUFfQUxMT0NfQklULCBf X2k5MTVfdm1hX2ZsYWdzKHZtYSkpOwo+ICAgCQl9Cj4gICAKPiArCQlHRU1fQlVHX09OKCF0ZXN0 X2JpdChJOTE1X1ZNQV9BTExPQ19CSVQsCj4gKwkJCQkgICAgIF9faTkxNV92bWFfZmxhZ3Modm1h KSkpOwo+ICAgCQlhbGlhcy0+dm0uaW5zZXJ0X2VudHJpZXMoJmFsaWFzLT52bSwgdm1hLAo+ICAg CQkJCQkgY2FjaGVfbGV2ZWwsIHB0ZV9mbGFncyk7Cj4gICAJfQo+IEBAIC0yNDk2LDcgKzI1MDks NyBAQCBzdGF0aWMgdm9pZCBhbGlhc2luZ19ndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEg KnZtYSkKPiAgIAkJCXZtLT5jbGVhcl9yYW5nZSh2bSwgdm1hLT5ub2RlLnN0YXJ0LCB2bWEtPnNp emUpOwo+ICAgCX0KPiAgIAo+IC0JaWYgKGk5MTVfdm1hX2lzX2JvdW5kKHZtYSwgSTkxNV9WTUFf TE9DQUxfQklORCkpIHsKPiArCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoSTkxNV9WTUFfQUxMT0Nf QklULCBfX2k5MTVfdm1hX2ZsYWdzKHZtYSkpKSB7Cj4gICAJCXN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtID0KPiAgIAkJCSZpOTE1X3ZtX3RvX2dndHQodm1hLT52bSktPmFsaWFzLT52bTsK PiAgIAo+IEBAIC0yNTk5LDIyICsyNjEyLDE2IEBAIHN0YXRpYyBpbnQgaW5pdF9hbGlhc2luZ19w cGd0dChzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+ICAgCj4gICBzdGF0aWMgdm9pZCBmaW5pX2Fs aWFzaW5nX3BwZ3R0KHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGdndHQtPnZtLmk5MTU7Cj4gICAJc3RydWN0IGk5MTVfcHBn dHQgKnBwZ3R0Owo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCj4gICAJcHBndHQgPSBmZXRjaF9hbmRfemVybygmZ2d0dC0+YWxpYXMpOwo+ICAgCWlmICgh cHBndHQpCj4gLQkJZ290byBvdXQ7Cj4gKwkJcmV0dXJuOwo+ICAgCj4gICAJaTkxNV92bV9wdXQo JnBwZ3R0LT52bSk7Cj4gICAKPiAgIAlnZ3R0LT52bS52bWFfb3BzLmJpbmRfdm1hICAgPSBnZ3R0 X2JpbmRfdm1hOwo+ICAgCWdndHQtPnZtLnZtYV9vcHMudW5iaW5kX3ZtYSA9IGdndHRfdW5iaW5k X3ZtYTsKPiAtCj4gLW91dDoKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgZ2d0dF9yZXNlcnZlX2d1Y190b3Aoc3RydWN0 IGk5MTVfZ2d0dCAqZ2d0dCkKPiBAQCAtMjczMSwxNSArMjczOCwxNCBAQCBpbnQgaTkxNV9pbml0 X2dndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAKPiAgIHN0YXRpYyB2b2lk IGdndHRfY2xlYW51cF9odyhzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+ICAgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBnZ3R0LT52bS5pOTE1Owo+ICAgCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hLCAqdm47Cj4gICAKPiAtCWdndHQtPnZtLmNsb3NlZCA9IHRydWU7Cj4gKwlhdG9t aWNfc2V0KCZnZ3R0LT52bS5vcGVuLCAwKTsKPiAgIAo+ICAgCXJjdV9iYXJyaWVyKCk7IC8qIGZs dXNoIHRoZSBSQ1UnZWRfX2k5MTVfdm1fcmVsZWFzZSAqLwo+IC0JZmx1c2hfd29ya3F1ZXVlKGk5 MTUtPndxKTsKPiArCWZsdXNoX3dvcmtxdWV1ZShnZ3R0LT52bS5pOTE1LT53cSk7Cj4gICAKPiAt CW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJbXV0ZXhfbG9jaygmZ2d0 dC0+dm0ubXV0ZXgpOwo+ICAgCj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4s ICZnZ3R0LT52bS5ib3VuZF9saXN0LCB2bV9saW5rKQo+ICAgCQlXQVJOX09OKGk5MTVfdm1hX3Vu YmluZCh2bWEpKTsKPiBAQCAtMjc0OCwxNSArMjc1NCwxMiBAQCBzdGF0aWMgdm9pZCBnZ3R0X2Ns ZWFudXBfaHcoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPiAgIAkJZHJtX21tX3JlbW92ZV9ub2Rl KCZnZ3R0LT5lcnJvcl9jYXB0dXJlKTsKPiAgIAo+ICAgCWdndHRfcmVsZWFzZV9ndWNfdG9wKGdn dHQpOwo+IC0KPiAtCWlmIChkcm1fbW1faW5pdGlhbGl6ZWQoJmdndHQtPnZtLm1tKSkgewo+IC0J CWludGVsX3ZndF9kZWJhbGxvb24oZ2d0dCk7Cj4gLQkJaTkxNV9hZGRyZXNzX3NwYWNlX2Zpbmko JmdndHQtPnZtKTsKPiAtCX0KPiArCWludGVsX3ZndF9kZWJhbGxvb24oZ2d0dCk7Cj4gICAKPiAg IAlnZ3R0LT52bS5jbGVhbnVwKCZnZ3R0LT52bSk7Cj4gICAKPiAtCW11dGV4X3VubG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF91bmxvY2soJmdndHQtPnZtLm11dGV4KTsK PiArCWk5MTVfYWRkcmVzc19zcGFjZV9maW5pKCZnZ3R0LT52bSk7Cj4gICAKPiAgIAlhcmNoX3Bo eXNfd2NfZGVsKGdndHQtPm10cnIpOwo+ICAgCWlvX21hcHBpbmdfZmluaSgmZ2d0dC0+aW9tYXAp Owo+IEBAIC0zMTg1LDkgKzMxODgsNiBAQCBpbnQgaTkxNV9nZ3R0X3Byb2JlX2h3KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgc3RhdGljIGludCBnZ3R0X2luaXRfaHcoc3RydWN0 IGk5MTVfZ2d0dCAqZ2d0dCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IGdndHQtPnZtLmk5MTU7Cj4gLQlpbnQgcmV0ID0gMDsKPiAtCj4gLQltdXRleF9sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAgCWk5MTVfYWRkcmVzc19zcGFjZV9pbml0 KCZnZ3R0LT52bSwgVk1fQ0xBU1NfR0dUVCk7Cj4gICAKPiBAQCAtMzIwMywxOCArMzIwMywxNCBA QCBzdGF0aWMgaW50IGdndHRfaW5pdF9odyhzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+ICAgCQkJ CWdndHQtPmdtYWRyLnN0YXJ0LAo+ICAgCQkJCWdndHQtPm1hcHBhYmxlX2VuZCkpIHsKPiAgIAkJ Z2d0dC0+dm0uY2xlYW51cCgmZ2d0dC0+dm0pOwo+IC0JCXJldCA9IC1FSU87Cj4gLQkJZ290byBv dXQ7Cj4gKwkJcmV0dXJuIC1FSU87Cj4gICAJfQo+ICAgCj4gICAJZ2d0dC0+bXRyciA9IGFyY2hf cGh5c193Y19hZGQoZ2d0dC0+Z21hZHIuc3RhcnQsIGdndHQtPm1hcHBhYmxlX2VuZCk7Cj4gICAK PiAgIAlpOTE1X2dndHRfaW5pdF9mZW5jZXMoZ2d0dCk7Cj4gICAKPiAtb3V0Ogo+IC0JbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gLQlyZXR1cm4gcmV0Owo+ICsJ cmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IEBAIC0zMjg2LDYgKzMyODIsNyBAQCBzdGF0 aWMgdm9pZCBnZ3R0X3Jlc3RvcmVfbWFwcGluZ3Moc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPiAg IHsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZuOwo+ICAgCWJvb2wgZmx1c2ggPSBmYWxz ZTsKPiArCWludCBvcGVuOwo+ICAgCj4gICAJaW50ZWxfZ3RfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0 cyhnZ3R0LT52bS5ndCk7Cj4gICAKPiBAQCAtMzI5Myw3ICszMjkwLDkgQEAgc3RhdGljIHZvaWQg Z2d0dF9yZXN0b3JlX21hcHBpbmdzKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCj4gICAKPiAgIAkv KiBGaXJzdCBmaWxsIG91ciBwb3J0aW9uIG9mIHRoZSBHVFQgd2l0aCBzY3JhdGNoIHBhZ2VzICov Cj4gICAJZ2d0dC0+dm0uY2xlYXJfcmFuZ2UoJmdndHQtPnZtLCAwLCBnZ3R0LT52bS50b3RhbCk7 Cj4gLQlnZ3R0LT52bS5jbG9zZWQgPSB0cnVlOyAvKiBza2lwIHJld3JpdGluZyBQVEUgb24gVk1B IHVuYmluZCAqLwo+ICsKPiArCS8qIFNraXAgcmV3cml0aW5nIFBURSBvbiBWTUEgdW5iaW5kLiAq Lwo+ICsJb3BlbiA9IGF0b21pY194Y2hnKCZnZ3R0LT52bS5vcGVuLCAwKTsKPiAgIAo+ICAgCS8q IGNsZmx1c2ggb2JqZWN0cyBib3VuZCBpbnRvIHRoZSBHR1RUIGFuZCByZWJpbmQgdGhlbS4gKi8K PiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2biwgJmdndHQtPnZtLmJvdW5kX2xp c3QsIHZtX2xpbmspIHsKPiBAQCAtMzMwMiwyNCArMzMwMSwyMCBAQCBzdGF0aWMgdm9pZCBnZ3R0 X3Jlc3RvcmVfbWFwcGluZ3Moc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPiAgIAkJaWYgKCFpOTE1 X3ZtYV9pc19ib3VuZCh2bWEsIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSkKPiAgIAkJCWNvbnRpbnVl Owo+ICAgCj4gLQkJbXV0ZXhfdW5sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gLQo+ICAgCQlpZiAo IWk5MTVfdm1hX3VuYmluZCh2bWEpKQo+IC0JCQlnb3RvIGxvY2s7Cj4gKwkJCWNvbnRpbnVlOwo+ ICAgCj4gKwkJY2xlYXJfYml0KEk5MTVfVk1BX0dMT0JBTF9CSU5EX0JJVCwgX19pOTE1X3ZtYV9m bGFncyh2bWEpKTsKPiAgIAkJV0FSTl9PTihpOTE1X3ZtYV9iaW5kKHZtYSwKPiAgIAkJCQkgICAg ICBvYmogPyBvYmotPmNhY2hlX2xldmVsIDogMCwKPiAtCQkJCSAgICAgIFBJTl9VUERBVEUpKTsK PiArCQkJCSAgICAgIFBJTl9HTE9CQUwsIE5VTEwpKTsKPiAgIAkJaWYgKG9iaikgeyAvKiBvbmx5 IHVzZWQgZHVyaW5nIHJlc3VtZSA9PiBleGNsdXNpdmUgYWNjZXNzICovCj4gICAJCQlmbHVzaCB8 PSBmZXRjaF9hbmRfemVybygmb2JqLT53cml0ZV9kb21haW4pOwo+ICAgCQkJb2JqLT5yZWFkX2Rv bWFpbnMgfD0gSTkxNV9HRU1fRE9NQUlOX0dUVDsKPiAgIAkJfQo+IC0KPiAtbG9jazoKPiAtCQlt dXRleF9sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gICAJfQo+ICAgCj4gLQlnZ3R0LT52bS5jbG9z ZWQgPSBmYWxzZTsKPiArCWF0b21pY19zZXQoJmdndHQtPnZtLm9wZW4sIG9wZW4pOwo+ICAgCWdn dHQtPmludmFsaWRhdGUoZ2d0dCk7Cj4gICAKPiAgIAltdXRleF91bmxvY2soJmdndHQtPnZtLm11 dGV4KTsKPiBAQCAtMzcxMSw3ICszNzA2LDggQEAgaW50IGk5MTVfZ2VtX2d0dF9pbnNlcnQoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gICAJdTY0IG9mZnNldDsKPiAgIAlpbnQgZXJy Owo+ICAgCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bS0+bXV0ZXgpOwo+ICsKPiAgIAlHRU1fQlVH X09OKCFzaXplKTsKPiAgIAlHRU1fQlVHX09OKCFJU19BTElHTkVEKHNpemUsIEk5MTVfR1RUX1BB R0VfU0laRSkpOwo+ICAgCUdFTV9CVUdfT04oYWxpZ25tZW50ICYmICFpc19wb3dlcl9vZl8yKGFs aWdubWVudCkpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggMDA3YmRh ZjRiYTAwLi5lNzk0ZDFmNWVlZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aAo+IEBAIC0zMDcsNyArMzA3LDcgQEAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSB7Cj4gICAK PiAgIAl1bnNpZ25lZCBpbnQgYmluZF9hbGxvYzsKPiAgIAo+IC0JYm9vbCBjbG9zZWQ7Cj4gKwlh dG9taWNfdCBvcGVuOwo+ICAgCj4gICAJc3RydWN0IG11dGV4IG11dGV4OyAvKiBwcm90ZWN0cyB2 bWEgYW5kIG91ciBsaXN0cyAqLwo+ICAgI2RlZmluZSBWTV9DTEFTU19HR1RUIDAKPiBAQCAtNTc1 LDYgKzU3NSwzNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV92bV9wdXQoc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pCj4gICAJa3JlZl9wdXQoJnZtLT5yZWYsIGk5MTVfdm1fcmVsZWFz ZSk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICoKPiAraTkxNV92bV9vcGVuKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICt7Cj4g KwlHRU1fQlVHX09OKCFhdG9taWNfcmVhZCgmdm0tPm9wZW4pKTsKPiArCWF0b21pY19pbmMoJnZt LT5vcGVuKTsKPiArCXJldHVybiBpOTE1X3ZtX2dldCh2bSk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bmxpbmUgYm9vbAo+ICtpOTE1X3ZtX3RyeW9wZW4oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pCj4gK3sKPiArCWlmIChhdG9taWNfYWRkX3VubGVzcygmdm0tPm9wZW4sIDEsIDApKQo+ICsJ CXJldHVybiBpOTE1X3ZtX2dldCh2bSk7Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ ICt2b2lkIF9faTkxNV92bV9jbG9zZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Cj4g Kwo+ICtzdGF0aWMgaW5saW5lIHZvaWQKPiAraTkxNV92bV9jbG9zZShzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSkKPiArewo+ICsJR0VNX0JVR19PTighYXRvbWljX3JlYWQoJnZtLT5vcGVu KSk7Cj4gKwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmdm0tPm9wZW4pKQo+ICsJCV9faTkxNV92 bV9jbG9zZSh2bSk7Cj4gKwo+ICsJaTkxNV92bV9wdXQodm0pOwo+ICt9Cj4gKwo+ICAgaW50IGdl bjZfcHBndHRfcGluKHN0cnVjdCBpOTE1X3BwZ3R0ICpiYXNlKTsKPiAgIHZvaWQgZ2VuNl9wcGd0 dF91bnBpbihzdHJ1Y3QgaTkxNV9wcGd0dCAqYmFzZSk7Cj4gICB2b2lkIGdlbjZfcHBndHRfdW5w aW5fYWxsKHN0cnVjdCBpOTE1X3BwZ3R0ICpiYXNlKTsKPiBAQCAtNjA3LDEwICs2MzYsOSBAQCBp bnQgaTkxNV9nZW1fZ3R0X2luc2VydChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAg ICNkZWZpbmUgUElOX09GRlNFVF9CSUFTCQlCSVRfVUxMKDYpCj4gICAjZGVmaW5lIFBJTl9PRkZT RVRfRklYRUQJQklUX1VMTCg3KQo+ICAgCj4gLSNkZWZpbmUgUElOX01CWgkJCUJJVF9VTEwoOCkg LyogSTkxNV9WTUFfUElOX09WRVJGTE9XICovCj4gLSNkZWZpbmUgUElOX0dMT0JBTAkJQklUX1VM TCg5KSAvKiBJOTE1X1ZNQV9HTE9CQUxfQklORCAqLwo+IC0jZGVmaW5lIFBJTl9VU0VSCQlCSVRf VUxMKDEwKSAvKiBJOTE1X1ZNQV9MT0NBTF9CSU5EICovCj4gLSNkZWZpbmUgUElOX1VQREFURQkJ QklUX1VMTCgxMSkKPiArI2RlZmluZSBQSU5fVVBEQVRFCQlCSVRfVUxMKDkpCj4gKyNkZWZpbmUg UElOX0dMT0JBTAkJQklUX1VMTCgxMCkgLyogSTkxNV9WTUFfR0xPQkFMX0JJTkQgKi8KPiArI2Rl ZmluZSBQSU5fVVNFUgkJQklUX1VMTCgxMSkgLyogSTkxNV9WTUFfTE9DQUxfQklORCAqLwo+ICAg Cj4gICAjZGVmaW5lIFBJTl9PRkZTRVRfTUFTSwkJKC1JOTE1X0dUVF9QQUdFX1NJWkUpCj4gICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IGluZGV4IGMxYjc2NDIzMzc2MS4uMDY2MzNiNGFk MjYwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBAQCAtMTIwNCwxNSArMTIwNCwx MCBAQCBzdGF0aWMgaW50IGk5MTVfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtLAo+ICAgc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpvYV9waW5fY29udGV4dChzdHJ1 Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X2dlbV9l bmdpbmVzX2l0ZXIgaXQ7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHN0cmVh bS0+ZGV2X3ByaXY7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IHN0cmVhbS0+ Y3R4Owo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPiAgIAlpbnQgZXJyOwo+ICAgCj4g LQllcnIgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmaTkxNS0+ZHJtKTsKPiAtCWlm IChlcnIpCj4gLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiAtCj4gICAJZm9yX2VhY2hfZ2VtX2Vu Z2luZShjZSwgaTkxNV9nZW1fY29udGV4dF9sb2NrX2VuZ2luZXMoY3R4KSwgaXQpIHsKPiAgIAkJ aWYgKGNlLT5lbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKPiAgIAkJCWNvbnRpbnVlOwo+ IEBAIC0xMjI5LDEwICsxMjI0LDYgQEAgc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpvYV9w aW5fY29udGV4dChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgCX0KPiAgIAlp OTE1X2dlbV9jb250ZXh0X3VubG9ja19lbmdpbmVzKGN0eCk7Cj4gICAKPiAtCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAoZXJyKQo+IC0JCXJldHVybiBFUlJf UFRSKGVycik7Cj4gLQo+ICAgCXJldHVybiBzdHJlYW0tPnBpbm5lZF9jdHg7Cj4gICB9Cj4gICAK PiBAQCAtMTMzMSwzMiArMTMyMiwyMiBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lk KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICAgKi8KPiAgIHN0YXRpYyB2b2lk IG9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4g ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9w cml2Owo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPiAgIAo+ICAgCXN0cmVhbS0+c3Bl Y2lmaWNfY3R4X2lkID0gSU5WQUxJRF9DVFhfSUQ7Cj4gICAJc3RyZWFtLT5zcGVjaWZpY19jdHhf aWRfbWFzayA9IDA7Cj4gICAKPiAgIAljZSA9IGZldGNoX2FuZF96ZXJvKCZzdHJlYW0tPnBpbm5l ZF9jdHgpOwo+IC0JaWYgKGNlKSB7Cj4gLQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+ICsJaWYgKGNlKQo+ICAgCQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAt CQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCX0KPiAgIH0K PiAgIAo+ICAgc3RhdGljIHZvaWQKPiAgIGZyZWVfb2FfYnVmZmVyKHN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW0pCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHN0cmVhbS0+ZGV2X3ByaXY7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gLQo+ICAgCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZzdHJlYW0tPm9hX2J1 ZmZlci52bWEsCj4gICAJCQkJICAgSTkxNV9WTUFfUkVMRUFTRV9NQVApOwo+ICAgCj4gLQltdXRl eF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlzdHJlYW0tPm9hX2J1 ZmZlci52YWRkciA9IE5VTEw7Cj4gICB9Cj4gICAKPiBAQCAtMTUxMSwxOCArMTQ5MiwxMyBAQCBz dGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt KQo+ICAgCWlmIChXQVJOX09OKHN0cmVhbS0+b2FfYnVmZmVyLnZtYSkpCj4gICAJCXJldHVybiAt RU5PREVWOwo+ICAgCj4gLQlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2 X3ByaXYtPmRybSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+ICAgCUJVSUxE X0JVR19PTl9OT1RfUE9XRVJfT0ZfMihPQV9CVUZGRVJfU0laRSk7Cj4gICAJQlVJTERfQlVHX09O KE9BX0JVRkZFUl9TSVpFIDwgU1pfMTI4SyB8fCBPQV9CVUZGRVJfU0laRSA+IFNaXzE2TSk7Cj4g ICAKPiAgIAlibyA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW0oZGV2X3ByaXYsIE9BX0JV RkZFUl9TSVpFKTsKPiAgIAlpZiAoSVNfRVJSKGJvKSkgewo+ICAgCQlEUk1fRVJST1IoIkZhaWxl ZCB0byBhbGxvY2F0ZSBPQSBidWZmZXJcbiIpOwo+IC0JCXJldCA9IFBUUl9FUlIoYm8pOwo+IC0J CWdvdG8gdW5sb2NrOwo+ICsJCXJldHVybiBQVFJfRVJSKGJvKTsKPiAgIAl9Cj4gICAKPiAgIAlp OTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2NvaGVyZW5jeShibywgSTkxNV9DQUNIRV9MTEMpOwo+ IEBAIC0xNTQ2LDcgKzE1MjIsNyBAQCBzdGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3Qg aTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+ICAgCQkJIGk5MTVfZ2d0dF9vZmZzZXQoc3RyZWFt LT5vYV9idWZmZXIudm1hKSwKPiAgIAkJCSBzdHJlYW0tPm9hX2J1ZmZlci52YWRkcik7Cj4gICAK PiAtCWdvdG8gdW5sb2NrOwo+ICsJcmV0dXJuIDA7Cj4gICAKPiAgIGVycl91bnBpbjoKPiAgIAlf X2k5MTVfdm1hX3VucGluKHZtYSk7Cj4gQEAgLTE1NTcsOCArMTUzMyw2IEBAIHN0YXRpYyBpbnQg YWxsb2Nfb2FfYnVmZmVyKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gICAJc3Ry ZWFtLT5vYV9idWZmZXIudmFkZHIgPSBOVUxMOwo+ICAgCXN0cmVhbS0+b2FfYnVmZmVyLnZtYSA9 IE5VTEw7Cj4gICAKPiAtdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92bWEuYwo+IGluZGV4IDlhZGI4NWJhNmRhYS4uMjg4Njc5ZDhhNmE5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZtYS5jCj4gQEAgLTMyLDYgKzMyLDcgQEAKPiAgIAo+ICAgI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCj4gICAjaW5jbHVkZSAiaTkxNV9nbG9iYWxzLmgiCj4gKyNpbmNsdWRlICJpOTE1 X3N3X2ZlbmNlX3dvcmsuaCIKPiAgICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCj4gICAjaW5jbHVk ZSAiaTkxNV92bWEuaCIKPiAgIAo+IEBAIC0xMTAsNyArMTExLDggQEAgdm1hX2NyZWF0ZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCWlmICh2bWEgPT0gTlVMTCkKPiAgIAkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gICAKPiAtCXZtYS0+dm0gPSB2bTsKPiArCW11dGV4 X2luaXQoJnZtYS0+cGFnZXNfbXV0ZXgpOwo+ICsJdm1hLT52bSA9IGk5MTVfdm1fZ2V0KHZtKTsK PiAgIAl2bWEtPm9wcyA9ICZ2bS0+dm1hX29wczsKPiAgIAl2bWEtPm9iaiA9IG9iajsKPiAgIAl2 bWEtPnJlc3YgPSBvYmotPmJhc2UucmVzdjsKPiBAQCAtMjYxLDggKzI2Myw2IEBAIHZtYV9sb29r dXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgICAqIE9uY2UgY3JlYXRlZCwg dGhlIFZNQSBpcyBrZXB0IHVudGlsIGVpdGhlciB0aGUgb2JqZWN0IGlzIGZyZWVkLCBvciB0aGUK PiAgICAqIGFkZHJlc3Mgc3BhY2UgaXMgY2xvc2VkLgo+ICAgICoKPiAtICogTXVzdCBiZSBjYWxs ZWQgd2l0aCBzdHJ1Y3RfbXV0ZXggaGVsZC4KPiAtICoKPiAgICAqIFJldHVybnMgdGhlIHZtYSwg b3IgYW4gZXJyb3IgcG9pbnRlci4KPiAgICAqLwo+ICAgc3RydWN0IGk5MTVfdm1hICoKPiBAQCAt MjczLDcgKzI3Myw3IEBAIGk5MTVfdm1hX2luc3RhbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gICAKPiAgIAlHRU1fQlVHX09O KHZpZXcgJiYgIWk5MTVfaXNfZ2d0dCh2bSkpOwo+IC0JR0VNX0JVR19PTih2bS0+Y2xvc2VkKTsK PiArCUdFTV9CVUdfT04oIWF0b21pY19yZWFkKCZ2bS0+b3BlbikpOwo+ICAgCj4gICAJc3Bpbl9s b2NrKCZvYmotPnZtYS5sb2NrKTsKPiAgIAl2bWEgPSB2bWFfbG9va3VwKG9iaiwgdm0sIHZpZXcp Owo+IEBAIC0yODcsMTggKzI4Nyw2MyBAQCBpOTE1X3ZtYV9pbnN0YW5jZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCXJldHVybiB2bWE7Cj4gICB9Cj4gICAKPiArc3RydWN0 IGk5MTVfdm1hX3dvcmsgewo+ICsJc3RydWN0IGRtYV9mZW5jZV93b3JrIGJhc2U7Cj4gKwlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKPiArCWVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbDsK PiArCXVuc2lnbmVkIGludCBmbGFnczsKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgX192bWFfYmlu ZChzdHJ1Y3QgZG1hX2ZlbmNlX3dvcmsgKndvcmspCj4gK3sKPiArCXN0cnVjdCBpOTE1X3ZtYV93 b3JrICp2dyA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKnZ3KSwgYmFzZSk7Cj4gKwlzdHJ1 Y3QgaTkxNV92bWEgKnZtYSA9IHZ3LT52bWE7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWVyciA9IHZt YS0+b3BzLT5iaW5kX3ZtYSh2bWEsIHZ3LT5jYWNoZV9sZXZlbCwgdnctPmZsYWdzKTsKPiArCWlm IChlcnIpCj4gKwkJYXRvbWljX29yKEk5MTVfVk1BX0VSUk9SLCAmdm1hLT5mbGFncyk7Cj4gKwo+ ICsJaWYgKHZtYS0+b2JqKQo+ICsJCV9faTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHZtYS0+ b2JqKTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRtYV9mZW5jZV93b3JrX29wcyBiaW5kX29wcyA9IHsKPiArCS5uYW1lID0gImJpbmQiLAo+ICsJ LndvcmsgPSBfX3ZtYV9iaW5kLAo+ICt9Owo+ICsKPiArc3RydWN0IGk5MTVfdm1hX3dvcmsgKmk5 MTVfdm1hX3dvcmsodm9pZCkKPiArewo+ICsJc3RydWN0IGk5MTVfdm1hX3dvcmsgKnZ3Owo+ICsK PiArCXZ3ID0ga3phbGxvYyhzaXplb2YoKnZ3KSwgR0ZQX0tFUk5FTCk7CgpUaGlzIGNvdWxkIGJl IHJlYXNvbmFibHkgaGlnaCB0cmFmZmljIHRvIHdhcnJhbnQgYSBkZWRpY2F0ZWQgc2xhYi4KCj4g KwlpZiAoIXZ3KQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCWRtYV9mZW5jZV93b3JrX2luaXQo JnZ3LT5iYXNlLCAmYmluZF9vcHMpOwoKSG0sIG5ldyAoZm9yIG1lKSBBUEkuLiB3aGF0IGlzIHRo ZSBhZHZhbnRhZ2UvbmVlZCBjb21wYXJlZCB0byBwbGFpbiB3b3JrZXJzPwoKPiArCXZ3LT5iYXNl LmRtYS5lcnJvciA9IC1FQUdBSU47IC8qIGRpc2FibGUgdGhlIHdvcmtlciBieSBkZWZhdWx0ICov Cj4gKwo+ICsJcmV0dXJuIHZ3Owo+ICt9Cj4gKwo+ICAgLyoqCj4gICAgKiBpOTE1X3ZtYV9iaW5k IC0gU2V0cyB1cCBQVEVzIGZvciBhbiBWTUEgaW4gaXQncyBjb3JyZXNwb25kaW5nIGFkZHJlc3Mg c3BhY2UuCj4gICAgKiBAdm1hOiBWTUEgdG8gbWFwCj4gICAgKiBAY2FjaGVfbGV2ZWw6IG1hcHBp bmcgY2FjaGUgbGV2ZWwKPiAgICAqIEBmbGFnczogZmxhZ3MgbGlrZSBnbG9iYWwgb3IgbG9jYWwg bWFwcGluZwo+ICsgKiBAd29yazogcHJlYWxsb2NhdGVkIHdvcmtlciBmb3IgYWxsb2NhdGluZyBh bmQgYmluZGluZyB0aGUgUFRFCj4gICAgKgo+ICAgICogRE1BIGFkZHJlc3NlcyBhcmUgdGFrZW4g ZnJvbSB0aGUgc2NhdHRlci1nYXRoZXIgdGFibGUgb2YgdGhpcyBvYmplY3QgKG9yIG9mCj4gICAg KiB0aGlzIFZNQSBpbiBjYXNlIG9mIG5vbi1kZWZhdWx0IEdHVFQgdmlld3MpIGFuZCBQVEUgZW50 cmllcyBzZXQgdXAuCj4gICAgKiBOb3RlIHRoYXQgRE1BIGFkZHJlc3NlcyBhcmUgYWxzbyB0aGUg b25seSBwYXJ0IG9mIHRoZSBTRyB0YWJsZSB3ZSBjYXJlIGFib3V0Lgo+ICAgICovCj4gLWludCBp OTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwg Y2FjaGVfbGV2ZWwsCj4gLQkJICB1MzIgZmxhZ3MpCj4gK2ludCBpOTE1X3ZtYV9iaW5kKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLAo+ICsJCSAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVs LAo+ICsJCSAgdTMyIGZsYWdzLAo+ICsJCSAgc3RydWN0IGk5MTVfdm1hX3dvcmsgKndvcmspCj4g ICB7Cj4gICAJdTMyIGJpbmRfZmxhZ3M7Cj4gICAJdTMyIHZtYV9mbGFnczsKPiBAQCAtMzE1LDEx ICszNjAsOCBAQCBpbnQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgZW51bSBp OTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAo+ICAgCWlmIChHRU1fREVCVUdfV0FSTl9PTigh ZmxhZ3MpKQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+IC0JYmluZF9mbGFncyA9IDA7Cj4g LQlpZiAoZmxhZ3MgJiBQSU5fR0xPQkFMKQo+IC0JCWJpbmRfZmxhZ3MgfD0gSTkxNV9WTUFfR0xP QkFMX0JJTkQ7Cj4gLQlpZiAoZmxhZ3MgJiBQSU5fVVNFUikKPiAtCQliaW5kX2ZsYWdzIHw9IEk5 MTVfVk1BX0xPQ0FMX0JJTkQ7Cj4gKwliaW5kX2ZsYWdzID0gZmxhZ3M7Cj4gKwliaW5kX2ZsYWdz ICY9IEk5MTVfVk1BX0dMT0JBTF9CSU5EIHwgSTkxNV9WTUFfTE9DQUxfQklORDsKPiAgIAo+ICAg CXZtYV9mbGFncyA9IGF0b21pY19yZWFkKCZ2bWEtPmZsYWdzKTsKPiAgIAl2bWFfZmxhZ3MgJj0g STkxNV9WTUFfR0xPQkFMX0JJTkQgfCBJOTE1X1ZNQV9MT0NBTF9CSU5EOwo+IEBAIC0zMzMsOSAr Mzc1LDMyIEBAIGludCBpOTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBlbnVtIGk5 MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gICAJR0VNX0JVR19PTighdm1hLT5wYWdlcyk7 Cj4gICAKPiAgIAl0cmFjZV9pOTE1X3ZtYV9iaW5kKHZtYSwgYmluZF9mbGFncyk7Cj4gLQlyZXQg PSB2bWEtPm9wcy0+YmluZF92bWEodm1hLCBjYWNoZV9sZXZlbCwgYmluZF9mbGFncyk7Cj4gLQlp ZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gKwlpZiAod29yayAmJiAoYmluZF9mbGFncyAmIH52 bWFfZmxhZ3MpICYgdm1hLT52bS0+YmluZF9hbGxvYykgewoKV2hhdCBpcyB0aGUgYml0d2lzZSBs b2dpYyBjaGVja2luZyBmb3I/Cgo+ICsJCXdvcmstPnZtYSA9IHZtYTsKPiArCQl3b3JrLT5jYWNo ZV9sZXZlbCA9IGNhY2hlX2xldmVsOwo+ICsJCXdvcmstPmZsYWdzID0gYmluZF9mbGFncyB8IEk5 MTVfVk1BX0FMTE9DOwo+ICsKPiArCQkvKgo+ICsJCSAqIE5vdGUgd2Ugb25seSB3YW50IHRvIGNo YWluIHVwIHRvIHRoZSBtaWdyYXRpb24gZmVuY2Ugb24KPiArCQkgKiB0aGUgcGFnZXMgKG5vdCB0 aGUgb2JqZWN0IGl0c2VsZikuIEFzIHdlIGRvbid0IHRyYWNrIHRoYXQsCj4gKwkJICogeWV0LCB3 ZSBoYXZlIHRvIHVzZSB0aGUgZXhjbHVzaXZlIGZlbmNlIGluc3RlYWQuCj4gKwkJICoKPiArCQkg KiBBbHNvIG5vdGUgdGhhdCB3ZSBkbyBub3Qgd2FudCB0byB0cmFjayB0aGUgYXN5bmMgdm1hIGFz Cj4gKwkJICogcGFydCBvZiB0aGUgb2JqLT5yZXN2LT5leGNsX2ZlbmNlIGFzIGl0IG9ubHkgYWZm ZWN0cwo+ICsJCSAqIGV4ZWN1dGlvbiBhbmQgbm90IGNvbnRlbnQgb3Igb2JqZWN0J3MgYmFja2lu ZyBzdG9yZSBsaWZldGltZS4KPiArCQkgKi8KPiArCQlHRU1fQlVHX09OKGk5MTVfYWN0aXZlX2hh c19leGNsdXNpdmUoJnZtYS0+YWN0aXZlKSk7Cj4gKwkJaTkxNV9hY3RpdmVfc2V0X2V4Y2x1c2l2 ZSgmdm1hLT5hY3RpdmUsICZ3b3JrLT5iYXNlLmRtYSk7CgpPaCByaWdodCwgZG1hX2ZlbmNlX3dv cmsgc2luY2UgaXQncyBub3QgYSB3b3JrZXIgYnV0IGNhbGxiYWNrIG9uIApzaWduYWxsaW5nIHRo ZSBmZW5jZS4uLiBGcm9tIHdoYXQgY29udGV4dCBpdCBnZXRzIGNhbGxlZCAoaG9sZGluZyBhbnkg CmxvY2tzPykgYW5kIHdoaWNoIGxvY2tzIHRoZSBjYWxsYmFjayBjYW4vd2lsbCB0YWtlPwoKPiAr CQl3b3JrLT5iYXNlLmRtYS5lcnJvciA9IDA7IC8qIGVuYWJsZSB0aGUgcXVldWVfd29yaygpICov Cj4gKwo+ICsJCWlmICh2bWEtPm9iaikKPiArCQkJX19pOTE1X2dlbV9vYmplY3RfcGluX3BhZ2Vz KHZtYS0+b2JqKTsKPiArCX0gZWxzZSB7Cj4gKwkJR0VNX0JVR19PTigoYmluZF9mbGFncyAmIH52 bWFfZmxhZ3MpICYgdm1hLT52bS0+YmluZF9hbGxvYyk7Cj4gKwkJcmV0ID0gdm1hLT5vcHMtPmJp bmRfdm1hKHZtYSwgY2FjaGVfbGV2ZWwsIGJpbmRfZmxhZ3MpOwo+ICsJCWlmIChyZXQpCj4gKwkJ CXJldHVybiByZXQ7Cj4gKwl9Cj4gICAKPiAgIAlhdG9taWNfb3IoYmluZF9mbGFncywgJnZtYS0+ ZmxhZ3MpOwo+ICAgCXJldHVybiAwOwo+IEBAIC0zNDgsOSArNDEzLDcgQEAgdm9pZCBfX2lvbWVt ICppOTE1X3ZtYV9waW5faW9tYXAoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gICAKPiAgIAkvKiBB Y2Nlc3MgdGhyb3VnaCB0aGUgR1RUIHJlcXVpcmVzIHRoZSBkZXZpY2UgdG8gYmUgYXdha2UuICov Cj4gICAJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKCZ2bWEtPnZtLT5pOTE1LT5ydW50aW1lX3Bt KTsKPiAtCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZtLT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtCWlmIChXQVJOX09OKCFpOTE1X3ZtYV9pc19tYXBfYW5kX2ZlbmNlYWJsZSh2 bWEpKSkgewo+ICsJaWYgKEdFTV9XQVJOX09OKCFpOTE1X3ZtYV9pc19tYXBfYW5kX2ZlbmNlYWJs ZSh2bWEpKSkgewo+ICAgCQllcnIgPSAtRU5PREVWOwo+ICAgCQlnb3RvIGVycjsKPiAgIAl9Cj4g QEAgLTM2OCw3ICs0MzEsOCBAQCB2b2lkIF9faW9tZW0gKmk5MTVfdm1hX3Bpbl9pb21hcChzdHJ1 Y3QgaTkxNV92bWEgKnZtYSkKPiAgIAkJCWdvdG8gZXJyOwo+ICAgCQl9Cj4gICAKPiAtCQl2bWEt PmlvbWFwID0gcHRyOwo+ICsJCWlmICh1bmxpa2VseShjbXB4Y2hnKCZ2bWEtPmlvbWFwLCBOVUxM LCBwdHIpKSkKPiArCQkJaW9fbWFwcGluZ191bm1hcChwdHIpOwoKV2h5IHRoaXMgY2hhbmdlPwoK PiAgIAl9Cj4gICAKPiAgIAlfX2k5MTVfdm1hX3Bpbih2bWEpOwo+IEBAIC0zODgsMTggKzQ1Miwx MiBAQCB2b2lkIF9faW9tZW0gKmk5MTVfdm1hX3Bpbl9pb21hcChzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKPiAgIAo+ICAgdm9pZCBpOTE1X3ZtYV9mbHVzaF93cml0ZXMoc3RydWN0IGk5MTVfdm1hICp2 bWEpCj4gICB7Cj4gLQlpZiAoIWk5MTVfdm1hX2hhc19nZ3R0X3dyaXRlKHZtYSkpCj4gLQkJcmV0 dXJuOwo+IC0KPiAtCWludGVsX2d0X2ZsdXNoX2dndHRfd3JpdGVzKHZtYS0+dm0tPmd0KTsKPiAt Cj4gLQlpOTE1X3ZtYV91bnNldF9nZ3R0X3dyaXRlKHZtYSk7Cj4gKwlpZiAoaTkxNV92bWFfdW5z ZXRfZ2d0dF93cml0ZSh2bWEpKQo+ICsJCWludGVsX2d0X2ZsdXNoX2dndHRfd3JpdGVzKHZtYS0+ dm0tPmd0KTsKPiAgIH0KPiAgIAo+ICAgdm9pZCBpOTE1X3ZtYV91bnBpbl9pb21hcChzdHJ1Y3Qg aTkxNV92bWEgKnZtYSkKPiAgIHsKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlHRU1fQlVHX09OKHZtYS0+aW9tYXAgPT0g TlVMTCk7Cj4gICAKPiAgIAlpOTE1X3ZtYV9mbHVzaF93cml0ZXModm1hKTsKPiBAQCAtNDM1LDYg KzQ5Myw5IEBAIGJvb2wgaTkxNV92bWFfbWlzcGxhY2VkKGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAq dm1hLAo+ICAgCWlmICghZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQo+ICAgCQly ZXR1cm4gZmFsc2U7Cj4gICAKPiArCWlmICh0ZXN0X2JpdChJOTE1X1ZNQV9FUlJPUl9CSVQsIF9f aTkxNV92bWFfZmxhZ3Modm1hKSkpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICAgCWlmICh2bWEt Pm5vZGUuc2l6ZSA8IHNpemUpCj4gICAJCXJldHVybiB0cnVlOwo+ICAgCj4gQEAgLTUzOCw3ICs1 OTksNiBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfYmluZF9jb3VudChjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgc3RhdGljIGludAo+ICAgaTkxNV92bWFfaW5zZXJ0KHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKQo+ ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdm1hLT52bS0+aTkx NTsKPiAgIAl1bnNpZ25lZCBpbnQgY2FjaGVfbGV2ZWw7Cj4gICAJdTY0IHN0YXJ0LCBlbmQ7Cj4g ICAJaW50IHJldDsKPiBAQCAtNTY0LDcgKzYyNCw3IEBAIGk5MTVfdm1hX2luc2VydChzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwgdTY0IHNpemUsIHU2NCBhbGlnbm1lbnQsIHU2NCBmbGFncykKPiAgIAo+ ICAgCWVuZCA9IHZtYS0+dm0tPnRvdGFsOwo+ICAgCWlmIChmbGFncyAmIFBJTl9NQVBQQUJMRSkK PiAtCQllbmQgPSBtaW5fdCh1NjQsIGVuZCwgZGV2X3ByaXYtPmdndHQubWFwcGFibGVfZW5kKTsK PiArCQllbmQgPSBtaW5fdCh1NjQsIGVuZCwgaTkxNV92bV90b19nZ3R0KHZtYS0+dm0pLT5tYXBw YWJsZV9lbmQpOwo+ICAgCWlmIChmbGFncyAmIFBJTl9aT05FXzRHKQo+ICAgCQllbmQgPSBtaW5f dCh1NjQsIGVuZCwgKDFVTEwgPDwgMzIpIC0gSTkxNV9HVFRfUEFHRV9TSVpFKTsKPiAgIAlHRU1f QlVHX09OKCFJU19BTElHTkVEKGVuZCwgSTkxNV9HVFRfUEFHRV9TSVpFKSk7Cj4gQEAgLTU4MCwz NSArNjQwLDIxIEBAIGk5MTVfdm1hX2luc2VydChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTY0IHNp emUsIHU2NCBhbGlnbm1lbnQsIHU2NCBmbGFncykKPiAgIAkJcmV0dXJuIC1FTk9TUEM7Cj4gICAJ fQo+ICAgCj4gLQlpZiAodm1hLT5vYmopIHsKPiAtCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGlu X3BhZ2VzKHZtYS0+b2JqKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0KPiAr CWNhY2hlX2xldmVsID0gMDsKPiArCWlmICh2bWEtPm9iaikKPiAgIAkJY2FjaGVfbGV2ZWwgPSB2 bWEtPm9iai0+Y2FjaGVfbGV2ZWw7Cj4gLQl9IGVsc2Ugewo+IC0JCWNhY2hlX2xldmVsID0gMDsK PiAtCX0KPiAtCj4gLQlHRU1fQlVHX09OKHZtYS0+cGFnZXMpOwo+IC0KPiAtCXJldCA9IHZtYS0+ b3BzLT5zZXRfcGFnZXModm1hKTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBlcnJfdW5waW47Cj4g ICAKPiAgIAlpZiAoZmxhZ3MgJiBQSU5fT0ZGU0VUX0ZJWEVEKSB7Cj4gICAJCXU2NCBvZmZzZXQg PSBmbGFncyAmIFBJTl9PRkZTRVRfTUFTSzsKPiAgIAkJaWYgKCFJU19BTElHTkVEKG9mZnNldCwg YWxpZ25tZW50KSB8fAo+IC0JCSAgICByYW5nZV9vdmVyZmxvd3Mob2Zmc2V0LCBzaXplLCBlbmQp KSB7Cj4gLQkJCXJldCA9IC1FSU5WQUw7Cj4gLQkJCWdvdG8gZXJyX2NsZWFyOwo+IC0JCX0KPiAr CQkgICAgcmFuZ2Vfb3ZlcmZsb3dzKG9mZnNldCwgc2l6ZSwgZW5kKSkKCkEgbG90IG9mIGNoZWNr cy9vcHMgcmVtb3ZlZCBmcm9tIGhlcmUuLiBJIHRoaW5rIEknbGwgbmVlZCB0byBhcHBseSB0byAK ZmlndXJlIG91dCBob3cgZmxvd3Mgd29yay4gT3IgcmV2aWV3IG9uIGhpZ2ggbGV2ZWwgYW5kIGhh dmUgZmFpdGggaW4gQ0kuCgo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+ICAgCQlyZXQgPSBp OTE1X2dlbV9ndHRfcmVzZXJ2ZSh2bWEtPnZtLCAmdm1hLT5ub2RlLAo+ICAgCQkJCQkgICBzaXpl LCBvZmZzZXQsIGNhY2hlX2xldmVsLAo+ICAgCQkJCQkgICBmbGFncyk7Cj4gICAJCWlmIChyZXQp Cj4gLQkJCWdvdG8gZXJyX2NsZWFyOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICAgCX0gZWxzZSB7Cj4g ICAJCS8qCj4gICAJCSAqIFdlIG9ubHkgc3VwcG9ydCBodWdlIGd0dCBwYWdlcyB0aHJvdWdoIHRo ZSA0OGIgUFBHVFQsCj4gQEAgLTY0Nyw3ICs2OTMsNyBAQCBpOTE1X3ZtYV9pbnNlcnQoc3RydWN0 IGk5MTVfdm1hICp2bWEsIHU2NCBzaXplLCB1NjQgYWxpZ25tZW50LCB1NjQgZmxhZ3MpCj4gICAJ CQkJCSAgc2l6ZSwgYWxpZ25tZW50LCBjYWNoZV9sZXZlbCwKPiAgIAkJCQkJICBzdGFydCwgZW5k LCBmbGFncyk7Cj4gICAJCWlmIChyZXQpCj4gLQkJCWdvdG8gZXJyX2NsZWFyOwo+ICsJCQlyZXR1 cm4gcmV0Owo+ICAgCj4gICAJCUdFTV9CVUdfT04odm1hLT5ub2RlLnN0YXJ0IDwgc3RhcnQpOwo+ ICAgCQlHRU1fQlVHX09OKHZtYS0+bm9kZS5zdGFydCArIHZtYS0+bm9kZS5zaXplID4gZW5kKTsK PiBAQCAtNjU1LDIzICs3MDEsMTUgQEAgaTkxNV92bWFfaW5zZXJ0KHN0cnVjdCBpOTE1X3ZtYSAq dm1hLCB1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKQo+ICAgCUdFTV9CVUdfT04o IWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7Cj4gICAJR0VNX0JVR19PTighaTkx NV9nZW1fdmFsaWRfZ3R0X3NwYWNlKHZtYSwgY2FjaGVfbGV2ZWwpKTsKPiAgIAo+IC0JbXV0ZXhf bG9jaygmdm1hLT52bS0+bXV0ZXgpOwo+ICAgCWxpc3RfYWRkX3RhaWwoJnZtYS0+dm1fbGluaywg JnZtYS0+dm0tPmJvdW5kX2xpc3QpOwo+IC0JbXV0ZXhfdW5sb2NrKCZ2bWEtPnZtLT5tdXRleCk7 Cj4gICAKPiAgIAlpZiAodm1hLT5vYmopIHsKPiArCQlhdG9taWNfaW5jKCZ2bWEtPm9iai0+bW0u cGFnZXNfcGluX2NvdW50KTsKPiAgIAkJYXRvbWljX2luYygmdm1hLT5vYmotPmJpbmRfY291bnQp Owo+ICAgCQlhc3NlcnRfYmluZF9jb3VudCh2bWEtPm9iaik7Cj4gICAJfQo+ICAgCj4gICAJcmV0 dXJuIDA7Cj4gLQo+IC1lcnJfY2xlYXI6Cj4gLQl2bWEtPm9wcy0+Y2xlYXJfcGFnZXModm1hKTsK PiAtZXJyX3VucGluOgo+IC0JaWYgKHZtYS0+b2JqKQo+IC0JCWk5MTVfZ2VtX29iamVjdF91bnBp bl9wYWdlcyh2bWEtPm9iaik7Cj4gLQlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMg dm9pZAo+IEBAIC02ODAsMTIgKzcxOCw3IEBAIGk5MTVfdm1hX3JlbW92ZShzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkKPiAgIAlHRU1fQlVHX09OKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9k ZSkpOwo+ICAgCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfYm91bmQodm1hLCBJOTE1X1ZNQV9HTE9C QUxfQklORCB8IEk5MTVfVk1BX0xPQ0FMX0JJTkQpKTsKPiAgIAo+IC0Jdm1hLT5vcHMtPmNsZWFy X3BhZ2VzKHZtYSk7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmdm1hLT52bS0+bXV0ZXgpOwo+IC0JZHJt X21tX3JlbW92ZV9ub2RlKCZ2bWEtPm5vZGUpOwo+ICAgCWxpc3RfZGVsKCZ2bWEtPnZtX2xpbmsp Owo+IC0JbXV0ZXhfdW5sb2NrKCZ2bWEtPnZtLT5tdXRleCk7Cj4gICAKPiAgIAkvKgo+ICAgCSAq IFNpbmNlIHRoZSB1bmJvdW5kIGxpc3QgaXMgZ2xvYmFsLCBvbmx5IG1vdmUgdG8gdGhhdCBsaXN0 IGlmCj4gQEAgLTcwNCw1MSArNzM3LDIwNiBAQCBpOTE1X3ZtYV9yZW1vdmUoc3RydWN0IGk5MTVf dm1hICp2bWEpCj4gICAJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICAgCQlh c3NlcnRfYmluZF9jb3VudChvYmopOwo+ICAgCX0KPiArCj4gKwlkcm1fbW1fcmVtb3ZlX25vZGUo JnZtYS0+bm9kZSk7Cj4gICB9Cj4gICAKPiAtaW50IF9faTkxNV92bWFfZG9fcGluKHN0cnVjdCBp OTE1X3ZtYSAqdm1hLAo+IC0JCSAgICAgIHU2NCBzaXplLCB1NjQgYWxpZ25tZW50LCB1NjQgZmxh Z3MpCj4gK3N0YXRpYyBib29sIHRyeV9mYXN0X3BpbihzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdW5z aWduZWQgaW50IGZsYWdzKQo+ICAgewo+IC0JY29uc3QgdW5zaWduZWQgaW50IGJvdW5kID0gYXRv bWljX3JlYWQoJnZtYS0+ZmxhZ3MpOwo+IC0JaW50IHJldDsKPiArCXVuc2lnbmVkIGludCBib3Vu ZDsKPiArCWJvb2wgcGlubmVkID0gdHJ1ZTsKPiAgIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgm dm1hLT52bS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlHRU1fQlVHX09OKChmbGFncyAm IChQSU5fR0xPQkFMIHwgUElOX1VTRVIpKSA9PSAwKTsKPiAtCUdFTV9CVUdfT04oKGZsYWdzICYg UElOX0dMT0JBTCkgJiYgIWk5MTVfdm1hX2lzX2dndHQodm1hKSk7Cj4gKwlib3VuZCA9IGF0b21p Y19yZWFkKCZ2bWEtPmZsYWdzKTsKPiArCWRvIHsKPiArCQlpZiAodW5saWtlbHkoZmxhZ3MgJiB+ Ym91bmQpKQo+ICsJCQlyZXR1cm4gZmFsc2U7CgpXaGF0IGlzIHRoaXMgY2hlY2tpbmcgZm9yPwoK PiAgIAo+IC0JaWYgKFdBUk5fT04oYm91bmQgJiBJOTE1X1ZNQV9QSU5fT1ZFUkZMT1cpKSB7Cj4g LQkJcmV0ID0gLUVCVVNZOwo+IC0JCWdvdG8gZXJyX3VucGluOwo+ICsJCWlmICh1bmxpa2VseShi b3VuZCAmIChJOTE1X1ZNQV9PVkVSRkxPVyB8IEk5MTVfVk1BX0VSUk9SKSkpCj4gKwkJCXJldHVy biBmYWxzZTsKCldoYXQgd2lsbCB0aGUgY2FsbGVyIHRyeSB0byBkbyBpbiB0aGVzZSBjYXNlcz8K Cj4gKwo+ICsJCWlmICghKGJvdW5kICYgSTkxNV9WTUFfUElOX01BU0spKQo+ICsJCQlnb3RvIHNs b3c7CgpTaW5jZSBmYXN0IHBhdGggY2FuIGdvIHRvIHNsb3csIG5vdCBzdXJlIHdoYXQgaXMgZmFz dCByZWZlcnJpbmcgdG8uCgo+ICsKPiArCQlHRU1fQlVHX09OKCgoYm91bmQgKyAxKSAmIEk5MTVf Vk1BX1BJTl9NQVNLKSA9PSAwKTsKPiArCX0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcoJnZt YS0+ZmxhZ3MsICZib3VuZCwgYm91bmQgKyAxKSk7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gKwo+ ICtzbG93Ogo+ICsJLyoKPiArCSAqIElmIHBpbl9jb3VudD09MCwgYnV0IHdlIGFyZSBib3VuZCwg Y2hlY2sgdW5kZXIgdGhlIGxvY2sgdG8gYXZvaWQKPiArCSAqIHJhY2luZyB3aXRoIGEgY29uY3Vy cmVudCBpOTE1X3ZtYV91bmJpbmQoKS4KPiArCSAqLwo+ICsJbXV0ZXhfbG9jaygmdm1hLT52bS0+ bXV0ZXgpOwoKVGhpcyBpcyBuZXZlciBmcm9tIHByb2Nlc3MgY29udGV4dCB0byBuZWVkIHRvIGJl IGludGVycnVwdGlibGU/Cgo+ICsJZG8gewo+ICsJCWlmICh1bmxpa2VseShib3VuZCAmIChJOTE1 X1ZNQV9PVkVSRkxPVyB8IEk5MTVfVk1BX0VSUk9SKSkpIHsKPiArCQkJcGlubmVkID0gZmFsc2U7 Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJaWYgKHVubGlrZWx5KGZsYWdzICYgfmJvdW5k KSkgewo+ICsJCQlwaW5uZWQgPSBmYWxzZTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfSB3aGls ZSAoIWF0b21pY190cnlfY21weGNoZygmdm1hLT5mbGFncywgJmJvdW5kLCBib3VuZCArIDEpKTsK PiArCW11dGV4X3VubG9jaygmdm1hLT52bS0+bXV0ZXgpOwoKc2xvdyA9IDAgLT4gMSBwaW4gdHJh bnNpdGlvbiwgdGhlIHJlc3QgYXJlIGZhc3Q/Cgo+ICsKPiArCXJldHVybiBwaW5uZWQ7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgdm1hX2dldF9wYWdlcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAr ewo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaWYgKGF0b21pY19hZGRfdW5sZXNzKCZ2bWEtPnBh Z2VzX2NvdW50LCAxLCAwKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlpZiAobXV0ZXhfbG9ja19p bnRlcnJ1cHRpYmxlKCZ2bWEtPnBhZ2VzX211dGV4KSkKPiArCQlyZXR1cm4gLUVJTlRSOwo+ICsK PiArCWlmICghYXRvbWljX3JlYWQoJnZtYS0+cGFnZXNfY291bnQpKSB7Cj4gKwkJaWYgKHZtYS0+ b2JqKSB7Cj4gKwkJCWVyciA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXModm1hLT5vYmopOwo+ ICsJCQlpZiAoZXJyKQo+ICsJCQkJZ290byB1bmxvY2s7Cj4gKwkJfQo+ICsKPiArCQllcnIgPSB2 bWEtPm9wcy0+c2V0X3BhZ2VzKHZtYSk7Cj4gKwkJaWYgKGVycikKPiArCQkJZ290byB1bmxvY2s7 Cj4gICAJfQo+ICsJYXRvbWljX2luYygmdm1hLT5wYWdlc19jb3VudCk7Cj4gICAKPiAtCWlmICgo Ym91bmQgJiBJOTE1X1ZNQV9CSU5EX01BU0spID09IDApIHsKPiAtCQlyZXQgPSBpOTE1X3ZtYV9p bnNlcnQodm1hLCBzaXplLCBhbGlnbm1lbnQsIGZsYWdzKTsKPiAtCQlpZiAocmV0KQo+IC0JCQln b3RvIGVycl91bnBpbjsKPiArdW5sb2NrOgo+ICsJbXV0ZXhfdW5sb2NrKCZ2bWEtPnBhZ2VzX211 dGV4KTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX3ZtYV9w dXRfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVkIGludCBjb3VudCkKPiArewo+ ICsJbXV0ZXhfbG9ja19uZXN0ZWQoJnZtYS0+cGFnZXNfbXV0ZXgsIFNJTkdMRV9ERVBUSF9ORVNU SU5HKTsKCk5lc3RpbmcgYW5ub3RhdGlvbiBvbmx5IG5lZWRlZCBvbiB0aGUgcHV0IHBhdGg/IENv bW1lbnQgdG8gZGVzY3JpYmUgd2h5IAppdCBpcyBuZWVkZWQgd291bGQgYmUgZ29vZC4KCj4gKwlH RU1fQlVHX09OKGF0b21pY19yZWFkKCZ2bWEtPnBhZ2VzX2NvdW50KSA8IGNvdW50KTsKPiArCWlm IChhdG9taWNfc3ViX3JldHVybihjb3VudCwgJnZtYS0+cGFnZXNfY291bnQpID09IDApIHsKPiAr CQl2bWEtPm9wcy0+Y2xlYXJfcGFnZXModm1hKTsKPiArCQlHRU1fQlVHX09OKHZtYS0+cGFnZXMp Owo+ICsJCWlmICh2bWEtPm9iaikKPiArCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHZt YS0+b2JqKTsKPiAgIAl9Cj4gLQlHRU1fQlVHX09OKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZt YS0+bm9kZSkpOwo+ICsJbXV0ZXhfdW5sb2NrKCZ2bWEtPnBhZ2VzX211dGV4KTsKPiArfQo+ICAg Cj4gLQlyZXQgPSBpOTE1X3ZtYV9iaW5kKHZtYSwgdm1hLT5vYmogPyB2bWEtPm9iai0+Y2FjaGVf bGV2ZWwgOiAwLCBmbGFncyk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gZXJyX3JlbW92ZTsKPiAr c3RhdGljIHZvaWQgdm1hX3B1dF9wYWdlcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiArewo+ICsJ aWYgKGF0b21pY19hZGRfdW5sZXNzKCZ2bWEtPnBhZ2VzX2NvdW50LCAtMSwgMSkpCj4gKwkJcmV0 dXJuOwo+ICAgCj4gLQlHRU1fQlVHX09OKCFpOTE1X3ZtYV9pc19ib3VuZCh2bWEsIEk5MTVfVk1B X0JJTkRfTUFTSykpOwo+ICsJX192bWFfcHV0X3BhZ2VzKHZtYSwgMSk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIHZtYV91bmJpbmRfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK3sKPiAr CXVuc2lnbmVkIGludCBjb3VudDsKPiArCj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZt LT5tdXRleCk7Cj4gKwo+ICsJY291bnQgPSBhdG9taWNfcmVhZCgmdm1hLT5wYWdlc19jb3VudCk7 Cj4gKwljb3VudCA+Pj0gSTkxNV9WTUFfUEFHRVNfQklBUzsKPiArCUdFTV9CVUdfT04oIWNvdW50 KTsKPiArCj4gKwlfX3ZtYV9wdXRfcGFnZXModm1hLCBjb3VudCB8IGNvdW50IDw8IEk5MTVfVk1B X1BBR0VTX0JJQVMpOwoKSSB0aGluayB3ZSBuZWVkIGRvY3VtZW50YXRpb24gb24gdmFyaW91cyBm bGFncyBhbmQgcG9zc2libGUgc3RhdGVzLgoKPiArfQo+ICsKPiAraW50IGk5MTVfdm1hX3Bpbihz dHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTY0IHNpemUsIHU2NCBhbGlnbm1lbnQsIHU2NCBmbGFncykK PiArewo+ICsJc3RydWN0IGk5MTVfdm1hX3dvcmsgKndvcmsgPSBOVUxMOwo+ICsJdW5zaWduZWQg aW50IGJvdW5kOwo+ICsJaW50IGVycjsKPiArCj4gKwlCVUlMRF9CVUdfT04oUElOX0dMT0JBTCAh PSBJOTE1X1ZNQV9HTE9CQUxfQklORCk7Cj4gKwlCVUlMRF9CVUdfT04oUElOX1VTRVIgIT0gSTkx NV9WTUFfTE9DQUxfQklORCk7Cj4gKwo+ICsJR0VNX0JVR19PTihmbGFncyAmIFBJTl9VUERBVEUp Owo+ICsJR0VNX0JVR19PTighKGZsYWdzICYgKFBJTl9VU0VSIHwgUElOX0dMT0JBTCkpKTsKPiAg IAo+IC0JaWYgKChib3VuZCBeIGF0b21pY19yZWFkKCZ2bWEtPmZsYWdzKSkgJiBJOTE1X1ZNQV9H TE9CQUxfQklORCkKPiAtCQlfX2k5MTVfdm1hX3NldF9tYXBfYW5kX2ZlbmNlYWJsZSh2bWEpOwo+ ICsJaWYgKHRyeV9mYXN0X3Bpbih2bWEsIGZsYWdzICYgSTkxNV9WTUFfQklORF9NQVNLKSkKPiAr CQlyZXR1cm4gMDsKPiArCj4gKwllcnIgPSB2bWFfZ2V0X3BhZ2VzKHZtYSk7Cj4gKwlpZiAoZXJy KQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJaWYgKGZsYWdzICYgUElOX1VTRVIpIHsKPiArCQl3 b3JrID0gaTkxNV92bWFfd29yaygpOwo+ICsJCWlmICghd29yaykgewo+ICsJCQllcnIgPSAtRU5P TUVNOwo+ICsJCQlnb3RvIGVycl9wYWdlczsKPiArCQl9Cj4gKwl9CgpHb29kIHBsYWNlIGZvciBh IGNvbW1lbnQgdG8gZXhwbGFpbiB3aHkgUElOX1VTRVIgbmVlZHMgdG8gZ28gdmlhIHdvcmtlciAK YW5kIHRoZSByZXN0IGRvbnQuCgo+ICsKPiArCWVyciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmdm1hLT52bS0+bXV0ZXgpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGVycl9mZW5jZTsKPiAr Cj4gKwlib3VuZCA9IGF0b21pY19yZWFkKCZ2bWEtPmZsYWdzKTsKPiArCWlmICh1bmxpa2VseShi b3VuZCAmIEk5MTVfVk1BX0VSUk9SKSkgewo+ICsJCWVyciA9IC1FTk9NRU07Cj4gKwkJZ290byBl cnJfdW5sb2NrOwo+ICsJfQo+ICAgCj4gKwlpZiAodW5saWtlbHkoISgoYm91bmQgKyAxKSAmIEk5 MTVfVk1BX1BJTl9NQVNLKSkpIHsKPiArCQllcnIgPSAtRUFHQUlOOyAvKiBwaW5zIGFyZSBtZWFu dCB0byBiZSBmYWlybHkgdGVtcG9yYXJ5ICovCj4gKwkJZ290byBlcnJfdW5sb2NrOwo+ICsJfQoK RGlkIG5vdCBnZXQgd2hhdCB0aGlzIGlzPwoKPiArCj4gKwlpZiAodW5saWtlbHkoIShmbGFncyAm IH5ib3VuZCAmIEk5MTVfVk1BX0JJTkRfTUFTSykpKSB7Cj4gKwkJX19pOTE1X3ZtYV9waW4odm1h KTsKPiArCQlnb3RvIGVycl91bmxvY2s7Cj4gKwl9CgpPciB0aGlzLiAoQ29tbWVudCBwbGVhc2Uu KQoKPiArCj4gKwllcnIgPSBpOTE1X2FjdGl2ZV9hY3F1aXJlKCZ2bWEtPmFjdGl2ZSk7CgpJdCdz IGRyb3BwZWQgc29tZXdoZXJlIHRvIHJlbGVhc2UgaXQgaW50byBub3JtYWwgZmxvd3M/Cgo+ICsJ aWYgKGVycikKPiArCQlnb3RvIGVycl91bmxvY2s7Cj4gKwo+ICsJaWYgKCEoYm91bmQgJiBJOTE1 X1ZNQV9CSU5EX01BU0spKSB7Cj4gKwkJZXJyID0gaTkxNV92bWFfaW5zZXJ0KHZtYSwgc2l6ZSwg YWxpZ25tZW50LCBmbGFncyk7Cj4gKwkJaWYgKGVycikKPiArCQkJZ290byBlcnJfYWN0aXZlOwo+ ICsKPiArCQlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0pKQo+ICsJCQlfX2k5MTVfdm1hX3NldF9t YXBfYW5kX2ZlbmNlYWJsZSh2bWEpOwo+ICsJfQo+ICsKPiArCUdFTV9CVUdfT04oIXZtYS0+cGFn ZXMpOwo+ICsJZXJyID0gaTkxNV92bWFfYmluZCh2bWEsCj4gKwkJCSAgICB2bWEtPm9iaiA/IHZt YS0+b2JqLT5jYWNoZV9sZXZlbCA6IDAsCj4gKwkJCSAgICBmbGFncywgd29yayk7Cj4gKwlpZiAo ZXJyKQo+ICsJCWdvdG8gZXJyX3JlbW92ZTsKPiArCj4gKwkvKiBUaGVyZSBzaG91bGQgb25seSBi ZSBhdCBtb3N0IDIgYWN0aXZlIGJpbmRpbmdzICh1c2VyLCBnbG9iYWwpICovCgpzL2JpbmRpbmdz L3BpbnMvID8gSSB0aG91Z2h0IG9uZSB2bWEgaXMgb25lIGJpbmRpbmcgYnkgZGVmaW5pdGlvbi4u IHNvIEkgCmFtIGNvbmZ1c2VkLgoKPiArCUdFTV9CVUdfT04oYm91bmQgKyBJOTE1X1ZNQV9QQUdF U19BQ1RJVkUgPCBib3VuZCk7Cj4gKwlhdG9taWNfYWRkKEk5MTVfVk1BX1BBR0VTX0FDVElWRSwg JnZtYS0+cGFnZXNfY291bnQpOwo+ICsJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZt YS0+dm0tPmJvdW5kX2xpc3QpOwo+ICsKPiArCV9faTkxNV92bWFfcGluKHZtYSk7Cj4gKwlHRU1f QlVHX09OKCFpOTE1X3ZtYV9pc19waW5uZWQodm1hKSk7Cj4gKwlHRU1fQlVHX09OKCFpOTE1X3Zt YV9pc19ib3VuZCh2bWEsIGZsYWdzKSk7Cj4gICAJR0VNX0JVR19PTihpOTE1X3ZtYV9taXNwbGFj ZWQodm1hLCBzaXplLCBhbGlnbm1lbnQsIGZsYWdzKSk7Cj4gLQlyZXR1cm4gMDsKPiAgIAo+ICAg ZXJyX3JlbW92ZToKPiAtCWlmICgoYm91bmQgJiBJOTE1X1ZNQV9CSU5EX01BU0spID09IDApIHsK PiArCWlmICghaTkxNV92bWFfaXNfYm91bmQodm1hLCBJOTE1X1ZNQV9CSU5EX01BU0spKQo+ICAg CQlpOTE1X3ZtYV9yZW1vdmUodm1hKTsKPiAtCQlHRU1fQlVHX09OKHZtYS0+cGFnZXMpOwo+IC0J CUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJnZtYS0+ZmxhZ3MpICYgSTkxNV9WTUFfQklORF9NQVNL KTsKPiAtCX0KPiAtZXJyX3VucGluOgo+IC0JX19pOTE1X3ZtYV91bnBpbih2bWEpOwo+IC0JcmV0 dXJuIHJldDsKPiArZXJyX2FjdGl2ZToKPiArCWk5MTVfYWN0aXZlX3JlbGVhc2UoJnZtYS0+YWN0 aXZlKTsKPiArZXJyX3VubG9jazoKPiArCW11dGV4X3VubG9jaygmdm1hLT52bS0+bXV0ZXgpOwo+ ICtlcnJfZmVuY2U6Cj4gKwlpZiAod29yaykKPiArCQlkbWFfZmVuY2Vfd29ya19jb21taXQoJndv cmstPmJhc2UpOwo+ICtlcnJfcGFnZXM6Cj4gKwl2bWFfcHV0X3BhZ2VzKHZtYSk7Cj4gKwlyZXR1 cm4gZXJyOwo+ICAgfQo+ICAgCj4gICB2b2lkIGk5MTVfdm1hX2Nsb3NlKHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQo+IEBAIC03NzksOSArOTY3LDYgQEAgc3RhdGljIHZvaWQgX19pOTE1X3ZtYV9yZW1v dmVfY2xvc2VkKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gdm1hLT52bS0+aTkxNTsKPiAgIAo+IC0JaWYgKCFpOTE1X3ZtYV9p c19jbG9zZWQodm1hKSkKPiAtCQlyZXR1cm47Cj4gLQo+ICAgCXNwaW5fbG9ja19pcnEoJmk5MTUt Pmd0LmNsb3NlZF9sb2NrKTsKPiAgIAlsaXN0X2RlbF9pbml0KCZ2bWEtPmNsb3NlZF9saW5rKTsK PiAgIAlzcGluX3VubG9ja19pcnEoJmk5MTUtPmd0LmNsb3NlZF9sb2NrKTsKPiBAQCAtNzg5LDQw ICs5NzQsMzUgQEAgc3RhdGljIHZvaWQgX19pOTE1X3ZtYV9yZW1vdmVfY2xvc2VkKHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQo+ICAgCj4gICB2b2lkIGk5MTVfdm1hX3Jlb3BlbihzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkKPiAgIHsKPiAtCV9faTkxNV92bWFfcmVtb3ZlX2Nsb3NlZCh2bWEpOwo+ICsJaWYg KGk5MTVfdm1hX2lzX2Nsb3NlZCh2bWEpKQo+ICsJCV9faTkxNV92bWFfcmVtb3ZlX2Nsb3NlZCh2 bWEpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIF9faTkxNV92bWFfZGVzdHJveShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSkKPiArdm9pZCBpOTE1X3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQo+ICAgewo+IC0JR0VNX0JVR19PTihkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9k ZSkpOwo+IC0JR0VNX0JVR19PTih2bWEtPmZlbmNlKTsKPiArCWlmIChkcm1fbW1fbm9kZV9hbGxv Y2F0ZWQoJnZtYS0+bm9kZSkpIHsKPiArCQltdXRleF9sb2NrKCZ2bWEtPnZtLT5tdXRleCk7Cj4g KwkJYXRvbWljX2FuZCh+STkxNV9WTUFfUElOX01BU0ssICZ2bWEtPmZsYWdzKTsKPiArCQlXQVJO X09OKGk5MTVfdm1hX3VuYmluZCh2bWEpKTsKPiArCQltdXRleF91bmxvY2soJnZtYS0+dm0tPm11 dGV4KTsKPiArCQlHRU1fQlVHX09OKGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7 Cj4gKwl9Cj4gKwlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsKPiAgIAo+ICAg CWlmICh2bWEtPm9iaikgewo+ICAgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g dm1hLT5vYmo7Cj4gICAKPiAgIAkJc3Bpbl9sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiAgIAkJbGlz dF9kZWwoJnZtYS0+b2JqX2xpbmspOwo+IC0JCXJiX2VyYXNlKCZ2bWEtPm9ial9ub2RlLCAmdm1h LT5vYmotPnZtYS50cmVlKTsKPiArCQlyYl9lcmFzZSgmdm1hLT5vYmpfbm9kZSwgJm9iai0+dm1h LnRyZWUpOwo+ICAgCQlzcGluX3VubG9jaygmb2JqLT52bWEubG9jayk7Cj4gICAJfQo+ICAgCj4g LQlpOTE1X2FjdGl2ZV9maW5pKCZ2bWEtPmFjdGl2ZSk7Cj4gLQo+IC0JaTkxNV92bWFfZnJlZSh2 bWEpOwo+IC19Cj4gLQo+IC12b2lkIGk5MTVfdm1hX2Rlc3Ryb3koc3RydWN0IGk5MTVfdm1hICp2 bWEpCj4gLXsKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+IC0KPiAtCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpOwo+ IC0KPiAgIAlfX2k5MTVfdm1hX3JlbW92ZV9jbG9zZWQodm1hKTsKPiArCWk5MTVfdm1fcHV0KHZt YS0+dm0pOwo+ICAgCj4gLQlXQVJOX09OKGk5MTVfdm1hX3VuYmluZCh2bWEpKTsKPiAtCUdFTV9C VUdfT04oaTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpOwo+IC0KPiAtCV9faTkxNV92bWFfZGVzdHJv eSh2bWEpOwo+ICsJaTkxNV9hY3RpdmVfZmluaSgmdm1hLT5hY3RpdmUpOwo+ICsJaTkxNV92bWFf ZnJlZSh2bWEpOwo+ICAgfQo+ICAgCj4gICB2b2lkIGk5MTVfdm1hX3BhcmtlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiBAQCAtODMxLDEyICsxMDExLDMyIEBAIHZvaWQgaTkxNV92 bWFfcGFya2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCj4gICAJc3Bpbl9s b2NrX2lycSgmaTkxNS0+Z3QuY2xvc2VkX2xvY2spOwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZSh2bWEsIG5leHQsICZpOTE1LT5ndC5jbG9zZWRfdm1hLCBjbG9zZWRfbGluaykgewo+IC0J CWxpc3RfZGVsX2luaXQoJnZtYS0+Y2xvc2VkX2xpbmspOwo+ICsJCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKPiArCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSA9IHZtYS0+dm07Cj4gKwo+ICsJCS8qIFhYWCBBbGwgdG8gYXZvaWQga2VlcGluZyBhIHJl ZmVyZW5jZSBvbiBpOTE1X3ZtYSBpdHNlbGYgKi8KCkRvZXMgWFhYIHNpZ25pZnkgaXQgaXMgYSB0 ZW1wb3Jhcnkgc3RhdGUgb2YgY29kZSwgb3IganVzdCBsaWtlIGEgY29tbWVudCAKYnV0IG1vcmUg aW1wb3J0YW50IGluIHNvbWUgd2F5PwoKPiArCj4gKwkJaWYgKCFrcmVmX2dldF91bmxlc3NfemVy bygmb2JqLT5iYXNlLnJlZmNvdW50KSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmICghaTkx NV92bV90cnlvcGVuKHZtKSkgewo+ICsJCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gKwkJ CW9iaiA9IE5VTEw7Cj4gKwkJfQo+ICsKPiAgIAkJc3Bpbl91bmxvY2tfaXJxKCZpOTE1LT5ndC5j bG9zZWRfbG9jayk7Cj4gICAKPiAtCQlpOTE1X3ZtYV9kZXN0cm95KHZtYSk7Cj4gKwkJaWYgKG9i aikgewo+ICsJCQlpOTE1X3ZtYV9kZXN0cm95KHZtYSk7Cj4gKwkJCWk5MTVfZ2VtX29iamVjdF9w dXQob2JqKTsKPiArCQl9Cj4gKwo+ICsJCWk5MTVfdm1fY2xvc2Uodm0pOwo+ICAgCj4gKwkJLyog UmVzdGFydCBhZnRlciBkcm9wcGluZyBsb2NrICovCj4gICAJCXNwaW5fbG9ja19pcnEoJmk5MTUt Pmd0LmNsb3NlZF9sb2NrKTsKPiArCQluZXh0ID0gbGlzdF9maXJzdF9lbnRyeSgmaTkxNS0+Z3Qu Y2xvc2VkX3ZtYSwKPiArCQkJCQl0eXBlb2YoKm5leHQpLCBjbG9zZWRfbGluayk7Cj4gICAJfQo+ ICAgCXNwaW5fdW5sb2NrX2lycSgmaTkxNS0+Z3QuY2xvc2VkX2xvY2spOwo+ICAgfQo+IEBAIC04 ODcsNiArMTA4NywxMCBAQCBpbnQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVf dm1hICp2bWEsCj4gICAJYXNzZXJ0X29iamVjdF9oZWxkKG9iaik7Cj4gICAJR0VNX0JVR19PTigh ZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsKPiAgIAo+ICsJZXJyID0gaTkxNV9y ZXF1ZXN0X2F3YWl0X2FjdGl2ZShycSwgJnZtYS0+YWN0aXZlKTsKPiArCWlmIChlcnIpCj4gKwkJ cmV0dXJuIGVycjsKPiArCj4gICAJLyoKPiAgIAkgKiBBZGQgYSByZWZlcmVuY2UgaWYgd2UncmUg bmV3bHkgZW50ZXJpbmcgdGhlIGFjdGl2ZSBsaXN0Lgo+ICAgCSAqIFRoZSBvcmRlciBpbiB3aGlj aCB3ZSBhZGQgb3BlcmF0aW9ucyB0byB0aGUgcmV0aXJlbWVudCBxdWV1ZSBpcwo+IEBAIC05Mjcs MzQgKzExMzEsMTkgQEAgaW50IGk5MTVfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkK PiAgIHsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZt LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+ dm0tPm11dGV4KTsKPiAgIAo+ICAgCS8qCj4gICAJICogRmlyc3Qgd2FpdCB1cG9uIGFueSBhY3Rp dml0eSBhcyByZXRpcmluZyB0aGUgcmVxdWVzdCBtYXkKPiAgIAkgKiBoYXZlIHNpZGUtZWZmZWN0 cyBzdWNoIGFzIHVucGlubmluZyBvciBldmVuIHVuYmluZGluZyB0aGlzIHZtYS4KPiArCSAqCj4g KwkgKiBYWFggQWN0dWFsbHkgd2FpdGluZyB1bmRlciB0aGUgdm0tPm11dGV4IGlzIGEgaGluZGVy YW5jZSBhbmQKPiArCSAqIHNob3VsZCBiZSBwaXBlbGluZWQgd2hlcmV2ZXIgcG9zc2libGUuIElu IGNhc2VzIHdoZXJlIHRoYXQgaXMKPiArCSAqIHVuYXZvaWRhYmxlLCB3ZSBzaG91bGQgbGlmdCB0 aGUgd2FpdCB0byBiZWZvcmUgdGhlIG11dGV4Lgo+ICAgCSAqLwo+IC0JbWlnaHRfc2xlZXAoKTsK PiAtCWlmIChpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSkgewo+IC0JCS8qCj4gLQkJICogV2hlbiBh IGNsb3NlZCBWTUEgaXMgcmV0aXJlZCwgaXQgaXMgdW5ib3VuZCAtIGVlay4KPiAtCQkgKiBJbiBv cmRlciB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcmVjdXJzaXZlbHkgY2xvc2VkLAo+IC0JCSAq IHRha2UgYSBwaW4gb24gdGhlIHZtYSBzbyB0aGF0IHRoZSBzZWNvbmQgdW5iaW5kIGlzCj4gLQkJ ICogYWJvcnRlZC4KPiAtCQkgKgo+IC0JCSAqIEV2ZW4gbW9yZSBzY2FyeSBpcyB0aGF0IHRoZSBy ZXRpcmUgY2FsbGJhY2sgbWF5IGZyZWUKPiAtCQkgKiB0aGUgb2JqZWN0IChsYXN0IGFjdGl2ZSB2 bWEpLiBUbyBwcmV2ZW50IHRoZSBleHBsb3Npb24KPiAtCQkgKiB3ZSBkZWZlciB0aGUgYWN0dWFs IG9iamVjdCBmcmVlIHRvIGEgd29ya2VyIHRoYXQgY2FuCj4gLQkJICogb25seSBwcm9jZWVkIG9u Y2UgaXQgYWNxdWlyZXMgdGhlIHN0cnVjdF9tdXRleCAod2hpY2gKPiAtCQkgKiB3ZSBjdXJyZW50 bHkgaG9sZCwgdGhlcmVmb3JlIGl0IGNhbm5vdCBmcmVlIHRoaXMgb2JqZWN0Cj4gLQkJICogYmVm b3JlIHdlIGFyZSBmaW5pc2hlZCkuCj4gLQkJICovCj4gLQkJX19pOTE1X3ZtYV9waW4odm1hKTsK PiAtCQlyZXQgPSBpOTE1X2FjdGl2ZV93YWl0KCZ2bWEtPmFjdGl2ZSk7Cj4gLQkJX19pOTE1X3Zt YV91bnBpbih2bWEpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQl9Cj4gLQlH RU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsKPiArCXJldCA9IGk5MTVfYWN0aXZl X3dhaXQoJnZtYS0+YWN0aXZlKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgIAo+ ICAgCWlmIChpOTE1X3ZtYV9pc19waW5uZWQodm1hKSkgewo+ICAgCQl2bWFfcHJpbnRfYWxsb2Nh dG9yKHZtYSwgImlzIHBpbm5lZCIpOwo+IEBAIC05NzUsMTYgKzExNjQsMTIgQEAgaW50IGk5MTVf dm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgIAkJR0VNX0JVR19PTihpOTE1X3Zt YV9oYXNfZ2d0dF93cml0ZSh2bWEpKTsKPiAgIAo+ICAgCQkvKiByZWxlYXNlIHRoZSBmZW5jZSBy ZWcgX2FmdGVyXyBmbHVzaGluZyAqLwo+IC0JCW11dGV4X2xvY2soJnZtYS0+dm0tPm11dGV4KTsK PiAgIAkJcmV0ID0gaTkxNV92bWFfcmV2b2tlX2ZlbmNlKHZtYSk7Cj4gLQkJbXV0ZXhfdW5sb2Nr KCZ2bWEtPnZtLT5tdXRleCk7Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+ICAg Cj4gICAJCS8qIEZvcmNlIGEgcGFnZWZhdWx0IGZvciBkb21haW4gdHJhY2tpbmcgb24gbmV4dCB1 c2VyIGFjY2VzcyAqLwo+IC0JCW11dGV4X2xvY2soJnZtYS0+dm0tPm11dGV4KTsKPiAgIAkJaTkx NV92bWFfcmV2b2tlX21tYXAodm1hKTsKPiAtCQltdXRleF91bmxvY2soJnZtYS0+dm0tPm11dGV4 KTsKPiAgIAo+ICAgCQlfX2k5MTVfdm1hX2lvdW5tYXAodm1hKTsKPiAgIAkJY2xlYXJfYml0KEk5 MTVfVk1BX0NBTl9GRU5DRV9CSVQsIF9faTkxNV92bWFfZmxhZ3Modm1hKSk7Cj4gQEAgLTk5Miwx MiArMTE3NywxMyBAQCBpbnQgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ ICAgCUdFTV9CVUdfT04odm1hLT5mZW5jZSk7Cj4gICAJR0VNX0JVR19PTihpOTE1X3ZtYV9oYXNf dXNlcmZhdWx0KHZtYSkpOwo+ICAgCj4gLQlpZiAobGlrZWx5KCF2bWEtPnZtLT5jbG9zZWQpKSB7 Cj4gKwlpZiAobGlrZWx5KGF0b21pY19yZWFkKCZ2bWEtPnZtLT5vcGVuKSkpIHsKPiAgIAkJdHJh Y2VfaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gICAJCXZtYS0+b3BzLT51bmJpbmRfdm1hKHZtYSk7 Cj4gICAJfQo+IC0JYXRvbWljX2FuZCh+STkxNV9WTUFfQklORF9NQVNLLCAmdm1hLT5mbGFncyk7 Cj4gKwlhdG9taWNfYW5kKH4oSTkxNV9WTUFfQklORF9NQVNLIHwgSTkxNV9WTUFfRVJST1IpLCAm dm1hLT5mbGFncyk7Cj4gICAKPiArCXZtYV91bmJpbmRfcGFnZXModm1hKTsKPiAgIAlpOTE1X3Zt YV9yZW1vdmUodm1hKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEu aAo+IGluZGV4IDYwNTNjZTFkYzk1Yy4uYTc4NGRjODc5MTY4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZtYS5oCj4gQEAgLTk2LDI1ICs5NiwyOCBAQCBzdHJ1Y3QgaTkxNV92bWEgewo+ICAgCSAq IGV4Y2x1c2l2ZSBjYWNoZWxpbmVzIG9mIGEgc2luZ2xlIHBhZ2UsIHNvIGEgbWF4aW11bSBvZiA2 NCBwb3NzaWJsZQo+ICAgCSAqIHVzZXJzLgo+ICAgCSAqLwo+IC0jZGVmaW5lIEk5MTVfVk1BX1BJ Tl9NQVNLIDB4ZmYKPiAtI2RlZmluZSBJOTE1X1ZNQV9QSU5fT1ZFUkZMT1dfQklUIDgKPiAtI2Rl ZmluZSBJOTE1X1ZNQV9QSU5fT1ZFUkZMT1cJKChpbnQpQklUKEk5MTVfVk1BX1BJTl9PVkVSRkxP V19CSVQpKQo+ICsjZGVmaW5lIEk5MTVfVk1BX1BJTl9NQVNLIDB4M2ZmCj4gKyNkZWZpbmUgSTkx NV9WTUFfT1ZFUkZMT1cgMHgyMDAKPiAgIAo+ICAgCS8qKiBGbGFncyBhbmQgYWRkcmVzcyBzcGFj ZSB0aGlzIFZNQSBpcyBib3VuZCB0byAqLwo+IC0jZGVmaW5lIEk5MTVfVk1BX0dMT0JBTF9CSU5E X0JJVCA5Cj4gLSNkZWZpbmUgSTkxNV9WTUFfTE9DQUxfQklORF9CSVQgMTAKPiArI2RlZmluZSBJ OTE1X1ZNQV9HTE9CQUxfQklORF9CSVQgMTAKPiArI2RlZmluZSBJOTE1X1ZNQV9MT0NBTF9CSU5E X0JJVCAgMTEKPiAgIAo+ICAgI2RlZmluZSBJOTE1X1ZNQV9HTE9CQUxfQklORAkoKGludClCSVQo STkxNV9WTUFfR0xPQkFMX0JJTkRfQklUKSkKPiAgICNkZWZpbmUgSTkxNV9WTUFfTE9DQUxfQklO RAkoKGludClCSVQoSTkxNV9WTUFfTE9DQUxfQklORF9CSVQpKQo+ICAgCj4gLSNkZWZpbmUgSTkx NV9WTUFfQklORF9NQVNLIChJOTE1X1ZNQV9HTE9CQUxfQklORCB8IFwKPiAtCQkJICAgIEk5MTVf Vk1BX0xPQ0FMX0JJTkQgfCBcCj4gLQkJCSAgICBJOTE1X1ZNQV9QSU5fT1ZFUkZMT1cpCj4gKyNk ZWZpbmUgSTkxNV9WTUFfQklORF9NQVNLIChJOTE1X1ZNQV9HTE9CQUxfQklORCB8IEk5MTVfVk1B X0xPQ0FMX0JJTkQpCj4gICAKPiAtI2RlZmluZSBJOTE1X1ZNQV9HR1RUX0JJVAkxMQo+IC0jZGVm aW5lIEk5MTVfVk1BX0NBTl9GRU5DRV9CSVQJMTIKPiAtI2RlZmluZSBJOTE1X1ZNQV9VU0VSRkFV TFRfQklUCTEzCj4gLSNkZWZpbmUgSTkxNV9WTUFfR0dUVF9XUklURV9CSVQJMTQKPiArI2RlZmlu ZSBJOTE1X1ZNQV9BTExPQ19CSVQJMTIKPiArI2RlZmluZSBJOTE1X1ZNQV9BTExPQwkJKChpbnQp QklUKEk5MTVfVk1BX0FMTE9DX0JJVCkpCj4gKwo+ICsjZGVmaW5lIEk5MTVfVk1BX0VSUk9SX0JJ VAkxMwo+ICsjZGVmaW5lIEk5MTVfVk1BX0VSUk9SCQkoKGludClCSVQoSTkxNV9WTUFfRVJST1Jf QklUKSkKPiArCj4gKyNkZWZpbmUgSTkxNV9WTUFfR0dUVF9CSVQJMTQKPiArI2RlZmluZSBJOTE1 X1ZNQV9DQU5fRkVOQ0VfQklUCTE1Cj4gKyNkZWZpbmUgSTkxNV9WTUFfVVNFUkZBVUxUX0JJVAkx Ngo+ICsjZGVmaW5lIEk5MTVfVk1BX0dHVFRfV1JJVEVfQklUCTE3Cj4gICAKPiAgICNkZWZpbmUg STkxNV9WTUFfR0dUVAkJKChpbnQpQklUKEk5MTVfVk1BX0dHVFRfQklUKSkKPiAgICNkZWZpbmUg STkxNV9WTUFfQ0FOX0ZFTkNFCSgoaW50KUJJVChJOTE1X1ZNQV9DQU5fRkVOQ0VfQklUKSkKPiBA QCAtMTIzLDYgKzEyNiwxMSBAQCBzdHJ1Y3QgaTkxNV92bWEgewo+ICAgCj4gICAJc3RydWN0IGk5 MTVfYWN0aXZlIGFjdGl2ZTsKPiAgIAo+ICsjZGVmaW5lIEk5MTVfVk1BX1BBR0VTX0JJQVMgMjQK PiArI2RlZmluZSBJOTE1X1ZNQV9QQUdFU19BQ1RJVkUgKEJJVCgyNCkgfCAxKQo+ICsJYXRvbWlj X3QgcGFnZXNfY291bnQ7IC8qIG51bWJlciBvZiBhY3RpdmUgYmluZHMgdG8gdGhlIHBhZ2VzICov Cj4gKwlzdHJ1Y3QgbXV0ZXggcGFnZXNfbXV0ZXg7IC8qIHByb3RlY3QgYWNxdWlyZS9yZWxlYXNl IG9mIGJhY2tpbmcgcGFnZXMgKi8KPiArCj4gICAJLyoqCj4gICAJICogU3VwcG9ydCBkaWZmZXJl bnQgR0dUVCB2aWV3cyBpbnRvIHRoZSBzYW1lIG9iamVjdC4KPiAgIAkgKiBUaGlzIG1lYW5zIHRo ZXJlIGNhbiBiZSBtdWx0aXBsZSBWTUEgbWFwcGluZ3MgcGVyIG9iamVjdCBhbmQgcGVyIFZNLgo+ IEBAIC0zMDcsOCArMzE1LDEyIEBAIGk5MTVfdm1hX2NvbXBhcmUoc3RydWN0IGk5MTVfdm1hICp2 bWEsCj4gICAJcmV0dXJuIG1lbWNtcCgmdm1hLT5nZ3R0X3ZpZXcucGFydGlhbCwgJnZpZXctPnBh cnRpYWwsIHZpZXctPnR5cGUpOwo+ICAgfQo+ICAgCj4gLWludCBpOTE1X3ZtYV9iaW5kKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLCBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gLQkJ ICB1MzIgZmxhZ3MpOwo+ICtzdHJ1Y3QgaTkxNV92bWFfd29yayAqaTkxNV92bWFfd29yayh2b2lk KTsKPiAraW50IGk5MTVfdm1hX2JpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gKwkJICBlbnVt IGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gKwkJICB1MzIgZmxhZ3MsCj4gKwkJICBz dHJ1Y3QgaTkxNV92bWFfd29yayAqd29yayk7Cj4gKwo+ICAgYm9vbCBpOTE1X2dlbV92YWxpZF9n dHRfc3BhY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVkIGxvbmcgY2FjaGVfbGV2ZWwp Owo+ICAgYm9vbCBpOTE1X3ZtYV9taXNwbGFjZWQoY29uc3Qgc3RydWN0IGk5MTVfdm1hICp2bWEs Cj4gICAJCQl1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKTsKPiBAQCAtMzMyLDI2 ICszNDQsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV92bWFfdW5sb2NrKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQo+ICAgCWRtYV9yZXN2X3VubG9jayh2bWEtPnJlc3YpOwo+ICAgfQo+ICAgCj4g LWludCBfX2k5MTVfdm1hX2RvX3BpbihzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAtCQkgICAgICB1 NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKTsKPiAtc3RhdGljIGlubGluZSBpbnQg X19tdXN0X2NoZWNrCj4gLWk5MTVfdm1hX3BpbihzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTY0IHNp emUsIHU2NCBhbGlnbm1lbnQsIHU2NCBmbGFncykKPiAtewo+IC0JQlVJTERfQlVHX09OKFBJTl9N QlogIT0gSTkxNV9WTUFfUElOX09WRVJGTE9XKTsKPiAtCUJVSUxEX0JVR19PTihQSU5fR0xPQkFM ICE9IEk5MTVfVk1BX0dMT0JBTF9CSU5EKTsKPiAtCUJVSUxEX0JVR19PTihQSU5fVVNFUiAhPSBJ OTE1X1ZNQV9MT0NBTF9CSU5EKTsKPiAtCj4gLQkvKiBQaW4gZWFybHkgdG8gcHJldmVudCB0aGUg c2hyaW5rZXIvZXZpY3Rpb24gbG9naWMgZnJvbSBkZXN0cm95aW5nCj4gLQkgKiBvdXIgdm1hIGFz IHdlIGluc2VydCBhbmQgYmluZC4KPiAtCSAqLwo+IC0JaWYgKGxpa2VseSgoKGF0b21pY19pbmNf cmV0dXJuKCZ2bWEtPmZsYWdzKSBeIGZsYWdzKSAmIEk5MTVfVk1BX0JJTkRfTUFTSykgPT0gMCkp IHsKPiAtCQlHRU1fQlVHX09OKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpOwo+ IC0JCUdFTV9CVUdfT04oaTkxNV92bWFfbWlzcGxhY2VkKHZtYSwgc2l6ZSwgYWxpZ25tZW50LCBm bGFncykpOwo+IC0JCXJldHVybiAwOwo+IC0JfQo+IC0KPiAtCXJldHVybiBfX2k5MTVfdm1hX2Rv X3Bpbih2bWEsIHNpemUsIGFsaWdubWVudCwgZmxhZ3MpOwo+IC19Cj4gK2ludCBfX211c3RfY2hl Y2sKPiAraTkxNV92bWFfcGluKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6ZSwgdTY0IGFs aWdubWVudCwgdTY0IGZsYWdzKTsKPiAgIAo+ICAgc3RhdGljIGlubGluZSBpbnQgaTkxNV92bWFf cGluX2NvdW50KGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgewo+IEBAIC0zNjYsMTcg KzM2MCwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfaXNfcGlubmVkKGNvbnN0IHN0 cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgc3RhdGljIGlubGluZSB2b2lkIF9faTkxNV92bWFfcGlu KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgewo+ICAgCWF0b21pY19pbmMoJnZtYS0+ZmxhZ3Mp Owo+IC0JR0VNX0JVR19PTihhdG9taWNfcmVhZCgmdm1hLT5mbGFncykgJiBJOTE1X1ZNQV9QSU5f T1ZFUkZMT1cpOwo+ICsJR0VNX0JVR19PTighaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpOwo+ICAg fQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIHZvaWQgX19pOTE1X3ZtYV91bnBpbihzdHJ1Y3QgaTkx NV92bWEgKnZtYSkKPiAgIHsKPiArCUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEp KTsKPiAgIAlhdG9taWNfZGVjKCZ2bWEtPmZsYWdzKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGlu bGluZSB2b2lkIGk5MTVfdm1hX3VucGluKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgewo+IC0J R0VNX0JVR19PTighaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpOwo+ICAgCUdFTV9CVUdfT04oIWRy bV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7Cj4gICAJX19pOTE1X3ZtYV91bnBpbih2 bWEpOwo+ICAgfQo+IEBAIC0zOTYsOCArMzkwLDYgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVf dm1hX2lzX2JvdW5kKGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgICogdGhlIGNhbGxl ciBtdXN0IGNhbGwgaTkxNV92bWFfdW5waW5faW9tYXAgdG8gcmVsaW5xdWlzaCB0aGUgcGlubmlu Zwo+ICAgICogYWZ0ZXIgdGhlIGlvbWFwcGluZyBpcyBubyBsb25nZXIgcmVxdWlyZWQuCj4gICAg Kgo+IC0gKiBDYWxsZXJzIG11c3QgaG9sZCB0aGUgc3RydWN0X211dGV4Lgo+IC0gKgo+ICAgICog UmV0dXJucyBhIHZhbGlkIGlvbWFwcGVkIHBvaW50ZXIgb3IgRVJSX1BUUi4KPiAgICAqLwo+ICAg dm9pZCBfX2lvbWVtICppOTE1X3ZtYV9waW5faW9tYXAoc3RydWN0IGk5MTVfdm1hICp2bWEpOwo+ IEBAIC00MDksOCArNDAxLDggQEAgdm9pZCBfX2lvbWVtICppOTE1X3ZtYV9waW5faW9tYXAoc3Ry dWN0IGk5MTVfdm1hICp2bWEpOwo+ICAgICoKPiAgICAqIFVucGlucyB0aGUgcHJldmlvdXNseSBp b21hcHBlZCBWTUEgZnJvbSBpOTE1X3ZtYV9waW5faW9tYXAoKS4KPiAgICAqCj4gLSAqIENhbGxl cnMgbXVzdCBob2xkIHRoZSBzdHJ1Y3RfbXV0ZXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSB2YWxp ZCB0byBiZQo+IC0gKiBjYWxsZWQgb24gYSBWTUEgcHJldmlvdXNseSBpb21hcHBlZCBieSB0aGUg Y2FsbGVyIHdpdGggaTkxNV92bWFfcGluX2lvbWFwKCkuCj4gKyAqIFRoaXMgZnVuY3Rpb24gaXMg b25seSB2YWxpZCB0byBiZSBjYWxsZWQgb24gYSBWTUEgcHJldmlvdXNseQo+ICsgKiBpb21hcHBl ZCBieSB0aGUgY2FsbGVyIHdpdGggaTkxNV92bWFfcGluX2lvbWFwKCkuCj4gICAgKi8KPiAgIHZv aWQgaTkxNV92bWFfdW5waW5faW9tYXAoc3RydWN0IGk5MTVfdm1hICp2bWEpOwo+ICAgCj4gQEAg LTQzOCw2ICs0MzAsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICppOTE1X3ZtYV9maXJz dF9wYWdlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgaW50IF9fbXVzdF9jaGVjayBpOTE1X3Zt YV9waW5fZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwo+ICAgaW50IF9fbXVzdF9jaGVjayBp OTE1X3ZtYV9yZXZva2VfZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwo+ICAgCj4gK2ludCBf X2k5MTVfdm1hX3Bpbl9mZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7Cj4gKwo+ICAgc3RhdGlj IGlubGluZSB2b2lkIF9faTkxNV92bWFfdW5waW5fZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEp Cj4gICB7Cj4gICAJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmdm1hLT5mZW5jZS0+cGluX2NvdW50 KSA8PSAwKTsKPiBAQCAtNDU1LDcgKzQ0OSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2k5MTVf dm1hX3VucGluX2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgc3RhdGljIGlubGluZSB2 b2lkCj4gICBpOTE1X3ZtYV91bnBpbl9mZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgIHsK PiAtCS8qIGxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOyAqLwo+ICAgCWlmICh2bWEtPmZlbmNlKQo+ICAgCQlfX2k5MTVfdm1hX3VucGluX2ZlbmNl KHZtYSk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9ldmljdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2V2aWN0LmMKPiBpbmRleCBjYjMwYzY2OWIxYjcuLmJhNjA2NDE0NzE3MyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCj4gQEAg LTEwNiwxNCArMTA2LDExIEBAIHN0YXRpYyBpbnQgcG9wdWxhdGVfZ2d0dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAo+ICAgc3RhdGljIHZvaWQgdW5waW5fZ2d0dChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X2dndHQgKmdndHQg PSAmaTkxNS0+Z2d0dDsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAo+IC0JbXV0ZXhf bG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmaTkx NS0+Z2d0dC52bS5ib3VuZF9saXN0LCB2bV9saW5rKQo+ICAgCQlpZiAodm1hLT5vYmotPm1tLnF1 aXJrZWQpCj4gICAJCQlpOTE1X3ZtYV91bnBpbih2bWEpOwo+IC0JbXV0ZXhfdW5sb2NrKCZnZ3R0 LT52bS5tdXRleCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGNsZWFudXBfb2JqZWN0cyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiBAQCAtMTI3LDExICsxMjQsNyBAQCBzdGF0 aWMgdm9pZCBjbGVhbnVwX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4g ICAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiAgIAl9Cj4gICAKPiAtCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAgCWk5MTVfZ2VtX2RyYWluX2ZyZWVk X29iamVjdHMoaTkxNSk7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgaWd0X2V2aWN0X3NvbWV0aGluZyh2b2lkICph cmcpCj4gQEAgLTE0OCwxMCArMTQxLDEyIEBAIHN0YXRpYyBpbnQgaWd0X2V2aWN0X3NvbWV0aGlu Zyh2b2lkICphcmcpCj4gICAJCWdvdG8gY2xlYW51cDsKPiAgIAo+ICAgCS8qIEV2ZXJ5dGhpbmcg aXMgcGlubmVkLCBub3RoaW5nIHNob3VsZCBoYXBwZW4gKi8KPiArCW11dGV4X2xvY2soJmdndHQt PnZtLm11dGV4KTsKPiAgIAllcnIgPSBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoJmdndHQtPnZt LAo+ICAgCQkJCSAgICAgICBJOTE1X0dUVF9QQUdFX1NJWkUsIDAsIDAsCj4gICAJCQkJICAgICAg IDAsIFU2NF9NQVgsCj4gICAJCQkJICAgICAgIDApOwo+ICsJbXV0ZXhfdW5sb2NrKCZnZ3R0LT52 bS5tdXRleCk7Cj4gICAJaWYgKGVyciAhPSAtRU5PU1BDKSB7Cj4gICAJCXByX2VycigiaTkxNV9n ZW1fZXZpY3Rfc29tZXRoaW5nIGZhaWxlZCBvbiBhIGZ1bGwgR0dUVCB3aXRoIGVycj0lZFxuIiwK PiAgIAkJICAgICAgIGVycik7Cj4gQEAgLTE2MSwxMCArMTU2LDEyIEBAIHN0YXRpYyBpbnQgaWd0 X2V2aWN0X3NvbWV0aGluZyh2b2lkICphcmcpCj4gICAJdW5waW5fZ2d0dChpOTE1KTsKPiAgIAo+ ICAgCS8qIEV2ZXJ5dGhpbmcgaXMgdW5waW5uZWQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGV2aWN0 IHNvbWV0aGluZyAqLwo+ICsJbXV0ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCWVyciA9 IGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGluZygmZ2d0dC0+dm0sCj4gICAJCQkJICAgICAgIEk5MTVf R1RUX1BBR0VfU0laRSwgMCwgMCwKPiAgIAkJCQkgICAgICAgMCwgVTY0X01BWCwKPiAgIAkJCQkg ICAgICAgMCk7Cj4gKwltdXRleF91bmxvY2soJmdndHQtPnZtLm11dGV4KTsKPiAgIAlpZiAoZXJy KSB7Cj4gICAJCXByX2VycigiaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nIGZhaWxlZCBvbiBhIGZ1 bGwgR0dUVCB3aXRoIGVycj0lZFxuIiwKPiAgIAkJICAgICAgIGVycik7Cj4gQEAgLTIzMCw3ICsy MjcsOSBAQCBzdGF0aWMgaW50IGlndF9ldmljdF9mb3Jfdm1hKHZvaWQgKmFyZykKPiAgIAkJZ290 byBjbGVhbnVwOwo+ICAgCj4gICAJLyogRXZlcnl0aGluZyBpcyBwaW5uZWQsIG5vdGhpbmcgc2hv dWxkIGhhcHBlbiAqLwo+ICsJbXV0ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCWVyciA9 IGk5MTVfZ2VtX2V2aWN0X2Zvcl9ub2RlKCZnZ3R0LT52bSwgJnRhcmdldCwgMCk7Cj4gKwltdXRl eF91bmxvY2soJmdndHQtPnZtLm11dGV4KTsKPiAgIAlpZiAoZXJyICE9IC1FTk9TUEMpIHsKPiAg IAkJcHJfZXJyKCJpOTE1X2dlbV9ldmljdF9mb3Jfbm9kZSBvbiBhIGZ1bGwgR0dUVCByZXR1cm5l ZCBlcnI9JWRcbiIsCj4gICAJCSAgICAgICBlcnIpOwo+IEBAIC0yNDAsNyArMjM5LDkgQEAgc3Rh dGljIGludCBpZ3RfZXZpY3RfZm9yX3ZtYSh2b2lkICphcmcpCj4gICAJdW5waW5fZ2d0dChpOTE1 KTsKPiAgIAo+ICAgCS8qIEV2ZXJ5dGhpbmcgaXMgdW5waW5uZWQsIHdlIHNob3VsZCBiZSBhYmxl IHRvIGV2aWN0IHRoZSBub2RlICovCj4gKwltdXRleF9sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4g ICAJZXJyID0gaTkxNV9nZW1fZXZpY3RfZm9yX25vZGUoJmdndHQtPnZtLCAmdGFyZ2V0LCAwKTsK PiArCW11dGV4X3VubG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCWlmIChlcnIpIHsKPiAgIAkJ cHJfZXJyKCJpOTE1X2dlbV9ldmljdF9mb3Jfbm9kZSByZXR1cm5lZCBlcnI9JWRcbiIsCj4gICAJ CSAgICAgICBlcnIpOwo+IEBAIC0zMTcsNyArMzE4LDkgQEAgc3RhdGljIGludCBpZ3RfZXZpY3Rf Zm9yX2NhY2hlX2NvbG9yKHZvaWQgKmFyZykKPiAgIAlpOTE1X3ZtYV91bnBpbih2bWEpOwo+ICAg Cj4gICAJLyogUmVtb3ZlIGp1c3QgdGhlIHNlY29uZCB2bWEgKi8KPiArCW11dGV4X2xvY2soJmdn dHQtPnZtLm11dGV4KTsKPiAgIAllcnIgPSBpOTE1X2dlbV9ldmljdF9mb3Jfbm9kZSgmZ2d0dC0+ dm0sICZ0YXJnZXQsIDApOwo+ICsJbXV0ZXhfdW5sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gICAJ aWYgKGVycikgewo+ICAgCQlwcl9lcnIoIlswXWk5MTVfZ2VtX2V2aWN0X2Zvcl9ub2RlIHJldHVy bmVkIGVycj0lZFxuIiwgZXJyKTsKPiAgIAkJZ290byBjbGVhbnVwOwo+IEBAIC0zMjgsNyArMzMx LDkgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfZm9yX2NhY2hlX2NvbG9yKHZvaWQgKmFyZykKPiAg IAkgKi8KPiAgIAl0YXJnZXQuY29sb3IgPSBJOTE1X0NBQ0hFX0wzX0xMQzsKPiAgIAo+ICsJbXV0 ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCWVyciA9IGk5MTVfZ2VtX2V2aWN0X2Zvcl9u b2RlKCZnZ3R0LT52bSwgJnRhcmdldCwgMCk7Cj4gKwltdXRleF91bmxvY2soJmdndHQtPnZtLm11 dGV4KTsKPiAgIAlpZiAoIWVycikgewo+ICAgCQlwcl9lcnIoIlsxXWk5MTVfZ2VtX2V2aWN0X2Zv cl9ub2RlIHJldHVybmVkIGVycj0lZFxuIiwgZXJyKTsKPiAgIAkJZXJyID0gLUVJTlZBTDsKPiBA QCAtMzU4LDcgKzM2Myw5IEBAIHN0YXRpYyBpbnQgaWd0X2V2aWN0X3ZtKHZvaWQgKmFyZykKPiAg IAkJZ290byBjbGVhbnVwOwo+ICAgCj4gICAJLyogRXZlcnl0aGluZyBpcyBwaW5uZWQsIG5vdGhp bmcgc2hvdWxkIGhhcHBlbiAqLwo+ICsJbXV0ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAg CWVyciA9IGk5MTVfZ2VtX2V2aWN0X3ZtKCZnZ3R0LT52bSk7Cj4gKwltdXRleF91bmxvY2soJmdn dHQtPnZtLm11dGV4KTsKPiAgIAlpZiAoZXJyKSB7Cj4gICAJCXByX2VycigiaTkxNV9nZW1fZXZp Y3Rfdm0gb24gYSBmdWxsIEdHVFQgcmV0dXJuZWQgZXJyPSVkXVxuIiwKPiAgIAkJICAgICAgIGVy cik7Cj4gQEAgLTM2Nyw3ICszNzQsOSBAQCBzdGF0aWMgaW50IGlndF9ldmljdF92bSh2b2lkICph cmcpCj4gICAKPiAgIAl1bnBpbl9nZ3R0KGk5MTUpOwo+ICAgCj4gKwltdXRleF9sb2NrKCZnZ3R0 LT52bS5tdXRleCk7Cj4gICAJZXJyID0gaTkxNV9nZW1fZXZpY3Rfdm0oJmdndHQtPnZtKTsKPiAr CW11dGV4X3VubG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCWlmIChlcnIpIHsKPiAgIAkJcHJf ZXJyKCJpOTE1X2dlbV9ldmljdF92bSBvbiBhIGZ1bGwgR0dUVCByZXR1cm5lZCBlcnI9JWRdXG4i LAo+ICAgCQkgICAgICAgZXJyKTsKPiBAQCAtNDA4LDExICs0MTcsMTEgQEAgc3RhdGljIGludCBp Z3RfZXZpY3RfY29udGV4dHModm9pZCAqYXJnKQo+ICAgCWlmICghSEFTX0ZVTExfUFBHVFQoaTkx NSkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAgIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRp bWVfcG0pOwo+ICAgCj4gICAJLyogUmVzZXJ2ZSBhIGJsb2NrIHNvIHRoYXQgd2Uga25vdyB3ZSBo YXZlIGVub3VnaCB0byBmaXQgYSBmZXcgcnEgKi8KPiAgIAltZW1zZXQoJmhvbGUsIDAsIHNpemVv Zihob2xlKSk7Cj4gKwltdXRleF9sb2NrKCZpOTE1LT5nZ3R0LnZtLm11dGV4KTsKPiAgIAllcnIg PSBpOTE1X2dlbV9ndHRfaW5zZXJ0KCZpOTE1LT5nZ3R0LnZtLCAmaG9sZSwKPiAgIAkJCQkgIFBS RVRFTkRfR0dUVF9TSVpFLCAwLCBJOTE1X0NPTE9SX1VORVZJQ1RBQkxFLAo+ICAgCQkJCSAgMCwg aTkxNS0+Z2d0dC52bS50b3RhbCwKPiBAQCAtNDI1LDcgKzQzNCw5IEBAIHN0YXRpYyBpbnQgaWd0 X2V2aWN0X2NvbnRleHRzKHZvaWQgKmFyZykKPiAgIAlkbyB7Cj4gICAJCXN0cnVjdCByZXNlcnZl ZCAqcjsKPiAgIAo+ICsJCW11dGV4X3VubG9jaygmaTkxNS0+Z2d0dC52bS5tdXRleCk7Cj4gICAJ CXIgPSBrY2FsbG9jKDEsIHNpemVvZigqciksIEdGUF9LRVJORUwpOwo+ICsJCW11dGV4X2xvY2so Jmk5MTUtPmdndHQudm0ubXV0ZXgpOwo+ICAgCQlpZiAoIXIpIHsKPiAgIAkJCWVyciA9IC1FTk9N RU07Cj4gICAJCQlnb3RvIG91dF9sb2NrZWQ7Cj4gQEAgLTQ0NSw3ICs0NTYsNyBAQCBzdGF0aWMg aW50IGlndF9ldmljdF9jb250ZXh0cyh2b2lkICphcmcpCj4gICAJCWNvdW50Kys7Cj4gICAJfSB3 aGlsZSAoMSk7Cj4gICAJZHJtX21tX3JlbW92ZV9ub2RlKCZob2xlKTsKPiAtCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPmdndHQu dm0ubXV0ZXgpOwo+ICAgCXByX2luZm8oIkZpbGxlZCBHR1RUIHdpdGggJWx1IDFNaUIgbm9kZXNc biIsIGNvdW50KTsKPiAgIAo+ICAgCS8qIE92ZXJmaWxsIHRoZSBHR1RUIHdpdGggY29udGV4dCBv YmplY3RzIGFuZCBzbyB0cnkgdG8gZXZpY3Qgb25lLiAqLwo+IEBAIC01MDgsNyArNTE5LDcgQEAg c3RhdGljIGludCBpZ3RfZXZpY3RfY29udGV4dHModm9pZCAqYXJnKQo+ICAgCQkJYnJlYWs7Cj4g ICAJfQo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCW11 dGV4X2xvY2soJmk5MTUtPmdndHQudm0ubXV0ZXgpOwo+ICAgb3V0X2xvY2tlZDoKPiAgIAlpZiAo aWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCj4gICAJCWVyciA9IC1FSU87 Cj4gQEAgLTUyMiw4ICs1MzMsOCBAQCBzdGF0aWMgaW50IGlndF9ldmljdF9jb250ZXh0cyh2b2lk ICphcmcpCj4gICAJfQo+ICAgCWlmIChkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJmhvbGUpKQo+ICAg CQlkcm1fbW1fcmVtb3ZlX25vZGUoJmhvbGUpOwo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5nZ3R0 LnZtLm11dGV4KTsKPiAgIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwg d2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAg Cj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiBAQCAtNTQ1LDEyICs1NTYsOSBAQCBpbnQgaTkxNV9n ZW1fZXZpY3RfbW9ja19zZWxmdGVzdHModm9pZCkKPiAgIAlpZiAoIWk5MTUpCj4gICAJCXJldHVy biAtRU5PTUVNOwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAgIAl3aXRoX2ludGVsX3J1bnRpbWVfcG0oJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpCj4g ICAJCWVyciA9IGk5MTVfc3VidGVzdHModGVzdHMsIGk5MTUpOwo+ICAgCj4gLQltdXRleF91bmxv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlkcm1fZGV2X3B1dCgmaTkxNS0+ ZHJtKTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBhOTBjOWJlOTVmOGMuLjQyMzVmYTQwMTk1 NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1f Z3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0 LmMKPiBAQCAtMzUsMTYgKzM1LDcgQEAKPiAgIAo+ICAgc3RhdGljIHZvaWQgY2xlYW51cF9mcmVl ZF9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+IC0JLyoKPiAt CSAqIEFzIHdlIG1heSBob2xkIG9udG8gdGhlIHN0cnVjdF9tdXRleCBmb3IgaW5vcmRpbmF0ZSBs ZW5ndGhzIG9mCj4gLQkgKiB0aW1lLCB0aGUgTk1JIGtodW5ndGFza2QgZGV0ZWN0b3IgbWF5IGZp cmUgZm9yIHRoZSBmcmVlIG9iamVjdHMKPiAtCSAqIHdvcmtlci4KPiAtCSAqLwo+IC0JbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJaTkxNV9nZW1fZHJhaW5f ZnJlZWRfb2JqZWN0cyhpOTE1KTsKPiAtCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgZmFrZV9mcmVlX3BhZ2VzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gQEAgLTMxOCw2ICszMDksMTcgQEAgc3RhdGlj IGludCBsb3dsZXZlbF9ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCXJl dHVybiAwOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQgdW5sb2NrZWRfdm1hX3VuYmluZChzdHJ1 Y3QgaTkxNV92bWEgKnZtYSkKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZ2 bWEtPnZtLT5tdXRleCk7Cj4gKwlyZXQgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKPiArCW11dGV4 X3VubG9jaygmdm1hLT52bS0+bXV0ZXgpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KClRoZXJl IHdhcyBhbiBlYXJsaWVyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzYW1lIGhlbHBlciBlbHNld2hl cmUgc28gCm1heWJlIGl0IG1ha2VzIHNlbnNlIHRvIGNvbnNvbGlkYXRlLgoKPiArCj4gICBzdGF0 aWMgdm9pZCBjbG9zZV9vYmplY3RfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpvYmplY3RzLAo+ICAg CQkJICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICB7Cj4gQEAgLTMyOSw3 ICszMzEsNyBAQCBzdGF0aWMgdm9pZCBjbG9zZV9vYmplY3RfbGlzdChzdHJ1Y3QgbGlzdF9oZWFk ICpvYmplY3RzLAo+ICAgCj4gICAJCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgdm0sIE5V TEwpOwo+ICAgCQlpZiAoIUlTX0VSUih2bWEpKQo+IC0JCQlpZ25vcmVkID0gaTkxNV92bWFfdW5i aW5kKHZtYSk7Cj4gKwkJCWlnbm9yZWQgPSB1bmxvY2tlZF92bWFfdW5iaW5kKHZtYSk7Cj4gICAJ CS8qIE9ubHkgcHBndHQgdm1hIG1heSBiZSBjbG9zZWQgYmVmb3JlIHRoZSBvYmplY3QgaXMgZnJl ZWQgKi8KPiAgIAkJaWYgKCFJU19FUlIodm1hKSAmJiAhaTkxNV92bWFfaXNfZ2d0dCh2bWEpKQo+ ICAgCQkJaTkxNV92bWFfY2xvc2Uodm1hKTsKPiBAQCAtNDQ0LDcgKzQ0Niw3IEBAIHN0YXRpYyBp bnQgZmlsbF9ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJCQkJZ290 byBlcnI7Cj4gICAJCQkJCX0KPiAgIAo+IC0JCQkJCWVyciA9IGk5MTVfdm1hX3VuYmluZCh2bWEp Owo+ICsJCQkJCWVyciA9IHVubG9ja2VkX3ZtYV91bmJpbmQodm1hKTsKPiAgIAkJCQkJaWYgKGVy cikgewo+ICAgCQkJCQkJcHJfZXJyKCIlcyglcykgKGZvcndhcmQpIHVuYmluZCBvZiB2bWEubm9k ZT0lbGx4ICsgJWxseCBmYWlsZWQgd2l0aCBlcnI9JWRcbiIsCj4gICAJCQkJCQkgICAgICAgX19m dW5jX18sIHAtPm5hbWUsIHZtYS0+bm9kZS5zdGFydCwgdm1hLT5ub2RlLnNpemUsCj4gQEAgLTUx Nyw3ICs1MTksNyBAQCBzdGF0aWMgaW50IGZpbGxfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPiAgIAkJCQkJCWdvdG8gZXJyOwo+ICAgCQkJCQl9Cj4gICAKPiAtCQkJCQllcnIg PSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKPiArCQkJCQllcnIgPSB1bmxvY2tlZF92bWFfdW5iaW5k KHZtYSk7Cj4gICAJCQkJCWlmIChlcnIpIHsKPiAgIAkJCQkJCXByX2VycigiJXMoJXMpIChiYWNr d2FyZCkgdW5iaW5kIG9mIHZtYS5ub2RlPSVsbHggKyAlbGx4IGZhaWxlZCB3aXRoIGVycj0lZFxu IiwKPiAgIAkJCQkJCSAgICAgICBfX2Z1bmNfXywgcC0+bmFtZSwgdm1hLT5ub2RlLnN0YXJ0LCB2 bWEtPm5vZGUuc2l6ZSwKPiBAQCAtNjA0LDcgKzYwNiw3IEBAIHN0YXRpYyBpbnQgd2Fsa19ob2xl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJCWdvdG8gZXJyX2Nsb3NlOwo+ ICAgCQkJfQo+ICAgCj4gLQkJCWVyciA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwo+ICsJCQllcnIg PSB1bmxvY2tlZF92bWFfdW5iaW5kKHZtYSk7Cj4gICAJCQlpZiAoZXJyKSB7Cj4gICAJCQkJcHJf ZXJyKCIlcyB1bmJpbmQgZmFpbGVkIGF0ICVsbHggKyAlbGx4ICB3aXRoIGVycj0lZFxuIiwKPiAg IAkJCQkgICAgICAgX19mdW5jX18sIGFkZHIsIHZtYS0+c2l6ZSwgZXJyKTsKPiBAQCAtNjg1LDEz ICs2ODcsMTMgQEAgc3RhdGljIGludCBwb3RfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKPiAgIAkJCQlwcl9lcnIoIiVzIGluY29ycmVjdCBhdCAlbGx4ICsgJWxseFxuIiwKPiAg IAkJCQkgICAgICAgX19mdW5jX18sIGFkZHIsIHZtYS0+c2l6ZSk7Cj4gICAJCQkJaTkxNV92bWFf dW5waW4odm1hKTsKPiAtCQkJCWVyciA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwo+ICsJCQkJZXJy ID0gdW5sb2NrZWRfdm1hX3VuYmluZCh2bWEpOwo+ICAgCQkJCWVyciA9IC1FSU5WQUw7Cj4gICAJ CQkJZ290byBlcnI7Cj4gICAJCQl9Cj4gICAKPiAgIAkJCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4g LQkJCWVyciA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwo+ICsJCQllcnIgPSB1bmxvY2tlZF92bWFf dW5iaW5kKHZtYSk7Cj4gICAJCQlHRU1fQlVHX09OKGVycik7Cj4gICAJCX0KPiAgIAo+IEBAIC03 ODksMTMgKzc5MSwxMyBAQCBzdGF0aWMgaW50IGRydW5rX2hvbGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gICAJCQkJcHJfZXJyKCIlcyBpbmNvcnJlY3QgYXQgJWxseCArICVsbHhc biIsCj4gICAJCQkJICAgICAgIF9fZnVuY19fLCBhZGRyLCBCSVRfVUxMKHNpemUpKTsKPiAgIAkJ CQlpOTE1X3ZtYV91bnBpbih2bWEpOwo+IC0JCQkJZXJyID0gaTkxNV92bWFfdW5iaW5kKHZtYSk7 Cj4gKwkJCQllcnIgPSB1bmxvY2tlZF92bWFfdW5iaW5kKHZtYSk7Cj4gICAJCQkJZXJyID0gLUVJ TlZBTDsKPiAgIAkJCQlnb3RvIGVycjsKPiAgIAkJCX0KPiAgIAo+ICAgCQkJaTkxNV92bWFfdW5w aW4odm1hKTsKPiAtCQkJZXJyID0gaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gKwkJCWVyciA9IHVu bG9ja2VkX3ZtYV91bmJpbmQodm1hKTsKPiAgIAkJCUdFTV9CVUdfT04oZXJyKTsKPiAgIAo+ICAg CQkJaWYgKGlndF90aW1lb3V0KGVuZF90aW1lLAo+IEBAIC04NjcsNyArODY5LDcgQEAgc3RhdGlj IGludCBfX3Nocmlua19ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJ cHJfZXJyKCIlcyBpbmNvcnJlY3QgYXQgJWxseCArICVsbHhcbiIsCj4gICAJCQkgICAgICAgX19m dW5jX18sIGFkZHIsIHNpemUpOwo+ICAgCQkJaTkxNV92bWFfdW5waW4odm1hKTsKPiAtCQkJZXJy ID0gaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gKwkJCWVyciA9IHVubG9ja2VkX3ZtYV91bmJpbmQo dm1hKTsKPiAgIAkJCWVyciA9IC1FSU5WQUw7Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+IEBAIC04 NzUsNiArODc3LDE1IEBAIHN0YXRpYyBpbnQgX19zaHJpbmtfaG9sZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKPiAgIAkJaTkxNV92bWFfdW5waW4odm1hKTsKPiAgIAkJYWRkciArPSBz aXplOwo+ICAgCj4gKwkJLyoKPiArCQkgKiBTaW5jZSB3ZSBhcmUgaW5qZWN0aW5nIGFsbG9jYXRp b24gZmF1bHRzIGF0IHJhbmRvbSBpbnRlcnZhbHMsCj4gKwkJICogd2FpdCBmb3IgdGhpcyBhbGxv Y2F0aW9uIHRvIGNvbXBsZXRlIGJlZm9yZSB3ZSBjaGFuZ2UgdGhlCj4gKwkJICogZmF1bHRpbmpl Y3Rpb24uCj4gKwkJICovCj4gKwkJZXJyID0gaTkxNV9hY3RpdmVfd2FpdCgmdm1hLT5hY3RpdmUp Owo+ICsJCWlmIChlcnIpCj4gKwkJCWJyZWFrOwo+ICsKPiAgIAkJaWYgKGlndF90aW1lb3V0KGVu ZF90aW1lLAo+ICAgCQkJCSIlcyB0aW1lZCBvdXQgYXQgb2ZzZXQgJWxseCBbJWxseCAtICVsbHhd XG4iLAo+ICAgCQkJCV9fZnVuY19fLCBhZGRyLCBob2xlX3N0YXJ0LCBob2xlX2VuZCkpIHsKPiBA QCAtMTAwOCwyMSArMTAxOSwxOSBAQCBzdGF0aWMgaW50IGV4ZXJjaXNlX3BwZ3R0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAlpZiAoSVNfRVJSKGZpbGUpKQo+ICAgCQly ZXR1cm4gUFRSX0VSUihmaWxlKTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICAgCXBwZ3R0ID0gaTkxNV9wcGd0dF9jcmVhdGUoZGV2X3ByaXYpOwo+ ICAgCWlmIChJU19FUlIocHBndHQpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIocHBndHQpOwo+IC0J CWdvdG8gb3V0X3VubG9jazsKPiArCQlnb3RvIG91dF9mcmVlOwo+ICAgCX0KPiAgIAlHRU1fQlVH X09OKG9mZnNldF9pbl9wYWdlKHBwZ3R0LT52bS50b3RhbCkpOwo+IC0JR0VNX0JVR19PTihwcGd0 dC0+dm0uY2xvc2VkKTsKPiArCUdFTV9CVUdfT04oIWF0b21pY19yZWFkKCZwcGd0dC0+dm0ub3Bl bikpOwo+ICAgCj4gICAJZXJyID0gZnVuYyhkZXZfcHJpdiwgJnBwZ3R0LT52bSwgMCwgcHBndHQt PnZtLnRvdGFsLCBlbmRfdGltZSk7Cj4gICAKPiAgIAlpOTE1X3ZtX3B1dCgmcHBndHQtPnZtKTsK PiAtb3V0X3VubG9jazoKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICAgCj4gK291dF9mcmVlOgo+ICAgCW1vY2tfZmlsZV9mcmVlKGRldl9wcml2LCBmaWxl KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+IEBAIC0xMDg1LDcgKzEwOTQsNiBAQCBzdGF0aWMg aW50IGV4ZXJjaXNlX2dndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJSUdU X1RJTUVPVVQoZW5kX3RpbWUpOwo+ICAgCWludCBlcnIgPSAwOwo+ICAgCj4gLQltdXRleF9sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIHJlc3RhcnQ6Cj4gICAJbGlzdF9zb3J0KE5V TEwsICZnZ3R0LT52bS5tbS5ob2xlX3N0YWNrLCBzb3J0X2hvbGVzKTsKPiAgIAlkcm1fbW1fZm9y X2VhY2hfaG9sZShub2RlLCAmZ2d0dC0+dm0ubW0sIGhvbGVfc3RhcnQsIGhvbGVfZW5kKSB7Cj4g QEAgLTExMDYsNyArMTExNCw2IEBAIHN0YXRpYyBpbnQgZXhlcmNpc2VfZ2d0dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJbGFzdCA9IGhvbGVfZW5kOwo+ICAgCQlnb3RvIHJl c3RhcnQ7Cj4gICAJfQo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAgIAo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gQEAgLTExNDgsMTMgKzExNTUsOSBAQCBzdGF0 aWMgaW50IGlndF9nZ3R0X3BhZ2Uodm9pZCAqYXJnKQo+ICAgCXVuc2lnbmVkIGludCAqb3JkZXIs IG47Cj4gICAJaW50IGVycjsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gLQo+ICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkx NSwgUEFHRV9TSVpFKTsKPiAtCWlmIChJU19FUlIob2JqKSkgewo+IC0JCWVyciA9IFBUUl9FUlIo b2JqKTsKPiAtCQlnb3RvIG91dF91bmxvY2s7Cj4gLQl9Cj4gKwlpZiAoSVNfRVJSKG9iaikpCj4g KwkJcmV0dXJuIFBUUl9FUlIob2JqKTsKPiAgIAo+ICAgCWVyciA9IGk5MTVfZ2VtX29iamVjdF9w aW5fcGFnZXMob2JqKTsKPiAgIAlpZiAoZXJyKQo+IEBAIC0xMjIyLDggKzEyMjUsNiBAQCBzdGF0 aWMgaW50IGlndF9nZ3R0X3BhZ2Uodm9pZCAqYXJnKQo+ICAgCWk5MTVfZ2VtX29iamVjdF91bnBp bl9wYWdlcyhvYmopOwo+ICAgb3V0X2ZyZWU6Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmop Owo+IC1vdXRfdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gQEAgLTEyMzQsNiArMTIzNSw5IEBAIHN0 YXRpYyB2b2lkIHRyYWNrX3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgCWF0b21p Y19pbmMoJm9iai0+YmluZF9jb3VudCk7IC8qIHRyYWNrIGZvciBldmljdGlvbiBsYXRlciAqLwo+ ICAgCV9faTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+ICAgCj4gKwlHRU1fQlVHX09O KHZtYS0+cGFnZXMpOwo+ICsJYXRvbWljX3NldCgmdm1hLT5wYWdlc19jb3VudCwgSTkxNV9WTUFf UEFHRVNfQUNUSVZFKTsKPiArCV9faTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+ICAg CXZtYS0+cGFnZXMgPSBvYmotPm1tLnBhZ2VzOwo+ICAgCj4gICAJbXV0ZXhfbG9jaygmdm1hLT52 bS0+bXV0ZXgpOwo+IEBAIC0xMzMwLDExICsxMzM0LDEzIEBAIHN0YXRpYyBpbnQgaWd0X2d0dF9y ZXNlcnZlKHZvaWQgKmFyZykKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQl9Cj4gICAKPiArCQltdXRl eF9sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gICAJCWVyciA9IGk5MTVfZ2VtX2d0dF9yZXNlcnZl KCZnZ3R0LT52bSwgJnZtYS0+bm9kZSwKPiAgIAkJCQkJICAgb2JqLT5iYXNlLnNpemUsCj4gICAJ CQkJCSAgIHRvdGFsLAo+ICAgCQkJCQkgICBvYmotPmNhY2hlX2xldmVsLAo+ICAgCQkJCQkgICAw KTsKPiArCQltdXRleF91bmxvY2soJmdndHQtPnZtLm11dGV4KTsKPiAgIAkJaWYgKGVycikgewo+ ICAgCQkJcHJfZXJyKCJpOTE1X2dlbV9ndHRfcmVzZXJ2ZSAocGFzcyAxKSBmYWlsZWQgYXQgJWxs dS8lbGx1IHdpdGggZXJyPSVkXG4iLAo+ICAgCQkJICAgICAgIHRvdGFsLCBnZ3R0LT52bS50b3Rh bCwgZXJyKTsKPiBAQCAtMTM4MCwxMSArMTM4NiwxMyBAQCBzdGF0aWMgaW50IGlndF9ndHRfcmVz ZXJ2ZSh2b2lkICphcmcpCj4gICAJCQlnb3RvIG91dDsKPiAgIAkJfQo+ICAgCj4gKwkJbXV0ZXhf bG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCQllcnIgPSBpOTE1X2dlbV9ndHRfcmVzZXJ2ZSgm Z2d0dC0+dm0sICZ2bWEtPm5vZGUsCj4gICAJCQkJCSAgIG9iai0+YmFzZS5zaXplLAo+ICAgCQkJ CQkgICB0b3RhbCwKPiAgIAkJCQkJICAgb2JqLT5jYWNoZV9sZXZlbCwKPiAgIAkJCQkJICAgMCk7 Cj4gKwkJbXV0ZXhfdW5sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gICAJCWlmIChlcnIpIHsKPiAg IAkJCXByX2VycigiaTkxNV9nZW1fZ3R0X3Jlc2VydmUgKHBhc3MgMikgZmFpbGVkIGF0ICVsbHUv JWxsdSB3aXRoIGVycj0lZFxuIiwKPiAgIAkJCSAgICAgICB0b3RhbCwgZ2d0dC0+dm0udG90YWws IGVycik7Cj4gQEAgLTE0MTQsNyArMTQyMiw3IEBAIHN0YXRpYyBpbnQgaWd0X2d0dF9yZXNlcnZl KHZvaWQgKmFyZykKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQl9Cj4gICAKPiAtCQllcnIgPSBpOTE1 X3ZtYV91bmJpbmQodm1hKTsKPiArCQllcnIgPSB1bmxvY2tlZF92bWFfdW5iaW5kKHZtYSk7Cj4g ICAJCWlmIChlcnIpIHsKPiAgIAkJCXByX2VycigiaTkxNV92bWFfdW5iaW5kIGZhaWxlZCB3aXRo IGVycj0lZCFcbiIsIGVycik7Cj4gICAJCQlnb3RvIG91dDsKPiBAQCAtMTQyNCwxMSArMTQzMiwx MyBAQCBzdGF0aWMgaW50IGlndF9ndHRfcmVzZXJ2ZSh2b2lkICphcmcpCj4gICAJCQkJICAgICAg IDIqSTkxNV9HVFRfUEFHRV9TSVpFLAo+ICAgCQkJCSAgICAgICBJOTE1X0dUVF9NSU5fQUxJR05N RU5UKTsKPiAgIAo+ICsJCW11dGV4X2xvY2soJmdndHQtPnZtLm11dGV4KTsKPiAgIAkJZXJyID0g aTkxNV9nZW1fZ3R0X3Jlc2VydmUoJmdndHQtPnZtLCAmdm1hLT5ub2RlLAo+ICAgCQkJCQkgICBv YmotPmJhc2Uuc2l6ZSwKPiAgIAkJCQkJICAgb2Zmc2V0LAo+ICAgCQkJCQkgICBvYmotPmNhY2hl X2xldmVsLAo+ICAgCQkJCQkgICAwKTsKPiArCQltdXRleF91bmxvY2soJmdndHQtPnZtLm11dGV4 KTsKPiAgIAkJaWYgKGVycikgewo+ICAgCQkJcHJfZXJyKCJpOTE1X2dlbV9ndHRfcmVzZXJ2ZSAo cGFzcyAzKSBmYWlsZWQgYXQgJWxsdS8lbGx1IHdpdGggZXJyPSVkXG4iLAo+ICAgCQkJICAgICAg IHRvdGFsLCBnZ3R0LT52bS50b3RhbCwgZXJyKTsKPiBAQCAtMTQ5NywxMSArMTUwNywxMyBAQCBz dGF0aWMgaW50IGlndF9ndHRfaW5zZXJ0KHZvaWQgKmFyZykKPiAgIAo+ICAgCS8qIENoZWNrIGEg Y291cGxlIG9mIG9idmlvdXNseSBpbnZhbGlkIHJlcXVlc3RzICovCj4gICAJZm9yIChpaSA9IGlu dmFsaWRfaW5zZXJ0OyBpaS0+c2l6ZTsgaWkrKykgewo+ICsJCW11dGV4X2xvY2soJmdndHQtPnZt Lm11dGV4KTsKPiAgIAkJZXJyID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmZ2d0dC0+dm0sICZ0bXAs Cj4gICAJCQkJCSAgaWktPnNpemUsIGlpLT5hbGlnbm1lbnQsCj4gICAJCQkJCSAgSTkxNV9DT0xP Ul9VTkVWSUNUQUJMRSwKPiAgIAkJCQkJICBpaS0+c3RhcnQsIGlpLT5lbmQsCj4gICAJCQkJCSAg MCk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gICAJCWlmIChlcnIgIT0g LUVOT1NQQykgewo+ICAgCQkJcHJfZXJyKCJJbnZhbGlkIGk5MTVfZ2VtX2d0dF9pbnNlcnQoLnNp emU9JWxseCwgLmFsaWdubWVudD0lbGx4LCAuc3RhcnQ9JWxseCwgLmVuZD0lbGx4KSBzdWNjZWVk ZWQgKGVycj0lZClcbiIsCj4gICAJCQkgICAgICAgaWktPnNpemUsIGlpLT5hbGlnbm1lbnQsIGlp LT5zdGFydCwgaWktPmVuZCwKPiBAQCAtMTUzNywxMCArMTU0OSwxMiBAQCBzdGF0aWMgaW50IGln dF9ndHRfaW5zZXJ0KHZvaWQgKmFyZykKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQl9Cj4gICAKPiAr CQltdXRleF9sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gICAJCWVyciA9IGk5MTVfZ2VtX2d0dF9p bnNlcnQoJmdndHQtPnZtLCAmdm1hLT5ub2RlLAo+ICAgCQkJCQkgIG9iai0+YmFzZS5zaXplLCAw LCBvYmotPmNhY2hlX2xldmVsLAo+ICAgCQkJCQkgIDAsIGdndHQtPnZtLnRvdGFsLAo+ICAgCQkJ CQkgIDApOwo+ICsJCW11dGV4X3VubG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAgCQlpZiAoZXJy ID09IC1FTk9TUEMpIHsKPiAgIAkJCS8qIG1heGVkIG91dCB0aGUgR0dUVCBzcGFjZSAqLwo+ICAg CQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+IEBAIC0xNTg5LDE2ICsxNjAzLDE4IEBAIHN0 YXRpYyBpbnQgaWd0X2d0dF9pbnNlcnQodm9pZCAqYXJnKQo+ICAgCQlHRU1fQlVHX09OKCFkcm1f bW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpOwo+ICAgCQlvZmZzZXQgPSB2bWEtPm5vZGUu c3RhcnQ7Cj4gICAKPiAtCQllcnIgPSBpOTE1X3ZtYV91bmJpbmQodm1hKTsKPiArCQllcnIgPSB1 bmxvY2tlZF92bWFfdW5iaW5kKHZtYSk7Cj4gICAJCWlmIChlcnIpIHsKPiAgIAkJCXByX2Vycigi aTkxNV92bWFfdW5iaW5kIGZhaWxlZCB3aXRoIGVycj0lZCFcbiIsIGVycik7Cj4gICAJCQlnb3Rv IG91dDsKPiAgIAkJfQo+ICAgCj4gKwkJbXV0ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgpOwo+ICAg CQllcnIgPSBpOTE1X2dlbV9ndHRfaW5zZXJ0KCZnZ3R0LT52bSwgJnZtYS0+bm9kZSwKPiAgIAkJ CQkJICBvYmotPmJhc2Uuc2l6ZSwgMCwgb2JqLT5jYWNoZV9sZXZlbCwKPiAgIAkJCQkJICAwLCBn Z3R0LT52bS50b3RhbCwKPiAgIAkJCQkJICAwKTsKPiArCQltdXRleF91bmxvY2soJmdndHQtPnZt Lm11dGV4KTsKPiAgIAkJaWYgKGVycikgewo+ICAgCQkJcHJfZXJyKCJpOTE1X2dlbV9ndHRfaW5z ZXJ0IChwYXNzIDIpIGZhaWxlZCBhdCAlbGx1LyVsbHUgd2l0aCBlcnI9JWRcbiIsCj4gICAJCQkg ICAgICAgdG90YWwsIGdndHQtPnZtLnRvdGFsLCBlcnIpOwo+IEBAIC0xNjQyLDEwICsxNjU4LDEy IEBAIHN0YXRpYyBpbnQgaWd0X2d0dF9pbnNlcnQodm9pZCAqYXJnKQo+ICAgCQkJZ290byBvdXQ7 Cj4gICAJCX0KPiAgIAo+ICsJCW11dGV4X2xvY2soJmdndHQtPnZtLm11dGV4KTsKPiAgIAkJZXJy ID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmZ2d0dC0+dm0sICZ2bWEtPm5vZGUsCj4gICAJCQkJCSAg b2JqLT5iYXNlLnNpemUsIDAsIG9iai0+Y2FjaGVfbGV2ZWwsCj4gICAJCQkJCSAgMCwgZ2d0dC0+ dm0udG90YWwsCj4gICAJCQkJCSAgMCk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZnZ3R0LT52bS5tdXRl eCk7Cj4gICAJCWlmIChlcnIpIHsKPiAgIAkJCXByX2VycigiaTkxNV9nZW1fZ3R0X2luc2VydCAo cGFzcyAzKSBmYWlsZWQgYXQgJWxsdS8lbGx1IHdpdGggZXJyPSVkXG4iLAo+ICAgCQkJICAgICAg IHRvdGFsLCBnZ3R0LT52bS50b3RhbCwgZXJyKTsKPiBAQCAtMTY4OSw4ICsxNzA3LDkgQEAgaW50 IGk5MTVfZ2VtX2d0dF9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQo+ICAgCX0KPiAgIAltb2NrX2luaXRf Z2d0dChpOTE1LCBnZ3R0KTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gICAJZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgZ2d0dCk7Cj4gKwo+ICsJbXV0 ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJbW9ja19kZXZpY2VfZmx1c2go aTkxNSk7Cj4gICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jCj4gaW5kZXggOTc3NTJk ZWVjY2NiLi5lMGNhMTJjMTdhN2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfdm1hLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV92bWEuYwo+IEBAIC0zMzcsNyArMzM3LDkgQEAgc3RhdGljIGludCBpZ3Rfdm1hX3Bp bjEodm9pZCAqYXJnKQo+ICAgCj4gICAJCWlmICghZXJyKSB7Cj4gICAJCQlpOTE1X3ZtYV91bnBp bih2bWEpOwo+ICsJCQltdXRleF9sb2NrKCZnZ3R0LT52bS5tdXRleCk7Cj4gICAJCQllcnIgPSBp OTE1X3ZtYV91bmJpbmQodm1hKTsKPiArCQkJbXV0ZXhfdW5sb2NrKCZnZ3R0LT52bS5tdXRleCk7 Cj4gICAJCQlpZiAoZXJyKSB7Cj4gICAJCQkJcHJfZXJyKCJGYWlsZWQgdG8gdW5iaW5kIHNpbmds ZSBwYWdlIGZyb20gR0dUVCwgZXJyPSVkXG4iLCBlcnIpOwo+ICAgCQkJCWdvdG8gb3V0Owo+IEBA IC04MzEsOCArODMzLDkgQEAgaW50IGk5MTVfdm1hX21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gICAJ fQo+ICAgCW1vY2tfaW5pdF9nZ3R0KGk5MTUsIGdndHQpOwo+ICAgCj4gLQltdXRleF9sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAllcnIgPSBpOTE1X3N1YnRlc3RzKHRlc3RzLCBn Z3R0KTsKPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlt b2NrX2RldmljZV9mbHVzaChpOTE1KTsKPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+ICAgCj4gQEAgLTg3OSw4ICs4ODIsNiBAQCBzdGF0aWMgaW50IGlndF92bWFf cmVtYXBwZWRfZ3R0KHZvaWQgKmFyZykKPiAgIAlpZiAoSVNfRVJSKG9iaikpCj4gICAJCXJldHVy biBQVFJfRVJSKG9iaik7Cj4gICAKPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+IC0KPiAgIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRp bWVfcG0pOwo+ICAgCj4gICAJZm9yICh0ID0gdHlwZXM7ICp0OyB0KyspIHsKPiBAQCAtOTc2LDcg Kzk3Nyw2IEBAIHN0YXRpYyBpbnQgaWd0X3ZtYV9yZW1hcHBlZF9ndHQodm9pZCAqYXJnKQo+ICAg Cj4gICBvdXQ6Cj4gICAJaW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdh a2VyZWYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlp OTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gICAKPiAgIAlyZXR1cm4gZXJyOwo+IAoKSW4gZ2Vu ZXJhbCwgZXZlbiB3aGVuIEkgZGlkIG5vdCBleHBsaWNpdGx5IGFza2VkIGZvciBhIGNvbW1lbnQs IHBsYWNlcyAKd2hlcmUgdGhpbmdzIHdlcmVuJ3QgY2xlYXIgdG8gbWUgc2hvdWxkIGJlIGNvbnNp ZGVyZWQgdG8gaGF2ZSB0aGVtIGFkZGVkIAphbmQgcHJvYmFibHkgbW9yZS4KClJlZ2FyZHMsCgpU dnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4