From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 13/15] drm/i915: Replace hangcheck by heartbeats Date: Mon, 14 Oct 2019 13:13:27 +0100 Message-ID: <36e44190-3509-e9fa-afd9-c10522710849@linux.intel.com> References: <20191014090757.32111-1-chris@chris-wilson.co.uk> <20191014090757.32111-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id EBD5E6E1B9 for ; Mon, 14 Oct 2019 12:13:30 +0000 (UTC) In-Reply-To: <20191014090757.32111-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 Ck9uIDE0LzEwLzIwMTkgMTA6MDcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBSZXBsYWNlIHNhbXBs aW5nIHRoZSBlbmdpbmUgc3RhdGUgZXZlcnkgc28gb2Z0ZW4gd2l0aCBhIHBlcmlvZGljCj4gaGVh cnRiZWF0IHJlcXVlc3QgdG8gbWVhc3VyZSB0aGUgaGVhbHRoIG9mIGFuIGVuZ2luZS4gVGhpcyBp cyBjb3VwbGVkCj4gd2l0aCB0aGUgZm9yY2VkLXByZWVtcHRpb24gdG8gYWxsb3cgbG9uZyBydW5u aW5nIHJlcXVlc3RzIHRvIHN1cnZpdmUgc28KPiBsb25nIGFzIHRoZXkgZG8gbm90IGJsb2NrIG90 aGVyIHVzZXJzLgo+IAo+IFRoZSBoZWFydGJlYXQgaW50ZXJ2YWwgY2FuIGJlIGFkanVzdGVkIHBl ci1lbmdpbmUgdXNpbmcsCj4gCj4gCS9zeXMvY2xhc3MvZHJtL2NhcmQ/L2VuZ2luZS8qL2hlYXJ0 YmVhdF9pbnRlcnZhbF9tcwo+IAo+IHYyOiBDb3VwbGUgaW4gc3lzZnMgY29udHJvbHMKPiAKPiBT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBD YzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgo+IENj OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBKb24gQmxv b21maWVsZCA8am9uLmJsb29tZmllbGRAaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBKb24gQmxv b21maWVsZCA8am9uLmJsb29tZmllbGRAaW50ZWwuY29tPgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCgo+IC0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5wcm9maWxlICAgICAgICAgIHwgIDE0 ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAg MSAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAg IDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaCAgICB8 ICAgMSAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYyAgICAgICAg fCAgIDIgLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggICAgICAg IHwgIDMyIC0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAg ICAgfCAgMTEgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVh dC5jICB8IDEyOCArKysrKysrCj4gICAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9o ZWFydGJlYXQuaCAgfCAgIDUgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX3BtLmMgICAgIHwgICA1ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfc3lzZnMuYyAgfCAgMzIgKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZV90eXBlcy5oICB8ICAxNyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3QuYyAgICAgICAgICAgIHwgICAxIC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0LmggICAgICAgICAgICB8ICAgNCAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9ndF9wbS5jICAgICAgICAgfCAgIDEgLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfdHlwZXMuaCAgICAgIHwgICA5IC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2hhbmdjaGVjay5jICAgICB8IDM2MSAtLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgICAgICAgICB8ICAgMyArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMgIHwgICA0IC0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8ICA4NyAtLS0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgICAzIC0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgMSAt Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICAgfCAgMzMg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggICAgICAgICB8ICAg MiAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ByaW9saXN0X3R5cGVzLmggICAgfCAg IDYgKwo+ICAgMjUgZmlsZXMgY2hhbmdlZCwgMjEwIGluc2VydGlvbnMoKyksIDU1NSBkZWxldGlv bnMoLSkKPiAgIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9oYW5nY2hlY2suYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29u ZmlnLnByb2ZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLnByb2ZpbGUKPiBpbmRl eCA4ZmNlZWE4NTkzN2IuLjRiZWQyOTNlMWZiNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9LY29uZmlnLnByb2ZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29u ZmlnLnByb2ZpbGUKPiBAQCAtNDAsMyArNDAsMTcgQEAgY29uZmlnIERSTV9JOTE1X1BSRUVNUFRf VElNRU9VVAo+ICAgCSAgL3N5cy9jbGFzcy9kcm0vY2FyZD8vZW5naW5lLyovcHJlZW1wdF90aW1l b3V0X21zCj4gICAKPiAgIAkgIE1heSBiZSAwIHRvIGRpc2FibGUgdGhlIHRpbWVvdXQuCj4gKwo+ ICtjb25maWcgRFJNX0k5MTVfSEVBUlRCRUFUX0lOVEVSVkFMCj4gKwlpbnQgIkludGVydmFsIGJl dHdlZW4gaGVhcnRiZWF0IHB1bHNlcyAobXMpIgo+ICsJZGVmYXVsdCAyNTAwICMgbWlsbGlzZWNv bmRzCj4gKwloZWxwCj4gKwkgIFRoZSBkcml2ZXIgc2VuZHMgYSBwZXJpb2RpYyBoZWFydGJlYXQg ZG93biBhbGwgYWN0aXZlIGVuZ2luZXMgdG8KPiArCSAgY2hlY2sgdGhlIGhlYWx0aCBvZiB0aGUg R1BVIGFuZCB1bmRlcnRha2UgcmVndWxhciBob3VzZS1rZWVwaW5nIG9mCj4gKwkgIGludGVybmFs IGRyaXZlciBzdGF0ZS4KPiArCj4gKwkgIFRoaXMgaXMgYWRqdXN0YWJsZSB2aWEKPiArCSAgL3N5 cy9jbGFzcy9kcm0vY2FyZD8vZW5naW5lLyovaGVhcnRiZWF0X2ludGVydmFsX21zCj4gKwo+ICsJ ICBNYXkgYmUgMCB0byBkaXNhYmxlIGhlYXJ0YmVhdHMgYW5kIHRoZXJlZm9yZSBkaXNhYmxlIGF1 dG9tYXRpYyBHUFUKPiArCSAgaGFuZyBkZXRlY3Rpb24uCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBp bmRleCBjZmFiN2M4NTg1YjMuLjU5ZDM1NmNjNDA2YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4gQEAgLTg4LDcgKzg4LDYgQEAgZ3QteSArPSBcCj4gICAJZ3QvaW50ZWxfZ3RfcG0ubyBcCj4g ICAJZ3QvaW50ZWxfZ3RfcG1faXJxLm8gXAo+ICAgCWd0L2ludGVsX2d0X3JlcXVlc3RzLm8gXAo+ IC0JZ3QvaW50ZWxfaGFuZ2NoZWNrLm8gXAo+ICAgCWd0L2ludGVsX2xyYy5vIFwKPiAgIAlndC9p bnRlbF9yYzYubyBcCj4gICAJZ3QvaW50ZWxfcmVuZGVyc3RhdGUubyBcCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAzY2YzOWZjMTUzYjMu LmEyZWY0YmNmOTI0MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jCj4gQEAgLTE0NDAxLDcgKzE0NDAxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf cGxhbmVfdW5waW5fZmIoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUp Cj4gICBzdGF0aWMgdm9pZCBmYl9vYmpfYnVtcF9yZW5kZXJfcHJpb3JpdHkoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyIGF0 dHIgPSB7Cj4gLQkJLnByaW9yaXR5ID0gSTkxNV9QUklPUklUWV9ESVNQTEFZLAo+ICsJCS5wcmlv cml0eSA9IEk5MTVfVVNFUl9QUklPUklUWShJOTE1X1BSSU9SSVRZX0RJU1BMQVkpLAo+ICAgCX07 Cj4gICAKPiAgIAlpOTE1X2dlbV9vYmplY3Rfd2FpdF9wcmlvcml0eShvYmosIDAsICZhdHRyKTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4gaW5kZXggYjAy NDU1ODViNGQ1Li44MTdlYTA3MjVlNDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5oCj4gQEAgLTQ2MSw2ICs0NjEsNSBAQCBpbnQgaTkxNV9nZW1fb2Jq ZWN0X3dhaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIGludCBpOTE1X2dl bV9vYmplY3Rfd2FpdF9wcmlvcml0eShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ICAgCQkJCSAgdW5zaWduZWQgaW50IGZsYWdzLAo+ICAgCQkJCSAgY29uc3Qgc3RydWN0IGk5MTVf c2NoZWRfYXR0ciAqYXR0cik7Cj4gLSNkZWZpbmUgSTkxNV9QUklPUklUWV9ESVNQTEFZIEk5MTVf VVNFUl9QUklPUklUWShJOTE1X1BSSU9SSVRZX01BWCkKPiAgIAo+ICAgI2VuZGlmCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKPiBpbmRleCA3OTg3YjU0ZmIxZjUuLjBlOTc1 MjBjYjFiYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f cG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jCj4gQEAg LTEwMCw4ICsxMDAsNiBAQCB2b2lkIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gICAJaW50ZWxfZ3Rfc3VzcGVuZCgmaTkxNS0+Z3QpOwo+ICAgCWludGVs X3VjX3N1c3BlbmQoJmk5MTUtPmd0LnVjKTsKPiAgIAo+IC0JY2FuY2VsX2RlbGF5ZWRfd29ya19z eW5jKCZpOTE1LT5ndC5oYW5nY2hlY2sud29yayk7Cj4gLQo+ICAgCWk5MTVfZ2VtX2RyYWluX2Zy ZWVkX29iamVjdHMoaTkxNSk7Cj4gICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmUuaAo+IGluZGV4IDkzZWEzNjdmZTYyNC4uOGFkNTdlYWNlMzUxIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKPiBAQCAtODksMzggKzg5LDYgQEAgc3Ry dWN0IGRybV9wcmludGVyOwo+ICAgLyogc2Vxbm8gc2l6ZSBpcyBhY3R1YWxseSBvbmx5IGEgdWlu dDMyLCBidXQgc2luY2Ugd2UgcGxhbiB0byB1c2UgTUlfRkxVU0hfRFcgdG8KPiAgICAqIGRvIHRo ZSB3cml0ZXMsIGFuZCB0aGF0IG11c3QgaGF2ZSBxdyBhbGlnbmVkIG9mZnNldHMsIHNpbXBseSBw cmV0ZW5kIGl0J3MgOGIuCj4gICAgKi8KPiAtZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrX2Fj dGlvbiB7Cj4gLQlFTkdJTkVfSURMRSA9IDAsCj4gLQlFTkdJTkVfV0FJVCwKPiAtCUVOR0lORV9B Q1RJVkVfU0VRTk8sCj4gLQlFTkdJTkVfQUNUSVZFX0hFQUQsCj4gLQlFTkdJTkVfQUNUSVZFX1NV QlVOSVRTLAo+IC0JRU5HSU5FX1dBSVRfS0lDSywKPiAtCUVOR0lORV9ERUFELAo+IC19Owo+IC0K PiAtc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKPiAtaGFuZ2NoZWNrX2FjdGlvbl90b19zdHIo Y29uc3QgZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrX2FjdGlvbiBhKQo+IC17Cj4gLQlzd2l0 Y2ggKGEpIHsKPiAtCWNhc2UgRU5HSU5FX0lETEU6Cj4gLQkJcmV0dXJuICJpZGxlIjsKPiAtCWNh c2UgRU5HSU5FX1dBSVQ6Cj4gLQkJcmV0dXJuICJ3YWl0IjsKPiAtCWNhc2UgRU5HSU5FX0FDVElW RV9TRVFOTzoKPiAtCQlyZXR1cm4gImFjdGl2ZSBzZXFubyI7Cj4gLQljYXNlIEVOR0lORV9BQ1RJ VkVfSEVBRDoKPiAtCQlyZXR1cm4gImFjdGl2ZSBoZWFkIjsKPiAtCWNhc2UgRU5HSU5FX0FDVElW RV9TVUJVTklUUzoKPiAtCQlyZXR1cm4gImFjdGl2ZSBzdWJ1bml0cyI7Cj4gLQljYXNlIEVOR0lO RV9XQUlUX0tJQ0s6Cj4gLQkJcmV0dXJuICJ3YWl0IGtpY2siOwo+IC0JY2FzZSBFTkdJTkVfREVB RDoKPiAtCQlyZXR1cm4gImRlYWQiOwo+IC0JfQo+IC0KPiAtCXJldHVybiAidW5rbm93biI7Cj4g LX0KPiAgIAo+ICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKPiAgIGV4ZWNsaXN0c19udW1f cG9ydHMoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlz dHMpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9j cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCAx ZWI1MTE0NzgzOWEuLmQ4MjlhZDM0MGNhMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTMwNSw2ICszMDUsNyBAQCBzdGF0aWMgaW50IGludGVs X2VuZ2luZV9zZXR1cChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBlbnVtIGludGVsX2VuZ2luZV9pZCBp ZCkKPiAgIAlfX3NwcmludF9lbmdpbmVfbmFtZShlbmdpbmUpOwo+ICAgCj4gICAJZW5naW5lLT5w cm9wcy5wcmVlbXB0X3RpbWVvdXQgPSBDT05GSUdfRFJNX0k5MTVfUFJFRU1QVF9USU1FT1VUOwo+ ICsJZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWwgPSBDT05GSUdfRFJNX0k5MTVfSEVB UlRCRUFUX0lOVEVSVkFMOwo+ICAgCj4gICAJLyoKPiAgIAkgKiBUbyBiZSBvdmVycmlkZGVuIGJ5 IHRoZSBiYWNrZW5kIG9uIHNldHVwLiBIb3dldmVyIHRvIGZhY2lsaXRhdGUKPiBAQCAtNTk5LDcg KzYwMCw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJaW50ZWxfZW5naW5lX2luaXRfYWN0aXZlKGVuZ2lu ZSwgRU5HSU5FX1BIWVNJQ0FMKTsKPiAgIAlpbnRlbF9lbmdpbmVfaW5pdF9icmVhZGNydW1icyhl bmdpbmUpOwo+ICAgCWludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0cyhlbmdpbmUpOwo+IC0JaW50 ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7Cj4gICAJaW50ZWxfZW5naW5lX2luaXRf Y21kX3BhcnNlcihlbmdpbmUpOwo+ICAgCWludGVsX2VuZ2luZV9pbml0X19wbShlbmdpbmUpOwo+ ICAgCj4gQEAgLTE0MzIsOCArMTQzMiwxMyBAQCB2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJZHJtX3ByaW50ZihtLCAiKioqIFdFREdF RCAqKipcbiIpOwo+ICAgCj4gICAJZHJtX3ByaW50ZihtLCAiXHRBd2FrZT8gJWRcbiIsIGF0b21p Y19yZWFkKCZlbmdpbmUtPndha2VyZWYuY291bnQpKTsKPiAtCWRybV9wcmludGYobSwgIlx0SGFu Z2NoZWNrOiAlZCBtcyBhZ29cbiIsCj4gLQkJICAgamlmZmllc190b19tc2VjcyhqaWZmaWVzIC0g ZW5naW5lLT5oYW5nY2hlY2suYWN0aW9uX3RpbWVzdGFtcCkpOwo+ICsKPiArCXJjdV9yZWFkX2xv Y2soKTsKPiArCXJxID0gUkVBRF9PTkNFKGVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUpOwo+ICsJ aWYgKHJxKQo+ICsJCWRybV9wcmludGYobSwgIlx0SGVhcnRiZWF0OiAlZCBtcyBhZ29cbiIsCj4g KwkJCSAgIGppZmZpZXNfdG9fbXNlY3MoamlmZmllcyAtIHJxLT5lbWl0dGVkX2ppZmZpZXMpKTsK PiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICAgCWRybV9wcmludGYobSwgIlx0UmVzZXQgY291bnQ6 ICVkIChnbG9iYWwgJWQpXG4iLAo+ICAgCQkgICBpOTE1X3Jlc2V0X2VuZ2luZV9jb3VudChlcnJv ciwgZW5naW5lKSwKPiAgIAkJICAgaTkxNV9yZXNldF9jb3VudChlcnJvcikpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMKPiBpbmRleCAy ZmM0MTNmOWQ1MDYuLmRjNzQxZTg2ZmI0MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMKPiBAQCAtMTEsNiArMTEsMjcgQEAKPiAg ICNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG0uaCIKPiAgICNpbmNsdWRlICJpbnRlbF9lbmdpbmUu aCIKPiAgICNpbmNsdWRlICJpbnRlbF9ndC5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfcmVzZXQuaCIK PiArCj4gKy8qCj4gKyAqIFdoaWxlIHRoZSBlbmdpbmUgaXMgYWN0aXZlLCB3ZSBzZW5kIGEgcGVy aW9kaWMgcHVsc2UgYWxvbmcgdGhlIGVuZ2luZQo+ICsgKiB0byBjaGVjayBvbiBpdHMgaGVhbHRo IGFuZCB0byBmbHVzaCBhbnkgaWRsZS1iYXJyaWVycy4gSWYgdGhhdCByZXF1ZXN0Cj4gKyAqIGlz IHN0dWNrLCBhbmQgd2UgZmFpbCB0byBwcmVlbXB0IGl0LCB3ZSBkZWNsYXJlIHRoZSBlbmdpbmUg aHVuZyBhbmQKPiArICogaXNzdWUgYSByZXNldCAtLSBpbiB0aGUgaG9wZSB0aGF0IHJlc3RvcmVz IHByb2dyZXNzLgo+ICsgKi8KPiArCj4gK3N0YXRpYyB2b2lkIG5leHRfaGVhcnRiZWF0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJbG9uZyBkZWxheTsKPiArCj4gKwlk ZWxheSA9IFJFQURfT05DRShlbmdpbmUtPnByb3BzLmhlYXJ0YmVhdF9pbnRlcnZhbCk7Cj4gKwlp ZiAoIWRlbGF5KQo+ICsJCXJldHVybjsKPiArCj4gKwlkZWxheSA9IG1zZWNzX3RvX2ppZmZpZXNf dGltZW91dChkZWxheSk7Cj4gKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmVuZ2luZS0+aGVhcnRi ZWF0LndvcmssCj4gKwkJCSAgICAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoZGVsYXkpKTsK PiArfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBpZGxlX3B1bHNlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICB7Cj4gQEAgLTE4LDYgKzM5 LDExMyBAQCBzdGF0aWMgdm9pZCBpZGxlX3B1bHNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJaTkxNV9yZXF1ZXN0X2FkZF9hY3Rp dmVfYmFycmllcnMocnEpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIHNob3dfaGVhcnRiZWF0 KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICsJCQkgICBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2RlYnVn X3ByaW50ZXIoImhlYXJ0YmVhdCIpOwo+ICsKPiArCWludGVsX2VuZ2luZV9kdW1wKGVuZ2luZSwg JnAsCj4gKwkJCSAgIiVzIGhlYXJ0YmVhdCB7cHJpbzolZH0gbm90IHRpY2tpbmdcbiIsCj4gKwkJ CSAgZW5naW5lLT5uYW1lLAo+ICsJCQkgIHJxLT5zY2hlZC5hdHRyLnByaW9yaXR5KTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgaGVhcnRiZWF0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd3JrKQo+ICt7 Cj4gKwlzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyIGF0dHIgPSB7Cj4gKwkJLnByaW9yaXR5ID0gSTkx NV9VU0VSX1BSSU9SSVRZKEk5MTVfUFJJT1JJVFlfTUlOKSwKPiArCX07Cj4gKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPQo+ICsJCWNvbnRhaW5lcl9vZih3cmssIHR5cGVvZigqZW5n aW5lKSwgaGVhcnRiZWF0Lndvcmsud29yayk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Ug PSBlbmdpbmUtPmtlcm5lbF9jb250ZXh0Owo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4g Kwo+ICsJaWYgKCFpbnRlbF9lbmdpbmVfcG1fZ2V0X2lmX2F3YWtlKGVuZ2luZSkpCj4gKwkJcmV0 dXJuOwo+ICsKPiArCXJxID0gZW5naW5lLT5oZWFydGJlYXQuc3lzdG9sZTsKPiArCWlmIChycSAm JiBpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkgewo+ICsJCWk5MTVfcmVxdWVzdF9wdXQocnEp Owo+ICsJCWVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUgPSBOVUxMOwo+ICsJfQo+ICsKPiArCWlm IChpbnRlbF9ndF9pc193ZWRnZWQoZW5naW5lLT5ndCkpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJ aWYgKGVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUpIHsKPiArCQlpZiAoZW5naW5lLT5zY2hlZHVs ZSAmJgo+ICsJCSAgICBycS0+c2NoZWQuYXR0ci5wcmlvcml0eSA8IEk5MTVfUFJJT1JJVFlfQkFS UklFUikgewo+ICsJCQkvKgo+ICsJCQkgKiBHcmFkdWFsbHkgcmFpc2UgdGhlIHByaW9yaXR5IG9m IHRoZSBoZWFydGJlYXQgdG8KPiArCQkJICogZ2l2ZSBoaWdoIHByaW9yaXR5IHdvcmsgW3doaWNo IHByZXN1bWFibHkgZGVzaXJlcwo+ICsJCQkgKiBsb3cgbGF0ZW5jeSBhbmQgbm8gaml0dGVyXSB0 aGUgY2hhbmNlIHRvIG5hdHVyYWxseQo+ICsJCQkgKiBjb21wbGV0ZSBiZWZvcmUgYmVpbmcgcHJl ZW1wdGVkLgo+ICsJCQkgKi8KPiArCQkJYXR0ci5wcmlvcml0eSA9IDA7Cj4gKwkJCWlmIChycS0+ c2NoZWQuYXR0ci5wcmlvcml0eSA+PSBhdHRyLnByaW9yaXR5KQo+ICsJCQkJYXR0ci5wcmlvcml0 eSA9IEk5MTVfVVNFUl9QUklPUklUWShJOTE1X1BSSU9SSVRZX0hFQVJUQkVBVCk7Cj4gKwkJCWlm IChycS0+c2NoZWQuYXR0ci5wcmlvcml0eSA+PSBhdHRyLnByaW9yaXR5KQo+ICsJCQkJYXR0ci5w cmlvcml0eSA9IEk5MTVfUFJJT1JJVFlfQkFSUklFUjsKPiArCj4gKwkJCWxvY2FsX2JoX2Rpc2Fi bGUoKTsKPiArCQkJZW5naW5lLT5zY2hlZHVsZShycSwgJmF0dHIpOwo+ICsJCQlsb2NhbF9iaF9l bmFibGUoKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5 MTVfREVCVUdfR0VNKSkKPiArCQkJCXNob3dfaGVhcnRiZWF0KHJxLCBlbmdpbmUpOwo+ICsKPiAr CQkJaW50ZWxfZ3RfaGFuZGxlX2Vycm9yKGVuZ2luZS0+Z3QsIGVuZ2luZS0+bWFzaywKPiArCQkJ CQkgICAgICBJOTE1X0VSUk9SX0NBUFRVUkUsCj4gKwkJCQkJICAgICAgInN0b3BwZWQgaGVhcnRi ZWF0IG9uICVzIiwKPiArCQkJCQkgICAgICBlbmdpbmUtPm5hbWUpOwo+ICsJCX0KPiArCQlnb3Rv IG91dDsKPiArCX0KPiArCj4gKwlpZiAoZW5naW5lLT53YWtlcmVmX3NlcmlhbCA9PSBlbmdpbmUt PnNlcmlhbCkKPiArCQlnb3RvIG91dDsKPiArCj4gKwltdXRleF9sb2NrKCZjZS0+dGltZWxpbmUt Pm11dGV4KTsKPiArCj4gKwlpbnRlbF9jb250ZXh0X2VudGVyKGNlKTsKPiArCXJxID0gX19pOTE1 X3JlcXVlc3RfY3JlYXRlKGNlLCBHRlBfTk9XQUlUIHwgX19HRlBfTk9XQVJOKTsKPiArCWludGVs X2NvbnRleHRfZXhpdChjZSk7Cj4gKwlpZiAoSVNfRVJSKHJxKSkKPiArCQlnb3RvIHVubG9jazsK PiArCj4gKwlpZGxlX3B1bHNlKGVuZ2luZSwgcnEpOwo+ICsJaWYgKGk5MTVfbW9kcGFyYW1zLmVu YWJsZV9oYW5nY2hlY2spCj4gKwkJZW5naW5lLT5oZWFydGJlYXQuc3lzdG9sZSA9IGk5MTVfcmVx dWVzdF9nZXQocnEpOwo+ICsKPiArCV9faTkxNV9yZXF1ZXN0X2NvbW1pdChycSk7Cj4gKwlfX2k5 MTVfcmVxdWVzdF9xdWV1ZShycSwgJmF0dHIpOwo+ICsKPiArdW5sb2NrOgo+ICsJbXV0ZXhfdW5s b2NrKCZjZS0+dGltZWxpbmUtPm11dGV4KTsKPiArb3V0Ogo+ICsJbmV4dF9oZWFydGJlYXQoZW5n aW5lKTsKPiArCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiArfQo+ICsKPiArdm9pZCBp bnRlbF9lbmdpbmVfdW5wYXJrX2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gK3sKPiArCWlmICghQ09ORklHX0RSTV9JOTE1X0hFQVJUQkVBVF9JTlRFUlZBTCkKPiAr CQlyZXR1cm47Cj4gKwo+ICsJbmV4dF9oZWFydGJlYXQoZW5naW5lKTsKPiArfQo+ICsKPiArdm9p ZCBpbnRlbF9lbmdpbmVfcGFya19oZWFydGJlYXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICt7Cj4gKwljYW5jZWxfZGVsYXllZF93b3JrKCZlbmdpbmUtPmhlYXJ0YmVhdC53b3Jr KTsKPiArCWk5MTVfcmVxdWVzdF9wdXQoZmV0Y2hfYW5kX3plcm8oJmVuZ2luZS0+aGVhcnRiZWF0 LnN5c3RvbGUpKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9oZWFydGJlYXQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlJTklUX0RFTEFZRURfV09S SygmZW5naW5lLT5oZWFydGJlYXQud29yaywgaGVhcnRiZWF0KTsKPiArfQo+ICsKPiAgIGludCBp bnRlbF9lbmdpbmVfcHVsc2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ ICAgCXN0cnVjdCBpOTE1X3NjaGVkX2F0dHIgYXR0ciA9IHsgLnByaW9yaXR5ID0gSTkxNV9QUklP UklUWV9CQVJSSUVSIH07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9oZWFydGJlYXQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV9oZWFydGJlYXQuaAo+IGluZGV4IGI5NTA0NTFiNTk5OC4uMzkzOTEwMDQ1NTRkIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQu aAo+IEBAIC05LDYgKzksMTEgQEAKPiAgIAo+ICAgc3RydWN0IGludGVsX2VuZ2luZV9jczsKPiAg IAo+ICt2b2lkIGludGVsX2VuZ2luZV9pbml0X2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpOwo+ICsKPiArdm9pZCBpbnRlbF9lbmdpbmVfcGFya19oZWFydGJlYXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiArdm9pZCBpbnRlbF9lbmdpbmVfdW5wYXJr X2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICsKPiAgIGludCBp bnRlbF9lbmdpbmVfcHVsc2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIAo+ ICAgI2VuZGlmIC8qIElOVEVMX0VOR0lORV9IRUFSVEJFQVRfSCAqLwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jCj4gaW5kZXggN2Q3NjYxMWQ5ZGYxLi42ZmJmYTIx NjJlNTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwo+ IEBAIC03LDYgKzcsNyBAQAo+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICAKPiAgICNpbmNs dWRlICJpbnRlbF9lbmdpbmUuaCIKPiArI2luY2x1ZGUgImludGVsX2VuZ2luZV9oZWFydGJlYXQu aCIKPiAgICNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG0uaCIKPiAgICNpbmNsdWRlICJpbnRlbF9l bmdpbmVfcG9vbC5oIgo+ICAgI2luY2x1ZGUgImludGVsX2d0LmgiCj4gQEAgLTM0LDcgKzM1LDcg QEAgc3RhdGljIGludCBfX2VuZ2luZV91bnBhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ ICAgCWlmIChlbmdpbmUtPnVucGFyaykKPiAgIAkJZW5naW5lLT51bnBhcmsoZW5naW5lKTsKPiAg IAo+IC0JaW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7Cj4gKwlpbnRlbF9lbmdp bmVfdW5wYXJrX2hlYXJ0YmVhdChlbmdpbmUpOwo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4g QEAgLTE1OCw2ICsxNTksNyBAQCBzdGF0aWMgaW50IF9fZW5naW5lX3Bhcmsoc3RydWN0IGludGVs X3dha2VyZWYgKndmKQo+ICAgCj4gICAJY2FsbF9pZGxlX2JhcnJpZXJzKGVuZ2luZSk7IC8qIGNs ZWFudXAgYWZ0ZXIgd2VkZ2luZyAqLwo+ICAgCj4gKwlpbnRlbF9lbmdpbmVfcGFya19oZWFydGJl YXQoZW5naW5lKTsKPiAgIAlpbnRlbF9lbmdpbmVfZGlzYXJtX2JyZWFkY3J1bWJzKGVuZ2luZSk7 Cj4gICAJaW50ZWxfZW5naW5lX3Bvb2xfcGFyaygmZW5naW5lLT5wb29sKTsKPiAgIAo+IEBAIC0x ODgsNiArMTkwLDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9fcG0oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAgCXN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpycG0gPSBlbmdp bmUtPnVuY29yZS0+cnBtOwo+ICAgCj4gICAJaW50ZWxfd2FrZXJlZl9pbml0KCZlbmdpbmUtPndh a2VyZWYsIHJwbSwgJndmX29wcyk7Cj4gKwlpbnRlbF9lbmdpbmVfaW5pdF9oZWFydGJlYXQoZW5n aW5lKTsKPiAgIH0KPiAgIAo+ICAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZU RVNUKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf c3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9zeXNmcy5jCj4g aW5kZXggYjllYjllNGNiYTBhLi5kN2FkYmNiOWM2ZTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfc3lzZnMuYwo+IEBAIC0xNzksNiArMTc5LDM1IEBAIHBy ZWVtcHRfdGltZW91dF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0 cmlidXRlICphdHRyLAo+ICAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBwcmVlbXB0X3Rp bWVvdXRfYXR0ciA9Cj4gICBfX0FUVFIocHJlZW1wdF90aW1lb3V0X21zLCAwNjQ0LCBwcmVlbXB0 X3RpbWVvdXRfc2hvdywgcHJlZW1wdF90aW1lb3V0X3N0b3JlKTsKPiAgIAo+ICtzdGF0aWMgc3Np emVfdAo+ICtoZWFydGJlYXRfaW50ZXJ2YWxfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3Ry dWN0IGtvYmpfYXR0cmlidXRlICphdHRyLAo+ICsJCQljaGFyICpidWYpCj4gK3sKPiArCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGtvYmpfdG9fZW5naW5lKGtvYmopOwo+ICsKPiAr CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsdVxuIiwgZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50 ZXJ2YWwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtoZWFydGJlYXRfaW50ZXJ2YWxf c3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwK PiArCQkJIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSBrb2JqX3RvX2VuZ2luZShrb2JqKTsKPiArCXVuc2lnbmVk IGxvbmcgZGVsYXk7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWVyciA9IGtzdHJ0b3VsKGJ1ZiwgMCwg JmRlbGF5KTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwlXUklURV9PTkNF KGVuZ2luZS0+cHJvcHMuaGVhcnRiZWF0X2ludGVydmFsLCBkZWxheSk7Cj4gKwlyZXR1cm4gY291 bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgaGVhcnRiZWF0X2lu dGVydmFsX2F0dHIgPQo+ICtfX0FUVFIoaGVhcnRiZWF0X2ludGVydmFsX21zLCAwNjQ0LAo+ICsg ICAgICAgaGVhcnRiZWF0X2ludGVydmFsX3Nob3csIGhlYXJ0YmVhdF9pbnRlcnZhbF9zdG9yZSk7 Cj4gKwo+ICAgc3RhdGljIHZvaWQga29ial9lbmdpbmVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAq a29iaikKPiAgIHsKPiAgIAlrZnJlZShrb2JqKTsKPiBAQCAtMjE4LDYgKzI0Nyw5IEBAIHZvaWQg aW50ZWxfZW5naW5lc19hZGRfc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g ICAJCSZpbnN0X2F0dHIuYXR0ciwKPiAgIAkJJmNhcHNfYXR0ci5hdHRyLAo+ICAgCQkmYWxsX2Nh cHNfYXR0ci5hdHRyLAo+ICsjaWYgQ09ORklHX0RSTV9JOTE1X0hFQVJUQkVBVF9JTlRFUlZBTAo+ ICsJCSZoZWFydGJlYXRfaW50ZXJ2YWxfYXR0ci5hdHRyLAo+ICsjZW5kaWYKPiAgIAkJTlVMTAo+ ICAgCX07Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlw ZXMuaAo+IGluZGV4IDZhZjliMDA5Njk3NS4uYWQzYmUyZmJkNzFhIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiBAQCAtMTUsNiArMTUsNyBA QAo+ICAgI2luY2x1ZGUgPGxpbnV4L3JidHJlZS5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3RpbWVy Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3dvcmtx dWV1ZS5oPgo+ICAgCj4gICAjaW5jbHVkZSAiaTkxNV9nZW0uaCIKPiAgICNpbmNsdWRlICJpOTE1 X3BtdS5oIgo+IEBAIC03NiwxNCArNzcsNiBAQCBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgewo+ICAg CXUzMiByb3dbSTkxNV9NQVhfU0xJQ0VTXVtJOTE1X01BWF9TVUJTTElDRVNdOwo+ICAgfTsKPiAg IAo+IC1zdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayB7Cj4gLQl1NjQgYWN0aGQ7Cj4gLQl1 MzIgbGFzdF9yaW5nOwo+IC0JdTMyIGxhc3RfaGVhZDsKPiAtCXVuc2lnbmVkIGxvbmcgYWN0aW9u X3RpbWVzdGFtcDsKPiAtCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKPiAtfTsKPiAt Cj4gICBzdHJ1Y3QgaW50ZWxfcmluZyB7Cj4gICAJc3RydWN0IGtyZWYgcmVmOwo+ICAgCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+IEBAIC0zMzAsNiArMzIzLDExIEBAIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3Mgewo+ICAgCj4gICAJaW50ZWxfZW5naW5lX21hc2tfdCBzYXR1cmF0ZWQ7IC8qIHN1Ym1p dHRpbmcgc2VtYXBob3JlcyB0b28gbGF0ZT8gKi8KPiAgIAo+ICsJc3RydWN0IHsKPiArCQlzdHJ1 Y3QgZGVsYXllZF93b3JrIHdvcms7Cj4gKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqc3lzdG9sZTsK PiArCX0gaGVhcnRiZWF0Owo+ICsKPiAgIAl1bnNpZ25lZCBsb25nIHNlcmlhbDsKPiAgIAo+ICAg CXVuc2lnbmVkIGxvbmcgd2FrZXJlZl9zZXJpYWw7Cj4gQEAgLTQ4MCw4ICs0NzgsNiBAQCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiAgIAkvKiBzdGF0dXNfbm90aWZpZXI6IGxpc3Qgb2YgY2Fs bGJhY2tzIGZvciBjb250ZXh0LXN3aXRjaCBjaGFuZ2VzICovCj4gICAJc3RydWN0IGF0b21pY19u b3RpZmllcl9oZWFkIGNvbnRleHRfc3RhdHVzX25vdGlmaWVyOwo+ICAgCj4gLQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2hhbmdjaGVjayBoYW5nY2hlY2s7Cj4gLQo+ICAgI2RlZmluZSBJOTE1X0VOR0lO RV9ORUVEU19DTURfUEFSU0VSIEJJVCgwKQo+ICAgI2RlZmluZSBJOTE1X0VOR0lORV9TVVBQT1JU U19TVEFUUyAgIEJJVCgxKQo+ICAgI2RlZmluZSBJOTE1X0VOR0lORV9IQVNfUFJFRU1QVElPTiAg IEJJVCgyKQo+IEBAIC01NDksNiArNTQ1LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4g ICAKPiAgIAlzdHJ1Y3Qgewo+ICAgCQl1bnNpZ25lZCBsb25nIHByZWVtcHRfdGltZW91dDsKPiAr CQl1bnNpZ25lZCBsb25nIGhlYXJ0YmVhdF9pbnRlcnZhbDsKPiAgIAl9IHByb3BzOwo+ICAgfTsK PiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwo+IGluZGV4IGIzNjE5YTJhNWQwZS4u ZjNlMTkyNTk4N2UxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCj4gQEAgLTIy LDcgKzIyLDYgQEAgdm9pZCBpbnRlbF9ndF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndCAqZ3Qs IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCUlOSVRfTElTVF9IRUFEKCZndC0+ Y2xvc2VkX3ZtYSk7Cj4gICAJc3Bpbl9sb2NrX2luaXQoJmd0LT5jbG9zZWRfbG9jayk7Cj4gICAK PiAtCWludGVsX2d0X2luaXRfaGFuZ2NoZWNrKGd0KTsKPiAgIAlpbnRlbF9ndF9pbml0X3Jlc2V0 KGd0KTsKPiAgIAlpbnRlbF9ndF9pbml0X3JlcXVlc3RzKGd0KTsKPiAgIAlpbnRlbF9ndF9wbV9p bml0X2Vhcmx5KGd0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmgKPiBpbmRleCBlNmFi MGJmZjBlZmIuLjViNmVmZmVkMzcxMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9ndC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3Qu aAo+IEBAIC00Niw4ICs0Niw2IEBAIHZvaWQgaW50ZWxfZ3RfY2xlYXJfZXJyb3JfcmVnaXN0ZXJz KHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4gICB2b2lkIGludGVsX2d0X2ZsdXNoX2dndHRfd3JpdGVz KHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwo+ICAgdm9pZCBpbnRlbF9ndF9jaGlwc2V0X2ZsdXNoKHN0 cnVjdCBpbnRlbF9ndCAqZ3QpOwo+ICAgCj4gLXZvaWQgaW50ZWxfZ3RfaW5pdF9oYW5nY2hlY2so c3RydWN0IGludGVsX2d0ICpndCk7Cj4gLQo+ICAgc3RhdGljIGlubGluZSB1MzIgaW50ZWxfZ3Rf c2NyYXRjaF9vZmZzZXQoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwKPiAgIAkJCQkJICBlbnVt IGludGVsX2d0X3NjcmF0Y2hfZmllbGQgZmllbGQpCj4gICB7Cj4gQEAgLTU5LDYgKzU3LDQgQEAg c3RhdGljIGlubGluZSBib29sIGludGVsX2d0X2lzX3dlZGdlZChzdHJ1Y3QgaW50ZWxfZ3QgKmd0 KQo+ICAgCXJldHVybiBfX2ludGVsX3Jlc2V0X2ZhaWxlZCgmZ3QtPnJlc2V0KTsKPiAgIH0KPiAg IAo+IC12b2lkIGludGVsX2d0X3F1ZXVlX2hhbmdjaGVjayhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsK PiAtCj4gICAjZW5kaWYgLyogX19JTlRFTF9HVF9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0X3BtLmMKPiBpbmRleCA4N2UzNGUwYjY0MjcuLjg1YWYwZDE2Zjg2OSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYwo+IEBAIC01Miw3ICs1Miw2IEBAIHN0 YXRpYyBpbnQgX19ndF91bnBhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICAgCj4gICAJ aTkxNV9wbXVfZ3RfdW5wYXJrZWQoaTkxNSk7Cj4gICAKPiAtCWludGVsX2d0X3F1ZXVlX2hhbmdj aGVjayhndCk7Cj4gICAJaW50ZWxfZ3RfdW5wYXJrX3JlcXVlc3RzKGd0KTsKPiAgIAo+ICAgCXBt X25vdGlmeShndCwgSU5URUxfR1RfVU5QQVJLKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0X3R5cGVzLmgKPiBpbmRleCBiZTRiMjYzNjIxYzguLmEyZThjOGE5NTJlNyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAo+IEBAIC0yNiwxNCArMjYs NiBAQCBzdHJ1Y3QgaTkxNV9nZ3R0Owo+ICAgc3RydWN0IGludGVsX2VuZ2luZV9jczsKPiAgIHN0 cnVjdCBpbnRlbF91bmNvcmU7Cj4gICAKPiAtc3RydWN0IGludGVsX2hhbmdjaGVjayB7Cj4gLQkv KiBGb3IgaGFuZ2NoZWNrIHRpbWVyICovCj4gLSNkZWZpbmUgRFJNX0k5MTVfSEFOR0NIRUNLX1BF UklPRCAxNTAwIC8qIGluIG1zICovCj4gLSNkZWZpbmUgRFJNX0k5MTVfSEFOR0NIRUNLX0pJRkZJ RVMgbXNlY3NfdG9famlmZmllcyhEUk1fSTkxNV9IQU5HQ0hFQ0tfUEVSSU9EKQo+IC0KPiAtCXN0 cnVjdCBkZWxheWVkX3dvcmsgd29yazsKPiAtfTsKPiAtCj4gICBzdHJ1Y3QgaW50ZWxfZ3Qgewo+ ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+ICAgCXN0cnVjdCBpbnRlbF91bmNv cmUgKnVuY29yZTsKPiBAQCAtNjcsNyArNTksNiBAQCBzdHJ1Y3QgaW50ZWxfZ3Qgewo+ICAgCXN0 cnVjdCBsaXN0X2hlYWQgY2xvc2VkX3ZtYTsKPiAgIAlzcGlubG9ja190IGNsb3NlZF9sb2NrOyAv KiBndWFyZHMgdGhlIGxpc3Qgb2YgY2xvc2VkX3ZtYSAqLwo+ICAgCj4gLQlzdHJ1Y3QgaW50ZWxf aGFuZ2NoZWNrIGhhbmdjaGVjazsKPiAgIAlzdHJ1Y3QgaW50ZWxfcmVzZXQgcmVzZXQ7Cj4gICAK PiAgIAkvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFu Z2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYwo+IGRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGMxNGRiZWIzY2NjMy4uMDAwMDAwMDAwMDAw Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMKPiArKysg L2Rldi9udWxsCj4gQEAgLTEsMzYxICswLDAgQEAKPiAtLyoKPiAtICogQ29weXJpZ2h0IMKpIDIw MTYgSW50ZWwgQ29ycG9yYXRpb24KPiAtICoKPiAtICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiAtICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKPiAtICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+IC0gKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKPiAtICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCj4gLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gLSAqCj4gLSAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKPiAtICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+IC0gKiBTb2Z0d2FyZS4KPiAtICoK PiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiAtICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gLSAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAo+IC0gKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+IC0gKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ IC0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gLSAqIElOIFRIRSBTT0ZUV0FSRS4KPiAtICoKPiAt ICovCj4gLQo+IC0jaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAtI2luY2x1ZGUgImludGVsX2VuZ2lu ZS5oIgo+IC0jaW5jbHVkZSAiaW50ZWxfZ3QuaCIKPiAtI2luY2x1ZGUgImludGVsX3Jlc2V0Lmgi Cj4gLQo+IC1zdHJ1Y3QgaGFuZ2NoZWNrIHsKPiAtCXU2NCBhY3RoZDsKPiAtCXUzMiByaW5nOwo+ IC0JdTMyIGhlYWQ7Cj4gLQllbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uIGFjdGlv bjsKPiAtCXVuc2lnbmVkIGxvbmcgYWN0aW9uX3RpbWVzdGFtcDsKPiAtCWludCBkZWFkbG9jazsK PiAtCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKPiAtCWJvb2wgd2VkZ2VkOjE7Cj4g LQlib29sIHN0YWxsZWQ6MTsKPiAtfTsKPiAtCj4gLXN0YXRpYyBib29sIGluc3Rkb25lX3VuY2hh bmdlZCh1MzIgY3VycmVudF9pbnN0ZG9uZSwgdTMyICpvbGRfaW5zdGRvbmUpCj4gLXsKPiAtCXUz MiB0bXAgPSBjdXJyZW50X2luc3Rkb25lIHwgKm9sZF9pbnN0ZG9uZTsKPiAtCWJvb2wgdW5jaGFu Z2VkOwo+IC0KPiAtCXVuY2hhbmdlZCA9IHRtcCA9PSAqb2xkX2luc3Rkb25lOwo+IC0JKm9sZF9p bnN0ZG9uZSB8PSB0bXA7Cj4gLQo+IC0JcmV0dXJuIHVuY2hhbmdlZDsKPiAtfQo+IC0KPiAtc3Rh dGljIGJvb2wgc3VidW5pdHNfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7 Cj4gLQljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2 X3ByaXYpLT5zc2V1Owo+IC0Jc3RydWN0IGludGVsX2luc3Rkb25lIGluc3Rkb25lOwo+IC0Jc3Ry dWN0IGludGVsX2luc3Rkb25lICphY2N1X2luc3Rkb25lID0gJmVuZ2luZS0+aGFuZ2NoZWNrLmlu c3Rkb25lOwo+IC0JYm9vbCBzdHVjazsKPiAtCWludCBzbGljZTsKPiAtCWludCBzdWJzbGljZTsK PiAtCj4gLQlpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKGVuZ2luZSwgJmluc3Rkb25lKTsKPiAt Cj4gLQkvKiBUaGVyZSBtaWdodCBiZSB1bnN0YWJsZSBzdWJ1bml0IHN0YXRlcyBldmVuIHdoZW4K PiAtCSAqIGFjdHVhbCBoZWFkIGlzIG5vdCBtb3ZpbmcuIEZpbHRlciBvdXQgdGhlIHVuc3RhYmxl IG9uZXMgYnkKPiAtCSAqIGFjY3VtdWxhdGluZyB0aGUgdW5kb25lIC0+IGRvbmUgdHJhbnNpdGlv bnMgYW5kIG9ubHkKPiAtCSAqIGNvbnNpZGVyIHRob3NlIGFzIHByb2dyZXNzLgo+IC0JICovCj4g LQlzdHVjayA9IGluc3Rkb25lX3VuY2hhbmdlZChpbnN0ZG9uZS5pbnN0ZG9uZSwKPiAtCQkJCSAg ICZhY2N1X2luc3Rkb25lLT5pbnN0ZG9uZSk7Cj4gLQlzdHVjayAmPSBpbnN0ZG9uZV91bmNoYW5n ZWQoaW5zdGRvbmUuc2xpY2VfY29tbW9uLAo+IC0JCQkJICAgICZhY2N1X2luc3Rkb25lLT5zbGlj ZV9jb21tb24pOwo+IC0KPiAtCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9w cml2LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpIHsKPiAtCQlzdHVjayAmPSBpbnN0ZG9uZV91bmNo YW5nZWQoaW5zdGRvbmUuc2FtcGxlcltzbGljZV1bc3Vic2xpY2VdLAo+IC0JCQkJCSAgICAmYWNj dV9pbnN0ZG9uZS0+c2FtcGxlcltzbGljZV1bc3Vic2xpY2VdKTsKPiAtCQlzdHVjayAmPSBpbnN0 ZG9uZV91bmNoYW5nZWQoaW5zdGRvbmUucm93W3NsaWNlXVtzdWJzbGljZV0sCj4gLQkJCQkJICAg ICZhY2N1X2luc3Rkb25lLT5yb3dbc2xpY2VdW3N1YnNsaWNlXSk7Cj4gLQl9Cj4gLQo+IC0JcmV0 dXJuIHN0dWNrOwo+IC19Cj4gLQo+IC1zdGF0aWMgZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNr X2FjdGlvbgo+IC1oZWFkX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0 IGFjdGhkKQo+IC17Cj4gLQlpZiAoYWN0aGQgIT0gZW5naW5lLT5oYW5nY2hlY2suYWN0aGQpIHsK PiAtCj4gLQkJLyogQ2xlYXIgc3VidW5pdCBzdGF0ZXMgb24gaGVhZCBtb3ZlbWVudCAqLwo+IC0J CW1lbXNldCgmZW5naW5lLT5oYW5nY2hlY2suaW5zdGRvbmUsIDAsCj4gLQkJICAgICAgIHNpemVv ZihlbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9uZSkpOwo+IC0KPiAtCQlyZXR1cm4gRU5HSU5FX0FD VElWRV9IRUFEOwo+IC0JfQo+IC0KPiAtCWlmICghc3VidW5pdHNfc3R1Y2soZW5naW5lKSkKPiAt CQlyZXR1cm4gRU5HSU5FX0FDVElWRV9TVUJVTklUUzsKPiAtCj4gLQlyZXR1cm4gRU5HSU5FX0RF QUQ7Cj4gLX0KPiAtCj4gLXN0YXRpYyBlbnVtIGludGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9u Cj4gLWVuZ2luZV9zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHU2NCBhY3Ro ZCkKPiAtewo+IC0JZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrX2FjdGlvbiBoYTsKPiAtCXUz MiB0bXA7Cj4gLQo+IC0JaGEgPSBoZWFkX3N0dWNrKGVuZ2luZSwgYWN0aGQpOwo+IC0JaWYgKGhh ICE9IEVOR0lORV9ERUFEKQo+IC0JCXJldHVybiBoYTsKPiAtCj4gLQlpZiAoSVNfR0VOKGVuZ2lu ZS0+aTkxNSwgMikpCj4gLQkJcmV0dXJuIEVOR0lORV9ERUFEOwo+IC0KPiAtCS8qIElzIHRoZSBj aGlwIGhhbmdpbmcgb24gYSBXQUlUX0ZPUl9FVkVOVD8KPiAtCSAqIElmIHNvIHdlIGNhbiBzaW1w bHkgcG9rZSB0aGUgUkJfV0FJVCBiaXQKPiAtCSAqIGFuZCBicmVhayB0aGUgaGFuZy4gVGhpcyBz aG91bGQgd29yayBvbgo+IC0JICogYWxsIGJ1dCB0aGUgc2Vjb25kIGdlbmVyYXRpb24gY2hpcHNl dHMuCj4gLQkgKi8KPiAtCXRtcCA9IEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19DVEwpOwo+IC0J aWYgKHRtcCAmIFJJTkdfV0FJVCkgewo+IC0JCWludGVsX2d0X2hhbmRsZV9lcnJvcihlbmdpbmUt Pmd0LCBlbmdpbmUtPm1hc2ssIDAsCj4gLQkJCQkgICAgICAic3R1Y2sgd2FpdCBvbiAlcyIsIGVu Z2luZS0+bmFtZSk7Cj4gLQkJRU5HSU5FX1dSSVRFKGVuZ2luZSwgUklOR19DVEwsIHRtcCk7Cj4g LQkJcmV0dXJuIEVOR0lORV9XQUlUX0tJQ0s7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIEVOR0lORV9E RUFEOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBoYW5nY2hlY2tfbG9hZF9zYW1wbGUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IC0JCQkJICBzdHJ1Y3QgaGFuZ2NoZWNrICpoYykK PiAtewo+IC0JaGMtPmFjdGhkID0gaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChlbmdpbmUp Owo+IC0JaGMtPnJpbmcgPSBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfU1RBUlQpOwo+IC0JaGMt PmhlYWQgPSBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfSEVBRCk7Cj4gLX0KPiAtCj4gLXN0YXRp YyB2b2lkIGhhbmdjaGVja19zdG9yZV9zYW1wbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+IC0JCQkJICAgY29uc3Qgc3RydWN0IGhhbmdjaGVjayAqaGMpCj4gLXsKPiAtCWVuZ2lu ZS0+aGFuZ2NoZWNrLmFjdGhkID0gaGMtPmFjdGhkOwo+IC0JZW5naW5lLT5oYW5nY2hlY2subGFz dF9yaW5nID0gaGMtPnJpbmc7Cj4gLQllbmdpbmUtPmhhbmdjaGVjay5sYXN0X2hlYWQgPSBoYy0+ aGVhZDsKPiAtfQo+IC0KPiAtc3RhdGljIGVudW0gaW50ZWxfZW5naW5lX2hhbmdjaGVja19hY3Rp b24KPiAtaGFuZ2NoZWNrX2dldF9hY3Rpb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAo+IC0JCSAgICAgY29uc3Qgc3RydWN0IGhhbmdjaGVjayAqaGMpCj4gLXsKPiAtCWlmIChpbnRl bF9lbmdpbmVfaXNfaWRsZShlbmdpbmUpKQo+IC0JCXJldHVybiBFTkdJTkVfSURMRTsKPiAtCj4g LQlpZiAoZW5naW5lLT5oYW5nY2hlY2subGFzdF9yaW5nICE9IGhjLT5yaW5nKQo+IC0JCXJldHVy biBFTkdJTkVfQUNUSVZFX1NFUU5POwo+IC0KPiAtCWlmIChlbmdpbmUtPmhhbmdjaGVjay5sYXN0 X2hlYWQgIT0gaGMtPmhlYWQpCj4gLQkJcmV0dXJuIEVOR0lORV9BQ1RJVkVfU0VRTk87Cj4gLQo+ IC0JcmV0dXJuIGVuZ2luZV9zdHVjayhlbmdpbmUsIGhjLT5hY3RoZCk7Cj4gLX0KPiAtCj4gLXN0 YXRpYyB2b2lkIGhhbmdjaGVja19hY2N1bXVsYXRlX3NhbXBsZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCj4gLQkJCQkJc3RydWN0IGhhbmdjaGVjayAqaGMpCj4gLXsKPiAtCXVuc2ln bmVkIGxvbmcgdGltZW91dCA9IEk5MTVfRU5HSU5FX0RFQURfVElNRU9VVDsKPiAtCj4gLQloYy0+ YWN0aW9uID0gaGFuZ2NoZWNrX2dldF9hY3Rpb24oZW5naW5lLCBoYyk7Cj4gLQo+IC0JLyogV2Ug YWx3YXlzIGluY3JlbWVudCB0aGUgcHJvZ3Jlc3MKPiAtCSAqIGlmIHRoZSBlbmdpbmUgaXMgYnVz eSBhbmQgc3RpbGwgcHJvY2Vzc2luZwo+IC0JICogdGhlIHNhbWUgcmVxdWVzdCwgc28gdGhhdCBu byBzaW5nbGUgcmVxdWVzdAo+IC0JICogY2FuIHJ1biBpbmRlZmluaXRlbHkgKHN1Y2ggYXMgYSBj aGFpbiBvZgo+IC0JICogYmF0Y2hlcykuIFRoZSBvbmx5IHRpbWUgd2UgZG8gbm90IGluY3JlbWVu dAo+IC0JICogdGhlIGhhbmdjaGVjayBzY29yZSBvbiB0aGlzIHJpbmcsIGlmIHRoaXMKPiAtCSAq IGVuZ2luZSBpcyBpbiBhIGxlZ2l0aW1hdGUgd2FpdCBmb3IgYW5vdGhlcgo+IC0JICogZW5naW5l LiBJbiB0aGF0IGNhc2UgdGhlIHdhaXRpbmcgZW5naW5lIGlzIGEKPiAtCSAqIHZpY3RpbSBhbmQg d2Ugd2FudCB0byBiZSBzdXJlIHdlIGNhdGNoIHRoZQo+IC0JICogcmlnaHQgY3VscHJpdC4gVGhl biBldmVyeSB0aW1lIHdlIGRvIGtpY2sKPiAtCSAqIHRoZSByaW5nLCBtYWtlIGl0IGFzIGEgcHJv Z3Jlc3MgYXMgdGhlIHNlcW5vCj4gLQkgKiBhZHZhbmNlbWVudCBtaWdodCBlbnN1cmUgYW5kIGlm IG5vdCwgaXQKPiAtCSAqIHdpbGwgY2F0Y2ggdGhlIGhhbmdpbmcgZW5naW5lLgo+IC0JICovCj4g LQo+IC0Jc3dpdGNoIChoYy0+YWN0aW9uKSB7Cj4gLQljYXNlIEVOR0lORV9JRExFOgo+IC0JY2Fz ZSBFTkdJTkVfQUNUSVZFX1NFUU5POgo+IC0JCS8qIENsZWFyIGhlYWQgYW5kIHN1YnVuaXQgc3Rh dGVzIG9uIHNlcW5vIG1vdmVtZW50ICovCj4gLQkJaGMtPmFjdGhkID0gMDsKPiAtCj4gLQkJbWVt c2V0KCZlbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9uZSwgMCwKPiAtCQkgICAgICAgc2l6ZW9mKGVu Z2luZS0+aGFuZ2NoZWNrLmluc3Rkb25lKSk7Cj4gLQo+IC0JCS8qIEludGVudGlvbmFsIGZhbGwg dGhyb3VnaCAqLwo+IC0JY2FzZSBFTkdJTkVfV0FJVF9LSUNLOgo+IC0JY2FzZSBFTkdJTkVfV0FJ VDoKPiAtCQllbmdpbmUtPmhhbmdjaGVjay5hY3Rpb25fdGltZXN0YW1wID0gamlmZmllczsKPiAt CQlicmVhazsKPiAtCj4gLQljYXNlIEVOR0lORV9BQ1RJVkVfSEVBRDoKPiAtCWNhc2UgRU5HSU5F X0FDVElWRV9TVUJVTklUUzoKPiAtCQkvKgo+IC0JCSAqIFNlcW5vIHN0dWNrIHdpdGggc3RpbGwg YWN0aXZlIGVuZ2luZSBnZXRzIGxlZXdheSwKPiAtCQkgKiBpbiBob3BlcyB0aGF0IGl0IGlzIGp1 c3QgYSBsb25nIHNoYWRlci4KPiAtCQkgKi8KPiAtCQl0aW1lb3V0ID0gSTkxNV9TRVFOT19ERUFE X1RJTUVPVVQ7Cj4gLQkJYnJlYWs7Cj4gLQo+IC0JY2FzZSBFTkdJTkVfREVBRDoKPiAtCQlicmVh azsKPiAtCj4gLQlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdfQ0FTRShoYy0+YWN0aW9uKTsKPiAtCX0K PiAtCj4gLQloYy0+c3RhbGxlZCA9IHRpbWVfYWZ0ZXIoamlmZmllcywKPiAtCQkJCSBlbmdpbmUt PmhhbmdjaGVjay5hY3Rpb25fdGltZXN0YW1wICsgdGltZW91dCk7Cj4gLQloYy0+d2VkZ2VkID0g dGltZV9hZnRlcihqaWZmaWVzLAo+IC0JCQkJIGVuZ2luZS0+aGFuZ2NoZWNrLmFjdGlvbl90aW1l c3RhbXAgKwo+IC0JCQkJIEk5MTVfRU5HSU5FX1dFREdFRF9USU1FT1VUKTsKPiAtfQo+IC0KPiAt c3RhdGljIHZvaWQgaGFuZ2NoZWNrX2RlY2xhcmVfaGFuZyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAo+ IC0JCQkJICAgaW50ZWxfZW5naW5lX21hc2tfdCBodW5nLAo+IC0JCQkJICAgaW50ZWxfZW5naW5l X21hc2tfdCBzdHVjaykKPiAtewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ IC0JaW50ZWxfZW5naW5lX21hc2tfdCB0bXA7Cj4gLQljaGFyIG1zZ1s4MF07Cj4gLQlpbnQgbGVu Owo+IC0KPiAtCS8qIElmIHNvbWUgcmluZ3MgaHVuZyBidXQgb3RoZXJzIHdlcmUgc3RpbGwgYnVz eSwgb25seQo+IC0JICogYmxhbWUgdGhlIGhhbmdpbmcgcmluZ3MgaW4gdGhlIHN5bm9wc2lzLgo+ IC0JICovCj4gLQlpZiAoc3R1Y2sgIT0gaHVuZykKPiAtCQlodW5nICY9IH5zdHVjazsKPiAtCWxl biA9IHNjbnByaW50Zihtc2csIHNpemVvZihtc2cpLAo+IC0JCQkiJXMgb24gIiwgc3R1Y2sgPT0g aHVuZyA/ICJubyBwcm9ncmVzcyIgOiAiaGFuZyIpOwo+IC0JZm9yX2VhY2hfZW5naW5lX21hc2tl ZChlbmdpbmUsIGd0LT5pOTE1LCBodW5nLCB0bXApCj4gLQkJbGVuICs9IHNjbnByaW50Zihtc2cg KyBsZW4sIHNpemVvZihtc2cpIC0gbGVuLAo+IC0JCQkJICIlcywgIiwgZW5naW5lLT5uYW1lKTsK PiAtCW1zZ1tsZW4tMl0gPSAnXDAnOwo+IC0KPiAtCXJldHVybiBpbnRlbF9ndF9oYW5kbGVfZXJy b3IoZ3QsIGh1bmcsIEk5MTVfRVJST1JfQ0FQVFVSRSwgIiVzIiwgbXNnKTsKPiAtfQo+IC0KPiAt LyoKPiAtICogVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgY2hpcCBoYXNuJ3QgcmVwb3J0ZWQgYmFj ayB3aXRoIGNvbXBsZXRlZAo+IC0gKiBiYXRjaGJ1ZmZlcnMgaW4gYSBsb25nIHRpbWUuIFdlIGtl ZXAgdHJhY2sgcGVyIHJpbmcgc2Vxbm8gcHJvZ3Jlc3MgYW5kCj4gLSAqIGlmIHRoZXJlIGFyZSBu byBwcm9ncmVzcywgaGFuZ2NoZWNrIHNjb3JlIGZvciB0aGF0IHJpbmcgaXMgaW5jcmVhc2VkLgo+ IC0gKiBGdXJ0aGVyLCBhY3RoZCBpcyBpbnNwZWN0ZWQgdG8gc2VlIGlmIHRoZSByaW5nIGlzIHN0 dWNrLiBPbiBzdHVjayBjYXNlCj4gLSAqIHdlIGtpY2sgdGhlIHJpbmcuIElmIHdlIHNlZSBubyBw cm9ncmVzcyBvbiB0aHJlZSBzdWJzZXF1ZW50IGNhbGxzCj4gLSAqIHdlIGFzc3VtZSBjaGlwIGlz IHdlZGdlZCBhbmQgdHJ5IHRvIGZpeCBpdCBieSByZXNldHRpbmcgdGhlIGNoaXAuCj4gLSAqLwo+ IC1zdGF0aWMgdm9pZCBoYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp Cj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPQo+IC0JCWNvbnRhaW5lcl9vZih3b3JrLCB0 eXBlb2YoKmd0KSwgaGFuZ2NoZWNrLndvcmsud29yayk7Cj4gLQlpbnRlbF9lbmdpbmVfbWFza190 IGh1bmcgPSAwLCBzdHVjayA9IDAsIHdlZGdlZCA9IDA7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7Cj4gLQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAtCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwo+IC0KPiAtCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdjaGVj aykKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaWYgKCFSRUFEX09OQ0UoZ3QtPmF3YWtlKSkKPiAtCQly ZXR1cm47Cj4gLQo+IC0JaWYgKGludGVsX2d0X2lzX3dlZGdlZChndCkpCj4gLQkJcmV0dXJuOwo+ IC0KPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZ3QtPnVuY29y ZS0+cnBtKTsKPiAtCWlmICghd2FrZXJlZikKPiAtCQlyZXR1cm47Cj4gLQo+IC0JLyogQXMgZW5h YmxpbmcgdGhlIEdQVSByZXF1aXJlcyBmYWlybHkgZXh0ZW5zaXZlIG1taW8gYWNjZXNzLAo+IC0J ICogcGVyaW9kaWNhbGx5IGFybSB0aGUgbW1pbyBjaGVja2VyIHRvIHNlZSBpZiB3ZSBhcmUgdHJp Z2dlcmluZwo+IC0JICogYW55IGludmFsaWQgYWNjZXNzLgo+IC0JICovCj4gLQlpbnRlbF91bmNv cmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbihndC0+dW5jb3JlKTsKPiAtCj4gLQlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBndC0+aTkxNSwgaWQpIHsKPiAtCQlzdHJ1Y3QgaGFuZ2NoZWNr IGhjOwo+IC0KPiAtCQlpbnRlbF9lbmdpbmVfYnJlYWRjcnVtYnNfaXJxKGVuZ2luZSk7Cj4gLQo+ IC0JCWhhbmdjaGVja19sb2FkX3NhbXBsZShlbmdpbmUsICZoYyk7Cj4gLQkJaGFuZ2NoZWNrX2Fj Y3VtdWxhdGVfc2FtcGxlKGVuZ2luZSwgJmhjKTsKPiAtCQloYW5nY2hlY2tfc3RvcmVfc2FtcGxl KGVuZ2luZSwgJmhjKTsKPiAtCj4gLQkJaWYgKGhjLnN0YWxsZWQpIHsKPiAtCQkJaHVuZyB8PSBl bmdpbmUtPm1hc2s7Cj4gLQkJCWlmIChoYy5hY3Rpb24gIT0gRU5HSU5FX0RFQUQpCj4gLQkJCQlz dHVjayB8PSBlbmdpbmUtPm1hc2s7Cj4gLQkJfQo+IC0KPiAtCQlpZiAoaGMud2VkZ2VkKQo+IC0J CQl3ZWRnZWQgfD0gZW5naW5lLT5tYXNrOwo+IC0JfQo+IC0KPiAtCWlmIChHRU1fU0hPV19ERUJV RygpICYmIChodW5nIHwgc3R1Y2spKSB7Cj4gLQkJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1f ZGVidWdfcHJpbnRlcigiaGFuZ2NoZWNrIik7Cj4gLQo+IC0JCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGd0LT5pOTE1LCBpZCkgewo+IC0JCQlpZiAoaW50ZWxfZW5naW5lX2lzX2lkbGUoZW5naW5l KSkKPiAtCQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkJaW50ZWxfZW5naW5lX2R1bXAoZW5naW5lLCAm cCwgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+IC0JCX0KPiAtCX0KPiAtCj4gLQlpZiAod2VkZ2Vk KSB7Cj4gLQkJZGV2X2VycihndC0+aTkxNS0+ZHJtLmRldiwKPiAtCQkJIkdQVSByZWNvdmVyeSB0 aW1lZCBvdXQsIgo+IC0JCQkiIGNhbmNlbGxpbmcgYWxsIGluLWZsaWdodCByZW5kZXJpbmcuXG4i KTsKPiAtCQlHRU1fVFJBQ0VfRFVNUCgpOwo+IC0JCWludGVsX2d0X3NldF93ZWRnZWQoZ3QpOwo+ IC0JfQo+IC0KPiAtCWlmIChodW5nKQo+IC0JCWhhbmdjaGVja19kZWNsYXJlX2hhbmcoZ3QsIGh1 bmcsIHN0dWNrKTsKPiAtCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChndC0+dW5jb3JlLT5ycG0s IHdha2VyZWYpOwo+IC0KPiAtCS8qIFJlc2V0IHRpbWVyIGluIGNhc2UgR1BVIGhhbmdzIHdpdGhv dXQgYW5vdGhlciByZXF1ZXN0IGJlaW5nIGFkZGVkICovCj4gLQlpbnRlbF9ndF9xdWV1ZV9oYW5n Y2hlY2soZ3QpOwo+IC19Cj4gLQo+IC12b2lkIGludGVsX2d0X3F1ZXVlX2hhbmdjaGVjayhzdHJ1 Y3QgaW50ZWxfZ3QgKmd0KQo+IC17Cj4gLQl1bnNpZ25lZCBsb25nIGRlbGF5Owo+IC0KPiAtCWlm ICh1bmxpa2VseSghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdjaGVjaykpCj4gLQkJcmV0dXJu Owo+IC0KPiAtCS8qCj4gLQkgKiBEb24ndCBjb250aW51YWxseSBkZWZlciB0aGUgaGFuZ2NoZWNr IHNvIHRoYXQgaXQgaXMgYWx3YXlzIHJ1biBhdAo+IC0JICogbGVhc3Qgb25jZSBhZnRlciB3b3Jr IGhhcyBiZWVuIHNjaGVkdWxlZCBvbiBhbnkgcmluZy4gT3RoZXJ3aXNlLAo+IC0JICogd2Ugd2ls bCBpZ25vcmUgYSBodW5nIHJpbmcgaWYgYSBzZWNvbmQgcmluZyBpcyBrZXB0IGJ1c3kuCj4gLQkg Ki8KPiAtCj4gLQlkZWxheSA9IHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoRFJNX0k5MTVfSEFO R0NIRUNLX0pJRkZJRVMpOwo+IC0JcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCAm Z3QtPmhhbmdjaGVjay53b3JrLCBkZWxheSk7Cj4gLX0KPiAtCj4gLXZvaWQgaW50ZWxfZW5naW5l X2luaXRfaGFuZ2NoZWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAtewo+IC0J bWVtc2V0KCZlbmdpbmUtPmhhbmdjaGVjaywgMCwgc2l6ZW9mKGVuZ2luZS0+aGFuZ2NoZWNrKSk7 Cj4gLQllbmdpbmUtPmhhbmdjaGVjay5hY3Rpb25fdGltZXN0YW1wID0gamlmZmllczsKPiAtfQo+ IC0KPiAtdm9pZCBpbnRlbF9ndF9pbml0X2hhbmdjaGVjayhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ IC17Cj4gLQlJTklUX0RFTEFZRURfV09SSygmZ3QtPmhhbmdjaGVjay53b3JrLCBoYW5nY2hlY2tf ZWxhcHNlZCk7Cj4gLX0KPiAtCj4gLSNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxG VEVTVCkKPiAtI2luY2x1ZGUgInNlbGZ0ZXN0X2hhbmdjaGVjay5jIgo+IC0jZW5kaWYKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKPiBpbmRleCA3NzQ0NWQxMDBjYTguLjlkNjQ1 MWY5YTg1NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNl dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwo+IEBAIC0x MDI0LDggKzEwMjQsNiBAQCB2b2lkIGludGVsX2d0X3Jlc2V0KHN0cnVjdCBpbnRlbF9ndCAqZ3Qs Cj4gICAJaWYgKHJldCkKPiAgIAkJZ290byB0YWludDsKPiAgIAo+IC0JaW50ZWxfZ3RfcXVldWVf aGFuZ2NoZWNrKGd0KTsKPiAtCj4gICBmaW5pc2g6Cj4gICAJcmVzZXRfZmluaXNoKGd0LCBhd2Fr ZSk7Cj4gICB1bmxvY2s6Cj4gQEAgLTEzNTMsNCArMTM1MSw1IEBAIHZvaWQgX19pbnRlbF9maW5p X3dlZGdlKHN0cnVjdCBpbnRlbF93ZWRnZV9tZSAqdykKPiAgIAo+ICAgI2lmIElTX0VOQUJMRUQo Q09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQo+ICAgI2luY2x1ZGUgInNlbGZ0ZXN0X3Jlc2V0LmMi Cj4gKyNpbmNsdWRlICJzZWxmdGVzdF9oYW5nY2hlY2suYyIKPiAgICNlbmRpZgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCj4gaW5kZXggNTY5YTQxMDVk NDllLi41NzA1NDZlZGE1ZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9oYW5nY2hlY2suYwo+IEBAIC0xNjg2LDcgKzE2ODYsNiBAQCBpbnQgaW50ZWxfaGFuZ2No ZWNrX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCX07 Cj4gICAJc3RydWN0IGludGVsX2d0ICpndCA9ICZpOTE1LT5ndDsKPiAgIAlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZjsKPiAtCWJvb2wgc2F2ZWRfaGFuZ2NoZWNrOwo+ICAgCWludCBlcnI7Cj4gICAK PiAgIAlpZiAoIWludGVsX2hhc19ncHVfcmVzZXQoZ3QpKQo+IEBAIC0xNjk2LDEyICsxNjk1LDkg QEAgaW50IGludGVsX2hhbmdjaGVja19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAgIAkJcmV0dXJuIC1FSU87IC8qIHdlJ3JlIGxvbmcgcGFzdCBob3BlIG9m IGEgc3VjY2Vzc2Z1bCByZXNldCAqLwo+ICAgCj4gICAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGd0LT51bmNvcmUtPnJwbSk7Cj4gLQlzYXZlZF9oYW5nY2hlY2sgPSBmZXRjaF9hbmRf emVybygmaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdjaGVjayk7Cj4gLQlkcmFpbl9kZWxheWVk X3dvcmsoJmd0LT5oYW5nY2hlY2sud29yayk7IC8qIGZsdXNoIHBhcmFtICovCj4gICAKPiAgIAll cnIgPSBpbnRlbF9ndF9saXZlX3N1YnRlc3RzKHRlc3RzLCBndCk7Cj4gICAKPiAtCWk5MTVfbW9k cGFyYW1zLmVuYWJsZV9oYW5nY2hlY2sgPSBzYXZlZF9oYW5nY2hlY2s7Cj4gICAJaW50ZWxfcnVu dGltZV9wbV9wdXQoZ3QtPnVuY29yZS0+cnBtLCB3YWtlcmVmKTsKPiAgIAo+ICAgCXJldHVybiBl cnI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBhNTQxYjZhZTUzNGYu LjJmYWU2ZTU5MmIwOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAg LTEwMTEsOTIgKzEwMTEsNiBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+ IC1zdGF0aWMgdm9pZCBpOTE1X2luc3Rkb25lX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+IC0JCQkgICAgICAgc3RydWN0IHNlcV9maWxlICptLAo+IC0JCQkgICAgICAg c3RydWN0IGludGVsX2luc3Rkb25lICppbnN0ZG9uZSkKPiAtewo+IC0JY29uc3Qgc3RydWN0IHNz ZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKPiAtCWlu dCBzbGljZTsKPiAtCWludCBzdWJzbGljZTsKPiAtCj4gLQlzZXFfcHJpbnRmKG0sICJcdFx0SU5T VERPTkU6IDB4JTA4eFxuIiwKPiAtCQkgICBpbnN0ZG9uZS0+aW5zdGRvbmUpOwo+IC0KPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDMpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCXNlcV9wcmlu dGYobSwgIlx0XHRTQ19JTlNURE9ORTogMHglMDh4XG4iLAo+IC0JCSAgIGluc3Rkb25lLT5zbGlj ZV9jb21tb24pOwo+IC0KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDYpCj4gLQkJcmV0 dXJuOwo+IC0KPiAtCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBz c2V1LCBzbGljZSwgc3Vic2xpY2UpCj4gLQkJc2VxX3ByaW50ZihtLCAiXHRcdFNBTVBMRVJfSU5T VERPTkVbJWRdWyVkXTogMHglMDh4XG4iLAo+IC0JCQkgICBzbGljZSwgc3Vic2xpY2UsIGluc3Rk b25lLT5zYW1wbGVyW3NsaWNlXVtzdWJzbGljZV0pOwo+IC0KPiAtCWZvcl9lYWNoX2luc3Rkb25l X3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpCj4gLQkJc2Vx X3ByaW50ZihtLCAiXHRcdFJPV19JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCj4gLQkJCSAg IHNsaWNlLCBzdWJzbGljZSwgaW5zdGRvbmUtPnJvd1tzbGljZV1bc3Vic2xpY2VdKTsKPiAtfQo+ IC0KPiAtc3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG5v ZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiAtCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSAmaTkxNS0+ Z3Q7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZjsKPiAtCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IC0KPiAtCXNlcV9wcmlu dGYobSwgIlJlc2V0IGZsYWdzOiAlbHhcbiIsIGd0LT5yZXNldC5mbGFncyk7Cj4gLQlpZiAodGVz dF9iaXQoSTkxNV9XRURHRUQsICZndC0+cmVzZXQuZmxhZ3MpKQo+IC0JCXNlcV9wdXRzKG0sICJc dFdlZGdlZFxuIik7Cj4gLQlpZiAodGVzdF9iaXQoSTkxNV9SRVNFVF9CQUNLT0ZGLCAmZ3QtPnJl c2V0LmZsYWdzKSkKPiAtCQlzZXFfcHV0cyhtLCAiXHREZXZpY2UgKGdsb2JhbCkgcmVzZXQgaW4g cHJvZ3Jlc3NcbiIpOwo+IC0KPiAtCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdjaGVj aykgewo+IC0JCXNlcV9wdXRzKG0sICJIYW5nY2hlY2sgZGlzYWJsZWRcbiIpOwo+IC0JCXJldHVy biAwOwo+IC0JfQo+IC0KPiAtCWlmICh0aW1lcl9wZW5kaW5nKCZndC0+aGFuZ2NoZWNrLndvcmsu dGltZXIpKQo+IC0JCXNlcV9wcmludGYobSwgIkhhbmdjaGVjayBhY3RpdmUsIHRpbWVyIGZpcmVz IGluICVkbXNcbiIsCj4gLQkJCSAgIGppZmZpZXNfdG9fbXNlY3MoZ3QtPmhhbmdjaGVjay53b3Jr LnRpbWVyLmV4cGlyZXMgLQo+IC0JCQkJCSAgICBqaWZmaWVzKSk7Cj4gLQllbHNlIGlmIChkZWxh eWVkX3dvcmtfcGVuZGluZygmZ3QtPmhhbmdjaGVjay53b3JrKSkKPiAtCQlzZXFfcHV0cyhtLCAi SGFuZ2NoZWNrIGFjdGl2ZSwgd29yayBwZW5kaW5nXG4iKTsKPiAtCWVsc2UKPiAtCQlzZXFfcHV0 cyhtLCAiSGFuZ2NoZWNrIGluYWN0aXZlXG4iKTsKPiAtCj4gLQlzZXFfcHJpbnRmKG0sICJHVCBh Y3RpdmU/ICVzXG4iLCB5ZXNubyhndC0+YXdha2UpKTsKPiAtCj4gLQl3aXRoX2ludGVsX3J1bnRp bWVfcG0oJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpIHsKPiAtCQlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBpOTE1LCBpZCkgewo+IC0JCQlzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgaW5zdGRvbmU7 Cj4gLQo+IC0JCQlzZXFfcHJpbnRmKG0sICIlczogJWQgbXMgYWdvXG4iLAo+IC0JCQkJICAgZW5n aW5lLT5uYW1lLAo+IC0JCQkJICAgamlmZmllc190b19tc2VjcyhqaWZmaWVzIC0KPiAtCQkJCQkJ ICAgIGVuZ2luZS0+aGFuZ2NoZWNrLmFjdGlvbl90aW1lc3RhbXApKTsKPiAtCj4gLQkJCXNlcV9w cmludGYobSwgIlx0QUNUSEQgPSAweCUwOGxseCBbY3VycmVudCAweCUwOGxseF1cbiIsCj4gLQkJ CQkgICAobG9uZyBsb25nKWVuZ2luZS0+aGFuZ2NoZWNrLmFjdGhkLAo+IC0JCQkJICAgaW50ZWxf ZW5naW5lX2dldF9hY3RpdmVfaGVhZChlbmdpbmUpKTsKPiAtCj4gLQkJCWludGVsX2VuZ2luZV9n ZXRfaW5zdGRvbmUoZW5naW5lLCAmaW5zdGRvbmUpOwo+IC0KPiAtCQkJc2VxX3B1dHMobSwgIlx0 aW5zdGRvbmUgcmVhZCA9XG4iKTsKPiAtCQkJaTkxNV9pbnN0ZG9uZV9pbmZvKGk5MTUsIG0sICZp bnN0ZG9uZSk7Cj4gLQo+IC0JCQlzZXFfcHV0cyhtLCAiXHRpbnN0ZG9uZSBhY2N1ID1cbiIpOwo+ IC0JCQlpOTE1X2luc3Rkb25lX2luZm8oaTkxNSwgbSwKPiAtCQkJCQkgICAmZW5naW5lLT5oYW5n Y2hlY2suaW5zdGRvbmUpOwo+IC0JCX0KPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0K PiAgIHN0YXRpYyBpbnQgaXJvbmxha2VfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAg IHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG5vZGVfdG9faTkxNShtLT5w cml2YXRlKTsKPiBAQCAtNDMzOSw3ICs0MjUzLDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f aW5mb19saXN0IGk5MTVfZGVidWdmc19saXN0W10gPSB7Cj4gICAJeyJpOTE1X2d1Y19zdGFnZV9w b29sIiwgaTkxNV9ndWNfc3RhZ2VfcG9vbCwgMH0sCj4gICAJeyJpOTE1X2h1Y19sb2FkX3N0YXR1 cyIsIGk5MTVfaHVjX2xvYWRfc3RhdHVzX2luZm8sIDB9LAo+ICAgCXsiaTkxNV9mcmVxdWVuY3lf aW5mbyIsIGk5MTVfZnJlcXVlbmN5X2luZm8sIDB9LAo+IC0JeyJpOTE1X2hhbmdjaGVja19pbmZv IiwgaTkxNV9oYW5nY2hlY2tfaW5mbywgMH0sCj4gICAJeyJpOTE1X2RycGNfaW5mbyIsIGk5MTVf ZHJwY19pbmZvLCAwfSwKPiAgIAl7Imk5MTVfcmluZ19mcmVxX3RhYmxlIiwgaTkxNV9yaW5nX2Zy ZXFfdGFibGUsIDB9LAo+ICAgCXsiaTkxNV9mcm9udGJ1ZmZlcl90cmFja2luZyIsIGk5MTVfZnJv bnRidWZmZXJfdHJhY2tpbmcsIDB9LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IGYw MmEzNDcyMjIxNy4uMWRhZTQzZWQ0YzQ4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g QEAgLTE1NDYsMTAgKzE1NDYsNyBAQCB2b2lkIGk5MTVfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAo+ICAgCWk5MTVfZHJpdmVyX21vZGVzZXRfcmVtb3Zl KGk5MTUpOwo+ICAgCj4gLQkvKiBGcmVlIGVycm9yIHN0YXRlIGFmdGVyIGludGVycnVwdHMgYXJl IGZ1bGx5IGRpc2FibGVkLiAqLwo+IC0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5n dC5oYW5nY2hlY2sud29yayk7Cj4gICAJaTkxNV9yZXNldF9lcnJvcl9zdGF0ZShpOTE1KTsKPiAt Cj4gICAJaTkxNV9nZW1fZHJpdmVyX3JlbW92ZShpOTE1KTsKPiAgIAo+ICAgCWludGVsX3Bvd2Vy X2RvbWFpbnNfZHJpdmVyX3JlbW92ZShpOTE1KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBp bmRleCBjNDZiMzM5MDY0YzAuLjE5ZjViMDYwOGE1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IEBAIC0xODQ3LDcgKzE4NDcsNiBAQCB2b2lkIGk5MTVfZHJpdmVyX3JlbW92ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICBpbnQgaTkxNV9yZXN1bWVfc3dpdGNoZXJv byhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICBpbnQgaTkxNV9zdXNwZW5kX3N3 aXRjaGVyb28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHBtX21lc3NhZ2VfdCBzdGF0 ZSk7Cj4gICAKPiAtdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIGludCB2bHZfZm9yY2VfZ2Z4X2Nsb2NrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBvbik7Cj4gICAKPiAgIHN0YXRpYyBpbmxp bmUgYm9vbCBpbnRlbF9ndnRfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBpbmRleCA1Y2Y0ZWVkNWFk ZDguLjQ3MjM5ZGY2NTNmMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3Iu Ywo+IEBAIC01MzQsMTAgKzUzNCw2IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2VuZ2luZShz dHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAgCX0KPiAgIAllcnJfcHJpbnRm KG0sICIgIHJpbmctPmhlYWQ6IDB4JTA4eFxuIiwgZWUtPmNwdV9yaW5nX2hlYWQpOwo+ICAgCWVy cl9wcmludGYobSwgIiAgcmluZy0+dGFpbDogMHglMDh4XG4iLCBlZS0+Y3B1X3JpbmdfdGFpbCk7 Cj4gLQllcnJfcHJpbnRmKG0sICIgIGhhbmdjaGVjayB0aW1lc3RhbXA6ICVkbXMgKCVsdSVzKVxu IiwKPiAtCQkgICBqaWZmaWVzX3RvX21zZWNzKGVlLT5oYW5nY2hlY2tfdGltZXN0YW1wIC0gZXBv Y2gpLAo+IC0JCSAgIGVlLT5oYW5nY2hlY2tfdGltZXN0YW1wLAo+IC0JCSAgIGVlLT5oYW5nY2hl Y2tfdGltZXN0YW1wID09IGVwb2NoID8gIjsgZXBvY2giIDogIiIpOwo+ICAgCWVycl9wcmludGYo bSwgIiAgZW5naW5lIHJlc2V0IGNvdW50OiAldVxuIiwgZWUtPnJlc2V0X2NvdW50KTsKPiAgIAo+ ICAgCWZvciAobiA9IDA7IG4gPCBlZS0+bnVtX3BvcnRzOyBuKyspIHsKPiBAQCAtNjc5LDExICs2 NzUsOCBAQCBzdGF0aWMgdm9pZCBfX2Vycl9wcmludF90b19zZ2woc3RydWN0IGRybV9pOTE1X2Vy cm9yX3N0YXRlX2J1ZiAqbSwKPiAgIAl0cyA9IGt0aW1lX3RvX3RpbWVzcGVjNjQoZXJyb3ItPnVw dGltZSk7Cj4gICAJZXJyX3ByaW50ZihtLCAiVXB0aW1lOiAlbGxkIHMgJWxkIHVzXG4iLAo+ICAg CQkgICAoczY0KXRzLnR2X3NlYywgdHMudHZfbnNlYyAvIE5TRUNfUEVSX1VTRUMpOwo+IC0JZXJy X3ByaW50ZihtLCAiRXBvY2g6ICVsdSBqaWZmaWVzICgldSBIWilcbiIsIGVycm9yLT5lcG9jaCwg SFopOwo+IC0JZXJyX3ByaW50ZihtLCAiQ2FwdHVyZTogJWx1IGppZmZpZXM7ICVkIG1zIGFnbywg JWQgbXMgYWZ0ZXIgZXBvY2hcbiIsCj4gLQkJICAgZXJyb3ItPmNhcHR1cmUsCj4gLQkJICAgamlm Zmllc190b19tc2VjcyhqaWZmaWVzIC0gZXJyb3ItPmNhcHR1cmUpLAo+IC0JCSAgIGppZmZpZXNf dG9fbXNlY3MoZXJyb3ItPmNhcHR1cmUgLSBlcnJvci0+ZXBvY2gpKTsKPiArCWVycl9wcmludGYo bSwgIkNhcHR1cmU6ICVsdSBqaWZmaWVzOyAlZCBtcyBhZ29cbiIsCj4gKwkJICAgZXJyb3ItPmNh cHR1cmUsIGppZmZpZXNfdG9fbXNlY3MoamlmZmllcyAtIGVycm9yLT5jYXB0dXJlKSk7Cj4gICAK PiAgIAlmb3IgKGVlID0gZXJyb3ItPmVuZ2luZTsgZWU7IGVlID0gZWUtPm5leHQpCj4gICAJCWVy cl9wcmludGYobSwgIkFjdGl2ZSBwcm9jZXNzIChvbiByaW5nICVzKTogJXMgWyVkXVxuIiwKPiBA QCAtNzQyLDcgKzczNSw3IEBAIHN0YXRpYyB2b2lkIF9fZXJyX3ByaW50X3RvX3NnbChzdHJ1Y3Qg ZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAgCQllcnJfcHJpbnRmKG0sICJHVFRfQ0FD SEVfRU46IDB4JTA4eFxuIiwgZXJyb3ItPmd0dF9jYWNoZSk7Cj4gICAKPiAgIAlmb3IgKGVlID0g ZXJyb3ItPmVuZ2luZTsgZWU7IGVlID0gZWUtPm5leHQpCj4gLQkJZXJyb3JfcHJpbnRfZW5naW5l KG0sIGVlLCBlcnJvci0+ZXBvY2gpOwo+ICsJCWVycm9yX3ByaW50X2VuZ2luZShtLCBlZSwgZXJy b3ItPmNhcHR1cmUpOwo+ICAgCj4gICAJZm9yIChlZSA9IGVycm9yLT5lbmdpbmU7IGVlOyBlZSA9 IGVlLT5uZXh0KSB7Cj4gICAJCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9lcnJvcl9vYmplY3QgKm9i ajsKPiBAQCAtNzcwLDcgKzc2Myw3IEBAIHN0YXRpYyB2b2lkIF9fZXJyX3ByaW50X3RvX3NnbChz dHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAgCQkJZm9yIChqID0gMDsgaiA8 IGVlLT5udW1fcmVxdWVzdHM7IGorKykKPiAgIAkJCQllcnJvcl9wcmludF9yZXF1ZXN0KG0sICIg IiwKPiAgIAkJCQkJCSAgICAmZWUtPnJlcXVlc3RzW2pdLAo+IC0JCQkJCQkgICAgZXJyb3ItPmVw b2NoKTsKPiArCQkJCQkJICAgIGVycm9yLT5jYXB0dXJlKTsKPiAgIAkJfQo+ICAgCj4gICAJCXBy aW50X2Vycm9yX29iaihtLCBlZS0+ZW5naW5lLCAicmluZ2J1ZmZlciIsIGVlLT5yaW5nYnVmZmVy KTsKPiBAQCAtMTE0NCw4ICsxMTM3LDYgQEAgc3RhdGljIHZvaWQgZXJyb3JfcmVjb3JkX2VuZ2lu ZV9yZWdpc3RlcnMoc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwKPiAgIAl9Cj4gICAKPiAg IAllZS0+aWRsZSA9IGludGVsX2VuZ2luZV9pc19pZGxlKGVuZ2luZSk7Cj4gLQlpZiAoIWVlLT5p ZGxlKQo+IC0JCWVlLT5oYW5nY2hlY2tfdGltZXN0YW1wID0gZW5naW5lLT5oYW5nY2hlY2suYWN0 aW9uX3RpbWVzdGFtcDsKPiAgIAllZS0+cmVzZXRfY291bnQgPSBpOTE1X3Jlc2V0X2VuZ2luZV9j b3VudCgmZGV2X3ByaXYtPmdwdV9lcnJvciwKPiAgIAkJCQkJCSAgZW5naW5lKTsKPiAgIAo+IEBA IC0xNjU3LDIwICsxNjQ4LDYgQEAgc3RhdGljIHZvaWQgY2FwdHVyZV9wYXJhbXMoc3RydWN0IGk5 MTVfZ3B1X3N0YXRlICplcnJvcikKPiAgIAlpOTE1X3BhcmFtc19jb3B5KCZlcnJvci0+cGFyYW1z LCAmaTkxNV9tb2RwYXJhbXMpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB1bnNpZ25lZCBsb25nIGNh cHR1cmVfZmluZF9lcG9jaChjb25zdCBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+IC17 Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lICplZTsKPiAtCXVuc2lnbmVk IGxvbmcgZXBvY2ggPSBlcnJvci0+Y2FwdHVyZTsKPiAtCj4gLQlmb3IgKGVlID0gZXJyb3ItPmVu Z2luZTsgZWU7IGVlID0gZWUtPm5leHQpIHsKPiAtCQlpZiAoZWUtPmhhbmdjaGVja190aW1lc3Rh bXAgJiYKPiAtCQkgICAgdGltZV9iZWZvcmUoZWUtPmhhbmdjaGVja190aW1lc3RhbXAsIGVwb2No KSkKPiAtCQkJZXBvY2ggPSBlZS0+aGFuZ2NoZWNrX3RpbWVzdGFtcDsKPiAtCX0KPiAtCj4gLQly ZXR1cm4gZXBvY2g7Cj4gLX0KPiAtCj4gICBzdGF0aWMgdm9pZCBjYXB0dXJlX2ZpbmlzaChzdHJ1 Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X2dndHQgKmdn dHQgPSAmZXJyb3ItPmk5MTUtPmdndHQ7Cj4gQEAgLTE3MjIsOCArMTY5OSw2IEBAIGk5MTVfY2Fw dHVyZV9ncHVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJZXJyb3It Pm92ZXJsYXkgPSBpbnRlbF9vdmVybGF5X2NhcHR1cmVfZXJyb3Jfc3RhdGUoaTkxNSk7Cj4gICAJ ZXJyb3ItPmRpc3BsYXkgPSBpbnRlbF9kaXNwbGF5X2NhcHR1cmVfZXJyb3Jfc3RhdGUoaTkxNSk7 Cj4gICAKPiAtCWVycm9yLT5lcG9jaCA9IGNhcHR1cmVfZmluZF9lcG9jaChlcnJvcik7Cj4gLQo+ ICAgCWNhcHR1cmVfZmluaXNoKGVycm9yKTsKPiAgIAljb21wcmVzc19maW5pKCZjb21wcmVzcyk7 Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3Iu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgKPiBpbmRleCA3ZjFjZDBi MWZlZjcuLjRkYzM2ZDZlZTNhMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuaAo+IEBAIC0zNCw3ICszNCw2IEBAIHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSB7Cj4gICAJa3Rp bWVfdCBib290dGltZTsKPiAgIAlrdGltZV90IHVwdGltZTsKPiAgIAl1bnNpZ25lZCBsb25nIGNh cHR1cmU7Cj4gLQl1bnNpZ25lZCBsb25nIGVwb2NoOwo+ICAgCj4gICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTU7Cj4gICAKPiBAQCAtODYsNyArODUsNiBAQCBzdHJ1Y3QgaTkxNV9ncHVf c3RhdGUgewo+ICAgCj4gICAJCS8qIFNvZnR3YXJlIHRyYWNrZWQgc3RhdGUgKi8KPiAgIAkJYm9v bCBpZGxlOwo+IC0JCXVuc2lnbmVkIGxvbmcgaGFuZ2NoZWNrX3RpbWVzdGFtcDsKPiAgIAkJaW50 IG51bV9yZXF1ZXN0czsKPiAgIAkJdTMyIHJlc2V0X2NvdW50Owo+ICAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaAo+IGluZGV4IGFlOGJiM2NiNjI3ZS4uNzMy YWFkMTQ4ODgxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xp c3RfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlw ZXMuaAo+IEBAIC0xNiw2ICsxNiwxMiBAQCBlbnVtIHsKPiAgIAlJOTE1X1BSSU9SSVRZX01JTiA9 IEk5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWSAtIDEsCj4gICAJSTkxNV9QUklPUklUWV9O T1JNQUwgPSBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWSwKPiAgIAlJOTE1X1BSSU9SSVRZ X01BWCA9IEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWSArIDEsCj4gKwo+ICsJLyogQSBw cmVlbXB0aXZlIHB1bHNlIHVzZWQgdG8gbW9uaXRvciB0aGUgaGVhbHRoIG9mIGVhY2ggZW5naW5l ICovCj4gKwlJOTE1X1BSSU9SSVRZX0hFQVJUQkVBVCwKPiArCj4gKwkvKiBJbnRlcmFjdGl2ZSB3 b3JrbG9hZCwgc2NoZWR1bGVkIGZvciBpbW1lZGlhdGUgcGFnZWZsaXBwaW5nICovCj4gKwlJOTE1 X1BSSU9SSVRZX0RJU1BMQVksCj4gICB9Owo+ICAgCj4gICAjZGVmaW5lIEk5MTVfVVNFUl9QUklP UklUWV9TSElGVCAyCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeA==