From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC] drm/i915: adding state checker for gamma lut values Date: Tue, 26 Mar 2019 16:28:05 +0200 Message-ID: <20190326142805.GW3888@intel.com> References: <1552634188-7372-1-git-send-email-swati2.sharma@intel.com> <87o96ch3jm.fsf@intel.com> <6b816617-af80-afdf-9379-b33367cece80@intel.com> <87r2b1en0r.fsf@intel.com> <1543a4b7-1258-33f1-68ea-eef1b033d17d@intel.com> <878sx3s2m3.fsf@intel.com> <2093da61-9a50-016a-ca2a-b4ccddee4cf1@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9C0B06E04D for ; Tue, 26 Mar 2019 14:28:10 +0000 (UTC) Content-Disposition: inline In-Reply-To: <2093da61-9a50-016a-ca2a-b4ccddee4cf1@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Swati2" Cc: Jani Nikula , "daniel.vetter@ffwll.ch" , intel-gfx@lists.freedesktop.org, "Nautiyal, Ankit K" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXIgMjYsIDIwMTkgYXQgMDc6NDg6MjdQTSArMDUzMCwgU2hhcm1hLCBTd2F0aTIg d3JvdGU6Cj4gT24gMjUtTWFyLTE5IDM6MjIgUE0sIEphbmkgTmlrdWxhIHdyb3RlOgo+ID4gT24g TW9uLCAyNSBNYXIgMjAxOSwgIlNoYXJtYSwgU3dhdGkyIiA8c3dhdGkyLnNoYXJtYUBpbnRlbC5j b20+IHdyb3RlOgo+ID4+IE9uIDIwLU1hci0xOSA2OjExIFBNLCBKYW5pIE5pa3VsYSB3cm90ZToK PiA+Pj4gT24gV2VkLCAyMCBNYXIgMjAxOSwgIlNoYXJtYSwgU3dhdGkyIiA8c3dhdGkyLnNoYXJt YUBpbnRlbC5jb20+IHdyb3RlOgo+ID4+Pj4gT24gMTUtTWFyLTE5IDM6MTcgUE0sIE5pa3VsYSwg SmFuaSB3cm90ZToKPiA+Pj4+PiBPbiBGcmksIDE1IE1hciAyMDE5LCBzd2F0aTIuc2hhcm1hQGlu dGVsLmNvbSB3cm90ZToKPiA+Pj4+Pj4gRnJvbTogU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1h QGludGVsLmNvbT4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gQWRkZWQgc3RhdGUgY2hlY2tlciB0byB2YWxp ZGF0ZSBnYW1tYV9sdXQgdmFsdWVzLiBUaGlzCj4gPj4+Pj4+IHJlYWRzIGhhcmR3YXJlIHN0YXRl LCBhbmQgY29tcGFyZXMgdGhlIG9yaWdpbmFsbHkgcmVxdWVzdGVkCj4gPj4+Pj4+IHN0YXRlIHRv IHRoZSBzdGF0ZSByZWFkIGZyb20gaGFyZHdhcmUuCj4gPj4+Pj4+Cj4gPj4+Pj4+IFRoaXMgaW1w bGVtZW50YXRpb24gY2FuIGJlIHVzZWQgZm9yIEdlbjkrIHBsYXRmb3JtcywKPiA+Pj4+Pj4gSSBo YXZlbid0IGltcGxlbWVudGVkIGl0IGZvciBsZWdhY3kgcGxhdGZvcm1zLiBKdXN0IHdhbnQgdG8g Z2V0Cj4gPj4+Pj4+IGZlZWRiYWNrIGlmIHRoaXMgaXMgdGhlIHJpZ2h0IGFwcHJvYWNoIHRvIGZv bGxvdy4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gQWxzbywgaW52ZXJzZSBmdW5jdGlvbiBvZiBkcm1fY29s b3JfbHV0X2V4dHJhY3QgaXMgbWlzc2luZwo+ID4+Pj4+PiB0byBjb252ZXJ0IGhhcmR3YXJlIHJl YWQgdmFsdWVzIGJhY2sgdG8gdXNlciB2YWx1ZXMuCj4gPj4+Pj4+IFRoaW5raW5nIGZvciB0aGF0 LiBJIGhhdmUgYWRkZWQgYWxsICJUT0RPcyIgYW5kICJQbGFjZWhvbGRlcnMiLgo+ID4+Pj4+Pgo+ ID4+Pj4+PiBBbm90aGVyIGFwcHJvYWNoOgo+ID4+Pj4+PiBTdG9yaW5nICJ3b3JkIiB0byBiZSB3 cml0dGVuIGludG8gaGFyZHdhcmUgaW4gZGV2X3ByaXYgYW5kCj4gPj4+Pj4+IGluc3RlYWQgb2Yg Y29tcGFyaW5nIGJsb2IsIGNvbXBhcmluZyAid29yZCI/IEluIGRldl9wcml2LAo+ID4+Pj4+PiBv bmx5IHBvaW50ZXIgd2lsbCBiZSB0aGVyZSAoc29tZXRoaW5nIGxpa2UgKmdhbW1hX3dvcmQpLgo+ ID4+Pj4+IFlvdSBjYW4ndCBzdG9yZSBpdCBpbiBkZXZfcHJpdiBiZWNhdXNlIGl0J3MgY3J0YyBz dGF0ZSBzcGVjaWZpYwo+ID4+Pj4+IGRhdGEuIEV2ZW4gaWYgc3RvcmVkIGluIGNydGMgc3RhdGUs IHRoZSBhcHByb2FjaCBkb2Vzbid0IGhlbHAgdGhlCj4gPj4+Pj4gaW5pdGlhbCBodyBzdGF0ZSBy ZWFkb3V0IGFuZCB0YWtlb3Zlci4KPiA+Pj4+Pgo+ID4+Pj4+IFBsZWFzZSB1c2UgaW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdCBmb3IgaTkxNSBwYXRjaGVzLgo+ID4+Pj4+Cj4gPj4+Pj4+IEZvciB0aGlz IHRvbywgSSB3aWxsIHNlbmQgYSBwYXRjaCB0byBtYWtlIGl0IG1vcmUgY2xlYXIuCj4gPj4+Pj4+ Cj4gPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFN3YXRpIFNoYXJtYSA8c3dhdGkyLnNoYXJtYUBpbnRl bC5jb20+Cj4gPj4+Pj4+IC0tLQo+ID4+Pj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgIHwgICAxICsKPiA+Pj4+Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMgICB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ ID4+Pj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDUwICsr KysrKysrKysrKysrCj4gPj4+Pj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCAgICAgfCAgIDEgKwo+ID4+Pj4+PiAgICAgNCBmaWxlcyBjaGFuZ2VkLCAxNzMgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKPiA+Pj4+Pj4KPiA+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gPj4+Pj4+IGluZGV4IGM0ZmZlMTkuLmI0MWJmYWEgMTAwNjQ0Cj4gPj4+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+Pj4+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+Pj4+PiBAQCAtMzM0LDYgKzMzNCw3IEBAIHN0cnVj dCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiA+Pj4+Pj4gICAgIAkgKiBpbnZvbHZlZCB3aXRo IHRoZSBzYW1lIGNvbW1pdC4KPiA+Pj4+Pj4gICAgIAkgKi8KPiA+Pj4+Pj4gICAgIAl2b2lkICgq bG9hZF9sdXRzKShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4g Pj4+Pj4+ICsJdm9pZCAoKmdldF9jb25maWcpKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKTsKPiA+Pj4+PiBUaGUgbmFtZSBpcyB0b28gZ2VuZXJpYy4KPiA+Pj4+Pgo+ID4+Pj4+ PiAgICAgfTsKPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiAgICAgI2RlZmluZSBDU1JfVkVSU0lPTiht YWpvciwgbWlub3IpCSgobWFqb3IpIDw8IDE2IHwgKG1pbm9yKSkKPiA+Pj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvci5jCj4gPj4+Pj4+IGluZGV4IGRhN2EwN2QuLmE1MTVlOWYgMTAwNjQ0 Cj4gPj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiA+Pj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID4+Pj4+PiBAQCAt NzQsNiArNzQsMTEgQEAKPiA+Pj4+Pj4gICAgICNkZWZpbmUgSUxLX0NTQ19DT0VGRl8xXzAJCVwK PiA+Pj4+Pj4gICAgIAkoKDcgPDwgMTIpIHwgSUxLX0NTQ19DT0VGRl9GUChDVE1fQ09FRkZfMV8w LCA4KSkKPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiArLyogTWFzayB0byBleHRyYWN0IFJHQiB2YWx1 ZXMgZnJvbSByZWdpc3RlcnMgKi8KPiA+Pj4+Pj4gKyNkZWZpbmUgQ09MT1JfQkxVRV9NQVNLICAg ICAgICAgMHgwMDAwMDNGRiAgICAgICAgICAgICAgLyogOTowICovCj4gPj4+Pj4+ICsjZGVmaW5l IENPTE9SX0dSRUVOX01BU0sgICAgICAgIDB4MDAwRkZDMDAgICAgICAgICAgICAgIC8qIDE5OjEw ICovCj4gPj4+Pj4+ICsjZGVmaW5lIENPTE9SX1JFRF9NQVNLICAgICAgICAgIDB4M0ZGMDAwMDAg ICAgICAgICAgICAgIC8qIDI5OjIwICovCj4gPj4+Pj4gVGhlc2UgYmVsb25nIGluIGk5MTVfcmVn LmgsIGFuZCB5b3UgbmVlZCBwbGF0Zm9ybSBzcGVjaWZpYyBzaGlmdHMgYW5kCj4gPj4+Pj4gbWFz a3MuIFRoZSBjb2RlIHRoYXQgd3JpdGVzIHRoZSByZWdpc3RlcnMgc2VlbXMgdG8gdXNlIG1hZ2lj IG51bWJlcnMuLi4KPiA+Pj4+Pgo+ID4+Pj4+PiArCj4gPj4+Pj4+ICAgICBzdGF0aWMgYm9vbCBs dXRfaXNfbGVnYWN5KGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqbHV0KQo+ID4+Pj4+ PiAgICAgewo+ID4+Pj4+PiAgICAgCXJldHVybiBkcm1fY29sb3JfbHV0X3NpemUobHV0KSA9PSBM RUdBQ1lfTFVUX0xFTkdUSDsKPiA+Pj4+Pj4gQEAgLTY3Miw2ICs2NzcsOTcgQEAgc3RhdGljIHZv aWQgY2hlcnJ5dmlld19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCj4gPj4+Pj4+ICAgICAJaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoY3J0Y19zdGF0 ZSwgTlVMTCk7Cj4gPj4+Pj4+ICAgICB9Cj4gPj4+Pj4+ICAgICAKPiA+Pj4+Pj4gK3N0YXRpYyB2 b2lkIGJkd19nZXRfZ2FtbWFfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLCB1MzIgb2Zmc2V0KQo+ID4+Pj4+PiArewo+ID4+Pj4+PiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4+Pj4+PiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiA+Pj4+Pj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsK PiA+Pj4+Pj4gKwl1MzIgaSwgdG1wLCBsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5j b2xvci5nYW1tYV9sdXRfc2l6ZTsKPiA+Pj4+Pj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gPj4+Pj4+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gTlVMTDsKPiA+ Pj4+Pj4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqYmxvYl9kYXRhOwo+ID4+Pj4+PiArCj4gPj4+ Pj4+ICsJV0FSTl9PTihvZmZzZXQgJiB+UEFMX1BSRUNfSU5ERVhfVkFMVUVfTUFTSyk7Cj4gPj4+ Pj4+ICsKPiA+Pj4+Pj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLAo+ID4+Pj4+ PiArCQkJKG9mZnNldCA/IFBBTF9QUkVDX1NQTElUX01PREUgOiAwKSB8Cj4gPj4+Pj4+ICsJCQlQ QUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCB8Cj4gPj4+Pj4+ICsJCQlvZmZzZXQpOwo+ID4+Pj4+PiAr Cj4gPj4+Pj4+ICsJYmxvYiA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYihkZXYsCj4gPj4+Pj4+ ICsJCQlzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICogbHV0X3NpemUsCj4gPj4+Pj4+ICsJ CQlOVUxMKTsKPiA+Pj4+Pj4gKwlpZiAoSVNfRVJSKGJsb2IpKQo+ID4+Pj4+PiArCQlyZXR1cm47 Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwlibG9iX2RhdGEgPSBibG9iLT5kYXRhOwo+ID4+Pj4+PiAr Cj4gPj4+Pj4+ICsJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKPiA+Pj4+Pj4gKwkJ dG1wID0gSTkxNV9SRUFEKFBSRUNfUEFMX0RBVEEocGlwZSkpOwo+ID4+Pj4+PiArCQkvKgo+ID4+ Pj4+PiArCQkgKiBUT0RPOiBjb252ZXJ0IFJHQiB2YWx1ZSByZWFkIGZyb20gcmVnaXN0ZXIgaW50 byBjb3JyZXNwb25kaW5nIHVzZXIgdmFsdWUgdXNpbmcKPiA+Pj4+Pj4gKwkJICogc29tZSB3cmFw cGVyIGxpa2UgZHJtX2NvbG9yX2x1dF9wdXQoKSAob3IpIGludGVsX2NvbG9yX2x1dF9wdXQoKSBz byB0aGF0IGl0Cj4gPj4+Pj4+ICsJCSAqIGNhbiBiZSBjb21wYXJlZCBsYXRlci4KPiA+Pj4+Pj4g KwkJICovCj4gPj4+Pj4gWWVhaCwgeW91J2xsIG5lZWQgdGhpcy4KPiA+Pj4+IENhbiB5b3UgcGxl YXNlIGhlbHAgaW4gdGhpcz8KPiA+Pj4gU29tZXRoaW5nIGxpa2UgdGhpczoKPiA+Pj4KPiA+Pj4g LyogY29udmVydCBodyB2YWx1ZSB3aXRoIGdpdmVuIGJpdF9wcmVjaXNpb24gdG8gbHV0IHByb3Bl cnR5IHZhbCAqLwo+ID4+PiB1MzIgZHJtX2NvbG9yX2x1dF9wYWNrKHUzMiB2YWwsIHUzMiBiaXRf cHJlY2lzaW9uKQo+ID4+PiB7Cj4gPj4+IAl1MzIgbWF4ID0gMHhmZmZmID4+ICgxNiAtIGJpdF9w cmVjaXNpb24pOwo+ID4+Pgo+ID4+PiAJdmFsID0gY2xhbXBfdmFsKHZhbCwgMCwgbWF4KTsKPiA+ Pj4KPiA+Pj4gCWlmIChiaXRfcHJlY2lzaW9uIDwgMTYpCj4gPj4+IAkJdmFsIDw8PSAxNiAtIGJp dF9wcmVjaXNpb247Cj4gPj4+Cj4gPj4+IAlyZXR1cm4gdmFsOwo+ID4+PiB9Cj4gPj4+Cj4gPj4+ IC8qIGNvbXBhcmUgdHdvIGx1dCBwcm9wZXJ0eSB2YWx1ZXMgd2l0aCBnaXZlbiBiaXRfcHJlY2lz aW9uICovCj4gPj4+IGJvb2wgZHJtX2NvbG9yX2x1dF9tYXRjaCh1MzIgYSwgdTMyIGIsIHUzMiBi aXRfcHJlY2lzaW9uKQo+ID4+PiB7Cj4gPj4+IAl1MzIgZXJyID0gMHhmZmZmID4+IGJpdF9wcmVj aXNpb247Cj4gPj4+Cj4gPj4+IAlyZXR1cm4gYWJzKChsb25nKWEgLSBiKSA8PSBlcnI7Cj4gPj4+ IH0KPiA+PiBBbHNvLCBob3cgdG8gcGFzcyAiYml0X3ByZWNpc2lvbiIgc2luY2UgaW4gcGxhdGZv cm0gc3BlY2lmaWMgbG9hZCBsdXRzLAo+ID4+IGl0cyBoYXJkIGNvZGVkLiBEbyB3ZSBzdG9yZSBw bGF0Zm9ybSBzcGVjaWZpYyBiaXQgcHJlY2lzaW9uPwo+ID4gWW91IGNvdWxkIGFkZCBhIGZ1bmN0 aW9uIGluIGludGVsX2NvbG9yLmMgdGhhdCByZXR1cm5zIHRoZSBiaXQKPiA+IHByZWNpc2lvbi4K PiAKPiBIaSBKYW5pLAo+IE9uZSBkb3VidCBoZXJlLiBJbnN0ZWFkIG9mIGFkZGluZyBmdW5jdGlv biBpbiBpbnRlbF9jb2xvci5jLCBjYW4gd2UgYWRkCj4gYml0X3ByZWNpc2lvbiBpbiBpOTE1X3Bj aS5jIGZvciAuY29sb3IgYW5kIGNvcnJlc3BvbmRpbmdseSBhZGRlZCBhIG5ldyBtZW1iZXIKPiBp biBzdHJ1Y3QgY29sb3JfbHV0cyBpbnNpZGUgc3RydWN0IGludGVsX2RldmljZV9pbmZvLgoKSSB3 b3VsZG4ndCBib3RoZXIuIEkgdGhpbmsgdGhhdCB3aG9sZSBkZXZpY2UgaW5mbyBjb2xvcnMgdGhp bmcgbXVzdApkaWUgYXMgc29vbiBhcyB3ZSBzdGFydCB0byBleHBvc2UgbXVsdGlwbGUgZ2FtbWEg bW9kZXMgcGVyIHBsYXRmb3JtLgoKPiBXaXRoIHRoaXMgd2UgY2FuLCBmZXRjaAo+IGJpdF9wcmVj aXNpb24gZnJvbSBkZXZfcHJpdiBpbnNpZGUgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZSBvbmx5 LiBIb3dldmVyIGlzc3VlIHdpbGwgYmUgZm9yCj4gbGVnYWN5IGdhbW1hIChvcikgYXMgeW91IHNh aWQgaW5zaWRlIGludGVsX2NvbG9yIHdlIHNob3VsZCB3cml0ZSBmdW5jdGlvbi4KPiBZb3VyIGNv bW1lbnRzPwo+IAo+ID4KPiA+PiBBbHNvLCBob3cgdG8gaGFuZGxlICJlbHNlIiBjYXNlIG9mIGxv YWQgbHV0cyB3aGVyZSB3ZSBhcmUgY3JlYXRpbmcgdGhlIHdvcmQKPiA+PiB3L28gcm91bmRpbmcg b2ZmLgo+ID4gSW4gZHJtX2NvbG9yX2x1dF9wYWNrKCkgd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0 aGUgaWYgdGhlcmUgYXQgYWxsLCBpdCdzCj4gPiBqdXN0IGZvciBjbGFyaXR5IGFuZCBzaW1pbGFy aXR5IHdpdGggdGhlIGV4dHJhY3QuIGJpdF9wcmVjaXNpb24gPT0gMTYKPiA+IGxlYWRzIHRvIDAg c2hpZnQuCj4gPgo+ID4gQW5kIGluIGRybV9jb2xvcl9sdXRfbWF0Y2goKSBlcnIgYmVjb21lcyAw IGZvciAxNi1iaXQgcHJlY2lzaW9uLgo+ID4KPiA+IEJSLAo+ID4gSmFuaS4KPiA+Cj4gPj4+IEkg ZGlkbid0IGRvdWJsZSBjaGVjayB0aGUgbWF0aCwgYnV0IGl0J3MgcHJvYmFibHkgY2xvc2UgZW5v dWdoIGZvcgo+ID4+PiBzdGFydGVycy4gOykKPiA+Pj4KPiA+Pj4KPiA+Pj4KPiA+Pj4gQlIsCj4g Pj4+IEphbmkuCj4gPj4+Cj4gPj4+Cj4gPj4+Cj4gPj4+Cj4gPj4+Pj4+ICsJCWJsb2JfZGF0YVtp XS5yZWQgPSAodG1wICYgQ09MT1JfUkVEX01BU0spID4+IDIwOwo+ID4+Pj4+PiArCQlibG9iX2Rh dGFbaV0uZ3JlZW4gPSAodG1wICYgQ09MT1JfR1JFRU5fTUFTSykgPj4gMTA7Cj4gPj4+Pj4+ICsJ CWJsb2JfZGF0YVtpXS5ibHVlID0gdG1wICYgQ09MT1JfQkxVRV9NQVNLOwo+ID4+Pj4+PiArCX0K PiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIDAp Owo+ID4+Pj4+PiArCj4gPj4+Pj4+ICsJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBibG9i Owo+ID4+Pj4+PiArfQo+ID4+Pj4+PiArCj4gPj4+Pj4+ICtzdGF0aWMgdm9pZCBpOXh4X2dldF9j b25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPj4+Pj4gUGxlYXNl IGluY2x1ZGUgKGRlKWdhbW1hIG9yIGNvbG9yIGluIHRoZSBmdW5jdGlvbiBuYW1lcy4KPiA+Pj4+ Pgo+ID4+Pj4+PiArewo+ID4+Pj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4+Pj4+PiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiA+Pj4+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiA+Pj4+Pj4gKwl1MzIg aSwgdG1wOwo+ID4+Pj4+PiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+Pj4+Pj4g KwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBOVUxMOwo+ID4+Pj4+PiArCXN0cnVj dCBkcm1fY29sb3JfbHV0ICpibG9iX2RhdGE7Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwlibG9iID0g ZHJtX3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGRldiwKPiA+Pj4+Pj4gKwkJCQkJc2l6ZW9mKHN0cnVj dCBkcm1fY29sb3JfbHV0KSAqIDI1NiwKPiA+Pj4+Pj4gKwkJCQkJTlVMTCk7Cj4gPj4+Pj4+ICsJ aWYgKElTX0VSUihibG9iKSkKPiA+Pj4+Pj4gKwkJcmV0dXJuOwo+ID4+Pj4+PiArCj4gPj4+Pj4+ ICsJYmxvYl9kYXRhID0gYmxvYi0+ZGF0YTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCWZvciAoaSA9 IDA7IGkgPCAyNTY7IGkrKykgewo+ID4+Pj4+PiArCQlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpKQo+ ID4+Pj4+PiArCQkJdG1wID0gSTkxNV9SRUFEKFBBTEVUVEUocGlwZSwgaSkpOwo+ID4+Pj4+PiAr CQllbHNlCj4gPj4+Pj4+ICsJCQl0bXAgPSBJOTE1X1JFQUQoTEdDX1BBTEVUVEUocGlwZSwgaSkp Owo+ID4+Pj4+PiArCQkvKgo+ID4+Pj4+PiArCQkgKiBUT0RPOiBjb252ZXJ0IFJHQiB2YWx1ZSBy ZWFkIGZyb20gcmVnaXN0ZXIgaW50byBjb3JyZXNwb25kaW5nIHVzZXIgdmFsdWUgdXNpbmcKPiA+ Pj4+Pj4gKwkJICogc29tZSB3cmFwcGVyIGxpa2UgZHJtX2NvbG9yX2x1dF9wdXQoKSAob3IpIGlu dGVsX2NvbG9yX2x1dF9wdXQoKSBzbyB0aGF0IGl0Cj4gPj4+Pj4+ICsJCSAqIGNhbiBiZSBjb21w YXJlZCBsYXRlci4KPiA+Pj4+Pj4gKwkJICovCj4gPj4+Pj4+ICsJCWJsb2JfZGF0YVtpXS5yZWQg PSAodG1wICYgQ09MT1JfUkVEX01BU0spID4+IDIwOwo+ID4+Pj4+PiArCQlibG9iX2RhdGFbaV0u Z3JlZW4gPSAodG1wICYgQ09MT1JfR1JFRU5fTUFTSykgPj4gMTA7Cj4gPj4+Pj4+ICsJCWJsb2Jf ZGF0YVtpXS5ibHVlID0gKHRtcCAmIENPTE9SX0JMVUVfTUFTSyk7Cj4gPj4+Pj4+ICsJfQo+ID4+ Pj4+PiArCj4gPj4+Pj4+ICsJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBibG9iOwo+ID4+ Pj4+PiArfQo+ID4+Pj4+PiArCj4gPj4+Pj4+ICtzdGF0aWMgdm9pZCBpY2xfZ2V0X2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+Pj4+Pj4gK3sKPiA+Pj4+Pj4g KwkvKgo+ID4+Pj4+PiArCSAqIFRPRE86IHBsYWNlaG9sZGVyIGZvciBkZWdhbW1hIHZhbGlkYXRp b24KPiA+Pj4+Pj4gKwkgKiBnbGtfZ2V0X2RlZ2FtbWFfY29uZmlnKGNydGNfc3RhdGUsIDApOwo+ ID4+Pj4+PiArCSAqLwo+ID4+Pj4+PiArCj4gPj4+Pj4+ICsJaWYgKGNydGNfc3RhdGVfaXNfbGVn YWN5X2dhbW1hKGNydGNfc3RhdGUpKQo+ID4+Pj4+PiArCQlpOXh4X2dldF9jb25maWcoY3J0Y19z dGF0ZSk7Cj4gPj4+Pj4+ICsJZWxzZQo+ID4+Pj4+PiArCQliZHdfZ2V0X2dhbW1hX2NvbmZpZyhj cnRjX3N0YXRlLCAwKTsKPiA+Pj4+Pj4gK30KPiA+Pj4+Pj4gKwo+ID4+Pj4+PiAgICAgdm9pZCBp bnRlbF9jb2xvcl9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4gPj4+Pj4+ICAgICB7Cj4gPj4+Pj4+ICAgICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gPj4+ Pj4+IEBAIC02NzksNiArNzc1LDEzIEBAIHZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4+Pj4+PiAgICAgCWRldl9w cml2LT5kaXNwbGF5LmxvYWRfbHV0cyhjcnRjX3N0YXRlKTsKPiA+Pj4+Pj4gICAgIH0KPiA+Pj4+ Pj4gICAgIAo+ID4+Pj4+PiArdm9pZCBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4+Pj4+PiArewo+ID4+Pj4+PiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj LT5kZXYpOwo+ID4+Pj4+PiArCj4gPj4+Pj4+ICsJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NvbmZp ZyhjcnRjX3N0YXRlKTsKPiA+Pj4+PiBUaGlzIHdpbGwgb29wcyBvbiBwbGF0Zm9ybXMgd2hlcmUg eW91IGhhdmVuJ3QgaW1wbGVtZW50ZWQgaXQgeWV0Lgo+ID4+Pj4+Cj4gPj4+Pj4+ICt9Cj4gPj4+ Pj4+ICsKPiA+Pj4+Pj4gICAgIHZvaWQgaW50ZWxfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4+Pj4+PiAgICAgewo+ID4+Pj4+PiAgICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjLT5kZXYpOwo+ID4+Pj4+PiBAQCAtODMzLDIyICs5MzYsMzQgQEAgdm9pZCBpbnRl bF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4+Pj4+PiAgICAgCj4gPj4+ Pj4+ICAgICAJZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZSgmY3J0Yy0+YmFzZSwgMjU2KTsK PiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiArCS8qCj4gPj4+Pj4+ICsJICogVE9ETzogSW4gdGhlIGZv bGxvd2luZyBpZiBsYWRkZXIsIGtlcHQgcGxhY2Vob2xkZXJzCj4gPj4+Pj4+ICsJICogZm9yIGV4 dGVuZGluZyBsdXQgdmFsaWRhdGlvbiBmb3IgbGVnYWN5IHBsYXRmb3Jtcy4KPiA+Pj4+Pj4gKwkg Ki8KPiA+Pj4+PiBJIHRoaW5rIGFkZGluZyB0aGUgcGxhY2Vob2xkZXIgY29tbWVudHMgaXMgdG9v IG1lc3N5Lgo+ID4+Pj4+Cj4gPj4+Pj4+ICAgICAJaWYgKEhBU19HTUNIKGRldl9wcml2KSkgewo+ ID4+Pj4+PiAtCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPj4+Pj4+ICsJCWlmIChJ U19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ID4+Pj4+PiAgICAgCQkJZGV2X3ByaXYtPmRpc3Bs YXkubG9hZF9sdXRzID0gY2hlcnJ5dmlld19sb2FkX2x1dHM7Cj4gPj4+Pj4+IC0JCWVsc2UKPiA+ Pj4+Pj4gKwkJCSAvKiBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gY2hlcnJ5dmlld19n ZXRfY29uZmlnOyAqLwo+ID4+Pj4+PiArCQl9IGVsc2Ugewo+ID4+Pj4+PiAgICAgCQkJZGV2X3By aXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaTl4eF9sb2FkX2x1dHM7Cj4gPj4+Pj4+ICsJCQlkZXZf cHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gaTl4eF9nZXRfY29uZmlnOwo+ID4+Pj4+PiArCQl9 Cj4gPj4+Pj4+ICAgICAKPiA+Pj4+Pj4gICAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuY29sb3JfY29t bWl0ID0gaTl4eF9jb2xvcl9jb21taXQ7Cj4gPj4+Pj4+ICAgICAJfSBlbHNlIHsKPiA+Pj4+Pj4g LQkJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKQo+ID4+Pj4+PiArCQlpZiAoSVNfSUNFTEFLRShk ZXZfcHJpdikpIHsKPiA+Pj4+Pj4gICAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9 IGljbF9sb2FkX2x1dHM7Cj4gPj4+Pj4+IC0JCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3By aXYpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ID4+Pj4+PiArCQkJZGV2X3ByaXYtPmRp c3BsYXkuZ2V0X2NvbmZpZyA9IGljbF9nZXRfY29uZmlnOwo+ID4+Pj4+PiArCQl9IGVsc2UgaWYg KElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4g Pj4+Pj4+ICAgICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBnbGtfbG9hZF9sdXRz Owo+ID4+Pj4+PiAtCQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgfHwgSVNfQlJP QURXRUxMKGRldl9wcml2KSkKPiA+Pj4+Pj4gKwkJCS8qIGRldl9wcml2LT5kaXNwbGF5LmdldF9j b25maWcgPSBnbGtfZ2V0X2NvbmZpZzsgKi8KPiA+Pj4+Pj4gKwkJfSBlbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ID4+Pj4+PiAg ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gYnJvYWR3ZWxsX2xvYWRfbHV0czsK PiA+Pj4+Pj4gLQkJZWxzZQo+ID4+Pj4+PiArCQkJLyogZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Nv bmZpZyA9IGJyb2Fkd2VsbF9nZXRfY29uZmlnOyAqLwo+ID4+Pj4+PiArCQl9IGVsc2Ugewo+ID4+ Pj4+PiAgICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaTl4eF9sb2FkX2x1dHM7 Cj4gPj4+Pj4+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gaTl4eF9nZXRfY29u ZmlnOwo+ID4+Pj4+PiArCQl9Cj4gPj4+Pj4+ICAgICAKPiA+Pj4+Pj4gICAgIAkJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkKPiA+Pj4+Pj4gICAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmNv bG9yX2NvbW1pdCA9IHNrbF9jb2xvcl9jb21taXQ7Cj4gPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiA+Pj4+Pj4gaW5kZXggOTYzYjRiZC4uMTY1ZDc5NyAxMDA2NDQKPiA+ Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4+Pj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4+Pj4+PiBAQCAt ODIxMiw2ICs4MjEyLDExIEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+ID4+Pj4+PiAgICAgCj4gPj4+Pj4+ICAgICAJaTl4eF9nZXRf cGlwZV9jb2xvcl9jb25maWcocGlwZV9jb25maWcpOwo+ID4+Pj4+PiAgICAgCj4gPj4+Pj4+ICsJ LyoKPiA+Pj4+Pj4gKwkgKiBUT0RPOiBZZXQgdG8gaW1wbGVtZW50IGZvciBsZWdhY3kgcGxhdGZv cm1zCj4gPj4+Pj4+ICsJICogaW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4g Pj4+Pj4+ICsJICovCj4gPj4+Pj4+ICsKPiA+Pj4+PiBJJ20gbm90IHN1cmUgYWJvdXQgYWRkaW5n IHRoZXNlIGNvbW1lbnRzIGVpdGhlci4KPiA+Pj4+Pgo+ID4+Pj4+PiAgICAgCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgNCkKPiA+Pj4+Pj4gICAgIAkJcGlwZV9jb25maWctPmRvdWJsZV93aWRl ID0gdG1wICYgUElQRUNPTkZfRE9VQkxFX1dJREU7Cj4gPj4+Pj4+ICAgICAKPiA+Pj4+Pj4gQEAg LTkyODQsNiArOTI4OSwxMSBAQCBzdGF0aWMgYm9vbCBpcm9ubGFrZV9nZXRfcGlwZV9jb25maWco c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPj4+Pj4+ICAgICAKPiA+Pj4+Pj4gICAgIAlpOXh4 X2dldF9waXBlX2NvbG9yX2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4gPj4+Pj4+ICAgICAKPiA+Pj4+ Pj4gKwkvKgo+ID4+Pj4+PiArCSAqIFRPRE86IFlldCB0byBpbXBsZW1lbnQgZm9yIGxlZ2FjeSBw bGF0Zm9ybXMKPiA+Pj4+Pj4gKwkgKiBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmln KTsKPiA+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4gKwo+ID4+Pj4+PiAgICAgCWlmIChJOTE1X1JFQUQo UENIX1RSQU5TQ09ORihjcnRjLT5waXBlKSkgJiBUUkFOU19FTkFCTEUpIHsKPiA+Pj4+Pj4gICAg IAkJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7Cj4gPj4+Pj4+ICAgICAJCWVudW0gaW50 ZWxfZHBsbF9pZCBwbGxfaWQ7Cj4gPj4+Pj4+IEBAIC05OTMyLDYgKzk5NDIsOCBAQCBzdGF0aWMg Ym9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ Pj4+Pj4gICAgIAkJaTl4eF9nZXRfcGlwZV9jb2xvcl9jb25maWcocGlwZV9jb25maWcpOwo+ID4+ Pj4+PiAgICAgCX0KPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiArCWludGVsX2NvbG9yX2dldF9jb25m aWcocGlwZV9jb25maWcpOwo+ID4+Pj4+PiArCj4gPj4+Pj4+ICAgICAJcG93ZXJfZG9tYWluID0g UE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBpcGUpOwo+ID4+Pj4+PiAgICAg CWlmIChpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9k b21haW4pKSB7Cj4gPj4+Pj4+ICAgICAJCVdBUk5fT04ocG93ZXJfZG9tYWluX21hc2sgJiBCSVRf VUxMKHBvd2VyX2RvbWFpbikpOwo+ID4+Pj4+PiBAQCAtMTE5OTAsNiArMTIwMDIsMzQgQEAgc3Rh dGljIGJvb2wgZmFzdGJvb3RfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPj4+Pj4+ICAgICAJcmV0dXJuIGZhbHNlOwo+ID4+Pj4+PiAgICAgfQo+ID4+Pj4+PiAg ICAgCj4gPj4+Pj4+ICtzdGF0aWMgYm9vbCBpbnRlbF9jb21wYXJlX2Jsb2Ioc3RydWN0IGRybV9w cm9wZXJ0eV9ibG9iICpibG9iMSwKPiA+Pj4+Pj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmJsb2IyKQo+ID4+Pj4+PiArewo+ID4+Pj4+PiArCXN0cnVjdCBkcm1fY29sb3Jf bHV0ICpzd19sdXQgPSBibG9iMS0+ZGF0YTsKPiA+Pj4+Pj4gKwlzdHJ1Y3QgZHJtX2NvbG9yX2x1 dCAqaHdfbHV0ID0gYmxvYjItPmRhdGE7Cj4gPj4+Pj4+ICsJaW50IHN3X2x1dF9zaXplLCBod19s dXRfc2l6ZTsKPiA+Pj4+Pj4gKwlpbnQgaTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCXN3X2x1dF9z aXplID0gZHJtX2NvbG9yX2x1dF9zaXplKGJsb2IxKTsKPiA+Pj4+Pj4gKwlod19sdXRfc2l6ZSA9 IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iMik7Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwlpZiAoc3df bHV0X3NpemUgIT0gaHdfbHV0X3NpemUpIHsKPiA+Pj4+Pj4gKwkJRFJNX0RFQlVHX0tNUygiSW52 YWxpZCBMVVQgc2l6ZTsgZ290ICVkLCBleHBlY3RlZCAlZFxuIiwgaHdfbHV0X3NpemUsIHN3X2x1 dF9zaXplKTsKPiA+Pj4+PiBQbGVhc2UgZG9uJ3QgYWRkIHRoZXNlIGRlYnVnIGxvZ3MgaGVyZS4g SW5zdGVhZCwgYWRkIGEgc2VwYXJhdGUgZnVuY3Rpb24KPiA+Pj4+PiB0byBsb2cgZXJyb3JzIGF0 IHRoZSBoaWdoZXIgbGV2ZWwuIENvbnRyYXN0IFBJUEVfQ09ORl9DSEVDS19JTkZPRlJBTUUoKQo+ ID4+Pj4+IGFuZCBwaXBlX2NvbmZpZ19pbmZvZnJhbWVfZXJyKCkuIFRoYXQgY2FuIGNvbWUgYXMg YSBmb2xsb3ctdXAKPiA+Pj4+PiBpbXByb3ZlbWVudCwgYnV0IHRoZSBkZWJ1ZyBsb2dzIGhlcmUg YXJlIHVubmVjZXNzYXJ5Lgo+ID4+Pj4+Cj4gPj4+Pj4+ICsJCXJldHVybiBmYWxzZTsKPiA+Pj4+ Pj4gKwl9Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgc3dfbHV0X3NpemU7 IGkrKykgewo+ID4+Pj4+PiArCQlpZiAoaHdfbHV0W2ldLnJlZCAhPSBzd19sdXRbaV0ucmVkIHx8 Cj4gPj4+Pj4+ICsJCSAgICBod19sdXRbaV0uYmx1ZSAhPSBzd19sdXRbaV0uYmx1ZSB8fAo+ID4+ Pj4+PiArCQkgICAgaHdfbHV0W2ldLmdyZWVuICE9IHN3X2x1dFtpXS5ncmVlbikgewo+ID4+Pj4+ PiArCQkJRFJNX0RFQlVHX0tNUygiSW52YWxpZCBMVVQgdmFsdWU7IHN3X2x1dCB2YWx1ZSBkb2Vz bid0IG1hdGNoIGh3X2x1dCB2YWx1ZVxuIik7Cj4gPj4+Pj4+ICsJCQlyZXR1cm4gZmFsc2U7Cj4g Pj4+Pj4+ICsJCX0KPiA+Pj4+Pj4gKwl9Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwlyZXR1cm4gdHJ1 ZTsKPiA+Pj4+Pj4gK30KPiA+Pj4+Pj4gKwo+ID4+Pj4+IEknZCBwdXQgdGhpcyBpbiBpbnRlbF9j b2xvci5jIGFuZCBuYW1lIGl0IHByb3Blcmx5LiBZb3UgY2FuJ3QgdXNlIGl0IHRvCj4gPj4+Pj4g Y29tcGFyZSByYW5kb20gYmxvYnMsIGFuZCB0aGUgY29tcGFyaXNvbiBuZWVkcyB0byB0YWtlIHBs YXRmb3JtIHNwZWNpZmljCj4gPj4+Pj4gYml0IHByZWNpc2lvbiBvZiB0aGUgcmVhZG91dCBpbnRv IGFjY291bnQuCj4gPj4+Pj4KPiA+Pj4+PiBUaGUgYmxvYnMgbWF5IGJlIE5VTEwuCj4gPj4+Pj4K PiA+Pj4+Pj4gICAgIHN0YXRpYyBib29sCj4gPj4+Pj4+ICAgICBpbnRlbF9waXBlX2NvbmZpZ19j b21wYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+Pj4+Pj4gICAgIAkJ CSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+ID4+Pj4+PiBAQCAt MTIxNDgsNiArMTIxODgsMTQgQEAgc3RhdGljIGJvb2wgZmFzdGJvb3RfZW5hYmxlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4+Pj4+ICAgICAJfSBcCj4gPj4+Pj4+ICAg ICB9IHdoaWxlICgwKQo+ID4+Pj4+PiAgICAgCj4gPj4+Pj4+ICsjZGVmaW5lIFBJUEVfQ09ORl9D SEVDS19CTE9CKG5hbWUpIGRvIHsgXAo+ID4+Pj4+IENIRUNLX0xVVCBvciBDSEVDS19DT0xPUl9M VVQgb3Igc29tZXRoaW5nLCBub3QganVzdCBDSEVDS19CTE9CLgo+ID4+Pj4+Cj4gPj4+Pj4+ICsJ aWYgKCFpbnRlbF9jb21wYXJlX2Jsb2IoY3VycmVudF9jb25maWctPm5hbWUsIHBpcGVfY29uZmln LT5uYW1lKSkgeyBcCj4gPj4+Pj4+ICsJCXBpcGVfY29uZmlnX2VycihhZGp1c3QsIF9fc3RyaW5n aWZ5KG5hbWUpLCBcCj4gPj4+Pj4+ICsJCQkJImh3X3N0YXRlIGRvZXNuJ3QgbWF0Y2ggc3dfc3Rh dGVcbiIpOyBcCj4gPj4+Pj4+ICsJCXJldCA9IGZhbHNlOyBcCj4gPj4+Pj4+ICsJfSBcCj4gPj4+ Pj4+ICt9IHdoaWxlICgwKQo+ID4+Pj4+PiArCj4gPj4+Pj4+ICAgICAjZGVmaW5lIFBJUEVfQ09O Rl9RVUlSSyhxdWlyaykgXAo+ID4+Pj4+PiAgICAgCSgoY3VycmVudF9jb25maWctPnF1aXJrcyB8 IHBpcGVfY29uZmlnLT5xdWlya3MpICYgKHF1aXJrKSkKPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiBA QCAtMTIyODcsNiArMTIzMzUsOCBAQCBzdGF0aWMgYm9vbCBmYXN0Ym9vdF9lbmFibGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+Pj4+Pj4gICAgIAlQSVBFX0NPTkZfQ0hF Q0tfSU5GT0ZSQU1FKHNwZCk7Cj4gPj4+Pj4+ICAgICAJUElQRV9DT05GX0NIRUNLX0lORk9GUkFN RShoZG1pKTsKPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiArCVBJUEVfQ09ORl9DSEVDS19CTE9CKGJh c2UuZ2FtbWFfbHV0KTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiAgICAgI3VuZGVmIFBJUEVfQ09ORl9D SEVDS19YCj4gPj4+Pj4+ICAgICAjdW5kZWYgUElQRV9DT05GX0NIRUNLX0kKPiA+Pj4+Pj4gICAg ICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tfQk9PTAo+ID4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+ID4+Pj4+PiBpbmRleCA0MGViYzk0Li5hNmFjZDliIDEwMDY0NAo+ID4+Pj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+Pj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+Pj4+PiBAQCAtMjUxMiw2ICsyNTEyLDcgQEAg aW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KPiA+Pj4+Pj4gICAgIGludCBpbnRlbF9jb2xvcl9jaGVj ayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPj4+Pj4+ICAgICB2b2lk IGludGVsX2NvbG9yX2NvbW1pdChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Cj4gPj4+Pj4+ICAgICB2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPj4+Pj4+ICt2b2lkIGludGVsX2Nv bG9yX2dldF9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ID4+ Pj4+PiAgICAgCj4gPj4+Pj4+ICAgICAvKiBpbnRlbF9sc3Bjb24uYyAqLwo+ID4+Pj4+PiAgICAg Ym9vbCBsc3Bjb25faW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCk7Cj4gCj4gCj4gLS0gCj4gflN3YXRpIFNoYXJtYQo+IAoKLS0gClZpbGxlIFN5cmrDpGzDpApJ bnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=