From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: "Daniel R. Grayson" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 31 May 2022 19:51:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 55744@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.1654026606861 (code B ref -1); Tue, 31 May 2022 19:51:01 +0000 Received: (at submit) by debbugs.gnu.org; 31 May 2022 19:50:06 +0000 Received: from localhost ([127.0.0.1]:48965 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw7sT-0000Di-Cv for submit@debbugs.gnu.org; Tue, 31 May 2022 15:50:06 -0400 Received: from lists.gnu.org ([209.51.188.17]:38824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw7sQ-0000DN-FX for submit@debbugs.gnu.org; Tue, 31 May 2022 15:50:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32782) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nw7sO-0007No-4b for bug-gnu-emacs@gnu.org; Tue, 31 May 2022 15:50:01 -0400 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]:43675) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nw7sK-00037Y-2Y for bug-gnu-emacs@gnu.org; Tue, 31 May 2022 15:49:58 -0400 Received: by mail-lf1-x134.google.com with SMTP id be31so5241032lfb.10 for ; Tue, 31 May 2022 12:49:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=llYKlcSAbc3A0Rpi2C/hGsh1RRbjhZ3RXO32cqeZ5m0=; b=UHIBYml2SQ+NlcRpsHMX23i24PfzJ3BJXgdmXNpygm0RbCgWb/KG9UZmMB+xABXLXp 4y6ErxTb7FfRhi04+qMKjtnBt3iWLIhosjXSdulk57ZSOSS2SsZ6k887duqbLGeiBkSq hH/m385CTfuzTzY5GDVyO5w8cS9ZhLP5Kc3yYpw0zm2bUaNRX//3vNxbDnHKbYR26Gxr r77yxckX261EQDX6Qn+NTI34l5u6j+oIP2RYDMPMc1UNo4hDgs+qxkhKSwzy26KIMryk ZDRVtv2zZvPmU9MbMOA5mx5cR4NvFopnU8lD42g7D3a+15Mi74JmMkGAZwjbubX7Ypq5 rt1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=llYKlcSAbc3A0Rpi2C/hGsh1RRbjhZ3RXO32cqeZ5m0=; b=0bX0CHnKptvKIvBEDe0XGeSEGIh7R3Fk3hiFComwsMSJmeL24oJerCkox1O9TYXGX/ DVEpEd3iH6ylx6dBR4hEJRU+Fxo+jmsGu9PLZWgXBQXN7V8UH4o4RueO3eeIrawv1rHj hvZxKwXZUd7DRJrijtyU3ANVVWuOtxCZuXeIlIP1zaDusKzqSkHnlkJ+r95YElonaM90 aRosnPBqof8YcAUvlMjpo2ctFJmpmZPdX71RGD4Gj2u8EDw9iCm8vEV7VMj4dIkBxylp P9mxvNfqY5Wn2G+eEfm5elga6xNndanZ5XeiOD15KxlstHJkBEhmtAnC6hPTsTpAA93/ zybQ== X-Gm-Message-State: AOAM530LKw/5fsA8FbUUZKsx7zvGVhgeM3RZSM/UDUeDFigwJrDCKOiS 24oo2UFQOttu5lyi3IZM/jN9ZO8bkz1lWdbc8f9XRpeFQvc= X-Google-Smtp-Source: ABdhPJwimqkoZvtk9imn3fM5Zis5Bh9k6ZMVZYAHE5RZ+AfnqSDKmkXBMMZGla8QB1h6fzP60z/Fyz4De+SBKrkg250= X-Received: by 2002:a05:6512:6c9:b0:478:ff5f:ee55 with SMTP id u9-20020a05651206c900b00478ff5fee55mr736960lff.204.1654026592615; Tue, 31 May 2022 12:49:52 -0700 (PDT) MIME-Version: 1.0 From: "Daniel R. Grayson" Date: Tue, 31 May 2022 12:49:35 -0700 Message-ID: Content-Type: multipart/mixed; boundary="00000000000080a3b105e054136f" Received-SPF: pass client-ip=2a00:1450:4864:20::134; envelope-from=danielrichardgrayson@gmail.com; helo=mail-lf1-x134.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --00000000000080a3b105e054136f Content-Type: multipart/alternative; boundary="00000000000080a3af05e054136d" --00000000000080a3af05e054136d Content-Type: text/plain; charset="UTF-8" The attached file contains the string "end--" in two places. When searching for that string with M-x isearch-forward (C-s) in that file, just after opening the file, starting from the top of the file, it often happens, that after positioning the cursor at the first "end" in the file, it displays "end-" on the mode line and then goes into an infinite loop, not responding to further input or making any further progress on the search. In GNU Emacs 28.1 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60 Version 10.14.6 (Build 18G95)) of 2022-04-22 built on builder10-14.lan Windowing system distributor 'Apple', version 10.3.2113 System Description: macOS 12.3 Configured using: 'configure --with-ns '--enable-locallisppath=/Library/Application Support/Emacs/${version}/site-lisp:/Library/Application Support/Emacs/site-lisp' --with-modules' Configured features: ACL GMP GNUTLS JSON LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER THREADS TOOLKIT_SCROLL_BARS ZLIB Important settings: value of $EMACSLOADPATH: /Applications/LilyPond.app/Contents/Resources/share/emacs/site-lisp:/Users/dan/local/share/emacs/site-lisp:/usr/local/share/emacs/site-lisp: value of $LC_ALL: en_US.UTF-8 value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Info Minor modes in effect: global-edit-server-edit-mode: t icomplete-mode: t global-auto-revert-mode: t auto-image-file-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t temp-buffer-resize-mode: t buffer-read-only: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t Load-path shadows: /Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2-symbols hides /Applications/Macaulay2-1.20/share/emacs/site-lisp/macaulay2/M2-symbols /Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2 hides /Applications/Macaulay2-1.20/share/emacs/site-lisp/macaulay2/M2 /Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2-init hides /Applications/Macaulay2-1.20/share/emacs/site-lisp/macaulay2/M2-init /Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2-mode hides /Applications/Macaulay2-1.20/share/emacs/site-lisp/macaulay2/M2-mode /Users/dan/emacs/gedcom hides /Users/dan/home/emacs/gedcom /Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2-symbols hides /usr/local/share/emacs/site-lisp/macaulay2/M2-symbols /Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2 hides /usr/local/share/emacs/site-lisp/macaulay2/M2 /Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2-init hides /usr/local/share/emacs/site-lisp/macaulay2/M2-init /Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2-mode hides /usr/local/share/emacs/site-lisp/macaulay2/M2-mode /Users/dan/emacs/rmail hides /Applications/Emacs.app/Contents/Resources/lisp/mail/rmail /Users/dan/home/emacs/longlines hides /Applications/Emacs.app/Contents/Resources/lisp/obsolete/longlines Features: (shadow sort mail-extr warnings emacsbug message rmc puny rfc822 mml mml-sec epa epg rfc6068 epg-config gnus-util rmail mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils thai-util thai-word lao-util enriched facemenu view vc-git diff-mode vc-dispatcher M2 M2-symbols rx jka-compr dired-aux dired dired-loaddefs misearch multi-isearch eieio-opt cl-extra speedbar ezimage dframe find-func shortdoc thingatpt help-fns radix-tree tabify imenu man agda2-mode pcase derived agda2-queue agda2-abbrevs skeleton agda2-highlight agda2 annotation eri time-date pp agda-input quail help-mode edit-server easy-mmode edmacro kmacro server generic disp-table cc-styles cc-align cc-engine cc-vars cc-defs icomplete grep compile text-property-search comint ansi-color ring autorevert filenotify image-file image-converter cus-load info proof-site proof-autoloads package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win 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 cl-generic 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 simple abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads kqueue cocoa ns multi-tty make-network-process emacs) Memory information: ((conses 16 299140 12614) (symbols 48 14179 3) (strings 32 50438 2510) (string-bytes 1 1513842) (vectors 16 26190) (vector-slots 8 305278 27939) (floats 8 93 32) (intervals 56 7639 129) (buffers 992 27)) --00000000000080a3af05e054136d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
The attached file contains the string "end--&quo= t; in two places.=C2=A0 When searching for that string with M-x=C2=A0isearc= h-forward (C-s) in that file,
just after opening=C2=A0the file, s= tarting from the top of the file, it often happens, that after positioning = the cursor at the first "end" in the file,
it displays = "end-" on the mode line and then goes into an infinite loop, not = responding to further input or making any further=C2=A0
progress = on the search.




In GNU= Emacs 28.1 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60 Version = 10.14.6 (Build 18G95))
=C2=A0of 2022-04-22 built on builder10-14.lan
= Windowing system distributor 'Apple', version 10.3.2113
System D= escription: =C2=A0macOS 12.3

Configured using:
=C2=A0'configu= re --with-ns '--enable-locallisppath=3D/Library/Application
=C2=A0Su= pport/Emacs/${version}/site-lisp:/Library/Application
=C2=A0Support/Emac= s/site-lisp' --with-modules'

Configured features:
ACL GMP= GNUTLS JSON LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER THREADS
TOOLKIT_SC= ROLL_BARS ZLIB

Important settings:
=C2=A0 value of $EMACSLOADPATH= : /Applications/LilyPond.app/Contents/Resources/share/emacs/site-lisp:/User= s/dan/local/share/emacs/site-lisp:/usr/local/share/emacs/site-lisp:
=C2= =A0 value of $LC_ALL: en_US.UTF-8
=C2=A0 value of $LANG: en_US.UTF-8
= =C2=A0 locale-coding-system: utf-8-unix

Major mode: Info

Mino= r modes in effect:
=C2=A0 global-edit-server-edit-mode: t
=C2=A0 icom= plete-mode: t
=C2=A0 global-auto-revert-mode: t
=C2=A0 auto-image-fil= e-mode: t
=C2=A0 tooltip-mode: t
=C2=A0 global-eldoc-mode: t
=C2= =A0 show-paren-mode: t
=C2=A0 electric-indent-mode: t
=C2=A0 mouse-wh= eel-mode: t
=C2=A0 file-name-shadow-mode: t
=C2=A0 global-font-lock-m= ode: t
=C2=A0 font-lock-mode: t
=C2=A0 auto-composition-mode: t
= =C2=A0 auto-encryption-mode: t
=C2=A0 auto-compression-mode: t
=C2=A0= temp-buffer-resize-mode: t
=C2=A0 buffer-read-only: t
=C2=A0 line-nu= mber-mode: t
=C2=A0 indent-tabs-mode: t
=C2=A0 transient-mark-mode: t=

Load-path shadows:
/Users/dan/src/M2/M2.git/M2/Macaulay2/editors= /emacs/M2-symbols hides /Applications/Macaulay2-1.20/share/emacs/site-lisp/= macaulay2/M2-symbols
/Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs= /M2 hides /Applications/Macaulay2-1.20/share/emacs/site-lisp/macaulay2/M2/Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2-init hides /Applic= ations/Macaulay2-1.20/share/emacs/site-lisp/macaulay2/M2-init
/Users/dan= /src/M2/M2.git/M2/Macaulay2/editors/emacs/M2-mode hides /Applications/Macau= lay2-1.20/share/emacs/site-lisp/macaulay2/M2-mode
/Users/dan/emacs/gedco= m hides /Users/dan/home/emacs/gedcom
/Users/dan/src/M2/M2.git/M2/Macaula= y2/editors/emacs/M2-symbols hides /usr/local/share/emacs/site-lisp/macaulay= 2/M2-symbols
/Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2 hide= s /usr/local/share/emacs/site-lisp/macaulay2/M2
/Users/dan/src/M2/M2.git= /M2/Macaulay2/editors/emacs/M2-init hides /usr/local/share/emacs/site-lisp/= macaulay2/M2-init
/Users/dan/src/M2/M2.git/M2/Macaulay2/editors/emacs/M2= -mode hides /usr/local/share/emacs/site-lisp/macaulay2/M2-mode
/Users/da= n/emacs/rmail hides /Applications/Emacs.app/Contents/Resources/lisp/mail/rm= ail
/Users/dan/home/emacs/longlines hides /Applications/Emacs.app/Conten= ts/Resources/lisp/obsolete/longlines

Features:
(shadow sort mail-= extr warnings emacsbug message rmc puny rfc822 mml
mml-sec epa epg rfc60= 68 epg-config gnus-util rmail mm-decode mm-bodies
mm-encode mail-parse r= fc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-dru= ms mm-util mail-prsvr mail-utils thai-util
thai-word lao-util enriched f= acemenu view vc-git diff-mode vc-dispatcher
M2 M2-symbols rx jka-compr d= ired-aux dired dired-loaddefs misearch
multi-isearch eieio-opt cl-extra = speedbar ezimage dframe find-func
shortdoc thingatpt help-fns radix-tree= tabify imenu man agda2-mode pcase
derived agda2-queue agda2-abbrevs ske= leton agda2-highlight agda2
annotation eri time-date pp agda-input quail= help-mode edit-server
easy-mmode edmacro kmacro server generic disp-tab= le cc-styles cc-align
cc-engine cc-vars cc-defs icomplete grep compile t= ext-property-search
comint ansi-color ring autorevert filenotify image-f= ile image-converter
cus-load info proof-site proof-autoloads package bro= wse-url url
url-proxy url-privacy url-expand url-methods url-history url= -cookie
url-domsuf url-util mailcap url-handlers url-parse auth-source c= l-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x= map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl= -lib
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hook= s
lisp-float-type elisp-mode mwheel term/ns-win ns-win ucs-normalize
= mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe
t= abulated-list replace newcomment text-mode lisp-mode prog-mode register
= page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-b= ar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minib= uffer cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan t= hai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian = slovak czech european ethiopic indian cyrillic
chinese composite emoji-z= wj charscript charprop case-table epa-hook
jka-cmpr-hook help simple abb= rev obarray cl-preloaded nadvice button
loaddefs faces cus-face macroexp= files window text-properties overlay
sha1 md5 base64 format env code-pa= ges mule custom widget
hashtable-print-readable backquote threads kqueue= cocoa ns multi-tty
make-network-process emacs)

Memory informatio= n:
((conses 16 299140 12614)
=C2=A0(symbols 48 14179 3)
=C2=A0(str= ings 32 50438 2510)
=C2=A0(string-bytes 1 1513842)
=C2=A0(vectors 16 = 26190)
=C2=A0(vector-slots 8 305278 27939)
=C2=A0(floats 8 93 32)
= =C2=A0(intervals 56 7639 129)
=C2=A0(buffers 992 27))
--00000000000080a3af05e054136d-- --00000000000080a3b105e054136f Content-Type: application/octet-stream; name="Topcom.m2" Content-Disposition: attachment; filename="Topcom.m2" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3ukchtr0 LS0gVE9ETzoKLS0gICAxLiBob3cgdG8gY2hlY2sgaWYgYSB0cmlhbmd1bGF0aW9uIGlzIGNvcnJl Y3Q/Ci0tICAgMi4gZ2VuZXJhdGUgdGhlIChvcmllbnRlZCkgY2lyY3VpdHMgb2YgYSBwb2ludCBz ZXQKLS0gICAzLiBQZXJoYXBzOiBhZGQgaW4gYSB0eXBlICJDaGlyb3RvcGUiIHRvIGZhY2lsaXRh dGUgdGhlIGNvbXB1dGF0aW9uIG9mIGNpcmN1aXRzCi0tICAgNC4gZmluZCB0aGUgbG93ZXIgaHVs bCBvZiBhIHBvbHl0b3BlIChtYXliZSBpbiBQb2x5aGVkcmE/IFdoZXJlPykKLS0gICA1LiBjaGVj ayB0aGF0IGdvaW5nIGZyb20gYSByZWd1bGFyIGZpbmUgdHJpYW5ndWxhdGlvbiB0byBhIHJlZ3Vs YXIgc3RhciBmaW5lIHRyaWFuZ3VsYXRpb24gCi0tICAgICAgIChpbiB0aGUgcmVmbGV4aXZlIGNh c2UpIHdvcmtzLgotLSAgIDYuIGdlbmVyYXRlIChwYXJ0cyBvZikgdGhlIGZsaXAgZ3JhcGgsIGF0 IGxlYXN0IGZvciByZWd1bGFyIHRyaWFuZ3VsYXRpb25zLgotLSAgIDcuIHRvcGNvbSB1c2VzIHN5 bW1ldHJ5LCBwbGFjZSB0aGF0IGludG8gdGhlIGludGVyZmFjZSBoZXJlIHRvbwotLSBwb3NzaWJs ZSBidWdzOgotLSAgIHdoeSBhcmUgdGhlIHJlZ3VsYXIgdHJpYW5ndWxhdGlvbiB3ZWlnaHRzIHNv bWV0aW1lcyBjb21pbmcgb3V0IG5lZ2F0aXZlPwotLSAgIG5lZWQgdG8gYmUgYWJsZSB0byBjaGVj ayB0aGF0IHdlaWdodHMgYXJlIGNvcnJlY3QuCm5ld1BhY2thZ2UoCiAgICAgICAgIlRvcGNvbSIs CiAgICAgICAgVmVyc2lvbiA9PiAiMC41IiwgCiAgICAgICAgRGF0ZSA9PiAiNiBNYXkgMjAxOCIs CiAgICAgICAgQXV0aG9ycyA9PiB7ewogICAgICAgICAgICAgICAgTmFtZSA9PiAiTWlrZSBTdGls bG1hbiIsIAogICAgICAgICAgICAgICAgRW1haWwgPT4gIm1pa2VAbWF0aC5jb3JuZWxsLmVkdSIs IAogICAgICAgICAgICAgICAgSG9tZVBhZ2U9PiJodHRwOi8vd3d3Lm1hdGguY29ybmVsbC5lZHUv fm1pa2UiCiAgICAgICAgICAgICAgICB9fSwKICAgICAgICBIZWFkbGluZSA9PiAiaW50ZXJmYWNl IHRvIGEgc21hbGwgcGFydCBvZiB0b3Bjb20iLAoJS2V5d29yZHMgPT4geyJJbnRlcmZhY2VzIn0s CiAgICAgICAgQ29uZmlndXJhdGlvbiA9PiB7CiAgICAgICAgICAgICJwYXRoIiA9PiAiIgogICAg ICAgICAgICB9LAogICAgICAgIFBhY2thZ2VJbXBvcnRzID0+IHsiRm91cmllck1vdHpraW4ifQog ICAgICAgICkKCmV4cG9ydCB7CiAgICAiYWxsVHJpYW5ndWxhdGlvbnMiLAogICAgImNoaXJvdG9w ZSIsCiAgICAiZmluZVN0YXJUcmlhbmd1bGF0aW9uIiwKICAgICJmbGlwcyIsCiAgICAiaXNSZWd1 bGFyVHJpYW5ndWxhdGlvbiIsCiAgICAibmFpdmVDaGlyb3RvcGUiLAogICAgIm5haXZlSXNUcmlh bmd1bGF0aW9uIiwKICAgICJudW1GbGlwcyIsCiAgICAibnVtVHJpYW5ndWxhdGlvbnMiLAogICAg Im9yaWVudGVkQ2lyY3VpdHMiLAogICAgIm9yaWVudGVkQ29jaXJjdWl0cyIsCiAgICAicmVndWxh ckZpbmVUcmlhbmd1bGF0aW9uIiwKICAgICJyZWd1bGFyRmluZVN0YXJUcmlhbmd1bGF0aW9uIiwK ICAgICJyZWd1bGFyVHJpYW5ndWxhdGlvbldlaWdodHMiLAogICAgIkNvbm5lY3RlZFRvUmVndWxh ciIsCiAgICAiSG9tb2dlbml6ZSIsCiAgICAiUmVndWxhck9ubHkiLAogICAgIkZpbmUiLAogICAg InRvcGNvbUlzVHJpYW5ndWxhdGlvbiIKICAgIH0KCi0tIGZvciBiYWNrd2FyZCBjb21wYXRpYmls aXR5CmlmIG5vdCBwcm9ncmFtUGF0aHMjPyJ0b3Bjb20iIGFuZCBUb3Bjb20jT3B0aW9ucyNDb25m aWd1cmF0aW9uIyJwYXRoIiAhPSAiIgogICAgdGhlbiBwcm9ncmFtUGF0aHMjInRvcGNvbSIgPSBU b3Bjb20jT3B0aW9ucyNDb25maWd1cmF0aW9uIyJwYXRoIgoKdG9wY29tUHJvZ3JhbSA9IG51bGwK CmF1Z21lbnQgPSAoQSkgLT4gKAogICAgLS0gQSBpcyBhIG1hdHJpeCBvdmVyIFpaCiAgICAtLSBh ZGQgaW4gYSBsYXN0IHJvdyBvZiAxJ3MuCiAgICBuIDo9IG51bUNvbHVtbnMgQTsKICAgIG9uZXMg Oj0gbWF0cml4IHt7biA6IDF9fTsKICAgIEEgfHwgb25lcwogICAgKQoKdG9wY29tUG9pbnRzID0g bWV0aG9kKE9wdGlvbnM9PntIb21vZ2VuaXplPT50cnVlfSkKdG9wY29tUG9pbnRzIE1hdHJpeCA6 PSBvcHRzIC0+IChBKSAtPiAoCiAgICBBMSA6PSBpZiBvcHRzLkhvbW9nZW5pemUgdGhlbiBhdWdt ZW50IEEgZWxzZSBBOwogICAgbmV3IEFycmF5IGZyb20gZm9yIGEgaW4gZW50cmllcyB0cmFuc3Bv c2UgQTEgbGlzdCBuZXcgQXJyYXkgZnJvbSBhCiAgICApCgotLSBXb3JraG9yc2UgZnVuY3Rpb24g Zm9yIGNhbGxpbmcgdG9wY29tLgotLSBjb21tYW5kOiBvbmUgb2YgdGhlIGNvbW1hbmRzIG9mIHRv cGNvbSwgd2l0aCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGluY2x1ZGVkLgotLSBpbnB1dHM6IGEg bGlzdCBvZiBvYmplY3RzIHRoYXQgYXJlIGluIHRoZSBmb3JtYXQgZm9yIHRvcGNvbSB0byB1bmRl cnN0YW5kLgotLSBvdXRwdXQ6IDIgZmlsZSBuYW1lcywgb25lIGZvciB0aGUgc3Rkb3V0LCBvbmUg Zm9yIHN0ZGVyci4KLS0gSWYgdGhlIGV4ZWN1dGFibGUgZmFpbHMsIHdoYXQgaGFwcGVucz8KLS0g ZGVidWdMZXZlbDogc2V0IHRvIDAgLSA3IGZvciB2YXJ5aW5nIHZlcmJvc2Ugb3V0cHV0CmNhbGxU b3Bjb20gPSBtZXRob2QoKQpjYWxsVG9wY29tKFN0cmluZywgTGlzdCkgOj0gKGNvbW1hbmQsIGlu cHV0cykgLT4gKAogICAgaWYgdG9wY29tUHJvZ3JhbSA9PT0gbnVsbCB0aGVuCgl0b3Bjb21Qcm9n cmFtID0gZmluZFByb2dyYW0oInRvcGNvbSIsImN1YmUgMyIsIFByZWZpeCA9PiB7CgkgICAgKCIu KiIsICJ0b3Bjb20tIiksIC0tIGRlYmlhbgoJICAgICgiXihjcm9zc3xjdWJlfGN5Y2xpY3xoeXBl cnNpbXBsZXh8bGF0dGljZSkkIiwgIlRPUENPTS0iKSwgLS1mZWRvcmEKCSAgICAoIl5jdWJlJCIs ICJ0b3Bjb21fIil9KTsgLS1nZW50b28KICAgIGZpbGVuYW1lIDo9IHRlbXBvcmFyeUZpbGVOYW1l KCk7CiAgICBpbmZpbGUgOj0gZmlsZW5hbWV8Ii5pbiI7CiAgICAtLSBub3cgY3JlYXRlIHRoZSBv dXRwdXQgZmlsZQogICAgRiA6PSBvcGVuT3V0KGluZmlsZSk7CiAgICBmb3IgZiBpbiBpbnB1dHMg ZG8gKAogICAgICAgIEYgPDwgdG9TdHJpbmcgZiA8PCBlbmRsOwogICAgKTsKICAgIEYgPDwgY2xv c2U7CgogICAgLS0gc2V0dGluZyBSYWlzZUVycm9yIHRvIGZhbHNlIGJlY2F1c2Ugd2Ugc29tZXRp bWVzIGdldCBub256ZXJvIHJldHVybgogICAgLS0gdmFsdWVzLCBlLmcuLCB0aGUgY2FsbHMgdG8g dG9wY29tSXNUcmlhbmd1bGF0aW9uIGluIHRoZQogICAgLS0gImJhZCB0cmlhbmd1bGF0aW9ucyBv ZiB0aGUgc3F1YXJlIiB0ZXN0cyBiZWxvdwogICAgcmV0dmFsIDo9IHJ1blByb2dyYW0odG9wY29t UHJvZ3JhbSwgY29tbWFuZCwgIiA8ICIgfCBpbmZpbGUsCglLZWVwRmlsZXMgPT4gdHJ1ZSwgUmFp c2VFcnJvciA9PiBmYWxzZSk7CgogICAgaWYgZGVidWdMZXZlbCA+PSAxIHRoZW4gKAogICAgICAg IDw8ICItLSBjYWxsaW5nIHRvcGNvbSIgPDwgZW5kbDsKICAgICAgICA8PCAiLS0gIiA8PCBjb21t YW5kIDw8ICI6IHVzaW5nIHRlbXBvcmFyeSBmaWxlIHByZWZpeCAiIDw8IGZpbGVuYW1lIDw8IGVu ZGw7CiAgICAgICAgKTsKICAgIGlmIGRlYnVnTGV2ZWwgPj0gNyB0aGVuIDw8ICItLSAiIDw8IGNv bW1hbmQgPDwgIjogaW5wdXQgPSAiIDw8IG5ldCBnZXQgaW5maWxlIDw8IGVuZGw7CiAgICBpZiBk ZWJ1Z0xldmVsID49IDIgdGhlbiA8PCAiLS0gIiA8PCBjb21tYW5kIDw8ICI6IGV4ZWN1dGluZyAi IDw8IHJldHZhbCMiY29tbWFuZCIgPDwgZW5kbDsKCiAgICAtLWlmIDAgPSE9IHJldHZhbCB0aGVu IGVycm9yICgiZXJyb3IgcnVubmluZyB0b3Bjb206InwgbmV0IGdldCBlcnJmaWxlKTsKCiAgICBp ZiBkZWJ1Z0xldmVsID49IDUgdGhlbiA8PCAiLS0gIiA8PCBjb21tYW5kIDw8ICI6IG91dHB1dCA9 ICIgPDwgbmV0IHJldHZhbCMib3V0cHV0IiA8PCBlbmRsOwogICAgaWYgZGVidWdMZXZlbCA+PSA2 IHRoZW4gPDwgIi0tICIgPDwgY29tbWFuZCA8PCAiOiBzdGRlcnIgPSAiIDw8IG5ldCByZXR2YWwj ImVycm9yIiA8PCBlbmRsOwoKICAgIChyZXR2YWwjIm91dHB1dCBmaWxlIiwgcmV0dmFsIyJlcnJv ciBmaWxlIikKICAgICkKCmlzUmVndWxhclRyaWFuZ3VsYXRpb24gPSBtZXRob2QoT3B0aW9ucz0+ e0hvbW9nZW5pemU9PnRydWV9KQppc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKE1hdHJpeCwgTGlzdCkg Oj0gb3B0cyAtPiAoQSwgdHJpKSAtPiAoCiAgICAtLSBub3cgY3JlYXRlIHRoZSBvdXRwdXQgZmls ZQogICAgKG91dGZpbGUsIGVycmZpbGUpIDo9IGNhbGxUb3Bjb20oImNoZWNrcmVndWxhcml0eSAt LWNoZWNrdHJpYW5nIC12Iiwge3RvcGNvbVBvaW50cyhBLCBvcHRzKSwgW10sIHRyaSB9KTsKICAg IG1hdGNoKCJDaGVja2VkIDEgdHJpYW5ndWxhdGlvbnMsIDAgbm9uLXJlZ3VsYXIgc28gZmFyIiwg Z2V0IGVycmZpbGUpCiAgICApCgpyZWd1bGFyVHJpYW5ndWxhdGlvbldlaWdodHMgPSBtZXRob2Qo T3B0aW9ucyA9PiBvcHRpb25zIGlzUmVndWxhclRyaWFuZ3VsYXRpb24pCnJlZ3VsYXJUcmlhbmd1 bGF0aW9uV2VpZ2h0cyhNYXRyaXgsIExpc3QpIDo9IG9wdHMgLT4gKEEsIHRyaSkgLT4gKAogICAg LS0gcmV0dXJucyBudWxsIGlmIHRoZSB0cmlhbmd1bGF0aW9uIGlzIG5vdCByZWd1bGFyLgogICAg LS0gb3RoZXJ3aXNlIHJldHVybnMgYSBsaXN0IG9mIHJhdGlvbmFsIG51bWJlcnMgd2hpY2ggYXJl IHRoZSAKICAgIC0tIGhlaWdodHMgdGhhdCByZXN1bHQgaW4gdGhlIHRyaWFuZ3VsYXRpb24uCiAg ICAob3V0ZmlsZSwgZXJyZmlsZSkgOj0gY2FsbFRvcGNvbSgiY2hlY2tyZWd1bGFyaXR5IC0taGVp Z2h0cyIsIHt0b3Bjb21Qb2ludHMoQSwgb3B0cyksIFtdLCB0cmkgfSk7CiAgICBvdXRwdXQgOj0g Z2V0IG91dGZpbGU7CiAgICBpZiBtYXRjaCgibm9uLXJlZ3VsYXIiLCBvdXRwdXQpIHRoZW4gcmV0 dXJuIG51bGw7CiAgICByZXN1bHQgOj0gdmFsdWUgZmlyc3QgbGluZXMgb3V0cHV0OwogICAgcmV0 dXJuIGlmIGluc3RhbmNlKHJlc3VsdCwgTnVtYmVyKSB0aGVuIHtyZXN1bHR9IGVsc2UgdG9MaXN0 IHJlc3VsdAogICAgKQoKcmVndWxhckZpbmVUcmlhbmd1bGF0aW9uID0gbWV0aG9kKE9wdGlvbnMg PT4gb3B0aW9ucyBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKQpyZWd1bGFyRmluZVRyaWFuZ3VsYXRp b24gTWF0cml4IDo9IG9wdHMgLT4gKEEpIC0+ICgKICAgIChvdXRmaWxlLGVycmZpbGUpIDo9IGNh bGxUb3Bjb20oInBvaW50czJmaW5ldHJpYW5nIC0tcmVndWxhciIsIHt0b3Bjb21Qb2ludHMoQSwg b3B0cyl9KTsKICAgIHZhbHVlIGdldCBvdXRmaWxlCiAgICApCgpjaGlyb3RvcGUgPSBtZXRob2Qo T3B0aW9ucyA9PiBvcHRpb25zIGlzUmVndWxhclRyaWFuZ3VsYXRpb24pCmNoaXJvdG9wZSBNYXRy aXggOj0gb3B0cyAtPiBBIC0+ICgKICAgIChvdXRmaWxlLGVycmZpbGUpIDo9IGNhbGxUb3Bjb20o InBvaW50czJjaGlybyIsIHt0b3Bjb21Qb2ludHMoQSwgb3B0cyl9KTsKICAgIGdldCBvdXRmaWxl CiAgICApCgpuYWl2ZUNoaXJvdG9wZSA9IG1ldGhvZChPcHRpb25zID0+IG9wdGlvbnMgY2hpcm90 b3BlKQpuYWl2ZUNoaXJvdG9wZSBNYXRyaXggOj0gb3B0cyAtPiBBIC0+ICgKICAgIEExIDo9IGlm IG9wdHMuSG9tb2dlbml6ZSB0aGVuIGF1Z21lbnQgQSBlbHNlIEE7CiAgICBuIDo9IG51bUNvbHVt bnMgQTE7CiAgICBkIDo9IG51bVJvd3MgQTE7CiAgICBjaGlyb0hlYWRlciA6PSAodG9TdHJpbmcg bikgfCAiLCIgfCAodG9TdHJpbmcgZCkgfCAiOlxuIjsKICAgIHN1YnMgOj0gc29ydCBzdWJzZXRz KG4sZCk7CiAgICBzdWJzMSA6PSBwYWNrKHN1YnMsIDEwMCk7CiAgICBjaGlyb0hlYWRlciB8IGNv bmNhdGVuYXRlIGZvciBzIGluIHN1YnMxIGxpc3QgKAogICAgICAgIGNvbmNhdGVuYXRlIChmb3Ig czEgaW4gcyBsaXN0ICgKICAgICAgICAgICAgICAgIGQgOj0gZGV0IEExX3MxOwogICAgICAgICAg ICAgICAgaWYgZCA+IDAgdGhlbiAiKyIgZWxzZSBpZiBkID09IDAgdGhlbiAiMCIgZWxzZSAiLSIK ICAgICAgICAgICAgICAgICkpIHwgIlxuIgogICAgICAgICkKICAgICkKCm9yaWVudGVkQ2lyY3Vp dHMgPSBtZXRob2QoT3B0aW9ucyA9PiB7SG9tb2dlbml6ZT0+dHJ1ZX0pCm9yaWVudGVkQ2lyY3Vp dHMgU3RyaW5nIDo9IG9wdHMgLT4gKGNoaXJvKSAtPiAoCiAgICAob3V0ZmlsZSxlcnJmaWxlKSA6 PSBjYWxsVG9wY29tKCJjaGlybzJjaXJjdWl0cyIsIHtjaGlyb30pOwogICAgcyA6PSBsaW5lcyBn ZXQgb3V0ZmlsZTsKICAgIC0tIHJlbW92ZSBmaXJzdCAyIGxpbmVzLCBhbmQgbGFzdCBsaW5lOgog ICAgcyA9IGRyb3AoZHJvcChzLCAyKSwgLTEpOwogICAgY2lyY3MgOj0gcy8oeCAtPiB0b0xpc3Qg dmFsdWUgeCk7CiAgICAtLSBub3cgc29ydCBpdCBhbGwKICAgIGNpcmNzL3NvcnQvL3NvcnQKICAg ICkKb3JpZW50ZWRDaXJjdWl0cyBNYXRyaXggOj0gb3B0cyAtPiBBIC0+IG9yaWVudGVkQ2lyY3Vp dHMgY2hpcm90b3BlKEEsIG9wdHMpCgpvcmllbnRlZENvY2lyY3VpdHMgPSBtZXRob2QoT3B0aW9u cyA9PiB7SG9tb2dlbml6ZT0+dHJ1ZX0pCm9yaWVudGVkQ29jaXJjdWl0cyBTdHJpbmcgOj0gb3B0 cyAtPiAoY2hpcm8pIC0+ICgKICAgIChvdXRmaWxlLGVycmZpbGUpIDo9IGNhbGxUb3Bjb20oImNo aXJvMmNvY2lyY3VpdHMiLCB7Y2hpcm99KTsKICAgIHMgOj0gbGluZXMgZ2V0IG91dGZpbGU7CiAg ICBzID0gZHJvcChkcm9wKHMsIDIpLCAtMSk7CiAgICBzLyh4IC0+IHRvTGlzdCB2YWx1ZSB4KQog ICAgKQpvcmllbnRlZENvY2lyY3VpdHMgTWF0cml4IDo9IG9wdHMgLT4gQSAtPiBvcmllbnRlZENv Y2lyY3VpdHMgY2hpcm90b3BlKEEsIG9wdHMpCgphbGxUcmlhbmdzRXhlY3V0YWJsZSA9IGhhc2hU YWJsZSB7CiAgICAtLSBGaW5lPywgQ09ubmVjdGVkVG9SZWd1bGFyPwogICAgKHRydWUsIHRydWUp ID0+ICJwb2ludHMyZmluZXRyaWFuZ3MiLAogICAgKHRydWUsIGZhbHNlKSA9PiAicG9pbnRzMmFs bGZpbmV0cmlhbmdzIiwKICAgIChmYWxzZSwgdHJ1ZSkgPT4gInBvaW50czJ0cmlhbmdzIiwKICAg IChmYWxzZSwgZmFsc2UpID0+ICJwb2ludHMyYWxsdHJpYW5ncyIKICAgIH0KbnVtVHJpYW5nc0V4 ZWN1dGFibGUgPSBoYXNoVGFibGUgewogICAgLS0gRmluZT8sIENPbm5lY3RlZFRvUmVndWxhcj8K ICAgICh0cnVlLCB0cnVlKSA9PiAicG9pbnRzMm5maW5ldHJpYW5ncyIsCiAgICAodHJ1ZSwgZmFs c2UpID0+ICJwb2ludHMybmFsbGZpbmV0cmlhbmdzIiwKICAgIChmYWxzZSwgdHJ1ZSkgPT4gInBv aW50czJudHJpYW5ncyIsCiAgICAoZmFsc2UsIGZhbHNlKSA9PiAicG9pbnRzMm5hbGx0cmlhbmdz IgogICAgfQoKYWxsVHJpYW5ndWxhdGlvbnMgPSBtZXRob2QoT3B0aW9ucyA9PiB7SG9tb2dlbml6 ZT0+dHJ1ZSwgUmVndWxhck9ubHkgPT4gdHJ1ZSwgRmluZSA9PiBmYWxzZSwgQ29ubmVjdGVkVG9S ZWd1bGFyID0+IHRydWV9KQphbGxUcmlhbmd1bGF0aW9ucyBNYXRyaXggOj0gb3B0cyAtPiAoQSkg LT4gKAogICAgaWYgbm90IG9wdHMuQ29ubmVjdGVkVG9SZWd1bGFyIGFuZCBvcHRzLlJlZ3VsYXJP bmx5IHRoZW4gZXJyb3IgImNhbm5vdCBoYXZlIGJvdGggUmVndWxhck9ubHk9PnRydWUgYW5kIENv bm5lY3RlZFRvUmVndWxhcj0+ZmFsc2UiOwogICAgZXhlY3V0YWJsZSA6PSBhbGxUcmlhbmdzRXhl Y3V0YWJsZSMob3B0cy5GaW5lLCBvcHRzLkNvbm5lY3RlZFRvUmVndWxhcik7CiAgICBhcmdzIDo9 IGlmIG9wdHMuUmVndWxhck9ubHkgdGhlbiAiIC0tcmVndWxhciIgZWxzZSAiIjsKICAgIChvdXRm aWxlLCBlcnJmaWxlKSA6PSBjYWxsVG9wY29tKGV4ZWN1dGFibGUgfCBhcmdzLCB7dG9wY29tUG9p bnRzKEEsIEhvbW9nZW5pemU9Pm9wdHMuSG9tb2dlbml6ZSl9KTsKICAgIHRyaXMgOj0gbGluZXMg Z2V0IG91dGZpbGU7CiAgICAtLSBpZiBDb25uZWN0VG9SZWd1bGFyIGlzIHRydWUsIHRoZW4gdGhl IG91dHB1dCBpcyBkaWZmZXJlbnQsIGFuZCBuZWVkcyB0byBiZSBwYXJzZWQuCiAgICAtLSBpbiB0 aGUgb3RoZXIgY2FzZSwgd2UgY2FuIGF2b2lkIHRoZSBmaXJzdCAyIGxpbmVzIGJ1dCB0aGV5IGRv bid0IGRvIGFueXRoaW5nIGVpdGhlci4KICAgIGZvciB0IGluIHRyaXMgbGlzdCAoCiAgICAgICAg dDEgOj0gcmVwbGFjZSgvLy9UXFtbMC05XStcXTo9XFsuKjovLy8sICIiLCB0KTsKICAgICAgICB0 MiA6PSByZXBsYWNlKC8vL1xdOy8vLywgIiIsIHQxKTsKICAgICAgICB0MyA6PSBzb3J0IHZhbHVl IHQyCiAgICAgICAgKQogICAgKQoKbnVtVHJpYW5ndWxhdGlvbnMgPSBtZXRob2QoT3B0aW9ucyA9 PiB7SG9tb2dlbml6ZT0+dHJ1ZSwgUmVndWxhck9ubHkgPT4gdHJ1ZSwgRmluZSA9PiBmYWxzZSwg Q29ubmVjdGVkVG9SZWd1bGFyID0+IHRydWV9KQpudW1Ucmlhbmd1bGF0aW9ucyBNYXRyaXggOj0g b3B0cyAtPiAoQSkgLT4gKAogICAgaWYgbm90IG9wdHMuQ29ubmVjdGVkVG9SZWd1bGFyIGFuZCBv cHRzLlJlZ3VsYXJPbmx5IHRoZW4gZXJyb3IgImNhbm5vdCBoYXZlIGJvdGggUmVndWxhck9ubHk9 PnRydWUgYW5kIENvbm5lY3RlZFRvUmVndWxhcj0+ZmFsc2UiOwogICAgZXhlY3V0YWJsZSA6PSBu dW1UcmlhbmdzRXhlY3V0YWJsZSMob3B0cy5GaW5lLCBvcHRzLkNvbm5lY3RlZFRvUmVndWxhcik7 CiAgICBhcmdzIDo9IGlmIG9wdHMuUmVndWxhck9ubHkgdGhlbiAiIC0tcmVndWxhciIgZWxzZSAi IjsKICAgIChvdXRmaWxlLCBlcnJmaWxlKSA6PSBjYWxsVG9wY29tKGV4ZWN1dGFibGUgfCBhcmdz LCB7dG9wY29tUG9pbnRzKEEsIEhvbW9nZW5pemU9Pm9wdHMuSG9tb2dlbml6ZSl9KTsKICAgIHZh bHVlIGdldCBvdXRmaWxlCiAgICApCgpudW1GbGlwcyA9IG1ldGhvZChPcHRpb25zID0+IHtIb21v Z2VuaXplPT50cnVlLCBSZWd1bGFyT25seSA9PnRydWV9KQpudW1GbGlwcyhNYXRyaXgsIExpc3Qp IDo9IG9wdHMgLT4gKEEsIHRyaSkgLT4gKAogICAgZXhlY3V0YWJsZSA6PSAicG9pbnRzMm5mbGlw cyI7CiAgICBhcmdzIDo9IGlmIG9wdHMuUmVndWxhck9ubHkgdGhlbiAiIC0tcmVndWxhciIgZWxz ZSAiIjsKICAgIChvdXRmaWxlLCBlcnJmaWxlKSA6PSBjYWxsVG9wY29tKGV4ZWN1dGFibGUgfCBh cmdzLCB7dG9wY29tUG9pbnRzKEEsIEhvbW9nZW5pemU9Pm9wdHMuSG9tb2dlbml6ZSl9KTsKICAg IChnZXQgb3V0ZmlsZSwgZ2V0IGVycmZpbGUpCiAgICApCgpmbGlwcyA9IG1ldGhvZChPcHRpb25z ID0+IHtIb21vZ2VuaXplPT50cnVlLCBSZWd1bGFyT25seSA9PnRydWV9KQpmbGlwcyhNYXRyaXgs IExpc3QpIDo9IG9wdHMgLT4gKEEsIHRyaSkgLT4gKAogICAgZXhlY3V0YWJsZSA6PSAicG9pbnRz MmZsaXBzIjsKICAgIGFyZ3MgOj0gaWYgb3B0cy5SZWd1bGFyT25seSB0aGVuICIgLS1yZWd1bGFy IiBlbHNlICIiOwogICAgKG91dGZpbGUsIGVycmZpbGUpIDo9IGNhbGxUb3Bjb20oZXhlY3V0YWJs ZSB8IGFyZ3MsIHt0b3Bjb21Qb2ludHMoQSwgSG9tb2dlbml6ZT0+b3B0cy5Ib21vZ2VuaXplKX0p OwogICAgKGdldCBvdXRmaWxlLCBnZXQgZXJyZmlsZSkKICAgICkKCmZpbmVTdGFyVHJpYW5ndWxh dGlvbiA9IG1ldGhvZCgpCmZpbmVTdGFyVHJpYW5ndWxhdGlvbihNYXRyaXgsIExpc3QpIDo9IChB LCB0cmkpIC0+ICgKICAgIGFBIDo9IGF1Z21lbnQgQTsKICAgIC0tIEggOj0gZmlyc3QgaGFsZnNw YWNlcyBjb252ZXhIdWxsIGFBOwogICAgSCA6PSB0cmFuc3Bvc2UoLShmaXJzdCBmb3VyaWVyTW90 emtpbiBhQSkpOwogICAgbXlmYWNldHMgOj0gZm9yIGUgaW4gZW50cmllcyBIIGxpc3QgKAogICAg ICAgIHBvc2l0aW9ucyhmbGF0dGVuIGVudHJpZXMobWF0cml4IHtlfSAqIGFBKSwgeCAtPiB4ID09 IDApCiAgICAgICAgKTsKICAgIHNvcnQgdW5pcXVlIGZsYXR0ZW4gZm9yIGYgaW4gdHJpIGxpc3Qg Zm9yIGcgaW4gbXlmYWNldHMgbGlzdCAoCiAgICAgICAgYSA6PSB0b0xpc3Qoc2V0IGcgKiBzZXQg Zik7IAogICAgICAgIGlmICNhIDwgbnVtUm93cyBBIHRoZW4gCiAgICAgICAgY29udGludWUgCiAg ICAgICAgZWxzZSBzb3J0IGEKICAgICAgICApCiAgICAtLSBuZXd0cmkgPSBmb3IgZiBpbiBuZXd0 cmkgbGlzdCBhcHBlbmQoZiwgbnVtQ29sdW1ucyBBKQogICAgKQoKcmVndWxhckZpbmVTdGFyVHJp YW5ndWxhdGlvbiA9IG1ldGhvZCgpCnJlZ3VsYXJGaW5lU3RhclRyaWFuZ3VsYXRpb24gTWF0cml4 IDo9IChBKSAtPiBmaW5lU3RhclRyaWFuZ3VsYXRpb24oQSwgcmVndWxhckZpbmVUcmlhbmd1bGF0 aW9uIEEpCgpuYWl2ZUlzVHJpYW5ndWxhdGlvbiA9IG1ldGhvZCgpCm5haXZlSXNUcmlhbmd1bGF0 aW9uKE1hdHJpeCwgTGlzdCwgTGlzdCkgOj0gKEEsIGNpcmN1aXRzLCB0cmkpIC0+ICgKICAgIGFB IDo9IGF1Z21lbnQgQTsKICAgIC0tIEggOj0gZmlyc3QgaGFsZnNwYWNlcyBjb252ZXhIdWxsIGFB OwogICAgSCA6PSB0cmFuc3Bvc2UoLShmaXJzdCBmb3VyaWVyTW90emtpbiBhQSkpOwogICAgbXlm YWNldHMgOj0gZm9yIGUgaW4gZW50cmllcyBIIGxpc3QgKAogICAgICAgIHBvc2l0aW9ucyhmbGF0 dGVuIGVudHJpZXMobWF0cml4IHtlfSAqIGFBKSwgeCAtPiB4ID09IDApCiAgICAgICAgKTsKICAg IC0tIHRlc3QgMTogZWFjaCB3YWxsIHNob3VsZCBiZSBpbiBhIGZhY2V0IG9mIHRoZSBjb252ZXgg aHVsbCwgb3Igb2NjdXIgZXhhY3RseSB0d2ljZS4KICAgIHdhbGxzIDo9IHRhbGx5IGZsYXR0ZW4g Zm9yIHQgaW4gdHJpIGxpc3Qgc3Vic2V0cyh0LCN0LTEpOwogICAgdGVzdDEgOj0gZm9yIGsgaW4g a2V5cyB3YWxscyBsaXN0ICgKICAgICAgICBpZiBhbnkobXlmYWNldHMsIGYgLT4gaXNTdWJzZXQo ayxmKSkgdGhlbiAKICAgICAgICAgIHdhbGxzI2sgPT0gMQogICAgICAgIGVsc2UKICAgICAgICAg IHdhbGxzI2sgPT0gMgogICAgICAgICk7CiAgICBpZiBhbnkodGVzdDEsIHggLT4gbm90IHgpIHRo ZW4gcmV0dXJuIGZhbHNlOwogICAgLS0gdGVzdCAyOiBmb3IgZWFjaCBvcmllbnRlZCBjaXJjdWl0 IFogPSAoWissIFotKQogICAgdGVzdDIgOj0gZm9yIHogaW4gY2lyY3VpdHMgbGlzdCAoCiAgICAg ICMgc2VsZWN0KHRyaSwgdCAtPiBpc1N1YnNldCh6XzAsIHQpKSwKICAgICAgIyBzZWxlY3QodHJp LCB0IC0+IGlzU3Vic2V0KHpfMSwgdCkpCiAgICAgICk7CiAgICBhbGwodGVzdDIsIHggLT4geCMw ID09IDAgb3IgeCMxID09IDApCiAgICApCm5haXZlSXNUcmlhbmd1bGF0aW9uKE1hdHJpeCwgTGlz dCkgOj0gKEEsIHRyaSkgLT4gbmFpdmVJc1RyaWFuZ3VsYXRpb24oQSwgb3JpZW50ZWRDaXJjdWl0 cyBBLCB0cmkpCgoKdG9wY29tSXNUcmlhbmd1bGF0aW9uID0gbWV0aG9kKCk7CnRvcGNvbUlzVHJp YW5ndWxhdGlvbihNYXRyaXgsIExpc3QpIDo9IChWaW4sIFQpIC0+ICgKICAgLS0gVG9wY29tIGRv ZXMgbm90IGNoZWNrIHdoZXRoZXIgdGhlIHNldHMgaW4gVCBhY3R1YWxseSBmb3JtIHNpbXBsaWNl cy4gSW4KICAgLS0gdGhhdCBjYXNlIGl0IHRocm93cyBhbiBlcnJvciBpbnN0ZWFkIG9mIGdpdmlu ZyBhbiBhbnN3ZXIuICAtLSBTbyB3ZSBkbyBpdAogICAtLSBtYW51YWxseToKICAgViA6PSBwcm9t b3RlKGF1Z21lbnQgVmluLCBRUSk7CiAgIGQgOj0gbnVtUm93cyBWOwogICBpZiBub3QgYWxsKFQs IHQtPiAjdCA9PSBkKSB0aGVuICgKICAgICAgPDwgIkluZGV4IHNldHMgZG8gbm90IGNvcnJlc3Bv bmQgdG8gZnVsbC1kaW1lbnNpb25hbCBzaW1wbGljZXMiIDw8IGVuZGw7CiAgICAgIHJldHVybiBm YWxzZTsKICAgKTsKICAgc2ltcGxpY2VzIDo9IGFwcGx5KFQsIHQgLT4gVl90KTsKICAgaWYgbm90 IGFsbChzaW1wbGljZXMsIHMtPmQ9PXJhbmsgcykgdGhlbiAoCiAgICAgIDw8ICJJbmRleCBzZXRz IGRvIG5vdCBjb3JyZXNwb25kIHRvIGZ1bGwtZGltZW5zaW9uYWwgc2ltcGxpY2VzIiA8PCBlbmRs OwogICAgICByZXR1cm4gZmFsc2U7CiAgICk7CiAgIChvdXRmaWxlLCBlcnJmaWxlKSA6PSBjYWxs VG9wY29tKCJwb2ludHMybmZsaXBzIC0tY2hlY2t0cmlhbmcgLXYiLCB7dG9wY29tUG9pbnRzKFYs IEhvbW9nZW5pemU9PmZhbHNlKSwgW10sIFQgfSk7CiAgIG5vdCBtYXRjaCgibm90IHZhbGlkIiwg Z2V0IGVycmZpbGUpCikKCgpiZWdpbkRvY3VtZW50YXRpb24oKQoKZG9jIC8vLwpLZXkKICBUb3Bj b20KSGVhZGxpbmUKICBpbnRlcmZhY2UgdG8gc2VsZWN0ZWQgZnVuY3Rpb25zIGZyb20gdG9wY29t IHBhY2thZ2UKRGVzY3JpcHRpb24KICBUZXh0CiAgICBUb3Bjb20gQEhSRUZ7Imh0dHA6Ly93d3cu cmFtYmF1LndtLnVuaS1iYXlyZXV0aC5kZS9UT1BDT00vIn1AIGlzIG1hdGhlbWF0aWNhbCBzb2Z0 d2FyZSB3cml0dGVuIGJ5IEpvcmcgUmFtYmF1IGZvciAKICAgIGNvbXB1dGluZyBhbmQgbWFuaXB1 bGF0aW5nIHRyaWFuZ3VsYXRpb25zIG9mIHBvbHl0b3BlcyBhbmQgY2hpcm90b3Blcy4KICAgIAog ICAgVGhpcyBwYWNrYWdlIGltcGxlbWVudHMgdHdvIGtleSBmdW5jdGlvbnMgZnJvbSB0aGUgdG9w Y29tIHBhY2thZ2UKICAgIEBUTyAiaXNSZWd1bGFyVHJpYW5ndWxhdGlvbiJAICBjaGVja3Mgd2hl dGhlciBhIHRyaWFuZ3VsYXRpb24gb2YgYSBwb2ludCBzZXQgaXMgYSByZWd1bGFyIHRyaWFuZ3Vs YXRpb24sCiAgICBhbmQgQFRPICJyZWd1bGFyRmluZVRyaWFuZ3VsYXRpb24iQCBjb21wdXRlcyBh IHRyaWFuZ3VsYXRpb24gd2hpY2ggaW52b2x2ZXMgYWxsIGxhdHRpY2UgcG9pbnRzIG9mIGEgcG9s eXRvcGUuCkNhdmVhdAogIFRoZXJlIGFyZSBtYW55IG90aGVyIGZ1bmN0aW9ucyBhdmFpbGFibGUg aW4gVG9wY29tLiAgSWYgeW91IHdpc2ggYW55IG9mIHRoZXNlIGltcGxlbWVudGVkLCBvciB5b3Ug d291bGQgbGlrZSB0byBjb250cmlidXRlCiAgc3VjaCBhbiBpbXBsZW1lbnRhdGlvbiwgcGxlYXNl IGNvbnRhY3QgdGhlIGF1dGhvci4KU2VlQWxzbwogICJDb2hvbUNhbGc6OkNvaG9tQ2FsZyIKICAi UmVmbGV4aXZlUG9seXRvcGVzREI6OlJlZmxleGl2ZVBvbHl0b3Blc0RCIgovLy8KCmRvYyAvLy8K S2V5CiAgaXNSZWd1bGFyVHJpYW5ndWxhdGlvbgogIChpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uLE1h dHJpeCxMaXN0KQpIZWFkbGluZQogIGRldGVybWluZSBpZiBhIGdpdmVuIHRyaWFuZ3VsYXRpb24g aXMgYSByZWd1bGFyIHRyaWFuZ3VsYXRpb24KVXNhZ2UKICBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9u KEMsIHRyaSkKSW5wdXRzCiAgQzpNYXRyaXgKICAgIEEgbWF0cml4IG92ZXIgWlouICBFYWNoIGNv bHVtbiByZXByZXNlbnRzIG9uZSBvZiB0aGUgcG9pbnRzCiAgICB3aGljaCBjYW4gYmUgdXNlZCBp biBhIHRyaWFuZ3VsYXRpb24KICB0cmk6TGlzdAogICAgQSB0cmlhbmd1bGF0aW9uIG9mIHRoZSBw b2ludCBzZXQgQwpPdXRwdXRzCiAgOkJvb2xlYW4KICAgIHdoZXRoZXIgdGhlIGdpdmVuIHRyaWFu Z3VsYXRpb24gaXMgcmVndWxhcgpEZXNjcmlwdGlvbgogIFRleHQKICAgIFRoZSBmb2xsb3dpbmcg ZXhhbXBsZSBpcyBvbmUgb2YgdGhlIHNpbXBsZXN0IGV4YW1wbGVzIG9mIGEgbm9uLXJlZ3VsYXIK ICAgIHRyaWFuZ3VsYXRpb24uICBOb3RpY2UgdGhhdCB7XHR0IHRyaX0gaXMgYSB0cmlhbmd1bGF0 aW9uIG9mIHRoZSAKICAgIHBvbHl0b3BlIHdoaWNoIGlzIHRoZSBjb252ZXggaHVsbCBvZiB0aGUg Y29sdW1ucyBvZiAkQSQsIHdoaWNoIGFyZSAKICAgIHRoZSBvbmx5IHBvaW50cyBhbGxvd2VkIGlu IHRoZSB0cmlhbmd1bGF0aW9uLgogIEV4YW1wbGUKICAgIEEgPSB0cmFuc3Bvc2UgbWF0cml4IHt7 MCwzfSx7MCwxfSx7LTEsLTF9LHsxLC0xfSx7LTQsLTJ9LHs0LC0yfX0KICAgIHRyaSA9IHt7MCwx LDJ9LCB7MSwzLDV9LCB7MiwzLDR9LCB7MCwxLDV9LCAKICAgICAgICB7MCwyLDR9LCB7Myw0LDV9 LCB7MSwyLDN9fQogICAgaXNSZWd1bGFyVHJpYW5ndWxhdGlvbihBLHRyaSkKICBUZXh0CiAgICBT ZXR0aW5nIGRlYnVnTGV2ZWwgdG8gZWl0aGVyIDEsMiwgb3IgNSB3aWxsIGdpdmUgbW9yZSBkZXRh aWwgYWJvdXQKICAgIHdoYXQgZmlsZXMgYXJlIHdyaXR0ZW4gdG8gVG9wY29tLCBhbmQgd2hhdCB0 aGUgZXhlY3V0YWJsZSBpcy4KICAgIFNldHRpbmcgZGVidWdMZXZlbCB0byAwIG1lYW5zIHRoYXQg dGhlIGZ1bmN0aW9uIHdpbGwgcnVuIHNpbGVudGx5LgpDYXZlYXQKICBEbyB3ZSBjaGVjayB0aGF0 IHRoZSB0cmlhbmd1bGF0aW9uIGlzIGFjdHVhbGx5IHdlbGxsIGRlZmluZWQ/ClNlZUFsc28KICBy ZWd1bGFyRmluZVRyaWFuZ3VsYXRpb24gIAovLy8KClRFU1QgLy8vCi0qCiAgcmVzdGFydAogIGRl YnVnIG5lZWRzUGFja2FnZSAiVG9wY29tIgoqLQogIC0tIHRlc3Qgb2YgaXNSZWd1bGFyVHJpYW5n dWxhdGlvbgogIEEgPSB0cmFuc3Bvc2UgbWF0cml4IHt7LTEsLTEsMX0sey0xLDEsMX0sezEsLTEs MX0sezEsMSwxfSx7MCwwLDF9fQogIHJlZ3VsYXJGaW5lVHJpYW5ndWxhdGlvbihBLCBIb21vZ2Vu aXplPT5mYWxzZSkKICB0cmkgPSB7ezAsIDIsIDR9LCB7MiwgMywgNH0sIHswLCAxLCA0fSwgezEs IDMsIDR9fQogIGFzc2VydCBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKEEsdHJpKQogIGFzc2VydChy ZWd1bGFyVHJpYW5ndWxhdGlvbldlaWdodHMoQSx0cmksSG9tb2dlbml6ZT0+ZmFsc2UpID09IHsx LDEsMCwwLDB9KQovLy8KClRFU1QgLy8vCiAgbmVlZHNQYWNrYWdlICJUb3Bjb20iCiAgLS0gdGVz dCBvZiBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uCiAgQSA9IHRyYW5zcG9zZSBtYXRyaXgge3swLDN9 LHswLDF9LHstMSwtMX0sezEsLTF9LHstNCwtMn0sezQsLTJ9fQogIHRyaSA9IHt7MCwxLDJ9LCB7 MSwzLDV9LCB7MiwzLDR9LAogICAgICAgICB7MCwxLDV9LCB7MCwyLDR9LCB7Myw0LDV9LAogICAg ICAgICB7MSwyLDN9fQogIGFzc2VydCBub3QgaXNSZWd1bGFyVHJpYW5ndWxhdGlvbihBLHRyaSkK ICBhc3NlcnQobnVsbCA9PT0gcmVndWxhclRyaWFuZ3VsYXRpb25XZWlnaHRzKEEsdHJpKSkKICBu dW1Ucmlhbmd1bGF0aW9ucyBBCiAgYWxsVHJpYW5ndWxhdGlvbnMgQSAgCiAgYWxsVHJpYW5ndWxh dGlvbnMoQSwgRmluZT0+dHJ1ZSkKICBhbGxUcmlhbmd1bGF0aW9ucyhBLCBGaW5lPT50cnVlLCBS ZWd1bGFyT25seT0+ZmFsc2UpCiAgQSA9IHRyYW5zcG9zZSBtYXRyaXgge3swLDN9LHswLDF9LHst MSwtMX0sezEsLTF9LHstNCwtMn0sezcsLTJ9fQogIHRyaSA9IHt7MCwxLDJ9LCB7MSwzLDV9LCB7 MiwzLDR9LAogICAgICAgICB7MCwxLDV9LCB7MCwyLDR9LCB7Myw0LDV9LAogICAgICAgICB7MSwy LDN9fQogIGFzc2VydCBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKEEsdHJpKQogIHJlZ3VsYXJUcmlh bmd1bGF0aW9uV2VpZ2h0cyhBLHRyaSkgLS0gUXVlc3Rpb246IGhvdyB0byB0ZXN0IHRoYXQgdGhp cyBpcyBjb3JyZWN0CiAgICAtLSBUT0RPOiBuZWVkIGEgZnVuY3Rpb24gd2hpY2ggdGFrZXMgYSBw b2ludCBzZXQsIHdlaWdodHMsIGFuZCBjcmVhdGVzIHRoZSBsaWZ0IChlYXN5KQogICAgLS0gICAg ICAgY29tcHV0ZSB0aGUgbG93ZXIgaHVsbCBvZiB0aGlzIHBvbHl0b3BlLgoKICBhc3NlcnQoY2hp cm90b3BlIEEgPT0gbmFpdmVDaGlyb3RvcGUgQSkKICBvcmllbnRlZENpcmN1aXRzIEEKICBvcmll bnRlZENvY2lyY3VpdHMgQQogIEEgPSB0cmFuc3Bvc2UgbWF0cml4IHt7MSwwfSx7MCwxfX0KICB0 cmkgPSB7ezAsMX19CiAgYXNzZXJ0IGlzUmVndWxhclRyaWFuZ3VsYXRpb24oQSx0cmkpCiAgcmVn dWxhclRyaWFuZ3VsYXRpb25XZWlnaHRzKEEsdHJpKSA9PSB7MCwxfSAtLSBUT0RPOiBjaGVjayB0 aGF0IHRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyCiAgCiAgQSA9IHRyYW5zcG9zZSBtYXRyaXgg e3swfX0KICB0cmkgPSB7ezB9fQogIGFzc2VydCBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKEEsdHJp KQogIHJlZ3VsYXJUcmlhbmd1bGF0aW9uV2VpZ2h0cyhBLHRyaSkgPT0gezF9Ci8vLwoKLy8vCi0t IFRPRE86IFRoaXMgdGVzdCBuZWVkcyB0byBiZSBtYWRlIHRvIGFzc2VydCBjb3JyZWN0IHN0YXRl bWVudHMKLS0gSG93IHRvIHRlc3QgdGhhdCB0cmlhbmd1bGF0aW9ucyBhcmUgY29ycmVjdD8gIFdo YXQgSSB0aG91Z2h0IHdvcmtlZCBkb2VzIG5vdC4KICBuZWVkc1BhY2thZ2UgIlRvcGNvbSIKICBB ID0gdHJhbnNwb3NlIG1hdHJpeHt7LTEsLTF9LHstMSwxfSx7MSwtMX0sezEsMX0sezAsMH19CiAg cmVndWxhckZpbmVUcmlhbmd1bGF0aW9uIEEgIAogIHRyaSA9IHt7MCwgMiwgNH0sIHsyLCAzLCA0 fSwgezAsIDEsIDR9LCB7MSwgMywgNH19CiAgdHJpID0ge3swLCAyLCA0fSwgezIsIDMsIDR9LCB7 MCwgMSwgNH0sIHsxLCAyLCAzfX0KICBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKEEsIHRyaSkgLS0g V3JvbmchIQoKICBiYWR0cmkgPSB7ezAsIDIsIDR9LCB7MiwgMywgNH0sIHswLCAxLCA0fSwgezEs IDIsIDN9fQogIGRlYnVnTGV2ZWwgPSA2CiAgaXNSZWd1bGFyVHJpYW5ndWxhdGlvbihBLGJhZHRy aSkgLS0gdGhpcyBzaG91bGQgZmFpbCEgQnV0IGl0IGRvZXNuJ3Qgc2VlbSB0byBkbyBzby4gQlVH IGluIHNvbWV0aGluZyEhIQogIGRlYnVnTGV2ZWwgPSAwCiAgLS0gaG1tbSwgd2UgY2FuIG1ha2Ug bm9uLXNlbnNpY2FsIHRyaWFuZ3VsYXRpb25zLCB3aXRob3V0IGl0IG5vdGljaW5nLgogIC0tIHRo aXMgc2hvdWxkIGJlIGEgYnVnPyAgCiAgQSA9IHRyYW5zcG9zZSBtYXRyaXgge3swLDB9LHswLDF9 LHsxLDB9LHsxLDF9fQogIHRyaSA9IHt7MCwxLDJ9LHswLDIsM319CiAgYXNzZXJ0IGlzUmVndWxh clRyaWFuZ3VsYXRpb24oQSx0cmkpICAKICB0cmkgPSB7ezAsMSwyfSx7MSwyLDN9fQogIGFzc2Vy dCBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKEEsdHJpKSAKLy8vCgpURVNUIC8vLyAgCiAgbmVlZHNQ YWNrYWdlICJUb3Bjb20iCiAgbmVlZHNQYWNrYWdlICJQb2x5aGVkcmEiCiAgCiAgQSA9IHRyYW5z cG9zZSBtYXRyaXgge3stMSwtMSwyfSx7LTEsMCwxfSx7LTEsMSwxfSx7MCwtMSwyfSx7MCwxLDF9 LHsxLC0xLDN9LHsxLDAsLTF9LHsxLDEsLTJ9fQogIGRlYnVnTGV2ZWwgPSAwCiAgdHJpID0gcmVn dWxhckZpbmVUcmlhbmd1bGF0aW9uIEEKICBhc3NlcnQgaXNSZWd1bGFyVHJpYW5ndWxhdGlvbihB LCB0cmkpCiAgYXNzZXJ0KHJlZ3VsYXJUcmlhbmd1bGF0aW9uV2VpZ2h0cyhBLCB0cmkpID0hPSBu dWxsKQoKICBBID0gdHJhbnNwb3NlIG1hdHJpeCB7ey0xLCAwLCAtMSwgLTF9LCB7LTEsIDAsIDAs IC0xfSwgey0xLCAxLCAyLCAtMX0sIHstMSwgMSwgMiwgMH0sIHsxLCAtMSwgLTEsIC0xfSwgezEs IC0xLCAtMSwgMX0sIHsxLCAwLCAtMSwgMn0sIHsxLCAwLCAxLCAyfX0KICBQMiA9IHBvbGFyIGNv bnZleEh1bGwgQQogIEMgPSBtYXRyaXgge2xhdHRpY2VQb2ludHMgUDJ9CiAgdHJpID0gcmVndWxh ckZpbmVUcmlhbmd1bGF0aW9uIEMKICBhc3NlcnQgaXNSZWd1bGFyVHJpYW5ndWxhdGlvbihDLCB0 cmkpCiAgcmVndWxhclRyaWFuZ3VsYXRpb25XZWlnaHRzKEMsIHRyaSkgLS0gaXMgdGhpcyBjb3Jy ZWN0PyAgU29tZSB3ZWlnaHRzIGhhdmUgbmVnYXRpdmUgdmFsdWVzPz8KLy8vCgoKVEVTVCAvLy8K LS0gc2ltcGxlIGV4YW1wbGUgb2YgY2hpcm90b3BlCi0qCiAgcmVzdGFydAogIGRlYnVnIG5lZWRz UGFja2FnZSAiVG9wY29tIgoqLQogIEEgPSB0cmFuc3Bvc2UgbWF0cml4IHt7LTEsLTF9LHstMSwx fSx7MSwtMX0sezEsMX0sezAsMH19CiAgdHJpID0ge3swLCAyLCA0fSwgezIsIDMsIDR9LCB7MCwg MSwgNH0sIHsxLCAzLCA0fX0KICBjaDEgPSBjaGlyb3RvcGUgQQogIGNoMiA9IG5haXZlQ2hpcm90 b3BlIEEKICBhc3NlcnQoY2gxID09IGNoMikKLy8vCgpURVNUIC8vLwotLSBCYWQgdHJpYW5ndWxh dGlvbnMgb2YgdGhlIHNxdWFyZQpWID0gdHJhbnNwb3NlIG1hdHJpeCB7ezAsMH0sezEsMH0sezAs MX0sezEsMX19ClQxID0ge3swLDEsMn19ClQyID0ge3swLDEsMn0sezAsMSwzfX0KVDMgPSB7ezAs MSwyLDN9fQphc3NlcnQobm90IG5haXZlSXNUcmlhbmd1bGF0aW9uKFYsIFQxKSkKYXNzZXJ0KG5v dCBuYWl2ZUlzVHJpYW5ndWxhdGlvbihWLCBUMikpCmFzc2VydChub3QgbmFpdmVJc1RyaWFuZ3Vs YXRpb24oViwgVDMpKQotLSBhc3NlcnQobm90IHRvcGNvbUlzVHJpYW5ndWxhdGlvbihWLCBUMSkp IC0tIHRvcGNvbSBzaWduYWxzIGFuIGVycm9yIGhlcmUKLS0gYXNzZXJ0KG5vdCB0b3Bjb21Jc1Ry aWFuZ3VsYXRpb24oViwgVDIpKSAtLSB0b3Bjb20gc2lnbmFscyBhbiBlcnJvciBoZXJlCmFzc2Vy dChub3QgdG9wY29tSXNUcmlhbmd1bGF0aW9uKFYsIFQzKSkKLy8vCgotLSBUaGlzIGV4YW1wbGUg aXMgYSBnb29kIG9uZSwgYnV0IHRha2VzIHRvbyBsb25nIHRvIGJlIHJ1biBhdXRvbWF0aWNhbGx5 Ci8vLwpyZXN0YXJ0CiAgbmVlZHNQYWNrYWdlICJUb3Bjb20iICAKICBuZWVkc1BhY2thZ2UgIlBv bHloZWRyYSIKICBwdHMgPSAge3stMSwwLDAsLTF9LHstMSwwLDEsLTF9LHstMSwwLDEsMH0sey0x LDEsMCwtMX0sey0xLDEsMCwwfSx7LTEsMSwxLDJ9LHsxLC0xLDAsLTF9LHsxLDAsLTEsMX0sezEs LTEsLTEsLTF9LHswLDAsMCwtMX19CiAgQSA9IHRyYW5zcG9zZSBtYXRyaXggcHRzIAogIC0tIGRl YnVnTGV2ZWwgPSA3CgogIGVsYXBzZWRUaW1lIG4xID0gbnVtVHJpYW5ndWxhdGlvbnMoQSwgRmlu ZT0+dHJ1ZSwgQ29ubmVjdGVkVG9SZWd1bGFyPT50cnVlKSAtLSA2Ljkgc2VjLCA0MDggb2YgdGhl c2UgQ09SUkVDVAogIGVsYXBzZWRUaW1lIG4yID0gbnVtVHJpYW5ndWxhdGlvbnMoQSwgRmluZT0+ dHJ1ZSwgQ29ubmVjdGVkVG9SZWd1bGFyPT5mYWxzZSkgLS0gMTE2IHNlYywgNDQ4IG9mIHRoZXNl IFdST05HCiAgZWxhcHNlZFRpbWUgbjMgPSBudW1Ucmlhbmd1bGF0aW9ucyhBLCBGaW5lPT5mYWxz ZSwgQ29ubmVjdGVkVG9SZWd1bGFyPT50cnVlKSAgLS0gOCBzZWMsIDUyMCBvZiB0aGVzZSBDT1JS RUNUCiAgZWxhcHNlZFRpbWUgbjQgPSBudW1Ucmlhbmd1bGF0aW9ucyhBLCBGaW5lPT5mYWxzZSwg Q29ubmVjdGVkVG9SZWd1bGFyPT5mYWxzZSkgLS0gMTE1IHNlYywgNTY0IG9mIHRoZXNlIFdST05H CgogIGVsYXBzZWRUaW1lIG41ID0gbnVtVHJpYW5ndWxhdGlvbnMoQSwgRmluZT0+dHJ1ZSwgQ29u bmVjdGVkVG9SZWd1bGFyPT50cnVlLCBSZWd1bGFyT25seT0+ZmFsc2UpIC0tIC4wOSBzZWMsIDQ0 OCBvZiB0aGVzZQogIGVsYXBzZWRUaW1lIG42ID0gbnVtVHJpYW5ndWxhdGlvbnMoQSwgRmluZT0+ dHJ1ZSwgQ29ubmVjdGVkVG9SZWd1bGFyPT5mYWxzZSwgUmVndWxhck9ubHk9PmZhbHNlKSAtLSAx MTUuNSBzZWMsIDQ0OCBvZiB0aGVzZQogIGVsYXBzZWRUaW1lIG43ID0gbnVtVHJpYW5ndWxhdGlv bnMoQSwgRmluZT0+ZmFsc2UsIENvbm5lY3RlZFRvUmVndWxhcj0+dHJ1ZSwgUmVndWxhck9ubHk9 PmZhbHNlKSAgLS0gLjExIHNlYywgNTY0IG9mIHRoZXNlCiAgZWxhcHNlZFRpbWUgbjggPSBudW1U cmlhbmd1bGF0aW9ucyhBLCBGaW5lPT5mYWxzZSwgQ29ubmVjdGVkVG9SZWd1bGFyPT5mYWxzZSwg UmVndWxhck9ubHk9PmZhbHNlKSAtLSAxMTYgc2VjLCA1NjQgb2YgdGhlc2UKCiAgZWxhcHNlZFRp bWUgc2V0MSA9IGFsbFRyaWFuZ3VsYXRpb25zKEEsIEZpbmU9PnRydWUsIENvbm5lY3RlZFRvUmVn dWxhcj0+dHJ1ZSk7IC0tIDYuOSBzZWMsIDQwOCAgQ09SUkVDVAogIGVsYXBzZWRUaW1lIHNldDIg PSBhbGxUcmlhbmd1bGF0aW9ucyhBLCBGaW5lPT50cnVlLCBDb25uZWN0ZWRUb1JlZ3VsYXI9PmZh bHNlKTsgLS0gMTE4IHNlYywgNDQ4IFdST05HCiAgZWxhcHNlZFRpbWUgc2V0MyA9IGFsbFRyaWFu Z3VsYXRpb25zKEEsIEZpbmU9PmZhbHNlLCBDb25uZWN0ZWRUb1JlZ3VsYXI9PnRydWUpOyAtLSA4 LjEgc2VjLCA1MjAgQ09SUkVDVAogIGVsYXBzZWRUaW1lIHNldDQgPSBhbGxUcmlhbmd1bGF0aW9u cyhBLCBGaW5lPT5mYWxzZSwgQ29ubmVjdGVkVG9SZWd1bGFyPT5mYWxzZSk7IC0tIDExNiBzZWMu ICA1NjQgb2YgdGhlc2UuIFdST05HCgogIGVsYXBzZWRUaW1lIHNldDUgPSBhbGxUcmlhbmd1bGF0 aW9ucyhBLCBGaW5lPT50cnVlLCBDb25uZWN0ZWRUb1JlZ3VsYXI9PnRydWUsIFJlZ3VsYXJPbmx5 PT5mYWxzZSk7IC0tIC4xNSBzZWMsIDQ0OCBvZiB0aGVzZQogIGVsYXBzZWRUaW1lIHNldDYgPSBh bGxUcmlhbmd1bGF0aW9ucyhBLCBGaW5lPT50cnVlLCBDb25uZWN0ZWRUb1JlZ3VsYXI9PmZhbHNl LCBSZWd1bGFyT25seT0+ZmFsc2UpOyAtLSAxMTYgc2VjLCA0NDggb2YgdGhlc2UKICBlbGFwc2Vk VGltZSBzZXQ3ID0gYWxsVHJpYW5ndWxhdGlvbnMoQSwgRmluZT0+ZmFsc2UsIENvbm5lY3RlZFRv UmVndWxhcj0+dHJ1ZSwgUmVndWxhck9ubHk9PmZhbHNlKTsgLS0gLjIyIHNlYywgNTY0IG9mIHRo ZXNlCiAgZWxhcHNlZFRpbWUgc2V0OCA9IGFsbFRyaWFuZ3VsYXRpb25zKEEsIEZpbmU9PmZhbHNl LCBDb25uZWN0ZWRUb1JlZ3VsYXI9PmZhbHNlLCBSZWd1bGFyT25seT0+ZmFsc2UpOyAtLSAxMTcg c2VjLCA1NjQgb2YgdGhlc2UKCiAgYXNzZXJ0KChuMSxuMixuMyxuNCxuNSxuNixuNyxuOCkgPT0g KCNzZXQxLCAjc2V0MiwgI3NldDMsICNzZXQ0LCAjc2V0NSwgI3NldDYsICNzZXQ3LCAjc2V0OCkp CiAgZmluZVRyaXMgPSBzZWxlY3Qoc2V0OCwgeCAtPiAjIHVuaXF1ZSBmbGF0dGVuIHggPT0gbnVt Q29sdW1ucyBBKTsKICByZWd1bGFyRmluZVRyaXMgPSBzZWxlY3QoZmluZVRyaXMsIHggLT4gaXNS ZWd1bGFyVHJpYW5ndWxhdGlvbihBLCB4KSk7CiAgcmVndWxhclRyaXMgPSBzZWxlY3Qoc2V0OCwg eCAtPiBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKEEsIHgpKTsKCiAgYXNzZXJ0KCNyZWd1bGFyRmlu ZVRyaXMgPT0gNDA4KQogIGFzc2VydCgjZmluZVRyaXMgPT0gNDQ4KQogIGFzc2VydCgjcmVndWxh clRyaXMgPT0gNTIwKSAgCgogIGFzc2VydChzZXQgc2V0NSA9PT0gc2V0IHNldDYpIC0tIGluIGdl bmVyYWwsIHRoaXMgZG9lc24ndCBuZWVkIHRvIGhvbGQsIGJ1dCBpdCBpcyByYXJlIGZvciB0aGlz IHRvIGJlIHRoZSBjYXNlCiAgYXNzZXJ0KHNldCBzZXQ3ID09PSBzZXQgc2V0OCkgLS0gc2FtZTog cmFyZSBmb3IgdGhpcyB0byBub3QgaG9sZAogIGFzc2VydChzZXQgc2V0NCA9PT0gc2V0IHNldDgp IC0tIHRoaXMgb25lIHNob3VsZCBub3QgYmUgdHJ1ZT8gIAogIGFzc2VydChzZXQgc2VsZWN0KHNl dDcsIHggLT4gaXNSZWd1bGFyVHJpYW5ndWxhdGlvbihBLCB4KSkgPT09IHNldCBzZXQzKQogIGFz c2VydChzZXQgc2VsZWN0KHNldDUsIHggLT4gaXNSZWd1bGFyVHJpYW5ndWxhdGlvbihBLCB4KSkg PT09IHNldCBzZXQxKQoKICBzZXQ1XzAKICBmb3IgdHJpIGluIHNldDUgbGlzdCBuYWl2ZUlzVHJp YW5ndWxhdGlvbihBLCB0cmkpCgogIG51bUZsaXBzKEEsIHNldDVfMCkgIAogIGZsaXBzKEEsIHNl dDVfMCkKICAtLSBub3cgbGV0J3Mgc2VlIGFib3V0IHRoZSBuYWl2ZSB3YXkgb2YgZ2V0dGluZyBy ZWd1bGFyIHN0YXIgdHJpYW5ndWxhdGlvbnMgCiAgLS0gaS5lLiB3ZSBhZGQgaW4gdGhlIG9yaWdp bgogIAogIHB0czEgPSAge3stMSwwLDAsLTF9LHstMSwwLDEsLTF9LHstMSwwLDEsMH0sey0xLDEs MCwtMX0sey0xLDEsMCwwfSx7LTEsMSwxLDJ9LHsxLC0xLDAsLTF9LHsxLDAsLTEsMX0sezEsLTEs LTEsLTF9LHswLDAsMCwtMX0sezAsMCwwLDB9fQogIEExID0gdHJhbnNwb3NlIG1hdHJpeCBwdHMx CiAgLS1lbGFwc2VkVGltZSB0cmlzMSA9IGFsbFRyaWFuZ3VsYXRpb25zKEExLCBGaW5lPT50cnVl LCBDb25uZWN0ZWRUb1JlZ3VsYXI9PnRydWUsIFJlZ3VsYXJPbmx5PT5mYWxzZSk7IC0tIAogIGVs YXBzZWRUaW1lIHRyaXMxID0gYWxsVHJpYW5ndWxhdGlvbnMoQTEsIEZpbmU9PmZhbHNlLCBDb25u ZWN0ZWRUb1JlZ3VsYXI9PnRydWUsIFJlZ3VsYXJPbmx5PT5mYWxzZSk7IC0tIAogIGZpbmVUcmlz MSA9IHNlbGVjdCh0cmlzMSwgeCAtPiAjIHVuaXF1ZSBmbGF0dGVuIHggPT0gbnVtQ29sdW1ucyBB MSk7CiAgcmVnVHJpczEgPSBzZWxlY3QodHJpczEsIHggLT4gaXNSZWd1bGFyVHJpYW5ndWxhdGlv bihBMSwgeCkpOyAgCiAgZmluZVJlZ1RyaXMxID0gc2VsZWN0KHJlZ1RyaXMxLCB4IC0+ICMgdW5p cXVlIGZsYXR0ZW4geCA9PSBudW1Db2x1bW5zIEExKTsKICBzdGFyczEgPSBzZWxlY3QodHJpczEs IHggLT4gYWxsKHgsIHgxIC0+IG1lbWJlcigxMCwgeDEpKSk7IC0tIDEwMCBoZXJlCiAgc3RhcnNG aW5lMSA9IHNlbGVjdChzdGFyczEsIHggLT4gIyB1bmlxdWUgZmxhdHRlbiB4ID09IG51bUNvbHVt bnMgQTEpOwogIFJTVCA9IHNlbGVjdChzdGFyczEsIHggLT4gaXNSZWd1bGFyVHJpYW5ndWxhdGlv bihBMSx4KSk7IC0tIDgwIGhlcmUuLi4KICBGU1JUID0gc2VsZWN0KHN0YXJzRmluZTEsIHggLT4g aXNSZWd1bGFyVHJpYW5ndWxhdGlvbihBMSx4KSk7IC0tIDQ4IGhlcmUuLi4hCgoKICB1bmlxdWUg Zm9yIHRyaSBpbiBzZXQ1IGxpc3QgKAogICAgICB0cmkxIDo9IGZpbmVTdGFyVHJpYW5ndWxhdGlv bihBLCB0cmkpOwogICAgICBuZXd0cmkgOj0gZm9yIHQgaW4gdHJpMSBsaXN0IGFwcGVuZCh0LCAx MCk7CiAgICAgIG5ld3RyaQogICAgICApOwogIHNlbGVjdChvbywgdHJpIC0+IGlzUmVndWxhclRy aWFuZ3VsYXRpb24oQTEsIHRyaSkpICAKCiAgLS0gbGV0J3MgdGVzdCB0aGlzIG9uZSBmb3IgYmVp bmcgYSB0cmlhbmd1bGF0aW9uOgogIG9BID0gb3JpZW50ZWRDaXJjdWl0cyBBCiAgdHJpID0gc2V0 NV8zCiAgdGFsbHkgZmxhdHRlbiBmb3IgdCBpbiB0cmkgbGlzdCBzdWJzZXRzKHQsNCkKICBmb3Ig eiBpbiBvQSBsaXN0ICgKICAgICAgIyBzZWxlY3QodHJpLCB0IC0+IGlzU3Vic2V0KHpfMCwgdCkp LAogICAgICAjIHNlbGVjdCh0cmksIHQgLT4gaXNTdWJzZXQoel8xLCB0KSkKICAgICAgKQogIC0t IHRvZG86CiAgLS0gMS4gcm91dGluZSB0byBjaGVjayB0aGF0IGEgdHJpYW5ndWxhdGlvbiBpcyBh IHRyaWFuZ3VsYXRpb24KICAtLSAyLiByb3V0aW5lIHRvIHR1cm4gYSByZWd1bGFyLCBmaW5lIHRy aWFuZ3VsYXRpb24sIGludG8gYSBzdGFyIChmaW5lLCByZWd1bGFyKSB0cmlhbmd1bGF0aW9uLiBI b3cgZ2VuZXJhbCBpcyB0aGlzPyBET05FLCBJIHRoaW5rLgogIC0tIDMuIHBlcmZvcm0gYmlzdGVs bGFyIGZsaXBzIHRvIGdldCBuZXcgdHJpYW5ndWxhdGlvbnMuCi8vLwoKLy8vCiAgcmVzdGFydAog IG5lZWRzUGFja2FnZSAiUmVmbGV4aXZlUG9seXRvcGVzREIiCiAgbmVlZHNQYWNrYWdlICJUb3Bj b20iICAKICBuZWVkc1BhY2thZ2UgIlBvbHloZWRyYSIKIHN0ciA9ICI0IDE4ICBNOjUzIDE4IE46 MTEgMTAgSDo2LDQ1IFstNzhdCiAgICAgICAgMSAgIDAgICAwICAtMiAgIDAgICAyICAgMSAgIDMg IC0yICAgMiAgLTIgICAyICAgMyAgLTEgICAwICAtMiAgIDAgIC0xCiAgICAgICAgMCAgIDEgICAw ICAgMiAgIDAgICAwICAgMSAgLTIgICAxICAtMiAgIDAgICAwICAtMSAgIDAgIC0yICAgMCAgLTIg IC0xCiAgICAgICAgMCAgIDAgICAxICAgMSAgIDAgIC0xICAtMSAgLTIgICAyICAtMiAgIDAgIC0y ICAtMiAgIDIgIC0xICAgMiAgIDEgICAyCiAgICAgICAgMCAgIDAgICAwICAgMCAgIDEgIC0xICAt MSAgIDAgIC0xICAgMSAgIDEgIC0xICAtMSAgLTEgICAyICAtMSAgIDAgIC0xIgogc3RyID0gIjQg MTIgIE06NTAgMTIgTjoxMSA5IEg6Niw0NCBbLTc2XQogICAgICAgIDEgICAxICAgMSAgLTEgIC0x ICAgMCAgIDIgIC0zICAtMiAgIDMgIC01ICAgMQogICAgICAgIDAgICAyICAgMCAgLTIgICAwICAg MCAgIDEgIC0zICAtMiAgIDQgIC01ICAgNAogICAgICAgIDAgICAwICAgMiAgIDAgIC0yICAgMCAg IDIgIC0zICAgMCAgIDIgIC0zICAgMAogICAgICAgIDAgICAwICAgMCAgIDAgICAwICAgMSAgLTEg ICAxICAgMSAgLTIgICAxICAtMiIKIEEgPSBtYXRyaXhGcm9tU3RyaW5nIGxhc3QgZmlyc3QgcGFy c2VLUyBzdHIKIEEgPSBtYXRyaXggZmlyc3Qga3JldXplclNrYXJrZSBzdHIKIFAgPSBjb252ZXhI dWxsIEEKIFAyID0gcG9sYXIgUAogQTEgPSB2ZXJ0aWNlcyBQMgogTFAgPSBtYXRyaXh7c2VsZWN0 KGxhdHRpY2VQb2ludHMgUDIsIHggLT4geCAhPSAwKX0KIG51bVRyaWFuZ3VsYXRpb25zKExQLCBG aW5lID0+IHRydWUpCiBhbGxUcmlhbmd1bGF0aW9ucyhMUCwgRmluZT0+dHJ1ZSk7CiBudW1Ucmlh bmd1bGF0aW9ucyhMUCkKIGFsbFRyaWFuZ3VsYXRpb25zKExQKTsKCi8vLwoKZW5kLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKcmVzdGFydAp1bmlu c3RhbGxQYWNrYWdlICJUb3Bjb20iCnJlc3RhcnQKY2hlY2sgIlRvcGNvbSIKcmVzdGFydAppbnN0 YWxsUGFja2FnZSAiVG9wY29tIgpuZWVkc1BhY2thZ2UgIlRvcGNvbSIKCgpURVNUIC8vLyAKICAt LSBwb2ludHMyY2hpcm8KICB0b3BwYXRoID0gIi9Vc2Vycy9taWtlL3NyYy9NMi1tYXN0ZXIvTTIv QlVJTEQvZGFuL2J1aWxkcy50bXAvYXMtbXRoLWluZGlnby5sb2NhbC1tYXN0ZXIvbGlicmFyaWVz L3RvcGNvbS9idWlsZC90b3Bjb20tMC4xNy44L3NyYy8iCiAgQSA9IHRyYW5zcG9zZSBtYXRyaXgg e3stMSwtMSwxfSx7LTEsMSwxfSx7MSwtMSwxfSx7MSwxLDF9LHswLDAsMX19CiAgdHJpID0ge3sw LCAyLCA0fSwgezIsIDMsIDR9LCB7MCwgMSwgNH0sIHsxLCAzLCA0fX0KICBydW4gKHRvcHBhdGh8 Ii9wb2ludHMyY2hpcm8ifCIgLWgiKQogICJ0b3Bjb21mb28uaW4iIDw8IHRvcGNvbVBvaW50cyhB LCBIb21vZ2VuaXplPT5mYWxzZSkgPDwgZW5kbCA8PCBjbG9zZTsKICBjaGlybyA9IGdldCAoIiEi fHRvcHBhdGh8Ii9wb2ludHMyY2hpcm8ifCIgPHRvcGNvbWZvby5pbiIpCiAgI2NoaXJvCiAgY2hp cm8yID0gIjUsMzpcbiIgfCAoY29uY2F0ZW5hdGUgZm9yIHMgaW4gc29ydCBzdWJzZXRzKDUsMykg bGlzdCAoCiAgICAgIGQgOj0gZGV0IEFfczsKICAgICAgaWYgZCA+IDAgdGhlbiAiKyIgZWxzZSBp ZiBkID09IDAgdGhlbiAiMCIgZWxzZSAiLSIKICAgICAgKSkgfCAiXG4iCiAgY2hpcm8gPT0gY2hp cm8yCiAgLS0gbm90ZXM6IGEgY2hpcm90b3BlIGZvciB0b3Bjb206CiAgLS0gIDUsMzogIChudW1i ZXIgb2YgdmVydGljZXMsIGRpbSkKICAtLSAgYSBzdHJpbmcgb2YgIi0iLCIrIiwiMCIsIG1heWJl IGN1dCBvdmVyIGEgbnVtYmVyIG9mIGxpbmVzLgogIC0tIHNob3VsZCB3ZSBtYWtlIGEgdHlwZSBv dXQgb2YgdGhpcyAoc28gd2UgY2FuIHJlYWQgYW5kIHdyaXRlIGl0IHRvIGEgZmlsZSkKCiAgLS0g Y2hpcm8yY2lyY3VpdHMKICAidG9wY29tZm9vLmluIiA8PCBjaGlybyA8PCBlbmRsIDw8IFtdIDw8 IGVuZGwgPDwgY2xvc2U7CiAgY2lyY3MgPSBnZXQgKCIhInx0b3BwYXRofCIvY2hpcm8yY2lyY3Vp dHMifCIgIDx0b3Bjb21mb28uaW4iKQogIGNvY2lyY3MgPSBnZXQgKCIhInx0b3BwYXRofCIvY2hp cm8yY29jaXJjdWl0cyJ8IiAgPHRvcGNvbWZvby5pbiIpCiAgZHJvcChkcm9wKGNpcmNzLCAyKSwg LTEpCiAgb28vdmFsdWUKCmNoaXJvID0gIjUsIDM6IgoKcjEyJ2NoaXJvID0gIjEyLCA0OgotKy0t KysrLS0tKystLS0rKy0rLS0tKystKysrLS0tLS0rKy0tKystKysrKy0tKystLS0rKystKysrLS0r LS0tKystLS0rKy0tKystKysrKwotLSstLS0rKy0rKystLSsrKy0tKystLSstLS0tKy0rKystLSsr Ky0tKystLSstLS0tKy0tLSsrLS0rKy0rKysrLSsrLS0rLS0tLS0rLS0tLQotKystLS0rKy0tLSsr Ky0rKystLSstLS0rKy0tLSsrLS0rKy0rKysrLS0rLS0tKystKysrLS0rKystLSsrLS0rLS0tLSst KysrLS0rKystLQorKy0tKy0tLS0rLS0tKystLSsrLSsrKystLS0rKy0rKysrKy0rKysrKy0tKysr Ky0tLSsrLSsrKy0tKysrLS0rKy0tKy0tLS0rLSsrKy0tKworKy0tKystLSstLS0tKy0tLSsrLS0r Ky0rKysrLS0tKystKysrKystKysrKystLSsrKy0tLSsrLS0tKystLSsrLSsrKystKysrLS0rKy0t KwotLS0tKysrLS0rLS0tLS0rLS0tLS0rKy0tKysrLS0rKy0tKy0tLS0rKystLSstLS0tLSstLS0t LSsrLS0tLSsrLSsrKysrLSsrKysrLS0rKwotLS0tLS0tLSsrLS0rKy0KIgogIGNoaXJvID0gcjEy J2NoaXJvCiAgLS0gY2hpcm8yYWxsdHJpYW5ncywgY2hpcm8ybmFsbHRyaWFuZ3MKICAidG9wY29t Zm9vLmluIiA8PCAiNSwgMzoiIDw8IGVuZGwgPDwgY2hpcm8gPDwgZW5kbCA8PCBbXSA8PCBlbmRs IDw8IGNsb3NlOwogICJ0b3Bjb21mb28uaW4iIDw8IGNoaXJvIDw8IFtdIDw8IGVuZGwgPDwgY2xv c2U7CiAgZ2V0ICgiISJ8dG9wcGF0aHwiL2NoaXJvMnBsYWNpbmd0cmlhbmcifCIgLXYgPHRvcGNv bWZvby5pbiIpCiAgZ2V0ICgiISJ8dG9wcGF0aHwiL2NoaXJvMmNpcmN1aXRzInwiIDx0b3Bjb21m b28uaW4iKQogIGdldCAoIiEifHRvcHBhdGh8Ii9jaGlybzJjb2NpcmN1aXRzInwiIDx0b3Bjb21m b28uaW4iKQogIGdldCAoIiEifHRvcHBhdGh8Ii9jaGlybzJhbGx0cmlhbmdzInwiIDx0b3Bjb21m b28uaW4iKQogIGdldCAoIiEifHRvcHBhdGh8Ii9jaGlybzJudHJpYW5ncyJ8IiA8dG9wY29tZm9v LmluIikKICBnZXQgKCIhInx0b3BwYXRofCIvY2hpcm8yZmluZXRyaWFuZyJ8IiA8dG9wY29tZm9v LmluIikKICBnZXQgKCIhInx0b3BwYXRofCIvY2hpcm8yZmluZXRyaWFuZ3MifCIgPHRvcGNvbWZv by5pbiIpIC0tIHdoYXQgaXMgdGhlIGZvcm1hdCBvZiB0aGUgb3V0cHV0IGhlcmU/PwogIGdldCAo IiEifHRvcHBhdGh8Ii9jaGlybzJuZmluZXRyaWFuZ3MifCIgLXYgPHRvcGNvbWZvby5pbiIpCiAg Ci8vLwoKVEVTVCAvLy8KICByZXN0YXJ0CiAgZGVidWcgbmVlZHNQYWNrYWdlICJUb3Bjb20iCiAg bmVlZHNQYWNrYWdlICJSZWZsZXhpdmVQb2x5dG9wZXNEQiIKICBuZWVkc1BhY2thZ2UgIlN0cmlu Z1RvcmljcyIKICBwb2x5dG9wZXMgPSBrcmV1emVyU2thcmtlKDUwLCBMaW1pdD0+MTApOwogIHRv cGUgPSBwb2x5dG9wZXNfNQogIEEgPSBtYXRyaXggdG9wZQogIFAgPSBjb252ZXhIdWxsIEEKICBQ MiA9IHBvbGFyIFAKICBBID0gbWF0cml4e2xhdHRpY2VQb2ludHMgUDJ9CgogIExQID0gZHJvcChs YXR0aWNlUG9pbnRMaXN0IFAyLCAtMSk7CiAgQSA9IHRyYW5zcG9zZSBtYXRyaXggTFA7CiAgZGVi dWdMZXZlbCA9IDYKICBlbGFwc2VkVGltZSB0cmkgPSByZWd1bGFyRmluZVRyaWFuZ3VsYXRpb24g QTsKICAKICAtLSBYWFgKICBhdWdtZW50IEEKICAidG9wY29tZm9vLmluIiA8PCB0b3Bjb21Qb2lu dHMoYXVnbWVudCBBLCBIb21vZ2VuaXplPT5mYWxzZSkgPDwgZW5kbCA8PCBjbG9zZTsKICBjaGly byA9IGdldCAoIiEifHRvcHBhdGh8Ii9wb2ludHMyY2hpcm8ifCIgPHRvcGNvbWZvby5pbiIpCgog ICJ0b3Bjb21mb28uaW4iIDw8IGNoaXJvIDw8ICJbXSIgPDwgZW5kbCA8PCBjbG9zZTsKICBnZXQg KCIhInx0b3BwYXRofCIvY2hpcm8yY2lyY3VpdHMifCIgPHRvcGNvbWZvby5pbiIpCiAgZ2V0ICgi ISJ8dG9wcGF0aHwiL2NoaXJvMm50cmlhbmdzInwiIDx0b3Bjb21mb28uaW4iKQogIC0tZ2V0ICgi ISJ8dG9wcGF0aHwiL2NoaXJvMmFsbHRyaWFuZ3MifCIgIDx0b3Bjb21mb28uaW4iKQogIGdldCAo IiEifHRvcHBhdGh8Ii9jaGlybzJjb2NpcmN1aXRzInwiIDx0b3Bjb21mb28uaW4iKSAgICAKLy8v CgpURVNUIC8vLwotLSBob3cgdG8gY2hlY2sgYSB0cmlhbmd1bGF0aW9uPyAgSSBkb24ndCB0aGlu ayB0aGF0IFRvcGNvbSBoYXMgdGhpcyBpbXBsZW1lbnRlZCBmb3IgZ2VuZXJhbCB1c2UuCi0qCiAg cmVzdGFydAogIGRlYnVnIG5lZWRzUGFja2FnZSAiVG9wY29tIgoqLQogIC0tIHRlc3Qgb2YgaXNS ZWd1bGFyVHJpYW5ndWxhdGlvbgogIHRvcHBhdGggPSAiL1VzZXJzL21pa2Uvc3JjL00yLW1hc3Rl ci9NMi9CVUlMRC9kYW4vYnVpbGRzLnRtcC9hcy1tdGgtaW5kaWdvLmxvY2FsLW1hc3Rlci9saWJy YXJpZXMvdG9wY29tL2J1aWxkL3RvcGNvbS0wLjE3Ljgvc3JjLyIKICBBID0gdHJhbnNwb3NlIG1h dHJpeCB7ey0xLC0xLDF9LHstMSwxLDF9LHsxLC0xLDF9LHsxLDEsMX0sezAsMCwxfX0KICBiYWR0 cmkgPSB7ezAsIDIsIDR9LCB7MiwgMywgNH0sIHswLCAxLCA0fSwgezEsIDJ9fQogIGRlYnVnTGV2 ZWwgPSA2CgogIC0tIGEgcmVndWxhciB0cmlhbmd1bGF0aW9uCiAgQSA9IHRyYW5zcG9zZSBtYXRy aXgge3swLDN9LHswLDF9LHstMSwtMX0sezEsLTF9LHstNCwtMn0sezcsLTJ9fQogIHRyaSA9IHt7 MCwxLDJ9LCB7MSwzLDV9LCB7MiwzLDR9LAogICAgICAgICB7MCwxLDV9LCB7MCwyLDR9LCB7Myw0 LDV9LAogICAgICAgICB7MSwyLDN9fQogICJ0b3Bjb21mb28uaW4iIDw8IHRvcGNvbVBvaW50cyhB LCBIb21vZ2VuaXplPT50cnVlKSA8PCBlbmRsIDw8ICJbXSIgPDwgZW5kbCA8PCB0cmkgPDwgZW5k bCA8PCBjbG9zZTsKICBydW4gKHRvcGNvbXBhdGh8ImNoZWNrcmVndWxhcml0eSJ8IiAtLWhlaWdo dHMgPHRvcGNvbWZvby5pbiA+dG9wY29tZm9vLm91dCIpICAKCiAgLS0gcG9pbnRzMmNoaXJvCiAg InRvcGNvbWZvby5pbiIgPDwgdG9wY29tUG9pbnRzKEEsIEhvbW9nZW5pemU9PmZhbHNlKSA8PCBl bmRsIDw8ICJbXSIgPDwgZW5kbCA8PCBiYWR0cmkgPDwgZW5kbCA8PCBjbG9zZTsKICBwcmludCAo dG9wcGF0aHwiL3BvaW50czJhbGx0cmlhbmdzInwiIC0tY2hlY2t0cmlhbmcgLXYgPHRvcGNvbWZv by5pbiIpIAoKCiAgQSA9IHRyYW5zcG9zZSBtYXRyaXgge3swLDN9LHswLDF9LHstMSwtMX0sezEs LTF9LHstNCwtMn0sezQsLTJ9fQogIHRyaSA9IHt7MCwxLDJ9LCB7MSwzLDV9LCB7MiwzLDR9LAog ICAgICAgICB7MCwxLDV9LCB7MCwyLDR9LCB7Myw0LDV9LAogICAgICAgICB7MSwyLDN9fQogICJ0 b3Bjb21mb28uaW4iIDw8IHRvcGNvbVBvaW50cyhBLCBIb21vZ2VuaXplPT50cnVlKSA8PCBlbmRs IDw8ICJbXSIgPDwgZW5kbCA8PCB0cmkgPDwgZW5kbCA8PCBjbG9zZTsKICBydW4gKHRvcGNvbXBh dGh8ImNoZWNrcmVndWxhcml0eSJ8IiAtLWhlaWdodHMgPHRvcGNvbWZvby5pbiA+dG9wY29tZm9v Lm91dCIpCiAgYXNzZXJ0IG5vdCBpc1JlZ3VsYXJUcmlhbmd1bGF0aW9uKEEsdHJpKQoKLy8vCgoK ZW5kLS0KCnJlc3RhcnQKdW5pbnN0YWxsUGFja2FnZSAiVG9wY29tIgpyZXN0YXJ0Cm5lZWRzUGFj a2FnZSAiVG9wY29tIgppbnN0YWxsUGFja2FnZSAiVG9wY29tIgpyZXN0YXJ0CmNoZWNrICJUb3Bj b20iCnZpZXdIZWxwCgovLy8KLS0gZ2VuZXJhdGUgZXhhbXBsZXMgdG8gdXNlIGZvciB0aGlzIHBh Y2thZ2UKLS0gZnJvbSByZWZsZXhpdmUgcG9seXRvcGVzIG9mIGRpbSA0CiAgcmVzdGFydAogIG5l ZWRzUGFja2FnZSAiU3RyaW5nVG9yaWNzIgoKICBzdHIgPSBnZXRLcmV1emVyU2thcmtlKDEwLCBM aW1pdD0+NSkKICBzdHIgPSBnZXRLcmV1emVyU2thcmtlKDIwLCBMaW1pdD0+NSkKICBzdHIgPSBn ZXRLcmV1emVyU2thcmtlKDMwLCBMaW1pdD0+NSkKICBwb2x5dG9wZXMgPSBwYXJzZUtTIHN0cgog IHRvcGUgPSBwb2x5dG9wZXNfNF8xCiAgQSA9IG1hdHJpeEZyb21TdHJpbmcgdG9wZQogIFAgPSBj b252ZXhIdWxsIEEKICBQMiA9IHBvbGFyIFAKICBMUCA9IGRyb3AobGF0dGljZVBvaW50TGlzdCBQ MiwgLTEpCiAgQTEgPSB0cmFuc3Bvc2UgbWF0cml4IExQCiAgQTIgPSB0cmFuc3Bvc2UgbWF0cml4 IGxhdHRpY2VQb2ludExpc3QgUDIKICB0cmkgPSByZWd1bGFyRmluZVRyaWFuZ3VsYXRpb24gQTEK ICB0cmkyID0gcmVndWxhckZpbmVUcmlhbmd1bGF0aW9uIEEyCiAgI3RyaQogICN0cmkyCiAgZWxh cHNlZFRpbWUgY2hpcm8xID0gY2hpcm90b3BlIEExOwogIGVsYXBzZWRUaW1lIGNoaXJvMiA9IGNo aXJvdG9wZSBBMjsKICBlbGFwc2VkVGltZSAjIG9yaWVudGVkQ2lyY3VpdHMgY2hpcm8xCiAgZWxh cHNlZFRpbWUgIyBvcmllbnRlZENpcmN1aXRzIGNoaXJvMgogIGVsYXBzZWRUaW1lICMgb3JpZW50 ZWRDb2NpcmN1aXRzIGNoaXJvMQogIGVsYXBzZWRUaW1lICMgb3JpZW50ZWRDb2NpcmN1aXRzIGNo aXJvMgogIChzZWxlY3Qob3JpZW50ZWRDb2NpcmN1aXRzIEEyLCBmIC0+ICNmIzAgPT0gMCBvciAj ZiMxID09IDApKS9maXJzdAogIG5ldExpc3QgYW5ub3RhdGVkRmFjZXMgUDIgIAogIHRyaTIKICAt LSBmaW5lOgogIGFzc2VydChzb3J0IHVuaXF1ZSBmbGF0dGVuIHRyaTIgPT0gdG9MaXN0ICgwLi4x NCkpCiAgd2FsbHMgPSB0cmkyLyh4IC0+IHN1YnNldHMoeCwgI3gtMSkpLy9mbGF0dGVuCiAgbmZh Y2V0cyA9IHRhbGx5IHdhbGxzCiAgZmFjcyA9IChzZWxlY3QoKGFubm90YXRlZEZhY2VzIFAyKSwg eCAtPiB4XzAgPT0gMykpLyh4IC0+IHgjMikKICB3YWxscyA9IHBhcnRpdGlvbihrIC0+IG5mYWNl dHMjaywga2V5cyBuZmFjZXRzKQogIGZvciB3IGluIHdhbGxzIzEgbGlzdCAoCiAgICAgICMgc2Vs ZWN0KGZhY3MsIGYgLT4gaXNTdWJzZXQodywgZikpCiAgICAgICkKICBmb3IgdyBpbiB3YWxscyMy IGxpc3QgKAogICAgICAjIHNlbGVjdChmYWNzLCBmIC0+IGlzU3Vic2V0KHcsIGYpKQogICAgICAp CiAgLS0gY2hlY2sgb3ZlcmxhcHMgb2YgZWxlbWVudHMgb2YgdHJpMjoKICBDID0gb3JpZW50ZWRD aXJjdWl0cyBBMjsKICBlbGFwc2VkVGltZSBmb3IgYyBpbiBDIGxpc3QgKAogICAgICB2YWwxIDo9 IHNlbGVjdCh0cmkyLCB4IC0+IGlzU3Vic2V0KGNfMCwgeCkpOwogICAgICB2YWwyIDo9IHNlbGVj dCh0cmkyLCB4IC0+IGlzU3Vic2V0KGNfMSwgeCkpOwogICAgICBpZiAjdmFsMSA+IDAgYW5kICN2 YWwyID4gMCB0aGVuIHByaW50IChjLCB2YWwxLCB2YWwyKTsKICAgICAgKGMsICN2YWwxLCAjdmFs MikpOwogIAogIHRyaV8wCiAgCi8vLwogIApkb2MgLy8vCktleQpIZWFkbGluZQpVc2FnZQpJbnB1 dHMKT3V0cHV0cwpDb25zZXF1ZW5jZXMKRGVzY3JpcHRpb24KICBUZXh0CiAgRXhhbXBsZQogIENv ZGUKICBQcmUKQ2F2ZWF0ClNlZUFsc28KLy8vCgo= --00000000000080a3b105e054136f-- From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 31 May 2022 20:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: "Daniel R. Grayson" Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.16540279753245 (code B ref 55744); Tue, 31 May 2022 20:13:01 +0000 Received: (at 55744) by debbugs.gnu.org; 31 May 2022 20:12:55 +0000 Received: from localhost ([127.0.0.1]:48984 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw8EZ-0000qH-6B for submit@debbugs.gnu.org; Tue, 31 May 2022 16:12:55 -0400 Received: from quimby.gnus.org ([95.216.78.240]:59780) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw8EU-0000py-7B for 55744@debbugs.gnu.org; Tue, 31 May 2022 16:12:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=qP3eUbTNa3L22qBIo+jBxAdGmWNhOAayhefMYP/OGFM=; b=Tl+PYrNRHAfvzIETmz2WWYg5z2 cLJS7jupZfbZz+hqvtJUMvahCAVzjxoWNJQKGDYPXD/T6VFAevv/uJYcg935WaUOyONOjbsTfny0K WfH1YbKKF3yNqhcJuRpItXNsUQNiCDvxzeRNg60pUVgECv3KVE0QiNefXrP+Wv2W1JCE=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nw8EL-0001Nq-5h; Tue, 31 May 2022 22:12:43 +0200 From: Lars Ingebrigtsen References: Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEUxZCYRFA5PXjBb jlGmmnn///8xHCDOAAAAAWJLR0QF+G/pxwAAAAd0SU1FB+YFHxQMBpKqexMAAAG4SURBVDjLddRR luogDAbgQGcBBWcBNHUBlHQBHmH/a7p/AmI9zuVBbb8mJEAlF/pYiciFiF8b6zW9wSvo5YTI+FIg 5zcNGRCZGV/kEeJfCQwCcwLQTsQWETcDpIwJqYg7xE8g8nvqwGzgAGzgB0QeEcwGu8KhEw+wqqhH pGPTG6gYDbzAxrGSNoLOiPBE0u4wMh24tuZthfA5wduCKayr9rB08Ie3iBg0EnNq19C8HDSWlXzC 84nEgC6AXJq7fAGKJ19AE6jDkil0SAqPCbZTosAD+p5Yxg6iVT1o5yt4g13hLDThJpjJVzpTh/gB C4B2wJPu7g1PA5FK90o/ecJZX+B2FEEDfmurXqFKDlKcXOCxGCzZqU1oBvmsP9ntBHBXaLnVMzvc mXC/QMANSZ9QW6u2HJh/QhaDh8GatzcQtSotj9M+IloHkZFqvjgAbO25Syu1cJmAapsknJ184lTH bcKJarC65CiHcE2FgGon8hY+4LdPQWHdPiCi/qfTgDW8atXXAJuQ2nOcmbBy2DdhASySC7ooKIeX civ9f0HPFZZSFqpF4ra6yxz99Qhfg1z4e3T4f8R33D8WfV8c5FBkLAAAACV0RVh0ZGF0ZTpjcmVh dGUAMjAyMi0wNS0zMVQyMDoxMjowNiswMDowMKZxFrcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjIt MDUtMzFUMjA6MTI6MDYrMDA6MDDXLK4LAAAAAElFTkSuQmCC X-Now-Playing: =?UTF-8?Q?M=C3=B8ster!'s?= _When You Cut Into The Present_: "Bandha" Date: Tue, 31 May 2022 22:12:40 +0200 In-Reply-To: (Daniel R. Grayson's message of "Tue, 31 May 2022 12:49:35 -0700") Message-ID: <878rqh4g1z.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: "Daniel R. Grayson" writes: > The attached file contains the string "end--" in two places. When > searching for that string with M-x isearch-forward (C-s) in that file, > just after opening the file, starting from the top of the [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) "Daniel R. Grayson" writes: > The attached file contains the string "end--" in two places. When > searching for that string with M-x isearch-forward (C-s) in that file, > just after opening the file, starting from the top of the file, it > often happens, that after positioning the cursor at the first "end" in > the file, it displays "end-" on the mode line and then goes into an > infinite loop, not responding to further input or making any further > progress on the search. I'm unable to reproduce this in Emacs 28.1 (on Debian/bookworm). Is this with "emacs -Q"? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: "Daniel R. Grayson" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 31 May 2022 20:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Lars Ingebrigtsen Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.16540288064683 (code B ref 55744); Tue, 31 May 2022 20:27:02 +0000 Received: (at 55744) by debbugs.gnu.org; 31 May 2022 20:26:46 +0000 Received: from localhost ([127.0.0.1]:48998 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw8Ry-0001DS-44 for submit@debbugs.gnu.org; Tue, 31 May 2022 16:26:46 -0400 Received: from mail-lf1-f53.google.com ([209.85.167.53]:37622) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw8Ru-0001DB-8Q for 55744@debbugs.gnu.org; Tue, 31 May 2022 16:26:44 -0400 Received: by mail-lf1-f53.google.com with SMTP id h23so1628801lfe.4 for <55744@debbugs.gnu.org>; Tue, 31 May 2022 13:26:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=wqLMlfyIDcOnwMTOJPHEfdvBwfBuPfKEEZLLaN1HKUw=; b=dKcn39qiyUchIWpPSMdtu1byavO6aSeZKDOEsvthqd2sxiKB6rrwgyhsMsPcyVy2gH 2lGIgQslTpXk9pxBHGjugsfgW81I1HtUcyoXGgU0XZ77am+65+0mQYSp+pc63dPNmo2S Es9+RWlIWLzTnp4TR8Sh0jgsvKLed1NCIEVPC2XB2f3HOyMew/obgzqKYckPR8Qc+e9g eMkRr5wuxZN1As7f5mvVWSbvvWUoUuVAK62vB7LbBt7wv+c2BTAmCg2w44TD39RtgsBm lX6KBPNGiZJug6GU6sCav84NOmwb1IjdJSQT+2PY6Arlb0malHOLlR8obOFo22XBp5Fd 4bJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=wqLMlfyIDcOnwMTOJPHEfdvBwfBuPfKEEZLLaN1HKUw=; b=tgTfCvdjnOzZvtjFCVGbtY32/X/xjusNuMSB4V7Ur/9APzg1h2QkerByKGHso0E5QB Ktr1HMlmHm6xyzh2G/jzKQ5OCznOkHHOhkBUJCOv69rIXJjasy4zql/v4RvfOi7C/gRF StA4qJNeI0u4+lvCKODrN6fPqBSjiE0ZaU9yFiDfJBO/gAgVXrJkGLxgti0QasroSK0q g7OmQcxjUp9NnTAjrKUfLOEza7LFGuueYhWTJI0zPIbHRrOTfTW+O1CpirrXxnE+LmuF kpTolnyidGThrdnAO6jx9c6getcN8pW5BwiwWzHJaOs4CfodABeMUBn1xkZBnoEamiVB 44YA== X-Gm-Message-State: AOAM530Mj5QgoLEaMUx/MkU764W6t3zP1qS3bWcSUED6sBLYqu/YapAk xLNGoDN4Kj+FFLq1tUBJnv1Gd6uwX7fsLKd0urs= X-Google-Smtp-Source: ABdhPJynVqvrB87lNy5Is7L4AiJ52CWY/239NdzVYMunSV3+waPL+IGnQSejkohrniyKGBz9QhfjBYe5Vs4k9dU2hHM= X-Received: by 2002:a05:6512:b0f:b0:474:18c:8b9e with SMTP id w15-20020a0565120b0f00b00474018c8b9emr45620072lfu.354.1654028796056; Tue, 31 May 2022 13:26:36 -0700 (PDT) MIME-Version: 1.0 References: <878rqh4g1z.fsf@gnus.org> In-Reply-To: <878rqh4g1z.fsf@gnus.org> From: "Daniel R. Grayson" Date: Tue, 31 May 2022 13:26:19 -0700 Message-ID: Content-Type: multipart/alternative; boundary="000000000000d65a6505e0549643" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000d65a6505e0549643 Content-Type: text/plain; charset="UTF-8" Nope, no command line options. On Tue, May 31, 2022 at 1:12 PM Lars Ingebrigtsen wrote: > "Daniel R. Grayson" writes: > > > The attached file contains the string "end--" in two places. When > > searching for that string with M-x isearch-forward (C-s) in that file, > > just after opening the file, starting from the top of the file, it > > often happens, that after positioning the cursor at the first "end" in > > the file, it displays "end-" on the mode line and then goes into an > > infinite loop, not responding to further input or making any further > > progress on the search. > > I'm unable to reproduce this in Emacs 28.1 (on Debian/bookworm). Is > this with "emacs -Q"? > > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no > --000000000000d65a6505e0549643 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Nope, no command line options.

On Tue, May 31, 2022 at 1:12= PM Lars Ingebrigtsen <larsi@gnus.org<= /a>> wrote:
&= quot;Daniel R. Grayson" <danielrichardgrayson@gmail.com> writes:
> The attached file contains the string "end--" in two places.= =C2=A0 When
> searching for that string with M-x isearch-forward (C-s) in that file,=
> just after opening the file, starting from the top of the file, it
> often happens, that after positioning the cursor at the first "en= d" in
> the file, it displays "end-" on the mode line and then goes = into an
> infinite loop, not responding to further input or making any further > progress on the search.

I'm unable to reproduce this in Emacs 28.1 (on Debian/bookworm).=C2=A0 = Is
this with "emacs -Q"?

--
(domestic pets only, the antidote for overdose, milk.)
=C2=A0 =C2=A0bloggy blog: http://lars.ingebrigtsen.no
--000000000000d65a6505e0549643-- From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 31 May 2022 20:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: "Daniel R. Grayson" Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.16540289284890 (code B ref 55744); Tue, 31 May 2022 20:29:01 +0000 Received: (at 55744) by debbugs.gnu.org; 31 May 2022 20:28:48 +0000 Received: from localhost ([127.0.0.1]:49002 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw8Tv-0001Gm-He for submit@debbugs.gnu.org; Tue, 31 May 2022 16:28:48 -0400 Received: from quimby.gnus.org ([95.216.78.240]:59854) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw8Tp-0001GR-TK for 55744@debbugs.gnu.org; Tue, 31 May 2022 16:28:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=0cCC+hkLMGb9p9Y9Lt9S8SnyFwRHH/kfXUEwd+MqhqA=; b=uazHfS1OdgwBWcyb/uOg70iPTf bGXgbJrQekGJTlYvDTnEGsQr6JydfHS2WX4sTqL2sDp53fxoHObc4IyoQUhSqjy7zB05fYCBXyfwf YJF9NTST7d2dWyetOo1B0RkNFz++6U0N6RWvtfllWFZpK0OAigZPTuF99dG2fhnXrW6o=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nw8Th-0001ZW-7I; Tue, 31 May 2022 22:28:35 +0200 From: Lars Ingebrigtsen References: <878rqh4g1z.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEUxZCYRFA5PXjBb jlGmmnn///8xHCDOAAAAAWJLR0QF+G/pxwAAAAd0SU1FB+YFHxQMBpKqexMAAAG4SURBVDjLddRR luogDAbgQGcBBWcBNHUBlHQBHmH/a7p/AmI9zuVBbb8mJEAlF/pYiciFiF8b6zW9wSvo5YTI+FIg 5zcNGRCZGV/kEeJfCQwCcwLQTsQWETcDpIwJqYg7xE8g8nvqwGzgAGzgB0QeEcwGu8KhEw+wqqhH pGPTG6gYDbzAxrGSNoLOiPBE0u4wMh24tuZthfA5wduCKayr9rB08Ie3iBg0EnNq19C8HDSWlXzC 84nEgC6AXJq7fAGKJ19AE6jDkil0SAqPCbZTosAD+p5Yxg6iVT1o5yt4g13hLDThJpjJVzpTh/gB C4B2wJPu7g1PA5FK90o/ecJZX+B2FEEDfmurXqFKDlKcXOCxGCzZqU1oBvmsP9ntBHBXaLnVMzvc mXC/QMANSZ9QW6u2HJh/QhaDh8GatzcQtSotj9M+IloHkZFqvjgAbO25Syu1cJmAapsknJ184lTH bcKJarC65CiHcE2FgGon8hY+4LdPQWHdPiCi/qfTgDW8atXXAJuQ2nOcmbBy2DdhASySC7ooKIeX civ9f0HPFZZSFqpF4ra6yxz99Qhfg1z4e3T4f8R33D8WfV8c5FBkLAAAACV0RVh0ZGF0ZTpjcmVh dGUAMjAyMi0wNS0zMVQyMDoxMjowNiswMDowMKZxFrcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjIt MDUtMzFUMjA6MTI6MDYrMDA6MDDXLK4LAAAAAElFTkSuQmCC X-Now-Playing: =?UTF-8?Q?M=C3=B8ster!'s?= _When You Cut Into The Present_: "Journey" Date: Tue, 31 May 2022 22:28:32 +0200 In-Reply-To: (Daniel R. Grayson's message of "Tue, 31 May 2022 13:26:19 -0700") Message-ID: <874k154fbj.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: "Daniel R. Grayson" writes: > Nope, no command line options. I mean, can you reproduce this problem with "emacs -Q" (which makes Emacs start up without reading your init files)? Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) "Daniel R. Grayson" writes: > Nope, no command line options. I mean, can you reproduce this problem with "emacs -Q" (which makes Emacs start up without reading your init files)? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: "Daniel R. Grayson" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 31 May 2022 20:43:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Lars Ingebrigtsen Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.16540297726345 (code B ref 55744); Tue, 31 May 2022 20:43:01 +0000 Received: (at 55744) by debbugs.gnu.org; 31 May 2022 20:42:52 +0000 Received: from localhost ([127.0.0.1]:49008 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw8hX-0001eH-NK for submit@debbugs.gnu.org; Tue, 31 May 2022 16:42:51 -0400 Received: from mail-lj1-f180.google.com ([209.85.208.180]:36502) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nw8hW-0001e3-1l for 55744@debbugs.gnu.org; Tue, 31 May 2022 16:42:50 -0400 Received: by mail-lj1-f180.google.com with SMTP id g12so15833392lja.3 for <55744@debbugs.gnu.org>; Tue, 31 May 2022 13:42:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Kw5HqzSKo+oT4yWwNTrVSYN+3JpQCK810I0bGA1nS3o=; b=R+Uy82A9g+1XU/m/Fa9jyOzkcBGR0a6Jq/4GAd6AS8jI7eHOtK3aZX40DPu6ESGqZQ E/XN3HZZI2MvAZh96IYWCc8CCS4F1quXNIlTR1fQYD/O4V7rKA1QKKl2S7pXlPL5NnwV tmmCaz9a8X3adI75wBsveaSozDUbt9GkNYLULdVXQtUb71jNHXorwgV7QzqpTER2g1lL san/Mo2lkswj0XMzffaficSpghdG2/O/yDJI0Xi3KF6eqQ2E38PrRamACi1pJaDRubyS xZnn8H5ZeQMyJywtIWKX7K7P2un0JhkC6jMRdqvOEbt5ssY1MmCH3K/kwe2/l004z8an j7vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Kw5HqzSKo+oT4yWwNTrVSYN+3JpQCK810I0bGA1nS3o=; b=zA/lWUYc4d59DWhF4d5yyAYPa/MHt/hkbki6AepumYBwhThlNSEMshosrov29sMtGM Cbo387vDcHm4XTCiTkbcE8uazr4edXIJqYReu7OTBVpLxkmc36upaGCr4oVUNzoB99a+ 8Ye5RyQd1vZxPcnydo9BPgUG4qK5MrkFhKWvBDvfzoxFQuH2lgXLPW86spON/o4IK6FQ IlbMWXdzokmP6mTjFO4RjTOkWqf7yauPvU/mBqjZ5up4KMVA8RTPkL+eQL7FyTCRQZI7 e0G0kalwm6191Gvmb0ac77c493XDa1YkylMn7Qd7m8Qf6UQyCnUOprFlXhsfxxA4QPz0 yZ3Q== X-Gm-Message-State: AOAM533s1zpNxrBLYEG0RdAKUinEoG3QKaCbQEFyd6+TrhoyjIwxkqDz Xx2ZojAwsMPHJ07VV3nmd42ag6qgoVFYxa+t7gA= X-Google-Smtp-Source: ABdhPJyjZUXrXO8KCQTPle56LWbJC2EqKeihYGwzp9e9jRhdsCsoDw0WRMLktdm8GulclhK2bcja0hvhPH2fyV5MoJM= X-Received: by 2002:a2e:a36f:0:b0:253:d948:731c with SMTP id i15-20020a2ea36f000000b00253d948731cmr34931792ljn.159.1654029763968; Tue, 31 May 2022 13:42:43 -0700 (PDT) MIME-Version: 1.0 References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> In-Reply-To: <874k154fbj.fsf@gnus.org> From: "Daniel R. Grayson" Date: Tue, 31 May 2022 13:42:27 -0700 Message-ID: Content-Type: multipart/mixed; boundary="00000000000087d81e05e054d04a" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --00000000000087d81e05e054d04a Content-Type: multipart/alternative; boundary="00000000000087d81d05e054d048" --00000000000087d81d05e054d048 Content-Type: text/plain; charset="UTF-8" Ah, indeed, the bug doesn't seem to be reproducible with "-Q". I attach my .emacs and .emacs-Macaulay2. --00000000000087d81d05e054d048 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Ah, indeed, the bug doesn't seem to be reproducible wi= th "-Q".=C2=A0 I attach my .emacs and .emacs-Macaulay2.

<= /div>

--00000000000087d81d05e054d048-- --00000000000087d81e05e054d04a Content-Type: application/octet-stream; name=".emacs" Content-Disposition: attachment; filename=".emacs" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3umhjdf0 OzsgLSotIGNvZGluZzogdXRmLTggLSotCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsgQXF1YW1h Y3MgY3VzdG9tLWZpbGUgd2FybmluZzoKOzsgV2FybmluZzogQWZ0ZXIgbG9hZGluZyB0aGlzIC5l bWFjcyBmaWxlLCBBcXVhbWFjcyB3aWxsIGFsc28gbG9hZAo7OyBjdXN0b21pemF0aW9ucyBmcm9t IGBjdXN0b20tZmlsZScgKGN1c3RvbWl6YXRpb25zLmVsKS4gQW55IHNldHRpbmdzIHRoZXJlCjs7 IHdpbGwgb3ZlcnJpZGUgdGhvc2UgbWFkZSBoZXJlLgo7OyBDb25zaWRlciBtb3ZpbmcgeW91ciBz dGFydHVwIHNldHRpbmdzIHRvIHRoZSBQcmVmZXJlbmNlcy5lbCBmaWxlLCB3aGljaAo7OyBpcyBs b2FkZWQgYWZ0ZXIgYGN1c3RvbS1maWxlJzoKOzsgfi9MaWJyYXJ5L1ByZWZlcmVuY2VzL0FxdWFt YWNzIEVtYWNzL1ByZWZlcmVuY2VzCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgo7OyBkZWJ1Z2dp bmcgY3VycmVudCBlbWFjczoKOzsoc2V0LW1hcmtlciBjb21pbnQtbGFzdC1vdXRwdXQtc3RhcnQg KHBvaW50KSkKOzsoZ290by1jaGFyIGNvbWludC1sYXN0LW91dHB1dC1zdGFydCkKCihtZXNzYWdl ICJMb2FkaW5nIC5lbWFjcyIpCihpZiAoZXF1YWwgZGVmYXVsdC1kaXJlY3RvcnkgIi8iKSAoc2V0 cSBkZWZhdWx0LWRpcmVjdG9yeSAifi8iKSkKCjs7OyBjYWNoZWQgZW52aXJvbm1lbnQgZnJvbSAu cGF0aHMgc2NyaXB0Cjs7IChsb2FkICJ+Ly5wYXRocy5lbCIgdCkKCjsgJyhjb21pbnQtcGFzc3dv cmQtcHJvbXB0LXJlZ2V4cCAiXFwoXFwoXFxbc3Vkb1xcXSBcXHxbT29dbGQgXFx8W05uXWV3IFxc fCdzIFxcfGxvZ2luIFxcfEtlcmJlcm9zIFxcfENWUyBcXHxJbWFwIFxcfFVOSVggXFx8TWFpbCBh Y2NvdW50IFxcfCBTTUIgXFx8XlxcKVtQcF1hc3N3XFwob3JcXCk/ZFxcKCAoYWdhaW4pXFwpP1xc fHBhc3MgcGhyYXNlXFx8XFwoRW50ZXJcXHxSZXBlYXRcXHxCYWRcXCkgcGFzc3BocmFzZVxcKVxc KD86LCB0cnkgYWdhaW5cXCk/XFwoPzogZm9yIFteOl0rXFwpPzpcXHMgKlxcJyIpCihzZXRxIGNv bWludC1wYXNzd29yZC1wcm9tcHQtcmVnZXhwICJcXCheICpcXHxcXCggU01CXFx8J3NcXHxCYWRc XHxDVlNcXHxFbnRlclxcKD86IFxcKD86XFwoPzpzYW1cXHx0aFxcKWVcXClcXCk/XFx8S2VyYmVy b3NcXHxMREFQXFx8TmV3XFx8T2xkXFx8UmVwZWF0XFx8VU5JWFxcfFxcW3N1ZG9dXFx8ZW50ZXJc XCg/OiBcXCg/OlxcKD86c2FtXFx8dGhcXCllXFwpXFwpP1xcfGxvZ2luXFx8bmV3XFx8b2xkXFwp ICtcXClcXCg/OlBhc3NcXCg/OiBwaHJhc2VcXHxwaHJhc2VcXHx3b3JkXFwpXFx8UmVzcG9uc2Vc XHxwYXNzXFwoPzogcGhyYXNlXFx8cGhyYXNlXFx8d29yZFxcKVxcKVxcKD86XFwoPzosIHRyeVxc KT8gKmFnYWluXFx8IChlbXB0eSBmb3Igbm8gcGFzc3BocmFzZSlcXHwgKGFnYWluKVxcKT9cXCg/ OiBmb3IgXFwoPzpbXjpdXFx8J1teJ10qJ1xcKStcXCk/OlxccyAqXFwnIikKCihjdXN0b20tc2V0 LXZhcmlhYmxlcwogOzsgY3VzdG9tLXNldC12YXJpYWJsZXMgd2FzIGFkZGVkIGJ5IEN1c3RvbS4K IDs7IElmIHlvdSBlZGl0IGl0IGJ5IGhhbmQsIHlvdSBjb3VsZCBtZXNzIGl0IHVwLCBzbyBiZSBj YXJlZnVsLgogOzsgWW91ciBpbml0IGZpbGUgc2hvdWxkIGNvbnRhaW4gb25seSBvbmUgc3VjaCBp bnN0YW5jZS4KIDs7IElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUsIHRoZXkgd29uJ3Qgd29yayBy aWdodC4KICcoTTItaW5kZW50LWxldmVsIDUpCiAnKGF1dG8tY29tcHJlc3Npb24tbW9kZSB0KQog JyhhdXRvLWltYWdlLWZpbGUtbW9kZSB0IG5pbCAoaW1hZ2UtZmlsZSkpCiAnKGF1dG8tc2F2ZS1k ZWZhdWx0IHQpCiAnKGF1dG8tc2F2ZS1saXN0LWZpbGUtcHJlZml4ICJ+Ly5lbWFjcy5kL2F1dG8t c2F2ZS1saXN0L3NhdmVzLSIpCiAnKGJhY2t1cC1ieS1jb3B5aW5nLXdoZW4tbGlua2VkIDEpCiAn KGJsaW5rLWN1cnNvci1tb2RlIG5pbCkKICcoYy1iYXNpYy1vZmZzZXQgMikKICcoY2FsZW5kYXIt bGF0aXR1ZGUgNDAuMDg1NCkKICcoY2FsZW5kYXItbG9jYXRpb24tbmFtZSAiVXJiYW5hLCBJbGxp bm9pcyIpCiAnKGNhbGVuZGFyLWxvbmdpdHVkZSAtODguMjAyNSkKICcoY2FsZW5kYXItdmlldy1k aWFyeS1pbml0aWFsbHktZmxhZyB0KQogJyhjYXNlLWZvbGQtc2VhcmNoIG5pbCkKICcoY29taW50 LWlucHV0LWF1dG9leHBhbmQgbmlsKQogJyhjb21pbnQtc2Nyb2xsLXNob3ctbWF4aW11bS1vdXRw dXQgbmlsKQogJyhjb21waWxhdGlvbi1hc2stYWJvdXQtc2F2ZSBuaWwpCiAnKGNvbXBpbGF0aW9u LXJlYWQtY29tbWFuZCBuaWwpCiAnKGNvbXBpbGF0aW9uLXNjcm9sbC1vdXRwdXQgdCkKICcoY29t cGlsZS1jb21tYW5kICJtYWtlIC1qMSAiKQogJyhjb21wbGV0aW9uLWF1dG8taGVscCAwKQogJyhj dGwtYXJyb3cgdCkKICcoY3VzdG9tLXRoZW1lLWxvYWQtcGF0aCAnKGN1c3RvbS10aGVtZS1kaXJl Y3RvcnkgdCAifi9lbWFjcyIpIHQpCiAnKGRlbGV0ZS1hY3RpdmUtcmVnaW9uIG5pbCkKICcoZGVs ZXRlLWF1dG8tc2F2ZS1maWxlcyAxKQogJyhkZWxldGUtdHJhaWxpbmctbGluZXMgbmlsKQogJyhk ZXNjcmliZS1jaGFyLXVuaWRhdGEtbGlzdAogICAnKG5hbWUgb2xkLW5hbWUgZ2VuZXJhbC1jYXRl Z29yeSBkZWNvbXBvc2l0aW9uIGlzby0xMDY0Ni1jb21tZW50KSkKICcoZGlhcnktZGlzcGxheS1m dW5jdGlvbiAnKGZhbmN5LWRpYXJ5LWRpc3BsYXkpKQogJyhkaWFyeS1kaXNwbGF5LWhvb2sgJyhm YW5jeS1kaWFyeS1kaXNwbGF5KSkKICcoZGlhcnktZmlsZSAifi9ob21lL3Zhci9kaWFyeSIpCiAn KGRpYXJ5LWxpc3QtZW50cmllcy1ob29rICcoaW5jbHVkZS1vdGhlci1kaWFyeS1maWxlcyBzb3J0 LWRpYXJ5LWVudHJpZXMpKQogJyhkaWFyeS1udW1iZXItb2YtZW50cmllcyAzKQogJyhkaWZmLXN3 aXRjaGVzICItdSIpCiAnKGVkaXQtc2VydmVyLW5ldy1mcmFtZS1hbGlzdAogICAnKChuYW1lIC4g IkVtYWNzIFRFWFRBUkVBIikKICAgICAod2lkdGggLiAxMzApCiAgICAgKGhlaWdodCAuIDQwKQog ICAgIChtaW5pYnVmZmVyIC4gdCkKICAgICAobWVudS1iYXItbGluZXMgLiB0KQogICAgICh0b3Ag LiAxKSkpCiAnKGVuYWJsZS1yZWN1cnNpdmUtbWluaWJ1ZmZlcnMgMSkKICcoZmlsbC1jb2x1bW4g NzkpCiAnKGZvbnQtbG9jay1tYXhpbXVtLWRlY29yYXRpb24gdCkKICcoZ2MtY29ucy10aHJlc2hv bGQgMTAwMDAwMCkKICcoZ2xvYmFsLWF1dG8tcmV2ZXJ0LWlnbm9yZS1tb2RlcyAnKHRhZ3MtdGFi bGUtbW9kZSkpCiAnKGdsb2JhbC1hdXRvLXJldmVydC1tb2RlIHQpCiAnKGdsb2JhbC1mb250LWxv Y2stbW9kZSB0IG5pbCAoZm9udC1sb2NrKSkKICcoZ251cy1hcnRpY2xlLWJ1dHRvbi1mYWNlICdo aWdobGlnaHQpCiAnKGdudXMtYXJ0aWNsZS1zYXZlLWRpcmVjdG9yeSAifi8uZ251cy8iKQogJyhn bnVzLWNpdGVkLWxpbmVzLXZpc2libGUgMSkKICcoZ251cy1kZWZhdWx0LXN1YnNjcmliZWQtbmV3 c2dyb3VwcwogICAnKCJzY2kubWF0aC5yZXNlYXJjaCIgImNvbXAub3MubGludXguYW5ub3VuY2Ui ICJnbnUuZW1hY3MuYW5ub3VuY2UiICJnbnUuZ2NjLmFubm91bmNlIiAiZ251LmcrKy5hbm5vdW5j ZSIpKQogJyhnbnVzLWRpcmVjdG9yeSAifi8uZ251cy8iKQogJyhnbnVzLWdyb3VwLWxpbmUtZm9y bWF0ICIlTSVTIDwlTD4lNXk6ICUoJWclKQoiKQogJyhnbnVzLWtlZXAtc2FtZS1sZXZlbCB0KQog JyhnbnVzLWtpbGwtZmlsZXMtZGlyZWN0b3J5ICJ+Ly5nbnVzLyIpCiAnKGdudXMtbGV2ZWwtZGVm YXVsdC1zdWJzY3JpYmVkIDQpCiAnKGdudXMtc2F2ZS1uZXdzcmMtZmlsZSBuaWwpCiAnKGdudXMt c2Vjb25kYXJ5LXNlcnZlcnMKICAgJygibmV0bmV3cy5pbnNpZ2h0YmIuY29tIiAibmV3cy5jc28u dWl1Yy5lZHUiICJuZXdzLmtzLnVpdWMuZWR1IikpCiAnKGdudXMtc3VtbWFyeS1saW5lLWZvcm1h dCAiJWkgJVUlUiV6JUklKCVbJTRMOiAlLTIwLDIwbiVdJSkgJXMKIikKICcoZ251cy10cmVhdC1o aWRlLWNpdGF0aW9uIHQpCiAnKGdudXMtdmlzaWJsZS1oZWFkZXJzCiAgICcoIl5Gcm9tOiIgIl5T dWJqZWN0OiIgIl5EYXRlOiIgIl5BcHByb3ZlZDoiICJeTWVzc2FnZS1JW0RkXToiKSkKICcoZ3Jl cC1jb21tYW5kICJlZ3JlcCAtLWNvbG9yPW5ldmVyIC1uSCAtZSAiKQogJyhndWQtZ2RiLWNvbW1h bmQtbmFtZSAiZ2RiIC0tYW5ub3RhdGU9MSIpCiAnKGhpZ2hsaWdodC1ub25zZWxlY3RlZC13aW5k b3dzIHQpCiAnKGljb21wbGV0ZS1wcm9zcGVjdHMtaGVpZ2h0IDUpCiAnKGluaGliaXQtc3RhcnR1 cC1zY3JlZW4gdCkKICcobGFyZ2UtZmlsZS13YXJuaW5nLXRocmVzaG9sZCBuaWwpCiAnKGxpc3Qt ZGlhcnktZW50cmllcy1ob29rICcoaW5jbHVkZS1vdGhlci1kaWFyeS1maWxlcyBzb3J0LWRpYXJ5 LWVudHJpZXMpKQogJyhsaXN0LWRpcmVjdG9yeS1icmllZi1zd2l0Y2hlcyAiLXNDRiIpCiAnKGxv YWQtaG9tZS1pbml0LWZpbGUgdCB0KQogJyhtYWlsLWFyY2hpdmUtZmlsZS1uYW1lICJvdXRib3gi KQogJyhtYWlsLXNwZWNpZnktZW52ZWxvcGUtZnJvbSB0KQogJyhtYWlsLXlhbmstaWdub3JlZC1o ZWFkZXJzCiAgICJ8XmRpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbi10bzpcXHxedmlhOlxcfF5tYWls LWZyb206XFx8Xm9yaWdpbjpcXHxec3RhdHVzOlxcfF5yZW1haWxlZFxcfF5yZWNlaXZlZDpcXHxe bWVzc2FnZS1pZDpcXHxec3VtbWFyeS1saW5lOlxcfF5pbi1yZXBseS10bzpcXHxecmV0dXJuLXBh dGg6IikKICcobWFpbC15YW5rLXByZWZpeCAiPiAiKQogJyhtYWtlLWJhY2t1cC1maWxlcyBuaWwp CiAnKG1pemFyLWxhdW5jaC1zcGVlZGJhciBuaWwpCiAnKG5leHQtbGluZS1hZGQtbmV3bGluZXMg dCkKICcobnVtYmVyLW9mLWRpYXJ5LWVudHJpZXMgMykKICcocGFja2FnZS1zZWxlY3RlZC1wYWNr YWdlcwogICAnKGFnZGEyLW1vZGUgYWdncmVzc2l2ZS1maWxsLXBhcmFncmFwaCBqdWxpYS1tb2Rl IGdoLW1kIGNtYWtlLW1vZGUgcHJvb2YtZ2VuZXJhbCB5YW1sLW1vZGUgbGVhbi1tb2RlIGNhbWwg c21sLW1vZGUgdHVhcmVnIHBvdi1tb2RlIGdhcC1tb2RlIHJlZHBybCBydXN0LW1vZGUgY29tcGFu eS1jb3EgcmFpbmJvdy1kZWxpbWl0ZXJzIG11bHRpcGxlLWN1cnNvcnMgbWV3IG1hcmtkb3duLW1v ZGUgbWFnaXQgaGFza2VsbC1tb2RlIGV4cGFuZC1yZWdpb24pKQogJyhwYWdlLWRlbGltaXRlciAi DCIpCiAnKHByb29mLWF1dG8tYWN0aW9uLXdoZW4tZGVhY3RpdmF0aW5nLXNjcmlwdGluZyAncmV0 cmFjdCkKICcocHJvb2YtZnVsbC1hbm5vdGF0aW9uIHQpCiAnKHByb29mLWdlbmVyYWwtZGVidWcg bmlsKQogJyhwcm9vZi1tdWx0aXBsZS1mcmFtZXMtZW5hYmxlIG5pbCkKICcocHJvb2Ytb3V0cHV0 LXRvb2x0aXBzIHQpCiAnKHByb29mLXNwbGFzaC1lbmFibGUgbmlsKQogJyhwcm9vZi10aHJlZS13 aW5kb3ctZW5hYmxlIG5pbCkKICcocmVhZC1maWxlLW5hbWUtY29tcGxldGlvbi1pZ25vcmUtY2Fz ZSBuaWwpCiAnKHJlYWQtcXVvdGVkLWNoYXItcmFkaXggMTYpCiAnKHJlZnRleC11c2UtZXh0ZXJu YWwtZmlsZS1maW5kZXJzIHQpCiAnKHJlcXVpcmUtZmluYWwtbmV3bGluZSBuaWwpCiAnKHJtYWls LWVuYWJsZS1taW1lIG5pbCkKICcocm1haWwtcHJlc2VydmUtaW5ib3ggbmlsKQogJyhybWFpbC1z ZWNvbmRhcnktZmlsZS1yZWdleHAgIi4iKQogJyhzYWZlLWxvY2FsLXZhcmlhYmxlLXZhbHVlcwog ICAnKChsYXRleC1ibG9jay1uYW1lcyAibGVtbWEiICJ0aGVvcmVtIiAicmVtYXJrIiAiZGVmaW5p dGlvbiIgImNvcm9sbGFyeSIgImZhY3QiICJwcm9wZXJ0aWVzIiAiY29uamVjdHVyZSIgInByb29m IiAicXVlc3Rpb24iICJwcm9wb3NpdGlvbiIgImV4ZXJjaXNlIikKICAgICAoZXZhbCBsZXQKCSAg ICgodW5pbWF0aC10b3BkaXIKCSAgICAgKGV4cGFuZC1maWxlLW5hbWUKCSAgICAgIChsb2NhdGUt ZG9taW5hdGluZy1maWxlIGJ1ZmZlci1maWxlLW5hbWUgIlVuaU1hdGgiKSkpKQoJICAgKHNldHEg ZmlsbC1jb2x1bW4gMTAwKQoJICAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2NvcS11c2UtcHJvamVj dC1maWxlKQoJICAgKHNldHEgY29xLXVzZS1wcm9qZWN0LWZpbGUgbmlsKQoJICAgKG1ha2UtbG9j YWwtdmFyaWFibGUgJ2NvcS1wcm9nLWFyZ3MpCgkgICAoc2V0cSBjb3EtcHJvZy1hcmdzCgkJIGAo Ii1xdWlldCIgIi1lbWFjcyIgIi1ub2luaXQiICItaW5kaWNlcy1tYXR0ZXIiICItdHlwZS1pbi10 eXBlIiAiLXciICItbm90YXRpb24tb3ZlcnJpZGRlbiIgIi1RIiAsKGNvbmNhdCB1bmltYXRoLXRv cGRpciAiVW5pTWF0aCIpCgkJICAgIlVuaU1hdGgiKSkKCSAgIChtYWtlLWxvY2FsLXZhcmlhYmxl ICdjb3EtcHJvZy1uYW1lKQoJICAgKHNldHEgY29xLXByb2ctbmFtZQoJCSAoY29uY2F0IHVuaW1h dGgtdG9wZGlyICJzdWIvY29xL2Jpbi9jb3F0b3AiKSkKCSAgIChtYWtlLWxvY2FsLXZhcmlhYmxl ICdiZWZvcmUtc2F2ZS1ob29rKQoJICAgKGFkZC1ob29rICdiZWZvcmUtc2F2ZS1ob29rICdkZWxl dGUtdHJhaWxpbmctd2hpdGVzcGFjZSkKCSAgIChtb2RpZnktc3ludGF4LWVudHJ5IDM5ICJ3IikK CSAgIChtb2RpZnktc3ludGF4LWVudHJ5IDk1ICJ3IikKCSAgIChpZgoJICAgICAgIChub3QKCQko bWVtcSAnYWdkYS1pbnB1dCBmZWF0dXJlcykpCgkgICAgICAgKGxvYWQKCQkoY29uY2F0IHVuaW1h dGgtdG9wZGlyICJlbWFjcy9hZ2RhL2FnZGEtaW5wdXQiKSkpCgkgICAoaWYKCSAgICAgICAobm90 CgkJKG1lbWJlcgoJCSAnKCJjaGltbmV5IiAi4pWdIikKCQkgYWdkYS1pbnB1dC11c2VyLXRyYW5z bGF0aW9ucykpCgkgICAgICAgKHByb2duCgkJIChzZXRxIGFnZGEtaW5wdXQtdXNlci10cmFuc2xh dGlvbnMKCQkgICAgICAgKGNvbnMKCQkJJygiY2hpbW5leSIgIuKVnSIpCgkJCWFnZGEtaW5wdXQt dXNlci10cmFuc2xhdGlvbnMpKQoJCSAoc2V0cSBhZ2RhLWlucHV0LXVzZXItdHJhbnNsYXRpb25z CgkJICAgICAgIChjb25zCgkJCScoIj09PiIgIuKfuSIpCgkJCWFnZGEtaW5wdXQtdXNlci10cmFu c2xhdGlvbnMpKQoJCSAoYWdkYS1pbnB1dC1zZXR1cCkpKQoJICAgKHNldC1pbnB1dC1tZXRob2Qg IkFnZGEiKSkKICAgICAobGF0ZXgtYmxvY2stbmFtZXMgcXVvdGUKCQkJKCJleGVyY2lzZSIgInhj YSIpKQogICAgIChldmFsIGxldAoJICAgKChkZWZhdWx0LWRpcmVjdG9yeQoJICAgICAgKGxvY2F0 ZS1kb21pbmF0aW5nLWZpbGUgYnVmZmVyLWZpbGUtbmFtZSAiLmRpci1sb2NhbHMuZWwiKSkpCgkg ICAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29xLXByb2ctbmFtZSkKCSAgIChzZXRxIGNvcS1wcm9n LW5hbWUKCQkgKGV4cGFuZC1maWxlLW5hbWUgIi4uL2hvcXRvcCIpKSkKICAgICAoVGVYLW1hc3Rl ciAuICJob3R0LW9ubGluZSIpCiAgICAgKGV2YWwgbGV0CgkgICAoKHVuaW1hdGgtdG9wZGlyCgkg ICAgIChleHBhbmQtZmlsZS1uYW1lCgkgICAgICAobG9jYXRlLWRvbWluYXRpbmctZmlsZSBidWZm ZXItZmlsZS1uYW1lICJVbmlNYXRoIikpKSkKCSAgIChzZXRxIGZpbGwtY29sdW1uIDEwMCkKCSAg IChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb3EtdXNlLXByb2plY3QtZmlsZSkKCSAgIChzZXRxIGNv cS11c2UtcHJvamVjdC1maWxlIG5pbCkKCSAgIChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb3EtcHJv Zy1hcmdzKQoJICAgKHNldHEgY29xLXByb2ctYXJncwoJCSBgKCItZW1hY3MiICItbm9pbml0IiAi LWluZGljZXMtbWF0dGVyIiAiLVEiICwoY29uY2F0IHVuaW1hdGgtdG9wZGlyICJVbmlNYXRoIikK CQkgICAiVW5pTWF0aCIgIi13IiAiLW5vdGF0aW9uLW92ZXJyaWRkZW4iKSkKCSAgIChpZgoJICAg ICAgIChlcXVhbCBidWZmZXItZmlsZS1uYW1lCgkJICAgICAgKGNvbmNhdCB1bmltYXRoLXRvcGRp ciAiVW5pTWF0aC9Gb3VuZGF0aW9ucy9SZXNpemluZy52IikpCgkgICAgICAgKHNldHEgY29xLXBy b2ctYXJncwoJCSAgICAgKGNvbnMgIi10eXBlLWluLXR5cGUiIGNvcS1wcm9nLWFyZ3MpKSkKCSAg IChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb3EtcHJvZy1uYW1lKQoJICAgKHNldHEgY29xLXByb2ct bmFtZQoJCSAoY29uY2F0IHVuaW1hdGgtdG9wZGlyICJzdWIvY29xL2Jpbi9jb3F0b3AiKSkKCSAg IChtYWtlLWxvY2FsLXZhcmlhYmxlICdiZWZvcmUtc2F2ZS1ob29rKQoJICAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICdkZWxldGUtdHJhaWxpbmctd2hpdGVzcGFjZSkKCSAgIChtb2RpZnkt c3ludGF4LWVudHJ5IDM5ICJ3IikKCSAgIChtb2RpZnktc3ludGF4LWVudHJ5IDk1ICJ3IikKCSAg IChpZgoJICAgICAgIChub3QKCQkobWVtcSAnYWdkYS1pbnB1dCBmZWF0dXJlcykpCgkgICAgICAg KGxvYWQKCQkoY29uY2F0IHVuaW1hdGgtdG9wZGlyICJlbWFjcy9hZ2RhL2FnZGEtaW5wdXQiKSkp CgkgICAoaWYKCSAgICAgICAobm90CgkJKG1lbWJlcgoJCSAnKCJjaGltbmV5IiAi4pWdIikKCQkg YWdkYS1pbnB1dC11c2VyLXRyYW5zbGF0aW9ucykpCgkgICAgICAgKHByb2duCgkJIChzZXRxIGFn ZGEtaW5wdXQtdXNlci10cmFuc2xhdGlvbnMKCQkgICAgICAgKGNvbnMKCQkJJygiY2hpbW5leSIg IuKVnSIpCgkJCWFnZGEtaW5wdXQtdXNlci10cmFuc2xhdGlvbnMpKQoJCSAoc2V0cSBhZ2RhLWlu cHV0LXVzZXItdHJhbnNsYXRpb25zCgkJICAgICAgIChjb25zCgkJCScoIj09PiIgIuKfuSIpCgkJ CWFnZGEtaW5wdXQtdXNlci10cmFuc2xhdGlvbnMpKQoJCSAoYWdkYS1pbnB1dC1zZXR1cCkpKQoJ ICAgKHNldC1pbnB1dC1tZXRob2QgIkFnZGEiKSkKICAgICAoZXZhbCBwcm9nbgoJICAgKG1ha2Ut bG9jYWwtdmFyaWFibGUgJ2NvcS1wcm9nLWFyZ3MpCgkgICAoc2V0cSBjb3EtcHJvZy1hcmdzCgkJ IGAoIi1ub2luaXQiICItZW1hY3MiICItaW5kaWNlcy1tYXR0ZXIiICItdHlwZS1pbi10eXBlIiAi LVEiICwoZXhwYW5kLWZpbGUtbmFtZQoJCQkJCQkJCQkgICAgICAgKGxvY2F0ZS1kb21pbmF0aW5n LWZpbGUgYnVmZmVyLWZpbGUtbmFtZSAiLmRpci1sb2NhbHMuZWwiKSkKCQkgICAiVHlwZVRoZW9y eSIpKSkKICAgICAoVGVYLW1hc3RlciAuICJib29rIikKICAgICAoVGVYLW1hc3RlciAuIHQpCiAg ICAgKGxhdGV4LWJsb2NrLW5hbWVzICJsZW1tYSIgInRoZW9yZW0iICJyZW1hcmsiICJkZWZpbml0 aW9uIiAiY29yb2xsYXJ5IiAiZmFjdCIgInByb3BlcnRpZXMiICJjb25qZWN0dXJlIiAicHJvb2Yi ICJxdWVzdGlvbiIgInByb3Bvc2l0aW9uIikKICAgICAoZXZhbCBsZXQKCSAgICgodW5pbWF0aC10 b3BkaXIKCSAgICAgKGV4cGFuZC1maWxlLW5hbWUKCSAgICAgIChsb2NhdGUtZG9taW5hdGluZy1m aWxlIGJ1ZmZlci1maWxlLW5hbWUgIlVuaU1hdGgiKSkpKQoJICAgKHNldHEgZmlsbC1jb2x1bW4g MTAwKQoJICAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2NvcS11c2UtcHJvamVjdC1maWxlKQoJICAg KHNldHEgY29xLXVzZS1wcm9qZWN0LWZpbGUgbmlsKQoJICAgKG1ha2UtbG9jYWwtdmFyaWFibGUg J2NvcS1wcm9nLWFyZ3MpCgkgICAoc2V0cSBjb3EtcHJvZy1hcmdzCgkJIGAoIi1lbWFjcyIgIi1u b2luaXQiICItaW5kaWNlcy1tYXR0ZXIiICItdHlwZS1pbi10eXBlIiAiLXciICItbm90YXRpb24t b3ZlcnJpZGRlbiIgIi1RIiAsKGNvbmNhdCB1bmltYXRoLXRvcGRpciAiVW5pTWF0aCIpCgkJICAg IlVuaU1hdGgiKSkKCSAgIChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb3EtcHJvZy1uYW1lKQoJICAg KHNldHEgY29xLXByb2ctbmFtZQoJCSAoY29uY2F0IHVuaW1hdGgtdG9wZGlyICJzdWIvY29xL2Jp bi9jb3F0b3AiKSkKCSAgIChtYWtlLWxvY2FsLXZhcmlhYmxlICdiZWZvcmUtc2F2ZS1ob29rKQoJ ICAgKGFkZC1ob29rICdiZWZvcmUtc2F2ZS1ob29rICdkZWxldGUtdHJhaWxpbmctd2hpdGVzcGFj ZSkKCSAgIChtb2RpZnktc3ludGF4LWVudHJ5IDM5ICJ3IikKCSAgIChtb2RpZnktc3ludGF4LWVu dHJ5IDk1ICJ3IikKCSAgIChpZgoJICAgICAgIChub3QKCQkobWVtcSAnYWdkYS1pbnB1dCBmZWF0 dXJlcykpCgkgICAgICAgKGxvYWQKCQkoY29uY2F0IHVuaW1hdGgtdG9wZGlyICJlbWFjcy9hZ2Rh L2FnZGEtaW5wdXQiKSkpCgkgICAoaWYKCSAgICAgICAobm90CgkJKG1lbWJlcgoJCSAnKCJjaGlt bmV5IiAi4pWdIikKCQkgYWdkYS1pbnB1dC11c2VyLXRyYW5zbGF0aW9ucykpCgkgICAgICAgKHBy b2duCgkJIChzZXRxIGFnZGEtaW5wdXQtdXNlci10cmFuc2xhdGlvbnMKCQkgICAgICAgKGNvbnMK CQkJJygiY2hpbW5leSIgIuKVnSIpCgkJCWFnZGEtaW5wdXQtdXNlci10cmFuc2xhdGlvbnMpKQoJ CSAoc2V0cSBhZ2RhLWlucHV0LXVzZXItdHJhbnNsYXRpb25zCgkJICAgICAgIChjb25zCgkJCSco Ij09PiIgIuKfuSIpCgkJCWFnZGEtaW5wdXQtdXNlci10cmFuc2xhdGlvbnMpKQoJCSAoYWdkYS1p bnB1dC1zZXR1cCkpKQoJICAgKHNldC1pbnB1dC1tZXRob2QgIkFnZGEiKSkpKQogJyhzY3JvbGwt YmFyLW1vZGUgbmlsKQogJyhzZW5kLW1haWwtZnVuY3Rpb24gJ3NlbmRtYWlsLXNlbmQtaXQpCiAn KHNzbC1jZXJ0aWZpY2F0ZS12ZXJpZmljYXRpb24tcG9saWN5IDEpCiAnKHNzbC1wcm9ncmFtLW5h bWUgIm9wZW5zc2wiKQogJyh0YWdzLXJldmVydC13aXRob3V0LXF1ZXJ5IHQpCiAnKHRlbXAtYnVm ZmVyLXJlc2l6ZS1tb2RlIHQpCiAnKHRleC1mb250aWZ5LXNjcmlwdCBuaWwpCiAnKHRleHQtc2Nh bGUtbW9kZS1zdGVwIDEuMDgpCiAnKHRyYWNrLWVvbCBuaWwpCiAnKHRyYW5zaWVudC1tYXJrLW1v ZGUgdCkKICcodHJ1bmNhdGUtbGluZXMgdCkKICcodXJsLXBlcnNvbmFsLW1haWwtYWRkcmVzcyAi ZGFuQG1hdGgudWl1Yy5lZHUiKQogJyh1cmwtcHJpdmFjeS1sZXZlbCAnKGVtYWlsIG9zIGxhc3Rs b2MgY29va2llKSkKICcodXNlci1mdWxsLW5hbWUgIkRhbmllbCBSLiBHcmF5c29uIikKICcodXNl ci1tYWlsLWFkZHJlc3MgImRhbkBtYXRoLnVpdWMuZWR1IikKICcodmMtZm9sbG93LXN5bWxpbmtz IG5pbCkKICcodmlldy1kaWFyeS1lbnRyaWVzLWluaXRpYWxseSB0KQogJyh2aXNpYmxlLWJlbGwg bmlsKQogJyh2bS1tdXRhYmxlLWZyYW1lcyBuaWwpCiAnKHZtLXByZXZpZXctbGluZXMgdCkKICco dzMtZGVmYXVsdC1zdHlsZXNoZWV0ICJ+Ly53My9zdHlsZXNoZWV0IikKICcodzMtdXNlci1jb2xv cnMtdGFrZS1wcmVjZWRlbmNlIHQpCiAnKHdpZGdldC1tZW51LW1pbmlidWZmZXItZmxhZyB0KQog Jyh3aW5kb3ctbWluLWhlaWdodCAyKQogJyh3b3JkLXdyYXAgdCkpCgo7OyAoc2V0cSB4LXNlbGVj dC1lbmFibGUtY2xpcGJvYXJkIHQpCjs7IChpZiAoYW5kICg+IGVtYWNzLW1ham9yLXZlcnNpb24g MjEpICg8IGVtYWNzLW1ham9yLXZlcnNpb24gMjUpKQo7OyAgICAgKHNldHEgeC1zZWxlY3QtZW5h YmxlLWNsaXBib2FyZCBuaWwgeC1zZWxlY3QtZW5hYmxlLXByaW1hcnkgdCBtb3VzZS1kcmFnLWNv cHktcmVnaW9uIHQpCQk7IGZyb20gTmVsc29uIEJlZWJlCjs7ICAgKQoKKGN1c3RvbS1zZXQtZmFj ZXMKIDs7IGN1c3RvbS1zZXQtZmFjZXMgd2FzIGFkZGVkIGJ5IEN1c3RvbS4KIDs7IElmIHlvdSBl ZGl0IGl0IGJ5IGhhbmQsIHlvdSBjb3VsZCBtZXNzIGl0IHVwLCBzbyBiZSBjYXJlZnVsLgogOzsg WW91ciBpbml0IGZpbGUgc2hvdWxkIGNvbnRhaW4gb25seSBvbmUgc3VjaCBpbnN0YW5jZS4KIDs7 IElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUsIHRoZXkgd29uJ3Qgd29yayByaWdodC4KICkKCihp Y29tcGxldGUtbW9kZSAxKQooYWRkLWhvb2sgJ2ljb21wbGV0ZS1taW5pYnVmZmVyLXNldHVwLWhv b2sKCSAgKGZ1bmN0aW9uCgkgICAobGFtYmRhICgpCgkgICAgIChtYWtlLWxvY2FsLXZhcmlhYmxl ICd0cnVuY2F0ZS1saW5lcykKCSAgICAgKHNldHEgdHJ1bmNhdGUtbGluZXMgbmlsKSkpKQoocHV0 ICdjb21waWxlLWNvbW1hbmQgJ3NhZmUtbG9jYWwtdmFyaWFibGUgJ3N0cmluZ3ApCihpZiAoZmJv dW5kcCAndG9vbC1iYXItbW9kZSkgKHRvb2wtYmFyLW1vZGUgMCkpCihpZiAoZmJvdW5kcCAnbWVu dS1iYXItbW9kZSkgKG1lbnUtYmFyLW1vZGUgMCkpCihkZWZ1biB2aXNpYmxlLWhvcml6b250YWxs eSAoKQogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGFuZAogICAgICg8PSAwICgtIChjdXJyZW50LWNv bHVtbikgKHdpbmRvdy1oc2Nyb2xsIChzZWxlY3RlZC13aW5kb3cpKSkpCiAgICAgKDwgKC0gKGN1 cnJlbnQtY29sdW1uKSAod2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykpKSAKCSh3aW5k b3ctd2lkdGggKHNlbGVjdGVkLXdpbmRvdykpKSkpKQooZ2xvYmFsLXNldC1rZXkgWyAoY29udHJv bCB6KSBdIGBzdXNwZW5kLWVtYWNzKSA7IEkgbmV2ZXIgd2FudCB0byBzdXNwZW5kIGEgZnJhbWUK KGdsb2JhbC1zZXQta2V5IFsgKGNvbnRyb2wgeCkgKGNvbnRyb2wgeikgXSBgc3VzcGVuZC1lbWFj cykgOyBJIG5ldmVyIHdhbnQgdG8gc3VzcGVuZCBhIGZyYW1lCihnbG9iYWwtc2V0LWtleSBbIGY1 IF0gJ3RvZ2dsZS10cnVuY2F0ZS1saW5lcykKKGdsb2JhbC1zZXQta2V5IFsgZjYgXSAndG9nZ2xl LXRydW5jYXRlLWxpbmVzKQooZ2xvYmFsLXNldC1rZXkgWyBmNyBdICd0b2dnbGUtbWVudS1iYXIt bW9kZS1mcm9tLWZyYW1lKQo7IChnbG9iYWwtc2V0LWtleSBbIGY4IF0gJ292ZXJ3cml0ZS1tb2Rl KQooZ2xvYmFsLXNldC1rZXkgWyAobWV0YSBmNykgXSAndG9nZ2xlLWVuYWJsZS1tdWx0aWJ5dGUt Y2hhcmFjdGVycykKKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICd0cmFuc2llbnQtbWFyay1t b2RlKQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ2NvbXBpbGUtY29tbWFuZCkKOyAobWFr ZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ2NvbXBpbGUtaGlzdG9yeSkKCihzZXRxIGNvbXBpbGF0 aW9uLWRpcmVjdG9yeS1tYXRjaGVyICcoIlxcKD86RW50ZXJpbmdcXHxMZWF2aW5cXChnXFwpXFwp IGRpcmVjdG9yeSBbYCddXFwoLitcXCknJCIgKDIgLiAxKSkpCgoKOzsgbGFuZ3VhZ2UKKHNldC1s YW5ndWFnZS1lbnZpcm9ubWVudCAiVVRGLTgiKQo7IChzZXQtbGFuZ3VhZ2UtZW52aXJvbm1lbnQg IkNoaW5lc2UtR0IiKQo7ICh1dGYtdHJhbnNsYXRlLWNqay1sb2FkLXRhYmxlcykKKHNldHEgZGVm YXVsdC1pbnB1dC1tZXRob2QgImNoaW5lc2UtdG9uZXB5LXB1bmN0IikKCjsoc2V0LWxhbmd1YWdl LWVudmlyb25tZW50ICJHZXJtYW4iKQo7KHNldHEgZGVmYXVsdC1pbnB1dC1tZXRob2QgImdlcm1h bi1wb3N0Zml4IikKCihzZXRxIGZpbGUtbmFtZS1jb2Rpbmctc3lzdGVtICd1dGYtOCkKKHNldC10 ZXJtaW5hbC1jb2Rpbmctc3lzdGVtICd1dGYtOCkKOyAoc2V0cSBwcm9jZXNzLWNvZGluZy1zeXN0 ZW0tYWxpc3QgJygoIl5NMiIgLiAodXRmLTggLiB1dGYtOCkpKSkKKHNldHEgZGVmYXVsdC1wcm9j ZXNzLWNvZGluZy1zeXN0ZW0gJyh1dGYtOCAuIHV0Zi04KSkKCjs7ID9cQS1hICAgYWx0ICAgICAg Ym91bmQgdG8gQ3RybCBrZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyXjIyCjs7 ID9ccy1hICAgc3VwZXIgICAgYm91bmQgdG8gd2luZG93cyBrZXkgb3IgcmlnaHQgYWx0IGtleSAg ICAgICAgICAgICAyXjIzCjs7ID9cSC1hICAgaHlwZXIgICAgYm91bmQgdG8gTWVudSBrZXkgb3Ig cmlnaHQgY3RybCBrZXkgICAgICAgICAgICAgICAyXjI0Cjs7ID9cUy1hICAgc2hpZnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyXjI1Cjs7ID9c Qy1hICAgY3RybCAgICAgYm91bmQgdG8gY2FwcyBsb2NrIGtleSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAyXjI2Cjs7ID9cTS1hICAgbWV0YSAgICAgYm91bmQgdG8gQWx0IGtleSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAyXjI3IChzaWduIGJpdCBmb3IgMjggYml0IGludGVn ZXJzKQoKKGdsb2JhbC1zZXQta2V5IFsgZjkgXSAnY29taW50LXByZXZpb3VzLW1hdGNoaW5nLWlu cHV0LWZyb20taW5wdXQpCihnbG9iYWwtc2V0LWtleSBbIChjb250cm9sIHJldHVybikgXSAnbmV3 bGluZSkKCjs7IFRhcmd1cyB3aXJlbGVzcyBtb3VzZSB3aGVlbAooZGVmdW4gdXAtc2xpZ2h0bHkg KCkgKGludGVyYWN0aXZlKSAoc2Nyb2xsLXVwIDUpKQooZGVmdW4gZG93bi1zbGlnaHRseSAoKSAo aW50ZXJhY3RpdmUpIChzY3JvbGwtZG93biA1KSkKKGdsb2JhbC1zZXQta2V5IFttb3VzZS00XSAn ZG93bi1zbGlnaHRseSkKKGdsb2JhbC1zZXQta2V5IFttb3VzZS01XSAndXAtc2xpZ2h0bHkpCihk ZWZ1biBsZWZ0LXNsaWdodGx5ICgpIChpbnRlcmFjdGl2ZSkgKGJhY2t3YXJkLWNoYXIgMTUpKQoo ZGVmdW4gcmlnaHQtc2xpZ2h0bHkgKCkgKGludGVyYWN0aXZlKSAoZm9yd2FyZC1jaGFyIDE1KSkK KGRlZnVuIHVwLW9uZSAoKSAoaW50ZXJhY3RpdmUpIChzY3JvbGwtdXAgMSkpCihkZWZ1biBkb3du LW9uZSAoKSAoaW50ZXJhY3RpdmUpIChzY3JvbGwtZG93biAxKSkKKGdsb2JhbC1zZXQta2V5IFtT LW1vdXNlLTRdICdsZWZ0LXNsaWdodGx5KQooZ2xvYmFsLXNldC1rZXkgW1MtbW91c2UtNV0gJ3Jp Z2h0LXNsaWdodGx5KQooZGVmdW4gdXAtYS1sb3QgKCkgKGludGVyYWN0aXZlKSAoc2Nyb2xsLXVw KSkKKGRlZnVuIGRvd24tYS1sb3QgKCkgKGludGVyYWN0aXZlKSAoc2Nyb2xsLWRvd24pKQooZ2xv YmFsLXNldC1rZXkgW0MtbW91c2UtNF0gJ2Rvd24tYS1sb3QpCihnbG9iYWwtc2V0LWtleSBbQy1t b3VzZS01XSAndXAtYS1sb3QpCgoMCjs7OzsgICAgICAgICAgICAgICAgICoqKiogUFJPUEVSVElF UyAqKioqCihwdXQgJ2JhY2tzcGFjZSAnYXNjaWktY2hhcmFjdGVyIDgpCgoMCjs7OzsgICAgICAg ICAgICAgICAgICoqKiogU0VUVElOR1MgKioqKgoKKGRlZnVuIHVzZXJwYXRoICh4KQogIDs7IH4k VVNFUiB3aWxsIGdpdmUgdGhlIGhvbWUgZGlyZWN0b3J5IG9mIHRoZSB1c2VyCiAgOzsgVGhpcyBp cyBiZXR0ZXIgdGhhbiAkSE9NRSBvciB+IHdoZW4gYSB1c2VyIGhhcyB1c2VkCiAgOzsgdGhlIHN1 IGNvbW1hbmQgdG8gZWZmZWN0aXZlbHkgYmVjb21lIGFub3RoZXIgdXNlciwgYmVjYXVzZQogIDs7 ICRVU0VSIHJlZmxlY3RzIHRoZSByZWFsIHVzZXIuCiAgKGV4cGFuZC1maWxlLW5hbWUgKGNvbmNh dCAifiIgKGdldGVudiAiVVNFUiIpIHgpKSkKCihkZWZ2YXIgb3JpZy1sb2FkLXBhdGggbG9hZC1w YXRoKQoKKHNldHEgbG9hZC1wYXRoIAogICAgICAoYXBwZW5kCiAgICAgICAnKCAKCSAgOyB0aGVz ZSBhcmUgdGhlIGRpc3RyaWJ1dGlvbiBkaXJlY3RvcmllcyBhdCBJQVM6CgkgICAgIi9ob21lL3Nw ZWNpYWwvdW5pdmFsZW5jZS91c3Ivc2hhcmUvZW1hY3Mvc2l0ZS1saXNwIiAKCgkgIDsgZm9yIGRl dmVsb3BtZW50CgkgIDs7ICJ+L3NyYy9jb3EtYnVpbGRlci9zcmMvUHJvb2ZHZW5lcmFsL2ZpbGVz L1Byb29mR2VuZXJhbC1naXRodWItRGFuR3JheXNvbi90cyIKCSAgOzsgIn4vc3JjL2NvcS1idWls ZGVyL3NyYy9Qcm9vZkdlbmVyYWwvZmlsZXMvUHJvb2ZHZW5lcmFsLWdpdGh1Yi1EYW5HcmF5c29u L2dlbmVyaWMiCgoJICA7IHdoeSBkbyB3ZSBuZWVkIHRoaXM/CgkgIDsgIn4vc3JjL2NvcS1idWls ZGVyL3NoYXJlL2VtYWNzL3NpdGUtbGlzcC9Qcm9vZkdlbmVyYWwvZ2VuZXJpYyIKCgkgIDsgIn4v c3JjL2NvcS1idWlsZGVyL3NoYXJlL2VtYWNzL3NpdGUtbGlzcCIKCSAgKQogICAgICAgKG1hcGNh ciAndXNlcnBhdGggYCgiL3NyYy9NMi9NMi1NYWNhdWxheTIvTTIvQlVJTEQvZGFuL2J1aWxkcy50 bXAvZWluc3RlaW5pdW0tbWFzdGVyL01hY2F1bGF5Mi9lbWFjcyIgIi9zcmMvTTIvTTItTWFjYXVs YXkyL00yL01hY2F1bGF5Mi9lbWFjcyIgIi9lbWFjcyIgIi9ob21lL2VtYWNzIiAiL3NyYy9Ib1RU L2NvcS1EYW5HcmF5c29uL3Rvb2xzIiAiL2xvY2FsL3NoYXJlL2VtYWNzL3NpdGUtbGlzcCIpKQog ICAgICAgb3JpZy1sb2FkLXBhdGgKICAgICAgICkpCgooc2V0LWN1cnNvci1jb2xvciAicmVkIikK KGRlZnVuIGRhcmtlbiAoKQogICJTZXQgY29sb3JzIHRvIHdoaXRlIG9uIGJsYWNrLiIKICAoaW50 ZXJhY3RpdmUpCiAgKG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzIG5pbCAnKChiYWNrZ3JvdW5kLW1v ZGUgLiBkYXJrKSAoZm9yZWdyb3VuZC1jb2xvciAuICJ3aGl0ZSIpIChiYWNrZ3JvdW5kLWNvbG9y IC4gImJsYWNrIikpKSkKKGRlZnVuIGJyaWdodGVuICgpCiAgIlNldCBjb2xvcnMgdG8gYmxhY2sg b24gd2hpdGUuIgogIChpbnRlcmFjdGl2ZSkKICAobW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnMgbmls ICcoKGJhY2tncm91bmQtbW9kZSAuIGxpZ2h0KSAoZm9yZWdyb3VuZC1jb2xvciAuICJibGFjayIp IChiYWNrZ3JvdW5kLWNvbG9yIC4gIndoaXRlIikpKSkKOzsgKGdsb2JhbC1zZXQta2V5IFsgKHN1 cGVyIGQpIF0gJ2RhcmtlbikKOzsgKGdsb2JhbC1zZXQta2V5IFsgKHN1cGVyIGIpIF0gJ2JyaWdo dGVuKQoKKHNldC1pbnB1dC1tb2RlIG5pbCBuaWwgMSkKCjsgbXkgbW9kZSBsaW5lCihzZXRxLWRl ZmF1bHQgbW9kZS1saW5lLXN5c3RlbS1uYW1lIChsaXN0IChzeXN0ZW0tbmFtZSkpKQooc2V0cS1k ZWZhdWx0IG1vZGUtbGluZS1idWZmZXItaWRlbnRpZmljYXRpb24gCgkgICAgICAobGlzdCAoY29u Y2F0IChzeXN0ZW0tbmFtZSkgIjogJWIiKSkpCihzZXRxLWRlZmF1bHQgbW9kZS1saW5lLW1vZGlm aWVkICIgJSogIikKKHNldHEtZGVmYXVsdCBtb2RlLWxpbmUtZm9ybWF0IGAoCgkJCQkgLChnZXRl bnYgIlVTRVIiKSAiQCIgbW9kZS1saW5lLXN5c3RlbS1uYW1lCgkJCQkgIjogJSolKyUqICViICIK CQkJCSBnbG9iYWwtbW9kZS1zdHJpbmcKCQkJCSAiICgiCgkJCQkgbW9kZS1uYW1lCgkJCQkgbWlu b3ItbW9kZS1hbGlzdAoJCQkJICIlbiIKCQkJCSBtb2RlLWxpbmUtcHJvY2VzcwoJCQkJICIpICVw ICVdICIKCQkJCSBtb2RlLWxpbmUtbXVsZS1pbmZvCgkJCQkgKSkKCjs7IChzZXRxIGRpc3BsYXkt dGltZS1kYXktYW5kLWRhdGUgdCkKOzsgKGdsb2JhbC1zZXQta2V5IFsgKGNvbnRyb2wgYykgKHQp IF0gJ2Rpc3BsYXktdGltZSkKOzsgKGlmIChlcXVhbCBzeXN0ZW0tbmFtZSAidTEyMy5tYXRoLnVp dWMuZWR1IikgKGRpc3BsYXktdGltZSkpCgooZGVmdW4gcmVnZXhwLW9yIChhIGIgJnJlc3QgYykK ICAgICAobGV0ICgoeCAoY29uY2F0IGEgIlxcfCIgYikpKQoJICAoaWYgYyAoYXBwbHkgJ3JlZ2V4 cC1vciAoY29ucyB4IGMpKSB4KSkpCihwdXQgICdldmFsLWV4cHJlc3Npb24gJ2Rpc2FibGVkIG5p bCkKKHB1dCAgJ21pbmlidWZmZXItY29tcGxldGUtYW5kLWV4aXQgJ2Rpc2FibGVkIG5pbCkKKHNl dHEgbGlzcC1ib2R5LWluZGVudCAyKQoKDAo7Ozs7ICAgICAgICAgICAgICAgICAqKioqIEJJTkRJ TkdTICoqKioKCihkZWZ1biBteS1zZXQtc2VsZWN0aXZlLWRpc3BsYXkgKGFyZykKICAiTGlrZSBz ZXQtc2VsZWN0aXZlLWRpc3BsYXkgZXhjZXB0IG1ha2VzIHRoZSBjdXJyZW50IGxpbmUgdGhlCmlu bmVybW9zdCBvbmUgdGhhdCdzIHZpc2libGUuICBQcmVmaXggYXJndW1lbnQgY2F1c2VzIGl0IHRv IHR1cm4Kc2VsZWN0aXZlIGRpc3BsYXkgb2ZmLiIKICAoaW50ZXJhY3RpdmUgIlAiKQogIChpZiBh cmcKICAgICAgKHNldC1zZWxlY3RpdmUtZGlzcGxheSBuaWwpCiAgICAoc2F2ZS1leGN1cnNpb24K ICAgICAgKGxldCAoCgkgICAgKGJvbCAocHJvZ24gKGJlZ2lubmluZy1vZi1saW5lKSAocG9pbnQp KSkKCSAgICAoaW5kIChwcm9nbiAoZm9yd2FyZC10by1pbmRlbnRhdGlvbiAwKSAocG9pbnQpKSkp Cgkoc2V0LXNlbGVjdGl2ZS1kaXNwbGF5ICgrIDEgKC0gaW5kIGJvbCkpKSkpKSkKKGdsb2JhbC1z ZXQta2V5IFsgKGNvbnRyb2wgeCkgKCQpIF0gJ215LXNldC1zZWxlY3RpdmUtZGlzcGxheSkKCihk ZWZ1biB1cGRhdGUtc2NyZWVuICgpIChzZXQtd2luZG93LXN0YXJ0IChzZWxlY3RlZC13aW5kb3cp ICh3aW5kb3ctc3RhcnQgKHNlbGVjdGVkLXdpbmRvdykpKSkKCihkZWZ1biBwdXNoLXN0YXRlICgp CiAgIlNhdmVzIHRoZSBzdGF0ZSBvZiB0aGUgZW1hY3Mgc2NyZWVuLiAgR2V0IGJhY2sgd2l0aCBc XFtleGl0LXJlY3Vyc2l2ZS1lZGl0XS4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKCkgKHNhdmUt d2luZG93LWV4Y3Vyc2lvbiAoc2F2ZS1leGN1cnNpb24gKHNhdmUtcmVzdHJpY3Rpb24gKHJlY3Vy c2l2ZS1lZGl0KSkpKSkpCihnbG9iYWwtdW5zZXQta2V5IFsgKG1ldGEgaykgXSkJCTsgd2FzIGtp bGwtc2VudGVuY2UKKGdsb2JhbC1zZXQta2V5IFsgKG1ldGEgcykgKG1ldGEgcykgXSAndGFncy1z ZWFyY2gpCihnbG9iYWwtc2V0LWtleSBbIChtZXRhIFIpIF0gJ3RhZ3MtcXVlcnktcmVwbGFjZSkK KGdsb2JhbC1zZXQta2V5IFsgKG1ldGEgPyopIF0gJ3hyZWYtcG9wLW1hcmtlci1zdGFjaykKKGds b2JhbC1zZXQta2V5IFsgKG1ldGEgPywpIF0gJ3RhZ3MtbG9vcC1jb250aW51ZSkKKGdsb2JhbC1z ZXQta2V5IFsgKGNvbnRyb2wgYykgKGUpIF0gJ3B1c2gtc3RhdGUpCihnbG9iYWwtc2V0LWtleSBb IChjb250cm9sIHgpIChjb250cm9sIHIpIF0gJ3JtYWlsKQooZ2xvYmFsLXNldC1rZXkgWyAoY29u dHJvbCBjKSAoY29udHJvbCBwKSBdICdsaXN0LXByb2Nlc3NlcykKKGdsb2JhbC1zZXQta2V5IFsg KG1ldGEgc3BhY2UpIF0gJ2p1c3Qtb25lLXNwYWNlKQooZ2xvYmFsLXNldC1rZXkgWyAoY29udHJv bCBjKSAoY29udHJvbCBlKSBdICdldmFsLWN1cnJlbnQtYnVmZmVyKQooZ2xvYmFsLXNldC1rZXkg WyAobWV0YSBlKSBdICdjb3B5LXJlc3Qtb2YtbGluZS1hcy1raWxsKQooZ2xvYmFsLXNldC1rZXkg WyAoY29udHJvbCBjKSAobWV0YSBlKSBdICdrbWFjcm8tZWRpdC1tYWNybykKKGdsb2JhbC1zZXQt a2V5IFsgKGNvbnRyb2wgYykgKG1ldGEgcCkgXSAna21hY3JvLWN5Y2xlLXJpbmctcHJldmlvdXMp CihnbG9iYWwtc2V0LWtleSBbIChjb250cm9sIGMpIChtZXRhIG4pIF0gJ2ttYWNyby1jeWNsZS1y aW5nLW5leHQpCihnbG9iYWwtc2V0LWtleSBbIChjb250cm9sIGMpIChjb250cm9sIGQpIF0gJ3Rv Z2dsZS1kZWJ1Zy1vbi1lcnJvcikKKGRlZnVuIHRvZ2dsZS1kZWJ1Zy1vbi1lcnJvciAoKSAKICAo aW50ZXJhY3RpdmUpIAogIChtZXNzYWdlIAogICAoaWYgKHNldHEgZGVidWctb24tcXVpdCAoc2V0 cSBkZWJ1Zy1vbi1lcnJvciAobm90IGRlYnVnLW9uLWVycm9yKSkpIAogICAgICAgIkRlYnVnIG9u IGVycm9yIGFuZCBxdWl0LiIgIk5vIGRlYnVnIG9uIGVycm9yIGFuZCBxdWl0LiIpKSkKCihnbG9i YWwtc2V0LWtleSBbID9cQy0xIF0gJ3NldC1tYXJrLWNvbW1hbmQpCgo7OyAoc2V0cSBjb21pbnQt cHJvbXB0LXJlYWQtb25seSB0KQooYWRkLWhvb2sgJ00yLW1vZGUtaG9vayAobGFtYmRhICgpIChk ZWZpbmUta2V5IE0yLWNvbWludC1tb2RlLW1hcCBbIChjb250cm9sIHcpIF0gJ2NvbWludC1raWxs LXJlZ2lvbikpKQoKKGRlZnVuIHRvLWVuZC1vZi1wcm9tcHQoKQogICAgICJNb3ZlIHRvIGVuZCBv ZiBzaGVsbC1wcm9tcHQgb24gdGhpcyBsaW5lIgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoYmVn aW5uaW5nLW9mLWxpbmUpCiAgICAgOyAoaWYgKGxvb2tpbmctYXQgZXNoZWxsLXByb21wdC1yZWdl eHApCiAgICAgKGlmIChsb29raW5nLWF0IHNoZWxsLXByb21wdC1wYXR0ZXJuKQoJICAgICAgIChn b3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkKCSAgKGJhY2stdG8taW5kZW50YXRpb24pKSkKKGdsb2Jh bC1zZXQta2V5IFsgKG1ldGEgcmV0dXJuKSBdICd0by1lbmQtb2YtcHJvbXB0KQooZ2xvYmFsLXNl dC1rZXkgWyAobWV0YSBtKSBdICd0by1lbmQtb2YtcHJvbXB0KQooZGVmdW4gY29weS1yZXN0LW9m LWxpbmUtYXMta2lsbCAoKQogICAgICJDb3B5IHJlc3Qgb2YgbGluZSBpbnRvIGtpbGwgYnVmZmVy IgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoc2F2ZS1leGN1cnNpb24KCSAgKGxldCAoKGJlZyAo cG9pbnQpKSkKCSAgICAgICAoZW5kLW9mLWxpbmUpCgkgICAgICAgKGNvcHktcmVnaW9uLWFzLWtp bGwgYmVnIChwb2ludCkpKSkpCihkZWZ1biBjb3B5LXJlc3Qtb2YtbGluZS10by1lb2IoKQogICAg ICJDb3B5IHRoZSByZXN0IG9mIHRoZSBsaW5lIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwgbGVh dmluZyBwb2ludCB0aGVyZS4iCiAgICAgKGludGVyYWN0aXZlKQogICAgIChjb3B5LXJlc3Qtb2Yt bGluZS1hcy1raWxsKQogICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgKHlhbmspCiAg ICAgKQooZGVmdW4gY29weS1jb21tYW5kLXRvLWVvYigpCiAgICAgIkNvcHkgdGhlIHJlc3Qgb2Yg dGhlIGxpbmUgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyLCBsZWF2aW5nIHBvaW50IHRoZXJlLiIK ICAgICAoaW50ZXJhY3RpdmUpCiAgICAgKHRvLWVuZC1vZi1wcm9tcHQpCiAgICAgKGNvcHktcmVz dC1vZi1saW5lLWFzLWtpbGwpCiAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAoeWFu aykKICAgICAoZXhjaGFuZ2UtcG9pbnQtYW5kLW1hcmspCiAgICAgKQooZ2xvYmFsLXNldC1rZXkg WyAobWV0YSBXKSBdICdjb3B5LWNvbW1hbmQtdG8tZW9iKQooZGVmdW4gY29weS1jb21tYW5kLXRv LWtpbGwoKQogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoc2F2ZS1leGN1cnNpb24KCSAgKHRvLWVu ZC1vZi1wcm9tcHQpCgkgIChjb3B5LXJlc3Qtb2YtbGluZS1hcy1raWxsKSkpCihkZWZ1biBjb3B5 LWxpbmUtYXMta2lsbCAoKQogICAgICJDb3B5IHJlc3Qgb2YgbGluZSBpbnRvIGtpbGwgYnVmZmVy IgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoc2F2ZS1leGN1cnNpb24KCSAgKGJlZ2lubmluZy1v Zi1saW5lKQoJICAobGV0ICgoYmVnIChwb2ludCkpKQoJICAgICAgIChlbmQtb2YtbGluZSkKCSAg ICAgICAoZm9yd2FyZC1jaGFyKQoJICAgICAgIChjb3B5LXJlZ2lvbi1hcy1raWxsIGJlZyAocG9p bnQpKSkpKQo7OyAoc2V0cSBkaXItbG9jYWxzLWZpbGUgIi5teS1kaXItbG9jYWxzLmVsIikKKGds b2JhbC1zZXQta2V5IFsgKG1ldGEgRSkgXSAnY29weS1saW5lLWFzLWtpbGwpCihnbG9iYWwtc2V0 LWtleSBbIChtZXRhID9gKSBdICdzaGVsbCkKKGdsb2JhbC1zZXQta2V5IFsgMjcgZjEgXSAnc2hl bGwpCihnbG9iYWwtc2V0LWtleSBbIChtZXRhIGYxKSBdICdzaGVsbCkJO3VuZGVyIHVidW50dSBB bHQtRjEgYW5kIEFsdC1GMiBhcmUgbm93IGRlZGljYXRlZCB0byAiRGFzaCIsIHRoZSBhcHBsaWNh dGlvbiBkb2NrCihnbG9iYWwtc2V0LWtleSBbIChtZXRhIGYzKSBdICdzaGVsbCkKKGdsb2JhbC1z ZXQta2V5IFsgKG1ldGEgcmV0dXJuKSBdICdiYWNrLXRvLWluZGVudGF0aW9uKQooZ2xvYmFsLXNl dC1rZXkgWyAoY29udHJvbCBjKSAoPSkgXSAnZ290by1saW5lKQooZ2xvYmFsLXNldC1rZXkgWyAo Y29udHJvbCB4KSAoY29udHJvbCBoKSBdICdoZWxwLWNvbW1hbmQpCihnbG9iYWwtc2V0LWtleSBb IChjb250cm9sIHgpIChjb250cm9sIG4pIF0gJ25hcnJvdy10by1wYWdlKQooZGVmdW4gbXktcHJl dmlvdXMtd2luZG93KCkgCiAgICAgIk1vdmUgY3Vyc29yIHRvIHByZXZpb3VzIHdpbmRvdyBvbiBz Y3JlZW4uIgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAob3RoZXItd2luZG93IC0xKSkKKGdsb2Jh bC1zZXQta2V5IFsgKGNvbnRyb2wgeCkgKHApIF0gJ215LXByZXZpb3VzLXdpbmRvdykKKGRlZnVu IHNldC1oaWdoLWJpdChjIGNvdW50KQogICAgICJTZXQgdGhlIHNpZ24gYml0IG9uIHRoZSBjaGFy YWN0ZXIgcHJvdmlkZWQgYnkgdGhlIHVzZXIsIGFuZCBpbnNlcnQgaXQiCiAgICAgKGludGVyYWN0 aXZlICJjQ2hhcmFjdGVyOiBcbnAiKQogICAgIChpbnNlcnQtY2hhciAoKyAxMjggYykgY291bnQp KQooZ2xvYmFsLXNldC1rZXkgWyAobWV0YSBjb250cm9sIHEpIF0gJ3NldC1oaWdoLWJpdCkKKGds b2JhbC1zZXQta2V5IFsgKGFsdCBzKSBdIFsgP1wzMzcgXSkKKGdsb2JhbC1zZXQta2V5IFsgKGFs dCBlKSBdIFsgP1wzNTEgXSApIDsg0JgKKGdsb2JhbC1zZXQta2V5IFsgKG1ldGEgY29udHJvbCBo KSBdICdiYWNrd2FyZC1raWxsLXdvcmQpCihnbG9iYWwtc2V0LWtleSBbIChjb250cm9sIHgpIChj b250cm9sIGwpIF0gJ2J1ZmZlci1tZW51KQooZ2xvYmFsLXNldC1rZXkgWyAoY29udHJvbCB4KSAo Y29udHJvbCB2KSBdICd2aWV3LWZpbGUpCihkZWZ1biBwb3AtdG8tb2xkLWJ1ZmZlciAoYnVmZmVy KQogICAgICJQb3AgdG8gYW4gZXhpc3RpbmcgYnVmZmVyIGluIGFub3RoZXIgd2luZG93LiIKICAg ICAoaW50ZXJhY3RpdmUgImJQb3AgdG8gb2xkIGJ1ZmZlcjogIikKICAgICAocG9wLXRvLWJ1ZmZl ciBidWZmZXIgdCkKICAgICApCihkZWZ1biBzd2l0Y2gtdG8tb2xkLWJ1ZmZlciAoYnVmZmVyKQog ICAgICJTd2l0Y2ggdG8gYW4gZXhpc3RpbmcgYnVmZmVyIGluIHRoZSBzYW1lIHdpbmRvdy4iCiAg ICAgKGludGVyYWN0aXZlICJiU3dpdGNoIHRvIG9sZCBidWZmZXI6ICIpCiAgICAgKHN3aXRjaC10 by1idWZmZXIgYnVmZmVyKQogICAgICkKKGdsb2JhbC1zZXQta2V5IFsgKGNvbnRyb2wgeCkgKGIp IF0gJ3N3aXRjaC10by1idWZmZXIpCihnbG9iYWwtc2V0LWtleSBbIChjb250cm9sIHgpIChjb250 cm9sIG4pIF0gJ3JlbmFtZS11bmlxdWVseSkKKGdsb2JhbC1zZXQta2V5IFsgKGNvbnRyb2wgeCkg KGNvbnRyb2wgYikgXSAnYnVyeS1idWZmZXIpICAgICAKKGdsb2JhbC1zZXQta2V5IFsgKG1ldGEg Y29udHJvbCByKSBdICdxdWVyeS1yZXBsYWNlLXJlZ2V4cCkKKGdsb2JhbC1zZXQta2V5IFsgKG1l dGEgcikgXSAncmVwbGFjZS1yZWdleHApCihkZWZ1biBraWxsLXRoaXMtYnVmZmVyICgpCiAgICAg IktpbGwgdGhpcyBidWZmZXIgaW1tZWRpYXRlbHkuIgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAo a2lsbC1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCihnbG9iYWwtc2V0LWtleSBbIChjb250cm9s IHgpIChjb250cm9sIGspIF0gJ2tpbGwtdGhpcy1idWZmZXIpCgooZGVmdW4gcmVwbGFjZS1yZWdl eHAtc2F2ZS1leGN1cnNpb24oKQogICAgICJTYW1lIGFzIHJlcGxhY2UtcmVnZXhwLCBidXQgcmVz dG9yZXMgdGhlIHBvaW50IGFmdGVyd2FyZHMuIgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoc2F2 ZS1leGN1cnNpb24KCSAgKGNhbGwtaW50ZXJhY3RpdmVseSAncmVwbGFjZS1yZWdleHApCgkgICkp CgooZ2xvYmFsLXNldC1rZXkgWyAobWV0YSByKSBdICdyZXBsYWNlLXJlZ2V4cC1zYXZlLWV4Y3Vy c2lvbikKKGFkZC1ob29rICd0ZXh0LW1vZGUtaG9vayAndHVybi1vZmYtYXV0by1maWxsKQooYWRk LWhvb2sgJ2h0bWwtbW9kZS1ob29rICd0dXJuLW9mZi1hdXRvLWZpbGwpCihnbG9iYWwtc2V0LWtl eSBbIChjb250cm9sIHgpIChxKSBdICdhdXRvLWZpbGwtbW9kZSkKCihkZWZ1biBzYXZlLWFsbC1i dWZmZXJzICgpCiAgICAgIlNhdmVzIGFsbCB2aXNpdGVkIGZpbGVzIHdpdGhvdXQgYXNraW5nLiIK ICAgICAoaW50ZXJhY3RpdmUpCiAgICAgKHNhdmUtc29tZS1idWZmZXJzIHQpKQooZ2xvYmFsLXNl dC1rZXkgWyAoY29udHJvbCB4KSAoY29udHJvbCB5KSBdICdzYXZlLWFsbC1idWZmZXJzKQooZ2xv YmFsLXNldC1rZXkgWyAoY29udHJvbCB4KSAoY29udHJvbCBlKSBdICdjb21waWxlKQooYXV0b2xv YWQgJ2NvbXBpbGUtaW50ZXJuYWwgImNvbXBpbGUiICIiIHQpCihhdXRvbG9hZCAna2lsbC1jb21w aWxhdGlvbiAiY29tcGlsZSIgIiIgdCkKKGdsb2JhbC1zZXQta2V5IFsgKGNvbnRyb2wgeCkgKGsp IF0gJ2tpbGwtY29tcGlsYXRpb24pCgooZGVmdW4gY291bnQtd29yZHMgKHN0YXJ0IGVuZCkKICAi UmV0dXJuIG51bWJlciBvZiB3b3JkcyBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQuIgogIChsZXQgKChj b3VudCAwKSkKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoc2F2ZS1yZXN0cmljdGlvbgoJKG5h cnJvdy10by1yZWdpb24gc3RhcnQgZW5kKQoJKGdvdG8tY2hhciAocG9pbnQtbWluKSkKCSh3aGls ZSAoZm9yd2FyZC13b3JkIDEpCgkgIChzZXRxIGNvdW50ICgxKyBjb3VudCkpKSkpCiAgICBjb3Vu dCkpCihkZWZ1biBjb3VudC1yZWdpb24gKHN0YXJ0IGVuZCkKICAiQ291bnQgbGluZXMsIHdvcmRz IGFuZCBjaGFyYWN0ZXJzIGluIHJlZ2lvbi4iCiAgKGludGVyYWN0aXZlICJyIikKICAobGV0ICgo bCAoY291bnQtbGluZXMgc3RhcnQgZW5kKSkKCSh3IChjb3VudC13b3JkcyBzdGFydCBlbmQpKQoJ KGMgKC0gZW5kIHN0YXJ0KSkpCiAgICAobWVzc2FnZSAiUmVnaW9uIGhhcyAlZCBsaW5lJXMsICVk IHdvcmQlcyBhbmQgJWQgY2hhcmFjdGVyJXMuIgoJICAgICBsIChpZiAoPSAxIGwpICIiICJzIikK CSAgICAgdyAoaWYgKD0gMSB3KSAiIiAicyIpCgkgICAgIGMgKGlmICg9IDEgYykgIiIgInMiKSkp KQooZGVmaW5lLWtleSBlc2MtbWFwICI9IiAnY291bnQtcmVnaW9uKQoKDAo7Ozs7CQkqKioqIFNI RUxMIHN0dWZmICoqKioKCihhZGQtaG9vayAnc2hlbGwtbW9kZS1ob29rIAoJICAnKGxhbWJkYSAo KSAoc2V0cSBjb21pbnQtY29tcGxldGlvbi1hZGRzdWZmaXggJygiLyIgLiAiICIpKSkKCSAgdCkK CihhZGQtaG9vayAnY29taW50LW1vZGUtaG9vayAKCSAgJyhsYW1iZGEgKCkgCgkJCQkJOyBwY29t cGxldGUgaXMgYnJva2VuCgkJCQkJOyBleGFtcGxlOiAiY3ZzIGxvZyBmb28uPFRBQj4iIHJlc3Vs dHMgaW4gbm8gZmlsZW5hbWUgY29tcGxldGlvbgoJICAgICAoc2V0cSBjb21pbnQtZHluYW1pYy1j b21wbGV0ZS1mdW5jdGlvbnMgKHJlbW92ZSAncGNvbXBsZXRlLWNvbXBsZXRpb25zLWF0LXBvaW50 IGNvbWludC1keW5hbWljLWNvbXBsZXRlLWZ1bmN0aW9ucykpKQoJICB0KQoKOyhzZXRxIGNvbWlu dC1vdXRwdXQtZmlsdGVyLWZ1bmN0aW9ucwo7ICAgICAgKGNvbnMgJ2NvbWludC13YXRjaC1mb3It cGFzc3dvcmQtcHJvbXB0IGNvbWludC1vdXRwdXQtZmlsdGVyLWZ1bmN0aW9ucykpCgooc2V0cSBj b21pbnQtaW5oaWJpdC1jYXJyaWFnZS1tb3Rpb24gdCkJOyB0aGlzIG1pZ2h0IGJlIGJhZCBmb3Ig Z2RiIC4uLgoKKGRlZnVuIGNsZWFuLXNoZWxsLWJ1ZmZlciAoKSAKICAiRm9yIHVzZSBpbiBhIHNo ZWxsIGJ1ZmZlci4gIENsZWFucyBvdXQgdGhlIHBvcnRpb24gYmVmb3JlIHBvaW50LAphbmQgb2J0 YWlucyBhIG5ldyBwcm9tcHQgYnkgZW50ZXJpbmcgYSBibGFuayBsaW5lIGF0IHRoZSBlbmQuIgog ICAgICAgIChpbnRlcmFjdGl2ZSkKCShsZXQgKChoZXJlIChwb2ludCkpKQoJICAgICAoYmVnaW5u aW5nLW9mLWJ1ZmZlcikKCSAgICAgKGtpbGwtcmVnaW9uIChwb2ludCkgaGVyZSkKCSAgICAgKGVu ZC1vZi1idWZmZXIgKCkpCgkgICAgIChjb21pbnQtc2VuZC1pbnB1dCkKCSAgICAgKHJlY2VudGVy IDApCgkgICAgICkpCgooZGVmdW4gc2VuZC1zcGFjZSAoKQogICAgICJTZW5kcyBhIHNpbmdsZSBz cGFjZSBpbW1lZGlhdGVseSB0byB0aGUgcHJvY2VzcywgYW5kIGluc2VydHMgaXQgYXQgcG9pbnQu IgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoaW5zZXJ0LXN0cmluZyAiICIpCiAgICAgKHNlbmQt c3RyaW5nIChnZXQtYnVmZmVyLXByb2Nlc3MgKGN1cnJlbnQtYnVmZmVyKSkgIiAiKQogICAgICkK CihldmFsLWFmdGVyLWxvYWQgImNvbWludCIgJyhwcm9nbgogIDsoZGVmaW5lLWtleSBjb21pbnQt bW9kZS1tYXAgIlxDLWEiICdiZWdpbm5pbmctb2YtbGluZSkKICAoZGVmaW5lLWtleSBjb21pbnQt bW9kZS1tYXAgWyAobWV0YSBzKSBdICduaWwpCiAgKHNldHEgY29taW50LWlucHV0LWF1dG9leHBh bmQgbmlsKQogIChkZWZpbmUta2V5IGNvbWludC1tb2RlLW1hcCBbIChjb250cm9sIGEpIF0gbmls KQogIChkZWZpbmUta2V5IGNvbWludC1tb2RlLW1hcCBbIChjb250cm9sIGMpIChjb250cm9sIHgp IF0gJ2NvbWludC1raWxsLWlucHV0KQogIChkZWZpbmUta2V5IGNvbWludC1tb2RlLW1hcCBbIChj b250cm9sIGMpIChjKSBdICdjbGVhbi1zaGVsbC1idWZmZXIpCiAgKGRlZmluZS1rZXkgY29taW50 LW1vZGUtbWFwIFsgKGNvbnRyb2wgYykgKHNwYWNlKSBdICdzZW5kLXNwYWNlKQogIChkZWZpbmUt a2V5IGNvbWludC1tb2RlLW1hcCBbIChtZXRhIHIpIF0gbmlsKQogICkpCgooZGVmdW4gc2VuZC1i dWZmZXItdG8tc2hlbGwgKCkgCiAgICAgKGludGVyYWN0aXZlKQogICAgIChzZW5kLXJlZ2lvbiAi c2hlbGwiIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkKKGRlZnVuIHNlbmQtY29tbWFuZC10by1z aGVsbCgpIAogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoc2F2ZS1leGN1cnNpb24KCSAgKGxldCAo KGNtZCAoYnVmZmVyLXN1YnN0cmluZwoJCSAgICAgIChwcm9nbiAodG8tZW5kLW9mLXByb21wdCkg KHBvaW50KSkKCQkgICAgICAocHJvZ24gKGVuZC1vZi1saW5lKSAocG9pbnQpKSkpKQoJICAgICAg IChzZXQtYnVmZmVyICIqc2hlbGwqIikKCSAgICAgICAoZW5kLW9mLWJ1ZmZlcikKCSAgICAgICAo aW5zZXJ0IGNtZCkKCSAgICAgICAoY29taW50LXNlbmQtaW5wdXQpKSkpCjs7IHB1dCBzb21ld2hl cmUgZWxzZTogKGdsb2JhbC1zZXQta2V5ICJcXlhzIiAnc2VuZC1jb21tYW5kLXRvLXNoZWxsKQoK DAo7Ozs7CQkqKioqIEMgTU9ERSBlZGl0aW5nICoqKioKCihhZGQtaG9vayAnYy1tb2RlLWhvb2sg CgkgIChmdW5jdGlvbiAKCSAgIChsYW1iZGEoKQoJICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/ XyAidyIpKSkpCihhZGQtaG9vayAnYysrLW1vZGUtaG9vayAKCSAgKGZ1bmN0aW9uIAoJICAgKGxh bWJkYSgpCgkgICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9fICJ3IikpKSkKCQkJCSAgIAooYy1h ZGQtc3R5bGUgIm1pbmUiICcoCiAgIChjLWJhc2ljLW9mZnNldCAuIDUpCiAgIChjLWF1dG8tbmV3 bGluZSB0KQogICAoYy1lbGVjdHJpYy1mbGFnIHQpCiAgIChjLWNvbW1lbnQtb25seS1saW5lLW9m ZnNldCAuICgwIC4gMCkpCiAgIChjLWhhbmdpbmctYnJhY2VzLWFsaXN0IChzdGF0ZW1lbnQtY2Fz ZS1vcGVuIGFmdGVyKSAoZGVmdW4tb3BlbiBhZnRlcikgKHN1YnN0YXRlbWVudC1vcGVuIGFmdGVy KSAoYmxvY2stb3BlbiBhZnRlcikpCiAgIChjLW9mZnNldHMtYWxpc3QgKGMgLiAzKSAoY3BwLW1h Y3JvIC4gMCkgKHN0YXRlbWVudC1jb250IC4gMikgKGNhc2UtbGFiZWwgLiArKSAoY2xhc3MtY2xv c2UgLiArKSAoZGVmdW4tY2xvc2UgLiArKSAoYmxvY2stY2xvc2UgLiArKSkpKQooYWRkLWhvb2sg J2MtbW9kZS1ob29rIChmdW5jdGlvbiAobGFtYmRhICgpIChjLXNldC1zdHlsZSAibWluZSIpKSkp Cgo7OzsgKioqKiBjLW1vZGUgZml4ZXMgKioqKgo7OyhhZGQtaG9vayAnYy1tb2RlLWhvb2sgKGZ1 bmN0aW9uIChsYW1iZGEgKCkKOzsgICAgIChkZWZpbmUta2V5IGMtbW9kZS1tYXAgWyAobWV0YSBl KSBdIG5pbCkpKSkKCgoMCjs7OzsgCQkqKioqIFNFVFVQICoqKioKKHB1dCAnbmFycm93LXRvLXJl Z2lvbiAnZGlzYWJsZWQgbmlsKQoKOzs7OzsgCQkqKioqIE1BSUwgKioqKgoKKHNldHEgc2VuZG1h aWwtcHJvZ3JhbSAiL3Vzci9saWIvc2VuZG1haWwiKSA7IGZha2VtYWlsIGRvZXNuJ3QgcmVhbGx5 IHdvcmsKCihhZGQtaG9vayAncm1haWwtbW9kZS1ob29rIChmdW5jdGlvbiAobGFtYmRhKCkKICAo ZGVmaW5lLWtleSBybWFpbC1tb2RlLW1hcCBbIChtZXRhIG0pIF0gJ25pbCkpKSkKKGRlZnVuIGNs ZWFyLW1haWwtYWxpYXNlcyAoKQogICAgICJDbGVhciB0aGUgbGlzdCBvZiBtYWlsIGFsaWFzZXMs IGZvcmNpbmcgLm1haWxyYyB0byBiZSByZXJlYWQgbmV4dCB0aW1lCmEgbWVzc2FnZSBpcyBzZW50 LiIKICAgICAoaW50ZXJhY3RpdmUpCiAgICAgKHNldHEgbWFpbC1hbGlhc2VzIHQpKQoKKGRlZnVu IG15LW1haWwtc2lnbmF0dXJlICgpCiAgIlNpZ24gbGV0dGVyIHdpdGggY29udGVudHMgb2Ygfi8u c2lnIGZpbGUuIgogIChpbnRlcmFjdGl2ZSkKICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogIChp bnNlcnQtZmlsZS1jb250ZW50cyAoZXhwYW5kLWZpbGUtbmFtZSAifi8uc2lnIikpCiAgKGdvdG8t Y2hhciAocG9pbnQtbWF4KSkKICApCihhZGQtaG9vayAnbWFpbC1tb2RlLWhvb2sgKGZ1bmN0aW9u IChsYW1iZGEgKCkgKGRlZmluZS1rZXkgbWFpbC1tb2RlLW1hcCBbIChjb250cm9sIGMpIChjb250 cm9sIHcpIF0gJ215LW1haWwtc2lnbmF0dXJlKSkpKQoKCihzZXRxIHJtYWlsLWlnbm9yZWQtaGVh ZGVycyAKICAgICAgKHJlZ2V4cC1vciAKICAgICAgICAgICAgICAgICAiXmFjY2VwdGxhbmd1YWdl OiIKICAgICAgICAgICAgICAgICAiXkFjY2VwdC1MYW5ndWFnZToiCgkJICJeQWNjcmVkaXRvcjoi CgkJICJeQXBwcm92ZWQtQnk6IgoJCSAiXkF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IgoJCSA7ICJe QkNDOiIKCQkgIl5DYWNoZS1Qb3N0LVBhdGg6IgoJCSAiXkNvbW1lbnRzPzoiCgkJICJeQ29udGVu dC1JZGVudGlmaWVyOiIKCQkgIl5Db250ZW50LUxlbmd0aDoiCgkJICJeQ29udGVudC1EaXNwb3Np dGlvbjoiCgkJICJeQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzoiICJeQ29udGVudC1UeXBlOiIg OyBtYWtpbmcgdGhlc2UgdHdvIHZpc2libGUgd291bGQgYWxsb3cgImRldGFjaCIgdG8gd29yaywg YnV0IGp1c3QgcHJlc3MgInQiIGZpcnN0CgkJICJeQ29udGVudC1DbGFzczoiCgkJICJeQ29udGVu dC1MYW5ndWFnZToiCgkJICJeRGVsaXZlcnktRGF0ZToiCgkJICJeRG9tYWluS2V5LVNpZ25hdHVy ZToiCgkJICJeRW52ZWxvcGUtVG86IgoJCSAiXkNvbnRlbnQtTUQ1OiIKCQkgIl5EZWxpdmVyZWQt VG86IgoJCSAiXkRpc3RyaWJ1dGlvbjoiCgkJICJES0lNLVNpZ25hdHVyZToiCgkJICJeRXJyb3Jz LVRvOiIKCQkgIl5GYWNlOiIKCQkgIl5JbXBvcnRhbmNlOiIKCQkgIl5MaW5lczoiCgkJICJebGlz dC0uKjoiCgkJICJeTWFpbC1Gcm9tOiIKCQkgIl5NYWlsaW5nLUxpc3Q6IgoJCSAiXk1lc3NhZ2Ut SVtEZF06IgoJCSAiXk1pbWUtVmVyc2lvbjoiCgkJICJeTmV3cy1Tb2Z0d2FyZToiCgkJICJeTm50 cC1Qb3N0aW5nLS4qOiIKCQkgIl5Pcmdhbml6YXRpb246IgoJCSAiXk9yaWdpbjoiCgkJICJeUGF0 aDoiCgkJICJeUG9zdGVkLUFuZC1NYWlsZWQ6IgoJCSAiXlByaW9yaXR5OiIKCQkgIl5QcmVjZWRl bmNlOiIKCQkgIl5SZWNlaXZlZDoiCgkJICJeUmVjZWl2ZWQtU1BGOiIKCQkgIl5SZWZlcmVuY2Vz OiIKCQkgIl5SZWxheS1WZXJzaW9uOiIKCQkgIl5SZXNlbnQtTWVzc2FnZS1JRDoiCgkJICJeUmV0 dXJuLVBhdGg6IgoJCSAiXlNlbmRlcjoiCgkJICJeU3RhdHVzOiIKCQkgIl5TdWJqZWN0OiBObyBT dWJqZWN0JCIKCQkgIl5TdW1tYXJ5LUxpbmU6IgoJCSAiXlRocmVhZC1Ub3BpYzoiCgkJICJeVGhy ZWFkLUluZGV4OiIKCQkgIl5Vc2VyLUFnZW50OiIKCQkgIl5WaWE6IgoJCSAiXlgtLio6IgoJCSAp KQo7IChzZXRxIDsgc2V0dXAgZm9yIHUwMAo7CXJtYWlsLWZpbGUtbmFtZSAoZXhwYW5kLWZpbGUt bmFtZSAifi92YXIvbWFpbGJveC9tYWlsIikKOyAgICAgICBybWFpbC1kZWZhdWx0LXJtYWlsLWZp bGUgKGV4cGFuZC1maWxlLW5hbWUgIn4vdmFyL21haWxib3gvbWFpbCIpCjsgICAgICAgcm1haWwt bGFzdC1ybWFpbC1maWxlIChleHBhbmQtZmlsZS1uYW1lICJ+L3Zhci9tYWlsYm94L29sZG1haWwi KSkKKGlmIChnZXRlbnYgIk1BSUwiKQogICAgKHNldHEgcm1haWwtc3Bvb2wtZGlyZWN0b3J5IChm aWxlLW5hbWUtZGlyZWN0b3J5IChnZXRlbnYgIk1BSUwiKSkpKQoKKGRlZnVuIHJtYWlsLXJlcGx5 LXRvLXNlbmRlci1vbmx5IChldmVyeWJvZHkpCiAgIlJlcGx5IHRvIHRoZSBjdXJyZW50IG1lc3Nh Z2UuICBOb3JtYWxseSBpZ25vcmUgYWxsIG90aGVyIHJlY2lwaWVudHMgb2YKb3JpZ2luYWwgbWVz c2FnZTsgcHJlZml4IGFyZ3VtZW50IG1lYW5zIENDIHRoZW0uICBXaGlsZSBjb21wb3NpbmcgdGhl IHJlcGx5LAp1c2UgXFxbbWFpbC15YW5rLW9yaWdpbmFsXSB0byB5YW5rIHRoZSBvcmlnaW5hbCBt ZXNzYWdlIGludG8gaXQuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKHJtYWlsLXJlcGx5IChub3Qg ZXZlcnlib2R5KSkKICApCjsgKGFkZC1ob29rICdybWFpbC1tb2RlLWhvb2sgKGZ1bmN0aW9uIChs YW1iZGEoKSAoZGVmaW5lLWtleSBybWFpbC1tb2RlLW1hcCAiciIgJ3JtYWlsLXJlcGx5LXRvLXNl bmRlci1vbmx5KSkpKQoKKGFkZC1ob29rICdtYWlsLW1vZGUtaG9vayAoZnVuY3Rpb24gKGxhbWJk YSAoKSAoc2V0cSBwYXJhZ3JhcGgtc3RhcnQgIlsgXHRcblxmXSIpKSkpCgooZGVmdW4gcm1haWwt cmVwbHktMiAoYXJnKQogICJSZXBseSB0byB0aGUgY3VycmVudCBtZXNzYWdlLgogICBQcmVmaXgg YXJndW1lbnQgbWVhbmluZ3MgOiAKICAgICAgbm9uZSA6IHJlcGx5IGp1c3QgdG8gdGhlIHNlbmRl ciBzcGVjaWZpZWQgaW4gdGhlIEZyb20gZmllbGQKICAgICAgXFxbdW5pdmVyc2FsLWFyZ3VtZW50 XSA6IHJlcGx5IHRvIHNlbmRlciwgd2l0aCBDQyB0byB0aG9zZSBpbiBDQwogICAgICBcXFt1bml2 ZXJzYWwtYXJndW1lbnRdIDIgOiByZXBseSB0byB0aGUgcmVjaXBpZW50IHNwZWNpZmllZCBpbiB0 aGUgVG8gZmllbGQKICAgICAgXFxbdW5pdmVyc2FsLWFyZ3VtZW50XSBcXFt1bml2ZXJzYWwtYXJn dW1lbnRdIDogcmVwbHkgdG8gcmVjaXBpZW50LCB3aXRoIENDIHRvIHNlbmRlciBhbmQgdGhvc2Ug aW4gQ0MKICAgV2hpbGUgY29tcG9zaW5nIHRoZSByZXBseSwgdXNlIFxcW21haWwteWFuay1vcmln aW5hbF0gdG8geWFuayB0aGUgb3JpZ2luYWwgbWVzc2FnZQogICBpbnRvIGl0LiIKICAoaW50ZXJh Y3RpdmUgIlAiKQogIChsZXQgKHRvLXJlY2lwaWVudAkJCTsgd2hldGhlciBuZXcgVG86IGZpZWxk IGdldHMgcmVjaXBpZW50IGluc3RlYWQgb2Ygc2VuZGVyCgljYy1jYwkJCQk7IHdoZXRoZXIgbmV3 IENDOiBmaWVsZCBnZXRzIG9sZCBDQzogZmllbGQKCWNjLXNlbmRlcgkJCTsgd2hldGhlciBuZXcg Q0M6IGZpZWxkIGFsc28gZ2V0cyBzZW5kZXIKCWZyb20gcmVwbHktdG8gY2Mgc3ViamVjdCBkYXRl IHRvIG1lc3NhZ2UtaWQgcmVmZXJlbmNlcwoJICAgICByZXNlbnQtdG8gcmVzZW50LWNjIHJlc2Vu dC1yZXBseS10bwoJICAgICAobXNnbnVtIHJtYWlsLWN1cnJlbnQtbWVzc2FnZSkpCiAgICAoY29u ZCAKICAgICAoKGVxdWFsIGFyZyAnKDQpICkgKHNldHEgY2MtY2MgdCkpCiAgICAgKChlcXVhbCBh cmcgICAyICApIChzZXRxIHRvLXJlY2lwaWVudCB0KSkKICAgICAoKGVxdWFsIGFyZyAnKDE2KSkg KHNldHEgY2MtY2MgdCB0by1yZWNpcGllbnQgdCBjYy1zZW5kZXIgdCkpKQogICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgIChzYXZlLXJlc3RyaWN0aW9uCgkoaWYgcm1haWwtZW5hYmxlLW1pbWUKCSAg ICAobmFycm93LXRvLXJlZ2lvbgoJICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQoJICAgICAo aWYgKHNlYXJjaC1mb3J3YXJkICJcblxuIiBuaWwgJ21vdmUpCgkJICgxKyAobWF0Y2gtYmVnaW5u aW5nIDApKQoJICAgICAgIChwb2ludCkpKQoJICAod2lkZW4pCgkgIChnb3RvLWNoYXIgKHJtYWls LW1zZ2JlZyBybWFpbC1jdXJyZW50LW1lc3NhZ2UpKQoJICAoZm9yd2FyZC1saW5lIDEpCgkgIChp ZiAoPSAoZm9sbG93aW5nLWNoYXIpID8wKQoJICAgICAgKG5hcnJvdy10by1yZWdpb24KCSAgICAg ICAocHJvZ24gKGZvcndhcmQtbGluZSAyKSAocG9pbnQpKQoJICAgICAgIChwcm9nbiAoc2VhcmNo LWZvcndhcmQgIlxuXG4iIChybWFpbC1tc2dlbmQgcm1haWwtY3VycmVudC1tZXNzYWdlKSAnbW92 ZSkgKHBvaW50KSkpCgkgICAgKG5hcnJvdy10by1yZWdpb24gKHBvaW50KQoJCQkgICAgICAocHJv Z24gKHNlYXJjaC1mb3J3YXJkICJcbioqKiBFT09IICoqKlxuIikKCQkJCSAgICAgKGJlZ2lubmlu Zy1vZi1saW5lKSAocG9pbnQpKSkpKQoJKHNldHEgZnJvbSAobWFpbC1mZXRjaC1maWVsZCAiZnJv bSIpCgkgICAgICB0byAob3IgKG1haWwtZmV0Y2gtZmllbGQgInRvIiBuaWwgdCkgIiIpCgkgICAg ICByZXBseS10byAob3IgKG1haWwtZmV0Y2gtZmllbGQgInJlcGx5LXRvIiBuaWwgdCkgZnJvbSkK CSAgICAgIHJlcGx5LXRvIChpZiB0by1yZWNpcGllbnQgdG8gcmVwbHktdG8pCgkgICAgICBjYyAo aWYgY2MtY2MgKG9yIChtYWlsLWZldGNoLWZpZWxkICJjYyIgbmlsIHQpICIiKSAiIikKCSAgICAg IHN1YmplY3QgKG1haWwtZmV0Y2gtZmllbGQgInN1YmplY3QiKQoJICAgICAgZGF0ZSAobWFpbC1m ZXRjaC1maWVsZCAiZGF0ZSIpCgkgICAgICBtZXNzYWdlLWlkIChtYWlsLWZldGNoLWZpZWxkICJt ZXNzYWdlLWlkIikKCSAgICAgIHJlZmVyZW5jZXMgKG1haWwtZmV0Y2gtZmllbGQgInJlZmVyZW5j ZXMiIG5pbCBuaWwgdCkKCSAgICAgIHJlc2VudC1yZXBseS10byAobWFpbC1mZXRjaC1maWVsZCAi cmVzZW50LXJlcGx5LXRvIiBuaWwgdCkKCSAgICAgIHJlc2VudC1jYyAoaWYgY2MtY2MgKG1haWwt ZmV0Y2gtZmllbGQgInJlc2VudC1jYyIgbmlsIHQpKQoJICAgICAgcmVzZW50LXRvIChvciAobWFp bC1mZXRjaC1maWVsZCAicmVzZW50LXRvIiBuaWwgdCkgIiIpCgkgICAgICApKSkKICAgIChpZiBj Yy1zZW5kZXIgKHNldHEgY2MgKGlmIChub3QgKGVxdWFsIGNjICIiKSkgKGNvbmNhdCBmcm9tICIs ICIgY2MpIGZyb20pKSkKICAgIChpZiAoYW5kIHJlc2VudC10byAobm90IChlcXVhbCByZXNlbnQt dG8gIiIpKSkKCShpZiAobm90IChlcXVhbCB0byAiIikpCgkgICAgKHNldHEgdG8gKGNvbmNhdCB0 byAiLCAiIHJlc2VudC10bykpCgkgIChzZXRxIHRvIHJlc2VudC10bykpKQogICAgKGlmIChhbmQg cmVzZW50LWNjIChub3QgKGVxdWFsIHJlc2VudC1jYyAiIikpKQoJKGlmIChub3QgKGVxdWFsIGNj ICIiKSkKCSAgICAoc2V0cSBjYyAoY29uY2F0IGNjICIsICIgcmVzZW50LWNjKSkKCSAgKHNldHEg Y2MgcmVzZW50LWNjKSkpCiAgICAoYW5kIChzdHJpbmdwIHN1YmplY3QpCgkgKHNldHEgc3ViamVj dAoJICAgICAgIChjb25jYXQgcm1haWwtcmVwbHktcHJlZml4CgkJICAgICAgIChpZiAobGV0ICgo Y2FzZS1mb2xkLXNlYXJjaCB0KSkKCQkJICAgICAoc3RyaW5nLW1hdGNoIHJtYWlsLXJlcGx5LXJl Z2V4cCBzdWJqZWN0KSkKCQkJICAgKHN1YnN0cmluZyBzdWJqZWN0IChtYXRjaC1lbmQgMCkpCgkJ CSBzdWJqZWN0KSkpKQogICAgKHJtYWlsLXN0YXJ0LW1haWwKICAgICBuaWwKICAgICByZXBseS10 bwogICAgIHN1YmplY3QKICAgICAocm1haWwtbWFrZS1pbi1yZXBseS10by1maWVsZCBmcm9tIGRh dGUgbWVzc2FnZS1pZCkKICAgICAoaWYgY2MtY2MKICAgICAgIChsZXQqICgoY2MtbGlzdCAocm1h aWwtZG9udC1yZXBseS10byBjYykpKQoJIChpZiAoc3RyaW5nPSBjYy1saXN0ICIiKSBuaWwgY2Mt bGlzdCkpKQogICAgIHJtYWlsLXZpZXctYnVmZmVyCiAgICAgKGxpc3QgKGxpc3QgJ3JtYWlsLW1h cmstbWVzc2FnZQoJCSBybWFpbC1idWZmZXIKCQkgKHdpdGgtY3VycmVudC1idWZmZXIgcm1haWwt YnVmZmVyCgkJICAgKGFyZWYgcm1haWwtbXNncmVmLXZlY3RvciBtc2dudW0pKQoJCSAiYW5zd2Vy ZWQiKSkKICAgICBuaWwKICAgICAobGlzdCAoY29ucyAiUmVmZXJlbmNlcyIgKGNvbmNhdCAobWFw Y29uY2F0ICdpZGVudGl0eSByZWZlcmVuY2VzICIgIikKCQkJCSAgICAgICIgIiBtZXNzYWdlLWlk KSkpKSkpCihhZGQtaG9vayAncm1haWwtbW9kZS1ob29rIChmdW5jdGlvbiAobGFtYmRhKCkgKGRl ZmluZS1rZXkgcm1haWwtbW9kZS1tYXAgInIiICdybWFpbC1yZXBseS0yKSkpKQoKDAo7Ozs7CQkq KioqIFggV0lORE9XIFBBQ0tBR0UgKioqKgooc2V0cSB4LXN3aXRjaGVzICcoCiAgICAgICggIi1m b250IiAuICI5eDE1IiApCQk7IGJpZ2dlciBmb250CiAgICAgICggIi1iIiAuICIzIiApCQkJOyBi b3JkZXIgcGl4ZWxzCiAgICAgICkpCgoMCjs7OzsgICAgICAgICAgICAgICAgICAqKioqIFRlWCBz dHVmZiAqKioqCgooc2V0cSBhdXRvLW1vZGUtYWxpc3QKICAgICAgKGFwcGVuZCAgJygoIlxcLnRl eFxcJyIgLiBsYXRleC1tb2RlKSkKCSAgICAgICBhdXRvLW1vZGUtYWxpc3QKCSAgICAgICApKQoo YWRkLWhvb2sgJ2xhdGV4LW1vZGUtaG9vayAndHVybi1vbi1yZWZ0ZXgpIDtlbWFjcwooYWRkLWhv b2sgJ0xhVGVYLW1vZGUtaG9vayAndHVybi1vbi1yZWZ0ZXgpIDthdWN0ZXgKCihzZXRxIHRleC1k dmktdmlldy1jb21tYW5kICJ4ZHZpIikKKHNldHEgdGV4LXphcC1maWxlIChtYWtlLXRlbXAtbmFt ZSAidGV4IikpCgooZGVmdW4gYXNjaWktdG8tdGV4LXJlZ2lvbiAoKQogICJDb252ZXJ0IGFzY2lp IHRleHQgaW4gdGhlIHJlZ2lvbiB0byB0ZXggZm9yIHZlcmJhdGltIHByaW50aW5nLiIKICAoaW50 ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoc2F2ZS1yZXN0cmljdGlvbgogICAgICAo bmFycm93LXRvLXJlZ2lvbiAocG9pbnQpIChtYXJrKSkKICAgICAgKGJlZ2lubmluZy1vZi1idWZm ZXIpCiAgICAgICh3aGlsZSAoc2VhcmNoLWZvcndhcmQtcmVnZXhwICJ7XFx8fVxcfFxcJFxcfCZc XHwjXFx8XFxeXFx8X1xcfCVcXHx+XFx8XFxcXCIgCgkJCQkgICAgKHBvaW50LW1heCkgdCkKCShs ZXQgKChjIChidWZmZXItc3Vic3RyaW5nIChtYXRjaC1iZWdpbm5pbmcgMCkgKG1hdGNoLWVuZCAw KSkpKQoJICAocmVwbGFjZS1tYXRjaCAoY29uY2F0ICJ7XFxcXGNoYXIiIChudW1iZXItdG8tc3Ry aW5nIChlbHQgYyAwKSkgIn0iKSkKCSAgKQoJKQogICAgICAoYmVnaW5uaW5nLW9mLWJ1ZmZlcikK ICAgICAgKHJlcGxhY2UtcmVnZXhwICJgIiAie2B9IikKICAgICAgKGJlZ2lubmluZy1vZi1idWZm ZXIpCiAgICAgIChpbnNlcnQgIlxcYmVnaW5ncm91cAogICAgIAkJXFxwYXJpbmRlbnQ9NDBwdAog ICAgIAkJXFxiYXNlbGluZXNraXA9MTFwdAogICAgIAkJXFx0dAogICAgIAkJXFxvYmV5c3BhY2Vz XFxkZWZcXHBhcntcXGxlYXZldm1vZGVcXGhzc1xcZW5kZ3JhZn1cXG9iZXlsaW5lcwoiKQogICAg ICAoZW5kLW9mLWJ1ZmZlcikKICAgICAgKGluc2VydCAiXFxlbmRncm91cCIpCiAgICAgICkKICAg ICkgIAogICkKKGdsb2JhbC1zZXQta2V5IFsgKGNvbnRyb2wgeCkgKGNvbnRyb2wgdCkgXSAnYXNj aWktdG8tdGV4LXJlZ2lvbikKIAoMCjs7OzsgICAgICAgICAgICAgICAgICoqKiogVEFHUyAqKioq CihnbG9iYWwtc2V0LWtleSBbIChjb250cm9sIGMpIChjb250cm9sIHQpIF0gJ3NlbGVjdC10YWdz LXRhYmxlKQoKCgwKOzs7OyAgICAgICAgICAgICAgICAgKioqKiBnZGIgbW9kZSAqKioqCihhdXRv bG9hZCAnZ2RiLW1vZGUgImdkYiIgImdkYiBtb2RlIiB0KQooZGVmdmFyIGd1ZC1nZGItbWFya2Vy LXJlZ2V4cAkJO2ZpeCBhIGJ1ZyBpbiBnZGItdWkuZWwKICAoY29uY2F0ICJcMDMyXDAzMnNvdXJj ZSBcXCguOj9bXiIgIjoiICJcbl0qXFwpIiAiOiIKCSAgIlxcKFswLTldKlxcKSIgIjoiICIuKlxu IikpCgoKDAo7Ozs7ICAgICAgICAgICAgICAgICAqKioqIGVuYWJsZSBpbmZvIGVkaXRpbmcgKioq Kgooc2V0cSBJbmZvLWVuYWJsZS1lZGl0IDEpCjsgKHNldHEgSW5mby1oaWRlLW5vdGUtcmVmZXJl bmNlcyAnaGlkZSkJO290aGVyd2lzZSBpdCBpbnNlcnRzICJzZWUiIGludG8gdGhlIGxpbmtzIGlu IGluZm8gZmlsZXMgY3JlYXRlZCBieSBNMgoKDAo7Ozs7ICAgICAgICAgICAgICAgICAqKioqIElO Rk8gKioqKgooYWRkLWhvb2sgJ3RleGluZm8tbW9kZS1ob29rIChmdW5jdGlvbiAobGFtYmRhICgp IChsb2NhbC1zZXQta2V5IFsgKGNvbnRyb2wgYykgKGNvbnRyb2wgYikgXSAndGV4aW5mby1mb3Jt YXQtYnVmZmVyKSkpKQoKDAo7Ozs7ICAgICAgICAgICAgICAgICAqKioqIGRpcmVkICoqKioKKGFk ZC1ob29rICdkaXJlZC1tb2RlLWhvb2sKCSAgJyhsYW1iZGEgKCkgCgkgICAgIChkZWZpbmUta2V5 IGRpcmVkLW1vZGUtbWFwICJGIiAnZGlyZWQtZmluZC1maWxlLWxpdGVyYWxseSkKCSAgICAgKGRl ZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgIiV+IiAnZGlyZWQtZmxhZy1iYWNrdXAtZmlsZXMpKSkK KGRlZnVuIGRpcmVkLWZpbmQtZmlsZS1saXRlcmFsbHkgKCkKICAiSW4gZGlyZWQsIGxpdGVyYWxs eSB2aXNpdCB0aGUgZmlsZSBuYW1lZCBvbiB0aGlzIGxpbmUuIgogIChpbnRlcmFjdGl2ZSkKICAo bGV0ICgoZmlsZS1uYW1lIChmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyAoZGlyZWQtZ2V0LWZpbGVu YW1lKSB0KSkKCTs7IGJpbmQgaXQgc28gdGhhdCB0aGUgY29tbWFuZCB3b3JrcyBvbiBkaXJlY3Rv cmllcyB0b28sCgk7OyBpbmRlcGVuZGVudCBvZiB0aGUgdXNlcidzIHNldHRpbmcKCShmaW5kLWZp bGUtcnVuLWRpcmVkIHQpKQogICAgKGlmIChmaWxlLWV4aXN0cy1wIGZpbGUtbmFtZSkKCShmaW5k LWZpbGUtbGl0ZXJhbGx5IGZpbGUtbmFtZSkKICAgICAgKGlmIChmaWxlLXN5bWxpbmstcCBmaWxl LW5hbWUpCgkgIChlcnJvciAiRmlsZSBpcyBhIHN5bWxpbmsgdG8gYSBub25leGlzdGVudCB0YXJn ZXQiKQoJKGVycm9yICJGaWxlIG5vIGxvbmdlciBleGlzdHM7IHR5cGUgYGcnIHRvIHVwZGF0ZSBE aXJlZCBidWZmZXIiKSkpKSkKCgoMCjs7OzsgICAgICAgICAgICAgICAgICoqKiogQ09NUElMRSAq KioqCgooc2V0cS1kZWZhdWx0IGNvbXBpbGF0aW9uLWVycm9yLXJlZ2V4cC1hbGlzdCAnKAoKICgi Xm1ha2U6IFxcW1xcKC4rXFwpOlxcKFswLTldK1xcKTogIiAxIDIpCiAoIl5tYWtlOiBcXCpcXCpc XCogXFxbXFwoLitcXCk6XFwoWzAtOV0rXFwpOiAiIDEgMikKCiAoIl4gLS0+IFxcKC4rXFwpOlxc KFswLTldK1xcKTpcXChbMC05XStcXCkkIiAxIDIgMykgOzsgIiAtLT4gc3JjL21haW4ucnM6NDoy OSIgLS0gZnJvbSAicnVzdCIKCiAoIl5cXCguK1xcKTpcXChbMC05XSsrXFwpOlxcKFswLTldK1xc KTogIiAxIDIgMykKICgiXlxcKC4rXFwpOlxcKFswLTldKytcXCk6XFwoWzAtOV0rXFwpLVxcKFsw LTldK1xcKTogIiAxIDIgKDMgLiA0KSkKICgiXlxcKC4rXFwpOlxcKFswLTldK1xcKS1cXChbMC05 XStcXCk6ICIgMSBuaWwgKDIgLiAzKSkKICgiXkZhdGFsIGVycm9yOiBleGNlcHRpb24gQXNzZXJ0 X2ZhaWx1cmUoXCJcXCguK1xcKVwiLCBcXChbMC05XStcXCksIFxcKFswLTldK1xcKSkiIDEgMiAo MyAuIDMpKSA7b2NhbWxjLGNvcTogRmlsZSAiLi9MaXN0VHlwZS52IiwgbGluZSAxNywgY2hhcmFj dGVyIDkKICgiXkZpbGUgXCJcXChbXixcIlxuXHRdK1xcKVwiLCBsaW5lIFxcKFswLTldK1xcKSwg Y2hhcmFjdGVyIFxcKFswLTldK1xcKSIgMSAyICgzIC4gMykpIDtvY2FtbGMsY29xOiBGaWxlICIu L0xpc3RUeXBlLnYiLCBsaW5lIDE3LCBjaGFyYWN0ZXIgOQogKCJeRmlsZSBcIlxcKFteLFwiXG5c dF0rXFwpXCIsIGxpbmUgXFwoWzAtOV0rXFwpLCBjaGFyYWN0ZXJzIFxcKFswLTldK1xcKS1cXChb MC05XStcXCkiIDEgMiAoMyAuIDQpKSA7b2NhbWxjLGNvcTogRmlsZSAiLi9MaXN0VHlwZS52Iiwg bGluZSAxNywgY2hhcmFjdGVycyAwLTYzCiAoIl5GaWxlIFwiXFwoW14sXCJcblx0XStcXClcIiwg bGluZXMgXFwoWzAtOV0rXFwpLVxcKFswLTldK1xcKSwgY2hhcmFjdGVycyBcXChbMC05XStcXCkt XFwoWzAtOV0rXFwpIiAxICgyIC4gMykgKDQgLiA1KSkgO29jYW1sYyxjb3E6IEZpbGUgIi4vTGlz dFR5cGUudiIsIGxpbmVzIDE3LTE5LCBjaGFyYWN0ZXJzIDIyLTQKICgiXkZpbGUgXCJcXChbXixc IlxuXHRdK1xcKVwiLCBjaGFyYWN0ZXJzIFxcKFswLTldK1xcKS1cXChbMC05XStcXCkiIDEgbmls ICgyIC4gMykpIDsgKGRvZXNuJ3QgcmVhbGx5IHdvcmspIGNvcTogRmlsZSAiVW5pTWF0aC9DYXRl Z29yeVRoZW9yeS9FeGFjdENhdGVnb3JpZXMvQWJlbGlhbkNhdGVnb3JpZXMudiIsIGNoYXJhY3Rl cnMgMTQyNS0xNDI1OiBTeW50YXggZXJyb3IKCiA7OyBXQVJOSU5HOiB3ZSBhcmUgY2FyZWZ1bCB0 byBwdXQgXG4gaW5zaWRlIFteLi4uXSBzbyBmYWlsdXJlIHRvIG1hdGNoIGRvZXNuJ3Qgc2tpcCBv dmVyIGludGVyZXN0aW5nIGxpbmVzCiAoIl4uKjogXFwoW15cbixdK1xcKTpcXChbMC05XStcXCk6 IC4qOiBBc3NlcnRpb24gLiogZmFpbGVkIiAxIDIpIDsgQyBhc3NlcnQoKTogIk0yOiAvaG9tZS9k YW4vc3JjL00yL21pa2UtZGV2ZWxvcG1lbnQvQlVJTEQvZGFuLy4uLy4uL01hY2F1bGF5Mi9kL3N0 ZGlvLmQ6NTI2OiBzdGRpb19sZXNzX2xlc3NfXzE6IEFzc2VydGlvbiBgby0+b3V0aW5kZXg+PTAn IGZhaWxlZC4iCgogOzsgLi4vZC9zdGFydHVwLm0yLmluOjMwNDo2OigwKTogZXJyb3I6IGNyZWF0 aW9uIG9mIGdsb2JhbCBzeW1ib2wgaW4gYSBsb2NhbCBzY29wZTogY3VycmVudExheW91dAogOzsg Li4vTWFjYXVsYXkyL20yL2RlYnVnZ2luZy5tMjoyMDo2OigxKTpbN106IGVycm9yOiAxIGVycm9y KHMpIG9jY3VycmVkIHJ1bm5pbmcgdGVzdHMgZm9yIHBhY2thZ2UgTm9ybWFsVG9yaWNWYXJpZXRp ZXMKIDs7IC92YXIvZm9sZGVycy80MC9keTg4bDVxZDM2MTM5MW1fM3YybTUxYm0wMDAwZ24vVC9N Mi02OTk3OS0wLzE0LnRtcDowOjE6IChvdXRwdXQgZmlsZSkgZXJyb3I6IE1hY2F1bGF5MiBleGl0 ZWQgd2l0aCByZXR1cm4gY29kZSAyNTYKIDs7IC92YXIvZm9sZGVycy80MC9keTg4bDVxZDM2MTM5 MW1fM3YybTUxYm0wMDAwZ24vVC9NMi02OTk3OS0wLzE0Lm0yOjA6MTogKGlucHV0IGZpbGUpCiAo Il5cXCguK1xcKTpcXChbMC05XStcXCk6XFwoWzAtOV0rXFwpOi4qXFwoXFwoKG91dHB1dCBmaWxl KSBcXCk/ZXJyb3I6IFxcfCBbV3ddYXJuaW5nOiBcXHwgcGFyc2UgZXJyb3IgXFx8ICtyZXF1aXJl ZCBmcm9tIGhlcmVcXHwgbm90ZTogXFx8IC0tYmFjayB0cmFjZS0tXFx8KGlucHV0IGZpbGUpXFwp IiAxIDIgMykKCiA7OyBoYXNrZWxsIGdoYzoKIDs7ICAgZm9vLmhzOjM6MToKIDs7ICAgICAgIHBh cnNlIGVycm9yIChwb3NzaWJseSBpbmNvcnJlY3QgaW5kZW50YXRpb24gb3IgbWlzbWF0Y2hlZCBi cmFja2V0cykKICgiXlxcKFteOiBcbl0rXFwpOlxcKFswLTldK1xcKVs6Ll1cXChbMC05XStcXCk6 JCIgMSAyIDMpCiAoIl5cXChbXjogXG5dK1xcKTpcXChbMC05XStcXClbOi5dXFwoWzAtOV0rXFwp OiBNb2R1bGUgIiAxIDIgMykKCiA7OyBsYXRleAogKCJeISBMYVRlWCBFcnJvcjogIikKICgiXkxh VGVYIFdhcm5pbmc6ICIpCiAoIl4hIFVuZGVmaW5lZCAiKQogKCJeISBNaXNzaW5nICIpCiAoIl4h IElsbGVnYWwgIikKICgiXiEgRXh0cmEgIikKICgiXiEgTWlzcGxhY2VkICIpCgogOzsgZW1hY3MK IDs7IGlzYXIvaXNhYmVsbGUtc3lzdGVtLmVsOjI5NToxNjpFcnJvcjogLi4uCiAoIl5cXChbXjog XG5dK1xcKTpcXChbMC05XStcXCk6XFwoWzAtOV0rXFwpOkVycm9yOiAiIDEgMikKCiA7OyBiaWJ0 ZXg6IFdhcm5pbmctLXRoZXJlJ3MgYSBudW1iZXIgYnV0IG5vIHZvbHVtZSBpbiBNUjE4MTMyMjQK ICgiXldhcm5pbmctLXRoZXJlJ3MgYSBudW1iZXIgYnV0IG5vIHZvbHVtZSBpbiAiKQoKIDs7IGJp YnRleDogUmVwZWF0ZWQgZW50cnktLS1saW5lIDM0NCBvZiBmaWxlIHZvZXZvZHNreS5iaWIKICgi XlJlcGVhdGVkIGVudHJ5LS0tbGluZSBcXChbMS05XVswLTldKlxcKSBvZiBmaWxlIFxcKC4qXFwp IiAyIDEpCiAKICgiXlxcKFdhcm5pbmdcXHxFcnJvclxcKTogXFwoLitcXCkgXFwoWzAtOV0rXFwp XFwuXFwoWzAtOV0rXFwpXFwuJCIgMiAzIDQpIDsgZm9yIG1sdG9uLCBmcm9tIGh0dHA6Ly9tbHRv bi5vcmcvRW1hY3MKCiA7OyBnY2M6ICAgIGlubGluZWQgZnJvbSAneG1sTmFub0hUVFBTYXZlX19p bnRlcm5hbF9hbGlhcycgYXQgbmFub2h0dHAuYzoxNTg4OgogKCJeICppbmxpbmVkIGZyb20gJy4q JyBhdCBcXChbXjpcbl0rXFwpOlxcKFswLTldK1xcKVs6XSIgMSAyKQoKICgiXlJhaXNlZCBhdCBm aWxlIFwiXFwoW14sXCJcblx0XStcXClcIiwgbGluZXM/IFxcKFswLTldK1xcKVstMC05XSosIGNo YXJhY3RlcnMgXFwoWzAtOV0rXFwpLVxcKFswLTldK1xcKSIgMSAyICgzIC4gNCkpIDtvY2FtbGM6 IFJhaXNlZCBhdCBmaWxlICJncmFtbWFyLm1seSIsIGxpbmUgMjYsIGNoYXJhY3RlcnMgMjUtNDUK ICgiXlJlLXJhaXNlZCBhdCBmaWxlIFwiXFwoW14sXCJcblx0XStcXClcIiwgbGluZXM/IFxcKFsw LTldK1xcKVstMC05XSosIGNoYXJhY3RlcnMgXFwoWzAtOV0rXFwpLVxcKFswLTldK1xcKSIgMSAy ICgzIC4gNCkpIDtvY2FtbGM6IFJlLXJhaXNlZCBhdCBmaWxlICJwYXJzaW5nLm1sIiwgbGluZSAx NzksIGNoYXJhY3RlcnMgMTQtMTcKICgiXkNhbGxlZCBmcm9tIGZpbGUgXCJcXChbXixcIlxuXHRd K1xcKVwiLCBsaW5lcz8gXFwoWzAtOV0rXFwpWy0wLTldKiwgY2hhcmFjdGVycyBcXChbMC05XStc XCktXFwoWzAtOV0rXFwpIiAxIDIgKDMgLiA0KSkgO29jYW1sYzogQ2FsbGVkIGZyb20gZmlsZSAi Z3JhbW1hci5tbHkiLCBsaW5lIDY4LCBjaGFyYWN0ZXJzIDExMi0xMjYKICgiXmphZGU6XFwoW14g CTpcbl0rXFwpOlxcKFswLTldK1xcKTpcXChbMC05XStcXCk6IiAxIDIgMykKICgiXi4qOiBMT0NB TCBFUlJPUjogRXJyb3IgaW4gXFwoW146XG5dK1xcKTogbGluZSBcXChbMC05XStcXCk6ICIgMSAy KQogKCJeXFwoW14oXG5dK1xcKShcXChbMC05XStcXCkpIDogIiAxIDIpCiAoIl5cXCguK1xcKTog bGluZSBcXChbMC05XStcXCk6ICIgMSAyKQogKCJeXFwoW14gCShcbl0rXFwpKFxcKFswLTldK1xc KSkgOiBjb2x1bW4gXFwoWzAtOV0rXFwpIDoiIDEgMiAzKQogKCJeTG9jYXRpb246IGZpbGU6XFwo W14gCTpcbl0rXFwpKFxcKFswLTldK1xcKSxcXChbMC05XStcXCkpIiAxIDIgMykKICgiXkxhcms6 XFwoW146XG5dK1xcKTpcXChbMC05XStcXCk6XFwoWzAtOV0rXFwpOiIgMSAyIDMpCiAoIl5CRUdJ TiBmYWlsZWQtLWNvbXBpbGF0aW9uIGFib3J0ZWQgYXQgXC5cLi9cXCguKlxcKSBsaW5lIFxcKFsw LTldK1xcKVwuIiAxIDIpIDsgcGVybDogIkJFR0lOIGZhaWxlZC0tY29tcGlsYXRpb24gYWJvcnRl ZCBhdCAuLi9saWIvTWFpbC9TcGFtQXNzYXNzaW4vRXZhbFRlc3RzLnBtIGxpbmUgMzMuIgogKCJe RVJST1I6IFxcKFteOlxuXStcXCk6XFwoWzAtOV0rXFwpOlxcKFswLTldK1xcKToiIDEgMiAzKQog KCJeW14gXHRcbjpdKzogXFwoW14gCTpcbl0rXFwpOlxcKFswLTldK1xcKTogIiAxIDIpCiAoIl5c XChbXjogXG5dK1xcKTpcXChbMC05XStcXCk6W14wLTlcbl0iIDEgMikKICgiXkdDX2RlYnVnLio6 LiooXFwoLipcXCk6XFwoWzAtOV0rXFwpIiAxIDIpIDsgR0NfZGVidWdfZnJlZTogZm91bmQgc21h c2hlZCBsb2NhdGlvbiBhdCAweDlkMzA2YjQgaW4gb2JqZWN0IGF0IDB4OWQzMDZhMCguLi8uLi8u Li9NYWNhdWxheTIvZS9nYnJpbmcuY3BwOjI3LCBzej0xNCkKCiAoIl5cXChbXjogXG5dK1xcKTpc XChbMC05XStcXClbOi5dXFwoWzAtOV0rXFwpLSIgMSAyIDMpIDsgZnJvbSBNMjogImVuZ2luZXJp bmcubTI6NDE6OS00MTo5OiB3YXJuaW5nOiAiCiAoIl5cXChbXjogXG5dK1xcKTooXFwoWzAtOV0r XFwpLFxcKFswLTldK1xcKVstKV0iIDEgMiAzKSA7IGZvciBtbXgtY29tcGlsZQogKCJeSW4gZmls ZSBpbmNsdWRlZCBmcm9tIFxcKFteOlxuXStcXCk6XFwoWzAtOV0rXFwpWzosXSIgMSAyKSA7IGdj YzogIkluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi8uLi8uLi9NYWNhdWxheTIvZS9NMi1mYWN0b3J5 LmNwcDo0OiIKICgiXiAgICAgICAgICAgICAgICAgZnJvbSBcXChbXjpcbl0rXFwpOlxcKFswLTld K1xcKVs6LF0iIDEgMikgOyBnY2M6ICIgICAgICAgICAgICAgICAgIGZyb20gL2NhcHliYXJhL2lu Y2x1ZGUvZmFjdG9yeS5oOjI4LCIKICgiXkFzc2VydGlvbiBmYWlsZWQ6IC4qLCBmaWxlIFxcKFte LFxuXStcXCksIGxpbmUgXFwoWzAtOV0rXFwpXFwuIiAxIDIpIDsgZ2xpYmMgYXNzZXJ0OiAiQXNz ZXJ0aW9uIGZhaWxlZDogKC4uLiksIGZ1bmN0aW9uIG1haW4sIGZpbGUgZm9vLmMsIGxpbmUgMTIu IgogKCIgaW4gb3IgbmVhciBvYmplY3QgYXQgLiooXFwoLipcXCk6XFwoWzAtOV0rXFwpIiAgMSAy KTsgbGliZ2MgZGVidWdnZXI6IDB4MTAxMzg2ZGY4IGluIG9yIG5lYXIgb2JqZWN0IGF0IDB4MTAx Mzg2ZGYwKE0ybWVtLmM6NTIsIHN6PTgpCikpCgoMCjs7OzsgICAqKioqIFlBTUwgKioqKgooaWYg KHJlcXVpcmUgJ3lhbWwtbW9kZSBuaWwgdCkKICAgIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFs aXN0ICcoIlxcLnltbFxcJyIgLiB5YW1sLW1vZGUpKSkKCgwKOzs7OyAgICAgICAgICAgICAgICAg KioqKiBHRURDT00gKioqKgooc2V0cSBhdXRvLW1vZGUtYWxpc3QKICAgICAgKGFwcGVuZCAgYXV0 by1tb2RlLWFsaXN0CgkgICAgICAgJygoIlxcLmdlZCQiIC4gZ2VkY29tLW1vZGUpKQoJICAgICAg ICkpCihhdXRvbG9hZCAnZ2VkY29tLW1vZGUgImdlZGNvbS5lbCIgIiIgdCkKCgwKOzs7OyAgICAg ICAgICAgICAgICAgKioqKiBDT01JTlQgKioqKgooZ2xvYmFsLXNldC1rZXkgWyAoYWx0IHApIF0g J3NlbmQtaW52aXNpYmxlKQooc2V0cSBzaGVsbC1wcm9tcHQtcGF0dGVybgkJOyB0aGlzIGlzIHVz ZWQgdG8gCgkJCQkJOyBpbml0aWFsaXplIHNoZWxsLXByb21wdC1wYXR0ZXJuCiAgICAgIChjb25j YXQgIl4iCQkJOyBiZWdpbm5pbmcgb2YgbGluZQoJICAgICAgIlsgXHRdKiIJCQk7IHNraXAgd2hp dGUgc3BhY2UKCSAgICAgICJcXCgiCgkgICAgICAocmVnZXhwLW9yCgkJIlthLXpBLVowLTkuOn4v XSpbJSMkPl0gIgoJCSI/IgoJCSI+IgkJCTtzaGVsbCwgc2Vjb25kYXJ5IHByb21wdAoJCSJHUz4i CQkJO2dob3N0c2NyaXB0CgkJImZ0cD4gIgkJCTtmdHAKCQkiW2lvXSpbMC05XSsgWzo9XSAiCTtN YWNhdWxheSAyCgkJImxwYz4iCQkJO2xwYwoJCSJbYS16QS1aXVthLXpBLVowLTldKyA8ICIgO2Nv cQoJCSIob2NkKSAiCQk7b2NhbWxkZWJ1ZwoJCSIoZ2RiKSA/IgkJO2dkYgoJCSJVU0VSKFswLTld Kyk6ICIJO0FsbGVncm8gY29tbW9uIGxpc3AKCQkiSW5cXFtbMC05XStcXF06PSAiCTtNYXRoZW1h dGljYQoJCSJPdXRcXFtbMC05XStcXF1cXCgvL1tePV0rXFwpPz0gIiA7TWF0aGVtYXRpY2EKCQki XFwqIgoJCSkKCSAgICAgICJcXCkiCgkgICAgICApCiAgICAgICkKCgwKOzs7OyAJICAgICAgICAg ICAgICoqKiogQ0FMRU5EQVIgKioqKgoKKHNldHEgaXNsYW1pYy1ob2xpZGF5cyBuaWwKICAgICAg b3JpZW50YWwtaG9saWRheXMgbmlsCiAgICAgIG90aGVyLWhvbGlkYXlzICcoCgkJICAgICAgIChp ZiAoemVyb3AgKCUgZGlzcGxheWVkLXllYXIgNCkpCgkJCSAgIChob2xpZGF5LWZpeGVkIAoJCQkg ICAgMTEKCQkJICAgIChleHRyYWN0LWNhbGVuZGFyLWRheQoJCQkgICAgIChjYWxlbmRhci1ncmVn b3JpYW4tZnJvbS1hYnNvbHV0ZQoJCQkgICAgICAoMSsgKGNhbGVuZGFyLWRheW5hbWUtb24tb3It YmVmb3JlCgkJCQkgICAxICgrIDYgKGNhbGVuZGFyLWFic29sdXRlLWZyb20tZ3JlZ29yaWFuCgkJ CQkJICAgKGxpc3QgMTEgMSBkaXNwbGF5ZWQteWVhcikpKSkpKSkKCQkJICAgICJVUyBQcmVzaWRl bnRpYWwgRWxlY3Rpb24iKSkpKQoKOzs7OyAgICAgICAgICAgICAgICAqKioqIFBST0dSQU1NSU5H ICoqKioKCihkZWZ1biB1cGRhdGUtbW9kZS1saW5lICgpIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAg KGJ1ZmZlci1tb2RpZmllZC1wKSkpCgoMCgo7Ozs7ICAgICAgICAgICAgICAgICoqKiogZWRlYnVn ICoqKioKCgooZGVmaW5lLWtleSBlbWFjcy1saXNwLW1vZGUtbWFwIFsgKGNvbnRyb2wgeCkgKHgp IF0gJ2VkZWJ1Zy1ldmFsLXRvcC1sZXZlbC1mb3JtKQooYXV0b2xvYWQgJ2VkZWJ1Zy1ldmFsLXRv cC1sZXZlbC1mb3JtICJlZGVidWciKQoKOzs7OyAgICAgICAgICAgICAgICAqKioqIGZhbWlseSB0 cmVlICoqKioKKGF1dG9sb2FkICdydC1maW5kLWZpbGUgInJldHJpZXZlLmVsIiAKICAiUmV0dXJu IHRoZSBub2RlIGZvciBGSUxFTkFNRSBhbmQgS0VZIGFzIGEgc3RyaW5nLiIgdCkKKGdsb2JhbC1z ZXQta2V5IFsgKGFsdCBmKSBdICdydC1maW5kLWZpbGUpCihzZXRxIHJ0LWVuYWJsZS1lZGl0IHQp Cgo7KGlmIChmYm91bmRwICdzdGFuZGFyZC1kaXNwbGF5LWV1cm9wZWFuKSAoc3RhbmRhcmQtZGlz cGxheS1ldXJvcGVhbiB0KSkKCjsgbXNkb3MgY29sb3JzOgo7ICB3aGl0ZQo7ICBibHVlIGJyb3du IGN5YW4gZ3JheSBncmVlbiBtYWdlbnRhIHJlZCB5ZWxsb3cKOyAgbGlnaHRibHVlIGxpZ2h0YnJv d24gbGlnaHRjeWFuIGxpZ2h0Z3JheSBsaWdodGdyZWVuIGxpZ2h0bWFnZW50YSBsaWdodHJlZCBs aWdodHllbGxvdwo7ICBibGFjawoKOzsgZnJvbSBodHRwOi8vd3d3LmNzLndhc2hpbmd0b24uZWR1 L2hvbWVzL3ZvZWxrZXIvbnRlbWFjcy5odG1sCgooYWRkLWhvb2sgJ3NoZWxsLW1vZGUtaG9vayAK CSAgKGZ1bmN0aW9uIChsYW1iZGEgKCkKCSAgICAgOyAoc2V0cSBjb21pbnQtY29tcGxldGlvbi1h ZGRzdWZmaXggdCkKCSAgICAgKHNldHEgY29taW50LXByb2Nlc3MtZWNob2VzIG5pbCkgO2Jhc2gK CSAgICAgOyAoc2V0cSBjb21pbnQtcHJvY2Vzcy1lY2hvZXMgdCkgO2NtZAoJICAgICAoc2V0cSBj b21pbnQtZW9sLW9uLXNlbmQgdCkKCSAgICAgKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdj b21pbnQtY29tcGxldGlvbi1hZGRzdWZmaXgpKSkpCgooc2V0cSBiaW5hcnktcHJvY2Vzcy1pbnB1 dCB0KSA7OyBiYXNoIGRvZXNuJ3QgdHJlYXQgXk0gYXMgd2hpdGUgc3BhY2UsIHNvIGRvbid0IHNl bmQgaXQuCihzZXRxIGJpbmFyeS1wcm9jZXNzLW91dHB1dCBuaWwpIDs7IG1hbnkgYXBwbGljYXRp b25zIGVtaXQgXk0ncywgc28gZ2V0IHJpZCBvZiB0aGVtLgoKKHNldHEgZXhwbGljaXQtc2gtYXJn cyAnKCItaSIpKQooc2V0cSBleHBsaWNpdC1iYXNoLWFyZ3MgJygiLWkiKSkKCgo7O2Zyb20gaHR0 cDovL3d3dy5jcy53YXNoaW5ndG9uLmVkdS9ob21lcy92b2Vsa2VyL250ZW1hY3MvZGlzY3Vzcy9i YXNoLXNldHVwCjs7IAo7OyAoaWYgUEMKOzsgICAgIChwcm9nbgo7OyAgICAgICAodXNpbmctdW5p eC1maWxlc3lzdGVtcyB0KQo7OyAgICAgICAoc2V0cSBzaGVsbC1maWxlLW5hbWUgInNoIikKOzsg ICAgICAgKHNldHEgZXhwbGljaXQtc2hlbGwtZmlsZS1uYW1lIHNoZWxsLWZpbGUtbmFtZSkKOzsg ICAgICAgKHNldHEgZXhwbGljaXQtc2gtYXJncyAnKCItbG9naW4iICItaSIpKQo7OyAgICAgICAo c2V0cSBzaGVsbC1jb21tYW5kLXN3aXRjaCAiLWMiKQo7OyAgICAgICAoc2V0cSBhcmNoaXZlLXpp cC11c2UtcGt6aXAgbmlsKQo7OyAgICAgICAoc2V0ZW52ICJTSEVMTCIgc2hlbGwtZmlsZS1uYW1l KQooc2V0cSB3aW4zMi1xdW90ZS1wcm9jZXNzLWFyZ3MgdCkKKHNldHEgd2luMzItZW5hYmxlLWl0 YWxpY3MgdCkKOzsgICAgICAgKHNldHEgY29taW50LXByb2Nlc3MtZWNob2VzIG5pbCkKOzsgO2hv bWUgKHNldC1kZWZhdWx0LWZvbnQgIi0qLUNvdXJpZXItbm9ybWFsLXItKi0qLTEyLTkwLSotKi1j LSotKi1hbnNpLSIpCjs7ICAgICAgIChzZXQtZGVmYXVsdC1mb250ICItKi1Db3VyaWVyLW5vcm1h bC1yLSotKi0xMy05Ny0qLSotYy0qLSotYW5zaS0iKQo7OyAgICAgICAobWVudS1iYXItbW9kZSAw KQo7OyAgICAgICkpCgo7OyAoYWRkLWhvb2sgJ2NvbWludC1vdXRwdXQtZmlsdGVyLWZ1bmN0aW9u cyAnc2hlbGwtc3RyaXAtY3RybC1tIG5pbCB0KQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7IG1haWwgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cgo7OyBmZXRjaGlu ZyBtYWlsIHdpdGggcG9wMzsgY29tcGlsZSBlbWFjcyB3aXRoIC0td2l0aC1wb3AKOyAoc2V0ZW52 ICJNQUlMSE9TVCIgIm1haWwuaW5zaWdodEJCLmNvbSIpCihkZWZ1biBvbmxpbmUgKCkgIlNldCB1 cCBmb3Igc2VuZGluZyBlbWFpbCB3aGlsZSBvbmxpbmUsIGFuZCBkZWxpdmVyIHRoZSBxdWV1ZS4i CiAgKGludGVyYWN0aXZlKQogIChzbXRwbWFpbC1zZW5kLXF1ZXVlZC1tYWlsKQogIChzZXRxIHNt dHBtYWlsLXF1ZXVlLW1haWwgbmlsKSkKKGRlZnVuIG9mZmxpbmUgKCkgIlNldCB1cCBmb3Igc2Vu ZGluZyBlbWFpbCB3aGlsZSBvZmZsaW5lLiIKICAoaW50ZXJhY3RpdmUpCiAgKHNldHEgc210cG1h aWwtcXVldWUtbWFpbCB0KSkKKHNldHEgOyBybWFpbC1yZW1vdGUtcGFzc3dvcmQtcmVxdWlyZWQg dAogICAgICA7IHNlbmQtbWFpbC1mdW5jdGlvbiAnc2VuZG1haWwtc2VuZC1pdAogICAgICA7IHNl bmQtbWFpbC1mdW5jdGlvbiAnc210cG1haWwtc2VuZC1pdCA7IG5vcm1hbGx5IHNldCB0byBzZW5k bWFpbC1zZW5kLWl0CiAgICAgIDsgc210cG1haWwtZGVmYXVsdC1zbXRwLXNlcnZlciAibG9jYWxo b3N0IgogICAgICA7IHNtdHBtYWlsLXNtdHAtc2VydmljZSA0MDAxCiAgICAgIDsgc210cG1haWwt cXVldWUtZGlyICJ+L3Zhci9xdWV1ZWQtbWFpbC8iCiAgICAgIDsgcm1haWwtbW92ZW1haWwtc2Vh cmNoLXBhdGggJygiL3Vzci9iaW4iKQogICAgICA7IHJtYWlsLW1vdmVtYWlsLWZsYWdzICcoKQog ICAgICA7IHJtYWlsLW1vdmVtYWlsLXByb2dyYW0gIi9ob21lL2Rhbi9iaW4vbW92ZW1haWwubG9n IiA7IGZvciBkZWJ1Z2dpbmcgcm1haWwKICAgICAgOyBtb3ZlbWFpbC5sb2cgY29udGFpbnMgdGhp czoKCQk7OyBESVI9L3Vzci9iaW4KCQk7OyBleGVjIDM+Pi90bXAvbW92ZW1haWwubG9nCgkJOzsg ZWNobyA+JjMKCQk7OyBkYXRlID4mMwoJCTs7IGVjaG8gY29tbWFuZCBsaW5lOiAkRElSL21vdmVt YWlsICIkQCIgPiYzCgkJOzsgJERJUi9tb3ZlbWFpbCAiJEAiID4vdG1wL21vdmVtYWlsLm91dCAy Pi90bXAvbW92ZW1haWwuZXJyCgkJOzsgcj0kPwoJCTs7IGNhdCAvdG1wL21vdmVtYWlsLm91dAoJ CTs7IGNhdCAvdG1wL21vdmVtYWlsLmVyciA+JjIKCQk7OyBlY2hvIHN0ZG91dDogPiYzCgkJOzsg c2VkICdzL14vPT0gLycgL3RtcC9tb3ZlbWFpbC5vdXQgPiYzCgkJOzsgZWNobyBzdGRlcnI6ID4m MwoJCTs7IHNlZCAncy9eLz09IC8nIC90bXAvbW92ZW1haWwuZXJyID4mMwoJCTs7IGVjaG8gcmV0 dXJuIGNvZGU6ICRyID4mMwoJCTs7IGV4aXQgJHIKICAgICAgOyBybWFpbC1tb3ZlbWFpbC1wcm9n cmFtICIvdXNyL2Jpbi9tb3ZlbWFpbCIKICAgICAgcm1haWwtcHJpbWFyeS1pbmJveC1saXN0IChs aXN0IChjb25jYXQgIm1haWxkaXI6Ly8iIChleHBhbmQtZmlsZS1uYW1lIChjb25jYXQgIn4iICh1 c2VyLWxvZ2luLW5hbWUpKSkgIi9NYWlsZGlyIikpCiAgICAgIDs7IGZvciBtb3ZlbWFpbCBwZXJs IHNjcmlwdCwgc2VlIGNvbW1lbnRzIGluc2lkZSBpdDoKICAgICAgOzsgcm1haWwtbW92ZW1haWwt cHJvZ3JhbSAiL3Vzci9sb2NhbC9iaW4vbW92ZW1haWwiCiAgICAgIDs7IHJtYWlsLXByaW1hcnkt aW5ib3gtbGlzdCAKICAgICAgOzsgIChsaXN0IChleHBhbmQtZmlsZS1uYW1lICJ+L01haWxkaXIv LnJtYWlsLWlzLXRvby1zbWFydCIpKQopCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7IGZvbnRzIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKGRlZnVuIGN1cnJlbnQtZm9udCAo KQogICJSZXR1cm4gdGhlIGN1cnJlbnQgZm9udCIKICAoaW50ZXJhY3RpdmUpCiAgKGNkciAoYXNz b2MgJ2ZvbnQgKGZyYW1lLXBhcmFtZXRlcnMpKSkpCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsgdzMyIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owooc2V0cSBjb21w bGV0aW9uLWlnbm9yZS1jYXNlIG5pbCkKCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OyBjdnMgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CjsgKHNldHEgdmMtaGFuZGxl LWN2cyB0KQo7IChzZXRxIHZjLWhhbmRsZS1jdnMgbmlsKQoKKHNldHEgZmlsZS1uYW1lLWJ1ZmZl ci1maWxlLXR5cGUtYWxpc3QgOyBuaWwgZm9yIHRleHQsIHQgZm9yIGJpbmFyeS4KICAgICAgJygo IlxcLmVsYyQiIC4gdCkKCSgiXFwuXFwob2JqXFx8ZXhlXFx8Y29tXFx8bGliXFx8c3ltXFx8c3lz XFx8Y2hrXFx8YmluXFx8aWNvXFx8cGlmXFx8ZG9zXFx8Y2xhc3NcXCkkIiAuIHQpCgkoIlxcLlxc KGRsbFxcfGRydlxcfGNwbFxcfHNjclxcdmJ4XFx8Mzg2XFx8dnhkXFx8Zm9uXFx8Zm50XFx8Zm90 XFx8dHRmXFx8Z3JwXFwpJCIgLiB0KQoJKCJcXC5cXChobHBcXHxibXBcXHx3YXZcXHxhdmlcXHxt cGdcXHxqcGdcXHx0aWZcXG1vdlxcYXVcXCkiIC4gdCkKCSgiXFwuXFwoYXJjXFx8emlwXFx8cGFr XFx8bHpoXFx8em9vXFwpJCIgLiB0KQoJKCJcXC5cXChhXFx8b1xcfHRhclxcfFpcXHxnelxcfHRh elxcfGphclxcKSQiIC4gdCkKCSkpCgoMCgo7KGNvbmRpdGlvbi1jYXNlIHZhbHVlIChkaWFyeSkK OyAgKGVycm9yIChjb25kCjsJICAoKGVxdWFsIHZhbHVlICcoZXJyb3IgIllvdSBkb24ndCBoYXZl IGEgZGlhcnkgZmlsZSEiKSkgbmlsKQo7CSAgKHQgKGV2YWwgdmFsdWUpKSkpKQoKCjs7CgooZGVm dW4gbWVzc2FnZS1jYW5jZWwtc2NpLW1hdGgtcmVzZWFyY2ggKCkKICAiQ2FuY2VsIGFuIGFydGlj bGUgYXMgbW9kZXJhdG9yIG9mIHNjaS5tYXRoLnJlc2VhcmNoLiIKICAoaW50ZXJhY3RpdmUpCiAg KHVubGVzcyAobWVzc2FnZS1uZXdzLXApIChlcnJvciAiVGhpcyBpcyBub3QgYSBuZXdzIGFydGlj bGU7IGNhbmNlbGluZyBpcyBpbXBvc3NpYmxlIikpCiAgKHdoZW4gKHllcy1vci1uby1wICJEbyB5 b3UgcmVhbGx5IHdhbnQgdG8gY2FuY2VsIHRoaXMgYXJ0aWNsZT8gIikKICAgIChsZXQgKGZyb20g bmV3c2dyb3VwcyBtZXNzYWdlLWlkIGRpc3RyaWJ1dGlvbiBidWYgc2VuZGVyKQogICAgICAoc2F2 ZS1leGN1cnNpb24KCShzYXZlLXJlc3RyaWN0aW9uCgkgIChtZXNzYWdlLW5hcnJvdy10by1oZWFk KQoJICAoc2V0cSBmcm9tIChtZXNzYWdlLWZldGNoLWZpZWxkICJmcm9tIikKCQlzZW5kZXIgKG1l c3NhZ2UtZmV0Y2gtZmllbGQgInNlbmRlciIpCgkJb3JpZ2luYXRvciAoaWYgc2VuZGVyIHNlbmRl ciBmcm9tKQoJCW5ld3Nncm91cHMgKG1lc3NhZ2UtZmV0Y2gtZmllbGQgIm5ld3Nncm91cHMiKQoJ CW1lc3NhZ2UtaWQgKG1lc3NhZ2UtZmV0Y2gtZmllbGQgIm1lc3NhZ2UtaWQiIHQpCgkJZGlzdHJp YnV0aW9uIChtZXNzYWdlLWZldGNoLWZpZWxkICJkaXN0cmlidXRpb24iKSkpCgkoc2V0cSBidWYg KHNldC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIgKm1lc3NhZ2UgY2FuY2VsKiIpKSkKCShi dWZmZXItZGlzYWJsZS11bmRvIChjdXJyZW50LWJ1ZmZlcikpCgkoZXJhc2UtYnVmZmVyKQoJKGlu c2VydCAiTmV3c2dyb3Vwczogc2NpLm1hdGgucmVzZWFyY2hcbiIKCQkiRnJvbTogIiBvcmlnaW5h dG9yICJcbiIKCQkiU2VuZGVyOiAiIChtZXNzYWdlLW1ha2UtZnJvbSkgIlxuIgoJCSJTdWJqZWN0 OiBjbXNnIGNhbmNlbCAiIG1lc3NhZ2UtaWQgIlxuIgoJCSJDb250cm9sOiBjYW5jZWwgIiBtZXNz YWdlLWlkICJcbiIKCQkoaWYgZGlzdHJpYnV0aW9uIChjb25jYXQgIkRpc3RyaWJ1dGlvbjogIiBk aXN0cmlidXRpb24gIlxuIikgIiIpCgkJbWFpbC1oZWFkZXItc2VwYXJhdG9yICJcbiIKCQkiVGhp cyBhcnRpY2xlIGlzIGJlaW5nIGNhbmNlbGxlZCBieSB0aGUgbW9kZXJhdG9yLlxuIikKCShtZXNz YWdlICJDYW5jZWxpbmcuLi4iKQoJKGlmIChsZXQgKChtZXNzYWdlLXN5bnRheC1jaGVja3MKCQkg ICAnZG9udC1jaGVjay1mb3ItYW55dGhpbmctanVzdC10cnVzdC1tZSkpCgkgICAgICAoZnVuY2Fs bCBtZXNzYWdlLXNlbmQtbmV3cy1mdW5jdGlvbikpCgkgICAgKG1lc3NhZ2UgIkNhbmNlbGluZy4u LmRvbmUiKSkKCTsoa2lsbC1idWZmZXIgYnVmKQoJKSkpKQoKKHNldHEgYXV0by1tb2RlLWFsaXN0 IChhcHBlbmQgICcoKCJcXC5oLmluJCIgLiBjLW1vZGUpKSBhdXRvLW1vZGUtYWxpc3QpKQoKKHNl dHEgYXV0by1tb2RlLWFsaXN0IChhcHBlbmQgICcoKCJcXC5tYWtlJCIgLiBtYWtlZmlsZS1tb2Rl KSkgYXV0by1tb2RlLWFsaXN0KSkKKHNldHEgYXV0by1tb2RlLWFsaXN0IChhcHBlbmQgICcoKCJN YWtlZmlsZVxcLiIgLiBtYWtlZmlsZS1nbWFrZS1tb2RlKSkgYXV0by1tb2RlLWFsaXN0KSkKCihh dXRvbG9hZCAndzMgInczIiAiV1dXIEJyb3dzZXIiIHQpCgoKOzs7IEVtYWNzL1czIENvbmZpZ3Vy YXRpb24KKGNvbmRpdGlvbi1jYXNlICgpIChyZXF1aXJlICd3My1hdXRvICJ3My1hdXRvIikgKGVy cm9yIG5pbCkpCgo7Ozs7IGZvcnRoCihhdXRvbG9hZCAnZm9ydGgtbW9kZSAiZ2ZvcnRoLmVsIikK KHNldHEgYXV0by1tb2RlLWFsaXN0IChjb25zICcoIlxcLmZzXFwnIiAuIGZvcnRoLW1vZGUpIGF1 dG8tbW9kZS1hbGlzdCkpCgo7Ozs7IE0yCgooaWYgKGFuZCAoZ2V0ZW52ICJIT1NUTkFNRSIpIChm aWxlLWV4aXN0cy1wIChjb25jYXQgIn4vLmhvc3RzLyIgKGdldGVudiAiSE9TVE5BTUUiKSAiLy5l bWFjcyIpKSkKICAgIChsb2FkIChjb25jYXQgIn4vLmhvc3RzLyIgKGdldGVudiAiSE9TVE5BTUUi KSAiLy5lbWFjcyIpKSkKCihkZWZ1biBNMi1zZXQtc2VuZC10by1idWZmZXIgKGJ1ZmZlci1uYW1l KQogIChpbnRlcmFjdGl2ZSAiTTIgYnVmZmVyIG5hbWU6ICIpCiAgKHNldHEgTTItc2VuZC10by1i dWZmZXIgYnVmZmVyLW5hbWUpKQooZ2xvYmFsLXNldC1rZXkgWyBmMyBdICdNMi1zZXQtc2VuZC10 by1idWZmZXIpCjs7IChnbG9iYWwtc2V0LWtleSBbIGYxMiBdICdNMikKOzsgKGdsb2JhbC1zZXQt a2V5IFsgZjExIF0gJ00yLXNlbmQtdG8tcHJvZ3JhbSkKOyhsb2FkICJELW1vZGUiKQooc2V0cSBh dXRvLW1vZGUtYWxpc3QgKGNvbnMgJygiXFwuZCQiIC4gTTItbW9kZSkgYXV0by1tb2RlLWFsaXN0 KSkKKHNldHEgYXV0by1tb2RlLWFsaXN0IChjb25zICcoIlxcLmRkJCIgLiBNMi1tb2RlKSBhdXRv LW1vZGUtYWxpc3QpKQooZGVmdW4gTTItdGV4dC10by1UVCAoYXJnKQogICJDb252ZXJ0IHRoZSBy ZWdpb24gdG8gVFQgbW9kZSBpZiB0aGUgbWFyayBpcyBhY3RpdmU7IG90aGVyd2lzZSBjb252ZXJ0 Cm9uZSBzLWV4cHJlc3Npb24uICBQcmVmaXggYXJnIEMtVSBvbmx5IG1lYW5zIGNyZWF0ZSBhIFRP IGxpbmsgZm9yIG9uZQpzLWV4cHJlc3Npb24uICBQcmVmaXggYXJnIGEgbnVtYmVyIG1lYW5zIGNv bnZlcnQgdGhhdCBtYW55IHMtZXhwcmVzc2lvbnMuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKG1l c3NhZ2UgImFyZzogJXMiIGFyZykKICAobGV0ICgoVE8gKGFuZCBhcmcgKGxpc3RwIGFyZykpKSkK ICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoaWYgKG5vdCBtYXJrLWFjdGl2ZSkgKG1hcmstc2V4 cCAoaWYgVE8gMSBhcmcpKSkKICAgICAgKGxldCAoKGkgKHBvaW50KSkgKGogKG1hcmspKSAoaykp CgkoaWYgKD4gaSBqKQoJICAgIChsZXQgKChrIGkpKSAoc2V0cSBpIGopIChzZXRxIGogaykpKQoJ KGdvdG8tY2hhciBqKQoJKGluc2VydCAoaWYgVE8gIiwgXCIiICJcIiwgXCIiKSkKCShnb3RvLWNo YXIgaSkKCShpbnNlcnQgKGlmIFRPICJcIiwgVE8gIiAiXCIsIFRUIFwiIikpCgkpKSkpCgooZ2xv YmFsLXNldC1rZXkgWyAobWV0YSBjb250cm9sIHkgKSBdICdNMi10ZXh0LXRvLVRUKQoKDAo7Ozs7 ICAgICAgICAgICAgICAgICAqKioqIFBFUlNPTkFMICoqKioKOzsgKGxvYWQgCjs7ICAoZXhwYW5k LWZpbGUtbmFtZSAKOzsgICAoY29uY2F0IAo7OyAgICAifiIgKGdldGVudiAiVVNFUiIpCjs7ICAg IDs7IH4kVVNFUiB3aWxsIGdpdmUgdGhlIGhvbWUgZGlyZWN0b3J5IG9mIHRoZSB1c2VyCjs7ICAg IDs7IFRoaXMgaXMgYmV0dGVyIHRoYW4gJEhPTUUgb3IgfiBpbiB0aGUgY2FzZSB3aGVyZSBhIHVz ZXIgaGFzIHVzZWQKOzsgICAgOzsgdGhlIHN1IGNvbW1hbmQgdG8gZWZmZWN0aXZlbHkgYmVjb21l IGFub3RoZXIgdXNlci4KOzsgICAgIi9ob21lL2VtYWNzL3BlcnNvbmFsIikKOzsgICApCjs7ICB0 IHQpCgo7OyBtYWlsY3J5cHQKOzs7IChpZiAobG9hZCAibWFpbGNyeXB0IiB0KQo7OzsgICAgIChw cm9nbiAKOzs7ICAgICAgIChtYy1zZXR2ZXJzaW9uICJncGciKQo7OzsgICAgICAgKGFkZC1ob29r ICdtYWlsLW1vZGUtaG9vayAnbWMtaW5zdGFsbC13cml0ZS1tb2RlKQo7OzsgICAgICAgKGFkZC1o b29rICdybWFpbC1zaG93LW1lc3NhZ2UtaG9vayAnbWMtaW5zdGFsbC1yZWFkLW1vZGUpCjs7OyAg ICAgICAoYWRkLWhvb2sgJ3JtYWlsLXN1bW1hcnktbW9kZS1ob29rICdtYy1pbnN0YWxsLXJlYWQt bW9kZSkKOzs7ICAgICAgIChhZGQtaG9vayAnbWVzc2FnZS1tb2RlLWhvb2sgJ21jLWluc3RhbGwt d3JpdGUtbW9kZSkKOzs7ICAgICAgIChhZGQtaG9vayAnbmV3cy1yZXBseS1tb2RlLWhvb2sgJ21j LWluc3RhbGwtd3JpdGUtbW9kZSkKOzs7ICAgICAgIChzZXRxIG1jLXBhc3N3ZC10aW1lb3V0IDYw MCkpKQoKKHNldHEgTWFuLXN3aXRjaGVzICItYSIpCQk7dG8gc2VlIG1hbiBwYWdlcyBmcm9tIGFs bCBzZWN0aW9ucyBvZiB0aGUgbWFudWFsCgoKKGFkZC1ob29rICdMYVRlWC1tb2RlLWhvb2sgJ0xh VGVYLXByZXZpZXctc2V0dXApCihhdXRvbG9hZCAnTGFUZVgtcHJldmlldy1zZXR1cCAicHJldmll dyIpCihhdXRvbG9hZCAncmVxICJyZXF1ZXN0LXF1ZXVlLmVsIiAiIiB0KQoKOzs7OyBzbWwKKHNl dHEgc21sLXByb2dyYW0tbmFtZSAic21sIikKKHNldHEgYXV0by1tb2RlLWFsaXN0IChjb25zICco IlxcLm1sJCIgLiBjYW1sLW1vZGUpIGF1dG8tbW9kZS1hbGlzdCkpCihzZXRxIGF1dG8tbW9kZS1h bGlzdCAoY29ucyAnKCJcXC5tbGkkIiAuIGNhbWwtbW9kZSkgYXV0by1tb2RlLWFsaXN0KSkKCjs7 OyBmb2MKKGFkZC10by1saXN0ICdhdXRvLW1vZGUtYWxpc3QgJygiXFwuZm9jJCIgLiBmb2MtbW9k ZSkpCihhdXRvbG9hZCAnZm9jLW1vZGUgImZvYyIgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgRm9j IGNvZGUuIiB0KQoKOzs7IGRpcmVkCihzZXRxIGRpcmVkLWdhcmJhZ2UtZmlsZXMtcmVnZXhwCTsg dXNlICUmIGluIGRpcmVkIG1vZGUgdG8gZmxhZyB0aGVzZSBmb3IgZGVsZXRpb24KICAocmVnZXhw LW9yCiAgICJeXFwuIyIKICAgIl5jb3JlJCIgCiAgICJeYS5vdXQkIiAKICAgIl5hdXRvbTR0ZVxc LmNhY2hlJCIKICAgIl8uaHRtbCQiCiAgICJfX1swLTldWzAtOV1bMC05XVswLTldXFwuaHRtbCQi CiAgIChhcHBseSAncmVnZXhwLW9yIAoJICAobWFwY2FyIChsYW1iZGEgKGEpIChjb25jYXQgIlxc LiIgYSAiJCIpKQoJCSAgJygJCQk7IGZpbGUgZXh0ZW5zaW9ucwoJCSAgICAibyIJCQk7IGNvbXBp bGVkIG9iamVjdCBmaWxlcwoJCSAgICAiY21pIiAiY21vIiAJOyBjb21waWxlZCBvY2FtbCBmaWxl cwoJCSAgICAiaWxnIiAiaW5kIiAiYmJsIiAiYmxnIiAibG9nIiAidG9jIiAiaWR4IiAiYmFrIiAi YXV4IiAidFswLTldKyIgOyBUZVggZmlsZXMKCQkgICAgIm9yaWciICJyZWoiIAk7IHBhdGNoIGZp bGVzCgkJICAgICJ2byIKCQkgICAgImJhay1bMS05XVswLTldKiIgIn5bMC05Ll0rfiIgOyBjdnMg YmFja3VwIGZpbGVzCgkJICAgICJhY28iICJhbm8iICJhdHIiICJjaG8iICJkY3MiICJkY3QiICJl Y2wiICJlbm8iICJlcmUiICJlcnIiICJlc2giICJldGgiICJldmwiICJmaWwiICJmcm0iICJsb2ci ICJub2wiICJwcmYiICJzZ2wiICJ0aGwiICJ2Y2wiIDsgbWl6YXIgYWNjb20gdGVtcG9yYXJ5IGZp bGVzOgoJCSAgICAiYW5hIiAicGFyIiAicHJlIiAicmVmIiA7IG1pemFyIHZlcmlmaWVyIHRlbXBv cmFyeSBmaWxlcwoJCSAgICAiZGZzIiA7IG1vcmUgbWl6YXIgZmlsZXMKCQkgICAgImJ1eCIgOyBt eSB2ZXJzaW9uIG9mICouYXV4IGZvciB0ZXgKCQkgICAgImdsb2IiIDsgY29xYwoJCSAgICApKSkp KQoKKHNldHEgY29tcGxldGlvbi1pZ25vcmVkLWV4dGVuc2lvbnMJOyBhbHNvIHVzZWQgYnkgZGly ZWQgZm9yIGNvbG9yaW5nCiAgICAgICAnKAoJICIubyIgIn4iICIuYmluIiAiLmxiaW4iICIuc28i ICIuYSIgIi5sbiIgIi5ibGciICIuYmJsIiAiLmVsYyIgIi5sb2YiCgkgIi5nbG8iICIuaWR4IiAi LmxvdCIgIi5zdm4vIiAiLmhnLyIgIi5ienIvIiAiQ1ZTLyIgIl9kYXJjcy8iCgkgIl9NVE4vIiAi LmZtdCIgIi50Zm0iICIuY2xhc3MiICIuZmFzIiAiLmxpYiIgIi5tZW0iICIueDg2ZiIgIi5zcGFy Y2YiCgkgIi5kZnNsIiAiLnBmc2wiICIuZDY0ZnNsIiAiLnA2NGZzbCIgIi5seDY0ZnNsIiAiLmx4 MzJmc2wiICIuZHg2NGZzbCIKCSAiLmR4MzJmc2wiICIuZng2NGZzbCIgIi5meDMyZnNsIiAiLnN4 NjRmc2wiICIuc3gzMmZzbCIgIi53eDY0ZnNsIgoJICIud3gzMmZzbCIgIi5mYXNsIiAiLnVmc2wi ICIuZnNsIiAiLmR4bCIgIi5sbyIgIi5sYSIgIi5nbW8iICIubW8iCgkgIi50b2MiICIuYXV4IiAi LmNwIiAiLmZuIiAiLmt5IiAiLnBnIiAiLnRwIiAiLnZyIiAiLmNwcyIgIi5mbnMiICIua3lzIgoJ ICIucGdzIiAiLnRwcyIgIi52cnMiICIucHljIiAiLnB5byIKCgkgIi5jbWkiICIuY214YSIgIi5t bGxpYiIJOyBDb3EKCSAiLnh5YyIgIi1tMi50ZXgiICIuYnV4IgoJICIuYXV4bG9jayIgIi5iY2Yi ICIucnVuLnhtbCIgIi5zeW5jdGV4Lmd6IiAiLmZkYl9sYXRleG1rIiAiLmZscyIgIi5icmYiCQk7 IFRlWAoJICIub2xkIiAiLm91dCIgIi5pbGciICIuaW5kIiAiLnBzIiAiLmR2aS5neiIgIi5wcy5n eiIgIi5vbyIgIi5zZyIgIi50bXAiCgkgIi5hY28iICIuYW5vIiAiLmF0ciIgIi5jaG8iICIuZGNz IiAiLmRjdCIgIi5lY2wiICIuZW5vIiAiLmVyZSIgIi5lcnIiICIuZXNoIiAiLmV0aCIgIi5ldmwi ICIuZmlsIiAiLmZybSIgIi5sb2ciICIubm9sIiAiLnByZiIgIi5zZ2wiICIudGhsIiAiLnZjbCIg OyBtaXphciBhY2NvbSB0ZW1wb3JhcnkgZmlsZXM6CgkgIi5hbmEiICIucGFyIiAiLnByZSIgIi5y ZWYiIDsgbWl6YXIgdmVyaWZpZXIgdGVtcG9yYXJ5IGZpbGVzCgkgIi5kZnMiIDsgbW9yZSBtaXph ciBmaWxlcwoJICIudi5kIgoJICkpCgo7OyBldGFjaAooYXV0b2xvYWQgJ2F0dGFjaCAiZXRhY2gi IAoiQXR0YWNoIGEgZmlsZSBvciBjb2xsZWN0aW9uIG9mIGZpbGVzIHRvIHRoZSBwcmVzZW50IG91 dGdvaW5nIGVtYWlsIG1lc3NhZ2UuCldpbGRjYXJkcyBhcmUgcGVybWl0dGVkIHVuZGVyIHJlY2Vu dCB2ZXJzaW9ucyBvZiBFbWFjcy4gIFVzZSBpbiBNYWlsIG1vZGUuIiB0KQoKKGF1dG9sb2FkICdk ZXRhY2ggImV0YWNoIgoiRGV0YWNoIHRoZSBlbmNvZGVkIGF0dGFjaG1lbnRzIGZyb20gdGhlIHBy ZXNlbnQgZW1haWwgbWVzc2FnZS4KVXNlIGluIFJNQUlMIG1vZGUuIiB0KQoKKGF1dG9sb2FkICdt aW1lLWZvcndhcmQgImV0YWNoIgoiVXNlIE1JTUUgbWVzc2FnZS9yZmM4MjIgZm9ybWF0IHRvIGZv cndhcmQgYSBtZXNzYWdlLiAgVXNlIGluIFJNQUlMIG1vZGUuIiB0KQoKKGFkZC1ob29rICdybWFp bC1tb2RlLWhvb2sKCSAgKGZ1bmN0aW9uCgkgICAobGFtYmRhICgpCgkgICAgIChkZWZpbmUta2V5 IHJtYWlsLW1vZGUtbWFwIFsgKGNvbnRyb2wgYykgKGNvbnRyb2wgdSkgXSAnYnJvd3NlLXVybC1h dC1wb2ludCkKCSAgICAgKGRlZmluZS1rZXkgcm1haWwtbW9kZS1tYXAgWyAoY29udHJvbCBjKSAo Y29udHJvbCBmKSBdICdmaW5kLWZpbGUtYXQtcG9pbnQpCgkgICAgIChkZWZpbmUta2V5IHJtYWls LW1vZGUtbWFwICJGIiAnbWltZS1mb3J3YXJkKQoJICAgICAoZGVmaW5lLWtleSBybWFpbC1tb2Rl LW1hcCAiKCIgJ2RldGFjaCkKCSAgICAgKGRlZmluZS1rZXkgcm1haWwtbW9kZS1tYXAgIksiICdr aWxsLWxhYmVsLWRldGFjaGVkKQoJICAgICApKSkKCihhZGQtaG9vayAnbWFpbC1tb2RlLWhvb2sK CSAgKGZ1bmN0aW9uCgkgICAobGFtYmRhICgpCgkgICAgIChkZWZpbmUta2V5IG1haWwtbW9kZS1t YXAgWyAoY29udHJvbCBjKSA/YSBdICdhdHRhY2gpCgkgICAgICkpKQoKKGFkZC1ob29rICdybWFp bC1zdW1tYXJ5LW1vZGUtaG9vawoJICAoZnVuY3Rpb24KCSAgIChsYW1iZGEgKCkKCSAgICAgKGRl ZmluZS1rZXkgcm1haWwtc3VtbWFyeS1tb2RlLW1hcCAiRiIgJ21pbWUtZm9yd2FyZCkKCSAgICAg KGRlZmluZS1rZXkgcm1haWwtc3VtbWFyeS1tb2RlLW1hcCAiKCIgJ2RldGFjaCkKCSAgICAgKGRl ZmluZS1rZXkgcm1haWwtc3VtbWFyeS1tb2RlLW1hcCAiSyIgJ2tpbGwtbGFiZWwtZGV0YWNoZWQp CgkgICAgICkpKQoKOzsKCihzZXRxIGZvbyAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lLWluaXRpYWwt ZnJhbWUgJ3RvcCkpIDsoKyAtMTExMykgaWYgbm90IG9uIHNjcmVlbiwgZXhwZWN0aW5nIGEgbnVt YmVyLCBsaWtlIDg3LCBjb21wdXRlZCBhcyAxMjAwLTExMTMsIHdoZW4gbXkgZ2VvbWV0cnkgaXMg MTk0eDY3LTAtMAo7OyBteSBzY3JlZW4gaGVpZ2h0IGlzIDEyMDAsIGJ1dCBpdCB3b3VsZG4ndCBr bm93IHRoYXQgd2hlbiBpdCdzIG9mZiB0aGUgc2NyZWVuIQoKKGRlZnVuIHhiaWZmKCkgKGludGVy YWN0aXZlKSAoc3RhcnQtcHJvY2VzcyAieGJpZmYiICIqeGJpZmYqIiAieGJpZmYiKSkKOyAoaWYg KGFuZCAoZ2V0ZW52ICJESVNQTEFZIikgKGdldGVudiAiTUFJTCIpIChmaWxlLWV4aXN0cy1wIChn ZXRlbnYgIk1BSUwiKSkpICh4YmlmZikpCgo7Ozsgc2luZ3VsYXIKKHNldHEgbG9hZC1wYXRoIChj b25zICIvY2FweWJhcmEvZW5jYXAvU2luZ3VsYXItMi4wLjUvU2luZ3VsYXIvMi0wLTUvZW1hY3Mi IGxvYWQtcGF0aCkpCihhdXRvbG9hZCAnc2luZ3VsYXIgInNpbmd1bGFyIiAiU3RhcnQgU2luZ3Vs YXIgdXNpbmcgZGVmYXVsdCB2YWx1ZXMuIiB0KQooYXV0b2xvYWQgJ3Npbmd1bGFyLW90aGVyICJz aW5ndWxhciIgIkFzayBmb3IgYXJndW1lbnRzIGFuZCBzdGFydCBTaW5ndWxhci4iIHQpCihzZXRx IGF1dG8tbW9kZS1hbGlzdCAoY29ucyAnKCJcXC5zaW5nXFwnIiAuIGMrKy1tb2RlKSBhdXRvLW1v ZGUtYWxpc3QpKQooc2V0cSBhdXRvLW1vZGUtYWxpc3QgKGNvbnMgJygiXFwubGliXFwnIiAuICBj KystbW9kZSkgYXV0by1tb2RlLWFsaXN0KSkKCjs7OyBtaXphcgooaWYgKGdldGVudiAiTUlaRklM RVMiKQogICAgKHByb2duCiAgICAgIChhdXRvbG9hZCAnbWl6YXItbW9kZSAibWl6YXIiICJNYWpv ciBtb2RlIGZvciBlZGl0aW5nIE1pemFyIGFydGljbGVzLiIgdCkKICAgICAgKGF1dG9sb2FkICdt bWxxdWVyeS1kZWNvZGUgIm1pemFyIikKICAgICAgKGF1dG9sb2FkICdtbWxxdWVyeS1tb2RlICJt aXphciIpCiAgICAgIChzZXRxIGF1dG8tbW9kZS1hbGlzdCAoYXBwZW5kICcoICAoIlxcLm1peiIg LiBtaXphci1tb2RlKSAoIlxcLmFicyIgLiBtaXphci1tb2RlKSkgYXV0by1tb2RlLWFsaXN0KSkK ICAgICAgKHNldHEgZm9ybWF0LWFsaXN0IAoJICAgIChhcHBlbmQgICcoCgkJICAgICAgICh0ZXh0 L21tbHF1ZXJ5ICJFeHRlbmRlZCBNSU1FIHRleHQvbW1scXVlcnkgZm9ybWF0LiIgCgkJCQkgICAg ICAiOjpbIFx0XSpDb250ZW50LVtUdF15cGU6WyAJXSp0ZXh0L21tbHF1ZXJ5IgoJCQkJICAgICAg bW1scXVlcnktZGVjb2RlIG5pbCBuaWwgbW1scXVlcnktbW9kZSkpCgkJICAgICBmb3JtYXQtYWxp c3QpKSkpCgo7OyB3aWtpcGVkaWEtbW9kZS5lbAooYXV0b2xvYWQgJ3dpa2lwZWRpYS1tb2RlICJ3 aWtpcGVkaWEtbW9kZS5lbCIgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgZG9jdW1lbnRzIGluIFdp a2lwZWRpYSBtYXJrdXAuIiB0KQooc2V0cSBhdXRvLW1vZGUtYWxpc3QgKGNvbnMgJygiXFwud2lr aVxcJyIgLiB3aWtpcGVkaWEtbW9kZSkgYXV0by1tb2RlLWFsaXN0KSkKCjs7IHZtIC0tIHRocmVh ZGVkIGVtYWlsIHJlYWRlciBmb3IgZW1hY3MKKGF1dG9sb2FkICd2bSAidm0tc3RhcnR1cCIgIlJl YWQgbWFpbCB1bmRlciBFbWFjcy4iIHQpCgo7OyB0cmFtcAooZXZhbC1hZnRlci1sb2FkICJ0cmFt cCIKICAnKHByb2duCiAgICAgKGFkZC10by1saXN0ICd0cmFtcC1kZWZhdWx0LW1ldGhvZC1hbGlz dCAnKCJrLXRoZW9yeS4qIiAiIiAiZnRwIikpCiAgICAgKHRyYW1wLXNldC1jb21wbGV0aW9uLWZ1 bmN0aW9uICJzc2giCiAgICAgICcoKHRyYW1wLXBhcnNlLXNjb25maWcgIi9ldGMvc3NoX2NvbmZp ZyIpICh0cmFtcC1wYXJzZS1zY29uZmlnICJ+Ly5zc2gvY29uZmlnIikpKQogICAgIDsgKHRyYW1w LXNldC1jb21wbGV0aW9uLWZ1bmN0aW9uICJmdHAiICcoKHRyYW1wLXBhcnNlLW5ldHJjICJ+Ly5u ZXRyYyIpKSkKICAgICApKQoKOzs7OyBmb250cyBhbmQgcHJldHR5IGNoYXJhY3RlcnMKOyhmb250 LWxvY2stYWRkLWtleXdvcmRzICdlbWFjcy1saXNwLW1vZGUKOyAgICAnKCgiKFxcKGxhbWJkYVxc KVxcPiIgKDAgKHByb2cxICgpCjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBv c2UtcmVnaW9uIChtYXRjaC1iZWdpbm5pbmcgMSkKOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAxKQo7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA/zrspKSkpKSkKCjs7OyBzYWdlCjs7OyBodHRwOi8v d3d3LnNhZ2VtYXRoLm9yZy9lbWFjcy8KCjs7OyBzYWdlCgo7IChnbG9iYWwtc2V0LWtleSBbIChj b250cm9sIGMpIChzKSBdICdzYWdlKQo7IChnbG9iYWwtc2V0LWtleSBbIChtZXRhIGkpIF0gJ3Nh Z2UpCjsgKGF1dG9sb2FkICdweXJleC1tb2RlICJweXJleC1tb2RlIiAiTWFqb3IgbW9kZSBmb3Ig ZWRpdGluZyBQeXJleCBmaWxlcyIgdCkKOyAoYXV0b2xvYWQgJ3B5dGhvbi1tb2RlICJweXRob24t bW9kZSIgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgUHl0aG9uIGZpbGVzIiB0KQo7IChhdXRvbG9h ZCAnc2FnZSAic2FnZSIgIlN0YXJ0IGEgc2FnZSBzZXNzaW9uIiB0KQo7IChhZGQtdG8tbGlzdCAn YXV0by1tb2RlLWFsaXN0ICcoIlxcLlxcKHB4ZFxcfHB5eFxcKVxcJyIgLiBweXJleC1tb2RlKSkK OyAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5weGlcXCciIC4gcHl0aG9uLW1v ZGUpKQoKOzsgKGFkZC10by1saXN0ICdsb2FkLXBhdGggKGV4cGFuZC1maWxlLW5hbWUgIi9hdXgv ZGFuL3NhZ2Uvc2FnZS0zLjIuMi11YnVudHUzMmJpdC1pbnRlbC1pNjg2LUxpbnV4L2RhdGEvZW1h Y3MiKSkKOzsgKHJlcXVpcmUgJ3B5dGhvbikKOzsgKHJlcXVpcmUgJ3B5cmV4ICJweXJleC1tb2Rl IiB0KQo7OyAocmVxdWlyZSAnc2FnZSAic2FnZS1tb2RlIiB0KQo7OyAoc2V0cSBzYWdlLWNvbW1h bmQgIi9hdXgvZGFuL3NhZ2Uvc2FnZS0zLjIuMi11YnVudHUzMmJpdC1pbnRlbC1pNjg2LUxpbnV4 L3NhZ2UiKQoKOzs7OyBNYXRoZW1hdGljYQoKKGF1dG9sb2FkICdtbWEtbW9kZSAibW1hLmVsIiAi TWF0aGVtYXRpY2EgcGFja2FnZSBmaWxlIG1vZGUiIHQpCihhZGQtdG8tbGlzdCAnYXV0by1tb2Rl LWFsaXN0ICcoIlxcLm1cXCciIC4gbW1hLW1vZGUpKQoKOzs7OyBDb0NvQQoKKGxvYWQgIi9hL3Nv ZnR3YXJlL2NvY29hLTQuNy9lbWFjcy9jb2NvYS5lbWFjcyIgdCkKCjs7OzsgZWRpIGFuZCB4MTIK OyAoYWRkLXRvLWxpc3QgJ21hZ2ljLW1vZGUtYWxpc3QgJygiXklTQSIgLiBlZGktbW9kZSkpCihh dXRvbG9hZCAnZWRpLW1vZGUgImVkaS1tb2RlIiAiZWRpIG1vZGUiIHQpCjs7OzsgeDEyLW1vZGUg aXMgYnJva2VuOiBpdCBhZGRzIGEgbmV3bGluZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlCjsgKGF1 dG9sb2FkICd4MTItbW9kZSAieDEyLW1vZGUiICJ4MTIgbW9kZSIgdCkKOyAoYWRkLXRvLWxpc3Qg J21hZ2ljLW1vZGUtYWxpc3QgJygiXklTQSIgLiB4MTItbW9kZSkpCgo7OzsKKHB1dCAnc2Nyb2xs LWxlZnQgJ2Rpc2FibGVkIG5pbCkKCjs7OyBmdWxsc2NyZWVuCihkZWZ1biBmdWxsc2NyZWVuICgm b3B0aW9uYWwgZikKICAoaW50ZXJhY3RpdmUpCiAgKHNldC1mcmFtZS1wYXJhbWV0ZXIgZiAnZnVs bHNjcmVlbgoJCSAgICAgICAoaWYgKGZyYW1lLXBhcmFtZXRlciBmICdmdWxsc2NyZWVuKSBuaWwg J2Z1bGxib3RoKSkpCjsoYWRkLWhvb2sgJ2FmdGVyLW1ha2UtZnJhbWUtZnVuY3Rpb25zICdmdWxs c2NyZWVuKQooZGVmdW4gZnVsbHNjcmVlbjIgKCkKICAoaW50ZXJhY3RpdmUpCiAgKHgtc2VuZC1j bGllbnQtbWVzc2FnZSBuaWwgMCBuaWwgIl9ORVRfV01fU1RBVEUiIDMyICcoMiAiX05FVF9XTV9T VEFURV9GVUxMU0NSRUVOIiAwKSkpCihkZWZ1biBmdWxsc2NyZWVuMyAoKQogIChpbnRlcmFjdGl2 ZSkKICAoc2hlbGwtY29tbWFuZCAid21jdHJsIC1yIDpBQ1RJVkU6IC1idG9nZ2xlLGZ1bGxzY3Jl ZW4iKSkKKGdsb2JhbC1zZXQta2V5IFsgKHN1cGVyIGYxMSkgXSAnZnVsbHNjcmVlbjEpCgo7Ozsg Zml4IE1BTlBBVEggLS0gd2h5IGlzIHRoaXMgbmVlZGVkPyAgKHNlZSB+Ly5wYXRocwooaWYgKGFu ZCAoZ2V0ZW52ICJORVdNQU5QQVRIIikgKG5vdCAoZXF1YWwgKGdldGVudiAiTUFOUEFUSCIpIChn ZXRlbnYgIk5FV01BTlBBVEgiKSkpKSAoc2V0ZW52ICJNQU5QQVRIIiAoZ2V0ZW52ICJORVdNQU5Q QVRIIikpKQoKOzsgdG8gZ2V0IG5ic3AgY2hhciAxNjAgZGlzcGxheWVkIGFzIHNwYWNlCihzdGFu ZGFyZC1kaXNwbGF5LThiaXQgMTYwIDE2MCkKCihkZWZpbmUtZ2VuZXJpYy1tb2RlICd4bW9kbWFw LW1vZGUKICAgICAgJyg/ISkKICAgICAgJygiYWRkIiAiY2xlYXIiICJrZXljb2RlIiAia2V5c3lt IiAicG9pbnRlciIgInJlbW92ZSIpCiAgICAgIG5pbAogICAgICAnKCJbeFhdbW9kbWFwXFwocmNc XCk/XFwnIikKICAgICAgbmlsCiAgICAgICJTaW1wbGUgbW9kZSBmb3IgeG1vZG1hcCBmaWxlcy4i KQoKOzs7OyBzY29ucwoKKHNldHEgYXV0by1tb2RlLWFsaXN0IChjb25zICcoIlNDb25zdHJ1Y3Qi IC4gcHl0aG9uLW1vZGUpIGF1dG8tbW9kZS1hbGlzdCkpCihzZXRxIGF1dG8tbW9kZS1hbGlzdCAo Y29ucyAnKCJTQ29uc2NyaXB0IiAuIHB5dGhvbi1tb2RlKSBhdXRvLW1vZGUtYWxpc3QpKQo7Owoo c2V0ZW52ICJQQUdFUiIgInNlZCAncy8uCC8vZyciKQoKOzs7OyBlbWFjcyBzZXJ2ZXIKICAgIChz ZXJ2ZXItc3RhcnQpCiAgICAoc2V0ZW52ICJFRElUT1IiICJlbWFjc2NsaWVudCIpCiAgICAoc2V0 ZW52ICJWSVNVQUwiICJlbWFjc2NsaWVudCIpCgooc2hvdy1wYXJlbi1tb2RlIHQpCjsgKHNldHEg c2hvdy1wYXJlbi1zdHlsZSAncGFyZW50aGVzaXMpCgo7OyAoc2V0cSBkaXItbG9jYWxzLWZpbGUg Ii5teS1kaXItbG9jYWxzLmVsIikgOyBzbyB3ZSBpZ25vcmUgY29xJ3MgZGlyIGxvY2FsIGZpbGVz Cgo7Ozs7IGNocm9tZSBlZGl0IHNlcnZlcgoKKHdoZW4gKHJlcXVpcmUgJ2VkaXQtc2VydmVyIG5p bCB0KSAoZWRpdC1zZXJ2ZXItc3RhcnQpKQoKOzs7OyB0d2VsZgoKOzsgKGxvYWQgIi9BcHBsaWNh dGlvbnMvVHdlbGYvZW1hY3MvdHdlbGYtaW5pdC5lbCIpIDs7IHVuaW5zdGFsbGVkCjs7IChzZXRx IGxvYWQtcGF0aCAoY29ucyAiL0FwcGxpY2F0aW9ucy9Ud2VsZi9lbWFjcyIgbG9hZC1wYXRoKSkK OzsgKGF1dG9sb2FkICd0d2VsZi1tb2RlICJ0d2VsZiIgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcg VHdlbGYgc291cmNlLiIgdCkKOzsgKGF1dG9sb2FkICd0d2VsZi1zZXJ2ZXIgInR3ZWxmIiAiUnVu IGFuIGluZmVyaW9yIFR3ZWxmIHNlcnZlci4iIHQpCjs7IChhdXRvbG9hZCAndHdlbGYtc21sICJ0 d2VsZiIgIlJ1biBhbiBpbmZlcmlvciBUd2VsZi1TTUwgcHJvY2Vzcy4iIHQpCgo7OyAoc2V0cSBh dXRvLW1vZGUtYWxpc3QKOzsgICAgICAgKGNvbnMgJygiXC5lbGYkIiAuIHR3ZWxmLW1vZGUpCjs7 IAkgICAgKGNvbnMgJygiXC5xdXkkIiAuIHR3ZWxmLW1vZGUpCjs7IAkJICAoY29ucyAnKCJcLnRo bSQiIC4gdHdlbGYtbW9kZSkKOzsgCQkJKGNvbnMgJygiXC5jZmckIiAuIHR3ZWxmLW1vZGUpCjs7 IAkJCSAgICAgIGF1dG8tbW9kZS1hbGlzdCkpKSkpCjs7IChzZXRxIHR3ZWxmLXNlcnZlci1wcm9n cmFtICIvQXBwbGljYXRpb25zL1R3ZWxmL2Jpbi90d2VsZi1zZXJ2ZXIiKQoKOyBvciBtYXliZSB0 aGlzOgoKKHNldHEgdHdlbGYtcm9vdCAiL1VzZXJzL2Rhbi9zcmMvdHdlbGYvdHdlbGYvIikKOyAo bG9hZCAoY29uY2F0IHR3ZWxmLXJvb3QgImVtYWNzL3R3ZWxmLWluaXQuZWwiKSkKCjs7Ozsgb2Nh bWwgYW5kIGNvcQoKOyBlbmFibGVzIGNvcS1tb2RlIG9uICoudiBmaWxlcywgYW1vbmcgb3RoZXIg dGhpbmdzOgo7IChsb2FkICJjb3FkZWJ1Zy5lbCIpCgooYWRkLWhvb2sgJ2NhbWwtbW9kZS1ob29r IAoJICAnKGxhbWJkYSAoKQoJICAgICAocmVxdWlyZSAnY2FtbC1mb250KQoJICAgICAoY2FtbC1m b250LXNldC1mb250LWxvY2spCgkgICAgIChpZiAob3IgCgkJICAoc3RyaW5nLW1hdGNoICJcXC5t bDQtcHJlcHJvY2Vzc2VkJCIgKGJ1ZmZlci1maWxlLW5hbWUpKQoJCSAgKGFuZAoJCSAgIChzdHJp bmctbWF0Y2ggIlxcLm1sJCIgKGJ1ZmZlci1maWxlLW5hbWUpKQoJCSAgIChmaWxlLWV4aXN0cy1w IChjb25jYXQgKGJ1ZmZlci1maWxlLW5hbWUpICI0IikpKSkKCQkgKHNldHEgYnVmZmVyLXJlYWQt b25seSB0KSkpKQoKKGRlZnVuIGNvcS1QcmludC1Bc3N1bXB0aW9ucyAoKQogICJBc2sgZm9yIGFu IGlkZW50IGFuZCBwcmludCB0aGUgYXNzdW1wdGlvbnMgaXQgZGVwZW5kcyBvbi4iCiAgKGludGVy YWN0aXZlKQogIChjb3EtYXNrLWRvICJQcmludCBBc3N1bXB0aW9ucyIgIlByaW50IEFzc3VtcHRp b25zIikpCjs7IChwcm9vZi1kZWZpbnZpc2libGUgY29xLVNob3ctVW5pdmVyc2VzICJTaG93IFVu aXZlcnNlcy4iKQooYWRkLWhvb2sgJ2NvcS1tb2RlLWhvb2sgCgkgIChmdW5jdGlvbiAKCSAgIChs YW1iZGEoKQoJICAgICAoZGVmaW5lLWtleSBjb3EtbW9kZS1tYXAgWyAoY29udHJvbCBjKSAoY29u dHJvbCBhKSAoYSkgXSAnY29xLVByaW50LUFzc3VtcHRpb25zKQoJICAgICAoZGVmaW5lLWtleSBj b3EtbW9kZS1tYXAgWyAoY29udHJvbCBjKSAoY29udHJvbCBhKSAodSkgXSAnY29xLVNob3ctVW5p dmVyc2VzKQoJICAgICAoZGVmaW5lLWtleSBjb3EtbW9kZS1tYXAgWyAoY29udHJvbCBjKSAoLikg XSAncHJvb2YtZWxlY3RyaWMtdGVybWluYXRvci10b2dnbGUpCgkgICAgICkpKQoKOzsgKGFkZC1o b29rICdjb3EtbW9kZS1ob29rICMnY29tcGFueS1jb3EtbW9kZSkKKHNldHEgY29tcGFueS1jb3Et bGl2ZS1vbi10aGUtZWRnZSB0KQoKOzsgKGFkZC1ob29rICdjb3EtbW9kZS1ob29rIAo7OyAJICAo ZnVuY3Rpb24gCjs7IAkgICAobGFtYmRhKCkKOzsgCSAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkg P18gInciKQo7OyAJICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/4oSkICJ3IikgOyB3aHkgZG9l c24ndCB0aGlzIHdvcms/Cjs7IAkgICAgIChzZXQtaW5wdXQtbWV0aG9kICJBZ2RhIikKOzsgCSAg ICAgKSkpCgooc2V0cS1kZWZhdWx0IHRydW5jYXRlLWxpbmVzIHQpCgo7Ozs7IHR1YXJlZywgbmVl ZGVkIGJ5IGVmZgooYXV0b2xvYWQgJ3R1YXJlZy1tb2RlICJ0dWFyZWctbW9kZSIpCgo7Ozs7IGVm ZgooYXV0b2xvYWQgJ2VmZi1tb2RlICJlZmYtbW9kZSIgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcg ZWZmIGZpbGVzIiB0KQooc2V0cSBhdXRvLW1vZGUtYWxpc3QgKGNvbnMgJygiXFwuZWZmJCIgLiBl ZmYtbW9kZSkgYXV0by1tb2RlLWFsaXN0KSkKCjs7OzsgYWdkYQoob3IgKHJlcXVpcmUgJ2FnZGEt aW5wdXQgbmlsIHQpICh3YXJuICJmYWlsZWQgdG8gbG9hZCBhZ2RhLWlucHV0IikpCihvciAocmVx dWlyZSAnYWdkYTItbW9kZSBuaWwgdCkgKHdhcm4gImZhaWxlZCB0byBsb2FkIGFnZGEyLW1vZGUi KSkKCjs7OzsgUHJvb2YgR2VuZXJhbAoKOzsgKHJlcXVpcmUgJ3Byb29mLXNpdGUgIn4vc3JjL1By b29mQ2hlY2tpbmcvUEcvZ2VuZXJpYy9wcm9vZi1zaXRlIikKOzsgKG9yIChyZXF1aXJlICdwcm9v Zi1zaXRlICJ+Ly5lbWFjcy5kL2xpc3AvUEcuZ2l0L2dlbmVyaWMvcHJvb2Ytc2l0ZSIgdCkgKHdh cm4gImZhaWxlZCB0byBsb2FkIFByb29mR2VuZXJhbCIpKQoKOzsgKGxvYWQgIn4vLmVtYWNzLmQv bGlzcC9QRy5naXQvZ2VuZXJpYy9wcm9vZi1zaXRlIiB0KQoKCjs7OzsgVFMsIHR5cGUgc3lzdGVt IGNoZWNrZXIgYW5kIHByb29mIGFzc2lzdGFudAoKOzsgKHNldHEgYXV0by1tb2RlLWFsaXN0Cjs7 ICAgICAgIChhcHBlbmQgIGF1dG8tbW9kZS1hbGlzdAo7OyAJICAgICAgICcoKCJcXC50cyQiIC4g dHMtbW9kZSkpCjs7IAkgICAgICAgKSkKOzsgKGF1dG9sb2FkICd0cy1tb2RlICJ0cy5lbCIgIiIg dCkKCjs7IChhZGQtaG9vayAndHMtbW9kZS1ob29rCjs7IAkgIChmdW5jdGlvbiAKOzsgCSAgIChs YW1iZGEoKQo7OyAJICAgICAoc2V0LWZpbGwtY29sdW1uIDk4KSkpKQoKOzs7OyBjbWFrZSBtb2Rl Cjs7IChyZXF1aXJlICdjbWFrZS1tb2RlKQoKOzs7OyB0ZXh0IGZvbnRzCgo7IGh0dHA6Ly9zb3Vy Y2Vmb3JnZS5uZXQvcHJvamVjdHMvc291cmNlY29kZXByby5hZG9iZS8KOyhzZXQtZnJhbWUtZm9u dCAiLWFwcGxlLVNvdXJjZV9Db2RlX1Byby1tZWRpdW0tbm9ybWFsLW5vcm1hbC0qLTE0LSotKi0q LW0tMC1pc28xMDY0Ni0xIikKOyhzZXQtZnJhbWUtZm9udCAiLSotc291cmNlIGNvZGUgcHJvLSot Ki0qLSotMTYtKi0qLSotKi0qLWlzbzEwNjQ2LSoiKQooZ2xvYmFsLXNldC1rZXkgWyAoY29udHJv bCBtZXRhID0pIF0gJ3RleHQtc2NhbGUtaW5jcmVhc2UpCihnbG9iYWwtc2V0LWtleSBbIChjb250 cm9sIG1ldGEgLSkgXSAndGV4dC1zY2FsZS1kZWNyZWFzZSkKCjs7OzsgbW9yZS11bmlxdWUgYnVm ZmVyIG5hbWVzCgoocmVxdWlyZSAndW5pcXVpZnkpCgo7IChyZXF1aXJlICd0b2dnbGUtc291cmNl KQoKOzs7OyBwYWNrYWdlcwoKKGlmIChyZXF1aXJlICdwYWNrYWdlIG5pbCB0KQogICAgKHByb2du CiAgICAgIChhZGQtdG8tbGlzdCAncGFja2FnZS1hcmNoaXZlcyAnKCJtZWxwYSIgLiAiaHR0cDov L21lbHBhLm9yZy9wYWNrYWdlcy8iKSB0KQogICAgICA7IChhZGQtdG8tbGlzdCAncGFja2FnZS1h cmNoaXZlcyAnKCJtZWxwYSIgLiAiaHR0cDovL21lbHBhLm1pbGtib3gubmV0L3BhY2thZ2VzLyIp IHQpCiAgICAgIDsocGFja2FnZS1pbml0aWFsaXplKQogICAgICApKQoKOzs7OyBoYXNrZWxsCgoo YWRkLWhvb2sgJ2hhc2tlbGwtbW9kZS1ob29rICd0dXJuLW9uLWhhc2tlbGwtaW5kZW50YXRpb24p Cgo7Ozs7IGxpbHlwb25kCgoob3IgKGxvYWQgImxpbHlwb25kLWluaXQuZWwiIHQpICh3YXJuICJm YWlsZWQgdG8gbG9hZCBsaWx5cG9uZC1pbml0IikpCgo7Ozs7IGF2ciBhbmQgYXJkdWlubwoKKHNl dHEgYXV0by1tb2RlLWFsaXN0IChjb25zICcoIlxcLmlubyQiIC4gYysrLW1vZGUpIGF1dG8tbW9k ZS1hbGlzdCkpCgo7Ozs7IG9wYW0KCjsoc2V0cSBvcGFtLXNoYXJlIChzdWJzdHJpbmcgKHNoZWxs LWNvbW1hbmQtdG8tc3RyaW5nICJvcGFtIGNvbmZpZyB2YXIgc2hhcmUgMj4gL2Rldi9udWxsIikg MCAtMSkpCjsoYWRkLXRvLWxpc3QgJ2xvYWQtcGF0aCAoY29uY2F0IG9wYW0tc2hhcmUgIi9lbWFj cy9zaXRlLWxpc3AiKSkKOzsgUHJlLWxvYWQgQW5kcm9tZWRhCjs7IChyZXF1aXJlICdhbmRyb21l ZGEtYXV0b2xvYWRzKQoKOzsgKG1hcGNhciAncHJpbnQgKG1hcGNhciAoZnVuY3Rpb24gKGxhbWJk YSAoeCkKOzsgCQkgICAgKGlmIChzdHJpbmctbWF0Y2ggInNpdGUtbGlzcCQiIHgpCjs7IAkJCShp ZiAoZmlsZS1leGlzdHMtcCAoY29uY2F0IHggIi9zdWJkaXJzLmVsIikpCjs7IAkJCSAgICAod2l0 aC10ZW1wLWJ1ZmZlcgo7OyAJCQkgICAgICAoY2QgeCkKOzsgCQkJICAgICAgKGxvYWQgKGNvbmNh dCB4ICIvc3ViZGlycy5lbCIpKSkpKSkpCjs7IAlsb2FkLXBhdGgpKQoKOzs7OyBmaXggYSBidWcg aW4gc2V0dGluZyB0aGUgaGVpZ2h0IG92ZXIgc3NoIGZyb20gbWFjIHRvIGxpbnV4Cjs7Ozsgc2Vl IGh0dHBzOi8vc3VwZXJ1c2VyLmNvbS9xdWVzdGlvbnMvMTQ0NDQxOS9lbWFjcy13aW5kb3ctaGVp Z2h0LWlzLXRvby1zbWFsbC13aGVuLXRoZS1zZXNzaW9uLWlzLW92ZXItc3NoLW9uLW1hY29zLXhx dWFydHoKKGlmICg8IChmcmFtZS1oZWlnaHQpIDQpIChzZXQtZnJhbWUtaGVpZ2h0ICh3aW5kb3ct ZnJhbWUpIDQ2KSkKCjs7OzsgZXhwZXJ0IGZlYXR1cmVzCgoocHV0ICdkb3duY2FzZS1yZWdpb24g J2Rpc2FibGVkIG5pbCkKKHB1dCAndXBjYXNlLXJlZ2lvbiAnZGlzYWJsZWQgbmlsKQoKOzs7OyBG aW5uaXNoIGtleWJvYXJkcwoKOzsgKGRlZnVuIGluc2VydC1sZWZ0LWJyYWNlICgpIChpbnNlcnQt Y2hhciAxMjMpKQo7OyAoZ2xvYmFsLXNldC1rZXkgWyAobWV0YSA0MCkgXSBgaW5zZXJ0LWxlZnQt YnJhY2UpCgo7Ozs7IE1hYyBPUyBYIHN0dWZmOgoKOzsgKHNldHEgbWFjLWNvbW1hbmQtbW9kaWZp ZXIgJ21ldGEpCjs7IChzZXRxIG1hYy1vcHRpb24tbW9kaWZpZXIgJ25vbmUpCgo7OyBtYWMtYWxs b3ctYW50aS1hbGlhc2luZyAJbWFjLWNvbW1hbmQtbW9kaWZpZXIgCW1hYy1jb250cm9sLW1vZGlm aWVyIAltYWMtZnVuY3Rpb24tbW9kaWZpZXIKOzsgbWFjLW9wdGlvbi1tb2RpZmllciAJbWFjLXJp Z2h0LWNvbW1hbmQtbW9kaWZpZXIgCW1hYy1yaWdodC1jb250cm9sLW1vZGlmaWVyIAltYWMtcmln aHQtb3B0aW9uLW1vZGlmaWVyCgo7OyBNYWNhdWxheSAyIHN0YXJ0Cihsb2FkICJ+Ly5lbWFjcy1N YWNhdWxheTIiIHQpCjs7IE1hY2F1bGF5IDIgZW5kCgooYWRkLXRvLWxpc3QgJ2xvYWQtcGF0aCAi L1VzZXJzL2Rhbi9zcmMvTTIvTTIuZ2l0L00yL01hY2F1bGF5Mi9lZGl0b3JzL2VtYWNzIikgO2dl dCB0aGUgbGF0ZXN0ICouZWwgZmlsZXMgZnJvbSB0aGUgc291cmNlIGNvZGUgdHJlZQoKOzs7IChz ZXRxIGxvYWQtcGF0aCAoY29ucyAifi9zcmMvTTIvTTIuZ2l0L00yL01hY2F1bGF5Mi9lZGl0b3Jz L2VtYWNzIiBsb2FkLXBhdGgpKQoKOzs7OyBsYXN0IHRoaW5nCgoobWVzc2FnZSAiTG9hZGVkIC5l bWFjcyIpCg== --00000000000087d81e05e054d04a Content-Type: application/octet-stream; name=".emacs-Macaulay2" Content-Disposition: attachment; filename=".emacs-Macaulay2" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3umigg21 Oy0qLWVtYWNzLWxpc3AtKi0KCjs7IGFkZCAiL0FwcGxpY2F0aW9ucy9NYWNhdWxheTItMS4yMC9z aGFyZS9lbWFjcy9zaXRlLWxpc3AvbWFjYXVsYXkyIiB0byBsb2FkLXBhdGggaWYgaXQgaXNuJ3Qg dGhlcmUKKGFkZC10by1saXN0ICdsb2FkLXBhdGggIi9BcHBsaWNhdGlvbnMvTWFjYXVsYXkyLTEu MjAvc2hhcmUvZW1hY3Mvc2l0ZS1saXNwL21hY2F1bGF5MiIpCgo7OyBhZGQgIi9BcHBsaWNhdGlv bnMvTWFjYXVsYXkyLTEuMjAvc2hhcmUvaW5mbyIgdG8gSW5mby1kZWZhdWx0LWRpcmVjdG9yeS1s aXN0IGlmIGl0IGlzbid0IHRoZXJlCihhZGQtdG8tbGlzdCAnSW5mby1kZWZhdWx0LWRpcmVjdG9y eS1saXN0ICIvQXBwbGljYXRpb25zL01hY2F1bGF5Mi0xLjIwL3NoYXJlL2luZm8iKQoKOzsgYWRk ICIvQXBwbGljYXRpb25zL01hY2F1bGF5Mi0xLjIwL2JpbiIgdG8gUEFUSCBpZiBpdCBpc24ndCB0 aGVyZQooaWYgKG5vdCAoc3RyaW5nLW1hdGNoICIvQXBwbGljYXRpb25zL01hY2F1bGF5Mi0xLjIw L2JpbiIgKGdldGVudiAiUEFUSCIpKSkKICAgICAoc2V0ZW52ICJQQVRIIiAiL0FwcGxpY2F0aW9u cy9NYWNhdWxheTItMS4yMC9iaW46JFBBVEgiIHQpKQoKOzsgdGhpcyB2ZXJzaW9uIHdpbGwgZ2l2 ZSBhbiBlcnJvciBpZiBNMi1pbml0LmVsIGlzIG5vdCBmb3VuZDoKKGxvYWQgIk0yLWluaXQiKQoK OzsgdGhpcyB2ZXJzaW9uIHdpbGwgbm90IGdpdmUgYW4gZXJyb3IgaWYgTTItaW5pdC5lbCBpcyBu b3QgZm91bmQ6CjsobG9hZCAiTTItaW5pdCIgdCkKCjsgWW91IG1heSBjb21tZW50IG91dCB0aGUg Zm9sbG93aW5nIGxpbmUgd2l0aCBhbiBpbml0aWFsIHNlbWljb2xvbiBpZiB5b3UgCjsgd2FudCB0 byB1c2UgeW91ciBmMTIga2V5IGZvciBzb21ldGhpbmcgZWxzZS4gIEhvd2V2ZXIsIHRoaXMgYWN0 aW9uCjsgd2lsbCBiZSB1bmRvbmUgdGhlIG5leHQgdGltZSB5b3UgcnVuIHNldHVwKCkgb3Igc2V0 dXBFbWFjcygpLgooZ2xvYmFsLXNldC1rZXkgWyBmMTIgXSAnTTIpCgo7IFByZXZlbnQgRW1hY3Mg ZnJvbSBpbnNlcnRpbmcgYSBzdXBlcmZsdW91cyAiU2VlIiBvciAic2VlIiBpbiBmcm9udAo7IG9m IHRoZSBoeXBlcmxpbmtzIHdoZW4gcmVhZGluZyBkb2N1bWVudGF0aW9uIGluIEluZm8gbW9kZS4K KHNldHEgSW5mby1oaWRlLW5vdGUtcmVmZXJlbmNlcyAnaGlkZSkK --00000000000087d81e05e054d04a-- From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 01 Jun 2022 02:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: "Daniel R. Grayson" Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.16540505929912 (code B ref 55744); Wed, 01 Jun 2022 02:30:02 +0000 Received: (at 55744) by debbugs.gnu.org; 1 Jun 2022 02:29:52 +0000 Received: from localhost ([127.0.0.1]:49299 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwE7M-0002Zo-K8 for submit@debbugs.gnu.org; Tue, 31 May 2022 22:29:52 -0400 Received: from quimby.gnus.org ([95.216.78.240]:33888) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwE7J-0002Za-K6 for 55744@debbugs.gnu.org; Tue, 31 May 2022 22:29:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=grD4MKDw5bkXsie7Mq6huFbsC5pFYcZK+KVhGuyACsg=; b=eH1UtTexXBuV4qCPWbhTlftMjw cPATQ3U+ArnAEuwVUSdW+1nI29gUpUkibNqLn7v0tDG0yPlo+zDk96VI63FLLR/bWOgXPW5PsUSJ1 wGuyJyNy1lwr07ca2beKXh5j3pkGrNQqjeYWFblrU/oHcZEpU3WTQsVJd4i8PCrL2vYE=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwE7A-0006U1-U3; Wed, 01 Jun 2022 04:29:43 +0200 From: Lars Ingebrigtsen References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAAXNSR0IArs4c6QAAABVQTFRF 8+YB88wB8K8I7Y4P6W8U5lYX////i2Yb9AAAAAFiS0dEBmFmuH0AAAAJcEhZcwAACxIAAAsSAdLd fvwAAAAHdElNRQfmBgECGyikMnf0AAAAXUlEQVQ4y+2PsRHAIAwDSTbICrCB7Q2kEWD/VcK5RU2K JA3f/r18LmXzK1fyqjhqIoQnStADXMU5OtwhRKebmpqFvpEi8LSoUtDR5BQR0EXMH5UYYKjPCWsm is2X3IH3FT1sihYuAAAAWmVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsA BQAAAAEAAABSASgAAwAAAAEAAgAAAhMAAwAAAAEAAQAAAAAAAAAAAEgAAAABAAAASAAAAAEfUvc0 AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA2LTAxVDAyOjI3OjQwKzAwOjAwT94s+QAAACV0RVh0 ZGF0ZTptb2RpZnkAMjAyMi0wNi0wMVQwMjoyNzo0MCswMDowMD6DlEUAAAAXdEVYdGV4aWY6WUNi Q3JQb3NpdGlvbmluZwAxrA+AYwAAADh0RVh0aWNjOmNvcHlyaWdodABDb3B5cmlnaHQgKGMpIDE5 OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnn5V3k3AAAAIXRFWHRpY2M6ZGVzY3JpcHRpb24Ac1JH QiBJRUM2MTk2Ni0yLjFXrdpHAAAAJnRFWHRpY2M6bWFudWZhY3R1cmVyAElFQyBodHRwOi8vd3d3 LmllYy5jaBx/AEwAAAA3dEVYdGljYzptb2RlbABJRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNv bG91ciBzcGFjZSAtIHNSR0JEU0ipAAAAAElFTkSuQmCC X-Now-Playing: Feathered Sun's _Two Journeys EP_: "Mar y Tierra" Date: Wed, 01 Jun 2022 04:29:39 +0200 In-Reply-To: (Daniel R. Grayson's message of "Tue, 31 May 2022 13:42:27 -0700") Message-ID: <87v8tl2k18.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: "Daniel R. Grayson" writes: > Ah, indeed, the bug doesn't seem to be reproducible with "-Q". I > attach my .emacs and .emacs-Macaulay2. Try removing things from those to determine what triggers the problem. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) "Daniel R. Grayson" writes: > Ah, indeed, the bug doesn't seem to be reproducible with "-Q". I > attach my .emacs and .emacs-Macaulay2. Try removing things from those to determine what triggers the problem. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 01 09:38:04 2022 Received: (at control) by debbugs.gnu.org; 1 Jun 2022 13:38:04 +0000 Received: from localhost ([127.0.0.1]:50044 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwOXz-0003XL-UD for submit@debbugs.gnu.org; Wed, 01 Jun 2022 09:38:04 -0400 Received: from quimby.gnus.org ([95.216.78.240]:39700) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwOXw-0003Wl-Cx for control@debbugs.gnu.org; Wed, 01 Jun 2022 09:38:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=FniNJppPB9FrEBJ2NYxcg08C+5uKnheWkpRuTsxX88U=; b=LafHGmBUb6ttwb8PdRKPJYj5n8 IxME5yc/Ty/FWkr1jOC7/XQ+zD7gPvoEDprKU+dHBmJDeodOx+ZqzaBImaECwJN6ei11LQD7TeBWZ 1Nsxef7e1/+1lV27W9w9/d5SVvAQyil7IA6dTRr6h1lBFCj58DjT3nx1LeUsRS493RJU=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwOXn-0006aN-QR for control@debbugs.gnu.org; Wed, 01 Jun 2022 15:37:53 +0200 Date: Wed, 01 Jun 2022 15:37:51 +0200 Message-Id: <87v8tk4i8g.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #55744 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 55744 + moreinfo quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) tags 55744 + moreinfo quit From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: "Daniel R. Grayson" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 01 Jun 2022 14:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo To: Lars Ingebrigtsen Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.165409366729228 (code B ref 55744); Wed, 01 Jun 2022 14:28:02 +0000 Received: (at 55744) by debbugs.gnu.org; 1 Jun 2022 14:27:47 +0000 Received: from localhost ([127.0.0.1]:51410 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwPK7-0007bM-8r for submit@debbugs.gnu.org; Wed, 01 Jun 2022 10:27:47 -0400 Received: from mail-lf1-f48.google.com ([209.85.167.48]:34396) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwPK5-0007b6-6W for 55744@debbugs.gnu.org; Wed, 01 Jun 2022 10:27:45 -0400 Received: by mail-lf1-f48.google.com with SMTP id u23so3075277lfc.1 for <55744@debbugs.gnu.org>; Wed, 01 Jun 2022 07:27:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=NjQxk5pQJDIDD42k9KT6/1s9eDyLx9PXwBYQ50/dGpc=; b=Xru37UHtDpT4PeoQBQUljMIk8GirhDIkbDJDQf0+Gc3o2qaMC/ggBdGW/Kc/26U8C+ Rkvt81M/o0o7Pi+oRy1WO5BlGw7ZbhaEIEqDNQL9WZmCrM8MAGbXiDD/kA+Ho28bJIKS l1GpT4BHLmLYN8CTgmxO+RNMqWSyWqrom8cocuohbdUa88ABEPnC0iRJ6SsveKGoFt+Z 4hFexKp6MF9IYWTAOZ/cV5pMB/b+FcG4N5vKsKBkjjc8ailYUANvhuomSGpvkMD0HBt4 Bqe7kAHdXSuauWHmpL+PfKDbyeev72cdk6WpMWTR9QcWf4w4P7L3mhR9oYKIcJibCVSp zwxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NjQxk5pQJDIDD42k9KT6/1s9eDyLx9PXwBYQ50/dGpc=; b=akPVsLEPmO1ZOpECaEU50NzQLl9Y/s5Zc6fjRebRa+VfJ+CcnWasX/Ruw+8vhOKdOZ XSUzALTzQCdkaPV5L6xj6HaY1quvabMDez0x1XV3D/hOLQ6ib6tEpgg75Q3bcKa9rWG+ 7rSy29thh3OHgXfbKd6WCF4l4zgM1loOyS9VsSzRAhuBaVlDV8n6s2Nq4vfYcp1bxOwH kwud6JW9078O+fa9ngCinqYs4IdwBKPi8NaZlSzQTu8su2XfNewlUM/3ZkKTlryOo/DB LQ+AdItkmUAg+uiAHNOS/kich+8zBWcTYVrTo0cGRklRUp4dtCYyf0MSrR87p/XhIrke uvfQ== X-Gm-Message-State: AOAM530y7UEFr2FQoT0H8diVEFyc4Oyi/N7jV3kyRqpq3wB1jgSeSRuR GqAbJT0l13cyQWsNDbQBqiSqvrM+M3vYyBxCM3M= X-Google-Smtp-Source: ABdhPJzG9voavdAeYfGy1OLqC0tiVa/2osVwrFZbr/98vFnBThhRLgYtrdwCG6ageqqY9SHHopTL9jYCnOcDJx4d1XM= X-Received: by 2002:a05:6512:b0f:b0:474:18c:8b9e with SMTP id w15-20020a0565120b0f00b00474018c8b9emr48442072lfu.354.1654093658896; Wed, 01 Jun 2022 07:27:38 -0700 (PDT) MIME-Version: 1.0 References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> <87v8tl2k18.fsf@gnus.org> In-Reply-To: <87v8tl2k18.fsf@gnus.org> From: "Daniel R. Grayson" Date: Wed, 1 Jun 2022 07:27:22 -0700 Message-ID: Content-Type: multipart/alternative; boundary="000000000000f6be2505e063b0f4" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000f6be2505e063b0f4 Content-Type: text/plain; charset="UTF-8" Okay, I did that, and it seems to be this: (defconst M2-mode-font-lock-keywords ' ( "///\\(/?/?[^/]\\|\\(//\\)*////[^/]\\)*\\(//\\)*///" . 'font-lock-string-face) ) (define-derived-mode M2-mode prog-mode "Macaulay2" (setq font-lock-defaults '( M2-mode-font-lock-keywords )) ) (add-to-list 'auto-mode-alist '("\\.m2\\'" . M2-mode)) --000000000000f6be2505e063b0f4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Okay, I did that, and it seems to be this:

<= div>(defconst M2-mode-font-lock-keywords ' ( "///\\(/?/?[^/]\\|\\(= //\\)*////[^/]\\)*\\(//\\)*///" . 'font-lock-string-face) )
(de= fine-derived-mode M2-mode prog-mode "Macaulay2" (setq font-lock-d= efaults '( M2-mode-font-lock-keywords )) )
(add-to-list 'auto-mo= de-alist '("\\.m2\\'" . M2-mode))
--000000000000f6be2505e063b0f4-- From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 01 Jun 2022 15:36:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo To: "Daniel R. Grayson" Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.16540977164660 (code B ref 55744); Wed, 01 Jun 2022 15:36:02 +0000 Received: (at 55744) by debbugs.gnu.org; 1 Jun 2022 15:35:16 +0000 Received: from localhost ([127.0.0.1]:51590 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwQNQ-0001D6-Gs for submit@debbugs.gnu.org; Wed, 01 Jun 2022 11:35:16 -0400 Received: from quimby.gnus.org ([95.216.78.240]:40910) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwQNO-0001Cn-MV for 55744@debbugs.gnu.org; Wed, 01 Jun 2022 11:35:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=4YDX+A6Ck2zeDExGgZ4j6Msnt9PEdMlVHCvm1UWzPlo=; b=rNpfiHikvaMHhVaWFH02QQcxDr klVkyom0t3cM/dnu4gu0/WSYmHBLTspXCGB1NCDduQnAkOJGU/PfwLf3RdU20AkGColgV/u4OjtZl BCbbQgEnsZhvLBc3H3sYuUwJ6WRsf0dferIx1wmXNYo+51+gZcrqvV56faqqFovP5xsM=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwQNF-0008Ot-Jt; Wed, 01 Jun 2022 17:35:07 +0200 From: Lars Ingebrigtsen References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> <87v8tl2k18.fsf@gnus.org> X-Now-Playing: Pole's _Fading_: "=?UTF-8?Q?T=C3=B6lpel?=" Date: Wed, 01 Jun 2022 17:35:04 +0200 In-Reply-To: (Daniel R. Grayson's message of "Wed, 1 Jun 2022 07:27:22 -0700") Message-ID: <87a6aw4ct3.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: "Daniel R. Grayson" writes: > Okay, I did that, and it seems to be this: > > (defconst M2-mode-font-lock-keywords > '("///\\(/?/?[^/]\\|\\(//\\)*////[^/]\\)*\\(//\\)*///" . > 'font-lock-string-face) ) Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) "Daniel R. Grayson" writes: > Okay, I did that, and it seems to be this: > > (defconst M2-mode-font-lock-keywords > '("///\\(/?/?[^/]\\|\\(//\\)*////[^/]\\)*\\(//\\)*///" . > 'font-lock-string-face) ) That's a regexp with a lot of backtracking, I think (i.e., elements that can be matched both by the ?'s as well as the two *'s). So matching this will be slow, which results in the hangs you're seeing when Emacs is trying to match that to the text in the buffer. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: "Daniel R. Grayson" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 01 Jun 2022 15:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo To: Lars Ingebrigtsen Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.165409848314778 (code B ref 55744); Wed, 01 Jun 2022 15:49:01 +0000 Received: (at 55744) by debbugs.gnu.org; 1 Jun 2022 15:48:03 +0000 Received: from localhost ([127.0.0.1]:51664 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwQZm-0003qC-CL for submit@debbugs.gnu.org; Wed, 01 Jun 2022 11:48:02 -0400 Received: from mail-lf1-f47.google.com ([209.85.167.47]:38907) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwQZk-0003pF-Og for 55744@debbugs.gnu.org; Wed, 01 Jun 2022 11:48:01 -0400 Received: by mail-lf1-f47.google.com with SMTP id c19so3442114lfv.5 for <55744@debbugs.gnu.org>; Wed, 01 Jun 2022 08:48:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=PUM1LClBOZ/NflNu70ZEePg8OddJDUPBg+fK37yDFjI=; b=EF/YEn0ouyCdDPwuO3QYQE6ztgKtlVlrC+xybC3jzdnkO3KML32EB4ACeSokix1oYh hcbGR7/8k3rpjkVS2ZRFehhit6m+Sqki3CiERFumcvoBLqmxLZtMUz1GhyQBKiXLaH33 O+UQf+TnZg1Q1+lMWTtKUPB/965hArYhbIJo8kVc4UWFbYygW7E3yUsMkEsXiLgGNpYi upitfKNC2+o8woL+w9IztBZQ9E7I123MwplrJ+OvFUdKPVUk1J+rHJDzoXhmwkZwZbOt jCXbS0DVdvxj1CPcpxEp/TmhFidF1kFRWE0bRdxkW+A4yNpC1xZXEOMwg/x0no02pR7I +H2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PUM1LClBOZ/NflNu70ZEePg8OddJDUPBg+fK37yDFjI=; b=i8tJZFWlZ4mxxP+AWr/D9OH9/x7PDLOKeG4jV3F87b6wNW2WSTBCpfgLtSnHUhQRkv wtlIvcp93yiQ0kCVR2b9MggCzDV5aHmoFaaUdrcoAvZ8kPmz4nQZ8n5ufqMIlSs7Ab6e 4G9JPr66a9/1KPArVLZnQHBn/XMFehpdjcXkyGgDVmf+meMP/5jgsFc6DgBMnjOvqt5z 5lG0x497RNwZv7r+11bPoVPpgqlSFq8tt9y1LcPvX+zE9JM5kfAUWzMOycyGtYSQceCt b8ObpJwfocqcQQoFfzWHleBQA9yiDOJggSNT3bU9pstdmhUS90KMj4SSxcg4AWlF2eYo 9TCQ== X-Gm-Message-State: AOAM533Ihn0ZdoWm2T2hKyn5YlJZnseu6OaFb65PgST7ekgeOYyec+Nw sSrhP9b1YoLMkWh9fDn5jE+Jkc6Q46+eFAQjSVU= X-Google-Smtp-Source: ABdhPJzkO4Gj6gMDD6E1F4DKWZIkyKeQsctE5bHxZ6SKnhEROlUxRkhXYzAWNYCN/fgapCQE5b+gzWFyJK4tTYbRQLw= X-Received: by 2002:a05:6512:22d2:b0:478:6898:15d6 with SMTP id g18-20020a05651222d200b00478689815d6mr37021052lfu.577.1654098474494; Wed, 01 Jun 2022 08:47:54 -0700 (PDT) MIME-Version: 1.0 References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> <87v8tl2k18.fsf@gnus.org> <87a6aw4ct3.fsf@gnus.org> In-Reply-To: <87a6aw4ct3.fsf@gnus.org> From: "Daniel R. Grayson" Date: Wed, 1 Jun 2022 08:47:38 -0700 Message-ID: Content-Type: multipart/alternative; boundary="000000000000fef1bb05e064cfcd" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000fef1bb05e064cfcd Content-Type: text/plain; charset="UTF-8" Ah, you're right -- if I wait 45 seconds or so, it finally finishes and moves on, and that file has strings that should have matched it. And it needs to match all the text from the start of the file, since string starts and string ends look the same. And the result is the same if I search for any other string that first occurs deep into the file. Thanks, it's not a bug in emacs! On Wed, Jun 1, 2022 at 8:35 AM Lars Ingebrigtsen wrote: > "Daniel R. Grayson" writes: > > > Okay, I did that, and it seems to be this: > > > > (defconst M2-mode-font-lock-keywords > > '("///\\(/?/?[^/]\\|\\(//\\)*////[^/]\\)*\\(//\\)*///" . > > 'font-lock-string-face) ) > > That's a regexp with a lot of backtracking, I think (i.e., elements that > can be matched both by the ?'s as well as the two *'s). So matching > this will be slow, which results in the hangs you're seeing when Emacs > is trying to match that to the text in the buffer. > > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no > --000000000000fef1bb05e064cfcd Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Ah, you're right -- if I wait 45 seconds or so, it fin= ally finishes and moves on,
and that file has strings that should have = matched it.=C2=A0 And it needs to match all the text
from the sta= rt of the file, since string starts and string ends look the same.=C2=A0 An= d the result is the same
if I search for any other string that fi= rst occurs deep into the file.

Thanks, it's no= t a bug in emacs!



On Wed, Jun 1, 2022 = at 8:35 AM Lars Ingebrigtsen <larsi@gn= us.org> wrote:
"Daniel R. Grayson" <danielrichardgrayson@gmail.com> wri= tes:

> Okay, I did that, and it seems to be this:
>
> (defconst M2-mode-font-lock-keywords
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'("///\\(/?/?[^/]\\|\= \(//\\)*////[^/]\\)*\\(//\\)*///" .
> 'font-lock-string-face) )

That's a regexp with a lot of backtracking, I think (i.e., elements tha= t
can be matched both by the ?'s as well as the two *'s).=C2=A0 So ma= tching
this will be slow, which results in the hangs you're seeing when Emacs<= br> is trying to match that to the text in the buffer.

--
(domestic pets only, the antidote for overdose, milk.)
=C2=A0 =C2=A0bloggy blog: http://lars.ingebrigtsen.no
--000000000000fef1bb05e064cfcd-- From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 01 Jun 2022 15:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo To: "Daniel R. Grayson" Cc: 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.165409853614893 (code B ref 55744); Wed, 01 Jun 2022 15:49:02 +0000 Received: (at 55744) by debbugs.gnu.org; 1 Jun 2022 15:48:56 +0000 Received: from localhost ([127.0.0.1]:51667 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwQae-0003s9-2x for submit@debbugs.gnu.org; Wed, 01 Jun 2022 11:48:56 -0400 Received: from quimby.gnus.org ([95.216.78.240]:41120) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwQac-0003rr-J1 for 55744@debbugs.gnu.org; Wed, 01 Jun 2022 11:48:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=dtGOg+P8VNU+cMYLpGdFmIM7wgPUKytUQLVdJ0TeKx0=; b=qsiMB4LkduQIqpN8VNv5cvc/n/ VuCX6S2cNXf/O1c8X7Qqo8GeSebZJUvk2a1r58ZknRGjLXJNnjiASFCEPWaaHHaIzn6ScQht89+JH a4/KJgHqT1SHIXsxfbey2lwy/JnXXs1fhEGK8R0GIkbJqyEbC269imFegG8ex+khsGJg=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwQaT-0000B3-Md; Wed, 01 Jun 2022 17:48:48 +0200 From: Lars Ingebrigtsen References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> <87v8tl2k18.fsf@gnus.org> <87a6aw4ct3.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEVcOiuVZkS+oI7/ //8K/T4KAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+YGAQ4TGq0mVRgAAAGeSURBVCjPNc+xbtswEAbg n4FpoJlkQPLguQXSt6CKJkMnutARECcPkgHxKZoMHTrZRaVBkwZJiO4pe5SdI0Hpw/08gFDuemVu idxCUP1r66ciI8cE6/KWJ5sFxw1s+CYgagK3sF4waKp5kc75re+kE3qB4TfuFrneCZ4576eSjuzG LYgdD/6ShNJ+Qsk8X3SRhSZ/Rs/TGVRT+KceEWaeq4jL3qNhXkZVUhj2PRzPXClNh2HP8IJWaf8y BJYBt87viRksVWlNfgkR09rhjoNgWRG6GJsXnnKZNq/gkV71dzdzv6IwMOnXFfOIXyq3T4cY6xoj GJ+2jFkwwJj3Lw9/EfiluQiqKaJfDqOyejf9vOKxZ7+ok0J9bkHBd1xYhc91Bzf/ICKrUTWM4vCn M7QBqqXF8dC1RtkdyYbd52QV1aeUApAqInMsrL4hz4y1Q0YMbKDIJjbLvI+ALhBTDkggj5ErOrTy F3eFVHMBKZVCvg+ljUAqyygyUCsT2Ky+IVlXKqNsjG2SE+6hAno33CHHlgbca4Nt+/6BRCE+D/8B 44O4NN3GaPIAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDYtMDFUMTQ6MTk6MjYrMDA6MDBQoHhd AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTA2LTAxVDE0OjE5OjI2KzAwOjAwIf3A4QAAAABJRU5E rkJggg== X-Now-Playing: Pole's _Fading_: "=?UTF-8?Q?Nebelkr=C3=A4he?=" Date: Wed, 01 Jun 2022 17:48:45 +0200 In-Reply-To: (Daniel R. Grayson's message of "Wed, 1 Jun 2022 08:47:38 -0700") Message-ID: <87v8tk2xlu.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: "Daniel R. Grayson" writes: > Thanks, it's not a bug in emacs! Thanks; I'm closing this bug report, then. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) "Daniel R. Grayson" writes: > Thanks, it's not a bug in emacs! Thanks; I'm closing this bug report, then. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 01 11:49:04 2022 Received: (at control) by debbugs.gnu.org; 1 Jun 2022 15:49:04 +0000 Received: from localhost ([127.0.0.1]:51672 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwQam-0003t4-98 for submit@debbugs.gnu.org; Wed, 01 Jun 2022 11:49:04 -0400 Received: from quimby.gnus.org ([95.216.78.240]:41134) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nwQal-0003sJ-1h for control@debbugs.gnu.org; Wed, 01 Jun 2022 11:49:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=hi4scK/VzHOa59pzohnVe8uhBAFSIhPZnK9+8peioOo=; b=A1Mv/iVZfMAgVMWKcCDTyiyrdO /UYHRZ4TJQuIIXDc36SZkBlVpu/UHsM0iMtpYVDezkx859Kw+6ZizlqyLSTLS//ts6gBVA/cDmpaj ESFWxNpPVJzV1qYp1gAfk94lIAU9Q1+F3FVc+cYDVqYldIDeHrov7c5Bk7L1xuuug0pQ=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwQad-0000BD-7B for control@debbugs.gnu.org; Wed, 01 Jun 2022 17:48:57 +0200 Date: Wed, 01 Jun 2022 17:48:54 +0200 Message-Id: <87tu942xll.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #55744 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 55744 notabug close 55744 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) tags 55744 notabug close 55744 quit From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: Richard Stallman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Jun 2022 22:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: notabug moreinfo To: Lars Ingebrigtsen Cc: danielrichardgrayson@gmail.com, 55744@debbugs.gnu.org Reply-To: rms@gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.165455372031973 (code B ref 55744); Mon, 06 Jun 2022 22:16:01 +0000 Received: (at 55744) by debbugs.gnu.org; 6 Jun 2022 22:15:20 +0000 Received: from localhost ([127.0.0.1]:37044 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyL0E-0008JY-MH for submit@debbugs.gnu.org; Mon, 06 Jun 2022 18:15:20 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41126) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyL0C-0008JG-0u for 55744@debbugs.gnu.org; Mon, 06 Jun 2022 18:15:12 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48438) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyL06-0003wl-Qx; Mon, 06 Jun 2022 18:15:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=Date:References:Subject:In-Reply-To:To:From: mime-version; bh=8i+FQBUwkLrm3NYc1tc9Qncp4khO+yu74Qt2f4DV8uQ=; b=M4UY2rgIGduc koSZQr+kHnkquKt7tRiDaP8F2sm7y8QyiuXGi48he1ysQ/m/RIX3jc1KYWhcW02wUkgk7P9+h7m/0 DtnhtN/i9QIPaXSBAuFq/EBGHR1xm2y0Ndf4V6WWd1qLrKumGpFR4Q9D8H/5IztlZ3fVJZsG1Pi10 pHGXcPhM1ToqVkLkB5FwPNXDv7j7cD64ezNXZPdPdC/Eebh+vjl3E4vx3HHUL/cUfOgITAqzvZSPH Yrk1h+9Dl2SkM0FhiXtDuvV1PQInjyO21PX0LYlAGpMBHSBDCpUF9LR4XCyqqx5WyyxUCZECZVH0Z WSygFsdW7ZvBha0Ng/72gQ==; Received: from rms by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from ) id 1nyL06-0000RB-AP; Mon, 06 Jun 2022 18:15:06 -0400 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman In-Reply-To: <87a6aw4ct3.fsf@gnus.org> (message from Lars Ingebrigtsen on Wed, 01 Jun 2022 17:35:04 +0200) References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> <87v8tl2k18.fsf@gnus.org> <87a6aw4ct3.fsf@gnus.org> Message-Id: Date: Mon, 06 Jun 2022 18:15:06 -0400 X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > That's a regexp with a lot of backtracking, I think (i.e., elements that > can be matched both by the ?'s as well as the two *'s). So matching > this will be slow, which results in the hangs you're seeing when Emacs > is trying to match that to the text in the buffer. Would it make sense to say more about this point in the Emacs Lisp Manual where it describes regexps? -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: "Daniel R. Grayson" Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Jun 2022 22:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: notabug moreinfo To: rms@gnu.org Cc: Lars Ingebrigtsen , 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.16545555902344 (code B ref 55744); Mon, 06 Jun 2022 22:47:02 +0000 Received: (at 55744) by debbugs.gnu.org; 6 Jun 2022 22:46:30 +0000 Received: from localhost ([127.0.0.1]:37056 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyLUT-0000bk-L8 for submit@debbugs.gnu.org; Mon, 06 Jun 2022 18:46:29 -0400 Received: from mail-lf1-f51.google.com ([209.85.167.51]:36384) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyLUO-0000bT-To for 55744@debbugs.gnu.org; Mon, 06 Jun 2022 18:46:28 -0400 Received: by mail-lf1-f51.google.com with SMTP id i29so8793536lfp.3 for <55744@debbugs.gnu.org>; Mon, 06 Jun 2022 15:46:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=aLMKEhkMs9NDXV4ZEu4AZQKyJd4mcjup/614dD6wGzk=; b=bIoGw9dyxpVa7Ixpn37RUF2DSG106vYuUdn9jav07d4tREdLqXzcWyS7K+adP2UrO9 xanYKZE2E4yve5GmyPiBFkn9cOkIlZB9QvVXzXzcejdSTVuVNwQ0TBltlFHcl9Vs2Qh4 BIraOxWXSr1oOKq3OZq0yO+gqLw7v/R7hOHPUkWnbyofcUaqAPYpg1oMIvliPKylBQU3 x42kiTD0cOqj2yJkKWpUxavQtPzXWO5JaUGAPEhh5tLCrM5LODus9JohUJp4pCF3t0Cu oK6e3fIbpbbPDJ+bhmwQFmsLeyDO6hfxfxuYx3FaX18oU78hB8NWd8Q9ycFwCeEjYh5U 5JBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=aLMKEhkMs9NDXV4ZEu4AZQKyJd4mcjup/614dD6wGzk=; b=0sQz+Y4TmSwcycn7ySOr7WJMxS4VaGuXg+GAzoC/BCxf6LHAmgaAQYDf7tPcc+9oZh 6GAX6luftwV4zCphAK7OGvQujFJva4dTTyq5dYKYVMc1M0sQl7fqaiGiQNeNceCaYmxS 15Z+shepecC8o2D7bBLNeTBy+UDHlKHmK5ftruF1DeJifOfGzfguADlERc78KMwukicM JPIxuBM7NUsqkFCrlU9jP8XfNNYzxQJpT5oloCeHYUWe/mclNYI8S0a/ERxO7fsdi8Q3 cnTzR1OiP1OHK/fUXd4ifh7dE+Nv5lRDFUAgQRosUdbyJAZ+7Wh1lXhXBozaVNZXgPnd 7MGQ== X-Gm-Message-State: AOAM532Cc/ygqQVUBERs1HCLIEC0KkjYFr6g2CNsGa+HnIWxu9y+1nn3 rvh59JJ9EV6uUxeJ5zWABPKD/TYA/oQ77ul/aQU= X-Google-Smtp-Source: ABdhPJyzglUolZmE+XCEkwWoWN5uRuD6H+O1iDHiueblD9OP/pYEFL6h2Z2ESghmisXuXm9EfhV0dmiYwdMrNZq4CHo= X-Received: by 2002:a05:6512:32b0:b0:478:f5d3:9a98 with SMTP id q16-20020a05651232b000b00478f5d39a98mr23057754lfe.589.1654555578463; Mon, 06 Jun 2022 15:46:18 -0700 (PDT) MIME-Version: 1.0 References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> <87v8tl2k18.fsf@gnus.org> <87a6aw4ct3.fsf@gnus.org> In-Reply-To: From: "Daniel R. Grayson" Date: Mon, 6 Jun 2022 15:46:02 -0700 Message-ID: Content-Type: multipart/alternative; boundary="00000000000083fcee05e0cf3da8" X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --00000000000083fcee05e0cf3da8 Content-Type: text/plain; charset="UTF-8" Conceivably, although I wasn't referring to the manual, even after I isolated the offending regexp. On Mon, Jun 6, 2022 at 3:15 PM Richard Stallman wrote: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > > That's a regexp with a lot of backtracking, I think (i.e., elements > that > > can be matched both by the ?'s as well as the two *'s). So matching > > this will be slow, which results in the hangs you're seeing when Emacs > > is trying to match that to the text in the buffer. > > Would it make sense to say more about this point in the Emacs Lisp Manual > where it describes regexps? > > -- > Dr Richard Stallman (https://stallman.org) > Chief GNUisance of the GNU Project (https://gnu.org) > Founder, Free Software Foundation (https://fsf.org) > Internet Hall-of-Famer (https://internethalloffame.org) > > > --00000000000083fcee05e0cf3da8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Conceivably, although I wasn't referring to the manual= , even after I isolated the offending
regexp.=C2=A0=C2=A0
On Mon, = Jun 6, 2022 at 3:15 PM Richard Stallman <= rms@gnu.org> wrote:
[[[ To any NSA and FBI agents reading my email: please consider= =C2=A0 =C2=A0 ]]]
[[[ whether defending the US Constitution against all enemies,=C2=A0 =C2=A0= =C2=A0]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]<= br>
=C2=A0 > That's a regexp with a lot of backtracking, I think (i.e., = elements that
=C2=A0 > can be matched both by the ?'s as well as the two *'s).= =C2=A0 So matching
=C2=A0 > this will be slow, which results in the hangs you're seeing= when Emacs
=C2=A0 > is trying to match that to the text in the buffer.

Would it make sense to say more about this point in the Emacs Lisp Manual where it describes regexps?

--
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)


--00000000000083fcee05e0cf3da8-- From unknown Sat Jun 21 12:25:11 2025 X-Loop: help-debbugs@gnu.org Subject: bug#55744: infinite loop Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 07 Jun 2022 02:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55744 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: notabug moreinfo To: rms@gnu.org Cc: larsi@gnus.org, danielrichardgrayson@gmail.com, 55744@debbugs.gnu.org Received: via spool by 55744-submit@debbugs.gnu.org id=B55744.165456890923148 (code B ref 55744); Tue, 07 Jun 2022 02:29:02 +0000 Received: (at 55744) by debbugs.gnu.org; 7 Jun 2022 02:28:29 +0000 Received: from localhost ([127.0.0.1]:37222 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyOxI-00061I-MD for submit@debbugs.gnu.org; Mon, 06 Jun 2022 22:28:28 -0400 Received: from eggs.gnu.org ([209.51.188.92]:44700) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nyOxF-000614-Gg for 55744@debbugs.gnu.org; Mon, 06 Jun 2022 22:28:27 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52640) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyOxA-0005hF-5D; Mon, 06 Jun 2022 22:28:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=V6IHao+QVTkUWwxKOaWHIRhqnZ9IdRL+6jy7AABDO6g=; b=Nr0OJjkvrzXU QbJ/fU/XvVCCq7b/eNW6j1cRHzaZm0UDYR0Bro+5Hcg9SNQnyVOQEWgVyFI7SVNOujllHd1srboHQ g17YFv8BbfRMxuI9rS21NARwMHWru3ikALJhG8mpEHVnT4YOXrrv/fkmmPL0vuirjoBt9HRaYaiem 3VH6/X8fEpWe+44bWoUU8rt8nTDFZNC1gNs/RloanJytp4/kwAWAQqIa1iAseFoSKo4HLacvnF5b3 MbjizV0XoLW1TIUnRNLQmqOnz1HFoNZfTcwthIvhRfwCiAV/NP1CuDbzlshpxari8VpOCguTbllHJ +2owH6o+wFAe+KnO+iUL4g==; Received: from [87.69.77.57] (port=3901 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyOx9-0007tl-7j; Mon, 06 Jun 2022 22:28:19 -0400 Date: Tue, 07 Jun 2022 05:28:08 +0300 Message-Id: <83y1y96wcn.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Richard Stallman on Mon, 06 Jun 2022 18:15:06 -0400) References: <878rqh4g1z.fsf@gnus.org> <874k154fbj.fsf@gnus.org> <87v8tl2k18.fsf@gnus.org> <87a6aw4ct3.fsf@gnus.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: danielrichardgrayson@gmail.com, 55744@debbugs.gnu.org > From: Richard Stallman > Date: Mon, 06 Jun 2022 18:15:06 -0400 > > > That's a regexp with a lot of backtracking, I think (i.e., elements that > > can be matched both by the ?'s as well as the two *'s). So matching > > this will be slow, which results in the hangs you're seeing when Emacs > > is trying to match that to the text in the buffer. > > Would it make sense to say more about this point in the Emacs Lisp Manual > where it describes regexps? I think we already do, see the node "Regexp Problems" there.