From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id D76A76E1B9 for ; Thu, 18 Apr 2019 19:40:58 +0000 (UTC) From: Ville Syrjala Date: Thu, 18 Apr 2019 22:40:43 +0300 Message-Id: <20190418194043.5184-5-ville.syrjala@linux.intel.com> In-Reply-To: <20190418194043.5184-1-ville.syrjala@linux.intel.com> References: <20190418194043.5184-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 5/5] tests/kms_big_fb: Make sure huge fbs work correctly List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCB2YXJpb3VzIHRlc3RzIHRvIGV4Y2VyY2lzZSBodWdlIGZyYW1lYnVmZmVycy4gRmlyc3Qgc29t ZSBiYXNpYwpzYW5pdHkgY2hlY2tzIHRoYXQgdGhlIGtlcm5lbCBhY2NlcHRzL3JlamVjdHMgZ29v ZC9iYWQgYWRkZmIyIGlvY3RscywKYW5kIGZpbmFsbHkgYWN0dWFsIHNjYW5vdXQgdGVzdHMgdG8g bWFrZSBzdXJlIHdlIHNjYW4gb3V0IHRoZSBjb3JyZWN0CnRoaW5nIHdoZW4gcGFubmluZyBhcm91 bmQgaW5zaWRlIGxhcmdlIGZyYW1lYnVmZmVycy4KClRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpOTE1 IHNwZWNpZmljIGZvciBub3cgc2luY2UgSSBjaG9zZSB0byB1c2UKcmVuZGVyY29weSB3aGVuIGdl bmVyYXRpbmcgdGhlIGZyYW1lYnVmZmVyIGNvbnRlbnRzLiBVc2luZyB0aGUgbm9ybWFsCmNhaXJv IHN0dWZmIHdhcyBqdXN0IHRvbyBzbG93IHdoZW4gZGVhbGluZyB3aXRoIDFHaUIgZnJhbWVidWZm ZXJzLgpJdCBzaG91bGRuJ3QgYmUgdG9vIGhhcmQgdG8gcGx1ZyBpbiBzb21lIG90aGVyIG1lY2hh bmlzbXMgaWYgc29tZW9uZQplbHNlIHdhbnRzIHRvIHJldXNlIHRoaXMgdGVzdC4KClNpZ25lZC1v ZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0t LQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCiB0ZXN0cy9rbXNfYmlnX2ZiLmMgICAg IHwgNTQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9t ZXNvbi5idWlsZCAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNTUwIGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfYmlnX2ZiLmMKCmRpZmYgLS1naXQgYS90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCA3Zjky MWY2YzU5ODguLjJkNWM5MjllMzJmYyAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNl cworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0yNyw2ICsyNyw3IEBAIFRFU1RTX3By b2dzID0gXAogCWttc19hdG9taWNfaW50ZXJydXB0aWJsZSBcCiAJa21zX2F0b21pY190cmFuc2l0 aW9uIFwKIAlrbXNfYXZhaWxhYmxlX21vZGVzX2NyYyBcCisJa21zX2JpZ19mYiBcCiAJa21zX2J1 c3kgXAogCWttc19jY3MgXAogCWttc19jb2xvciBcCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfYmln X2ZiLmMgYi90ZXN0cy9rbXNfYmlnX2ZiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5lYWYyYTk1MWQ0NGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9rbXNfYmln X2ZiLmMKQEAgLTAsMCArMSw1NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBD b3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4K KyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxz dGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworSUdU X1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgYmlnIGZyYW1lYnVmZmVycyIpOworCit0eXBlZGVmIHN0 cnVjdCB7CisJaW50IGRybV9mZDsKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CisJZW51bSBwaXBl IHBpcGU7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7CisJaWd0X3BsYW5lX3QgKnBsYW5lOworCWln dF9waXBlX2NyY190ICpwaXBlX2NyYzsKKwlzdHJ1Y3QgaWd0X2ZiIHNtYWxsX2ZiLCBiaWdfZmI7 CisJdWludDMyX3QgZm9ybWF0OworCXVpbnQ2NF90IG1vZGlmaWVyOworCWludCB3aWR0aCwgaGVp Z2h0OworCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOworCXN0cnVjdCB7CisJCWludCBtYXhfd2lk dGgsIG1heF9oZWlnaHQ7CisJfSByYW0sIGtlcm5lbDsKKwlpZ3RfcmVuZGVyX2NvcHlmdW5jX3Qg cmVuZGVyX2NvcHk7CisJZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOworCXN0cnVjdCBpbnRlbF9i YXRjaGJ1ZmZlciAqYmF0Y2g7Cit9IGRhdGFfdDsKKworc3RhdGljIHZvaWQgaW5pdF9idWYoZGF0 YV90ICpkYXRhLAorCQkgICAgIHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCSAgICAgY29uc3Qgc3Ry dWN0IGlndF9mYiAqZmIsCisJCSAgICAgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlpZ3RfYXNzZXJ0 X2VxKGZiLT5vZmZzZXRzWzBdLCAwKTsKKworCWJ1Zi0+Ym8gPSBnZW1faGFuZGxlX3RvX2xpYmRy bV9ibyhkYXRhLT5idWZtZ3IsIGRhdGEtPmRybV9mZCwKKwkJCQkJICBuYW1lLCBmYi0+Z2VtX2hh bmRsZSk7CisJYnVmLT50aWxpbmcgPSBpZ3RfZmJfbW9kX3RvX3RpbGluZyhmYi0+bW9kaWZpZXIp OworCWJ1Zi0+c3RyaWRlID0gZmItPnN0cmlkZXNbMF07CisJYnVmLT5icHAgPSBmYi0+cGxhbmVf YnBwWzBdOworCWJ1Zi0+c2l6ZSA9IGZiLT5zaXplOworfQorCitzdGF0aWMgdm9pZCBmaW5pX2J1 ZihzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQoreworCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShidWYt PmJvKTsKK30KKworc3RhdGljIHZvaWQgY29weV9wYXR0ZXJuKGRhdGFfdCAqZGF0YSwKKwkJCSBz dHJ1Y3QgaWd0X2ZiICpkc3RfZmIsIGludCBkeCwgaW50IGR5LAorCQkJIHN0cnVjdCBpZ3RfZmIg KnNyY19mYiwgaW50IHN4LCBpbnQgc3ksCisJCQkgaW50IHcsIGludCBoKQoreworCXN0cnVjdCBp Z3RfYnVmIHNyYyA9IHt9LCBkc3QgPSB7fTsKKworCWluaXRfYnVmKGRhdGEsICZzcmMsIHNyY19m YiwgImJpZyBmYiByZW5kZXJjb3B5IHNyYyIpOworCWluaXRfYnVmKGRhdGEsICZkc3QsIGRzdF9m YiwgImJpZyBmYiByZW5kZXJjb3B5IGRzdCIpOworCisJZ2VtX3NldF9kb21haW4oZGF0YS0+ZHJt X2ZkLCBkc3RfZmItPmdlbV9oYW5kbGUsCisJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJ OTE1X0dFTV9ET01BSU5fR1RUKTsKKwlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNyY19m Yi0+Z2VtX2hhbmRsZSwKKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOworCisJZGF0 YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsICZzcmMsIHN4LCBzeSwgdywgaCwgJmRz dCwgZHgsIGR5KTsKKworCWZpbmlfYnVmKCZkc3QpOworCWZpbmlfYnVmKCZzcmMpOworfQorCitz dGF0aWMgdm9pZCBnZW5lcmF0ZV9wYXR0ZXJuKGRhdGFfdCAqZGF0YSwKKwkJCSAgICAgc3RydWN0 IGlndF9mYiAqZmIsCisJCQkgICAgIGludCB3LCBpbnQgaCkKK3sKKwlzdHJ1Y3QgaWd0X2ZiIHBh dF9mYjsKKworCWlndF9jcmVhdGVfcGF0dGVybl9mYihkYXRhLT5kcm1fZmQsIHcsIGgsCisJCQkg ICAgICBkYXRhLT5mb3JtYXQsIGRhdGEtPm1vZGlmaWVyLAorCQkJICAgICAgJnBhdF9mYik7CisK Kwlmb3IgKGludCB5ID0gMDsgeSA8IGZiLT5oZWlnaHQ7IHkgKz0gaCkgeworCQlmb3IgKGludCB4 ID0gMDsgeCA8IGZiLT53aWR0aDsgeCArPSB3KSB7CisJCQljb3B5X3BhdHRlcm4oZGF0YSwgZmIs IHgsIHksCisJCQkJICAgICAmcGF0X2ZiLCAwLCAwLAorCQkJCSAgICAgcGF0X2ZiLndpZHRoLCBw YXRfZmIuaGVpZ2h0KTsKKwkJCXcrKzsKKwkJCWgrKzsKKwkJfQorCX0KKworCWlndF9yZW1vdmVf ZmIoZGF0YS0+ZHJtX2ZkLCAmcGF0X2ZiKTsKK30KKworc3RhdGljIGJvb2wgdGVzdF9wbGFuZShk YXRhX3QgKmRhdGEpCit7CisJaWd0X3BsYW5lX3QgKnBsYW5lID0gZGF0YS0+cGxhbmU7CisJc3Ry dWN0IGlndF9mYiAqc21hbGxfZmIgPSAmZGF0YS0+c21hbGxfZmI7CisJc3RydWN0IGlndF9mYiAq YmlnX2ZiID0gJmRhdGEtPmJpZ19mYjsKKwlpbnQgdyA9IGJpZ19mYi0+d2lkdGggLSBzbWFsbF9m Yi0+d2lkdGg7CisJaW50IGggPSBiaWdfZmItPmhlaWdodCAtIHNtYWxsX2ZiLT5oZWlnaHQ7CisJ c3RydWN0IHsKKwkJaW50IHgsIHk7CisJfSBjb29yZHNbXSA9IHsKKwkJLyogYnVuY2ggb2YgY29v cmRpbmF0ZXMgcHVsbGVkIG91dCBvZiB0aGluIGFpciAqLworCQl7IDAsIDAsIH0sCisJCXsgdyAq IDQgLyA3LCBoIC8gNSwgfSwKKwkJeyB3ICogMiAvIDUsIGggLyAzLCB9LAorCQl7IHcgLyAyLCBo IC8gMiwgfSwKKwkJeyB3IC8gMywgaCAqIDMgLyA0LCB9LAorCQl7IHcsIGgsIH0sCisJfTsKKwor CWlmICghaWd0X3BsYW5lX2hhc19mb3JtYXRfbW9kKHBsYW5lLCBkYXRhLT5mb3JtYXQsIGRhdGEt Pm1vZGlmaWVyKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWd0X3BsYW5lX3NldF9yb3RhdGlvbihw bGFuZSwgZGF0YS0+cm90YXRpb24pOworCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIDAs IDApOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvb3Jkcyk7IGkrKykgewor CQlpZ3RfY3JjX3Qgc21hbGxfY3JjLCBiaWdfY3JjOworCisJCS8qCisJCSAqIE1ha2UgYSAxOjEg Y29weSBvZiB0aGUgZGVzaXJlZCBwYXJ0IG9mIHRoZSBiaWcgZmIKKwkJICogcmF0aGVyIHRoYW4g dHJ5IHRvIHJlbmRlciB0aGUgc2FtZSBwYXR0ZXJuICh0cmFuc2xhdGVkCisJCSAqIGFjY29yZGlu bHkpIGFnYWluIHZpYSBjYWlyby4gU29tZXRoaW5nIGluIGNhaXJvJ3MKKwkJICogcmVuZGVyaW5n IHBpcGVsaW5lIGludHJvZHVjZXMgc2xpZ2h0IGRpZmZlcmVuY2VzIGludG8KKwkJICogdGhlIHJl c3VsdCBpZiB3ZSB0cnkgdGhhdCwgYW5kIHNvIHRoZSBjcmMgd2lsbCBub3QgbWF0Y2guCisJCSAq LworCQljb3B5X3BhdHRlcm4oZGF0YSwgc21hbGxfZmIsIDAsIDAsCisJCQkgICAgIGJpZ19mYiwg Y29vcmRzW2ldLngsIGNvb3Jkc1tpXS55LAorCQkJICAgICBzbWFsbF9mYi0+d2lkdGgsIHNtYWxs X2ZiLT5oZWlnaHQpOworCisJCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIHNtYWxsX2ZiKTsKKwkJ aWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCBkYXRhLT53aWR0aCwgZGF0YS0+aGVpZ2h0KTsKKwor CQkvKgorCQkgKiBUcnkgdG8gY2hlY2sgdGhhdCB0aGUgcm90YXRpb24rZm9ybWF0K21vZGlmaWVy CisJCSAqIGNvbWJvIGlzIHN1cHBvcnRlZC4KKwkJICovCisJCWlmIChpID09IDAgJiYgZGF0YS0+ ZGlzcGxheS5pc19hdG9taWMpCisJCQlpZ3RfcmVxdWlyZShpZ3RfZGlzcGxheV90cnlfY29tbWl0 X2F0b21pYygmZGF0YS0+ZGlzcGxheSwKKwkJCQkJCQkJICBEUk1fTU9ERV9BVE9NSUNfVEVTVF9P TkxZLAorCQkJCQkJCQkgIE5VTEwpID09IDApOworCisJCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRh dGEtPmRpc3BsYXksIGRhdGEtPmRpc3BsYXkuaXNfYXRvbWljID8KKwkJCQkgICAgQ09NTUlUX0FU T01JQyA6IENPTU1JVF9VTklWRVJTQUwpOworCisKKwkJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3Jj KGRhdGEtPnBpcGVfY3JjLCAmc21hbGxfY3JjKTsKKworCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5l LCBiaWdfZmIpOworCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKGJpZ19mYiwgcGxhbmUsIGNvb3Jkc1tp XS54LCBjb29yZHNbaV0ueSk7CisJCWlndF9mYl9zZXRfc2l6ZShiaWdfZmIsIHBsYW5lLCBzbWFs bF9mYi0+d2lkdGgsIHNtYWxsX2ZiLT5oZWlnaHQpOworCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxh bmUsIGRhdGEtPndpZHRoLCBkYXRhLT5oZWlnaHQpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKCZk YXRhLT5kaXNwbGF5LCBkYXRhLT5kaXNwbGF5LmlzX2F0b21pYyA/CisJCQkJICAgIENPTU1JVF9B VE9NSUMgOiBDT01NSVRfVU5JVkVSU0FMKTsKKworCQlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMo ZGF0YS0+cGlwZV9jcmMsICZiaWdfY3JjKTsKKworCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBO VUxMKTsKKworCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmYmlnX2NyYywgJnNtYWxsX2NyYyk7CisK Kwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgdGVzdF9waXBlKGRhdGFfdCAq ZGF0YSkKK3sKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJaWd0X3BsYW5lX3QgKnByaW1hcnk7 CisJaW50IHdpZHRoLCBoZWlnaHQ7CisJYm9vbCByZXQgPSBmYWxzZTsKKworCW1vZGUgPSBpZ3Rf b3V0cHV0X2dldF9tb2RlKGRhdGEtPm91dHB1dCk7CisKKwlkYXRhLT53aWR0aCA9IG1vZGUtPmhk aXNwbGF5OworCWRhdGEtPmhlaWdodCA9IG1vZGUtPnZkaXNwbGF5OworCisJd2lkdGggPSBtb2Rl LT5oZGlzcGxheTsKKwloZWlnaHQgPSBtb2RlLT52ZGlzcGxheTsKKwlpZiAoZGF0YS0+cm90YXRp b24gPT0gSUdUX1JPVEFUSU9OXzkwIHx8CisJICAgIGRhdGEtPnJvdGF0aW9uID09IElHVF9ST1RB VElPTl8yNzApCisJCWlndF9zd2FwKHdpZHRoLCBoZWlnaHQpOworCisJaWd0X2NyZWF0ZV9jb2xv cl9mYihkYXRhLT5kcm1fZmQsIHdpZHRoLCBoZWlnaHQsCisJCQkgICAgZGF0YS0+Zm9ybWF0LCBk YXRhLT5tb2RpZmllciwKKwkJCSAgICAwLCAxLCAwLCAmZGF0YS0+c21hbGxfZmIpOworCisJaWd0 X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIGRhdGEtPnBpcGUpOworCisJcHJpbWFyeSA9 IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+b3V0cHV0LCBEUk1fUExBTkVfVFlQRV9Q UklNQVJZKTsKKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOworCisJaWYgKCFkYXRh LT5kaXNwbGF5LmlzX2F0b21pYykgeworCQlzdHJ1Y3QgaWd0X2ZiIGZiOworCisJCWlndF9jcmVh dGVfZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCisJCQkg ICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBEUk1fRk9STUFUX01PRF9MSU5FQVIsCisJCQkgICAg ICAmZmIpOworCisJCS8qIGxlZ2FjeSBzZXRjcnRjIG5lZWRzIGFuIGZiICovCisJCWlndF9wbGFu ZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPnNtYWxsX2ZiKTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0 MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0xFR0FDWSk7CisKKwkJaWd0X3BsYW5lX3NldF9mYihw cmltYXJ5LCBOVUxMKTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09N TUlUX1VOSVZFUlNBTCk7CisKKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZmYik7CisJ fQorCisJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgZGF0YS0+ZGlzcGxheS5p c19hdG9taWMgPworCQkJICAgIENPTU1JVF9BVE9NSUMgOiBDT01NSVRfVU5JVkVSU0FMKTsKKwor CWRhdGEtPnBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIGRhdGEtPnBp cGUsCisJCQkJCSAgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOworCisJZm9yX2VhY2hfcGxh bmVfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwgZGF0YS0+cGlwZSwgZGF0YS0+cGxhbmUpIHsKKwkJ cmV0ID0gdGVzdF9wbGFuZShkYXRhKTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOworCX0KKworCWln dF9waXBlX2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsKKworCWlndF9vdXRwdXRfc2V0X3BpcGUo ZGF0YS0+b3V0cHV0LCBQSVBFX0FOWSk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlz cGxheSwgZGF0YS0+ZGlzcGxheS5pc19hdG9taWMgPworCQkJICAgIENPTU1JVF9BVE9NSUMgOiBD T01NSVRfVU5JVkVSU0FMKTsKKworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ c21hbGxfZmIpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgdGVzdF9zY2Fub3V0 KGRhdGFfdCAqZGF0YSkKK3sKKwlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KCZkYXRh LT5kaXNwbGF5LCBkYXRhLT5waXBlLCBkYXRhLT5vdXRwdXQpIHsKKwkJaWYgKHRlc3RfcGlwZShk YXRhKSkKKwkJCXJldHVybjsKKwl9CisKKwlpZ3Rfc2tpcCgibm8gdmFsaWQgY3J0Yy9jb25uZWN0 b3IgY29tYmluYXRpb25zIGZvdW5kXG4iKTsKK30KKworc3RhdGljIHZvaWQgcHJlcF9mYihkYXRh X3QgKmRhdGEpCit7CisJaWYgKGRhdGEtPmJpZ19mYi5mYl9pZCkKKwkJcmV0dXJuOworCisJaWd0 X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsCisJCSAgICAgIGRhdGEtPnJhbS5tYXhfd2lkdGgsCisJ CSAgICAgIGRhdGEtPnJhbS5tYXhfaGVpZ2h0LAorCQkgICAgICBkYXRhLT5mb3JtYXQsIGRhdGEt Pm1vZGlmaWVyLAorCQkgICAgICAmZGF0YS0+YmlnX2ZiKTsKKworCWdlbmVyYXRlX3BhdHRlcm4o ZGF0YSwgJmRhdGEtPmJpZ19mYiwgNjQwLCA0ODApOworfQorCitzdGF0aWMgdm9pZCBjbGVhbnVw X2ZiKGRhdGFfdCAqZGF0YSkKK3sKKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEt PmJpZ19mYik7CisJZGF0YS0+YmlnX2ZiLmZiX2lkID0gMDsKK30KKworc3RhdGljIHZvaWQKK3Rl c3Rfc2l6ZV9vdmVyZmxvdyhkYXRhX3QgKmRhdGEpCit7CisJdWludDMyX3QgZmJfaWQ7CisJdWlu dDMyX3QgYm87CisJdWludDMyX3Qgb2Zmc2V0c1s0XSA9IHt9OworCXVpbnQzMl90IHN0cmlkZXNb NF0gPSB7IDI1NioxMDI0LCB9OworCWludCByZXQ7CisKKwkvKgorCSAqIFRyeSB0byBoaXQgYSBz cGVjaWZpYyBpbnRlZ2VyIG92ZXJmbG93IGluIGk5MTUgZmIgc2l6ZQorCSAqIGNhbGN1bGF0aW9u cy4gMjU2ayAqIDE2ayA9PSAxPDwzMiB3aGljaCBpcyBjaGVja2VkCisJICogYWdhaW5zdCB0aGUg Ym8gc2l6ZS4gVGhlIGNoZWNrIHNob3VsZCBmYWlsIG9uIGFjY291bnQKKwkgKiBvZiB0aGUgYm8g YmVpbmcgc21hbGxlciwgYnV0IGR1ZSB0byB0aGUgb3ZlcmZsb3cgdGhlCisJICogY29tcHV0ZWQg ZmIgc2l6ZSBpcyAwIGFuZCB0aHVzIHRoZSBjaGVjayBuZXZlciB0cmlwcy4KKwkgKi8KKwlpZ3Rf cmVxdWlyZShkYXRhLT5rZXJuZWwubWF4X3dpZHRoID49IDE2MzgzICYmCisJCSAgICBkYXRhLT5r ZXJuZWwubWF4X2hlaWdodCA+PSAxNjM4Myk7CisKKwlibyA9IGdlbV9jcmVhdGUoZGF0YS0+ZHJt X2ZkLCAoMVVMTCA8PCAzMikgLSA0MDk2KTsKKwlpZ3RfcmVxdWlyZShibyk7CisKKwlyZXQgPSBf X2ttc19hZGRmYihkYXRhLT5kcm1fZmQsIGJvLAorCQkJICAxNjM4MywgMTYzODMsCisJCQkgIERS TV9GT1JNQVRfWFJHQjg4ODgsCisJCQkgIGRhdGEtPm1vZGlmaWVyLAorCQkJICBzdHJpZGVzLCBv ZmZzZXRzLCAxLAorCQkJICBEUk1fTU9ERV9GQl9NT0RJRklFUlMsICZmYl9pZCk7CisKKwlpZ3Rf YXNzZXJ0X25lcShyZXQsIDApOworCisJZ2VtX2Nsb3NlKGRhdGEtPmRybV9mZCwgYm8pOworfQor CitzdGF0aWMgdm9pZAordGVzdF9zaXplX29mZnNldF9vdmVyZmxvdyhkYXRhX3QgKmRhdGEpCit7 CisJdWludDMyX3QgZmJfaWQ7CisJdWludDMyX3QgYm87CisJdWludDMyX3Qgb2Zmc2V0c1s0XSA9 IHt9OworCXVpbnQzMl90IHN0cmlkZXNbNF0gPSB7IDgxOTIsIH07CisJaW50IHJldDsKKworCS8q CisJICogVHJ5IHRvIGEgc3BlY2lmaWMgaW50ZWdlciBvdmVyZmxvdyBpbiBpOTE1IGZiIHNpemUK KwkgKiBjYWxjdWxhdGlvbnMuIFRoaXMgdGltZSBpdCdzIG9mZnNldHNbMV0gKyB0aGUgdGlsZQor CSAqIGFsaWduZWQgY2hyb21hIHBsYW5lIHNpemUgdGhhdCBvdmVyZmxvd3MgYW5kCisJICogaW5j b3JyZWN0bHkgcGFzc2VzIHRoZSBibyBzaXplIGNoZWNrLgorCSAqLworCWlndF9yZXF1aXJlKGln dF9kaXNwbGF5X2hhc19mb3JtYXRfbW9kKCZkYXRhLT5kaXNwbGF5LAorCQkJCQkgICAgICAgRFJN X0ZPUk1BVF9OVjEyLAorCQkJCQkgICAgICAgZGF0YS0+bW9kaWZpZXIpKTsKKworCWJvID0gZ2Vt X2NyZWF0ZShkYXRhLT5kcm1fZmQsICgxVUxMIDw8IDMyKSAtIDQwOTYpOworCWlndF9yZXF1aXJl KGJvKTsKKworCW9mZnNldHNbMF0gPSAwOworCW9mZnNldHNbMV0gPSAoMVVMTCA8PCAzMikgLSA4 MTkyICogNDA5NjsKKworCXJldCA9IF9fa21zX2FkZGZiKGRhdGEtPmRybV9mZCwgYm8sCisJCQkg IDgxOTIsIDgxODgsCisJCQkgIERSTV9GT1JNQVRfTlYxMiwKKwkJCSAgZGF0YS0+bW9kaWZpZXIs CisJCQkgIHN0cmlkZXMsIG9mZnNldHMsIDEsCisJCQkgIERSTV9NT0RFX0ZCX01PRElGSUVSUywg JmZiX2lkKTsKKwlpZ3RfYXNzZXJ0X25lcShyZXQsIDApOworCisJZ2VtX2Nsb3NlKGRhdGEtPmRy bV9mZCwgYm8pOworfQorCitzdGF0aWMgaW50IHJtZmIoaW50IGZkLCB1aW50MzJfdCBpZCkKK3sK KwlpbnQgZXJyOworCisJZXJyID0gMDsKKwlpZiAoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfTU9E RV9STUZCLCAmaWQpKQorCQllcnIgPSAtZXJybm87CisKKwllcnJubyA9IDA7CisJcmV0dXJuIGVy cjsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfYWRkZmIoZGF0YV90ICpkYXRhKQoreworCXVpbnQ2 NF90IHNpemU7CisJdWludDMyX3QgZmJfaWQ7CisJdWludDMyX3QgYm87CisJdWludDMyX3Qgb2Zm c2V0c1s0XSA9IHt9OworCXVpbnQzMl90IHN0cmlkZXNbNF0gPSB7fTsKKwlpbnQgcmV0OworCisJ aWd0X2NhbGNfZmJfc2l6ZShkYXRhLT5kcm1fZmQsCisJCQkgZGF0YS0+a2VybmVsLm1heF93aWR0 aCwKKwkJCSBkYXRhLT5rZXJuZWwubWF4X2hlaWdodCwKKwkJCSBEUk1fRk9STUFUX1hSR0I4ODg4 LAorCQkJIGRhdGEtPm1vZGlmaWVyLAorCQkJICZzaXplLCAmc3RyaWRlc1swXSk7CisKKwlibyA9 IGdlbV9jcmVhdGUoZGF0YS0+ZHJtX2ZkLCBzaXplKTsKKwlpZ3RfcmVxdWlyZShibyk7CisKKwly ZXQgPSBfX2ttc19hZGRmYihkYXRhLT5kcm1fZmQsIGJvLAorCQkJICBkYXRhLT5rZXJuZWwubWF4 X3dpZHRoLAorCQkJICBkYXRhLT5rZXJuZWwubWF4X2hlaWdodCwKKwkJCSAgRFJNX0ZPUk1BVF9Y UkdCODg4OCwKKwkJCSAgZGF0YS0+bW9kaWZpZXIsCisJCQkgIHN0cmlkZXMsIG9mZnNldHMsIDEs CisJCQkgIERSTV9NT0RFX0ZCX01PRElGSUVSUywgJmZiX2lkKTsKKwlpZ3RfYXNzZXJ0X2VxKHJl dCwgMCk7CisKKwlybWZiKGRhdGEtPmRybV9mZCwgZmJfaWQpOworCWdlbV9jbG9zZShkYXRhLT5k cm1fZmQsIGJvKTsKK30KKworc3RhdGljIGRhdGFfdCBkYXRhOworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHsKKwl1aW50NjRfdCBtb2RpZmllcjsKKwljb25zdCBjaGFyICpuYW1lOworfSBtb2RpZmll cnNbXSA9IHsKKwl7IERSTV9GT1JNQVRfTU9EX0xJTkVBUiwgImxpbmVhciIsIH0sCisJeyBJOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRCwgIngtdGlsZWQiLCB9LAorCXsgSTkxNV9GT1JNQVRfTU9EX1lf VElMRUQsICJ5LXRpbGVkIiwgfSwKKwl7IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwgInlmLXRp bGVkIiwgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCXVpbnQzMl90IGZvcm1hdDsK Kwljb25zdCBjaGFyICpuYW1lOworfSBmb3JtYXRzW10gPSB7CisJLyogRklYTUUgaWd0X2ZiIGRv ZXNuJ3Qgc3VwcG9ydCBDOCBjdXJyZW50bHkgKi8KKwl7IERSTV9GT1JNQVRfQzgsICI4YnBwIiwg fSwKKwl7IERSTV9GT1JNQVRfUkdCNTY1LCAiMTZicHAiLCB9LAorCXsgRFJNX0ZPUk1BVF9YUkdC ODg4OCwgIjMyYnBwIiwgfSwKKwl7IERSTV9GT1JNQVRfWEJHUjE2MTYxNjE2RiwgIjY0YnBwIiwg fSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCWlndF9yb3RhdGlvbl90IHJvdGF0aW9u OworCXVpbnQxNl90IGFuZ2xlOworfSByb3RhdGlvbnNbXSA9IHsKKwl7IElHVF9ST1RBVElPTl8w LCAwLCB9LAorCXsgSUdUX1JPVEFUSU9OXzkwLCA5MCwgfSwKKwl7IElHVF9ST1RBVElPTl8xODAs IDE4MCwgfSwKKwl7IElHVF9ST1RBVElPTl8yNzAsIDI3MCwgfSwKK307CisKK2lndF9tYWluCit7 CisJaWd0X2ZpeHR1cmUgeworCQlkcm1Nb2RlUmVzUHRyIHJlczsKKwkJdWludDMyX3QgZGV2aWQ7 CisJCXVpbnQ2NF90IHJhbTsKKwkJaW50IGkgPSAwOworCisJCWlndF9za2lwX29uX3NpbXVsYXRp b24oKTsKKworCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lO VEVMKTsKKworCQlpZ3RfcmVxdWlyZShpc19pOTE1X2RldmljZShkYXRhLmRybV9mZCkpOworCisJ CWRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLmRybV9mZCk7CisKKwkJa21zdGVzdF9z ZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOworCisJCWlndF9yZXF1aXJlX3BpcGVfY3JjKGRhdGEuZHJt X2ZkKTsKKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7 CisKKwkJcmVzID0gZHJtTW9kZUdldFJlc291cmNlcyhkYXRhLmRybV9mZCk7CisJCWlndF9hc3Nl cnQocmVzKTsKKworCQlkYXRhLmtlcm5lbC5tYXhfd2lkdGggPSByZXMtPm1heF93aWR0aDsKKwkJ ZGF0YS5rZXJuZWwubWF4X2hlaWdodCA9IHJlcy0+bWF4X2hlaWdodDsKKworCQlkcm1Nb2RlRnJl ZVJlc291cmNlcyhyZXMpOworCisJCWlndF9pbmZvKCJNYXggZHJpdmVyIGZyYW1lYnVmZmVyIHNp emUgJWR4JWRcbiIsCisJCQkgZGF0YS5rZXJuZWwubWF4X3dpZHRoLCBkYXRhLmtlcm5lbC5tYXhf aGVpZ2h0KTsKKworCQkvKiBMZXQncyBub3QgdHJ5IHRvIHVzZSBtb3JlIHRoYW4gaGFsZiBvZiB0 aGUgdG90YWwgUkFNICovCisJCXJhbSA9IGludGVsX2dldF90b3RhbF9yYW1fbWIoKTsKKworCQlk YXRhLnJhbS5tYXhfd2lkdGggPSBkYXRhLmtlcm5lbC5tYXhfd2lkdGg7CisJCWRhdGEucmFtLm1h eF9oZWlnaHQgPSBkYXRhLmtlcm5lbC5tYXhfaGVpZ2h0OworCQl3aGlsZSAoZGF0YS5yYW0ubWF4 X2hlaWdodCAqIGRhdGEucmFtLm1heF9oZWlnaHQgKiA0IC8gKDEwMjQqMTAyNCkgPiByYW0pIHsK KwkJCWlmIChpKysgJiAxKQorCQkJCWRhdGEucmFtLm1heF93aWR0aCA+Pj0gMTsKKwkJCWVsc2UK KwkJCQlkYXRhLnJhbS5tYXhfaGVpZ2h0ID4+PSAxOworCQl9CisJCWlndF9pbmZvKCJNYXggdXNh YmxlIGZyYW1lYnVmZmVyIHNpemUgJWR4JWQgYmFzZWQgb24gYW1vdW50IG9mIFJBTSAoJSJQUkl1 NjQiIE1pQilcbiIsCisJCQkgZGF0YS5yYW0ubWF4X3dpZHRoLCBkYXRhLnJhbS5tYXhfaGVpZ2h0 LCByYW0pOworCisJCWRhdGEucmVuZGVyX2NvcHkgPSBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhk ZXZpZCk7CisJCWlndF9yZXF1aXJlKGRhdGEucmVuZGVyX2NvcHkpOworCisJCWRhdGEuYnVmbWdy ID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkYXRhLmRybV9mZCwgNDA5Nik7CisJCWRhdGEu YmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhkYXRhLmJ1Zm1nciwgZGV2aWQpOworCX0K KworCS8qCisJICogU2tpcCBsaW5lYXIgYXMgaXQgZG9lc24ndCBoaXQgdGhlIG92ZXJmbG93IHdl IHdhbnQKKwkgKiBvbiBhY2NvdW50IG9mIHRoZSB0aWxlIGhlaWdodCBiZWluZyBlZmZlY3RpdmVs eSBvbmUsCisJICogYW5kIHRodXMgdGhlIGtlbnJuZWwgcm91bmRpbmcgdXAgdG8gdGhlIG5leHQg dGlsZQorCSAqIGhlaWdodCB3b24ndCBkbyBhbnl0aGluZy4KKwkgKi8KKwlmb3IgKGludCBpID0g MTsgaSA8IEFSUkFZX1NJWkUobW9kaWZpZXJzKTsgaSsrKSB7CisJCWlndF9zdWJ0ZXN0X2YoIiVz LWFkZGZiLXNpemUtb3ZlcmZsb3ciLAorCQkJICAgICAgbW9kaWZpZXJzW2ldLm5hbWUpIHsKKwkJ CWRhdGEubW9kaWZpZXIgPSBtb2RpZmllcnNbaV0ubW9kaWZpZXI7CisJCQl0ZXN0X3NpemVfb3Zl cmZsb3coJmRhdGEpOworCQl9CisJfQorCisJZm9yIChpbnQgaSA9IDE7IGkgPCBBUlJBWV9TSVpF KG1vZGlmaWVycyk7IGkrKykgeworCQlpZ3Rfc3VidGVzdF9mKCIlcy1hZGRmYi1zaXplLW9mZnNl dC1vdmVyZmxvdyIsCisJCQkgICAgICBtb2RpZmllcnNbaV0ubmFtZSkgeworCQkJZGF0YS5tb2Rp ZmllciA9IG1vZGlmaWVyc1tpXS5tb2RpZmllcjsKKwkJCXRlc3Rfc2l6ZV9vZmZzZXRfb3ZlcmZs b3coJmRhdGEpOworCQl9CisJfQorCisJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG1v ZGlmaWVycyk7IGkrKykgeworCQlpZ3Rfc3VidGVzdF9mKCIlcy1hZGRmYiIsIG1vZGlmaWVyc1tp XS5uYW1lKSB7CisJCQlkYXRhLm1vZGlmaWVyID0gbW9kaWZpZXJzW2ldLm1vZGlmaWVyOworCisJ CQl0ZXN0X2FkZGZiKCZkYXRhKTsKKwkJfQorCX0KKworCWZvciAoaW50IGkgPSAwOyBpIDwgQVJS QVlfU0laRShtb2RpZmllcnMpOyBpKyspIHsKKwkJZGF0YS5tb2RpZmllciA9IG1vZGlmaWVyc1tp XS5tb2RpZmllcjsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IEFSUkFZX1NJWkUoZm9ybWF0cyk7 IGorKykgeworCQkJZGF0YS5mb3JtYXQgPSBmb3JtYXRzW2pdLmZvcm1hdDsKKworCQkJZm9yIChp bnQgayA9IDA7IGsgPCBBUlJBWV9TSVpFKHJvdGF0aW9ucyk7IGsrKykgeworCQkJCWRhdGEucm90 YXRpb24gPSByb3RhdGlvbnNba10ucm90YXRpb247CisKKwkJCQlpZ3Rfc3VidGVzdF9mKCIlcy0l cy1yb3RhdGUtJWQiLCBtb2RpZmllcnNbaV0ubmFtZSwKKwkJCQkJICAgICAgZm9ybWF0c1tqXS5u YW1lLCByb3RhdGlvbnNba10uYW5nbGUpIHsKKwkJCQkJaWd0X3JlcXVpcmUoaWd0X2ZiX3N1cHBv cnRlZF9mb3JtYXQoZGF0YS5mb3JtYXQpKTsKKwkJCQkJaWd0X3JlcXVpcmUoaWd0X2Rpc3BsYXlf aGFzX2Zvcm1hdF9tb2QoJmRhdGEuZGlzcGxheSwgZGF0YS5mb3JtYXQsIGRhdGEubW9kaWZpZXIp KTsKKwkJCQkJcHJlcF9mYigmZGF0YSk7CisJCQkJCXRlc3Rfc2Nhbm91dCgmZGF0YSk7CisJCQkJ fQorCQkJfQorCisJCQlpZ3RfZml4dHVyZQorCQkJCWNsZWFudXBfZmIoJmRhdGEpOworCQl9CisJ fQorCisJaWd0X2ZpeHR1cmUgeworCQlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOwor CisJCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoZGF0YS5iYXRjaCk7CisJCWRybV9pbnRlbF9idWZt Z3JfZGVzdHJveShkYXRhLmJ1Zm1ncik7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24u YnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBlM2M4YjA3ZmUyOGUuLjNkNTE5NTc4Yjkz ZCAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQK QEAgLTE0LDYgKzE0LDcgQEAgdGVzdF9wcm9ncyA9IFsKIAkna21zX2F0b21pY19pbnRlcnJ1cHRp YmxlJywKIAkna21zX2F0b21pY190cmFuc2l0aW9uJywKIAkna21zX2F2YWlsYWJsZV9tb2Rlc19j cmMnLAorCSdrbXNfYmlnX2ZiJywKIAkna21zX2J1c3knLAogCSdrbXNfY2NzJywKIAkna21zX2Nv bG9yJywKLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2