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#65374: 30.0.50 [PATCH]; Allow extending Eshell output targets Date: Fri, 18 Aug 2023 17:48:55 -0700 Message-ID: <0e112183-47fc-d94b-761b-3ddd2c2238fc@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------tO0QUvWQHEJ92P9RiMRSrewB" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="4382"; mail-complaints-to="usenet@ciao.gmane.io" To: 65374@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Aug 19 02:50:23 2023 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 1qXAAZ-0000yO-BH for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 19 Aug 2023 02:50:23 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qXAAF-000727-Sa; Fri, 18 Aug 2023 20:50:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXAAE-00071w-AF for bug-gnu-emacs@gnu.org; Fri, 18 Aug 2023 20:50:02 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qXAAE-0004Al-2O for bug-gnu-emacs@gnu.org; Fri, 18 Aug 2023 20:50:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qXAAE-0005DP-Et for bug-gnu-emacs@gnu.org; Fri, 18 Aug 2023 20:50:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 19 Aug 2023 00:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 65374 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.169240615119978 (code B ref -1); Sat, 19 Aug 2023 00:50:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 19 Aug 2023 00:49:11 +0000 Original-Received: from localhost ([127.0.0.1]:49048 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qXA9O-0005C9-9u for submit@debbugs.gnu.org; Fri, 18 Aug 2023 20:49:11 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:41752) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qXA9L-0005Bw-Od for submit@debbugs.gnu.org; Fri, 18 Aug 2023 20:49:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXA9F-0006yZ-Hv for bug-gnu-emacs@gnu.org; Fri, 18 Aug 2023 20:49:01 -0400 Original-Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qXA9C-00043K-9R for bug-gnu-emacs@gnu.org; Fri, 18 Aug 2023 20:49:01 -0400 Original-Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-1bdbbede5d4so12247935ad.2 for ; Fri, 18 Aug 2023 17:48:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692406136; x=1693010936; h=subject:from:to:content-language:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=pzyvBMaE4lz0z2/XGwlHg1ZoPZQRpSK1N505rv13jtc=; b=hB7lT1hwyo/FgRn7aZ1MdzP1aK4J8xh3WJVpeoVbyRSaemwaP54Jd7Ih/ul0IHJUNc E1kZVBaWkswu90w+Q8Rt9NyZfUh559xAovkgA8aah4wt/gQ5X39cG++YRw3BpbCsIQCs O8OJu/OAaAA0/jliF31AjKFLDuy59lbupZKx6dgzlOTsHw2ycLQUe46a3m+wWR5tLbVg 9+4WsCwnU8Ke2nxIEX//vOcsEtAvt9M64HMSrKG0Wbyq2AmqnakE3v06P8WZBMpn6yOB MAOEMIlUwI8+6OjUkBhGP0FaO/GIUFX9/vnHcBZSs09t5xL3FV18gOQ9teaNGa2HmXwY 8V+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692406136; x=1693010936; h=subject:from:to:content-language:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pzyvBMaE4lz0z2/XGwlHg1ZoPZQRpSK1N505rv13jtc=; b=NnX0QSGKk2kKwBCoUNKuStgdVt7foKXbV+NF+4PplrInn119JLqmaCBSJZFLEYedEy HoEnndxtmAlo3rMYZkPNhXD6M+rDZnTgBao4s05doYJccedyKqo/kL93DchTFo1dOsLE qdo4Sxi4Z2AAm6WdAuhWCS7yzyWgyacH1Dk2FmUZCFfGFIYBHnfqaNOLz5d/y59FMU+l 1TAAz7V15bbtawoWgvbxA+sZUtCDfDoER20a6+V6G8vnSBLrdBNy9/UvplC+Pr+0rI6T XSR2j9LfXX+YpCck0ldDbFCg20BBB5hE/bIVOpKs7IMwAHBBBxpPUrTIeBxxgDiPo3WC QFJQ== X-Gm-Message-State: AOJu0YzDM9UCpqaKceX2eIjfTAR9lpzfMDUJdDyhq74NBfhFNpdIpRin 2d5Ob9IlPP9/VbQBqKA5+3rIlPSkEzk= X-Google-Smtp-Source: AGHT+IEJ3nIwIK3Y4InytyVTGbXTRgSS+9x/i9kQQtmz7kDSQDggAOPNVevmKesUmpoFq9s3EZeGag== X-Received: by 2002:a17:902:9a05:b0:1bf:4582:90d with SMTP id v5-20020a1709029a0500b001bf4582090dmr701906plp.46.1692406136366; Fri, 18 Aug 2023 17:48:56 -0700 (PDT) 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 n2-20020a170902d2c200b001993a1fce7bsm2362437plc.196.2023.08.18.17.48.55 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 18 Aug 2023 17:48:55 -0700 (PDT) X-Mozilla-News-Host: news://news.gmane.io:119 Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=jporterbugs@gmail.com; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:267800 Archived-At: This is a multi-part message in MIME format. --------------tO0QUvWQHEJ92P9RiMRSrewB Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The attached patches split up the Eshell I/O target code so that each target type is its own method. Aside from fixing a couple tiny bugs, this should be exactly the same as before, but will make it easier to add new target types in the future (and for third-parties to be able to do this!). This won't have any major impact just yet, but it's a very helpful precursor to a larger project I'm working on to pipe output in Eshell into Lisp functions (currently, Lisp functions - including Eshell builtins - can only be the first command in a pipeline). --------------tO0QUvWQHEJ92P9RiMRSrewB Content-Type: text/plain; charset=UTF-8; name="0001-Remove-unused-Eshell-target-type.patch" Content-Disposition: attachment; filename="0001-Remove-unused-Eshell-target-type.patch" Content-Transfer-Encoding: base64 RnJvbSBjMmVmM2MyYTIzMWI1NWZkMzQyN2YzN2M4ZjkyMmJhZTNmNzgwMzcyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFNhdCwgMTEgTWFyIDIwMjMgMTU6Mzc6MzggLTA4MDAKU3ViamVjdDogW1BB VENIIDEvM10gOyBSZW1vdmUgdW51c2VkIEVzaGVsbCB0YXJnZXQgdHlwZQoKRXNoZWxsIGNy ZWF0ZXMgYWxsIG91dHB1dCB0YXJnZXRzIGluICdlc2hlbGwtZ2V0LXRhcmdldCcsIGFuZCB0 aGF0CmZ1bmN0aW9uIG5ldmVyIHJldHVybnMgYSBjb25zIGNlbGwuCgoqIGxpc3AvZXNoZWxs L2VzaC1pby5lbCAoZXNoZWxsLWNsb3NlLXRhcmdldCkKKGVzaGVsbC1vdXRwdXQtb2JqZWN0 LXRvLXRhcmdldCk6IFJlbW92ZSAnY29uc3AnIGNvbmRpdGlvbi4KLS0tCiBsaXNwL2VzaGVs bC9lc2gtaW8uZWwgfCAxMyArKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL2VzaGVsbC9l c2gtaW8uZWwgYi9saXNwL2VzaGVsbC9lc2gtaW8uZWwKaW5kZXggY2NjZGI0OWNlMmEuLjFl YzRmOTE4MjgyIDEwMDY0NAotLS0gYS9saXNwL2VzaGVsbC9lc2gtaW8uZWwKKysrIGIvbGlz cC9lc2hlbGwvZXNoLWlvLmVsCkBAIC00NjYsMTMgKzQ2Niw3IEBAIGVzaGVsbC1jbG9zZS10 YXJnZXQKICAgIDs7IEEgcGxhaW4gZnVuY3Rpb24gcmVkaXJlY3Rpb24gbmVlZHMgbm8gYWRk aXRpb25hbCBhcmd1bWVudHMKICAgIDs7IHBhc3NlZC4KICAgICgoZnVuY3Rpb25wIHRhcmdl dCkKLSAgICAoZnVuY2FsbCB0YXJnZXQgc3RhdHVzKSkKLQotICAgOzsgQnV0IGEgbW9yZSBj b21wbGljYXRlZCBmdW5jdGlvbiByZWRpcmVjdGlvbiAod2hpY2ggY2FuIG9ubHkKLSAgIDs7 IGhhcHBlbiB3aXRoIGFsaWFzZXMgYXQgdGhlIG1vbWVudCkgaGFzIGFyZ3VtZW50cyB0aGF0 IG5lZWQgdG8gYmUKLSAgIDs7IHBhc3NlZCBhbG9uZyB3aXRoIGl0LgotICAgKChjb25zcCB0 YXJnZXQpCi0gICAgKGFwcGx5IChjYXIgdGFyZ2V0KSBzdGF0dXMgKGNkciB0YXJnZXQpKSkp KQorICAgIChmdW5jYWxsIHRhcmdldCBzdGF0dXMpKSkpCiAKIChkZWZ1biBlc2hlbGwta2ls bC1hcHBlbmQgKHN0cmluZykKICAgIkNhbGwgYGtpbGwtYXBwZW5kJyB3aXRoIFNUUklORywg aWYgaXQgaXMgaW5kZWVkIGEgc3RyaW5nLiIKQEAgLTY0MiwxMCArNjM2LDcgQEAgZXNoZWxs LW91dHB1dC1vYmplY3QtdG8tdGFyZ2V0CiAgICAgICAgKGlmIChtZW1xIChwcm9jZXNzLXN0 YXR1cyB0YXJnZXQpCiAJCSAnKHJ1biBzdG9wIG9wZW4gY2xvc2VkKSkKICAgICAgICAgICAg KHNpZ25hbCAoY2FyIGVycikgKGNkciBlcnIpKQotICAgICAgICAgKHNpZ25hbCAnZXNoZWxs LXBpcGUtYnJva2VuIChsaXN0IHRhcmdldCkpKSkpKQotCi0gICAoKGNvbnNwIHRhcmdldCkK LSAgICAoYXBwbHkgKGNhciB0YXJnZXQpIG9iamVjdCAoY2RyIHRhcmdldCkpKSkKKyAgICAg ICAgIChzaWduYWwgJ2VzaGVsbC1waXBlLWJyb2tlbiAobGlzdCB0YXJnZXQpKSkpKSkpCiAg IG9iamVjdCkKIAogKGRlZnVuIGVzaGVsbC1vdXRwdXQtb2JqZWN0IChvYmplY3QgJm9wdGlv bmFsIGhhbmRsZS1pbmRleCBoYW5kbGVzKQotLSAKMi4yNS4xCgo= --------------tO0QUvWQHEJ92P9RiMRSrewB Content-Type: text/plain; charset=UTF-8; name="0002-Use-generics-to-define-Eshell-output-targets.patch" Content-Disposition: attachment; filename="0002-Use-generics-to-define-Eshell-output-targets.patch" Content-Transfer-Encoding: base64 RnJvbSA5YjYxODY5NzNjMGZkODMxN2E4MGI0ZjFlNzc2ZWZkYWMyZTNiYWM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFNhdCwgMTEgTWFyIDIwMjMgMTg6NDQ6NDMgLTA4MDAKU3ViamVjdDogW1BB VENIIDIvM10gVXNlIGdlbmVyaWNzIHRvIGRlZmluZSBFc2hlbGwgb3V0cHV0IHRhcmdldHMK ClRoaXMgaXMgbW9yZSBmbGV4aWJsZSB0aGFuIGJlZm9yZSwgc2luY2UgdGhpcmQtcGFydHkg Y29kZSBjYW4gYWRkIG5ldwpvdXRwdXQgdGFyZ2V0IHR5cGVzIHdpdGhvdXQgYWR2aXNpbmcg dGhlc2UgZnVuY3Rpb25zLiAgSXQgYWxzbwpyZXNvbHZlcyBhbiBpc3N1ZSB3aGVyZSByZWRp cmVjdGluZyB0byBhIHN5bWJvbCB0aGF0IGhhcyBhIHZhbHVlIGluCml0cyBmdW5jdGlvbiBz bG90IGRvZXNuJ3Qgd29yay4KCiogbGlzcC9lc2hlbGwvZXNoLWlvLmVsIChlc2hlbGwtdmly dHVhbC10YXJnZXQpOiBOZXcgc3RydWN0LgooZXNoZWxsLWdldC10YXJnZXQsIGVzaGVsbC1v dXRwdXQtb2JqZWN0LXRvLXRhcmdldCk6IFJlaW1wbGVtZW50IHZpYQonY2wtZGVmZ2VuZXJp YycuCihlc2hlbGwtY2xvc2UtdGFyZ2V0KTogUmVpbXBsZW1lbnQgdmlhICdjbC1kZWZnZW5l cmljJyBhbmQgc2ltcGxpZnkKJ3Byb2Nlc3MnIG1ldGhvZC4KLS0tCiBsaXNwL2VzaGVsbC9l c2gtaW8uZWwgICAgICAgICAgICB8IDI5OSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tCiB0ZXN0L2xpc3AvZXNoZWxsL2VzaC1pby10ZXN0cy5lbCB8ICAxMCArKwogMiBmaWxl cyBjaGFuZ2VkLCAxNzAgaW5zZXJ0aW9ucygrKSwgMTM5IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2xpc3AvZXNoZWxsL2VzaC1pby5lbCBiL2xpc3AvZXNoZWxsL2VzaC1pby5lbApp bmRleCAxZWM0ZjkxODI4Mi4uZjlmNTBlYTQzM2EgMTAwNjQ0Ci0tLSBhL2xpc3AvZXNoZWxs L2VzaC1pby5lbAorKysgYi9saXNwL2VzaGVsbC9lc2gtaW8uZWwKQEAgLTQyMyw1MSArNDIz LDYgQEAgZXNoZWxsLXNldC1hbGwtb3V0cHV0LWhhbmRsZXMKICAgKGVzaGVsbC1zZXQtb3V0 cHV0LWhhbmRsZSBlc2hlbGwtb3V0cHV0LWhhbmRsZSBtb2RlIHRhcmdldCBoYW5kbGVzKQog ICAoZXNoZWxsLWNvcHktb3V0cHV0LWhhbmRsZSBlc2hlbGwtZXJyb3ItaGFuZGxlIGVzaGVs bC1vdXRwdXQtaGFuZGxlIGhhbmRsZXMpKQogCi0oZGVmdW4gZXNoZWxsLWNsb3NlLXRhcmdl dCAodGFyZ2V0IHN0YXR1cykKLSAgIkNsb3NlIGFuIG91dHB1dCBUQVJHRVQsIHBhc3Npbmcg U1RBVFVTIGFzIHRoZSByZXN1bHQuCi1TVEFUVVMgc2hvdWxkIGJlIG5vbi1uaWwgb24gc3Vj Y2Vzc2Z1bCB0ZXJtaW5hdGlvbiBvZiB0aGUgb3V0cHV0LiIKLSAgKGNvbmQKLSAgICgoc3lt Ym9scCB0YXJnZXQpIG5pbCkKLQotICAgOzsgSWYgd2Ugd2VyZSByZWRpcmVjdGluZyB0byBh IGZpbGUsIHNhdmUgdGhlIGZpbGUgYW5kIGNsb3NlIHRoZQotICAgOzsgYnVmZmVyLgotICAg KChtYXJrZXJwIHRhcmdldCkKLSAgICAobGV0ICgoYnVmIChtYXJrZXItYnVmZmVyIHRhcmdl dCkpKQotICAgICAgKHdoZW4gYnVmICAgICAgICAgICAgICAgICAgICAgICAgIDsgc29tZWJv ZHkncyBhbHJlYWR5IGtpbGxlZCBpdCEKLQkoc2F2ZS1jdXJyZW50LWJ1ZmZlcgotCSAgKHNl dC1idWZmZXIgYnVmKQotCSAgKHdoZW4gZXNoZWxsLW91dHB1dC1maWxlLWJ1ZmZlcgotCSAg ICAoc2F2ZS1idWZmZXIpCi0JICAgICh3aGVuIChlcSBlc2hlbGwtb3V0cHV0LWZpbGUtYnVm ZmVyIHQpCi0JICAgICAgKG9yIHN0YXR1cyAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkp Ci0JICAgICAgKGtpbGwtYnVmZmVyIGJ1ZikpKSkpKSkKLQotICAgOzsgSWYgd2UncmUgcmVk aXJlY3RpbmcgdG8gYSBwcm9jZXNzICh2aWEgYSBwaXBlLCBvciBwcm9jZXNzCi0gICA7OyBy ZWRpcmVjdGlvbiksIHNlbmQgaXQgRU9GIHNvIHRoYXQgaXQga25vd3Mgd2UncmUgZmluaXNo ZWQuCi0gICAoKGVzaGVsbC1wcm9jZXNzcCB0YXJnZXQpCi0gICAgOzsgQWNjb3JkaW5nIHRv IFBPU0lYLjEtMjAxNywgc2VjdGlvbiAxMS4xLjksIHdoZW4gY29tbXVuaWNhdGluZwotICAg IDs7IHZpYSB0ZXJtaW5hbCwgc2VuZGluZyBFT0YgY2F1c2VzIGFsbCBieXRlcyB3YWl0aW5n IHRvIGJlIHJlYWQKLSAgICA7OyB0byBiZSBzZW50IHRvIHRoZSBwcm9jZXNzIGltbWVkaWF0 ZWx5LiAgVGh1cywgaWYgdGhlcmUgYXJlIGFueQotICAgIDs7IGJ5dGVzIHdhaXRpbmcsIHdl IG5lZWQgdG8gc2VuZCBFT0YgdHdpY2U6IG9uY2UgdG8gZmx1c2ggdGhlCi0gICAgOzsgYnVm ZmVyLCBhbmQgYSBzZWNvbmQgdGltZSB0byBjYXVzZSB0aGUgbmV4dCByZWFkKCkgdG8gcmV0 dXJuIGEKLSAgICA7OyBzaXplIG9mIDAsIGluZGljYXRpbmcgZW5kLW9mLWZpbGUgdG8gdGhl IHJlYWRpbmcgcHJvY2Vzcy4KLSAgICA7OyBIb3dldmVyLCBzb21lIHBsYXRmb3JtcyAoZS5n LiBTb2xhcmlzKSBhY3R1YWxseSByZXF1aXJlIHNlbmRpbmcKLSAgICA7OyBhICp0aGlyZCog RU9GLiAgU2luY2Ugc2VuZGluZyBleHRyYSBFT0ZzIHdoaWxlIHRoZSBwcm9jZXNzIGlzCi0g ICAgOzsgcnVubmluZyBhcmUgYSBuby1vcCwgd2UnbGwganVzdCBzZW5kIHRoZSBtYXhpbXVt IHdlJ2QgZXZlcgotICAgIDs7IG5lZWQuICBTZWUgYnVnIzU2MDI1IGZvciBmdXJ0aGVyIGRl dGFpbHMuCi0gICAgKGxldCAoKGkgMCkKLSAgICAgICAgICA7OyBPbmx5IGNhbGwgYHByb2Nl c3Mtc2VuZC1lb2YnIG9uY2UgaWYgY29tbXVuaWNhdGluZyB2aWEgYQotICAgICAgICAgIDs7 IHBpcGUgKGluIHRydXRoLCB0aGlzIGp1c3QgY2xvc2VzIHRoZSBwaXBlKS4KLSAgICAgICAg ICAobWF4LWF0dGVtcHRzIChpZiAocHJvY2Vzcy10dHktbmFtZSB0YXJnZXQgJ3N0ZGluKSAz IDEpKSkKLSAgICAgICh3aGlsZSAoYW5kICg8PSAoY2wtaW5jZiBpKSBtYXgtYXR0ZW1wdHMp Ci0gICAgICAgICAgICAgICAgICAoZXEgKHByb2Nlc3Mtc3RhdHVzIHRhcmdldCkgJ3J1bikp Ci0gICAgICAgIChwcm9jZXNzLXNlbmQtZW9mIHRhcmdldCkpKSkKLQotICAgOzsgQSBwbGFp biBmdW5jdGlvbiByZWRpcmVjdGlvbiBuZWVkcyBubyBhZGRpdGlvbmFsIGFyZ3VtZW50cwot ICAgOzsgcGFzc2VkLgotICAgKChmdW5jdGlvbnAgdGFyZ2V0KQotICAgIChmdW5jYWxsIHRh cmdldCBzdGF0dXMpKSkpCi0KIChkZWZ1biBlc2hlbGwta2lsbC1hcHBlbmQgKHN0cmluZykK ICAgIkNhbGwgYGtpbGwtYXBwZW5kJyB3aXRoIFNUUklORywgaWYgaXQgaXMgaW5kZWVkIGEg c3RyaW5nLiIKICAgKGlmIChzdHJpbmdwIHN0cmluZykKQEAgLTQ3OSw1NiArNDM0LDYgQEAg ZXNoZWxsLWNsaXBib2FyZC1hcHBlbmQKICAgICAgIChsZXQgKChzZWxlY3QtZW5hYmxlLWNs aXBib2FyZCB0KSkKIAkoa2lsbC1hcHBlbmQgc3RyaW5nIG5pbCkpKSkKIAotKGRlZnVuIGVz aGVsbC1nZXQtdGFyZ2V0ICh0YXJnZXQgJm9wdGlvbmFsIG1vZGUpCi0gICJDb252ZXJ0IFRB UkdFVCwgd2hpY2ggaXMgYSByYXcgYXJndW1lbnQsIGludG8gYSB2YWxpZCBvdXRwdXQgdGFy Z2V0LgotTU9ERSBpcyBlaXRoZXIgYG92ZXJ3cml0ZScsIGBhcHBlbmQnIG9yIGBpbnNlcnQn OyBpZiBpdCBpcyBvbWl0dGVkIG9yIG5pbCwKLWl0IGRlZmF1bHRzIHRvIGBpbnNlcnQnLiIK LSAgKHNldHEgbW9kZSAob3IgbW9kZSAnaW5zZXJ0KSkKLSAgKGNvbmQKLSAgICgoc3RyaW5n cCB0YXJnZXQpCi0gICAgKGxldCAoKHJlZGlyIChhc3NvYyB0YXJnZXQgZXNoZWxsLXZpcnR1 YWwtdGFyZ2V0cykpKQotICAgICAgKGlmIHJlZGlyCi0JICAoaWYgKG50aCAyIHJlZGlyKQot CSAgICAgIChmdW5jYWxsIChudGggMSByZWRpcikgbW9kZSkKLQkgICAgKG50aCAxIHJlZGly KSkKLQkobGV0KiAoKGV4aXN0cyAoZ2V0LWZpbGUtYnVmZmVyIHRhcmdldCkpCi0JICAgICAg IChidWYgKGZpbmQtZmlsZS1ub3NlbGVjdCB0YXJnZXQgdCkpKQotCSAgKHdpdGgtY3VycmVu dC1idWZmZXIgYnVmCi0JICAgIChpZiBidWZmZXItZmlsZS1yZWFkLW9ubHkKLQkJKGVycm9y ICJDYW5ub3Qgd3JpdGUgdG8gcmVhZC1vbmx5IGZpbGUgYCVzJyIgdGFyZ2V0KSkKLQkgICAg KHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpCi0gICAgICAgICAgICAoc2V0cS1sb2NhbCBl c2hlbGwtb3V0cHV0LWZpbGUtYnVmZmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAoaWYg KGVxIGV4aXN0cyBidWYpIDAgdCkpCi0JICAgIChjb25kICgoZXEgbW9kZSAnb3ZlcndyaXRl KQotCQkgICAoZXJhc2UtYnVmZmVyKSkKLQkJICAoKGVxIG1vZGUgJ2FwcGVuZCkKLQkJICAg KGdvdG8tY2hhciAocG9pbnQtbWF4KSkpKQotCSAgICAocG9pbnQtbWFya2VyKSkpKSkpCi0K LQotICAgKChidWZmZXJwIHRhcmdldCkKLSAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciB0YXJn ZXQKLSAgICAgIChjb25kICgoZXEgbW9kZSAnb3ZlcndyaXRlKQotICAgICAgICAgICAgIChl cmFzZS1idWZmZXIpKQotICAgICAgICAgICAgKChlcSBtb2RlICdhcHBlbmQpCi0gICAgICAg ICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkpKQotICAgICAgKHBvaW50LW1hcmtlcikp KQotCi0gICAoKGZ1bmN0aW9ucCB0YXJnZXQpIG5pbCkKLQotICAgKChzeW1ib2xwIHRhcmdl dCkKLSAgICAoaWYgKGVxIG1vZGUgJ292ZXJ3cml0ZSkKLQkoc2V0IHRhcmdldCBuaWwpKQot ICAgIHRhcmdldCkKLQotICAgKChvciAoZXNoZWxsLXByb2Nlc3NwIHRhcmdldCkKLQkobWFy a2VycCB0YXJnZXQpKQotICAgIHRhcmdldCkKLQotICAgKHQKLSAgICAoZXJyb3IgIkludmFs aWQgcmVkaXJlY3Rpb24gdGFyZ2V0OiAlcyIKLQkgICAoZXNoZWxsLXN0cmluZ2lmeSB0YXJn ZXQpKSkpKQotCiAoZGVmdW4gZXNoZWxsLWludGVyYWN0aXZlLW91dHB1dC1wICgmb3B0aW9u YWwgaW5kZXggaGFuZGxlcykKICAgIlJldHVybiBub24tbmlsIGlmIHRoZSBzcGVjaWZpZWQg aGFuZGxlIGlzIGJvdW5kIGZvciBpbnRlcmFjdGl2ZSBkaXNwbGF5LgogSEFORExFUyBpcyB0 aGUgc2V0IG9mIGhhbmRsZXMgdG8gY2hlY2s7IGlmIG5pbCwgdXNlCkBAIC01OTMsNTIgKzQ5 OCwxNjggQEAgZXNoZWxsLXByaW50bgogICAoZXNoZWxsLXByaW50IG9iamVjdCkKICAgKGVz aGVsbC1wcmludCAiXG4iKSkKIAotKGRlZnVuIGVzaGVsbC1vdXRwdXQtb2JqZWN0LXRvLXRh cmdldCAob2JqZWN0IHRhcmdldCkKLSAgIkluc2VydCBPQkpFQ1QgaW50byBUQVJHRVQuCi1S ZXR1cm5zIHdoYXQgd2FzIGFjdHVhbGx5IHNlbnQsIG9yIG5pbCBpZiBub3RoaW5nIHdhcyBz ZW50LiIKLSAgKGNvbmQKLSAgICgoZnVuY3Rpb25wIHRhcmdldCkKLSAgICAoZnVuY2FsbCB0 YXJnZXQgb2JqZWN0KSkKLQotICAgKChzeW1ib2xwIHRhcmdldCkKLSAgICAoaWYgKGVxIHRh cmdldCB0KSAgICAgICAgICAgICAgICAgICA7IG1lYW5zICJwcmludCB0byBkaXNwbGF5Igot CShlc2hlbGwtaW50ZXJhY3RpdmUtcHJpbnQgKGVzaGVsbC1zdHJpbmdpZnkgb2JqZWN0KSkK LSAgICAgIChpZiAobm90IChzeW1ib2wtdmFsdWUgdGFyZ2V0KSkKLQkgIChzZXQgdGFyZ2V0 IG9iamVjdCkKLQkoc2V0cSBvYmplY3QgKGVzaGVsbC1zdHJpbmdpZnkgb2JqZWN0KSkKLQko aWYgKG5vdCAoc3RyaW5ncCAoc3ltYm9sLXZhbHVlIHRhcmdldCkpKQotCSAgICAoc2V0IHRh cmdldCAoZXNoZWxsLXN0cmluZ2lmeQotCQkJIChzeW1ib2wtdmFsdWUgdGFyZ2V0KSkpKQot CShzZXQgdGFyZ2V0IChjb25jYXQgKHN5bWJvbC12YWx1ZSB0YXJnZXQpIG9iamVjdCkpKSkp Ci0KLSAgICgobWFya2VycCB0YXJnZXQpCi0gICAgKGlmIChidWZmZXItbGl2ZS1wIChtYXJr ZXItYnVmZmVyIHRhcmdldCkpCi0JKHdpdGgtY3VycmVudC1idWZmZXIgKG1hcmtlci1idWZm ZXIgdGFyZ2V0KQotCSAgKGxldCAoKG1vdmluZyAoPSAocG9pbnQpIHRhcmdldCkpKQotCSAg ICAoc2F2ZS1leGN1cnNpb24KLQkgICAgICAoZ290by1jaGFyIHRhcmdldCkKLQkgICAgICAo dW5sZXNzIChzdHJpbmdwIG9iamVjdCkKLQkJKHNldHEgb2JqZWN0IChlc2hlbGwtc3RyaW5n aWZ5IG9iamVjdCkpKQotCSAgICAgIChpbnNlcnQtYW5kLWluaGVyaXQgb2JqZWN0KQotCSAg ICAgIChzZXQtbWFya2VyIHRhcmdldCAocG9pbnQtbWFya2VyKSkpCi0JICAgIChpZiBtb3Zp bmcKLQkJKGdvdG8tY2hhciB0YXJnZXQpKSkpKSkKLQotICAgKChlc2hlbGwtcHJvY2Vzc3Ag dGFyZ2V0KQotICAgICh1bmxlc3MgKHN0cmluZ3Agb2JqZWN0KQotICAgICAgKHNldHEgb2Jq ZWN0IChlc2hlbGwtc3RyaW5naWZ5IG9iamVjdCkpKQotICAgIChjb25kaXRpb24tY2FzZSBl cnIKLSAgICAgICAgKHByb2Nlc3Mtc2VuZC1zdHJpbmcgdGFyZ2V0IG9iamVjdCkKLSAgICAg IChlcnJvcgotICAgICAgIDs7IElmIGBwcm9jZXNzLXNlbmQtc3RyaW5nJyByYWlzZXMgYW4g ZXJyb3IgYW5kIHRoZSBwcm9jZXNzIGhhcwotICAgICAgIDs7IGZpbmlzaGVkLCB0cmVhdCBp dCBhcyBhIGJyb2tlbiBwaXBlLiAgT3RoZXJ3aXNlLCBqdXN0Ci0gICAgICAgOzsgcmUtdGhy b3cgdGhlIHNpZ25hbC4KLSAgICAgICAoaWYgKG1lbXEgKHByb2Nlc3Mtc3RhdHVzIHRhcmdl dCkKLQkJICcocnVuIHN0b3Agb3BlbiBjbG9zZWQpKQotICAgICAgICAgICAoc2lnbmFsIChj YXIgZXJyKSAoY2RyIGVycikpCi0gICAgICAgICAoc2lnbmFsICdlc2hlbGwtcGlwZS1icm9r ZW4gKGxpc3QgdGFyZ2V0KSkpKSkpKQorKGNsLWRlZnN0cnVjdCAoZXNoZWxsLXZpcnR1YWwt dGFyZ2V0CisgICAgICAgICAgICAgICAoOmNvbnN0cnVjdG9yIGVzaGVsbC12aXJ0dWFsLXRh cmdldC1jcmVhdGUgKG91dHB1dC1mdW5jdGlvbikpKQorICAiQSB2aXJ0dWFsIHRhcmdldCAo c2VlIGBlc2hlbGwtdmlydHVhbC10YXJnZXRzJykuIgorICBvdXRwdXQtZnVuY3Rpb24pCisK KyhjbC1kZWZnZW5lcmljIGVzaGVsbC1nZXQtdGFyZ2V0IChyYXctdGFyZ2V0ICZvcHRpb25h bCBfbW9kZSkKKyAgIkNvbnZlcnQgUkFXLVRBUkdFVCwgd2hpY2ggaXMgYSByYXcgYXJndW1l bnQsIGludG8gYSB2YWxpZCBvdXRwdXQgdGFyZ2V0LgorTU9ERSBpcyBlaXRoZXIgYG92ZXJ3 cml0ZScsIGBhcHBlbmQnIG9yIGBpbnNlcnQnOyBpZiBpdCBpcyBvbWl0dGVkIG9yIG5pbCwK K2l0IGRlZmF1bHRzIHRvIGBpbnNlcnQnLiIKKyAgKGVycm9yICJJbnZhbGlkIHJlZGlyZWN0 aW9uIHRhcmdldDogJXMiIChlc2hlbGwtc3RyaW5naWZ5IHJhdy10YXJnZXQpKSkKKworKGNs LWRlZm1ldGhvZCBlc2hlbGwtZ2V0LXRhcmdldCAoKHJhdy10YXJnZXQgc3RyaW5nKSAmb3B0 aW9uYWwgbW9kZSkKKyAgIkNvbnZlcnQgYSBzdHJpbmcgUkFXLVRBUkdFVCBpbnRvIGEgdmFs aWQgb3V0cHV0IHRhcmdldCB1c2luZyBNT0RFLgorSWYgVEFSR0VUIGlzIGEgdmlydHVhbCB0 YXJnZXQgKHNlZSBgZXNoZWxsLXZpcnR1YWwtdGFyZ2V0cycpLAorcmV0dXJuIGFuIGBlc2hl bGwtdmlydHVhbC10YXJnZXQnIGluc3RhbmNlOyBvdGhlcndpc2UsIHJldHVybiBhCittYXJr ZXIgZm9yIGEgZmlsZSBuYW1lZCBUQVJHRVQuIgorICAoc2V0cSBtb2RlIChvciBtb2RlICdp bnNlcnQpKQorICAoaWYtbGV0ICgocmVkaXIgKGFzc29jIHJhdy10YXJnZXQgZXNoZWxsLXZp cnR1YWwtdGFyZ2V0cykpKQorICAgICAgKGVzaGVsbC12aXJ0dWFsLXRhcmdldC1jcmVhdGUK KyAgICAgICAoaWYgKG50aCAyIHJlZGlyKQorICAgICAgICAgICAoZnVuY2FsbCAobnRoIDEg cmVkaXIpIG1vZGUpCisgICAgICAgICAobnRoIDEgcmVkaXIpKSkKKyAgICAobGV0ICgoZXhp c3RzIChnZXQtZmlsZS1idWZmZXIgcmF3LXRhcmdldCkpCisgICAgICAgICAgKGJ1ZiAoZmlu ZC1maWxlLW5vc2VsZWN0IHJhdy10YXJnZXQgdCkpKQorICAgICAgKHdpdGgtY3VycmVudC1i dWZmZXIgYnVmCisgICAgICAgICh3aGVuIGJ1ZmZlci1maWxlLXJlYWQtb25seQorICAgICAg ICAgIChlcnJvciAiQ2Fubm90IHdyaXRlIHRvIHJlYWQtb25seSBmaWxlIGAlcyciIHJhdy10 YXJnZXQpKQorICAgICAgICAgIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQorICAgICAg ICAgIChzZXRxLWxvY2FsIGVzaGVsbC1vdXRwdXQtZmlsZS1idWZmZXIKKyAgICAgICAgICAg ICAgICAgICAgICAoaWYgKGVxIGV4aXN0cyBidWYpIDAgdCkpCisgICAgICAgICAgKGNvbmQg KChlcSBtb2RlICdvdmVyd3JpdGUpCisgICAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIp KQorICAgICAgICAgICAgICAgICgoZXEgbW9kZSAnYXBwZW5kKQorICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1tYXgpKSkpCisgICAgICAgICAgKHBvaW50LW1hcmtlcikp KSkpCisKKyhjbC1kZWZtZXRob2QgZXNoZWxsLWdldC10YXJnZXQgKChyYXctdGFyZ2V0IGJ1 ZmZlcikgJm9wdGlvbmFsIG1vZGUpCisgICJDb252ZXJ0IGEgYnVmZmVyIFJBVy1UQVJHRVQg aW50byBhIHZhbGlkIG91dHB1dCB0YXJnZXQgdXNpbmcgTU9ERS4KK1RoaXMgcmV0dXJucyBh IG1hcmtlciBmb3IgdGhhdCBidWZmZXIuIgorICAod2l0aC1jdXJyZW50LWJ1ZmZlciByYXct dGFyZ2V0CisgICAgKGNvbmQgKChlcSBtb2RlICdvdmVyd3JpdGUpCisgICAgICAgICAgIChl cmFzZS1idWZmZXIpKQorICAgICAgICAgICgoZXEgbW9kZSAnYXBwZW5kKQorICAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1tYXgpKSkpCisgICAgKHBvaW50LW1hcmtlcikpKQorCiso Y2wtZGVmbWV0aG9kIGVzaGVsbC1nZXQtdGFyZ2V0ICgocmF3LXRhcmdldCBzeW1ib2wpICZv cHRpb25hbCBtb2RlKQorICAiQ29udmVydCBhIHJhdyBzeW1ib2wgUkFXLVRBUkdFVCBpbnRv IGEgdmFsaWQgb3V0cHV0IHRhcmdldCB1c2luZyBNT0RFLgorVGhpcyByZXR1cm5zIFJBVy1U QVJHRVQsIHdpdGggaXRzIHZhbHVlIGluaXRpYWxpemVkIHRvIG5pbCBpZiBNT0RFIGlzCitg b3ZlcndyaXRlJy4iCisgICh3aGVuIChlcSBtb2RlICdvdmVyd3JpdGUpCisgICAgKHNldCBy YXctdGFyZ2V0IG5pbCkpCisgIHJhdy10YXJnZXQpCisKKyhjbC1kZWZtZXRob2QgZXNoZWxs LWdldC10YXJnZXQgKChyYXctdGFyZ2V0IHByb2Nlc3MpICZvcHRpb25hbCBfbW9kZSkKKyAg IkNvbnZlcnQgYSByYXcgcHJvY2VzcyBSQVctVEFSR0VUIGludG8gYSB2YWxpZCBvdXRwdXQg dGFyZ2V0LgorVGhpcyBqdXN0IHJldHVybnMgUkFXLVRBUkdFVC4iCisgIHJhdy10YXJnZXQp CisKKyhjbC1kZWZtZXRob2QgZXNoZWxsLWdldC10YXJnZXQgKChyYXctdGFyZ2V0IG1hcmtl cikgJm9wdGlvbmFsIF9tb2RlKQorICAiQ29udmVydCBhIHJhdyBwcm9jZXNzIFJBVy1UQVJH RVQgaW50byBhIHZhbGlkIG91dHB1dCB0YXJnZXQuCitUaGlzIGp1c3QgcmV0dXJucyBSQVct VEFSR0VULiIKKyAgcmF3LXRhcmdldCkKKworKGNsLWRlZmdlbmVyaWMgZXNoZWxsLWNsb3Nl LXRhcmdldCAodGFyZ2V0IHN0YXR1cykKKyAgIkNsb3NlIGFuIG91dHB1dCBUQVJHRVQsIHBh c3NpbmcgU1RBVFVTIGFzIHRoZSByZXN1bHQuCitTVEFUVVMgc2hvdWxkIGJlIG5vbi1uaWwg b24gc3VjY2Vzc2Z1bCB0ZXJtaW5hdGlvbiBvZiB0aGUgb3V0cHV0LiIpCisKKyhjbC1kZWZt ZXRob2QgZXNoZWxsLWNsb3NlLXRhcmdldCAoKF90YXJnZXQgc3ltYm9sKSBfc3RhdHVzKQor ICAiQ2xvc2UgYSBzeW1ib2wgVEFSR0VULiIKKyAgbmlsKQorCisoY2wtZGVmbWV0aG9kIGVz aGVsbC1jbG9zZS10YXJnZXQgKCh0YXJnZXQgbWFya2VyKSBzdGF0dXMpCisgICJDbG9zZSBh IG1hcmtlciBUQVJHRVQuCitJZiBUQVJHRVQgd2FzIGNyZWF0ZWQgZnJvbSBhIGZpbGUgbmFt ZSwgc2F2ZSBhbmQga2lsbCB0aGUgYnVmZmVyLgorSWYgc3RhdHVzIGlzIG5pbCwgcHJvbXB0 IGJlZm9yZSBraWxsaW5nLiIKKyAgKHdoZW4gKGJ1ZmZlci1saXZlLXAgKG1hcmtlci1idWZm ZXIgdGFyZ2V0KSkKKyAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAobWFya2VyLWJ1ZmZlciB0 YXJnZXQpCisgICAgICAod2hlbiBlc2hlbGwtb3V0cHV0LWZpbGUtYnVmZmVyCisgICAgICAg IChzYXZlLWJ1ZmZlcikKKyAgICAgICAgKHdoZW4gKGVxIGVzaGVsbC1vdXRwdXQtZmlsZS1i dWZmZXIgdCkKKyAgICAgICAgICAob3Igc3RhdHVzIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAg bmlsKSkKKyAgICAgICAgICAoa2lsbC1idWZmZXIpKSkpKSkKKworKGNsLWRlZm1ldGhvZCBl c2hlbGwtY2xvc2UtdGFyZ2V0ICgodGFyZ2V0IHByb2Nlc3MpIF9zdGF0dXMpCisgICJDbG9z ZSBhIHByb2Nlc3MgVEFSR0VULiIKKyAgOzsgQWNjb3JkaW5nIHRvIFBPU0lYLjEtMjAxNywg c2VjdGlvbiAxMS4xLjksIHdoZW4gY29tbXVuaWNhdGluZyB2aWEKKyAgOzsgdGVybWluYWws IHNlbmRpbmcgRU9GIGNhdXNlcyBhbGwgYnl0ZXMgd2FpdGluZyB0byBiZSByZWFkIHRvIGJl CisgIDs7IHNlbnQgdG8gdGhlIHByb2Nlc3MgaW1tZWRpYXRlbHkuICBUaHVzLCBpZiB0aGVy ZSBhcmUgYW55IGJ5dGVzCisgIDs7IHdhaXRpbmcsIHdlIG5lZWQgdG8gc2VuZCBFT0YgdHdp Y2U6IG9uY2UgdG8gZmx1c2ggdGhlIGJ1ZmZlciwgYW5kCisgIDs7IGEgc2Vjb25kIHRpbWUg dG8gY2F1c2UgdGhlIG5leHQgcmVhZCgpIHRvIHJldHVybiBhIHNpemUgb2YgMCwKKyAgOzsg aW5kaWNhdGluZyBlbmQtb2YtZmlsZSB0byB0aGUgcmVhZGluZyBwcm9jZXNzLiAgSG93ZXZl ciwgc29tZQorICA7OyBwbGF0Zm9ybXMgKGUuZy4gU29sYXJpcykgYWN0dWFsbHkgcmVxdWly ZSBzZW5kaW5nIGEgKnRoaXJkKiBFT0YuCisgIDs7IFNpbmNlIHNlbmRpbmcgZXh0cmEgRU9G cyB0byBhIHJ1bm5pbmcgcHJvY2VzcyBpcyBhIG5vLW9wLCB3ZSdsbAorICA7OyBqdXN0IHNl bmQgdGhlIG1heGltdW0gd2UnZCBldmVyIG5lZWQuICBTZWUgYnVnIzU2MDI1IGZvciBmdXJ0 aGVyCisgIDs7IGRldGFpbHMuCisgIChjYXRjaCAnZG9uZQorICAgIChkb3RpbWVzIChfIChp ZiAocHJvY2Vzcy10dHktbmFtZSB0YXJnZXQgJ3N0ZGluKSAzIDEpKQorICAgICAgKHVubGVz cyAoZXEgKHByb2Nlc3Mtc3RhdHVzIHRhcmdldCkgJ3J1bikKKyAgICAgICAgKHRocm93ICdk b25lIG5pbCkpCisgICAgICAocHJvY2Vzcy1zZW5kLWVvZiB0YXJnZXQpKSkpCisKKyhjbC1k ZWZtZXRob2QgZXNoZWxsLWNsb3NlLXRhcmdldCAoKF90YXJnZXQgZXNoZWxsLXZpcnR1YWwt dGFyZ2V0KSBfc3RhdHVzKQorICAiQ2xvc2UgYSB2aXJ0dWFsIFRBUkdFVC4iCisgIG5pbCkK KworKGNsLWRlZmdlbmVyaWMgZXNoZWxsLW91dHB1dC1vYmplY3QtdG8tdGFyZ2V0IChvYmpl Y3QgdGFyZ2V0KQorICAiT3V0cHV0IE9CSkVDVCB0byBUQVJHRVQuCitSZXR1cm5zIHdoYXQg d2FzIGFjdHVhbGx5IHNlbnQsIG9yIG5pbCBpZiBub3RoaW5nIHdhcyBzZW50LiIpCisKKyhj bC1kZWZtZXRob2QgZXNoZWxsLW91dHB1dC1vYmplY3QtdG8tdGFyZ2V0IChvYmplY3QgKF90 YXJnZXQgKGVxbCB0KSkpCisgICJPdXRwdXQgT0JKRUNUIHRvIHRoZSBkaXNwbGF5LiIKKyAg KHNldHEgb2JqZWN0IChlc2hlbGwtc3RyaW5naWZ5IG9iamVjdCkpCisgIChlc2hlbGwtaW50 ZXJhY3RpdmUtcHJpbnQgb2JqZWN0KSkKKworKGNsLWRlZm1ldGhvZCBlc2hlbGwtb3V0cHV0 LW9iamVjdC10by10YXJnZXQgKG9iamVjdCAodGFyZ2V0IHN5bWJvbCkpCisgICJPdXRwdXQg T0JKRUNUIHRvIHRoZSB2YWx1ZSBvZiB0aGUgc3ltYm9sIFRBUkdFVC4iCisgIChpZiAobm90 IChzeW1ib2wtdmFsdWUgdGFyZ2V0KSkKKyAgICAgIChzZXQgdGFyZ2V0IG9iamVjdCkKKyAg ICAoc2V0cSBvYmplY3QgKGVzaGVsbC1zdHJpbmdpZnkgb2JqZWN0KSkKKyAgICAoaWYgKG5v dCAoc3RyaW5ncCAoc3ltYm9sLXZhbHVlIHRhcmdldCkpKQorICAgICAgICAoc2V0IHRhcmdl dCAoZXNoZWxsLXN0cmluZ2lmeQorICAgICAgICAgICAgICAgICAgICAgKHN5bWJvbC12YWx1 ZSB0YXJnZXQpKSkpCisgICAgKHNldCB0YXJnZXQgKGNvbmNhdCAoc3ltYm9sLXZhbHVlIHRh cmdldCkgb2JqZWN0KSkpCisgIG9iamVjdCkKKworKGNsLWRlZm1ldGhvZCBlc2hlbGwtb3V0 cHV0LW9iamVjdC10by10YXJnZXQgKG9iamVjdCAodGFyZ2V0IG1hcmtlcikpCisgICJPdXRw dXQgT0JKRUNUIHRvIHRoZSBtYXJrZXIgVEFSR0VULiIKKyAgKHdoZW4gKGJ1ZmZlci1saXZl LXAgKG1hcmtlci1idWZmZXIgdGFyZ2V0KSkKKyAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAo bWFya2VyLWJ1ZmZlciB0YXJnZXQpCisgICAgICAobGV0ICgobW92aW5nICg9IChwb2ludCkg dGFyZ2V0KSkpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChnb3RvLWNo YXIgdGFyZ2V0KQorICAgICAgICAgICh1bmxlc3MgKHN0cmluZ3Agb2JqZWN0KQorICAgICAg ICAgICAgKHNldHEgb2JqZWN0IChlc2hlbGwtc3RyaW5naWZ5IG9iamVjdCkpKQorICAgICAg ICAgIChpbnNlcnQtYW5kLWluaGVyaXQgb2JqZWN0KQorICAgICAgICAgIChzZXQtbWFya2Vy IHRhcmdldCAocG9pbnQtbWFya2VyKSkpCisgICAgICAgICh3aGVuIG1vdmluZworICAgICAg ICAgIChnb3RvLWNoYXIgdGFyZ2V0KSkpKSkKKyAgb2JqZWN0KQorCisoY2wtZGVmbWV0aG9k IGVzaGVsbC1vdXRwdXQtb2JqZWN0LXRvLXRhcmdldCAob2JqZWN0ICh0YXJnZXQgcHJvY2Vz cykpCisgICJPdXRwdXQgT0JKRUNUIHRvIHRoZSBwcm9jZXNzIFRBUkdFVC4iCisgICh1bmxl c3MgKHN0cmluZ3Agb2JqZWN0KQorICAgIChzZXRxIG9iamVjdCAoZXNoZWxsLXN0cmluZ2lm eSBvYmplY3QpKSkKKyAgKGNvbmRpdGlvbi1jYXNlIGVycgorICAgICAgKHByb2Nlc3Mtc2Vu ZC1zdHJpbmcgdGFyZ2V0IG9iamVjdCkKKyAgICAoZXJyb3IKKyAgICAgOzsgSWYgYHByb2Nl c3Mtc2VuZC1zdHJpbmcnIHJhaXNlcyBhbiBlcnJvciBhbmQgdGhlIHByb2Nlc3MgaGFzCisg ICAgIDs7IGZpbmlzaGVkLCB0cmVhdCBpdCBhcyBhIGJyb2tlbiBwaXBlLiAgT3RoZXJ3aXNl LCBqdXN0CisgICAgIDs7IHJlLXRocm93IHRoZSBzaWduYWwuCisgICAgIChpZiAobWVtcSAo cHJvY2Vzcy1zdGF0dXMgdGFyZ2V0KQorICAgICAgICAgICAgICAgJyhydW4gc3RvcCBvcGVu IGNsb3NlZCkpCisgICAgICAgICAoc2lnbmFsIChjYXIgZXJyKSAoY2RyIGVycikpCisgICAg ICAgKHNpZ25hbCAnZXNoZWxsLXBpcGUtYnJva2VuIChsaXN0IHRhcmdldCkpKSkpCiAgIG9i amVjdCkKIAorKGNsLWRlZm1ldGhvZCBlc2hlbGwtb3V0cHV0LW9iamVjdC10by10YXJnZXQg KG9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh0YXJnZXQgZXNoZWxsLXZpcnR1YWwtdGFyZ2V0KSkKKyAgIk91dHB1dCBPQkpFQ1QgdG8g dGhlIHZpcnR1YWwgVEFSR0VULiIKKyAgKGZ1bmNhbGwgKGVzaGVsbC12aXJ0dWFsLXRhcmdl dC1vdXRwdXQtZnVuY3Rpb24gdGFyZ2V0KSBvYmplY3QpKQorCiAoZGVmdW4gZXNoZWxsLW91 dHB1dC1vYmplY3QgKG9iamVjdCAmb3B0aW9uYWwgaGFuZGxlLWluZGV4IGhhbmRsZXMpCiAg ICJJbnNlcnQgT0JKRUNULCB1c2luZyBIQU5ETEUtSU5ERVggc3BlY2lmaWNhbGx5LgogSWYg SEFORExFLUlOREVYIGlzIG5pbCwgb3V0cHV0IHRvIGBlc2hlbGwtb3V0cHV0LWhhbmRsZScu CmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvZXNoZWxsL2VzaC1pby10ZXN0cy5lbCBiL3Rlc3Qv bGlzcC9lc2hlbGwvZXNoLWlvLXRlc3RzLmVsCmluZGV4IGVkMzUwYTk2OTFjLi5jZTgwZjNh OGYwOCAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL2VzaGVsbC9lc2gtaW8tdGVzdHMuZWwKKysr IGIvdGVzdC9saXNwL2VzaGVsbC9lc2gtaW8tdGVzdHMuZWwKQEAgLTMxLDYgKzMxLDkgQEAK IAogKGRlZnZhciBlc2hlbGwtdGVzdC12YWx1ZSBuaWwpCiAKKyhkZWZ2YXIgZXNoZWxsLXRl c3QtdmFsdWUtd2l0aC1mdW4gbmlsKQorKGRlZnVuIGVzaGVsbC10ZXN0LXZhbHVlLXdpdGgt ZnVuICgpKQorCiAoZGVmdW4gZXNoZWxsLXRlc3QtZmlsZS1zdHJpbmcgKGZpbGUpCiAgICJS ZXR1cm4gdGhlIGNvbnRlbnRzIG9mIEZJTEUgYXMgYSBzdHJpbmcuIgogICAod2l0aC10ZW1w LWJ1ZmZlcgpAQCAtMTE3LDYgKzEyMCwxMyBAQCBlc2gtaW8tdGVzdC9yZWRpcmVjdC1zeW1i b2wvYXBwZW5kCiAgICAgIChlc2hlbGwtaW5zZXJ0LWNvbW1hbmQgImVjaG8gbmV3ID4+ICMn ZXNoZWxsLXRlc3QtdmFsdWUiKSkKICAgICAoc2hvdWxkIChlcXVhbCBlc2hlbGwtdGVzdC12 YWx1ZSAib2xkbmV3IikpKSkKIAorKGVydC1kZWZ0ZXN0IGVzaC1pby10ZXN0L3JlZGlyZWN0 LXN5bWJvbC93aXRoLWZ1bmN0aW9uLXNsb3QgKCkKKyAgIkNoZWNrIHRoYXQgcmVkaXJlY3Rp bmcgdG8gYSBzeW1ib2wgd2l0aCBmdW5jdGlvbiBzbG90IHNldCB3b3Jrcy4iCisgIChsZXQg KChlc2hlbGwtdGVzdC12YWx1ZS13aXRoLWZ1bikpCisgICAgKHdpdGgtdGVtcC1lc2hlbGwK KyAgICAgKGVzaGVsbC1pbnNlcnQtY29tbWFuZCAiZWNobyBoaSA+ICMnZXNoZWxsLXRlc3Qt dmFsdWUtd2l0aC1mdW4iKSkKKyAgICAoc2hvdWxkIChlcXVhbCBlc2hlbGwtdGVzdC12YWx1 ZS13aXRoLWZ1biAiaGkiKSkpKQorCiAoZXJ0LWRlZnRlc3QgZXNoLWlvLXRlc3QvcmVkaXJl Y3QtbWFya2VyICgpCiAgICJDaGVjayB0aGF0IHJlZGlyZWN0aW5nIHRvIGEgbWFya2VyIHdv cmtzLiIKICAgKHdpdGgtdGVtcC1idWZmZXIKLS0gCjIuMjUuMQoK --------------tO0QUvWQHEJ92P9RiMRSrewB--