From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: fatiparty--- via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#52319: imenu not detecting every bash function Date: Sun, 5 Dec 2021 22:58:06 +0100 (CET) Message-ID: Reply-To: fatiparty@tutanota.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_88295_26866892.1638741486440" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23197"; mail-complaints-to="usenet@ciao.gmane.io" To: 52319@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Dec 05 23:03:29 2021 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 1mtzbU-0005qM-0m for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 05 Dec 2021 23:03:28 +0100 Original-Received: from localhost ([::1]:53000 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mtzbT-0005Vl-0L for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 05 Dec 2021 17:03:27 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:56098) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mtzb5-0005V0-Gf for bug-gnu-emacs@gnu.org; Sun, 05 Dec 2021 17:03:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:48353) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mtzb5-0006Gb-6h for bug-gnu-emacs@gnu.org; Sun, 05 Dec 2021 17:03:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mtzb5-00012x-3P for bug-gnu-emacs@gnu.org; Sun, 05 Dec 2021 17:03:03 -0500 X-Loop: help-debbugs@gnu.org Resent-From: fatiparty@tutanota.com Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 05 Dec 2021 22:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 52319 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.16387417673982 (code B ref -1); Sun, 05 Dec 2021 22:03:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 5 Dec 2021 22:02:47 +0000 Original-Received: from localhost ([127.0.0.1]:59897 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtzao-000129-Kb for submit@debbugs.gnu.org; Sun, 05 Dec 2021 17:02:46 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:53734) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtzWN-0000tT-Bw for submit@debbugs.gnu.org; Sun, 05 Dec 2021 16:58:11 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:54952) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mtzWM-0004Z9-BH for bug-gnu-emacs@gnu.org; Sun, 05 Dec 2021 16:58:11 -0500 Original-Received: from w1.tutanota.de ([81.3.6.162]:44332) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mtzWK-0005ag-7L for bug-gnu-emacs@gnu.org; Sun, 05 Dec 2021 16:58:10 -0500 Original-Received: from w3.tutanota.de (unknown [192.168.1.164]) by w1.tutanota.de (Postfix) with ESMTP id 70BA4FA0325 for ; Sun, 5 Dec 2021 21:58:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1638741486; s=s1; d=tutanota.com; h=From:From:To:To:Subject:Subject:Content-Description:Content-ID:Content-Type:Content-Type:Content-Transfer-Encoding:Cc:Date:Date:In-Reply-To:MIME-Version:MIME-Version:Message-ID:Message-ID:Reply-To:References:Sender; bh=iZmHahjUjyllwewx5u2JdbETKYfDDyDdbbcHvrwZ7RU=; b=uDPtVxcUTdY/9843X/9nkHWuYKpazzvap4cEOQq4WrgV0zCB+pQFDhD+juOw51mX 52zm5AMRcDgS5iLN6V68743fAy4jrlnK2K8L0wOkpP+bWQ6WKTT4brIMT2u9/h+7kJU FR7EOCW3fXr2EBBa248AElMqyxqVSHjmy1BZK0FAHiu6tngsPSjkellpmMuKZ+4LYkM +64pSHwkhfiCc3Ci8Y7/BOK2T5eOPagPSxMdYGLlAe36+8KYLWbe8yzo3SOypfz0Ncc TPmdsi2s5Fiw4qi9mxYdKnPpDccbog91l6vmWIDxvWliIMsN1+3ssgVjH5acsQ64Nop lpe7dvjXLw== Received-SPF: pass client-ip=81.3.6.162; envelope-from=fatiparty@tutanota.com; helo=w1.tutanota.de 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, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sun, 05 Dec 2021 17:02:46 -0500 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:221673 Archived-At: ------=_Part_88295_26866892.1638741486440 Content-Type: multipart/alternative; boundary="----=_Part_88296_1510268902.1638741486440" ------=_Part_88296_1510268902.1638741486440 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I am loading the attached bash file but imenu is not showing all the declar= ed bash functions in the file, it only shows PF(), PFB(), PF2(), and pfm.= =C2=A0 This has also the consequence of not displaying all functions in spe= edbar. File is attached. Fati ------=_Part_88296_1510268902.1638741486440 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit

I am loading the attached bash file but imenu is not showing all the declared bash functions in the file, it only shows PF(), PFB(), PF2(), and pfm.  This has also the consequence of not displaying all functions in speedbar.

File is attached.

