From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [CI v13 04/17] drm/i915/dsc: Define & Compute VESA DSC params Date: Wed, 28 Nov 2018 12:26:15 -0800 Message-ID: <20181128202628.20238-4-manasi.d.navare@intel.com> References: <20181128202628.20238-1-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 99D3D6E289 for ; Wed, 28 Nov 2018 20:23:29 +0000 (UTC) In-Reply-To: <20181128202628.20238-1-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KClRoaXMgcGF0 Y2hlcyBkb2VzIHRoZSBmb2xsb3dpbmc6CgoxLiBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIHRoZSBE U0MgcGFyYW1ldGVycyBhcyBwZXIgdGhlIFZFU0EKRFNDIHNwZWNpZmljYXRpb24uIFRoZXNlIGFy ZSBzdG9yZWQgaW4gdGhlIGVuY29kZXIgYW5kIHVzZWQKdG8gY29tcHV0ZSB0aGUgUFBTIHBhcmFt ZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgU2luay4KMi4gQ29tcHV0ZSBhbGwgdGhlIERTQyBwYXJh bWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gRFNDCnN0YXRlIG9mIGludGVsX2NydGNfc3Rh dGUuCjMuIENvbXB1dGUgYWxsIHBhcmFtZXRlcnMgdGhhdCBhcmUgVkVTQSBEU0Mgc3BlY2lmaWMK ClRoaXMgY29tcHV0YXRpb24gaGFwcGVucyBpbiB0aGUgYXRvbWljIGNoZWNrIHBoYXNlIGR1cmlu Zwpjb21wdXRlX2NvbmZpZygpIHRvIHZhbGlkYXRlIGlmIGRpc3BsYXkgc3RyZWFtIGNvbXByZXNz aW9uCmNhbiBiZSBlbmFibGVkIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUuCgp2OCAoRnJvbSBNYW5h c2kpOgoqIERFQlVHX0tNUyBpbnN0ZWFkIG9mIERSTV9FUlJPUiBmb3IgdXNlciB0cmlnZ2VyYWJs ZQplcnJvcnMgKFZpbGxlKQp2NzogKEZyb20gTWFuYXNpKQoqIERvbnQgdXNlIHNpZ25lZCBpbnQg Zm9yIHJjX3JhbmdlX3BhcmFtcyAoTWFuYXNpKQoqIE1hc2sgdGhlIHJhbmdlX2JwZ19vZmZzZXQg dG8gdXNlIG9ubHkgNiBiaXRzCiogQWRkIFNQRFggaWRlbnRpZmllciAoQ2hyaXMgV2lsc29uKQp2 NiAoRnJvbSBNYW5hc2kpOgoqIEFkZCBhIGNoZWNrIGZvciBsaW5lX2J1Zl9kZXB0aCByZXR1cm4g dmFsdWUgKEFudXNoYSkKKiBSZW1vdmUgRFJNIERTQyBjb25zdGFudHMgdG8gZGlmZmVyZW50IHBh dGNoIChNYW5hc2kpCnY1IChGcm9tIE1hbmFzaSk6CiogQWRkIGxvZ2ljIHRvIGxpbWl0IHRoZSBt YXggbGluZSBidWYgZGVwdGggZm9yIERTQyAxLjEgdG8gMTMKYXMgcGVyIERTQyAxLjEgc3BlYwoq IEZpeCBkaW0gY2hlY2twYXRjaCB3YXJuaW5ncy9jaGVja3MKCnY0IChGcm9tIEdhdXJhdik6Ciog UmViYXNlIG9uIGxhdGVzdCBkcm0gdGlwCiogcmVuYW1lIHZhcmlhYmxlIG5hbWUoTWFuYXNpKQoq IFBvcHVsYXRlIGxpbmVidWZfZGVwdGggdmFyaWFibGUoTWFuYXNpKQoKdjMgKEZyb20gR2F1cmF2 KToKKiBSZWJhc2UgbXkgcHJldmlvdXMgcGF0Y2hlcyBvbiB0b3Agb2YgTWFuYXNpJ3MgbGF0ZXN0 IHBhdGNoCnNlcmllcwoqIFVzaW5nID4+biByYXRoZXIgdGhhbiAvMl5uIChNYW5hc2kpCiogQ2hh bmdlIHRoZSBjb21taXQgbWVzc2FnZSB0byBleHBsYWluIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5n KEdhdXJhdikKCkZpeGVkIHJldmlldyBjb21tZW50cyBmcm9tIFZpbGxlOgoqIERvbid0IHVzZSBt YWNybyBUV09TX0NPTVBMRU1FTlQKKiBNZW50aW9uIGluIGNvbW1lbnQgYWJvdXQgdGhlIHNvdXJj ZSBvZiBSQyBwYXJhbXMKKiBSZXR1cm4gZGlyZWN0bHkgZnJvbSBjYXNlIHN0YXRlbWVudHMKKiBV c2luZyBzaW5nbGUgYXNzc2lnbm1lbnQgZm9yIGFzc2lnbmluZyByY19yYW5nZV9wYXJhbXMKKiBV c2luZyA8PG4gcmF0aGVyIHRoYW4gKjJebiBhbmQgcmVtb3ZpbmcgdGhlIGNvbW1lbnRzCmFib3V0 IHRoZSBmaXhlZCBwb2ludCBudW1iZXJzCgp2MiAoRnJvbSBNYW5hc2kpOgoqIFVwZGF0ZSBsb2dp YyBmb3IgbWlub3IgdmVyc2lvbiB0byBjb25zaWRlciB0aGUgZHBjZCB2YWx1ZQphbmQgd2hhdCBz dXBwb3J0ZWQgYnkgdGhlIEhXIHBsYXRmb3JtCiogVXNlIERSTSBEU0MgY29uZmlnIHN0cnVjdCBp bnN0ZWFkIG9mIGludGVsX2RwIHN0cnVjdAoqIE1vdmUgdGhlIERTQyBjb25zdGFudHMgdG8gRFJN IERTQyBoZWFkZXIgZmlsZQoqIFVzZSB1MTYsIHU4IHdoZXJlIGJpZ2dlciBkYXRhIHR5cGVzIG5v dCBuZWVkZWQKKiAqIENvbXB1dGUgdGhlIERTQyBwYXJhbWV0ZXJzIGFzIHBhcnQgb2YgRFNDIGNv bXB1dGUgY29uZmlnCnNpbmNlIHRoZSBjb21wdXRhdGlvbiBjYW4gZmFpbCAoTWFuYXNpKQoKQ2M6 IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJq YWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFudXNoYSBTcml2YXRzYSA8 YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KQ2M6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5z aW5naEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5z aW5naEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+CkNvLWRldmVsb3BlZC1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQu bmF2YXJlQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNy aXZhdHNhQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAg fCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8ICAgNyArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdmRzYy5jIHwgNDU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5j bHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAgIHwgICAzICsKIDUgZmlsZXMgY2hhbmdlZCwg NDcyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDBm Zjg3OGM5OTRlMi4uODM3MGI5ZGU2ZTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMTU3LDcg KzE1Nyw4IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAogCSAgaW50ZWxfc2R2by5vIFwKIAkg IGludGVsX3R2Lm8gXAogCSAgdmx2X2RzaS5vIFwKLQkgIHZsdl9kc2lfcGxsLm8KKwkgIHZsdl9k c2lfcGxsLm8gXAorCSAgaW50ZWxfdmRzYy5vCiAKICMgUG9zdC1tb3J0ZW0gZGVidWcgYW5kIEdQ VSBoYW5nIHN0YXRlIGNhcHR1cmUKIGk5MTUtJChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJP UikgKz0gaTkxNV9ncHVfZXJyb3IubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXggYTI3ODA3 MzM3NjhhLi4zYjYxMmViMTM0ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAtMTk1Myw2 ICsxOTUzLDEzIEBAIHN0YXRpYyBib29sIGludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQorCWlmIChp bnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoaW50ZWxfZHAsIHBpcGVfY29uZmlnKSA8IDApIHsK KwkJRFJNX0RFQlVHX0tNUygiQ2Fubm90IGNvbXB1dGUgdmFsaWQgRFNDIHBhcmFtZXRlcnMgZm9y IElucHV0IEJwcCA9ICVkICIKKwkJCSAgICAgICJDb21wcmVzc2VkIEJQUCA9ICVkXG4iLAorCQkJ ICAgICAgcGlwZV9jb25maWctPnBpcGVfYnBwLAorCQkJICAgICAgcGlwZV9jb25maWctPmRzY19w YXJhbXMuY29tcHJlc3NlZF9icHApOworCQlyZXR1cm4gZmFsc2U7CisJfQogCXBpcGVfY29uZmln LT5kc2NfcGFyYW1zLmNvbXByZXNzaW9uX2VuYWJsZSA9IHRydWU7CiAJRFJNX0RFQlVHX0tNUygi RFAgRFNDIGNvbXB1dGVkIHdpdGggSW5wdXQgQnBwID0gJWQgIgogCQkgICAgICAiQ29tcHJlc3Nl ZCBCcHAgPSAlZCBTbGljZSBDb3VudCA9ICVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApp bmRleCAyNzAyMTJmYTQzYTAuLjMxNmVjMWUxMDdiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKQEAgLTE4NTIsNiArMTg1MiwxMCBAQCB1aW50MTZfdCBpbnRlbF9kcF9kc2NfZ2V0X291dHB1 dF9icHAoaW50IGxpbmtfY2xvY2ssIHVpbnQ4X3QgbGFuZV9jb3VudCwKIHVpbnQ4X3QgaW50ZWxf ZHBfZHNjX2dldF9zbGljZV9jb3VudChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbW9k ZV9jbG9jaywKIAkJCQkgICAgIGludCBtb2RlX2hkaXNwbGF5KTsKIAorLyogaW50ZWxfdmRzYy5j ICovCitpbnQgaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCisJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKKwogc3Rh dGljIGlubGluZSB1bnNpZ25lZCBpbnQgaW50ZWxfZHBfdW51c2VkX2xhbmVfbWFzayhpbnQgbGFu ZV9jb3VudCkKIHsKIAlyZXR1cm4gfigoMSA8PCBsYW5lX2NvdW50KSAtIDEpICYgMHhmOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdmRzYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uNGNlNmYwYzQ1M2JiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdmRzYy5jCkBAIC0wLDAgKzEsNDU2IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KKyAq CisgKiBBdXRob3I6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cisg KiAgICAgICAgIE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+CisgKi8K KworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CisjaW5j bHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKworZW51bSBST1dfSU5E RVhfQlBQIHsKKwlST1dfSU5ERVhfNkJQUCA9IDAsCisJUk9XX0lOREVYXzhCUFAsCisJUk9XX0lO REVYXzEwQlBQLAorCVJPV19JTkRFWF8xMkJQUCwKKwlST1dfSU5ERVhfMTVCUFAsCisJTUFYX1JP V19JTkRFWAorfTsKKworZW51bSBDT0xVTU5fSU5ERVhfQlBDIHsKKwlDT0xVTU5fSU5ERVhfOEJQ QyA9IDAsCisJQ09MVU1OX0lOREVYXzEwQlBDLAorCUNPTFVNTl9JTkRFWF8xMkJQQywKKwlDT0xV TU5fSU5ERVhfMTRCUEMsCisJQ09MVU1OX0lOREVYXzE2QlBDLAorCU1BWF9DT0xVTU5fSU5ERVgK K307CisKKyNkZWZpbmUgRFNDX1NVUFBPUlRFRF9WRVJTSU9OX01JTgkJMQorCisvKiBGcm9tIERT Q192MS4xMSBzcGVjLCByY19wYXJhbWV0ZXJfU2V0IHN5bnRheCBlbGVtZW50IHR5cGljYWxseSBj b25zdGFudCAqLworc3RhdGljIHUxNiByY19idWZfdGhyZXNoW10gPSB7CisJODk2LCAxNzkyLCAy Njg4LCAzNTg0LCA0NDgwLCA1Mzc2LCA2MjcyLCA2NzIwLCA3MTY4LCA3NjE2LAorCTc3NDQsIDc4 NzIsIDgwMDAsIDgwNjQKK307CisKK3N0cnVjdCByY19wYXJhbWV0ZXJzIHsKKwl1MTYgaW5pdGlh bF94bWl0X2RlbGF5OworCXU4IGZpcnN0X2xpbmVfYnBnX29mZnNldDsKKwl1MTYgaW5pdGlhbF9v ZmZzZXQ7CisJdTggZmxhdG5lc3NfbWluX3FwOworCXU4IGZsYXRuZXNzX21heF9xcDsKKwl1OCBy Y19xdWFudF9pbmNyX2xpbWl0MDsKKwl1OCByY19xdWFudF9pbmNyX2xpbWl0MTsKKwlzdHJ1Y3Qg ZHJtX2RzY19yY19yYW5nZV9wYXJhbWV0ZXJzIHJjX3JhbmdlX3BhcmFtc1tEU0NfTlVNX0JVRl9S QU5HRVNdOworfTsKKworLyoKKyAqIFNlbGVjdGVkIFJhdGUgQ29udHJvbCBSZWxhdGVkIFBhcmFt ZXRlciBSZWNvbW1lbmRlZCBWYWx1ZXMKKyAqIGZyb20gRFNDX3YxLjExIHNwZWMgJiBDIE1vZGVs IHJlbGVhc2U6IERTQ19tb2RlbF8yMDE2MTIxMgorICovCitzdGF0aWMgc3RydWN0IHJjX3BhcmFt ZXRlcnMgcmNfcGFyYW1zW11bTUFYX0NPTFVNTl9JTkRFWF0gPSB7Cit7CisJLyogNkJQUC84QlBD ICovCisJeyA3NjgsIDE1LCA2MTQ0LCAzLCAxMywgMTEsIDExLCB7CisJCXsgMCwgNCwgMCB9LCB7 IDEsIDYsIC0yIH0sIHsgMywgOCwgLTIgfSwgeyA0LCA4LCAtNCB9LAorCQl7IDUsIDksIC02IH0s IHsgNSwgOSwgLTYgfSwgeyA2LCA5LCAtNiB9LCB7IDYsIDEwLCAtOCB9LAorCQl7IDcsIDExLCAt OCB9LCB7IDgsIDEyLCAtMTAgfSwgeyA5LCAxMiwgLTEwIH0sIHsgMTAsIDEyLCAtMTIgfSwKKwkJ eyAxMCwgMTIsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0sIHsgMTMsIDE0LCAtMTIgfQorCQl9CisJ fSwKKwkvKiA2QlBQLzEwQlBDICovCisJeyA3NjgsIDE1LCA2MTQ0LCA3LCAxNywgMTUsIDE1LCB7 CisJCXsgMCwgOCwgMCB9LCB7IDMsIDEwLCAtMiB9LCB7IDcsIDEyLCAtMiB9LCB7IDgsIDEyLCAt NCB9LAorCQl7IDksIDEzLCAtNiB9LCB7IDksIDEzLCAtNiB9LCB7IDEwLCAxMywgLTYgfSwgeyAx MCwgMTQsIC04IH0sCisJCXsgMTEsIDE1LCAtOCB9LCB7IDEyLCAxNiwgLTEwIH0sIHsgMTMsIDE2 LCAtMTAgfSwKKwkJeyAxNCwgMTYsIC0xMiB9LCB7IDE0LCAxNiwgLTEyIH0sIHsgMTUsIDE2LCAt MTIgfSwKKwkJeyAxNywgMTgsIC0xMiB9CisJCX0KKwl9LAorCS8qIDZCUFAvMTJCUEMgKi8KKwl7 IDc2OCwgMTUsIDYxNDQsIDExLCAyMSwgMTksIDE5LCB7CisJCXsgMCwgMTIsIDAgfSwgeyA1LCAx NCwgLTIgfSwgeyAxMSwgMTYsIC0yIH0sIHsgMTIsIDE2LCAtNCB9LAorCQl7IDEzLCAxNywgLTYg fSwgeyAxMywgMTcsIC02IH0sIHsgMTQsIDE3LCAtNiB9LCB7IDE0LCAxOCwgLTggfSwKKwkJeyAx NSwgMTksIC04IH0sIHsgMTYsIDIwLCAtMTAgfSwgeyAxNywgMjAsIC0xMCB9LAorCQl7IDE4LCAy MCwgLTEyIH0sIHsgMTgsIDIwLCAtMTIgfSwgeyAxOSwgMjAsIC0xMiB9LAorCQl7IDIxLCAyMiwg LTEyIH0KKwkJfQorCX0sCisJLyogNkJQUC8xNEJQQyAqLworCXsgNzY4LCAxNSwgNjE0NCwgMTUs IDI1LCAyMywgMjcsIHsKKwkJeyAwLCAxNiwgMCB9LCB7IDcsIDE4LCAtMiB9LCB7IDE1LCAyMCwg LTIgfSwgeyAxNiwgMjAsIC00IH0sCisJCXsgMTcsIDIxLCAtNiB9LCB7IDE3LCAyMSwgLTYgfSwg eyAxOCwgMjEsIC02IH0sIHsgMTgsIDIyLCAtOCB9LAorCQl7IDE5LCAyMywgLTggfSwgeyAyMCwg MjQsIC0xMCB9LCB7IDIxLCAyNCwgLTEwIH0sCisJCXsgMjIsIDI0LCAtMTIgfSwgeyAyMiwgMjQs IC0xMiB9LCB7IDIzLCAyNCwgLTEyIH0sCisJCXsgMjUsIDI2LCAtMTIgfQorCQl9CisJfSwKKwkv KiA2QlBQLzE2QlBDICovCisJeyA3NjgsIDE1LCA2MTQ0LCAxOSwgMjksIDI3LCAyNywgeworCQl7 IDAsIDIwLCAwIH0sIHsgOSwgMjIsIC0yIH0sIHsgMTksIDI0LCAtMiB9LCB7IDIwLCAyNCwgLTQg fSwKKwkJeyAyMSwgMjUsIC02IH0sIHsgMjEsIDI1LCAtNiB9LCB7IDIyLCAyNSwgLTYgfSwgeyAy MiwgMjYsIC04IH0sCisJCXsgMjMsIDI3LCAtOCB9LCB7IDI0LCAyOCwgLTEwIH0sIHsgMjUsIDI4 LCAtMTAgfSwKKwkJeyAyNiwgMjgsIC0xMiB9LCB7IDI2LCAyOCwgLTEyIH0sIHsgMjcsIDI4LCAt MTIgfSwKKwkJeyAyOSwgMzAsIC0xMiB9CisJCX0KKwl9LAorfSwKK3sKKwkvKiA4QlBQLzhCUEMg Ki8KKwl7IDUxMiwgMTIsIDYxNDQsIDMsIDEyLCAxMSwgMTEsIHsKKwkJeyAwLCA0LCAyIH0sIHsg MCwgNCwgMCB9LCB7IDEsIDUsIDAgfSwgeyAxLCA2LCAtMiB9LAorCQl7IDMsIDcsIC00IH0sIHsg MywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCisJCXsgMywgOSwgLTggfSwg eyAzLCAxMCwgLTEwIH0sIHsgNSwgMTEsIC0xMCB9LCB7IDUsIDEyLCAtMTIgfSwKKwkJeyA1LCAx MywgLTEyIH0sIHsgNywgMTMsIC0xMiB9LCB7IDEzLCAxNSwgLTEyIH0KKwkJfQorCX0sCisJLyog OEJQUC8xMEJQQyAqLworCXsgNTEyLCAxMiwgNjE0NCwgNywgMTYsIDE1LCAxNSwgeworCQl7IDAs IDQsIDIgfSwgeyA0LCA4LCAwIH0sIHsgNSwgOSwgMCB9LCB7IDUsIDEwLCAtMiB9LAorCQl7IDcs IDExLCAtNCB9LCB7IDcsIDExLCAtNiB9LCB7IDcsIDExLCAtOCB9LCB7IDcsIDEyLCAtOCB9LAor CQl7IDcsIDEzLCAtOCB9LCB7IDcsIDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEwIH0sIHsgOSwgMTYs IC0xMiB9LAorCQl7IDksIDE3LCAtMTIgfSwgeyAxMSwgMTcsIC0xMiB9LCB7IDE3LCAxOSwgLTEy IH0KKwkJfQorCX0sCisJLyogOEJQUC8xMkJQQyAqLworCXsgNTEyLCAxMiwgNjE0NCwgMTEsIDIw LCAxOSwgMTksIHsKKwkJeyAwLCAxMiwgMiB9LCB7IDQsIDEyLCAwIH0sIHsgOSwgMTMsIDAgfSwg eyA5LCAxNCwgLTIgfSwKKwkJeyAxMSwgMTUsIC00IH0sIHsgMTEsIDE1LCAtNiB9LCB7IDExLCAx NSwgLTggfSwgeyAxMSwgMTYsIC04IH0sCisJCXsgMTEsIDE3LCAtOCB9LCB7IDExLCAxOCwgLTEw IH0sIHsgMTMsIDE5LCAtMTAgfSwKKwkJeyAxMywgMjAsIC0xMiB9LCB7IDEzLCAyMSwgLTEyIH0s IHsgMTUsIDIxLCAtMTIgfSwKKwkJeyAyMSwgMjMsIC0xMiB9CisJCX0KKwl9LAorCS8qIDhCUFAv MTRCUEMgKi8KKwl7IDUxMiwgMTIsIDYxNDQsIDE1LCAyNCwgMjMsIDIzLCB7CisJCXsgMCwgMTIs IDAgfSwgeyA1LCAxMywgMCB9LCB7IDExLCAxNSwgMCB9LCB7IDEyLCAxNywgLTIgfSwKKwkJeyAx NSwgMTksIC00IH0sIHsgMTUsIDE5LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwgMjAsIC04 IH0sCisJCXsgMTUsIDIxLCAtOCB9LCB7IDE1LCAyMiwgLTEwIH0sIHsgMTcsIDIyLCAtMTAgfSwK KwkJeyAxNywgMjMsIC0xMiB9LCB7IDE3LCAyMywgLTEyIH0sIHsgMjEsIDI0LCAtMTIgfSwKKwkJ eyAyNCwgMjUsIC0xMiB9CisJCX0KKwl9LAorCS8qIDhCUFAvMTZCUEMgKi8KKwl7IDUxMiwgMTIs IDYxNDQsIDE5LCAyOCwgMjcsIDI3LCB7CisJCXsgMCwgMTIsIDIgfSwgeyA2LCAxNCwgMCB9LCB7 IDEzLCAxNywgMCB9LCB7IDE1LCAyMCwgLTIgfSwKKwkJeyAxOSwgMjMsIC00IH0sIHsgMTksIDIz LCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCisJCXsgMTksIDI1LCAtOCB9 LCB7IDE5LCAyNiwgLTEwIH0sIHsgMjEsIDI2LCAtMTAgfSwKKwkJeyAyMSwgMjcsIC0xMiB9LCB7 IDIxLCAyNywgLTEyIH0sIHsgMjUsIDI4LCAtMTIgfSwKKwkJeyAyOCwgMjksIC0xMiB9CisJCX0K Kwl9LAorfSwKK3sKKwkvKiAxMEJQUC84QlBDICovCisJeyA0MTAsIDE1LCA1NjMyLCAzLCAxMiwg MTEsIDExLCB7CisJCXsgMCwgMywgMiB9LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0sIHsgMiwg NiwgLTIgfSwKKwkJeyAzLCA3LCAtNCB9LCB7IDMsIDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAz LCA4LCAtOCB9LAorCQl7IDMsIDksIC04IH0sIHsgMywgOSwgLTEwIH0sIHsgNSwgMTAsIC0xMCB9 LCB7IDUsIDEwLCAtMTAgfSwKKwkJeyA1LCAxMSwgLTEyIH0sIHsgNywgMTEsIC0xMiB9LCB7IDEx LCAxMiwgLTEyIH0KKwkJfQorCX0sCisJLyogMTBCUFAvMTBCUEMgKi8KKwl7IDQxMCwgMTUsIDU2 MzIsIDcsIDE2LCAxNSwgMTUsIHsKKwkJeyAwLCA3LCAyIH0sIHsgNCwgOCwgMCB9LCB7IDUsIDks IDAgfSwgeyA2LCAxMCwgLTIgfSwKKwkJeyA3LCAxMSwgLTQgfSwgeyA3LCAxMSwgLTYgfSwgeyA3 LCAxMSwgLTggfSwgeyA3LCAxMiwgLTggfSwKKwkJeyA3LCAxMywgLTggfSwgeyA3LCAxMywgLTEw IH0sIHsgOSwgMTQsIC0xMCB9LCB7IDksIDE0LCAtMTAgfSwKKwkJeyA5LCAxNSwgLTEyIH0sIHsg MTEsIDE1LCAtMTIgfSwgeyAxNSwgMTYsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEwQlBQLzEyQlBD ICovCisJeyA0MTAsIDE1LCA1NjMyLCAxMSwgMjAsIDE5LCAxOSwgeworCQl7IDAsIDExLCAyIH0s IHsgNCwgMTIsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDEwLCAxNCwgLTIgfSwKKwkJeyAxMSwgMTUs IC00IH0sIHsgMTEsIDE1LCAtNiB9LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04IH0sCisJ CXsgMTEsIDE3LCAtOCB9LCB7IDExLCAxNywgLTEwIH0sIHsgMTMsIDE4LCAtMTAgfSwKKwkJeyAx MywgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEyIH0sIHsgMTUsIDE5LCAtMTIgfSwKKwkJeyAxOSwg MjAsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEwQlBQLzE0QlBDICovCisJeyA0MTAsIDE1LCA1NjMy LCAxNSwgMjQsIDIzLCAyMywgeworCQl7IDAsIDExLCAyIH0sIHsgNSwgMTMsIDAgfSwgeyAxMSwg MTUsIDAgfSwgeyAxMywgMTgsIC0yIH0sCisJCXsgMTUsIDE5LCAtNCB9LCB7IDE1LCAxOSwgLTYg fSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LAorCQl7IDE1LCAyMSwgLTggfSwgeyAx NSwgMjEsIC0xMCB9LCB7IDE3LCAyMiwgLTEwIH0sCisJCXsgMTcsIDIyLCAtMTAgfSwgeyAxNywg MjMsIC0xMiB9LCB7IDE5LCAyMywgLTEyIH0sCisJCXsgMjMsIDI0LCAtMTIgfQorCQl9CisJfSwK KwkvKiAxMEJQUC8xNkJQQyAqLworCXsgNDEwLCAxNSwgNTYzMiwgMTksIDI4LCAyNywgMjcsIHsK KwkJeyAwLCAxMSwgMiB9LCB7IDYsIDE0LCAwIH0sIHsgMTMsIDE3LCAwIH0sIHsgMTYsIDIwLCAt MiB9LAorCQl7IDE5LCAyMywgLTQgfSwgeyAxOSwgMjMsIC02IH0sIHsgMTksIDIzLCAtOCB9LCB7 IDE5LCAyNCwgLTggfSwKKwkJeyAxOSwgMjUsIC04IH0sIHsgMTksIDI1LCAtMTAgfSwgeyAyMSwg MjYsIC0xMCB9LAorCQl7IDIxLCAyNiwgLTEwIH0sIHsgMjEsIDI3LCAtMTIgfSwgeyAyMywgMjcs IC0xMiB9LAorCQl7IDI3LCAyOCwgLTEyIH0KKwkJfQorCX0sCit9LAoreworCS8qIDEyQlBQLzhC UEMgKi8KKwl7IDM0MSwgMTUsIDIwNDgsIDMsIDEyLCAxMSwgMTEsIHsKKwkJeyAwLCAyLCAyIH0s IHsgMCwgNCwgMCB9LCB7IDEsIDUsIDAgfSwgeyAxLCA2LCAtMiB9LAorCQl7IDMsIDcsIC00IH0s IHsgMywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCisJCXsgMywgOSwgLTgg fSwgeyAzLCAxMCwgLTEwIH0sIHsgNSwgMTEsIC0xMCB9LAorCQl7IDUsIDEyLCAtMTIgfSwgeyA1 LCAxMywgLTEyIH0sIHsgNywgMTMsIC0xMiB9LCB7IDEzLCAxNSwgLTEyIH0KKwkJfQorCX0sCisJ LyogMTJCUFAvMTBCUEMgKi8KKwl7IDM0MSwgMTUsIDIwNDgsIDcsIDE2LCAxNSwgMTUsIHsKKwkJ eyAwLCAyLCAyIH0sIHsgMiwgNSwgMCB9LCB7IDMsIDcsIDAgfSwgeyA0LCA4LCAtMiB9LAorCQl7 IDYsIDksIC00IH0sIHsgNywgMTAsIC02IH0sIHsgNywgMTEsIC04IH0sIHsgNywgMTIsIC04IH0s CisJCXsgNywgMTMsIC04IH0sIHsgNywgMTQsIC0xMCB9LCB7IDksIDE1LCAtMTAgfSwgeyA5LCAx NiwgLTEyIH0sCisJCXsgOSwgMTcsIC0xMiB9LCB7IDExLCAxNywgLTEyIH0sIHsgMTcsIDE5LCAt MTIgfQorCQl9CisJfSwKKwkvKiAxMkJQUC8xMkJQQyAqLworCXsgMzQxLCAxNSwgMjA0OCwgMTEs IDIwLCAxOSwgMTksIHsKKwkJeyAwLCA2LCAyIH0sIHsgNCwgOSwgMCB9LCB7IDcsIDExLCAwIH0s IHsgOCwgMTIsIC0yIH0sCisJCXsgMTAsIDEzLCAtNCB9LCB7IDExLCAxNCwgLTYgfSwgeyAxMSwg MTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LAorCQl7IDExLCAxNywgLTggfSwgeyAxMSwgMTgsIC0x MCB9LCB7IDEzLCAxOSwgLTEwIH0sCisJCXsgMTMsIDIwLCAtMTIgfSwgeyAxMywgMjEsIC0xMiB9 LCB7IDE1LCAyMSwgLTEyIH0sCisJCXsgMjEsIDIzLCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMkJQ UC8xNEJQQyAqLworCXsgMzQxLCAxNSwgMjA0OCwgMTUsIDI0LCAyMywgMjMsIHsKKwkJeyAwLCA2 LCAyIH0sIHsgNywgMTAsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDExLCAxNiwgLTIgfSwKKwkJeyAx NCwgMTcsIC00IH0sIHsgMTUsIDE4LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwgMjAsIC04 IH0sCisJCXsgMTUsIDIwLCAtOCB9LCB7IDE1LCAyMSwgLTEwIH0sIHsgMTcsIDIxLCAtMTAgfSwK KwkJeyAxNywgMjEsIC0xMiB9LCB7IDE3LCAyMSwgLTEyIH0sIHsgMTksIDIyLCAtMTIgfSwKKwkJ eyAyMiwgMjMsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEyQlBQLzE2QlBDICovCisJeyAzNDEsIDE1 LCAyMDQ4LCAxOSwgMjgsIDI3LCAyNywgeworCQl7IDAsIDYsIDIgfSwgeyA2LCAxMSwgMCB9LCB7 IDExLCAxNSwgMCB9LCB7IDE0LCAxOCwgLTIgfSwKKwkJeyAxOCwgMjEsIC00IH0sIHsgMTksIDIy LCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCisJCXsgMTksIDI0LCAtOCB9 LCB7IDE5LCAyNSwgLTEwIH0sIHsgMjEsIDI1LCAtMTAgfSwKKwkJeyAyMSwgMjUsIC0xMiB9LCB7 IDIxLCAyNSwgLTEyIH0sIHsgMjMsIDI2LCAtMTIgfSwKKwkJeyAyNiwgMjcsIC0xMiB9CisJCX0K Kwl9LAorfSwKK3sKKwkvKiAxNUJQUC84QlBDICovCisJeyAyNzMsIDE1LCAyMDQ4LCAzLCAxMiwg MTEsIDExLCB7CisJCXsgMCwgMCwgMTAgfSwgeyAwLCAxLCA4IH0sIHsgMCwgMSwgNiB9LCB7IDAs IDIsIDQgfSwKKwkJeyAxLCAyLCAyIH0sIHsgMSwgMywgMCB9LCB7IDEsIDMsIC0yIH0sIHsgMiwg NCwgLTQgfSwKKwkJeyAyLCA1LCAtNiB9LCB7IDMsIDUsIC04IH0sIHsgNCwgNiwgLTEwIH0sIHsg NCwgNywgLTEwIH0sCisJCXsgNSwgNywgLTEyIH0sIHsgNywgOCwgLTEyIH0sIHsgOCwgOSwgLTEy IH0KKwkJfQorCX0sCisJLyogMTVCUFAvMTBCUEMgKi8KKwl7IDI3MywgMTUsIDIwNDgsIDcsIDE2 LCAxNSwgMTUsIHsKKwkJeyAwLCAyLCAxMCB9LCB7IDIsIDUsIDggfSwgeyAzLCA1LCA2IH0sIHsg NCwgNiwgNCB9LAorCQl7IDUsIDYsIDIgfSwgeyA1LCA3LCAwIH0sIHsgNSwgNywgLTIgfSwgeyA2 LCA4LCAtNCB9LAorCQl7IDYsIDksIC02IH0sIHsgNywgOSwgLTggfSwgeyA4LCAxMCwgLTEwIH0s IHsgOCwgMTEsIC0xMCB9LAorCQl7IDksIDExLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9LCB7IDEy LCAxMywgLTEyIH0KKwkJfQorCX0sCisJLyogMTVCUFAvMTJCUEMgKi8KKwl7IDI3MywgMTUsIDIw NDgsIDExLCAyMCwgMTksIDE5LCB7CisJCXsgMCwgNCwgMTAgfSwgeyAyLCA3LCA4IH0sIHsgNCwg OSwgNiB9LCB7IDYsIDExLCA0IH0sCisJCXsgOSwgMTEsIDIgfSwgeyA5LCAxMSwgMCB9LCB7IDks IDEyLCAtMiB9LCB7IDEwLCAxMiwgLTQgfSwKKwkJeyAxMSwgMTMsIC02IH0sIHsgMTEsIDEzLCAt OCB9LCB7IDEyLCAxNCwgLTEwIH0sCisJCXsgMTMsIDE1LCAtMTAgfSwgeyAxMywgMTUsIC0xMiB9 LCB7IDE1LCAxNiwgLTEyIH0sCisJCXsgMTYsIDE3LCAtMTIgfQorCQl9CisJfSwKKwkvKiAxNUJQ UC8xNEJQQyAqLworCXsgMjczLCAxNSwgMjA0OCwgMTUsIDI0LCAyMywgMjMsIHsKKwkJeyAwLCA0 LCAxMCB9LCB7IDMsIDgsIDggfSwgeyA2LCAxMSwgNiB9LCB7IDksIDE0LCA0IH0sCisJCXsgMTMs IDE1LCAyIH0sIHsgMTMsIDE1LCAwIH0sIHsgMTMsIDE2LCAtMiB9LCB7IDE0LCAxNiwgLTQgfSwK KwkJeyAxNSwgMTcsIC02IH0sIHsgMTUsIDE3LCAtOCB9LCB7IDE2LCAxOCwgLTEwIH0sCisJCXsg MTcsIDE5LCAtMTAgfSwgeyAxNywgMTksIC0xMiB9LCB7IDE5LCAyMCwgLTEyIH0sCisJCXsgMjAs IDIxLCAtMTIgfQorCQl9CisJfSwKKwkvKiAxNUJQUC8xNkJQQyAqLworCXsgMjczLCAxNSwgMjA0 OCwgMTksIDI4LCAyNywgMjcsIHsKKwkJeyAwLCA0LCAxMCB9LCB7IDQsIDksIDggfSwgeyA4LCAx MywgNiB9LCB7IDEyLCAxNywgNCB9LAorCQl7IDE3LCAxOSwgMiB9LCB7IDE3LCAyMCwgMCB9LCB7 IDE3LCAyMCwgLTIgfSwgeyAxOCwgMjAsIC00IH0sCisJCXsgMTksIDIxLCAtNiB9LCB7IDE5LCAy MSwgLTggfSwgeyAyMCwgMjIsIC0xMCB9LAorCQl7IDIxLCAyMywgLTEwIH0sIHsgMjEsIDIzLCAt MTIgfSwgeyAyMywgMjQsIC0xMiB9LAorCQl7IDI0LCAyNSwgLTEyIH0KKwkJfQorCX0KK30KKwor fTsKKworc3RhdGljIGludCBnZXRfcm93X2luZGV4X2Zvcl9yY19wYXJhbXModTE2IGNvbXByZXNz ZWRfYnBwKQoreworCXN3aXRjaCAoY29tcHJlc3NlZF9icHApIHsKKwljYXNlIDY6CisJCXJldHVy biBST1dfSU5ERVhfNkJQUDsKKwljYXNlIDg6CisJCXJldHVybiBST1dfSU5ERVhfOEJQUDsKKwlj YXNlIDEwOgorCQlyZXR1cm4gUk9XX0lOREVYXzEwQlBQOworCWNhc2UgMTI6CisJCXJldHVybiBS T1dfSU5ERVhfMTJCUFA7CisJY2FzZSAxNToKKwkJcmV0dXJuIFJPV19JTkRFWF8xNUJQUDsKKwlk ZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgZ2V0X2NvbHVt bl9pbmRleF9mb3JfcmNfcGFyYW1zKHU4IGJpdHNfcGVyX2NvbXBvbmVudCkKK3sKKwlzd2l0Y2gg KGJpdHNfcGVyX2NvbXBvbmVudCkgeworCWNhc2UgODoKKwkJcmV0dXJuIENPTFVNTl9JTkRFWF84 QlBDOworCWNhc2UgMTA6CisJCXJldHVybiBDT0xVTU5fSU5ERVhfMTBCUEM7CisJY2FzZSAxMjoK KwkJcmV0dXJuIENPTFVNTl9JTkRFWF8xMkJQQzsKKwljYXNlIDE0OgorCQlyZXR1cm4gQ09MVU1O X0lOREVYXzE0QlBDOworCWNhc2UgMTY6CisJCXJldHVybiBDT0xVTU5fSU5ERVhfMTZCUEM7CisJ ZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorfQorCitpbnQgaW50ZWxfZHBfY29tcHV0 ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQoreworCXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRz Y19jZmcgPSAmcGlwZV9jb25maWctPmRwX2RzY19jZmc7CisJdTE2IGNvbXByZXNzZWRfYnBwID0g cGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9icHA7CisJdTggaSA9IDA7CisJdTgg cm93X2luZGV4ID0gMDsKKwl1OCBjb2x1bW5faW5kZXggPSAwOworCXU4IGxpbmVfYnVmX2RlcHRo ID0gMDsKKworCXZkc2NfY2ZnLT5waWNfd2lkdGggPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmNydGNfaGRpc3BsYXk7CisJdmRzY19jZmctPnBpY19oZWlnaHQgPSBwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7CisJdmRzY19jZmctPnNsaWNlX3dp ZHRoID0gRElWX1JPVU5EX1VQKHZkc2NfY2ZnLT5waWNfd2lkdGgsCisJCQkJCSAgICAgcGlwZV9j b25maWctPmRzY19wYXJhbXMuc2xpY2VfY291bnQpOworCS8qCisJICogU2xpY2UgSGVpZ2h0IG9m IDggd29ya3MgZm9yIGFsbCBjdXJyZW50bHkgYXZhaWxhYmxlIHBhbmVscy4gU28gc3RhcnQKKwkg KiB3aXRoIHRoYXQgaWYgcGljX2hlaWdodCBpcyBhbiBpbnRlZ3JhbCBtdWx0aXBsZSBvZiA4Lgor CSAqIEV2ZW50dWFsbHkgYWRkIGxvZ2ljIHRvIHRyeSBtdWx0aXBsZSBzbGljZSBoZWlnaHRzLgor CSAqLworCWlmICh2ZHNjX2NmZy0+cGljX2hlaWdodCAlIDggPT0gMCkKKwkJdmRzY19jZmctPnNs aWNlX2hlaWdodCA9IDg7CisJZWxzZSBpZiAodmRzY19jZmctPnBpY19oZWlnaHQgJSA0ID09IDAp CisJCXZkc2NfY2ZnLT5zbGljZV9oZWlnaHQgPSA0OworCWVsc2UKKwkJdmRzY19jZmctPnNsaWNl X2hlaWdodCA9IDI7CisKKwkvKiBWYWx1ZXMgZmlsbGVkIGZyb20gRFNDIFNpbmsgRFBDRCAqLwor CXZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9tYWpvciA9CisJCShpbnRlbF9kcC0+ZHNjX2RwY2RbRFBf RFNDX1JFViAtIERQX0RTQ19TVVBQT1JUXSAmCisJCSBEUF9EU0NfTUFKT1JfTUFTSykgPj4gRFBf RFNDX01BSk9SX1NISUZUOworCXZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA9CisJCW1pbihE U0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlOLAorCQkgICAgKGludGVsX2RwLT5kc2NfZHBjZFtEUF9E U0NfUkVWIC0gRFBfRFNDX1NVUFBPUlRdICYKKwkJICAgICBEUF9EU0NfTUlOT1JfTUFTSykgPj4g RFBfRFNDX01JTk9SX1NISUZUKTsKKworCXZkc2NfY2ZnLT5jb252ZXJ0X3JnYiA9IGludGVsX2Rw LT5kc2NfZHBjZFtEUF9EU0NfREVDX0NPTE9SX0ZPUk1BVF9DQVAgLSBEUF9EU0NfU1VQUE9SVF0g JgorCQlEUF9EU0NfUkdCOworCisJbGluZV9idWZfZGVwdGggPSBkcm1fZHBfZHNjX3NpbmtfbGlu ZV9idWZfZGVwdGgoaW50ZWxfZHAtPmRzY19kcGNkKTsKKwlpZiAoIWxpbmVfYnVmX2RlcHRoKSB7 CisJCURSTV9ERUJVR19LTVMoIkRTQyBTaW5rIExpbmUgQnVmZmVyIERlcHRoIGludmFsaWRcbiIp OworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJaWYgKHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5v ciA9PSAyKQorCQl2ZHNjX2NmZy0+bGluZV9idWZfZGVwdGggPSAobGluZV9idWZfZGVwdGggPT0g RFNDXzFfMl9NQVhfTElORUJVRl9ERVBUSF9CSVRTKSA/CisJCQlEU0NfMV8yX01BWF9MSU5FQlVG X0RFUFRIX1ZBTCA6IGxpbmVfYnVmX2RlcHRoOworCWVsc2UKKwkJdmRzY19jZmctPmxpbmVfYnVm X2RlcHRoID0gKGxpbmVfYnVmX2RlcHRoID4gRFNDXzFfMV9NQVhfTElORUJVRl9ERVBUSF9CSVRT KSA/CisJCQlEU0NfMV8xX01BWF9MSU5FQlVGX0RFUFRIX0JJVFMgOiBsaW5lX2J1Zl9kZXB0aDsK KworCS8qIEdlbiAxMSBkb2VzIG5vdCBzdXBwb3J0IFlDYkNyICovCisJdmRzY19jZmctPmVuYWJs ZTQyMiA9IGZhbHNlOworCS8qIEdlbiAxMSBkb2VzIG5vdCBzdXBwb3J0IFZCUiAqLworCXZkc2Nf Y2ZnLT52YnJfZW5hYmxlID0gZmFsc2U7CisJdmRzY19jZmctPmJsb2NrX3ByZWRfZW5hYmxlID0K KwkJCWludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfQkxLX1BSRURJQ1RJT05fU1VQUE9SVCAtIERQ X0RTQ19TVVBQT1JUXSAmCisJCURQX0RTQ19CTEtfUFJFRElDVElPTl9JU19TVVBQT1JURUQ7CisK KwkvKiBHZW4gMTEgb25seSBzdXBwb3J0cyBpbnRlZ3JhbCB2YWx1ZXMgb2YgYnBwICovCisJdmRz Y19jZmctPmJpdHNfcGVyX3BpeGVsID0gY29tcHJlc3NlZF9icHAgPDwgNDsKKwl2ZHNjX2NmZy0+ Yml0c19wZXJfY29tcG9uZW50ID0gcGlwZV9jb25maWctPnBpcGVfYnBwIC8gMzsKKworCWZvciAo aSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVMgLSAxOyBpKyspIHsKKwkJLyoKKwkJICogc2l4 IDBzIGFyZSBhcHBlbmRlZCB0byB0aGUgbHNiIG9mIGVhY2ggdGhyZXNob2xkIHZhbHVlCisJCSAq IGludGVybmFsbHkgaW4gaC93LgorCQkgKiBPbmx5IDggYml0cyBhcmUgYWxsb3dlZCBmb3IgcHJv Z3JhbW1pbmcgUmNCdWZUaHJlc2hvbGQKKwkJICovCisJCXZkc2NfY2ZnLT5yY19idWZfdGhyZXNo W2ldID0gcmNfYnVmX3RocmVzaFtpXSA+PiA2OworCX0KKworCS8qCisJICogRm9yIDZicHAsIFJD IEJ1ZmZlciB0aHJlc2hvbGQgMTIgYW5kIDEzIG5lZWQgYSBkaWZmZXJlbnQgdmFsdWUKKwkgKiBh cyBwZXIgQyBNb2RlbAorCSAqLworCWlmIChjb21wcmVzc2VkX2JwcCA9PSA2KSB7CisJCXZkc2Nf Y2ZnLT5yY19idWZfdGhyZXNoWzEyXSA9IDB4N0M7CisJCXZkc2NfY2ZnLT5yY19idWZfdGhyZXNo WzEzXSA9IDB4N0Q7CisJfQorCisJcm93X2luZGV4ID0gZ2V0X3Jvd19pbmRleF9mb3JfcmNfcGFy YW1zKGNvbXByZXNzZWRfYnBwKTsKKwljb2x1bW5faW5kZXggPQorCQlnZXRfY29sdW1uX2luZGV4 X2Zvcl9yY19wYXJhbXModmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCk7CisKKwlpZiAocm93 X2luZGV4IDwgMCB8fCBjb2x1bW5faW5kZXggPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXZk c2NfY2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQgPQorCQlyY19wYXJhbXNbcm93X2luZGV4XVtj b2x1bW5faW5kZXhdLmZpcnN0X2xpbmVfYnBnX29mZnNldDsKKwl2ZHNjX2NmZy0+aW5pdGlhbF94 bWl0X2RlbGF5ID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFs X3htaXRfZGVsYXk7CisJdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0ID0KKwkJcmNfcGFyYW1zW3Jv d19pbmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFsX29mZnNldDsKKwl2ZHNjX2NmZy0+ZmxhdG5l c3NfbWluX3FwID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5mbGF0bmVz c19taW5fcXA7CisJdmRzY19jZmctPmZsYXRuZXNzX21heF9xcCA9CisJCXJjX3BhcmFtc1tyb3df aW5kZXhdW2NvbHVtbl9pbmRleF0uZmxhdG5lc3NfbWF4X3FwOworCXZkc2NfY2ZnLT5yY19xdWFu dF9pbmNyX2xpbWl0MCA9CisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNf cXVhbnRfaW5jcl9saW1pdDA7CisJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQxID0KKwkJ cmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5yY19xdWFudF9pbmNyX2xpbWl0MTsK KworCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgeworCQl2ZHNjX2Nm Zy0+cmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21pbl9xcCA9CisJCQlyY19wYXJhbXNbcm93X2lu ZGV4XVtjb2x1bW5faW5kZXhdLnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9taW5fcXA7CisJCXZk c2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWF4X3FwID0KKwkJCXJjX3BhcmFtc1ty b3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX21heF9xcDsK KwkJLyoKKwkJICogUmFuZ2UgQlBHIE9mZnNldCB1c2VzIDIncyBjb21wbGVtZW50IGFuZCBpcyBv bmx5IGEgNiBiaXRzLiBTbworCQkgKiBtYXNrIGl0IHRvIGdldCBvbmx5IDYgYml0cy4KKwkJICov CisJCXZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfYnBnX29mZnNldCA9CisJCQly Y19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5n ZV9icGdfb2Zmc2V0ICYKKwkJCURTQ19SQU5HRV9CUEdfT0ZGU0VUX01BU0s7CisJfQorCisJLyoK KwkgKiBCaXRzUGVyQ29tcG9uZW50IHZhbHVlIGRldGVybWluZXMgbXV4X3dvcmRfc2l6ZToKKwkg KiBXaGVuIEJpdHNQZXJDb21wb25lbnQgaXMgMTJicGMsIG11eFdvcmRTaXplIHdpbGwgYmUgZXF1 YWwgdG8gNjQgYml0cworCSAqIFdoZW4gQml0c1BlckNvbXBvbmVudCBpcyA4IG9yIDEwYnBjLCBt dXhXb3JkU2l6ZSB3aWxsIGJlIGVxdWFsIHRvCisJICogNDggYml0cworCSAqLworCWlmICh2ZHNj X2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID09IDggfHwKKwkgICAgdmRzY19jZmctPmJpdHNfcGVy X2NvbXBvbmVudCA9PSAxMCkKKwkJdmRzY19jZmctPm11eF93b3JkX3NpemUgPSBEU0NfTVVYX1dP UkRfU0laRV84XzEwX0JQQzsKKwllbHNlIGlmICh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50 ID09IDEyKQorCQl2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSA9IERTQ19NVVhfV09SRF9TSVpFXzEy X0JQQzsKKworCS8qIFJDX01PREVMX1NJWkUgaXMgYSBjb25zdGFudCBhY3Jvc3MgYWxsIGNvbmZp Z3VyYXRpb25zICovCisJdmRzY19jZmctPnJjX21vZGVsX3NpemUgPSBEU0NfUkNfTU9ERUxfU0la RV9DT05TVDsKKwkvKiBJbml0aWFsU2NhbGVWYWx1ZSBpcyBhIDYgYml0IHZhbHVlIHdpdGggMyBm cmFjdGlvbmFsIGJpdHMgKFUzLjMpICovCisJdmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUg PSAodmRzY19jZmctPnJjX21vZGVsX3NpemUgPDwgMykgLworCQkodmRzY19jZmctPnJjX21vZGVs X3NpemUgLSB2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQpOworCisJcmV0dXJuIDA7Cit9CmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZHBf aGVscGVyLmgKaW5kZXggNTczNmM5NDJjODViLi42MWM2ZWNjMGEwMmIgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVy LmgKQEAgLTE4Nyw2ICsxODcsOSBAQAogCiAjZGVmaW5lIERQX0dVSUQJCQkJICAgIDB4MDMwICAg LyogMS4yICovCiAKKyNkZWZpbmUgRFBfRFNDX1JDX1BJWEVMU19QRVJfR1JPVVAJCTMKKyNkZWZp bmUgRFBfRFNDX1NDQUxFX0RFQ1JFTUVOVF9JTlRFUlZBTF9NQVgJNDA5NQorCiAjZGVmaW5lIERQ X0RTQ19TVVBQT1JUICAgICAgICAgICAgICAgICAgICAgIDB4MDYwICAgLyogRFAgMS40ICovCiAj IGRlZmluZSBEUF9EU0NfREVDT01QUkVTU0lPTl9JU19TVVBQT1JURUQgICgxIDw8IDApCiAKLS0g CjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==