From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v2 15/23] drm/i915/dsc: Define & Compute VESA DSC params Date: Tue, 31 Jul 2018 14:07:11 -0700 Message-ID: <1533071239-28815-16-git-send-email-manasi.d.navare@intel.com> References: <1533071239-28815-1-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 877C76E3A1 for ; Tue, 31 Jul 2018 21:04:51 +0000 (UTC) In-Reply-To: <1533071239-28815-1-git-send-email-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 aW9uCmNhbiBiZSBlbmFibGVkIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUuCgp2NSAoRnJvbSBNYW5h c2kpOgoqIEFkZCBsb2dpYyB0byBsaW1pdCB0aGUgbWF4IGxpbmUgYnVmIGRlcHRoIGZvciBEU0Mg MS4xIHRvIDEzCmFzIHBlciBEU0MgMS4xIHNwZWMKKiBGaXggZGltIGNoZWNrcGF0Y2ggd2Fybmlu Z3MvY2hlY2tzCgp2NCAoRnJvbSBHYXVyYXYpOgoqIFJlYmFzZSBvbiBsYXRlc3QgZHJtIHRpcAoq IHJlbmFtZSB2YXJpYWJsZSBuYW1lKE1hbmFzaSkKKiBQb3B1bGF0ZSBsaW5lYnVmX2RlcHRoIHZh cmlhYmxlKE1hbmFzaSkKCnYzIChGcm9tIEdhdXJhdik6CiogUmViYXNlIG15IHByZXZpb3VzIHBh dGNoZXMgb24gdG9wIG9mIE1hbmFzaSdzIGxhdGVzdCBwYXRjaApzZXJpZXMKKiBVc2luZyA+Pm4g cmF0aGVyIHRoYW4gLzJebiAoTWFuYXNpKQoqIENoYW5nZSB0aGUgY29tbWl0IG1lc3NhZ2UgdG8g ZXhwbGFpbiB3aGF0IHRoZSBwYXRjaCBpcyBkb2luZyhHYXVyYXYpCgpGaXhlZCByZXZpZXcgY29t bWVudHMgZnJvbSBWaWxsZToKKiBEb24ndCB1c2UgbWFjcm8gVFdPU19DT01QTEVNRU5UCiogTWVu dGlvbiBpbiBjb21tZW50IGFib3V0IHRoZSBzb3VyY2Ugb2YgUkMgcGFyYW1zCiogUmV0dXJuIGRp cmVjdGx5IGZyb20gY2FzZSBzdGF0ZW1lbnRzCiogVXNpbmcgc2luZ2xlIGFzc3NpZ25tZW50IGZv ciBhc3NpZ25pbmcgcmNfcmFuZ2VfcGFyYW1zCiogVXNpbmcgPDxuIHJhdGhlciB0aGFuICoyXm4g YW5kIHJlbW92aW5nIHRoZSBjb21tZW50cwphYm91dCB0aGUgZml4ZWQgcG9pbnQgbnVtYmVycwoK djIgKEZyb20gTWFuYXNpKToKKiBVcGRhdGUgbG9naWMgZm9yIG1pbm9yIHZlcnNpb24gdG8gY29u c2lkZXIgdGhlIGRwY2QgdmFsdWUKYW5kIHdoYXQgc3VwcG9ydGVkIGJ5IHRoZSBIVyBwbGF0Zm9y bQoqIFVzZSBEUk0gRFNDIGNvbmZpZyBzdHJ1Y3QgaW5zdGVhZCBvZiBpbnRlbF9kcCBzdHJ1Y3QK KiBNb3ZlIHRoZSBEU0MgY29uc3RhbnRzIHRvIERSTSBEU0MgaGVhZGVyIGZpbGUKKiBVc2UgdTE2 LCB1OCB3aGVyZSBiaWdnZXIgZGF0YSB0eXBlcyBub3QgbmVlZGVkCiogKiBDb21wdXRlIHRoZSBE U0MgcGFyYW1ldGVycyBhcyBwYXJ0IG9mIERTQyBjb21wdXRlIGNvbmZpZwpzaW5jZSB0aGUgY29t cHV0YXRpb24gY2FuIGZhaWwgKE1hbmFzaSkKCkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFA bGludXguaW50ZWwuY29tPgpDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+CkNjOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+ CkNjOiBHYXVyYXYgSyBTaW5naCA8Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBHYXVyYXYgSyBTaW5naCA8Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyAgIHwgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o ICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMgfCA0NTUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvZHJtL2RybV9kcF9oZWxw ZXIuaCAgICAgICB8ICAgMyArCiBpbmNsdWRlL2RybS9kcm1fZHNjLmggICAgICAgICAgICAgfCAg IDIgKy0KIDYgZmlsZXMgY2hhbmdlZCwgNDcyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQppbmRleCA1Nzk0ZjEwLi5kZWFmMmQ0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQpAQCAtMTUzLDcgKzE1Myw4IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAogCSAgaW50 ZWxfc2R2by5vIFwKIAkgIGludGVsX3R2Lm8gXAogCSAgdmx2X2RzaS5vIFwKLQkgIHZsdl9kc2lf cGxsLm8KKwkgIHZsdl9kc2lfcGxsLm8gXAorCSAgaW50ZWxfdmRzYy5vCiAKICMgUG9zdC1tb3J0 ZW0gZGVidWcgYW5kIEdQVSBoYW5nIHN0YXRlIGNhcHR1cmUKIGk5MTUtJChDT05GSUdfRFJNX0k5 MTVfQ0FQVFVSRV9FUlJPUikgKz0gaTkxNV9ncHVfZXJyb3IubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKaW5kZXggNzEzMmY1Mi4uZGMwYTNjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0y MDQyLDYgKzIwNDIsMTMgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9CisJ aWYgKGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhpbnRlbF9kcCwgcGlwZV9jb25maWcpIDwg MCkgeworCQlEUk1fRVJST1IoIkNhbm5vdCBjb21wdXRlIHZhbGlkIERTQyBwYXJhbWV0ZXJzIGZv ciBJbnB1dCBCcHAgPSAlZCIKKwkJCSAgIkNvbXByZXNzZWQgQlBQID0gJWRcbiIsCisJCQkgIHBp cGVfY29uZmlnLT5waXBlX2JwcCwKKwkJCSAgcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJl c3NlZF9icHApOworCQlyZXR1cm4gZmFsc2U7CisJfQogCXBpcGVfY29uZmlnLT5kc2NfcGFyYW1z LmNvbXByZXNzaW9uX2VuYWJsZSA9IHRydWU7CiAJRFJNX0RFQlVHX0tNUygiRFAgRFNDIGNvbXB1 dGVkIHdpdGggSW5wdXQgQnBwID0gJWQgIgogCQkgICAgICAiQ29tcHJlc3NlZCBCcHAgPSAlZCBT bGljZSBDb3VudCA9ICVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBiN2MyNjUy Li4zM2NjNzc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTc0OSw2ICsxNzQ5LDEw IEBAIHVpbnQxNl90IGludGVsX2RwX2RzY19nZXRfb3V0cHV0X2JwcChpbnQgbGlua19jbG9jaywg dWludDhfdCBsYW5lX2NvdW50LAogdWludDhfdCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50 KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlX2Nsb2NrLAogCQkJCSAgICAgaW50 IG1vZGVfaGRpc3BsYXkpOwogCisvKiBpbnRlbF92ZHNjLmMgKi8KK2ludCBpbnRlbF9kcF9jb21w dXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOworCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu dCBpbnRlbF9kcF91bnVzZWRfbGFuZV9tYXNrKGludCBsYW5lX2NvdW50KQogewogCXJldHVybiB+ KCgxIDw8IGxhbmVfY291bnQpIC0gMSkgJiAweGY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF92ZHNjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNkMjcwYwotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwpAQCAtMCwwICsxLDQ1NSBA QAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcjogR2F1cmF2 IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KKyAqICAgICAgICAgTWFuYXNpIE5h dmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KKyAqLworCisjaW5jbHVkZSA8ZHJtL2Ry bVAuaD4KKyNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KKyNpbmNsdWRlICJpOTE1X2Rydi5oIgor I2luY2x1ZGUgImludGVsX2Rydi5oIgorCitlbnVtIFJPV19JTkRFWF9CUFAgeworCVJPV19JTkRF WF82QlBQID0gMCwKKwlST1dfSU5ERVhfOEJQUCwKKwlST1dfSU5ERVhfMTBCUFAsCisJUk9XX0lO REVYXzEyQlBQLAorCVJPV19JTkRFWF8xNUJQUCwKKwlNQVhfUk9XX0lOREVYCit9OworCitlbnVt IENPTFVNTl9JTkRFWF9CUEMgeworCUNPTFVNTl9JTkRFWF84QlBDID0gMCwKKwlDT0xVTU5fSU5E RVhfMTBCUEMsCisJQ09MVU1OX0lOREVYXzEyQlBDLAorCUNPTFVNTl9JTkRFWF8xNEJQQywKKwlD T0xVTU5fSU5ERVhfMTZCUEMsCisJTUFYX0NPTFVNTl9JTkRFWAorfTsKKworI2RlZmluZSBEU0Nf U1VQUE9SVEVEX1ZFUlNJT05fTUlOCQkxCisKKy8qIEZyb20gRFNDX3YxLjExIHNwZWMsIHJjX3Bh cmFtZXRlcl9TZXQgc3ludGF4IGVsZW1lbnQgdHlwaWNhbGx5IGNvbnN0YW50ICovCitzdGF0aWMg dTE2IHJjX2J1Zl90aHJlc2hbXSA9IHsKKwk4OTYsIDE3OTIsIDI2ODgsIDM1ODQsIDQ0ODAsIDUz NzYsIDYyNzIsIDY3MjAsIDcxNjgsIDc2MTYsCisJNzc0NCwgNzg3MiwgODAwMCwgODA2NAorfTsK Kworc3RydWN0IHJjX3BhcmFtZXRlcnMgeworCXUxNiBpbml0aWFsX3htaXRfZGVsYXk7CisJdTgg Zmlyc3RfbGluZV9icGdfb2Zmc2V0OworCXUxNiBpbml0aWFsX29mZnNldDsKKwl1OCBmbGF0bmVz c19taW5fcXA7CisJdTggZmxhdG5lc3NfbWF4X3FwOworCXU4IHJjX3F1YW50X2luY3JfbGltaXQw OworCXU4IHJjX3F1YW50X2luY3JfbGltaXQxOworCXN0cnVjdCBkc2NfcmNfcmFuZ2VfcGFyYW1l dGVycyByY19yYW5nZV9wYXJhbXNbRFNDX05VTV9CVUZfUkFOR0VTXTsKK307CisKKy8qCisgKiBT ZWxlY3RlZCBSYXRlIENvbnRyb2wgUmVsYXRlZCBQYXJhbWV0ZXIgUmVjb21tZW5kZWQgVmFsdWVz CisgKiBmcm9tIERTQ192MS4xMSBzcGVjICYgQyBNb2RlbCByZWxlYXNlOiBEU0NfbW9kZWxfMjAx NjEyMTIKKyAqLworc3RhdGljIHN0cnVjdCByY19wYXJhbWV0ZXJzIHJjX3BhcmFtc1tdW01BWF9D T0xVTU5fSU5ERVhdID0geworeworCS8qIDZCUFAvOEJQQyAqLworCXsgNzY4LCAxNSwgNjE0NCwg MywgMTMsIDExLCAxMSwgeworCQl7IDAsIDQsIDAgfSwgeyAxLCA2LCAtMiB9LCB7IDMsIDgsIC0y IH0sIHsgNCwgOCwgLTQgfSwKKwkJeyA1LCA5LCAtNiB9LCB7IDUsIDksIC02IH0sIHsgNiwgOSwg LTYgfSwgeyA2LCAxMCwgLTggfSwKKwkJeyA3LCAxMSwgLTggfSwgeyA4LCAxMiwgLTEwIH0sIHsg OSwgMTIsIC0xMCB9LCB7IDEwLCAxMiwgLTEyIH0sCisJCXsgMTAsIDEyLCAtMTIgfSwgeyAxMSwg MTIsIC0xMiB9LCB7IDEzLCAxNCwgLTEyIH0KKwkJfQorCX0sCisJLyogNkJQUC8xMEJQQyAqLwor CXsgNzY4LCAxNSwgNjE0NCwgNywgMTcsIDE1LCAxNSwgeworCQl7IDAsIDgsIDAgfSwgeyAzLCAx MCwgLTIgfSwgeyA3LCAxMiwgLTIgfSwgeyA4LCAxMiwgLTQgfSwKKwkJeyA5LCAxMywgLTYgfSwg eyA5LCAxMywgLTYgfSwgeyAxMCwgMTMsIC02IH0sIHsgMTAsIDE0LCAtOCB9LAorCQl7IDExLCAx NSwgLTggfSwgeyAxMiwgMTYsIC0xMCB9LCB7IDEzLCAxNiwgLTEwIH0sCisJCXsgMTQsIDE2LCAt MTIgfSwgeyAxNCwgMTYsIC0xMiB9LCB7IDE1LCAxNiwgLTEyIH0sCisJCXsgMTcsIDE4LCAtMTIg fQorCQl9CisJfSwKKwkvKiA2QlBQLzEyQlBDICovCisJeyA3NjgsIDE1LCA2MTQ0LCAxMSwgMjEs IDE5LCAxOSwgeworCQl7IDAsIDEyLCAwIH0sIHsgNSwgMTQsIC0yIH0sIHsgMTEsIDE2LCAtMiB9 LCB7IDEyLCAxNiwgLTQgfSwKKwkJeyAxMywgMTcsIC02IH0sIHsgMTMsIDE3LCAtNiB9LCB7IDE0 LCAxNywgLTYgfSwgeyAxNCwgMTgsIC04IH0sCisJCXsgMTUsIDE5LCAtOCB9LCB7IDE2LCAyMCwg LTEwIH0sIHsgMTcsIDIwLCAtMTAgfSwKKwkJeyAxOCwgMjAsIC0xMiB9LCB7IDE4LCAyMCwgLTEy IH0sIHsgMTksIDIwLCAtMTIgfSwKKwkJeyAyMSwgMjIsIC0xMiB9CisJCX0KKwl9LAorCS8qIDZC UFAvMTRCUEMgKi8KKwl7IDc2OCwgMTUsIDYxNDQsIDE1LCAyNSwgMjMsIDI3LCB7CisJCXsgMCwg MTYsIDAgfSwgeyA3LCAxOCwgLTIgfSwgeyAxNSwgMjAsIC0yIH0sIHsgMTYsIDIwLCAtNCB9LAor CQl7IDE3LCAyMSwgLTYgfSwgeyAxNywgMjEsIC02IH0sIHsgMTgsIDIxLCAtNiB9LCB7IDE4LCAy MiwgLTggfSwKKwkJeyAxOSwgMjMsIC04IH0sIHsgMjAsIDI0LCAtMTAgfSwgeyAyMSwgMjQsIC0x MCB9LAorCQl7IDIyLCAyNCwgLTEyIH0sIHsgMjIsIDI0LCAtMTIgfSwgeyAyMywgMjQsIC0xMiB9 LAorCQl7IDI1LCAyNiwgLTEyIH0KKwkJfQorCX0sCisJLyogNkJQUC8xNkJQQyAqLworCXsgNzY4 LCAxNSwgNjE0NCwgMTksIDI5LCAyNywgMjcsIHsKKwkJeyAwLCAyMCwgMCB9LCB7IDksIDIyLCAt MiB9LCB7IDE5LCAyNCwgLTIgfSwgeyAyMCwgMjQsIC00IH0sCisJCXsgMjEsIDI1LCAtNiB9LCB7 IDIxLCAyNSwgLTYgfSwgeyAyMiwgMjUsIC02IH0sIHsgMjIsIDI2LCAtOCB9LAorCQl7IDIzLCAy NywgLTggfSwgeyAyNCwgMjgsIC0xMCB9LCB7IDI1LCAyOCwgLTEwIH0sCisJCXsgMjYsIDI4LCAt MTIgfSwgeyAyNiwgMjgsIC0xMiB9LCB7IDI3LCAyOCwgLTEyIH0sCisJCXsgMjksIDMwLCAtMTIg fQorCQl9CisJfSwKK30sCit7CisJLyogOEJQUC84QlBDICovCisJeyA1MTIsIDEyLCA2MTQ0LCAz LCAxMiwgMTEsIDExLCB7CisJCXsgMCwgNCwgMiB9LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0s IHsgMSwgNiwgLTIgfSwKKwkJeyAzLCA3LCAtNCB9LCB7IDMsIDcsIC02IH0sIHsgMywgNywgLTgg fSwgeyAzLCA4LCAtOCB9LAorCQl7IDMsIDksIC04IH0sIHsgMywgMTAsIC0xMCB9LCB7IDUsIDEx LCAtMTAgfSwgeyA1LCAxMiwgLTEyIH0sCisJCXsgNSwgMTMsIC0xMiB9LCB7IDcsIDEzLCAtMTIg fSwgeyAxMywgMTUsIC0xMiB9CisJCX0KKwl9LAorCS8qIDhCUFAvMTBCUEMgKi8KKwl7IDUxMiwg MTIsIDYxNDQsIDcsIDE2LCAxNSwgMTUsIHsKKwkJeyAwLCA0LCAyIH0sIHsgNCwgOCwgMCB9LCB7 IDUsIDksIDAgfSwgeyA1LCAxMCwgLTIgfSwKKwkJeyA3LCAxMSwgLTQgfSwgeyA3LCAxMSwgLTYg fSwgeyA3LCAxMSwgLTggfSwgeyA3LCAxMiwgLTggfSwKKwkJeyA3LCAxMywgLTggfSwgeyA3LCAx NCwgLTEwIH0sIHsgOSwgMTUsIC0xMCB9LCB7IDksIDE2LCAtMTIgfSwKKwkJeyA5LCAxNywgLTEy IH0sIHsgMTEsIDE3LCAtMTIgfSwgeyAxNywgMTksIC0xMiB9CisJCX0KKwl9LAorCS8qIDhCUFAv MTJCUEMgKi8KKwl7IDUxMiwgMTIsIDYxNDQsIDExLCAyMCwgMTksIDE5LCB7CisJCXsgMCwgMTIs IDIgfSwgeyA0LCAxMiwgMCB9LCB7IDksIDEzLCAwIH0sIHsgOSwgMTQsIC0yIH0sCisJCXsgMTEs IDE1LCAtNCB9LCB7IDExLCAxNSwgLTYgfSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9 LAorCQl7IDExLCAxNywgLTggfSwgeyAxMSwgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEwIH0sCisJ CXsgMTMsIDIwLCAtMTIgfSwgeyAxMywgMjEsIC0xMiB9LCB7IDE1LCAyMSwgLTEyIH0sCisJCXsg MjEsIDIzLCAtMTIgfQorCQl9CisJfSwKKwkvKiA4QlBQLzE0QlBDICovCisJeyA1MTIsIDEyLCA2 MTQ0LCAxNSwgMjQsIDIzLCAyMywgeworCQl7IDAsIDEyLCAwIH0sIHsgNSwgMTMsIDAgfSwgeyAx MSwgMTUsIDAgfSwgeyAxMiwgMTcsIC0yIH0sCisJCXsgMTUsIDE5LCAtNCB9LCB7IDE1LCAxOSwg LTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LAorCQl7IDE1LCAyMSwgLTggfSwg eyAxNSwgMjIsIC0xMCB9LCB7IDE3LCAyMiwgLTEwIH0sCisJCXsgMTcsIDIzLCAtMTIgfSwgeyAx NywgMjMsIC0xMiB9LCB7IDIxLCAyNCwgLTEyIH0sCisJCXsgMjQsIDI1LCAtMTIgfQorCQl9CisJ fSwKKwkvKiA4QlBQLzE2QlBDICovCisJeyA1MTIsIDEyLCA2MTQ0LCAxOSwgMjgsIDI3LCAyNywg eworCQl7IDAsIDEyLCAyIH0sIHsgNiwgMTQsIDAgfSwgeyAxMywgMTcsIDAgfSwgeyAxNSwgMjAs IC0yIH0sCisJCXsgMTksIDIzLCAtNCB9LCB7IDE5LCAyMywgLTYgfSwgeyAxOSwgMjMsIC04IH0s IHsgMTksIDI0LCAtOCB9LAorCQl7IDE5LCAyNSwgLTggfSwgeyAxOSwgMjYsIC0xMCB9LCB7IDIx LCAyNiwgLTEwIH0sCisJCXsgMjEsIDI3LCAtMTIgfSwgeyAyMSwgMjcsIC0xMiB9LCB7IDI1LCAy OCwgLTEyIH0sCisJCXsgMjgsIDI5LCAtMTIgfQorCQl9CisJfSwKK30sCit7CisJLyogMTBCUFAv OEJQQyAqLworCXsgNDEwLCAxNSwgNTYzMiwgMywgMTIsIDExLCAxMSwgeworCQl7IDAsIDMsIDIg fSwgeyAwLCA0LCAwIH0sIHsgMSwgNSwgMCB9LCB7IDIsIDYsIC0yIH0sCisJCXsgMywgNywgLTQg fSwgeyAzLCA3LCAtNiB9LCB7IDMsIDcsIC04IH0sIHsgMywgOCwgLTggfSwKKwkJeyAzLCA5LCAt OCB9LCB7IDMsIDksIC0xMCB9LCB7IDUsIDEwLCAtMTAgfSwgeyA1LCAxMCwgLTEwIH0sCisJCXsg NSwgMTEsIC0xMiB9LCB7IDcsIDExLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9CisJCX0KKwl9LAor CS8qIDEwQlBQLzEwQlBDICovCisJeyA0MTAsIDE1LCA1NjMyLCA3LCAxNiwgMTUsIDE1LCB7CisJ CXsgMCwgNywgMiB9LCB7IDQsIDgsIDAgfSwgeyA1LCA5LCAwIH0sIHsgNiwgMTAsIC0yIH0sCisJ CXsgNywgMTEsIC00IH0sIHsgNywgMTEsIC02IH0sIHsgNywgMTEsIC04IH0sIHsgNywgMTIsIC04 IH0sCisJCXsgNywgMTMsIC04IH0sIHsgNywgMTMsIC0xMCB9LCB7IDksIDE0LCAtMTAgfSwgeyA5 LCAxNCwgLTEwIH0sCisJCXsgOSwgMTUsIC0xMiB9LCB7IDExLCAxNSwgLTEyIH0sIHsgMTUsIDE2 LCAtMTIgfQorCQl9CisJfSwKKwkvKiAxMEJQUC8xMkJQQyAqLworCXsgNDEwLCAxNSwgNTYzMiwg MTEsIDIwLCAxOSwgMTksIHsKKwkJeyAwLCAxMSwgMiB9LCB7IDQsIDEyLCAwIH0sIHsgOSwgMTMs IDAgfSwgeyAxMCwgMTQsIC0yIH0sCisJCXsgMTEsIDE1LCAtNCB9LCB7IDExLCAxNSwgLTYgfSwg eyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LAorCQl7IDExLCAxNywgLTggfSwgeyAxMSwg MTcsIC0xMCB9LCB7IDEzLCAxOCwgLTEwIH0sCisJCXsgMTMsIDE4LCAtMTAgfSwgeyAxMywgMTks IC0xMiB9LCB7IDE1LCAxOSwgLTEyIH0sCisJCXsgMTksIDIwLCAtMTIgfQorCQl9CisJfSwKKwkv KiAxMEJQUC8xNEJQQyAqLworCXsgNDEwLCAxNSwgNTYzMiwgMTUsIDI0LCAyMywgMjMsIHsKKwkJ eyAwLCAxMSwgMiB9LCB7IDUsIDEzLCAwIH0sIHsgMTEsIDE1LCAwIH0sIHsgMTMsIDE4LCAtMiB9 LAorCQl7IDE1LCAxOSwgLTQgfSwgeyAxNSwgMTksIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1 LCAyMCwgLTggfSwKKwkJeyAxNSwgMjEsIC04IH0sIHsgMTUsIDIxLCAtMTAgfSwgeyAxNywgMjIs IC0xMCB9LAorCQl7IDE3LCAyMiwgLTEwIH0sIHsgMTcsIDIzLCAtMTIgfSwgeyAxOSwgMjMsIC0x MiB9LAorCQl7IDIzLCAyNCwgLTEyIH0KKwkJfQorCX0sCisJLyogMTBCUFAvMTZCUEMgKi8KKwl7 IDQxMCwgMTUsIDU2MzIsIDE5LCAyOCwgMjcsIDI3LCB7CisJCXsgMCwgMTEsIDIgfSwgeyA2LCAx NCwgMCB9LCB7IDEzLCAxNywgMCB9LCB7IDE2LCAyMCwgLTIgfSwKKwkJeyAxOSwgMjMsIC00IH0s IHsgMTksIDIzLCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCisJCXsgMTks IDI1LCAtOCB9LCB7IDE5LCAyNSwgLTEwIH0sIHsgMjEsIDI2LCAtMTAgfSwKKwkJeyAyMSwgMjYs IC0xMCB9LCB7IDIxLCAyNywgLTEyIH0sIHsgMjMsIDI3LCAtMTIgfSwKKwkJeyAyNywgMjgsIC0x MiB9CisJCX0KKwl9LAorfSwKK3sKKwkvKiAxMkJQUC84QlBDICovCisJeyAzNDEsIDE1LCAyMDQ4 LCAzLCAxMiwgMTEsIDExLCB7CisJCXsgMCwgMiwgMiB9LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAw IH0sIHsgMSwgNiwgLTIgfSwKKwkJeyAzLCA3LCAtNCB9LCB7IDMsIDcsIC02IH0sIHsgMywgNywg LTggfSwgeyAzLCA4LCAtOCB9LAorCQl7IDMsIDksIC04IH0sIHsgMywgMTAsIC0xMCB9LCB7IDUs IDExLCAtMTAgfSwKKwkJeyA1LCAxMiwgLTEyIH0sIHsgNSwgMTMsIC0xMiB9LCB7IDcsIDEzLCAt MTIgfSwgeyAxMywgMTUsIC0xMiB9CisJCX0KKwl9LAorCS8qIDEyQlBQLzEwQlBDICovCisJeyAz NDEsIDE1LCAyMDQ4LCA3LCAxNiwgMTUsIDE1LCB7CisJCXsgMCwgMiwgMiB9LCB7IDIsIDUsIDAg fSwgeyAzLCA3LCAwIH0sIHsgNCwgOCwgLTIgfSwKKwkJeyA2LCA5LCAtNCB9LCB7IDcsIDEwLCAt NiB9LCB7IDcsIDExLCAtOCB9LCB7IDcsIDEyLCAtOCB9LAorCQl7IDcsIDEzLCAtOCB9LCB7IDcs IDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEwIH0sIHsgOSwgMTYsIC0xMiB9LAorCQl7IDksIDE3LCAt MTIgfSwgeyAxMSwgMTcsIC0xMiB9LCB7IDE3LCAxOSwgLTEyIH0KKwkJfQorCX0sCisJLyogMTJC UFAvMTJCUEMgKi8KKwl7IDM0MSwgMTUsIDIwNDgsIDExLCAyMCwgMTksIDE5LCB7CisJCXsgMCwg NiwgMiB9LCB7IDQsIDksIDAgfSwgeyA3LCAxMSwgMCB9LCB7IDgsIDEyLCAtMiB9LAorCQl7IDEw LCAxMywgLTQgfSwgeyAxMSwgMTQsIC02IH0sIHsgMTEsIDE1LCAtOCB9LCB7IDExLCAxNiwgLTgg fSwKKwkJeyAxMSwgMTcsIC04IH0sIHsgMTEsIDE4LCAtMTAgfSwgeyAxMywgMTksIC0xMCB9LAor CQl7IDEzLCAyMCwgLTEyIH0sIHsgMTMsIDIxLCAtMTIgfSwgeyAxNSwgMjEsIC0xMiB9LAorCQl7 IDIxLCAyMywgLTEyIH0KKwkJfQorCX0sCisJLyogMTJCUFAvMTRCUEMgKi8KKwl7IDM0MSwgMTUs IDIwNDgsIDE1LCAyNCwgMjMsIDIzLCB7CisJCXsgMCwgNiwgMiB9LCB7IDcsIDEwLCAwIH0sIHsg OSwgMTMsIDAgfSwgeyAxMSwgMTYsIC0yIH0sCisJCXsgMTQsIDE3LCAtNCB9LCB7IDE1LCAxOCwg LTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LAorCQl7IDE1LCAyMCwgLTggfSwg eyAxNSwgMjEsIC0xMCB9LCB7IDE3LCAyMSwgLTEwIH0sCisJCXsgMTcsIDIxLCAtMTIgfSwgeyAx NywgMjEsIC0xMiB9LCB7IDE5LCAyMiwgLTEyIH0sCisJCXsgMjIsIDIzLCAtMTIgfQorCQl9CisJ fSwKKwkvKiAxMkJQUC8xNkJQQyAqLworCXsgMzQxLCAxNSwgMjA0OCwgMTksIDI4LCAyNywgMjcs IHsKKwkJeyAwLCA2LCAyIH0sIHsgNiwgMTEsIDAgfSwgeyAxMSwgMTUsIDAgfSwgeyAxNCwgMTgs IC0yIH0sCisJCXsgMTgsIDIxLCAtNCB9LCB7IDE5LCAyMiwgLTYgfSwgeyAxOSwgMjMsIC04IH0s IHsgMTksIDI0LCAtOCB9LAorCQl7IDE5LCAyNCwgLTggfSwgeyAxOSwgMjUsIC0xMCB9LCB7IDIx LCAyNSwgLTEwIH0sCisJCXsgMjEsIDI1LCAtMTIgfSwgeyAyMSwgMjUsIC0xMiB9LCB7IDIzLCAy NiwgLTEyIH0sCisJCXsgMjYsIDI3LCAtMTIgfQorCQl9CisJfSwKK30sCit7CisJLyogMTVCUFAv OEJQQyAqLworCXsgMjczLCAxNSwgMjA0OCwgMywgMTIsIDExLCAxMSwgeworCQl7IDAsIDAsIDEw IH0sIHsgMCwgMSwgOCB9LCB7IDAsIDEsIDYgfSwgeyAwLCAyLCA0IH0sCisJCXsgMSwgMiwgMiB9 LCB7IDEsIDMsIDAgfSwgeyAxLCAzLCAtMiB9LCB7IDIsIDQsIC00IH0sCisJCXsgMiwgNSwgLTYg fSwgeyAzLCA1LCAtOCB9LCB7IDQsIDYsIC0xMCB9LCB7IDQsIDcsIC0xMCB9LAorCQl7IDUsIDcs IC0xMiB9LCB7IDcsIDgsIC0xMiB9LCB7IDgsIDksIC0xMiB9CisJCX0KKwl9LAorCS8qIDE1QlBQ LzEwQlBDICovCisJeyAyNzMsIDE1LCAyMDQ4LCA3LCAxNiwgMTUsIDE1LCB7CisJCXsgMCwgMiwg MTAgfSwgeyAyLCA1LCA4IH0sIHsgMywgNSwgNiB9LCB7IDQsIDYsIDQgfSwKKwkJeyA1LCA2LCAy IH0sIHsgNSwgNywgMCB9LCB7IDUsIDcsIC0yIH0sIHsgNiwgOCwgLTQgfSwKKwkJeyA2LCA5LCAt NiB9LCB7IDcsIDksIC04IH0sIHsgOCwgMTAsIC0xMCB9LCB7IDgsIDExLCAtMTAgfSwKKwkJeyA5 LCAxMSwgLTEyIH0sIHsgMTEsIDEyLCAtMTIgfSwgeyAxMiwgMTMsIC0xMiB9CisJCX0KKwl9LAor CS8qIDE1QlBQLzEyQlBDICovCisJeyAyNzMsIDE1LCAyMDQ4LCAxMSwgMjAsIDE5LCAxOSwgewor CQl7IDAsIDQsIDEwIH0sIHsgMiwgNywgOCB9LCB7IDQsIDksIDYgfSwgeyA2LCAxMSwgNCB9LAor CQl7IDksIDExLCAyIH0sIHsgOSwgMTEsIDAgfSwgeyA5LCAxMiwgLTIgfSwgeyAxMCwgMTIsIC00 IH0sCisJCXsgMTEsIDEzLCAtNiB9LCB7IDExLCAxMywgLTggfSwgeyAxMiwgMTQsIC0xMCB9LAor CQl7IDEzLCAxNSwgLTEwIH0sIHsgMTMsIDE1LCAtMTIgfSwgeyAxNSwgMTYsIC0xMiB9LAorCQl7 IDE2LCAxNywgLTEyIH0KKwkJfQorCX0sCisJLyogMTVCUFAvMTRCUEMgKi8KKwl7IDI3MywgMTUs IDIwNDgsIDE1LCAyNCwgMjMsIDIzLCB7CisJCXsgMCwgNCwgMTAgfSwgeyAzLCA4LCA4IH0sIHsg NiwgMTEsIDYgfSwgeyA5LCAxNCwgNCB9LAorCQl7IDEzLCAxNSwgMiB9LCB7IDEzLCAxNSwgMCB9 LCB7IDEzLCAxNiwgLTIgfSwgeyAxNCwgMTYsIC00IH0sCisJCXsgMTUsIDE3LCAtNiB9LCB7IDE1 LCAxNywgLTggfSwgeyAxNiwgMTgsIC0xMCB9LAorCQl7IDE3LCAxOSwgLTEwIH0sIHsgMTcsIDE5 LCAtMTIgfSwgeyAxOSwgMjAsIC0xMiB9LAorCQl7IDIwLCAyMSwgLTEyIH0KKwkJfQorCX0sCisJ LyogMTVCUFAvMTZCUEMgKi8KKwl7IDI3MywgMTUsIDIwNDgsIDE5LCAyOCwgMjcsIDI3LCB7CisJ CXsgMCwgNCwgMTAgfSwgeyA0LCA5LCA4IH0sIHsgOCwgMTMsIDYgfSwgeyAxMiwgMTcsIDQgfSwK KwkJeyAxNywgMTksIDIgfSwgeyAxNywgMjAsIDAgfSwgeyAxNywgMjAsIC0yIH0sIHsgMTgsIDIw LCAtNCB9LAorCQl7IDE5LCAyMSwgLTYgfSwgeyAxOSwgMjEsIC04IH0sIHsgMjAsIDIyLCAtMTAg fSwKKwkJeyAyMSwgMjMsIC0xMCB9LCB7IDIxLCAyMywgLTEyIH0sIHsgMjMsIDI0LCAtMTIgfSwK KwkJeyAyNCwgMjUsIC0xMiB9CisJCX0KKwl9Cit9Cit9OworCitzdGF0aWMgaW50IGdldF9yb3df aW5kZXhfZm9yX3JjX3BhcmFtcyh1MTYgY29tcHJlc3NlZF9icHApCit7CisJc3dpdGNoIChjb21w cmVzc2VkX2JwcCkgeworCWNhc2UgNjoKKwkJcmV0dXJuIFJPV19JTkRFWF82QlBQOworCWNhc2Ug ODoKKwkJcmV0dXJuIFJPV19JTkRFWF84QlBQOworCWNhc2UgMTA6CisJCXJldHVybiBST1dfSU5E RVhfMTBCUFA7CisJY2FzZSAxMjoKKwkJcmV0dXJuIFJPV19JTkRFWF8xMkJQUDsKKwljYXNlIDE1 OgorCQlyZXR1cm4gUk9XX0lOREVYXzE1QlBQOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFM OworCX0KK30KKworc3RhdGljIGludCBnZXRfY29sdW1uX2luZGV4X2Zvcl9yY19wYXJhbXModTgg Yml0c19wZXJfY29tcG9uZW50KQoreworCXN3aXRjaCAoYml0c19wZXJfY29tcG9uZW50KSB7CisJ Y2FzZSA4OgorCQlyZXR1cm4gQ09MVU1OX0lOREVYXzhCUEM7CisJY2FzZSAxMDoKKwkJcmV0dXJu IENPTFVNTl9JTkRFWF8xMEJQQzsKKwljYXNlIDEyOgorCQlyZXR1cm4gQ09MVU1OX0lOREVYXzEy QlBDOworCWNhc2UgMTQ6CisJCXJldHVybiBDT0xVTU5fSU5ERVhfMTRCUEM7CisJY2FzZSAxNjoK KwkJcmV0dXJuIENPTFVNTl9JTkRFWF8xNkJQQzsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZB TDsKKwl9Cit9CisKK2ludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwKKwkJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln KQoreworCXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmcGlwZV9jb25maWctPmRw X2RzY19jZmc7CisJdTE2IGNvbXByZXNzZWRfYnBwID0gcGlwZV9jb25maWctPmRzY19wYXJhbXMu Y29tcHJlc3NlZF9icHA7CisJdTggaSA9IDA7CisJdTggcm93X2luZGV4ID0gMDsKKwl1OCBjb2x1 bW5faW5kZXggPSAwOworCXU4IGxpbmVfYnVmX2RlcHRoID0gMDsKKworCXZkc2NfY2ZnLT5waWNf d2lkdGggPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXk7CisJ dmRzY19jZmctPnBpY19oZWlnaHQgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfdmRpc3BsYXk7CisJdmRzY19jZmctPnNsaWNlX3dpZHRoID0gRElWX1JPVU5EX1VQKHZkc2Nf Y2ZnLT5waWNfd2lkdGgsCisJCQkJCSAgICAgcGlwZV9jb25maWctPmRzY19wYXJhbXMuc2xpY2Vf Y291bnQpOworCS8qCisJICogU2xpY2UgSGVpZ2h0IG9mIDggd29ya3MgZm9yIGFsbCBjdXJyZW50 bHkgYXZhaWxhYmxlIHBhbmVscy4gU28gc3RhcnQKKwkgKiB3aXRoIHRoYXQgaWYgcGljX2hlaWdo dCBpcyBhbiBpbnRlZ3JhbCBtdWx0aXBsZSBvZiA4LgorCSAqIEV2ZW50dWFsbHkgYWRkIGxvZ2lj IHRvIHRyeSBtdWx0aXBsZSBzbGljZSBoZWlnaHRzLgorCSAqLworCWlmICh2ZHNjX2NmZy0+cGlj X2hlaWdodCAlIDggPT0gMCkKKwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDg7CisJZWxzZSBp ZiAodmRzY19jZmctPnBpY19oZWlnaHQgJSA0ID09IDApCisJCXZkc2NfY2ZnLT5zbGljZV9oZWln aHQgPSA0OworCWVsc2UKKwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDI7CisKKwkvKiBWYWx1 ZXMgZmlsbGVkIGZyb20gRFNDIFNpbmsgRFBDRCAqLworCXZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9t YWpvciA9IChpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFNDX1JFViAtIERQX0RTQ19TVVBQT1JUXSAm CisJCQkJICAgICAgIERQX0RTQ19NQUpPUl9NQVNLKSA+PiBEUF9EU0NfTUFKT1JfU0hJRlQ7CisJ dmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yID0gbWluKERTQ19TVVBQT1JURURfVkVSU0lPTl9N SU4sCisJCQkJCSAgKGludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfUkVWIC0gRFBfRFNDX1NVUFBP UlRdICYKKwkJCQkJICAgRFBfRFNDX01JTk9SX01BU0spID4+IERQX0RTQ19NSU5PUl9TSElGVCk7 CisKKwl2ZHNjX2NmZy0+Y29udmVydF9yZ2IgPSBpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFNDX0RF Q19DT0xPUl9GT1JNQVRfQ0FQIC0gRFBfRFNDX1NVUFBPUlRdICYKKwkJRFBfRFNDX1JHQjsKKwor CWxpbmVfYnVmX2RlcHRoID0gZHJtX2RwX2RzY19zaW5rX2xpbmVfYnVmX2RlcHRoKGludGVsX2Rw LT5kc2NfZHBjZCk7CisJaWYgKHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA9PSAyKQorCQl2 ZHNjX2NmZy0+bGluZV9idWZfZGVwdGggPSAobGluZV9idWZfZGVwdGggPT0gRFNDXzFfMl9NQVhf TElORUJVRl9ERVBUSF9CSVRTKSA/CisJCQlEU0NfMV8yX01BWF9MSU5FQlVGX0RFUFRIX1ZBTCA6 IGxpbmVfYnVmX2RlcHRoOworCWVsc2UKKwkJdmRzY19jZmctPmxpbmVfYnVmX2RlcHRoID0gKGxp bmVfYnVmX2RlcHRoID4gRFNDXzFfMV9NQVhfTElORUJVRl9ERVBUSF9CSVRTKSA/CisJCQlEU0Nf MV8xX01BWF9MSU5FQlVGX0RFUFRIX0JJVFMgOiBsaW5lX2J1Zl9kZXB0aDsKKworCS8qIEdlbiAx MSBkb2VzIG5vdCBzdXBwb3J0IFlDYkNyICovCisJdmRzY19jZmctPmVuYWJsZTQyMiA9IGZhbHNl OworCS8qIEdlbiAxMSBkb2VzIG5vdCBzdXBwb3J0IFZCUiAqLworCXZkc2NfY2ZnLT52YnJfZW5h YmxlID0gZmFsc2U7CisJdmRzY19jZmctPmJsb2NrX3ByZWRfZW5hYmxlID0KKwkJCWludGVsX2Rw LT5kc2NfZHBjZFtEUF9EU0NfQkxLX1BSRURJQ1RJT05fU1VQUE9SVCAtIERQX0RTQ19TVVBQT1JU XSAmCisJCURQX0RTQ19CTEtfUFJFRElDVElPTl9JU19TVVBQT1JURUQ7CisKKwkvKiBHZW4gMTEg b25seSBzdXBwb3J0cyBpbnRlZ3JhbCB2YWx1ZXMgb2YgYnBwICovCisJdmRzY19jZmctPmJpdHNf cGVyX3BpeGVsID0gY29tcHJlc3NlZF9icHAgPDwgNDsKKwl2ZHNjX2NmZy0+Yml0c19wZXJfY29t cG9uZW50ID0gcGlwZV9jb25maWctPnBpcGVfYnBwIC8gMzsKKworCWZvciAoaSA9IDA7IGkgPCBE U0NfTlVNX0JVRl9SQU5HRVMgLSAxOyBpKyspIHsKKwkJLyoKKwkJICogc2l4IDBzIGFyZSBhcHBl bmRlZCB0byB0aGUgbHNiIG9mIGVhY2ggdGhyZXNob2xkIHZhbHVlCisJCSAqIGludGVybmFsbHkg aW4gaC93LgorCQkgKiBPbmx5IDggYml0cyBhcmUgYWxsb3dlZCBmb3IgcHJvZ3JhbW1pbmcgUmNC dWZUaHJlc2hvbGQKKwkJICovCisJCXZkc2NfY2ZnLT5yY19idWZfdGhyZXNoW2ldID0gcmNfYnVm X3RocmVzaFtpXSA+PiA2OworCX0KKworCS8qCisJICogRm9yIDZicHAsIFJDIEJ1ZmZlciB0aHJl c2hvbGQgMTIgYW5kIDEzIG5lZWQgYSBkaWZmZXJlbnQgdmFsdWUKKwkgKiBhcyBwZXIgQyBNb2Rl bAorCSAqLworCWlmIChjb21wcmVzc2VkX2JwcCA9PSA2KSB7CisJCXZkc2NfY2ZnLT5yY19idWZf dGhyZXNoWzEyXSA9IDB4N0M7CisJCXZkc2NfY2ZnLT5yY19idWZfdGhyZXNoWzEzXSA9IDB4N0Q7 CisJfQorCisJcm93X2luZGV4ID0gZ2V0X3Jvd19pbmRleF9mb3JfcmNfcGFyYW1zKGNvbXByZXNz ZWRfYnBwKTsKKwljb2x1bW5faW5kZXggPQorCQlnZXRfY29sdW1uX2luZGV4X2Zvcl9yY19wYXJh bXModmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCk7CisKKwlpZiAocm93X2luZGV4IDwgMCB8 fCBjb2x1bW5faW5kZXggPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXZkc2NfY2ZnLT5maXJz dF9saW5lX2JwZ19vZmZzZXQgPQorCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhd LmZpcnN0X2xpbmVfYnBnX29mZnNldDsKKwl2ZHNjX2NmZy0+aW5pdGlhbF94bWl0X2RlbGF5ID0K KwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFsX3htaXRfZGVsYXk7 CisJdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0ID0KKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29s dW1uX2luZGV4XS5pbml0aWFsX29mZnNldDsKKwl2ZHNjX2NmZy0+ZmxhdG5lc3NfbWluX3FwID0K KwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5mbGF0bmVzc19taW5fcXA7CisJ dmRzY19jZmctPmZsYXRuZXNzX21heF9xcCA9CisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVt bl9pbmRleF0uZmxhdG5lc3NfbWF4X3FwOworCXZkc2NfY2ZnLT5yY19xdWFudF9pbmNyX2xpbWl0 MCA9CisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcXVhbnRfaW5jcl9s aW1pdDA7CisJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQxID0KKwkJcmNfcGFyYW1zW3Jv d19pbmRleF1bY29sdW1uX2luZGV4XS5yY19xdWFudF9pbmNyX2xpbWl0MTsKKworCWZvciAoaSA9 IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykKKwkJdmRzY19jZmctPnJjX3JhbmdlX3Bh cmFtc1tpXSA9CisJCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3Jhbmdl X3BhcmFtc1tpXTsKKworCS8qCisJICogQml0c1BlckNvbXBvbmVudCB2YWx1ZSBkZXRlcm1pbmVz IG11eF93b3JkX3NpemU6CisJICogV2hlbiBCaXRzUGVyQ29tcG9uZW50IGlzIDEyYnBjLCBtdXhX b3JkU2l6ZSB3aWxsIGJlIGVxdWFsIHRvIDY0IGJpdHMKKwkgKiBXaGVuIEJpdHNQZXJDb21wb25l bnQgaXMgOCBvciAxMGJwYywgbXV4V29yZFNpemUgd2lsbCBiZSBlcXVhbCB0bworCSAqIDQ4IGJp dHMKKwkgKi8KKwlpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSA4IHx8CisJICAg IHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgPT0gMTApCisJCXZkc2NfY2ZnLT5tdXhfd29y ZF9zaXplID0gRFNDX01VWF9XT1JEX1NJWkVfOF8xMF9CUEM7CisJZWxzZSBpZiAodmRzY19jZmct PmJpdHNfcGVyX2NvbXBvbmVudCA9PSAxMikKKwkJdmRzY19jZmctPm11eF93b3JkX3NpemUgPSBE U0NfTVVYX1dPUkRfU0laRV8xMl9CUEM7CisKKwkvKiBJbml0aWFsU2NhbGVWYWx1ZSBpcyBhIDYg Yml0IHZhbHVlIHdpdGggMyBmcmFjdGlvbmFsIGJpdHMgKFUzLjMpICovCisJdmRzY19jZmctPmlu aXRpYWxfc2NhbGVfdmFsdWUgPSAodmRzY19jZmctPnJjX21vZGVsX3NpemUgPDwgMykgLworCQko dmRzY19jZmctPnJjX21vZGVsX3NpemUgLSB2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQpOworCisJ cmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggYi9p bmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgKaW5kZXggMGNmMjQwNy4uZjE3ODkzMyAxMDA2NDQK LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9k cF9oZWxwZXIuaApAQCAtMTg2LDYgKzE4Niw5IEBACiAKICNkZWZpbmUgRFBfR1VJRAkJCQkgICAg MHgwMzAgICAvKiAxLjIgKi8KIAorI2RlZmluZSBEUF9EU0NfUkNfUElYRUxTX1BFUl9HUk9VUAkJ MworI2RlZmluZSBEUF9EU0NfU0NBTEVfREVDUkVNRU5UX0lOVEVSVkFMX01BWAk0MDk1CisKICNk ZWZpbmUgRFBfRFNDX1NVUFBPUlQgICAgICAgICAgICAgICAgICAgICAgMHgwNjAgICAvKiBEUCAx LjQgKi8KICMgZGVmaW5lIERQX0RTQ19ERUNPTVBSRVNTSU9OX0lTX1NVUFBPUlRFRCAgKDEgPDwg MCkKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RzYy5oIGIvaW5jbHVkZS9kcm0vZHJt X2RzYy5oCmluZGV4IDRjZmNkMDMuLjc5NmM3OTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9kc2MuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHNjLmgKQEAgLTY3LDcgKzY3LDcgQEAgc3Ry dWN0IGRzY19yY19yYW5nZV9wYXJhbWV0ZXJzIHsKIAkvKiBNYXggUXVhbnRpemF0aW9uIFBhcmFt ZXRlcnMgYWxsb3dlZCBmb3IgdGhpcyByYW5nZSAqLwogCXU4IHJhbmdlX21heF9xcDsKIAkvKiBC aXRzL2dyb3VwIG9mZnNldCB0byBhcHBseSB0byB0YXJnZXQgZm9yIHRoaXMgZ3JvdXAgKi8KLQl1 OCByYW5nZV9icGdfb2Zmc2V0OworCXM4IHJhbmdlX2JwZ19vZmZzZXQ7CiB9OwogCiBzdHJ1Y3Qg ZHJtX2RzY19jb25maWcgewotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=