From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0CA0489C19 for ; Mon, 1 Jul 2019 12:22:04 +0000 (UTC) From: Arkadiusz Hiler Date: Mon, 1 Jul 2019 15:21:49 +0300 Message-Id: <20190701122153.11569-1-arkadiusz.hiler@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/5] 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 Cm1hY3JvLgoKQ2M6IFBldHJpIExhdHZhbGEgPHBldHJpLmxhdHZhbGFAaW50ZWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBBcmthZGl1c3ogSGlsZXIgPGFya2FkaXVzei5oaWxlckBpbnRlbC5jb20+CkFj a2VkLWJ5OiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KLS0tCiBsaWIv aWd0X2NvcmUuYyAgICAgICAgICAgfCAxNzkgKysrKysrKysrKysrKysrKysrKysrKysrLS0KIGxp Yi9pZ3RfY29yZS5oICAgICAgICAgICB8IDEzNyArKysrKysrKysrKysrKysrKystLQogbGliL3Rl c3RzL2lndF9kZXNjcmliZS5jIHwgMjY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogbGliL3Rlc3RzL21lc29uLmJ1aWxkICAgIHwgICAxICsKIDQgZmlsZXMgY2hhbmdl ZCwgNTYyIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYi90ZXN0cy9pZ3RfZGVzY3JpYmUuYwoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29yZS5jIGIv bGliL2lndF9jb3JlLmMKaW5kZXggNmI5ZjA0MjUuLjhiMWM3YjJmIDEwMDY0NAotLS0gYS9saWIv aWd0X2NvcmUuYworKysgYi9saWIvaWd0X2NvcmUuYwpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1 ZGUgImlndF9zeXNmcy5oIgogI2luY2x1ZGUgImlndF9zeXNycS5oIgogI2luY2x1ZGUgImlndF9y Yy5oIgorI2luY2x1ZGUgImlndF9saXN0LmgiCiAKICNkZWZpbmUgVU5XX0xPQ0FMX09OTFkKICNp bmNsdWRlIDxsaWJ1bndpbmQuaD4KQEAgLTI1OSw2ICsyNjAsNyBAQCBjb25zdCBjaGFyICppZ3Rf aW50ZXJhY3RpdmVfZGVidWc7CiAKIC8qIHN1YnRlc3RzIGhlbHBlcnMgKi8KIHN0YXRpYyBib29s IGxpc3Rfc3VidGVzdHMgPSBmYWxzZTsKK3N0YXRpYyBib29sIGRlc2NyaWJlX3N1YnRlc3RzID0g ZmFsc2U7CiBzdGF0aWMgY2hhciAqcnVuX3NpbmdsZV9zdWJ0ZXN0ID0gTlVMTDsKIHN0YXRpYyBi b29sIHJ1bl9zaW5nbGVfc3VidGVzdF9mb3VuZCA9IGZhbHNlOwogc3RhdGljIGNvbnN0IGNoYXIg KmluX3N1YnRlc3QgPSBOVUxMOwpAQCAtMjcxLDYgKzI3MywxNiBAQCBzdGF0aWMgZW51bSB7CiAJ Q09OVCA9IDAsIFNLSVAsIEZBSUwKIH0gc2tpcF9zdWJ0ZXN0c19oZW5jZWZvcnRoID0gQ09OVDsK IAorc3RhdGljIGNoYXIgX19jdXJyZW50X2Rlc2NyaXB0aW9uWzQwOTZdOworCitzdHJ1Y3QgZGVz Y3JpcHRpb25fbm9kZSB7CisJY2hhciBkZXNjW3NpemVvZihfX2N1cnJlbnRfZGVzY3JpcHRpb24p XTsKKwlzdHJ1Y3QgaWd0X2xpc3QgbGluazsKK307CisKK3N0YXRpYyBzdHJ1Y3QgaWd0X2xpc3Qg c3ViZ3JvdXBfZGVzY3JpcHRpb25zOworCisKIGJvb2wgX19pZ3RfcGxhaW5fb3V0cHV0ID0gZmFs c2U7CiAKIC8qIGZvcmsgc3VwcG9ydCBzdGF0ZSAqLwpAQCAtMjg1LDYgKzI5Nyw3IEBAIGVudW0g ewogCSAqIGNvbmZsaWN0IHdpdGggY29yZSBvbmVzCiAJICovCiAJT1BUX0xJU1RfU1VCVEVTVFMg PSA1MDAsCisJT1BUX0RFU0NSSUJFX1NVQlRFU1RTLAogCU9QVF9SVU5fU1VCVEVTVCwKIAlPUFRf REVTQ1JJUFRJT04sCiAJT1BUX0RFQlVHLApAQCAtNTI4LDEwICs1NDEsNTkgQEAgc3RhdGljIHZv aWQgY29tbW9uX2V4aXRfaGFuZGxlcihpbnQgc2lnKQogCWFzc2VydChzaWcgIT0gMCB8fCBpZ3Rf ZXhpdF9jYWxsZWQpOwogfQogCitzdGF0aWMgdm9pZCBwcmludF9saW5lX3dyYXBwaW5nKGNvbnN0 IGNoYXIgKmluZGVudCwgY29uc3QgY2hhciAqdGV4dCkKK3sKKwljaGFyICpjb3B5LCAqY3Vyciwg Km5leHRfc3BhY2U7CisJaW50IGN1cnJlbnRfbGluZV9sZW5ndGggPSAwOworCWJvb2wgZG9uZSA9 IGZhbHNlOworCisJY29uc3QgaW50IHRvdGFsX2xpbmVfbGVuZ3RoID0gODA7CisJY29uc3QgaW50 IGxpbmVfbGVuZ3RoID0gdG90YWxfbGluZV9sZW5ndGggLSBzdHJsZW4oaW5kZW50KTsKKworCWNv cHkgPSBtYWxsb2Moc3RybGVuKHRleHQpICsgMSk7CisJbWVtY3B5KGNvcHksIHRleHQsIHN0cmxl bih0ZXh0KSArIDEpOworCisJY3VyciA9IGNvcHk7CisKKwlwcmludGYoIiVzIiwgaW5kZW50KTsK KworCXdoaWxlICghZG9uZSkgeworCQluZXh0X3NwYWNlID0gc3RyY2hyKGN1cnIsICcgJyk7CisK KwkJaWYgKCFuZXh0X3NwYWNlKSB7IC8qIG5vIG1vcmUgc3BhY2VzLCBwcmludCBldmVyeXRoaW5n IHRoYXQgaXMgbGVmdCAqLworCQkJZG9uZSA9IHRydWU7CisJCQluZXh0X3NwYWNlID0gc3RyY2hy KGN1cnIsICdcMCcpOworCQl9CisKKwkJKm5leHRfc3BhY2UgPSAnXDAnOworCisJCWlmICgobmV4 dF9zcGFjZSAtIGN1cnIpICsgY3VycmVudF9saW5lX2xlbmd0aCA+IGxpbmVfbGVuZ3RoICYmIGN1 cnIgIT0gY29weSkgeworCQkJcHJpbnRmKCJcbiVzIiwgaW5kZW50KTsKKwkJCWN1cnJlbnRfbGlu ZV9sZW5ndGggPSAwOworCQl9CisKKwkJaWYgKGN1cnJlbnRfbGluZV9sZW5ndGggPT0gMCkKKwkJ CXByaW50ZigiJXMiLCBjdXJyKTsgLyogZmlyc3Qgd29yZCBpbiBhIGxpbmUsIGRvbid0IHNwYWNl IG91dCAqLworCQllbHNlCisJCQlwcmludGYoIiAlcyIsIGN1cnIpOworCisJCWN1cnJlbnRfbGlu ZV9sZW5ndGggKz0gbmV4dF9zcGFjZSAtIGN1cnI7CisJCWN1cnIgPSBuZXh0X3NwYWNlICsgMTsK Kwl9CisKKwlwcmludGYoIlxuIik7CisKKwlmcmVlKGNvcHkpOworfQorCisKIHN0YXRpYyB2b2lk IHByaW50X3Rlc3RfZGVzY3JpcHRpb24odm9pZCkKIHsKLQlpZiAoJl9faWd0X3Rlc3RfZGVzY3Jp cHRpb24pCi0JCXByaW50ZigiJXNcbiIsIF9faWd0X3Rlc3RfZGVzY3JpcHRpb24pOworCWlmICgm X19pZ3RfdGVzdF9kZXNjcmlwdGlvbikgeworCQlwcmludF9saW5lX3dyYXBwaW5nKCIiLCBfX2ln dF90ZXN0X2Rlc2NyaXB0aW9uKTsKKwkJaWYgKGRlc2NyaWJlX3N1YnRlc3RzKQorCQkJcHJpbnRm KCJcbiIpOworCX0KIH0KIAogc3RhdGljIHZvaWQgcHJpbnRfdmVyc2lvbih2b2lkKQpAQCAtNTU4 LDYgKzYyMCw3IEBAIHN0YXRpYyB2b2lkIHByaW50X3VzYWdlKGNvbnN0IGNoYXIgKmhlbHBfc3Ry LCBib29sIG91dHB1dF9vbl9zdGRlcnIpCiAJCSAgICIgIC0tZGVidWdbPWxvZy1kb21haW5dXG4i CiAJCSAgICIgIC0taW50ZXJhY3RpdmUtZGVidWdbPWRvbWFpbl1cbiIKIAkJICAgIiAgLS1oZWxw LWRlc2NyaXB0aW9uXG4iCisJCSAgICIgIC0tZGVzY3JpYmVcbiIKIAkJICAgIiAgLS1oZWxwfC1o XG4iKTsKIAlpZiAoaGVscF9zdHIpCiAJCWZwcmludGYoZiwgIiVzXG4iLCBoZWxwX3N0cik7CkBA IC02NzEsNiArNzM0LDcgQEAgc3RhdGljIGludCBjb21tb25faW5pdChpbnQgKmFyZ2MsIGNoYXIg Kiphcmd2LAogCWludCBjLCBvcHRpb25faW5kZXggPSAwLCBpLCB4OwogCXN0YXRpYyBzdHJ1Y3Qg b3B0aW9uIGxvbmdfb3B0aW9uc1tdID0gewogCQl7Imxpc3Qtc3VidGVzdHMiLCAgICAgbm9fYXJn dW1lbnQsICAgICAgIE5VTEwsIE9QVF9MSVNUX1NVQlRFU1RTfSwKKwkJeyJkZXNjcmliZSIsICAg ICAgICAgIG9wdGlvbmFsX2FyZ3VtZW50LCBOVUxMLCBPUFRfREVTQ1JJQkVfU1VCVEVTVFN9LAog CQl7InJ1bi1zdWJ0ZXN0IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVF9SVU5f U1VCVEVTVH0sCiAJCXsiaGVscC1kZXNjcmlwdGlvbiIsICBub19hcmd1bWVudCwgICAgICAgTlVM TCwgT1BUX0RFU0NSSVBUSU9OfSwKIAkJeyJkZWJ1ZyIsICAgICAgICAgICAgIG9wdGlvbmFsX2Fy Z3VtZW50LCBOVUxMLCBPUFRfREVCVUd9LApAQCAtNjg3LDYgKzc1MSw3IEBAIHN0YXRpYyBpbnQg Y29tbW9uX2luaXQoaW50ICphcmdjLCBjaGFyICoqYXJndiwKIAlpbnQgcmV0ID0gMDsKIAogCWNv bW1vbl9pbml0X2VudigpOworCWlndF9saXN0X2luaXQoJnN1Ymdyb3VwX2Rlc2NyaXB0aW9ucyk7 CiAKIAljb21tYW5kX3N0ciA9IGFyZ3ZbMF07CiAJaWYgKHN0cnJjaHIoY29tbWFuZF9zdHIsICcv JykpCkBAIC03NzcsNiArODQyLDEzIEBAIHN0YXRpYyBpbnQgY29tbW9uX2luaXQoaW50ICphcmdj LCBjaGFyICoqYXJndiwKIAkJCWlmICghcnVuX3NpbmdsZV9zdWJ0ZXN0KQogCQkJCWxpc3Rfc3Vi dGVzdHMgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgT1BUX0RFU0NSSUJFX1NVQlRFU1RTOgor CQkJaWYgKG9wdGFyZykKKwkJCQlydW5fc2luZ2xlX3N1YnRlc3QgPSBzdHJkdXAob3B0YXJnKTsK KwkJCWxpc3Rfc3VidGVzdHMgPSB0cnVlOworCQkJZGVzY3JpYmVfc3VidGVzdHMgPSB0cnVlOwor CQkJcHJpbnRfdGVzdF9kZXNjcmlwdGlvbigpOworCQkJYnJlYWs7CiAJCWNhc2UgT1BUX1JVTl9T VUJURVNUOgogCQkJYXNzZXJ0KG9wdGFyZyk7CiAJCQlpZiAoIWxpc3Rfc3VidGVzdHMpCkBAIC05 MzQsMTIgKzEwMDYsNDEgQEAgdm9pZCBpZ3Rfc2ltcGxlX2luaXRfcGFyc2Vfb3B0cyhpbnQgKmFy Z2MsIGNoYXIgKiphcmd2LAogCQkgICAgZXh0cmFfb3B0X2hhbmRsZXIsIGhhbmRsZXJfZGF0YSk7 CiB9CiAKK3N0YXRpYyB2b2lkIF9jbGVhcl9jdXJyZW50X2Rlc2NyaXB0aW9uKHZvaWQpIHsKKwlf X2N1cnJlbnRfZGVzY3JpcHRpb25bMF0gPSAnXDAnOworfQorCisjZGVmaW5lIF9fSU5ERU5UICIg ICIKK3N0YXRpYyB2b2lkIF9faWd0X3ByaW50X2Rlc2NyaXB0aW9uKGNvbnN0IGNoYXIgKnN1YnRl c3RfbmFtZSwgY29uc3QgY2hhciAqZmlsZSwgY29uc3QgaW50IGxpbmUpCit7CisJc3RydWN0IGRl c2NyaXB0aW9uX25vZGUgKmRlc2M7CisJYm9vbCBoYXNfZG9jID0gZmFsc2U7CisKKwlwcmludGYo IlNVQiAlcyAlczolZDpcbiIsIHN1YnRlc3RfbmFtZSwgZmlsZSwgbGluZSk7CisKKwlpZ3RfbGlz dF9mb3JfZWFjaChkZXNjLCAmc3ViZ3JvdXBfZGVzY3JpcHRpb25zLCBsaW5rKSB7CisJCXByaW50 X2xpbmVfd3JhcHBpbmcoX19JTkRFTlQsIGRlc2MtPmRlc2MpOworCQlwcmludGYoIlxuIik7CisJ CWhhc19kb2MgPSB0cnVlOworCX0KKworCWlmIChfX2N1cnJlbnRfZGVzY3JpcHRpb25bMF0gIT0g J1wwJykgeworCQlwcmludF9saW5lX3dyYXBwaW5nKF9fSU5ERU5ULCBfX2N1cnJlbnRfZGVzY3Jp cHRpb24pOworCQlwcmludGYoIlxuIik7CisJCWhhc19kb2MgPSB0cnVlOworCX0KKworCWlmICgh aGFzX2RvYykKKwkJcHJpbnRmKCIlc05PIERPQ1VNRU5UQVRJT04hXG5cbiIsIF9fSU5ERU5UKTsK K30KKyN1bmRlZiBfX0lOREVOVAorCiAvKgogICogTm90ZTogVGVzdGNhc2VzIHdoaWNoIHVzZSB0 aGVzZSBoZWxwZXJzIE1VU1QgTk9UIG91dHB1dCBhbnl0aGluZyB0byBzdGRvdXQKICAqIG91dHNp ZGUgb2YgcGxhY2VzIHByb3RlY3RlZCBieSBpZ3RfcnVuX3N1YnRlc3QgY2hlY2tzIC0gdGhlIHBp Z2xpdAogICogcnVubmVyIGFkZHMgZXZlcnkgbGluZSB0byB0aGUgc3VidGVzdCBsaXN0LgogICov Ci1ib29sIF9faWd0X3J1bl9zdWJ0ZXN0KGNvbnN0IGNoYXIgKnN1YnRlc3RfbmFtZSkKK2Jvb2wg X19pZ3RfcnVuX3N1YnRlc3QoY29uc3QgY2hhciAqc3VidGVzdF9uYW1lLCBjb25zdCBjaGFyICpm aWxlLCBjb25zdCBpbnQgbGluZSkKIHsKIAlpbnQgaTsKIApAQCAtOTU0LDE4ICsxMDU1LDI1IEBA IGJvb2wgX19pZ3RfcnVuX3N1YnRlc3QoY29uc3QgY2hhciAqc3VidGVzdF9uYW1lKQogCQkJaWd0 X2V4aXQoKTsKIAkJfQogCi0JaWYgKGxpc3Rfc3VidGVzdHMpIHsKLQkJcHJpbnRmKCIlc1xuIiwg c3VidGVzdF9uYW1lKTsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQogCWlmIChydW5fc2luZ2xlX3N1 YnRlc3QpIHsKLQkJaWYgKHV3aWxkbWF0KHN1YnRlc3RfbmFtZSwgcnVuX3NpbmdsZV9zdWJ0ZXN0 KSA9PSAwKQorCQlpZiAodXdpbGRtYXQoc3VidGVzdF9uYW1lLCBydW5fc2luZ2xlX3N1YnRlc3Qp ID09IDApIHsKKwkJCV9jbGVhcl9jdXJyZW50X2Rlc2NyaXB0aW9uKCk7CiAJCQlyZXR1cm4gZmFs c2U7Ci0JCWVsc2UKKwkJfSBlbHNlIHsKIAkJCXJ1bl9zaW5nbGVfc3VidGVzdF9mb3VuZCA9IHRy dWU7CisJCX0KIAl9CiAKKwlpZiAoZGVzY3JpYmVfc3VidGVzdHMpIHsKKwkJX19pZ3RfcHJpbnRf ZGVzY3JpcHRpb24oc3VidGVzdF9uYW1lLCBmaWxlLCBsaW5lKTsKKwkJX2NsZWFyX2N1cnJlbnRf ZGVzY3JpcHRpb24oKTsKKwkJcmV0dXJuIGZhbHNlOworCX0gZWxzZSBpZiAobGlzdF9zdWJ0ZXN0 cykgeworCQlwcmludGYoIiVzXG4iLCBzdWJ0ZXN0X25hbWUpOworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisKIAlpZiAoc2tpcF9zdWJ0ZXN0c19oZW5jZWZvcnRoKSB7CiAJCXByaW50ZigiJXNTdWJ0 ZXN0ICVzOiAlcyVzXG4iLAogCQkgICAgICAgKCFfX2lndF9wbGFpbl9vdXRwdXQpID8gIlx4MWJb MW0iIDogIiIsIHN1YnRlc3RfbmFtZSwKQEAgLTEwMTQsMTUgKzExMjIsMzIgQEAgYm9vbCBpZ3Rf b25seV9saXN0X3N1YnRlc3RzKHZvaWQpCiAJcmV0dXJuIGxpc3Rfc3VidGVzdHM7CiB9CiAKLXZv aWQgX19pZ3Rfc3VidGVzdF9ncm91cF9zYXZlKGludCAqc2F2ZSkKKworCit2b2lkIF9faWd0X3N1 YnRlc3RfZ3JvdXBfc2F2ZShpbnQgKnNhdmUsIGludCAqZGVzYykKIHsKIAlhc3NlcnQodGVzdF93 aXRoX3N1YnRlc3RzKTsKIAorCWlmIChfX2N1cnJlbnRfZGVzY3JpcHRpb25bMF0gIT0gJ1wwJykg eworCQlzdHJ1Y3QgZGVzY3JpcHRpb25fbm9kZSAqbmV3ID0gY2FsbG9jKDEsIHNpemVvZigqbmV3 KSk7CisJCW1lbWNweShuZXctPmRlc2MsIF9fY3VycmVudF9kZXNjcmlwdGlvbiwgc2l6ZW9mKF9f Y3VycmVudF9kZXNjcmlwdGlvbikpOworCQlpZ3RfbGlzdF9hZGRfdGFpbCgmbmV3LT5saW5rLCAm c3ViZ3JvdXBfZGVzY3JpcHRpb25zKTsKKwkJX2NsZWFyX2N1cnJlbnRfZGVzY3JpcHRpb24oKTsK KwkJKmRlc2MgPSB0cnVlOworCX0KKwogCSpzYXZlID0gc2tpcF9zdWJ0ZXN0c19oZW5jZWZvcnRo OwogfQogCi12b2lkIF9faWd0X3N1YnRlc3RfZ3JvdXBfcmVzdG9yZShpbnQgc2F2ZSkKK3ZvaWQg X19pZ3Rfc3VidGVzdF9ncm91cF9yZXN0b3JlKGludCBzYXZlLCBpbnQgZGVzYykKIHsKKwlpZiAo ZGVzYykgeworCQlzdHJ1Y3QgZGVzY3JpcHRpb25fbm9kZSAqbGFzdCA9CisJCQlpZ3RfbGlzdF9s YXN0X2VudHJ5KCZzdWJncm91cF9kZXNjcmlwdGlvbnMsIGxhc3QsIGxpbmspOworCQlpZ3RfbGlz dF9kZWwoJmxhc3QtPmxpbmspOworCQlmcmVlKGxhc3QpOworCX0KKwogCXNraXBfc3VidGVzdHNf aGVuY2Vmb3J0aCA9IHNhdmU7CiB9CiAKQEAgLTEyMjksNiArMTM1NCwzNCBAQCBib29sIGlndF9j YW5fZmFpbCh2b2lkKQogCXJldHVybiAhdGVzdF93aXRoX3N1YnRlc3RzIHx8IGluX2ZpeHR1cmUg fHwgaW5fc3VidGVzdDsKIH0KIAorLyoqCisgKiBpZ3RfZGVzY3JpYmVfZjoKKyAqIEBmbXQ6IGZv cm1hdCBzdHJpbmcgY29udGFpbmluZyBkZXNjcmlwdGlvbgorICogQC4uLjogYXJndW1lbnQgdXNl ZCBieSB0aGUgZm9ybWF0IHN0cmluZworICoKKyAqIEF0dGFjaCBhIGRlc2NyaXB0aW9uIHRvIHRo ZSBmb2xsb3dpbmcgI2lndF9zdWJ0ZXN0IG9yICNpZ3Rfc3VidGVzdF9ncm91cAorICogYmxvY2su CisgKgorICogQ2hlY2sgI2lndF9kZXNjcmliZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLwor dm9pZCBpZ3RfZGVzY3JpYmVfZihjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlpbnQgcmV0Owor CXZhX2xpc3QgYXJnczsKKworCWlmICghZGVzY3JpYmVfc3VidGVzdHMpCisJCXJldHVybjsKKwor CXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisKKwlyZXQgPSB2c25wcmludGYoX19jdXJyZW50X2Rlc2Ny aXB0aW9uLCBzaXplb2YoX19jdXJyZW50X2Rlc2NyaXB0aW9uKSwgZm10LCBhcmdzKTsKKworCXZh X2VuZChhcmdzKTsKKworCWFzc2VydChyZXQgPCBzaXplb2YoX19jdXJyZW50X2Rlc2NyaXB0aW9u KSk7Cit9CisKIHN0YXRpYyBib29sIHJ1bm5pbmdfdW5kZXJfZ2RiKHZvaWQpCiB7CiAJY2hhciBw YXRobmFtZVszMF0sIGJ1ZlsxMDI0XTsKQEAgLTE1NDAsNyArMTY5Myw3IEBAIHZvaWQgaWd0X2V4 aXQodm9pZCkKIAkJZ19rZXlfZmlsZV9mcmVlKGlndF9rZXlfZmlsZSk7CiAKIAlpZiAocnVuX3Np bmdsZV9zdWJ0ZXN0ICYmICFydW5fc2luZ2xlX3N1YnRlc3RfZm91bmQpIHsKLQkJaWd0X3dhcm4o IlVua25vd24gc3VidGVzdDogJXNcbiIsIHJ1bl9zaW5nbGVfc3VidGVzdCk7CisJCWlndF9jcml0 aWNhbCgiVW5rbm93biBzdWJ0ZXN0OiAlc1xuIiwgcnVuX3NpbmdsZV9zdWJ0ZXN0KTsKIAkJZXhp dChJR1RfRVhJVF9JTlZBTElEKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29yZS5oIGIv bGliL2lndF9jb3JlLmgKaW5kZXggODhhOTVlYzIuLjFiMzdmMTQyIDEwMDY0NAotLS0gYS9saWIv aWd0X2NvcmUuaAorKysgYi9saWIvaWd0X2NvcmUuaApAQCAtMTc0LDcgKzE3NCw3IEBAIGludCBp Z3Rfc3VidGVzdF9pbml0X3BhcnNlX29wdHMoaW50ICphcmdjLCBjaGFyICoqYXJndiwKICNkZWZp bmUgaWd0X3N1YnRlc3RfaW5pdChhcmdjLCBhcmd2KSBcCiAJaWd0X3N1YnRlc3RfaW5pdF9wYXJz ZV9vcHRzKCZhcmdjLCBhcmd2LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKIAotYm9v bCBfX2lndF9ydW5fc3VidGVzdChjb25zdCBjaGFyICpzdWJ0ZXN0X25hbWUpOworYm9vbCBfX2ln dF9ydW5fc3VidGVzdChjb25zdCBjaGFyICpzdWJ0ZXN0X25hbWUsIGNvbnN0IGNoYXIgKmZpbGUs IGNvbnN0IGludCBsaW5lKTsKICNkZWZpbmUgX19pZ3RfdG9rZW5jYXQyKHgsIHkpIHggIyMgeQog CiAvKioKQEAgLTE5OCwxNCArMTk4LDE0IEBAIGJvb2wgX19pZ3RfcnVuX3N1YnRlc3QoY29uc3Qg Y2hhciAqc3VidGVzdF9uYW1lKTsKICAqCiAgKiBUaGlzIGlzIGEgc2ltcGxlciB2ZXJzaW9uIG9m IGlndF9zdWJ0ZXN0X2YoKQogICovCi0jZGVmaW5lIGlndF9zdWJ0ZXN0KG5hbWUpIGZvciAoOyBf X2lndF9ydW5fc3VidGVzdCgobmFtZSkpICYmIFwKKyNkZWZpbmUgaWd0X3N1YnRlc3QobmFtZSkg Zm9yICg7IF9faWd0X3J1bl9zdWJ0ZXN0KChuYW1lKSwgX19GSUxFX18sIF9fTElORV9fKSAmJiBc CiAJCQkJICAgKHNpZ3NldGptcChpZ3Rfc3VidGVzdF9qbXBidWYsIDEpID09IDApOyBcCiAJCQkJ ICAgaWd0X3N1Y2Nlc3MoKSkKICNkZWZpbmUgX19pZ3Rfc3VidGVzdF9mKHRtcCwgZm9ybWF0Li4u KSBcCiAJZm9yIChjaGFyIHRtcCBbMjU2XTsgXAogCSAgICAgc25wcmludGYoIHRtcCAsIHNpemVv ZiggdG1wICksIFwKIAkJICAgICAgZm9ybWF0KSwgXAotCSAgICAgX19pZ3RfcnVuX3N1YnRlc3Qo IHRtcCApICYmIFwKKwkgICAgIF9faWd0X3J1bl9zdWJ0ZXN0KHRtcCwgX19GSUxFX18sIF9fTElO RV9fKSAmJiBcCiAJICAgICAoc2lnc2V0am1wKGlndF9zdWJ0ZXN0X2ptcGJ1ZiwgMSkgPT0gMCk7 IFwKIAkgICAgIGlndF9zdWNjZXNzKCkpCiAKQEAgLTIyNyw4ICsyMjcsOCBAQCBib29sIF9faWd0 X3J1bl9zdWJ0ZXN0KGNvbnN0IGNoYXIgKnN1YnRlc3RfbmFtZSk7CiBjb25zdCBjaGFyICppZ3Rf c3VidGVzdF9uYW1lKHZvaWQpOwogYm9vbCBpZ3Rfb25seV9saXN0X3N1YnRlc3RzKHZvaWQpOwog Ci12b2lkIF9faWd0X3N1YnRlc3RfZ3JvdXBfc2F2ZShpbnQgKik7Ci12b2lkIF9faWd0X3N1YnRl c3RfZ3JvdXBfcmVzdG9yZShpbnQpOwordm9pZCBfX2lndF9zdWJ0ZXN0X2dyb3VwX3NhdmUoaW50 ICosIGludCAqKTsKK3ZvaWQgX19pZ3Rfc3VidGVzdF9ncm91cF9yZXN0b3JlKGludCwgaW50KTsK IC8qKgogICogaWd0X3N1YnRlc3RfZ3JvdXA6CiAgKgpAQCAtMjQ1LDExICsyNDUsMTQgQEAgdm9p ZCBfX2lndF9zdWJ0ZXN0X2dyb3VwX3Jlc3RvcmUoaW50KTsKICAqIGdyb3VwIHdpbGwgZmFpbCBv ciBza2lwLiBTdWJ0ZXN0IGdyb3VwcyBjYW4gYmUgYXJiaXRyYXJpbHkgbmVzdGVkLgogICovCiAj ZGVmaW5lIGlndF9zdWJ0ZXN0X2dyb3VwIGZvciAoaW50IGlndF90b2tlbmNhdChfX3RtcGludCxf X0xJTkVfXykgPSAwLCBcCi0JCQkgICAgICAgaWd0X3Rva2VuY2F0KF9fc2F2ZSxfX0xJTkVfXykg PSAwOyBcCisJCQkgICAgICAgaWd0X3Rva2VuY2F0KF9fc2F2ZSxfX0xJTkVfXykgPSAwLCBcCisJ CQkgICAgICAgaWd0X3Rva2VuY2F0KF9fZGVzYyxfX0xJTkVfXykgPSAwOyBcCiAJCQkgICAgICAg aWd0X3Rva2VuY2F0KF9fdG1waW50LF9fTElORV9fKSA8IDEgJiYgXAotCQkJICAgICAgIChfX2ln dF9zdWJ0ZXN0X2dyb3VwX3NhdmUoJiBpZ3RfdG9rZW5jYXQoX19zYXZlLF9fTElORV9fKSApLCB0 cnVlKTsgXAorCQkJICAgICAgIChfX2lndF9zdWJ0ZXN0X2dyb3VwX3NhdmUoJiBpZ3RfdG9rZW5j YXQoX19zYXZlLF9fTElORV9fKSwgXAorCQkJCQkJCSAmIGlndF90b2tlbmNhdChfX2Rlc2MsX19M SU5FX18pICksIHRydWUpOyBcCiAJCQkgICAgICAgaWd0X3Rva2VuY2F0KF9fdG1waW50LF9fTElO RV9fKSArKywgXAotCQkJICAgICAgIF9faWd0X3N1YnRlc3RfZ3JvdXBfcmVzdG9yZShpZ3RfdG9r ZW5jYXQoX19zYXZlLF9fTElORV9fKSApKQorCQkJICAgICAgIF9faWd0X3N1YnRlc3RfZ3JvdXBf cmVzdG9yZShpZ3RfdG9rZW5jYXQoX19zYXZlLF9fTElORV9fKSwgXAorCQkJCQkJCSAgIGlndF90 b2tlbmNhdChfX2Rlc2MsX19MSU5FX18pKSkKIAogLyoqCiAgKiBpZ3RfbWFpbl9hcmdzOgpAQCAt Mzg1LDYgKzM4OCwxMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIGlndF9pZ25vcmVfd2Fybihib29s IHZhbHVlKQogewogfQogCitfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpCit2 b2lkIGlndF9kZXNjcmliZV9mKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKKworLyoqCisgKiBpZ3Rf ZGVzY3JpYmU6CisgKiBAZHNjOiBzdHJpbmcgY29udGFpbmluZyBkZXNjcmlwdGlvbgorICoKKyAq IEF0dGFjaCBhIGRlc2NyaXB0aW9uIHRvIHRoZSBmb2xsb3dpbmcgI2lndF9zdWJ0ZXN0IG9yICNp Z3Rfc3VidGVzdF9ncm91cAorICogYmxvY2suCisgKgorICogVGhlIGRlc2NyaXB0aW9uIHNob3Vs ZCBjb21wbGVtZW50IHRoZSB0ZXN0L3N1YnRlc3QgbmFtZSBhbmQgcHJvdmlkZSBtb3JlCisgKiBj b250ZXh0IG9uIHdoYXQgaXMgYmVpbmcgdGVzdGVkLiBJdCBzaG91bGQgZXhwbGFpbiB0aGUgaWRl YSBvZiB0aGUgdGVzdCBhbmQKKyAqIGRvIG5vdCBtZW50aW9uIGltcGxlbWVudGF0aW9uIGRldGFp bHMsIHNvIHRoYXQgaXQgbmV2ZXIgZ29lcyBvdXQgb2YgZGF0ZS4KKyAqCisgKiBETzoKKyAqICAq IGZvY3VzIG9uIHRoZSB1c2Vyc3BhY2UncyBwZXJzcGVjdGl2ZQorICogICogdHJ5IHRvIGNhcHR1 cmUgdGhlIHJlYXNvbiBmb3IgdGhlIHRlc3QncyBleGlzdGVuY2UKKyAqICAqIGJlIGJyaWVmCisg KgorICogRE9OJ1Q6CisgKiAgKiB0cnkgdG8gdHJhbnNsYXRlIHRoZSBjb2RlIGludG8gRW5nbGlz aAorICogICogZXhwbGFpbiBhbGwgdGhlIGNoZWNrcyB0aGUgdGVzdCBkb2VzCisgKiAgKiBkZWx2 ZSBvbiB0aGUgaW1wbGVtZW50YXRpb24KKyAqCisgKiBHb29kIGV4YW1wbGVzOgorICogICogIm1h a2Ugc3VyZSB0aGF0IGxlZ2FjeSBjdXJzb3IgdXBkYXRlcyBkbyBub3Qgc3RhbGwgYXRvbWljIGNv bW1pdHMiCisgKiAgKiAiY2hlY2sgdGhhdCBhdG9taWMgdXBkYXRlcyBvZiBtYW55IHBsYW5lcyBh cmUgaW5kZWVkIGF0b21pYyBhbmQgdGFrZQorICogICAgIGVmZmVjdCBpbW1lZGlhdGVseSBhZnRl ciB0aGUgY29tbWl0IgorICogICogIm1ha2Ugc3VyZSB0aGF0IHRoZSBtZXRhLWRhdGEgZXhwb3Nl ZCBieSB0aGUga2VybmVsIHRvIHRoZSB1c2Vyc3BhY2UKKyAqICAgICBpcyBjb3JyZWN0IGFuZCBt YXRjaGVzIHRoZSB1c2VkIEVESUQiCisgKgorICogQmFkIGV4YW1wbGVzOgorICogICogInNwYXdu IDEwIHRocmVhZHMsIGVhY2ggcGlubmluZyBjcHUgY29yZSB3aXRoIGEgYnVzeSBsb29wLi4uIgor ICogICogInJhbmRvbWx5IGdlbmVyYXRlIGhvbGVzIGluIGEgcHJpbWFyeSBwbGFuZSB0aGVuIHRy eSB0byBjb3ZlciBlYWNoIGhvbGUKKyAqICAgIHdpdGggYSBwbGFuZSBhbmQgbWFrZSBzdXJlIHRo YXQgQ1JDIG1hdGNoZXMsIGRvIDI1IGdhemlsbGlvbiByb3VuZHMgb2YKKyAqICAgIHRoYXQuLi4i CisgKgorICoKKyAqIFJlc3VsdGluZyAjaWd0X3N1YnRlc3QgZG9jdW1lbnRhdGlvbiBpcyBhIGNv bmNhdGVuYXRpb24gb2YgaXRzIG93bgorICogZGVzY3JpcHRpb24gYW5kIGFsbCB0aGUgcGFyZW50 aW5nICNpZ3Rfc3VidGVzdF9ncm91cCBkZXNjcmlwdGlvbnMsIHN0YXJ0aW5nCisgKiBmcm9tIHRo ZSBvdXRlcm1vc3Qgb25lLiBFeGFtcGxlOgorICoKKyAqIHxbPCEtLSBsYW5ndWFnZT0iQyIgLS0+ CisgKiAjaW5jbHVkZSAiaWd0LmgiCisgKgorICogSUdUX1RFU1RfREVTQ1JJUFRJT04oIkdsb2Jh bCBkZXNjcmlwdGlvbiBvZiB0aGUgd2hvbGUgYmluYXJ5Iik7CisgKiBpZ3RfbWFpbgorICogewor ICogCWlndF9kZXNjcmliZSgiRGVzYyBvZiB0aGUgc3ViZ3JvdXAgd2l0aCBBIGFuZCBCIik7Cisg KiAJaWd0X3N1YnRlc3RfZ3JvdXAgeworICogCQlpZ3RfZGVzY3JpYmUoIkRlc2Mgb2YgdGhlIHN1 YnRlc3QgQSIpOworICogCQlpZ3Rfc3VidGVzdCgic3VidGVzdC1hIikgeworICogCQkJLi4uCisg KiAJCX0KKyAqCisgKiAJCWlndF9kZXNjcmliZSgiRGVzYyBvZiB0aGUgc3VidGVzdCBCIik7Cisg KiAJCWlndF9zdWJ0ZXN0KCJzdWJ0ZXN0LWIiKSB7CisgKiAJCQkuLi4KKyAqIAkJfQorICogCX0K KyAqCisgKiAJaWd0X2Rlc2NyaWJlKCJEZXNjIG9mIHRoZSBzdWJ0ZXN0IEMiKTsKKyAqIAlpZ3Rf c3VidGVzdCgic3VidGVzdC1jIikgeworICogCQkuLi4KKyAqIAl9CisgKiB9CisgKiBdfAorICoK KyAqIEl0J3Mgd2lsbCBhY2Nlc3NpYmxlIHZpYSAtLWRlc2NyaWJlIGNvbW1hbmQgbGluZSBzd2l0 Y2g6CisgKgorICogfFsKKyAqICQgdGVzdCAtLWRlc2NyaWJlCisgKiBHbG9iYWwgZGVzY3JpcHRp b24gb2YgdGhlIHdob2xlIGJpbmFyeQorICoKKyAqIFNVQiBzdWJ0ZXN0LWEgdGVzdC5jOjU6Cisg KiAgIERlc2Mgb2YgdGhlIHN1Ymdyb3VwIHdpdGggQSBhbmQgQgorICoKKyAqICAgRGVzYyBvZiB0 aGUgc3VidGVzdCBBCisgKgorICogU1VCIHN1YnRlc3QtYiB0ZXN0LmM6MTA6CisgKiAgIERlc2Mg b2YgdGhlIHN1Ymdyb3VwIHdpdGggQSBhbmQgQgorICoKKyAqICAgRGVzYyBvZiB0aGUgc3VidGVz dCBCCisgKgorICogU1VCIHN1YnRlc3QtYyB0ZXN0LmM6MTU6CisgKiAgIERlc2Mgb2YgdGhlIHN1 YnRlc3QgQworICogXXwKKyAqCisgKiBFdmVyeSBzaW5nbGUgI2lndF9zdWJ0ZXN0IGRvZXMgbm90 IGhhdmUgdG8gYmUgcHJlY2VkZWQgd2l0aCBhICNpZ3RfZGVzY3JpYmUKKyAqIGFzIGxvbmcgYXMg aXQgaGFzIGdvb2QtZW5vdWdoIGV4cGxhbmF0aW9uIHByb3ZpZGVkIG9uIHRoZSAjaWd0X3N1YnRl c3RfZ3JvdXAKKyAqIGxldmVsLgorICoKKyAqIEV4YW1wbGU6CisgKgorICogfFs8IS0tIGxhbmd1 YWdlPSJDIiAtLT4KKyAqICNpbmNsdWRlICJpZ3QuaCIKKyAqCisgKiBpZ3RfbWFpbgorICogewor ICogCWlndF9kZXNjcmliZSgiY2hlY2sgeHl6IHdpdGggZGlmZmVyZW50IHRpbGluZ3MiKTsKKyAq IAlpZ3Rfc3VidGVzdF9ncm91cCB7CisgKiAJCS8vIG5vIG5lZWQgZm9yIGV4dHJhIGRlc2NyaXB0 aW9uLCBncm91cCBpcyBlbm91Z2ggYW5kIHRpbGluZyBpcworICogCQkvLyBvYnZpb3VzIGZyb20g dGhlIHRlc3QgbmFtZQorICogCQlpZ3Rfc3VidGVzdCgiZm9vLXRpbGluZy14IikgeworICogCQkJ Li4uCisgKiAJCX0KKyAqCisgKiAJCWlndF9zdWJ0ZXN0KCJmb28tdGlsaW5nLXkiKSB7CisgKiAJ CQkuLi4KKyAqIAkJfQorICogCX0KKyAqIH0KKyAqIF18CisgKgorICovCisjZGVmaW5lIGlndF9k ZXNjcmliZShkc2MpIFwKKwlpZ3RfZGVzY3JpYmVfZigiJXMiLCBkc2MpCisKIC8qKgogICogaWd0 X2Fzc2VydDoKICAqIEBleHByOiBjb25kaXRpb24gdG8gdGVzdApkaWZmIC0tZ2l0IGEvbGliL3Rl c3RzL2lndF9kZXNjcmliZS5jIGIvbGliL3Rlc3RzL2lndF9kZXNjcmliZS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5hOWY4NTdiYgotLS0gL2Rldi9udWxsCisrKyBiL2xp Yi90ZXN0cy9pZ3RfZGVzY3JpYmUuYwpAQCAtMCwwICsxLDI2NiBAQAorLyoKKyAqIENvcHlyaWdo dCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwK KyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0 CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICog SU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUg PHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSAiZHJtdGVzdC5oIgor I2luY2x1ZGUgImlndF90ZXN0c19jb21tb24uaCIKKworSUdUX1RFU1RfREVTQ1JJUFRJT04oInRo ZSB0b3AgbGV2ZWwgZGVzY3JpcHRpb24iKTsKK3N0YXRpYyB2b2lkIGZha2VfbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpIHsKKwlpZ3Rfc3VidGVzdF9pbml0KGFyZ2MsIGFyZ3YpOworCisJaWd0 X2Rlc2NyaWJlKCJCYXNpYyBBIik7CisJaWd0X3N1YnRlc3QoIkEiKQorCQk7CisKKwlpZ3RfZml4 dHVyZQorCQlwcmludGYoInNob3VsZCBub3QgYmUgZXhlY3V0ZWQhXG4iKTsKKworCWlndF9kZXNj cmliZSgiR3JvdXAgd2l0aCBCLCBDICYgRCIpOworCWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJaWd0 X2Rlc2NyaWJlKCJCYXNpYyBCIik7CisJCWlndF9zdWJ0ZXN0KCJCIikKKwkJCTsKKworCQlpZiAo IWlndF9vbmx5X2xpc3Rfc3VidGVzdHMoKSkKKwkJCXByaW50Zigic2hvdWxkIG5vdCBiZSBleGVj dXRlZCFcbiIpOworCisJCWlndF9kZXNjcmliZSgiR3JvdXAgd2l0aCBDICYgRCIpOworCQlpZ3Rf c3VidGVzdF9ncm91cCB7CisJCQlpZ3RfZGVzY3JpYmUoIkJhc2ljIEMiKTsKKwkJCWlndF9zdWJ0 ZXN0KCJDIikKKwkJCQlwcmludGYoInNob3VsZCBub3QgYmUgZXhlY3V0ZWQhXG4iKTsKKworCQkJ Ly8gTk8gRE9DCisJCQlpZ3Rfc3VidGVzdCgiRCIpCisJCQkJOworCQl9CisJfQorCisJLy8gTk8g RE9DCisJaWd0X3N1YnRlc3RfZ3JvdXAgeworCQkvLyBOTyBET0MKKwkJaWd0X3N1YnRlc3QoIkUi KQorCQkJOworCX0KKworCS8vIE5PIERPQworCWlndF9zdWJ0ZXN0KCJGIikKKwkJOworCisJaWd0 X2Rlc2NyaWJlKCJ0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3Jh cHMgaXRzZWxmIG5pY2VseSBpbiB0aGUgdGVybWluYWwgIgorCQkgICAgICJ0aGlzIGRlc2NyaXB0 aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmIG5pY2VseSBpbiB0aGUg dGVybWluYWwgIgorCQkgICAgICJ0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRo YXQgaXQgd3JhcHMgaXRzZWxmIG5pY2VseSBpbiB0aGUgdGVybWluYWwgIgorCQkgICAgICJ0aGlz IGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmIG5pY2Vs eSBpbiB0aGUgdGVybWluYWwgIgorCQkgICAgICJ0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBz byBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmIG5pY2VseSBpbiB0aGUgdGVybWluYWwgIgorCQkg ICAgICJ0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRz ZWxmIG5pY2VseSBpbiB0aGUgdGVybWluYWwiKTsKKwlpZ3Rfc3VidGVzdCgiRyIpCisJCTsKKwor CWlndF9kZXNjcmliZSgidmVyeWxvbmd3b3JkdGhhdHNob3VkbGJlcHJpbnRlZGV2ZW50aG91Z2hp dHNwYXN0dGhld3JwcGluZ2xpbWl0IgorCQkgICAgICJ2ZXJ5bG9uZ3dvcmR0aGF0c2hvdWRsYmVw cmludGVkZXZlbnRob3VnaGl0c3Bhc3R0aGV3cmFwcGluZ2xpbWl0ICIKKwkJICAgICAidmVyeWxv bmd3b3JkdGhhdHNob3VkbGJlcHJpbnRlZGV2ZW50aG91Z2hpdHNwYXN0dGhld3JhcHBpbmdsaW1p dCIKKwkJICAgICAidmVyeWxvbmd3b3JkdGhhdHNob3VkbGJlcHJpbnRlZGV2ZW50aG91Z2hpdHNw YXN0dGhld3JhcHBpbmdsaW1pdCIpOworCWlndF9zdWJ0ZXN0KCJGIikKKwkJOworCisJaWd0X2V4 aXQoKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgREVTQ1JJQkVfQUxMX09VVFBVVFtdID0gXAor CSJ0aGUgdG9wIGxldmVsIGRlc2NyaXB0aW9uXG4iCisJIlxuIgorCSJTVUIgQSAuLi9saWIvdGVz dHMvaWd0X2Rlc2NyaWJlLmM6MzY6XG4iCisJIiAgQmFzaWMgQVxuIgorCSJcbiIKKwkiU1VCIEIg Li4vbGliL3Rlc3RzL2lndF9kZXNjcmliZS5jOjQ1OlxuIgorCSIgIEdyb3VwIHdpdGggQiwgQyAm IERcbiIKKwkiXG4iCisJIiAgQmFzaWMgQlxuIgorCSJcbiIKKwkiU1VCIEMgLi4vbGliL3Rlc3Rz L2lndF9kZXNjcmliZS5jOjU0OlxuIgorCSIgIEdyb3VwIHdpdGggQiwgQyAmIERcbiIKKwkiXG4i CisJIiAgR3JvdXAgd2l0aCBDICYgRFxuIgorCSJcbiIKKwkiICBCYXNpYyBDXG4iCisJIlxuIgor CSJTVUIgRCAuLi9saWIvdGVzdHMvaWd0X2Rlc2NyaWJlLmM6NTg6XG4iCisJIiAgR3JvdXAgd2l0 aCBCLCBDICYgRFxuIgorCSJcbiIKKwkiICBHcm91cCB3aXRoIEMgJiBEXG4iCisJIlxuIgorCSJT VUIgRSAuLi9saWIvdGVzdHMvaWd0X2Rlc2NyaWJlLmM6NjY6XG4iCisJIiAgTk8gRE9DVU1FTlRB VElPTiFcbiIKKwkiXG4iCisJIlNVQiBGIC4uL2xpYi90ZXN0cy9pZ3RfZGVzY3JpYmUuYzo3MTpc biIKKwkiICBOTyBET0NVTUVOVEFUSU9OIVxuIgorCSJcbiIKKwkiU1VCIEcgLi4vbGliL3Rlc3Rz L2lndF9kZXNjcmliZS5jOjgwOlxuIgorCSIgIHRoaXMgZGVzY3JpcHRpb24gc2hvdWxkIGJlIHNv IGxvbmcgdGhhdCBpdCB3cmFwcyBpdHNlbGYgbmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0aGlzXG4i CisJIiAgZGVzY3JpcHRpb24gc2hvdWxkIGJlIHNvIGxvbmcgdGhhdCBpdCB3cmFwcyBpdHNlbGYg bmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0aGlzIGRlc2NyaXB0aW9uXG4iCisJIiAgc2hvdWxkIGJl IHNvIGxvbmcgdGhhdCBpdCB3cmFwcyBpdHNlbGYgbmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0aGlz IGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzb1xuIgorCSIgIGxvbmcgdGhhdCBpdCB3cmFwcyBpdHNl bGYgbmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBs b25nIHRoYXQgaXRcbiIKKwkiICB3cmFwcyBpdHNlbGYgbmljZWx5IGluIHRoZSB0ZXJtaW5hbCB0 aGlzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzbyBsb25nIHRoYXQgaXQgd3JhcHMgaXRzZWxmXG4i CisJIiAgbmljZWx5IGluIHRoZSB0ZXJtaW5hbFxuIgorCSJcbiIKKwkiU1VCIEYgLi4vbGliL3Rl c3RzL2lndF9kZXNjcmliZS5jOjg3OlxuIgorCSIgIHZlcnlsb25nd29yZHRoYXRzaG91ZGxiZXBy aW50ZWRldmVudGhvdWdoaXRzcGFzdHRoZXdycHBpbmdsaW1pdHZlcnlsb25nd29yZHRoYXRzaG91 ZGxiZXByaW50ZWRldmVudGhvdWdoaXRzcGFzdHRoZXdyYXBwaW5nbGltaXRcbiIKKwkiICB2ZXJ5 bG9uZ3dvcmR0aGF0c2hvdWRsYmVwcmludGVkZXZlbnRob3VnaGl0c3Bhc3R0aGV3cmFwcGluZ2xp bWl0dmVyeWxvbmd3b3JkdGhhdHNob3VkbGJlcHJpbnRlZGV2ZW50aG91Z2hpdHNwYXN0dGhld3Jh cHBpbmdsaW1pdFxuXG4iOworCitzdGF0aWMgY29uc3QgY2hhciBKVVNUX0NfT1VUUFVUW10gPSBc CisJInRoZSB0b3AgbGV2ZWwgZGVzY3JpcHRpb25cbiIKKwkiXG4iCisJIlNVQiBDIC4uL2xpYi90 ZXN0cy9pZ3RfZGVzY3JpYmUuYzo1NDpcbiIKKwkiICBHcm91cCB3aXRoIEIsIEMgJiBEXG4iCisJ IlxuIgorCSIgIEdyb3VwIHdpdGggQyAmIERcbiIKKwkiXG4iCisJIiAgQmFzaWMgQ1xuIgorCSJc biI7CisKK3N0YXRpYyB2b2lkIGFzc2VydF9waXBlX2VtcHR5KGludCBmZCkKK3sKKwljaGFyIGJ1 Zls1XTsKKwlpbnRlcm5hbF9hc3NlcnQoMCA9PSByZWFkKGZkLCBidWYsIHNpemVvZihidWYpKSk7 Cit9CisKK3N0YXRpYyB2b2lkIHJlYWRfd2hvbGVfcGlwZShpbnQgZmQsIGNoYXIgKmJ1Ziwgc2l6 ZV90IGJ1ZmxlbikKK3sKKwlzc2l6ZV90IHJlYWRsZW47CisJb2ZmX3Qgb2Zmc2V0OworCisJb2Zm c2V0ID0gMDsKKwl3aGlsZSAoKHJlYWRsZW4gPSByZWFkKGZkLCBidWYrb2Zmc2V0LCBidWZsZW4t b2Zmc2V0KSkpIHsKKwkJaW50ZXJuYWxfYXNzZXJ0KHJlYWRsZW4gIT0gLTEpOworCQlvZmZzZXQg Kz0gcmVhZGxlbjsKKwl9Cit9CisKK3N0YXRpYyBwaWRfdCBkb19mb3JrKGludCBhcmdjLCBjaGFy ICoqYXJndiwgaW50ICpvdXQsIGludCAqZXJyKQoreworCWludCBvdXRmZFsyXSwgZXJyZmRbMl07 CisJcGlkX3QgcGlkOworCisJaW50ZXJuYWxfYXNzZXJ0KHBpcGUob3V0ZmQpICE9IC0xKTsKKwlp bnRlcm5hbF9hc3NlcnQocGlwZShlcnJmZCkgIT0gLTEpOworCisJcGlkID0gZm9yaygpOworCWlu dGVybmFsX2Fzc2VydChwaWQgIT0gLTEpOworCisJaWYgKHBpZCA9PSAwKSB7CisJCXdoaWxlICgo ZHVwMihvdXRmZFsxXSwgU1RET1VUX0ZJTEVOTykgPT0gLTEpICYmIChlcnJubyA9PSBFSU5UUikp IHt9CisJCXdoaWxlICgoZHVwMihlcnJmZFsxXSwgU1RERVJSX0ZJTEVOTykgPT0gLTEpICYmIChl cnJubyA9PSBFSU5UUikpIHt9CisKKwkJZmFrZV9tYWluKGFyZ2MsIGFyZ3YpOworCisJCWV4aXQo LTEpOworCX0gZWxzZSB7CisJCS8qIGNsb3NlIHRoZSB3cml0aW5nIGVuZHMgKi8KKwkJY2xvc2Uo b3V0ZmRbMV0pOworCQljbG9zZShlcnJmZFsxXSk7CisKKwkJKm91dCA9IG91dGZkWzBdOworCQkq ZXJyID0gZXJyZmRbMF07CisKKwkJcmV0dXJuIHBpZDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgX3dh aXQocGlkX3QgcGlkLCBpbnQgKnN0YXR1cykgeworCWludCByZXQ7CisKKwlkbyB7CisJCXJldCA9 IHdhaXRwaWQocGlkLCBzdGF0dXMsIDApOworCX0gd2hpbGUgKHJldCA9PSAtMSAmJiBlcnJubyA9 PSBFSU5UUik7CisKKwlyZXR1cm4gcmV0OworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCit7CisJY2hhciBwcm9nW10gPSAiaWd0X2Rlc2NyaWJlIjsKKwlpbnQgc3RhdHVzOwor CWludCBvdXRmZCwgZXJyZmQ7CisKKwkvKiBkZXNjcmliZSBhbGwgc3VidGVzdCAqLyB7CisJCXN0 YXRpYyBjaGFyIG91dFs0MDk2XTsKKwkJY2hhciBhcmdbXSA9ICItLWRlc2NyaWJlIjsKKwkJY2hh ciAqZmFrZV9hcmd2W10gPSB7cHJvZywgYXJnfTsKKwkJaW50IGZha2VfYXJnYyA9IEFSUkFZX1NJ WkUoZmFrZV9hcmd2KTsKKworCQlwaWRfdCBwaWQgPSBkb19mb3JrKGZha2VfYXJnYywgZmFrZV9h cmd2LCAmb3V0ZmQsICZlcnJmZCk7CisKKwkJcmVhZF93aG9sZV9waXBlKG91dGZkLCBvdXQsIHNp emVvZihvdXQpKTsKKwkJYXNzZXJ0X3BpcGVfZW1wdHkoZXJyZmQpOworCisJCWludGVybmFsX2Fz c2VydChfd2FpdChwaWQsICZzdGF0dXMpICE9IC0xKTsKKwkJaW50ZXJuYWxfYXNzZXJ0KFdFWElU U1RBVFVTKHN0YXR1cykgPT0gSUdUX0VYSVRfU1VDQ0VTUyk7CisJCWludGVybmFsX2Fzc2VydCgw ID09IHN0cmNtcChERVNDUklCRV9BTExfT1VUUFVULCBvdXQpKTsKKworCQljbG9zZShvdXRmZCk7 CisJCWNsb3NlKGVycmZkKTsKKwl9CisKKwkvKiBkZXNjcmliZSBDIHVzaW5nIGEgcGF0dGVybiAq LyB7CisJCXN0YXRpYyBjaGFyIG91dFs0MDk2XTsKKwkJY2hhciBhcmdbXSA9ICItLWRlc2NyaWJl PUMiOworCQljaGFyICpmYWtlX2FyZ3ZbXSA9IHtwcm9nLCBhcmd9OworCQlpbnQgZmFrZV9hcmdj ID0gQVJSQVlfU0laRShmYWtlX2FyZ3YpOworCisJCXBpZF90IHBpZCA9IGRvX2ZvcmsoZmFrZV9h cmdjLCBmYWtlX2FyZ3YsICZvdXRmZCwgJmVycmZkKTsKKworCQlyZWFkX3dob2xlX3BpcGUob3V0 ZmQsIG91dCwgc2l6ZW9mKG91dCkpOworCQlhc3NlcnRfcGlwZV9lbXB0eShlcnJmZCk7CisKKwkJ aW50ZXJuYWxfYXNzZXJ0KF93YWl0KHBpZCwgJnN0YXR1cykgIT0gLTEpOworCQlpbnRlcm5hbF9h c3NlcnQoV0VYSVRTVEFUVVMoc3RhdHVzKSA9PSBJR1RfRVhJVF9TVUNDRVNTKTsKKwkJaW50ZXJu YWxfYXNzZXJ0KDAgPT0gc3RyY21wKEpVU1RfQ19PVVRQVVQsIG91dCkpOworCisJCWNsb3NlKG91 dGZkKTsKKwkJY2xvc2UoZXJyZmQpOworCX0KKworCS8qIGZhaWwgZGVzY3JpYmluZyB3aXRoIGEg YmFkIHBhdHRlcm4gKi8geworCQlzdGF0aWMgY2hhciBlcnJbNDA5Nl07CisJCWNoYXIgYXJnW10g PSAiLS1kZXNjcmliZT1aIjsKKwkJY2hhciAqZmFrZV9hcmd2W10gPSB7cHJvZywgYXJnfTsKKwkJ aW50IGZha2VfYXJnYyA9IEFSUkFZX1NJWkUoZmFrZV9hcmd2KTsKKworCQlwaWRfdCBwaWQgPSBk b19mb3JrKGZha2VfYXJnYywgZmFrZV9hcmd2LCAmb3V0ZmQsICZlcnJmZCk7CisKKwkJcmVhZF93 aG9sZV9waXBlKGVycmZkLCBlcnIsIHNpemVvZihlcnIpKTsKKworCQlpbnRlcm5hbF9hc3NlcnQo X3dhaXQocGlkLCAmc3RhdHVzKSAhPSAtMSk7CisJCWludGVybmFsX2Fzc2VydChXRVhJVFNUQVRV UyhzdGF0dXMpID09IElHVF9FWElUX0lOVkFMSUQpOworCQlpbnRlcm5hbF9hc3NlcnQoc3Ryc3Ry KGVyciwgIlVua25vd24gc3VidGVzdDogWiIpKTsKKworCQljbG9zZShvdXRmZCk7CisJCWNsb3Nl KGVycmZkKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9tZXNv bi5idWlsZCBiL2xpYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBiOTMwZWU2ZS4uNGQ5MDdlMzQg MTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9tZXNvbi5idWlsZAorKysgYi9saWIvdGVzdHMvbWVzb24u YnVpbGQKQEAgLTMsNiArMyw3IEBAIGxpYl90ZXN0cyA9IFsKIAknaWd0X2Nhbl9mYWlsJywKIAkn aWd0X2Nhbl9mYWlsX3NpbXBsZScsCiAJJ2lndF9jb25mbGljdGluZ19hcmdzJywKKwknaWd0X2Rl c2NyaWJlJywKIAknaWd0X2VkaWQnLAogCSdpZ3RfZXhpdF9oYW5kbGVyJywKIAknaWd0X2Zvcmsn LAotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=