From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 12/32] drm/i915: Invert the GEM wakeref hierarchy Date: Tue, 23 Apr 2019 14:02:36 +0100 Message-ID: <8e8eebff-114e-7a68-32c5-ae6b73de893e@linux.intel.com> References: <20190417075657.19456-1-chris@chris-wilson.co.uk> <20190417075657.19456-12-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 mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id D5EDF890A6 for ; Tue, 23 Apr 2019 13:02:38 +0000 (UTC) In-Reply-To: <20190417075657.19456-12-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 Ck9uIDE3LzA0LzIwMTkgMDg6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiB0aGUgY3VycmVu dCBzY2hlbWUsIG9uIHN1Ym1pdHRpbmcgYSByZXF1ZXN0IHdlIHRha2UgYSBzaW5nbGUgZ2xvYmFs Cj4gR0VNIHdha2VyZWYsIHdoaWNoIHRyaWNrbGVzIGRvd24gdG8gd2FrZSB1cCBhbGwgR1QgcG93 ZXIgZG9tYWlucy4gVGhpcwo+IGlzIHVuZGVzaXJhYmxlIGFzIHdlIHdvdWxkIGxpa2UgdG8gYmUg YWJsZSB0byBsb2NhbGlzZSBvdXIgcG93ZXIKPiBtYW5hZ2VtZW50IHRvIHRoZSBhdmFpbGFibGUg cG93ZXIgZG9tYWlucyBhbmQgdG8gcmVtb3ZlIHRoZSBnbG9iYWwgR0VNCj4gb3BlcmF0aW9ucyBm cm9tIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyLiAoVGhlIGludGVudCB0aGVyZSBpcyB0byBwdXNo Cj4gZ2xvYmFsIEdFTSBkZWNpc2lvbnMgdG8gdGhlIGJvdW5kYXJ5IGFzIHVzZWQgYnkgdGhlIEdF TSB1c2VyIGludGVyZmFjZS4pCj4gCj4gTm93IGR1cmluZyByZXF1ZXN0IGNvbnN0cnVjdGlvbiwg ZWFjaCByZXF1ZXN0IGlzIHJlc3BvbnNpYmxlIHZpYSBpdHMKPiBsb2dpY2FsIGNvbnRleHQgdG8g YWNxdWlyZSBhIHdha2VyZWYgb24gZWFjaCBwb3dlciBkb21haW4gaXQgaW50ZW5kcyB0bwo+IHV0 aWxpemUuIEN1cnJlbnRseSwgZWFjaCByZXF1ZXN0IHRha2VzIGEgd2FrZXJlZiBvbiB0aGUgZW5n aW5lKHMpIGFuZAo+IHRoZSBlbmdpbmVzIHRoZW1zZWx2ZXMgdGFrZSBhIGNoaXBzZXQgd2FrZXJl Zi4gVGhpcyBnaXZlcyB1cyBhCj4gdHJhbnNpdGlvbiBvbiBlYWNoIGVuZ2luZSB3aGljaCB3ZSBj YW4gZXh0ZW5kIGlmIHdlIHdhbnQgdG8gaW5zZXJ0IG1vcmUKPiBwb3dlcm1hbmdlbWVudCBjb250 cm9sIChzdWNoIGFzIHNvZnQgcmM2KS4gVGhlIGdsb2JhbCBHRU0gb3BlcmF0aW9ucwo+IHRoYXQg Y3VycmVudGx5IHJlcXVpcmUgYSBzdHJ1Y3RfbXV0ZXggYXJlIHJlZHVjZWQgdG8gbGlzdGVuaW5n IHRvIHBtCj4gZXZlbnRzIGZyb20gdGhlIGNoaXBzZXQgR1Qgd2FrZXJlZi4gQXMgd2UgcmVkdWNl IHRoZSBzdHJ1Y3RfbXV0ZXgKPiByZXF1aXJlbWVudCwgdGhlc2UgbGlzdGVuZXJzIHNob3VsZCBl dmFwb3JhdGUuCj4gCj4gUGVyaGFwcyB0aGUgYmlnZ2VzdCBpbW1lZGlhdGUgY2hhbmdlIGlzIHRo YXQgdGhpcyByZW1vdmVzIHRoZQo+IHN0cnVjdF9tdXRleCByZXF1aXJlbWVudCBhcm91bmQgR1Qg cG93ZXIgbWFuYWdlbWVudCwgYWxsb3dpbmcgdXMgZ3JlYXRlcgo+IGZsZXhpYmlsaXR5IGluIHJl cXVlc3QgY29uc3RydWN0aW9uLiBBbm90aGVyIGltcG9ydGFudCBrbm9jay1vbiBlZmZlY3QsCj4g aXMgdGhhdCBieSB0cmFja2luZyBlbmdpbmUgdXNhZ2UsIHdlIGNhbiBpbnNlcnQgYSBzd2l0Y2gg YmFjayB0byB0aGUKPiBrZXJuZWwgY29udGV4dCBvbiB0aGF0IGVuZ2luZSBpbW1lZGlhdGVseSwg YXZvaWRpbmcgYW55IGV4dHJhIGRlbGF5IG9yCj4gaW5zZXJ0aW5nIGdsb2JhbCBzeW5jaHJvbmlz YXRpb24gYmFycmllcnMuIFRoaXMgbWFrZXMgdHJhY2tpbmcgd2hlbiBhbgo+IGVuZ2luZSBhbmQg aXRzIGFzc29jaWF0ZWQgY29udGV4dHMgYXJlIGlkbGUgbXVjaCBlYXNpZXIgLS0gaW1wb3J0YW50 IGZvcgo+IHdoZW4gd2UgZm9yZ28gb3VyIGFzc3VtZWQgZXhlY3V0aW9uIG9yZGVyaW5nIGFuZCBu ZWVkIGlkbGUgYmFycmllcnMgdG8KPiB1bnBpbiB1c2VkIGNvbnRleHRzLiBJbiB0aGUgcHJvY2Vz cywgaXQgbWVhbnMgd2UgcmVtb3ZlIGEgbGFyZ2UgY2h1bmsgb2YKPiBjb2RlIHdob3NlIG9ubHkg cHVycG9zZSB3YXMgdG8gc3dpdGNoIGJhY2sgdG8gdGhlIGtlcm5lbCBjb250ZXh0Lgo+IAo+IFNp Z25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENj OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+CgpUaGVyZSB3aWxsIGJlIHNvbWUgaW5jb25zZXF1ZW50 aWFsIGNoYW5nZXMgYWZ0ZXIgcmViYXNlLCBidXQgaW4gcHJpbmNpcGxlOgoKUmV2aWV3ZWQtYnk6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZy dGtvCgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAg ICAgIHwgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYyAg ICAgICB8ICAxOCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgg ICAgICAgIHwgICA5ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf Y3MuYyAgICAgfCAxNDIgKy0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lX3BtLmMgICAgIHwgMTUzICsrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV9wbS5oICAgICB8ICAyMCArKwo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggIHwgICA3ICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jICAgICAgICAgfCAxNDMgKysrKysrKysrKwo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uaCAgICAgICAgIHwgIDI3ICsrCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYyAgICAgfCAgIDcgKwo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgICA2ICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAgICAgICAgfCAxMDEgKy0t LS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuaCAgICAgICAgIHwg ICAxIC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYyAgICB8 ICAxNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYyAgICAgICAg IHwgICAzICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5j ICB8ICA0OSArLS0tCj4gICAuLi4vZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRz LmMgICAgfCAgIDUgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAg ICAgICAgICB8ICAxNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAg ICAgICAgICAgIHwgICA1ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAg ICAgICAgICAgICAgfCAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg ICAgICAgICAgICAgICB8ICA0MSArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmggICAgICAgICAgICAgICB8ICAgMyAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMgICAgICAgfCAgODUgKy0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmggICAgICAgfCAgIDQgLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXZpY3QuYyAgICAgICAgIHwgIDQ3ICstLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3BtLmMgICAgICAgICAgICB8IDI2NCArKysrKystLS0tLS0tLS0tLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3BtLmggICAgICAgICAgICB8ICAgMyAtCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oICAgICAgICAgfCAgIDQgLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgIDEwICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCAgICAgICAgICAgfCAgIDIg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMgICAgICAgICAgICAgICB8ICAy MiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCAgICAgICAgICAgICAgIHwg ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYyAgICAg fCAgMTYgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQu YyB8IDExNCArLS0tLS0tLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1f b2JqZWN0LmMgIHwgIDI5ICstCj4gICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1 c2hfdGVzdC5jICAgfCAgMzIgKystCj4gICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2Nr X2dlbV9kZXZpY2UuYyAgfCAgMTUgKy0KPiAgIDM3IGZpbGVzIGNoYW5nZWQsIDU5OCBpbnNlcnRp b25zKCspLCA4MzMgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaAo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMKPiAgIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5oCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKPiBpbmRleCA4NTg2NDJjN2JjNDAuLmRkOGQ5MjNhYTFjNiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTcxLDYgKzcxLDggQEAgZ3QteSArPSBcCj4gICAJZ3Qv aW50ZWxfYnJlYWRjcnVtYnMubyBcCj4gICAJZ3QvaW50ZWxfY29udGV4dC5vIFwKPiAgIAlndC9p bnRlbF9lbmdpbmVfY3MubyBcCj4gKwlndC9pbnRlbF9lbmdpbmVfcG0ubyBcCj4gKwlndC9pbnRl bF9ndF9wbS5vIFwKPiAgIAlndC9pbnRlbF9oYW5nY2hlY2subyBcCj4gICAJZ3QvaW50ZWxfbHJj Lm8gXAo+ICAgCWd0L2ludGVsX3Jlc2V0Lm8gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9jb250ZXh0LmMKPiBpbmRleCA0NDEwZTIwZThlMTMuLjI5OGU0NjNhZDA4MiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKPiBAQCAtMTAsNiArMTAsNyBAQAo+ ICAgCj4gICAjaW5jbHVkZSAiaW50ZWxfY29udGV4dC5oIgo+ICAgI2luY2x1ZGUgImludGVsX2Vu Z2luZS5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCj4gICAKPiAgIHN0YXRpYyBz dHJ1Y3QgaTkxNV9nbG9iYWxfY29udGV4dCB7Cj4gICAJc3RydWN0IGk5MTVfZ2xvYmFsIGJhc2U7 Cj4gQEAgLTE2Miw3ICsxNjMsMTEgQEAgaW50ZWxfY29udGV4dF9waW4oc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlRSKTsKPiAgIAo+ICAgCWlm IChsaWtlbHkoIWF0b21pY19yZWFkKCZjZS0+cGluX2NvdW50KSkpIHsKPiAtCQllcnIgPSBjZS0+ b3BzLT5waW4oY2UpOwo+ICsJCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsKPiArCQllcnIg PSAwOwo+ICsJCXdpdGhfaW50ZWxfcnVudGltZV9wbShjZS0+ZW5naW5lLT5pOTE1LCB3YWtlcmVm KQo+ICsJCQllcnIgPSBjZS0+b3BzLT5waW4oY2UpOwo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJZ290 byBlcnI7Cj4gICAKPiBAQCAtMjY5LDE3ICsyNzQsMTAgQEAgaW50IF9faW5pdCBpOTE1X2dsb2Jh bF9jb250ZXh0X2luaXQodm9pZCkKPiAgIAo+ICAgdm9pZCBpbnRlbF9jb250ZXh0X2VudGVyX2Vu Z2luZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGNlLT5nZW1fY29udGV4dC0+aTkxNTsKPiAtCj4gLQlpZiAoIWk5MTUt Pmd0LmFjdGl2ZV9yZXF1ZXN0cysrKQo+IC0JCWk5MTVfZ2VtX3VucGFyayhpOTE1KTsKPiArCWlu dGVsX2VuZ2luZV9wbV9nZXQoY2UtPmVuZ2luZSk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgaW50ZWxf Y29udGV4dF9leGl0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICB7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGNlLT5nZW1fY29udGV4dC0+aTkxNTsKPiAt Cj4gLQlHRU1fQlVHX09OKCFpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+IC0JaWYgKCEtLWk5 MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cykKPiAtCQlpOTE1X2dlbV9wYXJrKGk5MTUpOwo+ICsJaW50 ZWxfZW5naW5lX3BtX3B1dChjZS0+ZW5naW5lKTsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmUuaAo+IGluZGV4IDcyYzdjMzM3YWNlOS4uYTIyOGRjMTc3NGQ4IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKPiBAQCAtMzgyLDYgKzM4Miw4 IEBAIHU2NCBpbnRlbF9lbmdpbmVfZ2V0X2xhc3RfYmF0Y2hfaGVhZChjb25zdCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAgdm9pZCBpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25l KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfaW5zdGRvbmUgKmluc3Rkb25lKTsKPiAgIAo+ICt2b2lkIGludGVsX2VuZ2luZV9pbml0X2V4 ZWNsaXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICsKPiAgIHZvaWQgaW50 ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKPiAgIHZvaWQgaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKPiAgIAo+IEBAIC00NTgsMTkgKzQ2MCwxNCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaW50ZWxfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAgIHsKPiAgIAlpZiAoZW5naW5lLT5yZXNldC5yZXNldCkKPiAgIAkJZW5naW5lLT5yZXNl dC5yZXNldChlbmdpbmUsIHN0YWxsZWQpOwo+ICsJZW5naW5lLT5zZXJpYWwrKzsgLyogY29udGV4 dHMgbG9zdCAqLwo+ICAgfQo+ICAgCj4gLXZvaWQgaW50ZWxfZW5naW5lc19zYW5pdGl6ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9vbCBmb3JjZSk7Cj4gLXZvaWQgaW50ZWxfZ3Rf cmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAtCj4gICBib29sIGludGVs X2VuZ2luZV9pc19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICBib29s IGludGVsX2VuZ2luZXNfYXJlX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKPiAgIAo+ICAgdm9pZCBpbnRlbF9lbmdpbmVfbG9zdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7Cj4gICAKPiAtdm9pZCBpbnRlbF9lbmdpbmVzX3Bhcmsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+IC12b2lkIGludGVsX2VuZ2luZXNfdW5wYXJrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAtCj4gICB2b2lkIGludGVsX2VuZ2luZXNf cmVzZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsK PiAgIHVuc2lnbmVkIGludCBpbnRlbF9lbmdpbmVzX2hhc19jb250ZXh0X2lzb2xhdGlvbihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDIxZGQzZjI1ZTY0MS4uMjY4ZGZiOGUxNmZmIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtMjcs NiArMjcsNyBAQAo+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICAKPiAgICNpbmNsdWRlICJp bnRlbF9lbmdpbmUuaCIKPiArI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgo+ICAgI2luY2x1 ZGUgImludGVsX2xyYy5oIgo+ICAgI2luY2x1ZGUgImludGVsX3Jlc2V0LmgiCj4gICAKPiBAQCAt NDUxLDcgKzQ1Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuZ2luZV9pbml0X2JhdGNoX3Bvb2wo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWk5MTVfZ2VtX2JhdGNoX3Bvb2xf aW5pdCgmZW5naW5lLT5iYXRjaF9wb29sLCBlbmdpbmUpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2 b2lkIGludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiArdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3Rz ICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwo+ICAgCj4gQEAgLTU4NCwx MCArNTg1LDExIEBAIGludCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpOTE1X3RpbWVsaW5lX3NldF9zdWJjbGFzcygmZW5naW5l LT50aW1lbGluZSwgVElNRUxJTkVfRU5HSU5FKTsKPiAgIAo+ICAgCWludGVsX2VuZ2luZV9pbml0 X2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4gLQlpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdChlbmdp bmUpOwo+ICsJaW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3RzKGVuZ2luZSk7Cj4gICAJaW50ZWxf ZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7Cj4gICAJaW50ZWxfZW5naW5lX2luaXRfYmF0 Y2hfcG9vbChlbmdpbmUpOwo+ICAgCWludGVsX2VuZ2luZV9pbml0X2NtZF9wYXJzZXIoZW5naW5l KTsKPiArCWludGVsX2VuZ2luZV9pbml0X19wbShlbmdpbmUpOwo+ICAgCj4gICAJLyogVXNlIHRo ZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAqLwo+ICAgCWVuZ2luZS0+c3NldSA9Cj4gQEAgLTc1 OCwzMCArNzYwLDYgQEAgaW50IGludGVsX2VuZ2luZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IC12b2lkIGlu dGVsX2d0X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAtewo+IC0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IC0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7 Cj4gLQo+IC0JLyoKPiAtCSAqIEFmdGVyIHJlc3VtZSwgd2UgbWF5IG5lZWQgdG8gcG9rZSBpbnRv IHRoZSBwaW5uZWQga2VybmVsCj4gLQkgKiBjb250ZXh0cyB0byBwYXBlciBvdmVyIGFueSBkYW1h Z2UgY2F1c2VkIGJ5IHRoZSBzdWRkZW4gc3VzcGVuZC4KPiAtCSAqIE9ubHkgdGhlIGtlcm5lbCBj b250ZXh0cyBzaG91bGQgcmVtYWluIHBpbm5lZCBvdmVyIHN1c3BlbmQsCj4gLQkgKiBhbGxvd2lu ZyB1cyB0byBmaXh1cCB0aGUgdXNlciBjb250ZXh0cyBvbiB0aGVpciBmaXJzdCBwaW4uCj4gLQkg Ki8KPiAtCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gLQkJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlOwo+IC0KPiAtCQljZSA9IGVuZ2luZS0+a2VybmVsX2NvbnRleHQ7Cj4g LQkJaWYgKGNlKQo+IC0JCQljZS0+b3BzLT5yZXNldChjZSk7Cj4gLQo+IC0JCWNlID0gZW5naW5l LT5wcmVlbXB0X2NvbnRleHQ7Cj4gLQkJaWYgKGNlKQo+IC0JCQljZS0+b3BzLT5yZXNldChjZSk7 Cj4gLQl9Cj4gLX0KPiAtCj4gICAvKioKPiAgICAqIGludGVsX2VuZ2luZXNfY2xlYW51cF9jb21t b24gLSBjbGVhbnMgdXAgdGhlIGVuZ2luZSBzdGF0ZSBjcmVhdGVkIGJ5Cj4gICAgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1vbiBpbml0aWFpbGl6ZXJzLgo+IEBAIC0x MTI4LDExNyArMTEwNiw2IEBAIHZvaWQgaW50ZWxfZW5naW5lc19yZXNldF9kZWZhdWx0X3N1Ym1p c3Npb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJCWVuZ2luZS0+c2V0X2Rl ZmF1bHRfc3VibWlzc2lvbihlbmdpbmUpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBib29sIHJlc2V0 X2VuZ2luZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gLXsKPiAtCWlmIChJTlRF TF9JTkZPKGk5MTUpLT5ncHVfcmVzZXRfY2xvYmJlcnNfZGlzcGxheSkKPiAtCQlyZXR1cm4gZmFs c2U7Cj4gLQo+IC0JcmV0dXJuIGludGVsX2dwdV9yZXNldChpOTE1LCBBTExfRU5HSU5FUykgPT0g MDsKPiAtfQo+IC0KPiAtLyoqCj4gLSAqIGludGVsX2VuZ2luZXNfc2FuaXRpemU6IGNhbGxlZCBh ZnRlciB0aGUgR1BVIGhhcyBsb3N0IHBvd2VyCj4gLSAqIEBpOTE1OiB0aGUgaTkxNSBkZXZpY2UK PiAtICogQGZvcmNlOiBpZ25vcmUgYSBmYWlsZWQgcmVzZXQgYW5kIHNhbml0aXplIGVuZ2luZSBz dGF0ZSBhbnl3YXkKPiAtICoKPiAtICogQW55dGltZSB3ZSByZXNldCB0aGUgR1BVLCBlaXRoZXIg d2l0aCBhbiBleHBsaWNpdCBHUFUgcmVzZXQgb3IgdGhyb3VnaCBhCj4gLSAqIFBDSSBwb3dlciBj eWNsZSwgdGhlIEdQVSBsb3NlcyBzdGF0ZSBhbmQgd2UgbXVzdCByZXNldCBvdXIgc3RhdGUgdHJh Y2tpbmcKPiAtICogdG8gbWF0Y2guIE5vdGUgdGhhdCBjYWxsaW5nIGludGVsX2VuZ2luZXNfc2Fu aXRpemUoKSBpZiB0aGUgR1BVIGhhcyBub3QKPiAtICogYmVlbiByZXNldCByZXN1bHRzIGluIG11 Y2ggY29uZnVzaW9uIQo+IC0gKi8KPiAtdm9pZCBpbnRlbF9lbmdpbmVzX3Nhbml0aXplKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGZvcmNlKQo+IC17Cj4gLQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAtCj4g LQlHRU1fVFJBQ0UoIlxuIik7Cj4gLQo+IC0JaWYgKCFyZXNldF9lbmdpbmVzKGk5MTUpICYmICFm b3JjZSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwg aWQpCj4gLQkJaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2luZSwgZmFsc2UpOwo+IC19Cj4gLQo+IC0v KioKPiAtICogaW50ZWxfZW5naW5lc19wYXJrOiBjYWxsZWQgd2hlbiB0aGUgR1QgaXMgdHJhbnNp dGlvbmluZyBmcm9tIGJ1c3ktPmlkbGUKPiAtICogQGk5MTU6IHRoZSBpOTE1IGRldmljZQo+IC0g Kgo+IC0gKiBUaGUgR1QgaXMgbm93IGlkbGUgYW5kIGFib3V0IHRvIGdvIHRvIHNsZWVwIChtYXli ZSBuZXZlciB0byB3YWtlIGFnYWluPykuCj4gLSAqIFRpbWUgZm9yIHVzIHRvIHRpZHkgYW5kIHB1 dCBhd2F5IG91ciB0b3lzIChyZWxlYXNlIHJlc291cmNlcyBiYWNrIHRvIHRoZQo+IC0gKiBzeXN0 ZW0pLgo+IC0gKi8KPiAtdm9pZCBpbnRlbF9lbmdpbmVzX3Bhcmsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAt CWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IC0KPiAtCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGk5MTUsIGlkKSB7Cj4gLQkJLyogRmx1c2ggdGhlIHJlc2lkdWFsIGlycSB0YXNrbGV0cyBmaXJz dC4gKi8KPiAtCQlpbnRlbF9lbmdpbmVfZGlzYXJtX2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4gLQkJ dGFza2xldF9raWxsKCZlbmdpbmUtPmV4ZWNsaXN0cy50YXNrbGV0KTsKPiAtCj4gLQkJLyoKPiAt CQkgKiBXZSBhcmUgY29tbWl0dGVkIG5vdyB0byBwYXJraW5nIHRoZSBlbmdpbmVzLCBtYWtlIHN1 cmUgdGhlcmUKPiAtCQkgKiB3aWxsIGJlIG5vIG1vcmUgaW50ZXJydXB0cyBhcnJpdmluZyBsYXRl ciBhbmQgdGhlIGVuZ2luZXMKPiAtCQkgKiBhcmUgdHJ1bHkgaWRsZS4KPiAtCQkgKi8KPiAtCQlp ZiAod2FpdF9mb3IoaW50ZWxfZW5naW5lX2lzX2lkbGUoZW5naW5lKSwgMTApKSB7Cj4gLQkJCXN0 cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2RlYnVnX3ByaW50ZXIoX19mdW5jX18pOwo+IC0KPiAt CQkJZGV2X2VycihpOTE1LT5kcm0uZGV2LAo+IC0JCQkJIiVzIGlzIG5vdCBpZGxlIGJlZm9yZSBw YXJraW5nXG4iLAo+IC0JCQkJZW5naW5lLT5uYW1lKTsKPiAtCQkJaW50ZWxfZW5naW5lX2R1bXAo ZW5naW5lLCAmcCwgTlVMTCk7Cj4gLQkJfQo+IC0KPiAtCQkvKiBNdXN0IGJlIHJlc2V0IHVwb24g aWRsaW5nLCBvciB3ZSBtYXkgbWlzcyB0aGUgYnVzeSB3YWtldXAuICovCj4gLQkJR0VNX0JVR19P TihlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50ICE9IElOVF9NSU4pOwo+IC0K PiAtCQlpZiAoZW5naW5lLT5wYXJrKQo+IC0JCQllbmdpbmUtPnBhcmsoZW5naW5lKTsKPiAtCj4g LQkJaWYgKGVuZ2luZS0+cGlubmVkX2RlZmF1bHRfc3RhdGUpIHsKPiAtCQkJaTkxNV9nZW1fb2Jq ZWN0X3VucGluX21hcChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpOwo+IC0JCQllbmdpbmUtPnBpbm5l ZF9kZWZhdWx0X3N0YXRlID0gTlVMTDsKPiAtCQl9Cj4gLQo+IC0JCWk5MTVfZ2VtX2JhdGNoX3Bv b2xfZmluaSgmZW5naW5lLT5iYXRjaF9wb29sKTsKPiAtCQllbmdpbmUtPmV4ZWNsaXN0cy5ub19w cmlvbGlzdCA9IGZhbHNlOwo+IC0JfQo+IC0KPiAtCWk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzID0g MDsKPiAtfQo+IC0KPiAtLyoqCj4gLSAqIGludGVsX2VuZ2luZXNfdW5wYXJrOiBjYWxsZWQgd2hl biB0aGUgR1QgaXMgdHJhbnNpdGlvbmluZyBmcm9tIGlkbGUtPmJ1c3kKPiAtICogQGk5MTU6IHRo ZSBpOTE1IGRldmljZQo+IC0gKgo+IC0gKiBUaGUgR1Qgd2FzIGlkbGUgYW5kIG5vdyBhYm91dCB0 byBmaXJlIHVwIHdpdGggc29tZSBuZXcgdXNlciByZXF1ZXN0cy4KPiAtICovCj4gLXZvaWQgaW50 ZWxfZW5naW5lc191bnBhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gLXsKPiAt CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAtCWVudW0gaW50ZWxfZW5naW5lX2lk IGlkOwo+IC0KPiAtCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gLQkJdm9p ZCAqbWFwOwo+IC0KPiAtCQkvKiBQaW4gdGhlIGRlZmF1bHQgc3RhdGUgZm9yIGZhc3QgcmVzZXRz IGZyb20gYXRvbWljIGNvbnRleHQuICovCj4gLQkJbWFwID0gTlVMTDsKPiAtCQlpZiAoZW5naW5l LT5kZWZhdWx0X3N0YXRlKQo+IC0JCQltYXAgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChlbmdp bmUtPmRlZmF1bHRfc3RhdGUsCj4gLQkJCQkJCSAgICAgIEk5MTVfTUFQX1dCKTsKPiAtCQlpZiAo IUlTX0VSUl9PUl9OVUxMKG1hcCkpCj4gLQkJCWVuZ2luZS0+cGlubmVkX2RlZmF1bHRfc3RhdGUg PSBtYXA7Cj4gLQo+IC0JCWlmIChlbmdpbmUtPnVucGFyaykKPiAtCQkJZW5naW5lLT51bnBhcmso ZW5naW5lKTsKPiAtCj4gLQkJaW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7Cj4g LQl9Cj4gLX0KPiAtCj4gICAvKioKPiAgICAqIGludGVsX2VuZ2luZV9sb3N0X2NvbnRleHQ6IGNh bGxlZCB3aGVuIHRoZSBHUFUgaXMgcmVzZXQgaW50byB1bmtub3duIHN0YXRlCj4gICAgKiBAZW5n aW5lOiB0aGUgZW5naW5lCj4gQEAgLTE1MjMsNiArMTM5MCw3IEBAIHZvaWQgaW50ZWxfZW5naW5l X2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCWlmIChpOTE1X3Jlc2V0 X2ZhaWxlZChlbmdpbmUtPmk5MTUpKQo+ICAgCQlkcm1fcHJpbnRmKG0sICIqKiogV0VER0VEICoq KlxuIik7Cj4gICAKPiArCWRybV9wcmludGYobSwgIlx0QXdha2U/ICVkXG4iLCBhdG9taWNfcmVh ZCgmZW5naW5lLT53YWtlcmVmLmNvdW50KSk7Cj4gICAJZHJtX3ByaW50ZihtLCAiXHRIYW5nY2hl Y2sgJXg6JXggWyVkIG1zXVxuIiwKPiAgIAkJICAgZW5naW5lLT5oYW5nY2hlY2subGFzdF9zZXFu bywKPiAgIAkJICAgZW5naW5lLT5oYW5nY2hlY2submV4dF9zZXFubywKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwLi5jYzBhZGZhMTQ5NDcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKPiBAQCAtMCwwICsxLDE1MyBA QAo+ICsvKgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKyAqCj4gKyAqIENv cHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg Imk5MTVfZHJ2LmgiCj4gKwo+ICsjaW5jbHVkZSAiaW50ZWxfZW5naW5lLmgiCj4gKyNpbmNsdWRl ICJpbnRlbF9lbmdpbmVfcG0uaCIKPiArI2luY2x1ZGUgImludGVsX2d0X3BtLmgiCj4gKwo+ICtz dGF0aWMgaW50IGludGVsX2VuZ2luZV91bnBhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQo+ICsJCWNvbnRhaW5lcl9v Zih3ZiwgdHlwZW9mKCplbmdpbmUpLCB3YWtlcmVmKTsKPiArCXZvaWQgKm1hcDsKPiArCj4gKwlH RU1fVFJBQ0UoIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+ICsKPiArCWludGVsX2d0X3BtX2dldChl bmdpbmUtPmk5MTUpOwo+ICsKPiArCS8qIFBpbiB0aGUgZGVmYXVsdCBzdGF0ZSBmb3IgZmFzdCBy ZXNldHMgZnJvbSBhdG9taWMgY29udGV4dC4gKi8KPiArCW1hcCA9IE5VTEw7Cj4gKwlpZiAoZW5n aW5lLT5kZWZhdWx0X3N0YXRlKQo+ICsJCW1hcCA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGVu Z2luZS0+ZGVmYXVsdF9zdGF0ZSwKPiArCQkJCQkgICAgICBJOTE1X01BUF9XQik7Cj4gKwlpZiAo IUlTX0VSUl9PUl9OVUxMKG1hcCkpCj4gKwkJZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSA9 IG1hcDsKPiArCj4gKwlpZiAoZW5naW5lLT51bnBhcmspCj4gKwkJZW5naW5lLT51bnBhcmsoZW5n aW5lKTsKPiArCj4gKwlpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2VuZ2luZV9wbV9nZXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlpbnRlbF93YWtlcmVmX2dldChlbmdpbmUtPmk5 MTUsICZlbmdpbmUtPndha2VyZWYsIGludGVsX2VuZ2luZV91bnBhcmspOwo+ICt9Cj4gKwo+ICtz dGF0aWMgYm9vbCBzd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCj4gKwkvKiBB bHJlYWR5IGluc2lkZSB0aGUga2VybmVsIGNvbnRleHQsIHNhZmUgdG8gcG93ZXIgZG93bi4gKi8K PiArCWlmIChlbmdpbmUtPndha2VyZWZfc2VyaWFsID09IGVuZ2luZS0+c2VyaWFsKQo+ICsJCXJl dHVybiB0cnVlOwo+ICsKPiArCS8qIEdQVSBpcyBwb2ludGluZyB0byB0aGUgdm9pZCwgYXMgZ29v ZCBhcyBpbiB0aGUga2VybmVsIGNvbnRleHQuICovCj4gKwlpZiAoaTkxNV9yZXNldF9mYWlsZWQo ZW5naW5lLT5pOTE1KSkKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4gKwkvKgo+ICsJICogTm90ZSwg d2UgZG8gdGhpcyB3aXRob3V0IHRha2luZyB0aGUgdGltZWxpbmUtPm11dGV4LiBXZSBjYW5ub3QK PiArCSAqIGFzIHdlIG1heSBiZSBjYWxsZWQgd2hpbGUgcmV0aXJpbmcgdGhlIGtlcm5lbCBjb250 ZXh0IGFuZCBzbwo+ICsJICogYWxyZWFkeSB1bmRlcm5lYXRoIHRoZSB0aW1lbGluZS0+bXV0ZXgu IEluc3RlYWQgd2UgcmVseSBvbiB0aGUKPiArCSAqIGV4Y2x1c2l2ZSBwcm9wZXJ0eSBvZiB0aGUg aW50ZWxfZW5naW5lX3BhcmsgdGhhdCBwcmV2ZW50cyBhbnlvbmUKPiArCSAqIGVsc2UgZnJvbSBj cmVhdGluZyBhIHJlcXVlc3Qgb24gdGhpcyBlbmdpbmUuIFRoaXMgYWxzbyByZXF1aXJlcwo+ICsJ ICogdGhhdCB0aGUgcmluZyBpcyBlbXB0eSBhbmQgd2UgYXZvaWQgYW55IHdhaXRzIHdoaWxlIGNv bnN0cnVjdGluZwo+ICsJICogdGhlIGNvbnRleHQsIGFzIHRoZXkgYXNzdW1lIHByb3RlY3Rpb24g YnkgdGhlIHRpbWVsaW5lLT5tdXRleC4KPiArCSAqIFRoaXMgc2hvdWxkIGhvbGQgdHJ1ZSBhcyB3 ZSBjYW4gb25seSBwYXJrIHRoZSBlbmdpbmUgYWZ0ZXIKPiArCSAqIHJldGlyaW5nIHRoZSBsYXN0 IHJlcXVlc3QsIHRodXMgYWxsIHJpbmdzIHNob3VsZCBiZSBlbXB0eSBhbmQKPiArCSAqIGFsbCB0 aW1lbGluZXMgaWRsZS4KPiArCSAqLwo+ICsJcnEgPSBfX2k5MTVfcmVxdWVzdF9jcmVhdGUoZW5n aW5lLT5rZXJuZWxfY29udGV4dCwgR0ZQX05PV0FJVCk7Cj4gKwlpZiAoSVNfRVJSKHJxKSkKPiAr CQkvKiBDb250ZXh0IHN3aXRjaCBmYWlsZWQsIGhvcGUgZm9yIHRoZSBiZXN0ISBNYXliZSByZXNl dD8gKi8KPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4gKwkvKiBDaGVjayBhZ2FpbiBvbiB0aGUgbmV4 dCByZXRpcmVtZW50LiAqLwo+ICsJZW5naW5lLT53YWtlcmVmX3NlcmlhbCA9IGVuZ2luZS0+c2Vy aWFsICsgMTsKPiArCV9faTkxNV9yZXF1ZXN0X2NvbW1pdChycSk7Cj4gKwo+ICsJcmV0dXJuIGZh bHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2VuZ2luZV9wYXJrKHN0cnVjdCBpbnRl bF93YWtlcmVmICp3ZikKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0K PiArCQljb250YWluZXJfb2Yod2YsIHR5cGVvZigqZW5naW5lKSwgd2FrZXJlZik7Cj4gKwo+ICsJ LyoKPiArCSAqIElmIG9uZSBhbmQgb25seSBvbmUgcmVxdWVzdCBpcyBjb21wbGV0ZWQgYmV0d2Vl biBwbSBldmVudHMsCj4gKwkgKiB3ZSBrbm93IHRoYXQgd2UgYXJlIGluc2lkZSB0aGUga2VybmVs IGNvbnRleHQgYW5kIGl0IGlzCj4gKwkgKiBzYWZlIHRvIHBvd2VyIGRvd24uIChXZSBhcmUgcGFy YW5vaWQgaW4gY2FzZSB0aGF0IHJ1bnRpbWUKPiArCSAqIHN1c3BlbmQgY2F1c2VzIGNvcnJ1cHRp b24gdG8gdGhlIGFjdGl2ZSBjb250ZXh0IGltYWdlLCBhbmQKPiArCSAqIHdhbnQgdG8gYXZvaWQg dGhhdCBpbXBhY3RpbmcgdXNlcnNwYWNlLikKPiArCSAqLwo+ICsJaWYgKCFzd2l0Y2hfdG9fa2Vy bmVsX2NvbnRleHQoZW5naW5lKSkKPiArCQlyZXR1cm4gLUVCVVNZOwo+ICsKPiArCUdFTV9UUkFD RSgiJXNcbiIsIGVuZ2luZS0+bmFtZSk7Cj4gKwo+ICsJaW50ZWxfZW5naW5lX2Rpc2FybV9icmVh ZGNydW1icyhlbmdpbmUpOwo+ICsKPiArCS8qIE11c3QgYmUgcmVzZXQgdXBvbiBpZGxpbmcsIG9y IHdlIG1heSBtaXNzIHRoZSBidXN5IHdha2V1cC4gKi8KPiArCUdFTV9CVUdfT04oZW5naW5lLT5l eGVjbGlzdHMucXVldWVfcHJpb3JpdHlfaGludCAhPSBJTlRfTUlOKTsKPiArCj4gKwlpZiAoZW5n aW5lLT5wYXJrKQo+ICsJCWVuZ2luZS0+cGFyayhlbmdpbmUpOwo+ICsKPiArCWlmIChlbmdpbmUt PnBpbm5lZF9kZWZhdWx0X3N0YXRlKSB7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChl bmdpbmUtPmRlZmF1bHRfc3RhdGUpOwo+ICsJCWVuZ2luZS0+cGlubmVkX2RlZmF1bHRfc3RhdGUg PSBOVUxMOwo+ICsJfQo+ICsKPiArCWVuZ2luZS0+ZXhlY2xpc3RzLm5vX3ByaW9saXN0ID0gZmFs c2U7Cj4gKwo+ICsJaW50ZWxfZ3RfcG1fcHV0KGVuZ2luZS0+aTkxNSk7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArdm9pZCBpbnRlbF9lbmdpbmVfcG1fcHV0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiArewo+ICsJaW50ZWxfd2FrZXJlZl9wdXQoZW5naW5lLT5pOTE1LCAmZW5n aW5lLT53YWtlcmVmLCBpbnRlbF9lbmdpbmVfcGFyayk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxf ZW5naW5lX2luaXRfX3BtKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJ aW50ZWxfd2FrZXJlZl9pbml0KCZlbmdpbmUtPndha2VyZWYpOwo+ICt9Cj4gKwo+ICtpbnQgaW50 ZWxfZW5naW5lc19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiAr CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lk IGlkOwo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJLyoKPiArCSAqIEFmdGVyIHJlc3VtZSwgd2Ug bWF5IG5lZWQgdG8gcG9rZSBpbnRvIHRoZSBwaW5uZWQga2VybmVsCj4gKwkgKiBjb250ZXh0cyB0 byBwYXBlciBvdmVyIGFueSBkYW1hZ2UgY2F1c2VkIGJ5IHRoZSBzdWRkZW4gc3VzcGVuZC4KPiAr CSAqIE9ubHkgdGhlIGtlcm5lbCBjb250ZXh0cyBzaG91bGQgcmVtYWluIHBpbm5lZCBvdmVyIHN1 c3BlbmQsCj4gKwkgKiBhbGxvd2luZyB1cyB0byBmaXh1cCB0aGUgdXNlciBjb250ZXh0cyBvbiB0 aGVpciBmaXJzdCBwaW4uCj4gKwkgKi8KPiArCWludGVsX2d0X3BtX2dldChpOTE1KTsKPiArCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJaW50ZWxfZW5naW5lX3BtX2dl dChlbmdpbmUpOwo+ICsJCWVuZ2luZS0+c2VyaWFsKys7IC8qIGtlcm5lbCBjb250ZXh0IGxvc3Qg Ki8KPiArCQllcnIgPSBlbmdpbmUtPnJlc3VtZShlbmdpbmUpOwo+ICsJCWludGVsX2VuZ2luZV9w bV9wdXQoZW5naW5lKTsKPiArCQlpZiAoZXJyKSB7Cj4gKwkJCWRldl9lcnIoaTkxNS0+ZHJtLmRl diwKPiArCQkJCSJGYWlsZWQgdG8gcmVzdGFydCAlcyAoJWQpXG4iLAo+ICsJCQkJZW5naW5lLT5u YW1lLCBlcnIpOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwl9Cj4gKwlpbnRlbF9ndF9wbV9wdXQo aTkxNSk7Cj4gKwo+ICsJcmV0dXJuIGVycjsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9wbS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwMDAuLjE0M2FjOTBiYTExNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uaAo+IEBAIC0wLDAgKzEsMjAgQEAKPiArLyoKPiAr ICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkg MjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgSU5URUxfRU5HSU5F X1BNX0gKPiArI2RlZmluZSBJTlRFTF9FTkdJTkVfUE1fSAo+ICsKPiArc3RydWN0IGRybV9pOTE1 X3ByaXZhdGU7Cj4gK3N0cnVjdCBpbnRlbF9lbmdpbmVfY3M7Cj4gKwo+ICt2b2lkIGludGVsX2Vu Z2luZV9wbV9nZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiArdm9pZCBpbnRl bF9lbmdpbmVfcG1fcHV0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gKwo+ICt2 b2lkIGludGVsX2VuZ2luZV9pbml0X19wbShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Owo+ICsKPiAraW50IGludGVsX2VuZ2luZXNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KTsKPiArCj4gKyNlbmRpZiAvKiBJTlRFTF9FTkdJTkVfUE1fSCAqLwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gaW5kZXggM2FkZjU4ZGE2 ZDJjLi5kOTcyYzMzOTMwOWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfdHlwZXMuaAo+IEBAIC0yMCw2ICsyMCw3IEBACj4gICAjaW5jbHVkZSAiaTkxNV9z ZWxmdGVzdC5oIgo+ICAgI2luY2x1ZGUgImk5MTVfdGltZWxpbmVfdHlwZXMuaCIKPiAgICNpbmNs dWRlICJpbnRlbF9zc2V1LmgiCj4gKyNpbmNsdWRlICJpbnRlbF93YWtlcmVmLmgiCj4gICAjaW5j bHVkZSAiaW50ZWxfd29ya2Fyb3VuZHNfdHlwZXMuaCIKPiAgIAo+ICAgI2RlZmluZSBJOTE1X01B WF9TTElDRVMJMwo+IEBAIC0yODcsNiArMjg4LDEwIEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg ewo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICprZXJuZWxfY29udGV4dDsgLyogcGlubmVkICov Cj4gICAJc3RydWN0IGludGVsX2NvbnRleHQgKnByZWVtcHRfY29udGV4dDsgLyogcGlubmVkOyBv cHRpb25hbCAqLwo+ICAgCj4gKwl1bnNpZ25lZCBsb25nIHNlcmlhbDsKPiArCj4gKwl1bnNpZ25l ZCBsb25nIHdha2VyZWZfc2VyaWFsOwo+ICsJc3RydWN0IGludGVsX3dha2VyZWYgd2FrZXJlZjsK PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9zdGF0ZTsKPiAgIAl2b2lk ICpwaW5uZWRfZGVmYXVsdF9zdGF0ZTsKPiAgIAo+IEBAIC0zNTksNyArMzY0LDcgQEAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyB7Cj4gICAJdm9pZAkJKCppcnFfZW5hYmxlKShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwo+ICAgCXZvaWQJCSgqaXJxX2Rpc2FibGUpKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICAKPiAtCWludAkJKCppbml0X2h3KShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICsJaW50CQkoKnJlc3VtZSkoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKPiAgIAo+ICAgCXN0cnVjdCB7Cj4gICAJCXZvaWQgKCpwcmVwYXJl KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfcG0uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAw Li5hZTcxNTVmMGUwNjMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfcG0uYwo+IEBAIC0wLDAgKzEsMTQzIEBACj4gKy8qCj4gKyAqIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArICoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50 ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2lu Y2x1ZGUgImludGVsX2d0X3BtLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9wbS5oIgo+ICsjaW5jbHVk ZSAiaW50ZWxfd2FrZXJlZi5oIgo+ICsKPiArc3RhdGljIHZvaWQgcG1fbm90aWZ5KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgc3RhdGUpCj4gK3sKPiArCWJsb2NraW5nX25vdGlm aWVyX2NhbGxfY2hhaW4oJmk5MTUtPmd0LnBtX25vdGlmaWNhdGlvbnMsIHN0YXRlLCBpOTE1KTsK PiArfQo+ICsKPiArc3RhdGljIGludCBpbnRlbF9ndF91bnBhcmsoc3RydWN0IGludGVsX3dha2Vy ZWYgKndmKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gKwkJY29u dGFpbmVyX29mKHdmLCB0eXBlb2YoKmk5MTUpLCBndC53YWtlcmVmKTsKPiArCj4gKwlHRU1fVFJB Q0UoIlxuIik7Cj4gKwo+ICsJLyoKPiArCSAqIEl0IHNlZW1zIHRoYXQgdGhlIERNQyBsaWtlcyB0 byB0cmFuc2l0aW9uIGJldHdlZW4gdGhlIERDIHN0YXRlcyBhIGxvdAo+ICsJICogd2hlbiB0aGVy ZSBhcmUgbm8gY29ubmVjdGVkIGRpc3BsYXlzIChubyBhY3RpdmUgcG93ZXIgZG9tYWlucykgZHVy aW5nCj4gKwkgKiBjb21tYW5kIHN1Ym1pc3Npb24uCj4gKwkgKgo+ICsJICogVGhpcyBhY3Rpdml0 eSBoYXMgbmVnYXRpdmUgaW1wYWN0IG9uIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgY2hpcCB3aXRo Cj4gKwkgKiBodWdlIGxhdGVuY2llcyBvYnNlcnZlZCBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIg YW5kIGVsc2V3aGVyZS4KPiArCSAqCj4gKwkgKiBXb3JrIGFyb3VuZCBpdCBieSBncmFiYmluZyBh IEdUIElSUSBwb3dlciBkb21haW4gd2hpbHN0IHRoZXJlIGlzIGFueQo+ICsJICogR1QgYWN0aXZp dHksIHByZXZlbnRpbmcgYW55IERDIHN0YXRlIHRyYW5zaXRpb25zLgo+ICsJICovCj4gKwlpOTE1 LT5ndC5hd2FrZSA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGk5MTUsIFBPV0VSX0RPTUFJTl9H VF9JUlEpOwo+ICsJR0VNX0JVR19PTighaTkxNS0+Z3QuYXdha2UpOwo+ICsKPiArCWludGVsX2Vu YWJsZV9ndF9wb3dlcnNhdmUoaTkxNSk7Cj4gKwo+ICsJaTkxNV91cGRhdGVfZ2Z4X3ZhbChpOTE1 KTsKPiArCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKPiArCQlnZW42X3Jwc19idXN5KGk5MTUp Owo+ICsKPiArCWk5MTVfcG11X2d0X3VucGFya2VkKGk5MTUpOwo+ICsKPiArCWk5MTVfcXVldWVf aGFuZ2NoZWNrKGk5MTUpOwo+ICsKPiArCXBtX25vdGlmeShpOTE1LCBJTlRFTF9HVF9VTlBBUksp Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2d0X3BtX2dldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJaW50ZWxfd2FrZXJlZl9nZXQoaTkx NSwgJmk5MTUtPmd0Lndha2VyZWYsIGludGVsX2d0X3VucGFyayk7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgaW50ZWxfZ3RfcGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KPiArCQljb250YWluZXJfb2Yod2YsIHR5cGVv ZigqaTkxNSksIGd0Lndha2VyZWYpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWYgPSBmZXRj aF9hbmRfemVybygmaTkxNS0+Z3QuYXdha2UpOwo+ICsKPiArCUdFTV9UUkFDRSgiXG4iKTsKPiAr Cj4gKwlwbV9ub3RpZnkoaTkxNSwgSU5URUxfR1RfUEFSSyk7Cj4gKwo+ICsJaTkxNV9wbXVfZ3Rf cGFya2VkKGk5MTUpOwo+ICsJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQo+ICsJCWdlbjZfcnBz X2lkbGUoaTkxNSk7Cj4gKwo+ICsJR0VNX0JVR19PTighd2FrZXJlZik7Cj4gKwlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dChpOTE1LCBQT1dFUl9ET01BSU5fR1RfSVJRLCB3YWtlcmVmKTsKPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9ndF9wbV9wdXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCWludGVsX3dha2VyZWZfcHV0KGk5MTUsICZpOTE1 LT5ndC53YWtlcmVmLCBpbnRlbF9ndF9wYXJrKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9ndF9w bV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlpbnRlbF93YWtl cmVmX2luaXQoJmk5MTUtPmd0Lndha2VyZWYpOwo+ICsJQkxPQ0tJTkdfSU5JVF9OT1RJRklFUl9I RUFEKCZpOTE1LT5ndC5wbV9ub3RpZmljYXRpb25zKTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wg cmVzZXRfZW5naW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJaWYg KElOVEVMX0lORk8oaTkxNSktPmdwdV9yZXNldF9jbG9iYmVyc19kaXNwbGF5KQo+ICsJCXJldHVy biBmYWxzZTsKPiArCj4gKwlyZXR1cm4gaW50ZWxfZ3B1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVT KSA9PSAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfZ3Rfc2FuaXRpemU6IGNhbGxlZCBh ZnRlciB0aGUgR1BVIGhhcyBsb3N0IHBvd2VyCj4gKyAqIEBpOTE1OiB0aGUgaTkxNSBkZXZpY2UK PiArICogQGZvcmNlOiBpZ25vcmUgYSBmYWlsZWQgcmVzZXQgYW5kIHNhbml0aXplIGVuZ2luZSBz dGF0ZSBhbnl3YXkKPiArICoKPiArICogQW55dGltZSB3ZSByZXNldCB0aGUgR1BVLCBlaXRoZXIg d2l0aCBhbiBleHBsaWNpdCBHUFUgcmVzZXQgb3IgdGhyb3VnaCBhCj4gKyAqIFBDSSBwb3dlciBj eWNsZSwgdGhlIEdQVSBsb3NlcyBzdGF0ZSBhbmQgd2UgbXVzdCByZXNldCBvdXIgc3RhdGUgdHJh Y2tpbmcKPiArICogdG8gbWF0Y2guIE5vdGUgdGhhdCBjYWxsaW5nIGludGVsX2d0X3Nhbml0aXpl KCkgaWYgdGhlIEdQVSBoYXMgbm90Cj4gKyAqIGJlZW4gcmVzZXQgcmVzdWx0cyBpbiBtdWNoIGNv bmZ1c2lvbiEKPiArICovCj4gK3ZvaWQgaW50ZWxfZ3Rfc2FuaXRpemUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIGJvb2wgZm9yY2UpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsKPiArCUdFTV9UUkFD RSgiXG4iKTsKPiArCj4gKwlpZiAoIXJlc2V0X2VuZ2luZXMoaTkxNSkgJiYgIWZvcmNlKQo+ICsJ CXJldHVybjsKPiArCj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKPiArCQlp bnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBmYWxzZSk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxf Z3RfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAr Cj4gKwkvKgo+ICsJICogQWZ0ZXIgcmVzdW1lLCB3ZSBtYXkgbmVlZCB0byBwb2tlIGludG8gdGhl IHBpbm5lZCBrZXJuZWwKPiArCSAqIGNvbnRleHRzIHRvIHBhcGVyIG92ZXIgYW55IGRhbWFnZSBj YXVzZWQgYnkgdGhlIHN1ZGRlbiBzdXNwZW5kLgo+ICsJICogT25seSB0aGUga2VybmVsIGNvbnRl eHRzIHNob3VsZCByZW1haW4gcGlubmVkIG92ZXIgc3VzcGVuZCwKPiArCSAqIGFsbG93aW5nIHVz IHRvIGZpeHVwIHRoZSB1c2VyIGNvbnRleHRzIG9uIHRoZWlyIGZpcnN0IHBpbi4KPiArCSAqLwo+ ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2U7Cj4gKwo+ICsJCWNlID0gZW5naW5lLT5rZXJuZWxfY29udGV4dDsKPiArCQlp ZiAoY2UpCj4gKwkJCWNlLT5vcHMtPnJlc2V0KGNlKTsKPiArCj4gKwkJY2UgPSBlbmdpbmUtPnBy ZWVtcHRfY29udGV4dDsKPiArCQlpZiAoY2UpCj4gKwkJCWNlLT5vcHMtPnJlc2V0KGNlKTsKPiAr CX0KPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9w bS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uaAo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43ZGQxMTMwYTE5YTQKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uaAo+IEBAIC0w LDAgKzEsMjcgQEAKPiArLyoKPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsg Kgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4g KyNpZm5kZWYgSU5URUxfR1RfUE1fSAo+ICsjZGVmaW5lIElOVEVMX0dUX1BNX0gKPiArCj4gKyNp bmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsKPiArc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4g Kwo+ICtlbnVtIHsKPiArCUlOVEVMX0dUX1VOUEFSSywKPiArCUlOVEVMX0dUX1BBUkssCj4gK307 Cj4gKwo+ICt2b2lkIGludGVsX2d0X3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSk7Cj4gK3ZvaWQgaW50ZWxfZ3RfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKPiArCj4gK3ZvaWQgaW50ZWxfZ3RfcG1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSk7Cj4gKwo+ICt2b2lkIGludGVsX2d0X3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCBib29sIGZvcmNlKTsKPiArdm9pZCBpbnRlbF9ndF9yZXN1bWUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsKPiArI2VuZGlmIC8qIElOVEVMX0dUX1BNX0ggKi8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYwo+IGluZGV4IDMwNTNh NzA2YTU2MS4uZTVlYWEwNmZlNzRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2hhbmdjaGVjay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfaGFuZ2NoZWNrLmMKPiBAQCAtMjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFu Z2NoZWNrX2VsYXBzZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAl1 bnNpZ25lZCBpbnQgaHVuZyA9IDAsIHN0dWNrID0gMCwgd2VkZ2VkID0gMDsKPiArCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOwo+ICAgCj4gICAJaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfaGFu Z2NoZWNrKQo+ICAgCQlyZXR1cm47Cj4gQEAgLTI2Niw2ICsyNjcsMTAgQEAgc3RhdGljIHZvaWQg aTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICAJaWYg KGk5MTVfdGVybWluYWxseV93ZWRnZWQoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm47Cj4gICAKPiAr CXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2X3ByaXYpOwo+ICsJ aWYgKCF3YWtlcmVmKQo+ICsJCXJldHVybjsKPiArCj4gICAJLyogQXMgZW5hYmxpbmcgdGhlIEdQ VSByZXF1aXJlcyBmYWlybHkgZXh0ZW5zaXZlIG1taW8gYWNjZXNzLAo+ICAgCSAqIHBlcmlvZGlj YWxseSBhcm0gdGhlIG1taW8gY2hlY2tlciB0byBzZWUgaWYgd2UgYXJlIHRyaWdnZXJpbmcKPiAg IAkgKiBhbnkgaW52YWxpZCBhY2Nlc3MuCj4gQEAgLTMxMyw2ICszMTgsOCBAQCBzdGF0aWMgdm9p ZCBpOTE1X2hhbmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIAlp ZiAoaHVuZykKPiAgIAkJaGFuZ2NoZWNrX2RlY2xhcmVfaGFuZyhkZXZfcHJpdiwgaHVuZywgc3R1 Y2spOwo+ICAgCj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4g Kwo+ICAgCS8qIFJlc2V0IHRpbWVyIGluIGNhc2UgR1BVIGhhbmdzIHdpdGhvdXQgYW5vdGhlciBy ZXF1ZXN0IGJlaW5nIGFkZGVkICovCj4gICAJaTkxNV9xdWV1ZV9oYW5nY2hlY2soZGV2X3ByaXYp Owo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gaW5kZXggZWRlYzdmMTgz Njg4Li5kMTdjMDhlMjY5MzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+ IEBAIC0xNzg5LDcgKzE3ODksNyBAQCBzdGF0aWMgYm9vbCB1bmV4cGVjdGVkX3N0YXJ0aW5nX3N0 YXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlyZXR1cm4gdW5leHBlY3Rl ZDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyBpbnQgZXhlY2xpc3RzX3Jlc3VtZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJaW50ZWxfZW5naW5lX2Fw cGx5X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4gICAJaW50ZWxfZW5naW5lX2FwcGx5X3doaXRlbGlz dChlbmdpbmUpOwo+IEBAIC0xODIyLDcgKzE4MjIsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNf cmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJICogY29t cGxldGVkIHRoZSByZXNldCBpbiBpOTE1X2dlbV9yZXNldF9maW5pc2goKS4gSWYgYSByZXF1ZXN0 Cj4gICAJICogaXMgY29tcGxldGVkIGJ5IG9uZSBlbmdpbmUsIGl0IG1heSB0aGVuIHF1ZXVlIGEg cmVxdWVzdAo+ICAgCSAqIHRvIGEgc2Vjb25kIHZpYSBpdHMgZXhlY2xpc3RzLT50YXNrbGV0ICpq dXN0KiBhcyB3ZSBhcmUKPiAtCSAqIGNhbGxpbmcgZW5naW5lLT5pbml0X2h3KCkgYW5kIGFsc28g d3JpdGluZyB0aGUgRUxTUC4KPiArCSAqIGNhbGxpbmcgZW5naW5lLT5yZXN1bWUoKSBhbmQgYWxz byB3cml0aW5nIHRoZSBFTFNQLgo+ICAgCSAqIFR1cm5pbmcgb2ZmIHRoZSBleGVjbGlzdHMtPnRh c2tsZXQgdW50aWwgdGhlIHJlc2V0IGlzIG92ZXIKPiAgIAkgKiBwcmV2ZW50cyB0aGUgcmFjZS4K PiAgIAkgKi8KPiBAQCAtMjM5MSw3ICsyMzkxLDcgQEAgc3RhdGljIHZvaWQKPiAgIGxvZ2ljYWxf cmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7 Cj4gICAJLyogRGVmYXVsdCB2ZnVuY3Mgd2hpY2ggY2FuIGJlIG92ZXJyaWRlbiBieSBlYWNoIGVu Z2luZS4gKi8KPiAtCWVuZ2luZS0+aW5pdF9odyA9IGdlbjhfaW5pdF9jb21tb25fcmluZzsKPiAr CWVuZ2luZS0+cmVzdW1lID0gZXhlY2xpc3RzX3Jlc3VtZTsKPiAgIAo+ICAgCWVuZ2luZS0+cmVz ZXQucHJlcGFyZSA9IGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlOwo+ICAgCWVuZ2luZS0+cmVzZXQu cmVzZXQgPSBleGVjbGlzdHNfcmVzZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3Jlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNl dC5jCj4gaW5kZXggOTk2MTY0ZDA3Mzk3Li5hZjg1NzIzYzdlMmYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKPiBAQCAtOSw2ICs5LDggQEAKPiAgIAo+ICAgI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCj4gICAjaW5jbHVkZSAiaTkxNV9ncHVfZXJyb3IuaCIKPiArI2luY2x1 ZGUgImludGVsX2VuZ2luZV9wbS5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZ3RfcG0uaCIKPiAgICNp bmNsdWRlICJpbnRlbF9yZXNldC5oIgo+ICAgCj4gICAjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCj4g QEAgLTY4Myw2ICs2ODUsNyBAQCBzdGF0aWMgdm9pZCByZXNldF9wcmVwYXJlX2VuZ2luZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJICogd3JpdHRlbiB0byB0aGUgcG93ZXJj b250ZXh0IGlzIHVuZGVmaW5lZCBhbmQgc28gd2UgbWF5IGxvc2UKPiAgIAkgKiBHUFUgc3RhdGUg dXBvbiByZXN1bWUsIGkuZS4gZmFpbCB0byByZXN0YXJ0IGFmdGVyIGEgcmVzZXQuCj4gICAJICov Cj4gKwlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7Cj4gICAJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQoZW5naW5lLT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+ICAgCWVuZ2luZS0+cmVz ZXQucHJlcGFyZShlbmdpbmUpOwo+ICAgfQo+IEBAIC03MTgsNiArNzIxLDcgQEAgc3RhdGljIHZv aWQgcmVzZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7 Cj4gICAKPiArCWludGVsX2d0X3BtX2dldChpOTE1KTsKPiAgIAlmb3JfZWFjaF9lbmdpbmUoZW5n aW5lLCBpOTE1LCBpZCkKPiAgIAkJcmVzZXRfcHJlcGFyZV9lbmdpbmUoZW5naW5lKTsKPiAgIAo+ IEBAIC03NTUsNDggKzc1OSwxMCBAQCBzdGF0aWMgaW50IGd0X3Jlc2V0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAo+ICAgc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoX2VuZ2luZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJZW5naW5lLT5yZXNldC5maW5p c2goZW5naW5lKTsKPiArCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAlpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3B1dChlbmdpbmUtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gICB9 Cj4gICAKPiAtc3RydWN0IGk5MTVfZ3B1X3Jlc3RhcnQgewo+IC0Jc3RydWN0IHdvcmtfc3RydWN0 IHdvcms7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiAtfTsKPiAtCj4gLXN0 YXRpYyB2b2lkIHJlc3RhcnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gLXsKPiAt CXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0ICphcmcgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9m KCphcmcpLCB3b3JrKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnLT5p OTE1Owo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IC0JZW51bSBpbnRlbF9l bmdpbmVfaWQgaWQ7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAtCj4gLQl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCVdSSVRFX09OQ0UoaTkxNS0+Z3B1X2Vycm9yLnJlc3RhcnQsIE5V TEwpOwo+IC0KPiAtCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gLQkJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gLQo+IC0JCS8qCj4gLQkJICogT3N0ZW5zaWJpbHksIHdl IGFsd2F5cyB3YW50IGEgY29udGV4dCBsb2FkZWQgZm9yIHBvd2Vyc2F2aW5nLAo+IC0JCSAqIHNv IGlmIHRoZSBlbmdpbmUgaXMgaWRsZSBhZnRlciB0aGUgcmVzZXQsIHNlbmQgYSByZXF1ZXN0Cj4g LQkJICogdG8gbG9hZCBvdXIgc2NyYXRjaCBrZXJuZWxfY29udGV4dC4KPiAtCQkgKi8KPiAtCQlp ZiAoIWludGVsX2VuZ2luZV9pc19pZGxlKGVuZ2luZSkpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAt CQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gLQkJ aWYgKCFJU19FUlIocnEpKQo+IC0JCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAtCX0KPiAtCj4g LQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaW50ZWxfcnVudGlt ZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gLQo+IC0Ja2ZyZWUoYXJnKTsKPiAtfQo+IC0KPiAg IHN0YXRpYyB2b2lkIHJlc2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gQEAgLTgwNiwyOSAr NzcyLDcgQEAgc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICAgCQlyZXNldF9maW5pc2hfZW5naW5lKGVuZ2luZSk7Cj4gICAJCWludGVsX2Vu Z2luZV9zaWduYWxfYnJlYWRjcnVtYnMoZW5naW5lKTsKPiAgIAl9Cj4gLX0KPiAtCj4gLXN0YXRp YyB2b2lkIHJlc2V0X3Jlc3RhcnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gLXsK PiAtCXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0ICphcmc7Cj4gLQo+IC0JLyoKPiAtCSAqIEZvbGxv d2luZyB0aGUgcmVzZXQsIGVuc3VyZSB0aGF0IHdlIGFsd2F5cyByZWxvYWQgY29udGV4dCBmb3IK PiAtCSAqIHBvd2Vyc2F2aW5nLCBhbmQgdG8gY29ycmVjdCBlbmdpbmUtPmxhc3RfcmV0aXJlZF9j b250ZXh0LiBTaW5jZQo+IC0JICogdGhpcyByZXF1aXJlcyB1cyB0byBzdWJtaXQgYSByZXF1ZXN0 LCBxdWV1ZSBhIHdvcmtlciB0byBkbyB0aGF0Cj4gLQkgKiB0YXNrIGZvciB1cyB0byBldmFkZSBh bnkgbG9ja2luZyBoZXJlLgo+IC0JICovCj4gLQlpZiAoUkVBRF9PTkNFKGk5MTUtPmdwdV9lcnJv ci5yZXN0YXJ0KSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JYXJnID0ga21hbGxvYyhzaXplb2YoKmFy ZyksIEdGUF9LRVJORUwpOwo+IC0JaWYgKGFyZykgewo+IC0JCWFyZy0+aTkxNSA9IGk5MTU7Cj4g LQkJSU5JVF9XT1JLKCZhcmctPndvcmssIHJlc3RhcnRfd29yayk7Cj4gLQo+IC0JCVdSSVRFX09O Q0UoaTkxNS0+Z3B1X2Vycm9yLnJlc3RhcnQsIGFyZyk7Cj4gLQkJcXVldWVfd29yayhpOTE1LT53 cSwgJmFyZy0+d29yayk7Cj4gLQl9Cj4gKwlpbnRlbF9ndF9wbV9wdXQoaTkxNSk7Cj4gICB9Cj4g ICAKPiAgIHN0YXRpYyB2b2lkIG5vcF9zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0KQo+IEBAIC04ODksNiArODMzLDcgQEAgc3RhdGljIHZvaWQgX19pOTE1X2dlbV9z ZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCSAqIGluIG5vcF9z dWJtaXRfcmVxdWVzdC4KPiAgIAkgKi8KPiAgIAlzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKCk7 Cj4gKwlzZXRfYml0KEk5MTVfV0VER0VELCAmZXJyb3ItPmZsYWdzKTsKPiAgIAo+ICAgCS8qIE1h cmsgYWxsIGV4ZWN1dGluZyByZXF1ZXN0cyBhcyBza2lwcGVkICovCj4gICAJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgaTkxNSwgaWQpCj4gQEAgLTg5Niw5ICs4NDEsNiBAQCBzdGF0aWMgdm9pZCBf X2k5MTVfZ2VtX3NldF93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAK PiAgIAlyZXNldF9maW5pc2goaTkxNSk7Cj4gICAKPiAtCXNtcF9tYl9fYmVmb3JlX2F0b21pYygp Owo+IC0Jc2V0X2JpdChJOTE1X1dFREdFRCwgJmVycm9yLT5mbGFncyk7Cj4gLQo+ICAgCUdFTV9U UkFDRSgiZW5kXG4iKTsKPiAgIH0KPiAgIAo+IEBAIC05NTYsNyArODk4LDcgQEAgc3RhdGljIGJv b2wgX19pOTE1X2dlbV91bnNldF93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cj4gICAJfQo+ICAgCW11dGV4X3VubG9jaygmaTkxNS0+Z3QudGltZWxpbmVzLm11dGV4KTsKPiAg IAo+IC0JaW50ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1LCBmYWxzZSk7Cj4gKwlpbnRlbF9ndF9z YW5pdGl6ZShpOTE1LCBmYWxzZSk7Cj4gICAKPiAgIAkvKgo+ICAgCSAqIFVuZG8gbm9wX3N1Ym1p dF9yZXF1ZXN0LiBXZSBwcmV2ZW50IGFsbCBuZXcgaTkxNSByZXF1ZXN0cyBmcm9tCj4gQEAgLTEw MzQsNyArOTc2LDYgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAgCUdFTV9UUkFDRSgiZmxhZ3M9JWx4XG4iLCBlcnJvci0+ZmxhZ3MpOwo+ICAgCj4g ICAJbWlnaHRfc2xlZXAoKTsKPiAtCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChpOTE1KTsKPiAg IAlHRU1fQlVHX09OKCF0ZXN0X2JpdChJOTE1X1JFU0VUX0JBQ0tPRkYsICZlcnJvci0+ZmxhZ3Mp KTsKPiAgIAo+ICAgCS8qIENsZWFyIGFueSBwcmV2aW91cyBmYWlsZWQgYXR0ZW1wdHMgYXQgcmVj b3ZlcnkuIFRpbWUgdG8gdHJ5IGFnYWluLiAqLwo+IEBAIC0xMDg3LDggKzEwMjgsNiBAQCB2b2lk IGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAKPiAgIGZpbmlz aDoKPiAgIAlyZXNldF9maW5pc2goaTkxNSk7Cj4gLQlpZiAoIV9faTkxNV93ZWRnZWQoZXJyb3Ip KQo+IC0JCXJlc2V0X3Jlc3RhcnQoaTkxNSk7Cj4gICAJcmV0dXJuOwo+ICAgCj4gICB0YWludDoK PiBAQCAtMTEzNyw2ICsxMDc2LDkgQEAgaW50IGk5MTVfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwgY29uc3QgY2hhciAqbXNnKQo+ICAgCUdFTV9UUkFDRSgiJXMg ZmxhZ3M9JWx4XG4iLCBlbmdpbmUtPm5hbWUsIGVycm9yLT5mbGFncyk7Cj4gICAJR0VNX0JVR19P TighdGVzdF9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBlbmdpbmUtPmlkLCAmZXJyb3ItPmZsYWdz KSk7Cj4gICAKPiArCWlmICghaW50ZWxfd2FrZXJlZl9hY3RpdmUoJmVuZ2luZS0+d2FrZXJlZikp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICAgCXJlc2V0X3ByZXBhcmVfZW5naW5lKGVuZ2luZSk7Cj4g ICAKPiAgIAlpZiAobXNnKQo+IEBAIC0xMTY4LDcgKzExMTAsNyBAQCBpbnQgaTkxNV9yZXNldF9l bmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBjb25zdCBjaGFyICptc2cpCj4g ICAJICogaGF2ZSBiZWVuIHJlc2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLiBGb2xsb3cgdGhl IGluaXRfcmluZwo+ICAgCSAqIHByb2Nlc3MgdG8gcHJvZ3JhbSBSSU5HX01PREUsIEhXU1AgYW5k IHJlLWVuYWJsZSBzdWJtaXNzaW9uLgo+ICAgCSAqLwo+IC0JcmV0ID0gZW5naW5lLT5pbml0X2h3 KGVuZ2luZSk7Cj4gKwlyZXQgPSBlbmdpbmUtPnJlc3VtZShlbmdpbmUpOwo+ICAgCWlmIChyZXQp Cj4gICAJCWdvdG8gb3V0Owo+ICAgCj4gQEAgLTE0MjUsMjUgKzEzNjcsNiBAQCBpbnQgaTkxNV90 ZXJtaW5hbGx5X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAlyZXR1 cm4gX19pOTE1X3dlZGdlZChlcnJvcikgPyAtRUlPIDogMDsKPiAgIH0KPiAgIAo+IC1ib29sIGk5 MTVfcmVzZXRfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gLXsKPiAtCWlu dCBlcnI7Cj4gLQo+IC0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ncHVfZXJyb3Iu aGFuZ2NoZWNrX3dvcmspOwo+IC0KPiAtCWZsdXNoX3dvcmtxdWV1ZShpOTE1LT53cSk7Cj4gLQlH RU1fQlVHX09OKFJFQURfT05DRShpOTE1LT5ncHVfZXJyb3IucmVzdGFydCkpOwo+IC0KPiAtCW11 dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JZXJyID0gaTkxNV9nZW1fd2Fp dF9mb3JfaWRsZShpOTE1LAo+IC0JCQkJICAgICBJOTE1X1dBSVRfTE9DS0VEIHwKPiAtCQkJCSAg ICAgSTkxNV9XQUlUX0ZPUl9JRExFX0JPT1NULAo+IC0JCQkJICAgICBNQVhfU0NIRURVTEVfVElN RU9VVCk7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAt CXJldHVybiAhZXJyOwo+IC19Cj4gLQo+ICAgc3RhdGljIHZvaWQgaTkxNV93ZWRnZV9tZShzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfd2VkZ2VfbWUgKncg PSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCp3KSwgd29yay53b3JrKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3Jlc2V0LmgKPiBpbmRleCA4ZTY2MmJiNDNhOWIuLmI1MmVmYWFiNDk0 MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuaAo+IEBAIC0zNCw3ICsz NCw2IEBAIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gICAJCSAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7Cj4gICAKPiAgIHZvaWQgaTkxNV9y ZXNldF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBib29sIGd1aWx0eSk7Cj4gLWJv b2wgaTkxNV9yZXNldF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICAK PiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9yZXNldF90cnlsb2NrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KTsKPiAgIHZvaWQgaTkxNV9yZXNldF91bmxvY2soc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIGludCB0YWcpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9yaW5nYnVmZmVyLmMKPiBpbmRleCBiMmJiN2Q0YmZiZTMuLmYxNjRkYmU5MDA1MCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtNjM3LDEy ICs2MzcsMTUgQEAgc3RhdGljIGJvb2wgc3RvcF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIAlyZXR1cm4gKEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19IRUFEKSAmIEhF QURfQUREUikgPT0gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IGluaXRfcmluZ19jb21tb24o c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgaW50IHhjc19yZXN1bWUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IGVuZ2luZS0+YnVmZmVyOwo+ICAgCWludCByZXQgPSAwOwo+ICAgCj4gKwlHRU1f VFJBQ0UoIiVzOiByaW5nOntIRUFEOiUwNHgsIFRBSUw6JTA0eH1cbiIsCj4gKwkJICBlbmdpbmUt Pm5hbWUsIHJpbmctPmhlYWQsIHJpbmctPnRhaWwpOwo+ICsKPiAgIAlpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX2dldChlbmdpbmUtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gICAKPiAgIAlpZiAo IXN0b3BfcmluZyhlbmdpbmUpKSB7Cj4gQEAgLTgyNywxMiArODMwLDkgQEAgc3RhdGljIGludCBp bnRlbF9yY3NfY3R4X2luaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJcmV0dXJuIDA7 Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBpbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIGludCByY3NfcmVzdW1lKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQlpbnQgcmV0ID0gaW5pdF9yaW5nX2NvbW1vbihlbmdp bmUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICAgCj4gICAJLyogV2FUaW1lZFNp bmdsZVZlcnRleERpc3BhdGNoOmNsLGJ3LGN0ZyxlbGssaWxrLHNuYiAqLwo+ICAgCWlmIChJU19H RU5fUkFOR0UoZGV2X3ByaXYsIDQsIDYpKQo+IEBAIC04NzUsNyArODc1LDcgQEAgc3RhdGljIGlu dCBpbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+ICAgCQlFTkdJTkVfV1JJVEUoZW5naW5lLCBS SU5HX0lNUiwgfmVuZ2luZS0+aXJxX2tlZXBfbWFzayk7Cj4gICAKPiAtCXJldHVybiAwOwo+ICsJ cmV0dXJuIHhjc19yZXN1bWUoZW5naW5lKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgY2Fu Y2VsX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiBAQCAtMjIwNyw3 ICsyMjA3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAKPiAgIAlpbnRlbF9yaW5nX2luaXRfaXJx KGRldl9wcml2LCBlbmdpbmUpOwo+ICAgCj4gLQllbmdpbmUtPmluaXRfaHcgPSBpbml0X3Jpbmdf Y29tbW9uOwo+ICsJZW5naW5lLT5yZXN1bWUgPSB4Y3NfcmVzdW1lOwo+ICAgCWVuZ2luZS0+cmVz ZXQucHJlcGFyZSA9IHJlc2V0X3ByZXBhcmU7Cj4gICAJZW5naW5lLT5yZXNldC5yZXNldCA9IHJl c2V0X3Jpbmc7Cj4gICAJZW5naW5lLT5yZXNldC5maW5pc2ggPSByZXNldF9maW5pc2g7Cj4gQEAg LTIyNjksNyArMjI2OSw3IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYp KQo+ICAgCQllbmdpbmUtPmVtaXRfYmJfc3RhcnQgPSBoc3dfZW1pdF9iYl9zdGFydDsKPiAgIAo+ IC0JZW5naW5lLT5pbml0X2h3ID0gaW5pdF9yZW5kZXJfcmluZzsKPiArCWVuZ2luZS0+cmVzdW1l ID0gcmNzX3Jlc3VtZTsKPiAgIAo+ICAgCXJldCA9IGludGVsX2luaXRfcmluZ19idWZmZXIoZW5n aW5lKTsKPiAgIAlpZiAocmV0KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYwo+ IGluZGV4IGJjZmViMGM2Nzk5Ny4uYTk3YTBhYjM1NzAzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9tb2NrX2VuZ2luZS5jCj4gQEAgLTI0LDYgKzI0LDcgQEAKPiAgIAo+ICAgI2luY2x1ZGUg Imk5MTVfZHJ2LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfY29udGV4dC5oIgo+ICsjaW5jbHVkZSAi aW50ZWxfZW5naW5lX3BtLmgiCj4gICAKPiAgICNpbmNsdWRlICJtb2NrX2VuZ2luZS5oIgo+ICAg I2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuaCIKPiBAQCAtMjY4LDYgKzI2OSw4IEBA IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1vY2tfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICAgCWk5MTVfdGltZWxpbmVfc2V0X3N1YmNsYXNzKCZlbmdpbmUtPmJhc2Uu dGltZWxpbmUsIFRJTUVMSU5FX0VOR0lORSk7Cj4gICAKPiAgIAlpbnRlbF9lbmdpbmVfaW5pdF9i cmVhZGNydW1icygmZW5naW5lLT5iYXNlKTsKPiArCWludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0 cygmZW5naW5lLT5iYXNlKTsKPiArCWludGVsX2VuZ2luZV9pbml0X19wbSgmZW5naW5lLT5iYXNl KTsKPiAgIAo+ICAgCS8qIGZha2UgaHcgcXVldWUgKi8KPiAgIAlzcGluX2xvY2tfaW5pdCgmZW5n aW5lLT5od19sb2NrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5n Y2hlY2suYwo+IGluZGV4IDg3YzI2OTIwMjEyZi4uNjAwNGQ2OTA3ZTljIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMKPiBAQCAtMjQsNiArMjQs OCBAQAo+ICAgCj4gICAjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgo+ICAgCj4gKyNpbmNsdWRl ICJpbnRlbF9lbmdpbmVfcG0uaCIKPiArCj4gICAjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgo+ ICAgI2luY2x1ZGUgInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oIgo+ICAgI2luY2x1ZGUgInNlbGZ0 ZXN0cy9pZ3RfZmx1c2hfdGVzdC5oIgo+IEBAIC00NzksMTkgKzQ4MSw2IEBAIHN0YXRpYyBpbnQg aWd0X3Jlc2V0X25vcCh2b2lkICphcmcpCj4gICAJCQlicmVhazsKPiAgIAkJfQo+ICAgCj4gLQkJ aWYgKCFpOTE1X3Jlc2V0X2ZsdXNoKGk5MTUpKSB7Cj4gLQkJCXN0cnVjdCBkcm1fcHJpbnRlciBw ID0KPiAtCQkJCWRybV9pbmZvX3ByaW50ZXIoaTkxNS0+ZHJtLmRldik7Cj4gLQo+IC0JCQlwcl9l cnIoIiVzIGZhaWxlZCB0byBpZGxlIGFmdGVyIHJlc2V0XG4iLAo+IC0JCQkgICAgICAgZW5naW5l LT5uYW1lKTsKPiAtCQkJaW50ZWxfZW5naW5lX2R1bXAoZW5naW5lLCAmcCwKPiAtCQkJCQkgICIl c1xuIiwgZW5naW5lLT5uYW1lKTsKPiAtCj4gLQkJCWVyciA9IC1FSU87Cj4gLQkJCWJyZWFrOwo+ IC0JCX0KPiAtCj4gICAJCWVyciA9IGlndF9mbHVzaF90ZXN0KGk5MTUsIDApOwo+ICAgCQlpZiAo ZXJyKQo+ICAgCQkJYnJlYWs7Cj4gQEAgLTU5NCwxOSArNTgzLDYgQEAgc3RhdGljIGludCBpZ3Rf cmVzZXRfbm9wX2VuZ2luZSh2b2lkICphcmcpCj4gICAJCQkJZXJyID0gLUVJTlZBTDsKPiAgIAkJ CQlicmVhazsKPiAgIAkJCX0KPiAtCj4gLQkJCWlmICghaTkxNV9yZXNldF9mbHVzaChpOTE1KSkg ewo+IC0JCQkJc3RydWN0IGRybV9wcmludGVyIHAgPQo+IC0JCQkJCWRybV9pbmZvX3ByaW50ZXIo aTkxNS0+ZHJtLmRldik7Cj4gLQo+IC0JCQkJcHJfZXJyKCIlcyBmYWlsZWQgdG8gaWRsZSBhZnRl ciByZXNldFxuIiwKPiAtCQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwo+IC0JCQkJaW50ZWxfZW5n aW5lX2R1bXAoZW5naW5lLCAmcCwKPiAtCQkJCQkJICAiJXNcbiIsIGVuZ2luZS0+bmFtZSk7Cj4g LQo+IC0JCQkJZXJyID0gLUVJTzsKPiAtCQkJCWJyZWFrOwo+IC0JCQl9Cj4gICAJCX0gd2hpbGUg KHRpbWVfYmVmb3JlKGppZmZpZXMsIGVuZF90aW1lKSk7Cj4gICAJCWNsZWFyX2JpdChJOTE1X1JF U0VUX0VOR0lORSArIGlkLCAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKTsKPiAgIAkJcHJfaW5mbygi JXMoJXMpOiAlZCByZXNldHNcbiIsIF9fZnVuY19fLCBlbmdpbmUtPm5hbWUsIGNvdW50KTsKPiBA QCAtNjY5LDYgKzY0NSw3IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGFjdGl2ZSkKPiAgIAkJcmVzZXRfZW5naW5lX2Nv dW50ID0gaTkxNV9yZXNldF9lbmdpbmVfY291bnQoJmk5MTUtPmdwdV9lcnJvciwKPiAgIAkJCQkJ CQkgICAgIGVuZ2luZSk7Cj4gICAKPiArCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7Cj4g ICAJCXNldF9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBpZCwgJmk5MTUtPmdwdV9lcnJvci5mbGFn cyk7Cj4gICAJCWRvIHsKPiAgIAkJCWlmIChhY3RpdmUpIHsKPiBAQCAtNzIxLDIxICs2OTgsOSBA QCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwgYm9vbCBhY3RpdmUpCj4gICAJCQkJZXJyID0gLUVJTlZBTDsKPiAgIAkJCQlicmVhazsK PiAgIAkJCX0KPiAtCj4gLQkJCWlmICghaTkxNV9yZXNldF9mbHVzaChpOTE1KSkgewo+IC0JCQkJ c3RydWN0IGRybV9wcmludGVyIHAgPQo+IC0JCQkJCWRybV9pbmZvX3ByaW50ZXIoaTkxNS0+ZHJt LmRldik7Cj4gLQo+IC0JCQkJcHJfZXJyKCIlcyBmYWlsZWQgdG8gaWRsZSBhZnRlciByZXNldFxu IiwKPiAtCQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwo+IC0JCQkJaW50ZWxfZW5naW5lX2R1bXAo ZW5naW5lLCAmcCwKPiAtCQkJCQkJICAiJXNcbiIsIGVuZ2luZS0+bmFtZSk7Cj4gLQo+IC0JCQkJ ZXJyID0gLUVJTzsKPiAtCQkJCWJyZWFrOwo+IC0JCQl9Cj4gICAJCX0gd2hpbGUgKHRpbWVfYmVm b3JlKGppZmZpZXMsIGVuZF90aW1lKSk7Cj4gICAJCWNsZWFyX2JpdChJOTE1X1JFU0VUX0VOR0lO RSArIGlkLCAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKTsKPiArCQlpbnRlbF9lbmdpbmVfcG1fcHV0 KGVuZ2luZSk7Cj4gICAKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+IEBAIC05NDIsNiAr OTA3LDcgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ICAgCQkJZ2V0X3Rhc2tfc3RydWN0KHRzayk7Cj4gICAJCX0KPiAgIAo+ ICsJCWludGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKPiAgIAkJc2V0X2JpdChJOTE1X1JFU0VU X0VOR0lORSArIGlkLCAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKTsKPiAgIAkJZG8gewo+ICAgCQkJ c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBOVUxMOwo+IEBAIC0xMDE4LDYgKzk4NCw3IEBAIHN0 YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKPiAgIAkJCX0KPiAgIAkJfSB3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgZW5kX3RpbWUp KTsKPiAgIAkJY2xlYXJfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgaWQsICZpOTE1LT5ncHVfZXJy b3IuZmxhZ3MpOwo+ICsJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAkJcHJfaW5m bygiaTkxNV9yZXNldF9lbmdpbmUoJXM6JXMpOiAlbHUgcmVzZXRzXG4iLAo+ICAgCQkJZW5naW5l LT5uYW1lLCB0ZXN0X25hbWUsIGNvdW50KTsKPiAgIAo+IEBAIC0xMDY5LDcgKzEwMzYsOSBAQCBz dGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2luZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gICAJCWlmIChlcnIpCj4gICAJCQlicmVhazsKPiAgIAo+IC0JCWVyciA9IGlndF9mbHVz aF90ZXN0KGk5MTUsIDApOwo+ICsJCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICsJCWVyciA9IGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+ICsJ CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJCWlmIChlcnIpCj4g ICAJCQlicmVhazsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF93b3JrYXJvdW5kcy5jCj4gaW5kZXggOTZjNjI4MmYzYTEwLi40NjFkOTE3MzcwNzcgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKPiBA QCAtNzEsNyArNzEsNiBAQCByZWFkX25vbnByaXZzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAljb25zdCB1MzIg YmFzZSA9IGVuZ2luZS0+bW1pb19iYXNlOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpyZXN1bHQ7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycTsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAl1MzIgc3JtLCAqY3M7 Cj4gQEAgLTEwMyw5ICsxMDIsNyBAQCByZWFkX25vbnByaXZzKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpZiAoZXJyKQo+ ICAgCQlnb3RvIGVycl9vYmo7Cj4gICAKPiAtCXJxID0gRVJSX1BUUigtRU5PREVWKTsKPiAtCXdp dGhfaW50ZWxfcnVudGltZV9wbShlbmdpbmUtPmk5MTUsIHdha2VyZWYpCj4gLQkJcnEgPSBpOTE1 X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOwo+ICsJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2Mo ZW5naW5lLCBjdHgpOwo+ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIo cnEpOwo+ICAgCQlnb3RvIGVycl9waW47Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiBpbmRleCA4ZGNiYTc4ZmI0M2IuLjAwZDNmZjc0NmViMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gQEAgLTIwNDEsOCArMjA0MSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9y cHNfYm9vc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gICAJfQo+ICAg Cj4gICAJc2VxX3ByaW50ZihtLCAiUlBTIGVuYWJsZWQ/ICVkXG4iLCBycHMtPmVuYWJsZWQpOwo+ IC0Jc2VxX3ByaW50ZihtLCAiR1BVIGJ1c3k/ICVzIFslZCByZXF1ZXN0c11cbiIsCj4gLQkJICAg eWVzbm8oZGV2X3ByaXYtPmd0LmF3YWtlKSwgZGV2X3ByaXYtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7 Cj4gKwlzZXFfcHJpbnRmKG0sICJHUFUgYnVzeT8gJXNcbiIsIHllc25vKGRldl9wcml2LT5ndC5h d2FrZSkpOwo+ICAgCXNlcV9wcmludGYobSwgIkJvb3N0cyBvdXRzdGFuZGluZz8gJWRcbiIsCj4g ICAJCSAgIGF0b21pY19yZWFkKCZycHMtPm51bV93YWl0ZXJzKSk7Cj4gICAJc2VxX3ByaW50Ziht LCAiSW50ZXJhY3RpdmU/ICVkXG4iLCBSRUFEX09OQ0UocnBzLT5wb3dlci5pbnRlcmFjdGl2ZSkp Owo+IEBAIC0yMDYxLDkgKzIwNjAsNyBAQCBzdGF0aWMgaW50IGk5MTVfcnBzX2Jvb3N0X2luZm8o c3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAgCj4gICAJc2VxX3ByaW50ZihtLCAi V2FpdCBib29zdHM6ICVkXG4iLCBhdG9taWNfcmVhZCgmcnBzLT5ib29zdHMpKTsKPiAgIAo+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNiAmJgo+IC0JICAgIHJwcy0+ZW5hYmxlZCAmJgo+ IC0JICAgIGRldl9wcml2LT5ndC5hY3RpdmVfcmVxdWVzdHMpIHsKPiArCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDYgJiYgcnBzLT5lbmFibGVkICYmIGRldl9wcml2LT5ndC5hd2FrZSkgewo+ ICAgCQl1MzIgcnB1cCwgcnB1cGVpOwo+ICAgCQl1MzIgcnBkb3duLCBycGRvd25laTsKPiAgIAo+ IEBAIC0zMDkyLDkgKzMwODksOSBAQCBzdGF0aWMgaW50IGk5MTVfZW5naW5lX2luZm8oc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAKPiAgIAl3YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAgCj4gLQlzZXFfcHJpbnRmKG0sICJHVCBhd2FrZT8g JXNcbiIsIHllc25vKGRldl9wcml2LT5ndC5hd2FrZSkpOwo+IC0Jc2VxX3ByaW50ZihtLCAiR2xv YmFsIGFjdGl2ZSByZXF1ZXN0czogJWRcbiIsCj4gLQkJICAgZGV2X3ByaXYtPmd0LmFjdGl2ZV9y ZXF1ZXN0cyk7Cj4gKwlzZXFfcHJpbnRmKG0sICJHVCBhd2FrZT8gJXMgWyVkXVxuIiwKPiArCQkg ICB5ZXNubyhkZXZfcHJpdi0+Z3QuYXdha2UpLAo+ICsJCSAgIGF0b21pY19yZWFkKCZkZXZfcHJp di0+Z3Qud2FrZXJlZi5jb3VudCkpOwo+ICAgCXNlcV9wcmludGYobSwgIkNTIHRpbWVzdGFtcCBm cmVxdWVuY3k6ICV1IGtIelxuIiwKPiAgIAkJICAgUlVOVElNRV9JTkZPKGRldl9wcml2KS0+Y3Nf dGltZXN0YW1wX2ZyZXF1ZW5jeV9raHopOwo+ICAgCj4gQEAgLTM5NDAsOCArMzkzNyw3IEBAIGk5 MTVfZHJvcF9jYWNoZXNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gICAKPiAgIAlpZiAodmFs ICYgRFJPUF9JRExFKSB7Cj4gICAJCWRvIHsKPiAtCQkJaWYgKFJFQURfT05DRShpOTE1LT5ndC5h Y3RpdmVfcmVxdWVzdHMpKQo+IC0JCQkJZmx1c2hfZGVsYXllZF93b3JrKCZpOTE1LT5nZW0ucmV0 aXJlX3dvcmspOwo+ICsJCQlmbHVzaF9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5yZXRpcmVfd29y ayk7Cj4gICAJCQlkcmFpbl9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5pZGxlX3dvcmspOwo+ICAg CQl9IHdoaWxlIChSRUFEX09OQ0UoaTkxNS0+Z3QuYXdha2UpKTsKPiAgIAl9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gaW5kZXggOThiOTk3NTI2ZGFhLi5jOGNiNzBkNGZlOTEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtNDcsOCArNDcsOSBAQAo+ICAgI2luY2x1ZGUgPGRy bS9kcm1fcHJvYmVfaGVscGVyLmg+Cj4gICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gICAK PiAtI2luY2x1ZGUgImd0L2ludGVsX3dvcmthcm91bmRzLmgiCj4gKyNpbmNsdWRlICJndC9pbnRl bF9ndF9wbS5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX3Jlc2V0LmgiCj4gKyNpbmNsdWRlICJn dC9pbnRlbF93b3JrYXJvdW5kcy5oIgo+ICAgCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAg ICNpbmNsdWRlICJpOTE1X3BtdS5oIgo+IEBAIC0yMzIzLDcgKzIzMjQsNyBAQCBzdGF0aWMgaW50 IGk5MTVfZHJtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCj4gICAJ aW50ZWxfcG93ZXJfZG9tYWluc19yZXN1bWUoZGV2X3ByaXYpOwo+ICAgCj4gLQlpbnRlbF9lbmdp bmVzX3Nhbml0aXplKGRldl9wcml2LCB0cnVlKTsKPiArCWludGVsX2d0X3Nhbml0aXplKGRldl9w cml2LCB0cnVlKTsKPiAgIAo+ICAgCWVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2 KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGNiYWU5YmUwNTJlMC4uZTVh ZTZjMzZlOTU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTIwMDYsMTAgKzIw MDYsMTAgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAgCQkJc3RydWN0IGxpc3RfaGVh ZCBod3NwX2ZyZWVfbGlzdDsKPiAgIAkJfSB0aW1lbGluZXM7Cj4gICAKPiAtCQlpbnRlbF9lbmdp bmVfbWFza190IGFjdGl2ZV9lbmdpbmVzOwo+ICAgCQlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9y aW5nczsKPiAgIAkJc3RydWN0IGxpc3RfaGVhZCBjbG9zZWRfdm1hOwo+IC0JCXUzMiBhY3RpdmVf cmVxdWVzdHM7Cj4gKwo+ICsJCXN0cnVjdCBpbnRlbF93YWtlcmVmIHdha2VyZWY7Cj4gICAKPiAg IAkJLyoqCj4gICAJCSAqIElzIHRoZSBHUFUgY3VycmVudGx5IGNvbnNpZGVyZWQgaWRsZSwgb3Ig YnVzeSBleGVjdXRpbmcKPiBAQCAtMjAyMCwxMiArMjAyMCwxNiBAQCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSB7Cj4gICAJCSAqLwo+ICAgCQlpbnRlbF93YWtlcmVmX3QgYXdha2U7Cj4gICAKPiAr CQlzdHJ1Y3QgYmxvY2tpbmdfbm90aWZpZXJfaGVhZCBwbV9ub3RpZmljYXRpb25zOwo+ICsKPiAg IAkJa3RpbWVfdCBsYXN0X2luaXRfdGltZTsKPiAgIAo+ICAgCQlzdHJ1Y3QgaTkxNV92bWEgKnNj cmF0Y2g7Cj4gICAJfSBndDsKPiAgIAo+ICAgCXN0cnVjdCB7Cj4gKwkJc3RydWN0IG5vdGlmaWVy X2Jsb2NrIHBtX25vdGlmaWVyOwo+ICsKPiAgIAkJLyoqCj4gICAJCSAqIFdlIGxlYXZlIHRoZSB1 c2VyIElSUSBvZmYgYXMgbXVjaCBhcyBwb3NzaWJsZSwKPiAgIAkJICogYnV0IHRoaXMgbWVhbnMg dGhhdCByZXF1ZXN0cyB3aWxsIGZpbmlzaCBhbmQgbmV2ZXIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPiBpbmRleCA3NGI5OTEyNjgzMGIuLmQwMjExMjcxZjEwMyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+IEBAIC0zOSw2ICszOSw4IEBACj4gICAjaW5jbHVkZSA8bGludXgvZG1hLWJ1 Zi5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L21tYW4uaD4KPiAgIAo+ICsjaW5jbHVkZSAiZ3QvaW50 ZWxfZW5naW5lX3BtLmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgo+ICAgI2luY2x1 ZGUgImd0L2ludGVsX21vY3MuaCIKPiAgICNpbmNsdWRlICJndC9pbnRlbF9yZXNldC5oIgo+ICAg I2luY2x1ZGUgImd0L2ludGVsX3dvcmthcm91bmRzLmgiCj4gQEAgLTI5MTEsOSArMjkxMyw2IEBA IHdhaXRfZm9yX3RpbWVsaW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAlz dHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0ID0gJmk5MTUtPmd0LnRpbWVsaW5lczsKPiAgIAlz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGw7Cj4gICAKPiAtCWlmICghUkVBRF9PTkNFKGk5MTUtPmd0 LmFjdGl2ZV9yZXF1ZXN0cykpCj4gLQkJcmV0dXJuIHRpbWVvdXQ7Cj4gLQo+ICAgCW11dGV4X2xv Y2soJmd0LT5tdXRleCk7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bCwgJmd0LT5hY3RpdmVf bGlzdCwgbGluaykgewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiBAQCAtMjk1Myw5 ICsyOTUyLDEwIEBAIHdhaXRfZm9yX3RpbWVsaW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKPiAgIGludCBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICAgCQkJICAgdW5zaWduZWQgaW50IGZsYWdzLCBsb25nIHRpbWVvdXQpCj4g ICB7Cj4gLQlHRU1fVFJBQ0UoImZsYWdzPSV4ICglcyksIHRpbWVvdXQ9JWxkJXNcbiIsCj4gKwlH RU1fVFJBQ0UoImZsYWdzPSV4ICglcyksIHRpbWVvdXQ9JWxkJXMsIGF3YWtlPz0lc1xuIiwKPiAg IAkJICBmbGFncywgZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEID8gImxvY2tlZCIgOiAidW5sb2Nr ZWQiLAo+IC0JCSAgdGltZW91dCwgdGltZW91dCA9PSBNQVhfU0NIRURVTEVfVElNRU9VVCA/ICIg KGZvcmV2ZXIpIiA6ICIiKTsKPiArCQkgIHRpbWVvdXQsIHRpbWVvdXQgPT0gTUFYX1NDSEVEVUxF X1RJTUVPVVQgPyAiIChmb3JldmVyKSIgOiAiIiwKPiArCQkgIHllc25vKGk5MTUtPmd0LmF3YWtl KSk7Cj4gICAKPiAgIAkvKiBJZiB0aGUgZGV2aWNlIGlzIGFzbGVlcCwgd2UgaGF2ZSBubyByZXF1 ZXN0cyBvdXRzdGFuZGluZyAqLwo+ICAgCWlmICghUkVBRF9PTkNFKGk5MTUtPmd0LmF3YWtlKSkK PiBAQCAtNDE3Nyw3ICs0MTc3LDcgQEAgdm9pZCBpOTE1X2dlbV9zYW5pdGl6ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkgKiBpdCBtYXkgaW1wYWN0IHRoZSBkaXNwbGF5IGFu ZCB3ZSBhcmUgdW5jZXJ0YWluIGFib3V0IHRoZSBzdGFiaWxpdHkKPiAgIAkgKiBvZiB0aGUgcmVz ZXQsIHNvIHRoaXMgY291bGQgYmUgYXBwbGllZCB0byBldmVuIGVhcmxpZXIgZ2VuLgo+ICAgCSAq Lwo+IC0JaW50ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1LCBmYWxzZSk7Cj4gKwlpbnRlbF9ndF9z YW5pdGl6ZShpOTE1LCBmYWxzZSk7Cj4gICAKPiAgIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1 dCgmaTkxNS0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgIAlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1LCB3YWtlcmVmKTsKPiBAQCAtNDIzNSwyNyArNDIzNSw2IEBAIHN0YXRpYyB2b2lkIGlu aXRfdW51c2VkX3JpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAl9 Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBfX2k5MTVfZ2VtX3Jlc3RhcnRfZW5naW5lcyh2b2lk ICpkYXRhKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRhdGE7Cj4g LQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKPiAtCWludCBlcnI7Cj4gLQo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwg aWQpIHsKPiAtCQllcnIgPSBlbmdpbmUtPmluaXRfaHcoZW5naW5lKTsKPiAtCQlpZiAoZXJyKSB7 Cj4gLQkJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlc3RhcnQgJXMgKCVkKVxuIiwKPiAtCQkJCSAg ZW5naW5lLT5uYW1lLCBlcnIpOwo+IC0JCQlyZXR1cm4gZXJyOwo+IC0JCX0KPiAtCX0KPiAtCj4g LQlpbnRlbF9lbmdpbmVzX3NldF9zY2hlZHVsZXJfY2FwcyhpOTE1KTsKPiAtCj4gLQlyZXR1cm4g MDsKPiAtfQo+IC0KPiAgIGludCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIHsKPiAgIAlpbnQgcmV0Owo+IEBAIC00MzE0LDEyICs0MjkzLDEz IEBAIGludCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIAlpbnRlbF9tb2NzX2luaXRfbDNjY190YWJsZShkZXZfcHJpdik7Cj4gICAKPiAgIAkv KiBPbmx5IHdoZW4gdGhlIEhXIGlzIHJlLWluaXRpYWxpc2VkLCBjYW4gd2UgcmVwbGF5IHRoZSBy ZXF1ZXN0cyAqLwo+IC0JcmV0ID0gX19pOTE1X2dlbV9yZXN0YXJ0X2VuZ2luZXMoZGV2X3ByaXYp Owo+ICsJcmV0ID0gaW50ZWxfZW5naW5lc19yZXN1bWUoZGV2X3ByaXYpOwo+ICAgCWlmIChyZXQp Cj4gICAJCWdvdG8gY2xlYW51cF91YzsKPiAgIAo+ICAgCWludGVsX3VuY29yZV9mb3JjZXdha2Vf cHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiAgIAo+ICsJaW50ZWxfZW5n aW5lc19zZXRfc2NoZWR1bGVyX2NhcHMoZGV2X3ByaXYpOwo+ICAgCXJldHVybiAwOwo+ICAgCj4g ICBjbGVhbnVwX3VjOgo+IEBAIC00NjI1LDYgKzQ2MDUsNyBAQCBpbnQgaTkxNV9nZW1faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICBlcnJfaW5pdF9odzoKPiAgIAlt dXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICsJaTkxNV9n ZW1fc2V0X3dlZGdlZChkZXZfcHJpdik7Cj4gICAJaTkxNV9nZW1fc3VzcGVuZChkZXZfcHJpdik7 Cj4gICAJaTkxNV9nZW1fc3VzcGVuZF9sYXRlKGRldl9wcml2KTsKPiAgIAo+IEBAIC00Njg2LDYg KzQ2NjcsOCBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gICAKPiAgIHZvaWQgaTkxNV9nZW1fZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICB7Cj4gKwlHRU1fQlVHX09OKGRldl9wcml2LT5ndC5hd2FrZSk7Cj4g Kwo+ICAgCWk5MTVfZ2VtX3N1c3BlbmRfbGF0ZShkZXZfcHJpdik7Cj4gICAJaW50ZWxfZGlzYWJs ZV9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+ICAgCj4gQEAgLTQ3ODAsNiArNDc2Myw4IEBAIGlu dCBpOTE1X2dlbV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIHsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gKwlpbnRlbF9ndF9wbV9pbml0KGRldl9wcml2KTsK PiArCj4gICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5ndC5hY3RpdmVfcmluZ3MpOwo+ICAg CUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Z3QuY2xvc2VkX3ZtYSk7Cj4gICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmgKPiBpbmRleCA5MDc0ZWIxZTg0M2YuLjY3ZjhhNGE4MDdhMCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uaAo+IEBAIC03NSw5ICs3NSw2IEBAIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlOwo+ICAgCj4gICAjZGVmaW5lIEk5MTVfR0VNX0lETEVfVElNRU9VVCAoSFogLyA1 KQo+ICAgCj4gLXZvaWQgaTkxNV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSk7Cj4gLXZvaWQgaTkxNV9nZW1fdW5wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKPiAtCj4gICBzdGF0aWMgaW5saW5lIHZvaWQgX190YXNrbGV0X2Rpc2FibGVfc3luY19vbmNl KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKPiAgIHsKPiAgIAlpZiAoIWF0b21pY19mZXRjaF9p bmMoJnQtPmNvdW50KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4g aW5kZXggM2ViMWE2NjRiNWZhLi43NmVkNzRlNzVkODIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTgyNCwyNiArODI0LDYgQEAgaW50IGk5MTVfZ2Vt X3ZtX2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAg IAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4g LWxhc3RfcmVxdWVzdF9vbl9lbmdpbmUoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lLAo+ IC0JCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gLXsKPiAtCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxOwo+IC0KPiAtCUdFTV9CVUdfT04odGltZWxpbmUgPT0gJmVuZ2lu ZS0+dGltZWxpbmUpOwo+IC0KPiAtCXJxID0gaTkxNV9hY3RpdmVfcmVxdWVzdF9yYXcoJnRpbWVs aW5lLT5sYXN0X3JlcXVlc3QsCj4gLQkJCQkgICAgICZlbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+IC0JaWYgKHJxICYmIHJxLT5lbmdpbmUtPm1hc2sgJiBlbmdpbmUtPm1hc2spIHsK PiAtCQlHRU1fVFJBQ0UoImxhc3QgcmVxdWVzdCBvbiBlbmdpbmUgJXM6ICVsbHg6JWxsdVxuIiwK PiAtCQkJICBlbmdpbmUtPm5hbWUsIHJxLT5mZW5jZS5jb250ZXh0LCBycS0+ZmVuY2Uuc2Vxbm8p Owo+IC0JCUdFTV9CVUdfT04ocnEtPnRpbWVsaW5lICE9IHRpbWVsaW5lKTsKPiAtCQlyZXR1cm4g cnE7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIE5VTEw7Cj4gLX0KPiAtCj4gICBzdHJ1Y3QgY29udGV4 dF9iYXJyaWVyX3Rhc2sgewo+ICAgCXN0cnVjdCBpOTE1X2FjdGl2ZSBiYXNlOwo+ICAgCXZvaWQg KCp0YXNrKSh2b2lkICpkYXRhKTsKPiBAQCAtODcxLDcgKzg1MSw2IEBAIHN0YXRpYyBpbnQgY29u dGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKPiAgIAlzdHJ1Y3QgY29udGV4 dF9iYXJyaWVyX3Rhc2sgKmNiOwo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgKm5leHQ7 Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAlpbnQgZXJyID0gMDsKPiAgIAo+ICAg CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IEBAIC04ODQs NyArODYzLDYgQEAgc3RhdGljIGludCBjb250ZXh0X2JhcnJpZXJfdGFzayhzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAo+ICAgCWk5MTVfYWN0aXZlX2luaXQoaTkxNSwgJmNiLT5iYXNlLCBj Yl9yZXRpcmUpOwo+ICAgCWk5MTVfYWN0aXZlX2FjcXVpcmUoJmNiLT5iYXNlKTsKPiAgIAo+IC0J d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAgCXJidHJlZV9wb3N0b3Jk ZXJfZm9yX2VhY2hfZW50cnlfc2FmZShjZSwgbmV4dCwgJmN0eC0+aHdfY29udGV4dHMsIG5vZGUp IHsKPiAgIAkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gY2UtPmVuZ2luZTsKPiAg IAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gQEAgLTkxNCw3ICs4OTIsNiBAQCBzdGF0aWMg aW50IGNvbnRleHRfYmFycmllcl90YXNrKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4g ICAJCWlmIChlcnIpCj4gICAJCQlicmVhazsKPiAgIAl9Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1LCB3YWtlcmVmKTsKPiAgIAo+ICAgCWNiLT50YXNrID0gZXJyID8gTlVMTCA6IHRhc2s7 IC8qIGNhbGxlciBuZWVkcyB0byB1bndpbmQgaW5zdGVhZCAqLwo+ICAgCWNiLT5kYXRhID0gZGF0 YTsKPiBAQCAtOTI0LDU0ICs5MDEsNiBAQCBzdGF0aWMgaW50IGNvbnRleHRfYmFycmllcl90YXNr KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAg IAo+IC1pbnQgaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAo+IC0JCQkJICAgICAgaW50ZWxfZW5naW5lX21hc2tfdCBtYXNrKQo+ IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQo+IC0JR0VNX1RSQUNF KCJhd2FrZT89JXNcbiIsIHllc25vKGk5MTUtPmd0LmF3YWtlKSk7Cj4gLQo+IC0JbG9ja2RlcF9h c3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlHRU1fQlVHX09OKCFpOTE1 LT5rZXJuZWxfY29udGV4dCk7Cj4gLQo+IC0JLyogSW5vcGVyYWJsZSwgc28gcHJlc3VtZSB0aGUg R1BVIGlzIHNhZmVseSBwb2ludGluZyBpbnRvIHRoZSB2b2lkISAqLwo+IC0JaWYgKGk5MTVfdGVy bWluYWxseV93ZWRnZWQoaTkxNSkpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0JZm9yX2VhY2hfZW5n aW5lX21hc2tlZChlbmdpbmUsIGk5MTUsIG1hc2ssIG1hc2spIHsKPiAtCQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZzsKPiAtCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAtCj4gLQkJcnEgPSBp OTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+IC0JCWlmIChJU19F UlIocnEpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gLQo+IC0JCS8qIFF1ZXVlIHRoaXMg c3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rpdml0eSAqLwo+IC0JCWxpc3RfZm9yX2VhY2hfZW50 cnkocmluZywgJmk5MTUtPmd0LmFjdGl2ZV9yaW5ncywgYWN0aXZlX2xpbmspIHsKPiAtCQkJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcHJldjsKPiAtCj4gLQkJCXByZXYgPSBsYXN0X3JlcXVlc3Rfb25f ZW5naW5lKHJpbmctPnRpbWVsaW5lLCBlbmdpbmUpOwo+IC0JCQlpZiAoIXByZXYpCj4gLQkJCQlj b250aW51ZTsKPiAtCj4gLQkJCWlmIChwcmV2LT5nZW1fY29udGV4dCA9PSBpOTE1LT5rZXJuZWxf Y29udGV4dCkKPiAtCQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkJR0VNX1RSQUNFKCJhZGQgYmFycmll ciBvbiAlcyBmb3IgJWxseDolbGxkXG4iLAo+IC0JCQkJICBlbmdpbmUtPm5hbWUsCj4gLQkJCQkg IHByZXYtPmZlbmNlLmNvbnRleHQsCj4gLQkJCQkgIHByZXYtPmZlbmNlLnNlcW5vKTsKPiAtCQkJ aTkxNV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxLT5zdWJtaXQsCj4gLQkJCQkJCQkg JnByZXYtPnN1Ym1pdCwKPiAtCQkJCQkJCSBJOTE1X0ZFTkNFX0dGUCk7Cj4gLQkJfQo+IC0KPiAt CQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0K PiAgIHN0YXRpYyBpbnQgZ2V0X3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZp bGVfcHJpdiwKPiAgIAkJICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkg ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKPiBAQCAtMTE2OSw5 ICsxMDk4LDcgQEAgc3RhdGljIGludCBnZW44X2VtaXRfcnBjc19jb25maWcoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCj4gICBzdGF0aWMgaW50Cj4gICBnZW44X21vZGlmeV9ycGNzKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGludGVsX3NzZXUgc3NldSkKPiAgIHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY2UtPmVuZ2luZS0+aTkxNTsKPiAgIAlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycTsKPiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAgCWludCBy ZXQ7Cj4gICAKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+cGluX211dGV4KTsKPiBAQCAt MTE4NSwxNCArMTExMiw5IEBAIGdlbjhfbW9kaWZ5X3JwY3Moc3RydWN0IGludGVsX2NvbnRleHQg KmNlLCBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQo+ICAgCWlmICghaW50ZWxfY29udGV4dF9pc19w aW5uZWQoY2UpKQo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+IC0JLyogU3VibWl0dGluZyByZXF1ZXN0 cyBldGMgbmVlZHMgdGhlIGh3IGF3YWtlLiAqLwo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOwo+IC0KPiAgIAlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoY2UtPmVuZ2lu ZS0+a2VybmVsX2NvbnRleHQpOwo+IC0JaWYgKElTX0VSUihycSkpIHsKPiAtCQlyZXQgPSBQVFJf RVJSKHJxKTsKPiAtCQlnb3RvIG91dF9wdXQ7Cj4gLQl9Cj4gKwlpZiAoSVNfRVJSKHJxKSkKPiAr CQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gICAKPiAgIAkvKiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRl ciBhbGwgb3RoZXIgYWN0aXZpdHkgYnkgdGhpcyBjb250ZXh0LiAqLwo+ICAgCXJldCA9IGk5MTVf YWN0aXZlX3JlcXVlc3Rfc2V0KCZjZS0+cmluZy0+dGltZWxpbmUtPmxhc3RfcmVxdWVzdCwgcnEp Owo+IEBAIC0xMjE2LDkgKzExMzgsNiBAQCBnZW44X21vZGlmeV9ycGNzKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwgc3RydWN0IGludGVsX3NzZXUgc3NldSkKPiAgIAo+ICAgb3V0X2FkZDoKPiAg IAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAtb3V0X3B1dDoKPiAtCWludGVsX3J1bnRpbWVfcG1f cHV0KGk5MTUsIHdha2VyZWYpOwo+IC0KPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAo+IGluZGV4IGNlYzI3OGFiMDRlMi4u NWE4ZTA4MDQ5OWZiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu aAo+IEBAIC0xNDEsMTAgKzE0MSw2IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7 Cj4gICB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfY2xvc2Uoc3RydWN0IGRybV9maWxlICpmaWxlKTsK PiAgIAo+IC1pbnQgaTkxNV9zd2l0Y2hfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7 Cj4gLWludCBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gLQkJCQkgICAgICBpbnRlbF9lbmdpbmVfbWFza190IGVuZ2luZV9t YXNrKTsKPiAtCj4gICB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAq Y3R4X3JlZik7Cj4gICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gICBpOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZV9ndnQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ldmljdC5jCj4gaW5kZXggMDYwZjU5MDM1NDRhLi4wYmRiM2UwNzJiYTUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiBAQCAtMzYsMTUgKzM2LDgg QEAgSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0YXRpYyBzdHJ1Y3QgaWd0X2V2aWN0X2N0bCB7Cj4g ICAJYm9vbCBmYWlsX2lmX2J1c3k6MTsKPiAgIH0gaWd0X2V2aWN0X2N0bDspCj4gICAKPiAtc3Rh dGljIGJvb2wgZ2d0dF9pc19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IC17 Cj4gLQlyZXR1cm4gIWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0czsKPiAtfQo+IC0KPiAgIHN0YXRp YyBpbnQgZ2d0dF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAt CWludCBlcnI7Cj4gLQo+ICAgCS8qCj4gICAJICogTm90IGV2ZXJ5dGhpbmcgaW4gdGhlIEdHVFQg aXMgdHJhY2tlZCB2aWEgdm1hIChvdGhlcndpc2Ugd2UKPiAgIAkgKiBjb3VsZCBldmljdCBhcyBy ZXF1aXJlZCB3aXRoIG1pbmltYWwgc3RhbGxpbmcpIHNvIHdlIGFyZSBmb3JjZWQKPiBAQCAtNTIs MTkgKzQ1LDEwIEBAIHN0YXRpYyBpbnQgZ2d0dF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiAgIAkgKiB0aGUgaG9wZXMgdGhhdCB3ZSBjYW4gdGhlbiByZW1vdmUgY29udGV4 dHMgYW5kIHRoZSBsaWtlIG9ubHkKPiAgIAkgKiBib3VuZCBieSB0aGVpciBhY3RpdmUgcmVmZXJl bmNlLgo+ICAgCSAqLwo+IC0JZXJyID0gaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0 KGk5MTUsIGk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzKTsKPiAtCWlmIChlcnIpCj4gLQkJcmV0dXJu IGVycjsKPiAtCj4gLQllcnIgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsCj4gLQkJCQkg ICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKPiAtCQkJCSAgICAgSTkxNV9XQUlUX0xPQ0tF RCwKPiAtCQkJCSAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+IC0JaWYgKGVycikKPiAtCQly ZXR1cm4gZXJyOwo+IC0KPiAtCUdFTV9CVUdfT04oIWdndHRfaXNfaWRsZShpOTE1KSk7Cj4gLQly ZXR1cm4gMDsKPiArCXJldHVybiBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsCj4gKwkJCQkg ICAgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Cj4gKwkJCQkgICAgICBJOTE1X1dBSVRfTE9D S0VELAo+ICsJCQkJICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAgfQo+ICAgCj4gICBz dGF0aWMgYm9vbAo+IEBAIC0yMjIsMjQgKzIwNiwxNyBAQCBpOTE1X2dlbV9ldmljdF9zb21ldGhp bmcoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gICAJICogdXMgYSB0ZXJtaW5hdGlv biBjb25kaXRpb24sIHdoZW4gdGhlIGxhc3QgcmV0aXJlZCBjb250ZXh0IGlzCj4gICAJICogdGhl IGtlcm5lbCdzIHRoZXJlIGlzIG5vIG1vcmUgd2UgY2FuIGV2aWN0Lgo+ICAgCSAqLwo+IC0JaWYg KCFnZ3R0X2lzX2lkbGUoZGV2X3ByaXYpKSB7Cj4gLQkJaWYgKEk5MTVfU0VMRlRFU1RfT05MWShp Z3RfZXZpY3RfY3RsLmZhaWxfaWZfYnVzeSkpCj4gLQkJCXJldHVybiAtRUJVU1k7Cj4gKwlpZiAo STkxNV9TRUxGVEVTVF9PTkxZKGlndF9ldmljdF9jdGwuZmFpbF9pZl9idXN5KSkKPiArCQlyZXR1 cm4gLUVCVVNZOwo+ICAgCj4gLQkJcmV0ID0gZ2d0dF9mbHVzaChkZXZfcHJpdik7Cj4gLQkJaWYg KHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiArCXJldCA9IGdndHRfZmx1c2goZGV2X3ByaXYpOwo+ ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICAgCj4gLQkJY29uZF9yZXNjaGVkKCk7Cj4g LQkJZ290byBzZWFyY2hfYWdhaW47Cj4gLQl9Cj4gKwljb25kX3Jlc2NoZWQoKTsKPiAgIAo+IC0J LyoKPiAtCSAqIElmIHdlIHN0aWxsIGhhdmUgcGVuZGluZyBwYWdlZmxpcCBjb21wbGV0aW9ucywg ZHJvcAo+IC0JICogYmFjayB0byB1c2Vyc3BhY2UgdG8gZ2l2ZSBvdXIgd29ya3F1ZXVlcyB0aW1l IHRvCj4gLQkgKiBhY3F1aXJlIG91ciBsb2NrcyBhbmQgdW5waW4gdGhlIG9sZCBzY2Fub3V0cy4K PiAtCSAqLwo+IC0JcmV0dXJuIGludGVsX2hhc19wZW5kaW5nX2ZiX3VucGluKGRldl9wcml2KSA/ IC1FQUdBSU4gOiAtRU5PU1BDOwo+ICsJZmxhZ3MgfD0gUElOX05PTkJMT0NLOwo+ICsJZ290byBz ZWFyY2hfYWdhaW47Cj4gICAKPiAgIGZvdW5kOgo+ICAgCS8qIGRybV9tbSBkb2Vzbid0IGFsbG93 IGFueSBvdGhlciBvdGhlciBvcGVyYXRpb25zIHdoaWxlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9wbS5jCj4gaW5kZXggOWZiMGU4ZDU2N2EyLi4zNTU0ZDU1ZGFlMzUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3BtLmMKPiBAQCAtNCwxMzYgKzQsNjMgQEAKPiAgICAqIENvcHlyaWdo dCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gICAgKi8KPiAgIAo+ICsjaW5jbHVkZSAiZ3Qv aW50ZWxfZ3RfcG0uaCIKPiArCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNpbmNsdWRl ICJpOTE1X2dlbV9wbS5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZ2xvYmFscy5oIgo+IC0jaW5jbHVk ZSAiaW50ZWxfcG0uaCIKPiAgIAo+IC1zdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX3Bhcmsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX3Bhcmsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKPiAtCj4gLQlHRU1fVFJBQ0UoIlxuIik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7Cj4gKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAo+ICAgCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JR0VNX0JVR19PTihpOTE1 LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+IC0JR0VNX0JVR19PTighbGlzdF9lbXB0eSgmaTkxNS0+ Z3QuYWN0aXZlX3JpbmdzKSk7Cj4gLQo+IC0JaWYgKCFpOTE1LT5ndC5hd2FrZSkKPiAtCQlyZXR1 cm47Cj4gLQo+IC0JLyoKPiAtCSAqIEJlIHBhcmFub2lkIGFuZCBmbHVzaCBhIGNvbmN1cnJlbnQg aW50ZXJydXB0IHRvIG1ha2Ugc3VyZQo+IC0JICogd2UgZG9uJ3QgcmVhY3RpdmF0ZSBhbnkgaXJx IHRhc2tsZXRzIGFmdGVyIHBhcmtpbmcuCj4gLQkgKgo+IC0JICogRklYTUU6IE5vdGUgdGhhdCBl dmVuIHRob3VnaCB3ZSBoYXZlIHdhaXRlZCBmb3IgZXhlY2xpc3RzIHRvIGJlIGlkbGUsCj4gLQkg KiB0aGVyZSBtYXkgc3RpbGwgYmUgYW4gaW4tZmxpZ2h0IGludGVycnVwdCBldmVuIHRob3VnaCB0 aGUgQ1NCCj4gLQkgKiBpcyBub3cgZW1wdHkuIHN5bmNocm9uaXplX2lycSgpIG1ha2VzIHN1cmUg dGhhdCBhIHJlc2lkdWFsIGludGVycnVwdAo+IC0JICogaXMgY29tcGxldGVkIGJlZm9yZSB3ZSBj b250aW51ZSwgYnV0IGl0IGRvZXNuJ3QgcHJldmVudCB0aGUgSFcgZnJvbQo+IC0JICogcmFpc2lu ZyBhIHNwdXJpb3VzIGludGVycnVwdCBsYXRlci4gVG8gY29tcGxldGUgdGhlIHNoaWVsZCB3ZSBz aG91bGQKPiAtCSAqIGNvb3JkaW5hdGUgZGlzYWJsaW5nIHRoZSBDUyBpcnEgd2l0aCBmbHVzaGlu ZyB0aGUgaW50ZXJydXB0cy4KPiAtCSAqLwo+IC0Jc3luY2hyb25pemVfaXJxKGk5MTUtPmRybS5p cnEpOwo+IC0KPiAtCWludGVsX2VuZ2luZXNfcGFyayhpOTE1KTsKPiAtCWk5MTVfdGltZWxpbmVz X3BhcmsoaTkxNSk7Cj4gLQo+IC0JaTkxNV9wbXVfZ3RfcGFya2VkKGk5MTUpOwo+IC0JaTkxNV92 bWFfcGFya2VkKGk5MTUpOwo+IC0KPiAtCXdha2VyZWYgPSBmZXRjaF9hbmRfemVybygmaTkxNS0+ Z3QuYXdha2UpOwo+IC0JR0VNX0JVR19PTighd2FrZXJlZik7Cj4gLQo+IC0JaWYgKElOVEVMX0dF TihpOTE1KSA+PSA2KQo+IC0JCWdlbjZfcnBzX2lkbGUoaTkxNSk7Cj4gLQo+IC0JaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoaTkxNSwgUE9XRVJfRE9NQUlOX0dUX0lSUSwgd2FrZXJlZik7Cj4gLQo+ IC0JaTkxNV9nbG9iYWxzX3BhcmsoKTsKPiAtfQo+IC0KPiAtc3RhdGljIGJvb2wgc3dpdGNoX3Rv X2tlcm5lbF9jb250ZXh0X3N5bmMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gLQkJ CQkJICB1bnNpZ25lZCBsb25nIG1hc2spCj4gLXsKPiAtCWJvb2wgcmVzdWx0ID0gdHJ1ZTsKPiAt Cj4gLQkvKgo+IC0JICogRXZlbiBpZiB3ZSBmYWlsIHRvIHN3aXRjaCwgZ2l2ZSB3aGF0ZXZlciBp cyBydW5uaW5nIGEgc21hbGwgY2hhbmNlCj4gLQkgKiB0byBzYXZlIGl0c2VsZiBiZWZvcmUgd2Ug cmVwb3J0IHRoZSBmYWlsdXJlLiBZZXMsIHRoaXMgbWF5IGJlIGEKPiAtCSAqIGZhbHNlIHBvc2l0 aXZlIGR1ZSB0byBlLmcuIEVOT01FTSwgY2F2ZWF0IGVtcHRvciEKPiAtCSAqLwo+IC0JaWYgKGk5 MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChpOTE1LCBtYXNrKSkKPiAtCQlyZXN1bHQg PSBmYWxzZTsKPiAgIAo+IC0JaWYgKGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwKPiAtCQkJ CSAgIEk5MTVfV0FJVF9MT0NLRUQgfAo+IC0JCQkJICAgSTkxNV9XQUlUX0ZPUl9JRExFX0JPT1NU LAo+IC0JCQkJICAgSTkxNV9HRU1fSURMRV9USU1FT1VUKSkKPiAtCQlyZXN1bHQgPSBmYWxzZTsK PiArCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJLyoKPiArCQkgKiBX ZSBhcmUgY29tbWl0dGVkIG5vdyB0byBwYXJraW5nIHRoZSBlbmdpbmVzLCBtYWtlIHN1cmUgdGhl cmUKPiArCQkgKiB3aWxsIGJlIG5vIG1vcmUgaW50ZXJydXB0cyBhcnJpdmluZyBsYXRlciBhbmQg dGhlIGVuZ2luZXMKPiArCQkgKiBhcmUgdHJ1bHkgaWRsZS4KPiArCQkgKi8KPiArCQlpZiAod2Fp dF9mb3IoaW50ZWxfZW5naW5lX2lzX2lkbGUoZW5naW5lKSwgMTApKSB7Cj4gKwkJCXN0cnVjdCBk cm1fcHJpbnRlciBwID0gZHJtX2RlYnVnX3ByaW50ZXIoX19mdW5jX18pOwo+ICAgCj4gLQlpZiAo IXJlc3VsdCkgewo+IC0JCWlmIChpOTE1X21vZHBhcmFtcy5yZXNldCkgeyAvKiBYWFggaGlkZSB3 YXJuaW5nIGZyb20gZ2VtX2VpbyAqLwo+ICAgCQkJZGV2X2VycihpOTE1LT5kcm0uZGV2LAo+IC0J CQkJIkZhaWxlZCB0byBpZGxlIGVuZ2luZXMsIGRlY2xhcmluZyB3ZWRnZWQhXG4iKTsKPiAtCQkJ R0VNX1RSQUNFX0RVTVAoKTsKPiArCQkJCSIlcyBpcyBub3QgaWRsZSBiZWZvcmUgcGFya2luZ1xu IiwKPiArCQkJCWVuZ2luZS0+bmFtZSk7Cj4gKwkJCWludGVsX2VuZ2luZV9kdW1wKGVuZ2luZSwg JnAsIE5VTEwpOwo+ICAgCQl9Cj4gKwkJdGFza2xldF9raWxsKCZlbmdpbmUtPmV4ZWNsaXN0cy50 YXNrbGV0KTsKPiAgIAo+IC0JCS8qIEZvcmNpYmx5IGNhbmNlbCBvdXRzdGFuZGluZyB3b3JrIGFu ZCBsZWF2ZSB0aGUgZ3B1IHF1aWV0LiAqLwo+IC0JCWk5MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7 Cj4gKwkJaTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKCZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+ICAg CX0KPiAgIAo+IC0JaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7IC8qIGVuc3VyZSB3ZSBmbHVz aCBhZnRlciB3ZWRnaW5nICovCj4gLQlyZXR1cm4gcmVzdWx0Owo+ICsJaTkxNV90aW1lbGluZXNf cGFyayhpOTE1KTsKPiArCWk5MTVfdm1hX3BhcmtlZChpOTE1KTsKPiArCj4gKwlpOTE1X2dsb2Jh bHNfcGFyaygpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBpZGxlX3dvcmtfaGFuZGxlcihz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPQo+ICAgCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCppOTE1KSwgZ2VtLmlk bGVfd29yay53b3JrKTsKPiAtCWJvb2wgcmVhcm1faGFuZ2NoZWNrOwo+IC0KPiAtCWlmICghUkVB RF9PTkNFKGk5MTUtPmd0LmF3YWtlKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaWYgKFJFQURfT05D RShpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpKQo+IC0JCXJldHVybjsKPiAtCj4gLQlyZWFybV9o YW5nY2hlY2sgPQo+IC0JCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3B1X2Vycm9y LmhhbmdjaGVja193b3JrKTsKPiAgIAo+ICAgCWlmICghbXV0ZXhfdHJ5bG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCkpIHsKPiAgIAkJLyogQ3VycmVudGx5IGJ1c3ksIGNvbWUgYmFjayBsYXRl ciAqLwo+ICAgCQltb2RfZGVsYXllZF93b3JrKGk5MTUtPndxLAo+ICAgCQkJCSAmaTkxNS0+Z2Vt LmlkbGVfd29yaywKPiAgIAkJCQkgbXNlY3NfdG9famlmZmllcyg1MCkpOwo+IC0JCWdvdG8gb3V0 X3JlYXJtOwo+ICsJCXJldHVybjsKPiAgIAl9Cj4gICAKPiAtCS8qCj4gLQkgKiBGbHVzaCBvdXQg dGhlIGxhc3QgdXNlciBjb250ZXh0LCBsZWF2aW5nIG9ubHkgdGhlIHBpbm5lZAo+IC0JICoga2Vy bmVsIGNvbnRleHQgcmVzaWRlbnQuIFNob3VsZCBhbnl0aGluZyB1bmZvcnR1bmF0ZSBoYXBwZW4K PiAtCSAqIHdoaWxlIHdlIGFyZSBpZGxlIChzdWNoIGFzIHRoZSBHUFUgYmVpbmcgcG93ZXIgY3lj bGVkKSwgbm8gdXNlcnMKPiAtCSAqIHdpbGwgYmUgaGFybWVkLgo+IC0JICovCj4gLQlpZiAoIXdv cmtfcGVuZGluZygmaTkxNS0+Z2VtLmlkbGVfd29yay53b3JrKSAmJgo+IC0JICAgICFpOTE1LT5n dC5hY3RpdmVfcmVxdWVzdHMpIHsKPiAtCQkrK2k5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0czsgLyog ZG9uJ3QgcmVxdWV1ZSBpZGxlICovCj4gLQo+IC0JCXN3aXRjaF90b19rZXJuZWxfY29udGV4dF9z eW5jKGk5MTUsIGk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzKTsKPiAtCj4gLQkJaWYgKCEtLWk5MTUt Pmd0LmFjdGl2ZV9yZXF1ZXN0cykgewo+IC0JCQlfX2k5MTVfZ2VtX3BhcmsoaTkxNSk7Cj4gLQkJ CXJlYXJtX2hhbmdjaGVjayA9IGZhbHNlOwo+IC0JCX0KPiAtCX0KPiArCWludGVsX3dha2VyZWZf bG9jaygmaTkxNS0+Z3Qud2FrZXJlZik7Cj4gKwlpZiAoIWludGVsX3dha2VyZWZfYWN0aXZlKCZp OTE1LT5ndC53YWtlcmVmKSkKPiArCQlpOTE1X2dlbV9wYXJrKGk5MTUpOwo+ICsJaW50ZWxfd2Fr ZXJlZl91bmxvY2soJmk5MTUtPmd0Lndha2VyZWYpOwo+ICAgCj4gICAJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gLW91dF9yZWFybToKPiAtCWlmIChyZWFybV9o YW5nY2hlY2spIHsKPiAtCQlHRU1fQlVHX09OKCFpOTE1LT5ndC5hd2FrZSk7Cj4gLQkJaTkxNV9x dWV1ZV9oYW5nY2hlY2soaTkxNSk7Cj4gLQl9Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIHJl dGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+IEBAIC0xNDcsOTcg Kzc0LDc2IEBAIHN0YXRpYyB2b2lkIHJldGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQo+ICAgCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICAgCX0KPiAgIAo+IC0JLyoKPiAtCSAqIEtlZXAgdGhlIHJldGlyZSBoYW5kbGVyIHJ1bm5pbmcg dW50aWwgd2UgYXJlIGZpbmFsbHkgaWRsZS4KPiAtCSAqIFdlIGRvIG5vdCBuZWVkIHRvIGRvIHRo aXMgdGVzdCB1bmRlciBsb2NraW5nIGFzIGluIHRoZSB3b3JzdC1jYXNlCj4gLQkgKiB3ZSBxdWV1 ZSB0aGUgcmV0aXJlIHdvcmtlciBvbmNlIHRvbyBvZnRlbi4KPiAtCSAqLwo+IC0JaWYgKFJFQURf T05DRShpOTE1LT5ndC5hd2FrZSkpCj4gKwlpZiAoaW50ZWxfd2FrZXJlZl9hY3RpdmUoJmk5MTUt Pmd0Lndha2VyZWYpKQo+ICAgCQlxdWV1ZV9kZWxheWVkX3dvcmsoaTkxNS0+d3EsCj4gICAJCQkJ ICAgJmk5MTUtPmdlbS5yZXRpcmVfd29yaywKPiAgIAkJCQkgICByb3VuZF9qaWZmaWVzX3VwX3Jl bGF0aXZlKEhaKSk7Cj4gICB9Cj4gICAKPiAtdm9pZCBpOTE1X2dlbV9wYXJrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICtzdGF0aWMgaW50IHBtX25vdGlmaWVyKHN0cnVjdCBub3Rp Zmllcl9ibG9jayAqbmIsCj4gKwkJICAgICAgIHVuc2lnbmVkIGxvbmcgYWN0aW9uLAo+ICsJCSAg ICAgICB2b2lkICpkYXRhKQo+ICAgewo+IC0JR0VNX1RSQUNFKCJcbiIpOwo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPQo+ICsJCWNvbnRhaW5lcl9vZihuYiwgdHlwZW9mKCppOTE1 KSwgZ2VtLnBtX25vdGlmaWVyKTsKPiAgIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlHRU1fQlVHX09OKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0 cyk7Cj4gKwlzd2l0Y2ggKGFjdGlvbikgewo+ICsJY2FzZSBJTlRFTF9HVF9VTlBBUks6Cj4gKwkJ aTkxNV9nbG9iYWxzX3VucGFyaygpOwo+ICsJCXF1ZXVlX2RlbGF5ZWRfd29yayhpOTE1LT53cSwK PiArCQkJCSAgICZpOTE1LT5nZW0ucmV0aXJlX3dvcmssCj4gKwkJCQkgICByb3VuZF9qaWZmaWVz X3VwX3JlbGF0aXZlKEhaKSk7Cj4gKwkJYnJlYWs7Cj4gICAKPiAtCWlmICghaTkxNS0+Z3QuYXdh a2UpCj4gLQkJcmV0dXJuOwo+ICsJY2FzZSBJTlRFTF9HVF9QQVJLOgo+ICsJCW1vZF9kZWxheWVk X3dvcmsoaTkxNS0+d3EsCj4gKwkJCQkgJmk5MTUtPmdlbS5pZGxlX3dvcmssCj4gKwkJCQkgbXNl Y3NfdG9famlmZmllcygxMDApKTsKPiArCQlicmVhazsKPiArCX0KPiAgIAo+IC0JLyogRGVmZXIg dGhlIGFjdHVhbCBjYWxsIHRvIF9faTkxNV9nZW1fcGFyaygpIHRvIHByZXZlbnQgcGluZy1wb25n cyAqLwo+IC0JbW9kX2RlbGF5ZWRfd29yayhpOTE1LT53cSwgJmk5MTUtPmdlbS5pZGxlX3dvcmss IG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7Cj4gKwlyZXR1cm4gTk9USUZZX09LOwo+ICAgfQo+ICAg Cj4gLXZvaWQgaTkxNV9nZW1fdW5wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICtzdGF0aWMgYm9vbCBzd2l0Y2hfdG9fa2VybmVsX2NvbnRleHRfc3luYyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAtCUdFTV9UUkFDRSgiXG4iKTsKPiAtCj4gLQlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCUdFTV9CVUdfT04o IWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7Cj4gLQlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQo aTkxNSk7Cj4gLQo+IC0JaWYgKGk5MTUtPmd0LmF3YWtlKQo+IC0JCXJldHVybjsKPiAtCj4gLQkv Kgo+IC0JICogSXQgc2VlbXMgdGhhdCB0aGUgRE1DIGxpa2VzIHRvIHRyYW5zaXRpb24gYmV0d2Vl biB0aGUgREMgc3RhdGVzIGEgbG90Cj4gLQkgKiB3aGVuIHRoZXJlIGFyZSBubyBjb25uZWN0ZWQg ZGlzcGxheXMgKG5vIGFjdGl2ZSBwb3dlciBkb21haW5zKSBkdXJpbmcKPiAtCSAqIGNvbW1hbmQg c3VibWlzc2lvbi4KPiAtCSAqCj4gLQkgKiBUaGlzIGFjdGl2aXR5IGhhcyBuZWdhdGl2ZSBpbXBh Y3Qgb24gdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBjaGlwIHdpdGgKPiAtCSAqIGh1Z2UgbGF0ZW5j aWVzIG9ic2VydmVkIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhbmQgZWxzZXdoZXJlLgo+IC0J ICoKPiAtCSAqIFdvcmsgYXJvdW5kIGl0IGJ5IGdyYWJiaW5nIGEgR1QgSVJRIHBvd2VyIGRvbWFp biB3aGlsc3QgdGhlcmUgaXMgYW55Cj4gLQkgKiBHVCBhY3Rpdml0eSwgcHJldmVudGluZyBhbnkg REMgc3RhdGUgdHJhbnNpdGlvbnMuCj4gLQkgKi8KPiAtCWk5MTUtPmd0LmF3YWtlID0gaW50ZWxf ZGlzcGxheV9wb3dlcl9nZXQoaTkxNSwgUE9XRVJfRE9NQUlOX0dUX0lSUSk7Cj4gLQlHRU1fQlVH X09OKCFpOTE1LT5ndC5hd2FrZSk7Cj4gLQo+IC0JaTkxNV9nbG9iYWxzX3VucGFyaygpOwo+IC0K PiAtCWludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoaTkxNSk7Cj4gLQlpOTE1X3VwZGF0ZV9nZnhf dmFsKGk5MTUpOwo+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQo+IC0JCWdlbjZfcnBzX2J1 c3koaTkxNSk7Cj4gLQlpOTE1X3BtdV9ndF91bnBhcmtlZChpOTE1KTsKPiAtCj4gLQlpbnRlbF9l bmdpbmVzX3VucGFyayhpOTE1KTsKPiArCWJvb2wgcmVzdWx0ID0gdHJ1ZTsKPiAgIAo+IC0JaTkx NV9xdWV1ZV9oYW5nY2hlY2soaTkxNSk7Cj4gKwlkbyB7Cj4gKwkJaWYgKGk5MTVfZ2VtX3dhaXRf Zm9yX2lkbGUoaTkxNSwKPiArCQkJCQkgICBJOTE1X1dBSVRfTE9DS0VEIHwKPiArCQkJCQkgICBJ OTE1X1dBSVRfRk9SX0lETEVfQk9PU1QsCj4gKwkJCQkJICAgSTkxNV9HRU1fSURMRV9USU1FT1VU KSA9PSAtRVRJTUUpIHsKPiArCQkJLyogWFhYIGhpZGUgd2FybmluZyBmcm9tIGdlbV9laW8gKi8K PiArCQkJaWYgKGk5MTVfbW9kcGFyYW1zLnJlc2V0KSB7Cj4gKwkJCQlkZXZfZXJyKGk5MTUtPmRy bS5kZXYsCj4gKwkJCQkJIkZhaWxlZCB0byBpZGxlIGVuZ2luZXMsIGRlY2xhcmluZyB3ZWRnZWQh XG4iKTsKPiArCQkJCUdFTV9UUkFDRV9EVU1QKCk7Cj4gKwkJCX0KPiArCj4gKwkJCS8qCj4gKwkJ CSAqIEZvcmNpYmx5IGNhbmNlbCBvdXRzdGFuZGluZyB3b3JrIGFuZCBsZWF2ZQo+ICsJCQkgKiB0 aGUgZ3B1IHF1aWV0Lgo+ICsJCQkgKi8KPiArCQkJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1KTsK PiArCQkJcmVzdWx0ID0gZmFsc2U7Cj4gKwkJfQo+ICsJfSB3aGlsZSAoaTkxNV9yZXRpcmVfcmVx dWVzdHMoaTkxNSkgJiYgcmVzdWx0KTsKPiAgIAo+IC0JcXVldWVfZGVsYXllZF93b3JrKGk5MTUt PndxLAo+IC0JCQkgICAmaTkxNS0+Z2VtLnJldGlyZV93b3JrLAo+IC0JCQkgICByb3VuZF9qaWZm aWVzX3VwX3JlbGF0aXZlKEhaKSk7Cj4gKwlHRU1fQlVHX09OKGk5MTUtPmd0LmF3YWtlKTsKPiAr CXJldHVybiByZXN1bHQ7Cj4gICB9Cj4gICAKPiAgIGJvb2wgaTkxNV9nZW1fbG9hZF9wb3dlcl9j b250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+IC0JLyogRm9yY2Ug bG9hZGluZyB0aGUga2VybmVsIGNvbnRleHQgb24gYWxsIGVuZ2luZXMgKi8KPiAtCWlmICghc3dp dGNoX3RvX2tlcm5lbF9jb250ZXh0X3N5bmMoaTkxNSwgQUxMX0VOR0lORVMpKQo+IC0JCXJldHVy biBmYWxzZTsKPiAtCj4gLQkvKgo+IC0JICogSW1tZWRpYXRlbHkgcGFyayB0aGUgR1BVIHNvIHRo YXQgd2UgZW5hYmxlIHBvd2Vyc2F2aW5nIGFuZAo+IC0JICogdHJlYXQgaXQgYXMgaWRsZS4gVGhl IG5leHQgdGltZSB3ZSBpc3N1ZSBhIHJlcXVlc3QsIHdlIHdpbGwKPiAtCSAqIHVucGFyayBhbmQg c3RhcnQgdXNpbmcgdGhlIGVuZ2luZS0+cGlubmVkX2RlZmF1bHRfc3RhdGUsIG90aGVyd2lzZQo+ IC0JICogaXQgaXMgaW4gbGltYm8gYW5kIGFuIGVhcmx5IHJlc2V0IG1heSBmYWlsLgo+IC0JICov Cj4gLQlfX2k5MTVfZ2VtX3BhcmsoaTkxNSk7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gKwlyZXR1 cm4gc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0X3N5bmMoaTkxNSk7Cj4gICB9Cj4gICAKPiAgIHZv aWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsK PiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0KPiAgIAlHRU1fVFJBQ0UoIlxuIik7Cj4g ICAKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCWZsdXNoX3dv cmtxdWV1ZShpOTE1LT53cSk7Cj4gICAKPiAgIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAgIAo+IEBAIC0yNTAsMTAgKzE1NiwxNiBAQCB2b2lkIGk5MTVfZ2VtX3N1c3Bl bmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJICogc3RhdGUuIEZvcnR1bmF0 ZWx5LCB0aGUga2VybmVsX2NvbnRleHQgaXMgZGlzcG9zYWJsZSBhbmQgd2UgZG8KPiAgIAkgKiBu b3QgcmVseSBvbiBpdHMgc3RhdGUuCj4gICAJICovCj4gLQlzd2l0Y2hfdG9fa2VybmVsX2NvbnRl eHRfc3luYyhpOTE1LCBpOTE1LT5ndC5hY3RpdmVfZW5naW5lcyk7Cj4gKwlzd2l0Y2hfdG9fa2Vy bmVsX2NvbnRleHRfc3luYyhpOTE1KTsKPiAgIAo+ICAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gLQlpOTE1X3Jlc2V0X2ZsdXNoKGk5MTUpOwo+ICsKPiArCS8qCj4g KwkgKiBBc3NlcnQgdGhhdCB3ZSBzdWNjZXNzZnVsbHkgZmx1c2hlZCBhbGwgdGhlIHdvcmsgYW5k Cj4gKwkgKiByZXNldCB0aGUgR1BVIGJhY2sgdG8gaXRzIGlkbGUsIGxvdyBwb3dlciBzdGF0ZS4K PiArCSAqLwo+ICsJR0VNX0JVR19PTihpOTE1LT5ndC5hd2FrZSk7Cj4gKwljYW5jZWxfZGVsYXll ZF93b3JrX3N5bmMoJmk5MTUtPmdwdV9lcnJvci5oYW5nY2hlY2tfd29yayk7Cj4gICAKPiAgIAlk cmFpbl9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5yZXRpcmVfd29yayk7Cj4gICAKPiBAQCAtMjYz LDE3ICsxNzUsOSBAQCB2b2lkIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gICAJICovCj4gICAJZHJhaW5fZGVsYXllZF93b3JrKCZpOTE1LT5nZW0uaWRs ZV93b3JrKTsKPiAgIAo+IC0JZmx1c2hfd29ya3F1ZXVlKGk5MTUtPndxKTsKPiAtCj4gLQkvKgo+ IC0JICogQXNzZXJ0IHRoYXQgd2Ugc3VjY2Vzc2Z1bGx5IGZsdXNoZWQgYWxsIHRoZSB3b3JrIGFu ZAo+IC0JICogcmVzZXQgdGhlIEdQVSBiYWNrIHRvIGl0cyBpZGxlLCBsb3cgcG93ZXIgc3RhdGUu Cj4gLQkgKi8KPiAtCUdFTV9CVUdfT04oaTkxNS0+Z3QuYXdha2UpOwo+ICsJaTkxNV9nZW1fZHJh aW5fZnJlZWRfb2JqZWN0cyhpOTE1KTsKPiAgIAo+ICAgCWludGVsX3VjX3N1c3BlbmQoaTkxNSk7 Cj4gLQo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gICB9Cj4gICAK PiAgIHZvaWQgaTkxNV9nZW1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+IEBAIC0zNjIsNCArMjY2LDggQEAgdm9pZCBpOTE1X2dlbV9pbml0X19wbShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAgIAlJTklUX0RFTEFZRURfV09SSygmaTkx NS0+Z2VtLmlkbGVfd29yaywgaWRsZV93b3JrX2hhbmRsZXIpOwo+ICAgCUlOSVRfREVMQVlFRF9X T1JLKCZpOTE1LT5nZW0ucmV0aXJlX3dvcmssIHJldGlyZV93b3JrX2hhbmRsZXIpOwo+ICsKPiAr CWk5MTUtPmdlbS5wbV9ub3RpZmllci5ub3RpZmllcl9jYWxsID0gcG1fbm90aWZpZXI7Cj4gKwli bG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmaTkxNS0+Z3QucG1fbm90aWZpY2F0aW9u cywKPiArCQkJCQkgJmk5MTUtPmdlbS5wbV9ub3RpZmllcik7Cj4gICB9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9wbS5oCj4gaW5kZXggNTJmNjVlM2YwNmI1Li42ZjdkNWQxMWFjM2IgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcG0uaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3BtLmgKPiBAQCAtMTcsOSArMTcsNiBAQCB2b2lkIGk5 MTVfZ2VtX2luaXRfX3BtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgIGJvb2wg aTkxNV9nZW1fbG9hZF9wb3dlcl9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKPiAgIHZvaWQgaTkxNV9nZW1fcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKPiAgIAo+IC12b2lkIGk5MTVfZ2VtX3VucGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSk7Cj4gLXZvaWQgaTkxNV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSk7Cj4gLQo+ICAgdm9pZCBpOTE1X2dlbV9pZGxlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspOwo+ICAgCj4gICB2b2lkIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAo+ IGluZGV4IGI0MTlkMGY1OTI3NS4uMmVjZDBjNmExYzk0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5oCj4gQEAgLTE3OSw4ICsxNzksNiBAQCBzdHJ1Y3QgaTkxNV9ncHVf c3RhdGUgewo+ICAgCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCAqZml0Owo+ICAgfTsKPiAgIAo+ IC1zdHJ1Y3QgaTkxNV9ncHVfcmVzdGFydDsKPiAtCj4gICBzdHJ1Y3QgaTkxNV9ncHVfZXJyb3Ig ewo+ICAgCS8qIEZvciBoYW5nY2hlY2sgdGltZXIgKi8KPiAgICNkZWZpbmUgRFJNX0k5MTVfSEFO R0NIRUNLX1BFUklPRCAxNTAwIC8qIGluIG1zICovCj4gQEAgLTI0MSw4ICsyMzksNiBAQCBzdHJ1 Y3QgaTkxNV9ncHVfZXJyb3Igewo+ICAgCXdhaXRfcXVldWVfaGVhZF90IHJlc2V0X3F1ZXVlOwo+ ICAgCj4gICAJc3RydWN0IHNyY3Vfc3RydWN0IHJlc2V0X2JhY2tvZmZfc3JjdTsKPiAtCj4gLQlz dHJ1Y3QgaTkxNV9ncHVfcmVzdGFydCAqcmVzdGFydDsKPiAgIH07Cj4gICAKPiAgIHN0cnVjdCBk cm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5j Cj4gaW5kZXggNjcyYzllYTZjMjRmLi5kMTE2YjVlNjk4MjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlcXVlc3QuYwo+IEBAIC00MzEsNiArNDMxLDggQEAgdm9pZCBfX2k5MTVfcmVxdWVz dF9zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkvKiBUcmFuc2ZlciBm cm9tIHBlci1jb250ZXh0IG9udG8gdGhlIGdsb2JhbCBwZXItZW5naW5lIHRpbWVsaW5lICovCj4g ICAJbW92ZV90b190aW1lbGluZShyZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZSk7Cj4gICAKPiAr CWVuZ2luZS0+c2VyaWFsKys7Cj4gKwo+ICAgCXRyYWNlX2k5MTVfcmVxdWVzdF9leGVjdXRlKHJl cXVlc3QpOwo+ICAgfQo+ICAgCj4gQEAgLTExNDYsNyArMTE0OCw2IEBAIHN0cnVjdCBpOTE1X3Jl cXVlc3QgKl9faTkxNV9yZXF1ZXN0X2NvbW1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAg IAlsaXN0X2FkZF90YWlsKCZycS0+cmluZ19saW5rLCAmcmluZy0+cmVxdWVzdF9saXN0KTsKPiAg IAlpZiAobGlzdF9pc19maXJzdCgmcnEtPnJpbmdfbGluaywgJnJpbmctPnJlcXVlc3RfbGlzdCkp Cj4gICAJCWxpc3RfYWRkKCZyaW5nLT5hY3RpdmVfbGluaywgJnJxLT5pOTE1LT5ndC5hY3RpdmVf cmluZ3MpOwo+IC0JcnEtPmk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzIHw9IHJxLT5lbmdpbmUtPm1h c2s7Cj4gICAJcnEtPmVtaXR0ZWRfamlmZmllcyA9IGppZmZpZXM7Cj4gICAKPiAgIAkvKgo+IEBA IC0xNDE4LDIxICsxNDE5LDIwIEBAIGxvbmcgaTkxNV9yZXF1ZXN0X3dhaXQoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCj4gICAJcmV0dXJuIHRpbWVvdXQ7Cj4gICB9Cj4gICAKPiAtdm9pZCBpOTE1 X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArYm9vbCBp OTE1X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsK PiAgIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgKnRtcDsKPiAgIAo+ICAgCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gLQlpZiAoIWk5MTUtPmd0 LmFjdGl2ZV9yZXF1ZXN0cykKPiAtCQlyZXR1cm47Cj4gLQo+ICAgCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShyaW5nLCB0bXAsCj4gICAJCQkJICZpOTE1LT5ndC5hY3RpdmVfcmluZ3MsIGFjdGl2 ZV9saW5rKSB7Cj4gICAJCWludGVsX3JpbmdfZ2V0KHJpbmcpOyAvKiBsYXN0IHJxIGhvbGRzIHJl ZmVyZW5jZSEgKi8KPiAgIAkJcmluZ19yZXRpcmVfcmVxdWVzdHMocmluZyk7Cj4gICAJCWludGVs X3JpbmdfcHV0KHJpbmcpOwo+ICAgCX0KPiArCj4gKwlyZXR1cm4gIWxpc3RfZW1wdHkoJmk5MTUt Pmd0LmFjdGl2ZV9yaW5ncyk7Cj4gICB9Cj4gICAKPiAgICNpZiBJU19FTkFCTEVEKENPTkZJR19E Uk1fSTkxNV9TRUxGVEVTVCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IGluZGV4 IDM2ZjEzYjc0ZWM1OC4uMWVlZTc0MTZhZjMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmgKPiBAQCAtNDI1LDYgKzQyNSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3Jl cXVlc3RfbWFya19jb21wbGV0ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAlycS0+aHdz cF9zZXFubyA9ICh1MzIgKikmcnEtPmZlbmNlLnNlcW5vOyAvKiBkZWNvdXBsZSBmcm9tIEhXU1Ag Ki8KPiAgIH0KPiAgIAo+IC12b2lkIGk5MTVfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KTsKPiArYm9vbCBpOTE1X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICAKPiAgICNlbmRpZiAvKiBJOTE1X1JFUVVFU1RfSCAq Lwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwo+IGluZGV4IDEzZjgyM2ZmODA4My4uZmQ5ZDNiMGQ5 ZjQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCj4gQEAgLTQ2NiwyNiArNDY2LDIyIEBA IHZvaWQgaW50ZWxfdWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgIAlpbnRlbF91Y19zYW5pdGl6ZShpOTE1KTsKPiAgIH0KPiAgIAo+IC1pbnQgaW50ZWxf dWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArdm9pZCBpbnRlbF91 Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ICAgCXN0cnVj dCBpbnRlbF9ndWMgKmd1YyA9ICZpOTE1LT5ndWM7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gLQlpZiAoIVVTRVNfR1VDKGk5MTUpKQo+IC0JCXJldHVy biAwOwo+IC0KPiAgIAlpZiAoZ3VjLT5mdy5sb2FkX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FS RV9TVUNDRVNTKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWVyciA9IGludGVsX2d1Y19zdXNwZW5k KGd1Yyk7Cj4gLQlpZiAoZXJyKSB7Cj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIHN1 c3BlbmQgR3VDLCBlcnI9JWQiLCBlcnIpOwo+IC0JCXJldHVybiBlcnI7Cj4gLQl9Cj4gKwkJcmV0 dXJuOwo+ICAgCj4gLQlndWNfZGlzYWJsZV9jb21tdW5pY2F0aW9uKGd1Yyk7Cj4gKwl3aXRoX2lu dGVsX3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJlZikgewo+ICsJCWVyciA9IGludGVsX2d1Y19zdXNw ZW5kKGd1Yyk7Cj4gKwkJaWYgKGVycikKPiArCQkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRv IHN1c3BlbmQgR3VDLCBlcnI9JWQiLCBlcnIpOwo+ICAgCj4gLQlyZXR1cm4gMDsKPiArCQlndWNf ZGlzYWJsZV9jb21tdW5pY2F0aW9uKGd1Yyk7Cj4gKwl9Cj4gICB9Cj4gICAKPiAgIGludCBpbnRl bF91Y19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91Yy5oCj4gaW5kZXggYzE0NzI5Nzg2NjUyLi5jOTI0MzZiMWYxYzUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VjLmgKPiBAQCAtMzksNyArMzksNyBAQCB2b2lkIGludGVsX3VjX2Zpbmlf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgIGludCBpbnRlbF91Y19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICB2b2lkIGludGVsX3Vj X2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgIHZvaWQgaW50ZWxf dWNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gLWludCBp bnRlbF91Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3Zv aWQgaW50ZWxfdWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICBp bnQgaW50ZWxfdWNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g ICAKPiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19pc191c2luZ19ndWMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtLmMKPiBpbmRleCA2ZmQ3MGQzMjY0NjguLjAzNDJkZTM2OWQzZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jCj4gQEAgLTE2LDI2ICsxNiwxOCBA QCBzdGF0aWMgaW50IHN3aXRjaF90b19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKPiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0JaW50 IGVyciA9IDA7Cj4gLQo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ ICAgCj4gICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAgIAkJc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnE7Cj4gICAKPiAgIAkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5n aW5lLCBjdHgpOwo+IC0JCWlmIChJU19FUlIocnEpKSB7Cj4gLQkJCWVyciA9IFBUUl9FUlIocnEp Owo+IC0JCQlicmVhazsKPiAtCQl9Cj4gKwkJaWYgKElTX0VSUihycSkpCj4gKwkJCXJldHVybiBQ VFJfRVJSKHJxKTsKPiAgIAo+ICAgCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAgIAl9Cj4gICAK PiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+IC0KPiAtCXJldHVybiBl cnI7Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgdHJhc2hfc3RvbGVu KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IEBAIC0xMjAsNyArMTEyLDcgQEAgc3Rh dGljIHZvaWQgcG1fcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCSAq IHRoYXQgcnVudGltZS1wbSBqdXN0IHdvcmtzLgo+ICAgCSAqLwo+ICAgCXdpdGhfaW50ZWxfcnVu dGltZV9wbShpOTE1LCB3YWtlcmVmKSB7Cj4gLQkJaW50ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1 LCBmYWxzZSk7Cj4gKwkJaW50ZWxfZ3Rfc2FuaXRpemUoaTkxNSwgZmFsc2UpOwo+ICAgCQlpOTE1 X2dlbV9zYW5pdGl6ZShpOTE1KTsKPiAgIAkJaTkxNV9nZW1fcmVzdW1lKGk5MTUpOwo+ICAgCX0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2Nv bnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0 LmMKPiBpbmRleCA5ZDY0NmZhMWI3NGUuLjcxZDg5NmJiYWRlMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0xNjA4 LDExMyArMTYwOCw2IEBAIF9fZW5naW5lX25hbWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGludGVsX2VuZ2luZV9tYXNrX3QgZW5naW5lcykKPiAgIAlyZXR1cm4gIm5vbmUiOwo+ICAg fQo+ICAgCj4gLXN0YXRpYyBpbnQgX19pZ3Rfc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+IC0JCQkJCSAgc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKPiAtCQkJCQkgIGludGVsX2VuZ2luZV9tYXNrX3QgZW5naW5lcykKPiAtewo+IC0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IC0JaW50ZWxfZW5naW5lX21hc2tfdCB0 bXA7Cj4gLQlpbnQgcGFzczsKPiAtCj4gLQlHRU1fVFJBQ0UoIlRlc3RpbmcgJXNcbiIsIF9fZW5n aW5lX25hbWUoaTkxNSwgZW5naW5lcykpOwo+IC0JZm9yIChwYXNzID0gMDsgcGFzcyA8IDQ7IHBh c3MrKykgeyAvKiBPbmNlIGJ1c3k7IG9uY2UgaWRsZTsgcmVwZWF0ICovCj4gLQkJYm9vbCBmcm9t X2lkbGUgPSBwYXNzICYgMTsKPiAtCQlpbnQgZXJyOwo+IC0KPiAtCQlpZiAoIWZyb21faWRsZSkg ewo+IC0JCQlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgaTkxNSwgZW5naW5lcywgdG1w KSB7Cj4gLQkJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAtCj4gLQkJCQlycSA9IGk5MTVf cmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4gLQkJCQlpZiAoSVNfRVJSKHJxKSkKPiAtCQkJ CQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gLQo+IC0JCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4g LQkJCX0KPiAtCQl9Cj4gLQo+IC0JCWVyciA9IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29u dGV4dChpOTE1LAo+IC0JCQkJCQkJaTkxNS0+Z3QuYWN0aXZlX2VuZ2luZXMpOwo+IC0JCWlmIChl cnIpCj4gLQkJCXJldHVybiBlcnI7Cj4gLQo+IC0JCWlmICghZnJvbV9pZGxlKSB7Cj4gLQkJCWVy ciA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwKPiAtCQkJCQkJICAgICBJOTE1X1dBSVRf TE9DS0VELAo+IC0JCQkJCQkgICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiAtCQkJaWYgKGVy cikKPiAtCQkJCXJldHVybiBlcnI7Cj4gLQkJfQo+IC0KPiAtCQlpZiAoaTkxNS0+Z3QuYWN0aXZl X3JlcXVlc3RzKSB7Cj4gLQkJCXByX2VycigiJWQgYWN0aXZlIHJlcXVlc3RzIHJlbWFpbiBhZnRl ciBzd2l0Y2hpbmcgdG8ga2VybmVsIGNvbnRleHQsIHBhc3MgJWQgKCVzKSBvbiAlcyBlbmdpbmUl c1xuIiwKPiAtCQkJICAgICAgIGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cywKPiAtCQkJICAgICAg IHBhc3MsIGZyb21faWRsZSA/ICJpZGxlIiA6ICJidXN5IiwKPiAtCQkJICAgICAgIF9fZW5naW5l X25hbWUoaTkxNSwgZW5naW5lcyksCj4gLQkJCSAgICAgICBpc19wb3dlcl9vZl8yKGVuZ2luZXMp ID8gIiIgOiAicyIpOwo+IC0JCQlyZXR1cm4gLUVJTlZBTDsKPiAtCQl9Cj4gLQo+IC0JCS8qIFhY WCBCb251cyBwb2ludHMgZm9yIHByb3Zpbmcgd2UgYXJlIHRoZSBrZXJuZWwgY29udGV4dCEgKi8K PiAtCj4gLQkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCQlkcmFp bl9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5pZGxlX3dvcmspOwo+IC0JCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+IC0KPiAtCWlmIChpZ3RfZmx1c2hfdGVzdChp OTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkKPiAtCQlyZXR1cm4gLUVJTzsKPiAtCj4gLQlyZXR1cm4g MDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBpZ3Rfc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KHZv aWQgKmFyZykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4g LQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4Owo+IC0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gLQlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZjsKPiAtCWludCBlcnI7Cj4gLQo+IC0JLyoKPiAtCSAqIEEgY29yZSBwcmVtaXNl IG9mIHN3aXRjaGluZyB0byB0aGUga2VybmVsIGNvbnRleHQgaXMgdGhhdAo+IC0JICogaWYgYW4g ZW5naW5lIGlzIGFscmVhZHkgaWRsaW5nIGluIHRoZSBrZXJuZWwgY29udGV4dCwgd2UKPiAtCSAq IGRvIG5vdCBlbWl0IGFub3RoZXIgcmVxdWVzdCBhbmQgd2FrZSBpdCB1cC4gVGhlIG90aGVyIGJl aW5nCj4gLQkgKiB0aGF0IHdlIGRvIGluZGVlZCBlbmQgdXAgaWRsaW5nIGluIHRoZSBrZXJuZWwg Y29udGV4dC4KPiAtCSAqLwo+IC0KPiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+IC0KPiAtCWN0 eCA9IGtlcm5lbF9jb250ZXh0KGk5MTUpOwo+IC0JaWYgKElTX0VSUihjdHgpKSB7Cj4gLQkJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCQlyZXR1cm4gUFRSX0VSUihj dHgpOwo+IC0JfQo+IC0KPiAtCS8qIEZpcnN0IGNoZWNrIGlkbGluZyBlYWNoIGluZGl2aWR1YWwg ZW5naW5lICovCj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+IC0JCWVy ciA9IF9faWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dChpOTE1LCBjdHgsIEJJVChpZCkpOwo+ IC0JCWlmIChlcnIpCj4gLQkJCWdvdG8gb3V0X3VubG9jazsKPiAtCX0KPiAtCj4gLQkvKiBOb3cg ZW4gbWFzc2UgKi8KPiAtCWVyciA9IF9faWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dChpOTE1 LCBjdHgsIEFMTF9FTkdJTkVTKTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ IC0KPiAtb3V0X3VubG9jazoKPiAtCUdFTV9UUkFDRV9EVU1QX09OKGVycik7Cj4gLQo+IC0JaW50 ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gLQltdXRleF91bmxvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAtCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGN0eCk7Cj4g LQlyZXR1cm4gZXJyOwo+IC19Cj4gLQo+ICAgc3RhdGljIHZvaWQgbW9ja19iYXJyaWVyX3Rhc2so dm9pZCAqZGF0YSkKPiAgIHsKPiAgIAl1bnNpZ25lZCBpbnQgKmNvdW50ZXIgPSBkYXRhOwo+IEBA IC0xNzI5LDcgKzE2MjIsNiBAQCBzdGF0aWMgaW50IG1vY2tfY29udGV4dF9iYXJyaWVyKHZvaWQg KmFyZykKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiAgIAlzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAJdW5zaWduZWQgaW50IGNvdW50ZXI7Cj4g ICAJaW50IGVycjsKPiAgIAo+IEBAIC0xNzcyLDkgKzE2NjQsNyBAQCBzdGF0aWMgaW50IG1vY2tf Y29udGV4dF9iYXJyaWVyKHZvaWQgKmFyZykKPiAgIAkJZ290byBvdXQ7Cj4gICAJfQo+ICAgCj4g LQlycSA9IEVSUl9QVFIoLUVOT0RFVik7Cj4gLQl3aXRoX2ludGVsX3J1bnRpbWVfcG0oaTkxNSwg d2FrZXJlZikKPiAtCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhpOTE1LT5lbmdpbmVbUkNTMF0s IGN0eCk7Cj4gKwlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhpOTE1LT5lbmdpbmVbUkNTMF0sIGN0 eCk7Cj4gICAJaWYgKElTX0VSUihycSkpIHsKPiAgIAkJcHJfZXJyKCJSZXF1ZXN0IGFsbG9jYXRp b24gZmFpbGVkIVxuIik7Cj4gICAJCWdvdG8gb3V0Owo+IEBAIC0xODI0LDcgKzE3MTQsNiBAQCBz dGF0aWMgaW50IG1vY2tfY29udGV4dF9iYXJyaWVyKHZvaWQgKmFyZykKPiAgIGludCBpOTE1X2dl bV9jb250ZXh0X21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gICB7Cj4gICAJc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKPiAtCQlTVUJURVNUKGlndF9zd2l0Y2hfdG9f a2VybmVsX2NvbnRleHQpLAo+ICAgCQlTVUJURVNUKG1vY2tfY29udGV4dF9iYXJyaWVyKSwKPiAg IAl9Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+IEBAIC0xODQzLDcgKzE3 MzIsNiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQo+ICAgaW50 IGk5MTVfZ2VtX2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgewo+ICAgCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRl c3RzW10gPSB7Cj4gLQkJU1VCVEVTVChpZ3Rfc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KSwKPiAg IAkJU1VCVEVTVChsaXZlX25vcF9zd2l0Y2gpLAo+ICAgCQlTVUJURVNUKGlndF9jdHhfZXhlYyks Cj4gICAJCVNVQlRFU1QoaWd0X2N0eF9yZWFkb25seSksCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+IGluZGV4IDEyMjAzZDY2NWE0ZS4u MDg4YjJhYTA1ZGNkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9vYmplY3QuYwo+IEBAIC0yNCw2ICsyNCw3IEBACj4gICAKPiAgICNpbmNsdWRl ICIuLi9pOTE1X3NlbGZ0ZXN0LmgiCj4gICAKPiArI2luY2x1ZGUgImlndF9mbHVzaF90ZXN0Lmgi Cj4gICAjaW5jbHVkZSAibW9ja19nZW1fZGV2aWNlLmgiCj4gICAjaW5jbHVkZSAiaHVnZV9nZW1f b2JqZWN0LmgiCj4gICAKPiBAQCAtNTA1LDE5ICs1MDYsMjMgQEAgc3RhdGljIHZvaWQgZGlzYWJs ZV9yZXRpcmVfd29ya2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ICAg CWk5MTVfZ2VtX3Nocmlua2VyX3VucmVnaXN0ZXIoaTkxNSk7Cj4gICAKPiAtCW11dGV4X2xvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKCFpOTE1LT5ndC5hY3RpdmVfcmVxdWVz dHMrKykgewo+IC0JCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0KPiAtCQl3aXRoX2ludGVs X3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJlZikKPiAtCQkJaTkxNV9nZW1fdW5wYXJrKGk5MTUpOwo+ IC0JfQo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWludGVs X2d0X3BtX2dldChpOTE1KTsKPiAgIAo+ICAgCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkx NS0+Z2VtLnJldGlyZV93b3JrKTsKPiAgIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmk5MTUt PmdlbS5pZGxlX3dvcmspOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIHJlc3RvcmVfcmV0aXJl X3dvcmtlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJaW50ZWxfZ3Rf cG1fcHV0KGk5MTUpOwo+ICsKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICsJaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCk7Cj4gKwltdXRleF91 bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCWk5MTVfZ2VtX3Nocmlua2Vy X3JlZ2lzdGVyKGk5MTUpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBpZ3RfbW1hcF9vZmZzZXRf ZXhoYXVzdGlvbih2b2lkICphcmcpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBhcmc7Cj4gQEAgLTYxNSwxMyArNjIwLDcgQEAgc3RhdGljIGludCBpZ3RfbW1hcF9v ZmZzZXRfZXhoYXVzdGlvbih2b2lkICphcmcpCj4gICBvdXQ6Cj4gICAJZHJtX21tX3JlbW92ZV9u b2RlKCZyZXN2KTsKPiAgIG91dF9wYXJrOgo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gLQlpZiAoLS1pOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpCj4gLQkJcXVldWVf ZGVsYXllZF93b3JrKGk5MTUtPndxLCAmaTkxNS0+Z2VtLnJldGlyZV93b3JrLCAwKTsKPiAtCWVs c2UKPiAtCQlxdWV1ZV9kZWxheWVkX3dvcmsoaTkxNS0+d3EsICZpOTE1LT5nZW0uaWRsZV93b3Jr LCAwKTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpOTE1 X2dlbV9zaHJpbmtlcl9yZWdpc3RlcihpOTE1KTsKPiArCXJlc3RvcmVfcmV0aXJlX3dvcmtlcihp OTE1KTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgZXJyX29iajoKPiAgIAlpOTE1X2dlbV9vYmplY3Rf cHV0KG9iaik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p Z3RfZmx1c2hfdGVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVz aF90ZXN0LmMKPiBpbmRleCA5NGFlZTQwNzFhNjYuLmU0MmYzYzU4NTM2YSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jCj4gQEAgLTEx LDIzICsxMSwyOSBAQAo+ICAgCj4gICBpbnQgaWd0X2ZsdXNoX3Rlc3Qoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBmbGFncykKPiAgIHsKPiArCWludCByZXQgPSBp OTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUpID8gLUVJTyA6IDA7Cj4gKwlpbnQgcmVwZWF0ID0g ISEoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEKTsKPiArCj4gICAJY29uZF9yZXNjaGVkKCk7Cj4g ICAKPiAtCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQgJiYKPiAtCSAgICBpOTE1X2dlbV9z d2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoaTkxNSwgaTkxNS0+Z3QuYWN0aXZlX2VuZ2luZXMpKSB7 Cj4gLQkJcHJfZXJyKCJGYWlsZWQgdG8gc3dpdGNoIGJhY2sgdG8ga2VybmVsIGNvbnRleHQ7IGRl Y2xhcmluZyB3ZWRnZWRcbiIpOwo+IC0JCWk5MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7Cj4gLQl9 Cj4gKwlkbyB7Cj4gKwkJaWYgKGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwgZmxhZ3MsIEha IC8gNSkgPT0gLUVUSU1FKSB7Cj4gKwkJCXByX2VycigiJXBTIHRpbWVkIG91dCwgY2FuY2VsbGlu ZyBhbGwgZnVydGhlciB0ZXN0aW5nLlxuIiwKPiArCQkJICAgICAgIF9fYnVpbHRpbl9yZXR1cm5f YWRkcmVzcygwKSk7Cj4gICAKPiAtCWlmIChpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsIGZs YWdzLCBIWiAvIDUpID09IC1FVElNRSkgewo+IC0JCXByX2VycigiJXBTIHRpbWVkIG91dCwgY2Fu Y2VsbGluZyBhbGwgZnVydGhlciB0ZXN0aW5nLlxuIiwKPiAtCQkgICAgICAgX19idWlsdGluX3Jl dHVybl9hZGRyZXNzKDApKTsKPiArCQkJR0VNX1RSQUNFKCIlcFMgdGltZWQgb3V0LlxuIiwKPiAr CQkJCSAgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKTsKPiArCQkJR0VNX1RSQUNFX0RVTVAo KTsKPiAgIAo+IC0JCUdFTV9UUkFDRSgiJXBTIHRpbWVkIG91dC5cbiIsIF9fYnVpbHRpbl9yZXR1 cm5fYWRkcmVzcygwKSk7Cj4gLQkJR0VNX1RSQUNFX0RVTVAoKTsKPiArCQkJaTkxNV9nZW1fc2V0 X3dlZGdlZChpOTE1KTsKPiArCQkJcmVwZWF0ID0gMDsKPiArCQkJcmV0ID0gLUVJTzsKPiArCQl9 Cj4gICAKPiAtCQlpOTE1X2dlbV9zZXRfd2VkZ2VkKGk5MTUpOwo+IC0JfQo+ICsJCS8qIEVuc3Vy ZSB3ZSBhbHNvIGZsdXNoIGFmdGVyIHdlZGdpbmcuICovCj4gKwkJaWYgKGZsYWdzICYgSTkxNV9X QUlUX0xPQ0tFRCkKPiArCQkJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Cj4gKwl9IHdoaWxl IChyZXBlYXQtLSk7Cj4gICAKPiAtCXJldHVybiBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUp Owo+ICsJcmV0dXJuIHJldDsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gaW5kZXggZmI2NzdiNDAxOWEwLi5jMDcyNDI0YzZi N2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2Vt X2RldmljZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2Vt X2RldmljZS5jCj4gQEAgLTQxLDExICs0MSwxMCBAQCB2b2lkIG1vY2tfZGV2aWNlX2ZsdXNoKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiAtCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGk5MTUsIGlkKQo+IC0JCW1vY2tfZW5naW5lX2ZsdXNoKGVuZ2luZSk7Cj4gLQo+IC0JaTkx NV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Cj4gLQlHRU1fQlVHX09OKGk5MTUtPmd0LmFjdGl2ZV9y ZXF1ZXN0cyk7Cj4gKwlkbyB7Cj4gKwkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQp Cj4gKwkJCW1vY2tfZW5naW5lX2ZsdXNoKGVuZ2luZSk7Cj4gKwl9IHdoaWxlIChpOTE1X3JldGly ZV9yZXF1ZXN0cyhpOTE1KSk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIG1vY2tfZGV2aWNl X3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiBAQCAtMTEwLDEwICsxMDksNiBAQCBz dGF0aWMgdm9pZCBtb2NrX3JldGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQo+ICAgCj4gICBzdGF0aWMgdm9pZCBtb2NrX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0KPiAtCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCppOTE1KSwgZ2VtLmlkbGVfd29yay53 b3JrKTsKPiAtCj4gLQlpOTE1LT5ndC5hY3RpdmVfZW5naW5lcyA9IDA7Cj4gICB9Cj4gICAKPiAg IHN0YXRpYyBpbnQgcG1fZG9tYWluX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gQEAgLTE4 NSw2ICsxODAsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqbW9ja19nZW1fZGV2aWNlKHZv aWQpCj4gICAKPiAgIAltb2NrX3VuY29yZV9pbml0KCZpOTE1LT51bmNvcmUpOwo+ICAgCWk5MTVf Z2VtX2luaXRfX21tKGk5MTUpOwo+ICsJaW50ZWxfZ3RfcG1faW5pdChpOTE1KTsKPiArCWF0b21p Y19pbmMoJmk5MTUtPmd0Lndha2VyZWYuY291bnQpOyAvKiBkaXNhYmxlOyBubyBodyBzdXBwb3J0 ICovCj4gICAKPiAgIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZpOTE1LT5ncHVfZXJyb3Iud2FpdF9x dWV1ZSk7Cj4gICAJaW5pdF93YWl0cXVldWVfaGVhZCgmaTkxNS0+Z3B1X2Vycm9yLnJlc2V0X3F1 ZXVlKTsKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4