From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v7 09/19] drm/i915/dsc: Define & Compute VESA DSC params Date: Fri, 2 Nov 2018 19:51:55 +0200 Message-ID: <20181102175155.GW9144@intel.com> References: <20181102064659.8991-1-manasi.d.navare@intel.com> <20181102064659.8991-10-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181102064659.8991-10-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org, Anusha Srivatsa , Gaurav K Singh , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBOb3YgMDEsIDIwMTggYXQgMTE6NDY6NDlQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBGcm9tOiBHYXVyYXYgSyBTaW5naCA8Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29tPgo+ IAo+IFRoaXMgcGF0Y2hlcyBkb2VzIHRoZSBmb2xsb3dpbmc6Cj4gCj4gMS4gVGhpcyBwYXRjaCBk ZWZpbmVzIGFsbCB0aGUgRFNDIHBhcmFtZXRlcnMgYXMgcGVyIHRoZSBWRVNBCj4gRFNDIHNwZWNp ZmljYXRpb24uIFRoZXNlIGFyZSBzdG9yZWQgaW4gdGhlIGVuY29kZXIgYW5kIHVzZWQKPiB0byBj b21wdXRlIHRoZSBQUFMgcGFyYW1ldGVycyB0byBiZSBzZW50IHRvIHRoZSBTaW5rLgo+IDIuIENv bXB1dGUgYWxsIHRoZSBEU0MgcGFyYW1ldGVycyB3aGljaCBhcmUgZGVyaXZlZCBmcm9tIERTQwo+ IHN0YXRlIG9mIGludGVsX2NydGNfc3RhdGUuCj4gMy4gQ29tcHV0ZSBhbGwgcGFyYW1ldGVycyB0 aGF0IGFyZSBWRVNBIERTQyBzcGVjaWZpYwo+IAo+IFRoaXMgY29tcHV0YXRpb24gaGFwcGVucyBp biB0aGUgYXRvbWljIGNoZWNrIHBoYXNlIGR1cmluZwo+IGNvbXB1dGVfY29uZmlnKCkgdG8gdmFs aWRhdGUgaWYgZGlzcGxheSBzdHJlYW0gY29tcHJlc3Npb24KPiBjYW4gYmUgZW5hYmxlZCBmb3Ig dGhlIHJlcXVlc3RlZCBtb2RlLgo+IAo+IHY3OiAoRnJvbSBNYW5hc2kpCj4gKiBEb250IHVzZSBz aWduZWQgaW50IGZvciByY19yYW5nZV9wYXJhbXMgKE1hbmFzaSkKPiAqIE1hc2sgdGhlIHJhbmdl X2JwZ19vZmZzZXQgdG8gdXNlIG9ubHkgNiBiaXRzCj4gKiBBZGQgU1BEWCBpZGVudGlmaWVyIChD aHJpcyBXaWxzb24pCj4gdjYgKEZyb20gTWFuYXNpKToKPiAqIEFkZCBhIGNoZWNrIGZvciBsaW5l X2J1Zl9kZXB0aCByZXR1cm4gdmFsdWUgKEFudXNoYSkKPiAqIFJlbW92ZSBEUk0gRFNDIGNvbnN0 YW50cyB0byBkaWZmZXJlbnQgcGF0Y2ggKE1hbmFzaSkKPiB2NSAoRnJvbSBNYW5hc2kpOgo+ICog QWRkIGxvZ2ljIHRvIGxpbWl0IHRoZSBtYXggbGluZSBidWYgZGVwdGggZm9yIERTQyAxLjEgdG8g MTMKPiBhcyBwZXIgRFNDIDEuMSBzcGVjCj4gKiBGaXggZGltIGNoZWNrcGF0Y2ggd2FybmluZ3Mv Y2hlY2tzCj4gCj4gdjQgKEZyb20gR2F1cmF2KToKPiAqIFJlYmFzZSBvbiBsYXRlc3QgZHJtIHRp cAo+ICogcmVuYW1lIHZhcmlhYmxlIG5hbWUoTWFuYXNpKQo+ICogUG9wdWxhdGUgbGluZWJ1Zl9k ZXB0aCB2YXJpYWJsZShNYW5hc2kpCj4gCj4gdjMgKEZyb20gR2F1cmF2KToKPiAqIFJlYmFzZSBt eSBwcmV2aW91cyBwYXRjaGVzIG9uIHRvcCBvZiBNYW5hc2kncyBsYXRlc3QgcGF0Y2gKPiBzZXJp ZXMKPiAqIFVzaW5nID4+biByYXRoZXIgdGhhbiAvMl5uIChNYW5hc2kpCj4gKiBDaGFuZ2UgdGhl IGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2hhdCB0aGUgcGF0Y2ggaXMgZG9pbmcoR2F1cmF2 KQo+IAo+IEZpeGVkIHJldmlldyBjb21tZW50cyBmcm9tIFZpbGxlOgo+ICogRG9uJ3QgdXNlIG1h Y3JvIFRXT1NfQ09NUExFTUVOVAo+ICogTWVudGlvbiBpbiBjb21tZW50IGFib3V0IHRoZSBzb3Vy Y2Ugb2YgUkMgcGFyYW1zCj4gKiBSZXR1cm4gZGlyZWN0bHkgZnJvbSBjYXNlIHN0YXRlbWVudHMK PiAqIFVzaW5nIHNpbmdsZSBhc3NzaWdubWVudCBmb3IgYXNzaWduaW5nIHJjX3JhbmdlX3BhcmFt cwo+ICogVXNpbmcgPDxuIHJhdGhlciB0aGFuICoyXm4gYW5kIHJlbW92aW5nIHRoZSBjb21tZW50 cwo+IGFib3V0IHRoZSBmaXhlZCBwb2ludCBudW1iZXJzCj4gCj4gdjIgKEZyb20gTWFuYXNpKToK PiAqIFVwZGF0ZSBsb2dpYyBmb3IgbWlub3IgdmVyc2lvbiB0byBjb25zaWRlciB0aGUgZHBjZCB2 YWx1ZQo+IGFuZCB3aGF0IHN1cHBvcnRlZCBieSB0aGUgSFcgcGxhdGZvcm0KPiAqIFVzZSBEUk0g RFNDIGNvbmZpZyBzdHJ1Y3QgaW5zdGVhZCBvZiBpbnRlbF9kcCBzdHJ1Y3QKPiAqIE1vdmUgdGhl IERTQyBjb25zdGFudHMgdG8gRFJNIERTQyBoZWFkZXIgZmlsZQo+ICogVXNlIHUxNiwgdTggd2hl cmUgYmlnZ2VyIGRhdGEgdHlwZXMgbm90IG5lZWRlZAo+ICogKiBDb21wdXRlIHRoZSBEU0MgcGFy YW1ldGVycyBhcyBwYXJ0IG9mIERTQyBjb21wdXRlIGNvbmZpZwo+IHNpbmNlIHRoZSBjb21wdXRh dGlvbiBjYW4gZmFpbCAoTWFuYXNpKQo+IAo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA bGludXguaW50ZWwuY29tPgo+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwu Y29tPgo+IENjOiBHYXVyYXYgSyBTaW5naCA8Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29tPgo+IFNp Z25lZC1vZmYtYnk6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4K PiBDby1kZXZlbG9wZWQtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5j b20+Cj4gUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVs LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgIHwgICAzICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8ICAgNyArCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNCArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Zkc2MuYyB8IDQ1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAgIHwgICAzICsKPiAgNSBmaWxlcyBjaGFuZ2Vk LCA0NzEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUK PiBpbmRleCAyOGM3ZDc4ODRlODguLmE1MWE5YWUwZjQ5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCj4gQEAgLTE1Niw3ICsxNTYsOCBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKPiAgCSAg aW50ZWxfc2R2by5vIFwKPiAgCSAgaW50ZWxfdHYubyBcCj4gIAkgIHZsdl9kc2kubyBcCj4gLQkg IHZsdl9kc2lfcGxsLm8KPiArCSAgdmx2X2RzaV9wbGwubyBcCj4gKwkgIGludGVsX3Zkc2Mubwo+ ICAKPiAgIyBQb3N0LW1vcnRlbSBkZWJ1ZyBhbmQgR1BVIGhhbmcgc3RhdGUgY2FwdHVyZQo+ICBp OTE1LSQoQ09ORklHX0RSTV9JOTE1X0NBUFRVUkVfRVJST1IpICs9IGk5MTVfZ3B1X2Vycm9yLm8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCAxYjEwZTI3YjNlMmIuLjEzODkxODkwZDA0 MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0yMDY5LDYgKzIwNjksMTMgQEAg c3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4gIAl9Cj4gKwlpZiAoaW50ZWxf ZHBfY29tcHV0ZV9kc2NfcGFyYW1zKGludGVsX2RwLCBwaXBlX2NvbmZpZykgPCAwKSB7Cj4gKwkJ RFJNX0VSUk9SKCJDYW5ub3QgY29tcHV0ZSB2YWxpZCBEU0MgcGFyYW1ldGVycyBmb3IgSW5wdXQg QnBwID0gJWQiCgpJcyB0aGlzIHNvbWV0aGluZyB0aGF0IGNhbid0IGhhcHBlbiBldmVyPyBJZiBu b3QgdGhpcyBuZWVkcyB0byBiZSAKRFJNX0RFQlVHX0tNUygpLgoKPiArCQkJICAiQ29tcHJlc3Nl ZCBCUFAgPSAlZFxuIiwKPiArCQkJICBwaXBlX2NvbmZpZy0+cGlwZV9icHAsCj4gKwkJCSAgcGlw ZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9icHApOwo+ICsJCXJldHVybiBmYWxzZTsK PiArCX0KPiAgCXBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzaW9uX2VuYWJsZSA9IHRy dWU7Cj4gIAlEUk1fREVCVUdfS01TKCJEUCBEU0MgY29tcHV0ZWQgd2l0aCBJbnB1dCBCcHAgPSAl ZCAiCj4gIAkJICAgICAgIkNvbXByZXNzZWQgQnBwID0gJWQgU2xpY2UgQ291bnQgPSAlZFxuIiwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDQ5MTg3MjM1M2NmMC4uM2I1NzE0Njc2 NmJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTg1Myw2ICsxODUzLDEw IEBAIHVpbnQxNl90IGludGVsX2RwX2RzY19nZXRfb3V0cHV0X2JwcChpbnQgbGlua19jbG9jaywg dWludDhfdCBsYW5lX2NvdW50LAo+ICB1aW50OF90IGludGVsX2RwX2RzY19nZXRfc2xpY2VfY291 bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1vZGVfY2xvY2ssCj4gIAkJCQkgICAg IGludCBtb2RlX2hkaXNwbGF5KTsKPiAgCj4gKy8qIGludGVsX3Zkc2MuYyAqLwo+ICtpbnQgaW50 ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gKwkJ CQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwo+ICsKPiAgc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgaW50ZWxfZHBfdW51c2VkX2xhbmVfbWFzayhpbnQgbGFuZV9jb3Vu dCkKPiAgewo+ICAJcmV0dXJuIH4oKDEgPDwgbGFuZV9jb3VudCkgLSAxKSAmIDB4ZjsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjBhMTkxOGYyZjY0Mwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKPiBAQCAtMCwwICsxLDQ1NSBAQAo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVs IENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIEF1dGhvcjogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5r LnNpbmdoQGludGVsLmNvbT4KPiArICogICAgICAgICBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5u YXZhcmVAaW50ZWwuY29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsj aW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5j bHVkZSAiaW50ZWxfZHJ2LmgiCj4gKwo+ICtlbnVtIFJPV19JTkRFWF9CUFAgewo+ICsJUk9XX0lO REVYXzZCUFAgPSAwLAo+ICsJUk9XX0lOREVYXzhCUFAsCj4gKwlST1dfSU5ERVhfMTBCUFAsCj4g KwlST1dfSU5ERVhfMTJCUFAsCj4gKwlST1dfSU5ERVhfMTVCUFAsCj4gKwlNQVhfUk9XX0lOREVY Cj4gK307Cj4gKwo+ICtlbnVtIENPTFVNTl9JTkRFWF9CUEMgewo+ICsJQ09MVU1OX0lOREVYXzhC UEMgPSAwLAo+ICsJQ09MVU1OX0lOREVYXzEwQlBDLAo+ICsJQ09MVU1OX0lOREVYXzEyQlBDLAo+ ICsJQ09MVU1OX0lOREVYXzE0QlBDLAo+ICsJQ09MVU1OX0lOREVYXzE2QlBDLAo+ICsJTUFYX0NP TFVNTl9JTkRFWAo+ICt9Owo+ICsKPiArI2RlZmluZSBEU0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlO CQkxCj4gKwo+ICsvKiBGcm9tIERTQ192MS4xMSBzcGVjLCByY19wYXJhbWV0ZXJfU2V0IHN5bnRh eCBlbGVtZW50IHR5cGljYWxseSBjb25zdGFudCAqLwo+ICtzdGF0aWMgdTE2IHJjX2J1Zl90aHJl c2hbXSA9IHsKPiArCTg5NiwgMTc5MiwgMjY4OCwgMzU4NCwgNDQ4MCwgNTM3NiwgNjI3MiwgNjcy MCwgNzE2OCwgNzYxNiwKPiArCTc3NDQsIDc4NzIsIDgwMDAsIDgwNjQKPiArfTsKPiArCj4gK3N0 cnVjdCByY19wYXJhbWV0ZXJzIHsKPiArCXUxNiBpbml0aWFsX3htaXRfZGVsYXk7Cj4gKwl1OCBm aXJzdF9saW5lX2JwZ19vZmZzZXQ7Cj4gKwl1MTYgaW5pdGlhbF9vZmZzZXQ7Cj4gKwl1OCBmbGF0 bmVzc19taW5fcXA7Cj4gKwl1OCBmbGF0bmVzc19tYXhfcXA7Cj4gKwl1OCByY19xdWFudF9pbmNy X2xpbWl0MDsKPiArCXU4IHJjX3F1YW50X2luY3JfbGltaXQxOwo+ICsJc3RydWN0IGRybV9kc2Nf cmNfcmFuZ2VfcGFyYW1ldGVycyByY19yYW5nZV9wYXJhbXNbRFNDX05VTV9CVUZfUkFOR0VTXTsK PiArfTsKPiArCj4gKy8qCj4gKyAqIFNlbGVjdGVkIFJhdGUgQ29udHJvbCBSZWxhdGVkIFBhcmFt ZXRlciBSZWNvbW1lbmRlZCBWYWx1ZXMKPiArICogZnJvbSBEU0NfdjEuMTEgc3BlYyAmIEMgTW9k ZWwgcmVsZWFzZTogRFNDX21vZGVsXzIwMTYxMjEyCj4gKyAqLwo+ICtzdGF0aWMgc3RydWN0IHJj X3BhcmFtZXRlcnMgcmNfcGFyYW1zW11bTUFYX0NPTFVNTl9JTkRFWF0gPSB7Cj4gK3sKPiArCS8q IDZCUFAvOEJQQyAqLwo+ICsJeyA3NjgsIDE1LCA2MTQ0LCAzLCAxMywgMTEsIDExLCB7Cj4gKwkJ eyAwLCA0LCAwIH0sIHsgMSwgNiwgLTIgfSwgeyAzLCA4LCAtMiB9LCB7IDQsIDgsIC00IH0sCj4g KwkJeyA1LCA5LCAtNiB9LCB7IDUsIDksIC02IH0sIHsgNiwgOSwgLTYgfSwgeyA2LCAxMCwgLTgg fSwKPiArCQl7IDcsIDExLCAtOCB9LCB7IDgsIDEyLCAtMTAgfSwgeyA5LCAxMiwgLTEwIH0sIHsg MTAsIDEyLCAtMTIgfSwKPiArCQl7IDEwLCAxMiwgLTEyIH0sIHsgMTEsIDEyLCAtMTIgfSwgeyAx MywgMTQsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDZCUFAvMTBCUEMgKi8KPiArCXsgNzY4 LCAxNSwgNjE0NCwgNywgMTcsIDE1LCAxNSwgewo+ICsJCXsgMCwgOCwgMCB9LCB7IDMsIDEwLCAt MiB9LCB7IDcsIDEyLCAtMiB9LCB7IDgsIDEyLCAtNCB9LAo+ICsJCXsgOSwgMTMsIC02IH0sIHsg OSwgMTMsIC02IH0sIHsgMTAsIDEzLCAtNiB9LCB7IDEwLCAxNCwgLTggfSwKPiArCQl7IDExLCAx NSwgLTggfSwgeyAxMiwgMTYsIC0xMCB9LCB7IDEzLCAxNiwgLTEwIH0sCj4gKwkJeyAxNCwgMTYs IC0xMiB9LCB7IDE0LCAxNiwgLTEyIH0sIHsgMTUsIDE2LCAtMTIgfSwKPiArCQl7IDE3LCAxOCwg LTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogNkJQUC8xMkJQQyAqLwo+ICsJeyA3NjgsIDE1LCA2 MTQ0LCAxMSwgMjEsIDE5LCAxOSwgewo+ICsJCXsgMCwgMTIsIDAgfSwgeyA1LCAxNCwgLTIgfSwg eyAxMSwgMTYsIC0yIH0sIHsgMTIsIDE2LCAtNCB9LAo+ICsJCXsgMTMsIDE3LCAtNiB9LCB7IDEz LCAxNywgLTYgfSwgeyAxNCwgMTcsIC02IH0sIHsgMTQsIDE4LCAtOCB9LAo+ICsJCXsgMTUsIDE5 LCAtOCB9LCB7IDE2LCAyMCwgLTEwIH0sIHsgMTcsIDIwLCAtMTAgfSwKPiArCQl7IDE4LCAyMCwg LTEyIH0sIHsgMTgsIDIwLCAtMTIgfSwgeyAxOSwgMjAsIC0xMiB9LAo+ICsJCXsgMjEsIDIyLCAt MTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiA2QlBQLzE0QlBDICovCj4gKwl7IDc2OCwgMTUsIDYx NDQsIDE1LCAyNSwgMjMsIDI3LCB7Cj4gKwkJeyAwLCAxNiwgMCB9LCB7IDcsIDE4LCAtMiB9LCB7 IDE1LCAyMCwgLTIgfSwgeyAxNiwgMjAsIC00IH0sCj4gKwkJeyAxNywgMjEsIC02IH0sIHsgMTcs IDIxLCAtNiB9LCB7IDE4LCAyMSwgLTYgfSwgeyAxOCwgMjIsIC04IH0sCj4gKwkJeyAxOSwgMjMs IC04IH0sIHsgMjAsIDI0LCAtMTAgfSwgeyAyMSwgMjQsIC0xMCB9LAo+ICsJCXsgMjIsIDI0LCAt MTIgfSwgeyAyMiwgMjQsIC0xMiB9LCB7IDIzLCAyNCwgLTEyIH0sCj4gKwkJeyAyNSwgMjYsIC0x MiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDZCUFAvMTZCUEMgKi8KPiArCXsgNzY4LCAxNSwgNjE0 NCwgMTksIDI5LCAyNywgMjcsIHsKPiArCQl7IDAsIDIwLCAwIH0sIHsgOSwgMjIsIC0yIH0sIHsg MTksIDI0LCAtMiB9LCB7IDIwLCAyNCwgLTQgfSwKPiArCQl7IDIxLCAyNSwgLTYgfSwgeyAyMSwg MjUsIC02IH0sIHsgMjIsIDI1LCAtNiB9LCB7IDIyLCAyNiwgLTggfSwKPiArCQl7IDIzLCAyNywg LTggfSwgeyAyNCwgMjgsIC0xMCB9LCB7IDI1LCAyOCwgLTEwIH0sCj4gKwkJeyAyNiwgMjgsIC0x MiB9LCB7IDI2LCAyOCwgLTEyIH0sIHsgMjcsIDI4LCAtMTIgfSwKPiArCQl7IDI5LCAzMCwgLTEy IH0KPiArCQl9Cj4gKwl9LAo+ICt9LAo+ICt7Cj4gKwkvKiA4QlBQLzhCUEMgKi8KPiArCXsgNTEy LCAxMiwgNjE0NCwgMywgMTIsIDExLCAxMSwgewo+ICsJCXsgMCwgNCwgMiB9LCB7IDAsIDQsIDAg fSwgeyAxLCA1LCAwIH0sIHsgMSwgNiwgLTIgfSwKPiArCQl7IDMsIDcsIC00IH0sIHsgMywgNywg LTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCj4gKwkJeyAzLCA5LCAtOCB9LCB7IDMs IDEwLCAtMTAgfSwgeyA1LCAxMSwgLTEwIH0sIHsgNSwgMTIsIC0xMiB9LAo+ICsJCXsgNSwgMTMs IC0xMiB9LCB7IDcsIDEzLCAtMTIgfSwgeyAxMywgMTUsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiAr CS8qIDhCUFAvMTBCUEMgKi8KPiArCXsgNTEyLCAxMiwgNjE0NCwgNywgMTYsIDE1LCAxNSwgewo+ ICsJCXsgMCwgNCwgMiB9LCB7IDQsIDgsIDAgfSwgeyA1LCA5LCAwIH0sIHsgNSwgMTAsIC0yIH0s Cj4gKwkJeyA3LCAxMSwgLTQgfSwgeyA3LCAxMSwgLTYgfSwgeyA3LCAxMSwgLTggfSwgeyA3LCAx MiwgLTggfSwKPiArCQl7IDcsIDEzLCAtOCB9LCB7IDcsIDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEw IH0sIHsgOSwgMTYsIC0xMiB9LAo+ICsJCXsgOSwgMTcsIC0xMiB9LCB7IDExLCAxNywgLTEyIH0s IHsgMTcsIDE5LCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiA4QlBQLzEyQlBDICovCj4gKwl7 IDUxMiwgMTIsIDYxNDQsIDExLCAyMCwgMTksIDE5LCB7Cj4gKwkJeyAwLCAxMiwgMiB9LCB7IDQs IDEyLCAwIH0sIHsgOSwgMTMsIDAgfSwgeyA5LCAxNCwgLTIgfSwKPiArCQl7IDExLCAxNSwgLTQg fSwgeyAxMSwgMTUsIC02IH0sIHsgMTEsIDE1LCAtOCB9LCB7IDExLCAxNiwgLTggfSwKPiArCQl7 IDExLCAxNywgLTggfSwgeyAxMSwgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEwIH0sCj4gKwkJeyAx MywgMjAsIC0xMiB9LCB7IDEzLCAyMSwgLTEyIH0sIHsgMTUsIDIxLCAtMTIgfSwKPiArCQl7IDIx LCAyMywgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogOEJQUC8xNEJQQyAqLwo+ICsJeyA1MTIs IDEyLCA2MTQ0LCAxNSwgMjQsIDIzLCAyMywgewo+ICsJCXsgMCwgMTIsIDAgfSwgeyA1LCAxMywg MCB9LCB7IDExLCAxNSwgMCB9LCB7IDEyLCAxNywgLTIgfSwKPiArCQl7IDE1LCAxOSwgLTQgfSwg eyAxNSwgMTksIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTggfSwKPiArCQl7IDE1 LCAyMSwgLTggfSwgeyAxNSwgMjIsIC0xMCB9LCB7IDE3LCAyMiwgLTEwIH0sCj4gKwkJeyAxNywg MjMsIC0xMiB9LCB7IDE3LCAyMywgLTEyIH0sIHsgMjEsIDI0LCAtMTIgfSwKPiArCQl7IDI0LCAy NSwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogOEJQUC8xNkJQQyAqLwo+ICsJeyA1MTIsIDEy LCA2MTQ0LCAxOSwgMjgsIDI3LCAyNywgewo+ICsJCXsgMCwgMTIsIDIgfSwgeyA2LCAxNCwgMCB9 LCB7IDEzLCAxNywgMCB9LCB7IDE1LCAyMCwgLTIgfSwKPiArCQl7IDE5LCAyMywgLTQgfSwgeyAx OSwgMjMsIC02IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5LCAyNCwgLTggfSwKPiArCQl7IDE5LCAy NSwgLTggfSwgeyAxOSwgMjYsIC0xMCB9LCB7IDIxLCAyNiwgLTEwIH0sCj4gKwkJeyAyMSwgMjcs IC0xMiB9LCB7IDIxLCAyNywgLTEyIH0sIHsgMjUsIDI4LCAtMTIgfSwKPiArCQl7IDI4LCAyOSwg LTEyIH0KPiArCQl9Cj4gKwl9LAo+ICt9LAo+ICt7Cj4gKwkvKiAxMEJQUC84QlBDICovCj4gKwl7 IDQxMCwgMTUsIDU2MzIsIDMsIDEyLCAxMSwgMTEsIHsKPiArCQl7IDAsIDMsIDIgfSwgeyAwLCA0 LCAwIH0sIHsgMSwgNSwgMCB9LCB7IDIsIDYsIC0yIH0sCj4gKwkJeyAzLCA3LCAtNCB9LCB7IDMs IDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LAo+ICsJCXsgMywgOSwgLTggfSwg eyAzLCA5LCAtMTAgfSwgeyA1LCAxMCwgLTEwIH0sIHsgNSwgMTAsIC0xMCB9LAo+ICsJCXsgNSwg MTEsIC0xMiB9LCB7IDcsIDExLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9Cj4gKwkJfQo+ICsJfSwK PiArCS8qIDEwQlBQLzEwQlBDICovCj4gKwl7IDQxMCwgMTUsIDU2MzIsIDcsIDE2LCAxNSwgMTUs IHsKPiArCQl7IDAsIDcsIDIgfSwgeyA0LCA4LCAwIH0sIHsgNSwgOSwgMCB9LCB7IDYsIDEwLCAt MiB9LAo+ICsJCXsgNywgMTEsIC00IH0sIHsgNywgMTEsIC02IH0sIHsgNywgMTEsIC04IH0sIHsg NywgMTIsIC04IH0sCj4gKwkJeyA3LCAxMywgLTggfSwgeyA3LCAxMywgLTEwIH0sIHsgOSwgMTQs IC0xMCB9LCB7IDksIDE0LCAtMTAgfSwKPiArCQl7IDksIDE1LCAtMTIgfSwgeyAxMSwgMTUsIC0x MiB9LCB7IDE1LCAxNiwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTBCUFAvMTJCUEMgKi8K PiArCXsgNDEwLCAxNSwgNTYzMiwgMTEsIDIwLCAxOSwgMTksIHsKPiArCQl7IDAsIDExLCAyIH0s IHsgNCwgMTIsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDEwLCAxNCwgLTIgfSwKPiArCQl7IDExLCAx NSwgLTQgfSwgeyAxMSwgMTUsIC02IH0sIHsgMTEsIDE1LCAtOCB9LCB7IDExLCAxNiwgLTggfSwK PiArCQl7IDExLCAxNywgLTggfSwgeyAxMSwgMTcsIC0xMCB9LCB7IDEzLCAxOCwgLTEwIH0sCj4g KwkJeyAxMywgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEyIH0sIHsgMTUsIDE5LCAtMTIgfSwKPiAr CQl7IDE5LCAyMCwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTBCUFAvMTRCUEMgKi8KPiAr CXsgNDEwLCAxNSwgNTYzMiwgMTUsIDI0LCAyMywgMjMsIHsKPiArCQl7IDAsIDExLCAyIH0sIHsg NSwgMTMsIDAgfSwgeyAxMSwgMTUsIDAgfSwgeyAxMywgMTgsIC0yIH0sCj4gKwkJeyAxNSwgMTks IC00IH0sIHsgMTUsIDE5LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwgMjAsIC04IH0sCj4g KwkJeyAxNSwgMjEsIC04IH0sIHsgMTUsIDIxLCAtMTAgfSwgeyAxNywgMjIsIC0xMCB9LAo+ICsJ CXsgMTcsIDIyLCAtMTAgfSwgeyAxNywgMjMsIC0xMiB9LCB7IDE5LCAyMywgLTEyIH0sCj4gKwkJ eyAyMywgMjQsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDEwQlBQLzE2QlBDICovCj4gKwl7 IDQxMCwgMTUsIDU2MzIsIDE5LCAyOCwgMjcsIDI3LCB7Cj4gKwkJeyAwLCAxMSwgMiB9LCB7IDYs IDE0LCAwIH0sIHsgMTMsIDE3LCAwIH0sIHsgMTYsIDIwLCAtMiB9LAo+ICsJCXsgMTksIDIzLCAt NCB9LCB7IDE5LCAyMywgLTYgfSwgeyAxOSwgMjMsIC04IH0sIHsgMTksIDI0LCAtOCB9LAo+ICsJ CXsgMTksIDI1LCAtOCB9LCB7IDE5LCAyNSwgLTEwIH0sIHsgMjEsIDI2LCAtMTAgfSwKPiArCQl7 IDIxLCAyNiwgLTEwIH0sIHsgMjEsIDI3LCAtMTIgfSwgeyAyMywgMjcsIC0xMiB9LAo+ICsJCXsg MjcsIDI4LCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gK30sCj4gK3sKPiArCS8qIDEyQlBQLzhCUEMg Ki8KPiArCXsgMzQxLCAxNSwgMjA0OCwgMywgMTIsIDExLCAxMSwgewo+ICsJCXsgMCwgMiwgMiB9 LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0sIHsgMSwgNiwgLTIgfSwKPiArCQl7IDMsIDcsIC00 IH0sIHsgMywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCj4gKwkJeyAzLCA5 LCAtOCB9LCB7IDMsIDEwLCAtMTAgfSwgeyA1LCAxMSwgLTEwIH0sCj4gKwkJeyA1LCAxMiwgLTEy IH0sIHsgNSwgMTMsIC0xMiB9LCB7IDcsIDEzLCAtMTIgfSwgeyAxMywgMTUsIC0xMiB9Cj4gKwkJ fQo+ICsJfSwKPiArCS8qIDEyQlBQLzEwQlBDICovCj4gKwl7IDM0MSwgMTUsIDIwNDgsIDcsIDE2 LCAxNSwgMTUsIHsKPiArCQl7IDAsIDIsIDIgfSwgeyAyLCA1LCAwIH0sIHsgMywgNywgMCB9LCB7 IDQsIDgsIC0yIH0sCj4gKwkJeyA2LCA5LCAtNCB9LCB7IDcsIDEwLCAtNiB9LCB7IDcsIDExLCAt OCB9LCB7IDcsIDEyLCAtOCB9LAo+ICsJCXsgNywgMTMsIC04IH0sIHsgNywgMTQsIC0xMCB9LCB7 IDksIDE1LCAtMTAgfSwgeyA5LCAxNiwgLTEyIH0sCj4gKwkJeyA5LCAxNywgLTEyIH0sIHsgMTEs IDE3LCAtMTIgfSwgeyAxNywgMTksIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDEyQlBQLzEy QlBDICovCj4gKwl7IDM0MSwgMTUsIDIwNDgsIDExLCAyMCwgMTksIDE5LCB7Cj4gKwkJeyAwLCA2 LCAyIH0sIHsgNCwgOSwgMCB9LCB7IDcsIDExLCAwIH0sIHsgOCwgMTIsIC0yIH0sCj4gKwkJeyAx MCwgMTMsIC00IH0sIHsgMTEsIDE0LCAtNiB9LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04 IH0sCj4gKwkJeyAxMSwgMTcsIC04IH0sIHsgMTEsIDE4LCAtMTAgfSwgeyAxMywgMTksIC0xMCB9 LAo+ICsJCXsgMTMsIDIwLCAtMTIgfSwgeyAxMywgMjEsIC0xMiB9LCB7IDE1LCAyMSwgLTEyIH0s Cj4gKwkJeyAyMSwgMjMsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDEyQlBQLzE0QlBDICov Cj4gKwl7IDM0MSwgMTUsIDIwNDgsIDE1LCAyNCwgMjMsIDIzLCB7Cj4gKwkJeyAwLCA2LCAyIH0s IHsgNywgMTAsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDExLCAxNiwgLTIgfSwKPiArCQl7IDE0LCAx NywgLTQgfSwgeyAxNSwgMTgsIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTggfSwK PiArCQl7IDE1LCAyMCwgLTggfSwgeyAxNSwgMjEsIC0xMCB9LCB7IDE3LCAyMSwgLTEwIH0sCj4g KwkJeyAxNywgMjEsIC0xMiB9LCB7IDE3LCAyMSwgLTEyIH0sIHsgMTksIDIyLCAtMTIgfSwKPiAr CQl7IDIyLCAyMywgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTJCUFAvMTZCUEMgKi8KPiAr CXsgMzQxLCAxNSwgMjA0OCwgMTksIDI4LCAyNywgMjcsIHsKPiArCQl7IDAsIDYsIDIgfSwgeyA2 LCAxMSwgMCB9LCB7IDExLCAxNSwgMCB9LCB7IDE0LCAxOCwgLTIgfSwKPiArCQl7IDE4LCAyMSwg LTQgfSwgeyAxOSwgMjIsIC02IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5LCAyNCwgLTggfSwKPiAr CQl7IDE5LCAyNCwgLTggfSwgeyAxOSwgMjUsIC0xMCB9LCB7IDIxLCAyNSwgLTEwIH0sCj4gKwkJ eyAyMSwgMjUsIC0xMiB9LCB7IDIxLCAyNSwgLTEyIH0sIHsgMjMsIDI2LCAtMTIgfSwKPiArCQl7 IDI2LCAyNywgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICt9LAo+ICt7Cj4gKwkvKiAxNUJQUC84QlBD ICovCj4gKwl7IDI3MywgMTUsIDIwNDgsIDMsIDEyLCAxMSwgMTEsIHsKPiArCQl7IDAsIDAsIDEw IH0sIHsgMCwgMSwgOCB9LCB7IDAsIDEsIDYgfSwgeyAwLCAyLCA0IH0sCj4gKwkJeyAxLCAyLCAy IH0sIHsgMSwgMywgMCB9LCB7IDEsIDMsIC0yIH0sIHsgMiwgNCwgLTQgfSwKPiArCQl7IDIsIDUs IC02IH0sIHsgMywgNSwgLTggfSwgeyA0LCA2LCAtMTAgfSwgeyA0LCA3LCAtMTAgfSwKPiArCQl7 IDUsIDcsIC0xMiB9LCB7IDcsIDgsIC0xMiB9LCB7IDgsIDksIC0xMiB9Cj4gKwkJfQo+ICsJfSwK PiArCS8qIDE1QlBQLzEwQlBDICovCj4gKwl7IDI3MywgMTUsIDIwNDgsIDcsIDE2LCAxNSwgMTUs IHsKPiArCQl7IDAsIDIsIDEwIH0sIHsgMiwgNSwgOCB9LCB7IDMsIDUsIDYgfSwgeyA0LCA2LCA0 IH0sCj4gKwkJeyA1LCA2LCAyIH0sIHsgNSwgNywgMCB9LCB7IDUsIDcsIC0yIH0sIHsgNiwgOCwg LTQgfSwKPiArCQl7IDYsIDksIC02IH0sIHsgNywgOSwgLTggfSwgeyA4LCAxMCwgLTEwIH0sIHsg OCwgMTEsIC0xMCB9LAo+ICsJCXsgOSwgMTEsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0sIHsgMTIs IDEzLCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiAxNUJQUC8xMkJQQyAqLwo+ICsJeyAyNzMs IDE1LCAyMDQ4LCAxMSwgMjAsIDE5LCAxOSwgewo+ICsJCXsgMCwgNCwgMTAgfSwgeyAyLCA3LCA4 IH0sIHsgNCwgOSwgNiB9LCB7IDYsIDExLCA0IH0sCj4gKwkJeyA5LCAxMSwgMiB9LCB7IDksIDEx LCAwIH0sIHsgOSwgMTIsIC0yIH0sIHsgMTAsIDEyLCAtNCB9LAo+ICsJCXsgMTEsIDEzLCAtNiB9 LCB7IDExLCAxMywgLTggfSwgeyAxMiwgMTQsIC0xMCB9LAo+ICsJCXsgMTMsIDE1LCAtMTAgfSwg eyAxMywgMTUsIC0xMiB9LCB7IDE1LCAxNiwgLTEyIH0sCj4gKwkJeyAxNiwgMTcsIC0xMiB9Cj4g KwkJfQo+ICsJfSwKPiArCS8qIDE1QlBQLzE0QlBDICovCj4gKwl7IDI3MywgMTUsIDIwNDgsIDE1 LCAyNCwgMjMsIDIzLCB7Cj4gKwkJeyAwLCA0LCAxMCB9LCB7IDMsIDgsIDggfSwgeyA2LCAxMSwg NiB9LCB7IDksIDE0LCA0IH0sCj4gKwkJeyAxMywgMTUsIDIgfSwgeyAxMywgMTUsIDAgfSwgeyAx MywgMTYsIC0yIH0sIHsgMTQsIDE2LCAtNCB9LAo+ICsJCXsgMTUsIDE3LCAtNiB9LCB7IDE1LCAx NywgLTggfSwgeyAxNiwgMTgsIC0xMCB9LAo+ICsJCXsgMTcsIDE5LCAtMTAgfSwgeyAxNywgMTks IC0xMiB9LCB7IDE5LCAyMCwgLTEyIH0sCj4gKwkJeyAyMCwgMjEsIC0xMiB9Cj4gKwkJfQo+ICsJ fSwKPiArCS8qIDE1QlBQLzE2QlBDICovCj4gKwl7IDI3MywgMTUsIDIwNDgsIDE5LCAyOCwgMjcs IDI3LCB7Cj4gKwkJeyAwLCA0LCAxMCB9LCB7IDQsIDksIDggfSwgeyA4LCAxMywgNiB9LCB7IDEy LCAxNywgNCB9LAo+ICsJCXsgMTcsIDE5LCAyIH0sIHsgMTcsIDIwLCAwIH0sIHsgMTcsIDIwLCAt MiB9LCB7IDE4LCAyMCwgLTQgfSwKPiArCQl7IDE5LCAyMSwgLTYgfSwgeyAxOSwgMjEsIC04IH0s IHsgMjAsIDIyLCAtMTAgfSwKPiArCQl7IDIxLCAyMywgLTEwIH0sIHsgMjEsIDIzLCAtMTIgfSwg eyAyMywgMjQsIC0xMiB9LAo+ICsJCXsgMjQsIDI1LCAtMTIgfQo+ICsJCX0KPiArCX0KPiArfQo+ ICt9Owo+ICsKPiArc3RhdGljIGludCBnZXRfcm93X2luZGV4X2Zvcl9yY19wYXJhbXModTE2IGNv bXByZXNzZWRfYnBwKQo+ICt7Cj4gKwlzd2l0Y2ggKGNvbXByZXNzZWRfYnBwKSB7Cj4gKwljYXNl IDY6Cj4gKwkJcmV0dXJuIFJPV19JTkRFWF82QlBQOwo+ICsJY2FzZSA4Ogo+ICsJCXJldHVybiBS T1dfSU5ERVhfOEJQUDsKPiArCWNhc2UgMTA6Cj4gKwkJcmV0dXJuIFJPV19JTkRFWF8xMEJQUDsK PiArCWNhc2UgMTI6Cj4gKwkJcmV0dXJuIFJPV19JTkRFWF8xMkJQUDsKPiArCWNhc2UgMTU6Cj4g KwkJcmV0dXJuIFJPV19JTkRFWF8xNUJQUDsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZ2V0X2NvbHVtbl9pbmRleF9mb3JfcmNf cGFyYW1zKHU4IGJpdHNfcGVyX2NvbXBvbmVudCkKPiArewo+ICsJc3dpdGNoIChiaXRzX3Blcl9j b21wb25lbnQpIHsKPiArCWNhc2UgODoKPiArCQlyZXR1cm4gQ09MVU1OX0lOREVYXzhCUEM7Cj4g KwljYXNlIDEwOgo+ICsJCXJldHVybiBDT0xVTU5fSU5ERVhfMTBCUEM7Cj4gKwljYXNlIDEyOgo+ ICsJCXJldHVybiBDT0xVTU5fSU5ERVhfMTJCUEM7Cj4gKwljYXNlIDE0Ogo+ICsJCXJldHVybiBD T0xVTU5fSU5ERVhfMTRCUEM7Cj4gKwljYXNlIDE2Ogo+ICsJCXJldHVybiBDT0xVTU5fSU5ERVhf MTZCUEM7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICt9Cj4gKwo+ ICtpbnQgaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gK3sKPiAr CXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmcGlwZV9jb25maWctPmRwX2RzY19j Zmc7Cj4gKwl1MTYgY29tcHJlc3NlZF9icHAgPSBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21w cmVzc2VkX2JwcDsKPiArCXU4IGkgPSAwOwo+ICsJdTggcm93X2luZGV4ID0gMDsKPiArCXU4IGNv bHVtbl9pbmRleCA9IDA7Cj4gKwl1OCBsaW5lX2J1Zl9kZXB0aCA9IDA7Cj4gKwo+ICsJdmRzY19j ZmctPnBpY193aWR0aCA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlz cGxheTsKPiArCXZkc2NfY2ZnLT5waWNfaGVpZ2h0ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+ICsJdmRzY19jZmctPnNsaWNlX3dpZHRoID0gRElWX1JP VU5EX1VQKHZkc2NfY2ZnLT5waWNfd2lkdGgsCj4gKwkJCQkJICAgICBwaXBlX2NvbmZpZy0+ZHNj X3BhcmFtcy5zbGljZV9jb3VudCk7Cj4gKwkvKgo+ICsJICogU2xpY2UgSGVpZ2h0IG9mIDggd29y a3MgZm9yIGFsbCBjdXJyZW50bHkgYXZhaWxhYmxlIHBhbmVscy4gU28gc3RhcnQKPiArCSAqIHdp dGggdGhhdCBpZiBwaWNfaGVpZ2h0IGlzIGFuIGludGVncmFsIG11bHRpcGxlIG9mIDguCj4gKwkg KiBFdmVudHVhbGx5IGFkZCBsb2dpYyB0byB0cnkgbXVsdGlwbGUgc2xpY2UgaGVpZ2h0cy4KPiAr CSAqLwo+ICsJaWYgKHZkc2NfY2ZnLT5waWNfaGVpZ2h0ICUgOCA9PSAwKQo+ICsJCXZkc2NfY2Zn LT5zbGljZV9oZWlnaHQgPSA4Owo+ICsJZWxzZSBpZiAodmRzY19jZmctPnBpY19oZWlnaHQgJSA0 ID09IDApCj4gKwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDQ7Cj4gKwllbHNlCj4gKwkJdmRz Y19jZmctPnNsaWNlX2hlaWdodCA9IDI7Cj4gKwo+ICsJLyogVmFsdWVzIGZpbGxlZCBmcm9tIERT QyBTaW5rIERQQ0QgKi8KPiArCXZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9tYWpvciA9Cj4gKwkJKGlu dGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfUkVWIC0gRFBfRFNDX1NVUFBPUlRdICYKPiArCQkgRFBf RFNDX01BSk9SX01BU0spID4+IERQX0RTQ19NQUpPUl9TSElGVDsKPiArCXZkc2NfY2ZnLT5kc2Nf dmVyc2lvbl9taW5vciA9Cj4gKwkJbWluKERTQ19TVVBQT1JURURfVkVSU0lPTl9NSU4sCj4gKwkJ ICAgIChpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFNDX1JFViAtIERQX0RTQ19TVVBQT1JUXSAmCj4g KwkJICAgICBEUF9EU0NfTUlOT1JfTUFTSykgPj4gRFBfRFNDX01JTk9SX1NISUZUKTsKPiArCj4g Kwl2ZHNjX2NmZy0+Y29udmVydF9yZ2IgPSBpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFNDX0RFQ19D T0xPUl9GT1JNQVRfQ0FQIC0gRFBfRFNDX1NVUFBPUlRdICYKPiArCQlEUF9EU0NfUkdCOwo+ICsK PiArCWxpbmVfYnVmX2RlcHRoID0gZHJtX2RwX2RzY19zaW5rX2xpbmVfYnVmX2RlcHRoKGludGVs X2RwLT5kc2NfZHBjZCk7Cj4gKwlpZiAoIWxpbmVfYnVmX2RlcHRoKSB7Cj4gKwkJRFJNX0RFQlVH X0tNUygiRFNDIFNpbmsgTGluZSBCdWZmZXIgRGVwdGggaW52YWxpZFxuIik7Cj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gKwl9Cj4gKwlpZiAodmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yID09IDIp Cj4gKwkJdmRzY19jZmctPmxpbmVfYnVmX2RlcHRoID0gKGxpbmVfYnVmX2RlcHRoID09IERTQ18x XzJfTUFYX0xJTkVCVUZfREVQVEhfQklUUykgPwo+ICsJCQlEU0NfMV8yX01BWF9MSU5FQlVGX0RF UFRIX1ZBTCA6IGxpbmVfYnVmX2RlcHRoOwo+ICsJZWxzZQo+ICsJCXZkc2NfY2ZnLT5saW5lX2J1 Zl9kZXB0aCA9IChsaW5lX2J1Zl9kZXB0aCA+IERTQ18xXzFfTUFYX0xJTkVCVUZfREVQVEhfQklU UykgPwo+ICsJCQlEU0NfMV8xX01BWF9MSU5FQlVGX0RFUFRIX0JJVFMgOiBsaW5lX2J1Zl9kZXB0 aDsKPiArCj4gKwkvKiBHZW4gMTEgZG9lcyBub3Qgc3VwcG9ydCBZQ2JDciAqLwo+ICsJdmRzY19j ZmctPmVuYWJsZTQyMiA9IGZhbHNlOwo+ICsJLyogR2VuIDExIGRvZXMgbm90IHN1cHBvcnQgVkJS ICovCj4gKwl2ZHNjX2NmZy0+dmJyX2VuYWJsZSA9IGZhbHNlOwo+ICsJdmRzY19jZmctPmJsb2Nr X3ByZWRfZW5hYmxlID0KPiArCQkJaW50ZWxfZHAtPmRzY19kcGNkW0RQX0RTQ19CTEtfUFJFRElD VElPTl9TVVBQT1JUIC0gRFBfRFNDX1NVUFBPUlRdICYKPiArCQlEUF9EU0NfQkxLX1BSRURJQ1RJ T05fSVNfU1VQUE9SVEVEOwo+ICsKPiArCS8qIEdlbiAxMSBvbmx5IHN1cHBvcnRzIGludGVncmFs IHZhbHVlcyBvZiBicHAgKi8KPiArCXZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCA9IGNvbXByZXNz ZWRfYnBwIDw8IDQ7Cj4gKwl2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID0gcGlwZV9jb25m aWctPnBpcGVfYnBwIC8gMzsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFO R0VTIC0gMTsgaSsrKSB7Cj4gKwkJLyoKPiArCQkgKiBzaXggMHMgYXJlIGFwcGVuZGVkIHRvIHRo ZSBsc2Igb2YgZWFjaCB0aHJlc2hvbGQgdmFsdWUKPiArCQkgKiBpbnRlcm5hbGx5IGluIGgvdy4K PiArCQkgKiBPbmx5IDggYml0cyBhcmUgYWxsb3dlZCBmb3IgcHJvZ3JhbW1pbmcgUmNCdWZUaHJl c2hvbGQKPiArCQkgKi8KPiArCQl2ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFtpXSA9IHJjX2J1Zl90 aHJlc2hbaV0gPj4gNjsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogRm9yIDZicHAsIFJDIEJ1ZmZl ciB0aHJlc2hvbGQgMTIgYW5kIDEzIG5lZWQgYSBkaWZmZXJlbnQgdmFsdWUKPiArCSAqIGFzIHBl ciBDIE1vZGVsCj4gKwkgKi8KPiArCWlmIChjb21wcmVzc2VkX2JwcCA9PSA2KSB7Cj4gKwkJdmRz Y19jZmctPnJjX2J1Zl90aHJlc2hbMTJdID0gMHg3QzsKPiArCQl2ZHNjX2NmZy0+cmNfYnVmX3Ro cmVzaFsxM10gPSAweDdEOwo+ICsJfQo+ICsKPiArCXJvd19pbmRleCA9IGdldF9yb3dfaW5kZXhf Zm9yX3JjX3BhcmFtcyhjb21wcmVzc2VkX2JwcCk7Cj4gKwljb2x1bW5faW5kZXggPQo+ICsJCWdl dF9jb2x1bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50 KTsKPiArCj4gKwlpZiAocm93X2luZGV4IDwgMCB8fCBjb2x1bW5faW5kZXggPCAwKQo+ICsJCXJl dHVybiAtRUlOVkFMOwo+ICsKPiArCXZkc2NfY2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQgPQo+ ICsJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uZmlyc3RfbGluZV9icGdfb2Zm c2V0Owo+ICsJdmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSA9Cj4gKwkJcmNfcGFyYW1zW3Jv d19pbmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFsX3htaXRfZGVsYXk7Cj4gKwl2ZHNjX2NmZy0+ aW5pdGlhbF9vZmZzZXQgPQo+ICsJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0u aW5pdGlhbF9vZmZzZXQ7Cj4gKwl2ZHNjX2NmZy0+ZmxhdG5lc3NfbWluX3FwID0KPiArCQlyY19w YXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmZsYXRuZXNzX21pbl9xcDsKPiArCXZkc2Nf Y2ZnLT5mbGF0bmVzc19tYXhfcXAgPQo+ICsJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9p bmRleF0uZmxhdG5lc3NfbWF4X3FwOwo+ICsJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQw ID0KPiArCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3F1YW50X2luY3Jf bGltaXQwOwo+ICsJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQxID0KPiArCQlyY19wYXJh bXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3F1YW50X2luY3JfbGltaXQxOwo+ICsKPiAr CWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgewo+ICsJCXZkc2NfY2Zn LT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwID0KPiArCQkJcmNfcGFyYW1zW3Jvd19p bmRleF1bY29sdW1uX2luZGV4XS5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwOwo+ICsJ CXZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWF4X3FwID0KPiArCQkJcmNfcGFy YW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWF4 X3FwOwo+ICsJCS8qCj4gKwkJICogUmFuZ2UgQlBHIE9mZnNldCB1c2VzIDIncyBjb21wbGVtZW50 IGFuZCBpcyBvbmx5IGEgNiBiaXRzLiBTbwo+ICsJCSAqIG1hc2sgaXQgdG8gZ2V0IG9ubHkgNiBi aXRzLgo+ICsJCSAqLwo+ICsJCXZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfYnBn X29mZnNldCA9Cj4gKwkJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcmFu Z2VfcGFyYW1zW2ldLnJhbmdlX2JwZ19vZmZzZXQgJgo+ICsJCQlEU0NfUkFOR0VfQlBHX09GRlNF VF9NQVNLOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBCaXRzUGVyQ29tcG9uZW50IHZhbHVlIGRl dGVybWluZXMgbXV4X3dvcmRfc2l6ZToKPiArCSAqIFdoZW4gQml0c1BlckNvbXBvbmVudCBpcyAx MmJwYywgbXV4V29yZFNpemUgd2lsbCBiZSBlcXVhbCB0byA2NCBiaXRzCj4gKwkgKiBXaGVuIEJp dHNQZXJDb21wb25lbnQgaXMgOCBvciAxMGJwYywgbXV4V29yZFNpemUgd2lsbCBiZSBlcXVhbCB0 bwo+ICsJICogNDggYml0cwo+ICsJICovCj4gKwlpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBv bmVudCA9PSA4IHx8Cj4gKwkgICAgdmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSAxMCkK PiArCQl2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSA9IERTQ19NVVhfV09SRF9TSVpFXzhfMTBfQlBD Owo+ICsJZWxzZSBpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSAxMikKPiArCQl2 ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSA9IERTQ19NVVhfV09SRF9TSVpFXzEyX0JQQzsKPiArCj4g KwkvKiBSQ19NT0RFTF9TSVpFIGlzIGEgY29uc3RhbnQgYWNyb3NzIGFsbCBjb25maWd1cmF0aW9u cyAqLwo+ICsJdmRzY19jZmctPnJjX21vZGVsX3NpemUgPSBEU0NfUkNfTU9ERUxfU0laRV9DT05T VDsKPiArCS8qIEluaXRpYWxTY2FsZVZhbHVlIGlzIGEgNiBiaXQgdmFsdWUgd2l0aCAzIGZyYWN0 aW9uYWwgYml0cyAoVTMuMykgKi8KPiArCXZkc2NfY2ZnLT5pbml0aWFsX3NjYWxlX3ZhbHVlID0g KHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplIDw8IDMpIC8KPiArCQkodmRzY19jZmctPnJjX21vZGVs X3NpemUgLSB2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJt L2RybV9kcF9oZWxwZXIuaAo+IGluZGV4IDBmYmE4ZDIxOThhNC4uZGFiOTk0ZTJmMDRlIDEwMDY0 NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAo+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9kcF9oZWxwZXIuaAo+IEBAIC0xODcsNiArMTg3LDkgQEAKPiAgCj4gICNkZWZpbmUgRFBf R1VJRAkJCQkgICAgMHgwMzAgICAvKiAxLjIgKi8KPiAgCj4gKyNkZWZpbmUgRFBfRFNDX1JDX1BJ WEVMU19QRVJfR1JPVVAJCTMKPiArI2RlZmluZSBEUF9EU0NfU0NBTEVfREVDUkVNRU5UX0lOVEVS VkFMX01BWAk0MDk1Cj4gKwo+ICAjZGVmaW5lIERQX0RTQ19TVVBQT1JUICAgICAgICAgICAgICAg ICAgICAgIDB4MDYwICAgLyogRFAgMS40ICovCj4gICMgZGVmaW5lIERQX0RTQ19ERUNPTVBSRVNT SU9OX0lTX1NVUFBPUlRFRCAgKDEgPDwgMCkKPiAgCj4gLS0gCj4gMi4xOC4wCgotLSAKVmlsbGUg U3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=