From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#52999: 29.0.50; [PATCH v3] `eshell-eval-using-options' should follow POSIX/GNU argument conventions Date: Tue, 4 Jan 2022 13:09:29 -0800 Message-ID: References: <8c7a7765-2d40-e685-1d93-c60496a4f626@gmail.com> <83k0ffbqo1.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------147F9B53D68DE23324D7581A" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32159"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 52999@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Jan 04 22:10:31 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n4r4h-0008BY-1c for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 04 Jan 2022 22:10:31 +0100 Original-Received: from localhost ([::1]:39310 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n4r4f-0003az-Df for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 04 Jan 2022 16:10:29 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:52302) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n4r4E-0003ao-HF for bug-gnu-emacs@gnu.org; Tue, 04 Jan 2022 16:10:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:55570) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1n4r4E-0003bK-6a for bug-gnu-emacs@gnu.org; Tue, 04 Jan 2022 16:10:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1n4r4E-0001F0-0B for bug-gnu-emacs@gnu.org; Tue, 04 Jan 2022 16:10:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 04 Jan 2022 21:10:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52999 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 52999-submit@debbugs.gnu.org id=B52999.16413305804737 (code B ref 52999); Tue, 04 Jan 2022 21:10:01 +0000 Original-Received: (at 52999) by debbugs.gnu.org; 4 Jan 2022 21:09:40 +0000 Original-Received: from localhost ([127.0.0.1]:38883 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n4r3r-0001EI-MY for submit@debbugs.gnu.org; Tue, 04 Jan 2022 16:09:40 -0500 Original-Received: from mail-pj1-f51.google.com ([209.85.216.51]:56197) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n4r3p-0001E2-Ct for 52999@debbugs.gnu.org; Tue, 04 Jan 2022 16:09:38 -0500 Original-Received: by mail-pj1-f51.google.com with SMTP id iy13so32284669pjb.5 for <52999@debbugs.gnu.org>; Tue, 04 Jan 2022 13:09:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language; bh=YjpTmyoJ+ba8nzN6K11hbMTRTPdevhCESMDef23Bb2o=; b=llUbpsmmNhFthrtM8vMW4AsAORtDhlzC2BuaUaiiNHWv25KeUqUMSnREzPC9rrCV2T gqO/+Rca7EB5P9xXpv08Jg1/MbA6LXQTsxggM23iEbExBS6Le3ZESYgQ2+jC1KIb8x7F zDXkTCJg8WUtFeV26x/yCQjoL5J4Ap4R7QUl9pVznRM0Q5NbD2K2nctq3GJfwWel7GJE vWz/p3exS2XnohUgOBicwVw+108Hkh7rgIJTAhytOUF42TDa/zNw/kJcIKzMuNGzTqKU l727nzXB+zALxQ/tx10oWpi0PGP+3jZMNM5x2rvtj3ceMqiXZx+QQ0ZJ+9fNhIe6GSgk lNDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=YjpTmyoJ+ba8nzN6K11hbMTRTPdevhCESMDef23Bb2o=; b=7fu2rxpjvE6tABqbwHiNUKsjiIiKZCh5GISoPGZukSWUTiMm0QM+rhaIwSUQckoatq UT9sQLpb3tLstuWAHTl/j1uuO7T/7qBFGQM4AO/y63MrYXBKaPyxgql+Es840qsqRbqq 8kGyZAr9wKtdoYR0XQXdxo8nW9PFj+MFgoU9rGRIG4f8JFKomddfzi/3nrm02N++9sx2 aJGjsqsro0Xm+SsDLEu04LeuEUGwlOZhDVMGKYkuA8okm1AtnaV+NonVUW37abT2BTWA gEOwvY7VUiNLomJxMqkGN9i/ANLLSRDdpCleUrnszDFssipkEVOeMD5syYW9E8JIZ4ZM b/UQ== X-Gm-Message-State: AOAM532e7foK+J2QfMPsTNxNRnUkWxwp+wUnVdGHIu3F4Q53aF+H4GyU mh93jkKc7ia5QI4xdSiN2lQghMYyf8E= X-Google-Smtp-Source: ABdhPJw+QVJgPKXvjExC+74vgsa3wCgf8C7SrDXxNdV3bmbLjnPtY94vShqhOb6ovjKODSibwG47vA== X-Received: by 2002:a17:902:b181:b0:149:90e2:896a with SMTP id s1-20020a170902b18100b0014990e2896amr32776015plr.149.1641330571170; Tue, 04 Jan 2022 13:09:31 -0800 (PST) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id on7sm215229pjb.50.2022.01.04.13.09.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Jan 2022 13:09:30 -0800 (PST) In-Reply-To: <83k0ffbqo1.fsf@gnu.org> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:223666 Archived-At: This is a multi-part message in MIME format. --------------147F9B53D68DE23324D7581A Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks, I've attached an updated patch. On 1/4/2022 5:01 AM, Eli Zaretskii wrote: >> From: Jim Porter >> Date: Mon, 3 Jan 2022 21:33:28 -0800 >> >> --- a/etc/NEWS >> +++ b/etc/NEWS >> @@ -1060,6 +1060,9 @@ dimensions. >> Specifying a cons as the from argument allows to start measuring text >> from a specified amount of pixels above or below a position. >> >> +--- >> +** 'eshell-eval-using-options' now follows POSIX/GNU argument syntax conventions. > > This is too terse: we cannot assume that everyone knows what does > "POSIX/GNU argument syntax conventions" stand for. Especially since > you didn't even say "command-line arguments", just "arguments". > Please make the entry more informative. Ok, I added a brief description explaining what specifically has been changed. > And why don't people who propose and install changes in Eshell also > update the Eshell manual? That the manual in its current shape leaves > a lot to be desired is not a justification to leave it that way. We > will never improve that manual unless we start adding useful stuff to > it, one small piece at a time. I just wasn't sure if `eshell-eval-using-options' should be in the manual or not. Thinking it over a bit more, it would have helped me if it had been in the manual (I encountered this bug while trying to write my own Eshell built-in command), so I added some info about it to the manual, mostly adapted from the docstring for `eshell-eval-using-options'. Hopefully I followed the right conventions here; I'm only vaguely familiar with the Texinfo format. >> (ert-deftest test-eshell-eval-using-options () >> "Tests for `eshell-eval-using-options'." >> + ;; Test short options. >> (eshell-eval-using-options >> - "sudo" '("-u" "root" "whoami") >> - '((?u "user" t user "execute a command as another USER") >> - :parse-leading-options-only) >> - (should (equal user "root"))) >> + "ls" '("-a" "/dev/null") >> + '((?a "all" nil show-all >> + "do not ignore entries starting with .")) >> + (should (eq show-all t)) >> + (should (equal args '("/dev/null")))) > > Can these tests be made less platform-specific? For example, not all > the supported platforms have /dev/null, and we have a portable > abstraction for it. They should actually work cross-platform, since the tests don't invoke the commands at all; they just make sure that `eshell-eval-using-options' can parse the switches correctly. To make this a bit clearer though, I replaced "/dev/null" with "/some/path". Hopefully when people see that, they'll understand that this is a "fake" path not corresponding to anything on the actual filesystem. >> + "sudo" '("-u" "root" "whoami") >> + '((?u "user" t user "execute a command as another USER") >> + :parse-leading-options-only) >> + (should (equal user "root")) >> + (should (equal args '("whoami")))) [snip] > > And here, sudo and whoami don't necessarily exist, so something should > be done about that, I think. The same applies here; the commands aren't actually invoked, so they could just as easily be named "foo" and "bar". I think the reason for them looking like real commands is just so that a reader can glance at them and understand more-readily what the expected result is. Readers are likely to be familiar with "sudo" and "whoami", but wouldn't have any preconceptions about the semantics of (fake) commands named "foo" and "bar". If you still think it's a problem, I can change it though. (Also, technically, both of those commands should always exist in Eshell, since they're defined as built-in commands. "sudo" runs the TRAMP sudo method, and "whoami" is a TRAMP-aware Lisp implementation.) --------------147F9B53D68DE23324D7581A Content-Type: text/plain; charset=UTF-8; name="0001-Follow-POSIX-GNU-argument-conventions-for-eshell-eva.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Follow-POSIX-GNU-argument-conventions-for-eshell-eva.pa"; filename*1="tch" RnJvbSA4NWE4ZTJkZjg1NWY4MjRjMThhZGM3MGE0OTY4YmQzYWUyNmY1NThkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFR1ZSwgNCBKYW4gMjAyMiAxMjo1ODozOCAtMDgwMApTdWJqZWN0OiBbUEFU Q0hdIEZvbGxvdyBQT1NJWC9HTlUgYXJndW1lbnQgY29udmVudGlvbnMgZm9yCiAnZXNoZWxs LWV2YWwtdXNpbmctb3B0aW9ucycKCiogbGlzcC9lc2hlbGwvZXNoLW9wdC5lbCAoZXNoZWxs LS1zcGxpdC1zd2l0Y2gpOiBOZXcgZnVuY3Rpb24uCihlc2hlbGwtc2V0LW9wdGlvbik6IEFs bG93IHNldHRpbmcgYSBzdXBwbGllZCB2YWx1ZSBpbnN0ZWFkIG9mIGFsd2F5cwpjb25zdW1p bmcgZnJvbSAnZXNoZWxsLS1hcmdzJy4KKGVzaGVsbC0tcHJvY2Vzcy1vcHRpb24pOiBTdXBw b3J0IGNvbnN1bWluZyBvcHRpb24gdmFsdWVzIHNwZWNpZmllZCBhcwphIHNpbmdsZSB0b2tl bi4KKGVzaGVsbC0tcHJvY2Vzcy1hcmdzKTogRm9yIHNob3J0IG9wdGlvbnMsIHBhc3MgZnVs bCBzd2l0Y2ggdG9rZW4gdG8KJ2VzaGVsbC0tcHJvY2Vzcy1vcHRpb24nLgoKKiB0ZXN0L2xp c3AvZXNoZWxsL2VzaC1vcHQtdGVzdHMuZWwgKGVzaC1vcHQtcHJvY2Vzcy1hcmdzLXRlc3Qp OiBGaXgKdGVzdC4KKHRlc3QtZXNoZWxsLWV2YWwtdXNpbmctb3B0aW9ucyk6IEFkZCB0ZXN0 cyBmb3IgdmFyaW91cyB0eXBlcyBvZgpvcHRpb25zLgoKKiBkb2MvbWlzYy9lc2hlbGwudGV4 aSAoRGVmaW5pbmcgbmV3IGJ1aWx0LWluIGNvbW1hbmRzKTogTmV3CnN1YnNlY3Rpb24sIGRl c2NyaWJlIGhvdyB0byB1c2UgJ2VzaGVsbC1ldmFsLXVzaW5nLW9wdGlvbnMnLgoKKiBldGMv TkVXUzogQW5ub3VuY2UgdGhlIGNoYW5nZS4KLS0tCiBkb2MvbWlzYy9lc2hlbGwudGV4aSAg ICAgICAgICAgICAgfCAxMTcgKysrKysrKysrKysrKysrKysrKysrKysKIGV0Yy9ORVdTICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCiBsaXNwL2VzaGVsbC9lc2gtb3B0LmVs ICAgICAgICAgICAgfCAgOTAgKysrKysrKysrKysrLS0tLS0tCiB0ZXN0L2xpc3AvZXNoZWxs L2VzaC1vcHQtdGVzdHMuZWwgfCAxNTEgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t CiA0IGZpbGVzIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2MvbWlzYy9lc2hlbGwudGV4aSBiL2RvYy9taXNjL2VzaGVsbC50 ZXhpCmluZGV4IGE4N2RkNDMwOGMuLjFiYzFmY2JlOWMgMTAwNjQ0Ci0tLSBhL2RvYy9taXNj L2VzaGVsbC50ZXhpCisrKyBiL2RvYy9taXNjL2VzaGVsbC50ZXhpCkBAIC02OTQsNiArNjk0 LDEyMyBAQCBCdWlsdC1pbnMKIHN1cHBvcnRzIFRyYW1wLgogQGVuZCB0YWJsZQogCitAc3Vi c2VjdGlvbiBEZWZpbmluZyBuZXcgYnVpbHQtaW4gY29tbWFuZHMKK1doaWxlIEVzaGVsbCBj YW4gcnVuIExpc3AgZnVuY3Rpb25zIGRpcmVjdGx5IGFzIGNvbW1hbmRzLCBpdCBtYXkgYmUK K21vcmUgY29udmVuaWVudCB0byBwcm92aWRlIGEgc3BlY2lhbCBidWlsdC1pbiBjb21tYW5k IGZvcgorRXNoZWxsLiAgQnVpbHQtaW4gY29tbWFuZHMgYXJlIGp1c3Qgb3JkaW5hcnkgTGlz cCBmdW5jdGlvbnMgZGVzaWduZWQKK3RvIGJlIGNhbGxlZCBmcm9tIEVzaGVsbC4gIFdoZW4g ZGVmaW5pbmcgYW4gRXNoZWxsLXNwZWNpZmljIHZlcnNpb24gb2YKK2FuIGV4aXN0aW5nIGZ1 bmN0aW9uLCB5b3UgY2FuIGdpdmUgdGhhdCBmdW5jdGlvbiBhIG5hbWUgc3RhcnRpbmcgd2l0 aAorQGNvZGV7ZXNoZWxsL30gc28gdGhhdCBFc2hlbGwga25vd3MgdG8gdXNlIGl0LgorCitA ZGVmbWFjIGVzaGVsbC1ldmFsLXVzaW5nLW9wdGlvbnMgbmFtZSBtYWNyby1hcmdzIG9wdGlv bnMgYm9keUBkb3Rze30KK1RoaXMgbWFjcm8gcHJvY2Vzc2VzIGEgbGlzdCBvZiBAdmFye21h Y3JvLWFyZ3N9IGZvciB0aGUgY29tbWFuZAorQHZhcntuYW1lfSB1c2luZyBhIHNldCBvZiBj b21tYW5kIGxpbmUgQHZhcntvcHRpb25zfS4gIElmIHRoZQorYXJndW1lbnRzIGFyZSBwYXJz ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIHN0b3JlIHRoZSByZXN1bHRpbmcgdmFsdWVzCitp biBsb2NhbCBzeW1ib2xzIGFuZCBleGVjdXRlIEB2YXJ7Ym9keX07IGFueSByZW1haW5pbmcg YXJndW1lbnRzIHdpbGwKK2JlIGF2YWlsYWJsZSBpbiB0aGUgbG9jYWxseSBsZXQtYm91bmQg dmFyaWFibGUgQGNvZGV7YXJnc30uICBUaGUKK3JldHVybiB2YWx1ZSBpcyB0aGUgdmFsdWUg b2YgdGhlIGxhc3QgZm9ybSBpbiBAdmFye2JvZHl9LgorCitJZiBhbiB1bmtub3duIG9wdGlv biB3YXMgcGFzc2VkIGluIEB2YXJ7bWFjcm8tYXJnc30gYW5kIGFuIGV4dGVybmFsCitjb21t YW5kIHdhcyBzcGVjaWZpZWQgKHNlZSBiZWxvdyksIHRoaXMgbWFjcm8gd2lsbCBzdGFydCBh IHByb2Nlc3MgZm9yCit0aGF0IGNvbW1hbmQgYW5kIHRocm93IHRoZSB0YWcgQGNvZGV7ZXNo ZWxsLWV4dGVybmFsfSB3aXRoIHRoZSBuZXcKK3Byb2Nlc3MgYXMgaXRzIHZhbHVlLgorCitA dmFye29wdGlvbnN9IHNob3VsZCBiZSBhIGxpc3QgYmVnaW5uaW5nIHdpdGggb25lIG9yIG1v cmUgZWxlbWVudHMgb2YKK3RoZSBmb2xsb3dpbmcgZm9ybSwgd2l0aCBlYWNoIGVsZW1lbnQg cmVwcmVzZW50aW5nIGEgcGFydGljdWxhcgorY29tbWFuZC1saW5lIHN3aXRjaDoKKworQGV4 YW1wbGUKKyhAdmFye3Nob3J0fSBAdmFye2xvbmd9IEB2YXJ7dmFsdWV9IEB2YXJ7c3ltYm9s fSBAdmFye2hlbHAtc3RyaW5nfSkKK0BlbmQgZXhhbXBsZQorCitAdGFibGUgQHZhcgorQGl0 ZW0gc2hvcnQKK1RoaXMgZWxlbWVudCwgaWYgbm9uLW5pbCwgc2hvdWxkIGJlIGEgY2hhcmFj dGVyIHRvIGJlIHVzZWQgYXMgYSBzaG9ydAorc3dpdGNoLCBsaWtlIEBjb2Rley1AdmFye3No b3J0fX0uICBBdCBsZWFzdCBvbmUgb2YgdGhpcyBlbGVtZW50IGFuZAorQHZhcntsb25nfSBt dXN0IGJlIG5vbi1uaWwuCisKK0BpdGVtIGxvbmcKK1RoaXMgZWxlbWVudCwgaWYgbm9uLW5p bCwgc2hvdWxkIGJlIGEgc3RyaW5nIHRvIGJlIHVzZWQgYXMgYSBsb25nCitzd2l0Y2gsIGxp a2UgQGNvZGV7LS1AdmFye2xvbmd9fS4KKworQGl0ZW0gdmFsdWUKK1RoaXMgZWxlbWVudCBp cyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcHRpb24uICBJdCBjYW4gYmUKK2Vp dGhlcjoKKworQHRhYmxlIEBhc2lzCitAaXRlbSBAY29kZXt0fQorVGhlIG9wdGlvbiBuZWVk cyBhIHZhbHVlIHRvIGJlIHNwZWNpZmllZCBhZnRlciB0aGUgc3dpdGNoLgorCitAaXRlbSBA Y29kZXtuaWx9CitUaGUgb3B0aW9uIGlzIGdpdmVuIHRoZSB2YWx1ZSBAY29kZXt0fS4KKwor QGl0ZW0gYW55dGhpbmcgZWxzZQorVGhlIG9wdGlvbiBpcyBnaXZlbiB0aGUgc3BlY2lmaWVk IHZhbHVlLgorQGVuZCB0YWJsZQorCitAaXRlbSBzeW1ib2wKK1RoaXMgZWxlbWVudCBpcyB0 aGUgbmFtZSBvZiB0aGUgTGlzcCBzeW1ib2wgdGhhdCB3aWxsIGJlIGJvdW5kIHRvCitAdmFy e3ZhbHVlfS4gIElmIEB2YXJ7c3ltYm9sfSBpcyBAY29kZXtuaWx9LCBzcGVjaWZ5aW5nIHRo aXMgc3dpdGNoCit3aWxsIGluc3RlYWQgY2FsbCBAY29kZXtlc2hlbGwtc2hvdy11c2FnZX0s IGFuZCBzbyBpcyBhcHByb3ByaWF0ZSBmb3IKK2FuIG9wdGlvbiBsaWtlIEBjb2Rley0taGVs cH0uCisKK0BpdGVtIGhlbHAtc3RyaW5nCitUaGlzIGVsZW1lbnQgaXMgYSBkb2N1bWVudGF0 aW9uIHN0cmluZyBmb3IgdGhlIG9wdGlvbiwgd2hpY2ggd2lsbCBiZQorZGlzcGxheWVkIHdo ZW4gQGNvZGV7ZXNoZWxsLXNob3ctdXNhZ2V9IGlzIGludm9rZWQuCitAZW5kIHRhYmxlCisK K0FmdGVyIHRoZSBsaXN0IG9mIGNvbW1hbmQtbGluZSBzd2l0Y2ggZWxlbWVudHMsIEB2YXJ7 b3B0aW9uc30gY2FuCitpbmNsdWRlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgdG8g Y29udHJvbCBob3cKK0Bjb2Rle2VzaGVsbC1ldmFsLXVzaW5nLW9wdGlvbnN9IGJlaGF2ZXMu ICBTb21lIG9mIHRoZXNlIHRha2UKK2FyZ3VtZW50cywgd2hpbGUgb3RoZXJzIGRvbid0LiAg VGhlIHJlY29nbml6ZWQga2V5d29yZHMgYXJlOgorCitAdGFibGUgQGNvZGUKK0BpdGVtIDpl eHRlcm5hbCBAdmFye3N0cmluZ30KK1NwZWNpZnkgQHZhcntzdHJpbmd9IGFzIGFuIGV4dGVy bmFsIGNvbW1hbmQgdG8gcnVuIGlmIHRoZXJlIGFyZQordW5rbm93biBzd2l0Y2hlcyBpbiBA dmFye21hY3JvLWFyZ3N9LgorCitAaXRlbSA6dXNhZ2UgQHZhcntzdHJpbmd9CitTZXQgQHZh cntzdHJpbmd9IGFzIHRoZSBpbml0aWFsIHBhcnQgb2YgdGhlIGNvbW1hbmQncyBkb2N1bWVu dGF0aW9uCitzdHJpbmcuICBJdCBhcHBlYXJzIGJlZm9yZSB0aGUgb3B0aW9ucyBhcmUgbGlz dGVkLgorCitAaXRlbSA6cG9zdC11c2FnZSBAdmFye3N0cmluZ30KK1NldCBAdmFye3N0cmlu Z30gdG8gYmUgdGhlIChvcHRpb25hbCkgdHJhaWxpbmcgcGFydCBvZiB0aGUgY29tbWFuZCdz Citkb2N1bWVudGF0aW9uIHN0cmluZy4gIEl0IGFwcGVhcnMgYWZ0ZXIgdGhlIGxpc3Qgb2Yg b3B0aW9ucywgYnV0CitiZWZvcmUgdGhlIGZpbmFsIHBhcnQgb2YgdGhlIGRvY3VtZW50YXRp b24gYWJvdXQgdGhlIGFzc29jaWF0ZWQKK2V4dGVybmFsIGNvbW1hbmQsIGlmIHRoZXJlIGlz IG9uZS4KKworQGl0ZW0gOnNob3ctdXNhZ2UKK0lmIHByZXNlbnQsIHRoZW4gc2hvdyB0aGUg dXNhZ2UgbWVzc2FnZSBpZiB0aGUgY29tbWFuZCBpcyBjYWxsZWQgd2l0aAorbm8gYXJndW1l bnRzLgorCitAaXRlbSA6cHJlc2VydmUtYXJncworSWYgcHJlc2VudCwgZG8gbm90IHBhc3Mg QHZhcnttYWNyby1hcmdzfSB0aHJvdWdoIEBjb2Rle2ZsYXR0ZW4tdHJlZX0KK2FuZCBAY29k ZXtlc2hlbGwtc3RyaW5naWZ5LWxpc3R9LgorCitAaXRlbSA6cGFyc2UtbGVhZGluZy1vcHRp b25zLW9ubHkKK0lmIHByZXNlbnQsIGRvIG5vdCBwYXJzZSBkYXNoIG9yIHN3aXRjaCBhcmd1 bWVudHMgYWZ0ZXIgdGhlIGZpcnN0Citwb3NpdGlvbmFsIGFyZ3VtZW50LiAgSW5zdGVhZCwg dHJlYXQgdGhlbSBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cwordGhlbXNlbHZlcy4KK0BlbmQg dGFibGUKKworRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBoYW5kbGUgYSBzdWJzZXQgb2YgdGhl IG9wdGlvbnMgZm9yIHRoZQorQGNvZGV7bHN9IGNvbW1hbmQgbGlrZSB0aGlzOgorCitAZXhh bXBsZQorKGVzaGVsbC1ldmFsLXVzaW5nLW9wdGlvbnMKKyAibHMiIG1hY3JvLWFyZ3MKKyAn KCg/YSAgbmlsICAgICAgbmlsIHNob3ctYWxsICAgICAgICJzaG93IGFsbCBmaWxlcyIpCisg ICAoP0kgICJpZ25vcmUiIHQgICBpZ25vcmUtcGF0dGVybiAiaWdub3JlIGZpbGVzIG1hdGNo aW5nIHBhdHRlcm4iKQorICAgKG5pbCAiaGVscCIgICBuaWwgbmlsICAgICAgICAgICAgInNo b3cgdGhpcyBoZWxwIG1lc3NhZ2UiKQorIDpleHRlcm5hbCAibHMiCisgOnVzYWdlICJbT1BU SU9OXS4uLiBbRklMRV0uLi4KKyAgTGlzdCBpbmZvcm1hdGlvbiBhYm91dCBGSUxFcyAodGhl IGN1cnJlbnQgZGlyZWN0b3J5IGJ5IGRlZmF1bHQpLiIpCisgOzsgTGlzdCB0aGUgZmlsZXMg aW4gQVJHUyBzb21laG93Li4uCisgKQorQGVuZCBleGFtcGxlCisKK0BlbmQgZGVmbWFjCisK IEBzdWJzZWN0aW9uIEJ1aWx0LWluIHZhcmlhYmxlcwogRXNoZWxsIGtub3dzIGEgZmV3IGJ1 aWx0LWluIHZhcmlhYmxlczoKIApkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwpp bmRleCBjYTZhNzE2Y2NkLi5jZjM5MmNhNDdlIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysg Yi9ldGMvTkVXUwpAQCAtMTA2MCw2ICsxMDYwLDExIEBAIGRpbWVuc2lvbnMuCiBTcGVjaWZ5 aW5nIGEgY29ucyBhcyB0aGUgZnJvbSBhcmd1bWVudCBhbGxvd3MgdG8gc3RhcnQgbWVhc3Vy aW5nIHRleHQKIGZyb20gYSBzcGVjaWZpZWQgYW1vdW50IG9mIHBpeGVscyBhYm92ZSBvciBi ZWxvdyBhIHBvc2l0aW9uLgogCistLS0KKyoqICdlc2hlbGwtZXZhbC11c2luZy1vcHRpb25z JyBub3cgZm9sbG93cyBQT1NJWC9HTlUgYXJndW1lbnQgc3ludGF4IGNvbnZlbnRpb25zLgor VGhpcyBub3cgYWNjZXB0cyBjb21tYW5kLWxpbmUgb3B0aW9ucyB3aXRoIHZhbHVlcyBwYXNz ZWQgYXMgYSBzaW5nbGUKK3Rva2VuLCBzdWNoIGFzICctb1ZBTFVFJyBvciAnLS1vcHRpb249 VkFMVUUnLgorCiAqKiBYREcgc3VwcG9ydAogCiAqKiogTmV3IGZ1bmN0aW9uICd4ZGctc3Rh dGUtaG9tZScgcmV0dXJucyAnWERHX1NUQVRFX0hPTUUnIGVudmlyb25tZW50IHZhcmlhYmxl LgpkaWZmIC0tZ2l0IGEvbGlzcC9lc2hlbGwvZXNoLW9wdC5lbCBiL2xpc3AvZXNoZWxsL2Vz aC1vcHQuZWwKaW5kZXggN2QzMTg0NTUyOC4uZmNjMzU3ODBlOSAxMDA2NDQKLS0tIGEvbGlz cC9lc2hlbGwvZXNoLW9wdC5lbAorKysgYi9saXNwL2VzaGVsbC9lc2gtb3B0LmVsCkBAIC0x ODcsNDkgKzE4Nyw4MiBAQCBlc2hlbGwtc2hvdy11c2FnZQogd2lsbCBiZSBjYWxsZWQgaW5z dGVhZC4iIGV4dGNtZCkpKSkpCiAgICAgKHRocm93ICdlc2hlbGwtdXNhZ2UgdXNhZ2UpKSkK IAotKGRlZnVuIGVzaGVsbC0tc2V0LW9wdGlvbiAobmFtZSBhaSBvcHQgb3B0aW9ucyBvcHQt dmFscykKKyhkZWZ1biBlc2hlbGwtLXNwbGl0LXN3aXRjaCAoc3dpdGNoIGtpbmQpCisgICJT cGxpdCBTV0lUQ0ggaW50byBpdHMgb3B0aW9uIG5hbWUgYW5kIHBvdGVudGlhbCB2YWx1ZSwg aWYgYW55LgorS0lORCBzaG91bGQgYmUgdGhlIGludGVnZXIgMCBpZiBTV0lUQ0ggaXMgYSBz aG9ydCBvcHRpb24sIG9yIDEgaWYgaXQncworYSBsb25nIG9wdGlvbi4iCisgIChpZiAoZXEg a2luZCAwKQorICAgICAgOzsgU2hvcnQgb3B0aW9uCisgICAgICAoY29ucyAoYXJlZiBzd2l0 Y2ggMCkKKyAgICAgICAgICAgIChhbmQgKD4gKGxlbmd0aCBzd2l0Y2gpIDEpIChzdWJzdHJp bmcgc3dpdGNoIDEpKSkKKyAgICA7OyBMb25nIG9wdGlvbgorICAgIChzYXZlLW1hdGNoLWRh dGEKKyAgICAgIChzdHJpbmctbWF0Y2ggIlxcKFtePV0qXFwpXFwoPzo9XFwoLipcXClcXCk/ IiBzd2l0Y2gpCisgICAgICAoY29ucyAobWF0Y2gtc3RyaW5nIDEgc3dpdGNoKSAobWF0Y2gt c3RyaW5nIDIgc3dpdGNoKSkpKSkKKworKGRlZnVuIGVzaGVsbC0tc2V0LW9wdGlvbiAobmFt ZSBhaSBvcHQgdmFsdWUgb3B0aW9ucyBvcHQtdmFscykKICAgIlVzaW5nIE5BTUUncyByZW1h aW5pbmcgYXJncyAoaW5kZXggQUkpLCBzZXQgdGhlIE9QVCB3aXRoaW4gT1BUSU9OUy4KLUlm IHRoZSBvcHRpb24gY29uc3VtZXMgYW4gYXJndW1lbnQgZm9yIGl0cyB2YWx1ZSwgdGhlIGFy Z3VtZW50IGxpc3QKLXdpbGwgYmUgbW9kaWZpZWQuIgorVkFMVUUgaXMgdGhlIHBvdGVudGlh bCB2YWx1ZSBvZiB0aGUgT1BULCBjb21pbmcgZnJvbSBhcmdzIGxpa2UKK1wiLWZWQUxVRVwi IG9yIFwiLS1mb289VkFMVUVcIiwgb3IgbmlsIGlmIG5vIHZhbHVlIHdhcyBzdXBwbGllZC4g IElmCitPUFQgZG9lc24ndCBjb25zdW1lIGEgdmFsdWUsIHJldHVybiBWQUxVRSB1bmNoYW5n ZWQgc28gdGhhdCBpdCBjYW4gYmUKK3Byb2Nlc3NlZCBsYXRlcjsgb3RoZXJ3c2llLCByZXR1 cm4gbmlsLgorCitJZiB0aGUgT1BUIGNvbnN1bWVzIGFuIGFyZ3VtZW50IGZvciBpdHMgdmFs dWUgYW5kIFZBTFVFIGlzIG5pbCwgdGhlCithcmd1bWVudCBsaXN0IHdpbGwgYmUgbW9kaWZp ZWQuIgogICAoaWYgKG5vdCAobnRoIDMgb3B0KSkKICAgICAgIChlc2hlbGwtc2hvdy11c2Fn ZSBuYW1lIG9wdGlvbnMpCi0gICAgKHNldGNkciAoYXNzcSAobnRoIDMgb3B0KSBvcHQtdmFs cykKLSAgICAgICAgICAgIChpZiAoZXEgKG50aCAyIG9wdCkgdCkKLSAgICAgICAgICAgICAg ICAoaWYgKD4gYWkgKGxlbmd0aCBlc2hlbGwtLWFyZ3MpKQotICAgICAgICAgICAgICAgICAg ICAoZXJyb3IgIiVzOiBtaXNzaW5nIG9wdGlvbiBhcmd1bWVudCIgbmFtZSkKLSAgICAgICAg ICAgICAgICAgIChwb3AgKG50aGNkciBhaSBlc2hlbGwtLWFyZ3MpKSkKLSAgICAgICAgICAg ICAgKG9yIChudGggMiBvcHQpIHQpKSkpKQorICAgIChpZiAoZXEgKG50aCAyIG9wdCkgdCkK KyAgICAgICAgKHByb2duCisgICAgICAgICAgKHNldGNkciAoYXNzcSAobnRoIDMgb3B0KSBv cHQtdmFscykKKyAgICAgICAgICAgICAgICAgIChvciB2YWx1ZQorICAgICAgICAgICAgICAg ICAgICAgIChpZiAoPiBhaSAobGVuZ3RoIGVzaGVsbC0tYXJncykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChlcnJvciAiJXM6IG1pc3Npbmcgb3B0aW9uIGFyZ3VtZW50IiBuYW1l KQorICAgICAgICAgICAgICAgICAgICAgICAgKHBvcCAobnRoY2RyIGFpIGVzaGVsbC0tYXJn cykpKSkpCisgICAgICAgICAgbmlsKQorICAgICAgKHNldGNkciAoYXNzcSAobnRoIDMgb3B0 KSBvcHQtdmFscykKKyAgICAgICAgICAgICAgKG9yIChudGggMiBvcHQpIHQpKQorICAgICAg dmFsdWUpKSkKIAogKGRlZnVuIGVzaGVsbC0tcHJvY2Vzcy1vcHRpb24gKG5hbWUgc3dpdGNo IGtpbmQgYWkgb3B0aW9ucyBvcHQtdmFscykKICAgIkZvciBOQU1FLCBwcm9jZXNzIFNXSVRD SCAob2YgdHlwZSBLSU5EKSwgZnJvbSBhcmdzIGF0IGluZGV4IEFJLgogVGhlIFNXSVRDSCB3 aWxsIGJlIGxvb2tlZCB1cCBpbiB0aGUgc2V0IG9mIE9QVElPTlMuCiAKLVNXSVRDSCBzaG91 bGQgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGNoYXJhY3Rlci4gIEtJTkQgc2hvdWxkIGJlIHRo ZQotaW50ZWdlciAwIGlmIGl0J3MgYSBjaGFyYWN0ZXIsIG9yIDEgaWYgaXQncyBhIHN0cmlu Zy4KLQotVGhlIFNXSVRDSCBpcyB0aGVuIGJlIG1hdGNoZWQgYWdhaW5zdCBPUFRJT05TLiAg SWYgbm8gbWF0Y2hpbmcgaGFuZGxlcgotaXMgZm91bmQsIGFuZCBhbiA6ZXh0ZXJuYWwgY29t bWFuZCBpcyBkZWZpbmVkIChhbmQgYXZhaWxhYmxlKSwgaXQgd2lsbAotYmUgY2FsbGVkOyBv dGhlcndpc2UsIGFuIGVycm9yIHdpbGwgYmUgdHJpZ2dlcmVkIHRvIHNheSB0aGF0IHRoZQot c3dpdGNoIGlzIHVucmVjb2duaXplZC4iCi0gIChsZXQqICgob3B0cyBvcHRpb25zKQotCSBm b3VuZCkKK1NXSVRDSCBzaG91bGQgYmUgYSBzdHJpbmcgc3RhcnRpbmcgd2l0aCB0aGUgb3B0 aW9uIHRvIHByb2Nlc3MsCitwb3NzaWJseSBmb2xsb3dlZCBieSBpdHMgdmFsdWUsIGUuZy4g XCJ1XCIgb3IgXCJ1VVNFUlwiLiAgS0lORCBzaG91bGQKK2JlIHRoZSBpbnRlZ2VyIDAgaWYg aXQncyBhIHNob3J0IG9wdGlvbiwgb3IgMSBpZiBpdCdzIGEgbG9uZyBvcHRpb24uCisKK1Ro ZSBTV0lUQ0ggaXMgdGhlbiBiZSBtYXRjaGVkIGFnYWluc3QgT1BUSU9OUy4gIElmIEtJTkQg aXMgMCBhbmQgdGhlCitTV0lUQ0ggbWF0Y2hlcyBhbiBvcHRpb24gdGhhdCBkb2Vzbid0IHRh a2UgYSB2YWx1ZSwgcmV0dXJuIHRoZQorcmVtYWluaW5nIGNoYXJhY3RlcnMgaW4gU1dJVENI IHRvIGJlIHByb2Nlc3NlZCBsYXRlciBhcyBmdXJ0aGVyIHNob3J0CitvcHRpb25zLgorCitJ ZiBubyBtYXRjaGluZyBoYW5kbGVyIGlzIGZvdW5kLCBhbmQgYW4gOmV4dGVybmFsIGNvbW1h bmQgaXMgZGVmaW5lZAorKGFuZCBhdmFpbGFibGUpLCBpdCB3aWxsIGJlIGNhbGxlZDsgb3Ro ZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJlCit0cmlnZ2VyZWQgdG8gc2F5IHRoYXQgdGhlIHN3 aXRjaCBpcyB1bnJlY29nbml6ZWQuIgorICAobGV0ICgoc3dpdGNoIChlc2hlbGwtLXNwbGl0 LXN3aXRjaCBzd2l0Y2gga2luZCkpCisgICAgICAgIChvcHRzIG9wdGlvbnMpCisJZm91bmQg cmVtYWluaW5nKQogICAgICh3aGlsZSBvcHRzCiAgICAgICAoaWYgKGFuZCAobGlzdHAgKGNh ciBvcHRzKSkKLSAgICAgICAgICAgICAgIChudGgga2luZCAoY2FyIG9wdHMpKQotICAgICAg ICAgICAgICAgKGVxdWFsIHN3aXRjaCAobnRoIGtpbmQgKGNhciBvcHRzKSkpKQorICAgICAg ICAgICAgICAgKGVxdWFsIChjYXIgc3dpdGNoKSAobnRoIGtpbmQgKGNhciBvcHRzKSkpKQog CSAgKHByb2duCi0JICAgIChlc2hlbGwtLXNldC1vcHRpb24gbmFtZSBhaSAoY2FyIG9wdHMp IG9wdGlvbnMgb3B0LXZhbHMpCisJICAgIChzZXRxIHJlbWFpbmluZyAoZXNoZWxsLS1zZXQt b3B0aW9uIG5hbWUgYWkgKGNhciBvcHRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNkciBzd2l0Y2gpIG9wdGlvbnMgb3B0LXZhbHMpKQor ICAgICAgICAgICAgKHdoZW4gKGFuZCByZW1haW5pbmcgKGVxIGtpbmQgMSkpCisgICAgICAg ICAgICAgIChlcnJvciAiJXM6IG9wdGlvbiAtLSVzIGRvZXNuJ3QgYWxsb3cgYW4gYXJndW1l bnQiCisgICAgICAgICAgICAgICAgICAgICBuYW1lIChjYXIgc3dpdGNoKSkpCiAJICAgIChz ZXRxIGZvdW5kIHQgb3B0cyBuaWwpKQogCShzZXRxIG9wdHMgKGNkciBvcHRzKSkpKQotICAg ICh1bmxlc3MgZm91bmQKKyAgICAoaWYgZm91bmQKKyAgICAgICAgcmVtYWluaW5nCiAgICAg ICAobGV0ICgoZXh0Y21kIChtZW1xICc6ZXh0ZXJuYWwgb3B0aW9ucykpKQogCSh3aGVuIGV4 dGNtZAogCSAgKHNldHEgZXh0Y21kIChlc2hlbGwtc2VhcmNoLXBhdGggKGNhZHIgZXh0Y21k KSkpCiAJICAoaWYgZXh0Y21kCiAJICAgICAgKHRocm93ICdlc2hlbGwtZXh0LWNvbW1hbmQg ZXh0Y21kKQotICAgICAgICAgICAgKGVycm9yIChpZiAoY2hhcmFjdGVycCBzd2l0Y2gpICIl czogdW5yZWNvZ25pemVkIG9wdGlvbiAtJWMiCisgICAgICAgICAgICAoZXJyb3IgKGlmIChj aGFyYWN0ZXJwIChjYXIgc3dpdGNoKSkgIiVzOiB1bnJlY29nbml6ZWQgb3B0aW9uIC0lYyIK ICAgICAgICAgICAgICAgICAgICAgICIlczogdW5yZWNvZ25pemVkIG9wdGlvbiAtLSVzIikK LSAgICAgICAgICAgICAgICAgICBuYW1lIHN3aXRjaCkpKSkpKSkKKyAgICAgICAgICAgICAg ICAgICBuYW1lIChjYXIgc3dpdGNoKSkpKSkpKSkKIAogKGRlZnVuIGVzaGVsbC0tcHJvY2Vz cy1hcmdzIChuYW1lIGFyZ3Mgb3B0aW9ucykKICAgIlByb2Nlc3MgdGhlIGdpdmVuIEFSR1Mg dXNpbmcgT1BUSU9OUy4iCkBAIC0yNjIsMTIgKzI5NSw5IEBAIGVzaGVsbC0tcHJvY2Vzcy1h cmdzCiAJICAgICAgKGlmICg+IChsZW5ndGggc3dpdGNoKSAwKQogCQkgIChlc2hlbGwtLXBy b2Nlc3Mtb3B0aW9uIG5hbWUgc3dpdGNoIDEgYWkgb3B0aW9ucyBvcHQtdmFscykKIAkJKHNl dHEgYWkgKGxlbmd0aCBlc2hlbGwtLWFyZ3MpKSkKLQkgICAgKGxldCAoKGxlbiAobGVuZ3Ro IHN3aXRjaCkpCi0JCSAgKGluZGV4IDApKQotCSAgICAgICh3aGlsZSAoPCBpbmRleCBsZW4p Ci0JCShlc2hlbGwtLXByb2Nlc3Mtb3B0aW9uIG5hbWUgKGFyZWYgc3dpdGNoIGluZGV4KQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgYWkgb3B0aW9ucyBv cHQtdmFscykKLQkJKHNldHEgaW5kZXggKDErIGluZGV4KSkpKSkpKSkKKwkgICAgICAod2hp bGUgKD4gKGxlbmd0aCBzd2l0Y2gpIDApCisJCShzZXRxIHN3aXRjaCAoZXNoZWxsLS1wcm9j ZXNzLW9wdGlvbiBuYW1lIHN3aXRjaCAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFpIG9wdGlvbnMgb3B0LXZhbHMpKSkpKSkpCiAg ICAgKG5jb25jIChtYXBjYXIgIydjZHIgb3B0LXZhbHMpIGVzaGVsbC0tYXJncykpKQogCiAo cHJvdmlkZSAnZXNoLW9wdCkKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9lc2hlbGwvZXNoLW9w dC10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lc2hlbGwvZXNoLW9wdC10ZXN0cy5lbAppbmRleCBl MmEwZWE1OWQxLi5jMTNmNWUxNWIzIDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvZXNoZWxsL2Vz aC1vcHQtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL2VzaGVsbC9lc2gtb3B0LXRlc3RzLmVs CkBAIC01Nyw3ICs1Nyw3IEBAIGVzaC1vcHQtcHJvY2Vzcy1hcmdzLXRlc3QKICAgICAgICAg ICAgJygoP3UgInVzZXIiIHQgdXNlciAiZXhlY3V0ZSBhIGNvbW1hbmQgYXMgYW5vdGhlciBV U0VSIikKICAgICAgICAgICAgICA6cGFyc2UtbGVhZGluZy1vcHRpb25zLW9ubHkpKSkpCiAg IChzaG91bGQKLSAgIChlcXVhbCAnKCJ3b3JsZCIgImVtZXJnZSIpCisgICAoZXF1YWwgJygi RE4iICJlbWVyZ2UiICJ3b3JsZCIpCiAgICAgICAgICAgKGVzaGVsbC0tcHJvY2Vzcy1hcmdz CiAgICAgICAgICAgICJzdWRvIgogICAgICAgICAgICAnKCItdSIgInJvb3QiICJlbWVyZ2Ui ICItdUROIiAid29ybGQiKQpAQCAtNjUsNTkgKzY1LDEzMiBAQCBlc2gtb3B0LXByb2Nlc3Mt YXJncy10ZXN0CiAKIChlcnQtZGVmdGVzdCB0ZXN0LWVzaGVsbC1ldmFsLXVzaW5nLW9wdGlv bnMgKCkKICAgIlRlc3RzIGZvciBgZXNoZWxsLWV2YWwtdXNpbmctb3B0aW9ucycuIgorICA7 OyBUZXN0IHNob3J0IG9wdGlvbnMuCiAgIChlc2hlbGwtZXZhbC11c2luZy1vcHRpb25zCi0g ICAic3VkbyIgJygiLXUiICJyb290IiAid2hvYW1pIikKLSAgICcoKD91ICJ1c2VyIiB0IHVz ZXIgImV4ZWN1dGUgYSBjb21tYW5kIGFzIGFub3RoZXIgVVNFUiIpCi0gICAgIDpwYXJzZS1s ZWFkaW5nLW9wdGlvbnMtb25seSkKLSAgIChzaG91bGQgKGVxdWFsIHVzZXIgInJvb3QiKSkp CisgICAibHMiICcoIi1hIiAiL3NvbWUvcGF0aCIpCisgICAnKCg/YSAiYWxsIiBuaWwgc2hv dy1hbGwKKyAgICAgICAgICJkbyBub3QgaWdub3JlIGVudHJpZXMgc3RhcnRpbmcgd2l0aCAu IikpCisgICAoc2hvdWxkIChlcSBzaG93LWFsbCB0KSkKKyAgIChzaG91bGQgKGVxdWFsIGFy Z3MgJygiL3NvbWUvcGF0aCIpKSkpCiAgIChlc2hlbGwtZXZhbC11c2luZy1vcHRpb25zCi0g ICAic3VkbyIgJygiLS11c2VyIiAicm9vdCIgIndob2FtaSIpCi0gICAnKCg/dSAidXNlciIg dCB1c2VyICJleGVjdXRlIGEgY29tbWFuZCBhcyBhbm90aGVyIFVTRVIiKQotICAgICA6cGFy c2UtbGVhZGluZy1vcHRpb25zLW9ubHkpCi0gICAoc2hvdWxkIChlcXVhbCB1c2VyICJyb290 IikpKQorICAgImxzIiAnKCIvc29tZS9wYXRoIikKKyAgICcoKD9hICJhbGwiIG5pbCBzaG93 LWFsbAorICAgICAgICAgImRvIG5vdCBpZ25vcmUgZW50cmllcyBzdGFydGluZyB3aXRoIC4i KSkKKyAgIChzaG91bGQgKGVxIHNob3ctYWxsIG5pbCkpCisgICAoc2hvdWxkIChlcXVhbCBh cmdzICcoIi9zb21lL3BhdGgiKSkpKQogCisgIDs7IFRlc3QgbG9uZyBvcHRpb25zLgogICAo ZXNoZWxsLWV2YWwtdXNpbmctb3B0aW9ucwotICAgInN1ZG8iICcoImVtZXJnZSIgIi11RE4i ICJ3b3JsZCIpCi0gICAnKCg/dSAidXNlciIgdCB1c2VyICJleGVjdXRlIGEgY29tbWFuZCBh cyBhbm90aGVyIFVTRVIiKSkKLSAgIChzaG91bGQgKGVxdWFsIHVzZXIgIndvcmxkIikpKQor ICAgImxzIiAnKCItLWFsbCIgIi9zb21lL3BhdGgiKQorICAgJygoP2EgImFsbCIgbmlsIHNo b3ctYWxsCisgICAgICAgICAiZG8gbm90IGlnbm9yZSBlbnRyaWVzIHN0YXJ0aW5nIHdpdGgg LiIpKQorICAgKHNob3VsZCAoZXEgc2hvdy1hbGwgdCkpCisgICAoc2hvdWxkIChlcXVhbCBh cmdzICcoIi9zb21lL3BhdGgiKSkpKQorCisgIDs7IFRlc3Qgb3B0aW9ucyB3aXRoIGNvbnN0 YW50IHZhbHVlcy4KICAgKGVzaGVsbC1ldmFsLXVzaW5nLW9wdGlvbnMKLSAgICJzdWRvIiAn KCJlbWVyZ2UiICItdUROIiAid29ybGQiKQotICAgJygoP3UgInVzZXIiIHQgdXNlciAiZXhl Y3V0ZSBhIGNvbW1hbmQgYXMgYW5vdGhlciBVU0VSIikKLSAgICAgOnBhcnNlLWxlYWRpbmct b3B0aW9ucy1vbmx5KQotICAgKHNob3VsZCAoZXEgdXNlciBuaWwpKSkKKyAgICJscyIgJygi L3NvbWUvcGF0aCIgIi1oIikKKyAgICcoKD9oICJodW1hbi1yZWFkYWJsZSIgMTAyNCBodW1h bi1yZWFkYWJsZQorICAgICAgICAgInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZv cm1hdCIpKQorICAgKHNob3VsZCAoZXFsIGh1bWFuLXJlYWRhYmxlIDEwMjQpKQorICAgKHNo b3VsZCAoZXF1YWwgYXJncyAnKCIvc29tZS9wYXRoIikpKSkKKyAgKGVzaGVsbC1ldmFsLXVz aW5nLW9wdGlvbnMKKyAgICJscyIgJygiL3NvbWUvcGF0aCIgIi0taHVtYW4tcmVhZGFibGUi KQorICAgJygoP2ggImh1bWFuLXJlYWRhYmxlIiAxMDI0IGh1bWFuLXJlYWRhYmxlCisgICAg ICAgICAicHJpbnQgc2l6ZXMgaW4gaHVtYW4gcmVhZGFibGUgZm9ybWF0IikpCisgICAoc2hv dWxkIChlcWwgaHVtYW4tcmVhZGFibGUgMTAyNCkpCisgICAoc2hvdWxkIChlcXVhbCBhcmdz ICcoIi9zb21lL3BhdGgiKSkpKQorICAoZXNoZWxsLWV2YWwtdXNpbmctb3B0aW9ucworICAg ImxzIiAnKCIvc29tZS9wYXRoIikKKyAgICcoKD9oICJodW1hbi1yZWFkYWJsZSIgMTAyNCBo dW1hbi1yZWFkYWJsZQorICAgICAgICAgInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxl IGZvcm1hdCIpKQorICAgKHNob3VsZCAoZXEgaHVtYW4tcmVhZGFibGUgbmlsKSkKKyAgIChz aG91bGQgKGVxdWFsIGFyZ3MgJygiL3NvbWUvcGF0aCIpKSkpCiAKKyAgOzsgVGVzdCBvcHRp b25zIHdpdGggdXNlci1zcGVjaWZpZWQgdmFsdWVzLgorICAoZXNoZWxsLWV2YWwtdXNpbmct b3B0aW9ucworICAgImxzIiAnKCItSSIgIioudHh0IiAiL3NvbWUvcGF0aCIpCisgICAnKCg/ SSAiaWdub3JlIiB0IGlnbm9yZS1wYXR0ZXJuCisgICAgICAgICAiZG8gbm90IGxpc3QgaW1w bGllZCBlbnRyaWVzIG1hdGNoaW5nIHBhdHRlcm4iKSkKKyAgIChzaG91bGQgKGVxdWFsIGln bm9yZS1wYXR0ZXJuICIqLnR4dCIpKQorICAgKHNob3VsZCAoZXF1YWwgYXJncyAnKCIvc29t ZS9wYXRoIikpKSkKKyAgKGVzaGVsbC1ldmFsLXVzaW5nLW9wdGlvbnMKKyAgICJscyIgJygi LUkqLnR4dCIgIi9zb21lL3BhdGgiKQorICAgJygoP0kgImlnbm9yZSIgdCBpZ25vcmUtcGF0 dGVybgorICAgICAgICAgImRvIG5vdCBsaXN0IGltcGxpZWQgZW50cmllcyBtYXRjaGluZyBw YXR0ZXJuIikpCisgICAoc2hvdWxkIChlcXVhbCBpZ25vcmUtcGF0dGVybiAiKi50eHQiKSkK KyAgIChzaG91bGQgKGVxdWFsIGFyZ3MgJygiL3NvbWUvcGF0aCIpKSkpCiAgIChlc2hlbGwt ZXZhbC11c2luZy1vcHRpb25zCi0gICAibHMiICcoIi1JIiAiKi50eHQiICIvZGV2L251bGwi KQorICAgImxzIiAnKCItLWlnbm9yZSIgIioudHh0IiAiL3NvbWUvcGF0aCIpCiAgICAnKCg/ SSAiaWdub3JlIiB0IGlnbm9yZS1wYXR0ZXJuCi0JICJkbyBub3QgbGlzdCBpbXBsaWVkIGVu dHJpZXMgbWF0Y2hpbmcgcGF0dGVybiIpKQotICAgKHNob3VsZCAoZXF1YWwgaWdub3JlLXBh dHRlcm4gIioudHh0IikpKQorICAgICAgICAgImRvIG5vdCBsaXN0IGltcGxpZWQgZW50cmll cyBtYXRjaGluZyBwYXR0ZXJuIikpCisgICAoc2hvdWxkIChlcXVhbCBpZ25vcmUtcGF0dGVy biAiKi50eHQiKSkKKyAgIChzaG91bGQgKGVxdWFsIGFyZ3MgJygiL3NvbWUvcGF0aCIpKSkp CisgIChlc2hlbGwtZXZhbC11c2luZy1vcHRpb25zCisgICAibHMiICcoIi0taWdub3JlPSou dHh0IiAiL3NvbWUvcGF0aCIpCisgICAnKCg/SSAiaWdub3JlIiB0IGlnbm9yZS1wYXR0ZXJu CisgICAgICAgICAiZG8gbm90IGxpc3QgaW1wbGllZCBlbnRyaWVzIG1hdGNoaW5nIHBhdHRl cm4iKSkKKyAgIChzaG91bGQgKGVxdWFsIGlnbm9yZS1wYXR0ZXJuICIqLnR4dCIpKQorICAg KHNob3VsZCAoZXF1YWwgYXJncyAnKCIvc29tZS9wYXRoIikpKSkKIAorICA7OyBUZXN0IG11 bHRpcGxlIHNob3J0IG9wdGlvbnMgaW4gYSBzaW5nbGUgdG9rZW4uCiAgIChlc2hlbGwtZXZh bC11c2luZy1vcHRpb25zCi0gICAibHMiICcoIi1sIiAiL2Rldi9udWxsIikKLSAgICcoKD9s IG5pbCBsb25nLWxpc3RpbmcgbGlzdGluZy1zdHlsZQotCSAidXNlIGEgbG9uZyBsaXN0aW5n IGZvcm1hdCIpKQotICAgKHNob3VsZCAoZXFsIGxpc3Rpbmctc3R5bGUgJ2xvbmctbGlzdGlu ZykpKQorICAgImxzIiAnKCItYWwiICIvc29tZS9wYXRoIikKKyAgICcoKD9hICJhbGwiIG5p bCBzaG93LWFsbAorICAgICAgICAgImRvIG5vdCBpZ25vcmUgZW50cmllcyBzdGFydGluZyB3 aXRoIC4iKQorICAgICAoP2wgbmlsIGxvbmctbGlzdGluZyBsaXN0aW5nLXN0eWxlCisgICAg ICAgICAidXNlIGEgbG9uZyBsaXN0aW5nIGZvcm1hdCIpKQorICAgKHNob3VsZCAoZXEgdCBz aG93LWFsbCkpCisgICAoc2hvdWxkIChlcWwgbGlzdGluZy1zdHlsZSAnbG9uZy1saXN0aW5n KSkKKyAgIChzaG91bGQgKGVxdWFsIGFyZ3MgJygiL3NvbWUvcGF0aCIpKSkpCiAgIChlc2hl bGwtZXZhbC11c2luZy1vcHRpb25zCi0gICAibHMiICcoIi9kZXYvbnVsbCIpCi0gICAnKCg/ bCBuaWwgbG9uZy1saXN0aW5nIGxpc3Rpbmctc3R5bGUKLQkgInVzZSBhIGxvbmcgbGlzdGlu ZyBmb3JtYXQiKSkKLSAgIChzaG91bGQgKGVxIGxpc3Rpbmctc3R5bGUgbmlsKSkpCisgICAi bHMiICcoIi1hSSoudHh0IiAiL3NvbWUvcGF0aCIpCisgICAnKCg/YSAiYWxsIiBuaWwgc2hv dy1hbGwKKyAgICAgICAgICJkbyBub3QgaWdub3JlIGVudHJpZXMgc3RhcnRpbmcgd2l0aCAu IikKKyAgICAgKD9JICJpZ25vcmUiIHQgaWdub3JlLXBhdHRlcm4KKyAgICAgICAgICJkbyBu b3QgbGlzdCBpbXBsaWVkIGVudHJpZXMgbWF0Y2hpbmcgcGF0dGVybiIpKQorICAgKHNob3Vs ZCAoZXEgdCBzaG93LWFsbCkpCisgICAoc2hvdWxkIChlcXVhbCBpZ25vcmUtcGF0dGVybiAi Ki50eHQiKSkKKyAgIChzaG91bGQgKGVxdWFsIGFyZ3MgJygiL3NvbWUvcGF0aCIpKSkpCiAK KyAgOzsgVGVzdCB0aGF0ICItLSIgdGVybWluYXRlcyBvcHRpb25zLgogICAoZXNoZWxsLWV2 YWwtdXNpbmctb3B0aW9ucwotICAgImxzIiAnKCIvZGV2L251bGwiICItaCIpCi0gICAnKCg/ aCAiaHVtYW4tcmVhZGFibGUiIDEwMjQgaHVtYW4tcmVhZGFibGUKLQkgInByaW50IHNpemVz IGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCIpKQotICAgKHNob3VsZCAoZXFsIGh1bWFuLXJl YWRhYmxlIDEwMjQpKSkKKyAgICJscyIgJygiLS0iICItYSIpCisgICAnKCg/YSAiYWxsIiBu aWwgc2hvdy1hbGwKKyAgICAgICAgICJkbyBub3QgaWdub3JlIGVudHJpZXMgc3RhcnRpbmcg d2l0aCAuIikpCisgICAoc2hvdWxkIChlcSBzaG93LWFsbCBuaWwpKQorICAgKHNob3VsZCAo ZXF1YWwgYXJncyAnKCItYSIpKSkpCiAgIChlc2hlbGwtZXZhbC11c2luZy1vcHRpb25zCi0g ICAibHMiICcoIi9kZXYvbnVsbCIgIi0taHVtYW4tcmVhZGFibGUiKQotICAgJygoP2ggImh1 bWFuLXJlYWRhYmxlIiAxMDI0IGh1bWFuLXJlYWRhYmxlCi0JICJwcmludCBzaXplcyBpbiBo dW1hbiByZWFkYWJsZSBmb3JtYXQiKSkKLSAgIChzaG91bGQgKGVxbCBodW1hbi1yZWFkYWJs ZSAxMDI0KSkpCisgICAibHMiICcoIi0tIiAiLS1hbGwiKQorICAgJygoP2EgImFsbCIgbmls IHNob3ctYWxsCisgICAgICAgICAiZG8gbm90IGlnbm9yZSBlbnRyaWVzIHN0YXJ0aW5nIHdp dGggLiIpKQorICAgKHNob3VsZCAoZXEgc2hvdy1hbGwgbmlsKSkKKyAgIChzaG91bGQgKGVx dWFsIGFyZ3MgJygiLS1hbGwiKSkpKQorCisgIDs7IFRlc3QgOnBhcnNlLWxlYWRpbmctb3B0 aW9ucy1vbmx5LgogICAoZXNoZWxsLWV2YWwtdXNpbmctb3B0aW9ucwotICAgImxzIiAnKCIv ZGV2L251bGwiKQotICAgJygoP2ggImh1bWFuLXJlYWRhYmxlIiAxMDI0IGh1bWFuLXJlYWRh YmxlCi0JICJwcmludCBzaXplcyBpbiBodW1hbiByZWFkYWJsZSBmb3JtYXQiKSkKLSAgIChz aG91bGQgKGVxIGh1bWFuLXJlYWRhYmxlIG5pbCkpKSkKKyAgICJzdWRvIiAnKCItdSIgInJv b3QiICJ3aG9hbWkiKQorICAgJygoP3UgInVzZXIiIHQgdXNlciAiZXhlY3V0ZSBhIGNvbW1h bmQgYXMgYW5vdGhlciBVU0VSIikKKyAgICAgOnBhcnNlLWxlYWRpbmctb3B0aW9ucy1vbmx5 KQorICAgKHNob3VsZCAoZXF1YWwgdXNlciAicm9vdCIpKQorICAgKHNob3VsZCAoZXF1YWwg YXJncyAnKCJ3aG9hbWkiKSkpKQorICAoZXNoZWxsLWV2YWwtdXNpbmctb3B0aW9ucworICAg InN1ZG8iICcoIi0tdXNlciIgInJvb3QiICJ3aG9hbWkiKQorICAgJygoP3UgInVzZXIiIHQg dXNlciAiZXhlY3V0ZSBhIGNvbW1hbmQgYXMgYW5vdGhlciBVU0VSIikKKyAgICAgOnBhcnNl LWxlYWRpbmctb3B0aW9ucy1vbmx5KQorICAgKHNob3VsZCAoZXF1YWwgdXNlciAicm9vdCIp KQorICAgKHNob3VsZCAoZXF1YWwgYXJncyAnKCJ3aG9hbWkiKSkpKQorICAoZXNoZWxsLWV2 YWwtdXNpbmctb3B0aW9ucworICAgInN1ZG8iICcoImVtZXJnZSIgIi11RE4iICJ3b3JsZCIp CisgICAnKCg/dSAidXNlciIgdCB1c2VyICJleGVjdXRlIGEgY29tbWFuZCBhcyBhbm90aGVy IFVTRVIiKSkKKyAgIChzaG91bGQgKGVxdWFsIHVzZXIgIkROIikpCisgICAoc2hvdWxkIChl cXVhbCBhcmdzICcoImVtZXJnZSIgIndvcmxkIikpKSkKKyAgKGVzaGVsbC1ldmFsLXVzaW5n LW9wdGlvbnMKKyAgICJzdWRvIiAnKCJlbWVyZ2UiICItdUROIiAid29ybGQiKQorICAgJygo P3UgInVzZXIiIHQgdXNlciAiZXhlY3V0ZSBhIGNvbW1hbmQgYXMgYW5vdGhlciBVU0VSIikK KyAgICAgOnBhcnNlLWxlYWRpbmctb3B0aW9ucy1vbmx5KQorICAgKHNob3VsZCAoZXEgdXNl ciBuaWwpKQorICAgKHNob3VsZCAoZXF1YWwgYXJncyAnKCJlbWVyZ2UiICItdUROIiAid29y bGQiKSkpKSkKIAogKHByb3ZpZGUgJ2VzaC1vcHQtdGVzdHMpCiAKLS0gCjIuMjUuMQoK --------------147F9B53D68DE23324D7581A--