From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21088 invoked by alias); 9 Jan 2014 13:13:01 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 21077 invoked by uid 89); 9 Jan 2014 13:13:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-qc0-f169.google.com Received: from mail-qc0-f169.google.com (HELO mail-qc0-f169.google.com) (209.85.216.169) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Thu, 09 Jan 2014 13:12:57 +0000 Received: by mail-qc0-f169.google.com with SMTP id r5so2629196qcx.14 for ; Thu, 09 Jan 2014 05:12:55 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.49.35.112 with SMTP id g16mr7239318qej.13.1389273175726; Thu, 09 Jan 2014 05:12:55 -0800 (PST) Received: by 10.229.195.196 with HTTP; Thu, 9 Jan 2014 05:12:55 -0800 (PST) Date: Thu, 09 Jan 2014 13:13:00 -0000 Message-ID: Subject: [PATCH 5/5] Fix for D demangling in GDB From: Iain Buclaw To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=047d7b676f7c22cf5504ef895eae X-IsSubscribed: yes X-SW-Source: 2014-01/txt/msg00239.txt.bz2 --047d7b676f7c22cf5504ef895eae Content-Type: text/plain; charset=ISO-8859-1 Content-length: 489 This both fixes D demangling in GDB and updates it to the current D mangling spec. 2014-01-07 Iain Buclaw gdb/ * d-lang.h (d_parse_symbol): Add declaration. * d-lang.c (extract_identifiers) (extract_type_info): Remove functions. (d_demangle): Use d_parse_symbol implemented in d-support.c to demangle D symbols. * d-support.c: New file. gdb/testsuite/ * gdb.dlang/demangle.exp: New file. --- --047d7b676f7c22cf5504ef895eae Content-Type: text/x-patch; charset=US-ASCII; name="dlang-p5.patch" Content-Disposition: attachment; filename="dlang-p5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hq81dfrb0 Content-length: 52013 IGdkYi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkg KwogZ2RiL01ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgIHwgICAg MyArLQogZ2RiL2QtbGFuZy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDE2NSArLS0tLS0tLS0KIGdkYi9kLWxhbmcuaCAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDQgKwogZ2RiL2Qtc3VwcG9ydC5jICAgICAgICAgICAg ICAgICAgICAgIHwgIDYwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZyAgICAgICAgICAgICAg fCAgICA0ICsKIGdkYi90ZXN0c3VpdGUvZ2RiLmRsYW5nL2RlbWFuZ2xlLmV4 cCB8ICAyMjMgKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA4NjIg aW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgppbmRleCA4MjRi MjZiLi5mNTU3YmZlIDEwMDY0NAotLS0gYS9nZGIvTWFrZWZpbGUuaW4KKysr IGIvZ2RiL01ha2VmaWxlLmluCkBAIC03MjcsNyArNzI3LDcgQEAgU0ZJTEVT ID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12 YWxwcmludC5jIGFkYS10YXNrcy5jIFwKIAljaGFyc2V0LmMgY2xlYW51cHMu YyBjbGktb3V0LmMgY29mZnJlYWQuYyBjb2ZmLXBlLXJlYWQuYyBcCiAJY29t cGxhaW50cy5jIGNvbXBsZXRlci5jIGNvbnRpbnVhdGlvbnMuYyBjb3JlZmls ZS5jIGNvcmVsb3cuYyBcCiAJY3AtYWJpLmMgY3Atc3VwcG9ydC5jIGNwLW5h bWVzcGFjZS5jIGNwLXZhbHByaW50LmMgXAotCWQtbGFuZy5jIGQtdmFscHJp bnQuYyBcCisJZC1sYW5nLmMgZC1zdXBwb3J0LmMgZC12YWxwcmludC5jIFwK IAljcC1uYW1lLXBhcnNlci55IFwKIAlkYnhyZWFkLmMgZGVtYW5nbGUuYyBk aWN0aW9uYXJ5LmMgZGlzYXNtLmMgZG91Ymxlc3QuYyBkdW1teS1mcmFtZS5j IFwKIAlkd2FyZjJleHByLmMgZHdhcmYybG9jLmMgZHdhcmYycmVhZC5jIGR3 YXJmMi1mcmFtZS5jIFwKQEAgLTk0Nyw2ICs5NDcsNyBAQCBDT01NT05fT0JT ID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkKFlZT0JKKSBcCiAJaW5s aW5lLWZyYW1lLm8gXAogCWdudS12Mi1hYmkubyBnbnUtdjMtYWJpLm8gY3At YWJpLm8gY3Atc3VwcG9ydC5vIFwKIAljcC1uYW1lc3BhY2UubyBcCisJZC1z dXBwb3J0Lm8gXAogCXJlZ2dyb3Vwcy5vIHJlZ3NldC5vIFwKIAl0cmFkLWZy YW1lLm8gXAogCXRyYW1wLWZyYW1lLm8gXApkaWZmIC0tZ2l0IGEvZ2RiL2Qt bGFuZy5jIGIvZ2RiL2QtbGFuZy5jCmluZGV4IGU3NGIwNDcuLjVkNjFkMDIg MTAwNjQ0Ci0tLSBhL2dkYi9kLWxhbmcuYworKysgYi9nZGIvZC1sYW5nLmMK QEAgLTIzLDEyICsyMyw5IEBACiAjaW5jbHVkZSAidmFyb2JqLmgiCiAjaW5j bHVkZSAiZC1sYW5nLmgiCiAjaW5jbHVkZSAiYy1sYW5nLmgiCi0jaW5jbHVk ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKICNpbmNs dWRlICJnZGJfb2JzdGFjay5oIgogCi0jaW5jbHVkZSA8Y3R5cGUuaD4KLQog LyogVGhlIG5hbWUgb2YgdGhlIHN5bWJvbCB0byB1c2UgdG8gZ2V0IHRoZSBu YW1lIG9mIHRoZSBtYWluIHN1YnByb2dyYW0uICAqLwogc3RhdGljIGNvbnN0 IGNoYXIgRF9NQUlOW10gPSAiRCBtYWluIjsKIApAQCAtNTAsMTc1ICs0Nyw0 MSBAQCBkX21haW5fbmFtZSAodm9pZCkKICAgcmV0dXJuIE5VTEw7CiB9CiAK LS8qIEV4dHJhY3QgaWRlbnRpZmllcnMgZnJvbSBNQU5HTEVEX1NUUiBhbmQg YXBwZW5kIGl0IHRvIFRFTVBCVUYuCi0gICBSZXR1cm4gMSBvbiBzdWNjZXNz IG9yIDAgb24gZmFpbHVyZS4gICovCi1zdGF0aWMgaW50Ci1leHRyYWN0X2lk ZW50aWZpZXJzIChjb25zdCBjaGFyICptYW5nbGVkX3N0ciwgc3RydWN0IG9i c3RhY2sgKnRlbXBidWYpCi17Ci0gIGxvbmcgaSA9IDA7Ci0KLSAgd2hpbGUg KGlzZGlnaXQgKCptYW5nbGVkX3N0cikpCi0gICAgewotICAgICAgY2hhciAq ZW5kX3B0cjsKLQotICAgICAgaSA9IHN0cnRvbCAobWFuZ2xlZF9zdHIsICZl bmRfcHRyLCAxMCk7Ci0gICAgICBtYW5nbGVkX3N0ciA9IGVuZF9wdHI7Ci0g ICAgICBpZiAoaSA8PSAwIHx8IHN0cmxlbiAobWFuZ2xlZF9zdHIpIDwgaSkK LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBvYnN0YWNrX2dyb3cgKHRlbXBi dWYsIG1hbmdsZWRfc3RyLCBpKTsKLSAgICAgIG1hbmdsZWRfc3RyICs9IGk7 Ci0gICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiLiIpOwotICAg IH0KLSAgaWYgKCptYW5nbGVkX3N0ciA9PSAnXDAnIHx8IGkgPT0gMCkKLSAg ICByZXR1cm4gMDsKLSAgb2JzdGFja19ibGFuayAodGVtcGJ1ZiwgLTEpOwot ICByZXR1cm4gMTsKLX0KLQotLyogRXh0cmFjdCBhbmQgZGVtYW5nbGUgdHlw ZSBmcm9tIE1BTkdMRURfU1RSIGFuZCBhcHBlbmQgaXQgdG8gVEVNUEJVRi4K LSAgIFJldHVybiAxIG9uIHN1Y2Nlc3Mgb3IgMCBvbiBmYWlsdXJlLiAgKi8K LXN0YXRpYyBpbnQKLWV4dHJhY3RfdHlwZV9pbmZvIChjb25zdCBjaGFyICpt YW5nbGVkX3N0ciwgc3RydWN0IG9ic3RhY2sgKnRlbXBidWYpCi17Ci0gIGlm ICgqbWFuZ2xlZF9zdHIgPT0gJ1wwJykKLSAgICByZXR1cm4gMDsKLSAgc3dp dGNoICgqbWFuZ2xlZF9zdHIrKykKLSAgICB7Ci0gICAgICBjYXNlICdBJzog LyogZHluYW1pYyBhcnJheSAqLwotICAgICAgY2FzZSAnRyc6IC8qIHN0YXRp YyBhcnJheSAqLwotICAgICAgY2FzZSAnSCc6IC8qIGFzc29jaWF0aXZlIGFy cmF5ICovCi0JaWYgKCFleHRyYWN0X3R5cGVfaW5mbyAobWFuZ2xlZF9zdHIs IHRlbXBidWYpKQotCSAgcmV0dXJuIDA7Ci0Jb2JzdGFja19ncm93X3N0ciAo dGVtcGJ1ZiwgIltdIik7Ci0JcmV0dXJuIDE7Ci0gICAgICBjYXNlICdQJzog LyogcG9pbnRlciAqLwotCWlmICghZXh0cmFjdF90eXBlX2luZm8gKG1hbmds ZWRfc3RyLCB0ZW1wYnVmKSkKLQkgIHJldHVybiAwOwotCW9ic3RhY2tfZ3Jv d19zdHIgKHRlbXBidWYsICIqIik7Ci0JcmV0dXJuIDE7Ci0gICAgICBjYXNl ICdSJzogLyogcmVmZXJlbmNlICovCi0JaWYgKCFleHRyYWN0X3R5cGVfaW5m byAobWFuZ2xlZF9zdHIsIHRlbXBidWYpKQotCSAgcmV0dXJuIDA7Ci0Jb2Jz dGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIiYiKTsKLQlyZXR1cm4gMTsKLSAg ICAgIGNhc2UgJ1onOiAvKiByZXR1cm4gdmFsdWUgKi8KLQlyZXR1cm4gZXh0 cmFjdF90eXBlX2luZm8gKG1hbmdsZWRfc3RyLCB0ZW1wYnVmKTsKLSAgICAg IGNhc2UgJ0onOiAvKiBvdXQgKi8KLQlvYnN0YWNrX2dyb3dfc3RyICh0ZW1w YnVmLCAib3V0ICIpOwotCXJldHVybiBleHRyYWN0X3R5cGVfaW5mbyAobWFu Z2xlZF9zdHIsIHRlbXBidWYpOwotICAgICAgY2FzZSAnSyc6IC8qIGlub3V0 ICovCi0Jb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImlub3V0ICIpOwot CXJldHVybiBleHRyYWN0X3R5cGVfaW5mbyAobWFuZ2xlZF9zdHIsIHRlbXBi dWYpOwotICAgICAgY2FzZSAnRSc6IC8qIGVudW0gKi8KLSAgICAgIGNhc2Ug J1QnOiAvKiB0eXBlZGVmICovCi0gICAgICBjYXNlICdEJzogLyogZGVsZWdh dGUgKi8KLSAgICAgIGNhc2UgJ0MnOiAvKiBjbGFzcyAqLwotICAgICAgY2Fz ZSAnUyc6IC8qIHN0cnVjdCAqLwotCXJldHVybiBleHRyYWN0X2lkZW50aWZp ZXJzIChtYW5nbGVkX3N0ciwgdGVtcGJ1Zik7Ci0KLSAgICAgIC8qIGJhc2lj IHR5cGVzOiAqLwotICAgICAgY2FzZSAnbic6IG9ic3RhY2tfZ3Jvd19zdHIg KHRlbXBidWYsICJub25lIik7IHJldHVybiAxOwotICAgICAgY2FzZSAndic6 IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ2b2lkIik7IHJldHVybiAx OwotICAgICAgY2FzZSAnZyc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYs ICJieXRlIik7IHJldHVybiAxOwotICAgICAgY2FzZSAnaCc6IG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICJ1Ynl0ZSIpOyByZXR1cm4gMTsKLSAgICAg IGNhc2UgJ3MnOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAic2hvcnQi KTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICd0Jzogb2JzdGFja19ncm93X3N0 ciAodGVtcGJ1ZiwgInVzaG9ydCIpOyByZXR1cm4gMTsKLSAgICAgIGNhc2Ug J2knOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaW50Iik7IHJldHVy biAxOwotICAgICAgY2FzZSAnayc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBi dWYsICJ1aW50Iik7IHJldHVybiAxOwotICAgICAgY2FzZSAnbCc6IG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJsb25nIik7IHJldHVybiAxOwotICAg ICAgY2FzZSAnbSc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1bG9u ZyIpOyByZXR1cm4gMTsKLSAgICAgIGNhc2UgJ2YnOiBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAiZmxvYXQiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNl ICdkJzogb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImRvdWJsZSIpOyBy ZXR1cm4gMTsKLSAgICAgIGNhc2UgJ2UnOiBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAicmVhbCIpOyByZXR1cm4gMTsKLQotICAgICAgLyogaW1hZ2lu YXJ5IGFuZCBjb21wbGV4OiAqLwotICAgICAgY2FzZSAnbyc6IG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICJpZmxvYXQiKTsgcmV0dXJuIDE7Ci0gICAg ICBjYXNlICdwJzogb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImlkb3Vi bGUiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICdqJzogb2JzdGFja19ncm93 X3N0ciAodGVtcGJ1ZiwgImlyZWFsIik7IHJldHVybiAxOwotICAgICAgY2Fz ZSAncSc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJjZmxvYXQiKTsg cmV0dXJuIDE7Ci0gICAgICBjYXNlICdyJzogb2JzdGFja19ncm93X3N0ciAo dGVtcGJ1ZiwgImNkb3VibGUiKTsgcmV0dXJuIDE7Ci0gICAgICBjYXNlICdj Jzogb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImNyZWFsIik7IHJldHVy biAxOwotCi0gICAgICAvKiBvdGhlciB0eXBlczogKi8KLSAgICAgIGNhc2Ug J2InOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiYml0Iik7IHJldHVy biAxOwotICAgICAgY2FzZSAnYSc6IG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBi dWYsICJjaGFyIik7IHJldHVybiAxOwotICAgICAgY2FzZSAndSc6IG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ3Y2hhciIpOyByZXR1cm4gMTsKLSAg ICAgIGNhc2UgJ3cnOiBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiZGNo YXIiKTsgcmV0dXJuIDE7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0Jb2JzdGFja19n cm93X3N0ciAodGVtcGJ1ZiwgInVua25vd24iKTsKLQlyZXR1cm4gMTsKLSAg ICB9Ci19Ci0KIC8qIEltcGxlbWVudHMgdGhlIGxhX2RlbWFuZ2xlIGxhbmd1 YWdlX2RlZm4gcm91dGluZSBmb3IgbGFuZ3VhZ2UgRC4gICovCiBjaGFyICoK IGRfZGVtYW5nbGUgKGNvbnN0IGNoYXIgKnN5bWJvbCwgaW50IG9wdGlvbnMp CiB7CiAgIHN0cnVjdCBvYnN0YWNrIHRlbXBidWY7Ci0gIGNoYXIgKm91dF9z dHI7Ci0gIHVuc2lnbmVkIGNoYXIgaXNfZnVuYyA9IDA7CisgIGNoYXIgKnJl c3VsdDsKIAotICBpZiAoc3ltYm9sID09IE5VTEwpCisgIGlmIChzeW1ib2wg PT0gTlVMTCB8fCAqc3ltYm9sID09ICdcMCcpCiAgICAgcmV0dXJuIE5VTEw7 CiAgIGVsc2UgaWYgKHN0cmNtcCAoc3ltYm9sLCAiX0RtYWluIikgPT0gMCkK ICAgICByZXR1cm4geHN0cmR1cCAoIkQgbWFpbiIpOwogCiAgIG9ic3RhY2tf aW5pdCAoJnRlbXBidWYpOwotICAKLSAgaWYgKHN5bWJvbFswXSA9PSAnXycg JiYgc3ltYm9sWzFdID09ICdEJykKLSAgICB7Ci0gICAgICBzeW1ib2wgKz0g MjsKLSAgICAgIGlzX2Z1bmMgPSAxOwotICAgIH0KLSAgZWxzZSBpZiAoc3Ry bmNtcCAoc3ltYm9sLCAiX19DbGFzc18iLCA4KSA9PSAwKQotICAgIHN5bWJv bCArPSA4OwotICBlbHNlIGlmIChzdHJuY21wIChzeW1ib2wsICJfX2luaXRf IiwgNykgPT0gMCkKLSAgICBzeW1ib2wgKz0gNzsKLSAgZWxzZSBpZiAoc3Ry bmNtcCAoc3ltYm9sLCAiX192dGJsXyIsIDcpID09IDApCi0gICAgc3ltYm9s ICs9IDc7Ci0gIGVsc2UgaWYgKHN0cm5jbXAgKHN5bWJvbCwgIl9fbW9kY3Rv cl8iLCAxMCkgPT0gMCkKLSAgICBzeW1ib2wgKz0gMTA7Ci0gIGVsc2UgaWYg KHN0cm5jbXAgKHN5bWJvbCwgIl9fbW9kZHRvcl8iLCAxMCkgPT0gMCkKLSAg ICBzeW1ib2wgKz0gMTA7Ci0gIGVsc2UgaWYgKHN0cm5jbXAgKHN5bWJvbCwg Il9fTW9kdWxlSW5mb18iLCAxMykgPT0gMCkKLSAgICBzeW1ib2wgKz0gMTM7 CisKKyAgaWYgKHN0cm5jbXAgKHN5bWJvbCwgIl9EIiwgMikgPT0gMCkKKyAg ICBzeW1ib2wgKz0gMjsKICAgZWxzZQogICAgIHsKICAgICAgIG9ic3RhY2tf ZnJlZSAoJnRlbXBidWYsIE5VTEwpOwogICAgICAgcmV0dXJuIE5VTEw7CiAg ICAgfQotICAKLSAgaWYgKCFleHRyYWN0X2lkZW50aWZpZXJzIChzeW1ib2ws ICZ0ZW1wYnVmKSkKKworICBpZiAoZF9wYXJzZV9zeW1ib2wgKCZ0ZW1wYnVm LCBzeW1ib2wpICE9IE5VTEwpCisgICAgeworICAgICAgb2JzdGFja19ncm93 X3N0cjAgKCZ0ZW1wYnVmLCAiIik7CisgICAgICByZXN1bHQgPSB4c3RyZHVw IChvYnN0YWNrX2ZpbmlzaCAoJnRlbXBidWYpKTsKKyAgICAgIG9ic3RhY2tf ZnJlZSAoJnRlbXBidWYsIE5VTEwpOworICAgIH0KKyAgZWxzZQogICAgIHsK ICAgICAgIG9ic3RhY2tfZnJlZSAoJnRlbXBidWYsIE5VTEwpOwogICAgICAg cmV0dXJuIE5VTEw7CiAgICAgfQogCi0gIG9ic3RhY2tfZ3Jvd19zdHIgKCZ0 ZW1wYnVmLCAiKCIpOwotICBpZiAoaXNfZnVuYyA9PSAxICYmICpzeW1ib2wg PT0gJ0YnKQotICAgIHsKLSAgICAgIHN5bWJvbCsrOwotICAgICAgd2hpbGUg KCpzeW1ib2wgIT0gJ1wwJyAmJiAqc3ltYm9sICE9ICdaJykKLQl7Ci0JICBp ZiAoaXNfZnVuYyA9PSAxKQotCSAgICBpc19mdW5jKys7Ci0JICBlbHNlCi0J ICAgIG9ic3RhY2tfZ3Jvd19zdHIgKCZ0ZW1wYnVmLCAiLCAiKTsKLQkgIGlm ICghZXh0cmFjdF90eXBlX2luZm8gKHN5bWJvbCwgJnRlbXBidWYpKQotCSAg ICB7Ci0JICAgICAgb2JzdGFja19mcmVlICgmdGVtcGJ1ZiwgTlVMTCk7Ci0J ICAgICAgcmV0dXJuIE5VTEw7Ci0JICAgfQotCX0KLSAgICAgfQotICBvYnN0 YWNrX2dyb3dfc3RyMCAoJnRlbXBidWYsICIpIik7Ci0KLSAgLyogRG9lc24n dCBkaXNwbGF5IHRoZSByZXR1cm4gdHlwZSwgYnV0IHdvdWxkbid0IGJlIHRv byBoYXJkIHRvIGRvLiAgKi8KLQotICBvdXRfc3RyID0geHN0cmR1cCAob2Jz dGFja19maW5pc2ggKCZ0ZW1wYnVmKSk7Ci0gIG9ic3RhY2tfZnJlZSAoJnRl bXBidWYsIE5VTEwpOwotICByZXR1cm4gb3V0X3N0cjsKKyAgcmV0dXJuIHJl c3VsdDsKIH0KIAogLyogVGFibGUgbWFwcGluZyBvcGNvZGVzIGludG8gc3Ry aW5ncyBmb3IgcHJpbnRpbmcgb3BlcmF0b3JzCmRpZmYgLS1naXQgYS9nZGIv ZC1sYW5nLmggYi9nZGIvZC1sYW5nLmgKaW5kZXggN2E2YzYwOC4uMDYxMmYy NiAxMDA2NDQKLS0tIGEvZ2RiL2QtbGFuZy5oCisrKyBiL2dkYi9kLWxhbmcu aApAQCAtNjYsNCArNjYsOCBAQCBleHRlcm4gdm9pZCBkX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAog CQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogCQkJIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsKIAorLyogRGVmaW5l ZCBpbiBkLXN1cHBvcnQuYyAgKi8KKworZXh0ZXJuIGNvbnN0IGNoYXIgKmRf cGFyc2Vfc3ltYm9sIChzdHJ1Y3Qgb2JzdGFjayAqLCBjb25zdCBjaGFyICop OworCiAjZW5kaWYgLyogIWRlZmluZWQgKERfTEFOR19IKSAqLwpkaWZmIC0t Z2l0IGEvZ2RiL2Qtc3VwcG9ydC5jIGIvZ2RiL2Qtc3VwcG9ydC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxOGFjZjgKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGIvZC1zdXBwb3J0LmMKQEAgLTAsMCArMSw2MDYg QEAKKy8qIEQgbGFuZ3VhZ2Ugc3VwcG9ydCByb3V0aW5lcyBmb3IgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTQgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K KworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJkLWxhbmcuaCIKKyNp bmNsdWRlICJnZGJfb2JzdGFjay5oIgorCisjaW5jbHVkZSAic2FmZS1jdHlw ZS5oIgorCitzdGF0aWMgY29uc3QgY2hhciAqcGFyc2VfZnVuY3Rpb25fYXJn cyAoc3RydWN0IG9ic3RhY2sgKiwgY29uc3QgY2hhciAqKTsKK3N0YXRpYyBj b25zdCBjaGFyICpwYXJzZV90eXBlIChzdHJ1Y3Qgb2JzdGFjayAqLCBjb25z dCBjaGFyICopOworCisvKiBEZW1hbmdsZSB0aGUgY2FsbGluZyBjb252ZW50 aW9uIGZyb20gTUFOR0xFIGFuZCBhcHBlbmQgaXQgdG8gVEVNUEJVRi4KKyAg IFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiBzdWNjZXNzIG9yIE5V TEwgb24gZmFpbHVyZS4gICovCitzdGF0aWMgY29uc3QgY2hhciAqCitwYXJz ZV9jYWxsX2NvbnZlbnRpb24gKHN0cnVjdCBvYnN0YWNrICp0ZW1wYnVmLCBj b25zdCBjaGFyICptYW5nbGUpCit7CisgIGlmIChtYW5nbGUgPT0gTlVMTCB8 fCAqbWFuZ2xlID09ICdcMCcpCisgICAgcmV0dXJuIG1hbmdsZTsKKworICBz d2l0Y2ggKCptYW5nbGUpCisgICAgeworICAgIGNhc2UgJ0YnOiAvKiAoRCkg Ki8KKyAgICAgIG1hbmdsZSsrOworICAgICAgYnJlYWs7CisgICAgY2FzZSAn VSc6IC8qIChDKSAqLworICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAiZXh0ZXJuKEMpICIpOworICAgICAgYnJl YWs7CisgICAgY2FzZSAnVyc6IC8qIChXaW5kb3dzKSAqLworICAgICAgbWFu Z2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiZXh0 ZXJuKFdpbmRvd3MpICIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnVic6 IC8qIChQYXNjYWwpICovCisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJleHRlcm4oUGFzY2FsKSAiKTsKKyAg ICAgIGJyZWFrOworICAgIGNhc2UgJ1InOiAvKiAoQysrKSAqLworICAgICAg bWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAi ZXh0ZXJuKEMrKykgIik7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIHJldHVybiBtYW5nbGU7 Cit9CisKKy8qIERlbWFuZ2xlIHRoZSBEIGZ1bmN0aW9uIGF0dHJpYnV0ZXMg ZnJvbSBNQU5HTEUgYW5kIGFwcGVuZCBpdCB0byBURU1QQlVGLgorICAgUmV0 dXJuIHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHN1Y2Nlc3Mgb3IgTlVMTCBv biBmYWlsdXJlLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK3BhcnNlX2F0 dHJpYnV0ZXMgKHN0cnVjdCBvYnN0YWNrICp0ZW1wYnVmLCBjb25zdCBjaGFy ICptYW5nbGUpCit7CisgIGlmIChtYW5nbGUgPT0gTlVMTCB8fCAqbWFuZ2xl ID09ICdcMCcpCisgICAgcmV0dXJuIG1hbmdsZTsKKworICB3aGlsZSAoKm1h bmdsZSA9PSAnTicpCisgICAgeworICAgICAgbWFuZ2xlKys7CisgICAgICBz d2l0Y2ggKCptYW5nbGUpCisJeworCWNhc2UgJ2EnOiAvKiBwdXJlICovCisJ ICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJw dXJlICIpOworCSAgY29udGludWU7CisJY2FzZSAnYic6IC8qIG5vdGhyb3cg Ki8KKwkgIG1hbmdsZSsrOworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1 ZiwgIm5vdGhyb3cgIik7CisJICBjb250aW51ZTsKKwljYXNlICdjJzogLyog cmVmICovCisJICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRl bXBidWYsICJyZWYgIik7CisJICBjb250aW51ZTsKKwljYXNlICdkJzogLyog QHByb3BlcnR5ICovCisJICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tfZ3Jvd19z dHIgKHRlbXBidWYsICJAcHJvcGVydHkgIik7CisJICBjb250aW51ZTsKKwlj YXNlICdlJzogLyogQHRydXN0ZWQgKi8KKwkgIG1hbmdsZSsrOworCSAgb2Jz dGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIkB0cnVzdGVkICIpOworCSAgY29u dGludWU7CisJY2FzZSAnZic6IC8qIEBzYWZlICovCisJICBtYW5nbGUrKzsK KwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJAc2FmZSAiKTsKKwkg IGNvbnRpbnVlOworCWNhc2UgJ2cnOgorCWNhc2UgJ2gnOgorCSAgLyogaW5v dXQgcGFyYW1ldGVyIGlzIHJlcHJlc2VudGVkIGFzICdOZycuCisJICAgICB2 ZWN0b3IgcGFyYW1ldGVyIGlzIHJlcHJlc2VudGVkIGFzICdOaCcuCisJICAg ICBJZiB3ZSBzZWUgdGhpcywgdGhlbiB3ZSBrbm93IHdlJ3JlIHJlYWxseSBp biB0aGUKKwkgICAgIHBhcmFtZXRlciBsaXN0LiAgUmV3aW5kIGFuZCBicmVh ay4gICovCisJICBtYW5nbGUtLTsKKwl9CisgICAgICBicmVhazsKKyAgICB9 CisgIHJldHVybiBtYW5nbGU7Cit9CisKKy8qIERlbWFuZ2xlIHRoZSBmdW5j dGlvbiB0eXBlIGZyb20gTUFOR0xFIGFuZCBhcHBlbmQgaXQgdG8gVEVNUEJV Ri4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiBzdWNjZXNz IG9yIE5VTEwgb24gZmFpbHVyZS4gICovCitzdGF0aWMgY29uc3QgY2hhciAq CitwYXJzZV9mdW5jdGlvbl90eXBlIChzdHJ1Y3Qgb2JzdGFjayAqdGVtcGJ1 ZiwgY29uc3QgY2hhciAqbWFuZ2xlKQoreworICBzdHJ1Y3Qgb2JzdGFjayBv YmF0dHIsIG9iYXJncywgb2J0eXBlOworICBjaGFyICphdHRyLCAqYXJncywg KnR5cGU7CisgIHNpemVfdCBzemF0dHIsIHN6YXJncywgc3p0eXBlOworCisg IGlmIChtYW5nbGUgPT0gTlVMTCB8fCAqbWFuZ2xlID09ICdcMCcpCisgICAg cmV0dXJuIG1hbmdsZTsKKworICAvKiBUaGUgb3JkZXIgb2YgdGhlIG1hbmds ZWQgc3RyaW5nIGlzOgorICAgICBUeXBlRnVuY3Rpb24gOjoKKyAgICAgICAg Q2FsbENvbnZlbnRpb24gRnVuY0F0dHJzIEFyZ3VtZW50cyBBcmdDbG9zZSBU eXBlCisKKyAgICAgVGhlIGRlbWFuZ2xlZCBzdHJpbmcgaXMgcmUtb3JkZXJl ZCBhczoKKyAgICAgICAgQ2FsbENvbnZlbnRpb24gVHlwZSBBcmd1bWVudHMg RnVuY0F0dHJzCisgICAqLworICBvYnN0YWNrX2luaXQgKCZvYmF0dHIpOwor ICBvYnN0YWNrX2luaXQgKCZvYmFyZ3MpOworICBvYnN0YWNrX2luaXQgKCZv YnR5cGUpOworCisgIC8qIEZ1bmN0aW9uIGNhbGwgY29udmVudGlvbi4gICov CisgIG1hbmdsZSA9IHBhcnNlX2NhbGxfY29udmVudGlvbiAodGVtcGJ1Ziwg bWFuZ2xlKTsKKworICAvKiBGdW5jdGlvbiBhdHRyaWJ1dGVzLiAgKi8KKyAg bWFuZ2xlID0gcGFyc2VfYXR0cmlidXRlcyAoJm9iYXR0ciwgbWFuZ2xlKTsK KyAgc3phdHRyID0gb2JzdGFja19vYmplY3Rfc2l6ZSAoJm9iYXR0cik7Cisg IGF0dHIgPSBvYnN0YWNrX2ZpbmlzaCAoJm9iYXR0cik7CisKKyAgLyogRnVu Y3Rpb24gYXJndW1lbnRzLiAgKi8KKyAgbWFuZ2xlID0gcGFyc2VfZnVuY3Rp b25fYXJncyAoJm9iYXJncywgbWFuZ2xlKTsKKyAgc3phcmdzID0gb2JzdGFj a19vYmplY3Rfc2l6ZSAoJm9iYXJncyk7CisgIGFyZ3MgPSBvYnN0YWNrX2Zp bmlzaCAoJm9iYXJncyk7CisKKyAgLyogRnVuY3Rpb24gcmV0dXJuIHR5cGUu ICAqLworICBtYW5nbGUgPSBwYXJzZV90eXBlICgmb2J0eXBlLCBtYW5nbGUp OworICBzenR5cGUgPSBvYnN0YWNrX29iamVjdF9zaXplICgmb2J0eXBlKTsK KyAgdHlwZSA9IG9ic3RhY2tfZmluaXNoICgmb2J0eXBlKTsKKworICAvKiBB cHBlbmQgdG8gYnVmZmVyIGluIG9yZGVyLiAqLworICBvYnN0YWNrX2dyb3cg KHRlbXBidWYsIHR5cGUsIHN6dHlwZSk7CisgIG9ic3RhY2tfZ3Jvd19zdHIg KHRlbXBidWYsICIoIik7CisgIG9ic3RhY2tfZ3JvdyAodGVtcGJ1ZiwgYXJn cywgc3phcmdzKTsKKyAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIikg Iik7CisgIG9ic3RhY2tfZ3JvdyAodGVtcGJ1ZiwgYXR0ciwgc3phdHRyKTsK KworICBvYnN0YWNrX2ZyZWUgKCZvYmF0dHIsIE5VTEwpOworICBvYnN0YWNr X2ZyZWUgKCZvYmFyZ3MsIE5VTEwpOworICBvYnN0YWNrX2ZyZWUgKCZvYnR5 cGUsIE5VTEwpOworICByZXR1cm4gbWFuZ2xlOworfQorCisvKiBEZW1hbmds ZSB0aGUgYXJndW1lbnQgbGlzdCBmcm9tIE1BTkdMRSBhbmQgYXBwZW5kIGl0 IHRvIFRFTVBCVUYuCisgICBSZXR1cm4gdGhlIHJlbWFpbmluZyBzdHJpbmcg b24gc3VjY2VzcyBvciBOVUxMIG9uIGZhaWx1cmUuICAqLworc3RhdGljIGNv bnN0IGNoYXIgKgorcGFyc2VfZnVuY3Rpb25fYXJncyAoc3RydWN0IG9ic3Rh Y2sgKnRlbXBidWYsIGNvbnN0IGNoYXIgKm1hbmdsZSkKK3sKKyAgc2l6ZV90 IG4gPSAwOworCisgIHdoaWxlIChtYW5nbGUgJiYgKm1hbmdsZSAhPSAnXDAn KQorICAgIHsKKyAgICAgIHN3aXRjaCAoKm1hbmdsZSkKKwl7CisJY2FzZSAn WCc6IC8qICh2YXJpYWRpYyBUIHQuLi4pIHN0eWxlLiAgKi8KKwkgIG1hbmds ZSsrOworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIi4uLiIpOwor CSAgcmV0dXJuIG1hbmdsZTsKKwljYXNlICdZJzogLyogKHZhcmlhZGljIFQg dCwgLi4uKSBzdHlsZS4gICovCisJICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tf Z3Jvd19zdHIgKHRlbXBidWYsICIsIC4uLiIpOworCSAgcmV0dXJuIG1hbmds ZTsKKwljYXNlICdaJzogLyogTm9ybWFsIGZ1bmN0aW9uLiAgKi8KKwkgIG1h bmdsZSsrOworCSAgcmV0dXJuIG1hbmdsZTsKKwl9CisKKyAgICAgIGlmIChu KyspCisJb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIiwgIik7CisKKyAg ICAgIGlmICgqbWFuZ2xlID09ICdNJykgLyogc2NvcGUoVCkgKi8KKwl7CisJ ICBtYW5nbGUrKzsKKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJz Y29wZSAiKTsKKwl9CisKKyAgICAgIHN3aXRjaCAoKm1hbmdsZSkKKwl7CisJ Y2FzZSAnSic6IC8qIG91dChUKSAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAib3V0ICIpOworCSAgYnJlYWs7CisJ Y2FzZSAnSyc6IC8qIHJlZihUKSAqLworCSAgbWFuZ2xlKys7CisJICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAicmVmICIpOworCSAgYnJlYWs7CisJ Y2FzZSAnTCc6IC8qIGxhenkoVCkgKi8KKwkgIG1hbmdsZSsrOworCSAgb2Jz dGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImxhenkgIik7CisJICBicmVhazsK Kwl9CisgICAgICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1wYnVmLCBtYW5n bGUpOworICAgIH0KKyAgcmV0dXJuIG1hbmdsZTsKK30KKworLyogRGVtYW5n bGUgdGhlIHR5cGUgZnJvbSBNQU5HTEUgYW5kIGFwcGVuZCBpdCB0byBURU1Q QlVGLgorICAgUmV0dXJuIHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHN1Y2Nl c3Mgb3IgTlVMTCBvbiBmYWlsdXJlLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFy ICoKK3BhcnNlX3R5cGUgKHN0cnVjdCBvYnN0YWNrICp0ZW1wYnVmLCBjb25z dCBjaGFyICptYW5nbGUpCit7CisgIGlmIChtYW5nbGUgPT0gTlVMTCB8fCAq bWFuZ2xlID09ICdcMCcpCisgICAgcmV0dXJuIG1hbmdsZTsKKworICBzd2l0 Y2ggKCptYW5nbGUpCisgICAgeworICAgIGNhc2UgJ08nOiAvKiBzaGFyZWQo VCkgKi8KKyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0 ciAodGVtcGJ1ZiwgInNoYXJlZCgiKTsKKyAgICAgIG1hbmdsZSA9IHBhcnNl X3R5cGUgKHRlbXBidWYsIG1hbmdsZSk7CisgICAgICBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAiKSIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAg ICBjYXNlICd4JzogLyogY29uc3QoVCkgKi8KKyAgICAgIG1hbmdsZSsrOwor ICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImNvbnN0KCIpOwor ICAgICAgbWFuZ2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsK KyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICIpIik7CisgICAg ICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ3knOiAvKiBpbW11dGFibGUo VCkgKi8KKyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0 ciAodGVtcGJ1ZiwgImltbXV0YWJsZSgiKTsKKyAgICAgIG1hbmdsZSA9IHBh cnNlX3R5cGUgKHRlbXBidWYsIG1hbmdsZSk7CisgICAgICBvYnN0YWNrX2dy b3dfc3RyICh0ZW1wYnVmLCAiKSIpOworICAgICAgcmV0dXJuIG1hbmdsZTsK KyAgICBjYXNlICdOJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAgaWYgKCpt YW5nbGUgPT0gJ2cnKSAvKiB3aWxkKFQpICovCisJeworCSAgbWFuZ2xlKys7 CisJICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaW5vdXQoIik7CisJ ICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1wYnVmLCBtYW5nbGUpOworCSAg b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIikiKTsKKwkgIHJldHVybiBt YW5nbGU7CisJfQorICAgICAgZWxzZSBpZiAoKm1hbmdsZSA9PSAnaCcpIC8q IHZlY3RvcihUKSAqLworCXsKKwkgIG1hbmdsZSsrOworCSAgLyogVGhlIGJh c2V0eXBlIGZvciB2ZWN0b3JzIGFyZSBhbHdheXMgc3RhdGljIGFycmF5cy4g ICovCisJICBpZiAoKm1hbmdsZSAhPSAnRycpCisJICAgIHJldHVybiBOVUxM OworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgIl9fdmVjdG9yKCIp OworCSAgbWFuZ2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsK KwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICIpIik7CisJICByZXR1 cm4gbWFuZ2xlOworCX0KKyAgICAgIGVsc2UKKwlyZXR1cm4gTlVMTDsKKyAg ICBjYXNlICdBJzogLyogZHluYW1pYyBhcnJheSAoVFtdKSAqLworICAgICAg bWFuZ2xlKys7CisgICAgICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1wYnVm LCBtYW5nbGUpOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1Ziwg IltdIik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ0cnOiAv KiBzdGF0aWMgYXJyYXkgKFRbTl0pICovCisgICAgeworICAgICAgY29uc3Qg Y2hhciAqbnVtcHRyOworICAgICAgc2l6ZV90IG51bSA9IDA7CisgICAgICBt YW5nbGUrKzsKKworICAgICAgbnVtcHRyID0gbWFuZ2xlOworICAgICAgd2hp bGUgKElTRElHSVQgKCptYW5nbGUpKQorCXsKKwkgIG51bSsrOworCSAgbWFu Z2xlKys7CisJfQorICAgICAgbWFuZ2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1 ZiwgbWFuZ2xlKTsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYs ICJbIik7CisgICAgICBvYnN0YWNrX2dyb3cgKHRlbXBidWYsIG51bXB0ciwg bnVtKTsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJdIik7 CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIH0KKyAgICBjYXNlICdIJzog LyogYXNzb2NpYXRpdmUgYXJyYXkgKFRbVF0pICovCisgICAgeworICAgICAg c3RydWN0IG9ic3RhY2sgb2J0eXBlOworICAgICAgY2hhciAqdHlwZTsKKyAg ICAgIHNpemVfdCBzenR5cGU7CisgICAgICBtYW5nbGUrKzsKKworICAgICAg b2JzdGFja19pbml0ICgmb2J0eXBlKTsKKyAgICAgIG1hbmdsZSA9IHBhcnNl X3R5cGUgKCZvYnR5cGUsIG1hbmdsZSk7CisgICAgICBzenR5cGUgPSBvYnN0 YWNrX29iamVjdF9zaXplICgmb2J0eXBlKTsKKyAgICAgIHR5cGUgPSBvYnN0 YWNrX2ZpbmlzaCAoJm9idHlwZSk7CisKKyAgICAgIG1hbmdsZSA9IHBhcnNl X3R5cGUgKHRlbXBidWYsIG1hbmdsZSk7CisgICAgICBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAiWyIpOworICAgICAgb2JzdGFja19ncm93ICh0ZW1w YnVmLCB0eXBlLCBzenR5cGUpOworICAgICAgb2JzdGFja19ncm93X3N0ciAo dGVtcGJ1ZiwgIl0iKTsKKworICAgICAgb2JzdGFja19mcmVlICgmb2J0eXBl LCBOVUxMKTsKKyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgfQorICAgIGNh c2UgJ1AnOiAvKiBwb2ludGVyIChUKikgKi8KKyAgICAgIG1hbmdsZSsrOwor ICAgICAgbWFuZ2xlID0gcGFyc2VfdHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsK KyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICIqIik7CisgICAg ICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ0knOiAvKiBpZGVudCBUICov CisgICAgY2FzZSAnQyc6IC8qIGNsYXNzIFQgKi8KKyAgICBjYXNlICdTJzog Lyogc3RydWN0IFQgKi8KKyAgICBjYXNlICdFJzogLyogZW51bSBUICovCisg ICAgY2FzZSAnVCc6IC8qIHR5cGVkZWYgVCAqLworICAgICAgbWFuZ2xlKys7 CisgICAgICByZXR1cm4gZF9wYXJzZV9zeW1ib2wgKHRlbXBidWYsIG1hbmds ZSk7CisgICAgY2FzZSAnRCc6IC8qIGRlbGVnYXRlIFQgKi8KKyAgICAgIG1h bmdsZSsrOworICAgICAgbWFuZ2xlID0gcGFyc2VfZnVuY3Rpb25fdHlwZSAo dGVtcGJ1ZiwgbWFuZ2xlKTsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRl bXBidWYsICJkZWxlZ2F0ZSIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAg ICBjYXNlICdCJzogLyogdHVwbGUgVCAqLworICAgICAgLyogVE9ETzogSGFu ZGxlIHRoaXMuICAqLworICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBG dW5jdGlvbiB0eXBlcyAqLworICAgIGNhc2UgJ0YnOiBjYXNlICdVJzogY2Fz ZSAnVyc6CisgICAgY2FzZSAnVic6IGNhc2UgJ1InOgorICAgICAgbWFuZ2xl ID0gcGFyc2VfZnVuY3Rpb25fdHlwZSAodGVtcGJ1ZiwgbWFuZ2xlKTsKKyAg ICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJmdW5jdGlvbiIpOwor ICAgICAgcmV0dXJuIG1hbmdsZTsKKworICAgIC8qIEJhc2ljIHR5cGVzICov CisgICAgY2FzZSAnbic6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJub25lIik7CisgICAgICByZXR1cm4g bWFuZ2xlOworICAgIGNhc2UgJ3YnOgorICAgICAgbWFuZ2xlKys7CisgICAg ICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAidm9pZCIpOworICAgICAg cmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdnJzoKKyAgICAgIG1hbmdsZSsr OworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImJ5dGUiKTsK KyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgY2FzZSAnaCc6CisgICAgICBt YW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1 Ynl0ZSIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdzJzoK KyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVt cGJ1ZiwgInNob3J0Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNh c2UgJ3QnOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAidXNob3J0Iik7CisgICAgICByZXR1cm4gbWFuZ2xl OworICAgIGNhc2UgJ2knOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaW50Iik7CisgICAgICByZXR1cm4g bWFuZ2xlOworICAgIGNhc2UgJ2snOgorICAgICAgbWFuZ2xlKys7CisgICAg ICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAidWludCIpOworICAgICAg cmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdsJzoKKyAgICAgIG1hbmdsZSsr OworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImxvbmciKTsK KyAgICAgIHJldHVybiBtYW5nbGU7CisgICAgY2FzZSAnbSc6CisgICAgICBt YW5nbGUrKzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJ1 bG9uZyIpOworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdmJzoK KyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVt cGJ1ZiwgImZsb2F0Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNh c2UgJ2QnOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3df c3RyICh0ZW1wYnVmLCAiZG91YmxlIik7CisgICAgICByZXR1cm4gbWFuZ2xl OworICAgIGNhc2UgJ2UnOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAicmVhbCIpOworICAgICAgcmV0dXJu IG1hbmdsZTsKKworICAgIC8qIEltYWdpbmFyeSBhbmQgQ29tcGxleCB0eXBl cyAqLworICAgIGNhc2UgJ28nOgorICAgICAgbWFuZ2xlKys7CisgICAgICBv YnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaWZsb2F0Iik7CisgICAgICBy ZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ3AnOgorICAgICAgbWFuZ2xlKys7 CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaWRvdWJsZSIp OworICAgICAgcmV0dXJuIG1hbmdsZTsKKyAgICBjYXNlICdqJzoKKyAgICAg IG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1Ziwg ImlyZWFsIik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAgIGNhc2UgJ3En OgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAiY2Zsb2F0Iik7CisgICAgICByZXR1cm4gbWFuZ2xlOworICAg IGNhc2UgJ3InOgorICAgICAgbWFuZ2xlKys7CisgICAgICBvYnN0YWNrX2dy b3dfc3RyICh0ZW1wYnVmLCAiY2RvdWJsZSIpOworICAgICAgcmV0dXJuIG1h bmdsZTsKKyAgICBjYXNlICdjJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAg b2JzdGFja19ncm93X3N0ciAodGVtcGJ1ZiwgImNyZWFsIik7CisgICAgICBy ZXR1cm4gbWFuZ2xlOworCisgICAgLyogT3RoZXIgdHlwZXMgKi8KKyAgICBj YXNlICdiJzoKKyAgICAgIG1hbmdsZSsrOworICAgICAgb2JzdGFja19ncm93 X3N0ciAodGVtcGJ1ZiwgImJvb2wiKTsKKyAgICAgIHJldHVybiBtYW5nbGU7 CisgICAgY2FzZSAnYSc6CisgICAgICBtYW5nbGUrKzsKKyAgICAgIG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICJjaGFyIik7CisgICAgICByZXR1cm4g bWFuZ2xlOworICAgIGNhc2UgJ3UnOgorICAgICAgbWFuZ2xlKys7CisgICAg ICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAid2NoYXIiKTsKKyAgICAg IHJldHVybiBtYW5nbGU7CisgICAgY2FzZSAndyc6CisgICAgICBtYW5nbGUr KzsKKyAgICAgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJkY2hhciIp OworICAgICAgcmV0dXJuIG1hbmdsZTsKKworICAgIGRlZmF1bHQ6IC8qIHVu aGFuZGxlZCAqLworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisv KiBFeHRyYWN0IHRoZSBpZGVudGlmaWVyIGZyb20gTUFOR0xFIGFuZCBhcHBl bmQgaXQgdG8gVEVNUEJVRi4KKyAgIFJldHVybiB0aGUgcmVtYWluaW5nIHN0 cmluZyBvbiBzdWNjZXNzIG9yIE5VTEwgb24gZmFpbHVyZS4gICovCitzdGF0 aWMgY29uc3QgY2hhciAqCitwYXJzZV9pZGVudGlmaWVyIChzdHJ1Y3Qgb2Jz dGFjayAqdGVtcGJ1ZiwgY29uc3QgY2hhciAqbWFuZ2xlKQoreworICBpZiAo bWFuZ2xlID09IE5VTEwgfHwgKm1hbmdsZSA9PSAnXDAnKQorICAgIHJldHVy biBtYW5nbGU7CisKKyAgaWYgKElTRElHSVQgKCptYW5nbGUpKQorICAgIHsK KyAgICAgIGNoYXIgKmVuZHB0cjsKKyAgICAgIGxvbmcgaSA9IHN0cnRvbCAo bWFuZ2xlLCAmZW5kcHRyLCAxMCk7CisKKyAgICAgIGlmIChpIDw9IDAgfHwg c3RybGVuIChlbmRwdHIpIDwgaSkKKwlyZXR1cm4gTlVMTDsKKworICAgICAg bWFuZ2xlID0gZW5kcHRyOworCisgICAgICAvKiBObyBzdXBwb3J0IGZvciBk ZW1hbmdsaW5nIHRlbXBsYXRlcy4gICovCisgICAgICBpZiAoaSA+PSA1ICYm IHN0cm5jbXAgKG1hbmdsZSwgIl9fVCIsIDMpID09IDApCisJcmV0dXJuIE5V TEw7CisKKyAgICAgIGlmIChzdHJuY21wIChtYW5nbGUsICJfX2N0b3IiLCBp KSA9PSAwKQorCXsKKwkgIC8qIENvbnN0cnVjdG9yIHN5bWJvbCBmb3IgYSBj bGFzcy9zdHJ1Y3QuICAqLworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1 ZiwgInRoaXMiKTsKKwkgIG1hbmdsZSArPSBpOworCSAgcmV0dXJuIG1hbmds ZTsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21wIChtYW5nbGUsICJfX2R0 b3IiLCBpKSA9PSAwKQorCXsKKwkgIC8qIERlc3RydWN0b3Igc3ltYm9sIGZv ciBhIGNsYXNzL3N0cnVjdC4gICovCisJICBvYnN0YWNrX2dyb3dfc3RyICh0 ZW1wYnVmLCAifnRoaXMiKTsKKwkgIG1hbmdsZSArPSBpOworCSAgcmV0dXJu IG1hbmdsZTsKKwl9CisgICAgICBlbHNlIGlmIChzdHJuY21wIChtYW5nbGUs ICJfX3Bvc3RibGl0IiwgaSkgPT0gMCkKKwl7CisJICAvKiBQb3N0YmxpdCBz eW1ib2wgZm9yIGEgc3RydWN0LiAgKi8KKwkgIG9ic3RhY2tfZ3Jvd19zdHIg KHRlbXBidWYsICJ0aGlzKHRoaXMpIik7CisJICBtYW5nbGUgKz0gaTsKKwkg IHJldHVybiBtYW5nbGU7CisJfQorICAgICAgZWxzZSBpZiAoc3RybmNtcCAo bWFuZ2xlLCAiX19pbml0WiIsIGkrMSkgPT0gMCkKKwl7CisJICAvKiBUaGUg c3RhdGljIGluaXRpYWxpc2VyIGZvciBhIGdpdmVuIHN5bWJvbC4gICovCisJ ICBvYnN0YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiaW5pdCQiKTsKKwkgIG1h bmdsZSArPSBpICsgMTsKKwkgIHJldHVybiBtYW5nbGU7CisJfQorICAgICAg ZWxzZSBpZiAoc3RybmNtcCAobWFuZ2xlLCAiX19DbGFzc1oiLCBpKzEpID09 IDApCisJeworCSAgLyogVGhlIGNsYXNzaW5mbyBzeW1ib2wgZm9yIGEgZ2l2 ZW4gY2xhc3MuICAqLworCSAgb2JzdGFja19ncm93X3N0ciAodGVtcGJ1Ziwg ImNsYXNzaW5mbyQiKTsKKwkgIG1hbmdsZSArPSBpICsgMTsKKwkgIHJldHVy biBtYW5nbGU7CisJfQorICAgICAgZWxzZSBpZiAoc3RybmNtcCAobWFuZ2xl LCAiX192dGJsWiIsIGkrMSkgPT0gMCkKKwl7CisJICAvKiBUaGUgdnRhYmxl IHN5bWJvbCBmb3IgYSBnaXZlbiBjbGFzcy4gICovCisJICBvYnN0YWNrX2dy b3dfc3RyICh0ZW1wYnVmLCAidnRibCQiKTsKKwkgIG1hbmdsZSArPSBpICsg MTsKKwkgIHJldHVybiBtYW5nbGU7CisJfQorICAgICAgZWxzZSBpZiAoc3Ry bmNtcCAobWFuZ2xlLCAiX19JbnRlcmZhY2VaIiwgaSsxKSA9PSAwKQorCXsK KwkgIC8qIFRoZSBpbnRlcmZhY2Ugc3ltYm9sIGZvciBhIGdpdmVuIGNsYXNz LiAgKi8KKwkgIG9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICJpbnRlcmZh Y2UkIik7CisJICBtYW5nbGUgKz0gaSArIDE7CisJICByZXR1cm4gbWFuZ2xl OworCX0KKyAgICAgIGVsc2UgaWYgKHN0cm5jbXAgKG1hbmdsZSwgIl9fTW9k dWxlSW5mb1oiLCBpKzEpID09IDApCisJeworCSAgLyogVGhlIE1vZHVsZUlu Zm8gc3ltYm9sIGZvciBhIGdpdmVuIG1vZHVsZS4gICovCisJICBvYnN0YWNr X2dyb3dfc3RyICh0ZW1wYnVmLCAibW9kdWxlaW5mbyQiKTsKKwkgIG1hbmds ZSArPSBpICsgMTsKKwkgIHJldHVybiBtYW5nbGU7CisJfQorICAgICAgb2Jz dGFja19ncm93ICh0ZW1wYnVmLCBtYW5nbGUsIGkpOworICAgICAgbWFuZ2xl ICs9IGk7CisgICAgfQorICBlbHNlCisgICAgcmV0dXJuIE5VTEw7CisKKyAg cmV0dXJuIG1hbmdsZTsKK30KKworc3RhdGljIGludAorY2FsbF9jb252ZW50 aW9uX3AgKGNvbnN0IGNoYXIgKm1hbmdsZSkKK3sKKyAgc2l6ZV90IGk7CisK KyAgc3dpdGNoICgqbWFuZ2xlKQorICAgIHsKKyAgICBjYXNlICdGJzogY2Fz ZSAnVSc6IGNhc2UgJ1YnOgorICAgIGNhc2UgJ1cnOiBjYXNlICdSJzoKKyAg ICAgIHJldHVybiAxOworCisgICAgY2FzZSAnTSc6IC8qIFByZWZpeCBmb3Ig ZnVuY3Rpb25zIG5lZWRpbmcgJ3RoaXMnICovCisgICAgICBpID0gMTsKKyAg ICAgIGlmIChtYW5nbGVbaV0gPT0gJ3gnKQorCWkrKzsKKworICAgICAgc3dp dGNoIChtYW5nbGVbaV0pCisJeworCWNhc2UgJ0YnOiBjYXNlICdVJzogY2Fz ZSAnVic6CisJY2FzZSAnVyc6IGNhc2UgJ1InOgorCSAgcmV0dXJuIDE7CisJ fQorCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAwOworICAgIH0KK30K KworLyogRXh0cmFjdCBhbmQgZGVtYW5nbGUgdGhlIHN5bWJvbCBpbiBNQU5H TEUgYW5kIGFwcGVuZCBpdCB0byBURU1QQlVGLgorICAgUmV0dXJuIHRoZSBy ZW1haW5pbmcgc2lnbmF0dXJlIG9uIHN1Y2Nlc3Mgb3IgTlVMTCBvbiBmYWls dXJlLiAgKi8KK2NvbnN0IGNoYXIgKgorZF9wYXJzZV9zeW1ib2wgKHN0cnVj dCBvYnN0YWNrICp0ZW1wYnVmLCBjb25zdCBjaGFyICptYW5nbGUpCit7Cisg IHNpemVfdCBuID0gMDsKKyAgZG8KKyAgICB7CisgICAgICBpZiAobisrKQor CW9ic3RhY2tfZ3Jvd19zdHIgKHRlbXBidWYsICIuIik7CisKKyAgICAgIG1h bmdsZSA9IHBhcnNlX2lkZW50aWZpZXIgKHRlbXBidWYsIG1hbmdsZSk7CisK KyAgICAgIGlmIChtYW5nbGUgJiYgY2FsbF9jb252ZW50aW9uX3AgKG1hbmds ZSkpCisJeworCSAgY2hhciAqc2F2ZWQ7CisKKwkgIC8qIFNraXAgb3ZlciAn dGhpcycgcGFyYW1ldGVyLiAgKi8KKwkgIGlmICgqbWFuZ2xlID09ICdNJykK KwkgICAgbWFuZ2xlICs9IChtYW5nbGVbMV0gPT0gJ3gnKSA/IDIgOiAxOwor CisJICAvKiBTa2lwIG92ZXIgY2FsbGluZyBjb252ZW50aW9uIGFuZCBhdHRy aWJ1dGVzIGluIHF1YWxpZmllZCBuYW1lLiAgKi8KKwkgIHNhdmVkID0gb2Jz dGFja19uZXh0X2ZyZWUgKHRlbXBidWYpOworCSAgbWFuZ2xlID0gcGFyc2Vf Y2FsbF9jb252ZW50aW9uICh0ZW1wYnVmLCBtYW5nbGUpOworCSAgbWFuZ2xl ID0gcGFyc2VfYXR0cmlidXRlcyAodGVtcGJ1ZiwgbWFuZ2xlKTsKKwkgIG9i c3RhY2tfbmV4dF9mcmVlICh0ZW1wYnVmKSA9IHNhdmVkOworCisJICBvYnN0 YWNrX2dyb3dfc3RyICh0ZW1wYnVmLCAiKCIpOworCSAgbWFuZ2xlID0gcGFy c2VfZnVuY3Rpb25fYXJncyAodGVtcGJ1ZiwgbWFuZ2xlKTsKKwkgIG9ic3Rh Y2tfZ3Jvd19zdHIgKHRlbXBidWYsICIpIik7CisKKwkgIC8qIERlbWFuZ2xl IHRoZSBmdW5jdGlvbiByZXR1cm4gdHlwZSBhcyBhIGtpbmQgb2Ygc2FuaXR5 IHRlc3QuICAqLworCSAgaWYgKG1hbmdsZSAmJiAhSVNESUdJVCAoKm1hbmds ZSkpCisJICAgIHsKKwkgICAgICBzYXZlZCA9IG9ic3RhY2tfbmV4dF9mcmVl ICh0ZW1wYnVmKTsKKwkgICAgICBtYW5nbGUgPSBwYXJzZV90eXBlICh0ZW1w YnVmLCBtYW5nbGUpOworCSAgICAgIG9ic3RhY2tfbmV4dF9mcmVlICh0ZW1w YnVmKSA9IHNhdmVkOworCSAgICB9CisJfQorICAgIH0KKyAgd2hpbGUgKG1h bmdsZSAmJiBJU0RJR0lUICgqbWFuZ2xlKSk7CisKKyAgcmV0dXJuIG1hbmds ZTsKK30KKwpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGxhbmcv ZGVtYW5nbGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGxhbmcvZGVtYW5n bGUuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRj MjM3YzUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5k bGFuZy9kZW1hbmdsZS5leHAKQEAgLTAsMCArMSwyMjMgQEAKKyMgQ29weXJp Z2h0IChDKSAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor CisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorCisjIFRlc3QgRCBkZW1hbmdsaW5nLgorIyBU aGUgdGVzdHMgaGVyZSBpbnRlbnRpb25hbGx5IGRvIG5vdCByZXF1aXJlIGEg RCBjb21waWxlci4KKworbG9hZF9saWIgImQtc3VwcG9ydC5leHAiCisKK2lm IHsgW3NraXBfZF90ZXN0c10gfSB7IGNvbnRpbnVlIH0KKworIyMjIFV0aWxp dHkgZnVuY3Rpb24gZm9yIHRlc3RfZGVtYW5nbGluZyBhbmQgdGVzdF9kZW1h bmdsaW5nX2V4YWN0LgorcHJvYyB0ZXN0X2RlbWFuZ2xpbmcge3Rlc3QgcmVz dWx0fSB7CisgICAgZ2RiX3Rlc3RfZXhhY3QgIm1haW50ZW5hbmNlIGRlbWFu Z2xlICR0ZXN0IiAkcmVzdWx0ICR0ZXN0Cit9CisKKyMKKyMgIFRlc3QgRCBk ZW1hbmdsZXIKKyMKKworcHJvYyB0ZXN0X2RfZGVtYW5nbGluZyB7fSB7CisK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EbWFpbiIgIkQgbWFpbiIKKworICAg IHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZhWnYiICJkZW1h bmdsZS50ZXN0KGNoYXIpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdEZiWnYiICJkZW1hbmdsZS50ZXN0KGJvb2wpIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZjWnYiICJkZW1hbmds ZS50ZXN0KGNyZWFsKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNHRlc3RGZFp2IiAiZGVtYW5nbGUudGVzdChkb3VibGUpIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZlWnYiICJkZW1hbmds ZS50ZXN0KHJlYWwpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdEZmWnYiICJkZW1hbmdsZS50ZXN0KGZsb2F0KSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGZ1p2IiAiZGVtYW5nbGUu dGVzdChieXRlKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGaFp2IiAiZGVtYW5nbGUudGVzdCh1Ynl0ZSkiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RmladiIgImRlbWFuZ2xlLnRl c3QoaW50KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGalp2IiAiZGVtYW5nbGUudGVzdChpcmVhbCkiCisgICAgdGVzdF9kZW1h bmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RmtadiIgImRlbWFuZ2xlLnRlc3Qo dWludCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 RmxadiIgImRlbWFuZ2xlLnRlc3QobG9uZykiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDhkZW1hbmdsZTR0ZXN0Rm1adiIgImRlbWFuZ2xlLnRlc3QodWxv bmcpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZu WnYiICJkZW1hbmdsZS50ZXN0KG5vbmUpIgorICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q4ZGVtYW5nbGU0dGVzdEZvWnYiICJkZW1hbmdsZS50ZXN0KGlmbG9h dCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RnBa diIgImRlbWFuZ2xlLnRlc3QoaWRvdWJsZSkiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDhkZW1hbmdsZTR0ZXN0RnFadiIgImRlbWFuZ2xlLnRlc3QoY2Zs b2F0KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RG clp2IiAiZGVtYW5nbGUudGVzdChjZG91YmxlKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGc1p2IiAiZGVtYW5nbGUudGVzdChz aG9ydCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 RnRadiIgImRlbWFuZ2xlLnRlc3QodXNob3J0KSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGdVp2IiAiZGVtYW5nbGUudGVzdCh3 Y2hhcikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 RnZadiIgImRlbWFuZ2xlLnRlc3Qodm9pZCkiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDhkZW1hbmdsZTR0ZXN0RndadiIgImRlbWFuZ2xlLnRlc3QoZGNo YXIpIgorCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 Rk9hWnYiICJkZW1hbmdsZS50ZXN0KHNoYXJlZChjaGFyKSkiCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RnhhWnYiICJkZW1hbmds ZS50ZXN0KGNvbnN0KGNoYXIpKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9E OGRlbWFuZ2xlNHRlc3RGeWFadiIgImRlbWFuZ2xlLnRlc3QoaW1tdXRhYmxl KGNoYXIpKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGTmdhWnYiICJkZW1hbmdsZS50ZXN0KGlub3V0KGNoYXIpKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGT3hhWnYiICJkZW1h bmdsZS50ZXN0KHNoYXJlZChjb25zdChjaGFyKSkpIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZPTmdhWnYiICJkZW1hbmdsZS50 ZXN0KHNoYXJlZChpbm91dChjaGFyKSkpIgorICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q4ZGVtYW5nbGU0dGVzdEZBYVp2IiAiZGVtYW5nbGUudGVzdChjaGFy XFtcXSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 RkFBYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyXFtcXVxbXF0pIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZBQUFhWnYiICJkZW1h bmdsZS50ZXN0KGNoYXJcW1xdXFtcXVxbXF0pIgorICAgIHRlc3RfZGVtYW5n bGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZHNDJhWnYiICJkZW1hbmdsZS50ZXN0 KGNoYXJcWzQyXF0pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdEZHNDJHNDJhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXJcWzQyXF1c WzQyXF0pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dEZHNDJHNDJHNDJhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXJcWzQyXF1cWzQy XF1cWzQyXF0pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZHMTIzNDU2Nzg5MGFadiIgImRlbWFuZ2xlLnRlc3QoY2hhclxbMTIz NDU2Nzg5MFxdKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGSGFhWnYiICJkZW1hbmdsZS50ZXN0KGNoYXJcW2NoYXJcXSkiCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkhIYWFhWnYi ICJkZW1hbmdsZS50ZXN0KGNoYXJcW2NoYXJcW2NoYXJcXVxdKSIKKyAgICB0 ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGUGFadiIgImRlbWFu Z2xlLnRlc3QoY2hhciopIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdEZQUGFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcioqKSIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGUFBQYVp2IiAi ZGVtYW5nbGUudGVzdChjaGFyKioqKSIKKworICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEc4Z1p2IiAiZGVtYW5nbGUudGVzdChf X3ZlY3RvcihieXRlXFs4XF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9E OGRlbWFuZ2xlNHRlc3RGTmhHMTZnWnYiICJkZW1hbmdsZS50ZXN0KF9fdmVj dG9yKGJ5dGVcWzE2XF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGTmhHMzJnWnYiICJkZW1hbmdsZS50ZXN0KF9fdmVjdG9y KGJ5dGVcWzMyXF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNHRlc3RGTmhHNHNadiIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3Ioc2hv cnRcWzRcXSkpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZOaEc4c1p2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihzaG9ydFxb OFxdKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 Rk5oRzE2c1p2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihzaG9ydFxbMTZc XSkpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZO aEcyaVp2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihpbnRcWzJcXSkpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEc0aVp2 IiAiZGVtYW5nbGUudGVzdChfX3ZlY3RvcihpbnRcWzRcXSkpIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEc4aVp2IiAiZGVt YW5nbGUudGVzdChfX3ZlY3RvcihpbnRcWzhcXSkpIgorICAgIHRlc3RfZGVt YW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEcxbFp2IiAiZGVtYW5nbGUu dGVzdChfX3ZlY3Rvcihsb25nXFsxXF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EOGRlbWFuZ2xlNHRlc3RGTmhHMmxadiIgImRlbWFuZ2xlLnRlc3Qo X192ZWN0b3IobG9uZ1xbMlxdKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJf RDhkZW1hbmdsZTR0ZXN0Rk5oRzRsWnYiICJkZW1hbmdsZS50ZXN0KF9fdmVj dG9yKGxvbmdcWzRcXSkpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdEZOaEcyZlp2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3Rvcihm bG9hdFxbMlxdKSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmds ZTR0ZXN0Rk5oRzRmWnYiICJkZW1hbmdsZS50ZXN0KF9fdmVjdG9yKGZsb2F0 XFs0XF0pKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGTmhHOGZadiIgImRlbWFuZ2xlLnRlc3QoX192ZWN0b3IoZmxvYXRcWzhc XSkpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZO aEcxZFp2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3Rvcihkb3VibGVcWzFcXSkp IgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEcy ZFp2IiAiZGVtYW5nbGUudGVzdChfX3ZlY3Rvcihkb3VibGVcWzJcXSkpIgor ICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZOaEc0ZFp2 IiAiZGVtYW5nbGUudGVzdChfX3ZlY3Rvcihkb3VibGVcWzRcXSkpIgorCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rkk1aWRlbnRa diIgImRlbWFuZ2xlLnRlc3QoaWRlbnQpIgorICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q4ZGVtYW5nbGU0dGVzdEZJNWlkZW50NHRlc3RadiIgImRlbWFuZ2xl LnRlc3QoaWRlbnQudGVzdCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0RkM1Y2xhc3NadiIgImRlbWFuZ2xlLnRlc3QoY2xhc3Mp IgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZDNWNs YXNzNHRlc3RadiIgImRlbWFuZ2xlLnRlc3QoY2xhc3MudGVzdCkiCisgICAg dGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RlM2c3RydWN0WnYi ICJkZW1hbmdsZS50ZXN0KHN0cnVjdCkiCisgICAgdGVzdF9kZW1hbmdsaW5n ICJfRDhkZW1hbmdsZTR0ZXN0RlM2c3RydWN0NHRlc3RadiIgImRlbWFuZ2xl LnRlc3Qoc3RydWN0LnRlc3QpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZFNGVudW1adiIgImRlbWFuZ2xlLnRlc3QoZW51bSki CisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkU0ZW51 bTR0ZXN0WnYiICJkZW1hbmdsZS50ZXN0KGVudW0udGVzdCkiCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RlQ3dHlwZWRlZlp2IiAi ZGVtYW5nbGUudGVzdCh0eXBlZGVmKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcg Il9EOGRlbWFuZ2xlNHRlc3RGVDd0eXBlZGVmNHRlc3RadiIgImRlbWFuZ2xl LnRlc3QodHlwZWRlZi50ZXN0KSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q4ZGVtYW5nbGU0dGVzdEZKYVp2IiAiZGVtYW5nbGUudGVzdChvdXQgY2hh cikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Rkth WnYiICJkZW1hbmdsZS50ZXN0KHJlZiBjaGFyKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGTGFadiIgImRlbWFuZ2xlLnRlc3Qo bGF6eSBjaGFyKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGTWFadiIgImRlbWFuZ2xlLnRlc3Qoc2NvcGUgY2hhcikiCisgICAg dGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RmFYdiIgImRlbWFu Z2xlLnRlc3QoY2hhci4uLikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0RmFZdiIgImRlbWFuZ2xlLnRlc3QoY2hhciwgLi4uKSIK KyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGYWFZdiIg ImRlbWFuZ2xlLnRlc3QoY2hhciwgY2hhciwgLi4uKSIKKyAgICB0ZXN0X2Rl bWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3RGYWFadiIgImRlbWFuZ2xlLnRl c3QoY2hhciwgY2hhcikiCisKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGREZaYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgZGVs ZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dEZEVVphWnYiICJkZW1hbmdsZS50ZXN0KGV4dGVybihDKSBjaGFyKCkgZGVs ZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVz dEZEV1phWnYiICJkZW1hbmdsZS50ZXN0KGV4dGVybihXaW5kb3dzKSBjaGFy KCkgZGVsZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdEZEVlphWnYiICJkZW1hbmdsZS50ZXN0KGV4dGVybihQYXNjYWwp IGNoYXIoKSBkZWxlZ2F0ZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0RkRSWmFadiIgImRlbWFuZ2xlLnRlc3QoZXh0ZXJuKEMr KykgY2hhcigpIGRlbGVnYXRlKSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q4ZGVtYW5nbGU0dGVzdEZGWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigp IGZ1bmN0aW9uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xl NHRlc3RGVVphWnYiICJkZW1hbmdsZS50ZXN0KGV4dGVybihDKSBjaGFyKCkg ZnVuY3Rpb24pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZXWmFadiIgImRlbWFuZ2xlLnRlc3QoZXh0ZXJuKFdpbmRvd3MpIGNo YXIoKSBmdW5jdGlvbikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1h bmdsZTR0ZXN0RlZaYVp2IiAiZGVtYW5nbGUudGVzdChleHRlcm4oUGFzY2Fs KSBjaGFyKCkgZnVuY3Rpb24pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZSWmFadiIgImRlbWFuZ2xlLnRlc3QoZXh0ZXJuKEMr KykgY2hhcigpIGZ1bmN0aW9uKSIKKworICAgIHRlc3RfZGVtYW5nbGluZyAi X0Q4ZGVtYW5nbGU0dGVzdEZERk5hWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hh cigpIHB1cmUgZGVsZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZERk5iWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigp IG5vdGhyb3cgZGVsZWdhdGUpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4 ZGVtYW5nbGU0dGVzdEZERk5jWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigp IHJlZiBkZWxlZ2F0ZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1h bmdsZTR0ZXN0RkRGTmRaYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgQHBy b3BlcnR5IGRlbGVnYXRlKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRl bWFuZ2xlNHRlc3RGREZOZVphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBA dHJ1c3RlZCBkZWxlZ2F0ZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0RkRGTmZaYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKCkg QHNhZmUgZGVsZWdhdGUpIgorCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0RkZOYVphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBw dXJlIGZ1bmN0aW9uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFu Z2xlNHRlc3RGRk5iWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIG5vdGhy b3cgZnVuY3Rpb24pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdEZGTmNaYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyKCkgcmVmIGZ1 bmN0aW9uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGRk5kWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIEBwcm9wZXJ0eSBm dW5jdGlvbikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0 ZXN0RkZOZVphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBAdHJ1c3RlZCBm dW5jdGlvbikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0 ZXN0RkZOZlphWnYiICJkZW1hbmdsZS50ZXN0KGNoYXIoKSBAc2FmZSBmdW5j dGlvbikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0 RkZOYU5iWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIHB1cmUgbm90aHJv dyBmdW5jdGlvbikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmds ZTR0ZXN0RkZOYk5hWmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhcigpIG5vdGhy b3cgcHVyZSBmdW5jdGlvbikiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTR0ZXN0RkZOZE5mTmFaYVp2IiAiZGVtYW5nbGUudGVzdChjaGFy KCkgQHByb3BlcnR5IEBzYWZlIHB1cmUgZnVuY3Rpb24pIgorCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Nl9fdnRibFoiICJkZW1h bmdsZS50ZXN0LnZ0YmwkIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVt YW5nbGU0dGVzdDZfX2luaXRaIiAiZGVtYW5nbGUudGVzdC5pbml0JCIKKyAg ICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRlc3QxMl9fTW9kdWxl SW5mb1oiICJkZW1hbmdsZS50ZXN0Lm1vZHVsZWluZm8kIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdDdfX0NsYXNzWiIgImRlbWFu Z2xlLnRlc3QuY2xhc3NpbmZvJCIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9E OGRlbWFuZ2xlNHRlc3QxMV9fSW50ZXJmYWNlWiIgImRlbWFuZ2xlLnRlc3Qu aW50ZXJmYWNlJCIKKworICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5n bGU0dGVzdDZfX2N0b3JNRlp2IiAiZGVtYW5nbGUudGVzdC50aGlzKCkiCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0Nl9fZHRvck1G WnYiICJkZW1hbmdsZS50ZXN0Ln50aGlzKCkiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDhkZW1hbmdsZTR0ZXN0Nl9fcG9zdGJsaXRNRlp2IiAiZGVtYW5n bGUudGVzdC50aGlzKHRoaXMpIgorCisgICAgdGVzdF9kZW1hbmdsaW5nICJf RDhkZW1hbmdsZTR0ZXN0RkhBYmFadiIgImRlbWFuZ2xlLnRlc3QoY2hhclxb Ym9vbFxbXF1cXSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhkZW1hbmds ZTR0ZXN0RkhHNDJjYVp2IiAiZGVtYW5nbGUudGVzdChjaGFyXFtjcmVhbFxb NDJcXVxdKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlNHRl c3RGQWlYdiIgImRlbWFuZ2xlLnRlc3QoaW50XFtcXS4uLikiCisgICAgdGVz dF9kZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkxBaVh2IiAiZGVtYW5n bGUudGVzdChsYXp5IGludFxbXF0uLi4pIgorICAgIHRlc3RfZGVtYW5nbGlu ZyAiX0Q4ZGVtYW5nbGU0dGVzdEZBaVl2IiAiZGVtYW5nbGUudGVzdChpbnRc W1xdLCAuLi4pIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0 dGVzdEZMQWlZdiIgImRlbWFuZ2xlLnRlc3QobGF6eSBpbnRcW1xdLCAuLi4p IgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZMaWxa diIgImRlbWFuZ2xlLnRlc3QobGF6eSBpbnQsIGxvbmcpIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0dGVzdEZMbGladiIgImRlbWFuZ2xl LnRlc3QobGF6eSBsb25nLCBpbnQpIgorCisgICAgdGVzdF9kZW1hbmdsaW5n ICJfRDhkZW1hbmdsZTR0ZXN0UEZMQWlZaSIgImRlbWFuZ2xlLnRlc3QiCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDFhMWJpIiAiYS5iIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0QxYTFiUEZpWmkiICJhLmIiCisgICAgdGVzdF9kZW1h bmdsaW5nICJfRDR0ZXN0M2Zvb0FhIiAidGVzdC5mb28iCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDR0ZXN0MmRnREZpWWQiICJ0ZXN0LmRnIgorICAgIHRl c3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU4ZGVtYW5nbGVGQWFaQWEiICJk ZW1hbmdsZS5kZW1hbmdsZShjaGFyXFtcXSkiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDZvYmplY3Q2T2JqZWN0OG9wQXNzaWduRkM2T2JqZWN0WmkiICJv YmplY3QuT2JqZWN0Lm9wQXNzaWduKE9iamVjdCkiCisgICAgdGVzdF9kZW1h bmdsaW5nICJfRDZvYmplY3Q2T2JqZWN0OG9wRXF1YWxzRkM2T2JqZWN0Wmki ICJvYmplY3QuT2JqZWN0Lm9wRXF1YWxzKE9iamVjdCkiCisgICAgdGVzdF9k ZW1hbmdsaW5nICJfRDhkZW1hbmdsZTR0ZXN0RkxDNk9iamVjdExERkxpWmla aSIgImRlbWFuZ2xlLnRlc3QobGF6eSBPYmplY3QsIGxhenkgaW50KGxhenkg aW50KSBkZWxlZ2F0ZSkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDZwbHVn aW44Z2VuZXJhdGVGaWlaQXlhIiAicGx1Z2luLmdlbmVyYXRlKGludCwgaW50 KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EOGRlbWFuZ2xlM2ZuQUZadjNm bkJNRlp2IiAiZGVtYW5nbGUuZm5BKCkuZm5CKCkiCisgICAgdGVzdF9kZW1h bmdsaW5nICJfRDhkZW1hbmdsZTRtYWluRlp2MVMzZm5DRlp2IiAiZGVtYW5n bGUubWFpbigpLlMuZm5DKCkiCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDhk ZW1hbmdsZTRtYWluRlp2MVMzZm5ETUZadiIgImRlbWFuZ2xlLm1haW4oKS5T LmZuRCgpIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGUyZm5G TmdpWk5naSIgImRlbWFuZ2xlLmZuKGlub3V0KGludCkpIgorICAgIHRlc3Rf ZGVtYW5nbGluZyAiX0Q4ZGVtYW5nbGU0bWFpbkZadjVsb2NhbE1GWmkiICJk ZW1hbmdsZS5tYWluKCkubG9jYWwoKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcg Il9EM3N0ZDVhc2NpaTl1cHBlcmNhc2V5QWEiICJzdGQuYXNjaWkudXBwZXJj YXNlIgorICAgIHRlc3RfZGVtYW5nbGluZyAiX0Qzc3RkNnN0cmVhbTlCT01F bmRpYW55RzVFM3N0ZDZzeXN0ZW02RW5kaWFuIiAic3RkLnN0cmVhbS5CT01F bmRpYW4iCisgICAgdGVzdF9kZW1hbmdsaW5nICJfRDNzdGQ4aW50ZXJuYWw3 dW5pX3RhYjEwdW5pY29kZU5rb3lTM3N0ZDhpbnRlcm5hbDN1bmkxMkNvZGVw b2ludFNldCIgInN0ZC5pbnRlcm5hbC51bmlfdGFiLnVuaWNvZGVOa28iCisg ICAgdGVzdF9kZW1hbmdsaW5nICJfRDJnYzJnYzJHQzZhZGRyT2ZNRlB2WlB2 IiAiZ2MuZ2MuR0MuYWRkck9mKHZvaWQqKSIKKyAgICB0ZXN0X2RlbWFuZ2xp bmcgIl9EM3N0ZDdwcm9jZXNzMTBzZXRDTE9FWEVDRmliWnYiICJzdGQucHJv Y2Vzcy5zZXRDTE9FWEVDKGludCwgYm9vbCkiCisgICAgdGVzdF9kZW1hbmds aW5nICJfRDNzdGQ2ZGlnZXN0Mm1kM01ENTNwdXRNRk5hTmJOZU1BeGhYdiIg InN0ZC5kaWdlc3QubWQuTUQ1LnB1dChzY29wZSBjb25zdCh1Ynl0ZSlcW1xd Li4uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9EM3N0ZDZtbWZpbGU2TW1G aWxlMTNvcEluZGV4QXNzaWduTUZobVpoIiAic3RkLm1tZmlsZS5NbUZpbGUu b3BJbmRleEFzc2lnbih1Ynl0ZSwgdWxvbmcpIgorICAgIHRlc3RfZGVtYW5n bGluZyAiX0Qzc3RkN3Byb2Nlc3MxOGVzY2FwZVNoZWxsQ29tbWFuZEZ4QUFh WEF5YSIgInN0ZC5wcm9jZXNzLmVzY2FwZVNoZWxsQ29tbWFuZChjb25zdChj aGFyXFtcXVxbXF0pLi4uKSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9ENGNv cmU0c3luYzVtdXRleDVNdXRleDZfX2N0b3JNRkM2T2JqZWN0WkM0Y29yZTRz eW5jNW11dGV4NU11dGV4IiAiY29yZS5zeW5jLm11dGV4Lk11dGV4LnRoaXMo T2JqZWN0KSIKKyAgICB0ZXN0X2RlbWFuZ2xpbmcgIl9ENm9iamVjdDE0VHlw ZUluZm9fQXJyYXk4YXJnVHlwZXNNRk5iTmZKQzhUeXBlSW5mb0pDOFR5cGVJ bmZvWmkiICJvYmplY3QuVHlwZUluZm9fQXJyYXkuYXJnVHlwZXMob3V0IFR5 cGVJbmZvLCBvdXQgVHlwZUluZm8pIgorICAgIHRlc3RfZGVtYW5nbGluZyAi X0QycnQ2ZG1haW4yMTFfZF9ydW5fbWFpblVpUFBhUFVBQWFaaVppN3RyeUV4 ZWNNRk1ERlp2WnYiICJydC5kbWFpbjIuX2RfcnVuX21haW4oaW50LCBjaGFy KiosIGV4dGVybihDKSBpbnQoY2hhclxbXF1cW1xdKSBmdW5jdGlvbiopLnRy eUV4ZWMoc2NvcGUgdm9pZCgpIGRlbGVnYXRlKSIKKyAgICB0ZXN0X2RlbWFu Z2xpbmcgIl9ENm9iamVjdDlFeGNlcHRpb242X19jdG9yTUZOYU5iTmZBeWFB eWFtQzZvYmplY3Q5VGhyb3dhYmxlWkM5RXhjZXB0aW9uIiAib2JqZWN0LkV4 Y2VwdGlvbi50aGlzKGltbXV0YWJsZShjaGFyKVxbXF0sIGltbXV0YWJsZShj aGFyKVxbXF0sIHVsb25nLCBvYmplY3QuVGhyb3dhYmxlKSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EM2djYzNkZWgxN3BhcnNlX2xzZGFfaGVhZGVyRlBT M2djYzZ1bndpbmQ3Z2VuZXJpYzE1X1Vud2luZF9Db250ZXh0UGhQUzNnY2Mz ZGVoMTZsc2RhX2hlYWRlcl9pbmZvWlBoIiAiZ2NjLmRlaC5wYXJzZV9sc2Rh X2hlYWRlcihnY2MudW53aW5kLmdlbmVyaWMuX1Vud2luZF9Db250ZXh0Kiwg dWJ5dGUqLCBnY2MuZGVoLmxzZGFfaGVhZGVyX2luZm8qKSIKKyAgICB0ZXN0 X2RlbWFuZ2xpbmcgIl9EM3N0ZDZzb2NrZXQyM1Vua25vd25BZGRyZXNzUmVm ZXJlbmNlNl9fY3Rvck1GUFM0Y29yZTNzeXM1cG9zaXgzc3lzNnNvY2tldDhz b2NrYWRkcmtaQzNzdGQ2c29ja2V0MjNVbmtub3duQWRkcmVzc1JlZmVyZW5j ZSIgInN0ZC5zb2NrZXQuVW5rbm93bkFkZHJlc3NSZWZlcmVuY2UudGhpcyhj b3JlLnN5cy5wb3NpeC5zeXMuc29ja2V0LnNvY2thZGRyKiwgdWludCkiCit9 CisKK3Byb2MgY2F0Y2hfZGVtYW5nbGluZ19lcnJvcnMge2NvbW1hbmR9IHsK KyAgICBpZiB7W2NhdGNoICRjb21tYW5kIHJlc3VsdF19IHsKKwlwdXRzICJF UlJPUjogZGVtYW5nbGUuZXhwOiB3aGlsZSBydW5uaW5nICRjb21tYW5kOiAk cmVzdWx0IgorICAgIH0KK30KKworIyBUZXN0IHN1cHBvcnQgZm9yIGRpZmZl cmVudCBkZW1hbmdsaW5nIHN0eWxlcy4gIE5vdGUgdGhhdCB0aGlzIGRvZXMK KyMgbm90IGRlcGVuZCB1cG9uIHJ1bm5pbmcgdGhlIHRlc3QgcHJvZ3JhbSBh bmQgZG9lcyBub3QgZGVwZW5kIHVwb24KKyMgZ2RiIGJlaW5nIGFibGUgdG8g bG9va3VwIGFueSBEIHN5bWJvbHMuICBJdCBzaW1wbHkgY2FsbHMgdGhlCisj IGludGVybmFsIGRlbWFuZ2xlciB3aXRoIHN5bnRoZXNpemVkIHN0cmluZ3Mg YW5kIHRlc3RzIHRoZSByZXN1bHRzLgorCisjIFN0YXJ0IHdpdGggYSBmcmVz aCBnZGIuCisKK2dkYl9leGl0CitnZGJfc3RhcnQKKworaWYgW3NldF9sYW5n X2RdIHsKKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCB3aWR0aCAwIgor CisgICAgIyBVc2luZyBjYXRjaF9kZW1hbmdsaW5nX2Vycm9ycyB0aGlzIHdh eSBlbnN1cmVzIHRoYXQsIGlmIG9uZSBvZgorICAgICMgdGhlIGZ1bmN0aW9u cyByYWlzZXMgYSBUY2wgZXJyb3IsIHRoZW4gaXQnbGwgZ2V0IHJlcG9ydGVk LCBhbmQKKyAgICAjIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbnMgd2lsbCBz dGlsbCBydW4uCisgICAgY2F0Y2hfZGVtYW5nbGluZ19lcnJvcnMgdGVzdF9k X2RlbWFuZ2xpbmcKKworfSBlbHNlIHsKKyAgICB3YXJuaW5nICJEIGRlbWFu Z2xpbmcgdGVzdHMgc3VwcHJlc3NlZC4iCit9Cg== --047d7b676f7c22cf5504ef895eae--