From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Corwin Brust Newsgroups: gmane.emacs.bugs Subject: bug#74133: Wrong files attached Date: Sun, 10 Nov 2024 13:35:47 -0600 Message-ID: References: <86ldy1yedk.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ef084706269417a2" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="12133"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 74133@debbugs.gnu.org To: Nikolaos Chatzikonstantinou Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Nov 10 20:37:25 2024 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 1tADkS-00033E-6t for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 10 Nov 2024 20:37:24 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tADk9-0002eG-4c; Sun, 10 Nov 2024 14:37:05 -0500 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 1tADk7-0002e0-Lw for bug-gnu-emacs@gnu.org; Sun, 10 Nov 2024 14:37:03 -0500 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 1tADk7-0004i0-CG for bug-gnu-emacs@gnu.org; Sun, 10 Nov 2024 14:37:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=Date:From:In-Reply-To:References:MIME-Version:To:Subject; bh=P0AXJAQeE3606TYPVPyK6esqcqqR7o5kfwDLVRnOMMg=; b=nHxtvyx57Zwqca21rxwCE3G3iMmr0lylOS5ZRAXqPkJmQJy1E17U/Q2t/0EPK3v5hJN69MaK+81S2CWszn7DhL/PC5j1BnPHDRkZoekUwPtHpeYuElWZPLDW+pWOq5WXRfG2ZxlGcORx6ScUnzlZtfdmBFoQ/8MGfoZu5tno6KKd+K6jbhum5wPNFqbWsq8VCKE3j53L59HE8A4CbY/LzwmuU9MnPMcBNzCBMlx9Mdeicx3AUNvXRuUBGVAjmj3gLn0268o+8A8qB8jOVKgpRArPiX/w3dMnO05b02CU4nTu+kEg0LfMbxPXg9kI+4EvtD2aF2ffodK4npvH6wcRlw==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tADk6-0001aw-7L for bug-gnu-emacs@gnu.org; Sun, 10 Nov 2024 14:37:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Corwin Brust Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 10 Nov 2024 19:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74133 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 74133-submit@debbugs.gnu.org id=B74133.17312673706063 (code B ref 74133); Sun, 10 Nov 2024 19:37:02 +0000 Original-Received: (at 74133) by debbugs.gnu.org; 10 Nov 2024 19:36:10 +0000 Original-Received: from localhost ([127.0.0.1]:56673 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tADjF-0001Zh-Ip for submit@debbugs.gnu.org; Sun, 10 Nov 2024 14:36:10 -0500 Original-Received: from mail-oa1-f44.google.com ([209.85.160.44]:41947) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tADjA-0001Z9-R1 for 74133@debbugs.gnu.org; Sun, 10 Nov 2024 14:36:08 -0500 Original-Received: by mail-oa1-f44.google.com with SMTP id 586e51a60fabf-288fec398f8so481831fac.3 for <74133@debbugs.gnu.org>; Sun, 10 Nov 2024 11:36:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731267359; x=1731872159; 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=P0AXJAQeE3606TYPVPyK6esqcqqR7o5kfwDLVRnOMMg=; b=pnRj0lW8FTQQp8o9EJ564E21RS0IcXBF6+dtmwiYM6Y3Ep5zy/iTuagdlFiYrnQchZ zsD3vt8klYzp6Af2QqB+I3CjxPOIn6W1lDUAHurfYpjAG766jsibGj+VXX0yP5JfNJIb 77R0cFwO3zSGkov4U8p+hnslwUwiGMFahEcztXJGEH3JIuVZIsWSwKcQ6T9tVz9IKRpW ngqQWEUdDc8ewnJSTba/+cseqHIg9nLzbPWiz1G6lAHHZv9560MUPqlVcfD1O/x6yELm aPQr9FMUr85I/6vs5wTu4qrW8Sph5PM6dMsb57yrhHSZP+eoMipjPAOXkoatREpE3Re6 y2gw== X-Gm-Message-State: AOJu0YwWVXYVcQeOYQg64Gj+W2rP8CPK96VnhrgOAnDqQ7S/s4PO+gDd d5lX9GU1dENxi9VL7wmAK1rdmo2rmtxaj6Pbm5xpgU3MMrgdb6ea0miNFVY68HNdMyt1fxS8JbV MUVehwyDl43iVUCTxjrhi9sMV1WI= X-Google-Smtp-Source: AGHT+IGeyUsp9aNgXib6OxvX8/m6spz8VgYkGJS+vTe8DIuzqtyhj4jVmazXjg/EYbvTrYWCJnSvH6e6LstHgpNHJis= X-Received: by 2002:a05:6830:64ca:b0:703:7851:41ba with SMTP id 46e09a7af769-71a1c1c7241mr2425372a34.2.1731267358802; Sun, 10 Nov 2024 11:35:58 -0800 (PST) In-Reply-To: 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:295203 Archived-At: --000000000000ef084706269417a2 Content-Type: text/plain; charset="UTF-8" > On Sat, Nov 2, 2024, 08:05 Eli Zaretskii wrote: >> >> Corwin, are you looking at this? >> Hi Nikolas, Thank you very much for working on this. I suspect your code is good - a big improvement. Unfortunately, the local version that I have been using contains a number of fixes that are lost when I apply your patches, some of which are important, fixing issues that have been reported since the in-tree version of build-dep-zips.py was last updated (for Emacs 28, seemingly, but I'm not sure the currently in-tree version ever quite worked for Emacs 28; certainly it does not for any newer version). This is entirely my fault: I should have been pushing to get the in-tree version in sync with what I have been using locally long before this. Even more embarrassingly, I'm not a strong enough python programmer to puzzle out how to merge your changes in against mine. As I mentioned when we chatted, my only python coding has been trying to keep this program working enough to use it to produce new deps and dep-sources archives in preparation for a new major version of Emacs. Left to my own devices I would have replaced this script entirely given that recent msys2 updates appear to have invalidated my work toward introspecting (the just compiled) Emacs (replacing the hard-coded DLL_REQ variable). As I'm sure you recall from our chat, we cannot simply use ntdll because the majority of the dependencies are "optional", being loaded at the run-time if available. Since upgrading and updating my msys2 install I'm unable to find a way to launch the Emacs compiled for Windows from the msys2 msys shell in which this python script must run. All of this said, I think your patches are in the right direction and will greatly improve upon what we have. Thus, as the coup de gras of this "pie-in-the-face" escapade, I must reward your hard work by asking for harder and more tedious work still. I'm entirely open to suggestions; the approach I'm prescribing defends against regressions (loss of any fix introduced in the script by me but not pushed to emacs.git that solved some problem we encountered) in consideration of my ignorance of and discomfort with python. I have attached the version of the script that (so far) appears successful for the emacs-30.0.92 set of binaries. If you are willing, I would like you to respin your patch against my version. To restate: the in-tree version from which you based your patches does not work: it will not run on current versions of msys2. If it did run, it would produce results that would be both incorrect and incomplete. For that reason, I don't believe it would be a problem to push the version attached to emacs.git if that makes your work easier. Alternatively, I believe you would be welcome to rewrite as much of the program as you feel necessary, so long as we achieve identical results as I'm able to get from the version I have attached to this message. I will test your work by ensuring that your new/patched version outputs archives are identical to those produced by mine, currently the top two items in this listing: https://alpha.gnu.org/gnu/emacs/pretest/windows/emacs-30/?C=M;O=D As far as I know, I'm the only regular user of this program - given the brokenness I've described I'm fairly confident of that. Should you be motivated toward further work on this, our goal will be fix that - to enable others, by using this script, to more easily comply with GPL when publishing their own builds of Emacs for Windows and to more easily package "complete" Windows binaries distributions of Emacs by using this "turn key" solution for collecting Emacs' dependencies and their corresponding msys2 source archives. Coming back to your patches, themselves, the one "note" I have is that I would prefer not to omit the source-code comments (even where they may be duplicative of the new docstrings you've suggested adding). Again, thank you for your contribution and apologies for the various of my failings that contribute to me being unable, simply, to push them; I will certainly understand if you aren't inclined to invest more time in this and would still welcome your comments and suggestions regarding the best path forward (getting a working version in-tree) in that event. Warm regards, Corwin --000000000000ef084706269417a2 Content-Type: text/plain; charset="US-ASCII"; name="build-dep-zips-30.0.92.py" Content-Disposition: attachment; filename="build-dep-zips-30.0.92.py" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3bz82c00 IyEvdXNyL2Jpbi9weXRob24zCgojIyBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMyBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KCiMjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4K CiMjIEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CiMjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiMjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCgojIyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKIyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyMgYWxv bmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgppbXBvcnQgYXJncGFyc2UKaW1wb3J0IG9zCmltcG9ydCBzaHV0aWwKaW1wb3J0IHJl CmltcG9ydCBzdWJwcm9jZXNzCgpmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGNoZWNrX291dHB1dAoK IyMgQ29uc3RhbnRzCkVNQUNTX01BSk9SX1ZFUlNJT049IG9zLmdldGVudignRU1BQ1NfTUFKT1Jf VkVSU0lPTicpIG9yICIzMCIKCiMgQmFzZSBVUkkgZm9yIHRoZSBwYWNrYWdlIHNvdXJjZXMgbWFw cGVkIGluIFBLR19SRVEKU1JDX1JFUE89Imh0dHBzOi8vcmVwby5tc3lzMi5vcmcvbWluZ3cvc291 cmNlcyIKCiMgTWFwIGl0ZW1zIGluIGBkeW5hbWljLWxpYnJhcnktYWxpc3QnIHRvIHNvdXJjZSBw YWthZ2VzClBLR19SRVE9JycnbWluZ3ctdzY0LXg4Nl82NC1naWZsaWIKbWluZ3ctdzY0LXg4Nl82 NC1nbnV0bHMKbWluZ3ctdzY0LXg4Nl82NC1oYXJmYnV6egptaW5ndy13NjQteDg2XzY0LWphbnNz b24KbWluZ3ctdzY0LXg4Nl82NC1sY21zMgptaW5ndy13NjQteDg2XzY0LWxpYmpwZWctdHVyYm8K bWluZ3ctdzY0LXg4Nl82NC1saWJwbmcKbWluZ3ctdzY0LXg4Nl82NC1saWJyc3ZnCm1pbmd3LXc2 NC14ODZfNjQtbGlid2VicAptaW5ndy13NjQteDg2XzY0LWxpYnRpZmYKbWluZ3ctdzY0LXg4Nl82 NC1saWJ4bWwyCm1pbmd3LXc2NC14ODZfNjQtZ21wCm1pbmd3LXc2NC14ODZfNjQteHBtLW5veApt aW5ndy13NjQteDg2XzY0LXRyZWUtc2l0dGVyCm1pbmd3LXc2NC14ODZfNjQtc3FsaXRlMycnJy5z cGxpdCgpCgojIEVtYWNzIHN0eWxlIHBhdGggdG8gZGVwZW5kYW5jeSBETExzIG9uIGJ1aWxkIHN5 c3RlbQpETExfU1JDPSJjOi9tc3lzNjQvbWluZ3c2NC9iaW4iCgojIGxpYnJhcmllcyB3ZSBuZXZl ciBpbmNsdWRlCkRMTF9TS0lQPVsibGliZ2Njaml0LTAuZGxsIl0KCiMgUmVwb3J0IGZpcnN0IGV4 aXN0aW5nIGZpbGUgZm9yIGVudHJpZXMgaW4gZHluYW1pYy1saWJyYXJ5LWFsaXN0CiMgRUxJU1Bf UFJPRz0iIiIKIyAobWVzc2FnZSAiJXMiIChtYXBjb25jYXQgJ2lkZW50aXR5IChyZW1vdmUgbmls CiMgCShtYXBjYXIgKGxhbWJkYShsaWIpCiMgCQkgIChzZXEtZmluZAojIAkJICAgKGxhbWJkYShm aWxlKQojIAkJICAgICAoZmlsZS1leGlzdHMtcAojIAkJICAgICAgKGZpbGUtbmFtZS1jb25jYXQg Int9IgojIAkJCQkJZmlsZSkpKQojIAkJICAgKGNkciBsaWIpKSkKIyAJCWR5bmFtaWMtbGlicmFy eS1hbGlzdCkKIyAJKSAiXFxuIikpCiMgIiIiLmZvcm1hdChETExfU1JDKQoKIyMgT3B0aW9ucwpE UllfUlVOPUZhbHNlCiMgTkVXX0VNQUNTPSJiaW4vZW1hY3MuZXhlIgoKZGVmIGNoZWNrX291dHB1 dF9tYXliZSgqYXJncywqKmt3YXJncyk6CiAgICBpZihEUllfUlVOKToKICAgICAgICBwcmludCgi Q2FsbGluZzoge317fSIuZm9ybWF0KGFyZ3Msa3dhcmdzKSkKICAgIGVsc2U6CiAgICAgICAgcmV0 dXJuIGNoZWNrX291dHB1dCgqYXJncywqKmt3YXJncykKCiMjIyMjIyMjIyMjIyMjIyMjIyMjCiMj IERMTCBDYXB0dXJlCgojIGVudHJ5IHBvaW50CmRlZiBnYXRoZXJfZGVwcygpOgoKICAgIG9zLm1r ZGlyKCJ4ODZfNjQiKQogICAgb3MuY2hkaXIoIng4Nl82NCIpCgogICAgI2Z1bGw9ZnVsbF9kbGxf ZGVwZW5kZW5jeShpbml0X2RlcHMoKSkKICAgICNmaWx0ZXJlZD1maWx0ZXIobGFtYmRhIHg6IHgg bm90IGluIERMTF9TS0lQLCBmdWxsKQogICAgI3ByaW50KCJmdWxsOiIsZnVsbC5sZW4oKSwgIiBm aWx0ZXJlZDoiLGZpbHRlcmVkLmxlbigpKQogICAgI2V4aXQKCiAgICBmb3IgZGVwIGluIGZ1bGxf ZGxsX2RlcGVuZGVuY3koaW5pdF9kZXBzKCkpOgogICAgICAgIGlmIGRlcCBub3QgaW4gRExMX1NL SVA6CiAgICAgICAgICAgIGlmIGFyZ3MubCAhPSBUcnVlOgogICAgICAgICAgICAgICAgcHJpbnQo IkFkZGluZyBkZXAiLCBkZXApCiAgICAgICAgICAgIGNoZWNrX291dHB1dF9tYXliZShbImNwIC9t aW5ndzY0L2Jpbi97fSAuIi5mb3JtYXQoZGVwKV0sIHNoZWxsPVRydWUpCiAgICAgICAgZWxzZToK ICAgICAgICAgICAgaWYgYXJncy5sICE9IFRydWU6CiAgICAgICAgICAgICAgICBwcmludCgiU2tp cHBpbmcgZGVwIiwgZGVwKQoKICAgIHppcGZpbGU9Ii4uL2VtYWNzLXt9LXt9ZGVwcy56aXAiLmZv cm1hdChFTUFDU19NQUpPUl9WRVJTSU9OLCBEQVRFKQogICAgdG1wZmlsZT0ie30udG1wIi5mb3Jt YXQoemlwZmlsZSkKICAgIHByaW50KCJaaXBwaW5nIGRlcHMgaW4iLCBvcy5nZXRjd2QoKSwgImFz IiwgdG1wZmlsZSkKICAgIGNoZWNrX291dHB1dF9tYXliZSgiemlwIC05dnIge30gKi5kbGwiLmZv cm1hdCh0bXBmaWxlKSwgc2hlbGw9VHJ1ZSkKICAgIGlmIG9zLnBhdGguaXNmaWxlKHppcGZpbGUp OgogICAgICAgIG9zLnJlbW92ZSh6aXBmaWxlKQogICAgb3MucmVuYW1lKHRtcGZpbGUsIHppcGZp bGUpCiAgICBwcmludCgiRGVwcyB1cGRhdGVkIGluIiwgb3MuZ2V0Y3dkKCksICJhcyIsIHppcGZp bGUpCiAgICBvcy5jaGRpcigiLi4vIikKCiMgUmV0dXJuIGRlcGVuZGFuY2llcyBsaXN0ZWQgaW4g RW1hY3MKZGVmIGluaXRfZGVwcygpOgogICAgcmV0dXJuICcnJ2xpYlhwbS1ub3g0LmRsbApsaWJw bmcxNi0xNi5kbGwKbGlianBlZy04LmRsbApsaWJnaWYtNy5kbGwKbGlicnN2Zy0yLTIuZGxsCmxp YndlYnAtNy5kbGwKbGlid2VicGRlbXV4LTIuZGxsCmxpYnNxbGl0ZTMtMC5kbGwKbGliZ2RrX3Bp eGJ1Zi0yLjAtMC5kbGwKbGliZ2xpYi0yLjAtMC5kbGwKbGliZ2lvLTIuMC0wLmRsbApsaWJnb2Jq ZWN0LTIuMC0wLmRsbApsaWJnbnV0bHMtMzAuZGxsCmxpYnhtbDItMi5kbGwKemxpYjEuZGxsCmxp YmxjbXMyLTIuZGxsCmxpYmdjY2ppdC0wLmRsbApsaWJ0cmVlLXNpdHRlci5kbGwnJycuc3BsaXQo KQogICAgIyBqb2JfYXJncz1bTkVXX0VNQUNTLCAiLS1iYXRjaCIsICItLWV2YWwiLCBFTElTUF9Q Uk9HXQogICAgIyAjcHJpbnQoImFyZ3M6ICIsIGpvYl9hcmdzKQogICAgIyByZXR1cm4gc3VicHJv Y2Vzcy5jaGVja19vdXRwdXQoam9iX2FyZ3MsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVAogICAg IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5kZWNvZGUoJ3V0Zi04Jykuc3BsaXRs aW5lcygpCgojIFJldHVybiBhbGwgc2Vjb25kIG9yZGVyIGRlcGVuZGVuY2llcwpkZWYgZnVsbF9k bGxfZGVwZW5kZW5jeShkbGxzKToKICAgIGRlcHMgPSBbZGxsX2RlcGVuZGVuY3koZGVwKSBmb3Ig ZGVwIGluIGRsbHNdCiAgICByZXR1cm4gc2V0KHN1bShkZXBzLCBbXSkgKyBkbGxzKQoKI3hzID0g ZmlsdGVyKGxhbWJkYSB4OiB4LmF0dHJpYnV0ZSA9PSB2YWx1ZSwgeHMpCgojIERlcGVuZGVuY2ll cyBmb3IgYSBnaXZlbiBETEwKZGVmIGRsbF9kZXBlbmRlbmN5KGRsbCk6CiAgICBvdXRwdXQgPSBj aGVja19vdXRwdXQoWyIvbWluZ3c2NC9iaW4vbnRsZGQiLCAiLS1yZWN1cnNpdmUiLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAiL21pbmd3NjQvYmluL3t9Ii5mb3JtYXQoZGxsKV0KICAgICAg ICAgICAgICAgICAgICAgICAgICApLmRlY29kZSgidXRmLTgiKQogICAgIyMgbXVuZ2Ugb3V0cHV0 CiAgICByZXR1cm4gbnRsZGRfbXVuZ2Uob3V0cHV0KQoKZGVmIG50bGRkX211bmdlKG91dCk6CiAg ICBkZXBzID0gb3V0LnNwbGl0bGluZXMoKQogICAgcnRuID0gW10KICAgIGZvciBkZXAgaW4gZGVw czoKICAgICAgICAjIyBPdXRwdXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpcwoKICAgICAgICAj IyBLRVJORUwzMi5kbGwgPT4gQzpcV2luZG93c1xTWVNURU0zMlxLRVJORUwzMi5kbGwgKDB4MDAw MDAwMDAwMmEzMDAwMCkKICAgICAgICAjIyBsaWJ3aW5wdGhyZWFkLTEuZGxsID0+IEM6XG1zeXM2 NFxtaW5ndzY0XGJpblxsaWJ3aW5wdGhyZWFkLTEuZGxsICgweDAwMDAwMDAwMDAwOTAwMDApCgog ICAgICAgICMjIGlmIGl0J3MgdGhlIGZvcm1lciwgd2Ugd2FudCBpdCwgaWYgaXRzIHRoZSBsYXRl ciB3ZSBkb24ndAogICAgICAgIHNwbHQgPSBkZXAuc3BsaXQoKQogICAgICAgIGlmIGxlbihzcGx0 KSA+IDIgYW5kICJtaW5ndzY0IiBpbiBzcGx0WzJdOgogICAgICAgICAgICBydG4uYXBwZW5kKHNw bHRbMF0pCgogICAgcmV0dXJuIHJ0bgoKIyMjIyBTb3VyY2UgQ2FwdHVyZQoKIyMgUGFja2FnZXMg dG8gZmlkZGxlIHdpdGgKIyMgU291cmNlIGZvciBnY2MtbGlicyBpcyBwYXJ0IG9mIGdjYwpTS0lQ X1NSQ19QS0dTPVsibWluZ3ctdzY0LWdjYy1saWJzIl0KU0tJUF9ERVBfUEtHUz1bIm1pbmd3LXc2 NC1nbGliMiIsICJtaW5ndy13NjQtY2EtY2VydGlmaWNhdGVzLTIwMjExMDE2LTMiXQpNVU5HRV9T UkNfUEtHUz17Im1pbmd3LXc2NC1saWJ3aW5wdGhyZWFkLWdpdCI6Im1pbmd3LXc2NC13aW5wdGhy ZWFkcy1naXQifQpNVU5HRV9ERVBfUEtHUz17CiAgICAibWluZ3ctdzY0LXg4Nl82NC1saWJ3aW5w dGhyZWFkIjoibWluZ3ctdzY0LXg4Nl82NC1saWJ3aW5wdGhyZWFkLWdpdCIsCiAgICAibWluZ3ct dzY0LXg4Nl82NC1saWJ0cmUiOiAibWluZ3ctdzY0LXg4Nl82NC1saWJ0cmUtZ2l0IiwKfQpTUkNf RVhUPXsKICAgICJtaW5ndy13NjQtZnJlZXR5cGUiOiAiLnNyYy50YXIuenN0IiwKICAgICJtaW5n dy13NjQtZnJpYmlkaSI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1nbGliMiI6ICIu c3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1oYXJmYnV6eiI6ICIuc3JjLnRhci56c3QiLAog ICAgIm1pbmd3LXc2NC1saWJ1bmlzdHJpbmciOiAiLnNyYy50YXIuenN0IiwKICAgICJtaW5ndy13 NjQtd2lucHRocmVhZHMtZ2l0IjogIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWNhLWNl cnRpZmljYXRlcyI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1saWJ4bWwyIjogIi5z cmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LW5jdXJzZXMiOiAiLnNyYy50YXIuenN0IiwKICAg ICJtaW5ndy13NjQtb3BlbnNzbCI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1wYW5n byI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1weXRob24iOiAiLnNyYy50YXIuenN0 IiwKICAgICJtaW5ndy13NjQtc3FsaXRlMyI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2 NC14cG0tbm94IjogIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LXh6IjogIi5zcmMudGFy LnpzdCIsCiAgICAibWluZ3ctdzY0LWJ6aXAyIjogIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ct dzY0LWNhaXJvIjogIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWV4cGF0IjogIi5zcmMu dGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWZvbnRjb25maWciOiAgIi5zcmMudGFyLnpzdCIsCiAg ICAibWluZ3ctdzY0LWdkay1waXhidWYyIjogICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2 NC1naWZsaWIiOiAgIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWdtcCI6ICAiLnNyYy50 YXIuenN0IiwKICAgICJtaW5ndy13NjQtZ251dGxzIjogICIuc3JjLnRhci56c3QiLAogICAgIm1p bmd3LXc2NC1ncmFwaGl0ZTIiOiAgIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWpiaWdr aXQiOiAgIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWxjbXMyIjogICIuc3JjLnRhci56 c3QiLAogICAgIm1pbmd3LXc2NC1sZXJjIjogICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2 NC1saWJkYXRyaWUiOiAgIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWxpYmZmaSI6ICAi LnNyYy50YXIuenN0IiwKICAgICJtaW5ndy13NjQtbGliaWNvbnYiOiAgIi5zcmMudGFyLnpzdCIs CiAgICAibWluZ3ctdzY0LWxpYmljb252IjogICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2 NC1saWJwbmciOiAgIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWxpYnJzdmciOiAiLnNy Yy50YXIuenN0IiwKICAgICJtaW5ndy13NjQtbGlic3lzdHJlIjogIi5zcmMudGFyLnpzdCIsCiAg ICAibWluZ3ctdzY0LWxpYnRhc24iOiAiLnNyYy50YXIuenN0IiwKICAgICJtaW5ndy13NjQtbGli dGhhaSI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1saWJ0aWZmIjogIi5zcmMudGFy LnpzdCIsCiAgICAibWluZ3ctdzY0LWxpYnRyZS1naXQiOiAiLnNyYy50YXIuenN0IiwKICAgICJt aW5ndy13NjQtbGlid2VicCI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1tcGRlY2lt YWwiOiAiLnNyYy50YXIuenN0IiwKICAgICJtaW5ndy13NjQtbmV0dGxlIjogIi5zcmMudGFyLnpz dCIsCiAgICAibWluZ3ctdzY0LXAxMS1raXQiOiAiLnNyYy50YXIuenN0IiwKICAgICJtaW5ndy13 NjQtcGNyZSI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1waXhtYW4iOiAiLnNyYy50 YXIuenN0IiwKICAgICJtaW5ndy13NjQtcHl0aG9uLXBhY2thZ2luZyI6ICIuc3JjLnRhci56c3Qi LAogICAgIm1pbmd3LXc2NC1yZWFkbGluZSI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2 NC10Y2wiOiAiLnNyYy50YXIuenN0IiwKICAgICJtaW5ndy13NjQtdGVybWNhcCI6ICIuc3JjLnRh ci56c3QiLAogICAgIm1pbmd3LXc2NC10ayI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2 NC10cmVlLXNpdHRlciI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC10emRhdGEiOiAi LnNyYy50YXIuenN0IiwKICAgICJtaW5ndy13NjQtd2luZWRpdGxpbmUiOiAiLnNyYy50YXIuenN0 IiwKICAgICJtaW5ndy13NjQtemxpYiI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC16 c3RkIjogIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWJyb3RsaSI6ICIuc3JjLnRhci56 c3QiLAogICAgIm1pbmd3LXc2NC1nZXR0ZXh0LXJ1bnRpbWUiOiAiLnNyYy50YXIuenN0IiwKICAg ICJtaW5ndy13NjQtbGliZGVmbGF0ZSI6ICIuc3JjLnRhci56c3QiLAogICAgIm1pbmd3LXc2NC1s aWJpZG4yIjogIi5zcmMudGFyLnpzdCIsCiAgICAibWluZ3ctdzY0LWxpYmpwZWctdHVyYm8iOiAi LnNyYy50YXIuenN0IiwKICAgICJtaW5ndy13NjQtbGlidGFzbjEiOiAiLnNyYy50YXIuenN0IiwK ICAgICJtaW5ndy13NjQtcGNyZTIiOiAiLnNyYy50YXIuenN0IiwKfQoKIyMgQ3VycmVudGx5IG5v IHBhY2thZ2VzIHNlZW0gdG8gcmVxdWlyZSB0aGlzIQpBUkNIX1BLR1M9W10KCmRlZiBpbW1lZGlh dGVfZGVwcyhwa2cpOgogICAgcGFja2FnZV9pbmZvID0gY2hlY2tfb3V0cHV0KFsicGFjbWFuIiwg Ii1TaSIsIHBrZ10pLmRlY29kZSgidXRmLTgiKS5zcGxpdCgiXG4iKQoKICAgICMjIEV4dHJhY3Qg dGhlICJEZXBlbmRzIE9uIiBsaW5lCiAgICBkZXBlbmRzX29uID0gW3ggZm9yIHggaW4gcGFja2Fn ZV9pbmZvIGlmIHguc3RhcnRzd2l0aCgiRGVwZW5kcyBPbiIpXVswXQogICAgIyMgUmVtb3ZlICJE ZXBlbmRzIE9uIiBwcmVmaXgKICAgIGRlcGVuZGVuY2llcyA9IGRlcGVuZHNfb24uc3BsaXQoIjoi KVsxXQoKICAgICMjIFNwbGl0IGludG8gZGVwZW5kZW5jaWVzCiAgICBkZXBlbmRlbmNpZXMgPSBk ZXBlbmRlbmNpZXMuc3RyaXAoKS5zcGxpdCgiICIpCgogICAgIyMgUmVtb3ZlID4gc2lnbnMgVE9E TyBjYW4gd2UgZ2V0IGFueSBvdGhlciBwdW5jdHVhdGlvbiBoZXJlPwogICAgZGVwZW5kZW5jaWVz ID0gW2Quc3BsaXQoIj4iKVswXSBmb3IgZCBpbiBkZXBlbmRlbmNpZXMgaWYgZF0KICAgIGRlcGVu ZGVuY2llcyA9IFtkIGZvciBkIGluIGRlcGVuZGVuY2llcyBpZiBub3QgZCA9PSAiTm9uZSJdCgog ICAgZGVwZW5kZW5jaWVzID0gW01VTkdFX0RFUF9QS0dTLmdldChkLCBkKSBmb3IgZCBpbiBkZXBl bmRlbmNpZXNdCiAgICByZXR1cm4gZGVwZW5kZW5jaWVzCgoKIyMgRXh0cmFjdCBhbGwgdGhlIG1z eXMyIHBhY2thZ2VzIHRoYXQgYXJlIGRlcGVuZGVuY2llcyBvZiBvdXIgZGlyZWN0IGRlcGVuZGVu Y2llcwpkZWYgZXh0cmFjdF9kZXBzKCk6CgogICAgcHJpbnQoICJFeHRyYWN0aW5nIGRlcHMiICkK CiAgICAjIEdldCBhIGxpc3Qgb2YgYWxsIGRlcGVuZGVuY2llcyBuZWVkZWQgZm9yIHBhY2thZ2Vz IG1lbnRpb25lZCBhYm92ZS4KICAgIHBrZ3MgPSBQS0dfUkVRWzpdCiAgICBuID0gMAogICAgd2hp bGUgbiA8IGxlbihwa2dzKToKICAgICAgICBzdWJkZXBzID0gaW1tZWRpYXRlX2RlcHMocGtnc1tu XSkKICAgICAgICBmb3IgcCBpbiBzdWJkZXBzOgogICAgICAgICAgICBpZiBub3QgKHAgaW4gcGtn cyBvciBwIGluIFNLSVBfREVQX1BLR1MpOgogICAgICAgICAgICAgICAgcGtncy5hcHBlbmQocCkK ICAgICAgICBuID0gbiArIDEKCiAgICByZXR1cm4gc29ydGVkKHBrZ3MpCgoKZGVmIGRvd25sb2Fk X3NvdXJjZSh0YXJiYWxsKToKICAgIHByaW50KCJBY3F1aXJpbmcge30uLi4iLmZvcm1hdCh0YXJi YWxsKSkKCiAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoIi4uL2VtYWNzLXNyYy1jYWNoZS97fSIu Zm9ybWF0KHRhcmJhbGwpKToKICAgICAgICBwcmludCgiRG93bmxvYWRpbmcge30uLi4iLmZvcm1h dCh0YXJiYWxsKSkKICAgICAgICBjaGVja19vdXRwdXRfbWF5YmUoCiAgICAgICAgICAgICJ3Z2V0 IC1hIC4uL2Rvd25sb2FkLmxvZyAtTyAuLi9lbWFjcy1zcmMtY2FjaGUve30ge30ve30iCiAgICAg ICAgICAgIC5mb3JtYXQodGFyYmFsbCwgU1JDX1JFUE8sIHRhcmJhbGwpLAogICAgICAgICAgICBz aGVsbD1UcnVlCiAgICAgICAgKQogICAgICAgIHByaW50KCJEb3dubG9hZGluZyB7fS4uLiBkb25l Ii5mb3JtYXQodGFyYmFsbCkpCgogICAgcHJpbnQoIkNvcHlpbmcge30gZnJvbSBsb2NhbCIuZm9y bWF0KHRhcmJhbGwpKQogICAgc2h1dGlsLmNvcHlmaWxlKCIuLi9lbWFjcy1zcmMtY2FjaGUve30i LmZvcm1hdCh0YXJiYWxsKSwKICAgICAgICAgICAgICAgICAgICAie30iLmZvcm1hdCh0YXJiYWxs KSkKCgojIyBGZXRjaCBhbGwgdGhlIHNvdXJjZSBjb2RlCmRlZiBnYXRoZXJfc291cmNlKGRlcHMp OgoKICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygiZW1hY3Mtc3JjLWNhY2hlIik6CiAgICAgICAg b3MubWtkaXIoImVtYWNzLXNyYy1jYWNoZSIpCgogICAgb3MubWtkaXIoImVtYWNzLXNyYyIpCiAg ICBvcy5jaGRpcigiZW1hY3Mtc3JjIikKCiAgICBmb3IgcGtnIGluIGRlcHM6CiAgICAgICAgcGtn X25hbWVfYW5kX3ZlcnNpb249IFwKICAgICAgICAgICAgY2hlY2tfb3V0cHV0KFsicGFjbWFuIiwi LVEiLCBwa2ddKS5kZWNvZGUoInV0Zi04Iikuc3RyaXAoKQoKICAgICAgICAjIyBQcm9kdWNlcyBv dXRwdXQgbGlrZToKICAgICAgICAjIyBtaW5ndy13NjQteDg2XzY0LXpsaWIgMi40My4yCiAgICAg ICAgcGtnX25hbWVfY29tcG9uZW50cyA9IHBrZ19uYW1lX2FuZF92ZXJzaW9uLnNwbGl0KCkKICAg ICAgICBwa2dfbmFtZT1wa2dfbmFtZV9jb21wb25lbnRzWzBdCiAgICAgICAgcGtnX3ZlcnNpb249 cGtnX25hbWVfY29tcG9uZW50c1sxXQoKICAgICAgICAjIyBzb3VyY2UgcGtncyBkb24ndCBoYXZl IGFuIGFyY2hpdGVjdHVyZSBpbiB0aGVtCiAgICAgICAgcGtnX25hbWUgPSByZS5zdWIociJ4ODZf NjQtIiwiIixwa2dfbmFtZSkKCiAgICAgICAgaWYocGtnX25hbWUgaW4gU0tJUF9TUkNfUEtHUyk6 CiAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICMjIFN3aXRjaCBuYW1lcyBpZiBuZWNlc3Nh cnkKICAgICAgICBwa2dfbmFtZSA9IE1VTkdFX1NSQ19QS0dTLmdldChwa2dfbmFtZSxwa2dfbmFt ZSkKCiAgICAgICAgIyMgc3JjIGFyY2hpdmUgaXMgdXN1YWxseSBhIC50YXIuZ3oKICAgICAgICBp ZiBwa2dfbmFtZSBpbiBTUkNfRVhULmtleXMoKToKICAgICAgICAgICAgc3JjX2V4dCA9IFNSQ19F WFRbcGtnX25hbWVdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3JjX2V4dCA9ICIuc3JjLnRh ci5neiIKCiAgICAgICAgdGFyYmFsbCA9ICJ7fS17fXt9Ii5mb3JtYXQocGtnX25hbWUscGtnX3Zl cnNpb24sc3JjX2V4dCkKCiAgICAgICAgZG93bmxvYWRfc291cmNlKHRhcmJhbGwpCgogICAgc3Jj emlwPSIuLi9lbWFjcy17fS17fWRlcHMtbWluZ3ctdzY0LXNyYy56aXAiLmZvcm1hdChFTUFDU19N QUpPUl9WRVJTSU9OLERBVEUpCiAgICB0bXB6aXA9Int9LnRtcCIuZm9ybWF0KHNyY3ppcCkKICAg IHByaW50KCJaaXBwaW5nIERzcmMgaW4iLCBvcy5nZXRjd2QoKSwgImFzIiwgdG1wemlwKQogICAg Y2hlY2tfb3V0cHV0X21heWJlKCJ6aXAgLTkge30gKiIuZm9ybWF0KHRtcHppcCksIHNoZWxsPVRy dWUpCiAgICBpZiBvcy5wYXRoLmlzZmlsZShzcmN6aXApOgogICAgICAgIG9zLnJlbW92ZShzcmN6 aXApCiAgICBvcy5yZW5hbWUodG1wemlwLCBzcmN6aXApCiAgICBwcmludCgiRHNyYyB1cGRhdGVk IGluIiwgb3MuZ2V0Y3dkKCksICJhcyIsIHNyY3ppcCkKCiAgICBvcy5jaGRpcigiLi4iKQoKCmRl ZiBjbGVhbigpOgogICAgcHJpbnQoIkNsZWFuaW5nIikKICAgIG9zLnBhdGguaXNkaXIoImVtYWNz LXNyYyIpIGFuZCBzaHV0aWwucm10cmVlKCJlbWFjcy1zcmMiKQogICAgb3MucGF0aC5pc2Rpcigi eDg2XzY0IikgYW5kIHNodXRpbC5ybXRyZWUoIng4Nl82NCIpCiAgICBvcy5wYXRoLmlzZmlsZSgi ZG93bmxvYWQubG9nIikgYW5kIG9zLnJlbW92ZSgiZG93bmxvYWQubG9nIikKCgppZihvcy5lbnZp cm9uWyJNU1lTVEVNIl0gIT0gIk1TWVMiKToKICAgIHByaW50KCJSdW4gdGhpcyBzY3JpcHQgaW4g YW4gTVNZUy1zaGVsbCEiKQogICAgZXhpdCgxKQoKCnBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50 UGFyc2VyKCkKCiNwYXJzZXIuYWRkX2FyZ3VtZW50KCJlbWFjcyIsIGhlbHA9ImVtYWNzIGV4ZWN1 dGFibGUiKQoKcGFyc2VyLmFkZF9hcmd1bWVudCgiLXMiLCBoZWxwPSJzbmFwc2hvdCBidWlsZCIs CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIikKCnBhcnNlci5hZGRfYXJn dW1lbnQoIi1yIiwgaGVscD0ic291cmNlIGNvZGUgb25seSIsCiAgICAgICAgICAgICAgICAgICAg YWN0aW9uPSJzdG9yZV90cnVlIikKCnBhcnNlci5hZGRfYXJndW1lbnQoIi1jIiwgaGVscD0iY2xl YW4gb25seSIsCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIikKCnBhcnNl ci5hZGRfYXJndW1lbnQoIi1kIiwgaGVscD0iZHJ5IHJ1biIsCiAgICAgICAgICAgICAgICAgICAg YWN0aW9uPSJzdG9yZV90cnVlIikKCnBhcnNlci5hZGRfYXJndW1lbnQoIi1sIiwgaGVscD0ibGlz dCBkZXBlbmRlbmNpZXMiLAogICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIp CgpwYXJzZXIuYWRkX2FyZ3VtZW50KCItZSIsIGhlbHA9ImV4dHJhY3QgZGlyZWN0IGRlcGVuZGFu Y2llcyIsCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIikKCmFyZ3MgPSBw YXJzZXIucGFyc2VfYXJncygpCmRvX2FsbD1ub3QgKGFyZ3MuYyBvciBhcmdzLnIpCgojTkVXX0VN QUNTPWFyZ3MuZW1hY3MKCkRSWV9SVU49YXJncy5kCgppZiggYXJncy5lICk6CiAgICBwcmludCgi XG4iLmpvaW4oaW5pdF9kZXBzKCkpKQoKaWYoIGFyZ3MubCApOgogICAgcHJpbnQoIkxpc3Qgb2Yg ZGVwZW5kZW5jaWVzOiIpCiAgICBwcmludChmdWxsX2RsbF9kZXBlbmRlbmN5KGluaXRfZGVwcygp KSkKICAgIHByaW50KCJMaXN0IG9mIHNvdXJjZSBwYWNrYWdlczoiKQogICAgcHJpbnQoIGV4dHJh Y3RfZGVwcygpICkKCmlmKCBhcmdzLmUgb3IgYXJncy5sICk6CiAgICBleGl0KDApCgppZiBhcmdz LnM6CiAgICBEQVRFPSJ7fS0iLmZvcm1hdChjaGVja19vdXRwdXQoWyJkYXRlIiwgIislWS0lbS0l ZCJdKS5kZWNvZGUoInV0Zi04Iikuc3RyaXAoKSkKZWxzZToKICAgIERBVEU9IiIKCmlmKCBkb19h bGwpOgogICAgZ2F0aGVyX2RlcHMoKQoKaWYoIGRvX2FsbCBvciBhcmdzLnIgKToKICAgIGRlcHM9 ZXh0cmFjdF9kZXBzKCkKICAgIGdhdGhlcl9zb3VyY2UoZGVwcykKCmlmKCBhcmdzLmMgKToKICAg IGNsZWFuKCkK --000000000000ef084706269417a2--