From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH 6/6] drm/i915: Expand subslice mask Date: Fri, 3 May 2019 10:05:39 +0100 Message-ID: References: <20190501153450.30494-1-stuart.summers@intel.com> <20190501153450.30494-7-stuart.summers@intel.com> <361de947e84163b375e66e092d202fd456d7524a.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 19F9489173 for ; Fri, 3 May 2019 09:05:43 +0000 (UTC) In-Reply-To: <361de947e84163b375e66e092d202fd456d7524a.camel@intel.com> 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: "Summers, Stuart" , "Ceraolo Spurio, Daniele" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gMDIvMDUvMjAxOSAxNTo0NywgU3VtbWVycywgU3R1YXJ0IHdyb3RlOgo+IE9uIFdlZCwgMjAx OS0wNS0wMSBhdCAxNTowNCAtMDcwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyB3cm90ZToKPj4g T24gNS8xLzE5IDg6MzQgQU0sIFN0dWFydCBTdW1tZXJzIHdyb3RlOgo+Pj4gQ3VycmVudGx5LCB0 aGUgc3Vic2xpY2VfbWFzayBydW50aW1lIHBhcmFtZXRlciBpcyBzdG9yZWQgYXMgYW4KPj4+IGFy cmF5IG9mIHN1YnNsaWNlcyBwZXIgc2xpY2UuIEV4cGFuZCB0aGUgc3Vic2xpY2UgbWFzayBhcnJh eSB0bwo+Pj4gYmV0dGVyIG1hdGNoIHdoYXQgaXMgcHJlc2VudGVkIHRvIHVzZXJzcGFjZSB0aHJv dWdoIHRoZQo+Pj4gSTkxNV9RVUVSWV9UT1BPTE9HWV9JTkZPIGlvY3RsLiBUaGUgaW5kZXggaW50 byB0aGlzIGFycmF5IGlzCj4+PiB0aGVuIGNhbGN1bGF0ZWQ6Cj4+PiAgICAgc2xpY2UgKiBzdWJz bGljZSBzdHJpZGUgKyBzdWJzbGljZSBpbmRleCAvIDgKPj4+Cj4+PiB2MjogZml4IHNwYWNpbmcg aW4gc2V0X3NzZXVfaW5mbyBhcmdzCj4+PiAgICAgICB1c2Ugc2V0X3NzZXVfaW5mbyB0byBpbml0 aWFsaXplIHNzZXUgZGF0YSB3aGVuIGJ1aWxkaW5nCj4+PiAgICAgICBkZXZpY2Ugc3RhdHVzIGlu IGRlYnVnZnMKPj4+ICAgICAgIHJlbmFtZSB2YXJpYWJsZXMgaW4gaW50ZWxfZW5naW5lX3R5cGVz LmggdG8gYXZvaWQgY2hlY2twYXRjaAo+Pj4gICAgICAgd2FybmluZ3MKPj4+IHYzOiB1cGRhdGUg aGVhZGVycyBpbiBpbnRlbF9zc2V1LmgKPj4+IHY0OiBhZGQgY29uc3QgdG8gc29tZSBzc2V1X2Rl dl9pbmZvIHZhcmlhYmxlcwo+Pj4gICAgICAgdXNlIHNzZXUtPmV1X3N0cmlkZSBmb3IgRVUgc3Ry aWRlIGNhbGN1bGF0aW9ucwo+Pj4KPj4+IENjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5p ZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+Pj4gU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFN1 bW1lcnMgPHN0dWFydC5zdW1tZXJzQGludGVsLmNvbT4KPj4gQ2FuIHlvdSBhbHNvIGdldCBhbiBh Y2sgZnJvbSBMaW9uZWwsIHRvIG1ha2Ugc3VyZSB0aGlzIGFsbCBmaXRzIHdpdGgKPj4gdGhlCj4+ IGV4cGVjdGVkIHJlcG9ydGluZz8KPiBDYzogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxh bmR3ZXJsaW5AaW50ZWwuY29tPgoKClRoZSBjaGFuZ2UgbWFrZXMgc2Vuc2UgdG8gbWUgYnV0IEkg aGF2ZW4ndCBoYWQgdGltZSB0byB2ZXJpZnkgZXZlcnkgCnNpbmdsZSBiaXQgaW4gdGhpcyBwYXRj aCA6KQoKVGhlIGk5MTVfcXVlcnkgSUdUIHRlc3RzIHNob3VsZCBiZSBhYmxlIHRvIGNhdGNoIHNv bWUgaXNzdWVzIG9uIEhTVyAKKHdoaWNoIGNhbiBoYXZlIDEwRVVzIHBlciBzdWJzbGljZSkuCgoK QWNrZWQtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNv bT4KCgo+Cj4+PiAtLS0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV9jcy5jICAgIHwgICA2ICstCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfdHlwZXMuaCB8ICAzMiArKystLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfaGFuZ2NoZWNrLmMgICAgfCAgIDMgKy0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3NzZXUuYyAgICAgICAgIHwgIDQ5ICsrKysrLS0KPj4+ICAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaCAgICAgICAgIHwgIDE2ICsrLQo+Pj4gICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyAgfCAgIDIgKy0KPj4+ICAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgIHwgIDQ0ICsrKy0tLQo+ Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgfCAgIDYg Ky0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgIHwg ICA1ICstCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMgICAgICAgICAg ICB8ICAxMCArLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8u YyAgICAgfCAxNDIgKysrKysrKysrKystLS0KPj4+IC0tLS0tCj4+PiAgICAxMSBmaWxlcyBjaGFu Z2VkLCAxOTggaW5zZXJ0aW9ucygrKSwgMTE3IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+Pj4gaW5kZXggNmU0MGY4ZWE5 YTZhLi44Zjc5NjdjYzlhNTAgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfY3MuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lX2NzLmMKPj4+IEBAIC05MTQsNyArOTE0LDcgQEAgdTMyIGludGVsX2NhbGN1bGF0 ZV9tY3Jfc19zc19zZWxlY3Qoc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK Pj4+ICAgIAljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8o ZGV2X3ByaXYpLQo+Pj4+IHNzZXU7Cj4+PiAgICAJdTMyIG1jcl9zX3NzX3NlbGVjdDsKPj4+ICAg IAl1MzIgc2xpY2UgPSBmbHMoc3NldS0+c2xpY2VfbWFzayk7Cj4+PiAtCXUzMiBzdWJzbGljZSA9 IGZscyhzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlXSk7Cj4+PiArCXUzMiBzdWJzbGljZSA9IGZs cyhzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlICogc3NldS0KPj4+PiBzc19zdHJpZGVdKTsKPj4g VGhpcyAoYW5kIHRoZSByZWdpc3RlcnMgd2UgdXNlIGJlbG93KSBvbmx5IHdvcmtzIGlmIHNzX3N0 cmlkZSA9IDEuCj4+IENhbgo+PiB3ZSBhZGQgYToKPj4KPj4gCUdFTV9CVUdfT04oc3NldS0+c3Nf c3RyaWRlID4gMSk7Cj4+Cj4+IHRvIGNhdGNoIHRoZSBmYWN0IHRoYXQgdGhpcyBmdW5jdGlvbiB3 aWxsIG5lZWQgdXBkYXRpbmcgdG8gaGFuZGxlCj4+IHRoYXQKPj4gY2FzZSBpZi93aGVuIHdlIGdl dCBpdD8KPiBJJ2xsIHJld29yayB0aGlzIGFuZCBwb3N0IGFuIHVwZGF0ZS4KPgo+Pj4gICAgCj4+ PiAgICAJaWYgKElTX0dFTihkZXZfcHJpdiwgMTApKQo+Pj4gICAgCQltY3Jfc19zc19zZWxlY3Qg PSBHRU44X01DUl9TTElDRShzbGljZSkgfAo+Pj4gQEAgLTk5MCw2ICs5OTAsNyBAQCB2b2lkIGlu dGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoc3RydWN0Cj4+PiBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPj4+ICAgIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgKmluc3Rkb25lKQo+Pj4g ICAgewo+Pj4gICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ aTkxNTsKPj4+ICsJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9J TkZPKGRldl9wcml2KS0KPj4+PiBzc2V1Owo+Pj4gICAgCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSA9IGVuZ2luZS0+dW5jb3JlOwo+Pj4gICAgCXUzMiBtbWlvX2Jhc2UgPSBlbmdpbmUtPm1t aW9fYmFzZTsKPj4+ICAgIAlpbnQgc2xpY2U7Cj4+PiBAQCAtMTAwNyw3ICsxMDA4LDggQEAgdm9p ZCBpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKHN0cnVjdAo+Pj4gaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4+PiAgICAKPj4+ICAgIAkJaW5zdGRvbmUtPnNsaWNlX2NvbW1vbiA9Cj4+PiAgICAJ CQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjdfU0NfSU5TVERPTkUpOwo+Pj4gLQkJZm9y X2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLAo+Pj4gc3Vic2xp Y2UpIHsKPj4+ICsJCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBz c2V1LCBzbGljZSwKPj4+ICsJCQkJCQkgc3Vic2xpY2UpIHsKPj4+ICAgIAkJCWluc3Rkb25lLT5z YW1wbGVyW3NsaWNlXVtzdWJzbGljZV0gPQo+Pj4gICAgCQkJCXJlYWRfc3Vic2xpY2VfcmVnKGRl dl9wcml2LCBzbGljZSwKPj4+IHN1YnNsaWNlLAo+Pj4gICAgCQkJCQkJICBHRU43X1NBTVBMRVJf SU5TVERPTkUKPj4+ICk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3R5cGVzLmgKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX3R5cGVzLmgKPj4+IGluZGV4IDlkNjRlMzNmODQyNy4uMTcxMDU0NmEyNDQ2IDEwMDY0 NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4+ PiBAQCAtNTM0LDIwICs1MzQsMjIgQEAgaW50ZWxfZW5naW5lX25lZWRzX2JyZWFkY3J1bWJfdGFz a2xldChjb25zdAo+Pj4gc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Pj4gICAgCXJl dHVybiBlbmdpbmUtPmZsYWdzICYgSTkxNV9FTkdJTkVfTkVFRFNfQlJFQURDUlVNQl9UQVNLTEVU Owo+Pj4gICAgfQo+Pj4gICAgCj4+PiAtI2RlZmluZSBpbnN0ZG9uZV9zbGljZV9tYXNrKGRldl9w cml2X18pIFwKPj4+IC0JKElTX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKPj4+IC0JIDEgOiBSVU5U SU1FX0lORk8oZGV2X3ByaXZfXyktPnNzZXUuc2xpY2VfbWFzaykKPj4+IC0KPj4+IC0jZGVmaW5l IGluc3Rkb25lX3N1YnNsaWNlX21hc2soZGV2X3ByaXZfXykgXAo+Pj4gLQkoSVNfR0VOKGRldl9w cml2X18sIDcpID8gXAo+Pj4gLQkgMSA6IFJVTlRJTUVfSU5GTyhkZXZfcHJpdl9fKS0+c3NldS5z dWJzbGljZV9tYXNrWzBdKQo+Pj4gLQo+Pj4gLSNkZWZpbmUgZm9yX2VhY2hfaW5zdGRvbmVfc2xp Y2Vfc3Vic2xpY2UoZGV2X3ByaXZfXywgc2xpY2VfXywKPj4+IHN1YnNsaWNlX18pIFwKPj4+IC0J Zm9yICgoc2xpY2VfXykgPSAwLCAoc3Vic2xpY2VfXykgPSAwOyBcCj4+PiAtCSAgICAgKHNsaWNl X18pIDwgSTkxNV9NQVhfU0xJQ0VTOyBcCj4+PiAtCSAgICAgKHN1YnNsaWNlX18pID0gKChzdWJz bGljZV9fKSArIDEpIDwgSTkxNV9NQVhfU1VCU0xJQ0VTID8KPj4+IChzdWJzbGljZV9fKSArIDEg OiAwLCBcCj4+PiAtCSAgICAgICAoc2xpY2VfXykgKz0gKChzdWJzbGljZV9fKSA9PSAwKSkgXAo+ Pj4gLQkJZm9yX2VhY2hfaWYoKEJJVChzbGljZV9fKSAmCj4+PiBpbnN0ZG9uZV9zbGljZV9tYXNr KGRldl9wcml2X18pKSAmJiBcCj4+PiAtCQkJICAgIChCSVQoc3Vic2xpY2VfXykgJgo+Pj4gaW5z dGRvbmVfc3Vic2xpY2VfbWFzayhkZXZfcHJpdl9fKSkpCj4+PiArI2RlZmluZSBpbnN0ZG9uZV9o YXNfc2xpY2UoZGV2X3ByaXZfX18sIHNzZXVfX18sIHNsaWNlX19fKSBcCj4+PiArCSgoSVNfR0VO KGRldl9wcml2X19fLCA3KSA/IFwKPj4+ICsJICAxIDogKHNzZXVfX18pLT5zbGljZV9tYXNrKSAm IFwKPj4gSSdkIHB1dCB0aGUgdGVybmFyeSBvcCBvbiB0aGUgc2FtZSBsaW5lIGhlcmUgZm9yIHJl YWRhYmlsaXR5Cj4gWWVhaCBnb29kIHBvaW50Lgo+Cj4+PiArCUJJVChzbGljZV9fXykpIFwKPj4g bm8gbmVlZCBmb3IgIlwiIGhlcmUgKGFuZCBiZWxvdykuCj4gT2suCj4KPj4+ICsKPj4+ICsjZGVm aW5lIGluc3Rkb25lX2hhc19zdWJzbGljZShkZXZfcHJpdl9fLCBzc2V1X18sIHNsaWNlX18sCj4+ PiBzdWJzbGljZV9fKSBcCj4+IG5lZWQgc29tZSBtb3JlIHBhcmVudGhlc2lzIGluIHRoaXMgbWFj cm8gdG8gZml4IHRoZQo+PiBNQUNST19BUkdfUFJFQ0VERU5DRQo+PiB3YXJuaW5nIGluIGNoZWNr cGF0Y2guCj4gVGhhbmtzLCBJJ2xsIGZpeCB0aGlzLgo+Cj4+PiArCSgoSVNfR0VOKGRldl9wcml2 X18sIDcpID8gXAo+Pj4gKwkgIDEgOiAoc3NldV9fKS0+c3Vic2xpY2VfbWFza1tzbGljZV9fICog KHNzZXVfXyktPnNzX3N0cmlkZSArIFwKPj4+ICsJCQkJICAgICAgc3Vic2xpY2VfXyAvIEJJVFNf UEVSX0JZVEVdKSAmIFwKPj4gVGhlIGNhbGN1bGF0aW9uIHRvIGdldCB0aGUgY29ycmVjdCBzdWJz bGljZSB1OCBlbnRyeToKPj4KPj4gCXNzZXUtPnN1YnNsaWNlX21hc2tbcyAqIHNzZXUtPnNzX3N0 cmlkZSArIHNzIC8gQklUU19QRVJfQllURV0KPj4KPj4gc2VlbXMgdG8gYmUgcmVwZWF0ZWQgYSBm ZXcgdGltZXMgaW4gdGhpcyBwYXRjaCwgc28gaXQgbWlnaHQgYmUgd29ydGgKPj4gbW92aW5nIGl0 IHRvIGl0cyBvd24gaW5saW5lIGZ1bmN0aW9uLiBsb29rcyBsaWtlIHlvdSBhbHdheXMKPj4gdWx0 aW1hdGVseQo+PiB3YW50IGEgYm9vbCwgc28gd2UgY291bGQgYWxzbyBnbyBhIGJpdCBmdXJ0aGVy IGFuZCBoYXZlIHNvbWV0aGluZwo+PiBsaWtlOgo+Pgo+PiBzdGF0aWMgaW5saW5lIGJvb2wgaW50 ZWxfc3NldV9oYXNfc3Vic2xpY2Uoc3NldSwgcywgc3MpCj4+IHsKPj4gCXU4IG1hc2sgPSBzc2V1 LT5zdWJzbGljZV9tYXNrW3MgKiBzc2V1LT5zc19zdHJpZGUgKwo+PiAJCQkJICAgICAgc3MgLyBC SVRTX1BFUl9CWVRFXTsKPj4KPj4gCXJldHVybiBtYXNrICYgQklUKHNzICUgQklUU19QRVJfQllU RSk7Cj4+IH0KPj4KPj4gYW5kIHRoZW4gZG86Cj4+Cj4+ICNkZWZpbmUgaW5zdGRvbmVfaGFzX3N1 YnNsaWNlKGRldl9wcml2X18sIHNzZXVfXywgc2xpY2VfXywKPj4gc3Vic2xpY2VfXykgXAo+PiAJ KChJU19HRU4oZGV2X3ByaXZfXywgNykgPyBzdWJzbGljZV9fID09IDAgOiBcCj4+IAkJaW50ZWxf c3NldV9oYXNfc3Vic2xpY2UoLi4uKSkKPj4KPiBHb29kIHBvaW50IGFuZCBnb29kIHN1Z2dlTWFr ZXMgc2Vuc2UuIHN0aW9uLiBJJ2xsIGNsZWFuIHRoaXMgdXAuCj4KPj4+ICsJIEJJVChzdWJzbGlj ZV9fICUgQklUU19QRVJfQllURSkpIFwKPj4+ICsKPj4+ICsjZGVmaW5lIGZvcl9lYWNoX2luc3Rk b25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2Xywgc3NldV8sIHNsaWNlXywKPj4+IHN1YnNsaWNl XykgXAo+Pj4gKwlmb3IgKChzbGljZV8pID0gMCwgKHN1YnNsaWNlXykgPSAwOyAoc2xpY2VfKSA8 IEk5MTVfTUFYX1NMSUNFUzsKPj4+IFwKPj4+ICsJICAgICAoc3Vic2xpY2VfKSA9ICgoc3Vic2xp Y2VfKSArIDEpIDwgSTkxNV9NQVhfU1VCU0xJQ0VTID8KPj4+IChzdWJzbGljZV8pICsgMSA6IDAs IFwKPj4gVGhpcyB0ZXJuYXJ5IG9wIHNob3VsZCBiZSBzaW1wbGlmaWFibGUgYXM6Cj4+Cj4+IAko c3Vic2xpY2VfKSA9ICgoc3Vic2xpY2VfKSArIDEpICUgSTkxNV9NQVhfU1VCU0xJQ0VTLAo+IEkg aGFkIGJlZW4gY2FycnlpbmcgdGhpcyBmb3J3YXJkIGFzLWlzIGFzIG11Y2ggYXMgcG9zc2libGUu IFlvdXIKPiBzdWdnZXN0aW9uIG1ha2VzIHNlbnNlIHRob3VnaC4gSSdsbCB0YWtlIGEgbG9vay4K Pgo+Pj4gKwkgICAgICAgKHNsaWNlXykgKz0gKChzdWJzbGljZV8pID09IDApKSBcCj4+PiArCQlm b3JfZWFjaF9pZihpbnN0ZG9uZV9oYXNfc2xpY2UoZGV2X3ByaXZfLCBzc2V1Xywgc2xpY2UpCj4+ PiAmJiBcCj4+IG1pc3NpbmcgdGhlICJfIiBhZnRlciAic2xpY2UiCj4gR29vZCBjYXRjaCwgdGhh bmtzIQo+Cj4+PiArCQkJICAgIGluc3Rkb25lX2hhc19zdWJzbGljZShkZXZfcHJpdl8sIHNzZXVf LAo+Pj4gc2xpY2VfLCBzdWJzbGljZV8pKSBcCj4+PiAgICAKPj4+ICAgICNlbmRpZiAvKiBfX0lO VEVMX0VOR0lORV9UWVBFU19IX18gKi8KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9oYW5nY2hlY2suYwo+Pj4gaW5kZXggZTVlYWEwNmZlNzRkLi41M2MxYzk4MTYxZTEgMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYwo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMKPj4+IEBA IC01MCw2ICs1MCw3IEBAIHN0YXRpYyBib29sIGluc3Rkb25lX3VuY2hhbmdlZCh1MzIKPj4+IGN1 cnJlbnRfaW5zdGRvbmUsIHUzMiAqb2xkX2luc3Rkb25lKQo+Pj4gICAgc3RhdGljIGJvb2wgc3Vi dW5pdHNfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Pj4gICAgewo+Pj4g ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPj4+ ICsJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9w cml2KS0KPj4+PiBzc2V1Owo+Pj4gICAgCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsK Pj4+ICAgIAlzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgKmFjY3VfaW5zdGRvbmUgPSAmZW5naW5lLQo+ Pj4+IGhhbmdjaGVjay5pbnN0ZG9uZTsKPj4+ICAgIAlib29sIHN0dWNrOwo+Pj4gQEAgLTcxLDcg KzcyLDcgQEAgc3RhdGljIGJvb2wgc3VidW5pdHNfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9j cwo+Pj4gKmVuZ2luZSkKPj4+ICAgIAlzdHVjayAmPSBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRv bmUuc2xpY2VfY29tbW9uLAo+Pj4gICAgCQkJCSAgICAmYWNjdV9pbnN0ZG9uZS0+c2xpY2VfY29t bW9uKTsKPj4+ICAgIAo+Pj4gLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZf cHJpdiwgc2xpY2UsIHN1YnNsaWNlKSB7Cj4+PiArCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1 YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwKPj4+IHN1YnNsaWNlKSB7Cj4+PiAgICAJCXN0 dWNrICY9Cj4+PiBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRvbmUuc2FtcGxlcltzbGljZV1bc3Vi c2xpY2VdLAo+Pj4gICAgCQkJCQkgICAgJmFjY3VfaW5zdGRvbmUtCj4+Pj4gc2FtcGxlcltzbGlj ZV1bc3Vic2xpY2VdKTsKPj4+ICAgIAkJc3R1Y2sgJj0KPj4+IGluc3Rkb25lX3VuY2hhbmdlZChp bnN0ZG9uZS5yb3dbc2xpY2VdW3N1YnNsaWNlXSwKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfc3NldS5jCj4+PiBpbmRleCA0YTBiODJmYzEwOGMuLjQ5MzE2YjdlZjA3NCAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCj4+PiBAQCAtOCw2ICs4LDE3IEBA Cj4+PiAgICAjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5oIgo+Pj4gICAgI2luY2x1ZGUgImludGVs X3NzZXUuaCIKPj4+ICAgIAo+Pj4gK3ZvaWQgaW50ZWxfc3NldV9zZXRfaW5mbyhzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSwgdTgKPj4+IG1heF9zbGljZXMsCj4+PiArCQkJIHU4IG1heF9zdWJz bGljZXMsIHU4IG1heF9ldXNfcGVyX3N1YnNsaWNlKQo+Pj4gK3sKPj4+ICsJc3NldS0+bWF4X3Ns aWNlcyA9IG1heF9zbGljZXM7Cj4+PiArCXNzZXUtPm1heF9zdWJzbGljZXMgPSBtYXhfc3Vic2xp Y2VzOwo+Pj4gKwlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IG1heF9ldXNfcGVyX3N1YnNs aWNlOwo+Pj4gKwo+Pj4gKwlzc2V1LT5zc19zdHJpZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+ bWF4X3N1YnNsaWNlcyk7Cj4+PiArCXNzZXUtPmV1X3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShz c2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gICAgdW5zaWduZWQg aW50Cj4+PiAgICBpbnRlbF9zc2V1X3N1YnNsaWNlX3RvdGFsKGNvbnN0IHN0cnVjdCBzc2V1X2Rl dl9pbmZvICpzc2V1KQo+Pj4gICAgewo+Pj4gQEAgLTIyLDE3ICszMywzOSBAQCBpbnRlbF9zc2V1 X3N1YnNsaWNlX3RvdGFsKGNvbnN0IHN0cnVjdAo+Pj4gc3NldV9kZXZfaW5mbyAqc3NldSkKPj4+ ICAgIHVuc2lnbmVkIGludAo+Pj4gICAgaW50ZWxfc3NldV9zdWJzbGljZXNfcGVyX3NsaWNlKGNv bnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LAo+Pj4gdTggc2xpY2UpCj4+IEhlcmUgd2Ug cGFzcyBzbGljZSBhcyB1OCwgYnV0IGJlbG93IHdlIHVzZSBpbnQuIEFueSByZWFzb24gZm9yIHRo ZQo+PiBkaWZmZXJlbmNlPwo+IE5vIGdvb2QgcmVhc29uLiBJJ2xsIGZpeCBpdC4KPgo+Pj4gICAg ewo+Pj4gLQlyZXR1cm4gaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFza1tzbGljZV0pOwo+Pj4g Kwl1bnNpZ25lZCBpbnQgaSwgdG90YWwgPSAwOwo+Pj4gKwo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwg c3NldS0+c3Nfc3RyaWRlOyBpKyspCj4+PiArCQl0b3RhbCArPSBod2VpZ2h0OChzc2V1LT5zdWJz bGljZV9tYXNrW3NsaWNlICogc3NldS0KPj4+PiBzc19zdHJpZGUgKwo+Pj4gKwkJCQkJCSAgICAg IGldKTsKPj4+ICsKPj4+ICsJcmV0dXJuIHRvdGFsOwo+Pj4gK30KPj4+ICsKPj4+ICt2b2lkIGlu dGVsX3NzZXVfY29weV9zdWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUs Cj4+PiBpbnQgc2xpY2UsCj4+PiArCQkJICAgICAgIHU4ICp0b19tYXNrLCBjb25zdCB1OCAqZnJv bV9tYXNrKQo+PiBZb3UgYWx3YXlzIHVzZSBzc2V1LT5zdWJzbGljZV9tYXNrIGhhcyBhIGZyb21f bWFzaywgY2FuJ3Qgd2UganVzdAo+PiBnZXQKPj4gdGhhdCBmcm9tIHRoZSBzc2V1IHBhcmFtIGFu ZCBhdm9pZCB0aGUgZnJvbV9tYXNrPwo+IEkgd2FudGVkIHRvIG1ha2UgdGhpcyBhIGxpdHRsZSBt b3JlIGdlbmVyaWMsIGJ1dCBJIGFncmVlIG1heWJlIHRoYXQncwo+IG92ZXJraWxsLiBJJ2xsIHJl d29yayB0aGlzLgo+Cj4+PiArewo+Pj4gKwlpbnQgb2Zmc2V0ID0gc2xpY2UgKiBzc2V1LT5zc19z dHJpZGU7Cj4+PiArCj4+PiArCW1lbWNweSgmdG9fbWFza1tvZmZzZXRdLCAmZnJvbV9tYXNrW29m ZnNldF0sIHNzZXUtPnNzX3N0cmlkZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3ZvaWQgaW50ZWxfc3Nl dV9zZXRfc3Vic2xpY2VzKHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQKPj4+IHNsaWNl LAo+Pj4gKwkJCSAgICAgIHUzMiBzc19tYXNrKQo+Pj4gK3sKPj4+ICsJaW50IGksIG9mZnNldCA9 IHNsaWNlICogc3NldS0+c3Nfc3RyaWRlOwo+Pj4gKwo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgc3Nl dS0+c3Nfc3RyaWRlOyBpKyspCj4+PiArCQlzc2V1LT5zdWJzbGljZV9tYXNrW29mZnNldCArIGld ID0KPj4+ICsJCQkoc3NfbWFzayA+PiAoQklUU19QRVJfQllURSAqIGkpKSAmIDB4ZmY7Cj4+PiAg ICB9Cj4+PiAgICAKPj4+ICAgIHN0YXRpYyBpbnQgaW50ZWxfc3NldV9ldV9pZHgoY29uc3Qgc3Ry dWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsCj4+PiBpbnQgc2xpY2UsCj4+PiAgICAJCQkgICAgIGlu dCBzdWJzbGljZSkKPj4+ICAgIHsKPj4+IC0JaW50IHN1YnNsaWNlX3N0cmlkZSA9IERJVl9ST1VO RF9VUChzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSwKPj4+IC0JCQkJCSAgIEJJVFNfUEVSX0JZ VEUpOwo+Pj4gLQlpbnQgc2xpY2Vfc3RyaWRlID0gc3NldS0+bWF4X3N1YnNsaWNlcyAqIHN1YnNs aWNlX3N0cmlkZTsKPj4+ICsJaW50IHNsaWNlX3N0cmlkZSA9IHNzZXUtPm1heF9zdWJzbGljZXMg KiBzc2V1LT5ldV9zdHJpZGU7Cj4+PiAgICAKPj4+IC0JcmV0dXJuIHNsaWNlICogc2xpY2Vfc3Ry aWRlICsgc3Vic2xpY2UgKiBzdWJzbGljZV9zdHJpZGU7Cj4+PiArCXJldHVybiBzbGljZSAqIHNs aWNlX3N0cmlkZSArIHN1YnNsaWNlICogc3NldS0+ZXVfc3RyaWRlOwo+Pj4gICAgfQo+Pj4gICAg Cj4+PiAgICB1MTYgaW50ZWxfc3NldV9nZXRfZXVzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZv ICpzc2V1LCBpbnQKPj4+IHNsaWNlLAo+Pj4gQEAgLTQxLDggKzc0LDcgQEAgdTE2IGludGVsX3Nz ZXVfZ2V0X2V1cyhjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbwo+Pj4gKnNzZXUsIGludCBzbGlj ZSwKPj4+ICAgIAlpbnQgaSwgb2Zmc2V0ID0gaW50ZWxfc3NldV9ldV9pZHgoc3NldSwgc2xpY2Us IHN1YnNsaWNlKTsKPj4+ICAgIAl1MTYgZXVfbWFzayA9IDA7Cj4+PiAgICAKPj4+IC0JZm9yIChp ID0gMDsKPj4+IC0JICAgICBpIDwgRElWX1JPVU5EX1VQKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNs aWNlLAo+Pj4gQklUU19QRVJfQllURSk7IGkrKykgewo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgc3Nl dS0+ZXVfc3RyaWRlOyBpKyspIHsKPj4+ICAgIAkJZXVfbWFzayB8PSAoKHUxNilzc2V1LT5ldV9t YXNrW29mZnNldCArIGldKSA8PAo+Pj4gICAgCQkJKGkgKiBCSVRTX1BFUl9CWVRFKTsKPj4+ICAg IAl9Cj4+PiBAQCAtNTUsOCArODcsNyBAQCB2b2lkIGludGVsX3NzZXVfc2V0X2V1cyhzdHJ1Y3Qg c3NldV9kZXZfaW5mbwo+Pj4gKnNzZXUsIGludCBzbGljZSwgaW50IHN1YnNsaWNlLAo+Pj4gICAg ewo+Pj4gICAgCWludCBpLCBvZmZzZXQgPSBpbnRlbF9zc2V1X2V1X2lkeChzc2V1LCBzbGljZSwg c3Vic2xpY2UpOwo+Pj4gICAgCj4+PiAtCWZvciAoaSA9IDA7Cj4+PiAtCSAgICAgaSA8IERJVl9S T1VORF9VUChzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSwKPj4+IEJJVFNfUEVSX0JZVEUpOyBp KyspIHsKPj4+ICsJZm9yIChpID0gMDsgaSA8IHNzZXUtPmV1X3N0cmlkZTsgaSsrKSB7Cj4+PiAg ICAJCXNzZXUtPmV1X21hc2tbb2Zmc2V0ICsgaV0gPQo+Pj4gICAgCQkJKGV1X21hc2sgPj4gKEJJ VFNfUEVSX0JZVEUgKiBpKSkgJiAweGZmOwo+Pj4gICAgCX0KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmgKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfc3NldS5oCj4+PiBpbmRleCA1NmUzNzIxYWU4M2YuLmJmMDFmMzM4YThjYyAx MDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaAo+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5oCj4+PiBAQCAtOSwxNiAr OSwxOCBAQAo+Pj4gICAgCj4+PiAgICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPj4+ICAgICNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Cj4+ PiAgICAKPj4+ICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+Pj4gICAgCj4+PiAgICAjZGVm aW5lIEdFTl9NQVhfU0xJQ0VTCQkoNikgLyogQ05MIHVwcGVyIGJvdW5kICovCj4+PiAgICAjZGVm aW5lIEdFTl9NQVhfU1VCU0xJQ0VTCSg4KSAvKiBJQ0wgdXBwZXIgYm91bmQgKi8KPj4+ICAgICNk ZWZpbmUgR0VOX1NTRVVfU1RSSURFKGJpdHMpIERJVl9ST1VORF9VUChiaXRzLCBCSVRTX1BFUl9C WVRFKQo+Pj4gKyNkZWZpbmUgR0VOX01BWF9TVUJTTElDRV9TVFJJREUgR0VOX1NTRVVfU1RSSURF KEdFTl9NQVhfU1VCU0xJQ0VTKQo+Pj4gICAgCj4+PiAgICBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyB7 Cj4+PiAgICAJdTggc2xpY2VfbWFzazsKPj4+IC0JdTggc3Vic2xpY2VfbWFza1tHRU5fTUFYX1NM SUNFU107Cj4+PiArCXU4IHN1YnNsaWNlX21hc2tbR0VOX01BWF9TTElDRVMgKiBHRU5fTUFYX1NV QlNMSUNFX1NUUklERV07Cj4+PiAgICAJdTE2IGV1X3RvdGFsOwo+Pj4gICAgCXU4IGV1X3Blcl9z dWJzbGljZTsKPj4+ICAgIAl1OCBtaW5fZXVfaW5fcG9vbDsKPj4+IEBAIC0zMyw2ICszNSw5IEBA IHN0cnVjdCBzc2V1X2Rldl9pbmZvIHsKPj4+ICAgIAl1OCBtYXhfc3Vic2xpY2VzOwo+Pj4gICAg CXU4IG1heF9ldXNfcGVyX3N1YnNsaWNlOwo+Pj4gICAgCj4+PiArCXU4IHNzX3N0cmlkZTsKPj4+ ICsJdTggZXVfc3RyaWRlOwo+Pj4gKwo+Pj4gICAgCS8qIFdlIGRvbid0IGhhdmUgbW9yZSB0aGFu IDggZXVzIHBlciBzdWJzbGljZSBhdCB0aGUgbW9tZW50IGFuZAo+Pj4gYXMgd2UKPj4+ICAgIAkg KiBzdG9yZSBldXMgZW5hYmxlZCB1c2luZyBiaXRzLCBubyBuZWVkIHRvIG11bHRpcGx5IGJ5IGV1 cyBwZXIKPj4+ICAgIAkgKiBzdWJzbGljZS4KPj4+IEBAIC02MywxMiArNjgsMjEgQEAgaW50ZWxf c3NldV9mcm9tX2RldmljZV9pbmZvKGNvbnN0IHN0cnVjdAo+Pj4gc3NldV9kZXZfaW5mbyAqc3Nl dSkKPj4+ICAgIAlyZXR1cm4gdmFsdWU7Cj4+PiAgICB9Cj4+PiAgICAKPj4+ICt2b2lkIGludGVs X3NzZXVfc2V0X2luZm8oc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHU4Cj4+PiBtYXhfc2xp Y2VzLAo+Pj4gKwkJCSB1OCBtYXhfc3Vic2xpY2VzLCB1OCBtYXhfZXVzX3Blcl9zdWJzbGljZSk7 Cj4+PiArCj4+PiAgICB1bnNpZ25lZCBpbnQKPj4+ICAgIGludGVsX3NzZXVfc3Vic2xpY2VfdG90 YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpOwo+Pj4gICAgCj4+PiAgICB1bnNp Z25lZCBpbnQKPj4+ICAgIGludGVsX3NzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShjb25zdCBzdHJ1 Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKPj4+IHU4IHNsaWNlKTsKPj4+ICAgIAo+Pj4gK3ZvaWQg aW50ZWxfc3NldV9jb3B5X3N1YnNsaWNlcyhjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3Nl dSwKPj4+IGludCBzbGljZSwKPj4+ICsJCQkgICAgICAgdTggKnRvX21hc2ssIGNvbnN0IHU4ICpm cm9tX21hc2spOwo+Pj4gKwo+Pj4gK3ZvaWQgaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHN0cnVj dCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQKPj4+IHNsaWNlLAo+Pj4gKwkJCSAgICAgIHUzMiBz c19tYXNrKTsKPj4+ICsKPj4+ICAgIHUxNiBpbnRlbF9zc2V1X2dldF9ldXMoY29uc3Qgc3RydWN0 IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludAo+Pj4gc2xpY2UsCj4+PiAgICAJCSAgICAgICBpbnQg c3Vic2xpY2UpOwo+Pj4gICAgCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfd29ya2Fyb3VuZHMuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF93b3JrYXJvdW5kcy5jCj4+PiBpbmRleCA0M2UyOTAzMDY1NTEuLjdjN2U5NTU2YzFjNSAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPj4+ IEBAIC03NjcsNyArNzY3LDcgQEAgd2FfaW5pdF9tY3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCj4+PiBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCj4+PiAgICAJCXUzMiBzbGljZSA9 IGZscyhzc2V1LT5zbGljZV9tYXNrKTsKPj4+ICAgIAkJdTMyIGZ1c2UzID0KPj4+ICAgIAkJCWlu dGVsX3VuY29yZV9yZWFkKCZpOTE1LT51bmNvcmUsCj4+PiBHRU4xMF9NSVJST1JfRlVTRTMpOwo+ Pj4gLQkJdTggc3NfbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2VdOwo+Pj4gKwkJdTgg c3NfbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2UgKiBzc2V1LQo+Pj4+IHNzX3N0cmlk ZV07Cj4+IGNvdWxkIHVzZSBhCj4+Cj4+IAlHRU1fQlVHX09OKHNzZXUtPnNzX3N0cmlkZSA+IDEp Owo+Pgo+PiBoZXJlIGFzIHdlbGwgdG8gcmVtaW5kIHVzIHRoaXMgd2lsbCBuZWVkIGNoYW5nZXMg aW4gdGhhdCBjYXNlCj4gT2suCj4KPj4+ICAgIAo+Pj4gICAgCQl1OCBlbmFibGVkX21hc2sgPSAo c3NfbWFzayB8IHNzX21hc2sgPj4KPj4+ICAgIAkJCQkgICBHRU4xMF9MM0JBTktfUEFJUl9DT1VO VCkgJgo+Pj4gR0VOMTBfTDNCQU5LX01BU0s7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPj4+IGluZGV4IDNmM2VlODNhYzMxNS4uMDgwODljMjRkYjI1IDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+PiBAQCAtMTI1Nyw2ICsxMjU3LDcgQEAg c3RhdGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZvKHN0cnVjdAo+Pj4gZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4+PiAgICAJCQkgICAgICAgc3RydWN0IHNlcV9maWxlICptLAo+Pj4gICAg CQkJICAgICAgIHN0cnVjdCBpbnRlbF9pbnN0ZG9uZSAqaW5zdGRvbmUpCj4+PiAgICB7Cj4+PiAr CXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNz ZXU7Cj4+PiAgICAJaW50IHNsaWNlOwo+Pj4gICAgCWludCBzdWJzbGljZTsKPj4+ICAgIAo+Pj4g QEAgLTEyNzIsMTEgKzEyNzMsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZvKHN0 cnVjdAo+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiAgICAJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPD0gNikKPj4+ICAgIAkJcmV0dXJuOwo+Pj4gICAgCj4+PiAtCWZvcl9lYWNo X2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzbGljZSwgc3Vic2xpY2UpCj4+PiAr CWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwK Pj4+IHN1YnNsaWNlKQo+Pj4gICAgCQlzZXFfcHJpbnRmKG0sICJcdFx0U0FNUExFUl9JTlNURE9O RVslZF1bJWRdOiAweCUwOHhcbiIsCj4+PiAgICAJCQkgICBzbGljZSwgc3Vic2xpY2UsIGluc3Rk b25lLQo+Pj4+IHNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7Cj4+PiAgICAKPj4+IC0JZm9yX2Vh Y2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGljZSkKPj4+ ICsJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNl LAo+Pj4gc3Vic2xpY2UpCj4+PiAgICAJCXNlcV9wcmludGYobSwgIlx0XHRST1dfSU5TVERPTkVb JWRdWyVkXTogMHglMDh4XG4iLAo+Pj4gICAgCQkJICAgc2xpY2UsIHN1YnNsaWNlLCBpbnN0ZG9u ZS0KPj4+PiByb3dbc2xpY2VdW3N1YnNsaWNlXSk7Cj4+PiAgICB9Cj4+PiBAQCAtNDA2Niw3ICs0 MDY3LDkgQEAgc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdAo+Pj4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiAgICAJCQljb250aW51ZTsKPj4+ICAgIAo+ Pj4gICAgCQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJVChzKTsKPj4+IC0JCXNzZXUtPnN1YnNsaWNl X21hc2tbc10gPSBpbmZvLT5zc2V1LnN1YnNsaWNlX21hc2tbc107Cj4+PiArCQlpbnRlbF9zc2V1 X2NvcHlfc3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLAo+Pj4gKwkJCQkJICBzc2V1LT5zdWJzbGlj ZV9tYXNrLAo+Pj4gKwkJCQkJICBpbmZvLT5zc2V1LnN1YnNsaWNlX21hc2spOwo+Pj4gICAgCj4+ PiAgICAJCWZvciAoc3MgPSAwOyBzcyA8IGluZm8tPnNzZXUubWF4X3N1YnNsaWNlczsgc3MrKykg ewo+Pj4gICAgCQkJdW5zaWduZWQgaW50IGV1X2NudDsKPj4+IEBAIC00MTE3LDE4ICs0MTIwLDIy IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdAo+Pj4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiAgICAJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMp Owo+Pj4gICAgCj4+PiAgICAJCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPj4+IC0JCQlzc2V1 LT5zdWJzbGljZV9tYXNrW3NdID0KPj4+IC0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0KPj4+ PiBzc2V1LnN1YnNsaWNlX21hc2tbc107Cj4+PiArCQkJaW50ZWxfc3NldV9jb3B5X3N1YnNsaWNl cygmaW5mby0+c3NldSwgcywKPj4+ICsJCQkJCQkgIHNzZXUtPnN1YnNsaWNlX21hc2ssCj4+PiAr CQkJCQkJICBpbmZvLQo+Pj4+IHNzZXUuc3Vic2xpY2VfbWFzayk7Cj4+PiAgICAKPj4+ICAgIAkJ Zm9yIChzcyA9IDA7IHNzIDwgaW5mby0+c3NldS5tYXhfc3Vic2xpY2VzOyBzcysrKSB7Cj4+PiAg ICAJCQl1bnNpZ25lZCBpbnQgZXVfY250Owo+Pj4gKwkJCXU4IHNzX2lkeCA9IHMgKiBpbmZvLT5z c2V1LnNzX3N0cmlkZSArCj4+PiArCQkJCSAgICBzcyAvIEJJVFNfUEVSX0JZVEU7Cj4+PiAgICAK Pj4+ICAgIAkJCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+Pj4gICAgCQkJCWlmICghKHNf cmVnW3NdICYKPj4+IChHRU45X1BHQ1RMX1NTX0FDSyhzcykpKSkKPj4+ICAgIAkJCQkJLyogc2tp cCBkaXNhYmxlZCBzdWJzbGljZSAqLwo+Pj4gICAgCQkJCQljb250aW51ZTsKPj4+ICAgIAo+Pj4g LQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdIHw9IEJJVChzcyk7Cj4+PiArCQkJCXNzZXUtPnN1 YnNsaWNlX21hc2tbc3NfaWR4XSB8PQo+Pj4gKwkJCQkJQklUKHNzICUgQklUU19QRVJfQllURSk7 Cj4+PiAgICAJCQl9Cj4+PiAgICAKPj4+ICAgIAkJCWV1X2NudCA9IDIgKiBod2VpZ2h0MzIoZXVf cmVnWzIqcyArIHNzLzJdICYKPj4+IEBAIC00MTQ1LDI1ICs0MTUyLDI0IEBAIHN0YXRpYyB2b2lk IGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdAo+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4+PiAgICBzdGF0aWMgdm9pZCBicm9hZHdlbGxfc3NldV9kZXZpY2Vfc3RhdHVzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlCj4+PiAqZGV2X3ByaXYsCj4+PiAgICAJCQkJCSBzdHJ1Y3Qg c3NldV9kZXZfaW5mbyAqc3NldSkKPj4+ICAgIHsKPj4+ICsJc3RydWN0IGludGVsX3J1bnRpbWVf aW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7Cj4+PiAgICAJdTMyIHNsaWNlX2lu Zm8gPSBJOTE1X1JFQUQoR0VOOF9HVF9TTElDRV9JTkZPKTsKPj4+ICAgIAlpbnQgczsKPj4+ICAg IAo+Pj4gICAgCXNzZXUtPnNsaWNlX21hc2sgPSBzbGljZV9pbmZvICYgR0VOOF9MU0xJQ0VTVEFU X01BU0s7Cj4+PiAgICAKPj4+ICAgIAlpZiAoc3NldS0+c2xpY2VfbWFzaykgewo+Pj4gLQkJc3Nl dS0+ZXVfcGVyX3N1YnNsaWNlID0KPj4+IC0JCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1 LmV1X3Blcl9zdWJzbGljZTsKPj4+IC0JCWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2Vf bWFzayk7IHMrKykgewo+Pj4gLQkJCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gPQo+Pj4gLQkJCQlS VU5USU1FX0lORk8oZGV2X3ByaXYpLQo+Pj4+IHNzZXUuc3Vic2xpY2VfbWFza1tzXTsKPj4+IC0J CX0KPj4+ICsJCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9IGluZm8tPnNzZXUuZXVfcGVyX3N1YnNs aWNlOwo+Pj4gKwkJZm9yIChzID0gMDsgcyA8IGZscyhzc2V1LT5zbGljZV9tYXNrKTsgcysrKQo+ Pj4gKwkJCWludGVsX3NzZXVfY29weV9zdWJzbGljZXMoJmluZm8tPnNzZXUsIHMsCj4+PiArCQkJ CQkJICBzc2V1LT5zdWJzbGljZV9tYXNrLAo+Pj4gKwkJCQkJCSAgaW5mby0KPj4+PiBzc2V1LnN1 YnNsaWNlX21hc2spOwo+Pj4gICAgCQlzc2V1LT5ldV90b3RhbCA9IHNzZXUtPmV1X3Blcl9zdWJz bGljZSAqCj4+PiAgICAJCQkJIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoc3NldSk7Cj4+PiAg ICAKPj4+ICAgIAkJLyogc3VidHJhY3QgZnVzZWQgb2ZmIEVVKHMpIGZyb20gZW5hYmxlZCBzbGlj ZShzKSAqLwo+Pj4gICAgCQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBz KyspIHsKPj4+IC0JCQl1OCBzdWJzbGljZV83ZXUgPQo+Pj4gLQkJCQlSVU5USU1FX0lORk8oZGV2 X3ByaXYpLQo+Pj4+IHNzZXUuc3Vic2xpY2VfN2V1W3NdOwo+Pj4gKwkJCXU4IHN1YnNsaWNlXzdl dSA9IGluZm8tPnNzZXUuc3Vic2xpY2VfN2V1W3NdOwo+Pj4gICAgCj4+PiAgICAJCQlzc2V1LT5l dV90b3RhbCAtPSBod2VpZ2h0OChzdWJzbGljZV83ZXUpOwo+Pj4gICAgCQl9Cj4+PiBAQCAtNDIx MCw2ICs0MjE2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9wcmludF9zc2V1X2luZm8oc3RydWN0Cj4+ PiBzZXFfZmlsZSAqbSwgYm9vbCBpc19hdmFpbGFibGVfaW5mbywKPj4+ICAgIHN0YXRpYyBpbnQg aTkxNV9zc2V1X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPj4+ICAg IHsKPj4+ICAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5 MTUobS0+cHJpdmF0ZSk7Cj4+PiArCWNvbnN0IHN0cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmlu Zm8gPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpOwo+Pj4gICAgCXN0cnVjdCBzc2V1X2Rldl9pbmZv IHNzZXU7Cj4+PiAgICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4+PiAgICAKPj4+IEBAIC00 MjE3LDE0ICs0MjI0LDEzIEBAIHN0YXRpYyBpbnQgaTkxNV9zc2V1X3N0YXR1cyhzdHJ1Y3Qgc2Vx X2ZpbGUKPj4+ICptLCB2b2lkICp1bnVzZWQpCj4+PiAgICAJCXJldHVybiAtRU5PREVWOwo+Pj4g ICAgCj4+PiAgICAJc2VxX3B1dHMobSwgIlNTRVUgRGV2aWNlIEluZm9cbiIpOwo+Pj4gLQlpOTE1 X3ByaW50X3NzZXVfaW5mbyhtLCB0cnVlLCAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldSk7 Cj4+PiArCWk5MTVfcHJpbnRfc3NldV9pbmZvKG0sIHRydWUsICZpbmZvLT5zc2V1KTsKPj4+ICAg IAo+Pj4gICAgCXNlcV9wdXRzKG0sICJTU0VVIERldmljZSBTdGF0dXNcbiIpOwo+Pj4gICAgCW1l bXNldCgmc3NldSwgMCwgc2l6ZW9mKHNzZXUpKTsKPj4+IC0Jc3NldS5tYXhfc2xpY2VzID0gUlVO VElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5tYXhfc2xpY2VzOwo+Pj4gLQlzc2V1Lm1heF9zdWJz bGljZXMgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpLQo+Pj4+IHNzZXUubWF4X3N1YnNsaWNlczsK Pj4+IC0Jc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9Cj4+PiAtCQlSVU5USU1FX0lORk8oZGV2 X3ByaXYpLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOwo+Pj4gKwlpbnRlbF9zc2V1X3NldF9p bmZvKCZzc2V1LCBpbmZvLT5zc2V1Lm1heF9zbGljZXMsCj4+PiArCQkJICAgIGluZm8tPnNzZXUu bWF4X3N1YnNsaWNlcywKPj4+ICsJCQkgICAgaW5mby0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGlj ZSk7Cj4+PiAgICAKPj4+ICAgIAl3aXRoX2ludGVsX3J1bnRpbWVfcG0oZGV2X3ByaXYsIHdha2Vy ZWYpIHsKPj4+ICAgIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwo+Pj4gaW5kZXggMTMwYzUxNDBkYjBkLi42YWZlNGUzYWZlYTQgMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+PiBAQCAtMzI2LDcgKzMyNiw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QKPj4+IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKPj4+ICAgIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0u cGRldjsKPj4+ICAgIAljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1F X0lORk8oZGV2X3ByaXYpLQo+Pj4+IHNzZXU7Cj4+PiAgICAJZHJtX2k5MTVfZ2V0cGFyYW1fdCAq cGFyYW0gPSBkYXRhOwo+Pj4gLQlpbnQgdmFsdWU7Cj4+PiArCWludCB2YWx1ZSA9IDA7Cj4+PiAg ICAKPj4+ICAgIAlzd2l0Y2ggKHBhcmFtLT5wYXJhbSkgewo+Pj4gICAgCWNhc2UgSTkxNV9QQVJB TV9JUlFfQUNUSVZFOgo+Pj4gQEAgLTQ1NSw3ICs0NTUsOSBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0 cGFyYW1faW9jdGwoc3RydWN0Cj4+PiBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+PiAg ICAJCQlyZXR1cm4gLUVOT0RFVjsKPj4+ICAgIAkJYnJlYWs7Cj4+PiAgICAJY2FzZSBJOTE1X1BB UkFNX1NVQlNMSUNFX01BU0s6Cj4+PiAtCQl2YWx1ZSA9IHNzZXUtPnN1YnNsaWNlX21hc2tbMF07 Cj4+PiArCQkvKiBPbmx5IGNvcHkgYml0cyBmcm9tIHRoZSBmaXJzdCBzdWJzbGljZSAqLwo+PiBz L3N1YnNsaWNlL3NsaWNlLyA/Cj4gVHJ1ZSwgdGhhbmtzLgo+Cj4+PiArCQltZW1jcHkoJnZhbHVl LCBzc2V1LT5zdWJzbGljZV9tYXNrLAo+Pj4gKwkJICAgICAgIG1pbihzc2V1LT5zc19zdHJpZGUs ICh1OClzaXplb2YodmFsdWUpKSk7Cj4+PiAgICAJCWlmICghdmFsdWUpCj4+PiAgICAJCQlyZXR1 cm4gLUVOT0RFVjsKPj4+ICAgIAkJYnJlYWs7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jCj4+PiBpbmRleCBlMWI4NThiZDFkMzIuLjE0MDkxOGRkOWI3ZCAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPj4+IEBAIC00MDcsNiArNDA3 LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZXJyb3JfYnVmZmVycyhzdHJ1Y3QKPj4+IGRybV9pOTE1 X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPj4+ICAgIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2luc3Rk b25lKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYKPj4+ICptLAo+Pj4gICAgCQkJCSBj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lCj4+PiAqZWUpCj4+PiAgICB7Cj4+PiAr CXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhtLT5pOTE1KS0+c3Nl dTsKPj4+ICAgIAlpbnQgc2xpY2U7Cj4+PiAgICAJaW50IHN1YnNsaWNlOwo+Pj4gICAgCj4+PiBA QCAtNDIyLDEyICs0MjMsMTIgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUoc3Ry dWN0Cj4+PiBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4+PiAgICAJaWYgKElOVEVMX0dF TihtLT5pOTE1KSA8PSA2KQo+Pj4gICAgCQlyZXR1cm47Cj4+PiAgICAKPj4+IC0JZm9yX2VhY2hf aW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc2xpY2UsIHN1YnNsaWNlKQo+Pj4gKwlm b3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1LCBzbGljZSwKPj4+ IHN1YnNsaWNlKQo+Pj4gICAgCQllcnJfcHJpbnRmKG0sICIgIFNBTVBMRVJfSU5TVERPTkVbJWRd WyVkXTogMHglMDh4XG4iLAo+Pj4gICAgCQkJICAgc2xpY2UsIHN1YnNsaWNlLAo+Pj4gICAgCQkJ ICAgZWUtPmluc3Rkb25lLnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7Cj4+PiAgICAKPj4+IC0J Zm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc2xpY2UsIHN1YnNsaWNl KQo+Pj4gKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1LCBz bGljZSwKPj4+IHN1YnNsaWNlKQo+Pj4gICAgCQllcnJfcHJpbnRmKG0sICIgIFJPV19JTlNURE9O RVslZF1bJWRdOiAweCUwOHhcbiIsCj4+PiAgICAJCQkgICBzbGljZSwgc3Vic2xpY2UsCj4+PiAg ICAJCQkgICBlZS0+aW5zdGRvbmUucm93W3NsaWNlXVtzdWJzbGljZV0pOwo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcXVlcnkuYwo+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3F1ZXJ5LmMKPj4+IGluZGV4IDdjMTcwOGMyMjgxMS4uMDAwZGNiMTQ1Y2Uw IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKPj4+IEBAIC0zNyw4ICszNyw2 IEBAIHN0YXRpYyBpbnQgcXVlcnlfdG9wb2xvZ3lfaW5mbyhzdHJ1Y3QKPj4+IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+Pj4gICAgCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1 ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktCj4+Pj4gc3NldTsKPj4+ICAgIAlzdHJ1Y3QgZHJt X2k5MTVfcXVlcnlfdG9wb2xvZ3lfaW5mbyB0b3BvOwo+Pj4gICAgCXUzMiBzbGljZV9sZW5ndGgs IHN1YnNsaWNlX2xlbmd0aCwgZXVfbGVuZ3RoLCB0b3RhbF9sZW5ndGg7Cj4+PiAtCXU4IHN1YnNs aWNlX3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhfc3Vic2xpY2VzKTsKPj4+IC0J dTggZXVfc3RyaWRlID0gR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNl KTsKPj4+ICAgIAlpbnQgcmV0Owo+Pj4gICAgCj4+PiAgICAJaWYgKHF1ZXJ5X2l0ZW0tPmZsYWdz ICE9IDApCj4+PiBAQCAtNTAsOCArNDgsOCBAQCBzdGF0aWMgaW50IHF1ZXJ5X3RvcG9sb2d5X2lu Zm8oc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICAgIAlCVUlMRF9C VUdfT04oc2l6ZW9mKHU4KSAhPSBzaXplb2Yoc3NldS0+c2xpY2VfbWFzaykpOwo+Pj4gICAgCj4+ PiAgICAJc2xpY2VfbGVuZ3RoID0gc2l6ZW9mKHNzZXUtPnNsaWNlX21hc2spOwo+Pj4gLQlzdWJz bGljZV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2VzICogc3Vic2xpY2Vfc3RyaWRlOwo+Pj4gLQll dV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2VzICogc3NldS0+bWF4X3N1YnNsaWNlcyAqIGV1X3N0 cmlkZTsKPj4+ICsJc3Vic2xpY2VfbGVuZ3RoID0gc3NldS0+bWF4X3NsaWNlcyAqIHNzZXUtPnNz X3N0cmlkZTsKPj4+ICsJZXVfbGVuZ3RoID0gc3NldS0+bWF4X3NsaWNlcyAqIHNzZXUtPm1heF9z dWJzbGljZXMgKiBzc2V1LQo+Pj4+IGV1X3N0cmlkZTsKPj4+ICAgIAl0b3RhbF9sZW5ndGggPSBz aXplb2YodG9wbykgKyBzbGljZV9sZW5ndGggKyBzdWJzbGljZV9sZW5ndGggKwo+Pj4gICAgCQkg ICAgICAgZXVfbGVuZ3RoOwo+Pj4gICAgCj4+PiBAQCAtNjksOSArNjcsOSBAQCBzdGF0aWMgaW50 IHF1ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPj4+ICAgIAl0b3BvLm1heF9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS0+bWF4X2V1c19wZXJf c3Vic2xpY2U7Cj4+PiAgICAKPj4+ICAgIAl0b3BvLnN1YnNsaWNlX29mZnNldCA9IHNsaWNlX2xl bmd0aDsKPj4+IC0JdG9wby5zdWJzbGljZV9zdHJpZGUgPSBzdWJzbGljZV9zdHJpZGU7Cj4+PiAr CXRvcG8uc3Vic2xpY2Vfc3RyaWRlID0gc3NldS0+c3Nfc3RyaWRlOwo+Pj4gICAgCXRvcG8uZXVf b2Zmc2V0ID0gc2xpY2VfbGVuZ3RoICsgc3Vic2xpY2VfbGVuZ3RoOwo+Pj4gLQl0b3BvLmV1X3N0 cmlkZSA9IGV1X3N0cmlkZTsKPj4+ICsJdG9wby5ldV9zdHJpZGUgPSBzc2V1LT5ldV9zdHJpZGU7 Cj4+PiAgICAKPj4+ICAgIAlpZiAoX19jb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5 X2l0ZW0tPmRhdGFfcHRyKSwKPj4+ICAgIAkJCSAgICZ0b3BvLCBzaXplb2YodG9wbykpKQo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPj4+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+Pj4gaW5kZXggZTFk YmNjZjA0Y2Q5Li5iYmJjMGE4YzIxODMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZXZpY2VfaW5mby5jCj4+PiBAQCAtODQsMTcgKzg0LDQyIEBAIHZvaWQgaW50ZWxfZGV2 aWNlX2luZm9fZHVtcF9mbGFncyhjb25zdCBzdHJ1Y3QKPj4+IGludGVsX2RldmljZV9pbmZvICpp bmZvLAo+Pj4gICAgI3VuZGVmIFBSSU5UX0ZMQUcKPj4+ICAgIH0KPj4+ICAgIAo+Pj4gKyNkZWZp bmUgU1NfU1RSX01BWF9TSVpFIChHRU5fTUFYX1NVQlNMSUNFX1NUUklERSAqIDIpCj4+PiArCj4+ PiArc3RhdGljIHU4ICoKPj4+ICtzdWJzbGljZV9wZXJfc2xpY2Vfc3RyKHU4ICpidWYsIGNvbnN0 IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LAo+Pj4gdTggc2xpY2UpCj4+PiArewo+Pj4gKwlp bnQgaTsKPj4+ICsJdTggc3Nfb2Zmc2V0ID0gc2xpY2UgKiBzc2V1LT5zc19zdHJpZGU7Cj4+PiAr Cj4+PiArCUdFTV9CVUdfT04oc2xpY2UgPj0gc3NldS0+bWF4X3NsaWNlcyk7Cj4+PiArCj4+PiAr CW1lbXNldChidWYsIDAsIFNTX1NUUl9NQVhfU0laRSk7Cj4+PiArCj4+PiArCS8qCj4+PiArCSAq IFByaW50IHN1YnNsaWNlIGluZm9ybWF0aW9uIGluIHJldmVyc2Ugb3JkZXIgdG8gbWF0Y2gKPj4+ ICsJICogdXNlcnNwYWNlIGV4cGVjdGF0aW9ucy4KPj4+ICsJICovCj4+PiArCWZvciAoaSA9IDA7 IGkgPCBzc2V1LT5zc19zdHJpZGU7IGkrKykKPj4+ICsJCXNwcmludGYoJmJ1ZltpICogMl0sICIl MDJ4IiwKPj4+ICsJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NzX29mZnNldCArIHNzZXUtPnNzX3N0 cmlkZQo+Pj4gLQo+Pj4gKwkJCQkJICAgIChpICsgMSldKTsKPj4+ICsKPj4+ICsJcmV0dXJuIGJ1 ZjsKPj4+ICt9Cj4+PiArCj4+PiAgICBzdGF0aWMgdm9pZCBzc2V1X2R1bXAoY29uc3Qgc3RydWN0 IHNzZXVfZGV2X2luZm8gKnNzZXUsIHN0cnVjdAo+Pj4gZHJtX3ByaW50ZXIgKnApCj4+PiAgICB7 Cj4+PiAgICAJaW50IHM7Cj4+PiArCXU4IGJ1ZltTU19TVFJfTUFYX1NJWkVdOwo+Pj4gICAgCj4+ PiAgICAJZHJtX3ByaW50ZihwLCAic2xpY2UgdG90YWw6ICV1LCBtYXNrPSUwNHhcbiIsCj4+PiAg ICAJCSAgIGh3ZWlnaHQ4KHNzZXUtPnNsaWNlX21hc2spLCBzc2V1LT5zbGljZV9tYXNrKTsKPj4+ ICAgIAlkcm1fcHJpbnRmKHAsICJzdWJzbGljZSB0b3RhbDogJXVcbiIsCj4+PiBpbnRlbF9zc2V1 X3N1YnNsaWNlX3RvdGFsKHNzZXUpKTsKPj4+ICAgIAlmb3IgKHMgPSAwOyBzIDwgc3NldS0+bWF4 X3NsaWNlczsgcysrKSB7Cj4+PiAtCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGlj ZXMsIG1hc2s9JTA0eFxuIiwKPj4+ICsJCWRybV9wcmludGYocCwgInNsaWNlJWQ6ICV1IHN1YnNs aWNlcywgbWFzaz0lc1xuIiwKPj4+ICAgIAkJCSAgIHMsIGludGVsX3NzZXVfc3Vic2xpY2VzX3Bl cl9zbGljZShzc2V1LCBzKSwKPj4+IC0JCQkgICBzc2V1LT5zdWJzbGljZV9tYXNrW3NdKTsKPj4+ ICsJCQkgICBzdWJzbGljZV9wZXJfc2xpY2Vfc3RyKGJ1Ziwgc3NldSwgcykpOwo+Pj4gICAgCX0K Pj4+ICAgIAlkcm1fcHJpbnRmKHAsICJFVSB0b3RhbDogJXVcbiIsIHNzZXUtPmV1X3RvdGFsKTsK Pj4+ICAgIAlkcm1fcHJpbnRmKHAsICJFVSBwZXIgc3Vic2xpY2U6ICV1XG4iLCBzc2V1LT5ldV9w ZXJfc3Vic2xpY2UpOwo+Pj4gQEAgLTExOCw2ICsxNDMsNyBAQCB2b2lkIGludGVsX2RldmljZV9p bmZvX2R1bXBfdG9wb2xvZ3koY29uc3QKPj4+IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LAo+ Pj4gICAgCQkJCSAgICAgc3RydWN0IGRybV9wcmludGVyICpwKQo+Pj4gICAgewo+Pj4gICAgCWlu dCBzLCBzczsKPj4+ICsJdTggYnVmW1NTX1NUUl9NQVhfU0laRV07Cj4+PiAgICAKPj4+ICAgIAlp ZiAoc3NldS0+bWF4X3NsaWNlcyA9PSAwKSB7Cj4+PiAgICAJCWRybV9wcmludGYocCwgIlVuYXZh aWxhYmxlXG4iKTsKPj4+IEBAIC0xMjUsOSArMTUxLDkgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5m b19kdW1wX3RvcG9sb2d5KGNvbnN0Cj4+PiBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKPj4+ ICAgIAl9Cj4+PiAgICAKPj4+ICAgIAlmb3IgKHMgPSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsg cysrKSB7Cj4+PiAtCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZShzKSAoMHgl aGh4KTpcbiIsCj4+PiArCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZShzKSAo MHglcyk6XG4iLAo+Pj4gICAgCQkJICAgcywgaW50ZWxfc3NldV9zdWJzbGljZXNfcGVyX3NsaWNl KHNzZXUsIHMpLAo+Pj4gLQkJCSAgIHNzZXUtPnN1YnNsaWNlX21hc2tbc10pOwo+Pj4gKwkJCSAg IHN1YnNsaWNlX3Blcl9zbGljZV9zdHIoYnVmLCBzc2V1LCBzKSk7Cj4+PiAgICAKPj4+ICAgIAkJ Zm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewo+Pj4gICAgCQkJ dTE2IGVuYWJsZWRfZXVzID0gaW50ZWxfc3NldV9nZXRfZXVzKHNzZXUsIHMsCj4+PiBzcyk7Cj4+ PiBAQCAtMTU2LDE1ICsxODIsMTAgQEAgc3RhdGljIHZvaWQgZ2VuMTFfc3NldV9pbmZvX2luaXQo c3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+ICAgIAl1OCBldV9lbjsK Pj4+ICAgIAlpbnQgczsKPj4+ICAgIAo+Pj4gLQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYp KSB7Cj4+PiAtCQlzc2V1LT5tYXhfc2xpY2VzID0gMTsKPj4+IC0JCXNzZXUtPm1heF9zdWJzbGlj ZXMgPSA0Owo+Pj4gLQkJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+Pj4gLQl9IGVs c2Ugewo+Pj4gLQkJc3NldS0+bWF4X3NsaWNlcyA9IDE7Cj4+PiAtCQlzc2V1LT5tYXhfc3Vic2xp Y2VzID0gODsKPj4+IC0JCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsKPj4+IC0JfQo+ Pj4gKwlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQo+Pj4gKwkJaW50ZWxfc3NldV9zZXRf aW5mbyhzc2V1LCAxLCA0LCA4KTsKPj4+ICsJZWxzZQo+Pj4gKwkJaW50ZWxfc3NldV9zZXRfaW5m byhzc2V1LCAxLCA4LCA4KTsKPj4+ICAgIAo+Pj4gICAgCXNfZW4gPSBJOTE1X1JFQUQoR0VOMTFf R1RfU0xJQ0VfRU5BQkxFKSAmIEdFTjExX0dUX1NfRU5BX01BU0s7Cj4+PiAgICAJc3NfZW4gPSB+ STkxNV9SRUFEKEdFTjExX0dUX1NVQlNMSUNFX0RJU0FCTEUpOwo+Pj4gQEAgLTE3Nyw5ICsxOTgs MTEgQEAgc3RhdGljIHZvaWQgZ2VuMTFfc3NldV9pbmZvX2luaXQoc3RydWN0Cj4+PiBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPj4+ICAgIAkJCWludCBzczsKPj4+ICAgIAo+Pj4gICAgCQkJ c3NldS0+c2xpY2VfbWFzayB8PSBCSVQocyk7Cj4+PiAtCQkJc3NldS0+c3Vic2xpY2VfbWFza1tz XSA9IChzc19lbiA+PiBzc19pZHgpICYKPj4+IHNzX2VuX21hc2s7Cj4+PiArCQkJc3NldS0+c3Vi c2xpY2VfbWFza1tzICogc3NldS0+c3Nfc3RyaWRlXSA9Cj4+PiArCQkJCShzc19lbiA+PiBzc19p ZHgpICYgc3NfZW5fbWFzazsKPj4gU2hvdWxkbid0IHRoaXMganVzdCBjYWxsIGludGVsX3NzZXVf c2V0X3N1YnNsaWNlcygpIGluc3RlYWQgb2YgZG9pbmcKPj4gdGhlCj4+IHNldHRpbmcgbG9jYWxs eT8KPiBZZXMsIGxldCBtZSBmaXggdGhpcy4KPgo+Pj4gICAgCQkJZm9yIChzcyA9IDA7IHNzIDwg c3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewo+Pj4gLQkJCQlpZiAoc3NldS0+c3Vic2xpY2Vf bWFza1tzXSAmIEJJVChzcykpCj4+PiArCQkJCWlmIChzc2V1LT5zdWJzbGljZV9tYXNrW3MgKiBz c2V1LQo+Pj4+IHNzX3N0cmlkZV0gJgo+Pj4gKwkJCQkgICAgQklUKHNzKSkKPj4gVGhpcyBjdWxk IHVzZSB0aGUgaW50ZWxfc3NldV9oYXNfc3Vic2xpY2UoKSBzdWdnZXN0ZWQgZWFybGllciwKPj4g b3RoZXJ3aXNlCj4+IGl0IG5lZWRzIHRvIGNvbnNpZGVyIHNzX3N0cmlkZSA+IDEKPiBPay4KPgo+ Pj4gICAgCQkJCQlpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgcywgc3MsCj4+PiBldV9lbik7Cj4+ PiAgICAJCQl9Cj4+PiAgICAJCX0KPj4+IEBAIC0yMDEsMjMgKzIyNCwxMCBAQCBzdGF0aWMgdm9p ZCBnZW4xMF9zc2V1X2luZm9faW5pdChzdHJ1Y3QKPj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+Pj4gICAgCWNvbnN0IGludCBldV9tYXNrID0gMHhmZjsKPj4+ICAgIAl1MzIgc3Vic2xp Y2VfbWFzaywgZXVfZW47Cj4+PiAgICAKPj4+ICsJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCA2 LCA0LCA4KTsKPj4+ICsKPj4+ICAgIAlzc2V1LT5zbGljZV9tYXNrID0gKGZ1c2UyICYgR0VOMTBf RjJfU19FTkFfTUFTSykgPj4KPj4+ICAgIAkJCSAgICBHRU4xMF9GMl9TX0VOQV9TSElGVDsKPj4+ IC0Jc3NldS0+bWF4X3NsaWNlcyA9IDY7Cj4+PiAtCXNzZXUtPm1heF9zdWJzbGljZXMgPSA0Owo+ Pj4gLQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4+PiAtCj4+PiAtCXN1YnNsaWNl X21hc2sgPSAoMSA8PCA0KSAtIDE7Cj4+PiAtCXN1YnNsaWNlX21hc2sgJj0gfigoZnVzZTIgJiBH RU4xMF9GMl9TU19ESVNfTUFTSykgPj4KPj4+IC0JCQkgICBHRU4xMF9GMl9TU19ESVNfU0hJRlQp Owo+Pj4gLQo+Pj4gLQkvKgo+Pj4gLQkgKiBTbGljZTAgY2FuIGhhdmUgdXAgdG8gMyBzdWJzbGlj ZXMsIGJ1dCB0aGVyZSBhcmUgb25seSAyIGluCj4+PiAtCSAqIHNsaWNlMS8yLgo+Pj4gLQkgKi8K Pj4+IC0Jc3NldS0+c3Vic2xpY2VfbWFza1swXSA9IHN1YnNsaWNlX21hc2s7Cj4+PiAtCWZvciAo cyA9IDE7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspCj4+PiAtCQlzc2V1LT5zdWJzbGljZV9t YXNrW3NdID0gc3Vic2xpY2VfbWFzayAmIDB4MzsKPj4+ICAgIAo+Pj4gICAgCS8qIFNsaWNlMCAq Lwo+Pj4gICAgCWV1X2VuID0gfkk5MTVfUkVBRChHRU44X0VVX0RJU0FCTEUwKTsKPj4+IEBAIC0y NDIsMTQgKzI1MiwyMiBAQCBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2luZm9faW5pdChzdHJ1Y3QK Pj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4gICAgCWV1X2VuID0gfkk5MTVfUkVB RChHRU4xMF9FVV9ESVNBQkxFMyk7Cj4+PiAgICAJaW50ZWxfc3NldV9zZXRfZXVzKHNzZXUsIDUs IDEsIGV1X2VuICYgZXVfbWFzayk7Cj4+PiAgICAKPj4+IC0JLyogRG8gYSBzZWNvbmQgcGFzcyB3 aGVyZSB3ZSBtYXJrIHRoZSBzdWJzbGljZXMgZGlzYWJsZWQgaWYgYWxsCj4+PiB0aGVpcgo+Pj4g LQkgKiBldXMgYXJlIG9mZi4KPj4+IC0JICovCj4+PiArCXN1YnNsaWNlX21hc2sgPSAoMSA8PCA0 KSAtIDE7Cj4+PiArCXN1YnNsaWNlX21hc2sgJj0gfigoZnVzZTIgJiBHRU4xMF9GMl9TU19ESVNf TUFTSykgPj4KPj4+ICsJCQkgICBHRU4xMF9GMl9TU19ESVNfU0hJRlQpOwo+Pj4gKwo+Pj4gICAg CWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKPj4+ICAgIAkJZm9yIChz cyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewo+Pj4gICAgCQkJaWYgKGlu dGVsX3NzZXVfZ2V0X2V1cyhzc2V1LCBzLCBzcykgPT0gMCkKPj4+IC0JCQkJc3NldS0+c3Vic2xp Y2VfbWFza1tzXSAmPSB+QklUKHNzKTsKPj4+ICsJCQkJc3Vic2xpY2VfbWFzayAmPSB+QklUKHNz KTsKPj4+ICAgIAkJfQo+Pj4gKwo+Pj4gKwkJLyoKPj4+ICsJCSAqIFNsaWNlMCBjYW4gaGF2ZSB1 cCB0byAzIHN1YnNsaWNlcywgYnV0IHRoZXJlIGFyZQo+Pj4gb25seSAyIGluCj4+PiArCQkgKiBz bGljZTEvMi4KPj4+ICsJCSAqLwo+Pj4gKwkJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUs IHMsIHMgPT0gMCA/Cj4+PiBzdWJzbGljZV9tYXNrIDoKPj4+ICsJCQkJCQkJICAgc3Vic2xpY2Vf bWFzCj4+PiBrICYgMHgzKTsKPj4+ICAgIAl9Cj4+PiAgICAKPj4+ICAgIAlzc2V1LT5ldV90b3Rh bCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7Cj4+PiBAQCAtMjc1LDEzICsyOTMsMTIgQEAgc3Rh dGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QKPj4+IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+Pj4gICAgewo+Pj4gICAgCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpz c2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7Cj4+PiAgICAJdTMyIGZ1c2U7Cj4+ PiArCXU4IHN1YnNsaWNlX21hc2s7Cj4+PiAgICAKPj4+ICAgIAlmdXNlID0gSTkxNV9SRUFEKENI Vl9GVVNFX0dUKTsKPj4+ICAgIAo+Pj4gICAgCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7Cj4+ PiAtCXNzZXUtPm1heF9zbGljZXMgPSAxOwo+Pj4gLQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gMjsK Pj4+IC0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+Pj4gKwlpbnRlbF9zc2V1X3Nl dF9pbmZvKHNzZXUsIDEsIDIsIDgpOwo+Pj4gICAgCj4+PiAgICAJaWYgKCEoZnVzZSAmIENIVl9G R1RfRElTQUJMRV9TUzApKSB7Cj4+PiAgICAJCXU4IGRpc2FibGVkX21hc2sgPQo+Pj4gQEAgLTI5 MCw3ICszMDcsNyBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVfaW5mb19pbml0KHN0cnVj dAo+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+PiAgICAJCQkoKChmdXNlICYgQ0hW X0ZHVF9FVV9ESVNfU1MwX1IxX01BU0spID4+Cj4+PiAgICAJCQkgIENIVl9GR1RfRVVfRElTX1NT MF9SMV9TSElGVCkgPDwgNCk7Cj4+PiAgICAKPj4+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0g fD0gQklUKDApOwo+Pj4gKwkJc3Vic2xpY2VfbWFzayB8PSBCSVQoMCk7Cj4+PiAgICAJCWludGVs X3NzZXVfc2V0X2V1cyhzc2V1LCAwLCAwLCB+ZGlzYWJsZWRfbWFzayk7Cj4+PiAgICAJfQo+Pj4g ICAgCj4+PiBAQCAtMzAxLDEwICszMTgsMTIgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1 X2luZm9faW5pdChzdHJ1Y3QKPj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4gICAg CQkJKCgoZnVzZSAmIENIVl9GR1RfRVVfRElTX1NTMV9SMV9NQVNLKSA+Pgo+Pj4gICAgCQkJICBD SFZfRkdUX0VVX0RJU19TUzFfUjFfU0hJRlQpIDw8IDQpOwo+Pj4gICAgCj4+PiAtCQlzc2V1LT5z dWJzbGljZV9tYXNrWzBdIHw9IEJJVCgxKTsKPj4+ICsJCXN1YnNsaWNlX21hc2sgfD0gQklUKDEp Owo+Pj4gICAgCQlpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgMCwgMSwgfmRpc2FibGVkX21hc2sp Owo+Pj4gICAgCX0KPj4+ICAgIAo+Pj4gKwlpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwg MCwgc3Vic2xpY2VfbWFzayk7Cj4+PiArCj4+PiAgICAJc3NldS0+ZXVfdG90YWwgPSBjb21wdXRl X2V1X3RvdGFsKHNzZXUpOwo+Pj4gICAgCj4+PiAgICAJLyoKPj4+IEBAIC0zMTIsNyArMzMxLDgg QEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QKPj4+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4gICAgCSAqIGFjcm9zcyBzdWJzbGljZXMuCj4+PiAg ICAJKi8KPj4+ICAgIAlzc2V1LT5ldV9wZXJfc3Vic2xpY2UgPSBpbnRlbF9zc2V1X3N1YnNsaWNl X3RvdGFsKHNzZXUpID8KPj4+IC0JCQkJc3NldS0+ZXVfdG90YWwgLwo+Pj4gaW50ZWxfc3NldV9z dWJzbGljZV90b3RhbChzc2V1KSA6Cj4+PiArCQkJCXNzZXUtPmV1X3RvdGFsIC8KPj4+ICsJCQkJ CWludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoc3NldSkKPj4+IDoKPj4+ICAgIAkJCQkwOwo+Pj4g ICAgCS8qCj4+PiAgICAJICogQ0hWIHN1cHBvcnRzIHN1YnNsaWNlIHBvd2VyIGdhdGluZyBvbiBk ZXZpY2VzIHdpdGggbW9yZSB0aGFuCj4+PiBAQCAtMzM2LDkgKzM1Niw4IEBAIHN0YXRpYyB2b2lk IGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4+ICAgIAlzc2V1LT5zbGljZV9tYXNrID0gKGZ1c2UyICYgR0VOOF9GMl9TX0VOQV9NQVNL KSA+Pgo+Pj4gR0VOOF9GMl9TX0VOQV9TSElGVDsKPj4+ICAgIAo+Pj4gICAgCS8qIEJYVCBoYXMg YSBzaW5nbGUgc2xpY2UgYW5kIGF0IG1vc3QgMyBzdWJzbGljZXMuICovCj4+PiAtCXNzZXUtPm1h eF9zbGljZXMgPSBJU19HRU45X0xQKGRldl9wcml2KSA/IDEgOiAzOwo+Pj4gLQlzc2V1LT5tYXhf c3Vic2xpY2VzID0gSVNfR0VOOV9MUChkZXZfcHJpdikgPyAzIDogNDsKPj4+IC0Jc3NldS0+bWF4 X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+Pj4gKwlpbnRlbF9zc2V1X3NldF9pbmZvKHNzZXUsIElT X0dFTjlfTFAoZGV2X3ByaXYpID8gMSA6IDMsCj4+PiArCQkJICAgIElTX0dFTjlfTFAoZGV2X3By aXYpID8gMyA6IDQsIDgpOwo+Pj4gICAgCj4+PiAgICAJLyoKPj4+ICAgIAkgKiBUaGUgc3Vic2xp Y2UgZGlzYWJsZSBmaWVsZCBpcyBnbG9iYWwsIGkuZS4gaXQgYXBwbGllcwo+Pj4gQEAgLTM1Nywx NCArMzc2LDE2IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0Cj4+PiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+ICAgIAkJCS8qIHNraXAgZGlzYWJsZWQgc2xp Y2UgKi8KPj4+ICAgIAkJCWNvbnRpbnVlOwo+Pj4gICAgCj4+PiAtCQlzc2V1LT5zdWJzbGljZV9t YXNrW3NdID0gc3Vic2xpY2VfbWFzazsKPj4+ICsJCWludGVsX3NzZXVfc2V0X3N1YnNsaWNlcyhz c2V1LCBzLCBzdWJzbGljZV9tYXNrKTsKPj4+ICAgIAo+Pj4gICAgCQlldV9kaXNhYmxlID0gSTkx NV9SRUFEKEdFTjlfRVVfRElTQUJMRShzKSk7Cj4+PiAgICAJCWZvciAoc3MgPSAwOyBzcyA8IHNz ZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPj4+ICAgIAkJCWludCBldV9wZXJfc3M7Cj4+PiAg ICAJCQl1OCBldV9kaXNhYmxlZF9tYXNrOwo+Pj4gKwkJCXU4IHNzX2lkeCA9IHMgKiBzc2V1LT5z c19zdHJpZGUgKyBzcyAvCj4+PiBCSVRTX1BFUl9CWVRFOwo+Pj4gICAgCj4+PiAtCQkJaWYgKCEo c3NldS0+c3Vic2xpY2VfbWFza1tzXSAmIEJJVChzcykpKQo+Pj4gKwkJCWlmICghKHNzZXUtPnN1 YnNsaWNlX21hc2tbc3NfaWR4XSAmCj4+PiArCQkJICAgICAgQklUKHNzICUgQklUU19QRVJfQllU RSkpKQo+Pj4gICAgCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KPj4+ICAgIAkJCQlj b250aW51ZTsKPj4+ICAgIAo+Pj4gQEAgLTQzNyw5ICs0NTgsNyBAQCBzdGF0aWMgdm9pZCBicm9h ZHdlbGxfc3NldV9pbmZvX2luaXQoc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4+ICAgIAo+Pj4gICAgCWZ1c2UyID0gSTkxNV9SRUFEKEdFTjhfRlVTRTIpOwo+Pj4gICAg CXNzZXUtPnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU44X0YyX1NfRU5BX01BU0spID4+Cj4+PiBH RU44X0YyX1NfRU5BX1NISUZUOwo+Pj4gLQlzc2V1LT5tYXhfc2xpY2VzID0gMzsKPj4+IC0Jc3Nl dS0+bWF4X3N1YnNsaWNlcyA9IDM7Cj4+PiAtCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0g ODsKPj4+ICsJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCAzLCAzLCA4KTsKPj4+ICAgIAo+Pj4g ICAgCS8qCj4+PiAgICAJICogVGhlIHN1YnNsaWNlIGRpc2FibGUgZmllbGQgaXMgZ2xvYmFsLCBp LmUuIGl0IGFwcGxpZXMKPj4+IEBAIC00NjYsMTggKzQ4NSwyMSBAQCBzdGF0aWMgdm9pZCBicm9h ZHdlbGxfc3NldV9pbmZvX2luaXQoc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4+ICAgIAkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KPj4+ICAgIAkJCWNvbnRpbnVl Owo+Pj4gICAgCj4+PiAtCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gc3Vic2xpY2VfbWFzazsK Pj4+ICsJCWludGVsX3NzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBzLCBzdWJzbGljZV9tYXNrKTsK Pj4+ICAgIAo+Pj4gICAgCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBz cysrKSB7Cj4+PiAgICAJCQl1OCBldV9kaXNhYmxlZF9tYXNrOwo+Pj4gKwkJCXU4IHNzX2lkeCA9 IHMgKiBzc2V1LT5zc19zdHJpZGUgKyBzcyAvCj4+PiBCSVRTX1BFUl9CWVRFOwo+Pj4gICAgCQkJ dTMyIG5fZGlzYWJsZWQ7Cj4+PiAgICAKPj4+IC0JCQlpZiAoIShzc2V1LT5zdWJzbGljZV9tYXNr W3NdICYgQklUKHNzKSkpCj4+PiArCQkJaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFza1tzc19pZHhd ICYKPj4+ICsJCQkgICAgICBCSVQoc3MgJSBCSVRTX1BFUl9CWVRFKSkpCj4+PiAgICAJCQkJLyog c2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwo+Pj4gICAgCQkJCWNvbnRpbnVlOwo+Pj4gICAgCj4+ PiAgICAJCQlldV9kaXNhYmxlZF9tYXNrID0KPj4+IC0JCQkJZXVfZGlzYWJsZVtzXSA+PiAoc3Mg KiBzc2V1LQo+Pj4+IG1heF9ldXNfcGVyX3N1YnNsaWNlKTsKPj4+ICsJCQkJZXVfZGlzYWJsZVtz XSA+Pgo+Pj4gKwkJCQkJKHNzICogc3NldS0KPj4+PiBtYXhfZXVzX3Blcl9zdWJzbGljZSk7Cj4+ PiAgICAKPj4+ICAgIAkJCWludGVsX3NzZXVfc2V0X2V1cyhzc2V1LCBzLCBzcywKPj4+IH5ldV9k aXNhYmxlZF9tYXNrKTsKPj4+ICAgIAo+Pj4gQEAgLTUxNyw2ICs1MzksNyBAQCBzdGF0aWMgdm9p ZCBoYXN3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdAo+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4+PiAgICAJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZP KGRldl9wcml2KS0+c3NldTsKPj4+ICAgIAl1MzIgZnVzZTE7Cj4+PiAgICAJaW50IHMsIHNzOwo+ Pj4gKwl1MzIgc3Vic2xpY2VfbWFzazsKPj4+ICAgIAo+Pj4gICAgCS8qCj4+PiAgICAJICogVGhl cmUgaXNuJ3QgYSByZWdpc3RlciB0byB0ZWxsIHVzIGhvdyBtYW55IHNsaWNlcy9zdWJzbGljZXMu Cj4+PiBXZQo+Pj4gQEAgLTUyOCwyMiArNTUxLDE4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfc3Nl dV9pbmZvX2luaXQoc3RydWN0Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+ICAg IAkJLyogZmFsbCB0aHJvdWdoICovCj4+PiAgICAJY2FzZSAxOgo+Pj4gICAgCQlzc2V1LT5zbGlj ZV9tYXNrID0gQklUKDApOwo+Pj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSA9IEJJVCgwKTsK Pj4+ICsJCXN1YnNsaWNlX21hc2sgPSBCSVQoMCk7Cj4+PiAgICAJCWJyZWFrOwo+Pj4gICAgCWNh c2UgMjoKPj4+ICAgIAkJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgwKTsKPj4+IC0JCXNzZXUtPnN1 YnNsaWNlX21hc2tbMF0gPSBCSVQoMCkgfCBCSVQoMSk7Cj4+PiArCQlzdWJzbGljZV9tYXNrID0g QklUKDApIHwgQklUKDEpOwo+Pj4gICAgCQlicmVhazsKPj4+ICAgIAljYXNlIDM6Cj4+PiAgICAJ CXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCkgfCBCSVQoMSk7Cj4+PiAtCQlzc2V1LT5zdWJzbGlj ZV9tYXNrWzBdID0gQklUKDApIHwgQklUKDEpOwo+Pj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1sx XSA9IEJJVCgwKSB8IEJJVCgxKTsKPj4+ICsJCXN1YnNsaWNlX21hc2sgPSBCSVQoMCkgfCBCSVQo MSk7Cj4+PiAgICAJCWJyZWFrOwo+Pj4gICAgCX0KPj4+ICAgIAo+Pj4gLQlzc2V1LT5tYXhfc2xp Y2VzID0gaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzayk7Cj4+PiAtCXNzZXUtPm1heF9zdWJzbGlj ZXMgPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKTsKPj4+IC0KPj4+ICAgIAlmdXNl MSA9IEk5MTVfUkVBRChIU1dfUEFWUF9GVVNFMSk7Cj4+PiAgICAJc3dpdGNoICgoZnVzZTEgJiBI U1dfRjFfRVVfRElTX01BU0spID4+IEhTV19GMV9FVV9ESVNfU0hJRlQpIHsKPj4+ICAgIAlkZWZh dWx0Ogo+Pj4gQEAgLTU2MCw5ICs1NzksMTQgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zc2V1X2lu Zm9faW5pdChzdHJ1Y3QKPj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4gICAgCQlz c2V1LT5ldV9wZXJfc3Vic2xpY2UgPSA2Owo+Pj4gICAgCQlicmVhazsKPj4+ICAgIAl9Cj4+PiAt CXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS0+ZXVfcGVyX3N1YnNsaWNlOwo+Pj4g Kwo+Pj4gKwlpbnRlbF9zc2V1X3NldF9pbmZvKHNzZXUsIGh3ZWlnaHQ4KHNzZXUtPnNsaWNlX21h c2spLAo+Pj4gKwkJCSAgICBod2VpZ2h0OChzdWJzbGljZV9tYXNrKSwKPj4+ICsJCQkgICAgc3Nl dS0+ZXVfcGVyX3N1YnNsaWNlKTsKPj4gUGVyc29uYWwgcHJlZmVyZW5jZTogY291bGQgdXNlIGEg bG9jYWwgdmFyaWFibGUgZm9yIGV1X3Blcl9zdWJzbGljZQo+PiBhYm92ZSB0byBhdm9pZCBzZXR0 aW5nIGl0IHRvIGl0c2VsZiBoZXJlLgo+IFllYWggdGhpcyBpcyBhIGJpdCB1Z2x5Li4uIEknbGwg Y2hhbmdlIGl0Lgo+Cj4gVGhhbmtzIGZvciB0aGUgZmVlZGJhY2shCj4gU3R1YXJ0Cj4KPj4gRGFu aWVsZQo+Pgo+Pj4gICAgCj4+PiAgICAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7 IHMrKykgewo+Pj4gKwkJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIHMsIHN1YnNsaWNl X21hc2spOwo+Pj4gKwo+Pj4gICAgCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xp Y2VzOyBzcysrKSB7Cj4+PiAgICAJCQlpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgcywgc3MsCj4+ PiAgICAJCQkJCSAgICgxVUwgPDwgc3NldS0KPj4+PiBldV9wZXJfc3Vic2xpY2UpIC0gMSk7CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4