From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#65726: 29.1.50; Crash in regexp engine Date: Mon, 4 Sep 2023 09:46:24 +0200 Message-ID: <8e1b4e50-0430-3eb3-e486-60def1e4821f@gmx.at> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------Kfhqe8JD14mDWxvKDrDeWHz4" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="40378"; mail-complaints-to="usenet@ciao.gmane.io" To: 65726@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Sep 04 09:48:25 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qd4Jt-000AGG-FN for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 04 Sep 2023 09:48:25 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qd4JZ-0003yv-Er; Mon, 04 Sep 2023 03:48:05 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qd4JX-0003sh-6o for bug-gnu-emacs@gnu.org; Mon, 04 Sep 2023 03:48:03 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qd4JW-0001ZN-T2 for bug-gnu-emacs@gnu.org; Mon, 04 Sep 2023 03:48:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qd4JW-00046O-Gv for bug-gnu-emacs@gnu.org; Mon, 04 Sep 2023 03:48:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 04 Sep 2023 07:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 65726 X-GNU-PR-Package: emacs X-Debbugs-Original-To: Bug-Gnu-Emacs Original-Received: via spool by submit@debbugs.gnu.org id=B.169381363415533 (code B ref -1); Mon, 04 Sep 2023 07:48:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 4 Sep 2023 07:47:14 +0000 Original-Received: from localhost ([127.0.0.1]:48173 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qd4Ih-00042Q-57 for submit@debbugs.gnu.org; Mon, 04 Sep 2023 03:47:13 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:53346) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qd4Id-000413-AG for submit@debbugs.gnu.org; Mon, 04 Sep 2023 03:47:10 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qd4I6-0002p2-Bn for bug-gnu-emacs@gnu.org; Mon, 04 Sep 2023 03:46:44 -0400 Original-Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qd4I0-0001LH-BE for bug-gnu-emacs@gnu.org; Mon, 04 Sep 2023 03:46:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1693813585; x=1694418385; i=rudalics@gmx.at; bh=tl7OdoJmUnIyyVf9dqChQBLbTiQYzxHwVzbjP6qxoa0=; h=X-UI-Sender-Class:Date:To:From:Subject; b=LRuUW823q56BHl/ISld+N9HgXSOQSucXix/mOtr48jazGWaoUmEFIiwAUKVT1f63y/PGhzT Jda7M1nmGhz8xUoE/SI14eS9pQSvN3brMJl5ftU37LsyePkp8ELZ0cwgwmgKc19sCzku6hUrH mz7yzjqlC/CeyKiM1x33sCXbQqSKobIRwIhAEjgmaX4lbAmaG1KcfJn8LaDyXj45wGtu3AdEj zDKJJ4oMM4Ynrzpm/mfflU3CFSEA/AtESURVNbk0zUNt9MUNf/2bGZZhEBQlCynW/mzA2Kc0N lYGg+w6HnUykBUme/e0o3E8m8V2jQwBGNNtL40DSj649TOxBuj5A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from [192.168.1.100] ([213.142.96.79]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MxUnz-1pjjg02LN3-00xuuJ for ; Mon, 04 Sep 2023 09:46:25 +0200 Content-Language: en-US X-Provags-ID: V03:K1:xHHGp4u2x45nZryjppPaUZIWps53FMqOAApXGHQLhhAErLMGuqz Ur+/KVVWlZOilj1eU+wzt5jNdVYudIGy3R5CZQkc4pvAvKBtY+ILlPbzFJczlPsG4MvCTcK 7tGurXL0ud3tdNanXDmhr+chHRamk7K24++LR/Y+B4AXNEM09LK8MSyred/OGGpvgxtx1GD y91DhZW+/vJP4yVIxG+YA== UI-OutboundReport: notjunk:1;M01:P0:VZAye0MClF0=;FADIV6goAEt+E/COg99XqeZPjkF cXmjWpExALpnVC36zTWcPQhlIhmOFRTtglVVSywTzyRjQb+P5z5m42h7c/FaxSR5QI4nCmH2a fNwuYKbZCJiOeWBDz2Yipjs1BqZjxP2HX8XvYE8+5GBpmjV6YAWSkaRRpnyy/eGMOJHYisiWV M9CdfxryNAQDvOEgqK3f6VCSkrDujsEdmgZHJXMLqhuhDrACRhUfhXvuCVdO9TESNrB5XS+Gb NAca5x2k8GUPoSn8ns9kdvOUi2pq/rneTlpV7DWC0GqmJchxSPsg/olXqFM7aYfB6LT/Bht/K AMLVetyg4uzUxIAHSR87y3oiXgzcVxiDynSczYukWDEKxsqmQnwOVVY8TjtJNPg7gea5ozNTU Q4Zj2lKR7jDRfaHxYI15hGGDTCPY4uy3rc+TH/mZ0w8pKz1TGMuqGWH8NWdGbzdzBjoA5fSHQ O1AInXgqCULK29nV6taYtBqX841rpUMXF7XqKy246buFTz00o93BwEpOWD+NPD7jir7Vo+hf9 SYRmwqSVDi+dvvY7i3fs8Aqnp6kzriA9AtV9mS/yGyCGJTCUY0GE3o7mnM8JAMElQvxDKA0X1 AAagCxdIbeji+aooPy0U11ZHN3HCmmPZmNJIOu72aXUQu3SPxaqb+pR9b1Mu6CAGKKqlsjuUh g76h/BcjEQWjHuIYsXXnEYVmhBFNHYLqW27/Pdyeli3rsLcK5TmjEM6LY0M3snG3RuZgjvwcC NL+0zunOyyMBtg0fsues8nRloNFBNBsqSFDjlq6T1pr1ZhT72YLU/Yds1b6uwZeDkrZmhYQK Received-SPF: pass client-ip=212.227.15.18; envelope-from=rudalics@gmx.at; helo=mout.gmx.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:269215 Archived-At: This is a multi-part message in MIME format. --------------Kfhqe8JD14mDWxvKDrDeWHz4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit With emacs -Q load the attached file elinfo.el. Now type C-h S split-window RET C-x o C-c C-g This crashes Emacs here with Thread 1 "emacs" received signal SIGSEGV, Segmentation fault. 0x000000000068810a in skip_noops (p=, pend=) at ../../src/regex-emacs.c:3556 3556 { and an infinite backtrace starting with Python Exception Cannot access memory at address 0x7fffff66fff8: #0 0x000000000068810a in skip_noops (p=#1 0x0000000000688823 in mutually_exclusive_p (bufp=0xec9c30 , p1=0x1fcee74 "\004\005", p2=0x1fcee81 "\016\063") at ../../src/regex-emacs.c:3665 #2 0x0000000000688e19 in mutually_exclusive_p (bufp=0xec9c30 , p1=0x1fcee74 "\004\005", p2=0x1fcee81 "\016\063") at ../../src/regex-emacs.c:3838 #3 0x0000000000688e3c in mutually_exclusive_p (bufp=0xec9c30 , p1=0x1fcee74 "\004\005", p2=0x1fceeba "\004\020") at ../../src/regex-emacs.c:3839 #4 0x0000000000688e3c in mutually_exclusive_p (bufp=0xec9c30 , p1=0x1fcee74 "\004\005", p2=0x1fcee84 "\002\001@\004\020") at ../../src/regex-emacs.c:3839 #5 0x0000000000688e19 in mutually_exclusive_p (bufp=0xec9c30 , p1=0x1fcee74 "\004\005", p2=0x1fcee81 "\016\063") at ../../src/regex-emacs.c:3838 ... The same scenario worked well with Emacs 22 through 28. martin In GNU Emacs 29.1.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.5, cairo version 1.16.0) of 2023-09-03 built on restno Repository revision: f1e4cbe72aa4da9351cbbcd209d9233c68dd9fbb Repository branch: emacs-29 Windowing system distributor 'The X.Org Foundation', version 11.0.12004000 System Description: Debian GNU/Linux 10 (buster) Configured using: 'configure --with-gif=ifavailable --with-tiff=ifavailable --with-gnutls=no --without-pop --enable-gcc-warnings=warn-only --enable-checking=yes,glyphs --enable-check-lisp-object-type=yes 'CFLAGS=-O0 -g3 -no-pie -Wno-missing-braces'' Configured features: CAIRO DBUS FREETYPE GIF GLIB GSETTINGS HARFBUZZ JPEG LIBSELINUX MODULES NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND THREADS TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LANG: de_AT.utf8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date subr-x mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils elinfo texinfo texinfo-loaddefs info rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 45758 8352) (symbols 48 5682 0) (strings 32 15622 2110) (string-bytes 1 431024) (vectors 16 10081) (vector-slots 8 157669 13073) (floats 8 26 23) (intervals 56 218 0) (buffers 976 10)) --------------Kfhqe8JD14mDWxvKDrDeWHz4 Content-Type: text/x-emacs-lisp; charset=UTF-8; name="elinfo.el" Content-Disposition: attachment; filename="elinfo.el" Content-Transfer-Encoding: base64 Ozs7IGVsaW5mby5lbCAtLS0gRWxpc3AgSW5mbyBhbmQgVGV4aW5mbyBzdXBwb3J0IHJvdXRp bmVzCgo7OyBDb3B5cmlnaHQgKEMpIDIwMDkgTWFydGluIFJ1ZGFsaWNzCgo7OyBUaW1lLXN0 YW1wOiAiMjAyMS0wNi0wOSAxODo0NToyOSBtYXJ0aW4iCjs7IEF1dGhvcjogTWFydGluIFJ1 ZGFsaWNzIDxydWRhbGljc0BnbXguYXQ+Cgo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Cjs7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRhcnk6Cgo7OyBUaGlzIGZpbGUgcHJv dmlkZXMgZnVuY3Rpb25zIGZvciBjaGVja2luZyB0aGUgdmFsaWRpdHkgb2YgRW1hY3MnIElu Zm8KOzsgZmlsZXMsIG5hdmlnYXRpbmcgYmV0d2VlbiBFbWFjcycgSW5mbyBmaWxlcyBhbmQg Y29ycmVzcG9uZGluZyBUZXhpbmZvCjs7IGJ1ZmZlcnMsIGFuZCBmb3IgY3JlYXRpbmcgVGV4 aW5mbyBlbnRyaWVzIGZyb20gZG9jdW1lbnRhdGlvbiBzdHJpbmdzLgoKKHJlcXVpcmUgJ2lu Zm8pCihyZXF1aXJlICd0ZXhpbmZvKQoKKGRlZmdyb3VwIGVsaW5mbyBuaWwKICAiRWxpbmZv LiIKICA6dmVyc2lvbiAiMjMuMiIKICA6Z3JvdXAgJ2xpc3ApCgo7OyBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo7Owo7OzsJCQkgIFV0aWxpdHkgRnVuY3Rpb25zCjs7IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCjs7Cgo7OyBNb3ZlIHRvIGFuZCByZXR1cm4gc3RhcnQgb2YgZmlyc3Qg bm9uLXdoaXRlc3BhY2UgY2hhciBhZnRlciBgcG9pbnQnLgooZGVmdW4gZWxpbmZvLS1tb3Zl LXRvLW5leHQgKCkKICAoZm9yd2FyZC1jb21tZW50IChidWZmZXItc2l6ZSkpCiAgKHBvaW50 KSkKCjs7IE1vdmUgdG8gZW5kIG9mIGFuZCByZXR1cm4gbmV4dCBuYW1lLgooZGVmdW4gZWxp bmZvLS1nZXQtbmV4dCAoKQogIChsZXQgKChmcm9tIChlbGluZm8tLW1vdmUtdG8tbmV4dCkp KQogICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXiBcdFxuIikKICAgIChidWZmZXItc3Vic3Ry aW5nLW5vLXByb3BlcnRpZXMgZnJvbSAocG9pbnQpKSkpCgo7OyBMaWtlIGBlbGluZm8tLWdl dC1uZXh0JyBidXQgZG9uJ3QgbGVhdmUgY3VycmVudCBsaW5lLgooZGVmdW4gZWxpbmZvLS1n ZXQtbmV4dC1hcmcgKCkKICAoc2F2ZS1yZXN0cmljdGlvbgogICAgKG5hcnJvdy10by1yZWdp b24gKHBvaW50KSAobGluZS1lbmQtcG9zaXRpb24pKQogICAgKGVsaW5mby0tZ2V0LW5leHQp KSkKCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCjs7Cjs7OwkJICBDaGVja2luZyBhbmQg RWxpbmZvIExvZyBVdGlsaXRpZXMKOzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsKCihk ZWZjdXN0b20gZWxpbmZvLWxvZy13YXJuaW5ncyBuaWwKICAiTm9uLW5pbCBtZWFucyBsb2cg d2FybmluZ3MgaW4gRWxpbmZvIExvZyBidWZmZXIuIgogIDpncm91cCAnZWxpbmZvCiAgOnR5 cGUgJ2Jvb2xlYW4KICA6dmVyc2lvbiAiMjMuMiIpCgooZGVmY3VzdG9tIGVsaW5mby1zaG93 LWRlZmluaXRpb24gdAogICJOb24tbmlsIG1lYW5zIHNob3cgZGVmaW5pdGlvbnMgd2hlbiBi cm93c2luZyBFbGluZm8gTG9ncy4iCiAgOmdyb3VwICdlbGluZm8KICA6dHlwZSAnYm9vbGVh bgogIDp2ZXJzaW9uICIyMy4yIikKCihkZWZjdXN0b20gZWxpbmZvLWJhbGFuY2Utd2luZG93 cyB0CiAgIk5vbi1uaWwgbWVhbnMgYmFsYW5jZSB3aW5kb3dzIHdoZW4gYnJvd3NpbmcgRWxp bmZvIExvZ3MuIgogIDpncm91cCAnZWxpbmZvCiAgOnR5cGUgJ2Jvb2xlYW4KICA6dmVyc2lv biAiMjMuMiIpCgooZGVmY3VzdG9tIGVsaW5mby1yZXVzZS13aW5kb3dzIHQKICAiTm9uLW5p bCBtZWFucyByZXVzZSB3aW5kb3dzIHdoZW4gYnJvd3NpbmcgRWxpbmZvIExvZ3MuIgogIDpn cm91cCAnZWxpbmZvCiAgOnR5cGUgJ2Jvb2xlYW4KICA6dmVyc2lvbiAiMjMuMiIpCgooZGVm Y3VzdG9tIGVsaW5mby1sb2ctbG9jYXRpb24tZmFjZSAndW5kZXJsaW5lCiAgIkZhY2UgbmFt ZSBmb3IgaGlnaGxpZ2h0aW5nIGxvY2F0aW9ucyBpbiBFbGluZm8gTG9ncy4iCiAgOmdyb3Vw ICdlbGluZm8KICA6dHlwZSAnZmFjZQogIDp2ZXJzaW9uICIyMy4yIikKCihkZWZjdXN0b20g ZWxpbmZvLWxvZy1kZWYtZmFjZSBmb250LWxvY2stY29uc3RhbnQtZmFjZQogICJGYWNlIG5h bWUgZm9yIGhpZ2hsaWdodGluZyB0aGluZ3MgaW4gRWxpbmZvIExvZ3MuIgogIDpncm91cCAn ZWxpbmZvCiAgOnR5cGUgJ2ZhY2UKICA6dmVyc2lvbiAiMjMuMiIpCgo7OyBXaW5kb3cgbmF2 aWdhdGlvbi4KKGRlZnZhciBlbGluZm8tc291cmNlLXdpbmRvdyBuaWwKICAiVGhlIHdpbmRv dyB3aGVyZSB0aGUgVGV4aW5mbyBzb3VyY2UgYnVmZmVyIHdhcyBkaXNwbGF5ZWQuIikKKGRl ZnZhciBlbGluZm8tZGVmLXdpbmRvdyBuaWwKICAiVGhlIHdpbmRvdyB3aGVyZSB0aGUgZGVm aW5pdGlvbiBvZiBzb21lIHN5bWJvbCB3YXMgZGlzcGxheWVkLiIpCgooZGVmdW4gZWxpbmZv LXNob3ctZGVmaW5pdGlvbiAoc3ltYm9sICZvcHRpb25hbCB0eXBlKQogICJTaG93IGRlZmlu aXRpb24gb2YgU1lNQk9MIGluIGEgc3VpdGFibGUgd2luZG93LgpGb3IgY29tcGF0aWJpbGl0 eSB3aXRoIGBmaW5kLWRlZmluaXRpb24tbm9zZWxlY3QnIFRZUEUgbXVzdCBiZQpvbWl0dGVk IG9yIG5pbCBmb3IgZnVuY3Rpb25zIGFuZCBgZGVmdmFyJyBmb3IgdmFyaWFibGVzLiIKICA7 OyBgZmluZC1kZWZpbml0aW9uLW5vc2VsZWN0JyBpcyBhdXRvbG9hZGVkIGluIGZpbmQtZnVu Yy5lbCBhbmQgc2hvdWxkCiAgOzsgcmV0dXJuIGEgY29ucyB3aG9zZSBjYXIgaXMgdGhlIGJ1 ZmZlciBjb250YWluaW5nIHRoZSBkZWZpbml0aW9uCiAgOzsgd2hpbGUgaXRzIGNkciBjb250 YWlucyB0aGUgcG9zaXRpb24gd2l0aGluIHRoZSBidWZmZXIuCiAgKGxldCAoKGJ1ZmZlci1w b3NpdGlvbi1wYWlyIChzYXZlLWV4Y3Vyc2lvbgoJCQkJKGZpbmQtZGVmaW5pdGlvbi1ub3Nl bGVjdCBzeW1ib2wgdHlwZSkpKSkKICAgICh3aGVuIGJ1ZmZlci1wb3NpdGlvbi1wYWlyCiAg ICAgIChsZXQgKChidWZmZXIgKGNhciBidWZmZXItcG9zaXRpb24tcGFpcikpCgkgICAgKHBv c2l0aW9uIChjZHIgYnVmZmVyLXBvc2l0aW9uLXBhaXIpKSkKCShpZiAoYW5kIGVsaW5mby1y ZXVzZS13aW5kb3dzICh3aW5kb3ctbGl2ZS1wIGVsaW5mby1kZWYtd2luZG93KSkKCSAgICAo c2V0LXdpbmRvdy1idWZmZXIgZWxpbmZvLWRlZi13aW5kb3cgYnVmZmVyKQoJICAoc2V0cSBl bGluZm8tZGVmLXdpbmRvdyAoZGlzcGxheS1idWZmZXIgYnVmZmVyKSkpCgk7OyBSZWNvcmQg d2luZG93L2J1ZmZlciByZWxhdGlvbnNoaXAuCgkoc2V0LXdpbmRvdy1wb2ludCBlbGluZm8t ZGVmLXdpbmRvdyBwb3NpdGlvbikKCSh3aXRoLXNlbGVjdGVkLXdpbmRvdyBlbGluZm8tZGVm LXdpbmRvdwoJICA7OyBQdXQgdGhlIGRlZmluaXRpb24gYXQgdGhlIHRvcCBvZiB0aGUgd2lu ZG93LgoJICAocmVjZW50ZXIgMSkpKSkpKQoKKGRlZnVuIGVsaW5mby1zaG93LXNvdXJjZSAo Jm9wdGlvbmFsIGxvZy1wb3MpCiAgIlNob3cgVGV4aW5mbyBzb3VyY2UgY29ycmVzcG9uZGlu ZyB0byBFbGluZm8gTG9nIGVudHJ5IGF0IExPRy1QT1MuCkxPRy1QT1MgbmlsIG9yIG9taXR0 ZWQgbWVhbnMgY29uc2lkZXIgdGhlIGVudHJ5IGxvY2F0ZWQgYXQKYHBvaW50Jy4KClRoaXMg ZnVuY3Rpb24gbWF5IGFsc28gZGlzcGxheSBhIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbiBp biBjYXNlCmBlbGluZm8tc2hvdy1kZWZpbml0aW9uJyBpcyBub24tbmlsIGFuZCBiYWxhbmNl IHRoZSByZXNwZWN0aXZlCndpbmRvd3MgcHJvdmlkZWQgYGVsaW5mby1iYWxhbmNlLXdpbmRv d3MnIGlzIG5vbi1uaWwuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxldCogKChsb2ctcG9z IChvciBsb2ctcG9zIChwb2ludCkpKQoJICAgKGZpbGUtbmFtZSAoZ2V0LXRleHQtcHJvcGVy dHkgbG9nLXBvcyAnZWxpbmZvLWZpbGUtbmFtZSkpCgkgICAocG9zaXRpb24gKGdldC10ZXh0 LXByb3BlcnR5IGxvZy1wb3MgJ2VsaW5mby1wb3NpdGlvbikpCgkgICAoYnVmZmVyIChmaW5k LWZpbGUtbm9zZWxlY3QgZmlsZS1uYW1lKSkKCSAgIGJhbGFuY2UpCiAgICAgIDs7IERpc3Bs YXkgVGV4aW5mbyBzb3VyY2UuCiAgICAgIChpZiAoYW5kIGVsaW5mby1yZXVzZS13aW5kb3dz ICh3aW5kb3ctbGl2ZS1wIGVsaW5mby1zb3VyY2Utd2luZG93KSkKCSAgKHNldC13aW5kb3ct YnVmZmVyIGVsaW5mby1zb3VyY2Utd2luZG93IGJ1ZmZlcikKCShzZXRxIGVsaW5mby1zb3Vy Y2Utd2luZG93IChkaXNwbGF5LWJ1ZmZlciBidWZmZXIpKSkKICAgICAgOzsgU2V0IHdpbmRv dy9idWZmZXIgcmVsYXRpb25zaGlwLgogICAgICAoc2V0LXdpbmRvdy1wb2ludCBlbGluZm8t c291cmNlLXdpbmRvdyBwb3NpdGlvbikKICAgICAgKHdpdGgtc2VsZWN0ZWQtd2luZG93IGVs aW5mby1zb3VyY2Utd2luZG93Cgk7OyBXZSBjb3VsZCBtYWtlIHRoZSAiMSIgY3VzdG9taXph YmxlLgoJKHJlY2VudGVyIDEpKQogICAgICA7OyBEaXNwbGF5IGRlZmluaXRpb24gaWYgcG9z c2libGUuCiAgICAgIChjb25kCiAgICAgICAoKG5vdCBlbGluZm8tc2hvdy1kZWZpbml0aW9u KSkKICAgICAgICgobWVtcSAoZ2V0LXRleHQtcHJvcGVydHkgbG9nLXBvcyAnZWxpbmZvLXR5 cGUpCgkgICAgICAnKGNvbW1hbmQgbm8tY29tbWFuZCBhcmctbWlzbWF0Y2gpKQoJKGVsaW5m by1zaG93LWRlZmluaXRpb24KCSAoaW50ZXJuIChnZXQtdGV4dC1wcm9wZXJ0eSBsb2ctcG9z ICdlbGluZm8tbmFtZSkpKQoJKHNldHEgYmFsYW5jZSB0KSkKICAgICAgICgobWVtcSAoZ2V0 LXRleHQtcHJvcGVydHkgbG9nLXBvcyAnZWxpbmZvLXR5cGUpCgkgICAgICAnKG9wdGlvbiBu by1vcHRpb24pKQoJKGVsaW5mby1zaG93LWRlZmluaXRpb24KCSAoaW50ZXJuIChnZXQtdGV4 dC1wcm9wZXJ0eSBsb2ctcG9zICdlbGluZm8tbmFtZSkpICdkZWZ2YXIpCgkoc2V0cSBiYWxh bmNlIHQpKSkKICAgICAgOzsgQmFsYW5jZSB3aW5kb3dzIGlmIHBvc3NpYmxlLgogICAgICAo d2hlbiAoYW5kIGVsaW5mby1iYWxhbmNlLXdpbmRvd3MgYmFsYW5jZQoJCSAoZXEgKHdpbmRv dy1mcmFtZSBlbGluZm8tc291cmNlLXdpbmRvdykKCQkgICAgICh3aW5kb3ctZnJhbWUgZWxp bmZvLWRlZi13aW5kb3cpKSkKCTs7IGBiYWxhbmNlLXdpbmRvd3MnIHNob3VsZCBiYWxhbmNl IHNpYmxpbmdzIG9mIHRoZQoJOzsgc291cmNlLXdpbmRvdyBvbmx5LgoJKGJhbGFuY2Utd2lu ZG93cyBlbGluZm8tc291cmNlLXdpbmRvdykpKSkpCgo7OyBUaGUgbmV4dC0vcHJldmlvdXMt ZXJyb3IgZnVuY3Rpb25zIGhhdmUgYmVlbiBjb3BpZWQgZnJvbSBjb21waWxlLmVsCjs7IGFu ZCBzbGlnaHRseSBhZGFwdGVkIGZvciBvdXIgbmVlZHMuICBGb3IgVUkgYW5kIGtleWJpbmRp bmdzIHN0aWNrIHRvCjs7IHRob3NlIHVzZWQgYnkgY29tcGlsZSBhbmQgcmVsYXRlZCBtb2Rl cy4gIEFsc28gcmV0YWluIHRoZSAtZXJyb3IKOzsgcG9zdGZpeCBmb3IgYWxsIGVudHJpZXMg YW5kIGRvbid0IG1vZGlmeSB0aGUgZG9jIHN0cmluZ3MgdG8gbWFrZSB0aGlzCjs7IGxvb2sg ZmFtaWxpYXIuCihkZWZ1biBlbGluZm8tbmV4dC1lcnJvciAobiAmb3B0aW9uYWwgb3RoZXIt ZmlsZSkKICAiU2hvdyBUZXhpbmZvIHNvdXJjZSBmb3IgbmV4dCBlbnRyeSBpbiBFbGluZm8g TG9nLgpQcmVmaXggYXJnIE4gc2F5cyBob3cgbWFueSBlbnRyaWVzIHRvIG1vdmUgZm9yd2Fy ZHMgXChiYWNrd2FyZHMsCmlmIG5lZ2F0aXZlKS4KCk9wdGlvbmFsIGFyZyBPVEhFUi1GSUxF LCBpZiBub24tbmlsLCBtZWFucyBmaW5kIGVudHJ5IGZvciBhIGZpbGUKdGhhdCBpcyBkaWZm ZXJlbnQgZnJvbSB0aGUgY3VycmVudCBvbmUuICBJbiB0aGF0IGNhc2UsIE4Kc3BlY2lmaWVz IHRoZSBudW1iZXIgb2YgZmlsZXMgd2hvc2UgZW50cmllcyBzaGFsbCBiZSBza2lwcGVkLgoK VGhpcyBmdW5jdGlvbiBtYXkgYWxzbyBkaXNwbGF5IGEgY29ycmVzcG9uZGluZyBkZWZpbml0 aW9uIGluIGNhc2UKYGVsaW5mby1zaG93LWRlZmluaXRpb24nIGlzIG5vbi1uaWwgYW5kIGJh bGFuY2UgdGhlIHJlc3BlY3RpdmUKd2luZG93cyBwcm92aWRlZCBgZWxpbmZvLWJhbGFuY2Ut d2luZG93cycgaXMgbm9uLW5pbC4iCiAgKGludGVyYWN0aXZlICJwIikKICAoaWYgb3RoZXIt ZmlsZQogICAgICAobGV0ICgobGFzdC1maWxlIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQp ICdlbGluZm8tZmlsZS1uYW1lKSkKCSAgICAoY3VycmVudC1maWxlICIiKSkKCShpZiAoPiBu IDApCgkgICAgKHdoaWxlIChhbmQgKG5vdCAoZW9icCkpCgkJCShzZXRxIGN1cnJlbnQtZmls ZQoJCQkgICAgICAoZ2V0LXRleHQtcHJvcGVydHkgKHBvaW50KSAnZWxpbmZvLWZpbGUtbmFt ZSkpCgkJCShvciAoc3RyaW5nLWVxdWFsIGN1cnJlbnQtZmlsZSBsYXN0LWZpbGUpCgkJCSAg ICAoYW5kIChzZXRxIGxhc3QtZmlsZSBjdXJyZW50LWZpbGUpCgkJCQkgKD4gKHNldHEgbiAo MS0gbikpIDApKSkpCgkgICAgICAoZm9yd2FyZC1saW5lKSkKCSAgKHdoaWxlIChhbmQgKG5v dCAoYm9icCkpCgkJICAgICAgKHNldHEgY3VycmVudC1maWxlCgkJCSAgICAoZ2V0LXRleHQt cHJvcGVydHkgKHBvaW50KSAnZWxpbmZvLWZpbGUtbmFtZSkpCgkJICAgICAgKG9yIChzdHJp bmctZXF1YWwgY3VycmVudC1maWxlIGxhc3QtZmlsZSkKCQkJICAoYW5kIChzZXRxIGxhc3Qt ZmlsZSBjdXJyZW50LWZpbGUpCgkJCSAgICAgICAoPCAoc2V0cSBuICgxKyBuKSkgMCkpKSkK CSAgICAgIChmb3J3YXJkLWxpbmUgLTEpKSkpCiAgICAoZm9yd2FyZC1saW5lIG4pKQoKICAo ZWxpbmZvLXNob3ctc291cmNlKSkKCihkZWZ1biBlbGluZm8tbmV4dC1lcnJvci1mdW5jdGlv biAobiAmb3B0aW9uYWwgcmVzZXQpCiAgIk1vdmUgdG8gbmV4dCBlbnRyeSBpbiBFbGluZm8g TG9nIGFuZCBzaG93IGNvcnJlc3BvbmRpbmcgVGV4aW5mbyBzb3VyY2UuCk9wdGlvbmFsIGFy Z3VtZW50IFJFU0VUIG5vbi1uaWwgbWVhbnMgZ28gdG8gZmlyc3QgRWxpbmZvIExvZwplbnRy eS4gIFNlZSBhbHNvIGBlbGluZm8tbmV4dC1lcnJvcicuCgpUaGlzIGZ1bmN0aW9uIHByb3Zp ZGVzIHRoZSB2YWx1ZSBvZiBgbmV4dC1lcnJvci1mdW5jdGlvbicgaW4KRWxpbmZvIExvZyBi dWZmZXJzLiIKICAoaW50ZXJhY3RpdmUgInAiKQogICh3aGVuIHJlc2V0IChnb3RvLWNoYXIg KHBvaW50LW1pbikpKQogIChlbGluZm8tbmV4dC1lcnJvciBuKSkKCihkZWZ1biBlbGluZm8t cHJldmlvdXMtZXJyb3IgKG4pCiAgIlNob3cgVGV4aW5mbyBzb3VyY2UgY29ycmVzcG9uZGlu ZyB0byBwcmV2aW91cyBlbnRyeSBpbiBFbGluZm8gTG9nLgpQcmVmaXggYXJnIE4gc2F5cyBo b3cgbWFueSBlbnRyaWVzIHRvIG1vdmUgYmFja3dhcmRzIFwoZm9yd2FyZHMsCmlmIG5lZ2F0 aXZlKS4gIFNlZSBhbHNvIGBlbGluZm8tbmV4dC1lcnJvcicuIgogIChpbnRlcmFjdGl2ZSAi cCIpCiAgKGVsaW5mby1uZXh0LWVycm9yICgtIG4pKSkKCihkZWZ1biBlbGluZm8tbmV4dC1m aWxlIChuKQogICJTaG93IFRleGluZm8gc291cmNlIG9mIG5leHQgRWxpbmZvIExvZyBlbnRy eSBuYW1pbmcgYW5vdGhlciBmaWxlLgpQcmVmaXggYXJnIE4gc2F5cyBob3cgbWFueSBmaWxl cyB0byBtb3ZlIGZvcndhcmRzIFwob3IgYmFja3dhcmRzLAppZiBuZWdhdGl2ZSkuICBTZWUg YWxzbyBgZWxpbmZvLW5leHQtZXJyb3InLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChlbGlu Zm8tbmV4dC1lcnJvciBuIHQpKQoKKGRlZnVuIGVsaW5mby1wcmV2aW91cy1maWxlIChuKQog ICJTaG93IFRleGluZm8gc291cmNlIG9mIHByZXZpb3VzIEVsaW5mbyBMb2cgZW50cnkgbmFt aW5nIGFub3RoZXIgZmlsZS4KUHJlZml4IGFyZyBOIHNheXMgaG93IG1hbnkgZmlsZXMgdG8g bW92ZSBiYWNrd2FyZHMgXChvciBmb3J3YXJkcywKaWYgbmVnYXRpdmUpLiAgU2VlIGFsc28g YGVsaW5mby1uZXh0LWVycm9yJy4iCiAgKGludGVyYWN0aXZlICJwIikKICAoZWxpbmZvLW5l eHQtZmlsZSAoLSBuKSkpCgooZGVmdW4gZWxpbmZvLWdvdG8tZXJyb3IgKCZvcHRpb25hbCBl dmVudCkKICAiU2hvdyBUZXhpbmZvIHNvdXJjZSBmb3IgRWxpbmZvIExvZyBlbnRyeSBhdCBg cG9pbnQnLgpTZWUgYWxzbyBgZWxpbmZvLW5leHQtZXJyb3InLiIKICAoaW50ZXJhY3RpdmUg KGxpc3QgbGFzdC1pbnB1dC1ldmVudCkpCiAgKHdoZW4gZXZlbnQgKHBvc24tc2V0LXBvaW50 IChldmVudC1lbmQgZXZlbnQpKSkKICAobmV4dC1lcnJvci1pbnRlcm5hbCkpCgooZGVmdmFy IGVsaW5mby1sb2ctbW9kZS1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXAp KSkKICAgIChkZWZpbmUta2V5IG1hcCBbbW91c2UtMl0gJ2VsaW5mby1nb3RvLWVycm9yKQog ICAgKGRlZmluZS1rZXkgbWFwIFtmb2xsb3ctbGlua10gJ21vdXNlLWZhY2UpCiAgICAoZGVm aW5lLWtleSBtYXAgIlxDLWNcQy1jIiAnZWxpbmZvLWdvdG8tZXJyb3IpCiAgICA7OyBFbGlu Zm8gZ290byBjb21wYXRpYmlsaXR5LgogICAgKGRlZmluZS1rZXkgbWFwICJcQy1jXEMtZyIg J2VsaW5mby1nb3RvLWVycm9yKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1tIiAnZWxpbmZv LWdvdG8tZXJyb3IpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxNLW4iICdlbGluZm8tbmV4dC1l cnJvcikKICAgIChkZWZpbmUta2V5IG1hcCAiXE0tcCIgJ2VsaW5mby1wcmV2aW91cy1lcnJv cikKICAgIChkZWZpbmUta2V5IG1hcCAiXE0teyIgJ2VsaW5mby1wcmV2aW91cy1maWxlKQog ICAgKGRlZmluZS1rZXkgbWFwICJcTS19IiAnZWxpbmZvLW5leHQtZmlsZSkKICAgIChkZWZp bmUta2V5IG1hcCAiXHQiICdlbGluZm8tbmV4dC1lcnJvcikKICAgIChkZWZpbmUta2V5IG1h cCBbYmFja3RhYl0gJ2VsaW5mby1wcmV2aW91cy1lcnJvcikKICAgIChkZWZpbmUta2V5IG1h cCAicSIgJ3F1aXQtd2luZG93KQogICAgKGRlZmluZS1rZXkgbWFwICIgIiAnc2Nyb2xsLXVw KQogICAgKGRlZmluZS1rZXkgbWFwICJcXj8iICdzY3JvbGwtZG93bikKICAgIChkZWZpbmUt a2V5IG1hcCAiXEMtY1xDLWYiICduZXh0LWVycm9yLWZvbGxvdy1taW5vci1tb2RlKQogICAg bWFwKQogICJLZXltYXAgZm9yIEVsaW5mbyBMb2dzLiIpCgooZGVmdW4gZWxpbmZvLWxvZy1t b2RlICgpCiAgIk1ham9yIG1vZGUgZm9yIGJyb3dzaW5nIEVsaW5mbyBMb2dzLgpcXHtlbGlu Zm8tbG9nLW1vZGUtbWFwfSIKICAoaW50ZXJhY3RpdmUpCiAgKGtpbGwtYWxsLWxvY2FsLXZh cmlhYmxlcykKICAodXNlLWxvY2FsLW1hcCBlbGluZm8tbG9nLW1vZGUtbWFwKQogIChzZXRx IG1ham9yLW1vZGUgJ2VsaW5mby1sb2ctbW9kZSkKICAoc2V0cSBtb2RlLW5hbWUgIkVsaW5m byIpCiAgKHNldHEgbmV4dC1lcnJvci1mdW5jdGlvbiAnZWxpbmZvLW5leHQtZXJyb3ItZnVu Y3Rpb24pCiAgKHNldHEgYnVmZmVyLXJlYWQtb25seSB0KSkKCihkZWZ2YXIgZWxpbmZvLWxv Zy1idXR0b24tbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAo ZGVmaW5lLWtleSBtYXAgW21vdXNlLTJdICdlbGluZm8tZ290by1lcnJvcikKICAgIChkZWZp bmUta2V5IG1hcCBbZm9sbG93LWxpbmtdICdtb3VzZS1mYWNlKQogICAgKGRlZmluZS1rZXkg bWFwICJcQy1tIiAnZWxpbmZvLWdvdG8tZXJyb3IpCiAgICBtYXApCiAgIktleW1hcCBmb3Ig RWxpbmZvIExvZyBidXR0b25zLiIpCihmc2V0ICdlbGluZm8tbG9nLWJ1dHRvbi1tYXAgZWxp bmZvLWxvZy1idXR0b24tbWFwKQoKOzsgVHdvIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBnZXR0 aW5nIHByb3BlcnRpZXMgb2YgZnVuY3Rpb25zIGFuZAo7OyB2YXJpYWJsZXMuICBUaGVzZSBh cmUgdXNlZCBmb3IgY2hlY2tpbmcgcHJvcGVydGllcyBkZXNjcmliZWQgYnkKOzsgVGV4aW5m byB0ZXh0LgooZGVmdW4gZWxpbmZvLS1mdW4tcHJvcGVydGllcyAoZnVuY3Rpb24pCiAgIlJl dHVybiBwcm9wZXJ0aWVzIG9mIEZVTkNUSU9OLgpSZXR1cm4gdmFsdWUgaXMgYSBsaXN0IG9m IHRocmVlIGVsZW1lbnRzOiBUaGUgZmlyc3QgZWxlbWVudCwgd2hlbgpub24tbmlsLCB0ZWxs cyB0aGF0IEZVTkNUSU9OIGlzIGEgY29tbWFuZC4gIFRoZSBzZWNvbmQgZWxlbWVudCwKd2hl biBub24tbmlsLCBzcGVjaWZpZXMgdGhlIGZ1bmN0aW9uIEZVTkNUSU9OIGlzIGFsaWFzZWQg dG8uICBUaGUKdGhpcmQgZWxlbWVudCBzcGVjaWZpZXMgdGhlIGFyZ3VtZW50IGxpc3Qgb2Yg RlVOQ1RJT04gKGFuZCBpcyB0CndoZW4gdGhhdCBhcmd1bWVudCBsaXN0IGlzIG5vdCBhdmFp bGFibGUpLiIKICAobGV0IChkZWYgY29tbWFuZCBhbGlhcyBhcmdsaXN0IGRvYykKICAgIChz ZXRxIGRlZiAoaWYgKHN5bWJvbHAgZnVuY3Rpb24pCgkJICAoc3ltYm9sLWZ1bmN0aW9uIGZ1 bmN0aW9uKQoJCWZ1bmN0aW9uKSkKICAgIChzZXRxIGNvbW1hbmQgKGNvbW1hbmRwIGRlZikp CiAgICAod2hlbiAoc3ltYm9scCBkZWYpCiAgICAgICh3aGlsZSAoYW5kIChmYm91bmRwIGRl ZikgKHN5bWJvbHAgKHN5bWJvbC1mdW5jdGlvbiBkZWYpKSkKCShzZXRxIGRlZiAoaW5kaXJl Y3QtZnVuY3Rpb24gZGVmKSkpCiAgICAgIChzZXRxIGFsaWFzIGRlZikpCiAgICAoc2V0cSBh cmdsaXN0CgkgIChpZiAoYW5kIChzZXRxIGRvYyAoZG9jdW1lbnRhdGlvbiBmdW5jdGlvbikp CgkJICAgKHN0cmluZy1tYXRjaCAiXG5cbihmblsgXF0qXFwoLipcXCkpWyBcdFxuXSpcXCci IGRvYykpCgkgICAgICAobWFwY2FyICdkb3duY2FzZSAoc3BsaXQtc3RyaW5nIChtYXRjaC1z dHJpbmcgMSBkb2MpKSkKCSAgICA7OyBIYW5kbGUgc3ltYm9scyBhbGlhc2VkIHRvIG90aGVy IHN5bWJvbHMuCgkgICAgKHdoZW4gKGFuZCAoc3ltYm9scCBkZWYpIChmYm91bmRwIGRlZikp CgkgICAgICAoc2V0cSBkZWYgKGluZGlyZWN0LWZ1bmN0aW9uIGRlZikpKQoJICAgIDs7IElm IGRlZmluaXRpb24gaXMgYSBtYWNybywgZmluZCB0aGUgZnVuY3Rpb24gaW5zaWRlIGl0LgoJ ICAgICh3aGVuIChlcSAoY2FyLXNhZmUgZGVmKSAnbWFjcm8pCgkgICAgICAoc2V0cSBkZWYg KGNkciBkZWYpKSkKCSAgICAoY29uZAoJICAgICAoKGJ5dGUtY29kZS1mdW5jdGlvbi1wIGRl ZikgKGFyZWYgZGVmIDApKQoJICAgICAoKGVxIChjYXItc2FmZSBkZWYpICdsYW1iZGEpIChu dGggMSBkZWYpKQoJICAgICAodCB0KSkpKQogICAgKGxpc3QgY29tbWFuZCBhbGlhcyAoaWYg KGxpc3RwIGFyZ2xpc3QpIGFyZ2xpc3QgdCkpKSkKCihkZWZ1biBlbGluZm8tLWlzLW9wdGlv biAodmFyaWFibGUpCiAgIlJldHVybiB0IGlmIFZBUklBQkxFIGlzIGFuIG9wdGlvbi4iCiAg KGxldCogKChmaWxlLW5hbWUgKGZpbmQtbGlzcC1vYmplY3QtZmlsZS1uYW1lIHZhcmlhYmxl ICdkZWZ2YXIpKQoJIChhbGlhcyAoY29uZGl0aW9uLWNhc2UgbmlsCgkJICAgIChpbmRpcmVj dC12YXJpYWJsZSB2YXJpYWJsZSkKCQkgIChlcnJvciB2YXJpYWJsZSkpKQoJIChkb2MKCSAg KGNvbmRpdGlvbi1jYXNlIG5pbAoJICAgICAgKG9yIChkb2N1bWVudGF0aW9uLXByb3BlcnR5 IHZhcmlhYmxlICd2YXJpYWJsZS1kb2N1bWVudGF0aW9uKQoJCSAgKGRvY3VtZW50YXRpb24t cHJvcGVydHkgYWxpYXMgJ3ZhcmlhYmxlLWRvY3VtZW50YXRpb24pKQoJICAgIChlcnJvciBu aWwpKSkKCSAob3B0aW9uIChvciAoY3VzdG9tLXZhcmlhYmxlLXAgdmFyaWFibGUpCgkJICAg ICAoYW5kIChzdHJpbmdwIGRvYykKCQkJICAoc3RyaW5nLWVxdWFsCgkJCSAgICIqIiAoc3Vi c3RyaW5nLW5vLXByb3BlcnRpZXMgZG9jIDAgMSkpKSkpKQogICAgb3B0aW9uKSkKCjs7IFNv bWUgY291bnRlcnMuCihkZWZ2YXIgZWxpbmZvLWZpbGVzLWNvdW50IG5pbCkKKGRlZnZhciBl bGluZm8tZXJyb3JzLWNvdW50IDApCihkZWZ2YXIgZWxpbmZvLXdhcm5pbmdzLWNvdW50IDAp CgooZGVmdW4gZWxpbmZvLWNsZWFyLWxvZyAoKQogICJDbGVhciBFbGluZm8gTG9nIGJ1ZmZl ciBhbmQgcmVzZXQgZXJyb3IgY291bnRzLiIKICA7OyBNYXliZSB3ZSBzaG91bGQgbWFrZSBj bGVhcmluZyBjdXN0b21pemFibGUuCiAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZm ZXItY3JlYXRlICIqRWxpbmZvLUxvZyoiKQogICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5 IHQpKQogICAgICAoZGVsZXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKQog IDs7IFdlIGNvdWxkIGluc2VydCBzb21lIGhlYWRlciwgYnV0IHdobydkIGNhcmUgYW55d2F5 PwogIChzZXRxIGVsaW5mby1lcnJvcnMtY291bnQgMCkKICAoc2V0cSBlbGluZm8td2Fybmlu Z3MtY291bnQgMCkpCgooZGVmdW4gZWxpbmZvLWRpc3BsYXktbG9nICgmb3B0aW9uYWwgZmls ZS1uYW1lKQogICJEaXNwbGF5IEVsaW5mbyBMb2cuCklmIHRoZXJlIHdlcmUgbm8gZXJyb3Jz IGp1c3Qgd3JpdGUgYSBtZXNzYWdlLiAgT3B0aW9uYWwgYXJndW1lbnQKRklMRS1OQU1FIG11 c3QgbmFtZSB0aGUgZmlsZSB3aG9zZSBjb250ZW50cyB3ZXJlIGNoZWNrZWQuIgogIChpZiAo YW5kICh6ZXJvcCBlbGluZm8tZXJyb3JzLWNvdW50KSAoemVyb3AgZWxpbmZvLXdhcm5pbmdz LWNvdW50KSkKICAgICAgKGxldCAoKHRleHQKCSAgICAgKGNvbmNhdAoJICAgICAgIk5vIGVy cm9ycyBmb3VuZCIKCSAgICAgIChjb25kCgkgICAgICAgKGZpbGUtbmFtZQoJCShmb3JtYXQg IiBpbiBmaWxlICVzIiBmaWxlLW5hbWUpKQoJICAgICAgIChlbGluZm8tZmlsZXMtY291bnQK CQkoZm9ybWF0ICIgaW4gJXMgY2hlY2tlZCBmaWxlKHMpIiBlbGluZm8tZmlsZXMtY291bnQp KSkpKSkKCShtZXNzYWdlIHRleHQpKQogICAgKGxldCogKChidWZmZXIgKGdldC1idWZmZXIg IipFbGluZm8tTG9nKiIpKQoJICAgKHdpbmRvdyAod2hlbiBidWZmZXIKCQkgICAgIChkaXNw bGF5LWJ1ZmZlciBidWZmZXIpKSkKCSAgICh0ZXh0IChjb25jYXQKCQkgIChmb3JtYXQgIiVz IGVycm9yKHMpIiBlbGluZm8tZXJyb3JzLWNvdW50KQoJCSAgKHdoZW4gZWxpbmZvLWxvZy13 YXJuaW5ncwoJCSAgICAoZm9ybWF0ICIgYW5kICVzIHdhcm5pbmcocykiIGVsaW5mby13YXJu aW5ncy1jb3VudCkpCgkJICAoY29uZAoJCSAgIChmaWxlLW5hbWUKCQkgICAgKGZvcm1hdCAi IGluIGZpbGUgJXMiIGZpbGUtbmFtZSkpCgkJICAgKGVsaW5mby1maWxlcy1jb3VudAoJCSAg ICAoZm9ybWF0ICIgaW4gJXMgY2hlY2tlZCBmaWxlKHMpIiBlbGluZm8tZmlsZXMtY291bnQp KSkpKSkKICAgICAgOzsgV2UgcmVhbGx5IHNob3VsZCBoYXZlIGFuIG9wdGlvbiB3aGljaCBs ZXRzIHVzZXJzIHNlbGVjdAogICAgICA7OyBMb2cvSGVscCB3aW5kb3dzLgogICAgICAod2hl biB3aW5kb3cKCShzZXQtd2luZG93LXBvaW50IHdpbmRvdyAocG9pbnQtbWluKSkpCiAgICAg IChtZXNzYWdlIHRleHQpKSkpCgooZGVmdW4gZWxpbmZvLWxvZy1zdHJpbmcgKHR5cGUgbmFt ZSBmaWxlLW5hbWUgcG9zaXRpb24gc3RyaW5nICZvcHRpb25hbCB3YXJuaW5nKQogICJMb2cg U1RSSU5HIGluIEVsaW5mbyBMb2cgYnVmZmVyLgpTVFJJTkcgaXMgcHJvcGVydGl6ZWQgd2l0 aCBUWVBFIFwodGhlIHR5cGUgb2YgdGhlIGVycm9yKSwgTkFNRQpcKHVzdWFsbHkgdGhlIG5h bWUgb2Ygc29tZSBmdW5jdGlvbiBvciB2YXJpYWJsZSksIEZJTEUtTkFNRSBcKHRoZQpuYW1l IG9mIGEgZmlsZSksIFBPU0lUSU9OIFwoYSBwb3NpdGlvbiB2YWxpZCBpbiBhIGJ1ZmZlciB2 aXNpdGluZwpGSUxFLU5BTUUpLiAgT3B0aW9uYWwgYXJndW1lbnQgV0FSTklORyBub24tbmls IG1lYW5zIG5vIGxvZ2dpbmcKb2NjdXJzIHVubGVzcyBgZWxpbmZvLWxvZy13YXJuaW5ncycg aXMgbm9uLW5pbC4iCiAgKHdoZW4gKG9yIChub3Qgd2FybmluZykgZWxpbmZvLWxvZy13YXJu aW5ncykKICAgIChpZiB3YXJuaW5nCgkoc2V0cSBlbGluZm8td2FybmluZ3MtY291bnQgKDEr IGVsaW5mby13YXJuaW5ncy1jb3VudCkpCiAgICAgIChzZXRxIGVsaW5mby1lcnJvcnMtY291 bnQgKDErIGVsaW5mby1lcnJvcnMtY291bnQpKSkKICAgIChsZXQgKChsaW5lIChjb3VudC1s aW5lcyAocG9pbnQtbWluKSBwb3NpdGlvbikpCgkgIChjb2x1bW4gKHNhdmUtZXhjdXJzaW9u CgkJICAgIChnb3RvLWNoYXIgcG9zaXRpb24pCgkJICAgIChjdXJyZW50LWNvbHVtbikpKSkK ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqRWxpbmZv LUxvZyoiKQoJKHVubGVzcyAoZXEgbWFqb3ItbW9kZSAnZWxpbmZvLWxvZy1tb2RlKQoJICAo ZWxpbmZvLWxvZy1tb2RlKSkKCShsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KQoJICAgICAg ZnJvbSB0bykKCSAgKGdvdG8tY2hhciAoc2V0cSBmcm9tIChwb2ludC1tYXgpKSkKCSAgKGlu c2VydAoJICAgOzsgUHJvcGVydGl6ZWQgaW5mb3JtYXRpb24uCgkgICAocHJvcGVydGl6ZQoJ ICAgIChjb25jYXQKCSAgICAgKHByb3BlcnRpemUKCSAgICAgIChjb25jYXQKCSAgICAgICAo d2hlbiBmaWxlLW5hbWUKCQkgKGNvbmNhdCAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxl LW5hbWUpICI6IikpCgkgICAgICAgKGZvcm1hdCAiJXM6JXMiIGxpbmUgY29sdW1uKSkKCSAg ICAgICdmYWNlIGVsaW5mby1sb2ctbG9jYXRpb24tZmFjZSkKCSAgICAgIiAiIHN0cmluZykK CSAgICAnZWxpbmZvLXR5cGUgdHlwZSAnZWxpbmZvLW5hbWUgbmFtZQoJICAgICdlbGluZm8t ZmlsZS1uYW1lIGZpbGUtbmFtZSAnZWxpbmZvLXBvc2l0aW9uIHBvc2l0aW9uCgkgICAgJ21v dXNlLWZhY2UgJ2hpZ2hsaWdodCAnZm9sbG93LWxpbmsgJ2VsaW5mby1mb2xsb3ctbGluaykK CSAgIDs7IFNUUklORyBpdHNlbGYgZm9sbG93ZWQgYnkgYSBuZXdsaW5lLgoJICAgIlxuIikp KSkpKQoKKGRlZnN1YnN0IGVsaW5mby0tc3ltYm9sLW5hbWUgKGFyZykKICAiSWYgQVJHIGlz IGEgc3ltYm9sIHJldHVybiBpdHMgbmFtZSwgZWxzZSByZXR1cm4gQVJHLiIKICAoaWYgKHN5 bWJvbHAgYXJnKSAoc3ltYm9sLW5hbWUgYXJnKSBhcmcpKQoKKGRlZnVuIGVsaW5mby1jaGVj ayAoZmlsZS1uYW1lKQogICJDaGVjayBjdXJyZW50IGJ1ZmZlci4KRklMRS1OQU1FIG11c3Qg c3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgZmlsZSB3aG9zZSBjb250ZW50cyBhcmUgaW4KdGhl IGN1cnJlbnQgYnVmZmVyLiIKICAoaW50ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAg ICAoc2F2ZS1yZXN0cmljdGlvbgogICAgICAod2lkZW4pCiAgICAgIDs7IE1ha2Ugc3VyZSBg Y2FzZS1mb2xkLXNlYXJjaCcgaXMgbmlsIHRvIGNhdGNoIHRoZSAiQy0iIGFuZCAiTS0iCiAg ICAgIDs7IGVudHJpZXMgb25seSBhbmQgbm90IHRoZSBDLW1vZGUgImMtLi4uIiBzdHVmZi4K ICAgICAgKGxldCAoY2FzZS1mb2xkLXNlYXJjaAoJICAgIHRleGktbmFtZSB0ZXhpLXBkLW5h bWUgdGV4aS1hcmctbmFtZSB0ZXhpLWNvbW1hbmQgdGV4aS1vcHRpb24KCSAgICBwb3NpdGlv biBwcm9wZXJ0aWVzIGFyZy1saXN0IGFyZy1uYW1lIGlzLW9wdGlvbikKCShnb3RvLWNoYXIg KHBvaW50LW1pbikpCgk7OyBXZSBwcm9iYWJseSB3b24ndCBldmVyIGJvdGhlciB0byBvcHRp bWl6ZSB0aGUgcmVnZXhwIGJlbG93LgoJKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZAoJCTs7 IFJFR0VYUCBNTkVNTk9OSUNTOiAxLi5kZWZ1bi9kZWZmbiwgNC4uZGVmdmFyL2RlZm9wdCwK CQk7OyA4Li50ZXh0IHdlIGlnbm9yZSwgOS4uQy0vTS0gcHJlZml4ZWQgc3RyaW5nIGluIEBj b2RlLAoJCTs7IDEwLi5TUEMvUkVUL2V0Yy4gaW4gQGNvZGUsIDExLi5TUEMvUkVUL2V0Yy4g aW4gQGtiZCwKCQk7OyAxMy4ubm9uLW5pbC4KCQkiXkBcXCg/OlxcKFxcKGRlZnVueD9cXHxk ZWZtYWNcXHxkZWZzcGVjXFwpXFx8XFwoZGVmZm4gQ29tbWFuZFxcKVxcKVwKXFx8XFwoXFwo ZGVmdmFyeD9cXClcXHxcXChkZWZvcHR4P1xcKVxcKVwKXFx8XFwoc21hbGxcXCk/XFwoZXhh bXBsZVxcfGxpc3BcXHx2ZXJiYXRpbVxcfGlnbm9yZVxcKVxcKVwKXFx8QGNvZGV7XFwoW0NN XS1bXn1dK1xcKVxcfEBcXCg/OlxcKGNvZGVcXClcClxcfFxcKGtiZFxcKVxcKXtcXChTUENc XHxSRVRcXHxMRkRcXHxUQUJcXHxCU1xcfEVTQ1xcfERFTFxcfFNISUZUXFx8Q1RSTFxcfE1F VEFcXHxGWzAtOV0rXFwpfVwKXFx8XFwobm9uLW5pbFxcKSIgbmlsIHQpCgkgIChjb25kCgkg ICAoKG1hdGNoLWJlZ2lubmluZyAxKQoJICAgIChzZXRxIHRleGktY29tbWFuZCAobWF0Y2gt YmVnaW5uaW5nIDMpKQoJICAgIChzZXRxIHBvc2l0aW9uIChlbGluZm8tLW1vdmUtdG8tbmV4 dCkpCgkgICAgKHNldHEgdGV4aS1uYW1lIChlbGluZm8tLWdldC1uZXh0KSkKCSAgICAoc2V0 cSB0ZXhpLXBkLW5hbWUgKHByb3BlcnRpemUgdGV4aS1uYW1lICdmYWNlIGVsaW5mby1sb2ct ZGVmLWZhY2UpKQoJICAgIChpZiAobm90IChmYm91bmRwIChpbnRlcm4gdGV4aS1uYW1lKSkp CgkJKHByb2duCgkJICAoZWxpbmZvLWxvZy1zdHJpbmcKCQkgICAnZnVuLXVuYm91bmQgdGV4 aS1uYW1lIGZpbGUtbmFtZSBwb3NpdGlvbgoJCSAgIChjb25jYXQgIlVuYm91bmQgZnVuY3Rp b24gYCIgdGV4aS1wZC1uYW1lICInIikgdCkKCQkgIChmb3J3YXJkLWxpbmUpKQoJICAgICAg KHNldHEgcHJvcGVydGllcyAoZWxpbmZvLS1mdW4tcHJvcGVydGllcyAoaW50ZXJuIHRleGkt bmFtZSkpKQoJICAgICAgKGlmIChhbmQgKGVxIChudGggMSBwcm9wZXJ0aWVzKSAnaWdub3Jl KQoJCSAgICAgICAobm90IChzdHJpbmctZXF1YWwgdGV4aS1uYW1lICJpZ25vcmUiKSkpCgkJ ICA7OyBXaGVuIHRoZSBmdW5jdGlvbiBpcyByZW1hcHBlZCB0byBgaWdub3JlJyB3ZSBjYW4n dAoJCSAgOzsgZG8gYW55dGhpbmcgcmVhc29uYWJsZSBvbiB0aGUgY3VycmVudCBwbGF0Zm9y bS4KCQkgIChwcm9nbgoJCSAgICAoZWxpbmZvLWxvZy1zdHJpbmcKCQkgICAgICdyZW1hcHBl ZC10by1pZ25vcmUgdGV4aS1uYW1lIGZpbGUtbmFtZSBwb3NpdGlvbgoJCSAgICAgKGNvbmNh dCAiYCIgdGV4aS1wZC1uYW1lICInIHJlbWFwcGVkIHRvIGBpZ25vcmUnIG9uIHRoaXMgcGxh dGZvcm0iKSB0KQoJCSAgICAoZm9yd2FyZC1saW5lKSkKCQk7OyBDaGVjayBjb21tYW5kIHBy b3BlcnR5LgoJCShjb25kCgkJICgoYW5kIHRleGktY29tbWFuZCAobm90IChudGggMCBwcm9w ZXJ0aWVzKSkpCgkJICAoZWxpbmZvLWxvZy1zdHJpbmcKCQkgICAnY29tbWFuZCB0ZXhpLW5h bWUgZmlsZS1uYW1lIHBvc2l0aW9uCgkJICAgKGNvbmNhdCAiYCIgdGV4aS1wZC1uYW1lICIn IGlzIG5vdCBhIGNvbW1hbmQiKSkpCgkJICgoYW5kIChub3QgdGV4aS1jb21tYW5kKSAobnRo IDAgcHJvcGVydGllcykpCgkJICAoZWxpbmZvLWxvZy1zdHJpbmcKCQkgICAnbm8tY29tbWFu ZCB0ZXhpLW5hbWUgZmlsZS1uYW1lIHBvc2l0aW9uCgkJICAgKGNvbmNhdCAiYCIgdGV4aS1w ZC1uYW1lICInIGlzIGEgY29tbWFuZCIpKSkpCgkJOzsgQ2hlY2sgYXJndW1lbnRzLgoJCShz ZXRxIGFyZy1saXN0IChudGggMiBwcm9wZXJ0aWVzKSkKCQkoY29uZAoJCSAoKG5vdCBhcmct bGlzdCkKCQkgICh1bmxlc3MgKHN0cmluZy1lcXVhbCAoZWxpbmZvLS1nZXQtbmV4dC1hcmcp ICIiKQoJCSAgICA7OyBUaGUgZnVuY3Rpb24gZG9lc24ndCBoYXZlIGFyZ3VtZW50cy4KCQkg ICAgKGVsaW5mby1sb2ctc3RyaW5nCgkJICAgICAnYXJnLW1pc21hdGNoIHRleGktbmFtZSBm aWxlLW5hbWUgcG9zaXRpb24KCQkgICAgIChjb25jYXQgImAiIHRleGktcGQtbmFtZSAiJyBo YXMgbm8gYXJndW1lbnRzIikpKSkKCQkgKChub3QgKGxpc3RwIGFyZy1saXN0KSkKCQkgIDs7 IFVzdWFsbHkgdGhpcyBpcyBhbiAiQXJnbGlzdCBub3QgYXZhaWxhYmxlIC4uLiIgcHJvYmxl bS4KCQkgIChlbGluZm8tbG9nLXN0cmluZwoJCSAgICdhcmctbm90LWF2YWlsYWJsZSB0ZXhp LW5hbWUgZmlsZS1uYW1lIHBvc2l0aW9uCgkJICAgKGNvbmNhdCAiQXJndW1lbnRzIG9mIGAi IHRleGktcGQtbmFtZSAiJyBub3QgYXZhaWxhYmxlIikgdCkpCgkJICh0CgkJICAoY2F0Y2gg J2J1ZwoJCSAgICAoZG9saXN0IChhcmcgYXJnLWxpc3QpCgkJICAgICAgKHNldHEgYXJnLW5h bWUgKGVsaW5mby0tc3ltYm9sLW5hbWUgYXJnKSkKCQkgICAgICAoc2V0cSB0ZXhpLWFyZy1u YW1lIChlbGluZm8tLWdldC1uZXh0LWFyZykpCgkJICAgICAgKGNvbmQKCQkgICAgICAgKChz dHJpbmctZXF1YWwgYXJnLW5hbWUgdGV4aS1hcmctbmFtZSkpIDsgOi0pCgkJICAgICAgICgo c3RyaW5nLWVxdWFsIHRleGktYXJnLW5hbWUgIiIpCgkJCTs7IFRoZSBmdW5jdGlvbiBoYXMg bW9yZSBhcmd1bWVudHMgdGhhbiBkZXNjcmliZWQuCgkJCShvciAoYW5kIChzdHJpbmctbWF0 Y2ggIiZvcHRpb25hbFxcfCZyZXN0IiBhcmctbmFtZSkKCQkJCSA7OyBNYXliZSB0aGUgbWFu dWFsIGp1c3Qgd2FudHMgdXMgdG8KCQkJCSA7OyBpZ25vcmUgdGhlIGFyZ3VtZW50cy4KCQkJ CSAobGV0ICgobGFzdC1uYW1lIChjYXIgKGxhc3QgYXJnLWxpc3QpKSkpCgkJCQkgICAoc3Ry aW5nLW1hdGNoCgkJCQkgICAgImlnbm9yZWQ/IiAoZWxpbmZvLS1zeW1ib2wtbmFtZSBsYXN0 LW5hbWUpKSkpCgkJCSAgICAoZWxpbmZvLWxvZy1zdHJpbmcKCQkJICAgICAnYXJnLW1pc21h dGNoIHRleGktbmFtZSBmaWxlLW5hbWUgcG9zaXRpb24KCQkJICAgICAoY29uY2F0CgkJCSAg ICAgICJgIiB0ZXhpLXBkLW5hbWUgIicgbGFja3MgZGVzY3JpcHRpb24gb2YgIgoJCQkgICAg ICAoY29uZAoJCQkgICAgICAgKChzdHJpbmctZXF1YWwgYXJnLW5hbWUgIiZvcHRpb25hbCIp CgkJCQkib3B0aW9uYWwgYXJndW1lbnQocykuIikKCQkJICAgICAgICgoc3RyaW5nLWVxdWFs IGFyZy1uYW1lICIlcmVzdCIpCgkJCQkicmVzdCBvZiBhcmd1bWVudHMuIikKCQkJICAgICAg ICh0IChjb25jYXQgImFyZ3VtZW50IGAiIGFyZy1uYW1lICInIikpKSkpKQoJCQkodGhyb3cg J2J1ZyB0KSkKCQkgICAgICAgKChvciAoc3RyaW5nLW1hdGNoICImb3B0aW9uYWxcXHwmcmVz dCIgYXJnLW5hbWUpCgkJCSAgICAoc3RyaW5nLW1hdGNoICImb3B0aW9uYWxcXHwmcmVzdCIg dGV4aS1hcmctbmFtZSkpCgkJCShvciAoYW5kIChzdHJpbmctbWF0Y2ggIiZvcHRpb25hbFxc fCZyZXN0IiB0ZXhpLWFyZy1uYW1lKQoJCQkJIDs7IE1heWJlIHdlIGRvbid0IHdhbnQgdG8g a25vdyBhbGwKCQkJCSA7OyBhcmd1bWVudHM/ICBMZXQncyBnZXQgaGV1cmlzdGljYWwKCQkJ CSA7OyBvbmNlIG1vcmUuCgkJCQkgKGxldCAoKG5leHQtbmFtZSAoZWxpbmZvLS1nZXQtbmV4 dC1hcmcpKSkKCQkJCSAgIChzdHJpbmctbWF0Y2gKCQkJCSAgICAiZWxlbWVudHNcXHxhcmd1 bWVudHNcXHxhcmdzIiBuZXh0LW5hbWUgMCkpKQoJCQkgICAgOzsgVGhlIGZvbGxvd2luZyBp ZGlvbSBpcyBwb3B1bGFyIHdpdGhpbgoJCQkgICAgOzsgbWFjcm9zIGFuZCBzcGVjaWFsIGZv cm1zLgoJCQkgICAgKGFuZCAoc3RyaW5nLW1hdGNoICImcmVzdCIgYXJnLW5hbWUpCgkJCQkg KG9yIChzdHJpbmctbWF0Y2ggIkBkb3Rze30kIiB0ZXhpLWFyZy1uYW1lKQoJCQkJICAgICAo cmUtc2VhcmNoLWZvcndhcmQKCQkJCSAgICAgICJAZG90c3t9JCIgKGxpbmUtZW5kLXBvc2l0 aW9uKSB0KSkpCgkJCSAgICAoZWxpbmZvLWxvZy1zdHJpbmcKCQkJICAgICAnYXJnLW1pc21h dGNoIHRleGktbmFtZSBmaWxlLW5hbWUgcG9zaXRpb24KCQkJICAgICAoY29uY2F0CgkJCSAg ICAgICJgIiB0ZXhpLXBkLW5hbWUKCQkJICAgICAgIicgaGFzIG1pc21hdGNoaW5nIG9wdGlv bmFsIG9yIHJlc3Qgb2YgYXJndW1lbnRzIikpKQoJCQkodGhyb3cgJ2J1ZyB0KSkKCQkgICAg ICAgKHQKCQkJKGVsaW5mby1sb2ctc3RyaW5nCgkJCSAnYXJnLW1pc21hdGNoIHRleGktbmFt ZSBmaWxlLW5hbWUgcG9zaXRpb24KCQkJIChjb25jYXQgIiciIHRleGktcGQtbmFtZSAiJyB1 c2VzIGAiIHRleGktYXJnLW5hbWUKCQkJCSAiJyBmb3IgYXJndW1lbnQgYCIgYXJnLW5hbWUg IiciKSB0KSkKCQkgICAgICAgKHRocm93ICdidWcgdCkpKSkpKSkpKQoJICAgKChtYXRjaC1i ZWdpbm5pbmcgNCkKCSAgICAoc2V0cSB0ZXhpLW9wdGlvbiAobWF0Y2gtYmVnaW5uaW5nIDYp KQoJICAgIChzZXRxIHBvc2l0aW9uIChlbGluZm8tLW1vdmUtdG8tbmV4dCkpCgkgICAgKHNl dHEgdGV4aS1uYW1lIChlbGluZm8tLWdldC1uZXh0KSkKCSAgICAoc2V0cSB0ZXhpLXBkLW5h bWUgKHByb3BlcnRpemUgdGV4aS1uYW1lICdmYWNlIGVsaW5mby1sb2ctZGVmLWZhY2UpKQoJ ICAgIChpZiAobm90IChib3VuZHAgKGludGVybiB0ZXhpLW5hbWUpKSkKCQkocHJvZ24KCQkg IChlbGluZm8tbG9nLXN0cmluZwoJCSAgICd2YXItdW5ib3VuZCB0ZXhpLW5hbWUgZmlsZS1u YW1lIHBvc2l0aW9uCgkJICAgKGNvbmNhdCAiVW5ib3VuZCB2YXJpYWJsZSBgIiB0ZXhpLXBk LW5hbWUgIiciKSB0KQoJCSAgKGZvcndhcmQtbGluZSkpCgkgICAgICA7OyBDaGVjayBvcHRp b24gcHJvcGVydHkuCgkgICAgICAoc2V0cSBpcy1vcHRpb24gKGVsaW5mby0taXMtb3B0aW9u IChpbnRlcm4gdGV4aS1uYW1lKSkpCgkgICAgICAoY29uZAoJICAgICAgICgoYW5kIHRleGkt b3B0aW9uIChub3QgaXMtb3B0aW9uKSkKCQkoZWxpbmZvLWxvZy1zdHJpbmcKCQkgJ25vLW9w dGlvbiB0ZXhpLW5hbWUgZmlsZS1uYW1lIHBvc2l0aW9uCgkJIChjb25jYXQgImAiIHRleGkt cGQtbmFtZSAiJyBpcyBub3QgYW4gb3B0aW9uIikpKQoJICAgICAgICgoYW5kIChub3QgdGV4 aS1vcHRpb24pIGlzLW9wdGlvbikKCQkoZWxpbmZvLWxvZy1zdHJpbmcKCQkgJ29wdGlvbiB0 ZXhpLW5hbWUgZmlsZS1uYW1lIHBvc2l0aW9uCgkJIChjb25jYXQgImAiIHRleGktcGQtbmFt ZSAiJyBpcyBhbiBvcHRpb24iKSkpKSkpCgkgICAoKG1hdGNoLWJlZ2lubmluZyA4KQoJICAg IChzZXRxIHBvc2l0aW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpCgkgICAgOzsgQW4g ZXhhbXBsZS12ZXJiYXRpbS1saXNwIGdyb3VwLCBza2lwIGl0LgoJICAgICh1bmxlc3MgKHJl LXNlYXJjaC1mb3J3YXJkCgkJICAgICAoY29uY2F0ICJeQGVuZCAiIChtYXRjaC1zdHJpbmct bm8tcHJvcGVydGllcyA3KQoJCQkgICAgIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyA4 KSkgbmlsIHQpCgkgICAgICAoZWxpbmZvLWxvZy1zdHJpbmcKCSAgICAgICAnbm8tZW5kIG5p bCBmaWxlLW5hbWUgcG9zaXRpb24KCSAgICAgICAoY29uY2F0ICJVbnRlcm1pbmF0ZWQgIiAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgNykKCQkgICAgICAgKG1hdGNoLXN0cmluZy1u by1wcm9wZXJ0aWVzIDgpKSkpKQoJICAgKChtYXRjaC1iZWdpbm5pbmcgOSkKCSAgICAoZWxp bmZvLWxvZy1zdHJpbmcKCSAgICAgJ2NvZGUta2JkIG5pbCBmaWxlLW5hbWUgKG1hdGNoLWJl Z2lubmluZyA5KQoJICAgICAoY29uY2F0ICJVc2UgQGtiZCBmb3IgQGNvZGV7IgoJCSAgICAg KHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZwoJCSAgICAgICJcbiIgIiAiIChtYXRjaC1zdHJp bmctbm8tcHJvcGVydGllcyA5KSkgIn0iKSkpCgkgICAoKG1hdGNoLWJlZ2lubmluZyAxMCkK CSAgICAoZWxpbmZvLWxvZy1zdHJpbmcKCSAgICAgJ2NvZGUta2V5IG5pbCBmaWxlLW5hbWUg KG1hdGNoLWJlZ2lubmluZyAxMCkKCSAgICAgKGNvbmNhdCAiVXNlIEBrZXkgZm9yIEBjb2Rl eyIKCQkgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKCQkgICAgICAiXG4iICIgIiAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMTIpKSAifSIpKSkKCSAgICgobWF0Y2gtYmVn aW5uaW5nIDExKQoJICAgIChlbGluZm8tbG9nLXN0cmluZwoJICAgICAna2JkLWtleSBuaWwg ZmlsZS1uYW1lIChtYXRjaC1iZWdpbm5pbmcgMTEpCgkgICAgIChjb25jYXQgIlVzZSBAa2V5 IGZvciBAa2JkeyIKCQkgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKCQkgICAgICAi XG4iICIgIiAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMTIpKSAifSIpKSkKCSAgICgo bWF0Y2gtYmVnaW5uaW5nIDEzKQoJICAgIDs7IEN1cnJlbnRseSB3ZSBkb24ndCBjYXRlciBm b3IgQGNvZGV7bmlsfSBtaXN3cml0dGVuIGFzIG5pbAoJICAgIDs7IGFuZCBwcm9iYWJseSBu ZXZlciB3aWxsLgoJICAgIChlbGluZm8tbG9nLXN0cmluZwoJICAgICAna2JkLWtleSBuaWwg ZmlsZS1uYW1lIChtYXRjaC1iZWdpbm5pbmcgMTMpCgkgICAgIChjb25jYXQgIlVzZSBub24t QGNvZGV7bmlsfSBpbnN0ZWFkIG9mIG5vbi1uaWwiKSkpCgkgICA7OyBBZGRpdGlvbmFsIGNh c2VzIGFkZGVkIGhlcmUuCgkgICApKSkpKSkKCihkZWZ1biBlbGluZm8tY2hlY2stYnVmZmVy ICgpCiAgIkNoZWNrIHZhbGlkaXR5IG9mIGN1cnJlbnQgVGV4aW5mbyBidWZmZXIuClRoZSBi dWZmZXIgbXVzdCBiZSB2aXNpdGluZyBhIGZpbGUuIgogIChpbnRlcmFjdGl2ZSkKICAoZWxp bmZvLWNsZWFyLWxvZykKICAoY29uZAogICAoKG5vdCBidWZmZXItZmlsZS1uYW1lKQogICAg KGVycm9yICJUaGUgY3VycmVudCBidWZmZXIgZG9lcyBub3QgdmlzaXQgYSBmaWxlIikpCiAg ICgoYW5kIChidWZmZXItbW9kaWZpZWQtcCkKCSAoeS1vci1uLXAgKGZvcm1hdCAiU2F2ZSBi dWZmZXIgJXMgZmlyc3Q/ICIgKGJ1ZmZlci1uYW1lKSkpKQogICAgKHNhdmUtYnVmZmVyKSkp CiAgKHNldHEgZWxpbmZvLWZpbGVzLWNvdW50IG5pbCkKICAoZ290by1jaGFyIChwb2ludC1t aW4pKQogIChlbGluZm8tY2hlY2sgYnVmZmVyLWZpbGUtbmFtZSkKICAoZWxpbmZvLWRpc3Bs YXktbG9nIGJ1ZmZlci1maWxlLW5hbWUpKQoKKGRlZnVuIGVsaW5mby1jaGVjay1maWxlIChm aWxlLW5hbWUpCiAgIkNoZWNrIHZhbGlkaXR5IG9mIFRleGluZm8gZmlsZSBGSUxFLU5BTUUu IgogIChpbnRlcmFjdGl2ZSAiZkNoZWNrIFRleGluZm8gZmlsZSAiKQogIChlbGluZm8tY2xl YXItbG9nKQogIChzZXRxIGVsaW5mby1maWxlcy1jb3VudCBuaWwpCiAgKHdpdGgtdGVtcC1i dWZmZXIKICAgIChpbnNlcnQtZmlsZS1jb250ZW50cyBmaWxlLW5hbWUpCiAgICAoZWxpbmZv LWNoZWNrIGZpbGUtbmFtZSkpCiAgKGVsaW5mby1kaXNwbGF5LWxvZyBmaWxlLW5hbWUpKQoK KGRlZnVuIGVsaW5mby1jaGVjay1kaXJlY3RvcnkgKGRpcmVjdG9yeSkKICAiQ2hlY2sgdmFs aWRpdHkgb2YgVGV4aW5mbyBmaWxlcyBpbiBESVJFQ1RPUlkuIgogIChpbnRlcmFjdGl2ZSAi RENoZWNrIGFsbCB0ZXhpbmZvIGZpbGVzIGluICIpCiAgKGxldCAoKGZpbGVzIChkaXJlY3Rv cnktZmlsZXMgZGlyZWN0b3J5ICdmdWxsKSkpCiAgICAoZWxpbmZvLWNsZWFyLWxvZykKICAg IChzZXRxIGVsaW5mby1maWxlcy1jb3VudCAwKQogICAgKGRvbGlzdCAoZmlsZSBmaWxlcykK ICAgICAgKHdoZW4gKGFuZCAoc3RyaW5nLWVxdWFsIChmaWxlLW5hbWUtZXh0ZW5zaW9uIGZp bGUpICJ0ZXhpIikKCQkgKG5vdCAoYmFja3VwLWZpbGUtbmFtZS1wIGZpbGUpKSkKCSh3aXRo LXRlbXAtYnVmZmVyCgkgIChpbnNlcnQtZmlsZS1jb250ZW50cyBmaWxlKQoJICAoZWxpbmZv LWNoZWNrIGZpbGUpCgkgIChzZXRxIGVsaW5mby1maWxlcy1jb3VudCAoMSsgZWxpbmZvLWZp bGVzLWNvdW50KSkKCSAgKGxldCAobWVzc2FnZS1sb2ctbWF4KQoJICAgIChtZXNzYWdlICIl cyBmaWxlcyBjaGVja2VkIiBlbGluZm8tZmlsZXMtY291bnQpKSkpKQogICAgKGVsaW5mby1k aXNwbGF5LWxvZykpKQoKOzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsKOzs7CQkJTmF2 aWdhdGlvbiBVdGlsaXRpZXMKOzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsKCihkZWZj dXN0b20gZWxpbmZvLW5hbWVzLWFsaXN0CiAgJygoImVsaXNwIiAuICJsaXNwcmVmIikgKCJl bWFjcyIgLiAiZW1hY3MiKSkKICAiQWxpc3Qgb2YgKGluZm8tZmlsZS1uYW1lIHRleGktc3Vi ZGlyZWN0b3J5KSBhc3NvY2lhdGlvbnMuCklmIGVsaW5mbyBjYW4ndCBmaW5kIGFuIGFzc29j aWF0aW9uIGl0IHdpbGwgbG9vayBpbiB0aGUgXCJtaXNjXCIKc3ViZGlyZWN0b3J5LiIKICA6 dHlwZSAnKHJlcGVhdCAoZ3JvdXAgKHN0cmluZyA6dGFnICJpbmZvLWZpbGUiIDpmb3JtYXQg IiAgJXQ6ICV2IiA6c2l6ZSAxNSkKCQkJKHN0cmluZyA6dGFnICJ0ZXhpLXN1YmRpciIgOmZv cm1hdCAiICAldDogJXZcbiIgOnNpemUgMTUpKSkKICA6Z3JvdXAgJ2VsaW5mbykKCihkZWZj dXN0b20gZWxpbmZvLXRleGktZGlyZWN0b3J5IChjb25jYXQgc291cmNlLWRpcmVjdG9yeSAi ZG9jLyIpCiAgIkRpcmVjdG9yeSB3aGVyZSBkb2MgZmlsZXMgcmVzaWRlLiIKICA6dHlwZSAn ZmlsZQogIDpncm91cCAnZWxpbmZvKQoKKGRlZnVuIGVsaW5mby0tZGVmYXVsdC10YWcgKCkK ICAiUmV0dXJuIGNvbnMgaG9sZGluZyBzdGFydCBhbmQgbmFtZSBvZiB0YWcgbmVhciBgcG9p bnQnLiIKICAobGV0IChmcm9tIHRvIGJvdW5kKQogICAgKHdoZW4gKG9yIChwcm9nbgoJCTs7 IExvb2sgYXQgdGV4dCBhcm91bmQgYHBvaW50Jy4KCQkoc2F2ZS1leGN1cnNpb24KCQkgIChz a2lwLWNoYXJzLWJhY2t3YXJkICJhLXowLTkiKSAoc2V0cSBmcm9tIChwb2ludCkpKQoJCShz YXZlLWV4Y3Vyc2lvbgoJCSAgKHNraXAtY2hhcnMtZm9yd2FyZCAiYS16MC05IikgKHNldHEg dG8gKHBvaW50KSkpCgkJKD4gdG8gZnJvbSkpCgkgICAgICA7OyBMb29rIGJldHdlZW4gYGxp bmUtYmVnaW5uaW5nLXBvc2l0aW9uJyBhbmQgYHBvaW50Jy4KCSAgICAgIChzYXZlLWV4Y3Vy c2lvbgoJCShhbmQgKHNldHEgYm91bmQgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKCQkg ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJeYS16MC05IiBib3VuZCkKCQkgICAgICg+IChz ZXRxIHRvIChwb2ludCkpIGJvdW5kKQoJCSAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgImEt ejAtOSIpCgkJICAgICAoc2V0cSBmcm9tIChwb2ludCkpKSkKCSAgICAgIDs7IExvb2sgYmV0 d2VlbiBgcG9pbnQnIGFuZCBgbGluZS1lbmQtcG9zaXRpb24nLgoJICAgICAgKHNhdmUtZXhj dXJzaW9uCgkJKGFuZCAoc2V0cSBib3VuZCAobGluZS1lbmQtcG9zaXRpb24pKQoJCSAgICAg KHNraXAtY2hhcnMtZm9yd2FyZCAiXmEtejAtOSIgYm91bmQpCgkJICAgICAoPCAoc2V0cSBm cm9tIChwb2ludCkpIGJvdW5kKQoJCSAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiYS16MC05 IikKCQkgICAgIChzZXRxIHRvIChwb2ludCkpKSkpCiAgICAgIChjb25zIGZyb20gKGJ1ZmZl ci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBmcm9tIHRvKSkpKSkKCihkZWZjb25zdCBlbGlu Zm8tYXQtcmVnZXhwICJcXCg/OlxcKD86QFthLXpdK3tcXHxbfWAnXCJfOl0qXFwpKlsgXHRc bl0qXFwpIgogICJSZWdleHAgc3VwcG9zZWQgdG8gbWF0Y2ggVGV4aW5mbyBjb25zdHJ1Y3Rz IHRoYXQgc2VwYXJhdGUgaXRlbXMuIikKCjs7IFR3byBnbG9iYWxzLCBpbml0aWFsaXplZCBp biBgZWxpbmZvLWdvdG8tdGV4aScgYW5kIHVwZGF0ZWQgYnkKOzsgYGVsaW5mby0tdXBkYXRl LXJlZ2V4cCcuCihkZWZ2YXIgZWxpbmZvLWZyb20gbmlsKQooZGVmdmFyIGVsaW5mby1yZWdl eHAgbmlsKQoKKGRlZnVuIGVsaW5mby0tbWFrZS1yZWdleHAgKGZyb20gdG8pCiAgIlJldHVy biBidWZmZXIgdGV4dCBmcm9tIEZST00gdG8gVE8gYXMgcmVnZXhwLiIKICAocmVwbGFjZS1y ZWdleHAtaW4tc3RyaW5nCiAgICJbIFx0XSsiICJbIFx0XG5dKyIKICAgIChyZWdleHAtcXVv dGUKICAgICAoZG93bmNhc2UKICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGll cyBmcm9tIHRvKSkpIG5pbCB0KSkKCihkZWZ1biBlbGluZm8tLW1ha2UtcmVnZXhwLTIgKGZy b20gdG8pCiAgIlJldHVybiBidWZmZXIgdGV4dCBmcm9tIEZST00gdG8gVE8gYXMgVGV4aW5m b2lzaCByZWdleHAuIgogIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKICAgIkBcXChbQHt9 XVxcKSIgKGxhbWJkYSAoc3RyaW5nKSAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSBz dHJpbmcpKQogICAoZWxpbmZvLS1tYWtlLXJlZ2V4cCBmcm9tIHRvKSkpCgooZGVmdW4gZWxp bmZvLS11cGRhdGUtcmVnZXhwICgmb3B0aW9uYWwgcmVzdCkKICAoc2V0cSBlbGluZm8tcmVn ZXhwCgkoY29uY2F0CgkgZWxpbmZvLXJlZ2V4cAoJIChlbGluZm8tLW1ha2UtcmVnZXhwIGVs aW5mby1mcm9tIChtYXRjaC1iZWdpbm5pbmcgMCkpCgkgKHVubGVzcyAoPSBlbGluZm8tZnJv bSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJICAgZWxpbmZvLWF0LXJlZ2V4cCkKCSAod2hlbiBy ZXN0CgkgICAoY29uY2F0IHJlc3QgZWxpbmZvLWF0LXJlZ2V4cCkpKSkpCgooZGVmdW4gZWxp bmZvLS11cGRhdGUtcmVnZXhwLTgxMCAoJm9wdGlvbmFsIHJlc3QpCiAgKHNldHEgZWxpbmZv LXJlZ2V4cAoJKGNvbmNhdAoJIGVsaW5mby1yZWdleHAKCSAoZWxpbmZvLS1tYWtlLXJlZ2V4 cCBlbGluZm8tZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJICh1bmxlc3MgKD0gZWxpbmZv LWZyb20gKG1hdGNoLWJlZ2lubmluZyAwKSkKCSAgIGVsaW5mby1hdC1yZWdleHApCgkgKHdo ZW4gcmVzdAoJICAgKGNvbmNhdCByZXN0IGVsaW5mby1hdC1yZWdleHApKSkpKQoKKGRlZmNv bnN0IGVsaW5mby1pbmZvLXJlZ2V4cAogICJcXCgtLSBcXCg/OkZ1bmN0aW9uXFx8Q29tbWFu ZFxcfFZhcmlhYmxlXFx8TWFjcm9cXHxTcGVjaWFsIEZvcm1cXHxVc2VyIE9wdGlvblxcfFN5 bnRheCBjbGFzc1xcKTogXFwpXApcXHxcXCg/OlxcKFxcKk5vdGVcXClcXHxcXCg6OlxcKVxc fFxcKlxcKFdhcm5pbmc6XFwpXFwqXFwpWyBdKlxcfFvigJhdKjxcXChbXj5dK1xcKT5b4oCZ XSpcClxcfFxcKFxcKD86TGFcXCk/VGVYXFx8KFtDUl0pXFx8RXVyb1xcKVxcfFxcKOKAmFxc KFte4oCZXStcXCnigJlcXClcXHxcXChb4oCYXSpcXChbQS1aMC05Ki1dK1xcKVvigJldKlxc KVwKXFx8XFwoWyBcdFxuXStcXClcXHxcXChbJ1wiX10rXFwpXFx8XFwoLStcXClcXHxcXChc XC5bLl0rXFwpXApcXHxcXChcXCg/OmVycm9yXFwpP1stLiE9PnwqI11bLS4hPT58KiNdK1xc KVxcfFxcKFt7fV1cXCkiCiAgIlRoZSBiYXNpYyByZWdleHAgdXNlZCBieSBgZWxpbmZvLWdv dG8tdGV4aScuIikKCjs7IFVzZWQgZm9yIHRlc3Rpbmcgb25seSBzbyBSRU1PVkUgaXQuCihk ZWZ2YXIgZWxpbmZvLXRlc3QtdGV4aS13aW5kb3cgbmlsKQoKKGRlZnVuIGVsaW5mby1maW5k LXRhZy1vdGhlci13aW5kb3cgKHRhZ25hbWUgJm9wdGlvbmFsIG5leHQtcCByZWdleHAtcCkK ICAiT3VyIHZlcnNpb24gb2YgYGZpbmQtdGFnLW90aGVyLXdpbmRvdycuIgogIChsZXQqICgo d2luZG93LXBvaW50ICh3aW5kb3ctcG9pbnQpKQoJICh0YWdidWYgKGZpbmQtdGFnLW5vc2Vs ZWN0IHRhZ25hbWUgbmV4dC1wIHJlZ2V4cC1wKSkKCSAodGFncG9pbnQgKHByb2duIChzZXQt YnVmZmVyIHRhZ2J1ZikgKHBvaW50KSkpKQogICAgKHNldC13aW5kb3ctcG9pbnQgKHByb2cx CgkJCSAgKHNlbGVjdGVkLXdpbmRvdykKCQkJKHNlbGVjdC13aW5kb3cKCQkJIChvciAoZ2V0 LWJ1ZmZlci13aW5kb3cgdGFnYnVmKQoJCQkgICAgIChsZXQgKCh3aW5kb3cgKHNwbGl0LXdp bmRvdyBuaWwgbmlsICdsZWZ0KSkpCgkJCSAgICAgICAoc2V0LXdpbmRvdy1idWZmZXIgd2lu ZG93IHRhZ2J1ZikKCQkJICAgICAgIHdpbmRvdykpKQoJCQkoc2V0LXdpbmRvdy1wb2ludCAo c2VsZWN0ZWQtd2luZG93KSB0YWdwb2ludCkpCgkJICAgICAgd2luZG93LXBvaW50KSkpCgoo ZGVmdW4gZWxpbmZvLXdpbmRvd3Mtc3luY2ggKCZvcHRpb25hbCBzb3VyY2UgdGFyZ2V0KQog ICJTeW5jaCBgd2luZG93LXBvaW50JyBvZiB3aW5kb3cgVEFSR0VUIHdpdGggdGhhdCBvZiB3 aW5kb3cgU09VUkNFLiIKICAobGV0KiAoKHNvdXJjZSAob3Igc291cmNlIChzZWxlY3RlZC13 aW5kb3cpKSkKCSAodGFyZ2V0IChvciB0YXJnZXQKCQkgICAgICh3aW5kb3ctaW4tZGlyZWN0 aW9uICdsZWZ0IHNvdXJjZSkKCQkgICAgICh3aW5kb3ctaW4tZGlyZWN0aW9uICdyaWdodCBz b3VyY2UpKSkKCSAobGluZQoJICAod2l0aC1jdXJyZW50LWJ1ZmZlciAod2luZG93LWJ1ZmZl ciBzb3VyY2UpCgkgICAgKGNvdW50LXNjcmVlbi1saW5lcyAod2luZG93LXN0YXJ0IHNvdXJj ZSkgKHdpbmRvdy1wb2ludCBzb3VyY2UpKSkpCgkgOzsgRXhwZXJpbWVudGFsbHkgT0sgLi4u CgkgKHNvdXJjZS1oZWFkICgvICgrICh3aW5kb3ctaGVhZGVyLWxpbmUtaGVpZ2h0IHNvdXJj ZSkKCQkJICAgICh3aW5kb3ctdGFiLWxpbmUtaGVpZ2h0IHNvdXJjZSkpCgkJCSAoZnJhbWUt Y2hhci1oZWlnaHQgKHdpbmRvdy1mcmFtZSBzb3VyY2UpKSkpCgkgKHRhcmdldC1oZWFkICgv ICgrICh3aW5kb3ctaGVhZGVyLWxpbmUtaGVpZ2h0IHRhcmdldCkKCQkJICAgICh3aW5kb3ct dGFiLWxpbmUtaGVpZ2h0IHRhcmdldCkpCgkJCSAoZnJhbWUtY2hhci1oZWlnaHQgKHdpbmRv dy1mcmFtZSB0YXJnZXQpKSkpKQogICAgKHNldHEgbGluZSAoKyBsaW5lICgtIHNvdXJjZS1o ZWFkIHRhcmdldC1oZWFkKSkpCiAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgdGFyZ2V0CiAg ICAgIChyZWNlbnRlciAoMS0gbGluZSkpKSkpCgooZGVmdW4gZWxpbmZvLWdvdG8tdGV4aSAo KQogICJJbiBgSW5mby1tb2RlJyBkaXNwbGF5IGNvcnJlc3BvbmRpbmcgVGV4aW5mbyB0ZXh0 IGluIG90aGVyIHdpbmRvdy4KSWYgaW52b2tpbmcgdGhpcyBjb21tYW5kIGRvZXNuJ3QgZ2V0 IHlvdSB0byB0aGUgZGVzaXJlZCBwb3NpdGlvbgppbiB0aGUgVGV4aW5mbyBidWZmZXIsIHlv dSBtaWdodCB0cnkgdG8gaW52b2tlIGl0IGZyb20gYSBwb3NpdGlvbgpvbmUgbGluZSBhYm92 ZSBvciBiZWxvdyB0aGUgY3VycmVudCBvbmUgaW4gdGhlIEluZm8gYnVmZmVyLiIKICAoaW50 ZXJhY3RpdmUpCiAgKHVubGVzcyAoZXEgbWFqb3ItbW9kZSAnSW5mby1tb2RlKQogICAgKGVy cm9yICJUaGlzIGZ1bmN0aW9uIGNhbiBiZSBpbnZva2VkIGluIEluZm8tbW9kZSBvbmx5Iikp CiAgKGxldCogKChpbmZvLXdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkKCSAod2luZG93LXBv aW50ICh3aW5kb3ctcG9pbnQpKQoJIChpbmZvLWZpbGUtbmFtZQoJICAod2hlbiAoYm91bmRw ICdJbmZvLWN1cnJlbnQtZmlsZSkKCSAgICAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBJbmZv LWN1cnJlbnQtZmlsZSkpKQoJICh0YWcKCSAgKHdoZW4gKGJvdW5kcCAnSW5mby1jdXJyZW50 LW5vZGUpCgkgICAgSW5mby1jdXJyZW50LW5vZGUpKQoJICh0ZXhpLXN1YmRpcgoJICAod2hl biBpbmZvLWZpbGUtbmFtZQoJICAgIChsZXQgKChjZWxsIChhc3NvYyBpbmZvLWZpbGUtbmFt ZSBlbGluZm8tbmFtZXMtYWxpc3QpKSkKCSAgICAgIChpZiBjZWxsIChjZHIgY2VsbCkgIm1p c2MiKSkpKQoJIChhdCAocG9pbnQpKQoJIChvZmZzZXQgMCkKCSB0ZXhpLWRpciB0ZXhpLWZp bGUgdGFncy1maWxlLW5hbWUKCSBkZWZhdWx0LXRhZyBhbmNob3IgcmVwZWF0IGZyb20gdG8K CSBjYXNlLWZvbGQtc2VhcmNoIHRhZ2J1ZikKICAgIChjb25kCiAgICAgKChub3QgdGV4aS1z dWJkaXIpCiAgICAgIChlcnJvciAiQ2FuJ3QgaWRlbnRpZnkgdGV4aW5mbyBzdWJkaXJlY3Rv cnkiKSkKICAgICAoKGZpbGUtZXhpc3RzLXAKICAgICAgIChzZXRxIHRleGktZGlyIChjb25j YXQgZWxpbmZvLXRleGktZGlyZWN0b3J5IHRleGktc3ViZGlyICIvIikpKSkKICAgICAodAog ICAgICAoZXJyb3IgIkNhbid0IGZpbmQgdGV4aW5mbyBzdWJkaXJlY3RvcnkiKSkpCgogICAg OzsgU2lnaCAuLi4KICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICA7OyBNb3ZlIGF3YXkgZnJv bSBlbXB0eSBsaW5lcy4KICAgICAgKHNhdmUtZXhjdXJzaW9uCgkoYmVnaW5uaW5nLW9mLWxp bmUpCgkod2hlbiAobG9va2luZy1hdCAiWyBcdF0qJCIpCgkgIChsZXQgKChwcmV2LWF0CgkJ IChwcm9nbgoJCSAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIpCgkJICAgKHVubGVz cyAoYm9icCkKCQkgICAgIChwb2ludCkpKSkKCQkobmV4dC1hdAoJCSAocHJvZ24KCQkgICAo c2tpcC1jaGFycy1mb3J3YXJkICIgXHRcbiIpCgkJICAgKHVubGVzcyAoZW9icCkKCQkgICAg IChwb2ludCkpKSkpCgkgICAgKHNldHEgYXQKCQkgIChjb25kCgkJICAgKChhbmQgcHJldi1h dCBuZXh0LWF0KQoJCSAgICAoaWYgKD4gKC0gYXQgcHJldi1hdCkgKC0gbmV4dC1hdCBhdCkp IG5leHQtYXQgcHJldi1hdCkpCgkJICAgKHByZXYtYXQgcHJldi1hdCkKCQkgICAobmV4dC1h dCBuZXh0LWF0KSkpKSkpCiAgICAgIChnb3RvLWNoYXIgYXQpCiAgICAgIChzZXRxIGZyb20g KHByb2duCgkJICAgKGJlZ2lubmluZy1vZi1saW5lKQoJCSAgIChza2lwLWNoYXJzLWZvcndh cmQgIiBcdCIpCgkJICAgKHBvaW50KSkpCiAgICAgIChzZXRxIHRvIChwcm9nbgoJCSAoZW5k LW9mLWxpbmUpCgkJIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQoJCSAocG9pbnQpKSkK ICAgICAgOzsgVHJ5IHRvIGhhbmRsZSBhbiB4cmVmIHRoYXQgc3BhbnMgdGhlIGJlZ2lubmlu ZyBvZiB0aGlzIGxpbmUuCiAgICAgIDs7IFRoaXMgd2lsbCBwdXQgdXMgYWZ0ZXIgdGhlIHJl ZmVyZW5jZSBpbiB0aGUgdGV4aSBidWZmZXIsIGJ1dAogICAgICA7OyB0aGF0J3Mgc3RpbGwg YmV0dGVyIHRoYW4gZ2V0dGluZyB0byB0aGUgaGVhZCBvZiB0aGUgc2VjdGlvbi4KICAgICAg KHdoZW4gKHNhdmUtZXhjdXJzaW9uCgkgICAgICAoZ290by1jaGFyIGZyb20pCgkgICAgICAo YW5kIChyZS1zZWFyY2gtYmFja3dhcmQKCQkgICAgIlxcKltObl1vdGUiIChsaW5lLWJlZ2lu bmluZy1wb3NpdGlvbiAwKSB0KQoJCSAgIChub3QgKHJlLXNlYXJjaC1mb3J3YXJkICJbLixd XFx8OjoiIGZyb20gdCkpKSkKCShnb3RvLWNoYXIgZnJvbSkKCShyZS1zZWFyY2gtZm9yd2Fy ZCAiOjpcXHxcXChbLixdKT9cXCkiIHRvIHQpCgkod2hlbiAobWF0Y2gtYmVnaW5uaW5nIDEp CgkgIDs7IEZvdW5kIGEgY2xvc2luZyBgLicgb3IgYCwnIHNvIHJlbG9jYXRlIGBmcm9tJy4K CSAgKHNldHEgZnJvbSAocG9pbnQpKQoJICAoc2V0cSBhdCAobWF4IGZyb20gYXQpKSkpCgog ICAgICAoZ290by1jaGFyIGF0KQogICAgICAod2hlbiAoc2V0cSBkZWZhdWx0LXRhZyAoZWxp bmZvLS1kZWZhdWx0LXRhZykpCgkoc2V0cSBvZmZzZXQgKC0gYXQgKGNhciBkZWZhdWx0LXRh ZykpKQoJKHNldHEgYW5jaG9yIChjZHIgZGVmYXVsdC10YWcpKQoJKHNhdmUtZXhjdXJzaW9u CgkgIChnb3RvLWNoYXIgZnJvbSkKCSAgKGNhdGNoICdkb25lCgkgICAgKGxldCAoKGNhc2Ut Zm9sZC1zZWFyY2ggdCkpCgkgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIGFuY2hv ciBuaWwgdCkKCQkoaWYgKD0gKG1hdGNoLWJlZ2lubmluZyAwKSAoY2FyIGRlZmF1bHQtdGFn KSkKCQkgICAgKHRocm93ICdkb25lIHQpCgkJICAoc2V0cSByZXBlYXQKCQkJKGlmIHJlcGVh dCAoMSsgcmVwZWF0KSAyKSkpKSkpKSkKCiAgICAgIChnb3RvLWNoYXIgKHNldHEgZWxpbmZv LWZyb20gZnJvbSkpCiAgICAgIChzZXRxIGVsaW5mby1yZWdleHAgbmlsKQogICAgICA7OyBT Y2FuIGxpbmUuCiAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgZWxpbmZvLWluZm8t cmVnZXhwIHRvIHQpCgkoY29uZAoJICgobWF0Y2gtYmVnaW5uaW5nIDEpKQkJCTsgLS0gRnVu Y3Rpb246IC4uLgoJICgobWF0Y2gtYmVnaW5uaW5nIDIpCQkJOyAqTm90ZQoJICAoZWxpbmZv LS11cGRhdGUtcmVnZXhwKQoJICAobGV0ICgoZnJvbS0xIChwb2ludCkpCgkJdG8tMSkKCSAg ICAoaWYgKHJlLXNlYXJjaC1mb3J3YXJkICI6IiB0byB0KQoJCShwcm9nbgoJCSAgKHNldHEg dG8tMSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJCSAgKGlmIChsb29raW5nLWF0LXAgIjoiKQoJ CSAgICAgIDs7IDo6IGlzIGhhbmRsZWQgYnkgbWFpbiBsb29wLCByZXNjYW4uCgkJICAgICAg KGdvdG8tY2hhciBmcm9tLTEpCgkJICAgIDs7IEEgY29tcGxleCB4cmVmLCBoYW5kbGUgaXQg aGVyZS4KCQkgICAgKHNldHEgZWxpbmZvLXJlZ2V4cAoJCQkgIChjb25jYXQgZWxpbmZvLXJl Z2V4cCA7IEZvcmNlIGEgYHsnIGhlcmU/CgkJCQkgICJbYS16QS1aLCBcdFxuXSoiCgkJCQkg IChlbGluZm8tLW1ha2UtcmVnZXhwIGZyb20tMSB0by0xKQoJCQkJICAiW2EtekEtWiwgXHRc bl0qfSIpKQoJCSAgICA7OyBRdWl0IGxvb3AuCgkJICAgIChzZXRxIGZyb20gdG8pCgkJICAg IChnb3RvLWNoYXIgdG8pKSkKCSAgICAgIChzZXRxIGVsaW5mby1yZWdleHAKCQkgICAgKGNv bmNhdCBlbGluZm8tcmVnZXhwCTsgRm9yY2UgYSBgeycgaGVyZT8KCQkJICAgICJbYS16QS1a LCBcdFxuXSoiCgkJCSAgICAoZWxpbmZvLS1tYWtlLXJlZ2V4cCBmcm9tLTEgdG8pCgkJCSAg ICAiW2EtekEtWiwgXHRcbl0qfSIpKQoJICAgICAgOzsgUXVpdCBsb29wLgoJICAgICAgKHNl dHEgZnJvbSB0bykKCSAgICAgIChnb3RvLWNoYXIgdG8pKSkpCgkgKChtYXRjaC1iZWdpbm5p bmcgMykJCQk7IDo6CgkgIChlbGluZm8tLXVwZGF0ZS1yZWdleHApKQoJICgobWF0Y2gtYmVn aW5uaW5nIDQpCQkJOyAqV2FybmluZzoqCgkgIChlbGluZm8tLXVwZGF0ZS1yZWdleHApKQoJ ICgobWF0Y2gtYmVnaW5uaW5nIDUpCQkJOyBgPEtFWT4nCgkgIChlbGluZm8tLXVwZGF0ZS1y ZWdleHAKCSAgIChlbGluZm8tLW1ha2UtcmVnZXhwIChtYXRjaC1iZWdpbm5pbmcgNSkgKG1h dGNoLWVuZCA1KSkpKQoJICgobWF0Y2gtYmVnaW5uaW5nIDYpCgkgIChlbGluZm8tLXVwZGF0 ZS1yZWdleHAKCSAgIChjb25jYXQgIkA/IiAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMg NikgIlxcKD86W3t9XStcXCk/IikpKQoJICgobWF0Y2gtYmVnaW5uaW5nIDcpCQkJOyBRdW90 ZWQgc3RyaW5nCgkgIChlbGluZm8tLXVwZGF0ZS1yZWdleHAtODEwCgkgICAoZWxpbmZvLS1t YWtlLXJlZ2V4cCAobWF0Y2gtYmVnaW5uaW5nIDgpIChtYXRjaC1lbmQgOCkpKSkKCSAoKG1h dGNoLWJlZ2lubmluZyA5KQkJCTsgVXBwZXItY2FzZSBzdHJpbmcuCgkgIChlbGluZm8tLXVw ZGF0ZS1yZWdleHAtODEwCgkgICAoZWxpbmZvLS1tYWtlLXJlZ2V4cCAobWF0Y2gtYmVnaW5u aW5nIDEwKSAobWF0Y2gtZW5kIDEwKSkpKQoJICgobWF0Y2gtYmVnaW5uaW5nIDExKQkJCTsg V2hpdGVzcGFjZQoJICAoZWxpbmZvLS11cGRhdGUtcmVnZXhwICJbIFx0XG5dKyIpKQoJICgo bWF0Y2gtYmVnaW5uaW5nIDEyKQkJCTsgYCciCgkgIChlbGluZm8tLXVwZGF0ZS1yZWdleHAp KQoJICgobWF0Y2gtYmVnaW5uaW5nIDEzKQkJCTsgLS0KCSAgKGVsaW5mby0tdXBkYXRlLXJl Z2V4cCAiWy1dKyIpKQoJICgobWF0Y2gtYmVnaW5uaW5nIDE0KQkJCTsgLi4KCSAgKGVsaW5m by0tdXBkYXRlLXJlZ2V4cCAiXFwoPzpcXC5bLl0rXFx8QGRvdHN7fVxcKSIpKQoJICgobWF0 Y2gtYmVnaW5uaW5nIDE1KQkJCTsgPT4KCSAgKGVsaW5mby0tdXBkYXRlLXJlZ2V4cAoJICAg KGNvbmNhdAoJICAgICJcXCg/OkBbYS16XSt7fVxcKVxcfCIKCSAgICAoZWxpbmZvLS1tYWtl LXJlZ2V4cCAobWF0Y2gtYmVnaW5uaW5nIDE1KSAobWF0Y2gtZW5kIDE1KSkpKSkKCSAoKG1h dGNoLWJlZ2lubmluZyAxNikJCQk7IHsgb3IgfQoJICAoZWxpbmZvLS11cGRhdGUtcmVnZXhw CgkgICAoY29uY2F0ICJAPyIgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDE2KSBlbGlu Zm8tYXQtcmVnZXhwKSkpCgkgOzsgRnV0dXJlIGFkZGl0aW9ucyBnbyBoZXJlLgoJICkKCShz ZXRxIGVsaW5mby1mcm9tIChwb2ludCkpKQogICAgICAoc2V0cSBlbGluZm8tcmVnZXhwCgkg ICAgKGNvbmNhdCBlbGluZm8tcmVnZXhwIChlbGluZm8tLW1ha2UtcmVnZXhwIGVsaW5mby1m cm9tIHRvKSkpKQoKICAgIChpZiAobm90IChmaWxlLWV4aXN0cy1wCgkgICAgICAoc2V0cSB0 YWdzLWZpbGUtbmFtZSAoY29uY2F0IHRleGktZGlyICJUQUdTIikpKSkKCShlcnJvciAiTm8g dGFncyBmaWxlIGZvdW5kIikKICAgICAgKHNldHEgdGFnYnVmIChmaW5kLXRhZy1ub3NlbGVj dCAoY29uY2F0ICJeQG5vZGUgIiB0YWcgIlt/LF0iKSBuaWwgdCkpCiAgICAgIChlbGluZm8t ZmluZC10YWctb3RoZXItd2luZG93IChjb25jYXQgIl5Abm9kZSAiIHRhZyAiW38sXSIpIG5p bCB0KQoKICAgICAgOzsgVXNlZCBmb3IgdGVzdGluZyBvbmx5IHNvIFJFTU9WRSBpdC4KICAg ICAgKHNldHEgZWxpbmZvLXRlc3QtdGV4aS13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCgog ICAgICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0KSkKCSh3aGVuIGVsaW5mby1yZWdleHAK CSAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqdGVzdCoiKQoJ ICAgIChkZWxldGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKQoJICAgIChpbnNl cnQgZWxpbmZvLXJlZ2V4cCkpCgkgIChsZXQgKChhdCAocG9pbnQpKSkKCSAgICAoY29uZAoJ ICAgICAoKGFuZCAocmUtc2VhcmNoLWZvcndhcmQgKGNvbmNhdCAiXFwoIiBlbGluZm8tcmVn ZXhwICJcXClcXHxebm9kZSIpIG5pbCB0KQoJCSAgIChtYXRjaC1iZWdpbm5pbmcgMSkpCgkg ICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMSkpCgkgICAgICAoc2F2ZS1yZXN0 cmljdGlvbgoJCSh3aWRlbikKCQkobmFycm93LXRvLXJlZ2lvbiAobWF0Y2gtYmVnaW5uaW5n IDEpIChtYXRjaC1lbmQgMSkpCgkJKHdoZW4gKGFuZCBhbmNob3IgKHJlLXNlYXJjaC1mb3J3 YXJkIGFuY2hvciBuaWwgdCByZXBlYXQpKQoJCSAgKGdvdG8tY2hhciAoKyAobWF0Y2gtYmVn aW5uaW5nIDApIG9mZnNldCkpKSkpCgkgICAgICh0CgkgICAgICAoZ290by1jaGFyIGF0KSkp KSkpKQoKICAgIChzZXQtd2luZG93LXBvaW50IGluZm8td2luZG93IHdpbmRvdy1wb2ludCkK ICAgIChlbGluZm8td2luZG93cy1zeW5jaCBpbmZvLXdpbmRvdyAoZ2V0LWJ1ZmZlci13aW5k b3cgdGFnYnVmKSkKICAgIDs7IFRoZSBmb2xsb3dpbmcgbWlnaHQgZ2V0IHJlbW92ZWQuCiAg ICAoc2VsZWN0LXdpbmRvdyBpbmZvLXdpbmRvdykKICAgICkpCgooZGVmY29uc3QgZWxpbmZv LXRleGktZ2x5cGgtcmVnZXhwCiAgKHJlZ2V4cC1vcHQKICAgJygiZG90cyIgImVuZGRvdHMi ICJidWxsZXQiICJtaW51cyIgInJlc3VsdCIgImV4cGFuc2lvbiIKICAgICAicHJpbnQiICJl cnJvciIgImVxdWl2IiAicG9pbnQiICJjb3B5cmlnaHQiCiAgICAgInJlZ2lzdGVyZWRzeW1i b2wiICJldXJvIiAicG91bmRzIiAiTGFUZVgiICJUZVgiKSkKICAiUmVndWxhciBleHByZXNz aW9uIGZvciBnbHlwaHMgaW4gdGV4aSBidWZmZXJzLiIpCgooZGVmY29uc3QgZWxpbmZvLXRl eGktcmVnZXhwCiAgKGNvbmNhdAogICAiQGRlZlxcKHVuXFx8Zm4gQ29tbWFuZFxcfHZhclxc fG1hY3JvXFx8c3BlY1xcfG9wdFxcKVsgXHRdK1wKXFx8XFwoPzpAcD94cmVme1xcKFtefV0r XFwpXFwoPzp9XFx8JFxcKVxcKVxcfEBcXCg/OnN0cm9uZ1xcfGVtcGhcXCl7XFwoW159XStc XCl9XApcXHxcXChAIiBlbGluZm8tdGV4aS1nbHlwaC1yZWdleHAgInt9XFwpXFx8XFwoPzpA ZGZue1xcKFtefV0rXFwpfVxcKVwKXFx8XFwoQFthLXpdK3tcXClcXHxcXCh9XFwpXFx8XFwo WyBcdF0rXFwpXFx8XFwoW2AnXCJdW2AnXCJdK1xcKSIpCiAgIlRoZSBiYXNpYyByZWdleHAg dXNlZCBieSBgZWxpbmZvLWdvdG8taW5mbycuIikKCihkZWZ1biBlbGluZm8tZ290by1pbmZv ICgpCiAgIkluIGB0ZXhpbmZvLW1vZGUnIGRpc3BsYXkgY29ycmVzcG9uZGluZyBJbmZvIG5v ZGUgaW4gb3RoZXIgd2luZG93LgpJZiBpbnZva2luZyB0aGlzIGNvbW1hbmQgZG9lc24ndCBn ZXQgeW91IHRvIHRoZSBkZXNpcmVkIHBvc2l0aW9uCmluIHRoZSBJbmZvIGJ1ZmZlciwgeW91 IG1pZ2h0IHRyeSB0byBpbnZva2UgaXQgZnJvbSBhIHBvc2l0aW9uCm9uZSBsaW5lIGFib3Zl IG9yIGJlbG93IHRoZSBjdXJyZW50IG9uZSBpbiB0aGUgVGV4aW5mbyBidWZmZXIuIgogIChp bnRlcmFjdGl2ZSkKICAodW5sZXNzIChlcSBtYWpvci1tb2RlICd0ZXhpbmZvLW1vZGUpCiAg ICAoZXJyb3IgIlRoaXMgZnVuY3Rpb24gY2FuIGJlIGludm9rZWQgaW4gdGV4aW5mby1tb2Rl IG9ubHkiKSkKICAobGV0KiAoKHRleGktd2luZG93IChzZWxlY3RlZC13aW5kb3cpKQoJICh3 aW5kb3ctcG9pbnQgKHdpbmRvdy1wb2ludCkpCgkgKGluZm8tbm9kZS0zCgkgIChzYXZlLWV4 Y3Vyc2lvbgoJICAgICh3aGVuIChyZS1zZWFyY2gtYmFja3dhcmQgIl5Abm9kZSBcXChbLWEt ekEtWiBdK1xcKSIgbmlsIHQpCgkgICAgICAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMg MSkpKSkKCSAoaW5mby1ub2RlLTIKCSAgKHNhdmUtZXhjdXJzaW9uCgkgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkKCSAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl5Abm9kZSBc XChbLWEtekEtWiBdK1xcKSIgbmlsIHQpCgkgICAgICAobWF0Y2gtc3RyaW5nLW5vLXByb3Bl cnRpZXMgMSkpKSkKCSAoaW5mby1ub2RlLTEKCSAgOzsgSWYgd2UgY2FuJ3QgZmluZCBhbiBh c3NvY2lhdGlvbiwgYGluZm8tb3RoZXItd2luZG93JyB3aWxsCgkgIDs7IHN0YXJ0IGF0IHRo ZSB0b3Agbm9kZS4KCSAgKGNhciAocmFzc29jCgkJKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkK CQkgKGRpcmVjdG9yeS1maWxlLW5hbWUKCQkgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGJ1ZmZl ci1maWxlLW5hbWUpKSkKCQllbGluZm8tbmFtZXMtYWxpc3QpKSkKCSAob2Zmc2V0IDApCgkg cmVnZXhwIGRlZmF1bHQtdGFnIGFuY2hvciByZXBlYXQKCSBjYXNlLWZvbGQtc2VhcmNoKQoK ICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICA7OyBVc2UgYnJ1dGUgZm9yY2UuCiAgICAgICh3 aGlsZSAoc2F2ZS1leGN1cnNpb24KCSAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCgkgICAg ICAgKG9yIChsb29raW5nLWF0ICJbIFx0XSpcblxcfEBhbmNob3J7IikKCQkgICAoYW5kIChs b29raW5nLWF0ICJAW2Etel0rXFwoPzogXFx8JFxcKSIpCgkJCShub3QgKGxvb2tpbmctYXQg IkBkZWZcXCh1blxcfGZuIENvbW1hbmRcXHx2YXJcXHxtYWNyb1xcfHNwZWNcXHxvcHRcXCki KSkpKSkKCShmb3J3YXJkLWxpbmUpKQogICAgICAobGV0ICgoYXQgKHBvaW50KSkKCSAgICAg KGZyb20gKHByb2duCgkJICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCgkJICAgICAoc2tpcC1j aGFycy1mb3J3YXJkICIgXHQiKQoJCSAgICAgKHBvaW50KSkpCgkgICAgICh0byAocHJvZ24K CQkgICAoZW5kLW9mLWxpbmUpCgkJICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCgkJ ICAgKHBvaW50KSkpKQoKCTs7IEdldCBvdXQgb2YgYW55IHJlZmVyZW5jZSBhdCBCT0wsIHdl IGNhbid0IHRyYWNlIGl0IGFueXdheS4KCShjb25kaXRpb24tY2FzZSBuaWwKCSAgICAoYW5k IChwcm9nbgoJCSAgIChnb3RvLWNoYXIgZnJvbSkKCQkgICAodXAtbGlzdCAtMSkKCQkgICAo bG9va2luZy1hdCAieyIpKQoJCSAobG9va2luZy1iYWNrICJ4cmVmIiAobGluZS1iZWdpbm5p bmctcG9zaXRpb24pKQoJCSAocHJvZ24KCQkgICAoZm9yd2FyZC1zZXhwKQoJCSAgIChzZXRx IGZyb20gKHBvaW50KSkKCQkgICAoc2V0cSBhdCAobWF4IGF0IGZyb20pKSkpCgkgIChlcnJv ciBuaWwpKQoKCShnb3RvLWNoYXIgKG1heCBhdCBmcm9tKSkKCSh3aGVuIChzZXRxIGRlZmF1 bHQtdGFnIChlbGluZm8tLWRlZmF1bHQtdGFnKSkKCSAgKHNldHEgb2Zmc2V0ICgtIGF0IChj YXIgZGVmYXVsdC10YWcpKSkKCSAgKHNldHEgYW5jaG9yIChjZHIgZGVmYXVsdC10YWcpKQoJ ICAoc2F2ZS1leGN1cnNpb24KCSAgICAoZ290by1jaGFyIGZyb20pCgkgICAgKGNhdGNoICdk b25lCgkgICAgICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0KSkKCQkod2hpbGUgKHJlLXNl YXJjaC1mb3J3YXJkIGFuY2hvciBuaWwgdCkKCQkgIChpZiAoPSAobWF0Y2gtYmVnaW5uaW5n IDApIChjYXIgZGVmYXVsdC10YWcpKQoJCSAgICAgICh0aHJvdyAnZG9uZSB0KQoJCSAgICAo c2V0cSByZXBlYXQKCQkJICAoaWYgcmVwZWF0ICgxKyByZXBlYXQpIDIpKSkpKSkpKQoKCShn b3RvLWNoYXIgZnJvbSkKCTs7IFNjYW4gbGluZS4KCSh3aGlsZSAocmUtc2VhcmNoLWZvcndh cmQgZWxpbmZvLXRleGktcmVnZXhwIHRvIHQpCgkgIChjb25kCgkgICAoKG1hdGNoLWJlZ2lu bmluZyAxKSkKCSAgICgobWF0Y2gtYmVnaW5uaW5nIDIpCQkJOyBAcD94cmVmCgkgICAgKG9y IChhbmQgKHNhdmUtZXhjdXJzaW9uCgkJICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAy KSkKCQkgICAgICAgKGFuZCAoc2F2ZS1tYXRjaC1kYXRhCgkJCSAgICAgIDs7IEEgY29tbWEg d2l0aGluIHRoZSBicmFjZXMgc3RhbmRzIGZvciBhCgkJCSAgICAgIDs7IGNvbXBsZXggcmVm ZXJlbmNlLgoJCQkgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkICIsIiAobWF0Y2gtYmVnaW5u aW5nIDIpIHQpKQoJCQkgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0XG4sIikKCQkJICAg IChzZXRxIHJlZ2V4cAoJCQkJICAoY29uY2F0CgkJCQkgICByZWdleHAKCQkJCSAgIChlbGlu Zm8tLW1ha2UtcmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJCQkJICAgIlxc Km5vdGVbIFx0XG5dKiIKCQkJCSAgIChlbGluZm8tLW1ha2UtcmVnZXhwLTIgKHBvaW50KSAo bWF0Y2gtZW5kIDIpKSkpKSkKCQkgICAgIDs7IExlYXZlIG1haW4gbG9vcC4KCQkgICAgIChz ZXRxIGZyb20gdG8pCgkJICAgICAoZ290by1jaGFyIHRvKSkKCQkoc2V0cSByZWdleHAKCQkg ICAgICAoY29uY2F0CgkJICAgICAgIHJlZ2V4cCAoZWxpbmZvLS1tYWtlLXJlZ2V4cC0yIGZy b20gKG1hdGNoLWJlZ2lubmluZyAwKSkKCQkgICAgICAgIlxcKm5vdGVbIFx0XG5dKiIKCQkg ICAgICAgKGVsaW5mby0tbWFrZS1yZWdleHAtMiAobWF0Y2gtYmVnaW5uaW5nIDIpIChtYXRj aC1lbmQgMikpCgkJICAgICAgICI6OlsgXHRcbl0qIikpKSkKCSAgICgobWF0Y2gtYmVnaW5u aW5nIDMpCQkJOyBAc3Ryb25nIG9yIEBlbXBoCgkgICAgKHNldHEgcmVnZXhwCgkJICAoY29u Y2F0CgkJICAgcmVnZXhwIChlbGluZm8tLW1ha2UtcmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVn aW5uaW5nIDApKQoJCSAgICJbKl9dIiAoZWxpbmZvLS1tYWtlLXJlZ2V4cC0yIChtYXRjaC1i ZWdpbm5pbmcgMykgKG1hdGNoLWVuZCAzKSkKCQkgICAiWypfXVsgXHRcbl0qIikpKQoJICAg KChtYXRjaC1iZWdpbm5pbmcgNCkJCQk7IFNvbWUgc29ydCBvZiBnbHlwaAoJICAgIChzZXRx IHJlZ2V4cAoJCSAgKGNvbmNhdAoJCSAgIHJlZ2V4cCAoZWxpbmZvLS1tYWtlLXJlZ2V4cC0y IGZyb20gKG1hdGNoLWJlZ2lubmluZyAwKSkKCQkgICAiXFwoPzpcXCg/OmVycm9yXFwpP1st LiE9PnwqXVstLiE9PnwqXStcXHxcXCg/OkxhXFwpP1RlWFxcfChbQ1JdKVxcfEV1cm9cXHwj XFwpWyBcdFxuXSoiKSkpCgkgICAoKG1hdGNoLWJlZ2lubmluZyA1KQkJCTsgQGRmbgoJICAg IChzZXRxIHJlZ2V4cAoJCSAgKGNvbmNhdAoJCSAgIHJlZ2V4cCAoZWxpbmZvLS1tYWtlLXJl Z2V4cC0yIGZyb20gKG1hdGNoLWJlZ2lubmluZyAwKSkKCQkgICAiXCIiIChlbGluZm8tLW1h a2UtcmVnZXhwLTIgKG1hdGNoLWJlZ2lubmluZyA1KSAobWF0Y2gtZW5kIDUpKQoJCSAgICJc IiIpKSkKCSAgICgobWF0Y2gtYmVnaW5uaW5nIDYpCQkJOyBALi4uewoJICAgIChzZXRxIHJl Z2V4cAoJCSAgKGNvbmNhdAoJCSAgIHJlZ2V4cCAoZWxpbmZvLS1tYWtlLXJlZ2V4cC0yIGZy b20gKG1hdGNoLWJlZ2lubmluZyAwKSkKCQkgICAi4oCYPyIpKSkKCSAgICgobWF0Y2gtYmVn aW5uaW5nIDcpCQkJOyB9CgkgICAgKHNldHEgcmVnZXhwCgkJICAoY29uY2F0CgkJICAgcmVn ZXhwIChlbGluZm8tLW1ha2UtcmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJ CSAgICLigJk/IikpKQoJICAgKChtYXRjaC1iZWdpbm5pbmcgOCkJCQk7IHdoaXRlc3BhY2UK CSAgICAoc2V0cSByZWdleHAKCQkgIChjb25jYXQKCQkgICByZWdleHAgKGVsaW5mby0tbWFr ZS1yZWdleHAtMiBmcm9tIChtYXRjaC1iZWdpbm5pbmcgMCkpCgkJICAgIlsgXHRcbl0qIikp KQoJICAgKChtYXRjaC1iZWdpbm5pbmcgOSkJCTsgcXVvdGVzIGxpa2UgYGAuLi4nJwoJICAg IChzZXRxIHJlZ2V4cAoJCSAgKGNvbmNhdAoJCSAgIHJlZ2V4cCAoZWxpbmZvLS1tYWtlLXJl Z2V4cC0yIGZyb20gKG1hdGNoLWJlZ2lubmluZyAwKSkKCQkgICAiW+KAmOKAmVwiXSsiKSkp CgkgICApCQkJCSAgICAgOyBGdXR1cmUgYWRkaXRpb25zIGdvIGhlcmUuCgkgIChzZXRxIGZy b20gKHBvaW50KSkpCgkoc2V0cSByZWdleHAKCSAgICAgIChjb25jYXQgcmVnZXhwIChlbGlu Zm8tLW1ha2UtcmVnZXhwLTIgZnJvbSB0bykpKSkpCgogICAgKGluZm8tb3RoZXItd2luZG93 IGluZm8tbm9kZS0xKQogICAgKEluZm8tZ290by1ub2RlIGluZm8tbm9kZS0yKQogICAgKHdo ZW4gaW5mby1ub2RlLTMKICAgICAgKEluZm8tZ290by1ub2RlIGluZm8tbm9kZS0zKSkKCiAg ICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0KSkKICAgICAgKHdoZW4gcmVnZXhwCgkod2l0 aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIip0ZXN0KiIpCgkgIChkZWxl dGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKQoJICAoaW5zZXJ0IHJlZ2V4cCkp CgkobGV0ICgoYXQgKHBvaW50KSkpCgkgIChjb25kCgkgICA7OyBXZSBjb3VsZCBhZGQgbmFt ZSBhZnRlciBGaWxlOiBiZWxvdy4KCSAgICgoYW5kIChyZS1zZWFyY2gtZm9yd2FyZCAoY29u Y2F0ICJcXCgiIHJlZ2V4cCAiXFwpXFx8XkZpbGU6ICIpIG5pbCB0KQoJCSAobWF0Y2gtYmVn aW5uaW5nIDEpKQoJICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAxKSkKCSAgICAo c2F2ZS1yZXN0cmljdGlvbgoJICAgICAgKHdpZGVuKQoJICAgICAgKG5hcnJvdy10by1yZWdp b24gKG1hdGNoLWJlZ2lubmluZyAxKSAobWF0Y2gtZW5kIDEpKQoJICAgICAgKHdoZW4gKGFu ZCBhbmNob3IgKHJlLXNlYXJjaC1mb3J3YXJkIGFuY2hvciBuaWwgdCByZXBlYXQpKQoJCShn b3RvLWNoYXIgKCsgKG1hdGNoLWJlZ2lubmluZyAwKSBvZmZzZXQpKSkpKQoJICAgKHQKCSAg ICAoZ290by1jaGFyIGF0KSkpKSkpCgogICAgKHNldC13aW5kb3ctcG9pbnQgdGV4aS13aW5k b3cgd2luZG93LXBvaW50KQogICAgKGVsaW5mby13aW5kb3dzLXN5bmNoIHRleGktd2luZG93 IChnZXQtYnVmZmVyLXdpbmRvdyAiKmluZm8qIikpCiAgICAoc2VsZWN0LXdpbmRvdyB0ZXhp LXdpbmRvdykJCQk7IHJlbW92ZSB0aGlzIGV2dGx5CiAgICApKQoKOzsgVW5sZXNzIHBlb3Bs ZSBvYmplY3QgLi4uCihkZWZpbmUta2V5IEluZm8tbW9kZS1tYXAgIlxDLWNcQy1nIiAnZWxp bmZvLWdvdG8tdGV4aSkKKGRlZmluZS1rZXkgdGV4aW5mby1tb2RlLW1hcCAiXEMtY1xDLWci ICdlbGluZm8tZ290by1pbmZvKQooZGVmaW5lLWtleSB0ZXhpbmZvLW1vZGUtbWFwICJcTS1v IiAnZWxpbmZvLWdvdG8taW5mbykKCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCjs7Cjs7 OwkJICAgR3JhYmJpbmcgRG9jdW1lbnRhdGlvbiBEdHJpbmdzCjs7IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCjs7CgooZGVmdW4gZWxpbmZvLWdldC1kZWZpbml0aW9uICgpCiAgIkFkZCBk b2Mgc3RyaW5nIG9mIG9iamVjdCBhdCBgcG9pbnQnIHRvIGtpbGwgcmluZy4KVGhlIGRvYyBz dHJpbmcgaXMgc3VpdGFibGUgZm9yIGluc2VydGlvbiBpbnRvIEVsaXNwIFRleGluZm8KYnVm ZmVycy4iCiAgKGludGVyYWN0aXZlKQogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxldCAoKGF0 IChwb2ludCkpCgkgIGxpbWl0IGZyb20gdG8KCSAgdHlwZSBuYW1lIGFyZy1saXN0IGluaXQt dmFsdWUgZG9jIG9wZW4tcGFyZW4tYXQpCiAgICAgIChjb25kCiAgICAgICAoKGVxIG1ham9y LW1vZGUgJ2VtYWNzLWxpc3AtbW9kZSkKCShiZWdpbm5pbmctb2YtZGVmdW4pCgkod2hlbiAo bG9va2luZy1hdCAiKFxcKD86XFwoZGVmXFwoPzp1blxcfHN1YnN0XFwpXFwpXFx8XFwoZGVm dmFyXFwpXFx8XFwoZGVmY3VzdG9tXFwpXFx8XFwoZGVmbWFjcm9cXClcXClbIFx0XSsiKQoJ ICAoc2V0cSB0eXBlCgkJKGNvbmQKCQkgKChtYXRjaC1iZWdpbm5pbmcgMSkgJ2Z1bmN0aW9u KQoJCSAoKG1hdGNoLWJlZ2lubmluZyAyKSAndmFyaWFibGUpCgkJICgobWF0Y2gtYmVnaW5u aW5nIDMpICdvcHRpb24pCgkJICgobWF0Y2gtYmVnaW5uaW5nIDQpICdtYWNybykpKQoJICAo Z290by1jaGFyIChtYXRjaC1lbmQgMCkpCgkgIChzZXRxIG5hbWUgKGVsaW5mby0tZ2V0LW5l eHQpKQoJICAoY29uZAoJICAgKChtZW1xIHR5cGUgJyhmdW5jdGlvbiBjb21tYW5kIG1hY3Jv KSkKCSAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHRcbigiKQoJICAgICh3aGlsZSAobm90 IChsb29raW5nLWF0ICIpIikpCgkgICAgICAoc2V0cSBhcmctbGlzdAoJCSAgICAoY29ucyAo YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCgkJCSAgIChwb2ludCkKCQkJICAgKHBy b2duCgkJCSAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXiBcdFxuKSIpCgkJCSAgICAgKHBv aW50KSkpCgkJCSAgYXJnLWxpc3QpKQoJICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0 XG4iKSkKCSAgICAoc2V0cSBhcmctbGlzdCAobnJldmVyc2UgYXJnLWxpc3QpKSkKCSAgICgo bWVtcSB0eXBlICcodmFyaWFibGUgb3B0aW9uKSkKCSAgICAoc2tpcC1jaGFycy1mb3J3YXJk ICIgXHRcbiIpCgkgICAgKHNldHEgaW5pdC12YWx1ZQoJCSAgKGJ1ZmZlci1zdWJzdHJpbmct bm8tcHJvcGVydGllcwoJCSAgIChwb2ludCkKCQkgICAocHJvZ24KCQkgICAgIChmb3J3YXJk LXNleHApCgkJICAgICAocG9pbnQpKSkpKSkKCSAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0 XG4pIikKCSAgOzsgV2UgbXVzdCBiZSBiZWZvcmUgdGhlIGRvYy1zdHJpbmcgbm93LgoJICAo c2V0cSBkb2MgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcwoJCSAgICAgKHByb2du CgkJICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxuIikKCQkgICAgICAgKDErIChw b2ludCkpKQoJCSAgICAgKHByb2duCgkJICAgICAgIChmb3J3YXJkLXNleHApCgkJICAgICAg ICgxLSAocG9pbnQpKSkpKQoJICAod2hlbiAoZXEgdHlwZSAnZnVuY3Rpb24pCgkgICAgOzsg Q2hlY2sgZm9yIGludGVyYWN0aXZlIHByb3BlcnR5LgoJICAgIChmb3J3YXJkLWNvbW1lbnQg KGJ1ZmZlci1zaXplKSkKCSAgICAod2hlbiAobG9va2luZy1hdCAiKGludGVyYWN0aXZlIikK CSAgICAgIChzZXRxIHR5cGUgJ2NvbW1hbmQpKSkpKQogICAgICAgKChlcSBtYWpvci1tb2Rl ICdjLW1vZGUpCgkoYmVnaW5uaW5nLW9mLWRlZnVuKQoJKGNvbmQKCSAoKGxvb2tpbmctYXQg InZvaWRbIFx0XG5dKnN5bXNfb2YiKQoJICAoc2V0cSBsaW1pdCAocG9pbnQpKQoJICAoZ290 by1jaGFyIGF0KQoJICAod2hlbiAob3IgKHNhdmUtZXhjdXJzaW9uCgkJICAgICAgKGJlZ2lu bmluZy1vZi1saW5lKQoJCSAgICAgIChsb29raW5nLWF0CgkJICAgICAgICJbIFx0XSpERUZW QVJfXFwoPzpMSVNQXFx8Qk9PTFxcfElOVFxcfFBFUl9CVUZGRVJcXClbIFx0XSsoXCJcXChb XlwiIFx0XG5dK1xcKSIpKQoJCSAgICAocmUtc2VhcmNoLWJhY2t3YXJkCgkJICAgICAiREVG VkFSX1xcKD86TElTUFxcfEJPT0xcXHxJTlRcXHxQRVJfQlVGRkVSXFwpWyBcdF0rKFwiXFwo W15cIiBcdFxuXStcXCkiIGxpbWl0IHQpKQoJICAgIChzZXRxIHR5cGUgJ3ZhcmlhYmxlKQoJ ICAgIChzZXRxIG5hbWUgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEpKSkpCgkgOzsg VGhlIGZvbGxvd2luZyBtdXN0IGJlIGRlY2lkZWQuCgkgOzsgKHdoZW4gKGVxIHR5cGUgJ3Zh cmlhYmxlKSAoY3VzdG9tLXZhcmlhYmxlLXAgKGludGVybiBuYW1lKSkpCgkgOzsgKHNldHEg dHlwZSAnb3B0aW9uKSkKCSAoKGxvb2tpbmctYXQgIlxcKD86REVGVU5cXClbIFx0XSsoXCJc XChbXlwiIFx0XG5dK1xcKSIpCgkgIChzZXRxIHR5cGUgJ2Z1bmN0aW9uKQoJICAoc2V0cSBu YW1lIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxKSkpKQoJKGNvbmQKCSAoKGVxIHR5 cGUgJ2Z1bmN0aW9uKQoJICAobGV0ICgoaW5kZXggMCkKCQlmcm9tIHRvIG1pbi1hcmdzKQoJ ICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiLFsgXHRdKiIgbmlsIG5pbCAzKQoJICAgIDs7IE11 c3QgYmUgYmVmb3JlIE1JTiBub3cuCgkgICAgKHNldHEgbWluLWFyZ3MKCQkgIChzdHJpbmct dG8tbnVtYmVyCgkJICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcwoJCSAgICAo cG9pbnQpCgkJICAgIChwcm9nbiAoc2tpcC1jaGFycy1mb3J3YXJkICIwLTkiKSAocG9pbnQp KSkpKQoJICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiLFsgXHRcbl0qIiBuaWwgdCAyKQoJICAg ICh1bmxlc3MgKGxvb2tpbmctYXQgIjAiKQoJICAgICAgOzsgQ29tbWFuZC4KCSAgICAgIChz ZXRxIHR5cGUgJ2NvbW1hbmQpKQoJICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXlsgXHRdKmRv YzpbIFxdKlxcKC9cXCpbIFx0XSpcXCkiIG5pbCB0KQoJICAgIChzZXRxIGZyb20gKG1hdGNo LWVuZCAwKSkKCSAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMSkpCgkgICAgKGZv cndhcmQtY29tbWVudCAxKQoJICAgIChzYXZlLWV4Y3Vyc2lvbgoJICAgICAgKHNraXAtY2hh cnMtYmFja3dhcmQgIiovIFx0IikKCSAgICAgIChzZXRxIHRvIChwb2ludCkpKQoJICAgIChz ZXRxIGRvYyAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGZyb20gdG8pKQoJICAg ICh1bmxlc3MgYXJnLWxpc3QKCSAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIikgXHRcbigi KQoJICAgICAgKHVubGVzcyAobG9va2luZy1hdCAidm9pZCIpCgkJKHdoaWxlIChub3QgKGxv b2tpbmctYXQgIlsgXHRcbl0qKSIpKQoJCSAgKHdoZW4gKGxvb2tpbmctYXQgIlxcKD86cmVn aXN0ZXJbIFx0XStMaXNwX09iamVjdFsgXHRdKlxcKVxcfFxcKD86TGlzcF9PYmplY3RbIFx0 XSpcXCkiKQoJCSAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpKQoJCSAgKHNraXAtY2hh cnMtZm9yd2FyZCAiIFx0XG4sIikKCQkgIChjb25kCgkJICAgKCg8IGluZGV4IG1pbi1hcmdz KQoJCSAgICAoc2V0cSBpbmRleCAoMSsgaW5kZXgpKSkKCQkgICAoKD0gaW5kZXggbWluLWFy Z3MpCgkJICAgIChzZXRxIGFyZy1saXN0IChjb25zICImb3B0aW9uYWwiIGFyZy1saXN0KSkK CQkgICAgKHNldHEgaW5kZXggKDErIGluZGV4KSkpKQoJCSAgKHdoZW4gKGxvb2tpbmctYXQg Ikxpc3BfT2JqZWN0WyBcdF0qIikKCQkgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKSkK CQkgIChzZXRxIGFyZy1saXN0CgkJCShjb25zIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3Bl cnRpZXMKCQkJICAgICAgIChwb2ludCkKCQkJICAgICAgIChwcm9nbgoJCQkJIChza2lwLWNo YXJzLWZvcndhcmQgIl4sIFx0XG4pIikKCQkJCSAocG9pbnQpKSkKCQkJICAgICAgYXJnLWxp c3QpKSkKCQkoc2V0cSBhcmctbGlzdCAobnJldmVyc2UgYXJnLWxpc3QpKSkpKSkKCSAoKGVx IHR5cGUgJ3ZhcmlhYmxlKQoJICAocmUtc2VhcmNoLWZvcndhcmQgIl5bIFx0XSpkb2M6WyBc XSpcXCgvXFwqWyBcdF0qXFwpIiBuaWwgdCkKCSAgKHNldHEgZnJvbSAobWF0Y2gtZW5kIDAp KQoJICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMSkpCgkgIChmb3J3YXJkLWNvbW1l bnQgMSkKCSAgKHNhdmUtZXhjdXJzaW9uCgkgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiov IFx0IikKCSAgICAoc2V0cSB0byAocG9pbnQpKSkKCSAgOzsgUmVtb3ZlIGxlYWRpbmcgYXN0 ZXJpc2suCgkgIChnb3RvLWNoYXIgZnJvbSkKCSAgKHdoZW4gKGxvb2tpbmctYXQgIlxcKiIp CgkgICAgKHNldHEgZnJvbSAoMSsgZnJvbSkpKQoJICAoc2V0cSBkb2MgKGJ1ZmZlci1zdWJz dHJpbmctbm8tcHJvcGVydGllcyBmcm9tIHRvKSkpKSkpCgogICAgICAod2hlbiBkb2MKCSh3 aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAiKkVsaW5mby1UZW1wKiIp CgkgIChkZWxldGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKQoJICAoaW5zZXJ0 IGRvYykKCSAgOzsgSGFuZGxlIHVzYWdlIGluZm9ybWF0aW9uLgoJICAod2hlbiAobWVtcSB0 eXBlICcoZnVuY3Rpb24gY29tbWFuZCkpCgkgICAgKHdoZW4gKHJlLXNlYXJjaC1iYWNrd2Fy ZCAiXnVzYWdlOlsgXHRdKigiIGZyb20gdCkKCSAgICAgIChzZXRxIGZyb20gKHBvaW50KSkK CSAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkKCSAgICAgIChzYXZlLWV4Y3Vyc2lv bgoJCShnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKCQkoc2tpcC1jaGFycy1iYWNr d2FyZCAiIFx0XG4iKQoJCShzZXRxIHRvIChwb2ludCkpKQoJICAgICAgKHNraXAtY2hhcnMt Zm9yd2FyZCAiXiBcdFxuIikKCSAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxuIikK CSAgICAgIChzZXRxIGFyZy1saXN0IG5pbCkKCSAgICAgICh3aGlsZSAobm90IChvciAobG9v a2luZy1hdCAiKSIpIChlb2JwKSkpCgkJKHNldHEgYXJnLWxpc3QKCQkgICAgICAoY29ucwoJ CSAgICAgICAoZG93bmNhc2UKCQkJKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcwoJ CQkgKHBvaW50KQoJCQkgKHByb2duCgkJCSAgIChza2lwLWNoYXJzLWZvcndhcmQgIl4gXHRc bikiKQoJCQkgICAocG9pbnQpKSkpCgkJICAgICAgIGFyZy1saXN0KSkKCQkoc2tpcC1jaGFy cy1mb3J3YXJkICIgXHRcbiIpKQoJICAgICAgKHNldHEgYXJnLWxpc3QgKG5yZXZlcnNlIGFy Zy1saXN0KSkKCSAgICAgIChkZWxldGUtcmVnaW9uIChwb2ludCkgKHBvaW50LW1heCkpKSkK CgkgICh3aGVuIGFyZy1saXN0CgkgICAgOzsgSGFuZGxlIGFyZ3Mgd2l0aGluIGRvYy4gIFRo aXMgY2FzZSBjb3VsZCBiZSBtZXJnZWQgd2l0aAoJICAgIDs7IHRoZSByZW1haW5pbmcgb25l cyBidXQgaGFyZGx5IHNlZW1zIHdvcnRoIHRoZSBlZmZvcnQuCgkgICAgKGdvdG8tY2hhciAo cG9pbnQtbWluKSkKCSAgICAobGV0ICgocmVnZXhwIChtYXBjb25jYXQKCQkJICAgJ3JlZ2V4 cC1xdW90ZQoJCQkgICAobWFwY2FyICd1cGNhc2UgYXJnLWxpc3QpICJcXHwiKSkKCQkgICh0 byAobWFrZS1tYXJrZXIpKQoJCSAgY2FzZS1mb2xkLXNlYXJjaCkKCSAgICAgICh3aGlsZSAo cmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwIG5pbCB0KQoJCShsZXQgKChzdHJpbmcgKGRvd25j YXNlIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAwKSkpCgkJICAgICAgKGZyb20gKG1h dGNoLWJlZ2lubmluZyAwKSkpCgkJICAoc2V0LW1hcmtlciB0byAobWF0Y2gtZW5kIDApKQoJ CSAgKGNhdGNoICdmb3VuZAoJCSAgICAoZG9saXN0IChhcmcgYXJnLWxpc3QpCgkJICAgICAg OzsgV2UgYXNzdW1lIHRoYXQgYWxsIGFyZ3MgYXJlIGRvd25jYXNlLgoJCSAgICAgICh3aGVu IChzdHJpbmctZXF1YWwgc3RyaW5nIGFyZykKCQkJKHJlcGxhY2UtbWF0Y2ggKGNvbmNhdCAi QHZhcnsiIHN0cmluZyAifSIpIHQpCgkJCSh0aHJvdyAnZm91bmQgdCkpKSkpKQoJICAgICAg KHNldC1tYXJrZXIgdG8gbmlsKSkpCgoJICA7OyBMb29rIGZvciBxdW90ZXMsIGRvdWJsZS1x dW90ZXMsIG5pbCBhbmQgb3RoZXIgZnVubnkgdGhpbmdzLgoJICAoZ290by1jaGFyIChwb2lu dC1taW4pKQoJICAobGV0IChxdW90ZWQpCgkgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2Fy ZCAiXFwoYFxcKVxcKD86W14gXHRcbiddK1xcKVxcKCdcXClcClxcfFxcKD86XlxcfFsgXHRc bigqYF1cXClcXChcXCg/OltObl1vbi1cXCk/XFwobmlsXFwpXFx8dFxcfFxcKFxcKD86W0NN XS1cXCkrXFwoPzpbYS16QS1aXStcXHxbXiBhLXpBLVpcdFxuXStcXClcXClcClxcfFxcKFNQ Q1xcfFJFVFxcfExGRFxcfFRBQlxcfEJTXFx8RVNDXFx8REVMXFx8U0hJRlRcXHxDVFJMXFx8 TUVUQVxcfEZbMC05XStcXClcXClcXCg/OiRcXHxbIFx0XG4sLjs6PyEnKV1cXClcClxcfFxc KFxcXFw/XCJcXClcXHxcXCg/OlxcKFxcXFxcXFxcW1t7XVxcKVteXX1dK1xcKFtdfV1cXClc XHxcXCg8W14+XSs+XFwpXFwpXApcXHxcXFxcXFwoWyhbe11cXClcXHxcXChcXFxcJFxcKSIg bmlsIHQpCgkgICAgICAoY29uZAoJICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDEpCgkJOzsg YC4uLicKCQkocmVwbGFjZS1tYXRjaCAiQGNvZGV7IiBuaWwgbmlsIG5pbCAxKQoJCShyZXBs YWNlLW1hdGNoICJ9IiBuaWwgbmlsIG5pbCAyKSkKCSAgICAgICAoKG1hdGNoLWJlZ2lubmlu ZyAzKQoJCTs7IGBuaWwnLCBgbm9uLW5pbCcgYW5kIGB0Jy4KCQkoY29uZAoJCSAoKG1hdGNo LWJlZ2lubmluZyA0KQoJCSAgKHJlcGxhY2UtbWF0Y2ggKGNvbmNhdCAiQGNvZGV7bmlsfSIp IHQgbmlsIG5pbCA0KSkKCQkgKChtYXRjaC1iZWdpbm5pbmcgNSkKCQkgIChyZXBsYWNlLW1h dGNoIChjb25jYXQgIkBrYmR7IiAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgNSkgIn0i KQoJCQkJIHQgbmlsIG5pbCA1KSkKCQkgKChtYXRjaC1iZWdpbm5pbmcgNikKCQkgIChyZXBs YWNlLW1hdGNoIChjb25jYXQgIkBrZXl7IiAobWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMg NikgIn0iKQoJCQkJIHQgbmlsIG5pbCA2KSkKCQkgKHQKCQkgIChyZXBsYWNlLW1hdGNoIChj b25jYXQgIkBjb2RleyIgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDMpICJ9IikKCQkJ CSB0IG5pbCBuaWwgMykpKSkKCSAgICAgICAoKG1hdGNoLWJlZ2lubmluZyA3KQoJCTs7IFwi CgkJKHJlcGxhY2UtbWF0Y2ggKGlmIHF1b3RlZCAiJyciICJgYCIpKQoJCShzZXRxIHF1b3Rl ZCAobm90IHF1b3RlZCApKSkKCSAgICAgICAoKG1hdGNoLWJlZ2lubmluZyA4KQoJCTs7IFxc Wy4uLl0sIFxcey4uLn0KCQkocmVwbGFjZS1tYXRjaCAiQGNvZGV7IiBuaWwgdCBuaWwgOCkK CQkocmVwbGFjZS1tYXRjaCAifSIgbmlsIHQgbmlsIDkpKQoJICAgICAgICgobWF0Y2gtYmVn aW5uaW5nIDEwKQoJCTs7IFxcPC4uLj4KCQkocmVwbGFjZS1tYXRjaCAiIikpCgkgICAgICAg KChtYXRjaC1iZWdpbm5pbmcgMTEpCgkJOzsgQW4gZXNjYXBlZCBwYXJlbiAodGhpcyBtdXN0 IGZvbGxvdyBjYXNlIDIpLgoJCShyZXBsYWNlLW1hdGNoIChtYXRjaC1zdHJpbmctbm8tcHJv cGVydGllcyAxMSkpKQoJICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDEyKQoJCTs7IEEgYmFj a3NsYXNoIGF0IEVPTC4KCQkocmVwbGFjZS1tYXRjaCAiIikpCgkgICAgICAgKSkpCgkgIDs7 IEZpbGwuCgkgIChsZXQgKChmaWxsLWNvbHVtbiA3MCkpCgkgICAgKGZpbGwtcmVnaW9uIChw b2ludC1taW4pIChwb2ludC1tYXgpKSkKCSAgOzsgSGFuZGxlIGtleS1iaW5kaW5ncywgbWFu dWFsIHJlZmVyZW5jZXMgYW5kIFVSTHMsIG1heWJlLgoJICAoc2V0cSBkb2MgKGJ1ZmZlci1z dWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkKCiAg ICAgIChsZXQgKGF0LXN0cmluZyBhcmctbGlzdC1zdHJpbmcpCgkoY29uZAoJICgoZXEgdHlw ZSAnY29tbWFuZCkKCSAgKHNldHEgYXQtc3RyaW5nIChjb25zICJAZGVmZm4gQ29tbWFuZCIg IkBlbmQgZGVmZm4iKSkpCgkgKChlcSB0eXBlICdmdW5jdGlvbikKCSAgKHNldHEgYXQtc3Ry aW5nIChjb25zICJAZGVmdW4iICJAZW5kIGRlZnVuIikpKQoJICgoZXEgdHlwZSAndmFyaWFi bGUpCgkgIChzZXRxIGF0LXN0cmluZyAoY29ucyAiQGRlZnZhciIgIkBlbmQgZGVmdmFyIikp KQoJICgoZXEgdHlwZSAnb3B0aW9uKQoJICAoc2V0cSBhdC1zdHJpbmcgKGNvbnMgIkBkZWZv cHQiICJAZW5kIGRlZm9wdCIpKSkKCSAoKGVxIHR5cGUgJ21hY3JvKQoJICAoc2V0cSBhdC1z dHJpbmcgKGNvbnMgIkBkZWZtYWMiICJAZW5kIGRlZm1hYyIpKSkpCgoJKGRvbGlzdCAoYXJn IGFyZy1saXN0KQoJICAoc2V0cSBhcmctbGlzdC1zdHJpbmcgKGNvbmNhdCBhcmctbGlzdC1z dHJpbmcgIiAiIGFyZykpKQoKCTs7IEhhcmRseSBhbnlvbmUgd2FudHMgdG8gc2VlIHRoaXMg c28gUkVNT1ZFIGl0LgoJKHdpdGgtc2VsZWN0ZWQtd2luZG93IChkaXNwbGF5LWJ1ZmZlciAo Z2V0LWJ1ZmZlci1jcmVhdGUgIipFbGluZm8tc2hvdyIpKQoJICAoZGVsZXRlLXJlZ2lvbiAo cG9pbnQtbWluKSAocG9pbnQtbWF4KSkKCSAgKGluc2VydCAoY29uY2F0IChjYXIgYXQtc3Ry aW5nKSAiICIgbmFtZSBhcmctbGlzdC1zdHJpbmcgIlxuIgoJCQkgIGRvYyAiXG4iIChjZHIg YXQtc3RyaW5nKSAiXG5cbiIpKSkKCgkoa2lsbC1uZXcgKGNvbmNhdCAoY2FyIGF0LXN0cmlu ZykgIiAiIG5hbWUgYXJnLWxpc3Qtc3RyaW5nICJcbiIKCQkJICBkb2MgIlxuIiAoY2RyIGF0 LXN0cmluZykgIlxuXG4iKSkpKSkpCgo7OyBUT0RPOiBkZWZpbmUtbW9kZSBhbmQgZGVmaW5l LWRlcml2ZWQtbW9kZSBhcmUgbm90IGhhbmRsZWQuCgo7OyBUT0RPOiBTcGVjaWFsIGZvcm1z IGFyZSB3cml0dGVuIGluIEMgYW5kIGhhdmUgVU5FVkFMTEVEIHNldC4KCihwcm92aWRlICdl bGluZm8pCgo7OyBCZWxvdyB0aGlzIGxpbmUgYXJlIG1vbnN0ZXJzLgoKOzsgVXNlZCBmb3Ig dGVzdGluZyBvbmx5LCBzbyBSRU1PVkUgaXQuCihkZWZ1biBlbGluZm8tdGVzdCAoKQogIChp bnRlcmFjdGl2ZSkKICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUg IiplbGluZm8tdGVzdCoiKQogICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50LW1pbikgKHBvaW50 LW1heCkpKQogIChsZXQgKChvbGQtcG9pbnQgKHBvaW50KSkKCW5ldy1wb2ludCBub2RlIHNw bGl0LWhlaWdodC10aHJlc2hvbGQgc3BsaXQtd2lkdGgtdGhyZXNob2xkKQogICAgKHdoaWxl IHQKICAgICAgKEluZm8tZm9yd2FyZC1ub2RlIG5pbCBuaWwgdCkKICAgICAgKGZvcndhcmQt bGluZSAocmFuZG9tIDQzKSkKICAgICAgKHNldHEgb2xkLXBvaW50IChwb2ludCkpCiAgICAg IChzZXRxIG5vZGUgSW5mby1jdXJyZW50LW5vZGUpCiAgICAgIChlbGluZm8tZ290by10ZXhp KQogICAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgZWxpbmZvLXRlc3QtdGV4aS13aW5kb3cK CShlbGluZm8tZ290by1pbmZvKQoJKHNpdC1mb3IgMC4xKSkKICAgICAgKHNldHEgbmV3LXBv aW50IChwb2ludCkpCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNy ZWF0ZSAiKmVsaW5mby10ZXN0KiIpCgkoZ290by1jaGFyIChwb2ludC1tYXgpKQoJKGluc2Vy dAoJIChmb3JtYXQgIm5vZGU6ICVzICAgb2xkOiAlcyAgIG5ldzogJXMgICBkaWZmOiAlcyBc biIKCQkgbm9kZSBvbGQtcG9pbnQgbmV3LXBvaW50ICgtIG9sZC1wb2ludCBuZXctcG9pbnQp KSkpCiAgICAgIChnb3RvLWNoYXIgb2xkLXBvaW50KSkpKQo= --------------Kfhqe8JD14mDWxvKDrDeWHz4--