From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ira Weiny Subject: Re: [RESEND PATCH 3/7] mm/gup: Change GUP fast to use flags rather than a write 'bool' Date: Thu, 21 Feb 2019 14:24:17 -0800 Message-ID: <20190221222416.GA14053__30316.3620804966$1550787921$gmane$org@iweiny-DESK2.sc.intel.com> References: <20190220053040.10831-1-ira.weiny@intel.com> <20190220053040.10831-4-ira.weiny@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gwwlR-0003ap-1A for xen-devel@lists.xenproject.org; Thu, 21 Feb 2019 22:24:21 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Souptick Joarder Cc: linux-fbdev@vger.kernel.org, Michal Hocko , kvm@vger.kernel.org, linux-sh@vger.kernel.org, Peter Zijlstra , James Hogan , linux-fpga@vger.kernel.org, Heiko Carstens , dri-devel@lists.freedesktop.org, linux-mips@vger.kernel.org, Linux-MM , Rich Felker , Paul Mackerras , sparclinux@vger.kernel.org, ceph-devel@vger.kernel.org, "open list:ANDROID DRIVERS" , linux-s390@vger.kernel.org, rds-devel@oss.oracle.com, Yoshinori Sato , linux-rdma@vger.kernel.org, Jason Gunthorpe , Ingo Molnar , Benjamin Herrenschmidt , xen-devel@lists.xenproject.org, devel@lists.orangefs.org, linux-media@vger.kernel.org, John Hubbard List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBGZWIgMjEsIDIwMTkgYXQgMDg6NDg6NDFBTSArMDUzMCwgU291cHRpY2sgSm9hcmRl ciB3cm90ZToKPiBIaSBJcmEsCj4gCj4gT24gV2VkLCBGZWIgMjAsIDIwMTkgYXQgMTE6MDEgQU0g PGlyYS53ZWlueUBpbnRlbC5jb20+IHdyb3RlOgo+ID4KPiA+IEZyb206IElyYSBXZWlueSA8aXJh LndlaW55QGludGVsLmNvbT4KPiA+Cj4gPiBUbyBmYWNpbGl0YXRlIGFkZGl0aW9uYWwgb3B0aW9u cyB0byBnZXRfdXNlcl9wYWdlc19mYXN0KCkgY2hhbmdlIHRoZQo+ID4gc2luZ3VsYXIgd3JpdGUg cGFyYW1ldGVyIHRvIGJlIGd1cF9mbGFncy4KPiA+Cj4gPiBUaGlzIHBhdGNoIGRvZXMgbm90IGNo YW5nZSBhbnkgZnVuY3Rpb25hbGl0eS4gIE5ldyBmdW5jdGlvbmFsaXR5IHdpbGwKPiA+IGZvbGxv dyBpbiBzdWJzZXF1ZW50IHBhdGNoZXMuCj4gPgo+ID4gU29tZSBvZiB0aGUgZ2V0X3VzZXJfcGFn ZXNfZmFzdCgpIGNhbGwgc2l0ZXMgd2VyZSB1bmNoYW5nZWQgYmVjYXVzZSB0aGV5Cj4gPiBhbHJl YWR5IHBhc3NlZCBGT0xMX1dSSVRFIG9yIDAgZm9yIHRoZSB3cml0ZSBwYXJhbWV0ZXIuCj4gPgo+ ID4gU2lnbmVkLW9mZi1ieTogSXJhIFdlaW55IDxpcmEud2VpbnlAaW50ZWwuY29tPgo+ID4gLS0t Cgpbc25pcF0KCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11 X2h2LmMgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfaHYuYwo+ID4gaW5kZXggYmQy ZGNmYmYwMGNkLi44ZmNiMGE5MjFlNDYgMTAwNjQ0Cj4gPiAtLS0gYS9hcmNoL3Bvd2VycGMva3Zt L2Jvb2szc182NF9tbXVfaHYuYwo+ID4gKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRf bW11X2h2LmMKPiA+IEBAIC01ODIsNyArNTgyLDcgQEAgaW50IGt2bXBwY19ib29rM3NfaHZfcGFn ZV9mYXVsdChzdHJ1Y3Qga3ZtX3J1biAqcnVuLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gPiAg ICAgICAgIC8qIElmIHdyaXRpbmcgIT0gMCwgdGhlbiB0aGUgSFBURSBtdXN0IGFsbG93IHdyaXRp bmcsIGlmIHdlIGdldCBoZXJlICovCj4gPiAgICAgICAgIHdyaXRlX29rID0gd3JpdGluZzsKPiA+ ICAgICAgICAgaHZhID0gZ2ZuX3RvX2h2YV9tZW1zbG90KG1lbXNsb3QsIGdmbik7Cj4gPiAtICAg ICAgIG5wYWdlcyA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoaHZhLCAxLCB3cml0aW5nLCBwYWdlcyk7 Cj4gPiArICAgICAgIG5wYWdlcyA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoaHZhLCAxLCB3cml0aW5n ID8gRk9MTF9XUklURSA6IDAsIHBhZ2VzKTsKPiAKPiBKdXN0IHJlcXVlc3RpbmcgZm9yIG9waW5p b24sCj4gKiB3cml0aW5nID8gRk9MTF9XUklURSA6IDAgKiBpcyB1c2VkIGluIG1hbnkgcGxhY2Vz LiBIb3cgYWJvdXQgcGxhY2luZyBpdCBpbiBhCj4gbWFjcm8vIGlubGluZSA/CgpJIGRvbid0IHJl YWxseSB0aGluayB0aGlzIHdvdWxkIGdhaW4gbXVjaC4gIEFuZCBJIGRvbid0IHRoaW5rIGl0IHdv dWxkIGJlIG1vcmUKY2xlYXIuICBJbiBmYWN0IEkgY2FuJ3QgZXZlbiB0aGluayBvZiBhIG1hY3Jv IG5hbWUgd2hpY2ggd291bGQgbWFrZSBzZW5zZS4gIEknbQppbmNsaW5lZCB0byBsZWF2ZSB0aGlz IGFzIHdyaXR0ZW4uCgpJcmEKCj4gCj4gPiAgICAgICAgIGlmIChucGFnZXMgPCAxKSB7Cj4gPiAg ICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgaXQncyBhbiBJL08gbWFwcGluZyAqLwo+ID4gICAg ICAgICAgICAgICAgIGRvd25fcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKPiA+IEBAIC0x MTc1LDcgKzExNzUsNyBAQCB2b2lkICprdm1wcGNfcGluX2d1ZXN0X3BhZ2Uoc3RydWN0IGt2bSAq a3ZtLCB1bnNpZ25lZCBsb25nIGdwYSwKPiA+ICAgICAgICAgaWYgKCFtZW1zbG90IHx8IChtZW1z bG90LT5mbGFncyAmIEtWTV9NRU1TTE9UX0lOVkFMSUQpKQo+ID4gICAgICAgICAgICAgICAgIGdv dG8gZXJyOwo+ID4gICAgICAgICBodmEgPSBnZm5fdG9faHZhX21lbXNsb3QobWVtc2xvdCwgZ2Zu KTsKPiA+IC0gICAgICAgbnBhZ2VzID0gZ2V0X3VzZXJfcGFnZXNfZmFzdChodmEsIDEsIDEsIHBh Z2VzKTsKPiA+ICsgICAgICAgbnBhZ2VzID0gZ2V0X3VzZXJfcGFnZXNfZmFzdChodmEsIDEsIEZP TExfV1JJVEUsIHBhZ2VzKTsKPiA+ICAgICAgICAgaWYgKG5wYWdlcyA8IDEpCj4gPiAgICAgICAg ICAgICAgICAgZ290byBlcnI7Cj4gPiAgICAgICAgIHBhZ2UgPSBwYWdlc1swXTsKPiA+IGRpZmYg LS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11LmMgYi9hcmNoL3Bvd2VycGMva3ZtL2U1 MDBfbW11LmMKPiA+IGluZGV4IDI0Mjk2ZjRjYWRjNi4uZTBhZjUzZmQ3OGM1IDEwMDY0NAo+ID4g LS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9lNTAwX21tdS5jCj4gPiArKysgYi9hcmNoL3Bvd2VycGMv a3ZtL2U1MDBfbW11LmMKPiA+IEBAIC03ODMsNyArNzgzLDcgQEAgaW50IGt2bV92Y3B1X2lvY3Rs X2NvbmZpZ190bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+ID4gICAgICAgICBpZiAoIXBhZ2Vz KQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4KPiA+IC0gICAgICAgcmV0 ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdChjZmctPmFycmF5LCBudW1fcGFnZXMsIDEsIHBhZ2VzKTsK PiA+ICsgICAgICAgcmV0ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdChjZmctPmFycmF5LCBudW1fcGFn ZXMsIEZPTExfV1JJVEUsIHBhZ2VzKTsKPiA+ICAgICAgICAgaWYgKHJldCA8IDApCj4gPiAgICAg ICAgICAgICAgICAgZ290byBmcmVlX3BhZ2VzOwo+ID4KPiA+IGRpZmYgLS1naXQgYS9hcmNoL3Bv d2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUuYyBiL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4 dF9pb21tdS5jCj4gPiBpbmRleCBhNzEyYTY1MGE4YjYuLmFjYjA5OTBjODM2NCAxMDA2NDQKPiA+ IC0tLSBhL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF9pb21tdS5jCj4gPiArKysgYi9hcmNo L3Bvd2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUuYwo+ID4gQEAgLTE5MCw3ICsxOTAsNyBAQCBz dGF0aWMgbG9uZyBtbV9pb21tdV9kb19hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWdu ZWQgbG9uZyB1YSwKPiA+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVudHJpZXM7ICsraSkgewo+ ID4gICAgICAgICAgICAgICAgIGN1cl91YSA9IHVhICsgKGkgPDwgUEFHRV9TSElGVCk7Cj4gPiAg ICAgICAgICAgICAgICAgaWYgKDEgIT0gZ2V0X3VzZXJfcGFnZXNfZmFzdChjdXJfdWEsCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS8qIHBhZ2VzICovLCAxLyog aXN3cml0ZSAqLywgJnBhZ2UpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMS8qIHBhZ2VzICovLCBGT0xMX1dSSVRFLCAmcGFnZSkpIHsKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICBmb3IgKGogPSAwOyBqIDwgaTsgKytqKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwdXRfcGFnZShwZm5fdG9fcGFnZShtZW0tPmhwYXNbal0gPj4KPiA+IEBAIC0yMDksNyAr MjA5LDcgQEAgc3RhdGljIGxvbmcgbW1faW9tbXVfZG9fYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAq bW0sIHVuc2lnbmVkIGxvbmcgdWEsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW1f aW9tbXVfbW92ZV9wYWdlX2Zyb21fY21hKHBhZ2UpKQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIHBvcHVsYXRlOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgaWYg KDEgIT0gZ2V0X3VzZXJfcGFnZXNfZmFzdChjdXJfdWEsCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLyogcGFnZXMgKi8sIDEvKiBpc3dyaXRlICov LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS8q IHBhZ2VzICovLCBGT0xMX1dSSVRFLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnBhZ2UpKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldCA9IC1FRkFVTFQ7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZvciAoaiA9IDA7IGogPCBpOyArK2opCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9p bnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMKPiA+IGluZGV4IGZjYjU1YjAy OTkwZS4uNjlkOTM2NmI5NjZjIDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1 cHQuYwo+ID4gKysrIGIvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYwo+ID4gQEAgLTIyNzgsNyAr MjI3OCw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3Zt LCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpCj4gPiAgICAgICAgICAgICAgICAgcmV0ID0g LUVGQVVMVDsKPiA+ICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ICAgICAgICAgfQo+ID4g LSAgICAgICByZXQgPSBnZXRfdXNlcl9wYWdlc19mYXN0KG1hcC0+YWRkciwgMSwgMSwgJm1hcC0+ cGFnZSk7Cj4gPiArICAgICAgIHJldCA9IGdldF91c2VyX3BhZ2VzX2Zhc3QobWFwLT5hZGRyLCAx LCBGT0xMX1dSSVRFLCAmbWFwLT5wYWdlKTsKPiA+ICAgICAgICAgaWYgKHJldCA8IDApCj4gPiAg ICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAgICAgIEJVR19PTihyZXQgIT0gMSk7Cj4g PiBkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL21tL2d1cC5jIGIvYXJjaC9zMzkwL21tL2d1cC5jCj4g PiBpbmRleCAyODA5ZDExYzdhMjguLjBhNmZhZjNkOTk2MCAxMDA2NDQKPiA+IC0tLSBhL2FyY2gv czM5MC9tbS9ndXAuYwo+ID4gKysrIGIvYXJjaC9zMzkwL21tL2d1cC5jCj4gPiBAQCAtMjY1LDcg KzI2NSw3IEBAIGludCBfX2dldF91c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwg aW50IG5yX3BhZ2VzLCBpbnQgd3JpdGUsCj4gPiAgICogZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIC0g cGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5Cj4gPiAgICogQHN0YXJ0OiAgICAgc3RhcnRpbmcgdXNl ciBhZGRyZXNzCj4gPiAgICogQG5yX3BhZ2VzOiAgbnVtYmVyIG9mIHBhZ2VzIGZyb20gc3RhcnQg dG8gcGluCj4gPiAtICogQHdyaXRlOiAgICAgd2hldGhlciBwYWdlcyB3aWxsIGJlIHdyaXR0ZW4g dG8KPiA+ICsgKiBAZ3VwX2ZsYWdzOiBmbGFncyBtb2RpZnlpbmcgcGluIGJlaGF2aW91cgo+ID4g ICAqIEBwYWdlczogICAgIGFycmF5IHRoYXQgcmVjZWl2ZXMgcG9pbnRlcnMgdG8gdGhlIHBhZ2Vz IHBpbm5lZC4KPiA+ICAgKiAgICAgICAgICAgICBTaG91bGQgYmUgYXQgbGVhc3QgbnJfcGFnZXMg bG9uZy4KPiA+ICAgKgo+ID4gQEAgLTI3NywyMiArMjc3LDIyIEBAIGludCBfX2dldF91c2VyX3Bh Z2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLCBpbnQgd3JpdGUsCj4g PiAgICogcmVxdWVzdGVkLiBJZiBucl9wYWdlcyBpcyAwIG9yIG5lZ2F0aXZlLCByZXR1cm5zIDAu IElmIG5vIHBhZ2VzCj4gPiAgICogd2VyZSBwaW5uZWQsIHJldHVybnMgLWVycm5vLgo+ID4gICAq Lwo+ID4gLWludCBnZXRfdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBu cl9wYWdlcywgaW50IHdyaXRlLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBh Z2UgKipwYWdlcykKPiA+ICtpbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0 YXJ0LCBpbnQgbnJfcGFnZXMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQo+ID4gIHsKPiA+ICAgICAgICAgaW50 IG5yLCByZXQ7Cj4gPgo+ID4gICAgICAgICBtaWdodF9zbGVlcCgpOwo+ID4gICAgICAgICBzdGFy dCAmPSBQQUdFX01BU0s7Cj4gPiAtICAgICAgIG5yID0gX19nZXRfdXNlcl9wYWdlc19mYXN0KHN0 YXJ0LCBucl9wYWdlcywgd3JpdGUsIHBhZ2VzKTsKPiA+ICsgICAgICAgbnIgPSBfX2dldF91c2Vy X3BhZ2VzX2Zhc3Qoc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MgJiBGT0xMX1dSSVRFLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlcyk7Cj4gPiAgICAgICAgIGlm IChuciA9PSBucl9wYWdlcykKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gbnI7Cj4gPgo+ID4g ICAgICAgICAvKiBUcnkgdG8gZ2V0IHRoZSByZW1haW5pbmcgcGFnZXMgd2l0aCBnZXRfdXNlcl9w YWdlcyAqLwo+ID4gICAgICAgICBzdGFydCArPSBuciA8PCBQQUdFX1NISUZUOwo+ID4gICAgICAg ICBwYWdlcyArPSBucjsKPiA+IC0gICAgICAgcmV0ID0gZ2V0X3VzZXJfcGFnZXNfdW5sb2NrZWQo c3RhcnQsIG5yX3BhZ2VzIC0gbnIsIHBhZ2VzLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB3cml0ZSA/IEZPTExfV1JJVEUgOiAwKTsKPiA+ICsgICAgICAgcmV0ID0g Z2V0X3VzZXJfcGFnZXNfdW5sb2NrZWQoc3RhcnQsIG5yX3BhZ2VzIC0gbnIsIHBhZ2VzLCBndXBf ZmxhZ3MpOwo+ID4gICAgICAgICAvKiBIYXZlIHRvIGJlIGEgYml0IGNhcmVmdWwgd2l0aCByZXR1 cm4gdmFsdWVzICovCj4gPiAgICAgICAgIGlmIChuciA+IDApCj4gPiAgICAgICAgICAgICAgICAg cmV0ID0gKHJldCA8IDApID8gbnIgOiByZXQgKyBucjsKPiA+IGRpZmYgLS1naXQgYS9hcmNoL3No L21tL2d1cC5jIGIvYXJjaC9zaC9tbS9ndXAuYwo+ID4gaW5kZXggM2UyN2Y2ZDFmMWVjLi4yNzdj ODgyZjc0ODkgMTAwNjQ0Cj4gPiAtLS0gYS9hcmNoL3NoL21tL2d1cC5jCj4gPiArKysgYi9hcmNo L3NoL21tL2d1cC5jCj4gPiBAQCAtMjA0LDcgKzIwNCw3IEBAIGludCBfX2dldF91c2VyX3BhZ2Vz X2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLCBpbnQgd3JpdGUsCj4gPiAg ICogZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIC0gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5Cj4gPiAg ICogQHN0YXJ0OiAgICAgc3RhcnRpbmcgdXNlciBhZGRyZXNzCj4gPiAgICogQG5yX3BhZ2VzOiAg bnVtYmVyIG9mIHBhZ2VzIGZyb20gc3RhcnQgdG8gcGluCj4gPiAtICogQHdyaXRlOiAgICAgd2hl dGhlciBwYWdlcyB3aWxsIGJlIHdyaXR0ZW4gdG8KPiA+ICsgKiBAZ3VwX2ZsYWdzOiBmbGFncyBt b2RpZnlpbmcgcGluIGJlaGF2aW91cgo+ID4gICAqIEBwYWdlczogICAgIGFycmF5IHRoYXQgcmVj ZWl2ZXMgcG9pbnRlcnMgdG8gdGhlIHBhZ2VzIHBpbm5lZC4KPiA+ICAgKiAgICAgICAgICAgICBT aG91bGQgYmUgYXQgbGVhc3QgbnJfcGFnZXMgbG9uZy4KPiA+ICAgKgo+ID4gQEAgLTIxNiw4ICsy MTYsOCBAQCBpbnQgX19nZXRfdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGlu dCBucl9wYWdlcywgaW50IHdyaXRlLAo+ID4gICAqIHJlcXVlc3RlZC4gSWYgbnJfcGFnZXMgaXMg MCBvciBuZWdhdGl2ZSwgcmV0dXJucyAwLiBJZiBubyBwYWdlcwo+ID4gICAqIHdlcmUgcGlubmVk LCByZXR1cm5zIC1lcnJuby4KPiA+ICAgKi8KPiA+IC1pbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1 bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsIGludCB3cml0ZSwKPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBwYWdlICoqcGFnZXMpCj4gPiAraW50IGdldF91c2VyX3Bh Z2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdl cykKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gY3VycmVudC0+bW07 Cj4gPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgbGVuLCBlbmQ7Cj4gPiBAQCAtMjQxLDcg KzI0MSw4IEBAIGludCBnZXRfdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGlu dCBucl9wYWdlcywgaW50IHdyaXRlLAo+ID4gICAgICAgICAgICAgICAgIG5leHQgPSBwZ2RfYWRk cl9lbmQoYWRkciwgZW5kKTsKPiA+ICAgICAgICAgICAgICAgICBpZiAocGdkX25vbmUocGdkKSkK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc2xvdzsKPiA+IC0gICAgICAgICAgICAg ICBpZiAoIWd1cF9wdWRfcmFuZ2UocGdkLCBhZGRyLCBuZXh0LCB3cml0ZSwgcGFnZXMsICZucikp Cj4gPiArICAgICAgICAgICAgICAgaWYgKCFndXBfcHVkX3JhbmdlKHBnZCwgYWRkciwgbmV4dCwg Z3VwX2ZsYWdzICYgRk9MTF9XUklURSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFnZXMsICZucikpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHNsb3c7 Cj4gPiAgICAgICAgIH0gd2hpbGUgKHBnZHArKywgYWRkciA9IG5leHQsIGFkZHIgIT0gZW5kKTsK PiA+ICAgICAgICAgbG9jYWxfaXJxX2VuYWJsZSgpOwo+ID4gQEAgLTI2MSw3ICsyNjIsNyBAQCBp bnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMs IGludCB3cml0ZSwKPiA+Cj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gZ2V0X3VzZXJfcGFnZXNf dW5sb2NrZWQoc3RhcnQsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kIC0gc3RhcnQp ID4+IFBBR0VfU0hJRlQsIHBhZ2VzLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUg PyBGT0xMX1dSSVRFIDogMCk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBndXBfZmxhZ3Mp Owo+ID4KPiA+ICAgICAgICAgICAgICAgICAvKiBIYXZlIHRvIGJlIGEgYml0IGNhcmVmdWwgd2l0 aCByZXR1cm4gdmFsdWVzICovCj4gPiAgICAgICAgICAgICAgICAgaWYgKG5yID4gMCkgewo+ID4g ZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvbW0vZ3VwLmMgYi9hcmNoL3NwYXJjL21tL2d1cC5jCj4g PiBpbmRleCBhZWU2ZGJhODNkMGUuLjFlNzcwYTUxN2Q0YSAxMDA2NDQKPiA+IC0tLSBhL2FyY2gv c3BhcmMvbW0vZ3VwLmMKPiA+ICsrKyBiL2FyY2gvc3BhcmMvbW0vZ3VwLmMKPiA+IEBAIC0yNDUs OCArMjQ1LDggQEAgaW50IF9fZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0 LCBpbnQgbnJfcGFnZXMsIGludCB3cml0ZSwKPiA+ICAgICAgICAgcmV0dXJuIG5yOwo+ID4gIH0K PiA+Cj4gPiAtaW50IGdldF91c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50 IG5yX3BhZ2VzLCBpbnQgd3JpdGUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg cGFnZSAqKnBhZ2VzKQo+ID4gK2ludCBnZXRfdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcg c3RhcnQsIGludCBucl9wYWdlcywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMpCj4gPiAgewo+ID4gICAgICAgICBz dHJ1Y3QgbW1fc3RydWN0ICptbSA9IGN1cnJlbnQtPm1tOwo+ID4gICAgICAgICB1bnNpZ25lZCBs b25nIGFkZHIsIGxlbiwgZW5kOwo+ID4gQEAgLTMwMyw3ICszMDMsOCBAQCBpbnQgZ2V0X3VzZXJf cGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsIGludCB3cml0ZSwK PiA+ICAgICAgICAgICAgICAgICBuZXh0ID0gcGdkX2FkZHJfZW5kKGFkZHIsIGVuZCk7Cj4gPiAg ICAgICAgICAgICAgICAgaWYgKHBnZF9ub25lKHBnZCkpCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIHNsb3c7Cj4gPiAtICAgICAgICAgICAgICAgaWYgKCFndXBfcHVkX3JhbmdlKHBn ZCwgYWRkciwgbmV4dCwgd3JpdGUsIHBhZ2VzLCAmbnIpKQo+ID4gKyAgICAgICAgICAgICAgIGlm ICghZ3VwX3B1ZF9yYW5nZShwZ2QsIGFkZHIsIG5leHQsIGd1cF9mbGFncyAmIEZPTExfV1JJVEUs Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VzLCAmbnIpKQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzbG93Owo+ID4gICAgICAgICB9IHdoaWxlIChw Z2RwKyssIGFkZHIgPSBuZXh0LCBhZGRyICE9IGVuZCk7Cj4gPgo+ID4gQEAgLTMyNCw3ICszMjUs NyBAQCBpbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJf cGFnZXMsIGludCB3cml0ZSwKPiA+Cj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gZ2V0X3VzZXJf cGFnZXNfdW5sb2NrZWQoc3RhcnQsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kIC0g c3RhcnQpID4+IFBBR0VfU0hJRlQsIHBhZ2VzLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg d3JpdGUgPyBGT0xMX1dSSVRFIDogMCk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBndXBf ZmxhZ3MpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICAvKiBIYXZlIHRvIGJlIGEgYml0IGNhcmVm dWwgd2l0aCByZXR1cm4gdmFsdWVzICovCj4gPiAgICAgICAgICAgICAgICAgaWYgKG5yID4gMCkg ewo+ID4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9wYWdpbmdfdG1wbC5oIGIvYXJjaC94ODYv a3ZtL3BhZ2luZ190bXBsLmgKPiA+IGluZGV4IDZiZGNhMzk4MjliYy4uMDg3MTUwMzRlMzE1IDEw MDY0NAo+ID4gLS0tIGEvYXJjaC94ODYva3ZtL3BhZ2luZ190bXBsLmgKPiA+ICsrKyBiL2FyY2gv eDg2L2t2bS9wYWdpbmdfdG1wbC5oCj4gPiBAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBpbnQg Rk5BTUUoY21weGNoZ19ncHRlKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbW11 ICptbXUsCj4gPiAgICAgICAgIHB0X2VsZW1lbnRfdCAqdGFibGU7Cj4gPiAgICAgICAgIHN0cnVj dCBwYWdlICpwYWdlOwo+ID4KPiA+IC0gICAgICAgbnBhZ2VzID0gZ2V0X3VzZXJfcGFnZXNfZmFz dCgodW5zaWduZWQgbG9uZylwdGVwX3VzZXIsIDEsIDEsICZwYWdlKTsKPiA+ICsgICAgICAgbnBh Z2VzID0gZ2V0X3VzZXJfcGFnZXNfZmFzdCgodW5zaWduZWQgbG9uZylwdGVwX3VzZXIsIDEsIEZP TExfV1JJVEUsICZwYWdlKTsKPiA+ICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHVzZXIgaXMgZG9p bmcgc29tZXRoaW5nIG1lYW5pbmdsZXNzLiAqLwo+ID4gICAgICAgICBpZiAodW5saWtlbHkobnBh Z2VzICE9IDEpKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ID4gZGlmZiAt LWdpdCBhL2FyY2gveDg2L2t2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0uYwo+ID4gaW5kZXgg ZjEzYTNhMjRkMzYwLi4xNzM1OTZhMDIwY2IgMTAwNjQ0Cj4gPiAtLS0gYS9hcmNoL3g4Ni9rdm0v c3ZtLmMKPiA+ICsrKyBiL2FyY2gveDg2L2t2bS9zdm0uYwo+ID4gQEAgLTE4MDMsNyArMTgwMyw3 IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqKnNldl9waW5fbWVtb3J5KHN0cnVjdCBrdm0gKmt2bSwg dW5zaWduZWQgbG9uZyB1YWRkciwKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ Cj4gPiAgICAgICAgIC8qIFBpbiB0aGUgdXNlciB2aXJ0dWFsIGFkZHJlc3MuICovCj4gPiAtICAg ICAgIG5waW5uZWQgPSBnZXRfdXNlcl9wYWdlc19mYXN0KHVhZGRyLCBucGFnZXMsIHdyaXRlID8g Rk9MTF9XUklURSA6IDAsIHBhZ2VzKTsKPiA+ICsgICAgICAgbnBpbm5lZCA9IGdldF91c2VyX3Bh Z2VzX2Zhc3QodWFkZHIsIG5wYWdlcywgRk9MTF9XUklURSwgcGFnZXMpOwo+ID4gICAgICAgICBp ZiAobnBpbm5lZCAhPSBucGFnZXMpIHsKPiA+ICAgICAgICAgICAgICAgICBwcl9lcnIoIlNFVjog RmFpbHVyZSBsb2NraW5nICVsdSBwYWdlcy5cbiIsIG5wYWdlcyk7Cj4gPiAgICAgICAgICAgICAg ICAgZ290byBlcnI7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9mcGdhL2RmbC1hZnUtZG1hLXJl Z2lvbi5jIGIvZHJpdmVycy9mcGdhL2RmbC1hZnUtZG1hLXJlZ2lvbi5jCj4gPiBpbmRleCBlMThh Nzg2ZmM5NDMuLmM0Mzg3MjJiZjRlMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZnBnYS9kZmwt YWZ1LWRtYS1yZWdpb24uYwo+ID4gKysrIGIvZHJpdmVycy9mcGdhL2RmbC1hZnUtZG1hLXJlZ2lv bi5jCj4gPiBAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyBpbnQgYWZ1X2RtYV9waW5fcGFnZXMo c3RydWN0IGRmbF9mZWF0dXJlX3BsYXRmb3JtX2RhdGEgKnBkYXRhLAo+ID4gICAgICAgICAgICAg ICAgIGdvdG8gdW5sb2NrX3ZtOwo+ID4gICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICBwaW5uZWQg PSBnZXRfdXNlcl9wYWdlc19mYXN0KHJlZ2lvbi0+dXNlcl9hZGRyLCBucGFnZXMsIDEsCj4gPiAr ICAgICAgIHBpbm5lZCA9IGdldF91c2VyX3BhZ2VzX2Zhc3QocmVnaW9uLT51c2VyX2FkZHIsIG5w YWdlcywgRk9MTF9XUklURSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZWdpb24tPnBhZ2VzKTsKPiA+ICAgICAgICAgaWYgKHBpbm5lZCA8IDApIHsKPiA+ICAgICAg ICAgICAgICAgICByZXQgPSBwaW5uZWQ7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3ZpYS92aWFfZG1hYmxpdC5jIGIvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfZG1hYmxpdC5jCj4g PiBpbmRleCAzNDViZGE0NDk0ZTEuLjBjOGIwOTYwMjkxMCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS92aWEvdmlhX2RtYWJsaXQuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zp YS92aWFfZG1hYmxpdC5jCj4gPiBAQCAtMjM5LDcgKzIzOSw4IEBAIHZpYV9sb2NrX2FsbF9kbWFf cGFnZXMoZHJtX3ZpYV9zZ19pbmZvX3QgKnZzZywgIGRybV92aWFfZG1hYmxpdF90ICp4ZmVyKQo+ ID4gICAgICAgICBpZiAoTlVMTCA9PSB2c2ctPnBhZ2VzKQo+ID4gICAgICAgICAgICAgICAgIHJl dHVybiAtRU5PTUVNOwo+ID4gICAgICAgICByZXQgPSBnZXRfdXNlcl9wYWdlc19mYXN0KCh1bnNp Z25lZCBsb25nKXhmZXItPm1lbV9hZGRyLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgdnNn LT5udW1fcGFnZXMsIHZzZy0+ZGlyZWN0aW9uID09IERNQV9GUk9NX0RFVklDRSwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHZzZy0+bnVtX3BhZ2VzLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgdnNnLT5kaXJlY3Rpb24gPT0gRE1BX0ZST01fREVWSUNFID8gRk9MTF9XUklURSA6IDAs Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB2c2ctPnBhZ2VzKTsKPiA+ICAgICAgICAgaWYg KHJldCAhPSB2c2ctPm51bV9wYWdlcykgewo+ID4gICAgICAgICAgICAgICAgIGlmIChyZXQgPCAw KQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL3VzZXJfcGFnZXMu YyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL3VzZXJfcGFnZXMuYwo+ID4gaW5kZXggMjRi NTkyYzY1MjJlLi43OGNjYWNhZjk3ZDAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2luZmluaWJh bmQvaHcvaGZpMS91c2VyX3BhZ2VzLmMKPiA+ICsrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9o ZmkxL3VzZXJfcGFnZXMuYwo+ID4gQEAgLTEwNSw3ICsxMDUsOCBAQCBpbnQgaGZpMV9hY3F1aXJl X3VzZXJfcGFnZXMoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgdmFkZHIsIHNp emVfdCBucAo+ID4gIHsKPiA+ICAgICAgICAgaW50IHJldDsKPiA+Cj4gPiAtICAgICAgIHJldCA9 IGdldF91c2VyX3BhZ2VzX2Zhc3QodmFkZHIsIG5wYWdlcywgd3JpdGFibGUsIHBhZ2VzKTsKPiA+ ICsgICAgICAgcmV0ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdCh2YWRkciwgbnBhZ2VzLCB3cml0YWJs ZSA/IEZPTExfV1JJVEUgOiAwLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhZ2VzKTsKPiA+ICAgICAgICAgaWYgKHJldCA8IDApCj4gPiAgICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2dlbndxZS9jYXJkX3V0 aWxzLmMgYi9kcml2ZXJzL21pc2MvZ2Vud3FlL2NhcmRfdXRpbHMuYwo+ID4gaW5kZXggMjUyNjVm ZDBmZDZlLi44OWNmZjlkMTAxMmIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL21pc2MvZ2Vud3Fl L2NhcmRfdXRpbHMuYwo+ID4gKysrIGIvZHJpdmVycy9taXNjL2dlbndxZS9jYXJkX3V0aWxzLmMK PiA+IEBAIC02MDMsNyArNjAzLDcgQEAgaW50IGdlbndxZV91c2VyX3ZtYXAoc3RydWN0IGdlbndx ZV9kZXYgKmNkLCBzdHJ1Y3QgZG1hX21hcHBpbmcgKm0sIHZvaWQgKnVhZGRyLAo+ID4gICAgICAg ICAvKiBwaW4gdXNlciBwYWdlcyBpbiBtZW1vcnkgKi8KPiA+ICAgICAgICAgcmMgPSBnZXRfdXNl cl9wYWdlc19mYXN0KGRhdGEgJiBQQUdFX01BU0ssIC8qIHBhZ2UgYWxpZ25lZCBhZGRyICovCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLT5ucl9wYWdlcywKPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0tPndyaXRlLCAgICAgICAgICAgICAgLyogcmVh ZGFibGUvd3JpdGFibGUgKi8KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0t PndyaXRlID8gRk9MTF9XUklURSA6IDAsICAgICAvKiByZWFkYWJsZS93cml0YWJsZSAqLwo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS0+cGFnZV9saXN0KTsgLyogcHRycyB0 byBwYWdlcyAqLwo+ID4gICAgICAgICBpZiAocmMgPCAwKQo+ID4gICAgICAgICAgICAgICAgIGdv dG8gZmFpbF9nZXRfdXNlcl9wYWdlczsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mvdm13 X3ZtY2kvdm1jaV9ob3N0LmMgYi9kcml2ZXJzL21pc2Mvdm13X3ZtY2kvdm1jaV9ob3N0LmMKPiA+ IGluZGV4IDk5N2Y5MjU0M2RkNC4uNDIyZDA4ZGEzMjQ0IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9taXNjL3Ztd192bWNpL3ZtY2lfaG9zdC5jCj4gPiArKysgYi9kcml2ZXJzL21pc2Mvdm13X3Zt Y2kvdm1jaV9ob3N0LmMKPiA+IEBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIGludCB2bWNpX2hv c3Rfc2V0dXBfbm90aWZ5KHN0cnVjdCB2bWNpX2N0eCAqY29udGV4dCwKPiA+ICAgICAgICAgLyoK PiA+ICAgICAgICAgICogTG9jayBwaHlzaWNhbCBwYWdlIGJhY2tpbmcgYSBnaXZlbiB1c2VyIFZB Lgo+ID4gICAgICAgICAgKi8KPiA+IC0gICAgICAgcmV0dmFsID0gZ2V0X3VzZXJfcGFnZXNfZmFz dCh1dmEsIDEsIDEsICZjb250ZXh0LT5ub3RpZnlfcGFnZSk7Cj4gPiArICAgICAgIHJldHZhbCA9 IGdldF91c2VyX3BhZ2VzX2Zhc3QodXZhLCAxLCBGT0xMX1dSSVRFLCAmY29udGV4dC0+bm90aWZ5 X3BhZ2UpOwo+ID4gICAgICAgICBpZiAocmV0dmFsICE9IDEpIHsKPiA+ICAgICAgICAgICAgICAg ICBjb250ZXh0LT5ub3RpZnlfcGFnZSA9IE5VTEw7Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJu IFZNQ0lfRVJST1JfR0VORVJJQzsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mvdm13X3Zt Y2kvdm1jaV9xdWV1ZV9wYWlyLmMgYi9kcml2ZXJzL21pc2Mvdm13X3ZtY2kvdm1jaV9xdWV1ZV9w YWlyLmMKPiA+IGluZGV4IDI2NGY0ZWQ4ZWVmMi4uYzUzOTZlZTMyZTUxIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9taXNjL3Ztd192bWNpL3ZtY2lfcXVldWVfcGFpci5jCj4gPiArKysgYi9kcml2 ZXJzL21pc2Mvdm13X3ZtY2kvdm1jaV9xdWV1ZV9wYWlyLmMKPiA+IEBAIC02NjYsNyArNjY2LDgg QEAgc3RhdGljIGludCBxcF9ob3N0X2dldF91c2VyX21lbW9yeSh1NjQgcHJvZHVjZV91dmEsCj4g PiAgICAgICAgIGludCBlcnIgPSBWTUNJX1NVQ0NFU1M7Cj4gPgo+ID4gICAgICAgICByZXR2YWwg PSBnZXRfdXNlcl9wYWdlc19mYXN0KCh1aW50cHRyX3QpIHByb2R1Y2VfdXZhLAo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VfcS0+a2VybmVsX2lmLT5udW1f cGFnZXMsIDEsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVj ZV9xLT5rZXJuZWxfaWYtPm51bV9wYWdlcywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGT0xMX1dSSVRFLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByb2R1Y2VfcS0+a2VybmVsX2lmLT51LmguaGVhZGVyX3BhZ2UpOwo+ID4gICAgICAg ICBpZiAocmV0dmFsIDwgKGludClwcm9kdWNlX3EtPmtlcm5lbF9pZi0+bnVtX3BhZ2VzKSB7Cj4g PiAgICAgICAgICAgICAgICAgcHJfZGVidWcoImdldF91c2VyX3BhZ2VzX2Zhc3QocHJvZHVjZSkg ZmFpbGVkIChyZXR2YWw9JWQpIiwKPiA+IEBAIC02NzgsNyArNjc5LDggQEAgc3RhdGljIGludCBx cF9ob3N0X2dldF91c2VyX21lbW9yeSh1NjQgcHJvZHVjZV91dmEsCj4gPiAgICAgICAgIH0KPiA+ Cj4gPiAgICAgICAgIHJldHZhbCA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoKHVpbnRwdHJfdCkgY29u c3VtZV91dmEsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Vt ZV9xLT5rZXJuZWxfaWYtPm51bV9wYWdlcywgMSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdW1lX3EtPmtlcm5lbF9pZi0+bnVtX3BhZ2VzLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPTExfV1JJVEUsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZV9xLT5rZXJuZWxfaWYtPnUuaC5oZWFk ZXJfcGFnZSk7Cj4gPiAgICAgICAgIGlmIChyZXR2YWwgPCAoaW50KWNvbnN1bWVfcS0+a2VybmVs X2lmLT5udW1fcGFnZXMpIHsKPiA+ICAgICAgICAgICAgICAgICBwcl9kZWJ1ZygiZ2V0X3VzZXJf cGFnZXNfZmFzdChjb25zdW1lKSBmYWlsZWQgKHJldHZhbD0lZCkiLAo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGxhdGZvcm0vZ29sZGZpc2gvZ29sZGZpc2hfcGlwZS5jIGIvZHJpdmVycy9wbGF0 Zm9ybS9nb2xkZmlzaC9nb2xkZmlzaF9waXBlLmMKPiA+IGluZGV4IDMyMWJjNjczYzQxNy4uY2Vm MDEzM2FhNDdhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9wbGF0Zm9ybS9nb2xkZmlzaC9nb2xk ZmlzaF9waXBlLmMKPiA+ICsrKyBiL2RyaXZlcnMvcGxhdGZvcm0vZ29sZGZpc2gvZ29sZGZpc2hf cGlwZS5jCj4gPiBAQCAtMjc0LDcgKzI3NCw4IEBAIHN0YXRpYyBpbnQgcGluX3VzZXJfcGFnZXMo dW5zaWduZWQgbG9uZyBmaXJzdF9wYWdlLAo+ID4gICAgICAgICAgICAgICAgICppdGVyX2xhc3Rf cGFnZV9zaXplID0gbGFzdF9wYWdlX3NpemU7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAg IHJldCA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoZmlyc3RfcGFnZSwgcmVxdWVzdGVkX3BhZ2VzLCAh aXNfd3JpdGUsCj4gPiArICAgICAgIHJldCA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoZmlyc3RfcGFn ZSwgcmVxdWVzdGVkX3BhZ2VzLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICFpc193cml0ZSA/IEZPTExfV1JJVEUgOiAwLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhZ2VzKTsKPiA+ICAgICAgICAgaWYgKHJldCA8PSAwKQo+ID4gICAgICAgICAg ICAgICAgIHJldHVybiAtRUZBVUxUOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmFwaWRpby9k ZXZpY2VzL3Jpb19tcG9ydF9jZGV2LmMgYi9kcml2ZXJzL3JhcGlkaW8vZGV2aWNlcy9yaW9fbXBv cnRfY2Rldi5jCj4gPiBpbmRleCBjYmU0NjdmZjFhYmEuLmY2ODFiM2U5ZTk3MCAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvcmFwaWRpby9kZXZpY2VzL3Jpb19tcG9ydF9jZGV2LmMKPiA+ICsrKyBi L2RyaXZlcnMvcmFwaWRpby9kZXZpY2VzL3Jpb19tcG9ydF9jZGV2LmMKPiA+IEBAIC04NjgsNyAr ODY4LDkgQEAgcmlvX2RtYV90cmFuc2ZlcihzdHJ1Y3QgZmlsZSAqZmlscCwgdTMyIHRyYW5zZmVy X21vZGUsCj4gPgo+ID4gICAgICAgICAgICAgICAgIHBpbm5lZCA9IGdldF91c2VyX3BhZ2VzX2Zh c3QoCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXhm ZXItPmxvY19hZGRyICYgUEFHRV9NQVNLLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBucl9wYWdlcywgZGlyID09IERNQV9GUk9NX0RFVklDRSwgcGFnZV9saXN0KTsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJfcGFnZXMsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRpciA9PSBETUFfRlJPTV9ERVZJQ0UgPyBGT0xMX1dSSVRFIDog MCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9saXN0KTsKPiA+Cj4g PiAgICAgICAgICAgICAgICAgaWYgKHBpbm5lZCAhPSBucl9wYWdlcykgewo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHBpbm5lZCA8IDApIHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3NidXMvY2hhci9vcmFkYXguYyBiL2RyaXZlcnMvc2J1cy9jaGFyL29yYWRheC5jCj4gPiBpbmRl eCA2NTE2YmMzY2I1OGIuLjc5MGFhMTQ4NjcwZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvc2J1 cy9jaGFyL29yYWRheC5jCj4gPiArKysgYi9kcml2ZXJzL3NidXMvY2hhci9vcmFkYXguYwo+ID4g QEAgLTQzNyw3ICs0MzcsNyBAQCBzdGF0aWMgaW50IGRheF9sb2NrX3BhZ2Uodm9pZCAqdmEsIHN0 cnVjdCBwYWdlICoqcCkKPiA+Cj4gPiAgICAgICAgIGRheF9kYmcoInV2YSAlcCIsIHZhKTsKPiA+ Cj4gPiAtICAgICAgIHJldCA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoKHVuc2lnbmVkIGxvbmcpdmEs IDEsIDEsIHApOwo+ID4gKyAgICAgICByZXQgPSBnZXRfdXNlcl9wYWdlc19mYXN0KCh1bnNpZ25l ZCBsb25nKXZhLCAxLCBGT0xMX1dSSVRFLCBwKTsKPiA+ICAgICAgICAgaWYgKHJldCA9PSAxKSB7 Cj4gPiAgICAgICAgICAgICAgICAgZGF4X2RiZygibG9ja2VkIHBhZ2UgJXAsIGZvciBWQSAlcCIs ICpwLCB2YSk7Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zY3NpL3N0LmMgYi9kcml2ZXJzL3Njc2kvc3QuYwo+ID4gaW5kZXggN2ZmMjJkM2Yw M2UzLi44NzFiMjU5MTRjMDcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3Njc2kvc3QuYwo+ID4g KysrIGIvZHJpdmVycy9zY3NpL3N0LmMKPiA+IEBAIC00OTE4LDcgKzQ5MTgsOCBAQCBzdGF0aWMg aW50IHNnbF9tYXBfdXNlcl9wYWdlcyhzdHJ1Y3Qgc3RfYnVmZmVyICpTVGJwLAo+ID4KPiA+ICAg ICAgICAgIC8qIFRyeSB0byBmYXVsdCBpbiBhbGwgb2YgdGhlIG5lY2Vzc2FyeSBwYWdlcyAqLwo+ ID4gICAgICAgICAgLyogcnc9PVJFQUQgbWVhbnMgcmVhZCBmcm9tIGRyaXZlLCB3cml0ZSBpbnRv IG1lbW9yeSBhcmVhICovCj4gPiAtICAgICAgIHJlcyA9IGdldF91c2VyX3BhZ2VzX2Zhc3QodWFk ZHIsIG5yX3BhZ2VzLCBydyA9PSBSRUFELCBwYWdlcyk7Cj4gPiArICAgICAgIHJlcyA9IGdldF91 c2VyX3BhZ2VzX2Zhc3QodWFkZHIsIG5yX3BhZ2VzLCBydyA9PSBSRUFEID8gRk9MTF9XUklURSA6 IDAsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZXMpOwo+ID4KPiA+ ICAgICAgICAgLyogRXJyb3JzIGFuZCBubyBwYWdlIG1hcHBlZCBzaG91bGQgcmV0dXJuIGhlcmUg Ki8KPiA+ICAgICAgICAgaWYgKHJlcyA8IG5yX3BhZ2VzKQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvc3RhZ2luZy9nYXNrZXQvZ2Fza2V0X3BhZ2VfdGFibGUuYyBiL2RyaXZlcnMvc3RhZ2luZy9n YXNrZXQvZ2Fza2V0X3BhZ2VfdGFibGUuYwo+ID4gaW5kZXggMjY3NTVkOWNhNDFkLi5mNjdmZGYx ZDM4MTcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ2Fza2V0L2dhc2tldF9wYWdl X3RhYmxlLmMKPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9nYXNrZXQvZ2Fza2V0X3BhZ2VfdGFi bGUuYwo+ID4gQEAgLTQ4Niw4ICs0ODYsOCBAQCBzdGF0aWMgaW50IGdhc2tldF9wZXJmb3JtX21h cHBpbmcoc3RydWN0IGdhc2tldF9wYWdlX3RhYmxlICpwZ190YmwsCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICBwdGVzW2ldLmRtYV9hZGRyID0gcGdfdGJsLT5jb2hlcmVudF9wYWdlc1swXS5w YWRkciArCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm ICsgaSAqIFBBR0VfU0laRTsKPiA+ICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgcmV0ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdChwYWdlX2FkZHIgLSBv ZmZzZXQsIDEsIDEsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZwYWdlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGdldF91 c2VyX3BhZ2VzX2Zhc3QocGFnZV9hZGRyIC0gb2Zmc2V0LCAxLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT0xMX1dSSVRFLCAmcGFnZSk7Cj4g Pgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA8PSAwKSB7Cj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIocGdfdGJsLT5kZXZpY2UsCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy90ZWUvdGVlX3NobS5jIGIvZHJpdmVycy90ZWUvdGVlX3NobS5jCj4g PiBpbmRleCAwYjlhYjFkMGRkNDUuLjQ5ZmQ3MzEyZTJhYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvdGVlL3RlZV9zaG0uYwo+ID4gKysrIGIvZHJpdmVycy90ZWUvdGVlX3NobS5jCj4gPiBAQCAt MjczLDcgKzI3Myw3IEBAIHN0cnVjdCB0ZWVfc2htICp0ZWVfc2htX3JlZ2lzdGVyKHN0cnVjdCB0 ZWVfY29udGV4dCAqY3R4LCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gPiAgICAgICAgICAgICAgICAg Z290byBlcnI7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIHJjID0gZ2V0X3VzZXJfcGFn ZXNfZmFzdChzdGFydCwgbnVtX3BhZ2VzLCAxLCBzaG0tPnBhZ2VzKTsKPiA+ICsgICAgICAgcmMg PSBnZXRfdXNlcl9wYWdlc19mYXN0KHN0YXJ0LCBudW1fcGFnZXMsIEZPTExfV1JJVEUsIHNobS0+ cGFnZXMpOwo+ID4gICAgICAgICBpZiAocmMgPiAwKQo+ID4gICAgICAgICAgICAgICAgIHNobS0+ bnVtX3BhZ2VzID0gcmM7Cj4gPiAgICAgICAgIGlmIChyYyAhPSBudW1fcGFnZXMpIHsKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV9zcGFwcl90Y2UuYyBiL2RyaXZlcnMv dmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCj4gPiBpbmRleCBjNDI0OTEzMzI0ZTMuLmE0YjEw YmI0MDg2YiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3Rj ZS5jCj4gPiArKysgYi9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV9zcGFwcl90Y2UuYwo+ID4gQEAg LTUzMiw3ICs1MzIsOCBAQCBzdGF0aWMgaW50IHRjZV9pb21tdV91c2VfcGFnZSh1bnNpZ25lZCBs b25nIHRjZSwgdW5zaWduZWQgbG9uZyAqaHBhKQo+ID4gICAgICAgICBlbnVtIGRtYV9kYXRhX2Rp cmVjdGlvbiBkaXJlY3Rpb24gPSBpb21tdV90Y2VfZGlyZWN0aW9uKHRjZSk7Cj4gPgo+ID4gICAg ICAgICBpZiAoZ2V0X3VzZXJfcGFnZXNfZmFzdCh0Y2UgJiBQQUdFX01BU0ssIDEsCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gIT0gRE1BX1RPX0RFVklDRSwgJnBhZ2UpICE9 IDEpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gIT0gRE1BX1RPX0RFVklD RSA/IEZPTExfV1JJVEUgOiAwLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgJnBhZ2UpICE9 IDEpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4gPgo+ID4gICAgICAgICAq aHBhID0gX19wYSgodW5zaWduZWQgbG9uZykgcGFnZV9hZGRyZXNzKHBhZ2UpKTsKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmMgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmMKPiA+ IGluZGV4IDI0YTEyOWZjZGQ2MS4uNzI2ODViMTY1OWZmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy92aG9zdC92aG9zdC5jCj4gPiArKysgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmMKPiA+IEBAIC0x NzAwLDcgKzE3MDAsNyBAQCBzdGF0aWMgaW50IHNldF9iaXRfdG9fdXNlcihpbnQgbnIsIHZvaWQg X191c2VyICphZGRyKQo+ID4gICAgICAgICBpbnQgYml0ID0gbnIgKyAobG9nICUgUEFHRV9TSVpF KSAqIDg7Cj4gPiAgICAgICAgIGludCByOwo+ID4KPiA+IC0gICAgICAgciA9IGdldF91c2VyX3Bh Z2VzX2Zhc3QobG9nLCAxLCAxLCAmcGFnZSk7Cj4gPiArICAgICAgIHIgPSBnZXRfdXNlcl9wYWdl c19mYXN0KGxvZywgMSwgRk9MTF9XUklURSwgJnBhZ2UpOwo+ID4gICAgICAgICBpZiAociA8IDAp Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4gPiAgICAgICAgIEJVR19PTihyICE9IDEp Owo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcHZyMmZiLmMgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3B2cjJmYi5jCj4gPiBpbmRleCA4YTUzZDFkZTYxMWQuLjQxMzkwYzhlMGY2 NyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvcHZyMmZiLmMKPiA+ICsrKyBi L2RyaXZlcnMvdmlkZW8vZmJkZXYvcHZyMmZiLmMKPiA+IEBAIC02ODYsNyArNjg2LDcgQEAgc3Rh dGljIHNzaXplX3QgcHZyMmZiX3dyaXRlKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBjaGFy ICpidWYsCj4gPiAgICAgICAgIGlmICghcGFnZXMpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07Cj4gPgo+ID4gLSAgICAgICByZXQgPSBnZXRfdXNlcl9wYWdlc19mYXN0KCh1bnNp Z25lZCBsb25nKWJ1ZiwgbnJfcGFnZXMsIHRydWUsIHBhZ2VzKTsKPiA+ICsgICAgICAgcmV0ID0g Z2V0X3VzZXJfcGFnZXNfZmFzdCgodW5zaWduZWQgbG9uZylidWYsIG5yX3BhZ2VzLCBGT0xMX1dS SVRFLCBwYWdlcyk7Cj4gPiAgICAgICAgIGlmIChyZXQgPCBucl9wYWdlcykgewo+ID4gICAgICAg ICAgICAgICAgIG5yX3BhZ2VzID0gcmV0Owo+ID4gICAgICAgICAgICAgICAgIHJldCA9IC1FSU5W QUw7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0L2ZzbF9oeXBlcnZpc29yLmMgYi9kcml2 ZXJzL3ZpcnQvZnNsX2h5cGVydmlzb3IuYwo+ID4gaW5kZXggOGJhNzI2ZTYwMGU5Li42NDQ2YmNh YjQxODUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3ZpcnQvZnNsX2h5cGVydmlzb3IuYwo+ID4g KysrIGIvZHJpdmVycy92aXJ0L2ZzbF9oeXBlcnZpc29yLmMKPiA+IEBAIC0yNDQsNyArMjQ0LDcg QEAgc3RhdGljIGxvbmcgaW9jdGxfbWVtY3B5KHN0cnVjdCBmc2xfaHZfaW9jdGxfbWVtY3B5IF9f dXNlciAqcCkKPiA+Cj4gPiAgICAgICAgIC8qIEdldCB0aGUgcGh5c2ljYWwgYWRkcmVzc2VzIG9m IHRoZSBzb3VyY2UgYnVmZmVyICovCj4gPiAgICAgICAgIG51bV9waW5uZWQgPSBnZXRfdXNlcl9w YWdlc19mYXN0KHBhcmFtLmxvY2FsX3ZhZGRyIC0gbGJfb2Zmc2V0LAo+ID4gLSAgICAgICAgICAg ICAgIG51bV9wYWdlcywgcGFyYW0uc291cmNlICE9IC0xLCBwYWdlcyk7Cj4gPiArICAgICAgICAg ICAgICAgbnVtX3BhZ2VzLCBwYXJhbS5zb3VyY2UgIT0gLTEgPyBGT0xMX1dSSVRFIDogMCwgcGFn ZXMpOwo+ID4KPiA+ICAgICAgICAgaWYgKG51bV9waW5uZWQgIT0gbnVtX3BhZ2VzKSB7Cj4gPiAg ICAgICAgICAgICAgICAgLyogZ2V0X3VzZXJfcGFnZXMoKSBmYWlsZWQgKi8KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3hlbi9nbnRkZXYuYyBiL2RyaXZlcnMveGVuL2dudGRldi5jCj4gPiBpbmRl eCA1ZWZjNWVlZTk1NDQuLjdiNDdmMWU2YWFiNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMveGVu L2dudGRldi5jCj4gPiArKysgYi9kcml2ZXJzL3hlbi9nbnRkZXYuYwo+ID4gQEAgLTg1Miw3ICs4 NTIsNyBAQCBzdGF0aWMgaW50IGdudGRldl9nZXRfcGFnZShzdHJ1Y3QgZ250ZGV2X2NvcHlfYmF0 Y2ggKmJhdGNoLCB2b2lkIF9fdXNlciAqdmlydCwKPiA+ICAgICAgICAgdW5zaWduZWQgbG9uZyB4 ZW5fcGZuOwo+ID4gICAgICAgICBpbnQgcmV0Owo+ID4KPiA+IC0gICAgICAgcmV0ID0gZ2V0X3Vz ZXJfcGFnZXNfZmFzdChhZGRyLCAxLCB3cml0ZWFibGUsICZwYWdlKTsKPiA+ICsgICAgICAgcmV0 ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdChhZGRyLCAxLCB3cml0ZWFibGUgPyBGT0xMX1dSSVRFIDog MCwgJnBhZ2UpOwo+ID4gICAgICAgICBpZiAocmV0IDwgMCkKPiA+ICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+ID4KPiA+IGRpZmYgLS1naXQgYS9mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy1idWZt YXAuYyBiL2ZzL29yYW5nZWZzL29yYW5nZWZzLWJ1Zm1hcC5jCj4gPiBpbmRleCA0NDNiY2Q4YzNj MTkuLjVhN2M0ZmRhNjgyZiAxMDA2NDQKPiA+IC0tLSBhL2ZzL29yYW5nZWZzL29yYW5nZWZzLWJ1 Zm1hcC5jCj4gPiArKysgYi9mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy1idWZtYXAuYwo+ID4gQEAgLTI2 OSw3ICsyNjksNyBAQCBvcmFuZ2Vmc19idWZtYXBfbWFwKHN0cnVjdCBvcmFuZ2Vmc19idWZtYXAg KmJ1Zm1hcCwKPiA+Cj4gPiAgICAgICAgIC8qIG1hcCB0aGUgcGFnZXMgKi8KPiA+ICAgICAgICAg cmV0ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdCgodW5zaWduZWQgbG9uZyl1c2VyX2Rlc2MtPnB0ciwK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmbWFwLT5wYWdlX2NvdW50LCAxLCBi dWZtYXAtPnBhZ2VfYXJyYXkpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZt YXAtPnBhZ2VfY291bnQsIEZPTExfV1JJVEUsIGJ1Zm1hcC0+cGFnZV9hcnJheSk7Cj4gPgo+ID4g ICAgICAgICBpZiAocmV0IDwgMCkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAo+ID4g aW5kZXggMDVhMTA1ZDlkNGMzLi44ZTFmM2NkNzQ4MmEgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRl L2xpbnV4L21tLmgKPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvbW0uaAo+ID4gQEAgLTE1MzcsOCAr MTUzNyw4IEBAIGxvbmcgZ2V0X3VzZXJfcGFnZXNfbG9ja2VkKHVuc2lnbmVkIGxvbmcgc3RhcnQs IHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCj4gPiAgbG9uZyBnZXRfdXNlcl9wYWdlc191bmxvY2tl ZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAo+ID4gICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdz KTsKPiA+Cj4gPiAtaW50IGdldF91c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwg aW50IG5yX3BhZ2VzLCBpbnQgd3JpdGUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgcGFnZSAqKnBhZ2VzKTsKPiA+ICtpbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBs b25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKTsKPiA+Cj4gPiAgLyogQ29u dGFpbmVyIGZvciBwaW5uZWQgcGZucyAvIHBhZ2VzICovCj4gPiAgc3RydWN0IGZyYW1lX3ZlY3Rv ciB7Cj4gPiBkaWZmIC0tZ2l0IGEva2VybmVsL2Z1dGV4LmMgYi9rZXJuZWwvZnV0ZXguYwo+ID4g aW5kZXggZmRkMzEyZGEwOTkyLi5lMTAyMDk5NDZmOGIgMTAwNjQ0Cj4gPiAtLS0gYS9rZXJuZWwv ZnV0ZXguYwo+ID4gKysrIGIva2VybmVsL2Z1dGV4LmMKPiA+IEBAIC01NDYsNyArNTQ2LDcgQEAg Z2V0X2Z1dGV4X2tleSh1MzIgX191c2VyICp1YWRkciwgaW50IGZzaGFyZWQsIHVuaW9uIGZ1dGV4 X2tleSAqa2V5LCBlbnVtIGZ1dGV4X2EKPiA+ICAgICAgICAgaWYgKHVubGlrZWx5KHNob3VsZF9m YWlsX2Z1dGV4KGZzaGFyZWQpKSkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsK PiA+Cj4gPiAtICAgICAgIGVyciA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoYWRkcmVzcywgMSwgMSwg JnBhZ2UpOwo+ID4gKyAgICAgICBlcnIgPSBnZXRfdXNlcl9wYWdlc19mYXN0KGFkZHJlc3MsIDEs IEZPTExfV1JJVEUsICZwYWdlKTsKPiA+ICAgICAgICAgLyoKPiA+ICAgICAgICAgICogSWYgd3Jp dGUgYWNjZXNzIGlzIG5vdCByZXF1aXJlZCAoZWcuIEZVVEVYX1dBSVQpLCB0cnkKPiA+ICAgICAg ICAgICogYW5kIGdldCByZWFkLW9ubHkgYWNjZXNzLgo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pb3Zf aXRlci5jIGIvbGliL2lvdl9pdGVyLmMKPiA+IGluZGV4IGJlNGJkNjI3Y2FmMC4uNmRiYWUwNjky NzE5IDEwMDY0NAo+ID4gLS0tIGEvbGliL2lvdl9pdGVyLmMKPiA+ICsrKyBiL2xpYi9pb3ZfaXRl ci5jCj4gPiBAQCAtMTI4MCw3ICsxMjgwLDkgQEAgc3NpemVfdCBpb3ZfaXRlcl9nZXRfcGFnZXMo c3RydWN0IGlvdl9pdGVyICppLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWF4 cGFnZXMgKiBQQUdFX1NJWkU7Cj4gPiAgICAgICAgICAgICAgICAgYWRkciAmPSB+KFBBR0VfU0la RSAtIDEpOwo+ID4gICAgICAgICAgICAgICAgIG4gPSBESVZfUk9VTkRfVVAobGVuLCBQQUdFX1NJ WkUpOwo+ID4gLSAgICAgICAgICAgICAgIHJlcyA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoYWRkciwg biwgaW92X2l0ZXJfcncoaSkgIT0gV1JJVEUsIHBhZ2VzKTsKPiA+ICsgICAgICAgICAgICAgICBy ZXMgPSBnZXRfdXNlcl9wYWdlc19mYXN0KGFkZHIsIG4sCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlvdl9pdGVyX3J3KGkpICE9IFdSSVRFID8gIEZPTExfV1JJVEUgOiAwLAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlcyk7Cj4gPiAgICAgICAgICAg ICAgICAgaWYgKHVubGlrZWx5KHJlcyA8IDApKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHJlczsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gKHJlcyA9PSBuID8gbGVuIDog cmVzICogUEFHRV9TSVpFKSAtICpzdGFydDsKPiA+IEBAIC0xMzYxLDcgKzEzNjMsOCBAQCBzc2l6 ZV90IGlvdl9pdGVyX2dldF9wYWdlc19hbGxvYyhzdHJ1Y3QgaW92X2l0ZXIgKmksCj4gPiAgICAg ICAgICAgICAgICAgcCA9IGdldF9wYWdlc19hcnJheShuKTsKPiA+ICAgICAgICAgICAgICAgICBp ZiAoIXApCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+IC0g ICAgICAgICAgICAgICByZXMgPSBnZXRfdXNlcl9wYWdlc19mYXN0KGFkZHIsIG4sIGlvdl9pdGVy X3J3KGkpICE9IFdSSVRFLCBwKTsKPiA+ICsgICAgICAgICAgICAgICByZXMgPSBnZXRfdXNlcl9w YWdlc19mYXN0KGFkZHIsIG4sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlv dl9pdGVyX3J3KGkpICE9IFdSSVRFID8gIEZPTExfV1JJVEUgOiAwLCBwKTsKPiA+ICAgICAgICAg ICAgICAgICBpZiAodW5saWtlbHkocmVzIDwgMCkpIHsKPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgIGt2ZnJlZShwKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7Cj4g PiBkaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuYwo+ID4gaW5kZXggNjgxMzg4MjM2MTA2 Li42ZjMyZDM2YjNjNWIgMTAwNjQ0Cj4gPiAtLS0gYS9tbS9ndXAuYwo+ID4gKysrIGIvbW0vZ3Vw LmMKPiA+IEBAIC0xODYzLDcgKzE4NjMsNyBAQCBpbnQgX19nZXRfdXNlcl9wYWdlc19mYXN0KHVu c2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywgaW50IHdyaXRlLAo+ID4gICAqIGdldF91 c2VyX3BhZ2VzX2Zhc3QoKSAtIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeQo+ID4gICAqIEBzdGFy dDogICAgIHN0YXJ0aW5nIHVzZXIgYWRkcmVzcwo+ID4gICAqIEBucl9wYWdlczogIG51bWJlciBv ZiBwYWdlcyBmcm9tIHN0YXJ0IHRvIHBpbgo+ID4gLSAqIEB3cml0ZTogICAgIHdoZXRoZXIgcGFn ZXMgd2lsbCBiZSB3cml0dGVuIHRvCj4gPiArICogQGd1cF9mbGFnczogZmxhZ3MgbW9kaWZ5aW5n IHBpbiBiZWhhdmlvdXIKPiA+ICAgKiBAcGFnZXM6ICAgICBhcnJheSB0aGF0IHJlY2VpdmVzIHBv aW50ZXJzIHRvIHRoZSBwYWdlcyBwaW5uZWQuCj4gPiAgICogICAgICAgICAgICAgU2hvdWxkIGJl IGF0IGxlYXN0IG5yX3BhZ2VzIGxvbmcuCj4gPiAgICoKPiA+IEBAIC0xODc1LDggKzE4NzUsOCBA QCBpbnQgX19nZXRfdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9w YWdlcywgaW50IHdyaXRlLAo+ID4gICAqIHJlcXVlc3RlZC4gSWYgbnJfcGFnZXMgaXMgMCBvciBu ZWdhdGl2ZSwgcmV0dXJucyAwLiBJZiBubyBwYWdlcwo+ID4gICAqIHdlcmUgcGlubmVkLCByZXR1 cm5zIC1lcnJuby4KPiA+ICAgKi8KPiA+IC1pbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25l ZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsIGludCB3cml0ZSwKPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBwYWdlICoqcGFnZXMpCj4gPiAraW50IGdldF91c2VyX3BhZ2VzX2Zh c3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcykKPiA+ ICB7Cj4gPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgbGVuLCBlbmQ7Cj4gPiAgICAgICAg IGludCBuciA9IDAsIHJldCA9IDA7Cj4gPiBAQCAtMTg5NCw3ICsxODk0LDcgQEAgaW50IGdldF91 c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLCBpbnQgd3Jp dGUsCj4gPgo+ID4gICAgICAgICBpZiAoZ3VwX2Zhc3RfcGVybWl0dGVkKHN0YXJ0LCBucl9wYWdl cykpIHsKPiA+ICAgICAgICAgICAgICAgICBsb2NhbF9pcnFfZGlzYWJsZSgpOwo+ID4gLSAgICAg ICAgICAgICAgIGd1cF9wZ2RfcmFuZ2UoYWRkciwgZW5kLCB3cml0ZSA/IEZPTExfV1JJVEUgOiAw LCBwYWdlcywgJm5yKTsKPiA+ICsgICAgICAgICAgICAgICBndXBfcGdkX3JhbmdlKGFkZHIsIGVu ZCwgZ3VwX2ZsYWdzLCBwYWdlcywgJm5yKTsKPiA+ICAgICAgICAgICAgICAgICBsb2NhbF9pcnFf ZW5hYmxlKCk7Cj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gbnI7Cj4gPiAgICAgICAgIH0KPiA+ IEBAIC0xOTA1LDcgKzE5MDUsNyBAQCBpbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBs b25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsIGludCB3cml0ZSwKPiA+ICAgICAgICAgICAgICAgICBw YWdlcyArPSBucjsKPiA+Cj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gZ2V0X3VzZXJfcGFnZXNf dW5sb2NrZWQoc3RhcnQsIG5yX3BhZ2VzIC0gbnIsIHBhZ2VzLAo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3cml0ZSA/IEZPTExfV1JJVEUgOiAwKTsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndXBfZmxhZ3MpOwo+ID4KPiA+ICAg ICAgICAgICAgICAgICAvKiBIYXZlIHRvIGJlIGEgYml0IGNhcmVmdWwgd2l0aCByZXR1cm4gdmFs dWVzICovCj4gPiAgICAgICAgICAgICAgICAgaWYgKG5yID4gMCkgewo+ID4gZGlmZiAtLWdpdCBh L21tL3V0aWwuYyBiL21tL3V0aWwuYwo+ID4gaW5kZXggMWVhMDU1MTM4MDQzLi4wMWZmZTE0NWM2 MmIgMTAwNjQ0Cj4gPiAtLS0gYS9tbS91dGlsLmMKPiA+ICsrKyBiL21tL3V0aWwuYwo+ID4gQEAg LTMwNiw3ICszMDYsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChfX2dldF91c2VyX3BhZ2VzX2Zhc3Qp Owo+ID4gICAqIGdldF91c2VyX3BhZ2VzX2Zhc3QoKSAtIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9y eQo+ID4gICAqIEBzdGFydDogICAgIHN0YXJ0aW5nIHVzZXIgYWRkcmVzcwo+ID4gICAqIEBucl9w YWdlczogIG51bWJlciBvZiBwYWdlcyBmcm9tIHN0YXJ0IHRvIHBpbgo+ID4gLSAqIEB3cml0ZTog ICAgIHdoZXRoZXIgcGFnZXMgd2lsbCBiZSB3cml0dGVuIHRvCj4gPiArICogQGd1cF9mbGFnczog ZmxhZ3MgbW9kaWZ5aW5nIHBpbiBiZWhhdmlvdXIKPiA+ICAgKiBAcGFnZXM6ICAgICBhcnJheSB0 aGF0IHJlY2VpdmVzIHBvaW50ZXJzIHRvIHRoZSBwYWdlcyBwaW5uZWQuCj4gPiAgICogICAgICAg ICAgICAgU2hvdWxkIGJlIGF0IGxlYXN0IG5yX3BhZ2VzIGxvbmcuCj4gPiAgICoKPiA+IEBAIC0z MjcsMTAgKzMyNywxMCBAQCBFWFBPUlRfU1lNQk9MX0dQTChfX2dldF91c2VyX3BhZ2VzX2Zhc3Qp Owo+ID4gICAqIGdldF91c2VyX3BhZ2VzX2Zhc3Qgc2ltcGx5IGZhbGxzIGJhY2sgdG8gZ2V0X3Vz ZXJfcGFnZXMuCj4gPiAgICovCj4gPiAgaW50IF9fd2VhayBnZXRfdXNlcl9wYWdlc19mYXN0KHVu c2lnbmVkIGxvbmcgc3RhcnQsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBucl9wYWdlcywgaW50IHdyaXRlLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnJfcGFnZXMsIHVuc2lnbmVkIGludCBndXBfZmxh Z3MsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYWdlICoqcGFn ZXMpCj4gPiAgewo+ID4gLSAgICAgICByZXR1cm4gZ2V0X3VzZXJfcGFnZXNfdW5sb2NrZWQoc3Rh cnQsIG5yX3BhZ2VzLCBwYWdlcywKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdyaXRlID8gRk9MTF9XUklURSA6IDApOwo+ID4gKyAgICAgICByZXR1cm4gZ2V0X3Vz ZXJfcGFnZXNfdW5sb2NrZWQoc3RhcnQsIG5yX3BhZ2VzLCBwYWdlcywgZ3VwX2ZsYWdzKTsKPiA+ ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTF9HUEwoZ2V0X3VzZXJfcGFnZXNfZmFzdCk7Cj4gPgo+ID4g ZGlmZiAtLWdpdCBhL25ldC9jZXBoL3BhZ2V2ZWMuYyBiL25ldC9jZXBoL3BhZ2V2ZWMuYwo+ID4g aW5kZXggZDM3MzZmNWJmZmVjLi43NGNhZmMwMTQyZWEgMTAwNjQ0Cj4gPiAtLS0gYS9uZXQvY2Vw aC9wYWdldmVjLmMKPiA+ICsrKyBiL25ldC9jZXBoL3BhZ2V2ZWMuYwo+ID4gQEAgLTI3LDcgKzI3 LDcgQEAgc3RydWN0IHBhZ2UgKipjZXBoX2dldF9kaXJlY3RfcGFnZV92ZWN0b3IoY29uc3Qgdm9p ZCBfX3VzZXIgKmRhdGEsCj4gPiAgICAgICAgIHdoaWxlIChnb3QgPCBudW1fcGFnZXMpIHsKPiA+ ICAgICAgICAgICAgICAgICByYyA9IGdldF91c2VyX3BhZ2VzX2Zhc3QoCj4gPiAgICAgICAgICAg ICAgICAgICAgICh1bnNpZ25lZCBsb25nKWRhdGEgKyAoKHVuc2lnbmVkIGxvbmcpZ290ICogUEFH RV9TSVpFKSwKPiA+IC0gICAgICAgICAgICAgICAgICAgbnVtX3BhZ2VzIC0gZ290LCB3cml0ZV9w YWdlLCBwYWdlcyArIGdvdCk7Cj4gPiArICAgICAgICAgICAgICAgICAgIG51bV9wYWdlcyAtIGdv dCwgd3JpdGVfcGFnZSA/IEZPTExfV1JJVEUgOiAwLCBwYWdlcyArIGdvdCk7Cj4gPiAgICAgICAg ICAgICAgICAgaWYgKHJjIDwgMCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ ID4gICAgICAgICAgICAgICAgIEJVR19PTihyYyA9PSAwKTsKPiA+IGRpZmYgLS1naXQgYS9uZXQv cmRzL2luZm8uYyBiL25ldC9yZHMvaW5mby5jCj4gPiBpbmRleCBlMzY3YTk3YTE4YzguLjAzZjZm ZDU2ZDIzNyAxMDA2NDQKPiA+IC0tLSBhL25ldC9yZHMvaW5mby5jCj4gPiArKysgYi9uZXQvcmRz L2luZm8uYwo+ID4gQEAgLTE5Myw3ICsxOTMsNyBAQCBpbnQgcmRzX2luZm9fZ2V0c29ja29wdChz dHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgb3B0bmFtZSwgY2hhciBfX3VzZXIgKm9wdHZhbCwKPiA+ ICAgICAgICAgICAgICAgICByZXQgPSAtRU5PTUVNOwo+ID4gICAgICAgICAgICAgICAgIGdvdG8g b3V0Owo+ID4gICAgICAgICB9Cj4gPiAtICAgICAgIHJldCA9IGdldF91c2VyX3BhZ2VzX2Zhc3Qo c3RhcnQsIG5yX3BhZ2VzLCAxLCBwYWdlcyk7Cj4gPiArICAgICAgIHJldCA9IGdldF91c2VyX3Bh Z2VzX2Zhc3Qoc3RhcnQsIG5yX3BhZ2VzLCBGT0xMX1dSSVRFLCBwYWdlcyk7Cj4gPiAgICAgICAg IGlmIChyZXQgIT0gbnJfcGFnZXMpIHsKPiA+ICAgICAgICAgICAgICAgICBpZiAocmV0ID4gMCkK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIG5yX3BhZ2VzID0gcmV0Owo+ID4gZGlmZiAtLWdp dCBhL25ldC9yZHMvcmRtYS5jIGIvbmV0L3Jkcy9yZG1hLmMKPiA+IGluZGV4IDE4MmFiODQzMDU5 NC4uYjM0MGVkNGZjNDNhIDEwMDY0NAo+ID4gLS0tIGEvbmV0L3Jkcy9yZG1hLmMKPiA+ICsrKyBi L25ldC9yZHMvcmRtYS5jCj4gPiBAQCAtMTU4LDcgKzE1OCw4IEBAIHN0YXRpYyBpbnQgcmRzX3Bp bl9wYWdlcyh1bnNpZ25lZCBsb25nIHVzZXJfYWRkciwgdW5zaWduZWQgaW50IG5yX3BhZ2VzLAo+ ID4gIHsKPiA+ICAgICAgICAgaW50IHJldDsKPiA+Cj4gPiAtICAgICAgIHJldCA9IGdldF91c2Vy X3BhZ2VzX2Zhc3QodXNlcl9hZGRyLCBucl9wYWdlcywgd3JpdGUsIHBhZ2VzKTsKPiA+ICsgICAg ICAgcmV0ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdCh1c2VyX2FkZHIsIG5yX3BhZ2VzLCB3cml0ZSA/ IEZPTExfV1JJVEUgOiAwLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh Z2VzKTsKPiA+Cj4gPiAgICAgICAgIGlmIChyZXQgPj0gMCAmJiByZXQgPCBucl9wYWdlcykgewo+ ID4gICAgICAgICAgICAgICAgIHdoaWxlIChyZXQtLSkKPiA+IC0tCj4gPiAyLjIwLjEKPiA+Cj4g CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs