From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH 3/4] drm/i915/glk: Program pipe gamma and degamma tables Date: Wed, 25 Jan 2017 09:21:16 +0200 Message-ID: <1485328876.3681.25.camel@gmail.com> References: <1485264955-11378-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1485264955-11378-3-git-send-email-ander.conselvan.de.oliveira@intel.com> <20170124180515.GQ31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x244.google.com (mail-pg0-x244.google.com [IPv6:2607:f8b0:400e:c05::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1928A89B78 for ; Wed, 25 Jan 2017 07:21:22 +0000 (UTC) Received: by mail-pg0-x244.google.com with SMTP id 3so1147024pgj.1 for ; Tue, 24 Jan 2017 23:21:22 -0800 (PST) In-Reply-To: <20170124180515.GQ31595@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE3LTAxLTI0IGF0IDIwOjA1ICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 Cj4gT24gVHVlLCBKYW4gMjQsIDIwMTcgYXQgMDM6MzU6NTRQTSArMDIwMCwgQW5kZXIgQ29uc2Vs dmFuIGRlIE9saXZlaXJhIHdyb3RlOgo+ID4gCj4gPiBUaGUgZ2FtbWEgdGFibGVzIGluIEdlbWlu aWxha2Ugd2VyZSBjaGFuZ2VkLiBUaGVyZSBpcyBubyBzcGxpdC1nYW1tYQo+ID4gbW9kZS4gSW5z dGVhZCwgdGhlcmUgaXMgYSBkZWRpY2F0ZWQgZGVnYW1tYSB0YWJsZSB0aGF0IGlzIGVuYWJsZWQK PiA+IHdoZW5ldmVyIHBpcGUgQ1NDIGlzIGVuYWJsZWQuCj4gPiAKPiA+IFRoZSBkZWRpY2F0ZWQg Z2FtbWEgdGFibGUgaGFzIDE2IGJpdCBwcmVjaXNpb24gYnV0IGRvZXNuJ3Qgc3VwcG9ydAo+ID4g c2VwYXJhdGUgY2hhbm5lbHMuIFNpbmNlIHRoYXQgZG9lc24ndCBtYXRjaCB0aGUgcGVyLWNoYW5u ZWwgZm9ybWF0IG9mCj4gPiB0aGUgZGVnYW1tYSBMVVQgcHJvcGVydHksIGZvciBub3cgb25seSBh IGxpbmVhciB0YWJsZSBpcyBsb2FkZWQgYW5kIHRoZQo+ID4gcHJvcGVydHkgaWdub3JlZC4KPiA+ IAo+ID4gU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5j b25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZQo+ID4gbC5jb20+Cj4gPiAtLS0KPiA+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuY8KgwqDCoMKgfMKgwqDCoDEgKwo+ID4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5owqDCoMKgwqB8wqDCoDE0ICsrKysrCj4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgfCAxMDUKPiA+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiA+IMKgMyBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9u cygrKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku Ywo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gPiBpbmRleCBlY2I0ODdi Li5kZjIwNTFiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku Ywo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+ID4gQEAgLTQwMyw2 ICs0MDMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvCj4gPiBpbnRl bF9nZW1pbmlsYWtlX2luZm8gPSB7Cj4gPiDCoAkucGxhdGZvcm0gPSBJTlRFTF9HRU1JTklMQUtF LAo+ID4gwqAJLmlzX2FscGhhX3N1cHBvcnQgPSAxLAo+ID4gwqAJLmRkYl9zaXplID0gMTAyNCwK PiA+ICsJLmNvbG9yID0geyAuZGVnYW1tYV9sdXRfc2l6ZSA9IDAsIC5nYW1tYV9sdXRfc2l6ZSA9 IDEwMjQgfQo+ID4gwqB9Owo+ID4gwqAKPiA+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9k ZXZpY2VfaW5mbyBpbnRlbF9rYWJ5bGFrZV9pbmZvID0gewo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAo+ID4gaW5kZXggN2MyNDBlNC4uNjI1ZDhmNyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPiA+IEBAIC04MTgwLDEyICs4MTgwLDI2IEBAIGVudW0gewo+ID4gwqAjZGVm aW5lIF9QQUxfUFJFQ19FWFRfR0NfTUFYX0EJMHg0QTQyMAo+ID4gwqAjZGVmaW5lIF9QQUxfUFJF Q19FWFRfR0NfTUFYX0IJMHg0QUMyMAo+ID4gwqAjZGVmaW5lIF9QQUxfUFJFQ19FWFRfR0NfTUFY X0MJMHg0QjQyMAo+ID4gKyNkZWZpbmUgX1BBTF9QUkVDX0VYVDJfR0NfTUFYX0EJMHg0QTQzMAo+ ID4gKyNkZWZpbmUgX1BBTF9QUkVDX0VYVDJfR0NfTUFYX0IJMHg0QUMzMAo+ID4gKyNkZWZpbmUg X1BBTF9QUkVDX0VYVDJfR0NfTUFYX0MJMHg0QjQzMAo+ID4gwqAKPiA+IMKgI2RlZmluZSBQUkVD X1BBTF9JTkRFWChwaXBlKQkJX01NSU9fUElQRShwaXBlLAo+ID4gX1BBTF9QUkVDX0lOREVYX0Es IF9QQUxfUFJFQ19JTkRFWF9CKQo+ID4gwqAjZGVmaW5lIFBSRUNfUEFMX0RBVEEocGlwZSkJCV9N TUlPX1BJUEUocGlwZSwKPiA+IF9QQUxfUFJFQ19EQVRBX0EsIF9QQUxfUFJFQ19EQVRBX0IpCj4g PiDCoCNkZWZpbmUgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIGkpCV9NTUlPKF9QSVBFKHBpcGUsCj4g PiBfUEFMX1BSRUNfR0NfTUFYX0EsIF9QQUxfUFJFQ19HQ19NQVhfQikgKyAoaSkgKiA0KQo+ID4g wqAjZGVmaW5lIFBSRUNfUEFMX0VYVF9HQ19NQVgocGlwZSwgaSkJX01NSU8oX1BJUEUocGlwZSwK PiA+IF9QQUxfUFJFQ19FWFRfR0NfTUFYX0EsIF9QQUxfUFJFQ19FWFRfR0NfTUFYX0IpICsgKGkp ICogNCkKPiA+IMKgCj4gPiArI2RlZmluZSBfUFJFX0NTQ19HQU1DX0lOREVYX0EJMHg0QTQ4NAo+ ID4gKyNkZWZpbmUgX1BSRV9DU0NfR0FNQ19JTkRFWF9CCTB4NEFDODQKPiA+ICsjZGVmaW5lIF9Q UkVfQ1NDX0dBTUNfSU5ERVhfQwkweDRCNDg0Cj4gPiArI2RlZmluZcKgwqDCoFBSRV9DU0NfR0FN Q19BVVRPX0lOQ1JFTUVOVAkoMSA8PCAxMCkKPiA+ICsjZGVmaW5lIF9QUkVfQ1NDX0dBTUNfREFU QV9BCTB4NEE0ODgKPiA+ICsjZGVmaW5lIF9QUkVfQ1NDX0dBTUNfREFUQV9CCTB4NEFDODgKPiA+ ICsjZGVmaW5lIF9QUkVfQ1NDX0dBTUNfREFUQV9DCTB4NEI0ODgKPiA+ICsKPiA+ICsjZGVmaW5l IFBSRV9DU0NfR0FNQ19JTkRFWChwaXBlKQlfTU1JT19QSVBFKHBpcGUsCj4gPiBfUFJFX0NTQ19H QU1DX0lOREVYX0EsIF9QUkVfQ1NDX0dBTUNfSU5ERVhfQikKPiA+ICsjZGVmaW5lIFBSRV9DU0Nf R0FNQ19EQVRBKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsCj4gPiBfUFJFX0NTQ19HQU1DX0RBVEFf QSwgX1BSRV9DU0NfR0FNQ19EQVRBX0IpCj4gPiArCj4gPiDCoC8qIHBpcGUgQ1NDICYgZGVnYW1t YS9nYW1tYSBMVVRzIG9uIENIViAqLwo+ID4gwqAjZGVmaW5lIF9DR01fUElQRV9BX0NTQ19DT0VG RjAxCShWTFZfRElTUExBWV9CQVNFICsgMHg2NzkwMCkKPiA+IMKgI2RlZmluZSBfQ0dNX1BJUEVf QV9DU0NfQ09FRkYyMwkoVkxWX0RJU1BMQVlfQkFTRSArIDB4Njc5MDQpCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gPiBpbmRleCBkODEyMzJiLi4wOWUwOTAzIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID4gQEAgLTQyMiw2ICs0MjIsMTA4IEBA IHN0YXRpYyB2b2lkIGJyb2Fkd2VsbF9sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlCj4g PiAqc3RhdGUpCj4gPiDCoAlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLCAwKTsKPiA+ IMKgfQo+ID4gwqAKPiA+ICtzdGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dChzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+Y3J0Yy0+ZGV2KTsKPiA+ICsJZW51bSBwaXBl IHBpcGUgPSB0b19pbnRlbF9jcnRjKHN0YXRlLT5jcnRjKS0+cGlwZTsKPiA+ICsJY29uc3QgdWlu dDMyX3QgbHV0X3NpemUgPSAzMzsKPiA+ICsJdWludDMyX3QgaTsKPiA+ICsKPiA+ICsJLyoKPiA+ ICsJwqAqIFdoZW4gc2V0dGluZyB0aGUgYXV0by1pbmNyZW1lbnQgYml0LCB0aGUgaGFyZHdhcmUg c2VlbXMgdG8KPiA+ICsJwqAqIGlnbm9yZSB0aGUgaW5kZXggYml0cywgc28gd2UgbmVlZCB0byBy ZXNldCBpdCB0byBpbmRleCAwCj4gPiArCcKgKiBzZXBhcmF0ZWx5Lgo+ID4gKwnCoCovCj4gPiAr CUk5MTVfV1JJVEUoUFJFX0NTQ19HQU1DX0lOREVYKHBpcGUpLCAwKTsKPiA+ICsJSTkxNV9XUklU RShQUkVfQ1NDX0dBTUNfSU5ERVgocGlwZSksIFBSRV9DU0NfR0FNQ19BVVRPX0lOQ1JFTUVOVCk7 Cj4gPiArCj4gPiArCS8qCj4gPiArCcKgKsKgwqBGSVhNRTogVGhlIHBpcGUgZGVnYW1tYSB0YWJs ZSBpbiBnZW1pbmlsYWtlIGRvZXNuJ3Qgc3VwcG9ydAo+ID4gKwnCoCrCoMKgZGlmZmVyZW50IHZh bHVlcyBwZXIgY2hhbm5lbCwgc28gdGhpcyBqdXN0IGxvYWRzIGEgbGluZWFyCj4gPiB0YWJsZS4K PiA+ICsJwqAqLwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgewo+ID4gKwkJ dWludDMyX3QgdiA9IChpICogKCgxIDw8IDE2KSAtIDEpKSAvIChsdXRfc2l6ZSAtIDEpOwo+ID4g Kwo+ID4gKwkJSTkxNV9XUklURShQUkVfQ1NDX0dBTUNfREFUQShwaXBlKSwgdik7Cj4gPiArCX0K PiA+ICsKPiA+ICsJLyogQ2xhbXAgdmFsdWVzID4gMS4wLiAqLwo+ID4gKwl3aGlsZSAoaSsrIDwg MzUpCj4gPiArCQlJOTE1X1dSSVRFKFBSRV9DU0NfR0FNQ19EQVRBKHBpcGUpLCAoMSA8PCAxNikg LSAxKTsKPiA+ICsKPiBVc2VsZXNzIGVtcHR5IGxpbmUuCj4gCj4gSSBkbyBzdGlsbCB3b25kZXIg aG93IHdlIGVuZGVkIHVwIHdpdGggdGhlIDAuMTYgc2NoZW1lIGZvciBMVVRzLiBJJ20KPiBwcmV0 dHkgc3VyZSA4LjI0IG9yIHNvbWV0aGluZyBsaWtlIHRoYXQgd2FzIHRoZSBwbGFuZS4gT2ggd2Vs bCwgaXQgaXMKPiB3aGF0IGl0IGlzLgo+IAo+ID4gCj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2 b2lkIGdsa19sb2FkX2dhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4g K3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0 ZS0+Y3J0Yy0+ZGV2KTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKHN0YXRl LT5jcnRjKS0+cGlwZTsKPiA+ICsJY29uc3QgdWludDMyX3QgbHV0X3NpemUgPSBJTlRFTF9JTkZP KGRldl9wcml2KS0KPiA+ID5jb2xvci5nYW1tYV9sdXRfc2l6ZTsKPiA+ICsJdWludDMyX3QgaTsK PiA+ICsKPiA+ICsJSTkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwgUEFMX1BSRUNfQVVU T19JTkNSRU1FTlQpOwo+ID4gKwo+ID4gKwlpZiAoc3RhdGUtPmdhbW1hX2x1dCkgewo+ID4gKwkJ c3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9Cj4gPiArCQkJKHN0cnVjdCBkcm1fY29sb3JfbHV0 ICopIHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7Cj4gY29uc3QgcGVyaGFwcz8KPiAKPiA+IAo+ID4g Kwo+ID4gKwkJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKPiA+ICsJCQl1aW50MzJf dCB3b3JkID0KPiA+ICsJCQkoZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5yZWQsIDEwKSA8 PCAyMCkgfAo+ID4gKwkJCShkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmdyZWVuLCAxMCkg PDwgMTApIHwKPiA+ICsJCQlkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmJsdWUsIDEwKTsK PiBBIGJpdCBzdHJhbmdlIGNhbGxpbmcgaXQgYSAid29yZCIsIGJ1dCB0aGF0J3Mgd2hhdCB3ZSBh cHBhcmVudGx5IGRvCj4gZWxzZXdoZXJlLgo+IAo+ID4gCj4gPiArCj4gPiArCQkJSTkxNV9XUklU RShQUkVDX1BBTF9EQVRBKHBpcGUpLCB3b3JkKTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCS8qIFBy b2dyYW0gdGhlIG1heCByZWdpc3RlciB0byBjbGFtcCB2YWx1ZXMgPiAxLjAuICovCj4gPiArCQlJ OTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwKPiA+ICsJCQnCoMKgwqBkcm1fY29s b3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgMTYpKTsKPiA+ICsJCUk5MTVfV1JJVEUoUFJFQ19Q QUxfR0NfTUFYKHBpcGUsIDEpLAo+ID4gKwkJCcKgwqDCoGRybV9jb2xvcl9sdXRfZXh0cmFjdChs dXRbaV0uZ3JlZW4sIDE2KSk7Cj4gPiArCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBl LCAyKSwKPiA+ICsJCQnCoMKgwqBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLmJsdWUsIDE2 KSk7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykg ewo+ID4gKwkJCXVpbnQzMl90IHYgPSAoaSAqICgoMSA8PCAxMCkgLSAxKSkgLyAobHV0X3NpemUg LQo+ID4gMSk7Cj4gPiArCj4gPiArCQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLAo+ ID4gKwkJCQnCoMKgwqAodiA8PCAyMCkgfCAodiA8PCAxMCkgfCB2KTsKPiA+ICsJCX0KPiA+ICsK PiA+ICsJCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDApLCAoMSA8PCAxNikgLSAx KTsKPiA+ICsJCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpLCAoMSA8PCAxNikg LSAxKTsKPiA+ICsJCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLCAoMSA8PCAx NikgLSAxKTsKPiA+ICsJfQo+ID4gK30KPiBIbW0uIEFtIEkgaW1hZ2luaW5nIGl0LCBvciBpcyB0 aGF0IGNvZGUgcHJldHR5IG11Y2ggaWRlbnRpY2FsIHRvIHRoZQo+ICJicm9hZHdlbGwiIGNvZGU/ CgpJdCBpcyBwcmV0dHkgbXVjaCB0aGUgc2FtZS4gVGhlIGJyb2Fkd2VsbCBjb2RlIHVzZXMgc3Bs aXQgZ2FtbWEsIHNvIHRoZSB0YWJsZQpzdGFydHMgZnJvbSB0aGUgNTEydGggZW50cnkgYW5kIHJl bGllcyBvbiB0aGUgbG9hZCBvZiB0aGUgZGVnYW1tYSBsdXQgdG8gbGVhdmUKdGhlIGluZGV4IHBv aW50aW5nIHRoZXJlLiBJIGNvdWxkbid0IGZpZ3VyZSBvdXQgaG93IHRvIG1lcmdlIHRoZSB0d28g d2l0aG91dApvYnNjdXJpbmcgdGhpcy4gSSBjb3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gYmR3X2xv YWRfZ2FtbWFfbHV0KCkgYW5kIGFkZCBhCnBhcmFtZXRlciB0byB0ZWxsIHdoZXJlIHRvIHN0YXJ0 LCBidXQgaXQganVzdCBsb29rcyB3ZWlyZCB0aGF0IHRoZSBsZW5naHQgb2YgdGhlCnRhYmxlIGNv bWVzIGZyb20gZGV2aWNlIGluZm8sIGJ1dCB0aGUgc3RhcnQgaW5kZXggd291bGQgYmUgaGFyZGNv ZGVkLgoKUHJvYmFibHkgc3RpbGwgYmV0dGVyIHRoYW4gZHVwbGljYXRlZCBjb2RlLCBzbyBqdXN0 IGRvIHRoYXQuCgpBbmRlcgoKPiAKPiBJIHRoaW5rIGFsbCB0aGlzIExVVCBjb2RlIHJlYWxseSBu ZWVkcyB0byBzb21lIGhlYXZ5IGhhbmRlZCByZW5hbWluZwo+IHRvIG1ha2UgdGhpbmdzIG5vdCBj b25mdXNpbmcuIEJ1dCB0aGF0J3MgYSBzZXBhcmF0ZSBpc3N1ZS4KPiAKPiA+IAo+ID4gKwo+ID4g K3N0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkK PiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjOwo+ID4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiArCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoc3RhdGUpOwo+ID4gKwll bnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gPiArCj4gPiArCWlm IChjcnRjX3N0YXRlX2lzX2xlZ2FjeShzdGF0ZSkpIHsKPiA+ICsJCWhhc3dlbGxfbG9hZF9sdXRz KHN0YXRlKTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwo+ID4gKwlnbGtfbG9hZF9kZWdh bW1hX2x1dChzdGF0ZSk7Cj4gPiArCWdsa19sb2FkX2dhbW1hX2x1dChzdGF0ZSk7Cj4gPiArCj4g PiArCWludGVsX3N0YXRlLT5nYW1tYV9tb2RlID0gR0FNTUFfTU9ERV9NT0RFXzEwQklUOwo+ID4g KwlJOTE1X1dSSVRFKEdBTU1BX01PREUocGlwZSksIEdBTU1BX01PREVfTU9ERV8xMEJJVCk7Cj4g PiArCVBPU1RJTkdfUkVBRChHQU1NQV9NT0RFKHBpcGUpKTsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJ wqAqIFJlc2V0IHRoZSBpbmRleCwgb3RoZXJ3aXNlIGl0IHByZXZlbnRzIHRoZSBsZWdhY3kgcGFs ZXR0ZSB0byBiZQo+ID4gKwnCoCogd3JpdHRlbiBwcm9wZXJseS4KPiA+ICsJwqAqLwo+ID4gKwlJ OTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLCAwKTsKPiA+ICsJSTkxNV9XUklURShQSVBF X0NTQ19NT0RFKHBpcGUpLCAwKTsKPiA+ICt9Cj4gPiArCj4gPiDCoC8qIExvYWRzIHRoZSBwYWxl dHRlL2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDIG9uIENoZXJyeVZpZXcuICovCj4gPiDCoHN0YXRp YyB2b2lkIGNoZXJyeXZpZXdfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUp Cj4gPiDCoHsKPiA+IEBAIC01NDAsNiArNjQyLDkgQEAgdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+IMKgCQnCoMKgwqBJU19CUk9YVE9OKGRldl9wcml2KSB8 fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiA+IMKgCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2Fk X2NzY19tYXRyaXggPSBpOXh4X2xvYWRfY3NjX21hdHJpeDsKPiA+IMKgCQlkZXZfcHJpdi0+ZGlz cGxheS5sb2FkX2x1dHMgPSBicm9hZHdlbGxfbG9hZF9sdXRzOwo+ID4gKwl9IGVsc2UgaWYgKElT X0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2Nz Y19tYXRyaXggPSBpOXh4X2xvYWRfY3NjX21hdHJpeDsKPiA+ICsJCWRldl9wcml2LT5kaXNwbGF5 LmxvYWRfbHV0cyA9IGdsa19sb2FkX2x1dHM7Cj4gPiDCoAl9IGVsc2Ugewo+ID4gwqAJCWRldl9w cml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGk5eHhfbG9hZF9sdXRzOwo+ID4gwqAJfQo+ID4gLS3C oAo+ID4gMi41LjUKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=