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 575236E0E0 for ; Fri, 12 Jul 2019 14:16:29 +0000 (UTC) From: Oleg Vasilev Date: Fri, 12 Jul 2019 17:16:18 +0300 Message-Id: <20190712141618.7110-2-oleg.vasilev@intel.com> In-Reply-To: <20190712141618.7110-1-oleg.vasilev@intel.com> References: <20190712141618.7110-1-oleg.vasilev@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH 2/2] tests/prime_generic: add vendor-agnostic prime tests 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 Cc: Daniel Vetter List-ID: Q3VycmVudCwgd2UgaGF2ZSBkaWZmZXJlbnQgc2V0cyBvZiBwcmltZSB0ZXN0czoKIC0gdmdlbStp OTE1CiAtIGFtZGdwdStpOTE1CiAtIG5vdXZlYXUraTkxNQoKVGhvc2UgdGVzdHMgdXNlIHZlbmRv ci1zcGVjaWZpYyBpb2N0bHMsIHRoZXJlZm9yZSwgbm90IGludGVyY2hhbmdlYWJsZS4KVGhlIGlk ZWEgaXMgdG8gY3JlYXRlIGEgc2V0IG9mIHRlc3RzIHdoaWNoIGFyZSBleHBlY3RlZCB0byB3b3Jr IG9uIGFueQpwcmltZS1jb21wYXRpYmxlIGRyaXZlci4gSXQgY2FuIGJlIHJ1biB3aXRoIGFueSBj b21iaW5hdGlvbiBvZgpleHBvcnRlcitpbXBvcnRlciwgd2hpbGUgdGhvc2UgZGV2aWNlcyBoYXZl IHJlc3BlY3RpdmUgcHJpbWUKY2FwYWJpbGl0aWVzLgoKU2luY2UgdmdlbSBjYW4gYmUgdXNlZCBh cyBib3RoIGV4cG9ydGVyIGFuZCBpbXBvcnRlciwgYW5kIHRoZXJlIGFyZW4ndAphbnkgZ2VuZXJp YyBrbXMgZmVhdHVyZXMgd2hpY2ggdmdlbSBkb2Vzbid0IHN1cHBvcnQsIGl0IGlzIHN1ZmZpY2ll bnQKdG8gdGVzdCBEUklWRVJfQU5ZK0RSSVZFUl9WS01TLgoKVGhlIGZpcnN0IHRlc3QgaXMgc2lt cGxlOgoxLiBFeHBvcnRlciBjcmVhdGVzIGEgZHVtYiBGQiBhbmQgZmlsbHMgaXQgd2l0aCBhIHBs YWluIGNvbG9yCjIuIEZCIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBpbXBvcnRlcgozLiBJbXBvcnRl ciBtb2Rlc2V0cyBhbmQgY29tcHV0ZXMgcGlwZSBDUkMKNC4gSW1wb3J0ZXIgZHJhd3MgdGhlIHNh bWUgY29sb3IgdGhyb3VnaCBjYWlybyBhbmQgY29tcGFyZXMgQ1JDCgpUaGUgaW5pdGlhbCBtb3Rp dmF0aW9uIGNvbWVzIGZyb20gdGhlIG5lZWQgdG8gdGVzdCBwcmltZSBzdXBwb3J0IGluCnZrbXMu CgpDYzogUm9kcmlnbyBTaXF1ZWlyYSA8cm9kcmlnb3NpcXVlaXJhbWVsb0BnbWFpbC5jb20+CkNj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ClNpZ25lZC1vZmYtYnk6IE9sZWcgVmFz aWxldiA8b2xlZy52YXNpbGV2QGludGVsLmNvbT4KLS0tCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAg fCAgIDEgKwogdGVzdHMvcHJpbWVfZ2VuZXJpYy5jIHwgMjUwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3ByaW1lX2dlbmVyaWMuYwoKZGlmZiAtLWdpdCBh L3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKaW5kZXggMzRhNzQwMjUuLjFj OTM4ZTk1IDEwMDY0NAotLS0gYS90ZXN0cy9tZXNvbi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5i dWlsZApAQCAtNzYsNiArNzYsNyBAQCB0ZXN0X3Byb2dzID0gWwogCSdwcmltZV9zZWxmX2ltcG9y dCcsCiAJJ3ByaW1lX3VkbCcsCiAJJ3ByaW1lX3ZnZW0nLAorCSdwcmltZV9nZW5lcmljJywKIAkn c3luY29ial9iYXNpYycsCiAJJ3N5bmNvYmpfd2FpdCcsCiAJJ3RlbXBsYXRlJywKZGlmZiAtLWdp dCBhL3Rlc3RzL3ByaW1lX2dlbmVyaWMuYyBiL3Rlc3RzL3ByaW1lX2dlbmVyaWMuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZjI3M2E0ZjYKLS0tIC9kZXYvbnVsbAorKysg Yi90ZXN0cy9wcmltZV9nZW5lcmljLmMKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBDb3B5cmln aHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us CisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4 dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAq IElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0 X3ZnZW0uaCIKKworI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHN5cy9wb2xsLmg+ CisjaW5jbHVkZSA8dGltZS5oPgorCitzdHJ1Y3QgY3JjX2luZm8geworCWlndF9jcmNfdCBjcmM7 CisJY2hhciAqc3RyOworCWNvbnN0IGNoYXIgKm5hbWU7Cit9OworCitzdGF0aWMgc3RydWN0IHsK Kwlkb3VibGUgciwgZywgYjsKKwl1aW50MzJfdCBjb2xvcjsKKwlzdHJ1Y3QgY3JjX2luZm8gcHJp bWVfY3JjLCBkaXJlY3RfY3JjOworfSBjb2xvcnNbM10gPSB7CisJeyAuciA9IDAuMCwgLmcgPSAw LjAsIC5iID0gMC4wLCAuY29sb3IgPSAweGZmMDAwMDAwfSwKKwl7IC5yID0gMS4wLCAuZyA9IDEu MCwgLmIgPSAxLjAsIC5jb2xvciA9IDB4ZmZmZmZmZmZ9LAorCXsgLnIgPSAxLjAsIC5nID0gMC4w LCAuYiA9IDAuMCwgLmNvbG9yID0gMHhmZmZmMDAwMH0sCit9OworCitJR1RfVEVTVF9ERVNDUklQ VElPTigiR2VuZXJpYyB0ZXN0cywgd29ya2luZyB3aXRoIGFueSBwcmltZSBkZXZpY2UiKTsKKwor c3RhdGljIGJvb2wgaGFzX3ByaW1lX2ltcG9ydChpbnQgZmQpCit7CisJdWludDY0X3QgdmFsdWU7 CisKKwlpZiAoZHJtR2V0Q2FwKGZkLCBEUk1fQ0FQX1BSSU1FLCAmdmFsdWUpKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlyZXR1cm4gdmFsdWUgJiBEUk1fUFJJTUVfQ0FQX0lNUE9SVDsKK30KKworc3Rh dGljIGJvb2wgaGFzX3ByaW1lX2V4cG9ydChpbnQgZmQpCit7CisJdWludDY0X3QgdmFsdWU7CisK KwlpZiAoZHJtR2V0Q2FwKGZkLCBEUk1fQ0FQX1BSSU1FLCAmdmFsdWUpKQorCQlyZXR1cm4gZmFs c2U7CisKKwlyZXR1cm4gdmFsdWUgJiBEUk1fUFJJTUVfQ0FQX0VYUE9SVDsKK30KKworc3RhdGlj IHZvaWQgc2V0dXBfZGlzcGxheShpbnQgaW1wb3J0ZXIsIGlndF9kaXNwbGF5X3QgKmRpc3BsYXks IGlndF9vdXRwdXRfdCAqKm91dHB1dCwKKwkJCSAgZW51bSBwaXBlIHBpcGUpCit7CisJaWd0X2Rp c3BsYXlfcmVxdWlyZShkaXNwbGF5LCBpbXBvcnRlcik7CisJaWd0X3NraXBfb24ocGlwZSA+PSBk aXNwbGF5LT5uX3BpcGVzKTsKKwkqb3V0cHV0ID0gaWd0X2dldF9zaW5nbGVfb3V0cHV0X2Zvcl9w aXBlKGRpc3BsYXksIHBpcGUpOworCWlndF9yZXF1aXJlX2YoKm91dHB1dCwgIk5vIGNvbm5lY3Rv ciBmb3VuZCBmb3IgcGlwZSAlc1xuIiwKKwkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSkp OworCisJaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7CisJaWd0X291dHB1dF9zZXRfcGlwZSgq b3V0cHV0LCBwaXBlKTsKK30KKworc3RhdGljIHZvaWQgcHJlcGFyZV9zY3JhdGNoKGludCBleHBv cnRlciwgc3RydWN0IHZnZW1fYm8gKnNjcmF0Y2gsCisJCQkgICAgZHJtTW9kZU1vZGVJbmZvICpt b2RlLCB1aW50MzJfdCBjb2xvcikKK3sKKwlpbnQgaTsKKwl1aW50MzJfdCAqcHRyOworCisJc2Ny YXRjaC0+d2lkdGggPSBtb2RlLT5oZGlzcGxheTsKKwlzY3JhdGNoLT5oZWlnaHQgPSBtb2RlLT52 ZGlzcGxheTsKKwlzY3JhdGNoLT5icHAgPSAzMjsKKwl2Z2VtX2NyZWF0ZShleHBvcnRlciwgc2Ny YXRjaCk7CisKKwlwdHIgPSB2Z2VtX21tYXAoZXhwb3J0ZXIsIHNjcmF0Y2gsIFBST1RfV1JJVEUp OworCWZvciAoaSA9IDA7IGkgPCBzY3JhdGNoLT5zaXplIC8gc2l6ZW9mKCpwdHIpOyArK2kpCisJ CXB0cltpXSA9IGNvbG9yOworCisJbXVubWFwKHB0ciwgc2NyYXRjaC0+c2l6ZSk7Cit9CisKK3N0 YXRpYyB2b2lkIHByZXBhcmVfZmIoaW50IGltcG9ydGVyLCBzdHJ1Y3QgdmdlbV9ibyAqc2NyYXRj aCwgc3RydWN0IGlndF9mYiAqZmIpCit7CisJZW51bSBpZ3RfY29sb3JfZW5jb2RpbmcgY29sb3Jf ZW5jb2RpbmcgPSBJR1RfQ09MT1JfWUNCQ1JfQlQ3MDk7CisJZW51bSBpZ3RfY29sb3JfcmFuZ2Ug Y29sb3JfcmFuZ2UgPSBJR1RfQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRTsKKworCWlndF9pbml0 X2ZiKGZiLCBpbXBvcnRlciwgc2NyYXRjaC0+d2lkdGgsIHNjcmF0Y2gtPmhlaWdodCwKKwkJICAg IERSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCSAgICBj b2xvcl9lbmNvZGluZywgY29sb3JfcmFuZ2UpOworfQorCitzdGF0aWMgdm9pZCBpbXBvcnRfZmIo aW50IGltcG9ydGVyLCBzdHJ1Y3QgaWd0X2ZiICpmYiwKKwkJICAgICAgaW50IGRtYWJ1Zl9mZCwg dWludDMyX3QgcGl0Y2gpCit7CisJdWludDMyX3Qgb2Zmc2V0c1s0XSwgcGl0Y2hlc1s0XSwgaGFu ZGxlc1s0XTsKKwlpbnQgcmV0OworCisJZmItPmdlbV9oYW5kbGUgPSBwcmltZV9mZF90b19oYW5k bGUoaW1wb3J0ZXIsIGRtYWJ1Zl9mZCk7CisKKwloYW5kbGVzWzBdID0gZmItPmdlbV9oYW5kbGU7 CisJcGl0Y2hlc1swXSA9IHBpdGNoOworCW9mZnNldHNbMF0gPSAwOworCisJcmV0ID0gZHJtTW9k ZUFkZEZCMihpbXBvcnRlciwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAorCQkJICAgIERSTV9GT1JN QVRfWFJHQjg4ODgsCisJCQkgICAgaGFuZGxlcywgcGl0Y2hlcywgb2Zmc2V0cywKKwkJCSAgICAm ZmItPmZiX2lkLCAwKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKK30KKworc3RhdGljIHZvaWQg c2V0X2ZiKHN0cnVjdCBpZ3RfZmIgKmZiLAorCQkgICBpZ3RfZGlzcGxheV90ICpkaXNwbGF5LAor CQkgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKK3sKKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKKwlp bnQgcmV0OworCisJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgMCk7CisJ aWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBmYik7CisJcmV0ID0gaWd0X2Rpc3BsYXlfY29tbWl0 KGRpc3BsYXkpOworCisJaWd0X2Fzc2VydChyZXQgPT0gMCk7Cit9CisKK3N0YXRpYyB2b2lkIGNv bGxlY3RfY3JjKGludCBpbXBvcnRlciwgc3RydWN0IGlndF9mYiAqZmIsIGlndF9kaXNwbGF5X3Qg KmRpc3BsYXksCisJCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BpcGVfY3JjX3QgKnBpcGVf Y3JjLAorCQkJdWludDMyX3QgY29sb3IsIHN0cnVjdCBjcmNfaW5mbyAqaW5mbykKK3sKKwlzZXRf ZmIoZmIsIGRpc3BsYXksIG91dHB1dCk7CisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKHBpcGVf Y3JjLCAmaW5mby0+Y3JjKTsKKwlpbmZvLT5zdHIgPSBpZ3RfY3JjX3RvX3N0cmluZygmaW5mby0+ Y3JjKTsKKwlpZ3RfZGVidWcoIkNSQyB0aHJvdWdoICclcycgbWV0aG9kIGZvciAlIzA4eCBpcyAl c1xuIiwKKwkJICBpbmZvLT5uYW1lLCBjb2xvciwgaW5mby0+c3RyKTsKKwlpZ3RfcmVtb3ZlX2Zi KGltcG9ydGVyLCBmYik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfY3JjKGludCBleHBvcnRlciwg aW50IGltcG9ydGVyKQoreworCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKKwlpZ3Rfb3V0cHV0X3Qg Km91dHB1dDsKKwlpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7CisJZW51bSBwaXBlIHBpcGUgPSBQ SVBFX0E7CisJc3RydWN0IGlndF9mYiBmYjsKKwlpbnQgZG1hYnVmX2ZkOworCXN0cnVjdCB2Z2Vt X2JvIHNjcmF0Y2g7IC8qIGRlc3BpdGUgdGhlIG5hbWUsIGl0IHN1aXRzIGZvciBhbnkKKwkJCQkg KiBnZW0tY29tcGF0aWJsZSBkZXZpY2UKKwkJCQkgKiBUT0RPOiByZW5hbWUKKwkJCQkgKi8KKwlp bnQgaSwgajsKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisKKwlib29sIGNyY19lcXVhbCA9IGZh bHNlOworCisJc2V0dXBfZGlzcGxheShpbXBvcnRlciwgJmRpc3BsYXksICZvdXRwdXQsIHBpcGUp OworCisJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKwlwaXBlX2NyYyA9IGln dF9waXBlX2NyY19uZXcoaW1wb3J0ZXIsIHBpcGUsIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRP KTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvbG9ycyk7IGkrKykgeworCQlwcmVw YXJlX3NjcmF0Y2goZXhwb3J0ZXIsICZzY3JhdGNoLCBtb2RlLCBjb2xvcnNbaV0uY29sb3IpOwor CQlkbWFidWZfZmQgPSBwcmltZV9oYW5kbGVfdG9fZmQoZXhwb3J0ZXIsIHNjcmF0Y2guaGFuZGxl KTsKKwkJZ2VtX2Nsb3NlKGV4cG9ydGVyLCBzY3JhdGNoLmhhbmRsZSk7CisKKwkJcHJlcGFyZV9m YihpbXBvcnRlciwgJnNjcmF0Y2gsICZmYik7CisJCWltcG9ydF9mYihpbXBvcnRlciwgJmZiLCBk bWFidWZfZmQsIHNjcmF0Y2gucGl0Y2gpOworCQljbG9zZShkbWFidWZfZmQpOworCisJCWNvbG9y c1tpXS5wcmltZV9jcmMubmFtZSA9ICJwcmltZSI7CisJCWNvbGxlY3RfY3JjKGltcG9ydGVyLCAm ZmIsICZkaXNwbGF5LCBvdXRwdXQsCisJCQkgICAgcGlwZV9jcmMsIGNvbG9yc1tpXS5jb2xvciwg JmNvbG9yc1tpXS5wcmltZV9jcmMpOworCisJCWlndF9jcmVhdGVfY29sb3JfZmIoaW1wb3J0ZXIs CisJCQkJICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJCQkgICAgRFJNX0ZP Uk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCQkgICAgY29sb3Jz W2ldLnIsIGNvbG9yc1tpXS5nLCBjb2xvcnNbaV0uYiwKKwkJCQkgICAgJmZiKTsKKworCQljb2xv cnNbaV0uZGlyZWN0X2NyYy5uYW1lID0gImRpcmVjdCI7CisJCWNvbGxlY3RfY3JjKGltcG9ydGVy LCAmZmIsICZkaXNwbGF5LCBvdXRwdXQsCisJCQkgICAgcGlwZV9jcmMsIGNvbG9yc1tpXS5jb2xv ciwgJmNvbG9yc1tpXS5kaXJlY3RfY3JjKTsKKwl9CisJaWd0X3BpcGVfY3JjX2ZyZWUocGlwZV9j cmMpOworCisJaWd0X2RlYnVnKCJDUkMgdGFibGU6XG4iKTsKKwlpZ3RfZGVidWcoIkNvbG9yXHRc dFByaW1lXHRcdERpcmVjdFxuIik7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29sb3Jz KTsgaSsrKSB7CisJCWlndF9kZWJ1ZygiJSMwOHhcdCUuOHNcdCUuOHNcbiIsIGNvbG9yc1tpXS5j b2xvciwKKwkJCSAgY29sb3JzW2ldLnByaW1lX2NyYy5zdHIsIGNvbG9yc1tpXS5kaXJlY3RfY3Jj LnN0cik7CisJCWZyZWUoY29sb3JzW2ldLnByaW1lX2NyYy5zdHIpOworCQlmcmVlKGNvbG9yc1tp XS5kaXJlY3RfY3JjLnN0cik7CisJfQorCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29s b3JzKTsgaSsrKSB7CisJCWZvciAoaiA9IDA7IGogPCBBUlJBWV9TSVpFKGNvbG9ycyk7IGorKykg eworCQkJaWYgKGkgPT0gaikgeworCQkJCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZjb2xvcnNbaV0u cHJpbWVfY3JjLmNyYywKKwkJCQkJCSAgICAgJmNvbG9yc1tqXS5kaXJlY3RfY3JjLmNyYyk7CisJ CQkJY29udGludWU7CisJCQl9CisJCQljcmNfZXF1YWwgPSBpZ3RfY2hlY2tfY3JjX2VxdWFsKCZj b2xvcnNbaV0ucHJpbWVfY3JjLmNyYywKKwkJCQkJCQkmY29sb3JzW2pdLmRpcmVjdF9jcmMuY3Jj KTsKKwkJCWlndF9hc3NlcnRfZighY3JjX2VxdWFsLCAiQ1JDIHNob3VsZCBiZSBkaWZmZXJlbnQi KTsKKwkJfQorCX0KKwlpZ3RfZGlzcGxheV9maW5pKCZkaXNwbGF5KTsKK30KKworc3RhdGljIHZv aWQgcnVuX3Rlc3RfY3JjKGludCBleHBvcnRfY2hpcHNldCwgaW50IGltcG9ydF9jaGlwc2V0KQor eworCWludCBpbXBvcnRlciA9IC0xOworCWludCBleHBvcnRlciA9IC0xOworCisJZXhwb3J0ZXIg PSBkcm1fb3Blbl9kcml2ZXIoZXhwb3J0X2NoaXBzZXQpOworCWltcG9ydGVyID0gZHJtX29wZW5f ZHJpdmVyX21hc3RlcihpbXBvcnRfY2hpcHNldCk7CisKKwlpZ3RfcmVxdWlyZShoYXNfcHJpbWVf ZXhwb3J0KGV4cG9ydGVyKSk7CisJaWd0X3JlcXVpcmUoaGFzX3ByaW1lX2ltcG9ydChpbXBvcnRl cikpOworCWlndF9yZXF1aXJlX3BpcGVfY3JjKGltcG9ydGVyKTsKKworCXRlc3RfY3JjKGV4cG9y dGVyLCBpbXBvcnRlcik7CisJY2xvc2UoaW1wb3J0ZXIpOworCWNsb3NlKGV4cG9ydGVyKTsKK30K KworaWd0X21haW4KK3sKKwlpZ3RfZml4dHVyZSB7CisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNz X21vZGUoKTsKKwl9CisJaWd0X3N1YnRlc3QoImNyYyIpCisJCXJ1bl90ZXN0X2NyYyhEUklWRVJf VkdFTSwgRFJJVkVSX0FOWSk7Cit9Ci0tIAoyLjIyLjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaWd0LWRldg==