From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5A35F892A8 for ; Mon, 2 Dec 2019 13:01:16 +0000 (UTC) From: Petri Latvala Date: Mon, 2 Dec 2019 15:01:01 +0200 Message-Id: <20191202130109.929-4-petri.latvala@intel.com> In-Reply-To: <20191202130109.929-1-petri.latvala@intel.com> References: <20191202130109.929-1-petri.latvala@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 03/11] runner/resultgen: Extract finding begin/end pointers for test output to helpers 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: U2lnbmVkLW9mZi1ieTogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+Ci0t LQogcnVubmVyL3Jlc3VsdGdlbi5jIHwgMjExICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCAxMDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcnVubmVyL3Jlc3VsdGdlbi5jIGIvcnVubmVyL3Jl c3VsdGdlbi5jCmluZGV4IGJlMDU4MzI3Li4yM2JiMzMzMSAxMDA2NDQKLS0tIGEvcnVubmVyL3Jl c3VsdGdlbi5jCisrKyBiL3J1bm5lci9yZXN1bHRnZW4uYwpAQCAtNDI0LDYgKzQyNCw3MSBAQCBz dGF0aWMgaW50IGZpbmRfc3VidGVzdF9pZHgoc3RydWN0IG1hdGNoZXMgbWF0Y2hlcywKIAlyZXR1 cm4gZmluZF9zdWJ0ZXN0X2lkeF9saW1pdGVkKG1hdGNoZXMsIGJ1ZmVuZCwgbGluZWtleSwgcGF0 dGVybiwgc3VidGVzdF9uYW1lLCAwLCBtYXRjaGVzLnNpemUpOwogfQogCitzdGF0aWMgY29uc3Qg Y2hhciAqZmluZF9zdWJ0ZXN0X2JlZ2luX2xpbWl0KHN0cnVjdCBtYXRjaGVzIG1hdGNoZXMsCisJ CQkJCSAgICBpbnQgYmVnaW5faWR4LAorCQkJCQkgICAgaW50IHJlc3VsdF9pZHgsCisJCQkJCSAg ICBjb25zdCBjaGFyICpidWYsCisJCQkJCSAgICBjb25zdCBjaGFyICpidWZlbmQpCit7CisJLyog Tm8gbWF0Y2hpbmcgb3V0cHV0IGF0IGFsbCwgaW5jbHVkZSBldmVyeXRoaW5nICovCisJaWYgKGJl Z2luX2lkeCA8IDAgJiYgcmVzdWx0X2lkeCA8IDApCisJCXJldHVybiBidWY7CisKKwlpZiAoYmVn aW5faWR4IDwgMCkgeworCQkvKgorCQkgKiBTdWJ0ZXN0IGRpZG4ndCBzdGFydCwgYnV0IHdlIGhh dmUgdGhlCisJCSAqIHJlc3VsdC4gUHJvYmFibHkgYmVjYXVzZSBhbiBpZ3RfZml4dHVyZQorCQkg KiBtYWRlIGl0IGZhaWwvc2tpcC4KKwkJICoKKwkJICogV2UgZ28gYmFja3dhcmRzIG9uZSBtYXRj aCBmcm9tIHRoZSByZXN1bHQgbWF0Y2gsCisJCSAqIGFuZCBzdGFydCBmcm9tIHRoZSBuZXh0IGxp bmUuCisJCSAqLworCQlpZiAocmVzdWx0X2lkeCA+IDApCisJCQlyZXR1cm4gbmV4dF9saW5lKG1h dGNoZXMuaXRlbXNbcmVzdWx0X2lkeCAtIDFdLndoZXJlLCBidWZlbmQpOworCQllbHNlCisJCQly ZXR1cm4gYnVmOworCX0KKworCS8qIEluY2x1ZGUgYWxsIG5vbi1zcGVjaWFsIG91dHB1dCBiZWZv cmUgdGhlIGJlZ2lubmluZyBsaW5lLiAqLworCWlmIChiZWdpbl9pZHggPT0gMCkKKwkJcmV0dXJu IGJ1ZjsKKworCXJldHVybiBuZXh0X2xpbmUobWF0Y2hlcy5pdGVtc1tiZWdpbl9pZHggLSAxXS53 aGVyZSwgYnVmZW5kKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmZpbmRfc3VidGVzdF9lbmRf bGltaXQoc3RydWN0IG1hdGNoZXMgbWF0Y2hlcywKKwkJCQkJICBpbnQgYmVnaW5faWR4LAorCQkJ CQkgIGludCByZXN1bHRfaWR4LAorCQkJCQkgIGNvbnN0IGNoYXIgKmJ1ZiwKKwkJCQkJICBjb25z dCBjaGFyICpidWZlbmQpCit7CisJaW50IGs7CisKKwkvKiBObyBtYXRjaGluZyBvdXRwdXQgYXQg YWxsLCBpbmNsdWRlIGV2ZXJ5dGhpbmcgKi8KKwlpZiAoYmVnaW5faWR4IDwgMCAmJiByZXN1bHRf aWR4IDwgMCkKKwkJcmV0dXJuIGJ1ZmVuZDsKKworCWlmIChyZXN1bHRfaWR4IDwgMCkgeworCQkv KgorCQkgKiBJbmNvbXBsZXRlIHJlc3VsdC4gSW5jbHVkZSBhbGwgb3V0cHV0IHVwIHRvIHRoZQor CQkgKiBuZXh0IHN0YXJ0aW5nIHN1YnRlc3QsIG9yIHRoZSByZXN1bHQgb2Ygb25lLgorCQkgKi8K KwkJZm9yIChrID0gYmVnaW5faWR4ICsgMTsgayA8IG1hdGNoZXMuc2l6ZTsgaysrKSB7CisJCQlp ZiAobWF0Y2hlcy5pdGVtc1trXS53aGF0ID09IFNUQVJUSU5HX1NVQlRFU1QgfHwKKwkJCSAgICBt YXRjaGVzLml0ZW1zW2tdLndoYXQgPT0gU1VCVEVTVF9SRVNVTFQpCisJCQkJcmV0dXJuIG1hdGNo ZXMuaXRlbXNba10ud2hlcmU7CisJCX0KKworCQlyZXR1cm4gYnVmZW5kOworCX0KKworCS8qIElu Y2x1ZGUgYWxsIG5vbi1zcGVjaWFsIG91dHB1dCB0byB0aGUgbmV4dCBtYXRjaCwgd2hhdGV2ZXIg aXQgaXMuICovCisJaWYgKHJlc3VsdF9pZHggPCBtYXRjaGVzLnNpemUgLSAxKQorCQlyZXR1cm4g bWF0Y2hlcy5pdGVtc1tyZXN1bHRfaWR4ICsgMV0ud2hlcmU7CisKKwlyZXR1cm4gYnVmZW5kOwor fQorCiBzdGF0aWMgYm9vbCBmaWxsX2Zyb21fb3V0cHV0KGludCBmZCwgY29uc3QgY2hhciAqYmlu YXJ5LCBjb25zdCBjaGFyICprZXksCiAJCQkgICAgIHN0cnVjdCBzdWJ0ZXN0X2xpc3QgKnN1YnRl c3RzLAogCQkJICAgICBzdHJ1Y3QganNvbl9vYmplY3QgKnRlc3RzKQpAQCAtNDk4LDU0ICs1NjMs OCBAQCBzdGF0aWMgYm9vbCBmaWxsX2Zyb21fb3V0cHV0KGludCBmZCwgY29uc3QgY2hhciAqYmlu YXJ5LCBjb25zdCBjaGFyICprZXksCiAJCWJlZ2luX2lkeCA9IGZpbmRfc3VidGVzdF9pZHgobWF0 Y2hlcywgYnVmZW5kLCBTVEFSVElOR19TVUJURVNULCAiJXMlc1xuIiwgc3VidGVzdHMtPnN1YnNb aV0ubmFtZSk7CiAJCXJlc3VsdF9pZHggPSBmaW5kX3N1YnRlc3RfaWR4KG1hdGNoZXMsIGJ1ZmVu ZCwgU1VCVEVTVF9SRVNVTFQsICIlcyVzOiAiLCBzdWJ0ZXN0cy0+c3Vic1tpXS5uYW1lKTsKIAot CQlpZiAoYmVnaW5faWR4IDwgMCAmJiByZXN1bHRfaWR4IDwgMCkgewotCQkJLyogTm8gb3V0cHV0 IGF0IGFsbCAqLwotCQkJYmVnID0gYnVmOwotCQkJZW5kID0gYnVmZW5kOwotCQl9IGVsc2UgaWYg KGJlZ2luX2lkeCA8IDApIHsKLQkJCS8qCi0JCQkgKiBTdWJ0ZXN0IGRpZG4ndCBzdGFydCwgYnV0 IHdlIGhhdmUgdGhlCi0JCQkgKiByZXN1bHQuIFByb2JhYmx5IGJlY2F1c2UgYW4gaWd0X2ZpeHR1 cmUKLQkJCSAqIG1hZGUgaXQgZmFpbC9za2lwLgotCQkJICoKLQkJCSAqIFN0YXJ0IHRoZSBvdXRw dXQgcmlnaHQgYWZ0ZXIgdGhlIHByZXZpb3VzCi0JCQkgKiBzdWJ0ZXN0IHJlc3VsdC9zdGFydC4K LQkJCSAqLwotCQkJaWYgKHJlc3VsdF9pZHggPiAwKQotCQkJCWJlZyA9IG5leHRfbGluZShtYXRj aGVzLml0ZW1zW3Jlc3VsdF9pZHggLSAxXS53aGVyZSwgYnVmZW5kKTsKLQkJCWVsc2UKLQkJCQli ZWcgPSBidWY7Ci0JCX0gZWxzZSB7Ci0JCQkvKiBTdHJldGNoIG91dHB1dCBiZWdpbm5pbmcgYmFj a3dhcmRzICovCi0JCQlpZiAoYmVnaW5faWR4ID09IDApCi0JCQkJYmVnID0gYnVmOwotCQkJZWxz ZQotCQkJCWJlZyA9IG5leHRfbGluZShtYXRjaGVzLml0ZW1zW2JlZ2luX2lkeCAtIDFdLndoZXJl LCBidWZlbmQpOwotCQl9Ci0KLQkJaWYgKHJlc3VsdF9pZHggPCAwICYmIGJlZ2luX2lkeCA8IDAp IHsKLQkJCS8qIE5vIG91dHB1dCBhdCBhbGw6IEFscmVhZHkgaGFuZGxlZCBhYm92ZSAqLwotCQl9 IGVsc2UgaWYgKHJlc3VsdF9pZHggPCAwKSB7Ci0JCQkvKgotCQkJICogSW5jb21wbGV0ZSByZXN1 bHQuIEluY2x1ZGUgb3V0cHV0IHVwIHRvIHRoZQotCQkJICogbmV4dCBzdGFydGluZyBzdWJ0ZXN0 IG9yIHJlc3VsdC4KLQkJCSAqLwotCQkJZm9yIChrID0gYmVnaW5faWR4ICsgMTsgayA8IG1hdGNo ZXMuc2l6ZTsgaysrKSB7Ci0JCQkJaWYgKG1hdGNoZXMuaXRlbXNba10ud2hhdCA9PSBTVEFSVElO R19TVUJURVNUIHx8Ci0JCQkJICAgIG1hdGNoZXMuaXRlbXNba10ud2hhdCA9PSBTVUJURVNUX1JF U1VMVCkKLQkJCQkJYnJlYWs7Ci0JCQl9Ci0JCQlpZiAoayA8IG1hdGNoZXMuc2l6ZSkKLQkJCQll bmQgPSBtYXRjaGVzLml0ZW1zW2tdLndoZXJlOwotCQkJZWxzZQotCQkJCWVuZCA9IGJ1ZmVuZDsK LQkJfSBlbHNlIHsKLQkJCS8qIFN0cmV0Y2ggb3V0cHV0IHRvIHRoZSBuZXh0IHN0YXJ0aW5nIHN1 YnRlc3Qgb3IgcmVzdWx0LiAqLwotCQkJaWYgKHJlc3VsdF9pZHggPCBtYXRjaGVzLnNpemUgLSAx KQotCQkJCWVuZCA9IG1hdGNoZXMuaXRlbXNbcmVzdWx0X2lkeCArIDFdLndoZXJlOwotCQkJZWxz ZQotCQkJCWVuZCA9IGJ1ZmVuZDsKLQkJfQorCQliZWcgPSBmaW5kX3N1YnRlc3RfYmVnaW5fbGlt aXQobWF0Y2hlcywgYmVnaW5faWR4LCByZXN1bHRfaWR4LCBidWYsIGJ1ZmVuZCk7CisJCWVuZCA9 IGZpbmRfc3VidGVzdF9lbmRfbGltaXQobWF0Y2hlcywgYmVnaW5faWR4LCByZXN1bHRfaWR4LCBi dWYsIGJ1ZmVuZCk7CiAKIAkJanNvbl9vYmplY3Rfb2JqZWN0X2FkZChjdXJyZW50X3Rlc3QsIGtl eSwKIAkJCQkgICAgICAganNvbl9vYmplY3RfbmV3X3N0cmluZ19sZW4oYmVnLCBlbmQgLSBiZWcp KTsKQEAgLTU2Nyw2OCArNTg2LDU2IEBAIHN0YXRpYyBib29sIGZpbGxfZnJvbV9vdXRwdXQoaW50 IGZkLCBjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmtleSwKIAkJICogdGhlIHN1YnRl c3Qgb3V0cHV0LgogCQkgKi8KIAkJaWYgKHJlc3VsdF9pZHggPCAwKSB7Ci0JCQkvKiBJZiB0aGUg c3VidGVzdCBpdHNlbGYgaXMgaW5jb21wbGV0ZSwgc3RvcCBhdCB0aGUgbmV4dCBzdGFydCBvZiBh IHN1YnRlc3QgKi8KKwkJCS8qIElmIHRoZSBzdWJ0ZXN0IGl0c2VsZiBpcyBpbmNvbXBsZXRlLCBz dG9wIGF0IHRoZSBuZXh0IHN0YXJ0L2VuZCBvZiBhIHN1YnRlc3QgKi8KIAkJCWZvciAocmVzdWx0 X2lkeCA9IGJlZ2luX2lkeCArIDE7CiAJCQkgICAgIHJlc3VsdF9pZHggPCBtYXRjaGVzLnNpemU7 CiAJCQkgICAgIHJlc3VsdF9pZHgrKykgewotCQkJCWlmIChtYXRjaGVzLml0ZW1zW3Jlc3VsdF9p ZHhdLndoYXQgPT0gU1RBUlRJTkdfU1VCVEVTVCkKKwkJCQlpZiAobWF0Y2hlcy5pdGVtc1tyZXN1 bHRfaWR4XS53aGF0ID09IFNUQVJUSU5HX1NVQlRFU1QgfHwKKwkJCQkgICAgbWF0Y2hlcy5pdGVt c1tyZXN1bHRfaWR4XS53aGF0ID09IFNVQlRFU1RfUkVTVUxUKQogCQkJCQlicmVhazsKIAkJCX0K IAkJfQogCiAJCWZvciAoayA9IGJlZ2luX2lkeCArIDE7IGsgPCByZXN1bHRfaWR4OyBrKyspIHsK LQkJCWlmIChtYXRjaGVzLml0ZW1zW2tdLndoYXQgPT0gU1RBUlRJTkdfRFlOQU1JQ19TVUJURVNU KSB7Ci0JCQkJc3RydWN0IGpzb25fb2JqZWN0ICpjdXJyZW50X2R5bmFtaWNfdGVzdCA9IE5VTEw7 Ci0JCQkJaW50IGR5bl9yZXN1bHRfaWR4ID0gLTE7Ci0JCQkJY2hhciBkeW5hbWljX25hbWVbMjU2 XTsKLQkJCQljaGFyIGR5bmFtaWNfcGlnbGl0X25hbWVbMjU2XTsKLQkJCQljb25zdCBjaGFyICpk eW5iZWcsICpkeW5lbmQ7Ci0KLQkJCQlpZiAoc3NjYW5mKG1hdGNoZXMuaXRlbXNba10ud2hlcmUg KyBzdHJsZW4oU1RBUlRJTkdfRFlOQU1JQ19TVUJURVNUKSwgIiVzIiwgZHluYW1pY19uYW1lKSAh PSAxKSB7Ci0JCQkJCS8qIENhbm5vdCBwYXJzZSBuYW1lLCBqdXN0IGlnbm9yZSB0aGlzIG9uZSAq LwotCQkJCQljb250aW51ZTsKLQkJCQl9Ci0KLQkJCQlkeW5fcmVzdWx0X2lkeCA9IGZpbmRfc3Vi dGVzdF9pZHhfbGltaXRlZChtYXRjaGVzLCBlbmQsIERZTkFNSUNfU1VCVEVTVF9SRVNVTFQsICIl cyVzOiAiLCBkeW5hbWljX25hbWUsIGssIHJlc3VsdF9pZHgpOwotCi0JCQkJaWYgKGsgPT0gMCkK LQkJCQkJZHluYmVnID0gYmVnOwotCQkJCWVsc2UKLQkJCQkJZHluYmVnID0gbmV4dF9saW5lKG1h dGNoZXMuaXRlbXNbayAtIDFdLndoZXJlLCBlbmQpOwotCi0JCQkJaWYgKGR5bl9yZXN1bHRfaWR4 IDwgMCkgewotCQkJCQlpZiAoayA8IG1hdGNoZXMuc2l6ZSAtIDEpCi0JCQkJCQlkeW5lbmQgPSBt YXRjaGVzLml0ZW1zW2sgKyAxXS53aGVyZTsKLQkJCQkJZWxzZQotCQkJCQkJZHluZW5kID0gZW5k OwotCQkJCX0gZWxzZSB7Ci0JCQkJCWlmIChkeW5fcmVzdWx0X2lkeCA8IG1hdGNoZXMuc2l6ZSAt IDEpCi0JCQkJCQlkeW5lbmQgPSBtYXRjaGVzLml0ZW1zW2R5bl9yZXN1bHRfaWR4ICsgMV0ud2hl cmU7Ci0JCQkJCWVsc2UKLQkJCQkJCWR5bmVuZCA9IGVuZDsKLQkJCQl9Ci0KLQkJCQlnZW5lcmF0 ZV9waWdsaXRfbmFtZV9mb3JfZHluYW1pYyhwaWdsaXRfbmFtZSwgZHluYW1pY19uYW1lLCBkeW5h bWljX3BpZ2xpdF9uYW1lLCBzaXplb2YoZHluYW1pY19waWdsaXRfbmFtZSkpOwotCi0JCQkJYWRk X2R5bmFtaWNfc3VidGVzdCgmc3VidGVzdHMtPnN1YnNbaV0sIHN0cmR1cChkeW5hbWljX25hbWUp KTsKLQkJCQljdXJyZW50X2R5bmFtaWNfdGVzdCA9IGdldF9vcl9jcmVhdGVfanNvbl9vYmplY3Qo dGVzdHMsIGR5bmFtaWNfcGlnbGl0X25hbWUpOwotCi0JCQkJanNvbl9vYmplY3Rfb2JqZWN0X2Fk ZChjdXJyZW50X2R5bmFtaWNfdGVzdCwga2V5LAotCQkJCQkJICAgICAgIGpzb25fb2JqZWN0X25l d19zdHJpbmdfbGVuKGR5bmJlZywgZHluZW5kIC0gZHluYmVnKSk7Ci0JCQkJYWRkX2lndF92ZXJz aW9uKGN1cnJlbnRfZHluYW1pY190ZXN0LCBpZ3RfdmVyc2lvbiwgaWd0X3ZlcnNpb25fbGVuKTsK LQotCQkJCWlmICghanNvbl9vYmplY3Rfb2JqZWN0X2dldF9leChjdXJyZW50X2R5bmFtaWNfdGVz dCwgInJlc3VsdCIsIE5VTEwpKSB7Ci0JCQkJCWNvbnN0IGNoYXIgKmR5bnJlc3VsdHRleHQ7Ci0J CQkJCWRvdWJsZSBkeW50aW1lOwotCi0JCQkJCXBhcnNlX3N1YnRlc3RfcmVzdWx0KGR5bmFtaWNf bmFtZSwKLQkJCQkJCQkgICAgIERZTkFNSUNfU1VCVEVTVF9SRVNVTFQsCi0JCQkJCQkJICAgICAm ZHlucmVzdWx0dGV4dCwgJmR5bnRpbWUsCi0JCQkJCQkJICAgICBkeW5fcmVzdWx0X2lkeCA8IDAg PyBOVUxMIDogbWF0Y2hlcy5pdGVtc1tkeW5fcmVzdWx0X2lkeF0ud2hlcmUsCi0JCQkJCQkJICAg ICBkeW5lbmQpOwotCQkJCQlzZXRfcmVzdWx0KGN1cnJlbnRfZHluYW1pY190ZXN0LCBkeW5yZXN1 bHR0ZXh0KTsKLQkJCQkJc2V0X3J1bnRpbWUoY3VycmVudF9keW5hbWljX3Rlc3QsIGR5bnRpbWUp OwotCQkJCX0KKwkJCXN0cnVjdCBqc29uX29iamVjdCAqY3VycmVudF9keW5hbWljX3Rlc3QgPSBO VUxMOworCQkJaW50IGR5bl9yZXN1bHRfaWR4ID0gLTE7CisJCQljaGFyIGR5bmFtaWNfbmFtZVsy NTZdOworCQkJY2hhciBkeW5hbWljX3BpZ2xpdF9uYW1lWzI1Nl07CisJCQljb25zdCBjaGFyICpk eW5iZWcsICpkeW5lbmQ7CisKKwkJCWlmIChtYXRjaGVzLml0ZW1zW2tdLndoYXQgIT0gU1RBUlRJ TkdfRFlOQU1JQ19TVUJURVNUKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoc3NjYW5mKG1hdGNo ZXMuaXRlbXNba10ud2hlcmUgKyBzdHJsZW4oU1RBUlRJTkdfRFlOQU1JQ19TVUJURVNUKSwgIiVz IiwgZHluYW1pY19uYW1lKSAhPSAxKSB7CisJCQkJLyogQ2Fubm90IHBhcnNlIG5hbWUsIGp1c3Qg aWdub3JlIHRoaXMgb25lICovCisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWR5bl9yZXN1bHRf aWR4ID0gZmluZF9zdWJ0ZXN0X2lkeF9saW1pdGVkKG1hdGNoZXMsIGVuZCwgRFlOQU1JQ19TVUJU RVNUX1JFU1VMVCwgIiVzJXM6ICIsIGR5bmFtaWNfbmFtZSwgaywgcmVzdWx0X2lkeCk7CisKKwkJ CWR5bmJlZyA9IGZpbmRfc3VidGVzdF9iZWdpbl9saW1pdChtYXRjaGVzLCBrLCBkeW5fcmVzdWx0 X2lkeCwgYmVnLCBlbmQpOworCQkJZHluZW5kID0gZmluZF9zdWJ0ZXN0X2VuZF9saW1pdChtYXRj aGVzLCBrLCBkeW5fcmVzdWx0X2lkeCwgYmVnLCBlbmQpOworCisJCQlnZW5lcmF0ZV9waWdsaXRf bmFtZV9mb3JfZHluYW1pYyhwaWdsaXRfbmFtZSwgZHluYW1pY19uYW1lLCBkeW5hbWljX3BpZ2xp dF9uYW1lLCBzaXplb2YoZHluYW1pY19waWdsaXRfbmFtZSkpOworCisJCQlhZGRfZHluYW1pY19z dWJ0ZXN0KCZzdWJ0ZXN0cy0+c3Vic1tpXSwgc3RyZHVwKGR5bmFtaWNfbmFtZSkpOworCQkJY3Vy cmVudF9keW5hbWljX3Rlc3QgPSBnZXRfb3JfY3JlYXRlX2pzb25fb2JqZWN0KHRlc3RzLCBkeW5h bWljX3BpZ2xpdF9uYW1lKTsKKworCQkJanNvbl9vYmplY3Rfb2JqZWN0X2FkZChjdXJyZW50X2R5 bmFtaWNfdGVzdCwga2V5LAorCQkJCQkgICAgICAganNvbl9vYmplY3RfbmV3X3N0cmluZ19sZW4o ZHluYmVnLCBkeW5lbmQgLSBkeW5iZWcpKTsKKwkJCWFkZF9pZ3RfdmVyc2lvbihjdXJyZW50X2R5 bmFtaWNfdGVzdCwgaWd0X3ZlcnNpb24sIGlndF92ZXJzaW9uX2xlbik7CisKKwkJCWlmICghanNv bl9vYmplY3Rfb2JqZWN0X2dldF9leChjdXJyZW50X2R5bmFtaWNfdGVzdCwgInJlc3VsdCIsIE5V TEwpKSB7CisJCQkJY29uc3QgY2hhciAqZHlucmVzdWx0dGV4dDsKKwkJCQlkb3VibGUgZHludGlt ZTsKKworCQkJCXBhcnNlX3N1YnRlc3RfcmVzdWx0KGR5bmFtaWNfbmFtZSwKKwkJCQkJCSAgICAg RFlOQU1JQ19TVUJURVNUX1JFU1VMVCwKKwkJCQkJCSAgICAgJmR5bnJlc3VsdHRleHQsICZkeW50 aW1lLAorCQkJCQkJICAgICBkeW5fcmVzdWx0X2lkeCA8IDAgPyBOVUxMIDogbWF0Y2hlcy5pdGVt c1tkeW5fcmVzdWx0X2lkeF0ud2hlcmUsCisJCQkJCQkgICAgIGR5bmVuZCk7CisJCQkJc2V0X3Jl c3VsdChjdXJyZW50X2R5bmFtaWNfdGVzdCwgZHlucmVzdWx0dGV4dCk7CisJCQkJc2V0X3J1bnRp bWUoY3VycmVudF9keW5hbWljX3Rlc3QsIGR5bnRpbWUpOwogCQkJfQogCQl9CiAJfQotLSAKMi4x OS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=