Fati
------=_Part_88296_1510268902.1638741486440-- ------=_Part_88295_26866892.1638741486440 Content-Type: application/x-shellscript; name=linge-copy.sh Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=linge-copy.sh IyEvYmluL2Jhc2gKCiMgTW9kZTogcmVjCiMgRmlsZTogbGluZ2UucmMgVmVyc2lvbiAxLjAKIyBC cmllZjogYmFzaCBjb21tYW5kcyBjYWxsZWQgZnJvbSAuYmFzaHJjIGZpbGUuCiMgQXV0aG9yOiBT dHJhdGVnaXN0IENocmlzdG9waGVyIERpbWVjaAojIENvcHlyaWdodDogMjAyMSBTdHJhdGVnaXN0 IENocmlzdG9waGVyIERpbWVjaAojIExpY2Vuc2U6IEdudSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMg TGljZW5zZSAoR251IEFHUEwpCiMgKyBWZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24uCiMg IyBFbmQgb2YgcmVjCgojIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CgojIyBoMSAqIENvcHlpbmcgQ29uZGl0aW9ucwoKIyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICAgICAKIyAgX18gX19fIF8gX18gXyAg XyAgIF9fIF9fXyBfIF8gIF9ffCB8XyBfICAKIyAvIF8vIF8gXCAnXyBcIHx8IHwgLyBfLyBfIFwg JyBcLyBfYCB8ICcgXCAKIyBcX19cX19fLyAuX18vXF8sIHwgXF9fXF9fXy9ffHxfXF9fLF98X3x8 X3wKIyAgICAgICAgfF98ICAgfF9fLyAgICAgICAgICAgICAgICAgICAgICAgICAKCiMgVGhpcyBm aWxlIGJlbG9uZ3MgdG8gQmVoaXN0dW4sIGEgR251IFBhY2thZ2UuCgojIEJlaGlzdHVuIGlzIGZy ZWUgc29mdHdhcmUuICBZb3UgY2FuIHJlLWRpc3RyaWJ1dGUgQmVoaXN0dW4gYXMgaXMsIG9yCiMg bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR251IEFmZmVybyBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCiMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YKIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KCiMgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGlu IHRoZSBmaWxlICJnbnUtLWFncGwudGV4aSIuICBJZgojIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIyBoMSAqIENvbW1lbnRhcnk6CgojIFRoZSAuYmFz aHJjIGZpbGUgcnVucyBldmVyeSBhbiBpbnRlcmFjdGl2ZSBzaGVsbCBpcyBsYXVuY2hlZC4KIyBC YXNoIGFsbG93cyBoeXBoZW5zIGluIGZ1bmN0aW9uIG5hbWVzLCBidXQgbm90IGluIC0tcG9zaXgg bW9kZS4KCiMgQSBudW1iZXIgb2YgY2hlY2tib3hlcyBhcmUgZGlzcGxheWVkIGluIHRoaXMgZmls ZS4gIFRoZXkgc3BsaXQgdGhlCiMgc2V0dXAgdGFza3MgZm9yIHRoZSB1c2VyIGludG8gc2ltcGxl IHN0ZXBzLiAgV2hlbiBhIGpvYiBpcwojIGNvbXBsZXRlZCwgdHlwZSB0aGUgQ2FwaXRhbCBVcHBl cmNhc2UgWCBpbnNpZGUgdGhlIGNoZWNrYm94LAojIGkuZS4gY2hhbmdpbmcgdGhlIGNoZWNrYm94 IHRhZyBmcm9tIFsgXSB0byBbWF0uICBUaGUgJ1swLzVdJyBpbiB0aGUKIyBUT0RPIE91dGxpbmUg aW5kaWNhdGVzIGhvdyBtYW55IGpvYnMgd2l0aCBjaGVja2JveGVzIGhhdmUgYmVlbgojIGNvbXBs ZXRlZCwgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YgY2hlY2tib3hlcyBwcmVzZW50LiAgT25jZSBh bGwKIyBjaGVja2JveGVzIGFyZSBjb21wbGV0ZWQsIGNoYW5nZSB0aGUgIlRPRE8iIEl0ZW0gd2l0 aCBhICJET05FIiBJdGVtCiMgYnkgcmVtb3ZpbmcgdGhlIHdvcmQgIlRPRE8iIHdpdGggIkRPTkUi LgoKIyAqIFRPRE8gVXNlciBkZWZpbmVkIHNldHVwIGpvYnMgWzAvNV0KIyAgIC0gWyBdIGRpcmNv bG9ycyAtIFNldCBkaXJlY3RvcnkgcGF0aCBhbmQgZmlsZSBuYW1lCiMgICAtIFsgXSB4bW9kbWFw IC0gU2V0IGRpcmVjdG9yeSBwYXRoIGFuZCBmaWxlIG5hbWUKIyAgICAgICAgIEludGVyY2hhbmdl cyBDdHJsIHdpdGggQWx0IGtleSBieSBtb2RpZnlpbmcga2V5bWFwcyBpbiBYb3JnLgojICAgLSBb IF0gU2V0IHN0YXJ0aW5nIGRpcmVjdG9yeSBmb3IgdGhlIENvbW1hbmQgTGluZSBUZXJtaW5hbC4K CiMgQ29kZToKCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCgpQRiAoKQp7CiBwcmludGYgIiVzXG4iICIkQCIKfQoKIyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKClBGQiAoKQp7CiBsb2Nh bCAtciBibHU9JCh0cHV0IGJvbGQpJCh0cHV0IHNldGFmIDM5KQogbG9jYWwgLXIgc2dyPSQodHB1 dCBzZ3IwKQogcHJpbnRmICIlcyIgICAiJGJsdSIKIHByaW50ZiAiJXNcbiIgIiRAIiAKIHByaW50 ZiAiJXMiICAgIiRzZ3IiCn0KCiMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCgpQRjIgKCkKewogcHJpbnRmICIlc1xuXG4iICIkQCIKfQoKIyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKCmxp bmdlLWhlYWRpbmctdXNhZ2UgKCkKewogcHJpbnRmICclc1xuJyAibGluZ2UtaGVhZGluZy11c2Fn ZSAuJCouICQjIgogaWYgKCggJCMgPT0gMCApKTsgdGhlbgogICBQRiAiRGlzcGxheSBhIGhlYWRp bmciCiAgIGVjaG8KICAgUEYgIiAgbGluZ2UtaGVhZGluZyBbT1BUSU9OU10gSEVBRElORyIKICAg ZWNobwogICBQRiAiR2VuZXJpYyBQcm9ncmFtIEluZm9ybWF0aW9uIgogICBQRiAiLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIgogICBQRiAiIiAiLXUxICAgQnJpZWYgbGlzdCBvZiBvcHRpb25z IgogICBQRiAgICAiLXUyICAgQnJpZWYgbGlzdCBvZiBleGFtcGxlcyIKIGZpCgogY2FzZSAkMSBp bgogICgxKQogICAgIFBGICIgey12IFZCLCAtdj1WQiwgLXZWQiwgLS12ZXJib3NpdHkgVkIsIC0t dmVyYm9zaXR5PVZCfSIKICAgICBQRiAiIHstaCwgLS1oZWxwfSwgey11LCAtLXVzYWdlfSwgey1W LCAtLXZlcnNpb259IgogICAgIDs7CiAgKDIpCiAgICAgUEYgIiIgCiAgICAgOzsKIGVzYWMKfQoK IyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK CmxpbmdlLWhlYWRpbmcgKCkKewogbG9jYWwgLXIgZXRkYXRlPSJWMDEgSnVsIDIwMjEgV2syNyIg CiBsb2NhbCAtciBhdXRob3I9IlN0cmF0ZWdpc3QgQ2hyaXN0b3BoZXIgRGltZWNoIgoKIGlmICgo ICQjID09IDAgKSk7IHRoZW4KICAgcHJpbnRmICclc1xuJyAiRGlzcGxheSBoZWFkaW5nIgogICBw cmludGYgIiVzXG4iICIkZXRkYXRlICRhdXRob3IiCiAgIHByaW50ZiAnJXNcbicgIkludm9rZSBc YGxpbmdlLWhlYWRpbmcgLWgnIGZvciBkZXRhaWxzLCIKICAgcHJpbnRmICclc1xuJyAib3IgXGBs aW5nZS1oZWFkaW5nIC11JyBmb3IgYSBzdW1tYXJ5LiIKIGZpCgogbG9jYWwgY29tcGFjdD0wIGVt cGg9MAogd2hpbGUgKCggJCMgPiAwICkpOyBkbwogICBjYXNlICQxIGluCiAgICAoIi1WInwiLS12 ZXJzaW9uIikKICAgICAgcHJpbnRmICIlc1xuIiAiJGV0ZGF0ZSAkYXV0aG9yIgogICAgICByZXR1 cm4gMAogICAgICA7OwogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgKCIt diJ8Ii0tdmVyYm9zaXR5IikgIHZiPSIkMiIgOyBzaGlmdCA7IHNoaWZ0IDs7CiAgICAoIi12PSIq fCItLXZlcmJvc2l0eT0iKikgdmI9IiR7MSMqPX0iIDsgc2hpZnQgMSA7OwogICAgKCItdiIqKSB2 Yj0iJHsxIy12fSIgOyBzaGlmdCAxIDs7CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgICAoIi1oInwiLS1oZWxwIikKICAgICAgbGluZ2UtaGVhZGluZy1kZXRhaWxzCiAgICAg IHJldHVybiAwCiAgICAgIDs7CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg ICAoIi11InwiLS11c2FnZSIpCiAgICAgIGlmIFtbICIkMiIgPX4gXlswMTIzNDU2Nzg5XSskIF1d OyB0aGVuCiAgICAgICAgdXNnPSIkMiIgOyBzaGlmdCA7IHNoaWZ0CiAgICAgICAgcHJpbnRmICcl c1xuJyAidXNnOiAuJHVzZy4iCiAgICAgICAgbGluZ2UtaGVhZGluZy11c2FnZSAiJHVzZyIKICAg ICAgZWxzZQogICAgICAgIHNoaWZ0CiAgICAgICAgcHJpbnRmICclc1xuJyAidXNnOiAuJHVzZy4i CiAgICAgICAgbGluZ2UtaGVhZGluZy11c2FnZSAiJHVzZyIKICAgICAgZmkKICAgICAgcmV0dXJu IDAKICAgICAgOzsKICAgICgiLXU9Iip8Ii0tdXNhZ2U9IiopCiAgICAgIHVzZz0iJHsxIyo9fSIg OyBzaGlmdCAxCiAgICAgIGxpbmdlLWhlYWRpbmctdXNhZ2UgIiR1c2ciCiAgICAgIHJldHVybiAw CiAgICAgIDs7CiAgICAoIi11IiopCiAgICAgIHVzZz0iJHsxIy11fSIgOyBzaGlmdCAxCiAgICAg IGxpbmdlLWhlYWRpbmctdXNhZ2UgIiR1c2ciCiAgICAgIHJldHVybiAwCiAgICAgIDs7CiAgICAj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi1jIikgY29tcGFjdD0xIDsgc2hp ZnQgMSA7OwogICAgKCItZSIpIGVtcGg9MSAgICA7IHNoaWZ0IDEgOzsKICAgICgqKSBicmVhayA7 OwogICBlc2FjCiBkb25lCgogbG9jYWwgLXIgdGl0bD0iJDEiCgogbG9jYWwgbWFyaz0iKiIKIGlm ICgoICQjID4gMSApKTsgdGhlbiBtYXJrPSIkMiI7IGZpCgogIyBTY291dDogVXNpbmcgOjo6R3Vu Z2E6RGluIGFzIGlucHV0LCB3aXRoIDogaW5zdGVhZCBvZiBibGFua3MKIGxvY2FsIC1yIHByZWZp eD0kezElJVshWzpibGFuazpdXSp9ICAjIDo6OgoKICMgdHJpbSBpbnB1dCB0byByZW1vdmUgbGVh ZGluZyBibGFua3MKIGxvY2FsIC1yIHRyaW1hcmc9JHsxIyIkcHJlZml4In0gICAgICAjICdHdW5n YTpEaW4nCiAKICMjIFNldCBlbXBoYXNpc2luZyBtYXJrIHVzaW5nICoKICMgIFRoZSAvLyBpbnN0 cnVjdGlvbiByZXBsYWNlcyBhbGwgc2luZ2xlIGNoYXJhY3RlciBtYXRjaGVzIHdpdGggKgogIyAg VGhlID8gaW5zdHJ1Y3Rpb24gbWF0Y2hlcyBhbGwgc2luZ2xlIGNoYXJhY3RlcnMKIGxvY2FsIC1y IGVtcGhtcms9IiR7dHJpbWFyZy8vPy8kbWFya30iICAgIyAnKioqKioqKioqJwogCiAoKCBjb21w YWN0ID09IDAgKSkgJiYgZWNobwogaWYgKCggZW1waCA9PSAxICkpOyB0aGVuCiAgIHByaW50ZiAn JXNcbiVzXG4nICIkMSIgIiR7cHJlZml4fSR7ZW1waG1ya30iCiBlbHNlCiAgIHByaW50ZiAnJXNc bicgIiR0aXRsIgogZmkKICgoIGNvbXBhY3QgPT0gMCApKSAmJiBlY2hvCgp9CgphbGlhcyBIREc9 J2xpbmdlLWhlYWRpbmcgLWUnCgojICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwoKbGluZ2UtbmV3bGluZSAoKQp7CiBpbXBsPSJlY2hvIgogaWYg WyAiJGltcGwiID0gImVjaG8iIF07IHRoZW4gICMgW10gaXMgcG9zaXggc2hlbGwgY29tcGxpYW50 CiAgIGVjaG8KIGVsc2UgICAgCiAgIHByaW50ZiAnJXNcbicgIiIKIGZpCn0KCmFsaWFzIE5XTD0n bGluZ2UtaGVhZGluZyAtZScKCiMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCgpsaW5nZV90cms9IiR7SE9NRX0vT3BzdGsvYmluL2d1bmdhZGlu LTEuMC9saW5nZSIKc291cmNlICIke2xpbmdlX3Rya30vZ3Vuc3RlYnkvbGluZ2UtbnltcGgucmMi CgojICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwoKbGluZ2UtZGV0YWlscy1udW1lcmljICgpCnsKIGZtdD0iXG4lc1xuIiBmbXQrPSJcbiIKIHBy aW50ZiAiJGZtdCIgIlZhbGlkYXRlcyBudW1lcmljIG5vdGF0aW9uLiIgCgogcHJpbnRmICclc1xu JyBsaW5nZS1udW1lcmljIFtPUFRJT05TXSAKIAogSERHICJGdW5jdGlvbiBEZXRhaWxzIgoKIFBG ICIgLVYsIC0tdmVyc2lvbiwgLXUsIC0tdXNhZ2UsIC1oLCAtLWhlbHAiCgogUEZIICIgLWYgU1RZ LCAtLWZtdD1TVFkiCiBQRiAgIiAgICBGb3JtYXQgc3R5bGUuIgoKIFBGSCAiICAgIFNUWSB8IERl c2NpcHRpb24iCiBQRiAgIiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIgogUEYgICIgICAgRiAgIHwgRml4ZWQtcG9pbnQgbnVtYmVyIG5vdGF0aW9uIgogUEYg ICIgICAgcEYgIHwgUG9zaXRpdmUgZml4ZWQtcG9pbnQgbm90YXRpb24iCiBQRiAgIiAgICBuRiAg fCBOZWdhdGl2ZSBmaXhlZC1wb2ludCBub3RhdGlvbiIKIFBGICAiICAgIEUgICB8IEZsb2F0aW5n LXBvaW50IG51bWJlciBub3RhdGlvbiIKIFBGICAiICAgIHBFICB8IFBvc2l0aXZlIGZsb2F0aW5n LXBvaW50IG5vdGF0aW9uIgogUEYgICIgICAgbkUgIHwgTmVnYXRpdmUgZmxvYXRpbmctcG9pbnQg bm90YXRpb24iICIiCgogUEYgIlwkMSBOVU0gIEZpcnN0IG51bWVyaWMgbnVtYmVyLiIKIFBGICJc JDIgTlVNICBTZWNvbmQgbnVtZXJpYyBudW1iZXIuIgoKfQoKIyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKCmxpbmdlLXVzYWdlLW51bWVyaWMg KCkKewogY2FzZSAkMSBpbgogICgxKQogICAgIFBGICIgey1WLCAtLXZlcnNpb259LCB7LWgsIC0t aGVscH0sIHstdSwgLS11c2FnZX0iCiAgICAgUEYgIiB7LXYgVkIsIC12PVZCLCAtdlZCLCAtLXZl cmJvc2l0eSBWQiwgLS12ZXJib3NpdHk9VkJ9IgogICAgIFBGICIgey1mIEZSTVQsIC0tZnJtdCBG Uk1UfSB8IEZSTVQ6IFtJfEZ8cEZ8bkZ8RXxwRXxuRV0iCiAgICAgUEYgIiB7LS1pbXBsIElNUEws IC0taW1wbD1JTVBMfSB8IElNUEw6IFtyZWdleHB8c2hnbG9iXSIKICAgICBQRiAiIC1vIgogICAg IDs7CiAgKDIpCiAgICAgSERHICJVc2FnZSIKICAgICBQRjIgIiBQcmludCByZXN1bHQgaW4gdGV4 dCBmb3JtYXQgd2l0aCAtbyIKICAgICBQRiAgIiBsaW5nZS1udW1lcmljIC1vIDIuMTQzICAgICAg fCBSZXN1bHQ6IDEiCiAgICAgUEYgICIgbGluZ2UtbnVtZXJpYyAtbyAyLjE0M0UrMDcgIHwgUmVz dWx0OiAxIgogICAgIFBGICAiIGxpbmdlLW51bWVyaWMgLW8gMi4xNDNFLTAyICB8IFJlc3VsdDog MSIKICAgICBQRiAgIiBsaW5nZS1udW1lcmljIC1vIC1JIDM0ICAgICAgfCBSZXN1bHQ6IDEiCgog ICAgIGVjaG8KICAgICBQRiAiIHZhbGlkbnVtPVwkKCBsaW5nZS1udW1lcmljIC1vIC1JIDMgKSIK ICAgICA7OwogICgzKQogICAgIEhERyAiQ29uZGl0aW9uYWwgRXhwcmVzc2lvbiIKICAgICBQRiAi IG51bT1cIjNcIiIgCiAgICAgUEYgIiBpZiBsaW5nZS1udW1lcmljIC1JIFwiXCRudW1cIiIgCiAg ICAgUEYgIiB0aGVuIgogICAgIFBGICIgICAjIGNvZGUgaWYgbnVtIGlzIG51bWVyaWMiCiAgICAg UEYgIiBlbHNlIgogICAgIFBGICIgICAjIGNvZGUgaWYgbnVtIGlzIG5vdCBudW1lcmljIgogICAg IFBGICIgZmkiCiAgICAgOzsKIGVzYWMKCn0KCiMgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CgpsaW5nZS1udW1lcmljICgpCnsKIGxvY2FsIC1y IGV0ZGF0ZT0iVjAxIEp1bCAyMDIxIFdrMjciIAogbG9jYWwgLXIgYXV0aG9yPSJTdHJhdGVnaXN0 IENocmlzdG9waGVyIERpbWVjaCIKIAogbG9jYWwgdmI9MSBmbT0iRSIgaW1wbD0icmVnZXhwIgog bG9jYWwgb3V0dmFsPTAgbGVkZXNjdmFsPTAgZXJybnVtPTAgbGVkZXNjPSgpCgogbG9jYWwgaW5k aWM9MCAgICMgaW5kaWNhdG9yCiBsb2NhbCBlcnJudW09MSAgIyBudW1lcmljIGVycm9yIGNvZGUK CiAoKCAkIyA9PSAwICkpICYmIFBGICJJbnZva2UgXGBsaW5nZS1udW1lcmljIC1oJyBmb3IgZGV0 YWlscy4iCiAKIGxvY2FsIG91dHZhbD0wCiB3aGlsZSAoKCAkIyA+IDAgKSk7IGRvCiAgIG9wdD0i JDEiCiAgIGNhc2UgJG9wdCBpbgogICAgKCItViJ8Ii0tdmVyc2lvbiIpCiAgICAgIHByaW50ZiAi JXNcbiIgIiRldGRhdGUgJGF1dGhvciIKICAgICAgcmV0dXJuIDAKICAgICAgOzsKICAgICMgLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgICgiLXYifCItLXZlcmJvc2l0eSIpICB2Yj0i JDIiIDsgc2hpZnQgOyBzaGlmdCA7OwogICAgKCItdj0iKnwiLS12ZXJib3NpdHk9IiopIHZiPSIk ezEjKj19Ijsgc2hpZnQgMSA7OwogICAgKCItdiIqKSB2Yj0iJHsxIy12fSI7IHNoaWZ0IDEgOzsK ICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgICgiLWgifCItLWhlbHAiKQog ICAgICBsaW5nZS1kZXRhaWxzLW51bWVyaWMKICAgICAgcmV0dXJuIDAKICAgICAgOzsKICAgICgi LXUifCItLXVzYWdlIikKICAgICAgUEYgImxpbmdlLW51bWVyaWMgT1BUSU9OUyBOVU0iCiAgICAg IGxpbmdlLXVzYWdlLW51bWVyaWMgIiR2YiIKICAgICAgcmV0dXJuIDAKICAgICAgOzsKICAgICMg Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgICgiLW8iKSBvdXR2YWw9MSA7IHNoaWZ0 IDEgOzsKICAgICgiLS1sZWRlc2MiKSBsZWRlc2N2YWw9MSA7IG91dHZhbD0xIDsgc2hpZnQgMSA7 OwogICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogICAgKCItZiJ8Ii0tZnJtdCIp IGZtPSIkMiIgOyBzaGlmdCA7IHNoaWZ0IDs7CiAgICAoIi1mPSIqfCItLWZybXQ9IiopIGZtPSIk ezEjKj19IiA7IHNoaWZ0IDEgOzsKICAgICgiLS1pbXBsIikgaW1wbD0iJDIiOyBzaGlmdCA7IHNo aWZ0IDs7CiAgICAoIi0taW1wbD0iKikgaW1wbD0iJHsxIyo9fSI7IHNoaWZ0IDEgOzsKICAgICMg Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgICgiLUkiKSAgZm09IkkiICA7IHNoaWZ0 IDEgOzsKICAgICgiLUlwIikgZm09IklwIiA7IHNoaWZ0IDEgOzsKICAgICgiLUluIikgZm09Iklu IiA7IHNoaWZ0IDEgOzsKICAgICgiLUYiKSAgZm09IkYiICA7IHNoaWZ0IDEgOzsKICAgICgiLUZw IikgZm09IkZwIiA7IHNoaWZ0IDEgOzsKICAgICgiLUZuIikgZm09IkZuIiA7IHNoaWZ0IDEgOzsK ICAgICgiLUUiKSAgZm09IkUiICA7IHNoaWZ0IDEgOzsKICAgICgiLUVwIikgZm09IkVwIiA7IHNo aWZ0IDEgOzsKICAgICgiLUVuIikgZm09IkVuIiA7IHNoaWZ0IDEgOzsKICAgICMgLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4KICAgICgiLS0iKQoJICAgc2hpZnQgMSA7IGJyZWFrIDs7CiAg ICAoIi0iKikKICAgICAgICAgICBlcnJzdHI9IiA2NCAgfCAkMSBjb21tYW5kIGxpbmUgdXNhZ2Ug ZXJyb3IiCiAgICAgICAgICAgZXJybnVtPTY0IDsgbGVkZXNjKz0oIiRlcnJzdHIiKQogICAgICAg ICAgIHNoaWZ0IDEgOzsKICAgICgqKQoJICAgYnJlYWsgOzsKICAgICMgLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4KICAgZXNhYyAgIyBjYXNlIGVuZHMgaGVyZQogZG9uZSAgIyB3aGlsZSBl bmRzIGhlcmUKCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAjIEltcGxlbWVudGF0aW9uIHVzZXMgUmVndWxhciBFeHByZXNzaW9ucyBvciBH bG9iYmluZyBQYXR0ZXJucwogCiBpbXBsPSJzaGVsbC1leHRnbG9iIgogaWYgW1sgIiRpbXBsIiA9 PSAic2hlbGwtcmVnZXhwIiBdXTsgdGhlbgogICAjIFVzaW5nIFJlZ3VsYXItRXhwcmVzc2lvbnMK CiAgICMgRXhwcmVzc2lvbiB8IERlc2NyaXB0aW9uIG9mIFJlZ3VsYXIgRXhwcmVzc2lvbgogICAj IC0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g IAogICAjIChyZWdleCk/ICAgfCBNYXRjaCB6ZXJvIG9yIG9uZSBvY2N1cnJlbmNlcyBvZiBnaXZl biByZWdleAogICAjIChyZWdleCkqICAgfCBNYXRjaCB6ZXJvIG9yIG1vcmUgb2NjdXJyZW5jZXMg b2YgZ2l2ZW4gcmVnZXgKICAgIyAocmVnZXgpKyAgIHwgTWF0Y2ggb25lIG9yIG1vcmUgb2NjdXJy ZW5jZXMgb2YgZ2l2ZW4gcmVnZXgKCiAgICMgXCsgYXZvaWRzIFJlZ3VsYXIgRXhwcmVzc2lvbiBN ZXRhLUNoYXJhY3RlciBJbnRlcnByZXRhdGlvbgogICAgIAogICAjIEludGVnZXIgbnVtYmVyIG5v dGF0aW9uCiAgIGxvY2FsIGl0Zz0nXlstK10/WzAtOV0rJCcKICAgbG9jYWwgcGl0Zz0nXlwrP1sw LTldKyQnCiAgIGxvY2FsIG5pdGc9J14tWzAtOV0rJCcKIAogICAjIEZpeGVkLVBvaW50IG51bWJl ciBub3RhdGlvbgogICBsb2NhbCBmeHA9J15bLStdP1swLTldKlsuLF0/WzAtOV0rJCcKICAgbG9j YWwgcGZ4cD0nXlwrP1swLTldKlsuLF0/WzAtOV0rJCcKICAgbG9jYWwgbmZ4cD0nXi1bMC05XSpb LixdP1swLTldKyQnCiAKICAgIyBGbG9hdGluZy1Qb2ludCBudW1iZXIgbm90YXRpb24KICAgbG9j YWwgZmxwPSdeWy0rXT9bMC05XSpbLixdP1swLTldKyhbZUVdWy0rXT9bMC05XSspPyQnCiAgIGxv Y2FsIHBmbHA9J15cKz9bMC05XSpbLixdP1swLTldKyhbZUVdWy0rXT9bMC05XSspPyQnCiAgIGxv Y2FsIG5mbHA9J14tWzAtOV0qWy4sXT9bMC05XSsoW2VFXVstK10/WzAtOV0rKT8kJwoKICAgIyBU aGUgPX4gb3BlcmF0b3IgaW4gZG91YmxlIGJyYWNrZXQgY29uZGl0aW9uYWxzIFtbIF1dLCByZWdh cmRzIHRoZQogICAjIHJpZ2h0IHNpZGUgYW4gZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uLgoK ICAgY2FzZSAkZm0gaW4KICAgICgiSSIpCiAgICAgICAgICAgW1sgIiQxIiA9fiAkaXRnICBdXSAm JiB7IGluZGljPTEgOyBlcnJudW09MCA7IH0KICAgICAgICAgICBlcnJzdHI9IiAxICAgfCAkMSBm YWlsZWQgaW50ZWdlciB2YWxpZGF0aW9uIgoJICAgKCggaW5kaWMgIT0gMSApKSAmJiBsZWRlc2Mr PSgiJGVycnN0ciIpIDs7CiAgICAoIklwIikKICAgICAgICAgICBbWyAiJDEiID1+ICRwaXRnIF1d ICYmIHsgaW5kaWM9MSA7IGVycm51bT0wIDsgfQogICAgICAgICAgIGVycnN0cj0iIDEgICB8ICQx IGZhaWxlZCBwb3NpdGl2ZSBpbnRlZ2VyIHZhbGlkYXRpb24iCgkgICAoKCBpbmRpYyAhPSAxICkp ICYmIGxlZGVzYys9KCIkZXJyc3RyIikgOzsKICAgICgiSW4iKSAKCSAgIFtbICIkMSIgPX4gJG5p dGcgXV0gJiYgeyBpbmRpYz0xIDsgZXJybnVtPTAgOyB9CiAgICAgICAgICAgZXJyc3RyPSIgMSAg IHwgJDEgZmFpbGVkIG5lZ2F0aXZlIGludGVnZXIgdmFsaWRhdGlvbiIKICAgICAgICAgICAoKCBp bmRpYyAhPSAxICkpICYmIGxlZGVzYys9KCIkZXJyc3RyIikgOzsKICAgICgiRiIpIAoJICAgW1sg IiQxIiA9fiAkZnhwICBdXSAmJiB7IGluZGljPTEgOyBlcnJudW09MCA7IH0KICAgICAgICAgICBl cnJzdHI9IiAxICAgfCAkMSBmYWlsZWQgZml4ZWQgcG9pbnQgcmVhbCB2YWxpZGF0aW9uIgogICAg ICAgICAgICgoIGluZGljICE9IDEgKSkgJiYgbGVkZXNjKz0oIiRlcnJzdHIiKSA7OwogICAgKCJG cCIpIAoJICAgW1sgIiQxIiA9fiAkcGZ4cCBdXSAmJiB7IGluZGljPTEgOyBlcnJudW09MCA7IH0K ICAgICAgICAgICBlcnJzdHI9IiAxICAgfCAkMSBmYWlsZWQgcG9zaXRpdmUgZml4ZWQgcG9pbnQg cmVhbCB2YWxpZGF0aW9uIgogICAgICAgICAgICgoIGluZGljICE9IDEgKSkgJiYgbGVkZXNjKz0o IiRlcnJzdHIiKSA7OyAKICAgICgiRm4iKSAKCSAgIFtbICIkMSIgPX4gJG5meHAgXV0gJiYgeyBp bmRpYz0xIDsgZXJybnVtPTAgOyB9CiAgICAgICAgICAgZXJyc3RyPSIgMSAgIHwgJDEgZmFpbGVk IG5lZ2F0aXZlIGZpeGVkIHBvaW50IHJlYWwgdmFsaWRhdGlvbiIKICAgICAgICAgICAoKCBpbmRp YyAhPSAxICkpICYmIGxlZGVzYys9KCIkZXJyc3RyIikgOzsKICAgICgiRSIpIAoJICAgW1sgIiQx IiA9fiAkZmxwICBdXSAmJiB7IGluZGljPTEgOyBlcnJudW09MCA7IH0KICAgICAgICAgICBlcnJz dHI9IiAxICAgfCAkMSBmYWlsZWQgZmxvYXRpbmcgcG9pbnQgcmVhbCB2YWxpZGF0aW9uIgogICAg ICAgICAgICgoIGluZGljICE9IDEgKSkgJiYgbGVkZXNjKz0oIiRlcnJzdHIiKSA7OwogICAgKCJF cCIpIAoJICAgW1sgIiQxIiA9fiAkcGZscCBdXSAmJiB7IGluZGljPTEgOyBlcnJudW09MCA7IH0K ICAgICAgICAgICBlcnJzdHI9IiAxICAgfCAkMSBmYWlsZWQgcG9zaXRpdmUgZmxvYXRpbmcgcG9p bnQgcmVhbCB2YWxpZGF0aW9uIgogICAgICAgICAgICgoIGluZGljICE9IDEgKSkgJiYgbGVkZXNj Kz0oIiRlcnJzdHIiKSA7OwogICAgKCJFbiIpCgkgICBbWyAiJDEiID1+ICRuZmxwIF1dICYmIHsg aW5kaWM9MSA7IGVycm51bT0wIDsgfQogICAgICAgICAgIGVycnN0cj0iIDEgICB8ICQxIGZhaWxl ZCBuZWdhdGl2ZSBmbG9hdGluZyBwb2ludCByZWFsIHZhbGlkYXRpb24iCiAgICAgICAgICAgKCgg aW5kaWMgIT0gMSApKSAmJiBsZWRlc2MrPSgiJGVycnN0ciIpIDs7CiAgICAoKikgCgkgICBbWyAi JDEiID1+ICRmbHAgIF1dICYmIHsgaW5kaWM9MSA7IGVycm51bT0wIDsgfQogICAgICAgICAgIGVy cnN0cj0iIDEgICB8ICQxIGZhaWxlZCBmbG9hdGluZyBwb2ludCByZWFsIHZhbGlkYXRpb24iCiAg ICAgICAgICAgKCggaW5kaWMgIT0gMSApKSAmJiBsZWRlc2MrPSgiJGVycnN0ciIpIDs7CiAgIGVz YWMKCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiBlbGlmIFtbICIkaW1wbCIgPT0gInNoZWxsLWV4dGdsb2IiIF1dOyB0aGVuCiAgICMgVXNp bmcgU2hlbGwgRXh0ZW5kZWQgR2xvYmJpbmcgUGF0dGVybnMKCiAgICMgUGF0dGVybiAJIHwgRGVz Y3JpcHRpb24gb2YgRXh0ZW5kZWQgR2xvYnMKICAgIyAtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICMgPyhwYXR0ZXJuKSB8IE1h dGNoIHplcm8gb3Igb25lIG9jY3VycmVuY2VzIG9mIHRoZSBwYXR0ZXJucwogICAjICoocGF0dGVy bikgfCBNYXRjaCB6ZXJvIG9yIG1vcmUgb2NjdXJyZW5jZXMgb2YgdGhlIHBhdHRlcm5zCiAgICMg KyhwYXR0ZXJuKSB8IE1hdGNoIG9uZSBvciBtb3JlIG9jY3VycmVuY2VzIG9mIHRoZSBwYXR0ZXJu cwogICAgIAogICBsb2NhbCBpdGc9Jz8oWy0rXSkrKFswLTldKScKICAgbG9jYWwgaXRnYT0nPyhb LStdKSsoW1s6ZGlnaXQ6XV0pJyAgIyBhbHRlcm5hdGl2ZSB0byBpdGcKICAgCiAgIGxvY2FsIHBp dGc9Jz8oKykrKFswLTldKScKICAgbG9jYWwgbml0Zz0nLSsoWzAtOV0pJwoKICAgbG9jYWwgZnhw PSc/KFstK10pKihbMC05XSk/KFsuLF0pKyhbMC05XSknCiAgIGxvY2FsIHBmeHA9Jz8oKykqKFsw LTldKT8oWy4sXSkrKFswLTldKScKICAgbG9jYWwgbmZ4cD0nLSooWzAtOV0pPyhbLixdKSsoWzAt OV0pJwoKICAgbG9jYWwgZmxwPSc/KFstK10pKihbMC05XSk/KFsuLF0pKyhbMC05XSk/KFtlRV0/ KFstK10pKyhbMC05XSkpJwogICBsb2NhbCBwZmxwPSc/KCspKihbMC05XSk/KFsuLF0pKyhbMC05 XSk/KFtlRV0/KFstK10pKyhbMC05XSkpJwogICBsb2NhbCBuZmxwPSctKihbMC05XSk/KFsuLF0p KyhbMC05XSk/KFtlRV0/KFstK10pKyhbMC05XSkpJwoKICAgIyBUaGUgPT0gYW5kICE9IG9wZXJh dG9ycyBpbiBkb3VibGUgYnJhY2tldCBjb25kaXRpb25hbHMgW1sgXV0sCiAgICMgcmVnYXJkIHRo ZSByaWdodCBzaWRlIGFzIGEgR2xvYmJpbmcgUGF0dGVybnMuCgogICBjYXNlICRmbSBpbgogICAg KCJJIikKICAgICAgICAgICBbWyAiJDEiID09ICRpdGcgIF1dICYmIHsgaW5kaWM9MSA7IGVycm51 bT0wIDsgfQogICAgICAgICAgIGVycnN0cj0iIDEgICB8ICQxIGZhaWxlZCBpbnRlZ2VyIHZhbGlk YXRpb24iCiAgICAgICAgICAgKCggaW5kaWMgIT0gMSApKSAmJiBsZWRlc2MrPSgiJGVycnN0ciIp IDs7CiAgICAoIklwIikKICAgICAgICAgICBbWyAiJDEiID09ICRwaXRnIF1dICYmIHsgaW5kaWM9 MSA7IGVycm51bT0wIDsgfQogICAgICAgICAgIGVycnN0cj0iIDEgICB8ICQxIGZhaWxlZCBwb3Np dGl2ZSBpbnRlZ2VyIHZhbGlkYXRpb24iCiAgICAgICAgICAgKCggaW5kaWMgIT0gMSApKSAmJiBs ZWRlc2MrPSgiJGVycnN0ciIpIDs7CiAgICAoIkluIikKICAgICAgICAgICBbWyAiJDEiID09ICRu aXRnIF1dICYmIHsgaW5kaWM9MSA7IGVycm51bT0wIDsgfQogICAgICAgICAgIGVycnN0cj0iIDEg ICB8ICQxIGZhaWxlZCBuZWdhdGl2ZSBpbnRlZ2VyIHZhbGlkYXRpb24iCiAgICAgICAgICAgKCgg aW5kaWMgIT0gMSApKSAmJiBsZWRlc2MrPSgiJGVycnN0ciIpIDs7CiAgICAoIkYiKQogICAgICAg ICAgIFtbICIkMSIgPT0gJGZ4cCAgXV0gJiYgeyBpbmRpYz0xIDsgZXJybnVtPTAgOyB9CiAgICAg ICAgICAgZXJyc3RyPSIgMSAgIHwgJDEgZmFpbGVkIGZpeGVkIHBvaW50IHJlYWwgdmFsaWRhdGlv biIKICAgICAgICAgICAoKCBpbmRpYyAhPSAxICkpICYmIGxlZGVzYys9KCIkZXJyc3RyIikgOzsK ICAgICgiRnAiKQogICAgICAgICAgIFtbICIkMSIgPT0gJHBmeHAgXV0gJiYgeyBpbmRpYz0xIDsg ZXJybnVtPTAgOyB9CiAgICAgICAgICAgZXJyc3RyPSIgMSAgIHwgJDEgZmFpbGVkIHBvc2l0aXZl IGZpeGVkIHBvaW50IHJlYWwgdmFsaWRhdGlvbiIKICAgICAgICAgICAoKCBpbmRpYyAhPSAxICkp ICYmIGxlZGVzYys9KCIkZXJyc3RyIikgOzsKICAgICgiRm4iKQogICAgICAgICAgIFtbICIkMSIg PT0gJG5meHAgXV0gJiYgeyBpbmRpYz0xIDsgZXJybnVtPTAgOyB9CiAgICAgICAgICAgZXJyc3Ry PSIgMSAgIHwgJDEgZmFpbGVkIG5lZ2F0aXZlIGZpeGVkIHBvaW50IHJlYWwgdmFsaWRhdGlvbiIK ICAgICAgICAgICAoKCBpbmRpYyAhPSAxICkpICYmIGxlZGVzYys9KCIkZXJyc3RyIikgOzsKICAg ICgiRSIpCiAgICAgICAgICAgW1sgIiQxIiA9PSAkZmxwZSBdXSAmJiB7IGluZGljPTEgOyBlcnJu dW09MCA7IH0KICAgICAgICAgICBlcnJzdHI9IiAxICAgfCAkMSBmYWlsZWQgZmxvYXRpbmcgcG9p bnQgcmVhbCB2YWxpZGF0aW9uIgogICAgICAgICAgICgoIGluZGljICE9IDEgKSkgJiYgbGVkZXNj Kz0oIiRlcnJzdHIiKSA7OwogICAgKCJFcCIpCiAgICAgICAgICAgW1sgIiQxIiA9PSAkcGZscCBd XSAmJiB7IGluZGljPTEgOyBlcnJudW09MCA7IH0KICAgICAgICAgICBlcnJzdHI9IiAxICAgfCAk MSBmYWlsZWQgcG9zaXRpdmUgZmxvYXRpbmcgcG9pbnQgcmVhbCB2YWxpZGF0aW9uIgogICAgICAg ICAgICgoIGluZGljICE9IDEgKSkgJiYgbGVkZXNjKz0oIiRlcnJzdHIiKSA7OwogICAgKCJFbiIp CiAgICAgICAgICAgW1sgIiQxIiA9PSAkbmZscCBdXSAmJiB7IGluZGljPTEgOyBlcnJudW09MCA7 IH0KICAgICAgICAgICBlcnJzdHI9IiAxICAgfCAkMSBmYWlsZWQgbmVnYXRpdmUgZmxvYXRpbmcg cG9pbnQgcmVhbCB2YWxpZGF0aW9uIgogICAgICAgICAgICgoIGluZGljICE9IDEgKSkgJiYgbGVk ZXNjKz0oIiRlcnJzdHIiKSA7OwogICAgKCopCiAgICAgICAgICAgW1sgIiQxIiA9PSAkZmxwICBd XSAmJiB7IGluZGljPTEgOyBlcnJudW09MCA7IH0KICAgICAgICAgICBlcnJzdHI9IiAxICAgfCAk MSBmYWlsZWQgZmxvYXRpbmcgcG9pbnQgcmVhbCB2YWxpZGF0aW9uIgogICAgICAgICAgICgoIGlu ZGljICE9IDEgKSkgJiYgbGVkZXNjKz0oIiRlcnJzdHIiKSA7OwogICBlc2FjCgogZmkKCiAjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEZ1 bmN0aW9uIG91dHB1dHMgYSBzdGF0dXMgb3IgYSBzdHJpbmcKCiAjIEF2b2lkIGVycm51bSAxMjcg YXMgaXQgY29tbW9ubHkgaW5kaWNhdGVzICJQcm9ncmFtIE5vdCBGb3VuZCIuCiAoKCAkeyNsZWRl c2NbQF19ID09IDAgKSkgJiYgbGVkZXNjPSIwIHwgc3VjY2Vzc2Z1bCB0ZXJtaW5hdGlvbiIKIAog aWYgWyAiJHZiIiAtZ2UgMyBdOyB0aGVuCiAgIHByaW50ZiAnJXNcbicgImFyZ3M6ICRAIHwgXCRA IgogICBwcmludGYgJyVzXG4nICJpbmRpYzogJGluZGljIgogZmkKCiAjIE1vZGU6IHJlYwogIyAg VG9waWM6IExpbmUgQ29udGludWF0aW9uIHdpdGggYmFja3NsYXNoIFwKICMgICAgRGVzYzogQ29t bWFuZHMgY2FuIGJlIHNwbGl0IGFueXdoZXJlIGJ5IGFkZGluZyB0aGUgbGluZQogIyAgICArIGNv bnRpbnVhdGlvbiBiYWNrc2xhc2ggXCBjaGFyYWN0ZXIgYXMgdGhlIGxhc3QgY2hhcmFjdGVyIG9m IHRoZQogIyAgICArIGxpbmUgZm9sbG93ZWQgYnkgYSBsaW5lLWJyZWFrLgogIyAgICBFeGNlcHRp b246IFRoZSBjb250aW51YXRpb24gY2hhcmFjdGVyIGlzIG5vdCByZXF1aXJlZCB3aGVuIGEKICMg ICAgKyBsaW5lLWJyZWFrIGlzIGluc2VydGVkIGF0IGEgcG9pbnQgd2hlcmUgYSBjb21tYW5kIGNh bm5vdCBlbmQKICMgICAgKyBzdWNoIGFzIGFmdGVyIHRoZSAmJiBvciB8fCBvcGVyYXRvcnMuCiAj ICBUb3BpYzogRmFpbHVyZXMgb2YgdGhlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24geyBwICYmIHEg fHwgciB9CiAjICAgIERlc2M6IHsgcCAmJiBxIHx8IHIgfSBhc3N1bWVzIHRoYXQgcSBkb2VzIG5v dCBmYWlsLiAgSWYgcSBmYWlscwogIyAgICArIG9yIHJldHVybnMgYSBmYWxzZSBsb2dpY2FsIHZh bHVlLCByIHdpbGwgZXhlY3V0ZSBldmVuIGlmIHAKICMgICAgKyBzdWNjZWVkcy4KICMgIyBFbmQg b2YgcmVjIAogCiAjIGZuc3RhdHVzIHwgMCBkZXNpZ25hdGVzIHN1Y2Nlc3MgfCBvdGhlcndpc2Ug ZmFpbHVyZQogbG9jYWwgZm5zdGF0dXMKIGlmICgoIG91dHZhbCA9PSAwICkpOyB0aGVuCiAgIGZu c3RhdHVzPSQoKCBpbmRpYyA9PSAxID8gMCA6IDEgKSkgICMgY29uZGl0aW9uYWwgb3BlcmF0b3IK ICAgKCggZXJybnVtID4gMCApKSAmJiBmbnN0YXR1cz0kZXJybnVtCiAgIHJldHVybiAiJGZuc3Rh dHVzIgogZWxzZQogICAjIGluZGljPTEgZGVzaWduYXRlcyBjb25maXJtYXRpb24sIG90aGVyd2lz ZSByZWZ1dGF0aW9uCiAgICgoIGxlZGVzY3ZhbCAhPSAxICkpICYmIGVjaG8gIiRpbmRpYyIgXAog ICAgICB8fCB7IGVjaG8gImVycm5vIiA7IHByaW50ZiAnJXNcbicgIiR7bGVkZXNjW0BdfSIgOyB9 CiBmaQoKfQoKIyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKCmxpbmdlLXBhcmFkZS1udW1lcmljICgpCnsKIG51bT0iMyIKIGlmIGxpbmdlLW51 bWVyaWMgLUkgIiRudW0iCiB0aGVuCiAgIHByaW50ZiAnJXNcbicgIiRudW0gaXMgbnVtZXJpYyBp bnRlZ2VyIgogZWxzZQogICBwcmludGYgJyVzXG4nICIkbnVtIGZhaWxzIG51bWVyaWMgaW50ZWdl ciB2YWxpZGF0aW9uIgogZmkKCiBudW09IjMuMTQyIgogIyBjb25kaXRpb24gZXF1aXZhbGVudCB0 byBgaWYgbGluZ2UtbnVtZXJpYyAtSSAiJG51bSJgCiBpZiB7IGxpbmdlLW51bWVyaWMgLUkgIiRu dW0iIDsgfQogdGhlbgogICBwcmludGYgJyVzXG4nICIkbnVtIGlzIG51bWVyaWMgaW50ZWdlciIK IGVsc2UKICAgcHJpbnRmICclc1xuJyAiJG51bSBmYWlscyBudW1lcmljIGludGVnZXIgdmFsaWRh dGlvbiIKIGZpCn0KCiMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCgpsaW5nZS1kZXRhaWxzLW5nbnVtICgpCnsKIEhERyAiT3B0aW9uIFN1bW1h cnkiCgogcHJpbnRmICclc1xuJyAiLWYgU1RZLCAtLWZtdD1TVFkiCiBwcmludGYgJyVzXG4nICIg ICBGb3JtYXQgc3R5bGUgZm9yIG51bWVyYWxzLiIKCiBQRiAiICAgU1RZICAgIHwgRGVzY3JpcHRp b24iCiBQRiAiICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IgogUEYgIiAgIGJjICAgICB8IFV0aWxpc2VzIGJhc2ljIGNhbGN1bGF0b3IgcHJvZ3JhbSBiYyIK IFBGICIgICBmeGRwbnQgfCBGaXhlZC1wb2ludCBudW1lcmljIG5vdGF0aW9uIgogUEYgIiAgIGZs dHBudCB8IEZsb2F0aW5nLXBvaW50IG51bWVyaWMgbm90YXRpb24iCiBQRiAiICAgbmdyZSAgIHwg TmVnYXRpdmUgUmVndWxhciBFeHByZXNzaW9uIgogICAgCn0KCiMgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCgpsaW5nZS11c2FnZS1uZ251bSAo KQp7CiBjYXNlICQxIGluCiAgKDEpCiAgICAgUEYgIiB7LVYsIC0tdmVyc2lvbn0iCiAgICAgUEYg IiB7LXYgTFYsIC12PUxWLCAtdkxWLCAtLXZlcmJvc2l0eSBMViwgLS12ZXJib3NpdHk9TFZ9Igog ICAgIFBGICIgey1oLCAtLWhlbHB9LCB7LXUgTFYsIC11PUxWLCAtdUxWLCAtLXVzYWdlPUxWfSIK ICAgICBQRiAiIHstZiBTVFksIC0tZm10PVNUWX0gfCBTVFk6IFtuRnxuRV0iCiAgICAgOzsKICAo MikKICAgICBIREcgIlVzYWdlIgogICAgIHByaW50ZiAnJXNcbicgIiBsaW5nZS1uZ251bSAtMS4z NTggfCBSZXN1bHQ6ICIKICAgICBwcmludGYgJyVzXG4nICIgbGluZ2UtbmdudW0gIDguNTMxIHwg UmVzdWx0OiAiCiAgICAgOzsKICAoKikKICAgICBwcmludGYgJyVzXG4nICIgIgogICAgIDs7CiBl c2FjCn0KCiMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCgpsaW5nZS1uZ251bSAoKQp7CgogaWYgKCggJCMgPT0gMCApKTsgdGhlbgogICBwcmlu dGYgJyVzXG4nICJJbnZva2UgXGBsaW5nZS1uZ251bSAtaCcgZm9yIGRldGFpbHMuIgogICByZXR1 cm4gMCAgCiBmaQogCiBsb2NhbCBpbXBsPSJiYyIgb3V0dmFsPTAKCiB3aGlsZSAoKCAkIyA+IDAg KSk7IGRvCiAgIG9wdD0iJDEiCiAgIGNhc2UgJG9wdCBpbgogICAgKCItViJ8Ii0tdmVyc2lvbiIp CiAgICAgIGxvY2FsIC1yIGV0ZGF0ZT0iVjAxIEp1bCAyMDIxIFdrMjciCiAgICAgIHByaW50ZiAi JXNcbiIgIiAkZXRkYXRlIE1hdGVtYXRpa2VyIENocmlzdG9waGVyIERpbWVjaCAiCiAgICAgIHJl dHVybiAwCiAgICAgIDs7CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAo Ii12InwiLS12ZXJib3NpdHkiKSAgICAgIHZiPSIkMiIgICAgICA7IHNoaWZ0IDsgc2hpZnQgOzsK ICAgICgiLXY9Iip8Ii0tdmVyYm9zaXR5PSIqKSAgdmI9IiR7MSMqPX0iIDsgc2hpZnQgMSA7Owog ICAgKCItdiIqKSB2Yj0iJHsxIy12fSIgOyBzaGlmdCAxIDs7CiAgICAjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgICAoIi1oInwiLS1oZWxwIikKICAgICAgcHJpbnRmICclc1xuJyAi VmFsaWRhdGVzIG51bWVyaWMgZm9ybWF0cy4iCiAgICAgIGxpbmdlLWRldGFpbHMtbmdudW0KICAg ICAgcmV0dXJuIDAKICAgICAgOzsKICAgICgiLXUifCItLXVzYWdlIikKICAgICAgcHJpbnRmICcl c1xuJyAiIgogICAgICBsaW5nZS11c2FnZS1uZ251bSAiJHZiIgogICAgICByZXR1cm4gMAogICAg ICA7OwogICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgICgiLW8iKSBvdXR2 YWw9MSA7IHNoaWZ0IDEgOzsKICAgICgiLWYifCItLWZybXQiKSAgICAgIGZybXQ9IiQyIiAgICAg IDsgc2hpZnQgOyBzaGlmdCA7OwogICAgKCItZj0iKnwiLS1mcm10PSIqKSAgZnJtdD0iJHsxIyo9 fSIgOyBzaGlmdCAxIDs7CiAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogICAg KCItLSIpIHNoaWZ0IDEgOyBicmVhayA7OwogICAgKCopIGJyZWFrIDs7CiAgIGVzYWMgICMgIGNh c2UgZW5kcyBoZXJlCiBkb25lICAjIHdoaWxlIGVuZHMgaGVyZQoKICMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAKIGlm ICgoIG91dHZhbCA9PSAxICkpOyB0aGVuCiAgIGs9JCggbGluZ2UtbnVtZXJpYyAtbyAtRW4gIiQx IiApCiBlbHNlCiAgIGs9JCggZWNobyAiJDEgPCAwIiB8IGJjIC1sICkKICAgW1sgIiRrIiA9fiAi ZXJyb3IiIF1dICYmIGs9MAogZmkKIAogaWYgKCggb3V0dmFsID09IDAgKSk7IHRoZW4KICAgbG9j YWwgZm5zdGF0dXM9MSAgICAgICAgICAgICMgZmFpbHVyZQogICAoKCBrID09IDEgKSkgJiYgZm5z dGF0dXM9MCAgIyBzdWNjZXNzCiAgIHJldHVybiAiJGZuc3RhdHVzIgogZWxzZQogICBlY2hvICIk ayIKIGZpCiAKfQoKIyA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OzsKCmxpbmdlLW51bWVyaWMtcGludGdyICgpCnsKCiAjIyBUaGUgJD8gaW5zdHJ1 Y3Rpb24KICMgICQ/IGdldHMgdGhlIEV4aXQgU3RhdHVzIG9mIGxhc3QgZXhlY3V0ZWQgY29tbWFu ZC4KICMgIFJ1bm5pbmcgdGhlIHNhbWUgZnVuY3Rpb24gaW4gc2VwYXJhdGUgYmFzaCBzZXNzaW9u cyB5aWVsZHMKICMgIGluZGVwZW5kZW50IHZhbHVlcyBmb3IgJD8gYmVjYXVzZSBzZXNzaW9ucyBy dW5uaW5nIGluIHNlcGFyYXRlCiAjICBjb21tYW5kIGxpbmUgY29uc29sZSB0ZXJtaW5hbHMgdXNl IGluZGVwZW5kZW50IGVudmlyb25tZW50cy4KCiBsb2NhbCB2Yj0wCiBsb2NhbCBpbXBsPSJsYXN0 LWNvbW1hbmQtc3RhdHVzIgogKCggJCMgPiAxICkpICYmIGltcGw9IiQyIgoKIGNhc2UgJGltcGwg aW4KICAoImxhc3QtY29tbWFuZC1zdGF0dXMiKQogICAgbGluZ2UtbnVtZXJpYyAtSXAgIiQxIgog ICAgcnN0YXR1cz0kPwogICAgKCggdmIgPiAwICkpICYmIGVjaG8gImxhc3QtY29tbWFuZC1zdGF0 dXMgXCQ/IHwgJHJzdGF0dXMiCiAgICByZXR1cm4gIiRyc3RhdHVzIgogICAgOzsKICAoKikKICAg IHI9JCggbGluZ2UtbnVtZXJpYyAtbyAtSXAgIiQxIiApCiAgICAoKCByID09IDEgKSkgJiYgcmV0 dXJuIDAgfHwgcmV0dXJuIDEKICAgIDs7CiBlc2FjCgp9CiAgICAKIyA7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKCmxpbmdlLXVzYWdlLW5lYXJp bnQgKCkKewogY2FzZSAkMSBpbiAKICAoMSkKICAgICBQRiAiIHstViwgLS12ZXJzaW9ufSIKICAg ICBQRiAiIHstdiBMViwgLXY9TFYsIC12TFYsIC0tdmVyYm9zaXR5IExWLCAtLXZlcmJvc2l0eT1M Vn0iCiAgICAgUEYgIiB7LWgsIC0taGVscH0sIHstdSBMViwgLXU9TFYsIC11TFYsIC0tdXNhZ2U9 TFZ9IgogICAgIDs7CiAgKDIpCiAgICAgSERHICJVc2FnZSIKICAgICA7OwogICgqKQogICAgIHBy aW50ZiAnJXNcbicgIiAiCiAgICAgOzsKIGVzYWMKfQoKIyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKCmxpbmdlLW5lYXJpbnQgKCkKewoKIHdo aWxlICgoICQjID4gMCApKTsgZG8KICAgb3B0PSIkMSIKICAgY2FzZSAkb3B0IGluCiAgICAoIi1W InwiLS12ZXJzaW9uIikKICAgICAgbG9jYWwgLXIgZXRkYXRlPSJWMDEgSnVsIDIwMjEgV2syNyIK ICAgICAgcHJpbnRmICcnICIkZXRkYXRlIFN0cmF0ZWdpc3QgQ2hyaXN0b3BoZXIgRGltZWNoIiAi IgogICAgICByZXR1cm4gMAogICAgICA7OwogICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4KICAgICgiLXYifCItLXZlcmJvc2l0eSIpICB2Yj0iJDIiIDsgc2hpZnQgOyBzaGlmdCA7 OwogICAgKCItdj0iKnwiLS12ZXJib3NpdHk9IiopIHZiPSIkezEjKj19Ijsgc2hpZnQgMSA7Owog ICAgKCItdiIqKSB2Yj0iJHsxIy12fSI7IHNoaWZ0IDEgOzsKICAgICMgLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uCiAgICAoIi1oInwiLS1oZWxwIikKICAgICAgcHJpbnRmICclc1xuJyAg ICJsaW5nZS1uZWFyaW50IE9QRVIgTlVNQSBOVU1CIgogICAgICBwcmludGYgJyVzXG4nICAgIlJv dW5kcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4iCiAgICAgIHByaW50ZiAnJXNcbicgICAiT1BF UiAgT3BlcmF0b3IuIgogICAgICBwcmludGYgJyVzXG4nICAgIk5VTUEgIEZpcnN0IG51bWJlci4i CiAgICAgIHByaW50ZiAnJXNcblxuJyAiTlVNQiAgU2Vjb25kIG51bWJlci4iCiAgICAgIHJldHVy biAwCiAgICAgIDs7CiAgICAoIi11InwiLS11c2FnZSIpCiAgICAgIEhERyAiVXNhZ2UiCiAgICAg IHByaW50ZiAnJXNcbicgIiAgbGluZ2UtbmVhcmludCAxOC4yMSIKICAgICAgcHJpbnRmICclc1xu JyAiICBsaW5nZS1uZWFyaW50IDM0LjU1IgogICAgICBwcmludGYgJyVzXG4nICIgIGxpbmdlLW5l YXJpbnQgLyAyMS4zIDM0LjU1IgogICAgICByZXR1cm4gMAogICAgICA7OwogICAgIyAuLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgICgqKSBicmVhayA7OwogICAgIyAuLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4KICAgZXNhYyAgIyAgY2FzZSBlbmRzIGhlcmUKIGRvbmUgICMg d2hpbGUgZW5kcyBoZXJlCgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogCiBpZiAoKCAkIyA+IDMgKSk7IHRoZW4KICAgcHJpbnRmICclc1xu JyAiTW9yZSB0aGFuIHR3byBhZ3JndW1lbnRzIHBhc3NlZCB0byBsaW5nZS1uZWFyaW50IgogZmkK CiAjIHVzaW5nIGZpeGVkLXBvaW50IG51bWJlciBub3RhdGlvbgoKIGxvY2FsIHBzdj0wIG5ndj0w CiBpZiAoKCAkIyA9PSAxICkpOyB0aGVuCiAgIGZ4cG50PSIkMSIKIGVsaWYgKCggJCMgPT0gMyAp KTsgdGhlbgogICBvcGVyPSIkMSIgOyBhbnVtPSIkMiIgOyBibnVtPSIkMyIKICAgY29tcD0iJGFu dW0gJG9wZXIgJGJudW0iCiAgIGZ4cG50PSQoIGVjaG8gIiRjb21wIiB8IGJjIC1sICkKIGVsc2UK ICAgZnhwbnQ9MAogZmkKCiBwc3Y9JCggbGluZ2UtbnVtZXJpYyAtbyAtRnAgIiRmeHBudCIgKQog bmd2PSQoIGxpbmdlLW51bWVyaWMgLW8gLUZuICIkZnhwbnQiICkKIGlmICgoIHBzdiA9PSAxICkp OyB0aGVuCiAgIGluZWFyPSQoIGVjaG8gIigkZnhwbnQgKyAwLjUpIC8gMSIgfCBiYyApCiBlbGlm ICgoIG5ndiA9PSAxICkpOyB0aGVuCiAgIGluZWFyPSQoIGVjaG8gIigkZnhwbnQgLSAwLjUpIC8g MSIgfCBiYyApCiBmaQogCiBwcmludGYgJyVzXG4nICIkaW5lYXIiCgp9CgojICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwoKIyMgaDEgKiBQcmlu dGluZyBtdWx0aXBsZSBsaW5lcyBpbmNsdWRpbmcgd2FybmluZ3MKCmxpbmdlLWRldGFpbHMtcHJp bnRmLW11bHRpcGxlICgpCnsKIHByaW50ZiAnJXNcbicgIlByaW50cyBtdWx0aXBsZSBsaW5lcyBv ZiB0ZXh0LCB3aXRoIGFsaWFzIHNldCB0byBcYHBmbSciCiBwcmludGYgJyVzXG4nICIiCiBwcmlu dGYgJyVzXG4nICJFeGFtcGxlOiBwZm0gLS0gXCItZCBESVJcIiIKfQoKIyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKCmxpbmdlLXVzYWdlLXBy aW50Zi1tdWx0aXBsZSAoKQp7CiBjYXNlICQxIGluCiAgKDIpCiAgICAgbGluZ2UtdXNhZ2UtcHJp bnRmLW11bHRpcGxlLWVuCiAgICAgOzsKICAoKikKICAgICBQRiAiIGxpbmdlLXByaW50Zi1tdWx0 aXBsZSBbT1BUSU9OU10gIgogICAgIFBGICIgICBQcmludHMgYSBoZWFkaW5nIgogICAgIFBGICIg ICAiCiAgICAgUEYgIiAtViwgLS12ZXJzaW9uIgogICAgIFBGICIgLXYgTFYsIC12PUxWLCAtdkxW LCAtLXZlcmJvc2l0eSBMViwgLS12ZXJib3NpdHk9TFYiCiAgICAgUEYgIiB7LXUgTFYsIC11PUxW LCAtdUxWLCAtLXVzYWdlPUxWfSwgey1oLCAtLWhlbHB9IgogICAgIFBGICIgLWYgU1RZLCAtLWZt dD1TVFl9IHwgU1RZOiBbbkZ8bkVdIgogICAgIFBGICIgLUgsIC1IIENOVCwgLUg9Q05ULCAtSENO VCwgLS1oZWFkaW5nIENOVCwgLS1oZWFkaW5nPUNOVCIKICAgICBQRiAiIC1XLCAtVyBDTlQsIC1X PUNOVCwgLVdDTlQsIC0td2FybmluZyBDTlQsIC0td2FybmluZz1DTlQiCiAgICAgUEYgIiAtRSwg LUUgQ05ULCAtRT1DTlQsIC1FQ05ULCAtLWVycm9yIENOVCwgLS1lcnJvcj1DTlQiCiAgICAgUEYg IiAtYiBDTiwgLWI9Q04sIC1iQ04sIC0tYmx1IENOLCAtLWJsdT1DTiIKICAgICBQRiAiIC1nIENO LCAtZz1DTiwgLWdDTiwgLS1ncm4gQ04sIC0tZ3JuPUNOIgogICAgIFBGICIgLWMgQ04sIC1jPUNO LCAtY0NOLCAtLWN5biBDTiwgLS1jeW49Q04iCiAgICAgUEYgIiAtciBDTiwgLXI9Q04sIC1yQ04s IC0tcmVkIENOLCAtLXJlZD1DTiIKICAgICBQRiAiIC1tIENOLCAtbT1DTiwgLW1DTiwgLS1tZ24g Q04sIC0tbWduPUNOIgogICAgIFBGICIgLW8gQ04sIC1vPUNOLCAtb0NOLCAtLW9yZyBDTiwgLS1v cmc9Q04iCiAgICAgUEYgIiB7LS1jb2xmIENOLCAtLWNvbGY9Q059LCB7LWwgQ04sIC1sPUNOLCAt bENOfSIKICAgICA7OwogZXNhYwp9CgojICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwoKbGluZ2UtZGV0YWlscy1wcmludGYtbXVsdGlwbGUgKCkK ewogaWYgKCggJCMgPj0gMSApKTsgdGhlbgogICBpZiBbWyAiJDEiID09ICJmciIgfHwgIiQxIiA9 PSAiaXQiIF1dOyB0aGVuCiAgICAgY29tbGFuZz0iJDEiCiAgIGVsc2UKICAgICBjb21sYW5nPSIk e0xBTkc6MDoyfSIKICAgICAoKCB2YiA+PTIgKSkgJiYgcHJpbnRmICclc1xuJyAiVXNpbmcgbG9j YWxlICRMQU5HIgogICBmaQogZWxzZQogICBjb21sYW5nPSIke0xBTkc6MDoyfSIKICAgKCggdmIg Pj0yICkpICYmIHByaW50ZiAnJXNcbicgIlVzaW5nIGxvY2FsZSAkTEFORyIKIGZpCgogY2FzZSAk Y29tbGFuZyBpbgogICgiZnIiKQogICAgcHJpbnRmICdcbiVzXG4nICJBZmZpY2hlIGR1IHRleHRl IGVuIGNvdWxldXIuIgogICAgcHJpbnRmICclc1xuJyAiICBsaW5nZS1wcmludGYtbXVsdGlwbGUg W09QVElPTlNdIFRFWFQuLiIKICAgIGxpbmdlLWRldGFpbHMtcHJpbnRmLW11bHRpcGxlLWZyCiAg ICA7OwogICgiaXQiKQogICAgcHJpbnRmICdcbiVzXG4nICJWaXN1YWxpenphIGlsIHRlc3RvIHV0 aWxpenphbmRvIGlsIGNvbG9yZS4iCiAgICBwcmludGYgJyVzXG4nICIgIGxpbmdlLXByaW50Zi1t dWx0aXBsZSBbT1BUSU9OU10gVEVYVC4uIgogICAgbGluZ2UtZGV0YWlscy1wcmludGYtbXVsdGlw bGUtaXQKICAgIDs7CiAgKCopCiAgICBwcmludGYgJ1xuJXNcbicgIkRpc3BsYXlzIGNvbG91cmVk IHRleHQuIgogICAgcHJpbnRmICclc1xuJyAiICBsaW5nZS1wcmludGYtbXVsdGlwbGUgW09QVElP TlNdIFRFWFQuLiIKICAgIGxpbmdlLWRldGFpbHMtcHJpbnRmLW11bHRpcGxlLWVuCiAgICA7Owog ZXNhYwp9CgojICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwoKbGluZ2UtcHJpbnRmLW11bHRpcGxlICgpCnsKIGxvY2FsIC1yIGV0ZGF0ZT0iVjAx IDIwMjEgSnVsIDIxIFdrMjciICAKIGxvY2FsIC1yIGF1dGhvcj0iTWF0ZW1hdGlrZXIgQ2hyaXN0 b3BoZXIgRGltZWNoIiAgCgogIyMgU2V0IEdyYXBoaWMgUmVuZGl0aW9uIGZvciBjb2xvdXJlZCB0 ZXJtaW5hbCBkaXNwbGF5LgogIyAgVXNpbmcgdHB1dCBjb21tYW5kIHRvIGFjY2VzcyB0ZXJtaW5m byBkYXRhYmFzZSBjYXBhYmlsaXRpZXMuIEluCiAjICAxOTgxLCBNYXJ5IEFubiBIb3J0b24gbWFk ZSB0aGUgZmlyc3QgdGVybWluZm8gbGlicmFyeSwgdXNpbmcgaHVtYW4KICMgIHVuZGVyc3RhbmRh YmxlIG5hbWVzIGFuZCBpbXByb3ZpbmcgYWNjZXNzIHNwZWVkIG92ZXIgdGVybWNhcC4KCiAjIDgt Yml0ICgyNTYsIDJeOCkgY29sb3VycwogbG9jYWwgLXIgYmx1PSQodHB1dCBib2xkKSQodHB1dCBz ZXRhZiAzOSkKIGxvY2FsIC1yIGdybj0kKHRwdXQgYm9sZCkkKHRwdXQgc2V0YWYgNDYpCiBsb2Nh bCAtciBjeW49JCh0cHV0IGJvbGQpJCh0cHV0IHNldGFmIDUxKQogbG9jYWwgLXIgcmVkPSQodHB1 dCBib2xkKSQodHB1dCBzZXRhZiAxOTYpCiBsb2NhbCAtciBtZ249JCh0cHV0IGJvbGQpJCh0cHV0 IHNldGFmIDIwMSkKIGxvY2FsIC1yIG9yZz0kKHRwdXQgYm9sZCkkKHRwdXQgc2V0YWYgMjA4KQoK ICMgU2VsZWN0IEdyYXBoaWMgUmVuZGl0aW9uIFplcm8gKHNncjApIHJlc2V0cyB0byBub24tY29s b3VyIGRpc3BsYXkKIGxvY2FsIHNncj0kKHRwdXQgc2dyMCkKIGxvY2FsIHJzdD0iJHNnciIgY3Rw PSIiCiAKICMgTG9jYWwgYXJndW1lbnRzIHBsdXMgb3RoZXIKIGxvY2FsIHZiPTEgIG53bGluZT0x ICBjbj0wICBubD0wICBjYXB0cj0wCiBsb2NhbCBjb21sYW5nPSIiCgogZGVjbGFyZSAtYSBlZHZl cnIgICMgZGVjbGFyZSBhcnJheSBmb3IgZXJyb3IgbWVzc2FnZXMKCiAoKCAkIyA9PSAwKSkgJiYg cHJpbnRmICIlc1xuIiAiJGV0ZGF0ZSAkYXV0aG9yIgogCiB3aGlsZSAoKCAkIyA+IDAgKSk7IGRv CiAgIGNhc2UgJDEgaW4KICAgICgiLVYifCItLXZlcnNpb24iKSAgICAgICAgICAgICMgeyAtViB9 CiAgICAgIHByaW50ZiAiJXNcbiIgIiRldGRhdGUgU3RyYXRlZ2lzdCBDaHJpc3RvcGhlciBEaW1l Y2giCiAgICAgIHJldHVybiAwCiAgICAgIDs7CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi12InwiLS12ZXJib3NpdHkiKSAgICAg ICAgICAjIHsgLXYgTlVNIH0KICAgICAgbGluZ2UtbnVtZXJpYy1waW50Z3IgIiQyIgogICAgICBp ZiAoKCAkPyA9PSAwICkpOyB0aGVuCiAgICAgICAgdmI9IiQyIiA7IHNoaWZ0IDsgc2hpZnQKICAg ICAgZWxzZQogICAgICAgIGVkdmVycis9KCIgey12IE5VTX0gTlVNIGZhaWxzIG51bWVyaWMgdmFs aWRhdGlvbiIpCglzaGlmdCAgCiAgICAgIGZpCiAgICAgIDs7CiAgICAoIi12PSIqfCItLXZlcmJv c2l0eT0iKikgICAgICAjIHsgLXY9TlVNIH0KICAgICAgbGluZ2UtbnVtZXJpYy1waW50Z3IgIiR7 MSMqPX0iCiAgICAgIGlmICgoICQ/ID09IDAgKSk7IHRoZW4KICAgICAgICB2Yj0iJHsxIyo9fSIg OyBzaGlmdCAxCiAgICAgIGVsc2UKCXNoaWZ0IDEKICAgICAgICBlZHZlcnIrPSgiIHstdiBOVU19 IE5VTSBmYWlscyBudW1lcmljIHZhbGlkYXRpb24iKQogICAgICBmaQogICAgICA7OwogICAgKCIt diIqKSAgICAgICAgICAgICAgICAgICAgICAgIyB7IC12IE5VTSB9CiAgICAgIGxpbmdlLW51bWVy aWMtcGludGdyICIkezEjLXZ9IgogICAgICBpZiAoKCAkPyA9PSAwICkpOyB0aGVuICAgICAgIyBu dW1lcmljIG1hdGNoIHN1Y2Nlc3MKICAgICAgICB2Yj0iJHsxIy12fSIgOyBzaGlmdCAxCiAgICAg IGVsc2UKCXNoaWZ0IDEKICAgICAgICBlZHZlcnIrPSgiIHstdk5VTX0gTlVNIGZhaWxzIG51bWVy aWMgdmFsaWRhdGlvbiIpCiAgICAgIGZpCiAgICAgIDs7CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi1oInwiLS1oZWxwIikgICAg ICAgICAgICAgICAjIHsgLWggTEFORyB9CiAgICAgIGxpbmdlLW51bWVyaWMtcGludGdyICIkMiIK ICAgICAgKCggJD8gPT0gMCApKSAmJiB7IGNvbWxhbmc9IiQyIiA7IHNoaWZ0IDsgc2hpZnQgOyB9 CiAgICAgIGxpbmdlLWRldGFpbHMtcHJpbnRmLW11bHRpcGxlICIkY29tbGFuZyIKICAgICAgcmV0 dXJuIDAKICAgICAgOzsKICAgICgiLWg9Iip8Ii0taGVscD0iKikgICAgICAgICAgICMgeyAtaD1b TEFOR10gfQogICAgICBsaW5nZS1udW1lcmljLXBpbnRnciAiJHsxIyo9fSIKICAgICAgKCggJD8g PT0gMCApKSAmJiB7IGNvbWxhbmc9IiR7MSMqPX0iIDsgc2hpZnQgMSA7IH0KICAgICAgbGluZ2Ut ZGV0YWlscy1wcmludGYtbXVsdGlwbGUgIiRjb21sYW5nIgogICAgICByZXR1cm4gMAogICAgICA7 OwogICAgKCItaCIqKSAgICAgICAgICAgICAgICAgICAgICAgIyB7IC1oW0xBTkddIH0KICAgICAg bGluZ2UtbnVtZXJpYy1waW50Z3IgIiR7MSMtaH0iCiAgICAgICgoICQ/ID09IDAgKSkgJiYgeyBj b21sYW5nPSIkezEjLWh9IiA7IHNoaWZ0IDEgOyB9CiAgICAgIGxpbmdlLWRldGFpbHMtcHJpbnRm LW11bHRpcGxlICIkY29tbGFuZyIKICAgICAgcmV0dXJuIDAKICAgICAgOzsKICAgICMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICgiLXUifCIt LXVzYWdlIikKICAgICAgIyB7IC11IE5VTSwgLXUgfSBhbGxvd3Mgb3B0aW9uYWwgYXJndW1lbnQg dmFsdWUKICAgICAgaWYgeyBsaW5nZS1udW1lcmljIC1JcCAiJDIiIDsgfTsgdGhlbgogICAgICAg IHVzZz0iJDIiIDsgc2hpZnQgOyBzaGlmdAogICAgICBlbHNlCgl1c2c9MSA7IHNoaWZ0IDEKICAg ICAgZmkKICAgICAgbGluZ2UtdXNhZ2UtcHJpbnRmLW11bHRpcGxlICIkdXNnIgogICAgICByZXR1 cm4gMAogICAgICA7OwogICAgKCItdT0iKnwiLS11c2FnZT0iKikKICAgICAgIyB7IC11PTIsIC11 PSB9IGFsbG93cyBvcHRpb25hbCBhcmd1bWVudCB2YWx1ZQogICAgICBpZiBsaW5nZS1udW1lcmlj IC1JcCAiJHsxIyo9fSIgOyB0aGVuCiAgICAgICAgdXNnPSIkezEjKj19IiA7IHNoaWZ0IDEKICAg ICAgZWxzZQoJdXNnPTEgOyBzaGlmdCAxCiAgICAgIGZpCiAgICAgIGxpbmdlLXVzYWdlLXByaW50 Zi1tdWx0aXBsZSAiJHVzZyIKICAgICAgcmV0dXJuIDAKICAgICAgOzsKICAgICgiLXUiKikgICAg ICAgICAgIyB7IC11TlVNIH0KICAgICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiR7MSMqLXV9IiA7 IHRoZW4KICAgICAgICB1c2c9IiR7MSMqLXV9IiA7IHNoaWZ0IDEKICAgICAgZWxzZQoJc2hpZnQg MQogICAgICAgIGVkdmVycis9KCIgey11TlVNfSBOVU0gZmFpbHMgbnVtZXJpYyB2YWxpZGF0aW9u IikKICAgICAgZmkKICAgICAgbGluZ2UtdXNhZ2UtcHJpbnRmLW11bHRpcGxlICIkdXNnIgogICAg ICByZXR1cm4gMAogICAgICA7OwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICAgKCItbiIpICAgICAgICAgICAgICAgICAgICAgICAgIyB7 IC1uIH0KICAgICAgbndsaW5lPTAgOyBzaGlmdCA7OwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgKCItSCJ8Ii0taGVhZGluZyIpICAg ICAgICAgICAgIyB7IC1IIE5VTSB9CiAgICAgIGN0cD0iJG1nbiIKICAgICAgaWYgbGluZ2UtbnVt ZXJpYyAtSXAgIiQyIiA7IHRoZW4KICAgICAgICBubD0iJDIiIDsgc2hpZnQgOyBzaGlmdAogICAg ICBlbHNlCiAgICAgICAgbmw9MSA7IHNoaWZ0IDEKCWVkdmVycis9KCIgey1IIE5VTX0gTnVtIGZh aWxzIG51bWVyaWMgdmVyaWZpY2F0aW9uIikKICAgICAgZmkKICAgICAgOzsKICAgICgiLUg9Iip8 Ii0taGVhZGluZz0iKikgICAgICAgICMgeyAtSD1OVU0gfSAKICAgICAgY3RwPSIkbWduIgogICAg ICBpZiBsaW5nZS1udW1lcmljIC1JcCAiJHsxIyo9fSIgOyB0aGVuCiAgICAgICAgbmw9IiR7MSMq PX0iIDsgc2hpZnQgMQogICAgICBlbHNlCiAgICAgICAgbmw9MSA7IHNoaWZ0IDEKCWVkdmVycis9 KCIgey1IPU5VTX0gTnVtIGZhaWxzIG51bWVyaWMgdmVyaWZpY2F0aW9uIikKICAgICAgZmkKICAg ICAgOzsKICAgICgiLUgiKikgICMgeyAtSE5VTSB9CiAgICAgIGN0cD0iJG1nbiIKICAgICAgaWYg bGluZ2UtbnVtZXJpYyAtSXAgIiR7MSMqPX0iIDsgdGhlbgogICAgICAgIG5sPSIkezEjKj19IiA7 IHNoaWZ0IDEKICAgICAgZWxzZQogICAgICAgIG5sPTEgOyBzaGlmdCAxCgllZHZlcnIrPSgiIHst SE5VTX0gTnVtIGZhaWxzIG51bWVyaWMgdmVyaWZpY2F0aW9uIikKICAgICAgZmkKICAgICAgOzsK ICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAgICgiLVcifCItLXdhcm5pbmciKQogICAgICAjIHsgLVcgTlVNLCAtVyB9IGFsbG93cyBvcHRp b25hbCBhcmd1bWVudCB2YWx1ZQogICAgICBjdHA9IiRibHUiCiAgICAgIGlmIGxpbmdlLW51bWVy aWMgLUlwICIkMiIgOyB0aGVuCiAgICAgICAgbmw9IiQyIiA7IHNoaWZ0IDsgc2hpZnQKICAgICAg ZWxzZQogICAgICAgIG5sPTEgOyBzaGlmdCAxCiAgICAgIGZpCiAgICAgIDs7CiAgICAoIi1XPSIq fCItLXdhcm5pbmc9IiopCiAgICAgICMgeyAtVz1OVU0sIC1XPSB9IGFsbG93cyBvcHRpb25hbCBh cmd1bWVudCB2YWx1ZQogICAgICBjdHA9IiRibHUiCiAgICAgIGlmIGxpbmdlLW51bWVyaWMgLUlw ICIkezEjKj19IiA7IHRoZW4KICAgICAgICBubD0iJHsxIyo9fSIgOyBzaGlmdCAxCiAgICAgIGVs c2UKICAgICAgICBubD0xIDsgc2hpZnQgMQogICAgICBmaQogICAgICA7OwogICAgKCItVyIqfCIt LXdhcm5pbmciKikgICMgeyAtV05VTSB9CiAgICAgIGN0cD0iJGJsdSIKICAgICAgaWYgbGluZ2Ut bnVtZXJpYyAtSXAgIiR7MSMqPX0iIDsgdGhlbgogICAgICAgIG5sPSIkezEjKj19IiA7IHNoaWZ0 IDEKICAgICAgZWxzZQogICAgICAgIG5sPTEgOyBzaGlmdCAxCgllZHZlcnIrPSgiIHstV05VTX0g TlVNIGZhaWxzIG51bWVyaWMgdmFsaWRhdGlvbiIpCiAgICAgIGZpCiAgICAgIDs7CiAgICAjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi1F InwiLS1lcnJvciIpCiAgICAgICMgeyAtRSBOVU0sIC1FIH0gYWxsb3dzIG9wdGlvbmFsIGFyZ3Vt ZW50IHZhbHVlCiAgICAgIGN0cD0iJHJlZCIKICAgICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiQy IiA7IHRoZW4KICAgICAgICBubD0iJDIiIDsgc2hpZnQgOyBzaGlmdAogICAgICBlbHNlCiAgICAg ICAgbmw9MSA7IHNoaWZ0IDEKICAgICAgZmkKICAgICAgOzsKICAgICgiLUU9Iip8Ii0tZXJyb3I9 IiopCiAgICAgICMgeyAtRT1OVU0sIC1FPSB9IGFsbG93cyBvcHRpb25hbCBhcmd1bWVudCB2YWx1 ZQogICAgICBjdHA9IiRyZWQiCiAgICAgIGlmIGxpbmdlLW51bWVyaWMgLUlwICIkezEjKj19IiA7 IHRoZW4KICAgICAgICBubD0iJHsxIyo9fSIgOyBzaGlmdCAxCiAgICAgIGVsc2UKICAgICAgICBu bD0xIDsgc2hpZnQgMQogICAgICBmaQogICAgICA7OwogICAgKCItRSIqKSAgICAgICAgICAjIHsg LUVOVU0gfQogICAgICBjdHA9IiRyZWQiCiAgICAgIGlmIGxpbmdlLW51bWVyaWMgLUlwICIkezEj LUV9IiA7IHRoZW4KICAgICAgICBubD0iJHsxIy1FfSIgOyBzaGlmdCAxCiAgICAgIGVsc2UKICAg ICAgICBubD0xIDsgc2hpZnQgMQoJZWR2ZXJyKz0oIiB7LUVOVU19IE5VTSBmYWlscyBudW1lcmlj IHZhbGlkYXRpb24iKQogICAgICBmaQogICAgICA7OwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgKCItYiJ8Ii0tYmx1IikKICAgICAg IyB7IC1iIE5VTSwgLWIgfSBhbGxvd3Mgb3B0aW9uYWwgYXJndW1lbnQgdmFsdWUKICAgICAgY3Rw PSIkYmx1IgogICAgICBpZiBsaW5nZS1udW1lcmljIC1JcCAiJDIiIDsgdGhlbgoJZWNobyAiYmx1 ZSAkMiAkPyIKICAgICAgICBubD0iJDIiIDsgc2hpZnQgOyBzaGlmdAogICAgICBlbHNlCglubD0x IDsgc2hpZnQgMQogICAgICBmaQogICAgICA7OwogICAgKCItYj0iKnwiLS1ibHU9IiopCiAgICAg ICMgeyAtYj1OVU0sIC1iPSB9IGFsbG93cyBvcHRpb25hbCBhcmd1bWVudCB2YWx1ZQogICAgICBj dHA9IiRibHUiCiAgICAgIGlmIGxpbmdlLW51bWVyaWMgLUlwICIkezEjKj19IiA7IHRoZW4KICAg ICAgICBubD0iJHsxIyo9fSIgOyBzaGlmdCAxCiAgICAgIGVsc2UKICAgICAgICBubD0xIDsgc2hp ZnQgMQogICAgICBmaQogICAgICA7OwogICAgKCItYiIqKSAgIyB7IC1iTlVNIH0KICAgICAgY3Rw PSIkYmx1IgogICAgICBpZiBsaW5nZS1udW1lcmljIC1JcCAiJHsxIy1ifSIgOyB0aGVuCiAgICAg ICAgbmw9IiR7MSMtYn0iIDsgc2hpZnQgMQogICAgICBlbHNlCglubD0xIDsgc2hpZnQgMQoJZWR2 ZXJyKz0oIiB7LWJOVU19IE5VTSBmYWlscyBudW1lcmljIHZhbGlkYXRpb24iKQogICAgICBmaQog ICAgICA7OwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICAgKCItZyJ8Ii0tZ3JuIikKICAgICAgIyB7IC1nIE5VTSwgLWcgfSBhbGxvd3Mg b3B0aW9uYWwgYXJndW1lbnQgdmFsdWUKICAgICAgY3RwPSIkZ3JuIgogICAgICBpZiBsaW5nZS1u dW1lcmljIC1JcCAiJDIiIDsgdGhlbgogICAgICAgIG5sPSIkMiIgOyBzaGlmdCA7IHNoaWZ0CiAg ICAgIGVsc2UKCW5sPTEgOyBzaGlmdCAxCiAgICAgIGZpCiAgICAgIDs7CiAgICAoIi1nPSIqfCIt LWdybj0iKikKICAgICAgIyB7IC1nPU5VTSwgLWc9IH0gYWxsb3dzIG9wdGlvbmFsIGFyZ3VtZW50 IHZhbHVlCiAgICAgIGN0cD0iJGdybiIKICAgICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiR7MSMq PX0iIDsgdGhlbgogICAgICAgIG5sPSIkezEjKj19IiA7IHNoaWZ0IDEKICAgICAgZWxzZQoJbmw9 MSA7IHNoaWZ0IDEKICAgICAgZmkKICAgICAgOzsKICAgICgiLWciKikgICMgeyAtZ05VTSB9CiAg ICAgIGN0cD0iJGdybiIKICAgICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiR7MSMtZ30iIDsgdGhl bgogICAgICAgIG5sPSIkezEjLWd9IiA7IHNoaWZ0IDEKICAgICAgZWxzZQoJbmw9MSA7IHNoaWZ0 IDEKCWVkdmVycis9KCIgey1nTlVNfSBOVU0gZmFpbHMgbnVtZXJpYyB2YWxpZGF0aW9uIikKICAg ICAgZmkKICAgICAgOzsKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgICgiLWMifCItLWN5biIpCiAgICAgICMgeyAtYyBOVU0sIC1jIH0g YWxsb3dzIG9wdGlvbmFsIGFyZ3VtZW50IHZhbHVlCiAgICAgIGN0cD0iJGN5biIKICAgICAgaWYg bGluZ2UtbnVtZXJpYyAtSXAgIiQyIiA7IHRoZW4KICAgICAgICBubD0iJDIiIDsgc2hpZnQgOyBz aGlmdAogICAgICBlbHNlCglubD0xIDsgc2hpZnQgMQogICAgICBmaQogICAgICA7OwogICAgKCIt Yz0iKnwiLS1jeW49IiopCiAgICAgICMgeyAtYz1OVU0sIC1jPSB9IGFsbG93cyBvcHRpb25hbCBh cmd1bWVudCB2YWx1ZQogICAgICBjdHA9IiRjeW4iCiAgICAgIGlmIGxpbmdlLW51bWVyaWMgLUlw ICIkezEjKj19IiA7IHRoZW4KICAgICAgICBubD0iJHsxIyo9fSIgOyBzaGlmdCAxCiAgICAgIGVs c2UKCW5sPTEgOyBzaGlmdCAxCiAgICAgIGZpCiAgICAgIDs7CiAgICAoIi1jIikgICMgeyAtY05V TSB9CiAgICAgIGN0cD0iJGN5biIKICAgICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiR7MSMtY30i IDsgdGhlbgogICAgICAgIG5sPSIkezEjLWN9IiA7IHNoaWZ0IDEKICAgICAgZWxzZQoJbmw9MSA7 IHNoaWZ0IDEKCWVkdmVycis9KCIgey1jTlVNfSBOVU0gZmFpbHMgbnVtZXJpYyB2YWxpZGF0aW9u IikKICAgICAgZmkKICAgICAgOzsKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICgiLXIifCItLXJlZCIpCiAgICAgICMgeyAtciBOVU0s IC1yIH0gYWxsb3dzIG9wdGlvbmFsIGFyZ3VtZW50IHZhbHVlCiAgICAgIGN0cD0iJHJlZCIKICAg ICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiQyIiA7IHRoZW4KICAgICAgICBubD0iJDIiIDsgc2hp ZnQgOyBzaGlmdAogICAgICBlbHNlCglubD0xIDsgc2hpZnQgMSAKCWVkdmVycis9KCIgey1yIE5V TX0gTlVNIGZhaWxzIG51bWVyaWMgdmFsaWRhdGlvbiIpCiAgICAgIGZpCiAgICAgIDs7CiAgICAo Ii1yPSIqfCItLXJlZD0iKikKICAgICAgIyB7IC1yPU5VTSwgLXI9IH0gYWxsb3dzIG9wdGlvbmFs IGFyZ3VtZW50IHZhbHVlCiAgICAgIGN0cD0iJHJlZCIKICAgICAgaWYgbGluZ2UtbnVtZXJpYyAt SXAgIiR7MSMqPX0iIDsgdGhlbgogICAgICAgIG5sPSIkezEjKj19IiA7IHNoaWZ0IDEKICAgICAg ZWxzZQoJbmw9MSA7IHNoaWZ0IDEKICAgICAgZmkKICAgICAgOzsKICAgICgiLXIiKikgICMgeyAt ck5VTSB9CiAgICAgIGN0cD0iJHJlZCIKICAgICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiR7MSMq PX0iIDsgdGhlbgogICAgICAgIG5sPSIkezEjKj19IiA7IHNoaWZ0IDEKICAgICAgZWxzZQoJbmw9 MSA7IHNoaWZ0IDEgCgllZHZlcnIrPSgiIHstck5VTX0gTlVNIGZhaWxzIG51bWVyaWMgdmFsaWRh dGlvbiIpCiAgICAgIGZpCiAgICAgIDs7CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi1tInwiLS1tZ24iKQogICAgICAjIHsgLW0g TlVNLCAtbSB9IGFsbG93cyBvcHRpb25hbCBhcmd1bWVudCB2YWx1ZQogICAgICBjdHA9IiRtZ24i CiAgICAgIGlmIGxpbmdlLW51bWVyaWMgLUlwICIkMiIgOyB0aGVuCiAgICAgICAgbmw9IiQyIiA7 IHNoaWZ0IDsgc2hpZnQKICAgICAgZWxzZQoJbmw9MSA7IHNoaWZ0IDEKICAgICAgZmkKICAgICAg OzsKICAgICgiLW09Iip8Ii0tbWduPSIqKQogICAgICAjIHsgLW0gTlVNLCAtbSB9IGFsbG93cyBv cHRpb25hbCBhcmd1bWVudCB2YWx1ZSAKICAgICAgY3RwPSIkbWduIgogICAgICBpZiBsaW5nZS1u dW1lcmljIC1JcCAiJHsxIyo9fSIgOyB0aGVuCiAgICAgICAgbmw9IiR7MSMqPX0iIDsgc2hpZnQg MQogICAgICBlbHNlCglubD0xIDsgc2hpZnQgMQogICAgICBmaQogICAgICA7OwogICAgKCItbSIq KSAgICMgeyAtbU5VTSB9CiAgICAgIGN0cD0iJG1nbiIKICAgICAgaWYgbGluZ2UtbnVtZXJpYyAt SXAgIiR7MSMtbX0iIDsgdGhlbgogICAgICAgIG5sPSIkezEjLW19IiA7IHNoaWZ0IDEKICAgICAg ZWxzZQoJbmw9MSA7IHNoaWZ0IDEgCgllZHZlcnIrPSgiIHstbU5VTX0gTlVNIGZhaWxzIG51bWVy aWMgdmFsaWRhdGlvbiIpCiAgICAgIGZpCiAgICAgIDs7CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi1vInwiLS1vcmciKQogICAg ICAjIHsgLW8gTlVNLCAtbyB9IGFsbG93cyBvcHRpb25hbCBhcmd1bWVudCB2YWx1ZQogICAgICBj dHA9IiRvcmciCiAgICAgIGlmIGxpbmdlLW51bWVyaWMgLUlwICIkMiIgOyB0aGVuCiAgICAgICAg bmw9IiQyIiA7IHNoaWZ0IDsgc2hpZnQKICAgICAgZWxzZQoJbmw9MSA7IHNoaWZ0IDEKICAgICAg ZmkKICAgICAgOzsKICAgICgiLW89Iip8Ii0tb3JnPSIqKQogICAgICAjIHsgLW89TlVNLCAtbz0g fSBhbGxvd3Mgb3B0aW9uYWwgYXJndW1lbnQgdmFsdWUKICAgICAgY3RwPSIkb3JnIgogICAgICBp ZiBsaW5nZS1udW1lcmljIC1JcCAiJHsxIyo9fSIgOyB0aGVuCiAgICAgICAgbmw9IiR7MSMqPX0i IDsgc2hpZnQgMQogICAgICBlbHNlCglubD0xIDsgc2hpZnQgMSAKICAgICAgZmkKICAgICAgOzsK ICAgICgiLW8iKikgICMgeyAtb05VTSB9CiAgICAgIGN0cD0iJG9yZyIKICAgICAgaWYgbGluZ2Ut bnVtZXJpYyAtSXAgIiR7MSMtb30iIDsgdGhlbgogICAgICAgIG5sPSIkezEjLW99IiA7IHNoaWZ0 IDEKICAgICAgZWxzZQoJbmw9MSA7IHNoaWZ0IDEgCgllZHZlcnIrPSgiIHstb05VTX0gTlVNIGZh aWxzIG51bWVyaWMgdmFsaWRhdGlvbiIpCiAgICAgIGZpCiAgICAgIDs7CiAgICAjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi0tY29sZiIp ICAgICAgICMgeyAtLWNvbGYgMjMzIH0KICAgICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiQyIiA7 IHRoZW4KICAgICAgICBjbj0iJDIiIDsgc2hpZnQgOyBzaGlmdAogICAgICBlbHNlCiAgICAgICAg Y249MjA4IDsgc2hpZnQgMQoJZWR2ZXJyKz0oIiB7LS1jb2xmIE5VTX0gTlVNIGZhaWxzIG51bWVy aWMgdmFsaWRhdGlvbiIpCiAgICAgIGZpCiAgICAgIG5sPTEKICAgICAgY3RwPSQodHB1dCBib2xk KSQodHB1dCBzZXRhZiAkY24pIDsgcnN0PSIkc2dyIgogICAgICA7OwogICAgKCItLWNvbGY9Iiop ICAgICAjIHsgLS1jb2xmPTIzMyB9CiAgICAgIGlmIGxpbmdlLW51bWVyaWMgLUlwICIkezEjKj19 IiA7IHRoZW4KICAgICAgICBjbj0iJHsxIyo9fSIgOyBzaGlmdCA7IHNoaWZ0CiAgICAgIGVsc2UK ICAgICAgICBjbj0yMDggOyBzaGlmdCAxCgllZHZlcnIrPSgiIHstLWNvbGY9TlVNfSBOVU0gZmFp bHMgbnVtZXJpYyB2YWxpZGF0aW9uIikKICAgICAgZmkKICAgICAgbmw9MQogICAgICBjdHA9JCh0 cHV0IGJvbGQpJCh0cHV0IHNldGFmICRjbikgOyByc3Q9IiRzZ3IiCiAgICAgIDs7CiAgICAjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi1s IikKICAgICAgIyB7LWwgTlVNLCAtbH0gYWxsb3dzIG9wdGlvbmFsIGFyZ3VtZW50IHZhbHVlCiAg ICAgIGlmIGxpbmdlLW51bWVyaWMgLUlwICIkMiIgOyB0aGVuCiAgICAgICAgbmw9IiQyIiA7IHNo aWZ0IDsgc2hpZnQKICAgICAgZWxzZQogICAgICAgIG5sPTEgOyBzaGlmdCAxCiAgICAgIGZpCiAg ICAgIDs7CiAgICAoIi1sPSIqKQogICAgICAjIHsgLWw9TlVNLCAtbD0gfSBhbGxvd3Mgb3B0aW9u YWwgYXJndW1lbnQgdmFsdWUKICAgICAgaWYgbGluZ2UtbnVtZXJpYyAtSXAgIiR7MSMqPX0iIDsg dGhlbgogICAgICAgIG5sPSIkezEjKj19IiA7IHNoaWZ0IDEKICAgICAgZWxzZQogICAgICAgIG5s PTEgOyBzaGlmdCAxCiAgICAgIGZpCiAgICAgIDs7CiAgICAoIi1sIiopICAjIHsgLWxOVU0gfQog ICAgICBpZiBsaW5nZS1udW1lcmljIC1JcCAiJHsxIy1sfSIgOyB0aGVuCiAgICAgICAgbmw9IiR7 MSMtbH0iIDsgc2hpZnQgMQogICAgICBlbHNlCiAgICAgICAgbmw9MSA7IHNoaWZ0IDEKCWVkdmVy cis9KCIgey1sTlVNfSBOVU0gZmFpbHMgbnVtZXJpYyB2YWxpZGF0aW9uIikKICAgICAgZmkKICAg ICAgOzsKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAgICgiOiIpIHByaW50ZiAnJXNcbicgIlJlcXVpcmVzIGFuIGFyZ3VtZW50IHZhbHVl IiA7OwogICAgKCI/IikgcHJpbnRmICclc1xuJyAiSW52YWxpZCBvcHRpb246IiA7OwogICAgKCIt LSIpIHNoaWZ0IDEgOyBicmVhayA7OwogICAgKCopIG9wdF9lcnJvcj0xIDsgYnJlYWsgOzsKICAg ICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg ZXNhYwogZG9uZQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgogIyMgaDIgUFJJTlQgUHJpbnQgdGV4dCB3aXRoIHJlZ3VsYXIgb3Igd2Fy bmluZyBjb2xvdXIKCiAjIGFsdGVybmF0aXZlIHZhbGlkYXRpb24gZm9yIGludGVnZXJzIHVzaW5n IHBhcmFtZXRlciBleHBhbnNpb24KICMgdmFyPTEyMzQ1CiAjIGVjaG8gIiR7dmFyLy9bMC05XS99 IgogIyBjYXNlICR7dmFyLy9bMC05XS99IGluCiAjICAgPyopIGVjaG8gInZhcjogc3RyaW5nIG9y IG5vbi1pbnRlZ2VyIiA7OwogIyAgICopICBlY2hvICJ2YXI6IGludGVnZXIiIDs7CiAjIGVzYWMK CiAjIGVjaG8gImFnZ3I6IHwke2FnZ3JbKl19fCIKICMgZWNobyAibndsaW5lOiAkbndsaW5lIHwg bmw6ICRubCIKCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogIyMgcHJpbnRmIGZvcm1hdCBkZXNjcmlwdG9yCiAjICBXaGVu IHRoZXJlIGFyZSBtb3JlIGFyZ3VtZW50cyB0aGFuIGRlY2xhcmVkIGluIHRoZSBwcmludGYgZm9y bWF0CiAjICBkZXNjcmlwdG9yLCB0aGUgZGVzY3JpcHRvciBpcyByZXBlYXRlZCBhcyBuZWNlc3Nh cnkgdG8gY29uc3VtZSBhbGwKICMgIGFyZ3VtZW50cy4KCiBhZ2dyPSgiJEAiKQogKCggbndsaW5l ID09IDEgKSkgJiYgZnM9J1xuJyB8fCBmcz0nICcKCiBpZiAoKCAkeyNlZHZlcnJbQF19ID4gMCAp KTsgdGhlbgogICBwcmludGYgJ1xuJXMlcyVzXG4nICRyZWQgIkxpc3Qgb2YgZGV0ZWN0ZWQgZXJy b3JzIiAkc2dyCiAgIHByaW50ZiAnJXNcbicgIiR7ZWR2ZXJyW0BdfSIKICAgZWNobwogZmkKCiBs b2NhbCByZ2U9J15bMC05XSskJwogaWYgW1sgIiRubCIgPX4gJHJnZSBdXTsgdGhlbgoKICAgaW1w bD0icm5nZSIKICAgY2FzZSAkaW1wbCBpbgogICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLgogICAgIyBJbXBsZW1lbnRhdGlvbiB1c2luZyBhcnJheSBsb29wCiAgICAoImxvb3AiKQog ICAgICBsb2NhbCBhcmdjPSQjCiAgICAgICgoIG5sID4gYXJnYyApKSAmJiBubD0kYXJnYwogICAg ICBmb3IgKCggaj0wOyBqPGFyZ2M7IGorKyApKTsgZG8KCSgoIGorMSA8PSBubCApKSAmJiBwcmlu dGYgJyVzJXMlcyR7ZnN9JyAkY3RwICIke2FnZ3Jbal19IiAkcnN0CgkoKCBqKzEgPiBubCApKSAm JiBwcmludGYgJyVzJHtmc30nICIke2FnZ3Jbal19IgogICAgICBkb25lCiAgICAgIDs7CiAgICAj IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAgICAjIEltcGxlbWVudGF0aW9uIHVzaW5n IGFycmF5IHJhbmdlCiAgICAoInJuZ2UiKQogICAgICAoKCBubCA+IDAgKSkgICYmIHByaW50ZiAi JXMke2ZzfSIgIiR7Y3RwfSR7YWdncltAXTowOm5sfSR7cnN0fSIKICAgICAgKCggbmwgPCAkIyAp KSAmJiBwcmludGYgIiVzJHtmc30iICIke2FnZ3JbQF06bmx9IgogICAgICA7OwogICBlc2FjCgog ZmkKCiAoKCBud2xpbmUgPT0gMCApKSAmJiBlY2hvCiAKIHJldHVybiAwCgp9CgojIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBEZWZpbmUg YSBiYXNoIHNoZWxsIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGFuIGFsaWFzCgpwZm0gKCkKewogIGxp bmdlLXByaW50Zi1tdWx0aXBsZSAiJEAiCn0KCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIyBoMSAqIFNldCBBbGlhc2VzCgojIyBoMiAg ICogVXNlIG9mIENvbG91ciAKCmxpbmdlLXJlZ2lzdGVyICgpCnsKIGxvY2FsIGJsdT0kKHRwdXQg Ym9sZCkkKHRwdXQgc2V0YWYgMzkpCiBsb2NhbCBzZ2E9JGJsdSBzZ3I9JCh0cHV0IHNncjApCiAg ICAgCiBsb2NhbCBmbT0nJXNcbicKIF9QRj0icHJpbnRmICRmbSIKIAogZWNobwogcHJpbnRmICcl c1xuJyAiZWR2YXJ0IiAiKioqKioqIgoKIGVjaG8KICRfUEYgIkZvciB1c2FnZSBpbmZvcm1hdGlv biBpbnZva2UgdGhlIC11IGNvbW1hbmQiCiAkX1BGICIgIGVkdmFydC1tb2xuaXlhLWNvbWludCAt dSIKIAogZWNobyAKICRfUEYgIiRzZ2EgZWR2YXJ0LW1vbG5peWEtY29taW50ICRzZ3IiCiAkX1BG ICIgICBEaXNwbGF5cyBtYXRjaGluZyBwYXR0ZXJucyBpbiBwbGFpbi10ZXh0IGRhdGEgc2V0cy4i CgogZWNobyAKICRfUEYgIiRzZ2EgZWR2YXJ0LW1vbG5peWEtY29taW50ICRzZ3IiCiAkX1BGICIg ICBEaXNwbGF5cyBtYXRjaGluZyBwYXR0ZXJucyBpbiBwbGFpbi10ZXh0IGRhdGEgc2V0cy4iCgog JF9QRiAiJHNnYSBlZHZhcnQtY3lnbml1bS1lbmdpbmUgJHNnciIKICRfUEYgIiAgIFRvb2wgZm9y IGVmZmljaWVudGx5IHRyYW5zZmVycmluZyBhbmQgc3luY2hyb25pemluZyBmaWxlcyIKICRfUEYg IiAgIGJldHdlZW4gbmV0d29ya2VkIGNvbXB1dGVycyBhbmQgc3RvcmFnZSBkZXZpY2VzIGJ5IGNv bXBhcmluZyIKICRfUEYgIiAgIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWVzIGFuZCBzaXplcy4iCgog JF9QRiAiJHNnYSBlZHZhcnQtY3VyaXBsYXlhLXRhdXRvbmEgJHNnciIKICRfUEYgIiAgIFRvb2wg Zm9yIGVmZmljaWVudGx5IHRyYW5zZmVycmluZyBhbmQgc3luY2hyb25pemluZyBmaWxlcyIKfQoK IyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKCjw8LSAiX2NvbW1lbnQiCiogc2V0IGFsdGVybmF0aXZlcyBmb3IgbGlzdGluZyBmaWxl cyBpbiBhIHVuaXgtbGlrZSB0ZXJtaW5hbApfY29tbWVudAoKbGluZ2UtY21kLWxpc3QgKCkKewog bG9jYWwgZXhlY19yYz0wCiBjYXNlICIkMSIgaW4KICAoIi1WInwiLS12ZXJzaW9uIikKICAgIGxv Y2FsIC1yIGV0ZGF0ZT0iVjAxIEp1bCAyMDIxIFdrMjciCiAgICBwcmludGYgJyVzXG4nICIkZXRk YXRlIFN0cmF0ZWdpc3QgQ2hyaXN0b3BoZXIgRGltZWNoIgogICAgcmV0dXJuIDAKICAgIDs7CiAg KCItaCJ8Ii0taGVscCIpCiAgICBwcmludGYgIlNlYXJjaGVzIGlucHV0IGZpbGVzIGZvciBsaW5l cyBjb250YWluaW5nIG1hdGNoZXMuXG4iCiAgICBwcmludGYgInJzICAgRmlsZSB0cmFuc2ZlciBv ZiBhY2hpdmUuXG4iCiAgICBwcmludGYgInJzdSAgVXBkYXRlIGJ5IHNraXBwaW5nIG5ld2VyIGZp bGVzIG9uIHJlY2VpdmVyLlxuIgogICAgcHJpbnRmICJycnMgIFJhcGlkIGZpbGUgdHJhbnNmZXIu XG4iCiAgICByZXR1cm4gMAogICAgOzsKICAjIC0tLS0tLS0tLS0tLS0tLS0tCiAgKCItZSJ8Ii0t ZXhlYyIpIGV4ZWNfcmM9MSA7IHNoaWZ0IDEgOzsKICAjIC0tLS0tLS0tLS0tLS0tLS0tCiAgKCop CiAgICBwcmludGYgIkludm9rZSBcYGxpbmdlLWNtZC1saXN0IC1oJyBmb3IgZGV0YWlscy5cbiIK IGVzYWMKCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCgogaWYgKCggZXhlY19yYyA9PSAxICkpOyB0aGVuCgogICAjIHVzZSBjb2xvdXIgc2No ZW1lIHdoZW4gbGlzdGluZyBmaWxlcyBpbiB1bml4LWxpa2UgdGVybWluYWwKICAgYWxpYXMgbHM9 J2xzIC0tY29sb3InCiAgIGFsaWFzIGRpcj0nZGlyIC0tY29sb3InCiAgIGFsaWFzIHZkaXI9J3Zk aXIgLS1jb2xvcicKICAgYWxpYXMgZ3JlcD0nZ3JlcCAtLWNvbG9yJwogICBhbGlhcyBmZ3JlcD0n ZmdyZXAgLS1jb2xvcicKICAgYWxpYXMgZWdyZXA9J2VncmVwIC0tY29sb3InCgogICAjIC4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogICAjIGxpc3QgaW5mb3JtYXRpb24gYWJvdXQgZmls ZXMKCiAgIGFsaWFzIGxkPSdscyAtZCAqLycgICMgbGlzdCBkaXJlY3RvcmllcwoKICAgYWxpYXMg bGw9J2xzIC1hbEYnCiAgIGFsaWFzIGxhPSdscyAtQScKICAgYWxpYXMgbD0nbHMgLUNGJwogICBh bGlhcyBsdD0nbHMgLWx0JyAgICAgIyBzb3J0IGJ5IGRhdGUKICAgYWxpYXMgbHg9J2xzIC1sWEIn ICAgICMgc29ydCBieSBleHRlbnNpb24KCiAgIGFsaWFzIGxhPSdscyAtQScKICAgYWxpYXMgbGE9 J2xzIC1hRicgICAgICMgTGlzdCBhbGwgYW5kIGZpbGUgdHlwZXMKICAgYWxpYXMgbGw9J2xzIC1h bEYnCiAgIGFsaWFzIGxsPSdscyAtbEYnICAgICAjIExpc3QgPGRpcj4gc3R5bGUKICAgIAogICBh bGlhcyBscj0nbHMgLWxSJyAgICAgIyByZWN1cnNpdmUgbHMKICAgYWxpYXMgbHRyPSdscyAtbHRy JyAgICMgc29ydCBieSBkYXRlIHJlY3Vyc2l2ZWx5CiAgIGFsaWFzIGxjcj0nbHMgLWxjcicgICAj IHNvcnQgYnkgY2hhbmdlIHRpbWUKICAgYWxpYXMgbHVyPSdscyAtbHVyJyAgICMgc29ydCBieSBh Y2Nlc3MgdGltZQoKICAgYWxpYXMgbHNyPSdscyAtbFNyJyAgICMgc29ydCBieSBzaXplCiAgICAK IGZpCgp9CgojIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7CgojIyBoMiAgICogVXRpbGl0aWVzCiMjIGgzICAgICAqIGxpbmdlLWNt ZC11dGlsCgpsaW5nZS1jbWQtdXRpbCAoKQp7CiBsb2NhbCBleGVjX3JjPTAKIGNhc2UgJDEgaW4K ICAgKCItViJ8Ii0tdmVyc2lvbiIpCiAgICAgbG9jYWwgLXIgZXRkYXRlPSJWMDEgSnVsIDIwMjEg V2syNyIKICAgICBwcmludGYgJyVzXG4nICIkZXRkYXRlIFN0cmF0ZWdpc3QgQ2hyaXN0b3BoZXIg RGltZWNoIgogICAgIHJldHVybiAwCiAgICAgOzsKICAgKCItaCJ8Ii0taGVscCIpCiAgICAgcHJp bnRmICJTZXQgYWxpYXNlcyBmb3IgdXRpbGl0aWVzLlxuIgogICAgIHJldHVybiAwCiAgICAgOzsK ICAgKCItZSJ8Ii0tZXhlYyIpIGV4ZWNfcmM9MSA7IHNoaWZ0IDs7CiAgICMgLi4uLi4uLi4uLi4u Li4uLi4KICAgKCopCiAgICAgcHJpbnRmICJJbnZva2UgXGBsaW5nZS1jbWQtdXRpbCAtaCcgZm9y IGRldGFpbHMuXG4iCiBlc2FjCgogaWYgKCggZXhlY19yYyA9PSAxICkpOyB0aGVuCgogICAjIHJl Y3Vyc2l2ZSBsaXN0aW5nIG9mIGRpcmVjdG9yaWVzIGFuZCBmaWxlcwogICAjIGxpc3QgZGlyZWN0 b3JpZXMgb25seSB3aXRoIGRpc3BsYXkgZGVwdGggYC1MIExFVkVMYAogICBhbGlhcyB0ZGw9J3Ry ZWUgLWQgLUwnCiAgICAgCiAgICMgcmVtb3ZlIGVhY2ggZ2l2ZW4gZmlsZQogICBhbGlhcyBybWk9 J3JtIC1pJyAgICAjIHByb21wdCBiZWZvcmUgZXZlcnkgcmVtb3ZhbAogICBhbGlhcyBybWY9J3Jt IC1mJyAgICAjIGlnbm9yZSBub24tZXhpc3RlbnQgZmlsZXMsIG5ldmVyIHByb21wdAoKICAgIyB2 aWV3IHRleHQgZmlsZXMsIGBsZXNzJyBkb2VzIG5vdCByZWFkIGVudGlyZSBmaWxlIGJlZm9yZSBk aXNwbGF5CiAgIGFsaWFzIGw9J2xlc3MnICAgICAgICMgZmFzdGVyIHRoYW4gYG1vcmUnIHdpdGgg YmFja3dhcmQgbW92ZW1lbnQKICAgYWxpYXMgbT0nbW9yZScgICAgICAgIyByZWFkcyBlbnRpcmUg ZmlsZSBiZWZvcmUgZGlzcGxheQoKICAgIyB2aWV3IHBkZiBmaWxlcwogICBhbGlhcyBwZGZhPSdh dHJpbCcgICAjIHZpZXcgcGRmIGZpbGVzCiAgIGFsaWFzIHBkZmU9J2V2aW5jZScgICMgdmlldyBw ZGYgZmlsZXMKICAgIAogICAjIHNpZGUtYnktc2lkZSBmaWxlIGRpZmZlcmVuY2UgdXNpbmcgY29t bWFuZCB0ZXJtaW5hbCB3aWR0aAogICBhbGlhcyBkaWZzaWRlPSdkaWZmIC15IC1XICQoKCAkKHRw dXQgY29scykgLSAyICkpJwoKICAgYWxpYXMgZmVzdGl2b3g9J3hzZWwgfCBmZXN0aXZhbCAtLXR0 cycgICMgdGV4dCB0byBzcGVlY2gKICAgYWxpYXMgZmlnbGV0X3Nob3dmb250cz0nc2hvd2ZpZ2Zv bnRzJyAgIyBzaG93IGZpZ2xldCBmb250cwoKIGZpCgp9CgojIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CgojIyBoMiAgICogUGF0 aCBsb2NhdGlvbnMKCiMjIGgzICAgICAqIGxpbmdlLWVudmlyb24tYWRtaXIKCmxpbmdlLWVudmly b24tYWRtaXIgKCkKewogbG9jYWwgZXhlY19yYz0wCiBjYXNlICQxIGluCiAgKCItViJ8Ii0tdmVy c2lvbiIpCiAgICBsb2NhbCAtciBldGRhdGU9IlYwMSBKdWwgMjAyMSBXazI3IgogICAgcHJpbnRm ICclc1xuXG4nICIkZXRkYXRlIFN0cmF0ZWdpc3QgQ2hyaXN0b3BoZXIgRGltZWNoIgogICAgcmV0 dXJuIDAKICAgIDs7CiAgKCItaCJ8Ii0taGVscCIpCiAgICBwcmludGYgIlNldCBhbGlhc2VzIGZv ciBwYXRoIGxvY2F0aW9ucy5cbiIKICAgIHByaW50ZiAiYWdlbmRhOiBIT01FL0FnZW5kYVxuIgog ICAgcHJpbnRmICJnbnVwYTogIEhPTUUvQWN0aXZlSm9icy9Cb29rcy9JbmZvY3MvR251cGFcbiIK ICAgIHByaW50ZiAidGRyOiAgICBIT01FL0FjdGl2ZUpvYnMvUmVwb3J0cy9UZHIiCiAgICByZXR1 cm4gMAogICAgOzsKICAjIC4uLi4uLi4uLi4uLi4uLi4uCiAgKCItZSJ8Ii0tZXhlYyIpIGV4ZWNf cmM9MSA7IHNoaWZ0IDs7CiAgIyAuLi4uLi4uLi4uLi4uLi4uLgogICgqKQogICAgcHJpbnRmICcl c1xuJyAiSW52b2tlIFxgbGluZ2UtZW52aXJvbi1hZG1pciAtaCcgZm9yIGRldGFpbHMuIgogZXNh YyAjIGNhc2UgZW5kcyBoZXJlCgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK ICMgU2V0IHNob3J0Y3V0cyB0byBzcGVjaWZpYyBkaXJlY3RvcmllcwogaWYgKCggZXhlY19yYyA9 PSAxICkpOyB0aGVuCiAgIGFsaWFzIGFnZW5kYT0ke0hPTUV9L0FnZW5kYQogICBhbGlhcyBnbnVw YT0ke0hPTUV9L0FjdGl2ZUpvYnMvQm9va3MvSW5mb2NzL0dudXBhCiAgIGFsaWFzIHRkcj0ke0hP TUV9L0FjdGl2ZUpvYnMvUmVwb3J0cy9UZHIKICAgYWxpYXMgdGRyZGV2PSR7SE9NRX0vMDUtRGV2 ZWxvcG1lbnQKICAgYWxpYXMgaGFnYmFyZD0nZWNobyBhZ2VuZGEgZ251cGEgdGRyZGV2JwogZmkK Cn0KCiMgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OzsKCiMjIGgzIGxpbmdlLWFnZ3ItdXRpbAoKbGluZ2UtYWdnci11dGlsICgpCnsK IGxvY2FsIGV4ZWNfcmM9MAogY2FzZSAkMSBpbgogICgiLVYifCItLXZlcnNpb24iKQogICAgbG9j YWwgLXIgZXRkYXRlPSJWMDEgSnVsIDIwMjEgV2syNyIKICAgIHByaW50ZiAnJXNcblxuJyAiJGV0 ZGF0ZSBTdHJhdGVnaXN0IENocmlzdG9waGVyIERpbWVjaCIKICAgIHJldHVybiAwCiAgICA7Owog ICgiLWgifCItLWhlbHAiKQogICAgcHJpbnRmICdTZXQgYWxpYXNlcyBmb3IgcGF0aCBsb2NhdGlv bnMuXG4nCiAgICBwcmludGYgJ2FnZW5kYTogSE9NRS9BZ2VuZGFcbicKICAgIHByaW50ZiAnZ251 cGE6ICBIT01FL0FjdGl2ZUpvYnMvQm9va3MvSW5mb2NzL0dudXBhXG4nCiAgICBwcmludGYgJ3Rk cjogICAgSE9NRS9BY3RpdmVKb2JzL1JlcG9ydHMvVGRyJwogICAgcmV0dXJuIDAKICAgIDs7CiAg IyAuLi4uLi4uLi4uLi4uLi4uLgogICgiLWUifCItLWV4ZWMiKSBleGVjX3JjPTEgOyBzaGlmdCAx IDs7CiAgIyAuLi4uLi4uLi4uLi4uLi4uLgogICgqKQogICAgcHJpbnRmICdJbnZva2UgXGBsaW5n ZS1hZ2dyLXV0aWwgLWhcYCBmb3IgZGV0YWlscy5cbicKICAgIDs7CiBlc2FjCgogaWYgKCggZXhl Y19yYyA9PSAxICkpOyB0aGVuCiAgIGxpbmdlLWNtZC1saXN0IC0tZXhlYwogICBsaW5nZS1jbWQt dXRpbCAtLWV4ZWMKICAgbGluZ2UtZW52aXJvbi1hZG1pciAtLWV4ZWMKIGZpCn0KCiMgLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4K CiMjIGgzIGxpbmdlLWVudmlyb24tb3Bjb20KCmxpbmdlLWVudmlyb24tb3Bjb20gKCkKewogIyBQ cmludHMgdXNlZnVsIGRpcmVjdG9yaWVzLiAgCiBzZ3I9JCh0cHV0IHNncjApIDsgc2dhPSQodHB1 dCBzZXRhZiAyMDApCiAKIHByaW50ZiAiJHtzZ2F9VXNlZnVsIERpcmVjdG9yaWVzOiIKIHByaW50 ZiAiIGNkIH4vMDFjaGFvcy90ZHIgIGNkIGFkbWlyL2d1bmdhZGluJHtzZ3J9Igp9CgojID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKIyMgaDMg bGluZ2UtdXNhZ2UtY2FsCgpsaW5nZS11c2FnZS1jYWxjICgpCnsKIGNhc2UgJDEgaW4KICAoMSkK ICAgICBwcmludGYgJyVzXG4nICJsaW5nZS1jYWxjIE9QVElPTlMgRVhQUiIKICAgICBwcmludGYg JyVzXG4nICItdiBMViwgLXY9TFYsIC12TFYsIC0tdmVyYm9zaXR5IExWLCAtLXZlcmJvc2l0eT1M ViIKICAgICBwcmludGYgJyVzXG4nICItdSBMViwgLXU9TFYsIC11TFYsIC0tdXNhZ2UgTFYsIC0t dXNhZ2U9TFYiCiAgICAgcHJpbnRmICclc1xuJyAiey1WLCAtLXZlcnNpb259LCB7LWgsIC0taGVs cH0iCiAgICAgOzsKICAoMikKICAgICBIREcgIlVzYWdlIgogICAgIHByaW50ZiAnJXNcbicgIiAg bGluZ2UtY2FsYyBcIjE4LjIxICsgMzQuNTVcIiIKICAgICBwcmludGYgJyVzXG4nICIgIGxpbmdl LWNhbGMgXCIxMF4yXCIiCiAgICAgcHJpbnRmICclc1xuJyAiICBsaW5nZS1jYWxjIFwidmFyPTEw IDsgKyt2YXJcIiIKICAgICBwcmludGYgJyVzXG4nICIgIGxpbmdlLWNhbGMgXCJ2YXI9MTAgOyB2 YXIrK1wiIgogICAgIHByaW50ZiAnJXNcbicgIiAgbGluZ2UtY2FsYyBcIjEwID4gNVwiIgogICAg IDs7CiBlc2FjCQp9CgojICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwoKIyMgaDMgbGluZ2UtY2FsYwoKbGluZ2UtY2FsYyAoKQp7CiB3aGlsZSAo KCAkIyA+IDAgKSk7IGRvCiAgIG9wdD0iJDEiCiAgIGNhc2UgJG9wdCBpbgogICAgKCItViJ8Ii0t dmVyc2lvbiIpCiAgICAgIGxvY2FsIC1yIGV0ZGF0ZT0iVjAxIEp1bCAyMDIxIFdrMjciCiAgICAg IHBmbSAiJGV0ZGF0ZSBNYXRlbWF0aWtlciBDaHJpc3RvcGhlciBEaW1lY2giICIiCiAgICAgIHJl dHVybiAwCiAgICAgIDs7CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgICAoIi12InwiLS12ZXJib3NpdHkiKSAgdmI9IiQyIiA7IHNoaWZ0 IDsgc2hpZnQgOzsKICAgICgiLXY9Iip8Ii0tdmVyYm9zaXR5PSIqKSB2Yj0iJHsxIyo9fSI7IHNo aWZ0IDEgOzsKICAgICgiLXYiKikgdmI9IiR7MSMtdn0iOyBzaGlmdCAxIDs7CiAgICAjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAoIi11Inwi LS11c2FnZSIpCiAgICAgIHJldHVybiAwCiAgICAgIDs7CiAgICAoIi1oInwiLS1oZWxwIikKICAg ICAgcHJpbnRmICIlc1xuIiAiUGVyZm9ybXMgbWF0aGVtYXRpY2FsIGNvbXB1dGF0aW9ucyB3aXRo IGJjLiIKICAgICAgcHJpbnRmICIlc1xuIiAiRVhQUiAgTWF0aGVtYXRpY2FsIGV4cHJlc3Npb24u IgogICAgICBIREcgIlN1cHBvcnRlZCBNYXRoZW1hdGljYWwgRnVuY3Rpb25zIgogICAgICBQRiAi IHMoeCkgICAgU2luZSBvZiB4LCB4IGlzIGluIHJhZGlhbnMiCiAgICAgIFBGICIgYyh4KSAgICBD b3NpbmUgb2YgeCwgeCBpcyBpbiByYWRpYW5zIgogICAgICBQRiAiIGEoeCkgICAgQXJjdGFuZ2Vu dCBvZiB4LCBhcmN0YW5lbnQgcmV0dXJucyByYWRpYW5zIgogICAgICBQRiAiIGwoeCkgICAgTmF0 dXJhbCBsb2dhcml0aG0gb2YgeCIKICAgICAgUEYgIiBlKHgpICAgIEV4cG9uZW50aWFsIGZ1bmN0 aW9uIG9mIHJhaXNpbmcgZSB0byB0aGUgdmFsdWUgeCIKICAgICAgUEYgIiBqKG4seCkgIEJlc3Nl bCBmdW5jdGlvbiBvZiBpbnRlZ2VyIG9yZGVyIG4gb2YgeCIKICAgICAgUEYgIiBzcXJ0KHgpIFNx dWFyZSByb290IG9mIG51bWJlciB4IgogICAgICByZXR1cm4gMAogICAgICA7OwogICAgIyAuLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgICgqKSBicmVhayA7OwogICAgIyAuLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICAgZXNhYyAgIyAgY2FzZSBlbmRzIGhlcmUKIGRvbmUg ICMgd2hpbGUgZW5kcyBoZXJlCgogcnNsdD0kKCBlY2hvICIkMSIgfCBiYyAtbCApCgogZWNobyAi JHJzbHQiCn0KCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CgojIyBoMyBsaW5nZS10YWJsZQoKbGluZ2UtdGFibGUgKCkKewogbG9jYWwgdmI9 MSBwcmVkaWNhdGVfZXJyb3I9MCB3aWR0aD0wIGFsaWduPSJyaWdodCIKCiBsb2NhbCBfUEY9InBy aW50ZiAlc1xuIgogbG9jYWwgX1BGMT0icHJpbnRmIFxuJXNcbiIgX1BGMj0icHJpbnRmICVzXG5c biIKCiAjICogTmVnYXRpdmUgUHJlZml4ZXMgKG5vbi0gYW5kIHVuLSkKICMgICB1bi0gICBJbmRp Y2F0ZXMgbm90LCBsYWNrIG9mLCBvciBhYnNlbmNlIG9mIHNvbWV0aGluZy4KICMgICBub24tICBV c2VkIHdpdGggYW55IHdvcmQsIHRodXMgdGhlIG1vc3QgdXNlZnVsIGFuZCB2ZXJzYXRpbGUuCiAK IHdoaWxlICgoICQjID4gMCApKTsgZG8gICMgJCMgaXMgZGVjcmVtZW50ZWQgYnkgc2hpZnQKICBv cHQ9IiQxIgogIGNhc2UgJG9wdCBpbgogICAoIi1WInwidmVyc2lvbiIpCiAgICAgbG9jYWwgLXIg ZXRkYXRlPSJWMDEgSnVsIDIwMjEgV2syNyIgICAKICAgICAkX1BGMiAiICRldGRhdGUgU3RyYXRl Z2lzdCBDaHJpc3RvcGhlciBEaW1lY2giCiAgICAgcmV0dXJuIDAKICAgICA7OwogICAoIi1oInwi LS1oZWxwIikKICAgICAkX1BGICJQcmludHMgcGFyYW1ldGVycyBpbiB0YWJsZSBmb3JtYXQiCiAg ICAgJF9QRiAiSW5jbHVkZXMgRHluYW1pYyBXaWR0aCBBZGp1c3RtZW50IgogICAgIHJldHVybiAw CiAgICAgOzsKICAgKCItdSJ8Ii0tdXNhZ2UiKQogICAgIHByaW50ZiAnXG4lcycgIlVzYWdlIiAi KioqKioiCiAgICAgcHJpbnRmICdcblxuJXNcbicgImxpbmdlLWNhbGMgT1BUSU9OUyBFWFBSIgog ICAgIHByaW50ZiAnJXNcblxuJyAiLVYsIC0tdmVyc2lvbiwgLXUsIC0tdXNhZ2UsIC1oLCAtLWhl bHAiCiAgICAgcHJpbnRmICclc1xuJyAiRXhhbXBsZXMiICIqKioqKioqKiIKICAgICBzYT0iXCJU aGUgZmluZXN0XCIgXCJtYW4gSSBrbmV3XCIiCiAgICAgc2I9IlwiV2FzIG91clwiIFwicmVnaW1l bnRhbCBiaGlzdGksXCIgXCJHdW5nYSBEaW4sXCIiCiAgICAgJF9QRjEgImxpbmdlLXRhYmxlIC13 IDE4IC0tYWxpZ24gXCJsXCIgJHNhIgogICAgICRfUEYgImxpbmdlLXRhYmxlIC13IDE4IC0tYWxp Z24gXCJyXCIgJHNiIgogICAgIHJldHVybiAwCiAgICAgOzsKICAgIyAuLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4KICAgIyBzZXBhcmF0ZSB2YWx1ZXMgYnkgYSBzcGFjZSB7LXYgMn0gb3Ig ZXF1YWwgc2lnbiB7LXY9Mn0KICAgKCItdiJ8Ii0tdmVyYm9zaXR5IikgdmI9IiQyIiA7IHNoaWZ0 IDIgOzsKICAgKCItdj0iKnwiLS12ZXJib3NpdHk9IiopCiAgICAgdmI9IiR7MSMqPX0iCiAgICAg bGluZ2UtbnVtZXJpYyAtZiAicEkiICIkdmIiCiAgICAgc2hpZnQgMQogICAgIDs7CiAgICMgLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAgICgiLXcifCItLXdpZHRoIikgd2lkdGg9IiQy IiA7IHNoaWZ0IDIgOzsKICAgKCItdz0iKnwiLS13aWR0aD0iKikgd2lkdGg9IiR7MSMqPX0iIDsg c2hpZnQgMSA7OwogICAjCiAgICgiLS1hbGlnbiIpIGFsaWduPSIkMiIgOyBzaGlmdCAyIDs7CiAg ICgiLS1hbGlnbj0iKikgYWxpZ249IiR7MSMqPX0iIDsgc2hpZnQgMSA7OwogICAjIC4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLgogICAjCiAgICgiLS0iKQogICAgICAgICAgIyBsZWF2ZSBs b29wIGF0IHN0YXJ0IG9mIG5vbi1vcHRpb24gYXJndW1lbnRzCiAgICAgICAgICBzaGlmdCAxIDsg YnJlYWsgOzsKICAgKCItIiopCiAgICAgICAgICAjIGRldGVjdCB1bi1wbGFubmVkIG9wdGlvbnMK ICAgICAgICAgIHByZWRpY2F0ZV9lcnJvcj0xCiAgICAgICAgICBpZiAoKCB2YiA+PSAxICkpOyB0 aGVuCiAgICAgICAgICAgIHByaW50ZiAnXG4lc1xuJyAiPyB1bnJlY29nbmlzZWQgcHJlZGljYXRl ICQxIgogICAgICAgICAgZmkgIAogICAgICAgICAgc2hpZnQgMQogICAgICAgICAgOzsKICAgKCop CiAgICAgICAgICAjIHByZWRpY2F0ZSBlcnJvciBvciBzdGFydCBvZiBub24tb3B0aW9uIGFyZ3Vt ZW50cwogICAgICAgICAgaWYgWyAiJHByZWRpY2F0ZV9lcnJvciIgLWVxIDEgXTsgdGhlbgoJICAg IHByZWRpY2F0ZV9lcnJvcj0yCiAgICAgICAgICAgIGlmICgoIHZiID49IDEgKSk7IHRoZW4KICAg ICAgICAgICAgICBwcmludGYgJyVzXG5cbicgIjogdW5yZWNvZ25pc2VkIG9yIG1pc3NpbmcgdmFs dWUgJDEiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIHNoaWZ0IDEKICAgICAgICAgIGVsc2UK CSAgICBpZiAoKCB2YiA+PSAzICkpOyB0aGVuCiAgICAgICAgICAgICAgJF9QRjEgIlN0YXJ0IG9m IG5vbi1vcHRpb24gYXJndW1lbnRzLCBsZWF2ZSBvcHRpb24gbG9vcCIKICAgICAgICAgICAgICBw cmludGYgJyVzXG5cbicgImFyZzogJDEiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIGJyZWFr CiAgICAgICAgICBmaQogICAgICAgICAgOzsKICBlc2FjICMgY2FzZSBlbmRzIGhlcmUKIGRvbmUg IyB3aGlsZSBlbmRzIGhlcmUKCiAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAj IER5bmFtaWMgYWRqdXN0bWVudCBvZiBjZWxsIHdpZHRoCgogbG9jYWwgZHluYWRqPTAKIGZvciBh cmcgaW4gIiRAIgogZG8KICAgIyBBbHRlcm5hdGl2ZSBjb25kaXRpb25hbCB8IFsgIiR7I2FyZ30i IC1ndCAiJHdpZHRoIiBdCiAgICgoICR7I2FyZ30gPiB3aWR0aCApKSAmJiB7IHdpZHRoPSR7I2Fy Z30gOyBkeW5hZGo9MSA7IH0KIGRvbmUKCiBpZiAoKCBkeW5hZGogPiAwICYmIHZiID4gMSApKTsg dGhlbgogICBwcmludGYgIiVzXG4iICJEeW5hbWljIENlbGwgV2lkdGggQWRqdXN0bWVudCIKICAg cHJpbnRmICIlc1xuXG4iICJ3aWR0aDogQWRqdXN0ZWQgdG8gJHdpZHRoIgogZmkKCiAjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGxvY2Fs IGZybXQ9IiUke3dpZHRofXMgIHwgICIKIGlmIFsgIiRhbGlnbiIgPSAibGVmdCIgXSB8fCBbICIk YWxpZ24iID0gImwiIF07IHRoZW4KICAgZnJtdD0iJS0ke3dpZHRofXMgIHwgICIKIGZpCiAoKCB2 YiA+IDEgKSkgJiYgcHJpbnRmICclc1xuJyAiZnJtdDogJGZybXQiCgogcHJpbnRmICIkZnJtdCIg IiRAIiA7IGVjaG8KfQoKIyA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwoKIyMgaDEgKiBUZXJtaW5hbCBQcm9tcHQgU3RyaW5nCgo8 PCBfY29tbWVudAoqIENvbW1hbmQgdGVybWluYWwgcHJvbXB0IGFuZCBkaXJjb2xvcnMKU2V0IGRp cmVjdG9yeSBwYXRoIGFuZCBmaWxlIG5hbWUgZm9yIGRpcmNvbG9ycyBzZXR1cApTZWUgTWFyZ2lu YWxpYSBTZWN0aW9uIFtBXQpfY29tbWVudAoKIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKIyMgaDIgICAqIGxpbmdlLWNvbnNv bGUtdGNvZGVzCgojIyBoMyAgICogbGluZ2UtY29uc29sZS10Y29kZXMKCmxpbmdlLWNvbnNvbGUt dGNvZGVzICgpCnsKIGxvY2FsIHZiPTAgZXhlY19yYz0wCiBsb2NhbCBfUEY9InByaW50ZiAlc1xu IiBfUEYyPSJwcmludGYgJXNcblxuIgoKICMgJCMgaXMgZGVjcmVtZW50ZWQgYnkgc2hpZnQKIHdo aWxlICgoICQjID4gMCApKTsgZG8KICBvcHQ9IiQxIgogIGNhc2UgJG9wdCBpbgogICAoIi1WInwi dmVyc2lvbiIpCiAgICAgbG9jYWwgLXIgZXRkYXRlPSJWMDEgSnVsIDIwMjEgV2syNyIgICAKICAg ICAkX1BGMiAiICRldGRhdGUgU3RyYXRlZ2lzdCBDaHJpc3RvcGhlciBEaW1lY2giCiAgICAgcmV0 dXJuIDAKICAgICA7OwogICAoIi1oInwiLS1oZWxwIikKICAgICAkX1BGICJTZXQgY29uc29sZSBw cm9tcHQgd2l0aCA4LWJpdCAoMl44ID0gMjU2KSBjb2xvdXJzIHVzaW5nIgogICAgICRfUEYgInRo ZSB0ZXJtaW5mbyBkYXRhYmFzZS4iCiAgICAgJF9QRiAiQ29uc29sZSBDb21tYW5kIExpbmUgVGVy bWluYWwgaXMgYSB0ZXh0IGludGVyZmFjZSIKICAgICAkX1BGICJmb3IgZXhlY3V0aW5nIHVuaXgt bGlrZSBwcm9ncmFtcy4iCiAgICAgcmV0dXJuIDAKICAgICA7OwogICAjIC4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLgogICAjIHNlcGFyYXRlIHZhbHVlcyBieSBhIHNwYWNlIHstdiAyfSBv ciBlcXVhbCBzaWduIHstdj0yfQogICAoIi12InwiLS12ZXJib3NpdHkiKSB2Yj0iJDIiIDsgc2hp ZnQgMiA7OwogICAoIi12PSIqfCItLXZlcmJvc2l0eT0iKikgdmI9IiR7MSMqPX0iIDsgc2hpZnQg MSA7OwogICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogICAoIi1lInwiLS1leGVj IikgZXhlY19yYz0xIDsgc2hpZnQgMSA7OwogICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLgogICAjIGxlYXZlIHdoaWxlIGxvb3AgYXQgc3RhcnQgb2Ygbm9uLW9wdGlvbiBhcmd1bWVu dHMKICAgKCItLSIpIHNoaWZ0IDEgOyBicmVhayA7OwogICAoIi0iKikgJF9QRiAiPyB1bnJlY29n bmlzZWQgcHJlZGljYXRlICQxIiA7IHNoaWZ0IDEgOzsKICAgKCopICRfUEYgIjogdW5yZWNvZ25p c2VkIG9yIG1pc3NpbmcgdmFsdWUgJDEiOyBzaGlmdCAxIDs7CiAgZXNhYwogZG9uZSAjIHdoaWxl IGVuZHMgaGVyZQoKICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4KCiAjIHByaW50ZiBmb3JtYXQgc3RyaW5nIHJlcGVhdHMgZm9yIGFsbCBhcmd1 bWVudHMgcHJlc2VudAogaWYgKCggdmIgPj0gMiApKTsgdGhlbgogICBwcmludGYgJyVzXG4nICIi ICJPcHRpb24gYXJndW1lbnRzIiAiKioqKioqKioqKioqKioqKiIKICAgJF9QRiAiIiAidmI6ICR2 YiIgImV4ZWNfcmM6ICRleGVjX3JjIiAKIGZpCiAKIG9wdHM9IiRAIgogaWYgKCggdmIgPj0gMSAp KQogdGhlbgogICBpZiAoKCAkIyA+IDAgKSk7IHRoZW4KICAgICBwcmludGYgJyVzXG4nICIiICJO b24tb3B0aW9uIGFyZ3VtZW50cyIgIioqKioqKioqKioqKioqKioqKioqIgogICAgIHByaW50ZiAn JXNcbicgIiIgIm9wdHM6ICRvcHRzIiAiIgogICBlbHNlCiAgICAgcHJpbnRmICclc1xuJyAiIiAi IyBObyBub24tb3B0aW9uIGFyZ3VtZW50cyBlbmNvdW50ZXJlZCIgIiIKICAgZmkKIGZpCgogIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQoKICMgKiA4LUJpdCB0cHV0IHByb2Nlc3NpbmcgZm9yIDI1Ni1jb2xvdXIgY2FwYWJpbGl0 eQogIyAgIFRoZSB0cHV0IHV0aWxpdHkgdXNlcyB0aGUgdGVybWluZm8gZGF0YWJhc2UgdG8gZ2Vu ZXJhdGUKICMgICB0ZXJtaW5hbC1kZXBlbmRlbnQgb3V0cHV0IHRvIHRoZSBzaGVsbC4KIAogbG9j YWwgc2dyIGRibHVlIGdyZW4zIG1vcmNkIG9yYW5yCiBzZ3I9JCh0cHV0IHNncjApCiB3aGl0ZT0k KHRwdXQgc2V0YWYgNykgICA7IGRibHVlPSQodHB1dCBzZXRhZiAzMykgCiBtb3JjZD0kKHRwdXQg c2V0YWYgMTcxKSA7IG9yYW5yPSQodHB1dCBzZXRhZiAyMDIpCgogIyBFeHBhbnNpb24gb2Ygd29y a2luZyBkaXJlY3RvcnkgYXMgaWYgaXQgd2VyZSBhIHByb21wdCBzdHJpbmcKIGxvY2FsIHdvcmtk cj0iXHciIDsgd29ya2RyPSR7d29ya2RyQFB9ICAjIHBhcmFtZXRlciBleHBhbnNpb24KCiAjIERl dGVybWluZSBsZW5ndGggb2YgUFMxIHByb21wdCBzdHJpbmcKIGxvY2FsIHVzZXJubT0iJFVTRVIi IGhvc3RubT1gY2F0IC9wcm9jL3N5cy9rZXJuZWwvaG9zdG5hbWVgCiBsb2NhbCBwc3RyPSIke3Vz ZXJubX1AJHtob3N0bm19OiAkd29ya2RyIgogbG9jYWwgcGxlbj0iJHsjcHN0cn0iIDsgd2xlbj0k KCggcGxlbiAtIGhsZW4gKyAxICkpCiAKIGxvY2FsIHNhIHNiIHdhIHdiCiBpZiAoKCB2YiA+PSAz ICkpOyB0aGVuCiAgIHByaW50ZiAnJXNcbicgIkZ1bmN0aW9uIHZhcmlhYmxlcyIgIioqKioqKioq KioqKioqKioqKiIgIiIKICAgcHJpbnRmICclc1xuJyAid29ya2RyOiAkd29ya2RyIgogICBwcmlu dGYgJyVzXG4nICJ1c2Vybm06ICR1c2Vybm0iCiAgIHByaW50ZiAnJXNcbicgImhvc3RubTogJGhv c3RubSIKICAgcHJpbnRmICclc1xuJyAicHN0cjogICAkcHN0ciIKICAKICAgc2E9InBsZW46ICRw bGVuIiA7IHdhPSR7I3NhfSA7IHdhPSQoKCB3YSArIDIgKSkKICAgc2I9IndsZW46ICR3bGVuIiA7 IHdiPSR7I3NifSA7IHdiPSQoKCB3YiArIDIgKSkKCiAgICMgcHJpbnQgcGxlbiBhbmQgd2xlbiBp biBhIHRhYmxlCiAgIHRhYmxfYWxpZ249ImxlZnQtYWxpZ24iCiAgIGlmIFsgIiR0YWJsX2FsaWdu IiA9ICJsZWZ0LWFsaWduIiBdOyB0aGVuCiAgICAgZnJtdD0iJS0ke3dhfXMgIHwgICUtJHt3YX1z XG4iCiAgICAgcHJpbnRmICclc1xuJyAiZnJtdDogJGZybXQiCiAgICAgcHJpbnRmICIkZnJtdCIg IiRzYSIgIiRzYiIKICAgZWxpZiBbICIkdGFibF9hbGlnbiIgPSAicmlnaG4tYWxpZ24iIF07IHRo ZW4KICAgICBmcm10PSIlJHt3YX1zICB8ICAlJHt3YX1zXG4iCiAgICAgcHJpbnRmICclc1xuJyAi ZnJtdDogJGZybXQiCiAgICAgcHJpbnRmICIkZnJtdCIgIiRzYSIgIiRzYiIKICAgZWxzZQogICAg IHByaW50ZiAiJXNcbiIgInBsZW46ICRwbGVuO3wgIHdsZW46ICR3bGVuIiB8IGNvbHVtbiAtdCAt cyAnOycKICAgZmkKICAgCiBmaQoKICMgKiBCYXNoIFNoZWxsIGhhcyBmb3VyIGNvbnNvbGUgdGVy bWluYWwgY29tbWFuZCBwcm9tcHQgdmFyaWFibGVzLgogIyAgIFBTMSAgRXhwYW5kZWQgYW5kIHVz ZWQgYXMgdGhlIHByaW1hcnkgcHJvbXB0IHN0cmluZyBzaG93aW5nIHRoZQogIyAgICAgICAgU3lz dGVtIFVzZXIgTmFtZSwgTWFjaGluZSBIb3N0IE5hbWUsIGFuZCBXb3JraW5nIERpcmVjdG9yeS4K ICMgICAgICAgIEZvciBQUzEsIG5vbi1wcmludGluZyBzZXF1ZW5jZXMgYXJlIGVuY2xvc2VkIGJ5 IFxbIGFuZCBcXS4KICMgICBQUzAgIEV4cGFuZGVkIGFuZCB1c2VkIGJ5IGludGVyYWN0aXZlIHNo ZWxscyBhZnRlciByZWFkaW5nIGEKICMgICAgICAgIGNvbW1hbmQgYW5kIGJlZm9yZSB0aGUgY29t bWFuZCBpcyBleGVjdXRlZC4KIAogaWYgKCggd2xlbiA+IDcyICkpOyB0aGVuCiAgICMgV29ya2lu ZyBkaXJlY3RvcnkgaXMgcHJpbnRlZCBvbiB0aGUgbmV4dCBsaW5lLgogICBQUzE9IlxuXFske2Ri bHVlfVxdXHVcWyR7d2hpdGV9XF1AXFske2RibHVlfVxdXGhcWyR7d2hpdGV9XF06XG4iCiAgIFBT MT0iJFBTMSsgXFske21vcmNkfVxdXHdcblxbJHtvcmFucn1cXSIKIGVsc2UKICAgUFMxPSJcblxb JHtkYmx1ZX1cXVx1XFske3doaXRlfVxdQFxbJHtkYmx1ZX1cXVxoXFske3doaXRlfVxdOiIKICAg UFMxPSIkUFMxIFxbJHttb3JjZH1cXVx3XG5cWyR7b3JhbnJ9XF0iCiBmaQogICAKIFBTMD0iJHtz Z3J9IiAKCn0KCiMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4KCiMjIGgzIGxpbmdlLXByb21wdAoKbGluZ2UtcHJvbXB0ICgpCnsK IGxpbmdlLWNvbnNvbGUtdGNvZGVzICIkQCIKfQoKIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKIyMgaDIgICAqIGxpbmdlLWNv bnNvbGUtb2NiaXQtZWNvZGVzCgpsaW5nZS1jbnNsLW9jYml0LWVjb2RlcyAoKQp7CiBsb2NhbCBl eGVjX3JjPTAKIHdoaWxlICgoICQjID4gMCApKTsgZG8KICAgb3B0PSIkMSIKICAgY2FzZSAkb3B0 IGluCiAgICAoIi1WInwiLS12ZXJzaW9uIikKICAgICAgbG9jYWwgLXIgZXRkYXRlPSJWMDEgSnVs IDIwMjEgV2syNyIKICAgICAgcHJpbnRmICclc1xuJyAiJGV0ZGF0ZSBTdHJhdGVnaXN0IENocmlz dG9waGVyIERpbWVjaCIKICAgICAgcmV0dXJuIDAKICAgICAgOzsKICAgICgiLWgifCItLWhlbHAi KQogICAgICBwcmludGYgIlVzZXMgYW4gOC1iaXQgY29sb3VyIGNvbW1hbmQgdGVybWluYWwgcHJv bXB0LlxuIgogICAgICBwcmludGYgIk9jdGEtQml0IGNvbG91ciB1c2VzIDI1NiAoMl44KSBjb2xv dXJzLlxuIgogICAgICBwcmludGYgIkVzY2FwZSBjb2RlcyBhcmUgdXNlZC5cbiIKICAgICAgcmV0 dXJuIDAKICAgICAgOzsKICAgICMgLi4uLi4uLi4uLi4uLi4uCiAgICAoIi1lInwiLS1leGVjIikg ZXhlY19yYz0xIDsgc2hpZnQgMSA7OwogICAgIyAuLi4uLi4uLi4uLi4uLi4KICAgICgqKSBzaGlm dCAxIDs7CiAgIGVzYWMgIyBjYXNlIGVuZHMgaGVyZQogZG9uZSAjIHdoaWxlIGVuZHMgaGVyZQoK ICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCiAgaWYgKCggZXhlY19yYyA9PSAxICkpOyB0aGVuCiAgIHNncj0iXDAzM1szOW0i ICAgICAgIDsgY3lhbjE9IlxlWzM4OzU7NTFtIgogICBnb2xkMT0iXGVbMzg7NTsyMTRtIiA7IHJl ZDE9IlxlWzM4OzU7MTk2bSIKCiAgICMgUFMxIHVzZXMgXFsgYW5kIFxdIHRvIGJlZ2luIGFuZCBl bmQgYSBzZXF1ZW5jZSBvZiBub24tcHJpbnRpbmcKICAgIyBjaGFyYWN0ZXJzLiAgTmV4dCBsaW5l IGlzIHVzZWQgdG8gcHJpbnQgd29ya2luZyBkaXJlY3RvcnkuCiAgIFBTMT0iXG5cWyR7Y3lhbjF9 XF1cdUBcaDpcbiIKICAgUFMxPSRQUzEiKyBcWyR7Z29sZDF9XF1cd1xuXFske3JlZDF9XF0iCgog ICAjIFBTMCBpcyB1c2VkIGFmdGVyIHJlYWRpbmcgYSBjb21tYW5kIGFuZCBiZWZvcmUgZXhlY3V0 aW5nIGl0LgogICBQUzA9IiRzZ3IiICAjIHNldCB2YWx1ZSBvZiBQUzAKIGZpCn0KCiMgLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4K CiMjIGgyICAgKiBsaW5nZS1jb25zb2xlLXFkYml0LWVjb2RlcwoKbGluZ2UtY25zbC1xZGJpdC1l Y29kZXMgKCkKewogbG9jYWwgZXhlY19yYz0wCiB3aGlsZSAoKCAkIyA+IDAgKSk7IGRvCiAgIG9w dD0iJDEiCiAgIGNhc2UgJG9wdCBpbgogICAgKCItViJ8InZlcnNpb24iKQogICAgICBsb2NhbCAt ciBldGRhdGU9IlYwMSBKdWwgMjAyMSBXazI3IgogICAgICBwcmludGYgJyVzXG4nICIkZXRkYXRl IFN0cmF0ZWdpc3QgQ2hyaXN0b3BoZXIgRGltZWNoIgogICAgICByZXR1cm4gMAogICAgICA7Owog ICAgKCJoInwiLS1oZWxwIikKICAgICAgcHJpbnRmICJVc2UgNC1iaXQgY29sb3VyIHRlcm1pbmFs IGNvbW1hbmQgcHJvbXB0LlxuIgogICAgICBwcmludGYgIlF1YWQtQml0IGNvbG91ciB1c2VzIDE2 ICgyXjQpIGNvbG91cnMuXG4iCiAgICAgIHByaW50ZiAiRXNjYXBlIGNvZGVzIGFyZSB1c2VkLlxu IgogICAgICByZXR1cm4gMAogICAgICA7OwogICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLgogICAgKCItdiJ8Ii0tdmVyYm9zaXR5IikgICAgIHZiPSIkMiIgICAgICA7IHNoaWZ0IDsg c2hpZnQgOzsKICAgICgiLXY9Iip8Ii0tdmVyYm9zaXR5PSIqKSB2Yj0iJHsxIyo9fSIgOyBzaGlm dCAxIDs7CiAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAgICAoIi0tZXhlYyIp IGV4ZWNfcmM9MSA7IHNoaWZ0IDs7CiAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u CiAgICAoKikgZXhlY19yYz0wIDs7CiAgIGVzYWMgIyBjYXNlIGVuZHMgaGVyZQogZG9uZSAjIHdo aWxlIGVuZHMgaGVyZQoKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaWYg KCggZXhlY19yYyA9PSAxICkpOyB0aGVuCiAgIGN5bj0iXGVbMDE7MzZtIiA7IHlsdz0iXGVbMDE7 MzNtIiAgIyBib2xkIGN5YW4gYW5kIGJvbGQgeWVsbG93CiAgIHJlZD0iXGVbMDE7MzFtIiA7IHNn cj0iXDAzM1szOW0iICAgIyBib2xkIHJlZCBhbmQgcmVndWxhciBmb3JlZ3JvdW5kCgogICAjIFBT MSBlbmNsb3NlcyBub24tcHJpbnRpbmcgY2hhcmFjdGVycyB3aXRoIFxbIGFuZCBcXQogICAjIFBy aW50IHdvcmtpbmcgZGlyZWN0YXJ5IFx3IG9uIG5leHQgbGluZQogICBQUzE9IlxuXFske2N5bn1c XVx1QFxoOlxuIgogICBQUzE9JFBTMSIrIFxbJHt5bHd9XF1cd1xuXFske3JlZH1cXSIgIyBwcmlu dCB3b3JraW5nIGRpcmVjdG9yeQoKICAgIyBQUzAgaXMgdXNlZCBhZnRlciByZWFkaW5nIGEgY29t bWFuZCBhbmQgYmVmb3JlIGV4ZWN1dGluZyBpdC4KICAgUFMwPSIke3Nncn0iCiBmaQoKfQoKIyA7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsKCiMjIGgxICogU2V0IGtleS1tYXBzIGFuZCB0ZXJtLWNvbG91cnMKCiMjIGgyIGxpbmdlLWNv bnNvbGUta2V5bWFwCgpsaW5nZS1jb25zb2xlLWtleW1hcCAoKQp7CiBsb2NhbCBleGVjX3JjPTAK IGxvY2FsIG5hcmc9IiQjIgogd2hpbGUgKCggJCMgPiAwICkpOyBkbwogICBvcHQ9IiQxIgogICBj YXNlICRvcHQgaW4KICAgICgiLVYifCJ2ZXJzaW9uIikKICAgICAgbG9jYWwgLXIgZXRkYXRlPSJW MDEgSnVsIDIwMjEgV2syNyIKICAgICAgcHJpbnRmICIkZXRkYXRlIFN0cmF0ZWdpc3QgQ2hyaXN0 b3BoZXIgRGltZWNoIgogICAgICByZXR1cm4gMAogICAgICA7OwogICAgKCJoInwiLS1oZWxwIikK ICAgICAgcHJpbnRmICJQcmludHMgZmlyc3Qgc2V0IG9mIGxpbmVzIGZyb20gbmFtZWQgZmlsZXMu XG4iCiAgICAgIHByaW50ZiAiXCQxIE5VTSAgTnVtYmVyIG9mIGxpbmVzIHRvIHByaW50LlxuIgog ICAgICBwcmludGYgIlwkMiBESVIgIERpcmVjdG9yeS5cbiIKICAgICAgcmV0dXJuIDAKICAgICAg OzsKICAgICMgLi4uLi4uLi4uLi4uLi4uLgogICAgKCItZSJ8Ii0tZXhlYyIpIGV4ZWNfcmM9MSA7 IHNoaWZ0IDs7CiAgICAjIC4uLi4uLi4uLi4uLi4uLi4KICAgICgqKQogICAgICBwcmludGYgJyVz XG4nICJJbnZva2UgXGBsaW5nZS1jb25zb2xlLWtleW1hcCAtaCcgZm9yIGRldGFpbHMuIgogICAg ICBicmVhawogICAgICA7OwogICBlc2FjICMgY2FzZSBlbmRzIGhlcmUKIGRvbmUgIyB3aGlsZSBl bmRzIGhlcmUKCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAKICMgVGFza3MKICMgMS4gcmUtbWFwIG1vZGlmaWVyIGtleXMg Zm9yIGR2b3JhayBrZXlib2FyZAogIyAyLiBzZXQgbHMgY29sb3VyIHNjaGVtZSB3aGVuIGluIGEg dW5peC1saWtlIHRlcm1pbmFsCiAjICAgIC1iIG9wdGlvbiBzcGVjaWZpZXMgdGhlIGJvdXJuZSBh Z2FpbiBzaGVsbAoKICMgTElOR0VfVFJLICBWYXJpYWJsZSB0cmFja2luZyBwYXRoIHRvIGxpbmdl IHV0aWxpdGllcyAgCgogIyBMU0NPTFJfREZMVD0iJExTX0NPTE9SUyIKICMgTFNfQ09MT1JTPSR7 TFNfQ09MT1JTfToiZGk9MTszMTpleD0xOzMxIgogIyBleHBvcnQgTFNfQ09MT1JTCgogIyBzZXQg ZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIGxzIGNvbW1hbmQKIExTX0NPTE9SUz0iZGk9NDszNDpl eD0xOzMxIgoKICMgVXNpbmcgJHtIT01FfSBiZWNhdXNlIH4vT3BzdGsgaXMgbm90IGV4cGFuZGVk IGJ1dCB0cmVhdGVkIGxpdGVyYWxseQogbGluZ2VfdHJrPSIke0hPTUV9L09wc3RrL2Jpbi9ndW5n YWRpbi0xLjAvbGluZ2UiCiBlY2hvICJsaW5nZV90cms6ICR7bGluZ2VfdHJrfSIKCiAjIFJlc2V0 IExTX0NPTE9SUyB1c2VkIGJ5IHsgbHMgLS1jb2xvcj1hdXRvIH0iCiBpZiAoKCBleGVjX3JjID09 IDEgKSk7IHRoZW4KICAgbGluZ2UtY29uc29sZS10Y29kZXMKICAgZXZhbCAiJCggZGlyY29sb3Jz IC1iICR7bGluZ2VfdHJrfS9saW5nZS1kaXJjb2xvcnMgKSIKICAgeG1vZG1hcCAke2xpbmdlX3Ry a30vbGluZ2UteG1vZG1hcCAgIyByZS1tYXBzIEN0cmwsIE1ldGEsIFN1cGVyCiBmaQoKfQoKIyA7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7OwoKIyMgaDIgbGluZ2UtZm91bnRhaW5oZWFkLXVzYWdlCgpsaW5nZS1mb3VudGFpbmhlYWQt dXNhZ2UgKCkKewogY2FzZSAkMSBpbgogICgxKQogICAgIEhERyAiIEd1bmdhZGluLUxpbmdlIgog ICAgIHBmbSAiIGxpbmdlLWZvdW50YWluaGVhZCBbT1BUSU9OU10iCiAgICAgcGZtICIgIHstdiBW QiwgLXY9VkIsIC12VkIsIC0tdmVyYm9zaXR5IFZCLCAtLXZlcmJvc2l0eT1WQn0iCiAgICAgcGZt ICIgIHstdSBMViwgLXU9TFYsIC11TFYsIC0tdXNhZ2UgTFYsIC0tdXNhZ2U9TFZ9IgogICAgIHBm bSAiICB7LWgsIC0taGVscH0sIHstViwgLS12ZXJzaW9ufSIKICAgICA7OwogZXNhYyAgICAKfQoK IyA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OwoKIyMgaDIgbGluZ2UtZm91bnRhaW5oZWFkLWRldGFpbHMKCmxpbmdlLWZvdW50YWlu aGVhZC1kZXRhaWxzICgpCnsKICBsb2NhbCAtciBsb2NhbGU9IiRMQU5HIgoKICBjYXNlICQxIGlu CiAgICgxKQogICAgIEhERyAiIFRPRE8iCiAgICAgcGZtICIgbGluZ2UtZm91bnRhaW5oZWFkIFtP UFRJT05TXSIKICAgICA7OwogZXNhYyAgICAKfQoKIyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKCiMjIGgxICoqIEV4ZWN1dGVzIHRoZSBjb25m aWd1cmF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBsaW5nZSByZXNvdXJjZXMgIAoKIyBVc2VzIGEgaGVy ZS1kb2N1bWVudCBmb3IgbXVsdGktbGluZSBjb21tZW50aW5nLgojIFRoZSBoeXBoZW4gaW4gPDwt IGlzIHVzZWQgdG8gaWdub3JlcyBsZWFkaW5nIHRhYiBjaGFyYWN0ZXJzLgojIFF1b3RpbmcgdGhl IGxpbWl0IHN0cmluZyBfY29tbWVudCBkaXNwbGF5cyB2YXJpYWJsZSBuYW1lcyB2ZXJiYXRpbSwK IyB3aXRob3V0IGNvbW1hbmQgc3Vic3RpdHV0aW9uLgoKPDwtICJfY29tbWVudCIKKiBDb21tYW5k IHRlcm1pbmFsIHByb21wdCBhbmQgZGlyY29sb3JzClNldCBkaXJlY3RvcnkgcGF0aCBhbmQgZmls ZSBuYW1lIGZvciBkaXJjb2xvcnMgc2V0dXAKU2VlIE1hcmdpbmFsaWEgU2VjdGlvbiBbQV0KX2Nv bW1lbnQKCiMjIGgyIGxpbmdlLWZvdW50YWluaGVhZAoKbGluZ2UtZm91bnRhaW5oZWFkICgpCnsK IGxvY2FsIC1yIGV0ZGF0ZT0iVjAxIDIwMjEgSnVsIDIxIFdrMjciCiBsb2NhbCAtciBhdXRob3I9 IlN0cmF0ZWdpc3QgQ2hyaXN0b3BoZXIgRGltZWNoIgoKIGlmICgoICQjIDw9IDAgKSk7IHRoZW4K ICAgcHJpbnRmICclc1xuJyAibGluZ2UtZm91bnRhaW5oZWFkIgogICBwcmludGYgJyVzXG4nICIk ZXRkYXRlICRhdXRob3IiCiBmaSAgICAKCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbXBsPSJ3aGlsZSIKIGlmIFtbICIkaW1wbCIgPT0g IndoaWxlIiBdXTsgdGhlbgogCiAgIHdoaWxlIHRydWU7IGRvCiAgICAgcmVhZCAtcCAiVXBkYXRl IEd1bmdhZGluLUxpbmdlIENvbnNvbGUiIGV4ZWNpbgogICAgIGNhc2UgJGV4ZWNpbiBpbgogICAg ICBbWXldKiApIGV4ZWNfcmM9MSA7IGJyZWFrIDs7CiAgICAgIFtObl0qICkgZXhlY19yYz0wIDsg YnJlYWsgOzsKICAgICAgW1FxXSogKSBleGVjX3JjPTAgOyBicmVhayA7OwogICAgICAgICAgKiAp IGVjaG8gIkFuc3dlciB3aXRoIFxgWWVzJywgXGB5JywgXGBObycsIFxgbicuIgogICAgICAgICAg ICAgIGVjaG8gIlVzZSBcYFEnIG9yIFxgcScgdG8gcXVpdCIKCSAgICAgIDs7CiAgICAgZXNhYwog ICBkb25lCgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogZWxpZiBbWyAiJGltcGwiID09ICJzZWxlY3QiIF1dOyB0aGVuCgogICBlY2hvICJV cGRhdGUgR3VuZ2FkaW4tTGluZ2UgQ29uc29sZSIKICAgc2VsZWN0IGV4ZWNpbiBpbiAiWWVzIiAi eWVzIiAiWSIgInkiICJObyIgIm5vIiAiTiIgIm4iOyBkbwogICAgIGNhc2UgJGV4ZWNpbiBpbgog ICAgICBZZXMgKSBleGVjX3JjPTEgOyBicmVhayA7OwogICAgICBObyAgKSBicmVhayA7OwogICAg ICAqICAgKSBlY2hvICJBbnN3ZXIgd2l0aCBcYFllcycsIFxgeScsIFxgTm8nLCBcYG4nLiIKICAg ICAgICAgICAgZWNobyAiVXNlIFxgUScgb3IgXGBxJyB0byBxdWl0IgoJICAgIDs7CiAgICAgZXNh YwogICBkb25lCgogZmkKCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgICAgIAogbG9jYWwgZXhlY19yYz0iIgogd2hpbGUgKCggJCMgPiAw ICkpOyBkbwogICBvcHQ9IiQxIgogICBjYXNlICRvcHQgaW4KICAgICgiLVYifCJ2ZXJzaW9uIikK ICAgICAgcHJpbnRmICclc1xuJyAiJGV0ZGF0ZSAkYXV0aG9yIgogICAgICBwcmludGYgJyVzXG4n ICJJbmNvcnBvcmF0ZXMgdGhlIEd1bmdhZGluLUxpbmdlIEJhc2ggU2hlbGwiCiAgICAgIHByaW50 ZiAnJXNcbicgImZ1bmN0aW9uYWxpdHkgdG8gdGhlIENvbW1hbmQgTGluZSBUZXJtaW5hbCBDb25z b2xlIgogICAgICByZXR1cm4gMAogICAgICA7OwogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICAgKCItdiJ8Ii0tdmVyYm9zaXR5IikgICAgIHZiPSIkMiIgICAgICA7IHNoaWZ0 IDsgc2hpZnQgOzsKICAgICgiLXY9Iip8Ii0tdmVyYm9zaXR5PSIqKSB2Yj0iJHsxIyo9fSIgOyBz aGlmdCAxIDs7CiAgICAoIi12IiopIHZiPSIkezEjLXZ9IiA7IHNoaWZ0IDEgOzsKICAgICMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICgiLWgifCItLWhlbHAiKQogICAgICBzaGlm dCAxCiAgICAgIHByaW50ZiAnJXNcbicgIlJlYWRzIGFuZCBleGVjdXRlcyB0aGUgdXNlciAuYmFz aHJjIHJlc291cmNlIgogICAgICBwcmludGYgJyVzXG4nICJjb25maWd1cmF0aW9uIGZpbGUgdXNp bmcgdGhlIHNvdXJjZSBjb21tYW5kLiIKICAgICAgcHJpbnRmICclc1xuJyAiQmFzaCBmdW5jdGlv bnMgcmV0dXJuIGludGVnZXIgZXJyb3IgY29kZXMgZnJvbSAwIgogICAgICBwcmludGYgJyVzXG4n ICJ0byAyNTUuICBBIHplcm8gZXhpdCBzdGF0dXMgaW5kaWNhdGVzIHN1Y2Nlc3MuIgogICAgICBs aW5nZS1mb3VudGFpbmhlYWQtZGV0YWlscwogICAgICByZXR1cm4gMAogICAgICA7OwogICAgIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgKCItdSJ8Ii0tdXNhZ2UiKQogICAgICBs aW5nZS1mb3VudGFpbmhlYWQtdXNhZ2UgIiR1c2ciCiAgICAgIHVzZz0iJDIiIDsgc2hpZnQgMgog ICAgICByZXR1cm4gMAogICAgICA7OwogICAgKCItdT0iKnwiLS11c2FnZT0iKikKICAgICAgbGlu Z2UtZm91bnRhaW5oZWFkLXVzYWdlICIkdXNnIgogICAgICB1c2c9IiR7MSMqPX0iIDsgc2hpZnQg MQogICAgICByZXR1cm4gMAogICAgICA7OwogICAgKCItdSIqKQogICAgICBsaW5nZS1mb3VudGFp bmhlYWQtdXNhZ2UgIiR1c2ciCiAgICAgIHVzZz0iJHsxIy12fSIgOyBzaGlmdCAxCiAgICAgIHJl dHVybiAwCiAgICAgIDs7CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAo KikKICAgICAgcHJpbnRmICclc1xuJyAiSW52b2tlIFxgbGluZ2Utc291cmNlLXJjIC1oJyBmb3Ig ZGV0YWlscy4iCiAgICAgIGJyZWFrCiAgICAgIDs7CiAgIGVzYWMgIyBjYXNlIGVuZHMgaGVyZQog ZG9uZSAjIHdoaWxlIGVuZHMgaGVyZQoKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyBhbHRlcm5hdGl2ZWx5IHVzZSBgc291cmNlIH4v LmJhc2hyY2Agb3IgYC4gJHtIT01FfS8uYmFzaHJjJwogKCggZXhlY19yYyA9PSAxICkpICYmIHNv dXJjZSAiJHtIT01FfS8uYmFzaHJjIgoKICMgQmFzaCBmdW5jdGlvbnMgcmV0dXJuIGFuIGludGVn ZXIgZXJyb3IgY29kZSB3aXRoIGEgemVybyBleGl0IHN0YXR1cwogIyBpbmRpY2F0aW5nIHN1Y2Nl c3MuICBBIG5vbi16ZXJvIGV4aXQgc3RhdHVzIGluZGljYXRlcyBmYWlsdXJlLiAgRXhpdAogIyBz dGF0dXNlcyBmYWxsIGJldHdlZW4gMCBhbmQgMjU1LiAKIHJldHVybiAwCgp9CgphbGlhcyBMRkQ9 J2xpbmdlLWZvdW50YWluaGVhZCcgCgojIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CgojIyBoMSAqIENhbGwgR3VuZ2FkaW4gRnVu Y3Rpb25hbGl0eQoKIyMgaDIgICBsaW5nZS1sYXVuY2gKCmxpbmdlLWxhdW5jaCAoKQp7CiBsb2Nh bCBlZHZhcnRfcmM9MAogbG9jYWwgZGVwbG95PSJnby1vbi1lcnJvciIKCiB3aGlsZSAoKCAkIyA+ IDAgKSk7IGRvCiAgIG9wdD0iJDEiCiAgIGNhc2UgJG9wdCBpbgogICAgKCItViJ8InZlcnNpb24i KQogICAgICBsb2NhbCAtciBldGRhdGU9IlYwMSAyMDIxIEp1bCAyMSBXazI3IgogICAgICBwcmlu dGYgJyVzXG5cbicgIiRldGRhdGUgU3RyYXRlZ2lzdCBDaHJpc3RvcGhlciBEaW1lY2giCiAgICAg IHJldHVybiAwCiAgICAgIDs7CiAgICAoIi1oInwiLS1oZWxwIikKICAgICAgcHJpbnRmICclc1xu JyAiUmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSB1c2VyIC5iYXNocmMgcmVzb3VyY2UiCiAgICAgIHBy aW50ZiAnJXNcbicgImNvbmZpZ3VyYXRpb24gZmlsZSB1c2luZyB0aGUgc291cmNlIGNvbW1hbmQu IgogICAgICBwcmludGYgJyVzXG4nICJCYXNoIGZ1bmN0aW9ucyByZXR1cm4gaW50ZWdlciBlcnJv ciBjb2RlcyBmcm9tIDAiCiAgICAgIHByaW50ZiAnJXNcbicgInRvIDI1NS4gIEEgemVybyBleGl0 IHN0YXR1cyBpbmRpY2F0ZXMgc3VjY2Vzcy4iCiAgICAgIHJldHVybiAwCiAgICAgIDs7CiAgICAj IC4uLi4uLi4uLi4uLi4uLi4KICAgICgiLXYifCItLXZlcmJvc2l0eSIpICAgICB2Yj0iJDIiICAg ICAgOyBzaGlmdCA7IHNoaWZ0IDs7CiAgICAoIi12PSIqfCItLXZlcmJvc2l0eT0iKikgdmI9IiR7 MSMqPX0iIDsgc2hpZnQgMSA7OwogICAgIyAuLi4uLi4uLi4uLi4uLi4uCiAgICAoIi0tZWR2YXJ0 LXJjIikgZWR2YXJ0X3JjPTEgOyBzaGlmdCA7OwogICAgIyAuLi4uLi4uLi4uLi4uLi4uCiAgICAo Ii0tZ28tb24tZXJyb3IiKSAgICAgIyBDb250cm9sIFN0YXR1cywgY29udGludWUgYW5kIGFsbG93 IGZhaWx1cmUKICAgICAgZGVwbG95PSJnby1vbi1lcnJvciIKICAgICAgc2hpZnQgOzsKICAgICgi LS1ub2dvLW9uLWVycm9yIikgICAjIENvbnRyb2wgU3RhdHVzLCByZWZ1c2UgdG8gcHJvY2VlZCBv biBlcnJvcgogICAgICBkZXBsb3k9Im5vZ28tb24tZXJyb3IiCiAgICAgIHNoaWZ0IDs7CiAgICAj IC4uLi4uLi4uLi4uLi4uLi4KICAgICgiLS0iKSBzaGlmdCA7IGJyZWFrIDs7CiAgICAoIi0iKikK ICAgICAgIyB0aGlzIHBhdHRlcm4gZm9sbG93cyAtLSBiZWNhdXNlIGl0IGFsd2F5cyBvdmVyLXJp ZGVzIC0tCiAgICAgIHByaW50ZiAnJXNcbicgIldyb25nIHBhcmFtZXRlci4iCiAgICAgIFsgIiRk ZXBsb3kiID0gImdvLW9uLWVycm9yIiBdICYmIHNoaWZ0IDEKICAgICAgWyAiJGRlcGxveSIgPSAi bm9nby1vbi1lcnJvciIgXSAmJiByZXR1cm4gMQogICAgICA7OwogICAgKCopCiAgICAgIHByaW50 ZiAnJXNcbicgIkludm9rZSBcYGxpbmdlLWxhdW5jaCAtaCcgZm9yIGRldGFpbHMuIgogICAgICBb ICIkZGVwbG95IiA9ICJnby1vbi1lcnJvciIgXSAmJiBicmVhawogICAgICBbICIkZGVwbG95IiA9 ICJub2dvLW9uLWVycm9yIiBdICYmIHJldHVybiAxCiAgICAgIDs7CiAgIGVzYWMgICMgY2FzZSBl bmRzIGhlcmUKIGRvbmUgICMgd2hpbGUgZW5kcyBoZXJlCgogIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIGVjaG8gCiBsaW5nZS1jb25zb2xl LWtleW1hcCAtLWV4ZWMgICMgY29sb3VyIGFuZCBrZXltYXAgdXRpbHMKIGxpbmdlLWFnZ3ItdXRp bCAtLWV4ZWMgICAgICAgIyBhZ2dyZXRhdGUgb2Ygb3RoZXIgdXRpbHMKCiBsaW5nZV90cmtyYz0i JHtIT01FfS9PcHN0ay9iaW4vZ3VuZ2FkaW4tMS4wL2xpbmdlIgogc291cmNlICIke2xpbmdlX3Ry a3JjfS9saW5nZS1ndW5nYWRpbi11c2FnZS5yYyIKCiAjIHNldCByZXNvdXJjZSBwYXRoIGFuZCBl bmFibGUgZnVuY3Rpb25hbGl0eSBpbiBlZHZhcnQucmMKIGlmICgoIGVkdmFydF9yYyA9PSAxICkp OyB0aGVuCiAgIGVkdmFydF90cmtyYz0iJHtIT01FfS9PcHN0ay9iaW4vZ3VuZ2FkaW4tMS4wL2xp bmdlL2VkdmFydCIKICAgc291cmNlICIke2VkdmFydF90cmtyY30vZWR2YXJ0LnJjIgogZmkKIAp9 CgojICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwoKIyBsYXVuY2ggY29uZmlndXJhdGlvbiBwcm92aWRlZCBieSBsaW5nZS5zaApsaW5nZS1sYXVu Y2ggLS1lZHZhcnQtcmMKCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCgojIyBtMSAqIE1hcmdpbmFsaWEKIyAgICAgICAgICAgICAgICAgICAg ICBfICAgICAgICAgICBfIF8gICAgICAKIyAgXyBfXyAgX18gXyBfIF8gX18gXyhfKV8gXyAgX18g X3wgKF8pX18gXyAKIyB8ICcgIFwvIF9gIHwgJ18vIF9gIHwgfCAnIFwvIF9gIHwgfCAvIF9gIHwK IyB8X3xffF9cX18sX3xffCBcX18sIHxffF98fF9cX18sX3xffF9cX18sX3wKIyAgICAgICAgICAg ICAgICB8X19fLyAgICAgICAgICAgICAgICAgICAgICAKCiMgLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgojIyBtMiBNQSBCYXNoIENvbmRpdGlv bmFsIEV4cHJlc3Npb25zCgojIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGFyZSB1c2VkIGJ5IHRo ZSBjb21wb3VuZCBjb21tYW5kIGBbWyAgXV1gCgojIC12IHZhcm5hbWUKIyAgICBUcnVlIGlmIHZh cmlhYmxlIHZhcm5hbWUgaXMgc2V0IChoYXMgYmVlbiBhc3NpZ25lZCBhIHZhbHVlKS4KIyAteiBz dHJpbmcKIyAgICBUcnVlIGlmIHRoZSBsZW5ndGggb2Ygc3RyaW5nIGlzIHplcm8uCiMgLW4gc3Ry aW5nCiMgICAgVHJ1ZSBpZiB0aGUgbGVuZ3RoIG9mIHN0cmluZyBpcyBub24temVyby4KCiMgLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgojIEV4 YW1wbGU6IFJlZGlyZWN0aW9uIGNvbnN0cnVjdCB3aXRob3V0IGluZGVudGF0aW9uCgojIGNhdCA8 PC0gIl9sYWJlbCIKIyBncmVwIC1pciAtLWV4Y2x1ZGU9XCouZWwgLS1pbmNsdWRlPVwqLntvcmcs dGV4aX0iCiMgICAtQyA4ICJoaWxiZXJ0IiAvbWFyc2hhbGwgIgojIF9sYWJlbAoKIyAuLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCiMgRXhhbXBs ZTogSW5kZW50YXRpb24gd2l0aCB0YWJzIGFuZCB2YXJpYWJsZSBuYW1lcyAKCiMgPHRhYj4gY2F0 IDw8LSAiX2xhYmVsIgojIDx0YWI+IFNlYXJjaGVzIGlucHV0IGZpbGVzIGZvciBsaW5lcyBjb250 YWluaW5nIG1hdGNoZXMuCiMgPHRhYj4gJEAgQVJHUyAgQXJyYXkgb2YgYWxsIGFyZ3VtZW50cy4K IyA8dGFiPiBfbGFiZWwKCiMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uCgojIyBtMiAgIEBtYyAgc2V0eGtibWFwIGFuZCB4bW9kbWFwCgojIFNl dCBrZXlib2FyZCBsYXlvdXQgbWFwIHdpdGggc2V0eGtibWFwLgojIGBzZXR4a2JtYXAgLWhlbHBg ICAgUHJpbnRzIHNldHhrYm1hcCB1c2FnZS4KIyBgc2V0eGtibWFwIC1xdWVyeWAgIFByaW50cyBj dXJyZW50IGtleWJvYXJkIGxheW91dC4KIyBgc2V0eGtibWFwIC1sYXlvdXQgdXMgLXZhcmlhbnQg ZHZvcmFrYCAgU2V0cyBkdm9yYWsgbGF5b3V0LgoKIyBNb2RpZnkga2V5IGFuZCBwb2ludGVyIGJ1 dHRvbiBtYXBwaW5ncyB3aXRoIHhtb2RtYXAuCiMgYHhtb2RtYXAgLWhlbHBgICBQcmludCB1c2Fn ZSBpbmZvcm1hbmlvbi4gCiMgYHhtb2RtYXAgLXBtYCAgICBQcmludCBtb2RpZmllciBtYXAuCgoj IFJlLW1hcCBDdHJsLCBBbHQsIEh5cGVyLCBhbmQgU3VwZXIga2V5cy4KIyBUbyBkaXNwbGF5IGtl eS1tYXAgdGFibGUsIHVzZSBgLXBrZWAgb3B0aW9uCiMgICBgeG1vZG1hcCAtcGtlIHwgZ3JlcCAi Q29udHJvbFx8QWx0XHxNZXRhXHxTdXBlciJgCgojIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKIyMgbTIgICBAbWYgIDQtQml0IENvbG91ciBD b2RlcwoKIyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiMgICB8 IFNwZWNpYWwgQXR0cmlidXRlIENvZGVzICAgICAgICAgICAgICAgfAojICAgfC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKIyAgIHwgTm9uZSAgMDAgfCBCb2xkICAgIDAx IHwgVW5kZXJzY29yZSAwNCB8CiMgICB8IEJsaW5rIDA1IHwgUmV2ZXJzZSAwNyB8IENvbmNlYWxl ZCAgMDggfAojICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKCiMg ICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAojICAg fCBGb3JlZ3JvdW5kIENvbG9yIENvZGVzOiBGb3IgVGV4dCAgICAgICAgICAgICAgIHwKIyAgIHwt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiMgICB8IEJs YWNrIDMwICAgfCBSZWQgICAgIDMxIHwgR3JlZW4gMzIgfCBZZWxsb3cgMzMgfAojICAgfCBCbHVl ICAzNCAgIHwgTWFnZW50YSAzNSB8IEN5YW4gIDM2IHwgV2hpdGUgIDM3IHwKIyAgIHwgUmVndWxh ciAzOSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICB8LS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAoKIyAuLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIyAgW0JSRl0gQXV0b21h dGUgdmFsdWVzIHVzaW5nIEJhc2ggU2hlbGwgUGFyYW1ldGVyIEV4cGFuc2lvbgogIAojICBUaGUg Q29sb24gQ29tbWFuZCBgOmAgYXQgdGhlIGJlZ2lubmluZyBleHBhbmRzIGFyZ3VtZW50cyBhbmQK IyAgcGVyZm9ybXMgcmVkaXJlY3Rpb25zIG9ubHksIHdpdGhvdXQgZXhlY3V0aW5nIHRoZSBsaW5l LgoKIyBsaW5nZS1tb2xuaXlhLXJlZ2lvbiB1c2luZyBwYXJhbWV0ZXIgZXhwYW5zaW9uCgojICMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBm aWxlIGVuZHMgaGVyZSBbbGluZ2UucmNdCg== ------=_Part_88295_26866892.1638741486440--