From mboxrd@z Thu Jan 1 00:00:00 1970 From: Animesh Manna Subject: Re: [RFC] drm/i915: adding state checker for gamma lut values Date: Fri, 22 Mar 2019 21:37:12 +0530 Message-ID: <662f36cc-ced1-31a2-511a-a1a70213b109@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 33DA66E0D3 for ; Fri, 22 Mar 2019 16:07:21 +0000 (UTC) In-Reply-To: <87r2b1en0r.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jani Nikula , "dri-devel@lists.freedesktop.org" Cc: "daniel.vetter@ffwll.ch" , "Sharma, Swati2" , "Shankar, Uma" , "Vivi, Rodrigo" , "Nautiyal, Ankit K" List-Id: dri-devel@lists.freedesktop.org SGksCgoKT24gMy8yMC8yMDE5IDY6MTEgUE0sIEphbmkgTmlrdWxhIHdyb3RlOgo+IE9uIFdlZCwg MjAgTWFyIDIwMTksICJTaGFybWEsIFN3YXRpMiIgPHN3YXRpMi5zaGFybWFAaW50ZWwuY29tPiB3 cm90ZToKPj4gT24gMTUtTWFyLTE5IDM6MTcgUE0sIE5pa3VsYSwgSmFuaSB3cm90ZToKPj4+IE9u IEZyaSwgMTUgTWFyIDIwMTksIHN3YXRpMi5zaGFybWFAaW50ZWwuY29tIHdyb3RlOgo+Pj4+IEZy b206IFN3YXRpIFNoYXJtYSA8c3dhdGkyLnNoYXJtYUBpbnRlbC5jb20+Cj4+Pj4KPj4+PiBBZGRl ZCBzdGF0ZSBjaGVja2VyIHRvIHZhbGlkYXRlIGdhbW1hX2x1dCB2YWx1ZXMuIFRoaXMKPj4+PiBy ZWFkcyBoYXJkd2FyZSBzdGF0ZSwgYW5kIGNvbXBhcmVzIHRoZSBvcmlnaW5hbGx5IHJlcXVlc3Rl ZAo+Pj4+IHN0YXRlIHRvIHRoZSBzdGF0ZSByZWFkIGZyb20gaGFyZHdhcmUuCj4+Pj4KPj4+PiBU aGlzIGltcGxlbWVudGF0aW9uIGNhbiBiZSB1c2VkIGZvciBHZW45KyBwbGF0Zm9ybXMsCj4+Pj4g SSBoYXZlbid0IGltcGxlbWVudGVkIGl0IGZvciBsZWdhY3kgcGxhdGZvcm1zLiBKdXN0IHdhbnQg dG8gZ2V0Cj4+Pj4gZmVlZGJhY2sgaWYgdGhpcyBpcyB0aGUgcmlnaHQgYXBwcm9hY2ggdG8gZm9s bG93Lgo+Pj4+Cj4+Pj4gQWxzbywgaW52ZXJzZSBmdW5jdGlvbiBvZiBkcm1fY29sb3JfbHV0X2V4 dHJhY3QgaXMgbWlzc2luZwo+Pj4+IHRvIGNvbnZlcnQgaGFyZHdhcmUgcmVhZCB2YWx1ZXMgYmFj ayB0byB1c2VyIHZhbHVlcy4KPj4+PiBUaGlua2luZyBmb3IgdGhhdC4gSSBoYXZlIGFkZGVkIGFs bCAiVE9ET3MiIGFuZCAiUGxhY2Vob2xkZXJzIi4KPj4+Pgo+Pj4+IEFub3RoZXIgYXBwcm9hY2g6 Cj4+Pj4gU3RvcmluZyAid29yZCIgdG8gYmUgd3JpdHRlbiBpbnRvIGhhcmR3YXJlIGluIGRldl9w cml2IGFuZAo+Pj4+IGluc3RlYWQgb2YgY29tcGFyaW5nIGJsb2IsIGNvbXBhcmluZyAid29yZCI/ IEluIGRldl9wcml2LAo+Pj4+IG9ubHkgcG9pbnRlciB3aWxsIGJlIHRoZXJlIChzb21ldGhpbmcg bGlrZSAqZ2FtbWFfd29yZCkuCj4+PiBZb3UgY2FuJ3Qgc3RvcmUgaXQgaW4gZGV2X3ByaXYgYmVj YXVzZSBpdCdzIGNydGMgc3RhdGUgc3BlY2lmaWMKPj4+IGRhdGEuIEV2ZW4gaWYgc3RvcmVkIGlu IGNydGMgc3RhdGUsIHRoZSBhcHByb2FjaCBkb2Vzbid0IGhlbHAgdGhlCj4+PiBpbml0aWFsIGh3 IHN0YXRlIHJlYWRvdXQgYW5kIHRha2VvdmVyLgo+Pj4KPj4+IFBsZWFzZSB1c2UgaW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdCBmb3IgaTkxNSBwYXRjaGVzLgo+Pj4KPj4+PiBGb3IgdGhpcyB0b28sIEkg d2lsbCBzZW5kIGEgcGF0Y2ggdG8gbWFrZSBpdCBtb3JlIGNsZWFyLgo+Pj4+Cj4+Pj4gU2lnbmVk LW9mZi1ieTogU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KPj4+PiAtLS0K Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDEgKwo+Pj4+ ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgICB8IDEyNyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyB8ICA1MCArKysrKysrKysrKysrKwo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMSArCj4+Pj4gICAgNCBmaWxlcyBjaGFuZ2VkLCAx NzMgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+Pj4+IGluZGV4IGM0ZmZlMTkuLmI0MWJmYWEgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPj4+PiBAQCAtMzM0LDYgKzMzNCw3IEBAIHN0cnVjdCBkcm1faTkxNV9k aXNwbGF5X2Z1bmNzIHsKPj4+PiAgICAJICogaW52b2x2ZWQgd2l0aCB0aGUgc2FtZSBjb21taXQu Cj4+Pj4gICAgCSAqLwo+Pj4+ICAgIAl2b2lkICgqbG9hZF9sdXRzKShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+Pj4gKwl2b2lkICgqZ2V0X2NvbmZpZykoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4gVGhlIG5hbWUgaXMgdG9vIGdl bmVyaWMuCj4+Pgo+Pj4+ICAgIH07Cj4+Pj4gICAgCj4+Pj4gICAgI2RlZmluZSBDU1JfVkVSU0lP TihtYWpvciwgbWlub3IpCSgobWFqb3IpIDw8IDE2IHwgKG1pbm9yKSkKPj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NvbG9yLmMKPj4+PiBpbmRleCBkYTdhMDdkLi5hNTE1ZTlmIDEwMDY0NAo+Pj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4+Pj4gQEAgLTc0LDYgKzc0LDExIEBACj4+ Pj4gICAgI2RlZmluZSBJTEtfQ1NDX0NPRUZGXzFfMAkJXAo+Pj4+ICAgIAkoKDcgPDwgMTIpIHwg SUxLX0NTQ19DT0VGRl9GUChDVE1fQ09FRkZfMV8wLCA4KSkKPj4+PiAgICAKPj4+PiArLyogTWFz ayB0byBleHRyYWN0IFJHQiB2YWx1ZXMgZnJvbSByZWdpc3RlcnMgKi8KPj4+PiArI2RlZmluZSBD T0xPUl9CTFVFX01BU0sgICAgICAgICAweDAwMDAwM0ZGICAgICAgICAgICAgICAvKiA5OjAgKi8K Pj4+PiArI2RlZmluZSBDT0xPUl9HUkVFTl9NQVNLICAgICAgICAweDAwMEZGQzAwICAgICAgICAg ICAgICAvKiAxOToxMCAqLwo+Pj4+ICsjZGVmaW5lIENPTE9SX1JFRF9NQVNLICAgICAgICAgIDB4 M0ZGMDAwMDAgICAgICAgICAgICAgIC8qIDI5OjIwICovCj4+PiBUaGVzZSBiZWxvbmcgaW4gaTkx NV9yZWcuaCwgYW5kIHlvdSBuZWVkIHBsYXRmb3JtIHNwZWNpZmljIHNoaWZ0cyBhbmQKPj4+IG1h c2tzLiBUaGUgY29kZSB0aGF0IHdyaXRlcyB0aGUgcmVnaXN0ZXJzIHNlZW1zIHRvIHVzZSBtYWdp YyBudW1iZXJzLi4uCj4+Pgo+Pj4+ICsKPj4+PiAgICBzdGF0aWMgYm9vbCBsdXRfaXNfbGVnYWN5 KGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqbHV0KQo+Pj4+ICAgIHsKPj4+PiAgICAJ cmV0dXJuIGRybV9jb2xvcl9sdXRfc2l6ZShsdXQpID09IExFR0FDWV9MVVRfTEVOR1RIOwo+Pj4+ IEBAIC02NzIsNiArNjc3LDk3IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4+ICAgIAlpOXh4X2xv YWRfbHV0c19pbnRlcm5hbChjcnRjX3N0YXRlLCBOVUxMKTsKPj4+PiAgICB9Cj4+Pj4gICAgCj4+ Pj4gK3N0YXRpYyB2b2lkIGJkd19nZXRfZ2FtbWFfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLCB1MzIgb2Zmc2V0KQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPj4+PiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPj4+PiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+Pj4+ ICsJdTMyIGksIHRtcCwgbHV0X3NpemUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2Ft bWFfbHV0X3NpemU7Cj4+Pj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4+Pj4gKwlz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBOVUxMOwo+Pj4+ICsJc3RydWN0IGRybV9j b2xvcl9sdXQgKmJsb2JfZGF0YTsKPj4+PiArCj4+Pj4gKwlXQVJOX09OKG9mZnNldCAmIH5QQUxf UFJFQ19JTkRFWF9WQUxVRV9NQVNLKTsKPj4+PiArCj4+Pj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFM X0lOREVYKHBpcGUpLAo+Pj4+ICsJCQkob2Zmc2V0ID8gUEFMX1BSRUNfU1BMSVRfTU9ERSA6IDAp IHwKPj4+PiArCQkJUEFMX1BSRUNfQVVUT19JTkNSRU1FTlQgfAo+Pj4+ICsJCQlvZmZzZXQpOwo+ Pj4+ICsKPj4+PiArCWJsb2IgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2Jsb2IoZGV2LAo+Pj4+ICsJ CQlzaXplb2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICogbHV0X3NpemUsCj4+Pj4gKwkJCU5VTEwp Owo+Pj4+ICsJaWYgKElTX0VSUihibG9iKSkKPj4+PiArCQlyZXR1cm47Cj4+Pj4gKwo+Pj4+ICsJ YmxvYl9kYXRhID0gYmxvYi0+ZGF0YTsKPj4+PiArCj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgbHV0 X3NpemU7IGkrKykgewo+Pj4+ICsJCXRtcCA9IEk5MTVfUkVBRChQUkVDX1BBTF9EQVRBKHBpcGUp KTsKPj4+PiArCQkvKgo+Pj4+ICsJCSAqIFRPRE86IGNvbnZlcnQgUkdCIHZhbHVlIHJlYWQgZnJv bSByZWdpc3RlciBpbnRvIGNvcnJlc3BvbmRpbmcgdXNlciB2YWx1ZSB1c2luZwo+Pj4+ICsJCSAq IHNvbWUgd3JhcHBlciBsaWtlIGRybV9jb2xvcl9sdXRfcHV0KCkgKG9yKSBpbnRlbF9jb2xvcl9s dXRfcHV0KCkgc28gdGhhdCBpdAo+Pj4+ICsJCSAqIGNhbiBiZSBjb21wYXJlZCBsYXRlci4KPj4+ PiArCQkgKi8KPj4+IFllYWgsIHlvdSdsbCBuZWVkIHRoaXMuCj4+IENhbiB5b3UgcGxlYXNlIGhl bHAgaW4gdGhpcz8KPiBTb21ldGhpbmcgbGlrZSB0aGlzOgo+Cj4gLyogY29udmVydCBodyB2YWx1 ZSB3aXRoIGdpdmVuIGJpdF9wcmVjaXNpb24gdG8gbHV0IHByb3BlcnR5IHZhbCAqLwo+IHUzMiBk cm1fY29sb3JfbHV0X3BhY2sodTMyIHZhbCwgdTMyIGJpdF9wcmVjaXNpb24pCj4gewo+IAl1MzIg bWF4ID0gMHhmZmZmID4+ICgxNiAtIGJpdF9wcmVjaXNpb24pOwo+Cj4gCXZhbCA9IGNsYW1wX3Zh bCh2YWwsIDAsIG1heCk7Cj4KPiAJaWYgKGJpdF9wcmVjaXNpb24gPCAxNikKPiAJCXZhbCA8PD0g MTYgLSBiaXRfcHJlY2lzaW9uOwo+Cj4gCXJldHVybiB2YWw7Cj4gfQo+Cj4gLyogY29tcGFyZSB0 d28gbHV0IHByb3BlcnR5IHZhbHVlcyB3aXRoIGdpdmVuIGJpdF9wcmVjaXNpb24gKi8KPiBib29s IGRybV9jb2xvcl9sdXRfbWF0Y2godTMyIGEsIHUzMiBiLCB1MzIgYml0X3ByZWNpc2lvbikKPiB7 Cj4gCXUzMiBlcnIgPSAweGZmZmYgPj4gYml0X3ByZWNpc2lvbjsKPgo+IAlyZXR1cm4gYWJzKChs b25nKWEgLSBiKSA8PSBlcnI7Cj4gfQo+Cj4gSSBkaWRuJ3QgZG91YmxlIGNoZWNrIHRoZSBtYXRo LCBidXQgaXQncyBwcm9iYWJseSBjbG9zZSBlbm91Z2ggZm9yCj4gc3RhcnRlcnMuIDspClRoaXMg YSBnb29kIHNvbHV0aW9uLCB3aGlsZSBjaGVja2luZyBhbG9uZyB3aXRoIFN3YXRpIGZvdW5kIGEg Y29ybmVyIApjYXNlIHdoZXJlIHRoaXMgYXBwcm9hY2ggd2lsbCBub3Qgd29yay4KRHVyaW5nIGxv YWQtbHV0IHdlIGRvIHJvdW5kLW9mZiBvZiBSL0cvQiBkYXRhIGFuZCBjYW4gZ2V0IHRoZSBjZWls aW5nIAp2YWx1ZSB3aGljaCB3ZSBhcmUgcHJvZ3JhbW1pbmcgaW4gcGFsZXR0ZS1kYXRhIHJlZ2lz dGVyLgpOb3cgYWZ0ZXIgY29tbWl0IHdlIHJlYWQgdGhlc2UgdmFsdWVzIGFuZCBieSBhbnkgY2hh bmNlIGlmIHdlIGdldCB0aGUgCmZsb29yIHZhbHVlIG9mIHRoZSBSL0cvQiBkYXRhIHRoZW4gdGhl IHZhbGlkYXRpb24gdGVzdCB3aWxsIHBhc3MgdGhvdWdoIAp3ZSBhcmUgbm90IGdldHRpbmcgdGhl IHZhbHVlIHdlIGhhdmUgd3JpdHRlbi4KVG8gbWFrZSBpdCBmdWxsIHByb29mIGlzIGl0IG9rIHRv IGNyZWF0ZSB0aGUgd29yZCBjb21iaW5lZCB3aXRoIFIsRyxCIAp2YWx1ZSBhZ2FpbiBpbiB2ZXJp ZnlfY3J0Y19zdGF0ZSgpIGFuZCBjb21wYXJlIHdpdGggdGhlIHZhbHVlIHJlYWQgZnJvbSAKcmVn aXN0ZXIuIEluIHRoaXMgYXBwcm9hY2ggd2UgY2FuIHVzZSBleGlzdGluZyBmdW5jdGlvbiB0byBj cmVhdGUgdGhlIAp3b3JkIHZhbHVlLgpCdXQgYW55d2F5cyB0aGlzIGFwcHJvYWNoIHdpbGwgd29y ayBvdGhlciB0aGFuIHRoZSBzaW5nbGUgY2FzZSBtZW50aW9uZWQgCmFib3ZlLgoKUmVnYXJkcywK QW5pbWVzaAoKPgo+Cj4KPiBCUiwKPiBKYW5pLgo+Cj4KPgo+Cj4+Pj4gKwkJYmxvYl9kYXRhW2ld LnJlZCA9ICh0bXAgJiBDT0xPUl9SRURfTUFTSykgPj4gMjA7Cj4+Pj4gKwkJYmxvYl9kYXRhW2ld LmdyZWVuID0gKHRtcCAmIENPTE9SX0dSRUVOX01BU0spID4+IDEwOwo+Pj4+ICsJCWJsb2JfZGF0 YVtpXS5ibHVlID0gdG1wICYgQ09MT1JfQkxVRV9NQVNLOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiAr CUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIDApOwo+Pj4+ICsKPj4+PiArCWNydGNf c3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gYmxvYjsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGlj IHZvaWQgaTl4eF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+Pj4gUGxlYXNlIGluY2x1ZGUgKGRlKWdhbW1hIG9yIGNvbG9yIGluIHRoZSBmdW5jdGlvbiBu YW1lcy4KPj4+Cj4+Pj4gK3sKPj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+Pj4+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmJhc2UuZGV2Owo+Pj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4+Pj4gKwl1MzIgaSwgdG1wOwo+Pj4+ ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+Pj4+ICsJc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICpibG9iID0gTlVMTDsKPj4+PiArCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpibG9iX2Rh dGE7Cj4+Pj4gKwo+Pj4+ICsJYmxvYiA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYihkZXYsCj4+ Pj4gKwkJCQkJc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfbHV0KSAqIDI1NiwKPj4+PiArCQkJCQlO VUxMKTsKPj4+PiArCWlmIChJU19FUlIoYmxvYikpCj4+Pj4gKwkJcmV0dXJuOwo+Pj4+ICsKPj4+ PiArCWJsb2JfZGF0YSA9IGJsb2ItPmRhdGE7Cj4+Pj4gKwo+Pj4+ICsJZm9yIChpID0gMDsgaSA8 IDI1NjsgaSsrKSB7Cj4+Pj4gKwkJaWYgKEhBU19HTUNIKGRldl9wcml2KSkKPj4+PiArCQkJdG1w ID0gSTkxNV9SRUFEKFBBTEVUVEUocGlwZSwgaSkpOwo+Pj4+ICsJCWVsc2UKPj4+PiArCQkJdG1w ID0gSTkxNV9SRUFEKExHQ19QQUxFVFRFKHBpcGUsIGkpKTsKPj4+PiArCQkvKgo+Pj4+ICsJCSAq IFRPRE86IGNvbnZlcnQgUkdCIHZhbHVlIHJlYWQgZnJvbSByZWdpc3RlciBpbnRvIGNvcnJlc3Bv bmRpbmcgdXNlciB2YWx1ZSB1c2luZwo+Pj4+ICsJCSAqIHNvbWUgd3JhcHBlciBsaWtlIGRybV9j b2xvcl9sdXRfcHV0KCkgKG9yKSBpbnRlbF9jb2xvcl9sdXRfcHV0KCkgc28gdGhhdCBpdAo+Pj4+ ICsJCSAqIGNhbiBiZSBjb21wYXJlZCBsYXRlci4KPj4+PiArCQkgKi8KPj4+PiArCQlibG9iX2Rh dGFbaV0ucmVkID0gKHRtcCAmIENPTE9SX1JFRF9NQVNLKSA+PiAyMDsKPj4+PiArCQlibG9iX2Rh dGFbaV0uZ3JlZW4gPSAodG1wICYgQ09MT1JfR1JFRU5fTUFTSykgPj4gMTA7Cj4+Pj4gKwkJYmxv Yl9kYXRhW2ldLmJsdWUgPSAodG1wICYgQ09MT1JfQkxVRV9NQVNLKTsKPj4+PiArCX0KPj4+PiAr Cj4+Pj4gKwljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGJsb2I7Cj4+Pj4gK30KPj4+PiAr Cj4+Pj4gK3N0YXRpYyB2b2lkIGljbF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+Pj4+ICt7Cj4+Pj4gKwkvKgo+Pj4+ICsJICogVE9ETzogcGxhY2Vob2xk ZXIgZm9yIGRlZ2FtbWEgdmFsaWRhdGlvbgo+Pj4+ICsJICogZ2xrX2dldF9kZWdhbW1hX2NvbmZp ZyhjcnRjX3N0YXRlLCAwKTsKPj4+PiArCSAqLwo+Pj4+ICsKPj4+PiArCWlmIChjcnRjX3N0YXRl X2lzX2xlZ2FjeV9nYW1tYShjcnRjX3N0YXRlKSkKPj4+PiArCQlpOXh4X2dldF9jb25maWcoY3J0 Y19zdGF0ZSk7Cj4+Pj4gKwllbHNlCj4+Pj4gKwkJYmR3X2dldF9nYW1tYV9jb25maWcoY3J0Y19z dGF0ZSwgMCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gICAgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1 dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+Pj4gICAgewo+ Pj4+ICAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNf c3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPj4+PiBAQCAtNjc5LDYgKzc3NSwxMyBAQCB2b2lkIGlu dGVsX2NvbG9yX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKPj4+PiAgICAJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzKGNydGNfc3RhdGUpOwo+ Pj4+ICAgIH0KPj4+PiAgICAKPj4+PiArdm9pZCBpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ ZGV2KTsKPj4+PiArCj4+Pj4gKwlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnKGNydGNfc3Rh dGUpOwo+Pj4gVGhpcyB3aWxsIG9vcHMgb24gcGxhdGZvcm1zIHdoZXJlIHlvdSBoYXZlbid0IGlt cGxlbWVudGVkIGl0IHlldC4KPj4+Cj4+Pj4gK30KPj4+PiArCj4+Pj4gICAgdm9pZCBpbnRlbF9j b2xvcl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+ Pj4gICAgewo+Pj4+ICAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPj4+PiBAQCAtODMzLDIyICs5MzYsMzQg QEAgdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+Pj4+ICAg IAo+Pj4+ICAgIAlkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKCZjcnRjLT5iYXNlLCAyNTYp Owo+Pj4+ICAgIAo+Pj4+ICsJLyoKPj4+PiArCSAqIFRPRE86IEluIHRoZSBmb2xsb3dpbmcgaWYg bGFkZGVyLCBrZXB0IHBsYWNlaG9sZGVycwo+Pj4+ICsJICogZm9yIGV4dGVuZGluZyBsdXQgdmFs aWRhdGlvbiBmb3IgbGVnYWN5IHBsYXRmb3Jtcy4KPj4+PiArCSAqLwo+Pj4gSSB0aGluayBhZGRp bmcgdGhlIHBsYWNlaG9sZGVyIGNvbW1lbnRzIGlzIHRvbyBtZXNzeS4KPj4+Cj4+Pj4gICAgCWlm IChIQVNfR01DSChkZXZfcHJpdikpIHsKPj4+PiAtCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpCj4+Pj4gKwkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4+Pj4gICAgCQkJZGV2 X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gY2hlcnJ5dmlld19sb2FkX2x1dHM7Cj4+Pj4gLQkJ ZWxzZQo+Pj4+ICsJCQkgLyogZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NvbmZpZyA9IGNoZXJyeXZp ZXdfZ2V0X2NvbmZpZzsgKi8KPj4+PiArCQl9IGVsc2Ugewo+Pj4+ICAgIAkJCWRldl9wcml2LT5k aXNwbGF5LmxvYWRfbHV0cyA9IGk5eHhfbG9hZF9sdXRzOwo+Pj4+ICsJCQlkZXZfcHJpdi0+ZGlz cGxheS5nZXRfY29uZmlnID0gaTl4eF9nZXRfY29uZmlnOwo+Pj4+ICsJCX0KPj4+PiAgICAKPj4+ PiAgICAJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbW1pdCA9IGk5eHhfY29sb3JfY29tbWl0 Owo+Pj4+ICAgIAl9IGVsc2Ugewo+Pj4+IC0JCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkKPj4+ PiArCQlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpIHsKPj4+PiAgICAJCQlkZXZfcHJpdi0+ZGlz cGxheS5sb2FkX2x1dHMgPSBpY2xfbG9hZF9sdXRzOwo+Pj4+IC0JCWVsc2UgaWYgKElTX0NBTk5P TkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+Pj4+ICsJCQlkZXZf cHJpdi0+ZGlzcGxheS5nZXRfY29uZmlnID0gaWNsX2dldF9jb25maWc7Cj4+Pj4gKwkJfSBlbHNl IGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkg ewo+Pj4+ICAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGdsa19sb2FkX2x1dHM7 Cj4+Pj4gLQkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FEV0VM TChkZXZfcHJpdikpCj4+Pj4gKwkJCS8qIGRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBn bGtfZ2V0X2NvbmZpZzsgKi8KPj4+PiArCQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4+Pj4gICAgCQkJZGV2X3ByaXYtPmRp c3BsYXkubG9hZF9sdXRzID0gYnJvYWR3ZWxsX2xvYWRfbHV0czsKPj4+PiAtCQllbHNlCj4+Pj4g KwkJCS8qIGRldl9wcml2LT5kaXNwbGF5LmdldF9jb25maWcgPSBicm9hZHdlbGxfZ2V0X2NvbmZp ZzsgKi8KPj4+PiArCQl9IGVsc2Ugewo+Pj4+ICAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRf bHV0cyA9IGk5eHhfbG9hZF9sdXRzOwo+Pj4+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY29u ZmlnID0gaTl4eF9nZXRfY29uZmlnOwo+Pj4+ICsJCX0KPj4+PiAgICAKPj4+PiAgICAJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4+Pj4gICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29s b3JfY29tbWl0ID0gc2tsX2NvbG9yX2NvbW1pdDsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4+Pj4gaW5kZXggOTYzYjRiZC4uMTY1ZDc5NyAxMDA2NDQKPj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+PiBAQCAtODIxMiw2ICs4MjEyLDExIEBAIHN0 YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ Pj4+ICAgIAo+Pj4+ICAgIAlpOXh4X2dldF9waXBlX2NvbG9yX2NvbmZpZyhwaXBlX2NvbmZpZyk7 Cj4+Pj4gICAgCj4+Pj4gKwkvKgo+Pj4+ICsJICogVE9ETzogWWV0IHRvIGltcGxlbWVudCBmb3Ig bGVnYWN5IHBsYXRmb3Jtcwo+Pj4+ICsJICogaW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhwaXBlX2Nv bmZpZyk7Cj4+Pj4gKwkgKi8KPj4+PiArCj4+PiBJJ20gbm90IHN1cmUgYWJvdXQgYWRkaW5nIHRo ZXNlIGNvbW1lbnRzIGVpdGhlci4KPj4+Cj4+Pj4gICAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNCkKPj4+PiAgICAJCXBpcGVfY29uZmlnLT5kb3VibGVfd2lkZSA9IHRtcCAmIFBJUEVDT05G X0RPVUJMRV9XSURFOwo+Pj4+ICAgIAo+Pj4+IEBAIC05Mjg0LDYgKzkyODksMTEgQEAgc3RhdGlj IGJvb2wgaXJvbmxha2VfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ Pj4+ICAgIAo+Pj4+ICAgIAlpOXh4X2dldF9waXBlX2NvbG9yX2NvbmZpZyhwaXBlX2NvbmZpZyk7 Cj4+Pj4gICAgCj4+Pj4gKwkvKgo+Pj4+ICsJICogVE9ETzogWWV0IHRvIGltcGxlbWVudCBmb3Ig bGVnYWN5IHBsYXRmb3Jtcwo+Pj4+ICsJICogaW50ZWxfY29sb3JfZ2V0X2NvbmZpZyhwaXBlX2Nv bmZpZyk7Cj4+Pj4gKwkgKi8KPj4+PiArCj4+Pj4gICAgCWlmIChJOTE1X1JFQUQoUENIX1RSQU5T Q09ORihjcnRjLT5waXBlKSkgJiBUUkFOU19FTkFCTEUpIHsKPj4+PiAgICAJCXN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbCAqcGxsOwo+Pj4+ICAgIAkJZW51bSBpbnRlbF9kcGxsX2lkIHBsbF9pZDsK Pj4+PiBAQCAtOTkzMiw2ICs5OTQyLDggQEAgc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9j b25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+Pj4gICAgCQlpOXh4X2dldF9waXBlX2Nv bG9yX2NvbmZpZyhwaXBlX2NvbmZpZyk7Cj4+Pj4gICAgCX0KPj4+PiAgICAKPj4+PiArCWludGVs X2NvbG9yX2dldF9jb25maWcocGlwZV9jb25maWcpOwo+Pj4+ICsKPj4+PiAgICAJcG93ZXJfZG9t YWluID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBpcGUpOwo+Pj4+ICAg IAlpZiAoaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJf ZG9tYWluKSkgewo+Pj4+ICAgIAkJV0FSTl9PTihwb3dlcl9kb21haW5fbWFzayAmIEJJVF9VTEwo cG93ZXJfZG9tYWluKSk7Cj4+Pj4gQEAgLTExOTkwLDYgKzEyMDAyLDM0IEBAIHN0YXRpYyBib29s IGZhc3Rib290X2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4+ ICAgIAlyZXR1cm4gZmFsc2U7Cj4+Pj4gICAgfQo+Pj4+ICAgIAo+Pj4+ICtzdGF0aWMgYm9vbCBp bnRlbF9jb21wYXJlX2Jsb2Ioc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iMSwKPj4+PiAr CQkJICAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjIpCj4+Pj4gK3sKPj4+PiAr CXN0cnVjdCBkcm1fY29sb3JfbHV0ICpzd19sdXQgPSBibG9iMS0+ZGF0YTsKPj4+PiArCXN0cnVj dCBkcm1fY29sb3JfbHV0ICpod19sdXQgPSBibG9iMi0+ZGF0YTsKPj4+PiArCWludCBzd19sdXRf c2l6ZSwgaHdfbHV0X3NpemU7Cj4+Pj4gKwlpbnQgaTsKPj4+PiArCj4+Pj4gKwlzd19sdXRfc2l6 ZSA9IGRybV9jb2xvcl9sdXRfc2l6ZShibG9iMSk7Cj4+Pj4gKwlod19sdXRfc2l6ZSA9IGRybV9j b2xvcl9sdXRfc2l6ZShibG9iMik7Cj4+Pj4gKwo+Pj4+ICsJaWYgKHN3X2x1dF9zaXplICE9IGh3 X2x1dF9zaXplKSB7Cj4+Pj4gKwkJRFJNX0RFQlVHX0tNUygiSW52YWxpZCBMVVQgc2l6ZTsgZ290 ICVkLCBleHBlY3RlZCAlZFxuIiwgaHdfbHV0X3NpemUsIHN3X2x1dF9zaXplKTsKPj4+IFBsZWFz ZSBkb24ndCBhZGQgdGhlc2UgZGVidWcgbG9ncyBoZXJlLiBJbnN0ZWFkLCBhZGQgYSBzZXBhcmF0 ZSBmdW5jdGlvbgo+Pj4gdG8gbG9nIGVycm9ycyBhdCB0aGUgaGlnaGVyIGxldmVsLiBDb250cmFz dCBQSVBFX0NPTkZfQ0hFQ0tfSU5GT0ZSQU1FKCkKPj4+IGFuZCBwaXBlX2NvbmZpZ19pbmZvZnJh bWVfZXJyKCkuIFRoYXQgY2FuIGNvbWUgYXMgYSBmb2xsb3ctdXAKPj4+IGltcHJvdmVtZW50LCBi dXQgdGhlIGRlYnVnIGxvZ3MgaGVyZSBhcmUgdW5uZWNlc3NhcnkuCj4+Pgo+Pj4+ICsJCXJldHVy biBmYWxzZTsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgc3dfbHV0X3Np emU7IGkrKykgewo+Pj4+ICsJCWlmIChod19sdXRbaV0ucmVkICE9IHN3X2x1dFtpXS5yZWQgfHwK Pj4+PiArCQkgICAgaHdfbHV0W2ldLmJsdWUgIT0gc3dfbHV0W2ldLmJsdWUgfHwKPj4+PiArCQkg ICAgaHdfbHV0W2ldLmdyZWVuICE9IHN3X2x1dFtpXS5ncmVlbikgewo+Pj4+ICsJCQlEUk1fREVC VUdfS01TKCJJbnZhbGlkIExVVCB2YWx1ZTsgc3dfbHV0IHZhbHVlIGRvZXNuJ3QgbWF0Y2ggaHdf bHV0IHZhbHVlXG4iKTsKPj4+PiArCQkJcmV0dXJuIGZhbHNlOwo+Pj4+ICsJCX0KPj4+PiArCX0K Pj4+PiArCj4+Pj4gKwlyZXR1cm4gdHJ1ZTsKPj4+PiArfQo+Pj4+ICsKPj4+IEknZCBwdXQgdGhp cyBpbiBpbnRlbF9jb2xvci5jIGFuZCBuYW1lIGl0IHByb3Blcmx5LiBZb3UgY2FuJ3QgdXNlIGl0 IHRvCj4+PiBjb21wYXJlIHJhbmRvbSBibG9icywgYW5kIHRoZSBjb21wYXJpc29uIG5lZWRzIHRv IHRha2UgcGxhdGZvcm0gc3BlY2lmaWMKPj4+IGJpdCBwcmVjaXNpb24gb2YgdGhlIHJlYWRvdXQg aW50byBhY2NvdW50Lgo+Pj4KPj4+IFRoZSBibG9icyBtYXkgYmUgTlVMTC4KPj4+Cj4+Pj4gICAg c3RhdGljIGJvb2wKPj4+PiAgICBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+PiAgICAJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjdXJyZW50X2NvbmZpZywKPj4+PiBAQCAtMTIxNDgsNiArMTIxODgsMTQgQEAgc3RhdGlj IGJvb2wgZmFzdGJvb3RfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4+Pj4gICAgCX0gXAo+Pj4+ICAgIH0gd2hpbGUgKDApCj4+Pj4gICAgCj4+Pj4gKyNkZWZpbmUg UElQRV9DT05GX0NIRUNLX0JMT0IobmFtZSkgZG8geyBcCj4+PiBDSEVDS19MVVQgb3IgQ0hFQ0tf Q09MT1JfTFVUIG9yIHNvbWV0aGluZywgbm90IGp1c3QgQ0hFQ0tfQkxPQi4KPj4+Cj4+Pj4gKwlp ZiAoIWludGVsX2NvbXBhcmVfYmxvYihjdXJyZW50X2NvbmZpZy0+bmFtZSwgcGlwZV9jb25maWct Pm5hbWUpKSB7IFwKPj4+PiArCQlwaXBlX2NvbmZpZ19lcnIoYWRqdXN0LCBfX3N0cmluZ2lmeShu YW1lKSwgXAo+Pj4+ICsJCQkJImh3X3N0YXRlIGRvZXNuJ3QgbWF0Y2ggc3dfc3RhdGVcbiIpOyBc Cj4+Pj4gKwkJcmV0ID0gZmFsc2U7IFwKPj4+PiArCX0gXAo+Pj4+ICt9IHdoaWxlICgwKQo+Pj4+ ICsKPj4+PiAgICAjZGVmaW5lIFBJUEVfQ09ORl9RVUlSSyhxdWlyaykgXAo+Pj4+ICAgIAkoKGN1 cnJlbnRfY29uZmlnLT5xdWlya3MgfCBwaXBlX2NvbmZpZy0+cXVpcmtzKSAmIChxdWlyaykpCj4+ Pj4gICAgCj4+Pj4gQEAgLTEyMjg3LDYgKzEyMzM1LDggQEAgc3RhdGljIGJvb2wgZmFzdGJvb3Rf ZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+Pj4gICAgCVBJUEVf Q09ORl9DSEVDS19JTkZPRlJBTUUoc3BkKTsKPj4+PiAgICAJUElQRV9DT05GX0NIRUNLX0lORk9G UkFNRShoZG1pKTsKPj4+PiAgICAKPj4+PiArCVBJUEVfQ09ORl9DSEVDS19CTE9CKGJhc2UuZ2Ft bWFfbHV0KTsKPj4+PiArCj4+Pj4gICAgI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19YCj4+Pj4gICAg I3VuZGVmIFBJUEVfQ09ORl9DSEVDS19JCj4+Pj4gICAgI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19C T09MCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBpbmRleCA0MGViYzk0Li5hNmFj ZDliIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBAQCAtMjUxMiw2 ICsyNTEyLDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KPj4+PiAgICBpbnQgaW50ZWxfY29s b3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4+ICAgIHZv aWQgaW50ZWxfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKTsKPj4+PiAgICB2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+Pj4gK3ZvaWQgaW50ZWxfY29sb3JfZ2V0 X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+Pj4gICAgCj4+ Pj4gICAgLyogaW50ZWxfbHNwY29uLmMgKi8KPj4+PiAgICBib29sIGxzcGNvbl9pbml0KHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KTsKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==