From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 62D316E32E for ; Thu, 4 Jul 2019 11:55:26 +0000 (UTC) From: Arkadiusz Hiler Date: Thu, 4 Jul 2019 14:55:01 +0300 Message-Id: <20190704115501.643-1-arkadiusz.hiler@intel.com> In-Reply-To: <20190701122153.11569-1-arkadiusz.hiler@intel.com> References: <20190701122153.11569-1-arkadiusz.hiler@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH 1/5 v2 i-g-t] lib/igt_core: Add support for subtest descriptions 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: Petri Latvala List-ID: VGhpcyBwYXRjaCBhZGRzIGlndF9kZXNjcmlwdGlvbigpIHdoaWNoIGF0dGFjaGVzIGEgZGVzY3Jp cHRpb24gdG8gdGhlCmZvbGxvd2luZyBpZ3Rfc3VidGVzdCBvciBpZ3Rfc3VidGVzdF9ncm91cCBi bG9jay4KCkRlc2NyaXB0aW9ucyBhcmUgYWNjZXNzaWJsZSB2aWEgJy4vdGVzdCAtLWRlc2NyaWJl Wz1wYXR0ZXJuXScKClN1YnRlc3QgZGVzY3JpcHRpb24gaXMgaXRzIG93biBpZ3RfZGVzY3JpYmUg YXMgd2VsbCBhcyBpZ3RfZGVzY3JpYmVzCm9mIGFsbCB0aGUgcGFyZW50aW5nIGlndF9zdWJ0ZXN0 X2dyb3Vwcywgc3RhcnRpbmcgZnJvbSB0aGUgb3V0ZXJtb3N0CnNjb3BlLgoKRXhhbXBsZXMgb2Yg Y29kZSBhbmQgcHJvZHVjZWQgb3V0cHV0cyBhcmUgaW5jbHVkZWQgaW4KbGliL3Rlc3QvaWd0X2Rl c2NyaWJlLmMgYW5kIGFzIGEgZG9jdW1lbnRhdGlvbiBjb21tZW50IG9uIGlndF9kZXNjcmliZSgp Cm1hY3JvLgoKdjI6IGFkZHJlc3MgU2ltb24ncyByZXZpZXcKCkNjOiBTaW1vbiBTZXIgPHNpbW9u LnNlckBpbnRlbC5jb20+CkNjOiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogQXJrYWRpdXN6IEhpbGVyIDxhcmthZGl1c3ouaGlsZXJAaW50ZWwu Y29tPgpBY2tlZC1ieTogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+Ci0t LQogZGVsdGEgd2l0aCB2MTogaHR0cHM6Ly9oaWxlci5ldS9wL2FiMDYyZjc2LnR4dAoKIGxpYi9p Z3RfY29yZS5jICAgICAgICAgICB8IDE3OSArKysrKysrKysrKysrKysrKysrKysrKy0tCiBsaWIv aWd0X2NvcmUuaCAgICAgICAgICAgfCAxMzcgKysrKysrKysrKysrKysrKystLQogbGliL3Rlc3Rz L2lndF9kZXNjcmliZS5jIHwgMjgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogbGliL3Rlc3RzL21lc29uLmJ1aWxkICAgIHwgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwg NTc2IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp Yi90ZXN0cy9pZ3RfZGVzY3JpYmUuYwoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29yZS5jIGIvbGli L2lndF9jb3JlLmMKaW5kZXggNmI5ZjA0MjUuLjQyNTg0OGEyIDEwMDY0NAotLS0gYS9saWIvaWd0 X2NvcmUuYworKysgYi9saWIvaWd0X2NvcmUuYwpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUg ImlndF9zeXNmcy5oIgogI2luY2x1ZGUgImlndF9zeXNycS5oIgogI2luY2x1ZGUgImlndF9yYy5o IgorI2luY2x1ZGUgImlndF9saXN0LmgiCiAKICNkZWZpbmUgVU5XX0xPQ0FMX09OTFkKICNpbmNs dWRlIDxsaWJ1bndpbmQuaD4KQEAgLTI1OSw2ICsyNjAsNyBAQCBjb25zdCBjaGFyICppZ3RfaW50 ZXJhY3RpdmVfZGVidWc7CiAKIC8qIHN1YnRlc3RzIGhlbHBlcnMgKi8KIHN0YXRpYyBib29sIGxp c3Rfc3VidGVzdHMgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRlc2NyaWJlX3N1YnRlc3RzID0gZmFs c2U7CiBzdGF0aWMgY2hhciAqcnVuX3NpbmdsZV9zdWJ0ZXN0ID0gTlVMTDsKIHN0YXRpYyBib29s IHJ1bl9zaW5nbGVfc3VidGVzdF9mb3VuZCA9IGZhbHNlOwogc3RhdGljIGNvbnN0IGNoYXIgKmlu X3N1YnRlc3QgPSBOVUxMOwpAQCAtMjcxLDYgKzI3MywxNiBAQCBzdGF0aWMgZW51bSB7CiAJQ09O VCA9IDAsIFNLSVAsIEZBSUwKIH0gc2tpcF9zdWJ0ZXN0c19oZW5jZWZvcnRoID0gQ09OVDsKIAor c3RhdGljIGNoYXIgX19jdXJyZW50X2Rlc2NyaXB0aW9uWzUxMl07CisKK3N0cnVjdCBkZXNjcmlw dGlvbl9ub2RlIHsKKwljaGFyIGRlc2Nbc2l6ZW9mKF9fY3VycmVudF9kZXNjcmlwdGlvbildOwor CXN0cnVjdCBpZ3RfbGlzdCBsaW5rOworfTsKKworc3RhdGljIHN0cnVjdCBpZ3RfbGlzdCBzdWJn cm91cF9kZXNjcmlwdGlvbnM7CisKKwogYm9vbCBfX2lndF9wbGFpbl9vdXRwdXQgPSBmYWxzZTsK IAogLyogZm9yayBzdXBwb3J0IHN0YXRlICovCkBAIC0yODUsNiArMjk3LDcgQEAgZW51bSB7CiAJ ICogY29uZmxpY3Qgd2l0aCBjb3JlIG9uZXMKIAkgKi8KIAlPUFRfTElTVF9TVUJURVNUUyA9IDUw MCwKKwlPUFRfREVTQ1JJQkVfU1VCVEVTVFMsCiAJT1BUX1JVTl9TVUJURVNULAogCU9QVF9ERVND UklQVElPTiwKIAlPUFRfREVCVUcsCkBAIC01MjgsMTAgKzU0MSw1OSBAQCBzdGF0aWMgdm9pZCBj b21tb25fZXhpdF9oYW5kbGVyKGludCBzaWcpCiAJYXNzZXJ0KHNpZyAhPSAwIHx8IGlndF9leGl0 X2NhbGxlZCk7CiB9CiAKK3N0YXRpYyB2b2lkIHByaW50X2xpbmVfd3JhcHBpbmcoY29uc3QgY2hh ciAqaW5kZW50LCBjb25zdCBjaGFyICp0ZXh0KQoreworCWNoYXIgKmNvcHksICpjdXJyLCAqbmV4 dF9zcGFjZTsKKwlpbnQgY3VycmVudF9saW5lX2xlbmd0aCA9IDA7CisJYm9vbCBkb25lID0gZmFs c2U7CisKKwljb25zdCBpbnQgdG90YWxfbGluZV9sZW5ndGggPSA4MDsKKwljb25zdCBpbnQgbGlu ZV9sZW5ndGggPSB0b3RhbF9saW5lX2xlbmd0aCAtIHN0cmxlbihpbmRlbnQpOworCisJY29weSA9 IG1hbGxvYyhzdHJsZW4odGV4dCkgKyAxKTsKKwltZW1jcHkoY29weSwgdGV4dCwgc3RybGVuKHRl eHQpICsgMSk7CisKKwljdXJyID0gY29weTsKKworCXByaW50ZigiJXMiLCBpbmRlbnQpOworCisJ d2hpbGUgKCFkb25lKSB7CisJCW5leHRfc3BhY2UgPSBzdHJjaHIoY3VyciwgJyAnKTsKKworCQlp ZiAoIW5leHRfc3BhY2UpIHsgLyogbm8gbW9yZSBzcGFjZXMsIHByaW50IGV2ZXJ5dGhpbmcgdGhh dCBpcyBsZWZ0ICovCisJCQlkb25lID0gdHJ1ZTsKKwkJCW5leHRfc3BhY2UgPSBzdHJjaHIoY3Vy ciwgJ1wwJyk7CisJCX0KKworCQkqbmV4dF9zcGFjZSA9ICdcMCc7CisKKwkJaWYgKChuZXh0X3Nw YWNlIC0gY3VycikgKyBjdXJyZW50X2xpbmVfbGVuZ3RoID4gbGluZV9sZW5ndGggJiYgY3VyciAh PSBjb3B5KSB7CisJCQlwcmludGYoIlxuJXMiLCBpbmRlbnQpOworCQkJY3VycmVudF9saW5lX2xl bmd0aCA9IDA7CisJCX0KKworCQlpZiAoY3VycmVudF9saW5lX2xlbmd0aCA9PSAwKQorCQkJcHJp bnRmKCIlcyIsIGN1cnIpOyAvKiBmaXJzdCB3b3JkIGluIGEgbGluZSwgZG9uJ3Qgc3BhY2Ugb3V0 ICovCisJCWVsc2UKKwkJCXByaW50ZigiICVzIiwgY3Vycik7CisKKwkJY3VycmVudF9saW5lX2xl bmd0aCArPSBuZXh0X3NwYWNlIC0gY3VycjsKKwkJY3VyciA9IG5leHRfc3BhY2UgKyAxOworCX0K KworCXByaW50ZigiXG4iKTsKKworCWZyZWUoY29weSk7Cit9CisKKwogc3RhdGljIHZvaWQgcHJp bnRfdGVzdF9kZXNjcmlwdGlvbih2b2lkKQogewotCWlmICgmX19pZ3RfdGVzdF9kZXNjcmlwdGlv bikKLQkJcHJpbnRmKCIlc1xuIiwgX19pZ3RfdGVzdF9kZXNjcmlwdGlvbik7CisJaWYgKCZfX2ln dF90ZXN0X2Rlc2NyaXB0aW9uKSB7CisJCXByaW50X2xpbmVfd3JhcHBpbmcoIiIsIF9faWd0X3Rl c3RfZGVzY3JpcHRpb24pOworCQlpZiAoZGVzY3JpYmVfc3VidGVzdHMpCisJCQlwcmludGYoIlxu Iik7CisJfQogfQogCiBzdGF0aWMgdm9pZCBwcmludF92ZXJzaW9uKHZvaWQpCkBAIC01NTgsNiAr NjIwLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdXNhZ2UoY29uc3QgY2hhciAqaGVscF9zdHIsIGJv b2wgb3V0cHV0X29uX3N0ZGVycikKIAkJICAgIiAgLS1kZWJ1Z1s9bG9nLWRvbWFpbl1cbiIKIAkJ ICAgIiAgLS1pbnRlcmFjdGl2ZS1kZWJ1Z1s9ZG9tYWluXVxuIgogCQkgICAiICAtLWhlbHAtZGVz Y3JpcHRpb25cbiIKKwkJICAgIiAgLS1kZXNjcmliZVxuIgogCQkgICAiICAtLWhlbHB8LWhcbiIp OwogCWlmIChoZWxwX3N0cikKIAkJZnByaW50ZihmLCAiJXNcbiIsIGhlbHBfc3RyKTsKQEAgLTY3 MSw2ICs3MzQsNyBAQCBzdGF0aWMgaW50IGNvbW1vbl9pbml0KGludCAqYXJnYywgY2hhciAqKmFy Z3YsCiAJaW50IGMsIG9wdGlvbl9pbmRleCA9IDAsIGksIHg7CiAJc3RhdGljIHN0cnVjdCBvcHRp b24gbG9uZ19vcHRpb25zW10gPSB7CiAJCXsibGlzdC1zdWJ0ZXN0cyIsICAgICBub19hcmd1bWVu dCwgICAgICAgTlVMTCwgT1BUX0xJU1RfU1VCVEVTVFN9LAorCQl7ImRlc2NyaWJlIiwgICAgICAg ICAgb3B0aW9uYWxfYXJndW1lbnQsIE5VTEwsIE9QVF9ERVNDUklCRV9TVUJURVNUU30sCiAJCXsi cnVuLXN1YnRlc3QiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUX1JVTl9TVUJU RVNUfSwKIAkJeyJoZWxwLWRlc2NyaXB0aW9uIiwgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCBP UFRfREVTQ1JJUFRJT059LAogCQl7ImRlYnVnIiwgICAgICAgICAgICAgb3B0aW9uYWxfYXJndW1l bnQsIE5VTEwsIE9QVF9ERUJVR30sCkBAIC02ODcsNiArNzUxLDcgQEAgc3RhdGljIGludCBjb21t b25faW5pdChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2LAogCWludCByZXQgPSAwOwogCiAJY29tbW9u X2luaXRfZW52KCk7CisJaWd0X2xpc3RfaW5pdCgmc3ViZ3JvdXBfZGVzY3JpcHRpb25zKTsKIAog CWNvbW1hbmRfc3RyID0gYXJndlswXTsKIAlpZiAoc3RycmNocihjb21tYW5kX3N0ciwgJy8nKSkK QEAgLTc3Nyw2ICs4NDIsMTMgQEAgc3RhdGljIGludCBjb21tb25faW5pdChpbnQgKmFyZ2MsIGNo YXIgKiphcmd2LAogCQkJaWYgKCFydW5fc2luZ2xlX3N1YnRlc3QpCiAJCQkJbGlzdF9zdWJ0ZXN0 cyA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBPUFRfREVTQ1JJQkVfU1VCVEVTVFM6CisJCQlp ZiAob3B0YXJnKQorCQkJCXJ1bl9zaW5nbGVfc3VidGVzdCA9IHN0cmR1cChvcHRhcmcpOworCQkJ bGlzdF9zdWJ0ZXN0cyA9IHRydWU7CisJCQlkZXNjcmliZV9zdWJ0ZXN0cyA9IHRydWU7CisJCQlw cmludF90ZXN0X2Rlc2NyaXB0aW9uKCk7CisJCQlicmVhazsKIAkJY2FzZSBPUFRfUlVOX1NVQlRF U1Q6CiAJCQlhc3NlcnQob3B0YXJnKTsKIAkJCWlmICghbGlzdF9zdWJ0ZXN0cykKQEAgLTkzNCwx MiArMTAwNiw0MSBAQCB2b2lkIGlndF9zaW1wbGVfaW5pdF9wYXJzZV9vcHRzKGludCAqYXJnYywg Y2hhciAqKmFyZ3YsCiAJCSAgICBleHRyYV9vcHRfaGFuZGxlciwgaGFuZGxlcl9kYXRhKTsKIH0K IAorc3RhdGljIHZvaWQgX2NsZWFyX2N1cnJlbnRfZGVzY3JpcHRpb24odm9pZCkgeworCV9fY3Vy cmVudF9kZXNjcmlwdGlvblswXSA9ICdcMCc7Cit9CisKK3N0YXRpYyB2b2lkIF9faWd0X3ByaW50 X2Rlc2NyaXB0aW9uKGNvbnN0IGNoYXIgKnN1YnRlc3RfbmFtZSwgY29uc3QgY2hhciAqZmlsZSwg aW50IGxpbmUpCit7CisJc3RydWN0IGRlc2NyaXB0aW9uX25vZGUgKmRlc2M7CisJY29uc3QgY2hh ciBpbmRlbnRbXSA9ICIgICI7CisJYm9vbCBoYXNfZG9jID0gZmFsc2U7CisKKworCXByaW50Zigi U1VCICVzICVzOiVkOlxuIiwgc3VidGVzdF9uYW1lLCBmaWxlLCBsaW5lKTsKKworCWlndF9saXN0 X2Zvcl9lYWNoKGRlc2MsICZzdWJncm91cF9kZXNjcmlwdGlvbnMsIGxpbmspIHsKKwkJcHJpbnRf bGluZV93cmFwcGluZyhpbmRlbnQsIGRlc2MtPmRlc2MpOworCQlwcmludGYoIlxuIik7CisJCWhh c19kb2MgPSB0cnVlOworCX0KKworCWlmIChfX2N1cnJlbnRfZGVzY3JpcHRpb25bMF0gIT0gJ1ww JykgeworCQlwcmludF9saW5lX3dyYXBwaW5nKGluZGVudCwgX19jdXJyZW50X2Rlc2NyaXB0aW9u KTsKKwkJcHJpbnRmKCJcbiIpOworCQloYXNfZG9jID0gdHJ1ZTsKKwl9CisKKwlpZiAoIWhhc19k b2MpCisJCXByaW50ZigiJXNOTyBET0NVTUVOVEFUSU9OIVxuXG4iLCBpbmRlbnQpOworfQorCiAv KgogICogTm90ZTogVGVzdGNhc2VzIHdoaWNoIHVzZSB0aGVzZSBoZWxwZXJzIE1VU1QgTk9UIG91 dHB1dCBhbnl0aGluZyB0byBzdGRvdXQKICAqIG91dHNpZGUgb2YgcGxhY2VzIHByb3RlY3RlZCBi eSBpZ3RfcnVuX3N1YnRlc3QgY2hlY2tzIC0gdGhlIHBpZ2xpdAogICogcnVubmVyIGFkZHMgZXZl cnkgbGluZSB0byB0aGUgc3VidGVzdCBsaXN0LgogICovCi1ib29sIF9faWd0X3J1bl9zdWJ0ZXN0 KGNvbnN0IGNoYXIgKnN1YnRlc3RfbmFtZSkKK2Jvb2wgX19pZ3RfcnVuX3N1YnRlc3QoY29uc3Qg Y2hhciAqc3VidGVzdF9uYW1lLCBjb25zdCBjaGFyICpmaWxlLCBjb25zdCBpbnQgbGluZSkKIHsK IAlpbnQgaTsKIApAQCAtOTU0LDE4ICsxMDU1LDI1IEBAIGJvb2wgX19pZ3RfcnVuX3N1YnRlc3Qo Y29uc3QgY2hhciAqc3VidGVzdF9uYW1lKQogCQkJaWd0X2V4aXQoKTsKIAkJfQogCi0JaWYgKGxp c3Rfc3VidGVzdHMpIHsKLQkJcHJpbnRmKCIlc1xuIiwgc3VidGVzdF9uYW1lKTsKLQkJcmV0dXJu IGZhbHNlOwotCX0KLQogCWlmIChydW5fc2luZ2xlX3N1YnRlc3QpIHsKLQkJaWYgKHV3aWxkbWF0 KHN1YnRlc3RfbmFtZSwgcnVuX3NpbmdsZV9zdWJ0ZXN0KSA9PSAwKQorCQlpZiAodXdpbGRtYXQo c3VidGVzdF9uYW1lLCBydW5fc2luZ2xlX3N1YnRlc3QpID09IDApIHsKKwkJCV9jbGVhcl9jdXJy ZW50X2Rlc2NyaXB0aW9uKCk7CiAJCQlyZXR1cm4gZmFsc2U7Ci0JCWVsc2UKKwkJfSBlbHNlIHsK IAkJCXJ1bl9zaW5nbGVfc3VidGVzdF9mb3VuZCA9IHRydWU7CisJCX0KIAl9CiAKKwlpZiAoZGVz Y3JpYmVfc3VidGVzdHMpIHsKKwkJX19pZ3RfcHJpbnRfZGVzY3JpcHRpb24oc3VidGVzdF9uYW1l LCBmaWxlLCBsaW5lKTsKKwkJX2NsZWFyX2N1cnJlbnRfZGVzY3JpcHRpb24oKTsKKwkJcmV0dXJu IGZhbHNlOworCX0gZWxzZSBpZiAobGlzdF9zdWJ0ZXN0cykgeworCQlwcmludGYoIiVzXG4iLCBz dWJ0ZXN0X25hbWUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisKIAlpZiAoc2tpcF9zdWJ0ZXN0 c19oZW5jZWZvcnRoKSB7CiAJCXByaW50ZigiJXNTdWJ0ZXN0ICVzOiAlcyVzXG4iLAogCQkgICAg ICAgKCFfX2lndF9wbGFpbl9vdXRwdXQpID8gIlx4MWJbMW0iIDogIiIsIHN1YnRlc3RfbmFtZSwK QEAgLTEwMTQsMTUgKzExMjIsMzIgQEAgYm9vbCBpZ3Rfb25seV9saXN0X3N1YnRlc3RzKHZvaWQp CiAJcmV0dXJuIGxpc3Rfc3VidGVzdHM7CiB9CiAKLXZvaWQgX19pZ3Rfc3VidGVzdF9ncm91cF9z YXZlKGludCAqc2F2ZSkKKworCit2b2lkIF9faWd0X3N1YnRlc3RfZ3JvdXBfc2F2ZShpbnQgKnNh dmUsIGludCAqZGVzYykKIHsKIAlhc3NlcnQodGVzdF93aXRoX3N1YnRlc3RzKTsKIAorCWlmIChf X2N1cnJlbnRfZGVzY3JpcHRpb25bMF0gIT0gJ1wwJykgeworCQlzdHJ1Y3QgZGVzY3JpcHRpb25f bm9kZSAqbmV3ID0gY2FsbG9jKDEsIHNpemVvZigqbmV3KSk7CisJCW1lbWNweShuZXctPmRlc2Ms IF9fY3VycmVudF9kZXNjcmlwdGlvbiwgc2l6ZW9mKF9fY3VycmVudF9kZXNjcmlwdGlvbikpOwor CQlpZ3RfbGlzdF9hZGRfdGFpbCgmbmV3LT5saW5rLCAmc3ViZ3JvdXBfZGVzY3JpcHRpb25zKTsK KwkJX2NsZWFyX2N1cnJlbnRfZGVzY3JpcHRpb24oKTsKKwkJKmRlc2MgPSB0cnVlOworCX0KKwog CSpzYXZlID0gc2tpcF9zdWJ0ZXN0c19oZW5jZWZvcnRoOwogfQogCi12b2lkIF9faWd0X3N1YnRl c3RfZ3JvdXBfcmVzdG9yZShpbnQgc2F2ZSkKK3ZvaWQgX19pZ3Rfc3VidGVzdF9ncm91cF9yZXN0 b3JlKGludCBzYXZlLCBpbnQgZGVzYykKIHsKKwlpZiAoZGVzYykgeworCQlzdHJ1Y3QgZGVzY3Jp cHRpb25fbm9kZSAqbGFzdCA9CisJCQlpZ3RfbGlzdF9sYXN0X2VudHJ5KCZzdWJncm91cF9kZXNj cmlwdGlvbnMsIGxhc3QsIGxpbmspOworCQlpZ3RfbGlzdF9kZWwoJmxhc3QtPmxpbmspOworCQlm cmVlKGxhc3QpOworCX0KKwogCXNraXBfc3VidGVzdHNfaGVuY2Vmb3J0aCA9IHNhdmU7CiB9CiAK QEAgLTEyMjksNiArMTM1NCwzNCBAQCBib29sIGlndF9jYW5fZmFpbCh2b2lkKQogCXJldHVybiAh dGVzdF93aXRoX3N1YnRlc3RzIHx8IGluX2ZpeHR1cmUgfHwgaW5fc3VidGVzdDsKIH0KIAorLyoq CisgKiBpZ3RfZGVzY3JpYmVfZjoKKyAqIEBmbXQ6IGZvcm1hdCBzdHJpbmcgY29udGFpbmluZyBk ZXNjcmlwdGlvbgorICogQC4uLjogYXJndW1lbnQgdXNlZCBieSB0aGUgZm9ybWF0IHN0cmluZwor ICoKKyAqIEF0dGFjaCBhIGRlc2NyaXB0aW9uIHRvIHRoZSBmb2xsb3dpbmcgI2lndF9zdWJ0ZXN0 IG9yICNpZ3Rfc3VidGVzdF9ncm91cAorICogYmxvY2suCisgKgorICogQ2hlY2sgI2lndF9kZXNj cmliZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLwordm9pZCBpZ3RfZGVzY3JpYmVfZihjb25z dCBjaGFyICpmbXQsIC4uLikKK3sKKwlpbnQgcmV0OworCXZhX2xpc3QgYXJnczsKKworCWlmICgh ZGVzY3JpYmVfc3VidGVzdHMpCisJCXJldHVybjsKKworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisK KwlyZXQgPSB2c25wcmludGYoX19jdXJyZW50X2Rlc2NyaXB0aW9uLCBzaXplb2YoX19jdXJyZW50 X2Rlc2NyaXB0aW9uKSwgZm10LCBhcmdzKTsKKworCXZhX2VuZChhcmdzKTsKKworCWFzc2VydChy ZXQgPCBzaXplb2YoX19jdXJyZW50X2Rlc2NyaXB0aW9uKSk7Cit9CisKIHN0YXRpYyBib29sIHJ1 bm5pbmdfdW5kZXJfZ2RiKHZvaWQpCiB7CiAJY2hhciBwYXRobmFtZVszMF0sIGJ1ZlsxMDI0XTsK QEAgLTE1NDAsNyArMTY5Myw3IEBAIHZvaWQgaWd0X2V4aXQodm9pZCkKIAkJZ19rZXlfZmlsZV9m cmVlKGlndF9rZXlfZmlsZSk7CiAKIAlpZiAocnVuX3NpbmdsZV9zdWJ0ZXN0ICYmICFydW5fc2lu Z2xlX3N1YnRlc3RfZm91bmQpIHsKLQkJaWd0X3dhcm4oIlVua25vd24gc3VidGVzdDogJXNcbiIs IHJ1bl9zaW5nbGVfc3VidGVzdCk7CisJCWlndF9jcml0aWNhbCgiVW5rbm93biBzdWJ0ZXN0OiAl c1xuIiwgcnVuX3NpbmdsZV9zdWJ0ZXN0KTsKIAkJZXhpdChJR1RfRVhJVF9JTlZBTElEKTsKIAl9 CiAKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29yZS5oIGIvbGliL2lndF9jb3JlLmgKaW5kZXggODhh OTVlYzIuLjFiMzdmMTQyIDEwMDY0NAotLS0gYS9saWIvaWd0X2NvcmUuaAorKysgYi9saWIvaWd0 X2NvcmUuaApAQCAtMTc0LDcgKzE3NCw3IEBAIGludCBpZ3Rfc3VidGVzdF9pbml0X3BhcnNlX29w dHMoaW50ICphcmdjLCBjaGFyICoqYXJndiwKICNkZWZpbmUgaWd0X3N1YnRlc3RfaW5pdChhcmdj LCBhcmd2KSBcCiAJaWd0X3N1YnRlc3RfaW5pdF9wYXJzZV9vcHRzKCZhcmdjLCBhcmd2LCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKIAotYm9vbCBfX2lndF9ydW5fc3VidGVzdChjb25z dCBjaGFyICpzdWJ0ZXN0X25hbWUpOworYm9vbCBfX2lndF9ydW5fc3VidGVzdChjb25zdCBjaGFy ICpzdWJ0ZXN0X25hbWUsIGNvbnN0IGNoYXIgKmZpbGUsIGNvbnN0IGludCBsaW5lKTsKICNkZWZp bmUgX19pZ3RfdG9rZW5jYXQyKHgsIHkpIHggIyMgeQogCiAvKioKQEAgLTE5OCwxNCArMTk4LDE0 IEBAIGJvb2wgX19pZ3RfcnVuX3N1YnRlc3QoY29uc3QgY2hhciAqc3VidGVzdF9uYW1lKTsKICAq CiAgKiBUaGlzIGlzIGEgc2ltcGxlciB2ZXJzaW9uIG9mIGlndF9zdWJ0ZXN0X2YoKQogICovCi0j ZGVmaW5lIGlndF9zdWJ0ZXN0KG5hbWUpIGZvciAoOyBfX2lndF9ydW5fc3VidGVzdCgobmFtZSkp ICYmIFwKKyNkZWZpbmUgaWd0X3N1YnRlc3QobmFtZSkgZm9yICg7IF9faWd0X3J1bl9zdWJ0ZXN0 KChuYW1lKSwgX19GSUxFX18sIF9fTElORV9fKSAmJiBcCiAJCQkJICAgKHNpZ3NldGptcChpZ3Rf c3VidGVzdF9qbXBidWYsIDEpID09IDApOyBcCiAJCQkJICAgaWd0X3N1Y2Nlc3MoKSkKICNkZWZp bmUgX19pZ3Rfc3VidGVzdF9mKHRtcCwgZm9ybWF0Li4uKSBcCiAJZm9yIChjaGFyIHRtcCBbMjU2 XTsgXAogCSAgICAgc25wcmludGYoIHRtcCAsIHNpemVvZiggdG1wICksIFwKIAkJICAgICAgZm9y bWF0KSwgXAotCSAgICAgX19pZ3RfcnVuX3N1YnRlc3QoIHRtcCApICYmIFwKKwkgICAgIF9faWd0 X3J1bl9zdWJ0ZXN0KHRtcCwgX19GSUxFX18sIF9fTElORV9fKSAmJiBcCiAJICAgICAoc2lnc2V0 am1wKGlndF9zdWJ0ZXN0X2ptcGJ1ZiwgMSkgPT0gMCk7IFwKIAkgICAgIGlndF9zdWNjZXNzKCkp CiAKQEAgLTIyNyw4ICsyMjcsOCBAQCBib29sIF9faWd0X3J1bl9zdWJ0ZXN0KGNvbnN0IGNoYXIg KnN1YnRlc3RfbmFtZSk7CiBjb25zdCBjaGFyICppZ3Rfc3VidGVzdF9uYW1lKHZvaWQpOwogYm9v bCBpZ3Rfb25seV9saXN0X3N1YnRlc3RzKHZvaWQpOwogCi12b2lkIF9faWd0X3N1YnRlc3RfZ3Jv dXBfc2F2ZShpbnQgKik7Ci12b2lkIF9faWd0X3N1YnRlc3RfZ3JvdXBfcmVzdG9yZShpbnQpOwor dm9pZCBfX2lndF9zdWJ0ZXN0X2dyb3VwX3NhdmUoaW50ICosIGludCAqKTsKK3ZvaWQgX19pZ3Rf c3VidGVzdF9ncm91cF9yZXN0b3JlKGludCwgaW50KTsKIC8qKgogICogaWd0X3N1YnRlc3RfZ3Jv dXA6CiAgKgpAQCAtMjQ1LDExICsyNDUsMTQgQEAgdm9pZCBfX2lndF9zdWJ0ZXN0X2dyb3VwX3Jl c3RvcmUoaW50KTsKICAqIGdyb3VwIHdpbGwgZmFpbCBvciBza2lwLiBTdWJ0ZXN0IGdyb3VwcyBj YW4gYmUgYXJiaXRyYXJpbHkgbmVzdGVkLgogICovCiAjZGVmaW5lIGlndF9zdWJ0ZXN0X2dyb3Vw IGZvciAoaW50IGlndF90b2tlbmNhdChfX3RtcGludCxfX0xJTkVfXykgPSAwLCBcCi0JCQkgICAg ICAgaWd0X3Rva2VuY2F0KF9fc2F2ZSxfX0xJTkVfXykgPSAwOyBcCisJCQkgICAgICAgaWd0X3Rv a2VuY2F0KF9fc2F2ZSxfX0xJTkVfXykgPSAwLCBcCisJCQkgICAgICAgaWd0X3Rva2VuY2F0KF9f ZGVzYyxfX0xJTkVfXykgPSAwOyBcCiAJCQkgICAgICAgaWd0X3Rva2VuY2F0KF9fdG1waW50LF9f TElORV9fKSA8IDEgJiYgXAotCQkJICAgICAgIChfX2lndF9zdWJ0ZXN0X2dyb3VwX3NhdmUoJiBp Z3RfdG9rZW5jYXQoX19zYXZlLF9fTElORV9fKSApLCB0cnVlKTsgXAorCQkJICAgICAgIChfX2ln dF9zdWJ0ZXN0X2dyb3VwX3NhdmUoJiBpZ3RfdG9rZW5jYXQoX19zYXZlLF9fTElORV9fKSwgXAor CQkJCQkJCSAmIGlndF90b2tlbmNhdChfX2Rlc2MsX19MSU5FX18pICksIHRydWUpOyBcCiAJCQkg ICAgICAgaWd0X3Rva2VuY2F0KF9fdG1waW50LF9fTElORV9fKSArKywgXAotCQkJICAgICAgIF9f aWd0X3N1YnRlc3RfZ3JvdXBfcmVzdG9yZShpZ3RfdG9rZW5jYXQoX19zYXZlLF9fTElORV9fKSAp KQorCQkJICAgICAgIF9faWd0X3N1YnRlc3RfZ3JvdXBfcmVzdG9yZShpZ3RfdG9rZW5jYXQoX19z YXZlLF9fTElORV9fKSwgXAorCQkJCQkJCSAgIGlndF90b2tlbmNhdChfX2Rlc2MsX19MSU5FX18p KSkKIAogLyoqCiAgKiBpZ3RfbWFpbl9hcmdzOgpAQCAtMzg1LDYgKzM4OCwxMjQgQEAgc3RhdGlj IGlubGluZSB2b2lkIGlndF9pZ25vcmVfd2Fybihib29sIHZhbHVlKQogewogfQogCitfX2F0dHJp YnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpCit2b2lkIGlndF9kZXNjcmliZV9mKGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsKKworLyoqCisgKiBpZ3RfZGVzY3JpYmU6CisgKiBAZHNjOiBzdHJp bmcgY29udGFpbmluZyBkZXNjcmlwdGlvbgorICoKKyAqIEF0dGFjaCBhIGRlc2NyaXB0aW9uIHRv IHRoZSBmb2xsb3dpbmcgI2lndF9zdWJ0ZXN0IG9yICNpZ3Rfc3VidGVzdF9ncm91cAorICogYmxv Y2suCisgKgorICogVGhlIGRlc2NyaXB0aW9uIHNob3VsZCBjb21wbGVtZW50IHRoZSB0ZXN0L3N1 YnRlc3QgbmFtZSBhbmQgcHJvdmlkZSBtb3JlCisgKiBjb250ZXh0IG9uIHdoYXQgaXMgYmVpbmcg dGVzdGVkLiBJdCBzaG91bGQgZXhwbGFpbiB0aGUgaWRlYSBvZiB0aGUgdGVzdCBhbmQKKyAqIGRv IG5vdCBtZW50aW9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIHNvIHRoYXQgaXQgbmV2ZXIgZ29l cyBvdXQgb2YgZGF0ZS4KKyAqCisgKiBETzoKKyAqICAqIGZvY3VzIG9uIHRoZSB1c2Vyc3BhY2Un cyBwZXJzcGVjdGl2ZQorICogICogdHJ5IHRvIGNhcHR1cmUgdGhlIHJlYXNvbiBmb3IgdGhlIHRl c3QncyBleGlzdGVuY2UKKyAqICAqIGJlIGJyaWVmCisgKgorICogRE9OJ1Q6CisgKiAgKiB0cnkg dG8gdHJhbnNsYXRlIHRoZSBjb2RlIGludG8gRW5nbGlzaAorICogICogZXhwbGFpbiBhbGwgdGhl IGNoZWNrcyB0aGUgdGVzdCBkb2VzCisgKiAgKiBkZWx2ZSBvbiB0aGUgaW1wbGVtZW50YXRpb24K KyAqCisgKiBHb29kIGV4YW1wbGVzOgorICogICogIm1ha2Ugc3VyZSB0aGF0IGxlZ2FjeSBjdXJz b3IgdXBkYXRlcyBkbyBub3Qgc3RhbGwgYXRvbWljIGNvbW1pdHMiCisgKiAgKiAiY2hlY2sgdGhh dCBhdG9taWMgdXBkYXRlcyBvZiBtYW55IHBsYW5lcyBhcmUgaW5kZWVkIGF0b21pYyBhbmQgdGFr ZQorICogICAgIGVmZmVjdCBpbW1lZGlhdGVseSBhZnRlciB0aGUgY29tbWl0IgorICogICogIm1h a2Ugc3VyZSB0aGF0IHRoZSBtZXRhLWRhdGEgZXhwb3NlZCBieSB0aGUga2VybmVsIHRvIHRoZSB1 c2Vyc3BhY2UKKyAqICAgICBpcyBjb3JyZWN0IGFuZCBtYXRjaGVzIHRoZSB1c2VkIEVESUQiCisg KgorICogQmFkIGV4YW1wbGVzOgorICogICogInNwYXduIDEwIHRocmVhZHMsIGVhY2ggcGlubmlu ZyBjcHUgY29yZSB3aXRoIGEgYnVzeSBsb29wLi4uIgorICogICogInJhbmRvbWx5IGdlbmVyYXRl IGhvbGVzIGluIGEgcHJpbWFyeSBwbGFuZSB0aGVuIHRyeSB0byBjb3ZlciBlYWNoIGhvbGUKKyAq ICAgIHdpdGggYSBwbGFuZSBhbmQgbWFrZSBzdXJlIHRoYXQgQ1JDIG1hdGNoZXMsIGRvIDI1IGdh emlsbGlvbiByb3VuZHMgb2YKKyAqICAgIHRoYXQuLi4iCisgKgorICoKKyAqIFJlc3VsdGluZyAj aWd0X3N1YnRlc3QgZG9jdW1lbnRhdGlvbiBpcyBhIGNvbmNhdGVuYXRpb24gb2YgaXRzIG93bgor ICogZGVzY3JpcHRpb24gYW5kIGFsbCB0aGUgcGFyZW50aW5nICNpZ3Rfc3VidGVzdF9ncm91cCBk ZXNjcmlwdGlvbnMsIHN0YXJ0aW5nCisgKiBmcm9tIHRoZSBvdXRlcm1vc3Qgb25lLiBFeGFtcGxl OgorICoKKyAqIHxbPCEtLSBsYW5ndWFnZT0iQyIgLS0+CisgKiAjaW5jbHVkZSAiaWd0LmgiCisg KgorICogSUdUX1RFU1RfREVTQ1JJUFRJT04oIkdsb2JhbCBkZXNjcmlwdGlvbiBvZiB0aGUgd2hv bGUgYmluYXJ5Iik7CisgKiBpZ3RfbWFpbgorICogeworICogCWlndF9kZXNjcmliZSgiRGVzYyBv ZiB0aGUgc3ViZ3JvdXAgd2l0aCBBIGFuZCBCIik7CisgKiAJaWd0X3N1YnRlc3RfZ3JvdXAgewor ICogCQlpZ3RfZGVzY3JpYmUoIkRlc2Mgb2YgdGhlIHN1YnRlc3QgQSIpOworICogCQlpZ3Rfc3Vi dGVzdCgic3VidGVzdC1hIikgeworICogCQkJLi4uCisgKiAJCX0KKyAqCisgKiAJCWlndF9kZXNj cmliZSgiRGVzYyBvZiB0aGUgc3VidGVzdCBCIik7CisgKiAJCWlndF9zdWJ0ZXN0KCJzdWJ0ZXN0 LWIiKSB7CisgKiAJCQkuLi4KKyAqIAkJfQorICogCX0KKyAqCisgKiAJaWd0X2Rlc2NyaWJlKCJE ZXNjIG9mIHRoZSBzdWJ0ZXN0IEMiKTsKKyAqIAlpZ3Rfc3VidGVzdCgic3VidGVzdC1jIikgewor ICogCQkuLi4KKyAqIAl9CisgKiB9CisgKiBdfAorICoKKyAqIEl0J3Mgd2lsbCBhY2Nlc3NpYmxl IHZpYSAtLWRlc2NyaWJlIGNvbW1hbmQgbGluZSBzd2l0Y2g6CisgKgorICogfFsKKyAqICQgdGVz dCAtLWRlc2NyaWJlCisgKiBHbG9iYWwgZGVzY3JpcHRpb24gb2YgdGhlIHdob2xlIGJpbmFyeQor ICoKKyAqIFNVQiBzdWJ0ZXN0LWEgdGVzdC5jOjU6CisgKiAgIERlc2Mgb2YgdGhlIHN1Ymdyb3Vw IHdpdGggQSBhbmQgQgorICoKKyAqICAgRGVzYyBvZiB0aGUgc3VidGVzdCBBCisgKgorICogU1VC IHN1YnRlc3QtYiB0ZXN0LmM6MTA6CisgKiAgIERlc2Mgb2YgdGhlIHN1Ymdyb3VwIHdpdGggQSBh bmQgQgorICoKKyAqICAgRGVzYyBvZiB0aGUgc3VidGVzdCBCCisgKgorICogU1VCIHN1YnRlc3Qt YyB0ZXN0LmM6MTU6CisgKiAgIERlc2Mgb2YgdGhlIHN1YnRlc3QgQworICogXXwKKyAqCisgKiBF dmVyeSBzaW5nbGUgI2lndF9zdWJ0ZXN0IGRvZXMgbm90IGhhdmUgdG8gYmUgcHJlY2VkZWQgd2l0 aCBhICNpZ3RfZGVzY3JpYmUKKyAqIGFzIGxvbmcgYXMgaXQgaGFzIGdvb2QtZW5vdWdoIGV4cGxh bmF0aW9uIHByb3ZpZGVkIG9uIHRoZSAjaWd0X3N1YnRlc3RfZ3JvdXAKKyAqIGxldmVsLgorICoK KyAqIEV4YW1wbGU6CisgKgorICogfFs8IS0tIGxhbmd1YWdlPSJDIiAtLT4KKyAqICNpbmNsdWRl ICJpZ3QuaCIKKyAqCisgKiBpZ3RfbWFpbgorICogeworICogCWlndF9kZXNjcmliZSgiY2hlY2sg eHl6IHdpdGggZGlmZmVyZW50IHRpbGluZ3MiKTsKKyAqIAlpZ3Rfc3VidGVzdF9ncm91cCB7Cisg KiAJCS8vIG5vIG5lZWQgZm9yIGV4dHJhIGRlc2NyaXB0aW9uLCBncm91cCBpcyBlbm91Z2ggYW5k IHRpbGluZyBpcworICogCQkvLyBvYnZpb3VzIGZyb20gdGhlIHRlc3QgbmFtZQorICogCQlpZ3Rf c3VidGVzdCgiZm9vLXRpbGluZy14IikgeworICogCQkJLi4uCisgKiAJCX0KKyAqCisgKiAJCWln dF9zdWJ0ZXN0KCJmb28tdGlsaW5nLXkiKSB7CisgKiAJCQkuLi4KKyAqIAkJfQorICogCX0KKyAq IH0KKyAqIF18CisgKgorICovCisjZGVmaW5lIGlndF9kZXNjcmliZShkc2MpIFwKKwlpZ3RfZGVz Y3JpYmVfZigiJXMiLCBkc2MpCisKIC8qKgogICogaWd0X2Fzc2VydDoKICAqIEBleHByOiBjb25k aXRpb24gdG8gdGVzdApkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL2lndF9kZXNjcmliZS5jIGIvbGli L3Rlc3RzL2lndF9kZXNjcmliZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li5hNDQ1N2ZhOQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi90ZXN0cy9pZ3RfZGVzY3JpYmUuYwpA QCAtMCwwICsxLDI4MCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0 aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisg KiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks CisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisK KyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0 ZGxpYi5oPgorCisjaW5jbHVkZSAiZHJtdGVzdC5oIgorI2luY2x1ZGUgImlndF90ZXN0c19jb21t b24uaCIKKworSUdUX1RFU1RfREVTQ1JJUFRJT04oInRoZSB0b3AgbGV2ZWwgZGVzY3JpcHRpb24i KTsKK3N0YXRpYyB2b2lkIGZha2VfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKwlpZ3Rf c3VidGVzdF9pbml0KGFyZ2MsIGFyZ3YpOworCisJaWd0X2Rlc2NyaWJlKCJCYXNpYyBBIik7CisJ aWd0X3N1YnRlc3QoIkEiKQorCQk7CisKKwlpZ3RfZml4dHVyZQorCQlwcmludGYoInNob3VsZCBu b3QgYmUgZXhlY3V0ZWQhXG4iKTsKKworCWlndF9kZXNjcmliZSgiR3JvdXAgd2l0aCBCLCBDICYg RCIpOworCWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJaWd0X2Rlc2NyaWJlKCJCYXNpYyBCIik7CisJ CWlndF9zdWJ0ZXN0KCJCIikKKwkJCTsKKworCQlpZiAoIWlndF9vbmx5X2xpc3Rfc3VidGVzdHMo KSkKKwkJCXByaW50Zigic2hvdWxkIG5vdCBiZSBleGVjdXRlZCFcbiIpOworCisJCWlndF9kZXNj cmliZSgiR3JvdXAgd2l0aCBDICYgRCIpOworCQlpZ3Rfc3VidGVzdF9ncm91cCB7CisJCQlpZ3Rf ZGVzY3JpYmUoIkJhc2ljIEMiKTsKKwkJCWlndF9zdWJ0ZXN0KCJDIikKKwkJCQlwcmludGYoInNo b3VsZCBub3QgYmUgZXhlY3V0ZWQhXG4iKTsKKworCQkJLy8gTk8gRE9DCisJCQlpZ3Rfc3VidGVz dCgiRCIpCisJCQkJOworCQl9CisJfQorCisJLy8gTk8gRE9DCisJaWd0X3N1YnRlc3RfZ3JvdXAg eworCQkvLyBOTyBET0MKKwkJaWd0X3N1YnRlc3QoIkUiKQorCQkJOworCX0KKworCS8vIE5PIERP QworCWlndF9zdWJ0ZXN0KCJGIikKKwkJOworCisJaWd0X2Rlc2NyaWJlKCJ0aGlzIGRlc2NyaXB0 aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmIG5pY2VseSBpbiB0aGUg dGVybWluYWwgIgorCQkgICAgICJ0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRo YXQgaXQgd3JhcHMgaXRzZWxmIG5pY2VseSBpbiB0aGUgdGVybWluYWwgIgorCQkgICAgICJ0aGlz IGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmIG5pY2Vs eSBpbiB0aGUgdGVybWluYWwgIgorCQkgICAgICJ0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBz byBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmIG5pY2VseSBpbiB0aGUgdGVybWluYWwgIgorCQkg ICAgICJ0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRz ZWxmIG5pY2VseSBpbiB0aGUgdGVybWluYWwgIgorCQkgICAgICJ0aGlzIGRlc2NyaXB0aW9uIHNo b3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmIG5pY2VseSBpbiB0aGUgdGVybWlu YWwiKTsKKwlpZ3Rfc3VidGVzdCgiRyIpCisJCTsKKworCWlndF9kZXNjcmliZSgidmVyeWxvbmd3 b3JkdGhhdHNob3VkbGJlcHJpbnRlZGV2ZW50aG91Z2hpdHNwYXN0dGhld3JwcGluZ2xpbWl0Igor CQkgICAgICJ2ZXJ5bG9uZ3dvcmR0aGF0c2hvdWRsYmVwcmludGVkZXZlbnRob3VnaGl0c3Bhc3R0 aGV3cmFwcGluZ2xpbWl0ICIKKwkJICAgICAidmVyeWxvbmd3b3JkdGhhdHNob3VkbGJlcHJpbnRl ZGV2ZW50aG91Z2hpdHNwYXN0dGhld3JhcHBpbmdsaW1pdCIKKwkJICAgICAidmVyeWxvbmd3b3Jk dGhhdHNob3VkbGJlcHJpbnRlZGV2ZW50aG91Z2hpdHNwYXN0dGhld3JhcHBpbmdsaW1pdCIpOwor CWlndF9zdWJ0ZXN0KCJGIikKKwkJOworCisJaWd0X2V4aXQoKTsKK30KKworc3RhdGljIGNvbnN0 IGNoYXIgREVTQ1JJQkVfQUxMX09VVFBVVFtdID0gXAorCSJ0aGUgdG9wIGxldmVsIGRlc2NyaXB0 aW9uXG4iCisJIlxuIgorCSJTVUIgQSAuLi9saWIvdGVzdHMvaWd0X2Rlc2NyaWJlLmM6MzY6XG4i CisJIiAgQmFzaWMgQVxuIgorCSJcbiIKKwkiU1VCIEIgLi4vbGliL3Rlc3RzL2lndF9kZXNjcmli ZS5jOjQ1OlxuIgorCSIgIEdyb3VwIHdpdGggQiwgQyAmIERcbiIKKwkiXG4iCisJIiAgQmFzaWMg QlxuIgorCSJcbiIKKwkiU1VCIEMgLi4vbGliL3Rlc3RzL2lndF9kZXNjcmliZS5jOjU0OlxuIgor CSIgIEdyb3VwIHdpdGggQiwgQyAmIERcbiIKKwkiXG4iCisJIiAgR3JvdXAgd2l0aCBDICYgRFxu IgorCSJcbiIKKwkiICBCYXNpYyBDXG4iCisJIlxuIgorCSJTVUIgRCAuLi9saWIvdGVzdHMvaWd0 X2Rlc2NyaWJlLmM6NTg6XG4iCisJIiAgR3JvdXAgd2l0aCBCLCBDICYgRFxuIgorCSJcbiIKKwki ICBHcm91cCB3aXRoIEMgJiBEXG4iCisJIlxuIgorCSJTVUIgRSAuLi9saWIvdGVzdHMvaWd0X2Rl c2NyaWJlLmM6NjY6XG4iCisJIiAgTk8gRE9DVU1FTlRBVElPTiFcbiIKKwkiXG4iCisJIlNVQiBG IC4uL2xpYi90ZXN0cy9pZ3RfZGVzY3JpYmUuYzo3MTpcbiIKKwkiICBOTyBET0NVTUVOVEFUSU9O IVxuIgorCSJcbiIKKwkiU1VCIEcgLi4vbGliL3Rlc3RzL2lndF9kZXNjcmliZS5jOjgwOlxuIgor CSIgIHRoaXMgZGVzY3JpcHRpb24gc2hvdWxkIGJlIHNvIGxvbmcgdGhhdCBpdCB3cmFwcyBpdHNl bGYgbmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0aGlzXG4iCisJIiAgZGVzY3JpcHRpb24gc2hvdWxk IGJlIHNvIGxvbmcgdGhhdCBpdCB3cmFwcyBpdHNlbGYgbmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0 aGlzIGRlc2NyaXB0aW9uXG4iCisJIiAgc2hvdWxkIGJlIHNvIGxvbmcgdGhhdCBpdCB3cmFwcyBp dHNlbGYgbmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBz b1xuIgorCSIgIGxvbmcgdGhhdCBpdCB3cmFwcyBpdHNlbGYgbmljZWx5IGluIHRoZSB0ZXJtaW5h bCB0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXRcbiIKKwkiICB3cmFw cyBpdHNlbGYgbmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBi ZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmXG4iCisJIiAgbmljZWx5IGluIHRoZSB0ZXJt aW5hbFxuIgorCSJcbiIKKwkiU1VCIEYgLi4vbGliL3Rlc3RzL2lndF9kZXNjcmliZS5jOjg3Olxu IgorCSIgIHZlcnlsb25nd29yZHRoYXRzaG91ZGxiZXByaW50ZWRldmVudGhvdWdoaXRzcGFzdHRo ZXdycHBpbmdsaW1pdHZlcnlsb25nd29yZHRoYXRzaG91ZGxiZXByaW50ZWRldmVudGhvdWdoaXRz cGFzdHRoZXdyYXBwaW5nbGltaXRcbiIKKwkiICB2ZXJ5bG9uZ3dvcmR0aGF0c2hvdWRsYmVwcmlu dGVkZXZlbnRob3VnaGl0c3Bhc3R0aGV3cmFwcGluZ2xpbWl0dmVyeWxvbmd3b3JkdGhhdHNob3Vk bGJlcHJpbnRlZGV2ZW50aG91Z2hpdHNwYXN0dGhld3JhcHBpbmdsaW1pdFxuXG4iOworCitzdGF0 aWMgY29uc3QgY2hhciBKVVNUX0NfT1VUUFVUW10gPSBcCisJInRoZSB0b3AgbGV2ZWwgZGVzY3Jp cHRpb25cbiIKKwkiXG4iCisJIlNVQiBDIC4uL2xpYi90ZXN0cy9pZ3RfZGVzY3JpYmUuYzo1NDpc biIKKwkiICBHcm91cCB3aXRoIEIsIEMgJiBEXG4iCisJIlxuIgorCSIgIEdyb3VwIHdpdGggQyAm IERcbiIKKwkiXG4iCisJIiAgQmFzaWMgQ1xuIgorCSJcbiI7CisKK3N0YXRpYyB2b2lkIGFzc2Vy dF9waXBlX2VtcHR5KGludCBmZCkKK3sKKwljaGFyIGJ1Zls1XTsKKwlpbnRlcm5hbF9hc3NlcnQo MCA9PSByZWFkKGZkLCBidWYsIHNpemVvZihidWYpKSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlYWRf d2hvbGVfcGlwZShpbnQgZmQsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbikKK3sKKwlzc2l6ZV90 IHJlYWRsZW47CisJb2ZmX3Qgb2Zmc2V0OworCisJb2Zmc2V0ID0gMDsKKwl3aGlsZSAoKHJlYWRs ZW4gPSByZWFkKGZkLCBidWYrb2Zmc2V0LCBidWZsZW4tb2Zmc2V0KSkpIHsKKwkJaWYgKHJlYWRs ZW4gPT0gLTEpIHsKKwkJCWlmIChlcnJubyA9PSBFSU5UUikgeworCQkJCWNvbnRpbnVlOworCQkJ fSBlbHNlIHsKKwkJCQlwcmludGYoInJlYWQgZmFpbGVkIHdpdGggJXNcbiIsIHN0cmVycm9yKGVy cm5vKSk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJfQorCQlpbnRlcm5hbF9hc3NlcnQocmVhZGxl biAhPSAtMSk7CisJCW9mZnNldCArPSByZWFkbGVuOworCX0KK30KKworc3RhdGljIHBpZF90IGRv X2ZvcmsoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBpbnQgKm91dCwgaW50ICplcnIpCit7CisJaW50 IG91dGZkWzJdLCBlcnJmZFsyXTsKKwlwaWRfdCBwaWQ7CisKKwlpbnRlcm5hbF9hc3NlcnQocGlw ZShvdXRmZCkgIT0gLTEpOworCWludGVybmFsX2Fzc2VydChwaXBlKGVycmZkKSAhPSAtMSk7CisK KwlwaWQgPSBmb3JrKCk7CisJaW50ZXJuYWxfYXNzZXJ0KHBpZCAhPSAtMSk7CisKKwlpZiAocGlk ID09IDApIHsKKwkJd2hpbGUgKGR1cDIob3V0ZmRbMV0sIFNURE9VVF9GSUxFTk8pID09IC0xICYm IGVycm5vID09IEVJTlRSKSB7fQorCQl3aGlsZSAoZHVwMihlcnJmZFsxXSwgU1RERVJSX0ZJTEVO TykgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHt9CisKKwkJY2xvc2Uob3V0ZmRbMF0pOworCQlj bG9zZShvdXRmZFsxXSk7CisJCWNsb3NlKGVycmZkWzBdKTsKKwkJY2xvc2UoZXJyZmRbMV0pOwor CisJCWZha2VfbWFpbihhcmdjLCBhcmd2KTsKKworCQlleGl0KC0xKTsKKwl9IGVsc2UgeworCQkv KiBjbG9zZSB0aGUgd3JpdGluZyBlbmRzICovCisJCWNsb3NlKG91dGZkWzFdKTsKKwkJY2xvc2Uo ZXJyZmRbMV0pOworCisJCSpvdXQgPSBvdXRmZFswXTsKKwkJKmVyciA9IGVycmZkWzBdOworCisJ CXJldHVybiBwaWQ7CisJfQorfQorCitzdGF0aWMgaW50IF93YWl0KHBpZF90IHBpZCwgaW50ICpz dGF0dXMpIHsKKwlpbnQgcmV0OworCisJZG8geworCQlyZXQgPSB3YWl0cGlkKHBpZCwgc3RhdHVz LCAwKTsKKwl9IHdoaWxlIChyZXQgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOworCisJcmV0dXJu IHJldDsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNoYXIgcHJv Z1tdID0gImlndF9kZXNjcmliZSI7CisJaW50IHN0YXR1czsKKwlpbnQgb3V0ZmQsIGVycmZkOwor CisJLyogZGVzY3JpYmUgYWxsIHN1YnRlc3QgKi8geworCQlzdGF0aWMgY2hhciBvdXRbNDA5Nl07 CisJCWNoYXIgYXJnW10gPSAiLS1kZXNjcmliZSI7CisJCWNoYXIgKmZha2VfYXJndltdID0ge3By b2csIGFyZ307CisJCWludCBmYWtlX2FyZ2MgPSBBUlJBWV9TSVpFKGZha2VfYXJndik7CisKKwkJ cGlkX3QgcGlkID0gZG9fZm9yayhmYWtlX2FyZ2MsIGZha2VfYXJndiwgJm91dGZkLCAmZXJyZmQp OworCisJCXJlYWRfd2hvbGVfcGlwZShvdXRmZCwgb3V0LCBzaXplb2Yob3V0KSk7CisJCWFzc2Vy dF9waXBlX2VtcHR5KGVycmZkKTsKKworCQlpbnRlcm5hbF9hc3NlcnQoX3dhaXQocGlkLCAmc3Rh dHVzKSAhPSAtMSk7CisJCWludGVybmFsX2Fzc2VydChXSUZFWElURUQoc3RhdHVzKSk7CisJCWlu dGVybmFsX2Fzc2VydChXRVhJVFNUQVRVUyhzdGF0dXMpID09IElHVF9FWElUX1NVQ0NFU1MpOwor CQlpbnRlcm5hbF9hc3NlcnQoMCA9PSBzdHJjbXAoREVTQ1JJQkVfQUxMX09VVFBVVCwgb3V0KSk7 CisKKwkJY2xvc2Uob3V0ZmQpOworCQljbG9zZShlcnJmZCk7CisJfQorCisJLyogZGVzY3JpYmUg QyB1c2luZyBhIHBhdHRlcm4gKi8geworCQlzdGF0aWMgY2hhciBvdXRbNDA5Nl07CisJCWNoYXIg YXJnW10gPSAiLS1kZXNjcmliZT1DIjsKKwkJY2hhciAqZmFrZV9hcmd2W10gPSB7cHJvZywgYXJn fTsKKwkJaW50IGZha2VfYXJnYyA9IEFSUkFZX1NJWkUoZmFrZV9hcmd2KTsKKworCQlwaWRfdCBw aWQgPSBkb19mb3JrKGZha2VfYXJnYywgZmFrZV9hcmd2LCAmb3V0ZmQsICZlcnJmZCk7CisKKwkJ cmVhZF93aG9sZV9waXBlKG91dGZkLCBvdXQsIHNpemVvZihvdXQpKTsKKwkJYXNzZXJ0X3BpcGVf ZW1wdHkoZXJyZmQpOworCisJCWludGVybmFsX2Fzc2VydChfd2FpdChwaWQsICZzdGF0dXMpICE9 IC0xKTsKKwkJaW50ZXJuYWxfYXNzZXJ0KFdFWElUU1RBVFVTKHN0YXR1cykgPT0gSUdUX0VYSVRf U1VDQ0VTUyk7CisJCWludGVybmFsX2Fzc2VydCgwID09IHN0cmNtcChKVVNUX0NfT1VUUFVULCBv dXQpKTsKKworCQljbG9zZShvdXRmZCk7CisJCWNsb3NlKGVycmZkKTsKKwl9CisKKwkvKiBmYWls IGRlc2NyaWJpbmcgd2l0aCBhIGJhZCBwYXR0ZXJuICovIHsKKwkJc3RhdGljIGNoYXIgZXJyWzQw OTZdOworCQljaGFyIGFyZ1tdID0gIi0tZGVzY3JpYmU9WiI7CisJCWNoYXIgKmZha2VfYXJndltd ID0ge3Byb2csIGFyZ307CisJCWludCBmYWtlX2FyZ2MgPSBBUlJBWV9TSVpFKGZha2VfYXJndik7 CisKKwkJcGlkX3QgcGlkID0gZG9fZm9yayhmYWtlX2FyZ2MsIGZha2VfYXJndiwgJm91dGZkLCAm ZXJyZmQpOworCisJCXJlYWRfd2hvbGVfcGlwZShlcnJmZCwgZXJyLCBzaXplb2YoZXJyKSk7CisK KwkJaW50ZXJuYWxfYXNzZXJ0KF93YWl0KHBpZCwgJnN0YXR1cykgIT0gLTEpOworCQlpbnRlcm5h bF9hc3NlcnQoV0VYSVRTVEFUVVMoc3RhdHVzKSA9PSBJR1RfRVhJVF9JTlZBTElEKTsKKwkJaW50 ZXJuYWxfYXNzZXJ0KHN0cnN0cihlcnIsICJVbmtub3duIHN1YnRlc3Q6IFoiKSk7CisKKwkJY2xv c2Uob3V0ZmQpOworCQljbG9zZShlcnJmZCk7CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9saWIvdGVzdHMvbWVzb24uYnVpbGQgYi9saWIvdGVzdHMvbWVzb24uYnVpbGQKaW5kZXgg YjkzMGVlNmUuLjRkOTA3ZTM0IDEwMDY0NAotLS0gYS9saWIvdGVzdHMvbWVzb24uYnVpbGQKKysr IGIvbGliL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC0zLDYgKzMsNyBAQCBsaWJfdGVzdHMgPSBbCiAJ J2lndF9jYW5fZmFpbCcsCiAJJ2lndF9jYW5fZmFpbF9zaW1wbGUnLAogCSdpZ3RfY29uZmxpY3Rp bmdfYXJncycsCisJJ2lndF9kZXNjcmliZScsCiAJJ2lndF9lZGlkJywKIAknaWd0X2V4aXRfaGFu ZGxlcicsCiAJJ2lndF9mb3JrJywKLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pZ3QtZGV2