Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rngzR-00EZMe-FX for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Mar 2024 15:39:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rngzP-004guJ-RB for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Mar 2024 15:39:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rngzP-004guA-39 for pgsql-hackers@lists.postgresql.org; Fri, 22 Mar 2024 15:39:28 +0000 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rngzK-005sEU-1I for pgsql-hackers@postgresql.org; Fri, 22 Mar 2024 15:39:26 +0000 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-29f819d1651so1765615a91.3 for ; Fri, 22 Mar 2024 08:39:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pgguru-net.20230601.gappssmtp.com; s=20230601; t=1711121962; x=1711726762; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=wK0hANIaE5vGoyXD7eBkYl7v31CnucVLkvPMlAjXFW8=; b=AN4z3U4JERlu1PngWHUo0Twtn1FkKwiA9h58LuKN9jTuIkFL8Sh6LPd8NgLaJ2l9y7 NTEVWRYIhufGq0HJseFqzSdu6BRzCtXRnqBbXVjHZC18NWHKWAhm2XeGKDBWMqPltYOU RFZdz/ELuN8/88/c6FidJN8kurdKURZHPffVlvZshcbAdtk2Krnc1Dh3iOBv1Ai6j8US bCJOt1I1FdIrI9CTAKqLUPUaA9nVcRl/EHTsGMzM1ODXWsNbF4RuKSWtHMrsc+aMC/3D YOFO1odkbYU5s2uKIp2snTo93YqfzrtIqCXxLIqGmhQx7IxYaiEgyoNM3Ea6/zprb06P FBsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711121962; x=1711726762; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=wK0hANIaE5vGoyXD7eBkYl7v31CnucVLkvPMlAjXFW8=; b=peiKyCTPPATuQK9Hj6LZ8nbwUjmmlhQk1ZzrkNc+XQyEOTE08Zbzz3Pp0pbjzwiM0H jEBDGwhyznbBdzzyKI9I5t2WcF9hS2yoMRBstB6YyVeLsL9MB2uIe2NpXVUFYczbMd+u yuA5dnWh56s/WfBkwdMgktRap4VIFsHDlOiu2a+UqG+wGKHLQfTwO1zOxmTp4+1J6q9X aP2K+OzuLCBo62qYGgmTOipfw7SL+XLMECBdI7flysg/sa9xw4+9ZUBZeYVGgnm5p2Tu bXyQDgm/5ZzukBWc8xfnHzdv4/3DBqhDTIWG40MdIgv7gOSe4gEFW/Trd15/SZ1UnxhQ fDEA== X-Forwarded-Encrypted: i=1; AJvYcCVi6bho79JZaWZGKa/QXRVy4LYKo6yx6EnCOIYcgldY7r1LLkgdP6gVUFl+EHgGloH2p40n/0qdRc4COGfZy3kytZC7jknihf6SedJN X-Gm-Message-State: AOJu0YwwMdYgJv2RpwLl+iFsu2ubJkCF7iIPn2p6XcQ9BL1cZvfHviVM K4yDNUQ/S2Z+EYimMoNBZ5Z21Fuo0G1AFgPvqMyC06tEJKS0tWNOw5+BTdyepR6rzXNtR5s0ckE laOGltMN1x4jWmzB3E41r4CEIMQaHGRQziLrZkw== X-Google-Smtp-Source: AGHT+IFvzBvZzjPiLanFVugbyIH1OhXhx9Y676Je24JINf409w/UJEPVqn7e7j32pRFemgByoRuwGKDI5L7EUTRwGrs= X-Received: by 2002:a17:90b:4c8f:b0:29d:fefa:258d with SMTP id my15-20020a17090b4c8f00b0029dfefa258dmr676pjb.2.1711121962315; Fri, 22 Mar 2024 08:39:22 -0700 (PDT) MIME-Version: 1.0 References: <8c9b9b7d-0868-46d4-963c-8b1906bd7a1b@eisentraut.org> In-Reply-To: From: David Christensen Date: Fri, 22 Mar 2024 10:39:10 -0500 Message-ID: Subject: Re: Adding comments to help understand psql hidden queries To: Greg Sabino Mullane Cc: Peter Eisentraut , Jim Jones , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000bb7be0061441a0dc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bb7be0061441a0dc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 22, 2024 at 9:47=E2=80=AFAM Greg Sabino Mullane wrote: > > On Thu, Mar 21, 2024 at 6:20=E2=80=AFPM Peter Eisentraut wrote: >> >> lines are supposed to align vertically. With your patch, the first line >> would have variable length depending on the command. > > > Yes, that is a good point. Aligning those would be quite tricky, what if = we just kept a standard width for the closing query? Probably the 24 stars = we currently have to match "QUERY", which it appears nobody has changed for= translation purposes yet anyway. (If I am reading the code correctly, it w= ould be up to the translators to maintain the vertical alignment). I think it's easier to keep the widths balanced than constant (patch version included here), but if we needed to squeeze the opening string to a standard width that would be possible without too much trouble. The internal comment strings seem to be a bit more of a pain if we wanted all of the comments to be the same width, as we'd need a table or something so we can compute the longest string width, etc; doesn't seem worth the convolutions IMHO. No changes to Greg's patch, just keeping 'em both so cfbot stays happy. David --000000000000bb7be0061441a0dc Content-Type: application/octet-stream; name="v3-0002-Add-output-of-the-command-that-got-us-here-to-the.patch" Content-Disposition: attachment; filename="v3-0002-Add-output-of-the-command-that-got-us-here-to-the.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu2tt7jh1 RnJvbSA4M2YyNTg2YzZhMjhmMjM3YThlODFhOWQ4NDZiNDQ5NzU5OTgzMDdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBDaHJpc3RlbnNlbiA8ZGF2aWQuY2hyaXN0ZW5zZW5A Y3J1bmNoeWRhdGEuY29tPgpEYXRlOiBUaHUsIDIxIE1hciAyMDI0IDEyOjI3OjMyIC0wNTAwClN1 YmplY3Q6IFtQQVRDSCB2MyAyLzJdIEFkZCBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgdGhhdCBnb3Qg dXMgaGVyZSB0byB0aGUKIFFVRVJZIG91dHB1dAoKLS0tCiBzcmMvYmluL3BzcWwvY29tbWFuZC5j IHwgIDUgKysrKysKIHNyYy9iaW4vcHNxbC9jb21tb24uYyAgfCAyNCArKysrKysrKysrKysrKysr KysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2Nv bW1hbmQuYwppbmRleCA5YjBmYTA0MWY3Li40Y2ZiOTFlMTM0IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKQEAgLTU2LDYgKzU2 LDggQEAgdHlwZWRlZiBlbnVtIEVkaXRhYmxlT2JqZWN0VHlwZQogCUVkaXRhYmxlVmlldywKIH0g RWRpdGFibGVPYmplY3RUeXBlOwogCitjaGFyICpjdXJjbWQgPSBOVUxMOworCiAvKiBsb2NhbCBm dW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21t YW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJCQkJCQkJCVBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwK QEAgLTMwNyw2ICszMDksNyBAQCBleGVjX2NvbW1hbmQoY29uc3QgY2hhciAqY21kLAogCQkJCQkg ICBjbWQpOwogCX0KIAorCWN1cmNtZCA9IChjaGFyICopY21kOwogCWlmIChzdHJjbXAoY21kLCAi YSIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9hKHNjYW5fc3RhdGUsIGFjdGl2ZV9i cmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJiaW5kIikgPT0gMCkKQEAgLTQyMyw2ICs0 MjYsOCBAQCBleGVjX2NvbW1hbmQoY29uc3QgY2hhciAqY21kLAogCWVsc2UKIAkJc3RhdHVzID0g UFNRTF9DTURfVU5LTk9XTjsKIAorCWN1cmNtZCA9IE5VTEw7CisKIAkvKgogCSAqIEFsbCB0aGUg Y29tbWFuZHMgdGhhdCByZXR1cm4gUFNRTF9DTURfU0VORCB3YW50IHRvIGV4ZWN1dGUgcHJldmlv dXNfYnVmCiAJICogaWYgcXVlcnlfYnVmIGlzIGVtcHR5LiAgRm9yIGNvbnZlbmllbmNlIHdlIGlt cGxlbWVudCB0aGF0IGhlcmUsIG5vdCBpbgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1v bi5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCmluZGV4IDc2ZTAxYjAyYTMuLjE4YzhiMDY3ZWUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tb24uYworKysgYi9zcmMvYmluL3BzcWwvY29t bW9uLmMKQEAgLTQyLDYgKzQyLDcgQEAgc3RhdGljIGludAlFeGVjUXVlcnlBbmRQcm9jZXNzUmVz dWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIHN0YXRpYyBib29sIGNvbW1hbmRfbm9fYmVnaW4oY29u c3QgY2hhciAqcXVlcnkpOwogc3RhdGljIGJvb2wgaXNfc2VsZWN0X2NvbW1hbmQoY29uc3QgY2hh ciAqcXVlcnkpOwogCitleHRlcm4gY2hhciAqY3VyY21kOwogCiAvKgogICogb3BlblF1ZXJ5T3V0 cHV0RmlsZSAtLS0gYXR0ZW1wdCB0byBvcGVuIGEgcXVlcnkgb3V0cHV0IGZpbGUKQEAgLTU4MSw2 ICs1ODIsMTIgQEAgUEdyZXN1bHQgKgogUFNRTGV4ZWMoY29uc3QgY2hhciAqcXVlcnkpCiB7CiAJ UEdyZXN1bHQgICAqcmVzOworCWNoYXIgKmxhYmVsID0gIiI7CisJY29uc3QgY2hhciAqYXN0ZXJp c2tzID0gIioqKioqKioqKioqKioqKioqKioqIjsgLyogZW5zdXJlIHRoaXMgaXMgYXMgbG9uZyBh cyB0aGUKKwkJCQkJCQkJCQkJICAgKiBsb25nZXN0IGNvbW1hbmQgdGhhdCBtaWdodCBiZQorCQkJ CQkJCQkJCQkgICAqIGRpc3BsYXllZCAqLworCWludCBjdXJjbWRfbGVuZ3RoID0gMDsKKwogCiAJ aWYgKCFwc2V0LmRiKQogCXsKQEAgLTU4OCwyMSArNTk1LDMwIEBAIFBTUUxleGVjKGNvbnN0IGNo YXIgKnF1ZXJ5KQogCQlyZXR1cm4gTlVMTDsKIAl9CiAKKwlpZiAoY3VyY21kKQorCXsKKwkJbGFi ZWwgPSBwc3ByaW50ZigiIChcXCVzKSIsIGN1cmNtZCk7CisJCWN1cmNtZF9sZW5ndGggPSBzdHJs ZW4obGFiZWwpOworCX0KKwogCWlmIChwc2V0LmVjaG9faGlkZGVuICE9IFBTUUxfRUNIT19ISURE RU5fT0ZGKQogCXsKLQkJcHJpbnRmKF8oIi8qKioqKioqKiBRVUVSWSAqKioqKioqKiovXG4iCisJ CXByaW50ZihfKCIvKioqKioqKiogUVVFUlklcyAqKioqKioqKiovXG4iCiAJCQkJICIlc1xuIgot CQkJCSAiLyoqKioqKioqKioqKioqKioqKioqKioqKi9cblxuIiksIHF1ZXJ5KTsKKwkJCQkgIi8q KioqKioqKioqKioqKioqKioqKioqKiolLipzL1xuXG4iKSwgbGFiZWwsIHF1ZXJ5LCBjdXJjbWRf bGVuZ3RoLCBhc3Rlcmlza3MpOwogCQlmZmx1c2goc3Rkb3V0KTsKIAkJaWYgKHBzZXQubG9nZmls ZSkKIAkJewogCQkJZnByaW50Zihwc2V0LmxvZ2ZpbGUsCi0JCQkJCV8oIi8qKioqKioqKiBRVUVS WSAqKioqKioqKiovXG4iCisJCQkJCV8oIi8qKioqKioqKiBRVUVSWSVzICoqKioqKioqKi9cbiIK IAkJCQkJICAiJXNcbiIKLQkJCQkJICAiLyoqKioqKioqKioqKioqKioqKioqKioqKi9cblxuIiks IHF1ZXJ5KTsKKwkJCQkJICAiLyoqKioqKioqKioqKioqKioqKioqKioqKiUuKnMvXG5cbiIpLCBs YWJlbCwgcXVlcnksIGN1cmNtZF9sZW5ndGgsIGFzdGVyaXNrcyk7CiAJCQlmZmx1c2gocHNldC5s b2dmaWxlKTsKIAkJfQogCisJCWlmIChjdXJjbWQpCisJCQlwZnJlZShsYWJlbCk7CisKIAkJaWYg KHBzZXQuZWNob19oaWRkZW4gPT0gUFNRTF9FQ0hPX0hJRERFTl9OT0VYRUMpCiAJCQlyZXR1cm4g TlVMTDsKIAl9Ci0tIAoyLjM5LjMgKEFwcGxlIEdpdC0xNDYpCgo= --000000000000bb7be0061441a0dc Content-Type: application/octet-stream; name="v3-0001-Include-SQL-comments-on-echo-hidden-output.patch" Content-Disposition: attachment; filename="v3-0001-Include-SQL-comments-on-echo-hidden-output.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu2tt7j20 RnJvbSAzZjUxMWRhOGM1ZmRjNGE4OWVjYzA5YTRkNWI5YjhlYjc2ZmVlODBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIFNhYmlubyBNdWxsYW5lIDxodGFtZmlkc0BnbWFpbC5j b20+CkRhdGU6IFRodSwgMjEgTWFyIDIwMjQgMTI6MTI6NTQgLTA1MDAKU3ViamVjdDogW1BBVENI IHYzIDEvMl0gSW5jbHVkZSBTUUwgY29tbWVudHMgb24gLS1lY2hvLWhpZGRlbiBvdXRwdXQKClRo ZSB1c2Ugb2YgdGhlIC0tZWNoby1oaWRkZW4gZmxhZyBpbiBwc3FsIGlzIHVzZWQgdG8gc2hvdyBw ZW9wbGUgdGhlIHdheSBwc3FsIHBlcmZvcm1zIGl0cyBtYWdpYyBmb3IgaXRzIGJhY2tzbGFzaCBj b21tYW5kcy4gTm9uZSBvZiB0aGVtIGhhcyBtb3JlIG1hZ2ljIHRoYW4gIlxkIHJlbGF0aW9uIiwg YnV0IGl0IHN1ZmZlcnMgZnJvbSBuZWVkaW5nIGEgbG90IG9mIHNlcGFyYXRlIHF1ZXJpZXMgdG8g Z2F0aGVyIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMuIFVuZm9ydHVuYXRlbHksIHRo b3NlIHF1ZXJpZXMgY2FuIGdldCBvdmVyd2hlbG1pbmcgYW5kIGhhcmQgdG8gZmlndXJlIG91dCB3 aGljaCBvbmUgZG9lcyB3aGF0LCBlc3BlY2lhbGx5IGZvciB0aG9zZSBub3QgYWxyZWFkeSB2ZXJ5 IGZhbWlsaWFyIHdpdGggdGhlIHN5c3RlbSBjYXRhbG9ncy4gQXR0YWNoZWQgaXMgYSBwYXRjaCB0 byBhZGQgYSBzbWFsbCBTUUwgY29tbWVudCB0byB0aGUgdG9wIG9mIGVhY2ggU0VMRUNUIHF1ZXJ5 IGluc2lkZSBkZXNjcmliZU9uZVRhYmxlRGV0YWlsLiBBbGwgb3RoZXIgZnVuY3Rpb25zIHVzZSBh IHNpbmdsZSBxdWVyeSwgYW5kIHRodXMgbmVlZCBubyBhZGRpdGlvbmFsIGNvbnRleHQuIEJ1dCAi XGQgbXl0YWJsZSIgaGFzIHRoZSBwb3RlbnRpYWwgdG8gcnVuIG92ZXIgYSBkb3plbiBTUUwgcXVl cmllcyEgVGhlIG5ldyBmb3JtYXQgbG9va3MgbGlrZSB0aGlzOgoKLyoqKioqKioqIFFVRVJZICoq KioqKioqKi8KLyogR2V0IGluZm9ybWF0aW9uIGFib3V0IHJvdy1sZXZlbCBwb2xpY2llcyAqLwpT RUxFQ1QgcG9sLnBvbG5hbWUsIHBvbC5wb2xwZXJtaXNzaXZlLAogIENBU0UgV0hFTiBwb2wucG9s cm9sZXMgPSAnezB9JyBUSEVOIE5VTEwgRUxTRSBwZ19jYXRhbG9nLmFycmF5X3RvX3N0cmluZyhh cnJheShzZWxlY3Qgcm9sbmFtZSBmcm9tIHBnX2NhdGFsb2cucGdfcm9sZXMgd2hlcmUgb2lkID0g YW55IChwb2wucG9scm9sZXMpIG9yZGVyIGJ5IDEpLCcsJykgRU5ELAogIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIocG9sLnBvbHF1YWwsIHBvbC5wb2xyZWxpZCksCiAgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihwb2wucG9sd2l0aGNoZWNrLCBwb2wucG9scmVsaWQpLAogIENBU0UgcG9sLnBvbGNtZAog ICAgV0hFTiAncicgVEhFTiAnU0VMRUNUJwogICAgV0hFTiAnYScgVEhFTiAnSU5TRVJUJwogICAg V0hFTiAndycgVEhFTiAnVVBEQVRFJwogICAgV0hFTiAnZCcgVEhFTiAnREVMRVRFJwogICAgRU5E IEFTIGNtZApGUk9NIHBnX2NhdGFsb2cucGdfcG9saWN5IHBvbApXSEVSRSBwb2wucG9scmVsaWQg PSAnMTM0Mzg0JyBPUkRFUiBCWSAxOwovKioqKioqKioqKioqKioqKioqKioqKioqLwotLS0KIHNy Yy9iaW4vcHNxbC9kZXNjcmliZS5jIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCmluZGV4IDY4YjJlYTg4NzIuLjdmMjcyYjJhYzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0x NTg2LDkgKzE1ODYsMTAgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2No ZW1hbmFtZSwKIAlpbml0UFFFeHBCdWZmZXIoJnRtcGJ1Zik7CiAKIAkvKiBHZXQgZ2VuZXJhbCB0 YWJsZSBpbmZvICovCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgXygiLyogR2V0IGdlbmVyYWwg dGFibGUgaW5mb3JtYXRpb24gKi9cbiIpKTsKIAlpZiAocHNldC5zdmVyc2lvbiA+PSAxMjAwMDAp CiAJewotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVm LAogCQkJCQkJICAiU0VMRUNUIGMucmVsY2hlY2tzLCBjLnJlbGtpbmQsIGMucmVsaGFzaW5kZXgs IGMucmVsaGFzcnVsZXMsICIKIAkJCQkJCSAgImMucmVsaGFzdHJpZ2dlcnMsIGMucmVscm93c2Vj dXJpdHksIGMucmVsZm9yY2Vyb3dzZWN1cml0eSwgIgogCQkJCQkJICAiZmFsc2UgQVMgcmVsaGFz b2lkcywgYy5yZWxpc3BhcnRpdGlvbiwgJXMsIGMucmVsdGFibGVzcGFjZSwgIgpAQCAtMTYwNiw3 ICsxNjA3LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFt ZSwKIAl9CiAJZWxzZSBpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCiAJewotCQlwcmludGZQ UUV4cEJ1ZmZlcigmYnVmLAorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiU0VM RUNUIGMucmVsY2hlY2tzLCBjLnJlbGtpbmQsIGMucmVsaGFzaW5kZXgsIGMucmVsaGFzcnVsZXMs ICIKIAkJCQkJCSAgImMucmVsaGFzdHJpZ2dlcnMsIGMucmVscm93c2VjdXJpdHksIGMucmVsZm9y Y2Vyb3dzZWN1cml0eSwgIgogCQkJCQkJICAiYy5yZWxoYXNvaWRzLCBjLnJlbGlzcGFydGl0aW9u LCAlcywgYy5yZWx0YWJsZXNwYWNlLCAiCkBAIC0xNjIzLDcgKzE2MjQsNyBAQCBkZXNjcmliZU9u ZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCX0KIAllbHNlIGlmIChwc2V0 LnN2ZXJzaW9uID49IDkwNTAwKQogCXsKLQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBjLnJlbGNoZWNrcywgYy5yZWxr aW5kLCBjLnJlbGhhc2luZGV4LCBjLnJlbGhhc3J1bGVzLCAiCiAJCQkJCQkgICJjLnJlbGhhc3Ry aWdnZXJzLCBjLnJlbHJvd3NlY3VyaXR5LCBjLnJlbGZvcmNlcm93c2VjdXJpdHksICIKIAkJCQkJ CSAgImMucmVsaGFzb2lkcywgZmFsc2UgYXMgcmVsaXNwYXJ0aXRpb24sICVzLCBjLnJlbHRhYmxl c3BhY2UsICIKQEAgLTE2NDAsNyArMTY0MSw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJfQogCWVsc2UgaWYgKHBzZXQuc3ZlcnNpb24gPj0gOTA0 MDApCiAJewotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLAogCQkJCQkJICAiU0VMRUNUIGMucmVsY2hlY2tzLCBjLnJlbGtpbmQsIGMucmVsaGFzaW5k ZXgsIGMucmVsaGFzcnVsZXMsICIKIAkJCQkJCSAgImMucmVsaGFzdHJpZ2dlcnMsIGZhbHNlLCBm YWxzZSwgYy5yZWxoYXNvaWRzLCAiCiAJCQkJCQkgICJmYWxzZSBhcyByZWxpc3BhcnRpdGlvbiwg JXMsIGMucmVsdGFibGVzcGFjZSwgIgpAQCAtMTY1Nyw3ICsxNjU4LDcgQEAgZGVzY3JpYmVPbmVU YWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAl9CiAJZWxzZQogCXsKLQkJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAg IlNFTEVDVCBjLnJlbGNoZWNrcywgYy5yZWxraW5kLCBjLnJlbGhhc2luZGV4LCBjLnJlbGhhc3J1 bGVzLCAiCiAJCQkJCQkgICJjLnJlbGhhc3RyaWdnZXJzLCBmYWxzZSwgZmFsc2UsIGMucmVsaGFz b2lkcywgIgogCQkJCQkJICAiZmFsc2UgYXMgcmVsaXNwYXJ0aXRpb24sICVzLCBjLnJlbHRhYmxl c3BhY2UsICIKQEAgLTE3MTgsOSArMTcxOSwxMCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0 OwogCQljaGFyCSAgICpmb290ZXJzWzJdID0ge05VTEwsIE5VTEx9OwogCisJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsIF8oIi8qIEdldCBnZW5lcmFsIHNlcXVlbmNlIGluZm9ybWF0aW9uICovXG4i KSk7CiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDEwMDAwMCkKIAkJewotCQkJcHJpbnRmUFFFeHBC dWZmZXIoJmJ1ZiwKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAiU0VMRUNU IHBnX2NhdGFsb2cuZm9ybWF0X3R5cGUoc2VxdHlwaWQsIE5VTEwpIEFTIFwiJXNcIixcbiIKIAkJ CQkJCQkgICIgICAgICAgc2Vxc3RhcnQgQVMgXCIlc1wiLFxuIgogCQkJCQkJCSAgIiAgICAgICBz ZXFtaW4gQVMgXCIlc1wiLFxuIgpAQCAtMTc0NCw3ICsxNzQ2LDcgQEAgZGVzY3JpYmVPbmVUYWJs ZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJfQogCQllbHNlCiAJCXsKLQkJCXBy aW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJ CSAgIlNFTEVDVCAnYmlnaW50JyBBUyBcIiVzXCIsXG4iCiAJCQkJCQkJICAiICAgICAgIHN0YXJ0 X3ZhbHVlIEFTIFwiJXNcIixcbiIKIAkJCQkJCQkgICIgICAgICAgbWluX3ZhbHVlIEFTIFwiJXNc IixcbiIKQEAgLTE3NzEsNyArMTc3Myw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQlnb3RvIGVycm9yX3JldHVybjsKIAogCQkvKiBHZXQgdGhl IGNvbHVtbiB0aGF0IG93bnMgdGhpcyBzZXF1ZW5jZSAqLwotCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiU0VMRUNUIHBnX2NhdGFsb2cucXVvdGVfaWRlbnQobnNwbmFtZSkgfHwgJy4nIHx8Igor CQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCBfKCIvKiBHZXQgdGhlIGNvbHVtbiB0aGF0IG93bnMg dGhpcyBzZXF1ZW5jZSAqL1xuIikpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiU0VMRUNU IHBnX2NhdGFsb2cucXVvdGVfaWRlbnQobnNwbmFtZSkgfHwgJy4nIHx8IgogCQkJCQkJICAiXG4g ICBwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHJlbG5hbWUpIHx8ICcuJyB8fCIKIAkJCQkJCSAgIlxu ICAgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChhdHRuYW1lKSwiCiAJCQkJCQkgICJcbiAgIGQuZGVw dHlwZSIKQEAgLTE4NTAsNyArMTg1Myw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJICogZHVwbGljYXRpdmUgdGVzdCBsb2dpYyBiZWxvdy4KIAkg Ki8KIAljb2xzID0gMDsKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiU0VMRUNUIGEuYXR0bmFt ZSIpOworCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsIF8oIi8qIEdldCBpbmZvcm1hdGlvbiBhYm91 dCBlYWNoIGNvbHVtbiAqL1xuIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJTRUxFQ1Qg YS5hdHRuYW1lIik7CiAJYXR0bmFtZV9jb2wgPSBjb2xzKys7CiAJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgIixcbiAgcGdfY2F0YWxvZy5mb3JtYXRfdHlwZShhLmF0dHR5cGlkLCBhLmF0dHR5 cG1vZCkiKTsKIAlhdHR0eXBlX2NvbCA9IGNvbHMrKzsKQEAgLTIxNTAsNyArMjE1NCw4IEBAIGRl c2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIEZvb3Rl ciBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aXRpb24gY2hpbGQgdGFibGUgKi8KIAkJUEdyZXN1bHQg ICAqcmVzdWx0OwogCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsIF8oIi8qIEdldCBwYXJ0aXRpb24gaW5mb3JtYXRpb24gZm9yIHRoaXMgdGFibGUg Ki9cbiIpKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBpbmhw YXJlbnQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsXG4iCiAJCQkJCQkgICIgIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSxcbiAgIik7CiAKQEAgLTIyMDUsNyArMjIx MCw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CS8qIEZvb3RlciBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSAocGFydGl0aW9u aW5nIHBhcmVudCkgKi8KIAkJUEdyZXN1bHQgICAqcmVzdWx0OwogCi0JCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsCisJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsIF8oIi8qIEdldCB0aGUgcGFydGl0 aW9uIGtleSBmb3IgdGhpcyB0YWJsZSAqL1xuIikpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVm LAogCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJyVzJzo6cGdf Y2F0YWxvZy5vaWQpOyIsCiAJCQkJCQkgIG9pZCk7CiAJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5k YXRhKTsKQEAgLTIyMjcsNyArMjIzMyw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIEZvciBhIFRPQVNUIHRhYmxlLCBwcmludCBuYW1lIG9m IG93bmluZyB0YWJsZSAqLwogCQlQR3Jlc3VsdCAgICpyZXN1bHQ7CiAKLQkJcHJpbnRmUFFFeHBC dWZmZXIoJmJ1ZiwKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgXygiLyogRmluZCB3aGljaCB0 YWJsZSBvd25zIHRoaXMgVE9BU1QgdGFibGUgKi9cbiIpKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUsIGMucmVsbmFtZVxuIgogCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMiCiAJCQkJCQkgICIgSk9JTiBwZ19jYXRhbG9nLnBn X25hbWVzcGFjZSBuIgpAQCAtMjI1NSw3ICsyMjYyLDggQEAgZGVzY3JpYmVPbmVUYWJsZURldGFp bHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJLyogRm9vdGVyIGluZm9ybWF0aW9uIGFib3V0 IGFuIGluZGV4ICovCiAJCVBHcmVzdWx0ICAgKnJlc3VsdDsKIAotCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCBfKCIvKiBHZXQgaW5mb3JtYXRpb24g YWJvdXQgdGhpcyBpbmRleCAqL1xuIikpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJ CQkJICAiU0VMRUNUIGkuaW5kaXN1bmlxdWUsIGkuaW5kaXNwcmltYXJ5LCBpLmluZGlzY2x1c3Rl cmVkLCAiCiAJCQkJCQkgICJpLmluZGlzdmFsaWQsXG4iCiAJCQkJCQkgICIgIChOT1QgaS5pbmRp bW1lZGlhdGUpIEFORCAiCkBAIC0yMzcyLDcgKzIzODAsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkvKiBwcmludCBpbmRleGVzICovCiAJCWlm ICh0YWJsZWluZm8uaGFzaW5kZXgpCiAJCXsKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJ CQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCBfKCIvKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgZWFj aCBpbmRleCAqL1xuIikpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJT RUxFQ1QgYzIucmVsbmFtZSwgaS5pbmRpc3ByaW1hcnksIGkuaW5kaXN1bmlxdWUsICIKIAkJCQkJ CQkgICJpLmluZGlzY2x1c3RlcmVkLCBpLmluZGlzdmFsaWQsICIKIAkJCQkJCQkgICJwZ19jYXRh bG9nLnBnX2dldF9pbmRleGRlZihpLmluZGV4cmVsaWQsIDAsIHRydWUpLFxuICAiCkBAIC0yNTEw LDYgKzI1MTksOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFu YW1lLAogCQlpZiAodGFibGVpbmZvLmhhc3RyaWdnZXJzIHx8CiAJCQl0YWJsZWluZm8ucmVsa2lu ZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLCBfKCIvKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgZm9yZWlnbiBrZXkgY29uc3RyYWlu dHMgKi9cbiIpKTsKKwogCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTIwMDAwICYmCiAJCQkJKHRh YmxlaW5mby5pc3BhcnRpdGlvbiB8fCB0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKSkKIAkJCXsKQEAgLTI1MTcsNyArMjUyOCw3IEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJICogUHV0IHRoZSBjb25zdHJh aW50cyBkZWZpbmVkIGluIHRoaXMgdGFibGUgZmlyc3QsIGZvbGxvd2VkCiAJCQkJICogYnkgdGhl IGNvbnN0cmFpbnRzIGRlZmluZWQgaW4gYW5jZXN0b3IgcGFydGl0aW9uZWQgdGFibGVzLgogCQkJ CSAqLwotCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJCQkJICAiU0VMRUNUIGNvbnJlbGlkID0gJyVzJzo6cGdfY2F0YWxvZy5yZWdj bGFzcyBBUyBzYW1ldGFibGUsXG4iCiAJCQkJCQkJCSAgIiAgICAgICBjb25uYW1lLFxuIgogCQkJ CQkJCQkgICIgICAgICAgcGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihvaWQsIHRydWUp IEFTIGNvbmRlZixcbiIKQEAgLTI1MzAsNyArMjU0MSw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRh aWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJ CQkgICJTRUxFQ1QgdHJ1ZSBhcyBzYW1ldGFibGUsIGNvbm5hbWUsXG4iCiAJCQkJCQkJCSAgIiAg cGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihyLm9pZCwgdHJ1ZSkgYXMgY29uZGVmLFxu IgogCQkJCQkJCQkgICIgIGNvbnJlbGlkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzIEFTIG9udGFibGVc biIKQEAgLTI1ODQsOSArMjU5NSwxMCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBj aGFyICpzY2hlbWFuYW1lLAogCQlpZiAodGFibGVpbmZvLmhhc3RyaWdnZXJzIHx8CiAJCQl0YWJs ZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQl7CisJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLCBfKCIvKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgaW5jb21pbmcg Zm9yZWlnbiBrZXkgcmVmZXJlbmNlcyAqL1xuIikpOwogCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0g MTIwMDAwKQogCQkJewotCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiU0VMRUNUIGNvbm5hbWUsIGNvbnJlbGlkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzIEFTIG9udGFibGUsXG4iCiAJCQkJCQkJCSAgIiAgICAgICBwZ19jYXRh bG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCwgdHJ1ZSkgQVMgY29uZGVmXG4iCiAJCQkJCQkJ CSAgIiAgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgY1xuIgpAQCAtMjU5OCw3ICsyNjEw LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJ CX0KIAkJCWVsc2UKIAkJCXsKLQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJCSAgIlNFTEVDVCBjb25uYW1lLCBjb25yZWxpZDo6 cGdfY2F0YWxvZy5yZWdjbGFzcyBBUyBvbnRhYmxlLFxuIgogCQkJCQkJCQkgICIgICAgICAgcGdf Y2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihvaWQsIHRydWUpIEFTIGNvbmRlZlxuIgogCQkJ CQkJCQkgICIgIEZST00gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50XG4iCkBAIC0yNjM2LDcgKzI2 NDgsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAog CQkvKiBwcmludCBhbnkgcm93LWxldmVsIHBvbGljaWVzICovCiAJCWlmIChwc2V0LnN2ZXJzaW9u ID49IDkwNTAwKQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiU0VMRUNUIHBvbC5w b2xuYW1lLCIpOworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgXygiLyogR2V0IGluZm9ybWF0 aW9uIGFib3V0IHJvdy1sZXZlbCBwb2xpY2llcyAqL1xuIikpOworCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwgIlNFTEVDVCBwb2wucG9sbmFtZSwiKTsKIAkJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDEwMDAwMCkKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAogCQkJCQkJCQkJICIgcG9s LnBvbHBlcm1pc3NpdmUsXG4iKTsKQEAgLTI3MTYsOSArMjcyOSwxMCBAQCBkZXNjcmliZU9uZVRh YmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQl9CiAKIAkJLyogcHJpbnQgYW55 IGV4dGVuZGVkIHN0YXRpc3RpY3MgKi8KKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgXygiLyog R2V0IGluZm9ybWF0aW9uIGFib3V0IGV4dGVuZGVkIHN0YXRpc3RpY3MgKi9cbiIpKTsKIAkJaWYg KHBzZXQuc3ZlcnNpb24gPj0gMTQwMDAwKQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVm LAorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1Qgb2lkLCAiCiAJ CQkJCQkJICAic3R4cmVsaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsICIKIAkJCQkJCQkgICJzdHhu YW1lc3BhY2U6OnBnX2NhdGFsb2cucmVnbmFtZXNwYWNlOjpwZ19jYXRhbG9nLnRleHQgQVMgbnNw LCAiCkBAIC0yODE1LDcgKzI4MjksNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBj aGFyICpzY2hlbWFuYW1lLAogCQl9CiAJCWVsc2UgaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTAwMDAw KQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1Qgb2lkLCAiCiAJCQkJCQkJICAic3R4cmVsaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsICIKIAkJCQkJCQkgICJzdHhuYW1lc3BhY2U6OnBnX2NhdGFsb2cucmVn bmFtZXNwYWNlIEFTIG5zcCwgIgpAQCAtMjg5NCw3ICsyOTA4LDggQEAgZGVzY3JpYmVPbmVUYWJs ZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJLyogcHJpbnQgcnVsZXMgKi8KIAkJ aWYgKHRhYmxlaW5mby5oYXNydWxlcyAmJiB0YWJsZWluZm8ucmVsa2luZCAhPSBSRUxLSU5EX01B VFZJRVcpCiAJCXsKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLCBfKCIvKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBydWxlIGZvciB0aGlz IHRhYmxlICovXG4iKSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNF TEVDVCByLnJ1bGVuYW1lLCB0cmltKHRyYWlsaW5nICc7JyBmcm9tIHBnX2NhdGFsb2cucGdfZ2V0 X3J1bGVkZWYoci5vaWQsIHRydWUpKSwgIgogCQkJCQkJCSAgImV2X2VuYWJsZWRcbiIKIAkJCQkJ CQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcmV3cml0ZSByXG4iCkBAIC0yOTc3LDkgKzI5OTIsMTAg QEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJLyog cHJpbnQgYW55IHB1YmxpY2F0aW9ucyAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDAp CiAJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsIF8oIi8qIEdldCBpbmZvcm1hdGlvbiBh Ym91dCBlYWNoIHB1YmxpY2F0aW9uIHVzaW5nIHRoaXMgdGFibGUgKi9cbiIpKTsKIAkJCWlmIChw c2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKIAkJCXsKLQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVm LAorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1l XG4iCiAJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCiAJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4i CkBAIC0zMDExLDcgKzMwMjcsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFy ICpzY2hlbWFuYW1lLAogCQkJfQogCQkJZWxzZQogCQkJewotCQkJCXByaW50ZlBRRXhwQnVmZmVy KCZidWYsCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiU0VMRUNUIHB1 Ym5hbWVcbiIKIAkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKIAkJCQkJCQkJICAiICAgICAsIE5V TExcbiIKQEAgLTMwNjEsNyArMzA3Nyw5IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIElmIHZlcmJvc2UsIHByaW50IE5PVCBOVUxMIGNvbnN0 cmFpbnRzICovCiAJCWlmICh2ZXJib3NlKQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVm LAorCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgXygiLyogR2V0IGluZm9ybWF0aW9uIGFib3V0 IE5PVCBOVUxMIGNvbnN0cmFpbnRzICovXG4iKSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVm LAorCQkJCQkJCSAgIi8qIEZpbmQgTk9UIE5VTEwgY29uc3RyYWludHMgKi9cbiIKIAkJCQkJCQkg ICJTRUxFQ1QgY28uY29ubmFtZSwgYXQuYXR0bmFtZSwgY28uY29ubm9pbmhlcml0LCBjby5jb25p c2xvY2FsLFxuIgogCQkJCQkJCSAgImNvLmNvbmluaGNvdW50IDw+IDBcbiIKIAkJCQkJCQkgICJG Uk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjbyBKT0lOXG4iCkBAIC0zMTMzLDcgKzMxNTEs OCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkv KiBwcmludCBydWxlcyAqLwogCQlpZiAodGFibGVpbmZvLmhhc3J1bGVzKQogCQl7Ci0JCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgXygiLyogR2V0 IGluZm9ybWF0aW9uIGFib3V0IGVhY2ggcnVsZSBmb3IgdGhpcyB2aWV3ICovXG4iKSk7CisJCQlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCByLnJ1bGVuYW1lLCB0cmlt KHRyYWlsaW5nICc7JyBmcm9tIHBnX2NhdGFsb2cucGdfZ2V0X3J1bGVkZWYoci5vaWQsIHRydWUp KVxuIgogCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19yZXdyaXRlIHJcbiIKIAkJCQkJCQkg ICJXSEVSRSByLmV2X2NsYXNzID0gJyVzJyBBTkQgci5ydWxlbmFtZSAhPSAnX1JFVFVSTicgT1JE RVIgQlkgMTsiLApAQCAtMzE3MCw3ICszMTg5LDggQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMo Y29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJUEdyZXN1bHQgICAqcmVzdWx0OwogCQlpbnQJCQl0 dXBsZXM7CiAKLQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJcHJpbnRmUFFFeHBCdWZmZXIo JmJ1ZiwgXygiLyogR2V0IGluZm9ybWF0aW9uIGFib3V0IGVhY2ggdHJpZ2dlciBvbiB0aGlzIHRh YmxlICovXG4iKSk7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICJTRUxFQ1Qg dC50Z25hbWUsICIKIAkJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X3RyaWdnZXJkZWYodC5vaWQs IHRydWUpLCAiCiAJCQkJCQkgICJ0LnRnZW5hYmxlZCwgdC50Z2lzaW50ZXJuYWwsXG4iKTsKQEAg LTMzODksNiArMzQwOSw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCiAKIAkJLyogcHJpbnQgdGFibGVzIGluaGVyaXRlZCBmcm9tIChleGNsdWRlIHBh cnRpdGlvbmVkIHBhcmVudHMpICovCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkg ICIvKiBGaW5kIHRhYmxlcyBpbmhlcml0ZWQgZnJvbSAqL1xuIgogCQkJCQkJICAiU0VMRUNUIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzXG4iCiAJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpXG4iCiAJCQkJCQkgICJXSEVSRSBjLm9p ZCA9IGkuaW5ocGFyZW50IEFORCBpLmluaHJlbGlkID0gJyVzJ1xuIgpAQCAtMzQyNSw4ICszNDQ2 LDkgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJ fQogCiAJCS8qIHByaW50IGNoaWxkIHRhYmxlcyAod2l0aCBhZGRpdGlvbmFsIGluZm8gaWYgcGFy dGl0aW9ucykgKi8KKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgXygiLyogR2V0IGluZm9ybWF0 aW9uIGFib3V0IGNoaWxkIHRhYmxlcyAqL1xuIikpOwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAx NDAwMDApCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVs a2luZCwiCiAJCQkJCQkJICAiIGluaGRldGFjaHBlbmRpbmcsIgogCQkJCQkJCSAgIiBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZClcbiIKQEAgLTM0MzYsNyArMzQ1 OCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CQkJCQkJICAiIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7IiwK IAkJCQkJCQkgIG9pZCk7CiAJCWVsc2UgaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTAwMDAwKQotCQkJ cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJ CQkJICAiU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIgogCQkJ CQkJCSAgIiBmYWxzZSBBUyBpbmhkZXRhY2hwZW5kaW5nLCIKIAkJCQkJCQkgICIgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpXG4iCkBAIC0zNDQ2LDcgKzM0Njgs NyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJ CQkJCSAgIiBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OyIsCiAJ CQkJCQkJICBvaWQpOwogCQllbHNlCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsIGMucmVsa2luZCwiCiAJCQkJCQkJICAiIGZhbHNlIEFTIGluaGRldGFjaHBlbmRp bmcsIE5VTExcbiIKIAkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmhlcml0cyBpXG4iCi0tIAoyLjM5LjMgKEFwcGxlIEdpdC0xNDYpCgo= --000000000000bb7be0061441a0dc--